From 74ee685a6120fe044fda630944e238b9ec1e4c01 Mon Sep 17 00:00:00 2001 From: "Deployment Bot (from Travis CI)" Date: Thu, 20 Sep 2018 07:19:37 +0000 Subject: [PATCH 1/2] Deploy MikeRalphson/OpenAPI-Specification to github.com/MikeRalphson/OpenAPI-Specification.git:gh-pages --- index.md | 4 +- js/respec-oai.build.js.map | 210 +++ oas/v3.0.1.html | 3056 ++++++++++++++++++------------------ 3 files changed, 1744 insertions(+), 1526 deletions(-) create mode 100644 js/respec-oai.build.js.map diff --git a/index.md b/index.md index a0ba023253..265e83207d 100644 --- a/index.md +++ b/index.md @@ -1,7 +1,7 @@ -## Current major version +## Current version * [v3.0.0](oas/v3.0.0.html) -## Previous major version +## Previous version * [v2.0](oas/v2.0.html) diff --git a/js/respec-oai.build.js.map b/js/respec-oai.build.js.map new file mode 100644 index 0000000000..899b0a5f60 --- /dev/null +++ b/js/respec-oai.build.js.map @@ -0,0 +1,210 @@ +{ + "version": 3, + "sources": [ + "deps/require.js", + "deps/hyperhtml.js", + "deps/url-search-params.js", + "deps/domReady.js", + "core/pubsubhub.js", + "deps/marked.js", + "core/utils.js", + "core/post-process.js", + "core/pre-process.js", + "core/include-config.js", + "core/override-configuration.js", + "core/respec-ready.js", + "core/base-runner.js", + "shortcut.js", + "deps/text.js", + "ui/ui.css!deps/text", + "deps/jquery.js", + "core/jquery-enhanced.js", + "core/ui.js", + "core/l10n.js", + "core/linter.js", + "core/LinterRule.js", + "core/linter-rules/no-headingless-sections.js", + "core/linter-rules/no-http-props.js", + "w3c/l10n.js", + "w3c/linter-rules/privsec-section.js", + "core/linter-rules/check-punctuation.js", + "core/linter-rules/local-refs-exist.js", + "oai/defaults.js", + "core/css/respec2.css!deps/text", + "core/style.js", + "w3c/style.js", + "core/github.js", + "core/data-include.js", + "core/markdown.js", + "deps/handlebars.js", + "templates.js", + "w3c/templates/cgbg-sotd.js", + "w3c/templates/sotd.js", + "w3c/templates/show-logo.js", + "w3c/templates/show-people.js", + "w3c/templates/show-link.js", + "w3c/templates/cgbg-headers.js", + "oai/templates/show-logo.js", + "oai/templates/show-people.js", + "oai/templates/show-link.js", + "oai/templates/headers.js", + "oai/headers.js", + "w3c/abstract.js", + "w3c/templates/conformance.js", + "w3c/conformance.js", + "core/data-transform.js", + "core/inlines.js", + "deps/pluralize.js", + "core/dfn.js", + "w3c/rfc2119.js", + "core/css/examples.css!deps/text", + "core/examples.js", + "deps/text!core/css/issues-notes.css", + "core/issues-notes.js", + "core/requirements.js", + "core/css/bp.css!deps/text", + "core/best-practices.js", + "core/figures.js", + "deps/webidl2.js", + "core/css/webidl.css!deps/text", + "core/webidl.js", + "core/biblio-db.js", + "core/biblio.js", + "core/data-cite.js", + "core/webidl-index.js", + "core/link-to-dfn.js", + "core/contrib.js", + "core/fix-headers.js", + "core/structure.js", + "w3c/informative.js", + "w3c/permalinks.js", + "core/id-headers.js", + "core/location-hash.js", + "core/css/caniuse.css!deps/text", + "core/caniuse.js", + "core/exporter.js", + "ui/save-html.js", + "ui/search-specref.js", + "ui/dfn-list.js", + "ui/about-respec.js", + "core/seo.js", + "w3c/seo.js", + "core/css/github.css!deps/text", + "deps/text!core/../../worker/respec-worker.js", + "core/worker.js", + "core/highlight.js", + "core/images/clipboard.svg!deps/text", + "deps/clipboard.js", + "core/webidl-clipboard.js", + "core/data-tests.js", + "core/list-sorter.js", + "core/css/var.css!deps/text", + "core/highlight-vars.js", + "profile-oai.js" + ], + "names": [], + "mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACpmEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC10CA;AACA;AACA;AACA;AACA;AACA,ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACjIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3+CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACndA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC9OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACzZA;AACA;AACA;AACA,ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AChlQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACrOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AChNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACzGA;AACA;AACA;AACA,ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC5JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACzIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACjOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC57CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC1aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACjLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACtKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3bA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3eA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACnCA;AACA;AACA;AACA,ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AClFA;AACA;AACA;AACA,ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACrOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AChDA;AACA;AACA;AACA,ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACzkCA;AACA;AACA;AACA,ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC12BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACxQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AChSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACpIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACtJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC1CA;AACA;AACA;AACA,ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AChMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AClJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AChJA;AACA;AACA;AACA,ACHA;AACA;AACA;AACA,ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACxFA;AACA;AACA;AACA,ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC36BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC7GA;AACA;AACA;AACA,ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA", + "file": "profile-oai.build.js", + "sourcesContent": [ + "/** vim: et:ts=4:sw=4:sts=4\n * @license RequireJS 2.3.5 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, https://github.com/requirejs/requirejs/blob/master/LICENSE\n */\n//Not using strict: uneven strict support in browsers, #392, and causes\n//problems with requirejs.exec()/transpiler plugins that may not be strict.\n/*jslint regexp: true, nomen: true, sloppy: true */\n/*global window, navigator, document, importScripts, setTimeout, opera */\n\nvar requirejs, require, define;\n(function (global, setTimeout) {\n var req, s, head, baseElement, dataMain, src,\n interactiveScript, currentlyAddingScript, mainScript, subPath,\n version = '2.3.5',\n commentRegExp = /\\/\\*[\\s\\S]*?\\*\\/|([^:\"'=]|^)\\/\\/.*$/mg,\n cjsRequireRegExp = /[^.]\\s*require\\s*\\(\\s*[\"']([^'\"\\s]+)[\"']\\s*\\)/g,\n jsSuffixRegExp = /\\.js$/,\n currDirRegExp = /^\\.\\//,\n op = Object.prototype,\n ostring = op.toString,\n hasOwn = op.hasOwnProperty,\n isBrowser = !!(typeof window !== 'undefined' && typeof navigator !== 'undefined' && window.document),\n isWebWorker = !isBrowser && typeof importScripts !== 'undefined',\n //PS3 indicates loaded and complete, but need to wait for complete\n //specifically. Sequence is 'loading', 'loaded', execution,\n // then 'complete'. The UA check is unfortunate, but not sure how\n //to feature test w/o causing perf issues.\n readyRegExp = isBrowser && navigator.platform === 'PLAYSTATION 3' ?\n /^complete$/ : /^(complete|loaded)$/,\n defContextName = '_',\n //Oh the tragedy, detecting opera. See the usage of isOpera for reason.\n isOpera = typeof opera !== 'undefined' && opera.toString() === '[object Opera]',\n contexts = {},\n cfg = {},\n globalDefQueue = [],\n useInteractive = false;\n\n //Could match something like ')//comment', do not lose the prefix to comment.\n function commentReplace(match, singlePrefix) {\n return singlePrefix || '';\n }\n\n function isFunction(it) {\n return ostring.call(it) === '[object Function]';\n }\n\n function isArray(it) {\n return ostring.call(it) === '[object Array]';\n }\n\n /**\n * Helper function for iterating over an array. If the func returns\n * a true value, it will break out of the loop.\n */\n function each(ary, func) {\n if (ary) {\n var i;\n for (i = 0; i < ary.length; i += 1) {\n if (ary[i] && func(ary[i], i, ary)) {\n break;\n }\n }\n }\n }\n\n /**\n * Helper function for iterating over an array backwards. If the func\n * returns a true value, it will break out of the loop.\n */\n function eachReverse(ary, func) {\n if (ary) {\n var i;\n for (i = ary.length - 1; i > -1; i -= 1) {\n if (ary[i] && func(ary[i], i, ary)) {\n break;\n }\n }\n }\n }\n\n function hasProp(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n function getOwn(obj, prop) {\n return hasProp(obj, prop) && obj[prop];\n }\n\n /**\n * Cycles over properties in an object and calls a function for each\n * property value. If the function returns a truthy value, then the\n * iteration is stopped.\n */\n function eachProp(obj, func) {\n var prop;\n for (prop in obj) {\n if (hasProp(obj, prop)) {\n if (func(obj[prop], prop)) {\n break;\n }\n }\n }\n }\n\n /**\n * Simple function to mix in properties from source into target,\n * but only if target does not already have a property of the same name.\n */\n function mixin(target, source, force, deepStringMixin) {\n if (source) {\n eachProp(source, function (value, prop) {\n if (force || !hasProp(target, prop)) {\n if (deepStringMixin && typeof value === 'object' && value &&\n !isArray(value) && !isFunction(value) &&\n !(value instanceof RegExp)) {\n\n if (!target[prop]) {\n target[prop] = {};\n }\n mixin(target[prop], value, force, deepStringMixin);\n } else {\n target[prop] = value;\n }\n }\n });\n }\n return target;\n }\n\n //Similar to Function.prototype.bind, but the 'this' object is specified\n //first, since it is easier to read/figure out what 'this' will be.\n function bind(obj, fn) {\n return function () {\n return fn.apply(obj, arguments);\n };\n }\n\n function scripts() {\n return document.getElementsByTagName('script');\n }\n\n function defaultOnError(err) {\n throw err;\n }\n\n //Allow getting a global that is expressed in\n //dot notation, like 'a.b.c'.\n function getGlobal(value) {\n if (!value) {\n return value;\n }\n var g = global;\n each(value.split('.'), function (part) {\n g = g[part];\n });\n return g;\n }\n\n /**\n * Constructs an error with a pointer to an URL with more information.\n * @param {String} id the error ID that maps to an ID on a web page.\n * @param {String} message human readable error.\n * @param {Error} [err] the original error, if there is one.\n *\n * @returns {Error}\n */\n function makeError(id, msg, err, requireModules) {\n var e = new Error(msg + '\\nhttp://requirejs.org/docs/errors.html#' + id);\n e.requireType = id;\n e.requireModules = requireModules;\n if (err) {\n e.originalError = err;\n }\n return e;\n }\n\n if (typeof define !== 'undefined') {\n //If a define is already in play via another AMD loader,\n //do not overwrite.\n return;\n }\n\n if (typeof requirejs !== 'undefined') {\n if (isFunction(requirejs)) {\n //Do not overwrite an existing requirejs instance.\n return;\n }\n cfg = requirejs;\n requirejs = undefined;\n }\n\n //Allow for a require config object\n if (typeof require !== 'undefined' && !isFunction(require)) {\n //assume it is a config object.\n cfg = require;\n require = undefined;\n }\n\n function newContext(contextName) {\n var inCheckLoaded, Module, context, handlers,\n checkLoadedTimeoutId,\n config = {\n //Defaults. Do not set a default for map\n //config to speed up normalize(), which\n //will run faster if there is no default.\n waitSeconds: 7,\n baseUrl: './',\n paths: {},\n bundles: {},\n pkgs: {},\n shim: {},\n config: {}\n },\n registry = {},\n //registry of just enabled modules, to speed\n //cycle breaking code when lots of modules\n //are registered, but not activated.\n enabledRegistry = {},\n undefEvents = {},\n defQueue = [],\n defined = {},\n urlFetched = {},\n bundlesMap = {},\n requireCounter = 1,\n unnormalizedCounter = 1;\n\n /**\n * Trims the . and .. from an array of path segments.\n * It will keep a leading path segment if a .. will become\n * the first path segment, to help with module name lookups,\n * which act like paths, but can be remapped. But the end result,\n * all paths that use this function should look normalized.\n * NOTE: this method MODIFIES the input array.\n * @param {Array} ary the array of path segments.\n */\n function trimDots(ary) {\n var i, part;\n for (i = 0; i < ary.length; i++) {\n part = ary[i];\n if (part === '.') {\n ary.splice(i, 1);\n i -= 1;\n } else if (part === '..') {\n // If at the start, or previous value is still ..,\n // keep them so that when converted to a path it may\n // still work when converted to a path, even though\n // as an ID it is less than ideal. In larger point\n // releases, may be better to just kick out an error.\n if (i === 0 || (i === 1 && ary[2] === '..') || ary[i - 1] === '..') {\n continue;\n } else if (i > 0) {\n ary.splice(i - 1, 2);\n i -= 2;\n }\n }\n }\n }\n\n /**\n * Given a relative module name, like ./something, normalize it to\n * a real name that can be mapped to a path.\n * @param {String} name the relative name\n * @param {String} baseName a real name that the name arg is relative\n * to.\n * @param {Boolean} applyMap apply the map config to the value. Should\n * only be done if this normalization is for a dependency ID.\n * @returns {String} normalized name\n */\n function normalize(name, baseName, applyMap) {\n var pkgMain, mapValue, nameParts, i, j, nameSegment, lastIndex,\n foundMap, foundI, foundStarMap, starI, normalizedBaseParts,\n baseParts = (baseName && baseName.split('/')),\n map = config.map,\n starMap = map && map['*'];\n\n //Adjust any relative paths.\n if (name) {\n name = name.split('/');\n lastIndex = name.length - 1;\n\n // If wanting node ID compatibility, strip .js from end\n // of IDs. Have to do this here, and not in nameToUrl\n // because node allows either .js or non .js to map\n // to same file.\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n }\n\n // Starts with a '.' so need the baseName\n if (name[0].charAt(0) === '.' && baseParts) {\n //Convert baseName to array, and lop off the last part,\n //so that . matches that 'directory' and not name of the baseName's\n //module. For instance, baseName of 'one/two/three', maps to\n //'one/two/three.js', but we want the directory, 'one/two' for\n //this normalization.\n normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n name = normalizedBaseParts.concat(name);\n }\n\n trimDots(name);\n name = name.join('/');\n }\n\n //Apply map config if available.\n if (applyMap && map && (baseParts || starMap)) {\n nameParts = name.split('/');\n\n outerLoop: for (i = nameParts.length; i > 0; i -= 1) {\n nameSegment = nameParts.slice(0, i).join('/');\n\n if (baseParts) {\n //Find the longest baseName segment match in the config.\n //So, do joins on the biggest to smallest lengths of baseParts.\n for (j = baseParts.length; j > 0; j -= 1) {\n mapValue = getOwn(map, baseParts.slice(0, j).join('/'));\n\n //baseName segment has config, find if it has one for\n //this name.\n if (mapValue) {\n mapValue = getOwn(mapValue, nameSegment);\n if (mapValue) {\n //Match, update name to the new value.\n foundMap = mapValue;\n foundI = i;\n break outerLoop;\n }\n }\n }\n }\n\n //Check for a star map match, but just hold on to it,\n //if there is a shorter segment match later in a matching\n //config, then favor over this star map.\n if (!foundStarMap && starMap && getOwn(starMap, nameSegment)) {\n foundStarMap = getOwn(starMap, nameSegment);\n starI = i;\n }\n }\n\n if (!foundMap && foundStarMap) {\n foundMap = foundStarMap;\n foundI = starI;\n }\n\n if (foundMap) {\n nameParts.splice(0, foundI, foundMap);\n name = nameParts.join('/');\n }\n }\n\n // If the name points to a package's name, use\n // the package main instead.\n pkgMain = getOwn(config.pkgs, name);\n\n return pkgMain ? pkgMain : name;\n }\n\n function removeScript(name) {\n if (isBrowser) {\n each(scripts(), function (scriptNode) {\n if (scriptNode.getAttribute('data-requiremodule') === name &&\n scriptNode.getAttribute('data-requirecontext') === context.contextName) {\n scriptNode.parentNode.removeChild(scriptNode);\n return true;\n }\n });\n }\n }\n\n function hasPathFallback(id) {\n var pathConfig = getOwn(config.paths, id);\n if (pathConfig && isArray(pathConfig) && pathConfig.length > 1) {\n //Pop off the first array value, since it failed, and\n //retry\n pathConfig.shift();\n context.require.undef(id);\n\n //Custom require that does not do map translation, since\n //ID is \"absolute\", already mapped/resolved.\n context.makeRequire(null, {\n skipMap: true\n })([id]);\n\n return true;\n }\n }\n\n //Turns a plugin!resource to [plugin, resource]\n //with the plugin being undefined if the name\n //did not have a plugin prefix.\n function splitPrefix(name) {\n var prefix,\n index = name ? name.indexOf('!') : -1;\n if (index > -1) {\n prefix = name.substring(0, index);\n name = name.substring(index + 1, name.length);\n }\n return [prefix, name];\n }\n\n /**\n * Creates a module mapping that includes plugin prefix, module\n * name, and path. If parentModuleMap is provided it will\n * also normalize the name via require.normalize()\n *\n * @param {String} name the module name\n * @param {String} [parentModuleMap] parent module map\n * for the module name, used to resolve relative names.\n * @param {Boolean} isNormalized: is the ID already normalized.\n * This is true if this call is done for a define() module ID.\n * @param {Boolean} applyMap: apply the map config to the ID.\n * Should only be true if this map is for a dependency.\n *\n * @returns {Object}\n */\n function makeModuleMap(name, parentModuleMap, isNormalized, applyMap) {\n var url, pluginModule, suffix, nameParts,\n prefix = null,\n parentName = parentModuleMap ? parentModuleMap.name : null,\n originalName = name,\n isDefine = true,\n normalizedName = '';\n\n //If no name, then it means it is a require call, generate an\n //internal name.\n if (!name) {\n isDefine = false;\n name = '_@r' + (requireCounter += 1);\n }\n\n nameParts = splitPrefix(name);\n prefix = nameParts[0];\n name = nameParts[1];\n\n if (prefix) {\n prefix = normalize(prefix, parentName, applyMap);\n pluginModule = getOwn(defined, prefix);\n }\n\n //Account for relative paths if there is a base name.\n if (name) {\n if (prefix) {\n if (isNormalized) {\n normalizedName = name;\n } else if (pluginModule && pluginModule.normalize) {\n //Plugin is loaded, use its normalize method.\n normalizedName = pluginModule.normalize(name, function (name) {\n return normalize(name, parentName, applyMap);\n });\n } else {\n // If nested plugin references, then do not try to\n // normalize, as it will not normalize correctly. This\n // places a restriction on resourceIds, and the longer\n // term solution is not to normalize until plugins are\n // loaded and all normalizations to allow for async\n // loading of a loader plugin. But for now, fixes the\n // common uses. Details in #1131\n normalizedName = name.indexOf('!') === -1 ?\n normalize(name, parentName, applyMap) :\n name;\n }\n } else {\n //A regular module.\n normalizedName = normalize(name, parentName, applyMap);\n\n //Normalized name may be a plugin ID due to map config\n //application in normalize. The map config values must\n //already be normalized, so do not need to redo that part.\n nameParts = splitPrefix(normalizedName);\n prefix = nameParts[0];\n normalizedName = nameParts[1];\n isNormalized = true;\n\n url = context.nameToUrl(normalizedName);\n }\n }\n\n //If the id is a plugin id that cannot be determined if it needs\n //normalization, stamp it with a unique ID so two matching relative\n //ids that may conflict can be separate.\n suffix = prefix && !pluginModule && !isNormalized ?\n '_unnormalized' + (unnormalizedCounter += 1) :\n '';\n\n return {\n prefix: prefix,\n name: normalizedName,\n parentMap: parentModuleMap,\n unnormalized: !!suffix,\n url: url,\n originalName: originalName,\n isDefine: isDefine,\n id: (prefix ?\n prefix + '!' + normalizedName :\n normalizedName) + suffix\n };\n }\n\n function getModule(depMap) {\n var id = depMap.id,\n mod = getOwn(registry, id);\n\n if (!mod) {\n mod = registry[id] = new context.Module(depMap);\n }\n\n return mod;\n }\n\n function on(depMap, name, fn) {\n var id = depMap.id,\n mod = getOwn(registry, id);\n\n if (hasProp(defined, id) &&\n (!mod || mod.defineEmitComplete)) {\n if (name === 'defined') {\n fn(defined[id]);\n }\n } else {\n mod = getModule(depMap);\n if (mod.error && name === 'error') {\n fn(mod.error);\n } else {\n mod.on(name, fn);\n }\n }\n }\n\n function onError(err, errback) {\n var ids = err.requireModules,\n notified = false;\n\n if (errback) {\n errback(err);\n } else {\n each(ids, function (id) {\n var mod = getOwn(registry, id);\n if (mod) {\n //Set error on module, so it skips timeout checks.\n mod.error = err;\n if (mod.events.error) {\n notified = true;\n mod.emit('error', err);\n }\n }\n });\n\n if (!notified) {\n req.onError(err);\n }\n }\n }\n\n /**\n * Internal method to transfer globalQueue items to this context's\n * defQueue.\n */\n function takeGlobalQueue() {\n //Push all the globalDefQueue items into the context's defQueue\n if (globalDefQueue.length) {\n each(globalDefQueue, function(queueItem) {\n var id = queueItem[0];\n if (typeof id === 'string') {\n context.defQueueMap[id] = true;\n }\n defQueue.push(queueItem);\n });\n globalDefQueue = [];\n }\n }\n\n handlers = {\n 'require': function (mod) {\n if (mod.require) {\n return mod.require;\n } else {\n return (mod.require = context.makeRequire(mod.map));\n }\n },\n 'exports': function (mod) {\n mod.usingExports = true;\n if (mod.map.isDefine) {\n if (mod.exports) {\n return (defined[mod.map.id] = mod.exports);\n } else {\n return (mod.exports = defined[mod.map.id] = {});\n }\n }\n },\n 'module': function (mod) {\n if (mod.module) {\n return mod.module;\n } else {\n return (mod.module = {\n id: mod.map.id,\n uri: mod.map.url,\n config: function () {\n return getOwn(config.config, mod.map.id) || {};\n },\n exports: mod.exports || (mod.exports = {})\n });\n }\n }\n };\n\n function cleanRegistry(id) {\n //Clean up machinery used for waiting modules.\n delete registry[id];\n delete enabledRegistry[id];\n }\n\n function breakCycle(mod, traced, processed) {\n var id = mod.map.id;\n\n if (mod.error) {\n mod.emit('error', mod.error);\n } else {\n traced[id] = true;\n each(mod.depMaps, function (depMap, i) {\n var depId = depMap.id,\n dep = getOwn(registry, depId);\n\n //Only force things that have not completed\n //being defined, so still in the registry,\n //and only if it has not been matched up\n //in the module already.\n if (dep && !mod.depMatched[i] && !processed[depId]) {\n if (getOwn(traced, depId)) {\n mod.defineDep(i, defined[depId]);\n mod.check(); //pass false?\n } else {\n breakCycle(dep, traced, processed);\n }\n }\n });\n processed[id] = true;\n }\n }\n\n function checkLoaded() {\n var err, usingPathFallback,\n waitInterval = config.waitSeconds * 1000,\n //It is possible to disable the wait interval by using waitSeconds of 0.\n expired = waitInterval && (context.startTime + waitInterval) < new Date().getTime(),\n noLoads = [],\n reqCalls = [],\n stillLoading = false,\n needCycleCheck = true;\n\n //Do not bother if this call was a result of a cycle break.\n if (inCheckLoaded) {\n return;\n }\n\n inCheckLoaded = true;\n\n //Figure out the state of all the modules.\n eachProp(enabledRegistry, function (mod) {\n var map = mod.map,\n modId = map.id;\n\n //Skip things that are not enabled or in error state.\n if (!mod.enabled) {\n return;\n }\n\n if (!map.isDefine) {\n reqCalls.push(mod);\n }\n\n if (!mod.error) {\n //If the module should be executed, and it has not\n //been inited and time is up, remember it.\n if (!mod.inited && expired) {\n if (hasPathFallback(modId)) {\n usingPathFallback = true;\n stillLoading = true;\n } else {\n noLoads.push(modId);\n removeScript(modId);\n }\n } else if (!mod.inited && mod.fetched && map.isDefine) {\n stillLoading = true;\n if (!map.prefix) {\n //No reason to keep looking for unfinished\n //loading. If the only stillLoading is a\n //plugin resource though, keep going,\n //because it may be that a plugin resource\n //is waiting on a non-plugin cycle.\n return (needCycleCheck = false);\n }\n }\n }\n });\n\n if (expired && noLoads.length) {\n //If wait time expired, throw error of unloaded modules.\n err = makeError('timeout', 'Load timeout for modules: ' + noLoads, null, noLoads);\n err.contextName = context.contextName;\n return onError(err);\n }\n\n //Not expired, check for a cycle.\n if (needCycleCheck) {\n each(reqCalls, function (mod) {\n breakCycle(mod, {}, {});\n });\n }\n\n //If still waiting on loads, and the waiting load is something\n //other than a plugin resource, or there are still outstanding\n //scripts, then just try back later.\n if ((!expired || usingPathFallback) && stillLoading) {\n //Something is still waiting to load. Wait for it, but only\n //if a timeout is not already in effect.\n if ((isBrowser || isWebWorker) && !checkLoadedTimeoutId) {\n checkLoadedTimeoutId = setTimeout(function () {\n checkLoadedTimeoutId = 0;\n checkLoaded();\n }, 50);\n }\n }\n\n inCheckLoaded = false;\n }\n\n Module = function (map) {\n this.events = getOwn(undefEvents, map.id) || {};\n this.map = map;\n this.shim = getOwn(config.shim, map.id);\n this.depExports = [];\n this.depMaps = [];\n this.depMatched = [];\n this.pluginMaps = {};\n this.depCount = 0;\n\n /* this.exports this.factory\n this.depMaps = [],\n this.enabled, this.fetched\n */\n };\n\n Module.prototype = {\n init: function (depMaps, factory, errback, options) {\n options = options || {};\n\n //Do not do more inits if already done. Can happen if there\n //are multiple define calls for the same module. That is not\n //a normal, common case, but it is also not unexpected.\n if (this.inited) {\n return;\n }\n\n this.factory = factory;\n\n if (errback) {\n //Register for errors on this module.\n this.on('error', errback);\n } else if (this.events.error) {\n //If no errback already, but there are error listeners\n //on this module, set up an errback to pass to the deps.\n errback = bind(this, function (err) {\n this.emit('error', err);\n });\n }\n\n //Do a copy of the dependency array, so that\n //source inputs are not modified. For example\n //\"shim\" deps are passed in here directly, and\n //doing a direct modification of the depMaps array\n //would affect that config.\n this.depMaps = depMaps && depMaps.slice(0);\n\n this.errback = errback;\n\n //Indicate this module has be initialized\n this.inited = true;\n\n this.ignore = options.ignore;\n\n //Could have option to init this module in enabled mode,\n //or could have been previously marked as enabled. However,\n //the dependencies are not known until init is called. So\n //if enabled previously, now trigger dependencies as enabled.\n if (options.enabled || this.enabled) {\n //Enable this module and dependencies.\n //Will call this.check()\n this.enable();\n } else {\n this.check();\n }\n },\n\n defineDep: function (i, depExports) {\n //Because of cycles, defined callback for a given\n //export can be called more than once.\n if (!this.depMatched[i]) {\n this.depMatched[i] = true;\n this.depCount -= 1;\n this.depExports[i] = depExports;\n }\n },\n\n fetch: function () {\n if (this.fetched) {\n return;\n }\n this.fetched = true;\n\n context.startTime = (new Date()).getTime();\n\n var map = this.map;\n\n //If the manager is for a plugin managed resource,\n //ask the plugin to load it now.\n if (this.shim) {\n context.makeRequire(this.map, {\n enableBuildCallback: true\n })(this.shim.deps || [], bind(this, function () {\n return map.prefix ? this.callPlugin() : this.load();\n }));\n } else {\n //Regular dependency.\n return map.prefix ? this.callPlugin() : this.load();\n }\n },\n\n load: function () {\n var url = this.map.url;\n\n //Regular dependency.\n if (!urlFetched[url]) {\n urlFetched[url] = true;\n context.load(this.map.id, url);\n }\n },\n\n /**\n * Checks if the module is ready to define itself, and if so,\n * define it.\n */\n check: function () {\n if (!this.enabled || this.enabling) {\n return;\n }\n\n var err, cjsModule,\n id = this.map.id,\n depExports = this.depExports,\n exports = this.exports,\n factory = this.factory;\n\n if (!this.inited) {\n // Only fetch if not already in the defQueue.\n if (!hasProp(context.defQueueMap, id)) {\n this.fetch();\n }\n } else if (this.error) {\n this.emit('error', this.error);\n } else if (!this.defining) {\n //The factory could trigger another require call\n //that would result in checking this module to\n //define itself again. If already in the process\n //of doing that, skip this work.\n this.defining = true;\n\n if (this.depCount < 1 && !this.defined) {\n if (isFunction(factory)) {\n //If there is an error listener, favor passing\n //to that instead of throwing an error. However,\n //only do it for define()'d modules. require\n //errbacks should not be called for failures in\n //their callbacks (#699). However if a global\n //onError is set, use that.\n if ((this.events.error && this.map.isDefine) ||\n req.onError !== defaultOnError) {\n try {\n exports = context.execCb(id, factory, depExports, exports);\n } catch (e) {\n err = e;\n }\n } else {\n exports = context.execCb(id, factory, depExports, exports);\n }\n\n // Favor return value over exports. If node/cjs in play,\n // then will not have a return value anyway. Favor\n // module.exports assignment over exports object.\n if (this.map.isDefine && exports === undefined) {\n cjsModule = this.module;\n if (cjsModule) {\n exports = cjsModule.exports;\n } else if (this.usingExports) {\n //exports already set the defined value.\n exports = this.exports;\n }\n }\n\n if (err) {\n err.requireMap = this.map;\n err.requireModules = this.map.isDefine ? [this.map.id] : null;\n err.requireType = this.map.isDefine ? 'define' : 'require';\n return onError((this.error = err));\n }\n\n } else {\n //Just a literal value\n exports = factory;\n }\n\n this.exports = exports;\n\n if (this.map.isDefine && !this.ignore) {\n defined[id] = exports;\n\n if (req.onResourceLoad) {\n var resLoadMaps = [];\n each(this.depMaps, function (depMap) {\n resLoadMaps.push(depMap.normalizedMap || depMap);\n });\n req.onResourceLoad(context, this.map, resLoadMaps);\n }\n }\n\n //Clean up\n cleanRegistry(id);\n\n this.defined = true;\n }\n\n //Finished the define stage. Allow calling check again\n //to allow define notifications below in the case of a\n //cycle.\n this.defining = false;\n\n if (this.defined && !this.defineEmitted) {\n this.defineEmitted = true;\n this.emit('defined', this.exports);\n this.defineEmitComplete = true;\n }\n\n }\n },\n\n callPlugin: function () {\n var map = this.map,\n id = map.id,\n //Map already normalized the prefix.\n pluginMap = makeModuleMap(map.prefix);\n\n //Mark this as a dependency for this plugin, so it\n //can be traced for cycles.\n this.depMaps.push(pluginMap);\n\n on(pluginMap, 'defined', bind(this, function (plugin) {\n var load, normalizedMap, normalizedMod,\n bundleId = getOwn(bundlesMap, this.map.id),\n name = this.map.name,\n parentName = this.map.parentMap ? this.map.parentMap.name : null,\n localRequire = context.makeRequire(map.parentMap, {\n enableBuildCallback: true\n });\n\n //If current map is not normalized, wait for that\n //normalized name to load instead of continuing.\n if (this.map.unnormalized) {\n //Normalize the ID if the plugin allows it.\n if (plugin.normalize) {\n name = plugin.normalize(name, function (name) {\n return normalize(name, parentName, true);\n }) || '';\n }\n\n //prefix and name should already be normalized, no need\n //for applying map config again either.\n normalizedMap = makeModuleMap(map.prefix + '!' + name,\n this.map.parentMap,\n true);\n on(normalizedMap,\n 'defined', bind(this, function (value) {\n this.map.normalizedMap = normalizedMap;\n this.init([], function () { return value; }, null, {\n enabled: true,\n ignore: true\n });\n }));\n\n normalizedMod = getOwn(registry, normalizedMap.id);\n if (normalizedMod) {\n //Mark this as a dependency for this plugin, so it\n //can be traced for cycles.\n this.depMaps.push(normalizedMap);\n\n if (this.events.error) {\n normalizedMod.on('error', bind(this, function (err) {\n this.emit('error', err);\n }));\n }\n normalizedMod.enable();\n }\n\n return;\n }\n\n //If a paths config, then just load that file instead to\n //resolve the plugin, as it is built into that paths layer.\n if (bundleId) {\n this.map.url = context.nameToUrl(bundleId);\n this.load();\n return;\n }\n\n load = bind(this, function (value) {\n this.init([], function () { return value; }, null, {\n enabled: true\n });\n });\n\n load.error = bind(this, function (err) {\n this.inited = true;\n this.error = err;\n err.requireModules = [id];\n\n //Remove temp unnormalized modules for this module,\n //since they will never be resolved otherwise now.\n eachProp(registry, function (mod) {\n if (mod.map.id.indexOf(id + '_unnormalized') === 0) {\n cleanRegistry(mod.map.id);\n }\n });\n\n onError(err);\n });\n\n //Allow plugins to load other code without having to know the\n //context or how to 'complete' the load.\n load.fromText = bind(this, function (text, textAlt) {\n /*jslint evil: true */\n var moduleName = map.name,\n moduleMap = makeModuleMap(moduleName),\n hasInteractive = useInteractive;\n\n //As of 2.1.0, support just passing the text, to reinforce\n //fromText only being called once per resource. Still\n //support old style of passing moduleName but discard\n //that moduleName in favor of the internal ref.\n if (textAlt) {\n text = textAlt;\n }\n\n //Turn off interactive script matching for IE for any define\n //calls in the text, then turn it back on at the end.\n if (hasInteractive) {\n useInteractive = false;\n }\n\n //Prime the system by creating a module instance for\n //it.\n getModule(moduleMap);\n\n //Transfer any config to this other module.\n if (hasProp(config.config, id)) {\n config.config[moduleName] = config.config[id];\n }\n\n try {\n req.exec(text);\n } catch (e) {\n return onError(makeError('fromtexteval',\n 'fromText eval for ' + id +\n ' failed: ' + e,\n e,\n [id]));\n }\n\n if (hasInteractive) {\n useInteractive = true;\n }\n\n //Mark this as a dependency for the plugin\n //resource\n this.depMaps.push(moduleMap);\n\n //Support anonymous modules.\n context.completeLoad(moduleName);\n\n //Bind the value of that module to the value for this\n //resource ID.\n localRequire([moduleName], load);\n });\n\n //Use parentName here since the plugin's name is not reliable,\n //could be some weird string with no path that actually wants to\n //reference the parentName's path.\n plugin.load(map.name, localRequire, load, config);\n }));\n\n context.enable(pluginMap, this);\n this.pluginMaps[pluginMap.id] = pluginMap;\n },\n\n enable: function () {\n enabledRegistry[this.map.id] = this;\n this.enabled = true;\n\n //Set flag mentioning that the module is enabling,\n //so that immediate calls to the defined callbacks\n //for dependencies do not trigger inadvertent load\n //with the depCount still being zero.\n this.enabling = true;\n\n //Enable each dependency\n each(this.depMaps, bind(this, function (depMap, i) {\n var id, mod, handler;\n\n if (typeof depMap === 'string') {\n //Dependency needs to be converted to a depMap\n //and wired up to this module.\n depMap = makeModuleMap(depMap,\n (this.map.isDefine ? this.map : this.map.parentMap),\n false,\n !this.skipMap);\n this.depMaps[i] = depMap;\n\n handler = getOwn(handlers, depMap.id);\n\n if (handler) {\n this.depExports[i] = handler(this);\n return;\n }\n\n this.depCount += 1;\n\n on(depMap, 'defined', bind(this, function (depExports) {\n if (this.undefed) {\n return;\n }\n this.defineDep(i, depExports);\n this.check();\n }));\n\n if (this.errback) {\n on(depMap, 'error', bind(this, this.errback));\n } else if (this.events.error) {\n // No direct errback on this module, but something\n // else is listening for errors, so be sure to\n // propagate the error correctly.\n on(depMap, 'error', bind(this, function(err) {\n this.emit('error', err);\n }));\n }\n }\n\n id = depMap.id;\n mod = registry[id];\n\n //Skip special modules like 'require', 'exports', 'module'\n //Also, don't call enable if it is already enabled,\n //important in circular dependency cases.\n if (!hasProp(handlers, id) && mod && !mod.enabled) {\n context.enable(depMap, this);\n }\n }));\n\n //Enable each plugin that is used in\n //a dependency\n eachProp(this.pluginMaps, bind(this, function (pluginMap) {\n var mod = getOwn(registry, pluginMap.id);\n if (mod && !mod.enabled) {\n context.enable(pluginMap, this);\n }\n }));\n\n this.enabling = false;\n\n this.check();\n },\n\n on: function (name, cb) {\n var cbs = this.events[name];\n if (!cbs) {\n cbs = this.events[name] = [];\n }\n cbs.push(cb);\n },\n\n emit: function (name, evt) {\n each(this.events[name], function (cb) {\n cb(evt);\n });\n if (name === 'error') {\n //Now that the error handler was triggered, remove\n //the listeners, since this broken Module instance\n //can stay around for a while in the registry.\n delete this.events[name];\n }\n }\n };\n\n function callGetModule(args) {\n //Skip modules already defined.\n if (!hasProp(defined, args[0])) {\n getModule(makeModuleMap(args[0], null, true)).init(args[1], args[2]);\n }\n }\n\n function removeListener(node, func, name, ieName) {\n //Favor detachEvent because of IE9\n //issue, see attachEvent/addEventListener comment elsewhere\n //in this file.\n if (node.detachEvent && !isOpera) {\n //Probably IE. If not it will throw an error, which will be\n //useful to know.\n if (ieName) {\n node.detachEvent(ieName, func);\n }\n } else {\n node.removeEventListener(name, func, false);\n }\n }\n\n /**\n * Given an event from a script node, get the requirejs info from it,\n * and then removes the event listeners on the node.\n * @param {Event} evt\n * @returns {Object}\n */\n function getScriptData(evt) {\n //Using currentTarget instead of target for Firefox 2.0's sake. Not\n //all old browsers will be supported, but this one was easy enough\n //to support and still makes sense.\n var node = evt.currentTarget || evt.srcElement;\n\n //Remove the listeners once here.\n removeListener(node, context.onScriptLoad, 'load', 'onreadystatechange');\n removeListener(node, context.onScriptError, 'error');\n\n return {\n node: node,\n id: node && node.getAttribute('data-requiremodule')\n };\n }\n\n function intakeDefines() {\n var args;\n\n //Any defined modules in the global queue, intake them now.\n takeGlobalQueue();\n\n //Make sure any remaining defQueue items get properly processed.\n while (defQueue.length) {\n args = defQueue.shift();\n if (args[0] === null) {\n return onError(makeError('mismatch', 'Mismatched anonymous define() module: ' +\n args[args.length - 1]));\n } else {\n //args are id, deps, factory. Should be normalized by the\n //define() function.\n callGetModule(args);\n }\n }\n context.defQueueMap = {};\n }\n\n context = {\n config: config,\n contextName: contextName,\n registry: registry,\n defined: defined,\n urlFetched: urlFetched,\n defQueue: defQueue,\n defQueueMap: {},\n Module: Module,\n makeModuleMap: makeModuleMap,\n nextTick: req.nextTick,\n onError: onError,\n\n /**\n * Set a configuration for the context.\n * @param {Object} cfg config object to integrate.\n */\n configure: function (cfg) {\n //Make sure the baseUrl ends in a slash.\n if (cfg.baseUrl) {\n if (cfg.baseUrl.charAt(cfg.baseUrl.length - 1) !== '/') {\n cfg.baseUrl += '/';\n }\n }\n\n // Convert old style urlArgs string to a function.\n if (typeof cfg.urlArgs === 'string') {\n var urlArgs = cfg.urlArgs;\n cfg.urlArgs = function(id, url) {\n return (url.indexOf('?') === -1 ? '?' : '&') + urlArgs;\n };\n }\n\n //Save off the paths since they require special processing,\n //they are additive.\n var shim = config.shim,\n objs = {\n paths: true,\n bundles: true,\n config: true,\n map: true\n };\n\n eachProp(cfg, function (value, prop) {\n if (objs[prop]) {\n if (!config[prop]) {\n config[prop] = {};\n }\n mixin(config[prop], value, true, true);\n } else {\n config[prop] = value;\n }\n });\n\n //Reverse map the bundles\n if (cfg.bundles) {\n eachProp(cfg.bundles, function (value, prop) {\n each(value, function (v) {\n if (v !== prop) {\n bundlesMap[v] = prop;\n }\n });\n });\n }\n\n //Merge shim\n if (cfg.shim) {\n eachProp(cfg.shim, function (value, id) {\n //Normalize the structure\n if (isArray(value)) {\n value = {\n deps: value\n };\n }\n if ((value.exports || value.init) && !value.exportsFn) {\n value.exportsFn = context.makeShimExports(value);\n }\n shim[id] = value;\n });\n config.shim = shim;\n }\n\n //Adjust packages if necessary.\n if (cfg.packages) {\n each(cfg.packages, function (pkgObj) {\n var location, name;\n\n pkgObj = typeof pkgObj === 'string' ? {name: pkgObj} : pkgObj;\n\n name = pkgObj.name;\n location = pkgObj.location;\n if (location) {\n config.paths[name] = pkgObj.location;\n }\n\n //Save pointer to main module ID for pkg name.\n //Remove leading dot in main, so main paths are normalized,\n //and remove any trailing .js, since different package\n //envs have different conventions: some use a module name,\n //some use a file name.\n config.pkgs[name] = pkgObj.name + '/' + (pkgObj.main || 'main')\n .replace(currDirRegExp, '')\n .replace(jsSuffixRegExp, '');\n });\n }\n\n //If there are any \"waiting to execute\" modules in the registry,\n //update the maps for them, since their info, like URLs to load,\n //may have changed.\n eachProp(registry, function (mod, id) {\n //If module already has init called, since it is too\n //late to modify them, and ignore unnormalized ones\n //since they are transient.\n if (!mod.inited && !mod.map.unnormalized) {\n mod.map = makeModuleMap(id, null, true);\n }\n });\n\n //If a deps array or a config callback is specified, then call\n //require with those args. This is useful when require is defined as a\n //config object before require.js is loaded.\n if (cfg.deps || cfg.callback) {\n context.require(cfg.deps || [], cfg.callback);\n }\n },\n\n makeShimExports: function (value) {\n function fn() {\n var ret;\n if (value.init) {\n ret = value.init.apply(global, arguments);\n }\n return ret || (value.exports && getGlobal(value.exports));\n }\n return fn;\n },\n\n makeRequire: function (relMap, options) {\n options = options || {};\n\n function localRequire(deps, callback, errback) {\n var id, map, requireMod;\n\n if (options.enableBuildCallback && callback && isFunction(callback)) {\n callback.__requireJsBuild = true;\n }\n\n if (typeof deps === 'string') {\n if (isFunction(callback)) {\n //Invalid call\n return onError(makeError('requireargs', 'Invalid require call'), errback);\n }\n\n //If require|exports|module are requested, get the\n //value for them from the special handlers. Caveat:\n //this only works while module is being defined.\n if (relMap && hasProp(handlers, deps)) {\n return handlers[deps](registry[relMap.id]);\n }\n\n //Synchronous access to one module. If require.get is\n //available (as in the Node adapter), prefer that.\n if (req.get) {\n return req.get(context, deps, relMap, localRequire);\n }\n\n //Normalize module name, if it contains . or ..\n map = makeModuleMap(deps, relMap, false, true);\n id = map.id;\n\n if (!hasProp(defined, id)) {\n return onError(makeError('notloaded', 'Module name \"' +\n id +\n '\" has not been loaded yet for context: ' +\n contextName +\n (relMap ? '' : '. Use require([])')));\n }\n return defined[id];\n }\n\n //Grab defines waiting in the global queue.\n intakeDefines();\n\n //Mark all the dependencies as needing to be loaded.\n context.nextTick(function () {\n //Some defines could have been added since the\n //require call, collect them.\n intakeDefines();\n\n requireMod = getModule(makeModuleMap(null, relMap));\n\n //Store if map config should be applied to this require\n //call for dependencies.\n requireMod.skipMap = options.skipMap;\n\n requireMod.init(deps, callback, errback, {\n enabled: true\n });\n\n checkLoaded();\n });\n\n return localRequire;\n }\n\n mixin(localRequire, {\n isBrowser: isBrowser,\n\n /**\n * Converts a module name + .extension into an URL path.\n * *Requires* the use of a module name. It does not support using\n * plain URLs like nameToUrl.\n */\n toUrl: function (moduleNamePlusExt) {\n var ext,\n index = moduleNamePlusExt.lastIndexOf('.'),\n segment = moduleNamePlusExt.split('/')[0],\n isRelative = segment === '.' || segment === '..';\n\n //Have a file extension alias, and it is not the\n //dots from a relative path.\n if (index !== -1 && (!isRelative || index > 1)) {\n ext = moduleNamePlusExt.substring(index, moduleNamePlusExt.length);\n moduleNamePlusExt = moduleNamePlusExt.substring(0, index);\n }\n\n return context.nameToUrl(normalize(moduleNamePlusExt,\n relMap && relMap.id, true), ext, true);\n },\n\n defined: function (id) {\n return hasProp(defined, makeModuleMap(id, relMap, false, true).id);\n },\n\n specified: function (id) {\n id = makeModuleMap(id, relMap, false, true).id;\n return hasProp(defined, id) || hasProp(registry, id);\n }\n });\n\n //Only allow undef on top level require calls\n if (!relMap) {\n localRequire.undef = function (id) {\n //Bind any waiting define() calls to this context,\n //fix for #408\n takeGlobalQueue();\n\n var map = makeModuleMap(id, relMap, true),\n mod = getOwn(registry, id);\n\n mod.undefed = true;\n removeScript(id);\n\n delete defined[id];\n delete urlFetched[map.url];\n delete undefEvents[id];\n\n //Clean queued defines too. Go backwards\n //in array so that the splices do not\n //mess up the iteration.\n eachReverse(defQueue, function(args, i) {\n if (args[0] === id) {\n defQueue.splice(i, 1);\n }\n });\n delete context.defQueueMap[id];\n\n if (mod) {\n //Hold on to listeners in case the\n //module will be attempted to be reloaded\n //using a different config.\n if (mod.events.defined) {\n undefEvents[id] = mod.events;\n }\n\n cleanRegistry(id);\n }\n };\n }\n\n return localRequire;\n },\n\n /**\n * Called to enable a module if it is still in the registry\n * awaiting enablement. A second arg, parent, the parent module,\n * is passed in for context, when this method is overridden by\n * the optimizer. Not shown here to keep code compact.\n */\n enable: function (depMap) {\n var mod = getOwn(registry, depMap.id);\n if (mod) {\n getModule(depMap).enable();\n }\n },\n\n /**\n * Internal method used by environment adapters to complete a load event.\n * A load event could be a script load or just a load pass from a synchronous\n * load call.\n * @param {String} moduleName the name of the module to potentially complete.\n */\n completeLoad: function (moduleName) {\n var found, args, mod,\n shim = getOwn(config.shim, moduleName) || {},\n shExports = shim.exports;\n\n takeGlobalQueue();\n\n while (defQueue.length) {\n args = defQueue.shift();\n if (args[0] === null) {\n args[0] = moduleName;\n //If already found an anonymous module and bound it\n //to this name, then this is some other anon module\n //waiting for its completeLoad to fire.\n if (found) {\n break;\n }\n found = true;\n } else if (args[0] === moduleName) {\n //Found matching define call for this script!\n found = true;\n }\n\n callGetModule(args);\n }\n context.defQueueMap = {};\n\n //Do this after the cycle of callGetModule in case the result\n //of those calls/init calls changes the registry.\n mod = getOwn(registry, moduleName);\n\n if (!found && !hasProp(defined, moduleName) && mod && !mod.inited) {\n if (config.enforceDefine && (!shExports || !getGlobal(shExports))) {\n if (hasPathFallback(moduleName)) {\n return;\n } else {\n return onError(makeError('nodefine',\n 'No define call for ' + moduleName,\n null,\n [moduleName]));\n }\n } else {\n //A script that does not call define(), so just simulate\n //the call for it.\n callGetModule([moduleName, (shim.deps || []), shim.exportsFn]);\n }\n }\n\n checkLoaded();\n },\n\n /**\n * Converts a module name to a file path. Supports cases where\n * moduleName may actually be just an URL.\n * Note that it **does not** call normalize on the moduleName,\n * it is assumed to have already been normalized. This is an\n * internal API, not a public one. Use toUrl for the public API.\n */\n nameToUrl: function (moduleName, ext, skipExt) {\n var paths, syms, i, parentModule, url,\n parentPath, bundleId,\n pkgMain = getOwn(config.pkgs, moduleName);\n\n if (pkgMain) {\n moduleName = pkgMain;\n }\n\n bundleId = getOwn(bundlesMap, moduleName);\n\n if (bundleId) {\n return context.nameToUrl(bundleId, ext, skipExt);\n }\n\n //If a colon is in the URL, it indicates a protocol is used and it is just\n //an URL to a file, or if it starts with a slash, contains a query arg (i.e. ?)\n //or ends with .js, then assume the user meant to use an url and not a module id.\n //The slash is important for protocol-less URLs as well as full paths.\n if (req.jsExtRegExp.test(moduleName)) {\n //Just a plain path, not module name lookup, so just return it.\n //Add extension if it is included. This is a bit wonky, only non-.js things pass\n //an extension, this method probably needs to be reworked.\n url = moduleName + (ext || '');\n } else {\n //A module that needs to be converted to a path.\n paths = config.paths;\n\n syms = moduleName.split('/');\n //For each module name segment, see if there is a path\n //registered for it. Start with most specific name\n //and work up from it.\n for (i = syms.length; i > 0; i -= 1) {\n parentModule = syms.slice(0, i).join('/');\n\n parentPath = getOwn(paths, parentModule);\n if (parentPath) {\n //If an array, it means there are a few choices,\n //Choose the one that is desired\n if (isArray(parentPath)) {\n parentPath = parentPath[0];\n }\n syms.splice(0, i, parentPath);\n break;\n }\n }\n\n //Join the path parts together, then figure out if baseUrl is needed.\n url = syms.join('/');\n url += (ext || (/^data\\:|^blob\\:|\\?/.test(url) || skipExt ? '' : '.js'));\n url = (url.charAt(0) === '/' || url.match(/^[\\w\\+\\.\\-]+:/) ? '' : config.baseUrl) + url;\n }\n\n return config.urlArgs && !/^blob\\:/.test(url) ?\n url + config.urlArgs(moduleName, url) : url;\n },\n\n //Delegates to req.load. Broken out as a separate function to\n //allow overriding in the optimizer.\n load: function (id, url) {\n req.load(context, id, url);\n },\n\n /**\n * Executes a module callback function. Broken out as a separate function\n * solely to allow the build system to sequence the files in the built\n * layer in the right sequence.\n *\n * @private\n */\n execCb: function (name, callback, args, exports) {\n return callback.apply(exports, args);\n },\n\n /**\n * callback for script loads, used to check status of loading.\n *\n * @param {Event} evt the event from the browser for the script\n * that was loaded.\n */\n onScriptLoad: function (evt) {\n //Using currentTarget instead of target for Firefox 2.0's sake. Not\n //all old browsers will be supported, but this one was easy enough\n //to support and still makes sense.\n if (evt.type === 'load' ||\n (readyRegExp.test((evt.currentTarget || evt.srcElement).readyState))) {\n //Reset interactive script so a script node is not held onto for\n //to long.\n interactiveScript = null;\n\n //Pull out the name of the module and the context.\n var data = getScriptData(evt);\n context.completeLoad(data.id);\n }\n },\n\n /**\n * Callback for script errors.\n */\n onScriptError: function (evt) {\n var data = getScriptData(evt);\n if (!hasPathFallback(data.id)) {\n var parents = [];\n eachProp(registry, function(value, key) {\n if (key.indexOf('_@r') !== 0) {\n each(value.depMaps, function(depMap) {\n if (depMap.id === data.id) {\n parents.push(key);\n return true;\n }\n });\n }\n });\n return onError(makeError('scripterror', 'Script error for \"' + data.id +\n (parents.length ?\n '\", needed by: ' + parents.join(', ') :\n '\"'), evt, [data.id]));\n }\n }\n };\n\n context.require = context.makeRequire();\n return context;\n }\n\n /**\n * Main entry point.\n *\n * If the only argument to require is a string, then the module that\n * is represented by that string is fetched for the appropriate context.\n *\n * If the first argument is an array, then it will be treated as an array\n * of dependency string names to fetch. An optional function callback can\n * be specified to execute when all of those dependencies are available.\n *\n * Make a local req variable to help Caja compliance (it assumes things\n * on a require that are not standardized), and to give a short\n * name for minification/local scope use.\n */\n req = requirejs = function (deps, callback, errback, optional) {\n\n //Find the right context, use default\n var context, config,\n contextName = defContextName;\n\n // Determine if have config object in the call.\n if (!isArray(deps) && typeof deps !== 'string') {\n // deps is a config object\n config = deps;\n if (isArray(callback)) {\n // Adjust args if there are dependencies\n deps = callback;\n callback = errback;\n errback = optional;\n } else {\n deps = [];\n }\n }\n\n if (config && config.context) {\n contextName = config.context;\n }\n\n context = getOwn(contexts, contextName);\n if (!context) {\n context = contexts[contextName] = req.s.newContext(contextName);\n }\n\n if (config) {\n context.configure(config);\n }\n\n return context.require(deps, callback, errback);\n };\n\n /**\n * Support require.config() to make it easier to cooperate with other\n * AMD loaders on globally agreed names.\n */\n req.config = function (config) {\n return req(config);\n };\n\n /**\n * Execute something after the current tick\n * of the event loop. Override for other envs\n * that have a better solution than setTimeout.\n * @param {Function} fn function to execute later.\n */\n req.nextTick = typeof setTimeout !== 'undefined' ? function (fn) {\n setTimeout(fn, 4);\n } : function (fn) { fn(); };\n\n /**\n * Export require as a global, but only if it does not already exist.\n */\n if (!require) {\n require = req;\n }\n\n req.version = version;\n\n //Used to filter out dependencies that are already paths.\n req.jsExtRegExp = /^\\/|:|\\?|\\.js$/;\n req.isBrowser = isBrowser;\n s = req.s = {\n contexts: contexts,\n newContext: newContext\n };\n\n //Create default context.\n req({});\n\n //Exports some context-sensitive methods on global require.\n each([\n 'toUrl',\n 'undef',\n 'defined',\n 'specified'\n ], function (prop) {\n //Reference from contexts instead of early binding to default context,\n //so that during builds, the latest instance of the default context\n //with its config gets used.\n req[prop] = function () {\n var ctx = contexts[defContextName];\n return ctx.require[prop].apply(ctx, arguments);\n };\n });\n\n if (isBrowser) {\n head = s.head = document.getElementsByTagName('head')[0];\n //If BASE tag is in play, using appendChild is a problem for IE6.\n //When that browser dies, this can be removed. Details in this jQuery bug:\n //http://dev.jquery.com/ticket/2709\n baseElement = document.getElementsByTagName('base')[0];\n if (baseElement) {\n head = s.head = baseElement.parentNode;\n }\n }\n\n /**\n * Any errors that require explicitly generates will be passed to this\n * function. Intercept/override it if you want custom error handling.\n * @param {Error} err the error object.\n */\n req.onError = defaultOnError;\n\n /**\n * Creates the node for the load command. Only used in browser envs.\n */\n req.createNode = function (config, moduleName, url) {\n var node = config.xhtml ?\n document.createElementNS('http://www.w3.org/1999/xhtml', 'html:script') :\n document.createElement('script');\n node.type = config.scriptType || 'text/javascript';\n node.charset = 'utf-8';\n node.async = true;\n return node;\n };\n\n /**\n * Does the request to load a module for the browser case.\n * Make this a separate function to allow other environments\n * to override it.\n *\n * @param {Object} context the require context to find state.\n * @param {String} moduleName the name of the module.\n * @param {Object} url the URL to the module.\n */\n req.load = function (context, moduleName, url) {\n var config = (context && context.config) || {},\n node;\n if (isBrowser) {\n //In the browser so use a script tag\n node = req.createNode(config, moduleName, url);\n\n node.setAttribute('data-requirecontext', context.contextName);\n node.setAttribute('data-requiremodule', moduleName);\n\n //Set up load listener. Test attachEvent first because IE9 has\n //a subtle issue in its addEventListener and script onload firings\n //that do not match the behavior of all other browsers with\n //addEventListener support, which fire the onload event for a\n //script right after the script execution. See:\n //https://connect.microsoft.com/IE/feedback/details/648057/script-onload-event-is-not-fired-immediately-after-script-execution\n //UNFORTUNATELY Opera implements attachEvent but does not follow the script\n //script execution mode.\n if (node.attachEvent &&\n //Check if node.attachEvent is artificially added by custom script or\n //natively supported by browser\n //read https://github.com/requirejs/requirejs/issues/187\n //if we can NOT find [native code] then it must NOT natively supported.\n //in IE8, node.attachEvent does not have toString()\n //Note the test for \"[native code\" with no closing brace, see:\n //https://github.com/requirejs/requirejs/issues/273\n !(node.attachEvent.toString && node.attachEvent.toString().indexOf('[native code') < 0) &&\n !isOpera) {\n //Probably IE. IE (at least 6-8) do not fire\n //script onload right after executing the script, so\n //we cannot tie the anonymous define call to a name.\n //However, IE reports the script as being in 'interactive'\n //readyState at the time of the define call.\n useInteractive = true;\n\n node.attachEvent('onreadystatechange', context.onScriptLoad);\n //It would be great to add an error handler here to catch\n //404s in IE9+. However, onreadystatechange will fire before\n //the error handler, so that does not help. If addEventListener\n //is used, then IE will fire error before load, but we cannot\n //use that pathway given the connect.microsoft.com issue\n //mentioned above about not doing the 'script execute,\n //then fire the script load event listener before execute\n //next script' that other browsers do.\n //Best hope: IE10 fixes the issues,\n //and then destroys all installs of IE 6-9.\n //node.attachEvent('onerror', context.onScriptError);\n } else {\n node.addEventListener('load', context.onScriptLoad, false);\n node.addEventListener('error', context.onScriptError, false);\n }\n node.src = url;\n\n //Calling onNodeCreated after all properties on the node have been\n //set, but before it is placed in the DOM.\n if (config.onNodeCreated) {\n config.onNodeCreated(node, config, moduleName, url);\n }\n\n //For some cache cases in IE 6-8, the script executes before the end\n //of the appendChild execution, so to tie an anonymous define\n //call to the module name (which is stored on the node), hold on\n //to a reference to this node, but clear after the DOM insertion.\n currentlyAddingScript = node;\n if (baseElement) {\n head.insertBefore(node, baseElement);\n } else {\n head.appendChild(node);\n }\n currentlyAddingScript = null;\n\n return node;\n } else if (isWebWorker) {\n try {\n //In a web worker, use importScripts. This is not a very\n //efficient use of importScripts, importScripts will block until\n //its script is downloaded and evaluated. However, if web workers\n //are in play, the expectation is that a build has been done so\n //that only one script needs to be loaded anyway. This may need\n //to be reevaluated if other use cases become common.\n\n // Post a task to the event loop to work around a bug in WebKit\n // where the worker gets garbage-collected after calling\n // importScripts(): https://webkit.org/b/153317\n setTimeout(function() {}, 0);\n importScripts(url);\n\n //Account for anonymous modules\n context.completeLoad(moduleName);\n } catch (e) {\n context.onError(makeError('importscripts',\n 'importScripts failed for ' +\n moduleName + ' at ' + url,\n e,\n [moduleName]));\n }\n }\n };\n\n function getInteractiveScript() {\n if (interactiveScript && interactiveScript.readyState === 'interactive') {\n return interactiveScript;\n }\n\n eachReverse(scripts(), function (script) {\n if (script.readyState === 'interactive') {\n return (interactiveScript = script);\n }\n });\n return interactiveScript;\n }\n\n //Look for a data-main script attribute, which could also adjust the baseUrl.\n if (isBrowser && !cfg.skipDataMain) {\n //Figure out baseUrl. Get it from the script tag with require.js in it.\n eachReverse(scripts(), function (script) {\n //Set the 'head' where we can append children by\n //using the script's parent.\n if (!head) {\n head = script.parentNode;\n }\n\n //Look for a data-main attribute to set main script for the page\n //to load. If it is there, the path to data main becomes the\n //baseUrl, if it is not already set.\n dataMain = script.getAttribute('data-main');\n if (dataMain) {\n //Preserve dataMain in case it is a path (i.e. contains '?')\n mainScript = dataMain;\n\n //Set final baseUrl if there is not already an explicit one,\n //but only do so if the data-main value is not a loader plugin\n //module ID.\n if (!cfg.baseUrl && mainScript.indexOf('!') === -1) {\n //Pull off the directory of data-main for use as the\n //baseUrl.\n src = mainScript.split('/');\n mainScript = src.pop();\n subPath = src.length ? src.join('/') + '/' : './';\n\n cfg.baseUrl = subPath;\n }\n\n //Strip off any trailing .js since mainScript is now\n //like a module name.\n mainScript = mainScript.replace(jsSuffixRegExp, '');\n\n //If mainScript is still a path, fall back to dataMain\n if (req.jsExtRegExp.test(mainScript)) {\n mainScript = dataMain;\n }\n\n //Put the data-main script in the files to load.\n cfg.deps = cfg.deps ? cfg.deps.concat(mainScript) : [mainScript];\n\n return true;\n }\n });\n }\n\n /**\n * The function that handles definitions of modules. Differs from\n * require() in that a string for the module should be the first argument,\n * and the function to execute after dependencies are loaded should\n * return a value to define the module corresponding to the first argument's\n * name.\n */\n define = function (name, deps, callback) {\n var node, context;\n\n //Allow for anonymous modules\n if (typeof name !== 'string') {\n //Adjust args appropriately\n callback = deps;\n deps = name;\n name = null;\n }\n\n //This module may not have dependencies\n if (!isArray(deps)) {\n callback = deps;\n deps = null;\n }\n\n //If no name, and callback is a function, then figure out if it a\n //CommonJS thing with dependencies.\n if (!deps && isFunction(callback)) {\n deps = [];\n //Remove comments from the callback string,\n //look for require calls, and pull them into the dependencies,\n //but only if there are function args.\n if (callback.length) {\n callback\n .toString()\n .replace(commentRegExp, commentReplace)\n .replace(cjsRequireRegExp, function (match, dep) {\n deps.push(dep);\n });\n\n //May be a CommonJS thing even without require calls, but still\n //could use exports, and module. Avoid doing exports and module\n //work though if it just needs require.\n //REQUIRES the function to expect the CommonJS variables in the\n //order listed below.\n deps = (callback.length === 1 ? ['require'] : ['require', 'exports', 'module']).concat(deps);\n }\n }\n\n //If in IE 6-8 and hit an anonymous define() call, do the interactive\n //work.\n if (useInteractive) {\n node = currentlyAddingScript || getInteractiveScript();\n if (node) {\n if (!name) {\n name = node.getAttribute('data-requiremodule');\n }\n context = contexts[node.getAttribute('data-requirecontext')];\n }\n }\n\n //Always save off evaluating the def call until the script onload handler.\n //This allows multiple modules to be in a file without prematurely\n //tracing dependencies, and allows for anonymous module support,\n //where the module name is not known until the script onload event\n //occurs. If no context, use the global queue, and get it processed\n //in the onscript load callback.\n if (context) {\n context.defQueue.push([name, deps, callback]);\n context.defQueueMap[name] = true;\n } else {\n globalDefQueue.push([name, deps, callback]);\n }\n };\n\n define.amd = {\n jQuery: true\n };\n\n /**\n * Executes the text. Normally just uses eval, but can be modified\n * to use a better, environment-specific call. Only used for transpiling\n * loader plugins, not for plain JS modules.\n * @param {String} text the text to execute/evaluate.\n */\n req.exec = function (text) {\n /*jslint evil: true */\n return eval(text);\n };\n\n //Set up with config info.\n req(cfg);\n}(this, (typeof setTimeout === 'undefined' ? undefined : setTimeout)));\n\ndefine(\"deps/require\", function(){});\n\n", + "var hyperHTML = (function (global) {\n 'use strict';\n\n var G = document.defaultView;\n\n // Node.CONSTANTS\n // 'cause some engine has no global Node defined\n // (i.e. Node, NativeScript, basicHTML ... )\n var ELEMENT_NODE = 1;\n var TEXT_NODE = 3;\n var COMMENT_NODE = 8;\n var DOCUMENT_FRAGMENT_NODE = 11;\n\n // HTML related constants\n var VOID_ELEMENTS = /^area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr$/i;\n\n // SVG related constants\n var OWNER_SVG_ELEMENT = 'ownerSVGElement';\n var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n\n // Custom Elements / MutationObserver constants\n var CONNECTED = 'connected';\n var DISCONNECTED = 'dis' + CONNECTED;\n\n // hyperHTML related constants\n var EXPANDO = '_hyper: ';\n var SHOULD_USE_TEXT_CONTENT = /^style|textarea$/i;\n var UID = EXPANDO + (Math.random() * new Date() | 0) + ';';\n var UIDC = '';\n\n // you know that kind of basics you need to cover\n // your use case only but you don't want to bloat the library?\n // There's even a package in here:\n // https://www.npmjs.com/package/poorlyfills\n\n // used to dispatch simple events\n var Event = G.Event;\n try {\n new Event('Event');\n } catch (o_O) {\n Event = function Event(type) {\n var e = document.createEvent('Event');\n e.initEvent(type, false, false);\n return e;\n };\n }\n\n // used to store template literals\n /* istanbul ignore next */\n var Map = G.Map || function Map() {\n var keys = [],\n values = [];\n return {\n get: function get(obj) {\n return values[keys.indexOf(obj)];\n },\n set: function set(obj, value) {\n values[keys.push(obj) - 1] = value;\n }\n };\n };\n\n // used to store wired content\n var ID = 0;\n var WeakMap = G.WeakMap || function WeakMap() {\n var key = UID + ID++;\n return {\n get: function get(obj) {\n return obj[key];\n },\n set: function set(obj, value) {\n Object.defineProperty(obj, key, {\n configurable: true,\n value: value\n });\n }\n };\n };\n\n // used to store hyper.Components\n var WeakSet = G.WeakSet || function WeakSet() {\n var wm = new WeakMap();\n return {\n add: function add(obj) {\n wm.set(obj, true);\n },\n has: function has(obj) {\n return wm.get(obj) === true;\n }\n };\n };\n\n // used to be sure IE9 or older Androids work as expected\n var isArray = Array.isArray || function (toString) {\n return function (arr) {\n return toString.call(arr) === '[object Array]';\n };\n }({}.toString);\n\n var trim = UID.trim || function () {\n return this.replace(/^\\s+|\\s+$/g, '');\n };\n\n // hyperHTML.Component is a very basic class\n // able to create Custom Elements like components\n // including the ability to listen to connect/disconnect\n // events via onconnect/ondisconnect attributes\n // Components can be created imperatively or declaratively.\n // The main difference is that declared components\n // will not automatically render on setState(...)\n // to simplify state handling on render.\n function Component() {\n return this; // this is needed in Edge !!!\n }\n\n // Component is lazily setup because it needs\n // wire mechanism as lazy content\n function setup(content) {\n // there are various weakly referenced variables in here\n // and mostly are to use Component.for(...) static method.\n var children = new WeakMap();\n var create = Object.create;\n var createEntry = function createEntry(wm, id, component) {\n wm.set(id, component);\n return component;\n };\n var get = function get(Class, info, context, id) {\n var relation = info.get(Class) || relate(Class, info);\n switch (typeof id) {\n case 'object':\n case 'function':\n var wm = relation.w || (relation.w = new WeakMap());\n return wm.get(id) || createEntry(wm, id, new Class(context));\n default:\n var sm = relation.p || (relation.p = create(null));\n return sm[id] || (sm[id] = new Class(context));\n }\n };\n var relate = function relate(Class, info) {\n var relation = { w: null, p: null };\n info.set(Class, relation);\n return relation;\n };\n var set = function set(context) {\n var info = new Map();\n children.set(context, info);\n return info;\n };\n // The Component Class\n Object.defineProperties(Component, {\n // Component.for(context[, id]) is a convenient way\n // to automatically relate data/context to children components\n // If not created yet, the new Component(context) is weakly stored\n // and after that same instance would always be returned.\n for: {\n configurable: true,\n value: function value(context, id) {\n return get(this, children.get(context) || set(context), context, id == null ? 'default' : id);\n }\n }\n });\n Object.defineProperties(Component.prototype, {\n // all events are handled with the component as context\n handleEvent: {\n value: function value(e) {\n var ct = e.currentTarget;\n this['getAttribute' in ct && ct.getAttribute('data-call') || 'on' + e.type](e);\n }\n },\n // components will lazily define html or svg properties\n // as soon as these are invoked within the .render() method\n // Such render() method is not provided by the base class\n // but it must be available through the Component extend.\n // Declared components could implement a\n // render(props) method too and use props as needed.\n html: lazyGetter('html', content),\n svg: lazyGetter('svg', content),\n // the state is a very basic/simple mechanism inspired by Preact\n state: lazyGetter('state', function () {\n return this.defaultState;\n }),\n // it is possible to define a default state that'd be always an object otherwise\n defaultState: {\n get: function get() {\n return {};\n }\n },\n // setting some property state through a new object\n // or a callback, triggers also automatically a render\n // unless explicitly specified to not do so (render === false)\n setState: {\n value: function value(state, render) {\n var target = this.state;\n var source = typeof state === 'function' ? state.call(this, target) : state;\n for (var key in source) {\n target[key] = source[key];\n }if (render !== false) this.render();\n return this;\n }\n }\n });\n }\n\n // instead of a secret key I could've used a WeakMap\n // However, attaching a property directly will result\n // into better performance with thousands of components\n // hanging around, and less memory pressure caused by the WeakMap\n var lazyGetter = function lazyGetter(type, fn) {\n var secret = '_' + type + '$';\n return {\n get: function get() {\n return this[secret] || (this[type] = fn.call(this, type));\n },\n set: function set(value) {\n Object.defineProperty(this, secret, { configurable: true, value: value });\n }\n };\n };\n\n var intents = {};\n var keys = [];\n var hasOwnProperty = intents.hasOwnProperty;\n\n var length = 0;\n\n var Intent = {\n\n // hyperHTML.define('intent', (object, update) => {...})\n // can be used to define a third parts update mechanism\n // when every other known mechanism failed.\n // hyper.define('user', info => info.name);\n // hyper(node)`

${{user}}

`;\n define: function define(intent, callback) {\n if (!(intent in intents)) {\n length = keys.push(intent);\n }\n intents[intent] = callback;\n },\n\n // this method is used internally as last resort\n // to retrieve a value out of an object\n invoke: function invoke(object, callback) {\n for (var i = 0; i < length; i++) {\n var key = keys[i];\n if (hasOwnProperty.call(object, key)) {\n return intents[key](object[key], callback);\n }\n }\n }\n };\n\n // these are tiny helpers to simplify most common operations needed here\n var create = function create(node, type) {\n return doc(node).createElement(type);\n };\n var doc = function doc(node) {\n return node.ownerDocument || node;\n };\n var fragment = function fragment(node) {\n return doc(node).createDocumentFragment();\n };\n var text = function text(node, _text) {\n return doc(node).createTextNode(_text);\n };\n\n // TODO: I'd love to code-cover RegExp too here\n // these are fundamental for this library\n\n var spaces = ' \\\\f\\\\n\\\\r\\\\t';\n var almostEverything = '[^ ' + spaces + '\\\\/>\"\\'=]+';\n var attrName = '[ ' + spaces + ']+' + almostEverything;\n var tagName = '<([A-Za-z]+[A-Za-z0-9:_-]*)((?:';\n var attrPartials = '(?:=(?:\\'[^\\']*?\\'|\"[^\"]*?\"|<[^>]*?>|' + almostEverything + '))?)';\n\n var attrSeeker = new RegExp(tagName + attrName + attrPartials + '+)([ ' + spaces + ']*/?>)', 'g');\n\n var selfClosing = new RegExp(tagName + attrName + attrPartials + '*)([ ' + spaces + ']*/>)', 'g');\n\n var testFragment = fragment(document);\n\n // DOM4 node.append(...many)\n var hasAppend = 'append' in testFragment;\n\n // detect old browsers without HTMLTemplateElement content support\n var hasContent = 'content' in create(document, 'template');\n\n // IE 11 has problems with cloning templates: it \"forgets\" empty childNodes\n testFragment.appendChild(text(testFragment, 'g'));\n testFragment.appendChild(text(testFragment, ''));\n var hasDoomedCloneNode = testFragment.cloneNode(true).childNodes.length === 1;\n\n // old browsers need to fallback to cloneNode\n // Custom Elements V0 and V1 will work polyfilled\n // but native implementations need importNode instead\n // (specially Chromium and its old V0 implementation)\n var hasImportNode = 'importNode' in document;\n\n // appends an array of nodes\n // to a generic node/fragment\n // When available, uses append passing all arguments at once\n // hoping that's somehow faster, even if append has more checks on type\n var append = hasAppend ? function (node, childNodes) {\n node.append.apply(node, childNodes);\n } : function (node, childNodes) {\n var length = childNodes.length;\n for (var i = 0; i < length; i++) {\n node.appendChild(childNodes[i]);\n }\n };\n\n var findAttributes = new RegExp('(' + attrName + '=)([\\'\"]?)' + UIDC + '\\\\2', 'gi');\n var comments = function comments($0, $1, $2, $3) {\n return '<' + $1 + $2.replace(findAttributes, replaceAttributes) + $3;\n };\n var replaceAttributes = function replaceAttributes($0, $1, $2) {\n return $1 + ($2 || '\"') + UID + ($2 || '\"');\n };\n\n // given a node and a generic HTML content,\n // create either an SVG or an HTML fragment\n // where such content will be injected\n var createFragment = function createFragment(node, html) {\n return (OWNER_SVG_ELEMENT in node ? SVGFragment : HTMLFragment)(node, html.replace(attrSeeker, comments));\n };\n\n // IE/Edge shenanigans proof cloneNode\n // it goes through all nodes manually\n // instead of relying the engine to suddenly\n // merge nodes together\n var cloneNode = hasDoomedCloneNode ? function (node) {\n var clone = node.cloneNode();\n var childNodes = node.childNodes ||\n // this is an excess of caution\n // but some node, in IE, might not\n // have childNodes property.\n // The following fallback ensure working code\n // in older IE without compromising performance\n // or any other browser/engine involved.\n /* istanbul ignore next */\n [];\n var length = childNodes.length;\n for (var i = 0; i < length; i++) {\n clone.appendChild(cloneNode(childNodes[i]));\n }\n return clone;\n } :\n // the following ignore is due code-coverage\n // combination of not having document.importNode\n // but having a working node.cloneNode.\n // This shenario is common on older Android/WebKit browsers\n // but basicHTML here tests just two major cases:\n // with document.importNode or with broken cloneNode.\n /* istanbul ignore next */\n function (node) {\n return node.cloneNode(true);\n };\n\n // used to import html into fragments\n var importNode = hasImportNode ? function (doc$$1, node) {\n return doc$$1.importNode(node, true);\n } : function (doc$$1, node) {\n return cloneNode(node);\n };\n\n // just recycling a one-off array to use slice\n // in every needed place\n var slice = [].slice;\n\n // lazy evaluated, returns the unique identity\n // of a template literal, as tempalte literal itself.\n // By default, ES2015 template literals are unique\n // tag`a${1}z` === tag`a${2}z`\n // even if interpolated values are different\n // the template chunks are in a frozen Array\n // that is identical each time you use the same\n // literal to represent same static content\n // around its own interpolations.\n var unique = function unique(template) {\n return _TL(template);\n };\n\n // TL returns a unique version of the template\n // it needs lazy feature detection\n // (cannot trust literals with transpiled code)\n var _TL = function TL(template) {\n if (\n // TypeScript template literals are not standard\n template.propertyIsEnumerable('raw') ||\n // Firefox < 55 has not standard implementation neither\n /Firefox\\/(\\d+)/.test((G.navigator || {}).userAgent) && parseFloat(RegExp.$1) < 55) {\n // in these cases, address templates once\n var templateObjects = {};\n // but always return the same template\n _TL = function TL(template) {\n var key = '_' + template.join(UID);\n return templateObjects[key] || (templateObjects[key] = template);\n };\n } else {\n // make TL an identity like function\n _TL = function TL(template) {\n return template;\n };\n }\n return _TL(template);\n };\n\n // create document fragments via native template\n // with a fallback for browsers that won't be able\n // to deal with some injected element such or others\n var HTMLFragment = hasContent ? function (node, html) {\n var container = create(node, 'template');\n container.innerHTML = html;\n return container.content;\n } : function (node, html) {\n var container = create(node, 'template');\n var content = fragment(node);\n if (/^[^\\S]*?<(col(?:group)?|t(?:head|body|foot|r|d|h))/i.test(html)) {\n var selector = RegExp.$1;\n container.innerHTML = '' + html + '
';\n append(content, slice.call(container.querySelectorAll(selector)));\n } else {\n container.innerHTML = html;\n append(content, slice.call(container.childNodes));\n }\n return content;\n };\n\n // creates SVG fragment with a fallback for IE that needs SVG\n // within the HTML content\n var SVGFragment = hasContent ? function (node, html) {\n var content = fragment(node);\n var container = doc(node).createElementNS(SVG_NAMESPACE, 'svg');\n container.innerHTML = html;\n append(content, slice.call(container.childNodes));\n return content;\n } : function (node, html) {\n var content = fragment(node);\n var container = create(node, 'div');\n container.innerHTML = '' + html + '';\n append(content, slice.call(container.firstChild.childNodes));\n return content;\n };\n\n function Wire(childNodes) {\n this.childNodes = childNodes;\n this.length = childNodes.length;\n this.first = childNodes[0];\n this.last = childNodes[this.length - 1];\n }\n\n // when a wire is inserted, all its nodes will follow\n Wire.prototype.insert = function insert() {\n var df = fragment(this.first);\n append(df, this.childNodes);\n return df;\n };\n\n // when a wire is removed, all its nodes must be removed as well\n Wire.prototype.remove = function remove() {\n var first = this.first;\n var last = this.last;\n if (this.length === 2) {\n last.parentNode.removeChild(last);\n } else {\n var range = doc(first).createRange();\n range.setStartBefore(this.childNodes[1]);\n range.setEndAfter(last);\n range.deleteContents();\n }\n return first;\n };\n\n // every template literal interpolation indicates\n // a precise target in the DOM the template is representing.\n // `

some ${'content'}

`\n // hyperHTML finds only once per template literal,\n // hence once per entire application life-cycle,\n // all nodes that are related to interpolations.\n // These nodes are stored as indexes used to retrieve,\n // once per upgrade, nodes that will change on each future update.\n // A path example is [2, 0, 1] representing the operation:\n // node.childNodes[2].childNodes[0].childNodes[1]\n // Attributes are addressed via their owner node and their name.\n var createPath = function createPath(node) {\n var path = [];\n var parentNode = void 0;\n switch (node.nodeType) {\n case ELEMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE:\n parentNode = node;\n break;\n case COMMENT_NODE:\n parentNode = node.parentNode;\n prepend(path, parentNode, node);\n break;\n default:\n parentNode = node.ownerElement;\n break;\n }\n for (node = parentNode; parentNode = parentNode.parentNode; node = parentNode) {\n prepend(path, parentNode, node);\n }\n return path;\n };\n\n var prepend = function prepend(path, parent, node) {\n path.unshift(path.indexOf.call(parent.childNodes, node));\n };\n\n var Path = {\n create: function create(type, node, name) {\n return { type: type, name: name, node: node, path: createPath(node) };\n },\n find: function find(node, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n node = node.childNodes[path[i]];\n }\n return node;\n }\n };\n\n // from https://github.com/developit/preact/blob/33fc697ac11762a1cb6e71e9847670d047af7ce5/src/constants.js\n var IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n\n // style is handled as both string and object\n // even if the target is an SVG element (consistency)\n var Style = (function (node, original, isSVG) {\n if (isSVG) {\n var style = original.cloneNode(true);\n style.value = '';\n node.setAttributeNode(style);\n return update(style, isSVG);\n }\n return update(node.style, isSVG);\n });\n\n // the update takes care or changing/replacing\n // only properties that are different or\n // in case of string, the whole node\n var update = function update(style, isSVG) {\n var oldType = void 0,\n oldValue = void 0;\n return function (newValue) {\n switch (typeof newValue) {\n case 'object':\n if (newValue) {\n if (oldType === 'object') {\n if (!isSVG) {\n if (oldValue !== newValue) {\n for (var key in oldValue) {\n if (!(key in newValue)) {\n style[key] = '';\n }\n }\n }\n }\n } else {\n if (isSVG) style.value = '';else style.cssText = '';\n }\n var info = isSVG ? {} : style;\n for (var _key in newValue) {\n var value = newValue[_key];\n info[_key] = typeof value === 'number' && !IS_NON_DIMENSIONAL.test(_key) ? value + 'px' : value;\n }\n oldType = 'object';\n if (isSVG) style.value = toStyle(oldValue = info);else oldValue = newValue;\n break;\n }\n default:\n if (oldValue != newValue) {\n oldType = 'string';\n oldValue = newValue;\n if (isSVG) style.value = newValue || '';else style.cssText = newValue || '';\n }\n break;\n }\n };\n };\n\n var hyphen = /([^A-Z])([A-Z]+)/g;\n var ized = function ized($0, $1, $2) {\n return $1 + '-' + $2.toLowerCase();\n };\n var toStyle = function toStyle(object) {\n var css = [];\n for (var key in object) {\n css.push(key.replace(hyphen, ized), ':', object[key], ';');\n }\n return css.join('');\n };\n\n /* AUTOMATICALLY IMPORTED, DO NOT MODIFY */\n /*! (c) 2017 Andrea Giammarchi (ISC) */\n\n /**\n * This code is a revisited port of the snabbdom vDOM diffing logic,\n * the same that fuels as fork Vue.js or other libraries.\n * @credits https://github.com/snabbdom/snabbdom\n */\n\n var identity = function identity(O) {\n return O;\n };\n\n var remove = function remove(parentNode, before, after) {\n var range = parentNode.ownerDocument.createRange();\n range.setStartBefore(before);\n range.setEndAfter(after);\n range.deleteContents();\n };\n\n var domdiff = function domdiff(parentNode, // where changes happen\n currentNodes, // Array of current items/nodes\n futureNodes, // Array of future items/nodes\n getNode, // optional way to retrieve a node from an item\n beforeNode // optional item/node to use as insertBefore delimiter\n ) {\n var get = getNode || identity;\n var before = beforeNode == null ? null : get(beforeNode, 0);\n var currentStart = 0,\n futureStart = 0;\n var currentEnd = currentNodes.length - 1;\n var currentStartNode = currentNodes[0];\n var currentEndNode = currentNodes[currentEnd];\n var futureEnd = futureNodes.length - 1;\n var futureStartNode = futureNodes[0];\n var futureEndNode = futureNodes[futureEnd];\n while (currentStart <= currentEnd && futureStart <= futureEnd) {\n if (currentStartNode == null) {\n currentStartNode = currentNodes[++currentStart];\n } else if (currentEndNode == null) {\n currentEndNode = currentNodes[--currentEnd];\n } else if (futureStartNode == null) {\n futureStartNode = futureNodes[++futureStart];\n } else if (futureEndNode == null) {\n futureEndNode = futureNodes[--futureEnd];\n } else if (currentStartNode == futureStartNode) {\n currentStartNode = currentNodes[++currentStart];\n futureStartNode = futureNodes[++futureStart];\n } else if (currentEndNode == futureEndNode) {\n currentEndNode = currentNodes[--currentEnd];\n futureEndNode = futureNodes[--futureEnd];\n } else if (currentStartNode == futureEndNode) {\n parentNode.insertBefore(get(currentStartNode, 1), get(currentEndNode, -0).nextSibling);\n currentStartNode = currentNodes[++currentStart];\n futureEndNode = futureNodes[--futureEnd];\n } else if (currentEndNode == futureStartNode) {\n parentNode.insertBefore(get(currentEndNode, 1), get(currentStartNode, 0));\n currentEndNode = currentNodes[--currentEnd];\n futureStartNode = futureNodes[++futureStart];\n } else {\n var index = currentNodes.indexOf(futureStartNode);\n if (index < 0) {\n parentNode.insertBefore(get(futureStartNode, 1), get(currentStartNode, 0));\n futureStartNode = futureNodes[++futureStart];\n } else {\n var i = index;\n var f = futureStart;\n while (i <= currentEnd && f <= futureEnd && currentNodes[i] === futureNodes[f]) {\n i++;\n f++;\n }\n if (1 < i - index) {\n if (--index === currentStart) {\n parentNode.removeChild(get(currentStartNode, -1));\n } else {\n remove(parentNode, get(currentStartNode, -1), get(currentNodes[index], -1));\n }\n currentStart = i;\n futureStart = f;\n currentStartNode = currentNodes[i];\n futureStartNode = futureNodes[f];\n } else {\n var el = currentNodes[index];\n currentNodes[index] = null;\n parentNode.insertBefore(get(el, 1), get(currentStartNode, 0));\n futureStartNode = futureNodes[++futureStart];\n }\n }\n }\n }\n if (currentStart <= currentEnd || futureStart <= futureEnd) {\n if (currentStart > currentEnd) {\n var pin = futureNodes[futureEnd + 1];\n var place = pin == null ? before : get(pin, 0);\n if (futureStart === futureEnd) {\n parentNode.insertBefore(get(futureNodes[futureStart], 1), place);\n } else {\n var fragment = parentNode.ownerDocument.createDocumentFragment();\n while (futureStart <= futureEnd) {\n fragment.appendChild(get(futureNodes[futureStart++], 1));\n }\n parentNode.insertBefore(fragment, place);\n }\n } else {\n if (currentNodes[currentStart] == null) currentStart++;\n if (currentStart === currentEnd) {\n parentNode.removeChild(get(currentNodes[currentStart], -1));\n } else {\n remove(parentNode, get(currentNodes[currentStart], -1), get(currentNodes[currentEnd], -1));\n }\n }\n }\n return futureNodes;\n };\n\n // hyper.Component have a connected/disconnected\n // mechanism provided by MutationObserver\n // This weak set is used to recognize components\n // as DOM node that needs to trigger connected/disconnected events\n var components = new WeakSet();\n\n // a basic dictionary used to filter already cached attributes\n // while looking for special hyperHTML values.\n function Cache() {}\n Cache.prototype = Object.create(null);\n\n // returns an intent to explicitly inject content as html\n var asHTML = function asHTML(html) {\n return { html: html };\n };\n\n // returns nodes from wires and components\n var asNode = function asNode(item, i) {\n return 'ELEMENT_NODE' in item ? item : item.constructor === Wire ?\n // in the Wire case, the content can be\n // removed, post-pended, inserted, or pre-pended and\n // all these cases are handled by domdiff already\n /* istanbul ignore next */\n 1 / i < 0 ? i ? item.remove() : item.last : i ? item.insert() : item.first : asNode(item.render(), i);\n };\n\n // returns true if domdiff can handle the value\n var canDiff = function canDiff(value) {\n return 'ELEMENT_NODE' in value || value instanceof Wire || value instanceof Component;\n };\n\n // updates are created once per context upgrade\n // within the main render function (../hyper/render.js)\n // These are an Array of callbacks to invoke passing\n // each interpolation value.\n // Updates can be related to any kind of content,\n // attributes, or special text-only cases such `, headElem.querySelector(\"link\"));\n handleIssues(issuesAndNotes, ghIssues, conf);\n }\n});\n//# sourceMappingURL=issues-notes.js.map;\n", + "define('core/requirements',[\"exports\", \"core/pubsubhub\"], function (exports, _pubsubhub) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.name = undefined;\n exports.run = run;\n const name = exports.name = \"core/requirements\"; // Module core/requirements\n // This module does two things:\n //\n // 1. It finds and marks all requirements. These are elements with class \"req\".\n // When a requirement is found, it is reported using the \"req\" event. This\n // can be used by a containing shell to extract them.\n // Requirements are automatically numbered.\n //\n // 2. It allows referencing requirements by their ID simply using an empty \n // element with its href pointing to the requirement it should be referencing\n // and a class of \"reqRef\".\n function run(conf, doc, cb) {\n $(\".req\").each(function (i) {\n i++;\n var $req = $(this);\n var title = \"Req. \" + i;\n $req.prepend(\"\" + title + \": \");\n });\n\n $(\"a.reqRef\").each(function () {\n var $ref = $(this),\n href = $ref.attr(\"href\"),\n id,\n $req,\n txt;\n if (!href) return;\n id = href.substring(1);\n $req = $(\"#\" + id);\n if ($req.length) {\n txt = $req.find(\"> a\").text();\n } else {\n txt = \"Req. not found '\" + id + \"'\";\n (0, _pubsubhub.pub)(\"error\", \"Requirement not found in element `a.reqRef`: \" + id);\n }\n $ref.text(txt);\n });\n cb();\n }\n});\n//# sourceMappingURL=requirements.js.map;\n", + "\ndefine('deps/text!core/css/bp.css',[],function () { return '/* --- Best Practices --- */\\ndiv.practice {\\n border: solid #bebebe 1px;\\n margin: 2em 1em 1em 2em;\\n}\\n\\nspan.practicelab {\\n margin: 1.5em 0.5em 1em 1em;\\n font-weight: bold;\\n font-style: italic;\\n background: #dfffff;\\n position: relative;\\n padding: 0 0.5em;\\n top: -1.5em;\\n}\\n\\np.practicedesc {\\n margin: 1.5em 0.5em 1em 1em;\\n}\\n\\n@media screen {\\n p.practicedesc {\\n position: relative;\\n top: -2em;\\n padding: 0;\\n margin: 1.5em 0.5em -1em 1em;\\n }\\n}\\n';});\n\n", + "define('core/best-practices',[\"exports\", \"deps/text!core/css/bp.css\", \"core/pubsubhub\", \"deps/hyperhtml\"], function (exports, _bp, _pubsubhub) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.name = undefined;\n exports.run = run;\n\n var _bp2 = _interopRequireDefault(_bp);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n const name = exports.name = \"core/best-practices\"; // Module core/best-practices\n // Handles the marking up of best practices, and can generate a summary of all of them.\n // The summary is generated if there is a section in the document with ID bp-summary.\n // Best practices are marked up with span.practicelab.\n function run() {\n let num = 0;\n const bps = document.querySelectorAll(\"span.practicelab\");\n const ul = document.createElement(\"ul\");\n for (const bp of Array.from(bps)) {\n num++;\n const id = window.$.fn.makeID.call([bp], \"bp\");\n const li = hyperHTML`
  • Best Practice ${num}: ${bp.textContent}
  • `;\n ul.appendChild(li);\n bp.insertBefore(document.createTextNode(`Best Practice ${num}: `), bp.firstChild);\n }\n const bpSummary = document.getElementById(\"bp-summary\");\n if (bps.length) {\n document.head.insertBefore(hyperHTML``, document.head.querySelector(\"link\"));\n if (bpSummary) {\n bpSummary.appendChild(hyperHTML`

    Best Practices Summary

    `);\n bpSummary.appendChild(ul);\n }\n } else if (bpSummary) {\n (0, _pubsubhub.pub)(\"warn\", \"Using best practices summary (#bp-summary) but no best practices found.\");\n bpSummary.remove();\n }\n }\n});\n//# sourceMappingURL=best-practices.js.map;\n", + "define('core/figures',[\"exports\", \"core/pubsubhub\"], function (exports, _pubsubhub) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.name = undefined;\n exports.run = run;\n const name = exports.name = \"core/figures\"; // Module core/figure\n // Handles figures in the document.\n // Adds width and height to images, if they are missing.\n // Generates a Table of Figures wherever there is a #tof element.\n\n function run(conf, doc, cb) {\n normalizeImages(doc);\n // process all figures\n var figMap = {},\n tof = [],\n num = 0;\n $(\"figure\").each(function () {\n var $fig = $(this),\n $cap = $fig.find(\"figcaption\"),\n tit = $cap.text(),\n id = $fig.makeID(\"fig\", tit);\n if (!$cap.length) (0, _pubsubhub.pub)(\"warn\", \"A `
    ` should contain a `
    `.\");\n\n // set proper caption title\n num++;\n $cap.wrapInner($(\"\")).prepend(doc.createTextNode(\" \")).prepend($(\"\" + num + \"\")).prepend(doc.createTextNode(conf.l10n.fig));\n figMap[id] = $cap.contents();\n var $tofCap = $cap.clone();\n $tofCap.find(\"a\").renameElement(\"span\").removeAttr(\"href\");\n tof.push($(\"
  • \").find(\".tocxref\").append($tofCap.contents()).end());\n });\n\n // Update all anchors with empty content that reference a figure ID\n $(\"a[href]\", doc).each(function () {\n var $a = $(this),\n id = $a.attr(\"href\");\n if (!id) return;\n id = id.substring(1);\n if (figMap[id]) {\n $a.addClass(\"fig-ref\");\n if ($a.html() === \"\") {\n const $shortFigDescriptor = figMap[id].slice(0, 2).clone();\n if (!$a[0].hasAttribute(\"title\")) {\n const longFigDescriptor = figMap[id].slice(2).clone().text();\n $a.attr(\"title\", longFigDescriptor.trim());\n }\n $a.append($shortFigDescriptor);\n }\n }\n });\n\n // Create a Table of Figures if a section with id 'tof' exists.\n var $tof = $(\"#tof\", doc);\n if (tof.length && $tof.length) {\n // if it has a parent section, don't touch it\n // if it has a class of appendix or introductory, don't touch it\n // if all the preceding section siblings are introductory, make it introductory\n // if there is a preceding section sibling which is an appendix, make it appendix\n if (!$tof.hasClass(\"appendix\") && !$tof.hasClass(\"introductory\") && !$tof.parents(\"section\").length) {\n if ($tof.prevAll(\"section.introductory\").length === $tof.prevAll(\"section\").length) {\n $tof.addClass(\"introductory\");\n } else if ($tof.prevAll(\"appendix\").length) {\n $tof.addClass(\"appendix\");\n }\n }\n $tof.append($(\"

    \" + conf.l10n.table_of_fig + \"

    \"));\n $tof.append($(\"
      \"));\n var $ul = $tof.find(\"ul\");\n while (tof.length) $ul.append(tof.shift());\n }\n cb();\n }\n\n function normalizeImages(doc) {\n [...doc.querySelectorAll(\":not(picture)>img:not([width]):not([height]):not([srcset])\")].forEach(img => {\n img.height = img.naturalHeight;\n img.width = img.naturalWidth;\n });\n }\n});\n//# sourceMappingURL=figures.js.map;\n", + "\"use strict\";\r\n\r\n(() => {\r\n // These regular expressions use the sticky flag so they will only match at\r\n // the current location (ie. the offset of lastIndex).\r\n const tokenRe = {\r\n // This expression uses a lookahead assertion to catch false matches\r\n // against integers early.\r\n \"float\": /-?(?=[0-9]*\\.|[0-9]+[eE])(([0-9]+\\.[0-9]*|[0-9]*\\.[0-9]+)([Ee][-+]?[0-9]+)?|[0-9]+[Ee][-+]?[0-9]+)/y,\r\n \"integer\": /-?(0([Xx][0-9A-Fa-f]+|[0-7]*)|[1-9][0-9]*)/y,\r\n \"identifier\": /[A-Z_a-z][0-9A-Z_a-z-]*/y,\r\n \"string\": /\"[^\"]*\"/y,\r\n \"whitespace\": /[\\t\\n\\r ]+/y,\r\n \"comment\": /((\\/(\\/.*|\\*([^*]|\\*[^\\/])*\\*\\/)[\\t\\n\\r ]*)+)/y,\r\n \"other\": /[^\\t\\n\\r 0-9A-Z_a-z]/y\r\n };\r\n\r\n function attemptTokenMatch(str, type, lastIndex, tokens) {\r\n const re = tokenRe[type];\r\n re.lastIndex = lastIndex;\r\n const result = re.exec(str);\r\n if (result) {\r\n tokens.push({ type, value: result[0] });\r\n return re.lastIndex;\r\n }\r\n return -1;\r\n }\r\n\r\n function tokenise(str) {\r\n const tokens = [];\r\n let lastIndex = 0;\r\n while (lastIndex < str.length) {\r\n const nextChar = str.charAt(lastIndex);\r\n let result = -1;\r\n if (/[-0-9.]/.test(nextChar)) {\r\n result = attemptTokenMatch(str, \"float\", lastIndex, tokens);\r\n if (result === -1) {\r\n result = attemptTokenMatch(str, \"integer\", lastIndex, tokens);\r\n }\r\n if (result === -1) {\r\n // '-' and '.' can also match \"other\".\r\n result = attemptTokenMatch(str, \"other\", lastIndex, tokens);\r\n }\r\n } else if (/[A-Z_a-z]/.test(nextChar)) {\r\n result = attemptTokenMatch(str, \"identifier\", lastIndex, tokens);\r\n } else if (nextChar === '\"') {\r\n result = attemptTokenMatch(str, \"string\", lastIndex, tokens);\r\n if (result === -1) {\r\n // '\"' can also match \"other\".\r\n result = attemptTokenMatch(str, \"other\", lastIndex, tokens);\r\n }\r\n } else if (/[\\t\\n\\r ]/.test(nextChar)) {\r\n result = attemptTokenMatch(str, \"whitespace\", lastIndex, tokens);\r\n } else if (nextChar === '/') {\r\n result = attemptTokenMatch(str, \"comment\", lastIndex, tokens);\r\n if (result === -1) {\r\n // '/' can also match \"other\".\r\n result = attemptTokenMatch(str, \"other\", lastIndex, tokens);\r\n }\r\n } else {\r\n result = attemptTokenMatch(str, \"other\", lastIndex, tokens);\r\n }\r\n if (result === -1) {\r\n throw new Error(\"Token stream not progressing\");\r\n }\r\n lastIndex = result;\r\n }\r\n return tokens;\r\n }\r\n\r\n class WebIDLParseError {\r\n constructor(str, line, input, tokens) {\r\n this.message = str;\r\n this.line = line;\r\n this.input = input;\r\n this.tokens = tokens;\r\n }\r\n\r\n toString() {\r\n return `${this.message}, line ${this.line} (tokens: '${this.input}')\\n${JSON.stringify(this.tokens, null, 4)}`;\r\n }\r\n }\r\n\r\n function parse(tokens, opt) {\r\n let line = 1;\r\n tokens = tokens.slice();\r\n const names = new Map();\r\n let current = null;\r\n\r\n const FLOAT = \"float\";\r\n const INT = \"integer\";\r\n const ID = \"identifier\";\r\n const STR = \"string\";\r\n const OTHER = \"other\";\r\n\r\n const EMPTY_OPERATION = Object.freeze({\r\n type: \"operation\",\r\n getter: false,\r\n setter: false,\r\n deleter: false,\r\n static: false,\r\n stringifier: false\r\n });\r\n\r\n const EMPTY_IDLTYPE = Object.freeze({\r\n sequence: false,\r\n generic: null,\r\n nullable: false,\r\n union: false,\r\n idlType: null,\r\n extAttrs: []\r\n });\r\n\r\n function error(str) {\r\n let tok = \"\";\r\n let numTokens = 0;\r\n const maxTokens = 5;\r\n while (numTokens < maxTokens && tokens.length > numTokens) {\r\n tok += tokens[numTokens].value;\r\n numTokens++;\r\n }\r\n\r\n let message;\r\n if (current) {\r\n message = `Got an error during or right after parsing \\`${current.partial ? \"partial \" : \"\"}${current.type} ${current.name}\\`: ${str}`\r\n }\r\n else {\r\n // throwing before any valid definition\r\n message = `Got an error before parsing any named definition: ${str}`;\r\n }\r\n\r\n throw new WebIDLParseError(message, line, tok, tokens.slice(0, maxTokens));\r\n }\r\n\r\n function sanitize_name(name, type) {\r\n if (names.has(name)) {\r\n error(`The name \"${name}\" of type \"${names.get(name)}\" is already seen`);\r\n }\r\n names.set(name, type);\r\n return name;\r\n }\r\n\r\n let last_token = null;\r\n\r\n function consume(type, value) {\r\n if (!tokens.length || tokens[0].type !== type) return;\r\n if (typeof value === \"undefined\" || tokens[0].value === value) {\r\n last_token = tokens.shift();\r\n if (type === ID && last_token.value.startsWith('_'))\r\n last_token.value = last_token.value.substring(1);\r\n return last_token;\r\n }\r\n }\r\n\r\n function count(str, char) {\r\n let total = 0;\r\n for (let i = str.indexOf(char); i !== -1; i = str.indexOf(char, i + 1)) {\r\n ++total;\r\n }\r\n return total;\r\n }\r\n\r\n function ws() {\r\n if (!tokens.length) return;\r\n if (tokens[0].type === \"whitespace\" || tokens[0].type === \"comment\") {\r\n const t = tokens.shift();\r\n line += count(t.value, '\\n');\r\n return t;\r\n }\r\n }\r\n\r\n const all_ws_re = {\r\n \"ws\": /([\\t\\n\\r ]+)/y,\r\n \"line-comment\": /\\/\\/(.*)\\r?\\n?/y,\r\n \"multiline-comment\": /\\/\\*((?:[^*]|\\*[^/])*)\\*\\//y\r\n };\r\n function all_ws(store, pea) { // pea == post extended attribute, tpea = same for types\r\n const t = { type: \"whitespace\", value: \"\" };\r\n while (true) {\r\n const w = ws();\r\n if (!w) break;\r\n t.value += w.value;\r\n }\r\n if (t.value.length > 0) {\r\n if (store) {\r\n let w = t.value;\r\n let lastIndex = 0;\r\n while (lastIndex < w.length) {\r\n let matched = false;\r\n // Servo doesn't support using \"const\" in this construction yet.\r\n // See https://github.com/servo/servo/issues/20231.\r\n // |type| can be made const once Servo supports it.\r\n for (let type in all_ws_re) {\r\n const re = all_ws_re[type];\r\n re.lastIndex = lastIndex;\r\n const result = re.exec(w);\r\n if (result) {\r\n store.push({ type: type + (pea ? (\"-\" + pea) : \"\"), value: result[1] });\r\n matched = true;\r\n lastIndex = re.lastIndex;\r\n break;\r\n }\r\n }\r\n if (!matched)\r\n throw new Error(\"Surprising white space construct.\"); // this shouldn't happen\r\n }\r\n }\r\n return t;\r\n }\r\n }\r\n\r\n function integer_type() {\r\n let ret = \"\";\r\n all_ws();\r\n if (consume(ID, \"unsigned\")) ret = \"unsigned \";\r\n all_ws();\r\n if (consume(ID, \"short\")) return ret + \"short\";\r\n if (consume(ID, \"long\")) {\r\n ret += \"long\";\r\n all_ws();\r\n if (consume(ID, \"long\")) return ret + \" long\";\r\n return ret;\r\n }\r\n if (ret) error(\"Failed to parse integer type\");\r\n }\r\n\r\n function float_type() {\r\n let ret = \"\";\r\n all_ws();\r\n if (consume(ID, \"unrestricted\")) ret = \"unrestricted \";\r\n all_ws();\r\n if (consume(ID, \"float\")) return ret + \"float\";\r\n if (consume(ID, \"double\")) return ret + \"double\";\r\n if (ret) error(\"Failed to parse float type\");\r\n }\r\n\r\n function primitive_type() {\r\n const num_type = integer_type() || float_type();\r\n if (num_type) return num_type;\r\n all_ws();\r\n if (consume(ID, \"boolean\")) return \"boolean\";\r\n if (consume(ID, \"byte\")) return \"byte\";\r\n if (consume(ID, \"octet\")) return \"octet\";\r\n }\r\n\r\n function const_value() {\r\n if (consume(ID, \"true\")) return { type: \"boolean\", value: true };\r\n if (consume(ID, \"false\")) return { type: \"boolean\", value: false };\r\n if (consume(ID, \"null\")) return { type: \"null\" };\r\n if (consume(ID, \"Infinity\")) return { type: \"Infinity\", negative: false };\r\n if (consume(ID, \"NaN\")) return { type: \"NaN\" };\r\n const ret = consume(FLOAT) || consume(INT);\r\n if (ret) return { type: \"number\", value: ret.value };\r\n const tok = consume(OTHER, \"-\");\r\n if (tok) {\r\n if (consume(ID, \"Infinity\")) return { type: \"Infinity\", negative: true };\r\n else tokens.unshift(tok);\r\n }\r\n }\r\n\r\n function type_suffix(obj) {\r\n while (true) {\r\n all_ws();\r\n if (consume(OTHER, \"?\")) {\r\n if (obj.nullable) error(\"Can't nullable more than once\");\r\n obj.nullable = true;\r\n } else return;\r\n }\r\n }\r\n\r\n function single_type(typeName) {\r\n const prim = primitive_type();\r\n const ret = Object.assign({ type: typeName || null }, EMPTY_IDLTYPE);\r\n let name;\r\n let value;\r\n if (prim) {\r\n ret.idlType = prim;\r\n } else if (name = consume(ID)) {\r\n value = name.value;\r\n all_ws();\r\n // Generic types\r\n if (consume(OTHER, \"<\")) {\r\n // backwards compat\r\n if (value === \"sequence\") {\r\n ret.sequence = true;\r\n }\r\n ret.generic = value;\r\n const types = [];\r\n do {\r\n all_ws();\r\n types.push(type_with_extended_attributes(typeName) || error(\"Error parsing generic type \" + value));\r\n all_ws();\r\n }\r\n while (consume(OTHER, \",\"));\r\n if (value === \"sequence\") {\r\n if (types.length !== 1) error(\"A sequence must have exactly one subtype\");\r\n } else if (value === \"record\") {\r\n if (types.length !== 2) error(\"A record must have exactly two subtypes\");\r\n if (!/^(DOMString|USVString|ByteString)$/.test(types[0].idlType)) {\r\n error(\"Record key must be DOMString, USVString, or ByteString\");\r\n }\r\n if (types[0].extAttrs.length) error(\"Record key cannot have extended attribute\");\r\n } else if (value === \"Promise\") {\r\n if (types[0].extAttrs.length) error(\"Promise type cannot have extended attribute\");\r\n }\r\n ret.idlType = types.length === 1 ? types[0] : types;\r\n all_ws();\r\n if (!consume(OTHER, \">\")) error(\"Unterminated generic type \" + value);\r\n type_suffix(ret);\r\n return ret;\r\n } else {\r\n ret.idlType = value;\r\n }\r\n } else {\r\n return;\r\n }\r\n type_suffix(ret);\r\n if (ret.nullable && ret.idlType === \"any\") error(\"Type any cannot be made nullable\");\r\n return ret;\r\n }\r\n\r\n function union_type(typeName) {\r\n all_ws();\r\n if (!consume(OTHER, \"(\")) return;\r\n const ret = Object.assign({ type: typeName || null }, EMPTY_IDLTYPE, { union: true, idlType: [] });\r\n const fst = type_with_extended_attributes() || error(\"Union type with no content\");\r\n ret.idlType.push(fst);\r\n while (true) {\r\n all_ws();\r\n if (!consume(ID, \"or\")) break;\r\n const typ = type_with_extended_attributes() || error(\"No type after 'or' in union type\");\r\n ret.idlType.push(typ);\r\n }\r\n if (!consume(OTHER, \")\")) error(\"Unterminated union type\");\r\n type_suffix(ret);\r\n return ret;\r\n }\r\n\r\n function type(typeName) {\r\n return single_type(typeName) || union_type(typeName);\r\n }\r\n\r\n function type_with_extended_attributes(typeName) {\r\n const extAttrs = extended_attrs();\r\n const ret = single_type(typeName) || union_type(typeName);\r\n if (extAttrs.length && ret) ret.extAttrs = extAttrs;\r\n return ret;\r\n }\r\n\r\n function argument(store) {\r\n const ret = { optional: false, variadic: false };\r\n ret.extAttrs = extended_attrs(store);\r\n all_ws(store, \"pea\");\r\n const opt_token = consume(ID, \"optional\");\r\n if (opt_token) {\r\n ret.optional = true;\r\n all_ws();\r\n }\r\n ret.idlType = type_with_extended_attributes(\"argument-type\");\r\n if (!ret.idlType) {\r\n if (opt_token) tokens.unshift(opt_token);\r\n return;\r\n }\r\n const type_token = last_token;\r\n if (!ret.optional) {\r\n all_ws();\r\n if (tokens.length >= 3 &&\r\n tokens[0].type === \"other\" && tokens[0].value === \".\" &&\r\n tokens[1].type === \"other\" && tokens[1].value === \".\" &&\r\n tokens[2].type === \"other\" && tokens[2].value === \".\"\r\n ) {\r\n tokens.shift();\r\n tokens.shift();\r\n tokens.shift();\r\n ret.variadic = true;\r\n }\r\n }\r\n all_ws();\r\n const name = consume(ID);\r\n if (!name) {\r\n if (opt_token) tokens.unshift(opt_token);\r\n tokens.unshift(type_token);\r\n return;\r\n }\r\n ret.name = name.value;\r\n if (ret.optional) {\r\n all_ws();\r\n const dflt = default_();\r\n if (typeof dflt !== \"undefined\") {\r\n ret[\"default\"] = dflt;\r\n }\r\n }\r\n return ret;\r\n }\r\n\r\n function argument_list(store) {\r\n const ret = [];\r\n const arg = argument(store ? ret : null);\r\n if (!arg) return ret;\r\n ret.push(arg);\r\n while (true) {\r\n all_ws(store ? ret : null);\r\n if (!consume(OTHER, \",\")) return ret;\r\n const nxt = argument(store ? ret : null) || error(\"Trailing comma in arguments list\");\r\n ret.push(nxt);\r\n }\r\n }\r\n\r\n function simple_extended_attr(store) {\r\n all_ws();\r\n const name = consume(ID);\r\n if (!name) return;\r\n const ret = {\r\n name: name.value,\r\n arguments: null,\r\n type: \"extended-attribute\",\r\n rhs: null\r\n };\r\n all_ws();\r\n const eq = consume(OTHER, \"=\");\r\n if (eq) {\r\n all_ws();\r\n ret.rhs = consume(ID) ||\r\n consume(FLOAT) ||\r\n consume(INT) ||\r\n consume(STR);\r\n }\r\n all_ws();\r\n if (consume(OTHER, \"(\")) {\r\n if (eq && !ret.rhs) {\r\n // [Exposed=(Window,Worker)]\r\n ret.rhs = {\r\n type: \"identifier-list\",\r\n value: identifiers()\r\n };\r\n }\r\n else {\r\n // [NamedConstructor=Audio(DOMString src)] or [Constructor(DOMString str)]\r\n ret.arguments = argument_list(store);\r\n }\r\n all_ws();\r\n consume(OTHER, \")\") || error(\"Unexpected token in extended attribute argument list\");\r\n }\r\n if (eq && !ret.rhs) error(\"No right hand side to extended attribute assignment\");\r\n return ret;\r\n }\r\n\r\n // Note: we parse something simpler than the official syntax. It's all that ever\r\n // seems to be used\r\n function extended_attrs(store) {\r\n const eas = [];\r\n all_ws(store);\r\n if (!consume(OTHER, \"[\")) return eas;\r\n eas[0] = simple_extended_attr(store) || error(\"Extended attribute with not content\");\r\n all_ws();\r\n while (consume(OTHER, \",\")) {\r\n eas.push(simple_extended_attr(store) || error(\"Trailing comma in extended attribute\"));\r\n }\r\n all_ws();\r\n consume(OTHER, \"]\") || error(\"No end of extended attribute\");\r\n return eas;\r\n }\r\n\r\n function default_() {\r\n all_ws();\r\n if (consume(OTHER, \"=\")) {\r\n all_ws();\r\n const def = const_value();\r\n if (def) {\r\n return def;\r\n } else if (consume(OTHER, \"[\")) {\r\n if (!consume(OTHER, \"]\")) error(\"Default sequence value must be empty\");\r\n return { type: \"sequence\", value: [] };\r\n } else {\r\n const str = consume(STR) || error(\"No value for default\");\r\n str.value = str.value.slice(1, -1);\r\n return str;\r\n }\r\n }\r\n }\r\n\r\n function const_(store) {\r\n all_ws(store, \"pea\");\r\n if (!consume(ID, \"const\")) return;\r\n const ret = { type: \"const\", nullable: false };\r\n all_ws();\r\n let typ = primitive_type();\r\n if (!typ) {\r\n typ = consume(ID) || error(\"No type for const\");\r\n typ = typ.value;\r\n }\r\n ret.idlType = Object.assign({ type: \"const-type\" }, EMPTY_IDLTYPE, { idlType: typ });\r\n all_ws();\r\n if (consume(OTHER, \"?\")) {\r\n ret.nullable = true;\r\n all_ws();\r\n }\r\n const name = consume(ID) || error(\"No name for const\");\r\n ret.name = name.value;\r\n all_ws();\r\n consume(OTHER, \"=\") || error(\"No value assignment for const\");\r\n all_ws();\r\n const cnt = const_value();\r\n if (cnt) ret.value = cnt;\r\n else error(\"No value for const\");\r\n all_ws();\r\n consume(OTHER, \";\") || error(\"Unterminated const\");\r\n return ret;\r\n }\r\n\r\n function inheritance() {\r\n all_ws();\r\n if (consume(OTHER, \":\")) {\r\n all_ws();\r\n const inh = consume(ID) || error(\"No type in inheritance\");\r\n return inh.value;\r\n }\r\n }\r\n\r\n function operation_rest(ret, store) {\r\n all_ws();\r\n if (!ret) ret = {};\r\n const name = consume(ID);\r\n ret.name = name ? name.value : null;\r\n all_ws();\r\n consume(OTHER, \"(\") || error(\"Invalid operation\");\r\n ret.arguments = argument_list(store);\r\n all_ws();\r\n consume(OTHER, \")\") || error(\"Unterminated operation\");\r\n all_ws();\r\n consume(OTHER, \";\") || error(\"Unterminated operation\");\r\n return ret;\r\n }\r\n\r\n function callback(store) {\r\n all_ws(store, \"pea\");\r\n let ret;\r\n if (!consume(ID, \"callback\")) return;\r\n all_ws();\r\n const tok = consume(ID, \"interface\");\r\n if (tok) {\r\n ret = interface_rest(false, store, \"callback interface\");\r\n return ret;\r\n }\r\n const name = consume(ID) || error(\"No name for callback\");\r\n ret = current = { type: \"callback\", name: sanitize_name(name.value, \"callback\") };\r\n all_ws();\r\n consume(OTHER, \"=\") || error(\"No assignment in callback\");\r\n all_ws();\r\n ret.idlType = return_type();\r\n all_ws();\r\n consume(OTHER, \"(\") || error(\"No arguments in callback\");\r\n ret.arguments = argument_list(store);\r\n all_ws();\r\n consume(OTHER, \")\") || error(\"Unterminated callback\");\r\n all_ws();\r\n consume(OTHER, \";\") || error(\"Unterminated callback\");\r\n return ret;\r\n }\r\n\r\n function attribute(store) {\r\n all_ws(store, \"pea\");\r\n const grabbed = [];\r\n const ret = {\r\n type: \"attribute\",\r\n static: false,\r\n stringifier: false,\r\n inherit: false,\r\n readonly: false\r\n };\r\n const w = all_ws();\r\n if (w) grabbed.push(w);\r\n if (consume(ID, \"inherit\")) {\r\n if (ret.static || ret.stringifier) error(\"Cannot have a static or stringifier inherit\");\r\n ret.inherit = true;\r\n grabbed.push(last_token);\r\n const w = all_ws();\r\n if (w) grabbed.push(w);\r\n }\r\n if (consume(ID, \"readonly\")) {\r\n ret.readonly = true;\r\n grabbed.push(last_token);\r\n const w = all_ws();\r\n if (w) grabbed.push(w);\r\n }\r\n const rest = attribute_rest(ret);\r\n if (!rest) {\r\n tokens = grabbed.concat(tokens);\r\n }\r\n return rest;\r\n }\r\n\r\n function attribute_rest(ret) {\r\n if (!consume(ID, \"attribute\")) {\r\n return;\r\n }\r\n all_ws();\r\n ret.idlType = type_with_extended_attributes(\"attribute-type\") || error(\"No type in attribute\");\r\n if (ret.idlType.sequence) error(\"Attributes cannot accept sequence types\");\r\n if (ret.idlType.generic === \"record\") error(\"Attributes cannot accept record types\");\r\n all_ws();\r\n const name = consume(ID) || error(\"No name in attribute\");\r\n ret.name = name.value;\r\n all_ws();\r\n consume(OTHER, \";\") || error(\"Unterminated attribute\");\r\n return ret;\r\n }\r\n\r\n function return_type() {\r\n const typ = type(\"return-type\");\r\n if (!typ) {\r\n if (consume(ID, \"void\")) {\r\n return \"void\";\r\n } else error(\"No return type\");\r\n }\r\n return typ;\r\n }\r\n\r\n function operation(store) {\r\n all_ws(store, \"pea\");\r\n const ret = Object.assign({}, EMPTY_OPERATION);\r\n while (true) {\r\n all_ws();\r\n if (consume(ID, \"getter\")) ret.getter = true;\r\n else if (consume(ID, \"setter\")) ret.setter = true;\r\n else if (consume(ID, \"deleter\")) ret.deleter = true;\r\n else break;\r\n }\r\n if (ret.getter || ret.setter || ret.deleter) {\r\n all_ws();\r\n ret.idlType = return_type();\r\n operation_rest(ret, store);\r\n return ret;\r\n }\r\n ret.idlType = return_type();\r\n all_ws();\r\n operation_rest(ret, store);\r\n return ret;\r\n }\r\n\r\n function static_member(store) {\r\n all_ws(store, \"pea\");\r\n if (!consume(ID, \"static\")) return;\r\n all_ws();\r\n return noninherited_attribute(store, \"static\") ||\r\n regular_operation(store, \"static\") ||\r\n error(\"No body in static member\");\r\n }\r\n\r\n function stringifier(store) {\r\n all_ws(store, \"pea\");\r\n if (!consume(ID, \"stringifier\")) return;\r\n all_ws();\r\n if (consume(OTHER, \";\")) {\r\n return Object.assign({}, EMPTY_OPERATION, { stringifier: true });\r\n }\r\n return noninherited_attribute(store, \"stringifier\") ||\r\n regular_operation(store, \"stringifier\") ||\r\n error(\"Unterminated stringifier\");\r\n }\r\n\r\n function identifiers() {\r\n const arr = [];\r\n const id = consume(ID);\r\n if (id) {\r\n arr.push(id.value);\r\n }\r\n else error(\"Expected identifiers but not found\");\r\n while (true) {\r\n all_ws();\r\n if (consume(OTHER, \",\")) {\r\n all_ws();\r\n const name = consume(ID) || error(\"Trailing comma in identifiers list\");\r\n arr.push(name.value);\r\n } else break;\r\n }\r\n return arr;\r\n }\r\n\r\n function iterable_type() {\r\n if (consume(ID, \"iterable\")) return \"iterable\";\r\n else if (consume(ID, \"legacyiterable\")) return \"legacyiterable\";\r\n else if (consume(ID, \"maplike\")) return \"maplike\";\r\n else if (consume(ID, \"setlike\")) return \"setlike\";\r\n else return;\r\n }\r\n\r\n function readonly_iterable_type() {\r\n if (consume(ID, \"maplike\")) return \"maplike\";\r\n else if (consume(ID, \"setlike\")) return \"setlike\";\r\n else return;\r\n }\r\n\r\n function iterable(store) {\r\n all_ws(store, \"pea\");\r\n const grabbed = [];\r\n const ret = { type: null, idlType: null, readonly: false };\r\n if (consume(ID, \"readonly\")) {\r\n ret.readonly = true;\r\n grabbed.push(last_token);\r\n var w = all_ws();\r\n if (w) grabbed.push(w);\r\n }\r\n const consumeItType = ret.readonly ? readonly_iterable_type : iterable_type;\r\n\r\n const ittype = consumeItType();\r\n if (!ittype) {\r\n tokens = grabbed.concat(tokens);\r\n return;\r\n }\r\n\r\n const secondTypeRequired = ittype === \"maplike\";\r\n const secondTypeAllowed = secondTypeRequired || ittype === \"iterable\";\r\n ret.type = ittype;\r\n if (ret.type !== 'maplike' && ret.type !== 'setlike')\r\n delete ret.readonly;\r\n all_ws();\r\n if (consume(OTHER, \"<\")) {\r\n ret.idlType = [type_with_extended_attributes()] || error(`Error parsing ${ittype} declaration`);\r\n all_ws();\r\n if (secondTypeAllowed) {\r\n if (consume(OTHER, \",\")) {\r\n all_ws();\r\n ret.idlType.push(type_with_extended_attributes());\r\n all_ws();\r\n }\r\n else if (secondTypeRequired)\r\n error(`Missing second type argument in ${ittype} declaration`);\r\n }\r\n if (!consume(OTHER, \">\")) error(`Unterminated ${ittype} declaration`);\r\n all_ws();\r\n if (!consume(OTHER, \";\")) error(`Missing semicolon after ${ittype} declaration`);\r\n } else\r\n error(`Error parsing ${ittype} declaration`);\r\n\r\n return ret;\r\n }\r\n\r\n function interface_rest(isPartial, store, typeName = \"interface\") {\r\n all_ws();\r\n const name = consume(ID) || error(\"No name for interface\");\r\n const mems = [];\r\n const ret = current = {\r\n type: typeName,\r\n name: isPartial ? name.value : sanitize_name(name.value, \"interface\"),\r\n partial: isPartial,\r\n members: mems\r\n };\r\n if (!isPartial) ret.inheritance = inheritance() || null;\r\n all_ws();\r\n consume(OTHER, \"{\") || error(\"Bodyless interface\");\r\n while (true) {\r\n all_ws(store ? mems : null);\r\n if (consume(OTHER, \"}\")) {\r\n all_ws();\r\n consume(OTHER, \";\") || error(\"Missing semicolon after interface\");\r\n return ret;\r\n }\r\n const ea = extended_attrs(store ? mems : null);\r\n all_ws();\r\n const cnt = const_(store ? mems : null);\r\n if (cnt) {\r\n cnt.extAttrs = ea;\r\n ret.members.push(cnt);\r\n continue;\r\n }\r\n const mem = (opt.allowNestedTypedefs && typedef(store ? mems : null)) ||\r\n static_member(store ? mems : null) ||\r\n stringifier(store ? mems : null) ||\r\n iterable(store ? mems : null) ||\r\n attribute(store ? mems : null) ||\r\n operation(store ? mems : null) ||\r\n error(\"Unknown member\");\r\n mem.extAttrs = ea;\r\n ret.members.push(mem);\r\n }\r\n }\r\n\r\n function mixin_rest(isPartial, store) {\r\n all_ws();\r\n if (!consume(ID, \"mixin\")) return;\r\n all_ws();\r\n const name = consume(ID) || error(\"No name for interface mixin\");\r\n const mems = [];\r\n const ret = current = {\r\n type: \"interface mixin\",\r\n name: isPartial ? name.value : sanitize_name(name.value, \"interface mixin\"),\r\n partial: isPartial,\r\n members: mems\r\n };\r\n all_ws();\r\n consume(OTHER, \"{\") || error(\"Bodyless interface mixin\");\r\n while (true) {\r\n all_ws(store ? mems : null);\r\n if (consume(OTHER, \"}\")) {\r\n all_ws();\r\n consume(OTHER, \";\") || error(\"Missing semicolon after interface mixin\");\r\n return ret;\r\n }\r\n const ea = extended_attrs(store ? mems : null);\r\n all_ws();\r\n const cnt = const_(store ? mems : null);\r\n if (cnt) {\r\n cnt.extAttrs = ea;\r\n ret.members.push(cnt);\r\n continue;\r\n }\r\n const mem = stringifier(store ? mems : null) ||\r\n noninherited_attribute(store ? mems : null) ||\r\n regular_operation(store ? mems : null) ||\r\n error(\"Unknown member\");\r\n mem.extAttrs = ea;\r\n ret.members.push(mem);\r\n }\r\n }\r\n\r\n function interface_(isPartial, store) {\r\n all_ws(isPartial ? null : store, \"pea\");\r\n if (!consume(ID, \"interface\")) return;\r\n return mixin_rest(isPartial, store) ||\r\n interface_rest(isPartial, store) ||\r\n error(\"Interface has no proper body\");\r\n }\r\n\r\n function namespace(isPartial, store) {\r\n all_ws(isPartial ? null : store, \"pea\");\r\n if (!consume(ID, \"namespace\")) return;\r\n all_ws();\r\n const name = consume(ID) || error(\"No name for namespace\");\r\n const mems = [];\r\n const ret = current = {\r\n type: \"namespace\",\r\n name: isPartial ? name.value : sanitize_name(name.value, \"namespace\"),\r\n partial: isPartial,\r\n members: mems\r\n };\r\n all_ws();\r\n consume(OTHER, \"{\") || error(\"Bodyless namespace\");\r\n while (true) {\r\n all_ws(store ? mems : null);\r\n if (consume(OTHER, \"}\")) {\r\n all_ws();\r\n consume(OTHER, \";\") || error(\"Missing semicolon after namespace\");\r\n return ret;\r\n }\r\n const ea = extended_attrs(store ? mems : null);\r\n all_ws();\r\n const mem = noninherited_attribute(store ? mems : null) ||\r\n regular_operation(store ? mems : null) ||\r\n error(\"Unknown member\");\r\n mem.extAttrs = ea;\r\n ret.members.push(mem);\r\n }\r\n }\r\n\r\n function noninherited_attribute(store, prefix) {\r\n const w = all_ws(store, \"pea\");\r\n const grabbed = [];\r\n const ret = {\r\n type: \"attribute\",\r\n static: false,\r\n stringifier: false,\r\n inherit: false,\r\n readonly: false\r\n };\r\n if (prefix) {\r\n ret[prefix] = true;\r\n }\r\n if (w) grabbed.push(w);\r\n if (consume(ID, \"readonly\")) {\r\n ret.readonly = true;\r\n grabbed.push(last_token);\r\n const w = all_ws();\r\n if (w) grabbed.push(w);\r\n }\r\n const rest = attribute_rest(ret);\r\n if (!rest) {\r\n tokens = grabbed.concat(tokens);\r\n }\r\n return rest;\r\n }\r\n\r\n function regular_operation(store, prefix) {\r\n all_ws(store, \"pea\");\r\n const ret = Object.assign({}, EMPTY_OPERATION);\r\n if (prefix) {\r\n ret[prefix] = true;\r\n }\r\n ret.idlType = return_type();\r\n return operation_rest(ret, store);\r\n }\r\n\r\n function partial(store) {\r\n all_ws(store, \"pea\");\r\n if (!consume(ID, \"partial\")) return;\r\n const thing = dictionary(true, store) ||\r\n interface_(true, store) ||\r\n namespace(true, store) ||\r\n error(\"Partial doesn't apply to anything\");\r\n return thing;\r\n }\r\n\r\n function dictionary(isPartial, store) {\r\n all_ws(isPartial ? null : store, \"pea\");\r\n if (!consume(ID, \"dictionary\")) return;\r\n all_ws();\r\n const name = consume(ID) || error(\"No name for dictionary\");\r\n const mems = [];\r\n const ret = current = {\r\n type: \"dictionary\",\r\n name: isPartial ? name.value : sanitize_name(name.value, \"dictionary\"),\r\n partial: isPartial,\r\n members: mems\r\n };\r\n if (!isPartial) ret.inheritance = inheritance() || null;\r\n all_ws();\r\n consume(OTHER, \"{\") || error(\"Bodyless dictionary\");\r\n while (true) {\r\n all_ws(store ? mems : null);\r\n if (consume(OTHER, \"}\")) {\r\n all_ws();\r\n consume(OTHER, \";\") || error(\"Missing semicolon after dictionary\");\r\n return ret;\r\n }\r\n const ea = extended_attrs(store ? mems : null);\r\n all_ws(store ? mems : null, \"pea\");\r\n const required = consume(ID, \"required\");\r\n const typ = type_with_extended_attributes(\"dictionary-type\") || error(\"No type for dictionary member\");\r\n all_ws();\r\n const name = consume(ID) || error(\"No name for dictionary member\");\r\n const dflt = default_();\r\n if (required && dflt) error(\"Required member must not have a default\");\r\n const member = {\r\n type: \"field\",\r\n name: name.value,\r\n required: !!required,\r\n idlType: typ,\r\n extAttrs: ea\r\n };\r\n if (typeof dflt !== \"undefined\") {\r\n member[\"default\"] = dflt;\r\n }\r\n ret.members.push(member);\r\n all_ws();\r\n consume(OTHER, \";\") || error(\"Unterminated dictionary member\");\r\n }\r\n }\r\n\r\n function enum_(store) {\r\n all_ws(store, \"pea\");\r\n if (!consume(ID, \"enum\")) return;\r\n all_ws();\r\n const name = consume(ID) || error(\"No name for enum\");\r\n const vals = [];\r\n const ret = current = {\r\n type: \"enum\",\r\n name: sanitize_name(name.value, \"enum\"),\r\n values: vals\r\n };\r\n all_ws();\r\n consume(OTHER, \"{\") || error(\"No curly for enum\");\r\n let saw_comma = false;\r\n while (true) {\r\n all_ws(store ? vals : null);\r\n if (consume(OTHER, \"}\")) {\r\n all_ws();\r\n consume(OTHER, \";\") || error(\"No semicolon after enum\");\r\n return ret;\r\n }\r\n const val = consume(STR) || error(\"Unexpected value in enum\");\r\n val.value = val.value.slice(1, -1);\r\n ret.values.push(val);\r\n all_ws(store ? vals : null);\r\n if (consume(OTHER, \",\")) {\r\n if (store) vals.push({ type: \",\" });\r\n all_ws(store ? vals : null);\r\n saw_comma = true;\r\n } else {\r\n saw_comma = false;\r\n }\r\n }\r\n }\r\n\r\n function typedef(store) {\r\n all_ws(store, \"pea\");\r\n if (!consume(ID, \"typedef\")) return;\r\n const ret = {\r\n type: \"typedef\"\r\n };\r\n all_ws();\r\n ret.idlType = type_with_extended_attributes(\"typedef-type\") || error(\"No type in typedef\");\r\n all_ws();\r\n const name = consume(ID) || error(\"No name in typedef\");\r\n ret.name = sanitize_name(name.value, \"typedef\");\r\n current = ret;\r\n all_ws();\r\n consume(OTHER, \";\") || error(\"Unterminated typedef\");\r\n return ret;\r\n }\r\n\r\n function implements_(store) {\r\n all_ws(store, \"pea\");\r\n const target = consume(ID);\r\n if (!target) return;\r\n const w = all_ws();\r\n if (consume(ID, \"implements\")) {\r\n const ret = {\r\n type: \"implements\",\r\n target: target.value\r\n };\r\n all_ws();\r\n const imp = consume(ID) || error(\"Incomplete implements statement\");\r\n ret[\"implements\"] = imp.value;\r\n all_ws();\r\n consume(OTHER, \";\") || error(\"No terminating ; for implements statement\");\r\n return ret;\r\n } else {\r\n // rollback\r\n if (w)\r\n tokens.unshift(w);\r\n tokens.unshift(target);\r\n }\r\n }\r\n\r\n function includes(store) {\r\n all_ws(store, \"pea\");\r\n const target = consume(ID);\r\n if (!target) return;\r\n const w = all_ws();\r\n if (consume(ID, \"includes\")) {\r\n const ret = {\r\n type: \"includes\",\r\n target: target.value\r\n };\r\n all_ws();\r\n const imp = consume(ID) || error(\"Incomplete includes statement\");\r\n ret[\"includes\"] = imp.value;\r\n all_ws();\r\n consume(OTHER, \";\") || error(\"No terminating ; for includes statement\");\r\n return ret;\r\n } else {\r\n // rollback\r\n if (w)\r\n tokens.unshift(w);\r\n tokens.unshift(target);\r\n }\r\n }\r\n\r\n function definition(store) {\r\n return callback(store) ||\r\n interface_(false, store) ||\r\n partial(store) ||\r\n dictionary(false, store) ||\r\n enum_(store) ||\r\n typedef(store) ||\r\n implements_(store) ||\r\n includes(store) ||\r\n namespace(false, store);\r\n }\r\n\r\n function definitions(store) {\r\n if (!tokens.length) return [];\r\n const defs = [];\r\n while (true) {\r\n const ea = extended_attrs(store ? defs : null);\r\n const def = definition(store ? defs : null);\r\n if (!def) {\r\n if (ea.length) error(\"Stray extended attributes\");\r\n break;\r\n }\r\n def.extAttrs = ea;\r\n defs.push(def);\r\n }\r\n return defs;\r\n }\r\n const res = definitions(opt.ws);\r\n if (tokens.length) error(\"Unrecognised tokens\");\r\n return res;\r\n }\r\n\r\n const obj = {\r\n parse(str, opt) {\r\n if (!opt) opt = {};\r\n const tokens = tokenise(str);\r\n return parse(tokens, opt);\r\n }\r\n };\r\n\r\n if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = obj;\r\n } else if (typeof define === 'function' && define.amd) {\r\n define('deps/webidl2',[], () => obj);\r\n } else {\r\n (self || window).WebIDL2 = obj;\r\n }\r\n})();\r\n\n", + "\ndefine('deps/text!core/css/webidl.css',[],function () { return '/* --- WEB IDL --- */\\n\\npre.idl {\\n padding: 1em;\\n}\\n\\n.respec-idl-separator {\\n padding: 0 0 0.4cm 0;\\n}\\n\\n.respec-idl-separator:last-child {\\n padding: 0;\\n}\\n\\n@media print {\\n pre.idl {\\n white-space: pre-wrap;\\n }\\n}\\n\\npre.idl::before {\\n content: \"WebIDL\";\\n display: block;\\n width: 150px;\\n background: #90b8de;\\n color: #fff;\\n font-family: sans-serif;\\n font-weight: bold;\\n margin: -1em 0 1em -1em;\\n height: 28px;\\n line-height: 28px; \\n}\\n\\n.idlType {\\n color: #ff4500;\\n font-weight: bold;\\n text-decoration: none;\\n}\\n\\n\\n/*.idlModule*/\\n\\n\\n/*.idlModuleID*/\\n\\n\\n/*.idlInterface*/\\n\\n.idlInterfaceID,\\n.idlDictionaryID,\\n.idlCallbackID,\\n.idlEnumID {\\n font-weight: bold;\\n color: #005a9c;\\n}\\n\\na.idlEnumItem {\\n color: #000;\\n border-bottom: 1px dotted #ccc;\\n text-decoration: none;\\n}\\n\\n.idlSuperclass {\\n font-style: italic;\\n color: #005a9c;\\n}\\n\\n\\n/*.idlAttribute*/\\n\\n.idlAttrType,\\n.idlFieldType,\\n.idlMemberType {\\n color: #005a9c;\\n}\\n\\n.idlAttrName,\\n.idlFieldName,\\n.idlMemberName {\\n color: #ff4500;\\n}\\n\\n.idlAttrName a,\\n.idlFieldName a,\\n.idlMemberName a {\\n color: #ff4500;\\n border-bottom: 1px dotted #ff4500;\\n text-decoration: none;\\n}\\n\\n\\n/*.idlMethod*/\\n\\n.idlMethType,\\n.idlCallbackType {\\n color: #005a9c;\\n}\\n\\n.idlMethName {\\n color: #ff4500;\\n}\\n\\n.idlMethName a {\\n color: #ff4500;\\n border-bottom: 1px dotted #ff4500;\\n text-decoration: none;\\n}\\n\\n\\n/*.idlCtor*/\\n\\n.idlCtorName {\\n color: #ff4500;\\n}\\n\\n.idlCtorName a {\\n color: #ff4500;\\n border-bottom: 1px dotted #ff4500;\\n text-decoration: none;\\n}\\n\\n\\n/*.idlParam*/\\n\\n.idlParamType {\\n color: #005a9c;\\n}\\n\\n.idlParamName,\\n.idlDefaultValue {\\n font-style: italic;\\n}\\n\\n.extAttr {\\n color: #666;\\n}\\n\\n\\n/*.idlSectionComment*/\\n\\n.idlSectionComment {\\n color: gray;\\n}\\n\\n\\n/*.idlIterable*/\\n\\n.idlIterableKeyType,\\n.idlIterableValueType {\\n color: #005a9c;\\n}\\n\\n\\n/*.idlMaplike*/\\n\\n.idlMaplikeKeyType,\\n.idlMaplikeValueType {\\n color: #005a9c;\\n}\\n\\n\\n/*.idlConst*/\\n\\n.idlConstType {\\n color: #005a9c;\\n}\\n\\n.idlConstName {\\n color: #ff4500;\\n}\\n\\n.idlConstName a {\\n color: #ff4500;\\n border-bottom: 1px dotted #ff4500;\\n text-decoration: none;\\n}\\n\\n\\n/*.idlException*/\\n\\n.idlExceptionID {\\n font-weight: bold;\\n color: #c00;\\n}\\n\\n.idlTypedefID,\\n.idlTypedefType {\\n color: #005a9c;\\n}\\n\\n.idlRaises,\\n.idlRaises a.idlType,\\n.idlRaises a.idlType code,\\n.excName a,\\n.excName a code {\\n color: #c00;\\n font-weight: normal;\\n}\\n\\n.excName a {\\n font-family: monospace;\\n}\\n\\n.idlRaises a.idlType,\\n.excName a.idlType {\\n border-bottom: 1px dotted #c00;\\n}\\n\\n.excGetSetTrue,\\n.excGetSetFalse,\\n.prmNullTrue,\\n.prmNullFalse,\\n.prmOptTrue,\\n.prmOptFalse {\\n width: 45px;\\n text-align: center;\\n}\\n\\n.excGetSetTrue,\\n.prmNullTrue,\\n.prmOptTrue {\\n color: #0c0;\\n}\\n\\n.excGetSetFalse,\\n.prmNullFalse,\\n.prmOptFalse {\\n color: #c00;\\n}\\n\\n.idlImplements a, .idlIncludes a {\\n font-weight: bold;\\n}\\n\\ndl.attributes,\\ndl.methods,\\ndl.constants,\\ndl.constructors,\\ndl.fields,\\ndl.dictionary-members {\\n margin-left: 2em;\\n}\\n\\n.attributes dt,\\n.methods dt,\\n.constants dt,\\n.constructors dt,\\n.fields dt,\\n.dictionary-members dt {\\n font-weight: normal;\\n}\\n\\n.attributes dt code,\\n.methods dt code,\\n.constants dt code,\\n.constructors dt code,\\n.fields dt code,\\n.dictionary-members dt code {\\n font-weight: bold;\\n color: #000;\\n font-family: monospace;\\n}\\n\\n.attributes dt code,\\n.fields dt code,\\n.dictionary-members dt code {\\n background: #ffffd2;\\n}\\n\\n.attributes dt .idlAttrType code,\\n.fields dt .idlFieldType code,\\n.dictionary-members dt .idlMemberType code {\\n color: #005a9c;\\n background: transparent;\\n font-family: inherit;\\n font-weight: normal;\\n font-style: italic;\\n}\\n\\n.methods dt code {\\n background: #d9e6f8;\\n}\\n\\n.constants dt code {\\n background: #ddffd2;\\n}\\n\\n.constructors dt code {\\n background: #cfc;\\n}\\n\\n.attributes dd,\\n.methods dd,\\n.constants dd,\\n.constructors dd,\\n.fields dd,\\n.dictionary-members dd {\\n margin-bottom: 1em;\\n}\\n\\ntable.parameters,\\ntable.exceptions {\\n border-spacing: 0;\\n border-collapse: collapse;\\n margin: 0.5em 0;\\n width: 100%;\\n}\\n\\ntable.parameters {\\n border-bottom: 1px solid #90b8de;\\n}\\n\\ntable.exceptions {\\n border-bottom: 1px solid #deb890;\\n}\\n\\n.parameters th,\\n.exceptions th {\\n color: inherit;\\n padding: 3px 5px;\\n text-align: left;\\n font-weight: normal;\\n}\\n\\n.parameters th {\\n color: #fff;\\n background: #005a9c;\\n}\\n\\n.exceptions th {\\n background: #deb890;\\n}\\n\\n.parameters td,\\n.exceptions td {\\n padding: 3px 10px;\\n border-top: 1px solid #ddd;\\n vertical-align: top;\\n}\\n\\n.parameters tr:first-child td,\\n.exceptions tr:first-child td {\\n border-top: none;\\n}\\n\\n.parameters td.prmName,\\n.exceptions td.excName,\\n.exceptions td.excCodeName {\\n width: 100px;\\n}\\n\\n.parameters td.prmType {\\n width: 120px;\\n}\\n\\ntable.exceptions table {\\n border-spacing: 0;\\n border-collapse: collapse;\\n width: 100%;\\n}\\n\\n.respec-button-copy-paste:focus {\\n text-decoration: none;\\n border-color: #51a7e8;\\n outline: none;\\n box-shadow: 0 0 5px rgba(81, 167, 232, 0.5);\\n}\\n\\n.respec-button-copy-paste:focus:hover,\\n.respec-button-copy-paste.selected:focus {\\n border-color: #51a7e8;\\n}\\n\\n.respec-button-copy-paste:hover,\\n.respec-button-copy-paste:active,\\n.respec-button-copy-paste.zeroclipboard-is-hover,\\n.respec-button-copy-paste.zeroclipboard-is-active {\\n text-decoration: none;\\n background-color: #ddd;\\n background-image: linear-gradient(#eee, #ddd);\\n border-color: #ccc;\\n}\\n\\n.respec-button-copy-paste:active,\\n.respec-button-copy-paste.selected,\\n.respec-button-copy-paste.zeroclipboard-is-active {\\n background-color: #dcdcdc;\\n background-image: none;\\n border-color: #b5b5b5;\\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15)\\n}\\n\\n.respec-button-copy-paste.selected:hover {\\n background-color: #cfcfcf;\\n}\\n\\n.respec-button-copy-paste:disabled,\\n.respec-button-copy-paste:disabled:hover,\\n.respec-button-copy-paste.disabled,\\n.respec-button-copy-paste.disabled:hover {\\n color: rgba(102, 102, 102, 0.5);\\n cursor: default;\\n background-color: rgba(229, 229, 229, 0.5);\\n background-image: none;\\n border-color: rgba(197, 197, 197, 0.5);\\n box-shadow: none;\\n}\\n';});\n\n", + "define('core/webidl',[\"exports\", \"core/pubsubhub\", \"deps/webidl2\", \"handlebars.runtime\", \"deps/text!core/css/webidl.css\", \"templates\", \"core/utils\"], function (exports, _pubsubhub, _webidl, _handlebars, _webidl3, _templates, _utils) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.done = exports.name = undefined;\n exports.run = run;\n\n var _webidl2 = _interopRequireDefault(_webidl);\n\n var _handlebars2 = _interopRequireDefault(_handlebars);\n\n var _webidl4 = _interopRequireDefault(_webidl3);\n\n var _templates2 = _interopRequireDefault(_templates);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n // Module core/webidl\n // Highlights and links WebIDL marked up inside
      .\n\n  // TODO:\n  //  - It could be useful to report parsed IDL items as events\n  //  - don't use generated content in the CSS!\n  const name = exports.name = \"core/webidl\";\n\n  var idlAttributeTmpl = _templates2.default[\"attribute.html\"];\n  var idlCallbackTmpl = _templates2.default[\"callback.html\"];\n  var idlConstTmpl = _templates2.default[\"const.html\"];\n  var idlDictionaryTmpl = _templates2.default[\"dictionary.html\"];\n  var idlDictMemberTmpl = _templates2.default[\"dict-member.html\"];\n  var idlEnumItemTmpl = _templates2.default[\"enum-item.html\"];\n  var idlEnumTmpl = _templates2.default[\"enum.html\"];\n  var idlExtAttributeTmpl = _templates2.default[\"extended-attribute.html\"];\n  var idlFieldTmpl = _templates2.default[\"field.html\"];\n  var idlIncludesTmpl = _templates2.default[\"includes.html\"];\n  var idlImplementsTmpl = _templates2.default[\"implements.html\"];\n  var idlInterfaceTmpl = _templates2.default[\"interface.html\"];\n  var idlIterableTmpl = _templates2.default[\"iterable.html\"];\n  var idlLineCommentTmpl = _templates2.default[\"line-comment.html\"];\n  var idlMaplikeTmpl = _templates2.default[\"maplike.html\"];\n  var idlMethodTmpl = _templates2.default[\"method.html\"];\n  var idlMultiLineCommentTmpl = _templates2.default[\"multiline-comment.html\"];\n  var idlParamTmpl = _templates2.default[\"param.html\"];\n  var idlTypedefTmpl = _templates2.default[\"typedef.html\"];\n  // TODO: make these linkable somehow.\n  // https://github.com/w3c/respec/issues/999\n  // https://github.com/w3c/respec/issues/982\n  var unlinkable = new Set([\"maplike\", \"setlike\", \"stringifier\"]);\n\n  function registerHelpers() {\n    _handlebars2.default.registerHelper(\"extAttr\", function (obj, indent) {\n      return extAttr(obj.extAttrs, indent, /*singleLine=*/false);\n    });\n    _handlebars2.default.registerHelper(\"extAttrInline\", function (obj) {\n      return extAttr(obj.extAttrs, 0, /*singleLine=*/true);\n    });\n    _handlebars2.default.registerHelper(\"extAttrClassName\", function () {\n      var extAttr = this;\n      if (extAttr.name === \"Constructor\" || extAttr.name === \"NamedConstructor\") {\n        return \"idlCtor\";\n      }\n      return \"extAttr\";\n    });\n    _handlebars2.default.registerHelper(\"extAttrRhs\", function (rhs, options) {\n      if (rhs.type === \"identifier\") {\n        return options.fn(rhs.value);\n      }\n      return `(${rhs.value.map(options.fn)})`;\n    });\n    _handlebars2.default.registerHelper(\"param\", function (obj) {\n      return new _handlebars2.default.SafeString(idlParamTmpl({\n        obj: obj,\n        optional: obj.optional ? \"optional \" : \"\",\n        variadic: obj.variadic ? \"...\" : \"\"\n      }));\n    });\n    _handlebars2.default.registerHelper(\"jsIf\", function (condition, options) {\n      if (condition) {\n        return options.fn(this);\n      } else {\n        return options.inverse(this);\n      }\n    });\n    _handlebars2.default.registerHelper(\"idn\", function (indent) {\n      return new _handlebars2.default.SafeString(idn(indent));\n    });\n    _handlebars2.default.registerHelper(\"idlType\", function (obj) {\n      return new _handlebars2.default.SafeString(idlType2Html(obj.idlType));\n    });\n    _handlebars2.default.registerHelper(\"stringifyIdlConst\", function (value) {\n      switch (value.type) {\n        case \"null\":\n          return \"null\";\n        case \"Infinity\":\n          return value.negative ? \"-Infinity\" : \"Infinity\";\n        case \"NaN\":\n          return \"NaN\";\n        case \"number\":\n          return value.value;\n        case \"string\":\n        case \"boolean\":\n        case \"sequence\":\n          return JSON.stringify(value.value);\n        default:\n          (0, _pubsubhub.pub)(\"error\", \"Unexpected constant value type: `\" + value.type + \"`.\");\n          return \"\";\n      }\n    });\n    _handlebars2.default.registerHelper(\"escapeArgumentName\", escapeArgumentName);\n    _handlebars2.default.registerHelper(\"escapeAttributeName\", escapeAttributeName);\n    _handlebars2.default.registerHelper(\"escapeIdentifier\", escapeIdentifier);\n    _handlebars2.default.registerHelper(\"pads\", function (num) {\n      return new _handlebars2.default.SafeString(pads(num));\n    });\n    _handlebars2.default.registerHelper(\"join\", function (arr, between, options) {\n      return arr.map(options.fn).join(between);\n    });\n    _handlebars2.default.registerHelper(\"joinNonWhitespace\", function (arr, between, options) {\n      return arr.filter(elem => elem.type !== \"ws\").map(options.fn).join(between);\n    });\n    // A block helper that emits an  around its contents\n    // if obj.dfn exists. If it exists, that implies that\n    // there's another  for the object.\n    _handlebars2.default.registerHelper(\"tryLink\", function (obj, options) {\n      const content = options.fn(this);\n      const isDefaultJSON = obj.name === \"toJSON\" && obj.extAttrs.some(({ name }) => name === \"Default\");\n      // nothing defines this.\n      if (!obj.dfn && !isDefaultJSON) {\n        return content;\n      }\n      // We are going to return a hyperlink\n      const a = document.createElement(\"a\");\n      a.innerText = content;\n      // Let's deal with WebIDL's Default toJSON(); first.\n      if (!obj.dfn && isDefaultJSON) {\n        // If toJSON is not overridden, link directly to WebIDL spec.\n        a.dataset.cite = \"WEBIDL#default-tojson-operation\";\n      } else {\n        // This is an internal IDL reference.\n        a.dataset.noDefault = \"\";\n        a.dataset.linkFor = obj.linkFor ? _handlebars2.default.Utils.escapeExpression(obj.linkFor).toLowerCase() : \"\";\n        a.dataset.lt = obj.dfn[0].dataset.lt || \"\";\n      }\n      return a.outerHTML;\n    });\n  }\n\n  function idn(lvl) {\n    return \"    \".repeat(lvl);\n  }\n\n  function idlType2Html(idlType) {\n    if (typeof idlType === \"string\") {\n      return `${_handlebars2.default.Utils.escapeExpression(idlType)}`;\n    }\n    if (Array.isArray(idlType)) {\n      return idlType.map(idlType2Html).join(\", \");\n    }\n    const extAttrs = extAttr(idlType.extAttrs, 0, /*singleLine=*/true);\n    const nullable = idlType.nullable ? \"?\" : \"\";\n    if (idlType.union) {\n      return `${extAttrs}(${idlType.idlType.map(idlType2Html).join(\" or \")})${nullable}`;\n    }\n    let type = \"\";\n    if (idlType.generic) {\n      type = standardTypes.has(idlType.generic) ? linkStandardType(idlType.generic) : idlType2Html(idlType.generic);\n      type = `${type}<${idlType2Html(idlType.idlType)}>`;\n    } else {\n      type = standardTypes.has(idlType.idlType) ? linkStandardType(idlType.idlType) : idlType2Html(idlType.idlType);\n    }\n    return extAttrs + type + nullable;\n  }\n\n  function linkStandardType(type) {\n    if (!standardTypes.has(type)) {\n      return type;\n    }\n    const safeType = _handlebars2.default.Utils.escapeExpression(type);\n    return `${safeType}`;\n  }\n\n  function idlType2Text(idlType) {\n    if (typeof idlType === \"string\") {\n      return idlType;\n    }\n    const nullable = idlType.nullable ? \"?\" : \"\";\n    if (idlType.union) {\n      return `(${idlType.idlType.map(idlType2Text).join(\" or \")})${nullable}`;\n    }\n    if (idlType.generic) {\n      const types = [].concat(idlType.idlType).map(idlType2Text).join(\", \");\n      return `${idlType.generic}<${types}>${nullable}`;\n    }\n    return idlType2Text(idlType.idlType) + nullable;\n  }\n\n  function pads(num) {\n    return \" \".repeat(num);\n  }\n  var whitespaceTypes = {\n    ws: true,\n    \"ws-pea\": true,\n    \"ws-tpea\": true,\n    \"line-comment\": true,\n    \"multiline-comment\": true\n  };\n\n  function typeIsWhitespace(webIdlType) {\n    return whitespaceTypes[webIdlType];\n  }\n\n  const extenedAttributesLinks = new Map([[\"CEReactions\", \"HTML#cereactions\"], [\"Clamp\", \"WEBIDL#Clamp\"], [\"Constructor\", \"WEBIDL#Constructor\"], [\"Default\", \"WEBIDL#Default\"], [\"EnforceRange\", \"WEBIDL#EnforceRange\"], [\"Exposed\", \"WEBIDL#Exposed\"], [\"Global\", \"WEBIDL#Global\"], [\"HTMLConstructor\", \"HTML#htmlconstructor\"], [\"LegacyUnenumerableNamedProperties\", \"WEBIDL#LegacyUnenumerableNamedProperties\"], [\"LenientSetter\", \"WEBIDL#LenientSetter\"], [\"LenientThis\", \"WEBIDL#LenientThis\"], [\"NamedConstructor\", \"WEBIDL#NamedConstructor\"], [\"NewObject\", \"WEBIDL#NewObject\"], [\"NoInterfaceObject\", \"WEBIDL#NoInterfaceObject\"], [\"OverrideBuiltins\", \"WEBIDL#OverrideBuiltins\"], [\"PrimaryGlobal\", \"WEBIDL#PrimaryGlobal\"], [\"PutForwards\", \"WEBIDL#PutForwards\"], [\"Replaceable\", \"WEBIDL#Replaceable\"], [\"SameObject\", \"WEBIDL#SameObject\"], [\"SecureContext\", \"WEBIDL#SecureContext\"], [\"TreatNonObjectAsNull\", \"WEBIDL#TreatNonObjectAsNull\"], [\"TreatNullAs\", \"WEBIDL#TreatNullAs\"], [\"Unforgeable\", \"WEBIDL#Unforgeable\"], [\"Unscopable\", \"WEBIDL#Unscopable\"]]);\n\n  function extAttr(extAttrs, indent, singleLine) {\n    if (extAttrs.length === 0) {\n      // If there are no extended attributes, omit the [] entirely.\n      return \"\";\n    }\n    var opt = {\n      extAttrs: extAttrs,\n      indent: indent,\n      sep: singleLine ? \", \" : \",\\n \" + idn(indent),\n      end: singleLine ? \" \" : \"\\n\"\n    };\n    const safeString = new _handlebars2.default.SafeString(idlExtAttributeTmpl(opt));\n    const tmpParser = document.createElement(\"div\");\n    tmpParser.innerHTML = safeString;\n    Array.from(tmpParser.querySelectorAll(\".extAttrName\")).filter(function (elem) {\n      return extenedAttributesLinks.has(elem.textContent);\n    }).forEach(function (elem) {\n      const a = elem.ownerDocument.createElement(\"a\");\n      a.dataset.cite = extenedAttributesLinks.get(elem.textContent);\n      a.textContent = elem.textContent;\n      elem.replaceChild(a, elem.firstChild);\n    });\n    return new _handlebars2.default.SafeString(tmpParser.innerHTML);\n  }\n\n  const standardTypes = new Map([[\"any\", \"WEBIDL#idl-any\"], [\"ArrayBuffer\", \"WEBIDL#idl-ArrayBuffer\"], [\"boolean\", \"WEBIDL#idl-boolean\"], [\"Buffer\", \"WEBIDL#idl-Buffer\"], [\"byte\", \"WEBIDL#idl-byte\"], [\"ByteString\", \"WEBIDL#idl-ByteString\"], [\"Callback\", \"WEBIDL#idl-Callback\"], [\"DataView\", \"WEBIDL#idl-DataView\"], [\"DOMException\", \"WEBIDL#idl-DOMException\"], [\"DOMString\", \"WEBIDL#idl-DOMString\"], [\"double\", \"WEBIDL#idl-double\"], [\"Error\", \"WEBIDL#idl-Error\"], [\"EventHandler\", \"HTML#eventhandler\"], [\"float\", \"WEBIDL#idl-float\"], [\"Float32Array\", \"WEBIDL#idl-Float32Array\"], [\"Float64Array\", \"WEBIDL#idl-Float64Array\"], [\"FrozenArray\", \"WEBIDL#idl-frozen-array\"], [\"Int16Array\", \"WEBIDL#idl-Int16Array\"], [\"Int32Array\", \"WEBIDL#idl-Int32Array\"], [\"Int8Array\", \"WEBIDL#idl-Int8Array\"], [\"long long\", \"WEBIDL#idl-long-long\"], [\"long\", \"WEBIDL#idl-long\"], [\"object\", \"WEBIDL#idl-object\"], [\"octet\", \"WEBIDL#idl-octet\"], [\"Promise\", \"WEBIDL#idl-promise\"], [\"record\", \"WEBIDL#idl-record\"], [\"sequence\", \"WEBIDL#idl-sequence\"], [\"short\", \"WEBIDL#idl-short\"], [\"Uint16Array\", \"WEBIDL#idl-Uint16Array\"], [\"Uint32Array\", \"WEBIDL#idl-Uint32Array\"], [\"Uint8Array\", \"WEBIDL#idl-Uint8Array\"], [\"Uint8ClampedArray\", \"WEBIDL#dl-Uint8ClampedArray\"], [\"unrestricted double\", \"WEBIDL#idl-unrestricted-double\"], [\"unrestricted float\", \"WEBIDL#idl-unrestricted-float\"], [\"unsigned long long\", \"WEBIDL#idl-unsigned-long-long\"], [\"unsigned long\", \"WEBIDL#idl-unsigned-long\"], [\"unsigned short\", \"WEBIDL#idl-unsigned-short\"], [\"USVString\", \"WEBIDL#idl-USVString\"]]);\n\n  const idlKeywords = new Set([\"any\", \"attribute\", \"boolean\", \"byte\", \"ByteString\", \"callback\", \"const\", \"creator\", \"Date\", \"deleter\", \"dictionary\", \"DOMString\", \"double\", \"enum\", \"false\", \"float\", \"getter\", \"implements\", \"Infinity\", \"inherit\", \"interface\", \"iterable\", \"long\", \"maplike\", \"NaN\", \"null\", \"object\", \"octet\", \"optional\", \"or\", \"partial\", \"readonly\", \"RegExp\", \"required\", \"sequence\", \"setlike\", \"setter\", \"short\", \"static\", \"stringifier\", \"true\", \"typedef\", \"unrestricted\", \"unsigned\", \"USVString\", \"void\"]);\n  const argumentNameKeyword = new Set([\"attribute\", \"callback\", \"const\", \"creator\", \"deleter\", \"dictionary\", \"enum\", \"getter\", \"implements\", \"inherit\", \"interface\", \"iterable\", \"maplike\", \"partial\", \"required\", \"setlike\", \"setter\", \"static\", \"stringifier\", \"typedef\", \"unrestricted\"]);\n  const attributeNameKeyword = new Set([\"required\"]);\n  var operationNames = {};\n  var idlPartials = {};\n\n  function escapeArgumentName(argumentName) {\n    if (idlKeywords.has(argumentName) && !argumentNameKeyword.has(argumentName)) return \"_\" + argumentName;\n    return argumentName;\n  }\n\n  function escapeAttributeName(attributeName) {\n    if (idlKeywords.has(attributeName) && !attributeNameKeyword.has(attributeName)) return \"_\" + attributeName;\n    return attributeName;\n  }\n\n  function escapeIdentifier(identifier) {\n    if (idlKeywords.has(identifier)) return \"_\" + identifier;\n    return identifier;\n  }\n\n  // Takes the result of WebIDL2.parse(), an array of definitions.\n  function makeMarkup(conf, parse) {\n    var attr = { class: \"def idl\" };\n    var $pre = $(\"
      \").attr(attr);\n    $pre.html(parse.filter(function (defn) {\n      return !typeIsWhitespace(defn.type);\n    }).map(function (defn) {\n      return writeDefinition(defn, -1);\n    }).join(\"\\n\\n\"));\n    return $pre;\n  }\n\n  function writeDefinition(obj, indent) {\n    indent++;\n    var opt = { indent: indent, obj: obj };\n    switch (obj.type) {\n      case \"typedef\":\n        return idlTypedefTmpl(opt);\n      case \"includes\":\n        return idlIncludesTmpl(opt);\n      case \"implements\":\n        return idlImplementsTmpl(opt);\n      case \"interface\":\n        return writeInterfaceDefinition(opt);\n      case \"interface mixin\":\n        return writeInterfaceDefinition(opt, { mixin: true });\n      case \"callback interface\":\n        return writeInterfaceDefinition(opt, { callback: true });\n      case \"dictionary\":\n        var maxQualifiers = 0,\n            maxType = 0;\n        var members = obj.members.filter(function (member) {\n          return !typeIsWhitespace(member.type);\n        });\n        for (const it of obj.members) {\n          if (typeIsWhitespace(it.type)) {\n            continue;\n          }\n          const qualifiers = it.required ? \"required \" : \"\";\n          if (maxQualifiers < qualifiers.length) maxQualifiers = qualifiers.length;\n\n          var typeLen = idlType2Text(it.idlType).length;\n          if (maxType < typeLen) maxType = typeLen;\n        }\n        var children = obj.members.map(function (it) {\n          switch (it.type) {\n            case \"field\":\n              return writeMember(it, maxQualifiers, maxType, indent + 1);\n            case \"line-comment\":\n              return writeLineComment(it, indent + 1);\n            case \"multiline-comment\":\n              return writeMultiLineComment(it, indent + 1);\n            case \"ws\":\n              return writeBlankLines(it);\n            case \"ws-pea\":\n              break;\n            default:\n              throw new Error(\"Unexpected type in dictionary: `\" + it.type + \"`.\");\n          }\n        }).join(\"\");\n        return idlDictionaryTmpl({\n          obj: obj,\n          indent: indent,\n          children: children,\n          partial: obj.partial ? \"partial \" : \"\"\n        });\n      case \"callback\":\n        var paramObjs = obj.arguments.filter(function (it) {\n          return !typeIsWhitespace(it.type);\n        }).map(function (it) {\n          return idlParamTmpl({\n            obj: it,\n            optional: it.optional ? \"optional \" : \"\",\n            variadic: it.variadic ? \"...\" : \"\"\n          });\n        });\n        var callbackObj = {\n          obj: obj,\n          indent: indent,\n          children: paramObjs.join(\", \")\n        };\n        var ret = idlCallbackTmpl(callbackObj);\n        var line = $(ret).text();\n        if (line.length > 80) {\n          var paramPad = line.indexOf(\"(\") + 1;\n          callbackObj.children = paramObjs.join(\",\\n\" + pads(paramPad));\n\n          ret = idlCallbackTmpl(callbackObj);\n        }\n        return ret;\n      case \"enum\":\n        var children = \"\";\n        for (var i = 0; i < obj.values.length; i++) {\n          var item = obj.values[i];\n          switch (item.type) {\n            case \"string\":\n              var needsComma = false;\n              for (var j = i + 1; j < obj.values.length; j++) {\n                var lookahead = obj.values[j];\n                if (lookahead.type === undefined) break;\n                if (lookahead.type === \",\") {\n                  needsComma = true;\n                  break;\n                }\n              }\n              children += idlEnumItemTmpl({\n                lname: item.value ? item.value.toLowerCase() : \"the-empty-string\",\n                name: item.value,\n                parentID: obj.name.toLowerCase(),\n                indent: indent + 1,\n                needsComma: needsComma\n              });\n              break;\n            case \"line-comment\":\n              children += writeLineComment(item, indent + 1);\n              break;\n            case \"multiline-comment\":\n              children += writeMultiLineComment(item, indent + 1);\n              break;\n            case \"ws\":\n              children += writeBlankLines(item);\n              break;\n            case \",\":\n            case \"ws-pea\":\n              break;\n            default:\n              throw new Error(\"Unexpected type in exception: `\" + item.type + \"`.\");\n          }\n        }\n        return idlEnumTmpl({ obj: obj, indent: indent, children: children });\n      default:\n        (0, _pubsubhub.pub)(\"error\", \"Unexpected object type `\" + obj.type + \"` in \" + JSON.stringify(obj));\n        return \"\";\n    }\n  }\n\n  function writeInterfaceDefinition(opt, fixes = {}) {\n    var obj = opt.obj,\n        indent = opt.indent;\n    var maxAttr = 0,\n        maxAttrQualifiers = 0,\n        maxMeth = 0,\n        maxConst = 0;\n    for (const it of obj.members) {\n      if (typeIsWhitespace(it.type) || it.type === \"maplike\" || it.type === \"iterable\") {\n        continue;\n      }\n      var len = idlType2Text(it.idlType).length;\n      if (it.type === \"attribute\") {\n        var qualifiersLen = writeAttributeQualifiers(it).length;\n        maxAttr = Math.max(len, maxAttr);\n        maxAttrQualifiers = Math.max(qualifiersLen, maxAttrQualifiers);\n      } else if (it.type === \"operation\") {\n        if (it.static) {\n          len += \"static \".length;\n        } else if (it.stringifier) {\n          len += \"stringifier \".length;\n        } else if (it.getter) {\n          len += \"getter \".length;\n        } else if (it.setter) {\n          len += \"setter \".length;\n        }\n        maxMeth = Math.max(len, maxMeth);\n      } else if (it.type === \"const\") {\n        maxConst = Math.max(len, maxConst);\n      }\n    }\n    var children = obj.members.map(function (ch) {\n      switch (ch.type) {\n        case \"attribute\":\n          return writeAttribute(ch, maxAttr, indent + 1, maxAttrQualifiers);\n        case \"operation\":\n          return writeMethod(ch, maxMeth, indent + 1);\n        case \"const\":\n          return writeConst(ch, maxConst, indent + 1);\n        case \"maplike\":\n          return writeMaplike(ch, indent + 1);\n        case \"iterable\":\n          return writeIterable(ch, indent + 1);\n        case \"ws\":\n          return writeBlankLines(ch);\n        case \"line-comment\":\n          return writeLineComment(ch, indent + 1);\n        case \"multiline-comment\":\n          return writeMultiLineComment(ch, indent + 1);\n        default:\n          throw new Error(\"Unexpected member type: `\" + ch.type + \"`.\");\n      }\n    }).join(\"\");\n    return idlInterfaceTmpl({\n      obj,\n      indent,\n      partial: obj.partial ? \"partial \" : \"\",\n      callback: fixes.callback ? \"callback \" : \"\",\n      mixin: fixes.mixin ? \"mixin \" : \"\",\n      children\n    });\n  }\n\n  function writeField(attr, max, indent) {\n    var pad = max - idlType2Text(attr.idlType).length;\n    return idlFieldTmpl({\n      obj: attr,\n      indent: indent,\n      pad: pad\n    });\n  }\n\n  function writeAttributeQualifiers(attr) {\n    var qualifiers = \"\";\n    if (attr.static) qualifiers += \"static \";\n    if (attr.stringifier) qualifiers += \"stringifier \";\n    if (attr.inherit) qualifiers += \"inherit \";\n    if (attr.readonly) qualifiers += \"readonly \";\n    return qualifiers;\n  }\n\n  function writeAttribute(attr, max, indent, maxQualifiers) {\n    var len = idlType2Text(attr.idlType).length;\n    var pad = max - len;\n    var qualifiers = writeAttributeQualifiers(attr);\n    qualifiers += pads(maxQualifiers);\n    qualifiers = qualifiers.slice(0, maxQualifiers);\n    return idlAttributeTmpl({\n      obj: attr,\n      indent: indent,\n      qualifiers: qualifiers,\n      pad: pad\n    });\n  }\n\n  function writeMethod(meth, max, indent) {\n    var paramObjs = meth.arguments.filter(function (it) {\n      return !typeIsWhitespace(it.type);\n    }).map(function (it) {\n      return idlParamTmpl({\n        obj: it,\n        optional: it.optional ? \"optional \" : \"\",\n        variadic: it.variadic ? \"...\" : \"\"\n      });\n    });\n    var params = paramObjs.join(\", \");\n    var len = idlType2Text(meth.idlType).length;\n    var specialProps = [\"getter\", \"setter\", \"deleter\", \"stringifier\", \"static\"];\n    var special = \"\";\n    for (var i in specialProps) {\n      if (meth[specialProps[i]]) {\n        special = specialProps[i] + \" \";\n        len += special.length;\n        break;\n      }\n    }\n    var pad = max - len;\n    var methObj = {\n      obj: meth,\n      indent: indent,\n      special: special,\n      pad: pad,\n      children: params\n    };\n    var ret = idlMethodTmpl(methObj);\n    var line = $(ret).text();\n    if (line.length > 80) {\n      var paramPad = line.indexOf(\"(\") + 1;\n      methObj.children = paramObjs.join(\",\\n\" + pads(paramPad));\n      ret = idlMethodTmpl(methObj);\n    }\n    return ret;\n  }\n\n  function writeConst(cons, max, indent) {\n    var pad = max - idlType2Text(cons.idlType).length;\n    if (cons.nullable) pad--;\n    return idlConstTmpl({\n      obj: cons,\n      indent: indent,\n      pad: pad,\n      nullable: cons.nullable ? \"?\" : \"\"\n    });\n  }\n\n  // Writes a single blank line if whitespace includes at least one blank line.\n  function writeBlankLines(whitespace) {\n    if (/\\n.*\\n/.test(whitespace.value)) {\n      // Members end with a newline, so we only need 1 extra one to get a blank line.\n      return \"\\n\";\n    }\n    return \"\";\n  }\n\n  function writeLineComment(comment, indent) {\n    return idlLineCommentTmpl({ indent: indent, comment: comment.value });\n  }\n\n  function writeMultiLineComment(comment, indent) {\n    // Split the multi-line comment into lines so we can indent it properly.\n    var lines = comment.value.split(/\\r\\n|\\r|\\n/);\n    if (lines.length === 0) {\n      return \"\";\n    } else if (lines.length === 1) {\n      return idlLineCommentTmpl({ indent: indent, comment: lines[0] });\n    }\n    var initialSpaces = Math.max(0, /^ */.exec(lines[1])[0].length - 3);\n\n    function trimInitialSpace(line) {\n      return line.slice(initialSpaces);\n    }\n    return idlMultiLineCommentTmpl({\n      indent: indent,\n      firstLine: lines[0],\n      lastLine: trimInitialSpace(lines[lines.length - 1]),\n      innerLine: lines.slice(1, -1).map(trimInitialSpace)\n    });\n  }\n\n  function writeMaplike(maplike, indent) {\n    return idlMaplikeTmpl({\n      obj: maplike,\n      qualifiers: maplike.readonly ? \"readonly \" : \"\",\n      indent: indent\n    });\n  }\n\n  function writeIterable(iterable, indent) {\n    return idlIterableTmpl({\n      obj: iterable,\n      qualifiers: iterable.readonly ? \"readonly \" : \"\",\n      indent: indent\n    });\n  }\n\n  function writeMember(memb, maxQualifiers, maxType, indent) {\n    var opt = { obj: memb, indent: indent };\n    opt.typePad = maxType - idlType2Text(memb.idlType).length;\n    if (memb.required) opt.qualifiers = \"required \";else opt.qualifiers = \"         \";\n    opt.qualifiers = opt.qualifiers.slice(0, maxQualifiers);\n    return idlDictMemberTmpl(opt);\n  }\n\n  // Each entity defined in IDL is either a top- or second-level entity:\n  // Interface or Interface.member. This function finds the \n  // element defining each entity and attaches it to the entity's\n  // 'refTitle' property, and records that it describes an IDL entity by\n  // adding a [data-idl] attribute.\n\n  function linkDefinitions(parse, definitionMap, parent, idlElem) {\n    parse\n    // Don't bother with any of these\n    .filter(({ type }) => [\"includes\", \"implements\", \"ws\", \"ws-pea\", \"ws-tpea\", \"line-comment\", \"multiline-comment\"].includes(type) === false).forEach(function (defn) {\n      var name;\n      switch (defn.type) {\n        // Top-level entities with linkable members.\n        case \"callback interface\":\n        case \"dictionary\":\n        case \"interface\":\n        case \"interface mixin\":\n          var partialIdx = \"\";\n          if (defn.partial) {\n            if (!idlPartials[defn.name]) {\n              idlPartials[defn.name] = [];\n            }\n            idlPartials[defn.name].push(defn);\n            partialIdx = \"-partial-\" + idlPartials[defn.name].length;\n          }\n          linkDefinitions(defn.members, definitionMap, defn.name, idlElem);\n          name = defn.name;\n          defn.idlId = \"idl-def-\" + name.toLowerCase() + partialIdx;\n          break;\n        case \"enum\":\n          name = defn.name;\n          for (const v of defn.values) {\n            if (v.type === \"string\") {\n              v.dfn = findDfn(name, v.value, definitionMap, defn.type, idlElem);\n            }\n          }\n          defn.idlId = \"idl-def-\" + name.toLowerCase();\n          break;\n        // Top-level entities without linkable members.\n        case \"callback\":\n        case \"typedef\":\n          name = defn.name;\n          defn.idlId = \"idl-def-\" + name.toLowerCase();\n          break;\n        // Members of top-level entities.\n        case \"attribute\":\n        case \"const\":\n        case \"field\":\n          name = defn.name;\n          defn.idlId = \"idl-def-\" + parent.toLowerCase() + \"-\" + name.toLowerCase();\n          break;\n        case \"operation\":\n          if (defn.name) {\n            name = defn.name;\n            var qualifiedName = parent + \".\" + name;\n            var fullyQualifiedName = parent + \".\" + name + \"()\";\n            if (!operationNames[fullyQualifiedName]) {\n              operationNames[fullyQualifiedName] = [];\n            }\n            if (!operationNames[qualifiedName]) {\n              operationNames[qualifiedName] = [];\n            } else {\n              defn.overload = operationNames[qualifiedName].length;\n              name = defn.name + \"!overload-\" + defn.overload;\n            }\n            operationNames[fullyQualifiedName].push(defn);\n            operationNames[qualifiedName].push(defn);\n          } else if (defn.getter || defn.setter || defn.deleter || defn.stringifier) {\n            name = \"\";\n          }\n          const idHead = `idl-def-${parent.toLowerCase()}-${name.toLowerCase()}`;\n          const idTail = defn.overload || !defn.arguments.length ? \"\" : \"-\" + defn.arguments.filter(arg => !typeIsWhitespace(arg.type)).map(arg => arg.name.toLowerCase()).join(\"-\").replace(/\\s/g, \"_\");\n          defn.idlId = idHead + idTail;\n          break;\n        case \"maplike\":\n          name = \"maplike\";\n          defn.idlId = (\"idl-def-\" + parent + \"-\" + name).toLowerCase();\n          break;\n        case \"iterable\":\n          name = \"iterable\";\n          defn.idlId = \"idl-def-\" + parent.toLowerCase() + \"-\" + name.toLowerCase();\n          break;\n        default:\n          (0, _pubsubhub.pub)(\"error\", new Error(\"ReSpec doesn't know about IDL type: `\" + defn.type + \"`.\"));\n          return;\n      }\n      if (parent) {\n        defn.linkFor = parent;\n      }\n      defn.dfn = findDfn(parent, name, definitionMap, defn.type, idlElem);\n    });\n  }\n\n  // This function looks for a  element whose title is 'name' and\n  // that is \"for\" 'parent', which is the empty string when 'name'\n  // refers to a top-level entity. For top-level entities, \n  // elements that inherit a non-empty [dfn-for] attribute are also\n  // counted as matching.\n  //\n  // When a matching  is found, it's given  formatting,\n  // marked as an IDL definition, and returned. If no  is found,\n  // the function returns 'undefined'.\n  function findDfn(parent, name, definitionMap, type, idlElem) {\n    const originalParent = parent;\n    const originalName = name;\n    parent = parent.toLowerCase();\n    switch (type) {\n      case \"operation\":\n        // Overloads all have unique names\n        if (name.search(\"!overload\") !== -1) {\n          name = name.toLowerCase();\n          break;\n        }\n        // Allow linking to both \"method()\" and \"method\" name.\n        const asMethodName = name.toLowerCase() + \"()\";\n        const asFullyQualifiedName = parent + \".\" + name.toLowerCase() + \"()\";\n\n        if (definitionMap[asMethodName] || definitionMap[asFullyQualifiedName]) {\n          const lookupName = definitionMap[asMethodName] ? asMethodName : asFullyQualifiedName;\n          const dfn = findDfn(parent, lookupName, definitionMap, null, idlElem);\n          if (!dfn) {\n            break; // try finding dfn using name, using normal search path...\n          }\n          const lt = dfn[0].dataset.lt ? dfn[0].dataset.lt.split(\"|\") : [];\n          lt.push(lookupName, name);\n          dfn[0].dataset.lt = lt.join(\"|\");\n          if (!definitionMap[name]) {\n            definitionMap[name] = [];\n          }\n          definitionMap[name].push(dfn);\n          return dfn;\n        }\n        // no method alias, so let's find the dfn and add it\n        const dfn = findDfn(parent, name, definitionMap, null, idlElem);\n        if (!dfn) {\n          break;\n        }\n        const lt = dfn[0].dataset.lt ? dfn[0].dataset.lt.split(\"|\") : [];\n        lt.push(asMethodName, name);\n        dfn[0].dataset.lt = lt.reverse().join(\"|\");\n        definitionMap[asMethodName] = [dfn];\n        return dfn;\n      case \"enum\":\n        if (name === \"\") {\n          name = \"the-empty-string\";\n          break;\n        }\n      default:\n        name = name.toLowerCase();\n    }\n    if (unlinkable.has(name)) {\n      return;\n    }\n    var dfnForArray = definitionMap[name];\n    var dfns = [];\n    if (dfnForArray) {\n      // Definitions that have a title and [data-dfn-for] that exactly match the\n      // IDL entity:\n      dfns = dfnForArray.filter(dfn => dfn[0].dataset.dfnFor === parent);\n      // If this is a top-level entity, and we didn't find anything with\n      // an explicitly empty [for], try  that inherited a [for].\n      if (dfns.length === 0 && parent === \"\" && dfnForArray.length === 1) {\n        dfns = dfnForArray;\n      }\n    }\n    // If we haven't found any definitions with explicit [for]\n    // and [title], look for a dotted definition, \"parent.name\".\n    if (dfns.length === 0 && parent !== \"\") {\n      var dottedName = parent + \".\" + name;\n      dfnForArray = definitionMap[dottedName];\n      if (dfnForArray !== undefined && dfnForArray.length === 1) {\n        dfns = dfnForArray;\n        // Found it: update the definition to specify its [for] and data-lt.\n        delete definitionMap[dottedName];\n        dfns[0].attr(\"data-dfn-for\", parent);\n        dfns[0].attr(\"data-lt\", name);\n        if (definitionMap[name] === undefined) {\n          definitionMap[name] = [];\n        }\n        definitionMap[name].push(dfns[0]);\n      }\n    }\n    if (dfns.length > 1) {\n      const msg = `Multiple \\`\\`s for \\`${originalName}\\` ${originalParent ? `in \\`${originalParent}\\`` : \"\"}`;\n      (0, _pubsubhub.pub)(\"error\", new Error(msg));\n    }\n    if (dfns.length === 0) {\n      const showWarnings = type && idlElem && name && idlElem.classList.contains(\"no-link-warnings\") === false;\n      if (showWarnings) {\n        var msg = `No \\`\\` for ${type} \\`${originalName}\\`${originalParent ? \" in `\" + originalParent + \"`\" : \"\"}`;\n        msg += \". [More info](https://github.com/w3c/respec/wiki/WebIDL-thing-is-not-defined).\";\n        (0, _pubsubhub.pub)(\"warn\", msg);\n      }\n      return;\n    }\n    const dfn = dfns[0][0]; // work on actual node, not jquery\n    const id = \"dom-\" + (parent ? parent + \"-\" : \"\") + name.replace(/[()]/g, \"\");\n    dfn.id = id;\n    dfn.dataset.idl = \"\";\n    dfn.dataset.title = dfn.textContent;\n    dfn.dataset.dfnFor = parent;\n    // Mark the definition as code.\n    if (!dfn.querySelector(\"code\") && !dfn.closest(\"code\") && dfn.children) {\n      const code = dfn.ownerDocument.createElement(\"code\");\n      while (dfn.hasChildNodes()) {\n        code.appendChild(dfn.firstChild);\n      }\n      dfn.appendChild(code);\n    }\n    return dfns[0];\n  }\n  var resolveDone;\n\n  const done = exports.done = new Promise(function (resolve) {\n    resolveDone = resolve;\n  });\n\n  function run(conf, doc, cb) {\n    var finish = function () {\n      resolveDone();\n      (0, _pubsubhub.pub)(\"end\", \"core/webidl\");\n      cb();\n    };\n    var $idl = $(\"pre.idl\", doc);\n    if (!$idl.length) {\n      return finish();\n    }\n    registerHelpers();\n    if (!$(\".idl\", doc).not(\"pre\").length) {\n      $(doc).find(\"head link\").first().before($(\"\";\n\n    $(doc).find(\"head link\").first().before(style);\n    var $secs = $(doc).find(\"h2, h3, h4, h5, h6\");\n    $secs.each(function (i, item) {\n      var $item = $(item);\n      if (!$item.hasClass(\"nolink\")) {\n        var resourceID = $item.attr(\"id\");\n        var $par = $item.parent();\n        if ($par.is(\"section\") || $par.is(\"div\")) {\n          if (!$par.hasClass(\"introductory\") && !$par.hasClass(\"nolink\")) {\n            resourceID = $par.attr(\"id\");\n          } else {\n            resourceID = null;\n          }\n        }\n        // if we still have resourceID\n        if (resourceID) {\n          // we have an id.  add a permalink\n          // right after the h* element\n          var theNode = $(\"\");\n          theNode.attr(\"class\", \"permalink\");\n          var ctext = $item.text();\n          var el = $(\"\");\n          el.attr({\n            href: \"#\" + resourceID,\n            \"aria-label\": \"Permalink for \" + ctext,\n            title: \"Permalink for \" + ctext\n          });\n          var sym = $(\"\");\n          sym.append(symbol);\n          el.append(sym);\n          theNode.append(el);\n          // if this is not being put at\n          // page edge, then separate it\n          // from the heading with a\n          // non-breaking space\n          if (!conf.permalinkEdge) {\n            $item.append(\" \");\n          }\n          $item.append(theNode);\n        }\n      }\n    });\n    cb();\n  }\n});\n//# sourceMappingURL=permalinks.js.map;\n",
      +    "define('core/id-headers',[\"exports\"], function (exports) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.run = run;\n  // Module core/id-headers\n  // All headings are expected to have an ID, unless their immediate container has one.\n  // This is currently in core though it comes from a W3C rule. It may move in the future.\n\n  const name = exports.name = \"core/id-headers\";\n\n  function run(conf, doc, cb) {\n    Array.from(document.querySelectorAll(\"h2:not([id]), h3:not([id]), h4:not([id]), h5:not([id]), h6:not([id])\")).forEach(elem => {\n      $(elem).makeID();\n    });\n    cb();\n  }\n});\n//# sourceMappingURL=id-headers.js.map;\n",
      +    "define('core/location-hash',[\"exports\", \"core/pubsubhub\"], function (exports, _pubsubhub) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.name = undefined;\n  exports.run = run;\n  const name = exports.name = \"core/location-hash\"; // Module core/location-hash\n  // Resets window.location.hash to jump to the right point in the document\n\n  function run(conf, doc, cb) {\n    // Added message for legacy compat with Aria specs\n    // See https://github.com/w3c/respec/issues/793\n    (0, _pubsubhub.pub)(\"start\", \"core/location-hash\");\n\n    let hash = \"\";\n    try {\n      hash = decodeURIComponent(window.location.hash).substr(1);\n    } catch (err) {\n      hash = \"\";\n    }\n    // Only scroll to the hash if the document hasn't been scrolled yet\n    // this ensures that a page refresh maintains the scroll position\n    if (!hash && !document.documentElement.scrollTop) {\n      return cb();\n    }\n    // Allow some degree of recovery for legacy fragments format.\n    // See https://github.com/w3c/respec/issues/1353\n    const hasLink = !!doc.getElementById(hash);\n    const isLegacyFrag = /\\W/.test(hash);\n    if (!hasLink && isLegacyFrag) {\n      const id = hash.replace(/[\\W]+/gim, \"-\").replace(/^-+/, \"\").replace(/-+$/, \"\");\n      if (document.getElementById(id)) {\n        hash = id;\n      }\n    }\n    window.location.hash = `#${hash}`;\n    cb();\n  }\n});\n//# sourceMappingURL=location-hash.js.map;\n",
      +    "\ndefine('deps/text!core/css/caniuse.css',[],function () { return '/* container for stats */\\n.caniuse-stats {\\n  display: flex;\\n  flex-wrap: wrap;\\n  justify-content: flex-start;\\n  align-items: baseline;\\n  cursor: pointer;\\n}\\n\\nbutton.caniuse-cell {\\n  margin: 1px 1px 0 0;\\n  border: none;\\n}\\n\\n.caniuse-browser {\\n  position: relative;\\n}\\n\\n/* reset styles, hide old versions by default */\\n.caniuse-browser ul {\\n  display: none;\\n  margin: 0;\\n  padding: 0;\\n  list-style: none;\\n  position: absolute;\\n  left: 0;\\n  z-index: 2;\\n  background: #fff;\\n  margin-top: 1px;\\n}\\n\\n.caniuse-stats a {\\n  white-space: nowrap;\\n  align-self: center;\\n  margin-left: .5em;\\n}\\n\\n/* a browser version */\\n.caniuse-cell {\\n  display: flex;\\n  color: rgba(0, 0, 0, 0.8);\\n  font-size: 90%;\\n  height: 0.8cm;\\n  margin-right: 1px;\\n  margin-top: 0;\\n  min-width: 3cm;\\n  overflow: visible;\\n  justify-content: center;\\n  align-items: center;\\n}\\n\\nli.caniuse-cell {\\n  margin-bottom: 1px;\\n}\\n\\n.caniuse-cell:focus {\\n  outline: none;\\n}\\n\\n.caniuse-cell:hover {\\n  color: rgba(0, 0, 0, 1);\\n}\\n\\n/* supports */\\n.caniuse-cell.y {\\n  background: #8bc34a;\\n}\\n\\n/* no support */\\n.caniuse-cell.n {\\n  background: #e53935;\\n}\\n\\n/* not supported by default / partial support etc\\nsee https://github.com/Fyrd/caniuse/blob/master/CONTRIBUTING.md for stats */\\n.caniuse-cell.d,\\n.caniuse-cell.a,\\n.caniuse-cell.x,\\n.caniuse-cell.p {\\n  background: #ffc107;\\n}\\n\\n/* show rest of the browser versions */\\n.caniuse-stats button:focus + ul,\\n.caniuse-stats .caniuse-browser:hover > ul {\\n  display: block;\\n}\\n';});\n\n",
      +    "define('core/caniuse',[\"exports\", \"core/utils\", \"core/pubsubhub\", \"deps/text!core/css/caniuse.css\", \"deps/hyperhtml\"], function (exports, _utils, _pubsubhub, _caniuse) {\n  \"use strict\";\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n  exports.name = undefined;\n  exports.run = run;\n\n  var _caniuse2 = _interopRequireDefault(_caniuse);\n\n  function _interopRequireDefault(obj) {\n    return obj && obj.__esModule ? obj : {\n      default: obj\n    };\n  }\n\n  var _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  const name = exports.name = \"core/caniuse\";\n\n  const GH_USER_CONTENT_URL = \"https://raw.githubusercontent.com/Fyrd/caniuse/master/features-json/\";\n\n  // browser name dictionary\n  const BROWSERS = new Map([[\"chrome\", \"Chrome\"], [\"firefox\", \"Firefox\"], [\"ie\", \"IE\"], [\"edge\", \"Edge\"], [\"android\", \"Android\"], [\"safari\", \"Safari\"], [\"opera\", \"Opera\"], [\"bb\", \"Blackberry\"], [\"and_uc\", \"UC (Android)\"], [\"and_ff\", \"Firefox (Android)\"]]);\n\n  // Keys from https://github.com/Fyrd/caniuse/blob/master/CONTRIBUTING.md\n  const supportTitles = new Map([[\"y\", \"Supported.\"], [\"a\", \"Almost supported (aka Partial support).\"], [\"n\", \"No support, or disabled by default.\"], [\"p\", \"No support, but has Polyfill.\"], [\"u\", \"Support unknown.\"], [\"x\", \"Requires prefix to work.\"], [\"d\", \"Disabled by default (needs to enabled).\"]]);\n\n  async function run(conf) {\n    if (!conf.caniuse) {\n      return; // nothing to do.\n    }\n    normalizeConf(conf);\n    const { caniuse } = conf;\n    if (!caniuse.feature) {\n      return; // no feature to show\n    }\n    const { feature } = caniuse;\n    const featureURL = \"https://caniuse.com/#feat=\" + feature;\n    const link = (0, _utils.createResourceHint)({\n      hint: \"preconnect\",\n      href: \"https://raw.githubusercontent.com\"\n    });\n    document.head.appendChild(link);\n    document.head.appendChild(hyperHTML`\n    `);\n\n    const headDlElem = document.querySelector(\".head dl\");\n    const contentPromise = new Promise(async resolve => {\n      let content;\n      try {\n        const stats = await fetchAndCacheJson(caniuse);\n        content = createTableHTML(caniuse, stats);\n      } catch (err) {\n        console.error(err);\n        const msg = `Couldn't find feature \"${feature}\" on caniuse.com? ` + \"Please check the feature key on [caniuse.com](https://caniuse.com)\";\n        (0, _pubsubhub.pub)(\"error\", msg);\n        content = hyperHTML`caniuse.com`;\n      }\n      resolve(content);\n    });\n    const definitionPair = hyperHTML.bind(document.createDocumentFragment())`\n    
      Can I Use this API?
      \n
      ${{\n any: contentPromise,\n placeholder: \"Fetching data from caniuse.com...\"\n }}
      `;\n headDlElem.appendChild(definitionPair);\n await contentPromise;\n\n // remove from export\n (0, _pubsubhub.pub)(\"amend-user-config\", { caniuse: feature });\n (0, _pubsubhub.sub)(\"beforesave\", outputDoc => {\n hyperHTML.bind(outputDoc.querySelector(\".caniuse-stats\"))`\n caniuse.com`;\n });\n }\n\n /**\n * Normalizes `conf.caniuse` object to hold normalized configuration\n *\n * @param {Object} conf configuration settings\n */\n function normalizeConf(conf) {\n const DEFAULTS = {\n maxAge: 60 * 60 * 24 * 1000, // 24 hours (in ms)\n browsers: [\"chrome\", \"firefox\", \"safari\", \"edge\"],\n versions: 4\n };\n if (typeof conf.caniuse === \"string\") {\n conf.caniuse = _extends({ feature: conf.caniuse }, DEFAULTS);\n return;\n }\n if (Array.isArray(conf.caniuse.browsers)) {\n conf.caniuse.browsers = conf.caniuse.browsers.map(b => b.toLowerCase()).filter(isValidBrowser);\n } else {\n conf.caniuse.browsers = DEFAULTS.browsers;\n }\n Object.assign(conf.caniuse, DEFAULTS, _extends({}, conf.caniuse));\n function isValidBrowser(browser) {\n if (BROWSERS.has(browser)) {\n return true;\n }\n (0, _pubsubhub.pub)(\"warn\", `Ignoring invalid browser \"\\`${browser}\\`\" in ` + \"[`respecConfig.caniuse.browsers`](https://github.com/w3c/respec/wiki/caniuse)\");\n return false;\n }\n }\n\n /**\n * Get stats for canIUse table.\n *\n * @param {Object} caniuseConf normalized respecConfig.caniuse\n * @return {Object} Can I Use stats\n * @throws {Error} on failure\n */\n async function fetchAndCacheJson(caniuseConf) {\n const { apiURL, feature, maxAge } = caniuseConf;\n const url = apiURL ? apiURL.replace(\"{FEATURE}\", feature) : `${GH_USER_CONTENT_URL}${feature}.json`;\n const request = new Request(url);\n const response = await (0, _utils.fetchAndCache)(request, maxAge);\n const { stats } = await response.json();\n return stats;\n }\n\n /**\n * Get HTML element for the canIUse support table.\n *\n * @param {Object} stats CanIUse API results\n * @param {Object} conf respecConfig.caniuse\n */\n function createTableHTML(conf, stats) {\n // render the support table\n return hyperHTML`\n ${conf.browsers.map(browser => addBrowser(browser, conf.versions, stats[browser])).filter(elem => elem)}\n More info\n `;\n\n /**\n * Add a browser and it's support to table.\n *\n * @param {String} browser name of browser (as in CanIUse API response)\n * @param {Number} numVersions number of old browser versions to show\n * @param {Object} browserData stats data from api response\n * @param {Number} tabindex\n */\n function addBrowser(browser, numVersions, browserData) {\n if (!browserData) return;\n const getSupport = version => {\n const supportKeys = browserData[version].split(\"#\", 1)[0] // don't care about footnotes.\n .split(\" \").filter(item => item);\n const titles = supportKeys.filter(key => supportTitles.has(key)).map(key => supportTitles.get(key));\n return {\n support: supportKeys.join(\" \"),\n title: titles.join(\" \")\n };\n };\n const addBrowserVersion = version => {\n const { support, title } = getSupport(version);\n const cssClass = \"caniuse-cell \" + support;\n return `
    • ${version}
    • `;\n };\n\n const [latestVersion, ...olderVersions] = Object.keys(browserData).sort(_utils.semverCompare).slice(-numVersions).reverse();\n const { support, title } = getSupport(latestVersion);\n const cssClass = `caniuse-cell ${support}`;\n return hyperHTML`\n
      \n \n
        \n ${olderVersions.map(addBrowserVersion)}\n
      \n
      `;\n }\n }\n});\n//# sourceMappingURL=caniuse.js.map;\n", + "define('core/exporter',[\"exports\", \"core/utils\", \"core/pubsubhub\", \"deps/hyperhtml\"], function (exports, _utils, _pubsubhub) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.rsDocToDataURL = rsDocToDataURL;\n\n\n const mimeTypes = new Map([[\"text/html\", \"html\"], [\"application/xml\", \"xml\"]]);\n\n /**\n * Creates a dataURI from a ReSpec document. It also cleans up the document\n * removing various things.\n *\n * @param {String} mimeType mimetype. one of `mimeTypes` above\n * @param {Document} doc document to export. useful for testing purposes\n * @returns a stringified data-uri of document that can be saved.\n */\n /**\n * module: core/exporter\n * Exports a ReSpec document, based on mime type, so it can be saved, etc.\n * Also performs cleanup, removing things that shouldn't be in published documents.\n * That is, elements that have a \"removeOnSave\" css class.\n */\n\n function rsDocToDataURL(mimeType, doc = document) {\n const format = mimeTypes.get(mimeType);\n if (!format) {\n const validTypes = [...mimeTypes.values()].join(\", \");\n const msg = `Invalid format: ${mimeType}. Expected one of: ${validTypes}.`;\n throw new TypeError(msg);\n }\n const data = serialize(format, doc);\n const encodedString = encodeURIComponent(data);\n return `data:${mimeType};charset=utf-8,${encodedString}`;\n }\n\n function serialize(format, doc) {\n const cloneDoc = doc.cloneNode(true);\n cleanup(cloneDoc);\n let result = \"\";\n switch (format) {\n case \"xml\":\n result = new XMLSerializer().serializeToString(cloneDoc);\n break;\n default:\n {\n if (cloneDoc.doctype) {\n result += new XMLSerializer().serializeToString(cloneDoc.doctype);\n }\n result += cloneDoc.documentElement.outerHTML;\n }\n }\n return result;\n }\n\n function cleanup(cloneDoc) {\n const { head, body, documentElement } = cloneDoc;\n cleanupHyper(cloneDoc);\n\n cloneDoc.querySelectorAll(\".removeOnSave, #toc-nav\").forEach(elem => elem.remove());\n body.classList.remove(\"toc-sidebar\");\n (0, _utils.removeReSpec)(documentElement);\n\n const insertions = cloneDoc.createDocumentFragment();\n\n // Move meta viewport, as it controls the rendering on mobile.\n const metaViewport = cloneDoc.querySelector(\"meta[name='viewport']\");\n if (metaViewport && head.firstChild !== metaViewport) {\n insertions.appendChild(metaViewport);\n }\n\n // Move charset to near top, as it needs to be in the first 512 bytes.\n let metaCharset = cloneDoc.querySelector(\"meta[charset], meta[content*='charset=']\");\n if (!metaCharset) {\n metaCharset = hyperHTML``;\n }\n insertions.appendChild(metaCharset);\n\n // Add meta generator\n const respecVersion = `ReSpec ${window.respecVersion || \"Developer Channel\"}`;\n const metaGenerator = hyperHTML`\n \n `;\n\n insertions.appendChild(metaGenerator);\n head.insertBefore(insertions, head.firstChild);\n (0, _pubsubhub.pub)(\"beforesave\", documentElement);\n }\n\n function cleanupHyper({ documentElement: node }) {\n // collect first, or walker will cease too early\n const filter = comment => comment.textContent.startsWith(\"_hyper\");\n const walker = document.createTreeWalker(node, NodeFilter.SHOW_COMMENT, filter);\n for (const comment of [...walkTree(walker)]) {\n comment.remove();\n }\n }\n\n function* walkTree(walker) {\n while (walker.nextNode()) {\n yield walker.currentNode;\n }\n }\n});\n//# sourceMappingURL=exporter.js.map;\n", + "define('ui/save-html',[\"exports\", \"core/ui\", \"core/l10n\", \"core/pubsubhub\", \"core/exporter\", \"deps/hyperhtml\"], function (exports, _ui, _l10n, _pubsubhub, _exporter) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.name = undefined;\n exports.show = show;\n exports.exportDocument = exportDocument;\n const name = exports.name = \"ui/save-html\";\n\n // Create and download an EPUB 3 version of the content\n // Using (by default) the EPUB 3 conversion service set up at labs.w3.org/epub-generator\n // For more details on that service, see https://github.com/iherman/respec2epub\n // Module ui/save-html\n // Saves content to HTML when asked to\n const epubURL = new URL(\"https://labs.w3.org/epub-generator/cgi-bin/epub-generator.py\");\n epubURL.searchParams.append(\"type\", \"respec\");\n epubURL.searchParams.append(\"url\", document.location.href);\n\n const downloadLinks = [{\n id: \"respec-save-as-html\",\n fileName: \"index.html\",\n title: \"HTML\",\n type: \"text/html\",\n get href() {\n return (0, _exporter.rsDocToDataURL)(this.type);\n }\n }, {\n id: \"respec-save-as-xml\",\n fileName: \"index.xhtml\",\n title: \"XML\",\n type: \"application/xml\",\n get href() {\n return (0, _exporter.rsDocToDataURL)(this.type);\n }\n }, {\n id: \"respec-save-as-epub\",\n fileName: \"spec.epub\",\n title: \"EPUB 3\",\n type: \"application/epub+zip\",\n href: epubURL.href\n }];\n\n function toDownloadLink(details) {\n const { id, href, fileName, title, type } = details;\n return hyperHTML`\n _ui.ui.closeModal()}\n >${title}`;\n }\n\n const saveDialog = {\n async show(button) {\n await document.respecIsReady;\n const div = hyperHTML`\n
      \n ${downloadLinks.map(toDownloadLink)}\n
      `;\n _ui.ui.freshModal(_l10n.l10n[_l10n.lang].save_snapshot, div, button);\n }\n };\n\n const supportsDownload = \"download\" in HTMLAnchorElement.prototype;\n let button;\n if (supportsDownload) {\n button = _ui.ui.addCommand(_l10n.l10n[_l10n.lang].save_snapshot, \"ui/save-html\", \"Ctrl+Shift+Alt+S\", \"💾\");\n }\n\n function show() {\n if (!supportsDownload) return;\n saveDialog.show(button);\n }\n\n function exportDocument(format, mimeType) {\n const msg = \"Exporting via ui/save-html module's `exportDocument()` is deprecated and will be removed. \" + \"Use core/exporter `rsDocToDataURL()` instead.\";\n (0, _pubsubhub.pub)(\"warn\", msg);\n console.warn(msg);\n return (0, _exporter.rsDocToDataURL)(mimeType);\n }\n});\n//# sourceMappingURL=save-html.js.map;\n", + "define('ui/search-specref',[\"exports\", \"core/ui\", \"core/biblio\", \"core/l10n\"], function (exports, _ui, _biblio, _l10n) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.show = undefined;\n\n\n const button = _ui.ui.addCommand(_l10n.l10n[_l10n.lang].search_specref, \"ui/search-specref\", \"Ctrl+Shift+Alt+space\", \"🔎\"); // Module ui/search-specref\n // Search Specref database\n\n const specrefURL = \"https://specref.herokuapp.com/\";\n const refSearchURL = `${specrefURL}search-refs`;\n const reveseLookupURL = `${specrefURL}reverse-lookup`;\n const form = document.createElement(\"form\");\n const renderer = window.hyperHTML.bind(form);\n const resultList = hyperHTML.bind(document.createElement(\"div\"));\n\n form.id = \"specref-ui\";\n\n function renderResults(resultMap, query, timeTaken) {\n if (!resultMap.size) {\n return resultList`\n

      \n Your search - ${query} -\n did not match any references.\n

      \n `;\n }\n const wires = Array.from(resultMap.entries()).slice(0, 99).map(toDefinitionPair).reduce((collector, pair) => collector.concat(pair), []);\n return resultList`\n

      \n ${resultMap.size} results (${timeTaken} seconds).\n ${resultMap.size > 99 ? \"First 100 results.\" : \"\"}\n

      \n
      ${wires}
      \n `;\n }\n\n function toDefinitionPair([key, entry]) {\n return hyperHTML.wire(entry)`\n
      \n [${key}]\n
      \n
      ${(0, _biblio.wireReference)(entry)}
      \n `;\n }\n\n function resultProcessor({ includeVersions } = { includeVersions: false }) {\n return (...fetchedData) => {\n const combinedResults = fetchedData.reduce((collector, resultObj) => Object.assign(collector, resultObj), {});\n const results = new Map(Object.entries(combinedResults));\n // remove aliases\n Array.from(results.entries()).filter(([, entry]) => entry.aliasOf).map(([key]) => key).reduce((results, key) => results.delete(key) && results, results);\n // Remove versions, if asked to\n if (!includeVersions) {\n Array.from(results.values()).filter(entry => typeof entry === \"object\" && \"versions\" in entry).reduce((collector, entry) => collector.concat(entry.versions), []).forEach(version => {\n results.delete(version);\n });\n }\n // Remove legacy string entries\n Array.from(results.entries()).filter(([, entry]) => typeof entry !== \"object\").reduce((result, [key]) => results.delete(key) && results, results);\n return results;\n };\n }\n\n form.addEventListener(\"submit\", async ev => {\n ev.preventDefault();\n const { searchBox } = form;\n const query = searchBox.value;\n if (!query) {\n searchBox.focus();\n return;\n }\n render({ state: \"Searching Specref…\" });\n const refSearch = new URL(refSearchURL);\n refSearch.searchParams.set(\"q\", query);\n const reverseLookup = new URL(reveseLookupURL);\n reverseLookup.searchParams.set(\"urls\", query);\n try {\n const startTime = performance.now();\n const jsonData = await Promise.all([fetch(refSearch).then(response => response.json()), fetch(reverseLookup).then(response => response.json())]);\n const { checked: includeVersions } = form.includeVersions;\n const processResults = resultProcessor({ includeVersions });\n const results = processResults(...jsonData);\n render({\n query,\n results,\n state: \"\",\n timeTaken: Math.round(performance.now() - startTime) / 1000\n });\n } catch (err) {\n console.error(err);\n render({ state: \"Error! Couldn't do search.\" });\n } finally {\n searchBox.focus();\n }\n });\n\n function show() {\n render();\n _ui.ui.freshModal(_l10n.l10n[_l10n.lang].search_specref, form, button);\n form.querySelector(\"input[type=search]\").focus();\n }\n\n const mast = hyperHTML.wire()`\n
      \n

      \n An Open-Source, Community-Maintained Database of\n Web Standards & Related References.\n

      \n
      \n
      \n \n \n Search\n \n \n
      \n`;\n\n function render({ state, results, timeTaken, query } = { state: \"\" }) {\n if (!results) {\n renderer`
      ${mast}
      `;\n return;\n }\n renderer`\n
      ${mast}
      \n \n \n `;\n }\n\n exports.show = show;\n});\n//# sourceMappingURL=search-specref.js.map;\n", + "define('ui/dfn-list',[\"exports\", \"core/ui\", \"core/l10n\", \"deps/hyperhtml\"], function (exports, _ui, _l10n) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.show = undefined;\n\n\n const button = _ui.ui.addCommand(_l10n.l10n[_l10n.lang].definition_list, \"ui/dfn-list\", \"Ctrl+Shift+Alt+D\", \"📔\"); /// Module ui/dfn-list\n // Displays all definitions with links to the defining element.\n\n\n const ul = document.createElement(\"ul\");\n ul.classList.add(\"respec-dfn-list\");\n const render = window.hyperHTML.bind(ul);\n\n ul.addEventListener(\"click\", ev => {\n _ui.ui.closeModal();\n ev.stopPropagation();\n });\n\n function show() {\n const definitionLinks = Object.entries(respecConfig.definitionMap).sort(([keyA], [keyB]) => keyA.localeCompare(keyB)).map(([key, $dfns]) => {\n const [dfn] = $dfns[0];\n return window.hyperHTML.wire(dfn, \":li>a\")`\n
    • \n \n ${dfn.textContent}\n \n
    • \n `;\n });\n render`${definitionLinks}`;\n _ui.ui.freshModal(_l10n.l10n[_l10n.lang].list_of_definitions, ul, button);\n }\n\n exports.show = show;\n});\n//# sourceMappingURL=dfn-list.js.map;\n", + "define('ui/about-respec',[\"exports\", \"core/ui\", \"core/l10n\", \"deps/hyperhtml\"], function (exports, _ui, _l10n) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.show = undefined;\n\n\n // window.respecVersion is added at build time (see tools/builder.js)\n window.respecVersion = window.respecVersion || \"Developer Edition\"; // Module ui/about-respec\n // A simple about dialog with pointer to the help\n\n const div = document.createElement(\"div\");\n const render = hyperHTML.bind(div);\n const button = _ui.ui.addCommand(`About ${window.respecVersion}`, \"ui/about-respec\", \"Ctrl+Shift+Alt+A\", \"ℹ️\");\n\n function show() {\n _ui.ui.freshModal(`${_l10n.l10n[_l10n.lang].about_respec} - ${window.respecVersion}`, div, button);\n let entries = [];\n if (\"getEntriesByType\" in performance) {\n performance.getEntriesByType(\"measure\").sort((a, b) => b.duration - a.duration).map(({ name, duration }) => {\n const fixedSize = duration.toFixed(2);\n const humanDuration = fixedSize > 1000 ? `${Math.round(fixedSize / 1000.0)} second(s)` : `${fixedSize} milliseconds`;\n return { name, duration: humanDuration };\n }).map(perfEntryToTR).reduce((collector, entry) => {\n collector.push(entry);\n return collector;\n }, entries);\n }\n render`\n

      \n ReSpec is a document production toolchain, with a notable focus on W3C specifications.\n

      \n

      \n Documentation,\n Bugs.\n

      \n \n \n \n \n \n \n \n \n ${entries}\n \n`;\n }\n\n function perfEntryToTR({ name, duration }) {\n const render = hyperHTML.bind(document.createElement(\"tr\"));\n const moduleURL = `https://github.com/w3c/respec/tree/develop/src/${name}.js`;\n return render`\n \n \n ${name}\n \n \n \n ${duration} \n \n `;\n }\n\n exports.show = show;\n});\n//# sourceMappingURL=about-respec.js.map;\n", + "define('core/seo',[\"exports\"], function (exports) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.run = run;\n /**\n * This Module adds a metatag description to the document, based on the\n * first paragraph of the abstract.\n */\n\n const name = exports.name = \"core/seo\";\n\n async function run(conf, doc, cb) {\n // This is not critical, so let's continue other processing first\n cb();\n await doc.respecIsReady;\n const firstParagraph = doc.querySelector(\"#abstract p:first-of-type\");\n if (!firstParagraph) {\n return; // no abstract, so nothing to do\n }\n insertMetaDescription(firstParagraph);\n }\n\n function insertMetaDescription(firstParagraph) {\n // Normalize whitespace: trim, remove new lines, tabs, etc.\n const doc = firstParagraph.ownerDocument;\n const content = firstParagraph.textContent.replace(/\\s+/, \" \").trim();\n const metaElem = doc.createElement(\"meta\");\n metaElem.name = \"description\";\n metaElem.content = content;\n doc.head.appendChild(metaElem);\n }\n});\n//# sourceMappingURL=seo.js.map;\n", + "define('w3c/seo',[\"exports\", \"core/pubsubhub\"], function (exports, _pubsubhub) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.name = undefined;\n exports.run = run;\n const name = exports.name = \"w3c/seo\"; // Module w3c/seo\n // Manages SEO information for documents\n // e.g. set the canonical URL for the document if configured\n function run(conf, doc, cb) {\n var trLatestUri = conf.shortName ? \"https://www.w3.org/TR/\" + conf.shortName + \"/\" : null;\n switch (conf.canonicalURI) {\n case \"edDraft\":\n if (conf.edDraftURI) {\n conf.canonicalURI = new URL(conf.edDraftURI, doc.location).href;\n } else {\n (0, _pubsubhub.pub)(\"warn\", \"Canonical URI set to edDraft, \" + \"but no edDraftURI is set in configuration\");\n conf.canonicalURI = null;\n }\n break;\n case \"TR\":\n if (trLatestUri) {\n conf.canonicalURI = trLatestUri;\n } else {\n (0, _pubsubhub.pub)(\"warn\", \"Canonical URI set to TR, but \" + \"no shortName is set in configuration\");\n conf.canonicalURI = null;\n }\n break;\n default:\n if (conf.canonicalURI) {\n try {\n conf.canonicalURI = new URL(conf.canonicalURI, doc.location).href;\n } catch (err) {\n (0, _pubsubhub.pub)(\"warn\", \"CanonicalURI is an invalid URL: \" + err.message);\n conf.canonicalURI = null;\n }\n } else if (trLatestUri) {\n conf.canonicalURI = trLatestUri;\n }\n }\n if (conf.canonicalURI) {\n var linkElem = doc.createElement(\"link\");\n linkElem.setAttribute(\"rel\", \"canonical\");\n linkElem.setAttribute(\"href\", conf.canonicalURI);\n doc.head.appendChild(linkElem);\n }\n cb();\n if (conf.doJsonLd) {\n addJSONLDInfo(conf, doc);\n }\n }\n\n async function addJSONLDInfo(conf, doc) {\n await doc.respecIsReady;\n // Content for JSON\n const type = [\"TechArticle\"];\n if (conf.rdfStatus) type.push(conf.rdfStatus);\n\n const jsonld = {\n \"@context\": [\"http://schema.org\", {\n \"@vocab\": \"http://schema.org/\",\n \"@language\": doc.documentElement.lang || \"en\",\n w3p: \"http://www.w3.org/2001/02pd/rec54#\",\n foaf: \"http://xmlns.com/foaf/0.1/\",\n datePublished: { \"@type\": \"http://www.w3.org/2001/XMLSchema#date\" },\n inLanguage: { \"@language\": null },\n isBasedOn: { \"@type\": \"@id\" },\n license: { \"@type\": \"@id\" }\n }],\n id: conf.canonicalURI || conf.thisVersion,\n type,\n name: conf.title,\n inLanguage: doc.documentElement.lang || \"en\",\n license: conf.licenseInfo.url,\n datePublished: conf.dashDate,\n copyrightHolder: {\n name: \"World Wide Web Consortium\",\n url: \"https://www.w3.org/\"\n },\n discussionUrl: conf.issueBase,\n alternativeHeadline: conf.subtitle,\n isBasedOn: conf.prevVersion\n };\n\n // add any additional copyright holders\n if (conf.additionalCopyrightHolders) {\n const addl = Array.isArray(conf.additionalCopyrightHolders) ? conf.additionalCopyrightHolders : [conf.additionalCopyrightHolders];\n jsonld.copyrightHolder = [jsonld.copyrightHolder, ...addl.map(h => ({ name: h }))];\n }\n\n // description from meta description\n const description = doc.head.querySelector(\"meta[name=description]\");\n if (description) {\n jsonld.description = description.content;\n }\n\n // Editors\n if (conf.editors) {\n jsonld.editor = conf.editors.map(addPerson);\n }\n if (conf.authors) {\n jsonld.contributor = conf.authors.map(addPerson);\n }\n\n // normative and informative references\n jsonld.citation = [...conf.normativeReferences, ...conf.informativeReferences].map(ref => conf.biblio[ref]).filter(ref => typeof ref === \"object\").map(addRef);\n\n const script = doc.createElement(\"script\");\n script.type = \"application/ld+json\";\n script.textContent = JSON.stringify(jsonld, null, 2);\n doc.head.appendChild(script);\n }\n\n // Turn editors and authors into a list of JSON-LD relationships\n function addPerson({ name, url, mailto, company, companyURL }) {\n const ed = {\n type: \"Person\",\n name,\n url,\n \"foaf:mbox\": mailto\n };\n if (company || companyURL) {\n ed.worksFor = {\n name: company,\n url: companyURL\n };\n }\n return ed;\n }\n\n // Create a reference URL from the ref\n function addRef(ref) {\n const { href: id, title: name, href: url } = ref;\n return {\n id,\n type: \"TechArticle\",\n name,\n url\n };\n }\n});\n//# sourceMappingURL=seo.js.map;\n", + "\ndefine('deps/text!core/css/github.css',[],function () { return '/*\\n\\ngithub.com style (c) Vasily Polovnyov \\n\\n*/\\n\\n.hljs {\\n display: block;\\n overflow-x: auto;\\n padding: 0.5em;\\n color: #333;\\n background: #f8f8f8;\\n}\\n\\n.hljs-comment,\\n.hljs-quote {\\n color: #998;\\n font-style: italic;\\n}\\n\\n.hljs-keyword,\\n.hljs-selector-tag,\\n.hljs-subst {\\n color: #333;\\n font-weight: bold;\\n}\\n\\n.hljs-number,\\n.hljs-literal,\\n.hljs-variable,\\n.hljs-template-variable,\\n.hljs-tag .hljs-attr {\\n color: #008080;\\n}\\n\\n.hljs-string,\\n.hljs-doctag {\\n color: #d14;\\n}\\n\\n.hljs-title,\\n.hljs-section,\\n.hljs-selector-id {\\n color: #900;\\n font-weight: bold;\\n}\\n\\n.hljs-subst {\\n font-weight: normal;\\n}\\n\\n.hljs-type,\\n.hljs-class .hljs-title {\\n color: #458;\\n font-weight: bold;\\n}\\n\\n.hljs-tag,\\n.hljs-name,\\n.hljs-attribute {\\n color: #000080;\\n font-weight: normal;\\n}\\n\\n.hljs-regexp,\\n.hljs-link {\\n color: #009926;\\n}\\n\\n.hljs-symbol,\\n.hljs-bullet {\\n color: #990073;\\n}\\n\\n.hljs-built_in,\\n.hljs-builtin-name {\\n color: #0086b3;\\n}\\n\\n.hljs-meta {\\n color: #999;\\n font-weight: bold;\\n}\\n\\n.hljs-deletion {\\n background: #fdd;\\n}\\n\\n.hljs-addition {\\n background: #dfd;\\n}\\n\\n.hljs-emphasis {\\n font-style: italic;\\n}\\n\\n.hljs-strong {\\n font-weight: bold;\\n}\\n';});\n\n", + "\ndefine('deps/text!core/../../worker/respec-worker.js',[],function () { return '// ReSpec Worker v0.1.1\\n\"use strict\";\\ntry {\\n importScripts(\"https://www.w3.org/Tools/respec/respec-highlight.js\");\\n hljs.configure({\\n tabReplace: \" \", // 2 spaces\\n languages: [\"abnf\", \"css\", \"http\", \"javascript\", \"json\", \"markdown\", \"xml\"],\\n });\\n} catch (err) {\\n console.error(\"Network error loading/configuring highlighter\", err);\\n}\\n\\nself.addEventListener(\"message\", ({ data: originalData }) => {\\n const data = Object.assign({}, originalData);\\n switch (data.action) {\\n case \"highlight\":\\n const { code } = data;\\n const langs = data.languages.length ? data.languages : undefined;\\n try {\\n const { value, language } = self.hljs.highlightAuto(code, langs);\\n Object.assign(data, { value, language });\\n } catch (err) {\\n console.error(\"Could not transform some code?\", err);\\n // Post back the original code\\n Object.assign(data, { value: code, language: \"\" });\\n }\\n }\\n self.postMessage(data);\\n});\\n';});\n\n", + "define('core/worker',[\"exports\", \"core/utils\", \"deps/text!../../worker/respec-worker.js\"], function (exports, _utils, _respecWorker) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.worker = exports.name = undefined;\n\n var _respecWorker2 = _interopRequireDefault(_respecWorker);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n /**\n * Module core/worker\n *\n * Exports a Web Worker for ReSpec, allowing for\n * multi-threaded processing of things.\n */\n const name = exports.name = \"core/worker\";\n\n // Opportunistically preload syntax highlighter, which is used by the worker\n\n // Opportunistically preload syntax highlighter\n const hint = {\n hint: \"preload\",\n href: \"https://www.w3.org/Tools/respec/respec-highlight.js\",\n as: \"script\"\n };\n const link = (0, _utils.createResourceHint)(hint);\n document.head.appendChild(link);\n\n const workerURL = URL.createObjectURL(new Blob([_respecWorker2.default], { type: \"application/javascript\" }));\n const worker = exports.worker = new Worker(workerURL);\n});\n//# sourceMappingURL=worker.js.map;\n", + "define('core/highlight',[\"exports\", \"deps/text!core/css/github.css\", \"core/worker\"], function (exports, _github, _worker) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.name = undefined;\n exports.run = run;\n\n var _github2 = _interopRequireDefault(_github);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n /**\n * Module core/highlight\n *\n * Performs syntax highlighting to all pre and code elements.\n */\n const name = exports.name = \"core/highlight\";\n\n // Opportunistically insert the style into the head to reduce FOUC.\n const codeStyle = document.createElement(\"style\");\n codeStyle.textContent = _github2.default;\n document.head.appendChild(codeStyle);\n function getLanguageHint(classList) {\n return Array.from(classList).filter(item => item !== \"highlight\" && item !== \"nolinks\").map(item => item.toLowerCase());\n }\n\n async function run(conf) {\n // Nothing to highlight\n if (conf.noHighlightCSS) {\n codeStyle.remove();\n return;\n }\n const highlightables = Array.from(document.querySelectorAll(\"pre:not(.idl):not(.nohighlight), code.highlight\"));\n // Nothing to highlight\n if (highlightables.length === 0) {\n codeStyle.remove();\n return;\n }\n const promisesToHighlight = highlightables.map((element, i) => {\n return new Promise(resolve => {\n if (element.textContent.trim() === \"\") {\n return resolve(); // no work to do\n }\n const done = () => {\n element.setAttribute(\"aria-busy\", \"false\");\n resolve();\n };\n // We always resolve, even if we couldn't actually highlight\n const timeoutId = setTimeout(() => {\n console.error(\"Timed-out waiting for highlight:\", element);\n done();\n }, 4000);\n const msg = {\n action: \"highlight\",\n code: element.textContent,\n id: `highlight:${i}`,\n languages: getLanguageHint(element.classList)\n };\n _worker.worker.addEventListener(\"message\", function listener(ev) {\n const { data: { id, code, language, value } } = ev;\n if (id !== msg.id) {\n return; // not for us!\n }\n element.innerHTML = value;\n if (element.localName === \"pre\") {\n element.classList.add(\"hljs\");\n }\n if (language) {\n element.classList.add(language);\n }\n clearTimeout(timeoutId);\n _worker.worker.removeEventListener(\"message\", listener);\n done();\n });\n element.setAttribute(\"aria-busy\", \"true\");\n _worker.worker.postMessage(msg);\n });\n });\n await Promise.all(promisesToHighlight);\n }\n});\n//# sourceMappingURL=highlight.js.map;\n", + "\ndefine('deps/text!core/images/clipboard.svg',[],function () { return '';});\n\n", + "/*!\n * clipboard.js v2.0.1\n * https://zenorocha.github.io/clipboard.js\n * \n * Licensed MIT © Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine('deps/clipboard',[], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 3);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [module, __webpack_require__(7)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if (typeof exports !== \"undefined\") {\n factory(module, require('select'));\n } else {\n var mod = {\n exports: {}\n };\n factory(mod, global.select);\n global.clipboardAction = mod.exports;\n }\n})(this, function (module, _select) {\n 'use strict';\n\n var _select2 = _interopRequireDefault(_select);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var ClipboardAction = function () {\n /**\n * @param {Object} options\n */\n function ClipboardAction(options) {\n _classCallCheck(this, ClipboardAction);\n\n this.resolveOptions(options);\n this.initSelection();\n }\n\n /**\n * Defines base properties passed from constructor.\n * @param {Object} options\n */\n\n\n _createClass(ClipboardAction, [{\n key: 'resolveOptions',\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this.action = options.action;\n this.container = options.container;\n this.emitter = options.emitter;\n this.target = options.target;\n this.text = options.text;\n this.trigger = options.trigger;\n\n this.selectedText = '';\n }\n }, {\n key: 'initSelection',\n value: function initSelection() {\n if (this.text) {\n this.selectFake();\n } else if (this.target) {\n this.selectTarget();\n }\n }\n }, {\n key: 'selectFake',\n value: function selectFake() {\n var _this = this;\n\n var isRTL = document.documentElement.getAttribute('dir') == 'rtl';\n\n this.removeFake();\n\n this.fakeHandlerCallback = function () {\n return _this.removeFake();\n };\n this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true;\n\n this.fakeElem = document.createElement('textarea');\n // Prevent zooming on iOS\n this.fakeElem.style.fontSize = '12pt';\n // Reset box model\n this.fakeElem.style.border = '0';\n this.fakeElem.style.padding = '0';\n this.fakeElem.style.margin = '0';\n // Move element out of screen horizontally\n this.fakeElem.style.position = 'absolute';\n this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px';\n // Move element to the same position vertically\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n this.fakeElem.style.top = yPosition + 'px';\n\n this.fakeElem.setAttribute('readonly', '');\n this.fakeElem.value = this.text;\n\n this.container.appendChild(this.fakeElem);\n\n this.selectedText = (0, _select2.default)(this.fakeElem);\n this.copyText();\n }\n }, {\n key: 'removeFake',\n value: function removeFake() {\n if (this.fakeHandler) {\n this.container.removeEventListener('click', this.fakeHandlerCallback);\n this.fakeHandler = null;\n this.fakeHandlerCallback = null;\n }\n\n if (this.fakeElem) {\n this.container.removeChild(this.fakeElem);\n this.fakeElem = null;\n }\n }\n }, {\n key: 'selectTarget',\n value: function selectTarget() {\n this.selectedText = (0, _select2.default)(this.target);\n this.copyText();\n }\n }, {\n key: 'copyText',\n value: function copyText() {\n var succeeded = void 0;\n\n try {\n succeeded = document.execCommand(this.action);\n } catch (err) {\n succeeded = false;\n }\n\n this.handleResult(succeeded);\n }\n }, {\n key: 'handleResult',\n value: function handleResult(succeeded) {\n this.emitter.emit(succeeded ? 'success' : 'error', {\n action: this.action,\n text: this.selectedText,\n trigger: this.trigger,\n clearSelection: this.clearSelection.bind(this)\n });\n }\n }, {\n key: 'clearSelection',\n value: function clearSelection() {\n if (this.trigger) {\n this.trigger.focus();\n }\n\n window.getSelection().removeAllRanges();\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.removeFake();\n }\n }, {\n key: 'action',\n set: function set() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy';\n\n this._action = action;\n\n if (this._action !== 'copy' && this._action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n }\n },\n get: function get() {\n return this._action;\n }\n }, {\n key: 'target',\n set: function set(target) {\n if (target !== undefined) {\n if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) {\n if (this.action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n\n this._target = target;\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n }\n },\n get: function get() {\n return this._target;\n }\n }]);\n\n return ClipboardAction;\n }();\n\n module.exports = ClipboardAction;\n});\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar is = __webpack_require__(6);\nvar delegate = __webpack_require__(5);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [module, __webpack_require__(0), __webpack_require__(2), __webpack_require__(1)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if (typeof exports !== \"undefined\") {\n factory(module, require('./clipboard-action'), require('tiny-emitter'), require('good-listener'));\n } else {\n var mod = {\n exports: {}\n };\n factory(mod, global.clipboardAction, global.tinyEmitter, global.goodListener);\n global.clipboard = mod.exports;\n }\n})(this, function (module, _clipboardAction, _tinyEmitter, _goodListener) {\n 'use strict';\n\n var _clipboardAction2 = _interopRequireDefault(_clipboardAction);\n\n var _tinyEmitter2 = _interopRequireDefault(_tinyEmitter);\n\n var _goodListener2 = _interopRequireDefault(_goodListener);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Clipboard = function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n function Clipboard(trigger, options) {\n _classCallCheck(this, Clipboard);\n\n var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this));\n\n _this.resolveOptions(options);\n _this.listenClick(trigger);\n return _this;\n }\n\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n _createClass(Clipboard, [{\n key: 'resolveOptions',\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = _typeof(options.container) === 'object' ? options.container : document.body;\n }\n }, {\n key: 'listenClick',\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = (0, _goodListener2.default)(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n }, {\n key: 'onClick',\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n\n if (this.clipboardAction) {\n this.clipboardAction = null;\n }\n\n this.clipboardAction = new _clipboardAction2.default({\n action: this.action(trigger),\n target: this.target(trigger),\n text: this.text(trigger),\n container: this.container,\n trigger: trigger,\n emitter: this\n });\n }\n }, {\n key: 'defaultAction',\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n }, {\n key: 'defaultTarget',\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n }, {\n key: 'defaultText',\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.listener.destroy();\n\n if (this.clipboardAction) {\n this.clipboardAction.destroy();\n this.clipboardAction = null;\n }\n }\n }], [{\n key: 'isSupported',\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n\n return support;\n }\n }]);\n\n return Clipboard;\n }(_tinyEmitter2.default);\n\n /**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n function getAttributeValue(suffix, element) {\n var attribute = 'data-clipboard-' + suffix;\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n }\n\n module.exports = Clipboard;\n});\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar closest = __webpack_require__(4);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports) {\n\nfunction select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ })\n/******/ ]);\n});\n", + "define('core/webidl-clipboard',[\"exports\", \"deps/text!core/images/clipboard.svg\", \"deps/clipboard\"], function (exports, _clipboard, _clipboard3) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.name = undefined;\n exports.run = run;\n\n var _clipboard2 = _interopRequireDefault(_clipboard);\n\n var _clipboard4 = _interopRequireDefault(_clipboard3);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n /**\n * Module core/webidl-clipboard\n *\n * This module adds a button to each IDL pre making it possible to copy\n * well-formatted IDL to the clipboard.\n *\n */\n const name = exports.name = \"core/webidl-clipboard\";\n\n // This button serves a prototype that we clone as needed.\n const copyButton = document.createElement(\"button\");\n copyButton.innerHTML = _clipboard2.default;\n copyButton.title = \"Copy IDL to clipboard\";\n copyButton.classList.add(\"respec-button-copy-paste\", \"removeOnSave\");\n\n const clipboardOps = {\n text: trigger => {\n return document.querySelector(trigger.dataset.clipboardTarget).textContent.replace(/\\ +/gm, \" \").replace(/^\\ /gm, \" \").replace(/^};\\n/gm, \"};\\n\").trim();\n }\n };\n\n async function run(conf, doc, cb) {\n Array.from(doc.querySelectorAll(\"pre.idl\")).map(elem => {\n const button = copyButton.cloneNode(true);\n const definition = elem.querySelector(`span[id^=\"idl-def-\"], span[id^=\"dom-\"]`);\n let target = \"#\";\n if (definition === null && elem.id === \"\") {\n if (elem.parentElement.id === \"idl-index\") {\n target += \"actual-idl-index\";\n } else {\n elem.id = `idl-${String(Math.random()).substr(2)}`;\n target += elem.id;\n }\n } else {\n target += elem.id || definition.id;\n }\n return { button, elem, target };\n }).forEach(({ elem, button, target }) => {\n const wrapper = doc.createElement(\"div\");\n button.dataset.clipboardTarget = target;\n elem.parentElement.replaceChild(wrapper, elem);\n wrapper.appendChild(button);\n wrapper.appendChild(elem);\n });\n const clipboard = new _clipboard4.default(\".respec-button-copy-paste\", clipboardOps);\n clipboard.on(\"success\", e => e.clearSelection());\n cb();\n }\n});\n//# sourceMappingURL=webidl-clipboard.js.map;\n", + "define('core/data-tests',[\"exports\", \"core/pubsubhub\", \"core/l10n\"], function (exports, _pubsubhub, _l10n) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.name = undefined;\n exports.run = run;\n /**\n * Module core/data-tests\n *\n * Allows specs to link to test files in a test suite, by adding `details` of where\n * particular tests for a testable assertion can be found.\n *\n * `data-tests` takes a space separated list of URLs, e.g. data-test=\"foo.html bar.html\".\n *\n * Docs: https://github.com/w3c/respec/wiki/data-tests\n */\n const l10n = {\n en: {\n missing_test_suite_uri: \"Found tests in your spec, but missing '\" + \"[`testSuiteURI`](https://github.com/w3c/respec/wiki/testSuiteURI)' in your ReSpec config.\",\n tests: \"tests\",\n test: \"test\"\n }\n };\n\n const name = exports.name = \"core/data-tests\";\n\n const lang = _l10n.lang in l10n ? _l10n.lang : \"en\";\n\n function toListItem(href) {\n const emojiList = [];\n const [testFile] = new URL(href).pathname.split(\"/\").reverse();\n const testParts = testFile.split(\".\");\n let [testFileName] = testParts;\n\n const isSecureTest = testParts.find(part => part === \"https\");\n if (isSecureTest) {\n const requiresConnectionEmoji = document.createElement(\"span\");\n requiresConnectionEmoji.innerHTML = \"🔒\";\n requiresConnectionEmoji.setAttribute(\"aria-label\", \"requires a secure connection\");\n requiresConnectionEmoji.setAttribute(\"title\", \"Test requires HTTPS\");\n testFileName = testFileName.replace(\".https\", \"\");\n emojiList.push(requiresConnectionEmoji);\n }\n\n const isManualTest = testFileName.split(\".\").join(\"-\").split(\"-\").find(part => part === \"manual\");\n if (isManualTest) {\n const manualPerformEmoji = document.createElement(\"span\");\n manualPerformEmoji.innerHTML = \"💪\";\n manualPerformEmoji.setAttribute(\"aria-label\", \"the test must be run manually\");\n manualPerformEmoji.setAttribute(\"title\", \"Manual test\");\n testFileName = testFileName.replace(\"-manual\", \"\");\n emojiList.push(manualPerformEmoji);\n }\n\n const testList = hyperHTML.bind(document.createElement(\"li\"))`\n \n ${testFileName}\n ${emojiList}\n `;\n return testList;\n }\n\n function run(conf) {\n const testables = document.querySelectorAll(\"[data-tests]\");\n if (!testables.length) {\n return;\n }\n if (!conf.testSuiteURI) {\n (0, _pubsubhub.pub)(\"error\", l10n[lang].missing_test_suite_uri);\n return;\n }\n Array.from(testables).filter(elem => elem.dataset.tests)\n // Render details + ul, returns HTMLDetailsElement\n .map(elem => {\n const details = document.createElement(\"details\");\n const renderer = hyperHTML.bind(details);\n const testURLs = elem.dataset.tests.split(/,/gm).map(url => url.trim()).map(url => {\n let href = \"\";\n try {\n href = new URL(url, conf.testSuiteURI).href;\n } catch (err) {\n (0, _pubsubhub.pub)(\"warn\", `${l10n[lang].bad_uri}: ${url}`);\n }\n return href;\n });\n details.classList.add(\"respec-tests-details\", \"removeOnSave\");\n renderer`\n \n tests: ${testURLs.length}\n \n
        ${testURLs.map(toListItem)}
      \n `;\n return { elem, details };\n }).forEach(({ elem, details }) => {\n delete elem.dataset.tests;\n elem.insertAdjacentElement(\"beforeend\", details);\n });\n }\n});\n//# sourceMappingURL=data-tests.js.map;\n", + "define('core/list-sorter',[\"exports\", \"core/pubsubhub\"], function (exports, _pubsubhub) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.name = undefined;\n exports.sortListItems = sortListItems;\n exports.sortDefinitionTerms = sortDefinitionTerms;\n exports.run = run;\n const name = exports.name = \"core/list-sorter\";\n\n function makeSorter(direction) {\n return ({ textContent: a }, { textContent: b }) => {\n return direction === \"ascending\" ? a.localeCompare(b) : b.localeCompare(a);\n };\n }\n /**\n * Shallow sort list items in OL, and UL elements.\n *\n * @param {HTMLUListElement} elem\n * @returns {DocumentFragment}\n */\n function sortListItems(elem, dir) {\n const elements = getDirectDescendents(elem, \"li\");\n const sortedElements = elements.sort(makeSorter(dir)).reduce((frag, elem) => {\n frag.appendChild(elem);\n return frag;\n }, document.createDocumentFragment());\n return sortedElements;\n }\n\n function getDirectDescendents(elem, wantedDescendentName) {\n let elements;\n try {\n elements = elem.querySelectorAll(`:scope > ${wantedDescendentName}`);\n } catch (err) {\n let tempId = \"\";\n // We give a temporary id, to overcome lack of \":scope\" support in Edge.\n if (!elem.id) {\n tempId = `temp-${String(Math.random()).substr(2)}`;\n elem.id = tempId;\n }\n const query = `#${elem.id} > ${wantedDescendentName}`;\n elements = elem.parentElement.querySelectorAll(query);\n if (tempId) {\n elem.id = \"\";\n }\n }\n return [...elements];\n }\n\n /**\n * Shallow sort a definition list based on its definition terms (dt) elements.\n *\n * @param {HTMLDListElement} dl\n * @returns {DocumentFragment}\n */\n function sortDefinitionTerms(dl, dir) {\n const elements = getDirectDescendents(dl, \"dt\");\n const sortedElements = elements.sort(makeSorter(dir)).reduce((frag, elem) => {\n const { nodeType, nodeName } = elem;\n const children = document.createDocumentFragment();\n let { nextSibling: next } = elem;\n while (next) {\n if (!next.nextSibling) {\n break;\n }\n children.appendChild(next.cloneNode(true));\n const { nodeType: nextType, nodeName: nextName } = next.nextSibling;\n const isSameType = nextType === nodeType && nextName === nodeName;\n if (isSameType) {\n break;\n }\n next = next.nextSibling;\n }\n children.prepend(elem.cloneNode(true));\n frag.appendChild(children);\n return frag;\n }, document.createDocumentFragment());\n return sortedElements;\n }\n\n function run(conf, doc, cb) {\n for (const elem of document.querySelectorAll(\"[data-sort]\")) {\n let sortedElems;\n const dir = elem.dataset.sort || \"ascending\";\n switch (elem.localName) {\n case \"dl\":\n sortedElems = sortDefinitionTerms(elem, dir);\n break;\n case \"ol\":\n case \"ul\":\n sortedElems = sortListItems(elem, dir);\n break;\n default:\n (0, _pubsubhub.pub)(\"warning\", `ReSpec can't sort ${elem.localName} elements.`);\n }\n if (sortedElems) {\n const range = document.createRange();\n range.selectNodeContents(elem);\n range.deleteContents();\n elem.appendChild(sortedElems);\n }\n }\n cb();\n }\n});\n//# sourceMappingURL=list-sorter.js.map;\n", + "\ndefine('deps/text!core/css/var.css',[],function () { return 'var:hover {\\n border-bottom: 1px dotted;\\n cursor: pointer;\\n}\\n\\nvar.respec-hl {\\n color: var(--color, #000);\\n background-color: var(--bg-color);\\n box-shadow: 0 0 0px 2px var(--bg-color);\\n}\\n\\n/* highlight colors\\n https://github.com/w3c/tr-design/issues/152\\n*/\\nvar.respec-hl-c1 {\\n --bg-color: #f4d200;\\n}\\n\\nvar.respec-hl-c2 {\\n --bg-color: #ff87a2;\\n}\\n\\nvar.respec-hl-c3 {\\n --bg-color: #96e885;\\n}\\n\\nvar.respec-hl-c4 {\\n --bg-color: #3eeed2;\\n}\\n\\nvar.respec-hl-c5 {\\n --bg-color: #eacfb6;\\n}\\n\\nvar.respec-hl-c6 {\\n --bg-color: #82ddff;\\n}\\n\\nvar.respec-hl-c7 {\\n --bg-color: #ffbcf2;\\n}\\n\\n@media print {\\n var.respec-hl {\\n background: none;\\n color: #000;\\n box-shadow: unset;\\n }\\n}\\n';});\n\n", + "define('core/highlight-vars',[\"exports\", \"core/pubsubhub\", \"deps/text!core/css/var.css\"], function (exports, _pubsubhub, _var) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.name = undefined;\n exports.run = run;\n\n var _var2 = _interopRequireDefault(_var);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n /**\n * Module core/highlight-vars\n * Highlights occurrences of a within a section on click.\n * Set `conf.highlightVars = true` to enable.\n * Removes highlights from if clicked anywhere else.\n * All is done while keeping in mind that exported html stays clean\n * on export.\n */\n const name = exports.name = \"core/highlight-vars\";\n\n function run(conf) {\n if (!conf.highlightVars) {\n return;\n }\n const styleElement = document.createElement(\"style\");\n styleElement.textContent = _var2.default;\n styleElement.classList.add(\"removeOnSave\");\n document.head.appendChild(styleElement);\n\n [...document.querySelectorAll(\"var\")].forEach(varElem => varElem.addEventListener(\"click\", hightlightListener));\n\n // remove highlights, cleanup empty class/style attributes\n (0, _pubsubhub.sub)(\"beforesave\", outputDoc => {\n [...outputDoc.querySelectorAll(\"var.respec-hl\")].forEach(removeHighlight);\n });\n }\n\n function hightlightListener(ev) {\n ev.stopPropagation();\n const { target: varElem } = ev;\n const hightligtedElems = highlightVars(varElem);\n const resetListener = () => {\n const hlColor = getHighlightColor(varElem);\n hightligtedElems.forEach(el => removeHighlight(el, hlColor));\n [...HL_COLORS.keys()].forEach(key => HL_COLORS.set(key, true));\n };\n if (hightligtedElems.length) {\n document.body.addEventListener(\"click\", resetListener, { once: true });\n }\n }\n\n // availability of highlight colors. colors from var.css\n const HL_COLORS = new Map([[\"respec-hl-c1\", true], [\"respec-hl-c2\", true], [\"respec-hl-c3\", true], [\"respec-hl-c4\", true], [\"respec-hl-c5\", true], [\"respec-hl-c6\", true], [\"respec-hl-c7\", true]]);\n\n function getHighlightColor(target) {\n // return current colors if applicable\n const { value } = target.classList;\n const re = /respec-hl-\\w+/;\n const activeClass = re.test(value) && value.match(re);\n if (activeClass) return activeClass[0];\n\n // first color preference\n if (HL_COLORS.get(\"respec-hl-c1\") === true) return \"respec-hl-c1\";\n\n // otherwise get some other available color\n return [...HL_COLORS.keys()].find(c => HL_COLORS.get(c)) || \"respec-hl-c1\";\n }\n\n function highlightVars(varElem) {\n const textContent = varElem.textContent.trim();\n const parent = varElem.closest(\"section\");\n const highlightColor = getHighlightColor(varElem);\n\n const varsToHighlight = [...parent.querySelectorAll(\"var\")].filter(el => el.textContent.trim() === textContent);\n\n // update availability of highlight color\n const colorStatus = varsToHighlight[0].classList.contains(\"respec-hl\");\n HL_COLORS.set(highlightColor, colorStatus);\n\n // highlight vars\n if (colorStatus) {\n varsToHighlight.forEach(el => removeHighlight(el, highlightColor));\n return [];\n } else {\n varsToHighlight.forEach(el => addHighlight(el, highlightColor));\n }\n return varsToHighlight;\n }\n\n function removeHighlight(el, highlightColor) {\n el.classList.remove(\"respec-hl\", highlightColor);\n // clean up empty class attributes so they don't come in export\n if (!el.classList.length) el.removeAttribute(\"class\");\n }\n\n function addHighlight(elem, highlightColor) {\n elem.classList.add(\"respec-hl\", highlightColor);\n }\n});\n//# sourceMappingURL=highlight-vars.js.map;\n", + "\"use strict\";\n// In case everything else fails, we want the error\nwindow.addEventListener(\"error\", ev => {\n console.error(ev.error, ev.message, ev);\n});\n\n// this is only set in a build, not at all in the dev environment\nrequire.config({\n shim: {\n shortcut: {\n exports: \"shortcut\",\n },\n highlight: {\n exports: \"hljs\",\n },\n },\n paths: {\n \"handlebars.runtime\": \"deps/handlebars\",\n \"deps/highlight\": \"https://www.w3.org/Tools/respec/respec-highlight\",\n },\n deps: [\"deps/hyperhtml\", \"deps/url-search-params\"],\n});\n\ndefine(\n 'profile-oai',[\n // order is significant\n \"deps/domReady\",\n \"core/base-runner\",\n \"core/ui\",\n \"core/l10n\",\n //\"w3c/defaults\",\n \"oai/defaults\",\n \"core/style\",\n \"w3c/style\",\n \"w3c/l10n\",\n \"core/github\",\n \"core/data-include\",\n \"core/markdown\",\n //\"w3c/headers\",\n \"oai/headers\",\n \"w3c/abstract\",\n \"w3c/conformance\",\n \"core/data-transform\",\n \"core/inlines\",\n \"core/dfn\",\n \"w3c/rfc2119\",\n \"core/examples\",\n \"core/issues-notes\",\n \"core/requirements\",\n \"core/best-practices\",\n \"core/figures\",\n \"core/webidl\",\n \"core/data-cite\",\n \"core/biblio\",\n \"core/webidl-index\",\n \"core/link-to-dfn\",\n \"core/contrib\",\n \"core/fix-headers\",\n \"core/structure\",\n \"w3c/informative\",\n \"w3c/permalinks\",\n \"core/id-headers\",\n \"core/location-hash\",\n \"core/caniuse\",\n \"ui/save-html\",\n \"ui/search-specref\",\n \"ui/dfn-list\",\n \"ui/about-respec\",\n \"core/seo\",\n \"w3c/seo\",\n \"core/highlight\",\n \"core/webidl-clipboard\",\n \"core/data-tests\",\n \"core/list-sorter\",\n \"core/highlight-vars\",\n /*Linter must be the last thing to run*/\n \"core/linter\",\n ],\n (domReady, runner, { ui }, ...plugins) => {\n ui.show();\n domReady(async () => {\n try {\n await runner.runAll(plugins);\n await document.respecIsReady;\n } catch (err) {\n console.error(err);\n } finally {\n ui.enable();\n }\n });\n }\n);\n\n" + ] +} \ No newline at end of file diff --git a/oas/v3.0.1.html b/oas/v3.0.1.html index 7c0da96986..c9fc2cea78 100644 --- a/oas/v3.0.1.html +++ b/oas/v3.0.1.html @@ -1,7 +1,15 @@ -OpenAPI Specification
      The OpenAPI Specification (OAS) defines a standard, programming language-agnostic interface description for REST APIs, which allows both humans and computers to discover and understand the capabilities of a service without requiring access to source code, additional documentation, or inspection of network traffic. When properly defined via OpenAPI, a consumer can understand and interact with the remote service with a minimal amount of implementation logic. Similar to what interface descriptions have done for lower-level programming, the OpenAPI Specification removes guesswork in calling a service.

      State of This Document

      The source-of-truth for the specification is the GitHub markdown file referenced above.
      +OpenAPI Specification + + +
      The OpenAPI Specification (OAS) defines a standard, programming language-agnostic interface description for REST APIs, which allows both humans and computers to discover and understand the capabilities of a service without requiring access to source code, additional documentation, or inspection of network traffic. When properly defined via OpenAPI, a consumer can understand and interact with the remote service with a minimal amount of implementation logic. Similar to what interface descriptions have done for lower-level programming, the OpenAPI Specification removes guesswork in calling a service.

      Status of This Document

      The source-of-truth for the specification is the GitHub markdown file referenced above.

      OpenAPI Specification

      Version 3.0.1

      -

      The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in BCP 14 [[!rfc2119]] [[!rfc8174]] when, and only when, they appear in all capitals, as shown here.

      +

      The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in BCP 14 [[!RFC2119]] [[!RFC8174]] when, and only when, they appear in all capitals, as shown here.

      This document is licensed under The Apache License, Version 2.0.

      Introduction

      The OpenAPI Specification (OAS) defines a standard, language-agnostic interface to RESTful APIs which allows both humans and computers to discover and understand the capabilities of the service without access to source code, documentation, or through network traffic inspection. When properly defined, a consumer can understand and interact with the remote service with a minimal amount of implementation logic.

      @@ -14,9 +22,9 @@

      Path templating refers to the usage of curly braces ({}) to mark a section of a URL path as replaceable using path parameters.

      Media Types

      Media type definitions are spread across several resources. -The media type definitions SHOULD be in compliance with [[!rfc6838]].

      +The media type definitions SHOULD be in compliance with [[!RFC6838]].

      Some examples of possible media type definitions:

      -
      
      +
      
         text/plain; charset=utf-8
         application/json
         application/vnd.github+json
      @@ -30,7 +38,7 @@
       

      HTTP Status Codes

      The HTTP Status Codes are used to indicate the status of the executed operation. -The available status codes are defined by [[!rfc7231]]section-6) and registered status codes are listed in the IANA Status Code Registry.

      +The available status codes are defined by [[!RFC7231]] and registered status codes are listed in the IANA Status Code Registry.

      Specification

      Versions

      The OpenAPI Specification is versioned using Semantic Versioning 2.0.0 (semver) and follows the semver specification.

      @@ -40,9 +48,9 @@

      Format

      An OpenAPI document that conforms to the OpenAPI Specification is itself a JSON object, which may be represented either in JSON or YAML format.

      For example, if a field has an array value, the JSON array representation will be used:

      -
      
      +
      
       {
      -   "field": [ 1, 2, 3 ]
      +   "field": [ 1, 2, 3 ]
       }
       

      All field names in the specification are case sensitive.

      @@ -130,13 +138,13 @@ date string date -As defined by full-date - [!rfc3339] +As defined by full-date - [[!RFC3339]] dateTime string date-time -As defined by date-time - [!rfc3339] +As defined by date-time - [[!RFC3339]] password @@ -150,7 +158,7 @@

      Throughout the specification description fields are noted as supporting CommonMark markdown formatting. Where OpenAPI tooling renders rich text it MUST support, at a minimum, markdown syntax as described by CommonMark 0.27. Tooling MAY choose to ignore some CommonMark features to address security concerns.

      Relative References in URLs

      -

      Unless specified otherwise, all properties that are URLs MAY be relative references as defined by [[!rfc3986]]section-4.2). +

      Unless specified otherwise, all properties that are URLs MAY be relative references as defined by [[!RFC3986]]. Relative references are resolved using the URLs defined in the Server Object as a Base URI.

      Relative references used in $ref are processed as per JSON Reference, using the URL of the current document as the base URI. See also the Reference Object.

      Schema

      @@ -257,35 +265,35 @@

      This object MAY be extended with Specification Extensions.

      Info Object Example:

      -
      
      +
      
       {
      -  "title": "Sample Pet Store App",
      -  "description": "This is a sample server for a pet store.",
      -  "termsOfService": "http://example.com/terms/",
      -  "contact": {
      -    "name": "API Support",
      -    "url": "http://www.example.com/support",
      -    "email": "support@example.com"
      +  "title": "Sample Pet Store App",
      +  "description": "This is a sample server for a pet store.",
      +  "termsOfService": "http://example.com/terms/",
      +  "contact": {
      +    "name": "API Support",
      +    "url": "http://www.example.com/support",
      +    "email": "support@example.com"
         },
      -  "license": {
      -    "name": "Apache 2.0",
      -    "url": "https://www.apache.org/licenses/LICENSE-2.0.html"
      +  "license": {
      +    "name": "Apache 2.0",
      +    "url": "https://www.apache.org/licenses/LICENSE-2.0.html"
         },
      -  "version": "1.0.1"
      +  "version": "1.0.1"
       }
       
      -
      
      -title: Sample Pet Store App
      -description: This is a sample server for a pet store.
      -termsOfService: http://example.com/terms/
      -contact:
      -  name: API Support
      -  url: http://www.example.com/support
      -  email: support@example.com
      -license:
      -  name: Apache 2.0
      -  url: https://www.apache.org/licenses/LICENSE-2.0.html
      -version: 1.0.1
      +
      
      +title: Sample Pet Store App
      +description: This is a sample server for a pet store.
      +termsOfService: http://example.com/terms/
      +contact:
      +  name: API Support
      +  url: http://www.example.com/support
      +  email: support@example.com
      +license:
      +  name: Apache 2.0
      +  url: https://www.apache.org/licenses/LICENSE-2.0.html
      +version: 1.0.1
       

      Contact Object

      Contact information for the exposed API.

      @@ -318,17 +326,17 @@

      This object MAY be extended with Specification Extensions.

      Contact Object Example:

      -
      
      +
      
       {
      -  "name": "API Support",
      -  "url": "http://www.example.com/support",
      -  "email": "support@example.com"
      +  "name": "API Support",
      +  "url": "http://www.example.com/support",
      +  "email": "support@example.com"
       }
       
      -
      
      -name: API Support
      -url: http://www.example.com/support
      -email: support@example.com
      +
      
      +name: API Support
      +url: http://www.example.com/support
      +email: support@example.com
       

      License Object

      License information for the exposed API.

      @@ -356,15 +364,15 @@

      This object MAY be extended with Specification Extensions.

      License Object Example:

      -
      
      +
      
       {
      -  "name": "Apache 2.0",
      -  "url": "https://www.apache.org/licenses/LICENSE-2.0.html"
      +  "name": "Apache 2.0",
      +  "url": "https://www.apache.org/licenses/LICENSE-2.0.html"
       }
       
      -
      
      -name: Apache 2.0
      -url: https://www.apache.org/licenses/LICENSE-2.0.html
      +
      
      +name: Apache 2.0
      +url: https://www.apache.org/licenses/LICENSE-2.0.html
       

      Server Object

      An object representing a Server.

      @@ -398,88 +406,88 @@

      This object MAY be extended with Specification Extensions.

      Server Object Example

      A single server would be described as:

      -
      
      +
      
       {
      -  "url": "https://development.gigantic-server.com/v1",
      -  "description": "Development server"
      +  "url": "https://development.gigantic-server.com/v1",
      +  "description": "Development server"
       }
       
      -
      
      -url: https://development.gigantic-server.com/v1
      -description: Development server
      +
      
      +url: https://development.gigantic-server.com/v1
      +description: Development server
       

      The following shows how multiple servers can be described, for example, at the OpenAPI Object’s servers:

      -
      
      +
      
       {
      -  "servers": [
      +  "servers": [
           {
      -      "url": "https://development.gigantic-server.com/v1",
      -      "description": "Development server"
      +      "url": "https://development.gigantic-server.com/v1",
      +      "description": "Development server"
           },
           {
      -      "url": "https://staging.gigantic-server.com/v1",
      -      "description": "Staging server"
      +      "url": "https://staging.gigantic-server.com/v1",
      +      "description": "Staging server"
           },
           {
      -      "url": "https://api.gigantic-server.com/v1",
      -      "description": "Production server"
      +      "url": "https://api.gigantic-server.com/v1",
      +      "description": "Production server"
           }
         ]
       }
       
      -
      
      -servers:
      -- url: https://development.gigantic-server.com/v1
      -  description: Development server
      -- url: https://staging.gigantic-server.com/v1
      -  description: Staging server
      -- url: https://api.gigantic-server.com/v1
      -  description: Production server
      +
      
      +servers:
      +- url: https://development.gigantic-server.com/v1
      +  description: Development server
      +- url: https://staging.gigantic-server.com/v1
      +  description: Staging server
      +- url: https://api.gigantic-server.com/v1
      +  description: Production server
       

      The following shows how variables can be used for a server configuration:

      -
      
      +
      
       {
      -  "servers": [
      +  "servers": [
           {
      -      "url": "https://{username}.gigantic-server.com:{port}/{basePath}",
      -      "description": "The production API server",
      -      "variables": {
      -        "username": {
      -          "default": "demo",
      -          "description": "this value is assigned by the service provider, in this example `gigantic-server.com`"
      +      "url": "https://{username}.gigantic-server.com:{port}/{basePath}",
      +      "description": "The production API server",
      +      "variables": {
      +        "username": {
      +          "default": "demo",
      +          "description": "this value is assigned by the service provider, in this example `gigantic-server.com`"
               },
      -        "port": {
      -          "enum": [
      -            "8443",
      -            "443"
      +        "port": {
      +          "enum": [
      +            "8443",
      +            "443"
                 ],
      -          "default": "8443"
      +          "default": "8443"
               },
      -        "basePath": {
      -          "default": "v2"
      +        "basePath": {
      +          "default": "v2"
               }
             }
           }
         ]
       }
       
      -
      
      -servers:
      -- url: https://{username}.gigantic-server.com:{port}/{basePath}
      -  description: The production API server
      -  variables:
      -    username:
      -      # note! no enum here means it is an open value
      -      default: demo
      -      description: this value is assigned by the service provider, in this example `gigantic-server.com`
      -    port:
      -      enum:
      -        - '8443'
      -        - '443'
      -      default: '8443'
      -    basePath:
      -      # open meaning there is the opportunity to use special base paths as assigned by the provider, default is `v2`
      -      default: v2
      +
      
      +servers:
      +- url: https://{username}.gigantic-server.com:{port}/{basePath}
      +  description: The production API server
      +  variables:
      +    username:
      +      # note! no enum here means it is an open value
      +      default: demo
      +      description: this value is assigned by the service provider, in this example `gigantic-server.com`
      +    port:
      +      enum:
      +        - '8443'
      +        - '443'
      +      default: '8443'
      +    basePath:
      +      # open meaning there is the opportunity to use special base paths as assigned by the provider, default is `v2`
      +      default: v2
       

      Server Variable Object

      An object representing a Server Variable for server URL template substitution.

      @@ -574,7 +582,7 @@

      This object MAY be extended with Specification Extensions.

      All the fixed fields declared above are objects that MUST use keys that match the regular expression: ^[a-zA-Z0-9\.\-_]+$.

      Field Name Examples:

      -
      
      +
      
       User
       User_1
       User_Name
      @@ -582,88 +590,88 @@
       my.org.User
       

      Components Object Example

      -
      
      -"components": {
      -  "schemas": {
      -    "Category": {
      -      "type": "object",
      -      "properties": {
      -        "id": {
      -          "type": "integer",
      -          "format": "int64"
      +
      
      +"components": {
      +  "schemas": {
      +    "Category": {
      +      "type": "object",
      +      "properties": {
      +        "id": {
      +          "type": "integer",
      +          "format": "int64"
               },
      -        "name": {
      -          "type": "string"
      +        "name": {
      +          "type": "string"
               }
             }
           },
      -    "Tag": {
      -      "type": "object",
      -      "properties": {
      -        "id": {
      -          "type": "integer",
      -          "format": "int64"
      +    "Tag": {
      +      "type": "object",
      +      "properties": {
      +        "id": {
      +          "type": "integer",
      +          "format": "int64"
               },
      -        "name": {
      -          "type": "string"
      +        "name": {
      +          "type": "string"
               }
             }
           }
         },
      -  "parameters": {
      -    "skipParam": {
      -      "name": "skip",
      -      "in": "query",
      -      "description": "number of items to skip",
      -      "required": true,
      -      "schema": {
      -        "type": "integer",
      -        "format": "int32"
      +  "parameters": {
      +    "skipParam": {
      +      "name": "skip",
      +      "in": "query",
      +      "description": "number of items to skip",
      +      "required": true,
      +      "schema": {
      +        "type": "integer",
      +        "format": "int32"
             }
           },
      -    "limitParam": {
      -      "name": "limit",
      -      "in": "query",
      -      "description": "max records to return",
      -      "required": true,
      -      "schema" : {
      -        "type": "integer",
      -        "format": "int32"
      +    "limitParam": {
      +      "name": "limit",
      +      "in": "query",
      +      "description": "max records to return",
      +      "required": true,
      +      "schema" : {
      +        "type": "integer",
      +        "format": "int32"
             }
           }
         },
      -  "responses": {
      -    "NotFound": {
      -      "description": "Entity not found."
      +  "responses": {
      +    "NotFound": {
      +      "description": "Entity not found."
           },
      -    "IllegalInput": {
      -      "description": "Illegal input for operation."
      +    "IllegalInput": {
      +      "description": "Illegal input for operation."
           },
      -    "GeneralError": {
      -      "description": "General Error",
      -      "content": {
      -        "application/json": {
      -          "schema": {
      -            "$ref": "#/components/schemas/GeneralError"
      +    "GeneralError": {
      +      "description": "General Error",
      +      "content": {
      +        "application/json": {
      +          "schema": {
      +            "$ref": "#/components/schemas/GeneralError"
                 }
               }
             }
           }
         },
      -  "securitySchemes": {
      -    "api_key": {
      -      "type": "apiKey",
      -      "name": "api_key",
      -      "in": "header"
      +  "securitySchemes": {
      +    "api_key": {
      +      "type": "apiKey",
      +      "name": "api_key",
      +      "in": "header"
           },
      -    "petstore_auth": {
      -      "type": "oauth2",
      -      "flows": {
      -        "implicit": {
      -          "authorizationUrl": "http://example.org/api/oauth/dialog",
      -          "scopes": {
      -            "write:pets": "modify pets in your account",
      -            "read:pets": "read your pets"
      +    "petstore_auth": {
      +      "type": "oauth2",
      +      "flows": {
      +        "implicit": {
      +          "authorizationUrl": "http://example.org/api/oauth/dialog",
      +          "scopes": {
      +            "write:pets": "modify pets in your account",
      +            "read:pets": "read your pets"
                 }
               }
             }
      @@ -671,66 +679,66 @@
         }
       }
       
      -
      
      -components:
      -  schemas:
      -    Category:
      -      type: object
      -      properties:
      -        id:
      -          type: integer
      -          format: int64
      -        name:
      -          type: string
      -    Tag:
      -      type: object
      -      properties:
      -        id:
      -          type: integer
      -          format: int64
      -        name:
      -          type: string
      -  parameters:
      -    skipParam:
      -      name: skip
      -      in: query
      -      description: number of items to skip
      -      required: true
      -      schema:
      -        type: integer
      -        format: int32
      -    limitParam:
      -      name: limit
      -      in: query
      -      description: max records to return
      -      required: true
      -      schema:
      -        type: integer
      -        format: int32
      -  responses:
      -    NotFound:
      -      description: Entity not found.
      -    IllegalInput:
      -      description: Illegal input for operation.
      -    GeneralError:
      -      description: General Error
      -      content:
      -        application/json:
      -          schema:
      -            $ref: '#/components/schemas/GeneralError'
      -  securitySchemes:
      -    api_key:
      -      type: apiKey
      -      name: api_key
      -      in: header
      -    petstore_auth:
      -      type: oauth2
      -      flows: 
      -        implicit:
      -          authorizationUrl: http://example.org/api/oauth/dialog
      -          scopes:
      -            write:pets: modify pets in your account
      -            read:pets: read your pets
      +
      
      +components:
      +  schemas:
      +    Category:
      +      type: object
      +      properties:
      +        id:
      +          type: integer
      +          format: int64
      +        name:
      +          type: string
      +    Tag:
      +      type: object
      +      properties:
      +        id:
      +          type: integer
      +          format: int64
      +        name:
      +          type: string
      +  parameters:
      +    skipParam:
      +      name: skip
      +      in: query
      +      description: number of items to skip
      +      required: true
      +      schema:
      +        type: integer
      +        format: int32
      +    limitParam:
      +      name: limit
      +      in: query
      +      description: max records to return
      +      required: true
      +      schema:
      +        type: integer
      +        format: int32
      +  responses:
      +    NotFound:
      +      description: Entity not found.
      +    IllegalInput:
      +      description: Illegal input for operation.
      +    GeneralError:
      +      description: General Error
      +      content:
      +        application/json:
      +          schema:
      +            $ref: '#/components/schemas/GeneralError'
      +  securitySchemes:
      +    api_key:
      +      type: apiKey
      +      name: api_key
      +      in: header
      +    petstore_auth:
      +      type: oauth2
      +      flows: 
      +        implicit:
      +          authorizationUrl: http://example.org/api/oauth/dialog
      +          scopes:
      +            write:pets: modify pets in your account
      +            read:pets: read your pets
       

      Paths Object

      Holds the relative paths to the individual endpoints and their operations. @@ -755,35 +763,35 @@

      This object MAY be extended with Specification Extensions.

      Path Templating Matching

      Assuming the following paths, the concrete definition, /pets/mine, will be matched first if used:

      -
      
      +
      
         /pets/{petId}
         /pets/mine
       

      The following paths are considered identical and invalid:

      -
      
      +
      
         /pets/{petId}
         /pets/{name}
       

      The following may lead to ambiguous resolution:

      -
      
      +
      
         /{entity}/me
         /books/{id}
       

      Paths Object Example

      -
      
      +
      
       {
      -  "/pets": {
      -    "get": {
      -      "description": "Returns all pets from the system that the user has access to",
      -      "responses": {
      -        "200": {          
      -          "description": "A list of pets.",
      -          "content": {
      -            "application/json": {
      -              "schema": {
      -                "type": "array",
      -                "items": {
      -                  "$ref": "#/components/schemas/pet"
      +  "/pets": {
      +    "get": {
      +      "description": "Returns all pets from the system that the user has access to",
      +      "responses": {
      +        "200": {          
      +          "description": "A list of pets.",
      +          "content": {
      +            "application/json": {
      +              "schema": {
      +                "type": "array",
      +                "items": {
      +                  "$ref": "#/components/schemas/pet"
                       }
                     }
                   }
      @@ -794,19 +802,19 @@
         }
       }
       
      -
      
      -/pets:
      -  get:
      -    description: Returns all pets from the system that the user has access to
      -    responses:
      -      '200':
      -        description: A list of pets.
      -        content:
      -          application/json:
      -            schema:
      -              type: array
      -              items:
      -                $ref: '#/components/schemas/pet'
      +
      
      +/pets:
      +  get:
      +    description: Returns all pets from the system that the user has access to
      +    responses:
      +      '200':
      +        description: A list of pets.
      +        content:
      +          application/json:
      +            schema:
      +              type: array
      +              items:
      +                $ref: '#/components/schemas/pet'
       

      Path Item Object

      Describes the operations available on a single path. @@ -891,85 +899,85 @@

      This object MAY be extended with Specification Extensions.

      Path Item Object Example

      -
      
      +
      
       {
      -  "get": {
      -    "description": "Returns pets based on ID",
      -    "summary": "Find pets by ID",
      -    "operationId": "getPetsById",
      -    "responses": {
      -      "200": {
      -        "description": "pet response",
      -        "content": {
      -          "*/*": {
      -            "schema": {
      -              "type": "array",
      -              "items": {
      -                "$ref": "#/components/schemas/Pet"
      +  "get": {
      +    "description": "Returns pets based on ID",
      +    "summary": "Find pets by ID",
      +    "operationId": "getPetsById",
      +    "responses": {
      +      "200": {
      +        "description": "pet response",
      +        "content": {
      +          "*/*": {
      +            "schema": {
      +              "type": "array",
      +              "items": {
      +                "$ref": "#/components/schemas/Pet"
                     }
                   }
                 }
               }
             },
      -      "default": {
      -        "description": "error payload",
      -        "content": {
      -          "text/html": {
      -            "schema": {
      -              "$ref": "#/components/schemas/ErrorModel"
      +      "default": {
      +        "description": "error payload",
      +        "content": {
      +          "text/html": {
      +            "schema": {
      +              "$ref": "#/components/schemas/ErrorModel"
                   }
                 }
               }
             }
           }
         },
      -  "parameters": [
      +  "parameters": [
           {
      -      "name": "id",
      -      "in": "path",
      -      "description": "ID of pet to use",
      -      "required": true,
      -      "schema": {
      -        "type": "array",
      -        "items": {
      -          "type": "string"
      +      "name": "id",
      +      "in": "path",
      +      "description": "ID of pet to use",
      +      "required": true,
      +      "schema": {
      +        "type": "array",
      +        "items": {
      +          "type": "string"
               }
             },
      -      "style": "simple"
      +      "style": "simple"
           }
         ]
       }
       
      -
      
      -get:
      -  description: Returns pets based on ID
      -  summary: Find pets by ID
      -  operationId: getPetsById
      -  responses:
      -    '200':
      -      description: pet response
      -      content:
      -        '*/*' :
      -          schema:
      -            type: array
      -            items:
      -              $ref: '#/components/schemas/Pet'
      -    default:
      -      description: error payload
      -      content:
      -        'text/html':
      -          schema:
      -            $ref: '#/components/schemas/ErrorModel'
      -parameters:
      -- name: id
      -  in: path
      -  description: ID of pet to use
      -  required: true
      -  schema:
      -    type: array
      -    style: simple
      -    items:
      -      type: string  
      +
      
      +get:
      +  description: Returns pets based on ID
      +  summary: Find pets by ID
      +  operationId: getPetsById
      +  responses:
      +    '200':
      +      description: pet response
      +      content:
      +        '*/*' :
      +          schema:
      +            type: array
      +            items:
      +              $ref: '#/components/schemas/Pet'
      +    default:
      +      description: error payload
      +      content:
      +        'text/html':
      +          schema:
      +            $ref: '#/components/schemas/ErrorModel'
      +parameters:
      +- name: id
      +  in: path
      +  description: ID of pet to use
      +  required: true
      +  schema:
      +    type: array
      +    style: simple
      +    items:
      +      type: string  
       

      Operation Object

      Describes a single API operation on a path.

      @@ -1016,7 +1024,7 @@ requestBody Request Body Object ¦ Reference Object -The request body applicable for this operation. The requestBody is only supported in HTTP methods where the HTTP 1.1 specification [[!rfc7231]]section-4.3.1) has explicitly defined semantics for request bodies. In other cases where the HTTP spec is vague, requestBody SHALL be ignored by consumers. +The request body applicable for this operation. The requestBody is only supported in HTTP methods where the HTTP 1.1 specification [[!RFC7231]] has explicitly defined semantics for request bodies. In other cases where the HTTP spec is vague, requestBody SHALL be ignored by consumers. responses @@ -1047,110 +1055,110 @@

      This object MAY be extended with Specification Extensions.

      Operation Object Example

      -
      
      +
      
       {
      -  "tags": [
      -    "pet"
      +  "tags": [
      +    "pet"
         ],
      -  "summary": "Updates a pet in the store with form data",
      -  "operationId": "updatePetWithForm",
      -  "parameters": [
      +  "summary": "Updates a pet in the store with form data",
      +  "operationId": "updatePetWithForm",
      +  "parameters": [
           {
      -      "name": "petId",
      -      "in": "path",
      -      "description": "ID of pet that needs to be updated",
      -      "required": true,
      -      "schema": {
      -        "type": "string"
      +      "name": "petId",
      +      "in": "path",
      +      "description": "ID of pet that needs to be updated",
      +      "required": true,
      +      "schema": {
      +        "type": "string"
             }
           }
         ],
      -  "requestBody": {
      -    "content": {
      -      "application/x-www-form-urlencoded": {
      -        "schema": {
      -          "type": "object",
      -           "properties": {
      -              "name": { 
      -                "description": "Updated name of the pet",
      -                "type": "string"
      +  "requestBody": {
      +    "content": {
      +      "application/x-www-form-urlencoded": {
      +        "schema": {
      +          "type": "object",
      +           "properties": {
      +              "name": { 
      +                "description": "Updated name of the pet",
      +                "type": "string"
                     },
      -              "status": {
      -                "description": "Updated status of the pet",
      -                "type": "string"
      +              "status": {
      +                "description": "Updated status of the pet",
      +                "type": "string"
                    }
                  },
      -        "required": ["status"] 
      +        "required": ["status"] 
               }
             }
           }
         },
      -  "responses": {
      -    "200": {
      -      "description": "Pet updated.",
      -      "content": {
      -        "application/json": {},
      -        "application/xml": {}
      +  "responses": {
      +    "200": {
      +      "description": "Pet updated.",
      +      "content": {
      +        "application/json": {},
      +        "application/xml": {}
             }
           },
      -    "405": {
      -      "description": "Invalid input",
      -      "content": {
      -        "application/json": {},
      -        "application/xml": {}
      +    "405": {
      +      "description": "Invalid input",
      +      "content": {
      +        "application/json": {},
      +        "application/xml": {}
             }
           }
         },
      -  "security": [
      +  "security": [
           {
      -      "petstore_auth": [
      -        "write:pets",
      -        "read:pets"
      +      "petstore_auth": [
      +        "write:pets",
      +        "read:pets"
             ]
           }
         ]
       }
       
      -
      
      -tags:
      -- pet
      -summary: Updates a pet in the store with form data
      -operationId: updatePetWithForm
      -parameters:
      -- name: petId
      -  in: path
      -  description: ID of pet that needs to be updated
      -  required: true
      -  schema:
      -    type: string
      -requestBody:
      -  content:
      -    'application/x-www-form-urlencoded':
      -      schema:
      -       properties:
      -          name: 
      -            description: Updated name of the pet
      -            type: string
      -          status:
      -            description: Updated status of the pet
      -            type: string
      -       required:
      -         - status
      -responses:
      -  '200':
      -    description: Pet updated.
      -    content: 
      -      'application/json': {}
      -      'application/xml': {}
      -  '405':
      -    description: Invalid input
      -    content: 
      -      'application/json': {}
      -      'application/xml': {}
      -security:
      -- petstore_auth:
      -  - write:pets
      -  - read:pets
      +
      
      +tags:
      +- pet
      +summary: Updates a pet in the store with form data
      +operationId: updatePetWithForm
      +parameters:
      +- name: petId
      +  in: path
      +  description: ID of pet that needs to be updated
      +  required: true
      +  schema:
      +    type: string
      +requestBody:
      +  content:
      +    'application/x-www-form-urlencoded':
      +      schema:
      +       properties:
      +          name: 
      +            description: Updated name of the pet
      +            type: string
      +          status:
      +            description: Updated status of the pet
      +            type: string
      +       required:
      +         - status
      +responses:
      +  '200':
      +    description: Pet updated.
      +    content: 
      +      'application/json': {}
      +      'application/xml': {}
      +  '405':
      +    description: Invalid input
      +    content: 
      +      'application/json': {}
      +      'application/xml': {}
      +security:
      +- petstore_auth:
      +  - write:pets
      +  - read:pets
       

      External Documentation Object

      Allows referencing an external resource for extended documentation.

      @@ -1178,15 +1186,15 @@

      This object MAY be extended with Specification Extensions.

      External Documentation Object Example

      -
      
      +
      
       {
      -  "description": "Find more info here",
      -  "url": "https://example.com"
      +  "description": "Find more info here",
      +  "url": "https://example.com"
       }
       
      -
      
      -description: Find more info here
      -url: https://example.com
      +
      
      +description: Find more info here
      +url: https://example.com
       

      Parameter Object

      Describes a single operation parameter.

      @@ -1196,7 +1204,7 @@
      • path - Used together with Path Templating, where the parameter value is actually part of the operation’s URL. This does not include the host or base path of the API. For example, in /items/{itemId}, the path parameter is itemId.
      • query - Parameters that are appended to the URL. For example, in /items?id=###, the query parameter is id.
      • -
      • header - Custom headers that are expected as part of the request. Note that [[!rfc7230]]page-22) states header names are case insensitive.
      • +
      • header - Custom headers that are expected as part of the request. Note that [[!RFC7230]] states header names are case insensitive.
      • cookie - Used to pass a specific cookie value to the API.

      Fixed Fields

      @@ -1265,7 +1273,7 @@ allowReserved boolean -Determines whether the parameter value SHOULD allow reserved characters, as defined by [[!rfc3986]]section-2.2) :/?#[]@!$&'()*+,;= to be included without percent-encoding. This property only applies to parameters with an in value of query. The default value is false. +Determines whether the parameter value SHOULD allow reserved characters, as defined by [[!RFC3986]] :/?#[]@!$&'()*+,;= to be included without percent-encoding. This property only applies to parameters with an in value of query. The default value is false. schema @@ -1319,25 +1327,25 @@ matrix primitive, array, object path -Path-style parameters defined by [[!rfc6570]]section-3.2.7) +Path-style parameters defined by [[!RFC6570]] label primitive, array, object path -Label style parameters defined by [[!rfc6570]]section-3.2.5) +Label style parameters defined by [[!RFC6570]] form primitive, array, object query, cookie -Form style parameters defined by [[!rfc6570]]section-3.2.8). This option replaces collectionFormat with a csv (when explode is false) or multi (when explode is true) value from OpenAPI 2.0. +Form style parameters defined by [[!RFC6570]]. This option replaces collectionFormat with a csv (when explode is false) or multi (when explode is true) value from OpenAPI 2.0. simple array path, header -Simple style parameters defined by [[!rfc6570]]section-3.2.2). This option replaces collectionFormat with a csv value from OpenAPI 2.0. +Simple style parameters defined by [[!RFC6570]]. This option replaces collectionFormat with a csv value from OpenAPI 2.0. spaceDelimited @@ -1361,7 +1369,7 @@

      Style Examples

      Assume a parameter named color has one of the following values:

      -
      
      +
      
          string -> "blue"
          array -> ["blue","black","brown"]
          object -> { "R": 100, "G": 200, "B": 150 }
      @@ -1472,125 +1480,125 @@
       

      This object MAY be extended with Specification Extensions.

      Parameter Object Examples

      A header parameter with an array of 64 bit integer numbers:

      -
      
      +
      
       {
      -  "name": "token",
      -  "in": "header",
      -  "description": "token to be passed as a header",
      -  "required": true,
      -  "schema": {
      -    "type": "array",
      -    "items": {
      -      "type": "integer",
      -      "format": "int64"
      +  "name": "token",
      +  "in": "header",
      +  "description": "token to be passed as a header",
      +  "required": true,
      +  "schema": {
      +    "type": "array",
      +    "items": {
      +      "type": "integer",
      +      "format": "int64"
           }
         },
      -  "style": "simple"
      +  "style": "simple"
       }
       
      -
      
      -name: token
      -in: header
      -description: token to be passed as a header
      -required: true
      -schema:
      -  type: array
      -  items:
      -    type: integer
      -    format: int64
      -style: simple
      +
      
      +name: token
      +in: header
      +description: token to be passed as a header
      +required: true
      +schema:
      +  type: array
      +  items:
      +    type: integer
      +    format: int64
      +style: simple
       

      A path parameter of a string value:

      -
      
      +
      
       {
      -  "name": "username",
      -  "in": "path",
      -  "description": "username to fetch",
      -  "required": true,
      -  "schema": {
      -    "type": "string"
      +  "name": "username",
      +  "in": "path",
      +  "description": "username to fetch",
      +  "required": true,
      +  "schema": {
      +    "type": "string"
         }
       }
       
      -
      
      -name: username
      -in: path
      -description: username to fetch
      -required: true
      -schema:
      -  type: string
      +
      
      +name: username
      +in: path
      +description: username to fetch
      +required: true
      +schema:
      +  type: string
       

      An optional query parameter of a string value, allowing multiple values by repeating the query parameter:

      -
      
      +
      
       {
      -  "name": "id",
      -  "in": "query",
      -  "description": "ID of the object to fetch",
      -  "required": false,
      -  "schema": {
      -    "type": "array",
      -    "items": {
      -      "type": "string"
      +  "name": "id",
      +  "in": "query",
      +  "description": "ID of the object to fetch",
      +  "required": false,
      +  "schema": {
      +    "type": "array",
      +    "items": {
      +      "type": "string"
           }
         },
      -  "style": "form",
      -  "explode": true
      +  "style": "form",
      +  "explode": true
       }
       
      -
      
      -name: id
      -in: query
      -description: ID of the object to fetch
      -required: false
      -schema:
      -  type: array
      -  items:
      -    type: string
      -style: form
      -explode: true
      +
      
      +name: id
      +in: query
      +description: ID of the object to fetch
      +required: false
      +schema:
      +  type: array
      +  items:
      +    type: string
      +style: form
      +explode: true
       

      A free-form query parameter, allowing undefined parameters of a specific type:

      -
      
      +
      
       {
      -  "in": "query",
      -  "name": "freeForm",
      -  "schema": {
      -    "type": "object",
      -    "additionalProperties": {
      -      "type": "integer"
      +  "in": "query",
      +  "name": "freeForm",
      +  "schema": {
      +    "type": "object",
      +    "additionalProperties": {
      +      "type": "integer"
           },
         },
      -  "style": "form"
      +  "style": "form"
       }
       
      -
      
      -in: query
      -name: freeForm
      -schema:
      -  type: object
      -  additionalProperties:
      -    type: integer
      -style: form
      +
      
      +in: query
      +name: freeForm
      +schema:
      +  type: object
      +  additionalProperties:
      +    type: integer
      +style: form
       

      A complex parameter using content to define serialization:

      -
      
      +
      
       {
      -  "in": "query",
      -  "name": "coordinates",
      -  "content": {
      -    "application/json": {
      -      "schema": {
      -        "type": "object",
      -        "required": [
      -          "lat",
      -          "long"
      +  "in": "query",
      +  "name": "coordinates",
      +  "content": {
      +    "application/json": {
      +      "schema": {
      +        "type": "object",
      +        "required": [
      +          "lat",
      +          "long"
               ],
      -        "properties": {
      -          "lat": {
      -            "type": "number"
      +        "properties": {
      +          "lat": {
      +            "type": "number"
                 },
      -          "long": {
      -            "type": "number"
      +          "long": {
      +            "type": "number"
                 }
               }
             }
      @@ -1598,21 +1606,21 @@
         }
       }
       
      -
      
      -in: query
      -name: coordinates
      -content:
      -  application/json:
      -    schema:
      -      type: object
      -      required:
      -        - lat
      -        - long
      -      properties:
      -        lat:
      -          type: number
      -        long:
      -          type: number
      +
      
      +in: query
      +name: coordinates
      +content:
      +  application/json:
      +    schema:
      +      type: object
      +      required:
      +        - lat
      +        - long
      +      properties:
      +        lat:
      +          type: number
      +        long:
      +          type: number
       

      Request Body Object

      Describes a single request body.

      @@ -1646,104 +1654,104 @@

      This object MAY be extended with Specification Extensions.

      Request Body Examples

      A request body with a referenced model definition.

      -
      
      +
      
       {
      -  "description": "user to add to the system",
      -  "content": {
      -    "application/json": {
      -      "schema": {
      -        "$ref": "#/components/schemas/User"
      +  "description": "user to add to the system",
      +  "content": {
      +    "application/json": {
      +      "schema": {
      +        "$ref": "#/components/schemas/User"
             },
      -      "examples": {
      -          "user" : {
      -            "summary": "User Example", 
      -            "externalValue": "http://foo.bar/examples/user-example.json"
      +      "examples": {
      +          "user" : {
      +            "summary": "User Example", 
      +            "externalValue": "http://foo.bar/examples/user-example.json"
                 } 
               }
           },
      -    "application/xml": {
      -      "schema": {
      -        "$ref": "#/components/schemas/User"
      +    "application/xml": {
      +      "schema": {
      +        "$ref": "#/components/schemas/User"
             },
      -      "examples": {
      -          "user" : {
      -            "summary": "User example in XML",
      -            "externalValue": "http://foo.bar/examples/user-example.xml"
      +      "examples": {
      +          "user" : {
      +            "summary": "User example in XML",
      +            "externalValue": "http://foo.bar/examples/user-example.xml"
                 }
               }
           },
      -    "text/plain": {
      -      "examples": {
      -        "user" : {
      -            "summary": "User example in Plain text",
      -            "externalValue": "http://foo.bar/examples/user-example.txt" 
      +    "text/plain": {
      +      "examples": {
      +        "user" : {
      +            "summary": "User example in Plain text",
      +            "externalValue": "http://foo.bar/examples/user-example.txt" 
               }
             } 
           },
      -    "*/*": {
      -      "examples": {
      -        "user" : {
      -            "summary": "User example in other format",
      -            "externalValue": "http://foo.bar/examples/user-example.whatever"
      +    "*/*": {
      +      "examples": {
      +        "user" : {
      +            "summary": "User example in other format",
      +            "externalValue": "http://foo.bar/examples/user-example.whatever"
               }
             }
           }
         }
       }
       
      -
      
      -description: user to add to the system
      -content: 
      -  'application/json':
      -    schema:
      -      $ref: '#/components/schemas/User'
      -    examples:
      -      user:
      -        summary: User Example
      -        externalValue: 'http://foo.bar/examples/user-example.json'
      -  'application/xml':
      -    schema:
      -      $ref: '#/components/schemas/User'
      -    examples:
      -      user:
      -        summary: User Example in XML
      -        externalValue: 'http://foo.bar/examples/user-example.xml'
      -  'text/plain':
      -    examples:
      -      user:
      -        summary: User example in text plain format
      -        externalValue: 'http://foo.bar/examples/user-example.txt'
      -  '*/*':
      -    examples:
      -      user: 
      -        summary: User example in other format
      -        externalValue: 'http://foo.bar/examples/user-example.whatever'
      +
      
      +description: user to add to the system
      +content: 
      +  'application/json':
      +    schema:
      +      $ref: '#/components/schemas/User'
      +    examples:
      +      user:
      +        summary: User Example
      +        externalValue: 'http://foo.bar/examples/user-example.json'
      +  'application/xml':
      +    schema:
      +      $ref: '#/components/schemas/User'
      +    examples:
      +      user:
      +        summary: User Example in XML
      +        externalValue: 'http://foo.bar/examples/user-example.xml'
      +  'text/plain':
      +    examples:
      +      user:
      +        summary: User example in text plain format
      +        externalValue: 'http://foo.bar/examples/user-example.txt'
      +  '*/*':
      +    examples:
      +      user: 
      +        summary: User example in other format
      +        externalValue: 'http://foo.bar/examples/user-example.whatever'
       

      A body parameter that is an array of string values:

      -
      
      +
      
       {
      -  "description": "user to add to the system",
      -  "content": {
      -    "text/plain": {
      -      "schema": {
      -        "type": "array",
      -        "items": {
      -          "type": "string"
      +  "description": "user to add to the system",
      +  "content": {
      +    "text/plain": {
      +      "schema": {
      +        "type": "array",
      +        "items": {
      +          "type": "string"
               }
             }
           }
         }
       }
       
      -
      
      -description: user to add to the system
      -required: true
      -content:
      -  text/plain:
      -    schema:
      -      type: array
      -      items:
      -        type: string
      +
      
      +description: user to add to the system
      +required: true
      +content:
      +  text/plain:
      +    schema:
      +      type: array
      +      items:
      +        type: string
       

      Media Type Object

      Each Media Type Object provides schema and examples for the media type identified by its key.

      @@ -1781,140 +1789,140 @@

      This object MAY be extended with Specification Extensions.

      Media Type Examples

      -
      
      +
      
       {
      -  "application/json": {
      -    "schema": {
      -         "$ref": "#/components/schemas/Pet"
      +  "application/json": {
      +    "schema": {
      +         "$ref": "#/components/schemas/Pet"
           },
      -    "examples": {
      -      "cat" : {
      -        "summary": "An example of a cat",
      -        "value": 
      +    "examples": {
      +      "cat" : {
      +        "summary": "An example of a cat",
      +        "value": 
                 {
      -            "name": "Fluffy",
      -            "petType": "Cat",
      -            "color": "White",
      -            "gender": "male",
      -            "breed": "Persian"
      +            "name": "Fluffy",
      +            "petType": "Cat",
      +            "color": "White",
      +            "gender": "male",
      +            "breed": "Persian"
                 }
             },
      -      "dog": {
      -        "summary": "An example of a dog with a cat's name",
      -        "value" :  { 
      -          "name": "Puma",
      -          "petType": "Dog",
      -          "color": "Black",
      -          "gender": "Female",
      -          "breed": "Mixed"
      +      "dog": {
      +        "summary": "An example of a dog with a cat's name",
      +        "value" :  { 
      +          "name": "Puma",
      +          "petType": "Dog",
      +          "color": "Black",
      +          "gender": "Female",
      +          "breed": "Mixed"
               },
      -      "frog": {
      -          "$ref": "#/components/examples/frog-example"
      +      "frog": {
      +          "$ref": "#/components/examples/frog-example"
               }
             }
           }
         }
       }
       
      -
      
      -application/json: 
      -  schema:
      -    $ref: "#/components/schemas/Pet"
      -  examples:
      -    cat:
      -      summary: An example of a cat
      -      value:
      -        name: Fluffy
      -        petType: Cat
      -        color: White
      -        gender: male
      -        breed: Persian
      -    dog:
      -      summary: An example of a dog with a cat's name
      -      value:
      -        name: Puma
      -        petType: Dog
      -        color: Black
      -        gender: Female
      -        breed: Mixed
      -    frog:
      -      $ref: "#/components/examples/frog-example"
      +
      
      +application/json: 
      +  schema:
      +    $ref: "#/components/schemas/Pet"
      +  examples:
      +    cat:
      +      summary: An example of a cat
      +      value:
      +        name: Fluffy
      +        petType: Cat
      +        color: White
      +        gender: male
      +        breed: Persian
      +    dog:
      +      summary: An example of a dog with a cat's name
      +      value:
      +        name: Puma
      +        petType: Dog
      +        color: Black
      +        gender: Female
      +        breed: Mixed
      +    frog:
      +      $ref: "#/components/examples/frog-example"
       

      Considerations for File Uploads

      In contrast with the 2.0 specification, file input/output content in OpenAPI is described with the same semantics as any other schema type. Specifically:

      -
      
      -# content transferred with base64 encoding
      -schema:
      -  type: string
      -  format: base64
      -
      -
      
      -# content transferred in binary (octet-stream):
      -schema:
      -  type: string
      -  format: binary
      +
      
      +# content transferred with base64 encoding
      +schema:
      +  type: string
      +  format: base64
      +
      +
      
      +# content transferred in binary (octet-stream):
      +schema:
      +  type: string
      +  format: binary
       

      These examples apply to either input payloads of file uploads or response payloads.

      A requestBody for submitting a file in a POST operation may look like the following example:

      -
      
      -requestBody:
      -  content:
      -    application/octet-stream:
      -      # any media type is accepted, functionally equivalent to `*/*`
      -      schema:
      -        # a binary file of any type
      -        type: string
      -        format: binary
      +
      
      +requestBody:
      +  content:
      +    application/octet-stream:
      +      # any media type is accepted, functionally equivalent to `*/*`
      +      schema:
      +        # a binary file of any type
      +        type: string
      +        format: binary
       

      In addition, specific media types MAY be specified:

      -
      
      -# multiple, specific media types may be specified:
      -requestBody:
      -  content:
      -      # a binary file of type png or jpeg
      -    'image/jpeg':
      -      schema:
      -        type: string
      -        format: binary
      -    'image/png':
      -      schema:
      -        type: string
      -        format: binary        
      +
      
      +# multiple, specific media types may be specified:
      +requestBody:
      +  content:
      +      # a binary file of type png or jpeg
      +    'image/jpeg':
      +      schema:
      +        type: string
      +        format: binary
      +    'image/png':
      +      schema:
      +        type: string
      +        format: binary        
       

      To upload multiple files, a multipart media type MUST be used:

      -
      
      -requestBody:
      -  content:
      -    multipart/form-data:
      -      schema:
      -        properties:
      -          # The property name 'file' will be used for all files.
      -          file:
      -            type: array
      -            items:
      -              type: string
      -              format: binary
      +
      
      +requestBody:
      +  content:
      +    multipart/form-data:
      +      schema:
      +        properties:
      +          # The property name 'file' will be used for all files.
      +          file:
      +            type: array
      +            items:
      +              type: string
      +              format: binary
       
       

      Support for x-www-form-urlencoded Request Bodies

      -

      To submit content using form url encoding via [[!rfc1866]], the following +

      To submit content using form url encoding via [[!RFC1866]], the following definition may be used:

      -
      
      -requestBody:
      -  content:
      -    application/x-www-form-urlencoded:
      -      schema:
      -        type: object
      -        properties:
      -          id:
      -            type: string
      -            format: uuid
      -          address:
      -            # complex types are stringified to support RFC 1866
      -            type: object
      -            properties: {}
      -
      -

      In this example, the contents in the requestBody MUST be stringified per [[!rfc1866]]) when passed to the server. In addition, the address field complex object will be stringified.

      +
      
      +requestBody:
      +  content:
      +    application/x-www-form-urlencoded:
      +      schema:
      +        type: object
      +        properties:
      +          id:
      +            type: string
      +            format: uuid
      +          address:
      +            # complex types are stringified to support RFC 1866
      +            type: object
      +            properties: {}
      +
      +

      In this example, the contents in the requestBody MUST be stringified per [[!RFC1866]] when passed to the server. In addition, the address field complex object will be stringified.

      When passing complex objects in the application/x-www-form-urlencoded content type, the default serialization strategy of such properties is described in the Encoding Object's style property as form.

      Special Considerations for multipart Content

      It is common to use multipart/form-data as a Content-Type when transferring request bodies to operations. In contrast to 2.0, a schema is REQUIRED to define the input parameters to the operation when using multipart content. This supports complex structures as well as supporting mechanisms for multiple file uploads.

      @@ -1925,34 +1933,34 @@
    • If the property is a type: string with format: binary or format: base64 (aka a file object), the default Content-Type is application/octet-stream

    Examples:

    -
    
    -requestBody:
    -  content:
    -    multipart/form-data:
    -      schema:
    -        type: object
    -        properties:
    -          id:
    -            type: string
    -            format: uuid
    -          address:
    -            # default Content-Type for objects is `application/json`
    -            type: object
    -            properties: {}
    -          profileImage:
    -            # default Content-Type for string/binary is `application/octet-stream`
    -            type: string
    -            format: binary
    -          children:
    -            # default Content-Type for arrays is based on the `inner` type (text/plain here)
    -            type: array
    -            items:
    -              type: string
    -          addresses:
    -            # default Content-Type for arrays is based on the `inner` type (object shown, so `application/json` in this example)
    -            type: array
    -            items:
    -              type: '#/components/schemas/Address'
    +
    
    +requestBody:
    +  content:
    +    multipart/form-data:
    +      schema:
    +        type: object
    +        properties:
    +          id:
    +            type: string
    +            format: uuid
    +          address:
    +            # default Content-Type for objects is `application/json`
    +            type: object
    +            properties: {}
    +          profileImage:
    +            # default Content-Type for string/binary is `application/octet-stream`
    +            type: string
    +            format: binary
    +          children:
    +            # default Content-Type for arrays is based on the `inner` type (text/plain here)
    +            type: array
    +            items:
    +              type: string
    +          addresses:
    +            # default Content-Type for arrays is based on the `inner` type (object shown, so `application/json` in this example)
    +            type: array
    +            items:
    +              type: '#/components/schemas/Address'
     

    An encoding attribute is introduced to give you control over the serialization of parts of multipart request bodies. This attribute is only applicable to multipart and application/x-www-form-urlencoded request bodies.

    Encoding Object

    @@ -1990,48 +1998,48 @@ allowReserved boolean -Determines whether the parameter value SHOULD allow reserved characters, as defined by [[!rfc3986]]section-2.2) :/?#[]@!$&'()*+,;= to be included without percent-encoding. The default value is false. This property SHALL be ignored if the request body media type is not application/x-www-form-urlencoded. +Determines whether the parameter value SHOULD allow reserved characters, as defined by [[!RFC3986]] :/?#[]@!$&'()*+,;= to be included without percent-encoding. The default value is false. This property SHALL be ignored if the request body media type is not application/x-www-form-urlencoded.

    This object MAY be extended with Specification Extensions.

    Encoding Object Example

    -
    
    -requestBody:
    -  content:
    -    multipart/mixed:
    -      schema:
    -        type: object
    -        properties:
    -          id:
    -            # default is text/plain
    -            type: string
    -            format: uuid
    -          address:
    -            # default is application/json
    -            type: object
    -            properties: {}
    -          historyMetadata:
    -            # need to declare XML format!
    -            description: metadata in XML format
    -            type: object
    -            properties: {}
    -          profileImage:
    -            # default is application/octet-stream, need to declare an image type only!
    -            type: string
    -            format: binary
    -      encoding:
    -        historyMetadata:
    -          # require XML Content-Type in utf-8 encoding
    -          contentType: application/xml; charset=utf-8
    -        profileImage:
    -          # only accept png/jpeg
    -          contentType: image/png, image/jpeg
    -          headers:
    -            X-Rate-Limit-Limit:
    -              description: The number of allowed requests in the current period
    -              schema:
    -                type: integer
    +
    
    +requestBody:
    +  content:
    +    multipart/mixed:
    +      schema:
    +        type: object
    +        properties:
    +          id:
    +            # default is text/plain
    +            type: string
    +            format: uuid
    +          address:
    +            # default is application/json
    +            type: object
    +            properties: {}
    +          historyMetadata:
    +            # need to declare XML format!
    +            description: metadata in XML format
    +            type: object
    +            properties: {}
    +          profileImage:
    +            # default is application/octet-stream, need to declare an image type only!
    +            type: string
    +            format: binary
    +      encoding:
    +        historyMetadata:
    +          # require XML Content-Type in utf-8 encoding
    +          contentType: application/xml; charset=utf-8
    +        profileImage:
    +          # only accept png/jpeg
    +          contentType: image/png, image/jpeg
    +          headers:
    +            X-Rate-Limit-Limit:
    +              description: The number of allowed requests in the current period
    +              schema:
    +                type: integer
     

    Responses Object

    A container for the expected responses of an operation. @@ -2079,43 +2087,43 @@

    This object MAY be extended with Specification Extensions.

    Responses Object Example

    A 200 response for a successful operation and a default response for others (implying an error):

    -
    
    +
    
     {
    -  "200": {
    -    "description": "a pet to be returned",
    -    "content": {
    -      "application/json": {
    -        "schema": {
    -          "$ref": "#/components/schemas/Pet"
    +  "200": {
    +    "description": "a pet to be returned",
    +    "content": {
    +      "application/json": {
    +        "schema": {
    +          "$ref": "#/components/schemas/Pet"
             }
           }
         }
       },
    -  "default": {
    -    "description": "Unexpected error",
    -    "content": {
    -      "application/json": {
    -        "schema": {
    -          "$ref": "#/components/schemas/ErrorModel"
    +  "default": {
    +    "description": "Unexpected error",
    +    "content": {
    +      "application/json": {
    +        "schema": {
    +          "$ref": "#/components/schemas/ErrorModel"
             }
           }
         }
       }
     }
     
    -
    
    -'200':
    -  description: a pet to be returned
    -  content: 
    -    application/json:
    -      schema:
    -        $ref: '#/components/schemas/Pet'
    -default:
    -  description: Unexpected error
    -  content:
    -    application/json:
    -      schema:
    -        $ref: '#/components/schemas/ErrorModel'
    +
    
    +'200':
    +  description: a pet to be returned
    +  content: 
    +    application/json:
    +      schema:
    +        $ref: '#/components/schemas/Pet'
    +default:
    +  description: Unexpected error
    +  content:
    +    application/json:
    +      schema:
    +        $ref: '#/components/schemas/ErrorModel'
     

    Response Object

    Describes a single response from an API Operation, including design-time, static @@ -2138,7 +2146,7 @@ headers Map[string, Header Object ¦ Reference Object] -Maps a header name to its definition. [[!rfc7230]]page-22) states header names are case insensitive. If a response header is defined with the name "Content-Type", it SHALL be ignored. +Maps a header name to its definition. [[!RFC7230]] states header names are case insensitive. If a response header is defined with the name "Content-Type", it SHALL be ignored. content @@ -2155,113 +2163,113 @@

    This object MAY be extended with Specification Extensions.

    Response Object Examples

    Response of an array of a complex type:

    -
    
    +
    
     {
    -  "description": "A complex object array response",
    -  "content": {
    -    "application/json": {
    -      "schema": {
    -        "type": "array",
    -        "items": {
    -          "$ref": "#/components/schemas/VeryComplexType"
    +  "description": "A complex object array response",
    +  "content": {
    +    "application/json": {
    +      "schema": {
    +        "type": "array",
    +        "items": {
    +          "$ref": "#/components/schemas/VeryComplexType"
             }
           }
         }
       }
     }
     
    -
    
    -description: A complex object array response
    -content: 
    -  application/json:
    -    schema: 
    -      type: array
    -      items:
    -        $ref: '#/components/schemas/VeryComplexType'
    +
    
    +description: A complex object array response
    +content: 
    +  application/json:
    +    schema: 
    +      type: array
    +      items:
    +        $ref: '#/components/schemas/VeryComplexType'
     

    Response with a string type:

    -
    
    +
    
     {
    -  "description": "A simple string response",
    -  "content": {
    -    "text/plain": {
    -      "schema": {
    -        "type": "string"
    +  "description": "A simple string response",
    +  "content": {
    +    "text/plain": {
    +      "schema": {
    +        "type": "string"
           }
         }
       }
     
     }
     
    -
    
    -description: A simple string response
    -content:
    -  text/plain:
    -    schema:
    -      type: string
    +
    
    +description: A simple string response
    +content:
    +  text/plain:
    +    schema:
    +      type: string
     

    Plain text response with headers:

    -
    
    +
    
     {
    -  "description": "A simple string response",
    -  "content": {
    -    "text/plain": {
    -      "schema": {
    -        "type": "string"
    +  "description": "A simple string response",
    +  "content": {
    +    "text/plain": {
    +      "schema": {
    +        "type": "string"
           }
         }
       },
    -  "headers": {
    -    "X-Rate-Limit-Limit": {
    -      "description": "The number of allowed requests in the current period",
    -      "schema": {
    -        "type": "integer"
    +  "headers": {
    +    "X-Rate-Limit-Limit": {
    +      "description": "The number of allowed requests in the current period",
    +      "schema": {
    +        "type": "integer"
           }
         },
    -    "X-Rate-Limit-Remaining": {
    -      "description": "The number of remaining requests in the current period",
    -      "schema": {
    -        "type": "integer"
    +    "X-Rate-Limit-Remaining": {
    +      "description": "The number of remaining requests in the current period",
    +      "schema": {
    +        "type": "integer"
           }
         },
    -    "X-Rate-Limit-Reset": {
    -      "description": "The number of seconds left in the current period",
    -      "schema": {
    -        "type": "integer"
    +    "X-Rate-Limit-Reset": {
    +      "description": "The number of seconds left in the current period",
    +      "schema": {
    +        "type": "integer"
           }
         }
       }
     }
     
    -
    
    -description: A simple string response
    -content:
    -  text/plain:
    -    schema:
    -      type: string
    -    example: 'whoa!'
    -headers:
    -  X-Rate-Limit-Limit:
    -    description: The number of allowed requests in the current period
    -    schema:
    -      type: integer
    -  X-Rate-Limit-Remaining:
    -    description: The number of remaining requests in the current period
    -    schema:
    -      type: integer
    -  X-Rate-Limit-Reset:
    -    description: The number of seconds left in the current period
    -    schema:
    -      type: integer
    +
    
    +description: A simple string response
    +content:
    +  text/plain:
    +    schema:
    +      type: string
    +    example: 'whoa!'
    +headers:
    +  X-Rate-Limit-Limit:
    +    description: The number of allowed requests in the current period
    +    schema:
    +      type: integer
    +  X-Rate-Limit-Remaining:
    +    description: The number of remaining requests in the current period
    +    schema:
    +      type: integer
    +  X-Rate-Limit-Reset:
    +    description: The number of seconds left in the current period
    +    schema:
    +      type: integer
     

    Response with no return value:

    -
    
    +
    
     {
    -  "description": "object created"
    +  "description": "object created"
     }
     
    -
    
    -description: object created
    +
    
    +description: object created
     

    Callback Object

    A map of possible out-of band callbacks related to the parent operation. @@ -2289,26 +2297,26 @@

    The key that identifies the Path Item Object is a runtime expression that can be evaluated in the context of a runtime HTTP request/response to identify the URL to be used for the callback request. A simple example might be $request.body#/url. However, using a runtime expression the complete HTTP message can be accessed. -This includes accessing any part of a body that a JSON Pointer [[!rfc6901]] can reference.

    +This includes accessing any part of a body that a JSON Pointer [[!RFC6901]] can reference.

    For example, given the following HTTP request:

    -
    
    -POST /subscribe/myevent?queryUrl=http://clientdomain.com/stillrunning HTTP/1.1
    -Host: example.org
    -Content-Type: application/json
    -Content-Length: 187
    +
    
    +POST /subscribe/myevent?queryUrl=http://clientdomain.com/stillrunning HTTP/1.1
    +Host: example.org
    +Content-Type: application/json
    +Content-Length: 187
     
    -{
    -  "failedUrl" : "http://clientdomain.com/failed",
    -  "successUrls" : [
    -    "http://clientdomain.com/fast",
    -    "http://clientdomain.com/medium",
    -    "http://clientdomain.com/slow"
    +{
    +  "failedUrl" : "http://clientdomain.com/failed",
    +  "successUrls" : [
    +    "http://clientdomain.com/fast",
    +    "http://clientdomain.com/medium",
    +    "http://clientdomain.com/slow"
       ] 
     }
     
    -201 Created
    -Location: http://example.org/subscription/1
    -
    +201 Created +Location: http://example.org/subscription/1 +

    The following examples show how the various expressions evaluate, assuming the callback operation has a path parameter named eventType and a query parameter named queryUrl.

    @@ -2354,19 +2362,19 @@

    Callback Object Example

    The following example shows a callback to the URL specified by the id and email property in the request body.

    -
    
    -myWebhook:
    -  'http://notificationServer.com?transactionId={$request.body#/id}&email={$request.body#/email}':
    -    post:
    -      requestBody:
    -        description: Callback payload
    -        content: 
    -          'application/json':
    -            schema:
    -              $ref: '#/components/schemas/SomePayload'
    -      responses:
    -        '200':
    -          description: webhook successfully processed and no retries will be performed
    +
    
    +myWebhook:
    +  'http://notificationServer.com?transactionId={$request.body#/id}&email={$request.body#/email}':
    +    post:
    +      requestBody:
    +        description: Callback payload
    +        content: 
    +          'application/json':
    +            schema:
    +              $ref: '#/components/schemas/SomePayload'
    +      responses:
    +        '200':
    +          description: webhook successfully processed and no retries will be performed
     

    Example Object

    Fixed Fields

    @@ -2406,63 +2414,63 @@ of its associated value. Tooling implementations MAY choose to validate compatibility automatically, and reject the example value(s) if incompatible.

    Example Object Example

    -
    
    -# in a model
    -schemas:
    -  properties:
    -    name:
    -      type: string
    -      examples:
    -        name:
    -          $ref: http://example.org/petapi-examples/openapi.json#/components/examples/name-example
    +
    
    +# in a model
    +schemas:
    +  properties:
    +    name:
    +      type: string
    +      examples:
    +        name:
    +          $ref: http://example.org/petapi-examples/openapi.json#/components/examples/name-example
     
    -# in a request body:
    -  requestBody:
    -    content:
    -      'application/json':
    -        schema:
    -          $ref: '#/components/schemas/Address'
    -        examples: 
    -          foo:
    -            summary: A foo example
    -            value: {"foo": "bar"}
    -          bar:
    -            summary: A bar example
    -            value: {"bar": "baz"}
    -      'application/xml':
    -        examples: 
    -          xmlExample:
    -            summary: This is an example in XML
    -            externalValue: 'http://example.org/examples/address-example.xml'
    -      'text/plain':
    -        examples:
    -          textExample: 
    -            summary: This is a text example
    -            externalValue: 'http://foo.bar/examples/address-example.txt' 
    +# in a request body:
    +  requestBody:
    +    content:
    +      'application/json':
    +        schema:
    +          $ref: '#/components/schemas/Address'
    +        examples: 
    +          foo:
    +            summary: A foo example
    +            value: {"foo": "bar"}
    +          bar:
    +            summary: A bar example
    +            value: {"bar": "baz"}
    +      'application/xml':
    +        examples: 
    +          xmlExample:
    +            summary: This is an example in XML
    +            externalValue: 'http://example.org/examples/address-example.xml'
    +      'text/plain':
    +        examples:
    +          textExample: 
    +            summary: This is a text example
    +            externalValue: 'http://foo.bar/examples/address-example.txt' 
     
     
    -# in a parameter
    -  parameters:
    -    - name: 'zipCode'
    -      in: 'query'
    -      schema:
    -        type: 'string'
    -        format: 'zip-code'
    -        examples:
    -          zip-example: 
    -            $ref: '#/components/examples/zip-example'
    +# in a parameter
    +  parameters:
    +    - name: 'zipCode'
    +      in: 'query'
    +      schema:
    +        type: 'string'
    +        format: 'zip-code'
    +        examples:
    +          zip-example: 
    +            $ref: '#/components/examples/zip-example'
     
    -# in a response
    -  responses:
    -    '200':
    -      description: your car appointment has been booked
    -      content: 
    -        application/json:
    -          schema:
    -            $ref: '#/components/schemas/SuccessResponse'
    -          examples:
    -            confirmation-success:
    -              $ref: '#/components/examples/confirmation-success'
    +# in a response
    +  responses:
    +    '200':
    +      description: your car appointment has been booked
    +      content: 
    +        application/json:
    +          schema:
    +            $ref: '#/components/schemas/SuccessResponse'
    +          examples:
    +            confirmation-success:
    +              $ref: '#/components/examples/confirmation-success'
     

    Link Object

    The Link object represents a possible design-time link for a response. @@ -2518,60 +2526,60 @@ for specifications with external references.

    Examples

    Computing a link from a request operation where the $request.path.id is used to pass a request parameter to the linked operation.

    -
    
    -paths:
    -  /users/{id}:
    -    parameters:
    -    - name: id
    -      in: path
    -      required: true
    -      description: the user identifier, as userId 
    -      schema:
    -        type: string
    -    get:
    -      responses:
    -        '200':
    -          description: the user being returned
    -          content:
    -            application/json:
    -              schema:
    -                type: object
    -                properties:
    -                  uuid: # the unique user id
    -                    type: string
    -                    format: uuid
    -          links:
    -            address:
    -              # the target link operationId
    -              operationId: getUserAddress
    -              parameters:
    -                # get the `id` field from the request path parameter named `id`
    -                userId: $request.path.id
    -  # the path item of the linked operation
    -  /users/{userid}/address:
    -    parameters:
    -    - name: userid
    -      in: path
    -      required: true
    -      description: the user identifier, as userId 
    -      schema:
    -        type: string
    -    # linked operation
    -    get:
    -      operationId: getUserAddress
    -      responses:
    -        '200':
    -          description: the user's address
    +
    
    +paths:
    +  /users/{id}:
    +    parameters:
    +    - name: id
    +      in: path
    +      required: true
    +      description: the user identifier, as userId 
    +      schema:
    +        type: string
    +    get:
    +      responses:
    +        '200':
    +          description: the user being returned
    +          content:
    +            application/json:
    +              schema:
    +                type: object
    +                properties:
    +                  uuid: # the unique user id
    +                    type: string
    +                    format: uuid
    +          links:
    +            address:
    +              # the target link operationId
    +              operationId: getUserAddress
    +              parameters:
    +                # get the `id` field from the request path parameter named `id`
    +                userId: $request.path.id
    +  # the path item of the linked operation
    +  /users/{userid}/address:
    +    parameters:
    +    - name: userid
    +      in: path
    +      required: true
    +      description: the user identifier, as userId 
    +      schema:
    +        type: string
    +    # linked operation
    +    get:
    +      operationId: getUserAddress
    +      responses:
    +        '200':
    +          description: the user's address
     

    When a runtime expression fails to evaluate, no parameter value is passed to the target operation.

    Values from the response body can be used to drive a linked operation.

    -
    
    -links:
    -  address:
    -    operationId: getUserAddressByUUID
    -    parameters:
    -      # get the `uuid` field from the `uuid` field in the response body
    -      userUuid: $response.body#/uuid
    +
    
    +links:
    +  address:
    +    operationId: getUserAddressByUUID
    +    parameters:
    +      # get the `uuid` field from the `uuid` field in the response body
    +      userUuid: $response.body#/uuid
     

    Clients follow all links at their discretion. Neither permissions, nor the capability to make a successful call to that link, is guaranteed @@ -2579,22 +2587,22 @@

    OperationRef Examples

    As references to operationId MAY NOT be possible (the operationId is an optional value), references MAY also be made through a relative operationRef:

    -
    
    -links:
    -  UserRepositories:
    -    # returns array of '#/components/schemas/repository'
    -    operationRef: '#/paths/~12.0~1repositories~1{username}/get'
    -    parameters:
    -      username: $response.body#/username
    +
    
    +links:
    +  UserRepositories:
    +    # returns array of '#/components/schemas/repository'
    +    operationRef: '#/paths/~12.0~1repositories~1{username}/get'
    +    parameters:
    +      username: $response.body#/username
     

    or an absolute operationRef:

    -
    
    -links:
    -  UserRepositories:
    -    # returns array of '#/components/schemas/repository'
    -    operationRef: 'https://na2.gigantic-server.com/#/paths/~12.0~1repositories~1{username}/get'
    -    parameters:
    -      username: $response.body#/username
    +
    
    +links:
    +  UserRepositories:
    +    # returns array of '#/components/schemas/repository'
    +    operationRef: 'https://na2.gigantic-server.com/#/paths/~12.0~1repositories~1{username}/get'
    +    parameters:
    +      username: $response.body#/username
     

    Note that in the use of operationRef, the escaped forward-slash is necessary when using JSON references.

    @@ -2602,17 +2610,17 @@

    Runtime expressions allow defining values based on information that will only be available within the HTTP message in an actual API call. This mechanism is used by Link Objects and Callback Objects.

    The runtime expression is defined by the following [Augmented Backus-Naur Form] syntax

    -
    
    +
    
           expression = ( "$url" | "$method" | "$statusCode" | "$request." source | "$response." source )
           source = ( header-reference | query-reference | path-reference | body-reference )  
           header-reference = "header." token
           query-reference = "query." name  
           path-reference = "path." name
           body-reference = "body" ["#" fragment]
    -      fragment = a JSON Pointer [[!rfc6901]]  
    +      fragment = a JSON Pointer [RFC 6901](https://tools.ietf.org/html/rfc6901)  
           name = *( char )
    -      char = as per RFC [7159]section-7)
    -      token = as per RFC [7230]section-3.2.6)
    +      char = as per RFC [7159](https://tools.ietf.org/html/rfc7159#section-7)
    +      token = as per RFC [7230](https://tools.ietf.org/html/rfc7230#section-3.2.6)
     

    The name identifier is case-sensitive, whereas token is not.

    The table below provides examples of runtime expressions and examples of their use in a value:

    @@ -2674,18 +2682,18 @@

    Header Object Example

    A simple header of type integer:

    -
    
    +
    
     {
    -  "description": "The number of allowed requests in the current period",
    -  "schema": {
    -    "type": "integer"
    +  "description": "The number of allowed requests in the current period",
    +  "schema": {
    +    "type": "integer"
       }
     }
     
    -
    
    -description: The number of allowed requests in the current period
    -schema:
    -  type: integer
    +
    
    +description: The number of allowed requests in the current period
    +schema:
    +  type: integer
     

    Tag Object

    Adds metadata to a single tag that is used by the Operation Object. @@ -2719,15 +2727,15 @@

    This object MAY be extended with Specification Extensions.

    Tag Object Example

    -
    
    +
    
     {
    -	"name": "pet",
    -	"description": "Pets operations"
    +	"name": "pet",
    +	"description": "Pets operations"
     }
     
    -
    
    -name: pet
    -description: Pets operations
    +
    
    +name: pet
    +description: Pets operations
     

    Reference Object

    A simple object to allow referencing other components in the specification, internally and externally.

    @@ -2752,31 +2760,31 @@

    This object cannot be extended with additional properties and any properties added SHALL be ignored.

    Reference Object Example

    -
    
    +
    
     {
    -	"$ref": "#/components/schemas/Pet"
    +	"$ref": "#/components/schemas/Pet"
     }
     
    -
    
    -$ref: '#/components/schemas/Pet'
    +
    
    +$ref: '#/components/schemas/Pet'
     

    Relative Schema Document Example

    -
    
    +
    
     {
    -  "$ref": "Pet.json"
    +  "$ref": "Pet.json"
     }
     
    -
    
    -$ref: Pet.yaml
    +
    
    +$ref: Pet.yaml
     

    Relative Documents With Embedded Schema Example

    -
    
    +
    
     {
    -  "$ref": "definitions.json#/Pet"
    +  "$ref": "definitions.json#/Pet"
     }
     
    -
    
    -$ref: definitions.yaml#/Pet
    +
    
    +$ref: definitions.yaml#/Pet
     

    Schema Object

    The Schema Object allows the definition of input and output data types. @@ -2892,152 +2900,152 @@ The XML Object contains additional information about the available options.

    Schema Object Examples

    Primitive Sample
    -
    
    +
    
     {
    -  "type": "string",
    -  "format": "email"
    +  "type": "string",
    +  "format": "email"
     }
     
    -
    
    -type: string
    -format: email
    +
    
    +type: string
    +format: email
     
    Simple Model
    -
    
    +
    
     {
    -  "type": "object",
    -  "required": [
    -    "name"
    +  "type": "object",
    +  "required": [
    +    "name"
       ],
    -  "properties": {
    -    "name": {
    -      "type": "string"
    +  "properties": {
    +    "name": {
    +      "type": "string"
         },
    -    "address": {
    -      "$ref": "#/components/schemas/Address"
    +    "address": {
    +      "$ref": "#/components/schemas/Address"
         },
    -    "age": {
    -      "type": "integer",
    -      "format": "int32",
    -      "minimum": 0
    +    "age": {
    +      "type": "integer",
    +      "format": "int32",
    +      "minimum": 0
         }
       }
     }
     
    -
    
    -type: object
    -required:
    -- name
    -properties:
    -  name:
    -    type: string
    -  address:
    -    $ref: '#/components/schemas/Address'
    -  age:
    -    type: integer
    -    format: int32
    -    minimum: 0
    +
    
    +type: object
    +required:
    +- name
    +properties:
    +  name:
    +    type: string
    +  address:
    +    $ref: '#/components/schemas/Address'
    +  age:
    +    type: integer
    +    format: int32
    +    minimum: 0
     
    Model with Map/Dictionary Properties

    For a simple string to string mapping:

    -
    
    +
    
     {
    -  "type": "object",
    -  "additionalProperties": {
    -    "type": "string"
    +  "type": "object",
    +  "additionalProperties": {
    +    "type": "string"
       }
     }
     
    -
    
    -type: object
    -additionalProperties:
    -  type: string
    +
    
    +type: object
    +additionalProperties:
    +  type: string
     

    For a string to model mapping:

    -
    
    +
    
     {
    -  "type": "object",
    -  "additionalProperties": {
    -    "$ref": "#/components/schemas/ComplexModel"
    +  "type": "object",
    +  "additionalProperties": {
    +    "$ref": "#/components/schemas/ComplexModel"
       }
     }
     
    -
    
    -type: object
    -additionalProperties:
    -  $ref: '#/components/schemas/ComplexModel'
    +
    
    +type: object
    +additionalProperties:
    +  $ref: '#/components/schemas/ComplexModel'
     
    Model with Example
    -
    
    +
    
     {
    -  "type": "object",
    -  "properties": {
    -    "id": {
    -      "type": "integer",
    -      "format": "int64"
    +  "type": "object",
    +  "properties": {
    +    "id": {
    +      "type": "integer",
    +      "format": "int64"
         },
    -    "name": {
    -      "type": "string"
    +    "name": {
    +      "type": "string"
         }
       },
    -  "required": [
    -    "name"
    +  "required": [
    +    "name"
       ],
    -  "example": {
    -    "name": "Puma",
    -    "id": 1
    +  "example": {
    +    "name": "Puma",
    +    "id": 1
       }
     }
     
    -
    
    -type: object
    -properties:
    -  id:
    -    type: integer
    -    format: int64
    -  name:
    -    type: string
    -required:
    -- name
    -example:
    -  name: Puma
    -  id: 1
    +
    
    +type: object
    +properties:
    +  id:
    +    type: integer
    +    format: int64
    +  name:
    +    type: string
    +required:
    +- name
    +example:
    +  name: Puma
    +  id: 1
     
    Models with Composition
    -
    
    +
    
     {
    -  "components": {
    -    "schemas": {
    -      "ErrorModel": {
    -        "type": "object",
    -        "required": [
    -          "message",
    -          "code"
    +  "components": {
    +    "schemas": {
    +      "ErrorModel": {
    +        "type": "object",
    +        "required": [
    +          "message",
    +          "code"
             ],
    -        "properties": {
    -          "message": {
    -            "type": "string"
    +        "properties": {
    +          "message": {
    +            "type": "string"
               },
    -          "code": {
    -            "type": "integer",
    -            "minimum": 100,
    -            "maximum": 600
    +          "code": {
    +            "type": "integer",
    +            "minimum": 100,
    +            "maximum": 600
               }
             }
           },
    -      "ExtendedErrorModel": {
    -        "allOf": [
    +      "ExtendedErrorModel": {
    +        "allOf": [
               {
    -            "$ref": "#/components/schemas/ErrorModel"
    +            "$ref": "#/components/schemas/ErrorModel"
               },
               {
    -            "type": "object",
    -            "required": [
    -              "rootCause"
    +            "type": "object",
    +            "required": [
    +              "rootCause"
                 ],
    -            "properties": {
    -              "rootCause": {
    -                "type": "string"
    +            "properties": {
    +              "rootCause": {
    +                "type": "string"
                   }
                 }
               }
    @@ -3047,100 +3055,100 @@
       }
     }
     
    -
    
    -components:
    -  schemas:
    -    ErrorModel:
    -      type: object
    -      required:
    -      - message
    -      - code
    -      properties:
    -        message:
    -          type: string
    -        code:
    -          type: integer
    -          minimum: 100
    -          maximum: 600
    -    ExtendedErrorModel:
    -      allOf:
    -      - $ref: '#/components/schemas/ErrorModel'
    -      - type: object
    -        required:
    -        - rootCause
    -        properties:
    -          rootCause:
    -            type: string
    +
    
    +components:
    +  schemas:
    +    ErrorModel:
    +      type: object
    +      required:
    +      - message
    +      - code
    +      properties:
    +        message:
    +          type: string
    +        code:
    +          type: integer
    +          minimum: 100
    +          maximum: 600
    +    ExtendedErrorModel:
    +      allOf:
    +      - $ref: '#/components/schemas/ErrorModel'
    +      - type: object
    +        required:
    +        - rootCause
    +        properties:
    +          rootCause:
    +            type: string
     
    Models with Polymorphism Support
    -
    
    +
    
     {
    -  "components": {
    -    "schemas": {
    -      "Pet": {
    -        "type": "object",
    -        "discriminator": {
    -          "propertyName": "petType"
    +  "components": {
    +    "schemas": {
    +      "Pet": {
    +        "type": "object",
    +        "discriminator": {
    +          "propertyName": "petType"
             },
    -        "properties": {
    -          "name": {
    -            "type": "string"
    +        "properties": {
    +          "name": {
    +            "type": "string"
               },
    -          "petType": {
    -            "type": "string"
    +          "petType": {
    +            "type": "string"
               }
             },
    -        "required": [
    -          "name",
    -          "petType"
    +        "required": [
    +          "name",
    +          "petType"
             ]
           },
    -      "Cat": {
    -        "description": "A representation of a cat. Note that `Cat` will be used as the discriminator value.",
    -        "allOf": [
    +      "Cat": {
    +        "description": "A representation of a cat. Note that `Cat` will be used as the discriminator value.",
    +        "allOf": [
               {
    -            "$ref": "#/components/schemas/Pet"
    +            "$ref": "#/components/schemas/Pet"
               },
               {
    -            "type": "object",
    -            "properties": {
    -              "huntingSkill": {
    -                "type": "string",
    -                "description": "The measured skill for hunting",
    -                "default": "lazy",
    -                "enum": [
    -                  "clueless",
    -                  "lazy",
    -                  "adventurous",
    -                  "aggressive"
    +            "type": "object",
    +            "properties": {
    +              "huntingSkill": {
    +                "type": "string",
    +                "description": "The measured skill for hunting",
    +                "default": "lazy",
    +                "enum": [
    +                  "clueless",
    +                  "lazy",
    +                  "adventurous",
    +                  "aggressive"
                     ]
                   }
                 },
    -            "required": [
    -              "huntingSkill"
    +            "required": [
    +              "huntingSkill"
                 ]
               }
             ]
           },
    -      "Dog": {
    -        "description": "A representation of a dog. Note that `Dog` will be used as the discriminator value.",
    -        "allOf": [
    +      "Dog": {
    +        "description": "A representation of a dog. Note that `Dog` will be used as the discriminator value.",
    +        "allOf": [
               {
    -            "$ref": "#/components/schemas/Pet"
    +            "$ref": "#/components/schemas/Pet"
               },
               {
    -            "type": "object",
    -            "properties": {
    -              "packSize": {
    -                "type": "integer",
    -                "format": "int32",
    -                "description": "the size of the pack the dog is from",
    -                "default": 0,
    -                "minimum": 0
    +            "type": "object",
    +            "properties": {
    +              "packSize": {
    +                "type": "integer",
    +                "format": "int32",
    +                "description": "the size of the pack the dog is from",
    +                "default": 0,
    +                "minimum": 0
                   }
                 },
    -            "required": [
    -              "packSize"
    +            "required": [
    +              "packSize"
                 ]
               }
             ]
    @@ -3149,51 +3157,51 @@
       }
     }
     
    -
    
    -components:
    -  schemas:
    -    Pet:
    -      type: object
    -      discriminator:
    -        propertyName: petType
    -      properties:
    -        name:
    -          type: string
    -        petType:
    -          type: string
    -      required:
    -      - name
    -      - petType
    -    Cat:  ## "Cat" will be used as the discriminator value
    -      description: A representation of a cat
    -      allOf:
    -      - $ref: '#/components/schemas/Pet'
    -      - type: object
    -        properties:
    -          huntingSkill:
    -            type: string
    -            description: The measured skill for hunting
    -            enum:
    -            - clueless
    -            - lazy
    -            - adventurous
    -            - aggressive
    -        required:
    -        - huntingSkill
    -    Dog:  ## "Dog" will be used as the discriminator value
    -      description: A representation of a dog
    -      allOf:
    -      - $ref: '#/components/schemas/Pet'
    -      - type: object
    -        properties:
    -          packSize:
    -            type: integer
    -            format: int32
    -            description: the size of the pack the dog is from
    -            default: 0
    -            minimum: 0
    -        required:
    -        - packSize
    +
    
    +components:
    +  schemas:
    +    Pet:
    +      type: object
    +      discriminator:
    +        propertyName: petType
    +      properties:
    +        name:
    +          type: string
    +        petType:
    +          type: string
    +      required:
    +      - name
    +      - petType
    +    Cat:  ## "Cat" will be used as the discriminator value
    +      description: A representation of a cat
    +      allOf:
    +      - $ref: '#/components/schemas/Pet'
    +      - type: object
    +        properties:
    +          huntingSkill:
    +            type: string
    +            description: The measured skill for hunting
    +            enum:
    +            - clueless
    +            - lazy
    +            - adventurous
    +            - aggressive
    +        required:
    +        - huntingSkill
    +    Dog:  ## "Dog" will be used as the discriminator value
    +      description: A representation of a dog
    +      allOf:
    +      - $ref: '#/components/schemas/Pet'
    +      - type: object
    +        properties:
    +          packSize:
    +            type: integer
    +            format: int32
    +            description: the size of the pack the dog is from
    +            default: 0
    +            minimum: 0
    +        required:
    +        - packSize
     

    Discriminator Object

    When request bodies or response payloads may be one of a number of different schemas, a discriminator object can be used to aid in serialization, deserialization, and validation. The discriminator is a specific object in a schema which is used to inform the consumer of the specification of an alternative schema based on the value associated with it.

    @@ -3222,7 +3230,7 @@

    The discriminator attribute is legal only when using one of the composite keywords oneOf, anyOf, allOf.

    In OAS 3.0, a response payload MAY be described to be exactly one of any number of types:

    -
    
    +
    
     MyResponseType:
       oneOf:
       - $ref: '#/components/schemas/Cat'
    @@ -3230,7 +3238,7 @@
       - $ref: '#/components/schemas/Lizard'
     

    which means the payload MUST, by validation, match exactly one of the schemas described by Cat, Dog, or Lizard. In this case, a discriminator MAY act as a “hint” to shortcut validation and selection of the matching schema which may be a costly operation, depending on the complexity of the schema. We can then describe exactly which field tells us which schema to use:

    -
    
    +
    
     MyResponseType:
       oneOf:
       - $ref: '#/components/schemas/Cat'
    @@ -3240,7 +3248,7 @@
         propertyName: pet_type
     

    The expectation now is that a property with name pet_type MUST be present in the response payload, and the value will correspond to the name of a schema defined in the OAS document. Thus the response payload:

    -
    
    +
    
     {
       "id": 12345,
       "pet_type": "Cat"
    @@ -3248,7 +3256,7 @@
     

    Will indicate that the Cat schema be used in conjunction with this payload.

    In scenarios where the value of the discriminator field does not match the schema name or implicit mapping is not possible, an optional mapping definition MAY be used:

    -
    
    +
    
     MyResponseType:
       oneOf:
       - $ref: '#/components/schemas/Cat'
    @@ -3265,7 +3273,7 @@
     

    When used in conjunction with the anyOf construct, the use of the discriminator can avoid ambiguity where multiple schemas may satisfy a single payload.

    In both the oneOf and anyOf use cases, all possible schemas MUST be listed explicitly. To avoid redundancy, the discriminator MAY be added to a parent schema definition, and all schemas comprising the parent schema in an allOf construct may be used as an alternate schema.

    For example:

    -
    
    +
    
     components:
       schemas:
         Pet:
    @@ -3305,14 +3313,14 @@
                 type: boolean
     

    a payload like this:

    -
    
    +
    
     {
       "pet_type": "Cat",
       "name": "misty"
     }
     

    will indicate that the Cat schema be used. Likewise this schema:

    -
    
    +
    
     {
       "pet_type": "cachorro",
       "bark": "soft"
    @@ -3365,294 +3373,294 @@
     

    The examples of the XML object definitions are included inside a property definition of a Schema Object with a sample of the XML representation of it.

    No XML Element

    Basic string property:

    -
    
    +
    
     {
    -    "animals": {
    -        "type": "string"
    +    "animals": {
    +        "type": "string"
         }
     }
     
    -
    
    -animals:
    -  type: string
    +
    
    +animals:
    +  type: string
     
    -
    
    -<animals>...</animals>
    +
    
    +<animals>...</animals>
     

    Basic string array property (wrapped is false by default):

    -
    
    +
    
     {
    -    "animals": {
    -        "type": "array",
    -        "items": {
    -            "type": "string"
    +    "animals": {
    +        "type": "array",
    +        "items": {
    +            "type": "string"
             }
         }
     }
     
    -
    
    -animals:
    -  type: array
    -  items:
    -    type: string
    +
    
    +animals:
    +  type: array
    +  items:
    +    type: string
     
    -
    
    -<animals>...</animals>
    -<animals>...</animals>
    -<animals>...</animals>
    +
    
    +<animals>...</animals>
    +<animals>...</animals>
    +<animals>...</animals>
     
    XML Name Replacement
    -
    
    +
    
     {
    -  "animals": {
    -    "type": "string",
    -    "xml": {
    -      "name": "animal"
    +  "animals": {
    +    "type": "string",
    +    "xml": {
    +      "name": "animal"
         }
       }
     }
     
    -
    
    -animals:
    -  type: string
    -  xml:
    -    name: animal
    +
    
    +animals:
    +  type: string
    +  xml:
    +    name: animal
     
    -
    
    -<animal>...</animal>
    +
    
    +<animal>...</animal>
     
    XML Attribute, Prefix and Namespace

    In this example, a full model definition is shown.

    -
    
    +
    
     {
    -  "Person": {
    -    "type": "object",
    -    "properties": {
    -      "id": {
    -        "type": "integer",
    -        "format": "int32",
    -        "xml": {
    -          "attribute": true
    +  "Person": {
    +    "type": "object",
    +    "properties": {
    +      "id": {
    +        "type": "integer",
    +        "format": "int32",
    +        "xml": {
    +          "attribute": true
             }
           },
    -      "name": {
    -        "type": "string",
    -        "xml": {
    -          "namespace": "http://example.com/schema/sample",
    -          "prefix": "sample"
    +      "name": {
    +        "type": "string",
    +        "xml": {
    +          "namespace": "http://example.com/schema/sample",
    +          "prefix": "sample"
             }
           }
         }
       }
     }
     
    -
    
    -Person:
    -  type: object
    -  properties:
    -    id:
    -      type: integer
    -      format: int32
    -      xml:
    -        attribute: true
    -    name:
    -      type: string
    -      xml:
    -        namespace: http://example.com/schema/sample
    -        prefix: sample
    -
    -
    
    -<Person id="123">
    -    <sample:name xmlns:sample="http://example.com/schema/sample">example</sample:name>
    -</Person>
    +
    
    +Person:
    +  type: object
    +  properties:
    +    id:
    +      type: integer
    +      format: int32
    +      xml:
    +        attribute: true
    +    name:
    +      type: string
    +      xml:
    +        namespace: http://example.com/schema/sample
    +        prefix: sample
    +
    +
    
    +<Person id="123">
    +    <sample:name xmlns:sample="http://example.com/schema/sample">example</sample:name>
    +</Person>
     
    XML Arrays

    Changing the element names:

    -
    
    +
    
     {
    -  "animals": {
    -    "type": "array",
    -    "items": {
    -      "type": "string",
    -      "xml": {
    -        "name": "animal"
    +  "animals": {
    +    "type": "array",
    +    "items": {
    +      "type": "string",
    +      "xml": {
    +        "name": "animal"
           }
         }
       }
     }
     
    -
    
    -animals:
    -  type: array
    -  items:
    -    type: string
    -    xml:
    -      name: animal
    +
    
    +animals:
    +  type: array
    +  items:
    +    type: string
    +    xml:
    +      name: animal
     
    -
    
    -<animal>value</animal>
    -<animal>value</animal>
    +
    
    +<animal>value</animal>
    +<animal>value</animal>
     

    The external name property has no effect on the XML:

    -
    
    +
    
     {
    -  "animals": {
    -    "type": "array",
    -    "items": {
    -      "type": "string",
    -      "xml": {
    -        "name": "animal"
    +  "animals": {
    +    "type": "array",
    +    "items": {
    +      "type": "string",
    +      "xml": {
    +        "name": "animal"
           }
         },
    -    "xml": {
    -      "name": "aliens"
    +    "xml": {
    +      "name": "aliens"
         }
       }
     }
     
    -
    
    -animals:
    -  type: array
    -  items:
    -    type: string
    -    xml:
    -      name: animal
    -  xml:
    -    name: aliens
    +
    
    +animals:
    +  type: array
    +  items:
    +    type: string
    +    xml:
    +      name: animal
    +  xml:
    +    name: aliens
     
    -
    
    -<animal>value</animal>
    -<animal>value</animal>
    +
    
    +<animal>value</animal>
    +<animal>value</animal>
     

    Even when the array is wrapped, if a name is not explicitly defined, the same name will be used both internally and externally:

    -
    
    +
    
     {
    -  "animals": {
    -    "type": "array",
    -    "items": {
    -      "type": "string"
    +  "animals": {
    +    "type": "array",
    +    "items": {
    +      "type": "string"
         },
    -    "xml": {
    -      "wrapped": true
    +    "xml": {
    +      "wrapped": true
         }
       }
     }
     
    -
    
    -animals:
    -  type: array
    -  items:
    -    type: string
    -  xml:
    -    wrapped: true
    +
    
    +animals:
    +  type: array
    +  items:
    +    type: string
    +  xml:
    +    wrapped: true
     
    -
    
    -<animals>
    -  <animals>value</animals>
    -  <animals>value</animals>
    -</animals>
    +
    
    +<animals>
    +  <animals>value</animals>
    +  <animals>value</animals>
    +</animals>
     

    To overcome the naming problem in the example above, the following definition can be used:

    -
    
    +
    
     {
    -  "animals": {
    -    "type": "array",
    -    "items": {
    -      "type": "string",
    -      "xml": {
    -        "name": "animal"
    +  "animals": {
    +    "type": "array",
    +    "items": {
    +      "type": "string",
    +      "xml": {
    +        "name": "animal"
           }
         },
    -    "xml": {
    -      "wrapped": true
    +    "xml": {
    +      "wrapped": true
         }
       }
     }
     
    -
    
    -animals:
    -  type: array
    -  items:
    -    type: string
    -    xml:
    -      name: animal
    -  xml:
    -    wrapped: true
    -
    -
    
    -<animals>
    -  <animal>value</animal>
    -  <animal>value</animal>
    -</animals>
    +
    
    +animals:
    +  type: array
    +  items:
    +    type: string
    +    xml:
    +      name: animal
    +  xml:
    +    wrapped: true
    +
    +
    
    +<animals>
    +  <animal>value</animal>
    +  <animal>value</animal>
    +</animals>
     

    Affecting both internal and external names:

    -
    
    +
    
     {
    -  "animals": {
    -    "type": "array",
    -    "items": {
    -      "type": "string",
    -      "xml": {
    -        "name": "animal"
    +  "animals": {
    +    "type": "array",
    +    "items": {
    +      "type": "string",
    +      "xml": {
    +        "name": "animal"
           }
         },
    -    "xml": {
    -      "name": "aliens",
    -      "wrapped": true
    +    "xml": {
    +      "name": "aliens",
    +      "wrapped": true
         }
       }
     }
     
    -
    
    -animals:
    -  type: array
    -  items:
    -    type: string
    -    xml:
    -      name: animal
    -  xml:
    -    name: aliens
    -    wrapped: true
    -
    -
    
    -<aliens>
    -  <animal>value</animal>
    -  <animal>value</animal>
    -</aliens>
    +
    
    +animals:
    +  type: array
    +  items:
    +    type: string
    +    xml:
    +      name: animal
    +  xml:
    +    name: aliens
    +    wrapped: true
    +
    +
    
    +<aliens>
    +  <animal>value</animal>
    +  <animal>value</animal>
    +</aliens>
     

    If we change the external element but not the internal ones:

    -
    
    +
    
     {
    -  "animals": {
    -    "type": "array",
    -    "items": {
    -      "type": "string"
    +  "animals": {
    +    "type": "array",
    +    "items": {
    +      "type": "string"
         },
    -    "xml": {
    -      "name": "aliens",
    -      "wrapped": true
    +    "xml": {
    +      "name": "aliens",
    +      "wrapped": true
         }
       }
     }
     
    -
    
    -animals:
    -  type: array
    -  items:
    -    type: string
    -  xml:
    -    name: aliens
    -    wrapped: true
    -
    -
    
    -<aliens>
    -  <aliens>value</aliens>
    -  <aliens>value</aliens>
    -</aliens>
    +
    
    +animals:
    +  type: array
    +  items:
    +    type: string
    +  xml:
    +    name: aliens
    +    wrapped: true
    +
    +
    
    +<aliens>
    +  <aliens>value</aliens>
    +  <aliens>value</aliens>
    +</aliens>
     

    Security Scheme Object

    Defines a security scheme that can be used by the operations. -Supported schemes are HTTP authentication, an API key (either as a header or as a query parameter), OAuth2’s common flows (implicit, password, application and access code) as defined in [[!rfc6749]], and OpenID Connect Discovery.

    +Supported schemes are HTTP authentication, an API key (either as a header or as a query parameter), OAuth2’s common flows (implicit, password, application and access code) as defined in [[!RFC6749]], and OpenID Connect Discovery.

    Fixed Fields

    @@ -3692,7 +3700,7 @@ - + @@ -3717,65 +3725,65 @@

    This object MAY be extended with Specification Extensions.

    Security Scheme Object Example

    Basic Authentication Sample
    -
    
    +
    
     {
    -  "type": "http",
    -  "scheme": "basic"
    +  "type": "http",
    +  "scheme": "basic"
     }
     
    -
    
    -type: http
    -scheme: basic
    +
    
    +type: http
    +scheme: basic
     
    API Key Sample
    -
    
    +
    
     {
    -  "type": "apiKey",
    -  "name": "api_key",
    -  "in": "header"
    +  "type": "apiKey",
    +  "name": "api_key",
    +  "in": "header"
     }
     
    -
    
    -type: apiKey
    -name: api_key
    -in: header
    +
    
    +type: apiKey
    +name: api_key
    +in: header
     
    JWT Bearer Sample
    -
    
    +
    
     {
    -  "type": "http",
    -  "scheme": "bearer",
    -  "bearerFormat": "JWT",
    +  "type": "http",
    +  "scheme": "bearer",
    +  "bearerFormat": "JWT",
     }
     
    -
    
    -type: http
    -scheme: bearer
    -bearerFormat: JWT
    +
    
    +type: http
    +scheme: bearer
    +bearerFormat: JWT
     
    Implicit OAuth2 Sample
    -
    
    +
    
     {
    -  "type": "oauth2",
    -  "flows": {
    -    "implicit": {
    -      "authorizationUrl": "https://example.com/api/oauth/dialog",
    -      "scopes": {
    -        "write:pets": "modify pets in your account",
    -        "read:pets": "read your pets"
    +  "type": "oauth2",
    +  "flows": {
    +    "implicit": {
    +      "authorizationUrl": "https://example.com/api/oauth/dialog",
    +      "scopes": {
    +        "write:pets": "modify pets in your account",
    +        "read:pets": "read your pets"
           }
         }
       }
     }
     
    -
    
    -type: oauth2
    -flows: 
    -  implicit:
    -    authorizationUrl: https://example.com/api/oauth/dialog
    -    scopes:
    -      write:pets: modify pets in your account
    -      read:pets: read your pets
    +
    
    +type: oauth2
    +flows: 
    +  implicit:
    +    authorizationUrl: https://example.com/api/oauth/dialog
    +    scopes:
    +      write:pets: modify pets in your account
    +      read:pets: read your pets
     

    OAuth Flows Object

    Allows configuration of the supported OAuth Flows.

    @@ -3853,42 +3861,42 @@
    scheme string httpREQUIRED. The name of the HTTP Authorization scheme to be used in the [Authorization header as defined in RFC7235]section-5.1).REQUIRED. The name of the HTTP Authorization scheme to be used in the Authorization header as defined in [[!RFC7235]].
    bearerFormat

    This object MAY be extended with Specification Extensions.

    OAuth Flow Object Examples

    -
    
    +
    
     {
    -  "type": "oauth2",
    -  "flows": {
    -    "implicit": {
    -      "authorizationUrl": "https://example.com/api/oauth/dialog",
    -      "scopes": {
    -        "write:pets": "modify pets in your account",
    -        "read:pets": "read your pets"
    +  "type": "oauth2",
    +  "flows": {
    +    "implicit": {
    +      "authorizationUrl": "https://example.com/api/oauth/dialog",
    +      "scopes": {
    +        "write:pets": "modify pets in your account",
    +        "read:pets": "read your pets"
           }
         },
    -    "authorizationCode": {
    -      "authorizationUrl": "https://example.com/api/oauth/dialog",
    -      "tokenUrl": "https://example.com/api/oauth/token",
    -      "scopes": {
    -        "write:pets": "modify pets in your account",
    -        "read:pets": "read your pets"
    +    "authorizationCode": {
    +      "authorizationUrl": "https://example.com/api/oauth/dialog",
    +      "tokenUrl": "https://example.com/api/oauth/token",
    +      "scopes": {
    +        "write:pets": "modify pets in your account",
    +        "read:pets": "read your pets"
           }
         }
       }
     }
     
    -
    
    -type: oauth2
    -flows: 
    -  implicit:
    -    authorizationUrl: https://example.com/api/oauth/dialog
    -    scopes:
    -      write:pets: modify pets in your account
    -      read:pets: read your pets
    -  authorizationCode:
    -    authorizationUrl: https://example.com/api/oauth/dialog
    -    tokenUrl: https://example.com/api/oauth/token
    -    scopes:
    -      write:pets: modify pets in your account
    -      read:pets: read your pets 
    +
    
    +type: oauth2
    +flows: 
    +  implicit:
    +    authorizationUrl: https://example.com/api/oauth/dialog
    +    scopes:
    +      write:pets: modify pets in your account
    +      read:pets: read your pets
    +  authorizationCode:
    +    authorizationUrl: https://example.com/api/oauth/dialog
    +    tokenUrl: https://example.com/api/oauth/token
    +    scopes:
    +      write:pets: modify pets in your account
    +      read:pets: read your pets 
     

    Security Requirement Object

    Lists the required security schemes to execute this operation. @@ -3915,27 +3923,27 @@

    Security Requirement Object Examples

    Non-OAuth2 Security Requirement
    -
    
    +
    
     {
    -  "api_key": []
    +  "api_key": []
     }
     
    -
    
    -api_key: []
    +
    
    +api_key: []
     
    OAuth2 Security Requirement
    -
    
    +
    
     {
    -  "petstore_auth": [
    -    "write:pets",
    -    "read:pets"
    +  "petstore_auth": [
    +    "write:pets",
    +    "read:pets"
       ]
     }
     
    -
    
    -petstore_auth:
    -- write:pets
    -- read:pets
    +
    
    +petstore_auth:
    +- write:pets
    +- read:pets
     

    Specification Extensions

    While the OpenAPI Specification tries to accommodate most use cases, additional data can be added to extend the specification at certain points.

    From e7f201cc83b4fd6d90df99ca6285ffb8feff9f6d Mon Sep 17 00:00:00 2001 From: Mike Ralphson Date: Sat, 8 Dec 2018 03:37:52 +0000 Subject: [PATCH 2/2] Update index.md with clearer title and desc. --- index.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/index.md b/index.md index a0ba023253..5fc131da89 100644 --- a/index.md +++ b/index.md @@ -1,7 +1,16 @@ -## Current major version +--- +title: OpenAPI Initiative gh-pages repository +description: HTML Spec. and extensible registry +--- +# OpenAPI Initiative Registry -* [v3.0.0](oas/v3.0.0.html) +This site contains the OpenAPI Initiative Registry and content for the HTML versions of the OpenAPI Specification. -## Previous major version +## Registry -* [v2.0](oas/v2.0.html) +* Proceed to [Registry](/registry/index.html) + +## The Specification + +* [Markdown source-of-truth](https://github.com/OAI/OpenAPI-Specification) +* [HTML Specification versions](https://openapis.org/specification)