diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 37450cda4..4c1f22a3d 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -336,9 +336,11 @@ class UsersController < ApplicationController def import_articles_from_feed(user) return if user.feed_url.blank? - worker = FeatureFlag.enabled?(:feeds_import) ? Feeds::ImportArticlesWorker : RssReaderFetchUserWorker - - worker.perform_async(user.id) + if FeatureFlag.enabled?(:feeds_import) + Feeds::ImportArticlesWorker.perform_async(nil, user.id) + else + RssReaderFetchUserWorker.perform_async(user.id) + end end def profile_params diff --git a/app/services/feeds/import.rb b/app/services/feeds/import.rb index 9be0520a9..0fccd9bda 100644 --- a/app/services/feeds/import.rb +++ b/app/services/feeds/import.rb @@ -1,12 +1,13 @@ module Feeds class Import - def self.call(users: nil) - new(users: users).call + def self.call(users: nil, earlier_than: nil) + new(users: users, earlier_than: earlier_than).call end - def initialize(users: nil) + def initialize(users: nil, earlier_than: nil) # using nil here to avoid an unnecessary table count to check presence @users = users || User.with_feed + @earlier_than = earlier_than # NOTE: should these be configurable? Currently they are the result of empiric # tests trying to find a balance between memory occupation and speed @@ -40,6 +41,9 @@ module Feeds total_articles_count += articles.length articles.each { |article| Slack::Messengers::ArticleFetchedFeed.call(article: article) } + + # we use `feed_fetched_at` to mark the last time a particular user's feed has been fetched, parsed and imported + batch_of_users.update_all(feed_fetched_at: Time.current) end DatadogStatsClient.count("feeds::import::articles.count", total_articles_count) @@ -48,7 +52,15 @@ module Feeds private - attr_reader :users, :users_batch_size, :num_fetchers, :num_parsers + attr_reader :earlier_than, :users_batch_size, :num_fetchers, :num_parsers + + def users + return @users unless earlier_than + + # Filtering users whose feed hasn't been processed in the last `earlier_than` time span. + # New users + any user whose feed was processed earlier than the given time + @users.where(feed_fetched_at: nil).or(@users.where(feed_fetched_at: ..earlier_than)) + end # TODO: put this in separate service object def fetch_feeds(batch_of_users) @@ -79,8 +91,6 @@ module Feeds next end - batch_of_users.update_all(feed_fetched_at: Time.current) - result.compact.to_h end diff --git a/app/workers/articles/rss_reader_worker.rb b/app/workers/articles/rss_reader_worker.rb index cacb21ba2..1cfae57de 100644 --- a/app/workers/articles/rss_reader_worker.rb +++ b/app/workers/articles/rss_reader_worker.rb @@ -11,7 +11,7 @@ module Articles return if SiteConfig.dev_to? if FeatureFlag.enabled?(:feeds_import) - ::Feeds::ImportArticlesWorker.perform_async + ::Feeds::ImportArticlesWorker.perform_async(4.hours.ago) else # don't force fetch. Fetch "random" subset instead of all of them. ::RssReader.get_all_articles(force: false) diff --git a/app/workers/feeds/import_articles_worker.rb b/app/workers/feeds/import_articles_worker.rb index 7c8414550..77a1ee66d 100644 --- a/app/workers/feeds/import_articles_worker.rb +++ b/app/workers/feeds/import_articles_worker.rb @@ -4,16 +4,10 @@ module Feeds sidekiq_options queue: :medium_priority, retry: 10 - def perform(user_ids = []) - user_ids = Array.wrap(user_ids) + def perform(earlier_than, user_ids = []) + users = user_ids.present? ? User.where(id: user_ids) : nil - users = if user_ids.present? - User.where(id: user_ids) - else - User.with_feed - end - - ::Feeds::Import.call(users: users) + ::Feeds::Import.call(users: users, earlier_than: earlier_than) end end end diff --git a/lib/tasks/fetch.rake b/lib/tasks/fetch.rake index d1cf05fed..b45c53cc0 100644 --- a/lib/tasks/fetch.rake +++ b/lib/tasks/fetch.rake @@ -2,7 +2,7 @@ desc "This task is called by the Heroku scheduler add-on" task fetch_all_rss: :environment do if FeatureFlag.enabled?(:feeds_import) - Feeds::Import.call + Feeds::Import.call(earlier_than: 4.hours.ago) else # don't force fetch. Fetch "random" subset instead of all of them. RssReader.get_all_articles(force: false) @@ -10,7 +10,7 @@ task fetch_all_rss: :environment do end task fetch_feeds_import: :environment do - Feeds::Import.call + Feeds::Import.call(earlier_than: 4.hours.ago) end # Temporary diff --git a/spec/requests/user/user_settings_spec.rb b/spec/requests/user/user_settings_spec.rb index a66d8ea21..3059880b6 100644 --- a/spec/requests/user/user_settings_spec.rb +++ b/spec/requests/user/user_settings_spec.rb @@ -309,7 +309,7 @@ RSpec.describe "UserSettings", type: :request do let(:user) { create(:user, feed_url: feed_url) } it "invokes RssReaderFetchUserWorker" do - allow(Feeds::ImportArticlesWorker).to receive(:perform_async).with(user.id) + allow(Feeds::ImportArticlesWorker).to receive(:perform_async).with(nil, user.id) allow(RssReaderFetchUserWorker).to receive(:perform_async).with(user.id) put user_path(user.id), params: { user: { feed_url: feed_url } } @@ -319,13 +319,13 @@ RSpec.describe "UserSettings", type: :request do end it "invokes Feeds::ImportArticlesWorker if feeds_import feature flag is on" do - allow(Feeds::ImportArticlesWorker).to receive(:perform_async).with(user.id) + allow(Feeds::ImportArticlesWorker).to receive(:perform_async).with(nil, user.id) allow(RssReaderFetchUserWorker).to receive(:perform_async).with(user.id) allow(FeatureFlag).to receive(:enabled?).with(:feeds_import).and_return(true) put user_path(user.id), params: { user: { feed_url: feed_url } } - expect(Feeds::ImportArticlesWorker).to have_received(:perform_async).with(user.id) + expect(Feeds::ImportArticlesWorker).to have_received(:perform_async).with(nil, user.id) expect(RssReaderFetchUserWorker).not_to have_received(:perform_async).with(user.id) end end diff --git a/spec/services/feeds/import_spec.rb b/spec/services/feeds/import_spec.rb index db75fafb4..d8cc3d55c 100644 --- a/spec/services/feeds/import_spec.rb +++ b/spec/services/feeds/import_spec.rb @@ -44,25 +44,6 @@ RSpec.describe Feeds::Import, type: :service, vcr: true, db_strategy: :truncatio end end - it "does refetch same user over and over by default", vcr: { cassette_name: "feeds_import_multiple_times" } do - user = User.find_by(feed_url: nonpermanent_link) - - Timecop.freeze(Time.current) do - user.update_columns(feed_fetched_at: Time.current) - - fetched_at_time = user.reload.feed_fetched_at - - # travel a few seconds in the future to simulate a new time - 3.times do |i| - Timecop.travel((i + 5).seconds.from_now) do - described_class.call - end - end - - expect(user.reload.feed_fetched_at > fetched_at_time).to be(true) - end - end - it "queues as many slack messages as there are articles", vcr: { cassette_name: "feeds_import" } do old_count = Slack::Messengers::Worker.jobs.count num_articles = described_class.call @@ -123,8 +104,61 @@ RSpec.describe Feeds::Import, type: :service, vcr: true, db_strategy: :truncatio end end + context "when refetching" do + before do + [link, nonmedium_link, nonpermanent_link].each do |feed_url| + create(:user, feed_url: feed_url) + end + end + + it "does refetch same user over and over by default", vcr: { cassette_name: "feeds_import_multiple_times" } do + user = User.find_by(feed_url: nonpermanent_link) + + Timecop.freeze(Time.current) do + user.update_columns(feed_fetched_at: Time.current) + + fetched_at_time = user.reload.feed_fetched_at + + # travel a few seconds in the future to simulate a new time + 3.times do |i| + Timecop.travel((i + 5).seconds.from_now) do + described_class.call + end + end + + expect(user.reload.feed_fetched_at > fetched_at_time).to be(true) + end + end + + it "does not refetch recently fetched users if earlier_than is given", vcr: { cassette_name: "feeds_import" } do + time = 30.minutes.ago + + Timecop.freeze(time) do + described_class.call + end + + # we delete the articles to make sure it won't trigger the duplicate check + Article.delete_all + + expect { described_class.call(earlier_than: 1.hour.ago) }.not_to change(Article, :count) + end + + it "refetches recently fetched users if earlier_than is now", vcr: { cassette_name: "feeds_import_twice" } do + time = 30.minutes.ago + + Timecop.freeze(time) do + described_class.call + end + + # we delete the articles to make sure it won't trigger the duplicate check + Article.delete_all + + expect { described_class.call(earlier_than: Time.current) }.to change(Article, :count) + end + end + context "when feed_referential_link is false" do - it "does not self-reference links for user" do + it "does not self-reference links for user", vcr: { cassette_name: "feeds_import_non_referential" } do # Article.find_by is used by find_and_replace_possible_links! # checking its invocation is a shortcut to testing the functionality. allow(Article).to receive(:find_by).and_call_original diff --git a/spec/support/fixtures/vcr_cassettes/Feeds_Import/_call/reports_a_fetching_error.yml b/spec/support/fixtures/vcr_cassettes/Feeds_Import/_call/reports_a_fetching_error.yml deleted file mode 100644 index a411d5ab7..000000000 --- a/spec/support/fixtures/vcr_cassettes/Feeds_Import/_call/reports_a_fetching_error.yml +++ /dev/null @@ -1,286 +0,0 @@ ---- -http_interactions: -- request: - method: get - uri: https://medium.com/feed/@vaidehijoshi - body: - encoding: US-ASCII - string: '' - headers: - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - User-Agent: - - Ruby - response: - status: - code: 200 - message: OK - headers: - Date: - - Wed, 21 Oct 2020 15:08:33 GMT - Content-Type: - - text/xml; charset=UTF-8 - Transfer-Encoding: - - chunked - Connection: - - keep-alive - Sepia-Upstream: - - medium - Cache-Control: - - private, must-revalidate, max-age=900 - Content-Security-Policy: - - 'default-src ''self''; connect-src https://localhost https://*.instapaper.com - https://*.stripe.com https://glyph.medium.com https://*.paypal.com https://*.braintree-api.com - https://*.braintreegateway.com https://accounts.google.com https://getpocket.com - https://medium.com https://*.medium.com https://*.medium.com https://medium.com - https://*.medium.com https://*.algolia.net https://cdn-static-1.medium.com - https://dnqgz544uhbo8.cloudfront.net https://cdn-videos-1.medium.com https://cdn-audio-1.medium.com - https://lightstep.medium.systems https://*.branch.io ''self''; font-src data: - https://*.amazonaws.com https://*.medium.com https://glyph.medium.com https://medium.com - https://*.gstatic.com https://dnqgz544uhbo8.cloudfront.net https://cdn-static-1.medium.com - ''self''; frame-src chromenull: https: webviewprogressproxy: medium: ''self''; - img-src blob: data: https: ''self''; media-src https://*.cdn.vine.co https://d1fcbxp97j4nb2.cloudfront.net - https://d262ilb51hltx0.cloudfront.net https://*.medium.com https://gomiro.medium.com - https://miro.medium.com https://pbs.twimg.com ''self'' blob:; object-src ''self''; - script-src ''unsafe-eval'' ''unsafe-inline'' about: https: ''self''; style-src - ''unsafe-inline'' data: https: ''self''; report-uri https://csp.medium.com' - Expires: - - Wed, 21 Oct 2020 15:23:33 GMT - Link: - - ; rel="humans" - Medium-Fulfilled-By: - - valencia/main-20201020-231910-0a4c7cfeb9 - Pragma: - - private - X-Content-Type-Options: - - nosniff - X-Envoy-Upstream-Service-Time: - - '20' - X-Frame-Options: - - sameorigin - X-Obvious-Info: - - 42755-064957c,064957ce014 - X-Obvious-Tid: - - 1603292913717:3854f96d2dc0 - X-Opentracing: - - '{"ot-tracer-spanid":"37d25c63166e0e0a","ot-tracer-traceid":"655beab9d20a825c","ot-tracer-sampled":"true"}' - X-Powered-By: - - Medium - X-Ua-Compatible: - - IE=edge, Chrome=1 - X-Xss-Protection: - - 1; mode=block - Strict-Transport-Security: - - max-age=15552000; includeSubDomains; preload - Cf-Cache-Status: - - DYNAMIC - Cf-Request-Id: - - 05ed4d77e00000fc8dbd869000000001 - Expect-Ct: - - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" - Server: - - cloudflare - Cf-Ray: - - 5e5be5063c93fc8d-FCO - Alt-Svc: - - h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400 - body: - encoding: ASCII-8BIT - string: !binary |- - PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48cnNzIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6Y29udGVudD0iaHR0cDovL3B1cmwub3JnL3Jzcy8xLjAvbW9kdWxlcy9jb250ZW50LyIgeG1sbnM6YXRvbT0iaHR0cDovL3d3dy53My5vcmcvMjAwNS9BdG9tIiB2ZXJzaW9uPSIyLjAiIHhtbG5zOmNjPSJodHRwOi8vY3liZXIubGF3LmhhcnZhcmQuZWR1L3Jzcy9jcmVhdGl2ZUNvbW1vbnNSc3NNb2R1bGUuaHRtbCI+CiAgICA8Y2hhbm5lbD4KICAgICAgICA8dGl0bGU+PCFbQ0RBVEFbU3RvcmllcyBieSBWYWlkZWhpIEpvc2hpIG9uIE1lZGl1bV1dPjwvdGl0bGU+CiAgICAgICAgPGRlc2NyaXB0aW9uPjwhW0NEQVRBW1N0b3JpZXMgYnkgVmFpZGVoaSBKb3NoaSBvbiBNZWRpdW1dXT48L2Rlc2NyaXB0aW9uPgogICAgICAgIDxsaW5rPmh0dHBzOi8vbWVkaXVtLmNvbS9AdmFpZGVoaWpvc2hpP3NvdXJjZT1yc3MtOGY1NTk5M2M5NzNlLS0tLS0tMjwvbGluaz4KICAgICAgICA8aW1hZ2U+CiAgICAgICAgICAgIDx1cmw+aHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9maXQvYy8xNTAvMTUwLzEqUU9RdVdBcVFkNTY2b0lUajlydENLdy5qcGVnPC91cmw+CiAgICAgICAgICAgIDx0aXRsZT5TdG9yaWVzIGJ5IFZhaWRlaGkgSm9zaGkgb24gTWVkaXVtPC90aXRsZT4KICAgICAgICAgICAgPGxpbms+aHR0cHM6Ly9tZWRpdW0uY29tL0B2YWlkZWhpam9zaGk/c291cmNlPXJzcy04ZjU1OTkzYzk3M2UtLS0tLS0yPC9saW5rPgogICAgICAgIDwvaW1hZ2U+CiAgICAgICAgPGdlbmVyYXRvcj5NZWRpdW08L2dlbmVyYXRvcj4KICAgICAgICA8bGFzdEJ1aWxkRGF0ZT5XZWQsIDIxIE9jdCAyMDIwIDE0OjU2OjU0IEdNVDwvbGFzdEJ1aWxkRGF0ZT4KICAgICAgICA8YXRvbTpsaW5rIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9mZWVkL0B2YWlkZWhpam9zaGkiIHJlbD0ic2VsZiIgdHlwZT0iYXBwbGljYXRpb24vcnNzK3htbCIvPgogICAgICAgIDx3ZWJNYXN0ZXI+PCFbQ0RBVEFbeW91cmZyaWVuZHNAbWVkaXVtLmNvbV1dPjwvd2ViTWFzdGVyPgogICAgICAgIDxhdG9tOmxpbmsgaHJlZj0iaHR0cDovL21lZGl1bS5zdXBlcmZlZWRyLmNvbSIgcmVsPSJodWIiLz4KICAgICAgICA8aXRlbT4KICAgICAgICAgICAgPHRpdGxlPjwhW0NEQVRBW09uIFRoaXJ0eV1dPjwvdGl0bGU+CiAgICAgICAgICAgIDxsaW5rPmh0dHBzOi8vbWVkaXVtLmNvbS9AdmFpZGVoaWpvc2hpL29uLXRoaXJ0eS1kYTJkMmUyMWE2YjI/c291cmNlPXJzcy04ZjU1OTkzYzk3M2UtLS0tLS0yPC9saW5rPgogICAgICAgICAgICA8Z3VpZCBpc1Blcm1hTGluaz0iZmFsc2UiPmh0dHBzOi8vbWVkaXVtLmNvbS9wL2RhMmQyZTIxYTZiMjwvZ3VpZD4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW3RoaXJ0eV1dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtiaXJ0aGRheV1dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtsaWZlLWxlc3NvbnNdXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8ZGM6Y3JlYXRvcj48IVtDREFUQVtWYWlkZWhpIEpvc2hpXV0+PC9kYzpjcmVhdG9yPgogICAgICAgICAgICA8cHViRGF0ZT5UaHUsIDE5IERlYyAyMDE5IDIwOjU0OjExIEdNVDwvcHViRGF0ZT4KICAgICAgICAgICAgPGF0b206dXBkYXRlZD4yMDE5LTEyLTE5VDIxOjA2OjUwLjU3MVo8L2F0b206dXBkYXRlZD4KICAgICAgICAgICAgPGNvbnRlbnQ6ZW5jb2RlZD48IVtDREFUQVs8cD5JIGFtIGZ1bGx5IGF3YXJlIHRoYXQgYmlydGhkYXlzIGFyZSBqdXN0IHJpdHVhbHMuIEZ1bmN0aW9uYWxseSwgdGhleSBkb27igJl0IHJlYWxseSBtZWFuIG11Y2ggYXQgdGhlIGVuZCBvZiB0aGUgZGF5OyB0aGV5IGp1c3QgaGFwcGVuIHRvIGJlIGVhc3kgZW5vdWdoIHRvIHVzZSB3aGVuIHdlIHdhbnQgdG8gcmVwcmVzZW50IG1pbGVzdG9uZXMgYW5kIGltcGFjdGZ1bCBldmVudHMuIEFuZCB5ZXQsIEkgPGVtPmxvdmU8L2VtPiB0aGVzZSByaXR1YWxzLiBUaGV5IGFyZSBhbiBvcHBvcnR1bml0eSB0byByZWZsZWN0IGFuZCBtZWRpdGF0ZSBvbiB3aGF0IGhhcyBhbHJlYWR5IHBhc3NlZOKAiuKAlOKAimFuZCBpbiBhIHdheSwgdGhleSBhbGxvdyB1cyB0byBmaW5kIHNvbWUgc3RpbGxuZXNzIGluIHByZXBhcmF0aW9uIGZvciB3aGF0IGlzIHRvwqBjb21lLjwvcD48cD5J4oCZbSB0dXJuaW5nIHRoaXJ0eSB0b21vcnJvdywgYW5kIEkgY2VydGFpbmx5IGRvbuKAmXQgZXhwZWN0IHRoYXQgSeKAmWxsIGZlZWwgbXVjaCBkaWZmZXJlbnQgdG9tb3Jyb3cgdGhhbiBJIGRvIHRvZGF5LiBCdXQgY3VtdWxhdGl2ZWx5LCBJIGZlZWwgbGlrZSBhIG11Y2ggZGlmZmVyZW50IHBlcnNvbiB0aGFuIEkgd2FzIHdoZW4gSSBzdGFydGVkIG15IHR3ZW50aWVzLiBJIGZlZWwgbXVjaCBtb3JlIGNvbmZpZGVudCwgc3VyZS1mb290ZWQsIGZpcm0sIGFuZCBncm91bmRlZC4gSXTigJlzIGhhcmQgZm9yIG1lIHRvIHBpbnBvaW50IGhvdyB0aGlzIHRyYW5zZm9ybWF0aW9uIGNhbWUgYWJvdXQ7IHRoZXJlIHdhcyBubyBzaW5nbGUgZXZlbnQgdGhhdCBwZXJwZXR1YXRlZCB0aGlzIGNoYW5nZS4gSW5zdGVhZCwgSSBoYXZlIHRvIGJlbGlldmUgdGhhdCBpdCBpcyB0aGUgc3VtIG9mIHRoZSBleHBlcmllbmNlcyBvdmVyIHRoZSBsYXN0IGRlY2FkZSBhbmQgd2hhdCBJIGxlYXJuZWQgZnJvbSB0aGVtIHRoYXQgaW5jcmVtZW50YWxseSBjaGFuZ2VkIHdobyBJwqBhbS48L3A+PHA+U28sIG9uIHRoZSBldmUgb2YgYSBuZXcgZGVjYWRl4oCK4oCU4oCKYW5kIGluIGtlZXBpbmcgd2l0aCBteSBsb3ZlIGZvciBzZWxmLXJlZmxlY3Rpb27igIrigJTigIpoZXJlIGFyZSB0aGlydHkgdGhpbmdzIHRoYXQgSeKAmXZlIGxlYXJuZWQgYmVmb3JlIHR1cm5pbmfCoHRoaXJ0eS48L3A+PGZpZ3VyZT48aW1nIGFsdD0iQSB3b21hbiBzdGFuZHMgb24gdGhlIHNpZGUgb2YgdGhlIHJvYWQgd2l0aCBzbm93IG5lYXJieSwgd2l0aCB0aGUgYnJhbmNoZXMgb2YgYW4gZXZlcmdyZWVuIHRyZWUgYWJvdmUgaGVyLiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqZ3RqVGRvSHV1WldKazZxWHlRRHZCdy5qcGVnIiAvPjwvZmlndXJlPjxvbD48bGk+PHN0cm9uZz5JZiBhIHJlbGF0aW9uc2hpcCBpcyBpbXBvcnRhbnQgdG8geW91LCBjYXJ2ZSBvdXQgdGhlIHRpbWUgZm9yIGl0Ljwvc3Ryb25nPiBJIHNwZW50IG15IHR3ZW50aWVzIG1vdmluZyBhcm91bmQgdGhlIGNvdW50cnkgYW5kIGFyb3VuZCB0aGUgd29ybGQuIEFsb25nIHRoZSB3YXksIEkgbWFkZSBhIGxvdCBvZiB2ZXJ5IGdvb2QsIGNsb3NlIGZyaWVuZHMsIGJ1dCBhbHNvIHJlYWxpemVkIHRoYXQgbWFpbnRhaW5pbmcgdGhvc2UgcmVsYXRpb25zaGlwcyBhcyBhIG1vdmVkIHRvb2sgYSBsb3Qgb2Ygd29yay4gSSBoYWQgdG8gd29yayBoYXJkIHRvIGtlZXAgdGhlIHJlbGF0aW9uc2hpcHMgdGhhdCBtZWFudCB0aGUgbW9zdCB0byBtZS4gSSBub3cgaGF2ZSBtb250aGx5IGNhbGxzIHdpdGggc29tZSBvZiBjbG9zZSBmcmllbmRzIG9uIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBjb3VudHJ5LCBhbmQgbWFrZSBhbiBlZmZvcnQgdG8gc2VlIGZyaWVuZHMgaW4gdGhlIHNhbWUgY2l0eSBhcyBtZSBvbiBhIHJlZ3VsYXIgYmFzaXMuIE15IGZhbWlseSBhbmQgSSBoYXZlIGEgZ3JvdXAgY2hhdCBhbmQgd2Ugc2NoZWR1bGUgZ3JvdXAgdmlkZW8gY2FsbHMgb2Z0ZW4uIExpZmUgaGFwcGVucyB0byBhbGwgb2YgdXMsIGJ1dCB3ZSBuZWVkIHRvIHByaW9yaXRpemUgdGhlIHBlb3BsZSB3ZSBjYXJlIGFib3V0IHRoZcKgbW9zdC48L2xpPjxsaT48c3Ryb25nPlNheSBuby48L3N0cm9uZz4gSXTigJlzIG9rYXkgdG8gcHV0IHlvdXIgZm9vdCBkb3duIHdoZW4geW91IGFyZW7igJl0IGNvbWZvcnRhYmxlIHdpdGggc29tZXRoaW5nLCBvciB3aGVuIHlvdeKAmXJlIG5vdCBjYXBhYmxlIG9mIG1lZXRpbmcgc29tZW9uZeKAmXMgZXhwZWN0YXRpb25zIG9yIGRlc2lyZXMuIEl0IHRvb2sgbWUgYSBsb25nIHRpbWUgdG8gPGVtPnJlYWxseTwvZW0+IGxlYXJuIHRoaXMgYW5kIHByYWN0aWNlIGl0LiBCdXQsIHdoZW5ldmVyIEkgc2F5IG5vIHRvIHNvbWV0aGluZywgSSBhbHdheXMgb2ZmZXIgYSBjb3VudGVyIG9wdGlvbiB3aGVuZXZlciBpbiBvcmRlciB0byBtYWtlIGl0IGVhc2llciBmb3Igc29tZW9uZSB0byBtZWV0IG1lIGhhbGZ3YXkuIEFzIGl0IHR1cm5zIG91dCwgZXZlcnl0aGluZyBpbiBsaWZlIGlzIGEgbmVnb3RpYXRpb24hPC9saT48bGk+PHN0cm9uZz5CdXkgdGhlIHJlYWxseSBnb29kIG9saXZlIG9pbC48L3N0cm9uZz4gQWx0aG91Z2ggSSB0aGluayB0aGF0IHRoaXMgYXBwbGllcyB0byBhbGwgZm9vZCwgcmVhbGx5LiBJIHdpbGwgYWx3YXlzIGJ1eSB0aGUgaGlnaC1xdWFsaXR5IGluZ3JlZGllbnRzLCBldmVuIGlmIGl0IG1lYW5zIHNwZW5kaW5nIGEgYml0IG1vcmUgbW9uZXkuIEkgY2FuIHRhc3RlIHRoZSBkaWZmZXJlbmNlLCBhbmQgSSBhbHdheXMgcmVhZCB0aGUgaW5ncmVkaWVudHMgbGlzdCBiZWZvcmUgYnV5aW5nIHNvbWV0aGluZy4gSeKAmXZlIG5vdGljZWQgdGhhdCB0aGUgY2hlYXBlciB0aGUgaXRlbSwgdXN1YWxseSB0aGUgbW9yZSBwcm9jZXNzZWQgYW5kIGZ1bGwgb2YgcHJlc2VydmF0aXZlcyBpdCBpcy4gQW5kIEnigJlkIHJhdGhlciBzcGVuZCBhIGxpdHRsZSBleHRyYSBtb25leSBhbmQga25vdyBleGFjdGx5IHdoYXTigJlzIGdvaW5nIGludG8gbXkgYm9keSBpbnN0ZWFkIG9mIHNhdmluZyBhIGZldyBkb2xsYXJzIGFuZCBjb25zdW1pbmcgYSBtdWx0aS1zeWxsYWJsZSBjaGVtaWNhbC48L2xpPjxsaT48c3Ryb25nPkFjY2VwdCB0aGUgZmFjdCB0aGF0IHlvdSBjYW7igJl0IHBsZWFzZSBldmVyeW9uZS48L3N0cm9uZz4gSWYgeW91IHNwZW5kIHlvdXIgd2hvbGUgbGlmZSB0cnlpbmcgdG8gbWFrZSBvdGhlciBwZW9wbGUgaGFwcHksIG5vdCBvbmx5IHdpbGwgeW91IGZhaWwgYXQgdGhhdCAoYmVjYXVzZSBzb21lb25lIGlzIDxlbT5hbHdheXM8L2VtPiBnb2luZyB0byB0YWtlIGlzc3VlIHdpdGggeW91KSwgYnV0IHlvdeKAmWxsIGFsc28gYmUgbWlzZXJhYmxlLiBJdOKAmXMgbm90IHdvcnRoIGl0LiBEZWNpZGUgd2hhdCBpcyBpbXBvcnRhbnQgdG8geW91IGFuZCB3aGF0IGNob2ljZXMgbWFrZSB5b3UgaGFwcHksIGFuZCBpZ25vcmUgdGhlIHJlc3Qgb2YgdGhlIG5vaXNlIGFuZCBvcGluaW9ucy48L2xpPjxsaT48c3Ryb25nPkRvbuKAmXQgcmVhZCB0aGUgY29tbWVudHMuPC9zdHJvbmc+IEkgY29uc3RhbnRseSBzdHJ1Z2dsZSB3aXRoIHRoaXMgb25lIGJlY2F1c2UgcGFydCBvZiBtZSBzdGlsbCB0aGlua3Mgb2YgdGhlIGNvbW1lbnRzIGFzIGZlZWRiYWNrLiBCdXQgcGVvcGxlIHdpbGwgYWx3YXlzIGhhdmUgb3BpbmlvbnMgYW5kIGFuIChhbm9ueW1vdXMpIG9waW5pb24gaXMgd2F5IGVhc2llciB0byBwdXQgb3V0IGludG8gdGhlIHdvcmxkIHRoYW4gY3JlYXRpdmXCoGNvbnRlbnQuPC9saT48bGk+PHN0cm9uZz5BZHZvY2F0ZSBmb3IgeW91cnNlbGYuPC9zdHJvbmc+IE5vIG9uZSBlbHNlIGNhbiBhZHZvY2F0ZSBmb3IgeW91IGJldHRlciB0aGFuIHlvdSBjYW4uIEFuZCBob25lc3RseSwgbm8gb25lIGVsc2UgcHJvYmFibHkgd2lsbC4gQXNrIGZvciB3aGF0IHlvdSB3YW50LCBhbmQga25vdyB5b3VyIHdvcnRoLiBJdOKAmXMgbm90IGFycm9nYW5jZSB0byBrbm93IHlvdXIgdmFsdWUgYW5kIHBvaW50IGl0IG91dCB0byBvdGhlcnMuIFRoZSBzb29uZXIgeW91IGJlY29tZSBjb21mb3J0YWJsZSBkb2luZyBpdCwgdGhlIGJldHRlciBvZmYgeW914oCZbGzCoGJlLjwvbGk+PGxpPjxzdHJvbmc+RG9u4oCZdCBjYXJyeSBhcm91bmQgZ3VpbHQuPC9zdHJvbmc+IE5vbmUgb2YgdXMgYXJlIHBlcmZlY3QgYW5kIHdlIGRvIHRoZSBiZXN0IHRoYXQgd2UgY2FuLiBBcyBsb25nIGFzIHlvdSBjYW4gbG9vayB5b3Vyc2VsZiBpbiB0aGUgbWlycm9yIGFuZCBrbm93IHRoYXQgeW91IGRpZCBhbGwgdGhhdCB5b3UsIGNvdWxkIGdpdmVuIHdoYXQgeW91IGtuZXcgYXQgdGhlIHRpbWUsIHRoZW4gdGhhdOKAmXMgcmVhbGx5IHRoZSBiZXN0IHRoYXQgYW55b25lIGNvdWxkIGhvcGXCoGZvci48L2xpPjxsaT48c3Ryb25nPkFjY2VwdCB0aGUgc2NhcnMgeW91IGNhcnJ5Ljwvc3Ryb25nPiBJ4oCZdmUgbGVhcm5lZCB0aGF0IHRyYXVtYSBkb2VzbuKAmXQgcmVhbGx5IGdvIGF3YXksIGJ1dCBpdCBjaGFuZ2VzIHNoYXBlcyBhbmQgZm9ybXMuIEkgc3RpbGwgZ2V0IHRyaWdnZXJlZCBzb21ldGltZXMsIHdoaWNoIGNhbiBiZSBhIHNoYXJwIHJlbWluZGVyIHRoYXQgSSB3aWxsIGNhcnJ5IHBhaW5mdWwgZXhwZXJpZW5jZXMgd2l0aCBtZSB3aGVyZXZlciBJIGdvLiBJ4oCZdmUgcmVhbGl6ZWQgdGhhdCB0aGlzIGlzIG9rLCBiZWNhdXNlIHRoZSBleHBlcmllbmNlIGFuZCB5b3VyIG1lbW9yeSBvZiBpdCBjaGFuZ2Ugb3ZlciB0aW1lLCBhbmQgdGhleSBtYWtlIHlvdSBtdWNoIHN0cm9uZ2VyIGF0IHRoZSBlbmQgb2YgdGhlwqBkYXkuPC9saT48bGk+PHN0cm9uZz5QYXkgaXQgZm9yd2FyZC48L3N0cm9uZz4gWW91IHdpbGwgbmV2ZXIgYmUgYWJsZSB0byByZXBheSBvdGhlcnMgZm9yIHRoZWlyIGtpbmRuZXNzLCBzdXBwb3J0LCBvciBmb3IgaGVscGluZyB5b3Ugd2hlbiB5b3UgcmVhbGx5IG5lZWRlZCBpdC4gQWxsIHlvdSBjYW4gZG8gaXMgcGF5IGl0IGZvcndhcmQgdG8gdGhlIG5leHTCoHBlcnNvbi48L2xpPjxsaT48c3Ryb25nPkdvIG9uIHNlbGYtZGF0ZXMuPC9zdHJvbmc+IFRoaXMgaXMgb25lIG9mIG15IGZhdm9yaXRlIHJpdHVhbHMsIGFuZCBJIGZpcm1seSBiZWxpZXZlIHRoYXQgZXZlcnlvbmUgc2hvdWxkIGxlYXJuIHRvIHNwZW5kIHRpbWUgd2l0aCB0aGVtc2VsdmVzLiBJIGxvdmUgdG8gZ28gdG8gZWFybHkgU3VuZGF5IG1vcm5pbmcgbW92aWVzIHdoZW4gbm8gb25lIGVsc2UgaXMgYXJvdW5kLiBJIHRoaW5rIHRoYXQgdGhpcyBwcmFjdGljZSBtYWtlcyB5b3UgbW9yZSBjb25maWRlbnQgYW5kIHNlbGYtYXdhcmUuPC9saT48bGk+PHN0cm9uZz5Vc2UgYSBjYWxlbmRhci48L3N0cm9uZz4gTXkgY2xvc2UgZnJpZW5kcyBrbm93IHRoYXQgSSBzd2VhciBieSBhIGNhbGVuZGFyLiBJdOKAmXMgdGhlIG9ubHkgd2F5IHRoYXQgSSBjYW4gbWFuYWdlIG9yZGVyIGluIG15IGxpZmUgd2l0aG91dCBnZXR0aW5nIG92ZXJ3aGVsbWVkLjwvbGk+PGxpPjxzdHJvbmc+TmV2ZXIgY29tcGFyZSB5b3Vyc2VsZiB0byBvdGhlcnMuPC9zdHJvbmc+IFRoaXMgaXMgc29tZXRoaW5nIEnigJl2ZSByZWFsbHkgc3RhcnRlZCB0byBtYXN0ZXIgaW4gdGhlIHBhc3QgZmV3IHllYXJzLCBidXQgdW50aWwgdGhlbiwgSSByZWFsbHkgc3RydWdnbGVkIHdpdGggaXQuIEFsbCBvZiB1cyBhcmUgd2Fsa2luZyBkaWZmZXJlbnQgcGF0aHMsIHNvIGl04oCZcyBzaWxseSB0byBsb29rIGF0IHNvbWVvbmUgZWxzZSBhbmQgdGhlaXIgcGF0aCBhbmQgd29uZGVyIHdoeSB5b3XigJlyZSBub3QgZG9pbmcgdGhlIHNhbWUgdGhpbmdzIHRoYXQgdGhleSBhcmUhIEFub3RoZXIgdGhpbmcgd29ydGggbWVudGlvbmluZyBpcyB0aGF0IGV2ZW4gaWYgPGVtPnlvdTwvZW0+IGRvbuKAmXQgY29tcGFyZSB5b3Vyc2VsZiB0byBvdGhlcnMsIG90aGVyIHBlb3BsZSB3aWxsIHByb2JhYmx5IHN0aWxsIGNvbXBhcmUgdGhlbXNlbHZlcyB0byB5b3UuIEFuZCB0aGF04oCZcyBzb21ldGhpbmcgeW91IGp1c3QgY2Fu4oCZdCBjb250cm9sLCBzbyBzdGF5IGZvY3VzZWQgb24gdGhlIHBhdGggdGhhdCB5b3XigJlyZSB3YWxraW5nIG9uLCBldmVuIGlmIHRoZXnigJlyZSBsb29raW5nIG92ZXIgYXTCoHlvdS48L2xpPjxsaT48c3Ryb25nPkJlIGtpbmQgdG8geW91cnNlbGYuIDwvc3Ryb25nPllvdSBhcmUgeW91ciBoYXJzaGVzdCBjcml0aWMuIEkgdXNlZCB0byBiZSBzbyB1bmtpbmQgdG8gbXlzZWxmIGFuZCBwdXQgbXlzZWxmIHRocm91Z2ggdGhlIHdyaW5nZXIgYWJvdXQgbXkgd2VpZ2h0LCBteSBib2R5LCBteSBhY2NvbXBsaXNobWVudHMsIGFuZCBteSBmYWlsdXJlcy4gQnV0IHRoZSB3YXkgdGhhdCB5b3UgdGFsayBhYm91dCB5b3Vyc2VsZiBpcyBob3cgeW91IHNob3cgYW5kIHRlYWNoIG90aGVyIHBlb3BsZSBob3cgdG8gdGFsayB0byB5b3UuIElmIHlvdSBhcmUgc2VsZi1kZXByZWNhdGluZyBvciB1bmtpbmQgdG8geW91cnNlbGYsIHRoZW4gb3RoZXIgcGVvcGxlIHdpbGwgbGVhcm4gdG8gcHV0IHlvdSBkb3duIGFuZCBiZSB1bmtpbmQgdG8geW91LMKgdG9vLjwvbGk+PGxpPjxzdHJvbmc+VGFrZSByaXNrcy48L3N0cm9uZz4gSWYgeW914oCZcmUgc2NhcmVkIG9mIHRyeWluZyBzb21ldGhpbmcsIHJlbWVtYmVyIHRoYXQgdGhlIHdvcnN0IHRoaW5nIHRoYXQgeW91IDxlbT50aGluazwvZW0+IHdpbGwgaGFwcGVuIGlzIHVzdWFsbHkgbmV2ZXIgdGhhdMKgYmFkLjwvbGk+PGxpPjxzdHJvbmc+RHJpbmsgbW9yZSB0ZWEuPC9zdHJvbmc+IEhlcmJhbCB0ZWFzIGJlZm9yZSBiZWQgYXJlIHNvIGNhbG1pbmcgYW5kIGNsZWFuc2luZyEgSeKAmXZlIGFsc28gc3RhcnRlZCBzd2l0Y2hpbmcgb3V0IG15IGFmdGVybm9vbiBjb2ZmZWUgd2l0aCB0ZWEgaW5zdGVhZCwgYW5kIG15IHNsZWVwIGlzIHNvIG11Y2ggYmV0dGVyIGFuZCBJIGFtIG11Y2ggbGVzcyBkZWh5ZHJhdGVkLjwvbGk+PGxpPjxzdHJvbmc+U2F5IOKAnEkgbG92ZSB5b3XigJ0gbW9yZS48L3N0cm9uZz4gTGlmZSBpcyBzaG9ydC4gRXZlbiBpZiB5b3Uga25vdyBpdCBjZXJlYnJhbGx5LCB0aGlzIHJlYWxpdHkgYmVjb21lcyBtb3JlIGFuZCBtb3JlIHJlYWwgYXMgeW91IGdldMKgb2xkZXIuPC9saT48bGk+PHN0cm9uZz5Eb27igJl0IHRha2UgdGhpbmdzIHBlcnNvbmFsbHkuPC9zdHJvbmc+IFBlb3BsZSBhcm91bmQgeW91IGNhbiBoYXZlIGJhZCBkYXlzLiBJ4oCZdmUgaGFkIHRvIGRlYWwgd2l0aCBibHVudCwgaGFyc2gsIGFuZCBpbnNlY3VyZSBjb3dvcmtlcnMgYW5kIGJvc3NlcywgYW5kIHF1aWNrbHkgcmVhbGl6ZWQgdGhhdCBpZiBJIHRvb2sgZXZlcnl0aGluZyB0aGF0IHRoZXkgc2FpZCB0byBtZSBwZXJzb25hbGx5LCBJ4oCZZCBiZSBjcnlpbmcgaW4gdGhlIG9mZmljZSBiYXRocm9vbSBldmVyeSBvdGhlciB3ZWVrICh3aGljaCBJIGRpZCBkbyBlYXJseSBvbikuIEnigJl2ZSBzaW5jZSBsZWFybmVkIHRvIGxldCB3aGF0IG90aGVycyBzYXkgYm91bmNlIG9mZiBtZSBhbmQgYmFjayB0byB0aGVtLiBBc3N1bWUgdGhhdCBwZW9wbGUgYXJlIGhhdmluZyBhIGJhZCBkYXkgYW5kLCBpZiBuZWNlc3NhcnksIHN0aWNrIHVwIGZvciB5b3Vyc2VsZiBhbmQgc3BlYWsgYmFjay4gQnV0IGRvbuKAmXQgY2FycnkgdGhlaXIgd29yZHMgYXJvdW5kIHdpdGggeW91IGZvciBob3VycyBvciB3ZWVrcyBvbiBlbmQ7IGl0IHdpbGwgZWF0IHlvdSBhbGl2ZSBhbmQgeW914oCZbGwgYmUgdGhlIG9uZSB0byBzdWZmZXIsIG5vdMKgdGhlbS48L2xpPjxsaT48c3Ryb25nPlRha2UgeW91ciBwYXJlbnRzIG91dCB0byBkaW5uZXIuPC9zdHJvbmc+IEFuZCBpZiB5b3UgY2Fu4oCZdCBhZmZvcmQgdG8sIGNvb2sgdGhlbSBhIG5pY2UgbWVhbCEgV2UgY2Fu4oCZdCBldmVyIHJlcGF5IHRoZSBwZW9wbGUgd2hvIGd1aWRlZCB1cyBlYXJseSBvbiBpbiBsaWZlLCBidXQgd2UgY2FuIGF0IGxlYXN0IHNob3cgdGhlbSBvdXIgYXBwcmVjaWF0aW9uLjwvbGk+PGxpPjxzdHJvbmc+SGF2ZSBib3VuZGFyaWVzIChhbmQgc3RpY2sgdG8gdGhlbSkuIDwvc3Ryb25nPlRoaXMgaXMgaW1wb3J0YW50IHdoZW4geW914oCZcmUgd29ya2luZyB3aXRoIG90aGVyIHBlb3BsZSwgYnV0IGFsc28gd2hlbiBpdCBjb21lcyB0byBkb2luZyB0aGluZ3Mgb24geW91ciBvd24uIEkgaGF2ZSBydWxlcyBhYm91dCBob3cgSSB3YW50IHRvIGNvbmR1Y3QgbXlzZWxmIG9yIGhhbmRsZSBzaXR1YXRpb25zLCBhbmQgSeKAmW0gbGVhcm5pbmcgaG93IHRvIGRyYXcgbGluZXMgaW4gdGhlIHNhbmQgYW5kIG5vdCBjcm9zcyB0aG9zZSBib3VuZGFyaWVzIHdpdGggbXlzZWxmLCBvciB3aXRowqBvdGhlcnMuPC9saT48bGk+PHN0cm9uZz5Qcmlvcml0aXplIHlvdXIgZmluYW5jaWFsIGhlYWx0aC4gPC9zdHJvbmc+SeKAmW0gcmVhbGx5IHByb3VkIG9mIGhvdyBtdWNoIEnigJl2ZSBsZWFybmVkIGFib3V0IGZpbmFuY2lhbCBzdGFiaWxpdHkgYW5kIGhlYWx0aCBpbiB0aGUgbGFzdCBkZWNhZGUsIGFuZCBJIGhvbmVzdGx5IHRoaW5rIHRoYXQgdGFraW5nIGNvbnRyb2wgb2YgdGhhdCBhc3BlY3Qgb2YgeW91ciBsaWZlIGlzIGluY3JlZGlibHkgZW1wb3dlcmluZy4gWW91IHNob3VsZCBrbm93IHdoZXJlIHlvdXIgbW9uZXkgaXMsIHdoZXJlIGl04oCZcyBnb2luZywgYW5kIGhvdyB3ZWxsIGl0cyBncm93aW5nLCBhY3RpdmVseSBhbmQgcGFzc2l2ZWx5LiBXZSBkb27igJl0IHRhbGsgYWJvdXQgZmluYW5jaWFsIHRoaW5ncyB0aGF0IG9mdGVuLCBidXQgSSB0aGluayB3ZSBzaG91bGQgYmUhIFRoZXJl4oCZcyBzbyBtdWNoIG1vcmUgSSBzdGlsbCBoYXZlIHRvIGxlYXJuIGJ1dCBJIGZlZWwgbGlrZSBJ4oCZdmUgb25seSBnb3R0ZW4gYmV0dGVyIGF0IGl0IG92ZXLCoHRpbWUuPC9saT48bGk+PHN0cm9uZz5WaXRhbWlucyBhcmUgZ29vZC48L3N0cm9uZz4gSSB0YWtlIGEgZmV3IGRpZmZlcmVudCB2aXRhbWlucywgaW5jbHVkaW5nIHByb2Jpb3RpY3MsIHZpdGFtaW4gZCwgYW5kIG1hZ25lc2l1bSEgSSBhbHdheXMgZmVlbCBzbyBtdWNoIGJldHRlciB3aGVuIEkgdGFrZSB0aGVtIGNvbnNpc3RlbnRseSwgYW5kIGZlZWwgbXVjaCB3b3JzZSB3aGVuIEkgc2tpcCBhIGZldyBkYXlzIGluIGHCoHJvdy48L2xpPjxsaT48c3Ryb25nPkxldCBvdGhlciBwZW9wbGUga25vdyB0aGF0IHlvdSBhcmUgdGhlcmUgZm9yIHRoZW0uPC9zdHJvbmc+IEkgaGF2ZSBhIGZldyBjbG9zZSBwZW9wbGUgaW4gbXkgbGlmZSB0aGF0IEkga25vdyBJIGNvdWxkIGNhbGwsIGRheSBvciBuaWdodCwgcmFpbiBvciBzaGluZS4gQW5kIGZvciBhIGhhbmRmdWwgb2YgcGVvcGxlLCBJIGFtIHByZXR0eSBzdXJlIHRoYXQgSSBhbSB0aGF0IHBlcnNvbiBmb3IgdGhlbS4gVGhlIG9ubHkgcmVhc29uIEkga25vdyB0aGF0IGlzIGJlY2F1c2UgdGhleSBoYXZlIHRvbGQgbWXigIrigJTigIphbmQgc2hvd24gbWUgd2l0aCB0aGVpciBhY3Rpb25z4oCK4oCU4oCKdGhhdCBJIGNhbiBhbHdheXMgZGVwZW5kIG9uIHRoZW0uIFRlbGwgdGhlIHBlb3BsZSB5b3UgY2FyZSBhYm91dCB0aGF0IHlvdSBhcmUgdGhlcmUgYmVjYXVzZSB5b3UgbmV2ZXIga25vdyB3aGVuIHlvdSBib3RoIG1pZ2h0IG5lZWQgZWFjaMKgb3RoZXIuPC9saT48bGk+PHN0cm9uZz5TcGVuZCB0aW1lIGF3YXkgZnJvbSB5b3VyIHBob25lLjwvc3Ryb25nPiBJIGRvbuKAmXQgY2hlY2sgbXkgcGhvbmUgZHVyaW5nIG1lYWx0aW1lcyBhbnltb3JlLCBhbmQgSSB0cnkgdG8gc3BlbmQgbG9uZyBzdHJldGNoZXMgb2YgdGltZSAob3IgYSBkYXkpIHdpdGhvdXQgbG9va2luZyBhdCBvciBjaGVja2luZyBpdC4gSSBhbHNvIHRoaW5rIGl0cyB2YWx1YWJsZSB0byB0YWtlIHRyaXBzIHRoYXQgZm9yY2UgeW91IHRvIGhhdmUgbm8gY2VsbCBzZXJ2aWNlIHNvIHRoYXQgeW91IGNhbiA8ZW0+dHJ1bHk8L2VtPiB1bnBsdWc7IEkgdHJ5IHRvIGRvIHRoaXMgb25jZSBhwqB5ZWFyLjwvbGk+PGxpPjxzdHJvbmc+RHJpbmsgbW9yZSB3YXRlci48L3N0cm9uZz4gSeKAmXZlIGhlYXJkIHBlb3BsZSBnaXZlIHRoaXMgYWR2aWNlIGFsbCB0aGUgdGltZSwgYnV0IEkgYWN0dWFsbHkgZmVlbCA8ZW0+c28gbXVjaCBiZXR0ZXIgPC9lbT53aGVuIEnigJltIHdlbGwgaHlkcmF0ZWQgKGVzcGVjaWFsbHkgaWYgSeKAmXZlIGJlZW4gZHJpbmtpbmcgZGVoeWRyYXRpbmcgdGhpbmdzIGxpa2UgYWxjb2hvbCBvciBjb2ZmZWUpLiBJIGRvbuKAmXQgdXN1YWxseSBkcmluayBlbm91Z2ggd2F0ZXIgd2hlbiBJ4oCZbSB0cmF2ZWxpbmcgdGhvdWdoLCBhbmQgSeKAmW0gdHJ5aW5nIHRvIGJlIGJldHRlciBhYm91dMKgdGhhdC48L2xpPjxsaT48c3Ryb25nPlRyeSBub3QgdG8gd2FzdGUgYW55dGhpbmcsIGFuZCB0cnkgdG8gcmV1c2UgZXZlcnl0aGluZy48L3N0cm9uZz4gSeKAmXZlIGxlYXJuZWQgc28gbXVjaCBhYm91dCB0aGlzIGZyb20gbXkgcGFydG5lci4gV2l0aCBhIGZldyByYXJlIGV4Y2VwdGlvbnMsIHdlIGVhdCBldmVyeXRoaW5nIHRoYXQgd2UgYnV5LCBjb21wb3N0IHdoYXQgd2UgZG9u4oCZdCwgYW5kIG1vc3RseSBvbmx5IGJ1eSB0aGluZ3MgdGhhdCBjYW4gYmUgcmV1c2VkIG9yIHJlc3BvbnNpYmx5IHJlY3ljbGVkLiBJIGtub3cgSSBjb3VsZCBzdGlsbCBkbyBtb3JlLCBidXQgaXQgZmVlbHMgZ29vZCB0byBiZSBoZWFkaW5nIGluIHRoZSByaWdodCBkaXJlY3Rpb24gd2hlbiBpdCBjb21lcyB0byBzdXN0YWluYWJpbGl0eS48L2xpPjxsaT48c3Ryb25nPlN0YWJsZSByZWxhdGlvbnNoaXBzIGFyZSBtb3JlIGRlcGVuZGFibGUgdGhhbiBwYXNzaW9uYXRlIG9uZXMuPC9zdHJvbmc+IEkgbGVhcm5lZCB0aGlzIHRoZSBoYXJkIHdheSwgYnV0IEnigJltIHJlYWxseSBnbGFkIHRoYXQgSSBkaWQuIEluIHRoZSBsb25nIHJ1biwgYSBwZXJzb24gdGhhdCB5b3UgY2FuIGNvbWUgaG9tZSB0bywgbGVhbiBvbiwgYW5kIGJ1aWxkIGEgc3Ryb25nIGZvdW5kYXRpb24gd2l0aCBpcyBtdWNoIGhlYWx0aGllciBhbmQgd2lsbCBtYWtlIHlvdSBtdWNoIGhhcHBpZXIgdGhhbiBvbmUgdGhhdCBpcyB2b2xhdGlsZSBlbW90aW9uYWwgcm9sbGVyY29hc3Rlci48L2xpPjxsaT48c3Ryb25nPkl04oCZcyBva2F5IHRvIGxldCBwZW9wbGUgZ28uIDwvc3Ryb25nPldoaWxlIEkgaGF2ZSBzb21lIHBlb3BsZSB3aG8gSSBrbm93IHdpbGwgYmUgaW4gbXkgbGlmZSBmb3IgYSBsb25nIHRpbWUsIG1vc3Qgb2YgbXkgZnJpZW5kc2hpcHMgaGF2ZSBxdWlldGx5IGZhZGVk4oCK4oCU4oCKYW5kIHRoYXTigJlzIG9rLiBQZW9wbGUgYXJlIGFsd2F5cyBjaGFuZ2luZywgYW5kIHdlIGNhbiBncm93IGluIGRpZmZlcmVudCBkaXJlY3Rpb25zLiBUaG9zZSByZWxhdGlvbnNoaXBzIGFyZSBpbmV2aXRhYmx5IGdvaW5nIHRvIGNoYW5nZSBhcyBhIHJlc3VsdCwgYW5kIGl04oCZcyB0b3RhbGx5wqBub3JtYWwuPC9saT48bGk+PHN0cm9uZz5OZXZlciBzYWNyaWZpY2UgeW91ciBjcmVhdGl2ZSB0aW1lIG9yIHNwYWNlLjwvc3Ryb25nPiBJZiB5b3UgYXJlIHNvbWVvbmUgd2hvIGlzIGFydGlzdGljIG9yIGNyZWF0aXZlLCBmaWd1cmUgb3V0IHdoYXQgeW91IG5lZWQgdG8gYmUgY3JlYXRpdmUgYW5kIG1ha2Ugc3VyZSB5b3Ugc2FjcmlmaWNlIHRoYXQgZm9yIGFueXRoaW5nIG9yIGFueW9uZS4gRm9yIG1lLCBJIG5lZWQgcXVpZXQsIHVuaW50ZXJydXB0ZWQgaG91cnMgaW4gdGhlIG1vcm5pbmcgdG8gd3JpdGUsIGFuZCBJIGRvbuKAmXQgbGV0IGFueXRoaW5nIGdldCBpbiB0aGUgd2F5IG9mIG1lIGZpbmRpbmcgdGhvc2UgaG91cnMgb2YgY3JlYXRpdml0eS48L2xpPjxsaT48c3Ryb25nPkludmVzdCBpbiB5b3VyIGhlYWx0aC48L3N0cm9uZz4gVGFrZSBjYXJlIG9mIHlvdXJzZWxmIGVhcmx5IG9uLCBiZWZvcmUgeW91ciBkb2N0b3IgdGVsbHMgeW91IHRoYXQgeW91IHNob3VsZDsgZWF0IHdlbGwsIGV4ZXJjaXNlIG9mdGVuLCBhbmQgbWl0aWdhdGUgdGhlIHN0cmVzcyBhbmQgYW54aWV0eSBhcm91bmQgeW91LiBUaGUgb25lIHRoaW5nIHRoYXQgbm9uZSBvZiB1cyBjYW4gZWFybiBvciBidXkgb3Igd2luIG91ciB3YXkgaW50byBpcyBtb3JlwqB0aW1lLjwvbGk+PGxpPjxzdHJvbmc+VGFrZSB0aGluZ3MgYXMgdGhleSBjb21lLjwvc3Ryb25nPiBJdOKAmXMgcmVhbGx5IGVhc3kgdG8gZ2V0IGNhdWdodCB1cCBpbiBwbGFubmluZyBmb3Igb3IgZGF5ZHJlYW1pbmcgYWJvdXQgdGhlIGZ1dHVyZS4gRm9yIG1lLCBzb21ldGltZXMgdGhhdCB0cmFuc2xhdGVzIGludG8gcGFuaWNraW5nIG9yIGhhdmluZyBhbnhpZXR5IGFib3V0IGEgZnV0dXJlIHRoYXQgaGFzbuKAmXQgaGFwcGVuZWQgeWV04oCK4oCU4oCKYSBjb21wbGV0ZSBoeXBvdGhldGljYWwuIEkgaGF2ZSB0byByZW1pbmQgbXlzZWxmIHRoYXQgc28gbXVjaCBvZiB0aGUgd29ybGQgaXMgbm90IGluIG15IGNvbnRyb2w7IGluIGZhY3QgYWxsIG9mIGl0IGlzIG91dCBvZiBteSBjb250cm9sIGV4Y2VwdCBmb3IgbXlzZWxmLiBBbGwgYW55IG9mIHVzIGNhbiBkbyBpcyBjb250cm9sIG91ciBvd24gYWN0aW9ucyBpbiB0aGUgbW9tZW50IGFuZCBvdXIgb3duIHBlcnNwZWN0aXZlIG9uIHRoaW5ncy4gSeKAmW0gbGVhcm5pbmcgZm9jdXMgb24gd2hhdCBpcyBoYXBwZW5pbmcgPGVtPm5vdzwvZW0+IGFuZCB0ZWFjaGluZyBteXNlbGYgdG8gYnJpbmcgbXkgbWluZCBiYWNrIHRvIHRoZSBwcmVzZW50LiBBbmQgSeKAmW0gdHJ5aW5nIHRvIGhhdmUgZmFpdGggdGhhdCwgd2hlbiBhbnkgc2l0dWF0aW9uIGFyaXNlcywgSeKAmWxsIGhhdmUgdGhlIGNvbmZpZGVuY2UgYW5kIHRoZSBhYmlsaXR5IHRvIGNyb3NzIHRoYXQgYnJpZGdlIHdoZW4gSSBjb21lIHRvwqBpdC48L2xpPjwvb2w+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSo1SElBd1lvUDljTS1MNmxHMmFmM2p3LmpwZWciIC8+PC9maWd1cmU+PGltZyBzcmM9Imh0dHBzOi8vbWVkaXVtLmNvbS9fL3N0YXQ/ZXZlbnQ9cG9zdC5jbGllbnRWaWV3ZWQmcmVmZXJyZXJTb3VyY2U9ZnVsbF9yc3MmcG9zdElkPWRhMmQyZTIxYTZiMiIgd2lkdGg9IjEiIGhlaWdodD0iMSIgYWx0PSIiPl1dPjwvY29udGVudDplbmNvZGVkPgogICAgICAgIDwvaXRlbT4KICAgICAgICA8aXRlbT4KICAgICAgICAgICAgPHRpdGxlPjwhW0NEQVRBW0xvZ2ljYWwgVGltZSBhbmQgTGFtcG9ydCBDbG9ja3MgKFBhcnQgMildXT48L3RpdGxlPgogICAgICAgICAgICA8bGluaz5odHRwczovL21lZGl1bS5jb20vYmFzZWRzL2xvZ2ljYWwtdGltZS1hbmQtbGFtcG9ydC1jbG9ja3MtcGFydC0yLTI3MmMwOTdkY2RkYT9zb3VyY2U9cnNzLThmNTU5OTNjOTczZS0tLS0tLTI8L2xpbms+CiAgICAgICAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0cHM6Ly9tZWRpdW0uY29tL3AvMjcyYzA5N2RjZGRhPC9ndWlkPgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbY29kZV1dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtjb21wdXRlci1zY2llbmNlXV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW3NvZnR3YXJlLWRldmVsb3BtZW50XV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW2Rpc3RyaWJ1dGVkLXN5c3RlbXNdXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbcHJvZ3JhbW1pbmddXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8ZGM6Y3JlYXRvcj48IVtDREFUQVtWYWlkZWhpIEpvc2hpXV0+PC9kYzpjcmVhdG9yPgogICAgICAgICAgICA8cHViRGF0ZT5UaHUsIDA1IERlYyAyMDE5IDA1OjE2OjM1IEdNVDwvcHViRGF0ZT4KICAgICAgICAgICAgPGF0b206dXBkYXRlZD4yMDE5LTEyLTA1VDA1OjE2OjM1Ljg1NFo8L2F0b206dXBkYXRlZD4KICAgICAgICAgICAgPGNvbnRlbnQ6ZW5jb2RlZD48IVtDREFUQVs8ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKkdLSWk0cnROSkZ0VGZnMFZ2M1JuZ0EuanBlZyIgLz48ZmlnY2FwdGlvbj5Mb2dpY2FsIHRpbWUgYW5kIExhbXBvcnQgY2xvY2tzIChwYXJ0wqAyKTwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5UaHJvdWdob3V0IHRoZSBjb3Vyc2Ugb2YgdGhpcyBzZXJpZXMsIHdl4oCZdmUgYmVlbiBsZWFybmluZyB0aW1lIGFuZCBhZ2FpbiB0aGF0IGRpc3RyaWJ1dGVkIHN5c3RlbXMgYXJlIDxlbT5oYXJkPC9lbT4uIFdoZW4gZmFjZWQgd2l0aCBoYXJkIHByb2JsZW1zLCB3aGF04oCZcyBvbmUgZG8gdG8/IFdlbGwsIGFzIHdlIGxlYXJuZWQgaW4gPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9sb2dpY2FsLXRpbWUtYW5kLWxhbXBvcnQtY2xvY2tzLXBhcnQtMS1kMDMxN2U0MDcxMTIiPnBhcnQgb25lPC9hPiBvZiB0aGlzIHBvc3QsIHNvbWV0aW1lcyB0aGUgYW5zd2VyIGlzIHRvIHN0cmlwIGF3YXkgdGhlIGNvbXBsaWNhdGVkIHBhcnRzIG9mIGEgcHJvYmxlbSBhbmQgdHJ5IHRvIG1ha2Ugc2Vuc2Ugb2YgdGhpbmdzIHNpbXBseSzCoGluc3RlYWQuPC9wPjxwPlRoaXMgaXMgZXhhY3RseSB3aGF0IExlc2xpZSBMYW1wb3J0IGRpZCB3aGVuIGhlIGFwcHJvYWNoZWQgdGhlIHByb2JsZW0gb2Ygc3luY2hyb25pemluZyB0aW1lIGFjcm9zcyBkaWZmZXJlbnQgcHJvY2Vzc2VzIGFuZCBjbG9ja3MuIEFzIHdlIGxlYXJuZWQgaW4gPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9sb2dpY2FsLXRpbWUtYW5kLWxhbXBvcnQtY2xvY2tzLXBhcnQtMS1kMDMxN2U0MDcxMTIiPnBhcnQgb25lPC9hPiwgaGUgd3JvdGUgYSBmYW1vdXMgcGFwZXIgY2FsbGVkIDxhIGhyZWY9Imh0dHBzOi8vbGFtcG9ydC5henVyZXdlYnNpdGVzLm5ldC9wdWJzL3RpbWUtY2xvY2tzLnBkZiI+4oCcVGltZSwgQ2xvY2tzLCBhbmQgdGhlIE9yZGVyaW5nIG9mIEV2ZW50cyBpbiBhIERpc3RyaWJ1dGVkIFN5c3RlbeKAnTwvYT4sIHdoaWNoIGRldGFpbGVkIHNvbWV0aGluZyBjYWxsZWQgYSA8ZW0+bG9naWNhbCBjbG9jazwvZW0+LCBvciBhIGtpbmQgb2YgY291bnRlciB0byBoZWxwIGtlZXAgdHJhY2sgb2YgZXZlbnRzIGluIGEgc3lzdGVtLiBUaGVzZSBjbG9jayBjb3VudGVycyB3ZXJlIExhbXBvcnTigJlzIGludmVudGlvbiAoYW5kIHNvbHV0aW9uISkgdG8gdGhlIHByb2JsZW0gb2Yga2VlcGluZyB0cmFjayBvZiBjYXVzYWxseS1vcmRlcmVkIGV2ZW50cyB3aXRoaW4gYSBzeXN0ZW0uIEJ5IHVzaW5nIGEgbG9naWNhbCBjbG9jaywgd2UgY2FuIG1vcmUgZWFzaWx5IGNyZWF0ZSBhIGNoYWluIG9mIGV2ZW50cyBiZXR3ZWVuIHByb2Nlc3NlcyBpbiBhwqBzeXN0ZW0uPC9wPjxwPkJ1dCBob3cgZG8gdGhlc2UgY2xvY2tzIGFjdHVhbGx5IHdvcms/IEFuZCBob3cgZG9lcyBhIGNsb2NrIGFjdHVhbGx5IGZpZ3VyZSBvdXQgdGhlIHRpbWUgb2YgZXZlbnRz4oCK4oCU4oCKZXNwZWNpYWxseSB3aGVuIHRoZXJlIGFyZSBldmVudHMgaGFwcGVuaW5nIGFsbCBvdmVyIHRoZSBzeXN0ZW0/IEl04oCZcyB0aW1lIHRvIGZpbmFsbHkgZmluZMKgb3V0LjwvcD48aDM+RnJvbSBjbG9jayB0byB0aW1lc3RhbXA8L2gzPjxwPkFzIHdlIGFscmVhZHkga25vdywgbG9naWNhbCBjbG9ja3MsIGFsc28gc29tZXRpbWVzIGNhbGxlZCA8c3Ryb25nPjxlbT5MYW1wb3J0IHRpbWVzdGFtcHM8L2VtPjwvc3Ryb25nPiwgYXJlIGNvdW50ZXJzLiBCdXQgaG93IGRvIHRob3NlIGNvdW50ZXJzIHdvcmsgdW5kZXIgdGhlIGhvb2Q/IFRoZSBhbnN3ZXIgbWF5IGJlIHN1cnByaXNpbmdseSBzaW1wbGU6IHRoZSBjbG9ja3MgYXJlIGZ1bmN0aW9ucywgYW5kIGl0cyB0aGUgZnVuY3Rpb24gdGhhdCBkb2VzIHRoZSB3b3JrIG9mIOKAnGNvdW50aW5n4oCdIGZvcsKgdXMhPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqRG1lWjdDVUZrczRMcTVoN0JCYzFPQS5qcGVnIiAvPjxmaWdjYXB0aW9uPkhvdyBzaG91bGQgd2UgdGhpbmsgb2YgbG9naWNhbMKgY2xvY2tzPzwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5XZSBjYW4gdGhpbmsgb2YgbG9naWNhbCBjbG9ja3MgYXMgPHN0cm9uZz48ZW0+ZnVuY3Rpb25zPC9lbT48L3N0cm9uZz4sIHdoaWNoIHRha2UgaW4gYW4gZXZlbnQgYXMgdGhlaXIgaW5wdXQsIGFuZCByZXR1cm5zIGEgPHN0cm9uZz48ZW0+dGltZXN0YW1wPC9lbT48L3N0cm9uZz4sIHdoaWNoIGFjdHMgYXMgdGhlIOKAnGNvdW50ZXLigJ0uIEVhY2ggbm9kZeKAiuKAlOKAindoaWNoIGlzIG9mdGVuIGp1c3QgYSBwcm9jZXNz4oCK4oCU4oCKaW4gYSBkaXN0cmlidXRlZCBzeXN0ZW0gaGFzIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvdGlja2luZy1jbG9ja3MtaW4tYS1kaXN0cmlidXRlZC1zeXN0ZW0tZWYyYWE0ZGYwN2EzIj5pdHMgb3duIGxvY2FsIGNsb2NrPC9hPiwgYW5kIGVhY2ggcHJvY2VzcyBuZWVkcyB0byBoYXZlIGl0cyBvd24gbG9naWNhbMKgY2xvY2suPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqNkFPUENNMDRzWGptMzEyMFo1a0kzUS5qcGVnIiAvPjxmaWdjYXB0aW9uPlBzZXVkby1jb2RpbmcgYSBsb2dpY2FsIGNsb2NrIGZ1bmN0aW9uLjwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5JZiB3ZSBpbWFnaW5lIHRoZSBsb2dpY2FsIGNsb2NrIGFzIGEgZnVuY3Rpb24gdGhhdCB3ZSBtaWdodCBpbXBsZW1lbnQsIHdlIGNhbiB0aGluayB0aHJvdWdoIGhvdyBpdCB3b3Jrcy4gSWYgd2Ugd2VyZSB0byBwc2V1ZG8tY29kZSB0aGF0IGZ1bmN0aW9uLCB3ZSBjb3VsZCBiZSBzdXJlIHRoYXQgaXQgd291bGQgdGFrZSBhbiBldmVudCBhcyBpdHMgYXJndW1lbnQuIFdlIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvbG9naWNhbC10aW1lLWFuZC1sYW1wb3J0LWNsb2Nrcy1wYXJ0LTEtZDAzMTdlNDA3MTEyIj53aWxsIHJlY2FsbDwvYT4gdGhhdCBhbiBldmVudCBjYW4gYmUgc29tZXRoaW5nIHRoYXQgb2NjdXJzIHdpdGhpbiBhIHByb2Nlc3MsIGEgc2VuZCBldmVudCB0aGF0IG1hcmtzIHRoZSBwcm9jZXNzIHNlbmRpbmcgYSBtZXNzYWdlIGVsc2V3aGVyZSwgb3IgYSByZWNlaXZlIGV2ZW50IHRoYXQgbWFya3MgdGhlIHByb2Nlc3MgcmVjZWl2aW5nIGFuIGV2ZW50IGZyb20gZWxzZXdoZXJlLiBBIGxvZ2ljYWxDbG9jayBmdW5jdGlvbiBzaG91bGQgYmUgYWJsZSB0byB0YWtlIGluIGFueSBvZiB0aGVzZSB0aHJlZSB0eXBlcyBvZsKgZXZlbnRzLjwvcD48cD5PbmNlIHRoZSBsb2dpY2FsQ2xvY2sgZnVuY3Rpb24gaGFzIGFuIGV2ZW50LCBpdCBsb29rcyBhdCB0aGUgdGltZSBvbiB0aGF0IGV2ZW50LCBhbmQgY29tcGFyZXMgaXQgdG8gdGhlIHRpbWUgb24gdGhlIGNsb2Nr4oCZcyBwcm9jZXNzLiBPbmNlIGl0IGNvbXBhcmVzIHRoZSB0d28sIGl0IGNob29zZXMgdGhlIGxhcmdlciBvZiB0aGUgb3B0aW9ucywgYW5kIGluY3JlbWVudHMgaXQgYXJiaXRyYXJpbHkuIFRoZSBpbmNyZW1lbnQgc3RlcCBpcyBpbXBvcnRhbnQsIGJlY2F1c2Ugd2l0aCBsb2dpY2FsIGNsb2NrcywgdGltZSBjb250aW51ZXMgdG8gbWFyY2ggZm9yd2FyZCwgYW5kIHRoZSBpbmNyZW1lbnQgc3RlcCBpcyB3aGF0IGVuc3VyZXMgdGhhdCB0aGUgdGltZXN0YW1wIHJldHVybmVkIGJ5IHRoZSBmdW5jdGlvbiBpcyBhbHdheXMgbGFyZ2VyIGluIHZhbHVlIHRoYW4gdGhlIGV2ZW504oCZc8KgdGltZS48L3A+PHA+SWYgdGhpcyBzZWVtcyBjb25mdXNpbmcsIGZlYXIgbm90ISBXaGlsZSBwc2V1ZG8tY29kZSBjYW4gYmUgaGVscGZ1bCBzb21ldGltZXMsIGJ1dCBhbiBleGFtcGxlIGlzIGV2ZW4gYmV0dGVyLiBOb3cgdGhhdCB3ZSB1bmRlcnN0YW5kIHNvbWUgb2YgdGhlb3J5IGJlaGluZCBob3cgYSBsb2dpY2FsIGNsb2NrIG1pZ2h0IHdvcmssIGxldOKAmXMgdGFrZSBhIGRlZXBlciBsb29rIGF0IGhvdyB0aGUgY2xvY2sgYWxnb3JpdGhtIDxlbT5hY3R1YWxsecKgPC9lbT53b3Jrcy48L3A+PGgzPkxhbXBvcnTigJlzIGNsb2NrIGFsZ29yaXRobTwvaDM+PHA+SW4gbWFueSBjYXNlcywgTGFtcG9ydOKAmXMgYWxnb3JpdGhtIGZvciBkZXRlcm1pbmluZyB0aGUgdGltZSBvZiBhbiBldmVudCBjYW4gYmUgdmVyeSBzdHJhaWdodGZvcndhcmQuIElmIGFuIGV2ZW50IG9jY3VycyBvbiBhIHNpbmdsZSBwcm9jZXNzLCB0aGVuIHdlIGludHVpdGl2ZWx5IGNhbiBndWVzcyB0aGF0IHRoZSB0aW1lc3RhbXAgb2YgdGhlIGV2ZW50IHdpbGwgYmUgZ3JlYXRlciB0aGFuIHRoZSBldmVudCBiZWZvcmUgaXQsIGFuZCB0aGF0IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHRpbWVzdGFtcHMgb2YgdGhlIHR3byBldmVudHMgb24gdGhlIDxlbT5zYW1lPC9lbT4gcHJvY2VzcyB3aWxsIGRlcGVuZCBvbmx5IG9uIGhvdyBtdWNoIHRoZSBjbG9jayBpbmNyZW1lbnRzIGJ5IChyZW1lbWJlciwgdGhhdCBpbmNyZW1lbnRhdGlvbiBjYW4gYmUgdG90YWxseSBhcmJpdHJhcnkhKS48L3A+PHA+SG93ZXZlciwgdGhpbmdzIGFyZW7igJl0IHNvIHNpbXBsZSB3aGVuIGRlYWxpbmcgd2l0aCBzZW5kIGFuZCByZWNlaXZlIGV2ZW50cywgd2hpY2ggYXJlIHNpZ25hbHMgdGhhdCB0d28gcHJvY2Vzc2VzIGFyZSBwYXNzaW5nIG1lc3NhZ2VzIGJhY2sgYW5kIGZvcnRoLiBDb25zaWRlciB0aGUgaWxsdXN0cmF0aW9uIHNob3duIGhlcmUsIHdoZXJlIHdlIGhhdmUgdHdvIHByb2Nlc3NlcywgUCBhbmQgUS4gUHJvY2VzcyBQIGhhcyBhbiBldmVudCBvbiB0aGUgcHJvY2VzcyA8ZW0+aXRzZWxmPC9lbT46IFAxLiBUaGUgdGltZSBhdCBQMSBpcyAyLiBQcm9jZXNzIFEgYWxzbyBoYXMgYW4gZXZlbnQgb2YgaXRzIG93biwgUTEsIHdoaWNoIGhhcyBhIHRpbWUgb2YgMi4gVGhlIG5leHQgZXZlbnQgb24gcHJvY2VzcyBRIGlzIFEyLCB3aGljaCBpcyBhIHNlbmQgZXZlbnQgYW5kIG1hcmtzIGEgbWVzc2FnZSBiZWluZyBzZW50IGZyb20gcHJvY2VzcyBRIHRvIHByb2Nlc3PCoFAuPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqS0ZMeGl0aVJhZVI1QkZ4OHBfT1FRQS5qcGVnIiAvPjxmaWdjYXB0aW9uPkhvdyBkbyB3ZSBkZXRlcm1pbmUgdGhlIHRpbWUgZm9yIGFuIGluY29taW5nwqBldmVudD88L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+U28gd2hhdCBoYXBwZW5zIHdoZW4gdGhlIHNlbmQgZXZlbnQgZnJvbSBwcm9jZXNzIFEsIG9yIFEyLCBzZW5kcyBpdHMgbWVzc2FnZSBvdmVyIHRvIHByb2Nlc3MgUD8gV2VsbCwgZm9yIG9uZSB0aGluZywgd2hlbiBwcm9jZXNzIFEgc2VuZHMgaXRzIG1lc3NhZ2UgdG8gcHJvY2VzcyBQLCBpdCBhbHNvIHNlbmRzIHRoZSB0aW1lIGF0IHRoYXQgcGFydGljdWxhciBtb21lbnQgYWxvbmcgd2l0aCBpdHMgbWVzc2FnZS4gSW4gdGhlIGNhc2Ugb2YgdGhpcyBleGFtcGxlLCB0aGUgdGltZSBhdCBRMiB3YXMgNCwgc28gdGhlIG1lc3NhZ2Ugc2VuZHMgdGltZSA9IDQsIGFzIHBhcnQgb2YgaXRzIG1lc3NhZ2XCoGRhdGEuPC9wPjxwPk9uY2UgcHJvY2VzcyBQIHJlY2VpdmVzIHRoYXQgbWVzc2FnZSwgaXQgbWFya3MgaXQgd2l0aCBhIHJlY2VpdmUgZXZlbnQsIG9yIFAyLiBUaGVuLCBpdHMgbG9naWNhbCBjbG9jayBsb29rcyBhdCB0aGUgaW5jb21pbmcgdGltZSBvbiB0aGUgZXZlbnQsIGFuZCBjb21wYXJlcyBpdCB0byB0aGUgY3VycmVudGx5LWtub3duIHRpbWUgb24gaXRzIG93biBwcm9jZXNzLCBwcm9jZXNzIFAuIFdoZW4gaXQgZG9lcyB0aGlzIGNvbXBhcmlzb24sIGl0IGNob29zZXMgdGhlIGxhcmdlciBvZiB0aGUgdHdvIHRpbWVzdGFtcHMsIGFuZCBpbmNyZW1lbnRzIGl0IGFyYml0cmFyaWx5LjwvcD48cD5Qcm9jZXNzIFAmIzM5O3MgY2xvY2sgc2VlcyB0aGF0IGl0cyBjdXJyZW50bHkta25vd24gdGltZSBpcyAyLCB3aGlsZSB0aGUgdGltZSBvbiB0aGUgaW5jb21pbmcgZXZlbnQgaXMgNC4gVGhlIGNsb2NrIGNob29zZXMgdGhlIGxhcmdlciB0aW1lIGJldHdlZW4gdGhlIHR3byB0aW1lc3RhbXBzICg0KSwgaW5jcmVtZW50cyBpdCwgYW5kIGFzc2lnbnMgdGhlIG5ldyB0aW1lc3RhbXAgdG8gdGhlIHJlY2VpdmUgZXZlbnQsIFAyLiBJbiBtb3JlIGNvbmNyZXRlIHRlcm1zLCB3ZSBjYW4gc2F5IHRoYXQgdGhlIGNsb2NrIHVzZXMgYW4gYWxnb3JpdGhtIHRvIGRvIHRoaXMsIHdoaWNoIGNhbiBlZmZlY3RpdmVseSBiZSBzdW1tYXJpemVkIGFzOiBtYXgocHJvY2Vzc1QsIGluY29taW5nVCkgK8KgYW1vdW50LjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKnRWSl9qbVZzYlNEV1RSS19lQXJ2eGcuanBlZyIgLz48ZmlnY2FwdGlvbj5MYW1wb3J04oCZcyBhbGdvcml0aG0gZm9yIGRldGVybWluaW5nIGEgdGltZXN0YW1wLjwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5JbiB0aGlzIGZvcm11bGEsIHByb2Nlc3NUIGlzIHRoZSBjdXJyZW50bHkta25vd24gdGltZSBvbiB0aGUgY3VycmVudCBwcm9jZXNzLCB3aGlsZSBpbmNvbWluZ1QgaXMgdGhlIHRpbWUgb24gdGhlIGV2ZW50IHRoYXQgdGhlIHByb2Nlc3MgaXMgdHJ5aW5nIHRvIHJlY29uY2lsZS4gVGhlIGNsb2NrIHRha2VzIHRoZSBtYXgoKSBvZiB0aGF0LCBhbmQgaW5jcmVtZW50cyBpdCBieSB3aGF0ZXZlciBhcmJpdHJhcnkgYW1vdW50IHRoZSBjbG9jayBpcyB1c2luZyB0byBhY3QgYXMgYSBjb3VudGVyIGFuZCBlbnN1cmUgdGhhdCB0aGUgYWxsIHRpbWVzdGFtcHMgY29udGludWUgdG8gaW5jcmVhc2UgaW7CoHZhbHVlLjwvcD48cD5JbiBvdXIgZXhhbXBsZSBzeXN0ZW0sIHdlIGNhbiBkZXRlcm1pbmUgdGhhdCBQMuKAmXMgdGltZXN0YW1wIHdpbGwgYmUgdGhlIHJlc3VsdCBvZiBtYXgoMiwgNCkgKyBhbW91bnQ7IGZvciBzaW1wbGljaXR54oCZcyBzYWtlLCB3ZSBjYW4gZGVjaWRlIHRvIG1ha2UgYW1vdW50IGVxdWFsIHRvIDEsIHNvIHRoZSB0aW1lIGF0IFAyIGlzIDQgKyAxID3CoDUuPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqUFRIakw0d1ozdk5FSTFrV0QxZWJOUS5qcGVnIiAvPjxmaWdjYXB0aW9uPlRoZSByZXN1bHQgb2YgTGFtcG9ydOKAmXMgYWxnb3JpdGhtLCBpbsKgYWN0aW9uITwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5Bd2Vzb21lISBPdXIgbG9naWNhbCBjbG9jayBpcyBhY3R1YWxseSBkb2luZyBzb21lIGludGVyZXN0aW5nIGFuZCB1c2VmdWwgd29yayBmb3IgdXMsIGFuZCBpdOKAmXMgZG9pbmcgaXQgaW4gYSBwcmV0dHkgZWxlZ2FudCBhbmQgc2ltcGxlwqB3YXkuPC9wPjxoMz5DbG9ja3MgYW5kIGNhdXNhbGl0eTwvaDM+PHA+Tm93IHRoYXQgd2XigJl2ZSBzZWVuIGhvdyBjbG9ja3MgZGVyaXZlIGFuZCBkZWxpdmVyIGEgdGltZSB0byB1cywgbGV04oCZcyBpbnZlc3RpZ2F0ZSB3aGVuIHRoZXnigJlyZSB1c2VmdWwsIGFzIHdlbGwgYXMgaG93IHRoZXnigJlyZSBzb21ldGltZXMgbGltaXRpbmcuIEFzIHdlIGFscmVhZHkga25vdyBmcm9tIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvbG9naWNhbC10aW1lLWFuZC1sYW1wb3J0LWNsb2Nrcy1wYXJ0LTEtZDAzMTdlNDA3MTEyIj5wYXJ0IG9uZTwvYT4gb2YgdGhpcyBzZXJpZXMsIExhbXBvcnQgaW50cm9kdWNlZCB0aGUgY29uY2VwdCBvZiBoYXBwZW5zIGJlZm9yZSAodXNpbmcgdGhlIDxzdHJvbmc+4oaSPC9zdHJvbmc+IHNob3J0aGFuZCkgdG8gaW5kaWNhdGUgdGhhdCBvbmUgZXZlbnQgaGFwcGVucyBiZWZvcmUgYW5vdGhlciBpbiBhIHN5c3RlbS4gVW5kZXJzdGFuZGluZyB0aGUgY2hhaW4gb2YgZXZlbnRzIGluIGEgc3lzdGVtIGhlbHBzIHVzIGNhdXNhbGx5IG9yZGVyIHRoZW0gYW5kIGZpZ3VyZSBvdXQgaG93IG9uZSBldmVudCBjYXVzZXMgYW5vdGhlciB0b8KgaGFwcGVuLjwvcD48cD5Db252ZW5pZW50bHksIGxvZ2ljYWwgY2xvY2tzIG9iZXkgdGhlIHJ1bGVzIG9mIGNhdXNhbGl0eS4gVGhpcyBtZWFucyB0aGF0IGlmIHdlIGZpbmQgYSBjYXVzYWwsIGhhcHBlbnMgYmVmb3JlIHJlbGF0aW9uc2hpcCBpbiBhIHN5c3RlbSwgdGhlbiB0aGUgdGltZXN0YW1wcyBjb3JyZXNwb25kaW5nIHRvIHRoZXNlIHR3byBldmVudHMgc2hvdWxkIG9iZXkgdGhlIHJ1bGVzIG9mIGNhdXNhbGl0eS48L3A+PGJsb2NrcXVvdGU+SWYgZXZlbnQgYSDihpIgYiwgdGhlbiB0aGUgdGltZXN0YW1wIHJldHVybmVkIGJ5IGNsb2NrKGEpIHNob3VsZCBiZSBsZXNzIHRoYW4gKCZsdDspIHRoYXQgb2YgdGhlIHRpbWVzdGFtcCByZXR1cm5lZCBieSBjbG9jayhiKS48L2Jsb2NrcXVvdGU+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSoyNDNidTh5M0VUNjU3b3FjM2d4M2JnLmpwZWciIC8+PGZpZ2NhcHRpb24+TG9naWNhbCBjbG9ja3Mgc2hvdWxkIG9iZXkgY2F1c2FsaXR5IGZvciBjYXVzYWxseS1yZWxhdGVkIGV2ZW50cy48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+SWYgd2UgdGFrZSBhIGxvb2sgYXQgdGhlIGV4YW1wbGUgc2hvd24gaGVyZSwgd2XigJlsbCBzZWUgdGhhdCB3ZSBoYXZlIGEgc3lzdGVtIHdpdGggdGhyZWUgcHJvY2Vzc2VzLCBQLCBRLCBhbmQgUiwgd2l0aCBzb21lIGNsZWFyIGNhdXNhbCByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlIGV2ZW50cyBpbiB0aGXCoHN5c3RlbS48L3A+PHA+V2UgY2FuIHNlZSB0aGF0IGV2ZW50IFAxIOKGkiBRMiwgYmVjYXVzZSBldmVudCBQMSBpcyB0aGUgc2VuZCBldmVudCBvZiBRMiwgd2hpY2ggaXMgdGhlIHJlY2VpdmUgZXZlbnQsIGFuZCBvbmUgY2F1c2VzIHRoZSBvdGhlci4gT24gdGhlIG90aGVyIGhhbmQsIGV2ZW50IFEyIOKGkiBSMywgYXMgUTIgc2VuZHMgYSBtZXNzYWdlIHRvIFIzLCB3aGljaCBpcyBhIHJlY2VpdmUgZXZlbnQgaW4gYW5kIG9mIGl0c2VsZi4gU2ltaWxhcmx5LCB3ZSBjYW4gc2VlIHRoYXQgUTMg4oaSIFE0LCBhcyB0aGV5IGJvdGggb2NjdXIgb24gdGhlIHNhbWUgcHJvY2Vzcywgb25lIGFmdGVywqBhbm90aGVyLjwvcD48cD5JZiB3ZSBsb29rIGF0IHRoZXNlIHNhbWUgY2F1c2FsIHJlbGF0aW9uc2hpcHMsIGFuZCBjb21wYXJlIHRoZW0gd2l0aCB0aGVpciB0aW1lc3RhbXBzLCB3ZSBjYW4gc2VlIHRoYXQgdGhlIGNsb2NrIHRpbWVzIGZvciBlYWNoIGNhdXNhbCByZWxhdGlvbnNoaXAgb2JleXMgY2F1c2FsaXR5IGFzIHdlbGwuIEZvciB0aGUgcmVsYXRpb25zaGlwIG9mIFAxIOKGkiBRMiwgdGhlIGNsb2NrIHRpbWUgZm9yIFAxICZsdDsgUTIsIGFzIDEgJmx0OyAyLiBUaGUgc2FtZSBnb2VzIGZvciBRMiDihpIgUjMgKDIgJmx0OyAzKSBhbmQgUTMg4oaSIFE0ICgzICZsdDvCoDQpLjwvcD48cD5Ib3dldmVyLCB0aGUgc2FtZSBydWxlIHNhZGx5IGNhbm5vdCBiZSBzYWlkIG9mIGV2ZW50cyBpbiB0aGUgc3lzdGVtIHRoYXQgYXJlIDxlbT5ub3Q8L2VtPiBjYXVzYWxseS1yZWxhdGVkISBMZXTigJlzIHRha2UgYSBjbG9zZXIgbG9vayBhdCBzb21lIG9mIHRoZSA8ZW0+b3RoZXI8L2VtPiBldmVudHMgaW4gdGhlIHNhbWUgc3lzdGVtIHdlIHNhdyBiZWZvcmUuIElmIHdlIGV4YW1pbmUgdGhlIGV2ZW50cyBSMSBhbmQgUDIsIHdl4oCZbGwgc2VlIHRoYXQgdGhlIHRpbWUgYXQgUjEgaXMgMSwgd2hpbGUgdGhlIHRpbWUgYXQgUDIgaXMgMi4gV2UgbWlnaHQgdGhpbmsgdGhhdCwgYmVjYXVzZSB0aGUgY2xvY2sgdGltZSBvZiAxIGlzIGxlc3MgdGhhbiAoJmx0OykgMiwgdGhhdCBSMSDihpIgUDIuIEJ1dCwgdW5mb3J0dW5hdGVseSwgdGhpcyBpcyBub3QgdGhlwqBjYXNlITwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKmg3Q1BldGVyMU1ISVVxWWFaMFdlNHcuanBlZyIgLz48ZmlnY2FwdGlvbj5XaGF0IGhhcHBlbnMgd2hlbiB0d28gZXZlbnRzIGFyZSBub3QgY2F1c2FsbHktcmVsYXRlZD88L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+SW4gZmFjdCwgaWYgd2UgbG9vayBhdCB0aGlzIHN5c3RlbSwgd2XigJlsbCBzZSB0aGF0IHRoZXJlIGlzIGFjdHVhbGx5IDxlbT5ubyBjYXVzYWwgcGF0aDwvZW0+IGJldHdlZW4gUjEgYW5kIFAyLiBUaGVzZSBhcmUgY29uY3VycmVudCBldmVudHMhIDxzdHJvbmc+PGVtPkNvbmN1cnJlbnQgZXZlbnRzPC9lbT48L3N0cm9uZz4gZG8gbm90IGhhdmUgY2F1c2FsIHBhdGhzIGZyb20gb25lIHRvIGFub3RoZXIuIFRodXMsIGJlY2F1c2UgdGhlc2UgdHdvIGV2ZW50cyBhcmUgY29uY3VycmVudCwgaGVyZSBpcyBubyB3YXkgdG8gYmUgY2VydGFpbiB0aGF0IG9uZSBldmVudCBoYXBwZW5lZCBiZWZvcmUgdGhlIG90aGVyLiBXZSBjYW5ub3QgbG9vayBhdCB0aGVpciB0aW1lc3RhbXBzIGFuZCBndWFyYW50ZWUgdGhhdCB0aGV5IGFyZSBjYXVzYWxseS1yZWxhdGVkITwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKkxKUjEzRlJwSWl4SDhsTzM3S19USGcuanBlZyIgLz48ZmlnY2FwdGlvbj5UaGUgbGltaXRhdGlvbnMgb2YgY29uY3VycmVudCBldmVudHMgYW5kIGxvZ2ljYWzCoGNsb2Nrcy48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+SW4gbW9yZSBhYnN0cmFjdCB0ZXJtcywgd2UgY2FuIHRoaW5rIG9mIGl0IGxpa2UgdGhpczogaWYgZXZlbnQgYSBoYXBwZW5zIGJlZm9yZSBiLCB0aGVuIHdlIGNhbiBiZSBzdXJlIHRoYXQgdGhlIHRpbWVzdGFtcCBvZiBhIHdpbGwgYmUgbGVzcyB0aGFuIHRoZSB0aW1lc3RhbXAgb2YgYi4gQnV0IGp1c3QgYmVjYXVzZSBh4oCZcyB0aW1lc3RhbXAgaXMgbGVzcyB0aGFuIGIsIHdlIGRvbuKAmXQga25vdyA8ZW0+Zm9yIHN1cmU8L2VtPiB0aGF0IGEgaGFwcGVuZWQgYmVmb3JlIGIsIGJlY2F1c2UgdGhlIHR3byBldmVudHMgY291bGQgYWxzbyBiZSBoYXBwZW5pbmcgYXQgdGhlIHNhbWXCoHRpbWUhPC9wPjxwPkZvciB0d28gY29uY3VycmVudCBldmVudHMsIHdlIGNhbm5vdCBtYWtlIGEganVkZ2VtZW50IGNhbGwgYWJvdXQgdGhlIGhhcHBlbnMgYmVmb3JlIHJlbGF0aW9uc2hpcCBqdXN0IGJhc2VkIG9uIHRoZSBjbG9jayB0aW1lcyBvZiB0aGUgZXZlbnRzLiBUaGUgb25seSB0aGluZyB0aGF0IHdlIGNhbiByZWFsbHkgZ3VhcmFudGVlIGluIHN1Y2ggYSBjYXNlIHdvdWxkIGJlIHRoYXQgYiBkb2VzIDxlbT5ub3Q8L2VtPiBoYXBwZW4gYmVmb3JlwqBhLjwvcD48cD5UaGlzIGlzIG9uZSBvZiB0aGUgbGltaXRhdGlvbnMgb2YgbG9naWNhbCBjbG9ja3MuIEluZGVlZCwgTGFtcG9ydCBldmVuIGFja25vd2xlZGdlcyB0aGlzIGluIGhpcyBvd24gcGFwZXIsIGFuZCBzdWdnZXN0cyB1c2luZyDigJxhbnkgYXJiaXRyYXJ5IHRvdGFsIG9yZGVyaW5nIG9mIHRoZSBwcm9jZXNzZXPigJ0gaW4gYSBzeXN0ZW0gdG8gZGVjaWRlIGhvdyB0byBicmVhayB0aWVzIHdoZW4gdHdvIHRpbWVzdGFtcHMgY291bGQgdmVyeSB3ZWxsIGJlIGVxdWl2YWxlbnQuPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqZUg2M01Zb0N2VmktVU5USmdkLXdtQS5qcGVnIiAvPjxmaWdjYXB0aW9uPlRoZSB0bDtkciBvZiBMYW1wb3J0IHRpbWVzdGFtcHMvbG9naWNhbCBjbG9ja3MuPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPkxhbXBvcnQgY2xvY2tzIGFyZSBwcmV0dHkgYW1hemluZyBpbiB0aGVpciBzaW1wbGljaXR5LCBidXQgdGhleSBhcmUgYWRtaXR0ZWRseSBub3QgZm9vbHByb29mLiBXaGVuIGdpdmVuIGEgc2V0IG9mIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvb3JkZXJpbmctZGlzdHJpYnV0ZWQtZXZlbnRzLTI5YzFkZDlkMWVmZiI+cGFydGlhbGx5LW9yZGVyZWQ8L2E+IGV2ZW50cywgd2UgY2FuIGNyZWF0ZSBhIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvb3JkZXJpbmctZGlzdHJpYnV0ZWQtZXZlbnRzLTI5YzFkZDlkMWVmZiI+dG90YWwgb3JkZXJpbmc8L2E+IG91dCBvZiB0aGVtIHVzaW5nIHNpbXBsZSBjbG9jayBjb3VudGVycyBhbmQgY2FuIGJlIHN1cmUgdGhhdCB0aG9zZSBjbG9ja3MgYW5kIHRoZSB0aW1lc3RhbXBzIHRoZXkgcHJvdmlkZSB1cyB3aXRoIHdpbGwgYWx3YXlzIG9iZXkgY2F1c2FsaXR5LiBIb3dldmVyLCBMYW1wb3J0IGNsb2NrcyBkbyBub3QgaGVscCB1cyBvcmRlciB0aGUgY29uY3VycmVudCBldmVudHMgaW4gYSBzeXN0ZW0sIG9yIGZpbmQgYSBjYXVzYWwgcmVsYXRpb25zaGlwIGJldHdlZW7CoHRoZW0uPC9wPjxwPlRoZXJlIGFyZSBvdGhlciBraW5kcyBvZiBjbG9ja3MgdGhhdCBjYW4gYmUgdXNlZCBpbiBhIGRpc3RyaWJ1dGVkIHN5c3RlbSB0byBoZWxwIHNvbHZlIHRoaXMgcHJvYmxlbSwgYnV0IGFsbCBvZiB0aGUgb3RoZXIgc29sdXRpb25zIGNhbWUgYWxvbmcgbWFueSB5ZWFycyBhZnRlciBMYW1wb3J0IGZpcnN0IGludHJvZHVjZWQgaGlzIGxvZ2ljYWwgY2xvY2tzIGJhY2sgaW4gMTk3OC4gV2XigJlyZSBsdWNreSB0aGF0IGhlIGRpZCwgYmVjYXVzZSBoZSBzZXQgdGhlIHN0YWdlIGZvciBhIG5ldyB3YXkgb2YgdGhpbmtpbmcgYWJvdXQgdGltZSBpbiBkaXN0cmlidXRlZCBzeXN0ZW1zLCBhbmQgd291bGQgZW5kIHVwIGNoYW5naW5nIHRoZSB3YXkgd2UgdGFsayBhYm91dCBkaXN0cmlidXRlZCBjb21wdXRpbmcgZm9yZXZlci48L3A+PGgzPlJlc291cmNlczwvaDM+PHA+VGhlcmUgYXJlIHNvbWUgZ3JlYXQgcmVzb3VyY2VzIG9uIExhbXBvcnTigJlzIHBhcGVyIG9uIGxvZ2ljYWwgY2xvY2tzLCBhcyB3ZWxsIGFzIGNhdXNhbCBvcmRlcmluZy4gSWYgeW914oCZcmUgY3VyaW91cyB0byBsZWFybiBtb3JlIChvciByZWFkIExhbXBvcnTigJlzIHBhcGVyIHlvdXJzZWxmKSwgY2hlY2sgb3V0IHRoZSByZXNvdXJjZXMgYmVsb3chPC9wPjxvbD48bGk+PGEgaHJlZj0iaHR0cHM6Ly9sYW1wb3J0LmF6dXJld2Vic2l0ZXMubmV0L3B1YnMvdGltZS1jbG9ja3MucGRmIj5UaW1lLCBDbG9ja3MsIGFuZCB0aGUgT3JkZXJpbmcgb2YgRXZlbnRzIGluIGEgRGlzdHJpYnV0ZWQgU3lzdGVtPC9hPiwgTGVzbGllwqBMYW1wb3J0PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1oSzZtNldCay1kOCZhbXA7dD0zcyI+VGltZSwgQ2xvY2tzIGFuZCBPcmRlcmluZyBvZiBFdmVudHMgaW4gYSBEaXN0LiBTeXN0ZW08L2E+LCBEYW4gUnViZW5zdGVpbjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9Q01CanZDekRWa1kiPlRpbWUgYW5kIE9yZGVyaW5nOiBMYW1wb3J0IFRpbWVzdGFtcHM8L2E+LCBJbmRyYW5pbMKgR3VwdGE8L2xpPjxsaT48YSBocmVmPSJodHRwczovL213aGl0dGFrZXIuZ2l0aHViLmlvL2Jsb2cvbGFtcG9ydHNfbG9naWNhbF9jbG9ja3MvIj5MYW1wb3J04oCZcyBMb2dpY2FsIENsb2NrczwvYT4sIE1pY2hhZWwgV2hpdHRha2VyPC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuY3MucnV0Z2Vycy5lZHUvfnB4ay9ydXRnZXJzL25vdGVzL2NvbnRlbnQvMDgtbG9naWNhbC1jbG9ja3Mtc2xpZGVzLnBkZiI+TG9naWNhbCBDbG9ja3M8L2E+LCBQcm9mZXNzb3IgUGF1bCBLcnp5emFub3dza2k8L2xpPjwvb2w+PGltZyBzcmM9Imh0dHBzOi8vbWVkaXVtLmNvbS9fL3N0YXQ/ZXZlbnQ9cG9zdC5jbGllbnRWaWV3ZWQmcmVmZXJyZXJTb3VyY2U9ZnVsbF9yc3MmcG9zdElkPTI3MmMwOTdkY2RkYSIgd2lkdGg9IjEiIGhlaWdodD0iMSIgYWx0PSIiPjxocj48cD48YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL2xvZ2ljYWwtdGltZS1hbmQtbGFtcG9ydC1jbG9ja3MtcGFydC0yLTI3MmMwOTdkY2RkYSI+TG9naWNhbCBUaW1lIGFuZCBMYW1wb3J0IENsb2NrcyAoUGFydCAyKTwvYT4gd2FzIG9yaWdpbmFsbHkgcHVibGlzaGVkIGluIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMiPmJhc2VkczwvYT4gb24gTWVkaXVtLCB3aGVyZSBwZW9wbGUgYXJlIGNvbnRpbnVpbmcgdGhlIGNvbnZlcnNhdGlvbiBieSBoaWdobGlnaHRpbmcgYW5kIHJlc3BvbmRpbmcgdG8gdGhpcyBzdG9yeS48L3A+XV0+PC9jb250ZW50OmVuY29kZWQ+CiAgICAgICAgPC9pdGVtPgogICAgICAgIDxpdGVtPgogICAgICAgICAgICA8dGl0bGU+PCFbQ0RBVEFbTG9naWNhbCBUaW1lIGFuZCBMYW1wb3J0IENsb2NrcyAoUGFydCAxKV1dPjwvdGl0bGU+CiAgICAgICAgICAgIDxsaW5rPmh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvbG9naWNhbC10aW1lLWFuZC1sYW1wb3J0LWNsb2Nrcy1wYXJ0LTEtZDAzMTdlNDA3MTEyP3NvdXJjZT1yc3MtOGY1NTk5M2M5NzNlLS0tLS0tMjwvbGluaz4KICAgICAgICAgICAgPGd1aWQgaXNQZXJtYUxpbms9ImZhbHNlIj5odHRwczovL21lZGl1bS5jb20vcC9kMDMxN2U0MDcxMTI8L2d1aWQ+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtjb2RlXV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW3NvZnR3YXJlLWRldmVsb3BtZW50XV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW2NvbXB1dGVyLXNjaWVuY2VdXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbZGlzdHJpYnV0ZWQtc3lzdGVtc11dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtwcm9ncmFtbWluZ11dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxkYzpjcmVhdG9yPjwhW0NEQVRBW1ZhaWRlaGkgSm9zaGldXT48L2RjOmNyZWF0b3I+CiAgICAgICAgICAgIDxwdWJEYXRlPlRodSwgMTQgTm92IDIwMTkgMTY6MzQ6MTkgR01UPC9wdWJEYXRlPgogICAgICAgICAgICA8YXRvbTp1cGRhdGVkPjIwMTktMTEtMTRUMTY6MzQ6MTkuODMzWjwvYXRvbTp1cGRhdGVkPgogICAgICAgICAgICA8Y29udGVudDplbmNvZGVkPjwhW0NEQVRBWzxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqX3A3TTJzOWJReUt1QWVDOFRqcDRYdy5qcGVnIiAvPjxmaWdjYXB0aW9uPkxvZ2ljYWwgdGltZSBhbmQgTGFtcG9ydCBjbG9ja3MgKHBhcnTCoDEpPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPk92ZXIgdGhlIGNvdXJzZSBvZiB0aGlzIHNlcmllcywgd2XigJl2ZSBzZWVuIG1hbnkgaW5zdGFuY2VzIG9mIGhvdyB0aGluZ3MgY2FuIG1vcmUgY29tcGxpY2F0ZWQgdGhhbiB0aGV5IHNlZW0uIFdlIHNhdyB0aGlzIHdpdGggPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9tb2Rlcy1vZi1mYWlsdXJlLXBhcnQtMS02Njg3NTA0YmZlZDYiPmZhaWx1cmU8L2E+LCBhbmQgd2Ugc2F3IGl0IHdpdGggPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9yZWR1bmRhbmN5LWFuZC1yZXBsaWNhdGlvbi1kdXBsaWNhdGluZy1pbi1hLWRpc3RyaWJ1dGVkLXN5c3RlbS03YWI0MzIyZDczNzgiPnJlcGxpY2F0aW9uPC9hPi4gTW9yZSByZWNlbnRseSwgd2UgZGlzY292ZXJlZCB0aGF0IGV2ZW4gdGhlIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvdGlja2luZy1jbG9ja3MtaW4tYS1kaXN0cmlidXRlZC1zeXN0ZW0tZWYyYWE0ZGYwN2EzIj5jb25jZXB0IG9mIHRpbWU8L2E+IGlzIG1vcmUgY29tcGxleCB0aGF0IHdlIG1pZ2h0IGhhdmUgb3JpZ2luYWxseSB0aG91Z2h0LjwvcD48cD5Ib3dldmVyLCB3aGVuIHRoZSB0aGluZ3MgdGhhdCB5b3UgdGhvdWdodCB5b3Uga25ldyBzZWVtIG1vcmUgY29udm9sdXRlZCB0aGFuIGV2ZXIsIHNvbWV0aW1lcyB0aGUgYW5zd2VyIGlzIHRvIGtlZXAgaXQgc2ltcGxlLiBJbiBvdGhlciB3b3Jkcywgd2UgY2FuIGtlZXAgYSBwcm9ibGVtIHNpbXBsZSBieSBzdHJpcHBpbmcgb3V0IHRoZSBjb25mdXNpbmcgcGFydHMgYW5kIHRyaW1taW5nIGl0IGRvd24gdG8gaXRzIG1vc3QgZXNzZW50aWFsIHBhcnRzLiBJbiBmYWN0LCB0aGlzIGFwcHJvYWNoIGlzIGV4YWN0bHkgd2hhdCBvbmUgY29tcHV0ZXIgc2NpZW50aXN0IGRpZCBpbiB0aGUgbGF0ZSA3MOKAmXMgd2hlbiBoZSB3YXMsIGp1c3QgbGlrZSB1cywgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaG93IHRvIG1ha2Ugc2Vuc2Ugb2YgdGltZSBpbiBhIGRpc3RyaWJ1dGVkIHN5c3RlbS48L3A+PHA+VGhlIHByZXZpb3VzIHR3byBwb3N0cyBvbiA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL3RpY2tpbmctY2xvY2tzLWluLWEtZGlzdHJpYnV0ZWQtc3lzdGVtLWVmMmFhNGRmMDdhMyI+Y2xvY2tzPC9hPiBhbmQgdGhlIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvb3JkZXJpbmctZGlzdHJpYnV0ZWQtZXZlbnRzLTI5YzFkZDlkMWVmZiI+b3JkZXJpbmcgb2YgZXZlbnQ8L2E+cyBpbiBhIGRpc3RyaWJ1dGVkIHN5c3RlbSBoYXZlIGJvdGggYmVlbiBidWlsZGluZyB1cCB0byB0aGUgdG9waWMgd2XigJlyZSBmaW5hbGx5IHJlYWR5IHRvIHVuY292ZXI6IGxvZ2ljYWwgdGltZSBhbmQgTGFtcG9ydCBjbG9ja3MhIFRoZXJl4oCZcyBhIGxvdCB0byBjb3Zlciwgc28gd2XigJlsbCBzcHJlYWQgaXQgb3V0IGJldHdlZW4gdHdvIHBvc3RzLiBMZXTigJlzIGRpdmUgcmlnaHQgaW50byBwYXJ0wqBvbmUhPC9wPjxoMz5DYXVzYWxpdHkgYW5kIOKAnGhhcHBlbnPCoGJlZm9yZeKAnTwvaDM+PHA+VGhlIHN0b3J5IG9mIGxvZ2ljYWwgY2xvY2tzIHN0YXJ0cyBpbiAxOTc4LCB3aGVuIGEgcGFwZXIgd2FzIHB1Ymxpc2hlZCBpbiB0aGUgPGVtPkNvbW11bmljYXRpb25zIG9mIEFDTSA8L2VtPmpvdXJuYWwgdGhhdCB3b3VsZCBnbyBkb3duIGluIGhpc3RvcnkuIDxhIGhyZWY9Imh0dHA6Ly93d3cubGFtcG9ydC5vcmcvIj5MZXNsaWUgTGFtcG9ydDwvYT4sIGEgY29tcHV0ZXIgc2NpZW50aXN0IGF0IE1hc3NhY2h1c2V0dHMgQ29tcHV0ZXIgQXNzb2NpYXRlcywgd3JvdGUgYWJvdXQgaGlzIHJlc2VhcmNoIGFyb3VuZCBvcmRlcmluZyBldmVudHMgaW4gYSBkaXN0cmlidXRlZCBzeXN0ZW0uIFRoaXMgcGFwZXIsIGVudGl0bGVkIDxhIGhyZWY9Imh0dHBzOi8vbGFtcG9ydC5henVyZXdlYnNpdGVzLm5ldC9wdWJzL3RpbWUtY2xvY2tzLnBkZiI+4oCcVGltZSwgQ2xvY2tzLCBhbmQgdGhlIE9yZGVyaW5nIG9mIEV2ZW50cyBpbiBhIERpc3RyaWJ1dGVkIFN5c3RlbeKAnTwvYT4sIHdvdWxkIGdvIG9uIHRvIGJlIG9uZSBvZiB0aGUgbW9zdC1jaXRlZCBwYXBlcnMgaW4gY29tcHV0ZXIgc2NpZW5jZSwgYW5kIHdvdWxkIGFsc28gd2luIHRoZSBQcmluY2lwbGVzIG9mIERpc3RyaWJ1dGVkIENvbXB1dGluZyBJbmZsdWVudGlhbCBQYXBlciBBd2FyZCBtb3JlIHRoYW4gPGEgaHJlZj0iaHR0cDovL3d3dy5wb2RjLm9yZy9pbmZsdWVudGlhbC8yMDAwLWluZmx1ZW50aWFsLXBhcGVyIj4yMCB5ZWFyc8KgbGF0ZXI8L2E+LjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKkI1LVJmbGNCM214LXBfMzQ3MnlNSUEuanBlZyIgLz48ZmlnY2FwdGlvbj5MYW1wb3J04oCZcyBwYXBlciBvbiBjYXVzYWwgb3JkZXJpbmcgd2FzIHB1Ymxpc2hlZCBpbsKgMTk3OCE8L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+SW4gdGhlIHBhcGVyLCBMYW1wb3J0IG91dGxpbmVzIGhvdyB3ZSB0aGluayBhYm91dCB0aW1lIGFzIGh1bWFucywgYW5kIHdoeSB3ZSBuZWVkIHRvIHNoaWZ0IG91ciBwYXJhZGlnbSB3aGVuIGl0IGNvbWVzIHRvIGRpc3RyaWJ1dGVkIHN5c3RlbXMsIGFuZCB0aGUgaWRlYSBvZiA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL29yZGVyaW5nLWRpc3RyaWJ1dGVkLWV2ZW50cy0yOWMxZGQ5ZDFlZmYiPnBhcnRpYWwgb3JkZXJpbmc8L2E+LiBIZSBleHBsYWlucyB0aGF0LCDigJxJbiBhIGRpc3RyaWJ1dGVkIHN5c3RlbSwgaXQgaXMgc29tZXRpbWVzIGltcG9zc2libGUgdG8gc2F5IHRoYXQgb25lIG9mIHR3byBldmVudHMgb2NjdXJyZWTCoGZpcnN04oCdLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKl81T0NPX1U5d1daMUgwRjRhY1BZeVEuanBlZyIgLz48ZmlnY2FwdGlvbj5XaHkgZG8gd2UgY2FyZSBhYm91dCBvcmRlcmluZyBldmVudHM/IFNvIHRoYXQgd2UgY2FuIHRyYWNrIGNhdXNhbGl0eSE8L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+QXMgTGFtcG9ydCBjaXRlcyBpbiBoaXMgcGFwZXIsIHRoZSByZWFzb24gdGhhdCB3ZSBjYXJlIGFib3V0IHRpbWUgaXMgc28gdGhhdCB3ZSBjYW4gZmlndXJlIG91dCB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpbmdzIGhhcHBlbi4gV2hpbGUgdGhpcyBpcyBjZXJ0YWlubHkgaGFyZGVyIChvciBzb21ldGltZXMgaW1wb3NzaWJsZSEpIHRvIGRvIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtLCBvdXIgcmVhc29uIGZvciB3YW50aW5nIHRvIDxlbT5rbm93PC9lbT4gdGhlIG9yZGVyIG9mIHNvbWUgZXZlbnRzIGluIGEgc3lzdGVtIGFsbCBzdGVtcyBiYWNrIHRvIHRoZSBzYW1lIGRlc2lyZTogd2UgY2FyZSBhYm91dCBvcmRlcmluZyBldmVudHMgc28gd2UgY2FuIGRldGVybWluZSBob3cgdGhvc2UgZXZlbnRzIGFyZSBjb25uZWN0ZWQuIFdoZW4gZGVhbGluZyB3aXRoIGV2ZW50cyBpbiA8ZW0+YW55PC9lbT4gc3lzdGVtLCB0aGUgcmVhc29uIHdlIGFjdHVhbGx5IHdhbnQgdG8gb3JkZXIgdGhlbSBpcyBzbyB0aGF0IHdlIGNhbiBzZWUgdGhlIGNoYWluIG9mIGV2ZW50cyB3aXRoaW4gdGhlIHN5c3RlbS4gV2l0aGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtIGluIHBhcnRpY3VsYXIsIHdlIHRoaXMgbWVhbnMgdGhhdCB3ZSBhcmUgb2Z0ZW4gdHJ5aW5nIHRvIGRldGVybWluZSBpZiBhbiBldmVudCBhdCBvbmUgbm9kZSBhZmZlY3RzIG9yIGNhdXNlcyBhbiBldmVudCBhdCBhbm90aGVywqBub2RlLjwvcD48cD5CdXQsIGFzIHdl4oCZdmUgc2VlbiBpbiBvdXIgb3duIHN0dWR5IG9mIGRpc3RyaWJ1dGVkIHN5c3RlbXMsIHRoaXMgdGFzayBpcyBubyBlYXN5IGZlYXQuIFdoZW4gYSBzeXN0ZW0gaXMgZGlzdHJpYnV0ZWQsIHRoZXJlIGlzIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvdGlja2luZy1jbG9ja3MtaW4tYS1kaXN0cmlidXRlZC1zeXN0ZW0tZWYyYWE0ZGYwN2EzIj5ubyBnbG9iYWwgY2xvY2s8L2E+LCB3aGljaCBtZWFucyB0aGF0IHdlIGNhbm5vdCBkZXBlbmQgb24gYW55IGNlbnRyYWwgdGltZSBzb3VyY2UuIFRoaXMgYWxzbyBtZWFucyB0aGF0IHRoZSBldmVudHMgaW4gb3VyIHN5c3RlbSBhcmUgbm90IDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvb3JkZXJpbmctZGlzdHJpYnV0ZWQtZXZlbnRzLTI5YzFkZDlkMWVmZiI+dG90YWxseSBvcmRlcmVkPC9hPiwgd2hpY2ggbWVhbnMgd2UgY2Fu4oCZdCBiZSBzdXJlIG9mIGV4YWN0bHkgPGVtPndoZW48L2VtPiBldmVyeSBldmVudCBpbiB0aGUgc3lzdGVtIHRvb2sgcGxhY2UuIExhbXBvcnTigJlzIHBhcGVyIGFja25vd2xlZGdlcyBhbGwgb2YgdGhlc2UgY29uc3RyYWlucyBhbmQgZW1wYXRoaXplcyB3aXRoIGhvdyB0cmlja3kgdGhpcyBwcm9ibGVtIHJlYWxsecKgaXMhPC9wPjxwPkxhbXBvcnTigJlzIHNvbHV0aW9uIGlzIHRvIHNoaWZ0IG91ciB0aGlua2luZy4gSGUgcHJlc2VudHMgYSBub3ZlbCBpZGVhOiB3ZSBkb27igJl0IGFjdHVhbGx5IG5lZWQgdG8gdGhpbmsgYWJvdXQgY2F1c2FsaXR5IGluIHRoZSBjb250ZXh0IG9mIHRvdGFsIG9yZGVyaW5nIHRvIHN0YXJ0LiBJbnN0ZWFkLCBoZSBzYXlzIHRoYXQgd2UgY2FuIHN0YXJ0IHdpdGggYSBwYXJ0aWFsIG9yZGVyaW5nIG9mIGV2ZW50cywgYW5kIHRoZW4ganVzdCBkZWFsIHdpdGggZmlndXJpbmcgb3V0IHdoaWNoIGV2ZW50cyBoYXBwZW5lZCBiZWZvcmUgb3RoZXIgZXZlbnRzLiBPbmNlIHdlIGZpZ3VyZSBvdXQgYSBwYXJ0aWFsIG9yZGVyaW5nLCB3ZSBjYW4gdHVybiBpdCBpbnRvIGEgY29uc2lzdGVudCB0b3RhbCBvcmRlcmluZy48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpfUGRVMXN2N2dSSm5FeG1GRW8zS2hBLmpwZWciIC8+PGZpZ2NhcHRpb24+TGFtcG9ydOKAmXMgbG9naWNhbCBjbG9ja3MgYWxsb3cgdXMgdG8gc2hpZnQgZnJvbSBoYXBwZW5lZCDigJx3aGVu4oCdIHRvIGhhcHBlbmVkIOKAnGJlZm9yZeKAnS48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+U28gaG93IGRvIHdlIGRvIHRoaXM/IFdlbGwsIHRvIHN0YXJ0LCB3ZSBuZWVkIHRvIHNoaWZ0IGZyb20gdGhpbmtpbmcgYWJvdXQgPGVtPndoZW48L2VtPiBhbiBldmVudCBoYXBwZW5lZCB0byB3aGF0IHRoZSBldmVudCBoYXBwZW5lZMKgPGVtPmJlZm9yZTwvZW0+LjwvcD48aDM+U2hpZnRpbmcgZnJvbSDigJx3aGVu4oCdIHRvwqDigJxiZWZvcmXigJ08L2gzPjxwPlRoZSBpZGVhIG9mIG9uZSBldmVudCBoYXBwZW5pbmcgYmVmb3JlIGFub3RoZXIgaXMgY2VudHJhbCB0byBMYW1wb3J04oCZcyBwYXBlci4gSGUgdXNlcyB0aGUgPHN0cm9uZz7ihpI8L3N0cm9uZz4gc2hvcnRoYW5kIG5vdGF0aW9uIHRvIGluZGljYXRlIHRoZSA8c3Ryb25nPjxlbT5oYXBwZW5zIGJlZm9yZTwvZW0+PC9zdHJvbmc+IHJlbGF0aW9uc2hpcCwgb3IgdGhlIGZhY3QgdGhhdCBvbmUgZXZlbnQgaGFwcGVuZWQgYmVmb3JlIGFub3RoZXIuIEZvciBleGFtcGxlLCBpZiB3ZSBrbm93IHRoYXQgb25lIGV2ZW50LCA8ZW0+YTwvZW0+LCBoYXBwZW5lZCBiZWZvcmUgYW5vdGhlciBldmVudCwgPGVtPmI8L2VtPiwgdGhlbiB3ZSBjYW4gc2F5IHRoYXQgPGVtPmE8L2VtPiDihpIgPGVtPmI8L2VtPiwgb3IgPGVtPmEgPC9lbT5oYXBwZW5lZCBiZWZvcmXCoDxlbT5iPC9lbT4uPC9wPjxwPlRoZSBoYXBwZW5zIGJlZm9yZSByZWxhdGlvbnNoaXAgY2FuIGFsc28gYmUgYXBwbGllZCB0cmFuc2l0aXZlbHkuIEluIG90aGVyIHdvcmRzLCB3ZSBjYW4gY3JlYXRlIGEgY2hhaW4gb2YgZXZlbnRzIHdoZXJlIG9uZSBldmVudCBoYXBwZW5lZCBiZWZvcmUgYW5vdGhlci4gSWYgd2Ugc2F5IHRoYXQgPGVtPmE8L2VtPiDihpIgPGVtPmIgPC9lbT5hbmQgPGVtPmIg4oaSIGM8L2VtPiwgdGhlbiBieSB1c2luZyB0aGUgdHJhbnNpdGl2ZSBwcm9wZXJ0eSwgd2UgY2FuIHNheSB0aGF0IDxlbT5hIOKGkiBjPC9lbT4sIG9yIDxlbT5hIDwvZW0+aGFwcGVuZWQgYmVmb3JlIDxlbT5jLiA8L2VtPkFzIHdlIG1pZ2h0IGJlIGFibGUgdG8gaW1hZ2luZSwgd2UgY291bGQgdmVyeSBlYXNpbHkgc3RyaW5nIHRvZ2V0aGVyIGEgY2hhaW4gb2YgZXZlbnRzLCB3aGVyZSBvbmUgZXZlbnQgaGFwcGVucyBiZWZvcmUgYW5vdGhlciwgd2hpY2ggaGFwcGVucyBiZWZvcmUgYW5vdGhlciwgYW5kIHNvIG9uIGFuZCBzb8KgZm9ydGguPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqakJsNTZrZEc1em1UZXdjeXQxSjZWZy5qcGVnIiAvPjxmaWdjYXB0aW9uPlVuZGVyc3RhbmRpbmcgdGhlIOKAnGhhcHBlbmVkIGJlZm9yZeKAnSBub3RhdGlvbi48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+QnV0IHdhaXQgYSBzZWNvbmTigIrigJTigIp3ZSBrZWVwIHRhbGtpbmcgYWJvdXQgZGlmZmVyZW50IGV2ZW50cyBpbiB0aGUgc3lzdGVtLCBidXQgd2UgaGF2ZW7igJl0IHJlYWxseSBjbGFyaWZpZWQgd2hhdCBhbiBldmVudCBjb3VsZCBwb3NzaWJseSBiZSEgQXMgaXQgdHVybnMgb3V0LCBhbiBldmVudCBpbiBhIGRpc3RyaWJ1dGVkIHN5c3RlbSBjYW4gdGFrZSBkaWZmZXJlbnQgZm9ybXMuIEFzIHdlIGtub3csIHRoZXJlIGNhbiBiZSBtYW55IDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvbWFueS1ub2Rlcy1vbmUtZGlzdHJpYnV0ZWQtc3lzdGVtLTk5MjFmODUyMDVjNCI+ZGlmZmVyZW50IG5vZGVzPC9hPiBpbiBhIGRpc3RyaWJ1dGVkIHN5c3RlbS4gRWFjaCBub2RlIGhhcyBpdHMgb3duIGxvY2FsIHN5c3RlbSBjbG9jaywgYW5kIGl0IGlzIGNhcGFibGUgb2YgcHJvY2Vzc2luZyBpdHMgb3duIHRhc2tzLiBIb3dldmVyLCB0aGUgbm9kZXMgY2FuIGFsc28gY29tbXVuaWNhdGUgYmV0d2VlbiBvbmUgYW5vdGhlciwgc2VuZGluZyBtZXNzYWdlcyBiYWNrIGFuZMKgZm9ydGguPC9wPjxwPkFuIDxzdHJvbmc+PGVtPmV2ZW50PC9lbT48L3N0cm9uZz4gZW5jb21wYXNzZXMgYWxsIG9mIHRoZSBkaWZmZXJlbnQgdGhpbmdzIHRoYXQgY2FuIGhhcHBlbiB3aXRoaW4gYW5kIGJldHdlZW4gbm9kZXMgaW4gYSBzeXN0ZW0uIEFuIGV2ZW50IGNvdWxkIGJlIHNvbWV0aGluZyB0aGF0IG9jY3VycyBvbiBhIHNpbmdsZSBwcm9jZXNzIG9yIG5vZGUuIEFuIGV2ZW50IGFsc28gaW5jbHVkZXMgYW55IDxzdHJvbmc+PGVtPnNlbmQgZXZlbnRzPC9lbT48L3N0cm9uZz4sIHdoZXJlIGEgbm9kZSBzZW5kcyBhIG1lc3NhZ2UgdG8gYW5vdGhlciBub2RlIG9yIHByb2Nlc3MuIENvbnZlcnNlbHksIHdlIG11c3QgYWxzbyBjb25zaWRlciA8c3Ryb25nPjxlbT5yZWNlaXZlIGV2ZW50czwvZW0+PC9zdHJvbmc+LCB3aGVuIGEgbm9kZSByZWNlaXZlcyBhbiBpbmNvbWluZyBtZXNzYWdlIGZyb20gZWxzZXdoZXJlIGluIHRoZcKgc3lzdGVtLjwvcD48cD5JbiB0aGUgZXhhbXBsZSBhYm92ZSwgd2UgY2FuIHNlZSBleGFtcGxlcyBvZiBhbGwgdGhyZWUgb2YgdGhlc2UgZXZlbnRzLiBXZSBoYXZlIHR3byBwcm9jZXNzZXMsIFAgYW5kIFEuIFRoZXJlIGlzIG9uZSBldmVudCwgUTMsIHdoaWNoIG9jY3VycyBvbiBwcm9jZXNzIFEgdGhhdCBhcmUgbm90IHJlbGF0ZWQgdG8gc2VuZGluZyBvciByZWNlaXZpbmcgYW55IG1lc3NhZ2VzLiBUaGlzIGlzIG91ciBiYXNpYyBldmVudCB0aGF0IGluZGljYXRlcyB0aGF0IHNvbWV0aGluZyBvY2N1cnJlZCBvbiB0aGUgbm9kZSBmb3IgcHJvY2VzcyBRLiBIb3dldmVyLCB3ZSBhbHNvIGhhdmUgYSBmZXcgc2VuZCBldmVudHM6IFAxLCBRMSwgUTQuIFRoZXNlIGFyZSBhbGwgZXZlbnRzIHRoYXQgaW5kaWNhdGUgdGhhdCB3ZSBhcmUgc2VuZGluZyBtZXNzYWdlcyBvdXQgZnJvbSBhIG5vZGUgdG8gc29tZXdoZXJlIGVsc2UgaW4gdGhlIHN5c3RlbS4gT24gdGhlIG90aGVyIGhhbmQsIFAyLCBQMywgYW5kIFEyIGFyZSBlYWNoIHJlY2VpdmUgZXZlbnRzLCB3aGljaCBpbmRpY2F0ZSB0aGF0IHdlIGhhdmUgcmVjZWl2ZWQgc29tZSBtZXNzYWdlIGZyb20gYW5vdGhlciBub2RlIGluIHRoZcKgc3lzdGVtLjwvcD48cD5Ob3cgdGhhdCB3ZSB1bmRlcnN0YW5kIHdoYXQgYW4gZXZlbnQgaW4gYSBzeXN0ZW0gY291bGQgYmUsIHdlIGNhbiB0dXJuIGJhY2sgdG8gdGhlIGhhcHBlbnMgYmVmb3JlIHJlbGF0aW9uc2hpcC4gV2hlbiB3ZSBzYXkgdGhhdCBhbiBldmVudCA8ZW0+YTwvZW0+IDxlbT7ihpI8L2VtPiA8ZW0+YjwvZW0+LCB3ZSBhcmUgYXNzZXJ0aW5nIHRoYXQgZXZlbnQgPGVtPmE8L2VtPiBvY2N1cnJlZCBiZWZvcmUgPGVtPmI8L2VtPiwgYmVjYXVzZSA8ZW0+YTwvZW0+IGhhcHBlbmVkIGJlZm9yZSA8ZW0+YjwvZW0+LiBXZSBjYW4gc2F5IHRoYXQgdGhlc2UgdHdvIGV2ZW50cyBhcmUgPHN0cm9uZz48ZW0+Y2F1c2FsbHkgb3JkZXJlZDwvZW0+PC9zdHJvbmc+LCB3aGVyZSB0aGUgb3JkZXJpbmcgb2YgdGhlIGV2ZW50cyBpcyBjb250aW5nZW50IHVwb24gb25lIGV2ZW50IGNhdXNpbmcgYW5vdGhlciB0b8KgaGFwcGVuLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKlJwbVAtYVBDaXFNZnZyR0I4MXB1SmcuanBlZyIgLz48ZmlnY2FwdGlvbj5DYXVzYWxseS1vcmRlcmVkIGFuZCBjb25jdXJyZW50IGV2ZW50cyBhY3Jvc3MgdHdvIHByb2Nlc3Nlcy48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+VGhlcmUgYXJlIGEgZmV3IHJ1bGVzIHRvIGNhdXNhbCBvcmRlcmluZyB0aGF0IGFyZSBpbXBvcnRhbnQgZm9yIHVzIHRvIHVuZGVyc3RhbmQuIEluIG9yZGVyIGZvciA8ZW0+YTwvZW0+IDxlbT7ihpI8L2VtPiA8ZW0+YiA8L2VtPnRvIGJlIGNhdXNhbGx5IG9yZGVyZWQsIG9uZSBvZiB0aGUgZm9sbG93aW5nIHRocmVlIHNpdHVhdGlvbnMgbXVzdCBiZcKgdHJ1ZTo8L3A+PG9sPjxsaT5FdmVudHMgPGVtPmE8L2VtPiBhbmQgPGVtPmI8L2VtPiBtdXN0IG9jY3VyIG9uIHRoZSA8c3Ryb25nPjxlbT5zYW1lPC9lbT48L3N0cm9uZz4gPHN0cm9uZz48ZW0+cHJvY2VzczwvZW0+PC9zdHJvbmc+LCBhbmQgPGVtPmE8L2VtPiBtdXN0IG9jY3VyIGJlZm9yZSA8ZW0+YjwvZW0+IG9jY3VycyBvbiB0aGXCoHByb2Nlc3MuPC9saT48bGk+VGhlIGV2ZW50cyBjYW4gb2NjdXIgb24gPHN0cm9uZz48ZW0+ZGlmZmVyZW50PC9lbT48L3N0cm9uZz4gPHN0cm9uZz48ZW0+cHJvY2Vzc2VzPC9lbT48L3N0cm9uZz4gc28gbG9uZyBhcyA8ZW0+YTwvZW0+IGlzIHRoZSBzZW5kIGV2ZW50IHRoYXQgY29ycmVzcG9uZHMgdG8gPGVtPmIsIDwvZW0+d2hpY2ggbXVzdCBiZSBpdHMgcmVjZWl2ZcKgZXZlbnQuPC9saT48bGk+VGhlIGV2ZW50cyBhcmUgPHN0cm9uZz48ZW0+dHJhbnNpdGl2ZWx5IGxpbmtlZDwvZW0+PC9zdHJvbmc+IHdpdGggYW5vdGhlciBldmVudCBpbiB0aGUgc3lzdGVtLCBidXQgPGVtPmE8L2VtPiBzdGlsbCBoYXBwZW5zIGJlZm9yZSA8ZW0+YjwvZW0+LiBGb3IgZXhhbXBsZSwgaWYgPGVtPmE8L2VtPiBoYXBwZW5zIGJlZm9yZSA8ZW0+YzwvZW0+LCBhbmQgPGVtPmM8L2VtPiBoYXBwZW5zIGJlZm9yZSA8ZW0+YjwvZW0+LCB0aGVuIHdlIGtub3cgdGhhdCA8ZW0+YTwvZW0+IDxlbT7ihpLCoGI8L2VtPi48L2xpPjwvb2w+PHA+QXMgbWVzc2FnZXMgdHJhdmVsIHRocm91Z2ggdGltZSBhbmQgYWNyb3NzIHNwYWNlIGZyb20gb25lIHByb2Nlc3MgdG8gYW5vdGhlciBhbmQsIHdlIGNhbiBzdGFydCB0byBjb25zdHJ1Y3QgY2hhaW5zIG9mIGNhdXNhbGx5IGV2ZW50cyAoYWxzbyBjYWxsZWQgPHN0cm9uZz48ZW0+Y2F1c2FsIHBhdGhzPC9lbT48L3N0cm9uZz4pIGFuZCBzZWUgaG93IGRpZmZlcmVudCBldmVudHMgYWNyb3NzIHByb2Nlc3NlcyBhcmUgY29ubmVjdGVkIHRvIG9uZSBhbm90aGVyLiBGb3IgZXhhbXBsZSwgaW4gcHJvY2Vzc2VzIFAgYW5kIFEsIFExPGVtPuKGkjwvZW0+IFAzICh0aHJvdWdoIGV2ZW50IFAyKSwgYW5kIFAxIDxlbT7ihpIgPC9lbT5RNCAodGhyb3VnaCBldmVudHMgUTIgYW5kwqBRMykuPC9wPjxwPkZpbmFsbHksIGl04oCZcyB3b3J0aCBtZW50aW9uaW5nIHRoYXQsIGlmIHR3byBldmVudHMgPGVtPmE8L2VtPiBhbmQgPGVtPmI8L2VtPiBkbyBub3QgaGFwcGVuIGJlZm9yZSBvbmUgYW5vdGhlciwgdGhhbiB3ZSBjYW4gc2F5IHRoYXQgPGVtPmEg4omgJmd0OyBiPC9lbT4gYW5kIDxlbT5iIOKJoCZndDsgYTwvZW0+LCBhbmQgdGhhdCB0aGUgdHdvIGV2ZW50cyBhcmUgPHN0cm9uZz48ZW0+Y29uY3VycmVudDwvZW0+PC9zdHJvbmc+LiBXZSB3aWxsIGNvdmVyIHRoaXMgaW4gbXVjaCBtb3JlIGRlcHRoIGluIHBhcnQgdHdvIG9mIHRoaXMgcG9zdCwgYnV0IGZvciBub3csIHdlIHNob3VsZCBqdXN0IG5vdGUgdGhhdCBjb25jdXJyZW50IGV2ZW50cyBkbyBub3QgaGF2ZSBjYXVzYWwgcGF0aHMgZnJvbSBvbmUgdG/CoGFub3RoZXIuPC9wPjxoMz5Mb2dpY2FsIGNsb2NrcyB0byB0aGXCoHN0YWdlPC9oMz48cD5JbiBhZGRpdGlvbiB0byB0aGUgaWRlYSBvZiDigJxoYXBwZW5zIGJlZm9yZeKAnSwgYW5vdGhlciBjb3JlIGNvbmNlcHQgdGhhdCBMYW1wb3J0IGludHJvZHVjZXMgaW4gaGlzIHBhcGVyIGlzIHRoZSBsb2dpY2FsIGNsb2NrLiBBcyB3ZSBhbHJlYWR5IGtub3csIGVhY2ggbm9kZSBvciBwcm9jZXNzIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtIGhhcyBpdHMgb3duIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvdGlja2luZy1jbG9ja3MtaW4tYS1kaXN0cmlidXRlZC1zeXN0ZW0tZWYyYWE0ZGYwN2EzIj5jb25jZXB0IG9mIHRpbWU8L2E+LCBvciBpdHMgb3duIGxvY2FsIGNsb2NrLiBIb3dldmVyLCBMYW1wb3J04oCZcyB0YWtlIG9uIGxvY2FsIGNsb2NrcyBpcyBkaWZmZXJlbnQgdGhhdCB3aGF0IHdl4oCZdmUgc2VlbsKgYmVmb3JlLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKk9BbUQzV2dvdWdOd3lqLXhleFUwZHcuanBlZyIgLz48ZmlnY2FwdGlvbj5Ib3cgZG8gdGhlIGNsb2NrcyBmYWN0b3LCoGluPzwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5MYW1wb3J0IHN1Z2dlc3RzIHVzaW5nIHNvbWV0aGluZyBkaWZmZXJlbnQgZnJvbSB0aGUgdHlwaWNhbCBwaHlzaWNhbCBjbG9jayB0aGF0IHdlIGFsbCB0aGluayBvZi4gSW5zdGVhZCBvZiB1c2luZyBlYWNoIHByb2Nlc3PigJlzIHBoeXNpY2FsIGNsb2NrIHRvIHRyYWNrIHRoZSBvcmRlciBvZiBldmVudHMsIHdlIGNhbiBpbnN0ZWFkIHVzZSBhIDxzdHJvbmc+PGVtPmNvdW50ZXI8L2VtPjwvc3Ryb25nPi4gVGhlIGNvdW50ZXIgY2FuIHN0YXJ0IHdpdGggYW4gaW5pdGlhbCB0aW1lIChsaWtlIDApLCBhbmQgd2UgY2FuIHRyZWF0IHRoYXQgY291bnRlciBhcyB0aGUgcHJvY2Vzc2VzIG93biBsb2NhbMKgY2xvY2suPC9wPjxwPkxhbXBvcnQgY29udGludWVzIHdpdGggdGhpcyBpZGVhIGJ5IHByb3Bvc2luZyB0aGF0LCBub3Qgb25seSB3aWxsIGV2ZXJ5IHByb2Nlc3Mgd2l0aGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtIGhhdmUgaXRzIG93biBjb3VudGVyIGNsb2NrLCBidXQgZWFjaCA8ZW0+ZXZlbnQ8L2VtPiB0aGF0IGlzIHJlY29yZGVkIG9uIGEgcHJvY2VzcyBzaG91bGQgYWxzbyBoYXZlIGEgPHN0cm9uZz48ZW0+dmFsdWU8L2VtPjwvc3Ryb25nPiBvbiB0aGF0IHByb2Nlc3PigJlzIGxvY2FsIGNsb2NrLiBGdXJ0aGVybW9yZSwgdGhlIHZhbHVlIG9mIGVhY2ggb2YgdGhlc2UgZXZlbnRzIG9uIHRoZSBjbG9jayBtdXN0IG1pcnJvciBhbnkgaGFwcGVuZWQgYmVmb3JlIHJlbGF0aW9uc2hpcHMuIEZvciBleGFtcGxlLCBpZiBldmVudCA8ZW0+YTwvZW0+IDxlbT7ihpIgYjwvZW0+LCB0aGVuIHRoZSBjbG9jayB0aW1lIGZvciB3aGVuIGV2ZW50IDxlbT5hPC9lbT4gb2NjdXJyZWQgbXVzdCBiZSBsZXNzIHRoYW4gdGhlIGNsb2NrIHRpbWUgZm9yIHdoZW5ldmVyIGV2ZW50IDxlbT5iPC9lbT4gb2NjdXJyZWQ7IGluIG90aGVyIHdvcmRzLCBjbG9jayg8ZW0+YTwvZW0+KSAmbHQ7IGNsb2NrKDxlbT5iPC9lbT4pLjwvcD48cD5CeSB1c2luZyBiYXNpYyBjb3VudGVycyBpbnN0ZWFkIG9mIHBoeXNpY2FsIGNsb2NrcywgTGFtcG9ydCBzaW1wbGlmaWVzIGNsb2NrcyBpbnRvIHNvbWV0aGluZyBhIGxpdHRsZSBlYXNpZXIgdG8gZGVhbCB3aXRoLiBUaGVzZSBjb3VudGVyIGNsb2NrcyBhcmUgY2FsbGVkIGxvZ2ljYWwgY2xvY2tzLiBBIDxzdHJvbmc+PGVtPmxvZ2ljYWwgY2xvY2sgPC9lbT48L3N0cm9uZz5pcyBxdWl0ZSBkaWZmZXJlbnQgZnJvbSBhIHBoeXNpY2FsIGNsb2NrIGluIHRoYXQgdGhlcmUgaXMgbm8gY2VudHJhbCBub3Rpb24gb2YgdGltZSwgYW5kIHRoZSBjbG9jayBpcyBqdXN0IGEgY291bnRlciB0aGF0IGluY3JlbWVudHMgYmFzZWQgb24gZXZlbnRzIGluIHRoZcKgc3lzdGVtLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKnhuOU9wRUVPRU5CY2cyS291WURDWFEuanBlZyIgLz48ZmlnY2FwdGlvbj5Mb2dpY2FsIGNsb2NrczogYSBkZWZpbml0aW9uLjwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5FYWNoIHByb2Nlc3MgaW4gYSBkaXN0cmlidXRlZCBzeXN0ZW0gY2FuIHVzZSBhIGxvZ2ljYWwgY2xvY2sgdG8gY2F1c2FsbHkgb3JkZXIgYWxsIHRoZSBldmVudHMgdGhhdCBhcmUgcmVsZXZhbnQgdG8gaXQuIEFzIGV2ZW50cyBvY2N1ciBpbiBhIHByb2Nlc3PigIrigJTigIp3aGV0aGVyIHRoZXkgYXJlIHNlbmQgb3IgcmVjZWl2ZSBldmVudHPigIrigJTigIp0aGUgcHJvY2Vzc+KAmXMgY2xvY2sgY291bnRlciBpcyBpbmNyZW1lbnRlZCBieSBhbiBhcmJpdHJhcnkgYW1vdW50LiBXZeKAmWxsIGxlYXJuIG1vcmUgYWJvdXQgaG93IHRoaXMgd29ya3MgaW4gcHJhY3RpY2UgaW4gcGFydCB0d28gb2YgdGhpcyBwb3N0LiBXZeKAmWxsIGFsc28gYmUgaW50cm9kdWNlZCB0byBMYW1wb3J04oCZcyBhbGdvcml0aG0gZm9yIGluY3JlbWVudGluZyBjb3VudGVycywgYW5kIGhvdyB0byBvYmV5IGNhdXNhbGl0eSBhY3Jvc3MgcHJvY2Vzc2VzLiBUaGVyZeKAmXMgc28gbXVjaCBpbnRlcmVzdGluZyBzdHVmZiB0byBsZWFybjsgdGhhbmtmdWxseSB3ZSBoYXZlIG1vcmUgdGltZSBhbmQgYW5vdGhlciBwb3N0IHRvIGNvdmVyIGl0wqBhbGwhPC9wPjxoMz5SZXNvdXJjZXM8L2gzPjxwPkNvbnZlbmllbnRseSwgTGFtcG9ydOKAmXMgd29yayBvbiBsb2dpY2FsIGNsb2NrcyBhbmQgY2F1c2FsIG9yZGVyaW5nIGlzIHdlbGwtdGF1Z2h0IGFuZCB3cml0dGVuIGFib3V0LiBUaGVyZSBhcmUgYSBsb3Qgb2YgZ3JlYXQgcmVzb3VyY2VzIHRoYXQgaW50cm9kdWNlIHRoZXNlIHRvcGljcywgd2l0aCB2YXJ5aW5nIGNvbXBsZXhpdGllcy4gSWYgeW914oCZZCBsaWtlIHRvIGRvIHNvbWUgZnVydGhlciByZWFkaW5nLCBjaGVjayBvdXQgc29tZSBvZiBteSBmYXZvcml0ZSByZXNvdXJjZXMsIHdoaWNoIEnigJl2ZSBsaXN0ZWTCoGJlbG93ITwvcD48b2w+PGxpPjxhIGhyZWY9Imh0dHBzOi8vbGFtcG9ydC5henVyZXdlYnNpdGVzLm5ldC9wdWJzL3RpbWUtY2xvY2tzLnBkZiI+VGltZSwgQ2xvY2tzLCBhbmQgdGhlIE9yZGVyaW5nIG9mIEV2ZW50cyBpbiBhIERpc3RyaWJ1dGVkIFN5c3RlbTwvYT4sIExlc2xpZcKgTGFtcG9ydDwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9aEs2bTZXQmstZDgmYW1wO3Q9M3MiPlRpbWUsIENsb2NrcyBhbmQgT3JkZXJpbmcgb2YgRXZlbnRzIGluIGEgRGlzdC4gU3lzdGVtPC9hPiwgRGFuIFJ1YmVuc3RlaW48L2xpPjxsaT48YSBocmVmPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUNNQmp2Q3pEVmtZIj5UaW1lIGFuZCBPcmRlcmluZzogTGFtcG9ydCBUaW1lc3RhbXBzPC9hPiwgSW5kcmFuaWzCoEd1cHRhPC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9td2hpdHRha2VyLmdpdGh1Yi5pby9ibG9nL2xhbXBvcnRzX2xvZ2ljYWxfY2xvY2tzLyI+TGFtcG9ydOKAmXMgTG9naWNhbCBDbG9ja3M8L2E+LCBNaWNoYWVsIFdoaXR0YWtlcjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmNzLnJ1dGdlcnMuZWR1L35weGsvcnV0Z2Vycy9ub3Rlcy9jb250ZW50LzA4LWxvZ2ljYWwtY2xvY2tzLXNsaWRlcy5wZGYiPkxvZ2ljYWwgQ2xvY2tzPC9hPiwgUHJvZmVzc29yIFBhdWwgS3J6eXphbm93c2tpPC9saT48L29sPjxpbWcgc3JjPSJodHRwczovL21lZGl1bS5jb20vXy9zdGF0P2V2ZW50PXBvc3QuY2xpZW50Vmlld2VkJnJlZmVycmVyU291cmNlPWZ1bGxfcnNzJnBvc3RJZD1kMDMxN2U0MDcxMTIiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGFsdD0iIj48aHI+PHA+PGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9sb2dpY2FsLXRpbWUtYW5kLWxhbXBvcnQtY2xvY2tzLXBhcnQtMS1kMDMxN2U0MDcxMTIiPkxvZ2ljYWwgVGltZSBhbmQgTGFtcG9ydCBDbG9ja3MgKFBhcnQgMSk8L2E+IHdhcyBvcmlnaW5hbGx5IHB1Ymxpc2hlZCBpbiA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzIj5iYXNlZHM8L2E+IG9uIE1lZGl1bSwgd2hlcmUgcGVvcGxlIGFyZSBjb250aW51aW5nIHRoZSBjb252ZXJzYXRpb24gYnkgaGlnaGxpZ2h0aW5nIGFuZCByZXNwb25kaW5nIHRvIHRoaXMgc3RvcnkuPC9wPl1dPjwvY29udGVudDplbmNvZGVkPgogICAgICAgIDwvaXRlbT4KICAgICAgICA8aXRlbT4KICAgICAgICAgICAgPHRpdGxlPjwhW0NEQVRBW09yZGVyaW5nIERpc3RyaWJ1dGVkIEV2ZW50c11dPjwvdGl0bGU+CiAgICAgICAgICAgIDxsaW5rPmh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvb3JkZXJpbmctZGlzdHJpYnV0ZWQtZXZlbnRzLTI5YzFkZDlkMWVmZj9zb3VyY2U9cnNzLThmNTU5OTNjOTczZS0tLS0tLTI8L2xpbms+CiAgICAgICAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0cHM6Ly9tZWRpdW0uY29tL3AvMjljMWRkOWQxZWZmPC9ndWlkPgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbc29mdHdhcmUtZGV2ZWxvcG1lbnRdXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbY29kZV1dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtjb21wdXRlci1zY2llbmNlXV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW3Byb2dyYW1taW5nXV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW2Rpc3RyaWJ1dGVkLXN5c3RlbXNdXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8ZGM6Y3JlYXRvcj48IVtDREFUQVtWYWlkZWhpIEpvc2hpXV0+PC9kYzpjcmVhdG9yPgogICAgICAgICAgICA8cHViRGF0ZT5UaHUsIDI0IE9jdCAyMDE5IDAyOjI1OjMxIEdNVDwvcHViRGF0ZT4KICAgICAgICAgICAgPGF0b206dXBkYXRlZD4yMDE5LTEwLTI0VDAyOjI1OjMxLjUzOFo8L2F0b206dXBkYXRlZD4KICAgICAgICAgICAgPGNvbnRlbnQ6ZW5jb2RlZD48IVtDREFUQVs8ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKlNPemZSMkNtcjBkTVIzd252dXR2QncuanBlZyIgLz48ZmlnY2FwdGlvbj5PcmRlcmluZyBkaXN0cmlidXRlZCBldmVudHM8L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+T25lIG9mIHRoZSBoYXJkZXN0IHRoaW5ncyBhYm91dCBkaXN0cmlidXRlZCBzeXN0ZW1zIGlzIHRoYXQgd2Ugb2Z0ZW4gZmluZCBvdXJzZWx2ZXMgbmVlZGluZyB0byBhcHByb2FjaCB0aGVtIHZlcnkgZGlmZmVyZW50bHkgdGhhbiBvdGhlciBwcm9ibGVtcyBpbiBjb21wdXRpbmcuIERpc3RyaWJ1dGVkIGNvbXB1dGluZyBmb3JjZXMgdXMgdG8gcmVldmFsdWF0ZSBob3cgd2XigJlkIGFwcHJvYWNoIGV2ZW4gdGhlIHNpbXBsZXN0IG9ic3RhY2xlcyBpbiBhIHNpbmdsZSBzeXN0ZW3CoG1vZGVsLjwvcD48cD5XZSByZWNlbnRseSBiZWdhbiBleHBsb3Jpbmcgb25lIHN1Y2ggZXhhbXBsZSBvZiB0aGlzIHdoZW4gd2UgdG9vayBhIGNsb3NlciBsb29rIGF0IDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvdGlja2luZy1jbG9ja3MtaW4tYS1kaXN0cmlidXRlZC1zeXN0ZW0tZWYyYWE0ZGYwN2EzIj50aWNraW5nIGNsb2NrczwvYT4gYW5kIGhvdyB1bnJlbGlhYmxlIHRoZXkgYXJlIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtISBBcyB3ZSBsZWFybmVkLCB0aGVyZSBpcyBubyBzaW5nbGUgZ2xvYmFsIGNsb2NrIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtLCB3aGljaCBtYWtlcyBpdCBoYXJkIHRvIGV2ZXIgYWdyZWUgb24gd2hhdCB0aW1lIGl0IGlzLiBVbmRlcnN0YW5kaW5nIHRoZSBjYXZlYXRzIG9mIGNsb2NrcyBhbmQgdGltZSBpcyBjcnVjaWFsIHRvIHdyYXBwaW5nIG9uZeKAmXMgaGVhZCBhcm91bmQgdGhlIGRpc3RyaWJ1dGVkIGNvbXB1dGluZyBtb2RlbC48L3A+PHA+QnV0IHdoeSBpcyB0aW1lIDxlbT5zcGVjaWZpY2FsbHk8L2VtPiBzbyBpbXBvcnRhbnQ/IFdoeSBkbyB3ZSByZWFsbHkgY2FyZSB3aGF0IHRpbWUgaXQgaXMsIGFuZCB3aHkgZG9lcyBpdCBtYXR0ZXIgdGhhdCB3ZSBrbm93IHdoZW4gdGhpbmdzIGhhcHBlbmVkPyBBbmQgaWYgaXQgbWF0dGVycywgaG93IGRvIHdlIGdvIGFib3V0IGZpZ3VyaW5nIG91dCB3aGF0IHRpbWUgaXQgaXMgd2l0aG91dCBhIGdsb2JhbCBjbG9jayB0byByZWx5IHVwb24/IEFzIHdl4oCZbGwgbGVhcm4sIGl04oCZcyBub3Qgc28gbXVjaCB0aGUgY2xvY2tzIGFuZCB0aW1lIHRoYXQgd2UgY2FyZSBhYm91dCwgYnV0IHJhdGhlciwgdGhlIGV2ZW50cyB0aGF0IHRoZXnigJlyZSBhbHdheXMgdGllZMKgdG8uPC9wPjxoMz5UaW1lIGluIHRoZSBodW1hbsKgbWluZDwvaDM+PHA+QWx0aG91Z2ggd2XigJl2ZSBhbHJlYWR5IGRpcHBlZCBvdXIgdG9lcyBpbnRvIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvdGlja2luZy1jbG9ja3MtaW4tYS1kaXN0cmlidXRlZC1zeXN0ZW0tZWYyYWE0ZGYwN2EzIj50aGUgdG9waWMgb2YgdGltZTwvYT4sIHRoZXJl4oCZcyBzdGlsbCBhIGxvdCBtb3JlIGxlZnQgZm9yIHVzIHRvIHVuY292ZXIuIEluIGZhY3QsIHdlIHdvbuKAmXQgZXZlbiBiZSBkb25lIHRhbGtpbmcgYWJvdXQgdGltZSBieSB0aGUgZW5kIG9mIHRoaXMgcG9zdCEgTm93LCBpdCBtaWdodCBzZWVtIG9kZCB0byBzcGVuZCBzbyBtdWNoIHRpbWUgbGVhcm5pbmcgYWJvdXQsIHdlbGwsIDxlbT50aW1lPC9lbT4uIFdoeSBkb2VzIHRpbWUgbWF0dGVyIHNvIG11Y2ggaW4gYSBkaXN0cmlidXRlZCBzeXN0ZW0sIGFueXdheT8gSWYgd2UgdGhpbmsgYWJvdXQgaXQgbW9yZSBkZWVwbHksIHdlIG1pZ2h0IHJlYWxpemUgdGhhdCB3ZSBkb27igJl0IHNwZWNpZmljYWxseSBjYXJlIGFib3V0IGtub3dpbmcgd2hhdCB0aW1lIGl0IGlzIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtLiBXaGF0IHdlIGNhcmUgYWJvdXQgaXMgYmUgYWJsZSB0byByZWx5IG9uIHRpbWUgdG8gaGVscCB1cyBvcmRlcsKgdGhpbmdzLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKmdCalRtU01XSmVLYjFVaDVZdTBoQWcuanBlZyIgLz48ZmlnY2FwdGlvbj5XaHkgZG9lcyBrbm93aW5nIHRoZSB0aW1lIGV2ZW4gbWF0dGVyIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtPzwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48YmxvY2txdW90ZT5UaGUgbm90aW9uIG9mIHRpbWUgaGVscHMgdXMgb3JkZXIgZXZlbnRzIGluIGEgc2luZ2xlIHN5c3RlbSBhcyB3ZWxsIGFzIGEgZGlzdHJpYnV0ZWQgb25lLjwvYmxvY2txdW90ZT48cD5UaW1lIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgd2hlbiBpdCBjb21lcyB0byBvcmRlcmluZyBldmVudHMgaW4gc3lzdGVtLiBNb3N0IHByb2dyYW1tZXJzIHdpbGwgcmVseSBvbiBhbmQgZXhwZWN0IHNvbWUga2luZCBvZiB0aW1lIGZvcm1hdCB3aGVuIHRoZXkgZGVhbCB3aXRoIGRhdGEgb3IgcHJvY2Vzc2VzOyB0aGlzIHRpbWUgZm9ybWF0IGlzIHVzdWFsbHkgc29tZXRoaW5nIGxpa2UgYSA8c3Ryb25nPjxlbT50aW1lc3RhbXA8L2VtPjwvc3Ryb25nPiwgd2hpY2ggYXJlIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyB0aGF0IGhhdmUgYmVlbiBlbmNvZGVkIHRvIHJlcHJlc2VudCBhIGNlcnRhaW4gbW9tZW50IGluIHRpbWUuIFdlIHVzZSB0aW1lc3RhbXBzIGluIG9yZGVyIHRvIHRlbGwgd2hlbiBzb21lIGRhdGEgd2FzIGNyZWF0ZWQgb3IgdXBkYXRlZCwgd2hlbiBhIG1lc3NhZ2Ugd2FzIHNlbnQgb3IgcmVjZWl2ZWQsIGFuZCB3aGVuIGEgcHJvY2VzcyB3YXMgc3RhcnRlZCBvciBjb21wbGV0ZWQuIEluIGFjdHVhbGl0eSwgd2UgZG9u4oCZdCBjYXJlIGFib3V0IHRoZSB0aW1lc3RhbXAgb24gaXRzIG93buKAiuKAlOKAiml04oCZcyByZWFsbHkgdGhlIHRpbWVzdGFtcCA8ZW0+YmVpbmc8L2VtPiA8ZW0+dGllZCB0bzwvZW0+IHNvbWUgZGF0YSBvciBldmVudCB0aGF0IG1ha2VzIGl0IHVzZWZ1bCB0b8KgdXMuPC9wPjxwPlRoZSB0cm91YmxlIGlzLCBob3dldmVyLCB0aGF0IHdlIGh1bWFucyBoYXZlIG91ciBvd24gbm90aW9uIG9mIHRpbWUgYW5kIGhvdyBpdCBvdWdodCB0b8Kgd29yay48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpvTFltWEN2SldhNjc3aDI0X2dUYkV3LmpwZWciIC8+PGZpZ2NhcHRpb24+T3VyIGNvbmNlcHQgb2YgdGltZSBpc8KgbGluZWFyITwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5XZSB0ZW5kIHRvIHRoaW5rIG9mIHRpbWUgYXMgYmVpbmcgbGluZWFyOyBhbiBldmVudCBoYXBwZW5zIGF0IOKAnHNvbWXigJ0gdGltZSwgYW5vdGhlciBldmVudCBoYXBwZW5zIGFmdGVyIGl0IGF0IOKAnGFub3RoZXLigJ0gdGltZSwgYW5kIGEgZmluYWwgZXZlbnQgaGFwcGVucyBsYXN0LCBhdCBzb21lIOKAnGZpbmFs4oCdwqB0aW1lLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKlZlbzk5amZQTTJuQUNNdUx6c1RCVmcuanBlZyIgLz48ZmlnY2FwdGlvbj5UaGUgaHVtYW4gbWVudGFsIG1vZGVsIG9mIHRpbWUgYXNzdW1lcyBhIGZld8KgdGhpbmdzLjwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5UaGUgaHVtYW4gbWVudGFsIG1vZGVsIG9mIHRpbWUgYXNzdW1lcyBhIGZld8KgdGhpbmdzLjwvcD48b2w+PGxpPkZpcnN0LCB3ZSBhbGwgYWdyZWUgb24gd2hhdCB0aW1lIGl0IGlzLiBXZSBoYXZlIHRpbWV6b25lcyBhbmQgc2hhcmVkIGNsb2NrcyAoaW5jbHVkaW5nIGEgZ2xvYmFsIGF0b21pYyBjbG9jayksIGFuZCB0aGVyZSBpcyByYXJlbHkgYW55IGRpc2NyZXBhbmN5IGJldHdlZW4gdXMgd2hlbiBpdCBjb21lcyB0byB3aGF0IHRpbWUgaXQgaXMgaW4gYSBnaXZlbiBsb2NhdGlvbi48L2xpPjxsaT5TZWNvbmQsIHdlIHRlbmQgdG8gdGhpbmsgb2YgZXZlbnRzIGhhcHBlbmluZyBhcyBvbmUgYWZ0ZXIgYW5vdGhlci4gRXZlbnQgQSBoYXBwZW5zIGZpcnN0LCB0aGVuIGV2ZW50IEIsIGFuZCBmaW5hbGx5LCBldmVudMKgQy48L2xpPjxsaT5UaGlyZCwgd2UgY2FuIGRldGVybWluZSB0aGUgZXhhY3Qgb3JkZXIgb2YgZXZlbnRzIGJhc2VkIG9uIHdoaWNoIGV2ZW50IGhhcHBlbmVkIGJlZm9yZSBhbm90aGVyLiBJbiBvdGhlciB3b3JkcywgaWYgZXZlbnQgQSBoYXBwZW5lZCBiZWZvcmUgZXZlbnQgQiwgYW5kIHdlIGtub3cgdGhlIHRpbWUgb2YgQSBhbmQgQiwgd2Uga25vdyB0aGUgZXhhY3Qgb3JkZXJpbmcgb2YgdGhlIHR3b8KgZXZlbnRzLjwvbGk+PC9vbD48cD5XaGlsZSB0aGlzIG1pZ2h0IHNlZW0gb2J2aW91cyB0byB1cywgdGhpcyBtZW50YWwgbW9kZWwgb2YgdGltZSBkb2VzbuKAmXQgd29yayBpbiB0aGUgY29udGV4dCBvZiBkaXN0cmlidXRlZCBzeXN0ZW1zISBUaGVyZSBhcmUgc29tZSBtYWpvciBkaWZmZXJlbmNlcyBiZXR3ZWVuIG91ciBodW1hbiBtZW50YWwgbW9kZWwgb2YgaG93IHRpbWUgd29ya3MgYW5kIHRoZSByZWFsaXR5IG9mIHRpbWUgaW4gZGlzdHJpYnV0ZWQgc3lzdGVtcy48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpOcHdkcUYzWE1nUC1wSjd3bUNfREJBLmpwZWciIC8+PGZpZ2NhcHRpb24+VGhlIHJlYWxpdHkgb2YgaG93IHRpbWUgd29ya3MgaW4gYSBkaXN0cmlidXRlZCBzeXN0ZW0gaXMgdmVyeSBkaWZmZXJlbnQgZnJvbSB0aGUgaHVtYW4gbWVudGFswqBtb2RlbC48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+VGhlIGZpcnN0IGRpZmZlcmVuY2UgaXMgb25lIHRoYXQgd2UgYWxyZWFkeSBrbm93OiBkaXN0cmlidXRlZCBzeXN0ZW1zIGhhdmUgPHN0cm9uZz48ZW0+bm8gZ2xvYmFsIGNsb2NrPC9lbT48L3N0cm9uZz4sIHNvIHRoZXJlIGlzIGp1c3Qgbm8gd2F5IHRvIGJlIHN1cmUgb2Ygd2hhdCB0aW1lIGl0IGlzIG9uIGEgZGlmZmVyZW50IG1hY2hpbmUgaW4gYSBkaWZmZXJlbnQgbG9jYXRpb24uIFRoZSBzZWNvbmQgZGlmZmVyZW5jZSB0byBub3RlIGlzIHRoYXQgZXZlbnRzIGRvbuKAmXQganVzdCBoYXBwZW4gb25lIGFmdGVyIGFub3RoZXIhIEV2ZW50cyBjYW4gaGFwcGVuIGF0IHRoZSBzYW1lIHRpbWUsIGluIHBhcmFsbGVsLCBvciA8c3Ryb25nPjxlbT5jb25jdXJyZW50bHk8L2VtPjwvc3Ryb25nPi4gQm90aCBvZiB0aGVzZSBwb2ludHMgbGVhZCB1cyB0byBvbmUgbW9yZSBtYWpvciBkaWZmZXJlbmNlOiBldmVudHMgaGFwcGVuIGluIGRpZmZlcmVudCBwbGFjZXMsIGluIGRpZmZlcmVudCBub2Rlcy9sb2NhdGlvbnMgaW4gYSBzeXN0ZW0uIEJ1dCwgYmVjYXVzZSB0aGV5IGNhbiBoYXBwZW4gYXQgdGhlIHNhbWUgdGltZSwgYW5kIGJlY2F1c2UgaXTigJlzIG5vdCBwb3NzaWJsZSB0byBrbm93IHdoYXQgdGltZSBpdCBpcyB3aXRob3V0IGEgZ2xvYmFsIGNsb2NrLCB0aGUgZXZlbnRzIHRoYXQgb2NjdXIgYWxsIG92ZXIgYSBkaXN0cmlidXRlZCBuZXR3b3JrIGFyZSA8c3Ryb25nPjxlbT5oYXJkIHRvwqBvcmRlcjwvZW0+PC9zdHJvbmc+ITwvcD48cD5UaGUgaHVtYW4gbW9kZWxpbmcgb2YgdGltZSBhbmQgdGhlIHJlYWxpdHkgb2YgdGltZSBpbiBhIGRpc3RyaWJ1dGVkIHN5c3RlbSBhcmUgZWFjaCB0d28gdmVyeSBkaWZmZXJlbnQgYXBwcm9hY2hlcyB0byBob3cgd2UgbWlnaHQgZ28gYWJvdXQgb3JkZXJpbmcgZXZlbnRzIGluIGEgc3lzdGVtLiBJbiB0aGUgaHVtYW4gbW9kZWwgYXBwcm9hY2gsIHdlIGtub3cgZXhhY3RseSB3aGF0IHRpbWUgaXQgaXMsIHNvIGl04oCZcyBlYXN5IHRvIGZpZ3VyZSBvdXQgaG93IHRvIG9yZGVyIHNvbWUgZXZlbnRz4oCK4oCU4oCKd2UgY2FuIGp1c3QgdXNlIGVhY2ggZXZlbnTigJlzIHRpbWVzdGFtcCwgc2luY2Ugd2Uga25vdyB3aGF0IHRpbWUgaXQgaXMhIEJ1dCBpbiB0aGUgZGlzdHJpYnV0ZWQgc3lzdGVtIGFwcHJvYWNoLCB3ZSBkb27igJl0IGhhdmUgdGhlIGx1eHVyeSBvZiBoYXZpbmcgYWxsIHRoZSBpbmZvcm1hdGlvbiAocmVhZDoga25vd2luZyB0aGUgdGltZSkgYWJvdXQgYWxsIHRoZSBldmVudHMgaW4gdGhlwqBzeXN0ZW0uPC9wPjxoMz5Ub3RhbCBhbmQgcGFydGlhbMKgb3JkZXJpbmc8L2gzPjxwPlRoZSBodW1hbiBtb2RlbGluZyBvZiB0aW1lIGFuZCB0aGUgbW9yZSByZWFsaXN0aWMgdmlldyBvZiB0aW1lIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtIGNhbiBiZSBncm91cGVkIGludG8gdHdvIHZlcnkgZGlmZmVyZW50IGFwcHJvYWNoZXMgb2Ygb3JkZXJpbmcgZXZlbnRzLiBMZXTigJlzIGxlYXJuIGEgYml0IG1vcmUgYWJvdXTCoHRoZW0uPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqVkRtN25VM0xSdVoyaFk4TG1McGhGUS5qcGVnIiAvPjxmaWdjYXB0aW9uPlRvdGFsIG9yZGVyIG9mIGV2ZW50czogYSBkZWZpbml0aW9uPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPk91ciB2aWV3IG9mIHRpbWUgYWxpZ25zIHdlbGwgd2l0aCBhIHNpbmdsZSBzeXN0ZW3igJlzIG1vZGVsIG9mIHRpbWUuIEluIGEgc2luZ2xlIHN5c3RlbeKAiuKAlOKAimFzIG9wcG9zZWQgdG8gYSBkaXN0cmlidXRlZCBvbmXigIrigJTigIplYWNoIGV2ZW50IGNhbiBiZSBwbGFjZWQgaW4gYSBzcGVjaWZpYyBvcmRlciwgd2hpY2ggaXMgYmFzZWQgb24gd2hhdCB0aW1lIHRoZXkgb2NjdXJyZWQuIFRoaXMgaXMgYWxzbyBrbm93biBhcyBhIDxzdHJvbmc+PGVtPnRvdGFsIG9yZGVyaW5nPC9lbT48L3N0cm9uZz4gb2bCoGV2ZW50cy48L3A+PHA+V2hlbiBldmVudHMgaW4gYSBzeXN0ZW0gZm9sbG93IGEgdG90YWwgb3JkZXIsIHRoZW4gZXZlcnkgZXZlbnQgaW4gdGhhdCBzeXN0ZW0gaGFzIGEgc3BlY2lmaWMgb3JkZXIgaW4gd2hpY2ggaXQgb2NjdXJyZWQuIEluIG90aGVyIHdvcmRzLCB3aGVuIHdlIGtub3cgZXhhY3RseSB3aGVuIDxlbT5lYWNoPC9lbT4gb2YgdGhlIGV2ZW50cyBvY2N1cnJlZCwgd2Uga25vdyB0aGUgdG90YWwgb3JkZXIgb2YgYWxsIHRoZSBldmVudHMgaW4gYcKgc3lzdGVtLjwvcD48cD5Gb3IgZXhhbXBsZSwgaW4gdGhlIGlsbHVzdHJhdGlvbiBzaG93biBhYm92ZSwgaWYgd2Uga25ldyB0aGF0IGV2ZW50IEEgb2NjdXJyZWQgZmlyc3QsIGZvbGxvd2VkIGJ5IGV2ZW50IEIsIGFuZCBlbmRpbmcgd2l0aCBldmVudCBDLCB0aGVuIHdlIHdvdWxkIGtub3cgdGhlIDxzdHJvbmc+PGVtPnRvdGFsIG9yZGVyPC9lbT48L3N0cm9uZz48ZW0+IDwvZW0+b2YgYWxsIHRoZSBldmVudHMuIEV2ZW50cyBpbiBhIHNpbmdsZSBzeXN0ZW0gY2FuIGJlIHRvdGFsbHkgb3JkZXJlZCBzaW5jZSB3ZSBoYXZlIGEgbG9jYWwgY2xvY2sgdG8gaGVscCB1cyBmaWd1cmUgb3V0IGV4YWN0bHkgd2hlbiBhbiBldmVudCBoYXBwZW5lZCwgd2hpY2ggYWxsb3dzIHVzIHRvIGZpZ3VyZSBvdXQgdGhlIHRvdGFsIG9yZGVyaW5nIG9mIGFsbCB0aGXCoGV2ZW50cy48L3A+PHA+WWV0IGEgZGlzdHJpYnV0ZWQgc3lzdGVtIGlzIHZlcnkgZGlmZmVyZW50IGZyb20gYSBzaW5nbGUgc3lzdGVtISBTdXJlLCBhbiBpbmRpdmlkdWFsIG5vZGUgaW4gYSBzeXN0ZW0gd2lsbCBrbm93IHdoYXQgdGltZSBpdCBpcyBiYXNlZCBvbiBpdHMgbG9jYWwgY2xvY2ssIGJ1dCBpdCB3b27igJl0IGtub3cgd2hhdCB0aW1lIGl0IGlzIG9uIGFub3RoZXIgbm9kZS4gSXTigJlzIGFsbW9zdCBhcyBpZiBlYWNoIG5vZGUgaW4gYSBkaXN0cmlidXRlZCBzeXN0ZW0gY2FuIGdldCBoYWxmd2F5IHRvIGEgdG90YWwgb3JkZXJpbmfigKZpdCBjYW4gb3JkZXIgaXRzIG93biBldmVudHMsIGJ1dCBpZiBpdCByZWNlaXZlcyBhbnkgbWVzc2FnZXMvaW5jb21pbmcgZXZlbnRzIGZyb20gb3RoZXIgbm9kZXMgaW4gdGhlIHN5c3RlbSwgaXQgd29u4oCZdCBrbm93IHdoYXQgdG8gZG8gd2l0aMKgdGhlbS48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSoxTGh3bmRob2VuRmlZaHBPNE1mazN3LmpwZWciIC8+PGZpZ2NhcHRpb24+UGFydGlhbCBvcmRlciBvZiBldmVudHM6IGEgZGVmaW5pdGlvbjwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5UaGlzIGJyaW5ncyB1cyB0byBwYXJ0aWFsIG9yZGVyaW5nLCB3aGljaCBpcyBhIOKAnGxlc3Mgc3VyZeKAnSB2ZXJzaW9uIG9mIHRvdGFsIG9yZGVyaW5nLiBJbiBhIDxzdHJvbmc+PGVtPnBhcnRpYWwgb3JkZXI8L2VtPjwvc3Ryb25nPiwgd2UgY2Fu4oCZdCBiZSBzdXJlIG9mIHRoZSBleGFjdCBvcmRlciBvZiA8ZW0+YWxsPC9lbT4gdGhlIGV2ZW50cyBpbiB0aGUgc3lzdGVtLiBJbnN0ZWFkLCBhbGwgd2UgY2FuIGJlIHN1cmUgYWJvdXQgaXMgdGhlIG9yZGVyIG9mIGV2ZW50cyB0aGF0IGFyZSByZWxpYW50IHVwb24gb25lwqBhbm90aGVyLjwvcD48cD5MZXTigJlzIHRoaW5rIGJhY2sgdG8gb3VyIGV4YW1wbGUgdGhyZWUgZXZlbnRzOiBBLCBCLCBhbmQgQy4gSW4gYSBzaW5nbGUgc3lzdGVtIG9yIGluIGEgc3lzdGVtIHdpdGggYSB0b3RhbCBvcmRlciwgd2Ugd2VyZSBhYmxlIHRvIGtub3cgdGhlIGV4YWN0IG9yZGVyIG9mIGVhY2ggb2YgdGhlc2UgZXZlbnRzLiBCdXQgaW4gYSBkaXN0cmlidXRlZCBzeXN0ZW0sIHRoYXQgd291bGQgaGF2ZSBsaWtlbHkgbm90IGJlZW4gdGhlIGNhc2UhIEluc3RlYWQsIHdlIHByb2JhYmx5IHdvdWxkIGhhdmUgYmVlbiBzdXJlIGFib3V0IHNvbWUgb2YgdGhlIGV2ZW50cywgYnV0IG5vdMKgb3RoZXJzLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKjJuZGpmM19XYkhYR1NBazBzLUdpR0EuanBlZyIgLz48ZmlnY2FwdGlvbj5VbmRlcnN0YW5kaW5nIHBhcnRpYWwgb3JkZXJpbmcgd2l0aCBtdWx0aXBsZcKgZXZlbnRzLjwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5Gb3IgZXhhbXBsZSwgbGV04oCZcyBzYXkgdGhhdCB3ZSBhcmUgc3VyZSBhYm91dCB3aGVuIGV2ZW50IEIgYW5kIGV2ZW50IEMgb2NjdXJyZWQuIEluIGZhY3QsIGxldOKAmXMgc2F5IHRoYXQgd2UgYXJlIGV2ZW4gc3VyZSB0aGF0IGV2ZW50IEIgb2NjdXJyZWQgYmVmb3JlIGV2ZW50IEMuIEJ1dCB3aGF0IGFib3V0IGV2ZW50IEE/IFdl4oCZcmUgbm90IDxlbT5hdCBhbGw8L2VtPiBzdXJlIGFib3V0IHdoZW4gdGhhdCBldmVudCBvY2N1cnJlZCE8L3A+PHA+SW4gcmVhbGl0eSwgYmVjYXVzZSB3ZSBkb27igJl0IGtub3cgd2hlbiBldmVudCBBIG9jY3VycmVkLCBpdCBjb3VsZCBoYXZlIHRoZW9yZXRpY2FsbHkgaGFwcGVuZWQgYXQgYW55IHRpbWU6IGJlZm9yZSBldmVudCBCLCBhZnRlciBldmVudCBDLCBvciBldmVuIHJpZ2h0IGJldHdlZW4gdGhlIHR3byBldmVudHMhIEFsbCB3ZSBjYW4gc2F5IHdpdGggY2VydGFpbnR5IGlzIHRoYXQgZXZlbnQgQiBvY2N1cnJlZCBiZWZvcmXCoEMuPC9wPjxibG9ja3F1b3RlPkluZGVlZCwgb3VyIHBhcnRpYWwgc3VyZW5lc3MgYWJvdXQgaG93IHRvIG9yZGVyIHRoZXNlIGV2ZW50cyBpcyB3aGF0IG1ha2VzIHRoaXMgc2V0IG9mIGV2ZW50cyBhIHBhcnRpYWwgb3JkZXJpbmfigJQgd2XigJlyZSBvbmx5IOKAnHBhcnRpYWxseeKAnSBzdXJlIGFib3V0IHRoZSBvcmRlciBvZiB0aGVzZcKgZXZlbnRzLjwvYmxvY2txdW90ZT48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKnFfNlhNaU1KanMzOVpTUEFndG5oLUEuanBlZyIgLz48ZmlnY2FwdGlvbj5XaXRob3V0IGEgZ2xvYmFsIGNsb2NrLCBkaXN0cmlidXRlZCBzeXN0ZW0gZXZlbnRzIGFyZSBwYXJ0aWFsbHkgb3JkZXJlZC48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+SW4gYSBkaXN0cmlidXRlZCBzeXN0ZW0sIHdlIG1vc3RseSBkZWFsIHdpdGggcGFydGlhbGx5IG9yZGVyZWQgZXZlbnRzLCBzaW1wbHkgYmVjYXVzZSBpbmRpdmlkdWFsIG5vZGVzIGNhbiBiZSBzdXJlIGFib3V0IGhvdyB0byBvcmRlciBsb2NhbCBldmVudHMsIGJ1dCB0aGV5IGNhbuKAmXQgYWx3YXlzIGJlIHN1cmUgYWJvdXQgaG93IHRvIG9yZGVyIGV2ZW50cyB0aGF0IGFyZSBoYXBwZW5pbmcgb24gYSBkaWZmZXJlbnQgbm9kZS4gQSBub2RlIGluIG91ciBkaXN0cmlidXRlZCBzeXN0ZW0gd2lsbCBzZW5kIG1lc3NhZ2VzIG91dCB0byBvdGhlciBub2Rlcywgd2hvIGNhbuKAmXQgbmVjZXNzYXJpbHkgYmUgc3VyZSBvZiB3aGVuIHRoZXkgb2NjdXJyZWQuIFNpbWlsYXJseSBhIG5vZGUgaW4gb3VyIHN5c3RlbSB3aWxsIHJlY2VpdmUgaXRzIG93biBzZXQgb2YgaW5jb21pbmcgbWVzc2FnZXMsIGFuZCBpdCBjYW7igJl0IGJlIHN1cmUgb2Ygd2hhdCB0aW1lIHRob3NlIG1lc3NhZ2VzIHdlcmUgc2VudCzCoGVpdGhlciE8L3A+PHA+U28gaG93IGRvIHdlIHJlY29uY2lsZSB0aGlzIGxhY2sgb2Yga25vd2xlZGdlIHRocm91Z2hvdXQgb3VyIHN5c3RlbT8gV2VsbCwgaXQgaW52b2x2ZXMgc29tZSByZWZyYW1pbmcgb2YgaG93IHdlIHRoaW5rIGFib3V0IHRpbWXigKZhbmQgd2hldGhlciB3ZSBldmVuIG5lZWQgaXQgYXQgYWxswqAoPyEpLjwvcD48aDM+TWF5YmUgdGltZSBkb2VzbuKAmXTCoG1hdHRlcjwvaDM+PHA+SW4gdGhlIGJlZ2lubmluZyBvZiB0aGlzIHBvc3QsIHdlIGFza2VkIG91cnNlbHZlcyB3aHkgd2UgZXZlbiA8ZW0+Y2FyZWQ8L2VtPiBhYm91dCB0aW1lLiBXZSByZWFsaXplZCB0aGF0IHRoZSByZWFzb24gaXQga2VwdCBjb21pbmcgdXAgd2FzIGJlY2F1c2Ugd2UgcmVsaWVkIG9uIHRpbWUgdG8gb3JkZXIgZXZlbnRzIGluIG91ciBzeXN0ZW0uIEFsb25nIHRoZSB3YXksIHdlIGxlYXJuZWQgdGhhdCBzb21ldGltZXMgd2UgY2FuIGJlIHN1cmUgYWJvdXQgdGhlIG9yZGVyIG9mIGV2ZW50cyAodG90YWwgb3JkZXJpbmcpIGFuZCBvdGhlciB0aW1lcywgd2VsbCwgd2UgY2Fu4oCZdCBiZSBzdXJlIG9mIGV2ZXJ5dGhpbmcgKHBhcnRpYWwgb3JkZXJpbmcpLiBCdXQgaWYgd2UgY2lyY2xlIGJhY2sgdG8gb3VyIG9yaWdpbmFsIHF1ZXN0aW9uLCB3ZSBtaWdodCByZWFsaXplIHRoYXQgd2UgZG9u4oCZdCBhY3R1YWxseSBjYXJlIGFib3V0IDxlbT50aW1lPC9lbT4sIGJ1dCByYXRoZXIgdGhlIG9yZGVyIGluIHdoaWNoIHRoaW5nc8KgaGFwcGVuLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKlc5eEUtNjIzby13bmV0aDNmOHhGb3cuanBlZyIgLz48ZmlnY2FwdGlvbj5NYXliZSB0aW1lIGl0c2VsZiBpc27igJl0IGltcG9ydGFudCEgTWF5YmUgd2UganVzdCBjYXJlIGFib3V0IHRoZSBvcmRlciBvZsKgdGhpbmdzLjwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5QZXJoYXBzIHdlIGRvbuKAmXQgYWN0dWFsbHkgbmVlZCB0byB3b3JyeSBhYm91dCB0aGUgZXhhY3QgdGltZSB0aGF0IGVhY2ggZXZlbnQgaW4gb3VyIHN5c3RlbSBvY2N1cnJlZC4gSW5zdGVhZCwgbWF5YmUgd2Ugc2hvdWxkIHRyeSB0byBqdXN0IGZpZ3VyZSBvdXQgd2hlbiB0aG9zZSBldmVudHMgaGFwcGVuZWQgaW4gYSB3YXkgdGhhdCBkb2VzbuKAmXQgPGVtPnJlcXVpcmUgdXM8L2VtPiB0byBldmVuIHRoaW5rIGFib3V0IGNsb2NrcyBvcsKgdGltZSE8L3A+PHA+QWxsIHdlIHJlYWxseSB3YW50IHRvIGtub3cgaXMgdGhlIG9yZGVyIGluIHdoaWNoIHNvbWUgZXZlbnRzIG9jY3VycmVkLiBBbmQgd2h5IGRvIHdlIGNhcmUgYWJvdXQgdGhlIG9yZGVyaW5nIG9mIGV2ZW50cz8gV2VsbCwgdGhlIG1ham9yIGJlbmVmaXQgb2Ygb3JkZXJpbmcgZXZlbnRzIGlzIHNvIHRoYXQgd2UgY2FuIGZpZ3VyZSBvdXQgaG93IG9uZSBldmVudCBjYXVzZWQgYW5vdGhlciB0byBvY2N1ci4gU28sIHRoZSBxdWVzdGlvbiBpczogaG93IGNhbiB3ZSBnZXQgdGhlIGJlbmVmaXQgb2Ygb3JkZXJpbmcgZXZlbnRzIHdpdGhvdXQgYWxsIHRoZSBoZWFkYWNoZSBvZiBmaWd1cmluZyBvdXQgdGhlIHRpbWUgYXQgd2hpY2ggZWFjaCBldmVudCBoYXBwZW5lZD88L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpoY0t5SV9RR3d5dVhhYUVYSGFUeFZRLmpwZWciIC8+PGZpZ2NhcHRpb24+Q2F1c2FsIG9yZGVyaW5nOiBhIHNuZWFrwqBwZWFrITwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5UaGUgYW5zd2VyIHRvIHRoaXMgbXlzdGVyeSBpcyA8c3Ryb25nPjxlbT5jYXVzYWwgb3JkZXJpbmc8L2VtPjwvc3Ryb25nPiwgd2hpY2ggaGVscHMgdXMgb3JkZXIgZXZlbnRzIG5vdCBiYXNlZCBvbiB0aGUgPGVtPnRpbWU8L2VtPiB0aGF0IHRoZXkgb2NjdXJyZWQsIGJ1dCByYXRoZXIsIGJhc2VkIG9uIGNhdXNlIGFuZCBlZmZlY3QuIENhdXNhbCBvcmRlcmluZyByZWZyYW1lcyBob3cgd2UgdGhpbmsgYWJvdXQgZXZlbnRzLiBJZiB3ZSBjYW4ganVzdCBmaWd1cmUgb3V0IHdoaWNoIGV2ZW50cyBjYXVzZSA8ZW0+b3RoZXI8L2VtPiBldmVudHMsIHdlIGNhbiBjb21lIHVwIHdpdGggYSBsb29zZSBvcmRlcmluZyBvZiBob3cgdGhvc2UgZXZlbnRzIG9jY3VycmVkLjwvcD48cD5JbiBvdGhlciB3b3Jkczogd2UgZG9u4oCZdCBuZWVkIHRvIGNhcmUgYWJvdXQgdGltZSBhbnltb3JlISBXZSBjYW4gc29ydCBvZiBza2lydCBhcm91bmQgaXQsIGFuZCBqdW1wIHJpZ2h0IHRvIHRoZSBtYXR0ZXIgYXQgaGVhcnQ6IGZpZ3VyaW5nIG91dCBpZiBvbmUgZXZlbnQgY2FtZSBiZWZvcmUgYW5vdGhlci4gSW4gdGhlIG5leHQgcG9zdCwgd2XigJlsbCBkaXZlIGludG8gdGhlIGxvZ2ljIGJlaGluZCBjYXVzYWwgb3JkZXJpbmcgYW5kIGZpZ3VyaW5nIG91dCB0aGUgY2hyb25vbG9naWNhbCByZWxhdGlvbnNoaXBzIGJldHdlZW4gZXZlbnRzLiBJbiB0aGUgbWVhbnRpbWUsIHJlc3QgZWFzeSBrbm93aW5nIHRoYXQgd2XigJl2ZSBnb3QgYSAobG9naWNhbCkgdGltZSBzb2x1dGlvbiBhaGVhZCBvZsKgdXMuPC9wPjxoMz5SZXNvdXJjZXM8L2gzPjxwPlVuZGVyc3RhbmRpbmcgdGhlIG9yZGVyaW5nIG9mIGV2ZW50cyBpbiBhIGRpc3RyaWJ1dGVkIHN5c3RlbSBpcyBzdXBlciBoZWxwZnVsIHRvIGtub3cgYmVmb3JlIGxlYXJuaW5nIGFib3V0IG1vcmUgY29tcGxleCB0aW1lLXJlbGF0ZWQgdG9waWNzLiBJdCBjYW4gYmUgaGFyZCB0byBmaW5kIHJlc291cmNlcyB0aGF0IHNwZWNpZmljYWxseSBleHBsYWluIHRvdGFsIGFuZCBwYXJ0aWFsIG9yZGVyaW5nIGluIHRoZSBjb250ZXh0IG9mIGRpc3RyaWJ1dGVkIHN5c3RlbXMsIGJ1dCB0aGVyZSBhIGZldyB0aGF0IGRvIGEgcHJldHR5IGdvb2Qgam9iLCB3aGljaCBJ4oCZdmUgbGlzdGVkwqBiZWxvdyE8L3A+PG9sPjxsaT48YSBocmVmPSJodHRwOi8vYm9vay5taXh1Lm5ldC9kaXN0c3lzL3RpbWUuaHRtbCI+RGlzdHJpYnV0ZWQgU3lzdGVtcyBmb3IgRnVuIGFuZCBQcm9maXQ8L2E+LCBNaWtpdG/CoFRha2FkYTwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ2MjA3NzkvcGFydGlhbC1vcmRlcmluZy1vZi1ldmVudHMtaW4tYS1kaXN0cmlidXRlZC1zeXN0ZW0iPlBhcnRpYWwgb3JkZXJpbmcgb2YgZXZlbnRzIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtPC9hPiwgSmVzc2XCoEJhbmdzPC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5jcy5jb3JuZWxsLmVkdS9jb3Vyc2VzL2NzNjQxMC8yMDE4ZmEvc2xpZGVzLzE0LWxhbXBvcnQtY2xvY2tzLnBkZiI+RGlzdHJpYnV0ZWQgU3lzdGVtczogT3JkZXJpbmcgYW5kIENvbnNpc3RlbmN5PC9hPiwgUHJvZmVzc29yIEEuRi7CoENvb3BlcjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2NhdHRlcmVkLXRob3VnaHRzLm5ldC93cml0aW5nL2NhdXNhbC1vcmRlcmluZy8iPkNhdXNhbCBPcmRlcmluZzwvYT4sIEphbWllwqBCcmFuZG9uPC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9sYW1wb3J0LmF6dXJld2Vic2l0ZXMubmV0L3B1YnMvdGltZS1jbG9ja3MucGRmIj5UaW1lLCBDbG9ja3MsIGFuZCB0aGUgT3JkZXJpbmcgb2YgRXZlbnRzIGluIGEgRGlzdHJpYnV0ZWQgU3lzdGVtPC9hPiwgTGVzbGllwqBMYW1wb3J0PC9saT48L29sPjxpbWcgc3JjPSJodHRwczovL21lZGl1bS5jb20vXy9zdGF0P2V2ZW50PXBvc3QuY2xpZW50Vmlld2VkJnJlZmVycmVyU291cmNlPWZ1bGxfcnNzJnBvc3RJZD0yOWMxZGQ5ZDFlZmYiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGFsdD0iIj48aHI+PHA+PGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9vcmRlcmluZy1kaXN0cmlidXRlZC1ldmVudHMtMjljMWRkOWQxZWZmIj5PcmRlcmluZyBEaXN0cmlidXRlZCBFdmVudHM8L2E+IHdhcyBvcmlnaW5hbGx5IHB1Ymxpc2hlZCBpbiA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzIj5iYXNlZHM8L2E+IG9uIE1lZGl1bSwgd2hlcmUgcGVvcGxlIGFyZSBjb250aW51aW5nIHRoZSBjb252ZXJzYXRpb24gYnkgaGlnaGxpZ2h0aW5nIGFuZCByZXNwb25kaW5nIHRvIHRoaXMgc3RvcnkuPC9wPl1dPjwvY29udGVudDplbmNvZGVkPgogICAgICAgIDwvaXRlbT4KICAgICAgICA8aXRlbT4KICAgICAgICAgICAgPHRpdGxlPjwhW0NEQVRBW1RpY2tpbmcgQ2xvY2tzIGluIGEgRGlzdHJpYnV0ZWQgU3lzdGVtXV0+PC90aXRsZT4KICAgICAgICAgICAgPGxpbms+aHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy90aWNraW5nLWNsb2Nrcy1pbi1hLWRpc3RyaWJ1dGVkLXN5c3RlbS1lZjJhYTRkZjA3YTM/c291cmNlPXJzcy04ZjU1OTkzYzk3M2UtLS0tLS0yPC9saW5rPgogICAgICAgICAgICA8Z3VpZCBpc1Blcm1hTGluaz0iZmFsc2UiPmh0dHBzOi8vbWVkaXVtLmNvbS9wL2VmMmFhNGRmMDdhMzwvZ3VpZD4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW2Rpc3RyaWJ1dGVkLXN5c3RlbXNdXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbY29kZV1dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtjb21wdXRlci1zY2llbmNlXV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW3Byb2dyYW1taW5nXV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW3NvZnR3YXJlLWRldmVsb3BtZW50XV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGRjOmNyZWF0b3I+PCFbQ0RBVEFbVmFpZGVoaSBKb3NoaV1dPjwvZGM6Y3JlYXRvcj4KICAgICAgICAgICAgPHB1YkRhdGU+VGh1LCAwMyBPY3QgMjAxOSAwMzo1MDo1MiBHTVQ8L3B1YkRhdGU+CiAgICAgICAgICAgIDxhdG9tOnVwZGF0ZWQ+MjAxOS0xMC0wM1QwMzo1MDo1Mi45ODNaPC9hdG9tOnVwZGF0ZWQ+CiAgICAgICAgICAgIDxjb250ZW50OmVuY29kZWQ+PCFbQ0RBVEFbPGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpOQzhCVjdlbVZxZ0J0eHJIR2hLRkRnLmpwZWciIC8+PGZpZ2NhcHRpb24+VGlja2luZyBjbG9ja3MgaW4gYSBkaXN0cmlidXRlZCBzeXN0ZW08L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+V2Ugb2Z0ZW4gc3BlbmQgYSBsb3Qgb2Ygb3VyIGxpdmVzIGJsaXNzZnVsbHkgdW5hd2FyZSBvZiBob3cgc29tZXRoaW5nIHdvcmtzLiBNb3N0IG9mIHRoZSB0aW1lLCB0aGlzIGVuZHMgdXAgYmVpbmcgYW4gb2theSB0aGluZywgc2luY2Ugd2UgZG9u4oCZdCByZWFsbHkgbmVlZCB0byBrbm93IGhvdyBldmVyeXRoaW5nIGFyb3VuZCB1cyB3b3Jrcy4gQnV0IHRoZXJlIGFyZSBzb21lIHRpbWVzIHdoZW4gd2UgcmVhbGl6ZSBqdXN0IGhvdyBtdWNoIGNvbXBsZXhpdHkgYmVlbiBoaWRkZW4gZnJvbSB1cywgYWJzdHJhY3RlZCBvdXQsIHR1Y2tlZCBhd2F5IG5lYXRseSBzbyB0aGF0IHdlIG5ldmVyIGhhdmUgdG8gdGhpbmsgYWJvdXTCoGl0LjwvcD48cD5JIGhhZCBvbmUgb2YgdGhlc2UgcmVhbGl6YXRpb25zIHJlY2VudGx5IHdoZW4gSSBkaXNjb3ZlcmVkIHRoYXQgSSBoYWQgbmV2ZXIgdGhvdWdodCB0d2ljZSBhYm91dCBhIHNpbXBsZSB0aGluZyB0aGF0IEkgd29yayB3aXRoIG9uIGFuIGhvdXJseSBiYXNpczogdGltZSEgSeKAmXZlIGJlZW4gdXNpbmcgY29tcHV0ZXJzIGZvciB0aGUgYmV0dGVyIHBhcnQgb2YgbXkgbGlmZSwgZmlyc3QgYXMgYSBjb25zdW1lciBvZiB0ZWNobm9sb2d5IGFuZCwgbGF0ZXIsIGFzIGEgY3JlYXRvciBvZiBpdC4gSXQgd2FzIG9ubHkgdW50aWwgSSBiZWdhbiBsZWFybmluZyBhYm91dCBkaXN0cmlidXRlZCBzeXN0ZW1zIChmb3IgdGhpcyBzZXJpZXMhKSB0aGF0IEkgdW5kZXJzdG9vZCB0aGF0IEkgZGlkbuKAmXQga25vdyBhcyBtdWNoIGFzIEkgdGhvdWdodCBhYm91dCB0ZWxsaW5nIHRpbWUsIG11Y2ggbGVzcyBob3cgdGhlIGNvbXB1dGVycyB0aGF0IHdlIHVzZSBldmVyeWRheSBlbmQgdXAgZGVjaWRpbmcgd2hhdCB0aW1lIGl0wqBpcy48L3A+PHA+V2hlbiBpdCBjb21lcyB0byBkaXN0cmlidXRlZCBjb21wdXRpbmcsIHRpbWUgaXMgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBiZWFzdC4gQnV0IGJlZm9yZSB3ZSBjYW4gcmVhbGx5IGdldCBpbnRvIHRpbWUgaW4gZGlzdHJpYnV0ZWQgc3lzdGVtcywgd2XigJlsbCBmaXJzdCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGluZGl2aWR1YWwgbWFjaGluZXMgdHJhY2sgdGltZS4gU28gbGV04oCZcyBzdGFydCBsZWFybmluZyBhYm91dCB3aGF0IGV4YWN0bHkgbWFrZXMgdGltZSBzbyBkYXJuwqB0cmlja3kuPC9wPjxoMz5UcmFja2luZyB0aW1lPC9oMz48cD5Nb3N0IGRldmljZXMgdGhlc2UgZGF5cyBoYXZlIHNvbWUgY29uY2VwdCBvZiB3aGF0IGRheSBpdCBpcyBhbmQgd2hhdCB0aW1lIGl0IGlzLiBXaXRoIHRoZSBleGNlcHRpb24gb2Ygc29tZSDigJxpbnRlcm5ldCBvZiB0aGluZ3PigJ0gZGV2aWNlcyAobGlrZSBhIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnJhc3BiZXJyeXBpLm9yZy8iPlJhc3BiZXJyeSBQaTwvYT4pLCBhbGwgbWFjaGluZXMgaGF2ZSBzb21lIG5vdGlvbiBvZiB0aW1lLiBCdXQgaG93IGRvIHRoZXkgZmlndXJlIG91dCB0aGUgZGF5IGFuZMKgdGltZT88L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpFamo3VHBpOGRVeUpyd2RqaVA0VE9BLmpwZWciIC8+PGZpZ2NhcHRpb24+UmVhbC10aW1lIGNsb2NrczogYSBkZWZpbml0aW9uPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPlRoZSBhbnN3ZXIgaXM6IHdpdGggYSBjbG9jayEgTm93LCB0aGlzIG1pZ2h0IHNlZW0gb2J2aW91cyBhdCBmaXJzdCwgYnV0IGl0IGdldHMgYSBsaXR0bGUgdHJpY2tlciBhcyB3ZSBnbyBvbi4gQSBjb21wdXRlciB0aGF0IG5lZWRzIHRvIGJlIGFibGUgdG8gdGVsbCB0aGUgdGltZSB3aWxsIG9mdGVuIGhhdmUgYW4gaW50ZXJuYWwgY2xvY2sgdGhhdCBpcyBidWlsdCByaWdodCBpbnRvIGl0cyBoYXJkd2FyZSBpbiB0aGUgZm9ybSBvZiBhbiBpbnRlZ3JhdGVkIGNpcmN1aXQuIFRoaXMgY2lyY3VpdCBpcyBvZnRlbiBidWlsdCByaWdodCBvbnRvIHRoZSBtb3RoZXJib2FyZC4gVGhpcyBzbWFsbCBwaWVjZSBvZiBoYXJkd2FyZSBpcyBrbm93biBhcyBhIDxzdHJvbmc+PGVtPnJlYWwtdGltZSBjbG9jazwvZW0+PC9zdHJvbmc+LCBvciA8c3Ryb25nPjxlbT5SVEM8L2VtPjwvc3Ryb25nPiBmb3LCoHNob3J0LjwvcD48cD5SVENzIGFyZSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcgYmVjYXVzZSB0aGV5IGNvbWUgd2l0aCBhbiBhbHRlcm5hdGUgcG93ZXIgc291cmNlIChsaWtlIGEgYmF0dGVyeSksIHdoaWNoIGFsbG93cyB0aGVtIHRvIGNvbnRpbnVlIHdvcmtpbmcgZXZlbiBpZiBhIG1hY2hpbmUgaXMgcG93ZXJlZCBvZmYhIFRoaXMgbWlnaHQgc2VlbSBvYnZpb3VzIHRvIHVzIHRvZGF5LCBidXQgdGhlIHVzZSBvZiBSVENzIHdhcyBhIHByZXR0eSBzaWduaWZpY2FudCBtaWxlc3RvbmUgaW4gdGhlIGhpc3Rvcnkgb2YgY29tcHV0aW5nOyBlYXJseSBwZXJzb25hbCBjb21wdXRlcnMgZGlkbuKAmXQgYWN0dWFsbHkgY29tZSB3aXRoIFJUQ3MgYnVpbHQtaW4sIGFuZCB0aGV5IHdlcmUgYWRkZWQgaW4gbGF0ZXIgb24uIE5vdywgd2XigJlsbCBmaW5kIHJlZnJpZ2VyYXRvcnMgYW5kIG1pY3Jvd2F2ZXMgdGhhdCBoYXZlIHRoZXNlIGxpdHRsZSBjbG9ja3MgYnVpbHQgcmlnaHQgaW4hIFRoYXTigJlzIHByZXR0eSB3aWxkIGlmIHlvdSB0aGluayBhYm91dMKgaXQuPC9wPjxwPlRoZSBSVEMgaXMgcmVzcG9uc2libGUgZm9yIGtlZXBpbmcgdHJhY2sgb2YgdGhlIGN1cnJlbnQgdGltZSwgYW5kIHdlIGNhbiB0aGluayBvZiBpdCBhcyBvbmUgaW5kaXZpZHVhbCBtYWNoaW5l4oCZcyA8c3Ryb25nPjxlbT5zeXN0ZW0gY2xvY2s8L2VtPjwvc3Ryb25nPi4gSXTigJlzIGltcG9ydGFudCB0byBub3RlIHRoYXQgdGhpcyBjbG9jayBpcyBzcGVjaWZpYyB0byB0aGUg4oCcc3lzdGVt4oCdIG9mIHRoZSBtYWNoaW5lOyBpbiBvdGhlciB3b3JkcywgYW55IHByb2Nlc3Mgb3IgdGFza3Mgb3Igd29yayB0aGF0IHRoZSBtYWNoaW5lIGRvZXMgdGhhdCByZWxpZXMgb24gdGhlIHRpbWUgd2lsbCBpbmhlcmVudGx5IHJlbHkgdXBvbiB3aGF0ZXZlciB0aW1lIHRoZSA8ZW0+c3lzdGVtIGNsb2NrPC9lbT4gc2F5cyBpdMKgaXMuPC9wPjxwPlNvLCBob3cgZG9lcyB0aGlzIHBoeXNpY2FsIGNsb2NrIHdvcmssIGV4YWN0bHk/IEFzIGl0IHR1cm5zIG91dCwgZGVlcCBpbnNpZGUgdGhlIGludGVncmF0ZWQgY2lyY3VpdCBpcyBhIGNyeXN0YWwsIHdoaWNoIHZpYnJhdGVzIG9yIG9zY2lsbGF0ZXM7IGl04oCZcyBrbm93biBhcyBhIDxzdHJvbmc+PGVtPmNyeXN0YWwgb3NjaWxsYXRvcjwvZW0+PC9zdHJvbmc+LjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKi1Kd0JQeDFhT0dmTGNwbEVSNndaY2cuanBlZyIgLz48ZmlnY2FwdGlvbj5FdmVyeSBjb21wdXRlciBoYXMgaXRzIG93biBwaHlzaWNhbMKgY2xvY2s8L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+V2l0aG91dCBnZXR0aW5nIGludG8gdGhlIG5pdHR5LWdyaXR0eSAocmVhZDogcGh5c2ljcykgb2YgdGhpcyB3b3JrcyB1bmRlciB0aGUgaG9vZCwgYWxsIHdlIHJlYWxseSBuZWVkIHRvIGtub3cgZm9yIG91ciBwdXJwb3NlcyBpcyB0aGF0IHRoZSB2aWJyYXRpb25zIG9mIHRoZSBjcnlzdGFsIGFyZSBjYXB0dXJlZCBhbmQgY291bnRlZCBieSB0aGUgY2xvY2suIEFzIHRoZSBjcnlzdGFsIHZpYnJhdGVzLCB0aGUgY2xvY2sga2VlcHMgY291bnQgb2YgZWFjaCB2aWJyYXRpb24gaW4gdGhlIGZvcm0gb2YgPHN0cm9uZz48ZW0+dGlja3M8L2VtPjwvc3Ryb25nPiwgYW5kIGFzIGl0IGNvdW50cyBvbmUgdGljayBhZnRlciBhbm90aGVyLCBpdCBrZWVwcyB0cmFjayBvZiB0aGUgdGltZS4gT2YgY291cnNlLCB0aGlzIGJlZ3MgdGhlIHF1ZXN0aW9uIG9mIHdoZXJlIGl0IGtlZXBzIGNvdW50IG9mIGVhY2ggdGljayB0aGF0IGl0IHJlY29yZHMuIFRoZSBwaHlzaWNhbCBjbG9jayB1c2VzIGEgPHN0cm9uZz48ZW0+YmluYXJ5IGNvdW50ZXIgY2lyY3VpdDwvZW0+PC9zdHJvbmc+LCBhIHNpbXBsZSBjaXJjdWl0IHRoYXQgZG9lcyBub3RoaW5nIG1vcmUgdGhhbiBjb3VudCBpbiBiaW5hcnksIGluIG9yZGVyIHRvIHN0b3JlIHRoZXNlIHRpY2tzLiBDb252ZW5pZW50bHksIHRoZSBiaW5hcnkgY291bnRlciBjaXJjdWl0ICh0aGUgc3lzdGVtIGNsb2NrKSBpcyB3aGVyZSBhIG1hY2hpbmUgZGVyaXZlcyBpdHMgPHN0cm9uZz48ZW0+c3lzdGVtIHRpbWU8L2VtPiA8L3N0cm9uZz5mcm9tLiBJbmRlZWQsIGp1c3QgYXMgYSBtYWNoaW5lIGhhcyBhIHN5c3RlbSBjbG9jaywgaXQgYWxzbyBoYXMgaXRzIG93biBub3Rpb24gb2YgdGltZSB0aGF0IGlzIDxlbT5iYXNlZDwvZW0+IG9uIHRoYXTCoGNsb2NrITwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKjAtcGl2Nm1TQldKT2FVRHJuMmNSeXcuanBlZyIgLz48ZmlnY2FwdGlvbj5TeXN0ZW0gdGltZTogYSBkZWZpbml0aW9uPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPkFuIGludGVyZXN0aW5nIHRoaW5nIGFib3V0IHN5c3RlbSB0aW1lIGlzIHRoYXQgaXQgYWx3YXlzIGlzIGNhbGN1bGF0aW5nIHRpbWUgYmFzZWQgb24gPGVtPndoZW48L2VtPiB0aGUgc3lzdGVtIGNsb2NrIGJlZ2FuIGNvdW50aW5nLiBUaGlzIG1lYW5zIHRoYXQgaWYgd2Ugc2V0IHRoZSBzeXN0ZW0gY2xvY2sgb24gYSBuZXcgY29tcHV0ZXIgdG8gYmUgZml2ZSBtaW51dGVzIHNsb3cgb3IgdHdvIGRheXMgZmFzdCwgdGhlbiBvdXIgc3RhcnRpbmcgcG9pbnQgZm9yIG91ciBzeXN0ZW0gdGltZSBvciB0aGUg4oCcemVyb+KAnSBvZiB3aGVyZSB3ZSBzdGFydCBvdXIgY291bnRpbmcgb2YgdGltZSB3aWxsIGVuZCB1cCBiZWluZyBlaXRoZXIgZml2ZSBtaW51dGVzIGJlaGluZCBvciB0d28gZGF5cyBhaGVhZC4gSW4gb3RoZXIgd29yZHMsIHdl4oCZbGwgYmUgbWVhc3VyaW5nIOKAnHRpY2tz4oCdIGJhc2VkIG9uIHdoYXRldmVyIGRhdGUgb3IgdGltZSB3ZSBzZXTigIrigJTigIpub3Qgb24gd2hhdCB0aGUgYWN0dWFsIHRpbWXCoGlzLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKmx1TERJNFpzSmFpVHdGTnZtR0w3U1EuanBlZyIgLz48ZmlnY2FwdGlvbj5VbmRlcnN0YW5kaW5nIGhvdyBVbml4IHRpbWXCoHdvcmtzPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPlRvIGhlbHAgYXZvaWQgc29tZSBvZiB0aGUgY29uZnVzaW9uIG9mIHRoaXMgcHJvYmxlbSwgbW9zdCBtYWNoaW5lcyBmb2xsb3cgc29tZSBraW5kIG9mIGNvbnZlbnRpb24gd2hlbiBpdCBjb21lcyB0byBkZWNpZGluZyB3aGF0IHRoYXQgc3RhcnRpbmcgcG9pbnQgc2hvdWxkIGJlLiBGb3IgZXhhbXBsZSwgbWFjaGluZXMgdGhhdCBoYXZlIFVuaXggb3BlcmF0aW5nIHN5c3RlbXMgaGF2ZSBzdGFuZGFyZGl6ZWQgYXJvdW5kIDxzdHJvbmc+PGVtPlVuaXggdGltZTwvZW0+PC9zdHJvbmc+LCB3aGljaCBpcyBhIHdheSBvZiBkZWNpZGluZyB3aGF0IHRoZSDigJx6ZXJv4oCdIG9mIHdoZXJlIHdlIHN0YXJ0IGNvdW50aW5nIHRpbWUgc2hvdWxkIGJlLiBJbiB0aGUgY2FzZSBvZiBVbml4IHRpbWUsIHRoZSBzdGFydGluZyBwb2ludCBvciDigJx6ZXJv4oCdIGlzIHRoZSBzdGFydCBvZiB0aGUgPHN0cm9uZz48ZW0+VW5peCBlcG9jaDwvZW0+PC9zdHJvbmc+LCBvciBKYW51YXJ5IDFzdCwgMTk3MCwgYXQgMDA6MDA6MDAgVVQgKFVuaXZlcnNhbCBUaW1lKS4gQW4gPHN0cm9uZz48ZW0+ZXBvY2g8L2VtPjwvc3Ryb25nPiBpcyBtZWFudCB0byBiZSBhcmJpdHJhcnk7IGl04oCZcyBub3RoaW5nIG1vcmUgdGhhbiBhbiBhZ3JlZWQtdXBvbiBzdGFydGluZyBkYXRlIGFuZCB0aW1lIGZvciB3aGVuIHdlIHNob3VsZCBzdGFydCBtZWFzdXJpbmcgdGltZS4gTXkgcGVyc29uYWwgZmF2b3JpdGUgZXBvY2ggaXMgdGhlIG9uZSBmb3IgTWljcm9zb2Z0IEV4Y2VsIHByb2dyYW1zLCB3aGljaCBpcyAwIEphbnVhcnksIDE5OTAhIChGb3IgdGhlIGVwb2NobHktY3VyaW91cywgY2hlY2sgb3V0IDxhIGhyZWY9Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Vwb2NoXyhjb21wdXRpbmcpIj50aGlzIGV4dGVuc2l2ZSBsaXN0PC9hPi4pPC9wPjxoMz5PdXQgb2Ygc3luYywgb3V0IG9mwqBjb250cm9sPC9oMz48cD5Ob3cgdGhhdCB3ZSBrbm93IHRoYXQgYSBjbG9jayBjYW4gc3RhcnQg4oCcY291bnRpbmfigJ0gYXQgYXJiaXRyYXJ5IHRpbWVzLCBpdOKAmXMgdGltZSB0byBhZGQgYW5vdGhlciBmYWN0b3IgdG8gdGhlIG1peC4gTmFtZWx5LCB3aGF0IGhhcHBlbnMgaWYgd2UgaGF2ZSBtb3JlIHRoYW4gb25lIGNsb2NrPyBUaGlzIGlzIHdoZW4gdGhpbmdzIHN0YXJ0IHRvIGdldCwgd2VsbCwgYSBsaXR0bGUgb3V0IG9mwqBzeW5jLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKnBVWDgtcVZxczA3MWp4VG1jZElsd2cuanBlZyIgLz48ZmlnY2FwdGlvbj5Db21wdXRlciBjbG9ja3MgYXJlIG5vdCBjb25zaXN0ZW50PC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPlNpbmNlIGV2ZXJ5IG1hY2hpbmUgY2FuIGhhdmUgaXRzIG93biBub3Rpb24gb2YgdGltZSwgd2UgY2FuIGFzc3VtZSB0aGF0IHR3byBkaWZmZXJlbnQgbWFjaGluZXMgd2lsbCBlYWNoIGhhdmUgdGhlaXIgb3duIGNvbmNlcHRzIG9mIHdoYXQgdGltZSBpdCBpcy4gQnV0IHRoaXMgaXMgd2hlcmUgdGhpbmdzIHN0YXJ0IHRvIGdldCBhIGJpdCBjb21wbGljYXRlZDogaWYgdHdvIGRpZmZlcmVudCBtYWNoaW5lcyBoYXZlIHR3byBkaWZmZXJlbnQgaWRlYXMgb2Ygd2hhdCB0aW1lIGl0IGlzLCBob3cgY2FuIHdlIGJlIHN1cmUgdGhhdCB0aGV5IGFyZSB0aGXCoHNhbWU/PC9wPjxibG9ja3F1b3RlPlVuZm9ydHVuYXRlbHkgZm9yIHVzLCBjb21wdXRlciBjbG9ja3MgYXJlIG5vdCBjb25zaXN0ZW50LjwvYmxvY2txdW90ZT48cD5XZSBhbHJlYWR5IGtub3cgdGhhdCBldmVyeSBjbG9jayBoYXMgYSBkaWZmZXJlbnQgaWRlYSBvZiA8ZW0+d2hlbjwvZW0+IGl0IHN0YXJ0ZWQgY291bnRpbmcgYW5kIGl0cyDigJx6ZXJv4oCdLCBhbmQgdGhhdCBvbmUgY2xvY2sgY291bGQgYmUgaW5jb25zaXN0ZW50IHdpdGggYW5vdGhlci4gSG93ZXZlciwgaXTigJlzIGFsc28gd29ydGggbWVudGlvbmluZyB0aGF0IG5vdCBhbGwgY2xvY2tzIGFyZSBwcmVjaXNlLCBhbmQgc29tZSBhcmUgbW9yZSBwcmVjaXNlIHRoYW4gb3RoZXJzLiBPdmVyIHRpbWUsIHRoZSBwcmVjaXNlbmVzcyBvZiBlYWNoIOKAnHRpY2vigJ0gb2YgYSBjbG9jayByZWFsbHkgc3RhcnRzIHRvIGhhdmUgYW4gaW1wYWN0IG9uIGhvdyB0aGF0IGNsb2NrIGRldGVybWluZXMgaXRzwqB0aW1lLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKkFyOUd3X2ZUZUxpSGd4SDNsUGtfVVEuanBlZyIgLz48ZmlnY2FwdGlvbj5FdmVyeSBzeXN0ZW0gY2xvY2sgY291bnRzIGRpZmZlcmVudGx5ITwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5Gb3IgZXhhbXBsZSwgYSB0eXBpY2FsIHF1YXJ0eiBjbG9jayB3aWxsIGRyaWZ0IHF1YXJ0eiBjbG9ja3Mgd2lsbCBsb3NlIG9yIGdhaW4gYXBwcm94aW1hdGVseSBvbmUgc2Vjb25kIG92ZXIgdGhlIGNvdXJzZSBvZiAxMSBvciAxMiBkYXlzLiBUaGlzIGlzIGR1ZSB0byBhIHRpbnkgaW1wcmVjaXNpb24gdGhhdCBvY2N1cnMgYXMgdGhlIGNsb2NrIG1lYXN1cmVzIGEgc2luZ2xlIHNlY29uZCBhcyBpdCB0aWNrcy4gQSBzaW5nbGUgc2Vjb25kIG1heSBub3Qgc2VlbSBsaWtlIG11Y2gsIGJ1dCBvdmVyIHRpbWUsIHNsaWdodCBpbXByZWNpc2lvbnMgcmVhbGx5IHN0YXJ0IHRvIGFkZCB1cCEgVGhlIHByZWNpc2VuZXNzIG9mIGEgY2xvY2sgY291bGQgYmUgYWZmZWN0ZWQgYnkgdGVtcGVyYXR1cmUsIGxvY2F0aW9uLCB0aGUgY2xvY2vigJlzIHNvdXJjZSBvZiBwb3dlciwgYW5kIGV2ZW4ganVzdCBob3cgd2VsbCBpdCB3YXMgY29uc3RydWN0ZWQuPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqNjRhcnVoWWJrY1g5cGdaenByZXk1Zy5qcGVnIiAvPjxmaWdjYXB0aW9uPkNsb2NrIGRyaWZ0IGFuZCBjbG9ja8Kgc2tldzwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5UaGlzIHBoZW5vbWVub24gb2YgbGltaXRlZCBjbG9jayBwcmVjaXNpb24gY2F1c2luZyB0d28gY2xvY2tzIHRvIHRvIGNvdW50IHRpbWUgZGlmZmVyZW50bHkgaXMga25vd24gYXMgPHN0cm9uZz48ZW0+Y2xvY2sgZHJpZnQ8L2VtPjwvc3Ryb25nPi4gVW5mb3J0dW5hdGVseSwgaXQgaXMganVzdCBhIHJlYWxpdHkgb2YgYW55IG1hY2hpbmUgdGhhdCBuZWVkcyB0byBrZWVwIHRyYWNrIG9mIHRoZSB0aW1lIG9uIGl0cyBvd24uIEJlY2F1c2UgY2xvY2sgZHJpZnQgaXMgc28gY29tbW9uLCB3ZSBvZnRlbiBhbHNvIGZpbmQgb3Vyc2VsdmVzIGNvbXBhcmluZyB0d28gY2xvY2tzIHRoYXQgZGlzcGxheSB0d28gZGlmZmVyZW50IHRpbWVzLiBUaGlzIGlzIGtub3duIGFzIDxzdHJvbmc+PGVtPmNsb2NrIHNrZXc8L2VtPjwvc3Ryb25nPiwgYW5kIGl0IGlzIHRoZSBkaWZmZXJlbmNlIGluIHRpbWUgYmV0d2VlbiB0d2/CoGNsb2Nrcy48L3A+PGJsb2NrcXVvdGU+SW4gYSBwZXJmZWN0IHdvcmxkIHdoZXJlIHR3byBjbG9ja3MgYWdyZWVkIG9uIHRoZSB0aW1lLCB3ZSB3b3VsZG7igJl0IGV2ZXIgcnVuIGludG8gZWl0aGVyIG9mIHRoZXNlIGNvbmNlcHRzISBJbiBzdWNoIGEgdXRvcGlhLCBib3RoIGNsb2NrIGRyaWZ0IGFuZCBza2V3IHdvdWxkIGJlwqB6ZXJvLjwvYmxvY2txdW90ZT48cD5BbGFzLCB3ZSBkbyBub3QgbGl2ZSBpbiBzdWNoIGEgd29ybGQsIGFuZCBzbyB3ZSBtdXN0IHRoaW5rIG9mIGJvdGggb2YgdGhlc2UgdGhpbmdzIHdoZW4gY29tcGFyaW5nIHR3byBkaWZmZXJlbnQgbWFjaGluZXMgYW5kIHRoZWlyIHRpbWVzLiBJbnN0ZWFkLCB3ZSBsaXZlIGluIGEgd29ybGQgd2hlcmUgdGhpbmdzIGFyZSBtZXNzeSBhbmTigKZkaXN0cmlidXRlZC48L3A+PGgzPk5vIG9uZSBjbG9jayB0byBydWxlIHRoZW3CoGFsbDwvaDM+PHA+V2XigJl2ZSB0YWxrZWQgYSBsb3QgYWJvdXQgY2xvY2tzIGFuZCBob3cgdGhleSB3b3JrIGFuZCBob3cgdGhleSBkaXNhZ3JlZSwgYnV0IHdoYXQgZG9lcyB0aGF0IGhhdmUgdG8gZG8gd2l0aCBkaXN0cmlidXRlZCBzeXN0ZW1zLCBleGFjdGx5PyBBcyBpdCB0dXJucyBvdXQsIGFsbCBvZiB0aGlzIGNsb2NrIHRhbGsgaXMgbGVhZGluZyBpcyB0byBvbmUgb2YgdGhlIGNvcmUsIGZvdW5kYXRpb25hbCBwcmluY2lwbGVzIG9mIGRpc3RyaWJ1dGVkIHN5c3RlbXMgdGhhdCwgc29tZWhvdyAoISksIHdlIGhhdmVu4oCZdCBjb3ZlcmVkIGl0LiBOb3csIGl04oCZcyBmaW5hbGx5IHRpbWUgdG8gdGFsayBhYm91dMKgaXQuPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqNjBrRHF2VkVxU2R2N2NyNHZvVk9tQS5qcGVnIiAvPjxmaWdjYXB0aW9uPkNsb2NrcyBhbmQgZGlzdHJpYnV0ZWQgc3lzdGVtczwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5BcyB3ZSBhbHJlYWR5IGtub3csIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtLCBhbGwgdGhlIGluZGl2aWR1YWwgY29tcG9uZW50cyBhcmUgY2FsbGVkIG5vZGVzLCBhbmQgdGhleSBhcmUgZWFjaCA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL21hbnktbm9kZXMtb25lLWRpc3RyaWJ1dGVkLXN5c3RlbS05OTIxZjg1MjA1YzQiPmF1dG9ub21vdXM8L2E+LCBjYXBhYmxlIG9mIHBlcmZvcm1pbmcgdGhlaXIgb3duIHdvcmsuIFdlIGFsc28gbGVhcm5lZCB0aGF0IGVhY2ggbm9kZSBoYXMgaXRzIG93biBub3Rpb24gb2YgdGltZSwgYW5kIGtlZXBzIHRyYWNrIG9mIGl0cyBvd24gdGltZSBpbnRlcm5hbGx5LiBXaGVuIHdlIGNvbWJpbmUgdGhlc2UgdHdvIGZhY3RzIHRvZ2V0aGVyLCB3ZSBhcnJpdmUgYXQgb25lIHNpbmd1bGFyIGNvbmNsdXNpb246PC9wPjxibG9ja3F1b3RlPlRoZXJlIGlzIG5vIG9uZSwgdHJ1ZSBnbG9iYWwgY2xvY2sgaW4gYSBkaXN0cmlidXRlZCBzeXN0ZW0uPC9ibG9ja3F1b3RlPjxwPkV2ZXJ5IG5vZGUgaW4gdGhlIHN5c3RlbSBoYXMgaXRzIG93biBjb25jZXB0IG9mIHRpbWUsIGFuZCB0aGVyZSBpcyBubyBjZW50cmFsaXplZCBwbGFjZSBmb3IgdGhlIG5vZGVzIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aW1lIGl0IGFjdHVhbGx5IGlzLiBBbmQgcGVyaGFwcyB0aGlzIHdvdWxkbuKAmXQgbWF0dGVyIGlmIHdlIGRpZG7igJl0IGNhcmUgYWJvdXQgdGltZSBzbyBtdWNoISBXZSB1c2UgdGltZSBzbyBmcmVxdWVudGx5IGluIGNvbXB1dGluZywgcGFydGljdWxhcmx5IGluIG9yZGVyIHRvIGZpZ3VyZSBvdXQgd2hlbiBhbiBldmVudCBvY2N1cnJlZCwgYW5kIHdoaWNoIGV2ZW50IGhhcHBlbmVkIGJlZm9yZcKgYW5vdGhlci48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSo5cHI3YUZXcU96MFdBMDJSZmxZa29BLmpwZWciIC8+PGZpZ2NhcHRpb24+SG93IGRvZXMgaGF2aW5nIG5vIGdsb2JhbCBjbG9jayBpbXBhY3QgdGhlIHdheSBhIHN5c3RlbcKgd29ya3M/PC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPlNvIHdoYXQgaGFwcGVucyB3aGVuIHdlIGRvbuKAmXQgaGF2ZSBhIGdsb2JhbCBjbG9jayBpbiBhIGRpc3RyaWJ1dGVkIHN5c3RlbT8gV2VsbCwgZm9yIHN0YXJ0ZXJzLCB3ZSBjYW7igJl0IGFjdHVhbGx5IGtub3cgdGhlIDxlbT5yZWFsPC9lbT4gdGltZSB0aGF0IGFueSB0d28gZXZlbnMgb2NjdXJyZWQsIG9yIHRoZSBvcmRlciB0aGF0IHRoZXkgb2NjdXJyZWQgaW4uIFRoaXMgbWFrZXMgaXMgdmVyeSBoYXJkIHRvIGZpZ3VyZSBvdXQgaG93IHR3byBldmVudHMgbWlnaHQgYmUgc2NoZWR1bGVkIGluIHRoZSBmdXR1cmUuIEl0IGFsc28gbWFrZXMgYSBkaXN0cmlidXRlZCBzeXN0ZW0gPGVtPnJlYWxseTwvZW0+IGRpZmZpY3VsdCB0byBkZWJ1Zywgc2luY2Ugd2UgZG9u4oCZdCBrbm93IGZvciBzdXJlIHdoZXRoZXIgb25lIGV2ZW50IG9jY3VycmVkIGJlZm9yZSB0aGXCoG90aGVyITwvcD48cD5XZeKAmWxsIGJlIHRhbGtpbmcgbW9yZSBhYm91dCB0aW1lIGFuZCB0aGUgb3JkZXJpbmcgb2YgZXZlbnRzIGluIHVwY29taW5nIHBvc3RzLCBhbmQgaG9wZWZ1bGx5IHdl4oCZbGwgZmluZCBzb21lIHRyaWVkIGFuZCB0cnVlIHNvbHV0aW9ucyBmb3IgdGhpcyBwcm9ibGVtLiBVbnRpbCB0aGVuLCB0cnkgbm90IHRvIGxvb2sgYXQgeW91ciB3YXRjaCBvciB0aGluayB0b28gbXVjaCBhYm91dCB3aGF0IHRpbWUgaXTCoGlzLjwvcD48aDM+UmVzb3VyY2VzPC9oMz48cD5DbG9ja3MgYW5kIHRpbWUgaW4gZGlzdHJpYnV0ZWQgc3lzdGVtcyBjYW4gYmUgb25lIG9mIHRoZSBtb3N0IHVuaW50dWl0aXZlIGNvbmNlcHRzIHRvIHdyYXAgeW91ciBoZWFkIGFyb3VuZOKAiuKAlOKAimVzcGVjaWFsbHkgaWYgeW914oCZcmUgbmV3IHRvIGRpc3RyaWJ1dGVkIHN5c3RlbXMhIFRoYW5rZnVsbHksIHRoZXJlIGlzIGEgdG9uIG9mIGNvdXJzZSBtYXRlcmlhbCBvdXQgdGhlcmUgdGhhdCBjb3ZlcnMgdGhlc2UgdG9waWNzIGluIGdyZWF0IGRldGFpbC4gQmVsb3cgYXJlIHNvbWUgb2YgbXkgZmF2b3JpdGVzLCB3aGljaCBJIHJlbGllZCB1cG9uIG15c2VsZiB3aGVuIEkgd2FzIGxlYXJuaW5nIGFib3V0IGNsb2NrcyBhbmTCoHRpbWUhPC9wPjxvbD48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5udHAub3JnL250cGZhcS9OVFAtcy1zdy1jbG9ja3MuaHRtIj5Ib3cgZG8gQ29tcHV0ZXIgQ2xvY2tzIHdvcms/PC9hPiwgTmV0d29yayBUaW1lIEZvdW5kYXRpb248L2xpPjxsaT48YSBocmVmPSJodHRwOi8vcGVvcGxlLmNzLmFhdS5kay9+Ym5pZWxzZW4vRFMtRTA4L21hdGVyaWFsL2Nsb2NrLnBkZiI+VGltZSBpbiBEaXN0cmlidXRlZCBTeXN0ZW1zPC9hPiwgQnJpYW7CoE5pZWxzZW48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3LmNzLmJoYW0uYWMudWsvfmJ4Yi9jb3Vyc2VzLzAyXzAzX0RTL0xlY3R1cmUxMF9IYW5kb3V0cy5wZGYiPkNsb2NrcyBhbmQgVGltPC9hPmUsIEJlaHphZMKgQm9yZGJhcjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuY3MuY211LmVkdS9+c3JpbmkvMTUtNDQ2L1MwOS9sZWN0dXJlcy8wOC1waHlfdGltZS5wZGYiPlN5bmNocm9uaXppbmcgUGh5c2ljYWwgQ2xvY2tzPC9hPiwgU3Jpbml2YXNhbiBTZXNoYW48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vaW5mb2xhYi5zdGFuZm9yZC5lZHUvfmJ1cmJhY2svZGFkbC9ub2RlODcuaHRtbCI+RGlzdHJpYnV0ZWQgU3lzdGVtIEZvdW5kYXRpb25zPC9hPiwgUm9uYWxkIExlUm9pwqBCdXJiYWNrPC9saT48L29sPjxpbWcgc3JjPSJodHRwczovL21lZGl1bS5jb20vXy9zdGF0P2V2ZW50PXBvc3QuY2xpZW50Vmlld2VkJnJlZmVycmVyU291cmNlPWZ1bGxfcnNzJnBvc3RJZD1lZjJhYTRkZjA3YTMiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGFsdD0iIj48aHI+PHA+PGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy90aWNraW5nLWNsb2Nrcy1pbi1hLWRpc3RyaWJ1dGVkLXN5c3RlbS1lZjJhYTRkZjA3YTMiPlRpY2tpbmcgQ2xvY2tzIGluIGEgRGlzdHJpYnV0ZWQgU3lzdGVtPC9hPiB3YXMgb3JpZ2luYWxseSBwdWJsaXNoZWQgaW4gPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2VkcyI+YmFzZWRzPC9hPiBvbiBNZWRpdW0sIHdoZXJlIHBlb3BsZSBhcmUgY29udGludWluZyB0aGUgY29udmVyc2F0aW9uIGJ5IGhpZ2hsaWdodGluZyBhbmQgcmVzcG9uZGluZyB0byB0aGlzIHN0b3J5LjwvcD5dXT48L2NvbnRlbnQ6ZW5jb2RlZD4KICAgICAgICA8L2l0ZW0+CiAgICAgICAgPGl0ZW0+CiAgICAgICAgICAgIDx0aXRsZT48IVtDREFUQVtQYXJzaW5nIFRocm91Z2ggUGFydGl0aW9ucyBpbiBhIERpc3RyaWJ1dGVkIFN5c3RlbV1dPjwvdGl0bGU+CiAgICAgICAgICAgIDxsaW5rPmh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvcGFyc2luZy10aHJvdWdoLXBhcnRpdGlvbnMtaW4tYS1kaXN0cmlidXRlZC1zeXN0ZW0tM2MxNzIzZmVjYzRlP3NvdXJjZT1yc3MtOGY1NTk5M2M5NzNlLS0tLS0tMjwvbGluaz4KICAgICAgICAgICAgPGd1aWQgaXNQZXJtYUxpbms9ImZhbHNlIj5odHRwczovL21lZGl1bS5jb20vcC8zYzE3MjNmZWNjNGU8L2d1aWQ+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtjb21wdXRlci1zY2llbmNlXV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW3NvZnR3YXJlLWRldmVsb3BtZW50XV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW3Byb2dyYW1taW5nXV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW2Rpc3RyaWJ1dGVkLXN5c3RlbXNdXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbY29kZV1dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxkYzpjcmVhdG9yPjwhW0NEQVRBW1ZhaWRlaGkgSm9zaGldXT48L2RjOmNyZWF0b3I+CiAgICAgICAgICAgIDxwdWJEYXRlPkZyaSwgMzAgQXVnIDIwMTkgMjM6Mzg6NDcgR01UPC9wdWJEYXRlPgogICAgICAgICAgICA8YXRvbTp1cGRhdGVkPjIwMTktMDgtMzBUMjM6Mzg6NDcuNDQ3WjwvYXRvbTp1cGRhdGVkPgogICAgICAgICAgICA8Y29udGVudDplbmNvZGVkPjwhW0NEQVRBWzxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqMDh6RGx3MzdZcEZoSHVILW5FaE9CQS5qcGVnIiAvPjxmaWdjYXB0aW9uPlBhcnNpbmcgdGhyb3VnaCBwYXJ0aXRpb25zIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtITwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5XaGVuIGl0IGNvbWVzIHRvIHRlY2ggamFyZ29uLCBvbmUgdGhpbmcgc2VlbXMgdG8gYWx3YXlzIGhvbGQgdHJ1ZTogZXZlcnlvbmUgaGFzIGEgZGlmZmVyZW50IG9waW5pb24gYWJvdXQgd2hhdCBjZXJ0YWluIHdvcmRzIG1lYW4uIEkgcmVhbGl6ZSB0aGlzIGZhY3QgZXZlcnkgb25jZSBpbiBhd2hpbGU7IG1vc3QgcmVjZW50bHksIEkgY2FtZSBhY3Jvc3MgaXQgd2hpbGUgdHJ5aW5nIHRvIGxlYXJuIGEgbmV3IGRpc3RyaWJ1dGVkIHN5c3RlbXPCoGNvbmNlcHQuPC9wPjxwPlRoZSB0ZXJtIOKAnHBhcnRpdGlvbuKAnSBpcyB1c2VkIGEgbG90IGluIGRpc3RyaWJ1dGVkIHN5c3RlbSBjb3Vyc2VzIGFuZCBib29rcywgYnV0IHRoZXJlIGFyZSBhbHNvIGEgc2xldyBvZiBvdGhlciB0ZXJtcyB0aGF0IGdldCBsdW1wZWQgaW50byB0aGlzIGNhdGVnb3J5IGFzIHdlbGwuIFVudGlsIHJlY2VudGx5LCBJIHRob3VnaHQgSSBrbmV3IHdoYXQgdGhlIHRlcm0gbWVhbnQgaW4gdGhlIGNvbnRleHQgb2YgYSBkaXN0cmlidXRlZCBzeXN0ZW0sIGJ1dCBhcyBpdCB0dXJucyBvdXQsIHRoZXJlIHdhcyBtb3JlIHRvIHRoZSBzdG9yeeKAiuKAlOKAimFuZCB0aGUgd29yZOKAiuKAlOKAinRoYW4gSSBldmVyIHJlYWxpemVkISBBcyBJIGRpZCBtb3JlIHJlc2VhcmNoLCBJIHJlYWxpemVkIHRoYXQgdGhlIHRlcm0gaXMgdXNlZCB0byB0YWxrIGFib3V0IHR3byB2ZXJ5IGRpZmZlcmVudCBjb25jZXB0cywgYm90aCBvZiB3aGljaCBlbmQgdXAgYmVpbmcgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIGhvdyB0byBkZWFsIHdpdGggYW5kIGFyY2hpdGVjdCBhIGRpc3RyaWJ1dGVkIHN5c3RlbS48L3A+PHA+QXMgUmljaGFyZCBGZXlubWFuIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9Z2FfN2o3MkNWbGMiPm9uY2Ugd2lzZWx5IHNhaWQ8L2E+LCDigJxuYW1lcyBkb27igJl0IGNvbnN0aXR1dGUga25vd2xlZGdl4oCdLiBKdXN0IGJlY2F1c2UgcGVvcGxlIGluIHRoZSBpbmR1c3RyeSB0aHJvdyBhcm91bmQgYSB0ZXJtIGRvZXNu4oCZdCBtZWFuIHRoYXQgdGhleSBhbGwgbmVjZXNzYXJpbHkga25vdyB3aGF0IGl0IG1lYW5zLCBvciBob3cgaXQgY2FuIGNoYW5jZSBkZXBlbmRpbmcgb24gdGhlIGNvbnRleHQhIFNvIGxldOKAmXMgdHJ5IGFuZCBjbGVhciB1cCBzb21lIG9mIHRoaXMgY29uZnVzaW9uIGFuZCBnYWluIHNvbWUgcmVhbCBrbm93bGVkZ2Ugb24gdGhpc8KgdG9waWMuPC9wPjxoMz5QYXJzaW5nIHRoZSBtZWFuaW5nIG9mIHBhcnRpdGlvbmluZzwvaDM+PHA+QmVmb3JlIHdlIGdldCB0b28gZGVlcCBpbnRvIHBhcnRpdGlvbmluZyB3aXRoaW4gYTxlbT4gc3lzdGVtPC9lbT4sIGxldOKAmXMgZmlyc3QgbWFrZSBzdXJlIHdl4oCZcmUgb24gdGhlIHNhbWUgcGFnZSBhYm91dCB3aGF0IHRoZSB3b3JkIGV2ZW4gbWVhbnMhIFdoZW4gd2UgdGFsayBhYm91dCA8c3Ryb25nPjxlbT5wYXJ0aXRpb25pbmc8L2VtPjwvc3Ryb25nPiBzb21ldGhpbmcsIHdlIGFyZSBkaXZpZGluZyBpdCB1cCwgYnJlYWtpbmcgaXQgdXAgaW50byBwYXJ0cyBhbmQgc2VwYXJhdGluZyBpdC48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSozdHphR2dCRjVCNE91WWVVc1FYTDNBLmpwZWciIC8+PGZpZ2NhcHRpb24+V2hhdCBkb2VzIGl0IG1lYW4gdG8gcGFydGl0aW9uIHNvbWV0aGluZz88L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+QXQgaXRzIGNvcmUsIHRoYXTigJlzIGFsbCB0aGF0IHBhcnRpdGlvbmluZyByZWFsbHkgaXM6IHRha2luZyB0aGUgd2hvbGUgb2Ygc29tZXRoaW5nIGFuZCB0dXJuaW5nIGl0IGludG8gc21hbGxlciBwaWVjZXMgb2YgaXRzZWxmLiBTbyBmYXIsIG5vdCB0b28gY29tcGxpY2F0ZWQsIHJpZ2h0PyBCdXQgd2hhdCBkb2VzIHRoaXMgc2FtZSB0ZXJtIG1lYW4gaW4gdGhlIGNvbnRleHQgb2YgYSBkaXN0cmlidXRlZCBzeXN0ZW0/IFdlbGwsIHdlIGNhbiBpbmZlciB0aGF0IHRoZSBkaXN0cmlidXRlZCBzeXN0ZW0gbXVzdCwgaW4gc29tZSB3YXksIGJlIHRoZSDigJx3aG9sZeKAnSB0aGluZyB0aGF0IHdlIGFyZSBzZXBhcmF0aW5nLCBkaXZpZGluZyB1cCwgYW5kIGJyZWFraW5nIGludG8gc21hbGxlciBwaWVjZXMgb2bCoGl0c2VsZi48L3A+PHA+QnV0IHRoaXMgc2ltcGxlIGFjdCBjYW4gYWN0dWFsbHkgdGFrZSB0d28gZGlmZmVyZW50IGZvcm1zLCBkZXBlbmRpbmcgb24gdGhlIGtpbmQgb2YgcGFydGl0aW9uIHdlIGFyZSBjcmVhdGluZy4gQXMgPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9tYW55LW5vZGVzLW9uZS1kaXN0cmlidXRlZC1zeXN0ZW0tOTkyMWY4NTIwNWM0Ij53ZSBhbHJlYWR5IGtub3c8L2E+LCBhIGRpc3RyaWJ1dGVkIHN5c3RlbSBpcyBtYWRlIHVwIG9mIG5vZGVzOyBzbywgaWYgd2UgYXJlIGRpdmlkaW5nIHVwIHRoZSBzeXN0ZW0gaW50byBwYXJ0cywgcGVyaGFwcyB3ZSBhcmUgZGl2aWRpbmcgdXAgdGhlIG5vZGVzPyBCdXQgdGhlcmXigJlzIGFub3RoZXIgaW50ZXJwcmV0YXRpb24gb2Yg4oCccGFydGl0aW9u4oCdIGhlcmUsIHRvby4gUmF0aGVyIHRoYW4gZGl2aWRpbmcgdXAgdGhlIG5vZGVzLCBwZXJoYXBzIHdlIGFyZSBkaXZpZGluZyB0aGUgc3lzdGVtIGludG8gc21hbGxlciBncm91cHMgb2Ygbm9kZXMgc3VjaCB0aGF0IHdlIGFyZSBicmVha2luZyB1cCBvbmUgbGFyZ2Ugc3lzdGVtIGludG8gc21hbGxlciBzdWJzeXN0ZW1zLiBJZiB3ZSB0aGluayBhYm91dCBpdCwgYm90aCBvZiB0aGVzZSBhcHByb2FjaGVzIGFyZSB0d28gdmFsaWQgZm9ybXMgb2YgcGFydGl0aW9uaW5nLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKjhIN0tfZGZNUzkwS1NraXNBc2ZiYUEuanBlZyIgLz48ZmlnY2FwdGlvbj5JbiB0aGUgY29udGV4dCBvZiBkaXN0cmlidXRlZCBzeXN0ZW1zLCDigJxwYXJ0aXRpb25pbmfigJ0gY2FuIG1lYW4gZGlmZmVyZW50IHRoaW5ncy48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+QXMgaXQgdHVybnMgb3V0LCB0aGlzIGlzIHdoZXJlIHRoaW5ncyBjYW4gZ2V0IGNvbmZ1c2luZy4gV2hlbiBkZWFsaW5nIHdpdGggYSBkaXN0cmlidXRlZCBzeXN0ZW0sIOKAnHBhcnRpdGlvbmluZ+KAnSBjYW4gbWVhbiBkaWZmZXJlbnQgdGhpbmdzLiBGaXJzdCwgaXQgY291bGQgaW1wbHkgdGhlIDxzdHJvbmc+PGVtPnBhcnRpdGlvbmluZyBvZiBkYXRhPC9lbT48L3N0cm9uZz4gaW4gdGhlIHN5c3RlbSwgb3IgZGl2aWRpbmcgdXAgdGhlIG5vZGVzIGludG8gc21hbGxlciBwaWVjZXMgb2YgdGhlbXNlbHZlcy4gQnV0LCBpdCBjb3VsZCBhbHNvIG1lYW4gcGFydGl0aW9uaW5nIHRoZSBzeXN0ZW0gaXRzZWxmIGJ5IDxzdHJvbmc+PGVtPnBhcnRpdGlvbmluZyB0aGUgbmV0d29yayA8L2VtPjwvc3Ryb25nPnRoYXQgdGhlIHN5c3RlbSBjb21tdW5pY2F0ZXMgdGhyb3VnaC4gVGhpcyB3b3VsZCBtZWFuIGJyZWFraW5nIHVwIHRoZSB3YXkgdGhhdCB0aGUgbm9kZXMgaW4gdGhlIHN5c3RlbSB0YWxrIHRvIGVhY2ggb3RoZXIgYW5kIHNlcGFyYXRpbmcgdGhlbSBpbnRvIHNtYWxsZXIgc3Vic3lzdGVtcyBvciBzdWJuZXR3b3Jrcy48L3A+PHA+VGhlIGludGVyZXN0aW5nIHRoaW5nIGFib3V0IHRoZXNlIHR3byBmb3JtcyBvZiBwYXJ0aXRpb25pbmcgaW4gYSBzeXN0ZW0gaXMgdGhhdCBvbmUgaXMgaW50ZW50aW9uYWwsIHdoaWxlIHRoZSBvdGhlciBpcyBtb3JlIG9mIGEgc2lkZSBlZmZlY3QgdGhhdCB3ZSBuZWVkIHRvIGRlYWwgd2l0aC4gQnV0IG1vcmUgb24gdGhhdCBzb29uLiBJdOKAmXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIGJlY2F1c2UgdGhlIHNhbWUgdGVybSBjYW4gc29tZXRpbWVzIGJlIHVzZWQgdG8gcmVmZXIgdG8gZWl0aGVyISBTbyBsZXTigJlzIGRpZyBpbnRvIHRoZXNlIHR3byBmb3JtcyBvZiBwYXJ0aXRpb25pbmcgYW5kIHVuZGVyc3RhbmRpbmcgdGhlIHJlYXNvbnMgYmVoaW5kIHdoeSBlYWNowqBoYXBwZW4uPC9wPjxoMz5TZXBhcmF0aW5nIGRhdGE8L2gzPjxwPlRoZSBpZGVhIG9mIHBhcnRpdGlvbmluZyB0aGUgbm9kZXMgaW4gYSBzeXN0ZW0gbWlnaHQgc2VlbSBvZGQgYXQgZmlyc3QsIGJ1dCB3ZeKAmXZlIHdl4oCZdmUgYWN0dWFsbHkgc2VlbiBzb21ldGhpbmcgc29ydCBvZiBhZGphY2VudCB0byB0aGlzIGJlZm9yZS4gUmVtZW1iZXIgd2hlbiB3ZSBsZWFybmVkIGFib3V0IHJlZHVuZGFuY3kgYW5kIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvcmVkdW5kYW5jeS1hbmQtcmVwbGljYXRpb24tZHVwbGljYXRpbmctaW4tYS1kaXN0cmlidXRlZC1zeXN0ZW0tN2FiNDMyMmQ3Mzc4Ij50aGUgcmVwbGljYXRpb24gb2Ygbm9kZXM8L2E+PyBUaGF0IGNvbmNlcHQgYWxzbyBtaWdodCBoYXZlIHNlZW1lZCB3ZWlyZCBpbml0aWFsbHnigIrigJTigIp3aHkgd291bGQgYW55b25lIDxlbT53YW50PC9lbT4gdG8gcmVwZWF0IHRoZW1zZWx2ZXM/IeKAiuKAlOKAimJ1dCBhcyB3ZSBzdGFydGVkIHRvIHVucGFjayBpdCBmdXJ0aGVyLCB3ZSBzYXcgdGhhdCB0aGVyZSB3ZXJlIHNvbWUgY2xlYXIgYmVuZWZpdHMgdG/CoGl0LjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKmNvTUNZWWE3Nm9hTHMxb3BWS0h4b0EuanBlZyIgLz48ZmlnY2FwdGlvbj5SZWNhcHBpbmcgdGhlIHByb3MgYW5kIGNvbnMgb2YgcmVwbGljYXRpb24uPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPkFzIHdlIGhhdmUgPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9yZWR1bmRhbmN5LWFuZC1yZXBsaWNhdGlvbi1kdXBsaWNhdGluZy1pbi1hLWRpc3RyaWJ1dGVkLXN5c3RlbS03YWI0MzIyZDczNzgiPmFscmVhZHkgbGVhcm5lZDwvYT4sIHdoZW4gd2UgbmVlZCB0byBtYWtlIHNvbWUgb2Ygb3VyIG5vZGVzIG1vcmUgcmVsaWFibGUgb3Igd2hlbiB3ZSBuZWVkIHRvIHNjYWxlIHNvbWUgcGFydCBvZiBvdXIgc3lzdGVtIChsaWtlIGEgZGF0YWJhc2UpLCB3ZSBjYW4gcmVwbGljYXRlIG91ciBub2RlcyB0byBjcmVhdGUgbW9yZSBjb3BpZXMgb2YgdGhlIHNhbWUgZGF0YSB0aGF0IGFyZSBpbiBzeW5jIHdpdGggdGhlIG9yaWdpbmFsIG5vZGUuIFRoYXQgd2F5LCBpZiBvbmUgcmVwbGljYSBmYWlscywgYW5vdGhlciB3b3JraW5nIHJlcGxpY2EgY2FuIGhhbmRsZSBpbmNvbWluZyByZXF1ZXN0cyBmb3Igc29tZSBkYXRhLiBPdmVyYWxsLCByZXBsaWNhdGlvbiBhbGxvd3MgZm9yIGEgc3lzdGVtIHRoYXQgaXMgbW9yZSA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL3RyYW5zcGFyZW5jeS1pbGx1c2lvbnMtb2YtYS1zaW5nbGUtc3lzdGVtLXBhcnQtMi0yYjIxYzUwNDc3NzQiPnRyYW5zcGFyZW50PC9hPiwgPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9yZWFkeS1hbmQtYXZhaWxhYmxlLWRpc3RyaWJ1dGVkLXN5c3RlbXMtMTYxMDIzYWNhMzc4Ij5yZWxpYWJsZTwvYT4sIGFuZCBtdWNoIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvc2NhbGFiaWxpdHktZ3Jvd2luZy1hLXN5c3RlbS1pbi1kaWZmZXJlbnQtZGlyZWN0aW9ucy1hZTE2NDY5YzRjYjMiPmVhc2llciB0b8Kgc2NhbGU8L2E+LjwvcD48cD5UaGVyZSBhcmUgc29tZSBjYXZlYXRzIHdpdGggcmVwbGljYXRpb24sIGhvd2V2ZXIuIFdlIGFscmVhZHkga25vdyB0aGF0IGtlZXBpbmcgcmVwbGljYXMgY29uc2lzdGVudCBpcyBhIG1ham9yIGNoYWxsZW5nZS4gQnV0IHdoYXQgaGFwcGVucyBpZiBvdXIgcmVwbGljYXMgc3VkZGVubHkgbmVlZCB0byBkZWFsIHdpdGggYSBoaWdoIGxvYWQgb2YgaW5jb21pbmcgcmVxdWVzdHM/IEl0IGlzIHBvc3NpYmxlIHRoYXQgYSBmZXcgcmVwbGljYXMgY291bGQgZmFpbCwgYW5kIGFueSB1c2VyIHRoYXQgaXMgZGVwZW5kaW5nIG9uIHRoZSByZXBsaWNhIHdvdWxkIHBvdGVudGlhbGx5IG5vdCBiZSBhYmxlIHRvIGFjY2VzcyA8ZW0+YW55PC9lbT4gb2YgdGhlIGRhdGEgYXQgdGhhdCByZXBsaWNhIChhdCBsZWFzdCB1bnRpbCBhbm90aGVyIHJlcGxpY2Egd2FzIGFibGUgdG8gY29tZSBhbmQgdGFrZSBpdHPCoHBsYWNlKS48L3A+PHA+VGhpcyBwcmVzZW50cyBhIG5ldyBjaGFsbGVuZ2Ugd2l0aCByZXBsaWNhdGlvbjogd2hpbGUgbW9zdCBvZiB1c2VycyBjYW4gYWNjZXNzIGFsbCBvZiBvdXIgZGF0YSB0aHJvdWdoIHdvcmtpbmcgcmVwbGljYXMsIGZvciBhIDxlbT5wb3J0aW9uPC9lbT4gb2YgdXNlcnMsIGFsbCBvZiBvdXIgZGF0YSBjb3VsZCBiZSA8ZW0+Y29tcGxldGVseSB1bmF2YWlsYWJsZTwvZW0+IGlmIHRoZSByZXBsaWNhIHRoYXQgdGhvc2UgdXNlcnMgYXJlIGFjY2Vzc2luZyA8ZW0+aGFwcGVuczwvZW0+IHRvwqBmYWlsLjwvcD48cD5CdXQgd2hhdCBpZiB3ZSBoYWQgYSA8ZW0+dmVyeTwvZW0+IGxhcmdlIGRhdGEgc2V0PyBPbmUgdGhhdCB3b3VsZCBtYWtlIHVzIHRoaW5rIHR3aWNlIGJlZm9yZSByZXBsaWNhdGluZyBpdD8gVGhpcyBpcyB3aGVyZSB3ZSBtaWdodCB3YW50IHRvIGVtcGxveSBhIGRpZmZlcmVudCBzdHJhdGVneeKApmxpa2UgcGFydGl0aW9uaW5nIG91csKgZGF0YSE8L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpYR3I5clB5bURWM3RUb2tKaFpoSGZ3LmpwZWciIC8+PGZpZ2NhcHRpb24+V2hlcmUgcmVwbGljYXRpb24gZG9lc27igJl0IGZpdCB0aGUgYmlsbCwgcGFydGl0aW9ucyBjYW4gc2F2ZSB0aGXCoGRheSE8L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+SW4gc29tZSBzaXR1YXRpb25zIHdoZXJlIGEgZGF0YXNldCBpcyBzbyBsYXJnZSB0aGF0IGl0IGNhbm5vdCBhbGwgZml0IG9uIGEgc2luZ2xlIG5vZGUsIHdlIGNhbiBvcHQgdG8gcGFydGl0aW9uIG91csKgZGF0YS48L3A+PGJsb2NrcXVvdGU+UGFydGl0aW9uaW5nIGRhdGEgYWNyb3NzIG5vZGVzIG1lYW5zIHRoYXQgb3VyIGRhdGEgaXMgZGlzdHJpYnV0ZWQgYWNyb3NzIG91ciBub2Rlczsgbm8gc2luZ2xlIG5vZGUgY2FuIGNvbnRhaW4gYWxsIG9mIG91ciBkYXRhLiBDb252ZXJzZWx5LCBpZiB3ZSB3YW50ZWQgdG8gcmV0cmlldmUgYWxsIG9mIHRoZSBkYXRhLCB3ZeKAmWQgbmVlZCB0byBnbyB0byBldmVyeSBzaW5nbGUgbm9kZSB0byBnZXTCoGl0LjwvYmxvY2txdW90ZT48cD5EZXBlbmRpbmcgb24gd2hhdCBhIGRhdGFzZXQgbG9va3MgbGlrZSBhbmQgd2hhdCBwaWVjZXMgb2YgZGF0YSBhcmUgcmVsYXRlZCB0byBvbmUgYW5vdGhlciwgaXQgbWF5IG1ha2Ugc2Vuc2UgdG8gbHVtcCBjZXJ0YWluIHR5cGVzIG9mIGRhdGEgdG9nZXRoZXIgb250byBhIHNpbmdsZSBub2RlLiBGb3IgZXhhbXBsZSwgaW4gYSBzeXN0ZW0gdGhhdCBzaG93cyBwb3N0cyBhbmQgdGhlIHJlbGF0ZWQgY29tbWVudHMgb24gYSBwYWdlLCBpdCBtaWdodCBtYWtlIGxvZ2ljYWwgc2Vuc2UgdG8gYWx3YXlzIHB1dCB0aGUgZGF0YSBmb3IgYSBwb3N0IGFuZCBhbGwgb2YgaXRzIGNvbW1lbnRzIHRvZ2V0aGVyIG9uIHRoZSBzYW1lIG5vZGUsIHNvIHRoYXQgb3VyIHVzZXJzIHdvdWxkbuKAmXQgbmVlZCB0byBtYWtlIDxlbT50d288L2VtPiByZXF1ZXN0cyB0byBmZXRjaCA8ZW0+dHdvPC9lbT4ga2luZHMgb2YgZGF0YSBpbiA8ZW0+dHdvPC9lbT4gZGlmZmVyZW50IG5vZGVzLjwvcD48cD5UaGVyZSBhcmUgbG90cyBvZiBzdHJhdGVnaWVzIGZvciBkZXRlcm1pbmluZyB3aGF0IGRhdGEgc2hvdWxkIGxpdmUgb24gd2hpY2ggbm9kZS4gVHdvIHRlcm1zIHRoYXQgd2UgbWlnaHQgY29tZSBhY3Jvc3MgdG8gZGVzY3JpYmUgdGhpcyBpZGVhIGFyZSA8c3Ryb25nPjxlbT5zaGFyZGluZyA8L2VtPjwvc3Ryb25nPmFuZDxzdHJvbmc+PGVtPiBmcmFnbWVudGF0aW9uPC9lbT48L3N0cm9uZz4uIEJvdGggdGVybXMgYXJlIHVzZWQgaW50ZXJjaGFuZ2VhYmx5IHRvIGRlc2NyaWJlIHRoZSBpZGVhIG9mIHBhcnRpdGlvbmluZyBhIGRhdGFzZXQgYWNyb3NzIG1hbnkgZGlmZmVyZW50IG5vZGVzICh3ZSB3b27igJl0IGdvIGludG8gZGV0YWlsIGFib3V0IHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb25zIG9mIHRoZXNlIHRlY2huaXF1ZXMgaW4gdGhpc8KgcG9zdCkuPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqWmY4VDR3Vl80MDRybVpFRUwxR200Zy5qcGVnIiAvPjxmaWdjYXB0aW9uPlNoYXJkaW5nL2ZyYWdtZW50aW5nIGRhdGEgaXMgYSBraW5kIG9mIHBhcnRpdGlvbmluZyE8L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+VGhlIGltcG9ydGFudCB0aGluZyB0byBub3RlIGhlcmUgaXMgdGhhdCB3aGVuZXZlciB3ZSBzZWUgdGhlIHRlcm1zIOKAnHNoYXJkaW5n4oCdIG9yIOKAnGZyYWdtZW50YXRpb27igJ0sIHRoZSBjb250ZXh0IGlzIHVzdWFsbHkgYSBwYXJ0aXRpb25lZCBkYXRhYmFzZSAoc2luY2UgZGF0YWJhc2VzIGFyZSBnZW5lcmFsbHkgd2hlcmUgb3VyIGRhdGFzZXRzIHdpbGwgbGl2ZSEpLiBPZnRlbnRpbWVzLCBkYXRhYmFzZXMgbGl2ZSBvbiBtdWx0aXBsZSBzZXJ2ZXJzIGFuZCBhcmUgZGlzdHJpYnV0ZWQsIHRoZW1zZWx2ZXMgKHByZXR0eSBuZWF0LCByaWdodD8pLiBTbywgd2hlbiB3ZSBlbmNvdW50ZXIgYSBzaXR1YXRpb24gd2hlcmUgYSBkYXRhYmFzZSBpcyBmcmFnbWVudGVkIGFuZCBzcGxpdCBpdCBpbnRvIHNoYXJkcywgd2hhdCB3ZSBhcmUgcmVhbGx5IGRlYWxpbmcgd2l0aCBpcyBvbmUgYmlnIGRhdGFzZXQgdGhhdCBoYXMgYmVlbiBzcGxpdCBpbnRvIDxzdHJvbmc+PGVtPnNoYXJkczwvZW0+PC9zdHJvbmc+LCBvciBzbWFsbGVyIHNldHMvZnJhZ21lbnRzLCBhbmQgaGF2ZSBiZWVuIGRpc3RyaWJ1dGVkIGFjcm9zc8Kgbm9kZXMuPC9wPjxibG9ja3F1b3RlPkEgc2luZ2xlIGRhdGFiYXNlIG5vZGUgY29udGFpbnMganVzdCBvbmUgcG9ydGlvbiBvZiBhIGxhcmdlciBkYXRhc2V0LiBXaGVuIG1vcmUgZGF0YSBnZXRzIGFkZGVkIG9yIGlmIHRoZSBkYXRhc2V0IGNoYW5nZXMgc2lnbmlmaWNhbnRseSwgaXQgbWlnaHQgbmVlZCB0byBiZSByZS1wYXJ0aXRpb25lZCBpbnRvIG5ldyBzaGFyZHMgYWNyb3NzIGFsbCB0aGXCoG5vZGVzLjwvYmxvY2txdW90ZT48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKjlWQjhrXzNSUjZfOENIRllEWmNkRkEuanBlZyIgLz48ZmlnY2FwdGlvbj5SZXBsaWNhdGlvbiB2ZXJzdXMgcGFydGl0aW9uaW5nIGRhdGEuPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPlNvIGhvdyBkb2VzIHRoaXMgZml0IGluIHdpdGggb3VyIG1lbnRhbCBtb2RlbCBvZiA8ZW0+cmVwbGljYXRpb248L2VtPj88L3A+PHA+V2VsbCwgdG8gc3RhcnQsIHRoZXJlIGlzIG9uZSBtYWpvciBzaW1pbGFyaXR5IHRvIG5vdGUgaGVyZTogYm90aCBwYXJ0aXRpb25pbmcgYW5kIHJlcGxpY2F0aW9uIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIGFuZCByZWxpYWJpbGl0eSBvZiBvdXIgc3lzdGVtLiBUaGlzIGlzIHNpbXBseSBkdWUgdG8gdGhlIGZhY3QgdGhhdCBoYXZpbmcgbW9yZSBub2Rlc+KAiuKAlOKAindoZXRoZXIgdGhleSBhcmUgcmVwbGljYXMgdGhhdCBjb250YWluIGFsbCB0aGUgc2FtZSBkYXRhLCBvciB3aGV0aGVyIHRoZXkgYXJlIHBhcnRpdGlvbnMgdGhhdCBjb250YWlucyBzb21lIG9mIHRoZSBkYXRh4oCK4oCU4oCKbWVhbiB0aGF0IHRoZSBsb2FkIG9uIGEgc2luZ2xlIG5vZGUgcmVkdWNlcyEgV2hlbiB3ZSBhZGQgbW9yZSByZXBsaWNhcyBPUiBwYXJ0aXRpb25zLCB3ZSBlZmZlY3RpdmVseSBzcHJlYWQgb3V0IHRoZSBpbmNvbWluZyByZXF1ZXN0cyBmb3IgZGF0YSwgd2hpY2ggaGVscHMgb3VyIHN5c3RlbSBzY2FsZSBhbmQgbWFrZXMgaXQgbXVjaCBtb3JlIHBlcmZvcm1hbnQgYW5kIGF2YWlsYWJsZSB0byBvdXIgZW5kwqB1c2Vycy48L3A+PHA+QnV0IHdoYXQgYWJvdXQgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlc2UgdHdvIHN0cmF0ZWdpZXM/IFJlcGxpY2F0aW9uIGd1YXJhbnRlZXMgdGhhdCBvdXIgZW5kIHVzZXIgY2FuIDxlbT5hbHdheXMgcmVhZDwvZW0+IG91ciB3aG9sZSBkYXRhc2V0LCBiZWNhdXNlIGFsbCBvZiB0aGUgZGF0YSBsaXZlcyBvbiBlYWNoIHJlcGxpY2EuIE9uIHRoZSBvdGhlciBoYW5kLCBwYXJ0aXRpb25pbmcgZ3VhcmFudGVlcyB0aGF0IDxlbT5zb21lPC9lbT4gb2YgdGhlIGRhdGEgd2lsbCBiZSByZXRyaWV2YWJsZSwgYnV0IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IG91ciBlbmQgdXNlciBjYW4gYWx3YXlzIHJldHJpZXZlIHRoZSBkYXRhIHRoZXkgbmVlZCBpZiBvbmUgb2YgdGhlIHBhcnRpdGlvbnMgZmFpbHMhPC9wPjxwPkFub3RoZXIgZGlmZmVyZW5jZSBiZXR3ZWVuIHJlcGxpY2F0aW9uIGFuZCBwYXJ0aXRpb25pbmcgYXJlIHRoZSB0aGluZ3MgdGhhdCBtYWtlIHRoZW0gZGlmZmljdWx0ISBSZXBsaWNhdGlvbiBpcyBoYXJkIGJlY2F1c2UgaXTigJlzIHRyaWNreSB0byBtYWludGFpbiBjb25zaXN0ZW5jeSBiZXR3ZWVuIG91ciByZXBsaWNhcy4gUGFydGl0aW9uaW5nIGlzIGhhcmQgZm9yIHR3byByZWFzb25zOiBmaXJzdCwgaWYgb3VyIGRhdGFzZXQgY2hhbmdlcyBhbmQgd2UgbmVlZCB0byBzdWRkZW5seSByZS1wYXJ0aXRpb24gaXTigKZ3ZWxsLCB0aGlzIGlzIG5vIGVhc3kgdGFzay4gRGVjaWRpbmcgaG93IHRvIGRpdmlkZSB1cCBkYXRhIHRha2VzIHRpbWUgYW5kIGVmZm9ydCwgYW5kIHdlIGRlZmluaXRlbHkgZG9u4oCZdCB3YW50IHRvIGJlIHJlLXBhcnRpdGlvbmluZyBpdCBhbGwgdGhlIHRpbWUhIFNlY29uZCwgZGVwZW5kaW5nIG9uIGhvdyBpdCBpcyBpbXBsZW1lbnRlZCwgaXQgY2FuIHNvbWV0aW1lcyBiZSBpbmVmZmVjdGl2ZS4gRm9yIGV4YW1wbGUsIGlmIHdlIHNvbWUgaGlnaGx5LXVzZWQgZGF0YSB0aGF0IGlzIHBhcnRpdGlvbmVkIGludG8gPGVtPm9uZTwvZW0+IG5vZGUsIHdlIGFjdHVhbGx5IGVuZCB1cCBpbiBhIDxlbT53b3JzZTwvZW0+IHNpdHVhdGlvbiB0aGFuIGJlZm9yZSB3ZSBwYXJ0aXRpb25lZCB0aGUgZGF0YS4gV2h5IGlzwqB0aGF0PzwvcD48cD5XZWxsLCBpbWFnaW5lIHRoYXQgYWxsIG9mIG91ciBlbmQgdXNlcnMgc3VkZGVubHkgcmVxdWVzdCB0aGF0IGhpZ2hseS11c2VkIGRhdGEgYXQgb25jZSwgYW5kIHRoZSBub2RlIGNhbuKAmXQgaGFuZGxlIHRoZSBoaWdoIGxvYWQ/IE9yIHdoYXQgaWYgdGhhdCBvbmUgZGF0YWJhc2Ugbm9kZSB3aXRoIHRoZSBoaWdobHktdXNlZCBkYXRhIGZhaWxzPyBOb3cgb3VyIGVuZCB1c2VycyBjYW7igJl0IGFjY2VzcyB0aGlzIGltcG9ydGFudCBwYXJ0aXRpb24hIFNvIGl04oCZcyB1cCB0byB1cyB0byBjb25zaWRlciBhbGwgb2YgdGhlc2UgcG90ZW50aWFsIGRvd25zaWRlcyB3aGVuIGRldGVybWluaW5nIHRoZSB0cmFkZW9mZnMgb2YgdGhlc2UgdHdvIHN0cmF0ZWdpZXMuIFRvIGF2b2lkIHNvbWUgb2YgdGhlIGhlYXJ0YWNoZSB0aGF04oCZcyBhc3NvY2lhdGVkIHdpdGggbWFraW5nIHRoZXNlIGRlY2lzaW9ucywgbWFueSBwcm9kdWN0aW9uLWxldmVsIGRpc3RyaWJ1dGVkIHN5c3RlbXMgd2lsbCB1c2UgcmVwbGljYXRpb24gd2hlbiBwb3NzaWJsZSwgYW5kIG9wdCBmb3IgcGFydGl0aW9ucyBvbmx5IHdoZW4gbmVjZXNzYXJ5LjwvcD48aDM+RGl2aWRpbmcgYcKgbmV0d29yazwvaDM+PHA+Tm93IHRoYXQgd2Uga25vdyB0aGUgaW5zIGFuZCBvdXRzIG9mIHdoYXQgaXQgbWVhbnMgdG8gcGFydGl0aW9uIGRhdGEsIHdlIGhhdmUgb25lIGxhc3QgdGhpbmcgdG8gdW5wYWNrOiB0aGUgaWRlYSBiZWhpbmQgcGFydGl0aW9uaW5nIHRoZSBuZXR3b3JrLiBEb27igJl0IGZlZWwgdG9vIGludGltaWRhdGVkLCB0aG91Z2gsIHRoaXMgaXNu4oCZdCBhIGNvbXBsZXRlbHkgbmV3IHRvcGljIGZvciB1cy4gSW4gZmFjdCwgSeKAmWxsIGxldCB5b3UgaW4gb24gYSBsaXR0bGUgc2VjcmV0LCB0aG91Z2jigIrigJTigIp3ZeKAmXZlIGFscmVhZHkgc2VlbiB0aGUgZWZmZWN0cyBvZiBhIHBhcnRpdGlvbmVkIG5ldHdvcmshPC9wPjxwPldl4oCZdmUgbGVhcm5lZCBhYm91dCB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9tb2Rlcy1vZi1mYWlsdXJlLXBhcnQtMS02Njg3NTA0YmZlZDYiPm1hbnk8L2E+IDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvbW9kZXMtb2YtZmFpbHVyZS1wYXJ0LTItNGQwNTA3OTRiZTJmIj5kaWZmZXJlbnQ8L2E+IGZhaWx1cmUgbW9kZXMgaW4gdGhpcyBzZXJpZXMsIGFuZCBhcyBpdCB0dXJucyBvdXQsIDxzdHJvbmc+PGVtPm5ldHdvcmsgcGFydGl0aW9uaW5nPC9lbT48L3N0cm9uZz4gaXMgYWN0dWFsbHkganVzdCBvbmUgZm9ybSBvZiBmYWlsdXJlIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtLiBJdCBvY2N1cnMgd2hlbiBhIG5ldHdvcmsgaXMgc3BsaXQgdXAgaW50byBmcmFnbWVudHMsIGFuZCBzdWJzZXF1ZW50bHkgY3JlYXRlcyBzdWItbmV0d29ya3Mgd2l0aGluIGl0c2VsZi4gVGhlIGltcG9ydGFudCBiaXQgdG8gY2FsbCBvdXQgaGVyZSBpcyB0aGF0IGl0IGlzIGEgPHN0cm9uZz48ZW0+bmV0d29yayBmYXVsdDwvZW0+PC9zdHJvbmc+IChhbHNvIGNhbGxlZCBhIDxzdHJvbmc+PGVtPm5ldHdvcmsgc3BsaXQ8L2VtPjwvc3Ryb25nPikgdGhhdCBicmVha3MgdGhlIHVzdWFsIGNvbW11bmljYXRpb24gYmV0d2VlbiBub2RlcyBpbiB0aGXCoG5ldHdvcmsuPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqZnlGY0VRUWJPM0UySU42X3lLajNjdy5qcGVnIiAvPjxmaWdjYXB0aW9uPldoYXQgZG9lcyBpdCBtZWFuIHRvIHBhcnRpdGlvbiBhwqBuZXR3b3JrPzwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5Ib3dldmVyLCB0aGlzIGRvZXNu4oCZdCBtZWFuIHRoYXQgPGVtPmFsbDwvZW0+IHRoZSBub2RlcyBpbiB0aGUgbmV0d29yayBjYW5ub3QgY29tbXVuaWNhdGU7IHRoZSBvbmx5IG9uZXMgdGhhdCBjYW7igJl0IGNvbW11bmljYXRlIHRvIG9uZSBhbm90aGVyIGFyZSB0aGUgb25lcyBzdXJyb3VuZGluZyB0aGUgc3BsaXQuIFRoaXMgbWVhbnMgdGhhdCBpZiBhIG5ldHdvcmsgc3BsaXQgb2NjdXJzIGJldHdlZW4gdHdvIG5vZGVzLCB0aG9zZSB0d28gbm9kZXMgY2Fu4oCZdCB0YWxrIHRvIG9uZSBhbm90aGVyLCBidXQgdGhleSBjYW4gY29udGludWUgdG8gdGFsayB0byBvdGhlciBub2RlcyB0aGF0IGFyZSBub3QgaW1wYWN0ZWQgYnkgdGhlwqBzcGxpdC48L3A+PGJsb2NrcXVvdGU+V2hlbiB0aGUgbm9kZSBjb25uZWN0aW9uIGlzIGludGVycnVwdGVkIGJ5IGEgbmV0d29yayBmYXVsdCwgaXQgY3JlYXRlcyBzdWJuZXR3b3JrcyB0aGF0IGFyZSDigJxwYXJ0aXRpb25z4oCdIG9mIHRoZSBsYXJnZXIgbmV0d29ya+KAiuKAlOKAimFuIHVuaW50ZW50aW9uYWwgZGl2aXNpb24gb2YgdGhlIG5ldHdvcmssIGlmIHlvdcKgd2lsbC48L2Jsb2NrcXVvdGU+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSo0WGR4aTdoNmpyaEJLWUpYUkJaQXZnLmpwZWciIC8+PGZpZ2NhcHRpb24+TmV0d29yayBmYWlsdXJlcyBjYW4gcGFydGl0aW9uIHRoZSBuZXR3b3JrIGludG8gc21hbGxlciBzdWJuZXR3b3Jrcy48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+Rm9yIGV4YW1wbGUsIGluIHRoZSBkcmF3aW5nIHNob3duIGhlcmUsIGEgPHN0cm9uZz48ZW0+bmV0d29yayBmYWlsdXJlPC9lbT48L3N0cm9uZz4gaGFzIGNhdXNlZCBhIG5ldHdvcmsgcGFydGl0aW9uIChhbHNvIGNhbGxlZCBhIDxzdHJvbmc+PGVtPmZyYWdtZW50YXRpb248L2VtPjwvc3Ryb25nPikuIFRoZSBwb2ludCBvZiB0aGUgZnJhZ21lbnRhdGlvbiBmb3JjZXMgb3VyIG5ldHdvcmsgdG8gYmUgZGl2aWRlZCBpbnRvIHR3byA8c3Ryb25nPjxlbT5zdWJuZXR3b3JrczwvZW0+PC9zdHJvbmc+LCB3aGljaCB3ZeKAmXZlIG5hbWVkIEEgYW5kIEIuIFRoZSBub2RlcyBvZiBzdWJuZXR3b3JrIEEgY2FuIGtlZXAgdGFsa2luZyB0byBvbmUgYW5vdGhlciwgYW5kIHRoZSBub2RlcyBvZiBzdWJuZXR3b3JrIEIgY2FuIGtlZXAgcHJvY2Vzc2luZyBkYXRhIGFuZCBzZW5kaW5nIGluZm9ybWF0aW9uIGJldHdlZW4gdGhlbXNlbHZlcy4gSG93ZXZlciwgYW55IG9mIHRoZSBub2RlcyBiZXR3ZWVuIHN1Ym5ldHdvcmtzIEEgYW5kIEIgaGF2ZSBiZWVuIGZyYWdtZW50ZWQsIHdoaWNoIG1lYW5zIHRoYXQgdGhleSBjYW7igJl0IHRhbGsgdG8gb25lIGFub3RoZXIhIFRoaXMgbWVhbnMgdGhhdCBzdWJuZXR3b3JrIEEgY2Fubm90IHRhbGsgdG8gb3IgZXZlbiBrbm93IHRoZSA8ZW0+c3RhdGU8L2VtPiBvZiBzdWJuZXR3b3JrIEIgKGFuZCB2aWNlwqB2ZXJzYSkuPC9wPjxwPk5vdywgaWYgdGhpcyBzaXR1YXRpb24gc291bmRzIGJhZCwgeW914oCZcmUgcmlnaHTigIrigJTigIppdCBpcyEgV2UgZG9u4oCZdCB3YW50IG91ciBuZXR3b3JrIHRvIHJhbmRvbWx5IGJyZWFrIGFuZCBjYXVzZSBwYXJ0cyBvZiBvdXIgc3lzdGVtIHRvIGJlIGlzb2xhdGVkIGZyb20gb25lIGFub3RoZXIuIENsZWFybHksIGEgcGFydGl0aW9uZWQgbmV0d29yayBpcyBzb21ldGhpbmcgdG8gYXZvaWQuIEhvd2V2ZXIsIGRvIHlvdSByZW1lbWJlciBiYWNrIHdoZW4gd2UgbGVhcm5lZCBhYm91dCB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9mb3JhZ2luZy1mb3ItdGhlLWZhbGxhY2llcy1vZi1kaXN0cmlidXRlZC1jb21wdXRpbmctcGFydC0xLTFiMzVjM2I4NWI1MyI+OCBGYWxsYWNpZXMgb2YgRGlzdHJpYnV0ZWQgQ29tcHV0aW5nPC9hPj8gSWYgd2UgdGhpbmsgYmFjayB0byBmYWxsYWN5ICMxICg8ZW0+4oCcVGhlIG5ldHdvcmsgaXMgcmVsaWFibGUu4oCdPC9lbT4pIGFuZCBGYWxsYWN5ICM0ICg8ZW0+4oCcVGhlIG5ldHdvcmsgaXMgc2VjdXJlLuKAnSkgPC9lbT50aGVuIHdl4oCZbGwgY29tZSBmYWNlIHRvIGZhY2Ugd2l0aCB0aGUgaGFyZCB0cnV0aDogPHN0cm9uZz48ZW0+bmV0d29yayBwYXJ0aXRpb25zIGFyZSB1bmF2b2lkYWJsZTwvZW0+PC9zdHJvbmc+LjwvcD48cD5TbyB3aGF0IGNhbiB3ZSBkbz8gV2VsbCwgd2UgY2FuIGRlc2lnbiBvdXIgc3lzdGVtcyB0byB0cnkgdG8gaGFuZGxlIHRoZW0gZ3JhY2VmdWxseSB3aGVuIHRoZXkgKGluZXZpdGFibHkpIGhhcHBlbiEgVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBjb25jbHVzaW9uIHRoYXQgd2UgY2FtZSB0byB3aGVuIHdlIHdlcmUgbGVhcm5pbmcgYWJvdXQgPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9mYW50YXN0aWMtZmF1bHRzLWFuZC13aGF0LXRvLWNhbGwtdGhlbS01NmQ5MWExYjE5OGMiPmZhdWx0IHRvbGVyYW5jZTwvYT4sIGFuZCBob3cgd2UgYXJlIGZvcmNlZCB0byBjb25zaWRlciBmYXVsdHMgYW5kIHRyeSB0byBkZXNpZ24gb3VyIHN5c3RlbXMgdG8gaGFuZGxlIHRoZW0uIFNpbWlsYXJseSwgd2hlbiBpdCBjb21lcyB0byBuZXR3b3JrIHBhcnRpdGlvbnMsIHdlIG5lZWQgdG8gcGxhbiBmb3IgPHN0cm9uZz48ZW0+cGFydGl0aW9uIHRvbGVyYW5jZTwvZW0+PC9zdHJvbmc+LCB3aGljaCBpcyB0aGV5IHdheSB0aGF0IHdlIGNvbnNpZGVyIHRoZSBwb3RlbnRpYWwgbmV0d29yayBmYXVsdHMgdGhhdCBtaWdodCBwb3AgdXAsIGFzIHdlbGwgYXMgdGhlIGZhaWx1cmVzIHRoYXQgdGhleSBtaWdodCBjYXVzZSEgQSBwYXJ0aXRpb24gdG9sZXJhbnQgc3lzdGVtIGlzIG9uZSB0aGF0IGhhcyBhdHRlbXB0ZWQgdG8gYWNjb3VudCBmb3IgbmV0d29yayBwYXJ0aXRpb25zLCBzaW5jZSB3ZeKAmWxsIGFsbCBydW4gaW50byB0aGVtIGV2ZW50dWFsbHkuPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqV2tHeFZ2VGNCdC1oWnZfVnBaME81US5qcGVnIiAvPjxmaWdjYXB0aW9uPlBhcnRpdGlvbiB0b2xlcmFuY2UgaXMgdGhlIGFiaWxpdHkgdG8gYWNjb3VudCBmb3IgbmV0d29yayBwYXJ0aXRpb25zLjwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5BbHRob3VnaCBkYXRhIHBhcnRpdGlvbnMgbWlnaHQgYmUgYW4gYXZvaWRhYmxlIHByb2JsZW0gdG8gc29sdmUgc2luY2Ugd2UgbWF5IG5vdCBkZWNpZGVkIHRoYXQgd2UgZXZlbiBuZWVkIHRvIHBhcnRpdGlvbiBvdXIgZGF0YSwgbmV0d29yayBwYXJ0aXRpb25zIGFyZSBzb21ldGhpbmcgdGhhdCB3ZSBqdXN0IGNhbm5vdCBhdm9pZC4gSW4gZmFjdCwgdGhleeKAmWxsIGNvbWUgdXAgYWdhaW4gbGF0ZXIgd2hlbiBzdGFydCBsZWFybmluZyBhYm91dCBzb21lIGludGVyZXN0aW5n4oCmdGhlb3JlbXMuIEJ1dCB0aGF04oCZcyBhIHN0b3J5IGZvciBhbm90aGVyIHBvc3QhwqDwn5iJPC9wPjxoND5SZXNvdXJjZXM8L2g0PjxwPlBhcnRpdGlvbmluZyBhbmQgcGFydGl0aW9uIHRvbGVyYW5jZSBjb21lcyB1cCBxdWl0ZSBvZnRlbiB3aGVuIGxlYXJuaW5nIG1vcmUgYWR2YW5jZWQgZGlzdHJpYnV0ZWQgc3lzdGVtIHRvcGljcywgc28gaXTigJlzIGltcG9ydGFudCB0byBoYXZlIGEgc3Ryb25nIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGZ1bmRhbWVudGFscy4gQ29udmVuaWVudGx5LCB0aGVyZSBhcmUgc29tZSByZWFsbHkgZ3JlYXQgcmVzb3VyY2VzIHRvIGhlbHAgd2l0aCB0aGlzIHRhc2suIEnigJl2ZSBsaXN0ZWQgc29tZSBvZiBteSBmYXZvcml0ZXMgYmVsb3csIHNvbWUgb2Ygd2hpY2ggZ2V0IGludG8gZXZlbiBtb3JlIGFkdmFuY2VkIGFzcGVjdHMgb2YgcGFydGl0aW9uaW5nOyBjaGVjayB0aGVtIG91dCBpZiB5b3XigJlyZSBlYWdlciB0byBsZWFybsKgbW9yZSE8L3A+PG9sPjxsaT48YSBocmVmPSJodHRwOi8vZGltYWZlbmcuY29tLzIwMTYvMTIvMDQvZGlzdHJpYnV0ZWQtc3lzdGVtcy8iPkRpc3RyaWJ1dGVkIHN5c3RlbXMgY2hlYXQgc2hlZXQ8L2E+LCBEbWl0cnnCoEZlZG9zb3Y8L2xpPjxsaT48YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vQFByYW5heWtjL3VuZGVyc3RhbmRpbmctcGFydGl0aW9uaW5nLWluLWRpc3RyaWJ1dGVkLXN5c3RlbXMtNGFjM2M4MDEwZmFlIj5QYXJ0aXRpb25pbmc6IFRoZSBNYWdpYyBSZWNpcGUgRm9yIERpc3RyaWJ1dGVkIFN5c3RlbXM8L2E+LCBQcmFuYXkgS3VtYXIgQ2hhdWRoYXJ5PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL2Jvb2subWl4dS5uZXQvZGlzdHN5cy9pbnRyby5odG1sIj5EaXN0cmlidXRlZCBzeXN0ZW1zIGZvciBmdW4gYW5kIHByb2ZpdDwvYT4sIE1pa2l0b8KgVGFrYWRhPC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj11VEp2TVJSNDBBZyI+V2h5IGFyZSBEaXN0cmlidXRlZCBTeXN0ZW1zIHNvIGhhcmQ/IEEgbmV0d29yayBwYXJ0aXRpb24gc3Vydml2YWwgZ3VpZGU8L2E+LCBEZW5pc2XCoFl1PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1XMU5tYmN1b21WTSI+UmVwbGljYXRpb24gdnMgUGFydGl0aW9uaW5nPC9hPiwgR2VvcmdpYcKgVGVjaDwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vYXBoeXIuY29tL3Bvc3RzLzI4MS1qZXBzZW4tb24tdGhlLXBlcmlscy1vZi1uZXR3b3JrLXBhcnRpdGlvbnMiPkplcHNlbjogT24gdGhlIHBlcmlscyBvZiBuZXR3b3JrIHBhcnRpdGlvbnM8L2E+LCBLeWxlIEtpbmdzYnVyeTwvbGk+PC9vbD48aW1nIHNyYz0iaHR0cHM6Ly9tZWRpdW0uY29tL18vc3RhdD9ldmVudD1wb3N0LmNsaWVudFZpZXdlZCZyZWZlcnJlclNvdXJjZT1mdWxsX3JzcyZwb3N0SWQ9M2MxNzIzZmVjYzRlIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBhbHQ9IiI+PGhyPjxwPjxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvcGFyc2luZy10aHJvdWdoLXBhcnRpdGlvbnMtaW4tYS1kaXN0cmlidXRlZC1zeXN0ZW0tM2MxNzIzZmVjYzRlIj5QYXJzaW5nIFRocm91Z2ggUGFydGl0aW9ucyBpbiBhIERpc3RyaWJ1dGVkIFN5c3RlbTwvYT4gd2FzIG9yaWdpbmFsbHkgcHVibGlzaGVkIGluIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMiPmJhc2VkczwvYT4gb24gTWVkaXVtLCB3aGVyZSBwZW9wbGUgYXJlIGNvbnRpbnVpbmcgdGhlIGNvbnZlcnNhdGlvbiBieSBoaWdobGlnaHRpbmcgYW5kIHJlc3BvbmRpbmcgdG8gdGhpcyBzdG9yeS48L3A+XV0+PC9jb250ZW50OmVuY29kZWQ+CiAgICAgICAgPC9pdGVtPgogICAgICAgIDxpdGVtPgogICAgICAgICAgICA8dGl0bGU+PCFbQ0RBVEFbUmVkdW5kYW5jeSBhbmQgUmVwbGljYXRpb246IER1cGxpY2F0aW5nIGluIGEgRGlzdHJpYnV0ZWQgU3lzdGVtXV0+PC90aXRsZT4KICAgICAgICAgICAgPGxpbms+aHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9yZWR1bmRhbmN5LWFuZC1yZXBsaWNhdGlvbi1kdXBsaWNhdGluZy1pbi1hLWRpc3RyaWJ1dGVkLXN5c3RlbS03YWI0MzIyZDczNzg/c291cmNlPXJzcy04ZjU1OTkzYzk3M2UtLS0tLS0yPC9saW5rPgogICAgICAgICAgICA8Z3VpZCBpc1Blcm1hTGluaz0iZmFsc2UiPmh0dHBzOi8vbWVkaXVtLmNvbS9wLzdhYjQzMjJkNzM3ODwvZ3VpZD4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW2NvZGVdXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbY29tcHV0ZXItc2NpZW5jZV1dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtzb2Z0d2FyZS1kZXZlbG9wbWVudF1dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtwcm9ncmFtbWluZ11dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtkaXN0cmlidXRlZC1zeXN0ZW1zXV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGRjOmNyZWF0b3I+PCFbQ0RBVEFbVmFpZGVoaSBKb3NoaV1dPjwvZGM6Y3JlYXRvcj4KICAgICAgICAgICAgPHB1YkRhdGU+V2VkLCAxNCBBdWcgMjAxOSAxMjowMTowMSBHTVQ8L3B1YkRhdGU+CiAgICAgICAgICAgIDxhdG9tOnVwZGF0ZWQ+MjAxOS0wOC0xNFQxMjowMTowMS40NzNaPC9hdG9tOnVwZGF0ZWQ+CiAgICAgICAgICAgIDxjb250ZW50OmVuY29kZWQ+PCFbQ0RBVEFbPGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpMR3FLUUhXM1VmNHNhWXVDcnZUU2hBLmpwZWciIC8+PGZpZ2NhcHRpb24+UmVkdW5kYW5jeSBhbmQgcmVwbGljYXRpb246IGR1cGxpY2F0aW5nIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPldoZW4gaXQgY29tZXMgdG8gcHJvZ3JhbW1pbmcsIHRoZXJlIGFyZSBjZXJ0YWluIGNvbnZlbnRpb25zLCBpZGlvbXMsIGFuZCBwcmluY2lwbGVzIHRoYXQgd2UgcnVuIGludG8gYW5kIHJlZmVyZW5jZSBhcyBhIGNvbW11bml0eSBxdWl0ZSBvZnRlbi4gT25lIG9mIHRob3NlIHByaW5jaXBsZXMgaXMgdGhlIGlkZWEgb2Yg4oCcRG9u4oCZdCBSZXBlYXQgWW91cnNlbGbigJ0sIG9yIERSWSBmb3Igc2hvcnQuIEkgZW5jb3VudGVyZWQgdGhpcyBpZGVhIGVhcmx5IG9uIGluIG15IHByb2dyYW1taW5nIGNhcmVlciwgYW5kIGl0IHNlZW1lZCBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHRvIG1lIGF0IHRoZSB0aW1lOiBpbiBvcmRlciB0byBtYWludGFpbiBjbGVhbiwgY29uY2lzZSBjb2RlLCBpdCB3YXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGF0IG9uZSBkaWRu4oCZdCByZXBlYXQgdGhlIHNhbWUgbGluZXMgb3IgbG9naWMgaW4gb3VyIGNvZGViYXNlLjwvcD48cD5CdXQgb3ZlciB0aGUgeWVhcnMgb2YgbXkgY2FyZWVyLCBJ4oCZdmUgbGVhcm5lZCBhbmQgc2VlbiBtb3JlLCBhbmQgcmVhbGl6ZWQgdGhhdCB0aGF0IHJlcGV0aXRpb24gaXMgbm90IHNvIGN1dCBhbmQgZHJ5IOKAlG5vIHB1biBpbnRlbmRlZCEgU29tZXRpbWVzLCBpdCBhY3R1YWxseSBkb2VzIG1ha2Ugc2Vuc2UgdG8gcmVwZWF0IHlvdXJzZWxmIGF0IHRoZSByaXNrIG9mIG92ZXItZW5naW5lZXJpbmcgb3Igb3Zlci1hYnN0cmFjdGluZyBzb21ldGhpbmcgdW5uZWNlc3NhcmlseS4gU29tZXRpbWVzLCBpdCBtYWtlcyBzZW5zZSB0byBqdXN0IGR1cGxpY2F0ZSBhIGZ1bmN0aW9uIG9yIHBpZWNlIG9mIGxvZ2ljIGFuZCBqdXN0IOKAnGNvcHlwYXN0YeKAnSBpdCBpbnRvIGFub3RoZXLCoGZpbGUuPC9wPjxwPkFuZCB3aGVuIGl0IGNvbWVzIHRvIGRpc3RyaWJ1dGVkIHN5c3RlbXMsIGl0IG9mdGVuIG1ha2VzIGEgbG90IG9mIHNlbnNlIHRvIGhhdmUgbWFueSBvZiBvbmUgdGhpbmchIEluIGZhY3QsIGFzIHdlIHN0YXJ0IHRvIGxvb2sgYXQgZHVwbGljYXRpb24gYXMgYSBjb25jZXB0IGluIGRpc3RyaWJ1dGVkIGNvbXB1dGluZywgdGhlIG1vcmUgb2J2aW91cyBpdCBiZWNvbWVzIHRoYXQgcmVwZWF0aW5nIG91cnNlbHZlcyBjYW4gYWN0dWFsbHkgYmUgYSBodWdlIGJlbmVmaXQgdG8gb3VyIHN5c3RlbSBhcyBhIHdob2xlLiBTbyBsZXTigJlzIGRpZyBpbnRvIGR1cGxpY2F0aW9uIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtLCBhbmQgdHJ5IHRvIHVuZGVyc3RhbmQgd2h5IHdl4oCZZCBldmVyIHdhbnQgdG8gZG/CoGl0LjwvcD48aDM+UmVwZXRpdGlvbjogc29tZXRpbWVzIGEgZ29vZMKgdGhpbmc/PC9oMz48cD5XaGVuIHdlIHRhbGsgYWJvdXQg4oCccmVwZWF0aW5nIG91cnNlbHZlc+KAnSBpbiB0aGUgdGhlIHJlYWxtIG9mIGRpc3RyaWJ1dGVkIGNvbXB1dGluZywgd2UgY2FuIG1lYW4gbWFueSBkaWZmZXJlbnQgdGhpbmdzLiBSZXBldGl0aW9uIG9mIGEgbGluZSBvZiBjb2RlIG9yIGEgcGllY2Ugb2YgbG9naWMgdXN1YWxseSBpbmRpY2F0ZXMgdGhhdCB3ZSBoYXZlIG1vcmUgdGhhbiBvbmUgdGhpbmcgdGhhdCBpc27igJl0IHF1aXRlIG5lY2Vzc2FyeS4gSW4gYSBkaXN0cmlidXRlZCBzeXN0ZW0sIHdlIGhhdmUgYSBzcGVjaWFsIHRlcm0gZm9yIHRoaXMgY2FsbGVkIDxzdHJvbmc+PGVtPnJlZHVuZGFuY3k8L2VtPjwvc3Ryb25nPiwgd2hpY2ggaXMgYWxsIG9mIHRoZSByZXNvdXJjZXMgaW4gYSBzeXN0ZW0gdGhhdCBhcmUgbm90IG5lY2Vzc2FyeSBmb3IgdGhlIHN5c3RlbSB0byBhY3R1YWxseSBmdW5jdGlvbi48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSowRkpDMk5tS1cxQ29jYUpDTVFZNEVRLmpwZWciIC8+PGZpZ2NhcHRpb24+V2hhdCBjYW4gcmVkdW5kYW5jeSBpbmNsdWRlPzwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5Ib3dldmVyLCBpbiBkaXN0cmlidXRlZCBjb21wdXRpbmcsIHdlIGNvdWxkIHBvdGVudGlhbGx5IGhhdmUgYSB3aG9sZSBsb3Qgb2YgZGlmZmVyZW50IHJlc291cmNlcywgd2hpY2ggbWVhbnMgdGhhdCB3ZSBoYXZlIG1hbnkgZGlmZmVyZW50IHRoaW5ncyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGJlIHJlcGVhdGVkISBUaHVzLCByZWR1bmRhbmN5IGNhbiBlbmNvbXBhc3MgbWFueSBkaWZmZXJlbnQga2luZHMgb2YgZXh0cmFuZW91cyByZXNvdXJjZXMuPC9wPjxwPkZvciBleGFtcGxlLCByZXBlYXRlZCBjYWxscyB0byB0aGUgc2FtZSBmdW5jdGlvbiBmcm9tIHRoZSBkaWZmZXJlbnQgcGxhY2VzIGluIHRoZSBzeXN0ZW0sIG9yIGR1cGxpY2F0ZWQgcmVmZXJlbmNlcy92YXJpYWJsZXMgdG8gdGhlIHNhbWUgZGF0YSBhcmUgZm9ybXMgb2YgcmVkdW5kYW5jeS4gU2ltaWxhcmx5LCBkdXBsaWNhdGVkIGV4ZWN1dGlvbiB0aW1lIGluIGEgZnVuY3Rpb24gYXMgd2VsbCBhcyBleHRyYSBtZW1vcnksIGZpbGVzLCBvciBwcm9jZXNzZXMgYXJlIGFsc28gcmVkdW5kYW50LCBzaW5jZSB0aGUgc3lzdGVtIGRvZXNu4oCZdCBhY3R1YWxseSBuZWVkIHRob3NlIGR1cGxpY2F0ZWQgcmVzb3VyY2VzIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS48L3A+PHA+Rm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIHNlcmllcywgd2XigJlsbCBmb2N1cyBvbiByZWR1bmRhbmN5IGluIHRoZSBjb250ZXh0IG9mIGV4dHJhIG1lbW9yeSwgZmlsZXMgb3IgcHJvY2Vzc2VzLCB3aGljaCBpcyBvZnRlbiBjYWxsZWQgPHN0cm9uZz48ZW0+c3RydWN0dXJhbCByZWR1bmRhbmN5PC9lbT48L3N0cm9uZz4uIEluIHRoZSBjb250ZXh0IG9mIGEgZGlzdHJpYnV0ZWQgc3lzdGVtLCBzb21lIGV4dHJhIG1lbW9yeSBvciBmaWxlIChyZWFkOiBhIGRhdGFiYXNlKSBvciBhbiBleHRyYSBwcm9jZXNzIGFsbCBjYW4gYmUgYWJzdHJhY3RlZCB0byBhIHRlcm0gdGhhdCA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL21hbnktbm9kZXMtb25lLWRpc3RyaWJ1dGVkLXN5c3RlbS05OTIxZjg1MjA1YzQiPndl4oCZcmUgYWxyZWFkeSBmYW1pbGlhcjwvYT4gd2l0aDrCoG5vZGVzLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKnFIUE96aUttUkZtckEzNHFhYVJxVEEuanBlZyIgLz48ZmlnY2FwdGlvbj5SZWR1bmRhbnQgbm9kZXM6IGEgZGVmaW5pdGlvbi48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+QSByZWR1bmRhbnQgbm9kZSBpcyBhbnkgbm9kZSB0aGF0IGlzbuKAmXQgc3RyaWN0bHkgbmVjZXNzYXJ5IGZvciB0aGUgZGlzdHJpYnV0ZWQgc3lzdGVtIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gSW4gb3RoZXIgd29yZHMsIGFueSBub2RlIHRoYXQgYWRkcyB0byB0aGUgYmFyZSBtaW5pbXVtIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHN5c3RlbSBpcyBleHRyYW5lb3VzLCBhbmQgd2UgY2FuIHRoZXJlZm9yZSBzYXkgdGhhdCBpdCBpcyByZWR1bmRhbnQuPC9wPjxwPldlbGwsIHdhaXQgYSBtaW51dGXigIrigJTigIppZiB3ZSB0aGluayBhYm91dCB0aGlzIGEgYml0IG1vcmUgZGVlcGx5IGZvciBhIG1pbnV0ZSwgd2XigJlsbCBwcm9iYWJseSByZWFsaXplIHRoYXQgd2UgZHVwbGljYXRlIGEgbG90IG9mIHN0dWZmIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtISBXZeKAmXZlIHRhbGtlZCBhYm91dCBhZGRpbmcgbm9kZXMgdG8gYSBzeXN0ZW0gcHJldHR5IGxvb3NlbHkgaW4gdGhpcyBzZXJpZXMsIGJ1dCBhbGwgb2YgdGhlIG5vZGVzIHRoYXQgd2UgYWRkIGNhbuKAmXQgYWxsIGJlIDxlbT5uZWNlc3Nhcnk8L2VtPiB0byB0aGUgc3lzdGVtLCByaWdodD8gU28sIHdoeSBkaWQgd2UgZXZlbiBib3RoZXIgYWRkaW5nIHJlZHVuZGFudCBub2Rlcz8gV2h5IHdvdWxkIGFueW9uZTxlbT4gPC9lbT53YW50IHRvIGJlIGV4cGxpY2l0bHkgYW5kIGludGVudGlvbmFsbHkgcmVkdW5kYW50IGluIHRoZWlyIHN5c3RlbT8gV2VsbCwgaW4gb3JkZXIgdG8gcmVhbGx5IGFuc3dlciB0aGF0IHF1ZXN0aW9uLCB3ZSBuZWVkIHRvIG1vdmUgZnJvbSB0aGUgbGFyZ2VyIGNvbmNlcHQgb2YgcmVkdW5kYW5jeSB0byB0aGUgbW9yZSBzcGVjaWZpYyB0b3BpYyBvZiByZXBsaWNhdGlvbjxlbT4uPC9lbT48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpjcm01a3BrU082N3NoNXZVVldhbklRLmpwZWciIC8+PGZpZ2NhcHRpb24+UmVkdW5kYW5jeSB2ZXJzdXMgcmVwbGljYXRpb248L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+V2hpbGUgcmVkdW5kYW5jeSBpcyB3aGF0IGFsbG93cyB1cyB0byBkdXBsaWNhdGUgdGhlIGNvbXBvbmVudHMgb2Ygb3VyIHN5c3RlbSwgdGhlIGR1cGxpY2F0aW9uIGl0c2VsZiBpc27igJl0IHJlYWxseSB3aGF0IGlzwqB1c2VmdWwuPC9wPjxibG9ja3F1b3RlPlJlZHVuZGFuY3kgZG9lc27igJl0IGFjdHVhbGx5IGhlbHAgdXMgaWYgYSByZWR1bmRhbnQgbm9kZSBpcyBvdXQgb2Ygc3luYyB3aXRoIHRoZSBub2RlIHRoYXQgaXQgd2FzIGNvcGllZMKgPGVtPmZyb208L2VtPi48L2Jsb2NrcXVvdGU+PHA+QSByZWR1bmRhbnQgbm9kZSBvbiBpdHMgb3duIGlzbuKAmXQgYWxsIHRoYXQgaGVscGZ1bDsgc3VyZSwgd2UgaGF2ZSBhY2hpZXZlZCByZWR1bmRhbmN5LCBidXQgd2hvIGtub3dzIGhvdyBsb25nIHRoYXQgcmVkdW5kYW50IG5vZGUgd2lsbCBhY3R1YWxseSBiZSBmdW5jdGlvbmFsIGZvciB1cyBpbiBvdXIgc3lzdGVtPyBXaGF0IGhhcHBlbnMgaWYgb25lIG9mIHRoZSBub2RlcyBjaGFuZ2VzIGluIHZhbHVlIG9yIHN0YXRlPyBBcyBpdCB0dXJucyBvdXQsIHRoZSBhbnN3ZXIgdG8gYm90aCBvZiB0aGVzZSBxdWVzdGlvbnMgaXMgcmVwbGljYXRpb24hIFdoZW4gd2UgcmVwbGljYXRlIGEgbm9kZSBpbiBvdXIgc3lzdGVtLCB0aGVzZSBkdXBsaWNhdGUgY29waWVzIGFjdHVhbGx5IGJlY29tZSBtdWNoIG1vcmUgZnVuY3Rpb25hbCBmb3LCoHVzLjwvcD48aDM+RHVwbGljYXRpb24gYW5kIG1haW50YWluaW5nIHN0YXRlPC9oMz48cD5SZXBsaWNhdGlvbiBhcyBhIGNvbmNlcHQgaXMgbXVjaCBvZiBsaWtlIGEgc3Vic2V0IG9mIHJlZHVuZGFuY3kuIEJvdGggb2YgdGhlbSBpbnZvbHZlIGNyZWF0aW5nIHJlZHVuZGFudCBub2RlcyBpbiBhIHN5c3RlbeKAiuKAlOKAim5vZGVzIHRoYXQgYXJlbuKAmXQgc3RyaWN0bHkgbmVjZXNzYXJ5IGZvciB0aGUgc3lzdGVtIHRvIHdvcmsgY29ycmVjdGx5LjwvcD48cD5Ib3dldmVyLCA8c3Ryb25nPjxlbT5yZXBsaWNhdGlvbjwvZW0+PC9zdHJvbmc+IHRha2VzIGEgcmVkdW5kYW50IG5vZGUgb25lIHN0ZXAgZnVydGhlcjsgaXQgZW5zdXJlcyB0aGF0IHRoZSByZWR1bmRhbnQgbm9kZSAoYSA8c3Ryb25nPjxlbT5yZXBsaWNhPC9lbT48L3N0cm9uZz4pIGlzIGlkZW50aWNhbCB0byBhbGwgb2YgaXRzIG90aGVyIGNvcGllcy4gQXQgZmlyc3QgZ2xhbmNlLCB0aGlzIG1pZ2h0IHNlZW0gc2ltcGxlIGFuZCBwZXJoYXBzIGV2ZW4gb2J2aW91czsgd2UgbWlnaHQgZXZlbiBhc3N1bWUgdGhhdCBhIG5vZGUgdGhhdCBoYXMgYmVlbiBjb3BpZWQgZnJvbSBzb21ld2hlcmUgZWxzZSB3aWxsIGJlIGlkZW50aWNhbCB0byB0aGUgdGhpbmcgaXQgd2FzIGNvcGllZCBmcm9tLMKgcmlnaHQ/PC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqcnZvQXhXWEFOOXZYWFBacTNUaXNoQS5qcGVnIiAvPjxmaWdjYXB0aW9uPlJlcGxpY2F0ZWQgbm9kZXM6IGEgZGVmaW5pdGlvbjwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5XZWxsLCBub3QgbmVjZXNzYXJpbHkhIEluIGZhY3QsIGxldOKAmXMgc2F5IHRoYXQgd2UgY29waWVkIGEgbm9kZSBhbmQgY3JlYXRlZCBhIHJlZHVuZGFudCBvbmUuIEJ1dCBsYXRlciBvbiwgd2UgY2hhbmdlIHNvbWV0aGluZyBhYm91dCB0aGUgb3JpZ2luYWwgbm9kZeKAiuKAlOKAinBlcmhhcHMgd2UgY2hhbmdlIGl0cyBzdGF0ZSwgc29tZSB2YWx1ZSB0aGF0IGl0IGNvbnRhaW5zLCBvciBzb21lIGludGVybmFsIGJlaGF2aW9yLiBXaGF0IHdvdWxkIGhhcHBlbiB0byB0aGUgcmVkdW5kYW50IG5vZGU/IFdlbGzigKZub3RoaW5nITwvcD48cD5JZiB3ZSBjcmVhdGVkIGp1c3QgYSBzaW1wbGUgcmVkdW5kYW50IG5vZGUsIHRoZXJlIGlzIG5vdGhpbmcgaW4gcGxhY2Ugd2l0aGluIG91ciBzeXN0ZW0gdGhhdCB3aWxsIGVuc3VyZSB0aGF0IHRoZSByZWR1bmRhbnQgbm9kZSB3aWxsIDEpIGtub3cgdGhhdCBzb21ldGhpbmcgY2hhbmdlZCBhbmQgMikgd2lsbCB1cGRhdGUgaXRzZWxmIG9yIGJlIHVwZGF0ZWQgYnkgc29tZW9uZSBlbHNlIHRvIGhhdmUgdGhlIGNvcnJlY3TCoHN0YXRlLjwvcD48cD5TbyBwZXJoYXBzIHRoaXMgcHJvYmxlbSBpcyBub3QgYXMgb2J2aW91cyBhcyB3ZSBmaXJzdCB0aG91Z2h0ISBSZXBsaWNhdGlvbiBhdHRlbXB0cyB0byBzb2x2ZSB0aGlzIHByb2JsZW0sIGJlY2F1c2UgaXQgZW5zdXJlcyB0aGF0IGFsbCByZXBsaWNhcyBvZiBhIG5vZGUgd2lsbCBiZSBpZGVudGljYWwgdG8gb25lIGFub3RoZXIsIGFuZCB3aWxsIG1hdGNoIHRoZSBvcmlnaW5hbCBub2RlIHRoYXQgdGhleSB3ZXJlIHJlcGxpY2F0ZWQgZnJvbS4gKFNpZGUgbm90ZTogdGhlIHF1ZXN0aW9uIG9mIDxlbT5ob3c8L2VtPiB0byBlbnN1cmUgdGhpcyBpcyBubyBlYXN5IHRhc2ssIGJ1dCB3ZeKAmWxsIGxlYXJuIG1vcmUgYWJvdXQgdGhhdCBsYXRlciBvbiBpbiB0aGXCoHNlcmllc+KApik8L3A+PHA+QW5vdGhlciBpbXBvcnRhbnQgdGhpbmcgdG8gbm90ZSBoZXJlIGlzIHRoYXQgcmVwbGljYXRpb24gY29tZXMgaGFuZCBpbiBoYW5kIHdpdGggPHN0cm9uZz48ZW0+dHJhbnNwYXJlbmN5PC9lbT48L3N0cm9uZz4sIGEgY29uY2VwdCB0aGF0IDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvdHJhbnNwYXJlbmN5LWlsbHVzaW9ucy1vZi1hLXNpbmdsZS1zeXN0ZW0tcGFydC0xLWIwMWMyNWY3ZGRkZCI+d2XigJlyZSBhbHJlYWR5PC9hPiA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL3RyYW5zcGFyZW5jeS1pbGx1c2lvbnMtb2YtYS1zaW5nbGUtc3lzdGVtLXBhcnQtMi0yYjIxYzUwNDc3NzQiPmZhbWlsaWFyIHdpdGg8L2E+LiBXaXRoIGVhY2ggcmVwbGljYSB0aGF0IGlzIGFkZGVkIHRvIGEgc3lzdGVtLCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtIHNob3VsZCBzdGlsbCBmdW5jdGlvbiBjb3JyZWN0bHksIGFuZCBzaG91bGQgaWRlYWxseSBiZSB1bmF3YXJlIG9mIGFueSByZXBsaWNhcyB0aGF0IGhhdmUgYmVlbsKgY3JlYXRlZC48L3A+PGJsb2NrcXVvdGU+SWYgYSByZXBsaWNhIGlzIHVwZGF0ZWQsIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0gc2hvdWxkbuKAmXQga25vdyBhYm91dCBpdCwgYW5kIGlmIGEgbm9kZSBpcyByZXBsaWNhdGVkLCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtIHNob3VsZG7igJl0IHJlYWxsecKgY2FyZS48L2Jsb2NrcXVvdGU+PHA+Rm9yIGV4YW1wbGUsIGlmIGEgd2ViIHNlcnZlciBvciBhIGRhdGFiYXNlIG5vZGUgaXMgcmVwbGljYXRlZCwgdGhlIGVuZCB1c2VycyBvZiB0aGUgZGlzdHJpYnV0ZWQgc3lzdGVtIG91Z2h0IG5vdCB0byBoYXZlIGFueSBpZGVhIHRoYXQgYXJlIGludGVyYWN0aW5nIHdpdGggYSByZXBsaWNhIG9yIHRoZSBvcmlnaW5hbCBub2RlLiAoSW4gZmFjdCB0aGV5IHByb2JhYmx5IHNob3VsZG7igJl0IGhhdmUgYW55IGlkZWEgdGhhdCB0aGVyZSBldmVuIDxlbT5pczwvZW0+IGEgcmVwbGljYXRlZCBub2RlISk8L3A+PHA+V2hlbiB0aGlzIHRyYW5zcGFyZW5jeSBpcyBtb3N0bHkgbWFpbnRhaW5lZCBpbiBhIHN5c3RlbSwgcmVwbGljYXRpb24gcHJvdmlkZXMgdXMgd2l0aCBhIHdob2xlIGxvdCBvZiBiZW5lZml0czo8L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpoS1owMFRLblpMSi1feEZwX19vQnJRLmpwZWciIC8+PGZpZ2NhcHRpb24+U29tZSBiZW5lZml0cyBvZiB1c2luZyByZXBsaWNhdGlvbiBpbiBhIGRpc3RyaWJ1dGVkIHN5c3RlbS48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PG9sPjxsaT5SZXBsaWNhdGlvbiBvZiBub2RlcyBtYWtlcyBvdXIgc3lzdGVtIGlzIG11Y2ggbW9yZSA8c3Ryb25nPjxlbT5yZWxpYWJsZS4gPC9lbT48L3N0cm9uZz5JZiBvbmUgbm9kZSBnb2VzIGRvd24gYW5kIHdlIGhhdmUgYWxyZWFkeSBhZGRlZCByZXBsaWNhcywgaXTigJlzIG11Y2ggbW9yZSBsaWtlbHkgZm9yIGEgcmVwbGljYSB0byBzdGVwIGluIGFuZCBkbyB0aGUgam9iIG9mIHRoZSBmYWlsaW5nIG5vZGUuIFRoaXMgbWFrZXMgb3VyIHN5c3RlbSBtb3JlIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvZmFudGFzdGljLWZhdWx0cy1hbmQtd2hhdC10by1jYWxsLXRoZW0tNTZkOTFhMWIxOThjIj5mYXVsdC10b2xlcmFudDwvYT4uIEhhdmluZyByZXBsaWNhcyBpbiBwbGFjZSBtYWtlcyBvdXIgc3lzdGVtIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvcmVhZHktYW5kLWF2YWlsYWJsZS1kaXN0cmlidXRlZC1zeXN0ZW1zLTE2MTAyM2FjYTM3OCI+bW9yZSBhdmFpbGFibGU8L2E+IGFzIHdlbGwsIHNpbmNlIG92ZXJhbGwgdGhlcmUgYXJlIG1vcmUgYmFja3VwIHJlcGxpY2FzIHRvIHN0ZXAgaW4gdG8gdGFrZSBhbm90aGVyIG5vZGXigJlzIHBsYWNlLCB3aGljaCBtZWFucyB0aGF0IG91ciBzeXN0ZW0gc2hvdWxkbuKAmXQgZXhwZXJpZW5jZSB0b28gbXVjaCBkb3dudGltZS48L2xpPjxsaT5SZXBsaWNhdGlvbiBvZiBub2RlcyBhbHNvIG1ha2VzIG91ciBzeXN0ZW0gbW9yZSA8c3Ryb25nPjxlbT5wZXJmb3JtYW50PC9lbT48L3N0cm9uZz4uIFdpdGggbW9yZSByZXBsaWNhcyBpbiBwbGFjZSwgd2Ugbm93IGhhdmUgdGhlIGFiaWxpdHkgdG8gZG8gbW9yZSB3b3JrLCBzZXJ2ZSBtb3JlIHJlcXVlc3RzLCBhbmQgcHJvY2VzcyBtb3JlIGRhdGEuIFRoaXMgbWFrZXMgb3VyIHN5c3RlbSBqdXN0IGdlbmVyYWxseSBmYXN0ZXIsIHJlZHVjZXMgbGF0ZW5jeSwgYW5kIGFsbG93cyB0aGUgc3lzdGVtIHRvIGhhbmRsZSBhIGhpZ2ggdGhyb3VnaHB1dCBvZiBkYXRhIHRoYXQgaGFzIHRvIGJlIHByb2Nlc3NlZC9kZWxpdmVyZWQuPC9saT48bGk+UmVwbGljYXRpb24gb2Ygbm9kZXMgbWFrZXMgb3VyIHN5c3RlbSBtdWNoIDxzdHJvbmc+PGVtPmVhc2llciB0byBzY2FsZTwvZW0+PC9zdHJvbmc+LiBTY2FsYWJpbGl0eSBpcyA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL3NjYWxhYmlsaXR5LWdyb3dpbmctYS1zeXN0ZW0taW4tZGlmZmVyZW50LWRpcmVjdGlvbnMtYWUxNjQ2OWM0Y2IzIj5hIGJpZyBwbHVzIHBvaW50PC9hPiB3aGVuIGl0IGNvbWVzIHRvIGJ1aWxkaW5nIGEgZGlzdHJpYnV0ZWQgc3lzdGVtLCBidXQgaXTigJlzIG5vdCBhbHdheXMgZWFzeSB0byBhY2hpZXZlLiBXaXRoIG1vcmUgcmVwbGljYXRlZCBub2RlcywgaXTigJlzIGlzIGVhc2llciB0byBzY2FsZSBhIHN5c3RlbSBieSBhZGRpbmcgbW9yZSBkYXRhYmFzZXMsIHNlcnZlcnMsIG9yIHNlcnZpY2VzIGFzIHJlcXVpcmVkIGJ5IHRoZSBkZW1hbmRzIG9uIHRoZSBzeXN0ZW0uIEl04oCZcyBhbHNvIGVhc2llciB0byBnZW9ncmFwaGljYWxseSBzY2FsZSBhIHN5c3RlbSB3aGVuIHdlIGNhbiByZXBsaWNhdGUgYSBub2RlIGFuZCBwbGFjZSBpdCBpbiBhIGRpZmZlcmVudCBjb250aW5lbnQgb3IgY291bnRyeSB0byBoZWxwIHNjYWxlIGEgaGlnaCB3b3JrbG9hZCBpbiBhIHNwZWNpZmljIGxvY2F0aW9uLjwvbGk+PC9vbD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKk1pSVFia3QzcUU2Y2pWcHZjMlA3TUEuanBlZyIgLz48ZmlnY2FwdGlvbj5SZWxpYWJpbGl0eSwgcGVyZm9ybWFuY2UsIGFuZCBzY2FsYWJpbGl0eSB0aHJvdWdoIHJlcGxpY2F0aW9uPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPkJ5IHRoaXMgcG9pbnQsIGhvcGVmdWxseSB3ZeKAmXJlIGFsbCBvbiBib2FyZCB3aXRoIHRoZSBpZGVhIG9mIHJlcGxpY2F0aW9uIChyaWdodD8pLiBJdOKAmXMgcHJldHR5IGNvb2wgYW5kIG5lYXJseSBldmVyeSBkaXN0cmlidXRlZCBzeXN0ZW0gd2lsbCB0YWtlIGFkdmFudGFnZSBhbmQgbGV2ZXJhZ2UgdGhpcyBjb25jZXB0IHRvIGhlbHAgZGVhbCB3aXRoIGlzc3VlcyBvZiByZWxpYWJpbGl0eSwgcGVyZm9ybWFuY2UsIGFuZCBmYXVsdC10b2xlcmFuY2UuIFdoZXRoZXIgaW4gdGhlIGZvcm0gb2Ygd29ya2Vycywgc2VydmVycywgZGF0YWJhc2VzLCBvciBzZXJ2aWNlcywgd2XigJl2ZSBwcm9iYWJseSBlYWNoIHdvcmtlZCB3aXRoIHJlcGxpY2FzIGluIG91ciBkYWlseSBsaXZlcyBhcyBkZXZlbG9wZXJzISBTb3VuZHMgZ3JlYXQswqByaWdodD88L3A+PHA+V2VsbCwgYWxtb3N0LiBUaGUgc3RvcnkgZG9lc27igJl0IHF1aXRlIGVuZCBoZXJlLiBSZXBsaWNhdGlvbiBpcyBhd2Vzb21lLCBidXQgaXQgcHJlc2VudHMgc29tZSB1bmlxdWUgY2hhbGxlbmdlcyB1bnRvIGl0c2VsZi4gSSBjYW7igJl0IHByb21pc2UgYW55IHNvbHV0aW9ucyBpbiB0aGlzIHBvc3QgKGRvbuKAmXQgd29ycnksIHdl4oCZbGwgdGFsayBhIGxvdCBtb3JlIGFib3V0IHRoaXMgYXMgdGhlIHNlcmllcyBnb2VzIG9uKSwgYnV0IGF0IHRoZSB2ZXJ5IGxlYXN0LCBJ4oCZbGwgcHJlc2VudCB5b3Ugd2l0aCBzb21lIG9mIHRoZSBwcm9ibGVtcy4g8J+YiTwvcD48aDM+Q29uc2lzdGVudCBoZWFkYWNoZXM8L2gzPjxwPkluIGFkZGl0aW9uIHRvIHRyYW5zcGFyZW5jeSwgdGhlIGNvbmNlcHQgb2YgcmVwbGljYXRpb24gbmVlZHMgb25lIG90aGVyIHRoaW5nIHRvIHJlYWxseSB3b3JrIHdlbGw6IDxzdHJvbmc+PGVtPmNvbnNpc3RlbmN5PC9lbT48L3N0cm9uZz4uIEluIG9yZGVyIGZvciBhIHJlcGxpY2EgdG8gYWN0dWFsbHkgYmUgdXAtdG8tZGF0ZSB3aXRoIGFsbCB0aGUgb3RoZXIgcmVwbGljYXMgaW4gdGhlIHN5c3RlbSwgaXQgbmVlZHMgdG8gYmUgY29uc2lzdGVudCB3aXRoIHRoZSBvdGhlciBjb3BpZXMuIEFuZCB0aGlzIGlzIG5vdCBhIHRyaXZpYWzCoHRhc2shPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqeXZiV05aUHBWV2hZOEZ1VllzVVBfdy5qcGVnIiAvPjxmaWdjYXB0aW9uPldoYXQgbWFrZXMgcmVwbGljYXRpb24gaGFyZD88L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+Tm93IHBlcmhhcHMsIGF0IGZpcnN0IGdsYW5jZSwgdGhpcyBkb2VzbuKAmXQgc2VlbSB0b28gZGlmZmljdWx0LiBNYXliZSB3ZSBjb3VsZCBhbHdheXMgaGF2ZSB0aGUgcmVwbGljYXMgZ2V0IHVwZGF0ZXMgZnJvbSB0aGUgb3JpZ2luYWwgY29weT8gT3IgbWF5YmUgdGhlIG9yaWdpbmFsIGNvcHkgY2FuIHRlbGwgdGhlIHJlcGxpY2FzIHdoZW5ldmVyIHNvbWV0aGluZyBlbHNlIGNoYW5nZXM/IEhvd2V2ZXIsIHRoaXMgaXMgdHJpY2tlciB0aGFuIGl0wqBzb3VuZHMuPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqdnFFWEV3LXdkdTljVWNOT3dPSmp5QS5qcGVnIiAvPjxmaWdjYXB0aW9uPkl04oCZcyBhIHN0cnVnZ2xlIHRvIG1haW50YWluIGNvbnNpc3RlbmN5IGFzIHJlcGxpY2FzIGNoYW5nZcKgc3RhdGUhPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPldlIGxlYXJuZWQgZWFybGllciB0aGF0IGEgc3lzdGVtIG11c3QgYWxzbyBiZSB0cmFuc3BhcmVudCBmb3IgcmVwbGljYXRpb24gdG8gd29yay4gPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy90cmFuc3BhcmVuY3ktaWxsdXNpb25zLW9mLWEtc2luZ2xlLXN5c3RlbS1wYXJ0LTEtYjAxYzI1ZjdkZGRkIj5UcmFuc3BhcmVuY3k8L2E+IGluIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvdHJhbnNwYXJlbmN5LWlsbHVzaW9ucy1vZi1hLXNpbmdsZS1zeXN0ZW0tcGFydC0yLTJiMjFjNTA0Nzc3NCI+YSBzeXN0ZW08L2E+IG1lYW5zIHRoYXQgYWxsIHRoZSByZXBsaWNhcyBhbmQgdGhlIG9yaWdpbmFsIG5vZGUgbXVzdCBiZWhhdmUgc2ltaWxhcmx5LCB3aGljaCBtZWFucyB0aGF0IGEgY29uc3VtZXIgb2YgdGhlIHN5c3RlbSAobGlrZSBhbiBlbmQgdXNlciBvciBhbm90aGVyIG5vZGUpIGNvdWxkIHBvdGVudGlhbGx5IHdyaXRlIHRvIG9uZSByZXBsaWNhLCB3aGlsZSBhbm90aGVyIGNvbnN1bWVyIG9mIHRoZSBzeXN0ZW0gY291bGQgcmVhZCBmcm9tIDxlbT5hbm90aGVywqA8L2VtPnJlcGxpY2EhPC9wPjxwPlNvLCB3ZSBjYW7igJl0IHJlbHkgb24ganVzdCB0aGUgb3JpZ2luYWwgbm9kZSBhbnltb3JlIGFzIG91ciBzaW5nbGUgc291cmNlIG9mIHRydXRoIHdoZW4gaXQgY29tZXMgdG8gdGhlIHN0YXRlIG9mIG91ciBub2RlKHMpLiBUaGUgcXVlc3Rpb24gaGVyZSBpcywgb2YgY291cnNlLCBob3cgZG8gd2UgdGVsbCB0aGVzZSB0d28gcmVwbGljYXMgd2hhdCBqdXN0IGhhcHBlbmVkPyBUaGUgcmVwbGljYSB0aGF0IGlzIGJlaW5nIHJlYWQtZnJvbSBuZWVkcyB0byBrbm93IGFib3V0IHRoZSBsYXRlc3Qgd3JpdGU7IHNpbWlsYXJseSwgdGhlIHJlcGxpY2EgdGhhdCBpcyBiZWluZyB3cml0dGVuLXRvIG5lZWRzIHRvIGRpc3BlcnNlIGluZm9ybWF0aW9uIGFib3V0IHRoYXTCoHdyaXRlLjwvcD48cD5UaGlzIGlzIGV4YWN0bHkgd2hhdCBtYWtlcyByZXBsaWNhdGlvbiBzbyBoYXJkOyB3ZSBoYXZlIHRvIGNvbnRlbmQgd2l0aCBjb25zaXN0ZW5jeSBhbmQgZmlndXJlIG91dCBhIG1vZGVsIGZvciBob3cgdG8gZW5zdXJlIHRoYXQgYWxsIG9mIG91ciByZXBsaWNhcy4gVGhhbmtmdWxseSwgd2XigJlsbCBjb3ZlciB0aGF0IGluIG11Y2ggbW9yZSBkZXRhaWwgbGF0ZXIuIEZvciBub3csIHdlIGp1c3QgbmVlZCB0byBrbm93IHRoYXQgaXTigJlzIGEgcHJvYmxlbSB0aGF0IHdl4oCZbGwgaGF2ZSB0byBkZWFsIHdpdGggc29vbi4gc1VudGlsIHRoZW4sIGZlZWwgZnJlZSB0byByZXBsaWNhdGUgeW91ciBsaXR0bGUgaGVhcnRzwqBhd2F5ITwvcD48aDM+UmVzb3VyY2VzPC9oMz48cD5VbmRlcnN0YW5kaW5nIHJlcGxpY2F0aW9uIGFuZCByZWR1bmRhbmN5IGlzIGEga2V5IHN0ZXAgdG8gd3JhcHBpbmcgb3VyIGhlYWRzIGFyb3VuZCBob3cgYSBkaXN0cmlidXRlZCBzeXN0ZW0gZ3Jvd3MuIFRoZSB0b3BpY3MgaW4gdGhpcyBzZXJpZXMgd2lsbCBjb250aW51ZSB0byBidWlsZCBvbiB0aGUgaWRlYSBvZiByZXBsaWNhdGlvbiwgc28gaXTigJlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIGl0IGZ1bGx5LiBJZiB5b3XigJlyZSBsb29raW5nIGZvciBmdXJ0aGVyIHJlc291cmNlcywgdGhlIG9uZXMgbGlzdGVkIGJlbG93IGFyZSBzb21lIGdyZWF0IHBsYWNlcyB0byBzdGFydCAob3IgY29udGludWUgbGVhcm5pbmchKS48L3A+PG9sPjxsaT48YSBocmVmPSJodHRwczovL3BkZnMuc2VtYW50aWNzY2hvbGFyLm9yZy84N2RjLzhlODM5YWYwNjMzYjlmMjk2OGE2NjljNWFmNzA0NTNjZmUwYi5wZGYiPlJlZHVuZGFuY3kgYW5kIFJlcGxpY2F0aW9uOiBGYXVsdCBUb2xlcmFuY2Ugb24gdGhlIFN5c3RlbSBMZXZlbDwvYT4sIEt1cnQgS2FuemVuYmFjaDwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3c4LmNzLnVtdS5zZS9rdXJzZXIvNURWMTQ3L0hUMTUvbGVjdHVyZXMvbDgtaGFuZG91dHMucGRmIj5EaXN0cmlidXRlZCBTeXN0ZW1zOiBSZXBsaWNhdGlvbjwvYT4sIFVtZcOlIFVuaXZlcnNpdHk8L2xpPjxsaT48YSBocmVmPSJodHRwczovL3d3dy51aW8ubm8vc3R1ZGllci9lbW5lci9tYXRuYXQvaWZpL0lORjUwNDAvaDE2L3BlbnN1bWxpc3RlL3JlcGxpY2F0aW9uLnBkZiI+UmVwbGljYXRpb24gaW4gRGlzdHJpYnV0ZWQgU3lzdGVtczwvYT4sIFJvbWFuIFZpdGVuYmVyZzwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmNzLmhlbHNpbmtpLmZpL3dlYmZtX3NlbmQvMTI1NiI+RGlzdHJpYnV0ZWQgU3lzdGVtczogUmVwbGljYXRpb24gYW5kIENvbnNpc3RlbmN5PC9hPiwgSnVzc2kgS2FuZ2FzaGFyanU8L2xpPjxsaT48YSBocmVmPSJodHRwOi8vY3Npcy5wYWNlLmVkdS9+bWFyY2hlc2UvQ1M4NjUvUGFwZXJzL3dpZXNtYW5uV1BTKzAwLnBkZiI+VW5kZXJzdGFuZGluZyBSZXBsaWNhdGlvbiBpbiBEYXRhYmFzZXMgYW5kIERpc3RyaWJ1dGVkIFN5c3RlbXM8L2E+LCBTY2hpcGVyICZhbXA7wqBBbG9uc288L2xpPjwvb2w+PGltZyBzcmM9Imh0dHBzOi8vbWVkaXVtLmNvbS9fL3N0YXQ/ZXZlbnQ9cG9zdC5jbGllbnRWaWV3ZWQmcmVmZXJyZXJTb3VyY2U9ZnVsbF9yc3MmcG9zdElkPTdhYjQzMjJkNzM3OCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgYWx0PSIiPjxocj48cD48YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL3JlZHVuZGFuY3ktYW5kLXJlcGxpY2F0aW9uLWR1cGxpY2F0aW5nLWluLWEtZGlzdHJpYnV0ZWQtc3lzdGVtLTdhYjQzMjJkNzM3OCI+UmVkdW5kYW5jeSBhbmQgUmVwbGljYXRpb246IER1cGxpY2F0aW5nIGluIGEgRGlzdHJpYnV0ZWQgU3lzdGVtPC9hPiB3YXMgb3JpZ2luYWxseSBwdWJsaXNoZWQgaW4gPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2VkcyI+YmFzZWRzPC9hPiBvbiBNZWRpdW0sIHdoZXJlIHBlb3BsZSBhcmUgY29udGludWluZyB0aGUgY29udmVyc2F0aW9uIGJ5IGhpZ2hsaWdodGluZyBhbmQgcmVzcG9uZGluZyB0byB0aGlzIHN0b3J5LjwvcD5dXT48L2NvbnRlbnQ6ZW5jb2RlZD4KICAgICAgICA8L2l0ZW0+CiAgICAgICAgPGl0ZW0+CiAgICAgICAgICAgIDx0aXRsZT48IVtDREFUQVtGb3JhZ2luZyBmb3IgdGhlIEZhbGxhY2llcyBvZiBEaXN0cmlidXRlZCBDb21wdXRpbmcgKFBhcnQgMildXT48L3RpdGxlPgogICAgICAgICAgICA8bGluaz5odHRwczovL21lZGl1bS5jb20vYmFzZWRzL2ZvcmFnaW5nLWZvci10aGUtZmFsbGFjaWVzLW9mLWRpc3RyaWJ1dGVkLWNvbXB1dGluZy1wYXJ0LTItYjhmZjI5YmVlZDU2P3NvdXJjZT1yc3MtOGY1NTk5M2M5NzNlLS0tLS0tMjwvbGluaz4KICAgICAgICAgICAgPGd1aWQgaXNQZXJtYUxpbms9ImZhbHNlIj5odHRwczovL21lZGl1bS5jb20vcC9iOGZmMjliZWVkNTY8L2d1aWQ+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtjb2RlXV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW3NvZnR3YXJlLWRldmVsb3BtZW50XV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW2NvbXB1dGVyLXNjaWVuY2VdXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbcHJvZ3JhbW1pbmddXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbZGlzdHJpYnV0ZWQtc3lzdGVtc11dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxkYzpjcmVhdG9yPjwhW0NEQVRBW1ZhaWRlaGkgSm9zaGldXT48L2RjOmNyZWF0b3I+CiAgICAgICAgICAgIDxwdWJEYXRlPldlZCwgMDcgQXVnIDIwMTkgMTI6MTY6MDEgR01UPC9wdWJEYXRlPgogICAgICAgICAgICA8YXRvbTp1cGRhdGVkPjIwMTktMDgtMDdUMTI6MTY6MDEuOTAwWjwvYXRvbTp1cGRhdGVkPgogICAgICAgICAgICA8Y29udGVudDplbmNvZGVkPjwhW0NEQVRBWzxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqZDJ3YnBMQ1hnWFFSZnNOTHJ1cTVfQS5qcGVnIiAvPjxmaWdjYXB0aW9uPkZvcmFnaW5nIGZvciBFVkVOIE1PUkUgZmFsbGFjaWVzIG9mIGRpc3RyaWJ1dGVkIGNvbXB1dGluZyE8L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+U28gbXVjaCBvZiB3aGF0IG1ha2VzIGRpc3RyaWJ1dGVkIHN5c3RlbXMgaGFyZCB0byBjb250ZW50IHdpdGggaXMgdGhlIGZhY3QgdGhhdCwgYXMgYSBzeXN0ZW0gZ3Jvd3MsIGl0IGNoYW5nZXMuIEZ1cnRoZXJtb3JlLCB0aGUgdGhpbmdzIGFyb3VuZCB0aGUgc3lzdGVt4oCK4oCU4oCKcGFydHMgb2YgdGhlIHN5c3RlbSBpdHNlbGYsIGl0cyBkZXBlbmRlbmNpZXMsIGFuZCB0aGUgcGVvcGxlIHdobyBtYWludGFpbiBpdOKAiuKAlOKAimFyZSBhbHNvIGVhY2ggY2FwYWJsZSBvZiBjaGFuZ2luZyBhc8Kgd2VsbC48L3A+PHA+SW4gcGFydCBvbmUgb2YgdGhpcyBzZXJpZXMsIHdlIGxvb2tlZCBpbnRvIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvZm9yYWdpbmctZm9yLXRoZS1mYWxsYWNpZXMtb2YtZGlzdHJpYnV0ZWQtY29tcHV0aW5nLXBhcnQtMS0xYjM1YzNiODViNTMiPnRoZSBmaXJzdCBmb3VyPC9hPiBvZiB0aGUgZmFtb3VzIGVpZ2h0IGZhbGxhY2llcyBvZiBkaXN0cmlidXRlZCBjb21wdXRpbmcuIENvbnZlbmllbnRseSwgdGhvc2UgZm91ciBmYWxsYWNpZXMgYWxsIGNlbnRlcmVkIGFyb3VuZCB0aGUgbmV0d29yaywgYW5kIHRoZSBtaXNjb25jZXB0aW9ucyBhbmQgZmFsc2Vob29kcyB0aGF0IG1hbnkgZGV2ZWxvcGVycyBjYW4gZmFsbCBwcmV5IHRvIHdoZW4gdGhleSBhcmUgZGVhbGluZyB3aXRoIGEgZGlzdHJpYnV0ZWQgc3lzdGVtLiBCdXQgaW4gcGFydCB0d28gb2YgdGhpcyBzZXJpZXMsIHdl4oCZcmUgZ29pbmcgdG8gem9vbSBvdXQgYSBiaXQgYW5kIGxvb2sgYXQgdGhlIHJlbWFpbmluZyBmb3VyIGZhbGxhY2llcywgd2hpY2ggZmVlbCBmYXIgbW9yZSBhYnN0cmFjdCBpbiBuYXR1cmUsIGluIG15wqBvcGluaW9uLjwvcD48cD5XaGF04oCZcyBpbnRlcmVzdGluZyB0byBtZSBhYm91dCB0aGUgc2Vjb25kIGhhbGYgb2YgdGhlIGZhbGxhY2llcyBpcyB0aGUgZmFjdCB0aGF0IHRoZXkgYWxtb3N0IHNlZW0gb2J2aW91cyB0byB1cyBhdCBmaXJzdCBnbGFuY2UuIFlvdSBtYXkgZXZlbiByZWFkIHRoZW0gYW5kIHRoaW5rIHRvIHlvdXJzZWxmLCA8ZW0+4oCcaG93IGNvdWxkIGFueW9uZSBldmVyIGFzc3VtZSB0aGlzIGZhbGxhY3kgdG8gYmUgdHJ1ZT/igJ0uPC9lbT4gQnV0IGFzIHdl4oCZbGwgc29vbiBzZWUgYXMgd2UgZGlnIGludG8gZWFjaCBvZiB0aGVtLCB0aGVyZeKAmXMgbW9yZSB0byBlYWNoIGZhbGxhY3kgdGhhbiBtZWV0cyB0aGUgZXllLiBBbmQga2VlcGluZyB0aGVzZSBiaWctcGljdHVyZSB0cnV0aHMgaW4gY2hlY2sgYXMgd2UgZGVzaWduIGEgc2ltcGxlIHN5c3RlbSBvciBhIGNvbXBsZXggb25lIGlzIGhhcmRlciB0byBkbyB0aGFuIHdlIG1pZ2h0IHRoaW5rLiBTbyBsZXTigJlzIGRpdmUgcmlnaHQgaW4gYW5kIGZpbmlzaCB1cCBvdXIgZm9yYWdpbmcgZm9yIGZhbGxhY2llcyE8L3A+PGg0PlJlYXJyYW5naW5nIHRoZcKgbmV0d29yazwvaDQ+PHA+QXMgd2UgYWxyZWFkeSBrbm93LCBub2RlcyBpbiBhIGRpc3RyaWJ1dGVkIHN5c3RlbSBtdXN0IGNvbW11bmljYXRlIHZpYSBtZXNzYWdlcywgd2hpY2ggYXJlIHNlbnQgdGhyb3VnaCBhIG5ldHdvcmsuIEhvd2V2ZXIsIHRoYXQgbmV0d29yayBpcyBhIGNoYW5naW5nLCBmbHVjdHVhdGluZyBlbnRpdHkuIElmIGEgbm9kZSBpcyBhZGRlZCB0byBuZXR3b3JrLCBpdCBpbmhlcmVudGx5IHdpbGwgbG9vayBhIGxpdHRsZSBkaWZmZXJlbnQsIHJpZ2h0PyBXZSBoYXZlIGEgbmV3IGNoYXJhY3RlciBvbiB0aGUgc3RhZ2UsIGFuZCB0aGUgd2F5IHRoYXQgdGhlIG5ldHdvcmsgbG9va3Mgb3IgaG93IGl0IGlzIGFycmFuZ2VkIGRpZmZlcnMgZGVwZW5kaW5nIG9uIHdoaWNoIG5vZGVzIGFyZSBpbnZvbHZlZC48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpnZE9BRXdyYlhhOUgxWWo2YS1JQnJ3LmpwZWciIC8+PGZpZ2NhcHRpb24+VG9wb2xvZ3k6IGEgZGVmaW5pdGlvbiBvZiB3aGF0IGl0IG1lYW5zIGluIGHCoG5ldHdvcmsuPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPkFzIGl0IHR1cm5zIG91dCwgdGhlcmXigJlzIGEgdGVybSBmb3IgdGhpcyBjb25jZXB0LCBhbmQgaXTigJlzIGhpZ2ggdGltZSB0aGF0IHdlIGZhbWlsaWFyaXplZCBvdXJzZWx2ZXMgd2l0aCBpdDogPHN0cm9uZz48ZW0+dG9wb2xvZ3k8L2VtPjwvc3Ryb25nPi4gQSBuZXR3b3Jr4oCZcyB0b3BvbG9neSBpcyB0aGUgd2F5IHRoYXQgdGhlIGVsZW1lbnRzIGluIHRoZSBuZXR3b3JrIGFyZSBsYWlkIG91dCBvciBhcnJhbmdlZC48L3A+PGJsb2NrcXVvdGU+VG9wb2xvZ3kgaWxsdXN0cmF0ZXMgdGhlIHdheSB0aGF0IHRoZSBub2RlcyBpbiBvdXIgZGlzdHJpYnV0ZWQgc3lzdGVtIHJlbGF0ZSBvciBjb25uZWN0IHRvIG9uZSBhbm90aGVyLCBhbmQgbW9yZSBpbXBvcnRhbnRseSwgaG93IHRoZXkgY29tbXVuaWNhdGUgd2l0aCBvbmXCoGFub3RoZXIuPC9ibG9ja3F1b3RlPjxwPkZvciBleGFtcGxlLCB3ZSBjb3VsZCBoYXZlIGEgc2V0IG9mIG5vZGVzIGluIGEgbmV0d29yayB0aGF0IGFyZSBjb25uZWN0ZWQgYW5kIGNvbW11bmljYXRlIHdpdGggb25lIGFub3RoZXIgaW4gYSByaW5nIHNoYXBlLCBvciB3ZSBjb3VsZCBoYXZlIGFsbCB0aGUgbm9kZXMgY29ubmVjdGVkIGluIGEgbGluZS4gT3IsIGxpa2UgaW4gdGhlIGV4YW1wbGUgYWJvdmUsIHRoZSBub2RlcyBjb3VsZCBiZSBjb25uZWN0ZWQgaW4gc3RhciBzaGFwZSwgb3IgcGVyaGFwcyB0aGV5IGNvdWxkIGJlIGFycmFuZ2VkIGluIGEgdHJlZSBzaGFwZS4gQWxsIG9mIHRoZXNlIGRpZmZlcmVudCBleGFtcGxlcyBhcmUgdmFsaWQgd2F5cyB0byBsYXkgb3V0IHRoZSBub2RlcyBpbiBhIG5ldHdvcmssIGFuZCBlYWNoIG9mIHRoZW0gYXJlIGRpZmZlcmVudCB0b3BvbG9naWVzLjwvcD48cD5VbmRlcnN0YW5kaW5nIHRoZSBjb25jZXB0IG9mIGEgdG9wb2xvZ3kgaXMgZXNzZW50aWFsIHRvIHVzIGdyYXBwbGluZyB3aXRoIGZhbGxhY3kgZml2ZTogPHN0cm9uZz5Ub3BvbG9neSBkb2VzbuKAmXQgY2hhbmdlLjwvc3Ryb25nPiBSZW1lbWJlciB0aGF0IHRoaXMgaXMgYSA8ZW0+ZmFsbGFjeTwvZW0+LCB3aGljaCBtZWFucyB0aGF0IGl0IGlzIGEgbWlzY29uY2VwdGlvbjsgaW4gb3RoZXIgd29yZHMsIHRoaXMgc3RhdGVtZW50IGlzIHVudHJ1ZSwgYW5kIHRoZSB0b3BvbG9neSBvZiBhIG5ldHdvcmsgPGVtPmRvZXM8L2VtPiwgaW4gZmFjdCzCoGNoYW5nZS48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpXSnVUeTF6Nlkydl84eEE2b0ZHUXhRLmpwZWciIC8+PGZpZ2NhcHRpb24+RmFsbGFjeSAjNTogVG9wb2xvZ3kgZG9lc27igJl0IGNoYW5nZXMgKGl0wqBkb2VzISk8L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+QXQgdGhlIHN1cmZhY2UsIHRoaXMgc3RhdGVtZW50IG1pZ2h0IHNlZW0gb2J2aW91czsgYW55IHRpbWUgdGhhdCB3ZSBhZGQsIHJlcGxhY2UsIG9yIHJlbW92ZSBhIG5vZGUgZnJvbSBvdXIgbmV0d29yaywgdGhlIHdheSB0aGF0IHRoZSBlbGVtZW50cyAobm9kZXMpIG9mIHRoYXQgbmV0d29yayBhcmUgYXJyYW5nZWQgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byBvbmUgYW5vdGhlciBpcyBpbnZhcmlhYmx5IGdvaW5nIHRvIGhhdmUgdG8gYmUgZmxleGlibGUgYW5kIG1vdmUgYXJvdW5kIHRvIGJlIGFibGUgdG8gaGFuZGxlIHRoZXNlIGNoYW5nZXMuIEdpdmVuIHdoYXQgd2Uga25vdyBhYm91dCBob3cgbm9kZXMgY2FuIGJlIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvZmFudGFzdGljLWZhdWx0cy1hbmQtd2hhdC10by1jYWxsLXRoZW0tNTZkOTFhMWIxOThjIj5mbGF3ZWQ8L2E+IGFuZCBob3cgdGhleSA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL21vZGVzLW9mLWZhaWx1cmUtcGFydC0xLTY2ODc1MDRiZmVkNiI+d2lsbDwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9tb2Rlcy1vZi1mYWlsdXJlLXBhcnQtMi00ZDA1MDc5NGJlMmYiPmZhaWw8L2E+LCB3ZSBhbHNvIGNhbiBiZSBzdXJlIHRoYXQgdGhlIGZyZXF1ZW5jeSB3aXRoIHdoaWNoIGEgbmV3IG5vZGUgbWlnaHQgYmUgYWRkZWQgb3IgYW4gb2xkIG5vZGUgbWlnaHQgYmUgcmVtb3ZlZCBvciByZXBsYWNlZCBpcyBnb2luZyB0byBiZSBmYWlybHkgY29uc2lzdGVudCBhbmQgaGlnaC4gSW4gb3RoZXIgd29yZHMsIHRoZSBuZXR3b3Jr4oCZcyB0b3BvbG9neSBpcyBhbHdheXMgZ29pbmcgdG8gYmUgaW4gZmx1eCBhbmTCoGZsdWlkITwvcD48cD5TbyB3aHkgaXMgdGhpcyBvdGhlcndpc2Ugb2J2aW91cyBmYWxsYWN5IHNvbWV0aGluZyB3b3J0aCBub3RpbmcgaGVyZT8gV2VsbCwgd2hhdCBtYWtlcyB0aGlzIGZhbGxhY3kgdHJpY2tlciB0aGFuIGl0IHNlZW1zIGlzIHRoZSBmYWN0IHRoYXQgbW9zdCBvZiB1cyBqdXN0IGRvbuKAmXQgdGhpbmsgYWJvdXQgdGhlIG9idmlvdXNuZXNzIG9mIGl0IG9uIGEgZGF5LXRvLWRheSBiYXNpcy4gV2Ugb2Z0ZW4gZGVwZW5kIG9uIHRoZSBuZXR3b3JrIGJlaGF2aW5nIGEgY2VydGFpbiB3YXkgYW5kIGRvaW5nIGNlcnRhaW4gdGhpbmdzLiBTb21ldGltZXMsIHdlIGV4cGxpY2l0bHkgZGVwZW5kIG9uIHRoZSB0b3BvbG9neSBvZiB0aGUgbmV0d29yayBiZWluZyBhcnJhbmdlZCBpbiBhIGNlcnRhaW4gd2F5LiBGb3IgZXhhbXBsZSwgaWYgb3VyIHN5c3RlbSBzZW50IG1lc3NhZ2VzIGV2ZXJ5IDMwIHNlY29uZHMgdG8gYSBub2RlIGluIHRoZSBzeXN0ZW0sIGFuZCBleHBlY3RzIHRoYXQgbm9kZSB0byBleGlzdCBhdCBhIGNlcnRhaW4gbG9jYXRpb24gaW4gdGhlIG5ldHdvcmssIHdoYXQgaGFwcGVucyBpZiB0aGF0IG5vZGUgZGlzYXBwZWFycz8gT3Igd2hhdCBpZiBpdMKgbW92ZXM/PC9wPjxwPklmIHdlIGRlcGVuZCBvbiBvdXIgbmV0d29yayBhbHdheXMg4oCcbG9va2luZ+KAnSBhIGNlcnRhaW4gd2F5LCBhbmQgaWYgd2UgZXhwZWN0IGZvciBpdHMgbm9kZXMgdG8gYWx3YXlzIGJlIDxlbT5hcnJhbmdlZDwvZW0+IGEgY2VydGFpbiB3YXksIHdlIGZhbGwgaW50byB0aGUgdHJhcCBvZiB0aGlzIGZhbGxhY3kuIEFuZCB0aGlzIGNhbiBiZSBhbiBlYXN5IGFzc3VtcHRpb24gdG8gbWFrZSwgZXNwZWNpYWxseSBpZiB3ZSBkb27igJl0IHRha2UgdGhpcyBmYWxsYWN5IGludG8gdG8gYWNjb3VudCBpbiBvdXIgZGFpbHkgaW50ZXJhY3Rpb25zIGFzIGRlc2lnbmVycyBhbmQgbWFpbnRhaW5lcnMgb2YgYSBkaXN0cmlidXRlZCBzeXN0ZW0hIFNvLCBpdOKAmXMgdXAgdG8gdXMgdG8gY29uc2lkZXIgdGhlIHdheXMgdGhhdCB3ZSBtaWdodCBiZSByZWx5aW5n4oCK4oCU4oCKZXZlbiBpZiBpbmFkdmVydGVudGx54oCK4oCU4oCKb24gdGhlIHRvcG9sb2d5IG9mIG91ciBzeXN0ZW3igJlzwqBuZXR3b3JrLjwvcD48aDQ+U3lzdGVtIG1hbmFnZW1lbnQgcmVhbGl0aWVzPC9oND48cD5Bc3N1bXB0aW9ucyBhcmUgdmVyeSBlYXN5IHRoaW5ncyB0byBtYWtl4oCK4oCU4oCKd2UgbWFrZSB0aGVtIGFsbCB0aGUgdGltZSEgTm90IG9ubHkgY2FuIHdlIG1ha2UgYmFkIGFzc3VtcHRpb25zIGFib3V0IG91ciBzeXN0ZW0gYW5kIHdoYXQgaXQgbG9va3MgbGlrZSBhbmQgaG93IGl0IHdpbGwgYmVoYXZlIGluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcywgYnV0IHdlIGNhbiBhbHNvIG1ha2UgYmFkIGFzc3VtcHRpb25zIGFib3V0IHdobyB3aWxsIGJlIG1haW50YWluaW5nIGFuZCBkZWFsaW5nIHdpdGggdGhhdCBzeXN0ZW0gYXQgYW55IGdpdmVuwqB0aW1lLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKjQ2c2d0dzdoRktLSUY5RVVBejBxUEEuanBlZyIgLz48ZmlnY2FwdGlvbj5GYWxsYWN5ICM2OiBUaGVyZSBpcyBvbmUgYWRtaW5pc3RyYXRvciAodGhlcmUgYWxtb3N0IGNlcnRhaW5seSBhcmXCoG1vcmUhKS48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+VGhpcyBpcyBicmluZ3MgdXMgdG8gZmFsbGFjeSBzaXg6IDxzdHJvbmc+VGhlcmUgaXMgb25lIGFkbWluaXN0cmF0b3IuIDwvc3Ryb25nPkluIG5lYXJseSBhbGwgcmVhbC1saWZlIHNjZW5hcmlvcywgdGhlcmUgaXMgdXN1YWxseSA8ZW0+bW9yZTwvZW0+IHRoYW4gb25lIGFkbWluaXN0cmF0b3Igb2YgYSBkaXN0cmlidXRlZCBzeXN0ZW0uIFdpdGggdGhlIGV4Y2VwdGlvbiBvZiB2ZXJ5IHNtYWxsIGFwcGxpY2F0aW9uc+KAiuKAlOKAim9yIHBlcmhhcHMgYSBzeXN0ZW0gdGhhdCBpcyBhIHRveS9ob2JieSBwcm9qZWN0IHRoYXQgb25seSBoYXMgb25lIHBlcnNvbiBidWlsZGluZyBhbmQgbWFpbnRhaW5pbmcgaXTigIrigJTigIptb3N0IHN5c3RlbXMgZW5kIHVwIHdpdGggbWFueSBwZW9wbGUgaW52b2x2ZWQgaW4gdGhlIG1haW50ZW5hbmNlIG9mIHRoZcKgc3lzdGVtLjwvcD48cD5Bc3N1bWluZyB0aGF0IG9ubHkgb25lIGFkbWluaXN0cmF0b3IgZXhpc3RzIHRvIG1haW50YWluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtIGNhbiBoYXZlIGxvbmcgdGVybSBzaWRlLWVmZmVjdHMuIEZvciBleGFtcGxlLCBpbWFnaW5lIGEgc3lzdGVtIHdoZXJlIHRocmVlIGFkbWluaXN0cmF0b3JzIGFyZSBoZWxwaW5nIHRvIGtlZXAgdGhlIHN5c3RlbSB1cCBhbmQgYWZsb2F0LiBXaGF0IGhhcHBlbnMgaWYgb25lIG9mIHRob3NlIGFkbWluaXN0cmF0b3Jz4oCK4oCU4oCKd2hvIGp1c3Qgc28gaGFwcGVucyB0byBiZSBhbiBleHBlcnQgaW4gb25lIG9mIHRoZSBhc3BlY3Qgb2YgdGhlIHN5c3RlbeKAiuKAlOKAimxlYXZlcyB0aGUgdGVhbT8gT3IsIHdoYXQgaWYgb25lIG9mIHRoZSBwYXJ0cyBvZiB0aGUgc3lzdGVtIGlzIGFjdHVhbGx5IGEgZGVwZW5kZW5jeSBhbmQgcGFydCBvZiBhbiBleHRlcm5hbMKgc2VydmljZT88L3A+PHA+SW4gYm90aCBvZiB0aGVzZSBzaXR1YXRpb25zLCBvbmUgcGFydCBvZiB0aGUgc3lzdGVtIGlzIGxpa2VseSB1bmRlciB0aGUgY29udHJvbCBvZiBzb21lb25lIGVsc2UsIGFuZCB3ZSBoYXZlIHRvIGNvbnNpZGVyIHdoYXQgd2XigJlsbCBkbyBpZiB0aGF0IHNlY3Rpb24gb2YgdGhlIHN5c3RlbSBuZWVkcyBtYWludGVuYW5jZSwgb3Igd2hhdCB3aWxsIGhhcHBlbiAoYW5kIHdobyB3aWxsIGZpeCB0aGUgcHJvYmxlbSwgbm90IHRvIG1lbnRpb24gaG93IHF1aWNrbHkpIGlmIHRoYXQgc2VjdGlvbiBvZiB0aGUgc3lzdGVtIGdvZXPCoGRvd24hPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqVjRiOFZVRDJ5X2dxMnB1aFVHQlJCdy5qcGVnIiAvPjxmaWdjYXB0aW9uPlRoZSBtYW55IGFzcGVjdHMgb2YgbWFpbnRhaW4gYSBzeXN0ZW0gYXMgYW4gYWRtaW5pc3RyYXRvci48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+VGhlIHNpeHRoIGZhbGxhY3kgaXMgcmVhbGx5IGltcG9ydGFudCB0byBrZWVwIGluIG1pbmQgKGFuZCBpdOKAmXMgc28gZWFzeSB0byBmb3JnZXQgYWJvdXQgZW50aXJlbHkhKS4gV2UgYWxyZWFkeSBrbm93IHRoYXQgcmVndWxhciB0YXNrcyBsaWtlIG1haW50YWluaW5nIGFuZCB1cGdyYWRpbmcgYSBzeXN0ZW0gPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy93ZWVkaW5nLW91dC1kaXN0cmlidXRlZC1zeXN0ZW0tYnVncy0yOGEwMWUzN2Y3MGMiPmFyZSByZXNwb25zaWJsZTwvYT4gZm9yIGNhdXNpbmcgYSBncmVhdCBkZWFsIG9mIHNvZnR3YXJlIGJ1Z3MuIFNvIHdoZW4gYSBzeXN0ZW0gaGFzIG1hbnkgYWRtaW5pc3RyYXRvcnMsIGl04oCZcyBvdXIgcmVzcG9uc2liaWxpdHkgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHN5c3RlbSBjYW4gc3RpbGwgYmUgZWFzaWx5IHVwZ3JhZGVkIGFuZCBtYWludGFpbmVkIGFzIG1vcmUgYW5kIG1vcmUgYWRtaW5zIGFyZSBhZGRlZCB0byB0aGUgbWl4LiBTaW1pbGFybHksIGlmIG91ciBzeXN0ZW0gZGVwZW5kcyBvbiBhIHRoaXJkLXBhcnR5IHNlcnZpY2UsIHdlIG5lZWQgdG8gY29uc2lkZXIgd2hvIHRob3NlIGV4dGVybmFsIGFkbWluaXN0cmF0b3JzIGFyZSwgYW5kIGhvdyB3ZeKAmWxsIGhhbmRsZSBhbiBleHRlcm5hbCBkZXBlbmRlbmN5IHRoYXQgbmVlZHMgYXR0ZW50aW9uLjwvcD48cD5XZSBhbHNvIG5lZWQgdG8gYmUgc3VyZSB0byBoYXZlIGEgd2F5IHRvIGVtcG93ZXIgYWxsIGFkbWluaXN0cmF0b3JzIG9mIGEgc3lzdGVtIHRvIGRlYnVnIGFuZCBkaWFnbm9zZSBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIHN5c3RlbS4gVGhpcyBsYXN0IHBpZWNlIG9mIHRoZSBwdXp6bGUgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQsIGJlY2F1c2UgYWRtaW5pc3RyYXRvcnMgY2FuIG1ha2UgaW1wb3J0YW50IGRlY2lzaW9uc+KAiuKAlOKAimxpa2UgcmVzdGFydGluZyBhIG5vZGUsIGxpbWl0aW5nIGEgcXVhbnRpdHkgb2YgZGF0YSwgb3IgZGVjaWRpbmcgd2hhdCBwcm90b2NvbHMgdG8gdXNl4oCK4oCU4oCKYW5kIHRob3NlIGRlY2lzaW9ucyBhcmUgY3J1Y2lhbCB0byBtYW5hZ2luZyBhIHN5c3RlbSBhbmQga2VlcGluZyBpdCBydW5uaW5nIGNvcnJlY3RseS48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpkUTgxRUpEeWZWemhWOXhjYlplVmJBLmpwZWciIC8+PGZpZ2NhcHRpb24+RmFsbGFjeSAjNzogVHJhbnNwb3J0IGNvc3QgaXMgemVybyAoaXQgaXPCoG5vdCEpPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPkFub3RoZXIg4oCcZWFzeSB0byBkaXNtaXNz4oCdIGFzc3VtcHRpb24gaXMgdGhlIHJlYWxpdHkgb2YgdGhlIGNvc3Qgb2YgcnVubmluZyBhIHN5c3RlbS4gVGhpcyBsZWFkcyB1cyByaWdodCB0byBmYWxsYWN5IHNldmVuOiA8c3Ryb25nPlRyYW5zcG9ydCBjb3N0IGlzIHplcm8uPC9zdHJvbmc+IEFzIHdlIGxlYXJuZWQgd2l0aCA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL2ZvcmFnaW5nLWZvci10aGUtZmFsbGFjaWVzLW9mLWRpc3RyaWJ1dGVkLWNvbXB1dGluZy1wYXJ0LTEtMWIzNWMzYjg1YjUzIj5mYWxsYWN5IHR3bzwvYT4sIGl0IHRha2VzIHRpbWUgZm9yIGRhdGEgdG8gdHJhdmVsIGZyb20gb25lIHBsYWNlIHRvIGFub3RoZXI7IGFub3RoZXIgbmFtZSBmb3IgdGhpcyBhbW91bnQgb2YgdGltZSBpcyA8ZW0+bGF0ZW5jeTwvZW0+LiBTaW1pbGFybHksIHRoZSBjb3N0IG9mIHNlbmRpbmcgZGF0YSBmcm9tIG9uZSBwbGFjZSB0byBhbm90aGVyIGFsc28gaGFzIG90aGVyIGNvc3RzLMKgdG9vITwvcD48cD5Gb3IgZXhhbXBsZSwgaXQgdGFrZXMgPHN0cm9uZz48ZW0+cmVzb3VyY2VzPC9lbT48L3N0cm9uZz4gdG8gYmUgYWJsZSB0byB0cmFuc3BvcnQgYW55IGRhdGEgZnJvbSBvbmUgcGxhY2UgdG8gYW5vdGhlciB3aXRoaW4gYSBkaXN0cmlidXRlZCBzeXN0ZW0uIFRoZXNlIHJlc291cmNlcyBoYXZlIGEgcHJpY2UgdGFnIGF0dGFjaGVkIHRvIHRoZW0sIGFuZCB0aGVzZSByZXNvdXJjZXMgY29zdMKgbW9uZXkuPC9wPjxwPkFkZGl0aW9uYWxseSwgc2VuZGluZyBkYXRhIGZyb20gb25lIHBsYWNlIHRvIGFub3RoZXIgYWxzbyB0YWtlcyBzb21lIGVmZm9ydCBhbmQgdGltZSB0byB0dXJuIHRoZSBkYXRhIGludG8gYSBtYWNoaW5lLXJlYWRhYmxlIGNvZGUgKGFuZCBzdWJzZXF1ZW50bHksIGJhY2sgb3V0IG9mIG1hY2hpbmUtcmVhZGFibGUgY29kZSBpbnRvIGRhdGEgYWdhaW4pLiBUaGVzZSBwcm9jZXNzZXMgYXJlIGtub3duIGFzIDxzdHJvbmc+PGVtPnNlcmlhbGl6YXRpb248L2VtPjwvc3Ryb25nPiBhbmQgPHN0cm9uZz48ZW0+ZGVzZXJpYWxpemF0aW9uPC9lbT48L3N0cm9uZz4sIGFuZCBhbGwgZGF0YSB0aGF0IGlzIHBhc3NlZCBhcm91bmQgaW4gdGhlIHN5c3RlbSBuZWVkcyB0byBiZSBzZXJpYWxpemVkIGFuZCBkZXNlcmlhbGl6ZWQgZnJvbSBhIGJ5dGUgc3RyZWFtIGludG8gc29tZSBvYmplY3QgaW4gbWVtb3J5IHRoYXQgaXMgdXNlZCB0byByZXByZXNlbnQgdGhhdCBkYXRhLiBNYW55IGRldmVsb3BlcnMgYXJlIGZhbWlsaWFyIHdpdGggc2VyaWFsaXphdGlvbiBhbmQgZGVzZXJpYWxpemF0aW9uIGFuZCB1c2UgaXQgZXZlcnkgZGF5OyBob3dldmVyLCBub3QgYWxsIG9mIHVzIGFyZSBuZWNlc3NhcmlseSBjb25zaWRlcmluZyB0aGUgdGltZSBhbmQgZWZmb3J0IHRoYXQgdGhlc2UgdHdvIHByb2Nlc3NlcyB0YWtlIHdoZW5ldmVyIHRoZXnCoGhhcHBlbiE8L3A+PHA+VGhlIGZhY3QgdGhhdCBpdCBjb3N0cyB0aW1lLCBlZmZvcnQsIGFuZCByZXNvdXJjZXMgcmVtaW5kIHVzIHRoYXQgaXQgaXMgbm90IGZyZWUgdG8gc2VuZCBkYXRhIHRocm91Z2ggb3VyIHN5c3RlbSBhbmQgdHJhbnNwb3J0IGluZm9ybWF0aW9uIGJhY2sgYW5kIGZvcnRoLiBIb3dldmVyLCBpdCBjYW4gYmUgZWFzeSB0byBmb3JnZXQgdGhpcyB1bnRpbCB3ZSBnZXQgYW4gdW5leHBlY3RlZCBiaWxsIGZyb20gQVdTIG9yIEhlcm9rdSwgYXQgd2hpY2ggcG9pbnQgd2Ugc3VkZGVubHkgcmVtZW1iZXIgdGhpcyByZWFsaXR5LiBLZWVwaW5nIHRoaXMgZmFsbGFjeSBpbiBtaW5kIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGFzIG91ciBzeXN0ZW0gc2NhbGVzIGFuZCBvdXIgdHJhbnNwb3J0IGNvc3RzIHN0YXJ0IHRvIGNyZWVwIHVwIG9uwqB1cy48L3A+PGg0PlN0YW5kYXJkaXphdGlvbiBvZiBhwqBzeXN0ZW08L2g0PjxwPlRoZSBmaW5hbCBmYWxsYWN5IGlzIG9uZSB0aGF0IG1hbnkgb2YgdXMgbWF5IG5vdCBoYXZlIGV2ZXIgdGhvdWdodCBhYm91dCwgcGFydGljdWxhcmx5IGlmIHdlIGhhdmUgYmVlbiB3b3JraW5nIHdpdGggZnJhbWV3b3JrcyBhbmQgc3lzdGVtcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGFyb3VuZCBmb3Igc29tZSB0aW1lLiBUaGUgZWlnaHRoIGZhbGxhY3kgYnJpbmdzIHVzIGJhY2sgdG8gb3VyIGdvb2Qgb2xkIGZyaWVuZCwgdGhlIG5ldHdvcms6IDxzdHJvbmc+VGhlIG5ldHdvcmsgaXMgbm90IGhvbW9nZW5lb3VzLjwvc3Ryb25nPiBNYW55IG9mIHVzIHByb2JhYmx5IGtub3cgdGhpcyBmYWxsYWN5IHRvIGluaGVyZW50bHkgYmUgZmFsc2U6IHRoZSBub2RlcyBpbiBhIG5ldHdvcmsgY2FuIGJlIGFueXRoaW5nLCBzbyB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCB0aGV5IHdpbGwgYWxsIGJlIHRoZcKgc2FtZSE8L3A+PHA+SW4gZmFjdCwgbW9zdCBkaXN0cmlidXRlZCBzeXN0ZW1zIG1heSBpbnRlZ3JhdGUgd2l0aCBkaWZmZXJlbnQga2luZHMgb2YgZGV2aWNlcywgcGVyaGFwcyBkaWZmZXJlbnQgcHJvdG9jb2xzLCBhbmQgYWxtb3N0IGNlcnRhaW5seSB3aWxsIGFkYXB0IHRvIHdvcmsgd2l0aCB2YXJpb3VzIG9wZXJhdGluZyBzeXN0ZW1zIGFuZCBicm93c2Vycy4gQW5kIGJlY2F1c2UgdGhlIG5vZGVzIG9mIG91ciBuZXR3b3JrKHMpIGFyZW7igJl0IGdvaW5nIHRvIGFsbCBsb29rIHRoZSBzYW1lLCBpdOKAmXMgbm90IGFsd2F5cyBzYWZlIHRvIGFzc3VtZSB0aGF0IHRoZXkgd2lsbCBhbGwgYmUgY29uZmlndXJlZCB0aGUgc2FtZSzCoGVpdGhlci48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpCdGNYTVF2V24zZS1wY3Z3SVRWbDNBLmpwZWciIC8+PGZpZ2NhcHRpb24+RmFsbGFjeSAjODogVGhlIG5ldHdvcmsgaXMgaG9tb2dlbmVvdXMgKGl0IGlzbuKAmXQgaWYgd2UgZG9u4oCZdCB1c2Ugc3RhbmRhcmRzKS48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+SW5kZWVkLCBtb3N0IG5ldHdvcmtzIGFyZSBoZXRlcm9nZW5vdXMsIGJ1dCB0aGUgbm9kZXMgaW4gYSBzeXN0ZW3igJlzIG5ldHdvcmsgc3RpbGwgbmVlZCB0byB3b3JrIHRvZ2V0aGVyIGFuZCBiZSBpbnRlcm9wZXJhYmxlLiBDb252ZW5pZW50bHksIGhvd2V2ZXIsIG1vc3Qgb2YgdXMgZG9u4oCZdCBuZWVkIHRvIGZlYXIgdGhpcyBmYWxsYWN5OyB0aGlzIGlzIHdoZXJlIDxzdHJvbmc+PGVtPnN0YW5kYXJkaXphdGlvbjwvZW0+PC9zdHJvbmc+IGNvbWVzIGluIHRvIHNhdmUgdGhlIGRheSEgTW9zdCBzeXN0ZW1zIHRoZXNlIGRheXMgYXJlIGFyY2hpdGVjdGVkIHRvIHJlbHkgdXBvbiBhbmQgdXRpbGl6ZSBzdGFuZGFyZGl6ZWQgZm9ybWF0cyB0aGF0IGFyZSBjcmVhdGVkIHRvIGNyZWF0ZSBhIHNoYXJlZCBsYW5ndWFnZSBhbW9uZ3N0IGRpZmZlcmVudCBlbGVtZW50cyBpbiBhIHN5c3RlbSwgZXZlbiBpZiB0aGV5IHBlcmhhcHMgYXJlbuKAmXQgYWxsIGNvbmZpZ3VyZWQgdGhlwqBzYW1lLjwvcD48cD5NYW55IG9mIHVzIHVzZSB0aGVzZSBzdGFuZGFyZHPigIrigJTigIpsaWtlIEhUVFAgcHJvdG9jb2xzLCBSRVNUIEFQSXMsIGFuZCBKU09OLWZvcm1hdHRlZCBkYXRh4oCK4oCU4oCKb24gYSBkYWlseSBiYXNpcywgYW5kIHRoZXNlIHN0YW5kYXJkcyBtYWtlIGl0IG11Y2ggZWFzaWVyIHRvIGRlYWwgd2l0aCBhIGhldGVyb2dlbmVvdXMgbmV0d29yay4gQnV0IGl04oCZcyBzdGlsbCBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgdGhpcyBmYWxsYWN5IGluIHRoZSBvZmYgY2hhbmNlIHRoYXQgb25lIGRheSwgd2UgZmluZCBvdXJzZWx2ZXMgYnVpbGRpbmcgYSBwYXJ0IG9mIGEgc3lzdGVtIHRoYXQgaXNu4oCZdCB1c2luZyBhIHN0YW5kYXJkaXplZCBmb3JtYXQhIFJvbGxpbmcgYSBwcm9wcmlldGFyeSBwcm90b2NvbCBvZiBvbmXigJlzIG93biBtZWFucyB0aGF0LCBkb3duIHRoZSByb2FkLCB0aGVyZSB3aWxsIG1vc3QgbGlrZWx5IGJlIGFub3RoZXIgbm9kZSB0aGF0IHdpbGwgYmUgaW5jb21wYXRpYmxlIHdpdGggb3VyIG5vbi1zdGFuZGFyZCBmb3JtYXQuPC9wPjxwPkluIGZhY3QsIEkgdGhpbmsgaXTigJlzIHdvcnRoIHRoaW5raW5nIGFib3V0IGFsbCBlaWdodCBmYWxsYWNpZXMsIGV2ZW4gaWYgd2UgYXJlIHdvcmtpbmcgd2l0aCBzeXN0ZW1zIHRoYXQgaGF2ZSBiZWVuIGJ1aWx0IHNvIHRoYXQgd2UgZG9u4oCZdCBuZWVkIHRvIGNvbnNpZGVyIHRoZXNlIGlzc3Vlcy4gSnVzdCBiZWNhdXNlIHdlIGRvbuKAmXQgcnVuIGludG8gdGhlc2UgZmFsbGFjaWVzIG9uIGEgZGFpbHkgYmFzaXMgZG9lc27igJl0IG1lYW4gdGhhdCB0aGV54oCZcmUgbm90IHBvd2VyZnVsISBJbiBmYWN0LCB0aGV5IGNhbiBzbmVhayB1cCBvbiB1cyBqdXN0IHdoZW4gd2XigJlyZSBub3QgbG9va2luZywgYW5kIHByb3ZlIHRoYXQgZXZlbiB0aGUgbW9zdCBleHBlcmllbmNlZCBkaXN0cmlidXRlZCBzeXN0ZW1zIGVuZ2luZWVycyBjYW4gbWFrZSBiYWQgYXNzdW1wdGlvbnMuPC9wPjxoND5SZXNvdXJjZXM8L2g0PjxwPlRoZSBmYWxsYWNpZXMgb2YgZGlzdHJpYnV0ZWQgY29tcHV0aW5nIGhhdmUgYmVlbiBmYWlybHkgd2VsbC13cml0dGVuIGFib3V0LCBhbmQgeW91IGNhbiBmaW5kIHNvbWUgZ29vZCByZXNvdXJjZXMgb24gZGlmZmVyZW50IGludGVycHJldGF0aW9ucyBvZiB0aGVtLCBmb3IgZGlmZmVyZW50IHRlY2hub2xvZ2llcy4gSWYgeW914oCZcmUgY3VyaW91cyB0byBsZWFybiBtb3JlLCBjaGVjayBvdXQgdGhlIHJlc291cmNlcyBiZWxvdyE8L3A+PG9sPjxsaT48YSBocmVmPSJodHRwczovL3d3dy5yZ29hcmNoaXRlY3RzLmNvbS9GaWxlcy9mYWxsYWNpZXMucGRmP3NvdXJjZT1wb3N0X3BhZ2UtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iPkZhbGxhY2llcyBvZiBEaXN0cmlidXRlZCBDb21wdXRpbmcgRXhwbGFpbmVkPC9hPiwgQXJub24gUm90ZW0tR2FsLU96PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuc2ltcGxlb3JpZW50ZWRhcmNoaXRlY3R1cmUuY29tLzgtZmFsbGFjaWVzLW9mLWRpc3RyaWJ1dGVkLXN5c3RlbXMvP3NvdXJjZT1wb3N0X3BhZ2UtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iPlVuZGVyc3RhbmRpbmcgdGhlIDggZmFsbGFjaWVzIG9mIERpc3RyaWJ1dGVkIFN5c3RlbXM8L2E+LCBWaWN0b3LCoENoaXJjdTwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vbXVsdGltZWRpYS50ZWxvcy5jb20vYmxvZy9kZWJ1bmtpbmctdGhlLTgtZmFsbGFjaWVzLW9mLWRpc3RyaWJ1dGVkLXN5c3RlbXMtcGFydC0yLz9zb3VyY2U9cG9zdF9wYWdlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIj5EZWJ1bmtpbmcgdGhlIDggRmFsbGFjaWVzIG9mIERpc3RyaWJ1dGVkIFN5c3RlbXM8L2E+LCBSYW1pbMKgQWxmb25zbzwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3BsYXlsaXN0P2xpc3Q9UEwxRFpxZVZ3UkxuRDNFanljaVlBTzgyZFQ5T3dpcThJNSZhbXA7c291cmNlPXBvc3RfcGFnZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSI+RmFsbGFjaWVzIG9mIERpc3RyaWJ1dGVkIFN5c3RlbXM8L2E+LCBVZGnCoERhaGFuPC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9ibG9nLm5ld3JlbGljLmNvbS9lbmdpbmVlcmluZy90aGUtZmFsbGFjaWVzLW9mLWRpc3RyaWJ1dGVkLWNvbXB1dGluZy1yZWJvcm4tdGhlLWNsb3VkLWVyYT9zb3VyY2U9cG9zdF9wYWdlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIj5UaGUgRmFsbGFjaWVzIG9mIERpc3RyaWJ1dGVkIENvbXB1dGluZyBSZWJvcm46IFRoZSBDbG91ZCBFcmE8L2E+LCBCcmlhbsKgRG9sbDwvbGk+PC9vbD48aW1nIHNyYz0iaHR0cHM6Ly9tZWRpdW0uY29tL18vc3RhdD9ldmVudD1wb3N0LmNsaWVudFZpZXdlZCZyZWZlcnJlclNvdXJjZT1mdWxsX3JzcyZwb3N0SWQ9YjhmZjI5YmVlZDU2IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBhbHQ9IiI+PGhyPjxwPjxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvZm9yYWdpbmctZm9yLXRoZS1mYWxsYWNpZXMtb2YtZGlzdHJpYnV0ZWQtY29tcHV0aW5nLXBhcnQtMi1iOGZmMjliZWVkNTYiPkZvcmFnaW5nIGZvciB0aGUgRmFsbGFjaWVzIG9mIERpc3RyaWJ1dGVkIENvbXB1dGluZyAoUGFydCAyKTwvYT4gd2FzIG9yaWdpbmFsbHkgcHVibGlzaGVkIGluIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMiPmJhc2VkczwvYT4gb24gTWVkaXVtLCB3aGVyZSBwZW9wbGUgYXJlIGNvbnRpbnVpbmcgdGhlIGNvbnZlcnNhdGlvbiBieSBoaWdobGlnaHRpbmcgYW5kIHJlc3BvbmRpbmcgdG8gdGhpcyBzdG9yeS48L3A+XV0+PC9jb250ZW50OmVuY29kZWQ+CiAgICAgICAgPC9pdGVtPgogICAgICAgIDxpdGVtPgogICAgICAgICAgICA8dGl0bGU+PCFbQ0RBVEFbRm9yYWdpbmcgZm9yIHRoZSBGYWxsYWNpZXMgb2YgRGlzdHJpYnV0ZWQgQ29tcHV0aW5nIChQYXJ0IDEpXV0+PC90aXRsZT4KICAgICAgICAgICAgPGxpbms+aHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9mb3JhZ2luZy1mb3ItdGhlLWZhbGxhY2llcy1vZi1kaXN0cmlidXRlZC1jb21wdXRpbmctcGFydC0xLTFiMzVjM2I4NWI1Mz9zb3VyY2U9cnNzLThmNTU5OTNjOTczZS0tLS0tLTI8L2xpbms+CiAgICAgICAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0cHM6Ly9tZWRpdW0uY29tL3AvMWIzNWMzYjg1YjUzPC9ndWlkPgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbZGlzdHJpYnV0ZWQtc3lzdGVtc11dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtzb2Z0d2FyZS1kZXZlbG9wbWVudF1dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtjb21wdXRlci1zY2llbmNlXV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW2NvZGVdXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbcHJvZ3JhbW1pbmddXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8ZGM6Y3JlYXRvcj48IVtDREFUQVtWYWlkZWhpIEpvc2hpXV0+PC9kYzpjcmVhdG9yPgogICAgICAgICAgICA8cHViRGF0ZT5GcmksIDIxIEp1biAyMDE5IDA0OjE1OjI1IEdNVDwvcHViRGF0ZT4KICAgICAgICAgICAgPGF0b206dXBkYXRlZD4yMDE5LTA2LTIxVDA0OjE1OjI1LjcyM1o8L2F0b206dXBkYXRlZD4KICAgICAgICAgICAgPGNvbnRlbnQ6ZW5jb2RlZD48IVtDREFUQVs8ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKjRUYzYxZzhmN3RLd1cyS2thNkVPcWcuanBlZyIgLz48ZmlnY2FwdGlvbj5Gb3JhZ2luZyBmb3IgdGhlIGZhbGxhY2llcyBvZiBkaXN0cmlidXRlZCBjb21wdXRpbmchPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPlNvIG11Y2ggb2YgY29tcHV0aW5nIGlzIGJhc2VkIG9uIGFzc3VtcHRpb25zLiBXZSBkZXNpZ24gc3lzdGVtcyBvcGVyYXRpbmcgb24gYSBzZXQgb2YgYXNzdW1wdGlvbnMuIFdlIHdyaXRlIHByb2dyYW1zIGFuZCBhcHBsaWNhdGlvbnMgYXNzdW1pbmcgY2VydGFpbiBwYXJ0cyBvZiB0aGVpciBzeXN0ZW1zIHdpbGwgd29yayBhIGNlcnRhaW4gd2F5LiBBbmQgd2UgYWxzbyBhc3N1bWUgdGhhdCBzb21lIHRoaW5ncyBjYW4gcG90ZW50aWFsbHkgZ28gd3JvbmcsIGFuZCB3ZSAoaG9wZWZ1bGx5KSBhdHRlbXB0IHRvIGFjY291bnQgZm9ywqB0aGVtLjwvcD48cD5PbmUgYmlnIGlzc3VlIHdpdGggYnVpbGRpbmcgY29tcHV0ZXIteSB0aGluZ3MgaXMgdGhhdCwgZXZlbiB0aG91Z2ggd2XigJlyZSBvZnRlbiBkZWFsaW5nIHdpdGggY29tcGxleCBzeXN0ZW1zLCB3ZSBhcmVu4oCZdCBhbHdheXMgY2FwYWJsZSBvZiByZWFzb25pbmcgYWJvdXQgb24gYSBiaWctcGljdHVyZSBsZXZlbC4gRGlzdHJpYnV0ZWQgc3lzdGVtcyBhcmUgY2VydGFpbmx5IGEgZ3JlYXQgZXhhbXBsZSBvZiB0aGlzICh5b3Uga25ldyB3aGVyZSBJIHdhcyBnb2luZyB3aXRoIHRoaXMsIGRpZG7igJl0IHlvdT8pLiBFdmVuIGEg4oCcc2ltcGxl4oCdIGRpc3RyaWJ1dGVkIHN5c3RlbSBpc27igJl0IHNvIHNpbXBsZSwgYmVjYXVzZSBieSBkZWZpbml0aW9uIGl0IGludm9sdmVzIG1vcmUgdGhhbiBvbmUgbm9kZSwgYW5kIHRoZSBub2RlcyBpbiB0aGUgc3lzdGVtIGhhdmUgdG8gY29tbXVuaWNhdGUgYW5kIHRhbGsgdG8gb25lIGFub3RoZXIgdGhyb3VnaCBhIG5ldHdvcmsuIEV2ZW4gaW4gYSBzbWFsbCBkaXN0cmlidXRlZCBzeXN0ZW1zIHdpdGgganVzdCB0d28gbm9kZXMsIHdlIG1ha2UgY2VydGFpbiBhc3N1bXB0aW9ucyBhYm91dCBob3cgdGhhdCBzeXN0ZW0gaXMgZ29pbmcgdG/CoHdvcmsuPC9wPjxwPkhlcmXigJlzIHRoZSB0aGluZyBhYm91dCBtYWtpbmcgYXNzdW1wdGlvbnMsIHRob3VnaDogdGhleSBjYW4gYmUgd3JvbmchIEFzIGl0IHR1cm5zIG91dCwgdGhlcmUgYXJlIHNvbWUgY29tbW9uLCBpbmNvcnJlY3QgYXNzdW1wdGlvbnMgdGhhdCB3ZSBvZnRlbiBtYWtlIGFib3V0IGRpc3RyaWJ1dGVkIGNvbXB1dGluZy4gSW4gZmFjdCB0aGV5IGFyZSBzbyB1YmlxdWl0b3VzIHRoYXQgdGhleSBoYXZlIGEgbmFtZSEgSeKAmW0gdGFsa2luZywgb2YgY291cnNlLCBhYm91dCB0aGUgZWlnaHQgZmFsbGFjaWVzIG9mIGRpc3RyaWJ1dGVkIGNvbXB1dGluZy4gQW5kIHdoYXQgYXJlIHRoZXk/IFdlbGwsIGl04oCZcyB0aW1lIHRvIGZpbmTCoG91dC48L3A+PGg0PkFzc3VtcHRpb25zIGdvbmXCoHdyb25nPC9oND48cD5UaGUgZWlnaHQgZmFsbGFjaWVzIGFzIHdlIGtub3cgdGhlbSB0b2RheSBhY3R1YWxseSBzdGFydGVkIG9mZiBhcyBqdXN0IGZvdXIgZmFsbGFjaWVzLCB3aGljaCBhcmUgdGhlIG9uZXMgdGhhdCB3ZeKAmWxsIGNvdmVyIGluIHRoaXMgcG9zdC4gVGhlIGZpcnN0IGZvdXIgZmFsbGFjaWVzIHdlcmUgY3JlYXRlZCBpbiB0aGUgZWFybHkgOTDigJlzIChzb21ldGltZSBhZnRlciAxOTkxKSBieSB0d28gU3VuIE1pY3Jvc3lzdGVtcyBlbmdpbmVlcnMsIEJpbGwgSm95IGFuZCBEYXZlwqBMeW9uLjwvcD48cD5KYW1lcyBHb3NsaW5nLCB3aG8gd2FzIGEgZmVsbG93IGF0IFN1biBNaWNyb3N5c3RlbXMgYXQgdGhlIHRpbWXigIrigJTigIphbmQgd291bGQgbGF0ZXIgZ28gb24gdG8gY3JlYXRlIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdl4oCK4oCU4oCKY2xhc3NpZmllZCB0aGVzZSBmaXJzdCBmb3VyIGZhbGxhY2llcyBhcyDigJxUaGUgRmFsbGFjaWVzIG9mIE5ldHdvcmtlZCBDb21wdXRpbmfigJ0uIEEgYml0IGxhdGVyIHRoYXQgZGVjYWRlLCBQZXRlciBEZXV0c2NoLCBhbm90aGVyIEZlbGxvdyBhdCBTdW4sIGFkZGVkIGZhbGxhY2llcyBmaXZlLCBzaXgsIGFuZCBzZXZlbi4gSW4gMTk5NywgR29zbGluZyBhZGRlZCB0aGUgZWlnaHRoIGFuZCBmaW5hbCBmYWxsYWN5LiBTbyBtdWNoIG9mIHRoZSB3b3JrIGRvbmUgdG8gY29kaWZ5IHRoaXMgbGlzdCB3YXMgaW5zcGlyZWQgYnkgd29yayB0aGF0IHdhcyBhY3R1YWxseSBoYXBwZW5pbmcgYXQgU3VuIE1pY3Jvc3lzdGVtcyBhdCB0aGUgdGltZS4gQW5kIHdoaWxlIERldXRzY2ggaXMgdGhlIG9uZSB3aG8gaXMgb2Z0ZW4gY3JlZGl0ZWQgd2l0aCBoYXZpbmcg4oCcY3JlYXRlZOKAnSB0aGUgZWlnaHQgZmFsbGFjaWVzLCBjbGVhcmx5IGl0IHdhcyBhIGNvbWJpbmVkLCBncm91cCBlZmZvcnQgKGFzIGlzIHNvIG9mdGVuIHRoZSBjYXNlIGluIGNvbXB1dGluZyEpLjwvcD48cD5BbHJpZ2h0LCBzbyBub3cgdGhhdCB3ZeKAmXZlIGdvdCBzb21lIGhpc3RvcnkgdW5kZXIgb3VyIGJlbHQsIGxldOKAmXMgZ2V0IGludG8gc29tZSBvZiB0aGUgcHJhY3RpY2FsIGFzcGVjdHMgb2YgdGhpcyBwcm9ibGVtLiBMZXTigJlzIGZpcnN0IHN0YXJ0IHdpdGggdW5kZXJzdGFuZGluZyB3aGF0IHdl4oCZcmUgdGFsa2luZyBhYm91dCB3aGVuIHdlIHNheSBhIOKAnGZhbGxhY3nigJ0gb2YgZGlzdHJpYnV0ZWQgY29tcHV0aW5nLiBXaGF0IGRvZXMgdGhhdCBtZWFuLMKgZXhhY3RseT88L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpUR1dYNlV1TEZxV21zZDhxUXB5azBnLmpwZWciIC8+PGZpZ2NhcHRpb24+V2hhdCBleGFjdGx5IElTIGEgZmFsbGFjeSB3aGVuIGl0IGNvbWVzIHRvIGRpc3RyaWJ1dGVkIGNvbXB1dGluZz88L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+V2VsbCwgYSA8c3Ryb25nPjxlbT5mYWxsYWN5PC9lbT48L3N0cm9uZz4gaXMgYSBraW5kIG9mIGFzc3VtZWQgZmFjdCBvciBiZWxpZWY7IGhvd2V2ZXIsIGV2ZW4gdGhvdWdoIGl0IGlzIGFzc3VtZWQgdG8gYmUgdHJ1ZSwgdGhhdCBpcyB1c3VhbGx5IG5vdCB0aGUgY2FzZSBpbiBwcmFjdGljZS4gQSBmYWxsYWN5IGlzIGp1c3QgYSBiZWxpZWYgdGhhdCBpcyBhIG1pc2NvbmNlcHRpb24uIEJ1dCB3aGF0IGRvZXMgdGhhdCBtZWFuIGluIHRoZSBjb250ZXh0IG9mIGNvbXB1dGluZz8gV2VsbCwgYSBmYWxsYWN5IG1hZGUgYWJvdXQgYSBkaXN0cmlidXRlZCBzeXN0ZW0gaXMgYW4gYXNzdW1wdGlvbiBhYm91dCB0aGUgc3lzdGVtIG1hZGUgYnkgdGhlIGRldmVsb3BlcnMsIHdoaWNoIG9mdGVuIGVuZHMgdXAgYmVpbmcgaW5hY2N1cmF0ZSBhbmQgd3JvbmcgaW4gdGhlIGxvbmcgcnVuLiBJbiBvdGhlciB3b3JkcywgdGhleSBhcmUgYmFkIGFzc3VtcHRpb25zIHRvwqBtYWtlLjwvcD48YmxvY2txdW90ZT5XZSBjYW4gdGhpbmsgb2YgdGhlIGVpZ2h0IGZhbGxhY2llcyBhcyBlaWdodCBjb21tb24gbWlzY29uY2VwdGlvbnMgdGhhdCBkZXZlbG9wZXJzIG9mIGRpc3RyaWJ1dGVkIHN5c3RlbXMgb2Z0ZW4gZmFsbCBwcmV5IHRvLCB3aGljaCB3ZSB3YW50IHRvwqBhdm9pZC48L2Jsb2NrcXVvdGU+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSoyaXhnMy15Y3VrT3ZSUUhVazJmUjZ3LmpwZWciIC8+PGZpZ2NhcHRpb24+VGhlIDggZmFsbGFjaWVzIG9mIGRpc3RyaWJ1dGVkIGNvbXB1dGluZzwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5TbywgbGV04oCZcyB0YWtlIGEgbG9vayBhdCB0aGVzZSBlaWdodCBmYWxsYWNpZXMsIHNoYWxswqB3ZT88L3A+PHA+VGhlIGVpZ2h0IGZhbGxhY2llcyBvZiBkaXN0cmlidXRlZCBjb21wdXRpbmcgYXJlIGFzwqBmb2xsb3dzOjwvcD48b2w+PGxpPlRoZSBuZXR3b3JrIGlzIHJlbGlhYmxlLjwvbGk+PGxpPkxhdGVuY3kgaXPCoHplcm8uPC9saT48bGk+QmFuZHdpZHRoIGlzIGluZmluaXRlLjwvbGk+PGxpPlRoZSBuZXR3b3JrIGlzwqBzZWN1cmUuPC9saT48bGk+VG9wb2xvZ3kgZG9lc27igJl0wqBjaGFuZ2UuPC9saT48bGk+VGhlcmUgaXMgb25lIGFkbWluaXN0cmF0b3IuPC9saT48bGk+VHJhbnNwb3J0IGNvc3QgaXPCoHplcm8uPC9saT48bGk+VGhlIG5ldHdvcmsgaXMgaG9tb2dlbm91cy48L2xpPjwvb2w+PHA+SW4gdGhpcyBwb3N0LCB3ZeKAmWxsIGZvY3VzIGp1c3Qgb24gdGhlIGZpcnN0IGZvdXIgZmFsbGFjaWVzLCB3aGljaCB3ZSBub3cga25vdyB3ZXJlIHRoZSBvcmlnaW5hbCDigJxGYWxsYWNpZXMgb2YgTmV0d29ya2VkIENvbXB1dGluZ+KAnSEgQ29udmVuaWVudGx5LCB0aGVzZSBmaXJzdCBmb3VyIGZhbGxhY2llcyBhcmUgYWN0dWFsbHkgYWxsIGFuY2hvcmVkIGFyb3VuZCBvbmUgY2VudHJhbCwga2V5IGNoYXJhY3RlcjogdGhlIG5ldHdvcmsuIEFuZCwgYXMgd2XigJlyZSBhYm91dCB0byBzZWUsIHRoZSBuZXR3b3JrIGlzIGEgdHJpY2t5IGxpdHRsZSBmZWxsb3cuIE9mIGNvdXJzZSwgaXTigJlzIGtpbmQgb2YgZGlmZmljdWx0IHRvIGhhdmUgYSBkaXN0cmlidXRlZCBzeXN0ZW0gd2l0aG91dCBhIG5ldHdvcmsgc28gd2UgaGF2ZSB0byBnZXQgdXNlZCB0byBkZWFsaW5nIHdpdGggdGhpcyB0cmlja3kgY2hhcmFjdGVyLjwvcD48cD5MZXTigJlzIGxlYXJuIGFib3V0IHdoYXQgbWFrZXMgdGhlIG5ldHdvcmsgaGFyZCB0byBjb250ZW5kIHdpdGgsIGFuZCB3aHkgc29tZSBvZiB0aGVzZSBmYWxsYWNpZXMgYXJlIGVhc3kgdG/CoGFzc3VtZS48L3A+PGg0PlRoZSB0cm91YmxlIHdpdGjCoG5ldHdvcmtzPC9oND48cD5PdXIgZGlzdHJpYnV0ZWQgc3lzdGVtcywgbm8gbWF0dGVyIGhvdyBjb21wbGV4IG9yIGludm9sdmVkIHRoZXkgYXJlLCBhbGwgZXhpc3Qgd2l0aGluIGEgbmV0d29yay4gVGhlIG5vZGVzIG9mIG91ciBzeXN0ZW0gaGF2ZSB0byB0YWxrIHRvIG9uZSBhbm90aGVyIGFuZCBzZW5kIGFuZCByZWNlaXZlIG1lc3NhZ2VzIHRvIGNvbW11bmljYXRlIGFuZCBkZWxpdmVyIGRhdGEuIEJlY2F1c2UgdGhlIHN5c3RlbSBpcyBkaXN0cmlidXRlZCwgcGFydHMgb2YgaXQgd2lsbCBsaXZlIGluIGRpZmZlcmVudCBwbGFjZXMsIGFuZCB0aGUgbmV0d29yayBpcyB0aGUgYW5jaG9yaW5nIHBvaW50IGJ5IHdoaWNoIHRoZSBjb21wb25lbnRzIG9mIHRoZSBzeXN0ZW0gd2lsbCBjb21tdW5pY2F0ZS48L3A+PHA+VGhpcyBicmluZ3MgdXMgdG8gZmFsbGFjeSBvbmU6IDxzdHJvbmc+VGhlIG5ldHdvcmsgaXMgcmVsaWFibGUuPC9zdHJvbmc+IFJlbWVtYmVyLCB0aGVzZSBhcmUgZmFsbGFjaWVzIHRoYXQgd2XigJlyZSBkZWFsaW5nIHdpdGgsIHNvIHRoZSBuZXR3b3JrIGJlaW5nIHJlbGlhYmxlIGlzIGEgdHJ1ZSBtaXNjb25jZXB0aW9uOyB0aGUgbmV0d29yayBpcyA8ZW0+bm90PC9lbT4gcmVsaWFibGUhPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqZWkxOEZwbTFlYXhQa3JJTTAwa2lHdy5qcGVnIiAvPjxmaWdjYXB0aW9uPkZhbGxhY3kgIzE6IFRoZSBuZXR3b3JrIGlzIHJlbGlhYmxlIChpdCBpc8Kgbm90KS48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+U28gbWFueSB0aGluZ3Mgd2l0aGluIGEgbmV0d29yayBjYW4gZ28gd3JvbmcuIEhhcmR3YXJlIGNhbiBmYWlsLCB0aGUgcG93ZXIgY2FuIGdvIG91dCwgdGhlIHNpZ25hbCBjb3VsZCBnZXQgc3BvdHR5LCBvciB0aGUgbmV0d29yayBjb3VsZCBldmVuIGJlY29tZSBjb21wcm9taXNlZCEgSXQgbWlnaHQgc2VlbSBvYnZpb3VzIHRoYXQgYSBuZXR3b3JrIGlzbuKAmXQgcmVsaWFibGUsIGJ1dCBhcyBkZXNpZ25lcnMgb2YgYSBkaXN0cmlidXRlZCBzeXN0ZW0sIHdlIGNhbiBzb21ldGltZXMgZm9yZ2V0IHRoaXMgd2hlbiB3ZSBhcmUgd3JpdGluZyBjb2RlIHRoYXQgaXMgZ29pbmcgdG8gcnVuIG9uIGEgZGlzdHJpYnV0ZWQgc3lzdGVtLiBXZSB3cml0ZSB0aGF0IGNvZGUgcGVyaGFwcyBvcGVyYXRpbmcgdW5kZXIgdGhpcyBhc3N1bXB0aW9uLCBidXQgd2hlbiB0aGUgbmV0d29yayBpbmV2aXRhYmx5IGJlY29tZXMgPGVtPnVucmVsaWFibGU8L2VtPiBhdCBzb21lIHBvaW50IGRvd24gdGhlIHJvYWQsIHdlIHJlYWxpemUgdGhhdCB3ZSBtYWRlIGEgYmFkIGFzc3VtcHRpb24gYW5kIGl0IGVuZHMgdXAgYWZmZWN0aW5nIG91ciBzeXN0ZW0gYWR2ZXJzZWx5LiBUaHVzLCBpdCBiZWNvbWVzIG91ciBqb2IgdG8ga2VlcCB0aGlzIGZhbGxhY3kgaW4gbWluZCBhbmQgbm90IGZvcmdldCB0aGF0IHRoZSBuZXR3b3JrIGNhbm5vdCBiZSByZWxpZWTCoHVwb24uPC9wPjxwPk5vdywgYmVmb3JlIHdlIGdldCB0b28gbXVjaCBmdXJ0aGVyIGludG8gbmV0d29ya3PigIrigJTigIpub3QgdG8gbWVudGlvbiB0aGUgZmFsbGFjaWVzIGFzc29jaWF0ZWQgd2l0aCB0aGVt4oCK4oCU4oCKdGhlcmUgYXJlIHNvbWUgaW1wb3J0YW50IHRlcm1zIGZvciB1cyB0byBsZWFybi4gV2hlbiB3ZSB0YWxrIGFib3V0IG1lc3NhZ2VzIGJlaW5nIHNlbnQgdGhyb3VnaCBhIG5ldHdvcmssIHdl4oCZcmUgdXN1YWxseSByZWZlcnJpbmcgdG8gZGF0YSBiZWluZyBzZW50IGFjcm9zcyB0aGUgbmV0d29yay4gQnV0IHdlIGNhbiB0YWxrIGFib3V0IGRhdGEgYW5kIHRoZSB3YXkgaXQgaXMgc2VudCBpbiB0d28gZGlmZmVyZW50IHdheXM6IGxhdGVuY3kgYW5kIGJhbmR3aWR0aC48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpxZFV3M0Fra3dsX1lPWjJBbmx2VC1nLmpwZWciIC8+PGZpZ2NhcHRpb24+TGF0ZW5jeSB2ZXJzdXMgYmFuZHdpZHRoPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPjxzdHJvbmc+PGVtPkxhdGVuY3k8L2VtPjwvc3Ryb25nPiBpcyB0aGUgbWVhc3VyZSBvZiBob3cgPGVtPmRlbGF5ZWQ8L2VtPiBzb21lIGRhdGEgaXMgdG8gYXJyaXZlLCBiYXNlZCBvbiB3aGVyZXZlciBpdCB3YXMgc2VudC4gV2UgY2FuIHRoaW5rIG9mIGxhdGVuY3kgYXMgdGhlIHNwZWVkIGF0IHdoaWNoIG91ciBkYXRhIHRyYXZlbHMgZnJvbSBvbmUgcGxhY2UgdG8gYW5vdGhlciwgb3IgaG93IGxvbmcgaXQgdGFrZXMgZm9yIHRoZSBkYXRhIHRvIGFycml2ZSBmcm9tIG5vZGUgQSB0byBub2RlIEIgaW4gb3VyIHN5c3RlbS4gTGF0ZW5jeSBpcyBhIGNvbmNlcHQgdGhhdCBtYW55IGRldmVsb3BlcnMgbWF5IGFscmVhZHkgYmUgcXVpdGUgZmFtaWxpYXIgd2l0aCwgYmVjYXVzZSB3ZSBvZnRlbiByZWZlciB0byB0aGUgbGF0ZW5jeSBvZiBkYXRhIGluIHRoZSBjb250ZXh0IG9mIG1pbGxpc2Vjb25kcy4gRm9yIGV4YW1wbGUsIGlmIGl0IHRvb2sgYSByZXF1ZXN0IDQwMCBtaWxsaXNlY29uZHMgdG8gYmUgc2VydmVkIGZyb20gYSBzZXJ2ZXIgKG5vZGUgQSkgdG8gYSBjbGllbnQgKG5vZGUgQiksIHdlIGNhbiBzYXkgdGhhdCB0aGUgbGF0ZW5jeSBvZiB0aGF0IGRhdGEgYmVpbmcgc2VudCB3YXMgZGVsYXllZCBieSA0MDAgbWlsbGlzZWNvbmRzLCBvciB0aGF0IGl0IHRvb2sgMC40IHNlY29uZHMgZm9yIHRoZSBtZXNzYWdlIHRyYXZlbCBmcm9tIHRoZSBzZXJ2ZXIgdG8gdGhlIGNsaWVudC4gTWFueSBwZXJmb3JtYW5jZS1taW5kZWQgZGV2ZWxvcGVycyBhcmUgb2Z0ZW4gdGhpbmtpbmcgb2YgbGF0ZW5jeSB3aGVuIHRoZXkgY29uc2lkZXIgd2hhdCB0byBvcHRpbWl6ZSBvciBpbXByb3ZlIGluIHRoZWlyIGFwcGxpY2F0aW9ucyBvcsKgc3lzdGVtcy48L3A+PHA+PHN0cm9uZz48ZW0+QmFuZHdpZHRoPC9lbT48L3N0cm9uZz4sIG9uIHRoZSBvdGhlciBoYW5kLCBpcyBhIG1lYXN1cmUgb2YgaG93IG11Y2ggZGF0YSBjYW4gYmUgc2VudCBmcm9tIG9uZSBwb2ludCB0byBhbm90aGVyIGluIGEgY2VydGFpbiBwZXJpb2Qgb2YgdGltZS4gV2Ugb2Z0ZW4gdGFsayBhYm91dCBiYW5kd2lkdGggaW4gdGhlIGNvbnRleHQgb2YgaW50ZXJuZXQgc3BlZWQgKGZvciBleGFtcGxlLCBtZWdhYml0cyBwZXIgc2Vjb25kIG9yIE1icHMpIGJlY2F1c2Ugd2XigJlyZSByZWZlcnJpbmcgdG8gaG93IG11Y2ggZGF0YSBjYW4gYmUgc2VudCBvdmVyIG91ciBzcGVjaWZpYyBuZXR3b3JrLCBvciB0aGUgY2FwYWNpdHkgb2Ygb3VyIG5ldHdvcmsgdG8gc2VuZCBzb21lIGFtb3VudCBvZiBkYXRhIGluIGEgZ2l2ZW4gc3BhbiBvZsKgdGltZS48L3A+PHA+V2hpbGUgbGF0ZW5jeSBpcyB0aGUgYWN0dWFsIHNwZWVkIGF0IHdoaWNoIGRhdGEgZ2V0cyB0byBpdHMgZGVzdGluYXRpb24gdmlhIHRoZSBuZXR3b3JrLCBiYW5kd2lkdGggaXMgdGhlIGNhcGFjaXR5IG9mIG5ldHdvcmsgdG8gc2VuZCBhIGNlcnRhaW4gYW1vdW50IG9mIGRhdGEgdG8gaXRzIGRlc3RpbmF0aW9uLiBVbmRlcnN0YW5kaW5nIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlc2UgdHdvIGNvbmNlcHRzIGlzIGltcG9ydGFudCB0byB3cmFwcGluZyBvdXIgaGVhZHMgYXJvdW5kIHRoZSBzZWNvbmQgYW5kIHRoaXJkIGZhbGxhY2llcywgc28gbGV04oCZcyBsZWFybiBhYm91dCB0aG9zZSB0d2/CoG5leHQhPC9wPjxoND5Tb21lIGZhbGxhY2llcyBodXJ0IG1vcmUgdGhhbsKgb3RoZXJzPC9oND48cD5Ob3cgdGhhdCB3ZSBrbm93IHdoYXQg4oCcbGF0ZW5jeeKAnSBhY3R1YWxseSBtZWFucywgd2UgYXJlIGJldHRlciBlcXVpcHBlZCB0byB1bmRlcnN0YW5kIGZhbGxhY3kgdHdvOiA8c3Ryb25nPkxhdGVuY3kgaXMgemVybzwvc3Ryb25nPi4gVW5mb3J0dW5hdGVseSwgdGhpcyBpcyBhbHNvIGEgbWlzY29uY2VwdGlvbi48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpidGVTazQ4aklPQUx2eU0xWE5POFdnLmpwZWciIC8+PGZpZ2NhcHRpb24+RmFsbGFjeSAjMjogTGF0ZW5jeSBpcyB6ZXJvIChpdCBpc8Kgbm90KS48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+VGhpcyBpcyBwZXJoYXBzIGFuIGVhc3kgZmFsbGFjeSB0byBmYWxsIHByZXkgdG8gc2luY2UsIGluIG91ciBsb2NhbCBlbnZpcm9ubWVudHMgb3IgaW4gdGhlIGRldmVsb3BtZW50IGVudmlyb25tZW50LCB3ZSBtYXkgZXhwZXJpZW5jZSBhIG11Y2ggbG93ZXIgbGF0ZW5jeTsgaW4gb3RoZXIgd29yZHMsIHdlIGxpa2VseSBleHBlcmllbmNlIGEgc2hvcnQgYW1vdW50IG9mIGRlbGF5IHRpbWUgd2hlbiBpdCBjb21lcyB0byBzZW5kaW5nIG9yIHJlY2VpdmluZyBkYXRhLiBIb3dldmVyLCB0aGF0IGxvdyBsb2NhbCBsYXRlbmN5IGRvZXNu4oCZdCBhY2N1cmF0ZWx5IHJlZmxlY3QgdGhlIGRlbGF5IG9mIHdoYXQgb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbSBtaWdodCBmZWVs4oCK4oCU4oCKZXNwZWNpYWxseSBnaXZlbiBkaWZmZXJlbnQgbmV0d29ya3MuPC9wPjxwPldl4oCZdmUgPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9zY2FsYWJpbGl0eS1wcm9ibGVtcy1oaWRkZW4tY2hhbGxlbmdlcy1vZi1ncm93aW5nLWEtc3lzdGVtLWY3NDMxM2IwNjNjMyI+YWxyZWFkeSBsZWFybmVkIGFib3V0PC9hPiBsb2NhbC1hcmVhIG5ldHdvcmtzIChMQU4pIGFuZCB3aWRlLWFyZWEgbmV0d29ya3MgKFdBTikuIFdlIGtub3cgdGhhdCBpbiBhIFdBTiwgZGF0YSBoYXMgdG8gdHJhdmVsIGZ1cnRoZXIgZnJvbSBvbmUgbm9kZSB0byBhbm90aGVyLCBzaW5jZSB0aGUgbmV0d29yayBtYXkgc3BhbiBsYXJnZSBnZW9ncmFwaGljYWwgZGlzdGFuY2VzLiBUaGlzIGlzIGluIGNvbnRyYXN0IHRvIGEgTEFOLCB3aGljaCBpcyBhIG5ldHdvcmsgd2l0aCBkZXZpY2VzIGluIHRoZSBzYW1lIGJ1aWxkaW5nIG9yIHJvb20sIGFuZCB0aHVzIHRoZSBkYXRhIGJlaW5nIHNlbnQgYXJvdW5kIGhhcyBtdWNoIGxlc3Mgb2YgYSBkaXN0YW5jZSB0b8KgdHJhdmVsLjwvcD48cD5XZSBjYW5ub3QgYXNzdW1lIHRoYXQgb3VyIHN5c3RlbSB3aWxsIGFsd2F5cyBvcGVyYXRlIG9uIGEgbG9jYWwtYXJlYSBuZXR3b3JrIChpbiBmYWN0LCBtb3N0IGRpc3RyaWJ1dGVkIHN5c3RlbXMgb3BlcmF0ZSBvbiBhIFdBTiksIGFuZCB0aHVzIHdlIGtub3cgdGhhdCBvdXIgZGF0YSBoYXMgYSBwaHlzaWNhbCBkaXN0YW5jZSB0byB0cmF2ZWwuIEJ5IHByb3h5LCB3ZSBzaG91bGQgbm90IGFzc3VtZSB0aGF0IHRoZXJlIHdpbGwgYmUgbm8g4oCcZGVsYXnigJ0gb3IgemVybyBsYXRlbmN5IGJldHdlZW4gc29tZSBkYXRhIGJlaW5nIHNlbnQgYW5kIHRoYXQgZGF0YSBiZWluZyByZWNlaXZlZC4gRm9yIGV4YW1wbGUsIGEgcmVxdWVzdCB0aGF0IGhhcyB0byB0cmF2ZWwgYWNyb3NzIHRoZSB3b3JsZCBmcm9tIFBvcnRsYW5kIHRvIFBhcmlzIHdpbGwgaGF2ZSBtb3JlIGxhdGVuY3kgdGhhbiBhIHJlcXVlc3QgdHJhdmVsaW5nIGZyb20gYSBtYWNoaW5lIGluIG9uZSByb29tIHRvwqBhbm90aGVyLjwvcD48YmxvY2txdW90ZT5Tb21lIGxhdGVuY3kgaXMgYSBsaW1pdGF0aW9uIG9mIG5ldHdvcmtzOyB3ZSBzaG91bGQgYmUgd2lzZSB0byBub3QgYnVpbGQgYSBzeXN0ZW0gdGhhdCBhc3N1bWVzIHRoYXQgc3VjaCBhIGRlbGF5IGlzIG5vbmV4aXN0ZW50LiBXZSB3aWxsIGNlcnRhaW5seSBiZSBiaXR0ZW4gYnkgc3VjaCBhIGZhbHNlIGFzc3VtcHRpb24gaW4gdGhlwqBmdXR1cmUuPC9ibG9ja3F1b3RlPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqbm5XNVlvdllKQjc4NE56VktoQndGUS5qcGVnIiAvPjxmaWdjYXB0aW9uPkZhbGxhY3kgIzM6IEJhbmR3aWR0aCBpcyBpbmZpbml0ZSAoaXQgaXPCoG5vdCkuPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPlRoZSB0aGlyZCBmYWxsYWN5IGlzIHNpbWlsYXIgdG8gdGhpcyBmYWxzZSBhc3N1bXB0aW9uIGFzIHdlbGw6IDxzdHJvbmc+QmFuZHdpZHRoIGlzIGluZmluaXRlLjwvc3Ryb25nPiBKdXN0IGFzIGxhdGVuY3kgaXMgbm90IHplcm8sIHRoZSBjYXBhY2l0eSBvZiBhIG5ldHdvcmsgdG8gc2VuZCBkYXRhIGlzIG5vdCB1bmxpbWl0ZWQuIEFzIGNvbXB1dGluZyB0ZWNobm9sb2d5IGhhcyBpbXByb3ZlZCBvdmVyIHRoZSB5ZWFyc+KAiuKAlOKAimFuZCBjZXJ0YWlubHkgc2luY2UgdGhlIGVhcmx5IDkw4oCZcyB3aGVuIHRoZSBGYWxsYWNpZXMgd2VyZSBjb2luZWTigIrigJTigIp0aGUgYmFuZHdpZHRoIG9mIG91ciBuZXR3b3JrcyBrZWVwcyBnZXR0aW5nIGJldHRlciBhbmQgYmV0dGVyLCBhbmQgd2XigJlyZSBhYmxlIHRvIHNlbmQgbW9yZSBkYXRhIGFjcm9zcyBvdXIgZGF0YSBpbiBhIGdpdmVuIGFtb3VudCBvZsKgdGltZS48L3A+PHA+SG93ZXZlciwgZXZlbiB3aXRoIHRoZXNlIGltcHJvdmVtZW50cywgbmV0d29ya3Mgc3RpbGwgZG9u4oCZdCBoYXZlIDxlbT51bmxpbWl0ZWQ8L2VtPiBjYXBhY2l0eSBhbmQgY2Fubm90IHNlbmQgaW5maW5pdGVseSBsYXJnZSBhbW91bnRzIG9mIGRhdGEuIFdoZW4gd2UgZGVzaWduIGEgZGlzdHJpYnV0ZWQgc3lzdGVtLCBpdCB3b3VsZCBiZWhvb3ZlIHVzIHRvIG5vdCBhc3N1bWUgdGhhdCBhbnkgYW1vdW50IG9mIGRhdGEgY2FuIGJlIHNlbnQgYWNyb3NzIHRoZSBuZXR3b3JrLiBGb3IgZXhhbXBsZSwgd2UgbWF5IGhhdmUgc29tZSB1c2VyIG9mIG91ciBzeXN0ZW0gdGhhdCBoYXMgYSBuZXR3b3JrIHdpdGggYSBsaW1pdGVkIGJhbmR3aWR0aCBhbmQgYSBsb3dlciBjYXBhY2l0eTsgZm9yIHRoYXQgdXNlcuKAmXMgZXhwZXJpZW5jZSwgc2VuZGluZyBhIGxhcmdlIGFtb3VudCBvZiBkYXRhIChzdWNoIGFzIGxhcmdlIGltYWdlcyBvciB2ZW5kb3JlZCwgZGVwZW5kZW50IGZpbGVzKSB3b3VsZCBtZWFuIHRoYXQgd2XigJlkIGJlIHNlbmRpbmcgZmFyIG1vcmUgZGF0YSB0aGFuIHRoZWlyIG5ldHdvcmsgd2FzIGNhcGFibGUgb2Ygc2VuZGluZyBvdmVyIHRoZSBuZXR3b3JrIGluIGEgcmVhc29uYWJsZSBhbW91bnQgb2bCoHRpbWUuPC9wPjxwPkZpbmFsbHksIHdlIGNvbWUgdG8gZmFsbGFjeSBmb3VyLCB3aGljaCBpcyBwZXJzb25hbGx5IGp1c3QgbXkgZmF2b3JpdGUgb25lOiA8c3Ryb25nPlRoZSBuZXR3b3JrIGlzIHNlY3VyZS48L3N0cm9uZz4gVGhlcmUgYXJlIGp1c3Qgc2ltcGxlIHNvIG1hbnkgd2F5cyB0aGF0IGEgbmV0d29yayBjYW4gYmUgYXR0YWNrZWQgb3IgY29tcHJvbWlzZWQsIGZyb20gdW5lbmNyeXB0ZWQgbWVzc2FnZXMgdG8gdnVsbmVyYWJpbGl0aWVzIGluIGRlcGVuZGVuY2llcyB0byBvcGVuIHNvdXJjZSBjb2RlLCBvciBldmVuIGp1c3QgYnVncyBpbiB0aGlyZC1wYXJ0eSBzb2Z0d2FyZXMgdGhhdCBvdXIgc3lzdGVtIG1pZ2h0IGRlcGVuZCBvbiAobm90IHRvIG1lbnRpb24gYnVncyBpbiBvdXIgb3duIHN5c3RlbXMswqB0b28hKS48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpPX29rQ3QwR1hKbWhQTTcxQ2FLTGhnLmpwZWciIC8+PGZpZ2NhcHRpb24+RmFsbGFjeSAjNDogVGhlIG5ldHdvcmsgaXMgc2VjdXJlIChpdCBERUZJTklURUxZIGlzwqBub3QhKS48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+VGhlIG1pc2NvbmNlcHRpb24gdGhhdCB0aGUgbmV0d29yayBpcyDigJxzZWN1cmXigJ0gaXMgYSBoYXJkIG9uZSB0byBvdmVyY29tZSwgc2luY2UsIGlmIHdlIHJlYWxseSBzdGFydCB0byB0aGluayBhYm91dCBpdCwgbm8gbmV0d29yayBpcyByZWFsbHkgc2VjdXJlLiBJbmRlZWQsIHRoZSBvbmx5IHdheSB0byB0cnVseSBwcm90ZWN0IG91ciBuZXR3b3JrcyBhbmQgYmUgMTAwJSBzZWN1cmUgaXMgdG8ganVzdCBub3QgY29ubmVjdCB0byB0aGUgbmV0d29yayEgT2YgY291cnNlLCBiZWNhdXNlIHdlIGFyZSBkZWFsaW5nIHdpdGggZGlzdHJpYnV0ZWQgc3lzdGVtc+KApnRoaXMgaXNu4oCZdCByZWFsbHkgZWFzeSB0byBkbywgc2luY2Ugd2Uga25vdyB0aGF0IGEgbmV0d29yayBpcyByZXF1aXJlZCBmb3IgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIG5vZGVzIGluIG91csKgc3lzdGVtLjwvcD48cD5Tbywgd2hhdCBhcmUgd2UgdG8gZG8/IFdlbGwsIHdlIGNhbiB0cnkgdG8gcmVtZW1iZXIgdGhhdCA8ZW0+dHJ1ZTwvZW0+IHNlY3VyaXR5IGlzIGEgZmFsbGFjeSwgYW5kIHRoYXQgd2UgY2FuIGp1c3QgZG8gd2hhdCBpcyBpbiBvdXIgcG93ZXIgdG8gdHJ5IHRvIHByZXZlbnQgYnJlYWNoZXMgYW5kIGF0dGFja3Mgd2hlbiB3ZSBkZXNpZ24sIGJ1aWxkLCBhbmQgdGVzdCBvdXIgc3lzdGVtcy4gSG9wZWZ1bGx5LCBhdCBsZWFzdCB0aGF04oCZbGwga2VlcCB0aGUgc2VjdXJpdHkgaXNzdWVzIGF0IGJheSBmb3LCoGF3aGlsZS48L3A+PHA+SW4gcGFydCB0d28gb2YgdGhpcyBwb3N0LCB3ZeKAmWxsIGxvb2sgYXQgdGhlIHJlbWFpbmluZyBmb3VyIGZhbGxhY2llcy4gSSBwcm9taXNlIHRoYXQgdGhlIHNhZCBsaXR0bGUgYmx1ZSBuZXR3b3JrIGJsb2Igd2lsbCBtYWtlIGEgcmV0dXJuIGFwcGVhcmFuY2UhIFdl4oCZcmUgbm90IGRvbmUgd2l0aCBpdCBqdXN0wqB5ZXQuPC9wPjxoND5SZXNvdXJjZXM8L2g0PjxwPlRoZSBmYWxsYWNpZXMgb2YgZGlzdHJpYnV0ZWQgY29tcHV0aW5nIGhhdmUgYmVlbiBmYWlybHkgd2VsbC13cml0dGVuIGFib3V0LCBhbmQgeW91IGNhbiBmaW5kIHNvbWUgZ29vZCByZXNvdXJjZXMgb24gZGlmZmVyZW50IGludGVycHJldGF0aW9ucyBvZiB0aGVtLCBmb3IgZGlmZmVyZW50IHRlY2hub2xvZ2llcy4gSWYgeW914oCZcmUgY3VyaW91cyB0byBsZWFybiBtb3JlLCBjaGVjayBvdXQgdGhlIHJlc291cmNlcyBiZWxvdyE8L3A+PG9sPjxsaT48YSBocmVmPSJodHRwczovL3d3dy5yZ29hcmNoaXRlY3RzLmNvbS9GaWxlcy9mYWxsYWNpZXMucGRmIj5GYWxsYWNpZXMgb2YgRGlzdHJpYnV0ZWQgQ29tcHV0aW5nIEV4cGxhaW5lZDwvYT4sIEFybm9uIFJvdGVtLUdhbC1PejwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnNpbXBsZW9yaWVudGVkYXJjaGl0ZWN0dXJlLmNvbS84LWZhbGxhY2llcy1vZi1kaXN0cmlidXRlZC1zeXN0ZW1zLyI+VW5kZXJzdGFuZGluZyB0aGUgOCBmYWxsYWNpZXMgb2YgRGlzdHJpYnV0ZWQgU3lzdGVtczwvYT4sIFZpY3RvcsKgQ2hpcmN1PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9tdWx0aW1lZGlhLnRlbG9zLmNvbS9ibG9nL2RlYnVua2luZy10aGUtOC1mYWxsYWNpZXMtb2YtZGlzdHJpYnV0ZWQtc3lzdGVtcy1wYXJ0LTIvIj5EZWJ1bmtpbmcgdGhlIDggRmFsbGFjaWVzIG9mIERpc3RyaWJ1dGVkIFN5c3RlbXM8L2E+LCBSYW1pbMKgQWxmb25zbzwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3BsYXlsaXN0P2xpc3Q9UEwxRFpxZVZ3UkxuRDNFanljaVlBTzgyZFQ5T3dpcThJNSI+RmFsbGFjaWVzIG9mIERpc3RyaWJ1dGVkIFN5c3RlbXM8L2E+LCBVZGnCoERhaGFuPC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9ibG9nLm5ld3JlbGljLmNvbS9lbmdpbmVlcmluZy90aGUtZmFsbGFjaWVzLW9mLWRpc3RyaWJ1dGVkLWNvbXB1dGluZy1yZWJvcm4tdGhlLWNsb3VkLWVyYSI+VGhlIEZhbGxhY2llcyBvZiBEaXN0cmlidXRlZCBDb21wdXRpbmcgUmVib3JuOiBUaGUgQ2xvdWQgRXJhPC9hPiwgQnJpYW7CoERvbGw8L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3Mi5zeXMtY29uLmNvbS9pdHNnL3ZpcnR1YWxjZC9qYXZhL2FyY2hpdmVzLzA5MDEvaW5ncmlkL2luZGV4Lmh0bWwiPkRldXRzY2jigJlzIEZhbGxhY2llcywgMTAgWWVhcnMgQWZ0ZXI8L2E+LCBJbmdyaWQgVmFuIERlbsKgSG9vZ2VuPC9saT48L29sPjxpbWcgc3JjPSJodHRwczovL21lZGl1bS5jb20vXy9zdGF0P2V2ZW50PXBvc3QuY2xpZW50Vmlld2VkJnJlZmVycmVyU291cmNlPWZ1bGxfcnNzJnBvc3RJZD0xYjM1YzNiODViNTMiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGFsdD0iIj48aHI+PHA+PGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9mb3JhZ2luZy1mb3ItdGhlLWZhbGxhY2llcy1vZi1kaXN0cmlidXRlZC1jb21wdXRpbmctcGFydC0xLTFiMzVjM2I4NWI1MyI+Rm9yYWdpbmcgZm9yIHRoZSBGYWxsYWNpZXMgb2YgRGlzdHJpYnV0ZWQgQ29tcHV0aW5nIChQYXJ0IDEpPC9hPiB3YXMgb3JpZ2luYWxseSBwdWJsaXNoZWQgaW4gPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2VkcyI+YmFzZWRzPC9hPiBvbiBNZWRpdW0sIHdoZXJlIHBlb3BsZSBhcmUgY29udGludWluZyB0aGUgY29udmVyc2F0aW9uIGJ5IGhpZ2hsaWdodGluZyBhbmQgcmVzcG9uZGluZyB0byB0aGlzIHN0b3J5LjwvcD5dXT48L2NvbnRlbnQ6ZW5jb2RlZD4KICAgICAgICA8L2l0ZW0+CiAgICAgICAgPGl0ZW0+CiAgICAgICAgICAgIDx0aXRsZT48IVtDREFUQVtXZWVkaW5nIE91dCBEaXN0cmlidXRlZCBTeXN0ZW0gQnVnc11dPjwvdGl0bGU+CiAgICAgICAgICAgIDxsaW5rPmh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvd2VlZGluZy1vdXQtZGlzdHJpYnV0ZWQtc3lzdGVtLWJ1Z3MtMjhhMDFlMzdmNzBjP3NvdXJjZT1yc3MtOGY1NTk5M2M5NzNlLS0tLS0tMjwvbGluaz4KICAgICAgICAgICAgPGd1aWQgaXNQZXJtYUxpbms9ImZhbHNlIj5odHRwczovL21lZGl1bS5jb20vcC8yOGEwMWUzN2Y3MGM8L2d1aWQ+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtkaXN0cmlidXRlZC1zeXN0ZW1zXV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW3Byb2dyYW1taW5nXV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW2NvbXB1dGVyLXNjaWVuY2VdXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbc29mdHdhcmUtZGV2ZWxvcG1lbnRdXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbY29kZV1dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxkYzpjcmVhdG9yPjwhW0NEQVRBW1ZhaWRlaGkgSm9zaGldXT48L2RjOmNyZWF0b3I+CiAgICAgICAgICAgIDxwdWJEYXRlPldlZCwgMDUgSnVuIDIwMTkgMTI6MzE6MDAgR01UPC9wdWJEYXRlPgogICAgICAgICAgICA8YXRvbTp1cGRhdGVkPjIwMTktMDYtMDVUMTI6MzE6MDAuOTIwWjwvYXRvbTp1cGRhdGVkPgogICAgICAgICAgICA8Y29udGVudDplbmNvZGVkPjwhW0NEQVRBWzxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqZWhudWMzVW1zR0pRVDNkRkRzVE02US5qcGVnIiAvPjxmaWdjYXB0aW9uPldlZWRpbmcgb3V0IGRpc3RyaWJ1dGVkIHN5c3RlbcKgYnVnczwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5BcyB3ZeKAmXZlIGxlYXJuZWQgbW9yZSBhbmQgbW9yZSBhYm91dCBkaXN0cmlidXRlZCBzeXN0ZW1zLCB3ZeKAmXZlIHNlZW4gdGhlIG1hbnkgd2F5cyB0aGF0IHRoaW5ncyBjYW4gd3JvbmcuIE1vcmUgc3BlY2lmaWNhbGx5LCB3ZeKAmXZlIHNlZW4gdGhhdCB0aGVyZSBhcmUganVzdCA8ZW0+c28gbWFueSA8L2VtPnBvc3NpYmxlIHNjZW5hcmlvczxlbT4gPC9lbT5pbiB3aGljaCBhIHBvcnRpb24gb2YgYSBsYXJnZSBvciBzeXN0ZW0gY2FuwqBmYWlsLjwvcD48cD5TaW5jZSBmYWlsdXJlIGlzIGluZXZpdGFibGUgaW4gYW55IHNpemVkIHN5c3RlbSwgd2Ugb3VnaHQgdG8gZG8gb3Vyc2VsdmVzIGEgZmFpbHVyZSBhbmQgYmV0dGVyIHVuZGVyc3RhbmQgaXQuIFNvIGZhciwgd2XigJl2ZSBiZWVuIHRhbGtpbmcgYWJvdXQgZGlmZmVyZW50IGtpbmRzIG9mIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvZmFudGFzdGljLWZhdWx0cy1hbmQtd2hhdC10by1jYWxsLXRoZW0tNTZkOTFhMWIxOThjIj5mYXVsdHM8L2E+IGFuZCA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL21vZGVzLW9mLWZhaWx1cmUtcGFydC0xLTY2ODc1MDRiZmVkNiI+ZmFpbHVyZXM8L2E+IGluIGEgZmFpcmx5IGFic3RyYWN0IHNlbnNlLiBJdOKAmXMgdGltZSBmb3IgdXMgdG8gZ2V0IGEgbGl0dGxlIG1vcmUgY29uY3JldGUsIGhvd2V2ZXIuIFN1cmUsIHdlIHZhZ3VlbHkgdW5kZXJzdGFuZCB0aGUgZGlmZmVyZW50IGZsYXZvcnMgYW5kIHByb2ZpbGVzIG9mIGhvdyB0aGluZ3MgY2FuIGdvIHdyb25nIHdpdGhpbiBhIHN5c3RlbSwgYW5kIHdoeSB0aGV5IGFyZSBwcm9ibGVtYXRpYyAoeWV0IGluZXZpdGFibGUpIHdpdGhpbiBvdXIgc3lzdGVtLiBCdXQgaG93IGNhbiB3ZSBzdGFydCB0byB1bmRlcnN0YW5kIHRoZXNlIGZsYXdzIGluIGEgc3lzdGVtIGluIGEgbW9yZSB0YW5naWJsZcKgZm9ybT88L3A+PHA+SW4gb3JkZXIgdG8gZG8gdGhhdCwgd2UgbmVlZCB0byB0aGluayBtb3JlIGRlZXBseSBhYm91dCB0aGUgZGlmZmVyZW50IHdheXMgaW4gd2hpY2ggZmFpbHVyZXMgcHJlc2VudCB0aGVtc2VsdmVzIHRvIHVzIGluIHRoZSBzeXN0ZW1zIHRoYXQgd2UgYWxsIGRlYWwgd2l0aCBldmVyeSBkYXksIGFzIGJvdGggY29uc3VtZXJzIGFuZCBjcmVhdG9ycyBvZiBzb2Z0d2FyZS4gRm9yIG1vc3Qgb2YgdXMsIGZhaWx1cmVzIGluIG91ciBzeXN0ZW1zIHByZXNlbnQgdGhlbXNlbHZlcyBhcyBidWdzLiBUaGUgd2F5cyBpbiB3aGljaCBhIGJ1ZyBtaWdodCA8ZW0+YXBwZWFyIDwvZW0+dG8gdXMsIGhvd2V2ZXIsIGNhbiBtYWtlIGFsbCB0aGUgZGlmZmVyZW5jZSBpbiBob3cgd2UgYXJlIGFibGUgdG8gdW5kZXJzdGFuZCBpdCBpbiBhIG1vcmUgY29uY3JldGXCoHdheS48L3A+PHA+U28gd2hhdCBraW5kcyBvZiBidWdzIGRvIHdlIGRlYWwgd2l0aCwgZXhhY3RseSwgYW5kIGhvdyBkbyB0aGV5IGltcGFjdCB0aGUgZmFpbHVyZXMgb2YgYSBkaXN0cmlidXRlZCBzeXN0ZW0/IFdlbGwsIHRoYXTigJlzIHRoZSBteXN0ZXJ5IHdl4oCZcmUgYWJvdXQgdG/CoHNvbHZlITwvcD48aDQ+KEhhcmR3YXJlKSBmYWlsdXJlcyBvZiB0aGXCoHBhc3Q8L2g0PjxwPkJlZm9yZSB3ZSBkaXZlIGludG8gaWRlbnRpZnlpbmcgdGhlIGJ1Z3Mgb2YgdG9kYXksIGxldOKAmXMgdGFrZSBhIHF1aWNrIGRldG91ciBpbnRvIHRoZSBwYXN0LiBJdOKAmXMgZWFzeSB0byBnZXQgb3ZlcndoZWxtZWQgd2hlbiB0aGlua2luZyBhYm91dCBmYWlsdXJlcyBhbmQgZmF1bHRzIGluIGEgc3lzdGVtLCBzbyBiZWZvcmUgd2UgZ2V0IHRvbyBkZWVwIGludG8gdGhlIHRyZW5jaGVzLCB3ZSBvdWdodCB0byB0YWtlIGEgbW9tZW50IHRvIHNlZSBob3cgdGhlIGxhbmRzY2FwZSBvZiBidWdzIGluIGNvbXB1dGluZyBoYXZlIGNoYW5nZWQgb3ZlciB0aGXCoHllYXJzLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKkhhRUZpLXlDYUJMRS1DamJHanNoRGcuanBlZyIgLz48ZmlnY2FwdGlvbj5XaGF0IGlzIGhhcmR3YXJlIHJlbGlhYmlsaXR5PzwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5VbnRpbCB0aGUgMTk4MOKAmXMsIHRoZSBtYWpvciBmb2N1cyBvZiBjb21wdXRpbmcgd2FzIGFyb3VuZCBoYXJkd2FyZS4gTW9yZSBzcGVjaWZpY2FsbHksIG11Y2ggb2YgdGhlIGZpZWxkIHdhcyBmb2N1c2VkIG9uIGhvdyB0byBtYWtlIGhhcmR3YXJlIGp1c3QgZ2VuZXJhbGx5IDxlbT5iZXR0ZXI8L2VtPi4gVGhpcyB3YXMgc2ltcGx5IGJlY2F1c2UgaGFyZHdhcmUgd2FzIHRoZSBtYWpvciBsaW1pdGluZyBmYWN0b3IgaW4gbWFueSB3YXlzLiBGb3IgZXhhbXBsZSwgaWYgd2Ugd2FudGVkIHRvIG1ha2UgYSBtYWNoaW5lIGZhc3RlciBhbmQgbW9yZSBwZXJmb3JtYW50IGJhY2sgdGhlbiwgd2UgbmVlZGVkIGJpZ2dlciBoYXJkd2FyZTsgdGhhdCB3YXMgdGhlIG9ubHkgd2F5IHRvIGhhdmUgZW5vdWdoIHNwYWNlIGZvciBhbGwgdGhlIGNpcmN1aXRzIHdlIG5lZWRlZCEgQW5kIGlmIHdlIHdhbnRlZCBtb3JlIGNpcmN1aXRz4oCK4oCU4oCKd2hpY2ggd2VyZSBlYWNoIGFscmVhZHkgcHJldHR5IGxhcmdlIGFuZCBsb2Z0eSBpbiBzaXplIOKAlHRoZW4gd2UgYWxzbyBuZWVkZWQgdG8gYmUgcHJlcGFyZWQgZm9yIHRoZW0gdG8gdXNlIGEgbG90IG9mIHBvd2VyIGFuZCBleHVkZSBhIGxvdCBvZiBlbmVyZ3kgYW5kwqBoZWF0LjwvcD48cD5UaGVzZSBpc3N1ZXMgYmVnaW4gdG8gaGlnaGxpZ2h0IHNvbWUgb2YgdGhlIGNsZWFyIHBvc3NpYmxlIGZhdWx0cyB0aGF0IGNvdWxkIGhhdmUgcG9wcGVkIHVwIHdpdGhpbiBhIHN5c3RlbSBqdXN0IGEgZmV3IGRlY2FkZXMgYWdvLiBBcyA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL2ZhbnRhc3RpYy1mYXVsdHMtYW5kLXdoYXQtdG8tY2FsbC10aGVtLTU2ZDkxYTFiMTk4YyI+d2UgYWxyZWFkeSBrbm93PC9hPiwgaGFyZHdhcmUgZmF1bHRz4oCK4oCU4oCKc3VjaCBhcyBhIGNpcmN1aXQgb3ZlcmhlYXRpbmcsIG9yIGEgbmV0d29yayB3aXJpbmcgaXNzdWUgY2F1c2luZyBhIHdpZGVzcHJlYWQgb3V0YWdl4oCUYXJlIHdoYXQgbGVhZCB0byBoYXJkd2FyZSBmYWlsdXJlcy4gSWYgYW55IGFzcGVjdCBvZiB0aGUgaGFyZHdhcmUgZmFpbHMsIHRoZW4gdGhhdCBmYWlsdXJlIHdpbGwgbGlrZWx5IGNhdXNlIHNvbWUgZm9ybSBvZiBkb3dudGltZSBpbiBhIHN5c3RlbSwgd2hpY2ggd2Uga25vdyA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL3JlYWR5LWFuZC1hdmFpbGFibGUtZGlzdHJpYnV0ZWQtc3lzdGVtcy0xNjEwMjNhY2EzNzgiPm1ha2VzIGEgc3lzdGVtIGxlc3MgcmVsaWFibGU8L2E+LiBVbnRpbCB0aGUgODDigJlzLCBoYXJkd2FyZSBmYXVsdHMgd2VyZSB2ZXJ5IG11Y2ggYSByZWFsIGFuZCBjb21tb27CoHByb2JsZW0uPC9wPjxwPkJ1dCB0aGVzZSBkYXlzLCB0aGUgc3RvcnkgaXMgYSBsaXR0bGUgZGlmZmVyZW50LiBXZSBleHBlcmllbmNlIGZhciBsZXNzIGRvd250aW1lIGR1ZSB0byBoYXJkd2FyZSBmYXVsdHMgdGhhbiB3ZSBkaWQganVzdCBmb3J0eSB5ZWFycyBhZ28uIFdlIGhhdmUgbWFueSB5ZWFycyBvZiBjb25jZW50cmF0ZWQgZWZmb3J0IHRoYXQgaGFzIGhlbHBlZCBpbXByb3ZlIHRoZSBoYXJkd2FyZSB3ZSBhbGwgcmVseSB1cG9uIG9uIGEgZGFpbHkgYmFzaXMgbm93ISBJbiB0aGUgcGFzdCB0aHJlZSBkZWNhZGVzLCB0aGUgc2l6ZSBvZiBjaXJjdWl0cyBoYXMgZGVjcmVhc2VkLCBhbGxvd2luZyB1cyB0byBwYWNrIG1vcmUgY2lyY3VpdHMgaW50byBhIHNtYWxsZXIgc3BhY2UsIGFuZCB0aG9zZSBjaXJjdWl0cyBwcm9kdWNlIGxlc3MgaGVhdCwgYW5kIHVzZSBtdWNoIGxlc3MgZW5lcmd5LiBDaXJjdWl0cyBoYXZlIGFsc28gYmVjb21lIGVhc2llciBhbmQgY2hlYXBlciB0byBwcm9kdWNlLCBtYWtpbmcgdGhlbSBtb3JlIGluZXhwZW5zaXZlIGluIGdlbmVyYWwuIFRoaXMgaGFzIGFsc28gYWxsb3dlZCB1cyB0byBjcmVhdGUgc21hbGxlciBkZXZpY2VzLCBsaWtlIGxhcHRvcCBjb21wdXRlcnMsIHRhYmxlcywgYW5kIHNtYXJ0cGhvbmVzLCB0byBtZW50aW9uIGp1c3QgYcKgZmV3LjwvcD48cD5UaGlzIGRvZXNu4oCZdCBtZWFuIHRoYXQgdGhlcmUgYXJlIDxlbT5ubyA8L2VtPmhhcmR3YXJlIHByb2JsZW1zIHdoYXRzb2V2ZXIsIHRob3VnaCEgRXZlbiBzbWFsbCBkZXZpY2VzIHdpdGggc21hbGxlciBjaXJjdWl0cyBpbnNpZGUgb2YgdGhlbSB3aWxsIGV4cGVyaWVuY2UgaGFyZHdhcmUgZmFpbHVyZXMuIE5ldHdvcmsgaXNzdWVzIHRoYXQgY2F1c2UgZG93bnRpbWUgYXJlIHN0aWxsIGxpa2VseSB0byBoYXBwZW4sIGV2ZW4gdGhvdWdoIHRoZSBmcmVxdWVuY3kgd2l0aCB3aGljaCB0aGV5IG9jY3VyIGhhcyBkZWZpbml0ZWx5IGRyb3BwZWQgb2ZmLiBIYXJkd2FyZSBkaXNrcyBhcmUgc3RpbGwgcHJvbmUgdG8gZmFpbHVyZXMsIHdoaWNoIG1ha2VzIGl0IHRyaWNreSB0byByZWFkIChtdWNoIGxlc3Mgd3JpdGUpIGRhdGEgdG8gdGhlbS4gQW5kLCBvZiBjb3Vyc2UsIGp1c3QgYmVjYXVzZSBoYXJkd2FyZSBoYXMgaW1wcm92ZWQgZG9lc27igJl0IG1lYW4gdGhhdCBpdCBkb2VzbuKAmXQgcmVxdWlyZSBtYWludGVuYW5jZSBhbmQgdXBncmFkZXM7IHNpbmNlIHRoZXNlIGFyZSBzdGlsbCByZXF1aXJlbWVudHMsIHRoZXkgd2lsbCBzdGlsbCByZXN1bHQgaW4gcGxhbm5lZCBkb3dudGltZS48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpRbHJfY2lvc0plVnM1ckFuUk1Ndk1BLmpwZWciIC8+PGZpZ2NhcHRpb24+SG93IGhhcyBoYXJkd2FyZcKgY2hhbmdlZD88L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+T3ZlcmFsbCwgaG93ZXZlciwgdGhlIGNoYW5nZXMgd2XigJl2ZSBzZWVuIGluIGhhcmR3YXJlIGhhdmUgYmVlbiBxdWl0ZSBhIG5ldCBwb3NpdGl2ZSBmb3IgY29tcHV0aW5nLiBTbywgaWYgaGFyZHdhcmUgaGFzIGltcHJvdmVk4oCmd2hhdCBlbHNlIGNvdWxkIGJlIGEgY29udHJpYnV0aW5nIGZhY3RvciB0byBmYWlsdXJlcyBpbiBhIGRpc3RyaWJ1dGUgc3lzdGVtPyBXaHksIG91ciBkZWFyIGZyaWVuZCA8ZW0+c29mdHdhcmU8L2VtPiwgb2bCoGNvdXJzZSE8L3A+PGJsb2NrcXVvdGU+RXZlbiBpbiB0aGUgbW9zdCB3ZWxsLXRlc3RlZCBzeXN0ZW1zLCBzb2Z0d2FyZSBmYWlsdXJlcyBhcmUgcmVzcG9uc2libGUgZm9yIGEgc2lnbmlmaWNhbnQgYW1vdW50IG9mIGRvd250aW1lLiBXZSBrbm93IHRoZXNlIOKAnGZhaWx1cmVz4oCdIGJ5IGFub3RoZXIgbmFtZTrCoGJ1Z3MuPC9ibG9ja3F1b3RlPjxwPkltcHJvdmVtZW50cyBpbiBoYXJkd2FyZSBub3R3aXRoc3RhbmRpbmcsIGl0IGlzIGJ1Z3MgaW4gdGhlIHNvZnR3YXJlIG9mIGRpc3RyaWJ1dGVkIHN5c3RlbXMgdGhhdCByZXN1bHQgaW4gdW5leHBlY3RlZCBhbmQgdW5wbGFubmVkIGRvd250aW1lLiBNYW55IHN0dWRpZXMgZXN0aW1hdGUgdGhhdCwgMjUgdG8gMzUlIG9mIHRoZSBkb3dudGltZSBpbiBhIHN5c3RlbSBhcmUgY2F1c2VkIGJ5IGJ1Z3MgaW4gc29mdHdhcmUtcmVsYXRlZCBjb2RlLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKld3ZUJpZkhwVWF3Y3ZLQ05ic1JpUGcuanBlZyIgLz48ZmlnY2FwdGlvbj5Tb2Z0d2FyZSBmYWlsdXJlcyBhcyBhIG1ham9yIHBhaW4gcG9pbnQgaW4gYSBkaXN0cmlidXRlZCBzeXN0ZW08L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+VGhlIGludGVyZXN0aW5nIGFzcGVjdCBvZiB0aGlzIHN0b3J5IGlzIHRoZSBmYWN0IHRoYXQsIGV2ZW4gd2l0aGluIHN5c3RlbXMgdGhhdCBhcmUgZmFpcmx5IHdlbGwtZXN0YWJsaXNoZWQgYW5kIGhhdmUgcmlnb3JvdXMgdGVzdGluZyBwcmFjdGljZXMgaW4gcGxhY2UsIHN0dWRpZXMgaGF2ZSBmb3VuZCB0aGF0IHRoZSBhY3R1YWwgcGVyY2VudGFnZSBvZiBzb2Z0d2FyZS1yZWxhdGVkIGRvd250aW1lIGRvZXNu4oCZdCByZWFsbHkgPGVtPmV2ZXI8L2VtPiA8ZW0+cmVkdWNlPC9lbT4gYmV5b25kIHRoYXQgMjUlIHRocmVzaG9sZCEgVGhlcmUgYXJlIGp1c3Qgc29tZSBidWdzIHRoYXQgc3RpbGwgc2VlbSB0byBleGlzdCwgZXZlbiB3aXRoIHdlbGwgdGhvdWdodC1vdXQgdGVzdHMgYW5kIHF1YWxpdHnCoGNvbnRyb2wuPC9wPjxoND4oU29mdHdhcmUpIHByb2JsZW1zIG9mIHRoZcKgcHJlc2VudDwvaDQ+PHA+VGhlIGJ1Z3MgdGhhdCBzdGlsbCBleGlzdCBpbiBtb3JlIG1hdHVyZSBzeXN0ZW1z4oCK4oCU4oCKdGhvc2UgdGhhdCBoYXZlIHJpZ29yb3VzIHRlc3RpbmcsIGZvciBleGFtcGxl4oCK4oCU4oCKYXJlIGFsc28ga25vd24gYXMgPHN0cm9uZz48ZW0+cmVzaWR1YWwgYnVnczwvZW0+PC9zdHJvbmc+LCBhbmQgdGhleSBjYW4gYmUgY2xhc3NpZmllZCBpbnRvIHR3byBzZXBhcmF0ZSBjYXRlZ29yaWVzOjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKmszREpDYVhQX1FZYTFNQTVDSGlEV3cuanBlZyIgLz48ZmlnY2FwdGlvbj5UaGUgdHdvIG1haW4ga2luZHMgb2Yg4oCccmVzaWR1YWzigJ0gc29mdHdhcmXCoGJ1Z3M8L2ZpZ2NhcHRpb24+PC9maWd1cmU+PG9sPjxsaT48c3Ryb25nPjxlbT5Cb2hyYnVnczwvZW0+PC9zdHJvbmc+LCB3aGljaCBhcmUgbmFtZWQgZm9yIE5pZWxzIEJvaHIgYW5kIEVybmVzdCBSdXRoZXJmb3Jk4oCZcyBtb2RlbCBmbyB0aGUgYXRvbWljIG51Y2xldXMswqBhbmQ8L2xpPjxsaT48c3Ryb25nPjxlbT5IZWlzZW5idWdzPC9lbT48L3N0cm9uZz4sIHdoaWNoIGFyZSBuYW1lZCBhcyBhIHB1biBvbiBXZXJuZXIgSGVpc2VuYmVyZ+KAmXMgSGVpc2VuYmVyZyB1bmNlcnRhaW50eSBwcmluY2lwbGUuPC9saT48L29sPjxwPlRoZXNlIHR3byBidWdzIGhhdmUgYmVlbiByZXNlYXJjaGVkIGJ5IG1hbnkgZGlmZmVyZW50IGNvbXB1dGVyIHNjaWVudGlzdHM7IHRocmVlIG9mIHRoZSBtb3N0IG5vdGFibGUgb25lcyBpbmNsdWRlIEppbSBHcmF5LCBCcnVjZSBMaW5kc2V5LCBhbmQgQW5kcmVhICjigJxBbml0YeKAnSkgQm9yciwgYW5kIHdl4oCZbGwgcmVhZCBhYm91dCB0aGUgZnJ1aXRzIG9mIHRoZWlyIGxhYm9yIGluIGEgbGl0dGxlIGJpdC4gQmV0d2VlbiB0aGVzZSB0d28gZGlmZmVyZW50IGtpbmRzIG9mIOKAnHJlc2lkdWFs4oCdIGJ1Z3MsIG9uZSBpcyBkZWZpbml0ZWx5IHdheSBlYXNpZXIgdG8gd3JhcCBvdXIgaGVhZHMgYXJvdW5kIHRoYW4gdGhlIG90aGVyLiBTbyBsZXTigJlzIHN0YXJ0IHdpdGggdGhhdCBvbmXCoGZpcnN0ITwvcD48cD5UaGUgPHN0cm9uZz48ZW0+Qm9ocmJ1ZzwvZW0+PC9zdHJvbmc+IGlzIGEgYnVnIHRoYXQgbW9zdCAoYWxsPykgcHJvZ3JhbW1lcnMgd2lsbCBlbmNvdW50ZXIgd2hpbGUgdGlua2VyaW5nIHdpdGggc29mdHdhcmUuIEEgQm9ocmJ1ZyBpcyBhIGJ1ZyB0aGF0IGNhbiByZWxpYWJseSBiZSByZXByb2R1Y2VkLCBnaXZlbiB0aGUgcmlnaHQgY29uZGl0aW9ucy4gRm9yIGV4YW1wbGUsIGlmIHdlIHdlcmUgYWJsZSB0byBub3RpY2UgdGhhdCBhIGJ1ZyBvY2N1cnJlZCBpbiBhIHBpZWNlIG9mIHNvZnR3YXJlIGFuZCBjbG9zZWx5IG9ic2VydmVkIHRoZSBzaXR1YXRpb24gaW4gd2hpY2ggaXQgaGFwcGVuZWQsIGlmIGl0IHdhcyBhIEJvaHJidWcsIHRoZW4gd291bGQgYmUgYWJsZSB0byByZXByb2R1Y2UgaXQgYnkgcmUtY3JlYXRpbmcgdGhlIHNhbWUgc2l0dWF0aW9uLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKkFmVXBmSVVnOExiQ2ppWVhNVXVtMVEuanBlZyIgLz48ZmlnY2FwdGlvbj5Cb2hyYnVnOiBhIHF1aWNrIGRlZmluaXRpb24hPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPkEgQm9ocmJ1ZyBpcyBwcmV0dHkgZWFzeSB0byBsb2NhbGl6ZSBhbmQgcGlucG9pbnQgdG8gYSBjZXJ0YWluIHBhcnQgb2YgYSBjb2RlYmFzZS4gQXMgZGV2ZWxvcGVycywgdGhpcyBpcyBhIGh1Z2UgYm9vbiwgc2luY2UgaXQgbWVhbnMgdGhhdCB3ZSBjYW4gcmVsaWFibHkgZmluZCBhbmQgdGhlbiA8ZW0+Zml4PC9lbT4gdGhlIEJvaHJidWcsIGFzIGFubm95aW5nIGFzIGl0IG1pZ2h0wqBiZSE8L3A+PHA+SW50ZXJlc3RpbmdseSwgd2hlbiBKaW0gR3JheSBhbmQgQnJ1Y2UgTGluZHNleSB3ZXJlIHJlc2VhcmNoaW5nIEJvaHJidWdzIGluIG1vcmUgbWF0dXJlIHN5c3RlbXMsIHRoZXkgcG9zaXRlZCB0aGF0IHRoZSBmcmVxdWVuY3kgb2YgdGhlc2UgcmVwcm9kdWNpYmxlIGxpdHRsZSBidWdzIGFjdHVhbGx5IHJlZHVjZWQgYXMgYSBzeXN0ZW0gZ3JldyBvbGRlciBhbmQgbW9yZcKgc3RhYmxlLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKkxlc25VaklNaHB2bEtVSXhwNnJCVlEuanBlZyIgLz48ZmlnY2FwdGlvbj5Cb2hyYnVncyBpbiBhIHN5c3RlbSwgb3ZlcsKgdGltZTwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5Ib3dldmVyLCBBbml0YSBCb3Jy4oCZcyByZXNlYXJjaCBhZGRlZCBhIGJpdCBtb3JlIG51YW5jZSB0byB0aGlzLiBTaGUgZm91bmQgdGhhdCB0aGUgcGVyY2VudGFnZSBvZiBCb2hyYnVncyBkaWRu4oCZdCBzdHJpY3RseSBjb250aW51ZSB0byBkcm9wIGFzIGEgc3lzdGVtIGdyZXcgbW9yZSBzdGFibGU7IHJhdGhlciwgaGVyIHJlc2VhcmNoIGZvdW5kIHRoYXQsIHdpdGggZWFjaCBuZXcgdXBncmFkZSBvciBzY2hlZHVsZWQgbWFpbnRlbmFuY2UgdGhhdCB3YXMgaW50cm9kdWNlZCBpbnRvIHRoZSBzeXN0ZW0sIHRoZXJlIHdhcyBhbHNvIGEgc2xpZ2h0IHVwdGljayBvZiBCb2hyYnVncywgc2luY2Ugc2lnbmlmaWNhbnQgY2hhbmdlcyBpbiB0aGUgc3lzdGVtIHdlcmUgc3RpbGwgdmVyeSBjYXBhYmxlIG9mIGludHJvZHVjaW5nIDxlbT5yZXByb2R1Y2libGU8L2VtPiBidWdzLjwvcD48cD5UaGFua2Z1bGx5LCBldmVuIHRob3VnaCBuZXcgQm9ocmJ1Z3MgbWlnaHQgYmUgaW50cm9kdWNlZCB3aXRoIHRoZXNlIHN5c3RlbS13aWRlIGNoYW5nZXMsIGF0IGxlYXN0IHRoZXkgY2FuIGJlIHJlcHJvZHVjZWQgKGFuZCBob3BlZnVsbHksIGZpeGVkISkuIEJ1dCB0aGluZ3MgYXJlbuKAmXQgYWx3YXlzIHRoYXQgc2ltcGxlIGluIHRoZSB3b3JsZCBvZiBzb2Z0d2FyZSAob2YgY291cnNlKS4gU29tZSBidWdzIGRvbuKAmXQgYWx3YXlzIGJlaGF2ZSB0aGUgc2FtZeKApmluIGZhY3QsIHNvbWUgb2YgdGhlbSBzZWVtIHRvIGJlaGF2ZSBkaWZmZXJlbnRseSB3aGVuIHdlIHRyeSB0byBpbnZlc3RpZ2F0ZSB0aGVtITwvcD48aDQ+RGVhbGluZyB3aXRoIGRpZmZpY3VsdCwgZGlzdHJpYnV0ZWQgYnVnczwvaDQ+PHA+VGhlcmUgaXMgb25lIHNwZWNpZXMgb2YgYnVnIHRoYXQgaXMgcGFydGljdWxhcmx5IHJlbGV2YW50IHRvIGRpc3RyaWJ1dGVkIHN5c3RlbXMsIGFuZCBpdOKAmXMgZmluYWxseSB0aW1lIGZvciB1cyB0byBjb21lIGZhY2UtdG8tZmFjZSB3aXRoIGl0IGluIHRoaXMgc2VyaWVzLiBJ4oCZbSB0YWxraW5nLCBvZiBjb3Vyc2UsIGFib3V0IHRoZSBIZWlzZW5idWchPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqYXA0akVndW9QTHdPbHh5UVFuaEl1QS5qcGVnIiAvPjxmaWdjYXB0aW9uPkhlaXNlbmJ1ZzogYSBxdWljayBkZWZpbml0aW9uITwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5BIDxzdHJvbmc+PGVtPkhlaXNlbmJ1ZyA8L2VtPjwvc3Ryb25nPmNhbiBiZSBzdXBlciBmcnVzdHJhdGluZyB0byBkZWFsIHdpdGggYXMgYSBwcm9ncmFtbWVyLiBUaGlzIGlzIGEgYnVnIHRoYXQgYWN0dWFsbHkgYmVoYXZlcyA8ZW0+ZGlmZmVyZW50bHkgPC9lbT53aGVuIGl0IGlzIG9ic2VydmVkIGNsb3NlbHkuIEFzIG9uZSBiZWdpbnMgdG8gaW52ZXN0aWdhdGUgYSBIZWlzZW5idWcsIGl0IG1heSBjaGFuZ2UgaG93IGl0IG1hbmlmZXN0cyBpdHNlbGYuIEluIHNvbWUgY2FzZXMsIHdoZW4gYSBIZWlzZW5idWcgaXMsIHdlbGwsIGJlaW5nIGRlYnVnZ2VkLCBpdCBkaXNhcHBlYXJzIGNvbXBsZXRlbHkuIEFuZCBpbiBzb21lIHNpdHVhdGlvbnMsIHdoZW4gY2VydGFpbiBjb25kaXRpb25zIGFyZSByZWNyZWF0ZWQgaW4gYW4gZWZmb3J0IHRvIHJlcHJvZHVjZSB0aGUgYnVnLCB0aGUgYnVnIGp1c3Qgd29u4oCZdCBhcHBlYXIhIFByZXR0eSBmcnVzdHJhdGluZywgcmlnaHQ/PC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqaGlKS2xrZmdHODNXa1RUMjFVaXRxQS5qcGVnIiAvPjxmaWdjYXB0aW9uPldoYXQgbWFrZXMgSGVpc2VuYnVncyBzb8KgaGFyZD88L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+Rm9yIGV4YW1wbGUsIGEgYnVnIHN1Y2ggYXMgYSBkYXRhIHN0cnVjdHVyZSBydW5uaW5nIG91dCBvZiBzcGFjZSBvciBhIHBvcnRpb24gb2YgYSBwcm9ncmFtIHRoYXQgb3ZlcmZsb3dzIHNvbWUgYWxsb2NhdGVkIG1lbW9yeSBpbiBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQgbWlnaHQgbm90IGJlIHRvIGVhc2lseSByZXByb2R1Y2UgbG9jYWxseSBvciBpbiBhIHRlc3Q7IGhvd2V2ZXIsIHRoaXMgZXhhY3QgYnVnIGNvdWxkIGNhdXNlIGEgc3lzdGVtIHRvIGNyYXNoLCBhbmQgaXMgcHJldHR5wqBmYXRhbCE8L3A+PHA+VGhpcyBpcyBwYXJ0IG9mIHRoZSByZWFzb24gdGhhdCBtYWtlcyBIZWlzZW5idWdzIHNvIGRpZmZpY3VsdCB0byByZWFzb24gYWJvdXQuIFRoZXkgYXJlIGluY3JlZGlibHkgaGFyZCB0byBhY3R1YWxseSA8ZW0+cmVhc29uPC9lbT4gYWJvdXQsIGJlY2F1c2UgaXTigJlzIGhhcmQgdG8gYWN0dWFsbHkgbG9jYWxpemUgdGhlbSBhbmQgcGluIHRoZW0gZG93bi4gQW5kLCBiZWNhdXNlIHRoZXnigJlyZSBoYXJkIHRvIHJlcHJvZHVjZSA8ZW0+cmVsaWFibHk8L2VtPiwgdGhleeKAmXJlIGhhcmQgdG8gaWRlbnRpZnkgYW5kIHRodXMsIGRpZmZpY3VsdCB0byBhY3R1YWxsecKgc29sdmUhPC9wPjxwPlRoZSBIZWlzZW5idWcgaXMgZXNwZWNpYWxseSByZWxldmFudCB0byBkaXN0cmlidXRlZCBzeXN0ZW1zIGJlY2F1c2UgdGhleeKAmXJlIG1vcmUgbGlrZWx5IHRvIG9jY3VyIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtIHRoYW4gaW4gYSBsb2NhbGl6ZWQsIGNlbnRyYWwgb25lLiBUaGVzZSBraW5kcyBvZiBidWdzIGFyZSBhY3R1YWxseSBpbmRpY2F0b3JzIG9mIHByb2JsZW1zIGFuZCBmYWlsdXJlcyBpbiB0aGUgc3lzdGVtIHRoYXQgb2NjdXJyZWQgbXVjaCA8ZW0+ZWFybGllcjwvZW0+IHRoYW4gd2hlbiB0aGUgYnVnIG1hbmlmZXN0ZWQgaXRzZWxmLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKkJ1dFpMclBLREZsWGc1NmFOWHFhZVEuanBlZyIgLz48ZmlnY2FwdGlvbj5IZWlzZW5idWdzIGFyZSBtdWNoIG1vcmUgY29tbW9uIGluIGRpc3RyaWJ1dGVkIHN5c3RlbXMuPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPkEgSGVpc2VuYnVnIGlzIHVzdWFsbHkgYSByZWQgZmxhZyB0aGF0IHNvbWV0aGluZyA8ZW0+ZWxzZSA8L2VtPndlbnQgd3JvbmcgaW4gdGhlIHN5c3RlbSBhd2hpbGUgYWdvLCBhbmQgaXQgaXMgb25seSBzdXJmYWNlIG5vdywgYW5kIGl0IG9ubHkganVzdCBzbyBoYXBwZW5zIHRoYXQgaXQgaXMgc3VyZmFjaW5nIGluIHRoZSBmb3JtIG9mIHRoaXPCoGJ1Zy48L3A+PGJsb2NrcXVvdGU+SW4gYWN0dWFsaXR5LCBhIEhlaXNlbmJ1ZyBpcyBqdXN0IGEgbG9uZy1kZWxheWVkIHNpZGUgZWZmZWN0IG9mIGEgbXVjaCBlYXJsaWVywqBwcm9ibGVtLjwvYmxvY2txdW90ZT48cD5JbiBtb3JlIG1hdHVyZSBkaXN0cmlidXRlZCBzeXN0ZW1zLCBpdCBpcyBIZWlzZW5idWdz4oCK4oCU4oCKPGVtPm5vdCA8L2VtPkJvaHJidWdz4oCK4oCU4oCKdGhhdCBjYXVzZSBtYWpvciBmYWlsdXJlcyBhbmQgc3lzdGVtIGNyYXNoZXMuIElmIHdlIHRoaW5rIGFib3V0IGl0IG1vcmUgZGVlcGx5LCB0aGlzIHN0YXJ0cyB0byBtYWtlIHNlbnNlOyB0aGVyZSBhcmUgbWFueSBtb3ZpbmcgcGFydHMgaW4gYSBkaXN0cmlidXRlZCBzeXN0ZW0sIGFuZCBtYW55IGRlcGVuZGVuY2llcyBhbmQgbm9kZXMgdGhhdCByZWx5IHVwb24gb25lIGFub3RoZXIuIEEgZmFpbHVyZSB0aGF0IGFwcGVhcnMgdG8gYmUgY29taW5nIGZyb20gPGVtPm9uZTwvZW0+IG5vZGUgaW4gdGhlIHN5c3RlbSBtaWdodCBhY3R1YWxseSBiZSB0aHJlZSBub2RlcyByZW1vdmVkIGZyb20gYSBmYWlsdXJlIHRoYXQgb3JpZ2luYXRlZCBlbHNld2hlcmUsIGJ1dCBwcm9wYWdhdGVkIHRocm91Z2hvdXQgdGhlIHN5c3RlbS4gV2hpbGUgYSBCb2hyYnVnIG1pZ2h0IGJlIGVhc3kgdG8gcmVwcm9kdWNlLCBsb2NhbGl6ZSwgYW5kIHJlYXNvbiBhYm91dCwgYSBIZWlzZW5idWcgaXMgbXVjaCB0cmlja2VyIHRvIHRoaW5rIGFib3V0IGFuZCB0aHVzLCB0b8KgZml4LjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKmN2RnI3Mjd6QzRhNGRka2FxQlMzUWcuanBlZyIgLz48ZmlnY2FwdGlvbj5IZWlzZW5idWdzIGluIGEgc3lzdGVtLCBvdmVywqB0aW1lPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPkFuaXRhIEJvcnLigIrigJTigIpteSBuZXcgZmF2b3JpdGUgcmVzZWFyY2hlciBvbiByZXNpZHVhbCBidWdz4oCK4oCU4oCKYWN0dWFsbHkgZm91bmQgaW4gaGVyIHJlc2VhcmNoIHRoYXQgbWFueSBlbmdpbmVlcnMgaGF2ZSBhIGhhcmQgdGltZSByZWFzb25pbmcgYWJvdXQgSGVpc2VuYnVncywgYW5kIHRoYXQgbWFraW5nIGF0dGVtcHRzIHRvIDxlbT5maXg8L2VtPiBhIEhlaXNlbmJ1ZyBhY3R1YWxseSBjYXVzZSBtb3JlIHByb2JsZW1zIHRoYW4gdGhlcmUgd2VyZSB0byBiZWdpbiB3aXRoISBTbyBpZiB5b3XigJl2ZSBiZWVuIGZlZWxpbmcgbGlrZSBIZWlzZW5idWdzIGFyZSB0cmlja3kgbGl0dGxlIGNyZWF0dXJlcyBhbmQgaGFyZCB0byBjb250ZW5kIHdpdGgsIGRvbuKAmXQgd29ycnk7IHRoZSByZXNlYXJjaCBhZ3JlZXMgd2l0aMKgeW91ITwvcD48aDQ+UmVzb3VyY2VzPC9oND48cD5Tb2Z0d2FyZSBmYWlsdXJlcyBpbiBkaXN0cmlidXRlZCBzeXN0ZW1zIGFyZSBwcmV0dHkgY29vbCB0byBsZWFybiBhYm91dCwgYW5kIHlvdSBjYW4gbGVhcm4gYSB3aG9sZSBsb3QgbW9yZSBhYm91dCB0aGVtLiBUaGVyZSBpcyBhIGxvdCBvZiBpbnRlcmVzdGluZyByZXNlYXJjaCBhbmQgd3JpdGluZyBvbiBob3cgdG8gZGVhbCB3aXRoIGFuZCBndWFyZCBhZ2FpbnN0IEhlaXNlbmJ1Z3MgaW4geW91ciBzeXN0ZW0uIENoZWNrIG91dCBzb21lIG9mIHRoZSByZXNvdXJjZXMgYmVsb3cgaWYgeW914oCZcmUgY3VyaW91cyB0byBsZWFybsKgbW9yZSE8L3A+PG9sPjxsaT48YSBocmVmPSJodHRwczovL2Jvb2tzLmdvb2dsZS5jb20vYm9va3M/aWQ9WF9rRThZdlJKSkVDJmFtcDtwZz1QQTIzOSZhbXA7bHBnPVBBMjM5Ij5SZWxpYWJsZSBEaXN0cmlidXRlZCBTeXN0ZW1zOiBUZWNobm9sb2dpZXMsIFdlYiBTZXJ2aWNlcywgYW5kIEFwcGxpY2F0aW9uczwvYT4sIEtlbm5ldGjCoEJpcm1hbjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmhwbC5ocC5jb20vdGVjaHJlcG9ydHMvdGFuZGVtL1RSLTg1LjcucGRmIj5XaHkgRG8gQ29tcHV0ZXJzIFN0b3AgYW5kIFdoYXQgQ2FuIEJlIERvbmUgQWJvdXQgSXQ/PC9hPiwgSmltwqBHcmF5PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9jb3Vyc2VzLmNzLndhc2hpbmd0b24uZWR1L2NvdXJzZXMvY3NlNDkwaC8wN3dpL3JlYWRpbmdzL0ludHJvZHVjdGlvblRvRGlzdHJpYnV0ZWRTeXN0ZW1zLnBkZiI+SW50cm9kdWN0aW9uIHRvIERpc3RyaWJ1dGVkIFN5c3RlbXM8L2E+LCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b248L2xpPjxsaT48YSBocmVmPSJodHRwczovL3d3dy5jcy5ydXRnZXJzLmVkdS9+cm1hcnRpbi90ZWFjaGluZy9zcHJpbmcwMy9jczU1My9wYXBlcnMwMS8wNi5wZGYiPkhlaXNlbmJ1Z3MgYW5kIEJvaHJidWdzOiBXaHkgYXJlIHRoZXkgZGlmZmVyZW50PzwvYT4sIFJpY2hhcmQgTWFydGluwqAoPyk8L2xpPjxsaT48YSBocmVmPSJodHRwczovL3BkZnMuc2VtYW50aWNzY2hvbGFyLm9yZy9jYWU3LzUyYjMyN2EyYmJkMjkzYTZiOTI1MzBlMzU0YTc2YjgyYWNlMi5wZGYiPlByb3RlY3RpbmcgQXBwbGljYXRpb25zIEFnYWluc3QgSGVpc2VuYnVnczwvYT4sIENocmlzwqBIb2JiczwvbGk+PC9vbD48aW1nIHNyYz0iaHR0cHM6Ly9tZWRpdW0uY29tL18vc3RhdD9ldmVudD1wb3N0LmNsaWVudFZpZXdlZCZyZWZlcnJlclNvdXJjZT1mdWxsX3JzcyZwb3N0SWQ9MjhhMDFlMzdmNzBjIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBhbHQ9IiI+PGhyPjxwPjxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvd2VlZGluZy1vdXQtZGlzdHJpYnV0ZWQtc3lzdGVtLWJ1Z3MtMjhhMDFlMzdmNzBjIj5XZWVkaW5nIE91dCBEaXN0cmlidXRlZCBTeXN0ZW0gQnVnczwvYT4gd2FzIG9yaWdpbmFsbHkgcHVibGlzaGVkIGluIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMiPmJhc2VkczwvYT4gb24gTWVkaXVtLCB3aGVyZSBwZW9wbGUgYXJlIGNvbnRpbnVpbmcgdGhlIGNvbnZlcnNhdGlvbiBieSBoaWdobGlnaHRpbmcgYW5kIHJlc3BvbmRpbmcgdG8gdGhpcyBzdG9yeS48L3A+XV0+PC9jb250ZW50OmVuY29kZWQ+CiAgICAgICAgPC9pdGVtPgogICAgPC9jaGFubmVsPgo8L3Jzcz4= - recorded_at: Wed, 21 Oct 2020 15:08:33 GMT -- request: - method: get - uri: https://circleci.com/blog/feed.xml - body: - encoding: US-ASCII - string: '' - headers: - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - User-Agent: - - Ruby - response: - status: - code: 200 - message: OK - headers: - Content-Type: - - application/xml - Date: - - Wed, 21 Oct 2020 15:08:34 GMT - Etag: - - '"db0e9f9cae7024117d00274d790975a4"' - Last-Modified: - - Tue, 20 Oct 2020 20:14:07 GMT - Server: - - nginx - Strict-Transport-Security: - - max-age=15724800 - X-Amz-Id-2: - - g77uHdTYnj+mI/CXwcEN6pm0s5cax8Hk0zEuq6uEkTfdcAF/azAtd4RdmiThpCMuTmpxkpB4GNI= - X-Amz-Request-Id: - - F84205B807CB4CD8 - X-Frame-Options: - - SAMEORIGIN - Content-Length: - - '150162' - Connection: - - keep-alive - body: - encoding: ASCII-8BIT - string: !binary |- - PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHJzcyB2ZXJzaW9uPSIyLjAiCiAgeG1sOmJhc2U9Imh0dHBzOi8vY2lyY2xlY2kuY29tLyIKICB4bWxuczphdG9tPSJodHRwOi8vd3d3LnczLm9yZy8yMDA1L0F0b20iCiAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICA8Y2hhbm5lbD4KICAgIDx0aXRsZT5UaGUgQ2lyY2xlQ0kgQmxvZyBGZWVkIC0gQ2lyY2xlQ0k8L3RpdGxlPgogICAgPGRlc2NyaXB0aW9uPlN0YXkgdXAgdG8gZGF0ZSB3aXRoIHRoZSBsYXRlc3QgbmV3cywgdXBkYXRlcywgYW5kIGhhY2tzIGZyb20gQ2lyY2xlQ0kuPC9kZXNjcmlwdGlvbj4KICAgIDxsaW5rPmh0dHBzOi8vY2lyY2xlY2kuY29tL2Jsb2cvPC9saW5rPgogICAgPGF0b206bGluayBocmVmPSJodHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL2ZlZWQueG1sIiByZWw9InNlbGYiIHR5cGU9ImFwcGxpY2F0aW9uL3Jzcyt4bWwiIC8+CiAgICAKICAgICAgCiAgICAgIDxpdGVtPgogICAgICAgIDx0aXRsZT5EbyBJIHJlYWxseSBuZWVkIEt1YmVybmV0ZXM/PC90aXRsZT4KICAgICAgICA8bGluaz5odHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL2RvLWktcmVhbGx5LW5lZWQta3ViZXJuZXRlcy88L2xpbms+CiAgICAgICAgPHB1YkRhdGU+VHVlLCAyMCBPY3QgMjAyMCAwOTowMDowMCAtMDcwMDwvcHViRGF0ZT4KICAgICAgICA8Z3VpZCBpc1Blcm1hTGluaz0idHJ1ZSI+aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy9kby1pLXJlYWxseS1uZWVkLWt1YmVybmV0ZXMvPC9ndWlkPgogICAgICAgIAogICAgICAgICAgPGRjOmNyZWF0b3I+Um9uIFBvd2VsbDwvZGM6Y3JlYXRvcj4KICAgICAgICAKICAgICAgICAKICAgICAgICAgIDxkZXNjcmlwdGlvbj4mbHQ7cCZndDsmbHQ7aSZndDsmbHQ7aSZndDtUaGlzIHBvc3QsIHdyaXR0ZW4gYnkgQ2lyY2xlQ0kgVGVjaG5pY2FsIENvbnRlbnQgTWFya2V0aW5nIE1hbmFnZXIgUm9uIFBvd2VsbCwgb3JpZ2luYWxseSBhcHBlYXJlZCBvbiBUaGUgTmV3IFN0YWNrICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly90aGVuZXdzdGFjay5pby9kby1pLXJlYWxseS1uZWVkLWt1YmVybmV0ZXMvJnF1b3Q7Jmd0O2hlcmUmbHQ7L2EmZ3Q7LiZsdDsvaSZndDsmbHQ7L2kmZ3Q7Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7SWYgeW91IGZvbGxvdyB0ZWNobm9sb2d5IG5ld3MsIGl0IG1pZ2h0IHNlZW0gbGlrZSAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8va3ViZXJuZXRlcy5pby8mcXVvdDsmZ3Q7S3ViZXJuZXRlcyZsdDsvYSZndDsgaXMgZXZlcnl3aGVyZS4gSXQgaGFzIGJlY29tZSBodWdlbHkgcG9wdWxhci4gSW4gZmFjdCwgZGV2ZWxvcGVycyBhbmQgRGV2T3BzIHRlYW1zIG1pZ2h0IGZlZWwgbGlrZSB0aGVpciBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudCBwaXBlbGluZSBpcyBob3BlbGVzc2x5IG91dGRhdGVkIGlmIHRoZXkgYXJlbuKAmXQgdXNpbmcgS3ViZXJuZXRlcy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtLdWJlcm5ldGVzIGlzIGFuIG9yY2hlc3RyYXRpb24gdG9vbCBmb3IgY29udGFpbmVyaXplZCBhcHBsaWNhdGlvbnMuIFN0YXJ0aW5nIHdpdGggYSBjb2xsZWN0aW9uIG9mIERvY2tlciBjb250YWluZXJzLCBLdWJlcm5ldGVzIGNhbiBjb250cm9sIHJlc291cmNlIGFsbG9jYXRpb24gYW5kIHRyYWZmaWMgbWFuYWdlbWVudCBmb3IgY2xvdWQgYXBwbGljYXRpb25zIGFuZCBtaWNyb3NlcnZpY2VzLiZsdDsvcCZndDsKCiZsdDtwJmd0O0FzIHN1Y2gsIGl0IHNpbXBsaWZpZXMgbWFueSBhc3BlY3RzIG9mIHJ1bm5pbmcgYSBzZXJ2aWNlLW9yaWVudGVkIGFwcGxpY2F0aW9uIGluZnJhc3RydWN0dXJlLiBBbG9uZyB3aXRoIG1vZGVybiAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2NvbnRpbnVvdXMtaW50ZWdyYXRpb24vJnF1b3Q7Jmd0O2NvbnRpbnVvdXMgaW50ZWdyYXRpb24mbHQ7L2EmZ3Q7IGFuZCBjb250aW51b3VzIGRlcGxveW1lbnQgKENJL0NEKSB0b29scywgS3ViZXJuZXRlcyBwcm92aWRlcyB0aGUgYmFzaXMgZm9yIHNjYWxpbmcgdGhlc2UgYXBwcyB3aXRob3V0IGh1Z2UgZW5naW5lZXJpbmcgZWZmb3J0LiZsdDsvcCZndDsKCiZsdDtwJmd0O1RoZXJl4oCZcyBhIGxvdCBvZiBleGNpdGVtZW50IGFib3V0IHVzaW5nIEt1YmVybmV0ZXMgdG8gbWFuYWdlIGNsb3VkIGFuZCBoeWJyaWQgY2xvdWQgZW52aXJvbm1lbnRzLiBBbmQgaXQgaXMgYSBncmVhdCB0b29sLiBCdXQgdGVhbXMgb2Z0ZW4gY2hhc2UgdGhlIGh5cGUgYW5kIG1vdmUgdG8gS3ViZXJuZXRlcyBwcmVtYXR1cmVseSwgc29tZXRpbWVzIGF0IGEgZ3JlYXQgY29zdCBpbiB0aW1lLCBtb25leSwgYW5kIGRldmVsb3BlciBmcnVzdHJhdGlvbi4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtJbiB0aGlzIGFydGljbGUsIHdlIHdpbGwgdHJ5IHRvIGxvb2sgYmV5b25kIHRoZSBoeXBlIGFuZCBoZWxwIHlvdSBhbnN3ZXIgdGhlIHF1ZXN0aW9uOiAmbHQ7c3Ryb25nJmd0O2RvIEkgYWN0dWFsbHkgbmVlZCBLdWJlcm5ldGVzPyZsdDsvc3Ryb25nJmd0OyZsdDsvcCZndDsKCiZsdDtoMiZndDtXaGF0IGRvZXMgS3ViZXJuZXRlcyBkbywgYW55d2F5PyZsdDsvaDImZ3Q7CiZsdDtwJmd0O0t1YmVybmV0ZXMgaXMgYW4gb3JjaGVzdHJhdGlvbiB0b29sIGZvciBjb250YWluZXJpemVkIGFwcGxpY2F0aW9ucy4gSXQgaXMgcmVzcG9uc2libGUgZm9yOiZsdDsvcCZndDsKCiZsdDt1bCZndDsKICAmbHQ7bGkmZ3Q7RGVwbG95aW5nIGltYWdlcyBhbmQgY29udGFpbmVycyZsdDsvbGkmZ3Q7CiAgJmx0O2xpJmd0O01hbmFnaW5nIHRoZSBzY2FsaW5nIG9mIGNvbnRhaW5lcnMgYW5kIGNsdXN0ZXJzJmx0Oy9saSZndDsKICAmbHQ7bGkmZ3Q7UmVzb3VyY2UgYmFsYW5jaW5nIGNvbnRhaW5lcnMgYW5kIGNsdXN0ZXJzJmx0Oy9saSZndDsKICAmbHQ7bGkmZ3Q7VHJhZmZpYyBtYW5hZ2VtZW50IGZvciBzZXJ2aWNlcyZsdDsvbGkmZ3Q7CiZsdDsvdWwmZ3Q7CgombHQ7cCZndDtLdWJlcm5ldGVzIHJlYWxseSBzaGluZXMgd2hlbiB5b3VyIGFwcGxpY2F0aW9uIGNvbnNpc3RzIG9mIG11bHRpcGxlIHNlcnZpY2VzIHJ1bm5pbmcgaW4gZGlmZmVyZW50IGNvbnRhaW5lcnMuIEZvciBhIG1vbm9saXRoaWMgYXBwbGljYXRpb24gd2l0aCBhIHN0YXRpYyB1c2VyIGJhc2UsIHRoaXMgbWF5IGJlIG1vcmUgdGhhbiBuZWNlc3NhcnkuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7VGhlIHRhc2sgb2YgYnVpbGRpbmcsIHRlc3RpbmcgYW5kIGRlbGl2ZXJpbmcgeW91ciBhcHBsaWNhdGlvbiB0byBhIGNvbnRhaW5lciByZWdpc3RyeSBpcyBub3QgcGFydCBvZiBLdWJlcm5ldGVzLiBIZXJlLCBDSS9DRCB0b29scyBmb3IgYnVpbGRpbmcgYW5kIHRlc3RpbmcgYXBwbGljYXRpb25zIGRvIHRoZSBqb2IuIEt1YmVybmV0ZXMsIGFzIGEgcGFydCBvZiBhICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy93aGF0LWlzLWEtY2ktY2QtcGlwZWxpbmUvJnF1b3Q7Jmd0O0NJL0NEIHBpcGVsaW5lJmx0Oy9hJmd0OywgdGhlbiBoZWxwcyB5b3UgZGVwbG95IGNoYW5nZXMgdG8gcHJvZHVjdGlvbiB3aXRob3V0IGFueSBkb3dudGltZS4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7SW1wcm92ZSB5b3VyIG1vbm9saXRoJmx0Oy9oMiZndDsKJmx0O3AmZ3Q7TW9zdCBhcHBsaWNhdGlvbnMgc3RhcnQgdGhlaXIgbGlmZSBhcyBhIG1vbm9saXRoLCBhbmQgdGhpcyBpcyBncmVhdCEgV2l0aCBhbiBlbnRpcmUgYXBwbGljYXRpb24gaW4gb25lIHBsYWNlLCBpdCBpcyBxdWljayBhbmQgZWFzeSB0byBtYWtlIGFuZCBkZXBsb3kgY2hhbmdlcy4gQnV0IGlmIHlvdXIgYXBwIGZpbmRzIHN1Y2Nlc3MgYW5kIGdyb3dzLCB5b3Ugd2lsbCBzb29uIG5lZWQgdG8gZmluZCB3YXlzIHRvIHNjYWxlIGl0LiZsdDsvcCZndDsKCiZsdDtwJmd0O0RvZXMgdGhhdCBtZWFuIGl0IGlzIHRpbWUgZm9yIEt1YmVybmV0ZXM/IFByb2JhYmx5IG5vdC4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtJdCBpcyB0ZW1wdGluZyB0byB0aGluayB0aGF0IG9ubHkgbWljcm9zZXJ2aWNlcyBvcmNoZXN0cmF0ZWQgdmlhIEt1YmVybmV0ZXMgY2FuIHNjYWxlIOKAlCB5b3XigJlsbCByZWFkIGEgbG90IG9mIHRoaXMgb24gdGhlIGludGVybmV0LiBCdXQgc2NhbGluZyBpcyB1c3VhbGx5IG1vcmUgYWJvdXQgdGhlIGFwcGxpY2F0aW9u4oCZcyBpbnRlcm5hbHMgdGhhbiBhYm91dCB0aGUgaGlnaC1sZXZlbCBhcmNoaXRlY3R1cmUgYW5kIHRvb2xpbmcuIEZvciBpbnN0YW5jZSwgeW91IGNhbiBzY2FsZSBhIG1vbm9saXRoIGJ5IGRlcGxveWluZyBtdWx0aXBsZSBpbnN0YW5jZXMgd2l0aCBhIGxvYWQgYmFsYW5jZXIgdGhhdCBzdXBwb3J0cyBhZmZpbml0eSBmbGFncy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7c3Ryb25nJmd0O0EgcHJhY3RpY2FsIGZpcnN0IHN0ZXAgdG8gY29uc2lkZXIgd2hlbiBzY2FsaW5nIGFuIGFwcGxpY2F0aW9uIGlzICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy9ob3ctdG8tdGVzdC1zb2Z0d2FyZS1wYXJ0LWlpLXRkZC1hbmQtYmRkLyZxdW90OyZndDtUZXN0IERyaXZlbiBEZXZlbG9wbWVudCAoVEREKSZsdDsvYSZndDsmbHQ7L3N0cm9uZyZndDssIHdoaWNoIGVuc3VyZXMgcXVhbGl0eSBhbmQgcHJldmVudHMgZGVmZWN0cyBhcyB5b3VyIGFwcGxpY2F0aW9uIGdyb3dzLiBXaGlsZSBzbWFsbGVyIG1vZHVsZXMgb3Igc2VydmljZXMgYXJlIGVhc2llciB0byB0ZXN0LCB0aGUgbW9kdWxhcml0eSBhbHNvIG1lYW5zIGluY3JlYXNlZCBkZW1hbmQgZm9yICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy9ob3ctdG8tdGVzdC1zb2Z0d2FyZS1wYXJ0LWktbW9ja2luZy1zdHViYmluZy1hbmQtY29udHJhY3QtdGVzdGluZy8mcXVvdDsmZ3Q7bW9ja2luZyZsdDsvYSZndDssIGFzIHdlbGwgYXMgYWRkaXRpb25hbCB0b29saW5nIHRvIGNvbmZpZ3VyZSBhbmQgbWFpbnRhaW4uIEdvb2QgdGVzdGluZyBtYWtlcyBpdCBlYXNpZXIgdG8gYnVpbGQgYW5kIHNjYWxlIHlvdXIgYXBwbGljYXRpb24gY29uZmlkZW50bHkuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7QXMgeW91IHN0YXJ0IHRvIHNjYWxlIG91dCBhIG1vbm9saXRoLCBjb25maWd1cmF0aW9uIG1hbmFnZW1lbnQgdG9vbHMgbGlrZSBDaGVmIGFuZCBBbnNpYmxlIGNvbWUgaW4gaGFuZHkuIFlvdSBjYW4gdXNlIHRoZW0gdG8gYXV0b21hdGljYWxseSBjb25maWd1cmUgbmV3IHNlcnZlcnMgdG8gZW5zdXJlIHRoZXkgYXJlIHJlYWR5IHRvIHJ1biB5b3VyIGFwcGxpY2F0aW9uLiBZb3UgY2FuIGV2ZW4gZ28gYSBzdGVwIGZ1cnRoZXIgYW5kIHVzZSBhIHRvb2wgbGlrZSAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vd3d3LnRlcnJhZm9ybS5pby8mcXVvdDsmZ3Q7VGVycmFmb3JtJmx0Oy9hJmd0OyB0byBoZWxwIHByb3Zpc2lvbiBuZXcgc2VydmVyIFZNcywgc28gdGhhdCB5b3Ugd29u4oCZdCBoYXZlIHRvIGNyZWF0ZSB0aGVtIG1hbnVhbGx5LiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7V2hlbiBvdGhlciBwYXJ0cyBvZiB5b3VyIGFwcGxpY2F0aW9uIGJlY29tZSBhIGJvdHRsZW5lY2sg4oCUIGZvciBleGFtcGxlLCB0aGUgZGF0YWJhc2Ug4oCUIHlvdSBtYXkgc2NhbGUgdGhvc2UsIHRvby4mbHQ7L3N0cm9uZyZndDsgVmFyaW91cyBwYXR0ZXJucyBhbGxvdyBhcHBsaWNhdGlvbnMgdG8gc2NhbGUgZXZlbiB0aG91Z2ggdGhleSBhcmUsIGJ5IGRlc2lnbiwgbm90IHZlcnkgc2NhbGFibGUuIEZvciBleGFtcGxlLCBpZiB5b3VyIGRhdGFiYXNlIGJlY29tZXMgYSBib3R0bGVuZWNrLCB5b3UgY2FuIG1vdmUgZnJlcXVlbnRseS1hY2Nlc3NlZCBkYXRhIHRvIGEgaGlnaC1wZXJmb3JtYW5jZSBpbi1tZW1vcnkgZGF0YSBzdG9yZSwgbGlrZSBSZWRpcywgdG8gcmVkdWNlIGxvYWQgb24geW91ciBkYXRhYmFzZS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtObyBtYXR0ZXIgd2hhdCBjb25maWd1cmF0aW9uIG1hbmFnZW1lbnQgYW5kIHByb3Zpc2lvbmluZyB0b29scyB5b3UgdXNlLCBhIGdvb2QgQ0kvQ0QgcGlwZWxpbmUgaXMgYSBtdXN0LiBZb3UgbWlnaHQgaGF2ZSBjb3BpZWQgYSAuemlwIGZpbGUgdG8geW91ciBzZXJ2ZXIgdmlhIEZUUCB0aGUgZmlyc3QgdGltZSB5b3UgZGVwbG95ZWQgeW91ciBhcHAsIGJ1dCB0aGF0IGFwcHJvYWNoIGRvZXMgJmx0O2kmZ3Q7bm90Jmx0Oy9pJmd0OyBzY2FsZS4gQSBzdHJlYW1saW5lZCBDSS9DRCBwaXBlbGluZSBlbnN1cmVzIHRoYXQgeW91ciBhcHBsaWNhdGlvbiBnZXRzIGJ1aWx0LCB0ZXN0ZWQgYW5kIGRlcGxveWVkIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgYW55IGV4dHJhIHdvcmsgZnJvbSB5b3Ugb3IgeW91ciB0ZWFtLiZsdDsvcCZndDsKCiZsdDtwJmd0O1RvZ2V0aGVyLCB0aGVzZSBwcmFjdGljZXMgd2lsbCBtYWtlIHlvdXIgbGlmZSBlYXNpZXIgaWYgeW91ICZsdDtpJmd0O2RvJmx0Oy9pJmd0OyBldmVudHVhbGx5IG5lZWQgS3ViZXJuZXRlcy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtZb3UgY2FuIGV2ZW4gYXV0by1zY2FsZSBtb25vbGl0aGljIGFwcGxpY2F0aW9ucyB1c2luZyBjbG91ZCBzZXJ2aWNlcyBsaWtlIEFXUyBFbGFzdGljIEJlYW5zdGFsaywgR29vZ2xlIEFwcCBFbmdpbmUsIG9yIEF6dXJlIEFwcCBTZXJ2aWNlLiBUaGVzZSBhbGwgaW1wb3NlIGZhciBsZXNzIGFkbWluaXN0cmF0aXZlIG92ZXJoZWFkIHRoYW4gS3ViZXJuZXRlcywgYW5kIHRoZXkgYWxsIHBsYXkgbmljZWx5IHdpdGggQ0kvQ0QgdG9vbHMuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O3N0cm9uZyZndDtXaGVuIHdvcmtpbmcgd2l0aCBhIG5ldyBhcHBsaWNhdGlvbiwgZm9jdXMgb24gZGV2ZWxvcGluZyB0aGUgYmVzdCBhcHBsaWNhdGlvbiBwb3NzaWJsZS4mbHQ7L3N0cm9uZyZndDsgRXZlbnR1YWxseSwgYSBjb21wbGV4IHRvb2wgbGlrZSBLdWJlcm5ldGVzIG1heSBiZSB0aGUgcmlnaHQgc29sdXRpb24gZm9yIG1hbmFnaW5nIGluZnJhc3RydWN0dXJlIGZvciB5b3VyIGFwcGxpY2F0aW9uLiBBcyB5b3UgZ3JvdywgaG93ZXZlciwgbWFueSBvZiB0aGUgcHJhY3RpY2VzIHdl4oCZdmUganVzdCBkaXNjdXNzZWQgd2lsbCBiZSBtb3JlIHByYWN0aWNhbC4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7QXVnbWVudCB5b3VyIG1vbm9saXRoJmx0Oy9oMiZndDsKJmx0O3AmZ3Q7QXMgeW91ciBhcHBsaWNhdGlvbiBjb250aW51ZXMgdG8gZ3JvdywgeW91IHdpbGwgZXZlbnR1YWxseSByZWFjaCBhIHBvaW50IHdoZXJlIGNvbnRpbnVpbmcgdG8gYWRkIHRvIHRoZSBtb25vbGl0aCBzZWVtcyB1bnRlbmFibGUuIFRoaXMgaXMgb2Z0ZW4gYmVjYXVzZSB0aGUgYXBwIGlzIG5lYXIgdGhlIGxpbWl0IG9mIHdoYXQgYSBzaW5nbGUgZGV2IHRlYW0gY2FuIHdvcmsgb24uJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7QXQgdGhpcyBwb2ludCwgbWFueSB0ZWFtcyBjaG9vc2UgdG8gc3BsaXQgdXAgdGhlaXIgbW9ub2xpdGggYW5kIG1vdmUgZnVsbHkgaW50byBtaWNyb3NlcnZpY2VzLiBXaGlsZSB0aGlzIGlzIGEgcmF0aGVyIHBvcHVsYXIgZGVjaXNpb24sIGl0IGlzIG5laXRoZXIgYSBuZWNlc3Nhcnkgb25lIG5vciBhIHNpbHZlciBidWxsZXQuIENvbnNpZGVyIHN0YXJ0aW5nIG91dCBieSBhZGRpbmcgc2VydmljZXMgdGhhdCBhdWdtZW50IHlvdXIgbW9ub2xpdGggaW5zdGVhZCBvZiByZXBsYWNpbmcgaXQuIFNvbWUgb2YgdGhlc2Ugc3VwcG9ydCBzZXJ2aWNlcyBtYXkgYWN0dWFsbHkgYmUgbWljcm9zZXJ2aWNlcyDigJQgc28geW91IGNhbiBiZW5lZml0IGZyb20gdXNpbmcgc21hbGwgc2VydmljZXMgd2hlcmUgaXQgbWFrZXMgc2Vuc2UsIHdoaWxlIHN0aWxsIGxldmVyYWdpbmcgdGhlIGJlbmVmaXRzIG9mIHlvdXIgbW9ub2xpdGguJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7RXZlbiB3aGVuIGludHJvZHVjaW5nIHNlcnZpY2VzIGFuZCBtaWNyb3NlcnZpY2VzLCB5b3UgbWF5IG5vdCBuZWVkIG9yIHdhbnQgdG8gc3RhcnQgd2l0aCBLdWJlcm5ldGVzLiBLdWJlcm50ZXMgZXhjZWxzIGF0IHJ1bm5pbmcgYW5kIHNjYWxpbmcgcG9kcyBvZiByZWxhdGVkIHNlcnZpY2UgYW5kIG1pY3Jvc2VydmljZSBjb250YWluZXJzLiBIb3dldmVyLCB0aGVyZSBhcmUgYXNwZWN0cyBvZiBhZG9wdGluZyBLdWJlcm5ldGVzIHRoYXQgYXJlIGVhc3kgdG8gb3Zlcmxvb2sgYXQgZmlyc3QuIEZvciBleGFtcGxlLCBLdWJlcm5ldGVzIGRvZXMgbm90IGluY2x1ZGUgcm9idXN0IGJ1aWx0LWluIHRvb2xzIGZvciBzZWN1cmluZyBwb2RzLCBub2RlcyBhbmQgY2x1c3RlcnMsIGFuZCBkZXBsb3lpbmcgS3ViZXJuZXRlcyBjbHVzdGVycyBhY3Jvc3MgYSBtdWx0aS1jbG91ZCBlbnZpcm9ubWVudCBjYW4gYWRkIGEgbG90IG9mIGNvbXBsZXhpdHkuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7U3RhcnRpbmcgd2l0aCBhIHNpbmdsZS1jbG91ZCBwbGF0Zm9ybSBsaWtlIEF6dXJlIFNlcnZpY2UgRmFicmljIGFuZCBBV1MgRmFyZ2F0ZSBtYXkgbWFrZSBpdCBlYXNpZXIgdG8gc3BpbiB1cCBhbmQgc2NhbGUgc2VydmljZXMsIHdpdGhvdXQgZm9yY2luZyB5b3UgdG8gdGFrZSBvbiBtYW5hZ2luZyBhIEt1YmVybmV0ZXMgY2x1c3Rlci4mbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7c3Ryb25nJmd0O0Fub3RoZXIgb3B0aW9uIGlzIHRvIGF2b2lkIHNlcnZpY2VzIHdpdGggbWFpbnRlbmFuY2Ugb3ZlcmhlYWQgYWx0b2dldGhlciBhbmQgb3B0IGZvciBGdW5jdGlvbnMgYXMgYSBTZXJ2aWNlIChGYWFTKSZsdDsvc3Ryb25nJmd0Oywgc3VjaCBhcyBBV1MgTGFtYmRhIG9yIEF6dXJlIEZ1bmN0aW9ucy4gRmFhUyBpcyBhIGdyZWF0IHdheSB0byBtaW5pbWl6ZSBwb3RlbnRpYWwgaW5mcmFzdHJ1Y3R1cmUgb3ZlcmhlYWQgd2hlbiBhZGRpbmcgc2VydmljZXMgdG8geW91ciBhcHBsaWNhdGlvbi4gTW9yZW92ZXIsIGEgS3ViZXJuZXRlcy1vcmNoZXN0cmF0ZWQgY2x1c3RlciDigJQgaWYgeW91IGV2ZW50dWFsbHkgbmVlZCBvbmUg4oCUIGNhbiBiZSBlbmhhbmNlZCB3aXRoIEZhYVMgY2FwYWJpbGl0aWVzLiBCeSBzdGFydGluZyB3aXRoIGEgbWl4dHVyZSBvZiBzZXJ2aWNlcyBhbmQgZnVuY3Rpb25zLCB0aGUgbWlncmF0aW9uIHRvIEt1YmVybmV0ZXMgaXMgbGVzcyBjb21wbGljYXRlZCB0aGFuIGl0IHNvdW5kcy4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7Tm8gbW9yZSBtb25vbGl0aCZsdDsvaDImZ3Q7CiZsdDtwJmd0O05vdyBpbWFnaW5lIHRoYXQgeW91ciBvcmlnaW5hbCBtb25vbGl0aGljIGFwcGxpY2F0aW9uIGhhcyBncm93biBzbyBtdWNoIHRoYXQgeW91IGNhbiBiYXJlbHkgc2VlIHRoZSBvcmlnaW5hbCBtb25vbGl0aC4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtJdHMgbmVlZHMgYW5kIGl0cyB1c2VyYmFzZSBoYXZlIGdyb3duIHNvIGZhciBhbmQgc28gZmFzdCB0aGF0IHlvdSBub3cgaGF2ZSBhIHdpZGUgdmFyaWV0eSBvZiBoZWxwZXIgc2VydmljZXMsIG1hbnkgb2Ygd2hpY2ggbmVlZCB0byB0YWxrIHRvIGVhY2ggb3RoZXIuIFlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgc2VydmljZXMgdGhhdCBkZXBlbmQgb24gZWFjaCBvdGhlciBhcmUgYWx3YXlzIHJ1bm5pbmcgYW5kIHZpc2libGUgdG8gZWFjaCBvdGhlci4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtJbiBhZGRpdGlvbiwgeW91ciBjdXN0b21lcnMgYXJlIGRlbWFuZGluZyB0aGUga2luZCBvZiB1cHRpbWUgYW5kIHJlbGlhYmlsaXR5IHRoYXQgbWFrZSB5b3UgY29uc2lkZXIgcnVubmluZyBhY3Jvc3MgbXVsdGlwbGUgYXZhaWxhYmlsaXR5IHpvbmVzLCBwb3NzaWJseSBldmVuIGFjcm9zcyBtdWx0aXBsZSBjbG91ZCB2ZW5kb3JzLiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7VGhpcyBpcyB0aGUgcG9pbnQgYXQgd2hpY2ggeW91IHByb2JhYmx5IG5lZWQgYW4gb3JjaGVzdHJhdG9yIGxpa2UgS3ViZXJuZXRlcy4mbHQ7L3N0cm9uZyZndDsgSXQgbGV0cyB5b3UgZWFzaWx5IGRlZmluZSB0aGUgbW9kdWxlcyAoUG9kcykgb2YgcmVsYXRlZCBzZXJ2aWNlcyBhbmQgbGV0cyB5b3UgYXV0b21hdGljYWxseSBzY2FsZSB0aGVtIGFuZCBsb2FkLWJhbGFuY2UgYmV0d2VlbiB0aGVtLiZsdDsvcCZndDsKCiZsdDtwJmd0O0ZvciBLdWJlcm5ldGVzIHRvIGJlIHVzZWZ1bCwgaGVyZSBpcyB3aGF0IGl0IHdvdWxkIHJlcXVpcmU6Jmx0Oy9wJmd0OwoKJmx0O3VsJmd0OwogICZsdDtsaSZndDtZb3UgYXJlIHdpbGxpbmcgdG8gb3BlcmF0ZSBhIGNvdXBsZSBvZiB2aXJ0dWFsIG1hY2hpbmVzJmx0Oy9saSZndDsKICAmbHQ7bGkmZ3Q7WW91IGNhbiBhc3NpZ24gcGVvcGxlIHRvIGRvIGNvbmZpZ3VyYXRpb24gYW5kIG1haW50ZW5hbmNlIG9mIEt1YmVybmV0ZXMmbHQ7L2xpJmd0OwogICZsdDtsaSZndDtZb3UgaGF2ZSBtb3JlIHRoYW4gYSBzaW5nbGUgc2VydmljZSB0byB0YWtlIGNhcmUgb2YmbHQ7L2xpJmd0OwogICZsdDtsaSZndDtZb3UgbmVlZCB0byBhdXRvbWF0ZSAoYXMgbXVjaCBhcyBwb3NzaWJsZSkgYSBtb3N0bHkgaG9tb2dlbm91cyBzZXJ2aWNlIGRlcGxveW1lbnQmbHQ7L2xpJmd0OwogICZsdDtsaSZndDtZb3UgbmVlZCB0byBiZSBjbG91ZCAob3IgaG9zdGluZykgcHJvdmlkZXItYWdub3N0aWMmbHQ7L2xpJmd0OwombHQ7L3VsJmd0OwoKJmx0O3AmZ3Q7RnVydGhlcm1vcmUsIEt1YmVybmV0ZXMgaGFzIGJ1aWx0LWluIHN1cHBvcnQgZm9yIGhpZ2gtYXZhaWxhYmlsaXR5IChBbWF6b24gUkRTIE11bHRpLUFaKSAgZGVwbG95bWVudHMsIHdoaWNoIG1ha2VzIGl0IGVhc2llciB0byBpbmNyZWFzZSBhcHAgcmVsaWFiaWxpdHkgYW5kIGF2YWlsYWJpbGl0eS4gT2YgY291cnNlLCBpdCBkb2VzIGltcG9zZSBvdmVyaGVhZDogaXQgdGFrZXMgdGltZSBhbmQgZW5naW5lZXJpbmcgcmVzb3VyY2VzIHRvIGNyZWF0ZSBhbmQgbWFuYWdlIGNsdXN0ZXJzLCBkZWZpbmUgcG9kcywgYW5kIGNyZWF0ZSBjb250YWluZXJpemVkIGFwcHMgc3VpdGFibGUgZm9yIGRlcGxveW1lbnQgdG8gS3ViZXJuZXRlcy4gQnV0IGlmIHlvdXIgYXBwIGlzIGJpZyBlbm91Z2ggdG8gYmVuZWZpdCBmcm9tIEt1YmVybmV0ZXMsIHRoZSBhZG1pbmlzdHJhdGl2ZSBvdmVyaGVhZCBpcyB3b3J0aCBpdC4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7Q29uY2x1c2lvbiZsdDsvaDImZ3Q7CiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7S3ViZXJuZXRlcyBpcyBwb3dlcmZ1bCwgYnV0IHRoYXQgZG9lcyBub3QgbWVhbiBpdOKAmXMgdGhlIHJpZ2h0IGNob2ljZSBmb3IgZXZlcnkgdGVhbSBhbmQgZXZlcnkgYXBwLiZsdDsvc3Ryb25nJmd0OyBBcyB3aXRoIGFueSBwaWVjZSBvZiB0ZWNobm9sb2d5LCBpdCBpcyBtYWRlIHRvIHNvbHZlIGEgY2VydGFpbiBzZXQgb2YgcHJvYmxlbXMuIElmIHlvdSBhcmVu4oCZdCBmYWNpbmcgdGhlIHByb2JsZW1zIEt1YmVybmV0ZXMgYWltcyB0byBzb2x2ZSwgaXQgaXMgbW9yZSB0cm91YmxlIHRoYW4gaXTigJlzIHdvcnRoLiZsdDsvcCZndDsKCiZsdDtwJmd0O0RvbuKAmXQganVzdCBnaXZlIEt1YmVybmV0ZXMgYSBwbGFjZSBpbiB5b3VyIGluZnJhc3RydWN0dXJlIHRvb2xib3guIE1ha2UgS3ViZXJuZXRlcyBlYXJuIGl0LiBFc3BlY2lhbGx5IGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBuZXcgYXBwbGljYXRpb24uJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Rmlyc3QsIHVzZSBhdmFpbGFibGUgdG9vbHMgdG8gZ2V0IHRoZSBhcHAgb3V0IHF1aWNrbHkuIFdoZW4geW91ciBhcHBsaWNhdGlvbiByZWFjaGVzIGEgc3RhZ2Ugd2hlcmUgZGVwbG95bWVudCBhbmQgc2NhbGluZyBpcyBiZWNvbWluZyBhIGpvYiBvZiBpdHMgb3duLCBpdCBtYWtlcyBzZW5zZSB0byBzdGFydCB0aGlua2luZyBhYm91dCBvcmNoZXN0cmF0aW9uIOKAlCBhbmQsIHF1aXRlIG5hdHVyYWxseSwgS3ViZXJuZXRlcyBhcyB5b3VyIG9yY2hlc3RyYXRpb24gdG9vbC4gT25jZSB5b3UgYXJlIHJlYWR5LCBjaGVjayBvdXQgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL2dldHRpbmctc3RhcnRlZC13aXRoLWt1YmVybmV0ZXMtaG93LXRvLXNldC11cC15b3VyLWZpcnN0LWNsdXN0ZXIvJnF1b3Q7Jmd0O0dldHRpbmcgc3RhcnRlZCB3aXRoIEt1YmVybmV0ZXM6IGhvdyB0byBzZXQgdXAgeW91ciBmaXJzdCBjbHVzdGVyJmx0Oy9hJmd0Oy4mbHQ7L3AmZ3Q7CjwvZGVzY3JpcHRpb24+CiAgICAgICAgCiAgICAgIDwvaXRlbT4KICAgIAogICAgICAKICAgICAgPGl0ZW0+CiAgICAgICAgPHRpdGxlPkNJIHBpcGVsaW5lcyBmb3IgdGVzdGluZyBtaWNyb3NlcnZpY2VzIHdpdGggRGVwbG95SHViIGFuZCBDaXJjbGVDSTwvdGl0bGU+CiAgICAgICAgPGxpbms+aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy9jaS1waXBlbGluZXMtZm9yLXRlc3RpbmctbWljcm9zZXJ2aWNlcy88L2xpbms+CiAgICAgICAgPHB1YkRhdGU+VHVlLCAyMCBPY3QgMjAyMCAwODowMDowMCAtMDcwMDwvcHViRGF0ZT4KICAgICAgICA8Z3VpZCBpc1Blcm1hTGluaz0idHJ1ZSI+aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy9jaS1waXBlbGluZXMtZm9yLXRlc3RpbmctbWljcm9zZXJ2aWNlcy88L2d1aWQ+CiAgICAgICAgCiAgICAgICAgICA8ZGM6Y3JlYXRvcj5UcmFjeSBSYWdhbjwvZGM6Y3JlYXRvcj4KICAgICAgICAKICAgICAgICAKICAgICAgICAgIDxkZXNjcmlwdGlvbj4mbHQ7cCZndDtUZXN0aW5nIG1pY3Jvc2VydmljZXMgc2hvdWxkbuKAmXQgYmUgdGhhdCBkaWZmZXJlbnQgZnJvbSB0ZXN0aW5nIGEgbW9ub2xpdGhpYyBhcHBsaWNhdGlvbi4gSG93ZXZlciwgdGhlcmUgYXJlIHNvbWUgY2hhbGxlbmdlcyB3ZSBtdXN0IGFkZHJlc3MgdG8gbWFrZSB0aGlzIHRyYW5zaXRpb24gZWFzeS4gVGhlIHF1ZXN0aW9uIHRvIGFuc3dlciBpcywg4oCcaG93IGRvIHdlIHBlcmZvcm0gZnVuY3Rpb25hbCB0ZXN0cyBvbiBhIGRlY29tcG9zZWQgYXBwbGljYXRpb24/4oCdJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7QXMgd2UgbW92ZSBhd2F5IGZyb20gbW9ub2xpdGhpYyBwcmFjdGljZXMgYW5kIGludG8gYSBLdWJlcm5ldGVzIG1pY3Jvc2VydmljZSBlbnZpcm9ubWVudCwgd2UgbG9zZSB0aGUgY29uY2VwdCBvZiBhbiBhcHBsaWNhdGlvbiB2ZXJzaW9uLiBJbnN0ZWFkIHdlIGFyZSBmYWNlZCB3aXRoIGxvdHMgb2YgbG9vc2VseS1jb3VwbGVkLCBpbmRlcGVuZGVudCBmdW5jdGlvbnMgd2l0aCBSRVNUZnVsIEFQSXMuIFdoaWxlIHRoZSBjb25jZXB0IG9mIEFQSSBjb250cmFjdCB0ZXN0aW5nIGFwcGxpZXMgYXQgdGhlIHVuaXQgdGVzdGluZyBsZXZlbCwgd2UgaGF2ZSB3b3JrIHRvIGRvIHRvIHB1bGwgdG9nZXRoZXIgb3VyIGZ1bmN0aW9uYWwgdGVzdGluZyBoYXJuZXNzLiZsdDsvcCZndDsKCiZsdDtoMiZndDtUZXN0aW5nIG1pY3Jvc2VydmljZXMgYXQgYSBmdW5jdGlvbmFsIGxldmVsJmx0Oy9oMiZndDsKCiZsdDtwJmd0O1VuaXQgdGVzdGluZyBpbmRpdmlkdWFsIEFQSXMgb3IgbWljcm9zZXJ2aWNlcyBkb2VzIG5vdCB2YWxpZGF0ZSB0aGUgcmVhZGluZXNzIG9mIGEgZnVsbCBhcHBsaWNhdGlvbiByZWxlYXNlLiBGb3IgdGhpcyByZWFzb24sIHdlIGNhbiBub3QgZWxpbWluYXRlIHRoZSBmdW5jdGlvbmFsIHRlc3RpbmcgcHJvY2VzcyBlbnRpcmVseS4gSWYgd2UgZG8sIHdlIHJpc2sgbWlzc2luZyBzaXR1YXRpb25zIHdoZXJlIG9uZSBtaWNyb3NlcnZpY2UgaXMgdXNpbmcgYW4gb2xkZXIgdmVyc2lvbiBvZiBhbm90aGVyIG1pY3Jvc2VydmljZSwgYW5kIHRoYXQgY2F1c2VzIGFuIGFkdmVyc2UgaW1wYWN0LiBUaGlzIGxldmVsIG9mIGFub21hbHkgY2FuIG9ubHkgYmUgZm91bmQgd2hlbiB3ZSBwZXJmb3JtIGZ1bmN0aW9uYWwgdGVzdGluZyBvbiB0aGUgYXBwbGljYXRpb24gYXMgYSBjb21wbGV0ZSBwcm9kdWN0LiZsdDsvcCZndDsKCiZsdDtwJmd0O0luIG1vbm9saXRoaWMgZW52aXJvbm1lbnRzLCB0aGUgYXBwbGljYXRpb24gdmVyc2lvbiBpcyBvdXIgcmVsZWFzZSBjYW5kaWRhdGUuIEEgbmV3IHJlbGVhc2UgY2FuZGlkYXRlIGluaXRpYXRlcyB0aGUgd29yayBkb25lIGJ5IG91ciBmdW5jdGlvbmFsIHRlc3QgaGFybmVzcywgd2hpY2ggaW4gbWFueSBjYXNlcyBsYWdzIGJlaGluZCB0aGUgZGV2ZWxvcG1lbnQgc3ByaW50cyB0aGF0IHBlcmZvcm0gdW5pdCB0ZXN0aW5nIG9uIHRoZSBBUEkgY29udHJhY3RzLiBXaGlsZSBkZXZlbG9wbWVudCB0ZWFtcyBtYXkgbWFrZSBpbmNyZW1lbnRhbCBjb2RpbmcgY2hhbmdlcywgZnVuY3Rpb25hbCB0ZXN0aW5nIGlzIGJhc2VkIG9uIGEgZnVsbCByZWxlYXNlIGNhbmRpZGF0ZSwgYW5kIHRoZSByZWxlYXNlIG9mIHRoYXQgY2FuZGlkYXRlIGNhdXNlcyB0aGUgZXhlY3V0aW9uIG9mIGFuIGVudGlyZWx5IGRpZmZlcmVudCBzZXQgb2YgbGlua2VkIHRlc3QgY2FzZXMuIFdoZW4gdGVzdGluZyBtaWNyb3NlcnZpY2VzLCB0aGlzIGxldmVsIG9mIGZ1bmN0aW9uYWwgdGVzdGluZyBpcyBzdGlsbCByZXF1aXJlZCBhbmQgY3JpdGljYWwuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7SWRlYWxseSwgd2Ugd2FudCB0byBsZWF2ZSBvdXIgZnVuY3Rpb25hbCB0ZXN0aW5nIGluIHBsYWNlIGV2ZW4gd2hlbiBvdXIgYXBwbGljYXRpb24gaXMgYnVpbHQgb24gYSBzZXQgb2YgbG9vc2VseSBjb3VwbGVkIHNlcnZpY2VzLiBUbyBkbyB0aGlzLCB3ZSBuZWVkIHZpc2liaWxpdHkgaW50byB0aGUgbG9naWNhbCBhcHBsaWNhdGlvbiB2ZXJzaW9uLiBJbiBvcmRlciB0byByZW1haW4gZWZmaWNpZW50IGF0IHRoZSBmdW5jdGlvbmFsIHRlc3RpbmcgbGV2ZWwsIHdlIG5lZWQgc29tZSBpbnNpZ2h0cyBpbnRvIHdoYXQgaGFzIGNoYW5nZWQgYmV0d2VlbiB0d28gYXBwbGljYXRpb24gdmVyc2lvbnMsIGFsbG93aW5nIHRoZSBmdW5jdGlvbmFsIHRlc3RpbmcgdG8gYmUgdGFyZ2V0ZWQuIFdoYXQgd2Ugd2FudCB0byBhdm9pZCBpcyBjb25zdGFudGx5IHJldGVzdGluZyBldmVyeXRoaW5nIHNpbXBseSBiZWNhdXNlIHdlIGhhdmUgbm8gcmVmZXJlbmNlIGFzIHRvIHdoaWNoIG1pY3Jvc2VydmljZSBjYXVzZWQgYSBuZXcgcmVsZWFzZSBvZiB0aGUgYXBwbGljYXRpb24gdmVyc2lvbi4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7UmUtaW1hZ2luaW5nIGNvbnRpbnVvdXMgaW50ZWdyYXRpb24mbHQ7L2gyJmd0OwombHQ7cCZndDtJbiBtb25vbGl0aGljIGVudmlyb25tZW50cywgd2UgcmVseSBvbiBvdXIgYXBwbGljYXRpb24gYnVpbGQgKGNvbXBpbGUvbGluaykgdG8gY3JlYXRlIGEgbmV3IHZlcnNpb24gb2YgdGhlIGFwcGxpY2F0aW9uLCBjcmVhdGluZyBhIG5ldyByZWxlYXNlIGNhbmRpZGF0ZS4gVGhpcyBuZXcgdmVyc2lvbiBpcyB0aGVuIHB1c2hlZCB0byB0aGUgdGVzdGluZyB0ZWFtIHRvIGV4ZWN1dGUgYSBmdW5jdGlvbmFsIHRlc3QuIFdpdGggbWljcm9zZXJ2aWNlcywgdGhpcyBidWlsZCBnb2VzIGF3YXkuIEluc3RlYWQsIG91ciBidWlsZCB0YWtlcyBhIHNpbmdsZSBtaWNyb3NlcnZpY2UgYW5kIGJ1aWxkcyBhIG5ldyBjb250YWluZXIgaW1hZ2UuIFRoYXQgY29udGFpbmVyIGltYWdlIGlzIHRoZW4gcHVzaGVkIHVwIHRvIGEgY29udGFpbmVyIHJlZ2lzdHJ5LiBOb3cgd2UgaGF2ZSBhIG5ldyBtaWNyb3NlcnZpY2UgcmVsZWFzZSBjYW5kaWRhdGUsIHdoaWNoIGluIHR1cm4gY3JlYXRlZCBhIG5ldyBhcHBsaWNhdGlvbiB2ZXJzaW9uIHJlbGVhc2UgY2FuZGlkYXRlLiBXZWxjb21lIHRvIHlvdXIgbmV3ICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9jaXJjbGVjaS5jb20vY29udGludW91cy1pbnRlZ3JhdGlvbi8mcXVvdDsmZ3Q7Y29udGludW91cyBpbnRlZ3JhdGlvbiZsdDsvYSZndDsgcHJvY2Vzcy4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7VGVzdGluZyBtaWNyb3NlcnZpY2VzJmx0Oy9oMiZndDsKJmx0O3AmZ3Q7Jmx0O2EgaHJlZj0mcXVvdDtodHRwczovL3d3dy5kZXBsb3lodWIuY29tLyZxdW90OyZndDtEZXBsb3lIdWImbHQ7L2EmZ3Q7IHJlc3VycmVjdHMgdGhlIGFwcGxpY2F0aW9uIHZlcnNpb24gaW4gYSBtaWNyb3NlcnZpY2VzIGltcGxlbWVudGF0aW9uIHRvIHN1cHBvcnQgeW91ciBmdW5jdGlvbmFsIHRlc3RpbmcuIEl0IGRvZXMgdGhpcyB1c2luZyBhdXRvbWF0ZWQgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50IHRoYXQgYXV0b21hdGljYWxseSBjcmVhdGVzIG5ldyBhcHBsaWNhdGlvbiB2ZXJzaW9ucyBlYWNoIHRpbWUgYSBuZXcgbWljcm9zZXJ2aWNlIGhhcyBiZWVuIHJlZ2lzdGVyZWQuIFNpbmNlIG1pY3Jvc2VydmljZXMgYXJlIHNoYXJlZCwgYSBuZXcgbWljcm9zZXJ2aWNlIHdpbGwgb2Z0ZW4gY3JlYXRlIG11bHRpcGxlIGFwcGxpY2F0aW9uIHJlbGVhc2UgY2FuZGlkYXRlcy4gRGVwbG95SHViIHRyYWNrcyB0aGUgbWljcm9zZXJ2aWNlIGltcGFjdCB0byBhbGwgY29uc3VtaW5nIGFwcGxpY2F0aW9ucy4gVGhpcyBpbXBhY3QgYW5hbHlzaXMgYWxsb3dzIERlcGxveUh1YiB0byB0aGVuIGluZm9ybSBDaXJjbGVDSSB0byBpbml0aWF0ZSB0ZXN0aW5nIHdvcmtmbG93cyBmb3IgbXVsdGlwbGUgYXBwbGljYXRpb25zLCBwcm92aWRpbmcgZGV0YWlscyBvbiBleGFjdGx5IHdoaWNoIG1pY3Jvc2VydmljZXMgY2F1c2VkIHRoZSBuZXcgYXBwbGljYXRpb24gcmVsZWFzZS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7aW1nIHNyYz0mcXVvdDsvYmxvZy9tZWRpYS8yMDIwLTEwLTE5LWRoMS5wbmcmcXVvdDsgYWx0PSZxdW90OyZxdW90OyAvJmd0OyZsdDsvcCZndDsKCiZsdDtoMiZndDtUaGUgRGVwbG95SHViIG9yYiZsdDsvaDImZ3Q7CiZsdDtwJmd0O1RoZSAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2RldmVsb3Blci9vcmJzL29yYi9kZXBsb3lodWIvZGVwbG95aHViLW9yYiZxdW90OyZndDtEZXBsb3lIdWIgb3JiJmx0Oy9hJmd0OyBpbnRlZ3JhdGVzIGludG8gQ2lyY2xlQ0kgdG8gcGVyZm9ybSBhdXRvbWF0ZWQgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50IGFzIHNvb24gYXMgYSBuZXcgY29udGFpbmVyIGhhcyBiZWVuIGNyZWF0ZWQgYW5kIHJlZ2lzdGVyZWQuIERlcGxveUh1YiB0aGVuIGF1dG9tYXRpY2FsbHkgaW5jcmVtZW50cyB0aGUgYXBwbGljYXRpb24gdmVyc2lvbiBvZiBhbGwgaW1wYWN0ZWQgYXBwbGljYXRpb25zLCBhbmQgcnVucyB0aGUgd29ya2Zsb3cgb2YgZWFjaC4gRGVwbG95SHViIHVzZXMgYSBrZXkgdmFsdWUgcGFpciBhdCB0aGUgYXBwbGljYXRpb24gbGV2ZWwgdG8gc3BlY2lmeSB0aGUgZGVmYXVsdCB0ZXN0aW5nIGVudmlyb25tZW50IGZvciBkZXBsb3ltZW50IGFuZCB0aGUgbmFtZSBvZiB0aGUgQ2lyY2xlQ0kgdGVzdGluZyBwaXBlbGluZSB0byBydW4gcG9zdCBkZXBsb3ltZW50LiBBZGRpdGlvbmFsbHksIERlcGxveUh1YiBwcm92aWRlcyBhbiBpbXBhY3QgYW5hbHlzaXMgdmlldyB0aGF0IHNob3dzLCBhdCBlYWNoIGFwcGxpY2F0aW9uIGxldmVsLCB3aGljaCBtaWNyb3NlcnZpY2UgaW5pdGlhdGVkIHRoZSBjaGFuZ2UuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0xMC0xOS1kaDIucG5nJnF1b3Q7IGFsdD0mcXVvdDsmcXVvdDsgLyZndDsmbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7U2VlIGl0IGluIGFjdGlvbiZsdDsvaDImZ3Q7CiZsdDtwJmd0O1dl4oCZdmUgbWFkZSBpdCBlYXN5IGZvciB5b3UuIENoZWNrIG91dCBvdXIgZGVtbyBvZiB0aGUgRGVwbG95SHViLUNpcmNsZUNJIGludGVncmF0aW9uLiZsdDsvcCZndDsKCiZsdDtkaXYgc3R5bGU9JnF1b3Q7dGV4dC1hbGlnbjogY2VudGVyJnF1b3Q7Jmd0OwogICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly95b3V0dS5iZS9FVHhLUEFwU2NJdyZxdW90OyZndDsKICAgICZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhL0NpcmNsZUNJK0RlcGxveUh1Yi5wbmcmcXVvdDsgYWx0PSZxdW90OyZxdW90OyAvJmd0OwogICZsdDsvYSZndDsKJmx0O2JyIC8mZ3Q7CgogICZsdDtwJmd0OwogICAgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL3lvdXR1LmJlL0VUeEtQQXBTY0l3JnF1b3Q7IHN0eWxlPSZxdW90O2NvbG9yOiMwMDAwRUU7JnF1b3Q7Jmd0OwogICAgICBXYXRjaCB0aGUgZnVsbCB2aWRlbyBoZXJlCiAgICAmbHQ7L2EmZ3Q7CiAgJmx0Oy9wJmd0OwombHQ7L2RpdiZndDsKCiZsdDtoMiZndDtDb25jbHVzaW9uJmx0Oy9oMiZndDsKJmx0O3AmZ3Q7VGVzdGluZyBtaWNyb3NlcnZpY2VzIGFuZCB0aGVpciBjb25zdW1pbmcgYXBwbGljYXRpb25zIGJlY29tZXMgbXVjaCBlYXNpZXIgd2l0aCBEZXBsb3lIdWIgaW50ZWdyYXRlZCBpbnRvIHlvdXIgQ2lyY2xlQ0kgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL3doYXQtaXMtYS1jaS1jZC1waXBlbGluZS8mcXVvdDsmZ3Q7cGlwZWxpbmVzJmx0Oy9hJmd0Oy4gVGVzdGluZyBiZWNvbWVzIGRyaXZlbiBieSBhbiBhdXRvbWF0ZWQgcHJvY2VzcyB0cmlnZ2VyZWQgYnkgYSByZWxlYXNlIGNhbmRpZGF0ZSBldmVudCwgaW4gbXVjaCB0aGUgc2FtZSB3YXkgYXMgd2UgZGlkIHdpdGggbW9ub2xpdGhpYyBlbnZpcm9ubWVudHMuIFlvdXIgZnVuY3Rpb25hbCB0ZXN0aW5nIHN1aXRlIHJlbWFpbnMgdW5jaGFuZ2VkIGFuZCBpbnNpZ2h0cyBzaG93IHlvdSB0aGUgaW1wYWN0IG9mIGEgc2luZ2xlIG1pY3Jvc2VydmljZSB1cGRhdGUgb24gYWxsIGFwcGxpY2F0aW9ucy4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7QWJvdXQgRGVwbG95SHViJmx0Oy9oMiZndDsKJmx0O3AmZ3Q7RGVwbG95SHViIGVtcG93ZXJzIG9yZ2FuaXphdGlvbnMgdG8gYWNoaWV2ZSBidXNpbmVzcyBhZ2lsaXR5IHRocm91Z2ggYSBtYW5hZ2VkIGFwcHJvYWNoIHRvIG1pY3Jvc2VydmljZXMuIERlcGxveUh1YiBlbGltaW5hdGVzIHRoZSBjb25mdXNpb24gYW5kIGNvbXBsZXhpdHkgY29tbW9uIHdpdGggbWljcm9zZXJ2aWNlcyBieSBwcm92aWRpbmcgYSBTYWFTIGNlbnRyYWxpemVkIHZpZXcgb2YgbWljcm9zZXJ2aWNlIHVzYWdlIGFuZCBzaGFyaW5nIGFjcm9zcyBjbHVzdGVycyBhbmQgdGVhbXMuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Rm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIHRvIHVzZSB0aGUgRGVwbG95SHViIENpcmNsZUNJIG9yYiwgZmluZCB1cyBvbiB0aGUgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9vcmJzL3JlZ2lzdHJ5L29yYi9kZXBsb3lodWIvZGVwbG95aHViLW9yYiZxdW90OyZndDtDaXJjbGVDSSBvcmIgcmVnaXN0cnkmbHQ7L2EmZ3Q7LiBZb3UgY2FuIGFsc28gbGVhcm4gbW9yZSBhYm91dCBEZXBsb3lIdWIgYXQgJmx0O2EgaHJlZj0mcXVvdDtodHRwOi8vd3d3LmRlcGxveWh1Yi5jb20mcXVvdDsmZ3Q7RGVwbG95SHViLmNvbSZsdDsvYSZndDsuIERlcGxveUh1YiBpcyBiYXNlZCBvbiB0aGUgJmx0O2EgaHJlZj0mcXVvdDtodHRwOi8vd3d3Lm9ydGVsaXVzLmlvJnF1b3Q7Jmd0O09ydGVsaXVzIE9wZW4gU291cmNlIFByb2plY3QmbHQ7L2EmZ3Q7LiZsdDsvcCZndDsKPC9kZXNjcmlwdGlvbj4KICAgICAgICAKICAgICAgPC9pdGVtPgogICAgCiAgICAgIAogICAgICA8aXRlbT4KICAgICAgICA8dGl0bGU+Q29udGludW91cyBpbnRlZ3JhdGlvbiBmb3IgQWRvbmlzIEFQSXM8L3RpdGxlPgogICAgICAgIDxsaW5rPmh0dHBzOi8vY2lyY2xlY2kuY29tL2Jsb2cvY29udGludW91cy1pbnRlZ3JhdGlvbi1mb3ItYWRvbmlzLWFwaXMvPC9saW5rPgogICAgICAgIDxwdWJEYXRlPkZyaSwgMTYgT2N0IDIwMjAgMDk6MDA6MDAgLTA3MDA8L3B1YkRhdGU+CiAgICAgICAgPGd1aWQgaXNQZXJtYUxpbms9InRydWUiPmh0dHBzOi8vY2lyY2xlY2kuY29tL2Jsb2cvY29udGludW91cy1pbnRlZ3JhdGlvbi1mb3ItYWRvbmlzLWFwaXMvPC9ndWlkPgogICAgICAgIAogICAgICAgICAgPGRjOmNyZWF0b3I+RmlrYXlvIEFkZXBvanU8L2RjOmNyZWF0b3I+CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgICA8ZGVzY3JpcHRpb24+Jmx0O3AmZ3Q7Jmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2Fkb25pc2pzLmNvbS8mcXVvdDsmZ3Q7QWRvbmlzLmpzJmx0Oy9hJmd0OyBpcyBvbmUgb2YgdGhlIGZhc3Rlc3QtZ3Jvd2luZyAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vbm9kZWpzLm9yZyZxdW90OyZndDtOb2RlLmpzJmx0Oy9hJmd0OyBmcmFtZXdvcmtzLiBBcyBzdGF0ZWQgb24gaXRzIGhvbWVwYWdlLCB0aGUgZnJhbWV3b3JrIGlzIGRlc2lnbmVkIGZvciBmYW5zIG9mICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy9ob3ctdG8tdGVzdC1zb2Z0d2FyZS1wYXJ0LWlpLXRkZC1hbmQtYmRkLyZxdW90OyZndDt0ZXN0LWRyaXZlbiBkZXZlbG9wbWVudCAoVEREKSZsdDsvYSZndDsuIEFzIGEgZmVhdHVyZSBvZiB0aGlzIGRlc2lnbiwgaXQgY29tZXMgYnVuZGxlZCB3aXRoIGEgc3BlY2lhbGl6ZWQgdGVzdGluZyBmcmFtZXdvcmsuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7SW4gdGhpcyB0dXRvcmlhbCwgeW91IHdpbGwgbGVhcm4gaG93IHRvIGF1dG9tYXRlIHRoZSB0ZXN0aW5nIG9mIGFuIEFkb25pcy5qcyBBUEkgc28gdGhhdCB5b3VyIHRlc3RzIHdpbGwgcnVuIG9uIGV2ZXJ5IGNoYW5nZSB0byB5b3VyIGNvZGViYXNlLiZsdDsvcCZndDsKCiZsdDtoMiZndDtQcmVyZXF1aXNpdGVzJmx0Oy9oMiZndDsKCiZsdDtwJmd0O1RvIGZvbGxvdyB0aGlzIHR1dG9yaWFsLCBhIGZldyB0aGluZ3MgYXJlIHJlcXVpcmVkOiZsdDsvcCZndDsKCiZsdDtvbCZndDsKICAmbHQ7bGkmZ3Q7QmFzaWMga25vd2xlZGdlIG9mIEphdmFzY3JpcHQmbHQ7L2xpJmd0OwogICZsdDtsaSZndDsmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vbm9kZWpzLm9yZyZxdW90OyZndDtOb2RlLmpzJmx0Oy9hJmd0OyBpbnN0YWxsZWQgb24geW91ciBzeXN0ZW0gKCZhbXA7Z3Q7PSA4LjApJmx0Oy9saSZndDsKICAmbHQ7bGkmZ3Q7Jmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2Fkb25pc2pzLmNvbS9kb2NzLzQuMS9pbnN0YWxsYXRpb24jX2luc3RhbGxpbmdfYWRvbmlzanMmcXVvdDsmZ3Q7QWRvbmlzLmpzIENMSSZsdDsvYSZndDsgaW5zdGFsbGVkIGdsb2JhbGx5Jmx0Oy9saSZndDsKICAmbHQ7bGkmZ3Q7QSAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL3NpZ251cC8mcXVvdDsmZ3Q7Q2lyY2xlQ0kmbHQ7L2EmZ3Q7IGFjY291bnQmbHQ7L2xpJmd0OwogICZsdDtsaSZndDtBICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9naXRodWIuY29tLyZxdW90OyZndDtHaXRIdWImbHQ7L2EmZ3Q7IGFjY291bnQmbHQ7L2xpJmd0OwombHQ7L29sJmd0OwoKJmx0O3AmZ3Q7V2l0aCBhbGwgdGhlc2UgaW5zdGFsbGVkIGFuZCBzZXQgdXAsIGxldOKAmXMgYmVnaW4gdGhlIHR1dG9yaWFsLiZsdDsvcCZndDsKCiZsdDtoMiZndDtDbG9uaW5nIHRoZSBBZG9uaXMuanMgQVBJIHByb2plY3QmbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7VG8gZ2V0IHN0YXJ0ZWQsIHlvdSBuZWVkIHRvIGNsb25lIHRoZSBBUEkgcHJvamVjdCB0aGF0IHdlIHdpbGwgYmUgdGVzdGluZy4gSW4geW91ciB0ZXJtaW5hbCwgcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBjbG9uZSB0aGUgYmFzZSBwcm9qZWN0OiZsdDsvcCZndDsKCiZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Jmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O3ByZSBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O2NvZGUmZ3Q7Z2l0IGNsb25lIC0tc2luZ2xlLWJyYW5jaCAtLWJyYW5jaCBiYXNlLXByb2plY3QgaHR0cHM6Ly9naXRodWIuY29tL0NJUkNMRUNJLUdXUC9hZG9uaXMtYXBpLXRlc3RpbmcuZ2l0CiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtwJmd0O1RoaXMgd2lsbCBpbW1lZGlhdGVseSBjbG9uZSB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7YmFzZS1wcm9qZWN0Jmx0Oy9jb2RlJmd0OyBicmFuY2ggb2YgdGhlIHJlcG9zaXRvcnkgaW50byB0aGUgbG9jYXRpb24gaW4gd2hpY2ggeW91IGhhdmUgcnVuIHRoZSBhYm92ZSBjb21tYW5kLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBvZiB0aGUgQVBJIHByb2plY3QuIEl0IGhhcyBubyB0ZXN0cyBzZXR1cC4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtOZXh0LCBnbyBpbnRvIHRoZSByb290IG9mIHRoZSBwcm9qZWN0IGFuZCBpbnN0YWxsIHRoZSByZXF1aXJlZCBkZXBlbmRlbmNpZXM6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDtjZCBhZG9uaXMtYXBpLXRlc3RpbmcKbnBtIGluc3RhbGwKJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7VGhlbiwgY3JlYXRlIGEgbmV3IGZpbGUgYXQgdGhlIHJvb3Qgb2YgdGhlIHByb2plY3Qgd2l0aCB0aGUgbmFtZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsuZW52Jmx0Oy9jb2RlJmd0OyAobm90ZSB0aGUgZG90ICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0Oy4mbHQ7L2NvZGUmZ3Q7KSwgYW5kIHBhc3RlIGluIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbjombHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0O0hPU1Q9MTI3LjAuMC4xClBPUlQ9MzMzMwpOT0RFX0VOVj1kZXZlbG9wbWVudApBUFBfTkFNRT1BZG9uaXNKcwpBUFBfVVJMPWh0dHA6Ly8ke0hPU1R9OiR7UE9SVH0KQ0FDSEVfVklFV1M9ZmFsc2UKQVBQX0tFWT1wZmk1TjJBQ040dE1KNWQ4ZDhCUEhmaDNGRXV2bGVlagpEQl9DT05ORUNUSU9OPXNxbGl0ZQpEQl9IT1NUPTEyNy4wLjAuMQpEQl9QT1JUPTMzMDYKREJfVVNFUj1yb290CkRCX1BBU1NXT1JEPQpEQl9EQVRBQkFTRT1hZG9uaXMKSEFTSF9EUklWRVI9YmNyeXB0CiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtwJmd0O1RoZSBhYm92ZSBjb25maWcgc3BlY2lmaWVzIHRoYXQgd2UgYXJlIGluIGEgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgYW5kIHRoYXQgd2Ugd2lsbCBiZSB1c2luZyBhICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O1NRbGl0ZSZsdDsvY29kZSZndDsgZGF0YWJhc2UgbmFtZWQgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7YWRvbmlzJmx0Oy9jb2RlJmd0OyBmb3IgcGVyc2lzdGVudCBzdG9yYWdlLiBUbyBnZXQgb3VyIGRhdGFiYXNlIGFuZCBkYXRhYmFzZSBzY2hlbWEgc2V0dXAsIHJ1biB0aGUgQWRvbmlzLmpzIHByb2plY3QgbWlncmF0aW9ucyB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZDombHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0O2Fkb25pcyBtaWdyYXRpb246cnVuCiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDgtMDItbWlncmF0aW9ucy1ydW4ucG5nJnF1b3Q7IGFsdD0mcXVvdDtNaWdyYXRpb25zIFJ1biZxdW90OyAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0O1dlIGhhdmUgbm93IGNvbXBsZXRlbHkgc2V0IHVwIG91ciBhcHBsaWNhdGlvbiBhbmQgY2FuIHRha2UgaXQgZm9yIGEgc3Bpbi4gQm9vdCB1cCB0aGUgYXBwbGljYXRpb24gYnkgcnVubmluZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDthZG9uaXMgc2VydmUgLS1kZXYKJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7VGhpcyBjb21tYW5kIHdpbGwgc3RhcnQgdGhlIEFQSSBydW5uaW5nIGF0ICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2h0dHA6Ly8xMjcuMC4wLjE6MzMzMyZsdDsvY29kZSZndDsuIFRoZSBwb3J0IG1pZ2h0IGJlIGRpZmZlcmVudCBpZiAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDszMzMzJmx0Oy9jb2RlJmd0OyBpcyBhbHJlYWR5IGluIHVzZSBvbiB5b3VyIHN5c3RlbS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtPdXIgQVBJIGlzIGEgc2ltcGxlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O1VzZXImbHQ7L2NvZGUmZ3Q7IGFjY291bnRzIEFQSS4gQXMgc2VlbiBpbiB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Li9zdGFydC9yb3V0ZXMuanMmbHQ7L2NvZGUmZ3Q7IGZpbGUsIGl0IGNvbnRhaW5zIHR3byBtYWluIGVuZHBvaW50cy4mbHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0Oy8vIHN0YXJ0L3JvdXRlcy5qcwoKJnF1b3Q7dXNlIHN0cmljdCZxdW90OzsKCmNvbnN0IFJvdXRlID0gdXNlKCZxdW90O1JvdXRlJnF1b3Q7KTsKClJvdXRlLmdldCgmcXVvdDsvJnF1b3Q7LCAoKSA9JmFtcDtndDsgewogIHJldHVybiB7IGdyZWV0aW5nOiAmcXVvdDtXZWxjb21lIHRvIHRoZSBBZG9uaXMgQVBJIHR1dG9yaWFsJnF1b3Q7IH07Cn0pOwoKLy9Vc2VyIGFwaSByb3V0ZXMKUm91dGUuZ3JvdXAoKCkgPSZhbXA7Z3Q7IHsKICBSb3V0ZS5wb3N0KCZxdW90O2NyZWF0ZSZxdW90OywgJnF1b3Q7VXNlckNvbnRyb2xsZXIuY3JlYXRlJnF1b3Q7KTsKCiAgUm91dGUucm91dGUoJnF1b3Q7Z2V0JnF1b3Q7LCAmcXVvdDtVc2VyQ29udHJvbGxlci5mZXRjaCZxdW90OywgWyZxdW90O0dFVCZxdW90OywgJnF1b3Q7UE9TVCZxdW90O10pOwp9KS5wcmVmaXgoJnF1b3Q7dXNlciZxdW90Oyk7CiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtwJmd0O1RoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtjcmVhdGUmbHQ7L2NvZGUmZ3Q7IHJvdXRlIGNhbGxzIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtjcmVhdGUmbHQ7L2NvZGUmZ3Q7IG1ldGhvZCBvZiAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtVc2VyQ29udHJvbGxlciZsdDsvY29kZSZndDsgdG8gY3JlYXRlIGEgbmV3IHVzZXIgYnkgc3VwcGx5aW5nIGl0IHdpdGggYSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDt1c2VybmFtZSZsdDsvY29kZSZndDssICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2VtYWlsJmx0Oy9jb2RlJmd0OywgYW5kICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O3Bhc3N3b3JkJmx0Oy9jb2RlJmd0Oy4gV2UgYWxzbyBoYXZlIGEgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Z2V0Jmx0Oy9jb2RlJmd0OyBlbmRwb2ludCB0aGF0IHNpbXBseSBjYWxscyB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7ZmV0Y2gmbHQ7L2NvZGUmZ3Q7IGZ1bmN0aW9uIG9mICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O1VzZXJDb250cm9sbGVyJmx0Oy9jb2RlJmd0OyB0byByZXR1cm4gYW4gYXJyYXkgb2YgdXNlcnMgaW4gdGhlIGRhdGFiYXNlLiBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlc2UgY29udHJvbGxlciBmdW5jdGlvbnMgY2FuIGJlIGZvdW5kIGluIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDthcHAvQ29udHJvbGxlcnMvSHR0cC9Vc2VyQ29udHJvbGxlci5qcyZsdDsvY29kZSZndDsgZmlsZSBzaG93biBiZWxvdy4mbHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0Oy8vIGFwcC9Db250cm9sbGVycy9IdHRwL1VzZXJDb250cm9sbGVyLmpzCgphc3luYyBjcmVhdGUoeyByZXF1ZXN0LCByZXNwb25zZSB9KSB7CiAgICBjb25zdCBkYXRhID0gcmVxdWVzdC5wb3N0KCk7CgogICAgY29uc3QgcnVsZXMgPSB7CiAgICAgICAgdXNlcm5hbWU6IGByZXF1aXJlZHx1bmlxdWU6JHtVc2VyLnRhYmxlfWAsCiAgICAgICAgZW1haWw6IGByZXF1aXJlZHx1bmlxdWU6JHtVc2VyLnRhYmxlfWAsCiAgICAgICAgcGFzc3dvcmQ6IGByZXF1aXJlZGAKICAgIH07CgogICAgY29uc3QgbWVzc2FnZXMgPSB7CiAgICAgICAgJnF1b3Q7dXNlcm5hbWUucmVxdWlyZWQmcXVvdDs6ICZxdW90O0EgdXNlcm5hbWUgaXMgcmVxdWlyZWQmcXVvdDssCiAgICAgICAgJnF1b3Q7dXNlcm5hbWUudW5pcXVlJnF1b3Q7OiAmcXVvdDtUaGlzIHVzZXJuYW1lIGlzIHRha2VuLiBUcnkgYW5vdGhlci4mcXVvdDssCiAgICAgICAgJnF1b3Q7ZW1haWwucmVxdWlyZWQmcXVvdDs6ICZxdW90O0FuIEVtYWlsIGlzIHJlcXVpcmVkJnF1b3Q7LAogICAgICAgICZxdW90O2VtYWlsLnVuaXF1ZSZxdW90OzogJnF1b3Q7RW1haWwgYWxyZWFkeSBleGlzdHMmcXVvdDssCiAgICAgICAgJnF1b3Q7cGFzc3dvcmQucmVxdWlyZWQmcXVvdDs6ICZxdW90O0EgcGFzc3dvcmQgZm9yIHRoZSB1c2VyJnF1b3Q7CiAgICB9OwoKICAgIGNvbnN0IHZhbGlkYXRpb24gPSBhd2FpdCB2YWxpZGF0ZShkYXRhLCBydWxlcywgbWVzc2FnZXMpOwoKICAgIGlmICh2YWxpZGF0aW9uLmZhaWxzKCkpIHsKICAgICAgICBjb25zdCB2YWxpZGF0aW9uX21lc3NhZ2VzID0gdmFsaWRhdGlvbi5tZXNzYWdlcygpLm1hcCgobXNnT2JqZWN0KSA9JmFtcDtndDsgewogICAgICAgICAgICByZXR1cm4gbXNnT2JqZWN0Lm1lc3NhZ2U7CiAgICAgICAgfSk7CgogICAgICAgIHJldHVybiByZXNwb25zZS5zdGF0dXMoNDAwKS5zZW5kKHsKICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsCiAgICAgICAgICAgIG1lc3NhZ2U6IHZhbGlkYXRpb25fbWVzc2FnZXMKICAgICAgICB9KTsKICAgIH0KCiAgICB0cnkgewogICAgICAgIGxldCBjcmVhdGVfdXNlciA9IGF3YWl0IFVzZXIuY3JlYXRlVXNlcihkYXRhKTsKCiAgICAgICAgbGV0IHJldHVybl9ib2R5ID0gewogICAgICAgICAgICBzdWNjZXNzOiB0cnVlLAogICAgICAgICAgICBkZXRhaWxzOiBjcmVhdGVfdXNlciwKICAgICAgICAgICAgbWVzc2FnZTogJnF1b3Q7VXNlciBTdWNjZXNzdWxseSBjcmVhdGVkJnF1b3Q7CiAgICAgICAgfTsKCiAgICAgICAgcmVzcG9uc2Uuc2VuZChyZXR1cm5fYm9keSk7CiAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgIExvZ2dlci5lcnJvcigmcXVvdDtFcnJvciA6ICZxdW90OywgZXJyb3IpOwogICAgICAgIHJldHVybiByZXNwb25zZS5zdGF0dXMoNTAwKS5zZW5kKHsKICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsCiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yLnRvU3RyaW5nKCkKICAgICAgICB9KTsKICAgIH0KfSAvL2NyZWF0ZQoKCmFzeW5jIGZldGNoKHsgcmVxdWVzdCwgcmVzcG9uc2UgfSkgewogICAgY29uc3QgZGF0YSA9IHJlcXVlc3QuYWxsKCk7CgogICAgdHJ5IHsKICAgICAgY29uc3QgdXNlcnMgPSBhd2FpdCBVc2VyLmdldFVzZXJzKGRhdGEpOwoKICAgICAgcmVzcG9uc2Uuc2VuZCh1c2Vycyk7CiAgICB9IGNhdGNoIChlcnJvcikgewogICAgICBMb2dnZXIuZXJyb3IoJnF1b3Q7RXJyb3IgOiAmcXVvdDssIGVycm9yKTsKICAgICAgcmV0dXJuIHJlc3BvbnNlLnN0YXR1cyg1MDApLnNlbmQoewogICAgICAgIHN1Y2Nlc3M6IGZhbHNlLAogICAgICAgIG1lc3NhZ2U6IGVycm9yLnRvU3RyaW5nKCksCiAgICAgIH0pOwogICAgfQp9IC8vZmV0Y2gKJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwoKJmx0O2gyJmd0O1Rlc3RpbmcgdGhlIEFQSSB3aXRoIFBvc3RtYW4mbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7TGV04oCZcyBub3cgcHV0IG91ciBBUEkgdG8gdGhlIHRlc3QgYnkgY2FsbGluZyBvdXIgZW5kcG9pbnRzLiBXZSB3aWxsIGJlIHVzaW5nICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly93d3cucG9zdG1hbi5jb20vJnF1b3Q7Jmd0O1Bvc3RtYW4mbHQ7L2EmZ3Q7IHRvIHRlc3Qgb3VyIGVuZHBvaW50cy4gTWFrZSBzdXJlIHRoYXQgeW91ciBhcHAgaXMgcnVubmluZy4gSWYgbm90LCBydW4gJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7YWRvbmlzIHNlcnZlIC0tZGV2Jmx0Oy9jb2RlJmd0OyBvbmNlIGFnYWluLiZsdDsvcCZndDsKCiZsdDtoMyZndDtUZXN0aW5nIHVzZXIgY3JlYXRpb24mbHQ7L2gzJmd0OwoKJmx0O3AmZ3Q7Jmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0wOC0wMi11c2VyLWNyZWF0aW9uLXN1Y2Nlc3MucG5nJnF1b3Q7IGFsdD0mcXVvdDtVc2VyIENyZWF0aW9uIC0gU3VjY2VzZnVsbCZxdW90OyAvJmd0OyZsdDsvcCZndDsKCiZsdDtoMyZndDtUZXN0aW5nIHVzZXIgZmV0Y2gmbHQ7L2gzJmd0OwoKJmx0O3AmZ3Q7Jmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0wOC0wMi11c2VyLWZldGNoLnBuZyZxdW90OyBhbHQ9JnF1b3Q7VXNlciBGZXRjaCZxdW90OyAvJmd0OyZsdDsvcCZndDsKCiZsdDtoMiZndDtTZXR0aW5nIHVwIHRoZSB0ZXN0aW5nIGZyYW1ld29yayZsdDsvaDImZ3Q7CgombHQ7cCZndDtUaGUgbmV4dCBzdGVwIGlzIHRvIHNldCB1cCB0aGUgdGVzdGluZyBmcmFtZXdvcmsgZm9yIHRlc3RpbmcgQWRvbmlzLmpzIGFwcGxpY2F0aW9ucy4gRm9ydHVuYXRlbHksIEFkb25pcy5qcyBoYXMgaXRzIG93biBzcGVjaWFsaXplZCB0ZXN0aW5nIHBhY2thZ2Uga25vd24gYXMgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AYWRvbmlzanMvdm93JnF1b3Q7Jmd0O1ZvdyZsdDsvYSZndDsuIEluc3RhbGwgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Vm93Jmx0Oy9jb2RlJmd0OyB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZDombHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0O2Fkb25pcyBpbnN0YWxsIEBhZG9uaXNqcy92b3cKJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7VGhlIGluc3RhbGxhdGlvbiBvZiB0aGlzIHBhY2thZ2Ugd2lsbCBjYXVzZSB0aGUgZm9sbG93aW5nIGNoYW5nZXMgdG8geW91ciBwcm9qZWN0OiZsdDsvcCZndDsKCiZsdDt1bCZndDsKICAmbHQ7bGkmZ3Q7QSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDt2b3dmaWxlLmpzJmx0Oy9jb2RlJmd0OyBmaWxlIHdpbGwgYmUgY3JlYXRlZCBhdCB0aGUgcm9vdCBvZiB5b3VyIHByb2plY3QuJmx0Oy9saSZndDsKICAmbHQ7bGkmZ3Q7QSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDt0ZXN0Jmx0Oy9jb2RlJmd0OyBmb2xkZXIgd2lsbCBiZSBjcmVhdGVkIGF0IHRoZSByb290IG9mIHRoZSBwcm9qZWN0LiBUaGlzIGlzIHdoZXJlIGFsbCBvZiB0aGUgdGVzdHMgd2lsbCBiZSBjb250YWluZWQuIEluIG9yZGVyIHRvIG9yZ2FuaXplIHRlc3RzLCBhbGwgdW5pdCB0ZXN0cyBhcmUgcGxhY2VkIGluc2lkZSBhICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O3VuaXQmbHQ7L2NvZGUmZ3Q7IGZvbGRlciB3aXRoaW4gdGhpcyBmb2xkZXIuIEZ1bmN0aW9uYWwgdGVzdHMgYXJlIHBsYWNlZCBpbnNpZGUgYSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtmdW5jdGlvbmFsJmx0Oy9jb2RlJmd0OyBmb2xkZXIuIEJ5IGRlZmF1bHQsIGEgc2FtcGxlIHVuaXQgdGVzdCBzdWl0ZSBpcyBjcmVhdGVkIGluc2lkZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDt0ZXN0L3VuaXQvZXhhbXBsZS5zcGVjLmpzJmx0Oy9jb2RlJmd0Oy4mbHQ7L2xpJmd0OwogICZsdDtsaSZndDtBICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0Oy5lbnYudGVzdGluZyZsdDsvY29kZSZndDsgZmlsZSBpcyBjcmVhdGVkIGF0IHRoZSByb290IG9mIHRoZSBwcm9qZWN0IHRvIGNvbnRhaW4gZW52aXJvbm1lbnQgdmFyaWFibGVzIHNwZWNpZmljIHRvIHRlc3RpbmcgcHVycG9zZXMuIFRoaXMgZmlsZSBnZXRzIG1lcmdlZCB3aXRoICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0Oy5lbnYmbHQ7L2NvZGUmZ3Q7LCBzbyB5b3Ugb25seSBuZWVkIHRvIGRlZmluZSB2YWx1ZXMgeW91IHdhbnQgdG8gb3ZlcnJpZGUgZnJvbSB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7LmVudiZsdDsvY29kZSZndDsgZmlsZS4mbHQ7L2xpJmd0OwombHQ7L3VsJmd0OwoKJmx0O3AmZ3Q7UmVwbGFjZSB0aGUgY29udGVudCBvZiAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsuZW52LnRlc3RpbmcmbHQ7L2NvZGUmZ3Q7IHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gYmVsb3c6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDtIT1NUPTEyNy4wLjAuMQpQT1JUPTQwMDAKTk9ERV9FTlY9dGVzdGluZwpBUFBfTkFNRT1BZG9uaXNKcwpBUFBfVVJMPWh0dHA6Ly8ke0hPU1R9OiR7UE9SVH0KQ0FDSEVfVklFV1M9ZmFsc2UKQVBQX0tFWT1wZmk1TjJBQ040dE1KNWQ4ZDhCUEhmaDNGRXV2bGVlagpEQl9DT05ORUNUSU9OPXNxbGl0ZQpEQl9IT1NUPTEyNy4wLjAuMQpEQl9QT1JUPTMzMDYKREJfVVNFUj1yb290CkRCX1BBU1NXT1JEPQpEQl9EQVRBQkFTRT1hZG9uaXMKSEFTSF9EUklWRVI9YmNyeXB0CiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtwJmd0O1RoZSBmaW5hbCBzdGVwIHRvIGNvbXBsZXRlIG91ciB0ZXN0IHNldHVwIGlzIHRvIGFkZCB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Vm93Jmx0Oy9jb2RlJmd0OyBwcm92aWRlciB0byBvdXIgcHJvamVjdC4gSW4gdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0Oy4vc3RhcnQvYXBwLmpzJmx0Oy9jb2RlJmd0OyBmaWxlLCBhZGQgdGhlIGZvbGxvd2luZyBpdGVtIHRvIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDthY2VQcm92aWRlcnMmbHQ7L2NvZGUmZ3Q7IGFycmF5OiZsdDsvcCZndDsKCiZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Jmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O3ByZSBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O2NvZGUmZ3Q7Li4uCgpjb25zdCBhY2VQcm92aWRlcnMgPSBbCiAgLi4uLiwKICAmcXVvdDtAYWRvbmlzanMvdm93L3Byb3ZpZGVycy9Wb3dQcm92aWRlciZxdW90OwpdOwoKLi4uCiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtwJmd0O1J1biB0aGUgc2FtcGxlIHRlc3QgdGhhdCBjYW1lIHdpdGggdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O1ZvdyZsdDsvY29kZSZndDsgaW5zdGFsbGF0aW9uIGJ5IHJ1bm5pbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kOiZsdDsvcCZndDsKCiZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Jmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O3ByZSBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O2NvZGUmZ3Q7YWRvbmlzIHRlc3QKJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7VGhlIHNhbXBsZSB0ZXN0IHdpbGwgcnVuIHN1Y2Nlc3NmdWxseS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7aW1nIHNyYz0mcXVvdDsvYmxvZy9tZWRpYS8yMDIwLTA4LTAyLXNhbXBsZS10ZXN0LnBuZyZxdW90OyBhbHQ9JnF1b3Q7U2FtcGxlIFRlc3RzJnF1b3Q7IC8mZ3Q7Jmx0Oy9wJmd0OwoKJmx0O2gyJmd0O0FkZGluZyB0ZXN0cyZsdDsvaDImZ3Q7CgombHQ7cCZndDtJdCBpcyBub3cgdGltZSB0byBzdGFydCBhZGRpbmcgc29tZSBwcm9wZXIgdGVzdHMgdG8gb3VyIEFQSSBwcm9qZWN0LiBXZSB3aWxsIGJlIGFkZGluZyB0ZXN0cyB0byB0ZXN0IG91ciAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtjcmVhdGUmbHQ7L2NvZGUmZ3Q7IGFuZCAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtnZXQmbHQ7L2NvZGUmZ3Q7IGVuZHBvaW50cy4gUnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBjcmVhdGUgYSB0ZXN0IHN1aXRlIGluIHdoaWNoIHdlIHdpbGwgcHV0IG91ciB0ZXN0czombHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0O2Fkb25pcyBtYWtlOnRlc3QgVXNlcgombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7cCZndDtJbiB0aGUgb3B0aW9ucyB0aGF0IGRpc3BsYXkgYWZ0ZXIgcnVubmluZyB0aGlzIGNvbW1hbmQsIHNlbGVjdCAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtGdW5jdGlvbmFsIHRlc3QmbHQ7L2NvZGUmZ3Q7ICh1c2luZyB0aGUgYXJyb3cga2V5cykgYW5kIHByZXNzICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O0VudGVyJmx0Oy9jb2RlJmd0Oy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtBIG5ldyBmaWxlIGZvciB0aGUgdGVzdCBzdWl0ZSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBhdCAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDt0ZXN0L2Z1bmN0aW9uYWwvdXNlci5zcGVjLmpzJmx0Oy9jb2RlJmd0Oy4gSW4gdGhpcyBmaWxlLCByZXBsYWNlIHRoZSBjb250ZW50cyB3aXRoIHRoZSBmb2xsb3dpbmcgY29kZTombHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0Oy8vIHRlc3QvZnVuY3Rpb25hbC91c2VyLnNwZWMuanMKCiZxdW90O3VzZSBzdHJpY3QmcXVvdDs7Cgpjb25zdCB7IHRlc3QsIHRyYWl0LCBhZnRlciB9ID0gdXNlKCZxdW90O1Rlc3QvU3VpdGUmcXVvdDspKCZxdW90O1VzZXImcXVvdDspOwoKY29uc3QgVXNlciA9IHVzZSgmcXVvdDtBcHAvTW9kZWxzL1VzZXImcXVvdDspOwoKdHJhaXQoJnF1b3Q7VGVzdC9BcGlDbGllbnQmcXVvdDspOwoKY29uc3QgcmFuZG9tU3RyaW5nID0gZ2VuZXJhdGVSYW5kb21TdHJpbmcoKTsKCnRlc3QoJnF1b3Q7VGVzdCBVc2VyIGNyZWF0aW9uJnF1b3Q7LCBhc3luYyAoeyBjbGllbnQgfSkgPSZhbXA7Z3Q7IHsKICBjb25zdCB1c2VyRGF0YSA9IHsKICAgIHVzZXJuYW1lOiByYW5kb21TdHJpbmcsCiAgICBlbWFpbDogYCR7cmFuZG9tU3RyaW5nfUB0ZXN0LmNvbWAsCiAgICBwYXNzd29yZDogJnF1b3Q7MTIzNDU2JnF1b3Q7CiAgfTsKCiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdCgmcXVvdDsvdXNlci9jcmVhdGUmcXVvdDspLnNlbmQodXNlckRhdGEpLmVuZCgpOwoKICByZXNwb25zZS5hc3NlcnRTdGF0dXMoMjAwKTsKfSkudGltZW91dCgwKTsKCnRlc3QoJnF1b3Q7RmV0Y2ggYWxsIHVzZXJzJnF1b3Q7LCBhc3luYyAoeyBjbGllbnQgfSkgPSZhbXA7Z3Q7IHsKICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQoJnF1b3Q7L3VzZXIvZ2V0JnF1b3Q7KS5lbmQoKTsKCiAgcmVzcG9uc2UuYXNzZXJ0U3RhdHVzKDIwMCk7CiAgcmVzcG9uc2UuYXNzZXJ0SlNPTlN1YnNldChbCiAgICB7CiAgICAgIHVzZXJuYW1lOiByYW5kb21TdHJpbmcsCiAgICAgIGVtYWlsOiBgJHtyYW5kb21TdHJpbmd9QHRlc3QuY29tYAogICAgfQogIF0pOwp9KS50aW1lb3V0KDApOwoKLy9EZWxldGUgdGhlIGNyZWF0ZWQgdXNlcgphZnRlcihhc3luYyAoKSA9JmFtcDtndDsgewogIGF3YWl0IChhd2FpdCBVc2VyLmZpbmRCeSgmcXVvdDt1c2VybmFtZSZxdW90OywgcmFuZG9tU3RyaW5nKSkuZGVsZXRlKCk7Cn0pOwoKZnVuY3Rpb24gZ2VuZXJhdGVSYW5kb21TdHJpbmcobGVuZ3RoID0gNykgewogIHZhciByZXN1bHQgPSAmcXVvdDsmcXVvdDs7CiAgdmFyIGNoYXJhY3RlcnMgPQogICAgJnF1b3Q7QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkmcXVvdDs7CiAgdmFyIGNoYXJhY3RlcnNMZW5ndGggPSBjaGFyYWN0ZXJzLmxlbmd0aDsKICBmb3IgKHZhciBpID0gMDsgaSAmYW1wO2x0OyBsZW5ndGg7IGkrKykgewogICAgcmVzdWx0ICs9IGNoYXJhY3RlcnMuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNoYXJhY3RlcnNMZW5ndGgpKTsKICB9CiAgcmV0dXJuIHJlc3VsdDsKfQombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7cCZndDtJbiB0aGUgYWJvdmUgdGVzdCBzdWl0ZSwgdGhlIEFkb25pcy5qcyAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtUZXN0L0FwaUNsaWVudCZsdDsvY29kZSZndDsgdHJhaXQgaXMgdXNlZCB0byBnYWluIGFjY2VzcyB0byB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Y2xpZW50Jmx0Oy9jb2RlJmd0OyBvYmplY3QsIHdoaWNoIGlzIHVzZWQgdG8gY2FsbCBvdXIgZW5kcG9pbnRzLiBUaGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Z2VuZXJhdGVSYW5kb21TdHJpbmcmbHQ7L2NvZGUmZ3Q7IHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY3JlYXRlIGEgZmFrZSB1c2VybmFtZSBhbmQgZW1haWwgZm9yIGEgdGVzdCB1c2VyLiZsdDsvcCZndDsKCiZsdDtwJmd0O0luIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtUZXN0IFVzZXIgY3JlYXRpb24mbHQ7L2NvZGUmZ3Q7IHRlc3QsIHdlIGNyZWF0ZSBhIG5ldyB1c2VyIGJ5IGNhbGxpbmcgdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2NyZWF0ZSZsdDsvY29kZSZndDsgZW5kcG9pbnQgd2l0aCB0aGUgYXBwcm9wcmlhdGUgZGF0YSwgYW5kIGNoZWNraW5nIGlmIHdlIGdldCBhICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OzIwMCZsdDsvY29kZSZndDsgcmVzcG9uc2UgY29kZSB0aGF0IGluZGljYXRlcyB0aGF0IHRoZSBvcGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWwuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7SW4gdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O0ZldGNoIGFsbCB1c2VycyZsdDsvY29kZSZndDsgdGVzdCwgdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2NsaWVudCZsdDsvY29kZSZndDsgb2JqZWN0IGlzIHVzZWQgdG8gY2FsbCBvdXIgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Z2V0Jmx0Oy9jb2RlJmd0OyBlbmRwb2ludC4gVGhlIHJlc3BvbnNlIGlzIHRoZW4gdGVzdGVkIHRvIGVuc3VyZSB0aGF0IGl0IHJldHVybnMgYSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsyMDAmbHQ7L2NvZGUmZ3Q7IHN0YXR1cyBjb2RlLiBXZSBhbHNvIGNoZWNrIHRvIHNlZSBpZiBpdCByZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIHVzZXIgd2UgY3JlYXRlZCBpbiB0aGUgcHJldmlvdXMgdGVzdC4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtXZSBhdHRhY2ggJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7LnRpbWVvdXQoMCkmbHQ7L2NvZGUmZ3Q7IHRvIGVhY2ggdGVzdCB0byBvdmVycmlkZSB0aGUgdGltZW91dCBsaW1pdCBmb3IgdGhlIHRlc3QgcnVubmVyIGFzIGZ1bmN0aW9uYWwgYW5kIGJyb3dzZXIgdGVzdHMgbWlnaHQgdGFrZSBhIHdoaWxlIHRvIHJ1bi4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtGaW5hbGx5LCB3ZSBkbyBzb21lIGNsZWFuIHVwIGJ5IGRlbGV0aW5nIHRoZSB0ZXN0IHVzZXIgd2UgY3JlYXRlZC4gVGhpcyBpcyBkb25lIGFmdGVyIGJvdGggdGVzdHMgaGF2ZSBjb21wbGV0ZWQuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7VGltZSB0byBydW4gYWxsIHRoZSB0ZXN0cyBjb250YWluZWQgaW4gdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O3Rlc3RzJmx0Oy9jb2RlJmd0OyBmb2xkZXIuIFRvIGRvIHRoYXQsIHJ1biB0aGUgdGVzdCBjb21tYW5kIG9uY2UgYWdhaW46Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDthZG9uaXMgdGVzdAombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7cCZndDsmbHQ7aW1nIHNyYz0mcXVvdDsvYmxvZy9tZWRpYS8yMDIwLTA4LTAyLWFsbC10ZXN0cy1ydW4ucG5nJnF1b3Q7IGFsdD0mcXVvdDtBbGwgVGVzdHMgUnVuJnF1b3Q7IC8mZ3Q7Jmx0Oy9wJmd0OwoKJmx0O2gyJmd0O0Nvbm5lY3RpbmcgdGhlIEFQSSBwcm9qZWN0IHRvIENpcmNsZUNJJmx0Oy9oMiZndDsKCiZsdDtwJmd0O091ciBuZXh0IHRhc2sgaXMgdG8gZ2V0IG91ciBwcm9qZWN0IHNldCB1cCBvbiBDaXJjbGVDSS4gRmlyc3QsIHlvdSBuZWVkIHRvIGluaXRpYWxpemUgeW91ciBBZG9uaXMuanMgcHJvamVjdCBhcyBhICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2dpdCZsdDsvY29kZSZndDsgcmVwb3NpdG9yeS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtUaGVuLCBjcmVhdGUgYSByZW1vdGUgR2l0SHViIHJlcG9zaXRvcnkgZm9yIHRoZSBwcm9qZWN0LCBjb21taXQgeW91ciBjaGFuZ2VzIChpZiBhbnkpLCBhbmQgcHVzaCB0aGUgbG9jYWwgcHJvamVjdCB0byB0aGUgcmVtb3RlIHJlcG9zaXRvcnkuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7TmV4dCwgZ28gdG8gdGhlICZsdDtzdHJvbmcmZ3Q7QWRkIFByb2plY3RzJmx0Oy9zdHJvbmcmZ3Q7IHBhZ2Ugb24gdGhlIENpcmNsZUNJIGRhc2hib2FyZCB0byBhZGQgdGhlIHByb2plY3QuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0wOC0wMi1hZGQtcHJvamVjdC5wbmcmcXVvdDsgYWx0PSZxdW90O0FkZCBQcm9qZWN0IC0gQ2lyY2xlQ0kmcXVvdDsgLyZndDsmbHQ7L3AmZ3Q7CgombHQ7cCZndDtDbGljayAmbHQ7c3Ryb25nJmd0O1NldCBVcCBQcm9qZWN0Jmx0Oy9zdHJvbmcmZ3Q7LiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDgtMDItYWRkLWNvbmZpZy5wbmcmcXVvdDsgYWx0PSZxdW90O0FkZCBDb25maWcgLSBDaXJjbGVDSSZxdW90OyAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0O09uIHRoZSBzZXR1cCBwYWdlLCBjbGljayAmbHQ7c3Ryb25nJmd0O0FkZCBNYW51YWxseSZsdDsvc3Ryb25nJmd0OyB0byBpbnN0cnVjdCBDaXJjbGVDSSB0aGF0IHdlIHdvdWxkIGJlIGFkZGluZyBhIGNvbmZpZ3VyYXRpb24gZmlsZSBtYW51YWxseSBhbmQgbm90IHVzaW5nIHRoZSBzYW1wbGUgZGlzcGxheWVkLiBOZXh0LCB5b3UgZ2V0IGEgcHJvbXB0IHRvIGVpdGhlciBkb3dubG9hZCBhIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIHBpcGVsaW5lIG9yIHN0YXJ0IGJ1aWxkaW5nLiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDgtMDItc3RhcnQtYnVpbGQtcHJvbXB0LnBuZyZxdW90OyBhbHQ9JnF1b3Q7QnVpbGQgUHJvbXB0IC0gQ2lyY2xlQ0kmcXVvdDsgLyZndDsmbHQ7L3AmZ3Q7CgombHQ7cCZndDtDbGljayAmbHQ7c3Ryb25nJmd0O1N0YXJ0IEJ1aWxkaW5nJmx0Oy9zdHJvbmcmZ3Q7IHRvIGJlZ2luIHRoZSBidWlsZC4gVGhpcyBidWlsZCB3aWxsIGZhaWwgYmVjYXVzZSB3ZSBoYXZlIG5vdCBzZXQgdXAgb3VyIGNvbmZpZ3VyYXRpb24gZmlsZSB5ZXQsIHRoaXMgd2Ugd2lsbCBkbyBsYXRlciBvbi4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7QXV0b21hdGluZyBvdXIgdGVzdHMmbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7Tm93IHRoYXQgd2UgaGF2ZSBvdXIgcHJvamVjdCBjb25uZWN0ZWQgdG8gQ2lyY2xlQ0ksIHdlIGNhbiB3cml0ZSBhIGNvbmZpZ3VyYXRpb24gZm9yIG91ciAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2NvbnRpbnVvdXMtaW50ZWdyYXRpb24vJnF1b3Q7Jmd0O2NvbnRpbnVvdXMgaW50ZWdyYXRpb24gKENJKSZsdDsvYSZndDsgcGlwZWxpbmUgdGhhdCB3aWxsIGF1dG9tYXRlIG91ciB0ZXN0aW5nIHByb2Nlc3MuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7QXQgdGhlIHJvb3Qgb2YgeW91ciB0aGUgcHJvamVjdCwgY3JlYXRlIGEgZm9sZGVyIG5hbWVkICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0Oy5jaXJjbGVjaSZsdDsvY29kZSZndDssIGFuZCBhIGZpbGUgd2l0aGluIGl0IG5hbWVkICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2NvbmZpZy55bWwmbHQ7L2NvZGUmZ3Q7LiBJbnNpZGUgdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2NvbmZpZy55bWwmbHQ7L2NvZGUmZ3Q7IGZpbGUsIGVudGVyIHRoZSBmb2xsb3dpbmcgY29kZTombHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0O3ZlcnNpb246IDIuMQpqb2JzOgogIGJ1aWxkOgogICAgd29ya2luZ19kaXJlY3Rvcnk6IH4vcmVwbwogICAgZG9ja2VyOgogICAgICAtIGltYWdlOiBjaXJjbGVjaS9ub2RlOjExLWJyb3dzZXJzCiAgICBzdGVwczoKICAgICAgLSBjaGVja291dAogICAgICAtIHJ1bjoKICAgICAgICAgIG5hbWU6IFVwZGF0ZSBOUE0KICAgICAgICAgIGNvbW1hbmQ6ICZxdW90O3N1ZG8gbnBtIGluc3RhbGwgLWcgbnBtJnF1b3Q7CiAgICAgIC0gcmVzdG9yZV9jYWNoZToKICAgICAgICAgIGtleTogZGVwZW5kZW5jeS1jYWNoZS17eyBjaGVja3N1bSAmcXVvdDtwYWNrYWdlLWxvY2suanNvbiZxdW90OyB9fQogICAgICAtIHJ1bjoKICAgICAgICAgIG5hbWU6IEluc3RhbGwgRGVwZW5kZW5jaWVzCiAgICAgICAgICBjb21tYW5kOiBucG0gaW5zdGFsbAogICAgICAtIHNhdmVfY2FjaGU6CiAgICAgICAgICBrZXk6IGRlcGVuZGVuY3ktY2FjaGUte3sgY2hlY2tzdW0gJnF1b3Q7cGFja2FnZS1sb2NrLmpzb24mcXVvdDsgfX0KICAgICAgICAgIHBhdGhzOgogICAgICAgICAgICAtIC4vbm9kZV9tb2R1bGVzCiAgICAgIC0gcnVuOgogICAgICAgICAgbmFtZTogUnVuIE1pZ3JhdGlvbnMKICAgICAgICAgIGNvbW1hbmQ6IHwKICAgICAgICAgICAgbXYgLmVudi50ZXN0aW5nIC5lbnYKICAgICAgICAgICAgbm9kZSBhY2UgbWlncmF0aW9uOnJ1bgogICAgICAtIHJ1bjoKICAgICAgICAgIG5hbWU6IFJ1biB0ZXN0cwogICAgICAgICAgY29tbWFuZDogbnBtIHJ1biB0ZXN0CiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtwJmd0O0luIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgYWJvdmUsIHdlIHN0YXJ0IGJ5IHVwZGF0aW5nICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O25wbSZsdDsvY29kZSZndDsgdG8gZW5zdXJlIHRoYXQgd2UgYXJlIHVzaW5nIHRoZSBsYXN0ZXN0IHZlcnNpb24uIE5leHQsIHdlIGluc3RhbGwgdGhlIHJlcXVpcmVkIGRlcGVuZGVuY2llcyBhbmQgY2FjaGUgdGhlbS4gV2UgdGhlbiBjcmVhdGUgb3VyIGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb24gZmlsZSAoJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7LmVudiZsdDsvY29kZSZndDspIGFuZCBydW4gb3VyIG1pZ3JhdGlvbnMuIFdpdGggYWxsIGRlcGVuZGVuY2llcyBhbmQgZGF0YWJhc2Ugc2V0IHVwLCB3ZSBydW4gb3VyIHRlc3RzLiZsdDsvcCZndDsKCiZsdDtwJmd0O1NhdmUgdGhpcyBmaWxlLCBjb21taXQsIGFuZCBwdXNoIHlvdXIgY2hhbmdlcyB0byB5b3VyIHJlcG9zaXRvcnkgdG8gdHJpZ2dlciB0aGUgQ0kgcGlwZWxpbmUgdG8gcnVuLiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDgtMDItYnVpbGQtc3VjY2Vzc2Z1bC5wbmcmcXVvdDsgYWx0PSZxdW90O0J1aWxkIFN1Y2Nlc3NmdWwgLSBDaXJjbGVDSSZxdW90OyAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0O0xldOKAmXMgdmlldyBvdXIgdGVzdCByZXN1bHRzIGJ5IGNsaWNraW5nIG9uIHRoZSBidWlsZCB0byBzZWUgYmVoaW5kIHRoZSBzY2VuZXMuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0wOC0wMi10ZXN0cy1hdXRvbWF0ZWQucG5nJnF1b3Q7IGFsdD0mcXVvdDtUZXN0cyBBdXRvbWF0ZWQgLSBDaXJjbGVDSSZxdW90OyAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0O091ciB0ZXN0cyBhcmUgbm93IHJ1bm5pbmcgYXV0b21hdGljYWxseSB3aGVuIHdlIHB1c2ggbmV3IGNvZGUgdG8gb3VyIHJlcG9zaXRvcnkuJmx0Oy9wJmd0OwoKJmx0O2gyJmd0O0NvbmNsdXNpb24mbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7VGVzdC1kcml2ZW4gZGV2ZWxvcG1lbnQgKFRERCkgaXMgYSBiZXN0IHByYWN0aWNlIHRoYXQgYSBsb3Qgb2YgZGV2ZWxvcGVycyBhcmUgc3RpbGwgc3RydWdnbGluZyB0byBpbnRlZ3JhdGUgaW50byB0aGVpciBkZXZlbG9wbWVudCBmbG93LiBIYXZpbmcgYSBmcmFtZXdvcmsgdGhhdCBoYXMgVEREIGJ1aWx0IGludG8gaXRzIGNvcmUgcmVhbGx5IG1ha2VzIGFkb3B0aW5nIGl0IGxlc3MgY3VtYmVyc29tZS4gSW4gdGhpcyB0dXRvcmlhbCwgd2UgbGVhcm5lZCB0byBzZXQgdXAgdGhlIHRlc3Rpbmcgb2Ygb3VyIEFkb25pcy5qcyBBUEksIGFuZCBob3cgdG8gYXV0b21hdGUgdGhlIHByb2Nlc3Mgd2l0aCBDaXJjbGVDSS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtIYXBweSBjb2RpbmchJmx0Oy9wJmd0OwoKJmx0O2hyIC8mZ3Q7CgombHQ7cCZndDsmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vdHdpdHRlci5jb20vY29kZXJvbmZsZWVrP2xhbmc9ZW4mcXVvdDsmZ3Q7RmlrYXlvJmx0Oy9hJmd0OyBpcyBhIGZ1bGxzdGFjayBkZXZlbG9wZXIgYW5kIGF1dGhvciB3aXRoIG92ZXIgYSBkZWNhZGUgb2YgZXhwZXJpZW5jZSBkZXZlbG9waW5nIHdlYiBhbmQgbW9iaWxlIHNvbHV0aW9ucy4gSGUgaXMgY3VycmVudGx5IHRoZSBTb2Z0d2FyZSBMZWFkIGF0IFRlY2ggU3BlY2lhbGlzdCBDb25zdWx0aW5nIGFuZCBkZXZlbG9wcyBjb3Vyc2VzIGZvciBQYWNrdCBhbmQgVWRlbXkuIEhlIGhhcyBhIHN0cm9uZyBwYXNzaW9uIGZvciB0ZWFjaGluZyBhbmQgaG9wZXMgdG8gYmVjb21lIGEgZnVsbC10aW1lIGF1dGhvci4mbHQ7L3AmZ3Q7CjwvZGVzY3JpcHRpb24+CiAgICAgICAgCiAgICAgIDwvaXRlbT4KICAgIAogICAgICAKICAgICAgPGl0ZW0+CiAgICAgICAgPHRpdGxlPkNpcmNsZUNJICsgU2xhY2s6IGN1c3RvbWl6ZWQgcGlwZWxpbmUgbm90aWZpY2F0aW9uczwvdGl0bGU+CiAgICAgICAgPGxpbms+aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy9jaXJjbGVjaS1zbGFjay1pbnRlZ3JhdGlvbi88L2xpbms+CiAgICAgICAgPHB1YkRhdGU+RnJpLCAwOSBPY3QgMjAyMCAwOTowMDowMCAtMDcwMDwvcHViRGF0ZT4KICAgICAgICA8Z3VpZCBpc1Blcm1hTGluaz0idHJ1ZSI+aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy9jaXJjbGVjaS1zbGFjay1pbnRlZ3JhdGlvbi88L2d1aWQ+CiAgICAgICAgCiAgICAgICAgICA8ZGM6Y3JlYXRvcj5LeWxlIFRyeW9uPC9kYzpjcmVhdG9yPgogICAgICAgIAogICAgICAgIAogICAgICAgICAgPGRlc2NyaXB0aW9uPiZsdDtwJmd0O1RvZGF5IHdlIGFyZSByZWxlYXNpbmcgdGhlIFNsYWNrIG9yYiB2NC4wIGZvciBDaXJjbGVDSS4gSXQgbWFrZXMgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL3doYXQtaXMtYS1jaS1jZC1waXBlbGluZS8mcXVvdDsmZ3Q7cGlwZWxpbmUmbHQ7L2EmZ3Q7IG5vdGlmaWNhdGlvbnMgZWFzeSB0byBpbXBsZW1lbnQgYW5kIGN1c3RvbWl6ZS4gTm93IHdpdGggc3VwcG9ydCBmb3IgU2xhY2vigJlzICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9hcHAuc2xhY2suY29tL2Jsb2NrLWtpdC1idWlsZGVyJnF1b3Q7Jmd0O0Jsb2NrIEtpdCBCdWlsZGVyJmx0Oy9hJmd0OywgaXQgYWxzbyBwcm92aWRlcyBhIHZpc3VhbCB3YXkgdG8gY3JlYXRlIGVuZGxlc3MgY3VzdG9tIG5vdGlmaWNhdGlvbnMuIENoZWNrIG91dCB0aGUgc2xhY2sgb3JiIGhlcmU6Jmx0Oy9wJmd0OwoKJmx0O3VsJmd0OwogICZsdDtsaSZndDsmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2RldmVsb3Blci9vcmJzL29yYi9jaXJjbGVjaS9zbGFjayZxdW90OyZndDtTbGFjayBvcmImbHQ7L2EmZ3Q7Jmx0Oy9saSZndDsKICAmbHQ7bGkmZ3Q7Jmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2dpdGh1Yi5jb20vQ2lyY2xlQ0ktUHVibGljL3NsYWNrLW9yYi93aWtpJnF1b3Q7Jmd0O1NsYWNrIG9yYiB3aWtpJmx0Oy9hJmd0OyZsdDsvbGkmZ3Q7CiZsdDsvdWwmZ3Q7CgombHQ7cCZndDsmbHQ7aW1nIHNyYz0mcXVvdDsvYmxvZy9tZWRpYS8yMDIwLTA5LTI1LXNsYWNrMS5wbmcmcXVvdDsgYWx0PSZxdW90O1BpcGVsaW5lIG9uLWhvbGQgbm90aWZpY2F0aW9uIGV4YW1wbGUmcXVvdDsgLyZndDsmbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7V2hhdOKAmXMgbmV3PyZsdDsvaDImZ3Q7CgombHQ7aDMmZ3Q7U2ltcGxlIHRvIHVzZS4mbHQ7L2gzJmd0OwombHQ7cCZndDtQcmV2aW91c2x5LCB0aGUgU2xhY2sgb3JiIHV0aWxpemVkIG11bHRpcGxlIGNvbW1hbmRzIGFuZCBudW1lcm91cyBvcmIgcGFyYW1ldGVycyB0byBidWlsZCBub3RpZmljYXRpb25zIHBpZWNlLWJ5LXBpZWNlLiBOb3csIHdpdGggdmVyc2lvbiA0LjAgYW5kIGFib3ZlLCB5b3UgY2FuIHNlbGVjdCBvbmUgb2Ygc2V2ZXJhbCBidWlsdC1pbiBhdmFpbGFibGUgdGVtcGxhdGVzIG9yIGN1c3RvbWl6ZSBhbmQgaW1wb3J0IHlvdXIgb3duIG5vdGlmaWNhdGlvbnMgdmlzdWFsbHkgd2l0aCBTbGFja+KAmXMgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2FwcC5zbGFjay5jb20vYmxvY2sta2l0LWJ1aWxkZXImcXVvdDsmZ3Q7QmxvY2sgS2l0IEJ1aWxkZXImbHQ7L2EmZ3Q7LiZsdDsvcCZndDsKCiZsdDtwJmd0O0luIHRoZSBuZXcgU2xhY2sgb3JiIHlvdSB3aWxsIG9ubHkgZmluZCBhIHNpbmdsZSBjb21tYW5kICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O25vdGlmeSZsdDsvY29kZSZndDssIGFuZCBhIGpvYiAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtvbi1ob2xkJmx0Oy9jb2RlJmd0Oy4gVGhlIG5vdGlmeSBjb21tYW5kIGlzIHRoZSBoZWFydCBvZiB0aGUgb3JiIGFuZCBjYW4gYmUgdXNlZCB0byBzZW5kIG5vdGlmaWNhdGlvbnMgdG8gYW55IChvciBtdWx0aXBsZSkgU2xhY2sgY2hhbm5lbCBiYXNlZCBvbiAmbHQ7ZW0mZ3Q7ZXZlbnRzJmx0Oy9lbSZndDsgbGlrZSB3aGVuIGEgQ2lyY2xlQ0kgam9iIGhhcyBwYXNzZWQgb3IgZmFpbGVkLiZsdDsvcCZndDsKCiZsdDtoMyZndDtCdWlsdCBmb3IgdGVhbXMmbHQ7L2gzJmd0OwombHQ7cCZndDtUaGUgbmV3IFNsYWNrIG9yYiBhdXRoZW50aWNhdGVzIHVzaW5nIE9BdXRoLCByYXRoZXIgdGhhbiB1c2luZyAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vYXBpLnNsYWNrLmNvbS9tZXNzYWdpbmcvd2ViaG9va3MmcXVvdDsmZ3Q7aW5jb21pbmcgd2ViaG9va3MmbHQ7L2EmZ3Q7IGFzIGluIHByZXZpb3VzIHZlcnNpb25zLiBXaXRoIHRoaXMgY2hhbmdlLCB5b3UgY2FuIG5vdyBpbnN0YWxsIGEg4oCcYm904oCdIGFwcGxpY2F0aW9uIGluIHlvdXIgU2xhY2sgV29ya3NwYWNlIGZvciB5b3VyIENpcmNsZUNJIG5vdGlmaWNhdGlvbnMgYW5kIGFsZXJ0IG11bHRpcGxlIGNoYW5uZWxzIGZyb20gb25lIGludGVncmF0aW9uLiBUbyBzZXR1cCBhdXRoZW50aWNhdGlvbiwgYmUgc3VyZSB0byBjaGVjayB0aGUgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2dpdGh1Yi5jb20vQ2lyY2xlQ0ktUHVibGljL3NsYWNrLW9yYi93aWtpL1NldHVwJnF1b3Q7Jmd0O0dpdEh1YiB3aWtpIGZvciB0aGUgU2xhY2sgb3JiJmx0Oy9hJmd0OyZsdDsvcCZndDsKCiZsdDtoMyZndDtVcGdyYWRpbmcmbHQ7L2gzJmd0OwoKJmx0O3AmZ3Q7U2xhY2sgb3JiIHZlcnNpb24gNC4wLjAgaXMgYSBjb21wbGV0ZSByZXdyaXRlIG9mIHRoZSBwcmV2aW91cyBTbGFjayBvcmIgd2l0aCBhIG5ldyBmZWF0dXJlIHNldCBhbmQgc2ltcGxlciBkZXNpZ24gdGhhdCBpcyBtdWNoIGVhc2llciB0byB1c2UuIE9sZGVyIHZlcnNpb25zIG9mIHRoZSBTbGFjayBvcmIgd2lsbCBjb250aW51ZSB0byBvcGVyYXRlIGFuZCBtaWdyYXRpbmcgdG8gdGhlIG5ldyBTbGFjayBvcmIgZXhwZXJpZW5jZSBpcyBlbnRpcmVseSBvcHRpb25hbC4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtUbyBtaWdyYXRlIHRvIHRoZSBuZXcgU2xhY2sgb3JiLCB0aGUgb2xkIG9yYiBtdXN0IGJlIGNvbXBsZXRlbHkgcmVtb3ZlZCBhcyB2ZXJzaW9uIDQuMCBkb2VzIG5vdCBzaGFyZSBhbnkgZnVuY3Rpb25hbGl0eSB3aXRoIHByZXZpb3VzIHZlcnNpb25zIG9mIHRoZSBvcmIuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7R2V0IHN0YXJ0ZWQgYnkgdmlzaXRpbmcgdGhlICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9naXRodWIuY29tL0NpcmNsZUNJLVB1YmxpYy9zbGFjay1vcmIvd2lraSZxdW90OyZndDtHaXRIdWIgd2lraSZsdDsvYSZndDsmbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7SG93IGRvZXMgaXQgd29yaz8mbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7Jmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9vcmJzLyZxdW90OyZndDtPcmJzJmx0Oy9hJmd0OyBhcmUgcGFja2FnZXMgb2YgQ2lyY2xlQ0kgY29uZmlndXJhdGlvbiB3aGljaCBjYW4gYmUgaW1wb3J0ZWQgYW5kIHV0aWxpemVkIGluIHlvdXIgY29uZmlndXJhdGlvbiBmaWxlLiZsdDsvcCZndDsKCiZsdDtwJmd0O1RvIGp1bXAgYWhlYWQsIHlvdSBjYW4gdmlldyB0aGUgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9kZXZlbG9wZXIvb3Jicy9vcmIvY2lyY2xlY2kvc2xhY2smcXVvdDsmZ3Q7U2xhY2sgb3JiJmx0Oy9hJmd0OyBpbiB0aGUgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9vcmJzL3JlZ2lzdHJ5LyZxdW90OyZndDtvcmIgcmVnaXN0cnkmbHQ7L2EmZ3Q7LCBhbmQgb24gJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2dpdGh1Yi5jb20vQ2lyY2xlQ0ktUHVibGljL3NsYWNrLW9yYi8mcXVvdDsmZ3Q7R2l0SHViJmx0Oy9hJmd0Oy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtUaGUgbWFpbiBjb21wb25lbnQgb2YgdGhlIFNsYWNrIG9yYiBpcyB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7bm90aWZ5Jmx0Oy9jb2RlJmd0OyBjb21tYW5kLCB3aGljaCBjYW4gYmUgdXNlZCBhdCB0aGUgZW5kIG9mIGFueSBqb2IgdG8gc2VuZCBub3RpZmljYXRpb25zIGJhc2VkIG9uIHRoZSBzdGF0dXMgb2YgdGhhdCBqb2IuJmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtsYW5ndWFnZS15YW1sIGhpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDstJmx0Oy9zcGFuJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtzJnF1b3Q7Jmd0O3NsYWNrL25vdGlmeSZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OwogICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDtldmVudCZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtzJnF1b3Q7Jmd0O2ZhaWwmbHQ7L3NwYW4mZ3Q7CiAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25hJnF1b3Q7Jmd0O3RlbXBsYXRlJmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O3MmcXVvdDsmZ3Q7YmFzaWNfZmFpbF8xJmx0Oy9zcGFuJmd0OwombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7cCZndDtUaGVyZSBpcyBub3cgYSBzaW5nbGUgbm90aWZpY2F0aW9uIGNvbW1hbmQgd2l0aCBhbiAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtldmVudCZsdDsvY29kZSZndDsgcGFyYW1ldGVyLiBUaGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7bm90aWZ5Jmx0Oy9jb2RlJmd0OyBjb21tYW5kIHNob3VsZCBiZSBwbGFjZWQgYXQgdGhlIGVuZCBvZiBhbnkgam9iIGFzIGl0IHdpbGwgYWx3YXlzIHJ1biBhbmQgY2FuIGRldGVjdCB0aGUgY3VycmVudCBzdGF0dXMgb2YgdGhlIGpvYi4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtZb3UgY2FuIHNwZWNpZnkgbm90aWZpY2F0aW9ucyB0byAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDthbHdheXMmbHQ7L2NvZGUmZ3Q7IHNlbmQgb3IgdG8gc2VuZCBvbiAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtmYWlsJmx0Oy9jb2RlJmd0OyBvciAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtwYXNzJmx0Oy9jb2RlJmd0Oy4gSWYgYSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDticmFuY2hfcGF0dGVybiZsdDsvY29kZSZndDsgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCwgdGhlIGN1cnJlbnQgYnJhbmNoIG11c3QgYWxzbyBtYXRjaCB0aGUgcGF0dGVybiB0byBzZW5kIHRoZSBub3RpZmljYXRpb24uJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Rm9yIHRoZSBtZXNzYWdlIGJvZHksIHlvdSBjYW4gc2VsZWN0IG9uZSBvZiB0aGUgcHJlY29uZmlndXJlZCB0ZW1wbGF0ZXMgaW5jbHVkZWQgd2l0aCB0aGUgb3JiLCBvciBjcmVhdGUgeW91ciBvd24gY3VzdG9tIG5vdGlmaWNhdGlvbi4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtZb3UgY2FuIHNlZSBhIGZ1bGwgbGlzdCBvZiBhdmFpbGFibGUgdGVtcGxhdGVzIG9uIHRoZSAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vZ2l0aHViLmNvbS9DaXJjbGVDSS1QdWJsaWMvc2xhY2stb3JiL3dpa2kmcXVvdDsmZ3Q7R2l0SHViIFdpa2kmbHQ7L2EmZ3Q7LiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDktMjUtc2xhY2syLnBuZyZxdW90OyBhbHQ9JnF1b3Q7U2xhY2sgT3JiIFRlbXBsYXRlcyZxdW90OyAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0O0J5IGRlZmF1bHQsIHRoZSBTbGFjayBvcmIgd2lsbCBhdHRlbXB0IHRvIHBvc3QgdG8gdGhlIGNoYW5uZWwgc3BlY2lmaWVkIGJ5IHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDskU0xBQ0tfREVGQVVMVF9DSEFOTkVMJmx0Oy9jb2RlJmd0OyBlbnZpcm9ubWVudCB2YXJpYWJsZSwgYnV0IHlvdSBjYW4gYWxzbyBzZWxlY3Qgb25lIG9yIG1vcmUgY2hhbm5lbHMgdmlhIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtjaGFubmVsJmx0Oy9jb2RlJmd0OyBwYXJhbWV0ZXIuJmx0Oy9wJmd0OwoKJmx0O2gyJmd0O0Egd29ya2luZyBleGFtcGxlJmx0Oy9oMiZndDsKCiZsdDtwJmd0O0hlcmUgaXMgYSBzZW1pLXJlYWxpc3RpYyBleGFtcGxlIG9mIGEgdGVzdCBhbmQgZGVwbG95IHdvcmtmbG93IG9uIENpcmNsZUNJLiBJdCBoYXMgb25lIGpvYiB3aGljaCB0ZXN0cyB0aGUgYXBwbGljYXRpb24gb24gZXZlcnkgY29tbWl0ICgmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDt0ZXN0Jmx0Oy9jb2RlJmd0OyksIGFuZCBhIGRlcGxveW1lbnQgam9iIHdoaWNoIG9ubHkgcnVucyBvbiBhIHRhZ2dlZCBjb21taXQgKCZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2RlcGxveSZsdDsvY29kZSZndDspLiZsdDsvcCZndDsKCiZsdDtwJmd0O0luIHRoaXMgZXhhbXBsZSwgd2Ugd2lsbCBwbGFjZSBvdXIgd29ya2Zsb3cgKCZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O3Rlc3QtYW5kLWRlcGxveSZsdDsvY29kZSZndDspICZsdDtlbSZndDsmbHQ7YSBocmVmPSZxdW90Oy9kb2NzLzIuMC93b3JrZmxvd3MvI2hvbGRpbmctYS13b3JrZmxvdy1mb3ItYS1tYW51YWwtYXBwcm92YWwmcXVvdDsmZ3Q7T24gaG9sZCZsdDsvYSZndDsmbHQ7L2VtJmd0OyBwcmlvciB0byBkZXBsb3ltZW50LCBhbmQgd2FpdCBmb3IgYSBtYW51YWwgYXBwcm92YWwuIEFmdGVyIGFuIGVuZ2luZWVyIG1hbnVhbGx5IGFwcHJvdmVzIHRoZSB3b3JrZmxvdywgdGhlIGRlcGxveW1lbnQgam9iIHdpbGwgZXhlY3V0ZS4gRm9yIHRoaXMgd29ya2Zsb3csIHdlIHdhbnQgdG8gc2V0IHVwIHRocmVlIHBvdGVudGlhbCBub3RpZmljYXRpb25zIGZvciBTbGFjazombHQ7L3AmZ3Q7CgombHQ7dWwmZ3Q7CiAgJmx0O2xpJmd0O0Egbm90aWZpY2F0aW9uIHdoZW4gdGhlIHdvcmtmbG93IGlzIHBsYWNlZCBvbi1ob2xkJmx0Oy9saSZndDsKICAmbHQ7bGkmZ3Q7QSBub3RpZmljYXRpb24gaWYgdGhlIGRlcGxveW1lbnQgZmFpbHMmbHQ7L2xpJmd0OwogICZsdDtsaSZndDtBIGRpZmZlcmVudCBub3RpZmljYXRpb24gaWYgdGhlIGRlcGxveW1lbnQgc3VjY2VlZHMmbHQ7L2xpJmd0OwombHQ7L3VsJmd0OwoKJmx0O3AmZ3Q7VGhlIGZvbGxvd2luZyB1c2FnZSBleGFtcGxlIGlzIHB1bGxlZCBkaXJlY3RseSBmcm9tIHRoZSBvcmIgcmVnaXN0cnkuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7VGhpcyBjb25maWd1cmF0aW9uIG1ha2VzIHR3byBhc3N1bXB0aW9uczombHQ7L3AmZ3Q7CiZsdDtvbCZndDsKICAmbHQ7bGkmZ3Q7WW91IGhhdmUgc3RvcmVkIHlvdXIgT0F1dGggdG9rZW4gYXMgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7JFNMQUNLX0FDQ0VTU19UT0tFTiZsdDsvY29kZSZndDsgaW4gYSAmbHQ7YSBocmVmPSZxdW90Oy9kb2NzLzIuMC9jb250ZXh0cy8jcmVzdHJpY3RpbmctYS1jb250ZXh0JnF1b3Q7Jmd0O3Jlc3RyaWN0ZWQgY29udGV4dCZsdDsvYSZndDsgbmFtZWQgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7c2xhY2stc2VjcmV0cyZsdDsvY29kZSZndDsmbHQ7L2xpJmd0OwogICZsdDtsaSZndDtZb3UgaGF2ZSBkZWZpbmVkIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDskU0xBQ0tfREVGQVVMVF9DSEFOTkVMJmx0Oy9jb2RlJmd0OyBhcyBlaXRoZXIgYSAmbHQ7YSBocmVmPSZxdW90Oy9kb2NzLzIuMC9lbnYtdmFycy8jc2V0dGluZy1hbi1lbnZpcm9ubWVudC12YXJpYWJsZS1pbi1hLXByb2plY3QmcXVvdDsmZ3Q7cHJvamVjdCBlbnZpcm9ubWVudCB2YXJpYWJsZSZsdDsvYSZndDssIG9yIHdpdGhpbiB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7c2xhY2stc2VjcmV0cyZsdDsvY29kZSZndDsgY29udGV4dC4mbHQ7L2xpJmd0OwombHQ7L29sJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtsYW5ndWFnZS15YW1sIGhpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDt2ZXJzaW9uJmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O3MmcXVvdDsmZ3Q7Mi4xJmx0Oy9zcGFuJmd0OwogJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7b3JicyZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OwogICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDtzbGFjayZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtzJnF1b3Q7Jmd0O2NpcmNsZWNpL3NsYWNrQDQuMCZsdDsvc3BhbiZndDsKICZsdDtzcGFuIGNsYXNzPSZxdW90O25hJnF1b3Q7Jmd0O2pvYnMmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsKICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7YzEmcXVvdDsmZ3Q7IyBUaGlzICZxdW90O3Rlc3QmcXVvdDsgam9iIHdpbGwgcnVuIG9uIGV2ZXJ5IGNvbW1pdCAoYXMgcGVyIG91ciB3b3JrZmxvdykmbHQ7L3NwYW4mZ3Q7CiAgICZsdDtzcGFuIGNsYXNzPSZxdW90O2MxJnF1b3Q7Jmd0OyMgV2UgYXJlIG9rIHdpdGggbm8gbm90aWZpY2F0aW9ucyBzZW50IGZvciB0aGlzIGpvYi4mbHQ7L3NwYW4mZ3Q7CiAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25hJnF1b3Q7Jmd0O3Rlc3QmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsKICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDtkb2NrZXImbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsKICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0Oy0mbHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O25hJnF1b3Q7Jmd0O2ltYWdlJmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O3MmcXVvdDsmZ3Q7Y2ltZy9iYXNlOnN0YWJsZSZsdDsvc3BhbiZndDsKICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDtzdGVwcyZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OwogICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7LSZsdDsvc3BhbiZndDsgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7cnVuJmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O3MmcXVvdDsmZ3Q7ZWNobyAmcXVvdDt0ZXN0IG15IGFwcCZxdW90OyZsdDsvc3BhbiZndDsKICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7YzEmcXVvdDsmZ3Q7IyBUaGlzICZxdW90O2RlcGxveSZxdW90OyBqb2Igd2lsbCBvbmx5IHJ1biBvbiBhIHRhZ2dlZCBjb21taXQgKGFzIHBlciBvdXIgd29ya2Zsb3cpJmx0Oy9zcGFuJmd0OwogICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtjMSZxdW90OyZndDsjIFdlIHdhbnQgdG8gYmUgYWxlcnRlZCBpZiB0aGlzIGpvYiBmYWlscyBhbmQgYWxzbyB3aGVuIGl0IHN1Y2NlZWRzLiZsdDsvc3BhbiZndDsKICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7ZGVwbG95Jmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7CiAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7ZG9ja2VyJmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7CiAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDstJmx0Oy9zcGFuJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDtpbWFnZSZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtzJnF1b3Q7Jmd0O2NpbWcvYmFzZTpzdGFibGUmbHQ7L3NwYW4mZ3Q7CiAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7c3RlcHMmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsKICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0Oy0mbHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O25hJnF1b3Q7Jmd0O3J1biZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtzJnF1b3Q7Jmd0O2VjaG8gJnF1b3Q7ZGVwbG95IG15IGFwcCZxdW90OyZsdDsvc3BhbiZndDsKICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O2MxJnF1b3Q7Jmd0OyMgSW4gdGhlIGV2ZW50IHRoZSBkZXBsb3ltZW50IGhhcyBmYWlsZWQsIGFsZXJ0IHRoZSBlbmdpbmVlcmluZyB0ZWFtJmx0Oy9zcGFuJmd0OwogICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7LSZsdDsvc3BhbiZndDsgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cyZxdW90OyZndDtzbGFjay9ub3RpZnkmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsKICAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDtldmVudCZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtzJnF1b3Q7Jmd0O2ZhaWwmbHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7dGVtcGxhdGUmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cyZxdW90OyZndDtiYXNpY19mYWlsXzEmbHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7bWVudGlvbnMmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7czImcXVvdDsmZ3Q7JnF1b3Q7Jmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3MmcXVvdDsmZ3Q7QEVuZ2luZWVyaW5nVGVhbSZxdW90OyZsdDsvc3BhbiZndDsKICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O2MxJnF1b3Q7Jmd0OyMgV2hlbiB0aGVyZSBpcyBhIHN1Y2Nlc3NmdWwgZGVwbG95bWVudCwgc2VuZCBhIG5vdGlmaWNhdGlvbiB3aXRoIGEgZGlmZmVyZW50IHRlbXBsYXRlLiZsdDsvc3BhbiZndDsKICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0Oy0mbHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O3MmcXVvdDsmZ3Q7c2xhY2svbm90aWZ5Jmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7ZXZlbnQmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cyZxdW90OyZndDtwYXNzJmx0Oy9zcGFuJmd0OwogICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25hJnF1b3Q7Jmd0O3RlbXBsYXRlJmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O3MmcXVvdDsmZ3Q7c3VjY2Vzc190YWdnZWRfZGVwbG95XzEmbHQ7L3NwYW4mZ3Q7CiAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDt3b3JrZmxvd3MmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsKICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7dGVzdC1hbmQtZGVwbG95Jmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7CiAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7am9icyZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OwogICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7YzEmcXVvdDsmZ3Q7IyBXZSB3YW50IHRoZSB0ZXN0IGpvYiB0byBydW4gb24gYWxsIGNvbW1pdHMsIHNvIHdlIHdpbGwgbGlzdCBpdCB3aXRoIG5vIGZpbHRlcnMuJmx0Oy9zcGFuJmd0OwogICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7LSZsdDsvc3BhbiZndDsgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cyZxdW90OyZndDt0ZXN0Jmx0Oy9zcGFuJmd0OwogICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7YzEmcXVvdDsmZ3Q7IyBXaGVuIHdlIGFyZSBvbiBhIHRhZ2dlZCBjb21taXQgKGV4YW1wbGUgJnF1b3Q7djEuMC4wJnF1b3Q7KSwgd2Ugd2FudCB0byBhbHNvIHBsYWNlIHRoZSB3b3JrZmxvdyBvbi1ob2xkLCBwZW5kaW5nIG1hbnVhbCBhcHByb3ZhbCBmb3IgZGVwbG95bWVudC4mbHQ7L3NwYW4mZ3Q7CiAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtjMSZxdW90OyZndDsjIFdlIHdpbGwgYWxzbyBtYWtlIHVzZSBvZiB0aGUgU2xhY2sgb3JiJ3MgJnF1b3Q7b24taG9sZCZxdW90OyBqb2IgdG8gbm90aWZ5IHVzIHRvIHRoaXMgb24taG9sZCB3b3JrZmxvdywgbWFraW5nIGl0IGVhc3kgdG8gcmVzcG9uZC4mbHQ7L3NwYW4mZ3Q7CiAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDstJmx0Oy9zcGFuJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtzJnF1b3Q7Jmd0O3NsYWNrL29uLWhvbGQmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsKICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25hJnF1b3Q7Jmd0O2NvbnRleHQmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsKICAgICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7LSZsdDsvc3BhbiZndDsgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cyZxdW90OyZndDtzbGFjay1zZWNyZXRzJmx0Oy9zcGFuJmd0OwogICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7cmVxdWlyZXMmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsKICAgICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7LSZsdDsvc3BhbiZndDsgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cyZxdW90OyZndDt0ZXN0Jmx0Oy9zcGFuJmd0OwogICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7ZmlsdGVycyZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OwogICAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDt0YWdzJmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7b25seSZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtzJnF1b3Q7Jmd0Oy9edi4qLyZsdDsvc3BhbiZndDsKICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O2MxJnF1b3Q7Jmd0OyMgSm9icyB3aXRoIHRoZSB0eXBlIG9mICZxdW90O2FwcHJvdmFsJnF1b3Q7IGFjdCBhcyBwbGFjZSBob2xkZXJzIHRvIHBhdXNlIHRoZSB3b3JrZmxvdywgdGhlIGpvYiBuYW1lIGRvZXMgbm90IG1hdHRlci4mbHQ7L3NwYW4mZ3Q7CiAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtjMSZxdW90OyZndDsjIFdhaXQgZm9yIGJvdGggdGhlIHRlc3Qgam9iIGFuZCBmb3IgdGhlIG5vdGlmaWNhdGlvbiB0byBzZW5kIGJlZm9yZSBwYXVzaW5nLiZsdDsvc3BhbiZndDsKICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0Oy0mbHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O25hJnF1b3Q7Jmd0O3BhdXNlX3dvcmtmbG93Jmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDt0eXBlJmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O3MmcXVvdDsmZ3Q7YXBwcm92YWwmbHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDtyZXF1aXJlcyZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OwogICAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDstJmx0Oy9zcGFuJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtzJnF1b3Q7Jmd0O3Rlc3QmbHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0Oy0mbHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O3MmcXVvdDsmZ3Q7c2xhY2svb24taG9sZCZsdDsvc3BhbiZndDsKICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25hJnF1b3Q7Jmd0O2ZpbHRlcnMmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsKICAgICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7dGFncyZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OwogICAgICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25hJnF1b3Q7Jmd0O29ubHkmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cyZxdW90OyZndDsvXnYuKi8mbHQ7L3NwYW4mZ3Q7CiAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtjMSZxdW90OyZndDsjIFRoZSBkZXBsb3kgam9iIHdpbGwgY29udGludWUgb25jZSB0aGUgd29ya2Zsb3cgaGFzIGJlZW4gbWFudWFsbHkgYXBwcm92ZWQuJmx0Oy9zcGFuJmd0OwogICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7LSZsdDsvc3BhbiZndDsgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7ZGVwbG95Jmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDtjb250ZXh0Jmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0Oy0mbHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O3MmcXVvdDsmZ3Q7c2xhY2stc2VjcmV0cyZsdDsvc3BhbiZndDsKICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25hJnF1b3Q7Jmd0O3JlcXVpcmVzJmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0Oy0mbHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O3MmcXVvdDsmZ3Q7cGF1c2Vfd29ya2Zsb3cmbHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDtmaWx0ZXJzJmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25hJnF1b3Q7Jmd0O3RhZ3MmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsKICAgICAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDtvbmx5Jmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O3MmcXVvdDsmZ3Q7L152LiovJmx0Oy9zcGFuJmd0OwombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7aDImZ3Q7Q3JlYXRpbmcgY3VzdG9tIG5vdGlmaWNhdGlvbnMmbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7UHJldmlvdXNseSwgY3JlYXRpbmcgY3VzdG9tIG5vdGlmaWNhdGlvbnMgaW52b2x2ZWQgdXNpbmcgbWFueSBwYXJhbWV0ZXJzLiBUaGV5IHdlcmUgbGltaXRlZCBhbmQgZGlmZmljdWx0IHRvIGNvbmZpZ3VyZS4gTm93LCB5b3UgY2FuIGNyZWF0ZSBuZWFybHkgYW55IG5vdGlmaWNhdGlvbiBpbWFnaW5hYmxlIHdpdGggb25seSBhIHNpbmdsZSBwYXJhbWV0ZXIsIGFuZCBub3RpZmljYXRpb25zIGFyZSBkZXNpZ25lZCB2aXN1YWxseSB1c2luZyBTbGFja+KAmXMgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2FwcC5zbGFjay5jb20vYmxvY2sta2l0LWJ1aWxkZXImcXVvdDsmZ3Q7QmxvY2sgS2l0IEJ1aWxkZXImbHQ7L2EmZ3Q7LgpZb3UgY2FuIHN0YXJ0IHdpdGggYW55IG9mIFNsYWNr4oCZcyBidWlsdC1pbiB0ZW1wbGF0ZXMsIG9yIHN0YXJ0IGZyZXNoIGFuZCBkZXNpZ24geW91ciBvd24uJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0wOS0yNS1zbGFjay1naWYuZ2lmJnF1b3Q7IGFsdD0mcXVvdDtTbGFjayBCbG9jayBLaXQgQnVpbGRlciBleGFtcGxlJnF1b3Q7IC8mZ3Q7Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7T24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIHNjcmVlbiBhYm92ZSwgeW91IGdldCB0aGUgcGF5bG9hZCB0aGF0IGNvbnRhaW5zIHRoZSB0ZXh0IHdlIGZlZWQgdG8gdGhlIFNsYWNrIG9yYiB2aWEgdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2N1c3RvbSZsdDsvY29kZSZndDsgcGFyYW1ldGVyIChhcyBhbiBhbHRlcm5hdGl2ZSB0byB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7dGVtcGxhdGUmbHQ7L2NvZGUmZ3Q7IHBhcmFtZXRlcikuJmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtsYW5ndWFnZS15YW1sIGhpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0Oy0mbHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O3MmcXVvdDsmZ3Q7c2xhY2svbm90aWZ5Jmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7CiAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDtldmVudCZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtzJnF1b3Q7Jmd0O2Fsd2F5cyZsdDsvc3BhbiZndDsKICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25hJnF1b3Q7Jmd0O2N1c3RvbSZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDt8Jmx0Oy9zcGFuJmd0OwogICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtubyZxdW90OyZndDt7Jmx0Oy9zcGFuJmd0OwogICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25vJnF1b3Q7Jmd0OyZxdW90O2Jsb2NrcyZxdW90OzogWyZsdDsvc3BhbiZndDsKICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25vJnF1b3Q7Jmd0O3smbHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25vJnF1b3Q7Jmd0OyZxdW90O3R5cGUmcXVvdDs6ICZxdW90O3NlY3Rpb24mcXVvdDssJmx0Oy9zcGFuJmd0OwogICAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtubyZxdW90OyZndDsmcXVvdDt0ZXh0JnF1b3Q7OiB7Jmx0Oy9zcGFuJmd0OwogICAgICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25vJnF1b3Q7Jmd0OyZxdW90O3R5cGUmcXVvdDs6ICZxdW90O21ya2R3biZxdW90OywmbHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bm8mcXVvdDsmZ3Q7JnF1b3Q7dGV4dCZxdW90OzogJnF1b3Q7Q3VycmVudCBKb2I6ICRDSVJDTEVfSk9CJnF1b3Q7Jmx0Oy9zcGFuJmd0OwogICAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtubyZxdW90OyZndDt9Jmx0Oy9zcGFuJmd0OwogICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bm8mcXVvdDsmZ3Q7fSwmbHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtubyZxdW90OyZndDt7Jmx0Oy9zcGFuJmd0OwogICAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtubyZxdW90OyZndDsmcXVvdDt0eXBlJnF1b3Q7OiAmcXVvdDtzZWN0aW9uJnF1b3Q7LCZsdDsvc3BhbiZndDsKICAgICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bm8mcXVvdDsmZ3Q7JnF1b3Q7dGV4dCZxdW90OzogeyZsdDsvc3BhbiZndDsKICAgICAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtubyZxdW90OyZndDsmcXVvdDt0eXBlJnF1b3Q7OiAmcXVvdDttcmtkd24mcXVvdDssJmx0Oy9zcGFuJmd0OwogICAgICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25vJnF1b3Q7Jmd0OyZxdW90O3RleHQmcXVvdDs6ICZxdW90O1dyaXRlIHNvbWUgdGV4dCBoZXJlJnF1b3Q7Jmx0Oy9zcGFuJmd0OwogICAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtubyZxdW90OyZndDt9Jmx0Oy9zcGFuJmd0OwogICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bm8mcXVvdDsmZ3Q7fSZsdDsvc3BhbiZndDsKICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bm8mcXVvdDsmZ3Q7XSZsdDsvc3BhbiZndDsKICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtubyZxdW90OyZndDt9Jmx0Oy9zcGFuJmd0OwombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7cCZndDtCZWZvcmUgY29weWluZyB0aGUgcGF5bG9hZCwgY3VzdG9taXplIHRoZSBsb29rIG9mIHlvdXIgbm90aWZpY2F0aW9uIHVzaW5nIHRoZSBjb21wb25lbnRzIG9uIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIHNjcmVlbi4gRW52aXJvbm1lbnQgdmFyaWFibGVzIGNhbiBiZSB1c2VkIGluIGFueSB0ZXh0IGZpZWxkcyBhbmQgdGhlIHZhbHVlcyB3aWxsIGJlIHJlcGxhY2VkIGF0IHJ1bnRpbWUuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Rm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIGV4YW1wbGVzLCBjaGVjayBvdXQgdGhlICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9naXRodWIuY29tL0NpcmNsZUNJLVB1YmxpYy9zbGFjay1vcmIvd2lraSZxdW90OyZndDtHaXRIdWIgV2lraSZsdDsvYSZndDsgYW5kIHRoZSAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2RldmVsb3Blci9vcmJzL29yYi9jaXJjbGVjaS9zbGFjayZxdW90OyZndDtvcmIgcmVnaXN0cnkgcGFnZSZsdDsvYSZndDsuJmx0Oy9wJmd0OwoKJmx0O2gyJmd0O0pvaW4gVGhlIENvbW11bml0eSZsdDsvaDImZ3Q7CgombHQ7cCZndDtPcmIgZGV2ZWxvcGVycyBhbmQgY29uc3VtZXJzIGFyZSB3ZWxjb21lIHRvICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9kaXNjdXNzLmNpcmNsZWNpLmNvbS9jL2Vjb3N5c3RlbS9vcmJzLzYyJnF1b3Q7Jmd0O2pvaW4gb3VyIERpc2N1c3MgZm9ydW0mbHQ7L2EmZ3Q7ISBXZSB3b3VsZCBsb3ZlIHRvIGhlYXIgZnJvbSB5b3UsIHdoZXRoZXIgeW91IGhhdmUgcXVlc3Rpb25zLCBjb21tZW50cywgb3IgY29uY2VybnMgYWJvdXQgdGhlIFNsYWNrIG9yYi4gTmVlZCB0byBmaWxlIGFuIGlzc3VlIG9yIHdhbnQgdG8gcmVxdWVzdCBhIGZlYXR1cmU/IFdl4oCZZCBsb3ZlIHRvIGhlYXIgZnJvbSB5b3Ugb24gJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2dpdGh1Yi5jb20vQ2lyY2xlQ0ktUHVibGljL3NsYWNrLW9yYi9pc3N1ZXMvbmV3L2Nob29zZSZxdW90OyZndDtHaXRIdWImbHQ7L2EmZ3Q7IGFzIHdlbGwuJmx0Oy9wJmd0Owo8L2Rlc2NyaXB0aW9uPgogICAgICAgIAogICAgICA8L2l0ZW0+CiAgICAKICAgICAgCiAgICAgIDxpdGVtPgogICAgICAgIDx0aXRsZT5Vc2luZyBDaXJjbGVDSSB3b3JrZmxvd3MgdG8gcmVwbGljYXRlIERvY2tlciBIdWIgYXV0b21hdGVkIGJ1aWxkczwvdGl0bGU+CiAgICAgICAgPGxpbms+aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy91c2luZy1jaXJjbGVjaS13b3JrZmxvd3MtdG8tcmVwbGljYXRlLWRvY2tlci1odWItYXV0b21hdGVkLWJ1aWxkcy88L2xpbms+CiAgICAgICAgPHB1YkRhdGU+RnJpLCAwOSBPY3QgMjAyMCAwOTowMDowMCAtMDcwMDwvcHViRGF0ZT4KICAgICAgICA8Z3VpZCBpc1Blcm1hTGluaz0idHJ1ZSI+aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy91c2luZy1jaXJjbGVjaS13b3JrZmxvd3MtdG8tcmVwbGljYXRlLWRvY2tlci1odWItYXV0b21hdGVkLWJ1aWxkcy88L2d1aWQ+CiAgICAgICAgCiAgICAgICAgICA8ZGM6Y3JlYXRvcj5Kb25hdGhhbiBDYXJkb3NvPC9kYzpjcmVhdG9yPgogICAgICAgIAogICAgICAgIAogICAgICAgICAgPGRlc2NyaXB0aW9uPiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7Tm90ZSBmcm9tIHRoZSBwdWJsaXNoZXImbHQ7L3N0cm9uZyZndDs6ICZsdDtpJmd0O1RoaXMgY29udGVudCB3YXMgdXBkYXRlZCBieSBTdXBwb3J0IEVuZ2luZWVyIE5pY2sgQmlhbG9zdG9za3kgb24gMTAvOS8yMDIwIHRvIHJlZmxlY3QgY2hhbmdlcyB0byBEb2NrZXIgSHViIHN1cHBvcnQgZm9yIGFjY2VzcyB0b2tlbnMuJmx0Oy9pJmd0OyZsdDsvcCZndDsKCiZsdDtociAvJmd0OwoKJmx0O3AmZ3Q7Jmx0O2EgaHJlZj0mcXVvdDsvZG9jcy8yLjAvd29ya2Zsb3dzLyZxdW90OyZndDtDaXJjbGVDSSB3b3JrZmxvd3MmbHQ7L2EmZ3Q7IGlzIGEgcG93ZXJmdWwgZmVhdHVyZSB0aGF0IGNhbiBiZSB1c2VkIHRvIG1ha2UgeW91ciBkZXBsb3ltZW50IHByb2Nlc3Mgc2ltcGxlIGFuZCBpbnR1aXRpdmUuIEluIHRoaXMgYXJ0aWNsZSwgd2Ugd2lsbCBsZWFybiBob3cgdG8gdXNlIHRoZW0gdG8gYXV0b21hdGljYWxseSBwdXNoIGltYWdlcyB0byB0aGUgRG9ja2VyIHJlZ2lzdHJ5LCBqdXN0IGxpa2UgRG9ja2VyIEh1YuKAmXMgb3duIGF1dG9tYXRlZCBidWlsZCBwcm9jZXNzLCBidXQgd2l0aCBhbGwgb2YgdGhlIGN1c3RvbWl6YXRpb24gdGhhdCB5b3VyIG93biBidWlsZCBwcm9jZXNzIG9mZmVycy4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7Q2lyY2xlQ0kgd29ya2Zsb3dzJmx0Oy9oMiZndDsKJmx0O2Jsb2NrcXVvdGUmZ3Q7CiAgJmx0O3AmZ3Q7QSAmbHQ7c3Ryb25nJmd0O3dvcmtmbG93Jmx0Oy9zdHJvbmcmZ3Q7IGlzIGEgc2V0IG9mIHJ1bGVzIGZvciBkZWZpbmluZyBhIGNvbGxlY3Rpb24gb2Ygam9icyBhbmQgdGhlaXIgcnVuIG9yZGVyLiBXb3JrZmxvd3Mgc3VwcG9ydCBjb21wbGV4IGpvYiBvcmNoZXN0cmF0aW9uIHVzaW5nIGEgc2ltcGxlIHNldCBvZiBjb25maWd1cmF0aW9uIGtleXMgdG8gaGVscCB5b3UgcmVzb2x2ZSBmYWlsdXJlcyBzb29uZXIuIC0gJmx0O2EgaHJlZj0mcXVvdDsvZG9jcy8yLjAvd29ya2Zsb3dzLyZxdW90OyZndDtDaXJjbGVDSSBXb3JrZmxvd3MgRG9jdW1lbnRhdGlvbiZsdDsvYSZndDsmbHQ7L3AmZ3Q7CiZsdDsvYmxvY2txdW90ZSZndDsKCiZsdDtwJmd0O0luIG91ciB3b3JrZmxvdywgcHVzaGluZyBhIGNvbW1pdCB0byB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7bWFzdGVyJmx0Oy9jb2RlJmd0OyBicmFuY2ggd2lsbCBydW4gYSBzcGVjaWZpYyBqb2IgdGhhdCBwdWJsaXNoZXMgYW4gaW1hZ2Ugd2l0aCB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7bGF0ZXN0Jmx0Oy9jb2RlJmd0OyB0YWcgb24gRG9ja2VyIEh1Yi4gRWFjaCBjb21taXQgd2lsbCBhbHNvIGFkZCBhIEdpdCB0YWcgdG8gdGhlIGltYWdlIGFzIGFuIGltYWdlIHRhZyBhbmQgcHVibGlzaCB0aGUgaW1hZ2Ugd2l0aCB0aGF0IHRhZywgdG9vLiBGaW5hbGx5LCB3ZSB3aWxsIGxvb2sgaW50byBob3cgdG8gdXNlIENpcmNsZUNJ4oCZcyAmbHQ7YSBocmVmPSZxdW90Oy9kb2NzLzIuMC9lbnYtdmFycy8mcXVvdDsmZ3Q7ZW52aXJvbm1lbnQgdmFyaWFibGVzJmx0Oy9hJmd0OyB0byBhdXRvbWF0aWNhbGx5IHB1Ymxpc2ggaW5jcmVtZW50YWwgdmVyc2lvbnMgb2Ygb3VyIGltYWdlcyBpbnN0ZWFkIG9mIHVzaW5nIEdpdCB0YWdzLiZsdDsvcCZndDsKCiZsdDtoMiZndDtCdWlsZGluZyBvdXIgRG9ja2VyIGltYWdlJmx0Oy9oMiZndDsKCiZsdDtwJmd0O0xldOKAmXMgc3RhcnQgd2l0aCBhIGJhc2ljIERvY2tlciBpbWFnZSB0aGF0IGp1c3QgcHJpbnRzIHRoZSBhcmd1bWVudHMgcGFzc2VkIHdoZW4gaXQgaXMgcnVuLiBUaGUgRG9ja2VyZmlsZSB3aWxsIGxvb2sgYXMgc2ltcGxlIGFzIHRoaXM6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDtGUk9NIGFscGluZTozLjgKICAgIApFTlRSWVBPSU5UIFsgJnF1b3Q7ZWNobyZxdW90OyBdCiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtwJmd0O0J1aWxkaW5nIGFuZCBydW5uaW5nIHRoZSBpbWFnZSBsb2NhbGx5IHNob3VsZCBzaG93IHVzIHRoYXQgaXQgaXMgd29ya2luZyBjb3JyZWN0bHk6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDskIGRvY2tlciBidWlsZCAtdCBidWlsZGluZy1vbi1jaSAuClNlbmRpbmcgYnVpbGQgY29udGV4dCB0byBEb2NrZXIgZGFlbW9uICA0LjYwOGtCClN0ZXAgMS8yIDogRlJPTSBhbHBpbmU6My44CiAtLS0mYW1wO2d0OyAxOTZkMTJjZjZhYjEKU3RlcCAyLzIgOiBFTlRSWVBPSU5UIFsgJnF1b3Q7ZWNobyZxdW90OyBdCiAtLS0mYW1wO2d0OyBSdW5uaW5nIGluIGZlMjE1MWIyMmJjMQpSZW1vdmluZyBpbnRlcm1lZGlhdGUgY29udGFpbmVyIGZlMjE1MWIyMmJjMQogLS0tJmFtcDtndDsgZWRjMGNhNmU2NTRhClN1Y2Nlc3NmdWxseSBidWlsdCBlZGMwY2E2ZTY1NGEKU3VjY2Vzc2Z1bGx5IHRhZ2dlZCBjaS13b3JrZmxvd3M6bGF0ZXN0CgokIGRvY2tlciBydW4gYnVpbGRpbmctb24tY2kgJnF1b3Q7SGVsbG8hJnF1b3Q7CkhlbGxvIQombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7cCZndDtOb3cgdGhhdCB3ZSBoYXZlIG91ciBpbWFnZSwgd2UgbmVlZCB0byBwdXNoIGl0IHRvIG91ciBHaXRIdWIgcmVwb3NpdG9yeS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtUbyBzdGFydCBidWlsZGluZyBvdXIgaW1hZ2Ugb24gZWFjaCBjb21taXQsIHdlIGFyZSBnb2luZyB0byBib290c3RyYXAgb3VyIHByb2plY3Qgd2l0aCB0aGUgZm9sbG93aW5nIGNvbmZpZyBmaWxlLiBJbiB5b3VyIHByb2plY3TigJlzIHJvb3QgZGlyZWN0b3J5LCBjcmVhdGUgYSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsuY2lyY2xlJmx0Oy9jb2RlJmd0OyBkaXJlY3RvcnkgYW5kIHNhdmUgdGhlIGZvbGxvd2luZyBsaW5lcyBhcyAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtjb25maWcueW1sJmx0Oy9jb2RlJmd0OzombHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0O3ZlcnNpb246IDIKam9iczoKICBidWlsZDoKICAgIGVudmlyb25tZW50OgogICAgICBJTUFHRV9OQU1FOiBqb25hdGhhbmNhcmRvc28vYnVpbGRpbmctb24tY2kKICAgIGRvY2tlcjoKICAgICAgLSBpbWFnZTogY2lyY2xlY2kvYnVpbGRwYWNrLWRlcHM6c3RyZXRjaAogICAgc3RlcHM6CiAgICAgIC0gY2hlY2tvdXQKICAgICAgLSBzZXR1cF9yZW1vdGVfZG9ja2VyCiAgICAgIC0gcnVuOgogICAgICAgICAgbmFtZTogQnVpbGQgRG9ja2VyIGltYWdlCiAgICAgICAgICBjb21tYW5kOiBkb2NrZXIgYnVpbGQgLXQgJElNQUdFX05BTUU6bGF0ZXN0IC4Kd29ya2Zsb3dzOgogIHZlcnNpb246IDIKICBidWlsZC1tYXN0ZXI6CiAgICBqb2JzOgogICAgICAtIGJ1aWxkOgogICAgICAgICAgZmlsdGVyczoKICAgICAgICAgICAgYnJhbmNoZXM6CiAgICAgICAgICAgICAgb25seTogbWFzdGVyCiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtwJmd0O1dlIGFyZSB1c2luZyBhIHByZS1idWlsdCBEb2NrZXIgaW1hZ2UgYXZhaWxhYmxlIGZyb20gQ2lyY2xlQ0kgY2FsbGVkICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2NpcmNsZWNpL2J1aWxkcGFjay1kZXBzJmx0Oy9jb2RlJmd0OyB0byBydW4gb3VyIGJ1aWxkLiBDaXJjbGVDSSBoYXMgbWFueSBjdXN0b20gaW1hZ2VzIG9uIERvY2tlciBIdWIgdGhhdCBleHRlbmQgdGhlIG9mZmljaWFsIGltYWdlcyB3aXRoIGV4dHJhIHRvb2xzIHRoYXQgYXJlIHVzZWZ1bCBpbiBhIENJL0NEIGVudmlyb25tZW50LiBDaGVjayB0aGUgJmx0O2EgaHJlZj0mcXVvdDsvZG9jcy8yLjAvY2lyY2xlY2ktaW1hZ2VzLyZxdW90OyZndDtDaXJjbGVDSSBpbWFnZXMmbHQ7L2EmZ3Q7IGRvY3MgZm9yIG1vcmUgaW5mb3JtYXRpb24uJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7VGhlcmUgaXMgYWxzbyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBjYWxsZWQgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7SU1BR0VfTkFNRSZsdDsvY29kZSZndDsgd2hpY2ggd2UgYXJlIGdvaW5nIHRvIHVzZSB0byBzZXQgdGhlIG5hbWUgb2Ygb3VyIERvY2tlciBpbWFnZS4gSXQgaXMgaW1wZXJhdGl2ZSB0aGF0IHlvdSBjaGFuZ2UgaXQgdG8geW91ciB1c2VybmFtZS9vcmduYW1lIGluc3RlYWQgb2YgdXNpbmcgbWluZSAoJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7am9uYXRoYW5jYXJkb3NvJmx0Oy9jb2RlJmd0OykuIE90aGVyd2lzZSwgeW91IGFyZSBnb2luZyB0byBnZXQgYW4gZXJyb3Igd2hlbiB0cnlpbmcgdG8gcHVibGlzaCB0aGF0IGltYWdlIHRvIERvY2tlciBIdWIuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Rm9yIG5vdywgb3VyIGNvbmZpZyBoYXMgYSBzaW5nbGUgd29ya2Zsb3cgY2FsbGVkICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2J1aWxkLW1hc3RlciZsdDsvY29kZSZndDsgdGhhdCBydW5zIGEgc2luZ2xlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2J1aWxkJmx0Oy9jb2RlJmd0OyBqb2Igd2hlbiB3ZSBwdXNoIGEgY29tbWl0IHRvIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDttYXN0ZXImbHQ7L2NvZGUmZ3Q7IGJyYW5jaC4gVGhpcyBqb2Igc2ltcGx5IGJ1aWxkcyBvdXIgRG9ja2VyIGltYWdlIGFuZCBkb2VzIG5vdGhpbmcgbW9yZS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtPbmUgb2Ygb3VyIHN0ZXBzIGlzIGNhbGxlZCAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtzZXR1cF9yZW1vdGVfZG9ja2VyJmx0Oy9jb2RlJmd0OyBhbmQgaXMgb25lIG9mIHRoZSBtb3N0IGltcG9ydGFudCBvbmVzIHdoZW4gYnVpbGRpbmcgRG9ja2VyIGltYWdlcyBvbiBDaXJjbGVDSS4gU2luY2Ugb3VyIGpvYiBzdGVwcyBhcmUgcnVuIGluc2lkZSBvZiBhIERvY2tlciBpbWFnZSwgdGhleSBjYW5ub3QgYnVpbGQgb3RoZXIgRG9ja2VyIGltYWdlcy4gVGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O3NldHVwX3JlbW90ZV9kb2NrZXImbHQ7L2NvZGUmZ3Q7IGNvbW1hbmQgdGVsbHMgQ2lyY2xlQ0kgdG8gYWxsb2NhdGUgYSBuZXcgRG9ja2VyIEVuZ2luZSwgc2VwYXJhdGUgZnJvbSB0aGUgZW52aXJvbm1lbnQgdGhhdCBpcyBydW5uaW5nIG91ciBqb2IsIHNwZWNpZmljYWxseSB0byBleGVjdXRlIHRoZSBEb2NrZXIgY29tbWFuZHMuIENoZWNrIHRoZSAmbHQ7YSBocmVmPSZxdW90Oy9kb2NzLzIuMC9idWlsZGluZy1kb2NrZXItaW1hZ2VzLyZxdW90OyZndDtidWlsZGluZyBEb2NrZXIgaW1hZ2VzJmx0Oy9hJmd0OyBkb2NzIGZvciBtb3JlIGluZm9ybWF0aW9uLiZsdDsvcCZndDsKCiZsdDtwJmd0O0V4YW1wbGUgb2YgZXhlY3V0aW9uOiAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2doL0pDTWFpcy9kb2NrZXItYnVpbGRpbmctb24tY2kvMSZxdW90OyZndDtodHRwczovL2NpcmNsZWNpLmNvbS9naC9KQ01haXMvZG9ja2VyLWJ1aWxkaW5nLW9uLWNpLzEmbHQ7L2EmZ3Q7Jmx0Oy9wJmd0OwoKJmx0O2gyJmd0O1B1Ymxpc2hpbmcgYW4gaW1hZ2UgdG8gRG9ja2VyIEh1YiB3aXRoIHRoZSA6bGF0ZXN0IHRhZyBvbiBldmVyeSBjb21taXQgdG8gbWFzdGVyJmx0Oy9oMiZndDsKCiZsdDtwJmd0O05vdyB0aGF0IHdlIGFyZSBidWlsZGluZyBvdXIgaW1hZ2Ugb24gZXZlcnkgY29tbWl0IHRvICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O21hc3RlciZsdDsvY29kZSZndDssIHdlIG5lZWQgdG8gY3JlYXRlIGEgbmV3IGpvYiB0byBhbHNvIHB1Ymxpc2ggdGhhdCBpbWFnZSB0byBEb2NrZXIgSHViLiZsdDsvcCZndDsKCiZsdDtwJmd0O0RvY2tlciBIdWIgZG9lcyBub3QgaGF2ZSBhY2Nlc3MgdG9rZW5zIHRoYXQgeW91IGNhbiB1c2UgdG8gYWNjZXNzIHlvdXIgYWNjb3VudCwgc28gd2UgYXJlIGdvaW5nIHRvIG5lZWQgdG8gdXNlIG91ciBvd24gdXNlcm5hbWUvcGFzc3dvcmQgdG8gbG9nIGluIG9uIHRoZSBEb2NrZXIgSHViIFJlZ2lzdHJ5LiBUaGlzIGlzIGdlbmVyYWxseSBkb25lIGJ5IHJ1bm5pbmc6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDtkb2NrZXIgbG9naW4gLXUgJnF1b3Q7dXNlcm5hbWUmcXVvdDsgLXAgJnF1b3Q7cGFzc3dvcmQmcXVvdDsKJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwombHQ7cCZndDsmbHQ7c3Ryb25nJmd0O05vdGUmbHQ7L3N0cm9uZyZndDs6ICZsdDtpJmd0O0RvY2tlciBIdWIgbm93IHN1cHBvcnRzICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZG9ja2VyLWh1Yi9hY2Nlc3MtdG9rZW5zLyZxdW90OyZndDthY2Nlc3MgdG9rZW5zJmx0Oy9hJmd0OyBzbyB5b3UgY2FuIHV0aWxpemUgYSB0b2tlbiBpbnN0ZWFkIG9mIHlvdXIgcGFzc3dvcmQgZm9yIHRoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb25zIGlmIHlvdSBwcmVmZXIuJmx0Oy9pJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0O0hvd2V2ZXIsIGhhdmluZyB5b3VyIGNyZWRlbnRpYWxzIGluIGNsZWFyIHRleHQgbGlrZSB0aGF0IGlzIGEgYmFkIHByYWN0aWNlIGJlY2F1c2UgaXQgY2FuIGV4cG9zZSB5b3VyIHBhc3N3b3JkLiBXZSBuZWVkIHRvIGNyZWF0ZSBuZXcgJmx0O2EgaHJlZj0mcXVvdDsvZG9jcy8yLjAvZW52LXZhcnMmcXVvdDsmZ3Q7Q2lyY2xlQ0kgZW52aXJvbm1lbnQgdmFyaWFibGVzJmx0Oy9hJmd0OyB3aXRoIG91ciB1c2VybmFtZSBhbmQgcGFzc3dvcmQuIFRoZXJlIGFyZSBtdWx0aXBsZSB3YXlzIHRvIGRvIHRoYXQgaW4gQ2lyY2xlQ0ksIGJ1dCBpZiBtdWx0aXBsZSBwcm9qZWN0cyBhcmUgZ29pbmcgdG8gcHVzaCBpbWFnZXMgdG8gRG9ja2VyIEh1YiwgdGhlIHJlY29tbWVuZGVkIHdheSBpcyB0byB1c2UgJmx0O2EgaHJlZj0mcXVvdDsvZG9jcy8yLjAvY29udGV4dHMvJnF1b3Q7Jmd0O0NvbnRleHRzJmx0Oy9hJmd0Oy4gT3RoZXJ3aXNlLCB3ZSBjYW4gc2V0IHRoZW0gZGlyZWN0bHkgaW4gdGhlIHByb2plY3Qgc2V0dGluZ3MuIEZvciB0aGlzIGFydGljbGUgd2UgYXJlIGdvaW5nIHdpdGggdGhlIGxhdHRlciBtZXRob2QuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7QWZ0ZXIgc2V0dGluZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O0RPQ0tFUkhVQl9VU0VSTkFNRSZsdDsvY29kZSZndDsgYW5kICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O0RPQ0tFUkhVQl9QQVNTJmx0Oy9jb2RlJmd0OywgbGV04oCZcyBjcmVhdGUgb3VyIGpvYjombHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0O3ZlcnNpb246IDIKam9iczoKICBidWlsZDoKICAgIGVudmlyb25tZW50OgogICAgICBJTUFHRV9OQU1FOiBqb25hdGhhbmNhcmRvc28vYnVpbGRpbmctb24tY2kKICAgIGRvY2tlcjoKICAgICAgLSBpbWFnZTogY2lyY2xlY2kvYnVpbGRwYWNrLWRlcHM6c3RyZXRjaAogICAgc3RlcHM6CiAgICAgIC0gY2hlY2tvdXQKICAgICAgLSBzZXR1cF9yZW1vdGVfZG9ja2VyCiAgICAgIC0gcnVuOgogICAgICAgICAgbmFtZTogQnVpbGQgRG9ja2VyIGltYWdlCiAgICAgICAgICBjb21tYW5kOiBkb2NrZXIgYnVpbGQgLXQgJElNQUdFX05BTUU6bGF0ZXN0IC4KICBwdWJsaXNoLWxhdGVzdDoKICAgIGVudmlyb25tZW50OgogICAgICBJTUFHRV9OQU1FOiBidWlsZGluZy1vbi1jaQogICAgZG9ja2VyOgogICAgICAtIGltYWdlOiBjaXJjbGVjaS9idWlsZHBhY2stZGVwczpzdHJldGNoCiAgICBzdGVwczoKICAgICAgLSBzZXR1cF9yZW1vdGVfZG9ja2VyCiAgICAgIC0gcnVuOgogICAgICAgICAgbmFtZTogUHVibGlzaCBEb2NrZXIgSW1hZ2UgdG8gRG9ja2VyIEh1YgogICAgICAgICAgY29tbWFuZDogfAogICAgICAgICAgICBlY2hvICZxdW90OyRET0NLRVJIVUJfUEFTUyZxdW90OyB8IGRvY2tlciBsb2dpbiAtdSAmcXVvdDskRE9DS0VSSFVCX1VTRVJOQU1FJnF1b3Q7IC0tcGFzc3dvcmQtc3RkaW4KICAgICAgICAgICAgZG9ja2VyIHB1c2ggJElNQUdFX05BTUU6bGF0ZXN0CndvcmtmbG93czoKICB2ZXJzaW9uOiAyCiAgYnVpbGQtbWFzdGVyOgogICAgam9iczoKICAgICAgLSBidWlsZDoKICAgICAgICAgIGZpbHRlcnM6CiAgICAgICAgICAgIGJyYW5jaGVzOgogICAgICAgICAgICAgIG9ubHk6IG1hc3RlcgogICAgICAtIHB1Ymxpc2gtbGF0ZXN0OgogICAgICAgICAgcmVxdWlyZXM6CiAgICAgICAgICAgIC0gYnVpbGQKICAgICAgICAgIGZpbHRlcnM6CiAgICAgICAgICAgIGJyYW5jaGVzOgogICAgICAgICAgICAgIG9ubHk6IG1hc3RlcgombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7cCZndDtXZSBhZGRlZCBhIG5ldyAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtwdWJsaXNoLWxhdGVzdCZsdDsvY29kZSZndDsgam9iIHRvIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtidWlsZC1tYXN0ZXImbHQ7L2NvZGUmZ3Q7IHdvcmtmbG93LiBUaGlzIGpvYiB0cmllcyB0byBwdXNoIHRoZSBpbWFnZSB3ZSBqdXN0IGJ1aWx0IHRvIERvY2tlciBIdWIuIEhvd2V2ZXIsIGlmIHdlIGNvbW1pdCB0aGF0IGNoYW5nZSBhbmQgY2hlY2sgdGhlIGJ1aWxkIGxvZywgd2Ugd2lsbCBzZWUgdGhhdCBpdCBmYWlscyBiZWNhdXNlIERvY2tlciBjYW5ub3QgZmluZCB0aGUgaW1hZ2UgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7am9uYXRoYW5jYXJkb3NvL2J1aWxkaW5nLW9uLWNpJmx0Oy9jb2RlJmd0Oy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7aW1nIHNyYz0mcXVvdDsvYmxvZy9tZWRpYS8yMDIwLTEwLTA5LWh1YjEucG5nJnF1b3Q7IGFsdD0mcXVvdDsmcXVvdDsgLyZndDsmbHQ7L3AmZ3Q7CiZsdDtkaXYgc3R5bGU9JnF1b3Q7dGV4dC1hbGlnbjogY2VudGVyJnF1b3Q7Jmd0OwogICZsdDtwJmd0OwogICAgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS93b3JrZmxvdy1ydW4vNjkyNGE1ODQtODFiZS00YTMxLWJmYmMtNzIyMjVkMTJkMjU2JnF1b3Q7Jmd0OwogICAgICBodHRwczovL2NpcmNsZWNpLmNvbS93b3JrZmxvdy1ydW4vNjkyNGE1ODQtODFiZS00YTMxLWJmYmMtNzIyMjVkMTJkMjU2CiAgICAmbHQ7L2EmZ3Q7CiAgJmx0Oy9wJmd0OwombHQ7L2RpdiZndDsKCiZsdDtwJmd0O1RoaXMgaGFwcGVucyBiZWNhdXNlIHRoZSBqb2JzIGluIGEgd29ya2Zsb3cgYXJlIGlzb2xhdGVkIGZyb20gZWFjaCBvdGhlciwgdGhlIGltYWdlIHdlIGJ1aWx0IG9uIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtidWlsZCZsdDsvY29kZSZndDsgam9iIGlzIG5vdCBhdmFpbGFibGUgdG8gJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7cHVibGlzaC1sYXRlc3QmbHQ7L2NvZGUmZ3Q7LiZsdDsvcCZndDsKCiZsdDtwJmd0O05vdGUgdGhlIGR1cGxpY2F0aW9uIHdlIGhhdmUgaW4gb3VyIGNvbmZpZ3VyYXRpb24gZmlsZS4gV2UgYXJlIHJlcGVhdGluZyBvdXJzZWx2ZXMgdHdvIHRpbWVzIHdpdGggdGhlIGVudmlyb25tZW50IHZhcmlhYmxlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O0lNQUdFX05BTUUmbHQ7L2NvZGUmZ3Q7IGRlZmluaXRpb24gYW5kIHRoZSBEb2NrZXIgaW1hZ2UgdGhhdCBpcyBnb2luZyB0byBiZSB1c2VkIHRvIHJ1biBvdXIgam9icy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtPbmUgd2F5IHdlIGNvdWxkIHVzZSB0byBzb2x2ZSB0aGUgZHVwbGljYXRpb24gaXNzdWUgaXMgYnkgdXNpbmcgWUFNTCBhbmNob3JzLiBIb3dldmVyLCBDaXJjbGVDSSBoYXMgZXZvbHZlZCwgYW5kIHdpdGggdmVyc2lvbiAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsyLjEmbHQ7L2NvZGUmZ3Q7LCB3ZSBjYW4gbm93IHJldXNlIHNvbWUgY29uZmlndXJhdGlvbnMgZGlyZWN0bHkgYnkgc3BlY2lmeWluZyBhICZsdDthIGhyZWY9JnF1b3Q7L2RvY3MvMi4wL3JldXNpbmctY29uZmlnLyNhdXRob3JpbmctcmV1c2FibGUtZXhlY3V0b3JzJnF1b3Q7Jmd0O3JldXNhYmxlIGV4ZWN1dG9yJmx0Oy9hJmd0Oy4gQXQgdGhlIHRvcCBvZiB0aGUgZmlsZSB3ZSBhcmUgZ29pbmcgdG8gY2hhbmdlIHRoZSB2ZXJzaW9uIGZyb20gJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7MiZsdDsvY29kZSZndDsgdG8gJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Mi4xJmx0Oy9jb2RlJmd0OyBhbmQgYWRkIGEgbmV3ICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2V4ZWN1dG9ycyZsdDsvY29kZSZndDsga2V5OiZsdDsvcCZndDsKCiZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Jmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O3ByZSBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O2NvZGUmZ3Q7dmVyc2lvbjogMi4xCmV4ZWN1dG9yczoKICBkb2NrZXItcHVibGlzaGVyOgogICAgZW52aXJvbm1lbnQ6CiAgICAgIElNQUdFX05BTUU6IGJ1aWxkaW5nLW9uLWNpCiAgICBkb2NrZXI6CiAgICAgIC0gaW1hZ2U6IGNpcmNsZWNpL2J1aWxkcGFjay1kZXBzOnN0cmV0Y2gKJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7Tm93IG9uIGVhY2ggam9iLCBpbnN0ZWFkIG9mIGRlY2xhcmluZyAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtkb2NrZXImbHQ7L2NvZGUmZ3Q7IGFuZCAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtlbnZpcm9ubWVudCZsdDsvY29kZSZndDsga2V5cywgd2UgYXJlIGdvaW5nIHRvIHNwZWNpZnkgYSBzaW5nbGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7ZXhlY3V0b3ImbHQ7L2NvZGUmZ3Q7IGtleTombHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0OyMgLi4uCmpvYnM6CiAgYnVpbGQ6CiAgICBleGVjdXRvcjogZG9ja2VyLXB1Ymxpc2hlcgogICAgIyAuLi4KICBwdWJsaXNoLWxhdGVzdDoKICAgIGV4ZWN1dG9yOiBkb2NrZXItcHVibGlzaGVyCiAgICAjIC4uLgombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7cCZndDtEdXBsaWNhdGlvbiByZXNvbHZlZC4gVGltZSB0byBmaXggdGhlIGlzc3VlIHdpdGggb3VyIERvY2tlciBpbWFnZSBub3QgYmVpbmcgYXZhaWxhYmxlIG9uIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtwdWJsaXNoLWxhdGVzdCZsdDsvY29kZSZndDsgam9iLiBXZSBhcmUgZ29pbmcgdG8gdXNlICZsdDthIGhyZWY9JnF1b3Q7L2RvY3MvMi4wL3dvcmtmbG93cy8jdXNpbmctd29ya3NwYWNlcy10by1zaGFyZS1kYXRhLWFtb25nLWpvYnMmcXVvdDsmZ3Q7V29ya2Zsb3dz4oCZIHdvcmtzcGFjZXMmbHQ7L2EmZ3Q7IHRvIHNoYXJlIHRoZSBpbWFnZSBiZXR3ZWVuIHRoZSB0d28gam9icy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtMZXTigJlzIGFkZCBhIG5ldyBydW4gc3RlcCBhdCB0aGUgZW5kIG9mIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtidWlsZCZsdDsvY29kZSZndDsgam9iLiBUaGlzIHJ1biBzdGVwIGlzIGdvaW5nIHRvIHNhdmUgdGhlIGltYWdlIGFzIGEgdGFyIGFyY2hpdmU6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDsgICAgICAjIC4uLgogICAgICAtIHJ1bjoKICAgICAgICAgIG5hbWU6IEFyY2hpdmUgRG9ja2VyIGltYWdlCiAgICAgICAgICBjb21tYW5kOiBkb2NrZXIgc2F2ZSAtbyBpbWFnZS50YXIgJElNQUdFX05BTUUKICAgICAgIyAuLi4KJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7Tm93LCB3ZSBjYW4gcGVyc2lzdCB0aGF0IGZpbGUgb24gdGhlIHdvcmtmbG93IHdvcmtzcGFjZSBieSBhZGRpbmcgYW5vdGhlciBzdGVwIGNhbGxlZCAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtwZXJzaXN0X3RvX3dvcmtzcGFjZSZsdDsvY29kZSZndDs6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDsgICAgICAjIC4uLgogICAgICAtIHJ1bjoKICAgICAgICAgIG5hbWU6IEFyY2hpdmUgRG9ja2VyIGltYWdlCiAgICAgICAgICBjb21tYW5kOiBkb2NrZXIgc2F2ZSAtbyBpbWFnZS50YXIgJElNQUdFX05BTUUKICAgICAgLSBwZXJzaXN0X3RvX3dvcmtzcGFjZToKICAgICAgICAgIHJvb3Q6IC4KICAgICAgICAgIHBhdGhzOgogICAgICAgICAgICAtIC4vaW1hZ2UudGFyCiAgICAgICMgLi4uCiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtwJmd0O1RvIHJldHJpZXZlIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtpbWFnZS50YXImbHQ7L2NvZGUmZ3Q7IGZpbGUgb24gdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O3B1Ymxpc2gtbGF0ZXN0Jmx0Oy9jb2RlJmd0OyBqb2IsIHdlIGFyZSBnb2luZyB0byBhZGQgYSBuZXcgc3RlcCwgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7YXR0YWNoX3dvcmtzcGFjZSZsdDsvY29kZSZndDssIGJlZm9yZSB0aGUgb3RoZXJzOiZsdDsvcCZndDsKCiZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Jmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O3ByZSBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O2NvZGUmZ3Q7ICAgIyAuLi4KICAgc3RlcHM6CiAgICAgIC0gYXR0YWNoX3dvcmtzcGFjZToKICAgICAgICAgIGF0OiAvdG1wL3dvcmtzcGFjZQogICAgICAjIC4uLgombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7cCZndDtBbmQgbG9hZCBvdXIgYXJjaGl2ZWQgaW1hZ2Ugd2l0aCAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtkb2NrZXIgbG9hZCZsdDsvY29kZSZndDsganVzdCBiZWZvcmUgd2UgdHJ5IHRvIHB1c2ggaXQgdG8gdGhlIERvY2tlciBIdWIgcmVnaXN0cnk6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDsgICAgICAjIC4uLgogICAgICAtIHJ1bjoKICAgICAgICAgIG5hbWU6IExvYWQgYXJjaGl2ZWQgRG9ja2VyIGltYWdlCiAgICAgICAgICBjb21tYW5kOiBkb2NrZXIgbG9hZCAtaSAvdG1wL3dvcmtzcGFjZS9pbWFnZS50YXIKICAgICAgIyAuLi4KJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7T3VyIGZ1bGwgY29uZmlndXJhdGlvbiBmaWxlIGxvb2tzIGxpa2UgdGhpczombHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0O3ZlcnNpb246IDIuMQpleGVjdXRvcnM6CiAgZG9ja2VyLXB1Ymxpc2hlcjoKICAgIGVudmlyb25tZW50OgogICAgICBJTUFHRV9OQU1FOiBqb25hdGhhbmNhcmRvc28vYnVpbGRpbmctb24tY2kKICAgIGRvY2tlcjoKICAgICAgLSBpbWFnZTogY2lyY2xlY2kvYnVpbGRwYWNrLWRlcHM6c3RyZXRjaApqb2JzOgogIGJ1aWxkOgogICAgZXhlY3V0b3I6IGRvY2tlci1wdWJsaXNoZXIKICAgIHN0ZXBzOgogICAgICAtIGNoZWNrb3V0CiAgICAgIC0gc2V0dXBfcmVtb3RlX2RvY2tlcgogICAgICAtIHJ1bjoKICAgICAgICAgIG5hbWU6IEJ1aWxkIERvY2tlciBpbWFnZQogICAgICAgICAgY29tbWFuZDogfAogICAgICAgICAgICBkb2NrZXIgYnVpbGQgLXQgJElNQUdFX05BTUU6bGF0ZXN0IC4KICAgICAgLSBydW46CiAgICAgICAgICBuYW1lOiBBcmNoaXZlIERvY2tlciBpbWFnZQogICAgICAgICAgY29tbWFuZDogZG9ja2VyIHNhdmUgLW8gaW1hZ2UudGFyICRJTUFHRV9OQU1FCiAgICAgIC0gcGVyc2lzdF90b193b3Jrc3BhY2U6CiAgICAgICAgICByb290OiAuCiAgICAgICAgICBwYXRoczoKICAgICAgICAgICAgLSAuL2ltYWdlLnRhcgogIHB1Ymxpc2gtbGF0ZXN0OgogICAgZXhlY3V0b3I6IGRvY2tlci1wdWJsaXNoZXIKICAgIHN0ZXBzOgogICAgICAtIGF0dGFjaF93b3Jrc3BhY2U6CiAgICAgICAgICBhdDogL3RtcC93b3Jrc3BhY2UKICAgICAgLSBzZXR1cF9yZW1vdGVfZG9ja2VyCiAgICAgIC0gcnVuOgogICAgICAgICAgbmFtZTogTG9hZCBhcmNoaXZlZCBEb2NrZXIgaW1hZ2UKICAgICAgICAgIGNvbW1hbmQ6IGRvY2tlciBsb2FkIC1pIC90bXAvd29ya3NwYWNlL2ltYWdlLnRhcgogICAgICAtIHJ1bjoKICAgICAgICAgIG5hbWU6IFB1Ymxpc2ggRG9ja2VyIEltYWdlIHRvIERvY2tlciBIdWIKICAgICAgICAgIGNvbW1hbmQ6IHwKICAgICAgICAgICAgZWNobyAmcXVvdDskRE9DS0VSSFVCX1BBU1MmcXVvdDsgfCBkb2NrZXIgbG9naW4gLXUgJnF1b3Q7JERPQ0tFUkhVQl9VU0VSTkFNRSZxdW90OyAtLXBhc3N3b3JkLXN0ZGluCiAgICAgICAgICAgIGRvY2tlciBwdXNoICRJTUFHRV9OQU1FOmxhdGVzdAp3b3JrZmxvd3M6CiAgdmVyc2lvbjogMgogIGJ1aWxkLW1hc3RlcjoKICAgIGpvYnM6CiAgICAgIC0gYnVpbGQ6CiAgICAgICAgICBmaWx0ZXJzOgogICAgICAgICAgICBicmFuY2hlczoKICAgICAgICAgICAgICBvbmx5OiBtYXN0ZXIKICAgICAgLSBwdWJsaXNoLWxhdGVzdDoKICAgICAgICAgIHJlcXVpcmVzOgogICAgICAgICAgICAtIGJ1aWxkCiAgICAgICAgICBmaWx0ZXJzOgogICAgICAgICAgICBicmFuY2hlczoKICAgICAgICAgICAgICBvbmx5OiBtYXN0ZXIKJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7RXZlcnl0aGluZyBzaG91bGQgYmUgZ3JlZW4gbm93ISZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMTAtMDktaHViMi5wbmcmcXVvdDsgYWx0PSZxdW90OyZxdW90OyAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0O05vdywgd2UgY2FuIHJldHJpZXZlIGFuZCBydW4gb3VyIGltYWdlIGZyb20gdGhlIERvY2tlciBIdWIgcmVnaXN0cnk6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDskIGRvY2tlciBydW4gam9uYXRoYW5jYXJkb3NvL2J1aWxkaW5nLW9uLWNpICZxdW90O1dvcmtmbG93cyBhcmUgYXdlc29tZSEmcXVvdDsKVW5hYmxlIHRvIGZpbmQgaW1hZ2UgJ2pvbmF0aGFuY2FyZG9zby9idWlsZGluZy1vbi1jaTpsYXRlc3QnIGxvY2FsbHkKbGF0ZXN0OiBQdWxsaW5nIGZyb20gam9uYXRoYW5jYXJkb3NvL2J1aWxkaW5nLW9uLWNpCjRmZTJhZGU0OTgwYzogQWxyZWFkeSBleGlzdHMKRGlnZXN0OiBzaGEyNTY6ZjcxOWNhNDAzYjBmYzZhNTIxNDgyM2M2MWM3NTBhNWU0OGNlNTgwOWEyNGI4ODJiM2E0NWQ2ZDExOTg3MDM2NgpTdGF0dXM6IERvd25sb2FkZWQgbmV3ZXIgaW1hZ2UgZm9yIGpvbmF0aGFuY2FyZG9zby9idWlsZGluZy1vbi1jaTpsYXRlc3QKV29ya2Zsb3dzIGFyZSBhd2Vzb21lIQombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7aDImZ3Q7UHVibGlzaGluZyBHaXQgdGFncyBhcyBEb2NrZXIgaW1hZ2UgdGFncyBvbiBEb2NrZXIgSHViJmx0Oy9oMiZndDsKCiZsdDtwJmd0O0RlcGVuZGluZyBvbiBhbiBpbWFnZSB3aXRoICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2xhdGVzdCZsdDsvY29kZSZndDsgdGFnIGNhbiAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vdnN1cGFsb3YuY29tL2RvY2tlci1sYXRlc3QtdGFnLyZxdW90OyZndDtlYXNpbHkgY2F1c2UgY29uZnVzaW9uJmx0Oy9hJmd0OyBzaW5jZSB3ZSBkb27igJl0IGhhdmUgY29udHJvbCBvdmVyIHdoaWNoIHZlcnNpb24gb2YgdGhlIGltYWdlIHdlIGFyZSBydW5uaW5nLiBUaGUgcmVjb21tZW5kZWQgd2F5IGlzIHRvIHVzZSBhIHNwZWNpZmljIHRhZy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtTdXBwb3NlIHdlIGFyZSBnb2luZyB0byB1c2UgR2l0IHRhZ3MgdG8gcmVsZWFzZSBuZXcgdmVyc2lvbnMgb2Ygb3VyIERvY2tlciBpbWFnZSwgYW5kIHdlIHdhbnQgQ2lyY2xlQ0kgdG8gcHVibGlzaCBvdXIgaW1hZ2Ugd2l0aCBlYWNoIEdpdCB0YWcgYXMgYW4gaW1hZ2UgdGFnIG9uIERvY2tlciBIdWIuIEhlcmUgaXMgaG93IHdlIGNhbiBkbyBpdC4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtGaXJzdCwgd2UgYXJlIGdvaW5nIHRvIGFkZCBhIG5ldyB3b3JrZmxvdywgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7YnVpbGQtdGFncyZsdDsvY29kZSZndDs6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDsjIC4uLgogIGJ1aWxkLXRhZ3M6CiAgICBqb2JzOgogICAgICAtIGJ1aWxkOgogICAgICAgICAgZmlsdGVyczoKICAgICAgICAgICAgdGFnczoKICAgICAgICAgICAgICBvbmx5OiAvXnYuKi8KICAgICAgICAgICAgYnJhbmNoZXM6CiAgICAgICAgICAgICAgaWdub3JlOiAvLiovCiAgICAgIC0gcHVibGlzaC10YWc6CiAgICAgICAgICByZXF1aXJlczoKICAgICAgICAgICAgLSBidWlsZAogICAgICAgICAgZmlsdGVyczoKICAgICAgICAgICAgdGFnczoKICAgICAgICAgICAgICBvbmx5OiAvXnYuKi8KICAgICAgICAgICAgYnJhbmNoZXM6CiAgICAgICAgICAgICAgaWdub3JlOiAvLiovCiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtwJmd0O0JvdGggam9icyBzaGFyZSB0aGUgc2FtZSBmaWx0ZXJzLCB3aGljaCBiYXNpY2FsbHkgc2F5IHRoYXQgdGhleSBtdXN0IHJ1biBmb3IgZXZlcnkgdGFnIHRoYXQgc3RhcnRzIHdpdGggJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7diZsdDsvY29kZSZndDsgYW5kIHNob3VsZCBub3QgZXhlY3V0ZSBmb3IgYnJhbmNoZXMuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7VGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2J1aWxkJmx0Oy9jb2RlJmd0OyBqb2IgaXMgdGhlIHNhbWUgKHdlIGNhbiByZXVzZSBqb2JzIGJldHdlZW4gd29ya2Zsb3dzKSwgYnV0IHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtwdWJsaXNoLXRhZyZsdDsvY29kZSZndDsgam9iIHdpbGwgbG9vayBsaWtlIHRoZSBmb2xsb3dpbmc6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDsjIC4uLgogIHB1Ymxpc2gtdGFnOgogICAgZXhlY3V0b3I6IGRvY2tlci1wdWJsaXNoZXIKICAgIHN0ZXBzOgogICAgICAtIGF0dGFjaF93b3Jrc3BhY2U6CiAgICAgICAgICBhdDogL3RtcC93b3Jrc3BhY2UKICAgICAgLSBzZXR1cF9yZW1vdGVfZG9ja2VyCiAgICAgIC0gcnVuOgogICAgICAgICAgbmFtZTogTG9hZCBhcmNoaXZlZCBEb2NrZXIgaW1hZ2UKICAgICAgICAgIGNvbW1hbmQ6IGRvY2tlciBsb2FkIC1pIC90bXAvd29ya3NwYWNlL2ltYWdlLnRhcgogICAgICAtIHJ1bjoKICAgICAgICAgIG5hbWU6IFB1Ymxpc2ggRG9ja2VyIEltYWdlIHRvIERvY2tlciBIdWIKICAgICAgICAgIGNvbW1hbmQ6IHwKICAgICAgICAgICAgZWNobyAmcXVvdDskRE9DS0VSSFVCX1BBU1MmcXVvdDsgfCBkb2NrZXIgbG9naW4gLXUgJnF1b3Q7JERPQ0tFUkhVQl9VU0VSTkFNRSZxdW90OyAtLXBhc3N3b3JkLXN0ZGluCiAgICAgICAgICAgIElNQUdFX1RBRz0ke0NJUkNMRV9UQUcvdi8nJ30KICAgICAgICAgICAgZG9ja2VyIHRhZyAkSU1BR0VfTkFNRTpsYXRlc3QgJElNQUdFX05BTUU6JElNQUdFX1RBRwogICAgICAgICAgICBkb2NrZXIgcHVzaCAkSU1BR0VfTkFNRTpsYXRlc3QKICAgICAgICAgICAgZG9ja2VyIHB1c2ggJElNQUdFX05BTUU6JElNQUdFX1RBRwojIC4uLgombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7cCZndDtUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgam9iIGFuZCAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtwdWJsaXNoLWxhdGVzdCZsdDsvY29kZSZndDsgaXMgdGhhdCB0aGlzIGpvYiB1c2VzIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIHNldCBhdXRvbWF0aWNhbGx5IGJ5IENpcmNsZUNJIGNhbGxlZCAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtDSVJDTEVfVEFHJmx0Oy9jb2RlJmd0Oy4gV2UgcmV0cmlldmUgdGhlIHZhbHVlIGFuZCByZW1vdmUgdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O3YmbHQ7L2NvZGUmZ3Q7IHByZWZpeCwgZS5nLiwgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7djAuMC4xJmx0Oy9jb2RlJmd0OyBiZWNvbWVzICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OzAuMC4xJmx0Oy9jb2RlJmd0Oy4gV2UgdGhlbiBwcm9jZWVkIHRvIHRhZyBvdXIgaW1hZ2Ugd2l0aCB0aGF0IHZlcnNpb24gYW5kIHB1c2ggaXQgdG8gdGhlIERvY2tlciBIdWIgUmVnaXN0cnkuIFdlIGFsc28gbWFrZSBzdXJlIHRvIHB1c2ggdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2xhdGVzdCZsdDsvY29kZSZndDsgdGFnLCB0b28sIHNvIHRoYXQgYm90aCBhcmUga2VwdCBpbiBzeW5jLiBJZiB3ZSBjb21taXQgYSB0YWcgd2UgY2FuIHNlZSBpdCB3b3JraW5nOiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMTAtMDktaHViMy5wbmcmcXVvdDsgYWx0PSZxdW90OyZxdW90OyAvJmd0OyZsdDsvcCZndDsKJmx0O2RpdiBzdHlsZT0mcXVvdDt0ZXh0LWFsaWduOiBjZW50ZXImcXVvdDsmZ3Q7CiAgJmx0O3AmZ3Q7CiAgICAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL3dvcmtmbG93LXJ1bi9lY2RmYmIzZi1iN2Y2LTQxYjYtOWY1Ni0xNDc0OTY3OTE3MzYmcXVvdDsmZ3Q7CiAgICAgIGh0dHBzOi8vY2lyY2xlY2kuY29tL3dvcmtmbG93LXJ1bi9lY2RmYmIzZi1iN2Y2LTQxYjYtOWY1Ni0xNDc0OTY3OTE3MzYKICAgICZsdDsvYSZndDsKICAmbHQ7L3AmZ3Q7CiZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7QW5kIGlmIHdlIGFjY2VzcyB0aGUgRG9ja2VyIEh1YiBwYWdlIGZvciB0aGUgaW1hZ2UsIHdlIGNhbiBzZWUgdGhlIHRhZyB0aGVyZTombHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7aW1nIHNyYz0mcXVvdDsvYmxvZy9tZWRpYS8yMDIwLTEwLTA5LWh1YjQucG5nJnF1b3Q7IGFsdD0mcXVvdDsmcXVvdDsgLyZndDsmbHQ7L3AmZ3Q7CiZsdDtkaXYgc3R5bGU9JnF1b3Q7dGV4dC1hbGlnbjogY2VudGVyJnF1b3Q7Jmd0OwogICZsdDtwJmd0OwogICAgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2h1Yi5kb2NrZXIuY29tL3Ivam9uYXRoYW5jYXJkb3NvL2J1aWxkaW5nLW9uLWNpL3RhZ3MvJnF1b3Q7Jmd0OwogICAgICBodHRwczovL2h1Yi5kb2NrZXIuY29tL3Ivam9uYXRoYW5jYXJkb3NvL2J1aWxkaW5nLW9uLWNpL3RhZ3MvCiAgICAmbHQ7L2EmZ3Q7CiAgJmx0Oy9wJmd0OwombHQ7L2RpdiZndDsKCiZsdDtwJmd0O05vdywgd2UgY2FuIHJ1biBvdXIgaW1hZ2UgdXNpbmcgb3VyIHRhZzombHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0O2RvY2tlciBydW4gam9uYXRoYW5jYXJkb3NvL2J1aWxkaW5nLW9uLWNpOjAuMC4xICZxdW90O1RhZ3MgYXJlIHdvcmtpbmchJnF1b3Q7ClVuYWJsZSB0byBmaW5kIGltYWdlICdqb25hdGhhbmNhcmRvc28vYnVpbGRpbmctb24tY2k6MC4wLjEnIGxvY2FsbHkKMC4wLjE6IFB1bGxpbmcgZnJvbSBqb25hdGhhbmNhcmRvc28vYnVpbGRpbmctb24tY2kKNGZlMmFkZTQ5ODBjOiBBbHJlYWR5IGV4aXN0cwpEaWdlc3Q6IHNoYTI1NjoxYTNhNmM3NDg2MDgzMjcwNGRmNTVhY2RjYmQ4NzVmNjYyOTU3ZDc1N2Q2OWZhMzQwYTQ4YjQxYjg5MDQ2OWJjClN0YXR1czogRG93bmxvYWRlZCBuZXdlciBpbWFnZSBmb3Igam9uYXRoYW5jYXJkb3NvL2J1aWxkaW5nLW9uLWNpOjAuMC4xClRhZ3MgYXJlIHdvcmtpbmchCiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtoMiZndDtBdXRvbWF0aWMgaW1hZ2UgdGFncyBmb3IgZWFjaCBidWlsZCZsdDsvaDImZ3Q7CgombHQ7cCZndDtXaGF0IGlmIHdlIGhhdmUgYW4gaW1hZ2UgdGhhdCB3ZSBkb27igJl0IHVzZSBmcmVxdWVudGx5IG9yIG9uZSB0aGF0IHdlIGRvbuKAmXQgd2FudCB0byB1c2UgZ2l0IHRhZ3MgZm9yPyBBbiBpbWFnZSB0aGF0IHdlIHdhbnQgdG8gaGF2ZSBzdHJpY3QgY29udHJvbCBvdmVyIHdoaWNoIHZlcnNpb24gd2UgYXJlIHVzaW5nLCBzbyB3ZSBjYW7igJl0IHJlbHkgb24gdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2xhdGVzdCZsdDsvY29kZSZndDsgdGFnPyZsdDsvcCZndDsKCiZsdDtwJmd0O0NpcmNsZUNJIGFsbG93IHVzIHRvIGRvIGV4YWN0bHkgdGhhdDogaXQgZXhwb3NlcyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBjYWxsZWQgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Q0lSQ0xFX0JVSUxEX05VTSZsdDsvY29kZSZndDsgdGhhdCBpcyBhbiBldmVyLWluY3JlYXNpbmcgbnVtYmVyLiBVc2luZyBpdCwgd2UgY2FuIGxldCBDaXJjbGVDSSBwdWJsaXNoIGEgbmV3IHZlcnNpb24gb2YgdGhlIGltYWdlIGZvciBldmVyeSBidWlsZC4gTGV04oCZcyBtb2RpZnkgb3VyICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O3B1Ymxpc2gtbGF0ZXN0Jmx0Oy9jb2RlJmd0OyBqb2IgdG8gZG8gZXhhY3RseSB0aGF0OiZsdDsvcCZndDsKCiZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Jmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O3ByZSBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O2NvZGUmZ3Q7ICAgICAgIyAuLi4KICAgICAgLSBydW46CiAgICAgICAgICBuYW1lOiBQdWJsaXNoIERvY2tlciBJbWFnZSB0byBEb2NrZXIgSHViCiAgICAgICAgICBjb21tYW5kOiB8CiAgICAgICAgICAgIGVjaG8gJnF1b3Q7JERPQ0tFUkhVQl9QQVNTJnF1b3Q7IHwgZG9ja2VyIGxvZ2luIC11ICZxdW90OyRET0NLRVJIVUJfVVNFUk5BTUUmcXVvdDsgLS1wYXNzd29yZC1zdGRpbgogICAgICAgICAgICBJTUFHRV9UQUc9JnF1b3Q7MC4wLiR7Q0lSQ0xFX0JVSUxEX05VTX0mcXVvdDsKICAgICAgICAgICAgZG9ja2VyIHRhZyAkSU1BR0VfTkFNRTpsYXRlc3QgJElNQUdFX05BTUU6JElNQUdFX1RBRwogICAgICAgICAgICBkb2NrZXIgcHVzaCAkSU1BR0VfTkFNRTpsYXRlc3QKICAgICAgICAgICAgZG9ja2VyIHB1c2ggJElNQUdFX05BTUU6JElNQUdFX1RBRwogICAgICAjIC4uLgombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7cCZndDtXZSBhcmUgdXNpbmcgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Q0lSQ0xFX0JVSUxEX05VTSZsdDsvY29kZSZndDsgdG8gY3JlYXRlIHRoZSBpbWFnZSB0YWcgYW5kIHB1Ymxpc2hpbmcgaXQgYWxvbmdzaWRlIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtsYXRlc3QmbHQ7L2NvZGUmZ3Q7IHRhZyB0byBEb2NrZXIgSHViIFJlZ2lzdHJ5LiBJZiB3ZSBjb21taXQgdGhhdCB0byBtYXN0ZXIgYW5kIHdhaXQgZm9yIHRoZSB3b3JrZmxvdyB0byBmaW5pc2gsIHdlIGNhbiBzZWUgdGhhdCBpdCB3YXMgcHVibGlzaGVkOiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMTAtMDktaHViNS5wbmcmcXVvdDsgYWx0PSZxdW90OyZxdW90OyAvJmd0OyZsdDsvcCZndDsKJmx0O2RpdiBzdHlsZT0mcXVvdDt0ZXh0LWFsaWduOiBjZW50ZXImcXVvdDsmZ3Q7CiAgJmx0O3AmZ3Q7CiAgICAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2doL0pDTWFpcy9kb2NrZXItYnVpbGRpbmctb24tY2kvMjQmcXVvdDsmZ3Q7CiAgICAgIGh0dHBzOi8vY2lyY2xlY2kuY29tL2doL0pDTWFpcy9kb2NrZXItYnVpbGRpbmctb24tY2kvMjQKICAgICZsdDsvYSZndDsKICAmbHQ7L3AmZ3Q7CiZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7Jmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0xMC0wOS1odWI2LnBuZyZxdW90OyBhbHQ9JnF1b3Q7JnF1b3Q7IC8mZ3Q7Jmx0Oy9wJmd0OwombHQ7ZGl2IHN0eWxlPSZxdW90O3RleHQtYWxpZ246IGNlbnRlciZxdW90OyZndDsKICAmbHQ7cCZndDsKICAgICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL2pvbmF0aGFuY2FyZG9zby9idWlsZGluZy1vbi1jaS90YWdzLyZxdW90OyZndDsKICAgICAgaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL2pvbmF0aGFuY2FyZG9zby9idWlsZGluZy1vbi1jaS90YWdzLwogICAgJmx0Oy9hJmd0OwogICZsdDsvcCZndDsKJmx0Oy9kaXYmZ3Q7CgombHQ7aDImZ3Q7U3VtbWFyeSZsdDsvaDImZ3Q7CgombHQ7cCZndDtUaGVzZSB2ZXJzaW9uaW5nIHRlY2huaXF1ZXMgYXJlIGp1c3QgYnVpbGRpbmcgYmxvY2tzLiBZb3UgY2FuIG1ha2UgdGFnZ2luZyB0aGUgdmVyc2lvbnMgb2YgeW91ciBpbWFnZSBhcyBjb21wbGV4IG9yIGFzIHNpbXBsZSBhcyB5b3Ugd2FudC4gWW91IGNvdWxkIGV2ZW4gdXNlIHRoaXMga25vd2xlZGdlIHRvIHVwbG9hZCBhbiBpbWFnZSB0byB5b3VyIG93biBwcml2YXRlIHJlZ2lzdHJ5LCBpbnN0ZWFkIG9mIERvY2tlciBIdWIsIGZvciBzcGVjaWZpYyB0YWdzLiZsdDsvcCZndDsKCiZsdDtwJmd0O1RoZSByZXBvc2l0b3J5IHVzZWQgd2hpbGUgd3JpdGluZyB0aGlzIGFydGljbGUgaXMgYXZhaWxhYmxlIG9uIEdpdEh1YjogJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2dpdGh1Yi5jb20vSkNNYWlzL2RvY2tlci1idWlsZGluZy1vbi1jaSZxdW90OyZndDtodHRwczovL2dpdGh1Yi5jb20vSkNNYWlzL2RvY2tlci1idWlsZGluZy1vbi1jaSZsdDsvYSZndDsuJmx0Oy9wJmd0OwoKJmx0O2hyIC8mZ3Q7CgombHQ7cCZndDsmbHQ7aSZndDtKb25hdGhhbiBDYXJkb3NvIGlzIHBhc3Npb25hdGUgYWJvdXQgRGV2T3BzLCBvcGVuIHNvdXJjZSwgYW5kIGdhbWluZy4gSGUgaGFzIHNpeCB5ZWFycyBvZiBleHBlcmllbmNlIGhlbHBpbmcgY29tcGFuaWVzIGFyb3VuZCB0aGUgd29ybGQgbW92ZSB0aGVpciBvYmplY3RpdmVzIGZvcndhcmQgd2l0aCB0ZWNobmljYWwgc29sdXRpb25zLiBIZSBjdXJyZW50bHkgd29ya3MgcmVtb3RlbHkgZnJvbSBCcmF6aWwgYXMgYSBGdWxsLVN0YWNrIERldmVsb3BlciBhbmQgRGV2T3BzIHNwZWNpYWxpc3QgYXQgSGVsbG9NRC4gWW91IGNhbiBmb2xsb3cgaGltICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly90d2l0dGVyLmNvbS9fam9uYXRoYW5jYXJkb3MmcXVvdDsmZ3Q7QF9qb25hdGhhbmNhcmRvcyZsdDsvYSZndDsmbHQ7L2kmZ3Q7Jmx0Oy9wJmd0Owo8L2Rlc2NyaXB0aW9uPgogICAgICAgIAogICAgICA8L2l0ZW0+CiAgICAKICAgICAgCiAgICAgIDxpdGVtPgogICAgICAgIDx0aXRsZT5Db250aW51b3VzIGRlcGxveW1lbnQgZm9yIE5leHQuanMgYXBwbGljYXRpb25zPC90aXRsZT4KICAgICAgICA8bGluaz5odHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL2NvbnRpbnVvdXMtZGVwbG95bWVudC1mb3ItbmV4dC1qcy1hcHBzLzwvbGluaz4KICAgICAgICA8cHViRGF0ZT5XZWQsIDA3IE9jdCAyMDIwIDEyOjAwOjAwIC0wNzAwPC9wdWJEYXRlPgogICAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJ0cnVlIj5odHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL2NvbnRpbnVvdXMtZGVwbG95bWVudC1mb3ItbmV4dC1qcy1hcHBzLzwvZ3VpZD4KICAgICAgICAKICAgICAgICAgIDxkYzpjcmVhdG9yPkZpa2F5byBBZGVwb2p1PC9kYzpjcmVhdG9yPgogICAgICAgIAogICAgICAgIAogICAgICAgICAgPGRlc2NyaXB0aW9uPiZsdDtwJmd0OyZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9yZWFjdGpzLm9yZy8mcXVvdDsmZ3Q7UmVhY3QuanMmbHQ7L2EmZ3Q7IGlzIGEgdmVyeSBwb3dlcmZ1bCBmcm9udC1lbmQgZnJhbWV3b3JrLCBhcyBpdHMgcG9wdWxhcml0eSBhbmQgYWRvcHRpb24gb3ZlciB0aGUgeWVhcnMgaGF2ZSBzaG93bi4gSG93ZXZlciwgYnVpbGRpbmcgYSBmdWxsLCBwcm9kdWN0aW9uLWxldmVsIGFwcGxpY2F0aW9uIGludm9sdmVzIGEgZmVhdHVyZSBzZXQgdGhhdCB0aGUgUmVhY3QgZnJhbWV3b3JrLCBvbiBpdHMgb3duLCBkb2VzbuKAmXQgaW5jbHVkZS4gRmVhdHVyZXMgbGlrZSByb3V0aW5nLCBjb2RlLXNwbGl0dGluZywgYnVuZGxpbmcsIENTUyBtb2R1bGVzLCBhbmQgbW9yZSBhcmUgbmVlZGVkIGZvciBwcm9kdWN0aW9uLWxldmVsIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50LiBUaGVzZSBhcmUgbm90IGNhcGFiaWxpdGllcyB0aGF0IFJlYWN0LmpzIG9mZmVycyBvdXQtb2YtdGhlLWJveC4gVGhpcyBpcyB3aGVyZSAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vbmV4dGpzLm9yZy8mcXVvdDsmZ3Q7TmV4dC5qcyZsdDsvYSZndDsgY29tZXMgaW4uJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7TmV4dC5qcyBpcyB0aGUgJmx0O3N0cm9uZyZndDtSZWFjdCBmcmFtZXdvcmsgZm9yIHByb2R1Y3Rpb24mbHQ7L3N0cm9uZyZndDsgYXMgYWR2ZXJ0aXNlZCBvbiB0aGUgTmV4dC5qcyBvZmZpY2lhbCB3ZWJzaXRlLiBJdCBwcm92aWRlcyBwcm9kdWN0aW9uLWxldmVsIGZlYXR1cmVzIHRvIFJlYWN0LmpzIGRldmVsb3BlcnMgdG8gZWFzaWx5IGJ1aWxkIHByb2R1Y3Rpb24tcmVhZHkgYXBwcy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtJbiB0aGlzIHR1dG9yaWFsLCB5b3Ugd2lsbCBsZWFybiBob3cgdG8gYXV0b21hdGUgdGhlIGRlcGxveW1lbnQgb2YgTmV4dC5qcyBhcHBsaWNhdGlvbnMgdG8gSGVyb2t1LiZsdDsvcCZndDsKCiZsdDtoMiZndDtQcmVyZXF1aXNpdGVzJmx0Oy9oMiZndDsKCiZsdDtwJmd0O1RvIGZvbGxvdyB0aGlzIHR1dG9yaWFsLCBhIGZldyB0aGluZ3MgYXJlIHJlcXVpcmVkOiZsdDsvcCZndDsKCiZsdDtvbCZndDsKICAmbHQ7bGkmZ3Q7QmFzaWMga25vd2xlZGdlIG9mIEphdmFzY3JpcHQmbHQ7L2xpJmd0OwogICZsdDtsaSZndDsmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vbm9kZWpzLm9yZyZxdW90OyZndDtOb2RlLmpzJmx0Oy9hJmd0OyBpbnN0YWxsZWQgb24geW91ciBzeXN0ZW0gKHZlcnNpb24gJmFtcDtndDs9IDEwLjMpJmx0Oy9saSZndDsKICAmbHQ7bGkmZ3Q7QW4gJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2hlcm9rdS5jb20vJnF1b3Q7Jmd0O0hlcm9rdSZsdDsvYSZndDsgYWNjb3VudCZsdDsvbGkmZ3Q7CiAgJmx0O2xpJmd0O0EgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9zaWdudXAvJnF1b3Q7Jmd0O0NpcmNsZUNJJmx0Oy9hJmd0OyBhY2NvdW50Jmx0Oy9saSZndDsKICAmbHQ7bGkmZ3Q7QSAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vZ2l0aHViLmNvbS8mcXVvdDsmZ3Q7R2l0SHViJmx0Oy9hJmd0OyBhY2NvdW50Jmx0Oy9saSZndDsKJmx0Oy9vbCZndDsKCiZsdDtwJmd0O1dpdGggYWxsIHRoZXNlIGluc3RhbGxlZCBhbmQgc2V0IHVwLCBsZXTigJlzIGJlZ2luIHRoZSB0dXRvcmlhbC4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7Q3JlYXRpbmcgYSBOZXh0LmpzIHByb2plY3QmbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7VG8gYmVnaW4sIGNyZWF0ZSBhIG5ldyBOZXh0LmpzIHByb2plY3QgYnkgcnVubmluZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDtucHggY3JlYXRlLW5leHQtYXBwIG5leHQtY2QKJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7VGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGEgTmV4dC5qcyBhcHBsaWNhdGlvbiBpbnNpZGUgdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O25leHQtY2QmbHQ7L2NvZGUmZ3Q7IGZvbGRlciAoeW91IGNhbiBnaXZlIHRoZSBmb2xkZXIgYW55IG5hbWUgeW91IGNob3NlKS4gT25jZSB0aGUgc2NhZmZvbGRpbmcgcHJvY2VzcyBpcyBkb25lLCBnbyBpbnRvIHRoZSByb290IG9mIHRoZSBwcm9qZWN0IGFuZCBydW4gdGhlIGFwcGxpY2F0aW9uIHdpdGggdGhlIGZvbGxvd2luZyBjb21tYW5kczombHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0O2NkIG5leHQtY2QKbnBtIHJ1biBkZXYKJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7VGhpcyB3aWxsIGJvb3QgdXAgYSBkZXZlbG9wbWVudCBzZXJ2ZXIgdGhhdCBzZXJ2ZXMgdGhlIGFwcGxpY2F0aW9uIGF0IGl0cyBkZWZhdWx0ICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OzMwMDAmbHQ7L2NvZGUmZ3Q7IHBvcnQgKCZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMCZsdDsvY29kZSZndDspLiBMb2FkIHRoaXMgVVJMIGluIHlvdXIgYnJvd3NlciBhbmQgeW91IHdpbGwgc2VlIHRoZSBkZWZhdWx0IGhvbWVwYWdlLiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDgtMTktYXBwLWRlZmF1bHQtcGFnZS5wbmcmcXVvdDsgYWx0PSZxdW90O05ldyBBcHAgKExvY2FsKSAtIE5leHQuanMmcXVvdDsgLyZndDsmbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7Q3JlYXRpbmcgYW4gSGVyb2t1IGFwcCZsdDsvaDImZ3Q7CgombHQ7cCZndDtUaGUgbmV4dCBzdGVwIGlzIHRvIHNldCB1cCBhIEhlcm9rdSBhcHBsaWNhdGlvbiB0byBob3N0IG91ciBhcHAuIE5hdmlnYXRlIHRvIHlvdXIgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2Rhc2hib2FyZC5oZXJva3UuY29tL2FwcHMmcXVvdDsmZ3Q7SGVyb2t1IGFjY291bnQgbWFuYWdlbWVudCBjb25zb2xlJmx0Oy9hJmd0OywgZ28gdG8gJmx0O3N0cm9uZyZndDtOZXcmbHQ7L3N0cm9uZyZndDsgLSZhbXA7Z3Q7ICZsdDtzdHJvbmcmZ3Q7Q3JlYXRlIG5ldyBhcHAmbHQ7L3N0cm9uZyZndDssIGFuZCBjcmVhdGUgYSBuZXcgYXBwIHdpdGggeW91ciBwcmVmZXJyZWQgbmFtZS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7aW1nIHNyYz0mcXVvdDsvYmxvZy9tZWRpYS8yMDIwLTA4LTE5LWhlcm9rdS1uZXctYXBwLnBuZyZxdW90OyBhbHQ9JnF1b3Q7TmV3IEFwcCAtIEhlcm9rdSZxdW90OyAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0O1Rha2Ugbm90ZSBvZiB0aGUgYXBwIG5hbWUgeW91IGp1c3QgZW50ZXJlZC4gWW91IHdpbGwgbmVlZCB0aGlzIGxhdGVyLiZsdDsvcCZndDsKCiZsdDtwJmd0O05leHQsIGxvY2F0ZSB5b3VyIEhlcm9rdSBBUEkgS2V5IGluIHRoZSAmbHQ7c3Ryb25nJmd0O0FjY291bnQgU2V0dGluZ3MmbHQ7L3N0cm9uZyZndDsgc2VjdGlvbiBvZiB5b3VyIGRhc2hib2FyZC4gWW91IHdpbGwgYWxzbyBuZWVkIHRoaXMgbGF0ZXIgaW4gdGhlIHR1dG9yaWFsLiBZb3UgY2FuIGFjY2VzcyAmbHQ7c3Ryb25nJmd0O0FjY291bnQgU2V0dGluZ3MmbHQ7L3N0cm9uZyZndDsgZnJvbSB0aGUgZHJvcGRvd24gbWVudSB0aGF0IGFwcGVhcnMgd2hlbiB5b3UgY2xpY2sgb24geW91ciBhdmF0YXIgYXQgdGhlIHRvcCByaWdodCBvZiB0aGUgd2VicGFnZS4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7U2V0dGluZyB1cCBhIENpcmNsZUNJIHByb2plY3QgZm9yIGRlcGxveW1lbnQmbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7VG8gc2V0IHVwIHlvdXIgcHJvamVjdCBvbiBDaXJjbGVDSSwgeW91IG5lZWQgdG8gaW5pdGlhbGl6ZSB5b3VyIHByb2plY3QgYXMgYSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtnaXQmbHQ7L2NvZGUmZ3Q7IHJlcG9zaXRvcnkgKGlmIGl0IGlzbuKAmXQgYWxyZWFkeSBpbml0aWFsaXplZCkuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7VGhlbiwgY3JlYXRlIGEgcmVtb3RlIEdpdEh1YiByZXBvc2l0b3J5IGZvciB0aGUgcHJvamVjdCwgY29tbWl0IHlvdXIgY2hhbmdlcyAoaWYgYW55KSwgYW5kIHB1c2ggdGhlIGxvY2FsIHByb2plY3QgdG8gdGhlIHJlbW90ZSByZXBvc2l0b3J5LiZsdDsvcCZndDsKCiZsdDtwJmd0O05leHQsIGdvIHRvIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtBZGQgUHJvamVjdHMmbHQ7L2NvZGUmZ3Q7IHBhZ2Ugb24gdGhlIENpcmNsZUNJIGRhc2hib2FyZCB0byBhZGQgdGhlIHByb2plY3QuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0wOC0xOS1hZGQtcHJvamVjdC5wbmcmcXVvdDsgYWx0PSZxdW90O0FkZCBQcm9qZWN0IC0gQ2lyY2xlQ0kmcXVvdDsgLyZndDsmbHQ7L3AmZ3Q7CgombHQ7cCZndDtDbGljayAmbHQ7c3Ryb25nJmd0O1NldCBVcCBQcm9qZWN0Jmx0Oy9zdHJvbmcmZ3Q7LiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDgtMTktYWRkLWNvbmZpZy5wbmcmcXVvdDsgYWx0PSZxdW90O0FkZCBDb25maWcgLSBDaXJjbGVDSSZxdW90OyAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0O09uIHRoZSBzZXQtdXAgcGFnZSwgY2xpY2sgJmx0O3N0cm9uZyZndDtVc2UgRXhpc3RpbmcgQ29uZmlnJmx0Oy9zdHJvbmcmZ3Q7IHRvIGluc3RydWN0IENpcmNsZUNJIHRoYXQgd2Ugd2lsbCBhZGQgYSBjb25maWd1cmF0aW9uIGZpbGUgbWFudWFsbHksIGFuZCBub3QgdXNlIHRoZSBzYW1wbGUgY29uZmlnIGRpc3BsYXllZC4gTmV4dCwgeW91IGdldCBhIHByb21wdCB0byBlaXRoZXIgZG93bmxvYWQgYSBjb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSBwaXBlbGluZSBvciBzdGFydCBidWlsZGluZy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7aW1nIHNyYz0mcXVvdDsvYmxvZy9tZWRpYS8yMDIwLTA4LTE5LXN0YXJ0LWJ1aWxkLXByb21wdC5wbmcmcXVvdDsgYWx0PSZxdW90O0J1aWxkIFByb21wdCAtIENpcmNsZUNJJnF1b3Q7IC8mZ3Q7Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Q2xpY2sgJmx0O3N0cm9uZyZndDtTdGFydCBCdWlsZGluZyZsdDsvc3Ryb25nJmd0Oy4gVGhpcyBidWlsZCB3aWxsIGZhaWwgYmVjYXVzZSB3ZSBoYXZlIG5vdCBhZGRlZCBvdXIgY29uZmlndXJhdGlvbiBmaWxlIHlldC4gV2Ugd2lsbCBkbyB0aGF0IGxhdGVyLiZsdDsvcCZndDsKCiZsdDtwJmd0O1RoZSBmaW5hbCB0aGluZyB3ZSBuZWVkIHRvIGRvIG9uIHRoZSBDaXJjbGVDSSBjb25zb2xlIGlzIHNldCB1cCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRoZSBwcm9qZWN0IHdlIGp1c3QgYWRkZWQuIFRoaXMgd2lsbCBlbmFibGUgb3VyIHByb2plY3QgdG8gaGF2ZSBhdXRoZW50aWNhdGVkIGFjY2VzcyB0byBvdXIgSGVyb2t1IGFwcGxpY2F0aW9uIGZvciBkZXBsb3ltZW50cy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtHbyB0byB5b3VyIHByb2plY3TigJlzIHNldHRpbmdzIGJ5IGNsaWNraW5nICZsdDtzdHJvbmcmZ3Q7UHJvamVjdCBTZXR0aW5ncyZsdDsvc3Ryb25nJmd0OyBvbiB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7UGlwZWxpbmVzJmx0Oy9jb2RlJmd0OyBwYWdlIChtYWtlIHN1cmUgeW91ciBwcm9qZWN0IGlzIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgcHJvamVjdCkuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0wOC0xOS1wcm9qZWN0LXNldHRpbmdzLnBuZyZxdW90OyBhbHQ9JnF1b3Q7UHJvamVjdCBzZXR0aW5ncyAtIENpcmNsZUNJJnF1b3Q7IC8mZ3Q7Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7T24gdGhpcyBwYWdlLCBjbGljayAmbHQ7c3Ryb25nJmd0O0Vudmlyb25tZW50IFZhcmlhYmxlcyZsdDsvc3Ryb25nJmd0OyBvbiB0aGUgc2lkZSBtZW51LiBUaGVuIGNsaWNrICZsdDtzdHJvbmcmZ3Q7QWRkIEVudmlyb25tZW50IFZhcmlhYmxlJmx0Oy9zdHJvbmcmZ3Q7LiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDgtMTktYWRkLXZhcmlhYmxlLnBuZyZxdW90OyBhbHQ9JnF1b3Q7QWRkIEVudmlyb25tZW50IHZhcmlhYmxlIC0gQ2lyY2xlQ0kmcXVvdDsgLyZndDsmbHQ7L3AmZ3Q7CgombHQ7cCZndDtBZGQgdGhlIGZvbGxvd2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXM6Jmx0Oy9wJmd0OwoKJmx0O3VsJmd0OwogICZsdDtsaSZndDsmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtIRVJPS1VfQVBQX05BTUUmbHQ7L2NvZGUmZ3Q7OiBUaGlzIGlzIHRoZSBuYW1lIG9mIHlvdXIgSGVyb2t1IGFwcGxpY2F0aW9uIChpbiBteSBjYXNlLCAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtuZXh0LWNkJmx0Oy9jb2RlJmd0OykuJmx0Oy9saSZndDsKICAmbHQ7bGkmZ3Q7Jmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7SEVST0tVX0FQSV9LRVkmbHQ7L2NvZGUmZ3Q7OiBZb3VyIEhlcm9rdSBhY2NvdW50IEFQSSBrZXkuIFRoaXMgY2FuIGJlIGZvdW5kIHVuZGVyIHRoZSAmbHQ7c3Ryb25nJmd0O0FjY291bnQmbHQ7L3N0cm9uZyZndDsgdGFiIG9uIEhlcm9rdSwgdW5kZXIgJmx0O3N0cm9uZyZndDtBY2NvdW50IFNldHRpbmdzJmx0Oy9zdHJvbmcmZ3Q7LiZsdDsvbGkmZ3Q7CiZsdDsvdWwmZ3Q7CgombHQ7cCZndDtPbmNlIGFkZGVkLCB5b3Ugbm93IGhhdmUgZXZlcnl0aGluZyBzZXQgdXAgb24geW91ciBDaXJjbGVDSSBjb25zb2xlIGZvciBkZXBsb3ltZW50IHRvIEhlcm9rdS4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7QXV0b21hdGluZyB0aGUgZGVwbG95bWVudCBvZiB0aGUgTmV4dC5qcyBhcHBsaWNhdGlvbiZsdDsvaDImZ3Q7CgombHQ7cCZndDtOb3cgd2UgY2FuIGJlZ2luIHRoZSBwcm9jZXNzIG9mIGJ1aWxkaW5nIHRoZSBhdXRvbWF0aW9uIHNjcmlwdCBmb3IgdGhlIGRlcGxveW1lbnQgb2YgdGhlIE5leHQuanMgYXBwbGljYXRpb24gdG8gSGVyb2t1LiZsdDsvcCZndDsKCiZsdDtwJmd0O1lvdSBuZWVkIHRvIGNyZWF0ZSBhICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O1Byb2NmaWxlJmx0Oy9jb2RlJmd0OyBmaWxlIGNvbnRhaW5pbmcgaW5zdHJ1Y3Rpb25zIGZvciBIZXJva3UgdG8gYnVpbGQgYW5kIHN0YXJ0IHRoZSBhcHBsaWNhdGlvbi4gQ3JlYXRlIGEgZmlsZSBuYW1lZCAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtQcm9jZmlsZSZsdDsvY29kZSZndDsgKG5vIGZpbGUgZXh0ZW5zaW9uKSBhdCB0aGUgcm9vdCBvZiB0aGUgcHJvamVjdCwgYW5kIGVudGVyIHRoZSBmb2xsb3dpbmc6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDtucG0gcnVuIGJ1aWxkCk5PREVfRU5WPXByb2R1Y3Rpb24gbnBtIHJ1biBzdGFydAombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7cCZndDtUaGUgZmlyc3QgY29tbWFuZCBpbiB0aGlzIGZpbGUgY3JlYXRlcyBhIHByb2R1Y3Rpb24gb3B0aW1pemVkIHZlcnNpb24gb2Ygb3VyIE5leHQuanMgYXBwbGljYXRpb24uIFRoZSBuZXh0IGNvbW1hbmQgc3RhcnRzIHRoZSBhcHBsaWNhdGlvbiBpbiBwcm9kdWN0aW9uIG1vZGUuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Tm93IHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgSGVyb2t1IHVzZXMgYSBkeW5hbWljIHBvcnQgaW4gcHJvZHVjdGlvbi4gTWFrZSB0aGlzIGxpdHRsZSBjaGFuZ2UgdG8gdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O3N0YXJ0Jmx0Oy9jb2RlJmd0OyBzY3JpcHQgaW4gJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7cGFja2FnZS5qc29uJmx0Oy9jb2RlJmd0OzombHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0Oy4uLgomcXVvdDtzdGFydCZxdW90OzogJnF1b3Q7bmV4dCBzdGFydCAtcCAkUE9SVCZxdW90OwouLi4KJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7V2l0aCB0aGlzLCBvdXIgTmV4dC5qcyBhcHBsaWNhdGlvbiB3aWxsIG5vdyB1c2UgdGhlIGR5bmFtaWMgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7JFBPUlQmbHQ7L2NvZGUmZ3Q7IHZhcmlhYmxlIHNldCBieSBIZXJva3UgaW4gcHJvZHVjdGlvbi4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtGaW5hbGx5LCB3ZSBjcmVhdGUgb3VyIGRlcGxveW1lbnQgc2NyaXB0IGZvciBDaXJjbGVDSSB0byBidWlsZCBvdXIgZGVwbG95bWVudCBhdXRvbWF0aW9uIHBpcGVsaW5lLiBJbiB0aGlzIHNjcmlwdCwgd2UgdXNlIENpcmNsZUNJ4oCZcyAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2RldmVsb3Blci9vcmJzL29yYi9jaXJjbGVjaS9oZXJva3UmcXVvdDsmZ3Q7SGVyb2t1IG9yYiZsdDsvYSZndDsgdG8gZGVwbG95IG91ciBhcHBsaWNhdGlvbiBmcm9tIG91ciBHaXRIdWIgcmVwb3NpdG9yeSBzdHJhaWdodCB0byBIZXJva3UuICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9jaXJjbGVjaS5jb20vb3Jicy8mcXVvdDsmZ3Q7T3JicyZsdDsvYSZndDsgYXJlIGVhc3ktdG8tdXNlIHBhY2thZ2VzIHRoYXQgYWJzdHJhY3QgYSBsb3Qgb2YgYm9pbGVycGxhdGUgYW5kIHNvbWV0aW1lcyBjb21wbGV4IGNvbW1hbmRzL3dvcmtmbG93cyBwcm92aWRpbmcgYSBkZXZlbG9wZXItZnJpZW5kbHkgQVBJIGZvciB1c2UgaW4gb3VyIGNvbmZpZ3VyYXRpb24gZmlsZXMuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7QXQgdGhlIHJvb3Qgb2YgeW91ciBwcm9qZWN0LCBjcmVhdGUgYSBmb2xkZXIgbmFtZWQgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7LmNpcmNsZWNpJmx0Oy9jb2RlJmd0OyBhbmQgYSBmaWxlIG5hbWVkICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2NvbmZpZy55bWwmbHQ7L2NvZGUmZ3Q7IHdpdGhpbiBpdC4gSW5zaWRlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2NvbmZpZy55bWwmbHQ7L2NvZGUmZ3Q7LCBlbnRlciB0aGUgZm9sbG93aW5nIGNvZGU6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDt2ZXJzaW9uOiAyLjEKb3JiczoKICBoZXJva3U6IGNpcmNsZWNpL2hlcm9rdUAwLjAuMTAKd29ya2Zsb3dzOgogIGhlcm9rdV9kZXBsb3k6CiAgICBqb2JzOgogICAgICAtIGhlcm9rdS9kZXBsb3ktdmlhLWdpdAombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7cCZndDtJbiB0aGUgY29uZmlndXJhdGlvbiBhYm92ZSwgd2UgcHVsbCBpbiB0aGUgSGVyb2t1IG9yYiAoJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Y2lyY2xlY2kvaGVyb2t1QDAuMC4xMCZsdDsvY29kZSZndDspLCB3aGljaCBhdXRvbWF0aWNhbGx5IGdpdmVzIHVzIGFjY2VzcyB0byBhIHBvd2VyZnVsIHNldCBvZiBIZXJva3Ugam9icyBhbmQgY29tbWFuZHMuIE9uZSBvZiB0aG9zZSBqb2JzIGlzIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtoZXJva3UvZGVwbG95LXZpYS1naXQmbHQ7L2NvZGUmZ3Q7IGpvYiwgd2hpY2ggZGVwbG95cyB5b3VyIGFwcGxpY2F0aW9uIHN0cmFpZ2h0IGZyb20geW91ciBHaXRIdWIgcmVwbyB0byB5b3VyIEhlcm9rdSBhY2NvdW50LiBUaGlzIGpvYiBhbHJlYWR5IHRha2VzIGNhcmUgb2YgaW5zdGFsbGluZyB0aGUgSGVyb2t1IENMSSwgaW5zdGFsbGluZyBwcm9qZWN0IGRlcGVuZGVuY2llcywgcnVubmluZyB0aGUgYnVpbGQgc2NyaXB0LCBhbmQgZGVwbG95aW5nIHRoZSBhcHBsaWNhdGlvbi4gSXQgYWxzbyBwaWNrcyB1cCBvdXIgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGZhY2lsaXRhdGUgYSBzbW9vdGggZGVwbG95bWVudCB0byBvdXIgSGVyb2t1IGFwcGxpY2F0aW9uLiZsdDsvcCZndDsKCiZsdDtwJmd0O0l04oCZcyBub3cgdGltZSB0byB0ZXN0IG91ciB3b3JrIHNvIGZhci4gQ29tbWl0IGFsbCBjaGFuZ2VzIHRvIHRoZSBwcm9qZWN0IGFuZCBwdXNoIHRvIHlvdXIgcmVtb3RlIEdpdEh1YiByZXBvc2l0b3J5LiBUaGlzIHdpbGwgYXV0b21hdGljYWxseSB0cmlnZ2VyIHRoZSBkZXBsb3ltZW50IHBpcGVsaW5lLiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDgtMTktYnVpbGQtc3VjY2Vzc2Z1bC5wbmcmcXVvdDsgYWx0PSZxdW90O0J1aWxkIFN1Y2Nlc3NmdWwgLSBDaXJjbGVDSSZxdW90OyAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0O0J5IGNsaWNraW5nIG9uIHRoZSBidWlsZCwgeW91IGNhbiBzZWUgdGhlIGRlcGxveW1lbnQgZGV0YWlscy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7aW1nIHNyYz0mcXVvdDsvYmxvZy9tZWRpYS8yMDIwLTA4LTE5LWJ1aWxkLWRldGFpbHMucG5nJnF1b3Q7IGFsdD0mcXVvdDtCdWlsZCBEZXRhaWxzIC0gQ2lyY2xlQ0kmcXVvdDsgLyZndDsmbHQ7L3AmZ3Q7CgombHQ7cCZndDtEb27igJl0IHN0YXJ0IHRoZSBwYXJhZGUgeWV0LCBzb21ldGltZXMgYSBzdWNjZXNzZnVsIGJ1aWxkIGRvZXNu4oCZdCBleGFjdGx5IGVxdWF0ZSB0byBhIHN1Y2Nlc3NmdWwgZGVwbG95bWVudC4gVGhlcmUgYXJlIHN0aWxsIG1hbnkgdGhpbmdzIHRoYXQgY2FuIGdvIHdyb25nIG9uIHRoZSBIZXJva3UgcGxhdGZvcm0gaXRzZWxmLiBUbyBjb25maXJtIHRoYXQgd2UgaGF2ZSBhIHN1Y2Nlc3NmdWwgZGVwbG95bWVudCwgZ28gdG8geW91ciBIZXJva3UgYXBwbGljYXRpb24gZGFzaGJvYXJkIGFuZCBjbGljayAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtPcGVuIGFwcCZsdDsvY29kZSZndDsuIFRoaXMgd2lsbCBvcGVuIHRoZSBhcHBsaWNhdGlvbiBhdCB0aGUgSGVyb2t1LWRlc2lnbmF0ZWQgVVJMICgmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtodHRwczovL1tBUFBfTkFNRV0uaGVyb2t1YXBwLmNvbSZsdDsvY29kZSZndDspLiBUaGUgZGVmYXVsdCBob21lcGFnZSBiZWxvdyBjb25maXJtcyBhIHN1Y2Nlc3NmdWwgZGVwbG95bWVudC4gWWlwcGVlISZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDgtMTktc2l0ZS1saXZlLnBuZyZxdW90OyBhbHQ9JnF1b3Q7U2l0ZSBMaXZlIC0gSGVyb2t1JnF1b3Q7IC8mZ3Q7Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Tm93LCBsZXTigJlzIGNvbmZpcm0gdGhhdCBvdXIgY2hhbmdlcyBhcmUgYXV0b21hdGljYWxseSBkZXBsb3llZCB3aGVuIHdlIHB1c2ggdGhlbSB0byBvdXIgcmVtb3RlIHJlcG9zaXRvcnkuIENoYW5nZSB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7aDEmbHQ7L2NvZGUmZ3Q7IHRhZyBpbiAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsuL3BhZ2VzL2luZGV4LmpzJmx0Oy9jb2RlJmd0OyBmcm9tOiZsdDsvcCZndDsKCiZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Jmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O3ByZSBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O2NvZGUmZ3Q7JmFtcDtsdDtoMSBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0mYW1wO2d0OwogICAgV2VsY29tZSB0byAmYW1wO2x0O2EgaHJlZj0mcXVvdDtodHRwczovL25leHRqcy5vcmcmcXVvdDsmYW1wO2d0O05leHQuanMhJmFtcDtsdDsvYSZhbXA7Z3Q7CiZhbXA7bHQ7L2gxJmFtcDtndDsKJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7dG86Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDsmYW1wO2x0O2gxIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlfSZhbXA7Z3Q7CiAgICBXZWxjb21lIHRvICZhbXA7bHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vbmV4dGpzLm9yZyZxdW90OyZhbXA7Z3Q7TXkgTmV4dC5qcyEgU2l0ZSZhbXA7bHQ7L2EmYW1wO2d0OwomYW1wO2x0Oy9oMSZhbXA7Z3Q7CiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtwJmd0O1RoZW4gY29tbWl0IGFuZCBwdXNoIHRoZSBjaGFuZ2VzIHRvIHRyaWdnZXIgYW5vdGhlciBkZXBsb3ltZW50LiBPbmNlIHRoZSBidWlsZCBpcyBzdWNjZXNzZnVsLCByZWZyZXNoIHlvdXIgbGl2ZSBzaXRlIGFuZCB5b3Ugd2lsbCBzZWUgdGhlIHNjcmVlbiBiZWxvdy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7aW1nIHNyYz0mcXVvdDsvYmxvZy9tZWRpYS8yMDIwLTA4LTE5LXNpdGUtbGl2ZS1yZWZyZXNoLnBuZyZxdW90OyBhbHQ9JnF1b3Q7U2l0ZSBMaXZlIC0gSGVyb2t1JnF1b3Q7IC8mZ3Q7Jmx0Oy9wJmd0OwoKJmx0O2gyJmd0O0NvbmNsdXNpb24mbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7RGVwbG95aW5nIGxpdHRsZSB0byBsYXJnZSBjaGFuZ2VzIHRvIGFuIGFwcGxpY2F0aW9uIGJ5IGZvbGxvd2luZyBhIG1hbnVhbCBkZXBsb3ltZW50IHByb2Nlc3MgY2FuIHF1aWNrbHkgYmVjb21lIGEgZnJ1c3RyYXRpbmcgYW5kIGxhYm9yaW91cyBwcm9jZXNzLiBXaXRoIENpcmNsZUNJLCB5b3UgY2FuIGF1dG9tYXRlIHRoZSBwcm9jZXNzLCBlbGltaW5hdGluZyBhbnkgd29ycnkgYWJvdXQgcm91dGluZSBvciBodW1hbiBlcnJvcnMgaW50cm9kdWNlZCBieSBtYW51YWwgcHJvY2Vzc2VzLiBJbiB0aGlzIHR1dG9yaWFsLCB3ZSBoYXZlIGJlZW4gYWJsZSB0byBzdWNjZXNzZnVsbHkgY3JlYXRlIGFuIGF1dG9tYXRlZCBkZXBsb3ltZW50IHBpcGVsaW5lIHRvIGFjaGlldmUgc2VhbWxlc3MgZGVwbG95bWVudHMgZm9yIGFueSBjaGFuZ2UgdG8gb3VyIGFwcGxpY2F0aW9uLCBtYWtpbmcgdGhlbSBvbmUgbGVzcyB0aGluZyB0byB3b3JyeSBhYm91dC4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtIYXBweSBDb2RpbmchJmx0Oy9wJmd0OwoKJmx0O2hyIC8mZ3Q7CgombHQ7cCZndDsmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vdHdpdHRlci5jb20vY29kZXJvbmZsZWVrP2xhbmc9ZW4mcXVvdDsmZ3Q7RmlrYXlvJmx0Oy9hJmd0OyBpcyBhIGZ1bGxzdGFjayBkZXZlbG9wZXIgYW5kIGF1dGhvciB3aXRoIG92ZXIgYSBkZWNhZGUgb2YgZXhwZXJpZW5jZSBkZXZlbG9waW5nIHdlYiBhbmQgbW9iaWxlIHNvbHV0aW9ucy4gSGUgaXMgY3VycmVudGx5IHRoZSBTb2Z0d2FyZSBMZWFkIGF0IFRlY2ggU3BlY2lhbGlzdCBDb25zdWx0aW5nIGFuZCBkZXZlbG9wcyBjb3Vyc2VzIGZvciBQYWNrdCBhbmQgVWRlbXkuIEhlIGhhcyBhIHN0cm9uZyBwYXNzaW9uIGZvciB0ZWFjaGluZyBhbmQgaG9wZXMgdG8gYmVjb21lIGEgZnVsbC10aW1lIGF1dGhvci4mbHQ7L3AmZ3Q7CjwvZGVzY3JpcHRpb24+CiAgICAgICAgCiAgICAgIDwvaXRlbT4KICAgIAogICAgICAKICAgICAgPGl0ZW0+CiAgICAgICAgPHRpdGxlPkEgZ3VpZGUgdG8gcHJvZHVjdGl2aXR5IGZvciBzb2Z0d2FyZSBlbmdpbmVlcnM8L3RpdGxlPgogICAgICAgIDxsaW5rPmh0dHBzOi8vY2lyY2xlY2kuY29tL2Jsb2cvYS1ndWlkZS10by1wcm9kdWN0aXZpdHktZm9yLXNvZnR3YXJlLWVuZ2luZWVycy88L2xpbms+CiAgICAgICAgPHB1YkRhdGU+VHVlLCAwNiBPY3QgMjAyMCAwNjo0NjowMCAtMDcwMDwvcHViRGF0ZT4KICAgICAgICA8Z3VpZCBpc1Blcm1hTGluaz0idHJ1ZSI+aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy9hLWd1aWRlLXRvLXByb2R1Y3Rpdml0eS1mb3Itc29mdHdhcmUtZW5naW5lZXJzLzwvZ3VpZD4KICAgICAgICAKICAgICAgICAgIDxkYzpjcmVhdG9yPlRhbnlhIFJhbWFua292YTwvZGM6Y3JlYXRvcj4KICAgICAgICAKICAgICAgICAKICAgICAgICAgIDxkZXNjcmlwdGlvbj4mbHQ7aDImZ3Q7VGhlIGV2b2x1dGlvbiBvZiB0YXNrIG1hbmFnZW1lbnQmbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7V2hlbiB5b3Ugc3RhcnQgeW91ciBjYXJlZXIgYXMgYSBzb2Z0d2FyZSBlbmdpbmVlciwgdGFzayBhbmQgdGltZSBtYW5hZ2VtZW50IGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEVpdGhlciB5b3VyIGJvc3Mgb3IgeW91ciB0ZWFtIGFnaWxlIGJvYXJkIHRlbGxzIHlvdSBleGFjdGx5IHdoYXQgdG8gd29yayBvbi4gVGhlcmUgYXJlIHNvbWUgZGlzdHJhY3Rpb25zIGxpa2UgU2xhY2sgYW5kIGVtYWlsIHRoYXQgeW91IGhhdmUgdG8gY29udGVuZCB3aXRoIGJ1dCBmb3IgdGhlIG1vc3QgcGFydCwgaXTigJlzIG5vdCB0b28gYmFkLiBZb3UgZW5qb3kgY29kaW5nLCB5b3VyIHRhc2tzIGFyZSBmdW4sIHlvdSBlYXNpbHkga2VlcCB0aGVtIGluIHlvdXIgbWVudGFsIHRvLWRvIGxpc3QsIGNoZWNrIHRoZW0gb2ZmLCBhbmQgZmVlbCBwcmV0dHkgYWNjb21wbGlzaGVkIGF0IHRoZSBlbmQgb2YgdGhlIGRheS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtZb3UgYXJlIGdvb2QgYXQgd2hhdCB5b3UgZG8hIEJlZm9yZSBsb25nLCB5b3UgYXJlIGFza2VkIHRvIHN0cmV0Y2ggeW91cnNlbGYgYmV5b25kIGp1c3QgdGhlIGl0ZW1zIG9uIHlvdXIgdGVhbSBhZ2lsZSBib2FyZC4gWW91IHN0YXJ0IGhlbHBpbmcgd2l0aCBkZXNpZ24gYW5kIGJyZWFraW5nIGRvd24gZXBpY3MsIHlvdSBhcmUgYXNrZWQgdG8gcHJlc2VudCBpbiBjb21wYW55IGV2ZW50cywgeW91IHZvbHVudGVlciB0byBoZWxwIGFub3RoZXIgdGVhbSB0byBpbnRlZ3JhdGUgd2l0aCB5b3VyIHRlYW3igJlzIHNlcnZpY2UsIHlvdSBmaW5kIHlvdXJzZWxmIHNwZW5kaW5nIG1vcmUgdGltZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGluIFNsYWNrIHRoYXQgcmVxdWlyZSB5b3VyIGV4cGVydGlzZS4gWW91ciB3b3JrIGlzIGJlY29taW5nIG1vcmUgYW1iaWd1b3VzLCBtb3JlIGNvbXBsZXggYW5kIG1vcmUgdW5ib3VuZGVkLiBZb3UgZmluZCB5b3Vyc2VsZiBwcm9jcmFzdGluYXRpbmcuIFlvdSBmZWVsIG1vcmUgb3ZlcndoZWxtZWQuIEJ1dCB5b3UgdGhpbmsgdG8geW91cnNlbGYsIOKAnHRoYXTigJlzIHdoYXQgc3VjY2VzcyBzaG91bGQgZmVlbCBsaWtlIeKAnSBhbmQgZGVjaWRlIHRoYXQgd2l0aCBoYXJkIHdvcmssIHlvdSBzdXJlbHkgd2lsbCBiZSBvbiB0b3Agb2YgYWxsIHRoZSBzcGlubmluZyBwbGF0ZXMg4oCTIGp1c3Qgc3Rhc2ggbW9yZSB0aGluZ3Mgb24geW91ciBtZW50YWwgdG8tZG8gbGlzdCwgeW91IGdvdCB0aGlzISBBbmQgaWYgeW91IGZvcmdldCB0byBkbyBzb21ldGhpbmcsIGl04oCZcyBub3QgYSBiaWcgZGVhbCwgc29tZW9uZSB3aWxsIHN1cmVseSByZW1pbmQgeW91LiZsdDsvcCZndDsKCiZsdDtibG9ja3F1b3RlJmd0OwogICZsdDtwJmd0O1lvdXIgd29yayBpcyBiZWNvbWluZyBtb3JlIGFtYmlndW91cywgbW9yZSBjb21wbGV4IGFuZCBtb3JlIHVuYm91bmRlZCwgYW5kIHlvdSBmaW5kIHlvdXJzZWxmIHByb2NyYXN0aW5hdGluZy4mbHQ7L3AmZ3Q7CiZsdDsvYmxvY2txdW90ZSZndDsKCiZsdDtwJmd0O0EgYml0IG1vcmUgdGltZSBwYXNzZXMsIHlvdSBhcmUgcHJvbW90ZWQgeWV0IGFnYWluLiBOb3cgeW91IGZpbmQgeW91cnNlbGYgd29ya2luZyBsZXNzIGFuZCBsZXNzIG9uIGl0ZW1zIGZyb20gdGhlIHRlYW0gYWdpbGUgYm9hcmQsIGFuZCB5b3VyIGRheXMgYXJlIHNwZW50IGluIHdoYXQgZmVlbHMgbGlrZSBlbmRsZXNzIG1lZXRpbmdzLCByZXZpZXdpbmcgZGVzaWducywgZG9tYWluIG1vZGVscywgYXJjaGl0ZWN0dXJlIHNwZWNzLCByZXNlYXJjaGluZyBuZXcgdGVjaG5vbG9naWVzLCBsZWFkaW5nIGVmZm9ydHMsIGFuZCB3cml0aW5nIGV2ZW4gbW9yZSBkb2N1bWVudHMsIGFsbCB1bmRlciBhIGNvbnN0YW50IGJhcnJhZ2Ugb2YgcXVlc3Rpb25zIGFuZCBwaW5ncyBpbiBTbGFjayBhbmQgZW1haWwuIExlc3Mgb2YgeW91ciB3b3JrIHNlZW1zIOKAnGZ1buKAnS4gV2hlbiB5b3UgbG9vayBiYWNrIG9uIHlvdXIgZGF5LCB5b3UgcmVhbGl6ZSB0aGF0IHlvdSBzcGVudCBtb3N0IG9mIGl0IGluIGJldHdlZW4gbWVldGluZ3MgYW5kIGFuc3dlcmluZyBhIG15cmlhZCBvZiBxdWVzdGlvbnMgaW4gU2xhY2suIFlvdSBmb3Jnb3Qgb3IgZGlkbuKAmXQgaGF2ZSB0aW1lIHRvIG1ha2UgYW55IHByb2dyZXNzIG9uIGltcG9ydGFudCBzdHVmZiwgYSBmZXcgb2YgeW91ciBzcGlubmluZyBwbGF0ZXMgYXJlIG5vdyByZXN0aW5nIG9uIHRoZSBmbG9vciwgdW50b3VjaGVkLCB3aXRoIHlvdSBhY3RpdmVseSByZXNpc3RpbmcgdG8gZmluZCB0aW1lIGZvciB0aGVtIGFuZCBubyBvbmUgdGhlcmUgdG8gcmVtaW5kIHlvdSBhYm91dCBhbGwgb2YgdGhlIHRoaW5ncyB0aGF0IGFyZSBnZXR0aW5nIGRyb3BwZWQuIFNvbWUgZGF5cywgeW91IGFyZSBub3QgcmVhbGx5IHN1cmUgaWYgeW914oCZdmUgYWNjb21wbGlzaGVkIGFueXRoaW5n4oCmJmx0Oy9wJmd0OwoKJmx0O2gyJmd0O0FtYmlndWl0eSB1cCwgcHJvZHVjdGl2aXR5IGRvd24mbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7RG9lcyB0aGlzIHNvdW5kIGZhbWlsaWFyPyBJZiBzbywgY29uZ3JhdHVsYXRpb25zISBZb3XigJl2ZSBiZWVuIHN1Y2Nlc3NmdWwgaW4geW91ciBlbmdpbmVlcmluZyBjYXJlZXIgYW5kIHlvdSBhcmUgd29ya2luZyBmb3IgYW4gb3JnYW5pemF0aW9uIHRoYXQgaXMgcHVzaGluZyB5b3UgdG8gZ3JvdyEgSW4gbXkgY2FyZWVyLCBJIGRlZmluaXRlbHkgZ290IHRvIHRoZSBwb2ludCB3aGVyZSBJIGNvdWxkIG5vIGxvbmdlciByZWx5IG9uIHNpbXBsZSBzdHJlYW1zIG9mIHRhc2tzIHRoYXQgd29ya2VkIGZvciBtZSB1cCB1bnRpbCB0aGF0IHBvaW50OiB0aG9zZSBzaW1wbGUgdGltZXMgd2hlbiBJIGNvdWxkIGp1c3QgcGljayBzb21ldGhpbmcgdXAgZnJvbSBteSB0ZWFtIGFnaWxlIGJvYXJkIG9yIGFuc3dlciBhIG1hbmFnZWFibGUgbnVtYmVyIG9mIHJlcXVlc3RzIGluIFNsYWNrIGFuZCBnZXQgYmFjayB0aGF0IGNvdmV0ZWQgOnRoYW5reW91OiBlbW9qaS4gSXQgZXZlbnR1YWxseSBiZWNhbWUgdW5yZWFzb25hYmxlIGZvciBtZSB0byBleHBlY3QgYWxsIG9mIG15IHdvcmsgdG8gYmUg4oCcZnVu4oCdIHRvIG5hdHVyYWxseSBtb3RpdmF0ZSBtZS4gQW5kIEkgaGFkIHRvIHJlY29uY2lsZSB0aGUgY29uZmxpY3QgYmV0d2VlbiBoYXZpbmcgdG8gZG8gbW9yZSBhbWJpZ3VvdXMsIGNvbXBsZXggdGFza3MgdGhhdCBoYXZlIHZlcnkgbG9uZyBjeWNsZXMgd2hpbGUgc3RpbGwgZmVlbGluZyBnb29kIGFib3V0IG15IGRheSAoaXTigJlzIGVhc3kgdG8gc2VlIHNvbWV0aGluZyB5b3UgY29kZWQgZ2V0dGluZyBkZXBsb3llZCB0byBwcm9kdWN0aW9uIGFuZCBmZWVsIGFjY29tcGxpc2hlZCwgaXTigJlzIG11Y2ggaGFyZGVyIHRvIGxvb2sgYXQgYSBwaWxlIG9mIGRvY3VtZW50cyB5b3XigJl2ZSByZWFkIG9yIGNyZWF0ZWQsIG9yIFNsYWNrIHRocmVhZHMgeW91IHBhcnRpY2lwYXRlZCBpbiwgYW5kIGZlZWwgdGhlIHNhbWUpLiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7R3Jvd2luZyBpbiB5b3VyIGVuZ2luZWVyaW5nIGNhcmVlciBhbmQgdGFraW5nIG9uIGEgbGVhZGVyc2hpcCByb2xlIHJlcXVpcmVzIGEgbmV3IGFwcHJvYWNoIHRvIHByb2R1Y3Rpdml0eS4mbHQ7L3N0cm9uZyZndDsmbHQ7L3AmZ3Q7CgombHQ7cCZndDtJ4oCZdmUgYWx3YXlzIGJlZW4gaW50ZXJlc3RlZCBpbiBwcm9kdWN0aXZpdHkuIEFmdGVyIHJlYWRpbmcgbWFueSBib29rcyBhbmQgYXJ0aWNsZXMgb24gdGhlIHRvcGljIGFuZCB0cnlpbmcgdmFyaW91cyB0ZWNobmlxdWVzLCBJIGV2ZW50dWFsbHkgZmlndXJlZCBvdXQgdGhhdCAmbHQ7ZW0mZ3Q7cHJvZHVjdGl2aXR5IGlzIG5vdCBhYm91dCBkb2luZyBtb3JlLiZsdDsvZW0mZ3Q7IFRoZSBxdWVzdGlvbiB0aGF0IGtlcHQgcG9wcGluZyB1cCBhZ2FpbiBhbmQgYWdhaW4gb24gbXkgcXVlc3QgdG8g4oCcYmVpbmcgbW9yZSBwcm9kdWN0aXZl4oCdIHdhcyB2ZXJ5IHNpbXBsZSBhbmQgaGFkIGxpdHRsZSB0byBkbyB3aXRoIHRoZSBudW1iZXIgb2YgdGhpbmdzIEnigJlkIGRvbmUgb3IgaG93IGJ1c3kgSeKAmWQgYmVlbi4gSW5zdGVhZCBpdCB3YXMgc2ltcGx5LCDigJxXaGF0IGhhdmUgSSBhY2NvbXBsaXNoZWQgdG9kYXk/4oCdLiZsdDsvcCZndDsKCiZsdDtibG9ja3F1b3RlJmd0OwogICZsdDtwJmd0O1RoZSBxdWVzdGlvbiB0aGF0IGtlcHQgcG9wcGluZyB1cCBhZ2FpbiBhbmQgYWdhaW4gd2FzLCDigJxXaGF0IGhhdmUgSSBhY2NvbXBsaXNoZWQgdG9kYXk/4oCdJmx0Oy9wJmd0OwombHQ7L2Jsb2NrcXVvdGUmZ3Q7CgombHQ7cCZndDtVc2luZyBhZHZpY2UgZnJvbSBudW1lcm91cyBwcm9kdWN0aXZpdHkgcmVzb3VyY2VzICgmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vd3d3LmFtYXpvbi5jb20vZHAvQjAwWjNHMjM5VyZxdW90OyZndDtQcm9kdWN0aXZpdHkgUHJvamVjdCZsdDsvYSZndDssICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly96ZW5oYWJpdHMubmV0L3plbi10by1kb25lLXp0ZC10aGUtdWx0aW1hdGUtc2ltcGxlLXByb2R1Y3Rpdml0eS1zeXN0ZW0vJnF1b3Q7Jmd0O1plbiBUbyBEb25lJmx0Oy9hJmd0OywgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2J1bGxldGpvdXJuYWwuY29tLyZxdW90OyZndDtCdWxsZXQgSm91cm5hbCZsdDsvYSZndDssICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly93d3cuYW1hem9uLmNvbS9HZXR0aW5nLVRoaW5ncy1Eb25lLVN0cmVzcy1GcmVlLVByb2R1Y3Rpdml0eS9kcC8wMTQzMTI2NTYzJnF1b3Q7Jmd0O0dldHRpbmcgVGhpbmdzIERvbmUmbHQ7L2EmZ3Q7IGFuZCBtYW55IG90aGVycykgSSBkZXZlbG9wZWQgYSBzdXN0YWluYWJsZSBzeXN0ZW0gdGhhdCB3b3JrZWQgZm9yIG1lLCB0aGF0IGNvdWxkIGFsbG93IG1lIHRvIGtlZXAgdHJhY2sgb2YgYWxsIHRoZSBzcGlubmluZyBwbGF0ZXMgd2l0aG91dCBnZXR0aW5nIG92ZXJ3aGVsbWVkIGFuZCB0aGF0IHdvdWxkIGhlbHAgbWUgZmVlbCBsaWtlIEkgYWNjb21wbGlzaGVkIHNvbWV0aGluZyB1c2VmdWwgYXQgdGhlIGVuZCBvZiB0aGUgZGF5LiZsdDsvcCZndDsKCiZsdDtoMiZndDtQcm9kdWN0aXZpdHkgd2hlbiBlbmdpbmVlcmluZyB3b3JrIGdldHMgYW1iaWd1b3VzJmx0Oy9oMiZndDsKCiZsdDtoMyZndDsxLiBDaG9vc2UgbXkgZm9jdXMmbHQ7L2gzJmd0OwombHQ7cCZndDtUaGUgZmlyc3Qgc3RlcCB3YXMgdG8gYmVjb21lIGRlbGliZXJhdGUgYWJvdXQgd2hhdCBJIHdvcmsgb24uIEFzIGVuZ2luZWVycyB3ZSBjYW4gd29yayBvbiBtYW55IGRpZmZlcmVudCB0aGluZ3MsIHNvbWUgb2YgdGhlbSBhcmUgcHVyZWx5IGVuam95YWJsZSwgc29tZSBtYWtlIG91ciBwcm9kdWN0IGJldHRlciwgc29tZSBlbmFibGUgb3VyIHRlYW1tYXRlcywgc29tZSBoZWxwIG90aGVyIHRlYW1zIG9yIG91ciBjb21wYW55LiBIb3cgZG8gd2UgY2hvb3NlIHdoYXQgdG8gZm9jdXMgb24gYW55IGdpdmVuIGRheT8mbHQ7L3AmZ3Q7CgombHQ7cCZndDtUbyBoZWxwIG1lIGRlY2lkZSBJIGxpc3RlZCBvdXQgYWxsIG9mIHRoZSBwb3NzaWJsZSBmb2N1cyBhcmVhcyB0aGF0IEkgY291bGQgcHV0IG15IGVuZXJneSB0b3dhcmRzOiBsZWFybmluZywgY29kaW5nIGZlYXR1cmVzLCBtYWtpbmcgYXJjaGl0ZWN0dXJhbCBpbXByb3ZlbWVudHMsIG1lbnRvcmluZy9jb2FjaGluZywgaW1wcm92aW5nIHRlYW0gb3Igb3JnYW5pemF0aW9uIHByb2Nlc3NlcywgZ3Jvd2luZyBlbmdpbmVlcmluZyBpbmZsdWVuY2UsIGV0Yy4gRWFjaCBtb250aCAob3IgcXVhcnRlcikgSSBwaWNrIG9ubHkgMyBmb2N1cyBhcmVhcyB3aGVyZSBJIGFtIGdvaW5nIHRvIHB1dCBtb3N0IG9mIG15IGVuZXJneS4gVG8gaGVscCBtZSBkZWNpZGUsIEkgYW5zd2VyIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zIGZvciBlYWNoIG9mIHRoZSBmb2N1cyBhcmVhczombHQ7L3AmZ3Q7CgombHQ7dWwmZ3Q7CiAgJmx0O2xpJmd0O0RvIEkgZW5qb3kgdGhpcz8gJmx0O2JyIC8mZ3Q7Jmx0Oy9saSZndDsKICAmbHQ7bGkmZ3Q7RG9lcyB0aGlzIGhlbHAgbWUvbXkgY2FyZWVyPyAmbHQ7YnIgLyZndDsmbHQ7L2xpJmd0OwogICZsdDtsaSZndDtEb2VzIHRoaXMgaGVscCBteSB0ZWFtIHJpZ2h0IG5vdz8mbHQ7YnIgLyZndDsmbHQ7L2xpJmd0OwogICZsdDtsaSZndDtEb2VzIHRoaXMgaGVscCBteSBjb21wYW55IHJpZ2h0IG5vdz8mbHQ7L2xpJmd0OwombHQ7L3VsJmd0OwoKJmx0O3AmZ3Q7TXkgYW5zd2VycyBtaWdodCBjaGFuZ2UgbW9udGggdG8gbW9udGguIEZvciBleGFtcGxlLCBpbXByb3ZpbmcgdGVhbSBwcm9jZXNzZXMgbWlnaHQgYWN0dWFsbHkgbm90IGhlbHAgbXkgdGVhbSByaWdodCBub3cgaWYgdGhlcmUgYXJlIG90aGVyIGZvbGtzIG9uIG15IHRlYW0gd2hvIGFyZSBhbHJlYWR5IGRvaW5nIHRoYXQuIEkgdHJ5IHRvIGhhdmUgYSBjb21iaW5hdGlvbiBvZiB0aGluZ3MgdGhhdCBJIGVuam95IGFzIHdlbGwgYXMgdGhpbmdzIHRoYXQgSSBtaWdodCByZXNpc3QgYnV0IHdoaWNoIGhlbHAgbWUsIG15IHRlYW0sIG9yIG15IGNvbXBhbnkuIEkgYmVncnVkZ2luZ2x5IHJlY29nbml6ZSB0aGF0IGRpc2NvbWZvcnQgdmVyeSBmcmVxdWVudGx5IG1lYW5zIGdyb3d0aCwgc28gSSBmb3JjZSBteXNlbGYgdG8gdHJ5IHNvbWUgb2YgdGhlIGFyZWFzIHRoYXQgZmVlbCDigJxoYXJk4oCdIG9yIOKAnW5vdCBmdW7igJ0uIEF0IHRoZSBzYW1lIHRpbWUgSSBrbm93IHRoYXQgdGhlc2UgY2hhbGxlbmdpbmcgYXJlYXMgd2lsbCByZXF1aXJlIHNpZ25pZmljYW50bHkgbW9yZSBlbmVyZ3ksIHNvIGNob29zaW5nIDMg4oCcaGFyZOKAnSBhcmVhcyBhdCBvbmNlIG1vc3QgbGlrZWx5IHdpbGwgcmVzdWx0IGluIG1lIHJlc2lzdGluZyB0byBtYWtlIHByb2dyZXNzIGluIGFueSBvZiB0aGVtLiBTdXN0YWluYWJsZSBkaXNjb21mb3J0IChvciBncm93dGgpIGlzIHRoZSBrZXkhJmx0Oy9wJmd0OwoKJmx0O2Jsb2NrcXVvdGUmZ3Q7CiAgJmx0O3AmZ3Q7RGlzY29tZm9ydCB2ZXJ5IGZyZXF1ZW50bHkgbWVhbnMgZ3Jvd3RoLiZsdDsvcCZndDsKJmx0Oy9ibG9ja3F1b3RlJmd0OwoKJmx0O3AmZ3Q7T25jZSBJIGhhdmUgbXkgYXJlYXMgb2YgZm9jdXMgY2hvc2VuIEkgd2lsbCB1c2UgdGhlbSBhcyB0aGUgZmlsdGVyIHRocm91Z2hvdXQgdGhlIG1vbnRoIG9yIHF1YXJ0ZXIgZm9yIGFueSB3b3JrIHRoYXQgaXMgY29taW5nIG15IHdheS4gSeKAmWxsIGFsc28gc2VlayBvdXQgb3Bwb3J0dW5pdGllcyBhbmQgb3JpZ2luYXRlIHdvcmsgdGhhdCBmYWxsIHdpdGhpbiBteSB0b3AgMyBmb2N1cyBhcmVhcy4gVGhpcyBhbGxvd3MgbWUgdG8gaW5pdGlhdGUgaW50ZXJlc3Rpbmcgc3RyZWFtcyBvZiB3b3JrIHRoYXQgbm8gb25lIHNwZWNpZmljYWxseSBhc2tlZCBtZSB0byBkby4gSGF2aW5nIHRoaXMgZmlsdGVyIGRvZXNu4oCZdCBuZWNlc3NhcmlseSBtZWFuIHRoYXQgSSB3aWxsIG5vdCBkbyBhbnkgd29yayBvdXRzaWRlIG9mIHRoZXNlIGFyZWFzIChnb29kIGx1Y2sgdGVsbGluZyB5b3VyIGJvc3MgeW91IGFyZSByZWZ1c2luZyB0byBkbyBzb21ldGhpbmcgYmVjYXVzZSBpdCBkb2VzbuKAmXQgYWxpZ24gd2l0aCB5b3VyIGZvY3VzIGZvciB0aGlzIG1vbnRoKS4gQnV0LCBpZiBJIGhhdmUgYSBjaG9pY2UsIEnigJlsbCBjaG9vc2UgdGFza3MgdGhhdCBhbGlnbiBhbmQgcHVudCBvbiB0YXNrcyB0aGF0IGRvbuKAmXQuJmx0Oy9wJmd0OwoKJmx0O2gzJmd0OzIuIEdldCB0aGluZ3MgZG9uZSZsdDsvaDMmZ3Q7CiZsdDtwJmd0O1RoZSBzZWNvbmQgc3RlcCB3YXMgdG8gYmVjb21lIGRlbGliZXJhdGUgaW4gaG93IEkgbWFrZSBwcm9ncmVzcyBpbiB0aGUgYXJlYXMgSSBjaG9zZSAob3IgaG93IEkgd29yaykuICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly96ZW5oYWJpdHMubmV0L3plbi10by1kb25lLXp0ZC10aGUtdWx0aW1hdGUtc2ltcGxlLXByb2R1Y3Rpdml0eS1zeXN0ZW0vJnF1b3Q7Jmd0O1plbiBUbyBEb25lIChaVEQpJmx0Oy9hJmd0OyB0YWxrcyBhYm91dCBjaG9vc2luZyAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vemVuaGFiaXRzLm5ldC9iaWctcm9ja3MtZmlyc3QtZG91YmxlLXlvdXItcHJvZHVjdGl2aXR5LXRoaXMtd2Vlay8mcXVvdDsmZ3Q7YmlnIHJvY2tzJmx0Oy9hJmd0OyBmb3IgeW91ciB3ZWVrIGFuZCBjaG9vc2luZyAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vemVuaGFiaXRzLm5ldC9wdXJwb3NlLXlvdXItZGF5LW1vc3QtaW1wb3J0YW50LXRhc2svJnF1b3Q7Jmd0O01JVHMgKG1vc3QgaW1wb3J0YW50IHRhc2tzKSZsdDsvYSZndDsgZm9yIHlvdXIgZGF5LiBUaGUgaWRlYSBpcyB0aGF0IGlmIHlvdSBkb27igJl0IHByaW9yaXRpemUgeW91ciDigJxiaWcgcm9ja3PigJ0sIHRpbnkgcGViYmxlcyB3aWxsIGZpbGwgeW91ciBkYXkgYW5kIHlvdSB3b27igJl0IGFjY29tcGxpc2ggdmVyeSBtdWNoLiBJIGZvdW5kIHRoYXQgb25jZSBJIGhhZCBteSBkaXJlY3Rpb24gc2V0IEkgY291bGQgZGVsaWJlcmF0ZWx5IHBsYW4gbXkgd2VlayBieSBjaG9vc2luZyB0b3AgMi0zIHByb2plY3RzIG9yIHRhc2tzIChha2EgYmlnIHJvY2tzKSB0aGF0IEnigJlkIGxpa2UgdG8gbWFrZSBwcm9ncmVzcyBvbiB0aGlzIHdlZWsuIEFuZCB0aGVuIGVhY2ggZGF5IEkgY291bGQgZGVsaWJlcmF0ZWx5IGNob29zZSB0b3AgMi0zIHRhc2tzIHRoYXQgSeKAmWQgbGlrZSB0byBhY2NvbXBsaXNoIGFuZCB0aGF0IHdvdWxkIGhlbHAgdG8gbW92ZSBteSB3ZWVrbHkgYmlnIHJvY2tzIGZvcndhcmQuIEFzIHlvdSBwcm9iYWJseSBub3RpY2VkIGl04oCZcyDigJxjaG9vc2UgdG9wIDPigJ0gYWxsIHRoZSB3YXkgZG93biEmbHQ7L3AmZ3Q7CgombHQ7YmxvY2txdW90ZSZndDsKICAmbHQ7cCZndDtpZiB5b3UgZG9u4oCZdCBwcmlvcml0aXplIHlvdXIg4oCcYmlnIHJvY2tz4oCdLCB0aW55IHBlYmJsZXMgd2lsbCBmaWxsIHlvdXIgZGF5IGFuZCB5b3Ugd29u4oCZdCBhY2NvbXBsaXNoIHZlcnkgbXVjaC4mbHQ7L3AmZ3Q7CiZsdDsvYmxvY2txdW90ZSZndDsKCiZsdDtwJmd0O0ZvciBhbnkgcGxhbiB0byB3b3JrIGl0IG5lZWRzIHRvIGJlIHJlYWxpc3RpYyBhbmQgYWNoaWV2YWJsZS4gQmVmb3JlIHRoZSBzdGFydCBvZiBlYWNoIHdlZWsgSSBsb29rIGF0IG15IHNjaGVkdWxlIHRvIHNlZSB3aGF0IG1lZXRpbmdzIEkgaGF2ZSB0aGF0IHdlZWsuIERvIEkgbmVlZCB0byBwcmVwYXJlIGZvciBhbnkgb2YgdGhlbT8gSWYgc28sIHByZXAgY2FuIGJlY29tZSBvbmUgb2YgbXkgTUlUcyBzb21lIGRheSBiZWZvcmUgdGhlIG1lZXRpbmcuIEFyZSB0aGVyZSBhbnkgbWVldGluZ3MgcmVsYXRlZCB0byBwcm9qZWN0cyBpbiBteSBmb2N1cyBhcmVhcz8gSWYgc28sIEkgY2FuIGNob29zZSB0aG9zZSBwcm9qZWN0cyBhcyBteSBiaWcgcm9ja3MgZm9yIHRoYXQgd2Vlay4gTG9va2luZyBhaGVhZCBhbHNvIGhlbHBzIG1lIGp1ZGdlIGhvdyBtdWNoIHRpbWUgYW5kIGVuZXJneSBJ4oCZbGwgYWN0dWFsbHkgaGF2ZSBuZXh0IHdlZWsuIElmIEkgaGF2ZSB0b28gbWFueSBjb250ZXh0IHN3aXRjaGVzIHRocm91Z2hvdXQgdGhlIHdlZWssIGl04oCZcyB1bmxpa2VseSBJ4oCZbGwgaGF2ZSBhIHRvbiBvZiBlbmVyZ3kgbGVmdCB0byB3b3JrIG9uIGFueXRoaW5nIGNoYWxsZW5naW5nLiBJIGFsc28gdHJ5IHRvIGZpbmQgY2h1bmtzIG9mIG1lZXRpbmctZnJlZSB0aW1lIGluIG15IHNjaGVkdWxlIGFuZCBpbnRlbnRpb25hbGx5IGJsb2NrIHRoZW0gb2ZmIGZvciBmb2N1c2VkIHdvcmsuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7QmVmb3JlIHRoZSBzdGFydCBvZiBlYWNoIGRheSBJIGRvIG1vcmUgdGFjdGljYWwgcGxhbm5pbmcgZm9yIHRoYXQgZGF5OiBhcmUgdGhlcmUgYW55IHRhc2tzIHN0aWxsIHJlbWFpbmluZyB0byBhY2NvbXBsaXNoIG15IHdlZWtseSBiaWcgcm9ja3M/IERvIEkgbmVlZCB0byBjb3Vyc2UgY29ycmVjdCBhbmQgZG8gc29tZXRoaW5nIHRoYXQgY2FtZSB1cCBkdXJpbmcgdGhlIHdlZWs/IElzIGl0IG1vcmUgaW1wb3J0YW50IHRoYW4gd2hhdCBJIGhhZCBwbGFubmVkIHRvIGRvPyBJIGFsc28gdHJ5IHRvIHNwbGl0IG15IGRheSBpbnRvIOKAnHJlYWN0aXZl4oCdIGFuZCDigJxmb2N1c2Vk4oCdIHBhcnRzLiBEdXJpbmcgcmVhY3RpdmUgdGltZSBJIGxldCBteXNlbGYg4oCcd2FuZGVyIGFyb3VuZOKAnSBhbmQgc2ltcGx5IHJlYWN0IHRvIHRoaW5ncyB0aGF0IHNob3cgdXAsIHJlcGx5IHRvIHF1ZXN0aW9ucyBvciByZXF1ZXN0cyBpbiBTbGFjaywgY2hlY2sgZW1haWwsIGF0dGVuZCBtZWV0aW5ncy4gQnV0IGR1cmluZyBteSBmb2N1cyB0aW1lIEkgdHJ5IG15IGJlc3QgdG8gZGlzY29ubmVjdCwgc2h1dCBkb3duIG9yIGF0IGxlYXN0IG1pbmltaXplIFNsYWNrLCBjbG9zZSBlbWFpbCBhbmQgb3RoZXIgc291cmNlcyBvZiBub3RpZmljYXRpb25zIGFuZCBhY3R1YWxseSB3b3JrIG9uIHdoYXQgSSBwbGFubmVkIHRvIGRvIHRoYXQgZGF5LiBGb3IgYW55IG5ldyB0YXNrIG9yIHJlcXVlc3QgdGhhdCBwb3BzIHVwIEkgc2ltcGx5IHdyaXRlIGl0IGRvd24gdG8gZm9sbG93IHVwIGxhdGVyLiBXcml0aW5nIGl0IGRvd24gKGFzIG9wcG9zZWQgdG8ga2VlcGluZyBpdCBpbiBteSBicmFpbiBzcGFjZSkgZ2l2ZXMgbWUgYSBwZWFjZSBvZiBtaW5kIHRoYXQgSSB3b27igJl0IGZvcmdldCB0byBkbyBpdCBsYXRlciBidXQgaXQgYWxzbyBhbGxvd3MgbWUgdG8ga2VlcCBmb2N1c2luZyBvbiBteSBwbGFubmVkIHdvcmsgYW5kIHJlc2lzdCB0aGUgdGVtcHRhdGlvbiBvZiBzd2l0Y2hpbmcgY29udGV4dC4gSXTigJlzIHF1aXRlIG9kZCBqdXN0IGhvdyBtdWNoIG91ciBicmFpbnMgbG92ZSB0aGUgaWRlYSBvZiBtdWx0aXRhc2tpbmcgYW5kIGdldHRpbmcgZGlzdHJhY3RlZCBnaXZlbiBob3cgaW5lZmZlY3RpdmUgd2UgYWN0dWFsbHkgYXJlIGF0IGRvaW5nIG1vcmUgdGhhbiBvbmUgdGhpbmcgYXQgYSB0aW1lLiZsdDsvcCZndDsKCiZsdDtoMyZndDszLiBBbmFseXplIGFuZCBpdGVyYXRlJmx0Oy9oMyZndDsKJmx0O3AmZ3Q7UGxhbm5pbmcgYW5kLCBtb3JlIGltcG9ydGFudGx5LCBzdGlja2luZyB0byB0aGUgcGxhbiBpcyBhbiBlc3NlbnRpYWwgcGFydCBvZiBteSB3ZWVrbHkgYW5kIGRhaWx5IHJpdHVhbC4gSXQgYWxsb3dzIG1lIHRvIGZvY3VzIG9uIHRoaW5ncyB0aGF0IGFjdHVhbGx5IG1hdHRlciB0byBtZSBhbmQgaXQgZm9yY2VzIG1lIHRvIGJyZWFrIGRvd24gbGFyZ2UgYW1iaWd1b3VzIHByb2plY3RzIGludG8gc21hbGxlciBhY2hpZXZhYmxlIHRhc2tzLiBCZWluZyBkZWxpYmVyYXRlIGFuZCBzcGVuZGluZyB0aW1lIHBsYW5uaW5nIGhhcyBhbm90aGVyIGludGVyZXN0aW5nIHNpZGUgZWZmZWN0OiBJIGNhbiBsb29rIGJhY2sgb24gbXkgd2VlayBvciBteSBkYXksIHJldmlldyBhbmQgY2VsZWJyYXRlIHRoaW5ncyBJ4oCZdmUgYWNjb21wbGlzaGVkIChhIG5pY2UgbW90aXZhdGlvbiBib29zdCEpLCBhbmQgSSBjYW4gYWxzbyBhbmFseXplIHRhc2tzIHRoYXQgSSByZXNpc3RlZC4gV2UgdGVuZCB0byBwcm9jcmFzdGluYXRlIG9uIHRoaW5ncyB0aGF0IGFyZSB0b28gaGFyZCBvciB0b28gYm9yaW5nLiAgQW5hbHl6aW5nIHdoYXQgY2F1c2VkIG1lIHRvIHJlc2lzdCBhIHRhc2sgY2FuIG9mdGVuIGhlbHAgbWUgdG8gb3ZlcmNvbWUgdGhhdCBuYXR1cmFsIHRlbmRlbmN5LiBJIHNwZW5kIGEgYml0IG9mIHRpbWUgZHVyaW5nIG15IHdlZWtseSBwbGFubmluZyB0aGlua2luZyBhYm91dCDigJx3aHnigJ1zIGZvciBteSBiaWcgcm9ja3M6IHdoeSBzaG91bGQgSSBkbyB0aGlzIHByb2plY3Qgb3IgdGhpcyB0YXNrPyBKdXN0IGFuc3dlcmluZyB0aGF0IHF1ZXN0aW9uIG9mdGVuIG1vdGl2YXRlcyBtZSBlbm91Z2ggdG8gcHVzaCB0aHJvdWdoIHNvbWUgb2YgdGhlIGhhcmRlciBvciBsZXNzIOKAnGZ1buKAnSBpdGVtcyBvbiBteSBsaXN0LiBBbGwgb2YgYSBzdWRkZW4gc29tZXRoaW5nIHRoYXQgd2FzIGJvcmluZyBiZWNvbWVzIG11Y2ggbW9yZSBtb3RpdmF0aW5nLiBBbmQgaWYgc29tZXRoaW5nIGlzIHRvbyBoYXJkIG9yIGFtYmlndW91cyBJIHRyeSB0byBhbnN3ZXIgYSBzaW1wbGUgcXVlc3Rpb246IHdoYXQgaXMgdGhlIHZlcnkgbmV4dCB0aW55IHN0ZXAgSSBjYW4gdGFrZSB0byBtYWtlIHNvbWUgZm9yd2FyZCBwcm9ncmVzcz8gT2Z0ZW4gaXQgZG9lc27igJl0IG5lZWQgdG8gYmUgYSB2ZXJ5IGFtYml0aW91cyBmaXJzdCBzdGVwLCBzb21ldGltZXMganVzdCBzY2hlZHVsaW5nIGEgbWVldGluZyB0byBicmFpbnN0b3JtIHNvbWUgaWRlYXMgd2l0aCBzb21lb25lIGVsc2UgaXMgZW5vdWdoLiBBbmQgb25jZSB5b3UgbWFrZSB0aGF0IGZpcnN0IHN0ZXAsIHlvdSBjYW4gZmlndXJlIG91dCB0aGUgbmV4dCBzdGVwIHRvIHRha2UuJmx0Oy9wJmd0OwoKJmx0O2Jsb2NrcXVvdGUmZ3Q7CiAgJmx0O3AmZ3Q7QnkgYW5zd2VyaW5nIOKAnHdoeSzigJ0gYWxsIG9mIGEgc3VkZGVuIHNvbWV0aGluZyB0aGF0IHdhcyBib3JpbmcgYmVjb21lcyBtdWNoIG1vcmUgbW90aXZhdGluZy4mbHQ7L3AmZ3Q7CiZsdDsvYmxvY2txdW90ZSZndDsKCiZsdDtwJmd0O1BsYW5uaW5nIGFuZCBiZWluZyBkZWxpYmVyYXRlIHJlYWxseSBoZWxwZWQgbWUgcmVhbGl6ZSB0aGF0IHlvdSBjYW4gbWFrZSBzaWduaWZpY2FudCBwcm9ncmVzcyBvbiBsYXJnZSBwcm9qZWN0cyBieSB0YWtpbmcgdGlueSBzdGVwcyBmb3J3YXJkLiBXaGVuIHdlIHRyYWluIHJ1bm5pbmcgYSBsb25nIGRpc3RhbmNlIHdlIG5hdHVyYWxseSB1bmRlcnN0YW5kIHRoaXMgY29uY2VwdDogaWYgYWxsIEkgdGhpbmsgYWJvdXQgaXMgdGhlIGZpbmlzaCBsaW5lIGl04oCZcyB2ZXJ5IGVhc3kgZm9yIG1lIHRvIGdldCBkaXNjb3VyYWdlZCBhcyBzb29uIGFzIEkgZ2V0IHRpcmVkOiBJIGhhdmUgc3RpbGwgdG9vIGZhciB0byBnbywgSSBzaG91bGQganVzdCBzdG9wIG5vdy4gQnV0IGlmIEkgZm9jdXMgb24gcnVubmluZyB0aWxsIHRoYXQgdHJlZSB0aGF0IGlzIGp1c3QgYSBtaWxlIGFoZWFkIGFuZCBvbmNlIEkgZ2V0IHRoZXJlIEkgd2lsbCBjZWxlYnJhdGUgdGhhdCBzbWFsbCB3aW4gYW5kIGRlY2lkZSBpZiBJIHdhbnQgdG8gc3RvcCBvciBpZiBJIHNob3VsZCBwaWNrIG15IG5leHQgdGFyZ2V0LCBhbGwgb2YgYSBzdWRkZW4gdGhlIHBhdGggYmVjb21lcyBtYW5hZ2VhYmxlLiZsdDsvcCZndDsKCiZsdDtwJmd0O1RvbyBvZnRlbiB3ZSBkb27igJl0IHJlYWxpemUgaG93IGltcG9ydGFudCBjZWxlYnJhdGluZyB0aGVzZSBzbWFsbCB3aW5zIGlzIHRvIGtlZXAgdXMgZ29pbmcuIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgd2hlbiB3b3JraW5nIG9uIGxhcmdlLCBjb21wbGV4LCBhbWJpZ3VvdXMgYW5kIHVuYm91bmRlZCBwcm9qZWN0cy4gV2Ugc2V0IG91ciBleWVzIG9uIHRoZSBlbmQgZ29hbCBhbmQgcmVmdXNlIHRvIGVuam95IHRoZSByaWRlIHVudGlsIHRoZSBlbnRpcmUgcHJvamVjdCBpcyDigJxmaW5pc2hlZOKAnS4gQnV0IGFzIHlvdSBncm93LCB5b3VyIGZpbmlzaCBsaW5lcyBtb3ZlIGZhcnRoZXIgYW5kIGZhcnRoZXIgYXdheS4gSXQgbWlnaHQgdGFrZSBtb250aHMgb3IgZXZlbiBsb25nZXIgZm9yIHNvbWUgb2YgeW91ciBpbml0aWF0aXZlcyB0byBoYXZlIGEgdmlzaWJsZSBpbXBhY3QgKGlmIGFueSksIGFuZCB2ZXJ5IG9mdGVuIHdoZW4gaXQgYWN0dWFsbHkgY29tZXMgdG8gZnJ1aXRpb24gc28gbWFueSBkaWZmZXJlbnQgZm9sa3MgYW5kIHRlYW1zIGhhdmUgY29udHJpYnV0ZWQgdG8gaXRzIHN1Y2Nlc3MgdGhhdCBpdOKAmWxsIGJlIHZlcnkgaGFyZCBmb3IgeW91IHRvIGxvb2sgYmFjayBhbmQgZmVlbCBhY2NvbXBsaXNoZWQuIEhvdyBtdWNoIGRpZCB5b3UgYWN0dWFsbHkgbWF0dGVyPyZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpJmd0O0ZvY3VzaW5nIG9uIHNpbXBseSBtYWtpbmcgcHJvZ3Jlc3MgdG93YXJkcyB0aGluZ3MgdGhhdCBtYXR0ZXIgYW5kIGVuam95aW5nIHRoZSBqb3VybmV5IGlzIHdoYXQgd2lsbCBtYWtlIHlvdSByZXNpbGllbnQsIHRlbmFjaW91cyBhbmQgaGVscCB5b3UgcmVhY2ggeW91ciBkZXNpcmVkIGRlc3RpbmF0aW9uIGFuZCBjaG9vc2UgYSBtZWFuaW5nZnVsIHBhdGggYWxvbmcgdGhlIHdheS4mbHQ7L2kmZ3Q7Jmx0Oy9wJmd0OwoKJmx0O2gyJmd0O0FuIGV4YW1wbGUgZnJvbSBteSBwbGFubmVyJmx0Oy9oMiZndDsKCiZsdDtwJmd0O0kgYWN0dWFsbHkgYXBwbGllZCBldmVyeXRoaW5nIEnigJl2ZSBleHBsYWluZWQgYWJvdmUgdG8gaG93IEkgd3JvdGUgdGhpcyBibG9nIHBvc3QuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7TXkgZmlyc3QgdGlueSBzdGVwOiBwaW5nIG91ciBhd2Vzb21lIGNvbnRlbnQgbWFuYWdlciBhYm91dCBteSByYW5kb20gYmxvZyBpZGVhLiBTaGUgc3VnZ2VzdGVkIHdlIGhhdmUgYSBxdWljayBtZWV0aW5nIHRvIGJyYWluc3Rvcm0uJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7U2Vjb25kIHRpbnkgc3RlcDogc2NoZWR1bGUgc2FpZCBtZWV0aW5nLiBPbmUgZGF5IGJlZm9yZSB0aGUgbWVldGluZywgZG8gYSBicmFpbiBkdW1wIG9mIHdoYXQgSSBtaWdodCBjb3ZlciBpbiB0aGUgYmxvZy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtEdXJpbmcgdGhlIG1lZXRpbmcgc2hlIGFza2VkIGhvdyBsb25nIHdvdWxkIGl0IHRha2UgdG8gZ2V0IGEgZmlyc3QgZHJhZnQuIEkgdGhyZXcgb3V0IOKAnHR3byB3ZWVrc+KAnSAobm90IHRvbyBhbWJpdGlvdXMgYnV0IG5vdCBzbyBsb25nIHRoYXQgaXQgd2lsbCBnaXZlIG1lIHRpbWUgdG8gY2hhbmdlIG15IG1pbmQgb3IgbG9zZSBpbnRlcmVzdCkuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Rm9yIHRoZSBuZXh0IHR3byB3ZWVrcywg4oCcQmxvZ+KAnSB3YXMgb25lIG9mIG15IGJpZyByb2NrcywgYW5kIGVhY2ggZGF5IEkgc2F3IGlmIGl0IGNvdWxkIGJlY29tZSBvbmUgb2YgbXkgTUlUcyBmb3IgdGhhdCBkYXkuIEkgZGlkbuKAmXQgc2V0IG91dCB0byB3cml0ZSB0aGUgd2hvbGUgdGhpbmcgb24gYW55IGdpdmVuIGRheSDigJMgaW5zdGVhZCBJIHNldCBhIGdvYWwgdG8ganVzdCBtYWtlIHNvbWUgZm9yd2FyZCBwcm9ncmVzcy4gRHVtcCBpZGVhcyBvbmUgZGF5LCByZWZpbmUgYW5kIGVkaXQgb24gYW5vdGhlciBkYXksIHRoZW4gcmVhbGl6ZSBJIGhhdmUgYSBmZXcgbW9yZSBpZGVhcyB0byBhZGQsIHdyaXRlIHNvbWUgbW9yZSwgZWRpdCBzb21lIG1vcmUuIFNvbWUgZGF5cyBJIHBsYW5uZWQgdG8gd29yayBvbiBteSBibG9nIGJ1dCBJIGRpZG7igJl0IGFuZCBpdCB3YXMgT0suIEkga25vdyB0aGF0IG15IGRhaWx5IGFuZCB3ZWVrbHkgcGxhbm5pbmcgYW5kIHNwbGl0dGluZyB0aGluZ3MgdXAgaW50byB0aW55IHN0ZXBzIHdvdWxkIG1ha2UgaXQgcG9zc2libGUgZm9yIG1lIHRvIGtlZXAgZ29pbmcgYW5kIHRvIG1ha2UgcHJvZ3Jlc3MuIEkgZ290IGEgZmV3IGdvb2Qgd3JpdGluZyBzZXNzaW9ucyBpbiBib3RoIHdlZWtzIGFuZCBoYWQgdGhlIGRyYWZ0IHJlYWR5IHdpdGggMiBkYXlzIHRvIHNwYXJlLiBTdWNjZXNzISZsdDsvcCZndDsKPC9kZXNjcmlwdGlvbj4KICAgICAgICAKICAgICAgPC9pdGVtPgogICAgCiAgICAgIAogICAgICA8aXRlbT4KICAgICAgICA8dGl0bGU+V2h5IGV2ZXJ5IGJ1c2luZXNzIG5lZWRzIENJL0NEIHRvIHN1Y2NlZWQ6IGEgUSZhbXA7QSB3aXRoIEppbSBSb3NlIGFuZCBDYWNrIFdpbGhlbG08L3RpdGxlPgogICAgICAgIDxsaW5rPmh0dHBzOi8vY2lyY2xlY2kuY29tL2Jsb2cvcmlzZS1hYm92ZS15b3VyLWNvbXBldGl0b3JzLXdpdGgtY2ktY2QtYS1xLWEtd2l0aC1qaW0tcm9zZS1hbmQtY2Fjay13aWxoZWxtLzwvbGluaz4KICAgICAgICA8cHViRGF0ZT5Nb24sIDA1IE9jdCAyMDIwIDA4OjAwOjAwIC0wNzAwPC9wdWJEYXRlPgogICAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJ0cnVlIj5odHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL3Jpc2UtYWJvdmUteW91ci1jb21wZXRpdG9ycy13aXRoLWNpLWNkLWEtcS1hLXdpdGgtamltLXJvc2UtYW5kLWNhY2std2lsaGVsbS88L2d1aWQ+CiAgICAgICAgCiAgICAgICAgICA8ZGM6Y3JlYXRvcj5Nb2xseSBGb3NjbzwvZGM6Y3JlYXRvcj4KICAgICAgICAKICAgICAgICAKICAgICAgICAgIDxkZXNjcmlwdGlvbj4mbHQ7cCZndDtJbiBBcHJpbCwgd2Ugd2VsY29tZWQgQ2FjayBXaWxoZWxtLCBhIHBhcnRuZXIgYXQgdmVudHVyZSBjYXBpdGFsIGZpcm0gSVZQLCB0byB0aGUgQ2lyY2xlQ0kgYm9hcmQgb2YgZGlyZWN0b3JzLiBDYWNrIGlzIG91ciBmaXJzdCBmZW1hbGUgYm9hcmQgbWVtYmVyIGFuZCBwcmV2aW91c2x5IHdvcmtlZCB3aXRoIENpcmNsZUNJIGR1cmluZyBvdXIgU2VyaWVzIEIgd2hpbGUgYXQgU2NhbGUgVmVudHVyZSBQYXJ0bmVycy4gQXQgSVZQLCBDYWNrIGZvY3VzZXMgb24gaW52ZXN0aW5nIGluIGdyb3d0aC1zdGFnZSB0ZWNobm9sb2d5IGNvbXBhbmllcy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtPdXIgQ0VPLCBKaW0gUm9zZSwgcmVjZW50bHkgc2F0IGRvd24gd2l0aCBDYWNrIG9uICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly93d3cuaXZwLmNvbS9uZXdzL3BvZGNhc3QvaXZwcy1oeXBlcmdyb3d0aC1wb2RjYXN0LWNpcmNsZWNpLWNlby1qaW0tcm9zZS1vbi10aGUtcmlzZS1vZi1zb2Z0d2FyZS1kZWxpdmVyeS1hcy1hLWNvbXBldGl0aXZlLWRpZmZlcmVudGlhdG9yLWFuZC13aGF0LWl0cy1saWtlLWhpdHRpbmctdGhlLXN0cmlkZS1vZi1oeXBlcmdyb3d0aC8mcXVvdDsmZ3Q7SVZQ4oCZcyBIeXBlcmdyb3d0aCBwb2RjYXN0Jmx0Oy9hJmd0OyB0byBkaXNjdXNzIHRoZSByaXNlIG9mIHNvZnR3YXJlIGRlbGl2ZXJ5IGFzIGEgY29tcGV0aXRpdmUgZGlmZmVyZW50aWF0b3IsIGFuZCB3aGF0IGl04oCZcyBsaWtlIGFjaGlldmluZyBoeXBlcmdyb3d0aCBhbmQgYWRqdXN0aW5nIENpcmNsZUNJIGFzIGFuIG9yZ2FuaXphdGlvbi4gSmltIGFuZCBDYWNrIGFsc28gY292ZXJlZCBob3cgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9jb250aW51b3VzLWludGVncmF0aW9uLyZxdW90OyZndDtjb250aW51b3VzIGludGVncmF0aW9uJmx0Oy9hJmd0OyBhbmQgZGVwbG95bWVudCBoYXZlIGJlY29tZSBrZXkgaW4gYWNoaWV2aW5nIHN1Y2Nlc3MgZm9yIGJ1c2luZXNzZXMsIHRoZSBkZWNpc2lvbi1tYWtpbmcgcG93ZXIgb2YgZGV2ZWxvcGVycywgYW5kIHdoYXQgbWFrZXMgQ2lyY2xlQ0kgYSBsZWFkZXIgaW4gdGhlIENJL0NEIHNwYWNlLiAKJmx0O2JyIC8mZ3Q7CiZsdDticiAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7Q2FjayBXaWxoZWxtOiZsdDsvc3Ryb25nJmd0OyBJ4oCZZCBsb3ZlIHRvIGhlYXIgYWJvdXQgdGhlIHNlY3VsYXIgdHJlbmRzIGJlaGluZCBDaXJjbGVDSS4gV2hhdCBkbyB5b3Ugc2VlIGluIHRoZSBpbmR1c3RyeSByaWdodCBub3cgdGhhdOKAmXMgY29udGludWluZyB0byBkcml2ZSBkZW1hbmQgZm9yIGEgc29sdXRpb24gbGlrZSBDaXJjbGVDST8gCiZsdDticiAvJmd0OwombHQ7YnIgLyZndDsmbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7c3Ryb25nJmd0O0ppbSBSb3NlOiZsdDsvc3Ryb25nJmd0OyBCYWNrIGluIDIwMTEgYW5kIDIwMTIsIHdoZW4gQ2lyY2xlQ0kgd2FzIHN0YXJ0ZWQsIHRoaXMgaWRlYSBvZiBiZWluZyBhYmxlIHRvIHNoaXAgY29kZSBhcyBxdWlja2x5IGFzIHlvdSBtYWRlIGNoYW5nZXMgd2FzIHByZXR0eSBuZXcuIE92ZXIgdGhlIGxhc3QgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL2NpcmNsZWNpLWNlbGVicmF0ZXMtbmluZS15ZWFycy1taWxsaW9udGgtdXNlci8mcXVvdDsmZ3Q7bmluZSB5ZWFycyZsdDsvYSZndDssIGluc3RlYWQgb2YgYmVpbmcgYSByZWFsbHkgZnJpbmdlIGlkZWEsIGNvbnRpbnVvdXMgZGVwbG95bWVudCBoYXMgYmVjb21lIHRoZSBhc3BpcmF0aW9uYWwgTm9ydGggU3RhciBmb3IgcHJldHR5IG11Y2ggZXZlcnkgc29mdHdhcmUgZGVsaXZlcnkgdGVhbSBvdXQgdGhlcmUuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7VGhlIG1pbnV0ZSBDT1ZJRCBoaXQsIGZvciBleGFtcGxlLCBhbmQgZXZlcnlvbmUgYmVjYW1lIG5vdCBqdXN0IHJlbW90ZS1maXJzdCwgYnV0IHJlbW90ZS1vbmx5LCB5b3UgcmVhbGl6ZWQgeW91IGNvdWxkIG5vIGxvbmdlciByZWx5IG9uIGEgYnVpbGQgbWFjaGluZSBzaXR0aW5nIHVuZGVybmVhdGggc29tZWJvZHnigJlzIGRlc2suJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7VGhpcyBpZGVhIG9mIGF1dG9tYXRpb24sIG9mIGJlaW5nIGFibGUgdG8gbW92ZSBxdWlja2x5IGFuZCB0byBtb3ZlIHJlbGlhYmx5LCBoYXMgYmVjb21lIG5vdCBqdXN0IGEg4oCYbmljZSB0byBoYXZlLuKAmSBJdOKAmXMgYmVjb21lIGNvcmUgdG8gd2hhdCB5b3UgaGF2ZSB0byBkbyBhcyBhIHNvZnR3YXJlIGRlbGl2ZXJ5IHRlYW0uCiZsdDticiAvJmd0OwombHQ7YnIgLyZndDsmbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7c3Ryb25nJmd0O0NXOiZsdDsvc3Ryb25nJmd0OyBXaGF0IHdl4oCZcmUgcmVhbGx5IHRhbGtpbmcgYWJvdXQgaGVyZSBpcyBkZXZlbG9wZXJzIOKAlCB0aGlzIGlkZWEgb2YgZGV2ZWxvcGVycyBhcyBmaXJzdC1jbGFzcyBpbmRpdmlkdWFscyB3aXRoaW4gYW4gb3JnYW5pemF0aW9uIHRoYXQgaGF2ZSBhIGJ1ZGdldCBhbmQgZGVjaXNpb24gcG93ZXIuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7WW91IGtub3cgSSBoYXZlbuKAmXQgYmVlbiBpbiB2ZW50dXJlIHRoYXQgbG9uZywgbWF5YmUgc2l4IG9yIHNldmVuIHllYXJzLCBhbmQgSSBzdGlsbCByZW1lbWJlciB0YWxraW5nIGFib3V0IHRoZSBJVCBidXllci4gSXQgd2FzIHZlcnkgbXVjaCBhYm91dCB0aGUgSVQgYW5kIHRoZSBzZWN1cml0eSBidXllciwgYW5kIG5ldmVyIGRpZCB3ZSBkaXNjdXNzIHRoZSBkZXZlbG9wZXIgYnV5ZXIuIEJ1dCBnaXZlbiB5b3VyIGdvLXRvLW1hcmtldCBzdHJhdGVneSBhbmQgeW91ciBlbXBoYXNpcyBvbiB0aGUgZGV2ZWxvcGVyLCBob3cgaGFzIHRoYXQgYnV5ZXIgb2Ygc3lzdGVtIHNvZnR3YXJlIGV2b2x2ZWQgaW4gdGhlIHBhc3Qgc2l4IG9yIHNldmVuIHllYXJzPyAKJmx0O2JyIC8mZ3Q7CiZsdDticiAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7SlI6Jmx0Oy9zdHJvbmcmZ3Q7IEZvciB0aGUgbG9uZ2VzdCB0aW1lLCBkZXZlbG9wZXJzIHdlcmUganVzdCBleHBlY3RlZCB0byBidWlsZCB0aGluZ3MuIFRoZXkgd2VyZSBnaXZlbiBhIHNldCBvZiB0b29scywgdG9sZCB3aGF0IHRvIGJ1aWxkLCBhbmQgc2VlbiBhcyBhIGNvc3QgY2VudGVyIGFzIG9wcG9zZWQgdG8gYW4gb3Bwb3J0dW5pdHkgYW5kIGFuIGludmVzdG1lbnQuIEFzIG1vcmUgY29tcGFuaWVzIGhhdmUgYmVjb21lIHNvZnR3YXJlLWRyaXZlbiwgdGhhdCBwZXJzcGVjdGl2ZSBoYXMgcmVhbGx5IHNoaWZ0ZWQuIEluc3RlYWQgb2Ygc2VlaW5nIHlvdXIgZGV2ZWxvcG1lbnQgdGVhbSBhcyB0aGlzIGNvc3QgY2VudGVyIHRoYXQgeW914oCZcmUgdHJ5aW5nIHRvIGNvbnRyb2wsIHlvdeKAmXJlIHJlYWxseSB0aGlua2luZyBhYm91dCBob3cgeW91IGNhbiBtYXhpbWl6ZSB0aGUgY2FwYWJpbGl0aWVzIGFuZCBwcm9kdWN0aXZpdHkgb2YgdGhlc2UgdmVyeSBleHBlbnNpdmUgZm9sa3Mgd2hvIGFyZSBkaWZmaWN1bHQgdG8gaGlyZS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtUaGUgdmFsdWUgb2Ygc3BlZWQgaXMgdmVyeSBjbGVhciB0byBhbiBJVCBvcmdhbml6YXRpb24uIEl04oCZcyBubyBsb25nZXIgYWJvdXQgY29udHJvbC4gSXTigJlzIGFib3V0IHRyeWluZyB0byBjcmVhdGUgY2Fycm90cyBvciBpbmNlbnRpdmVzIHRvIHVzZSB0aGUgc2FtZSB0b29sc2V0LiBJdOKAmXMgYWJvdXQgYnVpbGRpbmcgdG9vbHMgb24gYmVoYWxmIG9mIGFsbCB0aGUgc29mdHdhcmUgZGV2ZWxvcG1lbnQgdGVhbXMgaW5zaWRlIG9mIGFuIGVudGVycHJpc2UuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7WW91IGZpbmQgbW9yZSBvZnRlbiB0aGFuIG5vdCB0aGF0IGRldmVsb3BlcnMgbGlrZSB0byAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2Jsb2cvZ2V0dGluZy15b3VyLW1hbmFnZXItdG8tc2F5LXllcy10by1kZXZvcHMtdG9vbHMvJnF1b3Q7Jmd0O3BpY2sgYW5kIGNob29zZSB0aGUgYmVzdCB0b29sJmx0Oy9hJmd0OyBmb3IgdGhlIGpvYiwgd2hhdGV2ZXIgdGhhdCBwYXJ0aWN1bGFyIGpvYiBpcywgYW5kIHRoZW4gcHV0IHRoZSBvbnVzIG9uIHRoZSBjb21wYW55IHRvIGZpZ3VyZSBvdXQgaG93IHRvIHdvcmsgd2l0aCBldmVyeXRoaW5nIGVsc2UgdGhleSBoYXZlIGluc2lkZSBvZiB0aGVpciAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2Jsb2cvdGhlLWJlc3QtZGV2LXRvb2xzLXVzZWQtYnktY2lyY2xlY2ktZW5naW5lZXJzLyZxdW90OyZndDt0b29sYm94Jmx0Oy9hJmd0Oy4KJmx0O2JyIC8mZ3Q7CiZsdDticiAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7Q1c6Jmx0Oy9zdHJvbmcmZ3Q7IEkgd2FudCB0byB0YWxrIGFib3V0IHRoZSBpZGVhIG9mIGJ1bmRsaW5nIGFuZCB1bmJ1bmRsaW5nLiBNb2JpbGUgYW5kIExpbnV4LCBmb3IgZXhhbXBsZSwgcHJvdmlkaW5nIHRoZSBzYW1lIHRoaW5nLCBzZWVtcyBsaWtlIHNvZnR3YXJlIHVzZWQgdG8gcmVhbGx5IGdvIHRocm91Z2ggY3ljbGVzLiBUaGVyZSB3YXMgdGhpcyBncmVhdCBwdXNoIGZvciBidW5kbGVkIGFuZCB0aGVuLCBhIHB1c2ggZm9yIHRoZSBvcHBvc2l0ZS4gV2hlcmUgZG8geW91IHRoaW5rIHdlIGFyZSBpbiB0aGUgY3ljbGUgcmlnaHQgbm93PyBXaGF0IGdpdmVzIHlvdSBjb25maWRlbmNlIHRoYXQgYmVpbmcgYSBiZXN0LWluLWJyZWVkIHBsYXRmb3JtLCBvbmUgdGhhdCBwcm92aWRlcyBhIGJpZyBjaHVuayBvZiB0aGUgc29mdHdhcmUgZGVsaXZlcnkgbGlmZWN5Y2xlLCBpcyB0aGUgcmlnaHQgYXBwcm9hY2g/IAombHQ7YnIgLyZndDsKJmx0O2JyIC8mZ3Q7Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O3N0cm9uZyZndDtKUjombHQ7L3N0cm9uZyZndDsgVGhlcmXigJlzIGJlZW4gYSBsb3Qgb2YgbW92ZW1lbnQgaW4gdGhlIG1hcmtldCByZWNlbnRseSBvZiBmb2xrcyB0cnlpbmcgdG8gYnVpbGQgZW5kLXRvLWVuZCBwbGF0Zm9ybXMgaW4gdGhlIGRldmVsb3BtZW50IHNwYWNlLiBCdXQgaWYgeW91IGxvb2sgYXQgdGhlIGNvbXBhbmllcyB3aG/igJl2ZSBidWlsdCB0aG9zZSBwbGF0Zm9ybXMsIG1vcmUgb2Z0ZW4gdGhhbiBub3QsIDgwIHRvIDkwIHBlcmNlbnQgb2YgdGhlaXIgcmV2ZW51ZSBzdGlsbCBjb21lcyBmcm9tIHRoZWlyIGNvcmUgcHJvZHVjdC4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtXaGF0IHdl4oCZdmUgaGVhcmQgZnJvbSBjdXN0b21lcnMgaXMgdGhhdCB0aGV54oCZcmUgZ29pbmcgdG8gaW1wbGVtZW50IHRoZSBiZXN0IHRvb2wgdGhleSBjYW4gZmluZCBmb3IgdGhhdCBwYXJ0aWN1bGFyIHByb2JsZW0gYXQgdGhhdCBwYXJ0aWN1bGFyIHRpbWUuIE91ciBwb3NpdGlvbiwgb3VyIGdvYWwsIGFuZCBvdXIgbWFudHJhIGFzIGEgY29tcGFueSBpczogd2Ugc3RheSBjbG9zZSB0byB0aGUgY3VzdG9tZXIuIFdlIG1ha2Ugc3VyZSB0aGF0IHdl4oCZcmUgYWRkcmVzc2luZyB0aGVpciBwYXJ0aWN1bGFyIHJlcXVpcmVtZW50cyBhbmQgbmVlZHMsIGFuZCBldmVyeXRoaW5nIGVsc2Ugd2lsbCBraW5kIG9mIHdvcmsgaXRzZWxmIG91dC4KJmx0O2JyIC8mZ3Q7CiZsdDticiAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7Q1c6Jmx0Oy9zdHJvbmcmZ3Q7IEnigJlkIGxvdmUgdG8gc3dpdGNoIGdlYXJzIGFuZCB0YWxrIG1vcmUgc3BlY2lmaWNhbGx5IGFib3V0IENpcmNsZUNJLCBlc3BlY2lhbGx5IHRoZSBwaGFzZSBvZiBoeXBlcmdyb3d0aCB0aGF0IHlvdeKAmXJlIGV4cGVyaWVuY2luZyByaWdodCBub3cuIEkgaGF2ZSB0aGUgZ29vZCBmb3J0dW5lIG9mIHNlZWluZyBDaXJjbGVDSeKAmXMgc2VyaWVzIEIgcGhhc2UgYW5kIHRoZW4gZ2V0dGluZyByZWludm9sdmVkIHdpdGggdGhlICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy9hbm5vdW5jaW5nLWNpcmNsZWNpLXMtMTAwbS1zZXJpZXMtZS8mcXVvdDsmZ3Q7c2VyaWVzIEUgZnJvbSBJVlAmbHQ7L2EmZ3Q7LiBJIG11c3QgYWRtaXQsIGl0IHdhcyBraW5kIG9mIGZ1biB0byB0YWtlIGEgYnJlYWsgYW5kIGNvbWUgYmFjayB0byBhIG1hc3NpdmVseSBzY2FsZWQsIG1hdHVyZSBvcmdhbml6YXRpb24gd2l0aG91dCBzZWVpbmcgYWxsIHRoZSBpbmNyZW1lbnRzIGFsb25nIHRoZSB3YXkuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Q2FuIHlvdSBzaGFyZSBtb3JlIGFib3V0IHRoZSBncm93dGggcGhhc2UgY29taW5nIGludG8gdGhpcyByZWNlbnQgZnVuZHJhaXNpbmcgcm91bmQsIGFuZCB3aGF0IGl04oCZcyBsaWtlIGhpdHRpbmcgaHlwZXJncm93dGggYW5kIGFkanVzdGluZyB0aGUgb3JnYW5pemF0aW9uPyBJ4oCZbSBzdXJlIHRoZXJlIGFyZSBzb21lIGRpZmZlcmVuY2VzIGJldHdlZW4gZ28tdG8tbWFya2V0IGZ1bmN0aW9ucyB2ZXJzdXMgZW5naW5lZXJpbmcsIGFuZCB3aGF0IGFib3V0IG11bmRhbmUgc3R1ZmYgbGlrZSBoaXJpbmcsIG9uYm9hcmRpbmcsIGFuZCBvZmZpY2Ugc3BhY2U/CiZsdDticiAvJmd0OwombHQ7YnIgLyZndDsmbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7c3Ryb25nJmd0O0pSOiZsdDsvc3Ryb25nJmd0OyBUaGUgd2F5IHlvdSBzY2FsZSBpcyBieSBtYWtpbmcgdGhlIG11bmRhbmUgaGlnaGx5IGxldmVyYWdlYWJsZS4gVGhlIGZpcnN0IHJlcXVpcmVtZW50IEkgaGF2ZSBmb3IgZXZlcnlvbmUgb24gb3VyIGV4ZWMgdGVhbSBpcyB0aGV5IGhhdmUgdG8gYmUgYSBncmVhdCAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2Jsb2cvaG93LXdlLWludGVydmlldy1zb2Z0d2FyZS1lbmdpbmVlcnMtd2hhdC13ZS12ZS1sZWFybmVkLXdoYXQtd2UtdmUtY2hhbmdlZC8mcXVvdDsmZ3Q7cmVjcnVpdGVyJmx0Oy9hJmd0Oy4gSXTigJlzIG5vdCBhYm91dCBoaXJpbmcgdGhlIGZpcnN0IHBlcnNvbiDigJQgeW914oCZcmUgZ29pbmcgdG8gaGF2ZSB0byBoaXJlIDE1IG1vcmUgaW4gdGhlIG5leHQgc2l4IG1vbnRocy4gSG93IGRvIHlvdSBtYWtlIHRoYXQgc2NhbGFibGUgYW5kIHJlcGVhdGFibGUgb3ZlciB0aW1lPyBJdOKAmXMgdGhlIHNhbWUgdGhpbmcgd2l0aCBpbmZyYXN0cnVjdHVyZSwgd2hldGhlciBpdOKAmXMgb2ZmaWNlIHNwYWNlLCB0b29scywgb3IgaGF2aW5nIGEgZ2xvYmFsbHkgbWFuYWdlZCBzZXQgb2YgSFIgcG9saWNpZXMgaW4gcGxhY2UuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7QXMgYSBmb3VuZGVyLCB5b3XigJlyZSB0cnlpbmcgdG8gZ2V0IGFsbCBvZiB0aGF0IGluIHBsYWNlIGFuZCBtYWtlIGl0IHNjYWxhYmxlLCBtYWtlIGl0IGVmZmVjdGl2ZSwgYW5kIG1ha2UgaXQgcmVzaWxpZW50IHRvIGNoYW5nZS4gSXTigJlzIGEgbWFyYXRob24sIG5vdCBhIHNwcmludCwgYnV0IHlvdeKAmXJlIGdvaW5nIHJlYWxseSBmYXN0LiBZb3UgaGF2ZSB0byBtYWtlIHN1cmUgeW91IGRvIHdoYXRldmVyIHlvdSBjYW4gdG8gcGFjZSB5b3Vyc2VsZiBhcyB5b3UgY29udGludWUgdG8gZ3Jvdy4KJmx0O2JyIC8mZ3Q7CiZsdDticiAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7Q1c6Jmx0Oy9zdHJvbmcmZ3Q7IEFtYXpvbiwgTWljcm9zb2Z0IGFuZCBBbHBoYWJldCBjZXJ0YWlubHkgaGF2ZSBhIGxhcmdlIHBhcnQgb2YgdGhlaXIgYnVzaW5lc3NlcyB0aGF0IGFyZSBwZWdnZWQgdG8gY2xvdWQgaW5mcmFzdHJ1Y3R1cmUgc3BlbmQsIGp1c3QgYXMgQ2lyY2xlQ0kgZG9lcy4gQSBsYXJnZSBwYXJ0IG9mIEFtYXpvbiwgTWljcm9zb2Z0LCBBbHBoYWJldCwgYW5kIEdvb2dsZeKAmXMgYnVzaW5lc3NlcyBhcmUgYWtpbiB0byBjbG91ZCBpbmZyYXN0cnVjdHVyZSDigJQgYSBsb3Qgb2Ygd2hhdCBDaXJjbGVDSSBkb2VzLiBJZiB5b3UgYWxzbyBpbmNsdWRlIERhdGFEb2cgYW5kIEF0bGFzc2lhbiwgdGhlc2UgY29tcGFuaWVzIGFyZSBzaG93aW5nIHJlYWxseSBzdHJvbmcgZ3Jvd3RoLCByZWFsbHkgc3Ryb25nIHB1YmxpYyBwZXJmb3JtYW5jZS4gRnJvbSB3aGVyZSB5b3XigJlyZSBzaXR0aW5nLCB3aGF0IGRvIHlvdSBtYWtlIG9mIHRoZSBwdWJsaWMgbWFya2V0cyBhcyB0aGV5IHJlbGF0ZSB0byBDaXJjbGVDSSBhbmQgeW91ciBuZXh0IG1vdmU/CiZsdDticiAvJmd0OwombHQ7YnIgLyZndDsmbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7c3Ryb25nJmd0O0pSOiZsdDsvc3Ryb25nJmd0OyBJIHRoaW5rIHRoZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwdWJsaWMgbWFya2V0IGludmVzdG9yIGhhcyByZWFsbHkgZXZvbHZlZC4gV2hlbiB3ZSBoYWQgY29udmVyc2F0aW9ucyB3aXRoIHB1YmxpYyBtYXJrZXQgaW52ZXN0b3JzIGluIDIwMTUgYW5kIDIwMTYsIHRoZXkgaGFkIGFic29sdXRlbHkgbm8gaWRlYSB3aGF0IHdlIGRpZC4gVGhleSBkaWRu4oCZdCB1bmRlcnN0YW5kIHNvZnR3YXJlIGRldmVsb3BtZW50IGFzIGEga2V5IGRpZmZlcmVudGlhdG9yIGZvciBjb21wYW5pZXMsIG5vdCBqdXN0IHNvZnR3YXJlIGNvbXBhbmllcywgYnV0IGZvciBjb21wYW5pZXMgb3ZlcmFsbC4gSSB0aGluayBhYm91dCBjb21wYW5pZXMgbGlrZSBBbWF6b24sIEdvb2dsZSwgTmV0ZmxpeCwgRmFjZWJvb2ssIGFuZCBvdGhlcnMg4oCUIHRoZWlyIGFiaWxpdHkgdG8gYnVpbGQgc29mdHdhcmUgcXVpY2tseSBpcyBob3cgdGhleSBnZW5lcmF0ZSB2YWx1ZSBpbnNpZGUgdGhlaXIgYnVzaW5lc3Nlcy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtJbmNyZWFzaW5nbHksIHRvbywgaWYgeW91IGxvb2sgYXQgbW9yZSB0cmFkaXRpb25hbCBpbmR1c3RyaWVzIHRoYXQgaGF2ZSBtYWRlIHJlYWwgaW52ZXN0bWVudHMgaW4gdGVjaG5vbG9neSBvdmVyIHRoZSBsYXN0IGZvdXIgb3IgZml2ZSB5ZWFycywgdGhleeKAmXJlIHJlYXBpbmcgdGhvc2UgZ2FpbnMgdG9kYXkuIFRhcmdldCBhbmQgV2FsLU1hcnQgaGF2ZSBtYWRlIHRyZW1lbmRvdXMgZ2FpbnMgb3ZlciB0aGUgbGFzdCBzaXggbW9udGhzIHNpbmNlIENPVklEIHN0YXJ0ZWQgYmVjYXVzZSB0aGV5IGhhdmUgYSBwcmV0dHkgcm9idXN0IHRlY2huaWNhbCBwbGF0Zm9ybSBhdCB0aGlzIHBvaW50LiZsdDsvcCZndDsKCiZsdDtwJmd0O1doZW4geW91IGNvbXBhcmUgdGhhdCB0byBtb3JlIHRyYWRpdGlvbmFsIHJldGFpbGVycyB3aG8gaGF2ZW7igJl0IG1hZGUgdGhhdCBpbnZlc3RtZW50LCB5b3UgY2FuIHN0YXJ0IHRvIHNlZSB0aGUgdmFsdWUgb2Ygc29mdHdhcmUgYW5kIHRoZSB2YWx1ZSBvZiBhZ2lsZSBwcm9jZXNzZXMgaW4gY3JlYXRpbmcgY29ycG9yYXRlIHZhbHVlLiBUaGUgbWFya2V0IGhhcyBkZWZpbml0ZWx5IHdva2VuIHVwIHRvICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy93aHktY29udGludW91cy1pbnRlZ3JhdGlvbi1pcy1rZXktdG8tc3RlcHBpbmctdXAtZGVwbG95bWVudC1mcmVxdWVuY3kvJnF1b3Q7Jmd0O3RoZSBjb21wZXRpdGl2ZSBkaWZmZXJlbnRpYXRvciZsdDsvYSZndDsgdGhhdCBzb2Z0d2FyZSwgYW5kIGJlaW5nIGEgd2VsbC1vaWxlZCBzb2Z0d2FyZSBkZWxpdmVyeSBtYWNoaW5lLCBwcm92aWRlcy4KJmx0O2JyIC8mZ3Q7CiZsdDticiAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7Q1c6Jmx0Oy9zdHJvbmcmZ3Q7IFdoYXQgYXJlIHlvdSBsb29raW5nIGZvcndhcmQgdG8gYXMgeW91IG1vdmUgaW50byB0aGlzIG5leHQgcGhhc2Ugb2YgZ3Jvd3RoIGluIHRoZSBuZXh0IHllYXIgb3IgdHdvIHllYXJzPyBXaGF04oCZcyBleGNpdGluZz8KJmx0O2JyIC8mZ3Q7CiZsdDticiAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7SlI6Jmx0Oy9zdHJvbmcmZ3Q7IEl04oCZcyBleGNpdGluZyB0byB3YXRjaCBjb21wYW5pZXMgdGhhdCB3ZSBtYXkgaGF2ZSB0YWxrZWQgdG8gYmFjayBpbiAyMDE1IGFuZCB3ZXJlbuKAmXQgcmVhZHkgZm9yIHVzLCB3aG8gYXJlIG5vdyBsZWFuaW5nIGluIGFuZCByZWFkeSB0byBhZG9wdCBjb250aW51b3VzIGRlbGl2ZXJ5LCBhbmQgcmVhZHkgdG8gZGVwbG95IENpcmNsZUNJIGFzIGEgZm91bmRhdGlvbiB0byB0aGF0IGNoYW5nZS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtTb21lIG9mICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy93ZS1yYWlzZWQtYS01Nm0tc2VyaWVzLWQtd2hhdC1zLW5leHQtZm9yLWNpcmNsZWNpLWN1c3RvbWVycy8mcXVvdDsmZ3Q7dGhlIGJyYW5kcyB3ZSB3b3JrIHdpdGgmbHQ7L2EmZ3Q7IGFyZSBkb2luZyBpbmNyZWRpYmx5IGludGVyZXN0aW5nIHRoaW5ncyBmcm9tIGF1dG9ub21vdXMgdmVoaWNsZXMgdG8gc3BhY2UgdmVoaWNsZXMgdG8gbWFjaGluZSBsZWFybmluZyB0byBldmVyeWRheSBtb2JpbGUgYXBwbGljYXRpb25zLCBhbmQgZXZlcnl0aGluZyBpbiBiZXR3ZWVuLiZsdDsvcCZndDsKCiZsdDtwJmd0O1doZW4gSSB0YWxrIHRvIGZvbGtzIHdl4oCZcmUgdHJ5aW5nIHRvIGhpcmUsIEkgYWx3YXlzIHNheSB3ZeKAmXJlIGluIHRoZSBlbmdpbmUgcm9vbSBvZiB0aGUgaW50ZXJuZXQuIFdl4oCZcmUgdGhlIGNvbXBhbnkgaGVscGluZyBidWlsZCBhbGwgb2YgdGhvc2UgZXhwZXJpZW5jZXMgdGhhdCB5b3UgY29uc3VtZSBlYWNoIGFuZCBldmVyeSBkYXksIGluIGEgd2F5IHRoYXTigJlzIGV4Y2l0aW5nIGFuZCBpbnRlcmVzdGluZyBhbmQgbmV3LiBBbmQgd2hldGhlciB5b3XigJlyZSBidWlsZGluZyBhIHNtYWxsIG9wZW4tc291cmNlIGxpYnJhcnkgb3Igc29tZXRoaW5nIGZvciB0aGUgVS5TLiBHb3Zlcm5tZW50LCB5b3UgY2FuIHVzZSBDaXJjbGVDSSB0byBzdXBwb3J0IHRoYXQuJmx0Oy9wJmd0Owo8L2Rlc2NyaXB0aW9uPgogICAgICAgIAogICAgICA8L2l0ZW0+CiAgICAKICAgICAgCiAgICAgIDxpdGVtPgogICAgICAgIDx0aXRsZT5BZGRpbmcgYXBwcm92YWwgam9icyB0byB5b3VyIENJIHBpcGVsaW5lPC90aXRsZT4KICAgICAgICA8bGluaz5odHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL2FkZGluZy1hcHByb3ZhbC1qb2JzLXRvLXlvdXItY2ktcGlwZWxpbmUvPC9saW5rPgogICAgICAgIDxwdWJEYXRlPkZyaSwgMDIgT2N0IDIwMjAgMDk6MDA6MDAgLTA3MDA8L3B1YkRhdGU+CiAgICAgICAgPGd1aWQgaXNQZXJtYUxpbms9InRydWUiPmh0dHBzOi8vY2lyY2xlY2kuY29tL2Jsb2cvYWRkaW5nLWFwcHJvdmFsLWpvYnMtdG8teW91ci1jaS1waXBlbGluZS88L2d1aWQ+CiAgICAgICAgCiAgICAgICAgICA8ZGM6Y3JlYXRvcj5UcmF2aXMgRGVwdXk8L2RjOmNyZWF0b3I+CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgICA8ZGVzY3JpcHRpb24+Jmx0O3AmZ3Q7QW4gZXhwbGljaXQgYXBwcm92YWwgcHJvY2VzcyBjYW4gaGVscCByZWR1Y2UgcHJvZHVjdGlvbiBpc3N1ZXMsIHByb3ZpZGUgYW4gYXVkaXQgdHJhaWwsIGFuZCBnaXZlIHlvdXIgb3JnYW5pemF0aW9uIGNvbmZpZGVuY2UgdGhhdCB5b3VyIGVuZ2luZWVyaW5nIHRlYW1zIGFyZSBkZXBsb3lpbmcgdGhlIHJpZ2h0IGNvZGUuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7SW4gdGhpcyBhcnRpY2xlLCB3ZeKAmWxsIGdvIGludG8gZGV0YWlsIGFib3V0IGhvdyB0byBzZXQgdXAgYW4gYXBwcm92YWwgam9iIGluIHlvdXIgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9jb250aW51b3VzLWludGVncmF0aW9uLyZxdW90OyZndDtjb250aW51b3VzIGludGVncmF0aW9uJmx0Oy9hJmd0OyBwaXBlbGluZSBzbyB5b3VyIGRldmVsb3BlcnMgbXVzdCByZXF1ZXN0IGFwcHJvdmFsIGJlZm9yZSB0aGUgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL3doYXQtaXMtYS1jaS1jZC1waXBlbGluZS8mcXVvdDsmZ3Q7Q0kgcGlwZWxpbmUmbHQ7L2EmZ3Q7IGRlcGxveXMgdG8gcHJvZHVjdGlvbi4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7SG93IGRvZXMgaXQgd29yaz8mbHQ7L2gyJmd0OwombHQ7cCZndDtBICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O3JlcXVlc3QtYXBwcm92YWwmbHQ7L2NvZGUmZ3Q7IGpvYiBpcyBhZGRlZCB0byB5b3VyIHBpcGVsaW5lLCBtYWtpbmcgdXNlIG9mIHRoZSAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2RldmVsb3Blci9vcmJzL29yYi94bWF0dGVycy94bWF0dGVycy1vcmImcXVvdDsmZ3Q7eE1hdHRlcnMgb3JiJmx0Oy9hJmd0Oywgd2hpY2ggcGFzc2VzIGEgd29ya2Zsb3figJlzIGRldGFpbHMgdG8gJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL3d3dy54bWF0dGVycy5jb20vJnF1b3Q7Jmd0O3hNYXR0ZXJzJmx0Oy9hJmd0Oy4geE1hdHRlcnMgdGhlbiBzZW5kcyBvdXQgdGhlIG5vdGlmaWNhdGlvbnMgYWNyb3NzIGEgcmFuZ2Ugb2YgZGV2aWNlcyB0byByZWFjaCB0aGUgY3VycmVudCBvbi1jYWxsIGFwcHJvdmFsIHJlc291cmNlLiBVc2luZyB0aGUgcmVzcG9uc2Ugb3B0aW9ucywgdGhlIGFwcHJvdmVyIGNhbiB0aGVuIGNob29zZSB0byBhcHByb3ZlIG9yIHJlamVjdCB0aGUgcmVxdWVzdC4gT24gYXBwcm92YWwsIGEgcmVxdWVzdCBpcyBtYWRlIHRvIENpcmNsZUNJ4oCZcyAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2RvY3MvYXBpL3YyLyNvcGVyYXRpb24vYXBwcm92ZVBlbmRpbmdBcHByb3ZhbEpvYkJ5SWQmcXVvdDsmZ3Q7YXBwcm92ZSBhIGpvYiBBUEkgZW5kcG9pbnQmbHQ7L2EmZ3Q7LiZsdDsvcCZndDsKCiZsdDtwJmd0O0xldOKAmXMgd2FsayB0aHJvdWdoIGhvdyB0byBzZXQgdXAgeW91ciBhcHByb3ZhbCByZXF1ZXN0cyBzbyB0aGF0IHlvdSBjYW4gbWFpbnRhaW4gb3ZlcnNpZ2h0IG9mIGFueSBjaGFuZ2VzIHRvIHlvdXIgcHJvZHVjdGlvbiBjb2RlIGJlZm9yZSB0aGV5IGhhcHBlbi4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7UHJlcmVxdWlzaXRlcyZsdDsvaDImZ3Q7CgombHQ7cCZndDtUbyBiZWdpbiwgeW914oCZbGwgbmVlZCB0aGUgZm9sbG93aW5nOiZsdDsvcCZndDsKCiZsdDt1bCZndDsKICAmbHQ7bGkmZ3Q7QSAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL3NpZ251cC8mcXVvdDsmZ3Q7Q2lyY2xlQ0kmbHQ7L2EmZ3Q7IGFjY291bnQmbHQ7L2xpJmd0OwogICZsdDtsaSZndDtBbiAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vd3d3LnhtYXR0ZXJzLmNvbS9zaWdudXAmcXVvdDsmZ3Q7eE1hdHRlcnMmbHQ7L2EmZ3Q7IGFjY291bnQmbHQ7L2xpJmd0OwogICZsdDtsaSZndDtBIHJlcG8gd2l0aCBhIHByb2plY3QgdGhhdCBuZWVkcyBhbiBhcHByb3ZhbCBqb2ImbHQ7L2xpJmd0OwombHQ7L3VsJmd0OwoKJmx0O3AmZ3Q7VGhlIGFwcHJvdmFsIHByb2Nlc3Mgd2XigJlsbCBiZSBkaXNjdXNzaW5nIHVzZXMgdGhlICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9jaXJjbGVjaS5jb20vZG9jcy9hcGkvdjIvI29wZXJhdGlvbi9hcHByb3ZlUGVuZGluZ0FwcHJvdmFsSm9iQnlJZCZxdW90OyZndDthcHByb3ZlIGEgam9iJmx0Oy9hJmd0OyBBUEkgY2FsbCB0byBhcHByb3ZlIHRoZSBqb2IuIFRoZSBwcm9jZXNzIGZvciBkb2luZyB0aGlzIGlzIHNpbWlsYXIgZm9yIGEgdmFyaWV0eSBvZiB0b29scyBidXQgdGhpcyBwb3N0IHdpbGwgZm9jdXMgb24gdXNpbmcgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL3d3dy54bWF0dGVycy5jb20vJnF1b3Q7Jmd0O3hNYXR0ZXJzJmx0Oy9hJmd0Oy4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7Q29uZmlndXJpbmcgQ2lyY2xlQ0kmbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7QXQgYSBoaWdoIGxldmVsLCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7LmNpcmNsZWNpL2NvbmZpZy55bWwmbHQ7L2NvZGUmZ3Q7IGZpbGUsIHNldCB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7WE1fVVJMJmx0Oy9jb2RlJmd0OyB2YWx1ZSwgYW5kIHRoZW4gc3RvcmUgdGhlIHBlcnNvbmFsIHRva2VuIGluIHhNYXR0ZXJzLiBMZXTigJlzIGdldCBzdGFydGVkLiZsdDsvcCZndDsKCiZsdDtwJmd0O1RoaXMgaXMgYSBzaW1wbGUgYnVpbGQsIGhvbGQsIHJlcXVlc3QgYXBwcm92YWwsIGFuZCBkZXBsb3kgY29uZmlndXJhdGlvbiBmaWxlLiZsdDsvcCZndDsKCiZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Jmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O3ByZSBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O2NvZGUmZ3Q7dmVyc2lvbjogMi4xCgpvcmJzOgogIHhtYXR0ZXJzOiB4bWF0dGVycy94bWF0dGVycy1vcmJAMS4wLjQKCmpvYnM6CiAgYnVpbGQ6CiAgICBkb2NrZXI6IAogICAgICAtIGltYWdlOiBjaXJjbGVjaS9ub2RlOjQuOC4yCiAgICBzdGVwczoKICAgICAgLSBydW46IGVjaG8gJnF1b3Q7QnVpbGRpbmcgYnVpbGRpbmcgYnVpbGRpbmchJnF1b3Q7CgogIHJlcXVlc3QtYXBwcm92YWw6CiAgICBkb2NrZXI6CiAgICAgIC0gaW1hZ2U6IGNpcmNsZWNpL25vZGU6NC44LjIKICAgIHN0ZXBzOgogICAgICAtIHhtYXR0ZXJzL25vdGlmeToKICAgICAgICAgIHJlY2lwaWVudHM6IEVuZ2luZWVyaW5nIE1hbmFnZXJzCgogIGhvbGQ6CiAgICBkb2NrZXI6CiAgICAgIC0gaW1hZ2U6IGNpcmNsZWNpL25vZGU6NC44LjIKICAgIHN0ZXBzOgogICAgICAtIHJ1bjogZWNobyAmcXVvdDtIb2xkIGZvciBhcHByb3ZhbCZxdW90OwoKICBkZXBsb3ktc3R1ZmY6CiAgICBkb2NrZXI6CiAgICAgIC0gaW1hZ2U6IGNpcmNsZWNpL25vZGU6NC44LjIKICAgIHN0ZXBzOgogICAgICAtIHJ1bjogZWNobyAmcXVvdDtEZXBsb3kgc3R1ZmYgaGVyZSZxdW90OwoKd29ya2Zsb3dzOgogIGJ1aWxkLXRlc3QtYW5kLWFwcHJvdmFsLWRlcGxveToKICAgIGpvYnM6CiAgICAgIC0gYnVpbGQKICAgICAgLSByZXF1ZXN0LWFwcHJvdmFsCiAgICAgIC0gaG9sZDoKICAgICAgICAgIHR5cGU6IGFwcHJvdmFsCiAgICAgICAgICByZXF1aXJlczoKICAgICAgICAgICAgLSBidWlsZAogICAgICAgICAgICAtIHJlcXVlc3QtYXBwcm92YWwKICAgICAgLSBkZXBsb3ktc3R1ZmY6CiAgICAgICAgICByZXF1aXJlczoKICAgICAgICAgICAgLSBob2xkCiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtwJmd0O1RoZSBpdGVtcyB0byBub3RlIGhlcmUgYXJlIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtob2xkJmx0Oy9jb2RlJmd0OyBhbmQgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7cmVxdWVzdC1hcHByb3ZhbCZsdDsvY29kZSZndDsgam9icy4gWW91IGNhbiBzZWUgaW4gdGhlIHdvcmtmbG93cyBzZWN0aW9uIHRoYXQgdGhlIGhvbGQgam9iLCBtYXJrZWQgYXMgdHlwZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDthcHByb3ZhbCZsdDsvY29kZSZndDssIGlzIGRlcGVuZGVudCBvbiB0aGUgc3VjY2Vzc2Z1bCBleGVjdXRpb24gb2YgdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2J1aWxkJmx0Oy9jb2RlJmd0OyBhbmQgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7cmVxdWVzdC1hcHByb3ZhbCZsdDsvY29kZSZndDsgam9icy4gVGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2RlcGxveS1zdHVmZiZsdDsvY29kZSZndDsgam9iIGlzIHRoZW4gZGVwZW5kZW50IG9uIHRoZSBzdWNjZXNzZnVsIGV4ZWN1dGlvbiBvZiB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7aG9sZCZsdDsvY29kZSZndDsgam9iLiBUaGlzIG1lYW5zIHRoYXQgdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2hvbGQmbHQ7L2NvZGUmZ3Q7IGpvYiBoYWx0cyB0aGUgZXhlY3V0aW9uIG9mIHRoZSB3b3JrZmxvdyB1bnRpbCB0aGUgYXBwIGlzIGJ1aWx0IHN1Y2Nlc3NmdWxseSBhbmQgdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O3JlcXVlc3QtYXBwcm92YWwmbHQ7L2NvZGUmZ3Q7IGpvYiwgd2hpY2ggdXNlcyB0aGUgeE1hdHRlcnMgb3JiLCBpcyBleGVjdXRlZC4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtXZeKAmXJlIHRhcmdldGluZyB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7RW5naW5lZXJpbmcgTWFuYWdlbWVudCZsdDsvY29kZSZndDsgZ3JvdXAgc28gdGhhdCB0aGUgY3VycmVudCBvbi1jYWxsIGVuZ2luZWVyaW5nIG1hbmFnZXIgY2FuIGFwcHJvdmUgKG9yIHJlamVjdCEpIHRoZSBwaXBlbGluZS4gT25jZSB0aGUgaG9sZCBqb2IgaXMgYXBwcm92ZWQsIHRoZSBwaXBlbGluZSBjb250aW51ZXMgd2l0aCB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7ZGVwbG95LXN0dWZmJmx0Oy9jb2RlJmd0OyBqb2IsIGFuZCB0aGUgY29kZSBpcyBkZXBsb3llZCB0byBwcm9kdWN0aW9uLiZsdDsvcCZndDsKCiZsdDtwJmd0O1dlIG5lZWQgdG8gc2V0IHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtYTV9VUkwmbHQ7L2NvZGUmZ3Q7IHZhbHVlIGluIHRoZSBwcm9qZWN0IHNldHRpbmdzIGluIENpcmNsZUNJLiBCZWZvcmUgdGhhdCwgd2Ugd2lsbCBncmFiIGEgcGVyc29uYWwgQVBJIHRva2VuIHNvIHRoYXQgeE1hdHRlcnMgY2FuIHByb3Blcmx5IGF1dGhlbnRpY2F0ZS4gSGVhZCBvdmVyIHRvIHlvdXIgYWNjb3VudCBzZXR0aW5ncyBhbmQgc2VsZWN0IHRoZSAmbHQ7c3Ryb25nJmd0O1BlcnNvbmFsIEFQSSBUb2tlbnMmbHQ7L3N0cm9uZyZndDsgdGFiLiZsdDsvcCZndDsKCiZsdDtwIGFsaWduPSZxdW90O2NlbnRlciZxdW90OyZndDsKICAgJmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0wOS0yNy14bWF0dGVyczEucG5nJnF1b3Q7IHdpZHRoPSZxdW90OzkwMCZxdW90OyAvJmd0OwombHQ7L3AmZ3Q7CgombHQ7cCZndDtDbGljayAmbHQ7c3Ryb25nJmd0O0NyZWF0ZSBOZXcgVG9rZW4mbHQ7L3N0cm9uZyZndDsgYW5kIGNvcHkgdGhlIHZhbHVlIHRvIGEgdGV4dCBmaWxlIHVudGlsIHdl4oCZcmUgcmVhZHkgdG8gdXNlIGl0LiZsdDsvcCZndDsKCiZsdDtoMiZndDtDb25maWd1cmluZyB4TWF0dGVycyZsdDsvaDImZ3Q7CgombHQ7cCZndDtOZXh0LCBoZWFkIG92ZXIgdG8geW91ciB4TWF0dGVycyBpbnN0YW5jZSBhbmQgbmF2aWdhdGUgdG8gdGhlICZsdDtzdHJvbmcmZ3Q7V29ya2Zsb3dzJmx0Oy9zdHJvbmcmZ3Q7IHNjcmVlbi4gQ2xpY2sgJmx0O3N0cm9uZyZndDtJbXBvcnQgV29ya2Zsb3cmbHQ7L3N0cm9uZyZndDsgYW5kIGZpbmQgdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O0NpcmNsZUNJLnppcCZsdDsvY29kZSZndDsgZmlsZS4gVGhpcyBmaWxlIGNhbiBiZSBkb3dubG9hZGVkIGZyb20gdGhlIHJlcG8sICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9naXRodWIuY29tL3htYXR0ZXJzL3htLWxhYnMtY2lyY2xlY2ktb3JiJnF1b3Q7Jmd0O2hlcmUmbHQ7L2EmZ3Q7LiBPbmNlIGltcG9ydGVkLCBjbGljayBpbnRvIHRoZSB3b3JrZmxvdyBhbmQgbmF2aWdhdGUgdG8gdGhlICZsdDtzdHJvbmcmZ3Q7Rmxvd3MmbHQ7L3N0cm9uZyZndDsgdGFiLiBUaGVyZSB3aWxsIGJlIHR3byBjYW52YXNlcyBsaXN0ZWQuIEluIHRoaXMgY2FzZSwgd2Ugd2FudCAmbHQ7c3Ryb25nJmd0O0FwcHJvdmFsIFJlcXVlc3QmbHQ7L3N0cm9uZyZndDssIHdoaWNoIGhhcyB0aGUgbG9naWMgdG8gZGVhbCB3aXRoIG1vc3QgcmVzcG9uc2VzLiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDktMjcteG1hdHRlcnMyLnBuZyZxdW90OyBhbHQ9JnF1b3Q7JnF1b3Q7IC8mZ3Q7Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Q2xpY2tpbmcgaW50byB0aGUgY2FudmFzIHNob3dzIHRoZSBzdGVwcyBsYWlkIG91dCB3aXRoIHRoZSBzdGVwIHBhbGV0dGUgb24gdGhlIHJpZ2h0IHNpZGUuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0wOS0yNy14bWF0dGVyczMucG5nJnF1b3Q7IGFsdD0mcXVvdDsmcXVvdDsgLyZndDsmbHQ7L3AmZ3Q7CgombHQ7cCZndDtXZSBhcmUgaGVyZSB0byBnZXQgdGhlIGluYm91bmQgVVJMLCBzbyBkb3VibGUgY2xpY2sgb24gdGhlICZsdDtzdHJvbmcmZ3Q7QXBwcm92YWwgUmVxdWVzdCAtIEluYm91bmQgZnJvbSBDaXJjbGVDSSZsdDsvc3Ryb25nJmd0OyBzdGVwIGluIHRoZSB1cHBlciBsZWZ0IGNvcm5lci4gVGhpcyB3aWxsIGRpc3BsYXkgJmx0O3N0cm9uZyZndDtIVFRQIFRyaWdnZXImbHQ7L3N0cm9uZyZndDsgZGlhbG9nIHdpdGggb3VyIGluYm91bmQgVVJMLiBDb3B5IHRoaXMgdmFsdWUgYW5kIGtlZXAgaXQgaGFuZHkgZm9yIGxhdGVyLiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDktMjcteG1hdHRlcnM0LnBuZyZxdW90OyBhbHQ9JnF1b3Q7JnF1b3Q7IC8mZ3Q7Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7RXhpdCB0aGF0IHdpbmRvdyBhbmQgbmF2aWdhdGUgYmFjayB0byAmbHQ7c3Ryb25nJmd0O1dvcmtmbG93cyZsdDsvc3Ryb25nJmd0Oy4gQ2xpY2sgdGhlICZsdDtzdHJvbmcmZ3Q7QWRtaW4gZ2VhciZsdDsvc3Ryb25nJmd0OyBhdCB0aGUgYm90dG9tIG9mIHRoZSBuYXZpZ2F0aW9uIG1lbnUgYW5kIGNsaWNrICZsdDtzdHJvbmcmZ3Q7Q3VzdG9tIEZpZWxkcyZsdDsvc3Ryb25nJmd0Oy4gVGhlc2UgZmllbGRzIGFyZSBtZXRhZGF0YSB0aWVkIHRvIGEgdXNlci4gSXQgaXMgd2hlcmUgd2Ugd2lsbCBzdG9yZSB0aGUgYWNjZXNzIHRva2VuLiZsdDsvcCZndDsKCiZsdDtwIGFsaWduPSZxdW90O2NlbnRlciZxdW90OyZndDsKICAgJmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0wOS0yNy14bWF0dGVyczUucG5nJnF1b3Q7IHdpZHRoPSZxdW90OzkwMCZxdW90OyAvJmd0OwombHQ7L3AmZ3Q7CgombHQ7cCZndDtDbGljayAmbHQ7c3Ryb25nJmd0O0FkZCBGaWVsZCZsdDsvc3Ryb25nJmd0OyBhbmQgZ2l2ZSBpdCB0aGUgbmFtZSDigJxDaXJjbGVDSSBUb2tlbiBQbGFpbuKAnS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7c3Ryb25nJmd0O05vdGUmbHQ7L3N0cm9uZyZndDs6ICZsdDtpJmd0O0l0IGlzIGltcG9ydGFudCB0aGF0IHlvdSB1c2UgdGhpcyBuYW1lLCBhcyBpdCBpcyB1c2VkIGluIHRoZSDigJxGaW5kIFVzZXIgUHJvcGVydHkgVmFsdWXigJ0gc3RlcCBiYWNrIG9uIHRoZSBmbG93IGRlc2lnbmVyIGNhbnZhcy4gSWYgeW91IHVzZSBhIGRpZmZlcmVudCBuYW1lIGhlcmUsIG1ha2Ugc3VyZSB0byBjaGFuZ2UgdGhlIG5hbWUgdGhlcmUgYXMgd2VsbC4mbHQ7L2kmZ3Q7Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7U2V0IHRoZSB0eXBlIGFzICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O1RleHQmbHQ7L2NvZGUmZ3Q7LiBDbGljayAmbHQ7c3Ryb25nJmd0O1NhdmUmbHQ7L3N0cm9uZyZndDsuIFdlIHdpbGwgdGhlbiBhZGQgdGhlIHRva2VuIHRvIHRoZSB1c2VyLiBJZiBpdCBpcyB5b3VyIHRva2VuLCBjbGljayB5b3VyIHVzZXJuYW1lIG9uIHRoZSB0b3AgcmlnaHQgYW5kIGNsaWNrICZsdDtzdHJvbmcmZ3Q7UHJvZmlsZSZsdDsvc3Ryb25nJmd0Oy4mbHQ7L3AmZ3Q7CgombHQ7cCBhbGlnbj0mcXVvdDtyaWdodCZxdW90OyZndDsKICAgJmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0wOS0yNy14bWF0dGVyczYucG5nJnF1b3Q7IHdpZHRoPSZxdW90OzMwMCZxdW90OyAvJmd0OwombHQ7L3AmZ3Q7CgombHQ7cCZndDtEaWcgb3V0IHRoZSBwZXJzb25hbCB0b2tlbiB3ZSBjb3BpZWQgZnJvbSBDaXJjbGVDSSBhbmQgcGFzdGUgaXQgaW50byB0aGUgZmllbGQgd2UganVzdCBjcmVhdGVkLiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDktMjcteG1hdHRlcnM3LnBuZyZxdW90OyBhbHQ9JnF1b3Q7JnF1b3Q7IC8mZ3Q7Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O3N0cm9uZyZndDtOb3RlJmx0Oy9zdHJvbmcmZ3Q7OiAmbHQ7aSZndDtUaGlzIHRva2VuIGlzIHN0b3JlZCBpbiBwbGFpbiB0ZXh0LCBidXQgb25seSB5b3UgYW5kIHlvdXIgc3VwZXJ2aXNvciBoYXZlIGFjY2VzcyB0byB2aWV3IHRoaXMgdmFsdWUuIFdlIGFyZSBldmFsdWF0aW5nIG90aGVyIG1ldGhvZHMgb2Ygc3RvcmluZyB0aGlzIHRva2VuLCBzbyBrZWVwIGFuIGV5ZSBvdXQgZm9yIGNoYW5nZXMgaW4gdGhpcyBzcGFjZSEmbHQ7L2kmZ3Q7Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7RmluYWxseSwgaGVhZCBiYWNrIG92ZXIgdG8gQ2lyY2xlQ0kgYW5kIG5hdmlnYXRlIHRvIHRoZSBwcm9qZWN0IHRoYXQgbmVlZHMgYXBwcm92YWxzLiBNYWtlIHN1cmUgdG8gc2VsZWN0IHRoZSBwcm9qZWN0IGluIHRoZSBsaXN0IG9mIHBpcGVsaW5lcyBhcyB0aGlzIHdpbGwgZW5hYmxlIHRoZSAmbHQ7c3Ryb25nJmd0O1Byb2plY3QgU2V0dGluZ3MmbHQ7L3N0cm9uZyZndDsgYnV0dG9uIGluIHRoZSB1cHBlciByaWdodCBjb3JuZXIuIENsaWNraW5nIHRoaXMgYnV0dG9uIGRpc3BsYXlzIHRoZSBzZXR0aW5ncyBmb3IgdGhlIHByb2plY3QuIFdl4oCZcmUgZ29pbmcgdG8gYWRkIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtYTV9VUkwmbHQ7L2NvZGUmZ3Q7IHZhbHVlIGFzIGEgbmV3IGVudmlyb25tZW50IHZhcmlhYmxlLiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDktMjcteG1hdHRlcnM4LnBuZyZxdW90OyBhbHQ9JnF1b3Q7JnF1b3Q7IC8mZ3Q7Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7VGhlIGZpbmFsIHN0ZXAgZW50YWlscyByZWNpcGllbnQgc2V0IHVwLiBJZiB5b3XigJlyZSB0YXJnZXRpbmcgYSBncm91cCwgbmF2aWdhdGUgdG8gdGhlICZsdDtzdHJvbmcmZ3Q7R3JvdXBzJmx0Oy9zdHJvbmcmZ3Q7IHNlY3Rpb24sIGNyZWF0ZSBhIG5ldyBncm91cCwgYW5kIGFkZCB0aGUgYXBwcm9wcmlhdGUgdXNlcnMuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O3N0cm9uZyZndDtOb3RlJmx0Oy9zdHJvbmcmZ3Q7OiAmbHQ7aSZndDtZb3Ugd2lsbCBuZWVkIHRvIGhhdmUgeW91ciBvd24gdG9rZW4gcG9wdWxhdGVkIGluIHRoZSBwcm9maWxlLiZsdDsvaSZndDsmbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7aW1nIHNyYz0mcXVvdDsvYmxvZy9tZWRpYS8yMDIwLTA5LTI3LXhtYXR0ZXJzOS5wbmcmcXVvdDsgYWx0PSZxdW90OyZxdW90OyAvJmd0OyZsdDsvcCZndDsKCiZsdDtoMiZndDtUZXN0aW5nIGFuZCBhcHByb3ZpbmcmbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7VGhhdOKAmXMgaXQhIFdoZW4gdGhlIHBpcGVsaW5lIGdldHMgdHJpZ2dlcmVkLCBpdCB3aWxsIGJlIG9uIGhvbGQgYXQgdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2hvbGQmbHQ7L2NvZGUmZ3Q7IHN0ZXAgd2UgY29uZmlndXJlZCBpbiB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7LmNpcmNsZWNpL2NvbmZpZy55bWwmbHQ7L2NvZGUmZ3Q7IGZpbGUuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0wOS0yNy14bWF0dGVyczEwLnBuZyZxdW90OyBhbHQ9JnF1b3Q7JnF1b3Q7IC8mZ3Q7Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7VGhpcyB3aWxsIHRyaWdnZXIgYSBub3RpZmljYXRpb24gdG8gdGhlIHVzZXIgd2UgZGVmaW5lZCBhYm92ZSBpbiB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Q3JlYXRlIHhNYXR0ZXJzIEV2ZW50Jmx0Oy9jb2RlJmd0OyBzdGVwLiBUaGUgZGVzaWduYXRlZCByZWNpcGllbnQgd2lsbCBnZXQgYSBub3RpZmljYXRpb24gd2l0aCBwaXBlbGluZSBkZXRhaWxzIGFzIHdlbGwgYXMgdGhlIG5lY2Vzc2FyeSByZXNwb25zZSBvcHRpb25zLiBUaGlzIGlzIGhvdyBpdCB3aWxsIGxvb2sgb24gdGhlIHhNYXR0ZXJzIG1vYmlsZSBhcHAsIGJ1dCB0aGUgZW1haWwgaXMgdmVyeSBzaW1pbGFyLiBUaGUgaW1hZ2Ugb24gdGhlIHJpZ2h0IGlzIHdpdGggdGhlIHJlc3BvbnNlcyBkcmF3ZXIgb3Blbiwgc2hvd2luZyB0aGUgYXZhaWxhYmxlIHJlc3BvbnNlcy4mbHQ7L3AmZ3Q7CgombHQ7cCBzdHlsZT0mcXVvdDt0ZXh0LWFsaWduOiBjZW50ZXImcXVvdDsmZ3Q7CiAgJmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0wOS0yNy14bWF0dGVyczExLnBuZyZxdW90OyB3aWR0aD0mcXVvdDszMjUmcXVvdDsgYWx0PSZxdW90OyZxdW90OyAvJmd0OwogICZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDktMjcteG1hdHRlcnMxMi5wbmcmcXVvdDsgd2lkdGg9JnF1b3Q7MzI1JnF1b3Q7IGFsdD0mcXVvdDsmcXVvdDsgLyZndDsKJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7SnVzdCBsaWtlIHRoYXQsIHNlbGVjdGluZyAmbHQ7c3Ryb25nJmd0O0FwcHJvdmUmbHQ7L3N0cm9uZyZndDsgbWFrZXMgdGhlIEFQSSBjYWxsIGJhY2sgdG8gQ2lyY2xlQ0kgdG8gYXBwcm92ZSB0aGUgcGlwZWxpbmUgYW5kIGRlcGxveSB5b3VyIGNvZGUgdG8gcHJvZHVjdGlvbi4mbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7aW1nIHNyYz0mcXVvdDsvYmxvZy9tZWRpYS8yMDIwLTA5LTI3LXhtYXR0ZXJzMTMucG5nJnF1b3Q7IGFsdD0mcXVvdDsmcXVvdDsgLyZndDsmbHQ7L3AmZ3Q7CjwvZGVzY3JpcHRpb24+CiAgICAgICAgCiAgICAgIDwvaXRlbT4KICAgIAogICAgICAKICAgICAgPGl0ZW0+CiAgICAgICAgPHRpdGxlPkhhY2t0b2JlcmZlc3QgMjAyMCBpcyB1cG9uIHVzOiBjZWxlYnJhdGUgb3BlbiBzb3VyY2Ugd2l0aCBDaXJjbGVDSSBvcmJzPC90aXRsZT4KICAgICAgICA8bGluaz5odHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL2hhY2t0b2JlcmZlc3QtMjAyMC1pcy11cG9uLXVzLWNlbGVicmF0ZS1vcGVuLXNvdXJjZS13aXRoLWNpcmNsZWNpLW9yYnMvPC9saW5rPgogICAgICAgIDxwdWJEYXRlPlRodSwgMDEgT2N0IDIwMjAgMDk6MDA6MDAgLTA3MDA8L3B1YkRhdGU+CiAgICAgICAgPGd1aWQgaXNQZXJtYUxpbms9InRydWUiPmh0dHBzOi8vY2lyY2xlY2kuY29tL2Jsb2cvaGFja3RvYmVyZmVzdC0yMDIwLWlzLXVwb24tdXMtY2VsZWJyYXRlLW9wZW4tc291cmNlLXdpdGgtY2lyY2xlY2ktb3Jicy88L2d1aWQ+CiAgICAgICAgCiAgICAgICAgICA8ZGM6Y3JlYXRvcj5KZXJlbXkgTWVpc3M8L2RjOmNyZWF0b3I+CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgICA8ZGVzY3JpcHRpb24+Jmx0O3AmZ3Q7RXZlcnkgT2N0b2JlciwgYXMgdGhlIGNvbG9ycyBvZiB0aGUgbGVhdmVzIGNoYW5nZSwgYW5kIHRoZSB3ZWF0aGVyIHR1cm5zIGNvb2xlciAob3IgaWYgeW914oCZcmUgaW4gdGhlIFNvdXRoZXJuIEhlbWlzcGhlcmUsIHRoZSBvcHBvc2l0ZSkgYSBnbG9iYWwgcGhlbm9tZW5vbiBraWNrcyBvZmY6IEhhY2t0b2JlcmZlc3QhJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2hhY2t0b2JlcmZlc3QuZGlnaXRhbG9jZWFuLmNvbS8mcXVvdDsmZ3Q7SGFja3RvYmVyZmVzdCZsdDsvYSZndDsgaXMgYSBtb250aC1sb25nIGNlbGVicmF0aW9uIG9mIG9wZW4gc291cmNlLCBzdGFydGVkIGJ5IERpZ2l0YWxPY2VhbiBpbiAyMDE0LCBhbmQgZW5jb3VyYWdlcyBhd2FyZW5lc3Mgb2YsIGFuZCBwYXJ0aWNpcGF0aW9uIGluLCB0aGUgb3BlbiBzb3VyY2UgY29tbXVuaXR5LiBJbiAyMDE5IGFsb25lLCB0aGVyZSB3ZXJlIG92ZXIgJmx0O2VtJmd0OzQ4M2sgcHVsbCByZXF1ZXN0cyZsdDsvZW0mZ3Q7IG9wZW5lZCBhY3Jvc3Mgb3ZlciAmbHQ7ZW0mZ3Q7MTU0ayByZXBvc2l0b3JpZXMmbHQ7L2VtJmd0Oywgd2l0aCBwYXJ0aWNpcGFudHMgZnJvbSAmbHQ7ZW0mZ3Q7MTQyIGNvdW50cmllcyZsdDsvZW0mZ3Q7IOKAkyBhIHRydWx5IGltcHJlc3NpdmUgYWNoaWV2ZW1lbnQgYnkgdGhlIGNvbW11bml0eS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtIZXJlIGF0IENpcmNsZUNJIHdl4oCZdmUgYWx3YXlzIGJlbGlldmVkIHN0cm9uZ2x5IGluIG9wZW4gc291cmNlLCBhbmQgdGhlIHZhbHVlIHRoYXQgaXQgY2FuIGJyaW5nIHRvIG9yZ2FuaXphdGlvbnMuIFdlIGhhdmUgYSBsb25nIGhpc3Rvcnkgb2YgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9vcGVuLXNvdXJjZS8mcXVvdDsmZ3Q7c3VwcG9ydGluZyBvcGVuIHNvdXJjZSBwcm9qZWN0cyZsdDsvYSZndDsgb24gQ2lyY2xlQ0ksIGFuZCBtYW55IG9mIHRoZSAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2Jsb2cvbGVhZGluZy1vcGVuLXNvdXJjZS1tbC1hZHZhbmNlbWVudHMtYW4taW50cm9kdWN0aW9uLXRvLXB5dG9yY2gvJnF1b3Q7Jmd0O2xhcmdlc3Qgb3BlbiBzb3VyY2UgcHJvamVjdHMmbHQ7L2EmZ3Q7IHVzZSBDaXJjbGVDSSBpbiB0aGVpciBwaXBlbGluZXMuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Rm9yIHRoaXMgeWVhcuKAmXMgZXZlbnQsIGFueW9uZSB3aG8gbWVldHMgdGhlICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9oYWNrdG9iZXJmZXN0LmRpZ2l0YWxvY2Vhbi5jb20vZGV0YWlscyZxdW90OyZndDtIYWNrdG9iZXJmZXN0IGNvcmUgcmVxdWlyZW1lbnRzJmx0Oy9hJmd0OyAobWluaW11bSBvZiA0IHZhbGlkIFBScyBzdWJtaXR0ZWQgdG8gYW4gb3BlbiBzb3VyY2UgcHJvamVjdCkgd2lsbCByZWNlaXZlIGV2ZW50IHN3YWcsIGluY2x1ZGluZyBhIEhhY2t0b2JlcmZlc3QgdC1zaGlydCBhbmQgc3RpY2tlcnMgZnJvbSB0aGUgc3VwcG9ydGluZyBzcG9uc29ycy4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7T3JidG9iZXJmZXN0OiBoYWNrIE9TUyB3aXRoIENpcmNsZUNJIG9yYnMmbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7TGFzdCB5ZWFyLCB3ZSBsYXVuY2hlZCBvdXIgZmlyc3Qg4oCcJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL2pvaW4tdGhlLXBhcnR5LWdldC15b3VyLWhhY2t0b2JlcmZlc3QtcHJzLXdpdGgtY2lyY2xlY2ktb3Jicy8mcXVvdDsmZ3Q7T3JidG9iZXJmZXN0Jmx0Oy9hJmd0O+KAnSB0byBjb2luY2lkZSB3aXRoIEhhY2t0b2JlcmZlc3QuICBPcmJ0b2JlcmZlc3QgZW5jb3VyYWdlZCB0aGUgY29tbXVuaXR5IHRvIGxlYXJuIGFib3V0ICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9jaXJjbGVjaS5jb20vZG9jcy8yLjAvdXNpbmctb3Jicy8mcXVvdDsmZ3Q7Q2lyY2xlQ0kgb3JicyZsdDsvYSZndDs6IHJldXNhYmxlIHBhY2thZ2VzIG9mIFlBTUwgY29uZmlndXJhdGlvbiB0aGF0IGNvbmRlbnNlcyByZXBlYXRlZCBsaW5lcyBvZiBjb25maWcgaW50byBhIHNpbmdsZSBsaW5lIG9mIGNvZGUuIE9yYnMgaGVscCB5b3UgcGFja2FnZSwgc2hpcCwgYW5kIHJlLXVzZSBjb2RlLiBXZeKAmXJlIHJldmlzaXRuZyBPcmJ0b2JlcmZlc3QgdGhpcyB5ZWFyLCB0byBoZWxwIG1vcmUgZGV2ZWxvcGVycyBsZWFybiBhYm91dCBvcmJzIGFuZCBIYWNrdG9iZXJmZXN0LiBZb3UgYWxzbyBoYXZlIHRoZSBjaGFuY2UgdG8gZG91YmxlIHlvdXIgcHJpemUgaGF1bCB3aXRoIG91ciB1bmlxdWUsIGxpbWl0ZWQgZWRpdGlvbiBzd2FnLiZsdDsvcCZndDsKCiZsdDtoMiZndDtIb3cgdG8gZ2V0IGludm9sdmVkJmx0Oy9oMiZndDsKJmx0O3AmZ3Q7VGhlcmUgYXJlIGEgZmV3IHdheXMgdG8gZ2V0IGludm9sdmVkIHRoaXMgeWVhci4gVG8gcGFydGljaXBhdGUgaW4gSGFja3RvYmVyZmVzdCwgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2hhY2t0b2JlcmZlc3QuZGlnaXRhbG9jZWFuLmNvbS8mcXVvdDsmZ3Q7cmVnaXN0ZXIgd2l0aCBEaWdpdGFsT2NlYW4mbHQ7L2EmZ3Q7IGFuZCBzdWJtaXQgNCBQUnMgdGhhdCBtZWV0IHRoZSBzcGVjaWZpY2F0aW9ucyBvdXRsaW5lZCBvbiB0aGVpciBwYWdlIHRocm91Z2hvdXQgdGhlIG1vbnRoIG9mIE9jdG9iZXIuIEFzIGEgcmV3YXJkLCByZWNlaXZlIEhhY2t0b2JlcmZlc3Qgc3dhZyBvciBkb25hdGUgdG8gcGxhbnQgYSB0cmVlIGluc3RlYWQuIFRvIHBhcnRpY2lwYXRlIGluIENpcmNsZUNJIE9yYnRvYmVyZmVzdCwgeW91IGhhdmUgYSBmZXcgb3B0aW9ucywgb3V0bGluZWQgYmVsb3cuIFdlIGhvcGUgeW914oCZbGwgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL2hvdy10by1tYWtlLWFuLWVhc3ktYW5kLXZhbHVhYmxlLW9wZW4tc291cmNlLWNvbnRyaWJ1dGlvbi13aXRoLWNpcmNsZWNpLW9yYnMvJnF1b3Q7Jmd0O2NvbnRyaWJ1dGUgdG8gQ2lyY2xlQ0kgb3JicyZsdDsvYSZndDsgdG8gY29tcGxldGUgdGhlIGNoYWxsZW5nZSEmbHQ7L3AmZ3Q7CgombHQ7aDMmZ3Q7VGhlIGNoYWxsZW5nZXM6Jmx0Oy9oMyZndDsKCiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7Q2hhbGxlbmdlIDEmbHQ7L3N0cm9uZyZndDsmbHQ7YnIgLyZndDsKQ3JlYXRlIGEgUFIsICZsdDtzdHJvbmcmZ3Q7d2l0aCDigJxPcmJ0b2JlcmZlc3TigJ0gYXMgdGhlIGxhYmVsJmx0Oy9zdHJvbmcmZ3Q7LCB0byBpbmNsdWRlIG9yYiB1c2FnZSBvbiBhbiBleGlzdGluZyBDaXJjbGVDSSBjb25maWcgYW5kIGdldCB0aGF0IFBSIGFjY2VwdGVkIG9yIG1lcmdlZC4gVmFsaWQgY29udHJpYnV0aW9ucyB0byBvdGhlciBDaXJjbGVDSSByZXBvcywgbGlrZSBEb2NzLCBtYXkgYWxzbyBiZSBjb25zaWRlcmVkLiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7UHJpemVzOiZsdDsvc3Ryb25nJmd0OyZsdDticiAvJmd0OwoxLTMgUFJzIHJlY2VpdmUgYSBzdGlja2VyIHBhY2sKNCBQUnMgcmVjZWl2ZSBzdGlja2VycyBhbmQgYSBULXNoaXJ0Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O3N0cm9uZyZndDtDaGFsbGVuZ2UgMjombHQ7L3N0cm9uZyZndDsmbHQ7YnIgLyZndDsKRGV2ZWxvcCBhbmQgcHVibGlzaCBhbiBvcmIgdXNpbmcgdGhlICZsdDthIGhyZWY9JnF1b3Q7L2RvY3MvMi4wL29yYi1hdXRob3ItaW50cm8vJnF1b3Q7Jmd0O09yYiBEZXZlbG9wbWVudCBLaXQmbHQ7L2EmZ3Q7LiBNYWtlIHN1cmUgeW91ciBvcmIgc29sdmVzIGEgY2hhbGxlbmdlIHRoYXQgb3RoZXIgZGV2ZWxvcGVycyBtaWdodCBiZSBmYWNpbmcuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O3N0cm9uZyZndDtQcml6ZXM6Jmx0Oy9zdHJvbmcmZ3Q7Jmx0O2JyIC8mZ3Q7ClN0aWNrZXIgcGFjawpULXNoaXJ0CkxpbWl0ZWQgZWRpdGlvbiBPcmJ0b2JlcmZlc3QgcGluCiZsdDticiAvJmd0OwombHQ7YnIgLyZndDsKT25jZSB5b3XigJl2ZSBjb21wbGV0ZWQgdGhlIGNoYWxsZW5nZShzKSBhYm92ZSwgZmlsbCBvdXQgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLWNvbW11bml0eS50eXBlZm9ybS5jb20vdG8vbUVyR0wwbnYmcXVvdDsmZ3Q7dGhpcyBmb3JtJmx0Oy9hJmd0OyB0byByZWNlaXZlIHlvdXIgc3dhZy4gQWZ0ZXIgdGhlIG1vbnRoIG9mIE9jdG9iZXIgaXMgb3Zlciwgd2Ugd2lsbCBwcm9jZXNzIGFsbCBzdWJtaXNzaW9ucywgdmVyaWZ5IHRoZW0sIGFuZCBsZXQgeW91IGtub3cgaG93IHlvdSBjYW4gY2xhaW0geW91ciBzcGVjaWFsIENpcmNsZUNJIHN3YWcuIFdlIGFyZSBzbyBleGNpdGVkIHRvIHNlZSBhbGwgb2YgdGhlIGNvbnRyaWJ1dGlvbnMgdG8gb3BlbiBzb3VyY2UgYW5kIG91ciBvcmJzIHRoYXQgd2lsbCBiZSBjcmVhdGVkIHRoaXMgeWVhciEmbHQ7L3AmZ3Q7CgombHQ7cCZndDtNYWtlIHN1cmUgdG8gam9pbiB0aGUgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2Rpc2N1c3MuY2lyY2xlY2kuY29tL3Qvb2ZmaWNpYWwtaGFja3RvYmVyZmVzdC1hbmQtb3JidG9iZXJmZXN0LXRocmVhZC8zNzUxMC8mcXVvdDsmZ3Q7T3JidG9iZXJmZXN0Jmx0Oy9hJmd0OyBkaXNjdXNzaW9uIG9uIG91ciBjb21tdW5pdHkgZm9ydW0gZm9yIGlkZWFzLCBGQVFzLCBhbmQgdG8gYXNrIGFueSBxdWVzdGlvbnMuIFlvdSBjYW4gYWxzbyBmb2xsb3cgYWxvbmcgd2l0aCB0aGUgY29udmVyc2F0aW9ucyBvbiBUd2l0dGVyIHZpYSB0aGUgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL3R3aXR0ZXIuY29tL3NlYXJjaD9xPSUyM2hhY2t0b2JlcmZlc3QmYW1wO2FtcDtmPWxpdmUmcXVvdDsmZ3Q7I2hhY2t0b2JlcmZlc3QmbHQ7L2EmZ3Q7IGFuZCAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vdHdpdHRlci5jb20vc2VhcmNoP3E9JTIzb3JidG9iZXJmZXN0JmFtcDthbXA7Zj1saXZlJnF1b3Q7Jmd0OyNvcmJ0b2JlcmZlc3QmbHQ7L2EmZ3Q7IGhhc2h0YWdzISZsdDsvcCZndDsKPC9kZXNjcmlwdGlvbj4KICAgICAgICAKICAgICAgPC9pdGVtPgogICAgCiAgPC9jaGFubmVsPgo8L3Jzcz4K - recorded_at: Wed, 21 Oct 2020 15:08:34 GMT -- request: - method: get - uri: https://medium.com/feed/@macsiri/ - body: - encoding: US-ASCII - string: '' - headers: - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - User-Agent: - - Ruby - response: - status: - code: 301 - message: Moved Permanently - headers: - Date: - - Wed, 21 Oct 2020 15:08:35 GMT - Content-Type: - - text/html; charset=utf-8 - Content-Length: - - '67' - Connection: - - keep-alive - Sepia-Upstream: - - medium - Location: - - https://medium.com/feed/@macsiri - Medium-Fulfilled-By: - - valencia/main-20201020-231910-0a4c7cfeb9 - X-Envoy-Upstream-Service-Time: - - '0' - Strict-Transport-Security: - - max-age=15552000; includeSubDomains; preload - Cf-Cache-Status: - - DYNAMIC - Cf-Request-Id: - - 05ed4d7cdd0000fc9549b22000000001 - Expect-Ct: - - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" - X-Content-Type-Options: - - nosniff - Server: - - cloudflare - Cf-Ray: - - 5e5be50e2f60fc95-FCO - Alt-Svc: - - h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400 - body: - encoding: UTF-8 - string: "Moved Permanently.\n\n" - recorded_at: Wed, 21 Oct 2020 15:08:35 GMT -- request: - method: get - uri: https://medium.com/feed/@macsiri - body: - encoding: US-ASCII - string: '' - headers: - Cookie: - - __cfduid=dffb80af3c7d40298f24c2f1d245a9fb01603292914; __cfruid=d0fe87c8ee53cd90daf9d0c8fd1080566051f750-1603292915 - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - User-Agent: - - Ruby - response: - status: - code: 200 - message: OK - headers: - Date: - - Wed, 21 Oct 2020 15:08:35 GMT - Content-Type: - - text/xml; charset=UTF-8 - Transfer-Encoding: - - chunked - Connection: - - keep-alive - Sepia-Upstream: - - medium - Cache-Control: - - private, must-revalidate, max-age=900 - Content-Security-Policy: - - 'default-src ''self''; connect-src https://localhost https://*.instapaper.com - https://*.stripe.com https://glyph.medium.com https://*.paypal.com https://*.braintree-api.com - https://*.braintreegateway.com https://accounts.google.com https://getpocket.com - https://medium.com https://*.medium.com https://*.medium.com https://medium.com - https://*.medium.com https://*.algolia.net https://cdn-static-1.medium.com - https://dnqgz544uhbo8.cloudfront.net https://cdn-videos-1.medium.com https://cdn-audio-1.medium.com - https://lightstep.medium.systems https://*.branch.io ''self''; font-src data: - https://*.amazonaws.com https://*.medium.com https://glyph.medium.com https://medium.com - https://*.gstatic.com https://dnqgz544uhbo8.cloudfront.net https://cdn-static-1.medium.com - ''self''; frame-src chromenull: https: webviewprogressproxy: medium: ''self''; - img-src blob: data: https: ''self''; media-src https://*.cdn.vine.co https://d1fcbxp97j4nb2.cloudfront.net - https://d262ilb51hltx0.cloudfront.net https://*.medium.com https://gomiro.medium.com - https://miro.medium.com https://pbs.twimg.com ''self'' blob:; object-src ''self''; - script-src ''unsafe-eval'' ''unsafe-inline'' about: https: ''self''; style-src - ''unsafe-inline'' data: https: ''self''; report-uri https://csp.medium.com' - Expires: - - Wed, 21 Oct 2020 15:23:35 GMT - Link: - - ; rel="humans" - Medium-Fulfilled-By: - - valencia/main-20201020-231910-0a4c7cfeb9 - Pragma: - - private - X-Content-Type-Options: - - nosniff - X-Envoy-Upstream-Service-Time: - - '17' - X-Frame-Options: - - sameorigin - X-Obvious-Info: - - 42755-064957c,064957ce014 - X-Obvious-Tid: - - 1603292915199:806d1e9615a6 - X-Opentracing: - - '{"ot-tracer-spanid":"52dcea9b6b8a1b78","ot-tracer-traceid":"2448c7e075fca57f","ot-tracer-sampled":"true"}' - X-Powered-By: - - Medium - X-Ua-Compatible: - - IE=edge, Chrome=1 - X-Xss-Protection: - - 1; mode=block - Strict-Transport-Security: - - max-age=15552000; includeSubDomains; preload - Cf-Cache-Status: - - DYNAMIC - Cf-Request-Id: - - 05ed4d7daf0000cd327a16a000000001 - Expect-Ct: - - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" - Server: - - cloudflare - Cf-Ray: - - 5e5be50f7921cd32-FCO - Alt-Svc: - - h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400 - body: - encoding: ASCII-8BIT - string: !binary |- - PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48cnNzIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6Y29udGVudD0iaHR0cDovL3B1cmwub3JnL3Jzcy8xLjAvbW9kdWxlcy9jb250ZW50LyIgeG1sbnM6YXRvbT0iaHR0cDovL3d3dy53My5vcmcvMjAwNS9BdG9tIiB2ZXJzaW9uPSIyLjAiIHhtbG5zOmNjPSJodHRwOi8vY3liZXIubGF3LmhhcnZhcmQuZWR1L3Jzcy9jcmVhdGl2ZUNvbW1vbnNSc3NNb2R1bGUuaHRtbCI+CiAgICA8Y2hhbm5lbD4KICAgICAgICA8dGl0bGU+PCFbQ0RBVEFbU3RvcmllcyBieSBNYWMgU2lyaSBvbiBNZWRpdW1dXT48L3RpdGxlPgogICAgICAgIDxkZXNjcmlwdGlvbj48IVtDREFUQVtTdG9yaWVzIGJ5IE1hYyBTaXJpIG9uIE1lZGl1bV1dPjwvZGVzY3JpcHRpb24+CiAgICAgICAgPGxpbms+aHR0cHM6Ly9tZWRpdW0uY29tL0BtYWNzaXJpP3NvdXJjZT1yc3MtNGIyNjA1ZGE5MzhmLS0tLS0tMjwvbGluaz4KICAgICAgICA8aW1hZ2U+CiAgICAgICAgICAgIDx1cmw+aHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9maXQvYy8xNTAvMTUwLzAqdzJibXRXbGFsZEtGbGI4ZS48L3VybD4KICAgICAgICAgICAgPHRpdGxlPlN0b3JpZXMgYnkgTWFjIFNpcmkgb24gTWVkaXVtPC90aXRsZT4KICAgICAgICAgICAgPGxpbms+aHR0cHM6Ly9tZWRpdW0uY29tL0BtYWNzaXJpP3NvdXJjZT1yc3MtNGIyNjA1ZGE5MzhmLS0tLS0tMjwvbGluaz4KICAgICAgICA8L2ltYWdlPgogICAgICAgIDxnZW5lcmF0b3I+TWVkaXVtPC9nZW5lcmF0b3I+CiAgICAgICAgPGxhc3RCdWlsZERhdGU+V2VkLCAyMSBPY3QgMjAyMCAxNDo1Njo1NyBHTVQ8L2xhc3RCdWlsZERhdGU+CiAgICAgICAgPGF0b206bGluayBocmVmPSJodHRwczovL21lZGl1bS5jb20vZmVlZC9AbWFjc2lyaSIgcmVsPSJzZWxmIiB0eXBlPSJhcHBsaWNhdGlvbi9yc3MreG1sIi8+CiAgICAgICAgPHdlYk1hc3Rlcj48IVtDREFUQVt5b3VyZnJpZW5kc0BtZWRpdW0uY29tXV0+PC93ZWJNYXN0ZXI+CiAgICAgICAgPGF0b206bGluayBocmVmPSJodHRwOi8vbWVkaXVtLnN1cGVyZmVlZHIuY29tIiByZWw9Imh1YiIvPgogICAgICAgIDxpdGVtPgogICAgICAgICAgICA8dGl0bGU+PCFbQ0RBVEFbVGVzdGluZyBSU1MgRmVlZF1dPjwvdGl0bGU+CiAgICAgICAgICAgIDxsaW5rPmh0dHBzOi8vbWVkaXVtLmNvbS9AbWFjc2lyaS90ZXN0aW5nLXJzcy1mZWVkLTZhZjA0YjdlNTdlMT9zb3VyY2U9cnNzLTRiMjYwNWRhOTM4Zi0tLS0tLTI8L2xpbms+CiAgICAgICAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0cHM6Ly9tZWRpdW0uY29tL3AvNmFmMDRiN2U1N2UxPC9ndWlkPgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbdGVzdF1dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxkYzpjcmVhdG9yPjwhW0NEQVRBW01hYyBTaXJpXV0+PC9kYzpjcmVhdG9yPgogICAgICAgICAgICA8cHViRGF0ZT5UdWUsIDAyIEphbiAyMDE4IDE5OjA2OjMwIEdNVDwvcHViRGF0ZT4KICAgICAgICAgICAgPGF0b206dXBkYXRlZD4yMDE5LTA2LTE5VDIxOjM4OjA3LjU0OVo8L2F0b206dXBkYXRlZD4KICAgICAgICAgICAgPGNvbnRlbnQ6ZW5jb2RlZD48IVtDREFUQVs8cD55b3V0dWJlIGxpbmvCoGhlcmU8L3A+PGlmcmFtZSBzcmM9Imh0dHBzOi8vY2RuLmVtYmVkbHkuY29tL3dpZGdldHMvbWVkaWEuaHRtbD9zcmM9aHR0cHMlM0ElMkYlMkZ3d3cueW91dHViZS5jb20lMkZlbWJlZCUyRlFPQ2FhY084d3VzJTNGZmVhdHVyZSUzRG9lbWJlZCZhbXA7ZGlzcGxheV9uYW1lPVlvdVR1YmUmYW1wO3VybD1odHRwcyUzQSUyRiUyRnd3dy55b3V0dWJlLmNvbSUyRndhdGNoJTNGdiUzRFFPQ2FhY084d3VzJmFtcDtpbWFnZT1odHRwcyUzQSUyRiUyRmkueXRpbWcuY29tJTJGdmklMkZRT0NhYWNPOHd1cyUyRmhxZGVmYXVsdC5qcGcmYW1wO2tleT1hMTlmY2MxODRiOTcxMWUxYjQ3NjQwNDBkM2RjNWMwNyZhbXA7dHlwZT10ZXh0JTJGaHRtbCZhbXA7c2NoZW1hPXlvdXR1YmUiIHdpZHRoPSI4NTQiIGhlaWdodD0iNDgwIiBmcmFtZWJvcmRlcj0iMCIgc2Nyb2xsaW5nPSJubyI+PGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL21lZGlhLzdkYTc0YmIzMGY4YTJhODJiMGFjYjg5YjIxM2EwMThiL2hyZWYiPmh0dHBzOi8vbWVkaXVtLmNvbS9tZWRpYS83ZGE3NGJiMzBmOGEyYTgyYjBhY2I4OWIyMTNhMDE4Yi9ocmVmPC9hPjwvaWZyYW1lPjxwPnR3ZWV0IGhlcmU8L3A+PHN0eWxlPmJvZHlbZGF0YS10d3R0ci1yZW5kZXJlZD0idHJ1ZSJdIHtiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDt9LnR3aXR0ZXItdHdlZXQge21hcmdpbjogYXV0byAhaW1wb3J0YW50O308L3N0eWxlPjxibG9ja3F1b3RlIGNsYXNzPSJ0d2l0dGVyLXR3ZWV0IiBkYXRhLWNvbnZlcnNhdGlvbj0ibm9uZSIgZGF0YS1hbGlnbj0iY2VudGVyIiBkYXRhLWRudD0idHJ1ZSI+PHA+JiN4MjAwYTsmbWRhc2g7JiN4MjAwYTs8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL2JlbmRoYWxwZXJuL3N0YXR1cy85NDgyNTYwODMzNTI3MzU3NDQiPkBiZW5kaGFscGVybjwvYT48L3A+PC9ibG9ja3F1b3RlPjxzY3JpcHQgc3JjPSIvL3BsYXRmb3JtLnR3aXR0ZXIuY29tL3dpZGdldHMuanMiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD48c2NyaXB0PmZ1bmN0aW9uIG5vdGlmeVJlc2l6ZShoZWlnaHQpIHtoZWlnaHQgPSBoZWlnaHQgPyBoZWlnaHQgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0OyB2YXIgcmVzaXplZCA9IGZhbHNlOyBpZiAod2luZG93LmRvbmtleSAmJiBkb25rZXkucmVzaXplKSB7ZG9ua2V5LnJlc2l6ZShoZWlnaHQpO3Jlc2l6ZWQgPSB0cnVlO31pZiAocGFyZW50ICYmIHBhcmVudC5fcmVzaXplSWZyYW1lKSB7dmFyIG9iaiA9IHtpZnJhbWU6IHdpbmRvdy5mcmFtZUVsZW1lbnQsIGhlaWdodDogaGVpZ2h0fTsgcGFyZW50Ll9yZXNpemVJZnJhbWUob2JqKTsgcmVzaXplZCA9IHRydWU7fWlmICh3aW5kb3cubG9jYXRpb24gJiYgd2luZG93LmxvY2F0aW9uLmhhc2ggPT09ICIjYW1wPTEiICYmIHdpbmRvdy5wYXJlbnQgJiYgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZSkge3dpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2Uoe3NlbnRpbmVsOiAiYW1wIiwgdHlwZTogImVtYmVkLXNpemUiLCBoZWlnaHQ6IGhlaWdodH0sICIqIik7fWlmICh3aW5kb3cud2Via2l0ICYmIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzICYmIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnJlc2l6ZSkge3dpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnJlc2l6ZS5wb3N0TWVzc2FnZShoZWlnaHQpOyByZXNpemVkID0gdHJ1ZTt9cmV0dXJuIHJlc2l6ZWQ7fXR3dHRyLmV2ZW50cy5iaW5kKCdyZW5kZXJlZCcsIGZ1bmN0aW9uIChldmVudCkge25vdGlmeVJlc2l6ZSgpO30pOyB0d3R0ci5ldmVudHMuYmluZCgncmVzaXplJywgZnVuY3Rpb24gKGV2ZW50KSB7bm90aWZ5UmVzaXplKCk7fSk7PC9zY3JpcHQ+PHNjcmlwdD5pZiAocGFyZW50ICYmIHBhcmVudC5fcmVzaXplSWZyYW1lKSB7dmFyIG1heFdpZHRoID0gcGFyc2VJbnQod2luZG93LmZyYW1lRWxlbWVudC5nZXRBdHRyaWJ1dGUoIndpZHRoIikpOyBpZiAoIDUwMCAgPCBtYXhXaWR0aCkge3dpbmRvdy5mcmFtZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsICI1MDAiKTt9fTwvc2NyaXB0PjxwPkdpdGh1YiBnaXN0wqBoZXJlPC9wPjxpZnJhbWUgc3JjPSIiIHdpZHRoPSIwIiBoZWlnaHQ9IjAiIGZyYW1lYm9yZGVyPSIwIiBzY3JvbGxpbmc9Im5vIj48YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vbWVkaWEvNzc3YWU4YjdkODkxNmU1NjViODRiNzA0YzA4OGNmMGMvaHJlZiI+aHR0cHM6Ly9tZWRpdW0uY29tL21lZGlhLzc3N2FlOGI3ZDg5MTZlNTY1Yjg0YjcwNGMwODhjZjBjL2hyZWY8L2E+PC9pZnJhbWU+PHA+Y29kZSBibG9jazwvcD48cHJlPnRlc3RzZXRzZXRzZXRzZXRzZXRzZXQgbGV0cyBpbnRyb2R1Y2Ugc29tZSB7eyBjaGFvcyB9fTwvcHJlPjxwcmU+SGVyZSYjMzk7cyBtb3JlIHt7IHdoYXQgfX08L3ByZT48cD5zb21lIG1vcmUgY29kZSBhbmQge3sgVkFSSUFCTEUgfX0gYW5kIDxzdHJvbmc+PGVtPnt7IEhUTUzCoH19PC9lbT48L3N0cm9uZz48L3A+PGgzPnt7IGhvdyBhYm91dCB0aGlzwqB9fTwvaDM+PGltZyBzcmM9Imh0dHBzOi8vbWVkaXVtLmNvbS9fL3N0YXQ/ZXZlbnQ9cG9zdC5jbGllbnRWaWV3ZWQmcmVmZXJyZXJTb3VyY2U9ZnVsbF9yc3MmcG9zdElkPTZhZjA0YjdlNTdlMSIgd2lkdGg9IjEiIGhlaWdodD0iMSIgYWx0PSIiPl1dPjwvY29udGVudDplbmNvZGVkPgogICAgICAgIDwvaXRlbT4KICAgIDwvY2hhbm5lbD4KPC9yc3M+ - recorded_at: Wed, 21 Oct 2020 15:08:35 GMT -recorded_with: VCR 6.0.0 diff --git a/spec/support/fixtures/vcr_cassettes/Feeds_Import/_call/reports_an_article_creation_error.yml b/spec/support/fixtures/vcr_cassettes/Feeds_Import/_call/reports_an_article_creation_error.yml deleted file mode 100644 index eecffa0c6..000000000 --- a/spec/support/fixtures/vcr_cassettes/Feeds_Import/_call/reports_an_article_creation_error.yml +++ /dev/null @@ -1,286 +0,0 @@ ---- -http_interactions: -- request: - method: get - uri: https://medium.com/feed/@vaidehijoshi - body: - encoding: US-ASCII - string: '' - headers: - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - User-Agent: - - Ruby - response: - status: - code: 200 - message: OK - headers: - Date: - - Wed, 21 Oct 2020 15:08:30 GMT - Content-Type: - - text/xml; charset=UTF-8 - Transfer-Encoding: - - chunked - Connection: - - keep-alive - Sepia-Upstream: - - medium - Cache-Control: - - private, must-revalidate, max-age=900 - Content-Security-Policy: - - 'default-src ''self''; connect-src https://localhost https://*.instapaper.com - https://*.stripe.com https://glyph.medium.com https://*.paypal.com https://*.braintree-api.com - https://*.braintreegateway.com https://accounts.google.com https://getpocket.com - https://medium.com https://*.medium.com https://*.medium.com https://medium.com - https://*.medium.com https://*.algolia.net https://cdn-static-1.medium.com - https://dnqgz544uhbo8.cloudfront.net https://cdn-videos-1.medium.com https://cdn-audio-1.medium.com - https://lightstep.medium.systems https://*.branch.io ''self''; font-src data: - https://*.amazonaws.com https://*.medium.com https://glyph.medium.com https://medium.com - https://*.gstatic.com https://dnqgz544uhbo8.cloudfront.net https://cdn-static-1.medium.com - ''self''; frame-src chromenull: https: webviewprogressproxy: medium: ''self''; - img-src blob: data: https: ''self''; media-src https://*.cdn.vine.co https://d1fcbxp97j4nb2.cloudfront.net - https://d262ilb51hltx0.cloudfront.net https://*.medium.com https://gomiro.medium.com - https://miro.medium.com https://pbs.twimg.com ''self'' blob:; object-src ''self''; - script-src ''unsafe-eval'' ''unsafe-inline'' about: https: ''self''; style-src - ''unsafe-inline'' data: https: ''self''; report-uri https://csp.medium.com' - Expires: - - Wed, 21 Oct 2020 15:23:30 GMT - Link: - - ; rel="humans" - Medium-Fulfilled-By: - - valencia/main-20201020-231910-0a4c7cfeb9 - Pragma: - - private - X-Content-Type-Options: - - nosniff - X-Envoy-Upstream-Service-Time: - - '21' - X-Frame-Options: - - sameorigin - X-Obvious-Info: - - 42755-064957c,064957ce014 - X-Obvious-Tid: - - 1603292910115:d7ee737c10a4 - X-Opentracing: - - '{"ot-tracer-spanid":"74e0d8193fac2840","ot-tracer-traceid":"340c312718bc4365","ot-tracer-sampled":"true"}' - X-Powered-By: - - Medium - X-Ua-Compatible: - - IE=edge, Chrome=1 - X-Xss-Protection: - - 1; mode=block - Strict-Transport-Security: - - max-age=15552000; includeSubDomains; preload - Cf-Cache-Status: - - DYNAMIC - Cf-Request-Id: - - 05ed4d69db0000cd12aca66000000001 - Expect-Ct: - - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" - Server: - - cloudflare - Cf-Ray: - - 5e5be4efcc22cd12-FCO - Alt-Svc: - - h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400 - body: - encoding: ASCII-8BIT - string: !binary |- - PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48cnNzIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6Y29udGVudD0iaHR0cDovL3B1cmwub3JnL3Jzcy8xLjAvbW9kdWxlcy9jb250ZW50LyIgeG1sbnM6YXRvbT0iaHR0cDovL3d3dy53My5vcmcvMjAwNS9BdG9tIiB2ZXJzaW9uPSIyLjAiIHhtbG5zOmNjPSJodHRwOi8vY3liZXIubGF3LmhhcnZhcmQuZWR1L3Jzcy9jcmVhdGl2ZUNvbW1vbnNSc3NNb2R1bGUuaHRtbCI+CiAgICA8Y2hhbm5lbD4KICAgICAgICA8dGl0bGU+PCFbQ0RBVEFbU3RvcmllcyBieSBWYWlkZWhpIEpvc2hpIG9uIE1lZGl1bV1dPjwvdGl0bGU+CiAgICAgICAgPGRlc2NyaXB0aW9uPjwhW0NEQVRBW1N0b3JpZXMgYnkgVmFpZGVoaSBKb3NoaSBvbiBNZWRpdW1dXT48L2Rlc2NyaXB0aW9uPgogICAgICAgIDxsaW5rPmh0dHBzOi8vbWVkaXVtLmNvbS9AdmFpZGVoaWpvc2hpP3NvdXJjZT1yc3MtOGY1NTk5M2M5NzNlLS0tLS0tMjwvbGluaz4KICAgICAgICA8aW1hZ2U+CiAgICAgICAgICAgIDx1cmw+aHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9maXQvYy8xNTAvMTUwLzEqUU9RdVdBcVFkNTY2b0lUajlydENLdy5qcGVnPC91cmw+CiAgICAgICAgICAgIDx0aXRsZT5TdG9yaWVzIGJ5IFZhaWRlaGkgSm9zaGkgb24gTWVkaXVtPC90aXRsZT4KICAgICAgICAgICAgPGxpbms+aHR0cHM6Ly9tZWRpdW0uY29tL0B2YWlkZWhpam9zaGk/c291cmNlPXJzcy04ZjU1OTkzYzk3M2UtLS0tLS0yPC9saW5rPgogICAgICAgIDwvaW1hZ2U+CiAgICAgICAgPGdlbmVyYXRvcj5NZWRpdW08L2dlbmVyYXRvcj4KICAgICAgICA8bGFzdEJ1aWxkRGF0ZT5XZWQsIDIxIE9jdCAyMDIwIDE0OjU2OjU0IEdNVDwvbGFzdEJ1aWxkRGF0ZT4KICAgICAgICA8YXRvbTpsaW5rIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9mZWVkL0B2YWlkZWhpam9zaGkiIHJlbD0ic2VsZiIgdHlwZT0iYXBwbGljYXRpb24vcnNzK3htbCIvPgogICAgICAgIDx3ZWJNYXN0ZXI+PCFbQ0RBVEFbeW91cmZyaWVuZHNAbWVkaXVtLmNvbV1dPjwvd2ViTWFzdGVyPgogICAgICAgIDxhdG9tOmxpbmsgaHJlZj0iaHR0cDovL21lZGl1bS5zdXBlcmZlZWRyLmNvbSIgcmVsPSJodWIiLz4KICAgICAgICA8aXRlbT4KICAgICAgICAgICAgPHRpdGxlPjwhW0NEQVRBW09uIFRoaXJ0eV1dPjwvdGl0bGU+CiAgICAgICAgICAgIDxsaW5rPmh0dHBzOi8vbWVkaXVtLmNvbS9AdmFpZGVoaWpvc2hpL29uLXRoaXJ0eS1kYTJkMmUyMWE2YjI/c291cmNlPXJzcy04ZjU1OTkzYzk3M2UtLS0tLS0yPC9saW5rPgogICAgICAgICAgICA8Z3VpZCBpc1Blcm1hTGluaz0iZmFsc2UiPmh0dHBzOi8vbWVkaXVtLmNvbS9wL2RhMmQyZTIxYTZiMjwvZ3VpZD4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW3RoaXJ0eV1dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtiaXJ0aGRheV1dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtsaWZlLWxlc3NvbnNdXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8ZGM6Y3JlYXRvcj48IVtDREFUQVtWYWlkZWhpIEpvc2hpXV0+PC9kYzpjcmVhdG9yPgogICAgICAgICAgICA8cHViRGF0ZT5UaHUsIDE5IERlYyAyMDE5IDIwOjU0OjExIEdNVDwvcHViRGF0ZT4KICAgICAgICAgICAgPGF0b206dXBkYXRlZD4yMDE5LTEyLTE5VDIxOjA2OjUwLjU3MVo8L2F0b206dXBkYXRlZD4KICAgICAgICAgICAgPGNvbnRlbnQ6ZW5jb2RlZD48IVtDREFUQVs8cD5JIGFtIGZ1bGx5IGF3YXJlIHRoYXQgYmlydGhkYXlzIGFyZSBqdXN0IHJpdHVhbHMuIEZ1bmN0aW9uYWxseSwgdGhleSBkb27igJl0IHJlYWxseSBtZWFuIG11Y2ggYXQgdGhlIGVuZCBvZiB0aGUgZGF5OyB0aGV5IGp1c3QgaGFwcGVuIHRvIGJlIGVhc3kgZW5vdWdoIHRvIHVzZSB3aGVuIHdlIHdhbnQgdG8gcmVwcmVzZW50IG1pbGVzdG9uZXMgYW5kIGltcGFjdGZ1bCBldmVudHMuIEFuZCB5ZXQsIEkgPGVtPmxvdmU8L2VtPiB0aGVzZSByaXR1YWxzLiBUaGV5IGFyZSBhbiBvcHBvcnR1bml0eSB0byByZWZsZWN0IGFuZCBtZWRpdGF0ZSBvbiB3aGF0IGhhcyBhbHJlYWR5IHBhc3NlZOKAiuKAlOKAimFuZCBpbiBhIHdheSwgdGhleSBhbGxvdyB1cyB0byBmaW5kIHNvbWUgc3RpbGxuZXNzIGluIHByZXBhcmF0aW9uIGZvciB3aGF0IGlzIHRvwqBjb21lLjwvcD48cD5J4oCZbSB0dXJuaW5nIHRoaXJ0eSB0b21vcnJvdywgYW5kIEkgY2VydGFpbmx5IGRvbuKAmXQgZXhwZWN0IHRoYXQgSeKAmWxsIGZlZWwgbXVjaCBkaWZmZXJlbnQgdG9tb3Jyb3cgdGhhbiBJIGRvIHRvZGF5LiBCdXQgY3VtdWxhdGl2ZWx5LCBJIGZlZWwgbGlrZSBhIG11Y2ggZGlmZmVyZW50IHBlcnNvbiB0aGFuIEkgd2FzIHdoZW4gSSBzdGFydGVkIG15IHR3ZW50aWVzLiBJIGZlZWwgbXVjaCBtb3JlIGNvbmZpZGVudCwgc3VyZS1mb290ZWQsIGZpcm0sIGFuZCBncm91bmRlZC4gSXTigJlzIGhhcmQgZm9yIG1lIHRvIHBpbnBvaW50IGhvdyB0aGlzIHRyYW5zZm9ybWF0aW9uIGNhbWUgYWJvdXQ7IHRoZXJlIHdhcyBubyBzaW5nbGUgZXZlbnQgdGhhdCBwZXJwZXR1YXRlZCB0aGlzIGNoYW5nZS4gSW5zdGVhZCwgSSBoYXZlIHRvIGJlbGlldmUgdGhhdCBpdCBpcyB0aGUgc3VtIG9mIHRoZSBleHBlcmllbmNlcyBvdmVyIHRoZSBsYXN0IGRlY2FkZSBhbmQgd2hhdCBJIGxlYXJuZWQgZnJvbSB0aGVtIHRoYXQgaW5jcmVtZW50YWxseSBjaGFuZ2VkIHdobyBJwqBhbS48L3A+PHA+U28sIG9uIHRoZSBldmUgb2YgYSBuZXcgZGVjYWRl4oCK4oCU4oCKYW5kIGluIGtlZXBpbmcgd2l0aCBteSBsb3ZlIGZvciBzZWxmLXJlZmxlY3Rpb27igIrigJTigIpoZXJlIGFyZSB0aGlydHkgdGhpbmdzIHRoYXQgSeKAmXZlIGxlYXJuZWQgYmVmb3JlIHR1cm5pbmfCoHRoaXJ0eS48L3A+PGZpZ3VyZT48aW1nIGFsdD0iQSB3b21hbiBzdGFuZHMgb24gdGhlIHNpZGUgb2YgdGhlIHJvYWQgd2l0aCBzbm93IG5lYXJieSwgd2l0aCB0aGUgYnJhbmNoZXMgb2YgYW4gZXZlcmdyZWVuIHRyZWUgYWJvdmUgaGVyLiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqZ3RqVGRvSHV1WldKazZxWHlRRHZCdy5qcGVnIiAvPjwvZmlndXJlPjxvbD48bGk+PHN0cm9uZz5JZiBhIHJlbGF0aW9uc2hpcCBpcyBpbXBvcnRhbnQgdG8geW91LCBjYXJ2ZSBvdXQgdGhlIHRpbWUgZm9yIGl0Ljwvc3Ryb25nPiBJIHNwZW50IG15IHR3ZW50aWVzIG1vdmluZyBhcm91bmQgdGhlIGNvdW50cnkgYW5kIGFyb3VuZCB0aGUgd29ybGQuIEFsb25nIHRoZSB3YXksIEkgbWFkZSBhIGxvdCBvZiB2ZXJ5IGdvb2QsIGNsb3NlIGZyaWVuZHMsIGJ1dCBhbHNvIHJlYWxpemVkIHRoYXQgbWFpbnRhaW5pbmcgdGhvc2UgcmVsYXRpb25zaGlwcyBhcyBhIG1vdmVkIHRvb2sgYSBsb3Qgb2Ygd29yay4gSSBoYWQgdG8gd29yayBoYXJkIHRvIGtlZXAgdGhlIHJlbGF0aW9uc2hpcHMgdGhhdCBtZWFudCB0aGUgbW9zdCB0byBtZS4gSSBub3cgaGF2ZSBtb250aGx5IGNhbGxzIHdpdGggc29tZSBvZiBjbG9zZSBmcmllbmRzIG9uIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBjb3VudHJ5LCBhbmQgbWFrZSBhbiBlZmZvcnQgdG8gc2VlIGZyaWVuZHMgaW4gdGhlIHNhbWUgY2l0eSBhcyBtZSBvbiBhIHJlZ3VsYXIgYmFzaXMuIE15IGZhbWlseSBhbmQgSSBoYXZlIGEgZ3JvdXAgY2hhdCBhbmQgd2Ugc2NoZWR1bGUgZ3JvdXAgdmlkZW8gY2FsbHMgb2Z0ZW4uIExpZmUgaGFwcGVucyB0byBhbGwgb2YgdXMsIGJ1dCB3ZSBuZWVkIHRvIHByaW9yaXRpemUgdGhlIHBlb3BsZSB3ZSBjYXJlIGFib3V0IHRoZcKgbW9zdC48L2xpPjxsaT48c3Ryb25nPlNheSBuby48L3N0cm9uZz4gSXTigJlzIG9rYXkgdG8gcHV0IHlvdXIgZm9vdCBkb3duIHdoZW4geW91IGFyZW7igJl0IGNvbWZvcnRhYmxlIHdpdGggc29tZXRoaW5nLCBvciB3aGVuIHlvdeKAmXJlIG5vdCBjYXBhYmxlIG9mIG1lZXRpbmcgc29tZW9uZeKAmXMgZXhwZWN0YXRpb25zIG9yIGRlc2lyZXMuIEl0IHRvb2sgbWUgYSBsb25nIHRpbWUgdG8gPGVtPnJlYWxseTwvZW0+IGxlYXJuIHRoaXMgYW5kIHByYWN0aWNlIGl0LiBCdXQsIHdoZW5ldmVyIEkgc2F5IG5vIHRvIHNvbWV0aGluZywgSSBhbHdheXMgb2ZmZXIgYSBjb3VudGVyIG9wdGlvbiB3aGVuZXZlciBpbiBvcmRlciB0byBtYWtlIGl0IGVhc2llciBmb3Igc29tZW9uZSB0byBtZWV0IG1lIGhhbGZ3YXkuIEFzIGl0IHR1cm5zIG91dCwgZXZlcnl0aGluZyBpbiBsaWZlIGlzIGEgbmVnb3RpYXRpb24hPC9saT48bGk+PHN0cm9uZz5CdXkgdGhlIHJlYWxseSBnb29kIG9saXZlIG9pbC48L3N0cm9uZz4gQWx0aG91Z2ggSSB0aGluayB0aGF0IHRoaXMgYXBwbGllcyB0byBhbGwgZm9vZCwgcmVhbGx5LiBJIHdpbGwgYWx3YXlzIGJ1eSB0aGUgaGlnaC1xdWFsaXR5IGluZ3JlZGllbnRzLCBldmVuIGlmIGl0IG1lYW5zIHNwZW5kaW5nIGEgYml0IG1vcmUgbW9uZXkuIEkgY2FuIHRhc3RlIHRoZSBkaWZmZXJlbmNlLCBhbmQgSSBhbHdheXMgcmVhZCB0aGUgaW5ncmVkaWVudHMgbGlzdCBiZWZvcmUgYnV5aW5nIHNvbWV0aGluZy4gSeKAmXZlIG5vdGljZWQgdGhhdCB0aGUgY2hlYXBlciB0aGUgaXRlbSwgdXN1YWxseSB0aGUgbW9yZSBwcm9jZXNzZWQgYW5kIGZ1bGwgb2YgcHJlc2VydmF0aXZlcyBpdCBpcy4gQW5kIEnigJlkIHJhdGhlciBzcGVuZCBhIGxpdHRsZSBleHRyYSBtb25leSBhbmQga25vdyBleGFjdGx5IHdoYXTigJlzIGdvaW5nIGludG8gbXkgYm9keSBpbnN0ZWFkIG9mIHNhdmluZyBhIGZldyBkb2xsYXJzIGFuZCBjb25zdW1pbmcgYSBtdWx0aS1zeWxsYWJsZSBjaGVtaWNhbC48L2xpPjxsaT48c3Ryb25nPkFjY2VwdCB0aGUgZmFjdCB0aGF0IHlvdSBjYW7igJl0IHBsZWFzZSBldmVyeW9uZS48L3N0cm9uZz4gSWYgeW91IHNwZW5kIHlvdXIgd2hvbGUgbGlmZSB0cnlpbmcgdG8gbWFrZSBvdGhlciBwZW9wbGUgaGFwcHksIG5vdCBvbmx5IHdpbGwgeW91IGZhaWwgYXQgdGhhdCAoYmVjYXVzZSBzb21lb25lIGlzIDxlbT5hbHdheXM8L2VtPiBnb2luZyB0byB0YWtlIGlzc3VlIHdpdGggeW91KSwgYnV0IHlvdeKAmWxsIGFsc28gYmUgbWlzZXJhYmxlLiBJdOKAmXMgbm90IHdvcnRoIGl0LiBEZWNpZGUgd2hhdCBpcyBpbXBvcnRhbnQgdG8geW91IGFuZCB3aGF0IGNob2ljZXMgbWFrZSB5b3UgaGFwcHksIGFuZCBpZ25vcmUgdGhlIHJlc3Qgb2YgdGhlIG5vaXNlIGFuZCBvcGluaW9ucy48L2xpPjxsaT48c3Ryb25nPkRvbuKAmXQgcmVhZCB0aGUgY29tbWVudHMuPC9zdHJvbmc+IEkgY29uc3RhbnRseSBzdHJ1Z2dsZSB3aXRoIHRoaXMgb25lIGJlY2F1c2UgcGFydCBvZiBtZSBzdGlsbCB0aGlua3Mgb2YgdGhlIGNvbW1lbnRzIGFzIGZlZWRiYWNrLiBCdXQgcGVvcGxlIHdpbGwgYWx3YXlzIGhhdmUgb3BpbmlvbnMgYW5kIGFuIChhbm9ueW1vdXMpIG9waW5pb24gaXMgd2F5IGVhc2llciB0byBwdXQgb3V0IGludG8gdGhlIHdvcmxkIHRoYW4gY3JlYXRpdmXCoGNvbnRlbnQuPC9saT48bGk+PHN0cm9uZz5BZHZvY2F0ZSBmb3IgeW91cnNlbGYuPC9zdHJvbmc+IE5vIG9uZSBlbHNlIGNhbiBhZHZvY2F0ZSBmb3IgeW91IGJldHRlciB0aGFuIHlvdSBjYW4uIEFuZCBob25lc3RseSwgbm8gb25lIGVsc2UgcHJvYmFibHkgd2lsbC4gQXNrIGZvciB3aGF0IHlvdSB3YW50LCBhbmQga25vdyB5b3VyIHdvcnRoLiBJdOKAmXMgbm90IGFycm9nYW5jZSB0byBrbm93IHlvdXIgdmFsdWUgYW5kIHBvaW50IGl0IG91dCB0byBvdGhlcnMuIFRoZSBzb29uZXIgeW91IGJlY29tZSBjb21mb3J0YWJsZSBkb2luZyBpdCwgdGhlIGJldHRlciBvZmYgeW914oCZbGzCoGJlLjwvbGk+PGxpPjxzdHJvbmc+RG9u4oCZdCBjYXJyeSBhcm91bmQgZ3VpbHQuPC9zdHJvbmc+IE5vbmUgb2YgdXMgYXJlIHBlcmZlY3QgYW5kIHdlIGRvIHRoZSBiZXN0IHRoYXQgd2UgY2FuLiBBcyBsb25nIGFzIHlvdSBjYW4gbG9vayB5b3Vyc2VsZiBpbiB0aGUgbWlycm9yIGFuZCBrbm93IHRoYXQgeW91IGRpZCBhbGwgdGhhdCB5b3UsIGNvdWxkIGdpdmVuIHdoYXQgeW91IGtuZXcgYXQgdGhlIHRpbWUsIHRoZW4gdGhhdOKAmXMgcmVhbGx5IHRoZSBiZXN0IHRoYXQgYW55b25lIGNvdWxkIGhvcGXCoGZvci48L2xpPjxsaT48c3Ryb25nPkFjY2VwdCB0aGUgc2NhcnMgeW91IGNhcnJ5Ljwvc3Ryb25nPiBJ4oCZdmUgbGVhcm5lZCB0aGF0IHRyYXVtYSBkb2VzbuKAmXQgcmVhbGx5IGdvIGF3YXksIGJ1dCBpdCBjaGFuZ2VzIHNoYXBlcyBhbmQgZm9ybXMuIEkgc3RpbGwgZ2V0IHRyaWdnZXJlZCBzb21ldGltZXMsIHdoaWNoIGNhbiBiZSBhIHNoYXJwIHJlbWluZGVyIHRoYXQgSSB3aWxsIGNhcnJ5IHBhaW5mdWwgZXhwZXJpZW5jZXMgd2l0aCBtZSB3aGVyZXZlciBJIGdvLiBJ4oCZdmUgcmVhbGl6ZWQgdGhhdCB0aGlzIGlzIG9rLCBiZWNhdXNlIHRoZSBleHBlcmllbmNlIGFuZCB5b3VyIG1lbW9yeSBvZiBpdCBjaGFuZ2Ugb3ZlciB0aW1lLCBhbmQgdGhleSBtYWtlIHlvdSBtdWNoIHN0cm9uZ2VyIGF0IHRoZSBlbmQgb2YgdGhlwqBkYXkuPC9saT48bGk+PHN0cm9uZz5QYXkgaXQgZm9yd2FyZC48L3N0cm9uZz4gWW91IHdpbGwgbmV2ZXIgYmUgYWJsZSB0byByZXBheSBvdGhlcnMgZm9yIHRoZWlyIGtpbmRuZXNzLCBzdXBwb3J0LCBvciBmb3IgaGVscGluZyB5b3Ugd2hlbiB5b3UgcmVhbGx5IG5lZWRlZCBpdC4gQWxsIHlvdSBjYW4gZG8gaXMgcGF5IGl0IGZvcndhcmQgdG8gdGhlIG5leHTCoHBlcnNvbi48L2xpPjxsaT48c3Ryb25nPkdvIG9uIHNlbGYtZGF0ZXMuPC9zdHJvbmc+IFRoaXMgaXMgb25lIG9mIG15IGZhdm9yaXRlIHJpdHVhbHMsIGFuZCBJIGZpcm1seSBiZWxpZXZlIHRoYXQgZXZlcnlvbmUgc2hvdWxkIGxlYXJuIHRvIHNwZW5kIHRpbWUgd2l0aCB0aGVtc2VsdmVzLiBJIGxvdmUgdG8gZ28gdG8gZWFybHkgU3VuZGF5IG1vcm5pbmcgbW92aWVzIHdoZW4gbm8gb25lIGVsc2UgaXMgYXJvdW5kLiBJIHRoaW5rIHRoYXQgdGhpcyBwcmFjdGljZSBtYWtlcyB5b3UgbW9yZSBjb25maWRlbnQgYW5kIHNlbGYtYXdhcmUuPC9saT48bGk+PHN0cm9uZz5Vc2UgYSBjYWxlbmRhci48L3N0cm9uZz4gTXkgY2xvc2UgZnJpZW5kcyBrbm93IHRoYXQgSSBzd2VhciBieSBhIGNhbGVuZGFyLiBJdOKAmXMgdGhlIG9ubHkgd2F5IHRoYXQgSSBjYW4gbWFuYWdlIG9yZGVyIGluIG15IGxpZmUgd2l0aG91dCBnZXR0aW5nIG92ZXJ3aGVsbWVkLjwvbGk+PGxpPjxzdHJvbmc+TmV2ZXIgY29tcGFyZSB5b3Vyc2VsZiB0byBvdGhlcnMuPC9zdHJvbmc+IFRoaXMgaXMgc29tZXRoaW5nIEnigJl2ZSByZWFsbHkgc3RhcnRlZCB0byBtYXN0ZXIgaW4gdGhlIHBhc3QgZmV3IHllYXJzLCBidXQgdW50aWwgdGhlbiwgSSByZWFsbHkgc3RydWdnbGVkIHdpdGggaXQuIEFsbCBvZiB1cyBhcmUgd2Fsa2luZyBkaWZmZXJlbnQgcGF0aHMsIHNvIGl04oCZcyBzaWxseSB0byBsb29rIGF0IHNvbWVvbmUgZWxzZSBhbmQgdGhlaXIgcGF0aCBhbmQgd29uZGVyIHdoeSB5b3XigJlyZSBub3QgZG9pbmcgdGhlIHNhbWUgdGhpbmdzIHRoYXQgdGhleSBhcmUhIEFub3RoZXIgdGhpbmcgd29ydGggbWVudGlvbmluZyBpcyB0aGF0IGV2ZW4gaWYgPGVtPnlvdTwvZW0+IGRvbuKAmXQgY29tcGFyZSB5b3Vyc2VsZiB0byBvdGhlcnMsIG90aGVyIHBlb3BsZSB3aWxsIHByb2JhYmx5IHN0aWxsIGNvbXBhcmUgdGhlbXNlbHZlcyB0byB5b3UuIEFuZCB0aGF04oCZcyBzb21ldGhpbmcgeW91IGp1c3QgY2Fu4oCZdCBjb250cm9sLCBzbyBzdGF5IGZvY3VzZWQgb24gdGhlIHBhdGggdGhhdCB5b3XigJlyZSB3YWxraW5nIG9uLCBldmVuIGlmIHRoZXnigJlyZSBsb29raW5nIG92ZXIgYXTCoHlvdS48L2xpPjxsaT48c3Ryb25nPkJlIGtpbmQgdG8geW91cnNlbGYuIDwvc3Ryb25nPllvdSBhcmUgeW91ciBoYXJzaGVzdCBjcml0aWMuIEkgdXNlZCB0byBiZSBzbyB1bmtpbmQgdG8gbXlzZWxmIGFuZCBwdXQgbXlzZWxmIHRocm91Z2ggdGhlIHdyaW5nZXIgYWJvdXQgbXkgd2VpZ2h0LCBteSBib2R5LCBteSBhY2NvbXBsaXNobWVudHMsIGFuZCBteSBmYWlsdXJlcy4gQnV0IHRoZSB3YXkgdGhhdCB5b3UgdGFsayBhYm91dCB5b3Vyc2VsZiBpcyBob3cgeW91IHNob3cgYW5kIHRlYWNoIG90aGVyIHBlb3BsZSBob3cgdG8gdGFsayB0byB5b3UuIElmIHlvdSBhcmUgc2VsZi1kZXByZWNhdGluZyBvciB1bmtpbmQgdG8geW91cnNlbGYsIHRoZW4gb3RoZXIgcGVvcGxlIHdpbGwgbGVhcm4gdG8gcHV0IHlvdSBkb3duIGFuZCBiZSB1bmtpbmQgdG8geW91LMKgdG9vLjwvbGk+PGxpPjxzdHJvbmc+VGFrZSByaXNrcy48L3N0cm9uZz4gSWYgeW914oCZcmUgc2NhcmVkIG9mIHRyeWluZyBzb21ldGhpbmcsIHJlbWVtYmVyIHRoYXQgdGhlIHdvcnN0IHRoaW5nIHRoYXQgeW91IDxlbT50aGluazwvZW0+IHdpbGwgaGFwcGVuIGlzIHVzdWFsbHkgbmV2ZXIgdGhhdMKgYmFkLjwvbGk+PGxpPjxzdHJvbmc+RHJpbmsgbW9yZSB0ZWEuPC9zdHJvbmc+IEhlcmJhbCB0ZWFzIGJlZm9yZSBiZWQgYXJlIHNvIGNhbG1pbmcgYW5kIGNsZWFuc2luZyEgSeKAmXZlIGFsc28gc3RhcnRlZCBzd2l0Y2hpbmcgb3V0IG15IGFmdGVybm9vbiBjb2ZmZWUgd2l0aCB0ZWEgaW5zdGVhZCwgYW5kIG15IHNsZWVwIGlzIHNvIG11Y2ggYmV0dGVyIGFuZCBJIGFtIG11Y2ggbGVzcyBkZWh5ZHJhdGVkLjwvbGk+PGxpPjxzdHJvbmc+U2F5IOKAnEkgbG92ZSB5b3XigJ0gbW9yZS48L3N0cm9uZz4gTGlmZSBpcyBzaG9ydC4gRXZlbiBpZiB5b3Uga25vdyBpdCBjZXJlYnJhbGx5LCB0aGlzIHJlYWxpdHkgYmVjb21lcyBtb3JlIGFuZCBtb3JlIHJlYWwgYXMgeW91IGdldMKgb2xkZXIuPC9saT48bGk+PHN0cm9uZz5Eb27igJl0IHRha2UgdGhpbmdzIHBlcnNvbmFsbHkuPC9zdHJvbmc+IFBlb3BsZSBhcm91bmQgeW91IGNhbiBoYXZlIGJhZCBkYXlzLiBJ4oCZdmUgaGFkIHRvIGRlYWwgd2l0aCBibHVudCwgaGFyc2gsIGFuZCBpbnNlY3VyZSBjb3dvcmtlcnMgYW5kIGJvc3NlcywgYW5kIHF1aWNrbHkgcmVhbGl6ZWQgdGhhdCBpZiBJIHRvb2sgZXZlcnl0aGluZyB0aGF0IHRoZXkgc2FpZCB0byBtZSBwZXJzb25hbGx5LCBJ4oCZZCBiZSBjcnlpbmcgaW4gdGhlIG9mZmljZSBiYXRocm9vbSBldmVyeSBvdGhlciB3ZWVrICh3aGljaCBJIGRpZCBkbyBlYXJseSBvbikuIEnigJl2ZSBzaW5jZSBsZWFybmVkIHRvIGxldCB3aGF0IG90aGVycyBzYXkgYm91bmNlIG9mZiBtZSBhbmQgYmFjayB0byB0aGVtLiBBc3N1bWUgdGhhdCBwZW9wbGUgYXJlIGhhdmluZyBhIGJhZCBkYXkgYW5kLCBpZiBuZWNlc3NhcnksIHN0aWNrIHVwIGZvciB5b3Vyc2VsZiBhbmQgc3BlYWsgYmFjay4gQnV0IGRvbuKAmXQgY2FycnkgdGhlaXIgd29yZHMgYXJvdW5kIHdpdGggeW91IGZvciBob3VycyBvciB3ZWVrcyBvbiBlbmQ7IGl0IHdpbGwgZWF0IHlvdSBhbGl2ZSBhbmQgeW914oCZbGwgYmUgdGhlIG9uZSB0byBzdWZmZXIsIG5vdMKgdGhlbS48L2xpPjxsaT48c3Ryb25nPlRha2UgeW91ciBwYXJlbnRzIG91dCB0byBkaW5uZXIuPC9zdHJvbmc+IEFuZCBpZiB5b3UgY2Fu4oCZdCBhZmZvcmQgdG8sIGNvb2sgdGhlbSBhIG5pY2UgbWVhbCEgV2UgY2Fu4oCZdCBldmVyIHJlcGF5IHRoZSBwZW9wbGUgd2hvIGd1aWRlZCB1cyBlYXJseSBvbiBpbiBsaWZlLCBidXQgd2UgY2FuIGF0IGxlYXN0IHNob3cgdGhlbSBvdXIgYXBwcmVjaWF0aW9uLjwvbGk+PGxpPjxzdHJvbmc+SGF2ZSBib3VuZGFyaWVzIChhbmQgc3RpY2sgdG8gdGhlbSkuIDwvc3Ryb25nPlRoaXMgaXMgaW1wb3J0YW50IHdoZW4geW914oCZcmUgd29ya2luZyB3aXRoIG90aGVyIHBlb3BsZSwgYnV0IGFsc28gd2hlbiBpdCBjb21lcyB0byBkb2luZyB0aGluZ3Mgb24geW91ciBvd24uIEkgaGF2ZSBydWxlcyBhYm91dCBob3cgSSB3YW50IHRvIGNvbmR1Y3QgbXlzZWxmIG9yIGhhbmRsZSBzaXR1YXRpb25zLCBhbmQgSeKAmW0gbGVhcm5pbmcgaG93IHRvIGRyYXcgbGluZXMgaW4gdGhlIHNhbmQgYW5kIG5vdCBjcm9zcyB0aG9zZSBib3VuZGFyaWVzIHdpdGggbXlzZWxmLCBvciB3aXRowqBvdGhlcnMuPC9saT48bGk+PHN0cm9uZz5Qcmlvcml0aXplIHlvdXIgZmluYW5jaWFsIGhlYWx0aC4gPC9zdHJvbmc+SeKAmW0gcmVhbGx5IHByb3VkIG9mIGhvdyBtdWNoIEnigJl2ZSBsZWFybmVkIGFib3V0IGZpbmFuY2lhbCBzdGFiaWxpdHkgYW5kIGhlYWx0aCBpbiB0aGUgbGFzdCBkZWNhZGUsIGFuZCBJIGhvbmVzdGx5IHRoaW5rIHRoYXQgdGFraW5nIGNvbnRyb2wgb2YgdGhhdCBhc3BlY3Qgb2YgeW91ciBsaWZlIGlzIGluY3JlZGlibHkgZW1wb3dlcmluZy4gWW91IHNob3VsZCBrbm93IHdoZXJlIHlvdXIgbW9uZXkgaXMsIHdoZXJlIGl04oCZcyBnb2luZywgYW5kIGhvdyB3ZWxsIGl0cyBncm93aW5nLCBhY3RpdmVseSBhbmQgcGFzc2l2ZWx5LiBXZSBkb27igJl0IHRhbGsgYWJvdXQgZmluYW5jaWFsIHRoaW5ncyB0aGF0IG9mdGVuLCBidXQgSSB0aGluayB3ZSBzaG91bGQgYmUhIFRoZXJl4oCZcyBzbyBtdWNoIG1vcmUgSSBzdGlsbCBoYXZlIHRvIGxlYXJuIGJ1dCBJIGZlZWwgbGlrZSBJ4oCZdmUgb25seSBnb3R0ZW4gYmV0dGVyIGF0IGl0IG92ZXLCoHRpbWUuPC9saT48bGk+PHN0cm9uZz5WaXRhbWlucyBhcmUgZ29vZC48L3N0cm9uZz4gSSB0YWtlIGEgZmV3IGRpZmZlcmVudCB2aXRhbWlucywgaW5jbHVkaW5nIHByb2Jpb3RpY3MsIHZpdGFtaW4gZCwgYW5kIG1hZ25lc2l1bSEgSSBhbHdheXMgZmVlbCBzbyBtdWNoIGJldHRlciB3aGVuIEkgdGFrZSB0aGVtIGNvbnNpc3RlbnRseSwgYW5kIGZlZWwgbXVjaCB3b3JzZSB3aGVuIEkgc2tpcCBhIGZldyBkYXlzIGluIGHCoHJvdy48L2xpPjxsaT48c3Ryb25nPkxldCBvdGhlciBwZW9wbGUga25vdyB0aGF0IHlvdSBhcmUgdGhlcmUgZm9yIHRoZW0uPC9zdHJvbmc+IEkgaGF2ZSBhIGZldyBjbG9zZSBwZW9wbGUgaW4gbXkgbGlmZSB0aGF0IEkga25vdyBJIGNvdWxkIGNhbGwsIGRheSBvciBuaWdodCwgcmFpbiBvciBzaGluZS4gQW5kIGZvciBhIGhhbmRmdWwgb2YgcGVvcGxlLCBJIGFtIHByZXR0eSBzdXJlIHRoYXQgSSBhbSB0aGF0IHBlcnNvbiBmb3IgdGhlbS4gVGhlIG9ubHkgcmVhc29uIEkga25vdyB0aGF0IGlzIGJlY2F1c2UgdGhleSBoYXZlIHRvbGQgbWXigIrigJTigIphbmQgc2hvd24gbWUgd2l0aCB0aGVpciBhY3Rpb25z4oCK4oCU4oCKdGhhdCBJIGNhbiBhbHdheXMgZGVwZW5kIG9uIHRoZW0uIFRlbGwgdGhlIHBlb3BsZSB5b3UgY2FyZSBhYm91dCB0aGF0IHlvdSBhcmUgdGhlcmUgYmVjYXVzZSB5b3UgbmV2ZXIga25vdyB3aGVuIHlvdSBib3RoIG1pZ2h0IG5lZWQgZWFjaMKgb3RoZXIuPC9saT48bGk+PHN0cm9uZz5TcGVuZCB0aW1lIGF3YXkgZnJvbSB5b3VyIHBob25lLjwvc3Ryb25nPiBJIGRvbuKAmXQgY2hlY2sgbXkgcGhvbmUgZHVyaW5nIG1lYWx0aW1lcyBhbnltb3JlLCBhbmQgSSB0cnkgdG8gc3BlbmQgbG9uZyBzdHJldGNoZXMgb2YgdGltZSAob3IgYSBkYXkpIHdpdGhvdXQgbG9va2luZyBhdCBvciBjaGVja2luZyBpdC4gSSBhbHNvIHRoaW5rIGl0cyB2YWx1YWJsZSB0byB0YWtlIHRyaXBzIHRoYXQgZm9yY2UgeW91IHRvIGhhdmUgbm8gY2VsbCBzZXJ2aWNlIHNvIHRoYXQgeW91IGNhbiA8ZW0+dHJ1bHk8L2VtPiB1bnBsdWc7IEkgdHJ5IHRvIGRvIHRoaXMgb25jZSBhwqB5ZWFyLjwvbGk+PGxpPjxzdHJvbmc+RHJpbmsgbW9yZSB3YXRlci48L3N0cm9uZz4gSeKAmXZlIGhlYXJkIHBlb3BsZSBnaXZlIHRoaXMgYWR2aWNlIGFsbCB0aGUgdGltZSwgYnV0IEkgYWN0dWFsbHkgZmVlbCA8ZW0+c28gbXVjaCBiZXR0ZXIgPC9lbT53aGVuIEnigJltIHdlbGwgaHlkcmF0ZWQgKGVzcGVjaWFsbHkgaWYgSeKAmXZlIGJlZW4gZHJpbmtpbmcgZGVoeWRyYXRpbmcgdGhpbmdzIGxpa2UgYWxjb2hvbCBvciBjb2ZmZWUpLiBJIGRvbuKAmXQgdXN1YWxseSBkcmluayBlbm91Z2ggd2F0ZXIgd2hlbiBJ4oCZbSB0cmF2ZWxpbmcgdGhvdWdoLCBhbmQgSeKAmW0gdHJ5aW5nIHRvIGJlIGJldHRlciBhYm91dMKgdGhhdC48L2xpPjxsaT48c3Ryb25nPlRyeSBub3QgdG8gd2FzdGUgYW55dGhpbmcsIGFuZCB0cnkgdG8gcmV1c2UgZXZlcnl0aGluZy48L3N0cm9uZz4gSeKAmXZlIGxlYXJuZWQgc28gbXVjaCBhYm91dCB0aGlzIGZyb20gbXkgcGFydG5lci4gV2l0aCBhIGZldyByYXJlIGV4Y2VwdGlvbnMsIHdlIGVhdCBldmVyeXRoaW5nIHRoYXQgd2UgYnV5LCBjb21wb3N0IHdoYXQgd2UgZG9u4oCZdCwgYW5kIG1vc3RseSBvbmx5IGJ1eSB0aGluZ3MgdGhhdCBjYW4gYmUgcmV1c2VkIG9yIHJlc3BvbnNpYmx5IHJlY3ljbGVkLiBJIGtub3cgSSBjb3VsZCBzdGlsbCBkbyBtb3JlLCBidXQgaXQgZmVlbHMgZ29vZCB0byBiZSBoZWFkaW5nIGluIHRoZSByaWdodCBkaXJlY3Rpb24gd2hlbiBpdCBjb21lcyB0byBzdXN0YWluYWJpbGl0eS48L2xpPjxsaT48c3Ryb25nPlN0YWJsZSByZWxhdGlvbnNoaXBzIGFyZSBtb3JlIGRlcGVuZGFibGUgdGhhbiBwYXNzaW9uYXRlIG9uZXMuPC9zdHJvbmc+IEkgbGVhcm5lZCB0aGlzIHRoZSBoYXJkIHdheSwgYnV0IEnigJltIHJlYWxseSBnbGFkIHRoYXQgSSBkaWQuIEluIHRoZSBsb25nIHJ1biwgYSBwZXJzb24gdGhhdCB5b3UgY2FuIGNvbWUgaG9tZSB0bywgbGVhbiBvbiwgYW5kIGJ1aWxkIGEgc3Ryb25nIGZvdW5kYXRpb24gd2l0aCBpcyBtdWNoIGhlYWx0aGllciBhbmQgd2lsbCBtYWtlIHlvdSBtdWNoIGhhcHBpZXIgdGhhbiBvbmUgdGhhdCBpcyB2b2xhdGlsZSBlbW90aW9uYWwgcm9sbGVyY29hc3Rlci48L2xpPjxsaT48c3Ryb25nPkl04oCZcyBva2F5IHRvIGxldCBwZW9wbGUgZ28uIDwvc3Ryb25nPldoaWxlIEkgaGF2ZSBzb21lIHBlb3BsZSB3aG8gSSBrbm93IHdpbGwgYmUgaW4gbXkgbGlmZSBmb3IgYSBsb25nIHRpbWUsIG1vc3Qgb2YgbXkgZnJpZW5kc2hpcHMgaGF2ZSBxdWlldGx5IGZhZGVk4oCK4oCU4oCKYW5kIHRoYXTigJlzIG9rLiBQZW9wbGUgYXJlIGFsd2F5cyBjaGFuZ2luZywgYW5kIHdlIGNhbiBncm93IGluIGRpZmZlcmVudCBkaXJlY3Rpb25zLiBUaG9zZSByZWxhdGlvbnNoaXBzIGFyZSBpbmV2aXRhYmx5IGdvaW5nIHRvIGNoYW5nZSBhcyBhIHJlc3VsdCwgYW5kIGl04oCZcyB0b3RhbGx5wqBub3JtYWwuPC9saT48bGk+PHN0cm9uZz5OZXZlciBzYWNyaWZpY2UgeW91ciBjcmVhdGl2ZSB0aW1lIG9yIHNwYWNlLjwvc3Ryb25nPiBJZiB5b3UgYXJlIHNvbWVvbmUgd2hvIGlzIGFydGlzdGljIG9yIGNyZWF0aXZlLCBmaWd1cmUgb3V0IHdoYXQgeW91IG5lZWQgdG8gYmUgY3JlYXRpdmUgYW5kIG1ha2Ugc3VyZSB5b3Ugc2FjcmlmaWNlIHRoYXQgZm9yIGFueXRoaW5nIG9yIGFueW9uZS4gRm9yIG1lLCBJIG5lZWQgcXVpZXQsIHVuaW50ZXJydXB0ZWQgaG91cnMgaW4gdGhlIG1vcm5pbmcgdG8gd3JpdGUsIGFuZCBJIGRvbuKAmXQgbGV0IGFueXRoaW5nIGdldCBpbiB0aGUgd2F5IG9mIG1lIGZpbmRpbmcgdGhvc2UgaG91cnMgb2YgY3JlYXRpdml0eS48L2xpPjxsaT48c3Ryb25nPkludmVzdCBpbiB5b3VyIGhlYWx0aC48L3N0cm9uZz4gVGFrZSBjYXJlIG9mIHlvdXJzZWxmIGVhcmx5IG9uLCBiZWZvcmUgeW91ciBkb2N0b3IgdGVsbHMgeW91IHRoYXQgeW91IHNob3VsZDsgZWF0IHdlbGwsIGV4ZXJjaXNlIG9mdGVuLCBhbmQgbWl0aWdhdGUgdGhlIHN0cmVzcyBhbmQgYW54aWV0eSBhcm91bmQgeW91LiBUaGUgb25lIHRoaW5nIHRoYXQgbm9uZSBvZiB1cyBjYW4gZWFybiBvciBidXkgb3Igd2luIG91ciB3YXkgaW50byBpcyBtb3JlwqB0aW1lLjwvbGk+PGxpPjxzdHJvbmc+VGFrZSB0aGluZ3MgYXMgdGhleSBjb21lLjwvc3Ryb25nPiBJdOKAmXMgcmVhbGx5IGVhc3kgdG8gZ2V0IGNhdWdodCB1cCBpbiBwbGFubmluZyBmb3Igb3IgZGF5ZHJlYW1pbmcgYWJvdXQgdGhlIGZ1dHVyZS4gRm9yIG1lLCBzb21ldGltZXMgdGhhdCB0cmFuc2xhdGVzIGludG8gcGFuaWNraW5nIG9yIGhhdmluZyBhbnhpZXR5IGFib3V0IGEgZnV0dXJlIHRoYXQgaGFzbuKAmXQgaGFwcGVuZWQgeWV04oCK4oCU4oCKYSBjb21wbGV0ZSBoeXBvdGhldGljYWwuIEkgaGF2ZSB0byByZW1pbmQgbXlzZWxmIHRoYXQgc28gbXVjaCBvZiB0aGUgd29ybGQgaXMgbm90IGluIG15IGNvbnRyb2w7IGluIGZhY3QgYWxsIG9mIGl0IGlzIG91dCBvZiBteSBjb250cm9sIGV4Y2VwdCBmb3IgbXlzZWxmLiBBbGwgYW55IG9mIHVzIGNhbiBkbyBpcyBjb250cm9sIG91ciBvd24gYWN0aW9ucyBpbiB0aGUgbW9tZW50IGFuZCBvdXIgb3duIHBlcnNwZWN0aXZlIG9uIHRoaW5ncy4gSeKAmW0gbGVhcm5pbmcgZm9jdXMgb24gd2hhdCBpcyBoYXBwZW5pbmcgPGVtPm5vdzwvZW0+IGFuZCB0ZWFjaGluZyBteXNlbGYgdG8gYnJpbmcgbXkgbWluZCBiYWNrIHRvIHRoZSBwcmVzZW50LiBBbmQgSeKAmW0gdHJ5aW5nIHRvIGhhdmUgZmFpdGggdGhhdCwgd2hlbiBhbnkgc2l0dWF0aW9uIGFyaXNlcywgSeKAmWxsIGhhdmUgdGhlIGNvbmZpZGVuY2UgYW5kIHRoZSBhYmlsaXR5IHRvIGNyb3NzIHRoYXQgYnJpZGdlIHdoZW4gSSBjb21lIHRvwqBpdC48L2xpPjwvb2w+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSo1SElBd1lvUDljTS1MNmxHMmFmM2p3LmpwZWciIC8+PC9maWd1cmU+PGltZyBzcmM9Imh0dHBzOi8vbWVkaXVtLmNvbS9fL3N0YXQ/ZXZlbnQ9cG9zdC5jbGllbnRWaWV3ZWQmcmVmZXJyZXJTb3VyY2U9ZnVsbF9yc3MmcG9zdElkPWRhMmQyZTIxYTZiMiIgd2lkdGg9IjEiIGhlaWdodD0iMSIgYWx0PSIiPl1dPjwvY29udGVudDplbmNvZGVkPgogICAgICAgIDwvaXRlbT4KICAgICAgICA8aXRlbT4KICAgICAgICAgICAgPHRpdGxlPjwhW0NEQVRBW0xvZ2ljYWwgVGltZSBhbmQgTGFtcG9ydCBDbG9ja3MgKFBhcnQgMildXT48L3RpdGxlPgogICAgICAgICAgICA8bGluaz5odHRwczovL21lZGl1bS5jb20vYmFzZWRzL2xvZ2ljYWwtdGltZS1hbmQtbGFtcG9ydC1jbG9ja3MtcGFydC0yLTI3MmMwOTdkY2RkYT9zb3VyY2U9cnNzLThmNTU5OTNjOTczZS0tLS0tLTI8L2xpbms+CiAgICAgICAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0cHM6Ly9tZWRpdW0uY29tL3AvMjcyYzA5N2RjZGRhPC9ndWlkPgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbY29kZV1dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtjb21wdXRlci1zY2llbmNlXV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW3NvZnR3YXJlLWRldmVsb3BtZW50XV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW2Rpc3RyaWJ1dGVkLXN5c3RlbXNdXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbcHJvZ3JhbW1pbmddXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8ZGM6Y3JlYXRvcj48IVtDREFUQVtWYWlkZWhpIEpvc2hpXV0+PC9kYzpjcmVhdG9yPgogICAgICAgICAgICA8cHViRGF0ZT5UaHUsIDA1IERlYyAyMDE5IDA1OjE2OjM1IEdNVDwvcHViRGF0ZT4KICAgICAgICAgICAgPGF0b206dXBkYXRlZD4yMDE5LTEyLTA1VDA1OjE2OjM1Ljg1NFo8L2F0b206dXBkYXRlZD4KICAgICAgICAgICAgPGNvbnRlbnQ6ZW5jb2RlZD48IVtDREFUQVs8ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKkdLSWk0cnROSkZ0VGZnMFZ2M1JuZ0EuanBlZyIgLz48ZmlnY2FwdGlvbj5Mb2dpY2FsIHRpbWUgYW5kIExhbXBvcnQgY2xvY2tzIChwYXJ0wqAyKTwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5UaHJvdWdob3V0IHRoZSBjb3Vyc2Ugb2YgdGhpcyBzZXJpZXMsIHdl4oCZdmUgYmVlbiBsZWFybmluZyB0aW1lIGFuZCBhZ2FpbiB0aGF0IGRpc3RyaWJ1dGVkIHN5c3RlbXMgYXJlIDxlbT5oYXJkPC9lbT4uIFdoZW4gZmFjZWQgd2l0aCBoYXJkIHByb2JsZW1zLCB3aGF04oCZcyBvbmUgZG8gdG8/IFdlbGwsIGFzIHdlIGxlYXJuZWQgaW4gPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9sb2dpY2FsLXRpbWUtYW5kLWxhbXBvcnQtY2xvY2tzLXBhcnQtMS1kMDMxN2U0MDcxMTIiPnBhcnQgb25lPC9hPiBvZiB0aGlzIHBvc3QsIHNvbWV0aW1lcyB0aGUgYW5zd2VyIGlzIHRvIHN0cmlwIGF3YXkgdGhlIGNvbXBsaWNhdGVkIHBhcnRzIG9mIGEgcHJvYmxlbSBhbmQgdHJ5IHRvIG1ha2Ugc2Vuc2Ugb2YgdGhpbmdzIHNpbXBseSzCoGluc3RlYWQuPC9wPjxwPlRoaXMgaXMgZXhhY3RseSB3aGF0IExlc2xpZSBMYW1wb3J0IGRpZCB3aGVuIGhlIGFwcHJvYWNoZWQgdGhlIHByb2JsZW0gb2Ygc3luY2hyb25pemluZyB0aW1lIGFjcm9zcyBkaWZmZXJlbnQgcHJvY2Vzc2VzIGFuZCBjbG9ja3MuIEFzIHdlIGxlYXJuZWQgaW4gPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9sb2dpY2FsLXRpbWUtYW5kLWxhbXBvcnQtY2xvY2tzLXBhcnQtMS1kMDMxN2U0MDcxMTIiPnBhcnQgb25lPC9hPiwgaGUgd3JvdGUgYSBmYW1vdXMgcGFwZXIgY2FsbGVkIDxhIGhyZWY9Imh0dHBzOi8vbGFtcG9ydC5henVyZXdlYnNpdGVzLm5ldC9wdWJzL3RpbWUtY2xvY2tzLnBkZiI+4oCcVGltZSwgQ2xvY2tzLCBhbmQgdGhlIE9yZGVyaW5nIG9mIEV2ZW50cyBpbiBhIERpc3RyaWJ1dGVkIFN5c3RlbeKAnTwvYT4sIHdoaWNoIGRldGFpbGVkIHNvbWV0aGluZyBjYWxsZWQgYSA8ZW0+bG9naWNhbCBjbG9jazwvZW0+LCBvciBhIGtpbmQgb2YgY291bnRlciB0byBoZWxwIGtlZXAgdHJhY2sgb2YgZXZlbnRzIGluIGEgc3lzdGVtLiBUaGVzZSBjbG9jayBjb3VudGVycyB3ZXJlIExhbXBvcnTigJlzIGludmVudGlvbiAoYW5kIHNvbHV0aW9uISkgdG8gdGhlIHByb2JsZW0gb2Yga2VlcGluZyB0cmFjayBvZiBjYXVzYWxseS1vcmRlcmVkIGV2ZW50cyB3aXRoaW4gYSBzeXN0ZW0uIEJ5IHVzaW5nIGEgbG9naWNhbCBjbG9jaywgd2UgY2FuIG1vcmUgZWFzaWx5IGNyZWF0ZSBhIGNoYWluIG9mIGV2ZW50cyBiZXR3ZWVuIHByb2Nlc3NlcyBpbiBhwqBzeXN0ZW0uPC9wPjxwPkJ1dCBob3cgZG8gdGhlc2UgY2xvY2tzIGFjdHVhbGx5IHdvcms/IEFuZCBob3cgZG9lcyBhIGNsb2NrIGFjdHVhbGx5IGZpZ3VyZSBvdXQgdGhlIHRpbWUgb2YgZXZlbnRz4oCK4oCU4oCKZXNwZWNpYWxseSB3aGVuIHRoZXJlIGFyZSBldmVudHMgaGFwcGVuaW5nIGFsbCBvdmVyIHRoZSBzeXN0ZW0/IEl04oCZcyB0aW1lIHRvIGZpbmFsbHkgZmluZMKgb3V0LjwvcD48aDM+RnJvbSBjbG9jayB0byB0aW1lc3RhbXA8L2gzPjxwPkFzIHdlIGFscmVhZHkga25vdywgbG9naWNhbCBjbG9ja3MsIGFsc28gc29tZXRpbWVzIGNhbGxlZCA8c3Ryb25nPjxlbT5MYW1wb3J0IHRpbWVzdGFtcHM8L2VtPjwvc3Ryb25nPiwgYXJlIGNvdW50ZXJzLiBCdXQgaG93IGRvIHRob3NlIGNvdW50ZXJzIHdvcmsgdW5kZXIgdGhlIGhvb2Q/IFRoZSBhbnN3ZXIgbWF5IGJlIHN1cnByaXNpbmdseSBzaW1wbGU6IHRoZSBjbG9ja3MgYXJlIGZ1bmN0aW9ucywgYW5kIGl0cyB0aGUgZnVuY3Rpb24gdGhhdCBkb2VzIHRoZSB3b3JrIG9mIOKAnGNvdW50aW5n4oCdIGZvcsKgdXMhPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqRG1lWjdDVUZrczRMcTVoN0JCYzFPQS5qcGVnIiAvPjxmaWdjYXB0aW9uPkhvdyBzaG91bGQgd2UgdGhpbmsgb2YgbG9naWNhbMKgY2xvY2tzPzwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5XZSBjYW4gdGhpbmsgb2YgbG9naWNhbCBjbG9ja3MgYXMgPHN0cm9uZz48ZW0+ZnVuY3Rpb25zPC9lbT48L3N0cm9uZz4sIHdoaWNoIHRha2UgaW4gYW4gZXZlbnQgYXMgdGhlaXIgaW5wdXQsIGFuZCByZXR1cm5zIGEgPHN0cm9uZz48ZW0+dGltZXN0YW1wPC9lbT48L3N0cm9uZz4sIHdoaWNoIGFjdHMgYXMgdGhlIOKAnGNvdW50ZXLigJ0uIEVhY2ggbm9kZeKAiuKAlOKAindoaWNoIGlzIG9mdGVuIGp1c3QgYSBwcm9jZXNz4oCK4oCU4oCKaW4gYSBkaXN0cmlidXRlZCBzeXN0ZW0gaGFzIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvdGlja2luZy1jbG9ja3MtaW4tYS1kaXN0cmlidXRlZC1zeXN0ZW0tZWYyYWE0ZGYwN2EzIj5pdHMgb3duIGxvY2FsIGNsb2NrPC9hPiwgYW5kIGVhY2ggcHJvY2VzcyBuZWVkcyB0byBoYXZlIGl0cyBvd24gbG9naWNhbMKgY2xvY2suPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqNkFPUENNMDRzWGptMzEyMFo1a0kzUS5qcGVnIiAvPjxmaWdjYXB0aW9uPlBzZXVkby1jb2RpbmcgYSBsb2dpY2FsIGNsb2NrIGZ1bmN0aW9uLjwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5JZiB3ZSBpbWFnaW5lIHRoZSBsb2dpY2FsIGNsb2NrIGFzIGEgZnVuY3Rpb24gdGhhdCB3ZSBtaWdodCBpbXBsZW1lbnQsIHdlIGNhbiB0aGluayB0aHJvdWdoIGhvdyBpdCB3b3Jrcy4gSWYgd2Ugd2VyZSB0byBwc2V1ZG8tY29kZSB0aGF0IGZ1bmN0aW9uLCB3ZSBjb3VsZCBiZSBzdXJlIHRoYXQgaXQgd291bGQgdGFrZSBhbiBldmVudCBhcyBpdHMgYXJndW1lbnQuIFdlIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvbG9naWNhbC10aW1lLWFuZC1sYW1wb3J0LWNsb2Nrcy1wYXJ0LTEtZDAzMTdlNDA3MTEyIj53aWxsIHJlY2FsbDwvYT4gdGhhdCBhbiBldmVudCBjYW4gYmUgc29tZXRoaW5nIHRoYXQgb2NjdXJzIHdpdGhpbiBhIHByb2Nlc3MsIGEgc2VuZCBldmVudCB0aGF0IG1hcmtzIHRoZSBwcm9jZXNzIHNlbmRpbmcgYSBtZXNzYWdlIGVsc2V3aGVyZSwgb3IgYSByZWNlaXZlIGV2ZW50IHRoYXQgbWFya3MgdGhlIHByb2Nlc3MgcmVjZWl2aW5nIGFuIGV2ZW50IGZyb20gZWxzZXdoZXJlLiBBIGxvZ2ljYWxDbG9jayBmdW5jdGlvbiBzaG91bGQgYmUgYWJsZSB0byB0YWtlIGluIGFueSBvZiB0aGVzZSB0aHJlZSB0eXBlcyBvZsKgZXZlbnRzLjwvcD48cD5PbmNlIHRoZSBsb2dpY2FsQ2xvY2sgZnVuY3Rpb24gaGFzIGFuIGV2ZW50LCBpdCBsb29rcyBhdCB0aGUgdGltZSBvbiB0aGF0IGV2ZW50LCBhbmQgY29tcGFyZXMgaXQgdG8gdGhlIHRpbWUgb24gdGhlIGNsb2Nr4oCZcyBwcm9jZXNzLiBPbmNlIGl0IGNvbXBhcmVzIHRoZSB0d28sIGl0IGNob29zZXMgdGhlIGxhcmdlciBvZiB0aGUgb3B0aW9ucywgYW5kIGluY3JlbWVudHMgaXQgYXJiaXRyYXJpbHkuIFRoZSBpbmNyZW1lbnQgc3RlcCBpcyBpbXBvcnRhbnQsIGJlY2F1c2Ugd2l0aCBsb2dpY2FsIGNsb2NrcywgdGltZSBjb250aW51ZXMgdG8gbWFyY2ggZm9yd2FyZCwgYW5kIHRoZSBpbmNyZW1lbnQgc3RlcCBpcyB3aGF0IGVuc3VyZXMgdGhhdCB0aGUgdGltZXN0YW1wIHJldHVybmVkIGJ5IHRoZSBmdW5jdGlvbiBpcyBhbHdheXMgbGFyZ2VyIGluIHZhbHVlIHRoYW4gdGhlIGV2ZW504oCZc8KgdGltZS48L3A+PHA+SWYgdGhpcyBzZWVtcyBjb25mdXNpbmcsIGZlYXIgbm90ISBXaGlsZSBwc2V1ZG8tY29kZSBjYW4gYmUgaGVscGZ1bCBzb21ldGltZXMsIGJ1dCBhbiBleGFtcGxlIGlzIGV2ZW4gYmV0dGVyLiBOb3cgdGhhdCB3ZSB1bmRlcnN0YW5kIHNvbWUgb2YgdGhlb3J5IGJlaGluZCBob3cgYSBsb2dpY2FsIGNsb2NrIG1pZ2h0IHdvcmssIGxldOKAmXMgdGFrZSBhIGRlZXBlciBsb29rIGF0IGhvdyB0aGUgY2xvY2sgYWxnb3JpdGhtIDxlbT5hY3R1YWxsecKgPC9lbT53b3Jrcy48L3A+PGgzPkxhbXBvcnTigJlzIGNsb2NrIGFsZ29yaXRobTwvaDM+PHA+SW4gbWFueSBjYXNlcywgTGFtcG9ydOKAmXMgYWxnb3JpdGhtIGZvciBkZXRlcm1pbmluZyB0aGUgdGltZSBvZiBhbiBldmVudCBjYW4gYmUgdmVyeSBzdHJhaWdodGZvcndhcmQuIElmIGFuIGV2ZW50IG9jY3VycyBvbiBhIHNpbmdsZSBwcm9jZXNzLCB0aGVuIHdlIGludHVpdGl2ZWx5IGNhbiBndWVzcyB0aGF0IHRoZSB0aW1lc3RhbXAgb2YgdGhlIGV2ZW50IHdpbGwgYmUgZ3JlYXRlciB0aGFuIHRoZSBldmVudCBiZWZvcmUgaXQsIGFuZCB0aGF0IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHRpbWVzdGFtcHMgb2YgdGhlIHR3byBldmVudHMgb24gdGhlIDxlbT5zYW1lPC9lbT4gcHJvY2VzcyB3aWxsIGRlcGVuZCBvbmx5IG9uIGhvdyBtdWNoIHRoZSBjbG9jayBpbmNyZW1lbnRzIGJ5IChyZW1lbWJlciwgdGhhdCBpbmNyZW1lbnRhdGlvbiBjYW4gYmUgdG90YWxseSBhcmJpdHJhcnkhKS48L3A+PHA+SG93ZXZlciwgdGhpbmdzIGFyZW7igJl0IHNvIHNpbXBsZSB3aGVuIGRlYWxpbmcgd2l0aCBzZW5kIGFuZCByZWNlaXZlIGV2ZW50cywgd2hpY2ggYXJlIHNpZ25hbHMgdGhhdCB0d28gcHJvY2Vzc2VzIGFyZSBwYXNzaW5nIG1lc3NhZ2VzIGJhY2sgYW5kIGZvcnRoLiBDb25zaWRlciB0aGUgaWxsdXN0cmF0aW9uIHNob3duIGhlcmUsIHdoZXJlIHdlIGhhdmUgdHdvIHByb2Nlc3NlcywgUCBhbmQgUS4gUHJvY2VzcyBQIGhhcyBhbiBldmVudCBvbiB0aGUgcHJvY2VzcyA8ZW0+aXRzZWxmPC9lbT46IFAxLiBUaGUgdGltZSBhdCBQMSBpcyAyLiBQcm9jZXNzIFEgYWxzbyBoYXMgYW4gZXZlbnQgb2YgaXRzIG93biwgUTEsIHdoaWNoIGhhcyBhIHRpbWUgb2YgMi4gVGhlIG5leHQgZXZlbnQgb24gcHJvY2VzcyBRIGlzIFEyLCB3aGljaCBpcyBhIHNlbmQgZXZlbnQgYW5kIG1hcmtzIGEgbWVzc2FnZSBiZWluZyBzZW50IGZyb20gcHJvY2VzcyBRIHRvIHByb2Nlc3PCoFAuPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqS0ZMeGl0aVJhZVI1QkZ4OHBfT1FRQS5qcGVnIiAvPjxmaWdjYXB0aW9uPkhvdyBkbyB3ZSBkZXRlcm1pbmUgdGhlIHRpbWUgZm9yIGFuIGluY29taW5nwqBldmVudD88L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+U28gd2hhdCBoYXBwZW5zIHdoZW4gdGhlIHNlbmQgZXZlbnQgZnJvbSBwcm9jZXNzIFEsIG9yIFEyLCBzZW5kcyBpdHMgbWVzc2FnZSBvdmVyIHRvIHByb2Nlc3MgUD8gV2VsbCwgZm9yIG9uZSB0aGluZywgd2hlbiBwcm9jZXNzIFEgc2VuZHMgaXRzIG1lc3NhZ2UgdG8gcHJvY2VzcyBQLCBpdCBhbHNvIHNlbmRzIHRoZSB0aW1lIGF0IHRoYXQgcGFydGljdWxhciBtb21lbnQgYWxvbmcgd2l0aCBpdHMgbWVzc2FnZS4gSW4gdGhlIGNhc2Ugb2YgdGhpcyBleGFtcGxlLCB0aGUgdGltZSBhdCBRMiB3YXMgNCwgc28gdGhlIG1lc3NhZ2Ugc2VuZHMgdGltZSA9IDQsIGFzIHBhcnQgb2YgaXRzIG1lc3NhZ2XCoGRhdGEuPC9wPjxwPk9uY2UgcHJvY2VzcyBQIHJlY2VpdmVzIHRoYXQgbWVzc2FnZSwgaXQgbWFya3MgaXQgd2l0aCBhIHJlY2VpdmUgZXZlbnQsIG9yIFAyLiBUaGVuLCBpdHMgbG9naWNhbCBjbG9jayBsb29rcyBhdCB0aGUgaW5jb21pbmcgdGltZSBvbiB0aGUgZXZlbnQsIGFuZCBjb21wYXJlcyBpdCB0byB0aGUgY3VycmVudGx5LWtub3duIHRpbWUgb24gaXRzIG93biBwcm9jZXNzLCBwcm9jZXNzIFAuIFdoZW4gaXQgZG9lcyB0aGlzIGNvbXBhcmlzb24sIGl0IGNob29zZXMgdGhlIGxhcmdlciBvZiB0aGUgdHdvIHRpbWVzdGFtcHMsIGFuZCBpbmNyZW1lbnRzIGl0IGFyYml0cmFyaWx5LjwvcD48cD5Qcm9jZXNzIFAmIzM5O3MgY2xvY2sgc2VlcyB0aGF0IGl0cyBjdXJyZW50bHkta25vd24gdGltZSBpcyAyLCB3aGlsZSB0aGUgdGltZSBvbiB0aGUgaW5jb21pbmcgZXZlbnQgaXMgNC4gVGhlIGNsb2NrIGNob29zZXMgdGhlIGxhcmdlciB0aW1lIGJldHdlZW4gdGhlIHR3byB0aW1lc3RhbXBzICg0KSwgaW5jcmVtZW50cyBpdCwgYW5kIGFzc2lnbnMgdGhlIG5ldyB0aW1lc3RhbXAgdG8gdGhlIHJlY2VpdmUgZXZlbnQsIFAyLiBJbiBtb3JlIGNvbmNyZXRlIHRlcm1zLCB3ZSBjYW4gc2F5IHRoYXQgdGhlIGNsb2NrIHVzZXMgYW4gYWxnb3JpdGhtIHRvIGRvIHRoaXMsIHdoaWNoIGNhbiBlZmZlY3RpdmVseSBiZSBzdW1tYXJpemVkIGFzOiBtYXgocHJvY2Vzc1QsIGluY29taW5nVCkgK8KgYW1vdW50LjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKnRWSl9qbVZzYlNEV1RSS19lQXJ2eGcuanBlZyIgLz48ZmlnY2FwdGlvbj5MYW1wb3J04oCZcyBhbGdvcml0aG0gZm9yIGRldGVybWluaW5nIGEgdGltZXN0YW1wLjwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5JbiB0aGlzIGZvcm11bGEsIHByb2Nlc3NUIGlzIHRoZSBjdXJyZW50bHkta25vd24gdGltZSBvbiB0aGUgY3VycmVudCBwcm9jZXNzLCB3aGlsZSBpbmNvbWluZ1QgaXMgdGhlIHRpbWUgb24gdGhlIGV2ZW50IHRoYXQgdGhlIHByb2Nlc3MgaXMgdHJ5aW5nIHRvIHJlY29uY2lsZS4gVGhlIGNsb2NrIHRha2VzIHRoZSBtYXgoKSBvZiB0aGF0LCBhbmQgaW5jcmVtZW50cyBpdCBieSB3aGF0ZXZlciBhcmJpdHJhcnkgYW1vdW50IHRoZSBjbG9jayBpcyB1c2luZyB0byBhY3QgYXMgYSBjb3VudGVyIGFuZCBlbnN1cmUgdGhhdCB0aGUgYWxsIHRpbWVzdGFtcHMgY29udGludWUgdG8gaW5jcmVhc2UgaW7CoHZhbHVlLjwvcD48cD5JbiBvdXIgZXhhbXBsZSBzeXN0ZW0sIHdlIGNhbiBkZXRlcm1pbmUgdGhhdCBQMuKAmXMgdGltZXN0YW1wIHdpbGwgYmUgdGhlIHJlc3VsdCBvZiBtYXgoMiwgNCkgKyBhbW91bnQ7IGZvciBzaW1wbGljaXR54oCZcyBzYWtlLCB3ZSBjYW4gZGVjaWRlIHRvIG1ha2UgYW1vdW50IGVxdWFsIHRvIDEsIHNvIHRoZSB0aW1lIGF0IFAyIGlzIDQgKyAxID3CoDUuPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqUFRIakw0d1ozdk5FSTFrV0QxZWJOUS5qcGVnIiAvPjxmaWdjYXB0aW9uPlRoZSByZXN1bHQgb2YgTGFtcG9ydOKAmXMgYWxnb3JpdGhtLCBpbsKgYWN0aW9uITwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5Bd2Vzb21lISBPdXIgbG9naWNhbCBjbG9jayBpcyBhY3R1YWxseSBkb2luZyBzb21lIGludGVyZXN0aW5nIGFuZCB1c2VmdWwgd29yayBmb3IgdXMsIGFuZCBpdOKAmXMgZG9pbmcgaXQgaW4gYSBwcmV0dHkgZWxlZ2FudCBhbmQgc2ltcGxlwqB3YXkuPC9wPjxoMz5DbG9ja3MgYW5kIGNhdXNhbGl0eTwvaDM+PHA+Tm93IHRoYXQgd2XigJl2ZSBzZWVuIGhvdyBjbG9ja3MgZGVyaXZlIGFuZCBkZWxpdmVyIGEgdGltZSB0byB1cywgbGV04oCZcyBpbnZlc3RpZ2F0ZSB3aGVuIHRoZXnigJlyZSB1c2VmdWwsIGFzIHdlbGwgYXMgaG93IHRoZXnigJlyZSBzb21ldGltZXMgbGltaXRpbmcuIEFzIHdlIGFscmVhZHkga25vdyBmcm9tIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvbG9naWNhbC10aW1lLWFuZC1sYW1wb3J0LWNsb2Nrcy1wYXJ0LTEtZDAzMTdlNDA3MTEyIj5wYXJ0IG9uZTwvYT4gb2YgdGhpcyBzZXJpZXMsIExhbXBvcnQgaW50cm9kdWNlZCB0aGUgY29uY2VwdCBvZiBoYXBwZW5zIGJlZm9yZSAodXNpbmcgdGhlIDxzdHJvbmc+4oaSPC9zdHJvbmc+IHNob3J0aGFuZCkgdG8gaW5kaWNhdGUgdGhhdCBvbmUgZXZlbnQgaGFwcGVucyBiZWZvcmUgYW5vdGhlciBpbiBhIHN5c3RlbS4gVW5kZXJzdGFuZGluZyB0aGUgY2hhaW4gb2YgZXZlbnRzIGluIGEgc3lzdGVtIGhlbHBzIHVzIGNhdXNhbGx5IG9yZGVyIHRoZW0gYW5kIGZpZ3VyZSBvdXQgaG93IG9uZSBldmVudCBjYXVzZXMgYW5vdGhlciB0b8KgaGFwcGVuLjwvcD48cD5Db252ZW5pZW50bHksIGxvZ2ljYWwgY2xvY2tzIG9iZXkgdGhlIHJ1bGVzIG9mIGNhdXNhbGl0eS4gVGhpcyBtZWFucyB0aGF0IGlmIHdlIGZpbmQgYSBjYXVzYWwsIGhhcHBlbnMgYmVmb3JlIHJlbGF0aW9uc2hpcCBpbiBhIHN5c3RlbSwgdGhlbiB0aGUgdGltZXN0YW1wcyBjb3JyZXNwb25kaW5nIHRvIHRoZXNlIHR3byBldmVudHMgc2hvdWxkIG9iZXkgdGhlIHJ1bGVzIG9mIGNhdXNhbGl0eS48L3A+PGJsb2NrcXVvdGU+SWYgZXZlbnQgYSDihpIgYiwgdGhlbiB0aGUgdGltZXN0YW1wIHJldHVybmVkIGJ5IGNsb2NrKGEpIHNob3VsZCBiZSBsZXNzIHRoYW4gKCZsdDspIHRoYXQgb2YgdGhlIHRpbWVzdGFtcCByZXR1cm5lZCBieSBjbG9jayhiKS48L2Jsb2NrcXVvdGU+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSoyNDNidTh5M0VUNjU3b3FjM2d4M2JnLmpwZWciIC8+PGZpZ2NhcHRpb24+TG9naWNhbCBjbG9ja3Mgc2hvdWxkIG9iZXkgY2F1c2FsaXR5IGZvciBjYXVzYWxseS1yZWxhdGVkIGV2ZW50cy48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+SWYgd2UgdGFrZSBhIGxvb2sgYXQgdGhlIGV4YW1wbGUgc2hvd24gaGVyZSwgd2XigJlsbCBzZWUgdGhhdCB3ZSBoYXZlIGEgc3lzdGVtIHdpdGggdGhyZWUgcHJvY2Vzc2VzLCBQLCBRLCBhbmQgUiwgd2l0aCBzb21lIGNsZWFyIGNhdXNhbCByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlIGV2ZW50cyBpbiB0aGXCoHN5c3RlbS48L3A+PHA+V2UgY2FuIHNlZSB0aGF0IGV2ZW50IFAxIOKGkiBRMiwgYmVjYXVzZSBldmVudCBQMSBpcyB0aGUgc2VuZCBldmVudCBvZiBRMiwgd2hpY2ggaXMgdGhlIHJlY2VpdmUgZXZlbnQsIGFuZCBvbmUgY2F1c2VzIHRoZSBvdGhlci4gT24gdGhlIG90aGVyIGhhbmQsIGV2ZW50IFEyIOKGkiBSMywgYXMgUTIgc2VuZHMgYSBtZXNzYWdlIHRvIFIzLCB3aGljaCBpcyBhIHJlY2VpdmUgZXZlbnQgaW4gYW5kIG9mIGl0c2VsZi4gU2ltaWxhcmx5LCB3ZSBjYW4gc2VlIHRoYXQgUTMg4oaSIFE0LCBhcyB0aGV5IGJvdGggb2NjdXIgb24gdGhlIHNhbWUgcHJvY2Vzcywgb25lIGFmdGVywqBhbm90aGVyLjwvcD48cD5JZiB3ZSBsb29rIGF0IHRoZXNlIHNhbWUgY2F1c2FsIHJlbGF0aW9uc2hpcHMsIGFuZCBjb21wYXJlIHRoZW0gd2l0aCB0aGVpciB0aW1lc3RhbXBzLCB3ZSBjYW4gc2VlIHRoYXQgdGhlIGNsb2NrIHRpbWVzIGZvciBlYWNoIGNhdXNhbCByZWxhdGlvbnNoaXAgb2JleXMgY2F1c2FsaXR5IGFzIHdlbGwuIEZvciB0aGUgcmVsYXRpb25zaGlwIG9mIFAxIOKGkiBRMiwgdGhlIGNsb2NrIHRpbWUgZm9yIFAxICZsdDsgUTIsIGFzIDEgJmx0OyAyLiBUaGUgc2FtZSBnb2VzIGZvciBRMiDihpIgUjMgKDIgJmx0OyAzKSBhbmQgUTMg4oaSIFE0ICgzICZsdDvCoDQpLjwvcD48cD5Ib3dldmVyLCB0aGUgc2FtZSBydWxlIHNhZGx5IGNhbm5vdCBiZSBzYWlkIG9mIGV2ZW50cyBpbiB0aGUgc3lzdGVtIHRoYXQgYXJlIDxlbT5ub3Q8L2VtPiBjYXVzYWxseS1yZWxhdGVkISBMZXTigJlzIHRha2UgYSBjbG9zZXIgbG9vayBhdCBzb21lIG9mIHRoZSA8ZW0+b3RoZXI8L2VtPiBldmVudHMgaW4gdGhlIHNhbWUgc3lzdGVtIHdlIHNhdyBiZWZvcmUuIElmIHdlIGV4YW1pbmUgdGhlIGV2ZW50cyBSMSBhbmQgUDIsIHdl4oCZbGwgc2VlIHRoYXQgdGhlIHRpbWUgYXQgUjEgaXMgMSwgd2hpbGUgdGhlIHRpbWUgYXQgUDIgaXMgMi4gV2UgbWlnaHQgdGhpbmsgdGhhdCwgYmVjYXVzZSB0aGUgY2xvY2sgdGltZSBvZiAxIGlzIGxlc3MgdGhhbiAoJmx0OykgMiwgdGhhdCBSMSDihpIgUDIuIEJ1dCwgdW5mb3J0dW5hdGVseSwgdGhpcyBpcyBub3QgdGhlwqBjYXNlITwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKmg3Q1BldGVyMU1ISVVxWWFaMFdlNHcuanBlZyIgLz48ZmlnY2FwdGlvbj5XaGF0IGhhcHBlbnMgd2hlbiB0d28gZXZlbnRzIGFyZSBub3QgY2F1c2FsbHktcmVsYXRlZD88L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+SW4gZmFjdCwgaWYgd2UgbG9vayBhdCB0aGlzIHN5c3RlbSwgd2XigJlsbCBzZSB0aGF0IHRoZXJlIGlzIGFjdHVhbGx5IDxlbT5ubyBjYXVzYWwgcGF0aDwvZW0+IGJldHdlZW4gUjEgYW5kIFAyLiBUaGVzZSBhcmUgY29uY3VycmVudCBldmVudHMhIDxzdHJvbmc+PGVtPkNvbmN1cnJlbnQgZXZlbnRzPC9lbT48L3N0cm9uZz4gZG8gbm90IGhhdmUgY2F1c2FsIHBhdGhzIGZyb20gb25lIHRvIGFub3RoZXIuIFRodXMsIGJlY2F1c2UgdGhlc2UgdHdvIGV2ZW50cyBhcmUgY29uY3VycmVudCwgaGVyZSBpcyBubyB3YXkgdG8gYmUgY2VydGFpbiB0aGF0IG9uZSBldmVudCBoYXBwZW5lZCBiZWZvcmUgdGhlIG90aGVyLiBXZSBjYW5ub3QgbG9vayBhdCB0aGVpciB0aW1lc3RhbXBzIGFuZCBndWFyYW50ZWUgdGhhdCB0aGV5IGFyZSBjYXVzYWxseS1yZWxhdGVkITwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKkxKUjEzRlJwSWl4SDhsTzM3S19USGcuanBlZyIgLz48ZmlnY2FwdGlvbj5UaGUgbGltaXRhdGlvbnMgb2YgY29uY3VycmVudCBldmVudHMgYW5kIGxvZ2ljYWzCoGNsb2Nrcy48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+SW4gbW9yZSBhYnN0cmFjdCB0ZXJtcywgd2UgY2FuIHRoaW5rIG9mIGl0IGxpa2UgdGhpczogaWYgZXZlbnQgYSBoYXBwZW5zIGJlZm9yZSBiLCB0aGVuIHdlIGNhbiBiZSBzdXJlIHRoYXQgdGhlIHRpbWVzdGFtcCBvZiBhIHdpbGwgYmUgbGVzcyB0aGFuIHRoZSB0aW1lc3RhbXAgb2YgYi4gQnV0IGp1c3QgYmVjYXVzZSBh4oCZcyB0aW1lc3RhbXAgaXMgbGVzcyB0aGFuIGIsIHdlIGRvbuKAmXQga25vdyA8ZW0+Zm9yIHN1cmU8L2VtPiB0aGF0IGEgaGFwcGVuZWQgYmVmb3JlIGIsIGJlY2F1c2UgdGhlIHR3byBldmVudHMgY291bGQgYWxzbyBiZSBoYXBwZW5pbmcgYXQgdGhlIHNhbWXCoHRpbWUhPC9wPjxwPkZvciB0d28gY29uY3VycmVudCBldmVudHMsIHdlIGNhbm5vdCBtYWtlIGEganVkZ2VtZW50IGNhbGwgYWJvdXQgdGhlIGhhcHBlbnMgYmVmb3JlIHJlbGF0aW9uc2hpcCBqdXN0IGJhc2VkIG9uIHRoZSBjbG9jayB0aW1lcyBvZiB0aGUgZXZlbnRzLiBUaGUgb25seSB0aGluZyB0aGF0IHdlIGNhbiByZWFsbHkgZ3VhcmFudGVlIGluIHN1Y2ggYSBjYXNlIHdvdWxkIGJlIHRoYXQgYiBkb2VzIDxlbT5ub3Q8L2VtPiBoYXBwZW4gYmVmb3JlwqBhLjwvcD48cD5UaGlzIGlzIG9uZSBvZiB0aGUgbGltaXRhdGlvbnMgb2YgbG9naWNhbCBjbG9ja3MuIEluZGVlZCwgTGFtcG9ydCBldmVuIGFja25vd2xlZGdlcyB0aGlzIGluIGhpcyBvd24gcGFwZXIsIGFuZCBzdWdnZXN0cyB1c2luZyDigJxhbnkgYXJiaXRyYXJ5IHRvdGFsIG9yZGVyaW5nIG9mIHRoZSBwcm9jZXNzZXPigJ0gaW4gYSBzeXN0ZW0gdG8gZGVjaWRlIGhvdyB0byBicmVhayB0aWVzIHdoZW4gdHdvIHRpbWVzdGFtcHMgY291bGQgdmVyeSB3ZWxsIGJlIGVxdWl2YWxlbnQuPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqZUg2M01Zb0N2VmktVU5USmdkLXdtQS5qcGVnIiAvPjxmaWdjYXB0aW9uPlRoZSB0bDtkciBvZiBMYW1wb3J0IHRpbWVzdGFtcHMvbG9naWNhbCBjbG9ja3MuPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPkxhbXBvcnQgY2xvY2tzIGFyZSBwcmV0dHkgYW1hemluZyBpbiB0aGVpciBzaW1wbGljaXR5LCBidXQgdGhleSBhcmUgYWRtaXR0ZWRseSBub3QgZm9vbHByb29mLiBXaGVuIGdpdmVuIGEgc2V0IG9mIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvb3JkZXJpbmctZGlzdHJpYnV0ZWQtZXZlbnRzLTI5YzFkZDlkMWVmZiI+cGFydGlhbGx5LW9yZGVyZWQ8L2E+IGV2ZW50cywgd2UgY2FuIGNyZWF0ZSBhIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvb3JkZXJpbmctZGlzdHJpYnV0ZWQtZXZlbnRzLTI5YzFkZDlkMWVmZiI+dG90YWwgb3JkZXJpbmc8L2E+IG91dCBvZiB0aGVtIHVzaW5nIHNpbXBsZSBjbG9jayBjb3VudGVycyBhbmQgY2FuIGJlIHN1cmUgdGhhdCB0aG9zZSBjbG9ja3MgYW5kIHRoZSB0aW1lc3RhbXBzIHRoZXkgcHJvdmlkZSB1cyB3aXRoIHdpbGwgYWx3YXlzIG9iZXkgY2F1c2FsaXR5LiBIb3dldmVyLCBMYW1wb3J0IGNsb2NrcyBkbyBub3QgaGVscCB1cyBvcmRlciB0aGUgY29uY3VycmVudCBldmVudHMgaW4gYSBzeXN0ZW0sIG9yIGZpbmQgYSBjYXVzYWwgcmVsYXRpb25zaGlwIGJldHdlZW7CoHRoZW0uPC9wPjxwPlRoZXJlIGFyZSBvdGhlciBraW5kcyBvZiBjbG9ja3MgdGhhdCBjYW4gYmUgdXNlZCBpbiBhIGRpc3RyaWJ1dGVkIHN5c3RlbSB0byBoZWxwIHNvbHZlIHRoaXMgcHJvYmxlbSwgYnV0IGFsbCBvZiB0aGUgb3RoZXIgc29sdXRpb25zIGNhbWUgYWxvbmcgbWFueSB5ZWFycyBhZnRlciBMYW1wb3J0IGZpcnN0IGludHJvZHVjZWQgaGlzIGxvZ2ljYWwgY2xvY2tzIGJhY2sgaW4gMTk3OC4gV2XigJlyZSBsdWNreSB0aGF0IGhlIGRpZCwgYmVjYXVzZSBoZSBzZXQgdGhlIHN0YWdlIGZvciBhIG5ldyB3YXkgb2YgdGhpbmtpbmcgYWJvdXQgdGltZSBpbiBkaXN0cmlidXRlZCBzeXN0ZW1zLCBhbmQgd291bGQgZW5kIHVwIGNoYW5naW5nIHRoZSB3YXkgd2UgdGFsayBhYm91dCBkaXN0cmlidXRlZCBjb21wdXRpbmcgZm9yZXZlci48L3A+PGgzPlJlc291cmNlczwvaDM+PHA+VGhlcmUgYXJlIHNvbWUgZ3JlYXQgcmVzb3VyY2VzIG9uIExhbXBvcnTigJlzIHBhcGVyIG9uIGxvZ2ljYWwgY2xvY2tzLCBhcyB3ZWxsIGFzIGNhdXNhbCBvcmRlcmluZy4gSWYgeW914oCZcmUgY3VyaW91cyB0byBsZWFybiBtb3JlIChvciByZWFkIExhbXBvcnTigJlzIHBhcGVyIHlvdXJzZWxmKSwgY2hlY2sgb3V0IHRoZSByZXNvdXJjZXMgYmVsb3chPC9wPjxvbD48bGk+PGEgaHJlZj0iaHR0cHM6Ly9sYW1wb3J0LmF6dXJld2Vic2l0ZXMubmV0L3B1YnMvdGltZS1jbG9ja3MucGRmIj5UaW1lLCBDbG9ja3MsIGFuZCB0aGUgT3JkZXJpbmcgb2YgRXZlbnRzIGluIGEgRGlzdHJpYnV0ZWQgU3lzdGVtPC9hPiwgTGVzbGllwqBMYW1wb3J0PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1oSzZtNldCay1kOCZhbXA7dD0zcyI+VGltZSwgQ2xvY2tzIGFuZCBPcmRlcmluZyBvZiBFdmVudHMgaW4gYSBEaXN0LiBTeXN0ZW08L2E+LCBEYW4gUnViZW5zdGVpbjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9Q01CanZDekRWa1kiPlRpbWUgYW5kIE9yZGVyaW5nOiBMYW1wb3J0IFRpbWVzdGFtcHM8L2E+LCBJbmRyYW5pbMKgR3VwdGE8L2xpPjxsaT48YSBocmVmPSJodHRwczovL213aGl0dGFrZXIuZ2l0aHViLmlvL2Jsb2cvbGFtcG9ydHNfbG9naWNhbF9jbG9ja3MvIj5MYW1wb3J04oCZcyBMb2dpY2FsIENsb2NrczwvYT4sIE1pY2hhZWwgV2hpdHRha2VyPC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuY3MucnV0Z2Vycy5lZHUvfnB4ay9ydXRnZXJzL25vdGVzL2NvbnRlbnQvMDgtbG9naWNhbC1jbG9ja3Mtc2xpZGVzLnBkZiI+TG9naWNhbCBDbG9ja3M8L2E+LCBQcm9mZXNzb3IgUGF1bCBLcnp5emFub3dza2k8L2xpPjwvb2w+PGltZyBzcmM9Imh0dHBzOi8vbWVkaXVtLmNvbS9fL3N0YXQ/ZXZlbnQ9cG9zdC5jbGllbnRWaWV3ZWQmcmVmZXJyZXJTb3VyY2U9ZnVsbF9yc3MmcG9zdElkPTI3MmMwOTdkY2RkYSIgd2lkdGg9IjEiIGhlaWdodD0iMSIgYWx0PSIiPjxocj48cD48YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL2xvZ2ljYWwtdGltZS1hbmQtbGFtcG9ydC1jbG9ja3MtcGFydC0yLTI3MmMwOTdkY2RkYSI+TG9naWNhbCBUaW1lIGFuZCBMYW1wb3J0IENsb2NrcyAoUGFydCAyKTwvYT4gd2FzIG9yaWdpbmFsbHkgcHVibGlzaGVkIGluIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMiPmJhc2VkczwvYT4gb24gTWVkaXVtLCB3aGVyZSBwZW9wbGUgYXJlIGNvbnRpbnVpbmcgdGhlIGNvbnZlcnNhdGlvbiBieSBoaWdobGlnaHRpbmcgYW5kIHJlc3BvbmRpbmcgdG8gdGhpcyBzdG9yeS48L3A+XV0+PC9jb250ZW50OmVuY29kZWQ+CiAgICAgICAgPC9pdGVtPgogICAgICAgIDxpdGVtPgogICAgICAgICAgICA8dGl0bGU+PCFbQ0RBVEFbTG9naWNhbCBUaW1lIGFuZCBMYW1wb3J0IENsb2NrcyAoUGFydCAxKV1dPjwvdGl0bGU+CiAgICAgICAgICAgIDxsaW5rPmh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvbG9naWNhbC10aW1lLWFuZC1sYW1wb3J0LWNsb2Nrcy1wYXJ0LTEtZDAzMTdlNDA3MTEyP3NvdXJjZT1yc3MtOGY1NTk5M2M5NzNlLS0tLS0tMjwvbGluaz4KICAgICAgICAgICAgPGd1aWQgaXNQZXJtYUxpbms9ImZhbHNlIj5odHRwczovL21lZGl1bS5jb20vcC9kMDMxN2U0MDcxMTI8L2d1aWQ+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtjb2RlXV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW3NvZnR3YXJlLWRldmVsb3BtZW50XV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW2NvbXB1dGVyLXNjaWVuY2VdXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbZGlzdHJpYnV0ZWQtc3lzdGVtc11dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtwcm9ncmFtbWluZ11dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxkYzpjcmVhdG9yPjwhW0NEQVRBW1ZhaWRlaGkgSm9zaGldXT48L2RjOmNyZWF0b3I+CiAgICAgICAgICAgIDxwdWJEYXRlPlRodSwgMTQgTm92IDIwMTkgMTY6MzQ6MTkgR01UPC9wdWJEYXRlPgogICAgICAgICAgICA8YXRvbTp1cGRhdGVkPjIwMTktMTEtMTRUMTY6MzQ6MTkuODMzWjwvYXRvbTp1cGRhdGVkPgogICAgICAgICAgICA8Y29udGVudDplbmNvZGVkPjwhW0NEQVRBWzxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqX3A3TTJzOWJReUt1QWVDOFRqcDRYdy5qcGVnIiAvPjxmaWdjYXB0aW9uPkxvZ2ljYWwgdGltZSBhbmQgTGFtcG9ydCBjbG9ja3MgKHBhcnTCoDEpPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPk92ZXIgdGhlIGNvdXJzZSBvZiB0aGlzIHNlcmllcywgd2XigJl2ZSBzZWVuIG1hbnkgaW5zdGFuY2VzIG9mIGhvdyB0aGluZ3MgY2FuIG1vcmUgY29tcGxpY2F0ZWQgdGhhbiB0aGV5IHNlZW0uIFdlIHNhdyB0aGlzIHdpdGggPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9tb2Rlcy1vZi1mYWlsdXJlLXBhcnQtMS02Njg3NTA0YmZlZDYiPmZhaWx1cmU8L2E+LCBhbmQgd2Ugc2F3IGl0IHdpdGggPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9yZWR1bmRhbmN5LWFuZC1yZXBsaWNhdGlvbi1kdXBsaWNhdGluZy1pbi1hLWRpc3RyaWJ1dGVkLXN5c3RlbS03YWI0MzIyZDczNzgiPnJlcGxpY2F0aW9uPC9hPi4gTW9yZSByZWNlbnRseSwgd2UgZGlzY292ZXJlZCB0aGF0IGV2ZW4gdGhlIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvdGlja2luZy1jbG9ja3MtaW4tYS1kaXN0cmlidXRlZC1zeXN0ZW0tZWYyYWE0ZGYwN2EzIj5jb25jZXB0IG9mIHRpbWU8L2E+IGlzIG1vcmUgY29tcGxleCB0aGF0IHdlIG1pZ2h0IGhhdmUgb3JpZ2luYWxseSB0aG91Z2h0LjwvcD48cD5Ib3dldmVyLCB3aGVuIHRoZSB0aGluZ3MgdGhhdCB5b3UgdGhvdWdodCB5b3Uga25ldyBzZWVtIG1vcmUgY29udm9sdXRlZCB0aGFuIGV2ZXIsIHNvbWV0aW1lcyB0aGUgYW5zd2VyIGlzIHRvIGtlZXAgaXQgc2ltcGxlLiBJbiBvdGhlciB3b3Jkcywgd2UgY2FuIGtlZXAgYSBwcm9ibGVtIHNpbXBsZSBieSBzdHJpcHBpbmcgb3V0IHRoZSBjb25mdXNpbmcgcGFydHMgYW5kIHRyaW1taW5nIGl0IGRvd24gdG8gaXRzIG1vc3QgZXNzZW50aWFsIHBhcnRzLiBJbiBmYWN0LCB0aGlzIGFwcHJvYWNoIGlzIGV4YWN0bHkgd2hhdCBvbmUgY29tcHV0ZXIgc2NpZW50aXN0IGRpZCBpbiB0aGUgbGF0ZSA3MOKAmXMgd2hlbiBoZSB3YXMsIGp1c3QgbGlrZSB1cywgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaG93IHRvIG1ha2Ugc2Vuc2Ugb2YgdGltZSBpbiBhIGRpc3RyaWJ1dGVkIHN5c3RlbS48L3A+PHA+VGhlIHByZXZpb3VzIHR3byBwb3N0cyBvbiA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL3RpY2tpbmctY2xvY2tzLWluLWEtZGlzdHJpYnV0ZWQtc3lzdGVtLWVmMmFhNGRmMDdhMyI+Y2xvY2tzPC9hPiBhbmQgdGhlIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvb3JkZXJpbmctZGlzdHJpYnV0ZWQtZXZlbnRzLTI5YzFkZDlkMWVmZiI+b3JkZXJpbmcgb2YgZXZlbnQ8L2E+cyBpbiBhIGRpc3RyaWJ1dGVkIHN5c3RlbSBoYXZlIGJvdGggYmVlbiBidWlsZGluZyB1cCB0byB0aGUgdG9waWMgd2XigJlyZSBmaW5hbGx5IHJlYWR5IHRvIHVuY292ZXI6IGxvZ2ljYWwgdGltZSBhbmQgTGFtcG9ydCBjbG9ja3MhIFRoZXJl4oCZcyBhIGxvdCB0byBjb3Zlciwgc28gd2XigJlsbCBzcHJlYWQgaXQgb3V0IGJldHdlZW4gdHdvIHBvc3RzLiBMZXTigJlzIGRpdmUgcmlnaHQgaW50byBwYXJ0wqBvbmUhPC9wPjxoMz5DYXVzYWxpdHkgYW5kIOKAnGhhcHBlbnPCoGJlZm9yZeKAnTwvaDM+PHA+VGhlIHN0b3J5IG9mIGxvZ2ljYWwgY2xvY2tzIHN0YXJ0cyBpbiAxOTc4LCB3aGVuIGEgcGFwZXIgd2FzIHB1Ymxpc2hlZCBpbiB0aGUgPGVtPkNvbW11bmljYXRpb25zIG9mIEFDTSA8L2VtPmpvdXJuYWwgdGhhdCB3b3VsZCBnbyBkb3duIGluIGhpc3RvcnkuIDxhIGhyZWY9Imh0dHA6Ly93d3cubGFtcG9ydC5vcmcvIj5MZXNsaWUgTGFtcG9ydDwvYT4sIGEgY29tcHV0ZXIgc2NpZW50aXN0IGF0IE1hc3NhY2h1c2V0dHMgQ29tcHV0ZXIgQXNzb2NpYXRlcywgd3JvdGUgYWJvdXQgaGlzIHJlc2VhcmNoIGFyb3VuZCBvcmRlcmluZyBldmVudHMgaW4gYSBkaXN0cmlidXRlZCBzeXN0ZW0uIFRoaXMgcGFwZXIsIGVudGl0bGVkIDxhIGhyZWY9Imh0dHBzOi8vbGFtcG9ydC5henVyZXdlYnNpdGVzLm5ldC9wdWJzL3RpbWUtY2xvY2tzLnBkZiI+4oCcVGltZSwgQ2xvY2tzLCBhbmQgdGhlIE9yZGVyaW5nIG9mIEV2ZW50cyBpbiBhIERpc3RyaWJ1dGVkIFN5c3RlbeKAnTwvYT4sIHdvdWxkIGdvIG9uIHRvIGJlIG9uZSBvZiB0aGUgbW9zdC1jaXRlZCBwYXBlcnMgaW4gY29tcHV0ZXIgc2NpZW5jZSwgYW5kIHdvdWxkIGFsc28gd2luIHRoZSBQcmluY2lwbGVzIG9mIERpc3RyaWJ1dGVkIENvbXB1dGluZyBJbmZsdWVudGlhbCBQYXBlciBBd2FyZCBtb3JlIHRoYW4gPGEgaHJlZj0iaHR0cDovL3d3dy5wb2RjLm9yZy9pbmZsdWVudGlhbC8yMDAwLWluZmx1ZW50aWFsLXBhcGVyIj4yMCB5ZWFyc8KgbGF0ZXI8L2E+LjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKkI1LVJmbGNCM214LXBfMzQ3MnlNSUEuanBlZyIgLz48ZmlnY2FwdGlvbj5MYW1wb3J04oCZcyBwYXBlciBvbiBjYXVzYWwgb3JkZXJpbmcgd2FzIHB1Ymxpc2hlZCBpbsKgMTk3OCE8L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+SW4gdGhlIHBhcGVyLCBMYW1wb3J0IG91dGxpbmVzIGhvdyB3ZSB0aGluayBhYm91dCB0aW1lIGFzIGh1bWFucywgYW5kIHdoeSB3ZSBuZWVkIHRvIHNoaWZ0IG91ciBwYXJhZGlnbSB3aGVuIGl0IGNvbWVzIHRvIGRpc3RyaWJ1dGVkIHN5c3RlbXMsIGFuZCB0aGUgaWRlYSBvZiA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL29yZGVyaW5nLWRpc3RyaWJ1dGVkLWV2ZW50cy0yOWMxZGQ5ZDFlZmYiPnBhcnRpYWwgb3JkZXJpbmc8L2E+LiBIZSBleHBsYWlucyB0aGF0LCDigJxJbiBhIGRpc3RyaWJ1dGVkIHN5c3RlbSwgaXQgaXMgc29tZXRpbWVzIGltcG9zc2libGUgdG8gc2F5IHRoYXQgb25lIG9mIHR3byBldmVudHMgb2NjdXJyZWTCoGZpcnN04oCdLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKl81T0NPX1U5d1daMUgwRjRhY1BZeVEuanBlZyIgLz48ZmlnY2FwdGlvbj5XaHkgZG8gd2UgY2FyZSBhYm91dCBvcmRlcmluZyBldmVudHM/IFNvIHRoYXQgd2UgY2FuIHRyYWNrIGNhdXNhbGl0eSE8L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+QXMgTGFtcG9ydCBjaXRlcyBpbiBoaXMgcGFwZXIsIHRoZSByZWFzb24gdGhhdCB3ZSBjYXJlIGFib3V0IHRpbWUgaXMgc28gdGhhdCB3ZSBjYW4gZmlndXJlIG91dCB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpbmdzIGhhcHBlbi4gV2hpbGUgdGhpcyBpcyBjZXJ0YWlubHkgaGFyZGVyIChvciBzb21ldGltZXMgaW1wb3NzaWJsZSEpIHRvIGRvIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtLCBvdXIgcmVhc29uIGZvciB3YW50aW5nIHRvIDxlbT5rbm93PC9lbT4gdGhlIG9yZGVyIG9mIHNvbWUgZXZlbnRzIGluIGEgc3lzdGVtIGFsbCBzdGVtcyBiYWNrIHRvIHRoZSBzYW1lIGRlc2lyZTogd2UgY2FyZSBhYm91dCBvcmRlcmluZyBldmVudHMgc28gd2UgY2FuIGRldGVybWluZSBob3cgdGhvc2UgZXZlbnRzIGFyZSBjb25uZWN0ZWQuIFdoZW4gZGVhbGluZyB3aXRoIGV2ZW50cyBpbiA8ZW0+YW55PC9lbT4gc3lzdGVtLCB0aGUgcmVhc29uIHdlIGFjdHVhbGx5IHdhbnQgdG8gb3JkZXIgdGhlbSBpcyBzbyB0aGF0IHdlIGNhbiBzZWUgdGhlIGNoYWluIG9mIGV2ZW50cyB3aXRoaW4gdGhlIHN5c3RlbS4gV2l0aGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtIGluIHBhcnRpY3VsYXIsIHdlIHRoaXMgbWVhbnMgdGhhdCB3ZSBhcmUgb2Z0ZW4gdHJ5aW5nIHRvIGRldGVybWluZSBpZiBhbiBldmVudCBhdCBvbmUgbm9kZSBhZmZlY3RzIG9yIGNhdXNlcyBhbiBldmVudCBhdCBhbm90aGVywqBub2RlLjwvcD48cD5CdXQsIGFzIHdl4oCZdmUgc2VlbiBpbiBvdXIgb3duIHN0dWR5IG9mIGRpc3RyaWJ1dGVkIHN5c3RlbXMsIHRoaXMgdGFzayBpcyBubyBlYXN5IGZlYXQuIFdoZW4gYSBzeXN0ZW0gaXMgZGlzdHJpYnV0ZWQsIHRoZXJlIGlzIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvdGlja2luZy1jbG9ja3MtaW4tYS1kaXN0cmlidXRlZC1zeXN0ZW0tZWYyYWE0ZGYwN2EzIj5ubyBnbG9iYWwgY2xvY2s8L2E+LCB3aGljaCBtZWFucyB0aGF0IHdlIGNhbm5vdCBkZXBlbmQgb24gYW55IGNlbnRyYWwgdGltZSBzb3VyY2UuIFRoaXMgYWxzbyBtZWFucyB0aGF0IHRoZSBldmVudHMgaW4gb3VyIHN5c3RlbSBhcmUgbm90IDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvb3JkZXJpbmctZGlzdHJpYnV0ZWQtZXZlbnRzLTI5YzFkZDlkMWVmZiI+dG90YWxseSBvcmRlcmVkPC9hPiwgd2hpY2ggbWVhbnMgd2UgY2Fu4oCZdCBiZSBzdXJlIG9mIGV4YWN0bHkgPGVtPndoZW48L2VtPiBldmVyeSBldmVudCBpbiB0aGUgc3lzdGVtIHRvb2sgcGxhY2UuIExhbXBvcnTigJlzIHBhcGVyIGFja25vd2xlZGdlcyBhbGwgb2YgdGhlc2UgY29uc3RyYWlucyBhbmQgZW1wYXRoaXplcyB3aXRoIGhvdyB0cmlja3kgdGhpcyBwcm9ibGVtIHJlYWxsecKgaXMhPC9wPjxwPkxhbXBvcnTigJlzIHNvbHV0aW9uIGlzIHRvIHNoaWZ0IG91ciB0aGlua2luZy4gSGUgcHJlc2VudHMgYSBub3ZlbCBpZGVhOiB3ZSBkb27igJl0IGFjdHVhbGx5IG5lZWQgdG8gdGhpbmsgYWJvdXQgY2F1c2FsaXR5IGluIHRoZSBjb250ZXh0IG9mIHRvdGFsIG9yZGVyaW5nIHRvIHN0YXJ0LiBJbnN0ZWFkLCBoZSBzYXlzIHRoYXQgd2UgY2FuIHN0YXJ0IHdpdGggYSBwYXJ0aWFsIG9yZGVyaW5nIG9mIGV2ZW50cywgYW5kIHRoZW4ganVzdCBkZWFsIHdpdGggZmlndXJpbmcgb3V0IHdoaWNoIGV2ZW50cyBoYXBwZW5lZCBiZWZvcmUgb3RoZXIgZXZlbnRzLiBPbmNlIHdlIGZpZ3VyZSBvdXQgYSBwYXJ0aWFsIG9yZGVyaW5nLCB3ZSBjYW4gdHVybiBpdCBpbnRvIGEgY29uc2lzdGVudCB0b3RhbCBvcmRlcmluZy48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpfUGRVMXN2N2dSSm5FeG1GRW8zS2hBLmpwZWciIC8+PGZpZ2NhcHRpb24+TGFtcG9ydOKAmXMgbG9naWNhbCBjbG9ja3MgYWxsb3cgdXMgdG8gc2hpZnQgZnJvbSBoYXBwZW5lZCDigJx3aGVu4oCdIHRvIGhhcHBlbmVkIOKAnGJlZm9yZeKAnS48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+U28gaG93IGRvIHdlIGRvIHRoaXM/IFdlbGwsIHRvIHN0YXJ0LCB3ZSBuZWVkIHRvIHNoaWZ0IGZyb20gdGhpbmtpbmcgYWJvdXQgPGVtPndoZW48L2VtPiBhbiBldmVudCBoYXBwZW5lZCB0byB3aGF0IHRoZSBldmVudCBoYXBwZW5lZMKgPGVtPmJlZm9yZTwvZW0+LjwvcD48aDM+U2hpZnRpbmcgZnJvbSDigJx3aGVu4oCdIHRvwqDigJxiZWZvcmXigJ08L2gzPjxwPlRoZSBpZGVhIG9mIG9uZSBldmVudCBoYXBwZW5pbmcgYmVmb3JlIGFub3RoZXIgaXMgY2VudHJhbCB0byBMYW1wb3J04oCZcyBwYXBlci4gSGUgdXNlcyB0aGUgPHN0cm9uZz7ihpI8L3N0cm9uZz4gc2hvcnRoYW5kIG5vdGF0aW9uIHRvIGluZGljYXRlIHRoZSA8c3Ryb25nPjxlbT5oYXBwZW5zIGJlZm9yZTwvZW0+PC9zdHJvbmc+IHJlbGF0aW9uc2hpcCwgb3IgdGhlIGZhY3QgdGhhdCBvbmUgZXZlbnQgaGFwcGVuZWQgYmVmb3JlIGFub3RoZXIuIEZvciBleGFtcGxlLCBpZiB3ZSBrbm93IHRoYXQgb25lIGV2ZW50LCA8ZW0+YTwvZW0+LCBoYXBwZW5lZCBiZWZvcmUgYW5vdGhlciBldmVudCwgPGVtPmI8L2VtPiwgdGhlbiB3ZSBjYW4gc2F5IHRoYXQgPGVtPmE8L2VtPiDihpIgPGVtPmI8L2VtPiwgb3IgPGVtPmEgPC9lbT5oYXBwZW5lZCBiZWZvcmXCoDxlbT5iPC9lbT4uPC9wPjxwPlRoZSBoYXBwZW5zIGJlZm9yZSByZWxhdGlvbnNoaXAgY2FuIGFsc28gYmUgYXBwbGllZCB0cmFuc2l0aXZlbHkuIEluIG90aGVyIHdvcmRzLCB3ZSBjYW4gY3JlYXRlIGEgY2hhaW4gb2YgZXZlbnRzIHdoZXJlIG9uZSBldmVudCBoYXBwZW5lZCBiZWZvcmUgYW5vdGhlci4gSWYgd2Ugc2F5IHRoYXQgPGVtPmE8L2VtPiDihpIgPGVtPmIgPC9lbT5hbmQgPGVtPmIg4oaSIGM8L2VtPiwgdGhlbiBieSB1c2luZyB0aGUgdHJhbnNpdGl2ZSBwcm9wZXJ0eSwgd2UgY2FuIHNheSB0aGF0IDxlbT5hIOKGkiBjPC9lbT4sIG9yIDxlbT5hIDwvZW0+aGFwcGVuZWQgYmVmb3JlIDxlbT5jLiA8L2VtPkFzIHdlIG1pZ2h0IGJlIGFibGUgdG8gaW1hZ2luZSwgd2UgY291bGQgdmVyeSBlYXNpbHkgc3RyaW5nIHRvZ2V0aGVyIGEgY2hhaW4gb2YgZXZlbnRzLCB3aGVyZSBvbmUgZXZlbnQgaGFwcGVucyBiZWZvcmUgYW5vdGhlciwgd2hpY2ggaGFwcGVucyBiZWZvcmUgYW5vdGhlciwgYW5kIHNvIG9uIGFuZCBzb8KgZm9ydGguPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqakJsNTZrZEc1em1UZXdjeXQxSjZWZy5qcGVnIiAvPjxmaWdjYXB0aW9uPlVuZGVyc3RhbmRpbmcgdGhlIOKAnGhhcHBlbmVkIGJlZm9yZeKAnSBub3RhdGlvbi48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+QnV0IHdhaXQgYSBzZWNvbmTigIrigJTigIp3ZSBrZWVwIHRhbGtpbmcgYWJvdXQgZGlmZmVyZW50IGV2ZW50cyBpbiB0aGUgc3lzdGVtLCBidXQgd2UgaGF2ZW7igJl0IHJlYWxseSBjbGFyaWZpZWQgd2hhdCBhbiBldmVudCBjb3VsZCBwb3NzaWJseSBiZSEgQXMgaXQgdHVybnMgb3V0LCBhbiBldmVudCBpbiBhIGRpc3RyaWJ1dGVkIHN5c3RlbSBjYW4gdGFrZSBkaWZmZXJlbnQgZm9ybXMuIEFzIHdlIGtub3csIHRoZXJlIGNhbiBiZSBtYW55IDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvbWFueS1ub2Rlcy1vbmUtZGlzdHJpYnV0ZWQtc3lzdGVtLTk5MjFmODUyMDVjNCI+ZGlmZmVyZW50IG5vZGVzPC9hPiBpbiBhIGRpc3RyaWJ1dGVkIHN5c3RlbS4gRWFjaCBub2RlIGhhcyBpdHMgb3duIGxvY2FsIHN5c3RlbSBjbG9jaywgYW5kIGl0IGlzIGNhcGFibGUgb2YgcHJvY2Vzc2luZyBpdHMgb3duIHRhc2tzLiBIb3dldmVyLCB0aGUgbm9kZXMgY2FuIGFsc28gY29tbXVuaWNhdGUgYmV0d2VlbiBvbmUgYW5vdGhlciwgc2VuZGluZyBtZXNzYWdlcyBiYWNrIGFuZMKgZm9ydGguPC9wPjxwPkFuIDxzdHJvbmc+PGVtPmV2ZW50PC9lbT48L3N0cm9uZz4gZW5jb21wYXNzZXMgYWxsIG9mIHRoZSBkaWZmZXJlbnQgdGhpbmdzIHRoYXQgY2FuIGhhcHBlbiB3aXRoaW4gYW5kIGJldHdlZW4gbm9kZXMgaW4gYSBzeXN0ZW0uIEFuIGV2ZW50IGNvdWxkIGJlIHNvbWV0aGluZyB0aGF0IG9jY3VycyBvbiBhIHNpbmdsZSBwcm9jZXNzIG9yIG5vZGUuIEFuIGV2ZW50IGFsc28gaW5jbHVkZXMgYW55IDxzdHJvbmc+PGVtPnNlbmQgZXZlbnRzPC9lbT48L3N0cm9uZz4sIHdoZXJlIGEgbm9kZSBzZW5kcyBhIG1lc3NhZ2UgdG8gYW5vdGhlciBub2RlIG9yIHByb2Nlc3MuIENvbnZlcnNlbHksIHdlIG11c3QgYWxzbyBjb25zaWRlciA8c3Ryb25nPjxlbT5yZWNlaXZlIGV2ZW50czwvZW0+PC9zdHJvbmc+LCB3aGVuIGEgbm9kZSByZWNlaXZlcyBhbiBpbmNvbWluZyBtZXNzYWdlIGZyb20gZWxzZXdoZXJlIGluIHRoZcKgc3lzdGVtLjwvcD48cD5JbiB0aGUgZXhhbXBsZSBhYm92ZSwgd2UgY2FuIHNlZSBleGFtcGxlcyBvZiBhbGwgdGhyZWUgb2YgdGhlc2UgZXZlbnRzLiBXZSBoYXZlIHR3byBwcm9jZXNzZXMsIFAgYW5kIFEuIFRoZXJlIGlzIG9uZSBldmVudCwgUTMsIHdoaWNoIG9jY3VycyBvbiBwcm9jZXNzIFEgdGhhdCBhcmUgbm90IHJlbGF0ZWQgdG8gc2VuZGluZyBvciByZWNlaXZpbmcgYW55IG1lc3NhZ2VzLiBUaGlzIGlzIG91ciBiYXNpYyBldmVudCB0aGF0IGluZGljYXRlcyB0aGF0IHNvbWV0aGluZyBvY2N1cnJlZCBvbiB0aGUgbm9kZSBmb3IgcHJvY2VzcyBRLiBIb3dldmVyLCB3ZSBhbHNvIGhhdmUgYSBmZXcgc2VuZCBldmVudHM6IFAxLCBRMSwgUTQuIFRoZXNlIGFyZSBhbGwgZXZlbnRzIHRoYXQgaW5kaWNhdGUgdGhhdCB3ZSBhcmUgc2VuZGluZyBtZXNzYWdlcyBvdXQgZnJvbSBhIG5vZGUgdG8gc29tZXdoZXJlIGVsc2UgaW4gdGhlIHN5c3RlbS4gT24gdGhlIG90aGVyIGhhbmQsIFAyLCBQMywgYW5kIFEyIGFyZSBlYWNoIHJlY2VpdmUgZXZlbnRzLCB3aGljaCBpbmRpY2F0ZSB0aGF0IHdlIGhhdmUgcmVjZWl2ZWQgc29tZSBtZXNzYWdlIGZyb20gYW5vdGhlciBub2RlIGluIHRoZcKgc3lzdGVtLjwvcD48cD5Ob3cgdGhhdCB3ZSB1bmRlcnN0YW5kIHdoYXQgYW4gZXZlbnQgaW4gYSBzeXN0ZW0gY291bGQgYmUsIHdlIGNhbiB0dXJuIGJhY2sgdG8gdGhlIGhhcHBlbnMgYmVmb3JlIHJlbGF0aW9uc2hpcC4gV2hlbiB3ZSBzYXkgdGhhdCBhbiBldmVudCA8ZW0+YTwvZW0+IDxlbT7ihpI8L2VtPiA8ZW0+YjwvZW0+LCB3ZSBhcmUgYXNzZXJ0aW5nIHRoYXQgZXZlbnQgPGVtPmE8L2VtPiBvY2N1cnJlZCBiZWZvcmUgPGVtPmI8L2VtPiwgYmVjYXVzZSA8ZW0+YTwvZW0+IGhhcHBlbmVkIGJlZm9yZSA8ZW0+YjwvZW0+LiBXZSBjYW4gc2F5IHRoYXQgdGhlc2UgdHdvIGV2ZW50cyBhcmUgPHN0cm9uZz48ZW0+Y2F1c2FsbHkgb3JkZXJlZDwvZW0+PC9zdHJvbmc+LCB3aGVyZSB0aGUgb3JkZXJpbmcgb2YgdGhlIGV2ZW50cyBpcyBjb250aW5nZW50IHVwb24gb25lIGV2ZW50IGNhdXNpbmcgYW5vdGhlciB0b8KgaGFwcGVuLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKlJwbVAtYVBDaXFNZnZyR0I4MXB1SmcuanBlZyIgLz48ZmlnY2FwdGlvbj5DYXVzYWxseS1vcmRlcmVkIGFuZCBjb25jdXJyZW50IGV2ZW50cyBhY3Jvc3MgdHdvIHByb2Nlc3Nlcy48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+VGhlcmUgYXJlIGEgZmV3IHJ1bGVzIHRvIGNhdXNhbCBvcmRlcmluZyB0aGF0IGFyZSBpbXBvcnRhbnQgZm9yIHVzIHRvIHVuZGVyc3RhbmQuIEluIG9yZGVyIGZvciA8ZW0+YTwvZW0+IDxlbT7ihpI8L2VtPiA8ZW0+YiA8L2VtPnRvIGJlIGNhdXNhbGx5IG9yZGVyZWQsIG9uZSBvZiB0aGUgZm9sbG93aW5nIHRocmVlIHNpdHVhdGlvbnMgbXVzdCBiZcKgdHJ1ZTo8L3A+PG9sPjxsaT5FdmVudHMgPGVtPmE8L2VtPiBhbmQgPGVtPmI8L2VtPiBtdXN0IG9jY3VyIG9uIHRoZSA8c3Ryb25nPjxlbT5zYW1lPC9lbT48L3N0cm9uZz4gPHN0cm9uZz48ZW0+cHJvY2VzczwvZW0+PC9zdHJvbmc+LCBhbmQgPGVtPmE8L2VtPiBtdXN0IG9jY3VyIGJlZm9yZSA8ZW0+YjwvZW0+IG9jY3VycyBvbiB0aGXCoHByb2Nlc3MuPC9saT48bGk+VGhlIGV2ZW50cyBjYW4gb2NjdXIgb24gPHN0cm9uZz48ZW0+ZGlmZmVyZW50PC9lbT48L3N0cm9uZz4gPHN0cm9uZz48ZW0+cHJvY2Vzc2VzPC9lbT48L3N0cm9uZz4gc28gbG9uZyBhcyA8ZW0+YTwvZW0+IGlzIHRoZSBzZW5kIGV2ZW50IHRoYXQgY29ycmVzcG9uZHMgdG8gPGVtPmIsIDwvZW0+d2hpY2ggbXVzdCBiZSBpdHMgcmVjZWl2ZcKgZXZlbnQuPC9saT48bGk+VGhlIGV2ZW50cyBhcmUgPHN0cm9uZz48ZW0+dHJhbnNpdGl2ZWx5IGxpbmtlZDwvZW0+PC9zdHJvbmc+IHdpdGggYW5vdGhlciBldmVudCBpbiB0aGUgc3lzdGVtLCBidXQgPGVtPmE8L2VtPiBzdGlsbCBoYXBwZW5zIGJlZm9yZSA8ZW0+YjwvZW0+LiBGb3IgZXhhbXBsZSwgaWYgPGVtPmE8L2VtPiBoYXBwZW5zIGJlZm9yZSA8ZW0+YzwvZW0+LCBhbmQgPGVtPmM8L2VtPiBoYXBwZW5zIGJlZm9yZSA8ZW0+YjwvZW0+LCB0aGVuIHdlIGtub3cgdGhhdCA8ZW0+YTwvZW0+IDxlbT7ihpLCoGI8L2VtPi48L2xpPjwvb2w+PHA+QXMgbWVzc2FnZXMgdHJhdmVsIHRocm91Z2ggdGltZSBhbmQgYWNyb3NzIHNwYWNlIGZyb20gb25lIHByb2Nlc3MgdG8gYW5vdGhlciBhbmQsIHdlIGNhbiBzdGFydCB0byBjb25zdHJ1Y3QgY2hhaW5zIG9mIGNhdXNhbGx5IGV2ZW50cyAoYWxzbyBjYWxsZWQgPHN0cm9uZz48ZW0+Y2F1c2FsIHBhdGhzPC9lbT48L3N0cm9uZz4pIGFuZCBzZWUgaG93IGRpZmZlcmVudCBldmVudHMgYWNyb3NzIHByb2Nlc3NlcyBhcmUgY29ubmVjdGVkIHRvIG9uZSBhbm90aGVyLiBGb3IgZXhhbXBsZSwgaW4gcHJvY2Vzc2VzIFAgYW5kIFEsIFExPGVtPuKGkjwvZW0+IFAzICh0aHJvdWdoIGV2ZW50IFAyKSwgYW5kIFAxIDxlbT7ihpIgPC9lbT5RNCAodGhyb3VnaCBldmVudHMgUTIgYW5kwqBRMykuPC9wPjxwPkZpbmFsbHksIGl04oCZcyB3b3J0aCBtZW50aW9uaW5nIHRoYXQsIGlmIHR3byBldmVudHMgPGVtPmE8L2VtPiBhbmQgPGVtPmI8L2VtPiBkbyBub3QgaGFwcGVuIGJlZm9yZSBvbmUgYW5vdGhlciwgdGhhbiB3ZSBjYW4gc2F5IHRoYXQgPGVtPmEg4omgJmd0OyBiPC9lbT4gYW5kIDxlbT5iIOKJoCZndDsgYTwvZW0+LCBhbmQgdGhhdCB0aGUgdHdvIGV2ZW50cyBhcmUgPHN0cm9uZz48ZW0+Y29uY3VycmVudDwvZW0+PC9zdHJvbmc+LiBXZSB3aWxsIGNvdmVyIHRoaXMgaW4gbXVjaCBtb3JlIGRlcHRoIGluIHBhcnQgdHdvIG9mIHRoaXMgcG9zdCwgYnV0IGZvciBub3csIHdlIHNob3VsZCBqdXN0IG5vdGUgdGhhdCBjb25jdXJyZW50IGV2ZW50cyBkbyBub3QgaGF2ZSBjYXVzYWwgcGF0aHMgZnJvbSBvbmUgdG/CoGFub3RoZXIuPC9wPjxoMz5Mb2dpY2FsIGNsb2NrcyB0byB0aGXCoHN0YWdlPC9oMz48cD5JbiBhZGRpdGlvbiB0byB0aGUgaWRlYSBvZiDigJxoYXBwZW5zIGJlZm9yZeKAnSwgYW5vdGhlciBjb3JlIGNvbmNlcHQgdGhhdCBMYW1wb3J0IGludHJvZHVjZXMgaW4gaGlzIHBhcGVyIGlzIHRoZSBsb2dpY2FsIGNsb2NrLiBBcyB3ZSBhbHJlYWR5IGtub3csIGVhY2ggbm9kZSBvciBwcm9jZXNzIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtIGhhcyBpdHMgb3duIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvdGlja2luZy1jbG9ja3MtaW4tYS1kaXN0cmlidXRlZC1zeXN0ZW0tZWYyYWE0ZGYwN2EzIj5jb25jZXB0IG9mIHRpbWU8L2E+LCBvciBpdHMgb3duIGxvY2FsIGNsb2NrLiBIb3dldmVyLCBMYW1wb3J04oCZcyB0YWtlIG9uIGxvY2FsIGNsb2NrcyBpcyBkaWZmZXJlbnQgdGhhdCB3aGF0IHdl4oCZdmUgc2VlbsKgYmVmb3JlLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKk9BbUQzV2dvdWdOd3lqLXhleFUwZHcuanBlZyIgLz48ZmlnY2FwdGlvbj5Ib3cgZG8gdGhlIGNsb2NrcyBmYWN0b3LCoGluPzwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5MYW1wb3J0IHN1Z2dlc3RzIHVzaW5nIHNvbWV0aGluZyBkaWZmZXJlbnQgZnJvbSB0aGUgdHlwaWNhbCBwaHlzaWNhbCBjbG9jayB0aGF0IHdlIGFsbCB0aGluayBvZi4gSW5zdGVhZCBvZiB1c2luZyBlYWNoIHByb2Nlc3PigJlzIHBoeXNpY2FsIGNsb2NrIHRvIHRyYWNrIHRoZSBvcmRlciBvZiBldmVudHMsIHdlIGNhbiBpbnN0ZWFkIHVzZSBhIDxzdHJvbmc+PGVtPmNvdW50ZXI8L2VtPjwvc3Ryb25nPi4gVGhlIGNvdW50ZXIgY2FuIHN0YXJ0IHdpdGggYW4gaW5pdGlhbCB0aW1lIChsaWtlIDApLCBhbmQgd2UgY2FuIHRyZWF0IHRoYXQgY291bnRlciBhcyB0aGUgcHJvY2Vzc2VzIG93biBsb2NhbMKgY2xvY2suPC9wPjxwPkxhbXBvcnQgY29udGludWVzIHdpdGggdGhpcyBpZGVhIGJ5IHByb3Bvc2luZyB0aGF0LCBub3Qgb25seSB3aWxsIGV2ZXJ5IHByb2Nlc3Mgd2l0aGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtIGhhdmUgaXRzIG93biBjb3VudGVyIGNsb2NrLCBidXQgZWFjaCA8ZW0+ZXZlbnQ8L2VtPiB0aGF0IGlzIHJlY29yZGVkIG9uIGEgcHJvY2VzcyBzaG91bGQgYWxzbyBoYXZlIGEgPHN0cm9uZz48ZW0+dmFsdWU8L2VtPjwvc3Ryb25nPiBvbiB0aGF0IHByb2Nlc3PigJlzIGxvY2FsIGNsb2NrLiBGdXJ0aGVybW9yZSwgdGhlIHZhbHVlIG9mIGVhY2ggb2YgdGhlc2UgZXZlbnRzIG9uIHRoZSBjbG9jayBtdXN0IG1pcnJvciBhbnkgaGFwcGVuZWQgYmVmb3JlIHJlbGF0aW9uc2hpcHMuIEZvciBleGFtcGxlLCBpZiBldmVudCA8ZW0+YTwvZW0+IDxlbT7ihpIgYjwvZW0+LCB0aGVuIHRoZSBjbG9jayB0aW1lIGZvciB3aGVuIGV2ZW50IDxlbT5hPC9lbT4gb2NjdXJyZWQgbXVzdCBiZSBsZXNzIHRoYW4gdGhlIGNsb2NrIHRpbWUgZm9yIHdoZW5ldmVyIGV2ZW50IDxlbT5iPC9lbT4gb2NjdXJyZWQ7IGluIG90aGVyIHdvcmRzLCBjbG9jayg8ZW0+YTwvZW0+KSAmbHQ7IGNsb2NrKDxlbT5iPC9lbT4pLjwvcD48cD5CeSB1c2luZyBiYXNpYyBjb3VudGVycyBpbnN0ZWFkIG9mIHBoeXNpY2FsIGNsb2NrcywgTGFtcG9ydCBzaW1wbGlmaWVzIGNsb2NrcyBpbnRvIHNvbWV0aGluZyBhIGxpdHRsZSBlYXNpZXIgdG8gZGVhbCB3aXRoLiBUaGVzZSBjb3VudGVyIGNsb2NrcyBhcmUgY2FsbGVkIGxvZ2ljYWwgY2xvY2tzLiBBIDxzdHJvbmc+PGVtPmxvZ2ljYWwgY2xvY2sgPC9lbT48L3N0cm9uZz5pcyBxdWl0ZSBkaWZmZXJlbnQgZnJvbSBhIHBoeXNpY2FsIGNsb2NrIGluIHRoYXQgdGhlcmUgaXMgbm8gY2VudHJhbCBub3Rpb24gb2YgdGltZSwgYW5kIHRoZSBjbG9jayBpcyBqdXN0IGEgY291bnRlciB0aGF0IGluY3JlbWVudHMgYmFzZWQgb24gZXZlbnRzIGluIHRoZcKgc3lzdGVtLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKnhuOU9wRUVPRU5CY2cyS291WURDWFEuanBlZyIgLz48ZmlnY2FwdGlvbj5Mb2dpY2FsIGNsb2NrczogYSBkZWZpbml0aW9uLjwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5FYWNoIHByb2Nlc3MgaW4gYSBkaXN0cmlidXRlZCBzeXN0ZW0gY2FuIHVzZSBhIGxvZ2ljYWwgY2xvY2sgdG8gY2F1c2FsbHkgb3JkZXIgYWxsIHRoZSBldmVudHMgdGhhdCBhcmUgcmVsZXZhbnQgdG8gaXQuIEFzIGV2ZW50cyBvY2N1ciBpbiBhIHByb2Nlc3PigIrigJTigIp3aGV0aGVyIHRoZXkgYXJlIHNlbmQgb3IgcmVjZWl2ZSBldmVudHPigIrigJTigIp0aGUgcHJvY2Vzc+KAmXMgY2xvY2sgY291bnRlciBpcyBpbmNyZW1lbnRlZCBieSBhbiBhcmJpdHJhcnkgYW1vdW50LiBXZeKAmWxsIGxlYXJuIG1vcmUgYWJvdXQgaG93IHRoaXMgd29ya3MgaW4gcHJhY3RpY2UgaW4gcGFydCB0d28gb2YgdGhpcyBwb3N0LiBXZeKAmWxsIGFsc28gYmUgaW50cm9kdWNlZCB0byBMYW1wb3J04oCZcyBhbGdvcml0aG0gZm9yIGluY3JlbWVudGluZyBjb3VudGVycywgYW5kIGhvdyB0byBvYmV5IGNhdXNhbGl0eSBhY3Jvc3MgcHJvY2Vzc2VzLiBUaGVyZeKAmXMgc28gbXVjaCBpbnRlcmVzdGluZyBzdHVmZiB0byBsZWFybjsgdGhhbmtmdWxseSB3ZSBoYXZlIG1vcmUgdGltZSBhbmQgYW5vdGhlciBwb3N0IHRvIGNvdmVyIGl0wqBhbGwhPC9wPjxoMz5SZXNvdXJjZXM8L2gzPjxwPkNvbnZlbmllbnRseSwgTGFtcG9ydOKAmXMgd29yayBvbiBsb2dpY2FsIGNsb2NrcyBhbmQgY2F1c2FsIG9yZGVyaW5nIGlzIHdlbGwtdGF1Z2h0IGFuZCB3cml0dGVuIGFib3V0LiBUaGVyZSBhcmUgYSBsb3Qgb2YgZ3JlYXQgcmVzb3VyY2VzIHRoYXQgaW50cm9kdWNlIHRoZXNlIHRvcGljcywgd2l0aCB2YXJ5aW5nIGNvbXBsZXhpdGllcy4gSWYgeW914oCZZCBsaWtlIHRvIGRvIHNvbWUgZnVydGhlciByZWFkaW5nLCBjaGVjayBvdXQgc29tZSBvZiBteSBmYXZvcml0ZSByZXNvdXJjZXMsIHdoaWNoIEnigJl2ZSBsaXN0ZWTCoGJlbG93ITwvcD48b2w+PGxpPjxhIGhyZWY9Imh0dHBzOi8vbGFtcG9ydC5henVyZXdlYnNpdGVzLm5ldC9wdWJzL3RpbWUtY2xvY2tzLnBkZiI+VGltZSwgQ2xvY2tzLCBhbmQgdGhlIE9yZGVyaW5nIG9mIEV2ZW50cyBpbiBhIERpc3RyaWJ1dGVkIFN5c3RlbTwvYT4sIExlc2xpZcKgTGFtcG9ydDwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9aEs2bTZXQmstZDgmYW1wO3Q9M3MiPlRpbWUsIENsb2NrcyBhbmQgT3JkZXJpbmcgb2YgRXZlbnRzIGluIGEgRGlzdC4gU3lzdGVtPC9hPiwgRGFuIFJ1YmVuc3RlaW48L2xpPjxsaT48YSBocmVmPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUNNQmp2Q3pEVmtZIj5UaW1lIGFuZCBPcmRlcmluZzogTGFtcG9ydCBUaW1lc3RhbXBzPC9hPiwgSW5kcmFuaWzCoEd1cHRhPC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9td2hpdHRha2VyLmdpdGh1Yi5pby9ibG9nL2xhbXBvcnRzX2xvZ2ljYWxfY2xvY2tzLyI+TGFtcG9ydOKAmXMgTG9naWNhbCBDbG9ja3M8L2E+LCBNaWNoYWVsIFdoaXR0YWtlcjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmNzLnJ1dGdlcnMuZWR1L35weGsvcnV0Z2Vycy9ub3Rlcy9jb250ZW50LzA4LWxvZ2ljYWwtY2xvY2tzLXNsaWRlcy5wZGYiPkxvZ2ljYWwgQ2xvY2tzPC9hPiwgUHJvZmVzc29yIFBhdWwgS3J6eXphbm93c2tpPC9saT48L29sPjxpbWcgc3JjPSJodHRwczovL21lZGl1bS5jb20vXy9zdGF0P2V2ZW50PXBvc3QuY2xpZW50Vmlld2VkJnJlZmVycmVyU291cmNlPWZ1bGxfcnNzJnBvc3RJZD1kMDMxN2U0MDcxMTIiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGFsdD0iIj48aHI+PHA+PGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9sb2dpY2FsLXRpbWUtYW5kLWxhbXBvcnQtY2xvY2tzLXBhcnQtMS1kMDMxN2U0MDcxMTIiPkxvZ2ljYWwgVGltZSBhbmQgTGFtcG9ydCBDbG9ja3MgKFBhcnQgMSk8L2E+IHdhcyBvcmlnaW5hbGx5IHB1Ymxpc2hlZCBpbiA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzIj5iYXNlZHM8L2E+IG9uIE1lZGl1bSwgd2hlcmUgcGVvcGxlIGFyZSBjb250aW51aW5nIHRoZSBjb252ZXJzYXRpb24gYnkgaGlnaGxpZ2h0aW5nIGFuZCByZXNwb25kaW5nIHRvIHRoaXMgc3RvcnkuPC9wPl1dPjwvY29udGVudDplbmNvZGVkPgogICAgICAgIDwvaXRlbT4KICAgICAgICA8aXRlbT4KICAgICAgICAgICAgPHRpdGxlPjwhW0NEQVRBW09yZGVyaW5nIERpc3RyaWJ1dGVkIEV2ZW50c11dPjwvdGl0bGU+CiAgICAgICAgICAgIDxsaW5rPmh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvb3JkZXJpbmctZGlzdHJpYnV0ZWQtZXZlbnRzLTI5YzFkZDlkMWVmZj9zb3VyY2U9cnNzLThmNTU5OTNjOTczZS0tLS0tLTI8L2xpbms+CiAgICAgICAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0cHM6Ly9tZWRpdW0uY29tL3AvMjljMWRkOWQxZWZmPC9ndWlkPgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbc29mdHdhcmUtZGV2ZWxvcG1lbnRdXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbY29kZV1dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtjb21wdXRlci1zY2llbmNlXV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW3Byb2dyYW1taW5nXV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW2Rpc3RyaWJ1dGVkLXN5c3RlbXNdXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8ZGM6Y3JlYXRvcj48IVtDREFUQVtWYWlkZWhpIEpvc2hpXV0+PC9kYzpjcmVhdG9yPgogICAgICAgICAgICA8cHViRGF0ZT5UaHUsIDI0IE9jdCAyMDE5IDAyOjI1OjMxIEdNVDwvcHViRGF0ZT4KICAgICAgICAgICAgPGF0b206dXBkYXRlZD4yMDE5LTEwLTI0VDAyOjI1OjMxLjUzOFo8L2F0b206dXBkYXRlZD4KICAgICAgICAgICAgPGNvbnRlbnQ6ZW5jb2RlZD48IVtDREFUQVs8ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKlNPemZSMkNtcjBkTVIzd252dXR2QncuanBlZyIgLz48ZmlnY2FwdGlvbj5PcmRlcmluZyBkaXN0cmlidXRlZCBldmVudHM8L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+T25lIG9mIHRoZSBoYXJkZXN0IHRoaW5ncyBhYm91dCBkaXN0cmlidXRlZCBzeXN0ZW1zIGlzIHRoYXQgd2Ugb2Z0ZW4gZmluZCBvdXJzZWx2ZXMgbmVlZGluZyB0byBhcHByb2FjaCB0aGVtIHZlcnkgZGlmZmVyZW50bHkgdGhhbiBvdGhlciBwcm9ibGVtcyBpbiBjb21wdXRpbmcuIERpc3RyaWJ1dGVkIGNvbXB1dGluZyBmb3JjZXMgdXMgdG8gcmVldmFsdWF0ZSBob3cgd2XigJlkIGFwcHJvYWNoIGV2ZW4gdGhlIHNpbXBsZXN0IG9ic3RhY2xlcyBpbiBhIHNpbmdsZSBzeXN0ZW3CoG1vZGVsLjwvcD48cD5XZSByZWNlbnRseSBiZWdhbiBleHBsb3Jpbmcgb25lIHN1Y2ggZXhhbXBsZSBvZiB0aGlzIHdoZW4gd2UgdG9vayBhIGNsb3NlciBsb29rIGF0IDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvdGlja2luZy1jbG9ja3MtaW4tYS1kaXN0cmlidXRlZC1zeXN0ZW0tZWYyYWE0ZGYwN2EzIj50aWNraW5nIGNsb2NrczwvYT4gYW5kIGhvdyB1bnJlbGlhYmxlIHRoZXkgYXJlIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtISBBcyB3ZSBsZWFybmVkLCB0aGVyZSBpcyBubyBzaW5nbGUgZ2xvYmFsIGNsb2NrIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtLCB3aGljaCBtYWtlcyBpdCBoYXJkIHRvIGV2ZXIgYWdyZWUgb24gd2hhdCB0aW1lIGl0IGlzLiBVbmRlcnN0YW5kaW5nIHRoZSBjYXZlYXRzIG9mIGNsb2NrcyBhbmQgdGltZSBpcyBjcnVjaWFsIHRvIHdyYXBwaW5nIG9uZeKAmXMgaGVhZCBhcm91bmQgdGhlIGRpc3RyaWJ1dGVkIGNvbXB1dGluZyBtb2RlbC48L3A+PHA+QnV0IHdoeSBpcyB0aW1lIDxlbT5zcGVjaWZpY2FsbHk8L2VtPiBzbyBpbXBvcnRhbnQ/IFdoeSBkbyB3ZSByZWFsbHkgY2FyZSB3aGF0IHRpbWUgaXQgaXMsIGFuZCB3aHkgZG9lcyBpdCBtYXR0ZXIgdGhhdCB3ZSBrbm93IHdoZW4gdGhpbmdzIGhhcHBlbmVkPyBBbmQgaWYgaXQgbWF0dGVycywgaG93IGRvIHdlIGdvIGFib3V0IGZpZ3VyaW5nIG91dCB3aGF0IHRpbWUgaXQgaXMgd2l0aG91dCBhIGdsb2JhbCBjbG9jayB0byByZWx5IHVwb24/IEFzIHdl4oCZbGwgbGVhcm4sIGl04oCZcyBub3Qgc28gbXVjaCB0aGUgY2xvY2tzIGFuZCB0aW1lIHRoYXQgd2UgY2FyZSBhYm91dCwgYnV0IHJhdGhlciwgdGhlIGV2ZW50cyB0aGF0IHRoZXnigJlyZSBhbHdheXMgdGllZMKgdG8uPC9wPjxoMz5UaW1lIGluIHRoZSBodW1hbsKgbWluZDwvaDM+PHA+QWx0aG91Z2ggd2XigJl2ZSBhbHJlYWR5IGRpcHBlZCBvdXIgdG9lcyBpbnRvIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvdGlja2luZy1jbG9ja3MtaW4tYS1kaXN0cmlidXRlZC1zeXN0ZW0tZWYyYWE0ZGYwN2EzIj50aGUgdG9waWMgb2YgdGltZTwvYT4sIHRoZXJl4oCZcyBzdGlsbCBhIGxvdCBtb3JlIGxlZnQgZm9yIHVzIHRvIHVuY292ZXIuIEluIGZhY3QsIHdlIHdvbuKAmXQgZXZlbiBiZSBkb25lIHRhbGtpbmcgYWJvdXQgdGltZSBieSB0aGUgZW5kIG9mIHRoaXMgcG9zdCEgTm93LCBpdCBtaWdodCBzZWVtIG9kZCB0byBzcGVuZCBzbyBtdWNoIHRpbWUgbGVhcm5pbmcgYWJvdXQsIHdlbGwsIDxlbT50aW1lPC9lbT4uIFdoeSBkb2VzIHRpbWUgbWF0dGVyIHNvIG11Y2ggaW4gYSBkaXN0cmlidXRlZCBzeXN0ZW0sIGFueXdheT8gSWYgd2UgdGhpbmsgYWJvdXQgaXQgbW9yZSBkZWVwbHksIHdlIG1pZ2h0IHJlYWxpemUgdGhhdCB3ZSBkb27igJl0IHNwZWNpZmljYWxseSBjYXJlIGFib3V0IGtub3dpbmcgd2hhdCB0aW1lIGl0IGlzIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtLiBXaGF0IHdlIGNhcmUgYWJvdXQgaXMgYmUgYWJsZSB0byByZWx5IG9uIHRpbWUgdG8gaGVscCB1cyBvcmRlcsKgdGhpbmdzLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKmdCalRtU01XSmVLYjFVaDVZdTBoQWcuanBlZyIgLz48ZmlnY2FwdGlvbj5XaHkgZG9lcyBrbm93aW5nIHRoZSB0aW1lIGV2ZW4gbWF0dGVyIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtPzwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48YmxvY2txdW90ZT5UaGUgbm90aW9uIG9mIHRpbWUgaGVscHMgdXMgb3JkZXIgZXZlbnRzIGluIGEgc2luZ2xlIHN5c3RlbSBhcyB3ZWxsIGFzIGEgZGlzdHJpYnV0ZWQgb25lLjwvYmxvY2txdW90ZT48cD5UaW1lIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgd2hlbiBpdCBjb21lcyB0byBvcmRlcmluZyBldmVudHMgaW4gc3lzdGVtLiBNb3N0IHByb2dyYW1tZXJzIHdpbGwgcmVseSBvbiBhbmQgZXhwZWN0IHNvbWUga2luZCBvZiB0aW1lIGZvcm1hdCB3aGVuIHRoZXkgZGVhbCB3aXRoIGRhdGEgb3IgcHJvY2Vzc2VzOyB0aGlzIHRpbWUgZm9ybWF0IGlzIHVzdWFsbHkgc29tZXRoaW5nIGxpa2UgYSA8c3Ryb25nPjxlbT50aW1lc3RhbXA8L2VtPjwvc3Ryb25nPiwgd2hpY2ggYXJlIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyB0aGF0IGhhdmUgYmVlbiBlbmNvZGVkIHRvIHJlcHJlc2VudCBhIGNlcnRhaW4gbW9tZW50IGluIHRpbWUuIFdlIHVzZSB0aW1lc3RhbXBzIGluIG9yZGVyIHRvIHRlbGwgd2hlbiBzb21lIGRhdGEgd2FzIGNyZWF0ZWQgb3IgdXBkYXRlZCwgd2hlbiBhIG1lc3NhZ2Ugd2FzIHNlbnQgb3IgcmVjZWl2ZWQsIGFuZCB3aGVuIGEgcHJvY2VzcyB3YXMgc3RhcnRlZCBvciBjb21wbGV0ZWQuIEluIGFjdHVhbGl0eSwgd2UgZG9u4oCZdCBjYXJlIGFib3V0IHRoZSB0aW1lc3RhbXAgb24gaXRzIG93buKAiuKAlOKAiml04oCZcyByZWFsbHkgdGhlIHRpbWVzdGFtcCA8ZW0+YmVpbmc8L2VtPiA8ZW0+dGllZCB0bzwvZW0+IHNvbWUgZGF0YSBvciBldmVudCB0aGF0IG1ha2VzIGl0IHVzZWZ1bCB0b8KgdXMuPC9wPjxwPlRoZSB0cm91YmxlIGlzLCBob3dldmVyLCB0aGF0IHdlIGh1bWFucyBoYXZlIG91ciBvd24gbm90aW9uIG9mIHRpbWUgYW5kIGhvdyBpdCBvdWdodCB0b8Kgd29yay48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpvTFltWEN2SldhNjc3aDI0X2dUYkV3LmpwZWciIC8+PGZpZ2NhcHRpb24+T3VyIGNvbmNlcHQgb2YgdGltZSBpc8KgbGluZWFyITwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5XZSB0ZW5kIHRvIHRoaW5rIG9mIHRpbWUgYXMgYmVpbmcgbGluZWFyOyBhbiBldmVudCBoYXBwZW5zIGF0IOKAnHNvbWXigJ0gdGltZSwgYW5vdGhlciBldmVudCBoYXBwZW5zIGFmdGVyIGl0IGF0IOKAnGFub3RoZXLigJ0gdGltZSwgYW5kIGEgZmluYWwgZXZlbnQgaGFwcGVucyBsYXN0LCBhdCBzb21lIOKAnGZpbmFs4oCdwqB0aW1lLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKlZlbzk5amZQTTJuQUNNdUx6c1RCVmcuanBlZyIgLz48ZmlnY2FwdGlvbj5UaGUgaHVtYW4gbWVudGFsIG1vZGVsIG9mIHRpbWUgYXNzdW1lcyBhIGZld8KgdGhpbmdzLjwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5UaGUgaHVtYW4gbWVudGFsIG1vZGVsIG9mIHRpbWUgYXNzdW1lcyBhIGZld8KgdGhpbmdzLjwvcD48b2w+PGxpPkZpcnN0LCB3ZSBhbGwgYWdyZWUgb24gd2hhdCB0aW1lIGl0IGlzLiBXZSBoYXZlIHRpbWV6b25lcyBhbmQgc2hhcmVkIGNsb2NrcyAoaW5jbHVkaW5nIGEgZ2xvYmFsIGF0b21pYyBjbG9jayksIGFuZCB0aGVyZSBpcyByYXJlbHkgYW55IGRpc2NyZXBhbmN5IGJldHdlZW4gdXMgd2hlbiBpdCBjb21lcyB0byB3aGF0IHRpbWUgaXQgaXMgaW4gYSBnaXZlbiBsb2NhdGlvbi48L2xpPjxsaT5TZWNvbmQsIHdlIHRlbmQgdG8gdGhpbmsgb2YgZXZlbnRzIGhhcHBlbmluZyBhcyBvbmUgYWZ0ZXIgYW5vdGhlci4gRXZlbnQgQSBoYXBwZW5zIGZpcnN0LCB0aGVuIGV2ZW50IEIsIGFuZCBmaW5hbGx5LCBldmVudMKgQy48L2xpPjxsaT5UaGlyZCwgd2UgY2FuIGRldGVybWluZSB0aGUgZXhhY3Qgb3JkZXIgb2YgZXZlbnRzIGJhc2VkIG9uIHdoaWNoIGV2ZW50IGhhcHBlbmVkIGJlZm9yZSBhbm90aGVyLiBJbiBvdGhlciB3b3JkcywgaWYgZXZlbnQgQSBoYXBwZW5lZCBiZWZvcmUgZXZlbnQgQiwgYW5kIHdlIGtub3cgdGhlIHRpbWUgb2YgQSBhbmQgQiwgd2Uga25vdyB0aGUgZXhhY3Qgb3JkZXJpbmcgb2YgdGhlIHR3b8KgZXZlbnRzLjwvbGk+PC9vbD48cD5XaGlsZSB0aGlzIG1pZ2h0IHNlZW0gb2J2aW91cyB0byB1cywgdGhpcyBtZW50YWwgbW9kZWwgb2YgdGltZSBkb2VzbuKAmXQgd29yayBpbiB0aGUgY29udGV4dCBvZiBkaXN0cmlidXRlZCBzeXN0ZW1zISBUaGVyZSBhcmUgc29tZSBtYWpvciBkaWZmZXJlbmNlcyBiZXR3ZWVuIG91ciBodW1hbiBtZW50YWwgbW9kZWwgb2YgaG93IHRpbWUgd29ya3MgYW5kIHRoZSByZWFsaXR5IG9mIHRpbWUgaW4gZGlzdHJpYnV0ZWQgc3lzdGVtcy48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpOcHdkcUYzWE1nUC1wSjd3bUNfREJBLmpwZWciIC8+PGZpZ2NhcHRpb24+VGhlIHJlYWxpdHkgb2YgaG93IHRpbWUgd29ya3MgaW4gYSBkaXN0cmlidXRlZCBzeXN0ZW0gaXMgdmVyeSBkaWZmZXJlbnQgZnJvbSB0aGUgaHVtYW4gbWVudGFswqBtb2RlbC48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+VGhlIGZpcnN0IGRpZmZlcmVuY2UgaXMgb25lIHRoYXQgd2UgYWxyZWFkeSBrbm93OiBkaXN0cmlidXRlZCBzeXN0ZW1zIGhhdmUgPHN0cm9uZz48ZW0+bm8gZ2xvYmFsIGNsb2NrPC9lbT48L3N0cm9uZz4sIHNvIHRoZXJlIGlzIGp1c3Qgbm8gd2F5IHRvIGJlIHN1cmUgb2Ygd2hhdCB0aW1lIGl0IGlzIG9uIGEgZGlmZmVyZW50IG1hY2hpbmUgaW4gYSBkaWZmZXJlbnQgbG9jYXRpb24uIFRoZSBzZWNvbmQgZGlmZmVyZW5jZSB0byBub3RlIGlzIHRoYXQgZXZlbnRzIGRvbuKAmXQganVzdCBoYXBwZW4gb25lIGFmdGVyIGFub3RoZXIhIEV2ZW50cyBjYW4gaGFwcGVuIGF0IHRoZSBzYW1lIHRpbWUsIGluIHBhcmFsbGVsLCBvciA8c3Ryb25nPjxlbT5jb25jdXJyZW50bHk8L2VtPjwvc3Ryb25nPi4gQm90aCBvZiB0aGVzZSBwb2ludHMgbGVhZCB1cyB0byBvbmUgbW9yZSBtYWpvciBkaWZmZXJlbmNlOiBldmVudHMgaGFwcGVuIGluIGRpZmZlcmVudCBwbGFjZXMsIGluIGRpZmZlcmVudCBub2Rlcy9sb2NhdGlvbnMgaW4gYSBzeXN0ZW0uIEJ1dCwgYmVjYXVzZSB0aGV5IGNhbiBoYXBwZW4gYXQgdGhlIHNhbWUgdGltZSwgYW5kIGJlY2F1c2UgaXTigJlzIG5vdCBwb3NzaWJsZSB0byBrbm93IHdoYXQgdGltZSBpdCBpcyB3aXRob3V0IGEgZ2xvYmFsIGNsb2NrLCB0aGUgZXZlbnRzIHRoYXQgb2NjdXIgYWxsIG92ZXIgYSBkaXN0cmlidXRlZCBuZXR3b3JrIGFyZSA8c3Ryb25nPjxlbT5oYXJkIHRvwqBvcmRlcjwvZW0+PC9zdHJvbmc+ITwvcD48cD5UaGUgaHVtYW4gbW9kZWxpbmcgb2YgdGltZSBhbmQgdGhlIHJlYWxpdHkgb2YgdGltZSBpbiBhIGRpc3RyaWJ1dGVkIHN5c3RlbSBhcmUgZWFjaCB0d28gdmVyeSBkaWZmZXJlbnQgYXBwcm9hY2hlcyB0byBob3cgd2UgbWlnaHQgZ28gYWJvdXQgb3JkZXJpbmcgZXZlbnRzIGluIGEgc3lzdGVtLiBJbiB0aGUgaHVtYW4gbW9kZWwgYXBwcm9hY2gsIHdlIGtub3cgZXhhY3RseSB3aGF0IHRpbWUgaXQgaXMsIHNvIGl04oCZcyBlYXN5IHRvIGZpZ3VyZSBvdXQgaG93IHRvIG9yZGVyIHNvbWUgZXZlbnRz4oCK4oCU4oCKd2UgY2FuIGp1c3QgdXNlIGVhY2ggZXZlbnTigJlzIHRpbWVzdGFtcCwgc2luY2Ugd2Uga25vdyB3aGF0IHRpbWUgaXQgaXMhIEJ1dCBpbiB0aGUgZGlzdHJpYnV0ZWQgc3lzdGVtIGFwcHJvYWNoLCB3ZSBkb27igJl0IGhhdmUgdGhlIGx1eHVyeSBvZiBoYXZpbmcgYWxsIHRoZSBpbmZvcm1hdGlvbiAocmVhZDoga25vd2luZyB0aGUgdGltZSkgYWJvdXQgYWxsIHRoZSBldmVudHMgaW4gdGhlwqBzeXN0ZW0uPC9wPjxoMz5Ub3RhbCBhbmQgcGFydGlhbMKgb3JkZXJpbmc8L2gzPjxwPlRoZSBodW1hbiBtb2RlbGluZyBvZiB0aW1lIGFuZCB0aGUgbW9yZSByZWFsaXN0aWMgdmlldyBvZiB0aW1lIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtIGNhbiBiZSBncm91cGVkIGludG8gdHdvIHZlcnkgZGlmZmVyZW50IGFwcHJvYWNoZXMgb2Ygb3JkZXJpbmcgZXZlbnRzLiBMZXTigJlzIGxlYXJuIGEgYml0IG1vcmUgYWJvdXTCoHRoZW0uPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqVkRtN25VM0xSdVoyaFk4TG1McGhGUS5qcGVnIiAvPjxmaWdjYXB0aW9uPlRvdGFsIG9yZGVyIG9mIGV2ZW50czogYSBkZWZpbml0aW9uPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPk91ciB2aWV3IG9mIHRpbWUgYWxpZ25zIHdlbGwgd2l0aCBhIHNpbmdsZSBzeXN0ZW3igJlzIG1vZGVsIG9mIHRpbWUuIEluIGEgc2luZ2xlIHN5c3RlbeKAiuKAlOKAimFzIG9wcG9zZWQgdG8gYSBkaXN0cmlidXRlZCBvbmXigIrigJTigIplYWNoIGV2ZW50IGNhbiBiZSBwbGFjZWQgaW4gYSBzcGVjaWZpYyBvcmRlciwgd2hpY2ggaXMgYmFzZWQgb24gd2hhdCB0aW1lIHRoZXkgb2NjdXJyZWQuIFRoaXMgaXMgYWxzbyBrbm93biBhcyBhIDxzdHJvbmc+PGVtPnRvdGFsIG9yZGVyaW5nPC9lbT48L3N0cm9uZz4gb2bCoGV2ZW50cy48L3A+PHA+V2hlbiBldmVudHMgaW4gYSBzeXN0ZW0gZm9sbG93IGEgdG90YWwgb3JkZXIsIHRoZW4gZXZlcnkgZXZlbnQgaW4gdGhhdCBzeXN0ZW0gaGFzIGEgc3BlY2lmaWMgb3JkZXIgaW4gd2hpY2ggaXQgb2NjdXJyZWQuIEluIG90aGVyIHdvcmRzLCB3aGVuIHdlIGtub3cgZXhhY3RseSB3aGVuIDxlbT5lYWNoPC9lbT4gb2YgdGhlIGV2ZW50cyBvY2N1cnJlZCwgd2Uga25vdyB0aGUgdG90YWwgb3JkZXIgb2YgYWxsIHRoZSBldmVudHMgaW4gYcKgc3lzdGVtLjwvcD48cD5Gb3IgZXhhbXBsZSwgaW4gdGhlIGlsbHVzdHJhdGlvbiBzaG93biBhYm92ZSwgaWYgd2Uga25ldyB0aGF0IGV2ZW50IEEgb2NjdXJyZWQgZmlyc3QsIGZvbGxvd2VkIGJ5IGV2ZW50IEIsIGFuZCBlbmRpbmcgd2l0aCBldmVudCBDLCB0aGVuIHdlIHdvdWxkIGtub3cgdGhlIDxzdHJvbmc+PGVtPnRvdGFsIG9yZGVyPC9lbT48L3N0cm9uZz48ZW0+IDwvZW0+b2YgYWxsIHRoZSBldmVudHMuIEV2ZW50cyBpbiBhIHNpbmdsZSBzeXN0ZW0gY2FuIGJlIHRvdGFsbHkgb3JkZXJlZCBzaW5jZSB3ZSBoYXZlIGEgbG9jYWwgY2xvY2sgdG8gaGVscCB1cyBmaWd1cmUgb3V0IGV4YWN0bHkgd2hlbiBhbiBldmVudCBoYXBwZW5lZCwgd2hpY2ggYWxsb3dzIHVzIHRvIGZpZ3VyZSBvdXQgdGhlIHRvdGFsIG9yZGVyaW5nIG9mIGFsbCB0aGXCoGV2ZW50cy48L3A+PHA+WWV0IGEgZGlzdHJpYnV0ZWQgc3lzdGVtIGlzIHZlcnkgZGlmZmVyZW50IGZyb20gYSBzaW5nbGUgc3lzdGVtISBTdXJlLCBhbiBpbmRpdmlkdWFsIG5vZGUgaW4gYSBzeXN0ZW0gd2lsbCBrbm93IHdoYXQgdGltZSBpdCBpcyBiYXNlZCBvbiBpdHMgbG9jYWwgY2xvY2ssIGJ1dCBpdCB3b27igJl0IGtub3cgd2hhdCB0aW1lIGl0IGlzIG9uIGFub3RoZXIgbm9kZS4gSXTigJlzIGFsbW9zdCBhcyBpZiBlYWNoIG5vZGUgaW4gYSBkaXN0cmlidXRlZCBzeXN0ZW0gY2FuIGdldCBoYWxmd2F5IHRvIGEgdG90YWwgb3JkZXJpbmfigKZpdCBjYW4gb3JkZXIgaXRzIG93biBldmVudHMsIGJ1dCBpZiBpdCByZWNlaXZlcyBhbnkgbWVzc2FnZXMvaW5jb21pbmcgZXZlbnRzIGZyb20gb3RoZXIgbm9kZXMgaW4gdGhlIHN5c3RlbSwgaXQgd29u4oCZdCBrbm93IHdoYXQgdG8gZG8gd2l0aMKgdGhlbS48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSoxTGh3bmRob2VuRmlZaHBPNE1mazN3LmpwZWciIC8+PGZpZ2NhcHRpb24+UGFydGlhbCBvcmRlciBvZiBldmVudHM6IGEgZGVmaW5pdGlvbjwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5UaGlzIGJyaW5ncyB1cyB0byBwYXJ0aWFsIG9yZGVyaW5nLCB3aGljaCBpcyBhIOKAnGxlc3Mgc3VyZeKAnSB2ZXJzaW9uIG9mIHRvdGFsIG9yZGVyaW5nLiBJbiBhIDxzdHJvbmc+PGVtPnBhcnRpYWwgb3JkZXI8L2VtPjwvc3Ryb25nPiwgd2UgY2Fu4oCZdCBiZSBzdXJlIG9mIHRoZSBleGFjdCBvcmRlciBvZiA8ZW0+YWxsPC9lbT4gdGhlIGV2ZW50cyBpbiB0aGUgc3lzdGVtLiBJbnN0ZWFkLCBhbGwgd2UgY2FuIGJlIHN1cmUgYWJvdXQgaXMgdGhlIG9yZGVyIG9mIGV2ZW50cyB0aGF0IGFyZSByZWxpYW50IHVwb24gb25lwqBhbm90aGVyLjwvcD48cD5MZXTigJlzIHRoaW5rIGJhY2sgdG8gb3VyIGV4YW1wbGUgdGhyZWUgZXZlbnRzOiBBLCBCLCBhbmQgQy4gSW4gYSBzaW5nbGUgc3lzdGVtIG9yIGluIGEgc3lzdGVtIHdpdGggYSB0b3RhbCBvcmRlciwgd2Ugd2VyZSBhYmxlIHRvIGtub3cgdGhlIGV4YWN0IG9yZGVyIG9mIGVhY2ggb2YgdGhlc2UgZXZlbnRzLiBCdXQgaW4gYSBkaXN0cmlidXRlZCBzeXN0ZW0sIHRoYXQgd291bGQgaGF2ZSBsaWtlbHkgbm90IGJlZW4gdGhlIGNhc2UhIEluc3RlYWQsIHdlIHByb2JhYmx5IHdvdWxkIGhhdmUgYmVlbiBzdXJlIGFib3V0IHNvbWUgb2YgdGhlIGV2ZW50cywgYnV0IG5vdMKgb3RoZXJzLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKjJuZGpmM19XYkhYR1NBazBzLUdpR0EuanBlZyIgLz48ZmlnY2FwdGlvbj5VbmRlcnN0YW5kaW5nIHBhcnRpYWwgb3JkZXJpbmcgd2l0aCBtdWx0aXBsZcKgZXZlbnRzLjwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5Gb3IgZXhhbXBsZSwgbGV04oCZcyBzYXkgdGhhdCB3ZSBhcmUgc3VyZSBhYm91dCB3aGVuIGV2ZW50IEIgYW5kIGV2ZW50IEMgb2NjdXJyZWQuIEluIGZhY3QsIGxldOKAmXMgc2F5IHRoYXQgd2UgYXJlIGV2ZW4gc3VyZSB0aGF0IGV2ZW50IEIgb2NjdXJyZWQgYmVmb3JlIGV2ZW50IEMuIEJ1dCB3aGF0IGFib3V0IGV2ZW50IEE/IFdl4oCZcmUgbm90IDxlbT5hdCBhbGw8L2VtPiBzdXJlIGFib3V0IHdoZW4gdGhhdCBldmVudCBvY2N1cnJlZCE8L3A+PHA+SW4gcmVhbGl0eSwgYmVjYXVzZSB3ZSBkb27igJl0IGtub3cgd2hlbiBldmVudCBBIG9jY3VycmVkLCBpdCBjb3VsZCBoYXZlIHRoZW9yZXRpY2FsbHkgaGFwcGVuZWQgYXQgYW55IHRpbWU6IGJlZm9yZSBldmVudCBCLCBhZnRlciBldmVudCBDLCBvciBldmVuIHJpZ2h0IGJldHdlZW4gdGhlIHR3byBldmVudHMhIEFsbCB3ZSBjYW4gc2F5IHdpdGggY2VydGFpbnR5IGlzIHRoYXQgZXZlbnQgQiBvY2N1cnJlZCBiZWZvcmXCoEMuPC9wPjxibG9ja3F1b3RlPkluZGVlZCwgb3VyIHBhcnRpYWwgc3VyZW5lc3MgYWJvdXQgaG93IHRvIG9yZGVyIHRoZXNlIGV2ZW50cyBpcyB3aGF0IG1ha2VzIHRoaXMgc2V0IG9mIGV2ZW50cyBhIHBhcnRpYWwgb3JkZXJpbmfigJQgd2XigJlyZSBvbmx5IOKAnHBhcnRpYWxseeKAnSBzdXJlIGFib3V0IHRoZSBvcmRlciBvZiB0aGVzZcKgZXZlbnRzLjwvYmxvY2txdW90ZT48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKnFfNlhNaU1KanMzOVpTUEFndG5oLUEuanBlZyIgLz48ZmlnY2FwdGlvbj5XaXRob3V0IGEgZ2xvYmFsIGNsb2NrLCBkaXN0cmlidXRlZCBzeXN0ZW0gZXZlbnRzIGFyZSBwYXJ0aWFsbHkgb3JkZXJlZC48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+SW4gYSBkaXN0cmlidXRlZCBzeXN0ZW0sIHdlIG1vc3RseSBkZWFsIHdpdGggcGFydGlhbGx5IG9yZGVyZWQgZXZlbnRzLCBzaW1wbHkgYmVjYXVzZSBpbmRpdmlkdWFsIG5vZGVzIGNhbiBiZSBzdXJlIGFib3V0IGhvdyB0byBvcmRlciBsb2NhbCBldmVudHMsIGJ1dCB0aGV5IGNhbuKAmXQgYWx3YXlzIGJlIHN1cmUgYWJvdXQgaG93IHRvIG9yZGVyIGV2ZW50cyB0aGF0IGFyZSBoYXBwZW5pbmcgb24gYSBkaWZmZXJlbnQgbm9kZS4gQSBub2RlIGluIG91ciBkaXN0cmlidXRlZCBzeXN0ZW0gd2lsbCBzZW5kIG1lc3NhZ2VzIG91dCB0byBvdGhlciBub2Rlcywgd2hvIGNhbuKAmXQgbmVjZXNzYXJpbHkgYmUgc3VyZSBvZiB3aGVuIHRoZXkgb2NjdXJyZWQuIFNpbWlsYXJseSBhIG5vZGUgaW4gb3VyIHN5c3RlbSB3aWxsIHJlY2VpdmUgaXRzIG93biBzZXQgb2YgaW5jb21pbmcgbWVzc2FnZXMsIGFuZCBpdCBjYW7igJl0IGJlIHN1cmUgb2Ygd2hhdCB0aW1lIHRob3NlIG1lc3NhZ2VzIHdlcmUgc2VudCzCoGVpdGhlciE8L3A+PHA+U28gaG93IGRvIHdlIHJlY29uY2lsZSB0aGlzIGxhY2sgb2Yga25vd2xlZGdlIHRocm91Z2hvdXQgb3VyIHN5c3RlbT8gV2VsbCwgaXQgaW52b2x2ZXMgc29tZSByZWZyYW1pbmcgb2YgaG93IHdlIHRoaW5rIGFib3V0IHRpbWXigKZhbmQgd2hldGhlciB3ZSBldmVuIG5lZWQgaXQgYXQgYWxswqAoPyEpLjwvcD48aDM+TWF5YmUgdGltZSBkb2VzbuKAmXTCoG1hdHRlcjwvaDM+PHA+SW4gdGhlIGJlZ2lubmluZyBvZiB0aGlzIHBvc3QsIHdlIGFza2VkIG91cnNlbHZlcyB3aHkgd2UgZXZlbiA8ZW0+Y2FyZWQ8L2VtPiBhYm91dCB0aW1lLiBXZSByZWFsaXplZCB0aGF0IHRoZSByZWFzb24gaXQga2VwdCBjb21pbmcgdXAgd2FzIGJlY2F1c2Ugd2UgcmVsaWVkIG9uIHRpbWUgdG8gb3JkZXIgZXZlbnRzIGluIG91ciBzeXN0ZW0uIEFsb25nIHRoZSB3YXksIHdlIGxlYXJuZWQgdGhhdCBzb21ldGltZXMgd2UgY2FuIGJlIHN1cmUgYWJvdXQgdGhlIG9yZGVyIG9mIGV2ZW50cyAodG90YWwgb3JkZXJpbmcpIGFuZCBvdGhlciB0aW1lcywgd2VsbCwgd2UgY2Fu4oCZdCBiZSBzdXJlIG9mIGV2ZXJ5dGhpbmcgKHBhcnRpYWwgb3JkZXJpbmcpLiBCdXQgaWYgd2UgY2lyY2xlIGJhY2sgdG8gb3VyIG9yaWdpbmFsIHF1ZXN0aW9uLCB3ZSBtaWdodCByZWFsaXplIHRoYXQgd2UgZG9u4oCZdCBhY3R1YWxseSBjYXJlIGFib3V0IDxlbT50aW1lPC9lbT4sIGJ1dCByYXRoZXIgdGhlIG9yZGVyIGluIHdoaWNoIHRoaW5nc8KgaGFwcGVuLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKlc5eEUtNjIzby13bmV0aDNmOHhGb3cuanBlZyIgLz48ZmlnY2FwdGlvbj5NYXliZSB0aW1lIGl0c2VsZiBpc27igJl0IGltcG9ydGFudCEgTWF5YmUgd2UganVzdCBjYXJlIGFib3V0IHRoZSBvcmRlciBvZsKgdGhpbmdzLjwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5QZXJoYXBzIHdlIGRvbuKAmXQgYWN0dWFsbHkgbmVlZCB0byB3b3JyeSBhYm91dCB0aGUgZXhhY3QgdGltZSB0aGF0IGVhY2ggZXZlbnQgaW4gb3VyIHN5c3RlbSBvY2N1cnJlZC4gSW5zdGVhZCwgbWF5YmUgd2Ugc2hvdWxkIHRyeSB0byBqdXN0IGZpZ3VyZSBvdXQgd2hlbiB0aG9zZSBldmVudHMgaGFwcGVuZWQgaW4gYSB3YXkgdGhhdCBkb2VzbuKAmXQgPGVtPnJlcXVpcmUgdXM8L2VtPiB0byBldmVuIHRoaW5rIGFib3V0IGNsb2NrcyBvcsKgdGltZSE8L3A+PHA+QWxsIHdlIHJlYWxseSB3YW50IHRvIGtub3cgaXMgdGhlIG9yZGVyIGluIHdoaWNoIHNvbWUgZXZlbnRzIG9jY3VycmVkLiBBbmQgd2h5IGRvIHdlIGNhcmUgYWJvdXQgdGhlIG9yZGVyaW5nIG9mIGV2ZW50cz8gV2VsbCwgdGhlIG1ham9yIGJlbmVmaXQgb2Ygb3JkZXJpbmcgZXZlbnRzIGlzIHNvIHRoYXQgd2UgY2FuIGZpZ3VyZSBvdXQgaG93IG9uZSBldmVudCBjYXVzZWQgYW5vdGhlciB0byBvY2N1ci4gU28sIHRoZSBxdWVzdGlvbiBpczogaG93IGNhbiB3ZSBnZXQgdGhlIGJlbmVmaXQgb2Ygb3JkZXJpbmcgZXZlbnRzIHdpdGhvdXQgYWxsIHRoZSBoZWFkYWNoZSBvZiBmaWd1cmluZyBvdXQgdGhlIHRpbWUgYXQgd2hpY2ggZWFjaCBldmVudCBoYXBwZW5lZD88L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpoY0t5SV9RR3d5dVhhYUVYSGFUeFZRLmpwZWciIC8+PGZpZ2NhcHRpb24+Q2F1c2FsIG9yZGVyaW5nOiBhIHNuZWFrwqBwZWFrITwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5UaGUgYW5zd2VyIHRvIHRoaXMgbXlzdGVyeSBpcyA8c3Ryb25nPjxlbT5jYXVzYWwgb3JkZXJpbmc8L2VtPjwvc3Ryb25nPiwgd2hpY2ggaGVscHMgdXMgb3JkZXIgZXZlbnRzIG5vdCBiYXNlZCBvbiB0aGUgPGVtPnRpbWU8L2VtPiB0aGF0IHRoZXkgb2NjdXJyZWQsIGJ1dCByYXRoZXIsIGJhc2VkIG9uIGNhdXNlIGFuZCBlZmZlY3QuIENhdXNhbCBvcmRlcmluZyByZWZyYW1lcyBob3cgd2UgdGhpbmsgYWJvdXQgZXZlbnRzLiBJZiB3ZSBjYW4ganVzdCBmaWd1cmUgb3V0IHdoaWNoIGV2ZW50cyBjYXVzZSA8ZW0+b3RoZXI8L2VtPiBldmVudHMsIHdlIGNhbiBjb21lIHVwIHdpdGggYSBsb29zZSBvcmRlcmluZyBvZiBob3cgdGhvc2UgZXZlbnRzIG9jY3VycmVkLjwvcD48cD5JbiBvdGhlciB3b3Jkczogd2UgZG9u4oCZdCBuZWVkIHRvIGNhcmUgYWJvdXQgdGltZSBhbnltb3JlISBXZSBjYW4gc29ydCBvZiBza2lydCBhcm91bmQgaXQsIGFuZCBqdW1wIHJpZ2h0IHRvIHRoZSBtYXR0ZXIgYXQgaGVhcnQ6IGZpZ3VyaW5nIG91dCBpZiBvbmUgZXZlbnQgY2FtZSBiZWZvcmUgYW5vdGhlci4gSW4gdGhlIG5leHQgcG9zdCwgd2XigJlsbCBkaXZlIGludG8gdGhlIGxvZ2ljIGJlaGluZCBjYXVzYWwgb3JkZXJpbmcgYW5kIGZpZ3VyaW5nIG91dCB0aGUgY2hyb25vbG9naWNhbCByZWxhdGlvbnNoaXBzIGJldHdlZW4gZXZlbnRzLiBJbiB0aGUgbWVhbnRpbWUsIHJlc3QgZWFzeSBrbm93aW5nIHRoYXQgd2XigJl2ZSBnb3QgYSAobG9naWNhbCkgdGltZSBzb2x1dGlvbiBhaGVhZCBvZsKgdXMuPC9wPjxoMz5SZXNvdXJjZXM8L2gzPjxwPlVuZGVyc3RhbmRpbmcgdGhlIG9yZGVyaW5nIG9mIGV2ZW50cyBpbiBhIGRpc3RyaWJ1dGVkIHN5c3RlbSBpcyBzdXBlciBoZWxwZnVsIHRvIGtub3cgYmVmb3JlIGxlYXJuaW5nIGFib3V0IG1vcmUgY29tcGxleCB0aW1lLXJlbGF0ZWQgdG9waWNzLiBJdCBjYW4gYmUgaGFyZCB0byBmaW5kIHJlc291cmNlcyB0aGF0IHNwZWNpZmljYWxseSBleHBsYWluIHRvdGFsIGFuZCBwYXJ0aWFsIG9yZGVyaW5nIGluIHRoZSBjb250ZXh0IG9mIGRpc3RyaWJ1dGVkIHN5c3RlbXMsIGJ1dCB0aGVyZSBhIGZldyB0aGF0IGRvIGEgcHJldHR5IGdvb2Qgam9iLCB3aGljaCBJ4oCZdmUgbGlzdGVkwqBiZWxvdyE8L3A+PG9sPjxsaT48YSBocmVmPSJodHRwOi8vYm9vay5taXh1Lm5ldC9kaXN0c3lzL3RpbWUuaHRtbCI+RGlzdHJpYnV0ZWQgU3lzdGVtcyBmb3IgRnVuIGFuZCBQcm9maXQ8L2E+LCBNaWtpdG/CoFRha2FkYTwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ2MjA3NzkvcGFydGlhbC1vcmRlcmluZy1vZi1ldmVudHMtaW4tYS1kaXN0cmlidXRlZC1zeXN0ZW0iPlBhcnRpYWwgb3JkZXJpbmcgb2YgZXZlbnRzIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtPC9hPiwgSmVzc2XCoEJhbmdzPC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5jcy5jb3JuZWxsLmVkdS9jb3Vyc2VzL2NzNjQxMC8yMDE4ZmEvc2xpZGVzLzE0LWxhbXBvcnQtY2xvY2tzLnBkZiI+RGlzdHJpYnV0ZWQgU3lzdGVtczogT3JkZXJpbmcgYW5kIENvbnNpc3RlbmN5PC9hPiwgUHJvZmVzc29yIEEuRi7CoENvb3BlcjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vc2NhdHRlcmVkLXRob3VnaHRzLm5ldC93cml0aW5nL2NhdXNhbC1vcmRlcmluZy8iPkNhdXNhbCBPcmRlcmluZzwvYT4sIEphbWllwqBCcmFuZG9uPC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9sYW1wb3J0LmF6dXJld2Vic2l0ZXMubmV0L3B1YnMvdGltZS1jbG9ja3MucGRmIj5UaW1lLCBDbG9ja3MsIGFuZCB0aGUgT3JkZXJpbmcgb2YgRXZlbnRzIGluIGEgRGlzdHJpYnV0ZWQgU3lzdGVtPC9hPiwgTGVzbGllwqBMYW1wb3J0PC9saT48L29sPjxpbWcgc3JjPSJodHRwczovL21lZGl1bS5jb20vXy9zdGF0P2V2ZW50PXBvc3QuY2xpZW50Vmlld2VkJnJlZmVycmVyU291cmNlPWZ1bGxfcnNzJnBvc3RJZD0yOWMxZGQ5ZDFlZmYiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGFsdD0iIj48aHI+PHA+PGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9vcmRlcmluZy1kaXN0cmlidXRlZC1ldmVudHMtMjljMWRkOWQxZWZmIj5PcmRlcmluZyBEaXN0cmlidXRlZCBFdmVudHM8L2E+IHdhcyBvcmlnaW5hbGx5IHB1Ymxpc2hlZCBpbiA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzIj5iYXNlZHM8L2E+IG9uIE1lZGl1bSwgd2hlcmUgcGVvcGxlIGFyZSBjb250aW51aW5nIHRoZSBjb252ZXJzYXRpb24gYnkgaGlnaGxpZ2h0aW5nIGFuZCByZXNwb25kaW5nIHRvIHRoaXMgc3RvcnkuPC9wPl1dPjwvY29udGVudDplbmNvZGVkPgogICAgICAgIDwvaXRlbT4KICAgICAgICA8aXRlbT4KICAgICAgICAgICAgPHRpdGxlPjwhW0NEQVRBW1RpY2tpbmcgQ2xvY2tzIGluIGEgRGlzdHJpYnV0ZWQgU3lzdGVtXV0+PC90aXRsZT4KICAgICAgICAgICAgPGxpbms+aHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy90aWNraW5nLWNsb2Nrcy1pbi1hLWRpc3RyaWJ1dGVkLXN5c3RlbS1lZjJhYTRkZjA3YTM/c291cmNlPXJzcy04ZjU1OTkzYzk3M2UtLS0tLS0yPC9saW5rPgogICAgICAgICAgICA8Z3VpZCBpc1Blcm1hTGluaz0iZmFsc2UiPmh0dHBzOi8vbWVkaXVtLmNvbS9wL2VmMmFhNGRmMDdhMzwvZ3VpZD4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW2Rpc3RyaWJ1dGVkLXN5c3RlbXNdXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbY29kZV1dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtjb21wdXRlci1zY2llbmNlXV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW3Byb2dyYW1taW5nXV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW3NvZnR3YXJlLWRldmVsb3BtZW50XV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGRjOmNyZWF0b3I+PCFbQ0RBVEFbVmFpZGVoaSBKb3NoaV1dPjwvZGM6Y3JlYXRvcj4KICAgICAgICAgICAgPHB1YkRhdGU+VGh1LCAwMyBPY3QgMjAxOSAwMzo1MDo1MiBHTVQ8L3B1YkRhdGU+CiAgICAgICAgICAgIDxhdG9tOnVwZGF0ZWQ+MjAxOS0xMC0wM1QwMzo1MDo1Mi45ODNaPC9hdG9tOnVwZGF0ZWQ+CiAgICAgICAgICAgIDxjb250ZW50OmVuY29kZWQ+PCFbQ0RBVEFbPGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpOQzhCVjdlbVZxZ0J0eHJIR2hLRkRnLmpwZWciIC8+PGZpZ2NhcHRpb24+VGlja2luZyBjbG9ja3MgaW4gYSBkaXN0cmlidXRlZCBzeXN0ZW08L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+V2Ugb2Z0ZW4gc3BlbmQgYSBsb3Qgb2Ygb3VyIGxpdmVzIGJsaXNzZnVsbHkgdW5hd2FyZSBvZiBob3cgc29tZXRoaW5nIHdvcmtzLiBNb3N0IG9mIHRoZSB0aW1lLCB0aGlzIGVuZHMgdXAgYmVpbmcgYW4gb2theSB0aGluZywgc2luY2Ugd2UgZG9u4oCZdCByZWFsbHkgbmVlZCB0byBrbm93IGhvdyBldmVyeXRoaW5nIGFyb3VuZCB1cyB3b3Jrcy4gQnV0IHRoZXJlIGFyZSBzb21lIHRpbWVzIHdoZW4gd2UgcmVhbGl6ZSBqdXN0IGhvdyBtdWNoIGNvbXBsZXhpdHkgYmVlbiBoaWRkZW4gZnJvbSB1cywgYWJzdHJhY3RlZCBvdXQsIHR1Y2tlZCBhd2F5IG5lYXRseSBzbyB0aGF0IHdlIG5ldmVyIGhhdmUgdG8gdGhpbmsgYWJvdXTCoGl0LjwvcD48cD5JIGhhZCBvbmUgb2YgdGhlc2UgcmVhbGl6YXRpb25zIHJlY2VudGx5IHdoZW4gSSBkaXNjb3ZlcmVkIHRoYXQgSSBoYWQgbmV2ZXIgdGhvdWdodCB0d2ljZSBhYm91dCBhIHNpbXBsZSB0aGluZyB0aGF0IEkgd29yayB3aXRoIG9uIGFuIGhvdXJseSBiYXNpczogdGltZSEgSeKAmXZlIGJlZW4gdXNpbmcgY29tcHV0ZXJzIGZvciB0aGUgYmV0dGVyIHBhcnQgb2YgbXkgbGlmZSwgZmlyc3QgYXMgYSBjb25zdW1lciBvZiB0ZWNobm9sb2d5IGFuZCwgbGF0ZXIsIGFzIGEgY3JlYXRvciBvZiBpdC4gSXQgd2FzIG9ubHkgdW50aWwgSSBiZWdhbiBsZWFybmluZyBhYm91dCBkaXN0cmlidXRlZCBzeXN0ZW1zIChmb3IgdGhpcyBzZXJpZXMhKSB0aGF0IEkgdW5kZXJzdG9vZCB0aGF0IEkgZGlkbuKAmXQga25vdyBhcyBtdWNoIGFzIEkgdGhvdWdodCBhYm91dCB0ZWxsaW5nIHRpbWUsIG11Y2ggbGVzcyBob3cgdGhlIGNvbXB1dGVycyB0aGF0IHdlIHVzZSBldmVyeWRheSBlbmQgdXAgZGVjaWRpbmcgd2hhdCB0aW1lIGl0wqBpcy48L3A+PHA+V2hlbiBpdCBjb21lcyB0byBkaXN0cmlidXRlZCBjb21wdXRpbmcsIHRpbWUgaXMgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBiZWFzdC4gQnV0IGJlZm9yZSB3ZSBjYW4gcmVhbGx5IGdldCBpbnRvIHRpbWUgaW4gZGlzdHJpYnV0ZWQgc3lzdGVtcywgd2XigJlsbCBmaXJzdCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGluZGl2aWR1YWwgbWFjaGluZXMgdHJhY2sgdGltZS4gU28gbGV04oCZcyBzdGFydCBsZWFybmluZyBhYm91dCB3aGF0IGV4YWN0bHkgbWFrZXMgdGltZSBzbyBkYXJuwqB0cmlja3kuPC9wPjxoMz5UcmFja2luZyB0aW1lPC9oMz48cD5Nb3N0IGRldmljZXMgdGhlc2UgZGF5cyBoYXZlIHNvbWUgY29uY2VwdCBvZiB3aGF0IGRheSBpdCBpcyBhbmQgd2hhdCB0aW1lIGl0IGlzLiBXaXRoIHRoZSBleGNlcHRpb24gb2Ygc29tZSDigJxpbnRlcm5ldCBvZiB0aGluZ3PigJ0gZGV2aWNlcyAobGlrZSBhIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnJhc3BiZXJyeXBpLm9yZy8iPlJhc3BiZXJyeSBQaTwvYT4pLCBhbGwgbWFjaGluZXMgaGF2ZSBzb21lIG5vdGlvbiBvZiB0aW1lLiBCdXQgaG93IGRvIHRoZXkgZmlndXJlIG91dCB0aGUgZGF5IGFuZMKgdGltZT88L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpFamo3VHBpOGRVeUpyd2RqaVA0VE9BLmpwZWciIC8+PGZpZ2NhcHRpb24+UmVhbC10aW1lIGNsb2NrczogYSBkZWZpbml0aW9uPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPlRoZSBhbnN3ZXIgaXM6IHdpdGggYSBjbG9jayEgTm93LCB0aGlzIG1pZ2h0IHNlZW0gb2J2aW91cyBhdCBmaXJzdCwgYnV0IGl0IGdldHMgYSBsaXR0bGUgdHJpY2tlciBhcyB3ZSBnbyBvbi4gQSBjb21wdXRlciB0aGF0IG5lZWRzIHRvIGJlIGFibGUgdG8gdGVsbCB0aGUgdGltZSB3aWxsIG9mdGVuIGhhdmUgYW4gaW50ZXJuYWwgY2xvY2sgdGhhdCBpcyBidWlsdCByaWdodCBpbnRvIGl0cyBoYXJkd2FyZSBpbiB0aGUgZm9ybSBvZiBhbiBpbnRlZ3JhdGVkIGNpcmN1aXQuIFRoaXMgY2lyY3VpdCBpcyBvZnRlbiBidWlsdCByaWdodCBvbnRvIHRoZSBtb3RoZXJib2FyZC4gVGhpcyBzbWFsbCBwaWVjZSBvZiBoYXJkd2FyZSBpcyBrbm93biBhcyBhIDxzdHJvbmc+PGVtPnJlYWwtdGltZSBjbG9jazwvZW0+PC9zdHJvbmc+LCBvciA8c3Ryb25nPjxlbT5SVEM8L2VtPjwvc3Ryb25nPiBmb3LCoHNob3J0LjwvcD48cD5SVENzIGFyZSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcgYmVjYXVzZSB0aGV5IGNvbWUgd2l0aCBhbiBhbHRlcm5hdGUgcG93ZXIgc291cmNlIChsaWtlIGEgYmF0dGVyeSksIHdoaWNoIGFsbG93cyB0aGVtIHRvIGNvbnRpbnVlIHdvcmtpbmcgZXZlbiBpZiBhIG1hY2hpbmUgaXMgcG93ZXJlZCBvZmYhIFRoaXMgbWlnaHQgc2VlbSBvYnZpb3VzIHRvIHVzIHRvZGF5LCBidXQgdGhlIHVzZSBvZiBSVENzIHdhcyBhIHByZXR0eSBzaWduaWZpY2FudCBtaWxlc3RvbmUgaW4gdGhlIGhpc3Rvcnkgb2YgY29tcHV0aW5nOyBlYXJseSBwZXJzb25hbCBjb21wdXRlcnMgZGlkbuKAmXQgYWN0dWFsbHkgY29tZSB3aXRoIFJUQ3MgYnVpbHQtaW4sIGFuZCB0aGV5IHdlcmUgYWRkZWQgaW4gbGF0ZXIgb24uIE5vdywgd2XigJlsbCBmaW5kIHJlZnJpZ2VyYXRvcnMgYW5kIG1pY3Jvd2F2ZXMgdGhhdCBoYXZlIHRoZXNlIGxpdHRsZSBjbG9ja3MgYnVpbHQgcmlnaHQgaW4hIFRoYXTigJlzIHByZXR0eSB3aWxkIGlmIHlvdSB0aGluayBhYm91dMKgaXQuPC9wPjxwPlRoZSBSVEMgaXMgcmVzcG9uc2libGUgZm9yIGtlZXBpbmcgdHJhY2sgb2YgdGhlIGN1cnJlbnQgdGltZSwgYW5kIHdlIGNhbiB0aGluayBvZiBpdCBhcyBvbmUgaW5kaXZpZHVhbCBtYWNoaW5l4oCZcyA8c3Ryb25nPjxlbT5zeXN0ZW0gY2xvY2s8L2VtPjwvc3Ryb25nPi4gSXTigJlzIGltcG9ydGFudCB0byBub3RlIHRoYXQgdGhpcyBjbG9jayBpcyBzcGVjaWZpYyB0byB0aGUg4oCcc3lzdGVt4oCdIG9mIHRoZSBtYWNoaW5lOyBpbiBvdGhlciB3b3JkcywgYW55IHByb2Nlc3Mgb3IgdGFza3Mgb3Igd29yayB0aGF0IHRoZSBtYWNoaW5lIGRvZXMgdGhhdCByZWxpZXMgb24gdGhlIHRpbWUgd2lsbCBpbmhlcmVudGx5IHJlbHkgdXBvbiB3aGF0ZXZlciB0aW1lIHRoZSA8ZW0+c3lzdGVtIGNsb2NrPC9lbT4gc2F5cyBpdMKgaXMuPC9wPjxwPlNvLCBob3cgZG9lcyB0aGlzIHBoeXNpY2FsIGNsb2NrIHdvcmssIGV4YWN0bHk/IEFzIGl0IHR1cm5zIG91dCwgZGVlcCBpbnNpZGUgdGhlIGludGVncmF0ZWQgY2lyY3VpdCBpcyBhIGNyeXN0YWwsIHdoaWNoIHZpYnJhdGVzIG9yIG9zY2lsbGF0ZXM7IGl04oCZcyBrbm93biBhcyBhIDxzdHJvbmc+PGVtPmNyeXN0YWwgb3NjaWxsYXRvcjwvZW0+PC9zdHJvbmc+LjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKi1Kd0JQeDFhT0dmTGNwbEVSNndaY2cuanBlZyIgLz48ZmlnY2FwdGlvbj5FdmVyeSBjb21wdXRlciBoYXMgaXRzIG93biBwaHlzaWNhbMKgY2xvY2s8L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+V2l0aG91dCBnZXR0aW5nIGludG8gdGhlIG5pdHR5LWdyaXR0eSAocmVhZDogcGh5c2ljcykgb2YgdGhpcyB3b3JrcyB1bmRlciB0aGUgaG9vZCwgYWxsIHdlIHJlYWxseSBuZWVkIHRvIGtub3cgZm9yIG91ciBwdXJwb3NlcyBpcyB0aGF0IHRoZSB2aWJyYXRpb25zIG9mIHRoZSBjcnlzdGFsIGFyZSBjYXB0dXJlZCBhbmQgY291bnRlZCBieSB0aGUgY2xvY2suIEFzIHRoZSBjcnlzdGFsIHZpYnJhdGVzLCB0aGUgY2xvY2sga2VlcHMgY291bnQgb2YgZWFjaCB2aWJyYXRpb24gaW4gdGhlIGZvcm0gb2YgPHN0cm9uZz48ZW0+dGlja3M8L2VtPjwvc3Ryb25nPiwgYW5kIGFzIGl0IGNvdW50cyBvbmUgdGljayBhZnRlciBhbm90aGVyLCBpdCBrZWVwcyB0cmFjayBvZiB0aGUgdGltZS4gT2YgY291cnNlLCB0aGlzIGJlZ3MgdGhlIHF1ZXN0aW9uIG9mIHdoZXJlIGl0IGtlZXBzIGNvdW50IG9mIGVhY2ggdGljayB0aGF0IGl0IHJlY29yZHMuIFRoZSBwaHlzaWNhbCBjbG9jayB1c2VzIGEgPHN0cm9uZz48ZW0+YmluYXJ5IGNvdW50ZXIgY2lyY3VpdDwvZW0+PC9zdHJvbmc+LCBhIHNpbXBsZSBjaXJjdWl0IHRoYXQgZG9lcyBub3RoaW5nIG1vcmUgdGhhbiBjb3VudCBpbiBiaW5hcnksIGluIG9yZGVyIHRvIHN0b3JlIHRoZXNlIHRpY2tzLiBDb252ZW5pZW50bHksIHRoZSBiaW5hcnkgY291bnRlciBjaXJjdWl0ICh0aGUgc3lzdGVtIGNsb2NrKSBpcyB3aGVyZSBhIG1hY2hpbmUgZGVyaXZlcyBpdHMgPHN0cm9uZz48ZW0+c3lzdGVtIHRpbWU8L2VtPiA8L3N0cm9uZz5mcm9tLiBJbmRlZWQsIGp1c3QgYXMgYSBtYWNoaW5lIGhhcyBhIHN5c3RlbSBjbG9jaywgaXQgYWxzbyBoYXMgaXRzIG93biBub3Rpb24gb2YgdGltZSB0aGF0IGlzIDxlbT5iYXNlZDwvZW0+IG9uIHRoYXTCoGNsb2NrITwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKjAtcGl2Nm1TQldKT2FVRHJuMmNSeXcuanBlZyIgLz48ZmlnY2FwdGlvbj5TeXN0ZW0gdGltZTogYSBkZWZpbml0aW9uPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPkFuIGludGVyZXN0aW5nIHRoaW5nIGFib3V0IHN5c3RlbSB0aW1lIGlzIHRoYXQgaXQgYWx3YXlzIGlzIGNhbGN1bGF0aW5nIHRpbWUgYmFzZWQgb24gPGVtPndoZW48L2VtPiB0aGUgc3lzdGVtIGNsb2NrIGJlZ2FuIGNvdW50aW5nLiBUaGlzIG1lYW5zIHRoYXQgaWYgd2Ugc2V0IHRoZSBzeXN0ZW0gY2xvY2sgb24gYSBuZXcgY29tcHV0ZXIgdG8gYmUgZml2ZSBtaW51dGVzIHNsb3cgb3IgdHdvIGRheXMgZmFzdCwgdGhlbiBvdXIgc3RhcnRpbmcgcG9pbnQgZm9yIG91ciBzeXN0ZW0gdGltZSBvciB0aGUg4oCcemVyb+KAnSBvZiB3aGVyZSB3ZSBzdGFydCBvdXIgY291bnRpbmcgb2YgdGltZSB3aWxsIGVuZCB1cCBiZWluZyBlaXRoZXIgZml2ZSBtaW51dGVzIGJlaGluZCBvciB0d28gZGF5cyBhaGVhZC4gSW4gb3RoZXIgd29yZHMsIHdl4oCZbGwgYmUgbWVhc3VyaW5nIOKAnHRpY2tz4oCdIGJhc2VkIG9uIHdoYXRldmVyIGRhdGUgb3IgdGltZSB3ZSBzZXTigIrigJTigIpub3Qgb24gd2hhdCB0aGUgYWN0dWFsIHRpbWXCoGlzLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKmx1TERJNFpzSmFpVHdGTnZtR0w3U1EuanBlZyIgLz48ZmlnY2FwdGlvbj5VbmRlcnN0YW5kaW5nIGhvdyBVbml4IHRpbWXCoHdvcmtzPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPlRvIGhlbHAgYXZvaWQgc29tZSBvZiB0aGUgY29uZnVzaW9uIG9mIHRoaXMgcHJvYmxlbSwgbW9zdCBtYWNoaW5lcyBmb2xsb3cgc29tZSBraW5kIG9mIGNvbnZlbnRpb24gd2hlbiBpdCBjb21lcyB0byBkZWNpZGluZyB3aGF0IHRoYXQgc3RhcnRpbmcgcG9pbnQgc2hvdWxkIGJlLiBGb3IgZXhhbXBsZSwgbWFjaGluZXMgdGhhdCBoYXZlIFVuaXggb3BlcmF0aW5nIHN5c3RlbXMgaGF2ZSBzdGFuZGFyZGl6ZWQgYXJvdW5kIDxzdHJvbmc+PGVtPlVuaXggdGltZTwvZW0+PC9zdHJvbmc+LCB3aGljaCBpcyBhIHdheSBvZiBkZWNpZGluZyB3aGF0IHRoZSDigJx6ZXJv4oCdIG9mIHdoZXJlIHdlIHN0YXJ0IGNvdW50aW5nIHRpbWUgc2hvdWxkIGJlLiBJbiB0aGUgY2FzZSBvZiBVbml4IHRpbWUsIHRoZSBzdGFydGluZyBwb2ludCBvciDigJx6ZXJv4oCdIGlzIHRoZSBzdGFydCBvZiB0aGUgPHN0cm9uZz48ZW0+VW5peCBlcG9jaDwvZW0+PC9zdHJvbmc+LCBvciBKYW51YXJ5IDFzdCwgMTk3MCwgYXQgMDA6MDA6MDAgVVQgKFVuaXZlcnNhbCBUaW1lKS4gQW4gPHN0cm9uZz48ZW0+ZXBvY2g8L2VtPjwvc3Ryb25nPiBpcyBtZWFudCB0byBiZSBhcmJpdHJhcnk7IGl04oCZcyBub3RoaW5nIG1vcmUgdGhhbiBhbiBhZ3JlZWQtdXBvbiBzdGFydGluZyBkYXRlIGFuZCB0aW1lIGZvciB3aGVuIHdlIHNob3VsZCBzdGFydCBtZWFzdXJpbmcgdGltZS4gTXkgcGVyc29uYWwgZmF2b3JpdGUgZXBvY2ggaXMgdGhlIG9uZSBmb3IgTWljcm9zb2Z0IEV4Y2VsIHByb2dyYW1zLCB3aGljaCBpcyAwIEphbnVhcnksIDE5OTAhIChGb3IgdGhlIGVwb2NobHktY3VyaW91cywgY2hlY2sgb3V0IDxhIGhyZWY9Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Vwb2NoXyhjb21wdXRpbmcpIj50aGlzIGV4dGVuc2l2ZSBsaXN0PC9hPi4pPC9wPjxoMz5PdXQgb2Ygc3luYywgb3V0IG9mwqBjb250cm9sPC9oMz48cD5Ob3cgdGhhdCB3ZSBrbm93IHRoYXQgYSBjbG9jayBjYW4gc3RhcnQg4oCcY291bnRpbmfigJ0gYXQgYXJiaXRyYXJ5IHRpbWVzLCBpdOKAmXMgdGltZSB0byBhZGQgYW5vdGhlciBmYWN0b3IgdG8gdGhlIG1peC4gTmFtZWx5LCB3aGF0IGhhcHBlbnMgaWYgd2UgaGF2ZSBtb3JlIHRoYW4gb25lIGNsb2NrPyBUaGlzIGlzIHdoZW4gdGhpbmdzIHN0YXJ0IHRvIGdldCwgd2VsbCwgYSBsaXR0bGUgb3V0IG9mwqBzeW5jLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKnBVWDgtcVZxczA3MWp4VG1jZElsd2cuanBlZyIgLz48ZmlnY2FwdGlvbj5Db21wdXRlciBjbG9ja3MgYXJlIG5vdCBjb25zaXN0ZW50PC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPlNpbmNlIGV2ZXJ5IG1hY2hpbmUgY2FuIGhhdmUgaXRzIG93biBub3Rpb24gb2YgdGltZSwgd2UgY2FuIGFzc3VtZSB0aGF0IHR3byBkaWZmZXJlbnQgbWFjaGluZXMgd2lsbCBlYWNoIGhhdmUgdGhlaXIgb3duIGNvbmNlcHRzIG9mIHdoYXQgdGltZSBpdCBpcy4gQnV0IHRoaXMgaXMgd2hlcmUgdGhpbmdzIHN0YXJ0IHRvIGdldCBhIGJpdCBjb21wbGljYXRlZDogaWYgdHdvIGRpZmZlcmVudCBtYWNoaW5lcyBoYXZlIHR3byBkaWZmZXJlbnQgaWRlYXMgb2Ygd2hhdCB0aW1lIGl0IGlzLCBob3cgY2FuIHdlIGJlIHN1cmUgdGhhdCB0aGV5IGFyZSB0aGXCoHNhbWU/PC9wPjxibG9ja3F1b3RlPlVuZm9ydHVuYXRlbHkgZm9yIHVzLCBjb21wdXRlciBjbG9ja3MgYXJlIG5vdCBjb25zaXN0ZW50LjwvYmxvY2txdW90ZT48cD5XZSBhbHJlYWR5IGtub3cgdGhhdCBldmVyeSBjbG9jayBoYXMgYSBkaWZmZXJlbnQgaWRlYSBvZiA8ZW0+d2hlbjwvZW0+IGl0IHN0YXJ0ZWQgY291bnRpbmcgYW5kIGl0cyDigJx6ZXJv4oCdLCBhbmQgdGhhdCBvbmUgY2xvY2sgY291bGQgYmUgaW5jb25zaXN0ZW50IHdpdGggYW5vdGhlci4gSG93ZXZlciwgaXTigJlzIGFsc28gd29ydGggbWVudGlvbmluZyB0aGF0IG5vdCBhbGwgY2xvY2tzIGFyZSBwcmVjaXNlLCBhbmQgc29tZSBhcmUgbW9yZSBwcmVjaXNlIHRoYW4gb3RoZXJzLiBPdmVyIHRpbWUsIHRoZSBwcmVjaXNlbmVzcyBvZiBlYWNoIOKAnHRpY2vigJ0gb2YgYSBjbG9jayByZWFsbHkgc3RhcnRzIHRvIGhhdmUgYW4gaW1wYWN0IG9uIGhvdyB0aGF0IGNsb2NrIGRldGVybWluZXMgaXRzwqB0aW1lLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKkFyOUd3X2ZUZUxpSGd4SDNsUGtfVVEuanBlZyIgLz48ZmlnY2FwdGlvbj5FdmVyeSBzeXN0ZW0gY2xvY2sgY291bnRzIGRpZmZlcmVudGx5ITwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5Gb3IgZXhhbXBsZSwgYSB0eXBpY2FsIHF1YXJ0eiBjbG9jayB3aWxsIGRyaWZ0IHF1YXJ0eiBjbG9ja3Mgd2lsbCBsb3NlIG9yIGdhaW4gYXBwcm94aW1hdGVseSBvbmUgc2Vjb25kIG92ZXIgdGhlIGNvdXJzZSBvZiAxMSBvciAxMiBkYXlzLiBUaGlzIGlzIGR1ZSB0byBhIHRpbnkgaW1wcmVjaXNpb24gdGhhdCBvY2N1cnMgYXMgdGhlIGNsb2NrIG1lYXN1cmVzIGEgc2luZ2xlIHNlY29uZCBhcyBpdCB0aWNrcy4gQSBzaW5nbGUgc2Vjb25kIG1heSBub3Qgc2VlbSBsaWtlIG11Y2gsIGJ1dCBvdmVyIHRpbWUsIHNsaWdodCBpbXByZWNpc2lvbnMgcmVhbGx5IHN0YXJ0IHRvIGFkZCB1cCEgVGhlIHByZWNpc2VuZXNzIG9mIGEgY2xvY2sgY291bGQgYmUgYWZmZWN0ZWQgYnkgdGVtcGVyYXR1cmUsIGxvY2F0aW9uLCB0aGUgY2xvY2vigJlzIHNvdXJjZSBvZiBwb3dlciwgYW5kIGV2ZW4ganVzdCBob3cgd2VsbCBpdCB3YXMgY29uc3RydWN0ZWQuPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqNjRhcnVoWWJrY1g5cGdaenByZXk1Zy5qcGVnIiAvPjxmaWdjYXB0aW9uPkNsb2NrIGRyaWZ0IGFuZCBjbG9ja8Kgc2tldzwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5UaGlzIHBoZW5vbWVub24gb2YgbGltaXRlZCBjbG9jayBwcmVjaXNpb24gY2F1c2luZyB0d28gY2xvY2tzIHRvIHRvIGNvdW50IHRpbWUgZGlmZmVyZW50bHkgaXMga25vd24gYXMgPHN0cm9uZz48ZW0+Y2xvY2sgZHJpZnQ8L2VtPjwvc3Ryb25nPi4gVW5mb3J0dW5hdGVseSwgaXQgaXMganVzdCBhIHJlYWxpdHkgb2YgYW55IG1hY2hpbmUgdGhhdCBuZWVkcyB0byBrZWVwIHRyYWNrIG9mIHRoZSB0aW1lIG9uIGl0cyBvd24uIEJlY2F1c2UgY2xvY2sgZHJpZnQgaXMgc28gY29tbW9uLCB3ZSBvZnRlbiBhbHNvIGZpbmQgb3Vyc2VsdmVzIGNvbXBhcmluZyB0d28gY2xvY2tzIHRoYXQgZGlzcGxheSB0d28gZGlmZmVyZW50IHRpbWVzLiBUaGlzIGlzIGtub3duIGFzIDxzdHJvbmc+PGVtPmNsb2NrIHNrZXc8L2VtPjwvc3Ryb25nPiwgYW5kIGl0IGlzIHRoZSBkaWZmZXJlbmNlIGluIHRpbWUgYmV0d2VlbiB0d2/CoGNsb2Nrcy48L3A+PGJsb2NrcXVvdGU+SW4gYSBwZXJmZWN0IHdvcmxkIHdoZXJlIHR3byBjbG9ja3MgYWdyZWVkIG9uIHRoZSB0aW1lLCB3ZSB3b3VsZG7igJl0IGV2ZXIgcnVuIGludG8gZWl0aGVyIG9mIHRoZXNlIGNvbmNlcHRzISBJbiBzdWNoIGEgdXRvcGlhLCBib3RoIGNsb2NrIGRyaWZ0IGFuZCBza2V3IHdvdWxkIGJlwqB6ZXJvLjwvYmxvY2txdW90ZT48cD5BbGFzLCB3ZSBkbyBub3QgbGl2ZSBpbiBzdWNoIGEgd29ybGQsIGFuZCBzbyB3ZSBtdXN0IHRoaW5rIG9mIGJvdGggb2YgdGhlc2UgdGhpbmdzIHdoZW4gY29tcGFyaW5nIHR3byBkaWZmZXJlbnQgbWFjaGluZXMgYW5kIHRoZWlyIHRpbWVzLiBJbnN0ZWFkLCB3ZSBsaXZlIGluIGEgd29ybGQgd2hlcmUgdGhpbmdzIGFyZSBtZXNzeSBhbmTigKZkaXN0cmlidXRlZC48L3A+PGgzPk5vIG9uZSBjbG9jayB0byBydWxlIHRoZW3CoGFsbDwvaDM+PHA+V2XigJl2ZSB0YWxrZWQgYSBsb3QgYWJvdXQgY2xvY2tzIGFuZCBob3cgdGhleSB3b3JrIGFuZCBob3cgdGhleSBkaXNhZ3JlZSwgYnV0IHdoYXQgZG9lcyB0aGF0IGhhdmUgdG8gZG8gd2l0aCBkaXN0cmlidXRlZCBzeXN0ZW1zLCBleGFjdGx5PyBBcyBpdCB0dXJucyBvdXQsIGFsbCBvZiB0aGlzIGNsb2NrIHRhbGsgaXMgbGVhZGluZyBpcyB0byBvbmUgb2YgdGhlIGNvcmUsIGZvdW5kYXRpb25hbCBwcmluY2lwbGVzIG9mIGRpc3RyaWJ1dGVkIHN5c3RlbXMgdGhhdCwgc29tZWhvdyAoISksIHdlIGhhdmVu4oCZdCBjb3ZlcmVkIGl0LiBOb3csIGl04oCZcyBmaW5hbGx5IHRpbWUgdG8gdGFsayBhYm91dMKgaXQuPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqNjBrRHF2VkVxU2R2N2NyNHZvVk9tQS5qcGVnIiAvPjxmaWdjYXB0aW9uPkNsb2NrcyBhbmQgZGlzdHJpYnV0ZWQgc3lzdGVtczwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5BcyB3ZSBhbHJlYWR5IGtub3csIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtLCBhbGwgdGhlIGluZGl2aWR1YWwgY29tcG9uZW50cyBhcmUgY2FsbGVkIG5vZGVzLCBhbmQgdGhleSBhcmUgZWFjaCA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL21hbnktbm9kZXMtb25lLWRpc3RyaWJ1dGVkLXN5c3RlbS05OTIxZjg1MjA1YzQiPmF1dG9ub21vdXM8L2E+LCBjYXBhYmxlIG9mIHBlcmZvcm1pbmcgdGhlaXIgb3duIHdvcmsuIFdlIGFsc28gbGVhcm5lZCB0aGF0IGVhY2ggbm9kZSBoYXMgaXRzIG93biBub3Rpb24gb2YgdGltZSwgYW5kIGtlZXBzIHRyYWNrIG9mIGl0cyBvd24gdGltZSBpbnRlcm5hbGx5LiBXaGVuIHdlIGNvbWJpbmUgdGhlc2UgdHdvIGZhY3RzIHRvZ2V0aGVyLCB3ZSBhcnJpdmUgYXQgb25lIHNpbmd1bGFyIGNvbmNsdXNpb246PC9wPjxibG9ja3F1b3RlPlRoZXJlIGlzIG5vIG9uZSwgdHJ1ZSBnbG9iYWwgY2xvY2sgaW4gYSBkaXN0cmlidXRlZCBzeXN0ZW0uPC9ibG9ja3F1b3RlPjxwPkV2ZXJ5IG5vZGUgaW4gdGhlIHN5c3RlbSBoYXMgaXRzIG93biBjb25jZXB0IG9mIHRpbWUsIGFuZCB0aGVyZSBpcyBubyBjZW50cmFsaXplZCBwbGFjZSBmb3IgdGhlIG5vZGVzIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aW1lIGl0IGFjdHVhbGx5IGlzLiBBbmQgcGVyaGFwcyB0aGlzIHdvdWxkbuKAmXQgbWF0dGVyIGlmIHdlIGRpZG7igJl0IGNhcmUgYWJvdXQgdGltZSBzbyBtdWNoISBXZSB1c2UgdGltZSBzbyBmcmVxdWVudGx5IGluIGNvbXB1dGluZywgcGFydGljdWxhcmx5IGluIG9yZGVyIHRvIGZpZ3VyZSBvdXQgd2hlbiBhbiBldmVudCBvY2N1cnJlZCwgYW5kIHdoaWNoIGV2ZW50IGhhcHBlbmVkIGJlZm9yZcKgYW5vdGhlci48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSo5cHI3YUZXcU96MFdBMDJSZmxZa29BLmpwZWciIC8+PGZpZ2NhcHRpb24+SG93IGRvZXMgaGF2aW5nIG5vIGdsb2JhbCBjbG9jayBpbXBhY3QgdGhlIHdheSBhIHN5c3RlbcKgd29ya3M/PC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPlNvIHdoYXQgaGFwcGVucyB3aGVuIHdlIGRvbuKAmXQgaGF2ZSBhIGdsb2JhbCBjbG9jayBpbiBhIGRpc3RyaWJ1dGVkIHN5c3RlbT8gV2VsbCwgZm9yIHN0YXJ0ZXJzLCB3ZSBjYW7igJl0IGFjdHVhbGx5IGtub3cgdGhlIDxlbT5yZWFsPC9lbT4gdGltZSB0aGF0IGFueSB0d28gZXZlbnMgb2NjdXJyZWQsIG9yIHRoZSBvcmRlciB0aGF0IHRoZXkgb2NjdXJyZWQgaW4uIFRoaXMgbWFrZXMgaXMgdmVyeSBoYXJkIHRvIGZpZ3VyZSBvdXQgaG93IHR3byBldmVudHMgbWlnaHQgYmUgc2NoZWR1bGVkIGluIHRoZSBmdXR1cmUuIEl0IGFsc28gbWFrZXMgYSBkaXN0cmlidXRlZCBzeXN0ZW0gPGVtPnJlYWxseTwvZW0+IGRpZmZpY3VsdCB0byBkZWJ1Zywgc2luY2Ugd2UgZG9u4oCZdCBrbm93IGZvciBzdXJlIHdoZXRoZXIgb25lIGV2ZW50IG9jY3VycmVkIGJlZm9yZSB0aGXCoG90aGVyITwvcD48cD5XZeKAmWxsIGJlIHRhbGtpbmcgbW9yZSBhYm91dCB0aW1lIGFuZCB0aGUgb3JkZXJpbmcgb2YgZXZlbnRzIGluIHVwY29taW5nIHBvc3RzLCBhbmQgaG9wZWZ1bGx5IHdl4oCZbGwgZmluZCBzb21lIHRyaWVkIGFuZCB0cnVlIHNvbHV0aW9ucyBmb3IgdGhpcyBwcm9ibGVtLiBVbnRpbCB0aGVuLCB0cnkgbm90IHRvIGxvb2sgYXQgeW91ciB3YXRjaCBvciB0aGluayB0b28gbXVjaCBhYm91dCB3aGF0IHRpbWUgaXTCoGlzLjwvcD48aDM+UmVzb3VyY2VzPC9oMz48cD5DbG9ja3MgYW5kIHRpbWUgaW4gZGlzdHJpYnV0ZWQgc3lzdGVtcyBjYW4gYmUgb25lIG9mIHRoZSBtb3N0IHVuaW50dWl0aXZlIGNvbmNlcHRzIHRvIHdyYXAgeW91ciBoZWFkIGFyb3VuZOKAiuKAlOKAimVzcGVjaWFsbHkgaWYgeW914oCZcmUgbmV3IHRvIGRpc3RyaWJ1dGVkIHN5c3RlbXMhIFRoYW5rZnVsbHksIHRoZXJlIGlzIGEgdG9uIG9mIGNvdXJzZSBtYXRlcmlhbCBvdXQgdGhlcmUgdGhhdCBjb3ZlcnMgdGhlc2UgdG9waWNzIGluIGdyZWF0IGRldGFpbC4gQmVsb3cgYXJlIHNvbWUgb2YgbXkgZmF2b3JpdGVzLCB3aGljaCBJIHJlbGllZCB1cG9uIG15c2VsZiB3aGVuIEkgd2FzIGxlYXJuaW5nIGFib3V0IGNsb2NrcyBhbmTCoHRpbWUhPC9wPjxvbD48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5udHAub3JnL250cGZhcS9OVFAtcy1zdy1jbG9ja3MuaHRtIj5Ib3cgZG8gQ29tcHV0ZXIgQ2xvY2tzIHdvcms/PC9hPiwgTmV0d29yayBUaW1lIEZvdW5kYXRpb248L2xpPjxsaT48YSBocmVmPSJodHRwOi8vcGVvcGxlLmNzLmFhdS5kay9+Ym5pZWxzZW4vRFMtRTA4L21hdGVyaWFsL2Nsb2NrLnBkZiI+VGltZSBpbiBEaXN0cmlidXRlZCBTeXN0ZW1zPC9hPiwgQnJpYW7CoE5pZWxzZW48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3LmNzLmJoYW0uYWMudWsvfmJ4Yi9jb3Vyc2VzLzAyXzAzX0RTL0xlY3R1cmUxMF9IYW5kb3V0cy5wZGYiPkNsb2NrcyBhbmQgVGltPC9hPmUsIEJlaHphZMKgQm9yZGJhcjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuY3MuY211LmVkdS9+c3JpbmkvMTUtNDQ2L1MwOS9sZWN0dXJlcy8wOC1waHlfdGltZS5wZGYiPlN5bmNocm9uaXppbmcgUGh5c2ljYWwgQ2xvY2tzPC9hPiwgU3Jpbml2YXNhbiBTZXNoYW48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vaW5mb2xhYi5zdGFuZm9yZC5lZHUvfmJ1cmJhY2svZGFkbC9ub2RlODcuaHRtbCI+RGlzdHJpYnV0ZWQgU3lzdGVtIEZvdW5kYXRpb25zPC9hPiwgUm9uYWxkIExlUm9pwqBCdXJiYWNrPC9saT48L29sPjxpbWcgc3JjPSJodHRwczovL21lZGl1bS5jb20vXy9zdGF0P2V2ZW50PXBvc3QuY2xpZW50Vmlld2VkJnJlZmVycmVyU291cmNlPWZ1bGxfcnNzJnBvc3RJZD1lZjJhYTRkZjA3YTMiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGFsdD0iIj48aHI+PHA+PGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy90aWNraW5nLWNsb2Nrcy1pbi1hLWRpc3RyaWJ1dGVkLXN5c3RlbS1lZjJhYTRkZjA3YTMiPlRpY2tpbmcgQ2xvY2tzIGluIGEgRGlzdHJpYnV0ZWQgU3lzdGVtPC9hPiB3YXMgb3JpZ2luYWxseSBwdWJsaXNoZWQgaW4gPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2VkcyI+YmFzZWRzPC9hPiBvbiBNZWRpdW0sIHdoZXJlIHBlb3BsZSBhcmUgY29udGludWluZyB0aGUgY29udmVyc2F0aW9uIGJ5IGhpZ2hsaWdodGluZyBhbmQgcmVzcG9uZGluZyB0byB0aGlzIHN0b3J5LjwvcD5dXT48L2NvbnRlbnQ6ZW5jb2RlZD4KICAgICAgICA8L2l0ZW0+CiAgICAgICAgPGl0ZW0+CiAgICAgICAgICAgIDx0aXRsZT48IVtDREFUQVtQYXJzaW5nIFRocm91Z2ggUGFydGl0aW9ucyBpbiBhIERpc3RyaWJ1dGVkIFN5c3RlbV1dPjwvdGl0bGU+CiAgICAgICAgICAgIDxsaW5rPmh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvcGFyc2luZy10aHJvdWdoLXBhcnRpdGlvbnMtaW4tYS1kaXN0cmlidXRlZC1zeXN0ZW0tM2MxNzIzZmVjYzRlP3NvdXJjZT1yc3MtOGY1NTk5M2M5NzNlLS0tLS0tMjwvbGluaz4KICAgICAgICAgICAgPGd1aWQgaXNQZXJtYUxpbms9ImZhbHNlIj5odHRwczovL21lZGl1bS5jb20vcC8zYzE3MjNmZWNjNGU8L2d1aWQ+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtjb21wdXRlci1zY2llbmNlXV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW3NvZnR3YXJlLWRldmVsb3BtZW50XV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW3Byb2dyYW1taW5nXV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW2Rpc3RyaWJ1dGVkLXN5c3RlbXNdXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbY29kZV1dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxkYzpjcmVhdG9yPjwhW0NEQVRBW1ZhaWRlaGkgSm9zaGldXT48L2RjOmNyZWF0b3I+CiAgICAgICAgICAgIDxwdWJEYXRlPkZyaSwgMzAgQXVnIDIwMTkgMjM6Mzg6NDcgR01UPC9wdWJEYXRlPgogICAgICAgICAgICA8YXRvbTp1cGRhdGVkPjIwMTktMDgtMzBUMjM6Mzg6NDcuNDQ3WjwvYXRvbTp1cGRhdGVkPgogICAgICAgICAgICA8Y29udGVudDplbmNvZGVkPjwhW0NEQVRBWzxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqMDh6RGx3MzdZcEZoSHVILW5FaE9CQS5qcGVnIiAvPjxmaWdjYXB0aW9uPlBhcnNpbmcgdGhyb3VnaCBwYXJ0aXRpb25zIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtITwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5XaGVuIGl0IGNvbWVzIHRvIHRlY2ggamFyZ29uLCBvbmUgdGhpbmcgc2VlbXMgdG8gYWx3YXlzIGhvbGQgdHJ1ZTogZXZlcnlvbmUgaGFzIGEgZGlmZmVyZW50IG9waW5pb24gYWJvdXQgd2hhdCBjZXJ0YWluIHdvcmRzIG1lYW4uIEkgcmVhbGl6ZSB0aGlzIGZhY3QgZXZlcnkgb25jZSBpbiBhd2hpbGU7IG1vc3QgcmVjZW50bHksIEkgY2FtZSBhY3Jvc3MgaXQgd2hpbGUgdHJ5aW5nIHRvIGxlYXJuIGEgbmV3IGRpc3RyaWJ1dGVkIHN5c3RlbXPCoGNvbmNlcHQuPC9wPjxwPlRoZSB0ZXJtIOKAnHBhcnRpdGlvbuKAnSBpcyB1c2VkIGEgbG90IGluIGRpc3RyaWJ1dGVkIHN5c3RlbSBjb3Vyc2VzIGFuZCBib29rcywgYnV0IHRoZXJlIGFyZSBhbHNvIGEgc2xldyBvZiBvdGhlciB0ZXJtcyB0aGF0IGdldCBsdW1wZWQgaW50byB0aGlzIGNhdGVnb3J5IGFzIHdlbGwuIFVudGlsIHJlY2VudGx5LCBJIHRob3VnaHQgSSBrbmV3IHdoYXQgdGhlIHRlcm0gbWVhbnQgaW4gdGhlIGNvbnRleHQgb2YgYSBkaXN0cmlidXRlZCBzeXN0ZW0sIGJ1dCBhcyBpdCB0dXJucyBvdXQsIHRoZXJlIHdhcyBtb3JlIHRvIHRoZSBzdG9yeeKAiuKAlOKAimFuZCB0aGUgd29yZOKAiuKAlOKAinRoYW4gSSBldmVyIHJlYWxpemVkISBBcyBJIGRpZCBtb3JlIHJlc2VhcmNoLCBJIHJlYWxpemVkIHRoYXQgdGhlIHRlcm0gaXMgdXNlZCB0byB0YWxrIGFib3V0IHR3byB2ZXJ5IGRpZmZlcmVudCBjb25jZXB0cywgYm90aCBvZiB3aGljaCBlbmQgdXAgYmVpbmcgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIGhvdyB0byBkZWFsIHdpdGggYW5kIGFyY2hpdGVjdCBhIGRpc3RyaWJ1dGVkIHN5c3RlbS48L3A+PHA+QXMgUmljaGFyZCBGZXlubWFuIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9Z2FfN2o3MkNWbGMiPm9uY2Ugd2lzZWx5IHNhaWQ8L2E+LCDigJxuYW1lcyBkb27igJl0IGNvbnN0aXR1dGUga25vd2xlZGdl4oCdLiBKdXN0IGJlY2F1c2UgcGVvcGxlIGluIHRoZSBpbmR1c3RyeSB0aHJvdyBhcm91bmQgYSB0ZXJtIGRvZXNu4oCZdCBtZWFuIHRoYXQgdGhleSBhbGwgbmVjZXNzYXJpbHkga25vdyB3aGF0IGl0IG1lYW5zLCBvciBob3cgaXQgY2FuIGNoYW5jZSBkZXBlbmRpbmcgb24gdGhlIGNvbnRleHQhIFNvIGxldOKAmXMgdHJ5IGFuZCBjbGVhciB1cCBzb21lIG9mIHRoaXMgY29uZnVzaW9uIGFuZCBnYWluIHNvbWUgcmVhbCBrbm93bGVkZ2Ugb24gdGhpc8KgdG9waWMuPC9wPjxoMz5QYXJzaW5nIHRoZSBtZWFuaW5nIG9mIHBhcnRpdGlvbmluZzwvaDM+PHA+QmVmb3JlIHdlIGdldCB0b28gZGVlcCBpbnRvIHBhcnRpdGlvbmluZyB3aXRoaW4gYTxlbT4gc3lzdGVtPC9lbT4sIGxldOKAmXMgZmlyc3QgbWFrZSBzdXJlIHdl4oCZcmUgb24gdGhlIHNhbWUgcGFnZSBhYm91dCB3aGF0IHRoZSB3b3JkIGV2ZW4gbWVhbnMhIFdoZW4gd2UgdGFsayBhYm91dCA8c3Ryb25nPjxlbT5wYXJ0aXRpb25pbmc8L2VtPjwvc3Ryb25nPiBzb21ldGhpbmcsIHdlIGFyZSBkaXZpZGluZyBpdCB1cCwgYnJlYWtpbmcgaXQgdXAgaW50byBwYXJ0cyBhbmQgc2VwYXJhdGluZyBpdC48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSozdHphR2dCRjVCNE91WWVVc1FYTDNBLmpwZWciIC8+PGZpZ2NhcHRpb24+V2hhdCBkb2VzIGl0IG1lYW4gdG8gcGFydGl0aW9uIHNvbWV0aGluZz88L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+QXQgaXRzIGNvcmUsIHRoYXTigJlzIGFsbCB0aGF0IHBhcnRpdGlvbmluZyByZWFsbHkgaXM6IHRha2luZyB0aGUgd2hvbGUgb2Ygc29tZXRoaW5nIGFuZCB0dXJuaW5nIGl0IGludG8gc21hbGxlciBwaWVjZXMgb2YgaXRzZWxmLiBTbyBmYXIsIG5vdCB0b28gY29tcGxpY2F0ZWQsIHJpZ2h0PyBCdXQgd2hhdCBkb2VzIHRoaXMgc2FtZSB0ZXJtIG1lYW4gaW4gdGhlIGNvbnRleHQgb2YgYSBkaXN0cmlidXRlZCBzeXN0ZW0/IFdlbGwsIHdlIGNhbiBpbmZlciB0aGF0IHRoZSBkaXN0cmlidXRlZCBzeXN0ZW0gbXVzdCwgaW4gc29tZSB3YXksIGJlIHRoZSDigJx3aG9sZeKAnSB0aGluZyB0aGF0IHdlIGFyZSBzZXBhcmF0aW5nLCBkaXZpZGluZyB1cCwgYW5kIGJyZWFraW5nIGludG8gc21hbGxlciBwaWVjZXMgb2bCoGl0c2VsZi48L3A+PHA+QnV0IHRoaXMgc2ltcGxlIGFjdCBjYW4gYWN0dWFsbHkgdGFrZSB0d28gZGlmZmVyZW50IGZvcm1zLCBkZXBlbmRpbmcgb24gdGhlIGtpbmQgb2YgcGFydGl0aW9uIHdlIGFyZSBjcmVhdGluZy4gQXMgPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9tYW55LW5vZGVzLW9uZS1kaXN0cmlidXRlZC1zeXN0ZW0tOTkyMWY4NTIwNWM0Ij53ZSBhbHJlYWR5IGtub3c8L2E+LCBhIGRpc3RyaWJ1dGVkIHN5c3RlbSBpcyBtYWRlIHVwIG9mIG5vZGVzOyBzbywgaWYgd2UgYXJlIGRpdmlkaW5nIHVwIHRoZSBzeXN0ZW0gaW50byBwYXJ0cywgcGVyaGFwcyB3ZSBhcmUgZGl2aWRpbmcgdXAgdGhlIG5vZGVzPyBCdXQgdGhlcmXigJlzIGFub3RoZXIgaW50ZXJwcmV0YXRpb24gb2Yg4oCccGFydGl0aW9u4oCdIGhlcmUsIHRvby4gUmF0aGVyIHRoYW4gZGl2aWRpbmcgdXAgdGhlIG5vZGVzLCBwZXJoYXBzIHdlIGFyZSBkaXZpZGluZyB0aGUgc3lzdGVtIGludG8gc21hbGxlciBncm91cHMgb2Ygbm9kZXMgc3VjaCB0aGF0IHdlIGFyZSBicmVha2luZyB1cCBvbmUgbGFyZ2Ugc3lzdGVtIGludG8gc21hbGxlciBzdWJzeXN0ZW1zLiBJZiB3ZSB0aGluayBhYm91dCBpdCwgYm90aCBvZiB0aGVzZSBhcHByb2FjaGVzIGFyZSB0d28gdmFsaWQgZm9ybXMgb2YgcGFydGl0aW9uaW5nLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKjhIN0tfZGZNUzkwS1NraXNBc2ZiYUEuanBlZyIgLz48ZmlnY2FwdGlvbj5JbiB0aGUgY29udGV4dCBvZiBkaXN0cmlidXRlZCBzeXN0ZW1zLCDigJxwYXJ0aXRpb25pbmfigJ0gY2FuIG1lYW4gZGlmZmVyZW50IHRoaW5ncy48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+QXMgaXQgdHVybnMgb3V0LCB0aGlzIGlzIHdoZXJlIHRoaW5ncyBjYW4gZ2V0IGNvbmZ1c2luZy4gV2hlbiBkZWFsaW5nIHdpdGggYSBkaXN0cmlidXRlZCBzeXN0ZW0sIOKAnHBhcnRpdGlvbmluZ+KAnSBjYW4gbWVhbiBkaWZmZXJlbnQgdGhpbmdzLiBGaXJzdCwgaXQgY291bGQgaW1wbHkgdGhlIDxzdHJvbmc+PGVtPnBhcnRpdGlvbmluZyBvZiBkYXRhPC9lbT48L3N0cm9uZz4gaW4gdGhlIHN5c3RlbSwgb3IgZGl2aWRpbmcgdXAgdGhlIG5vZGVzIGludG8gc21hbGxlciBwaWVjZXMgb2YgdGhlbXNlbHZlcy4gQnV0LCBpdCBjb3VsZCBhbHNvIG1lYW4gcGFydGl0aW9uaW5nIHRoZSBzeXN0ZW0gaXRzZWxmIGJ5IDxzdHJvbmc+PGVtPnBhcnRpdGlvbmluZyB0aGUgbmV0d29yayA8L2VtPjwvc3Ryb25nPnRoYXQgdGhlIHN5c3RlbSBjb21tdW5pY2F0ZXMgdGhyb3VnaC4gVGhpcyB3b3VsZCBtZWFuIGJyZWFraW5nIHVwIHRoZSB3YXkgdGhhdCB0aGUgbm9kZXMgaW4gdGhlIHN5c3RlbSB0YWxrIHRvIGVhY2ggb3RoZXIgYW5kIHNlcGFyYXRpbmcgdGhlbSBpbnRvIHNtYWxsZXIgc3Vic3lzdGVtcyBvciBzdWJuZXR3b3Jrcy48L3A+PHA+VGhlIGludGVyZXN0aW5nIHRoaW5nIGFib3V0IHRoZXNlIHR3byBmb3JtcyBvZiBwYXJ0aXRpb25pbmcgaW4gYSBzeXN0ZW0gaXMgdGhhdCBvbmUgaXMgaW50ZW50aW9uYWwsIHdoaWxlIHRoZSBvdGhlciBpcyBtb3JlIG9mIGEgc2lkZSBlZmZlY3QgdGhhdCB3ZSBuZWVkIHRvIGRlYWwgd2l0aC4gQnV0IG1vcmUgb24gdGhhdCBzb29uLiBJdOKAmXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIGJlY2F1c2UgdGhlIHNhbWUgdGVybSBjYW4gc29tZXRpbWVzIGJlIHVzZWQgdG8gcmVmZXIgdG8gZWl0aGVyISBTbyBsZXTigJlzIGRpZyBpbnRvIHRoZXNlIHR3byBmb3JtcyBvZiBwYXJ0aXRpb25pbmcgYW5kIHVuZGVyc3RhbmRpbmcgdGhlIHJlYXNvbnMgYmVoaW5kIHdoeSBlYWNowqBoYXBwZW4uPC9wPjxoMz5TZXBhcmF0aW5nIGRhdGE8L2gzPjxwPlRoZSBpZGVhIG9mIHBhcnRpdGlvbmluZyB0aGUgbm9kZXMgaW4gYSBzeXN0ZW0gbWlnaHQgc2VlbSBvZGQgYXQgZmlyc3QsIGJ1dCB3ZeKAmXZlIHdl4oCZdmUgYWN0dWFsbHkgc2VlbiBzb21ldGhpbmcgc29ydCBvZiBhZGphY2VudCB0byB0aGlzIGJlZm9yZS4gUmVtZW1iZXIgd2hlbiB3ZSBsZWFybmVkIGFib3V0IHJlZHVuZGFuY3kgYW5kIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvcmVkdW5kYW5jeS1hbmQtcmVwbGljYXRpb24tZHVwbGljYXRpbmctaW4tYS1kaXN0cmlidXRlZC1zeXN0ZW0tN2FiNDMyMmQ3Mzc4Ij50aGUgcmVwbGljYXRpb24gb2Ygbm9kZXM8L2E+PyBUaGF0IGNvbmNlcHQgYWxzbyBtaWdodCBoYXZlIHNlZW1lZCB3ZWlyZCBpbml0aWFsbHnigIrigJTigIp3aHkgd291bGQgYW55b25lIDxlbT53YW50PC9lbT4gdG8gcmVwZWF0IHRoZW1zZWx2ZXM/IeKAiuKAlOKAimJ1dCBhcyB3ZSBzdGFydGVkIHRvIHVucGFjayBpdCBmdXJ0aGVyLCB3ZSBzYXcgdGhhdCB0aGVyZSB3ZXJlIHNvbWUgY2xlYXIgYmVuZWZpdHMgdG/CoGl0LjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKmNvTUNZWWE3Nm9hTHMxb3BWS0h4b0EuanBlZyIgLz48ZmlnY2FwdGlvbj5SZWNhcHBpbmcgdGhlIHByb3MgYW5kIGNvbnMgb2YgcmVwbGljYXRpb24uPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPkFzIHdlIGhhdmUgPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9yZWR1bmRhbmN5LWFuZC1yZXBsaWNhdGlvbi1kdXBsaWNhdGluZy1pbi1hLWRpc3RyaWJ1dGVkLXN5c3RlbS03YWI0MzIyZDczNzgiPmFscmVhZHkgbGVhcm5lZDwvYT4sIHdoZW4gd2UgbmVlZCB0byBtYWtlIHNvbWUgb2Ygb3VyIG5vZGVzIG1vcmUgcmVsaWFibGUgb3Igd2hlbiB3ZSBuZWVkIHRvIHNjYWxlIHNvbWUgcGFydCBvZiBvdXIgc3lzdGVtIChsaWtlIGEgZGF0YWJhc2UpLCB3ZSBjYW4gcmVwbGljYXRlIG91ciBub2RlcyB0byBjcmVhdGUgbW9yZSBjb3BpZXMgb2YgdGhlIHNhbWUgZGF0YSB0aGF0IGFyZSBpbiBzeW5jIHdpdGggdGhlIG9yaWdpbmFsIG5vZGUuIFRoYXQgd2F5LCBpZiBvbmUgcmVwbGljYSBmYWlscywgYW5vdGhlciB3b3JraW5nIHJlcGxpY2EgY2FuIGhhbmRsZSBpbmNvbWluZyByZXF1ZXN0cyBmb3Igc29tZSBkYXRhLiBPdmVyYWxsLCByZXBsaWNhdGlvbiBhbGxvd3MgZm9yIGEgc3lzdGVtIHRoYXQgaXMgbW9yZSA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL3RyYW5zcGFyZW5jeS1pbGx1c2lvbnMtb2YtYS1zaW5nbGUtc3lzdGVtLXBhcnQtMi0yYjIxYzUwNDc3NzQiPnRyYW5zcGFyZW50PC9hPiwgPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9yZWFkeS1hbmQtYXZhaWxhYmxlLWRpc3RyaWJ1dGVkLXN5c3RlbXMtMTYxMDIzYWNhMzc4Ij5yZWxpYWJsZTwvYT4sIGFuZCBtdWNoIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvc2NhbGFiaWxpdHktZ3Jvd2luZy1hLXN5c3RlbS1pbi1kaWZmZXJlbnQtZGlyZWN0aW9ucy1hZTE2NDY5YzRjYjMiPmVhc2llciB0b8Kgc2NhbGU8L2E+LjwvcD48cD5UaGVyZSBhcmUgc29tZSBjYXZlYXRzIHdpdGggcmVwbGljYXRpb24sIGhvd2V2ZXIuIFdlIGFscmVhZHkga25vdyB0aGF0IGtlZXBpbmcgcmVwbGljYXMgY29uc2lzdGVudCBpcyBhIG1ham9yIGNoYWxsZW5nZS4gQnV0IHdoYXQgaGFwcGVucyBpZiBvdXIgcmVwbGljYXMgc3VkZGVubHkgbmVlZCB0byBkZWFsIHdpdGggYSBoaWdoIGxvYWQgb2YgaW5jb21pbmcgcmVxdWVzdHM/IEl0IGlzIHBvc3NpYmxlIHRoYXQgYSBmZXcgcmVwbGljYXMgY291bGQgZmFpbCwgYW5kIGFueSB1c2VyIHRoYXQgaXMgZGVwZW5kaW5nIG9uIHRoZSByZXBsaWNhIHdvdWxkIHBvdGVudGlhbGx5IG5vdCBiZSBhYmxlIHRvIGFjY2VzcyA8ZW0+YW55PC9lbT4gb2YgdGhlIGRhdGEgYXQgdGhhdCByZXBsaWNhIChhdCBsZWFzdCB1bnRpbCBhbm90aGVyIHJlcGxpY2Egd2FzIGFibGUgdG8gY29tZSBhbmQgdGFrZSBpdHPCoHBsYWNlKS48L3A+PHA+VGhpcyBwcmVzZW50cyBhIG5ldyBjaGFsbGVuZ2Ugd2l0aCByZXBsaWNhdGlvbjogd2hpbGUgbW9zdCBvZiB1c2VycyBjYW4gYWNjZXNzIGFsbCBvZiBvdXIgZGF0YSB0aHJvdWdoIHdvcmtpbmcgcmVwbGljYXMsIGZvciBhIDxlbT5wb3J0aW9uPC9lbT4gb2YgdXNlcnMsIGFsbCBvZiBvdXIgZGF0YSBjb3VsZCBiZSA8ZW0+Y29tcGxldGVseSB1bmF2YWlsYWJsZTwvZW0+IGlmIHRoZSByZXBsaWNhIHRoYXQgdGhvc2UgdXNlcnMgYXJlIGFjY2Vzc2luZyA8ZW0+aGFwcGVuczwvZW0+IHRvwqBmYWlsLjwvcD48cD5CdXQgd2hhdCBpZiB3ZSBoYWQgYSA8ZW0+dmVyeTwvZW0+IGxhcmdlIGRhdGEgc2V0PyBPbmUgdGhhdCB3b3VsZCBtYWtlIHVzIHRoaW5rIHR3aWNlIGJlZm9yZSByZXBsaWNhdGluZyBpdD8gVGhpcyBpcyB3aGVyZSB3ZSBtaWdodCB3YW50IHRvIGVtcGxveSBhIGRpZmZlcmVudCBzdHJhdGVneeKApmxpa2UgcGFydGl0aW9uaW5nIG91csKgZGF0YSE8L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpYR3I5clB5bURWM3RUb2tKaFpoSGZ3LmpwZWciIC8+PGZpZ2NhcHRpb24+V2hlcmUgcmVwbGljYXRpb24gZG9lc27igJl0IGZpdCB0aGUgYmlsbCwgcGFydGl0aW9ucyBjYW4gc2F2ZSB0aGXCoGRheSE8L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+SW4gc29tZSBzaXR1YXRpb25zIHdoZXJlIGEgZGF0YXNldCBpcyBzbyBsYXJnZSB0aGF0IGl0IGNhbm5vdCBhbGwgZml0IG9uIGEgc2luZ2xlIG5vZGUsIHdlIGNhbiBvcHQgdG8gcGFydGl0aW9uIG91csKgZGF0YS48L3A+PGJsb2NrcXVvdGU+UGFydGl0aW9uaW5nIGRhdGEgYWNyb3NzIG5vZGVzIG1lYW5zIHRoYXQgb3VyIGRhdGEgaXMgZGlzdHJpYnV0ZWQgYWNyb3NzIG91ciBub2Rlczsgbm8gc2luZ2xlIG5vZGUgY2FuIGNvbnRhaW4gYWxsIG9mIG91ciBkYXRhLiBDb252ZXJzZWx5LCBpZiB3ZSB3YW50ZWQgdG8gcmV0cmlldmUgYWxsIG9mIHRoZSBkYXRhLCB3ZeKAmWQgbmVlZCB0byBnbyB0byBldmVyeSBzaW5nbGUgbm9kZSB0byBnZXTCoGl0LjwvYmxvY2txdW90ZT48cD5EZXBlbmRpbmcgb24gd2hhdCBhIGRhdGFzZXQgbG9va3MgbGlrZSBhbmQgd2hhdCBwaWVjZXMgb2YgZGF0YSBhcmUgcmVsYXRlZCB0byBvbmUgYW5vdGhlciwgaXQgbWF5IG1ha2Ugc2Vuc2UgdG8gbHVtcCBjZXJ0YWluIHR5cGVzIG9mIGRhdGEgdG9nZXRoZXIgb250byBhIHNpbmdsZSBub2RlLiBGb3IgZXhhbXBsZSwgaW4gYSBzeXN0ZW0gdGhhdCBzaG93cyBwb3N0cyBhbmQgdGhlIHJlbGF0ZWQgY29tbWVudHMgb24gYSBwYWdlLCBpdCBtaWdodCBtYWtlIGxvZ2ljYWwgc2Vuc2UgdG8gYWx3YXlzIHB1dCB0aGUgZGF0YSBmb3IgYSBwb3N0IGFuZCBhbGwgb2YgaXRzIGNvbW1lbnRzIHRvZ2V0aGVyIG9uIHRoZSBzYW1lIG5vZGUsIHNvIHRoYXQgb3VyIHVzZXJzIHdvdWxkbuKAmXQgbmVlZCB0byBtYWtlIDxlbT50d288L2VtPiByZXF1ZXN0cyB0byBmZXRjaCA8ZW0+dHdvPC9lbT4ga2luZHMgb2YgZGF0YSBpbiA8ZW0+dHdvPC9lbT4gZGlmZmVyZW50IG5vZGVzLjwvcD48cD5UaGVyZSBhcmUgbG90cyBvZiBzdHJhdGVnaWVzIGZvciBkZXRlcm1pbmluZyB3aGF0IGRhdGEgc2hvdWxkIGxpdmUgb24gd2hpY2ggbm9kZS4gVHdvIHRlcm1zIHRoYXQgd2UgbWlnaHQgY29tZSBhY3Jvc3MgdG8gZGVzY3JpYmUgdGhpcyBpZGVhIGFyZSA8c3Ryb25nPjxlbT5zaGFyZGluZyA8L2VtPjwvc3Ryb25nPmFuZDxzdHJvbmc+PGVtPiBmcmFnbWVudGF0aW9uPC9lbT48L3N0cm9uZz4uIEJvdGggdGVybXMgYXJlIHVzZWQgaW50ZXJjaGFuZ2VhYmx5IHRvIGRlc2NyaWJlIHRoZSBpZGVhIG9mIHBhcnRpdGlvbmluZyBhIGRhdGFzZXQgYWNyb3NzIG1hbnkgZGlmZmVyZW50IG5vZGVzICh3ZSB3b27igJl0IGdvIGludG8gZGV0YWlsIGFib3V0IHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb25zIG9mIHRoZXNlIHRlY2huaXF1ZXMgaW4gdGhpc8KgcG9zdCkuPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqWmY4VDR3Vl80MDRybVpFRUwxR200Zy5qcGVnIiAvPjxmaWdjYXB0aW9uPlNoYXJkaW5nL2ZyYWdtZW50aW5nIGRhdGEgaXMgYSBraW5kIG9mIHBhcnRpdGlvbmluZyE8L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+VGhlIGltcG9ydGFudCB0aGluZyB0byBub3RlIGhlcmUgaXMgdGhhdCB3aGVuZXZlciB3ZSBzZWUgdGhlIHRlcm1zIOKAnHNoYXJkaW5n4oCdIG9yIOKAnGZyYWdtZW50YXRpb27igJ0sIHRoZSBjb250ZXh0IGlzIHVzdWFsbHkgYSBwYXJ0aXRpb25lZCBkYXRhYmFzZSAoc2luY2UgZGF0YWJhc2VzIGFyZSBnZW5lcmFsbHkgd2hlcmUgb3VyIGRhdGFzZXRzIHdpbGwgbGl2ZSEpLiBPZnRlbnRpbWVzLCBkYXRhYmFzZXMgbGl2ZSBvbiBtdWx0aXBsZSBzZXJ2ZXJzIGFuZCBhcmUgZGlzdHJpYnV0ZWQsIHRoZW1zZWx2ZXMgKHByZXR0eSBuZWF0LCByaWdodD8pLiBTbywgd2hlbiB3ZSBlbmNvdW50ZXIgYSBzaXR1YXRpb24gd2hlcmUgYSBkYXRhYmFzZSBpcyBmcmFnbWVudGVkIGFuZCBzcGxpdCBpdCBpbnRvIHNoYXJkcywgd2hhdCB3ZSBhcmUgcmVhbGx5IGRlYWxpbmcgd2l0aCBpcyBvbmUgYmlnIGRhdGFzZXQgdGhhdCBoYXMgYmVlbiBzcGxpdCBpbnRvIDxzdHJvbmc+PGVtPnNoYXJkczwvZW0+PC9zdHJvbmc+LCBvciBzbWFsbGVyIHNldHMvZnJhZ21lbnRzLCBhbmQgaGF2ZSBiZWVuIGRpc3RyaWJ1dGVkIGFjcm9zc8Kgbm9kZXMuPC9wPjxibG9ja3F1b3RlPkEgc2luZ2xlIGRhdGFiYXNlIG5vZGUgY29udGFpbnMganVzdCBvbmUgcG9ydGlvbiBvZiBhIGxhcmdlciBkYXRhc2V0LiBXaGVuIG1vcmUgZGF0YSBnZXRzIGFkZGVkIG9yIGlmIHRoZSBkYXRhc2V0IGNoYW5nZXMgc2lnbmlmaWNhbnRseSwgaXQgbWlnaHQgbmVlZCB0byBiZSByZS1wYXJ0aXRpb25lZCBpbnRvIG5ldyBzaGFyZHMgYWNyb3NzIGFsbCB0aGXCoG5vZGVzLjwvYmxvY2txdW90ZT48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKjlWQjhrXzNSUjZfOENIRllEWmNkRkEuanBlZyIgLz48ZmlnY2FwdGlvbj5SZXBsaWNhdGlvbiB2ZXJzdXMgcGFydGl0aW9uaW5nIGRhdGEuPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPlNvIGhvdyBkb2VzIHRoaXMgZml0IGluIHdpdGggb3VyIG1lbnRhbCBtb2RlbCBvZiA8ZW0+cmVwbGljYXRpb248L2VtPj88L3A+PHA+V2VsbCwgdG8gc3RhcnQsIHRoZXJlIGlzIG9uZSBtYWpvciBzaW1pbGFyaXR5IHRvIG5vdGUgaGVyZTogYm90aCBwYXJ0aXRpb25pbmcgYW5kIHJlcGxpY2F0aW9uIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIGFuZCByZWxpYWJpbGl0eSBvZiBvdXIgc3lzdGVtLiBUaGlzIGlzIHNpbXBseSBkdWUgdG8gdGhlIGZhY3QgdGhhdCBoYXZpbmcgbW9yZSBub2Rlc+KAiuKAlOKAindoZXRoZXIgdGhleSBhcmUgcmVwbGljYXMgdGhhdCBjb250YWluIGFsbCB0aGUgc2FtZSBkYXRhLCBvciB3aGV0aGVyIHRoZXkgYXJlIHBhcnRpdGlvbnMgdGhhdCBjb250YWlucyBzb21lIG9mIHRoZSBkYXRh4oCK4oCU4oCKbWVhbiB0aGF0IHRoZSBsb2FkIG9uIGEgc2luZ2xlIG5vZGUgcmVkdWNlcyEgV2hlbiB3ZSBhZGQgbW9yZSByZXBsaWNhcyBPUiBwYXJ0aXRpb25zLCB3ZSBlZmZlY3RpdmVseSBzcHJlYWQgb3V0IHRoZSBpbmNvbWluZyByZXF1ZXN0cyBmb3IgZGF0YSwgd2hpY2ggaGVscHMgb3VyIHN5c3RlbSBzY2FsZSBhbmQgbWFrZXMgaXQgbXVjaCBtb3JlIHBlcmZvcm1hbnQgYW5kIGF2YWlsYWJsZSB0byBvdXIgZW5kwqB1c2Vycy48L3A+PHA+QnV0IHdoYXQgYWJvdXQgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlc2UgdHdvIHN0cmF0ZWdpZXM/IFJlcGxpY2F0aW9uIGd1YXJhbnRlZXMgdGhhdCBvdXIgZW5kIHVzZXIgY2FuIDxlbT5hbHdheXMgcmVhZDwvZW0+IG91ciB3aG9sZSBkYXRhc2V0LCBiZWNhdXNlIGFsbCBvZiB0aGUgZGF0YSBsaXZlcyBvbiBlYWNoIHJlcGxpY2EuIE9uIHRoZSBvdGhlciBoYW5kLCBwYXJ0aXRpb25pbmcgZ3VhcmFudGVlcyB0aGF0IDxlbT5zb21lPC9lbT4gb2YgdGhlIGRhdGEgd2lsbCBiZSByZXRyaWV2YWJsZSwgYnV0IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IG91ciBlbmQgdXNlciBjYW4gYWx3YXlzIHJldHJpZXZlIHRoZSBkYXRhIHRoZXkgbmVlZCBpZiBvbmUgb2YgdGhlIHBhcnRpdGlvbnMgZmFpbHMhPC9wPjxwPkFub3RoZXIgZGlmZmVyZW5jZSBiZXR3ZWVuIHJlcGxpY2F0aW9uIGFuZCBwYXJ0aXRpb25pbmcgYXJlIHRoZSB0aGluZ3MgdGhhdCBtYWtlIHRoZW0gZGlmZmljdWx0ISBSZXBsaWNhdGlvbiBpcyBoYXJkIGJlY2F1c2UgaXTigJlzIHRyaWNreSB0byBtYWludGFpbiBjb25zaXN0ZW5jeSBiZXR3ZWVuIG91ciByZXBsaWNhcy4gUGFydGl0aW9uaW5nIGlzIGhhcmQgZm9yIHR3byByZWFzb25zOiBmaXJzdCwgaWYgb3VyIGRhdGFzZXQgY2hhbmdlcyBhbmQgd2UgbmVlZCB0byBzdWRkZW5seSByZS1wYXJ0aXRpb24gaXTigKZ3ZWxsLCB0aGlzIGlzIG5vIGVhc3kgdGFzay4gRGVjaWRpbmcgaG93IHRvIGRpdmlkZSB1cCBkYXRhIHRha2VzIHRpbWUgYW5kIGVmZm9ydCwgYW5kIHdlIGRlZmluaXRlbHkgZG9u4oCZdCB3YW50IHRvIGJlIHJlLXBhcnRpdGlvbmluZyBpdCBhbGwgdGhlIHRpbWUhIFNlY29uZCwgZGVwZW5kaW5nIG9uIGhvdyBpdCBpcyBpbXBsZW1lbnRlZCwgaXQgY2FuIHNvbWV0aW1lcyBiZSBpbmVmZmVjdGl2ZS4gRm9yIGV4YW1wbGUsIGlmIHdlIHNvbWUgaGlnaGx5LXVzZWQgZGF0YSB0aGF0IGlzIHBhcnRpdGlvbmVkIGludG8gPGVtPm9uZTwvZW0+IG5vZGUsIHdlIGFjdHVhbGx5IGVuZCB1cCBpbiBhIDxlbT53b3JzZTwvZW0+IHNpdHVhdGlvbiB0aGFuIGJlZm9yZSB3ZSBwYXJ0aXRpb25lZCB0aGUgZGF0YS4gV2h5IGlzwqB0aGF0PzwvcD48cD5XZWxsLCBpbWFnaW5lIHRoYXQgYWxsIG9mIG91ciBlbmQgdXNlcnMgc3VkZGVubHkgcmVxdWVzdCB0aGF0IGhpZ2hseS11c2VkIGRhdGEgYXQgb25jZSwgYW5kIHRoZSBub2RlIGNhbuKAmXQgaGFuZGxlIHRoZSBoaWdoIGxvYWQ/IE9yIHdoYXQgaWYgdGhhdCBvbmUgZGF0YWJhc2Ugbm9kZSB3aXRoIHRoZSBoaWdobHktdXNlZCBkYXRhIGZhaWxzPyBOb3cgb3VyIGVuZCB1c2VycyBjYW7igJl0IGFjY2VzcyB0aGlzIGltcG9ydGFudCBwYXJ0aXRpb24hIFNvIGl04oCZcyB1cCB0byB1cyB0byBjb25zaWRlciBhbGwgb2YgdGhlc2UgcG90ZW50aWFsIGRvd25zaWRlcyB3aGVuIGRldGVybWluaW5nIHRoZSB0cmFkZW9mZnMgb2YgdGhlc2UgdHdvIHN0cmF0ZWdpZXMuIFRvIGF2b2lkIHNvbWUgb2YgdGhlIGhlYXJ0YWNoZSB0aGF04oCZcyBhc3NvY2lhdGVkIHdpdGggbWFraW5nIHRoZXNlIGRlY2lzaW9ucywgbWFueSBwcm9kdWN0aW9uLWxldmVsIGRpc3RyaWJ1dGVkIHN5c3RlbXMgd2lsbCB1c2UgcmVwbGljYXRpb24gd2hlbiBwb3NzaWJsZSwgYW5kIG9wdCBmb3IgcGFydGl0aW9ucyBvbmx5IHdoZW4gbmVjZXNzYXJ5LjwvcD48aDM+RGl2aWRpbmcgYcKgbmV0d29yazwvaDM+PHA+Tm93IHRoYXQgd2Uga25vdyB0aGUgaW5zIGFuZCBvdXRzIG9mIHdoYXQgaXQgbWVhbnMgdG8gcGFydGl0aW9uIGRhdGEsIHdlIGhhdmUgb25lIGxhc3QgdGhpbmcgdG8gdW5wYWNrOiB0aGUgaWRlYSBiZWhpbmQgcGFydGl0aW9uaW5nIHRoZSBuZXR3b3JrLiBEb27igJl0IGZlZWwgdG9vIGludGltaWRhdGVkLCB0aG91Z2gsIHRoaXMgaXNu4oCZdCBhIGNvbXBsZXRlbHkgbmV3IHRvcGljIGZvciB1cy4gSW4gZmFjdCwgSeKAmWxsIGxldCB5b3UgaW4gb24gYSBsaXR0bGUgc2VjcmV0LCB0aG91Z2jigIrigJTigIp3ZeKAmXZlIGFscmVhZHkgc2VlbiB0aGUgZWZmZWN0cyBvZiBhIHBhcnRpdGlvbmVkIG5ldHdvcmshPC9wPjxwPldl4oCZdmUgbGVhcm5lZCBhYm91dCB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9tb2Rlcy1vZi1mYWlsdXJlLXBhcnQtMS02Njg3NTA0YmZlZDYiPm1hbnk8L2E+IDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvbW9kZXMtb2YtZmFpbHVyZS1wYXJ0LTItNGQwNTA3OTRiZTJmIj5kaWZmZXJlbnQ8L2E+IGZhaWx1cmUgbW9kZXMgaW4gdGhpcyBzZXJpZXMsIGFuZCBhcyBpdCB0dXJucyBvdXQsIDxzdHJvbmc+PGVtPm5ldHdvcmsgcGFydGl0aW9uaW5nPC9lbT48L3N0cm9uZz4gaXMgYWN0dWFsbHkganVzdCBvbmUgZm9ybSBvZiBmYWlsdXJlIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtLiBJdCBvY2N1cnMgd2hlbiBhIG5ldHdvcmsgaXMgc3BsaXQgdXAgaW50byBmcmFnbWVudHMsIGFuZCBzdWJzZXF1ZW50bHkgY3JlYXRlcyBzdWItbmV0d29ya3Mgd2l0aGluIGl0c2VsZi4gVGhlIGltcG9ydGFudCBiaXQgdG8gY2FsbCBvdXQgaGVyZSBpcyB0aGF0IGl0IGlzIGEgPHN0cm9uZz48ZW0+bmV0d29yayBmYXVsdDwvZW0+PC9zdHJvbmc+IChhbHNvIGNhbGxlZCBhIDxzdHJvbmc+PGVtPm5ldHdvcmsgc3BsaXQ8L2VtPjwvc3Ryb25nPikgdGhhdCBicmVha3MgdGhlIHVzdWFsIGNvbW11bmljYXRpb24gYmV0d2VlbiBub2RlcyBpbiB0aGXCoG5ldHdvcmsuPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqZnlGY0VRUWJPM0UySU42X3lLajNjdy5qcGVnIiAvPjxmaWdjYXB0aW9uPldoYXQgZG9lcyBpdCBtZWFuIHRvIHBhcnRpdGlvbiBhwqBuZXR3b3JrPzwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5Ib3dldmVyLCB0aGlzIGRvZXNu4oCZdCBtZWFuIHRoYXQgPGVtPmFsbDwvZW0+IHRoZSBub2RlcyBpbiB0aGUgbmV0d29yayBjYW5ub3QgY29tbXVuaWNhdGU7IHRoZSBvbmx5IG9uZXMgdGhhdCBjYW7igJl0IGNvbW11bmljYXRlIHRvIG9uZSBhbm90aGVyIGFyZSB0aGUgb25lcyBzdXJyb3VuZGluZyB0aGUgc3BsaXQuIFRoaXMgbWVhbnMgdGhhdCBpZiBhIG5ldHdvcmsgc3BsaXQgb2NjdXJzIGJldHdlZW4gdHdvIG5vZGVzLCB0aG9zZSB0d28gbm9kZXMgY2Fu4oCZdCB0YWxrIHRvIG9uZSBhbm90aGVyLCBidXQgdGhleSBjYW4gY29udGludWUgdG8gdGFsayB0byBvdGhlciBub2RlcyB0aGF0IGFyZSBub3QgaW1wYWN0ZWQgYnkgdGhlwqBzcGxpdC48L3A+PGJsb2NrcXVvdGU+V2hlbiB0aGUgbm9kZSBjb25uZWN0aW9uIGlzIGludGVycnVwdGVkIGJ5IGEgbmV0d29yayBmYXVsdCwgaXQgY3JlYXRlcyBzdWJuZXR3b3JrcyB0aGF0IGFyZSDigJxwYXJ0aXRpb25z4oCdIG9mIHRoZSBsYXJnZXIgbmV0d29ya+KAiuKAlOKAimFuIHVuaW50ZW50aW9uYWwgZGl2aXNpb24gb2YgdGhlIG5ldHdvcmssIGlmIHlvdcKgd2lsbC48L2Jsb2NrcXVvdGU+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSo0WGR4aTdoNmpyaEJLWUpYUkJaQXZnLmpwZWciIC8+PGZpZ2NhcHRpb24+TmV0d29yayBmYWlsdXJlcyBjYW4gcGFydGl0aW9uIHRoZSBuZXR3b3JrIGludG8gc21hbGxlciBzdWJuZXR3b3Jrcy48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+Rm9yIGV4YW1wbGUsIGluIHRoZSBkcmF3aW5nIHNob3duIGhlcmUsIGEgPHN0cm9uZz48ZW0+bmV0d29yayBmYWlsdXJlPC9lbT48L3N0cm9uZz4gaGFzIGNhdXNlZCBhIG5ldHdvcmsgcGFydGl0aW9uIChhbHNvIGNhbGxlZCBhIDxzdHJvbmc+PGVtPmZyYWdtZW50YXRpb248L2VtPjwvc3Ryb25nPikuIFRoZSBwb2ludCBvZiB0aGUgZnJhZ21lbnRhdGlvbiBmb3JjZXMgb3VyIG5ldHdvcmsgdG8gYmUgZGl2aWRlZCBpbnRvIHR3byA8c3Ryb25nPjxlbT5zdWJuZXR3b3JrczwvZW0+PC9zdHJvbmc+LCB3aGljaCB3ZeKAmXZlIG5hbWVkIEEgYW5kIEIuIFRoZSBub2RlcyBvZiBzdWJuZXR3b3JrIEEgY2FuIGtlZXAgdGFsa2luZyB0byBvbmUgYW5vdGhlciwgYW5kIHRoZSBub2RlcyBvZiBzdWJuZXR3b3JrIEIgY2FuIGtlZXAgcHJvY2Vzc2luZyBkYXRhIGFuZCBzZW5kaW5nIGluZm9ybWF0aW9uIGJldHdlZW4gdGhlbXNlbHZlcy4gSG93ZXZlciwgYW55IG9mIHRoZSBub2RlcyBiZXR3ZWVuIHN1Ym5ldHdvcmtzIEEgYW5kIEIgaGF2ZSBiZWVuIGZyYWdtZW50ZWQsIHdoaWNoIG1lYW5zIHRoYXQgdGhleSBjYW7igJl0IHRhbGsgdG8gb25lIGFub3RoZXIhIFRoaXMgbWVhbnMgdGhhdCBzdWJuZXR3b3JrIEEgY2Fubm90IHRhbGsgdG8gb3IgZXZlbiBrbm93IHRoZSA8ZW0+c3RhdGU8L2VtPiBvZiBzdWJuZXR3b3JrIEIgKGFuZCB2aWNlwqB2ZXJzYSkuPC9wPjxwPk5vdywgaWYgdGhpcyBzaXR1YXRpb24gc291bmRzIGJhZCwgeW914oCZcmUgcmlnaHTigIrigJTigIppdCBpcyEgV2UgZG9u4oCZdCB3YW50IG91ciBuZXR3b3JrIHRvIHJhbmRvbWx5IGJyZWFrIGFuZCBjYXVzZSBwYXJ0cyBvZiBvdXIgc3lzdGVtIHRvIGJlIGlzb2xhdGVkIGZyb20gb25lIGFub3RoZXIuIENsZWFybHksIGEgcGFydGl0aW9uZWQgbmV0d29yayBpcyBzb21ldGhpbmcgdG8gYXZvaWQuIEhvd2V2ZXIsIGRvIHlvdSByZW1lbWJlciBiYWNrIHdoZW4gd2UgbGVhcm5lZCBhYm91dCB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9mb3JhZ2luZy1mb3ItdGhlLWZhbGxhY2llcy1vZi1kaXN0cmlidXRlZC1jb21wdXRpbmctcGFydC0xLTFiMzVjM2I4NWI1MyI+OCBGYWxsYWNpZXMgb2YgRGlzdHJpYnV0ZWQgQ29tcHV0aW5nPC9hPj8gSWYgd2UgdGhpbmsgYmFjayB0byBmYWxsYWN5ICMxICg8ZW0+4oCcVGhlIG5ldHdvcmsgaXMgcmVsaWFibGUu4oCdPC9lbT4pIGFuZCBGYWxsYWN5ICM0ICg8ZW0+4oCcVGhlIG5ldHdvcmsgaXMgc2VjdXJlLuKAnSkgPC9lbT50aGVuIHdl4oCZbGwgY29tZSBmYWNlIHRvIGZhY2Ugd2l0aCB0aGUgaGFyZCB0cnV0aDogPHN0cm9uZz48ZW0+bmV0d29yayBwYXJ0aXRpb25zIGFyZSB1bmF2b2lkYWJsZTwvZW0+PC9zdHJvbmc+LjwvcD48cD5TbyB3aGF0IGNhbiB3ZSBkbz8gV2VsbCwgd2UgY2FuIGRlc2lnbiBvdXIgc3lzdGVtcyB0byB0cnkgdG8gaGFuZGxlIHRoZW0gZ3JhY2VmdWxseSB3aGVuIHRoZXkgKGluZXZpdGFibHkpIGhhcHBlbiEgVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBjb25jbHVzaW9uIHRoYXQgd2UgY2FtZSB0byB3aGVuIHdlIHdlcmUgbGVhcm5pbmcgYWJvdXQgPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9mYW50YXN0aWMtZmF1bHRzLWFuZC13aGF0LXRvLWNhbGwtdGhlbS01NmQ5MWExYjE5OGMiPmZhdWx0IHRvbGVyYW5jZTwvYT4sIGFuZCBob3cgd2UgYXJlIGZvcmNlZCB0byBjb25zaWRlciBmYXVsdHMgYW5kIHRyeSB0byBkZXNpZ24gb3VyIHN5c3RlbXMgdG8gaGFuZGxlIHRoZW0uIFNpbWlsYXJseSwgd2hlbiBpdCBjb21lcyB0byBuZXR3b3JrIHBhcnRpdGlvbnMsIHdlIG5lZWQgdG8gcGxhbiBmb3IgPHN0cm9uZz48ZW0+cGFydGl0aW9uIHRvbGVyYW5jZTwvZW0+PC9zdHJvbmc+LCB3aGljaCBpcyB0aGV5IHdheSB0aGF0IHdlIGNvbnNpZGVyIHRoZSBwb3RlbnRpYWwgbmV0d29yayBmYXVsdHMgdGhhdCBtaWdodCBwb3AgdXAsIGFzIHdlbGwgYXMgdGhlIGZhaWx1cmVzIHRoYXQgdGhleSBtaWdodCBjYXVzZSEgQSBwYXJ0aXRpb24gdG9sZXJhbnQgc3lzdGVtIGlzIG9uZSB0aGF0IGhhcyBhdHRlbXB0ZWQgdG8gYWNjb3VudCBmb3IgbmV0d29yayBwYXJ0aXRpb25zLCBzaW5jZSB3ZeKAmWxsIGFsbCBydW4gaW50byB0aGVtIGV2ZW50dWFsbHkuPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqV2tHeFZ2VGNCdC1oWnZfVnBaME81US5qcGVnIiAvPjxmaWdjYXB0aW9uPlBhcnRpdGlvbiB0b2xlcmFuY2UgaXMgdGhlIGFiaWxpdHkgdG8gYWNjb3VudCBmb3IgbmV0d29yayBwYXJ0aXRpb25zLjwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5BbHRob3VnaCBkYXRhIHBhcnRpdGlvbnMgbWlnaHQgYmUgYW4gYXZvaWRhYmxlIHByb2JsZW0gdG8gc29sdmUgc2luY2Ugd2UgbWF5IG5vdCBkZWNpZGVkIHRoYXQgd2UgZXZlbiBuZWVkIHRvIHBhcnRpdGlvbiBvdXIgZGF0YSwgbmV0d29yayBwYXJ0aXRpb25zIGFyZSBzb21ldGhpbmcgdGhhdCB3ZSBqdXN0IGNhbm5vdCBhdm9pZC4gSW4gZmFjdCwgdGhleeKAmWxsIGNvbWUgdXAgYWdhaW4gbGF0ZXIgd2hlbiBzdGFydCBsZWFybmluZyBhYm91dCBzb21lIGludGVyZXN0aW5n4oCmdGhlb3JlbXMuIEJ1dCB0aGF04oCZcyBhIHN0b3J5IGZvciBhbm90aGVyIHBvc3QhwqDwn5iJPC9wPjxoND5SZXNvdXJjZXM8L2g0PjxwPlBhcnRpdGlvbmluZyBhbmQgcGFydGl0aW9uIHRvbGVyYW5jZSBjb21lcyB1cCBxdWl0ZSBvZnRlbiB3aGVuIGxlYXJuaW5nIG1vcmUgYWR2YW5jZWQgZGlzdHJpYnV0ZWQgc3lzdGVtIHRvcGljcywgc28gaXTigJlzIGltcG9ydGFudCB0byBoYXZlIGEgc3Ryb25nIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGZ1bmRhbWVudGFscy4gQ29udmVuaWVudGx5LCB0aGVyZSBhcmUgc29tZSByZWFsbHkgZ3JlYXQgcmVzb3VyY2VzIHRvIGhlbHAgd2l0aCB0aGlzIHRhc2suIEnigJl2ZSBsaXN0ZWQgc29tZSBvZiBteSBmYXZvcml0ZXMgYmVsb3csIHNvbWUgb2Ygd2hpY2ggZ2V0IGludG8gZXZlbiBtb3JlIGFkdmFuY2VkIGFzcGVjdHMgb2YgcGFydGl0aW9uaW5nOyBjaGVjayB0aGVtIG91dCBpZiB5b3XigJlyZSBlYWdlciB0byBsZWFybsKgbW9yZSE8L3A+PG9sPjxsaT48YSBocmVmPSJodHRwOi8vZGltYWZlbmcuY29tLzIwMTYvMTIvMDQvZGlzdHJpYnV0ZWQtc3lzdGVtcy8iPkRpc3RyaWJ1dGVkIHN5c3RlbXMgY2hlYXQgc2hlZXQ8L2E+LCBEbWl0cnnCoEZlZG9zb3Y8L2xpPjxsaT48YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vQFByYW5heWtjL3VuZGVyc3RhbmRpbmctcGFydGl0aW9uaW5nLWluLWRpc3RyaWJ1dGVkLXN5c3RlbXMtNGFjM2M4MDEwZmFlIj5QYXJ0aXRpb25pbmc6IFRoZSBNYWdpYyBSZWNpcGUgRm9yIERpc3RyaWJ1dGVkIFN5c3RlbXM8L2E+LCBQcmFuYXkgS3VtYXIgQ2hhdWRoYXJ5PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL2Jvb2subWl4dS5uZXQvZGlzdHN5cy9pbnRyby5odG1sIj5EaXN0cmlidXRlZCBzeXN0ZW1zIGZvciBmdW4gYW5kIHByb2ZpdDwvYT4sIE1pa2l0b8KgVGFrYWRhPC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj11VEp2TVJSNDBBZyI+V2h5IGFyZSBEaXN0cmlidXRlZCBTeXN0ZW1zIHNvIGhhcmQ/IEEgbmV0d29yayBwYXJ0aXRpb24gc3Vydml2YWwgZ3VpZGU8L2E+LCBEZW5pc2XCoFl1PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1XMU5tYmN1b21WTSI+UmVwbGljYXRpb24gdnMgUGFydGl0aW9uaW5nPC9hPiwgR2VvcmdpYcKgVGVjaDwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vYXBoeXIuY29tL3Bvc3RzLzI4MS1qZXBzZW4tb24tdGhlLXBlcmlscy1vZi1uZXR3b3JrLXBhcnRpdGlvbnMiPkplcHNlbjogT24gdGhlIHBlcmlscyBvZiBuZXR3b3JrIHBhcnRpdGlvbnM8L2E+LCBLeWxlIEtpbmdzYnVyeTwvbGk+PC9vbD48aW1nIHNyYz0iaHR0cHM6Ly9tZWRpdW0uY29tL18vc3RhdD9ldmVudD1wb3N0LmNsaWVudFZpZXdlZCZyZWZlcnJlclNvdXJjZT1mdWxsX3JzcyZwb3N0SWQ9M2MxNzIzZmVjYzRlIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBhbHQ9IiI+PGhyPjxwPjxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvcGFyc2luZy10aHJvdWdoLXBhcnRpdGlvbnMtaW4tYS1kaXN0cmlidXRlZC1zeXN0ZW0tM2MxNzIzZmVjYzRlIj5QYXJzaW5nIFRocm91Z2ggUGFydGl0aW9ucyBpbiBhIERpc3RyaWJ1dGVkIFN5c3RlbTwvYT4gd2FzIG9yaWdpbmFsbHkgcHVibGlzaGVkIGluIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMiPmJhc2VkczwvYT4gb24gTWVkaXVtLCB3aGVyZSBwZW9wbGUgYXJlIGNvbnRpbnVpbmcgdGhlIGNvbnZlcnNhdGlvbiBieSBoaWdobGlnaHRpbmcgYW5kIHJlc3BvbmRpbmcgdG8gdGhpcyBzdG9yeS48L3A+XV0+PC9jb250ZW50OmVuY29kZWQ+CiAgICAgICAgPC9pdGVtPgogICAgICAgIDxpdGVtPgogICAgICAgICAgICA8dGl0bGU+PCFbQ0RBVEFbUmVkdW5kYW5jeSBhbmQgUmVwbGljYXRpb246IER1cGxpY2F0aW5nIGluIGEgRGlzdHJpYnV0ZWQgU3lzdGVtXV0+PC90aXRsZT4KICAgICAgICAgICAgPGxpbms+aHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9yZWR1bmRhbmN5LWFuZC1yZXBsaWNhdGlvbi1kdXBsaWNhdGluZy1pbi1hLWRpc3RyaWJ1dGVkLXN5c3RlbS03YWI0MzIyZDczNzg/c291cmNlPXJzcy04ZjU1OTkzYzk3M2UtLS0tLS0yPC9saW5rPgogICAgICAgICAgICA8Z3VpZCBpc1Blcm1hTGluaz0iZmFsc2UiPmh0dHBzOi8vbWVkaXVtLmNvbS9wLzdhYjQzMjJkNzM3ODwvZ3VpZD4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW2NvZGVdXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbY29tcHV0ZXItc2NpZW5jZV1dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtzb2Z0d2FyZS1kZXZlbG9wbWVudF1dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtwcm9ncmFtbWluZ11dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtkaXN0cmlidXRlZC1zeXN0ZW1zXV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGRjOmNyZWF0b3I+PCFbQ0RBVEFbVmFpZGVoaSBKb3NoaV1dPjwvZGM6Y3JlYXRvcj4KICAgICAgICAgICAgPHB1YkRhdGU+V2VkLCAxNCBBdWcgMjAxOSAxMjowMTowMSBHTVQ8L3B1YkRhdGU+CiAgICAgICAgICAgIDxhdG9tOnVwZGF0ZWQ+MjAxOS0wOC0xNFQxMjowMTowMS40NzNaPC9hdG9tOnVwZGF0ZWQ+CiAgICAgICAgICAgIDxjb250ZW50OmVuY29kZWQ+PCFbQ0RBVEFbPGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpMR3FLUUhXM1VmNHNhWXVDcnZUU2hBLmpwZWciIC8+PGZpZ2NhcHRpb24+UmVkdW5kYW5jeSBhbmQgcmVwbGljYXRpb246IGR1cGxpY2F0aW5nIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPldoZW4gaXQgY29tZXMgdG8gcHJvZ3JhbW1pbmcsIHRoZXJlIGFyZSBjZXJ0YWluIGNvbnZlbnRpb25zLCBpZGlvbXMsIGFuZCBwcmluY2lwbGVzIHRoYXQgd2UgcnVuIGludG8gYW5kIHJlZmVyZW5jZSBhcyBhIGNvbW11bml0eSBxdWl0ZSBvZnRlbi4gT25lIG9mIHRob3NlIHByaW5jaXBsZXMgaXMgdGhlIGlkZWEgb2Yg4oCcRG9u4oCZdCBSZXBlYXQgWW91cnNlbGbigJ0sIG9yIERSWSBmb3Igc2hvcnQuIEkgZW5jb3VudGVyZWQgdGhpcyBpZGVhIGVhcmx5IG9uIGluIG15IHByb2dyYW1taW5nIGNhcmVlciwgYW5kIGl0IHNlZW1lZCBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHRvIG1lIGF0IHRoZSB0aW1lOiBpbiBvcmRlciB0byBtYWludGFpbiBjbGVhbiwgY29uY2lzZSBjb2RlLCBpdCB3YXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGF0IG9uZSBkaWRu4oCZdCByZXBlYXQgdGhlIHNhbWUgbGluZXMgb3IgbG9naWMgaW4gb3VyIGNvZGViYXNlLjwvcD48cD5CdXQgb3ZlciB0aGUgeWVhcnMgb2YgbXkgY2FyZWVyLCBJ4oCZdmUgbGVhcm5lZCBhbmQgc2VlbiBtb3JlLCBhbmQgcmVhbGl6ZWQgdGhhdCB0aGF0IHJlcGV0aXRpb24gaXMgbm90IHNvIGN1dCBhbmQgZHJ5IOKAlG5vIHB1biBpbnRlbmRlZCEgU29tZXRpbWVzLCBpdCBhY3R1YWxseSBkb2VzIG1ha2Ugc2Vuc2UgdG8gcmVwZWF0IHlvdXJzZWxmIGF0IHRoZSByaXNrIG9mIG92ZXItZW5naW5lZXJpbmcgb3Igb3Zlci1hYnN0cmFjdGluZyBzb21ldGhpbmcgdW5uZWNlc3NhcmlseS4gU29tZXRpbWVzLCBpdCBtYWtlcyBzZW5zZSB0byBqdXN0IGR1cGxpY2F0ZSBhIGZ1bmN0aW9uIG9yIHBpZWNlIG9mIGxvZ2ljIGFuZCBqdXN0IOKAnGNvcHlwYXN0YeKAnSBpdCBpbnRvIGFub3RoZXLCoGZpbGUuPC9wPjxwPkFuZCB3aGVuIGl0IGNvbWVzIHRvIGRpc3RyaWJ1dGVkIHN5c3RlbXMsIGl0IG9mdGVuIG1ha2VzIGEgbG90IG9mIHNlbnNlIHRvIGhhdmUgbWFueSBvZiBvbmUgdGhpbmchIEluIGZhY3QsIGFzIHdlIHN0YXJ0IHRvIGxvb2sgYXQgZHVwbGljYXRpb24gYXMgYSBjb25jZXB0IGluIGRpc3RyaWJ1dGVkIGNvbXB1dGluZywgdGhlIG1vcmUgb2J2aW91cyBpdCBiZWNvbWVzIHRoYXQgcmVwZWF0aW5nIG91cnNlbHZlcyBjYW4gYWN0dWFsbHkgYmUgYSBodWdlIGJlbmVmaXQgdG8gb3VyIHN5c3RlbSBhcyBhIHdob2xlLiBTbyBsZXTigJlzIGRpZyBpbnRvIGR1cGxpY2F0aW9uIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtLCBhbmQgdHJ5IHRvIHVuZGVyc3RhbmQgd2h5IHdl4oCZZCBldmVyIHdhbnQgdG8gZG/CoGl0LjwvcD48aDM+UmVwZXRpdGlvbjogc29tZXRpbWVzIGEgZ29vZMKgdGhpbmc/PC9oMz48cD5XaGVuIHdlIHRhbGsgYWJvdXQg4oCccmVwZWF0aW5nIG91cnNlbHZlc+KAnSBpbiB0aGUgdGhlIHJlYWxtIG9mIGRpc3RyaWJ1dGVkIGNvbXB1dGluZywgd2UgY2FuIG1lYW4gbWFueSBkaWZmZXJlbnQgdGhpbmdzLiBSZXBldGl0aW9uIG9mIGEgbGluZSBvZiBjb2RlIG9yIGEgcGllY2Ugb2YgbG9naWMgdXN1YWxseSBpbmRpY2F0ZXMgdGhhdCB3ZSBoYXZlIG1vcmUgdGhhbiBvbmUgdGhpbmcgdGhhdCBpc27igJl0IHF1aXRlIG5lY2Vzc2FyeS4gSW4gYSBkaXN0cmlidXRlZCBzeXN0ZW0sIHdlIGhhdmUgYSBzcGVjaWFsIHRlcm0gZm9yIHRoaXMgY2FsbGVkIDxzdHJvbmc+PGVtPnJlZHVuZGFuY3k8L2VtPjwvc3Ryb25nPiwgd2hpY2ggaXMgYWxsIG9mIHRoZSByZXNvdXJjZXMgaW4gYSBzeXN0ZW0gdGhhdCBhcmUgbm90IG5lY2Vzc2FyeSBmb3IgdGhlIHN5c3RlbSB0byBhY3R1YWxseSBmdW5jdGlvbi48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSowRkpDMk5tS1cxQ29jYUpDTVFZNEVRLmpwZWciIC8+PGZpZ2NhcHRpb24+V2hhdCBjYW4gcmVkdW5kYW5jeSBpbmNsdWRlPzwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5Ib3dldmVyLCBpbiBkaXN0cmlidXRlZCBjb21wdXRpbmcsIHdlIGNvdWxkIHBvdGVudGlhbGx5IGhhdmUgYSB3aG9sZSBsb3Qgb2YgZGlmZmVyZW50IHJlc291cmNlcywgd2hpY2ggbWVhbnMgdGhhdCB3ZSBoYXZlIG1hbnkgZGlmZmVyZW50IHRoaW5ncyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGJlIHJlcGVhdGVkISBUaHVzLCByZWR1bmRhbmN5IGNhbiBlbmNvbXBhc3MgbWFueSBkaWZmZXJlbnQga2luZHMgb2YgZXh0cmFuZW91cyByZXNvdXJjZXMuPC9wPjxwPkZvciBleGFtcGxlLCByZXBlYXRlZCBjYWxscyB0byB0aGUgc2FtZSBmdW5jdGlvbiBmcm9tIHRoZSBkaWZmZXJlbnQgcGxhY2VzIGluIHRoZSBzeXN0ZW0sIG9yIGR1cGxpY2F0ZWQgcmVmZXJlbmNlcy92YXJpYWJsZXMgdG8gdGhlIHNhbWUgZGF0YSBhcmUgZm9ybXMgb2YgcmVkdW5kYW5jeS4gU2ltaWxhcmx5LCBkdXBsaWNhdGVkIGV4ZWN1dGlvbiB0aW1lIGluIGEgZnVuY3Rpb24gYXMgd2VsbCBhcyBleHRyYSBtZW1vcnksIGZpbGVzLCBvciBwcm9jZXNzZXMgYXJlIGFsc28gcmVkdW5kYW50LCBzaW5jZSB0aGUgc3lzdGVtIGRvZXNu4oCZdCBhY3R1YWxseSBuZWVkIHRob3NlIGR1cGxpY2F0ZWQgcmVzb3VyY2VzIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS48L3A+PHA+Rm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIHNlcmllcywgd2XigJlsbCBmb2N1cyBvbiByZWR1bmRhbmN5IGluIHRoZSBjb250ZXh0IG9mIGV4dHJhIG1lbW9yeSwgZmlsZXMgb3IgcHJvY2Vzc2VzLCB3aGljaCBpcyBvZnRlbiBjYWxsZWQgPHN0cm9uZz48ZW0+c3RydWN0dXJhbCByZWR1bmRhbmN5PC9lbT48L3N0cm9uZz4uIEluIHRoZSBjb250ZXh0IG9mIGEgZGlzdHJpYnV0ZWQgc3lzdGVtLCBzb21lIGV4dHJhIG1lbW9yeSBvciBmaWxlIChyZWFkOiBhIGRhdGFiYXNlKSBvciBhbiBleHRyYSBwcm9jZXNzIGFsbCBjYW4gYmUgYWJzdHJhY3RlZCB0byBhIHRlcm0gdGhhdCA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL21hbnktbm9kZXMtb25lLWRpc3RyaWJ1dGVkLXN5c3RlbS05OTIxZjg1MjA1YzQiPndl4oCZcmUgYWxyZWFkeSBmYW1pbGlhcjwvYT4gd2l0aDrCoG5vZGVzLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKnFIUE96aUttUkZtckEzNHFhYVJxVEEuanBlZyIgLz48ZmlnY2FwdGlvbj5SZWR1bmRhbnQgbm9kZXM6IGEgZGVmaW5pdGlvbi48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+QSByZWR1bmRhbnQgbm9kZSBpcyBhbnkgbm9kZSB0aGF0IGlzbuKAmXQgc3RyaWN0bHkgbmVjZXNzYXJ5IGZvciB0aGUgZGlzdHJpYnV0ZWQgc3lzdGVtIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gSW4gb3RoZXIgd29yZHMsIGFueSBub2RlIHRoYXQgYWRkcyB0byB0aGUgYmFyZSBtaW5pbXVtIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHN5c3RlbSBpcyBleHRyYW5lb3VzLCBhbmQgd2UgY2FuIHRoZXJlZm9yZSBzYXkgdGhhdCBpdCBpcyByZWR1bmRhbnQuPC9wPjxwPldlbGwsIHdhaXQgYSBtaW51dGXigIrigJTigIppZiB3ZSB0aGluayBhYm91dCB0aGlzIGEgYml0IG1vcmUgZGVlcGx5IGZvciBhIG1pbnV0ZSwgd2XigJlsbCBwcm9iYWJseSByZWFsaXplIHRoYXQgd2UgZHVwbGljYXRlIGEgbG90IG9mIHN0dWZmIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtISBXZeKAmXZlIHRhbGtlZCBhYm91dCBhZGRpbmcgbm9kZXMgdG8gYSBzeXN0ZW0gcHJldHR5IGxvb3NlbHkgaW4gdGhpcyBzZXJpZXMsIGJ1dCBhbGwgb2YgdGhlIG5vZGVzIHRoYXQgd2UgYWRkIGNhbuKAmXQgYWxsIGJlIDxlbT5uZWNlc3Nhcnk8L2VtPiB0byB0aGUgc3lzdGVtLCByaWdodD8gU28sIHdoeSBkaWQgd2UgZXZlbiBib3RoZXIgYWRkaW5nIHJlZHVuZGFudCBub2Rlcz8gV2h5IHdvdWxkIGFueW9uZTxlbT4gPC9lbT53YW50IHRvIGJlIGV4cGxpY2l0bHkgYW5kIGludGVudGlvbmFsbHkgcmVkdW5kYW50IGluIHRoZWlyIHN5c3RlbT8gV2VsbCwgaW4gb3JkZXIgdG8gcmVhbGx5IGFuc3dlciB0aGF0IHF1ZXN0aW9uLCB3ZSBuZWVkIHRvIG1vdmUgZnJvbSB0aGUgbGFyZ2VyIGNvbmNlcHQgb2YgcmVkdW5kYW5jeSB0byB0aGUgbW9yZSBzcGVjaWZpYyB0b3BpYyBvZiByZXBsaWNhdGlvbjxlbT4uPC9lbT48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpjcm01a3BrU082N3NoNXZVVldhbklRLmpwZWciIC8+PGZpZ2NhcHRpb24+UmVkdW5kYW5jeSB2ZXJzdXMgcmVwbGljYXRpb248L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+V2hpbGUgcmVkdW5kYW5jeSBpcyB3aGF0IGFsbG93cyB1cyB0byBkdXBsaWNhdGUgdGhlIGNvbXBvbmVudHMgb2Ygb3VyIHN5c3RlbSwgdGhlIGR1cGxpY2F0aW9uIGl0c2VsZiBpc27igJl0IHJlYWxseSB3aGF0IGlzwqB1c2VmdWwuPC9wPjxibG9ja3F1b3RlPlJlZHVuZGFuY3kgZG9lc27igJl0IGFjdHVhbGx5IGhlbHAgdXMgaWYgYSByZWR1bmRhbnQgbm9kZSBpcyBvdXQgb2Ygc3luYyB3aXRoIHRoZSBub2RlIHRoYXQgaXQgd2FzIGNvcGllZMKgPGVtPmZyb208L2VtPi48L2Jsb2NrcXVvdGU+PHA+QSByZWR1bmRhbnQgbm9kZSBvbiBpdHMgb3duIGlzbuKAmXQgYWxsIHRoYXQgaGVscGZ1bDsgc3VyZSwgd2UgaGF2ZSBhY2hpZXZlZCByZWR1bmRhbmN5LCBidXQgd2hvIGtub3dzIGhvdyBsb25nIHRoYXQgcmVkdW5kYW50IG5vZGUgd2lsbCBhY3R1YWxseSBiZSBmdW5jdGlvbmFsIGZvciB1cyBpbiBvdXIgc3lzdGVtPyBXaGF0IGhhcHBlbnMgaWYgb25lIG9mIHRoZSBub2RlcyBjaGFuZ2VzIGluIHZhbHVlIG9yIHN0YXRlPyBBcyBpdCB0dXJucyBvdXQsIHRoZSBhbnN3ZXIgdG8gYm90aCBvZiB0aGVzZSBxdWVzdGlvbnMgaXMgcmVwbGljYXRpb24hIFdoZW4gd2UgcmVwbGljYXRlIGEgbm9kZSBpbiBvdXIgc3lzdGVtLCB0aGVzZSBkdXBsaWNhdGUgY29waWVzIGFjdHVhbGx5IGJlY29tZSBtdWNoIG1vcmUgZnVuY3Rpb25hbCBmb3LCoHVzLjwvcD48aDM+RHVwbGljYXRpb24gYW5kIG1haW50YWluaW5nIHN0YXRlPC9oMz48cD5SZXBsaWNhdGlvbiBhcyBhIGNvbmNlcHQgaXMgbXVjaCBvZiBsaWtlIGEgc3Vic2V0IG9mIHJlZHVuZGFuY3kuIEJvdGggb2YgdGhlbSBpbnZvbHZlIGNyZWF0aW5nIHJlZHVuZGFudCBub2RlcyBpbiBhIHN5c3RlbeKAiuKAlOKAim5vZGVzIHRoYXQgYXJlbuKAmXQgc3RyaWN0bHkgbmVjZXNzYXJ5IGZvciB0aGUgc3lzdGVtIHRvIHdvcmsgY29ycmVjdGx5LjwvcD48cD5Ib3dldmVyLCA8c3Ryb25nPjxlbT5yZXBsaWNhdGlvbjwvZW0+PC9zdHJvbmc+IHRha2VzIGEgcmVkdW5kYW50IG5vZGUgb25lIHN0ZXAgZnVydGhlcjsgaXQgZW5zdXJlcyB0aGF0IHRoZSByZWR1bmRhbnQgbm9kZSAoYSA8c3Ryb25nPjxlbT5yZXBsaWNhPC9lbT48L3N0cm9uZz4pIGlzIGlkZW50aWNhbCB0byBhbGwgb2YgaXRzIG90aGVyIGNvcGllcy4gQXQgZmlyc3QgZ2xhbmNlLCB0aGlzIG1pZ2h0IHNlZW0gc2ltcGxlIGFuZCBwZXJoYXBzIGV2ZW4gb2J2aW91czsgd2UgbWlnaHQgZXZlbiBhc3N1bWUgdGhhdCBhIG5vZGUgdGhhdCBoYXMgYmVlbiBjb3BpZWQgZnJvbSBzb21ld2hlcmUgZWxzZSB3aWxsIGJlIGlkZW50aWNhbCB0byB0aGUgdGhpbmcgaXQgd2FzIGNvcGllZCBmcm9tLMKgcmlnaHQ/PC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqcnZvQXhXWEFOOXZYWFBacTNUaXNoQS5qcGVnIiAvPjxmaWdjYXB0aW9uPlJlcGxpY2F0ZWQgbm9kZXM6IGEgZGVmaW5pdGlvbjwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5XZWxsLCBub3QgbmVjZXNzYXJpbHkhIEluIGZhY3QsIGxldOKAmXMgc2F5IHRoYXQgd2UgY29waWVkIGEgbm9kZSBhbmQgY3JlYXRlZCBhIHJlZHVuZGFudCBvbmUuIEJ1dCBsYXRlciBvbiwgd2UgY2hhbmdlIHNvbWV0aGluZyBhYm91dCB0aGUgb3JpZ2luYWwgbm9kZeKAiuKAlOKAinBlcmhhcHMgd2UgY2hhbmdlIGl0cyBzdGF0ZSwgc29tZSB2YWx1ZSB0aGF0IGl0IGNvbnRhaW5zLCBvciBzb21lIGludGVybmFsIGJlaGF2aW9yLiBXaGF0IHdvdWxkIGhhcHBlbiB0byB0aGUgcmVkdW5kYW50IG5vZGU/IFdlbGzigKZub3RoaW5nITwvcD48cD5JZiB3ZSBjcmVhdGVkIGp1c3QgYSBzaW1wbGUgcmVkdW5kYW50IG5vZGUsIHRoZXJlIGlzIG5vdGhpbmcgaW4gcGxhY2Ugd2l0aGluIG91ciBzeXN0ZW0gdGhhdCB3aWxsIGVuc3VyZSB0aGF0IHRoZSByZWR1bmRhbnQgbm9kZSB3aWxsIDEpIGtub3cgdGhhdCBzb21ldGhpbmcgY2hhbmdlZCBhbmQgMikgd2lsbCB1cGRhdGUgaXRzZWxmIG9yIGJlIHVwZGF0ZWQgYnkgc29tZW9uZSBlbHNlIHRvIGhhdmUgdGhlIGNvcnJlY3TCoHN0YXRlLjwvcD48cD5TbyBwZXJoYXBzIHRoaXMgcHJvYmxlbSBpcyBub3QgYXMgb2J2aW91cyBhcyB3ZSBmaXJzdCB0aG91Z2h0ISBSZXBsaWNhdGlvbiBhdHRlbXB0cyB0byBzb2x2ZSB0aGlzIHByb2JsZW0sIGJlY2F1c2UgaXQgZW5zdXJlcyB0aGF0IGFsbCByZXBsaWNhcyBvZiBhIG5vZGUgd2lsbCBiZSBpZGVudGljYWwgdG8gb25lIGFub3RoZXIsIGFuZCB3aWxsIG1hdGNoIHRoZSBvcmlnaW5hbCBub2RlIHRoYXQgdGhleSB3ZXJlIHJlcGxpY2F0ZWQgZnJvbS4gKFNpZGUgbm90ZTogdGhlIHF1ZXN0aW9uIG9mIDxlbT5ob3c8L2VtPiB0byBlbnN1cmUgdGhpcyBpcyBubyBlYXN5IHRhc2ssIGJ1dCB3ZeKAmWxsIGxlYXJuIG1vcmUgYWJvdXQgdGhhdCBsYXRlciBvbiBpbiB0aGXCoHNlcmllc+KApik8L3A+PHA+QW5vdGhlciBpbXBvcnRhbnQgdGhpbmcgdG8gbm90ZSBoZXJlIGlzIHRoYXQgcmVwbGljYXRpb24gY29tZXMgaGFuZCBpbiBoYW5kIHdpdGggPHN0cm9uZz48ZW0+dHJhbnNwYXJlbmN5PC9lbT48L3N0cm9uZz4sIGEgY29uY2VwdCB0aGF0IDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvdHJhbnNwYXJlbmN5LWlsbHVzaW9ucy1vZi1hLXNpbmdsZS1zeXN0ZW0tcGFydC0xLWIwMWMyNWY3ZGRkZCI+d2XigJlyZSBhbHJlYWR5PC9hPiA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL3RyYW5zcGFyZW5jeS1pbGx1c2lvbnMtb2YtYS1zaW5nbGUtc3lzdGVtLXBhcnQtMi0yYjIxYzUwNDc3NzQiPmZhbWlsaWFyIHdpdGg8L2E+LiBXaXRoIGVhY2ggcmVwbGljYSB0aGF0IGlzIGFkZGVkIHRvIGEgc3lzdGVtLCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtIHNob3VsZCBzdGlsbCBmdW5jdGlvbiBjb3JyZWN0bHksIGFuZCBzaG91bGQgaWRlYWxseSBiZSB1bmF3YXJlIG9mIGFueSByZXBsaWNhcyB0aGF0IGhhdmUgYmVlbsKgY3JlYXRlZC48L3A+PGJsb2NrcXVvdGU+SWYgYSByZXBsaWNhIGlzIHVwZGF0ZWQsIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0gc2hvdWxkbuKAmXQga25vdyBhYm91dCBpdCwgYW5kIGlmIGEgbm9kZSBpcyByZXBsaWNhdGVkLCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtIHNob3VsZG7igJl0IHJlYWxsecKgY2FyZS48L2Jsb2NrcXVvdGU+PHA+Rm9yIGV4YW1wbGUsIGlmIGEgd2ViIHNlcnZlciBvciBhIGRhdGFiYXNlIG5vZGUgaXMgcmVwbGljYXRlZCwgdGhlIGVuZCB1c2VycyBvZiB0aGUgZGlzdHJpYnV0ZWQgc3lzdGVtIG91Z2h0IG5vdCB0byBoYXZlIGFueSBpZGVhIHRoYXQgYXJlIGludGVyYWN0aW5nIHdpdGggYSByZXBsaWNhIG9yIHRoZSBvcmlnaW5hbCBub2RlLiAoSW4gZmFjdCB0aGV5IHByb2JhYmx5IHNob3VsZG7igJl0IGhhdmUgYW55IGlkZWEgdGhhdCB0aGVyZSBldmVuIDxlbT5pczwvZW0+IGEgcmVwbGljYXRlZCBub2RlISk8L3A+PHA+V2hlbiB0aGlzIHRyYW5zcGFyZW5jeSBpcyBtb3N0bHkgbWFpbnRhaW5lZCBpbiBhIHN5c3RlbSwgcmVwbGljYXRpb24gcHJvdmlkZXMgdXMgd2l0aCBhIHdob2xlIGxvdCBvZiBiZW5lZml0czo8L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpoS1owMFRLblpMSi1feEZwX19vQnJRLmpwZWciIC8+PGZpZ2NhcHRpb24+U29tZSBiZW5lZml0cyBvZiB1c2luZyByZXBsaWNhdGlvbiBpbiBhIGRpc3RyaWJ1dGVkIHN5c3RlbS48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PG9sPjxsaT5SZXBsaWNhdGlvbiBvZiBub2RlcyBtYWtlcyBvdXIgc3lzdGVtIGlzIG11Y2ggbW9yZSA8c3Ryb25nPjxlbT5yZWxpYWJsZS4gPC9lbT48L3N0cm9uZz5JZiBvbmUgbm9kZSBnb2VzIGRvd24gYW5kIHdlIGhhdmUgYWxyZWFkeSBhZGRlZCByZXBsaWNhcywgaXTigJlzIG11Y2ggbW9yZSBsaWtlbHkgZm9yIGEgcmVwbGljYSB0byBzdGVwIGluIGFuZCBkbyB0aGUgam9iIG9mIHRoZSBmYWlsaW5nIG5vZGUuIFRoaXMgbWFrZXMgb3VyIHN5c3RlbSBtb3JlIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvZmFudGFzdGljLWZhdWx0cy1hbmQtd2hhdC10by1jYWxsLXRoZW0tNTZkOTFhMWIxOThjIj5mYXVsdC10b2xlcmFudDwvYT4uIEhhdmluZyByZXBsaWNhcyBpbiBwbGFjZSBtYWtlcyBvdXIgc3lzdGVtIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvcmVhZHktYW5kLWF2YWlsYWJsZS1kaXN0cmlidXRlZC1zeXN0ZW1zLTE2MTAyM2FjYTM3OCI+bW9yZSBhdmFpbGFibGU8L2E+IGFzIHdlbGwsIHNpbmNlIG92ZXJhbGwgdGhlcmUgYXJlIG1vcmUgYmFja3VwIHJlcGxpY2FzIHRvIHN0ZXAgaW4gdG8gdGFrZSBhbm90aGVyIG5vZGXigJlzIHBsYWNlLCB3aGljaCBtZWFucyB0aGF0IG91ciBzeXN0ZW0gc2hvdWxkbuKAmXQgZXhwZXJpZW5jZSB0b28gbXVjaCBkb3dudGltZS48L2xpPjxsaT5SZXBsaWNhdGlvbiBvZiBub2RlcyBhbHNvIG1ha2VzIG91ciBzeXN0ZW0gbW9yZSA8c3Ryb25nPjxlbT5wZXJmb3JtYW50PC9lbT48L3N0cm9uZz4uIFdpdGggbW9yZSByZXBsaWNhcyBpbiBwbGFjZSwgd2Ugbm93IGhhdmUgdGhlIGFiaWxpdHkgdG8gZG8gbW9yZSB3b3JrLCBzZXJ2ZSBtb3JlIHJlcXVlc3RzLCBhbmQgcHJvY2VzcyBtb3JlIGRhdGEuIFRoaXMgbWFrZXMgb3VyIHN5c3RlbSBqdXN0IGdlbmVyYWxseSBmYXN0ZXIsIHJlZHVjZXMgbGF0ZW5jeSwgYW5kIGFsbG93cyB0aGUgc3lzdGVtIHRvIGhhbmRsZSBhIGhpZ2ggdGhyb3VnaHB1dCBvZiBkYXRhIHRoYXQgaGFzIHRvIGJlIHByb2Nlc3NlZC9kZWxpdmVyZWQuPC9saT48bGk+UmVwbGljYXRpb24gb2Ygbm9kZXMgbWFrZXMgb3VyIHN5c3RlbSBtdWNoIDxzdHJvbmc+PGVtPmVhc2llciB0byBzY2FsZTwvZW0+PC9zdHJvbmc+LiBTY2FsYWJpbGl0eSBpcyA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL3NjYWxhYmlsaXR5LWdyb3dpbmctYS1zeXN0ZW0taW4tZGlmZmVyZW50LWRpcmVjdGlvbnMtYWUxNjQ2OWM0Y2IzIj5hIGJpZyBwbHVzIHBvaW50PC9hPiB3aGVuIGl0IGNvbWVzIHRvIGJ1aWxkaW5nIGEgZGlzdHJpYnV0ZWQgc3lzdGVtLCBidXQgaXTigJlzIG5vdCBhbHdheXMgZWFzeSB0byBhY2hpZXZlLiBXaXRoIG1vcmUgcmVwbGljYXRlZCBub2RlcywgaXTigJlzIGlzIGVhc2llciB0byBzY2FsZSBhIHN5c3RlbSBieSBhZGRpbmcgbW9yZSBkYXRhYmFzZXMsIHNlcnZlcnMsIG9yIHNlcnZpY2VzIGFzIHJlcXVpcmVkIGJ5IHRoZSBkZW1hbmRzIG9uIHRoZSBzeXN0ZW0uIEl04oCZcyBhbHNvIGVhc2llciB0byBnZW9ncmFwaGljYWxseSBzY2FsZSBhIHN5c3RlbSB3aGVuIHdlIGNhbiByZXBsaWNhdGUgYSBub2RlIGFuZCBwbGFjZSBpdCBpbiBhIGRpZmZlcmVudCBjb250aW5lbnQgb3IgY291bnRyeSB0byBoZWxwIHNjYWxlIGEgaGlnaCB3b3JrbG9hZCBpbiBhIHNwZWNpZmljIGxvY2F0aW9uLjwvbGk+PC9vbD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKk1pSVFia3QzcUU2Y2pWcHZjMlA3TUEuanBlZyIgLz48ZmlnY2FwdGlvbj5SZWxpYWJpbGl0eSwgcGVyZm9ybWFuY2UsIGFuZCBzY2FsYWJpbGl0eSB0aHJvdWdoIHJlcGxpY2F0aW9uPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPkJ5IHRoaXMgcG9pbnQsIGhvcGVmdWxseSB3ZeKAmXJlIGFsbCBvbiBib2FyZCB3aXRoIHRoZSBpZGVhIG9mIHJlcGxpY2F0aW9uIChyaWdodD8pLiBJdOKAmXMgcHJldHR5IGNvb2wgYW5kIG5lYXJseSBldmVyeSBkaXN0cmlidXRlZCBzeXN0ZW0gd2lsbCB0YWtlIGFkdmFudGFnZSBhbmQgbGV2ZXJhZ2UgdGhpcyBjb25jZXB0IHRvIGhlbHAgZGVhbCB3aXRoIGlzc3VlcyBvZiByZWxpYWJpbGl0eSwgcGVyZm9ybWFuY2UsIGFuZCBmYXVsdC10b2xlcmFuY2UuIFdoZXRoZXIgaW4gdGhlIGZvcm0gb2Ygd29ya2Vycywgc2VydmVycywgZGF0YWJhc2VzLCBvciBzZXJ2aWNlcywgd2XigJl2ZSBwcm9iYWJseSBlYWNoIHdvcmtlZCB3aXRoIHJlcGxpY2FzIGluIG91ciBkYWlseSBsaXZlcyBhcyBkZXZlbG9wZXJzISBTb3VuZHMgZ3JlYXQswqByaWdodD88L3A+PHA+V2VsbCwgYWxtb3N0LiBUaGUgc3RvcnkgZG9lc27igJl0IHF1aXRlIGVuZCBoZXJlLiBSZXBsaWNhdGlvbiBpcyBhd2Vzb21lLCBidXQgaXQgcHJlc2VudHMgc29tZSB1bmlxdWUgY2hhbGxlbmdlcyB1bnRvIGl0c2VsZi4gSSBjYW7igJl0IHByb21pc2UgYW55IHNvbHV0aW9ucyBpbiB0aGlzIHBvc3QgKGRvbuKAmXQgd29ycnksIHdl4oCZbGwgdGFsayBhIGxvdCBtb3JlIGFib3V0IHRoaXMgYXMgdGhlIHNlcmllcyBnb2VzIG9uKSwgYnV0IGF0IHRoZSB2ZXJ5IGxlYXN0LCBJ4oCZbGwgcHJlc2VudCB5b3Ugd2l0aCBzb21lIG9mIHRoZSBwcm9ibGVtcy4g8J+YiTwvcD48aDM+Q29uc2lzdGVudCBoZWFkYWNoZXM8L2gzPjxwPkluIGFkZGl0aW9uIHRvIHRyYW5zcGFyZW5jeSwgdGhlIGNvbmNlcHQgb2YgcmVwbGljYXRpb24gbmVlZHMgb25lIG90aGVyIHRoaW5nIHRvIHJlYWxseSB3b3JrIHdlbGw6IDxzdHJvbmc+PGVtPmNvbnNpc3RlbmN5PC9lbT48L3N0cm9uZz4uIEluIG9yZGVyIGZvciBhIHJlcGxpY2EgdG8gYWN0dWFsbHkgYmUgdXAtdG8tZGF0ZSB3aXRoIGFsbCB0aGUgb3RoZXIgcmVwbGljYXMgaW4gdGhlIHN5c3RlbSwgaXQgbmVlZHMgdG8gYmUgY29uc2lzdGVudCB3aXRoIHRoZSBvdGhlciBjb3BpZXMuIEFuZCB0aGlzIGlzIG5vdCBhIHRyaXZpYWzCoHRhc2shPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqeXZiV05aUHBWV2hZOEZ1VllzVVBfdy5qcGVnIiAvPjxmaWdjYXB0aW9uPldoYXQgbWFrZXMgcmVwbGljYXRpb24gaGFyZD88L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+Tm93IHBlcmhhcHMsIGF0IGZpcnN0IGdsYW5jZSwgdGhpcyBkb2VzbuKAmXQgc2VlbSB0b28gZGlmZmljdWx0LiBNYXliZSB3ZSBjb3VsZCBhbHdheXMgaGF2ZSB0aGUgcmVwbGljYXMgZ2V0IHVwZGF0ZXMgZnJvbSB0aGUgb3JpZ2luYWwgY29weT8gT3IgbWF5YmUgdGhlIG9yaWdpbmFsIGNvcHkgY2FuIHRlbGwgdGhlIHJlcGxpY2FzIHdoZW5ldmVyIHNvbWV0aGluZyBlbHNlIGNoYW5nZXM/IEhvd2V2ZXIsIHRoaXMgaXMgdHJpY2tlciB0aGFuIGl0wqBzb3VuZHMuPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqdnFFWEV3LXdkdTljVWNOT3dPSmp5QS5qcGVnIiAvPjxmaWdjYXB0aW9uPkl04oCZcyBhIHN0cnVnZ2xlIHRvIG1haW50YWluIGNvbnNpc3RlbmN5IGFzIHJlcGxpY2FzIGNoYW5nZcKgc3RhdGUhPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPldlIGxlYXJuZWQgZWFybGllciB0aGF0IGEgc3lzdGVtIG11c3QgYWxzbyBiZSB0cmFuc3BhcmVudCBmb3IgcmVwbGljYXRpb24gdG8gd29yay4gPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy90cmFuc3BhcmVuY3ktaWxsdXNpb25zLW9mLWEtc2luZ2xlLXN5c3RlbS1wYXJ0LTEtYjAxYzI1ZjdkZGRkIj5UcmFuc3BhcmVuY3k8L2E+IGluIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvdHJhbnNwYXJlbmN5LWlsbHVzaW9ucy1vZi1hLXNpbmdsZS1zeXN0ZW0tcGFydC0yLTJiMjFjNTA0Nzc3NCI+YSBzeXN0ZW08L2E+IG1lYW5zIHRoYXQgYWxsIHRoZSByZXBsaWNhcyBhbmQgdGhlIG9yaWdpbmFsIG5vZGUgbXVzdCBiZWhhdmUgc2ltaWxhcmx5LCB3aGljaCBtZWFucyB0aGF0IGEgY29uc3VtZXIgb2YgdGhlIHN5c3RlbSAobGlrZSBhbiBlbmQgdXNlciBvciBhbm90aGVyIG5vZGUpIGNvdWxkIHBvdGVudGlhbGx5IHdyaXRlIHRvIG9uZSByZXBsaWNhLCB3aGlsZSBhbm90aGVyIGNvbnN1bWVyIG9mIHRoZSBzeXN0ZW0gY291bGQgcmVhZCBmcm9tIDxlbT5hbm90aGVywqA8L2VtPnJlcGxpY2EhPC9wPjxwPlNvLCB3ZSBjYW7igJl0IHJlbHkgb24ganVzdCB0aGUgb3JpZ2luYWwgbm9kZSBhbnltb3JlIGFzIG91ciBzaW5nbGUgc291cmNlIG9mIHRydXRoIHdoZW4gaXQgY29tZXMgdG8gdGhlIHN0YXRlIG9mIG91ciBub2RlKHMpLiBUaGUgcXVlc3Rpb24gaGVyZSBpcywgb2YgY291cnNlLCBob3cgZG8gd2UgdGVsbCB0aGVzZSB0d28gcmVwbGljYXMgd2hhdCBqdXN0IGhhcHBlbmVkPyBUaGUgcmVwbGljYSB0aGF0IGlzIGJlaW5nIHJlYWQtZnJvbSBuZWVkcyB0byBrbm93IGFib3V0IHRoZSBsYXRlc3Qgd3JpdGU7IHNpbWlsYXJseSwgdGhlIHJlcGxpY2EgdGhhdCBpcyBiZWluZyB3cml0dGVuLXRvIG5lZWRzIHRvIGRpc3BlcnNlIGluZm9ybWF0aW9uIGFib3V0IHRoYXTCoHdyaXRlLjwvcD48cD5UaGlzIGlzIGV4YWN0bHkgd2hhdCBtYWtlcyByZXBsaWNhdGlvbiBzbyBoYXJkOyB3ZSBoYXZlIHRvIGNvbnRlbmQgd2l0aCBjb25zaXN0ZW5jeSBhbmQgZmlndXJlIG91dCBhIG1vZGVsIGZvciBob3cgdG8gZW5zdXJlIHRoYXQgYWxsIG9mIG91ciByZXBsaWNhcy4gVGhhbmtmdWxseSwgd2XigJlsbCBjb3ZlciB0aGF0IGluIG11Y2ggbW9yZSBkZXRhaWwgbGF0ZXIuIEZvciBub3csIHdlIGp1c3QgbmVlZCB0byBrbm93IHRoYXQgaXTigJlzIGEgcHJvYmxlbSB0aGF0IHdl4oCZbGwgaGF2ZSB0byBkZWFsIHdpdGggc29vbi4gc1VudGlsIHRoZW4sIGZlZWwgZnJlZSB0byByZXBsaWNhdGUgeW91ciBsaXR0bGUgaGVhcnRzwqBhd2F5ITwvcD48aDM+UmVzb3VyY2VzPC9oMz48cD5VbmRlcnN0YW5kaW5nIHJlcGxpY2F0aW9uIGFuZCByZWR1bmRhbmN5IGlzIGEga2V5IHN0ZXAgdG8gd3JhcHBpbmcgb3VyIGhlYWRzIGFyb3VuZCBob3cgYSBkaXN0cmlidXRlZCBzeXN0ZW0gZ3Jvd3MuIFRoZSB0b3BpY3MgaW4gdGhpcyBzZXJpZXMgd2lsbCBjb250aW51ZSB0byBidWlsZCBvbiB0aGUgaWRlYSBvZiByZXBsaWNhdGlvbiwgc28gaXTigJlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIGl0IGZ1bGx5LiBJZiB5b3XigJlyZSBsb29raW5nIGZvciBmdXJ0aGVyIHJlc291cmNlcywgdGhlIG9uZXMgbGlzdGVkIGJlbG93IGFyZSBzb21lIGdyZWF0IHBsYWNlcyB0byBzdGFydCAob3IgY29udGludWUgbGVhcm5pbmchKS48L3A+PG9sPjxsaT48YSBocmVmPSJodHRwczovL3BkZnMuc2VtYW50aWNzY2hvbGFyLm9yZy84N2RjLzhlODM5YWYwNjMzYjlmMjk2OGE2NjljNWFmNzA0NTNjZmUwYi5wZGYiPlJlZHVuZGFuY3kgYW5kIFJlcGxpY2F0aW9uOiBGYXVsdCBUb2xlcmFuY2Ugb24gdGhlIFN5c3RlbSBMZXZlbDwvYT4sIEt1cnQgS2FuemVuYmFjaDwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3c4LmNzLnVtdS5zZS9rdXJzZXIvNURWMTQ3L0hUMTUvbGVjdHVyZXMvbDgtaGFuZG91dHMucGRmIj5EaXN0cmlidXRlZCBTeXN0ZW1zOiBSZXBsaWNhdGlvbjwvYT4sIFVtZcOlIFVuaXZlcnNpdHk8L2xpPjxsaT48YSBocmVmPSJodHRwczovL3d3dy51aW8ubm8vc3R1ZGllci9lbW5lci9tYXRuYXQvaWZpL0lORjUwNDAvaDE2L3BlbnN1bWxpc3RlL3JlcGxpY2F0aW9uLnBkZiI+UmVwbGljYXRpb24gaW4gRGlzdHJpYnV0ZWQgU3lzdGVtczwvYT4sIFJvbWFuIFZpdGVuYmVyZzwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmNzLmhlbHNpbmtpLmZpL3dlYmZtX3NlbmQvMTI1NiI+RGlzdHJpYnV0ZWQgU3lzdGVtczogUmVwbGljYXRpb24gYW5kIENvbnNpc3RlbmN5PC9hPiwgSnVzc2kgS2FuZ2FzaGFyanU8L2xpPjxsaT48YSBocmVmPSJodHRwOi8vY3Npcy5wYWNlLmVkdS9+bWFyY2hlc2UvQ1M4NjUvUGFwZXJzL3dpZXNtYW5uV1BTKzAwLnBkZiI+VW5kZXJzdGFuZGluZyBSZXBsaWNhdGlvbiBpbiBEYXRhYmFzZXMgYW5kIERpc3RyaWJ1dGVkIFN5c3RlbXM8L2E+LCBTY2hpcGVyICZhbXA7wqBBbG9uc288L2xpPjwvb2w+PGltZyBzcmM9Imh0dHBzOi8vbWVkaXVtLmNvbS9fL3N0YXQ/ZXZlbnQ9cG9zdC5jbGllbnRWaWV3ZWQmcmVmZXJyZXJTb3VyY2U9ZnVsbF9yc3MmcG9zdElkPTdhYjQzMjJkNzM3OCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgYWx0PSIiPjxocj48cD48YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL3JlZHVuZGFuY3ktYW5kLXJlcGxpY2F0aW9uLWR1cGxpY2F0aW5nLWluLWEtZGlzdHJpYnV0ZWQtc3lzdGVtLTdhYjQzMjJkNzM3OCI+UmVkdW5kYW5jeSBhbmQgUmVwbGljYXRpb246IER1cGxpY2F0aW5nIGluIGEgRGlzdHJpYnV0ZWQgU3lzdGVtPC9hPiB3YXMgb3JpZ2luYWxseSBwdWJsaXNoZWQgaW4gPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2VkcyI+YmFzZWRzPC9hPiBvbiBNZWRpdW0sIHdoZXJlIHBlb3BsZSBhcmUgY29udGludWluZyB0aGUgY29udmVyc2F0aW9uIGJ5IGhpZ2hsaWdodGluZyBhbmQgcmVzcG9uZGluZyB0byB0aGlzIHN0b3J5LjwvcD5dXT48L2NvbnRlbnQ6ZW5jb2RlZD4KICAgICAgICA8L2l0ZW0+CiAgICAgICAgPGl0ZW0+CiAgICAgICAgICAgIDx0aXRsZT48IVtDREFUQVtGb3JhZ2luZyBmb3IgdGhlIEZhbGxhY2llcyBvZiBEaXN0cmlidXRlZCBDb21wdXRpbmcgKFBhcnQgMildXT48L3RpdGxlPgogICAgICAgICAgICA8bGluaz5odHRwczovL21lZGl1bS5jb20vYmFzZWRzL2ZvcmFnaW5nLWZvci10aGUtZmFsbGFjaWVzLW9mLWRpc3RyaWJ1dGVkLWNvbXB1dGluZy1wYXJ0LTItYjhmZjI5YmVlZDU2P3NvdXJjZT1yc3MtOGY1NTk5M2M5NzNlLS0tLS0tMjwvbGluaz4KICAgICAgICAgICAgPGd1aWQgaXNQZXJtYUxpbms9ImZhbHNlIj5odHRwczovL21lZGl1bS5jb20vcC9iOGZmMjliZWVkNTY8L2d1aWQ+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtjb2RlXV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW3NvZnR3YXJlLWRldmVsb3BtZW50XV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW2NvbXB1dGVyLXNjaWVuY2VdXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbcHJvZ3JhbW1pbmddXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbZGlzdHJpYnV0ZWQtc3lzdGVtc11dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxkYzpjcmVhdG9yPjwhW0NEQVRBW1ZhaWRlaGkgSm9zaGldXT48L2RjOmNyZWF0b3I+CiAgICAgICAgICAgIDxwdWJEYXRlPldlZCwgMDcgQXVnIDIwMTkgMTI6MTY6MDEgR01UPC9wdWJEYXRlPgogICAgICAgICAgICA8YXRvbTp1cGRhdGVkPjIwMTktMDgtMDdUMTI6MTY6MDEuOTAwWjwvYXRvbTp1cGRhdGVkPgogICAgICAgICAgICA8Y29udGVudDplbmNvZGVkPjwhW0NEQVRBWzxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqZDJ3YnBMQ1hnWFFSZnNOTHJ1cTVfQS5qcGVnIiAvPjxmaWdjYXB0aW9uPkZvcmFnaW5nIGZvciBFVkVOIE1PUkUgZmFsbGFjaWVzIG9mIGRpc3RyaWJ1dGVkIGNvbXB1dGluZyE8L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+U28gbXVjaCBvZiB3aGF0IG1ha2VzIGRpc3RyaWJ1dGVkIHN5c3RlbXMgaGFyZCB0byBjb250ZW50IHdpdGggaXMgdGhlIGZhY3QgdGhhdCwgYXMgYSBzeXN0ZW0gZ3Jvd3MsIGl0IGNoYW5nZXMuIEZ1cnRoZXJtb3JlLCB0aGUgdGhpbmdzIGFyb3VuZCB0aGUgc3lzdGVt4oCK4oCU4oCKcGFydHMgb2YgdGhlIHN5c3RlbSBpdHNlbGYsIGl0cyBkZXBlbmRlbmNpZXMsIGFuZCB0aGUgcGVvcGxlIHdobyBtYWludGFpbiBpdOKAiuKAlOKAimFyZSBhbHNvIGVhY2ggY2FwYWJsZSBvZiBjaGFuZ2luZyBhc8Kgd2VsbC48L3A+PHA+SW4gcGFydCBvbmUgb2YgdGhpcyBzZXJpZXMsIHdlIGxvb2tlZCBpbnRvIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvZm9yYWdpbmctZm9yLXRoZS1mYWxsYWNpZXMtb2YtZGlzdHJpYnV0ZWQtY29tcHV0aW5nLXBhcnQtMS0xYjM1YzNiODViNTMiPnRoZSBmaXJzdCBmb3VyPC9hPiBvZiB0aGUgZmFtb3VzIGVpZ2h0IGZhbGxhY2llcyBvZiBkaXN0cmlidXRlZCBjb21wdXRpbmcuIENvbnZlbmllbnRseSwgdGhvc2UgZm91ciBmYWxsYWNpZXMgYWxsIGNlbnRlcmVkIGFyb3VuZCB0aGUgbmV0d29yaywgYW5kIHRoZSBtaXNjb25jZXB0aW9ucyBhbmQgZmFsc2Vob29kcyB0aGF0IG1hbnkgZGV2ZWxvcGVycyBjYW4gZmFsbCBwcmV5IHRvIHdoZW4gdGhleSBhcmUgZGVhbGluZyB3aXRoIGEgZGlzdHJpYnV0ZWQgc3lzdGVtLiBCdXQgaW4gcGFydCB0d28gb2YgdGhpcyBzZXJpZXMsIHdl4oCZcmUgZ29pbmcgdG8gem9vbSBvdXQgYSBiaXQgYW5kIGxvb2sgYXQgdGhlIHJlbWFpbmluZyBmb3VyIGZhbGxhY2llcywgd2hpY2ggZmVlbCBmYXIgbW9yZSBhYnN0cmFjdCBpbiBuYXR1cmUsIGluIG15wqBvcGluaW9uLjwvcD48cD5XaGF04oCZcyBpbnRlcmVzdGluZyB0byBtZSBhYm91dCB0aGUgc2Vjb25kIGhhbGYgb2YgdGhlIGZhbGxhY2llcyBpcyB0aGUgZmFjdCB0aGF0IHRoZXkgYWxtb3N0IHNlZW0gb2J2aW91cyB0byB1cyBhdCBmaXJzdCBnbGFuY2UuIFlvdSBtYXkgZXZlbiByZWFkIHRoZW0gYW5kIHRoaW5rIHRvIHlvdXJzZWxmLCA8ZW0+4oCcaG93IGNvdWxkIGFueW9uZSBldmVyIGFzc3VtZSB0aGlzIGZhbGxhY3kgdG8gYmUgdHJ1ZT/igJ0uPC9lbT4gQnV0IGFzIHdl4oCZbGwgc29vbiBzZWUgYXMgd2UgZGlnIGludG8gZWFjaCBvZiB0aGVtLCB0aGVyZeKAmXMgbW9yZSB0byBlYWNoIGZhbGxhY3kgdGhhbiBtZWV0cyB0aGUgZXllLiBBbmQga2VlcGluZyB0aGVzZSBiaWctcGljdHVyZSB0cnV0aHMgaW4gY2hlY2sgYXMgd2UgZGVzaWduIGEgc2ltcGxlIHN5c3RlbSBvciBhIGNvbXBsZXggb25lIGlzIGhhcmRlciB0byBkbyB0aGFuIHdlIG1pZ2h0IHRoaW5rLiBTbyBsZXTigJlzIGRpdmUgcmlnaHQgaW4gYW5kIGZpbmlzaCB1cCBvdXIgZm9yYWdpbmcgZm9yIGZhbGxhY2llcyE8L3A+PGg0PlJlYXJyYW5naW5nIHRoZcKgbmV0d29yazwvaDQ+PHA+QXMgd2UgYWxyZWFkeSBrbm93LCBub2RlcyBpbiBhIGRpc3RyaWJ1dGVkIHN5c3RlbSBtdXN0IGNvbW11bmljYXRlIHZpYSBtZXNzYWdlcywgd2hpY2ggYXJlIHNlbnQgdGhyb3VnaCBhIG5ldHdvcmsuIEhvd2V2ZXIsIHRoYXQgbmV0d29yayBpcyBhIGNoYW5naW5nLCBmbHVjdHVhdGluZyBlbnRpdHkuIElmIGEgbm9kZSBpcyBhZGRlZCB0byBuZXR3b3JrLCBpdCBpbmhlcmVudGx5IHdpbGwgbG9vayBhIGxpdHRsZSBkaWZmZXJlbnQsIHJpZ2h0PyBXZSBoYXZlIGEgbmV3IGNoYXJhY3RlciBvbiB0aGUgc3RhZ2UsIGFuZCB0aGUgd2F5IHRoYXQgdGhlIG5ldHdvcmsgbG9va3Mgb3IgaG93IGl0IGlzIGFycmFuZ2VkIGRpZmZlcnMgZGVwZW5kaW5nIG9uIHdoaWNoIG5vZGVzIGFyZSBpbnZvbHZlZC48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpnZE9BRXdyYlhhOUgxWWo2YS1JQnJ3LmpwZWciIC8+PGZpZ2NhcHRpb24+VG9wb2xvZ3k6IGEgZGVmaW5pdGlvbiBvZiB3aGF0IGl0IG1lYW5zIGluIGHCoG5ldHdvcmsuPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPkFzIGl0IHR1cm5zIG91dCwgdGhlcmXigJlzIGEgdGVybSBmb3IgdGhpcyBjb25jZXB0LCBhbmQgaXTigJlzIGhpZ2ggdGltZSB0aGF0IHdlIGZhbWlsaWFyaXplZCBvdXJzZWx2ZXMgd2l0aCBpdDogPHN0cm9uZz48ZW0+dG9wb2xvZ3k8L2VtPjwvc3Ryb25nPi4gQSBuZXR3b3Jr4oCZcyB0b3BvbG9neSBpcyB0aGUgd2F5IHRoYXQgdGhlIGVsZW1lbnRzIGluIHRoZSBuZXR3b3JrIGFyZSBsYWlkIG91dCBvciBhcnJhbmdlZC48L3A+PGJsb2NrcXVvdGU+VG9wb2xvZ3kgaWxsdXN0cmF0ZXMgdGhlIHdheSB0aGF0IHRoZSBub2RlcyBpbiBvdXIgZGlzdHJpYnV0ZWQgc3lzdGVtIHJlbGF0ZSBvciBjb25uZWN0IHRvIG9uZSBhbm90aGVyLCBhbmQgbW9yZSBpbXBvcnRhbnRseSwgaG93IHRoZXkgY29tbXVuaWNhdGUgd2l0aCBvbmXCoGFub3RoZXIuPC9ibG9ja3F1b3RlPjxwPkZvciBleGFtcGxlLCB3ZSBjb3VsZCBoYXZlIGEgc2V0IG9mIG5vZGVzIGluIGEgbmV0d29yayB0aGF0IGFyZSBjb25uZWN0ZWQgYW5kIGNvbW11bmljYXRlIHdpdGggb25lIGFub3RoZXIgaW4gYSByaW5nIHNoYXBlLCBvciB3ZSBjb3VsZCBoYXZlIGFsbCB0aGUgbm9kZXMgY29ubmVjdGVkIGluIGEgbGluZS4gT3IsIGxpa2UgaW4gdGhlIGV4YW1wbGUgYWJvdmUsIHRoZSBub2RlcyBjb3VsZCBiZSBjb25uZWN0ZWQgaW4gc3RhciBzaGFwZSwgb3IgcGVyaGFwcyB0aGV5IGNvdWxkIGJlIGFycmFuZ2VkIGluIGEgdHJlZSBzaGFwZS4gQWxsIG9mIHRoZXNlIGRpZmZlcmVudCBleGFtcGxlcyBhcmUgdmFsaWQgd2F5cyB0byBsYXkgb3V0IHRoZSBub2RlcyBpbiBhIG5ldHdvcmssIGFuZCBlYWNoIG9mIHRoZW0gYXJlIGRpZmZlcmVudCB0b3BvbG9naWVzLjwvcD48cD5VbmRlcnN0YW5kaW5nIHRoZSBjb25jZXB0IG9mIGEgdG9wb2xvZ3kgaXMgZXNzZW50aWFsIHRvIHVzIGdyYXBwbGluZyB3aXRoIGZhbGxhY3kgZml2ZTogPHN0cm9uZz5Ub3BvbG9neSBkb2VzbuKAmXQgY2hhbmdlLjwvc3Ryb25nPiBSZW1lbWJlciB0aGF0IHRoaXMgaXMgYSA8ZW0+ZmFsbGFjeTwvZW0+LCB3aGljaCBtZWFucyB0aGF0IGl0IGlzIGEgbWlzY29uY2VwdGlvbjsgaW4gb3RoZXIgd29yZHMsIHRoaXMgc3RhdGVtZW50IGlzIHVudHJ1ZSwgYW5kIHRoZSB0b3BvbG9neSBvZiBhIG5ldHdvcmsgPGVtPmRvZXM8L2VtPiwgaW4gZmFjdCzCoGNoYW5nZS48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpXSnVUeTF6Nlkydl84eEE2b0ZHUXhRLmpwZWciIC8+PGZpZ2NhcHRpb24+RmFsbGFjeSAjNTogVG9wb2xvZ3kgZG9lc27igJl0IGNoYW5nZXMgKGl0wqBkb2VzISk8L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+QXQgdGhlIHN1cmZhY2UsIHRoaXMgc3RhdGVtZW50IG1pZ2h0IHNlZW0gb2J2aW91czsgYW55IHRpbWUgdGhhdCB3ZSBhZGQsIHJlcGxhY2UsIG9yIHJlbW92ZSBhIG5vZGUgZnJvbSBvdXIgbmV0d29yaywgdGhlIHdheSB0aGF0IHRoZSBlbGVtZW50cyAobm9kZXMpIG9mIHRoYXQgbmV0d29yayBhcmUgYXJyYW5nZWQgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byBvbmUgYW5vdGhlciBpcyBpbnZhcmlhYmx5IGdvaW5nIHRvIGhhdmUgdG8gYmUgZmxleGlibGUgYW5kIG1vdmUgYXJvdW5kIHRvIGJlIGFibGUgdG8gaGFuZGxlIHRoZXNlIGNoYW5nZXMuIEdpdmVuIHdoYXQgd2Uga25vdyBhYm91dCBob3cgbm9kZXMgY2FuIGJlIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvZmFudGFzdGljLWZhdWx0cy1hbmQtd2hhdC10by1jYWxsLXRoZW0tNTZkOTFhMWIxOThjIj5mbGF3ZWQ8L2E+IGFuZCBob3cgdGhleSA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL21vZGVzLW9mLWZhaWx1cmUtcGFydC0xLTY2ODc1MDRiZmVkNiI+d2lsbDwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9tb2Rlcy1vZi1mYWlsdXJlLXBhcnQtMi00ZDA1MDc5NGJlMmYiPmZhaWw8L2E+LCB3ZSBhbHNvIGNhbiBiZSBzdXJlIHRoYXQgdGhlIGZyZXF1ZW5jeSB3aXRoIHdoaWNoIGEgbmV3IG5vZGUgbWlnaHQgYmUgYWRkZWQgb3IgYW4gb2xkIG5vZGUgbWlnaHQgYmUgcmVtb3ZlZCBvciByZXBsYWNlZCBpcyBnb2luZyB0byBiZSBmYWlybHkgY29uc2lzdGVudCBhbmQgaGlnaC4gSW4gb3RoZXIgd29yZHMsIHRoZSBuZXR3b3Jr4oCZcyB0b3BvbG9neSBpcyBhbHdheXMgZ29pbmcgdG8gYmUgaW4gZmx1eCBhbmTCoGZsdWlkITwvcD48cD5TbyB3aHkgaXMgdGhpcyBvdGhlcndpc2Ugb2J2aW91cyBmYWxsYWN5IHNvbWV0aGluZyB3b3J0aCBub3RpbmcgaGVyZT8gV2VsbCwgd2hhdCBtYWtlcyB0aGlzIGZhbGxhY3kgdHJpY2tlciB0aGFuIGl0IHNlZW1zIGlzIHRoZSBmYWN0IHRoYXQgbW9zdCBvZiB1cyBqdXN0IGRvbuKAmXQgdGhpbmsgYWJvdXQgdGhlIG9idmlvdXNuZXNzIG9mIGl0IG9uIGEgZGF5LXRvLWRheSBiYXNpcy4gV2Ugb2Z0ZW4gZGVwZW5kIG9uIHRoZSBuZXR3b3JrIGJlaGF2aW5nIGEgY2VydGFpbiB3YXkgYW5kIGRvaW5nIGNlcnRhaW4gdGhpbmdzLiBTb21ldGltZXMsIHdlIGV4cGxpY2l0bHkgZGVwZW5kIG9uIHRoZSB0b3BvbG9neSBvZiB0aGUgbmV0d29yayBiZWluZyBhcnJhbmdlZCBpbiBhIGNlcnRhaW4gd2F5LiBGb3IgZXhhbXBsZSwgaWYgb3VyIHN5c3RlbSBzZW50IG1lc3NhZ2VzIGV2ZXJ5IDMwIHNlY29uZHMgdG8gYSBub2RlIGluIHRoZSBzeXN0ZW0sIGFuZCBleHBlY3RzIHRoYXQgbm9kZSB0byBleGlzdCBhdCBhIGNlcnRhaW4gbG9jYXRpb24gaW4gdGhlIG5ldHdvcmssIHdoYXQgaGFwcGVucyBpZiB0aGF0IG5vZGUgZGlzYXBwZWFycz8gT3Igd2hhdCBpZiBpdMKgbW92ZXM/PC9wPjxwPklmIHdlIGRlcGVuZCBvbiBvdXIgbmV0d29yayBhbHdheXMg4oCcbG9va2luZ+KAnSBhIGNlcnRhaW4gd2F5LCBhbmQgaWYgd2UgZXhwZWN0IGZvciBpdHMgbm9kZXMgdG8gYWx3YXlzIGJlIDxlbT5hcnJhbmdlZDwvZW0+IGEgY2VydGFpbiB3YXksIHdlIGZhbGwgaW50byB0aGUgdHJhcCBvZiB0aGlzIGZhbGxhY3kuIEFuZCB0aGlzIGNhbiBiZSBhbiBlYXN5IGFzc3VtcHRpb24gdG8gbWFrZSwgZXNwZWNpYWxseSBpZiB3ZSBkb27igJl0IHRha2UgdGhpcyBmYWxsYWN5IGludG8gdG8gYWNjb3VudCBpbiBvdXIgZGFpbHkgaW50ZXJhY3Rpb25zIGFzIGRlc2lnbmVycyBhbmQgbWFpbnRhaW5lcnMgb2YgYSBkaXN0cmlidXRlZCBzeXN0ZW0hIFNvLCBpdOKAmXMgdXAgdG8gdXMgdG8gY29uc2lkZXIgdGhlIHdheXMgdGhhdCB3ZSBtaWdodCBiZSByZWx5aW5n4oCK4oCU4oCKZXZlbiBpZiBpbmFkdmVydGVudGx54oCK4oCU4oCKb24gdGhlIHRvcG9sb2d5IG9mIG91ciBzeXN0ZW3igJlzwqBuZXR3b3JrLjwvcD48aDQ+U3lzdGVtIG1hbmFnZW1lbnQgcmVhbGl0aWVzPC9oND48cD5Bc3N1bXB0aW9ucyBhcmUgdmVyeSBlYXN5IHRoaW5ncyB0byBtYWtl4oCK4oCU4oCKd2UgbWFrZSB0aGVtIGFsbCB0aGUgdGltZSEgTm90IG9ubHkgY2FuIHdlIG1ha2UgYmFkIGFzc3VtcHRpb25zIGFib3V0IG91ciBzeXN0ZW0gYW5kIHdoYXQgaXQgbG9va3MgbGlrZSBhbmQgaG93IGl0IHdpbGwgYmVoYXZlIGluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcywgYnV0IHdlIGNhbiBhbHNvIG1ha2UgYmFkIGFzc3VtcHRpb25zIGFib3V0IHdobyB3aWxsIGJlIG1haW50YWluaW5nIGFuZCBkZWFsaW5nIHdpdGggdGhhdCBzeXN0ZW0gYXQgYW55IGdpdmVuwqB0aW1lLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKjQ2c2d0dzdoRktLSUY5RVVBejBxUEEuanBlZyIgLz48ZmlnY2FwdGlvbj5GYWxsYWN5ICM2OiBUaGVyZSBpcyBvbmUgYWRtaW5pc3RyYXRvciAodGhlcmUgYWxtb3N0IGNlcnRhaW5seSBhcmXCoG1vcmUhKS48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+VGhpcyBpcyBicmluZ3MgdXMgdG8gZmFsbGFjeSBzaXg6IDxzdHJvbmc+VGhlcmUgaXMgb25lIGFkbWluaXN0cmF0b3IuIDwvc3Ryb25nPkluIG5lYXJseSBhbGwgcmVhbC1saWZlIHNjZW5hcmlvcywgdGhlcmUgaXMgdXN1YWxseSA8ZW0+bW9yZTwvZW0+IHRoYW4gb25lIGFkbWluaXN0cmF0b3Igb2YgYSBkaXN0cmlidXRlZCBzeXN0ZW0uIFdpdGggdGhlIGV4Y2VwdGlvbiBvZiB2ZXJ5IHNtYWxsIGFwcGxpY2F0aW9uc+KAiuKAlOKAim9yIHBlcmhhcHMgYSBzeXN0ZW0gdGhhdCBpcyBhIHRveS9ob2JieSBwcm9qZWN0IHRoYXQgb25seSBoYXMgb25lIHBlcnNvbiBidWlsZGluZyBhbmQgbWFpbnRhaW5pbmcgaXTigIrigJTigIptb3N0IHN5c3RlbXMgZW5kIHVwIHdpdGggbWFueSBwZW9wbGUgaW52b2x2ZWQgaW4gdGhlIG1haW50ZW5hbmNlIG9mIHRoZcKgc3lzdGVtLjwvcD48cD5Bc3N1bWluZyB0aGF0IG9ubHkgb25lIGFkbWluaXN0cmF0b3IgZXhpc3RzIHRvIG1haW50YWluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtIGNhbiBoYXZlIGxvbmcgdGVybSBzaWRlLWVmZmVjdHMuIEZvciBleGFtcGxlLCBpbWFnaW5lIGEgc3lzdGVtIHdoZXJlIHRocmVlIGFkbWluaXN0cmF0b3JzIGFyZSBoZWxwaW5nIHRvIGtlZXAgdGhlIHN5c3RlbSB1cCBhbmQgYWZsb2F0LiBXaGF0IGhhcHBlbnMgaWYgb25lIG9mIHRob3NlIGFkbWluaXN0cmF0b3Jz4oCK4oCU4oCKd2hvIGp1c3Qgc28gaGFwcGVucyB0byBiZSBhbiBleHBlcnQgaW4gb25lIG9mIHRoZSBhc3BlY3Qgb2YgdGhlIHN5c3RlbeKAiuKAlOKAimxlYXZlcyB0aGUgdGVhbT8gT3IsIHdoYXQgaWYgb25lIG9mIHRoZSBwYXJ0cyBvZiB0aGUgc3lzdGVtIGlzIGFjdHVhbGx5IGEgZGVwZW5kZW5jeSBhbmQgcGFydCBvZiBhbiBleHRlcm5hbMKgc2VydmljZT88L3A+PHA+SW4gYm90aCBvZiB0aGVzZSBzaXR1YXRpb25zLCBvbmUgcGFydCBvZiB0aGUgc3lzdGVtIGlzIGxpa2VseSB1bmRlciB0aGUgY29udHJvbCBvZiBzb21lb25lIGVsc2UsIGFuZCB3ZSBoYXZlIHRvIGNvbnNpZGVyIHdoYXQgd2XigJlsbCBkbyBpZiB0aGF0IHNlY3Rpb24gb2YgdGhlIHN5c3RlbSBuZWVkcyBtYWludGVuYW5jZSwgb3Igd2hhdCB3aWxsIGhhcHBlbiAoYW5kIHdobyB3aWxsIGZpeCB0aGUgcHJvYmxlbSwgbm90IHRvIG1lbnRpb24gaG93IHF1aWNrbHkpIGlmIHRoYXQgc2VjdGlvbiBvZiB0aGUgc3lzdGVtIGdvZXPCoGRvd24hPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqVjRiOFZVRDJ5X2dxMnB1aFVHQlJCdy5qcGVnIiAvPjxmaWdjYXB0aW9uPlRoZSBtYW55IGFzcGVjdHMgb2YgbWFpbnRhaW4gYSBzeXN0ZW0gYXMgYW4gYWRtaW5pc3RyYXRvci48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+VGhlIHNpeHRoIGZhbGxhY3kgaXMgcmVhbGx5IGltcG9ydGFudCB0byBrZWVwIGluIG1pbmQgKGFuZCBpdOKAmXMgc28gZWFzeSB0byBmb3JnZXQgYWJvdXQgZW50aXJlbHkhKS4gV2UgYWxyZWFkeSBrbm93IHRoYXQgcmVndWxhciB0YXNrcyBsaWtlIG1haW50YWluaW5nIGFuZCB1cGdyYWRpbmcgYSBzeXN0ZW0gPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy93ZWVkaW5nLW91dC1kaXN0cmlidXRlZC1zeXN0ZW0tYnVncy0yOGEwMWUzN2Y3MGMiPmFyZSByZXNwb25zaWJsZTwvYT4gZm9yIGNhdXNpbmcgYSBncmVhdCBkZWFsIG9mIHNvZnR3YXJlIGJ1Z3MuIFNvIHdoZW4gYSBzeXN0ZW0gaGFzIG1hbnkgYWRtaW5pc3RyYXRvcnMsIGl04oCZcyBvdXIgcmVzcG9uc2liaWxpdHkgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHN5c3RlbSBjYW4gc3RpbGwgYmUgZWFzaWx5IHVwZ3JhZGVkIGFuZCBtYWludGFpbmVkIGFzIG1vcmUgYW5kIG1vcmUgYWRtaW5zIGFyZSBhZGRlZCB0byB0aGUgbWl4LiBTaW1pbGFybHksIGlmIG91ciBzeXN0ZW0gZGVwZW5kcyBvbiBhIHRoaXJkLXBhcnR5IHNlcnZpY2UsIHdlIG5lZWQgdG8gY29uc2lkZXIgd2hvIHRob3NlIGV4dGVybmFsIGFkbWluaXN0cmF0b3JzIGFyZSwgYW5kIGhvdyB3ZeKAmWxsIGhhbmRsZSBhbiBleHRlcm5hbCBkZXBlbmRlbmN5IHRoYXQgbmVlZHMgYXR0ZW50aW9uLjwvcD48cD5XZSBhbHNvIG5lZWQgdG8gYmUgc3VyZSB0byBoYXZlIGEgd2F5IHRvIGVtcG93ZXIgYWxsIGFkbWluaXN0cmF0b3JzIG9mIGEgc3lzdGVtIHRvIGRlYnVnIGFuZCBkaWFnbm9zZSBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIHN5c3RlbS4gVGhpcyBsYXN0IHBpZWNlIG9mIHRoZSBwdXp6bGUgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQsIGJlY2F1c2UgYWRtaW5pc3RyYXRvcnMgY2FuIG1ha2UgaW1wb3J0YW50IGRlY2lzaW9uc+KAiuKAlOKAimxpa2UgcmVzdGFydGluZyBhIG5vZGUsIGxpbWl0aW5nIGEgcXVhbnRpdHkgb2YgZGF0YSwgb3IgZGVjaWRpbmcgd2hhdCBwcm90b2NvbHMgdG8gdXNl4oCK4oCU4oCKYW5kIHRob3NlIGRlY2lzaW9ucyBhcmUgY3J1Y2lhbCB0byBtYW5hZ2luZyBhIHN5c3RlbSBhbmQga2VlcGluZyBpdCBydW5uaW5nIGNvcnJlY3RseS48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpkUTgxRUpEeWZWemhWOXhjYlplVmJBLmpwZWciIC8+PGZpZ2NhcHRpb24+RmFsbGFjeSAjNzogVHJhbnNwb3J0IGNvc3QgaXMgemVybyAoaXQgaXPCoG5vdCEpPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPkFub3RoZXIg4oCcZWFzeSB0byBkaXNtaXNz4oCdIGFzc3VtcHRpb24gaXMgdGhlIHJlYWxpdHkgb2YgdGhlIGNvc3Qgb2YgcnVubmluZyBhIHN5c3RlbS4gVGhpcyBsZWFkcyB1cyByaWdodCB0byBmYWxsYWN5IHNldmVuOiA8c3Ryb25nPlRyYW5zcG9ydCBjb3N0IGlzIHplcm8uPC9zdHJvbmc+IEFzIHdlIGxlYXJuZWQgd2l0aCA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL2ZvcmFnaW5nLWZvci10aGUtZmFsbGFjaWVzLW9mLWRpc3RyaWJ1dGVkLWNvbXB1dGluZy1wYXJ0LTEtMWIzNWMzYjg1YjUzIj5mYWxsYWN5IHR3bzwvYT4sIGl0IHRha2VzIHRpbWUgZm9yIGRhdGEgdG8gdHJhdmVsIGZyb20gb25lIHBsYWNlIHRvIGFub3RoZXI7IGFub3RoZXIgbmFtZSBmb3IgdGhpcyBhbW91bnQgb2YgdGltZSBpcyA8ZW0+bGF0ZW5jeTwvZW0+LiBTaW1pbGFybHksIHRoZSBjb3N0IG9mIHNlbmRpbmcgZGF0YSBmcm9tIG9uZSBwbGFjZSB0byBhbm90aGVyIGFsc28gaGFzIG90aGVyIGNvc3RzLMKgdG9vITwvcD48cD5Gb3IgZXhhbXBsZSwgaXQgdGFrZXMgPHN0cm9uZz48ZW0+cmVzb3VyY2VzPC9lbT48L3N0cm9uZz4gdG8gYmUgYWJsZSB0byB0cmFuc3BvcnQgYW55IGRhdGEgZnJvbSBvbmUgcGxhY2UgdG8gYW5vdGhlciB3aXRoaW4gYSBkaXN0cmlidXRlZCBzeXN0ZW0uIFRoZXNlIHJlc291cmNlcyBoYXZlIGEgcHJpY2UgdGFnIGF0dGFjaGVkIHRvIHRoZW0sIGFuZCB0aGVzZSByZXNvdXJjZXMgY29zdMKgbW9uZXkuPC9wPjxwPkFkZGl0aW9uYWxseSwgc2VuZGluZyBkYXRhIGZyb20gb25lIHBsYWNlIHRvIGFub3RoZXIgYWxzbyB0YWtlcyBzb21lIGVmZm9ydCBhbmQgdGltZSB0byB0dXJuIHRoZSBkYXRhIGludG8gYSBtYWNoaW5lLXJlYWRhYmxlIGNvZGUgKGFuZCBzdWJzZXF1ZW50bHksIGJhY2sgb3V0IG9mIG1hY2hpbmUtcmVhZGFibGUgY29kZSBpbnRvIGRhdGEgYWdhaW4pLiBUaGVzZSBwcm9jZXNzZXMgYXJlIGtub3duIGFzIDxzdHJvbmc+PGVtPnNlcmlhbGl6YXRpb248L2VtPjwvc3Ryb25nPiBhbmQgPHN0cm9uZz48ZW0+ZGVzZXJpYWxpemF0aW9uPC9lbT48L3N0cm9uZz4sIGFuZCBhbGwgZGF0YSB0aGF0IGlzIHBhc3NlZCBhcm91bmQgaW4gdGhlIHN5c3RlbSBuZWVkcyB0byBiZSBzZXJpYWxpemVkIGFuZCBkZXNlcmlhbGl6ZWQgZnJvbSBhIGJ5dGUgc3RyZWFtIGludG8gc29tZSBvYmplY3QgaW4gbWVtb3J5IHRoYXQgaXMgdXNlZCB0byByZXByZXNlbnQgdGhhdCBkYXRhLiBNYW55IGRldmVsb3BlcnMgYXJlIGZhbWlsaWFyIHdpdGggc2VyaWFsaXphdGlvbiBhbmQgZGVzZXJpYWxpemF0aW9uIGFuZCB1c2UgaXQgZXZlcnkgZGF5OyBob3dldmVyLCBub3QgYWxsIG9mIHVzIGFyZSBuZWNlc3NhcmlseSBjb25zaWRlcmluZyB0aGUgdGltZSBhbmQgZWZmb3J0IHRoYXQgdGhlc2UgdHdvIHByb2Nlc3NlcyB0YWtlIHdoZW5ldmVyIHRoZXnCoGhhcHBlbiE8L3A+PHA+VGhlIGZhY3QgdGhhdCBpdCBjb3N0cyB0aW1lLCBlZmZvcnQsIGFuZCByZXNvdXJjZXMgcmVtaW5kIHVzIHRoYXQgaXQgaXMgbm90IGZyZWUgdG8gc2VuZCBkYXRhIHRocm91Z2ggb3VyIHN5c3RlbSBhbmQgdHJhbnNwb3J0IGluZm9ybWF0aW9uIGJhY2sgYW5kIGZvcnRoLiBIb3dldmVyLCBpdCBjYW4gYmUgZWFzeSB0byBmb3JnZXQgdGhpcyB1bnRpbCB3ZSBnZXQgYW4gdW5leHBlY3RlZCBiaWxsIGZyb20gQVdTIG9yIEhlcm9rdSwgYXQgd2hpY2ggcG9pbnQgd2Ugc3VkZGVubHkgcmVtZW1iZXIgdGhpcyByZWFsaXR5LiBLZWVwaW5nIHRoaXMgZmFsbGFjeSBpbiBtaW5kIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGFzIG91ciBzeXN0ZW0gc2NhbGVzIGFuZCBvdXIgdHJhbnNwb3J0IGNvc3RzIHN0YXJ0IHRvIGNyZWVwIHVwIG9uwqB1cy48L3A+PGg0PlN0YW5kYXJkaXphdGlvbiBvZiBhwqBzeXN0ZW08L2g0PjxwPlRoZSBmaW5hbCBmYWxsYWN5IGlzIG9uZSB0aGF0IG1hbnkgb2YgdXMgbWF5IG5vdCBoYXZlIGV2ZXIgdGhvdWdodCBhYm91dCwgcGFydGljdWxhcmx5IGlmIHdlIGhhdmUgYmVlbiB3b3JraW5nIHdpdGggZnJhbWV3b3JrcyBhbmQgc3lzdGVtcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGFyb3VuZCBmb3Igc29tZSB0aW1lLiBUaGUgZWlnaHRoIGZhbGxhY3kgYnJpbmdzIHVzIGJhY2sgdG8gb3VyIGdvb2Qgb2xkIGZyaWVuZCwgdGhlIG5ldHdvcms6IDxzdHJvbmc+VGhlIG5ldHdvcmsgaXMgbm90IGhvbW9nZW5lb3VzLjwvc3Ryb25nPiBNYW55IG9mIHVzIHByb2JhYmx5IGtub3cgdGhpcyBmYWxsYWN5IHRvIGluaGVyZW50bHkgYmUgZmFsc2U6IHRoZSBub2RlcyBpbiBhIG5ldHdvcmsgY2FuIGJlIGFueXRoaW5nLCBzbyB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCB0aGV5IHdpbGwgYWxsIGJlIHRoZcKgc2FtZSE8L3A+PHA+SW4gZmFjdCwgbW9zdCBkaXN0cmlidXRlZCBzeXN0ZW1zIG1heSBpbnRlZ3JhdGUgd2l0aCBkaWZmZXJlbnQga2luZHMgb2YgZGV2aWNlcywgcGVyaGFwcyBkaWZmZXJlbnQgcHJvdG9jb2xzLCBhbmQgYWxtb3N0IGNlcnRhaW5seSB3aWxsIGFkYXB0IHRvIHdvcmsgd2l0aCB2YXJpb3VzIG9wZXJhdGluZyBzeXN0ZW1zIGFuZCBicm93c2Vycy4gQW5kIGJlY2F1c2UgdGhlIG5vZGVzIG9mIG91ciBuZXR3b3JrKHMpIGFyZW7igJl0IGdvaW5nIHRvIGFsbCBsb29rIHRoZSBzYW1lLCBpdOKAmXMgbm90IGFsd2F5cyBzYWZlIHRvIGFzc3VtZSB0aGF0IHRoZXkgd2lsbCBhbGwgYmUgY29uZmlndXJlZCB0aGUgc2FtZSzCoGVpdGhlci48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpCdGNYTVF2V24zZS1wY3Z3SVRWbDNBLmpwZWciIC8+PGZpZ2NhcHRpb24+RmFsbGFjeSAjODogVGhlIG5ldHdvcmsgaXMgaG9tb2dlbmVvdXMgKGl0IGlzbuKAmXQgaWYgd2UgZG9u4oCZdCB1c2Ugc3RhbmRhcmRzKS48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+SW5kZWVkLCBtb3N0IG5ldHdvcmtzIGFyZSBoZXRlcm9nZW5vdXMsIGJ1dCB0aGUgbm9kZXMgaW4gYSBzeXN0ZW3igJlzIG5ldHdvcmsgc3RpbGwgbmVlZCB0byB3b3JrIHRvZ2V0aGVyIGFuZCBiZSBpbnRlcm9wZXJhYmxlLiBDb252ZW5pZW50bHksIGhvd2V2ZXIsIG1vc3Qgb2YgdXMgZG9u4oCZdCBuZWVkIHRvIGZlYXIgdGhpcyBmYWxsYWN5OyB0aGlzIGlzIHdoZXJlIDxzdHJvbmc+PGVtPnN0YW5kYXJkaXphdGlvbjwvZW0+PC9zdHJvbmc+IGNvbWVzIGluIHRvIHNhdmUgdGhlIGRheSEgTW9zdCBzeXN0ZW1zIHRoZXNlIGRheXMgYXJlIGFyY2hpdGVjdGVkIHRvIHJlbHkgdXBvbiBhbmQgdXRpbGl6ZSBzdGFuZGFyZGl6ZWQgZm9ybWF0cyB0aGF0IGFyZSBjcmVhdGVkIHRvIGNyZWF0ZSBhIHNoYXJlZCBsYW5ndWFnZSBhbW9uZ3N0IGRpZmZlcmVudCBlbGVtZW50cyBpbiBhIHN5c3RlbSwgZXZlbiBpZiB0aGV5IHBlcmhhcHMgYXJlbuKAmXQgYWxsIGNvbmZpZ3VyZWQgdGhlwqBzYW1lLjwvcD48cD5NYW55IG9mIHVzIHVzZSB0aGVzZSBzdGFuZGFyZHPigIrigJTigIpsaWtlIEhUVFAgcHJvdG9jb2xzLCBSRVNUIEFQSXMsIGFuZCBKU09OLWZvcm1hdHRlZCBkYXRh4oCK4oCU4oCKb24gYSBkYWlseSBiYXNpcywgYW5kIHRoZXNlIHN0YW5kYXJkcyBtYWtlIGl0IG11Y2ggZWFzaWVyIHRvIGRlYWwgd2l0aCBhIGhldGVyb2dlbmVvdXMgbmV0d29yay4gQnV0IGl04oCZcyBzdGlsbCBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgdGhpcyBmYWxsYWN5IGluIHRoZSBvZmYgY2hhbmNlIHRoYXQgb25lIGRheSwgd2UgZmluZCBvdXJzZWx2ZXMgYnVpbGRpbmcgYSBwYXJ0IG9mIGEgc3lzdGVtIHRoYXQgaXNu4oCZdCB1c2luZyBhIHN0YW5kYXJkaXplZCBmb3JtYXQhIFJvbGxpbmcgYSBwcm9wcmlldGFyeSBwcm90b2NvbCBvZiBvbmXigJlzIG93biBtZWFucyB0aGF0LCBkb3duIHRoZSByb2FkLCB0aGVyZSB3aWxsIG1vc3QgbGlrZWx5IGJlIGFub3RoZXIgbm9kZSB0aGF0IHdpbGwgYmUgaW5jb21wYXRpYmxlIHdpdGggb3VyIG5vbi1zdGFuZGFyZCBmb3JtYXQuPC9wPjxwPkluIGZhY3QsIEkgdGhpbmsgaXTigJlzIHdvcnRoIHRoaW5raW5nIGFib3V0IGFsbCBlaWdodCBmYWxsYWNpZXMsIGV2ZW4gaWYgd2UgYXJlIHdvcmtpbmcgd2l0aCBzeXN0ZW1zIHRoYXQgaGF2ZSBiZWVuIGJ1aWx0IHNvIHRoYXQgd2UgZG9u4oCZdCBuZWVkIHRvIGNvbnNpZGVyIHRoZXNlIGlzc3Vlcy4gSnVzdCBiZWNhdXNlIHdlIGRvbuKAmXQgcnVuIGludG8gdGhlc2UgZmFsbGFjaWVzIG9uIGEgZGFpbHkgYmFzaXMgZG9lc27igJl0IG1lYW4gdGhhdCB0aGV54oCZcmUgbm90IHBvd2VyZnVsISBJbiBmYWN0LCB0aGV5IGNhbiBzbmVhayB1cCBvbiB1cyBqdXN0IHdoZW4gd2XigJlyZSBub3QgbG9va2luZywgYW5kIHByb3ZlIHRoYXQgZXZlbiB0aGUgbW9zdCBleHBlcmllbmNlZCBkaXN0cmlidXRlZCBzeXN0ZW1zIGVuZ2luZWVycyBjYW4gbWFrZSBiYWQgYXNzdW1wdGlvbnMuPC9wPjxoND5SZXNvdXJjZXM8L2g0PjxwPlRoZSBmYWxsYWNpZXMgb2YgZGlzdHJpYnV0ZWQgY29tcHV0aW5nIGhhdmUgYmVlbiBmYWlybHkgd2VsbC13cml0dGVuIGFib3V0LCBhbmQgeW91IGNhbiBmaW5kIHNvbWUgZ29vZCByZXNvdXJjZXMgb24gZGlmZmVyZW50IGludGVycHJldGF0aW9ucyBvZiB0aGVtLCBmb3IgZGlmZmVyZW50IHRlY2hub2xvZ2llcy4gSWYgeW914oCZcmUgY3VyaW91cyB0byBsZWFybiBtb3JlLCBjaGVjayBvdXQgdGhlIHJlc291cmNlcyBiZWxvdyE8L3A+PG9sPjxsaT48YSBocmVmPSJodHRwczovL3d3dy5yZ29hcmNoaXRlY3RzLmNvbS9GaWxlcy9mYWxsYWNpZXMucGRmP3NvdXJjZT1wb3N0X3BhZ2UtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iPkZhbGxhY2llcyBvZiBEaXN0cmlidXRlZCBDb21wdXRpbmcgRXhwbGFpbmVkPC9hPiwgQXJub24gUm90ZW0tR2FsLU96PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuc2ltcGxlb3JpZW50ZWRhcmNoaXRlY3R1cmUuY29tLzgtZmFsbGFjaWVzLW9mLWRpc3RyaWJ1dGVkLXN5c3RlbXMvP3NvdXJjZT1wb3N0X3BhZ2UtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iPlVuZGVyc3RhbmRpbmcgdGhlIDggZmFsbGFjaWVzIG9mIERpc3RyaWJ1dGVkIFN5c3RlbXM8L2E+LCBWaWN0b3LCoENoaXJjdTwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vbXVsdGltZWRpYS50ZWxvcy5jb20vYmxvZy9kZWJ1bmtpbmctdGhlLTgtZmFsbGFjaWVzLW9mLWRpc3RyaWJ1dGVkLXN5c3RlbXMtcGFydC0yLz9zb3VyY2U9cG9zdF9wYWdlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIj5EZWJ1bmtpbmcgdGhlIDggRmFsbGFjaWVzIG9mIERpc3RyaWJ1dGVkIFN5c3RlbXM8L2E+LCBSYW1pbMKgQWxmb25zbzwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3BsYXlsaXN0P2xpc3Q9UEwxRFpxZVZ3UkxuRDNFanljaVlBTzgyZFQ5T3dpcThJNSZhbXA7c291cmNlPXBvc3RfcGFnZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSI+RmFsbGFjaWVzIG9mIERpc3RyaWJ1dGVkIFN5c3RlbXM8L2E+LCBVZGnCoERhaGFuPC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9ibG9nLm5ld3JlbGljLmNvbS9lbmdpbmVlcmluZy90aGUtZmFsbGFjaWVzLW9mLWRpc3RyaWJ1dGVkLWNvbXB1dGluZy1yZWJvcm4tdGhlLWNsb3VkLWVyYT9zb3VyY2U9cG9zdF9wYWdlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIj5UaGUgRmFsbGFjaWVzIG9mIERpc3RyaWJ1dGVkIENvbXB1dGluZyBSZWJvcm46IFRoZSBDbG91ZCBFcmE8L2E+LCBCcmlhbsKgRG9sbDwvbGk+PC9vbD48aW1nIHNyYz0iaHR0cHM6Ly9tZWRpdW0uY29tL18vc3RhdD9ldmVudD1wb3N0LmNsaWVudFZpZXdlZCZyZWZlcnJlclNvdXJjZT1mdWxsX3JzcyZwb3N0SWQ9YjhmZjI5YmVlZDU2IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBhbHQ9IiI+PGhyPjxwPjxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvZm9yYWdpbmctZm9yLXRoZS1mYWxsYWNpZXMtb2YtZGlzdHJpYnV0ZWQtY29tcHV0aW5nLXBhcnQtMi1iOGZmMjliZWVkNTYiPkZvcmFnaW5nIGZvciB0aGUgRmFsbGFjaWVzIG9mIERpc3RyaWJ1dGVkIENvbXB1dGluZyAoUGFydCAyKTwvYT4gd2FzIG9yaWdpbmFsbHkgcHVibGlzaGVkIGluIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMiPmJhc2VkczwvYT4gb24gTWVkaXVtLCB3aGVyZSBwZW9wbGUgYXJlIGNvbnRpbnVpbmcgdGhlIGNvbnZlcnNhdGlvbiBieSBoaWdobGlnaHRpbmcgYW5kIHJlc3BvbmRpbmcgdG8gdGhpcyBzdG9yeS48L3A+XV0+PC9jb250ZW50OmVuY29kZWQ+CiAgICAgICAgPC9pdGVtPgogICAgICAgIDxpdGVtPgogICAgICAgICAgICA8dGl0bGU+PCFbQ0RBVEFbRm9yYWdpbmcgZm9yIHRoZSBGYWxsYWNpZXMgb2YgRGlzdHJpYnV0ZWQgQ29tcHV0aW5nIChQYXJ0IDEpXV0+PC90aXRsZT4KICAgICAgICAgICAgPGxpbms+aHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9mb3JhZ2luZy1mb3ItdGhlLWZhbGxhY2llcy1vZi1kaXN0cmlidXRlZC1jb21wdXRpbmctcGFydC0xLTFiMzVjM2I4NWI1Mz9zb3VyY2U9cnNzLThmNTU5OTNjOTczZS0tLS0tLTI8L2xpbms+CiAgICAgICAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0cHM6Ly9tZWRpdW0uY29tL3AvMWIzNWMzYjg1YjUzPC9ndWlkPgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbZGlzdHJpYnV0ZWQtc3lzdGVtc11dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtzb2Z0d2FyZS1kZXZlbG9wbWVudF1dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtjb21wdXRlci1zY2llbmNlXV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW2NvZGVdXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbcHJvZ3JhbW1pbmddXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8ZGM6Y3JlYXRvcj48IVtDREFUQVtWYWlkZWhpIEpvc2hpXV0+PC9kYzpjcmVhdG9yPgogICAgICAgICAgICA8cHViRGF0ZT5GcmksIDIxIEp1biAyMDE5IDA0OjE1OjI1IEdNVDwvcHViRGF0ZT4KICAgICAgICAgICAgPGF0b206dXBkYXRlZD4yMDE5LTA2LTIxVDA0OjE1OjI1LjcyM1o8L2F0b206dXBkYXRlZD4KICAgICAgICAgICAgPGNvbnRlbnQ6ZW5jb2RlZD48IVtDREFUQVs8ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKjRUYzYxZzhmN3RLd1cyS2thNkVPcWcuanBlZyIgLz48ZmlnY2FwdGlvbj5Gb3JhZ2luZyBmb3IgdGhlIGZhbGxhY2llcyBvZiBkaXN0cmlidXRlZCBjb21wdXRpbmchPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPlNvIG11Y2ggb2YgY29tcHV0aW5nIGlzIGJhc2VkIG9uIGFzc3VtcHRpb25zLiBXZSBkZXNpZ24gc3lzdGVtcyBvcGVyYXRpbmcgb24gYSBzZXQgb2YgYXNzdW1wdGlvbnMuIFdlIHdyaXRlIHByb2dyYW1zIGFuZCBhcHBsaWNhdGlvbnMgYXNzdW1pbmcgY2VydGFpbiBwYXJ0cyBvZiB0aGVpciBzeXN0ZW1zIHdpbGwgd29yayBhIGNlcnRhaW4gd2F5LiBBbmQgd2UgYWxzbyBhc3N1bWUgdGhhdCBzb21lIHRoaW5ncyBjYW4gcG90ZW50aWFsbHkgZ28gd3JvbmcsIGFuZCB3ZSAoaG9wZWZ1bGx5KSBhdHRlbXB0IHRvIGFjY291bnQgZm9ywqB0aGVtLjwvcD48cD5PbmUgYmlnIGlzc3VlIHdpdGggYnVpbGRpbmcgY29tcHV0ZXIteSB0aGluZ3MgaXMgdGhhdCwgZXZlbiB0aG91Z2ggd2XigJlyZSBvZnRlbiBkZWFsaW5nIHdpdGggY29tcGxleCBzeXN0ZW1zLCB3ZSBhcmVu4oCZdCBhbHdheXMgY2FwYWJsZSBvZiByZWFzb25pbmcgYWJvdXQgb24gYSBiaWctcGljdHVyZSBsZXZlbC4gRGlzdHJpYnV0ZWQgc3lzdGVtcyBhcmUgY2VydGFpbmx5IGEgZ3JlYXQgZXhhbXBsZSBvZiB0aGlzICh5b3Uga25ldyB3aGVyZSBJIHdhcyBnb2luZyB3aXRoIHRoaXMsIGRpZG7igJl0IHlvdT8pLiBFdmVuIGEg4oCcc2ltcGxl4oCdIGRpc3RyaWJ1dGVkIHN5c3RlbSBpc27igJl0IHNvIHNpbXBsZSwgYmVjYXVzZSBieSBkZWZpbml0aW9uIGl0IGludm9sdmVzIG1vcmUgdGhhbiBvbmUgbm9kZSwgYW5kIHRoZSBub2RlcyBpbiB0aGUgc3lzdGVtIGhhdmUgdG8gY29tbXVuaWNhdGUgYW5kIHRhbGsgdG8gb25lIGFub3RoZXIgdGhyb3VnaCBhIG5ldHdvcmsuIEV2ZW4gaW4gYSBzbWFsbCBkaXN0cmlidXRlZCBzeXN0ZW1zIHdpdGgganVzdCB0d28gbm9kZXMsIHdlIG1ha2UgY2VydGFpbiBhc3N1bXB0aW9ucyBhYm91dCBob3cgdGhhdCBzeXN0ZW0gaXMgZ29pbmcgdG/CoHdvcmsuPC9wPjxwPkhlcmXigJlzIHRoZSB0aGluZyBhYm91dCBtYWtpbmcgYXNzdW1wdGlvbnMsIHRob3VnaDogdGhleSBjYW4gYmUgd3JvbmchIEFzIGl0IHR1cm5zIG91dCwgdGhlcmUgYXJlIHNvbWUgY29tbW9uLCBpbmNvcnJlY3QgYXNzdW1wdGlvbnMgdGhhdCB3ZSBvZnRlbiBtYWtlIGFib3V0IGRpc3RyaWJ1dGVkIGNvbXB1dGluZy4gSW4gZmFjdCB0aGV5IGFyZSBzbyB1YmlxdWl0b3VzIHRoYXQgdGhleSBoYXZlIGEgbmFtZSEgSeKAmW0gdGFsa2luZywgb2YgY291cnNlLCBhYm91dCB0aGUgZWlnaHQgZmFsbGFjaWVzIG9mIGRpc3RyaWJ1dGVkIGNvbXB1dGluZy4gQW5kIHdoYXQgYXJlIHRoZXk/IFdlbGwsIGl04oCZcyB0aW1lIHRvIGZpbmTCoG91dC48L3A+PGg0PkFzc3VtcHRpb25zIGdvbmXCoHdyb25nPC9oND48cD5UaGUgZWlnaHQgZmFsbGFjaWVzIGFzIHdlIGtub3cgdGhlbSB0b2RheSBhY3R1YWxseSBzdGFydGVkIG9mZiBhcyBqdXN0IGZvdXIgZmFsbGFjaWVzLCB3aGljaCBhcmUgdGhlIG9uZXMgdGhhdCB3ZeKAmWxsIGNvdmVyIGluIHRoaXMgcG9zdC4gVGhlIGZpcnN0IGZvdXIgZmFsbGFjaWVzIHdlcmUgY3JlYXRlZCBpbiB0aGUgZWFybHkgOTDigJlzIChzb21ldGltZSBhZnRlciAxOTkxKSBieSB0d28gU3VuIE1pY3Jvc3lzdGVtcyBlbmdpbmVlcnMsIEJpbGwgSm95IGFuZCBEYXZlwqBMeW9uLjwvcD48cD5KYW1lcyBHb3NsaW5nLCB3aG8gd2FzIGEgZmVsbG93IGF0IFN1biBNaWNyb3N5c3RlbXMgYXQgdGhlIHRpbWXigIrigJTigIphbmQgd291bGQgbGF0ZXIgZ28gb24gdG8gY3JlYXRlIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdl4oCK4oCU4oCKY2xhc3NpZmllZCB0aGVzZSBmaXJzdCBmb3VyIGZhbGxhY2llcyBhcyDigJxUaGUgRmFsbGFjaWVzIG9mIE5ldHdvcmtlZCBDb21wdXRpbmfigJ0uIEEgYml0IGxhdGVyIHRoYXQgZGVjYWRlLCBQZXRlciBEZXV0c2NoLCBhbm90aGVyIEZlbGxvdyBhdCBTdW4sIGFkZGVkIGZhbGxhY2llcyBmaXZlLCBzaXgsIGFuZCBzZXZlbi4gSW4gMTk5NywgR29zbGluZyBhZGRlZCB0aGUgZWlnaHRoIGFuZCBmaW5hbCBmYWxsYWN5LiBTbyBtdWNoIG9mIHRoZSB3b3JrIGRvbmUgdG8gY29kaWZ5IHRoaXMgbGlzdCB3YXMgaW5zcGlyZWQgYnkgd29yayB0aGF0IHdhcyBhY3R1YWxseSBoYXBwZW5pbmcgYXQgU3VuIE1pY3Jvc3lzdGVtcyBhdCB0aGUgdGltZS4gQW5kIHdoaWxlIERldXRzY2ggaXMgdGhlIG9uZSB3aG8gaXMgb2Z0ZW4gY3JlZGl0ZWQgd2l0aCBoYXZpbmcg4oCcY3JlYXRlZOKAnSB0aGUgZWlnaHQgZmFsbGFjaWVzLCBjbGVhcmx5IGl0IHdhcyBhIGNvbWJpbmVkLCBncm91cCBlZmZvcnQgKGFzIGlzIHNvIG9mdGVuIHRoZSBjYXNlIGluIGNvbXB1dGluZyEpLjwvcD48cD5BbHJpZ2h0LCBzbyBub3cgdGhhdCB3ZeKAmXZlIGdvdCBzb21lIGhpc3RvcnkgdW5kZXIgb3VyIGJlbHQsIGxldOKAmXMgZ2V0IGludG8gc29tZSBvZiB0aGUgcHJhY3RpY2FsIGFzcGVjdHMgb2YgdGhpcyBwcm9ibGVtLiBMZXTigJlzIGZpcnN0IHN0YXJ0IHdpdGggdW5kZXJzdGFuZGluZyB3aGF0IHdl4oCZcmUgdGFsa2luZyBhYm91dCB3aGVuIHdlIHNheSBhIOKAnGZhbGxhY3nigJ0gb2YgZGlzdHJpYnV0ZWQgY29tcHV0aW5nLiBXaGF0IGRvZXMgdGhhdCBtZWFuLMKgZXhhY3RseT88L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpUR1dYNlV1TEZxV21zZDhxUXB5azBnLmpwZWciIC8+PGZpZ2NhcHRpb24+V2hhdCBleGFjdGx5IElTIGEgZmFsbGFjeSB3aGVuIGl0IGNvbWVzIHRvIGRpc3RyaWJ1dGVkIGNvbXB1dGluZz88L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+V2VsbCwgYSA8c3Ryb25nPjxlbT5mYWxsYWN5PC9lbT48L3N0cm9uZz4gaXMgYSBraW5kIG9mIGFzc3VtZWQgZmFjdCBvciBiZWxpZWY7IGhvd2V2ZXIsIGV2ZW4gdGhvdWdoIGl0IGlzIGFzc3VtZWQgdG8gYmUgdHJ1ZSwgdGhhdCBpcyB1c3VhbGx5IG5vdCB0aGUgY2FzZSBpbiBwcmFjdGljZS4gQSBmYWxsYWN5IGlzIGp1c3QgYSBiZWxpZWYgdGhhdCBpcyBhIG1pc2NvbmNlcHRpb24uIEJ1dCB3aGF0IGRvZXMgdGhhdCBtZWFuIGluIHRoZSBjb250ZXh0IG9mIGNvbXB1dGluZz8gV2VsbCwgYSBmYWxsYWN5IG1hZGUgYWJvdXQgYSBkaXN0cmlidXRlZCBzeXN0ZW0gaXMgYW4gYXNzdW1wdGlvbiBhYm91dCB0aGUgc3lzdGVtIG1hZGUgYnkgdGhlIGRldmVsb3BlcnMsIHdoaWNoIG9mdGVuIGVuZHMgdXAgYmVpbmcgaW5hY2N1cmF0ZSBhbmQgd3JvbmcgaW4gdGhlIGxvbmcgcnVuLiBJbiBvdGhlciB3b3JkcywgdGhleSBhcmUgYmFkIGFzc3VtcHRpb25zIHRvwqBtYWtlLjwvcD48YmxvY2txdW90ZT5XZSBjYW4gdGhpbmsgb2YgdGhlIGVpZ2h0IGZhbGxhY2llcyBhcyBlaWdodCBjb21tb24gbWlzY29uY2VwdGlvbnMgdGhhdCBkZXZlbG9wZXJzIG9mIGRpc3RyaWJ1dGVkIHN5c3RlbXMgb2Z0ZW4gZmFsbCBwcmV5IHRvLCB3aGljaCB3ZSB3YW50IHRvwqBhdm9pZC48L2Jsb2NrcXVvdGU+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSoyaXhnMy15Y3VrT3ZSUUhVazJmUjZ3LmpwZWciIC8+PGZpZ2NhcHRpb24+VGhlIDggZmFsbGFjaWVzIG9mIGRpc3RyaWJ1dGVkIGNvbXB1dGluZzwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5TbywgbGV04oCZcyB0YWtlIGEgbG9vayBhdCB0aGVzZSBlaWdodCBmYWxsYWNpZXMsIHNoYWxswqB3ZT88L3A+PHA+VGhlIGVpZ2h0IGZhbGxhY2llcyBvZiBkaXN0cmlidXRlZCBjb21wdXRpbmcgYXJlIGFzwqBmb2xsb3dzOjwvcD48b2w+PGxpPlRoZSBuZXR3b3JrIGlzIHJlbGlhYmxlLjwvbGk+PGxpPkxhdGVuY3kgaXPCoHplcm8uPC9saT48bGk+QmFuZHdpZHRoIGlzIGluZmluaXRlLjwvbGk+PGxpPlRoZSBuZXR3b3JrIGlzwqBzZWN1cmUuPC9saT48bGk+VG9wb2xvZ3kgZG9lc27igJl0wqBjaGFuZ2UuPC9saT48bGk+VGhlcmUgaXMgb25lIGFkbWluaXN0cmF0b3IuPC9saT48bGk+VHJhbnNwb3J0IGNvc3QgaXPCoHplcm8uPC9saT48bGk+VGhlIG5ldHdvcmsgaXMgaG9tb2dlbm91cy48L2xpPjwvb2w+PHA+SW4gdGhpcyBwb3N0LCB3ZeKAmWxsIGZvY3VzIGp1c3Qgb24gdGhlIGZpcnN0IGZvdXIgZmFsbGFjaWVzLCB3aGljaCB3ZSBub3cga25vdyB3ZXJlIHRoZSBvcmlnaW5hbCDigJxGYWxsYWNpZXMgb2YgTmV0d29ya2VkIENvbXB1dGluZ+KAnSEgQ29udmVuaWVudGx5LCB0aGVzZSBmaXJzdCBmb3VyIGZhbGxhY2llcyBhcmUgYWN0dWFsbHkgYWxsIGFuY2hvcmVkIGFyb3VuZCBvbmUgY2VudHJhbCwga2V5IGNoYXJhY3RlcjogdGhlIG5ldHdvcmsuIEFuZCwgYXMgd2XigJlyZSBhYm91dCB0byBzZWUsIHRoZSBuZXR3b3JrIGlzIGEgdHJpY2t5IGxpdHRsZSBmZWxsb3cuIE9mIGNvdXJzZSwgaXTigJlzIGtpbmQgb2YgZGlmZmljdWx0IHRvIGhhdmUgYSBkaXN0cmlidXRlZCBzeXN0ZW0gd2l0aG91dCBhIG5ldHdvcmsgc28gd2UgaGF2ZSB0byBnZXQgdXNlZCB0byBkZWFsaW5nIHdpdGggdGhpcyB0cmlja3kgY2hhcmFjdGVyLjwvcD48cD5MZXTigJlzIGxlYXJuIGFib3V0IHdoYXQgbWFrZXMgdGhlIG5ldHdvcmsgaGFyZCB0byBjb250ZW5kIHdpdGgsIGFuZCB3aHkgc29tZSBvZiB0aGVzZSBmYWxsYWNpZXMgYXJlIGVhc3kgdG/CoGFzc3VtZS48L3A+PGg0PlRoZSB0cm91YmxlIHdpdGjCoG5ldHdvcmtzPC9oND48cD5PdXIgZGlzdHJpYnV0ZWQgc3lzdGVtcywgbm8gbWF0dGVyIGhvdyBjb21wbGV4IG9yIGludm9sdmVkIHRoZXkgYXJlLCBhbGwgZXhpc3Qgd2l0aGluIGEgbmV0d29yay4gVGhlIG5vZGVzIG9mIG91ciBzeXN0ZW0gaGF2ZSB0byB0YWxrIHRvIG9uZSBhbm90aGVyIGFuZCBzZW5kIGFuZCByZWNlaXZlIG1lc3NhZ2VzIHRvIGNvbW11bmljYXRlIGFuZCBkZWxpdmVyIGRhdGEuIEJlY2F1c2UgdGhlIHN5c3RlbSBpcyBkaXN0cmlidXRlZCwgcGFydHMgb2YgaXQgd2lsbCBsaXZlIGluIGRpZmZlcmVudCBwbGFjZXMsIGFuZCB0aGUgbmV0d29yayBpcyB0aGUgYW5jaG9yaW5nIHBvaW50IGJ5IHdoaWNoIHRoZSBjb21wb25lbnRzIG9mIHRoZSBzeXN0ZW0gd2lsbCBjb21tdW5pY2F0ZS48L3A+PHA+VGhpcyBicmluZ3MgdXMgdG8gZmFsbGFjeSBvbmU6IDxzdHJvbmc+VGhlIG5ldHdvcmsgaXMgcmVsaWFibGUuPC9zdHJvbmc+IFJlbWVtYmVyLCB0aGVzZSBhcmUgZmFsbGFjaWVzIHRoYXQgd2XigJlyZSBkZWFsaW5nIHdpdGgsIHNvIHRoZSBuZXR3b3JrIGJlaW5nIHJlbGlhYmxlIGlzIGEgdHJ1ZSBtaXNjb25jZXB0aW9uOyB0aGUgbmV0d29yayBpcyA8ZW0+bm90PC9lbT4gcmVsaWFibGUhPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqZWkxOEZwbTFlYXhQa3JJTTAwa2lHdy5qcGVnIiAvPjxmaWdjYXB0aW9uPkZhbGxhY3kgIzE6IFRoZSBuZXR3b3JrIGlzIHJlbGlhYmxlIChpdCBpc8Kgbm90KS48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+U28gbWFueSB0aGluZ3Mgd2l0aGluIGEgbmV0d29yayBjYW4gZ28gd3JvbmcuIEhhcmR3YXJlIGNhbiBmYWlsLCB0aGUgcG93ZXIgY2FuIGdvIG91dCwgdGhlIHNpZ25hbCBjb3VsZCBnZXQgc3BvdHR5LCBvciB0aGUgbmV0d29yayBjb3VsZCBldmVuIGJlY29tZSBjb21wcm9taXNlZCEgSXQgbWlnaHQgc2VlbSBvYnZpb3VzIHRoYXQgYSBuZXR3b3JrIGlzbuKAmXQgcmVsaWFibGUsIGJ1dCBhcyBkZXNpZ25lcnMgb2YgYSBkaXN0cmlidXRlZCBzeXN0ZW0sIHdlIGNhbiBzb21ldGltZXMgZm9yZ2V0IHRoaXMgd2hlbiB3ZSBhcmUgd3JpdGluZyBjb2RlIHRoYXQgaXMgZ29pbmcgdG8gcnVuIG9uIGEgZGlzdHJpYnV0ZWQgc3lzdGVtLiBXZSB3cml0ZSB0aGF0IGNvZGUgcGVyaGFwcyBvcGVyYXRpbmcgdW5kZXIgdGhpcyBhc3N1bXB0aW9uLCBidXQgd2hlbiB0aGUgbmV0d29yayBpbmV2aXRhYmx5IGJlY29tZXMgPGVtPnVucmVsaWFibGU8L2VtPiBhdCBzb21lIHBvaW50IGRvd24gdGhlIHJvYWQsIHdlIHJlYWxpemUgdGhhdCB3ZSBtYWRlIGEgYmFkIGFzc3VtcHRpb24gYW5kIGl0IGVuZHMgdXAgYWZmZWN0aW5nIG91ciBzeXN0ZW0gYWR2ZXJzZWx5LiBUaHVzLCBpdCBiZWNvbWVzIG91ciBqb2IgdG8ga2VlcCB0aGlzIGZhbGxhY3kgaW4gbWluZCBhbmQgbm90IGZvcmdldCB0aGF0IHRoZSBuZXR3b3JrIGNhbm5vdCBiZSByZWxpZWTCoHVwb24uPC9wPjxwPk5vdywgYmVmb3JlIHdlIGdldCB0b28gbXVjaCBmdXJ0aGVyIGludG8gbmV0d29ya3PigIrigJTigIpub3QgdG8gbWVudGlvbiB0aGUgZmFsbGFjaWVzIGFzc29jaWF0ZWQgd2l0aCB0aGVt4oCK4oCU4oCKdGhlcmUgYXJlIHNvbWUgaW1wb3J0YW50IHRlcm1zIGZvciB1cyB0byBsZWFybi4gV2hlbiB3ZSB0YWxrIGFib3V0IG1lc3NhZ2VzIGJlaW5nIHNlbnQgdGhyb3VnaCBhIG5ldHdvcmssIHdl4oCZcmUgdXN1YWxseSByZWZlcnJpbmcgdG8gZGF0YSBiZWluZyBzZW50IGFjcm9zcyB0aGUgbmV0d29yay4gQnV0IHdlIGNhbiB0YWxrIGFib3V0IGRhdGEgYW5kIHRoZSB3YXkgaXQgaXMgc2VudCBpbiB0d28gZGlmZmVyZW50IHdheXM6IGxhdGVuY3kgYW5kIGJhbmR3aWR0aC48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpxZFV3M0Fra3dsX1lPWjJBbmx2VC1nLmpwZWciIC8+PGZpZ2NhcHRpb24+TGF0ZW5jeSB2ZXJzdXMgYmFuZHdpZHRoPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPjxzdHJvbmc+PGVtPkxhdGVuY3k8L2VtPjwvc3Ryb25nPiBpcyB0aGUgbWVhc3VyZSBvZiBob3cgPGVtPmRlbGF5ZWQ8L2VtPiBzb21lIGRhdGEgaXMgdG8gYXJyaXZlLCBiYXNlZCBvbiB3aGVyZXZlciBpdCB3YXMgc2VudC4gV2UgY2FuIHRoaW5rIG9mIGxhdGVuY3kgYXMgdGhlIHNwZWVkIGF0IHdoaWNoIG91ciBkYXRhIHRyYXZlbHMgZnJvbSBvbmUgcGxhY2UgdG8gYW5vdGhlciwgb3IgaG93IGxvbmcgaXQgdGFrZXMgZm9yIHRoZSBkYXRhIHRvIGFycml2ZSBmcm9tIG5vZGUgQSB0byBub2RlIEIgaW4gb3VyIHN5c3RlbS4gTGF0ZW5jeSBpcyBhIGNvbmNlcHQgdGhhdCBtYW55IGRldmVsb3BlcnMgbWF5IGFscmVhZHkgYmUgcXVpdGUgZmFtaWxpYXIgd2l0aCwgYmVjYXVzZSB3ZSBvZnRlbiByZWZlciB0byB0aGUgbGF0ZW5jeSBvZiBkYXRhIGluIHRoZSBjb250ZXh0IG9mIG1pbGxpc2Vjb25kcy4gRm9yIGV4YW1wbGUsIGlmIGl0IHRvb2sgYSByZXF1ZXN0IDQwMCBtaWxsaXNlY29uZHMgdG8gYmUgc2VydmVkIGZyb20gYSBzZXJ2ZXIgKG5vZGUgQSkgdG8gYSBjbGllbnQgKG5vZGUgQiksIHdlIGNhbiBzYXkgdGhhdCB0aGUgbGF0ZW5jeSBvZiB0aGF0IGRhdGEgYmVpbmcgc2VudCB3YXMgZGVsYXllZCBieSA0MDAgbWlsbGlzZWNvbmRzLCBvciB0aGF0IGl0IHRvb2sgMC40IHNlY29uZHMgZm9yIHRoZSBtZXNzYWdlIHRyYXZlbCBmcm9tIHRoZSBzZXJ2ZXIgdG8gdGhlIGNsaWVudC4gTWFueSBwZXJmb3JtYW5jZS1taW5kZWQgZGV2ZWxvcGVycyBhcmUgb2Z0ZW4gdGhpbmtpbmcgb2YgbGF0ZW5jeSB3aGVuIHRoZXkgY29uc2lkZXIgd2hhdCB0byBvcHRpbWl6ZSBvciBpbXByb3ZlIGluIHRoZWlyIGFwcGxpY2F0aW9ucyBvcsKgc3lzdGVtcy48L3A+PHA+PHN0cm9uZz48ZW0+QmFuZHdpZHRoPC9lbT48L3N0cm9uZz4sIG9uIHRoZSBvdGhlciBoYW5kLCBpcyBhIG1lYXN1cmUgb2YgaG93IG11Y2ggZGF0YSBjYW4gYmUgc2VudCBmcm9tIG9uZSBwb2ludCB0byBhbm90aGVyIGluIGEgY2VydGFpbiBwZXJpb2Qgb2YgdGltZS4gV2Ugb2Z0ZW4gdGFsayBhYm91dCBiYW5kd2lkdGggaW4gdGhlIGNvbnRleHQgb2YgaW50ZXJuZXQgc3BlZWQgKGZvciBleGFtcGxlLCBtZWdhYml0cyBwZXIgc2Vjb25kIG9yIE1icHMpIGJlY2F1c2Ugd2XigJlyZSByZWZlcnJpbmcgdG8gaG93IG11Y2ggZGF0YSBjYW4gYmUgc2VudCBvdmVyIG91ciBzcGVjaWZpYyBuZXR3b3JrLCBvciB0aGUgY2FwYWNpdHkgb2Ygb3VyIG5ldHdvcmsgdG8gc2VuZCBzb21lIGFtb3VudCBvZiBkYXRhIGluIGEgZ2l2ZW4gc3BhbiBvZsKgdGltZS48L3A+PHA+V2hpbGUgbGF0ZW5jeSBpcyB0aGUgYWN0dWFsIHNwZWVkIGF0IHdoaWNoIGRhdGEgZ2V0cyB0byBpdHMgZGVzdGluYXRpb24gdmlhIHRoZSBuZXR3b3JrLCBiYW5kd2lkdGggaXMgdGhlIGNhcGFjaXR5IG9mIG5ldHdvcmsgdG8gc2VuZCBhIGNlcnRhaW4gYW1vdW50IG9mIGRhdGEgdG8gaXRzIGRlc3RpbmF0aW9uLiBVbmRlcnN0YW5kaW5nIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlc2UgdHdvIGNvbmNlcHRzIGlzIGltcG9ydGFudCB0byB3cmFwcGluZyBvdXIgaGVhZHMgYXJvdW5kIHRoZSBzZWNvbmQgYW5kIHRoaXJkIGZhbGxhY2llcywgc28gbGV04oCZcyBsZWFybiBhYm91dCB0aG9zZSB0d2/CoG5leHQhPC9wPjxoND5Tb21lIGZhbGxhY2llcyBodXJ0IG1vcmUgdGhhbsKgb3RoZXJzPC9oND48cD5Ob3cgdGhhdCB3ZSBrbm93IHdoYXQg4oCcbGF0ZW5jeeKAnSBhY3R1YWxseSBtZWFucywgd2UgYXJlIGJldHRlciBlcXVpcHBlZCB0byB1bmRlcnN0YW5kIGZhbGxhY3kgdHdvOiA8c3Ryb25nPkxhdGVuY3kgaXMgemVybzwvc3Ryb25nPi4gVW5mb3J0dW5hdGVseSwgdGhpcyBpcyBhbHNvIGEgbWlzY29uY2VwdGlvbi48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpidGVTazQ4aklPQUx2eU0xWE5POFdnLmpwZWciIC8+PGZpZ2NhcHRpb24+RmFsbGFjeSAjMjogTGF0ZW5jeSBpcyB6ZXJvIChpdCBpc8Kgbm90KS48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+VGhpcyBpcyBwZXJoYXBzIGFuIGVhc3kgZmFsbGFjeSB0byBmYWxsIHByZXkgdG8gc2luY2UsIGluIG91ciBsb2NhbCBlbnZpcm9ubWVudHMgb3IgaW4gdGhlIGRldmVsb3BtZW50IGVudmlyb25tZW50LCB3ZSBtYXkgZXhwZXJpZW5jZSBhIG11Y2ggbG93ZXIgbGF0ZW5jeTsgaW4gb3RoZXIgd29yZHMsIHdlIGxpa2VseSBleHBlcmllbmNlIGEgc2hvcnQgYW1vdW50IG9mIGRlbGF5IHRpbWUgd2hlbiBpdCBjb21lcyB0byBzZW5kaW5nIG9yIHJlY2VpdmluZyBkYXRhLiBIb3dldmVyLCB0aGF0IGxvdyBsb2NhbCBsYXRlbmN5IGRvZXNu4oCZdCBhY2N1cmF0ZWx5IHJlZmxlY3QgdGhlIGRlbGF5IG9mIHdoYXQgb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbSBtaWdodCBmZWVs4oCK4oCU4oCKZXNwZWNpYWxseSBnaXZlbiBkaWZmZXJlbnQgbmV0d29ya3MuPC9wPjxwPldl4oCZdmUgPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9zY2FsYWJpbGl0eS1wcm9ibGVtcy1oaWRkZW4tY2hhbGxlbmdlcy1vZi1ncm93aW5nLWEtc3lzdGVtLWY3NDMxM2IwNjNjMyI+YWxyZWFkeSBsZWFybmVkIGFib3V0PC9hPiBsb2NhbC1hcmVhIG5ldHdvcmtzIChMQU4pIGFuZCB3aWRlLWFyZWEgbmV0d29ya3MgKFdBTikuIFdlIGtub3cgdGhhdCBpbiBhIFdBTiwgZGF0YSBoYXMgdG8gdHJhdmVsIGZ1cnRoZXIgZnJvbSBvbmUgbm9kZSB0byBhbm90aGVyLCBzaW5jZSB0aGUgbmV0d29yayBtYXkgc3BhbiBsYXJnZSBnZW9ncmFwaGljYWwgZGlzdGFuY2VzLiBUaGlzIGlzIGluIGNvbnRyYXN0IHRvIGEgTEFOLCB3aGljaCBpcyBhIG5ldHdvcmsgd2l0aCBkZXZpY2VzIGluIHRoZSBzYW1lIGJ1aWxkaW5nIG9yIHJvb20sIGFuZCB0aHVzIHRoZSBkYXRhIGJlaW5nIHNlbnQgYXJvdW5kIGhhcyBtdWNoIGxlc3Mgb2YgYSBkaXN0YW5jZSB0b8KgdHJhdmVsLjwvcD48cD5XZSBjYW5ub3QgYXNzdW1lIHRoYXQgb3VyIHN5c3RlbSB3aWxsIGFsd2F5cyBvcGVyYXRlIG9uIGEgbG9jYWwtYXJlYSBuZXR3b3JrIChpbiBmYWN0LCBtb3N0IGRpc3RyaWJ1dGVkIHN5c3RlbXMgb3BlcmF0ZSBvbiBhIFdBTiksIGFuZCB0aHVzIHdlIGtub3cgdGhhdCBvdXIgZGF0YSBoYXMgYSBwaHlzaWNhbCBkaXN0YW5jZSB0byB0cmF2ZWwuIEJ5IHByb3h5LCB3ZSBzaG91bGQgbm90IGFzc3VtZSB0aGF0IHRoZXJlIHdpbGwgYmUgbm8g4oCcZGVsYXnigJ0gb3IgemVybyBsYXRlbmN5IGJldHdlZW4gc29tZSBkYXRhIGJlaW5nIHNlbnQgYW5kIHRoYXQgZGF0YSBiZWluZyByZWNlaXZlZC4gRm9yIGV4YW1wbGUsIGEgcmVxdWVzdCB0aGF0IGhhcyB0byB0cmF2ZWwgYWNyb3NzIHRoZSB3b3JsZCBmcm9tIFBvcnRsYW5kIHRvIFBhcmlzIHdpbGwgaGF2ZSBtb3JlIGxhdGVuY3kgdGhhbiBhIHJlcXVlc3QgdHJhdmVsaW5nIGZyb20gYSBtYWNoaW5lIGluIG9uZSByb29tIHRvwqBhbm90aGVyLjwvcD48YmxvY2txdW90ZT5Tb21lIGxhdGVuY3kgaXMgYSBsaW1pdGF0aW9uIG9mIG5ldHdvcmtzOyB3ZSBzaG91bGQgYmUgd2lzZSB0byBub3QgYnVpbGQgYSBzeXN0ZW0gdGhhdCBhc3N1bWVzIHRoYXQgc3VjaCBhIGRlbGF5IGlzIG5vbmV4aXN0ZW50LiBXZSB3aWxsIGNlcnRhaW5seSBiZSBiaXR0ZW4gYnkgc3VjaCBhIGZhbHNlIGFzc3VtcHRpb24gaW4gdGhlwqBmdXR1cmUuPC9ibG9ja3F1b3RlPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqbm5XNVlvdllKQjc4NE56VktoQndGUS5qcGVnIiAvPjxmaWdjYXB0aW9uPkZhbGxhY3kgIzM6IEJhbmR3aWR0aCBpcyBpbmZpbml0ZSAoaXQgaXPCoG5vdCkuPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPlRoZSB0aGlyZCBmYWxsYWN5IGlzIHNpbWlsYXIgdG8gdGhpcyBmYWxzZSBhc3N1bXB0aW9uIGFzIHdlbGw6IDxzdHJvbmc+QmFuZHdpZHRoIGlzIGluZmluaXRlLjwvc3Ryb25nPiBKdXN0IGFzIGxhdGVuY3kgaXMgbm90IHplcm8sIHRoZSBjYXBhY2l0eSBvZiBhIG5ldHdvcmsgdG8gc2VuZCBkYXRhIGlzIG5vdCB1bmxpbWl0ZWQuIEFzIGNvbXB1dGluZyB0ZWNobm9sb2d5IGhhcyBpbXByb3ZlZCBvdmVyIHRoZSB5ZWFyc+KAiuKAlOKAimFuZCBjZXJ0YWlubHkgc2luY2UgdGhlIGVhcmx5IDkw4oCZcyB3aGVuIHRoZSBGYWxsYWNpZXMgd2VyZSBjb2luZWTigIrigJTigIp0aGUgYmFuZHdpZHRoIG9mIG91ciBuZXR3b3JrcyBrZWVwcyBnZXR0aW5nIGJldHRlciBhbmQgYmV0dGVyLCBhbmQgd2XigJlyZSBhYmxlIHRvIHNlbmQgbW9yZSBkYXRhIGFjcm9zcyBvdXIgZGF0YSBpbiBhIGdpdmVuIGFtb3VudCBvZsKgdGltZS48L3A+PHA+SG93ZXZlciwgZXZlbiB3aXRoIHRoZXNlIGltcHJvdmVtZW50cywgbmV0d29ya3Mgc3RpbGwgZG9u4oCZdCBoYXZlIDxlbT51bmxpbWl0ZWQ8L2VtPiBjYXBhY2l0eSBhbmQgY2Fubm90IHNlbmQgaW5maW5pdGVseSBsYXJnZSBhbW91bnRzIG9mIGRhdGEuIFdoZW4gd2UgZGVzaWduIGEgZGlzdHJpYnV0ZWQgc3lzdGVtLCBpdCB3b3VsZCBiZWhvb3ZlIHVzIHRvIG5vdCBhc3N1bWUgdGhhdCBhbnkgYW1vdW50IG9mIGRhdGEgY2FuIGJlIHNlbnQgYWNyb3NzIHRoZSBuZXR3b3JrLiBGb3IgZXhhbXBsZSwgd2UgbWF5IGhhdmUgc29tZSB1c2VyIG9mIG91ciBzeXN0ZW0gdGhhdCBoYXMgYSBuZXR3b3JrIHdpdGggYSBsaW1pdGVkIGJhbmR3aWR0aCBhbmQgYSBsb3dlciBjYXBhY2l0eTsgZm9yIHRoYXQgdXNlcuKAmXMgZXhwZXJpZW5jZSwgc2VuZGluZyBhIGxhcmdlIGFtb3VudCBvZiBkYXRhIChzdWNoIGFzIGxhcmdlIGltYWdlcyBvciB2ZW5kb3JlZCwgZGVwZW5kZW50IGZpbGVzKSB3b3VsZCBtZWFuIHRoYXQgd2XigJlkIGJlIHNlbmRpbmcgZmFyIG1vcmUgZGF0YSB0aGFuIHRoZWlyIG5ldHdvcmsgd2FzIGNhcGFibGUgb2Ygc2VuZGluZyBvdmVyIHRoZSBuZXR3b3JrIGluIGEgcmVhc29uYWJsZSBhbW91bnQgb2bCoHRpbWUuPC9wPjxwPkZpbmFsbHksIHdlIGNvbWUgdG8gZmFsbGFjeSBmb3VyLCB3aGljaCBpcyBwZXJzb25hbGx5IGp1c3QgbXkgZmF2b3JpdGUgb25lOiA8c3Ryb25nPlRoZSBuZXR3b3JrIGlzIHNlY3VyZS48L3N0cm9uZz4gVGhlcmUgYXJlIGp1c3Qgc2ltcGxlIHNvIG1hbnkgd2F5cyB0aGF0IGEgbmV0d29yayBjYW4gYmUgYXR0YWNrZWQgb3IgY29tcHJvbWlzZWQsIGZyb20gdW5lbmNyeXB0ZWQgbWVzc2FnZXMgdG8gdnVsbmVyYWJpbGl0aWVzIGluIGRlcGVuZGVuY2llcyB0byBvcGVuIHNvdXJjZSBjb2RlLCBvciBldmVuIGp1c3QgYnVncyBpbiB0aGlyZC1wYXJ0eSBzb2Z0d2FyZXMgdGhhdCBvdXIgc3lzdGVtIG1pZ2h0IGRlcGVuZCBvbiAobm90IHRvIG1lbnRpb24gYnVncyBpbiBvdXIgb3duIHN5c3RlbXMswqB0b28hKS48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpPX29rQ3QwR1hKbWhQTTcxQ2FLTGhnLmpwZWciIC8+PGZpZ2NhcHRpb24+RmFsbGFjeSAjNDogVGhlIG5ldHdvcmsgaXMgc2VjdXJlIChpdCBERUZJTklURUxZIGlzwqBub3QhKS48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+VGhlIG1pc2NvbmNlcHRpb24gdGhhdCB0aGUgbmV0d29yayBpcyDigJxzZWN1cmXigJ0gaXMgYSBoYXJkIG9uZSB0byBvdmVyY29tZSwgc2luY2UsIGlmIHdlIHJlYWxseSBzdGFydCB0byB0aGluayBhYm91dCBpdCwgbm8gbmV0d29yayBpcyByZWFsbHkgc2VjdXJlLiBJbmRlZWQsIHRoZSBvbmx5IHdheSB0byB0cnVseSBwcm90ZWN0IG91ciBuZXR3b3JrcyBhbmQgYmUgMTAwJSBzZWN1cmUgaXMgdG8ganVzdCBub3QgY29ubmVjdCB0byB0aGUgbmV0d29yayEgT2YgY291cnNlLCBiZWNhdXNlIHdlIGFyZSBkZWFsaW5nIHdpdGggZGlzdHJpYnV0ZWQgc3lzdGVtc+KApnRoaXMgaXNu4oCZdCByZWFsbHkgZWFzeSB0byBkbywgc2luY2Ugd2Uga25vdyB0aGF0IGEgbmV0d29yayBpcyByZXF1aXJlZCBmb3IgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIG5vZGVzIGluIG91csKgc3lzdGVtLjwvcD48cD5Tbywgd2hhdCBhcmUgd2UgdG8gZG8/IFdlbGwsIHdlIGNhbiB0cnkgdG8gcmVtZW1iZXIgdGhhdCA8ZW0+dHJ1ZTwvZW0+IHNlY3VyaXR5IGlzIGEgZmFsbGFjeSwgYW5kIHRoYXQgd2UgY2FuIGp1c3QgZG8gd2hhdCBpcyBpbiBvdXIgcG93ZXIgdG8gdHJ5IHRvIHByZXZlbnQgYnJlYWNoZXMgYW5kIGF0dGFja3Mgd2hlbiB3ZSBkZXNpZ24sIGJ1aWxkLCBhbmQgdGVzdCBvdXIgc3lzdGVtcy4gSG9wZWZ1bGx5LCBhdCBsZWFzdCB0aGF04oCZbGwga2VlcCB0aGUgc2VjdXJpdHkgaXNzdWVzIGF0IGJheSBmb3LCoGF3aGlsZS48L3A+PHA+SW4gcGFydCB0d28gb2YgdGhpcyBwb3N0LCB3ZeKAmWxsIGxvb2sgYXQgdGhlIHJlbWFpbmluZyBmb3VyIGZhbGxhY2llcy4gSSBwcm9taXNlIHRoYXQgdGhlIHNhZCBsaXR0bGUgYmx1ZSBuZXR3b3JrIGJsb2Igd2lsbCBtYWtlIGEgcmV0dXJuIGFwcGVhcmFuY2UhIFdl4oCZcmUgbm90IGRvbmUgd2l0aCBpdCBqdXN0wqB5ZXQuPC9wPjxoND5SZXNvdXJjZXM8L2g0PjxwPlRoZSBmYWxsYWNpZXMgb2YgZGlzdHJpYnV0ZWQgY29tcHV0aW5nIGhhdmUgYmVlbiBmYWlybHkgd2VsbC13cml0dGVuIGFib3V0LCBhbmQgeW91IGNhbiBmaW5kIHNvbWUgZ29vZCByZXNvdXJjZXMgb24gZGlmZmVyZW50IGludGVycHJldGF0aW9ucyBvZiB0aGVtLCBmb3IgZGlmZmVyZW50IHRlY2hub2xvZ2llcy4gSWYgeW914oCZcmUgY3VyaW91cyB0byBsZWFybiBtb3JlLCBjaGVjayBvdXQgdGhlIHJlc291cmNlcyBiZWxvdyE8L3A+PG9sPjxsaT48YSBocmVmPSJodHRwczovL3d3dy5yZ29hcmNoaXRlY3RzLmNvbS9GaWxlcy9mYWxsYWNpZXMucGRmIj5GYWxsYWNpZXMgb2YgRGlzdHJpYnV0ZWQgQ29tcHV0aW5nIEV4cGxhaW5lZDwvYT4sIEFybm9uIFJvdGVtLUdhbC1PejwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnNpbXBsZW9yaWVudGVkYXJjaGl0ZWN0dXJlLmNvbS84LWZhbGxhY2llcy1vZi1kaXN0cmlidXRlZC1zeXN0ZW1zLyI+VW5kZXJzdGFuZGluZyB0aGUgOCBmYWxsYWNpZXMgb2YgRGlzdHJpYnV0ZWQgU3lzdGVtczwvYT4sIFZpY3RvcsKgQ2hpcmN1PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9tdWx0aW1lZGlhLnRlbG9zLmNvbS9ibG9nL2RlYnVua2luZy10aGUtOC1mYWxsYWNpZXMtb2YtZGlzdHJpYnV0ZWQtc3lzdGVtcy1wYXJ0LTIvIj5EZWJ1bmtpbmcgdGhlIDggRmFsbGFjaWVzIG9mIERpc3RyaWJ1dGVkIFN5c3RlbXM8L2E+LCBSYW1pbMKgQWxmb25zbzwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3BsYXlsaXN0P2xpc3Q9UEwxRFpxZVZ3UkxuRDNFanljaVlBTzgyZFQ5T3dpcThJNSI+RmFsbGFjaWVzIG9mIERpc3RyaWJ1dGVkIFN5c3RlbXM8L2E+LCBVZGnCoERhaGFuPC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9ibG9nLm5ld3JlbGljLmNvbS9lbmdpbmVlcmluZy90aGUtZmFsbGFjaWVzLW9mLWRpc3RyaWJ1dGVkLWNvbXB1dGluZy1yZWJvcm4tdGhlLWNsb3VkLWVyYSI+VGhlIEZhbGxhY2llcyBvZiBEaXN0cmlidXRlZCBDb21wdXRpbmcgUmVib3JuOiBUaGUgQ2xvdWQgRXJhPC9hPiwgQnJpYW7CoERvbGw8L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3Mi5zeXMtY29uLmNvbS9pdHNnL3ZpcnR1YWxjZC9qYXZhL2FyY2hpdmVzLzA5MDEvaW5ncmlkL2luZGV4Lmh0bWwiPkRldXRzY2jigJlzIEZhbGxhY2llcywgMTAgWWVhcnMgQWZ0ZXI8L2E+LCBJbmdyaWQgVmFuIERlbsKgSG9vZ2VuPC9saT48L29sPjxpbWcgc3JjPSJodHRwczovL21lZGl1bS5jb20vXy9zdGF0P2V2ZW50PXBvc3QuY2xpZW50Vmlld2VkJnJlZmVycmVyU291cmNlPWZ1bGxfcnNzJnBvc3RJZD0xYjM1YzNiODViNTMiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGFsdD0iIj48aHI+PHA+PGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2Vkcy9mb3JhZ2luZy1mb3ItdGhlLWZhbGxhY2llcy1vZi1kaXN0cmlidXRlZC1jb21wdXRpbmctcGFydC0xLTFiMzVjM2I4NWI1MyI+Rm9yYWdpbmcgZm9yIHRoZSBGYWxsYWNpZXMgb2YgRGlzdHJpYnV0ZWQgQ29tcHV0aW5nIChQYXJ0IDEpPC9hPiB3YXMgb3JpZ2luYWxseSBwdWJsaXNoZWQgaW4gPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2Jhc2VkcyI+YmFzZWRzPC9hPiBvbiBNZWRpdW0sIHdoZXJlIHBlb3BsZSBhcmUgY29udGludWluZyB0aGUgY29udmVyc2F0aW9uIGJ5IGhpZ2hsaWdodGluZyBhbmQgcmVzcG9uZGluZyB0byB0aGlzIHN0b3J5LjwvcD5dXT48L2NvbnRlbnQ6ZW5jb2RlZD4KICAgICAgICA8L2l0ZW0+CiAgICAgICAgPGl0ZW0+CiAgICAgICAgICAgIDx0aXRsZT48IVtDREFUQVtXZWVkaW5nIE91dCBEaXN0cmlidXRlZCBTeXN0ZW0gQnVnc11dPjwvdGl0bGU+CiAgICAgICAgICAgIDxsaW5rPmh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvd2VlZGluZy1vdXQtZGlzdHJpYnV0ZWQtc3lzdGVtLWJ1Z3MtMjhhMDFlMzdmNzBjP3NvdXJjZT1yc3MtOGY1NTk5M2M5NzNlLS0tLS0tMjwvbGluaz4KICAgICAgICAgICAgPGd1aWQgaXNQZXJtYUxpbms9ImZhbHNlIj5odHRwczovL21lZGl1bS5jb20vcC8yOGEwMWUzN2Y3MGM8L2d1aWQ+CiAgICAgICAgICAgIDxjYXRlZ29yeT48IVtDREFUQVtkaXN0cmlidXRlZC1zeXN0ZW1zXV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW3Byb2dyYW1taW5nXV0+PC9jYXRlZ29yeT4KICAgICAgICAgICAgPGNhdGVnb3J5PjwhW0NEQVRBW2NvbXB1dGVyLXNjaWVuY2VdXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbc29mdHdhcmUtZGV2ZWxvcG1lbnRdXT48L2NhdGVnb3J5PgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbY29kZV1dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxkYzpjcmVhdG9yPjwhW0NEQVRBW1ZhaWRlaGkgSm9zaGldXT48L2RjOmNyZWF0b3I+CiAgICAgICAgICAgIDxwdWJEYXRlPldlZCwgMDUgSnVuIDIwMTkgMTI6MzE6MDAgR01UPC9wdWJEYXRlPgogICAgICAgICAgICA8YXRvbTp1cGRhdGVkPjIwMTktMDYtMDVUMTI6MzE6MDAuOTIwWjwvYXRvbTp1cGRhdGVkPgogICAgICAgICAgICA8Y29udGVudDplbmNvZGVkPjwhW0NEQVRBWzxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqZWhudWMzVW1zR0pRVDNkRkRzVE02US5qcGVnIiAvPjxmaWdjYXB0aW9uPldlZWRpbmcgb3V0IGRpc3RyaWJ1dGVkIHN5c3RlbcKgYnVnczwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5BcyB3ZeKAmXZlIGxlYXJuZWQgbW9yZSBhbmQgbW9yZSBhYm91dCBkaXN0cmlidXRlZCBzeXN0ZW1zLCB3ZeKAmXZlIHNlZW4gdGhlIG1hbnkgd2F5cyB0aGF0IHRoaW5ncyBjYW4gd3JvbmcuIE1vcmUgc3BlY2lmaWNhbGx5LCB3ZeKAmXZlIHNlZW4gdGhhdCB0aGVyZSBhcmUganVzdCA8ZW0+c28gbWFueSA8L2VtPnBvc3NpYmxlIHNjZW5hcmlvczxlbT4gPC9lbT5pbiB3aGljaCBhIHBvcnRpb24gb2YgYSBsYXJnZSBvciBzeXN0ZW0gY2FuwqBmYWlsLjwvcD48cD5TaW5jZSBmYWlsdXJlIGlzIGluZXZpdGFibGUgaW4gYW55IHNpemVkIHN5c3RlbSwgd2Ugb3VnaHQgdG8gZG8gb3Vyc2VsdmVzIGEgZmFpbHVyZSBhbmQgYmV0dGVyIHVuZGVyc3RhbmQgaXQuIFNvIGZhciwgd2XigJl2ZSBiZWVuIHRhbGtpbmcgYWJvdXQgZGlmZmVyZW50IGtpbmRzIG9mIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvZmFudGFzdGljLWZhdWx0cy1hbmQtd2hhdC10by1jYWxsLXRoZW0tNTZkOTFhMWIxOThjIj5mYXVsdHM8L2E+IGFuZCA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL21vZGVzLW9mLWZhaWx1cmUtcGFydC0xLTY2ODc1MDRiZmVkNiI+ZmFpbHVyZXM8L2E+IGluIGEgZmFpcmx5IGFic3RyYWN0IHNlbnNlLiBJdOKAmXMgdGltZSBmb3IgdXMgdG8gZ2V0IGEgbGl0dGxlIG1vcmUgY29uY3JldGUsIGhvd2V2ZXIuIFN1cmUsIHdlIHZhZ3VlbHkgdW5kZXJzdGFuZCB0aGUgZGlmZmVyZW50IGZsYXZvcnMgYW5kIHByb2ZpbGVzIG9mIGhvdyB0aGluZ3MgY2FuIGdvIHdyb25nIHdpdGhpbiBhIHN5c3RlbSwgYW5kIHdoeSB0aGV5IGFyZSBwcm9ibGVtYXRpYyAoeWV0IGluZXZpdGFibGUpIHdpdGhpbiBvdXIgc3lzdGVtLiBCdXQgaG93IGNhbiB3ZSBzdGFydCB0byB1bmRlcnN0YW5kIHRoZXNlIGZsYXdzIGluIGEgc3lzdGVtIGluIGEgbW9yZSB0YW5naWJsZcKgZm9ybT88L3A+PHA+SW4gb3JkZXIgdG8gZG8gdGhhdCwgd2UgbmVlZCB0byB0aGluayBtb3JlIGRlZXBseSBhYm91dCB0aGUgZGlmZmVyZW50IHdheXMgaW4gd2hpY2ggZmFpbHVyZXMgcHJlc2VudCB0aGVtc2VsdmVzIHRvIHVzIGluIHRoZSBzeXN0ZW1zIHRoYXQgd2UgYWxsIGRlYWwgd2l0aCBldmVyeSBkYXksIGFzIGJvdGggY29uc3VtZXJzIGFuZCBjcmVhdG9ycyBvZiBzb2Z0d2FyZS4gRm9yIG1vc3Qgb2YgdXMsIGZhaWx1cmVzIGluIG91ciBzeXN0ZW1zIHByZXNlbnQgdGhlbXNlbHZlcyBhcyBidWdzLiBUaGUgd2F5cyBpbiB3aGljaCBhIGJ1ZyBtaWdodCA8ZW0+YXBwZWFyIDwvZW0+dG8gdXMsIGhvd2V2ZXIsIGNhbiBtYWtlIGFsbCB0aGUgZGlmZmVyZW5jZSBpbiBob3cgd2UgYXJlIGFibGUgdG8gdW5kZXJzdGFuZCBpdCBpbiBhIG1vcmUgY29uY3JldGXCoHdheS48L3A+PHA+U28gd2hhdCBraW5kcyBvZiBidWdzIGRvIHdlIGRlYWwgd2l0aCwgZXhhY3RseSwgYW5kIGhvdyBkbyB0aGV5IGltcGFjdCB0aGUgZmFpbHVyZXMgb2YgYSBkaXN0cmlidXRlZCBzeXN0ZW0/IFdlbGwsIHRoYXTigJlzIHRoZSBteXN0ZXJ5IHdl4oCZcmUgYWJvdXQgdG/CoHNvbHZlITwvcD48aDQ+KEhhcmR3YXJlKSBmYWlsdXJlcyBvZiB0aGXCoHBhc3Q8L2g0PjxwPkJlZm9yZSB3ZSBkaXZlIGludG8gaWRlbnRpZnlpbmcgdGhlIGJ1Z3Mgb2YgdG9kYXksIGxldOKAmXMgdGFrZSBhIHF1aWNrIGRldG91ciBpbnRvIHRoZSBwYXN0LiBJdOKAmXMgZWFzeSB0byBnZXQgb3ZlcndoZWxtZWQgd2hlbiB0aGlua2luZyBhYm91dCBmYWlsdXJlcyBhbmQgZmF1bHRzIGluIGEgc3lzdGVtLCBzbyBiZWZvcmUgd2UgZ2V0IHRvbyBkZWVwIGludG8gdGhlIHRyZW5jaGVzLCB3ZSBvdWdodCB0byB0YWtlIGEgbW9tZW50IHRvIHNlZSBob3cgdGhlIGxhbmRzY2FwZSBvZiBidWdzIGluIGNvbXB1dGluZyBoYXZlIGNoYW5nZWQgb3ZlciB0aGXCoHllYXJzLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKkhhRUZpLXlDYUJMRS1DamJHanNoRGcuanBlZyIgLz48ZmlnY2FwdGlvbj5XaGF0IGlzIGhhcmR3YXJlIHJlbGlhYmlsaXR5PzwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5VbnRpbCB0aGUgMTk4MOKAmXMsIHRoZSBtYWpvciBmb2N1cyBvZiBjb21wdXRpbmcgd2FzIGFyb3VuZCBoYXJkd2FyZS4gTW9yZSBzcGVjaWZpY2FsbHksIG11Y2ggb2YgdGhlIGZpZWxkIHdhcyBmb2N1c2VkIG9uIGhvdyB0byBtYWtlIGhhcmR3YXJlIGp1c3QgZ2VuZXJhbGx5IDxlbT5iZXR0ZXI8L2VtPi4gVGhpcyB3YXMgc2ltcGx5IGJlY2F1c2UgaGFyZHdhcmUgd2FzIHRoZSBtYWpvciBsaW1pdGluZyBmYWN0b3IgaW4gbWFueSB3YXlzLiBGb3IgZXhhbXBsZSwgaWYgd2Ugd2FudGVkIHRvIG1ha2UgYSBtYWNoaW5lIGZhc3RlciBhbmQgbW9yZSBwZXJmb3JtYW50IGJhY2sgdGhlbiwgd2UgbmVlZGVkIGJpZ2dlciBoYXJkd2FyZTsgdGhhdCB3YXMgdGhlIG9ubHkgd2F5IHRvIGhhdmUgZW5vdWdoIHNwYWNlIGZvciBhbGwgdGhlIGNpcmN1aXRzIHdlIG5lZWRlZCEgQW5kIGlmIHdlIHdhbnRlZCBtb3JlIGNpcmN1aXRz4oCK4oCU4oCKd2hpY2ggd2VyZSBlYWNoIGFscmVhZHkgcHJldHR5IGxhcmdlIGFuZCBsb2Z0eSBpbiBzaXplIOKAlHRoZW4gd2UgYWxzbyBuZWVkZWQgdG8gYmUgcHJlcGFyZWQgZm9yIHRoZW0gdG8gdXNlIGEgbG90IG9mIHBvd2VyIGFuZCBleHVkZSBhIGxvdCBvZiBlbmVyZ3kgYW5kwqBoZWF0LjwvcD48cD5UaGVzZSBpc3N1ZXMgYmVnaW4gdG8gaGlnaGxpZ2h0IHNvbWUgb2YgdGhlIGNsZWFyIHBvc3NpYmxlIGZhdWx0cyB0aGF0IGNvdWxkIGhhdmUgcG9wcGVkIHVwIHdpdGhpbiBhIHN5c3RlbSBqdXN0IGEgZmV3IGRlY2FkZXMgYWdvLiBBcyA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL2ZhbnRhc3RpYy1mYXVsdHMtYW5kLXdoYXQtdG8tY2FsbC10aGVtLTU2ZDkxYTFiMTk4YyI+d2UgYWxyZWFkeSBrbm93PC9hPiwgaGFyZHdhcmUgZmF1bHRz4oCK4oCU4oCKc3VjaCBhcyBhIGNpcmN1aXQgb3ZlcmhlYXRpbmcsIG9yIGEgbmV0d29yayB3aXJpbmcgaXNzdWUgY2F1c2luZyBhIHdpZGVzcHJlYWQgb3V0YWdl4oCUYXJlIHdoYXQgbGVhZCB0byBoYXJkd2FyZSBmYWlsdXJlcy4gSWYgYW55IGFzcGVjdCBvZiB0aGUgaGFyZHdhcmUgZmFpbHMsIHRoZW4gdGhhdCBmYWlsdXJlIHdpbGwgbGlrZWx5IGNhdXNlIHNvbWUgZm9ybSBvZiBkb3dudGltZSBpbiBhIHN5c3RlbSwgd2hpY2ggd2Uga25vdyA8YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vYmFzZWRzL3JlYWR5LWFuZC1hdmFpbGFibGUtZGlzdHJpYnV0ZWQtc3lzdGVtcy0xNjEwMjNhY2EzNzgiPm1ha2VzIGEgc3lzdGVtIGxlc3MgcmVsaWFibGU8L2E+LiBVbnRpbCB0aGUgODDigJlzLCBoYXJkd2FyZSBmYXVsdHMgd2VyZSB2ZXJ5IG11Y2ggYSByZWFsIGFuZCBjb21tb27CoHByb2JsZW0uPC9wPjxwPkJ1dCB0aGVzZSBkYXlzLCB0aGUgc3RvcnkgaXMgYSBsaXR0bGUgZGlmZmVyZW50LiBXZSBleHBlcmllbmNlIGZhciBsZXNzIGRvd250aW1lIGR1ZSB0byBoYXJkd2FyZSBmYXVsdHMgdGhhbiB3ZSBkaWQganVzdCBmb3J0eSB5ZWFycyBhZ28uIFdlIGhhdmUgbWFueSB5ZWFycyBvZiBjb25jZW50cmF0ZWQgZWZmb3J0IHRoYXQgaGFzIGhlbHBlZCBpbXByb3ZlIHRoZSBoYXJkd2FyZSB3ZSBhbGwgcmVseSB1cG9uIG9uIGEgZGFpbHkgYmFzaXMgbm93ISBJbiB0aGUgcGFzdCB0aHJlZSBkZWNhZGVzLCB0aGUgc2l6ZSBvZiBjaXJjdWl0cyBoYXMgZGVjcmVhc2VkLCBhbGxvd2luZyB1cyB0byBwYWNrIG1vcmUgY2lyY3VpdHMgaW50byBhIHNtYWxsZXIgc3BhY2UsIGFuZCB0aG9zZSBjaXJjdWl0cyBwcm9kdWNlIGxlc3MgaGVhdCwgYW5kIHVzZSBtdWNoIGxlc3MgZW5lcmd5LiBDaXJjdWl0cyBoYXZlIGFsc28gYmVjb21lIGVhc2llciBhbmQgY2hlYXBlciB0byBwcm9kdWNlLCBtYWtpbmcgdGhlbSBtb3JlIGluZXhwZW5zaXZlIGluIGdlbmVyYWwuIFRoaXMgaGFzIGFsc28gYWxsb3dlZCB1cyB0byBjcmVhdGUgc21hbGxlciBkZXZpY2VzLCBsaWtlIGxhcHRvcCBjb21wdXRlcnMsIHRhYmxlcywgYW5kIHNtYXJ0cGhvbmVzLCB0byBtZW50aW9uIGp1c3QgYcKgZmV3LjwvcD48cD5UaGlzIGRvZXNu4oCZdCBtZWFuIHRoYXQgdGhlcmUgYXJlIDxlbT5ubyA8L2VtPmhhcmR3YXJlIHByb2JsZW1zIHdoYXRzb2V2ZXIsIHRob3VnaCEgRXZlbiBzbWFsbCBkZXZpY2VzIHdpdGggc21hbGxlciBjaXJjdWl0cyBpbnNpZGUgb2YgdGhlbSB3aWxsIGV4cGVyaWVuY2UgaGFyZHdhcmUgZmFpbHVyZXMuIE5ldHdvcmsgaXNzdWVzIHRoYXQgY2F1c2UgZG93bnRpbWUgYXJlIHN0aWxsIGxpa2VseSB0byBoYXBwZW4sIGV2ZW4gdGhvdWdoIHRoZSBmcmVxdWVuY3kgd2l0aCB3aGljaCB0aGV5IG9jY3VyIGhhcyBkZWZpbml0ZWx5IGRyb3BwZWQgb2ZmLiBIYXJkd2FyZSBkaXNrcyBhcmUgc3RpbGwgcHJvbmUgdG8gZmFpbHVyZXMsIHdoaWNoIG1ha2VzIGl0IHRyaWNreSB0byByZWFkIChtdWNoIGxlc3Mgd3JpdGUpIGRhdGEgdG8gdGhlbS4gQW5kLCBvZiBjb3Vyc2UsIGp1c3QgYmVjYXVzZSBoYXJkd2FyZSBoYXMgaW1wcm92ZWQgZG9lc27igJl0IG1lYW4gdGhhdCBpdCBkb2VzbuKAmXQgcmVxdWlyZSBtYWludGVuYW5jZSBhbmQgdXBncmFkZXM7IHNpbmNlIHRoZXNlIGFyZSBzdGlsbCByZXF1aXJlbWVudHMsIHRoZXkgd2lsbCBzdGlsbCByZXN1bHQgaW4gcGxhbm5lZCBkb3dudGltZS48L3A+PGZpZ3VyZT48aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vY2RuLWltYWdlcy0xLm1lZGl1bS5jb20vbWF4LzEwMjQvMSpRbHJfY2lvc0plVnM1ckFuUk1Ndk1BLmpwZWciIC8+PGZpZ2NhcHRpb24+SG93IGhhcyBoYXJkd2FyZcKgY2hhbmdlZD88L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+T3ZlcmFsbCwgaG93ZXZlciwgdGhlIGNoYW5nZXMgd2XigJl2ZSBzZWVuIGluIGhhcmR3YXJlIGhhdmUgYmVlbiBxdWl0ZSBhIG5ldCBwb3NpdGl2ZSBmb3IgY29tcHV0aW5nLiBTbywgaWYgaGFyZHdhcmUgaGFzIGltcHJvdmVk4oCmd2hhdCBlbHNlIGNvdWxkIGJlIGEgY29udHJpYnV0aW5nIGZhY3RvciB0byBmYWlsdXJlcyBpbiBhIGRpc3RyaWJ1dGUgc3lzdGVtPyBXaHksIG91ciBkZWFyIGZyaWVuZCA8ZW0+c29mdHdhcmU8L2VtPiwgb2bCoGNvdXJzZSE8L3A+PGJsb2NrcXVvdGU+RXZlbiBpbiB0aGUgbW9zdCB3ZWxsLXRlc3RlZCBzeXN0ZW1zLCBzb2Z0d2FyZSBmYWlsdXJlcyBhcmUgcmVzcG9uc2libGUgZm9yIGEgc2lnbmlmaWNhbnQgYW1vdW50IG9mIGRvd250aW1lLiBXZSBrbm93IHRoZXNlIOKAnGZhaWx1cmVz4oCdIGJ5IGFub3RoZXIgbmFtZTrCoGJ1Z3MuPC9ibG9ja3F1b3RlPjxwPkltcHJvdmVtZW50cyBpbiBoYXJkd2FyZSBub3R3aXRoc3RhbmRpbmcsIGl0IGlzIGJ1Z3MgaW4gdGhlIHNvZnR3YXJlIG9mIGRpc3RyaWJ1dGVkIHN5c3RlbXMgdGhhdCByZXN1bHQgaW4gdW5leHBlY3RlZCBhbmQgdW5wbGFubmVkIGRvd250aW1lLiBNYW55IHN0dWRpZXMgZXN0aW1hdGUgdGhhdCwgMjUgdG8gMzUlIG9mIHRoZSBkb3dudGltZSBpbiBhIHN5c3RlbSBhcmUgY2F1c2VkIGJ5IGJ1Z3MgaW4gc29mdHdhcmUtcmVsYXRlZCBjb2RlLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKld3ZUJpZkhwVWF3Y3ZLQ05ic1JpUGcuanBlZyIgLz48ZmlnY2FwdGlvbj5Tb2Z0d2FyZSBmYWlsdXJlcyBhcyBhIG1ham9yIHBhaW4gcG9pbnQgaW4gYSBkaXN0cmlidXRlZCBzeXN0ZW08L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+VGhlIGludGVyZXN0aW5nIGFzcGVjdCBvZiB0aGlzIHN0b3J5IGlzIHRoZSBmYWN0IHRoYXQsIGV2ZW4gd2l0aGluIHN5c3RlbXMgdGhhdCBhcmUgZmFpcmx5IHdlbGwtZXN0YWJsaXNoZWQgYW5kIGhhdmUgcmlnb3JvdXMgdGVzdGluZyBwcmFjdGljZXMgaW4gcGxhY2UsIHN0dWRpZXMgaGF2ZSBmb3VuZCB0aGF0IHRoZSBhY3R1YWwgcGVyY2VudGFnZSBvZiBzb2Z0d2FyZS1yZWxhdGVkIGRvd250aW1lIGRvZXNu4oCZdCByZWFsbHkgPGVtPmV2ZXI8L2VtPiA8ZW0+cmVkdWNlPC9lbT4gYmV5b25kIHRoYXQgMjUlIHRocmVzaG9sZCEgVGhlcmUgYXJlIGp1c3Qgc29tZSBidWdzIHRoYXQgc3RpbGwgc2VlbSB0byBleGlzdCwgZXZlbiB3aXRoIHdlbGwgdGhvdWdodC1vdXQgdGVzdHMgYW5kIHF1YWxpdHnCoGNvbnRyb2wuPC9wPjxoND4oU29mdHdhcmUpIHByb2JsZW1zIG9mIHRoZcKgcHJlc2VudDwvaDQ+PHA+VGhlIGJ1Z3MgdGhhdCBzdGlsbCBleGlzdCBpbiBtb3JlIG1hdHVyZSBzeXN0ZW1z4oCK4oCU4oCKdGhvc2UgdGhhdCBoYXZlIHJpZ29yb3VzIHRlc3RpbmcsIGZvciBleGFtcGxl4oCK4oCU4oCKYXJlIGFsc28ga25vd24gYXMgPHN0cm9uZz48ZW0+cmVzaWR1YWwgYnVnczwvZW0+PC9zdHJvbmc+LCBhbmQgdGhleSBjYW4gYmUgY2xhc3NpZmllZCBpbnRvIHR3byBzZXBhcmF0ZSBjYXRlZ29yaWVzOjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKmszREpDYVhQX1FZYTFNQTVDSGlEV3cuanBlZyIgLz48ZmlnY2FwdGlvbj5UaGUgdHdvIG1haW4ga2luZHMgb2Yg4oCccmVzaWR1YWzigJ0gc29mdHdhcmXCoGJ1Z3M8L2ZpZ2NhcHRpb24+PC9maWd1cmU+PG9sPjxsaT48c3Ryb25nPjxlbT5Cb2hyYnVnczwvZW0+PC9zdHJvbmc+LCB3aGljaCBhcmUgbmFtZWQgZm9yIE5pZWxzIEJvaHIgYW5kIEVybmVzdCBSdXRoZXJmb3Jk4oCZcyBtb2RlbCBmbyB0aGUgYXRvbWljIG51Y2xldXMswqBhbmQ8L2xpPjxsaT48c3Ryb25nPjxlbT5IZWlzZW5idWdzPC9lbT48L3N0cm9uZz4sIHdoaWNoIGFyZSBuYW1lZCBhcyBhIHB1biBvbiBXZXJuZXIgSGVpc2VuYmVyZ+KAmXMgSGVpc2VuYmVyZyB1bmNlcnRhaW50eSBwcmluY2lwbGUuPC9saT48L29sPjxwPlRoZXNlIHR3byBidWdzIGhhdmUgYmVlbiByZXNlYXJjaGVkIGJ5IG1hbnkgZGlmZmVyZW50IGNvbXB1dGVyIHNjaWVudGlzdHM7IHRocmVlIG9mIHRoZSBtb3N0IG5vdGFibGUgb25lcyBpbmNsdWRlIEppbSBHcmF5LCBCcnVjZSBMaW5kc2V5LCBhbmQgQW5kcmVhICjigJxBbml0YeKAnSkgQm9yciwgYW5kIHdl4oCZbGwgcmVhZCBhYm91dCB0aGUgZnJ1aXRzIG9mIHRoZWlyIGxhYm9yIGluIGEgbGl0dGxlIGJpdC4gQmV0d2VlbiB0aGVzZSB0d28gZGlmZmVyZW50IGtpbmRzIG9mIOKAnHJlc2lkdWFs4oCdIGJ1Z3MsIG9uZSBpcyBkZWZpbml0ZWx5IHdheSBlYXNpZXIgdG8gd3JhcCBvdXIgaGVhZHMgYXJvdW5kIHRoYW4gdGhlIG90aGVyLiBTbyBsZXTigJlzIHN0YXJ0IHdpdGggdGhhdCBvbmXCoGZpcnN0ITwvcD48cD5UaGUgPHN0cm9uZz48ZW0+Qm9ocmJ1ZzwvZW0+PC9zdHJvbmc+IGlzIGEgYnVnIHRoYXQgbW9zdCAoYWxsPykgcHJvZ3JhbW1lcnMgd2lsbCBlbmNvdW50ZXIgd2hpbGUgdGlua2VyaW5nIHdpdGggc29mdHdhcmUuIEEgQm9ocmJ1ZyBpcyBhIGJ1ZyB0aGF0IGNhbiByZWxpYWJseSBiZSByZXByb2R1Y2VkLCBnaXZlbiB0aGUgcmlnaHQgY29uZGl0aW9ucy4gRm9yIGV4YW1wbGUsIGlmIHdlIHdlcmUgYWJsZSB0byBub3RpY2UgdGhhdCBhIGJ1ZyBvY2N1cnJlZCBpbiBhIHBpZWNlIG9mIHNvZnR3YXJlIGFuZCBjbG9zZWx5IG9ic2VydmVkIHRoZSBzaXR1YXRpb24gaW4gd2hpY2ggaXQgaGFwcGVuZWQsIGlmIGl0IHdhcyBhIEJvaHJidWcsIHRoZW4gd291bGQgYmUgYWJsZSB0byByZXByb2R1Y2UgaXQgYnkgcmUtY3JlYXRpbmcgdGhlIHNhbWUgc2l0dWF0aW9uLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKkFmVXBmSVVnOExiQ2ppWVhNVXVtMVEuanBlZyIgLz48ZmlnY2FwdGlvbj5Cb2hyYnVnOiBhIHF1aWNrIGRlZmluaXRpb24hPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPkEgQm9ocmJ1ZyBpcyBwcmV0dHkgZWFzeSB0byBsb2NhbGl6ZSBhbmQgcGlucG9pbnQgdG8gYSBjZXJ0YWluIHBhcnQgb2YgYSBjb2RlYmFzZS4gQXMgZGV2ZWxvcGVycywgdGhpcyBpcyBhIGh1Z2UgYm9vbiwgc2luY2UgaXQgbWVhbnMgdGhhdCB3ZSBjYW4gcmVsaWFibHkgZmluZCBhbmQgdGhlbiA8ZW0+Zml4PC9lbT4gdGhlIEJvaHJidWcsIGFzIGFubm95aW5nIGFzIGl0IG1pZ2h0wqBiZSE8L3A+PHA+SW50ZXJlc3RpbmdseSwgd2hlbiBKaW0gR3JheSBhbmQgQnJ1Y2UgTGluZHNleSB3ZXJlIHJlc2VhcmNoaW5nIEJvaHJidWdzIGluIG1vcmUgbWF0dXJlIHN5c3RlbXMsIHRoZXkgcG9zaXRlZCB0aGF0IHRoZSBmcmVxdWVuY3kgb2YgdGhlc2UgcmVwcm9kdWNpYmxlIGxpdHRsZSBidWdzIGFjdHVhbGx5IHJlZHVjZWQgYXMgYSBzeXN0ZW0gZ3JldyBvbGRlciBhbmQgbW9yZcKgc3RhYmxlLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKkxlc25VaklNaHB2bEtVSXhwNnJCVlEuanBlZyIgLz48ZmlnY2FwdGlvbj5Cb2hyYnVncyBpbiBhIHN5c3RlbSwgb3ZlcsKgdGltZTwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5Ib3dldmVyLCBBbml0YSBCb3Jy4oCZcyByZXNlYXJjaCBhZGRlZCBhIGJpdCBtb3JlIG51YW5jZSB0byB0aGlzLiBTaGUgZm91bmQgdGhhdCB0aGUgcGVyY2VudGFnZSBvZiBCb2hyYnVncyBkaWRu4oCZdCBzdHJpY3RseSBjb250aW51ZSB0byBkcm9wIGFzIGEgc3lzdGVtIGdyZXcgbW9yZSBzdGFibGU7IHJhdGhlciwgaGVyIHJlc2VhcmNoIGZvdW5kIHRoYXQsIHdpdGggZWFjaCBuZXcgdXBncmFkZSBvciBzY2hlZHVsZWQgbWFpbnRlbmFuY2UgdGhhdCB3YXMgaW50cm9kdWNlZCBpbnRvIHRoZSBzeXN0ZW0sIHRoZXJlIHdhcyBhbHNvIGEgc2xpZ2h0IHVwdGljayBvZiBCb2hyYnVncywgc2luY2Ugc2lnbmlmaWNhbnQgY2hhbmdlcyBpbiB0aGUgc3lzdGVtIHdlcmUgc3RpbGwgdmVyeSBjYXBhYmxlIG9mIGludHJvZHVjaW5nIDxlbT5yZXByb2R1Y2libGU8L2VtPiBidWdzLjwvcD48cD5UaGFua2Z1bGx5LCBldmVuIHRob3VnaCBuZXcgQm9ocmJ1Z3MgbWlnaHQgYmUgaW50cm9kdWNlZCB3aXRoIHRoZXNlIHN5c3RlbS13aWRlIGNoYW5nZXMsIGF0IGxlYXN0IHRoZXkgY2FuIGJlIHJlcHJvZHVjZWQgKGFuZCBob3BlZnVsbHksIGZpeGVkISkuIEJ1dCB0aGluZ3MgYXJlbuKAmXQgYWx3YXlzIHRoYXQgc2ltcGxlIGluIHRoZSB3b3JsZCBvZiBzb2Z0d2FyZSAob2YgY291cnNlKS4gU29tZSBidWdzIGRvbuKAmXQgYWx3YXlzIGJlaGF2ZSB0aGUgc2FtZeKApmluIGZhY3QsIHNvbWUgb2YgdGhlbSBzZWVtIHRvIGJlaGF2ZSBkaWZmZXJlbnRseSB3aGVuIHdlIHRyeSB0byBpbnZlc3RpZ2F0ZSB0aGVtITwvcD48aDQ+RGVhbGluZyB3aXRoIGRpZmZpY3VsdCwgZGlzdHJpYnV0ZWQgYnVnczwvaDQ+PHA+VGhlcmUgaXMgb25lIHNwZWNpZXMgb2YgYnVnIHRoYXQgaXMgcGFydGljdWxhcmx5IHJlbGV2YW50IHRvIGRpc3RyaWJ1dGVkIHN5c3RlbXMsIGFuZCBpdOKAmXMgZmluYWxseSB0aW1lIGZvciB1cyB0byBjb21lIGZhY2UtdG8tZmFjZSB3aXRoIGl0IGluIHRoaXMgc2VyaWVzLiBJ4oCZbSB0YWxraW5nLCBvZiBjb3Vyc2UsIGFib3V0IHRoZSBIZWlzZW5idWchPC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqYXA0akVndW9QTHdPbHh5UVFuaEl1QS5qcGVnIiAvPjxmaWdjYXB0aW9uPkhlaXNlbmJ1ZzogYSBxdWljayBkZWZpbml0aW9uITwvZmlnY2FwdGlvbj48L2ZpZ3VyZT48cD5BIDxzdHJvbmc+PGVtPkhlaXNlbmJ1ZyA8L2VtPjwvc3Ryb25nPmNhbiBiZSBzdXBlciBmcnVzdHJhdGluZyB0byBkZWFsIHdpdGggYXMgYSBwcm9ncmFtbWVyLiBUaGlzIGlzIGEgYnVnIHRoYXQgYWN0dWFsbHkgYmVoYXZlcyA8ZW0+ZGlmZmVyZW50bHkgPC9lbT53aGVuIGl0IGlzIG9ic2VydmVkIGNsb3NlbHkuIEFzIG9uZSBiZWdpbnMgdG8gaW52ZXN0aWdhdGUgYSBIZWlzZW5idWcsIGl0IG1heSBjaGFuZ2UgaG93IGl0IG1hbmlmZXN0cyBpdHNlbGYuIEluIHNvbWUgY2FzZXMsIHdoZW4gYSBIZWlzZW5idWcgaXMsIHdlbGwsIGJlaW5nIGRlYnVnZ2VkLCBpdCBkaXNhcHBlYXJzIGNvbXBsZXRlbHkuIEFuZCBpbiBzb21lIHNpdHVhdGlvbnMsIHdoZW4gY2VydGFpbiBjb25kaXRpb25zIGFyZSByZWNyZWF0ZWQgaW4gYW4gZWZmb3J0IHRvIHJlcHJvZHVjZSB0aGUgYnVnLCB0aGUgYnVnIGp1c3Qgd29u4oCZdCBhcHBlYXIhIFByZXR0eSBmcnVzdHJhdGluZywgcmlnaHQ/PC9wPjxmaWd1cmU+PGltZyBhbHQ9IiIgc3JjPSJodHRwczovL2Nkbi1pbWFnZXMtMS5tZWRpdW0uY29tL21heC8xMDI0LzEqaGlKS2xrZmdHODNXa1RUMjFVaXRxQS5qcGVnIiAvPjxmaWdjYXB0aW9uPldoYXQgbWFrZXMgSGVpc2VuYnVncyBzb8KgaGFyZD88L2ZpZ2NhcHRpb24+PC9maWd1cmU+PHA+Rm9yIGV4YW1wbGUsIGEgYnVnIHN1Y2ggYXMgYSBkYXRhIHN0cnVjdHVyZSBydW5uaW5nIG91dCBvZiBzcGFjZSBvciBhIHBvcnRpb24gb2YgYSBwcm9ncmFtIHRoYXQgb3ZlcmZsb3dzIHNvbWUgYWxsb2NhdGVkIG1lbW9yeSBpbiBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQgbWlnaHQgbm90IGJlIHRvIGVhc2lseSByZXByb2R1Y2UgbG9jYWxseSBvciBpbiBhIHRlc3Q7IGhvd2V2ZXIsIHRoaXMgZXhhY3QgYnVnIGNvdWxkIGNhdXNlIGEgc3lzdGVtIHRvIGNyYXNoLCBhbmQgaXMgcHJldHR5wqBmYXRhbCE8L3A+PHA+VGhpcyBpcyBwYXJ0IG9mIHRoZSByZWFzb24gdGhhdCBtYWtlcyBIZWlzZW5idWdzIHNvIGRpZmZpY3VsdCB0byByZWFzb24gYWJvdXQuIFRoZXkgYXJlIGluY3JlZGlibHkgaGFyZCB0byBhY3R1YWxseSA8ZW0+cmVhc29uPC9lbT4gYWJvdXQsIGJlY2F1c2UgaXTigJlzIGhhcmQgdG8gYWN0dWFsbHkgbG9jYWxpemUgdGhlbSBhbmQgcGluIHRoZW0gZG93bi4gQW5kLCBiZWNhdXNlIHRoZXnigJlyZSBoYXJkIHRvIHJlcHJvZHVjZSA8ZW0+cmVsaWFibHk8L2VtPiwgdGhleeKAmXJlIGhhcmQgdG8gaWRlbnRpZnkgYW5kIHRodXMsIGRpZmZpY3VsdCB0byBhY3R1YWxsecKgc29sdmUhPC9wPjxwPlRoZSBIZWlzZW5idWcgaXMgZXNwZWNpYWxseSByZWxldmFudCB0byBkaXN0cmlidXRlZCBzeXN0ZW1zIGJlY2F1c2UgdGhleeKAmXJlIG1vcmUgbGlrZWx5IHRvIG9jY3VyIGluIGEgZGlzdHJpYnV0ZWQgc3lzdGVtIHRoYW4gaW4gYSBsb2NhbGl6ZWQsIGNlbnRyYWwgb25lLiBUaGVzZSBraW5kcyBvZiBidWdzIGFyZSBhY3R1YWxseSBpbmRpY2F0b3JzIG9mIHByb2JsZW1zIGFuZCBmYWlsdXJlcyBpbiB0aGUgc3lzdGVtIHRoYXQgb2NjdXJyZWQgbXVjaCA8ZW0+ZWFybGllcjwvZW0+IHRoYW4gd2hlbiB0aGUgYnVnIG1hbmlmZXN0ZWQgaXRzZWxmLjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKkJ1dFpMclBLREZsWGc1NmFOWHFhZVEuanBlZyIgLz48ZmlnY2FwdGlvbj5IZWlzZW5idWdzIGFyZSBtdWNoIG1vcmUgY29tbW9uIGluIGRpc3RyaWJ1dGVkIHN5c3RlbXMuPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPkEgSGVpc2VuYnVnIGlzIHVzdWFsbHkgYSByZWQgZmxhZyB0aGF0IHNvbWV0aGluZyA8ZW0+ZWxzZSA8L2VtPndlbnQgd3JvbmcgaW4gdGhlIHN5c3RlbSBhd2hpbGUgYWdvLCBhbmQgaXQgaXMgb25seSBzdXJmYWNlIG5vdywgYW5kIGl0IG9ubHkganVzdCBzbyBoYXBwZW5zIHRoYXQgaXQgaXMgc3VyZmFjaW5nIGluIHRoZSBmb3JtIG9mIHRoaXPCoGJ1Zy48L3A+PGJsb2NrcXVvdGU+SW4gYWN0dWFsaXR5LCBhIEhlaXNlbmJ1ZyBpcyBqdXN0IGEgbG9uZy1kZWxheWVkIHNpZGUgZWZmZWN0IG9mIGEgbXVjaCBlYXJsaWVywqBwcm9ibGVtLjwvYmxvY2txdW90ZT48cD5JbiBtb3JlIG1hdHVyZSBkaXN0cmlidXRlZCBzeXN0ZW1zLCBpdCBpcyBIZWlzZW5idWdz4oCK4oCU4oCKPGVtPm5vdCA8L2VtPkJvaHJidWdz4oCK4oCU4oCKdGhhdCBjYXVzZSBtYWpvciBmYWlsdXJlcyBhbmQgc3lzdGVtIGNyYXNoZXMuIElmIHdlIHRoaW5rIGFib3V0IGl0IG1vcmUgZGVlcGx5LCB0aGlzIHN0YXJ0cyB0byBtYWtlIHNlbnNlOyB0aGVyZSBhcmUgbWFueSBtb3ZpbmcgcGFydHMgaW4gYSBkaXN0cmlidXRlZCBzeXN0ZW0sIGFuZCBtYW55IGRlcGVuZGVuY2llcyBhbmQgbm9kZXMgdGhhdCByZWx5IHVwb24gb25lIGFub3RoZXIuIEEgZmFpbHVyZSB0aGF0IGFwcGVhcnMgdG8gYmUgY29taW5nIGZyb20gPGVtPm9uZTwvZW0+IG5vZGUgaW4gdGhlIHN5c3RlbSBtaWdodCBhY3R1YWxseSBiZSB0aHJlZSBub2RlcyByZW1vdmVkIGZyb20gYSBmYWlsdXJlIHRoYXQgb3JpZ2luYXRlZCBlbHNld2hlcmUsIGJ1dCBwcm9wYWdhdGVkIHRocm91Z2hvdXQgdGhlIHN5c3RlbS4gV2hpbGUgYSBCb2hyYnVnIG1pZ2h0IGJlIGVhc3kgdG8gcmVwcm9kdWNlLCBsb2NhbGl6ZSwgYW5kIHJlYXNvbiBhYm91dCwgYSBIZWlzZW5idWcgaXMgbXVjaCB0cmlja2VyIHRvIHRoaW5rIGFib3V0IGFuZCB0aHVzLCB0b8KgZml4LjwvcD48ZmlndXJlPjxpbWcgYWx0PSIiIHNyYz0iaHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9tYXgvMTAyNC8xKmN2RnI3Mjd6QzRhNGRka2FxQlMzUWcuanBlZyIgLz48ZmlnY2FwdGlvbj5IZWlzZW5idWdzIGluIGEgc3lzdGVtLCBvdmVywqB0aW1lPC9maWdjYXB0aW9uPjwvZmlndXJlPjxwPkFuaXRhIEJvcnLigIrigJTigIpteSBuZXcgZmF2b3JpdGUgcmVzZWFyY2hlciBvbiByZXNpZHVhbCBidWdz4oCK4oCU4oCKYWN0dWFsbHkgZm91bmQgaW4gaGVyIHJlc2VhcmNoIHRoYXQgbWFueSBlbmdpbmVlcnMgaGF2ZSBhIGhhcmQgdGltZSByZWFzb25pbmcgYWJvdXQgSGVpc2VuYnVncywgYW5kIHRoYXQgbWFraW5nIGF0dGVtcHRzIHRvIDxlbT5maXg8L2VtPiBhIEhlaXNlbmJ1ZyBhY3R1YWxseSBjYXVzZSBtb3JlIHByb2JsZW1zIHRoYW4gdGhlcmUgd2VyZSB0byBiZWdpbiB3aXRoISBTbyBpZiB5b3XigJl2ZSBiZWVuIGZlZWxpbmcgbGlrZSBIZWlzZW5idWdzIGFyZSB0cmlja3kgbGl0dGxlIGNyZWF0dXJlcyBhbmQgaGFyZCB0byBjb250ZW5kIHdpdGgsIGRvbuKAmXQgd29ycnk7IHRoZSByZXNlYXJjaCBhZ3JlZXMgd2l0aMKgeW91ITwvcD48aDQ+UmVzb3VyY2VzPC9oND48cD5Tb2Z0d2FyZSBmYWlsdXJlcyBpbiBkaXN0cmlidXRlZCBzeXN0ZW1zIGFyZSBwcmV0dHkgY29vbCB0byBsZWFybiBhYm91dCwgYW5kIHlvdSBjYW4gbGVhcm4gYSB3aG9sZSBsb3QgbW9yZSBhYm91dCB0aGVtLiBUaGVyZSBpcyBhIGxvdCBvZiBpbnRlcmVzdGluZyByZXNlYXJjaCBhbmQgd3JpdGluZyBvbiBob3cgdG8gZGVhbCB3aXRoIGFuZCBndWFyZCBhZ2FpbnN0IEhlaXNlbmJ1Z3MgaW4geW91ciBzeXN0ZW0uIENoZWNrIG91dCBzb21lIG9mIHRoZSByZXNvdXJjZXMgYmVsb3cgaWYgeW914oCZcmUgY3VyaW91cyB0byBsZWFybsKgbW9yZSE8L3A+PG9sPjxsaT48YSBocmVmPSJodHRwczovL2Jvb2tzLmdvb2dsZS5jb20vYm9va3M/aWQ9WF9rRThZdlJKSkVDJmFtcDtwZz1QQTIzOSZhbXA7bHBnPVBBMjM5Ij5SZWxpYWJsZSBEaXN0cmlidXRlZCBTeXN0ZW1zOiBUZWNobm9sb2dpZXMsIFdlYiBTZXJ2aWNlcywgYW5kIEFwcGxpY2F0aW9uczwvYT4sIEtlbm5ldGjCoEJpcm1hbjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmhwbC5ocC5jb20vdGVjaHJlcG9ydHMvdGFuZGVtL1RSLTg1LjcucGRmIj5XaHkgRG8gQ29tcHV0ZXJzIFN0b3AgYW5kIFdoYXQgQ2FuIEJlIERvbmUgQWJvdXQgSXQ/PC9hPiwgSmltwqBHcmF5PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9jb3Vyc2VzLmNzLndhc2hpbmd0b24uZWR1L2NvdXJzZXMvY3NlNDkwaC8wN3dpL3JlYWRpbmdzL0ludHJvZHVjdGlvblRvRGlzdHJpYnV0ZWRTeXN0ZW1zLnBkZiI+SW50cm9kdWN0aW9uIHRvIERpc3RyaWJ1dGVkIFN5c3RlbXM8L2E+LCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b248L2xpPjxsaT48YSBocmVmPSJodHRwczovL3d3dy5jcy5ydXRnZXJzLmVkdS9+cm1hcnRpbi90ZWFjaGluZy9zcHJpbmcwMy9jczU1My9wYXBlcnMwMS8wNi5wZGYiPkhlaXNlbmJ1Z3MgYW5kIEJvaHJidWdzOiBXaHkgYXJlIHRoZXkgZGlmZmVyZW50PzwvYT4sIFJpY2hhcmQgTWFydGluwqAoPyk8L2xpPjxsaT48YSBocmVmPSJodHRwczovL3BkZnMuc2VtYW50aWNzY2hvbGFyLm9yZy9jYWU3LzUyYjMyN2EyYmJkMjkzYTZiOTI1MzBlMzU0YTc2YjgyYWNlMi5wZGYiPlByb3RlY3RpbmcgQXBwbGljYXRpb25zIEFnYWluc3QgSGVpc2VuYnVnczwvYT4sIENocmlzwqBIb2JiczwvbGk+PC9vbD48aW1nIHNyYz0iaHR0cHM6Ly9tZWRpdW0uY29tL18vc3RhdD9ldmVudD1wb3N0LmNsaWVudFZpZXdlZCZyZWZlcnJlclNvdXJjZT1mdWxsX3JzcyZwb3N0SWQ9MjhhMDFlMzdmNzBjIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBhbHQ9IiI+PGhyPjxwPjxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMvd2VlZGluZy1vdXQtZGlzdHJpYnV0ZWQtc3lzdGVtLWJ1Z3MtMjhhMDFlMzdmNzBjIj5XZWVkaW5nIE91dCBEaXN0cmlidXRlZCBTeXN0ZW0gQnVnczwvYT4gd2FzIG9yaWdpbmFsbHkgcHVibGlzaGVkIGluIDxhIGhyZWY9Imh0dHBzOi8vbWVkaXVtLmNvbS9iYXNlZHMiPmJhc2VkczwvYT4gb24gTWVkaXVtLCB3aGVyZSBwZW9wbGUgYXJlIGNvbnRpbnVpbmcgdGhlIGNvbnZlcnNhdGlvbiBieSBoaWdobGlnaHRpbmcgYW5kIHJlc3BvbmRpbmcgdG8gdGhpcyBzdG9yeS48L3A+XV0+PC9jb250ZW50OmVuY29kZWQ+CiAgICAgICAgPC9pdGVtPgogICAgPC9jaGFubmVsPgo8L3Jzcz4= - recorded_at: Wed, 21 Oct 2020 15:08:30 GMT -- request: - method: get - uri: https://circleci.com/blog/feed.xml - body: - encoding: US-ASCII - string: '' - headers: - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - User-Agent: - - Ruby - response: - status: - code: 200 - message: OK - headers: - Content-Type: - - application/xml - Date: - - Wed, 21 Oct 2020 15:08:31 GMT - Etag: - - '"db0e9f9cae7024117d00274d790975a4"' - Last-Modified: - - Tue, 20 Oct 2020 20:14:07 GMT - Server: - - nginx - Strict-Transport-Security: - - max-age=15724800 - X-Amz-Id-2: - - IollSuCioZiDva8EOVj4102L2JG+i5bkdHtNXN8bVBz5/o7zijg1kgioJhtrC1+qjuv8/0d86hw= - X-Amz-Request-Id: - - AFF61742C84B13AA - X-Frame-Options: - - SAMEORIGIN - Content-Length: - - '150162' - Connection: - - keep-alive - body: - encoding: ASCII-8BIT - string: !binary |- - PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHJzcyB2ZXJzaW9uPSIyLjAiCiAgeG1sOmJhc2U9Imh0dHBzOi8vY2lyY2xlY2kuY29tLyIKICB4bWxuczphdG9tPSJodHRwOi8vd3d3LnczLm9yZy8yMDA1L0F0b20iCiAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICA8Y2hhbm5lbD4KICAgIDx0aXRsZT5UaGUgQ2lyY2xlQ0kgQmxvZyBGZWVkIC0gQ2lyY2xlQ0k8L3RpdGxlPgogICAgPGRlc2NyaXB0aW9uPlN0YXkgdXAgdG8gZGF0ZSB3aXRoIHRoZSBsYXRlc3QgbmV3cywgdXBkYXRlcywgYW5kIGhhY2tzIGZyb20gQ2lyY2xlQ0kuPC9kZXNjcmlwdGlvbj4KICAgIDxsaW5rPmh0dHBzOi8vY2lyY2xlY2kuY29tL2Jsb2cvPC9saW5rPgogICAgPGF0b206bGluayBocmVmPSJodHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL2ZlZWQueG1sIiByZWw9InNlbGYiIHR5cGU9ImFwcGxpY2F0aW9uL3Jzcyt4bWwiIC8+CiAgICAKICAgICAgCiAgICAgIDxpdGVtPgogICAgICAgIDx0aXRsZT5EbyBJIHJlYWxseSBuZWVkIEt1YmVybmV0ZXM/PC90aXRsZT4KICAgICAgICA8bGluaz5odHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL2RvLWktcmVhbGx5LW5lZWQta3ViZXJuZXRlcy88L2xpbms+CiAgICAgICAgPHB1YkRhdGU+VHVlLCAyMCBPY3QgMjAyMCAwOTowMDowMCAtMDcwMDwvcHViRGF0ZT4KICAgICAgICA8Z3VpZCBpc1Blcm1hTGluaz0idHJ1ZSI+aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy9kby1pLXJlYWxseS1uZWVkLWt1YmVybmV0ZXMvPC9ndWlkPgogICAgICAgIAogICAgICAgICAgPGRjOmNyZWF0b3I+Um9uIFBvd2VsbDwvZGM6Y3JlYXRvcj4KICAgICAgICAKICAgICAgICAKICAgICAgICAgIDxkZXNjcmlwdGlvbj4mbHQ7cCZndDsmbHQ7aSZndDsmbHQ7aSZndDtUaGlzIHBvc3QsIHdyaXR0ZW4gYnkgQ2lyY2xlQ0kgVGVjaG5pY2FsIENvbnRlbnQgTWFya2V0aW5nIE1hbmFnZXIgUm9uIFBvd2VsbCwgb3JpZ2luYWxseSBhcHBlYXJlZCBvbiBUaGUgTmV3IFN0YWNrICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly90aGVuZXdzdGFjay5pby9kby1pLXJlYWxseS1uZWVkLWt1YmVybmV0ZXMvJnF1b3Q7Jmd0O2hlcmUmbHQ7L2EmZ3Q7LiZsdDsvaSZndDsmbHQ7L2kmZ3Q7Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7SWYgeW91IGZvbGxvdyB0ZWNobm9sb2d5IG5ld3MsIGl0IG1pZ2h0IHNlZW0gbGlrZSAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8va3ViZXJuZXRlcy5pby8mcXVvdDsmZ3Q7S3ViZXJuZXRlcyZsdDsvYSZndDsgaXMgZXZlcnl3aGVyZS4gSXQgaGFzIGJlY29tZSBodWdlbHkgcG9wdWxhci4gSW4gZmFjdCwgZGV2ZWxvcGVycyBhbmQgRGV2T3BzIHRlYW1zIG1pZ2h0IGZlZWwgbGlrZSB0aGVpciBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudCBwaXBlbGluZSBpcyBob3BlbGVzc2x5IG91dGRhdGVkIGlmIHRoZXkgYXJlbuKAmXQgdXNpbmcgS3ViZXJuZXRlcy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtLdWJlcm5ldGVzIGlzIGFuIG9yY2hlc3RyYXRpb24gdG9vbCBmb3IgY29udGFpbmVyaXplZCBhcHBsaWNhdGlvbnMuIFN0YXJ0aW5nIHdpdGggYSBjb2xsZWN0aW9uIG9mIERvY2tlciBjb250YWluZXJzLCBLdWJlcm5ldGVzIGNhbiBjb250cm9sIHJlc291cmNlIGFsbG9jYXRpb24gYW5kIHRyYWZmaWMgbWFuYWdlbWVudCBmb3IgY2xvdWQgYXBwbGljYXRpb25zIGFuZCBtaWNyb3NlcnZpY2VzLiZsdDsvcCZndDsKCiZsdDtwJmd0O0FzIHN1Y2gsIGl0IHNpbXBsaWZpZXMgbWFueSBhc3BlY3RzIG9mIHJ1bm5pbmcgYSBzZXJ2aWNlLW9yaWVudGVkIGFwcGxpY2F0aW9uIGluZnJhc3RydWN0dXJlLiBBbG9uZyB3aXRoIG1vZGVybiAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2NvbnRpbnVvdXMtaW50ZWdyYXRpb24vJnF1b3Q7Jmd0O2NvbnRpbnVvdXMgaW50ZWdyYXRpb24mbHQ7L2EmZ3Q7IGFuZCBjb250aW51b3VzIGRlcGxveW1lbnQgKENJL0NEKSB0b29scywgS3ViZXJuZXRlcyBwcm92aWRlcyB0aGUgYmFzaXMgZm9yIHNjYWxpbmcgdGhlc2UgYXBwcyB3aXRob3V0IGh1Z2UgZW5naW5lZXJpbmcgZWZmb3J0LiZsdDsvcCZndDsKCiZsdDtwJmd0O1RoZXJl4oCZcyBhIGxvdCBvZiBleGNpdGVtZW50IGFib3V0IHVzaW5nIEt1YmVybmV0ZXMgdG8gbWFuYWdlIGNsb3VkIGFuZCBoeWJyaWQgY2xvdWQgZW52aXJvbm1lbnRzLiBBbmQgaXQgaXMgYSBncmVhdCB0b29sLiBCdXQgdGVhbXMgb2Z0ZW4gY2hhc2UgdGhlIGh5cGUgYW5kIG1vdmUgdG8gS3ViZXJuZXRlcyBwcmVtYXR1cmVseSwgc29tZXRpbWVzIGF0IGEgZ3JlYXQgY29zdCBpbiB0aW1lLCBtb25leSwgYW5kIGRldmVsb3BlciBmcnVzdHJhdGlvbi4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtJbiB0aGlzIGFydGljbGUsIHdlIHdpbGwgdHJ5IHRvIGxvb2sgYmV5b25kIHRoZSBoeXBlIGFuZCBoZWxwIHlvdSBhbnN3ZXIgdGhlIHF1ZXN0aW9uOiAmbHQ7c3Ryb25nJmd0O2RvIEkgYWN0dWFsbHkgbmVlZCBLdWJlcm5ldGVzPyZsdDsvc3Ryb25nJmd0OyZsdDsvcCZndDsKCiZsdDtoMiZndDtXaGF0IGRvZXMgS3ViZXJuZXRlcyBkbywgYW55d2F5PyZsdDsvaDImZ3Q7CiZsdDtwJmd0O0t1YmVybmV0ZXMgaXMgYW4gb3JjaGVzdHJhdGlvbiB0b29sIGZvciBjb250YWluZXJpemVkIGFwcGxpY2F0aW9ucy4gSXQgaXMgcmVzcG9uc2libGUgZm9yOiZsdDsvcCZndDsKCiZsdDt1bCZndDsKICAmbHQ7bGkmZ3Q7RGVwbG95aW5nIGltYWdlcyBhbmQgY29udGFpbmVycyZsdDsvbGkmZ3Q7CiAgJmx0O2xpJmd0O01hbmFnaW5nIHRoZSBzY2FsaW5nIG9mIGNvbnRhaW5lcnMgYW5kIGNsdXN0ZXJzJmx0Oy9saSZndDsKICAmbHQ7bGkmZ3Q7UmVzb3VyY2UgYmFsYW5jaW5nIGNvbnRhaW5lcnMgYW5kIGNsdXN0ZXJzJmx0Oy9saSZndDsKICAmbHQ7bGkmZ3Q7VHJhZmZpYyBtYW5hZ2VtZW50IGZvciBzZXJ2aWNlcyZsdDsvbGkmZ3Q7CiZsdDsvdWwmZ3Q7CgombHQ7cCZndDtLdWJlcm5ldGVzIHJlYWxseSBzaGluZXMgd2hlbiB5b3VyIGFwcGxpY2F0aW9uIGNvbnNpc3RzIG9mIG11bHRpcGxlIHNlcnZpY2VzIHJ1bm5pbmcgaW4gZGlmZmVyZW50IGNvbnRhaW5lcnMuIEZvciBhIG1vbm9saXRoaWMgYXBwbGljYXRpb24gd2l0aCBhIHN0YXRpYyB1c2VyIGJhc2UsIHRoaXMgbWF5IGJlIG1vcmUgdGhhbiBuZWNlc3NhcnkuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7VGhlIHRhc2sgb2YgYnVpbGRpbmcsIHRlc3RpbmcgYW5kIGRlbGl2ZXJpbmcgeW91ciBhcHBsaWNhdGlvbiB0byBhIGNvbnRhaW5lciByZWdpc3RyeSBpcyBub3QgcGFydCBvZiBLdWJlcm5ldGVzLiBIZXJlLCBDSS9DRCB0b29scyBmb3IgYnVpbGRpbmcgYW5kIHRlc3RpbmcgYXBwbGljYXRpb25zIGRvIHRoZSBqb2IuIEt1YmVybmV0ZXMsIGFzIGEgcGFydCBvZiBhICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy93aGF0LWlzLWEtY2ktY2QtcGlwZWxpbmUvJnF1b3Q7Jmd0O0NJL0NEIHBpcGVsaW5lJmx0Oy9hJmd0OywgdGhlbiBoZWxwcyB5b3UgZGVwbG95IGNoYW5nZXMgdG8gcHJvZHVjdGlvbiB3aXRob3V0IGFueSBkb3dudGltZS4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7SW1wcm92ZSB5b3VyIG1vbm9saXRoJmx0Oy9oMiZndDsKJmx0O3AmZ3Q7TW9zdCBhcHBsaWNhdGlvbnMgc3RhcnQgdGhlaXIgbGlmZSBhcyBhIG1vbm9saXRoLCBhbmQgdGhpcyBpcyBncmVhdCEgV2l0aCBhbiBlbnRpcmUgYXBwbGljYXRpb24gaW4gb25lIHBsYWNlLCBpdCBpcyBxdWljayBhbmQgZWFzeSB0byBtYWtlIGFuZCBkZXBsb3kgY2hhbmdlcy4gQnV0IGlmIHlvdXIgYXBwIGZpbmRzIHN1Y2Nlc3MgYW5kIGdyb3dzLCB5b3Ugd2lsbCBzb29uIG5lZWQgdG8gZmluZCB3YXlzIHRvIHNjYWxlIGl0LiZsdDsvcCZndDsKCiZsdDtwJmd0O0RvZXMgdGhhdCBtZWFuIGl0IGlzIHRpbWUgZm9yIEt1YmVybmV0ZXM/IFByb2JhYmx5IG5vdC4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtJdCBpcyB0ZW1wdGluZyB0byB0aGluayB0aGF0IG9ubHkgbWljcm9zZXJ2aWNlcyBvcmNoZXN0cmF0ZWQgdmlhIEt1YmVybmV0ZXMgY2FuIHNjYWxlIOKAlCB5b3XigJlsbCByZWFkIGEgbG90IG9mIHRoaXMgb24gdGhlIGludGVybmV0LiBCdXQgc2NhbGluZyBpcyB1c3VhbGx5IG1vcmUgYWJvdXQgdGhlIGFwcGxpY2F0aW9u4oCZcyBpbnRlcm5hbHMgdGhhbiBhYm91dCB0aGUgaGlnaC1sZXZlbCBhcmNoaXRlY3R1cmUgYW5kIHRvb2xpbmcuIEZvciBpbnN0YW5jZSwgeW91IGNhbiBzY2FsZSBhIG1vbm9saXRoIGJ5IGRlcGxveWluZyBtdWx0aXBsZSBpbnN0YW5jZXMgd2l0aCBhIGxvYWQgYmFsYW5jZXIgdGhhdCBzdXBwb3J0cyBhZmZpbml0eSBmbGFncy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7c3Ryb25nJmd0O0EgcHJhY3RpY2FsIGZpcnN0IHN0ZXAgdG8gY29uc2lkZXIgd2hlbiBzY2FsaW5nIGFuIGFwcGxpY2F0aW9uIGlzICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy9ob3ctdG8tdGVzdC1zb2Z0d2FyZS1wYXJ0LWlpLXRkZC1hbmQtYmRkLyZxdW90OyZndDtUZXN0IERyaXZlbiBEZXZlbG9wbWVudCAoVEREKSZsdDsvYSZndDsmbHQ7L3N0cm9uZyZndDssIHdoaWNoIGVuc3VyZXMgcXVhbGl0eSBhbmQgcHJldmVudHMgZGVmZWN0cyBhcyB5b3VyIGFwcGxpY2F0aW9uIGdyb3dzLiBXaGlsZSBzbWFsbGVyIG1vZHVsZXMgb3Igc2VydmljZXMgYXJlIGVhc2llciB0byB0ZXN0LCB0aGUgbW9kdWxhcml0eSBhbHNvIG1lYW5zIGluY3JlYXNlZCBkZW1hbmQgZm9yICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy9ob3ctdG8tdGVzdC1zb2Z0d2FyZS1wYXJ0LWktbW9ja2luZy1zdHViYmluZy1hbmQtY29udHJhY3QtdGVzdGluZy8mcXVvdDsmZ3Q7bW9ja2luZyZsdDsvYSZndDssIGFzIHdlbGwgYXMgYWRkaXRpb25hbCB0b29saW5nIHRvIGNvbmZpZ3VyZSBhbmQgbWFpbnRhaW4uIEdvb2QgdGVzdGluZyBtYWtlcyBpdCBlYXNpZXIgdG8gYnVpbGQgYW5kIHNjYWxlIHlvdXIgYXBwbGljYXRpb24gY29uZmlkZW50bHkuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7QXMgeW91IHN0YXJ0IHRvIHNjYWxlIG91dCBhIG1vbm9saXRoLCBjb25maWd1cmF0aW9uIG1hbmFnZW1lbnQgdG9vbHMgbGlrZSBDaGVmIGFuZCBBbnNpYmxlIGNvbWUgaW4gaGFuZHkuIFlvdSBjYW4gdXNlIHRoZW0gdG8gYXV0b21hdGljYWxseSBjb25maWd1cmUgbmV3IHNlcnZlcnMgdG8gZW5zdXJlIHRoZXkgYXJlIHJlYWR5IHRvIHJ1biB5b3VyIGFwcGxpY2F0aW9uLiBZb3UgY2FuIGV2ZW4gZ28gYSBzdGVwIGZ1cnRoZXIgYW5kIHVzZSBhIHRvb2wgbGlrZSAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vd3d3LnRlcnJhZm9ybS5pby8mcXVvdDsmZ3Q7VGVycmFmb3JtJmx0Oy9hJmd0OyB0byBoZWxwIHByb3Zpc2lvbiBuZXcgc2VydmVyIFZNcywgc28gdGhhdCB5b3Ugd29u4oCZdCBoYXZlIHRvIGNyZWF0ZSB0aGVtIG1hbnVhbGx5LiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7V2hlbiBvdGhlciBwYXJ0cyBvZiB5b3VyIGFwcGxpY2F0aW9uIGJlY29tZSBhIGJvdHRsZW5lY2sg4oCUIGZvciBleGFtcGxlLCB0aGUgZGF0YWJhc2Ug4oCUIHlvdSBtYXkgc2NhbGUgdGhvc2UsIHRvby4mbHQ7L3N0cm9uZyZndDsgVmFyaW91cyBwYXR0ZXJucyBhbGxvdyBhcHBsaWNhdGlvbnMgdG8gc2NhbGUgZXZlbiB0aG91Z2ggdGhleSBhcmUsIGJ5IGRlc2lnbiwgbm90IHZlcnkgc2NhbGFibGUuIEZvciBleGFtcGxlLCBpZiB5b3VyIGRhdGFiYXNlIGJlY29tZXMgYSBib3R0bGVuZWNrLCB5b3UgY2FuIG1vdmUgZnJlcXVlbnRseS1hY2Nlc3NlZCBkYXRhIHRvIGEgaGlnaC1wZXJmb3JtYW5jZSBpbi1tZW1vcnkgZGF0YSBzdG9yZSwgbGlrZSBSZWRpcywgdG8gcmVkdWNlIGxvYWQgb24geW91ciBkYXRhYmFzZS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtObyBtYXR0ZXIgd2hhdCBjb25maWd1cmF0aW9uIG1hbmFnZW1lbnQgYW5kIHByb3Zpc2lvbmluZyB0b29scyB5b3UgdXNlLCBhIGdvb2QgQ0kvQ0QgcGlwZWxpbmUgaXMgYSBtdXN0LiBZb3UgbWlnaHQgaGF2ZSBjb3BpZWQgYSAuemlwIGZpbGUgdG8geW91ciBzZXJ2ZXIgdmlhIEZUUCB0aGUgZmlyc3QgdGltZSB5b3UgZGVwbG95ZWQgeW91ciBhcHAsIGJ1dCB0aGF0IGFwcHJvYWNoIGRvZXMgJmx0O2kmZ3Q7bm90Jmx0Oy9pJmd0OyBzY2FsZS4gQSBzdHJlYW1saW5lZCBDSS9DRCBwaXBlbGluZSBlbnN1cmVzIHRoYXQgeW91ciBhcHBsaWNhdGlvbiBnZXRzIGJ1aWx0LCB0ZXN0ZWQgYW5kIGRlcGxveWVkIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgYW55IGV4dHJhIHdvcmsgZnJvbSB5b3Ugb3IgeW91ciB0ZWFtLiZsdDsvcCZndDsKCiZsdDtwJmd0O1RvZ2V0aGVyLCB0aGVzZSBwcmFjdGljZXMgd2lsbCBtYWtlIHlvdXIgbGlmZSBlYXNpZXIgaWYgeW91ICZsdDtpJmd0O2RvJmx0Oy9pJmd0OyBldmVudHVhbGx5IG5lZWQgS3ViZXJuZXRlcy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtZb3UgY2FuIGV2ZW4gYXV0by1zY2FsZSBtb25vbGl0aGljIGFwcGxpY2F0aW9ucyB1c2luZyBjbG91ZCBzZXJ2aWNlcyBsaWtlIEFXUyBFbGFzdGljIEJlYW5zdGFsaywgR29vZ2xlIEFwcCBFbmdpbmUsIG9yIEF6dXJlIEFwcCBTZXJ2aWNlLiBUaGVzZSBhbGwgaW1wb3NlIGZhciBsZXNzIGFkbWluaXN0cmF0aXZlIG92ZXJoZWFkIHRoYW4gS3ViZXJuZXRlcywgYW5kIHRoZXkgYWxsIHBsYXkgbmljZWx5IHdpdGggQ0kvQ0QgdG9vbHMuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O3N0cm9uZyZndDtXaGVuIHdvcmtpbmcgd2l0aCBhIG5ldyBhcHBsaWNhdGlvbiwgZm9jdXMgb24gZGV2ZWxvcGluZyB0aGUgYmVzdCBhcHBsaWNhdGlvbiBwb3NzaWJsZS4mbHQ7L3N0cm9uZyZndDsgRXZlbnR1YWxseSwgYSBjb21wbGV4IHRvb2wgbGlrZSBLdWJlcm5ldGVzIG1heSBiZSB0aGUgcmlnaHQgc29sdXRpb24gZm9yIG1hbmFnaW5nIGluZnJhc3RydWN0dXJlIGZvciB5b3VyIGFwcGxpY2F0aW9uLiBBcyB5b3UgZ3JvdywgaG93ZXZlciwgbWFueSBvZiB0aGUgcHJhY3RpY2VzIHdl4oCZdmUganVzdCBkaXNjdXNzZWQgd2lsbCBiZSBtb3JlIHByYWN0aWNhbC4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7QXVnbWVudCB5b3VyIG1vbm9saXRoJmx0Oy9oMiZndDsKJmx0O3AmZ3Q7QXMgeW91ciBhcHBsaWNhdGlvbiBjb250aW51ZXMgdG8gZ3JvdywgeW91IHdpbGwgZXZlbnR1YWxseSByZWFjaCBhIHBvaW50IHdoZXJlIGNvbnRpbnVpbmcgdG8gYWRkIHRvIHRoZSBtb25vbGl0aCBzZWVtcyB1bnRlbmFibGUuIFRoaXMgaXMgb2Z0ZW4gYmVjYXVzZSB0aGUgYXBwIGlzIG5lYXIgdGhlIGxpbWl0IG9mIHdoYXQgYSBzaW5nbGUgZGV2IHRlYW0gY2FuIHdvcmsgb24uJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7QXQgdGhpcyBwb2ludCwgbWFueSB0ZWFtcyBjaG9vc2UgdG8gc3BsaXQgdXAgdGhlaXIgbW9ub2xpdGggYW5kIG1vdmUgZnVsbHkgaW50byBtaWNyb3NlcnZpY2VzLiBXaGlsZSB0aGlzIGlzIGEgcmF0aGVyIHBvcHVsYXIgZGVjaXNpb24sIGl0IGlzIG5laXRoZXIgYSBuZWNlc3Nhcnkgb25lIG5vciBhIHNpbHZlciBidWxsZXQuIENvbnNpZGVyIHN0YXJ0aW5nIG91dCBieSBhZGRpbmcgc2VydmljZXMgdGhhdCBhdWdtZW50IHlvdXIgbW9ub2xpdGggaW5zdGVhZCBvZiByZXBsYWNpbmcgaXQuIFNvbWUgb2YgdGhlc2Ugc3VwcG9ydCBzZXJ2aWNlcyBtYXkgYWN0dWFsbHkgYmUgbWljcm9zZXJ2aWNlcyDigJQgc28geW91IGNhbiBiZW5lZml0IGZyb20gdXNpbmcgc21hbGwgc2VydmljZXMgd2hlcmUgaXQgbWFrZXMgc2Vuc2UsIHdoaWxlIHN0aWxsIGxldmVyYWdpbmcgdGhlIGJlbmVmaXRzIG9mIHlvdXIgbW9ub2xpdGguJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7RXZlbiB3aGVuIGludHJvZHVjaW5nIHNlcnZpY2VzIGFuZCBtaWNyb3NlcnZpY2VzLCB5b3UgbWF5IG5vdCBuZWVkIG9yIHdhbnQgdG8gc3RhcnQgd2l0aCBLdWJlcm5ldGVzLiBLdWJlcm50ZXMgZXhjZWxzIGF0IHJ1bm5pbmcgYW5kIHNjYWxpbmcgcG9kcyBvZiByZWxhdGVkIHNlcnZpY2UgYW5kIG1pY3Jvc2VydmljZSBjb250YWluZXJzLiBIb3dldmVyLCB0aGVyZSBhcmUgYXNwZWN0cyBvZiBhZG9wdGluZyBLdWJlcm5ldGVzIHRoYXQgYXJlIGVhc3kgdG8gb3Zlcmxvb2sgYXQgZmlyc3QuIEZvciBleGFtcGxlLCBLdWJlcm5ldGVzIGRvZXMgbm90IGluY2x1ZGUgcm9idXN0IGJ1aWx0LWluIHRvb2xzIGZvciBzZWN1cmluZyBwb2RzLCBub2RlcyBhbmQgY2x1c3RlcnMsIGFuZCBkZXBsb3lpbmcgS3ViZXJuZXRlcyBjbHVzdGVycyBhY3Jvc3MgYSBtdWx0aS1jbG91ZCBlbnZpcm9ubWVudCBjYW4gYWRkIGEgbG90IG9mIGNvbXBsZXhpdHkuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7U3RhcnRpbmcgd2l0aCBhIHNpbmdsZS1jbG91ZCBwbGF0Zm9ybSBsaWtlIEF6dXJlIFNlcnZpY2UgRmFicmljIGFuZCBBV1MgRmFyZ2F0ZSBtYXkgbWFrZSBpdCBlYXNpZXIgdG8gc3BpbiB1cCBhbmQgc2NhbGUgc2VydmljZXMsIHdpdGhvdXQgZm9yY2luZyB5b3UgdG8gdGFrZSBvbiBtYW5hZ2luZyBhIEt1YmVybmV0ZXMgY2x1c3Rlci4mbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7c3Ryb25nJmd0O0Fub3RoZXIgb3B0aW9uIGlzIHRvIGF2b2lkIHNlcnZpY2VzIHdpdGggbWFpbnRlbmFuY2Ugb3ZlcmhlYWQgYWx0b2dldGhlciBhbmQgb3B0IGZvciBGdW5jdGlvbnMgYXMgYSBTZXJ2aWNlIChGYWFTKSZsdDsvc3Ryb25nJmd0Oywgc3VjaCBhcyBBV1MgTGFtYmRhIG9yIEF6dXJlIEZ1bmN0aW9ucy4gRmFhUyBpcyBhIGdyZWF0IHdheSB0byBtaW5pbWl6ZSBwb3RlbnRpYWwgaW5mcmFzdHJ1Y3R1cmUgb3ZlcmhlYWQgd2hlbiBhZGRpbmcgc2VydmljZXMgdG8geW91ciBhcHBsaWNhdGlvbi4gTW9yZW92ZXIsIGEgS3ViZXJuZXRlcy1vcmNoZXN0cmF0ZWQgY2x1c3RlciDigJQgaWYgeW91IGV2ZW50dWFsbHkgbmVlZCBvbmUg4oCUIGNhbiBiZSBlbmhhbmNlZCB3aXRoIEZhYVMgY2FwYWJpbGl0aWVzLiBCeSBzdGFydGluZyB3aXRoIGEgbWl4dHVyZSBvZiBzZXJ2aWNlcyBhbmQgZnVuY3Rpb25zLCB0aGUgbWlncmF0aW9uIHRvIEt1YmVybmV0ZXMgaXMgbGVzcyBjb21wbGljYXRlZCB0aGFuIGl0IHNvdW5kcy4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7Tm8gbW9yZSBtb25vbGl0aCZsdDsvaDImZ3Q7CiZsdDtwJmd0O05vdyBpbWFnaW5lIHRoYXQgeW91ciBvcmlnaW5hbCBtb25vbGl0aGljIGFwcGxpY2F0aW9uIGhhcyBncm93biBzbyBtdWNoIHRoYXQgeW91IGNhbiBiYXJlbHkgc2VlIHRoZSBvcmlnaW5hbCBtb25vbGl0aC4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtJdHMgbmVlZHMgYW5kIGl0cyB1c2VyYmFzZSBoYXZlIGdyb3duIHNvIGZhciBhbmQgc28gZmFzdCB0aGF0IHlvdSBub3cgaGF2ZSBhIHdpZGUgdmFyaWV0eSBvZiBoZWxwZXIgc2VydmljZXMsIG1hbnkgb2Ygd2hpY2ggbmVlZCB0byB0YWxrIHRvIGVhY2ggb3RoZXIuIFlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgc2VydmljZXMgdGhhdCBkZXBlbmQgb24gZWFjaCBvdGhlciBhcmUgYWx3YXlzIHJ1bm5pbmcgYW5kIHZpc2libGUgdG8gZWFjaCBvdGhlci4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtJbiBhZGRpdGlvbiwgeW91ciBjdXN0b21lcnMgYXJlIGRlbWFuZGluZyB0aGUga2luZCBvZiB1cHRpbWUgYW5kIHJlbGlhYmlsaXR5IHRoYXQgbWFrZSB5b3UgY29uc2lkZXIgcnVubmluZyBhY3Jvc3MgbXVsdGlwbGUgYXZhaWxhYmlsaXR5IHpvbmVzLCBwb3NzaWJseSBldmVuIGFjcm9zcyBtdWx0aXBsZSBjbG91ZCB2ZW5kb3JzLiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7VGhpcyBpcyB0aGUgcG9pbnQgYXQgd2hpY2ggeW91IHByb2JhYmx5IG5lZWQgYW4gb3JjaGVzdHJhdG9yIGxpa2UgS3ViZXJuZXRlcy4mbHQ7L3N0cm9uZyZndDsgSXQgbGV0cyB5b3UgZWFzaWx5IGRlZmluZSB0aGUgbW9kdWxlcyAoUG9kcykgb2YgcmVsYXRlZCBzZXJ2aWNlcyBhbmQgbGV0cyB5b3UgYXV0b21hdGljYWxseSBzY2FsZSB0aGVtIGFuZCBsb2FkLWJhbGFuY2UgYmV0d2VlbiB0aGVtLiZsdDsvcCZndDsKCiZsdDtwJmd0O0ZvciBLdWJlcm5ldGVzIHRvIGJlIHVzZWZ1bCwgaGVyZSBpcyB3aGF0IGl0IHdvdWxkIHJlcXVpcmU6Jmx0Oy9wJmd0OwoKJmx0O3VsJmd0OwogICZsdDtsaSZndDtZb3UgYXJlIHdpbGxpbmcgdG8gb3BlcmF0ZSBhIGNvdXBsZSBvZiB2aXJ0dWFsIG1hY2hpbmVzJmx0Oy9saSZndDsKICAmbHQ7bGkmZ3Q7WW91IGNhbiBhc3NpZ24gcGVvcGxlIHRvIGRvIGNvbmZpZ3VyYXRpb24gYW5kIG1haW50ZW5hbmNlIG9mIEt1YmVybmV0ZXMmbHQ7L2xpJmd0OwogICZsdDtsaSZndDtZb3UgaGF2ZSBtb3JlIHRoYW4gYSBzaW5nbGUgc2VydmljZSB0byB0YWtlIGNhcmUgb2YmbHQ7L2xpJmd0OwogICZsdDtsaSZndDtZb3UgbmVlZCB0byBhdXRvbWF0ZSAoYXMgbXVjaCBhcyBwb3NzaWJsZSkgYSBtb3N0bHkgaG9tb2dlbm91cyBzZXJ2aWNlIGRlcGxveW1lbnQmbHQ7L2xpJmd0OwogICZsdDtsaSZndDtZb3UgbmVlZCB0byBiZSBjbG91ZCAob3IgaG9zdGluZykgcHJvdmlkZXItYWdub3N0aWMmbHQ7L2xpJmd0OwombHQ7L3VsJmd0OwoKJmx0O3AmZ3Q7RnVydGhlcm1vcmUsIEt1YmVybmV0ZXMgaGFzIGJ1aWx0LWluIHN1cHBvcnQgZm9yIGhpZ2gtYXZhaWxhYmlsaXR5IChBbWF6b24gUkRTIE11bHRpLUFaKSAgZGVwbG95bWVudHMsIHdoaWNoIG1ha2VzIGl0IGVhc2llciB0byBpbmNyZWFzZSBhcHAgcmVsaWFiaWxpdHkgYW5kIGF2YWlsYWJpbGl0eS4gT2YgY291cnNlLCBpdCBkb2VzIGltcG9zZSBvdmVyaGVhZDogaXQgdGFrZXMgdGltZSBhbmQgZW5naW5lZXJpbmcgcmVzb3VyY2VzIHRvIGNyZWF0ZSBhbmQgbWFuYWdlIGNsdXN0ZXJzLCBkZWZpbmUgcG9kcywgYW5kIGNyZWF0ZSBjb250YWluZXJpemVkIGFwcHMgc3VpdGFibGUgZm9yIGRlcGxveW1lbnQgdG8gS3ViZXJuZXRlcy4gQnV0IGlmIHlvdXIgYXBwIGlzIGJpZyBlbm91Z2ggdG8gYmVuZWZpdCBmcm9tIEt1YmVybmV0ZXMsIHRoZSBhZG1pbmlzdHJhdGl2ZSBvdmVyaGVhZCBpcyB3b3J0aCBpdC4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7Q29uY2x1c2lvbiZsdDsvaDImZ3Q7CiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7S3ViZXJuZXRlcyBpcyBwb3dlcmZ1bCwgYnV0IHRoYXQgZG9lcyBub3QgbWVhbiBpdOKAmXMgdGhlIHJpZ2h0IGNob2ljZSBmb3IgZXZlcnkgdGVhbSBhbmQgZXZlcnkgYXBwLiZsdDsvc3Ryb25nJmd0OyBBcyB3aXRoIGFueSBwaWVjZSBvZiB0ZWNobm9sb2d5LCBpdCBpcyBtYWRlIHRvIHNvbHZlIGEgY2VydGFpbiBzZXQgb2YgcHJvYmxlbXMuIElmIHlvdSBhcmVu4oCZdCBmYWNpbmcgdGhlIHByb2JsZW1zIEt1YmVybmV0ZXMgYWltcyB0byBzb2x2ZSwgaXQgaXMgbW9yZSB0cm91YmxlIHRoYW4gaXTigJlzIHdvcnRoLiZsdDsvcCZndDsKCiZsdDtwJmd0O0RvbuKAmXQganVzdCBnaXZlIEt1YmVybmV0ZXMgYSBwbGFjZSBpbiB5b3VyIGluZnJhc3RydWN0dXJlIHRvb2xib3guIE1ha2UgS3ViZXJuZXRlcyBlYXJuIGl0LiBFc3BlY2lhbGx5IGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBuZXcgYXBwbGljYXRpb24uJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Rmlyc3QsIHVzZSBhdmFpbGFibGUgdG9vbHMgdG8gZ2V0IHRoZSBhcHAgb3V0IHF1aWNrbHkuIFdoZW4geW91ciBhcHBsaWNhdGlvbiByZWFjaGVzIGEgc3RhZ2Ugd2hlcmUgZGVwbG95bWVudCBhbmQgc2NhbGluZyBpcyBiZWNvbWluZyBhIGpvYiBvZiBpdHMgb3duLCBpdCBtYWtlcyBzZW5zZSB0byBzdGFydCB0aGlua2luZyBhYm91dCBvcmNoZXN0cmF0aW9uIOKAlCBhbmQsIHF1aXRlIG5hdHVyYWxseSwgS3ViZXJuZXRlcyBhcyB5b3VyIG9yY2hlc3RyYXRpb24gdG9vbC4gT25jZSB5b3UgYXJlIHJlYWR5LCBjaGVjayBvdXQgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL2dldHRpbmctc3RhcnRlZC13aXRoLWt1YmVybmV0ZXMtaG93LXRvLXNldC11cC15b3VyLWZpcnN0LWNsdXN0ZXIvJnF1b3Q7Jmd0O0dldHRpbmcgc3RhcnRlZCB3aXRoIEt1YmVybmV0ZXM6IGhvdyB0byBzZXQgdXAgeW91ciBmaXJzdCBjbHVzdGVyJmx0Oy9hJmd0Oy4mbHQ7L3AmZ3Q7CjwvZGVzY3JpcHRpb24+CiAgICAgICAgCiAgICAgIDwvaXRlbT4KICAgIAogICAgICAKICAgICAgPGl0ZW0+CiAgICAgICAgPHRpdGxlPkNJIHBpcGVsaW5lcyBmb3IgdGVzdGluZyBtaWNyb3NlcnZpY2VzIHdpdGggRGVwbG95SHViIGFuZCBDaXJjbGVDSTwvdGl0bGU+CiAgICAgICAgPGxpbms+aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy9jaS1waXBlbGluZXMtZm9yLXRlc3RpbmctbWljcm9zZXJ2aWNlcy88L2xpbms+CiAgICAgICAgPHB1YkRhdGU+VHVlLCAyMCBPY3QgMjAyMCAwODowMDowMCAtMDcwMDwvcHViRGF0ZT4KICAgICAgICA8Z3VpZCBpc1Blcm1hTGluaz0idHJ1ZSI+aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy9jaS1waXBlbGluZXMtZm9yLXRlc3RpbmctbWljcm9zZXJ2aWNlcy88L2d1aWQ+CiAgICAgICAgCiAgICAgICAgICA8ZGM6Y3JlYXRvcj5UcmFjeSBSYWdhbjwvZGM6Y3JlYXRvcj4KICAgICAgICAKICAgICAgICAKICAgICAgICAgIDxkZXNjcmlwdGlvbj4mbHQ7cCZndDtUZXN0aW5nIG1pY3Jvc2VydmljZXMgc2hvdWxkbuKAmXQgYmUgdGhhdCBkaWZmZXJlbnQgZnJvbSB0ZXN0aW5nIGEgbW9ub2xpdGhpYyBhcHBsaWNhdGlvbi4gSG93ZXZlciwgdGhlcmUgYXJlIHNvbWUgY2hhbGxlbmdlcyB3ZSBtdXN0IGFkZHJlc3MgdG8gbWFrZSB0aGlzIHRyYW5zaXRpb24gZWFzeS4gVGhlIHF1ZXN0aW9uIHRvIGFuc3dlciBpcywg4oCcaG93IGRvIHdlIHBlcmZvcm0gZnVuY3Rpb25hbCB0ZXN0cyBvbiBhIGRlY29tcG9zZWQgYXBwbGljYXRpb24/4oCdJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7QXMgd2UgbW92ZSBhd2F5IGZyb20gbW9ub2xpdGhpYyBwcmFjdGljZXMgYW5kIGludG8gYSBLdWJlcm5ldGVzIG1pY3Jvc2VydmljZSBlbnZpcm9ubWVudCwgd2UgbG9zZSB0aGUgY29uY2VwdCBvZiBhbiBhcHBsaWNhdGlvbiB2ZXJzaW9uLiBJbnN0ZWFkIHdlIGFyZSBmYWNlZCB3aXRoIGxvdHMgb2YgbG9vc2VseS1jb3VwbGVkLCBpbmRlcGVuZGVudCBmdW5jdGlvbnMgd2l0aCBSRVNUZnVsIEFQSXMuIFdoaWxlIHRoZSBjb25jZXB0IG9mIEFQSSBjb250cmFjdCB0ZXN0aW5nIGFwcGxpZXMgYXQgdGhlIHVuaXQgdGVzdGluZyBsZXZlbCwgd2UgaGF2ZSB3b3JrIHRvIGRvIHRvIHB1bGwgdG9nZXRoZXIgb3VyIGZ1bmN0aW9uYWwgdGVzdGluZyBoYXJuZXNzLiZsdDsvcCZndDsKCiZsdDtoMiZndDtUZXN0aW5nIG1pY3Jvc2VydmljZXMgYXQgYSBmdW5jdGlvbmFsIGxldmVsJmx0Oy9oMiZndDsKCiZsdDtwJmd0O1VuaXQgdGVzdGluZyBpbmRpdmlkdWFsIEFQSXMgb3IgbWljcm9zZXJ2aWNlcyBkb2VzIG5vdCB2YWxpZGF0ZSB0aGUgcmVhZGluZXNzIG9mIGEgZnVsbCBhcHBsaWNhdGlvbiByZWxlYXNlLiBGb3IgdGhpcyByZWFzb24sIHdlIGNhbiBub3QgZWxpbWluYXRlIHRoZSBmdW5jdGlvbmFsIHRlc3RpbmcgcHJvY2VzcyBlbnRpcmVseS4gSWYgd2UgZG8sIHdlIHJpc2sgbWlzc2luZyBzaXR1YXRpb25zIHdoZXJlIG9uZSBtaWNyb3NlcnZpY2UgaXMgdXNpbmcgYW4gb2xkZXIgdmVyc2lvbiBvZiBhbm90aGVyIG1pY3Jvc2VydmljZSwgYW5kIHRoYXQgY2F1c2VzIGFuIGFkdmVyc2UgaW1wYWN0LiBUaGlzIGxldmVsIG9mIGFub21hbHkgY2FuIG9ubHkgYmUgZm91bmQgd2hlbiB3ZSBwZXJmb3JtIGZ1bmN0aW9uYWwgdGVzdGluZyBvbiB0aGUgYXBwbGljYXRpb24gYXMgYSBjb21wbGV0ZSBwcm9kdWN0LiZsdDsvcCZndDsKCiZsdDtwJmd0O0luIG1vbm9saXRoaWMgZW52aXJvbm1lbnRzLCB0aGUgYXBwbGljYXRpb24gdmVyc2lvbiBpcyBvdXIgcmVsZWFzZSBjYW5kaWRhdGUuIEEgbmV3IHJlbGVhc2UgY2FuZGlkYXRlIGluaXRpYXRlcyB0aGUgd29yayBkb25lIGJ5IG91ciBmdW5jdGlvbmFsIHRlc3QgaGFybmVzcywgd2hpY2ggaW4gbWFueSBjYXNlcyBsYWdzIGJlaGluZCB0aGUgZGV2ZWxvcG1lbnQgc3ByaW50cyB0aGF0IHBlcmZvcm0gdW5pdCB0ZXN0aW5nIG9uIHRoZSBBUEkgY29udHJhY3RzLiBXaGlsZSBkZXZlbG9wbWVudCB0ZWFtcyBtYXkgbWFrZSBpbmNyZW1lbnRhbCBjb2RpbmcgY2hhbmdlcywgZnVuY3Rpb25hbCB0ZXN0aW5nIGlzIGJhc2VkIG9uIGEgZnVsbCByZWxlYXNlIGNhbmRpZGF0ZSwgYW5kIHRoZSByZWxlYXNlIG9mIHRoYXQgY2FuZGlkYXRlIGNhdXNlcyB0aGUgZXhlY3V0aW9uIG9mIGFuIGVudGlyZWx5IGRpZmZlcmVudCBzZXQgb2YgbGlua2VkIHRlc3QgY2FzZXMuIFdoZW4gdGVzdGluZyBtaWNyb3NlcnZpY2VzLCB0aGlzIGxldmVsIG9mIGZ1bmN0aW9uYWwgdGVzdGluZyBpcyBzdGlsbCByZXF1aXJlZCBhbmQgY3JpdGljYWwuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7SWRlYWxseSwgd2Ugd2FudCB0byBsZWF2ZSBvdXIgZnVuY3Rpb25hbCB0ZXN0aW5nIGluIHBsYWNlIGV2ZW4gd2hlbiBvdXIgYXBwbGljYXRpb24gaXMgYnVpbHQgb24gYSBzZXQgb2YgbG9vc2VseSBjb3VwbGVkIHNlcnZpY2VzLiBUbyBkbyB0aGlzLCB3ZSBuZWVkIHZpc2liaWxpdHkgaW50byB0aGUgbG9naWNhbCBhcHBsaWNhdGlvbiB2ZXJzaW9uLiBJbiBvcmRlciB0byByZW1haW4gZWZmaWNpZW50IGF0IHRoZSBmdW5jdGlvbmFsIHRlc3RpbmcgbGV2ZWwsIHdlIG5lZWQgc29tZSBpbnNpZ2h0cyBpbnRvIHdoYXQgaGFzIGNoYW5nZWQgYmV0d2VlbiB0d28gYXBwbGljYXRpb24gdmVyc2lvbnMsIGFsbG93aW5nIHRoZSBmdW5jdGlvbmFsIHRlc3RpbmcgdG8gYmUgdGFyZ2V0ZWQuIFdoYXQgd2Ugd2FudCB0byBhdm9pZCBpcyBjb25zdGFudGx5IHJldGVzdGluZyBldmVyeXRoaW5nIHNpbXBseSBiZWNhdXNlIHdlIGhhdmUgbm8gcmVmZXJlbmNlIGFzIHRvIHdoaWNoIG1pY3Jvc2VydmljZSBjYXVzZWQgYSBuZXcgcmVsZWFzZSBvZiB0aGUgYXBwbGljYXRpb24gdmVyc2lvbi4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7UmUtaW1hZ2luaW5nIGNvbnRpbnVvdXMgaW50ZWdyYXRpb24mbHQ7L2gyJmd0OwombHQ7cCZndDtJbiBtb25vbGl0aGljIGVudmlyb25tZW50cywgd2UgcmVseSBvbiBvdXIgYXBwbGljYXRpb24gYnVpbGQgKGNvbXBpbGUvbGluaykgdG8gY3JlYXRlIGEgbmV3IHZlcnNpb24gb2YgdGhlIGFwcGxpY2F0aW9uLCBjcmVhdGluZyBhIG5ldyByZWxlYXNlIGNhbmRpZGF0ZS4gVGhpcyBuZXcgdmVyc2lvbiBpcyB0aGVuIHB1c2hlZCB0byB0aGUgdGVzdGluZyB0ZWFtIHRvIGV4ZWN1dGUgYSBmdW5jdGlvbmFsIHRlc3QuIFdpdGggbWljcm9zZXJ2aWNlcywgdGhpcyBidWlsZCBnb2VzIGF3YXkuIEluc3RlYWQsIG91ciBidWlsZCB0YWtlcyBhIHNpbmdsZSBtaWNyb3NlcnZpY2UgYW5kIGJ1aWxkcyBhIG5ldyBjb250YWluZXIgaW1hZ2UuIFRoYXQgY29udGFpbmVyIGltYWdlIGlzIHRoZW4gcHVzaGVkIHVwIHRvIGEgY29udGFpbmVyIHJlZ2lzdHJ5LiBOb3cgd2UgaGF2ZSBhIG5ldyBtaWNyb3NlcnZpY2UgcmVsZWFzZSBjYW5kaWRhdGUsIHdoaWNoIGluIHR1cm4gY3JlYXRlZCBhIG5ldyBhcHBsaWNhdGlvbiB2ZXJzaW9uIHJlbGVhc2UgY2FuZGlkYXRlLiBXZWxjb21lIHRvIHlvdXIgbmV3ICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9jaXJjbGVjaS5jb20vY29udGludW91cy1pbnRlZ3JhdGlvbi8mcXVvdDsmZ3Q7Y29udGludW91cyBpbnRlZ3JhdGlvbiZsdDsvYSZndDsgcHJvY2Vzcy4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7VGVzdGluZyBtaWNyb3NlcnZpY2VzJmx0Oy9oMiZndDsKJmx0O3AmZ3Q7Jmx0O2EgaHJlZj0mcXVvdDtodHRwczovL3d3dy5kZXBsb3lodWIuY29tLyZxdW90OyZndDtEZXBsb3lIdWImbHQ7L2EmZ3Q7IHJlc3VycmVjdHMgdGhlIGFwcGxpY2F0aW9uIHZlcnNpb24gaW4gYSBtaWNyb3NlcnZpY2VzIGltcGxlbWVudGF0aW9uIHRvIHN1cHBvcnQgeW91ciBmdW5jdGlvbmFsIHRlc3RpbmcuIEl0IGRvZXMgdGhpcyB1c2luZyBhdXRvbWF0ZWQgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50IHRoYXQgYXV0b21hdGljYWxseSBjcmVhdGVzIG5ldyBhcHBsaWNhdGlvbiB2ZXJzaW9ucyBlYWNoIHRpbWUgYSBuZXcgbWljcm9zZXJ2aWNlIGhhcyBiZWVuIHJlZ2lzdGVyZWQuIFNpbmNlIG1pY3Jvc2VydmljZXMgYXJlIHNoYXJlZCwgYSBuZXcgbWljcm9zZXJ2aWNlIHdpbGwgb2Z0ZW4gY3JlYXRlIG11bHRpcGxlIGFwcGxpY2F0aW9uIHJlbGVhc2UgY2FuZGlkYXRlcy4gRGVwbG95SHViIHRyYWNrcyB0aGUgbWljcm9zZXJ2aWNlIGltcGFjdCB0byBhbGwgY29uc3VtaW5nIGFwcGxpY2F0aW9ucy4gVGhpcyBpbXBhY3QgYW5hbHlzaXMgYWxsb3dzIERlcGxveUh1YiB0byB0aGVuIGluZm9ybSBDaXJjbGVDSSB0byBpbml0aWF0ZSB0ZXN0aW5nIHdvcmtmbG93cyBmb3IgbXVsdGlwbGUgYXBwbGljYXRpb25zLCBwcm92aWRpbmcgZGV0YWlscyBvbiBleGFjdGx5IHdoaWNoIG1pY3Jvc2VydmljZXMgY2F1c2VkIHRoZSBuZXcgYXBwbGljYXRpb24gcmVsZWFzZS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7aW1nIHNyYz0mcXVvdDsvYmxvZy9tZWRpYS8yMDIwLTEwLTE5LWRoMS5wbmcmcXVvdDsgYWx0PSZxdW90OyZxdW90OyAvJmd0OyZsdDsvcCZndDsKCiZsdDtoMiZndDtUaGUgRGVwbG95SHViIG9yYiZsdDsvaDImZ3Q7CiZsdDtwJmd0O1RoZSAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2RldmVsb3Blci9vcmJzL29yYi9kZXBsb3lodWIvZGVwbG95aHViLW9yYiZxdW90OyZndDtEZXBsb3lIdWIgb3JiJmx0Oy9hJmd0OyBpbnRlZ3JhdGVzIGludG8gQ2lyY2xlQ0kgdG8gcGVyZm9ybSBhdXRvbWF0ZWQgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50IGFzIHNvb24gYXMgYSBuZXcgY29udGFpbmVyIGhhcyBiZWVuIGNyZWF0ZWQgYW5kIHJlZ2lzdGVyZWQuIERlcGxveUh1YiB0aGVuIGF1dG9tYXRpY2FsbHkgaW5jcmVtZW50cyB0aGUgYXBwbGljYXRpb24gdmVyc2lvbiBvZiBhbGwgaW1wYWN0ZWQgYXBwbGljYXRpb25zLCBhbmQgcnVucyB0aGUgd29ya2Zsb3cgb2YgZWFjaC4gRGVwbG95SHViIHVzZXMgYSBrZXkgdmFsdWUgcGFpciBhdCB0aGUgYXBwbGljYXRpb24gbGV2ZWwgdG8gc3BlY2lmeSB0aGUgZGVmYXVsdCB0ZXN0aW5nIGVudmlyb25tZW50IGZvciBkZXBsb3ltZW50IGFuZCB0aGUgbmFtZSBvZiB0aGUgQ2lyY2xlQ0kgdGVzdGluZyBwaXBlbGluZSB0byBydW4gcG9zdCBkZXBsb3ltZW50LiBBZGRpdGlvbmFsbHksIERlcGxveUh1YiBwcm92aWRlcyBhbiBpbXBhY3QgYW5hbHlzaXMgdmlldyB0aGF0IHNob3dzLCBhdCBlYWNoIGFwcGxpY2F0aW9uIGxldmVsLCB3aGljaCBtaWNyb3NlcnZpY2UgaW5pdGlhdGVkIHRoZSBjaGFuZ2UuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0xMC0xOS1kaDIucG5nJnF1b3Q7IGFsdD0mcXVvdDsmcXVvdDsgLyZndDsmbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7U2VlIGl0IGluIGFjdGlvbiZsdDsvaDImZ3Q7CiZsdDtwJmd0O1dl4oCZdmUgbWFkZSBpdCBlYXN5IGZvciB5b3UuIENoZWNrIG91dCBvdXIgZGVtbyBvZiB0aGUgRGVwbG95SHViLUNpcmNsZUNJIGludGVncmF0aW9uLiZsdDsvcCZndDsKCiZsdDtkaXYgc3R5bGU9JnF1b3Q7dGV4dC1hbGlnbjogY2VudGVyJnF1b3Q7Jmd0OwogICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly95b3V0dS5iZS9FVHhLUEFwU2NJdyZxdW90OyZndDsKICAgICZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhL0NpcmNsZUNJK0RlcGxveUh1Yi5wbmcmcXVvdDsgYWx0PSZxdW90OyZxdW90OyAvJmd0OwogICZsdDsvYSZndDsKJmx0O2JyIC8mZ3Q7CgogICZsdDtwJmd0OwogICAgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL3lvdXR1LmJlL0VUeEtQQXBTY0l3JnF1b3Q7IHN0eWxlPSZxdW90O2NvbG9yOiMwMDAwRUU7JnF1b3Q7Jmd0OwogICAgICBXYXRjaCB0aGUgZnVsbCB2aWRlbyBoZXJlCiAgICAmbHQ7L2EmZ3Q7CiAgJmx0Oy9wJmd0OwombHQ7L2RpdiZndDsKCiZsdDtoMiZndDtDb25jbHVzaW9uJmx0Oy9oMiZndDsKJmx0O3AmZ3Q7VGVzdGluZyBtaWNyb3NlcnZpY2VzIGFuZCB0aGVpciBjb25zdW1pbmcgYXBwbGljYXRpb25zIGJlY29tZXMgbXVjaCBlYXNpZXIgd2l0aCBEZXBsb3lIdWIgaW50ZWdyYXRlZCBpbnRvIHlvdXIgQ2lyY2xlQ0kgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL3doYXQtaXMtYS1jaS1jZC1waXBlbGluZS8mcXVvdDsmZ3Q7cGlwZWxpbmVzJmx0Oy9hJmd0Oy4gVGVzdGluZyBiZWNvbWVzIGRyaXZlbiBieSBhbiBhdXRvbWF0ZWQgcHJvY2VzcyB0cmlnZ2VyZWQgYnkgYSByZWxlYXNlIGNhbmRpZGF0ZSBldmVudCwgaW4gbXVjaCB0aGUgc2FtZSB3YXkgYXMgd2UgZGlkIHdpdGggbW9ub2xpdGhpYyBlbnZpcm9ubWVudHMuIFlvdXIgZnVuY3Rpb25hbCB0ZXN0aW5nIHN1aXRlIHJlbWFpbnMgdW5jaGFuZ2VkIGFuZCBpbnNpZ2h0cyBzaG93IHlvdSB0aGUgaW1wYWN0IG9mIGEgc2luZ2xlIG1pY3Jvc2VydmljZSB1cGRhdGUgb24gYWxsIGFwcGxpY2F0aW9ucy4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7QWJvdXQgRGVwbG95SHViJmx0Oy9oMiZndDsKJmx0O3AmZ3Q7RGVwbG95SHViIGVtcG93ZXJzIG9yZ2FuaXphdGlvbnMgdG8gYWNoaWV2ZSBidXNpbmVzcyBhZ2lsaXR5IHRocm91Z2ggYSBtYW5hZ2VkIGFwcHJvYWNoIHRvIG1pY3Jvc2VydmljZXMuIERlcGxveUh1YiBlbGltaW5hdGVzIHRoZSBjb25mdXNpb24gYW5kIGNvbXBsZXhpdHkgY29tbW9uIHdpdGggbWljcm9zZXJ2aWNlcyBieSBwcm92aWRpbmcgYSBTYWFTIGNlbnRyYWxpemVkIHZpZXcgb2YgbWljcm9zZXJ2aWNlIHVzYWdlIGFuZCBzaGFyaW5nIGFjcm9zcyBjbHVzdGVycyBhbmQgdGVhbXMuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Rm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIHRvIHVzZSB0aGUgRGVwbG95SHViIENpcmNsZUNJIG9yYiwgZmluZCB1cyBvbiB0aGUgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9vcmJzL3JlZ2lzdHJ5L29yYi9kZXBsb3lodWIvZGVwbG95aHViLW9yYiZxdW90OyZndDtDaXJjbGVDSSBvcmIgcmVnaXN0cnkmbHQ7L2EmZ3Q7LiBZb3UgY2FuIGFsc28gbGVhcm4gbW9yZSBhYm91dCBEZXBsb3lIdWIgYXQgJmx0O2EgaHJlZj0mcXVvdDtodHRwOi8vd3d3LmRlcGxveWh1Yi5jb20mcXVvdDsmZ3Q7RGVwbG95SHViLmNvbSZsdDsvYSZndDsuIERlcGxveUh1YiBpcyBiYXNlZCBvbiB0aGUgJmx0O2EgaHJlZj0mcXVvdDtodHRwOi8vd3d3Lm9ydGVsaXVzLmlvJnF1b3Q7Jmd0O09ydGVsaXVzIE9wZW4gU291cmNlIFByb2plY3QmbHQ7L2EmZ3Q7LiZsdDsvcCZndDsKPC9kZXNjcmlwdGlvbj4KICAgICAgICAKICAgICAgPC9pdGVtPgogICAgCiAgICAgIAogICAgICA8aXRlbT4KICAgICAgICA8dGl0bGU+Q29udGludW91cyBpbnRlZ3JhdGlvbiBmb3IgQWRvbmlzIEFQSXM8L3RpdGxlPgogICAgICAgIDxsaW5rPmh0dHBzOi8vY2lyY2xlY2kuY29tL2Jsb2cvY29udGludW91cy1pbnRlZ3JhdGlvbi1mb3ItYWRvbmlzLWFwaXMvPC9saW5rPgogICAgICAgIDxwdWJEYXRlPkZyaSwgMTYgT2N0IDIwMjAgMDk6MDA6MDAgLTA3MDA8L3B1YkRhdGU+CiAgICAgICAgPGd1aWQgaXNQZXJtYUxpbms9InRydWUiPmh0dHBzOi8vY2lyY2xlY2kuY29tL2Jsb2cvY29udGludW91cy1pbnRlZ3JhdGlvbi1mb3ItYWRvbmlzLWFwaXMvPC9ndWlkPgogICAgICAgIAogICAgICAgICAgPGRjOmNyZWF0b3I+RmlrYXlvIEFkZXBvanU8L2RjOmNyZWF0b3I+CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgICA8ZGVzY3JpcHRpb24+Jmx0O3AmZ3Q7Jmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2Fkb25pc2pzLmNvbS8mcXVvdDsmZ3Q7QWRvbmlzLmpzJmx0Oy9hJmd0OyBpcyBvbmUgb2YgdGhlIGZhc3Rlc3QtZ3Jvd2luZyAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vbm9kZWpzLm9yZyZxdW90OyZndDtOb2RlLmpzJmx0Oy9hJmd0OyBmcmFtZXdvcmtzLiBBcyBzdGF0ZWQgb24gaXRzIGhvbWVwYWdlLCB0aGUgZnJhbWV3b3JrIGlzIGRlc2lnbmVkIGZvciBmYW5zIG9mICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy9ob3ctdG8tdGVzdC1zb2Z0d2FyZS1wYXJ0LWlpLXRkZC1hbmQtYmRkLyZxdW90OyZndDt0ZXN0LWRyaXZlbiBkZXZlbG9wbWVudCAoVEREKSZsdDsvYSZndDsuIEFzIGEgZmVhdHVyZSBvZiB0aGlzIGRlc2lnbiwgaXQgY29tZXMgYnVuZGxlZCB3aXRoIGEgc3BlY2lhbGl6ZWQgdGVzdGluZyBmcmFtZXdvcmsuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7SW4gdGhpcyB0dXRvcmlhbCwgeW91IHdpbGwgbGVhcm4gaG93IHRvIGF1dG9tYXRlIHRoZSB0ZXN0aW5nIG9mIGFuIEFkb25pcy5qcyBBUEkgc28gdGhhdCB5b3VyIHRlc3RzIHdpbGwgcnVuIG9uIGV2ZXJ5IGNoYW5nZSB0byB5b3VyIGNvZGViYXNlLiZsdDsvcCZndDsKCiZsdDtoMiZndDtQcmVyZXF1aXNpdGVzJmx0Oy9oMiZndDsKCiZsdDtwJmd0O1RvIGZvbGxvdyB0aGlzIHR1dG9yaWFsLCBhIGZldyB0aGluZ3MgYXJlIHJlcXVpcmVkOiZsdDsvcCZndDsKCiZsdDtvbCZndDsKICAmbHQ7bGkmZ3Q7QmFzaWMga25vd2xlZGdlIG9mIEphdmFzY3JpcHQmbHQ7L2xpJmd0OwogICZsdDtsaSZndDsmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vbm9kZWpzLm9yZyZxdW90OyZndDtOb2RlLmpzJmx0Oy9hJmd0OyBpbnN0YWxsZWQgb24geW91ciBzeXN0ZW0gKCZhbXA7Z3Q7PSA4LjApJmx0Oy9saSZndDsKICAmbHQ7bGkmZ3Q7Jmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2Fkb25pc2pzLmNvbS9kb2NzLzQuMS9pbnN0YWxsYXRpb24jX2luc3RhbGxpbmdfYWRvbmlzanMmcXVvdDsmZ3Q7QWRvbmlzLmpzIENMSSZsdDsvYSZndDsgaW5zdGFsbGVkIGdsb2JhbGx5Jmx0Oy9saSZndDsKICAmbHQ7bGkmZ3Q7QSAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL3NpZ251cC8mcXVvdDsmZ3Q7Q2lyY2xlQ0kmbHQ7L2EmZ3Q7IGFjY291bnQmbHQ7L2xpJmd0OwogICZsdDtsaSZndDtBICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9naXRodWIuY29tLyZxdW90OyZndDtHaXRIdWImbHQ7L2EmZ3Q7IGFjY291bnQmbHQ7L2xpJmd0OwombHQ7L29sJmd0OwoKJmx0O3AmZ3Q7V2l0aCBhbGwgdGhlc2UgaW5zdGFsbGVkIGFuZCBzZXQgdXAsIGxldOKAmXMgYmVnaW4gdGhlIHR1dG9yaWFsLiZsdDsvcCZndDsKCiZsdDtoMiZndDtDbG9uaW5nIHRoZSBBZG9uaXMuanMgQVBJIHByb2plY3QmbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7VG8gZ2V0IHN0YXJ0ZWQsIHlvdSBuZWVkIHRvIGNsb25lIHRoZSBBUEkgcHJvamVjdCB0aGF0IHdlIHdpbGwgYmUgdGVzdGluZy4gSW4geW91ciB0ZXJtaW5hbCwgcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBjbG9uZSB0aGUgYmFzZSBwcm9qZWN0OiZsdDsvcCZndDsKCiZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Jmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O3ByZSBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O2NvZGUmZ3Q7Z2l0IGNsb25lIC0tc2luZ2xlLWJyYW5jaCAtLWJyYW5jaCBiYXNlLXByb2plY3QgaHR0cHM6Ly9naXRodWIuY29tL0NJUkNMRUNJLUdXUC9hZG9uaXMtYXBpLXRlc3RpbmcuZ2l0CiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtwJmd0O1RoaXMgd2lsbCBpbW1lZGlhdGVseSBjbG9uZSB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7YmFzZS1wcm9qZWN0Jmx0Oy9jb2RlJmd0OyBicmFuY2ggb2YgdGhlIHJlcG9zaXRvcnkgaW50byB0aGUgbG9jYXRpb24gaW4gd2hpY2ggeW91IGhhdmUgcnVuIHRoZSBhYm92ZSBjb21tYW5kLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBvZiB0aGUgQVBJIHByb2plY3QuIEl0IGhhcyBubyB0ZXN0cyBzZXR1cC4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtOZXh0LCBnbyBpbnRvIHRoZSByb290IG9mIHRoZSBwcm9qZWN0IGFuZCBpbnN0YWxsIHRoZSByZXF1aXJlZCBkZXBlbmRlbmNpZXM6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDtjZCBhZG9uaXMtYXBpLXRlc3RpbmcKbnBtIGluc3RhbGwKJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7VGhlbiwgY3JlYXRlIGEgbmV3IGZpbGUgYXQgdGhlIHJvb3Qgb2YgdGhlIHByb2plY3Qgd2l0aCB0aGUgbmFtZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsuZW52Jmx0Oy9jb2RlJmd0OyAobm90ZSB0aGUgZG90ICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0Oy4mbHQ7L2NvZGUmZ3Q7KSwgYW5kIHBhc3RlIGluIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbjombHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0O0hPU1Q9MTI3LjAuMC4xClBPUlQ9MzMzMwpOT0RFX0VOVj1kZXZlbG9wbWVudApBUFBfTkFNRT1BZG9uaXNKcwpBUFBfVVJMPWh0dHA6Ly8ke0hPU1R9OiR7UE9SVH0KQ0FDSEVfVklFV1M9ZmFsc2UKQVBQX0tFWT1wZmk1TjJBQ040dE1KNWQ4ZDhCUEhmaDNGRXV2bGVlagpEQl9DT05ORUNUSU9OPXNxbGl0ZQpEQl9IT1NUPTEyNy4wLjAuMQpEQl9QT1JUPTMzMDYKREJfVVNFUj1yb290CkRCX1BBU1NXT1JEPQpEQl9EQVRBQkFTRT1hZG9uaXMKSEFTSF9EUklWRVI9YmNyeXB0CiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtwJmd0O1RoZSBhYm92ZSBjb25maWcgc3BlY2lmaWVzIHRoYXQgd2UgYXJlIGluIGEgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgYW5kIHRoYXQgd2Ugd2lsbCBiZSB1c2luZyBhICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O1NRbGl0ZSZsdDsvY29kZSZndDsgZGF0YWJhc2UgbmFtZWQgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7YWRvbmlzJmx0Oy9jb2RlJmd0OyBmb3IgcGVyc2lzdGVudCBzdG9yYWdlLiBUbyBnZXQgb3VyIGRhdGFiYXNlIGFuZCBkYXRhYmFzZSBzY2hlbWEgc2V0dXAsIHJ1biB0aGUgQWRvbmlzLmpzIHByb2plY3QgbWlncmF0aW9ucyB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZDombHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0O2Fkb25pcyBtaWdyYXRpb246cnVuCiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDgtMDItbWlncmF0aW9ucy1ydW4ucG5nJnF1b3Q7IGFsdD0mcXVvdDtNaWdyYXRpb25zIFJ1biZxdW90OyAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0O1dlIGhhdmUgbm93IGNvbXBsZXRlbHkgc2V0IHVwIG91ciBhcHBsaWNhdGlvbiBhbmQgY2FuIHRha2UgaXQgZm9yIGEgc3Bpbi4gQm9vdCB1cCB0aGUgYXBwbGljYXRpb24gYnkgcnVubmluZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDthZG9uaXMgc2VydmUgLS1kZXYKJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7VGhpcyBjb21tYW5kIHdpbGwgc3RhcnQgdGhlIEFQSSBydW5uaW5nIGF0ICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2h0dHA6Ly8xMjcuMC4wLjE6MzMzMyZsdDsvY29kZSZndDsuIFRoZSBwb3J0IG1pZ2h0IGJlIGRpZmZlcmVudCBpZiAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDszMzMzJmx0Oy9jb2RlJmd0OyBpcyBhbHJlYWR5IGluIHVzZSBvbiB5b3VyIHN5c3RlbS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtPdXIgQVBJIGlzIGEgc2ltcGxlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O1VzZXImbHQ7L2NvZGUmZ3Q7IGFjY291bnRzIEFQSS4gQXMgc2VlbiBpbiB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Li9zdGFydC9yb3V0ZXMuanMmbHQ7L2NvZGUmZ3Q7IGZpbGUsIGl0IGNvbnRhaW5zIHR3byBtYWluIGVuZHBvaW50cy4mbHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0Oy8vIHN0YXJ0L3JvdXRlcy5qcwoKJnF1b3Q7dXNlIHN0cmljdCZxdW90OzsKCmNvbnN0IFJvdXRlID0gdXNlKCZxdW90O1JvdXRlJnF1b3Q7KTsKClJvdXRlLmdldCgmcXVvdDsvJnF1b3Q7LCAoKSA9JmFtcDtndDsgewogIHJldHVybiB7IGdyZWV0aW5nOiAmcXVvdDtXZWxjb21lIHRvIHRoZSBBZG9uaXMgQVBJIHR1dG9yaWFsJnF1b3Q7IH07Cn0pOwoKLy9Vc2VyIGFwaSByb3V0ZXMKUm91dGUuZ3JvdXAoKCkgPSZhbXA7Z3Q7IHsKICBSb3V0ZS5wb3N0KCZxdW90O2NyZWF0ZSZxdW90OywgJnF1b3Q7VXNlckNvbnRyb2xsZXIuY3JlYXRlJnF1b3Q7KTsKCiAgUm91dGUucm91dGUoJnF1b3Q7Z2V0JnF1b3Q7LCAmcXVvdDtVc2VyQ29udHJvbGxlci5mZXRjaCZxdW90OywgWyZxdW90O0dFVCZxdW90OywgJnF1b3Q7UE9TVCZxdW90O10pOwp9KS5wcmVmaXgoJnF1b3Q7dXNlciZxdW90Oyk7CiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtwJmd0O1RoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtjcmVhdGUmbHQ7L2NvZGUmZ3Q7IHJvdXRlIGNhbGxzIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtjcmVhdGUmbHQ7L2NvZGUmZ3Q7IG1ldGhvZCBvZiAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtVc2VyQ29udHJvbGxlciZsdDsvY29kZSZndDsgdG8gY3JlYXRlIGEgbmV3IHVzZXIgYnkgc3VwcGx5aW5nIGl0IHdpdGggYSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDt1c2VybmFtZSZsdDsvY29kZSZndDssICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2VtYWlsJmx0Oy9jb2RlJmd0OywgYW5kICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O3Bhc3N3b3JkJmx0Oy9jb2RlJmd0Oy4gV2UgYWxzbyBoYXZlIGEgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Z2V0Jmx0Oy9jb2RlJmd0OyBlbmRwb2ludCB0aGF0IHNpbXBseSBjYWxscyB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7ZmV0Y2gmbHQ7L2NvZGUmZ3Q7IGZ1bmN0aW9uIG9mICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O1VzZXJDb250cm9sbGVyJmx0Oy9jb2RlJmd0OyB0byByZXR1cm4gYW4gYXJyYXkgb2YgdXNlcnMgaW4gdGhlIGRhdGFiYXNlLiBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlc2UgY29udHJvbGxlciBmdW5jdGlvbnMgY2FuIGJlIGZvdW5kIGluIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDthcHAvQ29udHJvbGxlcnMvSHR0cC9Vc2VyQ29udHJvbGxlci5qcyZsdDsvY29kZSZndDsgZmlsZSBzaG93biBiZWxvdy4mbHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0Oy8vIGFwcC9Db250cm9sbGVycy9IdHRwL1VzZXJDb250cm9sbGVyLmpzCgphc3luYyBjcmVhdGUoeyByZXF1ZXN0LCByZXNwb25zZSB9KSB7CiAgICBjb25zdCBkYXRhID0gcmVxdWVzdC5wb3N0KCk7CgogICAgY29uc3QgcnVsZXMgPSB7CiAgICAgICAgdXNlcm5hbWU6IGByZXF1aXJlZHx1bmlxdWU6JHtVc2VyLnRhYmxlfWAsCiAgICAgICAgZW1haWw6IGByZXF1aXJlZHx1bmlxdWU6JHtVc2VyLnRhYmxlfWAsCiAgICAgICAgcGFzc3dvcmQ6IGByZXF1aXJlZGAKICAgIH07CgogICAgY29uc3QgbWVzc2FnZXMgPSB7CiAgICAgICAgJnF1b3Q7dXNlcm5hbWUucmVxdWlyZWQmcXVvdDs6ICZxdW90O0EgdXNlcm5hbWUgaXMgcmVxdWlyZWQmcXVvdDssCiAgICAgICAgJnF1b3Q7dXNlcm5hbWUudW5pcXVlJnF1b3Q7OiAmcXVvdDtUaGlzIHVzZXJuYW1lIGlzIHRha2VuLiBUcnkgYW5vdGhlci4mcXVvdDssCiAgICAgICAgJnF1b3Q7ZW1haWwucmVxdWlyZWQmcXVvdDs6ICZxdW90O0FuIEVtYWlsIGlzIHJlcXVpcmVkJnF1b3Q7LAogICAgICAgICZxdW90O2VtYWlsLnVuaXF1ZSZxdW90OzogJnF1b3Q7RW1haWwgYWxyZWFkeSBleGlzdHMmcXVvdDssCiAgICAgICAgJnF1b3Q7cGFzc3dvcmQucmVxdWlyZWQmcXVvdDs6ICZxdW90O0EgcGFzc3dvcmQgZm9yIHRoZSB1c2VyJnF1b3Q7CiAgICB9OwoKICAgIGNvbnN0IHZhbGlkYXRpb24gPSBhd2FpdCB2YWxpZGF0ZShkYXRhLCBydWxlcywgbWVzc2FnZXMpOwoKICAgIGlmICh2YWxpZGF0aW9uLmZhaWxzKCkpIHsKICAgICAgICBjb25zdCB2YWxpZGF0aW9uX21lc3NhZ2VzID0gdmFsaWRhdGlvbi5tZXNzYWdlcygpLm1hcCgobXNnT2JqZWN0KSA9JmFtcDtndDsgewogICAgICAgICAgICByZXR1cm4gbXNnT2JqZWN0Lm1lc3NhZ2U7CiAgICAgICAgfSk7CgogICAgICAgIHJldHVybiByZXNwb25zZS5zdGF0dXMoNDAwKS5zZW5kKHsKICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsCiAgICAgICAgICAgIG1lc3NhZ2U6IHZhbGlkYXRpb25fbWVzc2FnZXMKICAgICAgICB9KTsKICAgIH0KCiAgICB0cnkgewogICAgICAgIGxldCBjcmVhdGVfdXNlciA9IGF3YWl0IFVzZXIuY3JlYXRlVXNlcihkYXRhKTsKCiAgICAgICAgbGV0IHJldHVybl9ib2R5ID0gewogICAgICAgICAgICBzdWNjZXNzOiB0cnVlLAogICAgICAgICAgICBkZXRhaWxzOiBjcmVhdGVfdXNlciwKICAgICAgICAgICAgbWVzc2FnZTogJnF1b3Q7VXNlciBTdWNjZXNzdWxseSBjcmVhdGVkJnF1b3Q7CiAgICAgICAgfTsKCiAgICAgICAgcmVzcG9uc2Uuc2VuZChyZXR1cm5fYm9keSk7CiAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgIExvZ2dlci5lcnJvcigmcXVvdDtFcnJvciA6ICZxdW90OywgZXJyb3IpOwogICAgICAgIHJldHVybiByZXNwb25zZS5zdGF0dXMoNTAwKS5zZW5kKHsKICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsCiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yLnRvU3RyaW5nKCkKICAgICAgICB9KTsKICAgIH0KfSAvL2NyZWF0ZQoKCmFzeW5jIGZldGNoKHsgcmVxdWVzdCwgcmVzcG9uc2UgfSkgewogICAgY29uc3QgZGF0YSA9IHJlcXVlc3QuYWxsKCk7CgogICAgdHJ5IHsKICAgICAgY29uc3QgdXNlcnMgPSBhd2FpdCBVc2VyLmdldFVzZXJzKGRhdGEpOwoKICAgICAgcmVzcG9uc2Uuc2VuZCh1c2Vycyk7CiAgICB9IGNhdGNoIChlcnJvcikgewogICAgICBMb2dnZXIuZXJyb3IoJnF1b3Q7RXJyb3IgOiAmcXVvdDssIGVycm9yKTsKICAgICAgcmV0dXJuIHJlc3BvbnNlLnN0YXR1cyg1MDApLnNlbmQoewogICAgICAgIHN1Y2Nlc3M6IGZhbHNlLAogICAgICAgIG1lc3NhZ2U6IGVycm9yLnRvU3RyaW5nKCksCiAgICAgIH0pOwogICAgfQp9IC8vZmV0Y2gKJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwoKJmx0O2gyJmd0O1Rlc3RpbmcgdGhlIEFQSSB3aXRoIFBvc3RtYW4mbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7TGV04oCZcyBub3cgcHV0IG91ciBBUEkgdG8gdGhlIHRlc3QgYnkgY2FsbGluZyBvdXIgZW5kcG9pbnRzLiBXZSB3aWxsIGJlIHVzaW5nICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly93d3cucG9zdG1hbi5jb20vJnF1b3Q7Jmd0O1Bvc3RtYW4mbHQ7L2EmZ3Q7IHRvIHRlc3Qgb3VyIGVuZHBvaW50cy4gTWFrZSBzdXJlIHRoYXQgeW91ciBhcHAgaXMgcnVubmluZy4gSWYgbm90LCBydW4gJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7YWRvbmlzIHNlcnZlIC0tZGV2Jmx0Oy9jb2RlJmd0OyBvbmNlIGFnYWluLiZsdDsvcCZndDsKCiZsdDtoMyZndDtUZXN0aW5nIHVzZXIgY3JlYXRpb24mbHQ7L2gzJmd0OwoKJmx0O3AmZ3Q7Jmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0wOC0wMi11c2VyLWNyZWF0aW9uLXN1Y2Nlc3MucG5nJnF1b3Q7IGFsdD0mcXVvdDtVc2VyIENyZWF0aW9uIC0gU3VjY2VzZnVsbCZxdW90OyAvJmd0OyZsdDsvcCZndDsKCiZsdDtoMyZndDtUZXN0aW5nIHVzZXIgZmV0Y2gmbHQ7L2gzJmd0OwoKJmx0O3AmZ3Q7Jmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0wOC0wMi11c2VyLWZldGNoLnBuZyZxdW90OyBhbHQ9JnF1b3Q7VXNlciBGZXRjaCZxdW90OyAvJmd0OyZsdDsvcCZndDsKCiZsdDtoMiZndDtTZXR0aW5nIHVwIHRoZSB0ZXN0aW5nIGZyYW1ld29yayZsdDsvaDImZ3Q7CgombHQ7cCZndDtUaGUgbmV4dCBzdGVwIGlzIHRvIHNldCB1cCB0aGUgdGVzdGluZyBmcmFtZXdvcmsgZm9yIHRlc3RpbmcgQWRvbmlzLmpzIGFwcGxpY2F0aW9ucy4gRm9ydHVuYXRlbHksIEFkb25pcy5qcyBoYXMgaXRzIG93biBzcGVjaWFsaXplZCB0ZXN0aW5nIHBhY2thZ2Uga25vd24gYXMgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AYWRvbmlzanMvdm93JnF1b3Q7Jmd0O1ZvdyZsdDsvYSZndDsuIEluc3RhbGwgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Vm93Jmx0Oy9jb2RlJmd0OyB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZDombHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0O2Fkb25pcyBpbnN0YWxsIEBhZG9uaXNqcy92b3cKJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7VGhlIGluc3RhbGxhdGlvbiBvZiB0aGlzIHBhY2thZ2Ugd2lsbCBjYXVzZSB0aGUgZm9sbG93aW5nIGNoYW5nZXMgdG8geW91ciBwcm9qZWN0OiZsdDsvcCZndDsKCiZsdDt1bCZndDsKICAmbHQ7bGkmZ3Q7QSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDt2b3dmaWxlLmpzJmx0Oy9jb2RlJmd0OyBmaWxlIHdpbGwgYmUgY3JlYXRlZCBhdCB0aGUgcm9vdCBvZiB5b3VyIHByb2plY3QuJmx0Oy9saSZndDsKICAmbHQ7bGkmZ3Q7QSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDt0ZXN0Jmx0Oy9jb2RlJmd0OyBmb2xkZXIgd2lsbCBiZSBjcmVhdGVkIGF0IHRoZSByb290IG9mIHRoZSBwcm9qZWN0LiBUaGlzIGlzIHdoZXJlIGFsbCBvZiB0aGUgdGVzdHMgd2lsbCBiZSBjb250YWluZWQuIEluIG9yZGVyIHRvIG9yZ2FuaXplIHRlc3RzLCBhbGwgdW5pdCB0ZXN0cyBhcmUgcGxhY2VkIGluc2lkZSBhICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O3VuaXQmbHQ7L2NvZGUmZ3Q7IGZvbGRlciB3aXRoaW4gdGhpcyBmb2xkZXIuIEZ1bmN0aW9uYWwgdGVzdHMgYXJlIHBsYWNlZCBpbnNpZGUgYSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtmdW5jdGlvbmFsJmx0Oy9jb2RlJmd0OyBmb2xkZXIuIEJ5IGRlZmF1bHQsIGEgc2FtcGxlIHVuaXQgdGVzdCBzdWl0ZSBpcyBjcmVhdGVkIGluc2lkZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDt0ZXN0L3VuaXQvZXhhbXBsZS5zcGVjLmpzJmx0Oy9jb2RlJmd0Oy4mbHQ7L2xpJmd0OwogICZsdDtsaSZndDtBICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0Oy5lbnYudGVzdGluZyZsdDsvY29kZSZndDsgZmlsZSBpcyBjcmVhdGVkIGF0IHRoZSByb290IG9mIHRoZSBwcm9qZWN0IHRvIGNvbnRhaW4gZW52aXJvbm1lbnQgdmFyaWFibGVzIHNwZWNpZmljIHRvIHRlc3RpbmcgcHVycG9zZXMuIFRoaXMgZmlsZSBnZXRzIG1lcmdlZCB3aXRoICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0Oy5lbnYmbHQ7L2NvZGUmZ3Q7LCBzbyB5b3Ugb25seSBuZWVkIHRvIGRlZmluZSB2YWx1ZXMgeW91IHdhbnQgdG8gb3ZlcnJpZGUgZnJvbSB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7LmVudiZsdDsvY29kZSZndDsgZmlsZS4mbHQ7L2xpJmd0OwombHQ7L3VsJmd0OwoKJmx0O3AmZ3Q7UmVwbGFjZSB0aGUgY29udGVudCBvZiAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsuZW52LnRlc3RpbmcmbHQ7L2NvZGUmZ3Q7IHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gYmVsb3c6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDtIT1NUPTEyNy4wLjAuMQpQT1JUPTQwMDAKTk9ERV9FTlY9dGVzdGluZwpBUFBfTkFNRT1BZG9uaXNKcwpBUFBfVVJMPWh0dHA6Ly8ke0hPU1R9OiR7UE9SVH0KQ0FDSEVfVklFV1M9ZmFsc2UKQVBQX0tFWT1wZmk1TjJBQ040dE1KNWQ4ZDhCUEhmaDNGRXV2bGVlagpEQl9DT05ORUNUSU9OPXNxbGl0ZQpEQl9IT1NUPTEyNy4wLjAuMQpEQl9QT1JUPTMzMDYKREJfVVNFUj1yb290CkRCX1BBU1NXT1JEPQpEQl9EQVRBQkFTRT1hZG9uaXMKSEFTSF9EUklWRVI9YmNyeXB0CiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtwJmd0O1RoZSBmaW5hbCBzdGVwIHRvIGNvbXBsZXRlIG91ciB0ZXN0IHNldHVwIGlzIHRvIGFkZCB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Vm93Jmx0Oy9jb2RlJmd0OyBwcm92aWRlciB0byBvdXIgcHJvamVjdC4gSW4gdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0Oy4vc3RhcnQvYXBwLmpzJmx0Oy9jb2RlJmd0OyBmaWxlLCBhZGQgdGhlIGZvbGxvd2luZyBpdGVtIHRvIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDthY2VQcm92aWRlcnMmbHQ7L2NvZGUmZ3Q7IGFycmF5OiZsdDsvcCZndDsKCiZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Jmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O3ByZSBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O2NvZGUmZ3Q7Li4uCgpjb25zdCBhY2VQcm92aWRlcnMgPSBbCiAgLi4uLiwKICAmcXVvdDtAYWRvbmlzanMvdm93L3Byb3ZpZGVycy9Wb3dQcm92aWRlciZxdW90OwpdOwoKLi4uCiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtwJmd0O1J1biB0aGUgc2FtcGxlIHRlc3QgdGhhdCBjYW1lIHdpdGggdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O1ZvdyZsdDsvY29kZSZndDsgaW5zdGFsbGF0aW9uIGJ5IHJ1bm5pbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kOiZsdDsvcCZndDsKCiZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Jmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O3ByZSBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O2NvZGUmZ3Q7YWRvbmlzIHRlc3QKJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7VGhlIHNhbXBsZSB0ZXN0IHdpbGwgcnVuIHN1Y2Nlc3NmdWxseS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7aW1nIHNyYz0mcXVvdDsvYmxvZy9tZWRpYS8yMDIwLTA4LTAyLXNhbXBsZS10ZXN0LnBuZyZxdW90OyBhbHQ9JnF1b3Q7U2FtcGxlIFRlc3RzJnF1b3Q7IC8mZ3Q7Jmx0Oy9wJmd0OwoKJmx0O2gyJmd0O0FkZGluZyB0ZXN0cyZsdDsvaDImZ3Q7CgombHQ7cCZndDtJdCBpcyBub3cgdGltZSB0byBzdGFydCBhZGRpbmcgc29tZSBwcm9wZXIgdGVzdHMgdG8gb3VyIEFQSSBwcm9qZWN0LiBXZSB3aWxsIGJlIGFkZGluZyB0ZXN0cyB0byB0ZXN0IG91ciAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtjcmVhdGUmbHQ7L2NvZGUmZ3Q7IGFuZCAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtnZXQmbHQ7L2NvZGUmZ3Q7IGVuZHBvaW50cy4gUnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBjcmVhdGUgYSB0ZXN0IHN1aXRlIGluIHdoaWNoIHdlIHdpbGwgcHV0IG91ciB0ZXN0czombHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0O2Fkb25pcyBtYWtlOnRlc3QgVXNlcgombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7cCZndDtJbiB0aGUgb3B0aW9ucyB0aGF0IGRpc3BsYXkgYWZ0ZXIgcnVubmluZyB0aGlzIGNvbW1hbmQsIHNlbGVjdCAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtGdW5jdGlvbmFsIHRlc3QmbHQ7L2NvZGUmZ3Q7ICh1c2luZyB0aGUgYXJyb3cga2V5cykgYW5kIHByZXNzICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O0VudGVyJmx0Oy9jb2RlJmd0Oy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtBIG5ldyBmaWxlIGZvciB0aGUgdGVzdCBzdWl0ZSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBhdCAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDt0ZXN0L2Z1bmN0aW9uYWwvdXNlci5zcGVjLmpzJmx0Oy9jb2RlJmd0Oy4gSW4gdGhpcyBmaWxlLCByZXBsYWNlIHRoZSBjb250ZW50cyB3aXRoIHRoZSBmb2xsb3dpbmcgY29kZTombHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0Oy8vIHRlc3QvZnVuY3Rpb25hbC91c2VyLnNwZWMuanMKCiZxdW90O3VzZSBzdHJpY3QmcXVvdDs7Cgpjb25zdCB7IHRlc3QsIHRyYWl0LCBhZnRlciB9ID0gdXNlKCZxdW90O1Rlc3QvU3VpdGUmcXVvdDspKCZxdW90O1VzZXImcXVvdDspOwoKY29uc3QgVXNlciA9IHVzZSgmcXVvdDtBcHAvTW9kZWxzL1VzZXImcXVvdDspOwoKdHJhaXQoJnF1b3Q7VGVzdC9BcGlDbGllbnQmcXVvdDspOwoKY29uc3QgcmFuZG9tU3RyaW5nID0gZ2VuZXJhdGVSYW5kb21TdHJpbmcoKTsKCnRlc3QoJnF1b3Q7VGVzdCBVc2VyIGNyZWF0aW9uJnF1b3Q7LCBhc3luYyAoeyBjbGllbnQgfSkgPSZhbXA7Z3Q7IHsKICBjb25zdCB1c2VyRGF0YSA9IHsKICAgIHVzZXJuYW1lOiByYW5kb21TdHJpbmcsCiAgICBlbWFpbDogYCR7cmFuZG9tU3RyaW5nfUB0ZXN0LmNvbWAsCiAgICBwYXNzd29yZDogJnF1b3Q7MTIzNDU2JnF1b3Q7CiAgfTsKCiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdCgmcXVvdDsvdXNlci9jcmVhdGUmcXVvdDspLnNlbmQodXNlckRhdGEpLmVuZCgpOwoKICByZXNwb25zZS5hc3NlcnRTdGF0dXMoMjAwKTsKfSkudGltZW91dCgwKTsKCnRlc3QoJnF1b3Q7RmV0Y2ggYWxsIHVzZXJzJnF1b3Q7LCBhc3luYyAoeyBjbGllbnQgfSkgPSZhbXA7Z3Q7IHsKICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQoJnF1b3Q7L3VzZXIvZ2V0JnF1b3Q7KS5lbmQoKTsKCiAgcmVzcG9uc2UuYXNzZXJ0U3RhdHVzKDIwMCk7CiAgcmVzcG9uc2UuYXNzZXJ0SlNPTlN1YnNldChbCiAgICB7CiAgICAgIHVzZXJuYW1lOiByYW5kb21TdHJpbmcsCiAgICAgIGVtYWlsOiBgJHtyYW5kb21TdHJpbmd9QHRlc3QuY29tYAogICAgfQogIF0pOwp9KS50aW1lb3V0KDApOwoKLy9EZWxldGUgdGhlIGNyZWF0ZWQgdXNlcgphZnRlcihhc3luYyAoKSA9JmFtcDtndDsgewogIGF3YWl0IChhd2FpdCBVc2VyLmZpbmRCeSgmcXVvdDt1c2VybmFtZSZxdW90OywgcmFuZG9tU3RyaW5nKSkuZGVsZXRlKCk7Cn0pOwoKZnVuY3Rpb24gZ2VuZXJhdGVSYW5kb21TdHJpbmcobGVuZ3RoID0gNykgewogIHZhciByZXN1bHQgPSAmcXVvdDsmcXVvdDs7CiAgdmFyIGNoYXJhY3RlcnMgPQogICAgJnF1b3Q7QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkmcXVvdDs7CiAgdmFyIGNoYXJhY3RlcnNMZW5ndGggPSBjaGFyYWN0ZXJzLmxlbmd0aDsKICBmb3IgKHZhciBpID0gMDsgaSAmYW1wO2x0OyBsZW5ndGg7IGkrKykgewogICAgcmVzdWx0ICs9IGNoYXJhY3RlcnMuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNoYXJhY3RlcnNMZW5ndGgpKTsKICB9CiAgcmV0dXJuIHJlc3VsdDsKfQombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7cCZndDtJbiB0aGUgYWJvdmUgdGVzdCBzdWl0ZSwgdGhlIEFkb25pcy5qcyAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtUZXN0L0FwaUNsaWVudCZsdDsvY29kZSZndDsgdHJhaXQgaXMgdXNlZCB0byBnYWluIGFjY2VzcyB0byB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Y2xpZW50Jmx0Oy9jb2RlJmd0OyBvYmplY3QsIHdoaWNoIGlzIHVzZWQgdG8gY2FsbCBvdXIgZW5kcG9pbnRzLiBUaGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Z2VuZXJhdGVSYW5kb21TdHJpbmcmbHQ7L2NvZGUmZ3Q7IHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY3JlYXRlIGEgZmFrZSB1c2VybmFtZSBhbmQgZW1haWwgZm9yIGEgdGVzdCB1c2VyLiZsdDsvcCZndDsKCiZsdDtwJmd0O0luIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtUZXN0IFVzZXIgY3JlYXRpb24mbHQ7L2NvZGUmZ3Q7IHRlc3QsIHdlIGNyZWF0ZSBhIG5ldyB1c2VyIGJ5IGNhbGxpbmcgdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2NyZWF0ZSZsdDsvY29kZSZndDsgZW5kcG9pbnQgd2l0aCB0aGUgYXBwcm9wcmlhdGUgZGF0YSwgYW5kIGNoZWNraW5nIGlmIHdlIGdldCBhICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OzIwMCZsdDsvY29kZSZndDsgcmVzcG9uc2UgY29kZSB0aGF0IGluZGljYXRlcyB0aGF0IHRoZSBvcGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWwuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7SW4gdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O0ZldGNoIGFsbCB1c2VycyZsdDsvY29kZSZndDsgdGVzdCwgdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2NsaWVudCZsdDsvY29kZSZndDsgb2JqZWN0IGlzIHVzZWQgdG8gY2FsbCBvdXIgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Z2V0Jmx0Oy9jb2RlJmd0OyBlbmRwb2ludC4gVGhlIHJlc3BvbnNlIGlzIHRoZW4gdGVzdGVkIHRvIGVuc3VyZSB0aGF0IGl0IHJldHVybnMgYSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsyMDAmbHQ7L2NvZGUmZ3Q7IHN0YXR1cyBjb2RlLiBXZSBhbHNvIGNoZWNrIHRvIHNlZSBpZiBpdCByZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIHVzZXIgd2UgY3JlYXRlZCBpbiB0aGUgcHJldmlvdXMgdGVzdC4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtXZSBhdHRhY2ggJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7LnRpbWVvdXQoMCkmbHQ7L2NvZGUmZ3Q7IHRvIGVhY2ggdGVzdCB0byBvdmVycmlkZSB0aGUgdGltZW91dCBsaW1pdCBmb3IgdGhlIHRlc3QgcnVubmVyIGFzIGZ1bmN0aW9uYWwgYW5kIGJyb3dzZXIgdGVzdHMgbWlnaHQgdGFrZSBhIHdoaWxlIHRvIHJ1bi4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtGaW5hbGx5LCB3ZSBkbyBzb21lIGNsZWFuIHVwIGJ5IGRlbGV0aW5nIHRoZSB0ZXN0IHVzZXIgd2UgY3JlYXRlZC4gVGhpcyBpcyBkb25lIGFmdGVyIGJvdGggdGVzdHMgaGF2ZSBjb21wbGV0ZWQuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7VGltZSB0byBydW4gYWxsIHRoZSB0ZXN0cyBjb250YWluZWQgaW4gdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O3Rlc3RzJmx0Oy9jb2RlJmd0OyBmb2xkZXIuIFRvIGRvIHRoYXQsIHJ1biB0aGUgdGVzdCBjb21tYW5kIG9uY2UgYWdhaW46Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDthZG9uaXMgdGVzdAombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7cCZndDsmbHQ7aW1nIHNyYz0mcXVvdDsvYmxvZy9tZWRpYS8yMDIwLTA4LTAyLWFsbC10ZXN0cy1ydW4ucG5nJnF1b3Q7IGFsdD0mcXVvdDtBbGwgVGVzdHMgUnVuJnF1b3Q7IC8mZ3Q7Jmx0Oy9wJmd0OwoKJmx0O2gyJmd0O0Nvbm5lY3RpbmcgdGhlIEFQSSBwcm9qZWN0IHRvIENpcmNsZUNJJmx0Oy9oMiZndDsKCiZsdDtwJmd0O091ciBuZXh0IHRhc2sgaXMgdG8gZ2V0IG91ciBwcm9qZWN0IHNldCB1cCBvbiBDaXJjbGVDSS4gRmlyc3QsIHlvdSBuZWVkIHRvIGluaXRpYWxpemUgeW91ciBBZG9uaXMuanMgcHJvamVjdCBhcyBhICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2dpdCZsdDsvY29kZSZndDsgcmVwb3NpdG9yeS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtUaGVuLCBjcmVhdGUgYSByZW1vdGUgR2l0SHViIHJlcG9zaXRvcnkgZm9yIHRoZSBwcm9qZWN0LCBjb21taXQgeW91ciBjaGFuZ2VzIChpZiBhbnkpLCBhbmQgcHVzaCB0aGUgbG9jYWwgcHJvamVjdCB0byB0aGUgcmVtb3RlIHJlcG9zaXRvcnkuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7TmV4dCwgZ28gdG8gdGhlICZsdDtzdHJvbmcmZ3Q7QWRkIFByb2plY3RzJmx0Oy9zdHJvbmcmZ3Q7IHBhZ2Ugb24gdGhlIENpcmNsZUNJIGRhc2hib2FyZCB0byBhZGQgdGhlIHByb2plY3QuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0wOC0wMi1hZGQtcHJvamVjdC5wbmcmcXVvdDsgYWx0PSZxdW90O0FkZCBQcm9qZWN0IC0gQ2lyY2xlQ0kmcXVvdDsgLyZndDsmbHQ7L3AmZ3Q7CgombHQ7cCZndDtDbGljayAmbHQ7c3Ryb25nJmd0O1NldCBVcCBQcm9qZWN0Jmx0Oy9zdHJvbmcmZ3Q7LiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDgtMDItYWRkLWNvbmZpZy5wbmcmcXVvdDsgYWx0PSZxdW90O0FkZCBDb25maWcgLSBDaXJjbGVDSSZxdW90OyAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0O09uIHRoZSBzZXR1cCBwYWdlLCBjbGljayAmbHQ7c3Ryb25nJmd0O0FkZCBNYW51YWxseSZsdDsvc3Ryb25nJmd0OyB0byBpbnN0cnVjdCBDaXJjbGVDSSB0aGF0IHdlIHdvdWxkIGJlIGFkZGluZyBhIGNvbmZpZ3VyYXRpb24gZmlsZSBtYW51YWxseSBhbmQgbm90IHVzaW5nIHRoZSBzYW1wbGUgZGlzcGxheWVkLiBOZXh0LCB5b3UgZ2V0IGEgcHJvbXB0IHRvIGVpdGhlciBkb3dubG9hZCBhIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIHBpcGVsaW5lIG9yIHN0YXJ0IGJ1aWxkaW5nLiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDgtMDItc3RhcnQtYnVpbGQtcHJvbXB0LnBuZyZxdW90OyBhbHQ9JnF1b3Q7QnVpbGQgUHJvbXB0IC0gQ2lyY2xlQ0kmcXVvdDsgLyZndDsmbHQ7L3AmZ3Q7CgombHQ7cCZndDtDbGljayAmbHQ7c3Ryb25nJmd0O1N0YXJ0IEJ1aWxkaW5nJmx0Oy9zdHJvbmcmZ3Q7IHRvIGJlZ2luIHRoZSBidWlsZC4gVGhpcyBidWlsZCB3aWxsIGZhaWwgYmVjYXVzZSB3ZSBoYXZlIG5vdCBzZXQgdXAgb3VyIGNvbmZpZ3VyYXRpb24gZmlsZSB5ZXQsIHRoaXMgd2Ugd2lsbCBkbyBsYXRlciBvbi4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7QXV0b21hdGluZyBvdXIgdGVzdHMmbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7Tm93IHRoYXQgd2UgaGF2ZSBvdXIgcHJvamVjdCBjb25uZWN0ZWQgdG8gQ2lyY2xlQ0ksIHdlIGNhbiB3cml0ZSBhIGNvbmZpZ3VyYXRpb24gZm9yIG91ciAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2NvbnRpbnVvdXMtaW50ZWdyYXRpb24vJnF1b3Q7Jmd0O2NvbnRpbnVvdXMgaW50ZWdyYXRpb24gKENJKSZsdDsvYSZndDsgcGlwZWxpbmUgdGhhdCB3aWxsIGF1dG9tYXRlIG91ciB0ZXN0aW5nIHByb2Nlc3MuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7QXQgdGhlIHJvb3Qgb2YgeW91ciB0aGUgcHJvamVjdCwgY3JlYXRlIGEgZm9sZGVyIG5hbWVkICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0Oy5jaXJjbGVjaSZsdDsvY29kZSZndDssIGFuZCBhIGZpbGUgd2l0aGluIGl0IG5hbWVkICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2NvbmZpZy55bWwmbHQ7L2NvZGUmZ3Q7LiBJbnNpZGUgdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2NvbmZpZy55bWwmbHQ7L2NvZGUmZ3Q7IGZpbGUsIGVudGVyIHRoZSBmb2xsb3dpbmcgY29kZTombHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0O3ZlcnNpb246IDIuMQpqb2JzOgogIGJ1aWxkOgogICAgd29ya2luZ19kaXJlY3Rvcnk6IH4vcmVwbwogICAgZG9ja2VyOgogICAgICAtIGltYWdlOiBjaXJjbGVjaS9ub2RlOjExLWJyb3dzZXJzCiAgICBzdGVwczoKICAgICAgLSBjaGVja291dAogICAgICAtIHJ1bjoKICAgICAgICAgIG5hbWU6IFVwZGF0ZSBOUE0KICAgICAgICAgIGNvbW1hbmQ6ICZxdW90O3N1ZG8gbnBtIGluc3RhbGwgLWcgbnBtJnF1b3Q7CiAgICAgIC0gcmVzdG9yZV9jYWNoZToKICAgICAgICAgIGtleTogZGVwZW5kZW5jeS1jYWNoZS17eyBjaGVja3N1bSAmcXVvdDtwYWNrYWdlLWxvY2suanNvbiZxdW90OyB9fQogICAgICAtIHJ1bjoKICAgICAgICAgIG5hbWU6IEluc3RhbGwgRGVwZW5kZW5jaWVzCiAgICAgICAgICBjb21tYW5kOiBucG0gaW5zdGFsbAogICAgICAtIHNhdmVfY2FjaGU6CiAgICAgICAgICBrZXk6IGRlcGVuZGVuY3ktY2FjaGUte3sgY2hlY2tzdW0gJnF1b3Q7cGFja2FnZS1sb2NrLmpzb24mcXVvdDsgfX0KICAgICAgICAgIHBhdGhzOgogICAgICAgICAgICAtIC4vbm9kZV9tb2R1bGVzCiAgICAgIC0gcnVuOgogICAgICAgICAgbmFtZTogUnVuIE1pZ3JhdGlvbnMKICAgICAgICAgIGNvbW1hbmQ6IHwKICAgICAgICAgICAgbXYgLmVudi50ZXN0aW5nIC5lbnYKICAgICAgICAgICAgbm9kZSBhY2UgbWlncmF0aW9uOnJ1bgogICAgICAtIHJ1bjoKICAgICAgICAgIG5hbWU6IFJ1biB0ZXN0cwogICAgICAgICAgY29tbWFuZDogbnBtIHJ1biB0ZXN0CiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtwJmd0O0luIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgYWJvdmUsIHdlIHN0YXJ0IGJ5IHVwZGF0aW5nICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O25wbSZsdDsvY29kZSZndDsgdG8gZW5zdXJlIHRoYXQgd2UgYXJlIHVzaW5nIHRoZSBsYXN0ZXN0IHZlcnNpb24uIE5leHQsIHdlIGluc3RhbGwgdGhlIHJlcXVpcmVkIGRlcGVuZGVuY2llcyBhbmQgY2FjaGUgdGhlbS4gV2UgdGhlbiBjcmVhdGUgb3VyIGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb24gZmlsZSAoJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7LmVudiZsdDsvY29kZSZndDspIGFuZCBydW4gb3VyIG1pZ3JhdGlvbnMuIFdpdGggYWxsIGRlcGVuZGVuY2llcyBhbmQgZGF0YWJhc2Ugc2V0IHVwLCB3ZSBydW4gb3VyIHRlc3RzLiZsdDsvcCZndDsKCiZsdDtwJmd0O1NhdmUgdGhpcyBmaWxlLCBjb21taXQsIGFuZCBwdXNoIHlvdXIgY2hhbmdlcyB0byB5b3VyIHJlcG9zaXRvcnkgdG8gdHJpZ2dlciB0aGUgQ0kgcGlwZWxpbmUgdG8gcnVuLiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDgtMDItYnVpbGQtc3VjY2Vzc2Z1bC5wbmcmcXVvdDsgYWx0PSZxdW90O0J1aWxkIFN1Y2Nlc3NmdWwgLSBDaXJjbGVDSSZxdW90OyAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0O0xldOKAmXMgdmlldyBvdXIgdGVzdCByZXN1bHRzIGJ5IGNsaWNraW5nIG9uIHRoZSBidWlsZCB0byBzZWUgYmVoaW5kIHRoZSBzY2VuZXMuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0wOC0wMi10ZXN0cy1hdXRvbWF0ZWQucG5nJnF1b3Q7IGFsdD0mcXVvdDtUZXN0cyBBdXRvbWF0ZWQgLSBDaXJjbGVDSSZxdW90OyAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0O091ciB0ZXN0cyBhcmUgbm93IHJ1bm5pbmcgYXV0b21hdGljYWxseSB3aGVuIHdlIHB1c2ggbmV3IGNvZGUgdG8gb3VyIHJlcG9zaXRvcnkuJmx0Oy9wJmd0OwoKJmx0O2gyJmd0O0NvbmNsdXNpb24mbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7VGVzdC1kcml2ZW4gZGV2ZWxvcG1lbnQgKFRERCkgaXMgYSBiZXN0IHByYWN0aWNlIHRoYXQgYSBsb3Qgb2YgZGV2ZWxvcGVycyBhcmUgc3RpbGwgc3RydWdnbGluZyB0byBpbnRlZ3JhdGUgaW50byB0aGVpciBkZXZlbG9wbWVudCBmbG93LiBIYXZpbmcgYSBmcmFtZXdvcmsgdGhhdCBoYXMgVEREIGJ1aWx0IGludG8gaXRzIGNvcmUgcmVhbGx5IG1ha2VzIGFkb3B0aW5nIGl0IGxlc3MgY3VtYmVyc29tZS4gSW4gdGhpcyB0dXRvcmlhbCwgd2UgbGVhcm5lZCB0byBzZXQgdXAgdGhlIHRlc3Rpbmcgb2Ygb3VyIEFkb25pcy5qcyBBUEksIGFuZCBob3cgdG8gYXV0b21hdGUgdGhlIHByb2Nlc3Mgd2l0aCBDaXJjbGVDSS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtIYXBweSBjb2RpbmchJmx0Oy9wJmd0OwoKJmx0O2hyIC8mZ3Q7CgombHQ7cCZndDsmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vdHdpdHRlci5jb20vY29kZXJvbmZsZWVrP2xhbmc9ZW4mcXVvdDsmZ3Q7RmlrYXlvJmx0Oy9hJmd0OyBpcyBhIGZ1bGxzdGFjayBkZXZlbG9wZXIgYW5kIGF1dGhvciB3aXRoIG92ZXIgYSBkZWNhZGUgb2YgZXhwZXJpZW5jZSBkZXZlbG9waW5nIHdlYiBhbmQgbW9iaWxlIHNvbHV0aW9ucy4gSGUgaXMgY3VycmVudGx5IHRoZSBTb2Z0d2FyZSBMZWFkIGF0IFRlY2ggU3BlY2lhbGlzdCBDb25zdWx0aW5nIGFuZCBkZXZlbG9wcyBjb3Vyc2VzIGZvciBQYWNrdCBhbmQgVWRlbXkuIEhlIGhhcyBhIHN0cm9uZyBwYXNzaW9uIGZvciB0ZWFjaGluZyBhbmQgaG9wZXMgdG8gYmVjb21lIGEgZnVsbC10aW1lIGF1dGhvci4mbHQ7L3AmZ3Q7CjwvZGVzY3JpcHRpb24+CiAgICAgICAgCiAgICAgIDwvaXRlbT4KICAgIAogICAgICAKICAgICAgPGl0ZW0+CiAgICAgICAgPHRpdGxlPkNpcmNsZUNJICsgU2xhY2s6IGN1c3RvbWl6ZWQgcGlwZWxpbmUgbm90aWZpY2F0aW9uczwvdGl0bGU+CiAgICAgICAgPGxpbms+aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy9jaXJjbGVjaS1zbGFjay1pbnRlZ3JhdGlvbi88L2xpbms+CiAgICAgICAgPHB1YkRhdGU+RnJpLCAwOSBPY3QgMjAyMCAwOTowMDowMCAtMDcwMDwvcHViRGF0ZT4KICAgICAgICA8Z3VpZCBpc1Blcm1hTGluaz0idHJ1ZSI+aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy9jaXJjbGVjaS1zbGFjay1pbnRlZ3JhdGlvbi88L2d1aWQ+CiAgICAgICAgCiAgICAgICAgICA8ZGM6Y3JlYXRvcj5LeWxlIFRyeW9uPC9kYzpjcmVhdG9yPgogICAgICAgIAogICAgICAgIAogICAgICAgICAgPGRlc2NyaXB0aW9uPiZsdDtwJmd0O1RvZGF5IHdlIGFyZSByZWxlYXNpbmcgdGhlIFNsYWNrIG9yYiB2NC4wIGZvciBDaXJjbGVDSS4gSXQgbWFrZXMgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL3doYXQtaXMtYS1jaS1jZC1waXBlbGluZS8mcXVvdDsmZ3Q7cGlwZWxpbmUmbHQ7L2EmZ3Q7IG5vdGlmaWNhdGlvbnMgZWFzeSB0byBpbXBsZW1lbnQgYW5kIGN1c3RvbWl6ZS4gTm93IHdpdGggc3VwcG9ydCBmb3IgU2xhY2vigJlzICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9hcHAuc2xhY2suY29tL2Jsb2NrLWtpdC1idWlsZGVyJnF1b3Q7Jmd0O0Jsb2NrIEtpdCBCdWlsZGVyJmx0Oy9hJmd0OywgaXQgYWxzbyBwcm92aWRlcyBhIHZpc3VhbCB3YXkgdG8gY3JlYXRlIGVuZGxlc3MgY3VzdG9tIG5vdGlmaWNhdGlvbnMuIENoZWNrIG91dCB0aGUgc2xhY2sgb3JiIGhlcmU6Jmx0Oy9wJmd0OwoKJmx0O3VsJmd0OwogICZsdDtsaSZndDsmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2RldmVsb3Blci9vcmJzL29yYi9jaXJjbGVjaS9zbGFjayZxdW90OyZndDtTbGFjayBvcmImbHQ7L2EmZ3Q7Jmx0Oy9saSZndDsKICAmbHQ7bGkmZ3Q7Jmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2dpdGh1Yi5jb20vQ2lyY2xlQ0ktUHVibGljL3NsYWNrLW9yYi93aWtpJnF1b3Q7Jmd0O1NsYWNrIG9yYiB3aWtpJmx0Oy9hJmd0OyZsdDsvbGkmZ3Q7CiZsdDsvdWwmZ3Q7CgombHQ7cCZndDsmbHQ7aW1nIHNyYz0mcXVvdDsvYmxvZy9tZWRpYS8yMDIwLTA5LTI1LXNsYWNrMS5wbmcmcXVvdDsgYWx0PSZxdW90O1BpcGVsaW5lIG9uLWhvbGQgbm90aWZpY2F0aW9uIGV4YW1wbGUmcXVvdDsgLyZndDsmbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7V2hhdOKAmXMgbmV3PyZsdDsvaDImZ3Q7CgombHQ7aDMmZ3Q7U2ltcGxlIHRvIHVzZS4mbHQ7L2gzJmd0OwombHQ7cCZndDtQcmV2aW91c2x5LCB0aGUgU2xhY2sgb3JiIHV0aWxpemVkIG11bHRpcGxlIGNvbW1hbmRzIGFuZCBudW1lcm91cyBvcmIgcGFyYW1ldGVycyB0byBidWlsZCBub3RpZmljYXRpb25zIHBpZWNlLWJ5LXBpZWNlLiBOb3csIHdpdGggdmVyc2lvbiA0LjAgYW5kIGFib3ZlLCB5b3UgY2FuIHNlbGVjdCBvbmUgb2Ygc2V2ZXJhbCBidWlsdC1pbiBhdmFpbGFibGUgdGVtcGxhdGVzIG9yIGN1c3RvbWl6ZSBhbmQgaW1wb3J0IHlvdXIgb3duIG5vdGlmaWNhdGlvbnMgdmlzdWFsbHkgd2l0aCBTbGFja+KAmXMgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2FwcC5zbGFjay5jb20vYmxvY2sta2l0LWJ1aWxkZXImcXVvdDsmZ3Q7QmxvY2sgS2l0IEJ1aWxkZXImbHQ7L2EmZ3Q7LiZsdDsvcCZndDsKCiZsdDtwJmd0O0luIHRoZSBuZXcgU2xhY2sgb3JiIHlvdSB3aWxsIG9ubHkgZmluZCBhIHNpbmdsZSBjb21tYW5kICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O25vdGlmeSZsdDsvY29kZSZndDssIGFuZCBhIGpvYiAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtvbi1ob2xkJmx0Oy9jb2RlJmd0Oy4gVGhlIG5vdGlmeSBjb21tYW5kIGlzIHRoZSBoZWFydCBvZiB0aGUgb3JiIGFuZCBjYW4gYmUgdXNlZCB0byBzZW5kIG5vdGlmaWNhdGlvbnMgdG8gYW55IChvciBtdWx0aXBsZSkgU2xhY2sgY2hhbm5lbCBiYXNlZCBvbiAmbHQ7ZW0mZ3Q7ZXZlbnRzJmx0Oy9lbSZndDsgbGlrZSB3aGVuIGEgQ2lyY2xlQ0kgam9iIGhhcyBwYXNzZWQgb3IgZmFpbGVkLiZsdDsvcCZndDsKCiZsdDtoMyZndDtCdWlsdCBmb3IgdGVhbXMmbHQ7L2gzJmd0OwombHQ7cCZndDtUaGUgbmV3IFNsYWNrIG9yYiBhdXRoZW50aWNhdGVzIHVzaW5nIE9BdXRoLCByYXRoZXIgdGhhbiB1c2luZyAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vYXBpLnNsYWNrLmNvbS9tZXNzYWdpbmcvd2ViaG9va3MmcXVvdDsmZ3Q7aW5jb21pbmcgd2ViaG9va3MmbHQ7L2EmZ3Q7IGFzIGluIHByZXZpb3VzIHZlcnNpb25zLiBXaXRoIHRoaXMgY2hhbmdlLCB5b3UgY2FuIG5vdyBpbnN0YWxsIGEg4oCcYm904oCdIGFwcGxpY2F0aW9uIGluIHlvdXIgU2xhY2sgV29ya3NwYWNlIGZvciB5b3VyIENpcmNsZUNJIG5vdGlmaWNhdGlvbnMgYW5kIGFsZXJ0IG11bHRpcGxlIGNoYW5uZWxzIGZyb20gb25lIGludGVncmF0aW9uLiBUbyBzZXR1cCBhdXRoZW50aWNhdGlvbiwgYmUgc3VyZSB0byBjaGVjayB0aGUgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2dpdGh1Yi5jb20vQ2lyY2xlQ0ktUHVibGljL3NsYWNrLW9yYi93aWtpL1NldHVwJnF1b3Q7Jmd0O0dpdEh1YiB3aWtpIGZvciB0aGUgU2xhY2sgb3JiJmx0Oy9hJmd0OyZsdDsvcCZndDsKCiZsdDtoMyZndDtVcGdyYWRpbmcmbHQ7L2gzJmd0OwoKJmx0O3AmZ3Q7U2xhY2sgb3JiIHZlcnNpb24gNC4wLjAgaXMgYSBjb21wbGV0ZSByZXdyaXRlIG9mIHRoZSBwcmV2aW91cyBTbGFjayBvcmIgd2l0aCBhIG5ldyBmZWF0dXJlIHNldCBhbmQgc2ltcGxlciBkZXNpZ24gdGhhdCBpcyBtdWNoIGVhc2llciB0byB1c2UuIE9sZGVyIHZlcnNpb25zIG9mIHRoZSBTbGFjayBvcmIgd2lsbCBjb250aW51ZSB0byBvcGVyYXRlIGFuZCBtaWdyYXRpbmcgdG8gdGhlIG5ldyBTbGFjayBvcmIgZXhwZXJpZW5jZSBpcyBlbnRpcmVseSBvcHRpb25hbC4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtUbyBtaWdyYXRlIHRvIHRoZSBuZXcgU2xhY2sgb3JiLCB0aGUgb2xkIG9yYiBtdXN0IGJlIGNvbXBsZXRlbHkgcmVtb3ZlZCBhcyB2ZXJzaW9uIDQuMCBkb2VzIG5vdCBzaGFyZSBhbnkgZnVuY3Rpb25hbGl0eSB3aXRoIHByZXZpb3VzIHZlcnNpb25zIG9mIHRoZSBvcmIuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7R2V0IHN0YXJ0ZWQgYnkgdmlzaXRpbmcgdGhlICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9naXRodWIuY29tL0NpcmNsZUNJLVB1YmxpYy9zbGFjay1vcmIvd2lraSZxdW90OyZndDtHaXRIdWIgd2lraSZsdDsvYSZndDsmbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7SG93IGRvZXMgaXQgd29yaz8mbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7Jmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9vcmJzLyZxdW90OyZndDtPcmJzJmx0Oy9hJmd0OyBhcmUgcGFja2FnZXMgb2YgQ2lyY2xlQ0kgY29uZmlndXJhdGlvbiB3aGljaCBjYW4gYmUgaW1wb3J0ZWQgYW5kIHV0aWxpemVkIGluIHlvdXIgY29uZmlndXJhdGlvbiBmaWxlLiZsdDsvcCZndDsKCiZsdDtwJmd0O1RvIGp1bXAgYWhlYWQsIHlvdSBjYW4gdmlldyB0aGUgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9kZXZlbG9wZXIvb3Jicy9vcmIvY2lyY2xlY2kvc2xhY2smcXVvdDsmZ3Q7U2xhY2sgb3JiJmx0Oy9hJmd0OyBpbiB0aGUgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9vcmJzL3JlZ2lzdHJ5LyZxdW90OyZndDtvcmIgcmVnaXN0cnkmbHQ7L2EmZ3Q7LCBhbmQgb24gJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2dpdGh1Yi5jb20vQ2lyY2xlQ0ktUHVibGljL3NsYWNrLW9yYi8mcXVvdDsmZ3Q7R2l0SHViJmx0Oy9hJmd0Oy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtUaGUgbWFpbiBjb21wb25lbnQgb2YgdGhlIFNsYWNrIG9yYiBpcyB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7bm90aWZ5Jmx0Oy9jb2RlJmd0OyBjb21tYW5kLCB3aGljaCBjYW4gYmUgdXNlZCBhdCB0aGUgZW5kIG9mIGFueSBqb2IgdG8gc2VuZCBub3RpZmljYXRpb25zIGJhc2VkIG9uIHRoZSBzdGF0dXMgb2YgdGhhdCBqb2IuJmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtsYW5ndWFnZS15YW1sIGhpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDstJmx0Oy9zcGFuJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtzJnF1b3Q7Jmd0O3NsYWNrL25vdGlmeSZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OwogICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDtldmVudCZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtzJnF1b3Q7Jmd0O2ZhaWwmbHQ7L3NwYW4mZ3Q7CiAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25hJnF1b3Q7Jmd0O3RlbXBsYXRlJmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O3MmcXVvdDsmZ3Q7YmFzaWNfZmFpbF8xJmx0Oy9zcGFuJmd0OwombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7cCZndDtUaGVyZSBpcyBub3cgYSBzaW5nbGUgbm90aWZpY2F0aW9uIGNvbW1hbmQgd2l0aCBhbiAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtldmVudCZsdDsvY29kZSZndDsgcGFyYW1ldGVyLiBUaGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7bm90aWZ5Jmx0Oy9jb2RlJmd0OyBjb21tYW5kIHNob3VsZCBiZSBwbGFjZWQgYXQgdGhlIGVuZCBvZiBhbnkgam9iIGFzIGl0IHdpbGwgYWx3YXlzIHJ1biBhbmQgY2FuIGRldGVjdCB0aGUgY3VycmVudCBzdGF0dXMgb2YgdGhlIGpvYi4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtZb3UgY2FuIHNwZWNpZnkgbm90aWZpY2F0aW9ucyB0byAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDthbHdheXMmbHQ7L2NvZGUmZ3Q7IHNlbmQgb3IgdG8gc2VuZCBvbiAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtmYWlsJmx0Oy9jb2RlJmd0OyBvciAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtwYXNzJmx0Oy9jb2RlJmd0Oy4gSWYgYSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDticmFuY2hfcGF0dGVybiZsdDsvY29kZSZndDsgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCwgdGhlIGN1cnJlbnQgYnJhbmNoIG11c3QgYWxzbyBtYXRjaCB0aGUgcGF0dGVybiB0byBzZW5kIHRoZSBub3RpZmljYXRpb24uJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Rm9yIHRoZSBtZXNzYWdlIGJvZHksIHlvdSBjYW4gc2VsZWN0IG9uZSBvZiB0aGUgcHJlY29uZmlndXJlZCB0ZW1wbGF0ZXMgaW5jbHVkZWQgd2l0aCB0aGUgb3JiLCBvciBjcmVhdGUgeW91ciBvd24gY3VzdG9tIG5vdGlmaWNhdGlvbi4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtZb3UgY2FuIHNlZSBhIGZ1bGwgbGlzdCBvZiBhdmFpbGFibGUgdGVtcGxhdGVzIG9uIHRoZSAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vZ2l0aHViLmNvbS9DaXJjbGVDSS1QdWJsaWMvc2xhY2stb3JiL3dpa2kmcXVvdDsmZ3Q7R2l0SHViIFdpa2kmbHQ7L2EmZ3Q7LiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDktMjUtc2xhY2syLnBuZyZxdW90OyBhbHQ9JnF1b3Q7U2xhY2sgT3JiIFRlbXBsYXRlcyZxdW90OyAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0O0J5IGRlZmF1bHQsIHRoZSBTbGFjayBvcmIgd2lsbCBhdHRlbXB0IHRvIHBvc3QgdG8gdGhlIGNoYW5uZWwgc3BlY2lmaWVkIGJ5IHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDskU0xBQ0tfREVGQVVMVF9DSEFOTkVMJmx0Oy9jb2RlJmd0OyBlbnZpcm9ubWVudCB2YXJpYWJsZSwgYnV0IHlvdSBjYW4gYWxzbyBzZWxlY3Qgb25lIG9yIG1vcmUgY2hhbm5lbHMgdmlhIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtjaGFubmVsJmx0Oy9jb2RlJmd0OyBwYXJhbWV0ZXIuJmx0Oy9wJmd0OwoKJmx0O2gyJmd0O0Egd29ya2luZyBleGFtcGxlJmx0Oy9oMiZndDsKCiZsdDtwJmd0O0hlcmUgaXMgYSBzZW1pLXJlYWxpc3RpYyBleGFtcGxlIG9mIGEgdGVzdCBhbmQgZGVwbG95IHdvcmtmbG93IG9uIENpcmNsZUNJLiBJdCBoYXMgb25lIGpvYiB3aGljaCB0ZXN0cyB0aGUgYXBwbGljYXRpb24gb24gZXZlcnkgY29tbWl0ICgmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDt0ZXN0Jmx0Oy9jb2RlJmd0OyksIGFuZCBhIGRlcGxveW1lbnQgam9iIHdoaWNoIG9ubHkgcnVucyBvbiBhIHRhZ2dlZCBjb21taXQgKCZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2RlcGxveSZsdDsvY29kZSZndDspLiZsdDsvcCZndDsKCiZsdDtwJmd0O0luIHRoaXMgZXhhbXBsZSwgd2Ugd2lsbCBwbGFjZSBvdXIgd29ya2Zsb3cgKCZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O3Rlc3QtYW5kLWRlcGxveSZsdDsvY29kZSZndDspICZsdDtlbSZndDsmbHQ7YSBocmVmPSZxdW90Oy9kb2NzLzIuMC93b3JrZmxvd3MvI2hvbGRpbmctYS13b3JrZmxvdy1mb3ItYS1tYW51YWwtYXBwcm92YWwmcXVvdDsmZ3Q7T24gaG9sZCZsdDsvYSZndDsmbHQ7L2VtJmd0OyBwcmlvciB0byBkZXBsb3ltZW50LCBhbmQgd2FpdCBmb3IgYSBtYW51YWwgYXBwcm92YWwuIEFmdGVyIGFuIGVuZ2luZWVyIG1hbnVhbGx5IGFwcHJvdmVzIHRoZSB3b3JrZmxvdywgdGhlIGRlcGxveW1lbnQgam9iIHdpbGwgZXhlY3V0ZS4gRm9yIHRoaXMgd29ya2Zsb3csIHdlIHdhbnQgdG8gc2V0IHVwIHRocmVlIHBvdGVudGlhbCBub3RpZmljYXRpb25zIGZvciBTbGFjazombHQ7L3AmZ3Q7CgombHQ7dWwmZ3Q7CiAgJmx0O2xpJmd0O0Egbm90aWZpY2F0aW9uIHdoZW4gdGhlIHdvcmtmbG93IGlzIHBsYWNlZCBvbi1ob2xkJmx0Oy9saSZndDsKICAmbHQ7bGkmZ3Q7QSBub3RpZmljYXRpb24gaWYgdGhlIGRlcGxveW1lbnQgZmFpbHMmbHQ7L2xpJmd0OwogICZsdDtsaSZndDtBIGRpZmZlcmVudCBub3RpZmljYXRpb24gaWYgdGhlIGRlcGxveW1lbnQgc3VjY2VlZHMmbHQ7L2xpJmd0OwombHQ7L3VsJmd0OwoKJmx0O3AmZ3Q7VGhlIGZvbGxvd2luZyB1c2FnZSBleGFtcGxlIGlzIHB1bGxlZCBkaXJlY3RseSBmcm9tIHRoZSBvcmIgcmVnaXN0cnkuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7VGhpcyBjb25maWd1cmF0aW9uIG1ha2VzIHR3byBhc3N1bXB0aW9uczombHQ7L3AmZ3Q7CiZsdDtvbCZndDsKICAmbHQ7bGkmZ3Q7WW91IGhhdmUgc3RvcmVkIHlvdXIgT0F1dGggdG9rZW4gYXMgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7JFNMQUNLX0FDQ0VTU19UT0tFTiZsdDsvY29kZSZndDsgaW4gYSAmbHQ7YSBocmVmPSZxdW90Oy9kb2NzLzIuMC9jb250ZXh0cy8jcmVzdHJpY3RpbmctYS1jb250ZXh0JnF1b3Q7Jmd0O3Jlc3RyaWN0ZWQgY29udGV4dCZsdDsvYSZndDsgbmFtZWQgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7c2xhY2stc2VjcmV0cyZsdDsvY29kZSZndDsmbHQ7L2xpJmd0OwogICZsdDtsaSZndDtZb3UgaGF2ZSBkZWZpbmVkIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDskU0xBQ0tfREVGQVVMVF9DSEFOTkVMJmx0Oy9jb2RlJmd0OyBhcyBlaXRoZXIgYSAmbHQ7YSBocmVmPSZxdW90Oy9kb2NzLzIuMC9lbnYtdmFycy8jc2V0dGluZy1hbi1lbnZpcm9ubWVudC12YXJpYWJsZS1pbi1hLXByb2plY3QmcXVvdDsmZ3Q7cHJvamVjdCBlbnZpcm9ubWVudCB2YXJpYWJsZSZsdDsvYSZndDssIG9yIHdpdGhpbiB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7c2xhY2stc2VjcmV0cyZsdDsvY29kZSZndDsgY29udGV4dC4mbHQ7L2xpJmd0OwombHQ7L29sJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtsYW5ndWFnZS15YW1sIGhpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDt2ZXJzaW9uJmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O3MmcXVvdDsmZ3Q7Mi4xJmx0Oy9zcGFuJmd0OwogJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7b3JicyZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OwogICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDtzbGFjayZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtzJnF1b3Q7Jmd0O2NpcmNsZWNpL3NsYWNrQDQuMCZsdDsvc3BhbiZndDsKICZsdDtzcGFuIGNsYXNzPSZxdW90O25hJnF1b3Q7Jmd0O2pvYnMmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsKICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7YzEmcXVvdDsmZ3Q7IyBUaGlzICZxdW90O3Rlc3QmcXVvdDsgam9iIHdpbGwgcnVuIG9uIGV2ZXJ5IGNvbW1pdCAoYXMgcGVyIG91ciB3b3JrZmxvdykmbHQ7L3NwYW4mZ3Q7CiAgICZsdDtzcGFuIGNsYXNzPSZxdW90O2MxJnF1b3Q7Jmd0OyMgV2UgYXJlIG9rIHdpdGggbm8gbm90aWZpY2F0aW9ucyBzZW50IGZvciB0aGlzIGpvYi4mbHQ7L3NwYW4mZ3Q7CiAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25hJnF1b3Q7Jmd0O3Rlc3QmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsKICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDtkb2NrZXImbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsKICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0Oy0mbHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O25hJnF1b3Q7Jmd0O2ltYWdlJmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O3MmcXVvdDsmZ3Q7Y2ltZy9iYXNlOnN0YWJsZSZsdDsvc3BhbiZndDsKICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDtzdGVwcyZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OwogICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7LSZsdDsvc3BhbiZndDsgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7cnVuJmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O3MmcXVvdDsmZ3Q7ZWNobyAmcXVvdDt0ZXN0IG15IGFwcCZxdW90OyZsdDsvc3BhbiZndDsKICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7YzEmcXVvdDsmZ3Q7IyBUaGlzICZxdW90O2RlcGxveSZxdW90OyBqb2Igd2lsbCBvbmx5IHJ1biBvbiBhIHRhZ2dlZCBjb21taXQgKGFzIHBlciBvdXIgd29ya2Zsb3cpJmx0Oy9zcGFuJmd0OwogICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtjMSZxdW90OyZndDsjIFdlIHdhbnQgdG8gYmUgYWxlcnRlZCBpZiB0aGlzIGpvYiBmYWlscyBhbmQgYWxzbyB3aGVuIGl0IHN1Y2NlZWRzLiZsdDsvc3BhbiZndDsKICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7ZGVwbG95Jmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7CiAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7ZG9ja2VyJmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7CiAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDstJmx0Oy9zcGFuJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDtpbWFnZSZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtzJnF1b3Q7Jmd0O2NpbWcvYmFzZTpzdGFibGUmbHQ7L3NwYW4mZ3Q7CiAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7c3RlcHMmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsKICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0Oy0mbHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O25hJnF1b3Q7Jmd0O3J1biZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtzJnF1b3Q7Jmd0O2VjaG8gJnF1b3Q7ZGVwbG95IG15IGFwcCZxdW90OyZsdDsvc3BhbiZndDsKICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O2MxJnF1b3Q7Jmd0OyMgSW4gdGhlIGV2ZW50IHRoZSBkZXBsb3ltZW50IGhhcyBmYWlsZWQsIGFsZXJ0IHRoZSBlbmdpbmVlcmluZyB0ZWFtJmx0Oy9zcGFuJmd0OwogICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7LSZsdDsvc3BhbiZndDsgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cyZxdW90OyZndDtzbGFjay9ub3RpZnkmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsKICAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDtldmVudCZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtzJnF1b3Q7Jmd0O2ZhaWwmbHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7dGVtcGxhdGUmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cyZxdW90OyZndDtiYXNpY19mYWlsXzEmbHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7bWVudGlvbnMmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7czImcXVvdDsmZ3Q7JnF1b3Q7Jmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3MmcXVvdDsmZ3Q7QEVuZ2luZWVyaW5nVGVhbSZxdW90OyZsdDsvc3BhbiZndDsKICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O2MxJnF1b3Q7Jmd0OyMgV2hlbiB0aGVyZSBpcyBhIHN1Y2Nlc3NmdWwgZGVwbG95bWVudCwgc2VuZCBhIG5vdGlmaWNhdGlvbiB3aXRoIGEgZGlmZmVyZW50IHRlbXBsYXRlLiZsdDsvc3BhbiZndDsKICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0Oy0mbHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O3MmcXVvdDsmZ3Q7c2xhY2svbm90aWZ5Jmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7ZXZlbnQmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cyZxdW90OyZndDtwYXNzJmx0Oy9zcGFuJmd0OwogICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25hJnF1b3Q7Jmd0O3RlbXBsYXRlJmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O3MmcXVvdDsmZ3Q7c3VjY2Vzc190YWdnZWRfZGVwbG95XzEmbHQ7L3NwYW4mZ3Q7CiAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDt3b3JrZmxvd3MmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsKICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7dGVzdC1hbmQtZGVwbG95Jmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7CiAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7am9icyZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OwogICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7YzEmcXVvdDsmZ3Q7IyBXZSB3YW50IHRoZSB0ZXN0IGpvYiB0byBydW4gb24gYWxsIGNvbW1pdHMsIHNvIHdlIHdpbGwgbGlzdCBpdCB3aXRoIG5vIGZpbHRlcnMuJmx0Oy9zcGFuJmd0OwogICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7LSZsdDsvc3BhbiZndDsgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cyZxdW90OyZndDt0ZXN0Jmx0Oy9zcGFuJmd0OwogICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7YzEmcXVvdDsmZ3Q7IyBXaGVuIHdlIGFyZSBvbiBhIHRhZ2dlZCBjb21taXQgKGV4YW1wbGUgJnF1b3Q7djEuMC4wJnF1b3Q7KSwgd2Ugd2FudCB0byBhbHNvIHBsYWNlIHRoZSB3b3JrZmxvdyBvbi1ob2xkLCBwZW5kaW5nIG1hbnVhbCBhcHByb3ZhbCBmb3IgZGVwbG95bWVudC4mbHQ7L3NwYW4mZ3Q7CiAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtjMSZxdW90OyZndDsjIFdlIHdpbGwgYWxzbyBtYWtlIHVzZSBvZiB0aGUgU2xhY2sgb3JiJ3MgJnF1b3Q7b24taG9sZCZxdW90OyBqb2IgdG8gbm90aWZ5IHVzIHRvIHRoaXMgb24taG9sZCB3b3JrZmxvdywgbWFraW5nIGl0IGVhc3kgdG8gcmVzcG9uZC4mbHQ7L3NwYW4mZ3Q7CiAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDstJmx0Oy9zcGFuJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtzJnF1b3Q7Jmd0O3NsYWNrL29uLWhvbGQmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsKICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25hJnF1b3Q7Jmd0O2NvbnRleHQmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsKICAgICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7LSZsdDsvc3BhbiZndDsgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cyZxdW90OyZndDtzbGFjay1zZWNyZXRzJmx0Oy9zcGFuJmd0OwogICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7cmVxdWlyZXMmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsKICAgICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7LSZsdDsvc3BhbiZndDsgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cyZxdW90OyZndDt0ZXN0Jmx0Oy9zcGFuJmd0OwogICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7ZmlsdGVycyZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OwogICAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDt0YWdzJmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7b25seSZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtzJnF1b3Q7Jmd0Oy9edi4qLyZsdDsvc3BhbiZndDsKICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O2MxJnF1b3Q7Jmd0OyMgSm9icyB3aXRoIHRoZSB0eXBlIG9mICZxdW90O2FwcHJvdmFsJnF1b3Q7IGFjdCBhcyBwbGFjZSBob2xkZXJzIHRvIHBhdXNlIHRoZSB3b3JrZmxvdywgdGhlIGpvYiBuYW1lIGRvZXMgbm90IG1hdHRlci4mbHQ7L3NwYW4mZ3Q7CiAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtjMSZxdW90OyZndDsjIFdhaXQgZm9yIGJvdGggdGhlIHRlc3Qgam9iIGFuZCBmb3IgdGhlIG5vdGlmaWNhdGlvbiB0byBzZW5kIGJlZm9yZSBwYXVzaW5nLiZsdDsvc3BhbiZndDsKICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0Oy0mbHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O25hJnF1b3Q7Jmd0O3BhdXNlX3dvcmtmbG93Jmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDt0eXBlJmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O3MmcXVvdDsmZ3Q7YXBwcm92YWwmbHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDtyZXF1aXJlcyZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OwogICAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDstJmx0Oy9zcGFuJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtzJnF1b3Q7Jmd0O3Rlc3QmbHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0Oy0mbHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O3MmcXVvdDsmZ3Q7c2xhY2svb24taG9sZCZsdDsvc3BhbiZndDsKICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25hJnF1b3Q7Jmd0O2ZpbHRlcnMmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsKICAgICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7dGFncyZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OwogICAgICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25hJnF1b3Q7Jmd0O29ubHkmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cyZxdW90OyZndDsvXnYuKi8mbHQ7L3NwYW4mZ3Q7CiAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtjMSZxdW90OyZndDsjIFRoZSBkZXBsb3kgam9iIHdpbGwgY29udGludWUgb25jZSB0aGUgd29ya2Zsb3cgaGFzIGJlZW4gbWFudWFsbHkgYXBwcm92ZWQuJmx0Oy9zcGFuJmd0OwogICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7LSZsdDsvc3BhbiZndDsgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bmEmcXVvdDsmZ3Q7ZGVwbG95Jmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDtjb250ZXh0Jmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0Oy0mbHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O3MmcXVvdDsmZ3Q7c2xhY2stc2VjcmV0cyZsdDsvc3BhbiZndDsKICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25hJnF1b3Q7Jmd0O3JlcXVpcmVzJmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0Oy0mbHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O3MmcXVvdDsmZ3Q7cGF1c2Vfd29ya2Zsb3cmbHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDtmaWx0ZXJzJmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25hJnF1b3Q7Jmd0O3RhZ3MmbHQ7L3NwYW4mZ3Q7Jmx0O3NwYW4gY2xhc3M9JnF1b3Q7cGkmcXVvdDsmZ3Q7OiZsdDsvc3BhbiZndDsKICAgICAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDtvbmx5Jmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O3MmcXVvdDsmZ3Q7L152LiovJmx0Oy9zcGFuJmd0OwombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7aDImZ3Q7Q3JlYXRpbmcgY3VzdG9tIG5vdGlmaWNhdGlvbnMmbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7UHJldmlvdXNseSwgY3JlYXRpbmcgY3VzdG9tIG5vdGlmaWNhdGlvbnMgaW52b2x2ZWQgdXNpbmcgbWFueSBwYXJhbWV0ZXJzLiBUaGV5IHdlcmUgbGltaXRlZCBhbmQgZGlmZmljdWx0IHRvIGNvbmZpZ3VyZS4gTm93LCB5b3UgY2FuIGNyZWF0ZSBuZWFybHkgYW55IG5vdGlmaWNhdGlvbiBpbWFnaW5hYmxlIHdpdGggb25seSBhIHNpbmdsZSBwYXJhbWV0ZXIsIGFuZCBub3RpZmljYXRpb25zIGFyZSBkZXNpZ25lZCB2aXN1YWxseSB1c2luZyBTbGFja+KAmXMgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2FwcC5zbGFjay5jb20vYmxvY2sta2l0LWJ1aWxkZXImcXVvdDsmZ3Q7QmxvY2sgS2l0IEJ1aWxkZXImbHQ7L2EmZ3Q7LgpZb3UgY2FuIHN0YXJ0IHdpdGggYW55IG9mIFNsYWNr4oCZcyBidWlsdC1pbiB0ZW1wbGF0ZXMsIG9yIHN0YXJ0IGZyZXNoIGFuZCBkZXNpZ24geW91ciBvd24uJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0wOS0yNS1zbGFjay1naWYuZ2lmJnF1b3Q7IGFsdD0mcXVvdDtTbGFjayBCbG9jayBLaXQgQnVpbGRlciBleGFtcGxlJnF1b3Q7IC8mZ3Q7Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7T24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIHNjcmVlbiBhYm92ZSwgeW91IGdldCB0aGUgcGF5bG9hZCB0aGF0IGNvbnRhaW5zIHRoZSB0ZXh0IHdlIGZlZWQgdG8gdGhlIFNsYWNrIG9yYiB2aWEgdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2N1c3RvbSZsdDsvY29kZSZndDsgcGFyYW1ldGVyIChhcyBhbiBhbHRlcm5hdGl2ZSB0byB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7dGVtcGxhdGUmbHQ7L2NvZGUmZ3Q7IHBhcmFtZXRlcikuJmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtsYW5ndWFnZS15YW1sIGhpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0Oy0mbHQ7L3NwYW4mZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O3MmcXVvdDsmZ3Q7c2xhY2svbm90aWZ5Jmx0Oy9zcGFuJmd0OyZsdDtzcGFuIGNsYXNzPSZxdW90O3BpJnF1b3Q7Jmd0OzombHQ7L3NwYW4mZ3Q7CiAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtuYSZxdW90OyZndDtldmVudCZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtzJnF1b3Q7Jmd0O2Fsd2F5cyZsdDsvc3BhbiZndDsKICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25hJnF1b3Q7Jmd0O2N1c3RvbSZsdDsvc3BhbiZndDsmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDs6Jmx0Oy9zcGFuJmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtwaSZxdW90OyZndDt8Jmx0Oy9zcGFuJmd0OwogICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtubyZxdW90OyZndDt7Jmx0Oy9zcGFuJmd0OwogICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25vJnF1b3Q7Jmd0OyZxdW90O2Jsb2NrcyZxdW90OzogWyZsdDsvc3BhbiZndDsKICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25vJnF1b3Q7Jmd0O3smbHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25vJnF1b3Q7Jmd0OyZxdW90O3R5cGUmcXVvdDs6ICZxdW90O3NlY3Rpb24mcXVvdDssJmx0Oy9zcGFuJmd0OwogICAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtubyZxdW90OyZndDsmcXVvdDt0ZXh0JnF1b3Q7OiB7Jmx0Oy9zcGFuJmd0OwogICAgICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25vJnF1b3Q7Jmd0OyZxdW90O3R5cGUmcXVvdDs6ICZxdW90O21ya2R3biZxdW90OywmbHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bm8mcXVvdDsmZ3Q7JnF1b3Q7dGV4dCZxdW90OzogJnF1b3Q7Q3VycmVudCBKb2I6ICRDSVJDTEVfSk9CJnF1b3Q7Jmx0Oy9zcGFuJmd0OwogICAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtubyZxdW90OyZndDt9Jmx0Oy9zcGFuJmd0OwogICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bm8mcXVvdDsmZ3Q7fSwmbHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtubyZxdW90OyZndDt7Jmx0Oy9zcGFuJmd0OwogICAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtubyZxdW90OyZndDsmcXVvdDt0eXBlJnF1b3Q7OiAmcXVvdDtzZWN0aW9uJnF1b3Q7LCZsdDsvc3BhbiZndDsKICAgICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bm8mcXVvdDsmZ3Q7JnF1b3Q7dGV4dCZxdW90OzogeyZsdDsvc3BhbiZndDsKICAgICAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtubyZxdW90OyZndDsmcXVvdDt0eXBlJnF1b3Q7OiAmcXVvdDttcmtkd24mcXVvdDssJmx0Oy9zcGFuJmd0OwogICAgICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O25vJnF1b3Q7Jmd0OyZxdW90O3RleHQmcXVvdDs6ICZxdW90O1dyaXRlIHNvbWUgdGV4dCBoZXJlJnF1b3Q7Jmx0Oy9zcGFuJmd0OwogICAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtubyZxdW90OyZndDt9Jmx0Oy9zcGFuJmd0OwogICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bm8mcXVvdDsmZ3Q7fSZsdDsvc3BhbiZndDsKICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bm8mcXVvdDsmZ3Q7XSZsdDsvc3BhbiZndDsKICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtubyZxdW90OyZndDt9Jmx0Oy9zcGFuJmd0OwombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7cCZndDtCZWZvcmUgY29weWluZyB0aGUgcGF5bG9hZCwgY3VzdG9taXplIHRoZSBsb29rIG9mIHlvdXIgbm90aWZpY2F0aW9uIHVzaW5nIHRoZSBjb21wb25lbnRzIG9uIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIHNjcmVlbi4gRW52aXJvbm1lbnQgdmFyaWFibGVzIGNhbiBiZSB1c2VkIGluIGFueSB0ZXh0IGZpZWxkcyBhbmQgdGhlIHZhbHVlcyB3aWxsIGJlIHJlcGxhY2VkIGF0IHJ1bnRpbWUuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Rm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIGV4YW1wbGVzLCBjaGVjayBvdXQgdGhlICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9naXRodWIuY29tL0NpcmNsZUNJLVB1YmxpYy9zbGFjay1vcmIvd2lraSZxdW90OyZndDtHaXRIdWIgV2lraSZsdDsvYSZndDsgYW5kIHRoZSAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2RldmVsb3Blci9vcmJzL29yYi9jaXJjbGVjaS9zbGFjayZxdW90OyZndDtvcmIgcmVnaXN0cnkgcGFnZSZsdDsvYSZndDsuJmx0Oy9wJmd0OwoKJmx0O2gyJmd0O0pvaW4gVGhlIENvbW11bml0eSZsdDsvaDImZ3Q7CgombHQ7cCZndDtPcmIgZGV2ZWxvcGVycyBhbmQgY29uc3VtZXJzIGFyZSB3ZWxjb21lIHRvICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9kaXNjdXNzLmNpcmNsZWNpLmNvbS9jL2Vjb3N5c3RlbS9vcmJzLzYyJnF1b3Q7Jmd0O2pvaW4gb3VyIERpc2N1c3MgZm9ydW0mbHQ7L2EmZ3Q7ISBXZSB3b3VsZCBsb3ZlIHRvIGhlYXIgZnJvbSB5b3UsIHdoZXRoZXIgeW91IGhhdmUgcXVlc3Rpb25zLCBjb21tZW50cywgb3IgY29uY2VybnMgYWJvdXQgdGhlIFNsYWNrIG9yYi4gTmVlZCB0byBmaWxlIGFuIGlzc3VlIG9yIHdhbnQgdG8gcmVxdWVzdCBhIGZlYXR1cmU/IFdl4oCZZCBsb3ZlIHRvIGhlYXIgZnJvbSB5b3Ugb24gJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2dpdGh1Yi5jb20vQ2lyY2xlQ0ktUHVibGljL3NsYWNrLW9yYi9pc3N1ZXMvbmV3L2Nob29zZSZxdW90OyZndDtHaXRIdWImbHQ7L2EmZ3Q7IGFzIHdlbGwuJmx0Oy9wJmd0Owo8L2Rlc2NyaXB0aW9uPgogICAgICAgIAogICAgICA8L2l0ZW0+CiAgICAKICAgICAgCiAgICAgIDxpdGVtPgogICAgICAgIDx0aXRsZT5Vc2luZyBDaXJjbGVDSSB3b3JrZmxvd3MgdG8gcmVwbGljYXRlIERvY2tlciBIdWIgYXV0b21hdGVkIGJ1aWxkczwvdGl0bGU+CiAgICAgICAgPGxpbms+aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy91c2luZy1jaXJjbGVjaS13b3JrZmxvd3MtdG8tcmVwbGljYXRlLWRvY2tlci1odWItYXV0b21hdGVkLWJ1aWxkcy88L2xpbms+CiAgICAgICAgPHB1YkRhdGU+RnJpLCAwOSBPY3QgMjAyMCAwOTowMDowMCAtMDcwMDwvcHViRGF0ZT4KICAgICAgICA8Z3VpZCBpc1Blcm1hTGluaz0idHJ1ZSI+aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy91c2luZy1jaXJjbGVjaS13b3JrZmxvd3MtdG8tcmVwbGljYXRlLWRvY2tlci1odWItYXV0b21hdGVkLWJ1aWxkcy88L2d1aWQ+CiAgICAgICAgCiAgICAgICAgICA8ZGM6Y3JlYXRvcj5Kb25hdGhhbiBDYXJkb3NvPC9kYzpjcmVhdG9yPgogICAgICAgIAogICAgICAgIAogICAgICAgICAgPGRlc2NyaXB0aW9uPiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7Tm90ZSBmcm9tIHRoZSBwdWJsaXNoZXImbHQ7L3N0cm9uZyZndDs6ICZsdDtpJmd0O1RoaXMgY29udGVudCB3YXMgdXBkYXRlZCBieSBTdXBwb3J0IEVuZ2luZWVyIE5pY2sgQmlhbG9zdG9za3kgb24gMTAvOS8yMDIwIHRvIHJlZmxlY3QgY2hhbmdlcyB0byBEb2NrZXIgSHViIHN1cHBvcnQgZm9yIGFjY2VzcyB0b2tlbnMuJmx0Oy9pJmd0OyZsdDsvcCZndDsKCiZsdDtociAvJmd0OwoKJmx0O3AmZ3Q7Jmx0O2EgaHJlZj0mcXVvdDsvZG9jcy8yLjAvd29ya2Zsb3dzLyZxdW90OyZndDtDaXJjbGVDSSB3b3JrZmxvd3MmbHQ7L2EmZ3Q7IGlzIGEgcG93ZXJmdWwgZmVhdHVyZSB0aGF0IGNhbiBiZSB1c2VkIHRvIG1ha2UgeW91ciBkZXBsb3ltZW50IHByb2Nlc3Mgc2ltcGxlIGFuZCBpbnR1aXRpdmUuIEluIHRoaXMgYXJ0aWNsZSwgd2Ugd2lsbCBsZWFybiBob3cgdG8gdXNlIHRoZW0gdG8gYXV0b21hdGljYWxseSBwdXNoIGltYWdlcyB0byB0aGUgRG9ja2VyIHJlZ2lzdHJ5LCBqdXN0IGxpa2UgRG9ja2VyIEh1YuKAmXMgb3duIGF1dG9tYXRlZCBidWlsZCBwcm9jZXNzLCBidXQgd2l0aCBhbGwgb2YgdGhlIGN1c3RvbWl6YXRpb24gdGhhdCB5b3VyIG93biBidWlsZCBwcm9jZXNzIG9mZmVycy4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7Q2lyY2xlQ0kgd29ya2Zsb3dzJmx0Oy9oMiZndDsKJmx0O2Jsb2NrcXVvdGUmZ3Q7CiAgJmx0O3AmZ3Q7QSAmbHQ7c3Ryb25nJmd0O3dvcmtmbG93Jmx0Oy9zdHJvbmcmZ3Q7IGlzIGEgc2V0IG9mIHJ1bGVzIGZvciBkZWZpbmluZyBhIGNvbGxlY3Rpb24gb2Ygam9icyBhbmQgdGhlaXIgcnVuIG9yZGVyLiBXb3JrZmxvd3Mgc3VwcG9ydCBjb21wbGV4IGpvYiBvcmNoZXN0cmF0aW9uIHVzaW5nIGEgc2ltcGxlIHNldCBvZiBjb25maWd1cmF0aW9uIGtleXMgdG8gaGVscCB5b3UgcmVzb2x2ZSBmYWlsdXJlcyBzb29uZXIuIC0gJmx0O2EgaHJlZj0mcXVvdDsvZG9jcy8yLjAvd29ya2Zsb3dzLyZxdW90OyZndDtDaXJjbGVDSSBXb3JrZmxvd3MgRG9jdW1lbnRhdGlvbiZsdDsvYSZndDsmbHQ7L3AmZ3Q7CiZsdDsvYmxvY2txdW90ZSZndDsKCiZsdDtwJmd0O0luIG91ciB3b3JrZmxvdywgcHVzaGluZyBhIGNvbW1pdCB0byB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7bWFzdGVyJmx0Oy9jb2RlJmd0OyBicmFuY2ggd2lsbCBydW4gYSBzcGVjaWZpYyBqb2IgdGhhdCBwdWJsaXNoZXMgYW4gaW1hZ2Ugd2l0aCB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7bGF0ZXN0Jmx0Oy9jb2RlJmd0OyB0YWcgb24gRG9ja2VyIEh1Yi4gRWFjaCBjb21taXQgd2lsbCBhbHNvIGFkZCBhIEdpdCB0YWcgdG8gdGhlIGltYWdlIGFzIGFuIGltYWdlIHRhZyBhbmQgcHVibGlzaCB0aGUgaW1hZ2Ugd2l0aCB0aGF0IHRhZywgdG9vLiBGaW5hbGx5LCB3ZSB3aWxsIGxvb2sgaW50byBob3cgdG8gdXNlIENpcmNsZUNJ4oCZcyAmbHQ7YSBocmVmPSZxdW90Oy9kb2NzLzIuMC9lbnYtdmFycy8mcXVvdDsmZ3Q7ZW52aXJvbm1lbnQgdmFyaWFibGVzJmx0Oy9hJmd0OyB0byBhdXRvbWF0aWNhbGx5IHB1Ymxpc2ggaW5jcmVtZW50YWwgdmVyc2lvbnMgb2Ygb3VyIGltYWdlcyBpbnN0ZWFkIG9mIHVzaW5nIEdpdCB0YWdzLiZsdDsvcCZndDsKCiZsdDtoMiZndDtCdWlsZGluZyBvdXIgRG9ja2VyIGltYWdlJmx0Oy9oMiZndDsKCiZsdDtwJmd0O0xldOKAmXMgc3RhcnQgd2l0aCBhIGJhc2ljIERvY2tlciBpbWFnZSB0aGF0IGp1c3QgcHJpbnRzIHRoZSBhcmd1bWVudHMgcGFzc2VkIHdoZW4gaXQgaXMgcnVuLiBUaGUgRG9ja2VyZmlsZSB3aWxsIGxvb2sgYXMgc2ltcGxlIGFzIHRoaXM6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDtGUk9NIGFscGluZTozLjgKICAgIApFTlRSWVBPSU5UIFsgJnF1b3Q7ZWNobyZxdW90OyBdCiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtwJmd0O0J1aWxkaW5nIGFuZCBydW5uaW5nIHRoZSBpbWFnZSBsb2NhbGx5IHNob3VsZCBzaG93IHVzIHRoYXQgaXQgaXMgd29ya2luZyBjb3JyZWN0bHk6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDskIGRvY2tlciBidWlsZCAtdCBidWlsZGluZy1vbi1jaSAuClNlbmRpbmcgYnVpbGQgY29udGV4dCB0byBEb2NrZXIgZGFlbW9uICA0LjYwOGtCClN0ZXAgMS8yIDogRlJPTSBhbHBpbmU6My44CiAtLS0mYW1wO2d0OyAxOTZkMTJjZjZhYjEKU3RlcCAyLzIgOiBFTlRSWVBPSU5UIFsgJnF1b3Q7ZWNobyZxdW90OyBdCiAtLS0mYW1wO2d0OyBSdW5uaW5nIGluIGZlMjE1MWIyMmJjMQpSZW1vdmluZyBpbnRlcm1lZGlhdGUgY29udGFpbmVyIGZlMjE1MWIyMmJjMQogLS0tJmFtcDtndDsgZWRjMGNhNmU2NTRhClN1Y2Nlc3NmdWxseSBidWlsdCBlZGMwY2E2ZTY1NGEKU3VjY2Vzc2Z1bGx5IHRhZ2dlZCBjaS13b3JrZmxvd3M6bGF0ZXN0CgokIGRvY2tlciBydW4gYnVpbGRpbmctb24tY2kgJnF1b3Q7SGVsbG8hJnF1b3Q7CkhlbGxvIQombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7cCZndDtOb3cgdGhhdCB3ZSBoYXZlIG91ciBpbWFnZSwgd2UgbmVlZCB0byBwdXNoIGl0IHRvIG91ciBHaXRIdWIgcmVwb3NpdG9yeS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtUbyBzdGFydCBidWlsZGluZyBvdXIgaW1hZ2Ugb24gZWFjaCBjb21taXQsIHdlIGFyZSBnb2luZyB0byBib290c3RyYXAgb3VyIHByb2plY3Qgd2l0aCB0aGUgZm9sbG93aW5nIGNvbmZpZyBmaWxlLiBJbiB5b3VyIHByb2plY3TigJlzIHJvb3QgZGlyZWN0b3J5LCBjcmVhdGUgYSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsuY2lyY2xlJmx0Oy9jb2RlJmd0OyBkaXJlY3RvcnkgYW5kIHNhdmUgdGhlIGZvbGxvd2luZyBsaW5lcyBhcyAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtjb25maWcueW1sJmx0Oy9jb2RlJmd0OzombHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0O3ZlcnNpb246IDIKam9iczoKICBidWlsZDoKICAgIGVudmlyb25tZW50OgogICAgICBJTUFHRV9OQU1FOiBqb25hdGhhbmNhcmRvc28vYnVpbGRpbmctb24tY2kKICAgIGRvY2tlcjoKICAgICAgLSBpbWFnZTogY2lyY2xlY2kvYnVpbGRwYWNrLWRlcHM6c3RyZXRjaAogICAgc3RlcHM6CiAgICAgIC0gY2hlY2tvdXQKICAgICAgLSBzZXR1cF9yZW1vdGVfZG9ja2VyCiAgICAgIC0gcnVuOgogICAgICAgICAgbmFtZTogQnVpbGQgRG9ja2VyIGltYWdlCiAgICAgICAgICBjb21tYW5kOiBkb2NrZXIgYnVpbGQgLXQgJElNQUdFX05BTUU6bGF0ZXN0IC4Kd29ya2Zsb3dzOgogIHZlcnNpb246IDIKICBidWlsZC1tYXN0ZXI6CiAgICBqb2JzOgogICAgICAtIGJ1aWxkOgogICAgICAgICAgZmlsdGVyczoKICAgICAgICAgICAgYnJhbmNoZXM6CiAgICAgICAgICAgICAgb25seTogbWFzdGVyCiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtwJmd0O1dlIGFyZSB1c2luZyBhIHByZS1idWlsdCBEb2NrZXIgaW1hZ2UgYXZhaWxhYmxlIGZyb20gQ2lyY2xlQ0kgY2FsbGVkICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2NpcmNsZWNpL2J1aWxkcGFjay1kZXBzJmx0Oy9jb2RlJmd0OyB0byBydW4gb3VyIGJ1aWxkLiBDaXJjbGVDSSBoYXMgbWFueSBjdXN0b20gaW1hZ2VzIG9uIERvY2tlciBIdWIgdGhhdCBleHRlbmQgdGhlIG9mZmljaWFsIGltYWdlcyB3aXRoIGV4dHJhIHRvb2xzIHRoYXQgYXJlIHVzZWZ1bCBpbiBhIENJL0NEIGVudmlyb25tZW50LiBDaGVjayB0aGUgJmx0O2EgaHJlZj0mcXVvdDsvZG9jcy8yLjAvY2lyY2xlY2ktaW1hZ2VzLyZxdW90OyZndDtDaXJjbGVDSSBpbWFnZXMmbHQ7L2EmZ3Q7IGRvY3MgZm9yIG1vcmUgaW5mb3JtYXRpb24uJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7VGhlcmUgaXMgYWxzbyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBjYWxsZWQgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7SU1BR0VfTkFNRSZsdDsvY29kZSZndDsgd2hpY2ggd2UgYXJlIGdvaW5nIHRvIHVzZSB0byBzZXQgdGhlIG5hbWUgb2Ygb3VyIERvY2tlciBpbWFnZS4gSXQgaXMgaW1wZXJhdGl2ZSB0aGF0IHlvdSBjaGFuZ2UgaXQgdG8geW91ciB1c2VybmFtZS9vcmduYW1lIGluc3RlYWQgb2YgdXNpbmcgbWluZSAoJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7am9uYXRoYW5jYXJkb3NvJmx0Oy9jb2RlJmd0OykuIE90aGVyd2lzZSwgeW91IGFyZSBnb2luZyB0byBnZXQgYW4gZXJyb3Igd2hlbiB0cnlpbmcgdG8gcHVibGlzaCB0aGF0IGltYWdlIHRvIERvY2tlciBIdWIuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Rm9yIG5vdywgb3VyIGNvbmZpZyBoYXMgYSBzaW5nbGUgd29ya2Zsb3cgY2FsbGVkICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2J1aWxkLW1hc3RlciZsdDsvY29kZSZndDsgdGhhdCBydW5zIGEgc2luZ2xlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2J1aWxkJmx0Oy9jb2RlJmd0OyBqb2Igd2hlbiB3ZSBwdXNoIGEgY29tbWl0IHRvIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDttYXN0ZXImbHQ7L2NvZGUmZ3Q7IGJyYW5jaC4gVGhpcyBqb2Igc2ltcGx5IGJ1aWxkcyBvdXIgRG9ja2VyIGltYWdlIGFuZCBkb2VzIG5vdGhpbmcgbW9yZS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtPbmUgb2Ygb3VyIHN0ZXBzIGlzIGNhbGxlZCAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtzZXR1cF9yZW1vdGVfZG9ja2VyJmx0Oy9jb2RlJmd0OyBhbmQgaXMgb25lIG9mIHRoZSBtb3N0IGltcG9ydGFudCBvbmVzIHdoZW4gYnVpbGRpbmcgRG9ja2VyIGltYWdlcyBvbiBDaXJjbGVDSS4gU2luY2Ugb3VyIGpvYiBzdGVwcyBhcmUgcnVuIGluc2lkZSBvZiBhIERvY2tlciBpbWFnZSwgdGhleSBjYW5ub3QgYnVpbGQgb3RoZXIgRG9ja2VyIGltYWdlcy4gVGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O3NldHVwX3JlbW90ZV9kb2NrZXImbHQ7L2NvZGUmZ3Q7IGNvbW1hbmQgdGVsbHMgQ2lyY2xlQ0kgdG8gYWxsb2NhdGUgYSBuZXcgRG9ja2VyIEVuZ2luZSwgc2VwYXJhdGUgZnJvbSB0aGUgZW52aXJvbm1lbnQgdGhhdCBpcyBydW5uaW5nIG91ciBqb2IsIHNwZWNpZmljYWxseSB0byBleGVjdXRlIHRoZSBEb2NrZXIgY29tbWFuZHMuIENoZWNrIHRoZSAmbHQ7YSBocmVmPSZxdW90Oy9kb2NzLzIuMC9idWlsZGluZy1kb2NrZXItaW1hZ2VzLyZxdW90OyZndDtidWlsZGluZyBEb2NrZXIgaW1hZ2VzJmx0Oy9hJmd0OyBkb2NzIGZvciBtb3JlIGluZm9ybWF0aW9uLiZsdDsvcCZndDsKCiZsdDtwJmd0O0V4YW1wbGUgb2YgZXhlY3V0aW9uOiAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2doL0pDTWFpcy9kb2NrZXItYnVpbGRpbmctb24tY2kvMSZxdW90OyZndDtodHRwczovL2NpcmNsZWNpLmNvbS9naC9KQ01haXMvZG9ja2VyLWJ1aWxkaW5nLW9uLWNpLzEmbHQ7L2EmZ3Q7Jmx0Oy9wJmd0OwoKJmx0O2gyJmd0O1B1Ymxpc2hpbmcgYW4gaW1hZ2UgdG8gRG9ja2VyIEh1YiB3aXRoIHRoZSA6bGF0ZXN0IHRhZyBvbiBldmVyeSBjb21taXQgdG8gbWFzdGVyJmx0Oy9oMiZndDsKCiZsdDtwJmd0O05vdyB0aGF0IHdlIGFyZSBidWlsZGluZyBvdXIgaW1hZ2Ugb24gZXZlcnkgY29tbWl0IHRvICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O21hc3RlciZsdDsvY29kZSZndDssIHdlIG5lZWQgdG8gY3JlYXRlIGEgbmV3IGpvYiB0byBhbHNvIHB1Ymxpc2ggdGhhdCBpbWFnZSB0byBEb2NrZXIgSHViLiZsdDsvcCZndDsKCiZsdDtwJmd0O0RvY2tlciBIdWIgZG9lcyBub3QgaGF2ZSBhY2Nlc3MgdG9rZW5zIHRoYXQgeW91IGNhbiB1c2UgdG8gYWNjZXNzIHlvdXIgYWNjb3VudCwgc28gd2UgYXJlIGdvaW5nIHRvIG5lZWQgdG8gdXNlIG91ciBvd24gdXNlcm5hbWUvcGFzc3dvcmQgdG8gbG9nIGluIG9uIHRoZSBEb2NrZXIgSHViIFJlZ2lzdHJ5LiBUaGlzIGlzIGdlbmVyYWxseSBkb25lIGJ5IHJ1bm5pbmc6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDtkb2NrZXIgbG9naW4gLXUgJnF1b3Q7dXNlcm5hbWUmcXVvdDsgLXAgJnF1b3Q7cGFzc3dvcmQmcXVvdDsKJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwombHQ7cCZndDsmbHQ7c3Ryb25nJmd0O05vdGUmbHQ7L3N0cm9uZyZndDs6ICZsdDtpJmd0O0RvY2tlciBIdWIgbm93IHN1cHBvcnRzICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZG9ja2VyLWh1Yi9hY2Nlc3MtdG9rZW5zLyZxdW90OyZndDthY2Nlc3MgdG9rZW5zJmx0Oy9hJmd0OyBzbyB5b3UgY2FuIHV0aWxpemUgYSB0b2tlbiBpbnN0ZWFkIG9mIHlvdXIgcGFzc3dvcmQgZm9yIHRoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb25zIGlmIHlvdSBwcmVmZXIuJmx0Oy9pJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0O0hvd2V2ZXIsIGhhdmluZyB5b3VyIGNyZWRlbnRpYWxzIGluIGNsZWFyIHRleHQgbGlrZSB0aGF0IGlzIGEgYmFkIHByYWN0aWNlIGJlY2F1c2UgaXQgY2FuIGV4cG9zZSB5b3VyIHBhc3N3b3JkLiBXZSBuZWVkIHRvIGNyZWF0ZSBuZXcgJmx0O2EgaHJlZj0mcXVvdDsvZG9jcy8yLjAvZW52LXZhcnMmcXVvdDsmZ3Q7Q2lyY2xlQ0kgZW52aXJvbm1lbnQgdmFyaWFibGVzJmx0Oy9hJmd0OyB3aXRoIG91ciB1c2VybmFtZSBhbmQgcGFzc3dvcmQuIFRoZXJlIGFyZSBtdWx0aXBsZSB3YXlzIHRvIGRvIHRoYXQgaW4gQ2lyY2xlQ0ksIGJ1dCBpZiBtdWx0aXBsZSBwcm9qZWN0cyBhcmUgZ29pbmcgdG8gcHVzaCBpbWFnZXMgdG8gRG9ja2VyIEh1YiwgdGhlIHJlY29tbWVuZGVkIHdheSBpcyB0byB1c2UgJmx0O2EgaHJlZj0mcXVvdDsvZG9jcy8yLjAvY29udGV4dHMvJnF1b3Q7Jmd0O0NvbnRleHRzJmx0Oy9hJmd0Oy4gT3RoZXJ3aXNlLCB3ZSBjYW4gc2V0IHRoZW0gZGlyZWN0bHkgaW4gdGhlIHByb2plY3Qgc2V0dGluZ3MuIEZvciB0aGlzIGFydGljbGUgd2UgYXJlIGdvaW5nIHdpdGggdGhlIGxhdHRlciBtZXRob2QuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7QWZ0ZXIgc2V0dGluZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O0RPQ0tFUkhVQl9VU0VSTkFNRSZsdDsvY29kZSZndDsgYW5kICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O0RPQ0tFUkhVQl9QQVNTJmx0Oy9jb2RlJmd0OywgbGV04oCZcyBjcmVhdGUgb3VyIGpvYjombHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0O3ZlcnNpb246IDIKam9iczoKICBidWlsZDoKICAgIGVudmlyb25tZW50OgogICAgICBJTUFHRV9OQU1FOiBqb25hdGhhbmNhcmRvc28vYnVpbGRpbmctb24tY2kKICAgIGRvY2tlcjoKICAgICAgLSBpbWFnZTogY2lyY2xlY2kvYnVpbGRwYWNrLWRlcHM6c3RyZXRjaAogICAgc3RlcHM6CiAgICAgIC0gY2hlY2tvdXQKICAgICAgLSBzZXR1cF9yZW1vdGVfZG9ja2VyCiAgICAgIC0gcnVuOgogICAgICAgICAgbmFtZTogQnVpbGQgRG9ja2VyIGltYWdlCiAgICAgICAgICBjb21tYW5kOiBkb2NrZXIgYnVpbGQgLXQgJElNQUdFX05BTUU6bGF0ZXN0IC4KICBwdWJsaXNoLWxhdGVzdDoKICAgIGVudmlyb25tZW50OgogICAgICBJTUFHRV9OQU1FOiBidWlsZGluZy1vbi1jaQogICAgZG9ja2VyOgogICAgICAtIGltYWdlOiBjaXJjbGVjaS9idWlsZHBhY2stZGVwczpzdHJldGNoCiAgICBzdGVwczoKICAgICAgLSBzZXR1cF9yZW1vdGVfZG9ja2VyCiAgICAgIC0gcnVuOgogICAgICAgICAgbmFtZTogUHVibGlzaCBEb2NrZXIgSW1hZ2UgdG8gRG9ja2VyIEh1YgogICAgICAgICAgY29tbWFuZDogfAogICAgICAgICAgICBlY2hvICZxdW90OyRET0NLRVJIVUJfUEFTUyZxdW90OyB8IGRvY2tlciBsb2dpbiAtdSAmcXVvdDskRE9DS0VSSFVCX1VTRVJOQU1FJnF1b3Q7IC0tcGFzc3dvcmQtc3RkaW4KICAgICAgICAgICAgZG9ja2VyIHB1c2ggJElNQUdFX05BTUU6bGF0ZXN0CndvcmtmbG93czoKICB2ZXJzaW9uOiAyCiAgYnVpbGQtbWFzdGVyOgogICAgam9iczoKICAgICAgLSBidWlsZDoKICAgICAgICAgIGZpbHRlcnM6CiAgICAgICAgICAgIGJyYW5jaGVzOgogICAgICAgICAgICAgIG9ubHk6IG1hc3RlcgogICAgICAtIHB1Ymxpc2gtbGF0ZXN0OgogICAgICAgICAgcmVxdWlyZXM6CiAgICAgICAgICAgIC0gYnVpbGQKICAgICAgICAgIGZpbHRlcnM6CiAgICAgICAgICAgIGJyYW5jaGVzOgogICAgICAgICAgICAgIG9ubHk6IG1hc3RlcgombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7cCZndDtXZSBhZGRlZCBhIG5ldyAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtwdWJsaXNoLWxhdGVzdCZsdDsvY29kZSZndDsgam9iIHRvIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtidWlsZC1tYXN0ZXImbHQ7L2NvZGUmZ3Q7IHdvcmtmbG93LiBUaGlzIGpvYiB0cmllcyB0byBwdXNoIHRoZSBpbWFnZSB3ZSBqdXN0IGJ1aWx0IHRvIERvY2tlciBIdWIuIEhvd2V2ZXIsIGlmIHdlIGNvbW1pdCB0aGF0IGNoYW5nZSBhbmQgY2hlY2sgdGhlIGJ1aWxkIGxvZywgd2Ugd2lsbCBzZWUgdGhhdCBpdCBmYWlscyBiZWNhdXNlIERvY2tlciBjYW5ub3QgZmluZCB0aGUgaW1hZ2UgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7am9uYXRoYW5jYXJkb3NvL2J1aWxkaW5nLW9uLWNpJmx0Oy9jb2RlJmd0Oy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7aW1nIHNyYz0mcXVvdDsvYmxvZy9tZWRpYS8yMDIwLTEwLTA5LWh1YjEucG5nJnF1b3Q7IGFsdD0mcXVvdDsmcXVvdDsgLyZndDsmbHQ7L3AmZ3Q7CiZsdDtkaXYgc3R5bGU9JnF1b3Q7dGV4dC1hbGlnbjogY2VudGVyJnF1b3Q7Jmd0OwogICZsdDtwJmd0OwogICAgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS93b3JrZmxvdy1ydW4vNjkyNGE1ODQtODFiZS00YTMxLWJmYmMtNzIyMjVkMTJkMjU2JnF1b3Q7Jmd0OwogICAgICBodHRwczovL2NpcmNsZWNpLmNvbS93b3JrZmxvdy1ydW4vNjkyNGE1ODQtODFiZS00YTMxLWJmYmMtNzIyMjVkMTJkMjU2CiAgICAmbHQ7L2EmZ3Q7CiAgJmx0Oy9wJmd0OwombHQ7L2RpdiZndDsKCiZsdDtwJmd0O1RoaXMgaGFwcGVucyBiZWNhdXNlIHRoZSBqb2JzIGluIGEgd29ya2Zsb3cgYXJlIGlzb2xhdGVkIGZyb20gZWFjaCBvdGhlciwgdGhlIGltYWdlIHdlIGJ1aWx0IG9uIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtidWlsZCZsdDsvY29kZSZndDsgam9iIGlzIG5vdCBhdmFpbGFibGUgdG8gJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7cHVibGlzaC1sYXRlc3QmbHQ7L2NvZGUmZ3Q7LiZsdDsvcCZndDsKCiZsdDtwJmd0O05vdGUgdGhlIGR1cGxpY2F0aW9uIHdlIGhhdmUgaW4gb3VyIGNvbmZpZ3VyYXRpb24gZmlsZS4gV2UgYXJlIHJlcGVhdGluZyBvdXJzZWx2ZXMgdHdvIHRpbWVzIHdpdGggdGhlIGVudmlyb25tZW50IHZhcmlhYmxlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O0lNQUdFX05BTUUmbHQ7L2NvZGUmZ3Q7IGRlZmluaXRpb24gYW5kIHRoZSBEb2NrZXIgaW1hZ2UgdGhhdCBpcyBnb2luZyB0byBiZSB1c2VkIHRvIHJ1biBvdXIgam9icy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtPbmUgd2F5IHdlIGNvdWxkIHVzZSB0byBzb2x2ZSB0aGUgZHVwbGljYXRpb24gaXNzdWUgaXMgYnkgdXNpbmcgWUFNTCBhbmNob3JzLiBIb3dldmVyLCBDaXJjbGVDSSBoYXMgZXZvbHZlZCwgYW5kIHdpdGggdmVyc2lvbiAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsyLjEmbHQ7L2NvZGUmZ3Q7LCB3ZSBjYW4gbm93IHJldXNlIHNvbWUgY29uZmlndXJhdGlvbnMgZGlyZWN0bHkgYnkgc3BlY2lmeWluZyBhICZsdDthIGhyZWY9JnF1b3Q7L2RvY3MvMi4wL3JldXNpbmctY29uZmlnLyNhdXRob3JpbmctcmV1c2FibGUtZXhlY3V0b3JzJnF1b3Q7Jmd0O3JldXNhYmxlIGV4ZWN1dG9yJmx0Oy9hJmd0Oy4gQXQgdGhlIHRvcCBvZiB0aGUgZmlsZSB3ZSBhcmUgZ29pbmcgdG8gY2hhbmdlIHRoZSB2ZXJzaW9uIGZyb20gJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7MiZsdDsvY29kZSZndDsgdG8gJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Mi4xJmx0Oy9jb2RlJmd0OyBhbmQgYWRkIGEgbmV3ICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2V4ZWN1dG9ycyZsdDsvY29kZSZndDsga2V5OiZsdDsvcCZndDsKCiZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Jmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O3ByZSBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O2NvZGUmZ3Q7dmVyc2lvbjogMi4xCmV4ZWN1dG9yczoKICBkb2NrZXItcHVibGlzaGVyOgogICAgZW52aXJvbm1lbnQ6CiAgICAgIElNQUdFX05BTUU6IGJ1aWxkaW5nLW9uLWNpCiAgICBkb2NrZXI6CiAgICAgIC0gaW1hZ2U6IGNpcmNsZWNpL2J1aWxkcGFjay1kZXBzOnN0cmV0Y2gKJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7Tm93IG9uIGVhY2ggam9iLCBpbnN0ZWFkIG9mIGRlY2xhcmluZyAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtkb2NrZXImbHQ7L2NvZGUmZ3Q7IGFuZCAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtlbnZpcm9ubWVudCZsdDsvY29kZSZndDsga2V5cywgd2UgYXJlIGdvaW5nIHRvIHNwZWNpZnkgYSBzaW5nbGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7ZXhlY3V0b3ImbHQ7L2NvZGUmZ3Q7IGtleTombHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0OyMgLi4uCmpvYnM6CiAgYnVpbGQ6CiAgICBleGVjdXRvcjogZG9ja2VyLXB1Ymxpc2hlcgogICAgIyAuLi4KICBwdWJsaXNoLWxhdGVzdDoKICAgIGV4ZWN1dG9yOiBkb2NrZXItcHVibGlzaGVyCiAgICAjIC4uLgombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7cCZndDtEdXBsaWNhdGlvbiByZXNvbHZlZC4gVGltZSB0byBmaXggdGhlIGlzc3VlIHdpdGggb3VyIERvY2tlciBpbWFnZSBub3QgYmVpbmcgYXZhaWxhYmxlIG9uIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtwdWJsaXNoLWxhdGVzdCZsdDsvY29kZSZndDsgam9iLiBXZSBhcmUgZ29pbmcgdG8gdXNlICZsdDthIGhyZWY9JnF1b3Q7L2RvY3MvMi4wL3dvcmtmbG93cy8jdXNpbmctd29ya3NwYWNlcy10by1zaGFyZS1kYXRhLWFtb25nLWpvYnMmcXVvdDsmZ3Q7V29ya2Zsb3dz4oCZIHdvcmtzcGFjZXMmbHQ7L2EmZ3Q7IHRvIHNoYXJlIHRoZSBpbWFnZSBiZXR3ZWVuIHRoZSB0d28gam9icy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtMZXTigJlzIGFkZCBhIG5ldyBydW4gc3RlcCBhdCB0aGUgZW5kIG9mIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtidWlsZCZsdDsvY29kZSZndDsgam9iLiBUaGlzIHJ1biBzdGVwIGlzIGdvaW5nIHRvIHNhdmUgdGhlIGltYWdlIGFzIGEgdGFyIGFyY2hpdmU6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDsgICAgICAjIC4uLgogICAgICAtIHJ1bjoKICAgICAgICAgIG5hbWU6IEFyY2hpdmUgRG9ja2VyIGltYWdlCiAgICAgICAgICBjb21tYW5kOiBkb2NrZXIgc2F2ZSAtbyBpbWFnZS50YXIgJElNQUdFX05BTUUKICAgICAgIyAuLi4KJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7Tm93LCB3ZSBjYW4gcGVyc2lzdCB0aGF0IGZpbGUgb24gdGhlIHdvcmtmbG93IHdvcmtzcGFjZSBieSBhZGRpbmcgYW5vdGhlciBzdGVwIGNhbGxlZCAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtwZXJzaXN0X3RvX3dvcmtzcGFjZSZsdDsvY29kZSZndDs6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDsgICAgICAjIC4uLgogICAgICAtIHJ1bjoKICAgICAgICAgIG5hbWU6IEFyY2hpdmUgRG9ja2VyIGltYWdlCiAgICAgICAgICBjb21tYW5kOiBkb2NrZXIgc2F2ZSAtbyBpbWFnZS50YXIgJElNQUdFX05BTUUKICAgICAgLSBwZXJzaXN0X3RvX3dvcmtzcGFjZToKICAgICAgICAgIHJvb3Q6IC4KICAgICAgICAgIHBhdGhzOgogICAgICAgICAgICAtIC4vaW1hZ2UudGFyCiAgICAgICMgLi4uCiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtwJmd0O1RvIHJldHJpZXZlIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtpbWFnZS50YXImbHQ7L2NvZGUmZ3Q7IGZpbGUgb24gdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O3B1Ymxpc2gtbGF0ZXN0Jmx0Oy9jb2RlJmd0OyBqb2IsIHdlIGFyZSBnb2luZyB0byBhZGQgYSBuZXcgc3RlcCwgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7YXR0YWNoX3dvcmtzcGFjZSZsdDsvY29kZSZndDssIGJlZm9yZSB0aGUgb3RoZXJzOiZsdDsvcCZndDsKCiZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Jmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O3ByZSBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O2NvZGUmZ3Q7ICAgIyAuLi4KICAgc3RlcHM6CiAgICAgIC0gYXR0YWNoX3dvcmtzcGFjZToKICAgICAgICAgIGF0OiAvdG1wL3dvcmtzcGFjZQogICAgICAjIC4uLgombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7cCZndDtBbmQgbG9hZCBvdXIgYXJjaGl2ZWQgaW1hZ2Ugd2l0aCAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtkb2NrZXIgbG9hZCZsdDsvY29kZSZndDsganVzdCBiZWZvcmUgd2UgdHJ5IHRvIHB1c2ggaXQgdG8gdGhlIERvY2tlciBIdWIgcmVnaXN0cnk6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDsgICAgICAjIC4uLgogICAgICAtIHJ1bjoKICAgICAgICAgIG5hbWU6IExvYWQgYXJjaGl2ZWQgRG9ja2VyIGltYWdlCiAgICAgICAgICBjb21tYW5kOiBkb2NrZXIgbG9hZCAtaSAvdG1wL3dvcmtzcGFjZS9pbWFnZS50YXIKICAgICAgIyAuLi4KJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7T3VyIGZ1bGwgY29uZmlndXJhdGlvbiBmaWxlIGxvb2tzIGxpa2UgdGhpczombHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0O3ZlcnNpb246IDIuMQpleGVjdXRvcnM6CiAgZG9ja2VyLXB1Ymxpc2hlcjoKICAgIGVudmlyb25tZW50OgogICAgICBJTUFHRV9OQU1FOiBqb25hdGhhbmNhcmRvc28vYnVpbGRpbmctb24tY2kKICAgIGRvY2tlcjoKICAgICAgLSBpbWFnZTogY2lyY2xlY2kvYnVpbGRwYWNrLWRlcHM6c3RyZXRjaApqb2JzOgogIGJ1aWxkOgogICAgZXhlY3V0b3I6IGRvY2tlci1wdWJsaXNoZXIKICAgIHN0ZXBzOgogICAgICAtIGNoZWNrb3V0CiAgICAgIC0gc2V0dXBfcmVtb3RlX2RvY2tlcgogICAgICAtIHJ1bjoKICAgICAgICAgIG5hbWU6IEJ1aWxkIERvY2tlciBpbWFnZQogICAgICAgICAgY29tbWFuZDogfAogICAgICAgICAgICBkb2NrZXIgYnVpbGQgLXQgJElNQUdFX05BTUU6bGF0ZXN0IC4KICAgICAgLSBydW46CiAgICAgICAgICBuYW1lOiBBcmNoaXZlIERvY2tlciBpbWFnZQogICAgICAgICAgY29tbWFuZDogZG9ja2VyIHNhdmUgLW8gaW1hZ2UudGFyICRJTUFHRV9OQU1FCiAgICAgIC0gcGVyc2lzdF90b193b3Jrc3BhY2U6CiAgICAgICAgICByb290OiAuCiAgICAgICAgICBwYXRoczoKICAgICAgICAgICAgLSAuL2ltYWdlLnRhcgogIHB1Ymxpc2gtbGF0ZXN0OgogICAgZXhlY3V0b3I6IGRvY2tlci1wdWJsaXNoZXIKICAgIHN0ZXBzOgogICAgICAtIGF0dGFjaF93b3Jrc3BhY2U6CiAgICAgICAgICBhdDogL3RtcC93b3Jrc3BhY2UKICAgICAgLSBzZXR1cF9yZW1vdGVfZG9ja2VyCiAgICAgIC0gcnVuOgogICAgICAgICAgbmFtZTogTG9hZCBhcmNoaXZlZCBEb2NrZXIgaW1hZ2UKICAgICAgICAgIGNvbW1hbmQ6IGRvY2tlciBsb2FkIC1pIC90bXAvd29ya3NwYWNlL2ltYWdlLnRhcgogICAgICAtIHJ1bjoKICAgICAgICAgIG5hbWU6IFB1Ymxpc2ggRG9ja2VyIEltYWdlIHRvIERvY2tlciBIdWIKICAgICAgICAgIGNvbW1hbmQ6IHwKICAgICAgICAgICAgZWNobyAmcXVvdDskRE9DS0VSSFVCX1BBU1MmcXVvdDsgfCBkb2NrZXIgbG9naW4gLXUgJnF1b3Q7JERPQ0tFUkhVQl9VU0VSTkFNRSZxdW90OyAtLXBhc3N3b3JkLXN0ZGluCiAgICAgICAgICAgIGRvY2tlciBwdXNoICRJTUFHRV9OQU1FOmxhdGVzdAp3b3JrZmxvd3M6CiAgdmVyc2lvbjogMgogIGJ1aWxkLW1hc3RlcjoKICAgIGpvYnM6CiAgICAgIC0gYnVpbGQ6CiAgICAgICAgICBmaWx0ZXJzOgogICAgICAgICAgICBicmFuY2hlczoKICAgICAgICAgICAgICBvbmx5OiBtYXN0ZXIKICAgICAgLSBwdWJsaXNoLWxhdGVzdDoKICAgICAgICAgIHJlcXVpcmVzOgogICAgICAgICAgICAtIGJ1aWxkCiAgICAgICAgICBmaWx0ZXJzOgogICAgICAgICAgICBicmFuY2hlczoKICAgICAgICAgICAgICBvbmx5OiBtYXN0ZXIKJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7RXZlcnl0aGluZyBzaG91bGQgYmUgZ3JlZW4gbm93ISZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMTAtMDktaHViMi5wbmcmcXVvdDsgYWx0PSZxdW90OyZxdW90OyAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0O05vdywgd2UgY2FuIHJldHJpZXZlIGFuZCBydW4gb3VyIGltYWdlIGZyb20gdGhlIERvY2tlciBIdWIgcmVnaXN0cnk6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDskIGRvY2tlciBydW4gam9uYXRoYW5jYXJkb3NvL2J1aWxkaW5nLW9uLWNpICZxdW90O1dvcmtmbG93cyBhcmUgYXdlc29tZSEmcXVvdDsKVW5hYmxlIHRvIGZpbmQgaW1hZ2UgJ2pvbmF0aGFuY2FyZG9zby9idWlsZGluZy1vbi1jaTpsYXRlc3QnIGxvY2FsbHkKbGF0ZXN0OiBQdWxsaW5nIGZyb20gam9uYXRoYW5jYXJkb3NvL2J1aWxkaW5nLW9uLWNpCjRmZTJhZGU0OTgwYzogQWxyZWFkeSBleGlzdHMKRGlnZXN0OiBzaGEyNTY6ZjcxOWNhNDAzYjBmYzZhNTIxNDgyM2M2MWM3NTBhNWU0OGNlNTgwOWEyNGI4ODJiM2E0NWQ2ZDExOTg3MDM2NgpTdGF0dXM6IERvd25sb2FkZWQgbmV3ZXIgaW1hZ2UgZm9yIGpvbmF0aGFuY2FyZG9zby9idWlsZGluZy1vbi1jaTpsYXRlc3QKV29ya2Zsb3dzIGFyZSBhd2Vzb21lIQombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7aDImZ3Q7UHVibGlzaGluZyBHaXQgdGFncyBhcyBEb2NrZXIgaW1hZ2UgdGFncyBvbiBEb2NrZXIgSHViJmx0Oy9oMiZndDsKCiZsdDtwJmd0O0RlcGVuZGluZyBvbiBhbiBpbWFnZSB3aXRoICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2xhdGVzdCZsdDsvY29kZSZndDsgdGFnIGNhbiAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vdnN1cGFsb3YuY29tL2RvY2tlci1sYXRlc3QtdGFnLyZxdW90OyZndDtlYXNpbHkgY2F1c2UgY29uZnVzaW9uJmx0Oy9hJmd0OyBzaW5jZSB3ZSBkb27igJl0IGhhdmUgY29udHJvbCBvdmVyIHdoaWNoIHZlcnNpb24gb2YgdGhlIGltYWdlIHdlIGFyZSBydW5uaW5nLiBUaGUgcmVjb21tZW5kZWQgd2F5IGlzIHRvIHVzZSBhIHNwZWNpZmljIHRhZy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtTdXBwb3NlIHdlIGFyZSBnb2luZyB0byB1c2UgR2l0IHRhZ3MgdG8gcmVsZWFzZSBuZXcgdmVyc2lvbnMgb2Ygb3VyIERvY2tlciBpbWFnZSwgYW5kIHdlIHdhbnQgQ2lyY2xlQ0kgdG8gcHVibGlzaCBvdXIgaW1hZ2Ugd2l0aCBlYWNoIEdpdCB0YWcgYXMgYW4gaW1hZ2UgdGFnIG9uIERvY2tlciBIdWIuIEhlcmUgaXMgaG93IHdlIGNhbiBkbyBpdC4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtGaXJzdCwgd2UgYXJlIGdvaW5nIHRvIGFkZCBhIG5ldyB3b3JrZmxvdywgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7YnVpbGQtdGFncyZsdDsvY29kZSZndDs6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDsjIC4uLgogIGJ1aWxkLXRhZ3M6CiAgICBqb2JzOgogICAgICAtIGJ1aWxkOgogICAgICAgICAgZmlsdGVyczoKICAgICAgICAgICAgdGFnczoKICAgICAgICAgICAgICBvbmx5OiAvXnYuKi8KICAgICAgICAgICAgYnJhbmNoZXM6CiAgICAgICAgICAgICAgaWdub3JlOiAvLiovCiAgICAgIC0gcHVibGlzaC10YWc6CiAgICAgICAgICByZXF1aXJlczoKICAgICAgICAgICAgLSBidWlsZAogICAgICAgICAgZmlsdGVyczoKICAgICAgICAgICAgdGFnczoKICAgICAgICAgICAgICBvbmx5OiAvXnYuKi8KICAgICAgICAgICAgYnJhbmNoZXM6CiAgICAgICAgICAgICAgaWdub3JlOiAvLiovCiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtwJmd0O0JvdGggam9icyBzaGFyZSB0aGUgc2FtZSBmaWx0ZXJzLCB3aGljaCBiYXNpY2FsbHkgc2F5IHRoYXQgdGhleSBtdXN0IHJ1biBmb3IgZXZlcnkgdGFnIHRoYXQgc3RhcnRzIHdpdGggJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7diZsdDsvY29kZSZndDsgYW5kIHNob3VsZCBub3QgZXhlY3V0ZSBmb3IgYnJhbmNoZXMuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7VGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2J1aWxkJmx0Oy9jb2RlJmd0OyBqb2IgaXMgdGhlIHNhbWUgKHdlIGNhbiByZXVzZSBqb2JzIGJldHdlZW4gd29ya2Zsb3dzKSwgYnV0IHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtwdWJsaXNoLXRhZyZsdDsvY29kZSZndDsgam9iIHdpbGwgbG9vayBsaWtlIHRoZSBmb2xsb3dpbmc6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDsjIC4uLgogIHB1Ymxpc2gtdGFnOgogICAgZXhlY3V0b3I6IGRvY2tlci1wdWJsaXNoZXIKICAgIHN0ZXBzOgogICAgICAtIGF0dGFjaF93b3Jrc3BhY2U6CiAgICAgICAgICBhdDogL3RtcC93b3Jrc3BhY2UKICAgICAgLSBzZXR1cF9yZW1vdGVfZG9ja2VyCiAgICAgIC0gcnVuOgogICAgICAgICAgbmFtZTogTG9hZCBhcmNoaXZlZCBEb2NrZXIgaW1hZ2UKICAgICAgICAgIGNvbW1hbmQ6IGRvY2tlciBsb2FkIC1pIC90bXAvd29ya3NwYWNlL2ltYWdlLnRhcgogICAgICAtIHJ1bjoKICAgICAgICAgIG5hbWU6IFB1Ymxpc2ggRG9ja2VyIEltYWdlIHRvIERvY2tlciBIdWIKICAgICAgICAgIGNvbW1hbmQ6IHwKICAgICAgICAgICAgZWNobyAmcXVvdDskRE9DS0VSSFVCX1BBU1MmcXVvdDsgfCBkb2NrZXIgbG9naW4gLXUgJnF1b3Q7JERPQ0tFUkhVQl9VU0VSTkFNRSZxdW90OyAtLXBhc3N3b3JkLXN0ZGluCiAgICAgICAgICAgIElNQUdFX1RBRz0ke0NJUkNMRV9UQUcvdi8nJ30KICAgICAgICAgICAgZG9ja2VyIHRhZyAkSU1BR0VfTkFNRTpsYXRlc3QgJElNQUdFX05BTUU6JElNQUdFX1RBRwogICAgICAgICAgICBkb2NrZXIgcHVzaCAkSU1BR0VfTkFNRTpsYXRlc3QKICAgICAgICAgICAgZG9ja2VyIHB1c2ggJElNQUdFX05BTUU6JElNQUdFX1RBRwojIC4uLgombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7cCZndDtUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgam9iIGFuZCAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtwdWJsaXNoLWxhdGVzdCZsdDsvY29kZSZndDsgaXMgdGhhdCB0aGlzIGpvYiB1c2VzIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIHNldCBhdXRvbWF0aWNhbGx5IGJ5IENpcmNsZUNJIGNhbGxlZCAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtDSVJDTEVfVEFHJmx0Oy9jb2RlJmd0Oy4gV2UgcmV0cmlldmUgdGhlIHZhbHVlIGFuZCByZW1vdmUgdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O3YmbHQ7L2NvZGUmZ3Q7IHByZWZpeCwgZS5nLiwgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7djAuMC4xJmx0Oy9jb2RlJmd0OyBiZWNvbWVzICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OzAuMC4xJmx0Oy9jb2RlJmd0Oy4gV2UgdGhlbiBwcm9jZWVkIHRvIHRhZyBvdXIgaW1hZ2Ugd2l0aCB0aGF0IHZlcnNpb24gYW5kIHB1c2ggaXQgdG8gdGhlIERvY2tlciBIdWIgUmVnaXN0cnkuIFdlIGFsc28gbWFrZSBzdXJlIHRvIHB1c2ggdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2xhdGVzdCZsdDsvY29kZSZndDsgdGFnLCB0b28sIHNvIHRoYXQgYm90aCBhcmUga2VwdCBpbiBzeW5jLiBJZiB3ZSBjb21taXQgYSB0YWcgd2UgY2FuIHNlZSBpdCB3b3JraW5nOiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMTAtMDktaHViMy5wbmcmcXVvdDsgYWx0PSZxdW90OyZxdW90OyAvJmd0OyZsdDsvcCZndDsKJmx0O2RpdiBzdHlsZT0mcXVvdDt0ZXh0LWFsaWduOiBjZW50ZXImcXVvdDsmZ3Q7CiAgJmx0O3AmZ3Q7CiAgICAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL3dvcmtmbG93LXJ1bi9lY2RmYmIzZi1iN2Y2LTQxYjYtOWY1Ni0xNDc0OTY3OTE3MzYmcXVvdDsmZ3Q7CiAgICAgIGh0dHBzOi8vY2lyY2xlY2kuY29tL3dvcmtmbG93LXJ1bi9lY2RmYmIzZi1iN2Y2LTQxYjYtOWY1Ni0xNDc0OTY3OTE3MzYKICAgICZsdDsvYSZndDsKICAmbHQ7L3AmZ3Q7CiZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7QW5kIGlmIHdlIGFjY2VzcyB0aGUgRG9ja2VyIEh1YiBwYWdlIGZvciB0aGUgaW1hZ2UsIHdlIGNhbiBzZWUgdGhlIHRhZyB0aGVyZTombHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7aW1nIHNyYz0mcXVvdDsvYmxvZy9tZWRpYS8yMDIwLTEwLTA5LWh1YjQucG5nJnF1b3Q7IGFsdD0mcXVvdDsmcXVvdDsgLyZndDsmbHQ7L3AmZ3Q7CiZsdDtkaXYgc3R5bGU9JnF1b3Q7dGV4dC1hbGlnbjogY2VudGVyJnF1b3Q7Jmd0OwogICZsdDtwJmd0OwogICAgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2h1Yi5kb2NrZXIuY29tL3Ivam9uYXRoYW5jYXJkb3NvL2J1aWxkaW5nLW9uLWNpL3RhZ3MvJnF1b3Q7Jmd0OwogICAgICBodHRwczovL2h1Yi5kb2NrZXIuY29tL3Ivam9uYXRoYW5jYXJkb3NvL2J1aWxkaW5nLW9uLWNpL3RhZ3MvCiAgICAmbHQ7L2EmZ3Q7CiAgJmx0Oy9wJmd0OwombHQ7L2RpdiZndDsKCiZsdDtwJmd0O05vdywgd2UgY2FuIHJ1biBvdXIgaW1hZ2UgdXNpbmcgb3VyIHRhZzombHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0O2RvY2tlciBydW4gam9uYXRoYW5jYXJkb3NvL2J1aWxkaW5nLW9uLWNpOjAuMC4xICZxdW90O1RhZ3MgYXJlIHdvcmtpbmchJnF1b3Q7ClVuYWJsZSB0byBmaW5kIGltYWdlICdqb25hdGhhbmNhcmRvc28vYnVpbGRpbmctb24tY2k6MC4wLjEnIGxvY2FsbHkKMC4wLjE6IFB1bGxpbmcgZnJvbSBqb25hdGhhbmNhcmRvc28vYnVpbGRpbmctb24tY2kKNGZlMmFkZTQ5ODBjOiBBbHJlYWR5IGV4aXN0cwpEaWdlc3Q6IHNoYTI1NjoxYTNhNmM3NDg2MDgzMjcwNGRmNTVhY2RjYmQ4NzVmNjYyOTU3ZDc1N2Q2OWZhMzQwYTQ4YjQxYjg5MDQ2OWJjClN0YXR1czogRG93bmxvYWRlZCBuZXdlciBpbWFnZSBmb3Igam9uYXRoYW5jYXJkb3NvL2J1aWxkaW5nLW9uLWNpOjAuMC4xClRhZ3MgYXJlIHdvcmtpbmchCiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtoMiZndDtBdXRvbWF0aWMgaW1hZ2UgdGFncyBmb3IgZWFjaCBidWlsZCZsdDsvaDImZ3Q7CgombHQ7cCZndDtXaGF0IGlmIHdlIGhhdmUgYW4gaW1hZ2UgdGhhdCB3ZSBkb27igJl0IHVzZSBmcmVxdWVudGx5IG9yIG9uZSB0aGF0IHdlIGRvbuKAmXQgd2FudCB0byB1c2UgZ2l0IHRhZ3MgZm9yPyBBbiBpbWFnZSB0aGF0IHdlIHdhbnQgdG8gaGF2ZSBzdHJpY3QgY29udHJvbCBvdmVyIHdoaWNoIHZlcnNpb24gd2UgYXJlIHVzaW5nLCBzbyB3ZSBjYW7igJl0IHJlbHkgb24gdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2xhdGVzdCZsdDsvY29kZSZndDsgdGFnPyZsdDsvcCZndDsKCiZsdDtwJmd0O0NpcmNsZUNJIGFsbG93IHVzIHRvIGRvIGV4YWN0bHkgdGhhdDogaXQgZXhwb3NlcyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBjYWxsZWQgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Q0lSQ0xFX0JVSUxEX05VTSZsdDsvY29kZSZndDsgdGhhdCBpcyBhbiBldmVyLWluY3JlYXNpbmcgbnVtYmVyLiBVc2luZyBpdCwgd2UgY2FuIGxldCBDaXJjbGVDSSBwdWJsaXNoIGEgbmV3IHZlcnNpb24gb2YgdGhlIGltYWdlIGZvciBldmVyeSBidWlsZC4gTGV04oCZcyBtb2RpZnkgb3VyICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O3B1Ymxpc2gtbGF0ZXN0Jmx0Oy9jb2RlJmd0OyBqb2IgdG8gZG8gZXhhY3RseSB0aGF0OiZsdDsvcCZndDsKCiZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Jmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O3ByZSBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O2NvZGUmZ3Q7ICAgICAgIyAuLi4KICAgICAgLSBydW46CiAgICAgICAgICBuYW1lOiBQdWJsaXNoIERvY2tlciBJbWFnZSB0byBEb2NrZXIgSHViCiAgICAgICAgICBjb21tYW5kOiB8CiAgICAgICAgICAgIGVjaG8gJnF1b3Q7JERPQ0tFUkhVQl9QQVNTJnF1b3Q7IHwgZG9ja2VyIGxvZ2luIC11ICZxdW90OyRET0NLRVJIVUJfVVNFUk5BTUUmcXVvdDsgLS1wYXNzd29yZC1zdGRpbgogICAgICAgICAgICBJTUFHRV9UQUc9JnF1b3Q7MC4wLiR7Q0lSQ0xFX0JVSUxEX05VTX0mcXVvdDsKICAgICAgICAgICAgZG9ja2VyIHRhZyAkSU1BR0VfTkFNRTpsYXRlc3QgJElNQUdFX05BTUU6JElNQUdFX1RBRwogICAgICAgICAgICBkb2NrZXIgcHVzaCAkSU1BR0VfTkFNRTpsYXRlc3QKICAgICAgICAgICAgZG9ja2VyIHB1c2ggJElNQUdFX05BTUU6JElNQUdFX1RBRwogICAgICAjIC4uLgombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7cCZndDtXZSBhcmUgdXNpbmcgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Q0lSQ0xFX0JVSUxEX05VTSZsdDsvY29kZSZndDsgdG8gY3JlYXRlIHRoZSBpbWFnZSB0YWcgYW5kIHB1Ymxpc2hpbmcgaXQgYWxvbmdzaWRlIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtsYXRlc3QmbHQ7L2NvZGUmZ3Q7IHRhZyB0byBEb2NrZXIgSHViIFJlZ2lzdHJ5LiBJZiB3ZSBjb21taXQgdGhhdCB0byBtYXN0ZXIgYW5kIHdhaXQgZm9yIHRoZSB3b3JrZmxvdyB0byBmaW5pc2gsIHdlIGNhbiBzZWUgdGhhdCBpdCB3YXMgcHVibGlzaGVkOiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMTAtMDktaHViNS5wbmcmcXVvdDsgYWx0PSZxdW90OyZxdW90OyAvJmd0OyZsdDsvcCZndDsKJmx0O2RpdiBzdHlsZT0mcXVvdDt0ZXh0LWFsaWduOiBjZW50ZXImcXVvdDsmZ3Q7CiAgJmx0O3AmZ3Q7CiAgICAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2doL0pDTWFpcy9kb2NrZXItYnVpbGRpbmctb24tY2kvMjQmcXVvdDsmZ3Q7CiAgICAgIGh0dHBzOi8vY2lyY2xlY2kuY29tL2doL0pDTWFpcy9kb2NrZXItYnVpbGRpbmctb24tY2kvMjQKICAgICZsdDsvYSZndDsKICAmbHQ7L3AmZ3Q7CiZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7Jmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0xMC0wOS1odWI2LnBuZyZxdW90OyBhbHQ9JnF1b3Q7JnF1b3Q7IC8mZ3Q7Jmx0Oy9wJmd0OwombHQ7ZGl2IHN0eWxlPSZxdW90O3RleHQtYWxpZ246IGNlbnRlciZxdW90OyZndDsKICAmbHQ7cCZndDsKICAgICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL2pvbmF0aGFuY2FyZG9zby9idWlsZGluZy1vbi1jaS90YWdzLyZxdW90OyZndDsKICAgICAgaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL2pvbmF0aGFuY2FyZG9zby9idWlsZGluZy1vbi1jaS90YWdzLwogICAgJmx0Oy9hJmd0OwogICZsdDsvcCZndDsKJmx0Oy9kaXYmZ3Q7CgombHQ7aDImZ3Q7U3VtbWFyeSZsdDsvaDImZ3Q7CgombHQ7cCZndDtUaGVzZSB2ZXJzaW9uaW5nIHRlY2huaXF1ZXMgYXJlIGp1c3QgYnVpbGRpbmcgYmxvY2tzLiBZb3UgY2FuIG1ha2UgdGFnZ2luZyB0aGUgdmVyc2lvbnMgb2YgeW91ciBpbWFnZSBhcyBjb21wbGV4IG9yIGFzIHNpbXBsZSBhcyB5b3Ugd2FudC4gWW91IGNvdWxkIGV2ZW4gdXNlIHRoaXMga25vd2xlZGdlIHRvIHVwbG9hZCBhbiBpbWFnZSB0byB5b3VyIG93biBwcml2YXRlIHJlZ2lzdHJ5LCBpbnN0ZWFkIG9mIERvY2tlciBIdWIsIGZvciBzcGVjaWZpYyB0YWdzLiZsdDsvcCZndDsKCiZsdDtwJmd0O1RoZSByZXBvc2l0b3J5IHVzZWQgd2hpbGUgd3JpdGluZyB0aGlzIGFydGljbGUgaXMgYXZhaWxhYmxlIG9uIEdpdEh1YjogJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2dpdGh1Yi5jb20vSkNNYWlzL2RvY2tlci1idWlsZGluZy1vbi1jaSZxdW90OyZndDtodHRwczovL2dpdGh1Yi5jb20vSkNNYWlzL2RvY2tlci1idWlsZGluZy1vbi1jaSZsdDsvYSZndDsuJmx0Oy9wJmd0OwoKJmx0O2hyIC8mZ3Q7CgombHQ7cCZndDsmbHQ7aSZndDtKb25hdGhhbiBDYXJkb3NvIGlzIHBhc3Npb25hdGUgYWJvdXQgRGV2T3BzLCBvcGVuIHNvdXJjZSwgYW5kIGdhbWluZy4gSGUgaGFzIHNpeCB5ZWFycyBvZiBleHBlcmllbmNlIGhlbHBpbmcgY29tcGFuaWVzIGFyb3VuZCB0aGUgd29ybGQgbW92ZSB0aGVpciBvYmplY3RpdmVzIGZvcndhcmQgd2l0aCB0ZWNobmljYWwgc29sdXRpb25zLiBIZSBjdXJyZW50bHkgd29ya3MgcmVtb3RlbHkgZnJvbSBCcmF6aWwgYXMgYSBGdWxsLVN0YWNrIERldmVsb3BlciBhbmQgRGV2T3BzIHNwZWNpYWxpc3QgYXQgSGVsbG9NRC4gWW91IGNhbiBmb2xsb3cgaGltICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly90d2l0dGVyLmNvbS9fam9uYXRoYW5jYXJkb3MmcXVvdDsmZ3Q7QF9qb25hdGhhbmNhcmRvcyZsdDsvYSZndDsmbHQ7L2kmZ3Q7Jmx0Oy9wJmd0Owo8L2Rlc2NyaXB0aW9uPgogICAgICAgIAogICAgICA8L2l0ZW0+CiAgICAKICAgICAgCiAgICAgIDxpdGVtPgogICAgICAgIDx0aXRsZT5Db250aW51b3VzIGRlcGxveW1lbnQgZm9yIE5leHQuanMgYXBwbGljYXRpb25zPC90aXRsZT4KICAgICAgICA8bGluaz5odHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL2NvbnRpbnVvdXMtZGVwbG95bWVudC1mb3ItbmV4dC1qcy1hcHBzLzwvbGluaz4KICAgICAgICA8cHViRGF0ZT5XZWQsIDA3IE9jdCAyMDIwIDEyOjAwOjAwIC0wNzAwPC9wdWJEYXRlPgogICAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJ0cnVlIj5odHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL2NvbnRpbnVvdXMtZGVwbG95bWVudC1mb3ItbmV4dC1qcy1hcHBzLzwvZ3VpZD4KICAgICAgICAKICAgICAgICAgIDxkYzpjcmVhdG9yPkZpa2F5byBBZGVwb2p1PC9kYzpjcmVhdG9yPgogICAgICAgIAogICAgICAgIAogICAgICAgICAgPGRlc2NyaXB0aW9uPiZsdDtwJmd0OyZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9yZWFjdGpzLm9yZy8mcXVvdDsmZ3Q7UmVhY3QuanMmbHQ7L2EmZ3Q7IGlzIGEgdmVyeSBwb3dlcmZ1bCBmcm9udC1lbmQgZnJhbWV3b3JrLCBhcyBpdHMgcG9wdWxhcml0eSBhbmQgYWRvcHRpb24gb3ZlciB0aGUgeWVhcnMgaGF2ZSBzaG93bi4gSG93ZXZlciwgYnVpbGRpbmcgYSBmdWxsLCBwcm9kdWN0aW9uLWxldmVsIGFwcGxpY2F0aW9uIGludm9sdmVzIGEgZmVhdHVyZSBzZXQgdGhhdCB0aGUgUmVhY3QgZnJhbWV3b3JrLCBvbiBpdHMgb3duLCBkb2VzbuKAmXQgaW5jbHVkZS4gRmVhdHVyZXMgbGlrZSByb3V0aW5nLCBjb2RlLXNwbGl0dGluZywgYnVuZGxpbmcsIENTUyBtb2R1bGVzLCBhbmQgbW9yZSBhcmUgbmVlZGVkIGZvciBwcm9kdWN0aW9uLWxldmVsIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50LiBUaGVzZSBhcmUgbm90IGNhcGFiaWxpdGllcyB0aGF0IFJlYWN0LmpzIG9mZmVycyBvdXQtb2YtdGhlLWJveC4gVGhpcyBpcyB3aGVyZSAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vbmV4dGpzLm9yZy8mcXVvdDsmZ3Q7TmV4dC5qcyZsdDsvYSZndDsgY29tZXMgaW4uJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7TmV4dC5qcyBpcyB0aGUgJmx0O3N0cm9uZyZndDtSZWFjdCBmcmFtZXdvcmsgZm9yIHByb2R1Y3Rpb24mbHQ7L3N0cm9uZyZndDsgYXMgYWR2ZXJ0aXNlZCBvbiB0aGUgTmV4dC5qcyBvZmZpY2lhbCB3ZWJzaXRlLiBJdCBwcm92aWRlcyBwcm9kdWN0aW9uLWxldmVsIGZlYXR1cmVzIHRvIFJlYWN0LmpzIGRldmVsb3BlcnMgdG8gZWFzaWx5IGJ1aWxkIHByb2R1Y3Rpb24tcmVhZHkgYXBwcy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtJbiB0aGlzIHR1dG9yaWFsLCB5b3Ugd2lsbCBsZWFybiBob3cgdG8gYXV0b21hdGUgdGhlIGRlcGxveW1lbnQgb2YgTmV4dC5qcyBhcHBsaWNhdGlvbnMgdG8gSGVyb2t1LiZsdDsvcCZndDsKCiZsdDtoMiZndDtQcmVyZXF1aXNpdGVzJmx0Oy9oMiZndDsKCiZsdDtwJmd0O1RvIGZvbGxvdyB0aGlzIHR1dG9yaWFsLCBhIGZldyB0aGluZ3MgYXJlIHJlcXVpcmVkOiZsdDsvcCZndDsKCiZsdDtvbCZndDsKICAmbHQ7bGkmZ3Q7QmFzaWMga25vd2xlZGdlIG9mIEphdmFzY3JpcHQmbHQ7L2xpJmd0OwogICZsdDtsaSZndDsmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vbm9kZWpzLm9yZyZxdW90OyZndDtOb2RlLmpzJmx0Oy9hJmd0OyBpbnN0YWxsZWQgb24geW91ciBzeXN0ZW0gKHZlcnNpb24gJmFtcDtndDs9IDEwLjMpJmx0Oy9saSZndDsKICAmbHQ7bGkmZ3Q7QW4gJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2hlcm9rdS5jb20vJnF1b3Q7Jmd0O0hlcm9rdSZsdDsvYSZndDsgYWNjb3VudCZsdDsvbGkmZ3Q7CiAgJmx0O2xpJmd0O0EgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9zaWdudXAvJnF1b3Q7Jmd0O0NpcmNsZUNJJmx0Oy9hJmd0OyBhY2NvdW50Jmx0Oy9saSZndDsKICAmbHQ7bGkmZ3Q7QSAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vZ2l0aHViLmNvbS8mcXVvdDsmZ3Q7R2l0SHViJmx0Oy9hJmd0OyBhY2NvdW50Jmx0Oy9saSZndDsKJmx0Oy9vbCZndDsKCiZsdDtwJmd0O1dpdGggYWxsIHRoZXNlIGluc3RhbGxlZCBhbmQgc2V0IHVwLCBsZXTigJlzIGJlZ2luIHRoZSB0dXRvcmlhbC4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7Q3JlYXRpbmcgYSBOZXh0LmpzIHByb2plY3QmbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7VG8gYmVnaW4sIGNyZWF0ZSBhIG5ldyBOZXh0LmpzIHByb2plY3QgYnkgcnVubmluZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDtucHggY3JlYXRlLW5leHQtYXBwIG5leHQtY2QKJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7VGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGEgTmV4dC5qcyBhcHBsaWNhdGlvbiBpbnNpZGUgdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O25leHQtY2QmbHQ7L2NvZGUmZ3Q7IGZvbGRlciAoeW91IGNhbiBnaXZlIHRoZSBmb2xkZXIgYW55IG5hbWUgeW91IGNob3NlKS4gT25jZSB0aGUgc2NhZmZvbGRpbmcgcHJvY2VzcyBpcyBkb25lLCBnbyBpbnRvIHRoZSByb290IG9mIHRoZSBwcm9qZWN0IGFuZCBydW4gdGhlIGFwcGxpY2F0aW9uIHdpdGggdGhlIGZvbGxvd2luZyBjb21tYW5kczombHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0O2NkIG5leHQtY2QKbnBtIHJ1biBkZXYKJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7VGhpcyB3aWxsIGJvb3QgdXAgYSBkZXZlbG9wbWVudCBzZXJ2ZXIgdGhhdCBzZXJ2ZXMgdGhlIGFwcGxpY2F0aW9uIGF0IGl0cyBkZWZhdWx0ICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OzMwMDAmbHQ7L2NvZGUmZ3Q7IHBvcnQgKCZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMCZsdDsvY29kZSZndDspLiBMb2FkIHRoaXMgVVJMIGluIHlvdXIgYnJvd3NlciBhbmQgeW91IHdpbGwgc2VlIHRoZSBkZWZhdWx0IGhvbWVwYWdlLiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDgtMTktYXBwLWRlZmF1bHQtcGFnZS5wbmcmcXVvdDsgYWx0PSZxdW90O05ldyBBcHAgKExvY2FsKSAtIE5leHQuanMmcXVvdDsgLyZndDsmbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7Q3JlYXRpbmcgYW4gSGVyb2t1IGFwcCZsdDsvaDImZ3Q7CgombHQ7cCZndDtUaGUgbmV4dCBzdGVwIGlzIHRvIHNldCB1cCBhIEhlcm9rdSBhcHBsaWNhdGlvbiB0byBob3N0IG91ciBhcHAuIE5hdmlnYXRlIHRvIHlvdXIgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2Rhc2hib2FyZC5oZXJva3UuY29tL2FwcHMmcXVvdDsmZ3Q7SGVyb2t1IGFjY291bnQgbWFuYWdlbWVudCBjb25zb2xlJmx0Oy9hJmd0OywgZ28gdG8gJmx0O3N0cm9uZyZndDtOZXcmbHQ7L3N0cm9uZyZndDsgLSZhbXA7Z3Q7ICZsdDtzdHJvbmcmZ3Q7Q3JlYXRlIG5ldyBhcHAmbHQ7L3N0cm9uZyZndDssIGFuZCBjcmVhdGUgYSBuZXcgYXBwIHdpdGggeW91ciBwcmVmZXJyZWQgbmFtZS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7aW1nIHNyYz0mcXVvdDsvYmxvZy9tZWRpYS8yMDIwLTA4LTE5LWhlcm9rdS1uZXctYXBwLnBuZyZxdW90OyBhbHQ9JnF1b3Q7TmV3IEFwcCAtIEhlcm9rdSZxdW90OyAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0O1Rha2Ugbm90ZSBvZiB0aGUgYXBwIG5hbWUgeW91IGp1c3QgZW50ZXJlZC4gWW91IHdpbGwgbmVlZCB0aGlzIGxhdGVyLiZsdDsvcCZndDsKCiZsdDtwJmd0O05leHQsIGxvY2F0ZSB5b3VyIEhlcm9rdSBBUEkgS2V5IGluIHRoZSAmbHQ7c3Ryb25nJmd0O0FjY291bnQgU2V0dGluZ3MmbHQ7L3N0cm9uZyZndDsgc2VjdGlvbiBvZiB5b3VyIGRhc2hib2FyZC4gWW91IHdpbGwgYWxzbyBuZWVkIHRoaXMgbGF0ZXIgaW4gdGhlIHR1dG9yaWFsLiBZb3UgY2FuIGFjY2VzcyAmbHQ7c3Ryb25nJmd0O0FjY291bnQgU2V0dGluZ3MmbHQ7L3N0cm9uZyZndDsgZnJvbSB0aGUgZHJvcGRvd24gbWVudSB0aGF0IGFwcGVhcnMgd2hlbiB5b3UgY2xpY2sgb24geW91ciBhdmF0YXIgYXQgdGhlIHRvcCByaWdodCBvZiB0aGUgd2VicGFnZS4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7U2V0dGluZyB1cCBhIENpcmNsZUNJIHByb2plY3QgZm9yIGRlcGxveW1lbnQmbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7VG8gc2V0IHVwIHlvdXIgcHJvamVjdCBvbiBDaXJjbGVDSSwgeW91IG5lZWQgdG8gaW5pdGlhbGl6ZSB5b3VyIHByb2plY3QgYXMgYSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtnaXQmbHQ7L2NvZGUmZ3Q7IHJlcG9zaXRvcnkgKGlmIGl0IGlzbuKAmXQgYWxyZWFkeSBpbml0aWFsaXplZCkuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7VGhlbiwgY3JlYXRlIGEgcmVtb3RlIEdpdEh1YiByZXBvc2l0b3J5IGZvciB0aGUgcHJvamVjdCwgY29tbWl0IHlvdXIgY2hhbmdlcyAoaWYgYW55KSwgYW5kIHB1c2ggdGhlIGxvY2FsIHByb2plY3QgdG8gdGhlIHJlbW90ZSByZXBvc2l0b3J5LiZsdDsvcCZndDsKCiZsdDtwJmd0O05leHQsIGdvIHRvIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtBZGQgUHJvamVjdHMmbHQ7L2NvZGUmZ3Q7IHBhZ2Ugb24gdGhlIENpcmNsZUNJIGRhc2hib2FyZCB0byBhZGQgdGhlIHByb2plY3QuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0wOC0xOS1hZGQtcHJvamVjdC5wbmcmcXVvdDsgYWx0PSZxdW90O0FkZCBQcm9qZWN0IC0gQ2lyY2xlQ0kmcXVvdDsgLyZndDsmbHQ7L3AmZ3Q7CgombHQ7cCZndDtDbGljayAmbHQ7c3Ryb25nJmd0O1NldCBVcCBQcm9qZWN0Jmx0Oy9zdHJvbmcmZ3Q7LiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDgtMTktYWRkLWNvbmZpZy5wbmcmcXVvdDsgYWx0PSZxdW90O0FkZCBDb25maWcgLSBDaXJjbGVDSSZxdW90OyAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0O09uIHRoZSBzZXQtdXAgcGFnZSwgY2xpY2sgJmx0O3N0cm9uZyZndDtVc2UgRXhpc3RpbmcgQ29uZmlnJmx0Oy9zdHJvbmcmZ3Q7IHRvIGluc3RydWN0IENpcmNsZUNJIHRoYXQgd2Ugd2lsbCBhZGQgYSBjb25maWd1cmF0aW9uIGZpbGUgbWFudWFsbHksIGFuZCBub3QgdXNlIHRoZSBzYW1wbGUgY29uZmlnIGRpc3BsYXllZC4gTmV4dCwgeW91IGdldCBhIHByb21wdCB0byBlaXRoZXIgZG93bmxvYWQgYSBjb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSBwaXBlbGluZSBvciBzdGFydCBidWlsZGluZy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7aW1nIHNyYz0mcXVvdDsvYmxvZy9tZWRpYS8yMDIwLTA4LTE5LXN0YXJ0LWJ1aWxkLXByb21wdC5wbmcmcXVvdDsgYWx0PSZxdW90O0J1aWxkIFByb21wdCAtIENpcmNsZUNJJnF1b3Q7IC8mZ3Q7Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Q2xpY2sgJmx0O3N0cm9uZyZndDtTdGFydCBCdWlsZGluZyZsdDsvc3Ryb25nJmd0Oy4gVGhpcyBidWlsZCB3aWxsIGZhaWwgYmVjYXVzZSB3ZSBoYXZlIG5vdCBhZGRlZCBvdXIgY29uZmlndXJhdGlvbiBmaWxlIHlldC4gV2Ugd2lsbCBkbyB0aGF0IGxhdGVyLiZsdDsvcCZndDsKCiZsdDtwJmd0O1RoZSBmaW5hbCB0aGluZyB3ZSBuZWVkIHRvIGRvIG9uIHRoZSBDaXJjbGVDSSBjb25zb2xlIGlzIHNldCB1cCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRoZSBwcm9qZWN0IHdlIGp1c3QgYWRkZWQuIFRoaXMgd2lsbCBlbmFibGUgb3VyIHByb2plY3QgdG8gaGF2ZSBhdXRoZW50aWNhdGVkIGFjY2VzcyB0byBvdXIgSGVyb2t1IGFwcGxpY2F0aW9uIGZvciBkZXBsb3ltZW50cy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtHbyB0byB5b3VyIHByb2plY3TigJlzIHNldHRpbmdzIGJ5IGNsaWNraW5nICZsdDtzdHJvbmcmZ3Q7UHJvamVjdCBTZXR0aW5ncyZsdDsvc3Ryb25nJmd0OyBvbiB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7UGlwZWxpbmVzJmx0Oy9jb2RlJmd0OyBwYWdlIChtYWtlIHN1cmUgeW91ciBwcm9qZWN0IGlzIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgcHJvamVjdCkuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0wOC0xOS1wcm9qZWN0LXNldHRpbmdzLnBuZyZxdW90OyBhbHQ9JnF1b3Q7UHJvamVjdCBzZXR0aW5ncyAtIENpcmNsZUNJJnF1b3Q7IC8mZ3Q7Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7T24gdGhpcyBwYWdlLCBjbGljayAmbHQ7c3Ryb25nJmd0O0Vudmlyb25tZW50IFZhcmlhYmxlcyZsdDsvc3Ryb25nJmd0OyBvbiB0aGUgc2lkZSBtZW51LiBUaGVuIGNsaWNrICZsdDtzdHJvbmcmZ3Q7QWRkIEVudmlyb25tZW50IFZhcmlhYmxlJmx0Oy9zdHJvbmcmZ3Q7LiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDgtMTktYWRkLXZhcmlhYmxlLnBuZyZxdW90OyBhbHQ9JnF1b3Q7QWRkIEVudmlyb25tZW50IHZhcmlhYmxlIC0gQ2lyY2xlQ0kmcXVvdDsgLyZndDsmbHQ7L3AmZ3Q7CgombHQ7cCZndDtBZGQgdGhlIGZvbGxvd2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXM6Jmx0Oy9wJmd0OwoKJmx0O3VsJmd0OwogICZsdDtsaSZndDsmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtIRVJPS1VfQVBQX05BTUUmbHQ7L2NvZGUmZ3Q7OiBUaGlzIGlzIHRoZSBuYW1lIG9mIHlvdXIgSGVyb2t1IGFwcGxpY2F0aW9uIChpbiBteSBjYXNlLCAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtuZXh0LWNkJmx0Oy9jb2RlJmd0OykuJmx0Oy9saSZndDsKICAmbHQ7bGkmZ3Q7Jmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7SEVST0tVX0FQSV9LRVkmbHQ7L2NvZGUmZ3Q7OiBZb3VyIEhlcm9rdSBhY2NvdW50IEFQSSBrZXkuIFRoaXMgY2FuIGJlIGZvdW5kIHVuZGVyIHRoZSAmbHQ7c3Ryb25nJmd0O0FjY291bnQmbHQ7L3N0cm9uZyZndDsgdGFiIG9uIEhlcm9rdSwgdW5kZXIgJmx0O3N0cm9uZyZndDtBY2NvdW50IFNldHRpbmdzJmx0Oy9zdHJvbmcmZ3Q7LiZsdDsvbGkmZ3Q7CiZsdDsvdWwmZ3Q7CgombHQ7cCZndDtPbmNlIGFkZGVkLCB5b3Ugbm93IGhhdmUgZXZlcnl0aGluZyBzZXQgdXAgb24geW91ciBDaXJjbGVDSSBjb25zb2xlIGZvciBkZXBsb3ltZW50IHRvIEhlcm9rdS4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7QXV0b21hdGluZyB0aGUgZGVwbG95bWVudCBvZiB0aGUgTmV4dC5qcyBhcHBsaWNhdGlvbiZsdDsvaDImZ3Q7CgombHQ7cCZndDtOb3cgd2UgY2FuIGJlZ2luIHRoZSBwcm9jZXNzIG9mIGJ1aWxkaW5nIHRoZSBhdXRvbWF0aW9uIHNjcmlwdCBmb3IgdGhlIGRlcGxveW1lbnQgb2YgdGhlIE5leHQuanMgYXBwbGljYXRpb24gdG8gSGVyb2t1LiZsdDsvcCZndDsKCiZsdDtwJmd0O1lvdSBuZWVkIHRvIGNyZWF0ZSBhICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O1Byb2NmaWxlJmx0Oy9jb2RlJmd0OyBmaWxlIGNvbnRhaW5pbmcgaW5zdHJ1Y3Rpb25zIGZvciBIZXJva3UgdG8gYnVpbGQgYW5kIHN0YXJ0IHRoZSBhcHBsaWNhdGlvbi4gQ3JlYXRlIGEgZmlsZSBuYW1lZCAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtQcm9jZmlsZSZsdDsvY29kZSZndDsgKG5vIGZpbGUgZXh0ZW5zaW9uKSBhdCB0aGUgcm9vdCBvZiB0aGUgcHJvamVjdCwgYW5kIGVudGVyIHRoZSBmb2xsb3dpbmc6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDtucG0gcnVuIGJ1aWxkCk5PREVfRU5WPXByb2R1Y3Rpb24gbnBtIHJ1biBzdGFydAombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7cCZndDtUaGUgZmlyc3QgY29tbWFuZCBpbiB0aGlzIGZpbGUgY3JlYXRlcyBhIHByb2R1Y3Rpb24gb3B0aW1pemVkIHZlcnNpb24gb2Ygb3VyIE5leHQuanMgYXBwbGljYXRpb24uIFRoZSBuZXh0IGNvbW1hbmQgc3RhcnRzIHRoZSBhcHBsaWNhdGlvbiBpbiBwcm9kdWN0aW9uIG1vZGUuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Tm93IHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgSGVyb2t1IHVzZXMgYSBkeW5hbWljIHBvcnQgaW4gcHJvZHVjdGlvbi4gTWFrZSB0aGlzIGxpdHRsZSBjaGFuZ2UgdG8gdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O3N0YXJ0Jmx0Oy9jb2RlJmd0OyBzY3JpcHQgaW4gJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7cGFja2FnZS5qc29uJmx0Oy9jb2RlJmd0OzombHQ7L3AmZ3Q7CgombHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0OyZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtwcmUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0JnF1b3Q7Jmd0OyZsdDtjb2RlJmd0Oy4uLgomcXVvdDtzdGFydCZxdW90OzogJnF1b3Q7bmV4dCBzdGFydCAtcCAkUE9SVCZxdW90OwouLi4KJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7V2l0aCB0aGlzLCBvdXIgTmV4dC5qcyBhcHBsaWNhdGlvbiB3aWxsIG5vdyB1c2UgdGhlIGR5bmFtaWMgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7JFBPUlQmbHQ7L2NvZGUmZ3Q7IHZhcmlhYmxlIHNldCBieSBIZXJva3UgaW4gcHJvZHVjdGlvbi4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtGaW5hbGx5LCB3ZSBjcmVhdGUgb3VyIGRlcGxveW1lbnQgc2NyaXB0IGZvciBDaXJjbGVDSSB0byBidWlsZCBvdXIgZGVwbG95bWVudCBhdXRvbWF0aW9uIHBpcGVsaW5lLiBJbiB0aGlzIHNjcmlwdCwgd2UgdXNlIENpcmNsZUNJ4oCZcyAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2RldmVsb3Blci9vcmJzL29yYi9jaXJjbGVjaS9oZXJva3UmcXVvdDsmZ3Q7SGVyb2t1IG9yYiZsdDsvYSZndDsgdG8gZGVwbG95IG91ciBhcHBsaWNhdGlvbiBmcm9tIG91ciBHaXRIdWIgcmVwb3NpdG9yeSBzdHJhaWdodCB0byBIZXJva3UuICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9jaXJjbGVjaS5jb20vb3Jicy8mcXVvdDsmZ3Q7T3JicyZsdDsvYSZndDsgYXJlIGVhc3ktdG8tdXNlIHBhY2thZ2VzIHRoYXQgYWJzdHJhY3QgYSBsb3Qgb2YgYm9pbGVycGxhdGUgYW5kIHNvbWV0aW1lcyBjb21wbGV4IGNvbW1hbmRzL3dvcmtmbG93cyBwcm92aWRpbmcgYSBkZXZlbG9wZXItZnJpZW5kbHkgQVBJIGZvciB1c2UgaW4gb3VyIGNvbmZpZ3VyYXRpb24gZmlsZXMuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7QXQgdGhlIHJvb3Qgb2YgeW91ciBwcm9qZWN0LCBjcmVhdGUgYSBmb2xkZXIgbmFtZWQgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7LmNpcmNsZWNpJmx0Oy9jb2RlJmd0OyBhbmQgYSBmaWxlIG5hbWVkICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2NvbmZpZy55bWwmbHQ7L2NvZGUmZ3Q7IHdpdGhpbiBpdC4gSW5zaWRlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2NvbmZpZy55bWwmbHQ7L2NvZGUmZ3Q7LCBlbnRlciB0aGUgZm9sbG93aW5nIGNvZGU6Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDt2ZXJzaW9uOiAyLjEKb3JiczoKICBoZXJva3U6IGNpcmNsZWNpL2hlcm9rdUAwLjAuMTAKd29ya2Zsb3dzOgogIGhlcm9rdV9kZXBsb3k6CiAgICBqb2JzOgogICAgICAtIGhlcm9rdS9kZXBsb3ktdmlhLWdpdAombHQ7L2NvZGUmZ3Q7Jmx0Oy9wcmUmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy9kaXYmZ3Q7CgombHQ7cCZndDtJbiB0aGUgY29uZmlndXJhdGlvbiBhYm92ZSwgd2UgcHVsbCBpbiB0aGUgSGVyb2t1IG9yYiAoJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Y2lyY2xlY2kvaGVyb2t1QDAuMC4xMCZsdDsvY29kZSZndDspLCB3aGljaCBhdXRvbWF0aWNhbGx5IGdpdmVzIHVzIGFjY2VzcyB0byBhIHBvd2VyZnVsIHNldCBvZiBIZXJva3Ugam9icyBhbmQgY29tbWFuZHMuIE9uZSBvZiB0aG9zZSBqb2JzIGlzIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtoZXJva3UvZGVwbG95LXZpYS1naXQmbHQ7L2NvZGUmZ3Q7IGpvYiwgd2hpY2ggZGVwbG95cyB5b3VyIGFwcGxpY2F0aW9uIHN0cmFpZ2h0IGZyb20geW91ciBHaXRIdWIgcmVwbyB0byB5b3VyIEhlcm9rdSBhY2NvdW50LiBUaGlzIGpvYiBhbHJlYWR5IHRha2VzIGNhcmUgb2YgaW5zdGFsbGluZyB0aGUgSGVyb2t1IENMSSwgaW5zdGFsbGluZyBwcm9qZWN0IGRlcGVuZGVuY2llcywgcnVubmluZyB0aGUgYnVpbGQgc2NyaXB0LCBhbmQgZGVwbG95aW5nIHRoZSBhcHBsaWNhdGlvbi4gSXQgYWxzbyBwaWNrcyB1cCBvdXIgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGZhY2lsaXRhdGUgYSBzbW9vdGggZGVwbG95bWVudCB0byBvdXIgSGVyb2t1IGFwcGxpY2F0aW9uLiZsdDsvcCZndDsKCiZsdDtwJmd0O0l04oCZcyBub3cgdGltZSB0byB0ZXN0IG91ciB3b3JrIHNvIGZhci4gQ29tbWl0IGFsbCBjaGFuZ2VzIHRvIHRoZSBwcm9qZWN0IGFuZCBwdXNoIHRvIHlvdXIgcmVtb3RlIEdpdEh1YiByZXBvc2l0b3J5LiBUaGlzIHdpbGwgYXV0b21hdGljYWxseSB0cmlnZ2VyIHRoZSBkZXBsb3ltZW50IHBpcGVsaW5lLiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDgtMTktYnVpbGQtc3VjY2Vzc2Z1bC5wbmcmcXVvdDsgYWx0PSZxdW90O0J1aWxkIFN1Y2Nlc3NmdWwgLSBDaXJjbGVDSSZxdW90OyAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0O0J5IGNsaWNraW5nIG9uIHRoZSBidWlsZCwgeW91IGNhbiBzZWUgdGhlIGRlcGxveW1lbnQgZGV0YWlscy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7aW1nIHNyYz0mcXVvdDsvYmxvZy9tZWRpYS8yMDIwLTA4LTE5LWJ1aWxkLWRldGFpbHMucG5nJnF1b3Q7IGFsdD0mcXVvdDtCdWlsZCBEZXRhaWxzIC0gQ2lyY2xlQ0kmcXVvdDsgLyZndDsmbHQ7L3AmZ3Q7CgombHQ7cCZndDtEb27igJl0IHN0YXJ0IHRoZSBwYXJhZGUgeWV0LCBzb21ldGltZXMgYSBzdWNjZXNzZnVsIGJ1aWxkIGRvZXNu4oCZdCBleGFjdGx5IGVxdWF0ZSB0byBhIHN1Y2Nlc3NmdWwgZGVwbG95bWVudC4gVGhlcmUgYXJlIHN0aWxsIG1hbnkgdGhpbmdzIHRoYXQgY2FuIGdvIHdyb25nIG9uIHRoZSBIZXJva3UgcGxhdGZvcm0gaXRzZWxmLiBUbyBjb25maXJtIHRoYXQgd2UgaGF2ZSBhIHN1Y2Nlc3NmdWwgZGVwbG95bWVudCwgZ28gdG8geW91ciBIZXJva3UgYXBwbGljYXRpb24gZGFzaGJvYXJkIGFuZCBjbGljayAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtPcGVuIGFwcCZsdDsvY29kZSZndDsuIFRoaXMgd2lsbCBvcGVuIHRoZSBhcHBsaWNhdGlvbiBhdCB0aGUgSGVyb2t1LWRlc2lnbmF0ZWQgVVJMICgmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtodHRwczovL1tBUFBfTkFNRV0uaGVyb2t1YXBwLmNvbSZsdDsvY29kZSZndDspLiBUaGUgZGVmYXVsdCBob21lcGFnZSBiZWxvdyBjb25maXJtcyBhIHN1Y2Nlc3NmdWwgZGVwbG95bWVudC4gWWlwcGVlISZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDgtMTktc2l0ZS1saXZlLnBuZyZxdW90OyBhbHQ9JnF1b3Q7U2l0ZSBMaXZlIC0gSGVyb2t1JnF1b3Q7IC8mZ3Q7Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Tm93LCBsZXTigJlzIGNvbmZpcm0gdGhhdCBvdXIgY2hhbmdlcyBhcmUgYXV0b21hdGljYWxseSBkZXBsb3llZCB3aGVuIHdlIHB1c2ggdGhlbSB0byBvdXIgcmVtb3RlIHJlcG9zaXRvcnkuIENoYW5nZSB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7aDEmbHQ7L2NvZGUmZ3Q7IHRhZyBpbiAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsuL3BhZ2VzL2luZGV4LmpzJmx0Oy9jb2RlJmd0OyBmcm9tOiZsdDsvcCZndDsKCiZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Jmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O3ByZSBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O2NvZGUmZ3Q7JmFtcDtsdDtoMSBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0mYW1wO2d0OwogICAgV2VsY29tZSB0byAmYW1wO2x0O2EgaHJlZj0mcXVvdDtodHRwczovL25leHRqcy5vcmcmcXVvdDsmYW1wO2d0O05leHQuanMhJmFtcDtsdDsvYSZhbXA7Z3Q7CiZhbXA7bHQ7L2gxJmFtcDtndDsKJmx0Oy9jb2RlJmd0OyZsdDsvcHJlJmd0OyZsdDsvZGl2Jmd0OyZsdDsvZGl2Jmd0OwoKJmx0O3AmZ3Q7dG86Jmx0Oy9wJmd0OwoKJmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7cHJlIGNsYXNzPSZxdW90O2hpZ2hsaWdodCZxdW90OyZndDsmbHQ7Y29kZSZndDsmYW1wO2x0O2gxIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlfSZhbXA7Z3Q7CiAgICBXZWxjb21lIHRvICZhbXA7bHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vbmV4dGpzLm9yZyZxdW90OyZhbXA7Z3Q7TXkgTmV4dC5qcyEgU2l0ZSZhbXA7bHQ7L2EmYW1wO2d0OwomYW1wO2x0Oy9oMSZhbXA7Z3Q7CiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtwJmd0O1RoZW4gY29tbWl0IGFuZCBwdXNoIHRoZSBjaGFuZ2VzIHRvIHRyaWdnZXIgYW5vdGhlciBkZXBsb3ltZW50LiBPbmNlIHRoZSBidWlsZCBpcyBzdWNjZXNzZnVsLCByZWZyZXNoIHlvdXIgbGl2ZSBzaXRlIGFuZCB5b3Ugd2lsbCBzZWUgdGhlIHNjcmVlbiBiZWxvdy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7aW1nIHNyYz0mcXVvdDsvYmxvZy9tZWRpYS8yMDIwLTA4LTE5LXNpdGUtbGl2ZS1yZWZyZXNoLnBuZyZxdW90OyBhbHQ9JnF1b3Q7U2l0ZSBMaXZlIC0gSGVyb2t1JnF1b3Q7IC8mZ3Q7Jmx0Oy9wJmd0OwoKJmx0O2gyJmd0O0NvbmNsdXNpb24mbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7RGVwbG95aW5nIGxpdHRsZSB0byBsYXJnZSBjaGFuZ2VzIHRvIGFuIGFwcGxpY2F0aW9uIGJ5IGZvbGxvd2luZyBhIG1hbnVhbCBkZXBsb3ltZW50IHByb2Nlc3MgY2FuIHF1aWNrbHkgYmVjb21lIGEgZnJ1c3RyYXRpbmcgYW5kIGxhYm9yaW91cyBwcm9jZXNzLiBXaXRoIENpcmNsZUNJLCB5b3UgY2FuIGF1dG9tYXRlIHRoZSBwcm9jZXNzLCBlbGltaW5hdGluZyBhbnkgd29ycnkgYWJvdXQgcm91dGluZSBvciBodW1hbiBlcnJvcnMgaW50cm9kdWNlZCBieSBtYW51YWwgcHJvY2Vzc2VzLiBJbiB0aGlzIHR1dG9yaWFsLCB3ZSBoYXZlIGJlZW4gYWJsZSB0byBzdWNjZXNzZnVsbHkgY3JlYXRlIGFuIGF1dG9tYXRlZCBkZXBsb3ltZW50IHBpcGVsaW5lIHRvIGFjaGlldmUgc2VhbWxlc3MgZGVwbG95bWVudHMgZm9yIGFueSBjaGFuZ2UgdG8gb3VyIGFwcGxpY2F0aW9uLCBtYWtpbmcgdGhlbSBvbmUgbGVzcyB0aGluZyB0byB3b3JyeSBhYm91dC4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtIYXBweSBDb2RpbmchJmx0Oy9wJmd0OwoKJmx0O2hyIC8mZ3Q7CgombHQ7cCZndDsmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vdHdpdHRlci5jb20vY29kZXJvbmZsZWVrP2xhbmc9ZW4mcXVvdDsmZ3Q7RmlrYXlvJmx0Oy9hJmd0OyBpcyBhIGZ1bGxzdGFjayBkZXZlbG9wZXIgYW5kIGF1dGhvciB3aXRoIG92ZXIgYSBkZWNhZGUgb2YgZXhwZXJpZW5jZSBkZXZlbG9waW5nIHdlYiBhbmQgbW9iaWxlIHNvbHV0aW9ucy4gSGUgaXMgY3VycmVudGx5IHRoZSBTb2Z0d2FyZSBMZWFkIGF0IFRlY2ggU3BlY2lhbGlzdCBDb25zdWx0aW5nIGFuZCBkZXZlbG9wcyBjb3Vyc2VzIGZvciBQYWNrdCBhbmQgVWRlbXkuIEhlIGhhcyBhIHN0cm9uZyBwYXNzaW9uIGZvciB0ZWFjaGluZyBhbmQgaG9wZXMgdG8gYmVjb21lIGEgZnVsbC10aW1lIGF1dGhvci4mbHQ7L3AmZ3Q7CjwvZGVzY3JpcHRpb24+CiAgICAgICAgCiAgICAgIDwvaXRlbT4KICAgIAogICAgICAKICAgICAgPGl0ZW0+CiAgICAgICAgPHRpdGxlPkEgZ3VpZGUgdG8gcHJvZHVjdGl2aXR5IGZvciBzb2Z0d2FyZSBlbmdpbmVlcnM8L3RpdGxlPgogICAgICAgIDxsaW5rPmh0dHBzOi8vY2lyY2xlY2kuY29tL2Jsb2cvYS1ndWlkZS10by1wcm9kdWN0aXZpdHktZm9yLXNvZnR3YXJlLWVuZ2luZWVycy88L2xpbms+CiAgICAgICAgPHB1YkRhdGU+VHVlLCAwNiBPY3QgMjAyMCAwNjo0NjowMCAtMDcwMDwvcHViRGF0ZT4KICAgICAgICA8Z3VpZCBpc1Blcm1hTGluaz0idHJ1ZSI+aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy9hLWd1aWRlLXRvLXByb2R1Y3Rpdml0eS1mb3Itc29mdHdhcmUtZW5naW5lZXJzLzwvZ3VpZD4KICAgICAgICAKICAgICAgICAgIDxkYzpjcmVhdG9yPlRhbnlhIFJhbWFua292YTwvZGM6Y3JlYXRvcj4KICAgICAgICAKICAgICAgICAKICAgICAgICAgIDxkZXNjcmlwdGlvbj4mbHQ7aDImZ3Q7VGhlIGV2b2x1dGlvbiBvZiB0YXNrIG1hbmFnZW1lbnQmbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7V2hlbiB5b3Ugc3RhcnQgeW91ciBjYXJlZXIgYXMgYSBzb2Z0d2FyZSBlbmdpbmVlciwgdGFzayBhbmQgdGltZSBtYW5hZ2VtZW50IGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEVpdGhlciB5b3VyIGJvc3Mgb3IgeW91ciB0ZWFtIGFnaWxlIGJvYXJkIHRlbGxzIHlvdSBleGFjdGx5IHdoYXQgdG8gd29yayBvbi4gVGhlcmUgYXJlIHNvbWUgZGlzdHJhY3Rpb25zIGxpa2UgU2xhY2sgYW5kIGVtYWlsIHRoYXQgeW91IGhhdmUgdG8gY29udGVuZCB3aXRoIGJ1dCBmb3IgdGhlIG1vc3QgcGFydCwgaXTigJlzIG5vdCB0b28gYmFkLiBZb3UgZW5qb3kgY29kaW5nLCB5b3VyIHRhc2tzIGFyZSBmdW4sIHlvdSBlYXNpbHkga2VlcCB0aGVtIGluIHlvdXIgbWVudGFsIHRvLWRvIGxpc3QsIGNoZWNrIHRoZW0gb2ZmLCBhbmQgZmVlbCBwcmV0dHkgYWNjb21wbGlzaGVkIGF0IHRoZSBlbmQgb2YgdGhlIGRheS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtZb3UgYXJlIGdvb2QgYXQgd2hhdCB5b3UgZG8hIEJlZm9yZSBsb25nLCB5b3UgYXJlIGFza2VkIHRvIHN0cmV0Y2ggeW91cnNlbGYgYmV5b25kIGp1c3QgdGhlIGl0ZW1zIG9uIHlvdXIgdGVhbSBhZ2lsZSBib2FyZC4gWW91IHN0YXJ0IGhlbHBpbmcgd2l0aCBkZXNpZ24gYW5kIGJyZWFraW5nIGRvd24gZXBpY3MsIHlvdSBhcmUgYXNrZWQgdG8gcHJlc2VudCBpbiBjb21wYW55IGV2ZW50cywgeW91IHZvbHVudGVlciB0byBoZWxwIGFub3RoZXIgdGVhbSB0byBpbnRlZ3JhdGUgd2l0aCB5b3VyIHRlYW3igJlzIHNlcnZpY2UsIHlvdSBmaW5kIHlvdXJzZWxmIHNwZW5kaW5nIG1vcmUgdGltZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGluIFNsYWNrIHRoYXQgcmVxdWlyZSB5b3VyIGV4cGVydGlzZS4gWW91ciB3b3JrIGlzIGJlY29taW5nIG1vcmUgYW1iaWd1b3VzLCBtb3JlIGNvbXBsZXggYW5kIG1vcmUgdW5ib3VuZGVkLiBZb3UgZmluZCB5b3Vyc2VsZiBwcm9jcmFzdGluYXRpbmcuIFlvdSBmZWVsIG1vcmUgb3ZlcndoZWxtZWQuIEJ1dCB5b3UgdGhpbmsgdG8geW91cnNlbGYsIOKAnHRoYXTigJlzIHdoYXQgc3VjY2VzcyBzaG91bGQgZmVlbCBsaWtlIeKAnSBhbmQgZGVjaWRlIHRoYXQgd2l0aCBoYXJkIHdvcmssIHlvdSBzdXJlbHkgd2lsbCBiZSBvbiB0b3Agb2YgYWxsIHRoZSBzcGlubmluZyBwbGF0ZXMg4oCTIGp1c3Qgc3Rhc2ggbW9yZSB0aGluZ3Mgb24geW91ciBtZW50YWwgdG8tZG8gbGlzdCwgeW91IGdvdCB0aGlzISBBbmQgaWYgeW91IGZvcmdldCB0byBkbyBzb21ldGhpbmcsIGl04oCZcyBub3QgYSBiaWcgZGVhbCwgc29tZW9uZSB3aWxsIHN1cmVseSByZW1pbmQgeW91LiZsdDsvcCZndDsKCiZsdDtibG9ja3F1b3RlJmd0OwogICZsdDtwJmd0O1lvdXIgd29yayBpcyBiZWNvbWluZyBtb3JlIGFtYmlndW91cywgbW9yZSBjb21wbGV4IGFuZCBtb3JlIHVuYm91bmRlZCwgYW5kIHlvdSBmaW5kIHlvdXJzZWxmIHByb2NyYXN0aW5hdGluZy4mbHQ7L3AmZ3Q7CiZsdDsvYmxvY2txdW90ZSZndDsKCiZsdDtwJmd0O0EgYml0IG1vcmUgdGltZSBwYXNzZXMsIHlvdSBhcmUgcHJvbW90ZWQgeWV0IGFnYWluLiBOb3cgeW91IGZpbmQgeW91cnNlbGYgd29ya2luZyBsZXNzIGFuZCBsZXNzIG9uIGl0ZW1zIGZyb20gdGhlIHRlYW0gYWdpbGUgYm9hcmQsIGFuZCB5b3VyIGRheXMgYXJlIHNwZW50IGluIHdoYXQgZmVlbHMgbGlrZSBlbmRsZXNzIG1lZXRpbmdzLCByZXZpZXdpbmcgZGVzaWducywgZG9tYWluIG1vZGVscywgYXJjaGl0ZWN0dXJlIHNwZWNzLCByZXNlYXJjaGluZyBuZXcgdGVjaG5vbG9naWVzLCBsZWFkaW5nIGVmZm9ydHMsIGFuZCB3cml0aW5nIGV2ZW4gbW9yZSBkb2N1bWVudHMsIGFsbCB1bmRlciBhIGNvbnN0YW50IGJhcnJhZ2Ugb2YgcXVlc3Rpb25zIGFuZCBwaW5ncyBpbiBTbGFjayBhbmQgZW1haWwuIExlc3Mgb2YgeW91ciB3b3JrIHNlZW1zIOKAnGZ1buKAnS4gV2hlbiB5b3UgbG9vayBiYWNrIG9uIHlvdXIgZGF5LCB5b3UgcmVhbGl6ZSB0aGF0IHlvdSBzcGVudCBtb3N0IG9mIGl0IGluIGJldHdlZW4gbWVldGluZ3MgYW5kIGFuc3dlcmluZyBhIG15cmlhZCBvZiBxdWVzdGlvbnMgaW4gU2xhY2suIFlvdSBmb3Jnb3Qgb3IgZGlkbuKAmXQgaGF2ZSB0aW1lIHRvIG1ha2UgYW55IHByb2dyZXNzIG9uIGltcG9ydGFudCBzdHVmZiwgYSBmZXcgb2YgeW91ciBzcGlubmluZyBwbGF0ZXMgYXJlIG5vdyByZXN0aW5nIG9uIHRoZSBmbG9vciwgdW50b3VjaGVkLCB3aXRoIHlvdSBhY3RpdmVseSByZXNpc3RpbmcgdG8gZmluZCB0aW1lIGZvciB0aGVtIGFuZCBubyBvbmUgdGhlcmUgdG8gcmVtaW5kIHlvdSBhYm91dCBhbGwgb2YgdGhlIHRoaW5ncyB0aGF0IGFyZSBnZXR0aW5nIGRyb3BwZWQuIFNvbWUgZGF5cywgeW91IGFyZSBub3QgcmVhbGx5IHN1cmUgaWYgeW914oCZdmUgYWNjb21wbGlzaGVkIGFueXRoaW5n4oCmJmx0Oy9wJmd0OwoKJmx0O2gyJmd0O0FtYmlndWl0eSB1cCwgcHJvZHVjdGl2aXR5IGRvd24mbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7RG9lcyB0aGlzIHNvdW5kIGZhbWlsaWFyPyBJZiBzbywgY29uZ3JhdHVsYXRpb25zISBZb3XigJl2ZSBiZWVuIHN1Y2Nlc3NmdWwgaW4geW91ciBlbmdpbmVlcmluZyBjYXJlZXIgYW5kIHlvdSBhcmUgd29ya2luZyBmb3IgYW4gb3JnYW5pemF0aW9uIHRoYXQgaXMgcHVzaGluZyB5b3UgdG8gZ3JvdyEgSW4gbXkgY2FyZWVyLCBJIGRlZmluaXRlbHkgZ290IHRvIHRoZSBwb2ludCB3aGVyZSBJIGNvdWxkIG5vIGxvbmdlciByZWx5IG9uIHNpbXBsZSBzdHJlYW1zIG9mIHRhc2tzIHRoYXQgd29ya2VkIGZvciBtZSB1cCB1bnRpbCB0aGF0IHBvaW50OiB0aG9zZSBzaW1wbGUgdGltZXMgd2hlbiBJIGNvdWxkIGp1c3QgcGljayBzb21ldGhpbmcgdXAgZnJvbSBteSB0ZWFtIGFnaWxlIGJvYXJkIG9yIGFuc3dlciBhIG1hbmFnZWFibGUgbnVtYmVyIG9mIHJlcXVlc3RzIGluIFNsYWNrIGFuZCBnZXQgYmFjayB0aGF0IGNvdmV0ZWQgOnRoYW5reW91OiBlbW9qaS4gSXQgZXZlbnR1YWxseSBiZWNhbWUgdW5yZWFzb25hYmxlIGZvciBtZSB0byBleHBlY3QgYWxsIG9mIG15IHdvcmsgdG8gYmUg4oCcZnVu4oCdIHRvIG5hdHVyYWxseSBtb3RpdmF0ZSBtZS4gQW5kIEkgaGFkIHRvIHJlY29uY2lsZSB0aGUgY29uZmxpY3QgYmV0d2VlbiBoYXZpbmcgdG8gZG8gbW9yZSBhbWJpZ3VvdXMsIGNvbXBsZXggdGFza3MgdGhhdCBoYXZlIHZlcnkgbG9uZyBjeWNsZXMgd2hpbGUgc3RpbGwgZmVlbGluZyBnb29kIGFib3V0IG15IGRheSAoaXTigJlzIGVhc3kgdG8gc2VlIHNvbWV0aGluZyB5b3UgY29kZWQgZ2V0dGluZyBkZXBsb3llZCB0byBwcm9kdWN0aW9uIGFuZCBmZWVsIGFjY29tcGxpc2hlZCwgaXTigJlzIG11Y2ggaGFyZGVyIHRvIGxvb2sgYXQgYSBwaWxlIG9mIGRvY3VtZW50cyB5b3XigJl2ZSByZWFkIG9yIGNyZWF0ZWQsIG9yIFNsYWNrIHRocmVhZHMgeW91IHBhcnRpY2lwYXRlZCBpbiwgYW5kIGZlZWwgdGhlIHNhbWUpLiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7R3Jvd2luZyBpbiB5b3VyIGVuZ2luZWVyaW5nIGNhcmVlciBhbmQgdGFraW5nIG9uIGEgbGVhZGVyc2hpcCByb2xlIHJlcXVpcmVzIGEgbmV3IGFwcHJvYWNoIHRvIHByb2R1Y3Rpdml0eS4mbHQ7L3N0cm9uZyZndDsmbHQ7L3AmZ3Q7CgombHQ7cCZndDtJ4oCZdmUgYWx3YXlzIGJlZW4gaW50ZXJlc3RlZCBpbiBwcm9kdWN0aXZpdHkuIEFmdGVyIHJlYWRpbmcgbWFueSBib29rcyBhbmQgYXJ0aWNsZXMgb24gdGhlIHRvcGljIGFuZCB0cnlpbmcgdmFyaW91cyB0ZWNobmlxdWVzLCBJIGV2ZW50dWFsbHkgZmlndXJlZCBvdXQgdGhhdCAmbHQ7ZW0mZ3Q7cHJvZHVjdGl2aXR5IGlzIG5vdCBhYm91dCBkb2luZyBtb3JlLiZsdDsvZW0mZ3Q7IFRoZSBxdWVzdGlvbiB0aGF0IGtlcHQgcG9wcGluZyB1cCBhZ2FpbiBhbmQgYWdhaW4gb24gbXkgcXVlc3QgdG8g4oCcYmVpbmcgbW9yZSBwcm9kdWN0aXZl4oCdIHdhcyB2ZXJ5IHNpbXBsZSBhbmQgaGFkIGxpdHRsZSB0byBkbyB3aXRoIHRoZSBudW1iZXIgb2YgdGhpbmdzIEnigJlkIGRvbmUgb3IgaG93IGJ1c3kgSeKAmWQgYmVlbi4gSW5zdGVhZCBpdCB3YXMgc2ltcGx5LCDigJxXaGF0IGhhdmUgSSBhY2NvbXBsaXNoZWQgdG9kYXk/4oCdLiZsdDsvcCZndDsKCiZsdDtibG9ja3F1b3RlJmd0OwogICZsdDtwJmd0O1RoZSBxdWVzdGlvbiB0aGF0IGtlcHQgcG9wcGluZyB1cCBhZ2FpbiBhbmQgYWdhaW4gd2FzLCDigJxXaGF0IGhhdmUgSSBhY2NvbXBsaXNoZWQgdG9kYXk/4oCdJmx0Oy9wJmd0OwombHQ7L2Jsb2NrcXVvdGUmZ3Q7CgombHQ7cCZndDtVc2luZyBhZHZpY2UgZnJvbSBudW1lcm91cyBwcm9kdWN0aXZpdHkgcmVzb3VyY2VzICgmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vd3d3LmFtYXpvbi5jb20vZHAvQjAwWjNHMjM5VyZxdW90OyZndDtQcm9kdWN0aXZpdHkgUHJvamVjdCZsdDsvYSZndDssICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly96ZW5oYWJpdHMubmV0L3plbi10by1kb25lLXp0ZC10aGUtdWx0aW1hdGUtc2ltcGxlLXByb2R1Y3Rpdml0eS1zeXN0ZW0vJnF1b3Q7Jmd0O1plbiBUbyBEb25lJmx0Oy9hJmd0OywgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2J1bGxldGpvdXJuYWwuY29tLyZxdW90OyZndDtCdWxsZXQgSm91cm5hbCZsdDsvYSZndDssICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly93d3cuYW1hem9uLmNvbS9HZXR0aW5nLVRoaW5ncy1Eb25lLVN0cmVzcy1GcmVlLVByb2R1Y3Rpdml0eS9kcC8wMTQzMTI2NTYzJnF1b3Q7Jmd0O0dldHRpbmcgVGhpbmdzIERvbmUmbHQ7L2EmZ3Q7IGFuZCBtYW55IG90aGVycykgSSBkZXZlbG9wZWQgYSBzdXN0YWluYWJsZSBzeXN0ZW0gdGhhdCB3b3JrZWQgZm9yIG1lLCB0aGF0IGNvdWxkIGFsbG93IG1lIHRvIGtlZXAgdHJhY2sgb2YgYWxsIHRoZSBzcGlubmluZyBwbGF0ZXMgd2l0aG91dCBnZXR0aW5nIG92ZXJ3aGVsbWVkIGFuZCB0aGF0IHdvdWxkIGhlbHAgbWUgZmVlbCBsaWtlIEkgYWNjb21wbGlzaGVkIHNvbWV0aGluZyB1c2VmdWwgYXQgdGhlIGVuZCBvZiB0aGUgZGF5LiZsdDsvcCZndDsKCiZsdDtoMiZndDtQcm9kdWN0aXZpdHkgd2hlbiBlbmdpbmVlcmluZyB3b3JrIGdldHMgYW1iaWd1b3VzJmx0Oy9oMiZndDsKCiZsdDtoMyZndDsxLiBDaG9vc2UgbXkgZm9jdXMmbHQ7L2gzJmd0OwombHQ7cCZndDtUaGUgZmlyc3Qgc3RlcCB3YXMgdG8gYmVjb21lIGRlbGliZXJhdGUgYWJvdXQgd2hhdCBJIHdvcmsgb24uIEFzIGVuZ2luZWVycyB3ZSBjYW4gd29yayBvbiBtYW55IGRpZmZlcmVudCB0aGluZ3MsIHNvbWUgb2YgdGhlbSBhcmUgcHVyZWx5IGVuam95YWJsZSwgc29tZSBtYWtlIG91ciBwcm9kdWN0IGJldHRlciwgc29tZSBlbmFibGUgb3VyIHRlYW1tYXRlcywgc29tZSBoZWxwIG90aGVyIHRlYW1zIG9yIG91ciBjb21wYW55LiBIb3cgZG8gd2UgY2hvb3NlIHdoYXQgdG8gZm9jdXMgb24gYW55IGdpdmVuIGRheT8mbHQ7L3AmZ3Q7CgombHQ7cCZndDtUbyBoZWxwIG1lIGRlY2lkZSBJIGxpc3RlZCBvdXQgYWxsIG9mIHRoZSBwb3NzaWJsZSBmb2N1cyBhcmVhcyB0aGF0IEkgY291bGQgcHV0IG15IGVuZXJneSB0b3dhcmRzOiBsZWFybmluZywgY29kaW5nIGZlYXR1cmVzLCBtYWtpbmcgYXJjaGl0ZWN0dXJhbCBpbXByb3ZlbWVudHMsIG1lbnRvcmluZy9jb2FjaGluZywgaW1wcm92aW5nIHRlYW0gb3Igb3JnYW5pemF0aW9uIHByb2Nlc3NlcywgZ3Jvd2luZyBlbmdpbmVlcmluZyBpbmZsdWVuY2UsIGV0Yy4gRWFjaCBtb250aCAob3IgcXVhcnRlcikgSSBwaWNrIG9ubHkgMyBmb2N1cyBhcmVhcyB3aGVyZSBJIGFtIGdvaW5nIHRvIHB1dCBtb3N0IG9mIG15IGVuZXJneS4gVG8gaGVscCBtZSBkZWNpZGUsIEkgYW5zd2VyIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zIGZvciBlYWNoIG9mIHRoZSBmb2N1cyBhcmVhczombHQ7L3AmZ3Q7CgombHQ7dWwmZ3Q7CiAgJmx0O2xpJmd0O0RvIEkgZW5qb3kgdGhpcz8gJmx0O2JyIC8mZ3Q7Jmx0Oy9saSZndDsKICAmbHQ7bGkmZ3Q7RG9lcyB0aGlzIGhlbHAgbWUvbXkgY2FyZWVyPyAmbHQ7YnIgLyZndDsmbHQ7L2xpJmd0OwogICZsdDtsaSZndDtEb2VzIHRoaXMgaGVscCBteSB0ZWFtIHJpZ2h0IG5vdz8mbHQ7YnIgLyZndDsmbHQ7L2xpJmd0OwogICZsdDtsaSZndDtEb2VzIHRoaXMgaGVscCBteSBjb21wYW55IHJpZ2h0IG5vdz8mbHQ7L2xpJmd0OwombHQ7L3VsJmd0OwoKJmx0O3AmZ3Q7TXkgYW5zd2VycyBtaWdodCBjaGFuZ2UgbW9udGggdG8gbW9udGguIEZvciBleGFtcGxlLCBpbXByb3ZpbmcgdGVhbSBwcm9jZXNzZXMgbWlnaHQgYWN0dWFsbHkgbm90IGhlbHAgbXkgdGVhbSByaWdodCBub3cgaWYgdGhlcmUgYXJlIG90aGVyIGZvbGtzIG9uIG15IHRlYW0gd2hvIGFyZSBhbHJlYWR5IGRvaW5nIHRoYXQuIEkgdHJ5IHRvIGhhdmUgYSBjb21iaW5hdGlvbiBvZiB0aGluZ3MgdGhhdCBJIGVuam95IGFzIHdlbGwgYXMgdGhpbmdzIHRoYXQgSSBtaWdodCByZXNpc3QgYnV0IHdoaWNoIGhlbHAgbWUsIG15IHRlYW0sIG9yIG15IGNvbXBhbnkuIEkgYmVncnVkZ2luZ2x5IHJlY29nbml6ZSB0aGF0IGRpc2NvbWZvcnQgdmVyeSBmcmVxdWVudGx5IG1lYW5zIGdyb3d0aCwgc28gSSBmb3JjZSBteXNlbGYgdG8gdHJ5IHNvbWUgb2YgdGhlIGFyZWFzIHRoYXQgZmVlbCDigJxoYXJk4oCdIG9yIOKAnW5vdCBmdW7igJ0uIEF0IHRoZSBzYW1lIHRpbWUgSSBrbm93IHRoYXQgdGhlc2UgY2hhbGxlbmdpbmcgYXJlYXMgd2lsbCByZXF1aXJlIHNpZ25pZmljYW50bHkgbW9yZSBlbmVyZ3ksIHNvIGNob29zaW5nIDMg4oCcaGFyZOKAnSBhcmVhcyBhdCBvbmNlIG1vc3QgbGlrZWx5IHdpbGwgcmVzdWx0IGluIG1lIHJlc2lzdGluZyB0byBtYWtlIHByb2dyZXNzIGluIGFueSBvZiB0aGVtLiBTdXN0YWluYWJsZSBkaXNjb21mb3J0IChvciBncm93dGgpIGlzIHRoZSBrZXkhJmx0Oy9wJmd0OwoKJmx0O2Jsb2NrcXVvdGUmZ3Q7CiAgJmx0O3AmZ3Q7RGlzY29tZm9ydCB2ZXJ5IGZyZXF1ZW50bHkgbWVhbnMgZ3Jvd3RoLiZsdDsvcCZndDsKJmx0Oy9ibG9ja3F1b3RlJmd0OwoKJmx0O3AmZ3Q7T25jZSBJIGhhdmUgbXkgYXJlYXMgb2YgZm9jdXMgY2hvc2VuIEkgd2lsbCB1c2UgdGhlbSBhcyB0aGUgZmlsdGVyIHRocm91Z2hvdXQgdGhlIG1vbnRoIG9yIHF1YXJ0ZXIgZm9yIGFueSB3b3JrIHRoYXQgaXMgY29taW5nIG15IHdheS4gSeKAmWxsIGFsc28gc2VlayBvdXQgb3Bwb3J0dW5pdGllcyBhbmQgb3JpZ2luYXRlIHdvcmsgdGhhdCBmYWxsIHdpdGhpbiBteSB0b3AgMyBmb2N1cyBhcmVhcy4gVGhpcyBhbGxvd3MgbWUgdG8gaW5pdGlhdGUgaW50ZXJlc3Rpbmcgc3RyZWFtcyBvZiB3b3JrIHRoYXQgbm8gb25lIHNwZWNpZmljYWxseSBhc2tlZCBtZSB0byBkby4gSGF2aW5nIHRoaXMgZmlsdGVyIGRvZXNu4oCZdCBuZWNlc3NhcmlseSBtZWFuIHRoYXQgSSB3aWxsIG5vdCBkbyBhbnkgd29yayBvdXRzaWRlIG9mIHRoZXNlIGFyZWFzIChnb29kIGx1Y2sgdGVsbGluZyB5b3VyIGJvc3MgeW91IGFyZSByZWZ1c2luZyB0byBkbyBzb21ldGhpbmcgYmVjYXVzZSBpdCBkb2VzbuKAmXQgYWxpZ24gd2l0aCB5b3VyIGZvY3VzIGZvciB0aGlzIG1vbnRoKS4gQnV0LCBpZiBJIGhhdmUgYSBjaG9pY2UsIEnigJlsbCBjaG9vc2UgdGFza3MgdGhhdCBhbGlnbiBhbmQgcHVudCBvbiB0YXNrcyB0aGF0IGRvbuKAmXQuJmx0Oy9wJmd0OwoKJmx0O2gzJmd0OzIuIEdldCB0aGluZ3MgZG9uZSZsdDsvaDMmZ3Q7CiZsdDtwJmd0O1RoZSBzZWNvbmQgc3RlcCB3YXMgdG8gYmVjb21lIGRlbGliZXJhdGUgaW4gaG93IEkgbWFrZSBwcm9ncmVzcyBpbiB0aGUgYXJlYXMgSSBjaG9zZSAob3IgaG93IEkgd29yaykuICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly96ZW5oYWJpdHMubmV0L3plbi10by1kb25lLXp0ZC10aGUtdWx0aW1hdGUtc2ltcGxlLXByb2R1Y3Rpdml0eS1zeXN0ZW0vJnF1b3Q7Jmd0O1plbiBUbyBEb25lIChaVEQpJmx0Oy9hJmd0OyB0YWxrcyBhYm91dCBjaG9vc2luZyAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vemVuaGFiaXRzLm5ldC9iaWctcm9ja3MtZmlyc3QtZG91YmxlLXlvdXItcHJvZHVjdGl2aXR5LXRoaXMtd2Vlay8mcXVvdDsmZ3Q7YmlnIHJvY2tzJmx0Oy9hJmd0OyBmb3IgeW91ciB3ZWVrIGFuZCBjaG9vc2luZyAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vemVuaGFiaXRzLm5ldC9wdXJwb3NlLXlvdXItZGF5LW1vc3QtaW1wb3J0YW50LXRhc2svJnF1b3Q7Jmd0O01JVHMgKG1vc3QgaW1wb3J0YW50IHRhc2tzKSZsdDsvYSZndDsgZm9yIHlvdXIgZGF5LiBUaGUgaWRlYSBpcyB0aGF0IGlmIHlvdSBkb27igJl0IHByaW9yaXRpemUgeW91ciDigJxiaWcgcm9ja3PigJ0sIHRpbnkgcGViYmxlcyB3aWxsIGZpbGwgeW91ciBkYXkgYW5kIHlvdSB3b27igJl0IGFjY29tcGxpc2ggdmVyeSBtdWNoLiBJIGZvdW5kIHRoYXQgb25jZSBJIGhhZCBteSBkaXJlY3Rpb24gc2V0IEkgY291bGQgZGVsaWJlcmF0ZWx5IHBsYW4gbXkgd2VlayBieSBjaG9vc2luZyB0b3AgMi0zIHByb2plY3RzIG9yIHRhc2tzIChha2EgYmlnIHJvY2tzKSB0aGF0IEnigJlkIGxpa2UgdG8gbWFrZSBwcm9ncmVzcyBvbiB0aGlzIHdlZWsuIEFuZCB0aGVuIGVhY2ggZGF5IEkgY291bGQgZGVsaWJlcmF0ZWx5IGNob29zZSB0b3AgMi0zIHRhc2tzIHRoYXQgSeKAmWQgbGlrZSB0byBhY2NvbXBsaXNoIGFuZCB0aGF0IHdvdWxkIGhlbHAgdG8gbW92ZSBteSB3ZWVrbHkgYmlnIHJvY2tzIGZvcndhcmQuIEFzIHlvdSBwcm9iYWJseSBub3RpY2VkIGl04oCZcyDigJxjaG9vc2UgdG9wIDPigJ0gYWxsIHRoZSB3YXkgZG93biEmbHQ7L3AmZ3Q7CgombHQ7YmxvY2txdW90ZSZndDsKICAmbHQ7cCZndDtpZiB5b3UgZG9u4oCZdCBwcmlvcml0aXplIHlvdXIg4oCcYmlnIHJvY2tz4oCdLCB0aW55IHBlYmJsZXMgd2lsbCBmaWxsIHlvdXIgZGF5IGFuZCB5b3Ugd29u4oCZdCBhY2NvbXBsaXNoIHZlcnkgbXVjaC4mbHQ7L3AmZ3Q7CiZsdDsvYmxvY2txdW90ZSZndDsKCiZsdDtwJmd0O0ZvciBhbnkgcGxhbiB0byB3b3JrIGl0IG5lZWRzIHRvIGJlIHJlYWxpc3RpYyBhbmQgYWNoaWV2YWJsZS4gQmVmb3JlIHRoZSBzdGFydCBvZiBlYWNoIHdlZWsgSSBsb29rIGF0IG15IHNjaGVkdWxlIHRvIHNlZSB3aGF0IG1lZXRpbmdzIEkgaGF2ZSB0aGF0IHdlZWsuIERvIEkgbmVlZCB0byBwcmVwYXJlIGZvciBhbnkgb2YgdGhlbT8gSWYgc28sIHByZXAgY2FuIGJlY29tZSBvbmUgb2YgbXkgTUlUcyBzb21lIGRheSBiZWZvcmUgdGhlIG1lZXRpbmcuIEFyZSB0aGVyZSBhbnkgbWVldGluZ3MgcmVsYXRlZCB0byBwcm9qZWN0cyBpbiBteSBmb2N1cyBhcmVhcz8gSWYgc28sIEkgY2FuIGNob29zZSB0aG9zZSBwcm9qZWN0cyBhcyBteSBiaWcgcm9ja3MgZm9yIHRoYXQgd2Vlay4gTG9va2luZyBhaGVhZCBhbHNvIGhlbHBzIG1lIGp1ZGdlIGhvdyBtdWNoIHRpbWUgYW5kIGVuZXJneSBJ4oCZbGwgYWN0dWFsbHkgaGF2ZSBuZXh0IHdlZWsuIElmIEkgaGF2ZSB0b28gbWFueSBjb250ZXh0IHN3aXRjaGVzIHRocm91Z2hvdXQgdGhlIHdlZWssIGl04oCZcyB1bmxpa2VseSBJ4oCZbGwgaGF2ZSBhIHRvbiBvZiBlbmVyZ3kgbGVmdCB0byB3b3JrIG9uIGFueXRoaW5nIGNoYWxsZW5naW5nLiBJIGFsc28gdHJ5IHRvIGZpbmQgY2h1bmtzIG9mIG1lZXRpbmctZnJlZSB0aW1lIGluIG15IHNjaGVkdWxlIGFuZCBpbnRlbnRpb25hbGx5IGJsb2NrIHRoZW0gb2ZmIGZvciBmb2N1c2VkIHdvcmsuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7QmVmb3JlIHRoZSBzdGFydCBvZiBlYWNoIGRheSBJIGRvIG1vcmUgdGFjdGljYWwgcGxhbm5pbmcgZm9yIHRoYXQgZGF5OiBhcmUgdGhlcmUgYW55IHRhc2tzIHN0aWxsIHJlbWFpbmluZyB0byBhY2NvbXBsaXNoIG15IHdlZWtseSBiaWcgcm9ja3M/IERvIEkgbmVlZCB0byBjb3Vyc2UgY29ycmVjdCBhbmQgZG8gc29tZXRoaW5nIHRoYXQgY2FtZSB1cCBkdXJpbmcgdGhlIHdlZWs/IElzIGl0IG1vcmUgaW1wb3J0YW50IHRoYW4gd2hhdCBJIGhhZCBwbGFubmVkIHRvIGRvPyBJIGFsc28gdHJ5IHRvIHNwbGl0IG15IGRheSBpbnRvIOKAnHJlYWN0aXZl4oCdIGFuZCDigJxmb2N1c2Vk4oCdIHBhcnRzLiBEdXJpbmcgcmVhY3RpdmUgdGltZSBJIGxldCBteXNlbGYg4oCcd2FuZGVyIGFyb3VuZOKAnSBhbmQgc2ltcGx5IHJlYWN0IHRvIHRoaW5ncyB0aGF0IHNob3cgdXAsIHJlcGx5IHRvIHF1ZXN0aW9ucyBvciByZXF1ZXN0cyBpbiBTbGFjaywgY2hlY2sgZW1haWwsIGF0dGVuZCBtZWV0aW5ncy4gQnV0IGR1cmluZyBteSBmb2N1cyB0aW1lIEkgdHJ5IG15IGJlc3QgdG8gZGlzY29ubmVjdCwgc2h1dCBkb3duIG9yIGF0IGxlYXN0IG1pbmltaXplIFNsYWNrLCBjbG9zZSBlbWFpbCBhbmQgb3RoZXIgc291cmNlcyBvZiBub3RpZmljYXRpb25zIGFuZCBhY3R1YWxseSB3b3JrIG9uIHdoYXQgSSBwbGFubmVkIHRvIGRvIHRoYXQgZGF5LiBGb3IgYW55IG5ldyB0YXNrIG9yIHJlcXVlc3QgdGhhdCBwb3BzIHVwIEkgc2ltcGx5IHdyaXRlIGl0IGRvd24gdG8gZm9sbG93IHVwIGxhdGVyLiBXcml0aW5nIGl0IGRvd24gKGFzIG9wcG9zZWQgdG8ga2VlcGluZyBpdCBpbiBteSBicmFpbiBzcGFjZSkgZ2l2ZXMgbWUgYSBwZWFjZSBvZiBtaW5kIHRoYXQgSSB3b27igJl0IGZvcmdldCB0byBkbyBpdCBsYXRlciBidXQgaXQgYWxzbyBhbGxvd3MgbWUgdG8ga2VlcCBmb2N1c2luZyBvbiBteSBwbGFubmVkIHdvcmsgYW5kIHJlc2lzdCB0aGUgdGVtcHRhdGlvbiBvZiBzd2l0Y2hpbmcgY29udGV4dC4gSXTigJlzIHF1aXRlIG9kZCBqdXN0IGhvdyBtdWNoIG91ciBicmFpbnMgbG92ZSB0aGUgaWRlYSBvZiBtdWx0aXRhc2tpbmcgYW5kIGdldHRpbmcgZGlzdHJhY3RlZCBnaXZlbiBob3cgaW5lZmZlY3RpdmUgd2UgYWN0dWFsbHkgYXJlIGF0IGRvaW5nIG1vcmUgdGhhbiBvbmUgdGhpbmcgYXQgYSB0aW1lLiZsdDsvcCZndDsKCiZsdDtoMyZndDszLiBBbmFseXplIGFuZCBpdGVyYXRlJmx0Oy9oMyZndDsKJmx0O3AmZ3Q7UGxhbm5pbmcgYW5kLCBtb3JlIGltcG9ydGFudGx5LCBzdGlja2luZyB0byB0aGUgcGxhbiBpcyBhbiBlc3NlbnRpYWwgcGFydCBvZiBteSB3ZWVrbHkgYW5kIGRhaWx5IHJpdHVhbC4gSXQgYWxsb3dzIG1lIHRvIGZvY3VzIG9uIHRoaW5ncyB0aGF0IGFjdHVhbGx5IG1hdHRlciB0byBtZSBhbmQgaXQgZm9yY2VzIG1lIHRvIGJyZWFrIGRvd24gbGFyZ2UgYW1iaWd1b3VzIHByb2plY3RzIGludG8gc21hbGxlciBhY2hpZXZhYmxlIHRhc2tzLiBCZWluZyBkZWxpYmVyYXRlIGFuZCBzcGVuZGluZyB0aW1lIHBsYW5uaW5nIGhhcyBhbm90aGVyIGludGVyZXN0aW5nIHNpZGUgZWZmZWN0OiBJIGNhbiBsb29rIGJhY2sgb24gbXkgd2VlayBvciBteSBkYXksIHJldmlldyBhbmQgY2VsZWJyYXRlIHRoaW5ncyBJ4oCZdmUgYWNjb21wbGlzaGVkIChhIG5pY2UgbW90aXZhdGlvbiBib29zdCEpLCBhbmQgSSBjYW4gYWxzbyBhbmFseXplIHRhc2tzIHRoYXQgSSByZXNpc3RlZC4gV2UgdGVuZCB0byBwcm9jcmFzdGluYXRlIG9uIHRoaW5ncyB0aGF0IGFyZSB0b28gaGFyZCBvciB0b28gYm9yaW5nLiAgQW5hbHl6aW5nIHdoYXQgY2F1c2VkIG1lIHRvIHJlc2lzdCBhIHRhc2sgY2FuIG9mdGVuIGhlbHAgbWUgdG8gb3ZlcmNvbWUgdGhhdCBuYXR1cmFsIHRlbmRlbmN5LiBJIHNwZW5kIGEgYml0IG9mIHRpbWUgZHVyaW5nIG15IHdlZWtseSBwbGFubmluZyB0aGlua2luZyBhYm91dCDigJx3aHnigJ1zIGZvciBteSBiaWcgcm9ja3M6IHdoeSBzaG91bGQgSSBkbyB0aGlzIHByb2plY3Qgb3IgdGhpcyB0YXNrPyBKdXN0IGFuc3dlcmluZyB0aGF0IHF1ZXN0aW9uIG9mdGVuIG1vdGl2YXRlcyBtZSBlbm91Z2ggdG8gcHVzaCB0aHJvdWdoIHNvbWUgb2YgdGhlIGhhcmRlciBvciBsZXNzIOKAnGZ1buKAnSBpdGVtcyBvbiBteSBsaXN0LiBBbGwgb2YgYSBzdWRkZW4gc29tZXRoaW5nIHRoYXQgd2FzIGJvcmluZyBiZWNvbWVzIG11Y2ggbW9yZSBtb3RpdmF0aW5nLiBBbmQgaWYgc29tZXRoaW5nIGlzIHRvbyBoYXJkIG9yIGFtYmlndW91cyBJIHRyeSB0byBhbnN3ZXIgYSBzaW1wbGUgcXVlc3Rpb246IHdoYXQgaXMgdGhlIHZlcnkgbmV4dCB0aW55IHN0ZXAgSSBjYW4gdGFrZSB0byBtYWtlIHNvbWUgZm9yd2FyZCBwcm9ncmVzcz8gT2Z0ZW4gaXQgZG9lc27igJl0IG5lZWQgdG8gYmUgYSB2ZXJ5IGFtYml0aW91cyBmaXJzdCBzdGVwLCBzb21ldGltZXMganVzdCBzY2hlZHVsaW5nIGEgbWVldGluZyB0byBicmFpbnN0b3JtIHNvbWUgaWRlYXMgd2l0aCBzb21lb25lIGVsc2UgaXMgZW5vdWdoLiBBbmQgb25jZSB5b3UgbWFrZSB0aGF0IGZpcnN0IHN0ZXAsIHlvdSBjYW4gZmlndXJlIG91dCB0aGUgbmV4dCBzdGVwIHRvIHRha2UuJmx0Oy9wJmd0OwoKJmx0O2Jsb2NrcXVvdGUmZ3Q7CiAgJmx0O3AmZ3Q7QnkgYW5zd2VyaW5nIOKAnHdoeSzigJ0gYWxsIG9mIGEgc3VkZGVuIHNvbWV0aGluZyB0aGF0IHdhcyBib3JpbmcgYmVjb21lcyBtdWNoIG1vcmUgbW90aXZhdGluZy4mbHQ7L3AmZ3Q7CiZsdDsvYmxvY2txdW90ZSZndDsKCiZsdDtwJmd0O1BsYW5uaW5nIGFuZCBiZWluZyBkZWxpYmVyYXRlIHJlYWxseSBoZWxwZWQgbWUgcmVhbGl6ZSB0aGF0IHlvdSBjYW4gbWFrZSBzaWduaWZpY2FudCBwcm9ncmVzcyBvbiBsYXJnZSBwcm9qZWN0cyBieSB0YWtpbmcgdGlueSBzdGVwcyBmb3J3YXJkLiBXaGVuIHdlIHRyYWluIHJ1bm5pbmcgYSBsb25nIGRpc3RhbmNlIHdlIG5hdHVyYWxseSB1bmRlcnN0YW5kIHRoaXMgY29uY2VwdDogaWYgYWxsIEkgdGhpbmsgYWJvdXQgaXMgdGhlIGZpbmlzaCBsaW5lIGl04oCZcyB2ZXJ5IGVhc3kgZm9yIG1lIHRvIGdldCBkaXNjb3VyYWdlZCBhcyBzb29uIGFzIEkgZ2V0IHRpcmVkOiBJIGhhdmUgc3RpbGwgdG9vIGZhciB0byBnbywgSSBzaG91bGQganVzdCBzdG9wIG5vdy4gQnV0IGlmIEkgZm9jdXMgb24gcnVubmluZyB0aWxsIHRoYXQgdHJlZSB0aGF0IGlzIGp1c3QgYSBtaWxlIGFoZWFkIGFuZCBvbmNlIEkgZ2V0IHRoZXJlIEkgd2lsbCBjZWxlYnJhdGUgdGhhdCBzbWFsbCB3aW4gYW5kIGRlY2lkZSBpZiBJIHdhbnQgdG8gc3RvcCBvciBpZiBJIHNob3VsZCBwaWNrIG15IG5leHQgdGFyZ2V0LCBhbGwgb2YgYSBzdWRkZW4gdGhlIHBhdGggYmVjb21lcyBtYW5hZ2VhYmxlLiZsdDsvcCZndDsKCiZsdDtwJmd0O1RvbyBvZnRlbiB3ZSBkb27igJl0IHJlYWxpemUgaG93IGltcG9ydGFudCBjZWxlYnJhdGluZyB0aGVzZSBzbWFsbCB3aW5zIGlzIHRvIGtlZXAgdXMgZ29pbmcuIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgd2hlbiB3b3JraW5nIG9uIGxhcmdlLCBjb21wbGV4LCBhbWJpZ3VvdXMgYW5kIHVuYm91bmRlZCBwcm9qZWN0cy4gV2Ugc2V0IG91ciBleWVzIG9uIHRoZSBlbmQgZ29hbCBhbmQgcmVmdXNlIHRvIGVuam95IHRoZSByaWRlIHVudGlsIHRoZSBlbnRpcmUgcHJvamVjdCBpcyDigJxmaW5pc2hlZOKAnS4gQnV0IGFzIHlvdSBncm93LCB5b3VyIGZpbmlzaCBsaW5lcyBtb3ZlIGZhcnRoZXIgYW5kIGZhcnRoZXIgYXdheS4gSXQgbWlnaHQgdGFrZSBtb250aHMgb3IgZXZlbiBsb25nZXIgZm9yIHNvbWUgb2YgeW91ciBpbml0aWF0aXZlcyB0byBoYXZlIGEgdmlzaWJsZSBpbXBhY3QgKGlmIGFueSksIGFuZCB2ZXJ5IG9mdGVuIHdoZW4gaXQgYWN0dWFsbHkgY29tZXMgdG8gZnJ1aXRpb24gc28gbWFueSBkaWZmZXJlbnQgZm9sa3MgYW5kIHRlYW1zIGhhdmUgY29udHJpYnV0ZWQgdG8gaXRzIHN1Y2Nlc3MgdGhhdCBpdOKAmWxsIGJlIHZlcnkgaGFyZCBmb3IgeW91IHRvIGxvb2sgYmFjayBhbmQgZmVlbCBhY2NvbXBsaXNoZWQuIEhvdyBtdWNoIGRpZCB5b3UgYWN0dWFsbHkgbWF0dGVyPyZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpJmd0O0ZvY3VzaW5nIG9uIHNpbXBseSBtYWtpbmcgcHJvZ3Jlc3MgdG93YXJkcyB0aGluZ3MgdGhhdCBtYXR0ZXIgYW5kIGVuam95aW5nIHRoZSBqb3VybmV5IGlzIHdoYXQgd2lsbCBtYWtlIHlvdSByZXNpbGllbnQsIHRlbmFjaW91cyBhbmQgaGVscCB5b3UgcmVhY2ggeW91ciBkZXNpcmVkIGRlc3RpbmF0aW9uIGFuZCBjaG9vc2UgYSBtZWFuaW5nZnVsIHBhdGggYWxvbmcgdGhlIHdheS4mbHQ7L2kmZ3Q7Jmx0Oy9wJmd0OwoKJmx0O2gyJmd0O0FuIGV4YW1wbGUgZnJvbSBteSBwbGFubmVyJmx0Oy9oMiZndDsKCiZsdDtwJmd0O0kgYWN0dWFsbHkgYXBwbGllZCBldmVyeXRoaW5nIEnigJl2ZSBleHBsYWluZWQgYWJvdmUgdG8gaG93IEkgd3JvdGUgdGhpcyBibG9nIHBvc3QuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7TXkgZmlyc3QgdGlueSBzdGVwOiBwaW5nIG91ciBhd2Vzb21lIGNvbnRlbnQgbWFuYWdlciBhYm91dCBteSByYW5kb20gYmxvZyBpZGVhLiBTaGUgc3VnZ2VzdGVkIHdlIGhhdmUgYSBxdWljayBtZWV0aW5nIHRvIGJyYWluc3Rvcm0uJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7U2Vjb25kIHRpbnkgc3RlcDogc2NoZWR1bGUgc2FpZCBtZWV0aW5nLiBPbmUgZGF5IGJlZm9yZSB0aGUgbWVldGluZywgZG8gYSBicmFpbiBkdW1wIG9mIHdoYXQgSSBtaWdodCBjb3ZlciBpbiB0aGUgYmxvZy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtEdXJpbmcgdGhlIG1lZXRpbmcgc2hlIGFza2VkIGhvdyBsb25nIHdvdWxkIGl0IHRha2UgdG8gZ2V0IGEgZmlyc3QgZHJhZnQuIEkgdGhyZXcgb3V0IOKAnHR3byB3ZWVrc+KAnSAobm90IHRvbyBhbWJpdGlvdXMgYnV0IG5vdCBzbyBsb25nIHRoYXQgaXQgd2lsbCBnaXZlIG1lIHRpbWUgdG8gY2hhbmdlIG15IG1pbmQgb3IgbG9zZSBpbnRlcmVzdCkuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Rm9yIHRoZSBuZXh0IHR3byB3ZWVrcywg4oCcQmxvZ+KAnSB3YXMgb25lIG9mIG15IGJpZyByb2NrcywgYW5kIGVhY2ggZGF5IEkgc2F3IGlmIGl0IGNvdWxkIGJlY29tZSBvbmUgb2YgbXkgTUlUcyBmb3IgdGhhdCBkYXkuIEkgZGlkbuKAmXQgc2V0IG91dCB0byB3cml0ZSB0aGUgd2hvbGUgdGhpbmcgb24gYW55IGdpdmVuIGRheSDigJMgaW5zdGVhZCBJIHNldCBhIGdvYWwgdG8ganVzdCBtYWtlIHNvbWUgZm9yd2FyZCBwcm9ncmVzcy4gRHVtcCBpZGVhcyBvbmUgZGF5LCByZWZpbmUgYW5kIGVkaXQgb24gYW5vdGhlciBkYXksIHRoZW4gcmVhbGl6ZSBJIGhhdmUgYSBmZXcgbW9yZSBpZGVhcyB0byBhZGQsIHdyaXRlIHNvbWUgbW9yZSwgZWRpdCBzb21lIG1vcmUuIFNvbWUgZGF5cyBJIHBsYW5uZWQgdG8gd29yayBvbiBteSBibG9nIGJ1dCBJIGRpZG7igJl0IGFuZCBpdCB3YXMgT0suIEkga25vdyB0aGF0IG15IGRhaWx5IGFuZCB3ZWVrbHkgcGxhbm5pbmcgYW5kIHNwbGl0dGluZyB0aGluZ3MgdXAgaW50byB0aW55IHN0ZXBzIHdvdWxkIG1ha2UgaXQgcG9zc2libGUgZm9yIG1lIHRvIGtlZXAgZ29pbmcgYW5kIHRvIG1ha2UgcHJvZ3Jlc3MuIEkgZ290IGEgZmV3IGdvb2Qgd3JpdGluZyBzZXNzaW9ucyBpbiBib3RoIHdlZWtzIGFuZCBoYWQgdGhlIGRyYWZ0IHJlYWR5IHdpdGggMiBkYXlzIHRvIHNwYXJlLiBTdWNjZXNzISZsdDsvcCZndDsKPC9kZXNjcmlwdGlvbj4KICAgICAgICAKICAgICAgPC9pdGVtPgogICAgCiAgICAgIAogICAgICA8aXRlbT4KICAgICAgICA8dGl0bGU+V2h5IGV2ZXJ5IGJ1c2luZXNzIG5lZWRzIENJL0NEIHRvIHN1Y2NlZWQ6IGEgUSZhbXA7QSB3aXRoIEppbSBSb3NlIGFuZCBDYWNrIFdpbGhlbG08L3RpdGxlPgogICAgICAgIDxsaW5rPmh0dHBzOi8vY2lyY2xlY2kuY29tL2Jsb2cvcmlzZS1hYm92ZS15b3VyLWNvbXBldGl0b3JzLXdpdGgtY2ktY2QtYS1xLWEtd2l0aC1qaW0tcm9zZS1hbmQtY2Fjay13aWxoZWxtLzwvbGluaz4KICAgICAgICA8cHViRGF0ZT5Nb24sIDA1IE9jdCAyMDIwIDA4OjAwOjAwIC0wNzAwPC9wdWJEYXRlPgogICAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJ0cnVlIj5odHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL3Jpc2UtYWJvdmUteW91ci1jb21wZXRpdG9ycy13aXRoLWNpLWNkLWEtcS1hLXdpdGgtamltLXJvc2UtYW5kLWNhY2std2lsaGVsbS88L2d1aWQ+CiAgICAgICAgCiAgICAgICAgICA8ZGM6Y3JlYXRvcj5Nb2xseSBGb3NjbzwvZGM6Y3JlYXRvcj4KICAgICAgICAKICAgICAgICAKICAgICAgICAgIDxkZXNjcmlwdGlvbj4mbHQ7cCZndDtJbiBBcHJpbCwgd2Ugd2VsY29tZWQgQ2FjayBXaWxoZWxtLCBhIHBhcnRuZXIgYXQgdmVudHVyZSBjYXBpdGFsIGZpcm0gSVZQLCB0byB0aGUgQ2lyY2xlQ0kgYm9hcmQgb2YgZGlyZWN0b3JzLiBDYWNrIGlzIG91ciBmaXJzdCBmZW1hbGUgYm9hcmQgbWVtYmVyIGFuZCBwcmV2aW91c2x5IHdvcmtlZCB3aXRoIENpcmNsZUNJIGR1cmluZyBvdXIgU2VyaWVzIEIgd2hpbGUgYXQgU2NhbGUgVmVudHVyZSBQYXJ0bmVycy4gQXQgSVZQLCBDYWNrIGZvY3VzZXMgb24gaW52ZXN0aW5nIGluIGdyb3d0aC1zdGFnZSB0ZWNobm9sb2d5IGNvbXBhbmllcy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtPdXIgQ0VPLCBKaW0gUm9zZSwgcmVjZW50bHkgc2F0IGRvd24gd2l0aCBDYWNrIG9uICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly93d3cuaXZwLmNvbS9uZXdzL3BvZGNhc3QvaXZwcy1oeXBlcmdyb3d0aC1wb2RjYXN0LWNpcmNsZWNpLWNlby1qaW0tcm9zZS1vbi10aGUtcmlzZS1vZi1zb2Z0d2FyZS1kZWxpdmVyeS1hcy1hLWNvbXBldGl0aXZlLWRpZmZlcmVudGlhdG9yLWFuZC13aGF0LWl0cy1saWtlLWhpdHRpbmctdGhlLXN0cmlkZS1vZi1oeXBlcmdyb3d0aC8mcXVvdDsmZ3Q7SVZQ4oCZcyBIeXBlcmdyb3d0aCBwb2RjYXN0Jmx0Oy9hJmd0OyB0byBkaXNjdXNzIHRoZSByaXNlIG9mIHNvZnR3YXJlIGRlbGl2ZXJ5IGFzIGEgY29tcGV0aXRpdmUgZGlmZmVyZW50aWF0b3IsIGFuZCB3aGF0IGl04oCZcyBsaWtlIGFjaGlldmluZyBoeXBlcmdyb3d0aCBhbmQgYWRqdXN0aW5nIENpcmNsZUNJIGFzIGFuIG9yZ2FuaXphdGlvbi4gSmltIGFuZCBDYWNrIGFsc28gY292ZXJlZCBob3cgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9jb250aW51b3VzLWludGVncmF0aW9uLyZxdW90OyZndDtjb250aW51b3VzIGludGVncmF0aW9uJmx0Oy9hJmd0OyBhbmQgZGVwbG95bWVudCBoYXZlIGJlY29tZSBrZXkgaW4gYWNoaWV2aW5nIHN1Y2Nlc3MgZm9yIGJ1c2luZXNzZXMsIHRoZSBkZWNpc2lvbi1tYWtpbmcgcG93ZXIgb2YgZGV2ZWxvcGVycywgYW5kIHdoYXQgbWFrZXMgQ2lyY2xlQ0kgYSBsZWFkZXIgaW4gdGhlIENJL0NEIHNwYWNlLiAKJmx0O2JyIC8mZ3Q7CiZsdDticiAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7Q2FjayBXaWxoZWxtOiZsdDsvc3Ryb25nJmd0OyBJ4oCZZCBsb3ZlIHRvIGhlYXIgYWJvdXQgdGhlIHNlY3VsYXIgdHJlbmRzIGJlaGluZCBDaXJjbGVDSS4gV2hhdCBkbyB5b3Ugc2VlIGluIHRoZSBpbmR1c3RyeSByaWdodCBub3cgdGhhdOKAmXMgY29udGludWluZyB0byBkcml2ZSBkZW1hbmQgZm9yIGEgc29sdXRpb24gbGlrZSBDaXJjbGVDST8gCiZsdDticiAvJmd0OwombHQ7YnIgLyZndDsmbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7c3Ryb25nJmd0O0ppbSBSb3NlOiZsdDsvc3Ryb25nJmd0OyBCYWNrIGluIDIwMTEgYW5kIDIwMTIsIHdoZW4gQ2lyY2xlQ0kgd2FzIHN0YXJ0ZWQsIHRoaXMgaWRlYSBvZiBiZWluZyBhYmxlIHRvIHNoaXAgY29kZSBhcyBxdWlja2x5IGFzIHlvdSBtYWRlIGNoYW5nZXMgd2FzIHByZXR0eSBuZXcuIE92ZXIgdGhlIGxhc3QgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL2NpcmNsZWNpLWNlbGVicmF0ZXMtbmluZS15ZWFycy1taWxsaW9udGgtdXNlci8mcXVvdDsmZ3Q7bmluZSB5ZWFycyZsdDsvYSZndDssIGluc3RlYWQgb2YgYmVpbmcgYSByZWFsbHkgZnJpbmdlIGlkZWEsIGNvbnRpbnVvdXMgZGVwbG95bWVudCBoYXMgYmVjb21lIHRoZSBhc3BpcmF0aW9uYWwgTm9ydGggU3RhciBmb3IgcHJldHR5IG11Y2ggZXZlcnkgc29mdHdhcmUgZGVsaXZlcnkgdGVhbSBvdXQgdGhlcmUuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7VGhlIG1pbnV0ZSBDT1ZJRCBoaXQsIGZvciBleGFtcGxlLCBhbmQgZXZlcnlvbmUgYmVjYW1lIG5vdCBqdXN0IHJlbW90ZS1maXJzdCwgYnV0IHJlbW90ZS1vbmx5LCB5b3UgcmVhbGl6ZWQgeW91IGNvdWxkIG5vIGxvbmdlciByZWx5IG9uIGEgYnVpbGQgbWFjaGluZSBzaXR0aW5nIHVuZGVybmVhdGggc29tZWJvZHnigJlzIGRlc2suJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7VGhpcyBpZGVhIG9mIGF1dG9tYXRpb24sIG9mIGJlaW5nIGFibGUgdG8gbW92ZSBxdWlja2x5IGFuZCB0byBtb3ZlIHJlbGlhYmx5LCBoYXMgYmVjb21lIG5vdCBqdXN0IGEg4oCYbmljZSB0byBoYXZlLuKAmSBJdOKAmXMgYmVjb21lIGNvcmUgdG8gd2hhdCB5b3UgaGF2ZSB0byBkbyBhcyBhIHNvZnR3YXJlIGRlbGl2ZXJ5IHRlYW0uCiZsdDticiAvJmd0OwombHQ7YnIgLyZndDsmbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7c3Ryb25nJmd0O0NXOiZsdDsvc3Ryb25nJmd0OyBXaGF0IHdl4oCZcmUgcmVhbGx5IHRhbGtpbmcgYWJvdXQgaGVyZSBpcyBkZXZlbG9wZXJzIOKAlCB0aGlzIGlkZWEgb2YgZGV2ZWxvcGVycyBhcyBmaXJzdC1jbGFzcyBpbmRpdmlkdWFscyB3aXRoaW4gYW4gb3JnYW5pemF0aW9uIHRoYXQgaGF2ZSBhIGJ1ZGdldCBhbmQgZGVjaXNpb24gcG93ZXIuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7WW91IGtub3cgSSBoYXZlbuKAmXQgYmVlbiBpbiB2ZW50dXJlIHRoYXQgbG9uZywgbWF5YmUgc2l4IG9yIHNldmVuIHllYXJzLCBhbmQgSSBzdGlsbCByZW1lbWJlciB0YWxraW5nIGFib3V0IHRoZSBJVCBidXllci4gSXQgd2FzIHZlcnkgbXVjaCBhYm91dCB0aGUgSVQgYW5kIHRoZSBzZWN1cml0eSBidXllciwgYW5kIG5ldmVyIGRpZCB3ZSBkaXNjdXNzIHRoZSBkZXZlbG9wZXIgYnV5ZXIuIEJ1dCBnaXZlbiB5b3VyIGdvLXRvLW1hcmtldCBzdHJhdGVneSBhbmQgeW91ciBlbXBoYXNpcyBvbiB0aGUgZGV2ZWxvcGVyLCBob3cgaGFzIHRoYXQgYnV5ZXIgb2Ygc3lzdGVtIHNvZnR3YXJlIGV2b2x2ZWQgaW4gdGhlIHBhc3Qgc2l4IG9yIHNldmVuIHllYXJzPyAKJmx0O2JyIC8mZ3Q7CiZsdDticiAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7SlI6Jmx0Oy9zdHJvbmcmZ3Q7IEZvciB0aGUgbG9uZ2VzdCB0aW1lLCBkZXZlbG9wZXJzIHdlcmUganVzdCBleHBlY3RlZCB0byBidWlsZCB0aGluZ3MuIFRoZXkgd2VyZSBnaXZlbiBhIHNldCBvZiB0b29scywgdG9sZCB3aGF0IHRvIGJ1aWxkLCBhbmQgc2VlbiBhcyBhIGNvc3QgY2VudGVyIGFzIG9wcG9zZWQgdG8gYW4gb3Bwb3J0dW5pdHkgYW5kIGFuIGludmVzdG1lbnQuIEFzIG1vcmUgY29tcGFuaWVzIGhhdmUgYmVjb21lIHNvZnR3YXJlLWRyaXZlbiwgdGhhdCBwZXJzcGVjdGl2ZSBoYXMgcmVhbGx5IHNoaWZ0ZWQuIEluc3RlYWQgb2Ygc2VlaW5nIHlvdXIgZGV2ZWxvcG1lbnQgdGVhbSBhcyB0aGlzIGNvc3QgY2VudGVyIHRoYXQgeW914oCZcmUgdHJ5aW5nIHRvIGNvbnRyb2wsIHlvdeKAmXJlIHJlYWxseSB0aGlua2luZyBhYm91dCBob3cgeW91IGNhbiBtYXhpbWl6ZSB0aGUgY2FwYWJpbGl0aWVzIGFuZCBwcm9kdWN0aXZpdHkgb2YgdGhlc2UgdmVyeSBleHBlbnNpdmUgZm9sa3Mgd2hvIGFyZSBkaWZmaWN1bHQgdG8gaGlyZS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtUaGUgdmFsdWUgb2Ygc3BlZWQgaXMgdmVyeSBjbGVhciB0byBhbiBJVCBvcmdhbml6YXRpb24uIEl04oCZcyBubyBsb25nZXIgYWJvdXQgY29udHJvbC4gSXTigJlzIGFib3V0IHRyeWluZyB0byBjcmVhdGUgY2Fycm90cyBvciBpbmNlbnRpdmVzIHRvIHVzZSB0aGUgc2FtZSB0b29sc2V0LiBJdOKAmXMgYWJvdXQgYnVpbGRpbmcgdG9vbHMgb24gYmVoYWxmIG9mIGFsbCB0aGUgc29mdHdhcmUgZGV2ZWxvcG1lbnQgdGVhbXMgaW5zaWRlIG9mIGFuIGVudGVycHJpc2UuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7WW91IGZpbmQgbW9yZSBvZnRlbiB0aGFuIG5vdCB0aGF0IGRldmVsb3BlcnMgbGlrZSB0byAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2Jsb2cvZ2V0dGluZy15b3VyLW1hbmFnZXItdG8tc2F5LXllcy10by1kZXZvcHMtdG9vbHMvJnF1b3Q7Jmd0O3BpY2sgYW5kIGNob29zZSB0aGUgYmVzdCB0b29sJmx0Oy9hJmd0OyBmb3IgdGhlIGpvYiwgd2hhdGV2ZXIgdGhhdCBwYXJ0aWN1bGFyIGpvYiBpcywgYW5kIHRoZW4gcHV0IHRoZSBvbnVzIG9uIHRoZSBjb21wYW55IHRvIGZpZ3VyZSBvdXQgaG93IHRvIHdvcmsgd2l0aCBldmVyeXRoaW5nIGVsc2UgdGhleSBoYXZlIGluc2lkZSBvZiB0aGVpciAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2Jsb2cvdGhlLWJlc3QtZGV2LXRvb2xzLXVzZWQtYnktY2lyY2xlY2ktZW5naW5lZXJzLyZxdW90OyZndDt0b29sYm94Jmx0Oy9hJmd0Oy4KJmx0O2JyIC8mZ3Q7CiZsdDticiAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7Q1c6Jmx0Oy9zdHJvbmcmZ3Q7IEkgd2FudCB0byB0YWxrIGFib3V0IHRoZSBpZGVhIG9mIGJ1bmRsaW5nIGFuZCB1bmJ1bmRsaW5nLiBNb2JpbGUgYW5kIExpbnV4LCBmb3IgZXhhbXBsZSwgcHJvdmlkaW5nIHRoZSBzYW1lIHRoaW5nLCBzZWVtcyBsaWtlIHNvZnR3YXJlIHVzZWQgdG8gcmVhbGx5IGdvIHRocm91Z2ggY3ljbGVzLiBUaGVyZSB3YXMgdGhpcyBncmVhdCBwdXNoIGZvciBidW5kbGVkIGFuZCB0aGVuLCBhIHB1c2ggZm9yIHRoZSBvcHBvc2l0ZS4gV2hlcmUgZG8geW91IHRoaW5rIHdlIGFyZSBpbiB0aGUgY3ljbGUgcmlnaHQgbm93PyBXaGF0IGdpdmVzIHlvdSBjb25maWRlbmNlIHRoYXQgYmVpbmcgYSBiZXN0LWluLWJyZWVkIHBsYXRmb3JtLCBvbmUgdGhhdCBwcm92aWRlcyBhIGJpZyBjaHVuayBvZiB0aGUgc29mdHdhcmUgZGVsaXZlcnkgbGlmZWN5Y2xlLCBpcyB0aGUgcmlnaHQgYXBwcm9hY2g/IAombHQ7YnIgLyZndDsKJmx0O2JyIC8mZ3Q7Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O3N0cm9uZyZndDtKUjombHQ7L3N0cm9uZyZndDsgVGhlcmXigJlzIGJlZW4gYSBsb3Qgb2YgbW92ZW1lbnQgaW4gdGhlIG1hcmtldCByZWNlbnRseSBvZiBmb2xrcyB0cnlpbmcgdG8gYnVpbGQgZW5kLXRvLWVuZCBwbGF0Zm9ybXMgaW4gdGhlIGRldmVsb3BtZW50IHNwYWNlLiBCdXQgaWYgeW91IGxvb2sgYXQgdGhlIGNvbXBhbmllcyB3aG/igJl2ZSBidWlsdCB0aG9zZSBwbGF0Zm9ybXMsIG1vcmUgb2Z0ZW4gdGhhbiBub3QsIDgwIHRvIDkwIHBlcmNlbnQgb2YgdGhlaXIgcmV2ZW51ZSBzdGlsbCBjb21lcyBmcm9tIHRoZWlyIGNvcmUgcHJvZHVjdC4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtXaGF0IHdl4oCZdmUgaGVhcmQgZnJvbSBjdXN0b21lcnMgaXMgdGhhdCB0aGV54oCZcmUgZ29pbmcgdG8gaW1wbGVtZW50IHRoZSBiZXN0IHRvb2wgdGhleSBjYW4gZmluZCBmb3IgdGhhdCBwYXJ0aWN1bGFyIHByb2JsZW0gYXQgdGhhdCBwYXJ0aWN1bGFyIHRpbWUuIE91ciBwb3NpdGlvbiwgb3VyIGdvYWwsIGFuZCBvdXIgbWFudHJhIGFzIGEgY29tcGFueSBpczogd2Ugc3RheSBjbG9zZSB0byB0aGUgY3VzdG9tZXIuIFdlIG1ha2Ugc3VyZSB0aGF0IHdl4oCZcmUgYWRkcmVzc2luZyB0aGVpciBwYXJ0aWN1bGFyIHJlcXVpcmVtZW50cyBhbmQgbmVlZHMsIGFuZCBldmVyeXRoaW5nIGVsc2Ugd2lsbCBraW5kIG9mIHdvcmsgaXRzZWxmIG91dC4KJmx0O2JyIC8mZ3Q7CiZsdDticiAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7Q1c6Jmx0Oy9zdHJvbmcmZ3Q7IEnigJlkIGxvdmUgdG8gc3dpdGNoIGdlYXJzIGFuZCB0YWxrIG1vcmUgc3BlY2lmaWNhbGx5IGFib3V0IENpcmNsZUNJLCBlc3BlY2lhbGx5IHRoZSBwaGFzZSBvZiBoeXBlcmdyb3d0aCB0aGF0IHlvdeKAmXJlIGV4cGVyaWVuY2luZyByaWdodCBub3cuIEkgaGF2ZSB0aGUgZ29vZCBmb3J0dW5lIG9mIHNlZWluZyBDaXJjbGVDSeKAmXMgc2VyaWVzIEIgcGhhc2UgYW5kIHRoZW4gZ2V0dGluZyByZWludm9sdmVkIHdpdGggdGhlICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy9hbm5vdW5jaW5nLWNpcmNsZWNpLXMtMTAwbS1zZXJpZXMtZS8mcXVvdDsmZ3Q7c2VyaWVzIEUgZnJvbSBJVlAmbHQ7L2EmZ3Q7LiBJIG11c3QgYWRtaXQsIGl0IHdhcyBraW5kIG9mIGZ1biB0byB0YWtlIGEgYnJlYWsgYW5kIGNvbWUgYmFjayB0byBhIG1hc3NpdmVseSBzY2FsZWQsIG1hdHVyZSBvcmdhbml6YXRpb24gd2l0aG91dCBzZWVpbmcgYWxsIHRoZSBpbmNyZW1lbnRzIGFsb25nIHRoZSB3YXkuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Q2FuIHlvdSBzaGFyZSBtb3JlIGFib3V0IHRoZSBncm93dGggcGhhc2UgY29taW5nIGludG8gdGhpcyByZWNlbnQgZnVuZHJhaXNpbmcgcm91bmQsIGFuZCB3aGF0IGl04oCZcyBsaWtlIGhpdHRpbmcgaHlwZXJncm93dGggYW5kIGFkanVzdGluZyB0aGUgb3JnYW5pemF0aW9uPyBJ4oCZbSBzdXJlIHRoZXJlIGFyZSBzb21lIGRpZmZlcmVuY2VzIGJldHdlZW4gZ28tdG8tbWFya2V0IGZ1bmN0aW9ucyB2ZXJzdXMgZW5naW5lZXJpbmcsIGFuZCB3aGF0IGFib3V0IG11bmRhbmUgc3R1ZmYgbGlrZSBoaXJpbmcsIG9uYm9hcmRpbmcsIGFuZCBvZmZpY2Ugc3BhY2U/CiZsdDticiAvJmd0OwombHQ7YnIgLyZndDsmbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7c3Ryb25nJmd0O0pSOiZsdDsvc3Ryb25nJmd0OyBUaGUgd2F5IHlvdSBzY2FsZSBpcyBieSBtYWtpbmcgdGhlIG11bmRhbmUgaGlnaGx5IGxldmVyYWdlYWJsZS4gVGhlIGZpcnN0IHJlcXVpcmVtZW50IEkgaGF2ZSBmb3IgZXZlcnlvbmUgb24gb3VyIGV4ZWMgdGVhbSBpcyB0aGV5IGhhdmUgdG8gYmUgYSBncmVhdCAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2Jsb2cvaG93LXdlLWludGVydmlldy1zb2Z0d2FyZS1lbmdpbmVlcnMtd2hhdC13ZS12ZS1sZWFybmVkLXdoYXQtd2UtdmUtY2hhbmdlZC8mcXVvdDsmZ3Q7cmVjcnVpdGVyJmx0Oy9hJmd0Oy4gSXTigJlzIG5vdCBhYm91dCBoaXJpbmcgdGhlIGZpcnN0IHBlcnNvbiDigJQgeW914oCZcmUgZ29pbmcgdG8gaGF2ZSB0byBoaXJlIDE1IG1vcmUgaW4gdGhlIG5leHQgc2l4IG1vbnRocy4gSG93IGRvIHlvdSBtYWtlIHRoYXQgc2NhbGFibGUgYW5kIHJlcGVhdGFibGUgb3ZlciB0aW1lPyBJdOKAmXMgdGhlIHNhbWUgdGhpbmcgd2l0aCBpbmZyYXN0cnVjdHVyZSwgd2hldGhlciBpdOKAmXMgb2ZmaWNlIHNwYWNlLCB0b29scywgb3IgaGF2aW5nIGEgZ2xvYmFsbHkgbWFuYWdlZCBzZXQgb2YgSFIgcG9saWNpZXMgaW4gcGxhY2UuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7QXMgYSBmb3VuZGVyLCB5b3XigJlyZSB0cnlpbmcgdG8gZ2V0IGFsbCBvZiB0aGF0IGluIHBsYWNlIGFuZCBtYWtlIGl0IHNjYWxhYmxlLCBtYWtlIGl0IGVmZmVjdGl2ZSwgYW5kIG1ha2UgaXQgcmVzaWxpZW50IHRvIGNoYW5nZS4gSXTigJlzIGEgbWFyYXRob24sIG5vdCBhIHNwcmludCwgYnV0IHlvdeKAmXJlIGdvaW5nIHJlYWxseSBmYXN0LiBZb3UgaGF2ZSB0byBtYWtlIHN1cmUgeW91IGRvIHdoYXRldmVyIHlvdSBjYW4gdG8gcGFjZSB5b3Vyc2VsZiBhcyB5b3UgY29udGludWUgdG8gZ3Jvdy4KJmx0O2JyIC8mZ3Q7CiZsdDticiAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7Q1c6Jmx0Oy9zdHJvbmcmZ3Q7IEFtYXpvbiwgTWljcm9zb2Z0IGFuZCBBbHBoYWJldCBjZXJ0YWlubHkgaGF2ZSBhIGxhcmdlIHBhcnQgb2YgdGhlaXIgYnVzaW5lc3NlcyB0aGF0IGFyZSBwZWdnZWQgdG8gY2xvdWQgaW5mcmFzdHJ1Y3R1cmUgc3BlbmQsIGp1c3QgYXMgQ2lyY2xlQ0kgZG9lcy4gQSBsYXJnZSBwYXJ0IG9mIEFtYXpvbiwgTWljcm9zb2Z0LCBBbHBoYWJldCwgYW5kIEdvb2dsZeKAmXMgYnVzaW5lc3NlcyBhcmUgYWtpbiB0byBjbG91ZCBpbmZyYXN0cnVjdHVyZSDigJQgYSBsb3Qgb2Ygd2hhdCBDaXJjbGVDSSBkb2VzLiBJZiB5b3UgYWxzbyBpbmNsdWRlIERhdGFEb2cgYW5kIEF0bGFzc2lhbiwgdGhlc2UgY29tcGFuaWVzIGFyZSBzaG93aW5nIHJlYWxseSBzdHJvbmcgZ3Jvd3RoLCByZWFsbHkgc3Ryb25nIHB1YmxpYyBwZXJmb3JtYW5jZS4gRnJvbSB3aGVyZSB5b3XigJlyZSBzaXR0aW5nLCB3aGF0IGRvIHlvdSBtYWtlIG9mIHRoZSBwdWJsaWMgbWFya2V0cyBhcyB0aGV5IHJlbGF0ZSB0byBDaXJjbGVDSSBhbmQgeW91ciBuZXh0IG1vdmU/CiZsdDticiAvJmd0OwombHQ7YnIgLyZndDsmbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7c3Ryb25nJmd0O0pSOiZsdDsvc3Ryb25nJmd0OyBJIHRoaW5rIHRoZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwdWJsaWMgbWFya2V0IGludmVzdG9yIGhhcyByZWFsbHkgZXZvbHZlZC4gV2hlbiB3ZSBoYWQgY29udmVyc2F0aW9ucyB3aXRoIHB1YmxpYyBtYXJrZXQgaW52ZXN0b3JzIGluIDIwMTUgYW5kIDIwMTYsIHRoZXkgaGFkIGFic29sdXRlbHkgbm8gaWRlYSB3aGF0IHdlIGRpZC4gVGhleSBkaWRu4oCZdCB1bmRlcnN0YW5kIHNvZnR3YXJlIGRldmVsb3BtZW50IGFzIGEga2V5IGRpZmZlcmVudGlhdG9yIGZvciBjb21wYW5pZXMsIG5vdCBqdXN0IHNvZnR3YXJlIGNvbXBhbmllcywgYnV0IGZvciBjb21wYW5pZXMgb3ZlcmFsbC4gSSB0aGluayBhYm91dCBjb21wYW5pZXMgbGlrZSBBbWF6b24sIEdvb2dsZSwgTmV0ZmxpeCwgRmFjZWJvb2ssIGFuZCBvdGhlcnMg4oCUIHRoZWlyIGFiaWxpdHkgdG8gYnVpbGQgc29mdHdhcmUgcXVpY2tseSBpcyBob3cgdGhleSBnZW5lcmF0ZSB2YWx1ZSBpbnNpZGUgdGhlaXIgYnVzaW5lc3Nlcy4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtJbmNyZWFzaW5nbHksIHRvbywgaWYgeW91IGxvb2sgYXQgbW9yZSB0cmFkaXRpb25hbCBpbmR1c3RyaWVzIHRoYXQgaGF2ZSBtYWRlIHJlYWwgaW52ZXN0bWVudHMgaW4gdGVjaG5vbG9neSBvdmVyIHRoZSBsYXN0IGZvdXIgb3IgZml2ZSB5ZWFycywgdGhleeKAmXJlIHJlYXBpbmcgdGhvc2UgZ2FpbnMgdG9kYXkuIFRhcmdldCBhbmQgV2FsLU1hcnQgaGF2ZSBtYWRlIHRyZW1lbmRvdXMgZ2FpbnMgb3ZlciB0aGUgbGFzdCBzaXggbW9udGhzIHNpbmNlIENPVklEIHN0YXJ0ZWQgYmVjYXVzZSB0aGV5IGhhdmUgYSBwcmV0dHkgcm9idXN0IHRlY2huaWNhbCBwbGF0Zm9ybSBhdCB0aGlzIHBvaW50LiZsdDsvcCZndDsKCiZsdDtwJmd0O1doZW4geW91IGNvbXBhcmUgdGhhdCB0byBtb3JlIHRyYWRpdGlvbmFsIHJldGFpbGVycyB3aG8gaGF2ZW7igJl0IG1hZGUgdGhhdCBpbnZlc3RtZW50LCB5b3UgY2FuIHN0YXJ0IHRvIHNlZSB0aGUgdmFsdWUgb2Ygc29mdHdhcmUgYW5kIHRoZSB2YWx1ZSBvZiBhZ2lsZSBwcm9jZXNzZXMgaW4gY3JlYXRpbmcgY29ycG9yYXRlIHZhbHVlLiBUaGUgbWFya2V0IGhhcyBkZWZpbml0ZWx5IHdva2VuIHVwIHRvICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy93aHktY29udGludW91cy1pbnRlZ3JhdGlvbi1pcy1rZXktdG8tc3RlcHBpbmctdXAtZGVwbG95bWVudC1mcmVxdWVuY3kvJnF1b3Q7Jmd0O3RoZSBjb21wZXRpdGl2ZSBkaWZmZXJlbnRpYXRvciZsdDsvYSZndDsgdGhhdCBzb2Z0d2FyZSwgYW5kIGJlaW5nIGEgd2VsbC1vaWxlZCBzb2Z0d2FyZSBkZWxpdmVyeSBtYWNoaW5lLCBwcm92aWRlcy4KJmx0O2JyIC8mZ3Q7CiZsdDticiAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7Q1c6Jmx0Oy9zdHJvbmcmZ3Q7IFdoYXQgYXJlIHlvdSBsb29raW5nIGZvcndhcmQgdG8gYXMgeW91IG1vdmUgaW50byB0aGlzIG5leHQgcGhhc2Ugb2YgZ3Jvd3RoIGluIHRoZSBuZXh0IHllYXIgb3IgdHdvIHllYXJzPyBXaGF04oCZcyBleGNpdGluZz8KJmx0O2JyIC8mZ3Q7CiZsdDticiAvJmd0OyZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7SlI6Jmx0Oy9zdHJvbmcmZ3Q7IEl04oCZcyBleGNpdGluZyB0byB3YXRjaCBjb21wYW5pZXMgdGhhdCB3ZSBtYXkgaGF2ZSB0YWxrZWQgdG8gYmFjayBpbiAyMDE1IGFuZCB3ZXJlbuKAmXQgcmVhZHkgZm9yIHVzLCB3aG8gYXJlIG5vdyBsZWFuaW5nIGluIGFuZCByZWFkeSB0byBhZG9wdCBjb250aW51b3VzIGRlbGl2ZXJ5LCBhbmQgcmVhZHkgdG8gZGVwbG95IENpcmNsZUNJIGFzIGEgZm91bmRhdGlvbiB0byB0aGF0IGNoYW5nZS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtTb21lIG9mICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9jaXJjbGVjaS5jb20vYmxvZy93ZS1yYWlzZWQtYS01Nm0tc2VyaWVzLWQtd2hhdC1zLW5leHQtZm9yLWNpcmNsZWNpLWN1c3RvbWVycy8mcXVvdDsmZ3Q7dGhlIGJyYW5kcyB3ZSB3b3JrIHdpdGgmbHQ7L2EmZ3Q7IGFyZSBkb2luZyBpbmNyZWRpYmx5IGludGVyZXN0aW5nIHRoaW5ncyBmcm9tIGF1dG9ub21vdXMgdmVoaWNsZXMgdG8gc3BhY2UgdmVoaWNsZXMgdG8gbWFjaGluZSBsZWFybmluZyB0byBldmVyeWRheSBtb2JpbGUgYXBwbGljYXRpb25zLCBhbmQgZXZlcnl0aGluZyBpbiBiZXR3ZWVuLiZsdDsvcCZndDsKCiZsdDtwJmd0O1doZW4gSSB0YWxrIHRvIGZvbGtzIHdl4oCZcmUgdHJ5aW5nIHRvIGhpcmUsIEkgYWx3YXlzIHNheSB3ZeKAmXJlIGluIHRoZSBlbmdpbmUgcm9vbSBvZiB0aGUgaW50ZXJuZXQuIFdl4oCZcmUgdGhlIGNvbXBhbnkgaGVscGluZyBidWlsZCBhbGwgb2YgdGhvc2UgZXhwZXJpZW5jZXMgdGhhdCB5b3UgY29uc3VtZSBlYWNoIGFuZCBldmVyeSBkYXksIGluIGEgd2F5IHRoYXTigJlzIGV4Y2l0aW5nIGFuZCBpbnRlcmVzdGluZyBhbmQgbmV3LiBBbmQgd2hldGhlciB5b3XigJlyZSBidWlsZGluZyBhIHNtYWxsIG9wZW4tc291cmNlIGxpYnJhcnkgb3Igc29tZXRoaW5nIGZvciB0aGUgVS5TLiBHb3Zlcm5tZW50LCB5b3UgY2FuIHVzZSBDaXJjbGVDSSB0byBzdXBwb3J0IHRoYXQuJmx0Oy9wJmd0Owo8L2Rlc2NyaXB0aW9uPgogICAgICAgIAogICAgICA8L2l0ZW0+CiAgICAKICAgICAgCiAgICAgIDxpdGVtPgogICAgICAgIDx0aXRsZT5BZGRpbmcgYXBwcm92YWwgam9icyB0byB5b3VyIENJIHBpcGVsaW5lPC90aXRsZT4KICAgICAgICA8bGluaz5odHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL2FkZGluZy1hcHByb3ZhbC1qb2JzLXRvLXlvdXItY2ktcGlwZWxpbmUvPC9saW5rPgogICAgICAgIDxwdWJEYXRlPkZyaSwgMDIgT2N0IDIwMjAgMDk6MDA6MDAgLTA3MDA8L3B1YkRhdGU+CiAgICAgICAgPGd1aWQgaXNQZXJtYUxpbms9InRydWUiPmh0dHBzOi8vY2lyY2xlY2kuY29tL2Jsb2cvYWRkaW5nLWFwcHJvdmFsLWpvYnMtdG8teW91ci1jaS1waXBlbGluZS88L2d1aWQ+CiAgICAgICAgCiAgICAgICAgICA8ZGM6Y3JlYXRvcj5UcmF2aXMgRGVwdXk8L2RjOmNyZWF0b3I+CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgICA8ZGVzY3JpcHRpb24+Jmx0O3AmZ3Q7QW4gZXhwbGljaXQgYXBwcm92YWwgcHJvY2VzcyBjYW4gaGVscCByZWR1Y2UgcHJvZHVjdGlvbiBpc3N1ZXMsIHByb3ZpZGUgYW4gYXVkaXQgdHJhaWwsIGFuZCBnaXZlIHlvdXIgb3JnYW5pemF0aW9uIGNvbmZpZGVuY2UgdGhhdCB5b3VyIGVuZ2luZWVyaW5nIHRlYW1zIGFyZSBkZXBsb3lpbmcgdGhlIHJpZ2h0IGNvZGUuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7SW4gdGhpcyBhcnRpY2xlLCB3ZeKAmWxsIGdvIGludG8gZGV0YWlsIGFib3V0IGhvdyB0byBzZXQgdXAgYW4gYXBwcm92YWwgam9iIGluIHlvdXIgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9jb250aW51b3VzLWludGVncmF0aW9uLyZxdW90OyZndDtjb250aW51b3VzIGludGVncmF0aW9uJmx0Oy9hJmd0OyBwaXBlbGluZSBzbyB5b3VyIGRldmVsb3BlcnMgbXVzdCByZXF1ZXN0IGFwcHJvdmFsIGJlZm9yZSB0aGUgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL3doYXQtaXMtYS1jaS1jZC1waXBlbGluZS8mcXVvdDsmZ3Q7Q0kgcGlwZWxpbmUmbHQ7L2EmZ3Q7IGRlcGxveXMgdG8gcHJvZHVjdGlvbi4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7SG93IGRvZXMgaXQgd29yaz8mbHQ7L2gyJmd0OwombHQ7cCZndDtBICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O3JlcXVlc3QtYXBwcm92YWwmbHQ7L2NvZGUmZ3Q7IGpvYiBpcyBhZGRlZCB0byB5b3VyIHBpcGVsaW5lLCBtYWtpbmcgdXNlIG9mIHRoZSAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2RldmVsb3Blci9vcmJzL29yYi94bWF0dGVycy94bWF0dGVycy1vcmImcXVvdDsmZ3Q7eE1hdHRlcnMgb3JiJmx0Oy9hJmd0Oywgd2hpY2ggcGFzc2VzIGEgd29ya2Zsb3figJlzIGRldGFpbHMgdG8gJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL3d3dy54bWF0dGVycy5jb20vJnF1b3Q7Jmd0O3hNYXR0ZXJzJmx0Oy9hJmd0Oy4geE1hdHRlcnMgdGhlbiBzZW5kcyBvdXQgdGhlIG5vdGlmaWNhdGlvbnMgYWNyb3NzIGEgcmFuZ2Ugb2YgZGV2aWNlcyB0byByZWFjaCB0aGUgY3VycmVudCBvbi1jYWxsIGFwcHJvdmFsIHJlc291cmNlLiBVc2luZyB0aGUgcmVzcG9uc2Ugb3B0aW9ucywgdGhlIGFwcHJvdmVyIGNhbiB0aGVuIGNob29zZSB0byBhcHByb3ZlIG9yIHJlamVjdCB0aGUgcmVxdWVzdC4gT24gYXBwcm92YWwsIGEgcmVxdWVzdCBpcyBtYWRlIHRvIENpcmNsZUNJ4oCZcyAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2RvY3MvYXBpL3YyLyNvcGVyYXRpb24vYXBwcm92ZVBlbmRpbmdBcHByb3ZhbEpvYkJ5SWQmcXVvdDsmZ3Q7YXBwcm92ZSBhIGpvYiBBUEkgZW5kcG9pbnQmbHQ7L2EmZ3Q7LiZsdDsvcCZndDsKCiZsdDtwJmd0O0xldOKAmXMgd2FsayB0aHJvdWdoIGhvdyB0byBzZXQgdXAgeW91ciBhcHByb3ZhbCByZXF1ZXN0cyBzbyB0aGF0IHlvdSBjYW4gbWFpbnRhaW4gb3ZlcnNpZ2h0IG9mIGFueSBjaGFuZ2VzIHRvIHlvdXIgcHJvZHVjdGlvbiBjb2RlIGJlZm9yZSB0aGV5IGhhcHBlbi4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7UHJlcmVxdWlzaXRlcyZsdDsvaDImZ3Q7CgombHQ7cCZndDtUbyBiZWdpbiwgeW914oCZbGwgbmVlZCB0aGUgZm9sbG93aW5nOiZsdDsvcCZndDsKCiZsdDt1bCZndDsKICAmbHQ7bGkmZ3Q7QSAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL3NpZ251cC8mcXVvdDsmZ3Q7Q2lyY2xlQ0kmbHQ7L2EmZ3Q7IGFjY291bnQmbHQ7L2xpJmd0OwogICZsdDtsaSZndDtBbiAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vd3d3LnhtYXR0ZXJzLmNvbS9zaWdudXAmcXVvdDsmZ3Q7eE1hdHRlcnMmbHQ7L2EmZ3Q7IGFjY291bnQmbHQ7L2xpJmd0OwogICZsdDtsaSZndDtBIHJlcG8gd2l0aCBhIHByb2plY3QgdGhhdCBuZWVkcyBhbiBhcHByb3ZhbCBqb2ImbHQ7L2xpJmd0OwombHQ7L3VsJmd0OwoKJmx0O3AmZ3Q7VGhlIGFwcHJvdmFsIHByb2Nlc3Mgd2XigJlsbCBiZSBkaXNjdXNzaW5nIHVzZXMgdGhlICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9jaXJjbGVjaS5jb20vZG9jcy9hcGkvdjIvI29wZXJhdGlvbi9hcHByb3ZlUGVuZGluZ0FwcHJvdmFsSm9iQnlJZCZxdW90OyZndDthcHByb3ZlIGEgam9iJmx0Oy9hJmd0OyBBUEkgY2FsbCB0byBhcHByb3ZlIHRoZSBqb2IuIFRoZSBwcm9jZXNzIGZvciBkb2luZyB0aGlzIGlzIHNpbWlsYXIgZm9yIGEgdmFyaWV0eSBvZiB0b29scyBidXQgdGhpcyBwb3N0IHdpbGwgZm9jdXMgb24gdXNpbmcgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL3d3dy54bWF0dGVycy5jb20vJnF1b3Q7Jmd0O3hNYXR0ZXJzJmx0Oy9hJmd0Oy4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7Q29uZmlndXJpbmcgQ2lyY2xlQ0kmbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7QXQgYSBoaWdoIGxldmVsLCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7LmNpcmNsZWNpL2NvbmZpZy55bWwmbHQ7L2NvZGUmZ3Q7IGZpbGUsIHNldCB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7WE1fVVJMJmx0Oy9jb2RlJmd0OyB2YWx1ZSwgYW5kIHRoZW4gc3RvcmUgdGhlIHBlcnNvbmFsIHRva2VuIGluIHhNYXR0ZXJzLiBMZXTigJlzIGdldCBzdGFydGVkLiZsdDsvcCZndDsKCiZsdDtwJmd0O1RoaXMgaXMgYSBzaW1wbGUgYnVpbGQsIGhvbGQsIHJlcXVlc3QgYXBwcm92YWwsIGFuZCBkZXBsb3kgY29uZmlndXJhdGlvbiBmaWxlLiZsdDsvcCZndDsKCiZsdDtkaXYgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Jmx0O2RpdiBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O3ByZSBjbGFzcz0mcXVvdDtoaWdobGlnaHQmcXVvdDsmZ3Q7Jmx0O2NvZGUmZ3Q7dmVyc2lvbjogMi4xCgpvcmJzOgogIHhtYXR0ZXJzOiB4bWF0dGVycy94bWF0dGVycy1vcmJAMS4wLjQKCmpvYnM6CiAgYnVpbGQ6CiAgICBkb2NrZXI6IAogICAgICAtIGltYWdlOiBjaXJjbGVjaS9ub2RlOjQuOC4yCiAgICBzdGVwczoKICAgICAgLSBydW46IGVjaG8gJnF1b3Q7QnVpbGRpbmcgYnVpbGRpbmcgYnVpbGRpbmchJnF1b3Q7CgogIHJlcXVlc3QtYXBwcm92YWw6CiAgICBkb2NrZXI6CiAgICAgIC0gaW1hZ2U6IGNpcmNsZWNpL25vZGU6NC44LjIKICAgIHN0ZXBzOgogICAgICAtIHhtYXR0ZXJzL25vdGlmeToKICAgICAgICAgIHJlY2lwaWVudHM6IEVuZ2luZWVyaW5nIE1hbmFnZXJzCgogIGhvbGQ6CiAgICBkb2NrZXI6CiAgICAgIC0gaW1hZ2U6IGNpcmNsZWNpL25vZGU6NC44LjIKICAgIHN0ZXBzOgogICAgICAtIHJ1bjogZWNobyAmcXVvdDtIb2xkIGZvciBhcHByb3ZhbCZxdW90OwoKICBkZXBsb3ktc3R1ZmY6CiAgICBkb2NrZXI6CiAgICAgIC0gaW1hZ2U6IGNpcmNsZWNpL25vZGU6NC44LjIKICAgIHN0ZXBzOgogICAgICAtIHJ1bjogZWNobyAmcXVvdDtEZXBsb3kgc3R1ZmYgaGVyZSZxdW90OwoKd29ya2Zsb3dzOgogIGJ1aWxkLXRlc3QtYW5kLWFwcHJvdmFsLWRlcGxveToKICAgIGpvYnM6CiAgICAgIC0gYnVpbGQKICAgICAgLSByZXF1ZXN0LWFwcHJvdmFsCiAgICAgIC0gaG9sZDoKICAgICAgICAgIHR5cGU6IGFwcHJvdmFsCiAgICAgICAgICByZXF1aXJlczoKICAgICAgICAgICAgLSBidWlsZAogICAgICAgICAgICAtIHJlcXVlc3QtYXBwcm92YWwKICAgICAgLSBkZXBsb3ktc3R1ZmY6CiAgICAgICAgICByZXF1aXJlczoKICAgICAgICAgICAgLSBob2xkCiZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDsmbHQ7L2RpdiZndDsmbHQ7L2RpdiZndDsKCiZsdDtwJmd0O1RoZSBpdGVtcyB0byBub3RlIGhlcmUgYXJlIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtob2xkJmx0Oy9jb2RlJmd0OyBhbmQgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7cmVxdWVzdC1hcHByb3ZhbCZsdDsvY29kZSZndDsgam9icy4gWW91IGNhbiBzZWUgaW4gdGhlIHdvcmtmbG93cyBzZWN0aW9uIHRoYXQgdGhlIGhvbGQgam9iLCBtYXJrZWQgYXMgdHlwZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDthcHByb3ZhbCZsdDsvY29kZSZndDssIGlzIGRlcGVuZGVudCBvbiB0aGUgc3VjY2Vzc2Z1bCBleGVjdXRpb24gb2YgdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2J1aWxkJmx0Oy9jb2RlJmd0OyBhbmQgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7cmVxdWVzdC1hcHByb3ZhbCZsdDsvY29kZSZndDsgam9icy4gVGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2RlcGxveS1zdHVmZiZsdDsvY29kZSZndDsgam9iIGlzIHRoZW4gZGVwZW5kZW50IG9uIHRoZSBzdWNjZXNzZnVsIGV4ZWN1dGlvbiBvZiB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7aG9sZCZsdDsvY29kZSZndDsgam9iLiBUaGlzIG1lYW5zIHRoYXQgdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2hvbGQmbHQ7L2NvZGUmZ3Q7IGpvYiBoYWx0cyB0aGUgZXhlY3V0aW9uIG9mIHRoZSB3b3JrZmxvdyB1bnRpbCB0aGUgYXBwIGlzIGJ1aWx0IHN1Y2Nlc3NmdWxseSBhbmQgdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O3JlcXVlc3QtYXBwcm92YWwmbHQ7L2NvZGUmZ3Q7IGpvYiwgd2hpY2ggdXNlcyB0aGUgeE1hdHRlcnMgb3JiLCBpcyBleGVjdXRlZC4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtXZeKAmXJlIHRhcmdldGluZyB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7RW5naW5lZXJpbmcgTWFuYWdlbWVudCZsdDsvY29kZSZndDsgZ3JvdXAgc28gdGhhdCB0aGUgY3VycmVudCBvbi1jYWxsIGVuZ2luZWVyaW5nIG1hbmFnZXIgY2FuIGFwcHJvdmUgKG9yIHJlamVjdCEpIHRoZSBwaXBlbGluZS4gT25jZSB0aGUgaG9sZCBqb2IgaXMgYXBwcm92ZWQsIHRoZSBwaXBlbGluZSBjb250aW51ZXMgd2l0aCB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7ZGVwbG95LXN0dWZmJmx0Oy9jb2RlJmd0OyBqb2IsIGFuZCB0aGUgY29kZSBpcyBkZXBsb3llZCB0byBwcm9kdWN0aW9uLiZsdDsvcCZndDsKCiZsdDtwJmd0O1dlIG5lZWQgdG8gc2V0IHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtYTV9VUkwmbHQ7L2NvZGUmZ3Q7IHZhbHVlIGluIHRoZSBwcm9qZWN0IHNldHRpbmdzIGluIENpcmNsZUNJLiBCZWZvcmUgdGhhdCwgd2Ugd2lsbCBncmFiIGEgcGVyc29uYWwgQVBJIHRva2VuIHNvIHRoYXQgeE1hdHRlcnMgY2FuIHByb3Blcmx5IGF1dGhlbnRpY2F0ZS4gSGVhZCBvdmVyIHRvIHlvdXIgYWNjb3VudCBzZXR0aW5ncyBhbmQgc2VsZWN0IHRoZSAmbHQ7c3Ryb25nJmd0O1BlcnNvbmFsIEFQSSBUb2tlbnMmbHQ7L3N0cm9uZyZndDsgdGFiLiZsdDsvcCZndDsKCiZsdDtwIGFsaWduPSZxdW90O2NlbnRlciZxdW90OyZndDsKICAgJmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0wOS0yNy14bWF0dGVyczEucG5nJnF1b3Q7IHdpZHRoPSZxdW90OzkwMCZxdW90OyAvJmd0OwombHQ7L3AmZ3Q7CgombHQ7cCZndDtDbGljayAmbHQ7c3Ryb25nJmd0O0NyZWF0ZSBOZXcgVG9rZW4mbHQ7L3N0cm9uZyZndDsgYW5kIGNvcHkgdGhlIHZhbHVlIHRvIGEgdGV4dCBmaWxlIHVudGlsIHdl4oCZcmUgcmVhZHkgdG8gdXNlIGl0LiZsdDsvcCZndDsKCiZsdDtoMiZndDtDb25maWd1cmluZyB4TWF0dGVycyZsdDsvaDImZ3Q7CgombHQ7cCZndDtOZXh0LCBoZWFkIG92ZXIgdG8geW91ciB4TWF0dGVycyBpbnN0YW5jZSBhbmQgbmF2aWdhdGUgdG8gdGhlICZsdDtzdHJvbmcmZ3Q7V29ya2Zsb3dzJmx0Oy9zdHJvbmcmZ3Q7IHNjcmVlbi4gQ2xpY2sgJmx0O3N0cm9uZyZndDtJbXBvcnQgV29ya2Zsb3cmbHQ7L3N0cm9uZyZndDsgYW5kIGZpbmQgdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O0NpcmNsZUNJLnppcCZsdDsvY29kZSZndDsgZmlsZS4gVGhpcyBmaWxlIGNhbiBiZSBkb3dubG9hZGVkIGZyb20gdGhlIHJlcG8sICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9naXRodWIuY29tL3htYXR0ZXJzL3htLWxhYnMtY2lyY2xlY2ktb3JiJnF1b3Q7Jmd0O2hlcmUmbHQ7L2EmZ3Q7LiBPbmNlIGltcG9ydGVkLCBjbGljayBpbnRvIHRoZSB3b3JrZmxvdyBhbmQgbmF2aWdhdGUgdG8gdGhlICZsdDtzdHJvbmcmZ3Q7Rmxvd3MmbHQ7L3N0cm9uZyZndDsgdGFiLiBUaGVyZSB3aWxsIGJlIHR3byBjYW52YXNlcyBsaXN0ZWQuIEluIHRoaXMgY2FzZSwgd2Ugd2FudCAmbHQ7c3Ryb25nJmd0O0FwcHJvdmFsIFJlcXVlc3QmbHQ7L3N0cm9uZyZndDssIHdoaWNoIGhhcyB0aGUgbG9naWMgdG8gZGVhbCB3aXRoIG1vc3QgcmVzcG9uc2VzLiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDktMjcteG1hdHRlcnMyLnBuZyZxdW90OyBhbHQ9JnF1b3Q7JnF1b3Q7IC8mZ3Q7Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Q2xpY2tpbmcgaW50byB0aGUgY2FudmFzIHNob3dzIHRoZSBzdGVwcyBsYWlkIG91dCB3aXRoIHRoZSBzdGVwIHBhbGV0dGUgb24gdGhlIHJpZ2h0IHNpZGUuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0wOS0yNy14bWF0dGVyczMucG5nJnF1b3Q7IGFsdD0mcXVvdDsmcXVvdDsgLyZndDsmbHQ7L3AmZ3Q7CgombHQ7cCZndDtXZSBhcmUgaGVyZSB0byBnZXQgdGhlIGluYm91bmQgVVJMLCBzbyBkb3VibGUgY2xpY2sgb24gdGhlICZsdDtzdHJvbmcmZ3Q7QXBwcm92YWwgUmVxdWVzdCAtIEluYm91bmQgZnJvbSBDaXJjbGVDSSZsdDsvc3Ryb25nJmd0OyBzdGVwIGluIHRoZSB1cHBlciBsZWZ0IGNvcm5lci4gVGhpcyB3aWxsIGRpc3BsYXkgJmx0O3N0cm9uZyZndDtIVFRQIFRyaWdnZXImbHQ7L3N0cm9uZyZndDsgZGlhbG9nIHdpdGggb3VyIGluYm91bmQgVVJMLiBDb3B5IHRoaXMgdmFsdWUgYW5kIGtlZXAgaXQgaGFuZHkgZm9yIGxhdGVyLiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDktMjcteG1hdHRlcnM0LnBuZyZxdW90OyBhbHQ9JnF1b3Q7JnF1b3Q7IC8mZ3Q7Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7RXhpdCB0aGF0IHdpbmRvdyBhbmQgbmF2aWdhdGUgYmFjayB0byAmbHQ7c3Ryb25nJmd0O1dvcmtmbG93cyZsdDsvc3Ryb25nJmd0Oy4gQ2xpY2sgdGhlICZsdDtzdHJvbmcmZ3Q7QWRtaW4gZ2VhciZsdDsvc3Ryb25nJmd0OyBhdCB0aGUgYm90dG9tIG9mIHRoZSBuYXZpZ2F0aW9uIG1lbnUgYW5kIGNsaWNrICZsdDtzdHJvbmcmZ3Q7Q3VzdG9tIEZpZWxkcyZsdDsvc3Ryb25nJmd0Oy4gVGhlc2UgZmllbGRzIGFyZSBtZXRhZGF0YSB0aWVkIHRvIGEgdXNlci4gSXQgaXMgd2hlcmUgd2Ugd2lsbCBzdG9yZSB0aGUgYWNjZXNzIHRva2VuLiZsdDsvcCZndDsKCiZsdDtwIGFsaWduPSZxdW90O2NlbnRlciZxdW90OyZndDsKICAgJmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0wOS0yNy14bWF0dGVyczUucG5nJnF1b3Q7IHdpZHRoPSZxdW90OzkwMCZxdW90OyAvJmd0OwombHQ7L3AmZ3Q7CgombHQ7cCZndDtDbGljayAmbHQ7c3Ryb25nJmd0O0FkZCBGaWVsZCZsdDsvc3Ryb25nJmd0OyBhbmQgZ2l2ZSBpdCB0aGUgbmFtZSDigJxDaXJjbGVDSSBUb2tlbiBQbGFpbuKAnS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7c3Ryb25nJmd0O05vdGUmbHQ7L3N0cm9uZyZndDs6ICZsdDtpJmd0O0l0IGlzIGltcG9ydGFudCB0aGF0IHlvdSB1c2UgdGhpcyBuYW1lLCBhcyBpdCBpcyB1c2VkIGluIHRoZSDigJxGaW5kIFVzZXIgUHJvcGVydHkgVmFsdWXigJ0gc3RlcCBiYWNrIG9uIHRoZSBmbG93IGRlc2lnbmVyIGNhbnZhcy4gSWYgeW91IHVzZSBhIGRpZmZlcmVudCBuYW1lIGhlcmUsIG1ha2Ugc3VyZSB0byBjaGFuZ2UgdGhlIG5hbWUgdGhlcmUgYXMgd2VsbC4mbHQ7L2kmZ3Q7Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7U2V0IHRoZSB0eXBlIGFzICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O1RleHQmbHQ7L2NvZGUmZ3Q7LiBDbGljayAmbHQ7c3Ryb25nJmd0O1NhdmUmbHQ7L3N0cm9uZyZndDsuIFdlIHdpbGwgdGhlbiBhZGQgdGhlIHRva2VuIHRvIHRoZSB1c2VyLiBJZiBpdCBpcyB5b3VyIHRva2VuLCBjbGljayB5b3VyIHVzZXJuYW1lIG9uIHRoZSB0b3AgcmlnaHQgYW5kIGNsaWNrICZsdDtzdHJvbmcmZ3Q7UHJvZmlsZSZsdDsvc3Ryb25nJmd0Oy4mbHQ7L3AmZ3Q7CgombHQ7cCBhbGlnbj0mcXVvdDtyaWdodCZxdW90OyZndDsKICAgJmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0wOS0yNy14bWF0dGVyczYucG5nJnF1b3Q7IHdpZHRoPSZxdW90OzMwMCZxdW90OyAvJmd0OwombHQ7L3AmZ3Q7CgombHQ7cCZndDtEaWcgb3V0IHRoZSBwZXJzb25hbCB0b2tlbiB3ZSBjb3BpZWQgZnJvbSBDaXJjbGVDSSBhbmQgcGFzdGUgaXQgaW50byB0aGUgZmllbGQgd2UganVzdCBjcmVhdGVkLiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDktMjcteG1hdHRlcnM3LnBuZyZxdW90OyBhbHQ9JnF1b3Q7JnF1b3Q7IC8mZ3Q7Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O3N0cm9uZyZndDtOb3RlJmx0Oy9zdHJvbmcmZ3Q7OiAmbHQ7aSZndDtUaGlzIHRva2VuIGlzIHN0b3JlZCBpbiBwbGFpbiB0ZXh0LCBidXQgb25seSB5b3UgYW5kIHlvdXIgc3VwZXJ2aXNvciBoYXZlIGFjY2VzcyB0byB2aWV3IHRoaXMgdmFsdWUuIFdlIGFyZSBldmFsdWF0aW5nIG90aGVyIG1ldGhvZHMgb2Ygc3RvcmluZyB0aGlzIHRva2VuLCBzbyBrZWVwIGFuIGV5ZSBvdXQgZm9yIGNoYW5nZXMgaW4gdGhpcyBzcGFjZSEmbHQ7L2kmZ3Q7Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7RmluYWxseSwgaGVhZCBiYWNrIG92ZXIgdG8gQ2lyY2xlQ0kgYW5kIG5hdmlnYXRlIHRvIHRoZSBwcm9qZWN0IHRoYXQgbmVlZHMgYXBwcm92YWxzLiBNYWtlIHN1cmUgdG8gc2VsZWN0IHRoZSBwcm9qZWN0IGluIHRoZSBsaXN0IG9mIHBpcGVsaW5lcyBhcyB0aGlzIHdpbGwgZW5hYmxlIHRoZSAmbHQ7c3Ryb25nJmd0O1Byb2plY3QgU2V0dGluZ3MmbHQ7L3N0cm9uZyZndDsgYnV0dG9uIGluIHRoZSB1cHBlciByaWdodCBjb3JuZXIuIENsaWNraW5nIHRoaXMgYnV0dG9uIGRpc3BsYXlzIHRoZSBzZXR0aW5ncyBmb3IgdGhlIHByb2plY3QuIFdl4oCZcmUgZ29pbmcgdG8gYWRkIHRoZSAmbHQ7Y29kZSBjbGFzcz0mcXVvdDtoaWdobGlnaHRlci1yb3VnZSZxdW90OyZndDtYTV9VUkwmbHQ7L2NvZGUmZ3Q7IHZhbHVlIGFzIGEgbmV3IGVudmlyb25tZW50IHZhcmlhYmxlLiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDktMjcteG1hdHRlcnM4LnBuZyZxdW90OyBhbHQ9JnF1b3Q7JnF1b3Q7IC8mZ3Q7Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7VGhlIGZpbmFsIHN0ZXAgZW50YWlscyByZWNpcGllbnQgc2V0IHVwLiBJZiB5b3XigJlyZSB0YXJnZXRpbmcgYSBncm91cCwgbmF2aWdhdGUgdG8gdGhlICZsdDtzdHJvbmcmZ3Q7R3JvdXBzJmx0Oy9zdHJvbmcmZ3Q7IHNlY3Rpb24sIGNyZWF0ZSBhIG5ldyBncm91cCwgYW5kIGFkZCB0aGUgYXBwcm9wcmlhdGUgdXNlcnMuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O3N0cm9uZyZndDtOb3RlJmx0Oy9zdHJvbmcmZ3Q7OiAmbHQ7aSZndDtZb3Ugd2lsbCBuZWVkIHRvIGhhdmUgeW91ciBvd24gdG9rZW4gcG9wdWxhdGVkIGluIHRoZSBwcm9maWxlLiZsdDsvaSZndDsmbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7aW1nIHNyYz0mcXVvdDsvYmxvZy9tZWRpYS8yMDIwLTA5LTI3LXhtYXR0ZXJzOS5wbmcmcXVvdDsgYWx0PSZxdW90OyZxdW90OyAvJmd0OyZsdDsvcCZndDsKCiZsdDtoMiZndDtUZXN0aW5nIGFuZCBhcHByb3ZpbmcmbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7VGhhdOKAmXMgaXQhIFdoZW4gdGhlIHBpcGVsaW5lIGdldHMgdHJpZ2dlcmVkLCBpdCB3aWxsIGJlIG9uIGhvbGQgYXQgdGhlICZsdDtjb2RlIGNsYXNzPSZxdW90O2hpZ2hsaWdodGVyLXJvdWdlJnF1b3Q7Jmd0O2hvbGQmbHQ7L2NvZGUmZ3Q7IHN0ZXAgd2UgY29uZmlndXJlZCBpbiB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7LmNpcmNsZWNpL2NvbmZpZy55bWwmbHQ7L2NvZGUmZ3Q7IGZpbGUuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0wOS0yNy14bWF0dGVyczEwLnBuZyZxdW90OyBhbHQ9JnF1b3Q7JnF1b3Q7IC8mZ3Q7Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7VGhpcyB3aWxsIHRyaWdnZXIgYSBub3RpZmljYXRpb24gdG8gdGhlIHVzZXIgd2UgZGVmaW5lZCBhYm92ZSBpbiB0aGUgJmx0O2NvZGUgY2xhc3M9JnF1b3Q7aGlnaGxpZ2h0ZXItcm91Z2UmcXVvdDsmZ3Q7Q3JlYXRlIHhNYXR0ZXJzIEV2ZW50Jmx0Oy9jb2RlJmd0OyBzdGVwLiBUaGUgZGVzaWduYXRlZCByZWNpcGllbnQgd2lsbCBnZXQgYSBub3RpZmljYXRpb24gd2l0aCBwaXBlbGluZSBkZXRhaWxzIGFzIHdlbGwgYXMgdGhlIG5lY2Vzc2FyeSByZXNwb25zZSBvcHRpb25zLiBUaGlzIGlzIGhvdyBpdCB3aWxsIGxvb2sgb24gdGhlIHhNYXR0ZXJzIG1vYmlsZSBhcHAsIGJ1dCB0aGUgZW1haWwgaXMgdmVyeSBzaW1pbGFyLiBUaGUgaW1hZ2Ugb24gdGhlIHJpZ2h0IGlzIHdpdGggdGhlIHJlc3BvbnNlcyBkcmF3ZXIgb3Blbiwgc2hvd2luZyB0aGUgYXZhaWxhYmxlIHJlc3BvbnNlcy4mbHQ7L3AmZ3Q7CgombHQ7cCBzdHlsZT0mcXVvdDt0ZXh0LWFsaWduOiBjZW50ZXImcXVvdDsmZ3Q7CiAgJmx0O2ltZyBzcmM9JnF1b3Q7L2Jsb2cvbWVkaWEvMjAyMC0wOS0yNy14bWF0dGVyczExLnBuZyZxdW90OyB3aWR0aD0mcXVvdDszMjUmcXVvdDsgYWx0PSZxdW90OyZxdW90OyAvJmd0OwogICZsdDtpbWcgc3JjPSZxdW90Oy9ibG9nL21lZGlhLzIwMjAtMDktMjcteG1hdHRlcnMxMi5wbmcmcXVvdDsgd2lkdGg9JnF1b3Q7MzI1JnF1b3Q7IGFsdD0mcXVvdDsmcXVvdDsgLyZndDsKJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7SnVzdCBsaWtlIHRoYXQsIHNlbGVjdGluZyAmbHQ7c3Ryb25nJmd0O0FwcHJvdmUmbHQ7L3N0cm9uZyZndDsgbWFrZXMgdGhlIEFQSSBjYWxsIGJhY2sgdG8gQ2lyY2xlQ0kgdG8gYXBwcm92ZSB0aGUgcGlwZWxpbmUgYW5kIGRlcGxveSB5b3VyIGNvZGUgdG8gcHJvZHVjdGlvbi4mbHQ7L3AmZ3Q7CgombHQ7cCZndDsmbHQ7aW1nIHNyYz0mcXVvdDsvYmxvZy9tZWRpYS8yMDIwLTA5LTI3LXhtYXR0ZXJzMTMucG5nJnF1b3Q7IGFsdD0mcXVvdDsmcXVvdDsgLyZndDsmbHQ7L3AmZ3Q7CjwvZGVzY3JpcHRpb24+CiAgICAgICAgCiAgICAgIDwvaXRlbT4KICAgIAogICAgICAKICAgICAgPGl0ZW0+CiAgICAgICAgPHRpdGxlPkhhY2t0b2JlcmZlc3QgMjAyMCBpcyB1cG9uIHVzOiBjZWxlYnJhdGUgb3BlbiBzb3VyY2Ugd2l0aCBDaXJjbGVDSSBvcmJzPC90aXRsZT4KICAgICAgICA8bGluaz5odHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL2hhY2t0b2JlcmZlc3QtMjAyMC1pcy11cG9uLXVzLWNlbGVicmF0ZS1vcGVuLXNvdXJjZS13aXRoLWNpcmNsZWNpLW9yYnMvPC9saW5rPgogICAgICAgIDxwdWJEYXRlPlRodSwgMDEgT2N0IDIwMjAgMDk6MDA6MDAgLTA3MDA8L3B1YkRhdGU+CiAgICAgICAgPGd1aWQgaXNQZXJtYUxpbms9InRydWUiPmh0dHBzOi8vY2lyY2xlY2kuY29tL2Jsb2cvaGFja3RvYmVyZmVzdC0yMDIwLWlzLXVwb24tdXMtY2VsZWJyYXRlLW9wZW4tc291cmNlLXdpdGgtY2lyY2xlY2ktb3Jicy88L2d1aWQ+CiAgICAgICAgCiAgICAgICAgICA8ZGM6Y3JlYXRvcj5KZXJlbXkgTWVpc3M8L2RjOmNyZWF0b3I+CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgICA8ZGVzY3JpcHRpb24+Jmx0O3AmZ3Q7RXZlcnkgT2N0b2JlciwgYXMgdGhlIGNvbG9ycyBvZiB0aGUgbGVhdmVzIGNoYW5nZSwgYW5kIHRoZSB3ZWF0aGVyIHR1cm5zIGNvb2xlciAob3IgaWYgeW914oCZcmUgaW4gdGhlIFNvdXRoZXJuIEhlbWlzcGhlcmUsIHRoZSBvcHBvc2l0ZSkgYSBnbG9iYWwgcGhlbm9tZW5vbiBraWNrcyBvZmY6IEhhY2t0b2JlcmZlc3QhJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2hhY2t0b2JlcmZlc3QuZGlnaXRhbG9jZWFuLmNvbS8mcXVvdDsmZ3Q7SGFja3RvYmVyZmVzdCZsdDsvYSZndDsgaXMgYSBtb250aC1sb25nIGNlbGVicmF0aW9uIG9mIG9wZW4gc291cmNlLCBzdGFydGVkIGJ5IERpZ2l0YWxPY2VhbiBpbiAyMDE0LCBhbmQgZW5jb3VyYWdlcyBhd2FyZW5lc3Mgb2YsIGFuZCBwYXJ0aWNpcGF0aW9uIGluLCB0aGUgb3BlbiBzb3VyY2UgY29tbXVuaXR5LiBJbiAyMDE5IGFsb25lLCB0aGVyZSB3ZXJlIG92ZXIgJmx0O2VtJmd0OzQ4M2sgcHVsbCByZXF1ZXN0cyZsdDsvZW0mZ3Q7IG9wZW5lZCBhY3Jvc3Mgb3ZlciAmbHQ7ZW0mZ3Q7MTU0ayByZXBvc2l0b3JpZXMmbHQ7L2VtJmd0Oywgd2l0aCBwYXJ0aWNpcGFudHMgZnJvbSAmbHQ7ZW0mZ3Q7MTQyIGNvdW50cmllcyZsdDsvZW0mZ3Q7IOKAkyBhIHRydWx5IGltcHJlc3NpdmUgYWNoaWV2ZW1lbnQgYnkgdGhlIGNvbW11bml0eS4mbHQ7L3AmZ3Q7CgombHQ7cCZndDtIZXJlIGF0IENpcmNsZUNJIHdl4oCZdmUgYWx3YXlzIGJlbGlldmVkIHN0cm9uZ2x5IGluIG9wZW4gc291cmNlLCBhbmQgdGhlIHZhbHVlIHRoYXQgaXQgY2FuIGJyaW5nIHRvIG9yZ2FuaXphdGlvbnMuIFdlIGhhdmUgYSBsb25nIGhpc3Rvcnkgb2YgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9vcGVuLXNvdXJjZS8mcXVvdDsmZ3Q7c3VwcG9ydGluZyBvcGVuIHNvdXJjZSBwcm9qZWN0cyZsdDsvYSZndDsgb24gQ2lyY2xlQ0ksIGFuZCBtYW55IG9mIHRoZSAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vY2lyY2xlY2kuY29tL2Jsb2cvbGVhZGluZy1vcGVuLXNvdXJjZS1tbC1hZHZhbmNlbWVudHMtYW4taW50cm9kdWN0aW9uLXRvLXB5dG9yY2gvJnF1b3Q7Jmd0O2xhcmdlc3Qgb3BlbiBzb3VyY2UgcHJvamVjdHMmbHQ7L2EmZ3Q7IHVzZSBDaXJjbGVDSSBpbiB0aGVpciBwaXBlbGluZXMuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Rm9yIHRoaXMgeWVhcuKAmXMgZXZlbnQsIGFueW9uZSB3aG8gbWVldHMgdGhlICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9oYWNrdG9iZXJmZXN0LmRpZ2l0YWxvY2Vhbi5jb20vZGV0YWlscyZxdW90OyZndDtIYWNrdG9iZXJmZXN0IGNvcmUgcmVxdWlyZW1lbnRzJmx0Oy9hJmd0OyAobWluaW11bSBvZiA0IHZhbGlkIFBScyBzdWJtaXR0ZWQgdG8gYW4gb3BlbiBzb3VyY2UgcHJvamVjdCkgd2lsbCByZWNlaXZlIGV2ZW50IHN3YWcsIGluY2x1ZGluZyBhIEhhY2t0b2JlcmZlc3QgdC1zaGlydCBhbmQgc3RpY2tlcnMgZnJvbSB0aGUgc3VwcG9ydGluZyBzcG9uc29ycy4mbHQ7L3AmZ3Q7CgombHQ7aDImZ3Q7T3JidG9iZXJmZXN0OiBoYWNrIE9TUyB3aXRoIENpcmNsZUNJIG9yYnMmbHQ7L2gyJmd0OwoKJmx0O3AmZ3Q7TGFzdCB5ZWFyLCB3ZSBsYXVuY2hlZCBvdXIgZmlyc3Qg4oCcJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL2pvaW4tdGhlLXBhcnR5LWdldC15b3VyLWhhY2t0b2JlcmZlc3QtcHJzLXdpdGgtY2lyY2xlY2ktb3Jicy8mcXVvdDsmZ3Q7T3JidG9iZXJmZXN0Jmx0Oy9hJmd0O+KAnSB0byBjb2luY2lkZSB3aXRoIEhhY2t0b2JlcmZlc3QuICBPcmJ0b2JlcmZlc3QgZW5jb3VyYWdlZCB0aGUgY29tbXVuaXR5IHRvIGxlYXJuIGFib3V0ICZsdDthIGhyZWY9JnF1b3Q7aHR0cHM6Ly9jaXJjbGVjaS5jb20vZG9jcy8yLjAvdXNpbmctb3Jicy8mcXVvdDsmZ3Q7Q2lyY2xlQ0kgb3JicyZsdDsvYSZndDs6IHJldXNhYmxlIHBhY2thZ2VzIG9mIFlBTUwgY29uZmlndXJhdGlvbiB0aGF0IGNvbmRlbnNlcyByZXBlYXRlZCBsaW5lcyBvZiBjb25maWcgaW50byBhIHNpbmdsZSBsaW5lIG9mIGNvZGUuIE9yYnMgaGVscCB5b3UgcGFja2FnZSwgc2hpcCwgYW5kIHJlLXVzZSBjb2RlLiBXZeKAmXJlIHJldmlzaXRuZyBPcmJ0b2JlcmZlc3QgdGhpcyB5ZWFyLCB0byBoZWxwIG1vcmUgZGV2ZWxvcGVycyBsZWFybiBhYm91dCBvcmJzIGFuZCBIYWNrdG9iZXJmZXN0LiBZb3UgYWxzbyBoYXZlIHRoZSBjaGFuY2UgdG8gZG91YmxlIHlvdXIgcHJpemUgaGF1bCB3aXRoIG91ciB1bmlxdWUsIGxpbWl0ZWQgZWRpdGlvbiBzd2FnLiZsdDsvcCZndDsKCiZsdDtoMiZndDtIb3cgdG8gZ2V0IGludm9sdmVkJmx0Oy9oMiZndDsKJmx0O3AmZ3Q7VGhlcmUgYXJlIGEgZmV3IHdheXMgdG8gZ2V0IGludm9sdmVkIHRoaXMgeWVhci4gVG8gcGFydGljaXBhdGUgaW4gSGFja3RvYmVyZmVzdCwgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2hhY2t0b2JlcmZlc3QuZGlnaXRhbG9jZWFuLmNvbS8mcXVvdDsmZ3Q7cmVnaXN0ZXIgd2l0aCBEaWdpdGFsT2NlYW4mbHQ7L2EmZ3Q7IGFuZCBzdWJtaXQgNCBQUnMgdGhhdCBtZWV0IHRoZSBzcGVjaWZpY2F0aW9ucyBvdXRsaW5lZCBvbiB0aGVpciBwYWdlIHRocm91Z2hvdXQgdGhlIG1vbnRoIG9mIE9jdG9iZXIuIEFzIGEgcmV3YXJkLCByZWNlaXZlIEhhY2t0b2JlcmZlc3Qgc3dhZyBvciBkb25hdGUgdG8gcGxhbnQgYSB0cmVlIGluc3RlYWQuIFRvIHBhcnRpY2lwYXRlIGluIENpcmNsZUNJIE9yYnRvYmVyZmVzdCwgeW91IGhhdmUgYSBmZXcgb3B0aW9ucywgb3V0bGluZWQgYmVsb3cuIFdlIGhvcGUgeW914oCZbGwgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLmNvbS9ibG9nL2hvdy10by1tYWtlLWFuLWVhc3ktYW5kLXZhbHVhYmxlLW9wZW4tc291cmNlLWNvbnRyaWJ1dGlvbi13aXRoLWNpcmNsZWNpLW9yYnMvJnF1b3Q7Jmd0O2NvbnRyaWJ1dGUgdG8gQ2lyY2xlQ0kgb3JicyZsdDsvYSZndDsgdG8gY29tcGxldGUgdGhlIGNoYWxsZW5nZSEmbHQ7L3AmZ3Q7CgombHQ7aDMmZ3Q7VGhlIGNoYWxsZW5nZXM6Jmx0Oy9oMyZndDsKCiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7Q2hhbGxlbmdlIDEmbHQ7L3N0cm9uZyZndDsmbHQ7YnIgLyZndDsKQ3JlYXRlIGEgUFIsICZsdDtzdHJvbmcmZ3Q7d2l0aCDigJxPcmJ0b2JlcmZlc3TigJ0gYXMgdGhlIGxhYmVsJmx0Oy9zdHJvbmcmZ3Q7LCB0byBpbmNsdWRlIG9yYiB1c2FnZSBvbiBhbiBleGlzdGluZyBDaXJjbGVDSSBjb25maWcgYW5kIGdldCB0aGF0IFBSIGFjY2VwdGVkIG9yIG1lcmdlZC4gVmFsaWQgY29udHJpYnV0aW9ucyB0byBvdGhlciBDaXJjbGVDSSByZXBvcywgbGlrZSBEb2NzLCBtYXkgYWxzbyBiZSBjb25zaWRlcmVkLiZsdDsvcCZndDsKCiZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7UHJpemVzOiZsdDsvc3Ryb25nJmd0OyZsdDticiAvJmd0OwoxLTMgUFJzIHJlY2VpdmUgYSBzdGlja2VyIHBhY2sKNCBQUnMgcmVjZWl2ZSBzdGlja2VycyBhbmQgYSBULXNoaXJ0Jmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O3N0cm9uZyZndDtDaGFsbGVuZ2UgMjombHQ7L3N0cm9uZyZndDsmbHQ7YnIgLyZndDsKRGV2ZWxvcCBhbmQgcHVibGlzaCBhbiBvcmIgdXNpbmcgdGhlICZsdDthIGhyZWY9JnF1b3Q7L2RvY3MvMi4wL29yYi1hdXRob3ItaW50cm8vJnF1b3Q7Jmd0O09yYiBEZXZlbG9wbWVudCBLaXQmbHQ7L2EmZ3Q7LiBNYWtlIHN1cmUgeW91ciBvcmIgc29sdmVzIGEgY2hhbGxlbmdlIHRoYXQgb3RoZXIgZGV2ZWxvcGVycyBtaWdodCBiZSBmYWNpbmcuJmx0Oy9wJmd0OwoKJmx0O3AmZ3Q7Jmx0O3N0cm9uZyZndDtQcml6ZXM6Jmx0Oy9zdHJvbmcmZ3Q7Jmx0O2JyIC8mZ3Q7ClN0aWNrZXIgcGFjawpULXNoaXJ0CkxpbWl0ZWQgZWRpdGlvbiBPcmJ0b2JlcmZlc3QgcGluCiZsdDticiAvJmd0OwombHQ7YnIgLyZndDsKT25jZSB5b3XigJl2ZSBjb21wbGV0ZWQgdGhlIGNoYWxsZW5nZShzKSBhYm92ZSwgZmlsbCBvdXQgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2NpcmNsZWNpLWNvbW11bml0eS50eXBlZm9ybS5jb20vdG8vbUVyR0wwbnYmcXVvdDsmZ3Q7dGhpcyBmb3JtJmx0Oy9hJmd0OyB0byByZWNlaXZlIHlvdXIgc3dhZy4gQWZ0ZXIgdGhlIG1vbnRoIG9mIE9jdG9iZXIgaXMgb3Zlciwgd2Ugd2lsbCBwcm9jZXNzIGFsbCBzdWJtaXNzaW9ucywgdmVyaWZ5IHRoZW0sIGFuZCBsZXQgeW91IGtub3cgaG93IHlvdSBjYW4gY2xhaW0geW91ciBzcGVjaWFsIENpcmNsZUNJIHN3YWcuIFdlIGFyZSBzbyBleGNpdGVkIHRvIHNlZSBhbGwgb2YgdGhlIGNvbnRyaWJ1dGlvbnMgdG8gb3BlbiBzb3VyY2UgYW5kIG91ciBvcmJzIHRoYXQgd2lsbCBiZSBjcmVhdGVkIHRoaXMgeWVhciEmbHQ7L3AmZ3Q7CgombHQ7cCZndDtNYWtlIHN1cmUgdG8gam9pbiB0aGUgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL2Rpc2N1c3MuY2lyY2xlY2kuY29tL3Qvb2ZmaWNpYWwtaGFja3RvYmVyZmVzdC1hbmQtb3JidG9iZXJmZXN0LXRocmVhZC8zNzUxMC8mcXVvdDsmZ3Q7T3JidG9iZXJmZXN0Jmx0Oy9hJmd0OyBkaXNjdXNzaW9uIG9uIG91ciBjb21tdW5pdHkgZm9ydW0gZm9yIGlkZWFzLCBGQVFzLCBhbmQgdG8gYXNrIGFueSBxdWVzdGlvbnMuIFlvdSBjYW4gYWxzbyBmb2xsb3cgYWxvbmcgd2l0aCB0aGUgY29udmVyc2F0aW9ucyBvbiBUd2l0dGVyIHZpYSB0aGUgJmx0O2EgaHJlZj0mcXVvdDtodHRwczovL3R3aXR0ZXIuY29tL3NlYXJjaD9xPSUyM2hhY2t0b2JlcmZlc3QmYW1wO2FtcDtmPWxpdmUmcXVvdDsmZ3Q7I2hhY2t0b2JlcmZlc3QmbHQ7L2EmZ3Q7IGFuZCAmbHQ7YSBocmVmPSZxdW90O2h0dHBzOi8vdHdpdHRlci5jb20vc2VhcmNoP3E9JTIzb3JidG9iZXJmZXN0JmFtcDthbXA7Zj1saXZlJnF1b3Q7Jmd0OyNvcmJ0b2JlcmZlc3QmbHQ7L2EmZ3Q7IGhhc2h0YWdzISZsdDsvcCZndDsKPC9kZXNjcmlwdGlvbj4KICAgICAgICAKICAgICAgPC9pdGVtPgogICAgCiAgPC9jaGFubmVsPgo8L3Jzcz4K - recorded_at: Wed, 21 Oct 2020 15:08:31 GMT -- request: - method: get - uri: https://medium.com/feed/@macsiri/ - body: - encoding: US-ASCII - string: '' - headers: - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - User-Agent: - - Ruby - response: - status: - code: 301 - message: Moved Permanently - headers: - Date: - - Wed, 21 Oct 2020 15:08:31 GMT - Content-Type: - - text/html; charset=utf-8 - Content-Length: - - '67' - Connection: - - keep-alive - Sepia-Upstream: - - medium - Location: - - https://medium.com/feed/@macsiri - Medium-Fulfilled-By: - - valencia/main-20201020-231910-0a4c7cfeb9 - X-Envoy-Upstream-Service-Time: - - '1' - Strict-Transport-Security: - - max-age=15552000; includeSubDomains; preload - Cf-Cache-Status: - - DYNAMIC - Cf-Request-Id: - - 05ed4d706b0000cd0a97b8d000000001 - Expect-Ct: - - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" - X-Content-Type-Options: - - nosniff - Server: - - cloudflare - Cf-Ray: - - 5e5be4fa492dcd0a-FCO - Alt-Svc: - - h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400 - body: - encoding: UTF-8 - string: "Moved Permanently.\n\n" - recorded_at: Wed, 21 Oct 2020 15:08:31 GMT -- request: - method: get - uri: https://medium.com/feed/@macsiri - body: - encoding: US-ASCII - string: '' - headers: - Cookie: - - __cfduid=dbdb508a99b43ab3e3eac55b15191543b1603292911; __cfruid=770a5be1e27909caf84c7bd86d70847695a83641-1603292911 - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - User-Agent: - - Ruby - response: - status: - code: 200 - message: OK - headers: - Date: - - Wed, 21 Oct 2020 15:08:32 GMT - Content-Type: - - text/xml; charset=UTF-8 - Transfer-Encoding: - - chunked - Connection: - - keep-alive - Sepia-Upstream: - - medium - Cache-Control: - - private, must-revalidate, max-age=900 - Content-Security-Policy: - - 'default-src ''self''; connect-src https://localhost https://*.instapaper.com - https://*.stripe.com https://glyph.medium.com https://*.paypal.com https://*.braintree-api.com - https://*.braintreegateway.com https://accounts.google.com https://getpocket.com - https://medium.com https://*.medium.com https://*.medium.com https://medium.com - https://*.medium.com https://*.algolia.net https://cdn-static-1.medium.com - https://dnqgz544uhbo8.cloudfront.net https://cdn-videos-1.medium.com https://cdn-audio-1.medium.com - https://lightstep.medium.systems https://*.branch.io ''self''; font-src data: - https://*.amazonaws.com https://*.medium.com https://glyph.medium.com https://medium.com - https://*.gstatic.com https://dnqgz544uhbo8.cloudfront.net https://cdn-static-1.medium.com - ''self''; frame-src chromenull: https: webviewprogressproxy: medium: ''self''; - img-src blob: data: https: ''self''; media-src https://*.cdn.vine.co https://d1fcbxp97j4nb2.cloudfront.net - https://d262ilb51hltx0.cloudfront.net https://*.medium.com https://gomiro.medium.com - https://miro.medium.com https://pbs.twimg.com ''self'' blob:; object-src ''self''; - script-src ''unsafe-eval'' ''unsafe-inline'' about: https: ''self''; style-src - ''unsafe-inline'' data: https: ''self''; report-uri https://csp.medium.com' - Expires: - - Wed, 21 Oct 2020 15:23:32 GMT - Link: - - ; rel="humans" - Medium-Fulfilled-By: - - valencia/main-20201020-231910-0a4c7cfeb9 - Pragma: - - private - X-Content-Type-Options: - - nosniff - X-Envoy-Upstream-Service-Time: - - '20' - X-Frame-Options: - - sameorigin - X-Obvious-Info: - - 42755-064957c,064957ce014 - X-Obvious-Tid: - - 1603292912095:f99aa8848e99 - X-Opentracing: - - '{"ot-tracer-spanid":"287206d02e177dda","ot-tracer-traceid":"7d2a8a382be53df4","ot-tracer-sampled":"true"}' - X-Powered-By: - - Medium - X-Ua-Compatible: - - IE=edge, Chrome=1 - X-Xss-Protection: - - 1; mode=block - Strict-Transport-Security: - - max-age=15552000; includeSubDomains; preload - Cf-Cache-Status: - - DYNAMIC - Cf-Request-Id: - - 05ed4d71470000cd16ee982000000001 - Expect-Ct: - - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" - Server: - - cloudflare - Cf-Ray: - - 5e5be4fbaaf0cd16-FCO - Alt-Svc: - - h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400 - body: - encoding: ASCII-8BIT - string: !binary |- - PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48cnNzIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6Y29udGVudD0iaHR0cDovL3B1cmwub3JnL3Jzcy8xLjAvbW9kdWxlcy9jb250ZW50LyIgeG1sbnM6YXRvbT0iaHR0cDovL3d3dy53My5vcmcvMjAwNS9BdG9tIiB2ZXJzaW9uPSIyLjAiIHhtbG5zOmNjPSJodHRwOi8vY3liZXIubGF3LmhhcnZhcmQuZWR1L3Jzcy9jcmVhdGl2ZUNvbW1vbnNSc3NNb2R1bGUuaHRtbCI+CiAgICA8Y2hhbm5lbD4KICAgICAgICA8dGl0bGU+PCFbQ0RBVEFbU3RvcmllcyBieSBNYWMgU2lyaSBvbiBNZWRpdW1dXT48L3RpdGxlPgogICAgICAgIDxkZXNjcmlwdGlvbj48IVtDREFUQVtTdG9yaWVzIGJ5IE1hYyBTaXJpIG9uIE1lZGl1bV1dPjwvZGVzY3JpcHRpb24+CiAgICAgICAgPGxpbms+aHR0cHM6Ly9tZWRpdW0uY29tL0BtYWNzaXJpP3NvdXJjZT1yc3MtNGIyNjA1ZGE5MzhmLS0tLS0tMjwvbGluaz4KICAgICAgICA8aW1hZ2U+CiAgICAgICAgICAgIDx1cmw+aHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9maXQvYy8xNTAvMTUwLzAqdzJibXRXbGFsZEtGbGI4ZS48L3VybD4KICAgICAgICAgICAgPHRpdGxlPlN0b3JpZXMgYnkgTWFjIFNpcmkgb24gTWVkaXVtPC90aXRsZT4KICAgICAgICAgICAgPGxpbms+aHR0cHM6Ly9tZWRpdW0uY29tL0BtYWNzaXJpP3NvdXJjZT1yc3MtNGIyNjA1ZGE5MzhmLS0tLS0tMjwvbGluaz4KICAgICAgICA8L2ltYWdlPgogICAgICAgIDxnZW5lcmF0b3I+TWVkaXVtPC9nZW5lcmF0b3I+CiAgICAgICAgPGxhc3RCdWlsZERhdGU+V2VkLCAyMSBPY3QgMjAyMCAxNDo1Njo1NyBHTVQ8L2xhc3RCdWlsZERhdGU+CiAgICAgICAgPGF0b206bGluayBocmVmPSJodHRwczovL21lZGl1bS5jb20vZmVlZC9AbWFjc2lyaSIgcmVsPSJzZWxmIiB0eXBlPSJhcHBsaWNhdGlvbi9yc3MreG1sIi8+CiAgICAgICAgPHdlYk1hc3Rlcj48IVtDREFUQVt5b3VyZnJpZW5kc0BtZWRpdW0uY29tXV0+PC93ZWJNYXN0ZXI+CiAgICAgICAgPGF0b206bGluayBocmVmPSJodHRwOi8vbWVkaXVtLnN1cGVyZmVlZHIuY29tIiByZWw9Imh1YiIvPgogICAgICAgIDxpdGVtPgogICAgICAgICAgICA8dGl0bGU+PCFbQ0RBVEFbVGVzdGluZyBSU1MgRmVlZF1dPjwvdGl0bGU+CiAgICAgICAgICAgIDxsaW5rPmh0dHBzOi8vbWVkaXVtLmNvbS9AbWFjc2lyaS90ZXN0aW5nLXJzcy1mZWVkLTZhZjA0YjdlNTdlMT9zb3VyY2U9cnNzLTRiMjYwNWRhOTM4Zi0tLS0tLTI8L2xpbms+CiAgICAgICAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0cHM6Ly9tZWRpdW0uY29tL3AvNmFmMDRiN2U1N2UxPC9ndWlkPgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbdGVzdF1dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxkYzpjcmVhdG9yPjwhW0NEQVRBW01hYyBTaXJpXV0+PC9kYzpjcmVhdG9yPgogICAgICAgICAgICA8cHViRGF0ZT5UdWUsIDAyIEphbiAyMDE4IDE5OjA2OjMwIEdNVDwvcHViRGF0ZT4KICAgICAgICAgICAgPGF0b206dXBkYXRlZD4yMDE5LTA2LTE5VDIxOjM4OjA3LjU0OVo8L2F0b206dXBkYXRlZD4KICAgICAgICAgICAgPGNvbnRlbnQ6ZW5jb2RlZD48IVtDREFUQVs8cD55b3V0dWJlIGxpbmvCoGhlcmU8L3A+PGlmcmFtZSBzcmM9Imh0dHBzOi8vY2RuLmVtYmVkbHkuY29tL3dpZGdldHMvbWVkaWEuaHRtbD9zcmM9aHR0cHMlM0ElMkYlMkZ3d3cueW91dHViZS5jb20lMkZlbWJlZCUyRlFPQ2FhY084d3VzJTNGZmVhdHVyZSUzRG9lbWJlZCZhbXA7ZGlzcGxheV9uYW1lPVlvdVR1YmUmYW1wO3VybD1odHRwcyUzQSUyRiUyRnd3dy55b3V0dWJlLmNvbSUyRndhdGNoJTNGdiUzRFFPQ2FhY084d3VzJmFtcDtpbWFnZT1odHRwcyUzQSUyRiUyRmkueXRpbWcuY29tJTJGdmklMkZRT0NhYWNPOHd1cyUyRmhxZGVmYXVsdC5qcGcmYW1wO2tleT1hMTlmY2MxODRiOTcxMWUxYjQ3NjQwNDBkM2RjNWMwNyZhbXA7dHlwZT10ZXh0JTJGaHRtbCZhbXA7c2NoZW1hPXlvdXR1YmUiIHdpZHRoPSI4NTQiIGhlaWdodD0iNDgwIiBmcmFtZWJvcmRlcj0iMCIgc2Nyb2xsaW5nPSJubyI+PGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL21lZGlhLzdkYTc0YmIzMGY4YTJhODJiMGFjYjg5YjIxM2EwMThiL2hyZWYiPmh0dHBzOi8vbWVkaXVtLmNvbS9tZWRpYS83ZGE3NGJiMzBmOGEyYTgyYjBhY2I4OWIyMTNhMDE4Yi9ocmVmPC9hPjwvaWZyYW1lPjxwPnR3ZWV0IGhlcmU8L3A+PHN0eWxlPmJvZHlbZGF0YS10d3R0ci1yZW5kZXJlZD0idHJ1ZSJdIHtiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDt9LnR3aXR0ZXItdHdlZXQge21hcmdpbjogYXV0byAhaW1wb3J0YW50O308L3N0eWxlPjxibG9ja3F1b3RlIGNsYXNzPSJ0d2l0dGVyLXR3ZWV0IiBkYXRhLWNvbnZlcnNhdGlvbj0ibm9uZSIgZGF0YS1hbGlnbj0iY2VudGVyIiBkYXRhLWRudD0idHJ1ZSI+PHA+JiN4MjAwYTsmbWRhc2g7JiN4MjAwYTs8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL2JlbmRoYWxwZXJuL3N0YXR1cy85NDgyNTYwODMzNTI3MzU3NDQiPkBiZW5kaGFscGVybjwvYT48L3A+PC9ibG9ja3F1b3RlPjxzY3JpcHQgc3JjPSIvL3BsYXRmb3JtLnR3aXR0ZXIuY29tL3dpZGdldHMuanMiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD48c2NyaXB0PmZ1bmN0aW9uIG5vdGlmeVJlc2l6ZShoZWlnaHQpIHtoZWlnaHQgPSBoZWlnaHQgPyBoZWlnaHQgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0OyB2YXIgcmVzaXplZCA9IGZhbHNlOyBpZiAod2luZG93LmRvbmtleSAmJiBkb25rZXkucmVzaXplKSB7ZG9ua2V5LnJlc2l6ZShoZWlnaHQpO3Jlc2l6ZWQgPSB0cnVlO31pZiAocGFyZW50ICYmIHBhcmVudC5fcmVzaXplSWZyYW1lKSB7dmFyIG9iaiA9IHtpZnJhbWU6IHdpbmRvdy5mcmFtZUVsZW1lbnQsIGhlaWdodDogaGVpZ2h0fTsgcGFyZW50Ll9yZXNpemVJZnJhbWUob2JqKTsgcmVzaXplZCA9IHRydWU7fWlmICh3aW5kb3cubG9jYXRpb24gJiYgd2luZG93LmxvY2F0aW9uLmhhc2ggPT09ICIjYW1wPTEiICYmIHdpbmRvdy5wYXJlbnQgJiYgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZSkge3dpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2Uoe3NlbnRpbmVsOiAiYW1wIiwgdHlwZTogImVtYmVkLXNpemUiLCBoZWlnaHQ6IGhlaWdodH0sICIqIik7fWlmICh3aW5kb3cud2Via2l0ICYmIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzICYmIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnJlc2l6ZSkge3dpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnJlc2l6ZS5wb3N0TWVzc2FnZShoZWlnaHQpOyByZXNpemVkID0gdHJ1ZTt9cmV0dXJuIHJlc2l6ZWQ7fXR3dHRyLmV2ZW50cy5iaW5kKCdyZW5kZXJlZCcsIGZ1bmN0aW9uIChldmVudCkge25vdGlmeVJlc2l6ZSgpO30pOyB0d3R0ci5ldmVudHMuYmluZCgncmVzaXplJywgZnVuY3Rpb24gKGV2ZW50KSB7bm90aWZ5UmVzaXplKCk7fSk7PC9zY3JpcHQ+PHNjcmlwdD5pZiAocGFyZW50ICYmIHBhcmVudC5fcmVzaXplSWZyYW1lKSB7dmFyIG1heFdpZHRoID0gcGFyc2VJbnQod2luZG93LmZyYW1lRWxlbWVudC5nZXRBdHRyaWJ1dGUoIndpZHRoIikpOyBpZiAoIDUwMCAgPCBtYXhXaWR0aCkge3dpbmRvdy5mcmFtZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsICI1MDAiKTt9fTwvc2NyaXB0PjxwPkdpdGh1YiBnaXN0wqBoZXJlPC9wPjxpZnJhbWUgc3JjPSIiIHdpZHRoPSIwIiBoZWlnaHQ9IjAiIGZyYW1lYm9yZGVyPSIwIiBzY3JvbGxpbmc9Im5vIj48YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vbWVkaWEvNzc3YWU4YjdkODkxNmU1NjViODRiNzA0YzA4OGNmMGMvaHJlZiI+aHR0cHM6Ly9tZWRpdW0uY29tL21lZGlhLzc3N2FlOGI3ZDg5MTZlNTY1Yjg0YjcwNGMwODhjZjBjL2hyZWY8L2E+PC9pZnJhbWU+PHA+Y29kZSBibG9jazwvcD48cHJlPnRlc3RzZXRzZXRzZXRzZXRzZXRzZXQgbGV0cyBpbnRyb2R1Y2Ugc29tZSB7eyBjaGFvcyB9fTwvcHJlPjxwcmU+SGVyZSYjMzk7cyBtb3JlIHt7IHdoYXQgfX08L3ByZT48cD5zb21lIG1vcmUgY29kZSBhbmQge3sgVkFSSUFCTEUgfX0gYW5kIDxzdHJvbmc+PGVtPnt7IEhUTUzCoH19PC9lbT48L3N0cm9uZz48L3A+PGgzPnt7IGhvdyBhYm91dCB0aGlzwqB9fTwvaDM+PGltZyBzcmM9Imh0dHBzOi8vbWVkaXVtLmNvbS9fL3N0YXQ/ZXZlbnQ9cG9zdC5jbGllbnRWaWV3ZWQmcmVmZXJyZXJTb3VyY2U9ZnVsbF9yc3MmcG9zdElkPTZhZjA0YjdlNTdlMSIgd2lkdGg9IjEiIGhlaWdodD0iMSIgYWx0PSIiPl1dPjwvY29udGVudDplbmNvZGVkPgogICAgICAgIDwvaXRlbT4KICAgIDwvY2hhbm5lbD4KPC9yc3M+ - recorded_at: Wed, 21 Oct 2020 15:08:32 GMT -recorded_with: VCR 6.0.0 diff --git a/spec/support/fixtures/vcr_cassettes/Feeds_Import/when_feed_referential_link_is_false/does_not_self-reference_links_for_user.yml b/spec/support/fixtures/vcr_cassettes/feeds_import_non_referential.yml similarity index 86% rename from spec/support/fixtures/vcr_cassettes/Feeds_Import/when_feed_referential_link_is_false/does_not_self-reference_links_for_user.yml rename to spec/support/fixtures/vcr_cassettes/feeds_import_non_referential.yml index a5f175c48..234171289 100644 --- a/spec/support/fixtures/vcr_cassettes/Feeds_Import/when_feed_referential_link_is_false/does_not_self-reference_links_for_user.yml +++ b/spec/support/fixtures/vcr_cassettes/feeds_import_non_referential.yml @@ -19,11 +19,11 @@ http_interactions: message: Moved Permanently headers: Date: - - Wed, 21 Oct 2020 15:08:42 GMT + - Tue, 05 Jan 2021 10:57:45 GMT Content-Type: - text/html; charset=utf-8 - Content-Length: - - '67' + Transfer-Encoding: + - chunked Connection: - keep-alive Sepia-Upstream: @@ -31,7 +31,7 @@ http_interactions: Location: - https://medium.com/feed/@macsiri Medium-Fulfilled-By: - - valencia/main-20201020-231910-0a4c7cfeb9 + - valencia/main-20210104-181409-1cdaa084a4 X-Envoy-Upstream-Service-Time: - '0' Strict-Transport-Security: @@ -39,7 +39,7 @@ http_interactions: Cf-Cache-Status: - DYNAMIC Cf-Request-Id: - - 05ed4d9bd60000cd421587d000000001 + - 0773cb29480000202c8429a000000001 Expect-Ct: - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" X-Content-Type-Options: @@ -47,13 +47,11 @@ http_interactions: Server: - cloudflare Cf-Ray: - - 5e5be53fbc48cd42-FCO - Alt-Svc: - - h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400 + - 60ccae220bc0202c-AMS body: encoding: UTF-8 string: "Moved Permanently.\n\n" - recorded_at: Wed, 21 Oct 2020 15:08:42 GMT + recorded_at: Tue, 05 Jan 2021 10:57:45 GMT - request: method: get uri: https://medium.com/feed/@macsiri @@ -62,7 +60,7 @@ http_interactions: string: '' headers: Cookie: - - __cfduid=d83cfe3836c1078607110a5fc80192d021603292922; __cfruid=880a68186330688cb4c6ad62b07be5b6b3deb196-1603292922 + - __cfduid=d8732a06803e42f32ecfdc844b8d661951609844265; __cfruid=292fef9ba6897464c521e21a2629c0c602c9c8bf-1609844265 Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -75,7 +73,7 @@ http_interactions: message: OK headers: Date: - - Wed, 21 Oct 2020 15:08:43 GMT + - Tue, 05 Jan 2021 10:57:45 GMT Content-Type: - text/xml; charset=UTF-8 Transfer-Encoding: @@ -103,25 +101,25 @@ http_interactions: script-src ''unsafe-eval'' ''unsafe-inline'' about: https: ''self''; style-src ''unsafe-inline'' data: https: ''self''; report-uri https://csp.medium.com' Expires: - - Wed, 21 Oct 2020 15:23:43 GMT + - Tue, 05 Jan 2021 11:12:45 GMT Link: - ; rel="humans" Medium-Fulfilled-By: - - valencia/main-20201020-231910-0a4c7cfeb9 + - valencia/main-20210104-181409-1cdaa084a4 Pragma: - private X-Content-Type-Options: - nosniff X-Envoy-Upstream-Service-Time: - - '28' + - '25' X-Frame-Options: - sameorigin X-Obvious-Info: - - 42755-064957c,064957ce014 + - 20210104-2143-root,c5c3cfea X-Obvious-Tid: - - 1603292923457:6b789e9f56e2 + - 1609844265589:9000882f023b X-Opentracing: - - '{"ot-tracer-spanid":"6c5f43e0091c2721","ot-tracer-traceid":"13b558f883cacd4b","ot-tracer-sampled":"true"}' + - '{"ot-tracer-spanid":"01657f995d888773","ot-tracer-traceid":"55ee1604bb8b7c04","ot-tracer-sampled":"true"}' X-Powered-By: - Medium X-Ua-Compatible: @@ -133,20 +131,18 @@ http_interactions: Cf-Cache-Status: - DYNAMIC Cf-Request-Id: - - 05ed4d9cc20000cd22c89f1000000001 + - 0773cb2a2e000072e12f938000000001 Expect-Ct: - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" Server: - cloudflare Cf-Ray: - - 5e5be5413cbbcd22-FCO - Alt-Svc: - - h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400 + - 60ccae23785a72e1-AMS body: encoding: ASCII-8BIT string: !binary |- - PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48cnNzIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6Y29udGVudD0iaHR0cDovL3B1cmwub3JnL3Jzcy8xLjAvbW9kdWxlcy9jb250ZW50LyIgeG1sbnM6YXRvbT0iaHR0cDovL3d3dy53My5vcmcvMjAwNS9BdG9tIiB2ZXJzaW9uPSIyLjAiIHhtbG5zOmNjPSJodHRwOi8vY3liZXIubGF3LmhhcnZhcmQuZWR1L3Jzcy9jcmVhdGl2ZUNvbW1vbnNSc3NNb2R1bGUuaHRtbCI+CiAgICA8Y2hhbm5lbD4KICAgICAgICA8dGl0bGU+PCFbQ0RBVEFbU3RvcmllcyBieSBNYWMgU2lyaSBvbiBNZWRpdW1dXT48L3RpdGxlPgogICAgICAgIDxkZXNjcmlwdGlvbj48IVtDREFUQVtTdG9yaWVzIGJ5IE1hYyBTaXJpIG9uIE1lZGl1bV1dPjwvZGVzY3JpcHRpb24+CiAgICAgICAgPGxpbms+aHR0cHM6Ly9tZWRpdW0uY29tL0BtYWNzaXJpP3NvdXJjZT1yc3MtNGIyNjA1ZGE5MzhmLS0tLS0tMjwvbGluaz4KICAgICAgICA8aW1hZ2U+CiAgICAgICAgICAgIDx1cmw+aHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9maXQvYy8xNTAvMTUwLzAqdzJibXRXbGFsZEtGbGI4ZS48L3VybD4KICAgICAgICAgICAgPHRpdGxlPlN0b3JpZXMgYnkgTWFjIFNpcmkgb24gTWVkaXVtPC90aXRsZT4KICAgICAgICAgICAgPGxpbms+aHR0cHM6Ly9tZWRpdW0uY29tL0BtYWNzaXJpP3NvdXJjZT1yc3MtNGIyNjA1ZGE5MzhmLS0tLS0tMjwvbGluaz4KICAgICAgICA8L2ltYWdlPgogICAgICAgIDxnZW5lcmF0b3I+TWVkaXVtPC9nZW5lcmF0b3I+CiAgICAgICAgPGxhc3RCdWlsZERhdGU+V2VkLCAyMSBPY3QgMjAyMCAxNDo1Njo1NyBHTVQ8L2xhc3RCdWlsZERhdGU+CiAgICAgICAgPGF0b206bGluayBocmVmPSJodHRwczovL21lZGl1bS5jb20vZmVlZC9AbWFjc2lyaSIgcmVsPSJzZWxmIiB0eXBlPSJhcHBsaWNhdGlvbi9yc3MreG1sIi8+CiAgICAgICAgPHdlYk1hc3Rlcj48IVtDREFUQVt5b3VyZnJpZW5kc0BtZWRpdW0uY29tXV0+PC93ZWJNYXN0ZXI+CiAgICAgICAgPGF0b206bGluayBocmVmPSJodHRwOi8vbWVkaXVtLnN1cGVyZmVlZHIuY29tIiByZWw9Imh1YiIvPgogICAgICAgIDxpdGVtPgogICAgICAgICAgICA8dGl0bGU+PCFbQ0RBVEFbVGVzdGluZyBSU1MgRmVlZF1dPjwvdGl0bGU+CiAgICAgICAgICAgIDxsaW5rPmh0dHBzOi8vbWVkaXVtLmNvbS9AbWFjc2lyaS90ZXN0aW5nLXJzcy1mZWVkLTZhZjA0YjdlNTdlMT9zb3VyY2U9cnNzLTRiMjYwNWRhOTM4Zi0tLS0tLTI8L2xpbms+CiAgICAgICAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0cHM6Ly9tZWRpdW0uY29tL3AvNmFmMDRiN2U1N2UxPC9ndWlkPgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbdGVzdF1dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxkYzpjcmVhdG9yPjwhW0NEQVRBW01hYyBTaXJpXV0+PC9kYzpjcmVhdG9yPgogICAgICAgICAgICA8cHViRGF0ZT5UdWUsIDAyIEphbiAyMDE4IDE5OjA2OjMwIEdNVDwvcHViRGF0ZT4KICAgICAgICAgICAgPGF0b206dXBkYXRlZD4yMDE5LTA2LTE5VDIxOjM4OjA3LjU0OVo8L2F0b206dXBkYXRlZD4KICAgICAgICAgICAgPGNvbnRlbnQ6ZW5jb2RlZD48IVtDREFUQVs8cD55b3V0dWJlIGxpbmvCoGhlcmU8L3A+PGlmcmFtZSBzcmM9Imh0dHBzOi8vY2RuLmVtYmVkbHkuY29tL3dpZGdldHMvbWVkaWEuaHRtbD9zcmM9aHR0cHMlM0ElMkYlMkZ3d3cueW91dHViZS5jb20lMkZlbWJlZCUyRlFPQ2FhY084d3VzJTNGZmVhdHVyZSUzRG9lbWJlZCZhbXA7ZGlzcGxheV9uYW1lPVlvdVR1YmUmYW1wO3VybD1odHRwcyUzQSUyRiUyRnd3dy55b3V0dWJlLmNvbSUyRndhdGNoJTNGdiUzRFFPQ2FhY084d3VzJmFtcDtpbWFnZT1odHRwcyUzQSUyRiUyRmkueXRpbWcuY29tJTJGdmklMkZRT0NhYWNPOHd1cyUyRmhxZGVmYXVsdC5qcGcmYW1wO2tleT1hMTlmY2MxODRiOTcxMWUxYjQ3NjQwNDBkM2RjNWMwNyZhbXA7dHlwZT10ZXh0JTJGaHRtbCZhbXA7c2NoZW1hPXlvdXR1YmUiIHdpZHRoPSI4NTQiIGhlaWdodD0iNDgwIiBmcmFtZWJvcmRlcj0iMCIgc2Nyb2xsaW5nPSJubyI+PGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL21lZGlhLzdkYTc0YmIzMGY4YTJhODJiMGFjYjg5YjIxM2EwMThiL2hyZWYiPmh0dHBzOi8vbWVkaXVtLmNvbS9tZWRpYS83ZGE3NGJiMzBmOGEyYTgyYjBhY2I4OWIyMTNhMDE4Yi9ocmVmPC9hPjwvaWZyYW1lPjxwPnR3ZWV0IGhlcmU8L3A+PHN0eWxlPmJvZHlbZGF0YS10d3R0ci1yZW5kZXJlZD0idHJ1ZSJdIHtiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDt9LnR3aXR0ZXItdHdlZXQge21hcmdpbjogYXV0byAhaW1wb3J0YW50O308L3N0eWxlPjxibG9ja3F1b3RlIGNsYXNzPSJ0d2l0dGVyLXR3ZWV0IiBkYXRhLWNvbnZlcnNhdGlvbj0ibm9uZSIgZGF0YS1hbGlnbj0iY2VudGVyIiBkYXRhLWRudD0idHJ1ZSI+PHA+JiN4MjAwYTsmbWRhc2g7JiN4MjAwYTs8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL2JlbmRoYWxwZXJuL3N0YXR1cy85NDgyNTYwODMzNTI3MzU3NDQiPkBiZW5kaGFscGVybjwvYT48L3A+PC9ibG9ja3F1b3RlPjxzY3JpcHQgc3JjPSIvL3BsYXRmb3JtLnR3aXR0ZXIuY29tL3dpZGdldHMuanMiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD48c2NyaXB0PmZ1bmN0aW9uIG5vdGlmeVJlc2l6ZShoZWlnaHQpIHtoZWlnaHQgPSBoZWlnaHQgPyBoZWlnaHQgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0OyB2YXIgcmVzaXplZCA9IGZhbHNlOyBpZiAod2luZG93LmRvbmtleSAmJiBkb25rZXkucmVzaXplKSB7ZG9ua2V5LnJlc2l6ZShoZWlnaHQpO3Jlc2l6ZWQgPSB0cnVlO31pZiAocGFyZW50ICYmIHBhcmVudC5fcmVzaXplSWZyYW1lKSB7dmFyIG9iaiA9IHtpZnJhbWU6IHdpbmRvdy5mcmFtZUVsZW1lbnQsIGhlaWdodDogaGVpZ2h0fTsgcGFyZW50Ll9yZXNpemVJZnJhbWUob2JqKTsgcmVzaXplZCA9IHRydWU7fWlmICh3aW5kb3cubG9jYXRpb24gJiYgd2luZG93LmxvY2F0aW9uLmhhc2ggPT09ICIjYW1wPTEiICYmIHdpbmRvdy5wYXJlbnQgJiYgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZSkge3dpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2Uoe3NlbnRpbmVsOiAiYW1wIiwgdHlwZTogImVtYmVkLXNpemUiLCBoZWlnaHQ6IGhlaWdodH0sICIqIik7fWlmICh3aW5kb3cud2Via2l0ICYmIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzICYmIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnJlc2l6ZSkge3dpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnJlc2l6ZS5wb3N0TWVzc2FnZShoZWlnaHQpOyByZXNpemVkID0gdHJ1ZTt9cmV0dXJuIHJlc2l6ZWQ7fXR3dHRyLmV2ZW50cy5iaW5kKCdyZW5kZXJlZCcsIGZ1bmN0aW9uIChldmVudCkge25vdGlmeVJlc2l6ZSgpO30pOyB0d3R0ci5ldmVudHMuYmluZCgncmVzaXplJywgZnVuY3Rpb24gKGV2ZW50KSB7bm90aWZ5UmVzaXplKCk7fSk7PC9zY3JpcHQ+PHNjcmlwdD5pZiAocGFyZW50ICYmIHBhcmVudC5fcmVzaXplSWZyYW1lKSB7dmFyIG1heFdpZHRoID0gcGFyc2VJbnQod2luZG93LmZyYW1lRWxlbWVudC5nZXRBdHRyaWJ1dGUoIndpZHRoIikpOyBpZiAoIDUwMCAgPCBtYXhXaWR0aCkge3dpbmRvdy5mcmFtZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsICI1MDAiKTt9fTwvc2NyaXB0PjxwPkdpdGh1YiBnaXN0wqBoZXJlPC9wPjxpZnJhbWUgc3JjPSIiIHdpZHRoPSIwIiBoZWlnaHQ9IjAiIGZyYW1lYm9yZGVyPSIwIiBzY3JvbGxpbmc9Im5vIj48YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vbWVkaWEvNzc3YWU4YjdkODkxNmU1NjViODRiNzA0YzA4OGNmMGMvaHJlZiI+aHR0cHM6Ly9tZWRpdW0uY29tL21lZGlhLzc3N2FlOGI3ZDg5MTZlNTY1Yjg0YjcwNGMwODhjZjBjL2hyZWY8L2E+PC9pZnJhbWU+PHA+Y29kZSBibG9jazwvcD48cHJlPnRlc3RzZXRzZXRzZXRzZXRzZXRzZXQgbGV0cyBpbnRyb2R1Y2Ugc29tZSB7eyBjaGFvcyB9fTwvcHJlPjxwcmU+SGVyZSYjMzk7cyBtb3JlIHt7IHdoYXQgfX08L3ByZT48cD5zb21lIG1vcmUgY29kZSBhbmQge3sgVkFSSUFCTEUgfX0gYW5kIDxzdHJvbmc+PGVtPnt7IEhUTUzCoH19PC9lbT48L3N0cm9uZz48L3A+PGgzPnt7IGhvdyBhYm91dCB0aGlzwqB9fTwvaDM+PGltZyBzcmM9Imh0dHBzOi8vbWVkaXVtLmNvbS9fL3N0YXQ/ZXZlbnQ9cG9zdC5jbGllbnRWaWV3ZWQmcmVmZXJyZXJTb3VyY2U9ZnVsbF9yc3MmcG9zdElkPTZhZjA0YjdlNTdlMSIgd2lkdGg9IjEiIGhlaWdodD0iMSIgYWx0PSIiPl1dPjwvY29udGVudDplbmNvZGVkPgogICAgICAgIDwvaXRlbT4KICAgIDwvY2hhbm5lbD4KPC9yc3M+ - recorded_at: Wed, 21 Oct 2020 15:08:43 GMT + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48cnNzIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6Y29udGVudD0iaHR0cDovL3B1cmwub3JnL3Jzcy8xLjAvbW9kdWxlcy9jb250ZW50LyIgeG1sbnM6YXRvbT0iaHR0cDovL3d3dy53My5vcmcvMjAwNS9BdG9tIiB2ZXJzaW9uPSIyLjAiIHhtbG5zOmNjPSJodHRwOi8vY3liZXIubGF3LmhhcnZhcmQuZWR1L3Jzcy9jcmVhdGl2ZUNvbW1vbnNSc3NNb2R1bGUuaHRtbCI+CiAgICA8Y2hhbm5lbD4KICAgICAgICA8dGl0bGU+PCFbQ0RBVEFbU3RvcmllcyBieSBNYWMgU2lyaSBvbiBNZWRpdW1dXT48L3RpdGxlPgogICAgICAgIDxkZXNjcmlwdGlvbj48IVtDREFUQVtTdG9yaWVzIGJ5IE1hYyBTaXJpIG9uIE1lZGl1bV1dPjwvZGVzY3JpcHRpb24+CiAgICAgICAgPGxpbms+aHR0cHM6Ly9tZWRpdW0uY29tL0BtYWNzaXJpP3NvdXJjZT1yc3MtNGIyNjA1ZGE5MzhmLS0tLS0tMjwvbGluaz4KICAgICAgICA8aW1hZ2U+CiAgICAgICAgICAgIDx1cmw+aHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9maXQvYy8xNTAvMTUwLzAqdzJibXRXbGFsZEtGbGI4ZS48L3VybD4KICAgICAgICAgICAgPHRpdGxlPlN0b3JpZXMgYnkgTWFjIFNpcmkgb24gTWVkaXVtPC90aXRsZT4KICAgICAgICAgICAgPGxpbms+aHR0cHM6Ly9tZWRpdW0uY29tL0BtYWNzaXJpP3NvdXJjZT1yc3MtNGIyNjA1ZGE5MzhmLS0tLS0tMjwvbGluaz4KICAgICAgICA8L2ltYWdlPgogICAgICAgIDxnZW5lcmF0b3I+TWVkaXVtPC9nZW5lcmF0b3I+CiAgICAgICAgPGxhc3RCdWlsZERhdGU+VHVlLCAwNSBKYW4gMjAyMSAxMDo0OTowMCBHTVQ8L2xhc3RCdWlsZERhdGU+CiAgICAgICAgPGF0b206bGluayBocmVmPSJodHRwczovL21lZGl1bS5jb20vZmVlZC9AbWFjc2lyaSIgcmVsPSJzZWxmIiB0eXBlPSJhcHBsaWNhdGlvbi9yc3MreG1sIi8+CiAgICAgICAgPHdlYk1hc3Rlcj48IVtDREFUQVt5b3VyZnJpZW5kc0BtZWRpdW0uY29tXV0+PC93ZWJNYXN0ZXI+CiAgICAgICAgPGF0b206bGluayBocmVmPSJodHRwOi8vbWVkaXVtLnN1cGVyZmVlZHIuY29tIiByZWw9Imh1YiIvPgogICAgICAgIDxpdGVtPgogICAgICAgICAgICA8dGl0bGU+PCFbQ0RBVEFbVGVzdGluZyBSU1MgRmVlZF1dPjwvdGl0bGU+CiAgICAgICAgICAgIDxsaW5rPmh0dHBzOi8vbWVkaXVtLmNvbS9AbWFjc2lyaS90ZXN0aW5nLXJzcy1mZWVkLTZhZjA0YjdlNTdlMT9zb3VyY2U9cnNzLTRiMjYwNWRhOTM4Zi0tLS0tLTI8L2xpbms+CiAgICAgICAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0cHM6Ly9tZWRpdW0uY29tL3AvNmFmMDRiN2U1N2UxPC9ndWlkPgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbdGVzdF1dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxkYzpjcmVhdG9yPjwhW0NEQVRBW01hYyBTaXJpXV0+PC9kYzpjcmVhdG9yPgogICAgICAgICAgICA8cHViRGF0ZT5UdWUsIDAyIEphbiAyMDE4IDE5OjA2OjMwIEdNVDwvcHViRGF0ZT4KICAgICAgICAgICAgPGF0b206dXBkYXRlZD4yMDE5LTA2LTE5VDIxOjM4OjA3LjU0OVo8L2F0b206dXBkYXRlZD4KICAgICAgICAgICAgPGNvbnRlbnQ6ZW5jb2RlZD48IVtDREFUQVs8cD55b3V0dWJlIGxpbmvCoGhlcmU8L3A+PGlmcmFtZSBzcmM9Imh0dHBzOi8vY2RuLmVtYmVkbHkuY29tL3dpZGdldHMvbWVkaWEuaHRtbD9zcmM9aHR0cHMlM0ElMkYlMkZ3d3cueW91dHViZS5jb20lMkZlbWJlZCUyRlFPQ2FhY084d3VzJTNGZmVhdHVyZSUzRG9lbWJlZCZhbXA7ZGlzcGxheV9uYW1lPVlvdVR1YmUmYW1wO3VybD1odHRwcyUzQSUyRiUyRnd3dy55b3V0dWJlLmNvbSUyRndhdGNoJTNGdiUzRFFPQ2FhY084d3VzJmFtcDtpbWFnZT1odHRwcyUzQSUyRiUyRmkueXRpbWcuY29tJTJGdmklMkZRT0NhYWNPOHd1cyUyRmhxZGVmYXVsdC5qcGcmYW1wO2tleT1hMTlmY2MxODRiOTcxMWUxYjQ3NjQwNDBkM2RjNWMwNyZhbXA7dHlwZT10ZXh0JTJGaHRtbCZhbXA7c2NoZW1hPXlvdXR1YmUiIHdpZHRoPSI4NTQiIGhlaWdodD0iNDgwIiBmcmFtZWJvcmRlcj0iMCIgc2Nyb2xsaW5nPSJubyI+PGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL21lZGlhLzdkYTc0YmIzMGY4YTJhODJiMGFjYjg5YjIxM2EwMThiL2hyZWYiPmh0dHBzOi8vbWVkaXVtLmNvbS9tZWRpYS83ZGE3NGJiMzBmOGEyYTgyYjBhY2I4OWIyMTNhMDE4Yi9ocmVmPC9hPjwvaWZyYW1lPjxwPnR3ZWV0IGhlcmU8L3A+PHN0eWxlPmJvZHlbZGF0YS10d3R0ci1yZW5kZXJlZD0idHJ1ZSJdIHtiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDt9LnR3aXR0ZXItdHdlZXQge21hcmdpbjogYXV0byAhaW1wb3J0YW50O308L3N0eWxlPjxibG9ja3F1b3RlIGNsYXNzPSJ0d2l0dGVyLXR3ZWV0IiBkYXRhLWNvbnZlcnNhdGlvbj0ibm9uZSIgZGF0YS1hbGlnbj0iY2VudGVyIiBkYXRhLWRudD0idHJ1ZSI+PHA+JiN4MjAwYTsmbWRhc2g7JiN4MjAwYTs8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL2JlbmRoYWxwZXJuL3N0YXR1cy85NDgyNTYwODMzNTI3MzU3NDQiPkBiZW5kaGFscGVybjwvYT48L3A+PC9ibG9ja3F1b3RlPjxzY3JpcHQgc3JjPSIvL3BsYXRmb3JtLnR3aXR0ZXIuY29tL3dpZGdldHMuanMiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD48c2NyaXB0PmZ1bmN0aW9uIG5vdGlmeVJlc2l6ZShoZWlnaHQpIHtoZWlnaHQgPSBoZWlnaHQgPyBoZWlnaHQgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0OyB2YXIgcmVzaXplZCA9IGZhbHNlOyBpZiAod2luZG93LmRvbmtleSAmJiBkb25rZXkucmVzaXplKSB7ZG9ua2V5LnJlc2l6ZShoZWlnaHQpO3Jlc2l6ZWQgPSB0cnVlO31pZiAocGFyZW50ICYmIHBhcmVudC5fcmVzaXplSWZyYW1lKSB7dmFyIG9iaiA9IHtpZnJhbWU6IHdpbmRvdy5mcmFtZUVsZW1lbnQsIGhlaWdodDogaGVpZ2h0fTsgcGFyZW50Ll9yZXNpemVJZnJhbWUob2JqKTsgcmVzaXplZCA9IHRydWU7fWlmICh3aW5kb3cubG9jYXRpb24gJiYgd2luZG93LmxvY2F0aW9uLmhhc2ggPT09ICIjYW1wPTEiICYmIHdpbmRvdy5wYXJlbnQgJiYgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZSkge3dpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2Uoe3NlbnRpbmVsOiAiYW1wIiwgdHlwZTogImVtYmVkLXNpemUiLCBoZWlnaHQ6IGhlaWdodH0sICIqIik7fWlmICh3aW5kb3cud2Via2l0ICYmIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzICYmIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnJlc2l6ZSkge3dpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnJlc2l6ZS5wb3N0TWVzc2FnZShoZWlnaHQpOyByZXNpemVkID0gdHJ1ZTt9cmV0dXJuIHJlc2l6ZWQ7fXR3dHRyLmV2ZW50cy5iaW5kKCdyZW5kZXJlZCcsIGZ1bmN0aW9uIChldmVudCkge25vdGlmeVJlc2l6ZSgpO30pOyB0d3R0ci5ldmVudHMuYmluZCgncmVzaXplJywgZnVuY3Rpb24gKGV2ZW50KSB7bm90aWZ5UmVzaXplKCk7fSk7PC9zY3JpcHQ+PHNjcmlwdD5pZiAocGFyZW50ICYmIHBhcmVudC5fcmVzaXplSWZyYW1lKSB7dmFyIG1heFdpZHRoID0gcGFyc2VJbnQod2luZG93LmZyYW1lRWxlbWVudC5nZXRBdHRyaWJ1dGUoIndpZHRoIikpOyBpZiAoIDUwMCAgPCBtYXhXaWR0aCkge3dpbmRvdy5mcmFtZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsICI1MDAiKTt9fTwvc2NyaXB0PjxwPkdpdGh1YiBnaXN0wqBoZXJlPC9wPjxpZnJhbWUgc3JjPSIiIHdpZHRoPSIwIiBoZWlnaHQ9IjAiIGZyYW1lYm9yZGVyPSIwIiBzY3JvbGxpbmc9Im5vIj48YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vbWVkaWEvNzc3YWU4YjdkODkxNmU1NjViODRiNzA0YzA4OGNmMGMvaHJlZiI+aHR0cHM6Ly9tZWRpdW0uY29tL21lZGlhLzc3N2FlOGI3ZDg5MTZlNTY1Yjg0YjcwNGMwODhjZjBjL2hyZWY8L2E+PC9pZnJhbWU+PHA+Y29kZSBibG9jazwvcD48cHJlPnRlc3RzZXRzZXRzZXRzZXRzZXRzZXQgbGV0cyBpbnRyb2R1Y2Ugc29tZSB7eyBjaGFvcyB9fTwvcHJlPjxwcmU+SGVyZSYjMzk7cyBtb3JlIHt7IHdoYXQgfX08L3ByZT48cD5zb21lIG1vcmUgY29kZSBhbmQge3sgVkFSSUFCTEUgfX0gYW5kIDxzdHJvbmc+PGVtPnt7IEhUTUzCoH19PC9lbT48L3N0cm9uZz48L3A+PGgzPnt7IGhvdyBhYm91dCB0aGlzwqB9fTwvaDM+PGltZyBzcmM9Imh0dHBzOi8vbWVkaXVtLmNvbS9fL3N0YXQ/ZXZlbnQ9cG9zdC5jbGllbnRWaWV3ZWQmcmVmZXJyZXJTb3VyY2U9ZnVsbF9yc3MmcG9zdElkPTZhZjA0YjdlNTdlMSIgd2lkdGg9IjEiIGhlaWdodD0iMSIgYWx0PSIiPl1dPjwvY29udGVudDplbmNvZGVkPgogICAgICAgIDwvaXRlbT4KICAgIDwvY2hhbm5lbD4KPC9yc3M+ + recorded_at: Tue, 05 Jan 2021 10:57:45 GMT - request: method: get uri: https://medium.com/feed/@macsiri/ @@ -166,7 +162,7 @@ http_interactions: message: Moved Permanently headers: Date: - - Wed, 21 Oct 2020 15:08:43 GMT + - Tue, 05 Jan 2021 10:57:46 GMT Content-Type: - text/html; charset=utf-8 Content-Length: @@ -178,15 +174,15 @@ http_interactions: Location: - https://medium.com/feed/@macsiri Medium-Fulfilled-By: - - valencia/main-20201020-231910-0a4c7cfeb9 + - valencia/main-20210104-181409-1cdaa084a4 X-Envoy-Upstream-Service-Time: - - '0' + - '1' Strict-Transport-Security: - max-age=15552000; includeSubDomains; preload Cf-Cache-Status: - DYNAMIC Cf-Request-Id: - - 05ed4d9f8f00006f5e1d04f000000001 + - 0773cb2bec00000c251586d000000001 Expect-Ct: - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" X-Content-Type-Options: @@ -194,13 +190,11 @@ http_interactions: Server: - cloudflare Cf-Ray: - - 5e5be545bfa26f5e-FCO - Alt-Svc: - - h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400 + - 60ccae264ceb0c25-AMS body: encoding: UTF-8 string: "Moved Permanently.\n\n" - recorded_at: Wed, 21 Oct 2020 15:08:43 GMT + recorded_at: Tue, 05 Jan 2021 10:57:46 GMT - request: method: get uri: https://medium.com/feed/@macsiri @@ -209,7 +203,7 @@ http_interactions: string: '' headers: Cookie: - - __cfduid=daac524c146a8e4ed83dffa11bf7831841603292923; __cfruid=971d649524849cc948f271bd5d117d5241609288-1603292923 + - __cfduid=d927720fa307a489a0e4570dc3f5a52901609844265; __cfruid=40e6245b8f091a70c52c9be4823a670bf7a5d9fc-1609844266 Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -222,7 +216,7 @@ http_interactions: message: OK headers: Date: - - Wed, 21 Oct 2020 15:08:44 GMT + - Tue, 05 Jan 2021 10:57:46 GMT Content-Type: - text/xml; charset=UTF-8 Transfer-Encoding: @@ -250,25 +244,25 @@ http_interactions: script-src ''unsafe-eval'' ''unsafe-inline'' about: https: ''self''; style-src ''unsafe-inline'' data: https: ''self''; report-uri https://csp.medium.com' Expires: - - Wed, 21 Oct 2020 15:23:44 GMT + - Tue, 05 Jan 2021 11:12:46 GMT Link: - ; rel="humans" Medium-Fulfilled-By: - - valencia/main-20201020-231910-0a4c7cfeb9 + - valencia/main-20210104-181409-1cdaa084a4 Pragma: - private X-Content-Type-Options: - nosniff X-Envoy-Upstream-Service-Time: - - '18' + - '26' X-Frame-Options: - sameorigin X-Obvious-Info: - - 42755-064957c,064957ce014 + - 20210104-2143-root,c5c3cfea X-Obvious-Tid: - - 1603292924076:facb34c15125 + - 1609844266261:54a4ba76250a X-Opentracing: - - '{"ot-tracer-spanid":"7bc003f3319c9f86","ot-tracer-traceid":"bec7ae62fc9c30f","ot-tracer-sampled":"true"}' + - '{"ot-tracer-spanid":"684d0c6467ce6efc","ot-tracer-traceid":"37d22fb7f03b7d7c","ot-tracer-sampled":"true"}' X-Powered-By: - Medium X-Ua-Compatible: @@ -280,20 +274,18 @@ http_interactions: Cf-Cache-Status: - DYNAMIC Cf-Request-Id: - - 05ed4da05a0000fc85e4326000000001 + - 0773cb2cd000000b6bc987b000000001 Expect-Ct: - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" Server: - cloudflare Cf-Ray: - - 5e5be546fd13fc85-FCO - Alt-Svc: - - h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400 + - 60ccae27bdc30b6b-AMS body: encoding: ASCII-8BIT string: !binary |- - PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48cnNzIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6Y29udGVudD0iaHR0cDovL3B1cmwub3JnL3Jzcy8xLjAvbW9kdWxlcy9jb250ZW50LyIgeG1sbnM6YXRvbT0iaHR0cDovL3d3dy53My5vcmcvMjAwNS9BdG9tIiB2ZXJzaW9uPSIyLjAiIHhtbG5zOmNjPSJodHRwOi8vY3liZXIubGF3LmhhcnZhcmQuZWR1L3Jzcy9jcmVhdGl2ZUNvbW1vbnNSc3NNb2R1bGUuaHRtbCI+CiAgICA8Y2hhbm5lbD4KICAgICAgICA8dGl0bGU+PCFbQ0RBVEFbU3RvcmllcyBieSBNYWMgU2lyaSBvbiBNZWRpdW1dXT48L3RpdGxlPgogICAgICAgIDxkZXNjcmlwdGlvbj48IVtDREFUQVtTdG9yaWVzIGJ5IE1hYyBTaXJpIG9uIE1lZGl1bV1dPjwvZGVzY3JpcHRpb24+CiAgICAgICAgPGxpbms+aHR0cHM6Ly9tZWRpdW0uY29tL0BtYWNzaXJpP3NvdXJjZT1yc3MtNGIyNjA1ZGE5MzhmLS0tLS0tMjwvbGluaz4KICAgICAgICA8aW1hZ2U+CiAgICAgICAgICAgIDx1cmw+aHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9maXQvYy8xNTAvMTUwLzAqdzJibXRXbGFsZEtGbGI4ZS48L3VybD4KICAgICAgICAgICAgPHRpdGxlPlN0b3JpZXMgYnkgTWFjIFNpcmkgb24gTWVkaXVtPC90aXRsZT4KICAgICAgICAgICAgPGxpbms+aHR0cHM6Ly9tZWRpdW0uY29tL0BtYWNzaXJpP3NvdXJjZT1yc3MtNGIyNjA1ZGE5MzhmLS0tLS0tMjwvbGluaz4KICAgICAgICA8L2ltYWdlPgogICAgICAgIDxnZW5lcmF0b3I+TWVkaXVtPC9nZW5lcmF0b3I+CiAgICAgICAgPGxhc3RCdWlsZERhdGU+V2VkLCAyMSBPY3QgMjAyMCAxNDo1Njo1NyBHTVQ8L2xhc3RCdWlsZERhdGU+CiAgICAgICAgPGF0b206bGluayBocmVmPSJodHRwczovL21lZGl1bS5jb20vZmVlZC9AbWFjc2lyaSIgcmVsPSJzZWxmIiB0eXBlPSJhcHBsaWNhdGlvbi9yc3MreG1sIi8+CiAgICAgICAgPHdlYk1hc3Rlcj48IVtDREFUQVt5b3VyZnJpZW5kc0BtZWRpdW0uY29tXV0+PC93ZWJNYXN0ZXI+CiAgICAgICAgPGF0b206bGluayBocmVmPSJodHRwOi8vbWVkaXVtLnN1cGVyZmVlZHIuY29tIiByZWw9Imh1YiIvPgogICAgICAgIDxpdGVtPgogICAgICAgICAgICA8dGl0bGU+PCFbQ0RBVEFbVGVzdGluZyBSU1MgRmVlZF1dPjwvdGl0bGU+CiAgICAgICAgICAgIDxsaW5rPmh0dHBzOi8vbWVkaXVtLmNvbS9AbWFjc2lyaS90ZXN0aW5nLXJzcy1mZWVkLTZhZjA0YjdlNTdlMT9zb3VyY2U9cnNzLTRiMjYwNWRhOTM4Zi0tLS0tLTI8L2xpbms+CiAgICAgICAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0cHM6Ly9tZWRpdW0uY29tL3AvNmFmMDRiN2U1N2UxPC9ndWlkPgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbdGVzdF1dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxkYzpjcmVhdG9yPjwhW0NEQVRBW01hYyBTaXJpXV0+PC9kYzpjcmVhdG9yPgogICAgICAgICAgICA8cHViRGF0ZT5UdWUsIDAyIEphbiAyMDE4IDE5OjA2OjMwIEdNVDwvcHViRGF0ZT4KICAgICAgICAgICAgPGF0b206dXBkYXRlZD4yMDE5LTA2LTE5VDIxOjM4OjA3LjU0OVo8L2F0b206dXBkYXRlZD4KICAgICAgICAgICAgPGNvbnRlbnQ6ZW5jb2RlZD48IVtDREFUQVs8cD55b3V0dWJlIGxpbmvCoGhlcmU8L3A+PGlmcmFtZSBzcmM9Imh0dHBzOi8vY2RuLmVtYmVkbHkuY29tL3dpZGdldHMvbWVkaWEuaHRtbD9zcmM9aHR0cHMlM0ElMkYlMkZ3d3cueW91dHViZS5jb20lMkZlbWJlZCUyRlFPQ2FhY084d3VzJTNGZmVhdHVyZSUzRG9lbWJlZCZhbXA7ZGlzcGxheV9uYW1lPVlvdVR1YmUmYW1wO3VybD1odHRwcyUzQSUyRiUyRnd3dy55b3V0dWJlLmNvbSUyRndhdGNoJTNGdiUzRFFPQ2FhY084d3VzJmFtcDtpbWFnZT1odHRwcyUzQSUyRiUyRmkueXRpbWcuY29tJTJGdmklMkZRT0NhYWNPOHd1cyUyRmhxZGVmYXVsdC5qcGcmYW1wO2tleT1hMTlmY2MxODRiOTcxMWUxYjQ3NjQwNDBkM2RjNWMwNyZhbXA7dHlwZT10ZXh0JTJGaHRtbCZhbXA7c2NoZW1hPXlvdXR1YmUiIHdpZHRoPSI4NTQiIGhlaWdodD0iNDgwIiBmcmFtZWJvcmRlcj0iMCIgc2Nyb2xsaW5nPSJubyI+PGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL21lZGlhLzdkYTc0YmIzMGY4YTJhODJiMGFjYjg5YjIxM2EwMThiL2hyZWYiPmh0dHBzOi8vbWVkaXVtLmNvbS9tZWRpYS83ZGE3NGJiMzBmOGEyYTgyYjBhY2I4OWIyMTNhMDE4Yi9ocmVmPC9hPjwvaWZyYW1lPjxwPnR3ZWV0IGhlcmU8L3A+PHN0eWxlPmJvZHlbZGF0YS10d3R0ci1yZW5kZXJlZD0idHJ1ZSJdIHtiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDt9LnR3aXR0ZXItdHdlZXQge21hcmdpbjogYXV0byAhaW1wb3J0YW50O308L3N0eWxlPjxibG9ja3F1b3RlIGNsYXNzPSJ0d2l0dGVyLXR3ZWV0IiBkYXRhLWNvbnZlcnNhdGlvbj0ibm9uZSIgZGF0YS1hbGlnbj0iY2VudGVyIiBkYXRhLWRudD0idHJ1ZSI+PHA+JiN4MjAwYTsmbWRhc2g7JiN4MjAwYTs8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL2JlbmRoYWxwZXJuL3N0YXR1cy85NDgyNTYwODMzNTI3MzU3NDQiPkBiZW5kaGFscGVybjwvYT48L3A+PC9ibG9ja3F1b3RlPjxzY3JpcHQgc3JjPSIvL3BsYXRmb3JtLnR3aXR0ZXIuY29tL3dpZGdldHMuanMiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD48c2NyaXB0PmZ1bmN0aW9uIG5vdGlmeVJlc2l6ZShoZWlnaHQpIHtoZWlnaHQgPSBoZWlnaHQgPyBoZWlnaHQgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0OyB2YXIgcmVzaXplZCA9IGZhbHNlOyBpZiAod2luZG93LmRvbmtleSAmJiBkb25rZXkucmVzaXplKSB7ZG9ua2V5LnJlc2l6ZShoZWlnaHQpO3Jlc2l6ZWQgPSB0cnVlO31pZiAocGFyZW50ICYmIHBhcmVudC5fcmVzaXplSWZyYW1lKSB7dmFyIG9iaiA9IHtpZnJhbWU6IHdpbmRvdy5mcmFtZUVsZW1lbnQsIGhlaWdodDogaGVpZ2h0fTsgcGFyZW50Ll9yZXNpemVJZnJhbWUob2JqKTsgcmVzaXplZCA9IHRydWU7fWlmICh3aW5kb3cubG9jYXRpb24gJiYgd2luZG93LmxvY2F0aW9uLmhhc2ggPT09ICIjYW1wPTEiICYmIHdpbmRvdy5wYXJlbnQgJiYgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZSkge3dpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2Uoe3NlbnRpbmVsOiAiYW1wIiwgdHlwZTogImVtYmVkLXNpemUiLCBoZWlnaHQ6IGhlaWdodH0sICIqIik7fWlmICh3aW5kb3cud2Via2l0ICYmIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzICYmIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnJlc2l6ZSkge3dpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnJlc2l6ZS5wb3N0TWVzc2FnZShoZWlnaHQpOyByZXNpemVkID0gdHJ1ZTt9cmV0dXJuIHJlc2l6ZWQ7fXR3dHRyLmV2ZW50cy5iaW5kKCdyZW5kZXJlZCcsIGZ1bmN0aW9uIChldmVudCkge25vdGlmeVJlc2l6ZSgpO30pOyB0d3R0ci5ldmVudHMuYmluZCgncmVzaXplJywgZnVuY3Rpb24gKGV2ZW50KSB7bm90aWZ5UmVzaXplKCk7fSk7PC9zY3JpcHQ+PHNjcmlwdD5pZiAocGFyZW50ICYmIHBhcmVudC5fcmVzaXplSWZyYW1lKSB7dmFyIG1heFdpZHRoID0gcGFyc2VJbnQod2luZG93LmZyYW1lRWxlbWVudC5nZXRBdHRyaWJ1dGUoIndpZHRoIikpOyBpZiAoIDUwMCAgPCBtYXhXaWR0aCkge3dpbmRvdy5mcmFtZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsICI1MDAiKTt9fTwvc2NyaXB0PjxwPkdpdGh1YiBnaXN0wqBoZXJlPC9wPjxpZnJhbWUgc3JjPSIiIHdpZHRoPSIwIiBoZWlnaHQ9IjAiIGZyYW1lYm9yZGVyPSIwIiBzY3JvbGxpbmc9Im5vIj48YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vbWVkaWEvNzc3YWU4YjdkODkxNmU1NjViODRiNzA0YzA4OGNmMGMvaHJlZiI+aHR0cHM6Ly9tZWRpdW0uY29tL21lZGlhLzc3N2FlOGI3ZDg5MTZlNTY1Yjg0YjcwNGMwODhjZjBjL2hyZWY8L2E+PC9pZnJhbWU+PHA+Y29kZSBibG9jazwvcD48cHJlPnRlc3RzZXRzZXRzZXRzZXRzZXRzZXQgbGV0cyBpbnRyb2R1Y2Ugc29tZSB7eyBjaGFvcyB9fTwvcHJlPjxwcmU+SGVyZSYjMzk7cyBtb3JlIHt7IHdoYXQgfX08L3ByZT48cD5zb21lIG1vcmUgY29kZSBhbmQge3sgVkFSSUFCTEUgfX0gYW5kIDxzdHJvbmc+PGVtPnt7IEhUTUzCoH19PC9lbT48L3N0cm9uZz48L3A+PGgzPnt7IGhvdyBhYm91dCB0aGlzwqB9fTwvaDM+PGltZyBzcmM9Imh0dHBzOi8vbWVkaXVtLmNvbS9fL3N0YXQ/ZXZlbnQ9cG9zdC5jbGllbnRWaWV3ZWQmcmVmZXJyZXJTb3VyY2U9ZnVsbF9yc3MmcG9zdElkPTZhZjA0YjdlNTdlMSIgd2lkdGg9IjEiIGhlaWdodD0iMSIgYWx0PSIiPl1dPjwvY29udGVudDplbmNvZGVkPgogICAgICAgIDwvaXRlbT4KICAgIDwvY2hhbm5lbD4KPC9yc3M+ - recorded_at: Wed, 21 Oct 2020 15:08:44 GMT + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48cnNzIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6Y29udGVudD0iaHR0cDovL3B1cmwub3JnL3Jzcy8xLjAvbW9kdWxlcy9jb250ZW50LyIgeG1sbnM6YXRvbT0iaHR0cDovL3d3dy53My5vcmcvMjAwNS9BdG9tIiB2ZXJzaW9uPSIyLjAiIHhtbG5zOmNjPSJodHRwOi8vY3liZXIubGF3LmhhcnZhcmQuZWR1L3Jzcy9jcmVhdGl2ZUNvbW1vbnNSc3NNb2R1bGUuaHRtbCI+CiAgICA8Y2hhbm5lbD4KICAgICAgICA8dGl0bGU+PCFbQ0RBVEFbU3RvcmllcyBieSBNYWMgU2lyaSBvbiBNZWRpdW1dXT48L3RpdGxlPgogICAgICAgIDxkZXNjcmlwdGlvbj48IVtDREFUQVtTdG9yaWVzIGJ5IE1hYyBTaXJpIG9uIE1lZGl1bV1dPjwvZGVzY3JpcHRpb24+CiAgICAgICAgPGxpbms+aHR0cHM6Ly9tZWRpdW0uY29tL0BtYWNzaXJpP3NvdXJjZT1yc3MtNGIyNjA1ZGE5MzhmLS0tLS0tMjwvbGluaz4KICAgICAgICA8aW1hZ2U+CiAgICAgICAgICAgIDx1cmw+aHR0cHM6Ly9jZG4taW1hZ2VzLTEubWVkaXVtLmNvbS9maXQvYy8xNTAvMTUwLzAqdzJibXRXbGFsZEtGbGI4ZS48L3VybD4KICAgICAgICAgICAgPHRpdGxlPlN0b3JpZXMgYnkgTWFjIFNpcmkgb24gTWVkaXVtPC90aXRsZT4KICAgICAgICAgICAgPGxpbms+aHR0cHM6Ly9tZWRpdW0uY29tL0BtYWNzaXJpP3NvdXJjZT1yc3MtNGIyNjA1ZGE5MzhmLS0tLS0tMjwvbGluaz4KICAgICAgICA8L2ltYWdlPgogICAgICAgIDxnZW5lcmF0b3I+TWVkaXVtPC9nZW5lcmF0b3I+CiAgICAgICAgPGxhc3RCdWlsZERhdGU+VHVlLCAwNSBKYW4gMjAyMSAxMDo0OTowMCBHTVQ8L2xhc3RCdWlsZERhdGU+CiAgICAgICAgPGF0b206bGluayBocmVmPSJodHRwczovL21lZGl1bS5jb20vZmVlZC9AbWFjc2lyaSIgcmVsPSJzZWxmIiB0eXBlPSJhcHBsaWNhdGlvbi9yc3MreG1sIi8+CiAgICAgICAgPHdlYk1hc3Rlcj48IVtDREFUQVt5b3VyZnJpZW5kc0BtZWRpdW0uY29tXV0+PC93ZWJNYXN0ZXI+CiAgICAgICAgPGF0b206bGluayBocmVmPSJodHRwOi8vbWVkaXVtLnN1cGVyZmVlZHIuY29tIiByZWw9Imh1YiIvPgogICAgICAgIDxpdGVtPgogICAgICAgICAgICA8dGl0bGU+PCFbQ0RBVEFbVGVzdGluZyBSU1MgRmVlZF1dPjwvdGl0bGU+CiAgICAgICAgICAgIDxsaW5rPmh0dHBzOi8vbWVkaXVtLmNvbS9AbWFjc2lyaS90ZXN0aW5nLXJzcy1mZWVkLTZhZjA0YjdlNTdlMT9zb3VyY2U9cnNzLTRiMjYwNWRhOTM4Zi0tLS0tLTI8L2xpbms+CiAgICAgICAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0cHM6Ly9tZWRpdW0uY29tL3AvNmFmMDRiN2U1N2UxPC9ndWlkPgogICAgICAgICAgICA8Y2F0ZWdvcnk+PCFbQ0RBVEFbdGVzdF1dPjwvY2F0ZWdvcnk+CiAgICAgICAgICAgIDxkYzpjcmVhdG9yPjwhW0NEQVRBW01hYyBTaXJpXV0+PC9kYzpjcmVhdG9yPgogICAgICAgICAgICA8cHViRGF0ZT5UdWUsIDAyIEphbiAyMDE4IDE5OjA2OjMwIEdNVDwvcHViRGF0ZT4KICAgICAgICAgICAgPGF0b206dXBkYXRlZD4yMDE5LTA2LTE5VDIxOjM4OjA3LjU0OVo8L2F0b206dXBkYXRlZD4KICAgICAgICAgICAgPGNvbnRlbnQ6ZW5jb2RlZD48IVtDREFUQVs8cD55b3V0dWJlIGxpbmvCoGhlcmU8L3A+PGlmcmFtZSBzcmM9Imh0dHBzOi8vY2RuLmVtYmVkbHkuY29tL3dpZGdldHMvbWVkaWEuaHRtbD9zcmM9aHR0cHMlM0ElMkYlMkZ3d3cueW91dHViZS5jb20lMkZlbWJlZCUyRlFPQ2FhY084d3VzJTNGZmVhdHVyZSUzRG9lbWJlZCZhbXA7ZGlzcGxheV9uYW1lPVlvdVR1YmUmYW1wO3VybD1odHRwcyUzQSUyRiUyRnd3dy55b3V0dWJlLmNvbSUyRndhdGNoJTNGdiUzRFFPQ2FhY084d3VzJmFtcDtpbWFnZT1odHRwcyUzQSUyRiUyRmkueXRpbWcuY29tJTJGdmklMkZRT0NhYWNPOHd1cyUyRmhxZGVmYXVsdC5qcGcmYW1wO2tleT1hMTlmY2MxODRiOTcxMWUxYjQ3NjQwNDBkM2RjNWMwNyZhbXA7dHlwZT10ZXh0JTJGaHRtbCZhbXA7c2NoZW1hPXlvdXR1YmUiIHdpZHRoPSI4NTQiIGhlaWdodD0iNDgwIiBmcmFtZWJvcmRlcj0iMCIgc2Nyb2xsaW5nPSJubyI+PGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL21lZGlhLzdkYTc0YmIzMGY4YTJhODJiMGFjYjg5YjIxM2EwMThiL2hyZWYiPmh0dHBzOi8vbWVkaXVtLmNvbS9tZWRpYS83ZGE3NGJiMzBmOGEyYTgyYjBhY2I4OWIyMTNhMDE4Yi9ocmVmPC9hPjwvaWZyYW1lPjxwPnR3ZWV0IGhlcmU8L3A+PHN0eWxlPmJvZHlbZGF0YS10d3R0ci1yZW5kZXJlZD0idHJ1ZSJdIHtiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDt9LnR3aXR0ZXItdHdlZXQge21hcmdpbjogYXV0byAhaW1wb3J0YW50O308L3N0eWxlPjxibG9ja3F1b3RlIGNsYXNzPSJ0d2l0dGVyLXR3ZWV0IiBkYXRhLWNvbnZlcnNhdGlvbj0ibm9uZSIgZGF0YS1hbGlnbj0iY2VudGVyIiBkYXRhLWRudD0idHJ1ZSI+PHA+JiN4MjAwYTsmbWRhc2g7JiN4MjAwYTs8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL2JlbmRoYWxwZXJuL3N0YXR1cy85NDgyNTYwODMzNTI3MzU3NDQiPkBiZW5kaGFscGVybjwvYT48L3A+PC9ibG9ja3F1b3RlPjxzY3JpcHQgc3JjPSIvL3BsYXRmb3JtLnR3aXR0ZXIuY29tL3dpZGdldHMuanMiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD48c2NyaXB0PmZ1bmN0aW9uIG5vdGlmeVJlc2l6ZShoZWlnaHQpIHtoZWlnaHQgPSBoZWlnaHQgPyBoZWlnaHQgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0OyB2YXIgcmVzaXplZCA9IGZhbHNlOyBpZiAod2luZG93LmRvbmtleSAmJiBkb25rZXkucmVzaXplKSB7ZG9ua2V5LnJlc2l6ZShoZWlnaHQpO3Jlc2l6ZWQgPSB0cnVlO31pZiAocGFyZW50ICYmIHBhcmVudC5fcmVzaXplSWZyYW1lKSB7dmFyIG9iaiA9IHtpZnJhbWU6IHdpbmRvdy5mcmFtZUVsZW1lbnQsIGhlaWdodDogaGVpZ2h0fTsgcGFyZW50Ll9yZXNpemVJZnJhbWUob2JqKTsgcmVzaXplZCA9IHRydWU7fWlmICh3aW5kb3cubG9jYXRpb24gJiYgd2luZG93LmxvY2F0aW9uLmhhc2ggPT09ICIjYW1wPTEiICYmIHdpbmRvdy5wYXJlbnQgJiYgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZSkge3dpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2Uoe3NlbnRpbmVsOiAiYW1wIiwgdHlwZTogImVtYmVkLXNpemUiLCBoZWlnaHQ6IGhlaWdodH0sICIqIik7fWlmICh3aW5kb3cud2Via2l0ICYmIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzICYmIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnJlc2l6ZSkge3dpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnJlc2l6ZS5wb3N0TWVzc2FnZShoZWlnaHQpOyByZXNpemVkID0gdHJ1ZTt9cmV0dXJuIHJlc2l6ZWQ7fXR3dHRyLmV2ZW50cy5iaW5kKCdyZW5kZXJlZCcsIGZ1bmN0aW9uIChldmVudCkge25vdGlmeVJlc2l6ZSgpO30pOyB0d3R0ci5ldmVudHMuYmluZCgncmVzaXplJywgZnVuY3Rpb24gKGV2ZW50KSB7bm90aWZ5UmVzaXplKCk7fSk7PC9zY3JpcHQ+PHNjcmlwdD5pZiAocGFyZW50ICYmIHBhcmVudC5fcmVzaXplSWZyYW1lKSB7dmFyIG1heFdpZHRoID0gcGFyc2VJbnQod2luZG93LmZyYW1lRWxlbWVudC5nZXRBdHRyaWJ1dGUoIndpZHRoIikpOyBpZiAoIDUwMCAgPCBtYXhXaWR0aCkge3dpbmRvdy5mcmFtZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsICI1MDAiKTt9fTwvc2NyaXB0PjxwPkdpdGh1YiBnaXN0wqBoZXJlPC9wPjxpZnJhbWUgc3JjPSIiIHdpZHRoPSIwIiBoZWlnaHQ9IjAiIGZyYW1lYm9yZGVyPSIwIiBzY3JvbGxpbmc9Im5vIj48YSBocmVmPSJodHRwczovL21lZGl1bS5jb20vbWVkaWEvNzc3YWU4YjdkODkxNmU1NjViODRiNzA0YzA4OGNmMGMvaHJlZiI+aHR0cHM6Ly9tZWRpdW0uY29tL21lZGlhLzc3N2FlOGI3ZDg5MTZlNTY1Yjg0YjcwNGMwODhjZjBjL2hyZWY8L2E+PC9pZnJhbWU+PHA+Y29kZSBibG9jazwvcD48cHJlPnRlc3RzZXRzZXRzZXRzZXRzZXRzZXQgbGV0cyBpbnRyb2R1Y2Ugc29tZSB7eyBjaGFvcyB9fTwvcHJlPjxwcmU+SGVyZSYjMzk7cyBtb3JlIHt7IHdoYXQgfX08L3ByZT48cD5zb21lIG1vcmUgY29kZSBhbmQge3sgVkFSSUFCTEUgfX0gYW5kIDxzdHJvbmc+PGVtPnt7IEhUTUzCoH19PC9lbT48L3N0cm9uZz48L3A+PGgzPnt7IGhvdyBhYm91dCB0aGlzwqB9fTwvaDM+PGltZyBzcmM9Imh0dHBzOi8vbWVkaXVtLmNvbS9fL3N0YXQ/ZXZlbnQ9cG9zdC5jbGllbnRWaWV3ZWQmcmVmZXJyZXJTb3VyY2U9ZnVsbF9yc3MmcG9zdElkPTZhZjA0YjdlNTdlMSIgd2lkdGg9IjEiIGhlaWdodD0iMSIgYWx0PSIiPl1dPjwvY29udGVudDplbmNvZGVkPgogICAgICAgIDwvaXRlbT4KICAgIDwvY2hhbm5lbD4KPC9yc3M+ + recorded_at: Tue, 05 Jan 2021 10:57:46 GMT - request: method: head uri: https://medium.com/media/7da74bb30f8a2a82b0acb89b213a018b/href @@ -311,7 +303,7 @@ http_interactions: message: Found headers: Date: - - Wed, 21 Oct 2020 15:08:44 GMT + - Tue, 05 Jan 2021 10:57:46 GMT Content-Type: - application/octet-stream Connection: @@ -343,21 +335,21 @@ http_interactions: Location: - https://www.youtube.com/watch?v=QOCaacO8wus Medium-Fulfilled-By: - - valencia/main-20201020-231910-0a4c7cfeb9 + - valencia/main-20210104-181409-1cdaa084a4 Pragma: - no-cache X-Content-Type-Options: - nosniff X-Envoy-Upstream-Service-Time: - - '30' + - '25' X-Frame-Options: - sameorigin X-Obvious-Info: - - 42755-064957c,064957ce014 + - 20210104-2143-root,c5c3cfea X-Obvious-Tid: - - 1603292924310:1e3c8ec71d6b + - 1609844266524:673c7867471 X-Opentracing: - - '{"ot-tracer-spanid":"2106f8c71bf88029","ot-tracer-traceid":"24a4d6c332613457","ot-tracer-sampled":"true"}' + - '{"ot-tracer-spanid":"3dfce9f31be6c115","ot-tracer-traceid":"7f51680f6e3c8068","ot-tracer-sampled":"true"}' X-Powered-By: - Medium X-Ua-Compatible: @@ -369,19 +361,17 @@ http_interactions: Cf-Cache-Status: - DYNAMIC Cf-Request-Id: - - 05ed4da1460000cd12a7846000000001 + - 0773cb2dd600001ec6db8b8000000001 Expect-Ct: - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" Server: - cloudflare Cf-Ray: - - 5e5be5486a56cd12-FCO - Alt-Svc: - - h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400 + - 60ccae2958831ec6-AMS body: encoding: UTF-8 string: '' - recorded_at: Wed, 21 Oct 2020 15:08:44 GMT + recorded_at: Tue, 05 Jan 2021 10:57:46 GMT - request: method: head uri: https://www.youtube.com/watch?v=QOCaacO8wus @@ -390,9 +380,9 @@ http_interactions: string: '' headers: Cookie: - - __cfduid=d710802b86c601c1f85332982e65540ed1603292924; uid=lo_816c906a1d4c; - sid=1:zgLu99gBjDX13bL+EEFc3mQhnySJKMd/blKROgN08J7s1jAmcYvPCbOYVgdUiHnc; optimizelyEndUserId=lo_816c906a1d4c; - __cfruid=07c9d9036041f2061f5bef987538d26d0cabbbe9-1603292924 + - __cfduid=d342db94751fb5b32a1a6dbe140d713a71609844266; uid=lo_54d2efc3f833; + sid=1:5lg+C8ZH3d9VBrPdJ5sjYHUO/EwQVsTYEA1fM5c/yH0EJsN3Dmo7iP/7SNCokX5j; optimizelyEndUserId=lo_54d2efc3f833; + __cfruid=40e6245b8f091a70c52c9be4823a670bf7a5d9fc-1609844266 Accept: - "*/*" User-Agent: @@ -402,41 +392,38 @@ http_interactions: code: 200 message: OK headers: - Strict-Transport-Security: - - max-age=31536000 - Cache-Control: - - no-cache - X-Content-Type-Options: - - nosniff - X-Frame-Options: - - SAMEORIGIN - Expires: - - Tue, 27 Apr 1971 19:44:06 GMT Content-Type: - text/html; charset=utf-8 + X-Content-Type-Options: + - nosniff + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Pragma: + - no-cache + Expires: + - Mon, 01 Jan 1990 00:00:00 GMT + Date: + - Tue, 05 Jan 2021 10:57:46 GMT + Content-Length: + - '593255' + X-Frame-Options: + - SAMEORIGIN + Strict-Transport-Security: + - max-age=31536000 P3p: - CP="This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl=it for more info." - Date: - - Wed, 21 Oct 2020 15:08:45 GMT Server: - - YouTube Frontend Proxy + - ESF X-Xss-Protection: - '0' - Transfer-Encoding: - - chunked Alt-Svc: - - h3-Q050=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-27=":443"; ma=2592000,h3-T051=":443"; - ma=2592000,h3-T050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; - ma=2592000,quic=":443"; ma=2592000; v="46,43" - Accept-Ranges: - - none - Vary: - - Accept-Encoding + - h3-29=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; + ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43" body: encoding: UTF-8 string: '' - recorded_at: Wed, 21 Oct 2020 15:08:45 GMT + recorded_at: Tue, 05 Jan 2021 10:57:47 GMT - request: method: post uri: https://api.twitter.com/oauth2/token @@ -468,11 +455,11 @@ http_interactions: Content-Type: - application/json;charset=utf-8 Date: - - Wed, 21 Oct 2020 15:08:45 GMT + - Tue, 05 Jan 2021 10:57:47 GMT Expires: - Tue, 31 Mar 1981 05:00:00 GMT Last-Modified: - - Wed, 21 Oct 2020 15:08:45 GMT + - Tue, 05 Jan 2021 10:57:47 GMT Ml: - A Pragma: @@ -484,15 +471,15 @@ http_interactions: Strict-Transport-Security: - max-age=631138519 X-Connection-Hash: - - 3c570a664600ccf15ac913124d231aa1 + - 866551f69fb2cd5b9c89df99bdeb8b7c X-Content-Type-Options: - nosniff X-Frame-Options: - DENY X-Response-Time: - - '119' + - '122' X-Transaction: - - 00dc42be00e75563 + - 002af67500c07490 X-Tsa-Request-Body-Time: - '0' X-Twitter-Response-Tags: @@ -504,7 +491,7 @@ http_interactions: body: encoding: UTF-8 string: '{"token_type":"bearer","access_token":"ACCESS_TOKEN"}' - recorded_at: Wed, 21 Oct 2020 15:08:45 GMT + recorded_at: Tue, 05 Jan 2021 10:57:47 GMT - request: method: get uri: https://api.twitter.com/1.1/statuses/show/948256083352735744.json?tweet_mode=extended @@ -528,15 +515,15 @@ http_interactions: Content-Disposition: - attachment; filename=json.json Content-Length: - - '3726' + - '3793' Content-Type: - application/json;charset=utf-8 Date: - - Wed, 21 Oct 2020 15:08:45 GMT + - Tue, 05 Jan 2021 10:57:47 GMT Expires: - Tue, 31 Mar 1981 05:00:00 GMT Last-Modified: - - Wed, 21 Oct 2020 15:08:45 GMT + - Tue, 05 Jan 2021 10:57:47 GMT Pragma: - no-cache Server: @@ -548,7 +535,7 @@ http_interactions: X-Access-Level: - read X-Connection-Hash: - - 3e1ba958ec677554f478ca2ac75187e2 + - 4e41cbe08b1af10431f77ff198a237c1 X-Content-Type-Options: - nosniff X-Frame-Options: @@ -556,13 +543,13 @@ http_interactions: X-Rate-Limit-Limit: - '900' X-Rate-Limit-Remaining: - - '896' + - '897' X-Rate-Limit-Reset: - - '1603293126' + - '1609844647' X-Response-Time: - - '125' + - '130' X-Transaction: - - 00c0d91300e84f9e + - '008f04a500ec9a32' X-Twitter-Response-Tags: - BouncerCompliant X-Xss-Protection: @@ -574,8 +561,8 @@ http_interactions: href=\"http:\/\/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\u003c\/a\u003e","in_reply_to_status_id":948243620846620673,"in_reply_to_status_id_str":"948243620846620673","in_reply_to_user_id":161419043,"in_reply_to_user_id_str":"161419043","in_reply_to_screen_name":"bendhalpern","user":{"id":161419043,"id_str":"161419043","name":"Ben Halpern \ud83c\udf31","screen_name":"bendhalpern","location":"Brooklyn, NY\/Beacon, - NY","description":"Creator and Co-founder of @forem. Coder, buddhist, feminist, - Batman. He\/Him.","url":"https:\/\/t.co\/qqIzCffhit","entities":{"url":{"urls":[{"url":"https:\/\/t.co\/qqIzCffhit","expanded_url":"http:\/\/dev.to\/ben","display_url":"dev.to\/ben","indices":[0,23]}]},"description":{"urls":[]}},"protected":false,"followers_count":41016,"friends_count":2183,"listed_count":744,"created_at":"Wed - Jun 30 20:15:57 +0000 2010","favourites_count":37032,"utc_offset":null,"time_zone":null,"geo_enabled":true,"verified":true,"statuses_count":16582,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"EDECE9","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme3\/bg.gif","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme3\/bg.gif","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/1303466766094553088\/4-ZkBcZM_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/1303466766094553088\/4-ZkBcZM_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/161419043\/1492834234","profile_link_color":"3A1E75","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"E3E2DE","profile_text_color":"634047","profile_use_background_image":true,"has_extended_profile":true,"default_profile":false,"default_profile_image":false,"following":null,"follow_request_sent":null,"notifications":null,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":63,"favorite_count":504,"favorited":false,"retweeted":false,"possibly_sensitive":false,"possibly_sensitive_appealable":false,"lang":"en"}' - recorded_at: Wed, 21 Oct 2020 15:08:45 GMT + NY","description":"Creator of @thepracticaldev and building @forem with @jessleenyc, + @peterkimfrank and our great team. Coder, buddhist, feminist, Batman. He\/Him.","url":"https:\/\/t.co\/qqIzCffhit","entities":{"url":{"urls":[{"url":"https:\/\/t.co\/qqIzCffhit","expanded_url":"http:\/\/dev.to\/ben","display_url":"dev.to\/ben","indices":[0,23]}]},"description":{"urls":[]}},"protected":false,"followers_count":40953,"friends_count":2205,"listed_count":755,"created_at":"Wed + Jun 30 20:15:57 +0000 2010","favourites_count":37578,"utc_offset":null,"time_zone":null,"geo_enabled":true,"verified":true,"statuses_count":16986,"lang":null,"contributors_enabled":false,"is_translator":false,"is_translation_enabled":false,"profile_background_color":"EDECE9","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme3\/bg.gif","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme3\/bg.gif","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/1303466766094553088\/4-ZkBcZM_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/1303466766094553088\/4-ZkBcZM_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/161419043\/1492834234","profile_link_color":"3A1E75","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"E3E2DE","profile_text_color":"634047","profile_use_background_image":true,"has_extended_profile":true,"default_profile":false,"default_profile_image":false,"following":null,"follow_request_sent":null,"notifications":null,"translator_type":"none"},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":62,"favorite_count":504,"favorited":false,"retweeted":false,"possibly_sensitive":false,"possibly_sensitive_appealable":false,"lang":"en"}' + recorded_at: Tue, 05 Jan 2021 10:57:47 GMT recorded_with: VCR 6.0.0 diff --git a/spec/workers/articles/rss_reader_worker_spec.rb b/spec/workers/articles/rss_reader_worker_spec.rb index 76d0f711e..e283f6a3b 100644 --- a/spec/workers/articles/rss_reader_worker_spec.rb +++ b/spec/workers/articles/rss_reader_worker_spec.rb @@ -25,14 +25,16 @@ RSpec.describe Articles::RssReaderWorker, type: :worker do end it "enqueues Feeds::ImportArticlesWorker if the :feeds_import flag is enabled" do + allow(Feeds::ImportArticlesWorker).to receive(:perform_async) allow(RssReader).to receive(:get_all_articles) allow(FeatureFlag).to receive(:enabled?).with(:feeds_import).and_return(true) - sidekiq_assert_enqueued_jobs(1, only: Feeds::ImportArticlesWorker) do + Timecop.freeze(Time.current) do worker.perform - end - expect(RssReader).not_to have_received(:get_all_articles) + expect(RssReader).not_to have_received(:get_all_articles) + expect(Feeds::ImportArticlesWorker).to have_received(:perform_async).with(4.hours.ago) + end end it "short circuits if it's running on DEV" do diff --git a/spec/workers/feeds/import_articles_worker_spec.rb b/spec/workers/feeds/import_articles_worker_spec.rb index 1c2d85615..26c29a05a 100644 --- a/spec/workers/feeds/import_articles_worker_spec.rb +++ b/spec/workers/feeds/import_articles_worker_spec.rb @@ -9,7 +9,7 @@ RSpec.describe Feeds::ImportArticlesWorker, type: :worker do it "calls the Feeds::Import to get all articles" do allow(Feeds::Import).to receive(:call) - worker.perform + worker.perform(1.hour.ago) expect(Feeds::Import).to have_received(:call) end @@ -19,9 +19,21 @@ RSpec.describe Feeds::ImportArticlesWorker, type: :worker do user = create(:user) allow(Feeds::Import).to receive(:call) - worker.perform([user.id]) + worker.perform(nil, [user.id]) - expect(Feeds::Import).to have_received(:call).with(users: User.where(id: [user.id])) + expect(Feeds::Import).to have_received(:call).with(users: User.where(id: [user.id]), earlier_than: nil) + end + end + + context "with earlier_than time" do + it "calls Feeds::Import with the correct time if given" do + allow(Feeds::Import).to receive(:call) + + Timecop.freeze(Time.current) do + worker.perform(4.hours.ago) + + expect(Feeds::Import).to have_received(:call).with(users: nil, earlier_than: 4.hours.ago) + end end end end