From 01031f09dab40462743c8e4b301c88304b15c570 Mon Sep 17 00:00:00 2001 From: Dante Soares Date: Mon, 12 Dec 2022 17:01:23 -0600 Subject: [PATCH 1/3] Added breakdown of number and type of Exercises by book --- app/controllers/api/v1/books_controller.rb | 1 - lib/tasks/books/breakdown.rake | 69 ++++++++++++++++++++++ 2 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 lib/tasks/books/breakdown.rake diff --git a/app/controllers/api/v1/books_controller.rb b/app/controllers/api/v1/books_controller.rb index 996fac11..d6f7ad6e 100644 --- a/app/controllers/api/v1/books_controller.rb +++ b/app/controllers/api/v1/books_controller.rb @@ -79,7 +79,6 @@ def show render json: tree end - protected def abl diff --git a/lib/tasks/books/breakdown.rake b/lib/tasks/books/breakdown.rake new file mode 100644 index 00000000..a0160aa1 --- /dev/null +++ b/lib/tasks/books/breakdown.rake @@ -0,0 +1,69 @@ +namespace :books do + # Creates a CSV file listing the number of Exercises of each type per section of the given book + # Arguments are, in order: + # book_uuid, [filename] + # Example: rake books:breakdown[14fb4ad7-39a1-4eee-ab6e-3ef2482e3e22] + # will create 14fb4ad7-39a1-4eee-ab6e-3ef2482e3e22.csv containing book Exercise info for A&P + desc 'creates a CSV file listing the number of Exercises of each type per section of the given book' + task :breakdown, [:book_uuid, :filename] => :environment do |t, args| + # Output logging info to the console (except in the test environment) + original_logger = Rails.logger + + begin + Rails.logger = ActiveSupport::Logger.new(STDOUT) unless Rails.env.test? + + book_uuid = args[:book_uuid] + filename = args[:filename] || "#{book_uuid}.csv" + + book = abl.approved_books(archive: archive).find { |book| book.uuid == params[:uuid] } + root_book_part = loop do + begin + break book.root_book_part + rescue StandardError => exception + # Sometimes books in the ABL fail to load + # Retry with an earlier version of archive, if possible + previous_version = book.archive.previous_version + + # break from the loop if there are no more archive versions to try + raise exception if previous_version.nil? + + book = OpenStax::Content::Book.new( + archive: OpenStax::Content::Archive.new(version: previous_version), + uuid: book.uuid, + version: book.version, + slug: book.slug, + style: book.style, + min_code_version: book.min_code_version, + committed_at: book.committed_at + ) + + raise exception unless book.valid? + end + end + + all_pages = root_book_part.all_pages + tags = all_pages.map { |page| "context-cnxmod:#{page.uuid}" } + exercise_counts_by_tag = Exercise.chainable_latest.published.joins(:tags).where( + tags: { name: tags } + ).group(tags: :name).count + + recursive_exercise_counts = ->(book_part) do + result = book_part.parts.map do |part| + part.is_a?(OpenStax::Content::Page) ? + [ part.uuid, exercise_counts_by_tag["context-cnxmod:#{part.uuid}"] || 0 ] : recursive_exercise_counts(part) + end + + [ book_part.uuid, result.map(&:second).sum ] + result + end + + CSV.open(filename, 'w') do |csv| + recursive_exercise_counts(root_book_part).each do |row| + csv << row + end + end + ensure + # Restore original logger + Rails.logger = original_logger + end + end +end From e568a818b398017d22f7fb0f49152e600925c096 Mon Sep 17 00:00:00 2001 From: Dante Soares Date: Mon, 12 Dec 2022 17:38:06 -0600 Subject: [PATCH 2/3] Actually breakdown exercises by format --- lib/tasks/books/breakdown.rake | 46 +++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/lib/tasks/books/breakdown.rake b/lib/tasks/books/breakdown.rake index a0160aa1..affdd1e5 100644 --- a/lib/tasks/books/breakdown.rake +++ b/lib/tasks/books/breakdown.rake @@ -41,25 +41,47 @@ namespace :books do end end - all_pages = root_book_part.all_pages - tags = all_pages.map { |page| "context-cnxmod:#{page.uuid}" } - exercise_counts_by_tag = Exercise.chainable_latest.published.joins(:tags).where( - tags: { name: tags } - ).group(tags: :name).count - recursive_exercise_counts = ->(book_part) do result = book_part.parts.map do |part| - part.is_a?(OpenStax::Content::Page) ? - [ part.uuid, exercise_counts_by_tag["context-cnxmod:#{part.uuid}"] || 0 ] : recursive_exercise_counts(part) + next recursive_exercise_counts(part) unless part.is_a?(OpenStax::Content::Page) + + exercises = Exercise.chainable_latest.published.joins(:tags).where( + tags: { name: "context-cnxmod:#{part.uuid}" } + ) + + mc_tf_exercises = exercises.joins(:stylings).where( + stylings: { style: [ Style::MULTIPLE_CHOICE, Style::TRUE_FALSE ] } + ).pluck(:id) + fr_exercises = exercises.joins(:stylings).where(stylings: { style: Style::FREE_RESPONSE }).pluck(:id) + + [ + part.uuid, + 'Page', + part.book_location, + part.title, + exercises.count, + (mc_tf_exercises & fr_exercises).size, + (mc_tf_exercises - fr_exercises).size, + (fr_exercises - mc_tf_exercises).size + ] end - [ book_part.uuid, result.map(&:second).sum ] + result + [ + [ + book_part.uuid, + 'Book or Unit or Chapter', + book_part.book_location, + book_part.title + ] + result[3..-1].map(&:sum) + ] + result end CSV.open(filename, 'w') do |csv| - recursive_exercise_counts(root_book_part).each do |row| - csv << row - end + csv << [ + 'UUID', 'Type', 'Location in ToC', 'Title', 'Total Exercises', '2-step MC/TF', 'MC/TF only', 'FR only' + ] + + recursive_exercise_counts(root_book_part).each { |row| csv << row } end ensure # Restore original logger From ebda89c6afdc61c24544c07bb2c28c345f853a39 Mon Sep 17 00:00:00 2001 From: Dante Soares Date: Tue, 13 Dec 2022 15:26:43 -0600 Subject: [PATCH 3/3] Added test for the breakdown rake task and fixed some mistakes --- lib/tasks/books/breakdown.rake | 53 +- .../returns_correct_exercise_counts.yml | 2109 +++++++++++++++++ spec/lib/tasks/books/breakdown.rake_spec.rb | 102 + 3 files changed, 2241 insertions(+), 23 deletions(-) create mode 100644 spec/cassettes/books_breakdown/returns_correct_exercise_counts.yml create mode 100644 spec/lib/tasks/books/breakdown.rake_spec.rb diff --git a/lib/tasks/books/breakdown.rake b/lib/tasks/books/breakdown.rake index affdd1e5..a583768e 100644 --- a/lib/tasks/books/breakdown.rake +++ b/lib/tasks/books/breakdown.rake @@ -15,7 +15,7 @@ namespace :books do book_uuid = args[:book_uuid] filename = args[:filename] || "#{book_uuid}.csv" - book = abl.approved_books(archive: archive).find { |book| book.uuid == params[:uuid] } + book = OpenStax::Content::Abl.new.approved_books.find { |book| book.uuid == book_uuid } root_book_part = loop do begin break book.root_book_part @@ -41,47 +41,54 @@ namespace :books do end end - recursive_exercise_counts = ->(book_part) do - result = book_part.parts.map do |part| - next recursive_exercise_counts(part) unless part.is_a?(OpenStax::Content::Page) + def recursive_exercise_counts(book_part, type) + results = book_part.parts.flat_map do |part| + next recursive_exercise_counts(part, 'Unit/Chapter') unless part.is_a?(OpenStax::Content::Page) exercises = Exercise.chainable_latest.published.joins(:tags).where( tags: { name: "context-cnxmod:#{part.uuid}" } - ) + ).joins(questions: {stems: :stylings}).distinct - mc_tf_exercises = exercises.joins(:stylings).where( - stylings: { style: [ Style::MULTIPLE_CHOICE, Style::TRUE_FALSE ] } + mc_tf_exercises = exercises.dup.where( + questions: { stems: { stylings: { style: [ Style::MULTIPLE_CHOICE, Style::TRUE_FALSE ] } } } + ).pluck(:id) + fr_exercises = exercises.dup.where( + questions: { stems: { stylings: { style: Style::FREE_RESPONSE } } } ).pluck(:id) - fr_exercises = exercises.joins(:stylings).where(stylings: { style: Style::FREE_RESPONSE }).pluck(:id) [ - part.uuid, - 'Page', - part.book_location, - part.title, - exercises.count, - (mc_tf_exercises & fr_exercises).size, - (mc_tf_exercises - fr_exercises).size, - (fr_exercises - mc_tf_exercises).size + [ + part.uuid, + 'Page', + part.book_location.join('.'), + ActionView::Base.full_sanitizer.sanitize(part.title).gsub(/\s+/, ' ').strip, + exercises.count, + (mc_tf_exercises & fr_exercises).size, + (mc_tf_exercises - fr_exercises).size, + (fr_exercises - mc_tf_exercises).size + ] ] end + direct_child_uuids = book_part.parts.map(&:uuid) + direct_child_results = results.filter { |result| direct_child_uuids.include? result.first } + [ [ book_part.uuid, - 'Book or Unit or Chapter', - book_part.book_location, - book_part.title - ] + result[3..-1].map(&:sum) - ] + result + type, + book_part.book_location.join('.'), + ActionView::Base.full_sanitizer.sanitize(book_part.title).gsub(/\s+/, ' ').strip + ] + direct_child_results.map { |result| result[4..-1] }.transpose.map(&:sum) + ] + results end CSV.open(filename, 'w') do |csv| csv << [ - 'UUID', 'Type', 'Location in ToC', 'Title', 'Total Exercises', '2-step MC/TF', 'MC/TF only', 'FR only' + 'UUID', 'Type', 'Number', 'Title', 'Total Exercises', '2-step MC/TF', 'MC/TF only', 'FR only' ] - recursive_exercise_counts(root_book_part).each { |row| csv << row } + recursive_exercise_counts(root_book_part, 'Book').each { |row| csv << row } end ensure # Restore original logger diff --git a/spec/cassettes/books_breakdown/returns_correct_exercise_counts.yml b/spec/cassettes/books_breakdown/returns_correct_exercise_counts.yml new file mode 100644 index 00000000..fd683962 --- /dev/null +++ b/spec/cassettes/books_breakdown/returns_correct_exercise_counts.yml @@ -0,0 +1,2109 @@ +--- +http_interactions: +- request: + method: get + uri: https://raw.githubusercontent.com/openstax/content-manager-approved-books/main/approved-book-list.json + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Faraday v1.10.0 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Connection: + - keep-alive + Content-Length: + - '8332' + Cache-Control: + - max-age=300 + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Etag: + - W/"eec8097acb87b9635bc50798503bbc4171a3cfcc7912cff792fc6e4463d8355d" + Strict-Transport-Security: + - max-age=31536000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - deny + X-Xss-Protection: + - 1; mode=block + X-Github-Request-Id: + - A4CC:2E41:F4E72:19C854:6398CCE3 + Accept-Ranges: + - bytes + Date: + - Tue, 13 Dec 2022 19:17:54 GMT + Via: + - 1.1 varnish + X-Served-By: + - cache-iah17274-IAH + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Timer: + - S1670959074.909970,VS0,VE114 + Vary: + - Authorization,Accept-Encoding,Origin + Access-Control-Allow-Origin: + - "*" + X-Fastly-Request-Id: + - f80e08d5ee3c7db2e3b092019f2e67ef849d532b + Expires: + - Tue, 13 Dec 2022 19:22:54 GMT + Source-Age: + - '0' + body: + encoding: ASCII-8BIT + string: !binary |- + ewogICAgImFwaV92ZXJzaW9uIjogMiwKICAgICJhcHByb3ZlZF9ib29rcyI6IFsKICAgICAgICAgewogICAgICAgICJyZXBvc2l0b3J5X25hbWUiOiAib3Nib29rcy13b3JsZC1oaXN0b3J5IiwKICAgICAgICAicGxhdGZvcm1zIjogWyJSRVgiXSwKICAgICAgICAidmVyc2lvbnMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjIxMTA5LjIxMzMzNyIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMSwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiOWUwN2I2MDdmYmE0MjFhOWVjYTM5MTIzYmYzYzc3ODQ5OTRhM2I2NyIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTEyLTA2VDE5OjI2OjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAic3R5bGUiOiAid29ybGQtaGlzdG9yeSIsCiAgICAgICAgICAgICAgICAgICAgInV1aWQiOiAiNjg1ZTMxNjMtMTAzMi00NTI5LWJiM2EtZjk3YTU0NDEyNzA0IiwKICAgICAgICAgICAgICAgICAgICAic2x1ZyI6ICJ3b3JsZC1oaXN0b3J5LXZvbHVtZS0yIgogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgInJlcG9zaXRvcnlfbmFtZSI6ICJvc2Jvb2tzLWludHJvZHVjdGlvbi1waGlsb3NvcGh5IiwKICAgICAgICAicGxhdGZvcm1zIjogWyJSRVgiXSwKICAgICAgICAidmVyc2lvbnMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjIwNTA5LjE3NDU1MyIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMSwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiZWM2MTY0NGVkOTYyMmY4NGJiZmM3MzliYzBjOTlkMWQxYTEwNWFhYyIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTA2LTAyVDIwOjIxOjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJwaGlsb3NvcGh5IiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiZmU1OGJlNmYtM2I2MS00ZTE2LWIzYjYtZGI2OTI0ZjBiMmYyIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiaW50cm9kdWN0aW9uLXBoaWxvc29waHkiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIyMDUwOS4xNzQ1NTMiLAogICAgICAgICAgICAiZWRpdGlvbiI6IDEsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogImE0OTI3NmEwZGI5ZmE0ZmM3Y2Q0ZTViOTFlYWY0NWU0N2E2ZDRiMjIiLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0wNi0yMVQxODoxMjowMCswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAicGhpbG9zb3BoeSIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogImZlNThiZTZmLTNiNjEtNGUxNi1iM2I2LWRiNjkyNGYwYjJmMiIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImludHJvZHVjdGlvbi1waGlsb3NvcGh5IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwgCiAgICAgICAgewogICAgICAgICJyZXBvc2l0b3J5X25hbWUiOiAib3Nib29rcy1pbnRyb2R1Y3Rpb24tcG9saXRpY2FsLXNjaWVuY2UiLAogICAgICAgICJwbGF0Zm9ybXMiOiBbIlJFWCJdLAogICAgICAgICJ2ZXJzaW9ucyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMjA0MjIuMTcxOTQ3IiwKICAgICAgICAgICAgImVkaXRpb24iOiAxLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICIwNWRjYmFiYzEyNjQ5NTI5MDkxMzhiNDNjNzIzMjg0MDZjN2NmMTljIiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDUtMDRUMDU6MTc6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInBvbGl0aWNhbC1zY2llbmNlIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiODkwNjAwOTgtMjkxOC00MDM3LThlYmUtZDkwNjIyZDdhNmJmIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiaW50cm9kdWN0aW9uLXBvbGl0aWNhbC1zY2llbmNlIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIyMDQyMi4xNzE5NDciLAogICAgICAgICAgICAiZWRpdGlvbiI6IDEsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogIjgzZTA4OTJlODZiOWRlYmEzYTgwZGI2MGVhMGY5M2FjMDNkZWI4NDMiLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0wNS0yMFQyMDo1MzowMCswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAicG9saXRpY2FsLXNjaWVuY2UiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI4OTA2MDA5OC0yOTE4LTQwMzctOGViZS1kOTA2MjJkN2E2YmYiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJpbnRyb2R1Y3Rpb24tcG9saXRpY2FsLXNjaWVuY2UiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjIwNDIyLjE3MTk0NyIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMSwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiNmRhZmIxOTNlMzQwOGFiNTVlNzQ2OGMyZjU5ZDVkNzFkNWM2MDNlNCIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTA5LTIxVDEzOjU2OjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJwb2xpdGljYWwtc2NpZW5jZSIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjg5MDYwMDk4LTI5MTgtNDAzNy04ZWJlLWQ5MDYyMmQ3YTZiZiIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImludHJvZHVjdGlvbi1wb2xpdGljYWwtc2NpZW5jZSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMjA0MjIuMTcxOTQ3IiwKICAgICAgICAgICAgImVkaXRpb24iOiAxLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICI1ZWFkMzU5YjY4MWY4NWZjMzQ5ZTJkYzJlZjdkZjVlZDM3ZWU5ZGQ1IiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMTAtMDdUMTY6MzI6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInBvbGl0aWNhbC1zY2llbmNlIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiODkwNjAwOTgtMjkxOC00MDM3LThlYmUtZDkwNjIyZDdhNmJmIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiaW50cm9kdWN0aW9uLXBvbGl0aWNhbC1zY2llbmNlIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIyMDQyMi4xNzE5NDciLAogICAgICAgICAgICAiZWRpdGlvbiI6IDEsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogIjMxYzRlNmExYjc5ZjdjYWZiZWRmZWY3NjY5YmFhNjM5NTlmOGE0OGUiLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0xMC0yN1QxOTozNTowMCswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAicG9saXRpY2FsLXNjaWVuY2UiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI4OTA2MDA5OC0yOTE4LTQwMzctOGViZS1kOTA2MjJkN2E2YmYiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJpbnRyb2R1Y3Rpb24tcG9saXRpY2FsLXNjaWVuY2UiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAgIHsKICAgICAgICAicmVwb3NpdG9yeV9uYW1lIjogIm9zYm9va3MtcXVpbWljYS1idW5kbGUiLAogICAgICAgICJwbGF0Zm9ybXMiOiBbIlJFWCJdLAogICAgICAgICJ2ZXJzaW9ucyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMjA1MDkuMTc0NTUzIiwKICAgICAgICAgICAgImVkaXRpb24iOiAyLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICI5YjJlZWNhMTM5OGJmMDg5YmE4YmE5ZDQyZmJmNWQwYjBiNjcyZDBhIiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDUtMTlUMTQ6MjY6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImNoZW1pc3RyeSIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjQ2MmFhM2YxLWQ2NWQtNGNkOS1hNWVlLTMyMTRmOTU3NjliOCIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogInF1w61taWNhLTJlZCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJjaGVtaXN0cnkiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI5NzAyNzgyZi1mZDUwLTQzMTAtOTJhYy1kMjlkMzkwNjU0MTkiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJxdcOtbWljYS1jb21lbnphbmRvLcOhdG9tb3MtMmVkIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgICB7CiAgICAgICAgInJlcG9zaXRvcnlfbmFtZSI6ICJvc2Jvb2tzLXByZWNhbGN1bG8iLAogICAgICAgICJwbGF0Zm9ybXMiOiBbIlJFWCJdLAogICAgICAgICJ2ZXJzaW9ucyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMjA0MjIuMTcxOTQ3IiwKICAgICAgICAgICAgImVkaXRpb24iOiAyLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICJlYTg0ZjUzZDU2NDBjZDM1ZTM4NWRhY2NhNjcwZTQ5NDAxN2U5ZWUwIiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDQtMjdUMTk6MDg6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInByZWNhbGN1bHVzIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiNTJmNTE2M2YtYTdlMS00NTQ1LWIwZmEtODAwMWRmMjYyY2E5IiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAicHJlY8OhbGN1bG8tMmVkIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIF0KICAgICAgICB9LCAgIAogICAgICAgIHsKICAgICAgICAicmVwb3NpdG9yeV9uYW1lIjogIm9zYm9va3MtcHJpbmNpcGxlcy1maW5hbmNlIiwKICAgICAgICAicGxhdGZvcm1zIjogWyJSRVgiXSwKICAgICAgICAidmVyc2lvbnMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjIwMjI4LjE3NDYzNyIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMSwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiZTQ3YWM1NjQwYTMwMDc3MzVhODdlYTE0MmRiYjI1NTk0OTljYjg3YSIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTAzLTExVDE2OjIxOjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJmaW5hbmNlIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiMDUyYjgzNzItMGM1ZS00ZmY2LThmZDMtMzI2Mzc3ZTllOTFmIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAicHJpbmNpcGxlcy1maW5hbmNlIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIyMDIyOC4xNzQ2MzciLAogICAgICAgICAgICAiZWRpdGlvbiI6IDEsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogImY2MmE2ZmU5YzEzZDUyNjFkOGViNjY4ZjY5MmQ4ZjZjMjYzM2Y3OWUiLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0wNS0yMFQyMDo1NDowMCswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiZmluYW5jZSIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjA1MmI4MzcyLTBjNWUtNGZmNi04ZmQzLTMyNjM3N2U5ZTkxZiIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogInByaW5jaXBsZXMtZmluYW5jZSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH0sIAogICAgICB7CiAgICAgICAgInJlcG9zaXRvcnlfbmFtZSI6ICJvc2Jvb2tzLWZpc2ljYS11bml2ZXJzaXRhcmlhLWJ1bmRsZSIsCiAgICAgICAgInBsYXRmb3JtcyI6IFsiUkVYIl0sCiAgICAgICAgInZlcnNpb25zIjogWwogICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIxMDgyMy4xNTUwMTkiLAogICAgICAgICAgICAiZWRpdGlvbiI6IDEsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogImE1YjA1OWMwNjE2OGRiYzdhNWIyY2Y0YWYyZTVhMzFkYzM0NjVhYTAiLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0wMy0wNFQyMDowNjowMCswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAidS1waHlzaWNzIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiMTc1Yzg4YjYtZjg5Yi00ZWJhLTk1MTQtYmM0NWUyMTM5YTFkIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiZsOtc2ljYS11bml2ZXJzaXRhcmlhLXZvbHVtZW4tMSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJ1LXBoeXNpY3MiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICJkYTAyNjA1ZC02ZDY5LTQ0N2MtYTliOS1jYWYwNmRjNGY0MTMiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJmw61zaWNhLXVuaXZlcnNpdGFyaWEtdm9sdW1lbi0yIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInUtcGh5c2ljcyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogImI2NDdhOWI5LTc2MzEtNDVhMS1hOGU3LTVhY2MzYTQ0ZmMwMSIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImbDrXNpY2EtdW5pdmVyc2l0YXJpYS12b2x1bWVuLTMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIxMDgyMy4xNTUwMTkiLAogICAgICAgICAgICAiZWRpdGlvbiI6IDEsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogIjkyODFlYjYzNGEzY2RkMjU1N2NmMmM3OTdkNzIzMWM1YjU0ODMyMWMiLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0wNC0xM1QxNToyMDowMCswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAidS1waHlzaWNzIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiMTc1Yzg4YjYtZjg5Yi00ZWJhLTk1MTQtYmM0NWUyMTM5YTFkIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiZsOtc2ljYS11bml2ZXJzaXRhcmlhLXZvbHVtZW4tMSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJ1LXBoeXNpY3MiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICJkYTAyNjA1ZC02ZDY5LTQ0N2MtYTliOS1jYWYwNmRjNGY0MTMiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJmw61zaWNhLXVuaXZlcnNpdGFyaWEtdm9sdW1lbi0yIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInUtcGh5c2ljcyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogImI2NDdhOWI5LTc2MzEtNDVhMS1hOGU3LTVhY2MzYTQ0ZmMwMSIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImbDrXNpY2EtdW5pdmVyc2l0YXJpYS12b2x1bWVuLTMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgInJlcG9zaXRvcnlfbmFtZSI6ICJvc2Jvb2tzLWludHJvZHVjdGlvbi1pbnRlbGxlY3R1YWwtcHJvcGVydHkiLAogICAgICAgICJwbGF0Zm9ybXMiOiBbIlJFWCJdLAogICAgICAgICJ2ZXJzaW9ucyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTAyMjQuMjA0MTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAxLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICJhYjI2ZTAwNzUzNGZjMmI5ZTJjMTFiNDI0ZjkwZDFmYjcxM2ZkZTQ5IiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDMtMDRUMTc6NDU6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImJ1c2luZXNzLWV0aGljcyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjFiNGVlMGNlLWVlODktNDRmYS1hNWU3LWEwZGI5ZjBjOTRiMSIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImludHJvZHVjdGlvbi1pbnRlbGxlY3R1YWwtcHJvcGVydHkiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LCAKICAgICAgewogICAgICAgICJyZXBvc2l0b3J5X25hbWUiOiAib3Nib29rcy1idXNpbmVzcy1sYXciLAogICAgICAgICJwbGF0Zm9ybXMiOiBbIlJFWCJdLAogICAgICAgICJ2ZXJzaW9ucyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTAyMjQuMjA0MTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAxLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICJkNjE0ZWEzMTFhYmYxZWU2MzlmNDhlOGZiYTRkODMwNzM4MGU2MmUxIiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDMtMDRUMTc6NDU6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImJ1c2luZXNzLWV0aGljcyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjQ2NGEzZmJhLTY4YzEtNDI2YS05OWY5LTU5N2U3MzlkYzkxMSIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImJ1c2luZXNzLWxhdy1pLWVzc2VudGlhbHMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LCAKICAgICAgewogICAgICAgICJyZXBvc2l0b3J5X25hbWUiOiAib3Nib29rcy1jb2xsZWdlLXN1Y2Nlc3MiLAogICAgICAgICJwbGF0Zm9ybXMiOiBbIlJFWCJdLAogICAgICAgICJ2ZXJzaW9ucyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTAyMjQuMjA0MTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAxLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICI0NDUxZDcwOWIzZmUzMjNiODJlODkyMGMwM2RjNTcxNGNmNDMyOTM1IiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDMtMDRUMTc6NDU6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImNvbGxlZ2Utc3VjY2VzcyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogImU4NjY4YTE0LTlhN2QtNGQ3NC1iNThjLTM2ODFmODM1MTIyNCIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImNvbGxlZ2Utc3VjY2VzcyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH0sIAogICAgICB7CiAgICAgICAgInJlcG9zaXRvcnlfbmFtZSI6ICJvc2Jvb2tzLWJ1c2luZXNzLWV0aGljcyIsCiAgICAgICAgInBsYXRmb3JtcyI6IFsiUkVYIl0sCiAgICAgICAgInZlcnNpb25zIjogWwogICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIxMDIyNC4yMDQxMjAiLAogICAgICAgICAgICAiZWRpdGlvbiI6IDEsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogIjRiMWI0N2I4MGFhNzlkMDU5NTRlY2UwMGNlZGY3ZTA4MmVmMjg2NTciLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0wMy0wNFQxNzo0NTowMCswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiYnVzaW5lc3MtZXRoaWNzIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiOTE0YWM2NmUtZTFlYy00ODZkLThhOWMtOTdiMGY3YTk5Nzc0IiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiYnVzaW5lc3MtZXRoaWNzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjEwMjI0LjIwNDEyMCIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMSwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiM2UwODc4MzhmYjg4OWE1YWM2ZTA4M2ViZTNkYjQyZDZmOGVlZTU1MyIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTA2LTA3VDE2OjU2OjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJidXNpbmVzcy1ldGhpY3MiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI5MTRhYzY2ZS1lMWVjLTQ4NmQtOGE5Yy05N2IwZjdhOTk3NzQiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJidXNpbmVzcy1ldGhpY3MiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LCAKICAgICAgewogICAgICAgICJyZXBvc2l0b3J5X25hbWUiOiAib3Nib29rcy1jYWxjdWxvLWJ1bmRsZSIsCiAgICAgICAgInBsYXRmb3JtcyI6IFsiUkVYIl0sCiAgICAgICAgInZlcnNpb25zIjogWwogICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIyMDIyOC4xNzQ2MzciLAogICAgICAgICAgICAiZWRpdGlvbiI6IDEsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogImRhNDkyZTdkMWQwY2FiNzVhZWNhNDFmMDhiNWM4OGZkMjEzMmE1ZjkiLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0wMy0wMlQyMDowNjowMCswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiY2FsY3VsdXMiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI4NjM1ZjBiZS1lNzM0LTRjZDEtYTEwZS04MDYzZTViODYzYjYiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJjw6FsY3Vsby12b2x1bWVuLTEiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiY2FsY3VsdXMiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI4MDc5ZjIyZi1jMGEwLTQzZWQtYmIzNS04NzFkOGQ5NzQzZjMiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJjw6FsY3Vsby12b2x1bWVuLTIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiY2FsY3VsdXMiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICIyMWIxZDBkZi1hNzE2LTQyMDUtOGU4Ni0wZDA3ODdiMmM5OTEiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJjw6FsY3Vsby12b2x1bWVuLTMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgInJlcG9zaXRvcnlfbmFtZSI6ICJvc2Jvb2tzLWludHJvZHVjdGlvbi1hbnRocm9wb2xvZ3kiLAogICAgICAgICJwbGF0Zm9ybXMiOiBbIlJFWCJdLAogICAgICAgICJ2ZXJzaW9ucyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMjAxMTguMTg1MjUwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAxLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICI3OWZkNDgwMjc1ZTUyODllN2UwNjhiMzA4MDk0M2U3YmI3NDM4OGM5IiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDItMDdUMTc6NDU6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImFudGhyb3BvbG9neSIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogImNmMDA4NWM2LTUyOGMtNDEwMS1hZDI2LTE5YzYxMmM1YTJmYSIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImludHJvZHVjdGlvbi1hbnRocm9wb2xvZ3kiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIyMDExOC4xODUyNTAiLAogICAgICAgICAgICAiZWRpdGlvbiI6IDEsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogIjE5MDE2NGU2ODIwZDZiY2U3OWVjYjI4Y2EwNzdiYmZmM2YyZDJmYjciLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0wNi0xM1QxMjo1MTowMCswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiYW50aHJvcG9sb2d5IiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiY2YwMDg1YzYtNTI4Yy00MTAxLWFkMjYtMTljNjEyYzVhMmZhIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiaW50cm9kdWN0aW9uLWFudGhyb3BvbG9neSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH0sICAgIAogICAgICB7CiAgICAgICAgInJlcG9zaXRvcnlfbmFtZSI6ICJvc2Jvb2tzLWludHJvZHVjdGlvbi1zb2Npb2xvZ3kiLAogICAgICAgICJwbGF0Zm9ybXMiOiBbIlJFWCJdLAogICAgICAgICJ2ZXJzaW9ucyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTAyMjQuMjA0MTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAyLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICIyNDc3NTJiMzBmMDA5ODE4ZjlhZTkwYjBlNmZlMWEwYjBmZGJhYzRlIiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDItMDlUMTc6MzI6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInNvY2lvbG9neSIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjAyMDQwMzEyLTcyYzgtNDQxZS1hNjg1LTIwZTkzMzNmM2UxZCIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImludHJvZHVjdGlvbi1zb2Npb2xvZ3ktMmUiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIxMDIyNC4yMDQxMjAiLAogICAgICAgICAgICAiZWRpdGlvbiI6IDMsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogIjZhMmMyY2RmMTQyMzJhODhhYzVjNmJiM2VkMDE0NWEyN2FhN2ZiMmQiLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0wMS0yOFQxNzozMjowMCswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAic29jaW9sb2d5IiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiNzQ2ZjE3MWUtMGQ2YS00ZWYyLWI2OWQtMzY3ODgwODcyZjRhIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiaW50cm9kdWN0aW9uLXNvY2lvbG9neS0zZSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjEwMjI0LjIwNDEyMCIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMywKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiNDMzYmZjZDExZTQyOTRhNzA0YTg3MWMxZmZkYjI5ZDBlZDZjOGQ0MSIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTAzLTIzVDE3OjMyOjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJzb2Npb2xvZ3kiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI3NDZmMTcxZS0wZDZhLTRlZjItYjY5ZC0zNjc4ODA4NzJmNGEiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJpbnRyb2R1Y3Rpb24tc29jaW9sb2d5LTNlIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTAyMjQuMjA0MTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAzLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICI4ZDc3M2EyMjgwNGQ3YjNlY2U4ZjVkZGE2YTBiMGZhZGQ2NjM1OTI0IiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDUtMzFUMTQ6NDU6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInNvY2lvbG9neSIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjc0NmYxNzFlLTBkNmEtNGVmMi1iNjlkLTM2Nzg4MDg3MmY0YSIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImludHJvZHVjdGlvbi1zb2Npb2xvZ3ktM2UiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgInJlcG9zaXRvcnlfbmFtZSI6ICJvc2Jvb2tzLXBzeWNob2xvZ3kiLAogICAgICAgICJwbGF0Zm9ybXMiOiBbIlJFWCJdLAogICAgICAgICJ2ZXJzaW9ucyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTAyMjQuMjA0MTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAxLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICI4OTkzYmZjZTI0OWZhMzg2NWI3YWU3ZjY1MGEyYjNkZGMxMTlhMjAxIiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDItMDlUMTc6MzI6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInBzeWNob2xvZ3kiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI0YWJmMDRiZi05M2EwLTQ1YzMtOWNiYy0yY2VmZDQ2ZTY4Y2MiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJwc3ljaG9sb2d5IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTAyMjQuMjA0MTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAyLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICI5NmNiNDM1NjJlYzZmZmJiNmYyYWE1M2U5ZWE0ZTNhODRmZTEyMWUwIiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDItMDJUMTc6MzI6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInBzeWNob2xvZ3kiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICIwNmFiYTU2NS05NDMyLTQwZjYtOTdlZS1iOGEzNjFmMTE4YTgiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJwc3ljaG9sb2d5LTJlIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjIwNTA5LjE3NDU1MyIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMiwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiYmRmZDlhYmUxNmZlMzI0MmU5YWZkZjM5NjNmYjc3OTE2YWMyZjVlYyIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTA1LTIwVDIwOjU3OjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJwc3ljaG9sb2d5IiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiMDZhYmE1NjUtOTQzMi00MGY2LTk3ZWUtYjhhMzYxZjExOGE4IiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAicHN5Y2hvbG9neS0yZSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjIwNTA5LjE3NDU1MyIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMiwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiZGZmNDk4YjU5OGIyMWM1OTFjNDYxZTk5ZjUyMzMzOTcxMzZlODdjNCIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTA1LTIwVDE4OjQ2OjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJwc3ljaG9sb2d5IiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiMDZhYmE1NjUtOTQzMi00MGY2LTk3ZWUtYjhhMzYxZjExOGE4IiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAicHN5Y2hvbG9neS0yZSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVwb3NpdG9yeV9uYW1lIjogIm9zYm9va3MtdXMtaGlzdG9yeSIsCiAgICAgICAgInBsYXRmb3JtcyI6IFsiUkVYIl0sCiAgICAgICAgInZlcnNpb25zIjogWwogICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIxMDIyNC4yMDQxMjAiLAogICAgICAgICAgICAiZWRpdGlvbiI6IDEsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogIjBkNzVlYjczZDEyOWEzNDg1YzVmNzlmNzVlMTE2Yzc4NjJmNjRmM2IiLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0wMS0yOFQxNzozMjowMCswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiaGlzdG9yeSIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogImE3YmEyZmI4LTg5MjUtNDk4Ny1iMTgyLTVmNDQyOWQ0OGRhYSIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogInVzLWhpc3RvcnkiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjEwMjI0LjIwNDEyMCIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMSwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiMTNiNjQwM2IxYTc0MWRlZmY0YjYxMDMzMDhjNTVkNDUzNzgzOTY5OCIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTA1LTIwVDE5OjQ5OjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJoaXN0b3J5IiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiYTdiYTJmYjgtODkyNS00OTg3LWIxODItNWY0NDI5ZDQ4ZGFhIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAidXMtaGlzdG9yeSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVwb3NpdG9yeV9uYW1lIjogIm9zYm9va3MtbWljcm9iaW9sb2d5IiwKICAgICAgICAicGxhdGZvcm1zIjogWyJSRVgiXSwKICAgICAgICAidmVyc2lvbnMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjEwMjI0LjIwNDEyMCIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMSwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiZDVlMDlmOGY0ZTY5Nzk1YjE5YTA3NGNkY2UzNDRmOTcyMzg1MTY1ZCIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTAyLTAyVDE3OjMyOjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJtaWNyb2Jpb2xvZ3kiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICJlNDJiZDM3Ni02MjRiLTRjMGYtOTcyZi1lMGM1Nzk5OGU3NjUiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJtaWNyb2Jpb2xvZ3kiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIxMDIyNC4yMDQxMjAiLAogICAgICAgICAgICAiZWRpdGlvbiI6IDEsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogIjA5YTUwZGUzNGZjYjBmYmQ5MzY0MjRlMjRmZTJjMjBhOTcxMDFkN2IiLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0wMy0yMVQxODoxNjowMCswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAibWljcm9iaW9sb2d5IiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiZTQyYmQzNzYtNjI0Yi00YzBmLTk3MmYtZTBjNTc5OThlNzY1IiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAibWljcm9iaW9sb2d5IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgewogICAgICAgICJyZXBvc2l0b3J5X25hbWUiOiAib3Nib29rcy11bml2ZXJzaXR5LXBoeXNpY3MtYnVuZGxlIiwKICAgICAgICAicGxhdGZvcm1zIjogWyJSRVgiXSwKICAgICAgICAidmVyc2lvbnMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjEwMjI0LjIwNDEyMCIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMSwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiOGVkZTJiYWM2MDYzNmQwY2NlMTQ2OTEyOWUxNmE2NGYyOWZiNmU3MSIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTAyLTA5VDE3OjMyOjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJ1LXBoeXNpY3MiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICJkNTBmNmUzMi0wZmRhLTQ2ZWYtYTM2Mi05YmQzNmNhN2M5N2QiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJ1bml2ZXJzaXR5LXBoeXNpY3Mtdm9sdW1lLTEiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAidS1waHlzaWNzIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiN2EwZjk3NzAtMWM0NC00YWNkLTk5MjAtMWNkOWE5OWYyYTFlIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAidW5pdmVyc2l0eS1waHlzaWNzLXZvbHVtZS0yIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInUtcGh5c2ljcyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogImFmMjc1NDIwLTYwNTAtNDcwNy05OTVjLTU3YjljYzEzYzM1OCIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogInVuaXZlcnNpdHktcGh5c2ljcy12b2x1bWUtMyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTAyMjQuMjA0MTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAxLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICIxMGEyMDg5OWFiZDIwZTQ0NTgxNjJkNGFiMTY5Y2M3YjUwZmYwOGFlIiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDYtMjlUMTQ6MDg6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInUtcGh5c2ljcyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogImQ1MGY2ZTMyLTBmZGEtNDZlZi1hMzYyLTliZDM2Y2E3Yzk3ZCIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogInVuaXZlcnNpdHktcGh5c2ljcy12b2x1bWUtMSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJ1LXBoeXNpY3MiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI3YTBmOTc3MC0xYzQ0LTRhY2QtOTkyMC0xY2Q5YTk5ZjJhMWUiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJ1bml2ZXJzaXR5LXBoeXNpY3Mtdm9sdW1lLTIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAidS1waHlzaWNzIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiYWYyNzU0MjAtNjA1MC00NzA3LTk5NWMtNTdiOWNjMTNjMzU4IiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAidW5pdmVyc2l0eS1waHlzaWNzLXZvbHVtZS0zIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgewogICAgICAgICJyZXBvc2l0b3J5X25hbWUiOiAib3Nib29rcy1wcmVhbGdlYnJhLWJ1bmRsZSIsCiAgICAgICAgInBsYXRmb3JtcyI6IFsiUkVYIl0sCiAgICAgICAgInZlcnNpb25zIjogWwogICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIxMDIyNC4yMDQxMjAiLAogICAgICAgICAgICAiZWRpdGlvbiI6IDEsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogImViMmUyOWQ2OWE2YWY3OGU2NDc4OGMxMjM5YzMwODE1NTViMmNlZmQiLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0wMi0wOVQxNzozMjowMCswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiZGV2LW1hdGgiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICJjYWE1N2RhYi00MWM3LTQ1NWUtYmQ2Zi1mNDQzY2RhNTUxOWMiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJwcmVhbGdlYnJhIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImRldi1tYXRoIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiMDg4OTkwN2MtZjBlZi00OTZhLWJjYjgtMmE1YmIxMjE3MTdmIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiZWxlbWVudGFyeS1hbGdlYnJhIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImRldi1tYXRoIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiMDI3NzYxMzMtZDQ5ZC00OWNiLWJmYWEtNjdjN2Y2MWIyNWExIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiaW50ZXJtZWRpYXRlLWFsZ2VicmEiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIxMDIyNC4yMDQxMjAiLAogICAgICAgICAgICAiZWRpdGlvbiI6IDIsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogIjk3YzIzYjc1MWI0MDZhYWE5MTNhNjZhZjkzMTE3NmE1NGIxOWQ2NWEiLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0wMS0yOFQxNzozMjowMCswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiZGV2LW1hdGgiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICJmMGZhOTBiZS1mY2E4LTQzYzktOWFhZC03MTVjMGEyY2VlMmIiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJwcmVhbGdlYnJhLTJlIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImRldi1tYXRoIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiNTU5MzE4NTYtYzYyNy00MThiLWE1NmYtMWRkMDAwNzY4M2E4IiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiZWxlbWVudGFyeS1hbGdlYnJhLTJlIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImRldi1tYXRoIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiNDY2NGMyNjctY2Q2Mi00YTk5LThiMjgtMWNiOWIzYWVlMzQ3IiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiaW50ZXJtZWRpYXRlLWFsZ2VicmEtMmUiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjEwMjI0LjIwNDEyMCIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMiwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiNjllMTkyNWRmMGNiNTUwMmRhOWRjZjlmZWZjNzg1NzRjYWE2ZThkZCIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTA2LTE0VDE1OjEyOjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJkZXYtbWF0aCIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogImYwZmE5MGJlLWZjYTgtNDNjOS05YWFkLTcxNWMwYTJjZWUyYiIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogInByZWFsZ2VicmEtMmUiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiZGV2LW1hdGgiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI1NTkzMTg1Ni1jNjI3LTQxOGItYTU2Zi0xZGQwMDA3NjgzYTgiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJlbGVtZW50YXJ5LWFsZ2VicmEtMmUiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiZGV2LW1hdGgiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI0NjY0YzI2Ny1jZDYyLTRhOTktOGIyOC0xY2I5YjNhZWUzNDciLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJpbnRlcm1lZGlhdGUtYWxnZWJyYS0yZSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVwb3NpdG9yeV9uYW1lIjogIm9zYm9va3Mtc3RhdGlzdGljcyIsCiAgICAgICAgInBsYXRmb3JtcyI6IFsiUkVYIl0sCiAgICAgICAgInZlcnNpb25zIjogWwogICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIxMDIyNC4yMDQxMjAiLAogICAgICAgICAgICAiZWRpdGlvbiI6IDEsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogImZiNzVlNjMyZTI0YzNiNmY0MTk4NzNmZjliYTMwZTc3NDZkYzIxNDMiLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0wMi0wMlQxNzozMjowMCswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAic3RhdGlzdGljcyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjM5NGExMTAxLWZkOGYtNDg3NS04NGZhLTU1ZjE1YjA2YmE2NiIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogInN0YXRpc3RpY3MiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTAyMjQuMjA0MTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAxLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICIyOGUwNDQ0ZDY3M2Q0NTM3ZjYwMWVmZDcyMTUzNmIwY2ZiMzJmODNhIiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDYtMDdUMTU6MTI6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInN0YXRpc3RpY3MiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICIzOTRhMTEwMS1mZDhmLTQ4NzUtODRmYS01NWYxNWIwNmJhNjYiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJzdGF0aXN0aWNzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgewogICAgICAgICJyZXBvc2l0b3J5X25hbWUiOiAib3Nib29rcy1lbnRyZXByZW5ldXJzaGlwIiwKICAgICAgICAicGxhdGZvcm1zIjogWyJSRVgiXSwKICAgICAgICAidmVyc2lvbnMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjEwMjI0LjIwNDEyMCIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMSwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiMDFmN2M1MDk0NTJkMmNjZWJmOGEyYmI4ZGE2MTYyN2M3OWE5ODc1YyIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTAyLTExVDE3OjMyOjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJlbnRyZXByZW5ldXJzaGlwIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiZDM4MDUxMGUtNjE0NS00NjI1LWIxOWEtNGZhNjgyMDRiNmIxIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiZW50cmVwcmVuZXVyc2hpcCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTAyMjQuMjA0MTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAxLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICIwMmRmNzE3ZjI4NjhmMjEwNjlhOGQzM2IzOTZlNGM1MmMxOWU5M2VlIiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDYtMDZUMjE6MTc6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImVudHJlcHJlbmV1cnNoaXAiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICJkMzgwNTEwZS02MTQ1LTQ2MjUtYjE5YS00ZmE2ODIwNGI2YjEiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJlbnRyZXByZW5ldXJzaGlwIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgewogICAgICAgICJyZXBvc2l0b3J5X25hbWUiOiAib3Nib29rcy1hc3Ryb25vbXkiLAogICAgICAgICJwbGF0Zm9ybXMiOiBbIlJFWCJdLAogICAgICAgICJ2ZXJzaW9ucyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTAyMjQuMjA0MTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAxLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICJmYWFlNDUxNDk3NzM0ZWI1YWVkYTFkZmVlNDcwMDVjMjU3YWNkNTdjIiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDEtMjlUMTc6MzI6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImFzdHJvbm9teSIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjJlNzM3YmU4LWVhNjUtNDhjMy1hYTBhLTlmMzViNGM2YTk2NiIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImFzdHJvbm9teSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjEwMjI0LjIwNDEyMCIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMiwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiZDI3YTE2YzZjZjI4NWQ1ZjllMmVhMzdkMWYxZjQxNTE2OGJjNjc0MSIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTAzLTExVDIwOjE1OjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJhc3Ryb25vbXkiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI0YzI5ZjllNS1hNTNkLTQyYzAtYmRiNS0wOTE5OTA1MjdkNzkiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJhc3Ryb25vbXktMmUiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjEwMjI0LjIwNDEyMCIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMiwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiY2MxYjlhZjBjMTY5MjgwOGI2M2ZlOGU4MWM1ZGJlNTkwNDAwNTY5YSIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTA2LTI5VDE0OjIxOjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJhc3Ryb25vbXkiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI0YzI5ZjllNS1hNTNkLTQyYzAtYmRiNS0wOTE5OTA1MjdkNzkiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJhc3Ryb25vbXktMmUiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgInJlcG9zaXRvcnlfbmFtZSI6ICJvc2Jvb2tzLXBoeXNpY3MiLAogICAgICAgICJwbGF0Zm9ybXMiOiBbIlJFWCJdLAogICAgICAgICJ2ZXJzaW9ucyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTAyMjQuMjA0MTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAxLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICJiNjgyYTRiM2MzNzBiYWQ2MGFmMGEzMjAxYTYwM2M5MTY3ZTIwNTkwIiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDEtMjhUMTc6MzI6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImhzLXBoeXNpY3MiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICJjY2U2NGZkZS1mNDQ4LTQzYjgtYWU4OC0yNzcwNWNjZWIwZGEiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJwaHlzaWNzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjEwMjI0LjIwNDEyMCIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMSwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiYzU5MGNlYjA2ZjIxMWZlMTFlNjA0ZjhjNjQ3YzJlMzdiMDNiODY4MSIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTA0LTIyVDE4OjE3OjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJocy1waHlzaWNzIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiY2NlNjRmZGUtZjQ0OC00M2I4LWFlODgtMjc3MDVjY2ViMGRhIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAicGh5c2ljcyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTAyMjQuMjA0MTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAxLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICJkNWMyMDA5NmJjOTg1YTgwOTViNjE4YmY1NGJhY2U4YzBkOTEyZTUxIiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDYtMDJUMjI6NDM6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImhzLXBoeXNpY3MiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICJjY2U2NGZkZS1mNDQ4LTQzYjgtYWU4OC0yNzcwNWNjZWIwZGEiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJwaHlzaWNzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgewogICAgICAgICJyZXBvc2l0b3J5X25hbWUiOiAib3Nib29rcy1jaGVtaXN0cnktYnVuZGxlIiwKICAgICAgICAicGxhdGZvcm1zIjogWyJSRVgiXSwKICAgICAgICAidmVyc2lvbnMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjEwMjI0LjIwNDEyMCIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMSwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiNzQxYTdhZjVjMGZlZDA0MjEzZmI3Y2RlNjg3Njc1NTcwY2M4OTZkMSIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTAyLTA5VDE3OjMyOjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJjaGVtaXN0cnkiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI4NWFiZjE5My0yYmQyLTQ5MDgtODU2My05MGI4YTdhYzhkZjYiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJjaGVtaXN0cnkiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiY2hlbWlzdHJ5IiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiNDUzOWFlMjMtMWNjYy00MjFlLTliMjUtODQzYWNiYjZjNGIwIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiY2hlbWlzdHJ5LWF0b21zLWZpcnN0IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTAyMjQuMjA0MTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAyLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICI0NzRlM2VhMzc0NjMxNDVhMDYzZWVhZjRhYWFkZDhhYmYzOGQ1NDBlIiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDItMDdUMTc6MzI6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImNoZW1pc3RyeSIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjdmY2NjOWNmLTliNzEtNDRmNi04MDBiLWY5NDU3ZmQ2NDMzNSIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImNoZW1pc3RyeS0yZSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJjaGVtaXN0cnkiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICJkOWI4NWVlNi1jNTdmLTQ4NjEtODIwOC01ZGRmMjYxZTljNWYiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJjaGVtaXN0cnktYXRvbXMtZmlyc3QtMmUiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjIwNTA5LjE3NDU1MyIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMiwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiYWE3OTI3ZDUxYzRhZjRhZGJjYTJjYzE5YTllYThkNTE2NTVlNGIxOSIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTA2LTAyVDAxOjMyOjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJjaGVtaXN0cnkiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI3ZmNjYzljZi05YjcxLTQ0ZjYtODAwYi1mOTQ1N2ZkNjQzMzUiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJjaGVtaXN0cnktMmUiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiY2hlbWlzdHJ5IiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiZDliODVlZTYtYzU3Zi00ODYxLTgyMDgtNWRkZjI2MWU5YzVmIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiY2hlbWlzdHJ5LWF0b21zLWZpcnN0LTJlIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMjA1MDkuMTc0NTUzIiwKICAgICAgICAgICAgImVkaXRpb24iOiAyLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICIxZDBmNzM5NTAyNmJiZDE3YzQxOGUxMThmMTc5NGQ2ZmI3YzI0NjA3IiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDYtMjNUMTU6MjU6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImNoZW1pc3RyeSIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjdmY2NjOWNmLTliNzEtNDRmNi04MDBiLWY5NDU3ZmQ2NDMzNSIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImNoZW1pc3RyeS0yZSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJjaGVtaXN0cnkiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICJkOWI4NWVlNi1jNTdmLTQ4NjEtODIwOC01ZGRmMjYxZTljNWYiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJjaGVtaXN0cnktYXRvbXMtZmlyc3QtMmUiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgInJlcG9zaXRvcnlfbmFtZSI6ICJvc2Jvb2tzLWNhbGN1bHVzLWJ1bmRsZSIsCiAgICAgICAgInBsYXRmb3JtcyI6IFsiUkVYIl0sCiAgICAgICAgInZlcnNpb25zIjogWwogICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIxMDIyNC4yMDQxMjAiLAogICAgICAgICAgICAiZWRpdGlvbiI6IDEsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogIjc2NTBiZmY5NDI1YTA5ZmE1ODRmN2VlOWZiNTU4Njc1YmQyZWZkYzUiLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0wMi0xMFQxODoyMDowMCswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiY2FsY3VsdXMiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI4Yjg5ZDE3Mi0yOTI3LTQ2NmYtODY2MS0wMWFiYzdjY2RiYTQiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJjYWxjdWx1cy12b2x1bWUtMSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJjYWxjdWx1cyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjFkMzlhMzQ4LTA3MWYtNDUzNy04NWI2LWM5ODkxMjQ1OGMzYyIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImNhbGN1bHVzLXZvbHVtZS0yIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImNhbGN1bHVzIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiYTMxY2Q3OTMtMjE2Mi00ZTllLWFjYjUtNmU2YmJkNzZhNWZhIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiY2FsY3VsdXMtdm9sdW1lLTMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIxMDIyNC4yMDQxMjAiLAogICAgICAgICAgICAiZWRpdGlvbiI6IDEsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogIjBmMzdhMTk4YmI4MzIzMmUxZWIyMTFiZjYzZWRkYTg4Y2M0NWQ2M2UiLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0wNi0xNVQxODoxMTowMCswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiY2FsY3VsdXMiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI4Yjg5ZDE3Mi0yOTI3LTQ2NmYtODY2MS0wMWFiYzdjY2RiYTQiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJjYWxjdWx1cy12b2x1bWUtMSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJjYWxjdWx1cyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjFkMzlhMzQ4LTA3MWYtNDUzNy04NWI2LWM5ODkxMjQ1OGMzYyIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImNhbGN1bHVzLXZvbHVtZS0yIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImNhbGN1bHVzIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiYTMxY2Q3OTMtMjE2Mi00ZTllLWFjYjUtNmU2YmJkNzZhNWZhIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiY2FsY3VsdXMtdm9sdW1lLTMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgInJlcG9zaXRvcnlfbmFtZSI6ICJvc2Jvb2tzLWJpb2xvZ3ktYnVuZGxlIiwKICAgICAgICAicGxhdGZvcm1zIjogWyJSRVgiXSwKICAgICAgICAidmVyc2lvbnMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjEwMjI0LjIwNDEyMCIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMSwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiZTk4OWVjMzQ3ZDg5Y2U4YWNjMDM0ODdkODAxZmY0ODUxMzI1ZmU1MyIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTAyLTE0VDE3OjMyOjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJiaW9sb2d5IiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiMTg1Y2JmODctYzcyZS00OGY1LWI1MWUtZjE0ZjIxYjVlYWJkIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiYmlvbG9neSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjEwMjI0LjIwNDEyMCIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMiwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiNGViY2Y4ZTVlMjQwNGQ5MTBiYmQzNmUzNzgwYmY5ZWNkYTA0MmQ1MyIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTAyLTIyVDE3OjMyOjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJiaW9sb2d5IiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiOGQ1MGEwYWYtOTQ4Yi00MjA0LWE3MWQtNDgyNmNiYTc2NWI4IiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiYmlvbG9neS0yZSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJiaW9sb2d5IiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiYjNjMWUxZDItODM5Yy00MmIwLWEzMTQtZTExOWE4YWFmYmRkIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiY29uY2VwdHMtYmlvbG9neSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJhcC1iaW9sb2d5IiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiNmMzMjJlMzItOWZiMC00YzRkLWExZDctMjBjOTVjNWM3YWYyIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiYmlvbG9neS1hcC1jb3Vyc2VzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTAyMjQuMjA0MTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAyLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICJkZWM5ZWFkZTQyMTAzMmE3MDUyYTBjMTIwMWFlZDU4YzEyOWNkNjU5IiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDYtMDlUMTc6MDc6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImJpb2xvZ3kiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI4ZDUwYTBhZi05NDhiLTQyMDQtYTcxZC00ODI2Y2JhNzY1YjgiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJiaW9sb2d5LTJlIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImJpb2xvZ3kiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICJiM2MxZTFkMi04MzljLTQyYjAtYTMxNC1lMTE5YThhYWZiZGQiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJjb25jZXB0cy1iaW9sb2d5IgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImFwLWJpb2xvZ3kiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI2YzMyMmUzMi05ZmIwLTRjNGQtYTFkNy0yMGM5NWM1YzdhZjIiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJiaW9sb2d5LWFwLWNvdXJzZXMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgInJlcG9zaXRvcnlfbmFtZSI6ICJvc2Jvb2tzLWFuYXRvbXktcGh5c2lvbG9neSIsCiAgICAgICAgInBsYXRmb3JtcyI6IFsiUkVYIl0sCiAgICAgICAgInZlcnNpb25zIjogWwogICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIxMDIyNC4yMDQxMjAiLAogICAgICAgICAgICAiZWRpdGlvbiI6IDEsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogImNjY2U3ODA1ZWM0ZDVmYjIwOWE1YjQ4MzI3ZmZkMmFjMGUyZWRjODgiLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0wMS0yOFQxNzozMjowMCswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiYW5hdG9teSIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjE0ZmI0YWQ3LTM5YTEtNGVlZS1hYjZlLTNlZjI0ODJlM2UyMiIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImFuYXRvbXktYW5kLXBoeXNpb2xvZ3kiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIxMDIyNC4yMDQxMjAiLAogICAgICAgICAgICAiZWRpdGlvbiI6IDIsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogImUxNWFlNzVhMDUyZmNjOTZlYWU2ODU3YWVjMDkxZTg3MzRkMDkyYmEiLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0wMy0yNFQxNzoxMTowMCswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiYW5hdG9teSIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjRmZDk5NDU4LTZmZGYtNDliYy04Njg4LWE2ZGMxN2ExMjY4ZCIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImFuYXRvbXktYW5kLXBoeXNpb2xvZ3ktMmUiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjEwMjI0LjIwNDEyMCIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMiwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiOWFmNTAxYWE2ZTEzYTc1ZDg1MDAzZmVkNGVkMTA1MWU5ZDA3YjdkYyIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTA1LTIzVDE1OjIxOjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJhbmF0b215IiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiNGZkOTk0NTgtNmZkZi00OWJjLTg2ODgtYTZkYzE3YTEyNjhkIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiYW5hdG9teS1hbmQtcGh5c2lvbG9neS0yZSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMjA4MDEuMTgyNzE2IiwKICAgICAgICAgICAgImVkaXRpb24iOiAyLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICI0OWZmNDk5MWRlZWNkMTUwZjM3NGQ4ZTYzNTg2ZmNiMTdmNjU2MzkwIiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDctMjhUMTQ6NTk6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImFuYXRvbXkiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI0ZmQ5OTQ1OC02ZmRmLTQ5YmMtODY4OC1hNmRjMTdhMTI2OGQiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJhbmF0b215LWFuZC1waHlzaW9sb2d5LTJlIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIyMDgwMS4xODI3MTYiLAogICAgICAgICAgICAiZWRpdGlvbiI6IDIsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogIjZjNGYwZjVmMjc4YzEyMmU1ZDY5YTgzYWQzNWVhNGExZWQwNzUyMTciLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0wOS0xOVQxNjoxNDowMCswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiYW5hdG9teSIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjRmZDk5NDU4LTZmZGYtNDliYy04Njg4LWE2ZGMxN2ExMjY4ZCIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImFuYXRvbXktYW5kLXBoeXNpb2xvZ3ktMmUiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgInJlcG9zaXRvcnlfbmFtZSI6ICJvc2Jvb2tzLXByaW5jaXBsZXMtb2YtbWFuYWdlbWVudC1idW5kbGUiLAogICAgICAgICJwbGF0Zm9ybXMiOiBbIlJFWCJdLAogICAgICAgICJ2ZXJzaW9ucyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTAyMjQuMjA0MTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAxLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICJlOTM4YWVlNTc2ZDdlMjliODk5NzdiNTU5NmI5MDRmNmQ4ZWE3ZTM1IiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDEtMDZUMTc6MzI6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInByaW5jaXBsZXMtbWFuYWdlbWVudCIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogImMzYWNiMmFiLTdkNWMtNDVhZC1iM2NkLWU1OTY3M2ZlZGQ0ZSIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogInByaW5jaXBsZXMtbWFuYWdlbWVudCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJwcmluY2lwbGVzLW1hbmFnZW1lbnQiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICIyZDk0MWFiOS1hYzViLTRlYjgtYjIxYy05NjVkMzZhNGYyOTYiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJvcmdhbml6YXRpb25hbC1iZWhhdmlvciIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTAyMjQuMjA0MTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAxLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICIxZWE4NjY4NjE5YWNhNTg2MGRiMzdjNDBhMmUzZjBlYzhkMWVmNTJkIiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDYtMDVUMTU6MzA6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInByaW5jaXBsZXMtbWFuYWdlbWVudCIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogImMzYWNiMmFiLTdkNWMtNDVhZC1iM2NkLWU1OTY3M2ZlZGQ0ZSIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogInByaW5jaXBsZXMtbWFuYWdlbWVudCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJwcmluY2lwbGVzLW1hbmFnZW1lbnQiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICIyZDk0MWFiOS1hYzViLTRlYjgtYjIxYy05NjVkMzZhNGYyOTYiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJvcmdhbml6YXRpb25hbC1iZWhhdmlvciIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVwb3NpdG9yeV9uYW1lIjogIm9zYm9va3MtcHJpbmNpcGxlcy1lY29ub21pY3MtYnVuZGxlIiwKICAgICAgICAicGxhdGZvcm1zIjogWyJSRVgiXSwKICAgICAgICAidmVyc2lvbnMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjEwMjI0LjIwNDEyMCIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMSwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiNDQ0ZTg0ZTMzM2ExMGI0ZDVmY2E2M2MyZDE2NjMzMWM0YTU3OTRmMiIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTAxLTEyVDE3OjMyOjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJlY29ub21pY3MiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI2OTYxOWQyYi02OGYwLTQ0YjAtYjA3NC1hOWIyYmY5MGIyYzYiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJwcmluY2lwbGVzLWVjb25vbWljcyIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJlY29ub21pY3MiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI0MDYxYzgzMi0wOThlLTRiM2MtYTFkOS03ZWI1OTNhMmNiMzEiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJwcmluY2lwbGVzLW1hY3JvZWNvbm9taWNzIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImVjb25vbWljcyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogImVhMmYyMjVlLTYwNjMtNDFjYS1iY2Q4LTM2NDgyZTE1ZWY2NSIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogInByaW5jaXBsZXMtbWljcm9lY29ub21pY3MiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiZWNvbm9taWNzIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiMzMwNzYwNTQtZWMxZC00NDE3LTg4MjQtY2UzNTRlZmU0MmQwIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAicHJpbmNpcGxlcy1tYWNyb2Vjb25vbWljcy1hcC1jb3Vyc2VzIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImVjb25vbWljcyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogImNhMzQ0ZTJkLTY3MzEtNDNjZC1iODUxLWE3YjNhYTBiMzdhYSIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogInByaW5jaXBsZXMtbWljcm9lY29ub21pY3MtYXAtY291cnNlcyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjEwMjI0LjIwNDEyMCIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMiwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiMTIyZjUwYjYwMDg5YjU3YTdkMWFkODEyY2JlOGRlNTE5Njc4YjRiMyIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTAxLTI3VDE3OjMyOjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJlY29ub21pY3MiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICJiYzQ5OGUxZi1lZmU5LTQzYTAtOGRlYS1kMzU2OWFkMDlhODIiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJwcmluY2lwbGVzLWVjb25vbWljcy0yZSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJlY29ub21pY3MiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICIyN2Y1OTA2NC05OTBlLTQ4ZjEtYjYwNC01MTg4YjkwODZjMjkiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJwcmluY2lwbGVzLW1hY3JvZWNvbm9taWNzLTJlIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImVjb25vbWljcyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjVjMDk3NjJjLWI1NDAtNDdkMy05NTQxLWRkYTFmNDRmMTZlNSIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogInByaW5jaXBsZXMtbWljcm9lY29ub21pY3MtMmUiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiZWNvbm9taWNzIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiOTExN2NmOGMtYThhMy00ODc1LTgzNjEtOWNiMGYxZmM5MzYyIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAicHJpbmNpcGxlcy1tYWNyb2Vjb25vbWljcy1hcC1jb3Vyc2VzLTJlIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImVjb25vbWljcyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjYzNmNiZmQ5LTRlMzctNDU3NS04M2FiLTlkZWM5MDI5Y2E0ZSIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogInByaW5jaXBsZXMtbWljcm9lY29ub21pY3MtYXAtY291cnNlcy0yZSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjEwMjI0LjIwNDEyMCIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMiwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiYTZkZDZjNTBmMjMxYmJjOTVlNWJiY2NiMmEzNTIwYTI1OGJiNGU2ZSIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTA2LTE1VDIwOjEyOjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJlY29ub21pY3MiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICJiYzQ5OGUxZi1lZmU5LTQzYTAtOGRlYS1kMzU2OWFkMDlhODIiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJwcmluY2lwbGVzLWVjb25vbWljcy0yZSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJlY29ub21pY3MiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICIyN2Y1OTA2NC05OTBlLTQ4ZjEtYjYwNC01MTg4YjkwODZjMjkiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJwcmluY2lwbGVzLW1hY3JvZWNvbm9taWNzLTJlIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImVjb25vbWljcyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjVjMDk3NjJjLWI1NDAtNDdkMy05NTQxLWRkYTFmNDRmMTZlNSIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogInByaW5jaXBsZXMtbWljcm9lY29ub21pY3MtMmUiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiZWNvbm9taWNzIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiOTExN2NmOGMtYThhMy00ODc1LTgzNjEtOWNiMGYxZmM5MzYyIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAicHJpbmNpcGxlcy1tYWNyb2Vjb25vbWljcy1hcC1jb3Vyc2VzLTJlIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImVjb25vbWljcyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjYzNmNiZmQ5LTRlMzctNDU3NS04M2FiLTlkZWM5MDI5Y2E0ZSIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogInByaW5jaXBsZXMtbWljcm9lY29ub21pY3MtYXAtY291cnNlcy0yZSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjIxMTA5LjIxMzMzNyIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMywKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiMTBhZDkzYWRlNzIzNjE3YmQwYzY3MWY3NjM0NTViOGJiNjk3YzNkNiIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTEyLTAyVDIwOjI3OjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJlY29ub21pY3MiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI0YzM0NjcxZi1iMDU3LTQ5MTgtODc5Ni0zOGNhMWIyZjQxNTEiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJwcmluY2lwbGVzLWVjb25vbWljcy0zZSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJlY29ub21pY3MiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICJhZmYwYzczMy1iMjIzLTRkZmItYWFkNi0yOTdiZDM2MWJkY2YiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJwcmluY2lwbGVzLW1hY3JvZWNvbm9taWNzLTNlIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImVjb25vbWljcyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjc1OTE4MWRiLWE4ODYtNGE5OC04ZjVjLTc3MGE4M2E3ODgzMiIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogInByaW5jaXBsZXMtbWljcm9lY29ub21pY3MtM2UiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgInJlcG9zaXRvcnlfbmFtZSI6ICJvc2Jvb2tzLWludHJvZHVjdG9yeS1zdGF0aXN0aWNzLWJ1bmRsZSIsCiAgICAgICAgInBsYXRmb3JtcyI6IFsiUkVYIl0sCiAgICAgICAgInZlcnNpb25zIjogWwogICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIxMDIyNC4yMDQxMjAiLAogICAgICAgICAgICAiZWRpdGlvbiI6IDEsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogImIyZDZjNzJlOTZhNmQ3OGQ3MTM5MzVlODg3NmVkMjAxNTc4MmYyMDIiLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0wMS0yN1QxNzozMjowMCswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAic3RhdGlzdGljcyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjMwMTg5NDQyLTY5OTgtNDY4Ni1hYzA1LWVkMTUyYjkxYjlkZSIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImludHJvZHVjdG9yeS1zdGF0aXN0aWNzIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInN0YXRpc3RpY3MiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICJiNTZiYjllOS01ZWI4LTQ4ZWYtOTkzOS04OGIxYjEyY2UyMmYiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJpbnRyb2R1Y3RvcnktYnVzaW5lc3Mtc3RhdGlzdGljcyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTAyMjQuMjA0MTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAxLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICIxZDIzOTcwMjg0MjFkMDZmYjA0NWJiYThiZTc2MjExMzM4MzE0OTdiIiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDYtMjNUMTg6MDA6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInN0YXRpc3RpY3MiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICIzMDE4OTQ0Mi02OTk4LTQ2ODYtYWMwNS1lZDE1MmI5MWI5ZGUiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJpbnRyb2R1Y3Rvcnktc3RhdGlzdGljcyIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJzdGF0aXN0aWNzIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiYjU2YmI5ZTktNWViOC00OGVmLTk5MzktODhiMWIxMmNlMjJmIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiaW50cm9kdWN0b3J5LWJ1c2luZXNzLXN0YXRpc3RpY3MiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgInJlcG9zaXRvcnlfbmFtZSI6ICJvc2Jvb2tzLXByaW5jaXBsZXMtYWNjb3VudGluZy1idW5kbGUiLAogICAgICAgICJwbGF0Zm9ybXMiOiBbIlJFWCJdLAogICAgICAgICJ2ZXJzaW9ucyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTAyMjQuMjA0MTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAxLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICJiOWQ1MTE4M2YwMzQxMDhjZWM2ZGM1ZjYxM2U2NGJkY2YyNTYzMzI4IiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDEtMjdUMTc6MzI6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImFjY291bnRpbmciLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI5YWI0YmE2ZC0xZTQ4LTQ4NmQtYTJkZS0zOGFlMTYxN2NhODQiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJwcmluY2lwbGVzLWZpbmFuY2lhbC1hY2NvdW50aW5nIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImFjY291bnRpbmciLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI5MjBkMWM4YS02MDZjLTQ4ODgtYmZkNC1kMWVlMjdjZTE3OTUiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJwcmluY2lwbGVzLW1hbmFnZXJpYWwtYWNjb3VudGluZyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjEwMjI0LjIwNDEyMCIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMSwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiODdiOGEzYTM2NzU1ZDIwZGU2MmE0MTIyZDVkMjY3YjNmZWM0OGEzZiIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTAzLTE3VDE3OjMyOjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJhY2NvdW50aW5nIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiOWFiNGJhNmQtMWU0OC00ODZkLWEyZGUtMzhhZTE2MTdjYTg0IiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAicHJpbmNpcGxlcy1maW5hbmNpYWwtYWNjb3VudGluZyIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJhY2NvdW50aW5nIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiOTIwZDFjOGEtNjA2Yy00ODg4LWJmZDQtZDFlZTI3Y2UxNzk1IiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAicHJpbmNpcGxlcy1tYW5hZ2VyaWFsLWFjY291bnRpbmciCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIxMDIyNC4yMDQxMjAiLAogICAgICAgICAgICAiZWRpdGlvbiI6IDEsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogIjYwNDQxMjgwOTBhNTAxNzcyODRlYjJjMjEzNWRiZGFmZjg4M2YwNWUiLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0wNS0xMlQxODoxOTowMCswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiYWNjb3VudGluZyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjlhYjRiYTZkLTFlNDgtNDg2ZC1hMmRlLTM4YWUxNjE3Y2E4NCIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogInByaW5jaXBsZXMtZmluYW5jaWFsLWFjY291bnRpbmciCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiYWNjb3VudGluZyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjkyMGQxYzhhLTYwNmMtNDg4OC1iZmQ0LWQxZWUyN2NlMTc5NSIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogInByaW5jaXBsZXMtbWFuYWdlcmlhbC1hY2NvdW50aW5nIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgewogICAgICAgICJyZXBvc2l0b3J5X25hbWUiOiAib3Nib29rcy1pbnRyb2R1Y3Rpb24tYnVzaW5lc3MiLAogICAgICAgICJwbGF0Zm9ybXMiOiBbIlJFWCJdLAogICAgICAgICJ2ZXJzaW9ucyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTAyMjQuMjA0MTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAxLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICI1ODc2YTFmNjRmNzA5MGZhZmI2ZjZkYjAxY2NmNWU1ODlkZTJkZjczIiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDEtMjdUMTc6MzI6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImludHJvLWJ1c2luZXNzIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiNGUwOTc3MWYtYThhYS00MGNlLTkwNjMtYWE1OGNjMjRlNzdmIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiaW50cm9kdWN0aW9uLWJ1c2luZXNzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIxMDIyNC4yMDQxMjAiLAogICAgICAgICAgICAiZWRpdGlvbiI6IDEsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogIjJjNzFkNWE2NTk3NzkwZWQ3MDdlYmQ4NzJiNDc5ZGQ1YTM3YmU1MTkiLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0wNi0xNFQxNToyMTowMCswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiaW50cm8tYnVzaW5lc3MiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI0ZTA5NzcxZi1hOGFhLTQwY2UtOTA2My1hYTU4Y2MyNGU3N2YiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJpbnRyb2R1Y3Rpb24tYnVzaW5lc3MiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgInJlcG9zaXRvcnlfbmFtZSI6ICJvc2Jvb2tzLWludHJvZHVjY2lvbi1lc3RhZGlzdGljYS1idW5kbGUiLAogICAgICAgICJwbGF0Zm9ybXMiOiBbIlJFWCJdLAogICAgICAgICJ2ZXJzaW9ucyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMjAxMTguMTg1MjUwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAxLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICJkYzQ1NTBiZmRhMmE1YWI2ZDEwODQyNGM3ZDllNDE5NmRiMTAwZmM2IiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDEtMjhUMTc6MzI6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInN0YXRpc3RpY3MiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICJlNTNkNmM4Yi1mZDllLTRhMjgtODkzMC1jNTY0Y2E2ZmQ3N2QiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJpbnRyb2R1Y2Npw7NuLWVzdGFkw61zdGljYSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJzdGF0aXN0aWNzIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiZjM0NmZlNzUtYWUzOS00ZDExLWFkMzItZDgwYzAzZGY1OGNiIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiaW50cm9kdWNjacOzbi1lc3RhZMOtc3RpY2EtZW1wcmVzYXJpYWwiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgInJlcG9zaXRvcnlfbmFtZSI6ICJvc2Jvb2tzLXdyaXRpbmctZ3VpZGUiLAogICAgICAgICJwbGF0Zm9ybXMiOiBbIlJFWCJdLAogICAgICAgICJ2ZXJzaW9ucyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTExMTEuMTUzNTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAxLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICI4MzNjYzNjNzU2MjllMWE4MDU4NTcyOWIwNTRlOGNjYTUxZjZhYmU0IiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjEtMTItMDJUMTA6NDc6MDYrMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImVuZ2xpc2gtY29tcG9zaXRpb24iLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICJlZTdjZTQ2Yi0wOTcyLTRiMmMtYmM2ZS04OTk4Yzc4NWNkNTciLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJ3cml0aW5nLWd1aWRlIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjExMTExLjE1MzUyMCIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMSwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiOGNlN2Q5N2ExODdmYTZkMjNmZmEwNWRkN2ZmMGFiZDEyODdkNDdlNiIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTA2LTE0VDE1OjI0OjA2KzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJlbmdsaXNoLWNvbXBvc2l0aW9uIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiZWU3Y2U0NmItMDk3Mi00YjJjLWJjNmUtODk5OGM3ODVjZDU3IiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAid3JpdGluZy1ndWlkZSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTExMTEuMTUzNTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAxLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICJkMjI5NWNkNTU1MjRhYjAzMjIxNWZlODM0NGRiZmNkMTMwNzY4M2I0IiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDctMTNUMTk6NDA6MDYrMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImVuZ2xpc2gtY29tcG9zaXRpb24iLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICJlZTdjZTQ2Yi0wOTcyLTRiMmMtYmM2ZS04OTk4Yzc4NWNkNTciLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJ3cml0aW5nLWd1aWRlIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgewogICAgICAgICJyZXBvc2l0b3J5X25hbWUiOiAib3Nib29rcy1jb2xsZWdlLWFsZ2VicmEtYnVuZGxlIiwKICAgICAgICAicGxhdGZvcm1zIjogWyJSRVgiXSwKICAgICAgICAidmVyc2lvbnMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjEwMjI0LjIwNDEyMCIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMSwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiZWJjNWJlYjE1NzY2ZTVhNzJkNGQ1MDg1YzFkNDcwYWU4NjgwMDdmYiIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIxLTA5LTIxVDE4OjQyOjA2KzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJwcmVjYWxjdWx1cyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjEzYWMxMDdhLWYxNWYtNDlkMi05N2U4LTYwYWIyZTNiNTE5YyIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImFsZ2VicmEtYW5kLXRyaWdvbm9tZXRyeSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJwcmVjYWxjdWx1cyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjliMDhjMjk0LTA1N2YtNDIwMS05ZjQ4LTVkNmFkOTkyNzQwZCIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImNvbGxlZ2UtYWxnZWJyYSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJwcmVjYWxjdWx1cyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogImZkNTNlYWUxLWZhMjMtNDdjNy1iYjFiLTk3MjM0OTgzNWMzYyIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogInByZWNhbGN1bHVzIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInByZWNhbGN1bHVzLWNvcmVxIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiNTA3ZmViMWUtY2ZmZi00YjU0LWJjMDctZDUyNjM2Y2VjZmUzIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiY29sbGVnZS1hbGdlYnJhLWNvcmVxdWlzaXRlLXN1cHBvcnQiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIxMTExMS4xNTM1MjAiLAogICAgICAgICAgICAiZWRpdGlvbiI6IDIsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogIjZhMmVlODM4OTI5ZTU5NDVhNGU2N2M3OTQ5NmE3MzBiMmNjMjY5YTciLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMS0wMi0wMlQxNDo0NToxNiswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAicHJlY2FsY3VsdXMiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICJlYWVmZGFmMS1iZGEwLTRhZGEtYTlmZS1mMWMwNjViZmNjNGUiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJhbGdlYnJhLWFuZC10cmlnb25vbWV0cnktMmUiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAicHJlY2FsY3VsdXMiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICIzNWQ3Y2NlMi00OGRkLTQ0MDMtYjZhNS1lODI4Y2I1YTE3ZGEiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJjb2xsZWdlLWFsZ2VicmEtMmUiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAicHJlY2FsY3VsdXMiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICJmMDIxMzk1Zi1mZDYzLTQ2Y2QtYWI5NS0wMzdjNmYwNTE3MzAiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJwcmVjYWxjdWx1cy0yZSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJwcmVjYWxjdWx1cy1jb3JlcSIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjU5MDI0YTYzLTJiMWEtNDYzMS05NGM1LWFlMjc1YTc3YjU4NyIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImNvbGxlZ2UtYWxnZWJyYS1jb3JlcXVpc2l0ZS1zdXBwb3J0LTJlIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTExMTEuMTUzNTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAyLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICJlYTBhY2M0NmVlYmNiMDhiMGJlM2Q2Mjg5ZmU2Zjk5ZTA3MzkzMjI0IiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDYtMTVUMTc6MTA6MTYrMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInByZWNhbGN1bHVzIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiZWFlZmRhZjEtYmRhMC00YWRhLWE5ZmUtZjFjMDY1YmZjYzRlIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiYWxnZWJyYS1hbmQtdHJpZ29ub21ldHJ5LTJlIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInByZWNhbGN1bHVzIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiMzVkN2NjZTItNDhkZC00NDAzLWI2YTUtZTgyOGNiNWExN2RhIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiY29sbGVnZS1hbGdlYnJhLTJlIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInByZWNhbGN1bHVzIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiZjAyMTM5NWYtZmQ2My00NmNkLWFiOTUtMDM3YzZmMDUxNzMwIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAicHJlY2FsY3VsdXMtMmUiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAicHJlY2FsY3VsdXMtY29yZXEiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI1OTAyNGE2My0yYjFhLTQ2MzEtOTRjNS1hZTI3NWE3N2I1ODciLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJjb2xsZWdlLWFsZ2VicmEtY29yZXF1aXNpdGUtc3VwcG9ydC0yZSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjExMTExLjE1MzUyMCIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMiwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiNjBkNmNiOGUxZTg0ZjM1ODRhOTlmNDA4ZjExNDViZGNiYjMyZDM5OCIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTA4LTI1VDE5OjA3OjE2KzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJwcmVjYWxjdWx1cyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogImVhZWZkYWYxLWJkYTAtNGFkYS1hOWZlLWYxYzA2NWJmY2M0ZSIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImFsZ2VicmEtYW5kLXRyaWdvbm9tZXRyeS0yZSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJwcmVjYWxjdWx1cyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjM1ZDdjY2UyLTQ4ZGQtNDQwMy1iNmE1LWU4MjhjYjVhMTdkYSIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImNvbGxlZ2UtYWxnZWJyYS0yZSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJwcmVjYWxjdWx1cyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogImYwMjEzOTVmLWZkNjMtNDZjZC1hYjk1LTAzN2M2ZjA1MTczMCIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogInByZWNhbGN1bHVzLTJlIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInByZWNhbGN1bHVzLWNvcmVxIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiNTkwMjRhNjMtMmIxYS00NjMxLTk0YzUtYWUyNzVhNzdiNTg3IiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiY29sbGVnZS1hbGdlYnJhLWNvcmVxdWlzaXRlLXN1cHBvcnQtMmUiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9ICAKICAgICAgICBdCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVwb3NpdG9yeV9uYW1lIjogIm9zYm9va3MtZml6eWthLWJ1bmRsZSIsCiAgICAgICAgInBsYXRmb3JtcyI6IFsiUkVYIl0sCiAgICAgICAgInZlcnNpb25zIjogWwogICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIxMDIyNC4yMDQxMjAiLAogICAgICAgICAgICAiZWRpdGlvbiI6IDEsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogIjIwNGVkYTFhMDc4ZDYxOThhNjU3YjA2YzAyNTA1ZTNhMDk2MTQwYTEiLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0wMy0wNFQyMDowNjowMCswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAicGwtdS1waHlzaWNzIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiNGVhYThmMDMtODhhOC00ODVhLWE3NzctZGQzNjAyZjZjMTNlIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiZml6eWthLWRsYS1zemvDs8WCLXd5xbxzenljaC10b20tMSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJwbC11LXBoeXNpY3MiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICIxNmFiNWI5Ni00NTk4LTQ1ZjktOTkzYy1iOGQ3OGQ4MmIwYzYiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJmaXp5a2EtZGxhLXN6a8OzxYItd3nFvHN6eWNoLXRvbS0yIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInBsLXUtcGh5c2ljcyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogImJiNjI5MzNlLWYyMGEtNGZmYy05MGFhLTk3YjM2YzI5NmMzZSIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImZpenlrYS1kbGEtc3prw7PFgi13ecW8c3p5Y2gtdG9tLTMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjEwMjI0LjIwNDEyMCIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMSwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiMGNkMDgyZjViMWYyMzE3Yjc2MDc4M2Y1NDYyMTcwNDQ0NDg0MmMwOCIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTA5LTIxVDEwOjI3OjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJwbC11LXBoeXNpY3MiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI0ZWFhOGYwMy04OGE4LTQ4NWEtYTc3Ny1kZDM2MDJmNmMxM2UiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJmaXp5a2EtZGxhLXN6a8OzxYItd3nFvHN6eWNoLXRvbS0xIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInBsLXUtcGh5c2ljcyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjE2YWI1Yjk2LTQ1OTgtNDVmOS05OTNjLWI4ZDc4ZDgyYjBjNiIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImZpenlrYS1kbGEtc3prw7PFgi13ecW8c3p5Y2gtdG9tLTIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAicGwtdS1waHlzaWNzIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiYmI2MjkzM2UtZjIwYS00ZmZjLTkwYWEtOTdiMzZjMjk2YzNlIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiZml6eWthLWRsYS1zemvDs8WCLXd5xbxzenljaC10b20tMyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVwb3NpdG9yeV9uYW1lIjogIm9zYm9va3MtcHN5Y2hvbG9naWEiLAogICAgICAgICJwbGF0Zm9ybXMiOiBbIlJFWCJdLAogICAgICAgICJ2ZXJzaW9ucyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTAyMjQuMjA0MTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAxLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICJjNDk4ZGYzZjVlMjk0MTIzNzRiYjhhYzQ0YWE2MzQwMjA1ODdhMDc0IiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDMtMDRUMTA6NDc6MDYrMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInBsLXBzeWNob2xvZ3kiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI3MjhkZjBiYi1lMDdmLTQ4OWQtOTFlMy00NzM0YTU5MzJmOTIiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJwc3ljaG9sb2dpYSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjEwMjI0LjIwNDEyMCIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMSwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiMzhhNDQzZWQ3ODE2MWI5YTMyZmI3YjUwYjkzMjI5OThlNmM2MDAzYyIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTEwLTA2VDE5OjI3OjA2KzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJwbC1wc3ljaG9sb2d5IiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiNzI4ZGYwYmItZTA3Zi00ODlkLTkxZTMtNDczNGE1OTMyZjkyIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAicHN5Y2hvbG9naWEiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjEwMjI0LjIwNDEyMCIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMSwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiMDcwODkzMWZhNmQ3YjI2MWNjMjExYzEzNmFjMmRjZGJhNjYxY2NmNyIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTEwLTEyVDE4OjQwOjA2KzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJwbC1wc3ljaG9sb2d5IiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiNzI4ZGYwYmItZTA3Zi00ODlkLTkxZTMtNDczNGE1OTMyZjkyIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAicHN5Y2hvbG9naWEiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAgICB7CiAgICAgICAgInJlcG9zaXRvcnlfbmFtZSI6ICJvc2Jvb2tzLW1pa3JvZWtvbm9taWEiLAogICAgICAgICJwbGF0Zm9ybXMiOiBbIlJFWCJdLAogICAgICAgICJ2ZXJzaW9ucyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMjA4MTUuMTgyMzQzIiwKICAgICAgICAgICAgImVkaXRpb24iOiAxLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICJiMmZlYjU2YjRhNzhhYzBkMzlhNjRjOWFjYjM2NjE4ODVkZGRkOTU5IiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDgtMjVUMTU6MDY6MDYrMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInBsLWVjb25vbWljcyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogImM5Y2JjMGFhLTNhZmEtNDQ4Yi04MDQ4LTNjYTJlMGVlMmY2YSIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogIm1pa3JvZWtvbm9taWEtcG9kc3Rhd3kiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIyMDgxNS4xODIzNDMiLAogICAgICAgICAgICAiZWRpdGlvbiI6IDEsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogIjYwNDFjNDY0ZmU3OTY5MTA1YzBhOGQwMDIzYjdlOTZkMzUwNzZhZjciLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0wOC0zMVQxNjo1NDowNiswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAicGwtZWNvbm9taWNzIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiYzljYmMwYWEtM2FmYS00NDhiLTgwNDgtM2NhMmUwZWUyZjZhIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAibWlrcm9la29ub21pYS1wb2RzdGF3eSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMjA4MTUuMTgyMzQzIiwKICAgICAgICAgICAgImVkaXRpb24iOiAxLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICI4ZjZjNWZmMjFkMzJhN2IzYTViNzVjNTY2ODRlYjQ3NTYzNzE4ZmI4IiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDktMTJUMTc6MDE6MDYrMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogInBsLWVjb25vbWljcyIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogImM5Y2JjMGFhLTNhZmEtNDQ4Yi04MDQ4LTNjYTJlMGVlMmY2YSIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogIm1pa3JvZWtvbm9taWEtcG9kc3Rhd3kiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgInJlcG9zaXRvcnlfbmFtZSI6ICJvc2Jvb2tzLWxpZmUtbGliZXJ0eS1hbmQtcHVyc3VpdC1oYXBwaW5lc3MiLAogICAgICAgICJwbGF0Zm9ybXMiOiBbIlRVVE9SIl0sCiAgICAgICAgInZlcnNpb25zIjogWwogICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIxMDIyNC4yMDQxMjAiLAogICAgICAgICAgICAiZWRpdGlvbiI6IDEsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogIjU3MzNhYzk0M2FmNmQyM2Q5M2YxNGY4YTQwY2ZhYTNhYjQ3ODVhOWUiLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0wMS0yN1QxMDo0NzowNiswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiYXAtaGlzdG9yeSIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogIjM2MDA0NTg2LTY1MWMtNGRlZC1hZjg3LTIwM2FjYTIyZDk0NiIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImxpZmUtbGliZXJ0eS1hbmQtcHVyc3VpdC1oYXBwaW5lc3MiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgInJlcG9zaXRvcnlfbmFtZSI6ICJvc2Jvb2tzLWFtZXJpY2FuLWdvdmVybm1lbnQiLAogICAgICAgICJwbGF0Zm9ybXMiOiBbIlJFWCJdLAogICAgICAgICJ2ZXJzaW9ucyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTAyMjQuMjA0MTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAxLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICJhN2Y5ZWRjMjA5MmFlOTQxOWYyNGQxYzRmNjUwOWI1Mzk5MzYxMDUxIiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDMtMDhUMTA6NDc6MDYrMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImFtZXJpY2FuLWdvdmVybm1lbnQiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI1YmNjMGU1OS03MzQ1LTQyMWQtODUwNy1hMWU0NjA4Njg1ZTgiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJhbWVyaWNhbi1nb3Zlcm5tZW50IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTAyMjQuMjA0MTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAyLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICI2MGZmMWJiMDhiODFhZGQ2MmJmMTlkNzMwOWE0NDJmNmVhNWFkZjk4IiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDMtMDhUMTA6NDc6MDYrMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImFtZXJpY2FuLWdvdmVybm1lbnQiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI5ZDhkZjYwMS00ZjEyLTRhYzEtODIyNC1iNDUwYmY3MzllNWYiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJhbWVyaWNhbi1nb3Zlcm5tZW50LTJlIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMTAyMjQuMjA0MTIwIiwKICAgICAgICAgICAgImVkaXRpb24iOiAzLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICJlOWU4ZjU5NTgzY2FjZjVjMjZhY2QzZTI4OTZhMzMyOTU3MWQxMjIwIiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDMtMDJUMTA6NDc6MDYrMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImFtZXJpY2FuLWdvdmVybm1lbnQiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICIzMGU0NzE4MS1mNTJjLTRhOTEtOWMxMS0zMzM4MGM0MjgyNjgiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJhbWVyaWNhbi1nb3Zlcm5tZW50LTNlIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjEwMjI0LjIwNDEyMCIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMywKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiNDFjMmQ1NmI4OTFkMDdjNjg0YjNhNjcyNzBmNmVmMzA5MDNkMGQxYSIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTA2LTI3VDE2OjE2OjA2KzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJhbWVyaWNhbi1nb3Zlcm5tZW50IiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiMzBlNDcxODEtZjUyYy00YTkxLTljMTEtMzMzODBjNDI4MjY4IiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiYW1lcmljYW4tZ292ZXJubWVudC0zZSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVwb3NpdG9yeV9uYW1lIjogIm9zYm9va3MtY29sbGVnZS1waHlzaWNzLWJ1bmRsZSIsCiAgICAgICAgInBsYXRmb3JtcyI6IFsiUkVYIl0sCiAgICAgICAgInZlcnNpb25zIjogWwogICAgICAgICAgewogICAgICAgICAgICAibWluX2NvZGVfdmVyc2lvbiI6ICIyMDIyMDQxMS4xOTI3MDIiLAogICAgICAgICAgICAiZWRpdGlvbiI6IDEsCiAgICAgICAgICAgICJjb21taXRfc2hhIjogIjFhYTNlN2E5MDFjMGYwZGRjMzdkMzRmODkwMDU1ZDYxYTc0NzY5NDYiLAogICAgICAgICAgICAiY29tbWl0X21ldGFkYXRhIjogewogICAgICAgICAgICAgICJjb21taXR0ZWRfYXQiOiAiMjAyMi0wMy0wM1QyMDowNjowMCswMDowMCIsCiAgICAgICAgICAgICAgImJvb2tzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiY29sbGVnZS1waHlzaWNzIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiMDMxZGE4ZDMtYjUyNS00MjljLTgwY2YtNmM4ZWQ5OTc3MzNhIiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiY29sbGVnZS1waHlzaWNzIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImFwLXBoeXNpY3MiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICI4ZDA0YTY4Ni1kNWU4LTQ3OTgtYTI3ZC1jNjA4ZTRkMGUxODciLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJjb2xsZWdlLXBoeXNpY3MtYXAtY291cnNlcyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJtaW5fY29kZV92ZXJzaW9uIjogIjIwMjIwNTA5LjE3NDU1MyIsCiAgICAgICAgICAgICJlZGl0aW9uIjogMiwKICAgICAgICAgICAgImNvbW1pdF9zaGEiOiAiY2JiYWYyYmEyMWUzZGQ4YWZiOTBhYmJmMzVjZTZlMGU0MTAwZDBkZCIsCiAgICAgICAgICAgICJjb21taXRfbWV0YWRhdGEiOiB7CiAgICAgICAgICAgICAgImNvbW1pdHRlZF9hdCI6ICIyMDIyLTA2LTMwVDE0OjE5OjAwKzAwOjAwIiwKICAgICAgICAgICAgICAiYm9va3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJjb2xsZWdlLXBoeXNpY3MtMmUiLAogICAgICAgICAgICAgICAgICAidXVpZCI6ICJhMzFkZjA2Mi05MzBhLTRmNDYtODk1My02MDU3MTFlNmQyMDQiLAogICAgICAgICAgICAgICAgICAic2x1ZyI6ICJjb2xsZWdlLXBoeXNpY3MtMmUiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAic3R5bGUiOiAiYXAtcGh5c2ljcy0yZSIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogImZjNjU2OTdiLTVhOWUtNGRmZS1hYzAzLTAzNTEyOWY3YmUyOCIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImNvbGxlZ2UtcGh5c2ljcy1hcC1jb3Vyc2VzLTJlIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgIm1pbl9jb2RlX3ZlcnNpb24iOiAiMjAyMjA3MTguMjAwNTM5IiwKICAgICAgICAgICAgImVkaXRpb24iOiAyLAogICAgICAgICAgICAiY29tbWl0X3NoYSI6ICI5Mzg4OTc5OTQwYzE4OGIyNzViMjZhMzc2Mjk2YzIxMTdkYmNiNWZjIiwKICAgICAgICAgICAgImNvbW1pdF9tZXRhZGF0YSI6IHsKICAgICAgICAgICAgICAiY29tbWl0dGVkX2F0IjogIjIwMjItMDctMTlUMjE6Mjk6MDArMDA6MDAiLAogICAgICAgICAgICAgICJib29rcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgInN0eWxlIjogImNvbGxlZ2UtcGh5c2ljcy0yZSIsCiAgICAgICAgICAgICAgICAgICJ1dWlkIjogImEzMWRmMDYyLTkzMGEtNGY0Ni04OTUzLTYwNTcxMWU2ZDIwNCIsCiAgICAgICAgICAgICAgICAgICJzbHVnIjogImNvbGxlZ2UtcGh5c2ljcy0yZSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJzdHlsZSI6ICJhcC1waHlzaWNzLTJlIiwKICAgICAgICAgICAgICAgICAgInV1aWQiOiAiZmM2NTY5N2ItNWE5ZS00ZGZlLWFjMDMtMDM1MTI5ZjdiZTI4IiwKICAgICAgICAgICAgICAgICAgInNsdWciOiAiY29sbGVnZS1waHlzaWNzLWFwLWNvdXJzZXMtMmUiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9CiBdLAogICAgImFwcHJvdmVkX3ZlcnNpb25zIjogW10KICB9Cg== + recorded_at: Tue, 13 Dec 2022 19:17:54 GMT +- request: + method: get + uri: https://.s3.amazonaws.com/?delimiter=/&list-type=2&prefix=apps/archive/ + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - '' + User-Agent: + - aws-sdk-ruby3/3.131.6 ruby/2.7.2 x86_64-darwin20 aws-sdk-s3/1.114.0 + X-Amz-Date: + - 20221213T191754Z + X-Amz-Security-Token: + - "" + X-Amz-Content-Sha256: + - e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 + Authorization: + - "" + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + X-Amz-Id-2: + - "" + X-Amz-Request-Id: + - "" + Date: + - Tue, 13 Dec 2022 19:17:55 GMT + X-Amz-Bucket-Region: + - "" + Content-Type: + - application/xml + Transfer-Encoding: + - chunked + Server: + - AmazonS3 + body: + encoding: UTF-8 + string: |- + + apps/archive/231000/falseapps/archive/20200827.155539/apps/archive/20201014.233724/apps/archive/20201029.133542/apps/archive/20201222.172624/apps/archive/20210224.204120/apps/archive/20210325.214454/apps/archive/20210421.141058/apps/archive/20210514.171726/apps/archive/20210623.195337/apps/archive/20210713.205645/apps/archive/20210823.155019/apps/archive/20211208.194259/apps/archive/20211209.160144/apps/archive/20220118.185250/apps/archive/20220131.212404/apps/archive/20220228.174637/apps/archive/20220325.143432/apps/archive/20220411.192702/apps/archive/20220422.171947/apps/archive/20220509.174553/apps/archive/20220801.182716/apps/archive/20220815.182343/apps/archive/20221109.213337/ + recorded_at: Tue, 13 Dec 2022 19:17:54 GMT +- request: + method: get + uri: https://openstax.org/apps/archive/20221109.213337/contents/14fb4ad7-39a1-4eee-ab6e-3ef2482e3e22@ccce780.json + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Faraday v1.10.0 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Date: + - Mon, 12 Dec 2022 18:20:59 GMT + Last-Modified: + - Tue, 15 Nov 2022 08:28:21 GMT + X-Amz-Version-Id: + - agVlqAbg7Wv.9UYZINvVOrtGWB6xeCKx + Etag: + - W/"234c15ab468026b722b797861d0522ac" + Server: + - AmazonS3 + Vary: + - Accept-Encoding + X-Cache: + - Hit from cloudfront + Via: + - 1.1 9250ce61dbd138f5b6d747dd25e6029a.cloudfront.net (CloudFront) + X-Amz-Cf-Pop: + - IAH50-P2 + X-Amz-Cf-Id: + - rpFTkMtDsrb57yEUY5lInj6Ovt3pQYSkeZohRn9do8jKZX6E5O49eA== + Age: + - '89916' + body: + encoding: ASCII-8BIT + string: | + { + "title": "Anatomy and Physiology", + "revised": "2022-01-27T17:52:49+00:00", + "tree": { + "id": "14fb4ad7-39a1-4eee-ab6e-3ef2482e3e22@ccce780", + "title": "Anatomy and Physiology", + "contents": [ + { + "id": "7c42370b-c3ad-48ac-9620-d15367b882c6@", + "title": "Preface ", + "slug": "preface" + }, + { + "id": "d3ad443b-78fa-551e-a67f-182bd0cb4c77@ccce780", + "title": "Unit 1\n \n Levels of Organization", + "contents": [ + { + "id": "5ae6cc38-7b7b-5e9c-a7a4-5d8251baac7f@ccce780", + "title": "Chapter 1\n \n An Introduction to the Human Body", + "contents": [ + { + "id": "ccc4ed14-6c87-408b-9934-7a0d279d853a@", + "title": "Introduction ", + "slug": "1-introduction" + }, + { + "id": "ada35081-9ec4-4eb8-98b2-3ce350d5427f@", + "title": "1.1 Overview of Anatomy and Physiology", + "slug": "1-1-overview-of-anatomy-and-physiology" + }, + { + "id": "5e1ff6e7-0980-4ae0-bc8a-4b591a7c1760@", + "title": "1.2 Structural Organization of the Human Body ", + "slug": "1-2-structural-organization-of-the-human-body" + }, + { + "id": "59221da8-5fb6-4b3e-9450-079cd616385b@", + "title": "1.3 Functions of Human Life ", + "slug": "1-3-functions-of-human-life" + }, + { + "id": "00a2d5b6-9b1d-49ab-a40d-fcd30ceef643@", + "title": "1.4 Requirements for Human Life ", + "slug": "1-4-requirements-for-human-life" + }, + { + "id": "f10ff9a5-0428-4700-8676-96ad36c4ac64@", + "title": "1.5 Homeostasis ", + "slug": "1-5-homeostasis" + }, + { + "id": "17e4eea8-a005-45af-b835-f756a014cd48@", + "title": "1.6 Anatomical Terminology ", + "slug": "1-6-anatomical-terminology" + }, + { + "id": "bda09c0d-e898-4653-9d37-3cb49fab55e5@", + "title": "1.7 Medical Imaging ", + "slug": "1-7-medical-imaging" + }, + { + "id": "e5b74fd9-3523-5164-8655-8e4674207744@ccce780", + "title": "Key Terms", + "slug": "1-key-terms" + }, + { + "id": "43836806-4847-59ca-bd6e-f5d8602ba0fb@ccce780", + "title": "Chapter Review", + "slug": "1-chapter-review" + }, + { + "id": "f77bbe78-030e-5b8d-a564-db66f068ec3e@ccce780", + "title": "Interactive Link Questions", + "slug": "1-interactive-link-questions" + }, + { + "id": "12307c1b-901e-5f9c-be70-86b707be2b77@ccce780", + "title": "Review Questions", + "slug": "1-review-questions" + }, + { + "id": "32230792-7415-589d-9f02-33e17353cdff@ccce780", + "title": "Critical Thinking Questions", + "slug": "1-critical-thinking-questions" + } + ], + "slug": "1-an-introduction-to-the-human-body" + }, + { + "id": "25af104e-154f-51fa-b882-55c3c0ad4125@ccce780", + "title": "Chapter 2\n \n The Chemical Level of Organization", + "contents": [ + { + "id": "1fb02236-0cf1-424b-a8cd-13e77aabd1fb@", + "title": "Introduction ", + "slug": "2-introduction" + }, + { + "id": "b82d4112-06e7-42bb-bd70-4e83cdfe5df0@", + "title": "2.1 Elements and Atoms: The Building Blocks of Matter ", + "slug": "2-1-elements-and-atoms-the-building-blocks-of-matter" + }, + { + "id": "2c60e072-7665-49b9-a2c9-2736b72b533c@", + "title": "2.2 Chemical Bonds ", + "slug": "2-2-chemical-bonds" + }, + { + "id": "a1979af6-5761-4483-8a50-6ba57729f769@", + "title": "2.3 Chemical Reactions ", + "slug": "2-3-chemical-reactions" + }, + { + "id": "e4e45509-bfc0-4aee-b73e-17b7582bf7e1@", + "title": "2.4 Inorganic Compounds Essential to Human Functioning ", + "slug": "2-4-inorganic-compounds-essential-to-human-functioning" + }, + { + "id": "6773536c-3efb-44c9-8ace-78fafdce27e1@", + "title": "2.5 Organic Compounds Essential to Human Functioning ", + "slug": "2-5-organic-compounds-essential-to-human-functioning" + }, + { + "id": "1ad49b04-80c1-59c6-be9f-badd9651c115@ccce780", + "title": "Key Terms", + "slug": "2-key-terms" + }, + { + "id": "3e151ada-f837-5c4c-aa91-c5c9d723520b@ccce780", + "title": "Chapter Review", + "slug": "2-chapter-review" + }, + { + "id": "416c5f27-de1d-540b-9682-be24f0c70eb7@ccce780", + "title": "Interactive Link Questions", + "slug": "2-interactive-link-questions" + }, + { + "id": "b373a7e0-7a6e-5c32-80b2-8322d4e81691@ccce780", + "title": "Review Questions", + "slug": "2-review-questions" + }, + { + "id": "4f794402-46fc-54ad-bf51-819e4e61ead3@ccce780", + "title": "Critical Thinking Questions", + "slug": "2-critical-thinking-questions" + } + ], + "slug": "2-the-chemical-level-of-organization" + }, + { + "id": "dd4c593c-46b1-500e-a1fc-d6f7ce396122@ccce780", + "title": "Chapter 3\n \n The Cellular Level of Organization", + "contents": [ + { + "id": "296b38a8-ec0c-464a-aa91-21fa71ada02b@", + "title": "Introduction ", + "slug": "3-introduction" + }, + { + "id": "ab65fdf7-9137-48d6-b949-5da675cda5e4@", + "title": "3.1 The Cell Membrane ", + "slug": "3-1-the-cell-membrane" + }, + { + "id": "7d5ecac2-a4c4-4167-b952-c3a9bde54252@", + "title": "3.2 The Cytoplasm and Cellular Organelles ", + "slug": "3-2-the-cytoplasm-and-cellular-organelles" + }, + { + "id": "f53c4738-3dce-4a11-8560-526c87ab0938@", + "title": "3.3 The Nucleus and DNA Replication ", + "slug": "3-3-the-nucleus-and-dna-replication" + }, + { + "id": "9720dd66-aa78-4811-8a72-9caff10a22b9@", + "title": "3.4 Protein Synthesis ", + "slug": "3-4-protein-synthesis" + }, + { + "id": "ea2a2ecf-4268-4b70-b371-82888c466d47@", + "title": "3.5 Cell Growth and Division ", + "slug": "3-5-cell-growth-and-division" + }, + { + "id": "966c32cc-3d6f-4f4e-af4f-ea0c975e825c@", + "title": "3.6 Cellular Differentiation ", + "slug": "3-6-cellular-differentiation" + }, + { + "id": "80ebe3c7-edb7-5b6f-9ec0-e8f6b781bfee@ccce780", + "title": "Key Terms", + "slug": "3-key-terms" + }, + { + "id": "d0dd2038-d55c-53e5-8687-8c7e3330b477@ccce780", + "title": "Chapter Review", + "slug": "3-chapter-review" + }, + { + "id": "45cf443f-31b9-548b-96f1-a202a03e2f10@ccce780", + "title": "Interactive Link Questions", + "slug": "3-interactive-link-questions" + }, + { + "id": "135b777e-df17-5c4f-8734-e3e3c31baa63@ccce780", + "title": "Review Questions", + "slug": "3-review-questions" + }, + { + "id": "e6b5da72-8e34-5792-bdd6-f1addfaadba2@ccce780", + "title": "Critical Thinking Questions", + "slug": "3-critical-thinking-questions" + } + ], + "slug": "3-the-cellular-level-of-organization" + }, + { + "id": "5916d637-e8fd-5e44-81eb-10050fb2bbd6@ccce780", + "title": "Chapter 4\n \n The Tissue Level of Organization", + "contents": [ + { + "id": "23a955b6-1303-49c6-895f-15c0d17aa379@", + "title": "Introduction ", + "slug": "4-introduction" + }, + { + "id": "cdf9ebbd-b0fe-4fce-94b4-512f2a574f18@", + "title": "4.1 Types of Tissues ", + "slug": "4-1-types-of-tissues" + }, + { + "id": "a16a9513-1ac9-495d-9096-bb8b31905a44@", + "title": "4.2 Epithelial Tissue ", + "slug": "4-2-epithelial-tissue" + }, + { + "id": "fe382569-de99-4d07-a334-757fb577e488@", + "title": "4.3 Connective Tissue Supports and Protects ", + "slug": "4-3-connective-tissue-supports-and-protects" + }, + { + "id": "c069e467-4f69-4a18-a0fa-3019c619fcb4@", + "title": "4.4 Muscle Tissue and Motion ", + "slug": "4-4-muscle-tissue-and-motion" + }, + { + "id": "9e163641-a85d-473c-9e27-68357a60d47e@", + "title": "4.5 Nervous Tissue Mediates Perception and Response ", + "slug": "4-5-nervous-tissue-mediates-perception-and-response" + }, + { + "id": "364be9f4-198b-4141-af4d-f6f1e2e7451f@", + "title": "4.6 Tissue Injury and Aging ", + "slug": "4-6-tissue-injury-and-aging" + }, + { + "id": "2e261887-f534-57fe-b895-46ff27c04661@ccce780", + "title": "Key Terms", + "slug": "4-key-terms" + }, + { + "id": "eb014b39-94d0-57e5-9f68-1dff7784e60c@ccce780", + "title": "Chapter Review", + "slug": "4-chapter-review" + }, + { + "id": "8f4af5c4-ca7c-5a8c-a00e-5b725d39d457@ccce780", + "title": "Interactive Link Questions", + "slug": "4-interactive-link-questions" + }, + { + "id": "237c8db2-1b14-59ff-88d0-77bde1ada12d@ccce780", + "title": "Review Questions", + "slug": "4-review-questions" + }, + { + "id": "ca59bc19-fda2-5252-b267-c91c14590b0e@ccce780", + "title": "Critical Thinking Questions", + "slug": "4-critical-thinking-questions" + } + ], + "slug": "4-the-tissue-level-of-organization" + } + ], + "slug": "1-levels-of-organization" + }, + { + "id": "f98a5884-b598-5578-8fd4-e5d1eb5b2b68@ccce780", + "title": "Unit 2\n \n Support and Movement", + "contents": [ + { + "id": "728daf6c-9cd1-5a56-a4fb-6e90ee2b6cc8@ccce780", + "title": "Chapter 5\n \n The Integumentary System", + "contents": [ + { + "id": "d4ba1edb-466a-4e1e-89c6-2f4e3808d015@", + "title": "Introduction ", + "slug": "5-introduction" + }, + { + "id": "471cb008-6900-476c-8a65-539fdc592b75@", + "title": "5.1 Layers of the Skin ", + "slug": "5-1-layers-of-the-skin" + }, + { + "id": "d04891a4-ef83-498a-a15b-ba1aabfe8beb@", + "title": "5.2 Accessory Structures of the Skin ", + "slug": "5-2-accessory-structures-of-the-skin" + }, + { + "id": "e6ad3f38-d07d-4798-b8bf-e160871246b6@", + "title": "5.3 Functions of the Integumentary System ", + "slug": "5-3-functions-of-the-integumentary-system" + }, + { + "id": "087cf343-a55f-4fdd-b745-931c2d01cec7@", + "title": "5.4 Diseases, Disorders, and Injuries of the Integumentary System ", + "slug": "5-4-diseases-disorders-and-injuries-of-the-integumentary-system" + }, + { + "id": "8449efe4-5d87-52f4-a944-a84e0d11d4ea@ccce780", + "title": "Key Terms", + "slug": "5-key-terms" + }, + { + "id": "85588e90-e749-582e-aeec-0432241ac62e@ccce780", + "title": "Chapter Review", + "slug": "5-chapter-review" + }, + { + "id": "de15fa9a-7d43-5963-a32a-e9bc49f7e2df@ccce780", + "title": "Interactive Link Questions", + "slug": "5-interactive-link-questions" + }, + { + "id": "28935245-dedf-5b0d-88f3-6e99764ed6f8@ccce780", + "title": "Review Questions", + "slug": "5-review-questions" + }, + { + "id": "4b848008-d696-5a95-8203-4e7ed8ecdfbd@ccce780", + "title": "Critical Thinking Questions", + "slug": "5-critical-thinking-questions" + } + ], + "slug": "5-the-integumentary-system" + }, + { + "id": "024eeb51-a9ae-592b-b4d6-d06d6e8beea9@ccce780", + "title": "Chapter 6\n \n Bone Tissue and the Skeletal System", + "contents": [ + { + "id": "316c6c40-bc30-4ad1-863a-e0ddec74b94d@", + "title": "Introduction ", + "slug": "6-introduction" + }, + { + "id": "48d80d4f-3c79-411f-b2d8-f98504979f32@", + "title": "6.1 The Functions of the Skeletal System ", + "slug": "6-1-the-functions-of-the-skeletal-system" + }, + { + "id": "f31ed894-b1ee-470d-9adb-7cf69966a03d@", + "title": "6.2 Bone Classification ", + "slug": "6-2-bone-classification" + }, + { + "id": "9306de62-3f52-46f8-ab1a-94263c480eda@", + "title": "6.3 Bone Structure ", + "slug": "6-3-bone-structure" + }, + { + "id": "b601e5c1-0c20-449c-a324-a0f5ad55eb96@", + "title": "6.4 Bone Formation and Development ", + "slug": "6-4-bone-formation-and-development" + }, + { + "id": "9e8ef85c-433b-471e-b0e2-9fe036e2d8cd@", + "title": "6.5 Fractures: Bone Repair ", + "slug": "6-5-fractures-bone-repair" + }, + { + "id": "83ebec07-6636-49f5-b77c-eaf419b6431c@", + "title": "6.6 Exercise, Nutrition, Hormones, and Bone Tissue ", + "slug": "6-6-exercise-nutrition-hormones-and-bone-tissue" + }, + { + "id": "4a2d7732-7817-4883-ba32-3a4b9c0dd8a5@", + "title": "6.7 Calcium Homeostasis: Interactions of the Skeletal System and Other Organ Systems ", + "slug": "6-7-calcium-homeostasis-interactions-of-the-skeletal-system-and-other-organ-systems" + }, + { + "id": "8c013766-9030-5466-9f5f-ed3114c231e0@ccce780", + "title": "Key Terms", + "slug": "6-key-terms" + }, + { + "id": "891f3938-23fe-50f8-8c02-06c5767a8591@ccce780", + "title": "Chapter Review", + "slug": "6-chapter-review" + }, + { + "id": "d431af47-33a1-582b-976b-1ff1330ff99b@ccce780", + "title": "Review Questions", + "slug": "6-review-questions" + }, + { + "id": "a015880f-d13e-55c4-adfb-cb950dcca2ba@ccce780", + "title": "Critical Thinking Questions", + "slug": "6-critical-thinking-questions" + } + ], + "slug": "6-bone-tissue-and-the-skeletal-system" + }, + { + "id": "de1e21a4-9963-53b4-b256-749bbbb2445f@ccce780", + "title": "Chapter 7\n \n Axial Skeleton", + "contents": [ + { + "id": "bd5c53a2-edd5-42c4-97d1-d24c630edc59@", + "title": "Introduction ", + "slug": "7-introduction" + }, + { + "id": "3d4e4991-1e5b-4700-9c46-1a9ab4143bc2@", + "title": "7.1 Divisions of the Skeletal System ", + "slug": "7-1-divisions-of-the-skeletal-system" + }, + { + "id": "d70fa6d3-5301-4364-9060-72d7073c2e97@", + "title": "7.2 The Skull ", + "slug": "7-2-the-skull" + }, + { + "id": "e0231e7f-70fd-426d-87e5-574ce51411cb@", + "title": "7.3 The Vertebral Column ", + "slug": "7-3-the-vertebral-column" + }, + { + "id": "8a707ae2-5d8a-4b82-931d-994f23bdbfb9@", + "title": "7.4 The Thoracic Cage ", + "slug": "7-4-the-thoracic-cage" + }, + { + "id": "bdf533f7-5f77-4819-a75d-1a8371dcbda6@", + "title": "7.5 Embryonic Development of the Axial Skeleton ", + "slug": "7-5-embryonic-development-of-the-axial-skeleton" + }, + { + "id": "9d08081c-69c6-595d-b281-307e93d5d8a7@ccce780", + "title": "Key Terms", + "slug": "7-key-terms" + }, + { + "id": "65d60aa5-20eb-598d-855c-1ecf2ca78034@ccce780", + "title": "Chapter Review", + "slug": "7-chapter-review" + }, + { + "id": "f6e6a0b2-677d-5b85-bb3c-f2af67b69ccb@ccce780", + "title": "Interactive Link Questions", + "slug": "7-interactive-link-questions" + }, + { + "id": "45fe748e-af72-568c-a1a2-eecfbf386c98@ccce780", + "title": "Review Questions", + "slug": "7-review-questions" + }, + { + "id": "187342a5-1e92-5ed8-bd72-7239c120bbd6@ccce780", + "title": "Critical Thinking Questions", + "slug": "7-critical-thinking-questions" + } + ], + "slug": "7-axial-skeleton" + }, + { + "id": "3d503139-b62e-5e4d-baf7-679ba489b498@ccce780", + "title": "Chapter 8\n \n The Appendicular Skeleton", + "contents": [ + { + "id": "99ad5172-c6b9-479b-ae01-7903d5ad571a@", + "title": "Introduction ", + "slug": "8-introduction" + }, + { + "id": "6bbff60e-f9cf-45a1-907b-0c2cecd0cd19@", + "title": "8.1 The Pectoral Girdle ", + "slug": "8-1-the-pectoral-girdle" + }, + { + "id": "1d8b188e-49a6-445b-9f5c-0ac6e52c3286@", + "title": "8.2 Bones of the Upper Limb ", + "slug": "8-2-bones-of-the-upper-limb" + }, + { + "id": "53a1e895-7e9c-4246-b0e9-77c97a2d4825@", + "title": "8.3 The Pelvic Girdle and Pelvis ", + "slug": "8-3-the-pelvic-girdle-and-pelvis" + }, + { + "id": "738a2420-a409-4190-89d1-2d89d4496a4b@", + "title": "8.4 Bones of the Lower Limb ", + "slug": "8-4-bones-of-the-lower-limb" + }, + { + "id": "db6a8313-604d-4bf6-a0a4-b3e433c0d514@", + "title": "8.5 Development of the Appendicular Skeleton ", + "slug": "8-5-development-of-the-appendicular-skeleton" + }, + { + "id": "4e9f57bc-947b-53d2-983b-c365560d197e@ccce780", + "title": "Key Terms", + "slug": "8-key-terms" + }, + { + "id": "24f8e990-dbe3-5da5-bffb-c9a1f8008908@ccce780", + "title": "Chapter Review", + "slug": "8-chapter-review" + }, + { + "id": "f2b88c7a-6303-5b04-b384-3ffbc346a4c3@ccce780", + "title": "Interactive Link Questions", + "slug": "8-interactive-link-questions" + }, + { + "id": "3a0fb4c4-69d2-500f-8a39-1c8c33056e52@ccce780", + "title": "Review Questions", + "slug": "8-review-questions" + }, + { + "id": "4eca3255-5f22-5e00-b8f0-3fba7878e72d@ccce780", + "title": "Critical Thinking Questions", + "slug": "8-critical-thinking-questions" + } + ], + "slug": "8-the-appendicular-skeleton" + }, + { + "id": "11670f71-35b4-50ec-96d8-fc24471d9d92@ccce780", + "title": "Chapter 9\n \n Joints", + "contents": [ + { + "id": "9dd6e90d-5ca5-453c-83ef-280e2c8d3b55@", + "title": "Introduction ", + "slug": "9-introduction" + }, + { + "id": "dfedbd1c-1068-4dc1-abbc-cf6956cb20a4@", + "title": "9.1 Classification of Joints ", + "slug": "9-1-classification-of-joints" + }, + { + "id": "edcb337f-44b2-4749-9e35-104fdb0c53d1@", + "title": "9.2 Fibrous Joints ", + "slug": "9-2-fibrous-joints" + }, + { + "id": "98ad6c26-7214-4875-af25-6c108fc54b92@", + "title": "9.3 Cartilaginous Joints ", + "slug": "9-3-cartilaginous-joints" + }, + { + "id": "6c5b58ca-6c6d-4ab3-8b41-60c8733a3144@", + "title": "9.4 Synovial Joints ", + "slug": "9-4-synovial-joints" + }, + { + "id": "a829ec63-2bac-4a7c-aaf4-87a10e71c27f@", + "title": "9.5 Types of Body Movements ", + "slug": "9-5-types-of-body-movements" + }, + { + "id": "4770f844-6eb0-40bf-96c1-888459ce5219@", + "title": "9.6 Anatomy of Selected Synovial Joints ", + "slug": "9-6-anatomy-of-selected-synovial-joints" + }, + { + "id": "f9102199-b49c-4f82-a0bf-d6349c28e780@", + "title": "9.7 Development of Joints ", + "slug": "9-7-development-of-joints" + }, + { + "id": "5d846e12-aa4b-5e7f-bbf0-acc974b0d50a@ccce780", + "title": "Key Terms", + "slug": "9-key-terms" + }, + { + "id": "54030407-5f40-5b19-a629-161864595094@ccce780", + "title": "Chapter Review", + "slug": "9-chapter-review" + }, + { + "id": "69c4cb51-2810-5aa8-ab10-bd390e657884@ccce780", + "title": "Interactive Link Questions", + "slug": "9-interactive-link-questions" + }, + { + "id": "ab40c8b9-4d22-5b02-a343-8815259e0596@ccce780", + "title": "Review Questions", + "slug": "9-review-questions" + }, + { + "id": "576dd12f-dff1-5b7f-97c6-b9703bfeae8c@ccce780", + "title": "Critical Thinking Questions", + "slug": "9-critical-thinking-questions" + } + ], + "slug": "9-joints" + }, + { + "id": "d523c93e-1750-5d8d-ae8a-45fb5bf81020@ccce780", + "title": "Chapter 10\n \n Muscle Tissue", + "contents": [ + { + "id": "b0a57f14-b80f-415a-986a-1eda4e8fc9ba@", + "title": "Introduction ", + "slug": "10-introduction" + }, + { + "id": "2313ad72-7d31-4cff-9d60-f6ab7db6605a@", + "title": "10.1 Overview of Muscle Tissues ", + "slug": "10-1-overview-of-muscle-tissues" + }, + { + "id": "6df8aab3-1741-4016-b5a9-ac51b52fade0@", + "title": "10.2 Skeletal Muscle ", + "slug": "10-2-skeletal-muscle" + }, + { + "id": "12d59670-933e-45cf-b4b6-c29f2dde2847@", + "title": "10.3 Muscle Fiber Contraction and Relaxation ", + "slug": "10-3-muscle-fiber-contraction-and-relaxation" + }, + { + "id": "01d9bb5d-c4db-4393-8f6f-0d4a132fe7d1@", + "title": "10.4 Nervous System Control of Muscle Tension ", + "slug": "10-4-nervous-system-control-of-muscle-tension" + }, + { + "id": "7b0d1b7e-d03e-4e00-b83a-bde3b260b2be@", + "title": "10.5 Types of Muscle Fibers ", + "slug": "10-5-types-of-muscle-fibers" + }, + { + "id": "cde0d23e-62b4-42df-8b13-0931992a7296@", + "title": "10.6 Exercise and Muscle Performance ", + "slug": "10-6-exercise-and-muscle-performance" + }, + { + "id": "8109c458-4598-464f-b393-506247dfe81d@", + "title": "10.7 Cardiac Muscle Tissue ", + "slug": "10-7-cardiac-muscle-tissue" + }, + { + "id": "2ddb0eed-60ee-4cb6-a4d3-f456d9895b7e@", + "title": "10.8 Smooth Muscle ", + "slug": "10-8-smooth-muscle" + }, + { + "id": "8b4feaba-4c3c-470c-92b3-6ee0d60e4d1a@", + "title": "10.9 Development and Regeneration of Muscle Tissue ", + "slug": "10-9-development-and-regeneration-of-muscle-tissue" + }, + { + "id": "1dac5c84-d8cc-5d3b-9ed8-2a1e4d1efda6@ccce780", + "title": "Key Terms", + "slug": "10-key-terms" + }, + { + "id": "fd753c06-16c6-5180-ba5b-f5128ec076fb@ccce780", + "title": "Chapter Review", + "slug": "10-chapter-review" + }, + { + "id": "0b87109a-f835-5e28-ac7e-4ac451e7746c@ccce780", + "title": "Interactive Link Questions", + "slug": "10-interactive-link-questions" + }, + { + "id": "545f22b2-3cf0-569a-b48b-ea874a80f1c8@ccce780", + "title": "Review Questions", + "slug": "10-review-questions" + }, + { + "id": "8d167386-b262-5536-bfbb-cec21e2ae8e5@ccce780", + "title": "Critical Thinking Questions", + "slug": "10-critical-thinking-questions" + } + ], + "slug": "10-muscle-tissue" + }, + { + "id": "c16b61e8-9aa5-5155-a7f6-86ccee762ff1@ccce780", + "title": "Chapter 11\n \n The Muscular System", + "contents": [ + { + "id": "3a9d64a6-f132-456f-9128-f39210180aa1@", + "title": "Introduction ", + "slug": "11-introduction" + }, + { + "id": "994d37cf-24cc-45b5-9683-851444fab8f3@", + "title": "11.1 Interactions of Skeletal Muscles, Their Fascicle Arrangement, and Their Lever Systems ", + "slug": "11-1-interactions-of-skeletal-muscles-their-fascicle-arrangement-and-their-lever-systems" + }, + { + "id": "14be838f-4105-4057-b97d-155f592a6e3c@", + "title": "11.2 Naming Skeletal Muscles ", + "slug": "11-2-naming-skeletal-muscles" + }, + { + "id": "ff1ab679-4c9d-4b8f-9792-6da5fdba00d3@", + "title": "11.3 Axial Muscles of the Head, Neck, and Back ", + "slug": "11-3-axial-muscles-of-the-head-neck-and-back" + }, + { + "id": "6f7606e8-f229-46a7-9ff2-aceb7f0179a3@", + "title": "11.4 Axial Muscles of the Abdominal Wall, and Thorax ", + "slug": "11-4-axial-muscles-of-the-abdominal-wall-and-thorax" + }, + { + "id": "a8eab9b7-7273-4a46-8c15-3dca136d069c@", + "title": "11.5 Muscles of the Pectoral Girdle and Upper Limbs ", + "slug": "11-5-muscles-of-the-pectoral-girdle-and-upper-limbs" + }, + { + "id": "cbdfe00f-2ef8-4348-9111-9fd4ba7a02c5@", + "title": "11.6 Appendicular Muscles of the Pelvic Girdle and Lower Limbs ", + "slug": "11-6-appendicular-muscles-of-the-pelvic-girdle-and-lower-limbs" + }, + { + "id": "878fea43-a1af-54b6-8149-72ba2d90d43f@ccce780", + "title": "Key Terms", + "slug": "11-key-terms" + }, + { + "id": "736b5f3d-4223-5dc8-b21b-46b6127beb37@ccce780", + "title": "Chapter Review", + "slug": "11-chapter-review" + }, + { + "id": "0ef348d4-7239-56af-bff6-ee9007c09ce6@ccce780", + "title": "Review Questions", + "slug": "11-review-questions" + }, + { + "id": "d1baae58-f4a1-58ed-a1b0-061a4f843745@ccce780", + "title": "Critical Thinking Questions", + "slug": "11-critical-thinking-questions" + } + ], + "slug": "11-the-muscular-system" + } + ], + "slug": "2-support-and-movement" + }, + { + "id": "7ff61b06-53bd-5615-8df3-d154d6473fa1@ccce780", + "title": "Unit 3\n \n Regulation, Integration, and Control", + "contents": [ + { + "id": "c9070b02-b664-54a1-8c92-8d180d508352@ccce780", + "title": "Chapter 12\n \n The Nervous System and Nervous Tissue", + "contents": [ + { + "id": "56a25b8f-f840-4c84-824a-e45f48e33369@", + "title": "Introduction ", + "slug": "12-introduction" + }, + { + "id": "c84b36a7-c47f-458f-a5f3-47651fc91050@", + "title": "12.1 Basic Structure and Function of the Nervous System ", + "slug": "12-1-basic-structure-and-function-of-the-nervous-system" + }, + { + "id": "998a19bd-2f69-482b-9378-d5def5f45584@", + "title": "12.2 Nervous Tissue ", + "slug": "12-2-nervous-tissue" + }, + { + "id": "606c718b-c8b9-4091-b202-0a563fcc423c@", + "title": "12.3 The Function of Nervous Tissue ", + "slug": "12-3-the-function-of-nervous-tissue" + }, + { + "id": "401af334-2930-4731-ba9a-14a346326e63@", + "title": "12.4 The Action Potential ", + "slug": "12-4-the-action-potential" + }, + { + "id": "a7be2faf-a3d9-4a42-ad6d-20ebfdf0f2ed@", + "title": "12.5 Communication Between Neurons ", + "slug": "12-5-communication-between-neurons" + }, + { + "id": "62af7f73-e645-5cda-8586-9c48af4dfc2f@ccce780", + "title": "Key Terms", + "slug": "12-key-terms" + }, + { + "id": "8be1c529-2de3-58c3-85d5-8a2f41d33e31@ccce780", + "title": "Chapter Review", + "slug": "12-chapter-review" + }, + { + "id": "c2eafbb9-a7af-50f4-b625-be6f63ae6bc3@ccce780", + "title": "Interactive Link Questions", + "slug": "12-interactive-link-questions" + }, + { + "id": "905fe0ee-b689-5318-9d5c-61d38c819385@ccce780", + "title": "Review Questions", + "slug": "12-review-questions" + }, + { + "id": "14f3542f-1d66-5eb4-bfe6-b55c3b23657a@ccce780", + "title": "Critical Thinking Questions", + "slug": "12-critical-thinking-questions" + } + ], + "slug": "12-the-nervous-system-and-nervous-tissue" + }, + { + "id": "192ef178-9e24-5105-8818-9c3e69dfb521@ccce780", + "title": "Chapter 13\n \n Anatomy of the Nervous System", + "contents": [ + { + "id": "e2a32b3d-cf2c-4ae2-a234-b17a23e0c172@", + "title": "Introduction ", + "slug": "13-introduction" + }, + { + "id": "b037bde2-ea37-43a5-9102-8d4fcbc623d1@", + "title": "13.1 The Embryologic Perspective ", + "slug": "13-1-the-embryologic-perspective" + }, + { + "id": "f7896ff3-01c7-48a4-b085-61928696b2db@", + "title": "13.2 The Central Nervous System ", + "slug": "13-2-the-central-nervous-system" + }, + { + "id": "0dc079ae-335c-42e8-90ef-a3744fc5d4a9@", + "title": "13.3 Circulation and the Central Nervous System ", + "slug": "13-3-circulation-and-the-central-nervous-system" + }, + { + "id": "e5012e2b-8f3f-4600-a061-b44e3d930f49@", + "title": "13.4 The Peripheral Nervous System ", + "slug": "13-4-the-peripheral-nervous-system" + }, + { + "id": "5bfe1d02-240c-5db8-8d2a-3a81849f159b@ccce780", + "title": "Key Terms", + "slug": "13-key-terms" + }, + { + "id": "de0a7ab0-9b22-579c-8713-c5be60fd152d@ccce780", + "title": "Chapter Review", + "slug": "13-chapter-review" + }, + { + "id": "9079c764-a42d-5785-97c5-0f8ad8d2c47f@ccce780", + "title": "Interactive Link Questions", + "slug": "13-interactive-link-questions" + }, + { + "id": "b89e2878-1425-5e49-aef5-28fbcfeb9d9b@ccce780", + "title": "Review Questions", + "slug": "13-review-questions" + }, + { + "id": "5067ec3a-1217-52d4-8bec-ea42e0153f20@ccce780", + "title": "Critical Thinking Questions", + "slug": "13-critical-thinking-questions" + } + ], + "slug": "13-anatomy-of-the-nervous-system" + }, + { + "id": "03355b47-6df7-5a5f-a3a2-93c7a793dfbe@ccce780", + "title": "Chapter 14\n \n The Somatic Nervous System", + "contents": [ + { + "id": "21ccc413-4bf6-4348-b2d1-880bfbf9cdbf@", + "title": "Introduction ", + "slug": "14-introduction" + }, + { + "id": "b375ea7d-22d5-4f47-b10a-41dd93637896@", + "title": "14.1 Sensory Perception ", + "slug": "14-1-sensory-perception" + }, + { + "id": "29cade27-ba23-4f4a-8cbd-128e72420f31@", + "title": "14.2 Central Processing ", + "slug": "14-2-central-processing" + }, + { + "id": "f3f61efa-f437-4786-a77c-274772f91a39@", + "title": "14.3 Motor Responses ", + "slug": "14-3-motor-responses" + }, + { + "id": "6f17f02f-c1d0-58c9-9884-170a45b9ea05@ccce780", + "title": "Key Terms", + "slug": "14-key-terms" + }, + { + "id": "97adff5e-2c7d-5ab4-89d2-4cd695a57914@ccce780", + "title": "Chapter Review", + "slug": "14-chapter-review" + }, + { + "id": "c2a94e7e-c9c5-5cb0-83ba-fcdadb00797d@ccce780", + "title": "Interactive Link Questions", + "slug": "14-interactive-link-questions" + }, + { + "id": "adb9e446-22fa-5afc-8fe2-4f77e7ca0740@ccce780", + "title": "Review Questions", + "slug": "14-review-questions" + }, + { + "id": "77826014-3ac0-5a16-809d-df99e00b0604@ccce780", + "title": "Critical Thinking Questions", + "slug": "14-critical-thinking-questions" + } + ], + "slug": "14-the-somatic-nervous-system" + }, + { + "id": "5f808e23-bde3-5a99-8699-57be73feee02@ccce780", + "title": "Chapter 15\n \n The Autonomic Nervous System", + "contents": [ + { + "id": "999b7be2-9759-4fcf-9671-cb47d11a51df@", + "title": "Introduction ", + "slug": "15-introduction" + }, + { + "id": "910b6c98-e14e-49ab-95af-e9e2222f994b@", + "title": "15.1 Divisions of the Autonomic Nervous System ", + "slug": "15-1-divisions-of-the-autonomic-nervous-system" + }, + { + "id": "0bae7483-e6a1-47eb-8571-723ea8ed4131@", + "title": "15.2 Autonomic Reflexes and Homeostasis ", + "slug": "15-2-autonomic-reflexes-and-homeostasis" + }, + { + "id": "791a77b2-e40a-4702-b949-51b2526279b1@", + "title": "15.3 Central Control ", + "slug": "15-3-central-control" + }, + { + "id": "50a47698-ef12-448b-a886-0766f478c0d1@", + "title": "15.4 Drugs that Affect the Autonomic System ", + "slug": "15-4-drugs-that-affect-the-autonomic-system" + }, + { + "id": "218d5953-0de7-54ac-b7d5-34c3d10fac94@ccce780", + "title": "Key Terms", + "slug": "15-key-terms" + }, + { + "id": "13c6ad19-504d-5e01-b1b1-f7e494fcf761@ccce780", + "title": "Chapter Review", + "slug": "15-chapter-review" + }, + { + "id": "be425819-4788-5ba2-ab6f-ac1f8c281ad7@ccce780", + "title": "Interactive Link Questions", + "slug": "15-interactive-link-questions" + }, + { + "id": "111aa23f-50af-57f9-a66f-b88257fb1b8c@ccce780", + "title": "Review Questions", + "slug": "15-review-questions" + }, + { + "id": "e25e5433-e774-540a-8e39-4193565d95c3@ccce780", + "title": "Critical Thinking Questions", + "slug": "15-critical-thinking-questions" + } + ], + "slug": "15-the-autonomic-nervous-system" + }, + { + "id": "19f743e0-76b8-5c62-974b-e6942b794ed8@ccce780", + "title": "Chapter 16\n \n The Neurological Exam", + "contents": [ + { + "id": "1f950932-7709-4c1c-b067-37bf6e45dcb0@", + "title": "Introduction ", + "slug": "16-introduction" + }, + { + "id": "59b3e21b-ec02-4fbb-834f-f34175b7d690@", + "title": "16.1 Overview of the Neurological Exam ", + "slug": "16-1-overview-of-the-neurological-exam" + }, + { + "id": "196eacd1-99a2-49db-ba26-ca2f7660a2a5@", + "title": "16.2 The Mental Status Exam ", + "slug": "16-2-the-mental-status-exam" + }, + { + "id": "c25ddddd-be35-4a04-9423-59652b26e707@", + "title": "16.3 The Cranial Nerve Exam ", + "slug": "16-3-the-cranial-nerve-exam" + }, + { + "id": "dabd35da-7b64-47d9-87ef-cbc63b6013a6@", + "title": "16.4 The Sensory and Motor Exams ", + "slug": "16-4-the-sensory-and-motor-exams" + }, + { + "id": "fee32ae5-d90a-4fac-b05d-69ce572b94dd@", + "title": "16.5 The Coordination and Gait Exams ", + "slug": "16-5-the-coordination-and-gait-exams" + }, + { + "id": "43901fef-10e9-5dd4-b7f6-08c7e3729d6b@ccce780", + "title": "Key Terms", + "slug": "16-key-terms" + }, + { + "id": "641401af-03ca-5ee9-b14b-961dec70c7f5@ccce780", + "title": "Chapter Review", + "slug": "16-chapter-review" + }, + { + "id": "4b0b3180-ee11-5d2c-8c3e-75ecff3144e9@ccce780", + "title": "Interactive Link Questions", + "slug": "16-interactive-link-questions" + }, + { + "id": "6cf6953f-97ce-531a-895a-a674c30a656d@ccce780", + "title": "Review Questions", + "slug": "16-review-questions" + }, + { + "id": "bc9cd1f9-12ac-5f95-967f-7aeeff9143eb@ccce780", + "title": "Critical Thinking Questions", + "slug": "16-critical-thinking-questions" + } + ], + "slug": "16-the-neurological-exam" + }, + { + "id": "d252b489-cb88-582b-92c8-690aff647f6b@ccce780", + "title": "Chapter 17\n \n The Endocrine System", + "contents": [ + { + "id": "74a4f492-5770-4f10-8b56-db59df550c5a@", + "title": "Introduction ", + "slug": "17-introduction" + }, + { + "id": "e250c2d0-97c5-4ec2-88fd-20207d1acdde@", + "title": "17.1 An Overview of the Endocrine System ", + "slug": "17-1-an-overview-of-the-endocrine-system" + }, + { + "id": "093ae45b-1c94-42d2-868d-1e50e7895155@", + "title": "17.2 Hormones ", + "slug": "17-2-hormones" + }, + { + "id": "220a804e-2280-4c55-adbc-7a34d4810839@", + "title": "17.3 The Pituitary Gland and Hypothalamus ", + "slug": "17-3-the-pituitary-gland-and-hypothalamus" + }, + { + "id": "6218af68-bd2e-4934-9d00-137fb8384dfb@", + "title": "17.4 The Thyroid Gland ", + "slug": "17-4-the-thyroid-gland" + }, + { + "id": "77840296-c962-4f13-a9c6-d9927605fcf4@", + "title": "17.5 The Parathyroid Glands ", + "slug": "17-5-the-parathyroid-glands" + }, + { + "id": "91a5f6cb-65d9-441e-b08d-eb2cb4c4cc91@", + "title": "17.6 The Adrenal Glands ", + "slug": "17-6-the-adrenal-glands" + }, + { + "id": "80559b95-ffbd-4060-9692-be435e1c8b87@", + "title": "17.7 The Pineal Gland ", + "slug": "17-7-the-pineal-gland" + }, + { + "id": "4716c11b-0e85-4670-8714-69a4ff2c9eb3@", + "title": "17.8 Gonadal and Placental Hormones ", + "slug": "17-8-gonadal-and-placental-hormones" + }, + { + "id": "93048ca2-ed02-4cf8-a310-8a8474fc1b21@", + "title": "17.9 The Endocrine Pancreas ", + "slug": "17-9-the-endocrine-pancreas" + }, + { + "id": "f55249e0-1a97-4f8c-8427-64ab810e8168@", + "title": "17.10 Organs with Secondary Endocrine Functions ", + "slug": "17-10-organs-with-secondary-endocrine-functions" + }, + { + "id": "6828ab03-aa06-412e-9690-0e092309ae8f@", + "title": "17.11 Development and Aging of the Endocrine System ", + "slug": "17-11-development-and-aging-of-the-endocrine-system" + }, + { + "id": "0d7150c4-79f8-555d-9d5b-0b6eab0c2df2@ccce780", + "title": "Key Terms", + "slug": "17-key-terms" + }, + { + "id": "00c3ff7d-d2da-5fe8-a080-0b1248c4d504@ccce780", + "title": "Chapter Review", + "slug": "17-chapter-review" + }, + { + "id": "aaffa216-51e3-5f75-8ee9-66edb8f3ed05@ccce780", + "title": "Interactive Link Questions", + "slug": "17-interactive-link-questions" + }, + { + "id": "d3af01b4-a19a-5bec-945e-d27ba86e36b9@ccce780", + "title": "Review Questions", + "slug": "17-review-questions" + }, + { + "id": "4a34e0fe-4f6f-578d-8c50-31f220543aa9@ccce780", + "title": "Critical Thinking Questions", + "slug": "17-critical-thinking-questions" + } + ], + "slug": "17-the-endocrine-system" + } + ], + "slug": "3-regulation-integration-and-control" + }, + { + "id": "a3cd1524-3713-5a18-b800-f8c79d9aed00@ccce780", + "title": "Unit 4\n \n Fluids and Transport", + "contents": [ + { + "id": "9f1e6e97-2cca-511f-8424-4b8a425f6e7c@ccce780", + "title": "Chapter 18\n \n The Cardiovascular System: Blood", + "contents": [ + { + "id": "5c2fc104-e319-47cc-9040-246115727121@", + "title": "Introduction ", + "slug": "18-introduction" + }, + { + "id": "214ac474-5c9f-4f0b-b979-ff6fd79cb1af@", + "title": "18.1 An Overview of Blood ", + "slug": "18-1-an-overview-of-blood" + }, + { + "id": "019f4238-3211-49d3-8a7f-55a57e8ddca4@", + "title": "18.2 Production of the Formed Elements ", + "slug": "18-2-production-of-the-formed-elements" + }, + { + "id": "f52adcc4-7ee4-477a-b9ee-a23c765587c9@", + "title": "18.3 Erythrocytes ", + "slug": "18-3-erythrocytes" + }, + { + "id": "df109c81-f215-4a89-b366-98aba0123289@", + "title": "18.4 Leukocytes and Platelets ", + "slug": "18-4-leukocytes-and-platelets" + }, + { + "id": "405358a7-d9b4-45ed-b95d-d237519f3fe6@", + "title": "18.5 Hemostasis ", + "slug": "18-5-hemostasis" + }, + { + "id": "9da7a518-da0d-4e20-98e2-cf76482fc6f0@", + "title": "18.6 Blood Typing ", + "slug": "18-6-blood-typing" + }, + { + "id": "ba3675af-1a3c-5545-afe4-dd75c906d203@ccce780", + "title": "Key Terms", + "slug": "18-key-terms" + }, + { + "id": "90b093de-7ccc-56ae-b9fb-25632c362340@ccce780", + "title": "Chapter Review", + "slug": "18-chapter-review" + }, + { + "id": "02c6973d-8708-54b1-bedf-7268f1798698@ccce780", + "title": "Interactive Link Questions", + "slug": "18-interactive-link-questions" + }, + { + "id": "cee770c8-adf9-5ff8-b7b7-97d07beed64f@ccce780", + "title": "Review Questions", + "slug": "18-review-questions" + }, + { + "id": "62e9b717-1c6a-5e5b-b407-206d2b101286@ccce780", + "title": "Critical Thinking Questions", + "slug": "18-critical-thinking-questions" + } + ], + "slug": "18-the-cardiovascular-system-blood" + }, + { + "id": "12811401-dbdf-5389-9f2a-66896e1e1bbd@ccce780", + "title": "Chapter 19\n \n The Cardiovascular System: The Heart", + "contents": [ + { + "id": "152d51bf-1fbb-4daf-ab3a-441bad848e54@", + "title": "Introduction ", + "slug": "19-introduction" + }, + { + "id": "6394ffc1-5482-4aa6-9233-23ad34848fa0@", + "title": "19.1 Heart Anatomy ", + "slug": "19-1-heart-anatomy" + }, + { + "id": "302812e9-2d2d-4e44-8075-4bb75db53f36@", + "title": "19.2 Cardiac Muscle and Electrical Activity ", + "slug": "19-2-cardiac-muscle-and-electrical-activity" + }, + { + "id": "22c3f969-ab9d-4df0-8baf-5b1a99372fac@", + "title": "19.3 Cardiac Cycle ", + "slug": "19-3-cardiac-cycle" + }, + { + "id": "49351638-09b0-4ab1-85cd-e62ba09ffccb@", + "title": "19.4 Cardiac Physiology ", + "slug": "19-4-cardiac-physiology" + }, + { + "id": "1b1b4368-fa60-4837-883f-c8787424f0b1@", + "title": "19.5 Development of the Heart ", + "slug": "19-5-development-of-the-heart" + }, + { + "id": "af5ad208-405f-53e0-be10-b1ec5ff91a80@ccce780", + "title": "Key Terms", + "slug": "19-key-terms" + }, + { + "id": "4e64c49b-ce26-55bc-ada1-4fd190b9e267@ccce780", + "title": "Chapter Review", + "slug": "19-chapter-review" + }, + { + "id": "6c9db66c-d1da-55cc-acbd-25ae191170df@ccce780", + "title": "Interactive Link Questions", + "slug": "19-interactive-link-questions" + }, + { + "id": "0b7161b0-311c-59ad-8cb5-53dfc74e15f2@ccce780", + "title": "Review Questions", + "slug": "19-review-questions" + }, + { + "id": "d313d453-587c-5135-8c28-762fcea76240@ccce780", + "title": "Critical Thinking Questions", + "slug": "19-critical-thinking-questions" + } + ], + "slug": "19-the-cardiovascular-system-the-heart" + }, + { + "id": "a3d4849f-6d03-5f93-a0fa-a5621a2974ca@ccce780", + "title": "Chapter 20\n \n The Cardiovascular System: Blood Vessels and Circulation", + "contents": [ + { + "id": "f7d4aab2-5251-47be-be95-b2224dd12748@", + "title": "Introduction ", + "slug": "20-introduction" + }, + { + "id": "58db2cce-b3d9-4904-9049-80a6cd89264b@", + "title": "20.1 Structure and Function of Blood Vessels ", + "slug": "20-1-structure-and-function-of-blood-vessels" + }, + { + "id": "03841c4c-9e9a-4822-95b2-12273c843a4e@", + "title": "20.2 Blood Flow, Blood Pressure, and Resistance ", + "slug": "20-2-blood-flow-blood-pressure-and-resistance" + }, + { + "id": "797b2238-a9ed-4012-b9af-ce0a25172732@", + "title": "20.3 Capillary Exchange ", + "slug": "20-3-capillary-exchange" + }, + { + "id": "5f4c74cd-b9f4-432c-b12b-24b7f1474a4f@", + "title": "20.4 Homeostatic Regulation of the Vascular System ", + "slug": "20-4-homeostatic-regulation-of-the-vascular-system" + }, + { + "id": "1aa6075b-8678-43f0-891d-cff6252fb2eb@", + "title": "20.5 Circulatory Pathways ", + "slug": "20-5-circulatory-pathways" + }, + { + "id": "31c4ebff-288e-4f63-af7a-fda9be8a2b3c@", + "title": "20.6 Development of Blood Vessels and Fetal Circulation ", + "slug": "20-6-development-of-blood-vessels-and-fetal-circulation" + }, + { + "id": "962cfa92-6b17-5b62-8ad4-138faa6bce16@ccce780", + "title": "Key Terms", + "slug": "20-key-terms" + }, + { + "id": "09b85f9c-880a-59be-b8c8-b8f059214937@ccce780", + "title": "Chapter Review", + "slug": "20-chapter-review" + }, + { + "id": "8581ba82-4794-5897-991a-6337d4a0d5b2@ccce780", + "title": "Interactive Link Questions", + "slug": "20-interactive-link-questions" + }, + { + "id": "93f27999-ab23-5791-bd11-74da68a7b005@ccce780", + "title": "Review Questions", + "slug": "20-review-questions" + }, + { + "id": "07699305-78b7-56c7-a753-3c58293d2f72@ccce780", + "title": "Critical Thinking Questions", + "slug": "20-critical-thinking-questions" + } + ], + "slug": "20-the-cardiovascular-system-blood-vessels-and-circulation" + }, + { + "id": "544b13b0-2346-5233-9eec-6455c071edc1@ccce780", + "title": "Chapter 21\n \n The Lymphatic and Immune System", + "contents": [ + { + "id": "96cb4022-ce26-4698-8964-34ce4aea0f30@", + "title": "Introduction ", + "slug": "21-introduction" + }, + { + "id": "c446645d-d9bc-462d-9e33-8ebd950801ec@", + "title": "21.1 Anatomy of the Lymphatic and Immune Systems ", + "slug": "21-1-anatomy-of-the-lymphatic-and-immune-systems" + }, + { + "id": "3348aa20-102d-4f0b-8e88-5924757ac46d@", + "title": "21.2 Barrier Defenses and the Innate Immune Response ", + "slug": "21-2-barrier-defenses-and-the-innate-immune-response" + }, + { + "id": "9e1ab8e9-3150-4c2a-b466-2c4763df2afe@", + "title": "21.3 The Adaptive Immune Response: T lymphocytes and Their Functional Types ", + "slug": "21-3-the-adaptive-immune-response-t-lymphocytes-and-their-functional-types" + }, + { + "id": "018e7fef-252c-44f3-8918-eaa58b977963@", + "title": "21.4 The Adaptive Immune Response: B-lymphocytes and Antibodies ", + "slug": "21-4-the-adaptive-immune-response-b-lymphocytes-and-antibodies" + }, + { + "id": "bcad1027-425a-4419-b0fc-9d445dfe425f@", + "title": "21.5 The Immune Response against Pathogens ", + "slug": "21-5-the-immune-response-against-pathogens" + }, + { + "id": "66fe13f2-cc16-4533-ac35-bfd708a57cb4@", + "title": "21.6 Diseases Associated with Depressed or Overactive Immune Responses ", + "slug": "21-6-diseases-associated-with-depressed-or-overactive-immune-responses" + }, + { + "id": "a5e05827-2e27-4659-852b-8bb4f7eba36b@", + "title": "21.7 Transplantation and Cancer Immunology ", + "slug": "21-7-transplantation-and-cancer-immunology" + }, + { + "id": "c9ccae4c-2f04-575b-a2ae-4b6d7ebed0f3@ccce780", + "title": "Key Terms", + "slug": "21-key-terms" + }, + { + "id": "da62c854-4640-5f9e-ae52-28331e2b6a02@ccce780", + "title": "Chapter Review", + "slug": "21-chapter-review" + }, + { + "id": "b41e05dc-b7d7-5c5c-b521-c9636693c43a@ccce780", + "title": "Interactive Link Questions", + "slug": "21-interactive-link-questions" + }, + { + "id": "69031abf-a1ed-5136-8d8b-ed07f5d7d66b@ccce780", + "title": "Review Questions", + "slug": "21-review-questions" + }, + { + "id": "20958a76-d7e9-5139-b72f-14031bce4bc7@ccce780", + "title": "Critical Thinking Questions", + "slug": "21-critical-thinking-questions" + } + ], + "slug": "21-the-lymphatic-and-immune-system" + } + ], + "slug": "4-fluids-and-transport" + }, + { + "id": "ef00c82e-181f-58c0-a877-01bf95ed4ff5@ccce780", + "title": "Unit 5\n \n Energy, Maintenance, and Environmental Exchange", + "contents": [ + { + "id": "5dfc6079-aa61-54b0-852e-03652718d6fb@ccce780", + "title": "Chapter 22\n \n The Respiratory System", + "contents": [ + { + "id": "189aeaaa-c442-44a2-8c8b-dd51b0608917@", + "title": "Introduction ", + "slug": "22-introduction" + }, + { + "id": "b76b2090-243e-429a-8144-2e45bda6ab75@", + "title": "22.1 Organs and Structures of the Respiratory System ", + "slug": "22-1-organs-and-structures-of-the-respiratory-system" + }, + { + "id": "b9d25fb9-1fc4-4e4d-8100-e3604ce9a657@", + "title": "22.2 The Lungs ", + "slug": "22-2-the-lungs" + }, + { + "id": "bbaedbf4-4d78-4b7c-bc94-2a742f0f2f8c@", + "title": "22.3 The Process of Breathing ", + "slug": "22-3-the-process-of-breathing" + }, + { + "id": "98519dc2-a601-4193-a1e9-844a560771a4@", + "title": "22.4 Gas Exchange ", + "slug": "22-4-gas-exchange" + }, + { + "id": "decfd7ca-eb64-49fc-a319-cf341109fc2e@", + "title": "22.5 Transport of Gases ", + "slug": "22-5-transport-of-gases" + }, + { + "id": "11673dd9-55e6-46d9-8b78-b06df85246bd@", + "title": "22.6 Modifications in Respiratory Functions ", + "slug": "22-6-modifications-in-respiratory-functions" + }, + { + "id": "65bbf29b-b710-49fa-aab3-d89137a61a0f@", + "title": "22.7 Embryonic Development of the Respiratory System ", + "slug": "22-7-embryonic-development-of-the-respiratory-system" + }, + { + "id": "de125a32-cd7a-53dc-a85c-bbe7a93c0036@ccce780", + "title": "Key Terms", + "slug": "22-key-terms" + }, + { + "id": "a986ecce-d596-58b5-b581-ca473ab8c9e9@ccce780", + "title": "Chapter Review", + "slug": "22-chapter-review" + }, + { + "id": "690045ab-1415-531f-88aa-8899fefe63b8@ccce780", + "title": "Interactive Link Questions", + "slug": "22-interactive-link-questions" + }, + { + "id": "3858c555-c42d-5e49-afb8-ff73454c2a16@ccce780", + "title": "Review Questions", + "slug": "22-review-questions" + }, + { + "id": "03a9019d-6624-5b6b-adc4-b456a4e883a0@ccce780", + "title": "Critical Thinking Questions", + "slug": "22-critical-thinking-questions" + } + ], + "slug": "22-the-respiratory-system" + }, + { + "id": "b136bc2a-899b-51f9-9169-9838574aaead@ccce780", + "title": "Chapter 23\n \n The Digestive System", + "contents": [ + { + "id": "97b0354a-be81-4553-90a7-e2d908fadaf1@", + "title": "Introduction ", + "slug": "23-introduction" + }, + { + "id": "94fbc1ca-dcaa-47ad-94be-2cfeb168c347@", + "title": "23.1 Overview of the Digestive System ", + "slug": "23-1-overview-of-the-digestive-system" + }, + { + "id": "afe83b13-0c1c-4d09-aa0b-4a0590580358@", + "title": "23.2 Digestive System Processes and Regulation ", + "slug": "23-2-digestive-system-processes-and-regulation" + }, + { + "id": "1d9a6ef2-644a-4268-8c39-176170df2c42@", + "title": "23.3 The Mouth, Pharynx, and Esophagus ", + "slug": "23-3-the-mouth-pharynx-and-esophagus" + }, + { + "id": "3bd76f0b-1510-44f7-bf4f-54b7a7fa7452@", + "title": "23.4 The Stomach ", + "slug": "23-4-the-stomach" + }, + { + "id": "430d8e5a-f699-4949-9849-5b4ca1125fa2@", + "title": "23.5 The Small and Large Intestines ", + "slug": "23-5-the-small-and-large-intestines" + }, + { + "id": "7ac81fac-f96f-438b-8a3b-a6866fcc4969@", + "title": "23.6 Accessory Organs in Digestion: The Liver, Pancreas, and Gallbladder ", + "slug": "23-6-accessory-organs-in-digestion-the-liver-pancreas-and-gallbladder" + }, + { + "id": "9a926b86-67d0-4dbe-b5fe-d94581825886@", + "title": "23.7 Chemical Digestion and Absorption: A Closer Look ", + "slug": "23-7-chemical-digestion-and-absorption-a-closer-look" + }, + { + "id": "11ceeea8-f16a-5023-ae17-f2af3c8e0a6b@ccce780", + "title": "Key Terms", + "slug": "23-key-terms" + }, + { + "id": "644fb144-da74-5db2-b197-d9c42d7e2ad5@ccce780", + "title": "Chapter Review", + "slug": "23-chapter-review" + }, + { + "id": "f0884080-4db9-5e5e-a9de-09482f265295@ccce780", + "title": "Interactive Link Questions", + "slug": "23-interactive-link-questions" + }, + { + "id": "4103c9cf-3a84-5c2b-8615-d54e4f7be269@ccce780", + "title": "Review Questions", + "slug": "23-review-questions" + }, + { + "id": "65f4161a-764c-5d8f-b0ac-7bede5cb064e@ccce780", + "title": "Critical Thinking Questions", + "slug": "23-critical-thinking-questions" + } + ], + "slug": "23-the-digestive-system" + }, + { + "id": "3c6e11dd-ba7c-55f6-a109-08ddb2067e1d@ccce780", + "title": "Chapter 24\n \n Metabolism and Nutrition", + "contents": [ + { + "id": "392b3550-20c2-462f-b6d1-0c6240c259f7@", + "title": "Introduction ", + "slug": "24-introduction" + }, + { + "id": "c09b7e1a-3fca-4385-aa21-3431e25ebe47@", + "title": "24.1 Overview of Metabolic Reactions ", + "slug": "24-1-overview-of-metabolic-reactions" + }, + { + "id": "9d68abf9-4c2e-4ef7-88d1-c963c5c844b9@", + "title": "24.2 Carbohydrate Metabolism ", + "slug": "24-2-carbohydrate-metabolism" + }, + { + "id": "5e51a5ed-f4ba-45a4-88b7-ab8ec502d5a1@", + "title": "24.3 Lipid Metabolism ", + "slug": "24-3-lipid-metabolism" + }, + { + "id": "cff35d86-b2aa-42f1-afd5-bcad803a6ade@", + "title": "24.4 Protein Metabolism ", + "slug": "24-4-protein-metabolism" + }, + { + "id": "b22867da-fb2e-45fa-9282-320155b8304a@", + "title": "24.5 Metabolic States of the Body ", + "slug": "24-5-metabolic-states-of-the-body" + }, + { + "id": "c7dbe5f8-d65c-44c1-8a2b-c0cd06b2ebc5@", + "title": "24.6 Energy and Heat Balance ", + "slug": "24-6-energy-and-heat-balance" + }, + { + "id": "f8d795ab-77e9-45cd-a1bd-c4dddb7e6b8b@", + "title": "24.7 Nutrition and Diet ", + "slug": "24-7-nutrition-and-diet" + }, + { + "id": "3db5d0bf-4d11-59c9-b265-99bbfabfc352@ccce780", + "title": "Key Terms", + "slug": "24-key-terms" + }, + { + "id": "627a412e-2b9f-5929-973c-6d33d8ff7617@ccce780", + "title": "Chapter Review", + "slug": "24-chapter-review" + }, + { + "id": "f011449d-c37f-5c36-a49c-0bcbeb109d9a@ccce780", + "title": "Review Questions", + "slug": "24-review-questions" + }, + { + "id": "14fb3c85-d99f-50a1-9843-21dbfbb5649b@ccce780", + "title": "Critical Thinking Questions", + "slug": "24-critical-thinking-questions" + } + ], + "slug": "24-metabolism-and-nutrition" + }, + { + "id": "49335b47-f59b-5892-9f05-7f4ae2c7b8f1@ccce780", + "title": "Chapter 25\n \n The Urinary System", + "contents": [ + { + "id": "439861ef-145e-44e0-8d4a-9b122897575c@", + "title": "Introduction ", + "slug": "25-introduction" + }, + { + "id": "f01808b8-5784-470e-a451-f1c96a109bd1@", + "title": "25.1 Physical Characteristics of Urine ", + "slug": "25-1-physical-characteristics-of-urine" + }, + { + "id": "41e169f3-d147-4074-bf7e-788a2ae28caf@", + "title": "25.2 Gross Anatomy of Urine Transport ", + "slug": "25-2-gross-anatomy-of-urine-transport" + }, + { + "id": "ee5f4420-7ba2-44d6-86f1-85ff5a0e4ada@", + "title": "25.3 Gross Anatomy of the Kidney ", + "slug": "25-3-gross-anatomy-of-the-kidney" + }, + { + "id": "5c9bdf05-dd60-4769-a25a-e2958ff4c7a1@", + "title": "25.4 Microscopic Anatomy of the Kidney ", + "slug": "25-4-microscopic-anatomy-of-the-kidney" + }, + { + "id": "ec43dac9-2850-402e-9a47-7f0fb16bcfb7@", + "title": "25.5 Physiology of Urine Formation ", + "slug": "25-5-physiology-of-urine-formation" + }, + { + "id": "f8201348-cb61-4874-9c86-074ef0fcb9b4@", + "title": "25.6 Tubular Reabsorption ", + "slug": "25-6-tubular-reabsorption" + }, + { + "id": "b8ebb2e5-7a01-46d3-9c16-f258683cd8ed@", + "title": "25.7 Regulation of Renal Blood Flow ", + "slug": "25-7-regulation-of-renal-blood-flow" + }, + { + "id": "d3100137-9cb1-41a9-b898-426d639a251c@", + "title": "25.8 Endocrine Regulation of Kidney Function ", + "slug": "25-8-endocrine-regulation-of-kidney-function" + }, + { + "id": "73ddacd9-89fe-4c8f-83af-299f1788e294@", + "title": "25.9 Regulation of Fluid Volume and Composition ", + "slug": "25-9-regulation-of-fluid-volume-and-composition" + }, + { + "id": "42de4ee5-b6d3-49e9-8c36-18ba1bbd15bc@", + "title": "25.10 The Urinary System and Homeostasis ", + "slug": "25-10-the-urinary-system-and-homeostasis" + }, + { + "id": "67d14ea3-c016-588f-9271-3423b3563519@ccce780", + "title": "Key Terms", + "slug": "25-key-terms" + }, + { + "id": "53c5a3e5-703c-5034-94f6-f5bedc369622@ccce780", + "title": "Chapter Review", + "slug": "25-chapter-review" + }, + { + "id": "0889d62d-48fa-521a-9c0c-ed1df6cf2934@ccce780", + "title": "Review Questions", + "slug": "25-review-questions" + }, + { + "id": "7171c04b-0e80-533e-95cc-9355e11e0ce9@ccce780", + "title": "Critical Thinking Questions", + "slug": "25-critical-thinking-questions" + } + ], + "slug": "25-the-urinary-system" + }, + { + "id": "ea1f9bc5-aba8-5d7c-a807-3be79b6bead4@ccce780", + "title": "Chapter 26\n \n Fluid, Electrolyte, and Acid-Base Balance", + "contents": [ + { + "id": "60beeac6-fc38-429b-9b11-7470fde750ff@", + "title": "Introduction ", + "slug": "26-introduction" + }, + { + "id": "75987407-1137-404b-9a3c-00d115b2dff9@", + "title": "26.1 Body Fluids and Fluid Compartments ", + "slug": "26-1-body-fluids-and-fluid-compartments" + }, + { + "id": "37f1cefd-4084-4c57-ae7e-fd26708c7acb@", + "title": "26.2 Water Balance ", + "slug": "26-2-water-balance" + }, + { + "id": "ca0c80ce-7586-419b-a890-6bdad12ec809@", + "title": "26.3 Electrolyte Balance ", + "slug": "26-3-electrolyte-balance" + }, + { + "id": "3960fe89-f680-46c1-a27d-96c7a84a3c85@", + "title": "26.4 Acid-Base Balance ", + "slug": "26-4-acid-base-balance" + }, + { + "id": "39570e34-df6e-41e7-875d-3d62f92be3c7@", + "title": "26.5 Disorders of Acid-Base Balance ", + "slug": "26-5-disorders-of-acid-base-balance" + }, + { + "id": "6efe61e7-a737-58fd-a725-11da991de733@ccce780", + "title": "Key Terms", + "slug": "26-key-terms" + }, + { + "id": "0cc67128-e86e-5345-af08-33b798556264@ccce780", + "title": "Chapter Review", + "slug": "26-chapter-review" + }, + { + "id": "15714498-a7eb-5709-9ba1-f446f9183af7@ccce780", + "title": "Interactive Link Questions", + "slug": "26-interactive-link-questions" + }, + { + "id": "16a58ccd-840d-50d1-b9fa-a1e3860e93d5@ccce780", + "title": "Review Questions", + "slug": "26-review-questions" + }, + { + "id": "f48fcc04-39f8-5d20-9998-5681ac1b983c@ccce780", + "title": "Critical Thinking Questions", + "slug": "26-critical-thinking-questions" + } + ], + "slug": "26-fluid-electrolyte-and-acid-base-balance" + } + ], + "slug": "5-energy-maintenance-and-environmental-exchange" + }, + { + "id": "7aa4df3b-c212-5e37-a3cd-16da1251f6f8@ccce780", + "title": "Unit 6\n \n Human Development and the Continuity of Life", + "contents": [ + { + "id": "4d209e57-940c-502d-b59c-130511575988@ccce780", + "title": "Chapter 27\n \n The Reproductive System", + "contents": [ + { + "id": "d8adccff-ec42-482f-b883-ce631474ed87@", + "title": "Introduction ", + "slug": "27-introduction" + }, + { + "id": "370d6d11-8e11-4b2b-8fa4-a70c14b0554b@", + "title": "27.1 Anatomy and Physiology of the Male Reproductive System ", + "slug": "27-1-anatomy-and-physiology-of-the-male-reproductive-system" + }, + { + "id": "9cccba49-6490-4e5b-a366-9991b7dbc56c@", + "title": "27.2 Anatomy and Physiology of the Female Reproductive System ", + "slug": "27-2-anatomy-and-physiology-of-the-female-reproductive-system" + }, + { + "id": "eac230d1-6af8-41d5-8b41-a1142f5f98d8@", + "title": "27.3 Development of the Male and Female Reproductive Systems ", + "slug": "27-3-development-of-the-male-and-female-reproductive-systems" + }, + { + "id": "8d9d8c5a-349b-58af-9833-b1f1d113ff27@ccce780", + "title": "Key Terms", + "slug": "27-key-terms" + }, + { + "id": "347577c0-b0a8-58d9-b485-320cf3497a46@ccce780", + "title": "Chapter Review", + "slug": "27-chapter-review" + }, + { + "id": "d0e3bcdf-48bc-58fb-84ce-a1b5773caf60@ccce780", + "title": "Interactive Link Questions", + "slug": "27-interactive-link-questions" + }, + { + "id": "e87c45db-8190-5565-aa4a-9bb7fd484ae9@ccce780", + "title": "Review Questions", + "slug": "27-review-questions" + }, + { + "id": "ed0f870f-daed-50fe-882a-223a6245c27f@ccce780", + "title": "Critical Thinking Questions", + "slug": "27-critical-thinking-questions" + } + ], + "slug": "27-the-reproductive-system" + }, + { + "id": "0245d38a-72a0-5a73-9cf1-323ca3b9b338@ccce780", + "title": "Chapter 28\n \n Development and Inheritance", + "contents": [ + { + "id": "eef20e12-c803-4736-b1e5-0fb7cb0de7c2@", + "title": "Introduction ", + "slug": "28-introduction" + }, + { + "id": "9a0f493d-ab54-4ebe-bf1d-5dc77cdc27c9@", + "title": "28.1 Fertilization ", + "slug": "28-1-fertilization" + }, + { + "id": "1704097d-1012-4798-8ef6-1598d73e7b15@", + "title": "28.2 Embryonic Development ", + "slug": "28-2-embryonic-development" + }, + { + "id": "29b65785-b2c5-4bec-9101-944f05f3c6af@", + "title": "28.3 Fetal Development ", + "slug": "28-3-fetal-development" + }, + { + "id": "f068080a-4376-4d88-a150-33e105a4cad8@", + "title": "28.4 Maternal Changes During Pregnancy, Labor, and Birth ", + "slug": "28-4-maternal-changes-during-pregnancy-labor-and-birth" + }, + { + "id": "09104b1d-6773-42d4-82fa-872d72242250@", + "title": "28.5 Adjustments of the Infant at Birth and Postnatal Stages ", + "slug": "28-5-adjustments-of-the-infant-at-birth-and-postnatal-stages" + }, + { + "id": "5d8588ef-331e-46d8-891e-a8bf32e87730@", + "title": "28.6 Lactation ", + "slug": "28-6-lactation" + }, + { + "id": "ee2dfa4c-b9c6-41ea-8be5-8d8117f4e9d3@", + "title": "28.7 Patterns of Inheritance ", + "slug": "28-7-patterns-of-inheritance" + }, + { + "id": "71c84bce-72ec-57ca-ad74-1088da192bd7@ccce780", + "title": "Key Terms", + "slug": "28-key-terms" + }, + { + "id": "041278ac-e321-5dcc-ba21-7d73937cf857@ccce780", + "title": "Chapter Review", + "slug": "28-chapter-review" + }, + { + "id": "d41a0383-f809-577a-a016-7c08d69f6d82@ccce780", + "title": "Interactive Link Questions", + "slug": "28-interactive-link-questions" + }, + { + "id": "3f7fd045-5563-5530-add5-38cc68b6845e@ccce780", + "title": "Review Questions", + "slug": "28-review-questions" + }, + { + "id": "ddeaa0b5-852f-599f-8f6c-9889523d51d9@ccce780", + "title": "Critical Thinking Questions", + "slug": "28-critical-thinking-questions" + } + ], + "slug": "28-development-and-inheritance" + } + ], + "slug": "6-human-development-and-the-continuity-of-life" + }, + { + "id": "be8cf726-95fa-5783-a71c-0815bdbf8726@ccce780", + "title": "References", + "slug": "references" + }, + { + "id": "808e7285-11d0-51fe-94fb-1747bab95c65@ccce780", + "title": "Index", + "slug": "index" + } + ], + "slug": "anatomy-and-physiology" + }, + "slug": "anatomy-and-physiology", + "id": "14fb4ad7-39a1-4eee-ab6e-3ef2482e3e22", + "version": "ccce780", + "license": { + "url": "http://creativecommons.org/licenses/by/4.0/", + "name": "Creative Commons Attribution License" + }, + "language": "en", + "content": "\n \n Table of Contents\n \n \n \n\n", + "repo_schema_version": 1, + "style_name": "anatomy", + "style_href": "../resources/styles/webview-generic.css" + } + recorded_at: Tue, 13 Dec 2022 19:19:34 GMT +recorded_with: VCR 6.0.0 diff --git a/spec/lib/tasks/books/breakdown.rake_spec.rb b/spec/lib/tasks/books/breakdown.rake_spec.rb new file mode 100644 index 00000000..34a6d572 --- /dev/null +++ b/spec/lib/tasks/books/breakdown.rake_spec.rb @@ -0,0 +1,102 @@ +require 'vcr_helper' +require 'rake' + +RSpec.describe 'books breakdown', type: :rake, vcr: VCR_OPTS do + before :all do + Rake.application.rake_require 'tasks/books/breakdown' + Rake::Task.define_task :environment + end + + before { Rake::Task['books:breakdown'].reenable } + + let(:book_uuid) { '14fb4ad7-39a1-4eee-ab6e-3ef2482e3e22' } + let(:filename) { "#{Rails.root}/tmp/test-#{book_uuid}.csv" } + + it 'returns correct exercise counts' do + # Disable set_slug_tags! + allow_any_instance_of(Exercise).to receive(:set_slug_tags!) + + ex1 = FactoryBot.create :exercise, tags: [ 'context-cnxmod:ada35081-9ec4-4eb8-98b2-3ce350d5427f' ] + ex1.questions.first.stems.first.stylings.first.update_attribute :style, Style::MULTIPLE_CHOICE + FactoryBot.create :styling, stylable: ex1.questions.first.stems.first, style: Style::FREE_RESPONSE + ex1.publication.publish.save! + + ex2 = FactoryBot.create :exercise, tags: [ 'context-cnxmod:5e1ff6e7-0980-4ae0-bc8a-4b591a7c1760' ] + ex2.questions.first.stems.first.stylings.first.update_attribute :style, Style::TRUE_FALSE + FactoryBot.create :styling, stylable: ex2.questions.first.stems.first, style: Style::FREE_RESPONSE + ex2.publication.publish.save! + + ex3 = FactoryBot.create :exercise, tags: [ 'context-cnxmod:5e1ff6e7-0980-4ae0-bc8a-4b591a7c1760' ] + ex3.questions.first.stems.first.stylings.first.update_attribute :style, Style::MULTIPLE_CHOICE + ex3.publication.publish.save! + + ex4 = FactoryBot.create :exercise, tags: [ 'context-cnxmod:59221da8-5fb6-4b3e-9450-079cd616385b' ] + ex4.questions.first.stems.first.stylings.first.update_attribute :style, Style::TRUE_FALSE + ex4.publication.publish.save! + + ex5 = FactoryBot.create :exercise, tags: [ 'context-cnxmod:59221da8-5fb6-4b3e-9450-079cd616385b' ] + ex5.questions.first.stems.first.stylings.first.update_attribute :style, Style::FREE_RESPONSE + ex5.publication.publish.save! + + ex6 = FactoryBot.create :exercise, tags: [ 'context-cnxmod:59221da8-5fb6-4b3e-9450-079cd616385b' ] + ex6.questions.first.stems.first.stylings.first.update_attribute :style, Style::MULTIPLE_CHOICE + ex6.publication.publish.save! + + Rake.application.invoke_task "books:breakdown[#{book_uuid},#{filename}]" + + rows = CSV.read filename + expect(rows.first).to eq([ + 'UUID', 'Type', 'Number', 'Title', 'Total Exercises', '2-step MC/TF', 'MC/TF only', 'FR only' + ]) + expect(rows.second).to eq([ + '14fb4ad7-39a1-4eee-ab6e-3ef2482e3e22', 'Book', '', 'Anatomy and Physiology', '6', '2', '3', '1' + ]) + expect(rows.third).to eq([ + '7c42370b-c3ad-48ac-9620-d15367b882c6', 'Page', '', 'Preface', '0', '0', '0', '0' + ]) + expect(rows.fourth).to eq([ + 'd3ad443b-78fa-551e-a67f-182bd0cb4c77', 'Unit/Chapter', '1', 'Unit 1 Levels of Organization', '6', '2', '3', '1' + ]) + expect(rows.fifth).to eq([ + '5ae6cc38-7b7b-5e9c-a7a4-5d8251baac7f', + 'Unit/Chapter', + '1', + 'Chapter 1 An Introduction to the Human Body', + '6', + '2', + '3', + '1' + ]) + expect(rows[5]).to eq([ + 'ccc4ed14-6c87-408b-9934-7a0d279d853a', 'Page', '', 'Introduction', '0', '0', '0', '0' + ]) + expect(rows[6]).to eq([ + 'ada35081-9ec4-4eb8-98b2-3ce350d5427f', + 'Page', + '1.1', + '1.1 Overview of Anatomy and Physiology', + '1', + '1', + '0', + '0' + ]) + expect(rows[7]).to eq([ + '5e1ff6e7-0980-4ae0-bc8a-4b591a7c1760', + 'Page', + '1.2', + '1.2 Structural Organization of the Human Body', + '2', + '1', + '1', + '0' + ]) + expect(rows[8]).to eq([ + '59221da8-5fb6-4b3e-9450-079cd616385b', 'Page', '1.3', '1.3 Functions of Human Life', '3', '0', '2', '1' + ]) + rows[9..-1].each do |row| + expect(row[4..-1]).to eq(['0', '0', '0', '0']) + end + ensure + FileUtils.rm_f filename + end +end