From 7c78c553051bd085d8f2627ff39631497748b8d8 Mon Sep 17 00:00:00 2001 From: "Garen J. Torikian" Date: Mon, 6 May 2024 14:21:48 -0700 Subject: [PATCH] Remove unnecessary regexp --- lib/html_proofer/attribute/url.rb | 17 +- ...ml_foo_log_level_error_type_directory_.yml | 25 +++ ..._links_html_log_level_error_type_file_.yml | 25 +++ ...ternal_html_log_level_error_type_file_.yml | 25 +++ ...y_href_html_log_level_error_type_file_.yml | 87 +++++++++ ...ensions_foo_log_level_error_type_file_.yml | 25 +++ ...acters_html_log_level_error_type_file_.yml | 75 ++++++++ ...source_html_log_level_error_type_file_.yml | 25 +++ ...domain_html_log_level_error_type_file_.yml | 166 ++++++++++++++++++ ...ternal_html_log_level_error_type_file_.yml | 25 +++ 10 files changed, 492 insertions(+), 3 deletions(-) diff --git a/lib/html_proofer/attribute/url.rb b/lib/html_proofer/attribute/url.rb index edc26302..9d751f7c 100644 --- a/lib/html_proofer/attribute/url.rb +++ b/lib/html_proofer/attribute/url.rb @@ -221,11 +221,22 @@ def without_hash @url.to_s.sub(/##{hash}/, "") end - # catch any obvious issues, like strings in port numbers + # catch any obvious issues private def clean_url! - return if @url =~ /^([!#{Regexp.last_match(0)}-;=?-\[\]_a-z~]|%[0-9a-fA-F]{2})+$/ + parsed_url = Addressable::URI.parse(@url) + url = if parsed_url.scheme.nil? + parsed_url + else + parsed_url.normalize + end.to_s - @url = Addressable::URI.parse(@url).normalize.to_s + # normalize strips this off, which causes issues with cache + @url = if @url.end_with?("/") && !url.end_with?("/") + "#{url}/" + else + url + end + rescue Addressable::URI::InvalidURIError # rubocop:disable Lint/SuppressedException; error will be reported at check time end private def swap_urls! diff --git a/spec/html-proofer/fixtures/vcr_cassettes/fixtures/links_extensions_xhtml_foo_log_level_error_type_directory_.yml b/spec/html-proofer/fixtures/vcr_cassettes/fixtures/links_extensions_xhtml_foo_log_level_error_type_directory_.yml index 9b711aaa..f37be1c5 100644 --- a/spec/html-proofer/fixtures/vcr_cassettes/fixtures/links_extensions_xhtml_foo_log_level_error_type_directory_.yml +++ b/spec/html-proofer/fixtures/vcr_cassettes/fixtures/links_extensions_xhtml_foo_log_level_error_type_directory_.yml @@ -150,4 +150,29 @@ http_interactions: adapter_metadata: effective_url: https://www.google.com/ recorded_at: Sat, 08 Oct 2022 12:48:22 GMT +- request: + method: head + uri: https://www.asdo3irj395295jsingrkrg4.com + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Mozilla/5.0 (compatible; HTML Proofer/5.0.8; +https://github.com/gjtorikian/html-proofer) + Accept: + - application/xml,application/xhtml+xml,text/html;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5 + Expect: + - '' + response: + status: + code: 0 + message: + headers: {} + body: + encoding: ASCII-8BIT + string: '' + http_version: + adapter_metadata: + effective_url: https://www.asdo3irj395295jsingrkrg4.com/ + recorded_at: Mon, 06 May 2024 22:00:42 GMT recorded_with: VCR 2.9.3 diff --git a/spec/html-proofer/fixtures/vcr_cassettes/links/bad_external_links_html_log_level_error_type_file_.yml b/spec/html-proofer/fixtures/vcr_cassettes/links/bad_external_links_html_log_level_error_type_file_.yml index 2156c5c7..fd98e955 100644 --- a/spec/html-proofer/fixtures/vcr_cassettes/links/bad_external_links_html_log_level_error_type_file_.yml +++ b/spec/html-proofer/fixtures/vcr_cassettes/links/bad_external_links_html_log_level_error_type_file_.yml @@ -74,4 +74,29 @@ http_interactions: adapter_metadata: effective_url: https://www.google.com/ recorded_at: Fri, 31 Dec 2021 16:37:35 GMT +- request: + method: head + uri: https://www.asdo3irj395295jsingrkrg4.com + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Mozilla/5.0 (compatible; HTML Proofer/5.0.8; +https://github.com/gjtorikian/html-proofer) + Accept: + - application/xml,application/xhtml+xml,text/html;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5 + Expect: + - '' + response: + status: + code: 0 + message: + headers: {} + body: + encoding: ASCII-8BIT + string: '' + http_version: + adapter_metadata: + effective_url: https://www.asdo3irj395295jsingrkrg4.com/ + recorded_at: Mon, 06 May 2024 22:00:39 GMT recorded_with: VCR 2.9.3 diff --git a/spec/html-proofer/fixtures/vcr_cassettes/links/broken_link_external_html_log_level_error_type_file_.yml b/spec/html-proofer/fixtures/vcr_cassettes/links/broken_link_external_html_log_level_error_type_file_.yml index 76999718..16a0fd21 100644 --- a/spec/html-proofer/fixtures/vcr_cassettes/links/broken_link_external_html_log_level_error_type_file_.yml +++ b/spec/html-proofer/fixtures/vcr_cassettes/links/broken_link_external_html_log_level_error_type_file_.yml @@ -99,4 +99,29 @@ http_interactions: adapter_metadata: effective_url: https://www.giffhub.com/ recorded_at: Wed, 14 Sep 2022 16:55:13 GMT +- request: + method: head + uri: https://www.asdo3irj395295jsingrkrg4.com + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Mozilla/5.0 (compatible; HTML Proofer/5.0.8; +https://github.com/gjtorikian/html-proofer) + Accept: + - application/xml,application/xhtml+xml,text/html;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5 + Expect: + - '' + response: + status: + code: 0 + message: + headers: {} + body: + encoding: ASCII-8BIT + string: '' + http_version: + adapter_metadata: + effective_url: https://www.asdo3irj395295jsingrkrg4.com/ + recorded_at: Mon, 06 May 2024 22:00:40 GMT recorded_with: VCR 2.9.3 diff --git a/spec/html-proofer/fixtures/vcr_cassettes/links/empty_href_html_log_level_error_type_file_.yml b/spec/html-proofer/fixtures/vcr_cassettes/links/empty_href_html_log_level_error_type_file_.yml index 4705e402..cb99d4ca 100644 --- a/spec/html-proofer/fixtures/vcr_cassettes/links/empty_href_html_log_level_error_type_file_.yml +++ b/spec/html-proofer/fixtures/vcr_cassettes/links/empty_href_html_log_level_error_type_file_.yml @@ -81,4 +81,91 @@ http_interactions: adapter_metadata: effective_url: https://travel.state.gov/content/dam/passports/FIG_cropper.swf recorded_at: Sun, 02 Jan 2022 20:18:52 GMT +- request: + method: head + uri: https://travel.state.gov/content/dam/passports/FIG_cropper.swf + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Mozilla/5.0 (compatible; HTML Proofer/5.0.8; +https://github.com/gjtorikian/html-proofer) + Accept: + - application/xml,application/xhtml+xml,text/html;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5 + Expect: + - '' + response: + status: + code: 404 + message: Not Found + headers: + Date: + - Mon, 06 May 2024 22:00:41 GMT + Server: + - Apache + X-Frame-Options: + - SAMEORIGIN + - SAMEORIGIN + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + Vary: + - Accept-Encoding + Connection: + - close + Content-Type: + - text/html;charset=utf-8 + body: + encoding: ASCII-8BIT + string: '' + http_version: '1.1' + adapter_metadata: + effective_url: https://travel.state.gov/content/dam/passports/FIG_cropper.swf + recorded_at: Mon, 06 May 2024 22:00:41 GMT +- request: + method: get + uri: https://travel.state.gov/content/dam/passports/FIG_cropper.swf + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Mozilla/5.0 (compatible; HTML Proofer/5.0.8; +https://github.com/gjtorikian/html-proofer) + Accept: + - application/xml,application/xhtml+xml,text/html;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5 + Expect: + - '' + response: + status: + code: 404 + message: Not Found + headers: + Date: + - Mon, 06 May 2024 22:00:41 GMT + Server: + - Apache + X-Frame-Options: + - SAMEORIGIN + - SAMEORIGIN + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + Vary: + - Accept-Encoding + Connection: + - close + Transfer-Encoding: + - chunked + Content-Type: + - text/html;charset=utf-8 + body: + encoding: ASCII-8BIT + string: !binary |- + CgoKCgoKCgoKCgoKICAgICAgIDwhLS0gU1RBUlQgQ0FQVENIQSAtLT4KICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3LnJlY2FwdGNoYS5uZXQvcmVjYXB0Y2hhL2FwaS5qcz9vbmxvYWQ9b25sb2FkQ2FsbGJhY2smcmVuZGVyPWV4cGxpY2l0IiBhc3luYyBkZWZlcj48L3NjcmlwdD4KICAgICAJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgICAgIHZhciBvbmxvYWRDYWxsYmFjayA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgIAlpZiAoJCgnI2NhcHRjaGFJbWFnZScpLmxlbmd0aCkgeyAKICAgICAgICAgICAgICAgCQlncmVjYXB0Y2hhLnJlbmRlcignY2FwdGNoYUltYWdlJywgewogICAgICAgICAgICAgICAJCQknc2l0ZWtleScgOiAnNkxkMHlFY1VBQUFBQUh6MktJZUNkbUpqVDAxcXpHS1hCcGV4cF9rZScKICAgICAgICAgICAgICAgCQl9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgaWYgKCQoJyNjYXB0Y2hhSW1hZ2UnKS5sZW5ndGgpIHsgCiAgICAgICAgICAgICAgIAkJZ3JlY2FwdGNoYS5yZW5kZXIoJ2NhcHRjaGFJbWFnZTInLCB7CiAgICAgICAgICAgICAgIAkJCSdzaXRla2V5JyA6ICc2TGQweUVjVUFBQUFBSHoyS0llQ2RtSmpUMDFxekdLWEJwZXhwX2tlJwogICAgICAgICAgICAgICAJCX0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICBpZiAoJCgnI2NhcHRjaGFJbWFnZScpLmxlbmd0aCkgeyAKICAgICAgICAgICAgICAgCQlncmVjYXB0Y2hhLnJlbmRlcignY2FwdGNoYUltYWdlMycsIHsKICAgICAgICAgICAgICAgCQkJJ3NpdGVrZXknIDogJzZMZDB5RWNVQUFBQUFIejJLSWVDZG1KalQwMXF6R0tYQnBleHBfa2UnCiAgICAgICAgICAgICAgIAkJfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgCQl9OwogICAJPC9zY3JpcHQ+CiAgICAgICA8IS0tIEVORCBDQVBUQ0hBIC0tPgoKPCFET0NUWVBFIGh0bWw+CjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT1ubyI+Cgo8dGl0bGU+NDA0IC0gUGFnZSBOb3QgRm91bmQ8L3RpdGxlPiAKCjxoZWFkPgogICAgPCEtLSBHb29nbGUgVGFnIE1hbmFnZXIgLS0+CjxzY3JpcHQ+KGZ1bmN0aW9uKHcsZCxzLGwsaSl7d1tsXT13W2xdfHxbXTt3W2xdLnB1c2goeydndG0uc3RhcnQnOgpuZXcgRGF0ZSgpLmdldFRpbWUoKSxldmVudDonZ3RtLmpzJ30pO3ZhciBmPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUocylbMF0sCmo9ZC5jcmVhdGVFbGVtZW50KHMpLGRsPWwhPSdkYXRhTGF5ZXInPycmbD0nK2w6Jyc7ai5hc3luYz10cnVlO2ouc3JjPQonaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RtLmpzP2lkPScraStkbDtmLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGosZik7Cn0pKHdpbmRvdyxkb2N1bWVudCwnc2NyaXB0JywnZGF0YUxheWVyJywnR1RNLVRIQlg2UVhSJyk7PC9zY3JpcHQ+CjwhLS0gRW5kIEdvb2dsZSBUYWcgTWFuYWdlciAtLT4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvdHNnLXJ3ZC10b3Atc2l0ZXdpZGUtcmVzb3VyY2UtbWVudS9jbGllbnRsaWIvY3NzL3RzZy1yd2QtdG9wLXNpdGV3aWRlLXJlc291cmNlLW1lbnUuY3NzIj4KICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvcmVzb3VyY2VzL2Zhdmljb24uaWNvIiB0eXBlPSJpbWFnZS94LWljb24iPiAKICAgIDxtZXRhIHByb3BlcnR5PSJvZzppbWFnZSIgY29udGVudD0iL2NvbnRlbnQvZGFtL3RzZy1nbG9iYWwvdHNnX2xpbmtfaW1nX2Rpc3BsYXkuanBnIj4gCiAgICA8bWV0YSBodHRwLWVxdWl2PSJrZXl3b3JkcyIgY29udGVudD0iIiAvPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOmRlc2NyaXB0aW9uIiBjb250ZW50PSIiIC8+CiAgICA8c2NyaXB0IHNyYz0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvdHNnLXJ3ZC10b3Atc2l0ZXdpZGUtcmVzb3VyY2UtbWVudS9jbGllbnRsaWIvanMvdHNnLXJ3ZC10b3Atc2l0ZXdpZGUtcmVzb3VyY2UtbWVudS5qcyI+PC9zY3JpcHQ+CjwhLS0gU1RBUlQgR29vZ2xlIENoYXJ0cyAtLT4KICAgIDxzY3JpcHQgc3JjPSIvL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KPCEtLSBFTkQgR29vZ2xlIENoYXJ0cyAtLT4KICAgIAogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvZXRjL2Rlc2lnbnMvdHNnLXJ3ZC9jbGllbnRsaWIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL3BhZ2UvU2luZ2xlLVBhZ2UtVGFiLU5hdi9jbGllbnRsaWIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL3BhZ2UvU2luZ2xlLVBhZ2UtQ1NJLXJlcG9zaXRvcnkvY2xpZW50bGliLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L3dlYnNpdGUtaXNzdWVzL2NsaWVudGxpYi5jc3MiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC92b0ZFd2l6YXJkL2NsaWVudGxpYi5jc3MiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC92b0FPU3dpemFyZC9jbGllbnRsaWIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvdmlzYXdpemFyZC9jbGllbnRsaWIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvdmlzYXdhaXR0aW1lc2xhcmdldGFibGUvY2xpZW50bGliLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L3Zpc2F3YWl0dGltZXNjYXRlZ29yeXBhZ2UvY2xpZW50bGliLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L3Zpc2F3YWl0dGltZXNfc2VsZWN0aW9uL2NsaWVudGxpYi5jc3MiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC92aXNhZGl2ZXJzaXR5Zm9ybS9jbGllbnRsaWIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvdHNnc2VhcmNoL2NsaWVudGxpYi5jc3MiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC90c2dsaXN0L2NsaWVudGxpYi5jc3MiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC90aW1lbGluZS9jbGllbnRsaWJzLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L3RhYi1uYXZpZ2F0aW9uL2NsaWVudGxpYi5jc3MiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9zb2NpYWxtZWRpYS9jbGllbnRsaWIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvc2ltcGxlYnV0dG9uL2NsaWVudGxpYi5jc3MiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9zaWRlYmFyV2l0aFZpZGVvL2NsaWVudGxpYi5jc3MiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9zaWRlYmFyLWltYWdlL2NsaWVudGxpYnMuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvc2lkZWJhci9jbGllbnRsaWIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvc2lhY29udGFjdE1hc3RlckZvcm0vY2xpZW50bGliLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L3NpYVZpc2FDb250YWN0Rm9ybS9jbGllbnRsaWIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvc2lhT3RoZXIvY2xpZW50bGliLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L3NlYXJjaENTSS9jbGllbnRsaWJzLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L3Jzc0ZlZWQvY2xpZW50bGliLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L3Jvd19wYXJzeXMvY2xpZW50bGliLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L3JvYV9mb3JtL2NsaWVudGxpYi5jc3MiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9yZWNlbnRidWxsZXRpbnMvY2xpZW50bGliLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L3Byb2Nlc3Npbmd0aW1lc2xpbmsvY2xpZW50bGliLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L3BwdHByb2Nlc3Npbmd0aW1lcy9jbGllbnRsaWIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvcHB0V2l6YXJkL2NsaWVudGxpYi5jc3MiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9wcHRBdXRoQ29udGFjdFVzL2NsaWVudGxpYi5jc3MiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9wcHRBcmNoaXZlRGF0YS9jbGllbnRsaWIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvcGhvdG93aXphcmQvY2xpZW50bGliLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L3BkZkxpc3RMaW5rcy9jbGllbnRsaWIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvbnZjLWZvcm0vY2xpZW50bGliLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L21vc2FpYy9jbGllbnRsaWIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvbGlzdC9jbGllbnRsaWIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvaGFndWVvcm5vdHdpZGdldC9jbGllbnRsaWIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvaGFndWVvcm5vdHNpbXBsZXdpZGdldC9jbGllbnRsaWIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvZmVhdHVyZWJveC9jbGllbnRsaWJzLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L2ZhY2V0QnVpbGRlci9jbGllbnRsaWIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvZXhwZWRpdGVGZWVzRm9ybS9jbGllbnRsaWIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvZXNyaVZpZXdQb3J0L2NsaWVudGxpYi5jc3MiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9lbmNoYW5jZWRidXR0b24vY2xpZW50bGliLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L2VkaXRfZGF0YXRhYmxlL2NsaWVudGxpYi5jc3MiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9kZWF0aFF1ZXJ5L2NsaWVudGxpYi5jc3MiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9jc2lEYXRhL2NsaWVudGxpYi5jc3MiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9jb250YWN0dXNTSUEvY2xpZW50bGliLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L2NvbnRhY3RWaXRhbFJlY29yZHMvY2xpZW50bGliLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L2NvbnRhY3RVc1dlYkZvcm1FbWFpbC9jbGllbnRsaWIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvY29udGFjdFVzU3VydmV5Rm9ybS9jbGllbnRsaWIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvY29udGFjdEluZm9ybWF0aW9uL2NsaWVudGxpYi5jc3MiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9jb25ncmVzc2lvbmFsQ2FzZUFzc2lzdGFuY2VGb3JtL2NsaWVudGxpYi5jc3MiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9jbmFQREYvY2xpZW50bGliLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L2NuYUNvdW50cnlMaXN0L2NsaWVudGxpYi5jc3MiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9hdXRvY29tcGxldGUvY2xpZW50bGliLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L2FwcGxpY2F0aW9uRmVlcy9jbGllbnRsaWIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvYWR2aXNvcnliYW5uZXIvY2xpZW50bGliLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L2Fkb3B0aW9uU3RhdHMvY2xpZW50bGliLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L2FjY29yZGlvbi9jbGllbnRsaWIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvU2xpZGVTaG93L2NsaWVudGxpYnMuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvSW1wb3J0YW50Tm90aWZpY2F0aW9ucy9jbGllbnRsaWJzLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L0VtZXJnZW5jeUFsZXJ0L2NsaWVudGxpYi5jc3MiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9DU0ktTmF2LU1lbnUtRmlsdGVyL2NsaWVudGxpYi5jc3MiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9DTkFXZWJGb3JtRW1haWwvY2xpZW50bGliLmNzcyIgdHlwZT0idGV4dC9jc3MiPgoKICAgIDxzY3JpcHQgc3JjPSIvZXRjL2Rlc2lnbnMvdHNnLXJ3ZC9jbGllbnRsaWIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL3BhZ2UvU2luZ2xlLVBhZ2UtVGFiLU5hdi9jbGllbnRsaWIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL3BhZ2UvU2luZ2xlLVBhZ2UtQ1NJLXJlcG9zaXRvcnkvY2xpZW50bGliLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L3dlYnNpdGUtaXNzdWVzL2NsaWVudGxpYi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC92b0ZFd2l6YXJkL2NsaWVudGxpYi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC92b0FPU3dpemFyZC9jbGllbnRsaWIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvdmlzYXdpemFyZC9jbGllbnRsaWIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvdmlzYXdhaXR0aW1lc2NhdGVnb3J5cGFnZS9jbGllbnRsaWIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvdmlzYXdhaXR0aW1lc19zZWxlY3Rpb24vY2xpZW50bGliLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L3Zpc2FkaXZlcnNpdHlmb3JtL2NsaWVudGxpYi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC90c2dzZWFyY2gvY2xpZW50bGliLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L3RzZ2xpc3QvY2xpZW50bGliLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L3RpbWVsaW5lL2NsaWVudGxpYnMuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvdGFiLW5hdmlnYXRpb24vY2xpZW50bGliLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L3NvY2lhbG1lZGlhL2NsaWVudGxpYi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9zaW1wbGVidXR0b24vY2xpZW50bGliLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L3NpZGViYXJXaXRoVmlkZW8vY2xpZW50bGliLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L3NpZGViYXIvY2xpZW50bGliLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L3NpYWNvbnRhY3RNYXN0ZXJGb3JtL2NsaWVudGxpYi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9zaWFWaXNhQ29udGFjdEZvcm0vY2xpZW50bGliLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L3NpYU90aGVyL2NsaWVudGxpYi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9zZWFyY2hDU0kvY2xpZW50bGlicy5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9yc3NGZWVkL2NsaWVudGxpYi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9yb3dfcGFyc3lzL2NsaWVudGxpYi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9yb2FfZm9ybS9jbGllbnRsaWIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvcmVjZW50YnVsbGV0aW5zL2NsaWVudGxpYi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9wcm9jZXNzaW5ndGltZXNsaW5rL2NsaWVudGxpYi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9wcHRwcm9jZXNzaW5ndGltZXMvY2xpZW50bGliLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L3BwdFdpemFyZC9jbGllbnRsaWIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvcHB0QXV0aENvbnRhY3RVcy9jbGllbnRsaWIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvcHB0QXJjaGl2ZURhdGEvY2xpZW50bGliLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L3BkZkxpc3RMaW5rcy9jbGllbnRsaWIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvbnZjLWZvcm0vY2xpZW50bGliLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L21vc2FpYy9jbGllbnRsaWIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvbWFwV29ybGQvY2xpZW50bGliLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L21hcEJ1aWxkZXIvY2xpZW50bGliLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L2xpc3QvY2xpZW50bGliLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L2hhZ3Vlb3Jub3R3aWRnZXQvY2xpZW50bGliLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L2hhZ3Vlb3Jub3RzaW1wbGV3aWRnZXQvY2xpZW50bGliLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L2ZlYXR1cmVib3gvY2xpZW50bGlicy5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9mYWNldEJ1aWxkZXIvY2xpZW50bGliLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L2V4cGVkaXRlRmVlc0Zvcm0vY2xpZW50bGliLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L2VzcmlWaWV3UG9ydC9jbGllbnRsaWIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvZW5jaGFuY2VkYnV0dG9uL2NsaWVudGxpYi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9lZGl0X2RhdGF0YWJsZS9jbGllbnRsaWIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvZGVhdGhRdWVyeS9jbGllbnRsaWIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvY3NpRGF0YS9jbGllbnRsaWIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvY29udGFjdHVzU0lBL2NsaWVudGxpYi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9jb250YWN0Vml0YWxSZWNvcmRzL2NsaWVudGxpYi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9jb250YWN0VXNXZWJGb3JtRW1haWwvY2xpZW50bGliLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L2NvbnRhY3RVc1N1cnZleUZvcm0vY2xpZW50bGliLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L2NvbmdyZXNzaW9uYWxDYXNlQXNzaXN0YW5jZUZvcm0vY2xpZW50bGliLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L2NuYVBERi9jbGllbnRsaWIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvY25hQ291bnRyeUxpc3QvY2xpZW50bGliLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L2F1dG9jb21wbGV0ZS9jbGllbnRsaWIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvYXBwbGljYXRpb25GZWVzL2NsaWVudGxpYi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9hZHZpc29yeWJhbm5lci9jbGllbnRsaWIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvYWRvcHRpb25TdGF0cy9jbGllbnRsaWIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvYWNjb3JkaW9uL2NsaWVudGxpYi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9TbGlkZVNob3cvY2xpZW50bGlicy5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9JbXBvcnRhbnROb3RpZmljYXRpb25zL2NsaWVudGxpYnMuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvRW1lcmdlbmN5QWxlcnQvY2xpZW50bGliLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9hcHBzL3RzZy1yd2QvY29tcG9uZW50cy9jb250ZW50L0NTSS1sZWdhbC10b3AtY29udGVudC9jbGllbnRsaWIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvQ1NJLWFkb3B0aW9uLXRvcC1jb250ZW50L2NsaWVudGxpYi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9DU0ktYWJkdWN0aW9uLXRvcC1jb250ZW50L2NsaWVudGxpYi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9DU0ktVG9wLUNvdW50cnktSW5mby9jbGllbnRsaWIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2FwcHMvdHNnLXJ3ZC9jb21wb25lbnRzL2NvbnRlbnQvQ1NJLVF1aWNrLUZhY3RzL2NsaWVudGxpYi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9DU0ktTmF2LU1lbnUtRmlsdGVyL2NsaWVudGxpYi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9DU0ktQ29udGFjdC1JbmZvL2NsaWVudGxpYi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvYXBwcy90c2ctcndkL2NvbXBvbmVudHMvY29udGVudC9DTkFXZWJGb3JtRW1haWwvY2xpZW50bGliLmpzIj48L3NjcmlwdD4KCiAgICA8IS0tIAogICAgU1RBUlQgRm9yZVNlZQogICAgPHNjcmlwdCBzcmM9Ii9ldGMvZGVzaWducy90cmF2ZWwvVFNHZ2xvYmFsX2xpYnMvZm9yZXNlZS9mb3Jlc2VlLXRyaWdnZXIuanMiPjwvc2NyaXB0PgogICAgRU5EIEZvcmVTZWUgCiAgICAtLT4KICAgIDwhLS0gU1RBUlQgREFQIC0tPgogICAgICAgIDxzY3JpcHQgaWQ9Il9mZWRfYW5fdWFfdGFnIiBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2RhcC5kaWdpdGFsZ292Lmdvdi9Vbml2ZXJzYWwtRmVkZXJhdGVkLUFuYWx5dGljcy1NaW4uanM/YWdlbmN5PURPUyZzdWJhZ2VuY3k9Q0EmZGNsaW5rPXRydWUmeXQ9dHJ1ZSZzcD1zZWFyY2hfaW5wdXQmZXh0cz1wdWIiPjwvc2NyaXB0PiAKICAgIDwhLS0gRU5EIERBUCAtLT4KICAgIDwhLS0gR2xvYmFsIHNpdGUgdGFnIChndGFnLmpzKSAtIEdvb2dsZSBBbmFseXRpY3MgLS0+CjxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPVVBLTE2MTY1NjM0Mi0xIj48L3NjcmlwdD4KPHNjcmlwdD4KICB3aW5kb3cuZGF0YUxheWVyID0gd2luZG93LmRhdGFMYXllciB8fCBbXTsKICBmdW5jdGlvbiBndGFnKCl7ZGF0YUxheWVyLnB1c2goYXJndW1lbnRzKTt9CiAgZ3RhZygnanMnLCBuZXcgRGF0ZSgpKTsKICBndGFnKCdjb25maWcnLCAnVUEtMTYxNjU2MzQyLTEnKTsKICBndGFnKCdjb25maWcnLCAnQVctODA5NDA3MDQ5Jyk7CiAgdmFyIGN1cnJlbnRVUkwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjsKICBpZihjdXJyZW50VVJMLmluY2x1ZGVzKCJJbnRlcm5hdGlvbmFsLVRyYXZlbC1Db3VudHJ5LUluZm9ybWF0aW9uLVBhZ2VzLmh0bWwiKSl7CiAgCSBndGFnKCdldmVudCcsICdjb252ZXJzaW9uJywgeydzZW5kX3RvJzogJ0FXLTgwOTQwNzA0OS9VdklJQ09LUHZwY1lFTW1rLW9FRCd9KTsKICB9Cjwvc2NyaXB0Pgo8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9Ijc5WHA3S3M0QkJqMHdFV0RQOG1RWWxEQzhMZ2xzRklJOTBfSERiV3F1TTQiIC8+ICAgIAo8L2hlYWQ+CiAgICA8Ym9keT4KPCEtLSBHb29nbGUgVGFnIE1hbmFnZXIgKG5vc2NyaXB0KSAtLT4KPG5vc2NyaXB0PjxpZnJhbWUgc3JjPWh0dHBzOi8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL25zLmh0bWw/aWQ9R1RNLVRIQlg2UVhSCmhlaWdodD0iMCIgd2lkdGg9IjAiIHN0eWxlPSJkaXNwbGF5Om5vbmU7dmlzaWJpbGl0eTpoaWRkZW4iPjwvaWZyYW1lPjwvbm9zY3JpcHQ+CjwhLS0gRW5kIEdvb2dsZSBUYWcgTWFuYWdlciAobm9zY3JpcHQpIC0tPiAgICAgICAgCiAgICAgICAgPGRpdiBjbGFzcz0iZW1lcmdlbmN5YWxlcnQgRW1lcmdlbmN5LUFsZXJ0cy1CYW5uZXIiPg0KDQoNCg0KDQoNCg0KICAgICAgICANCg0KDQogDQogICAgPGRpdiBjbGFzcz0idHNnLXJ3ZC1lYWItbWFpbi1mcmFtZSB0c2ctcndkLWVhYi1tYWluLWZyYW1lLXJlZCB0c2ctcndkLWVhYi1mcmFtZS10c2dfcndkX3Nob3dfZW1lcmdlbmN5X2FsZXJ0IiA+DQogICAgICAgIDxhIHRpdGxlPSJFbWVyZ2VuY3kgQWxlcnQgQmFubmVyIiBocmVmPSIvY29udGVudC90cmF2ZWwvZW4vdHJhdmVsYWR2aXNvcmllcy9lYS9zaXR1YXRpb24taW4taXNyYWVsLTIwMjMuaHRtbCI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0c2ctcndkLWVhYi1jZW50ZXJmcmFtZSI+DQogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0c2ctcndkLWVhYi10eXBlLW1haW4tZnJhbWUiPg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0c2ctcndkLWVhYi10eXBlLWZyYW1lIj5VcGRhdGU8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idHNnLXJ3ZC1lYWItZGF0ZS1mcmFtZSI+QXByaWwgMTIsIDIwMjQ8L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2gzPg0KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idHNnLXJ3ZC1lYWItdGl0bGUtZnJhbWUiPkluZm9ybWF0aW9uIGZvciBVLlMuIENpdGl6ZW5zIGluIHRoZSBNaWRkbGUgRWFzdDwvaDM+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9hPg0KICAgIDwvZGl2PiANCg0KICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0idHNnLXJ3ZC10b3Atc2l0ZXdpZGUtcmVzb3VyY2UtbWVudSI+DQoNCjxhIGlkPSJ0b3AiPjwvYT4NCiAgICAgICA8IS0tPGRpdj4tLT48YSB0aXRsZT0iU2tpcCB0byBtYWluIGNvbnRlbnQiIGNsYXNzPSJza2lwIiBocmVmPSIjaW5uZXItY29udGVudCI+U2tpcCB0byBtYWluIGNvbnRlbnQ8L2E+PCEtLTwvZGl2PiAtLT4NCjxkaXYgY2xhc3M9InRzZy1yd2QtbW9iaWxlLXJlc291cmNlLXRvcC1tZW51LWJ0biI+IDxzcGFuIGNsYXNzPSJmYSBmYS1iYXJzIj48L3NwYW4+PC9kaXY+DQo8ZGl2IGNsYXNzPSJ0c2ctcndkLW1vYmlsZS1yZXNvdXJjZS10b3Atc2VhcmNoLWJ0biI+DQogICAgIDxmb3JtIGlkPSJzZWFyY2hfZm9ybSIgYWN0aW9uPSIvY29udGVudC90cmF2ZWwvZW4vc2VhcmNoLmh0bWwiIG1ldGhvZD0iZ2V0Ij4NCiAgICAgICAgICA8aW5wdXQgbmFtZT0ic2VhcmNoX2lucHV0IiBjbGFzcz0ic2VhcmNoRnJhbWVJbnB1dCIgaWQ9InNlYXJjaF9pbnB1dCIgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IlNlYXJjaCIgdmFsdWU9IiI+DQogICAgICAgICAgPGlucHV0IG5hbWU9ImRhdGEtc2lhIiBpZD0iZGF0YS1zaWEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9ImZhbHNlIj4NCiAgICAgICAgICA8aW5wdXQgbmFtZT0iZGF0YS1jb24iIGlkPSJkYXRhLWNvbiIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iZmFsc2UiPg0KICAgIDxidXR0b24gbmFtZT0ic2VhcmNoX2J0biIgY2xhc3M9ImJ0biBzZWFyY2hidG4iIGlkPSJzZWFyY2hfYnRuIiB0eXBlPSJzdWJtaXQiIHRpdGxlPSJUU0cgQ29udGVudCBTZWFyY2giPjxzcGFuIGNsYXNzPSJmYSAgZmEtc2VhcmNoIj48L3NwYW4+PC9idXR0b24+DQogICAgPC9mb3JtPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJ0c2ctcndkLW5hdi1mcmFtZSI+DQogICAgPGRpdiBjbGFzcz0idHNnLXJ3ZC1uYXYtbWVudS1mcmFtZSI+DQogICAgIDxkaXYgY2xhc3M9InRzZy1yd2QtbmF2LW1lbnUtc2l0ZS1yZXNvdXJjZS1tZW51Ij4NCiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvY29udGVudC90cmF2ZWwuaHRtbCI+SG9tZTwvYT48ZGl2IGNsYXNzPSJsQmFyU2VwYXJhdG9yIj58PC9kaXY+PC9saT4KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvY29udGVudC90cmF2ZWwvZW4vdHJhdmVsYWR2aXNvcmllcy90cmF2ZWxhZHZpc29yaWVzLmh0bWwiPlRyYXZlbCBBZHZpc29yaWVzPC9hPiA8ZGl2IGNsYXNzPSJsQmFyU2VwYXJhdG9yIj58PC9kaXY+PC9saT4KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvY29udGVudC90cmF2ZWwvZW4vTmV3cy9uZXdzcm9vbS5odG1sIj5OZXdzcm9vbTwvYT48ZGl2IGNsYXNzPSJsQmFyU2VwYXJhdG9yIj58PC9kaXY+PC9saT4KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvY29udGVudC90cmF2ZWwvZW4vYWJvdXQtdXMuaHRtbCI+QWJvdXQgVXM8ZGl2IGNsYXNzPSJsQmFyU2VwYXJhdG9yIj58PC9kaXY+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iL2NvbnRlbnQvdHJhdmVsL2VuL2NvbnRhY3QtdXMuaHRtbCI+Q29udGFjdCBVcyA8L2E+PGRpdiBjbGFzcz0ibEJhclNlcGFyYXRvciI+fDwvZGl2PjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9jYXJlZXJzLnN0YXRlLmdvdi9jYS8iPkNhcmVlcnM8L2E+PGRpdiBjbGFzcz0ibEJhclNlcGFyYXRvciI+fDwvZGl2PjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iL2NvbnRlbnQvdHJhdmVsL2VuL2Fib3V0LXVzL215dHJhdmVsZ292Lmh0bWwiPjxzcGFuIGNsYXNzPSdmYSBmYS1zaWduLWluLWFsdCBpY29uJz48L3NwYW4+IE15VHJhdmVsR292PC9hPjxkaXYgY2xhc3M9ImxCYXJTZXBhcmF0b3IiPnw8L2Rpdj48L2xpPgogICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cudXNlbWJhc3N5Lmdvdi8iPiAgIDxkaXYgY2xhc3M9ImZpbmRVU2ZyYW1lIj4KICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbkZsYWciPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxhZ0NvcHkiPkZpbmQgVS5TLiBFbWJhc3NpZXMgJiBDb25zdWxhdGVzPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+ICAgIAogICAgICAgICAgICA8L3VsPg0KICAgICAgPC9kaXY+DQogICAgPC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InRzZy1yd2QtbW9iaWxlLXJlc291cmNlLW1vYmlsZS1tZW51LWZyYW1lIj4NCiAgICA8ZGl2IGNsYXNzPSJ0c2ctcndkLWZvb3RlciBtb2JpbGUtbWVudS1hZGp1c3QiPg0KICAgICAgICA8ZGl2IGNsYXNzPSJ0c2ctcndkLW1vYmlsZS1tZW51LWZyYW1lIj4gPGRpdiBjbGFzcz0idHNnLXJ3ZC1tYWluLW1vYmlsZS1tZW51Ij4gDQogPGRpdiBjbGFzcz0idHNnLXJ3ZC1ib3R0b20tZm9vdGVyLWJpei11bml0LXJvdyI+DQogICAgPGRpdiBjbGFzcz0idHNnLXJ3ZC1mb290ZXItYml6LXVuaXQtZnJhbWUiPiANCiAgICAgICAgICAgIDxoMz5UcmF2ZWwuU3RhdGUuR292PC9oMz4KICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaT48aDQ+PGEgaHJlZj0iL2NvbnRlbnQvdHJhdmVsLmh0bWwiPlRyYXZlbC5TdGF0ZS5Hb3Y8L2E+PC9oND48L2xpPgogICAgICAgICAgICA8bGkgY2xhc3M9InRzZy1yd2QtY29uZ3Jlc3Npb25hbCI+PGltZyBzdHlsZT0iZGlzcGxheTpub25lOyB3aWR0aDogNSU7IiBzcmM9Ii9jb250ZW50L2RhbS9Db25ncmVzc2lvbmFsL0RlcGFydG1lbnRfb2Zfc3RhdGUuc3ZnIj48aDQ+PGEgaHJlZj0iL2NvbnRlbnQvY29uZ3Jlc3MtbGlhaXNvbi1ob21lL2VuL0NvbmdyZXNzaW9uYWxfTGlhaXNvbi5odG1sIiBhbHQ9IkNvbmdyZXNzaW9uYWwgTGlhaXNvbiI+Q29uZ3Jlc3Npb25hbCBMaWFpc29uPC9hPjwvaDQ+PC9saT4KICAgICAgICAgICAgPGxpIGNsYXNzPSJ0c2ctcndkLXNpYSI+PGltZyBzdHlsZT0iZGlzcGxheTpub25lOyB3aWR0aDogNSU7IiBzcmM9Ii9jb250ZW50L2RhbS9zaWEtYXNzZXRzL2ltYWdlcy9EZXBhcnRtZW50X29mX3N0YXRlLnN2ZyI+PGg0PjxhIGhyZWY9Ii9jb250ZW50L3NwZWNpYWwtaXNzdWFuY2UtYWdlbmN5LWhvbWUvZW4vc3BlYy1pc3N1YW5jZS1hZ2VuY3kuaHRtbCIgdGl0bGU9IlNwZWNpYWwgSXNzdWFuY2UgQWdlbmN5IiBhbHQ9IlNwZWNpYWwgSXNzdWFuY2UgQWdlbmN5Ij5TcGVjaWFsIElzc3VhbmNlIEFnZW5jeTwvYT48L2g0PjwvbGk+CiAgICAgICAgICAgIDxsaT48aDQ+PGEgaHJlZj0iL2NvbnRlbnQvdHJhdmVsL2VuL3Bhc3Nwb3J0cy5odG1sIj5VLlMuIFBhc3Nwb3J0czwvYT48L2g0PjwvbGk+IAogICAgICAgICAgICA8bGk+PGg0PjxhIGhyZWY9Ii9jb250ZW50L3RyYXZlbC9lbi9pbnRlcm5hdGlvbmFsLXRyYXZlbC5odG1sIj5JbnRlcm5hdGlvbmFsIFRyYXZlbDwvYT48L2g0PjwvbGk+IAogICAgICAgICAgICA8bGk+PGg0PjxhIGhyZWY9Ii9jb250ZW50L3RyYXZlbC9lbi91cy12aXNhcy5odG1sIj5VLlMuIFZpc2FzPC9hPjwvaDQ+PC9saT4gCiAgICAgICAgICAgIDxsaT48aDQ+PGEgaHJlZj0iL2NvbnRlbnQvdHJhdmVsL2VuL0ludGVyY291bnRyeS1BZG9wdGlvbi5odG1sIj5JbnRlcmNvdW50cnkgQWRvcHRpb248L2E+PC9oND48L2xpPiAKICAgICAgICAgICAgPGxpPjxoND48YSBocmVmPSIvY29udGVudC90cmF2ZWwvZW4vSW50ZXJuYXRpb25hbC1QYXJlbnRhbC1DaGlsZC1BYmR1Y3Rpb24uaHRtbCI+SW50ZXJuYXRpb25hbCBQYXJlbnRhbCBDaGlsZCBBYmR1Y3Rpb248L2E+PC9oND48L2xpPgogICAgICAgICAgICA8bGk+PGg0PjxhIGhyZWY9Ii9jb250ZW50L3RyYXZlbC9lbi9yZWNvcmRzLWFuZC1hdXRoZW50aWNhdGlvbnMuaHRtbCI+UmVjb3JkcyBhbmQgQXV0aGVudGljYXRpb25zPC9hPjwvaDQ+PC9saT4KICAgICAgICA8L3VsPiANCiAgICAgICAgICAgICAgICAgIDxoMz5Qb3B1bGFyIExpbmtzPC9oMz4KICAgICAgICA8dWw+CiAgICAgICAgICAgPGxpPjxoND48YSBocmVmPSIvY29udGVudC90cmF2ZWwuaHRtbCI+SG9tZTwvYT48L2g0PjwvbGk+CiAgICAgICAgICAgPGxpPjxoND48YSBocmVmPSIvY29udGVudC90cmF2ZWwvZW4vdHJhdmVsYWR2aXNvcmllcy90cmF2ZWxhZHZpc29yaWVzLmh0bWwiPlRyYXZlbCBBZHZpc29yaWVzPC9hPjwvaDQ+PC9saT4KICAgICAgICAgICA8bGk+IDxhIGhyZWY9Ii9jb250ZW50L3RyYXZlbC9lbi9OZXdzL25ld3Nyb29tLmh0bWwiPjxoND5OZXdzcm9vbTwvaDQ+PC9hPgogICAgICAgICAgIDxsaT4gPGEgaHJlZj0iL2NvbnRlbnQvdHJhdmVsL2VuL2Fib3V0LXVzLmh0bWwiPiA8aDQ+QWJvdXQgVXM8L2g0PjwvYT48L2xpPgogICAgICAgICAgIDxsaT4gPGEgaHJlZj0iL2NvbnRlbnQvdHJhdmVsL2VuL2NvbnRhY3QtdXMuaHRtbCI+PGg0PkNvbnRhY3QgVXM8L2g0PjwvYT48L2xpPgogICAgICAgICAgIDxsaT4gPGEgaHJlZj0iaHR0cHM6Ly9jYXJlZXJzLnN0YXRlLmdvdi9jYS8iPjxoND5DYXJlZXJzPC9oND48L2E+PC9saT4KICAgICAgICAgICA8bGk+PGEgaHJlZj0iL2NvbnRlbnQvdHJhdmVsL2VuL2Fib3V0LXVzL215dHJhdmVsZ292Lmh0bWwiPjxzcGFuIGNsYXNzPSJmYSBmYS1zaWduLWluLWFsdCI+PC9zcGFuPjxoNCBjbGFzcz0iZm9vdGVyZ2xvYmUiPiBNeVRyYXZlbEdvdjwvaDQ+PC9hPjwvbGk+CiAgICAgICAgICAgPGxpPiA8YSBocmVmPSJodHRwOi8vd3d3LnVzZW1iYXNzeS5nb3YvIj48aDQ+RmluZCBVLlMuIEVtYmFzc2llcyAmIENvbnN1bGF0ZXM8L2g0PjwvYT48L2xpPgogICAgICAgPC91bD4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJ0c2ctcndkLWZvb3Rlci1zb2NpYWwtZnJhbWUiPg0KICAgICAgICA8aDM+U3RheSBDb25uZWN0ZWQ8L2gzPg0KICAgICAgICAgPGRpdiBjbGFzcz0idHNnLXJ3ZC1zb2NpYWwtbWVkaWEtaWNvbnMiPiANCiAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgIDxsaT48YSB0aXRsZT0iRGVwYXJ0bWVudCBvZiBTdGF0ZSBCbG9nIiBocmVmPSJodHRwOi8vYmxvZ3Muc3RhdGUuZ292LyI+PHNwYW4gY2xhc3M9ImZhcyBmYS1jb21tZW50cyI+PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgPGxpPjxhIHRpdGxlPSJCdXJlYXUgb2YgQ29uc3VsYXIgQWZmYWlycyBGYWNlYm9vayIgaHJlZj0iaHR0cDovL3d3dy5mYWNlYm9vay5jb20vcGFnZXMvQnVyZWF1LW9mLUNvbnN1bGFyLUFmZmFpcnMvOTIyOTMwMzE0OCI+PHNwYW4gY2xhc3M9ImZhYiBmYS1mYWNlYm9vayI+PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgPGxpPjxhIHRpdGxlPSJCdXJlYXUgb2YgQ29uc3VsYXIgQWZmYWlycyBJbnN0YWdyYW0iIGhyZWY9Imh0dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20vdHJhdmVsZ292LyI+PHNwYW4gY2xhc3M9ImZhYiBmYS1pbnN0YWdyYW0iPjwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgIDxsaT48YSB0aXRsZT0iQnVyZWF1IG9mIENvbnN1bGFyIEFmZmFpcnMgVHdpdHRlciIgaHJlZj0iaHR0cDovL3R3aXR0ZXIuY29tL1RyYXZlbEdvdiI+PHNwYW4gY2xhc3M9ImZhYiBmYS10d2l0dGVyIj48L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGEgdGl0bGU9IkRlcGFydG1lbnQgb2YgU3RhdGUgVmlkZW9zIiBocmVmPSJodHRwOi8vd3d3LnlvdXR1YmUuY29tL3VzZXIvc3RhdGV2aWRlbyI+PHNwYW4gY2xhc3M9ImZhYiBmYS15b3V0dWJlIj48L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGEgdGl0bGU9IlRyYXZlbCBBZHZpc29yeSBSU1MgRmVlZCIgaHJlZj0iL2NvbnRlbnQvdHJhdmVsL2VuL3Jzcy5odG1sIj48c3BhbiBjbGFzcz0iZmEgZmEtcnNzIj48L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgIDwvdWw+DQogICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0idHNnLXJ3ZC1mb290ZXItYml6LXVuaXQtZnJhbWUiPiANCiAgICAgICAgICAgIDxoMz5MZWdhbCBSZXNvdXJjZXM8L2gzPgogICAgIDx1bD4KICAgICAgPGxpPjxoND48YSBocmVmPSIvY29udGVudC90cmF2ZWwvZW4vbGVnYWwuaHRtbCI+TGVnYWwgSW5mb3JtYXRpb248L2E+PC9oND48L2xpPgogICAgICAgICA8bGk+PGg0PjxhIGhyZWY9Ii9jb250ZW50L3RyYXZlbC9lbi9jb25zdWxhcm5vdGlmaWNhdGlvbi5odG1sIj5JbmZvIGZvciBVLlMuIExhdyBFbmZvcmNlbWVudDwvYT48L2g0PjwvbGk+CiAgICA8L3VsPg0KPC9kaXY+DQo8L2Rpdj4gDQogICAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KPC9kaXY+DQo8L2Rpdj48L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0idHNnLXJ3ZC1ib2R5LWZyYW1lLXJvdyI+CiAgICAgICAgICANCg0KDQogDQoNCg0KPGRpdiBjbGFzcz0idHNnLXJ3ZC1ib2R5LWZyYW1lLXJvdyBuYW1lcGxhdGVGcmFtZSI+DQogICAgPGRpdiBjbGFzcz0idHNnLXJ3ZC1ib2R5LWZyYW1lIHdlYnNpdGUtbmFtZXBsYXRlLW1vYmlsZS1hZGp1c3QiPg0KDQogICAgICAgIDxkaXYgY2xhc3M9InRzZy1yd2Qtc2l0ZS13ZWJzaXRlLW5hbWVwbGF0ZSI+DQogICAgICAgICAgICA8YSB0aXRsZT0iVHJhdmVsIFN0YXRlIEdvdiIgaHJlZj0iL2NvbnRlbnQvdHJhdmVsLmh0bWwiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0idHNnLXJ3ZC1zaXRlLXN0YXRlLXNlYWwiPjwvZGl2PjwvYT4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRzZy1yd2Qtc2l0ZS1uYW1lIj4NCiAgICAgICAgICAgICAgICA8YSB0aXRsZT0iVS5TLiBERVBBUlRNRU5UIG9mIFNUQVRFICZtZGFzaDsgQlVSRUFVIG9mIENPTlNVTEFSIEFGRkFJUlMiIGhyZWY9Ii9jb250ZW50L3RyYXZlbC5odG1sIj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZXBsYXRlLXdlYnNpdGUtbmFtZSI+VHJhdmVsLlN0YXRlLkdvdiA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZXBsYXRlLXdlYnNpdGUtdGFnbGluZSI+IFUuUy4gREVQQVJUTUVOVCBvZiBTVEFURSAmbWRhc2g7IEJVUkVBVSBvZiBDT05TVUxBUiBBRkZBSVJTPC9kaXY+PC9hPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0c2ctcndkLXJpZ2h0RnJhbWUiPg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRzZy1yd2Qtc2VhcmNoRnJhbWUiPg0KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBpZD0ic2VhcmNoX2Zvcm0iIG1ldGhvZD0iZ2V0IiBhY3Rpb249Ii9jb250ZW50L3RyYXZlbC9lbi9zZWFyY2guaHRtbCI+DQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJzZWFyY2hfaW5wdXQiIGlkPSJzZWFyY2hfaW5wdXQiIHR5cGU9InRleHQiIHZhbHVlPSIiIGNsYXNzPSJzZWFyY2hGcmFtZUlucHV0IiBwbGFjZWhvbGRlcj0iU2VhcmNoIj4NCiAgICAgICAgICA8aW5wdXQgbmFtZT0iZGF0YS1zaWEiIGlkPSJkYXRhLXNpYSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iZmFsc2UiPg0KICAgICAgICAgIDxpbnB1dCBuYW1lPSJkYXRhLWNvbiIgaWQ9ImRhdGEtY29uIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJmYWxzZSI+DQogICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmFtZT0ic2VhcmNoX2J0biIgY2xhc3M9ImJ0biBzZWFyY2hidG4iIGlkPSJzZWFyY2hfYnRuIiB0eXBlPSJzdWJtaXQiIHRpdGxlPSJUU0cgQ29udGVudCBTZWFyY2giPjxzcGFuIGNsYXNzPSJmYSAgZmEtc2VhcmNoIj48L3NwYW4+PC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCjwvZGl2Pg0KDQoNCg0KCiAgICAgICAgICANCg0KIA0KDQoNCiANCg0KPGRpdiBjbGFzcz0idHNnLXJ3ZC1mcmFtZS1mb3ItbW9iaWxlLWJyZWFkY3J1bWIiPg0KICAgIDxkaXYgY2xhc3M9InRzZy1yd2QtbW9iaWxlLXJlc291cmNlLXRvcC1jbG9zZS1idG4iPiA8aSBjbGFzcz0iZmEgZmEtY2hldnJvbi1jaXJjbGUtbGVmdCI+PC9pPjwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9Im1vYmlsZS1icmVhZGNydW1iLW5hdmlnYXRvcnh4eCBpcGFyc3lzIHBhcnN5cyI+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGRpdiBjbGFzcz0ibmV3Ij48L2Rpdj4KPC9kaXY+PGRpdiBjbGFzcz0iaXBhcnlzX2luaGVyaXRlZCI+PGRpdiBjbGFzcz0ibW9iaWxlLWJyZWFkY3J1bWItbmF2aWdhdG9yeHh4IGlwYXJzeXMgcGFyc3lzIj48ZGl2IGNsYXNzPSJicmVhZGNydW1iIHNlY3Rpb24iPg0KDQo8YSB0aXRsZT0iVHJhdmVsLlN0YXRlLkdvdiIgaHJlZj0iL2NvbnRlbnQvdHJhdmVsLmh0bWwiPiBUcmF2ZWwuU3RhdGUuR292IDwvYT4gPiANCg0KPC9kaXY+Cg0KPC9kaXY+CjwvZGl2Pg0KPC9kaXY+Cg0KPGRpdiBjbGFzcz0ibW9iaWxlLXNvY2lhbG1lZGlhLW5hdmlnYXRvcnh4eCBpcGFyc3lzIHBhcnN5cyI+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGRpdiBjbGFzcz0ibmV3Ij48L2Rpdj4KPC9kaXY+PGRpdiBjbGFzcz0iaXBhcnlzX2luaGVyaXRlZCI+PGRpdiBjbGFzcz0ibW9iaWxlLXNvY2lhbG1lZGlhLW5hdmlnYXRvcnh4eCBpcGFyc3lzIHBhcnN5cyI+DQo8L2Rpdj4KPC9kaXY+DQo8L2Rpdj4KIA0KPC9kaXY+DQoNCg0KPGRpdiBjbGFzcz0idHNnLXJ3ZC1ib2R5LWZyYW1lLXJvdyI+DQogICAgPGRpdiBjbGFzcz0idHNnLXJ3ZC1ib2R5LWZyYW1lIj4NCiAgICAgICAgPGRpdiBjbGFzcz0idHNnLXJ3ZC1uYXYtbWFpbi1zaXRlLW1lbnUtZnJhbWUiPg0KCSA8ZGl2IGNsYXNzPSJ0c2ctcndkLW1haW4tbmF2aWdhdGlvbiBsaXN0Y2hpbGRyZW5UU0ctUldELVNpdGUtTmF2aWdhdGlvbl92MiI+DQoNCiANCjx1bCBjbGFzcz0iQnVzaW5lc3NVbml0c01lbnUiPiAgDQogIDxsaSBjbGFzcz0idHNnLXJ3ZC1jb25ncmVzc2lvbmFsIj48aW1nIGFsdD0iQ29uZ3Jlc3Npb25hbCBMaWFpc29uIiBzdHlsZT0iZGlzcGxheTpub25lOyB3aWR0aDogNSU7IiBzcmM9Ii9jb250ZW50L2RhbS9Db25ncmVzc2lvbmFsL0RlcGFydG1lbnRfb2Zfc3RhdGUuc3ZnIiBvbmVycm9yPSJ0aGlzLnN0eWxlLmRpc3BsYXk9J25vbmUnIiBvbmxvYWQ9InRoaXMucGFyZW50Tm9kZS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJyI+DQogICAgICA8YSB0aXRsZT0iQ29uZ3Jlc3Npb25hbCBMaWFpc29uIiBocmVmPSIvY29udGVudC9jb25ncmVzcy1saWFpc29uLWhvbWUvZW4vQ29uZ3Jlc3Npb25hbF9MaWFpc29uLmh0bWwiPiANCiAgICAgICAgIDxoND5Db25ncmVzc2lvbmFsIExpYWlzb248L2g0PjwvYT4NCiAgPC9saT4NCiAgPGxpIGNsYXNzPSJ0c2ctcndkLXNpYSI+PGltZyBhbHQ9IkRlcGFydG1lbnQgb2YgU3RhdGUiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IHdpZHRoOiA1JTsiIHNyYz0iL2NvbnRlbnQvZGFtL3NpYS1hc3NldHMvaW1hZ2VzL0RlcGFydG1lbnRfb2Zfc3RhdGUuc3ZnIiBvbmVycm9yPSJ0aGlzLnN0eWxlLmRpc3BsYXk9J25vbmUnIiBvbmxvYWQ9InRoaXMucGFyZW50Tm9kZS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJyI+DQogICAgICA8YSB0aXRsZT0iU3BlY2lhbCBJc3N1YW5jZSBBZ2VuY3kiIGhyZWY9Ii9jb250ZW50L3NwZWNpYWwtaXNzdWFuY2UtYWdlbmN5LWhvbWUvZW4vc3BlYy1pc3N1YW5jZS1hZ2VuY3kuaHRtbCI+IA0KICAgICAgICAgPGg0PlNwZWNpYWwgSXNzdWFuY2UgQWdlbmN5PC9oND48L2E+DQogIDwvbGk+DQoNCiAgICA8bGkgPiANCiAgICAgICAgIDxhIHRpdGxlPSJMZWdhbCBSZXNvdXJjZXMiIGhyZWY9Ii9jb250ZW50L3RyYXZlbC9lbi9sZWdhbC5odG1sIj4gDQogICAgICAgICAgICAgPGg0PkxlZ2FsIFJlc291cmNlczwvaDQ+PC9hPg0KICAgIDwvbGk+DQoNCiAgICA8bGkgPiANCiAgICAgICAgIDxhIHRpdGxlPSJVLlMuIFBhc3Nwb3J0cyIgaHJlZj0iL2NvbnRlbnQvdHJhdmVsL2VuL3Bhc3Nwb3J0cy5odG1sIj4gDQogICAgICAgICAgICAgPGg0PlUuUy4gUGFzc3BvcnRzPC9oND48L2E+DQogICAgPC9saT4NCg0KICAgIDxsaSA+IA0KICAgICAgICAgPGEgdGl0bGU9IkludGVybmF0aW9uYWwgVHJhdmVsIiBocmVmPSIvY29udGVudC90cmF2ZWwvZW4vaW50ZXJuYXRpb25hbC10cmF2ZWwuaHRtbCI+IA0KICAgICAgICAgICAgIDxoND5JbnRlcm5hdGlvbmFsIFRyYXZlbDwvaDQ+PC9hPg0KICAgIDwvbGk+DQoNCiAgICA8bGkgPiANCiAgICAgICAgIDxhIHRpdGxlPSJVLlMuIFZpc2FzIiBocmVmPSIvY29udGVudC90cmF2ZWwvZW4vdXMtdmlzYXMuaHRtbCI+IA0KICAgICAgICAgICAgIDxoND5VLlMuIFZpc2FzPC9oND48L2E+DQogICAgPC9saT4NCg0KICAgIDxsaSA+IA0KICAgICAgICAgPGEgdGl0bGU9IkludGVyY291bnRyeSBBZG9wdGlvbiIgaHJlZj0iL2NvbnRlbnQvdHJhdmVsL2VuL0ludGVyY291bnRyeS1BZG9wdGlvbi5odG1sIj4gDQogICAgICAgICAgICAgPGg0PkludGVyY291bnRyeSBBZG9wdGlvbjwvaDQ+PC9hPg0KICAgIDwvbGk+DQoNCiAgICA8bGkgPiANCiAgICAgICAgIDxhIHRpdGxlPSJJbnRlcm5hdGlvbmFsIFBhcmVudGFsIENoaWxkIEFiZHVjdGlvbiIgaHJlZj0iL2NvbnRlbnQvdHJhdmVsL2VuL0ludGVybmF0aW9uYWwtUGFyZW50YWwtQ2hpbGQtQWJkdWN0aW9uLmh0bWwiPiANCiAgICAgICAgICAgICA8aDQ+SW50ZXJuYXRpb25hbCBQYXJlbnRhbCBDaGlsZCBBYmR1Y3Rpb248L2g0PjwvYT4NCiAgICA8L2xpPg0KDQogICAgPGxpID4gDQogICAgICAgICA8YSB0aXRsZT0iUmVwbGFjZSBvciBDZXJ0aWZ5IERvY3VtZW50cyIgaHJlZj0iL2NvbnRlbnQvdHJhdmVsL2VuL3JlY29yZHMtYW5kLWF1dGhlbnRpY2F0aW9ucy5odG1sIj4gDQogICAgICAgICAgICAgPGg0PlJlcGxhY2Ugb3IgQ2VydGlmeSBEb2N1bWVudHM8L2g0PjwvYT4NCiAgICA8L2xpPg0KDQo8L3VsPg0KDQoNCg0KDQoNCg0KDQo8L2Rpdj4KIA0KICA8L2Rpdj4NCiAgICA8L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0idHNnLXJ3ZC1ib2R5LWZyYW1lICI+DQogICAgPGRpdiBjbGFzcz0idHNnLXJ3ZC1tb2JpbGUtY3VycmVudC1wYWdlLWJhY2stYnRuIHRzZy1yd2QtbW9iaWxlLWhlYWRlci1zZWdtZW50LXBhZ2UiPg0KICAgICAgICA0MDQgLSBQYWdlIE5vdCBGb3VuZA0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InRzZy1yd2QtbWFpbi1uYXZpZ2F0aW9uLXNlZ21lbnQtcGFnZSI+DQogICAgICAgIDxkaXYgY2xhc3M9InRzZy1yd2Qtc2luZ2xlLXBhZ2UgdHNnLXJ3ZC1zZWdtZW50LW5hbWUtZnJhbWUiPjxkaXYgY2xhc3M9InRzZy1yd2Qtc2VnZW1lbnQtcGFnZS1OQU1FLWlwYXJzeXMgaXBhcnN5cyBwYXJzeXMiPjxkaXYgY2xhc3M9InRpdGxlIHNlY3Rpb24iPjxoMT40MDQgLSBQYWdlIE5vdCBGb3VuZDwvaDE+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj48ZGl2IGNsYXNzPSJuZXciPjwvZGl2Pgo8L2Rpdj48ZGl2IGNsYXNzPSJpcGFyeXNfaW5oZXJpdGVkIj48ZGl2IGNsYXNzPSJ0c2ctcndkLXNlZ2VtZW50LXBhZ2UtTkFNRS1pcGFyc3lzIGlwYXJzeXMgcGFyc3lzIj48ZGl2IGNsYXNzPSJ0aXRsZSBzZWN0aW9uIj48aDE+RW5nbGlzaDwvaDE+CjwvZGl2PgoNCjwvZGl2Pgo8L2Rpdj4NCjwvZGl2Pgo8L2Rpdj4NCiAgICAgICAgPGRpdiBjbGFzcz0idHNnLXJ3ZC1zZWdtZW50LXNlY3Rpb24tbWVudS1mcmFtZSAiPiA8ZGl2IGNsYXNzPSJ0c2ctcndkLXNlZ2VtZW50LXBhZ2UtbWVudS1pcGFyc3lzIGlwYXJzeXMgcGFyc3lzIj48ZGl2IGNsYXNzPSJpcGFyeXNfaW5oZXJpdGVkIj48ZGl2IGNsYXNzPSJ0c2ctcndkLXNlZ2VtZW50LXBhZ2UtbWVudS1pcGFyc3lzIGlwYXJzeXMgcGFyc3lzIj48L2Rpdj4KPC9kaXY+DQo8L2Rpdj4KPC9kaXY+IA0KICAgIDwvZGl2PiANCiAgICA8ZGl2IGNsYXNzPSJ0c2ctcndkLWJvZHktZnJhbWUtcm93Ij4NCiAgICAgICAgPGRpdiBjbGFzcz0idHNnLXJ3ZC1zZWdtZW50LW1haW4tY29weS1mcmFtZSI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0c2ctcndkLXNpbmdsZS1wYWdlLWJyZWFkY3J1bWIgYnJlYWRjcnVtYiI+DQoNCjxhIHRpdGxlPSJUcmF2ZWwuU3RhdGUuR292IiBocmVmPSIvY29udGVudC90cmF2ZWwuaHRtbCI+IFRyYXZlbC5TdGF0ZS5Hb3YgPC9hPiA+IA0KDQo8L2Rpdj4KIA0KICAgICAgICAgICAgDQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0c2ctcndkLW1haW4tY29weS1ib2R5LWZyYW1lIj4NCiAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iaW5uZXItY29udGVudCIgaWQ9ImlubmVyLWNvbnRlbnQiIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKTsiIHRpdGxlPSJzdGFydCBvZiBtYWluIGNvbnRlbnQiPjwvYT4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0c2ctcndkLXBhZ2UtaGVhZGVyIj4NCiAgICAgICAgICAgICAgICAgICAgPGgxPjQwNCAtIFBhZ2UgTm90IEZvdW5kPC9oMT4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idHNnLXJ3ZC1jb250ZW50LXBhZ2UtcGFyc3lzIHBhcnN5cyI+PGRpdiBjbGFzcz0idHNnLXJ3ZC10ZXh0IHBhcmJhc2Ugc2VjdGlvbiI+DQoNCjxkaXYgc3R5bGU9Im1hcmdpbi10b3A6NXB4Ij4NCg0KICAgICANCiAgICA8cD48cD5Tb3JyeSwgd2UgY291bGRuJ3QgZmluZCB0aGF0IHBhZ2Ugb24gdHJhdmVsLnN0YXRlLmdvdi4gSGVyZSBhcmUgc2V2ZXJhbCBzdWdnZXN0aW9ucyB0byBoZWxwIHlvdSBmaW5kIHdoYXQgeW914oCZcmUgbG9va2luZyBmb3I6PC9wPgo8dWw+CjxsaT5Ucnkgb3VyIHNpdGUgc2VhcmNoPC9saT4KPGxpPkNoZWNrIHRoZSB3ZWJzaXRlJ3MgaG9tZXBhZ2UsIDxhIGhyZWY9Ii9jb250ZW50L3RyYXZlbC5odG1sIiBhZGhvY2VuYWJsZT0iZmFsc2UiPnRyYXZlbC5zdGF0ZS5nb3Y8L2E+PC9saT4KPGxpPkJyb3dzZSBvdXIgbW9zdCB2aXNpdGVkIHNlY3Rpb25zOjx1bD4KPGxpPjxhIGFkaG9jZW5hYmxlPSJmYWxzZSIgaHJlZj0iL2NvbnRlbnQvdHJhdmVsL2VuL3Bhc3Nwb3J0cy5odG1sIj5VLlMmbmJzcDtQYXNzcG9ydHM8L2E+PC9saT4KPGxpPjxhIGFkaG9jZW5hYmxlPSJmYWxzZSIgaHJlZj0iL2NvbnRlbnQvdHJhdmVsL2VuL2ludGVybmF0aW9uYWwtdHJhdmVsLmh0bWwiPkludGVybmF0aW9uYWwgVHJhdmVsPC9hPjxicj4KPC9saT4KPGxpPjxhIGFkaG9jZW5hYmxlPSJmYWxzZSIgaHJlZj0iL2NvbnRlbnQvdHJhdmVsL2VuL3VzLXZpc2FzLmh0bWwiPlUuUyZuYnNwO1Zpc2FzPC9hPjwvbGk+CjxsaT48YSBhZGhvY2VuYWJsZT0iZmFsc2UiIGhyZWY9Ii9jb250ZW50L3RyYXZlbC9lbi9JbnRlcmNvdW50cnktQWRvcHRpb24uaHRtbCI+SW50ZXJjb3VudHJ5IEFkb3B0aW9uPC9hPjwvbGk+CjxsaT48YSBhZGhvY2VuYWJsZT0iZmFsc2UiIGhyZWY9Ii9jb250ZW50L3RyYXZlbC9lbi9JbnRlcm5hdGlvbmFsLVBhcmVudGFsLUNoaWxkLUFiZHVjdGlvbi5odG1sIj5JbnRlcm5hdGlvbmFsIFBhcmVudGFsIENoaWxkIEFiZHVjdGlvbjwvYT48L2xpPgo8L3VsPgo8L2xpPgo8L3VsPgo8cD4mbmJzcDs8L3A+CjxwPkl0IGlzIGFsc28gcG9zc2libGUgdGhhdCB0aGUgcGFnZSB5b3UgdHJpZWQgdG8gYWNjZXNzIGlzIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlLiBJZiB5b3UgdGhpbmsgdGhhdOKAmXMgdGhlIGNhc2UsIHBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuPC9wPgo8cD5JZiB5b3Ugc3RpbGwgY2Fubm90IGZpbmQgc29tZXRoaW5nLCBvciB0byByZXBvcnQgYSB3ZWJzaXRlIHByb2JsZW0sIHBsZWFzZSA8YSBhZGhvY2VuYWJsZT0iZmFsc2UiIGhyZWY9Ii9jb250ZW50L3RyYXZlbC9lbi9jb250YWN0LXVzLmh0bWwiPmNvbnRhY3QgdXM8L2E+LjwvcD4KPHA+Jm5ic3A7PC9wPgo8cD4mbmJzcDsmbmJzcDs8L3A+CjwvcD4NCg0KPC9kaXY+PC9kaXY+CjwvZGl2PgoNCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyBkaXNwbGF5Om5vbmU7Ij4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idHNnLXJ3ZC1zZWdlbWVudC1wYWdlLW5hbWUtZm9yLW1lbnVzIGlwYXJzeXMgcGFyc3lzIj48ZGl2IGNsYXNzPSJzZWN0aW9uIj48ZGl2IGNsYXNzPSJuZXciPjwvZGl2Pgo8L2Rpdj48ZGl2IGNsYXNzPSJpcGFyeXNfaW5oZXJpdGVkIj48ZGl2IGNsYXNzPSJ0c2ctcndkLXNlZ2VtZW50LXBhZ2UtbmFtZS1mb3ItbWVudXMgaXBhcnN5cyBwYXJzeXMiPg0KPC9kaXY+CjwvZGl2Pg0KPC9kaXY+Cg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0c2ctcndkLXJpZ2h0LXJhaWwiPg0KICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0c2ctcndkLWNvbnRlbnQtcGFnZS1yaWdodC1yYWlsLXBhcnN5cyBwYXJzeXMiPjwvZGl2PgoNCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCjwvZGl2PgogICAgICAgIDwvZGl2PiAgIAogICAgICAgIA0KDQogICAgICAgIDxkaXYgYXJpYS1oaWRkZW49InRydWUiIGFyaWEtbGFiZWxsZWRieT0ibXlNb2RhbExhYmVsIiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9IkV4dGVybmFsUG9wdXAiIHJvbGU9ImRpYWxvZyIgdGFiaW5kZXg9Ii0xIj4NCiAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHktdHNnIj4NCiAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJtb2RhbC10aXRsZSIgaWQ9Im15TW9kYWxMYWJlbCI+RXh0ZXJuYWwgTGluazwvaDM+DQogICAgICAgICAgICAgICAgICAgIDxwPllvdSBhcmUgYWJvdXQgdG8gbGVhdmUgdHJhdmVsLnN0YXRlLmdvdiBmb3IgYW4gZXh0ZXJuYWwgd2Vic2l0ZSB0aGF0IGlzIG5vdCBtYWludGFpbmVkIGJ5IHRoZSBVLlMuIERlcGFydG1lbnQgb2YgU3RhdGUuPC9wPg0KICAgICAgICAgICAgICAgICAgICA8cD5MaW5rcyB0byBleHRlcm5hbCB3ZWJzaXRlcyBhcmUgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW5jZSBhbmQgc2hvdWxkIG5vdCBiZSBjb25zdHJ1ZWQgYXMgYW4gZW5kb3JzZW1lbnQgYnkgdGhlIFUuUy4gRGVwYXJ0bWVudCBvZiBTdGF0ZSBvZiB0aGUgdmlld3Mgb3IgcHJvZHVjdHMgY29udGFpbmVkIHRoZXJlaW4uIElmIHlvdSB3aXNoIHRvIHJlbWFpbiBvbiB0cmF2ZWwuc3RhdGUuZ292LCBjbGljayB0aGUgImNhbmNlbCIgbWVzc2FnZS48L3A+DQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJzYW1lbGluZSByZWR1Y2VwYWRkaW5nIj5Zb3UgYXJlIGFib3V0IHRvIHZpc2l0OjwvcD4NCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRhcmdldFVybCByZWR1Y2VwYWRkaW5nIj48L3A+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyLXRzZyI+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IndyYXBwZXIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHAgYWxpZ249ImNlbnRlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG5DbGVhciIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2FuY2VsPC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgdGl0bGU9IkNsaWNrIGhlcmUgdG8gcHJlc3MgR08iIGNsYXNzPSJidG4tdHNnIGJ0bi1wcmltYXJ5LXRzZyBidG5TdWJtaXQiIGRhdGEtcG9wdXA9InRydWUiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPkdPPC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSIgdHNnLXJ3ZC1mb290ZXItcm93Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idHNnLXJ3ZC1mb290ZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idHNnLXJ3ZC1mb290ZXItbWVudS1mcmFtZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idHNnLXJ3ZC1tYWluLWZvb3Rlci1tZW51Ij4gCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRzZy1yd2QtZm9vdGVycy1tYWluLXdlYnNpdGUtbmFtZSI+VHJhdmVsLlN0YXRlLkdvdjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGg0PjxhIGhyZWY9Ii9jb250ZW50L3RyYXZlbC5odG1sIj5UcmF2ZWwuU3RhdGUuR292PC9hPjwvaDQ+PC9saT4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRzZy1yd2QtY29uZ3Jlc3Npb25hbCI+PGg0PjxpbWcgc3R5bGU9ImRpc3BsYXk6bm9uZTsgd2lkdGg6IDUlOyIgc3JjPSIvY29udGVudC9kYW0vQ29uZ3Jlc3Npb25hbC9EZXBhcnRtZW50X29mX3N0YXRlLnN2ZyI+PGEgaHJlZj0iL2NvbnRlbnQvY29uZ3Jlc3MtbGlhaXNvbi1ob21lL2VuL0NvbmdyZXNzaW9uYWxfTGlhaXNvbi5odG1sIj5Db25ncmVzc2lvbmFsIExpYWlzb248L2E+PC9oND48L2xpPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idHNnLXJ3ZC1zaWEiPjxoND48aW1nIHN0eWxlPSJkaXNwbGF5Om5vbmU7IHdpZHRoOiA1JTsiIHNyYz0iL2NvbnRlbnQvZGFtL3NpYS1hc3NldHMvaW1hZ2VzL0RlcGFydG1lbnRfb2Zfc3RhdGUuc3ZnIj48YSBocmVmPSIvY29udGVudC9zcGVjaWFsLWlzc3VhbmNlLWFnZW5jeS1ob21lL2VuL3NwZWMtaXNzdWFuY2UtYWdlbmN5Lmh0bWwiPlNwZWNpYWwgSXNzdWFuY2UgQWdlbmN5PC9hPjwvaDQ+PC9saT4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGg0PjxhIGhyZWY9Ii9jb250ZW50L3RyYXZlbC9lbi9wYXNzcG9ydHMuaHRtbCI+VS5TLiBQYXNzcG9ydHM8L2E+PC9oND48L2xpPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48aDQ+PGEgaHJlZj0iL2NvbnRlbnQvdHJhdmVsL2VuL2ludGVybmF0aW9uYWwtdHJhdmVsLmh0bWwiPkludGVybmF0aW9uYWwgVHJhdmVsPC9hPjwvaDQ+PC9saT4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGg0PjxhIGhyZWY9Ii9jb250ZW50L3RyYXZlbC9lbi91cy12aXNhcy5odG1sIj5VLlMuIFZpc2FzPC9hPjwvaDQ+PC9saT4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGg0PjxhIGhyZWY9Ii9jb250ZW50L3RyYXZlbC9lbi9JbnRlcmNvdW50cnktQWRvcHRpb24uaHRtbCI+SW50ZXJjb3VudHJ5IEFkb3B0aW9uPC9hPjwvaDQ+PC9saT4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGg0PjxhIGhyZWY9Ii9jb250ZW50L3RyYXZlbC9lbi9JbnRlcm5hdGlvbmFsLVBhcmVudGFsLUNoaWxkLUFiZHVjdGlvbi5odG1sIj5JbnRlcm5hdGlvbmFsIFBhcmVudGFsIENoaWxkIEFiZHVjdGlvbjwvYT48L2g0PjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGg0PjxhIGhyZWY9Ii9jb250ZW50L3RyYXZlbC9lbi9yZWNvcmRzLWFuZC1hdXRoZW50aWNhdGlvbnMuaHRtbCI+UmVjb3JkcyBhbmQgQXV0aGVudGljYXRpb25zPC9hPjwvaDQ+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0c2ctcndkLW1haW4tZm9vdGVyLW1lbnUiPiAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idHNnLXJ3ZC1mb290ZXJzLW1haW4td2Vic2l0ZS1uYW1lIj5Qb3B1bGFyIExpbmtzPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii9jb250ZW50L3RyYXZlbC5odG1sIj48aDQ+SG9tZTwvaDQ+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii9jb250ZW50L3RyYXZlbC9lbi90cmF2ZWxhZHZpc29yaWVzL3RyYXZlbGFkdmlzb3JpZXMuaHRtbCI+PGg0PlRyYXZlbCBBZHZpc29yaWVzPC9oND48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iL2NvbnRlbnQvdHJhdmVsL2VuL05ld3MvbmV3c3Jvb20uaHRtbCI+PGg0Pk5ld3Nyb29tPC9oND48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iL2NvbnRlbnQvdHJhdmVsL2VuL2Fib3V0LXVzLmh0bWwiPiA8aDQ+QWJvdXQgVXM8L2g0PjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvY29udGVudC90cmF2ZWwvZW4vY29udGFjdC11cy5odG1sIj48aDQ+Q29udGFjdCBVczwvaDQ+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vY2FyZWVycy5zdGF0ZS5nb3YvY2EvIj48aDQ+Q2FyZWVyczwvaDQ+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii9jb250ZW50L3RyYXZlbC9lbi9hYm91dC11cy9teXRyYXZlbGdvdi5odG1sIj48c3BhbiBjbGFzcz0iZmEgZmEtc2lnbi1pbi1hbHQiPjwvc3Bhbj48aDQgY2xhc3M9ImZvb3Rlcmdsb2JlIj4gTXlUcmF2ZWxHb3Y8L2g0PjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vd3d3LnVzZW1iYXNzeS5nb3YvIj48aDQ+RmluZCBVLlMuIEVtYmFzc2llcyAmIENvbnN1bGF0ZXM8L2g0PjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRzZy1yd2QtbWFpbi1mb290ZXItbWVudSAiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0c2ctcndkLWZvb3Rlci1zb2NpYWwtZnJhbWUiPiAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDM+U3RheSBDb25uZWN0ZWQ8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRzZy1yd2Qtc29jaWFsLW1lZGlhLWljb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIHRpdGxlPSJEZXBhcnRtZW50IG9mIFN0YXRlIEJsb2ciIGhyZWY9Imh0dHA6Ly9ibG9ncy5zdGF0ZS5nb3YvIj48c3BhbiBjbGFzcz0iZmFzIGZhLWNvbW1lbnRzIj48L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgdGl0bGU9IkJ1cmVhdSBvZiBDb25zdWxhciBBZmZhaXJzIEZhY2Vib29rIiBocmVmPSJodHRwOi8vd3d3LmZhY2Vib29rLmNvbS9wYWdlcy9CdXJlYXUtb2YtQ29uc3VsYXItQWZmYWlycy85MjI5MzAzMTQ4Ij48c3BhbiBjbGFzcz0iZmFiIGZhLWZhY2Vib29rIj48L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgdGl0bGU9IkJ1cmVhdSBvZiBDb25zdWxhciBBZmZhaXJzIEluc3RhZ3JhbSIgaHJlZj0iaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS90cmF2ZWxnb3YvIj48c3BhbiBjbGFzcz0iZmFiIGZhLWluc3RhZ3JhbSI+PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIHRpdGxlPSJCdXJlYXUgb2YgQ29uc3VsYXIgQWZmYWlycyBUd2l0dGVyIiBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vVHJhdmVsR292Ij48c3BhbiBjbGFzcz0iZmFiIGZhLXR3aXR0ZXIiPjwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSB0aXRsZT0iRGVwYXJ0bWVudCBvZiBTdGF0ZSBWaWRlb3MiIGhyZWY9Imh0dHA6Ly93d3cueW91dHViZS5jb20vdXNlci9zdGF0ZXZpZGVvIj48c3BhbiBjbGFzcz0iZmFiIGZhLXlvdXR1YmUiPjwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSB0aXRsZT0iVHJhdmVsIEFkdmlzb3J5IFJTUyBGZWVkIiBocmVmPSIvY29udGVudC90cmF2ZWwvZW4vcnNzLmh0bWwiPjxzcGFuIGNsYXNzPSJmYSBmYS1yc3MiPjwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRzZy1yd2QtZm9vdGVyLWxlZ2FsLXJlc291cmNlcy1mcmFtZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzPkxlZ2FsIFJlc291cmNlczwvaDM+CiAgICAgPHVsPgogICAgICA8bGk+PGg0PjxhIGhyZWY9Ii9jb250ZW50L3RyYXZlbC9lbi9sZWdhbC5odG1sIj5MZWdhbCBJbmZvcm1hdGlvbjwvYT48L2g0PjwvbGk+CiAgICAgICAgIDxsaT48aDQ+PGEgaHJlZj0iL2NvbnRlbnQvdHJhdmVsL2VuL2NvbnN1bGFybm90aWZpY2F0aW9uLmh0bWwiPkluZm8gZm9yIFUuUy4gTGF3IEVuZm9yY2VtZW50PC9hPjwvaDQ+PC9saT4KICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InRzZy1yd2QtYm90dG9tLWxlZ2FsLXJvdyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRzZy1yd2QtYm90dG9tLWxlZ2FsLWZyYW1lIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbkZsYWciPjwvZGl2PgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuc3RhdGUuZ292L3ByaXZhY3ktcG9saWN5LyIgdGl0bGU9IlByaXZhY3kiPlByaXZhY3k8L2E+IHwKCiAgICAgICAgICAgICAgICA8YSBocmVmPSIvY29udGVudC90cmF2ZWwvZW4vY29weXJpZ2h0LWRpc2NsYWltZXIuaHRtbCIgdGl0bGU9IkNvcHlyaWdodCBhbmQgRGlzY2xhaW1lciI+Q29weXJpZ2h0ICYgRGlzY2xhaW1lcjwvYT4gfAoKICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZm9pYS5zdGF0ZS5nb3YvIiB0aXRsZT0iRk9JQSAiPkZPSUE8L2E+IHwKCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5zdGF0ZS5nb3Yva2V5LXRvcGljcy1vZmZpY2Utb2YtY2l2aWwtcmlnaHRzL2Vlby1uby1mZWFyLWFjdC13aGlzdGxlYmxvd2VyLXByb3RlY3Rpb24tYWN0cy8iIHRpdGxlPSJObyBGRUFSIEFjdCBEYXRhIj5ObyBGRUFSIEFjdCBEYXRhPC9hPiB8CgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuc3RhdGVvaWcuZ292IiB0aXRsZT0iT2ZmaWNlIG9mIHRoZSBJbnNwZWN0b3IgR2VuZXJhbCI+T2ZmaWNlIG9mIHRoZSBJbnNwZWN0b3IgR2VuZXJhbDwvYT4gfAoKICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cudXNhLmdvdi8iIHRpdGxlPSJVU0EuZ292ICI+VVNBLmdvdjwvYT4gfAoKICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnVzYS5nb3YvZXNwYW5vbC8iIHRpdGxlPSJVU0EuZ292L2VzcGFub2wiPlVTQS5nb3YvZXNwYW5vbDwvYT4gfAogICAgICAgICAgICAgICAgPGJyPlRoaXMgc2l0ZSBpcyBtYW5hZ2VkIGJ5IHRoZSBVLlMuIERlcGFydG1lbnQgb2YgU3RhdGUuIEV4dGVybmFsIGxpbmtzIHRvIG90aGVyIEludGVybmV0IHNpdGVzIGFuZCBsaXN0aW5ncyBvZiBwcml2YXRlIGVudGl0aWVzIG9uIHRoaXMgcGFnZSBhcmUgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW5jZSBhbmQgc2hvdWxkIG5vdCBiZSBjb25zdHJ1ZWQgYXMgdGhlIFUuUy4gRGVwYXJ0bWVudCBvZiBTdGF0ZSBvciBVLlMuIGdvdmVybm1lbnQgZW5kb3JzZW1lbnQgb2YgdGhlIGVudGl0eSwgaXRzIHZpZXdzLCB0aGUgcHJvZHVjdHMgb3Igc2VydmljZXMgaXQgcHJvdmlkZXMsIG9yIHRoZSBhY2N1cmFjeSBvZiBpbmZvcm1hdGlvbiBjb250YWluZWQgdGhlcmVpbi4gVGhlIG9yZGVyIGluIHdoaWNoIG5hbWVzIGFwcGVhciBoYXMgbm8gc2lnbmlmaWNhbmNlLCBhbmQgdGhlIGxpc3RpbmdzIG9yIGxpbmtzIG1heSBiZSByZW1vdmVkIGF0IGFueSB0aW1lIGF0IHRoZSBkaXNjcmV0aW9uIG9mIHRoZSBEZXBhcnRtZW50LgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvYm9keT4KPCEtLUJFR0lOIFFVQUxUUklDUyBXRUJTSVRFIEZFRURCQUNLIFNOSVBQRVQtLT4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPgooZnVuY3Rpb24oKXt2YXIgZz1mdW5jdGlvbihlLGgsZixnKXsKdGhpcy5nZXQ9ZnVuY3Rpb24oYSl7Zm9yKHZhciBhPWErIj0iLGM9ZG9jdW1lbnQuY29va2llLnNwbGl0KCI7IiksYj0wLGU9Yy5sZW5ndGg7YjxlO2IrKyl7Zm9yKHZhciBkPWNbYl07IiAiPT1kLmNoYXJBdCgwKTspZD1kLnN1YnN0cmluZygxLGQubGVuZ3RoKTtpZigwPT1kLmluZGV4T2YoYSkpcmV0dXJuIGQuc3Vic3RyaW5nKGEubGVuZ3RoLGQubGVuZ3RoKX1yZXR1cm4gbnVsbH07CnRoaXMuc2V0PWZ1bmN0aW9uKGEsYyl7dmFyIGI9IiIsYj1uZXcgRGF0ZTtiLnNldFRpbWUoYi5nZXRUaW1lKCkrNjA0OEU1KTtiPSI7IGV4cGlyZXM9IitiLnRvR01UU3RyaW5nKCk7ZG9jdW1lbnQuY29va2llPWErIj0iK2MrYisiOyBwYXRoPS87ICJ9Owp0aGlzLmNoZWNrPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXQoZik7aWYoYSlhPWEuc3BsaXQoIjoiKTtlbHNlIGlmKDEwMCE9ZSkidiI9PWgmJihlPU1hdGgucmFuZG9tKCk+PWUvMTAwPzA6MTAwKSxhPVtoLGUsMF0sdGhpcy5zZXQoZixhLmpvaW4oIjoiKSk7ZWxzZSByZXR1cm4hMDt2YXIgYz1hWzFdO2lmKDEwMD09YylyZXR1cm4hMDtzd2l0Y2goYVswXSl7Y2FzZSAidiI6cmV0dXJuITE7Y2FzZSAiciI6cmV0dXJuIGM9YVsyXSVNYXRoLmZsb29yKDEwMC9jKSxhWzJdKyssdGhpcy5zZXQoZixhLmpvaW4oIjoiKSksIWN9cmV0dXJuITB9Owp0aGlzLmdvPWZ1bmN0aW9uKCl7aWYodGhpcy5jaGVjaygpKXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTthLnR5cGU9InRleHQvamF2YXNjcmlwdCI7YS5zcmM9Zztkb2N1bWVudC5ib2R5JiZkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpfX07CnRoaXMuc3RhcnQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzOyJjb21wbGV0ZSIhPT1kb2N1bWVudC5yZWFkeVN0YXRlP3dpbmRvdy5hZGRFdmVudExpc3RlbmVyP3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmdW5jdGlvbigpe3QuZ28oKX0sITEpOndpbmRvdy5hdHRhY2hFdmVudCYmd2luZG93LmF0dGFjaEV2ZW50KCJvbmxvYWQiLGZ1bmN0aW9uKCl7dC5nbygpfSk6dC5nbygpfTt9Owp0cnl7KG5ldyBnKDEwMCwiciIsIlFTSV9TX1pOXzhCdGJyOXFUUWVjc3FTcSIsImh0dHBzOi8vem44YnRicjlxdHFlY3Nxc3EtdHNnZmVkcmFtcC5nb3YxLnNpdGVpbnRlcmNlcHQucXVhbHRyaWNzLmNvbS9TSUUvP1FfWklEPVpOXzhCdGJyOXFUUWVjc3FTcSIpKS5zdGFydCgpfWNhdGNoKGkpe319KSgpOwo8L3NjcmlwdD48ZGl2IGlkPSdaTl84QnRicjlxVFFlY3NxU3EnPjwhLS1ETyBOT1QgUkVNT1ZFLUNPTlRFTlRTIFBMQUNFRCBIRVJFLS0+PC9kaXY+CjwhLS1FTkQgV0VCU0lURSBGRUVEQkFDSyBTTklQUEVULS0+CjwvaHRtbD4KDQoNCg== + http_version: '1.1' + adapter_metadata: + effective_url: https://travel.state.gov/content/dam/passports/FIG_cropper.swf + recorded_at: Mon, 06 May 2024 22:00:42 GMT recorded_with: VCR 2.9.3 diff --git a/spec/html-proofer/fixtures/vcr_cassettes/links/file_foo_extensions_foo_log_level_error_type_file_.yml b/spec/html-proofer/fixtures/vcr_cassettes/links/file_foo_extensions_foo_log_level_error_type_file_.yml index 6882825a..79a7e8b1 100644 --- a/spec/html-proofer/fixtures/vcr_cassettes/links/file_foo_extensions_foo_log_level_error_type_file_.yml +++ b/spec/html-proofer/fixtures/vcr_cassettes/links/file_foo_extensions_foo_log_level_error_type_file_.yml @@ -74,4 +74,29 @@ http_interactions: adapter_metadata: effective_url: https://www.google.com/ recorded_at: Fri, 31 Dec 2021 20:29:50 GMT +- request: + method: head + uri: https://www.asdo3irj395295jsingrkrg4.com + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Mozilla/5.0 (compatible; HTML Proofer/5.0.8; +https://github.com/gjtorikian/html-proofer) + Accept: + - application/xml,application/xhtml+xml,text/html;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5 + Expect: + - '' + response: + status: + code: 0 + message: + headers: {} + body: + encoding: ASCII-8BIT + string: '' + http_version: + adapter_metadata: + effective_url: https://www.asdo3irj395295jsingrkrg4.com/ + recorded_at: Mon, 06 May 2024 22:00:42 GMT recorded_with: VCR 2.9.3 diff --git a/spec/html-proofer/fixtures/vcr_cassettes/links/non_standard_characters_html_log_level_error_type_file_.yml b/spec/html-proofer/fixtures/vcr_cassettes/links/non_standard_characters_html_log_level_error_type_file_.yml index 630ebdf4..307b034d 100644 --- a/spec/html-proofer/fixtures/vcr_cassettes/links/non_standard_characters_html_log_level_error_type_file_.yml +++ b/spec/html-proofer/fixtures/vcr_cassettes/links/non_standard_characters_html_log_level_error_type_file_.yml @@ -158,4 +158,79 @@ http_interactions: adapter_metadata: effective_url: https://ben.balter.com/2014/09/29/source-disclosed-%E2%89%A0-open-source/ recorded_at: Fri, 31 Dec 2021 16:37:44 GMT +- request: + method: head + uri: https://en.wikipedia.org/wiki/Coup_d'%C3%A9tat + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Mozilla/5.0 (compatible; HTML Proofer/5.0.8; +https://github.com/gjtorikian/html-proofer) + Accept: + - application/xml,application/xhtml+xml,text/html;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5 + Expect: + - '' + response: + status: + code: 200 + message: '' + headers: + date: + - Sun, 05 May 2024 23:34:30 GMT + server: + - mw-web.codfw.main-57879f94f6-sjqjx + x-content-type-options: + - nosniff + content-language: + - en + origin-trial: + - AonOP4SwCrqpb0nhZbg554z9iJimP3DxUDB8V4yu9fyyepauGKD0NXqTknWi4gnuDfMG6hNb7TDUDTsl0mDw9gIAAABmeyJvcmlnaW4iOiJodHRwczovL3dpa2lwZWRpYS5vcmc6NDQzIiwiZmVhdHVyZSI6IlRvcExldmVsVHBjZCIsImV4cGlyeSI6MTczNTM0Mzk5OSwiaXNTdWJkb21haW4iOnRydWV9 + accept-ch: + - '' + vary: + - Accept-Encoding,Cookie,Authorization + last-modified: + - Sun, 05 May 2024 19:44:13 GMT + content-type: + - text/html; charset=UTF-8 + age: + - '80770' + x-cache: + - cp4040 hit, cp4040 hit/1 + x-cache-status: + - hit-front + server-timing: + - cache;desc="hit-front", host;desc="cp4040" + strict-transport-security: + - max-age=106384710; includeSubDomains; preload + report-to: + - '{ "group": "wm_nel", "max_age": 604800, "endpoints": [{ "url": "https://intake-logging.wikimedia.org/v1/events?stream=w3c.reportingapi.network_error&schema_uri=/w3c/reportingapi/network_error/1.0.0" + }] }' + nel: + - '{ "report_to": "wm_nel", "max_age": 604800, "failure_fraction": 0.05, "success_fraction": + 0.0}' + set-cookie: + - WMF-Last-Access=06-May-2024;Path=/;HttpOnly;secure;Expires=Fri, 07 Jun 2024 + 12:00:00 GMT + - WMF-Last-Access-Global=06-May-2024;Path=/;Domain=.wikipedia.org;HttpOnly;secure;Expires=Fri, + 07 Jun 2024 12:00:00 GMT + - WMF-DP=f65;Path=/;HttpOnly;secure;Expires=Tue, 07 May 2024 00:00:00 GMT + - GeoIP=US:AZ:Gilbert:33.34:-111.74:v4; Path=/; secure; Domain=.wikipedia.org + - NetworkProbeLimit=0.001;Path=/;Secure;Max-Age=3600 + x-client-ip: + - 174.67.189.172 + cache-control: + - private, s-maxage=0, max-age=0, must-revalidate + accept-ranges: + - bytes + content-length: + - '419443' + body: + encoding: ASCII-8BIT + string: '' + http_version: '2' + adapter_metadata: + effective_url: https://en.wikipedia.org/wiki/Coup_d'%C3%A9tat + recorded_at: Mon, 06 May 2024 22:00:41 GMT recorded_with: VCR 2.9.3 diff --git a/spec/html-proofer/fixtures/vcr_cassettes/links/source_html_log_level_error_type_file_.yml b/spec/html-proofer/fixtures/vcr_cassettes/links/source_html_log_level_error_type_file_.yml index 38ed5135..a812e102 100644 --- a/spec/html-proofer/fixtures/vcr_cassettes/links/source_html_log_level_error_type_file_.yml +++ b/spec/html-proofer/fixtures/vcr_cassettes/links/source_html_log_level_error_type_file_.yml @@ -25,4 +25,29 @@ http_interactions: adapter_metadata: effective_url: https://www.asdo3IRJ395295jsingrkrg4.com/ recorded_at: Fri, 31 Dec 2021 16:37:41 GMT +- request: + method: head + uri: https://www.asdo3irj395295jsingrkrg4.com + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Mozilla/5.0 (compatible; HTML Proofer/5.0.8; +https://github.com/gjtorikian/html-proofer) + Accept: + - application/xml,application/xhtml+xml,text/html;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5 + Expect: + - '' + response: + status: + code: 0 + message: + headers: {} + body: + encoding: ASCII-8BIT + string: '' + http_version: + adapter_metadata: + effective_url: https://www.asdo3irj395295jsingrkrg4.com/ + recorded_at: Mon, 06 May 2024 22:00:39 GMT recorded_with: VCR 2.9.3 diff --git a/spec/html-proofer/fixtures/vcr_cassettes/links/unicode_domain_html_log_level_error_type_file_.yml b/spec/html-proofer/fixtures/vcr_cassettes/links/unicode_domain_html_log_level_error_type_file_.yml index 26cfc5e6..9e42cacb 100644 --- a/spec/html-proofer/fixtures/vcr_cassettes/links/unicode_domain_html_log_level_error_type_file_.yml +++ b/spec/html-proofer/fixtures/vcr_cassettes/links/unicode_domain_html_log_level_error_type_file_.yml @@ -45,4 +45,170 @@ http_interactions: adapter_metadata: effective_url: http://xn--mxaaaiil1bdgepgr1bpt0d.gr/ recorded_at: Fri, 31 Dec 2021 16:37:41 GMT +- request: + method: head + uri: https://xn--mxaaaiil1bdgepgr1bpt0d.gr + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Mozilla/5.0 (compatible; HTML Proofer/5.0.8; +https://github.com/gjtorikian/html-proofer) + Accept: + - application/xml,application/xhtml+xml,text/html;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5 + Expect: + - '' + response: + status: + code: 403 + message: '' + headers: + date: + - Mon, 06 May 2024 21:28:33 GMT + content-type: + - text/html; charset=UTF-8 + x-frame-options: + - SAMEORIGIN + referrer-policy: + - same-origin + cache-control: + - max-age=15 + expires: + - Mon, 06 May 2024 21:28:48 GMT + report-to: + - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=h2SH3SQP4kL4H%2FeEwFTvdyWe9mVmmMVCryM%2FstLbN4zRrLRNItC8kuyHmoYnUQosNsrcZtB%2BmIFWsHNShxpKhX3eNdkHLtkiZEqa26ubzPW%2ByzIEVgcGYmZhax9enQus293haX6zcSOjw1rgydxSfQ%3D%3D"}],"group":"cf-nel","max_age":604800}' + nel: + - '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}' + strict-transport-security: + - max-age=0; includeSubDomains + x-content-type-options: + - nosniff + server: + - cloudflare + cf-ray: + - 87fc0f8c099714d8-LAX + alt-svc: + - h3=":443"; ma=86400 + body: + encoding: ASCII-8BIT + string: '' + http_version: '2' + adapter_metadata: + effective_url: https://xn--mxaaaiil1bdgepgr1bpt0d.gr/ + recorded_at: Mon, 06 May 2024 21:28:33 GMT +- request: + method: get + uri: https://xn--mxaaaiil1bdgepgr1bpt0d.gr + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Mozilla/5.0 (compatible; HTML Proofer/5.0.8; +https://github.com/gjtorikian/html-proofer) + Accept: + - application/xml,application/xhtml+xml,text/html;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5 + Expect: + - '' + response: + status: + code: 403 + message: '' + headers: + date: + - Mon, 06 May 2024 21:28:33 GMT + content-type: + - text/html; charset=UTF-8 + x-frame-options: + - SAMEORIGIN + referrer-policy: + - same-origin + cache-control: + - max-age=15 + expires: + - Mon, 06 May 2024 21:28:48 GMT + report-to: + - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=wqThaXpz5pmR7WVPxSJ9HpVaMf6k%2BXPrset6U1iplOV0wGyMjxIOJZzhCwb8FNTX4%2BxBQ2pwraEPTYr5JvPhJexezmZ3Vo5u267ZIKP1DKXQWfIIt5kUwbb78sI3nCD%2B8AFDd5Em38zsQ3WVHOAyjw%3D%3D"}],"group":"cf-nel","max_age":604800}' + nel: + - '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}' + strict-transport-security: + - max-age=0; includeSubDomains + x-content-type-options: + - nosniff + server: + - cloudflare + cf-ray: + - 87fc0f8c59eb14d8-LAX + alt-svc: + - h3=":443"; ma=86400 + body: + encoding: ASCII-8BIT + string: "\n\n\n\n \n\nAttention Required! | Cloudflare\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n + \
\n
Please enable cookies.
\n + \
\n
\n

Sorry, + you have been blocked

\n

You + are unable to access xn--mxaaaiil1bdgepgr1bpt0d.gr

\n
\n\n
\n
\n
\n + \ \n \n + \ \n
\n
\n
\n\n
\n
\n
\n

Why + have I been blocked?

\n\n

This + website is using a security service to protect itself from online attacks. + The action you just performed triggered the security solution. There are several + actions that could trigger this block including submitting a certain word + or phrase, a SQL command or malformed data.

\n
\n\n
\n

What + can I do to resolve this?

\n\n

You + can email the site owner to let them know you were blocked. Please include + what you were doing when this page came up and the Cloudflare Ray ID found + at the bottom of this page.

\n
\n
\n
\n\n \n\n\n
\n
\n\n \n\n\n\n" + http_version: '2' + adapter_metadata: + effective_url: https://xn--mxaaaiil1bdgepgr1bpt0d.gr/ + recorded_at: Mon, 06 May 2024 21:28:33 GMT recorded_with: VCR 2.9.3 diff --git a/spec/html-proofer/fixtures/vcr_cassettes/scripts/script_broken_external_html_log_level_error_type_file_.yml b/spec/html-proofer/fixtures/vcr_cassettes/scripts/script_broken_external_html_log_level_error_type_file_.yml index 15e1bd10..90a20b28 100644 --- a/spec/html-proofer/fixtures/vcr_cassettes/scripts/script_broken_external_html_log_level_error_type_file_.yml +++ b/spec/html-proofer/fixtures/vcr_cassettes/scripts/script_broken_external_html_log_level_error_type_file_.yml @@ -25,4 +25,29 @@ http_interactions: adapter_metadata: effective_url: http://www.asdo3IRJ395295jsingrkrg4.com/asdo3IRJ.js recorded_at: Fri, 31 Dec 2021 16:38:19 GMT +- request: + method: head + uri: http://www.asdo3irj395295jsingrkrg4.com/asdo3IRJ.js + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Mozilla/5.0 (compatible; HTML Proofer/5.0.8; +https://github.com/gjtorikian/html-proofer) + Accept: + - application/xml,application/xhtml+xml,text/html;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5 + Expect: + - '' + response: + status: + code: 0 + message: + headers: {} + body: + encoding: ASCII-8BIT + string: '' + http_version: + adapter_metadata: + effective_url: http://www.asdo3irj395295jsingrkrg4.com/asdo3IRJ.js + recorded_at: Mon, 06 May 2024 22:00:17 GMT recorded_with: VCR 2.9.3