diff --git a/Gemfile b/Gemfile
index 92dc1653..14de8d03 100644
--- a/Gemfile
+++ b/Gemfile
@@ -19,7 +19,6 @@ gem 'httparty'
gem 'jwt'
gem 'lograge'
gem 'logstash-event'
-gem 'operationcode-airtable'
gem 'operationcode-slack'
gem 'pg', '~> 0.18'
gem 'puma', '~> 3.0'
diff --git a/Gemfile.lock b/Gemfile.lock
index 37be78e8..cb2df053 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -59,8 +59,6 @@ GEM
activerecord (>= 4.2.8)
addressable (2.5.2)
public_suffix (>= 2.0.2, < 4.0)
- airtable (0.0.9)
- httparty
arbre (1.1.1)
activesupport (>= 3.0.0)
arel (7.1.4)
@@ -170,9 +168,6 @@ GEM
nio4r (2.0.0)
nokogiri (1.8.2)
mini_portile2 (~> 2.3.0)
- operationcode-airtable (0.3.0)
- activesupport
- airtable
operationcode-slack (0.6.0)
activesupport
httparty
@@ -309,7 +304,6 @@ DEPENDENCIES
lograge
logstash-event
mocha
- operationcode-airtable
operationcode-slack
pg (~> 0.18)
pry-rails
diff --git a/apiary.apib b/apiary.apib
index 436f7152..21800bca 100644
--- a/apiary.apib
+++ b/apiary.apib
@@ -633,6 +633,100 @@ API endpoints that Operation Code's Rails backend makes available to its React f
"bio": "incentivize vertical e-services"
}
+## Mentorship | Collection [/api/v1/airtable/mentorships]
+
+### Fetches all the mentor, services, and skillsets Airtables data [GET]
+
++ Response 200 (application/json)
+
+ {
+ "mentors" => [
+ {
+ "id" => "rec0SDZDK2DiW4PY9",
+ "name" => "Jack Smith"
+ },
+ ...
+ ],
+ "services" => [
+ {
+ "id" => "rec3ZQMCQsKPKlE2C",
+ "name" => "Mock Interview"
+ },
+ ...
+ ],
+ "skillsets" => [
+ {
+ "id" => "rec5FYXU6jTnXKPHg",
+ "name" => "Javascript"
+ },
+ ...
+ ]
+ }
+
++ Response 422 (application/json)
+
+ {
+ error: "Some error message"
+ }
+
+## Mentorship | Create [/api/v1/airtable/mentorships{?slack_user,services,skillsets,additional_details,mentor_requested}]
+
++ Parameters
+
+ + slack_user (string, required) - The requestee's Slack user handle
+ + services (string, required) - A comma-separated list of Service ids
+ + skillsets (string, required) - A comma-separated list of Skillset names
+ + additional_details (text, optional) - Any additional details the requestee wants to share around their request
+ + mentor_requested (string, optional) - The id of the mentor being requested
+
+### Create a Mentor Request in Airtable (verified users only)[POST]
+
+ + Request (application/json)
+
+ + Headers
+
+ Authorization: Bearer Access-Token
+
+ + Body
+
+ {
+ slack_user: "hpjaj",
+ services: "rec3ZQMCQsKPKlE2C",
+ skillsets: "Javascript",
+ additional_details: "Some additional description.",
+ mentor_requested: "rec0SDZDK2DiW4PY9"
+ }
+
+ + Response 201 (application/json)
+
+ + Body
+
+ {
+ "id" => "recTvgUmwkGMG2HNc",
+ "fields" => {
+ "Slack User" => "johnsmith",
+ "Service" => [
+ "rec3ZQMCQsKPKlE2C"
+ ],
+ "Skillsets" => [
+ "Web (Frontend Development)",
+ "Java",
+ "Study Help"
+ ],
+ "Additional Details" => "Some test description.",
+ "Mentor Requested" => [
+ "rec0SDZDK2DiW4PY9"
+ ],
+ "Created At" => "2018-05-06T19:28:15.000Z"
+ },
+ "createdTime" => "2018-05-06T19:28:15.645Z"
+ }
+
+ + Response 422 (application/json)
+
+ {
+ error: "User must be verified to request mentor services"
+ }
## Request | Request a Mentor [/api/v1/requests{?id,user_id,details,language,service_id,requested_mentor_id,status,assigned_mentor_id}]
+ Parameters
diff --git a/app/controllers/api/v1/airtable/mentorships_controller.rb b/app/controllers/api/v1/airtable/mentorships_controller.rb
new file mode 100644
index 00000000..0eb8d59c
--- /dev/null
+++ b/app/controllers/api/v1/airtable/mentorships_controller.rb
@@ -0,0 +1,43 @@
+module Api
+ module V1
+ module Airtable
+ class MentorshipsController < ApiController
+ before_action :authenticate_user!
+
+ def index
+ mentorship_data = ::Airtable::Mentorship.new.mentor_request_data
+
+ render json: mentorship_data, status: :ok
+ rescue ::Airtable::Error => e
+ render json: { error: e.message }, status: :unprocessable_entity
+ end
+
+ def create
+ verify_user!
+
+ mentor_request = ::Airtable::Mentorship.new.create_mentor_request(mentorship_params)
+
+ render json: mentor_request, status: :created
+ rescue ::Airtable::Error => e
+ render json: { error: e.message }, status: :unprocessable_entity
+ end
+
+ private
+
+ def mentorship_params
+ params.permit(
+ :slack_user,
+ :services,
+ :skillsets,
+ :additional_details,
+ :mentor_requested
+ )
+ end
+
+ def verify_user!
+ raise ::Airtable::Error, 'User must be verified to request mentor services' unless current_user.verified?
+ end
+ end
+ end
+ end
+end
diff --git a/app/jobs/add_user_to_airtables_job.rb b/app/jobs/add_user_to_airtables_job.rb
deleted file mode 100644
index b0762039..00000000
--- a/app/jobs/add_user_to_airtables_job.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-class AddUserToAirtablesJob < ActiveJob::Base
- queue_as :default
-
- def perform(user)
- @user = user
- @airtable = setup_airtable
-
- if user_exists?
- Rails.logger.info "User with email '#{@user.email}' already exists in airtables"
- return
- end
-
- result = @airtable.create(
- email: @user.email,
- zip: @user.zip,
- latitude: @user.latitude,
- longitude: @user.longitude,
- created_at: @user.created_at,
- updated_at: @user.updated_at
- )
- Rails.logger.info "User created. Returned: #{result}"
- result
- end
-
- def setup_airtable
- api_key = OperationCode.fetch_secret_with(name: :airtable_api_key)
- base_id = OperationCode.fetch_secret_with(name: :airtable_add_user_base_id)
- table_id = OperationCode.fetch_secret_with(name: :airtable_add_user_table_name)
- Operationcode::Airtable.new(api_key: api_key, base_id: base_id, table: table_id)
- end
-
- def user_exists?
- @airtable.find_by(email: @user.email)
- end
-end
diff --git a/app/lib/airtable/client.rb b/app/lib/airtable/client.rb
new file mode 100644
index 00000000..586ea103
--- /dev/null
+++ b/app/lib/airtable/client.rb
@@ -0,0 +1,80 @@
+module Airtable
+ class Client
+ include HTTParty
+
+ attr_reader :base_id, :headers, :base_url
+
+ def initialize
+ api_key = Rails.application.secrets.airtable_api_key
+ base_id = Rails.application.secrets.airtable_base_id
+ @headers = { 'Authorization' => "Bearer #{api_key}" }
+ @base_url = "https://api.airtable.com/v0/#{base_id}/"
+ end
+
+ # Fetches all of the records for the passed Airtable
+ #
+ # @param table [String] Name of the table in Airtable
+ # @return [Hash] The parsed_response from Airtable
+ #
+ def get_records_for(table)
+ response = HTTParty.get(url_for(table), headers: headers)
+
+ return_value_for(response)
+ end
+
+ # Creates a new record in the passed Airtable
+ #
+ # @param table [String] Name of the table in Airtable
+ # @param body [JSON] JSON string of request body attributes
+ # @return [Hash] The parsed_response from Airtable
+ #
+ def post_record(table, body)
+ response = HTTParty.post(
+ url_for(table),
+ headers: update_headers,
+ body: body
+ )
+
+ return_value_for(response)
+ end
+
+ private
+
+ def url_for(table)
+ base_url + escaped(table)
+ end
+
+ # URL-encodes the passed string for cases where the string has spaces
+ #
+ # @param url_string [String] a URL string
+ # @return [String] String where any spaces are URL-encoded
+ # @example escaped('Mentor Request') => 'Mentor%20Request'
+ # @see http://ruby-doc.org/stdlib-2.3.3/libdoc/uri/rdoc/URI/Escape.html
+ #
+ # rubocop:disable Lint/UriEscapeUnescape
+ def escaped(url_string)
+ URI.escape url_string
+ end
+ # rubocop:enable Lint/UriEscapeUnescape
+
+ # If the Airtable rate limit is reached, a 429 status code is returned
+ # @see https://airtable.com/appSqQz7spgg0I1jQ/api/docs#curl/ratelimits
+ #
+ def return_value_for(response)
+ case response.code
+ when 200
+ response.parsed_response
+ when 429
+ raise Airtable::Error, 'Exceeded Airtable rate limit. Wait 30 seconds for subsequent requests.'
+ else
+ raise Airtable::Error, response.parsed_response
+ end
+ end
+
+ def update_headers
+ headers.merge(
+ 'Content-Type' => 'application/json'
+ )
+ end
+ end
+end
diff --git a/app/lib/airtable/error.rb b/app/lib/airtable/error.rb
new file mode 100644
index 00000000..d61a9c68
--- /dev/null
+++ b/app/lib/airtable/error.rb
@@ -0,0 +1,4 @@
+module Airtable
+ class Error < StandardError
+ end
+end
diff --git a/app/lib/airtable/mentorship.rb b/app/lib/airtable/mentorship.rb
new file mode 100644
index 00000000..c8d95f22
--- /dev/null
+++ b/app/lib/airtable/mentorship.rb
@@ -0,0 +1,63 @@
+module Airtable
+ class Mentorship
+ attr_reader :client
+
+ def initialize
+ @client = Airtable::Client.new
+ end
+
+ # Fetches all the records from the mentors, services, and skillsets Airtables,
+ # and re-formats the data into a custom hash
+ #
+ # @return [Hash] Hash of mentor, services, and skillsets data
+ #
+ def mentor_request_data
+ {
+ mentors: data_for('Mentors', name_key: 'Full Name'),
+ services: data_for('Services'),
+ skillsets: data_for('Skillsets')
+ }
+ end
+
+ # Creates a new mentor request record in the Mentor Request Airtable
+ #
+ # @param body [Hash] Hash of mentor request attributes
+ # @return [Hash] Hash of the newly created mentor request Airtable record
+ #
+ def create_mentor_request(body)
+ request_body = {
+ 'fields' => {
+ 'Slack User' => body[:slack_user],
+ 'Service' => format_for_posting(body[:services]),
+ 'Skillsets' => format_for_posting(body[:skillsets]),
+ 'Additional Details' => body[:additional_details],
+ 'Mentor Requested' => format_for_posting(body[:mentor_requested])
+ }
+ }.to_json
+
+ client.post_record('Mentor Request', request_body)
+ end
+
+ private
+
+ def data_for(table, name_key: 'Name')
+ records = client.get_records_for(table)
+
+ records['records'].map do |record|
+ {
+ id: record['id'],
+ name: record.dig('fields', name_key)
+ }
+ end
+ end
+
+ # Converts a comman separated string into an array of strings
+ #
+ # @param data_string [String] Comma separated strings of data
+ # @return [Array] An array of stripped strings
+ #
+ def format_for_posting(data_string)
+ data_string.split(',').map(&:strip)
+ end
+ end
+end
diff --git a/app/models/user.rb b/app/models/user.rb
index 461a71f8..841de3e0 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -146,7 +146,6 @@ def name
def welcome_user
invite_to_slack
- add_to_airtables
add_to_send_grid
end
@@ -154,10 +153,6 @@ def invite_to_slack
SlackJobs::InviterJob.perform_later(email)
end
- def add_to_airtables
- AddUserToAirtablesJob.perform_later(self)
- end
-
def add_to_send_grid
AddUserToSendGridJob.perform_later(self)
end
diff --git a/config/routes.rb b/config/routes.rb
index 0b749538..ddd701aa 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -51,6 +51,10 @@
namespace :users do
post '/passwords/reset', to: 'passwords#reset'
end
+
+ namespace :airtable do
+ resources :mentorships, only: [:index, :create]
+ end
end
end
end
diff --git a/config/secrets.yml b/config/secrets.yml
index c905b1d5..5555c48e 100644
--- a/config/secrets.yml
+++ b/config/secrets.yml
@@ -11,6 +11,8 @@
# if you're sharing your code publicly.
development:
+ airtable_api_key: 'some_random_key'
+ airtable_base_id: 'some_random_id'
git_hub_client_id: 'some random id'
git_hub_client_secret: 'some random key'
git_hub_oauth_token: 'some_random_token'
@@ -20,6 +22,8 @@ development:
secret_key_base: 5d44826022fd9ef943fa7d5dcaf76722893b63e264fd8b3d22174992a001ed0bd8bb91131928d9ab2d25b6eccce54ebca320a7676942d05ae3defe96e2f04346
test:
+ airtable_api_key: 'some_random_key'
+ airtable_base_id: 'some_random_id'
git_hub_client_id: 'some random id'
git_hub_client_secret: 'some random key'
git_hub_oauth_token: 'some_random_token'
@@ -31,6 +35,8 @@ test:
# Do not keep production secrets in the repository,
# instead read values from the environment.
production:
+ airtable_api_key: <%= ENV["AIRTABLE_API_KEY"] %>
+ airtable_base_id: <%= ENV["AIRTABLE_BASE_ID"] %>
git_hub_client_id: <%= ENV["GIT_HUB_CLIENT_ID"] %>
git_hub_client_secret: <%= ENV["GIT_HUB_CLIENT_SECRET"] %>
git_hub_oauth_token: <%= ENV["GIT_HUB_OAUTH_TOKEN"] %>
diff --git a/test/cassettes/airtable/client/get_records_successful.yml b/test/cassettes/airtable/client/get_records_successful.yml
new file mode 100644
index 00000000..b0579fbe
--- /dev/null
+++ b/test/cassettes/airtable/client/get_records_successful.yml
@@ -0,0 +1,70 @@
+---
+http_interactions:
+- request:
+ method: get
+ uri: https://api.airtable.com/v0/some_random_id/Services
+ body:
+ encoding: US-ASCII
+ string: ''
+ headers:
+ Authorization:
+ - Bearer some_random_key
+ response:
+ status:
+ code: 200
+ message: OK
+ headers:
+ Access-Control-Allow-Headers:
+ - content-type, authorization, content-length, x-requested-with, x-api-version,
+ x-airtable-application-id, user-agent, x-airtable-user-agent
+ Access-Control-Allow-Methods:
+ - GET,PUT,POST,PATCH,DELETE,OPTIONS
+ Access-Control-Allow-Origin:
+ - "*"
+ Content-Type:
+ - application/json; charset=utf-8
+ Date:
+ - Sun, 06 May 2018 16:39:50 GMT
+ Etag:
+ - W/"1905-MIKFMHVdDXjLEi25UpV9coUOiKs"
+ Server:
+ - Tengine
+ Vary:
+ - Accept-Encoding
+ Content-Length:
+ - '6405'
+ Connection:
+ - keep-alive
+ body:
+ encoding: UTF-8
+ string: '{"records":[{"id":"rec3ZQMCQsKPKlE2C","fields":{"Name":"Mock Interview","Description":"Have
+ one of our mentors conduct a mock coding interview.","Mentors":["recGp2dytDt32ojl6","recRlWEzlSS7xPcMD","recoAB9NcDwlBgHkj","recooZOCPZ5mR6ARp","recBM9iaLwaAee4BQ"],"Mentor
+ Request":["recPM75fIOPfXR51m","recFzUhBO0KY496hy","recpIo6InoCqCKznj","recPRPi6IzrcHPSfR","recJ3q5zTOccP0Wnt","recgvmUOrfbP73wI5","recPr5qFiMDGc9624"],"Mentor
+ Skills":["recbn3OVB3DUPWuI0","recIUKKi6ZDfmamqb","recJR4JPYBISWJVGx"],"Mentor
+ Count":5,"Mentee Requests":0},"createdTime":"2017-03-05T19:10:07.000Z"},{"id":"recKLRUolCxsvWBuF","fields":{"Name":"Code
+ Review","Description":"Have a mentor look over a PR, code exercise or software
+ architecture","Mentors":["recGp2dytDt32ojl6","recRlKczGAcNKN26G","recJkYfbRbuxOXTLA","recRlWEzlSS7xPcMD","recoAB9NcDwlBgHkj","recooZOCPZ5mR6ARp","recsblzySLFHOSl1f","reccKrEc0w88fSs7W","recBM9iaLwaAee4BQ","recQI7eSAFvP5LEhP"],"Mentor
+ Request":["recvhYWculzcAxvi2","recP93VUeYeyhrNVz","recvJu22zZ4xy5FGs","recAF7yKRfpfHjrhK"],"Mentor
+ Skills":["recXxKHRRiglWGPWt","recbn3OVB3DUPWuI0","reczS6v9bDXf9G8CV","recIUKKi6ZDfmamqb","recJR4JPYBISWJVGx"],"Mentor
+ Count":10,"Mentee Requests":0},"createdTime":"2017-03-05T19:09:58.000Z"},{"id":"recN0lJ46BYnsI8z9","fields":{"Name":"Resume
+ Review","Description":"Have one of our mentors look over your resume","Mentors":["recGp2dytDt32ojl6","recRlWEzlSS7xPcMD","recoAB9NcDwlBgHkj","recooZOCPZ5mR6ARp","recsblzySLFHOSl1f","recErAVRZsjwjpULL","recBM9iaLwaAee4BQ","rec8gWUa2agvWe6fj","recQI7eSAFvP5LEhP"],"Mentor
+ Request":["rec0tJIOd8GpmqZ5V","recfwDlYeOARfJoe8","recw5Xw9qkv3VrzE2","reczhwH7rtfs8clc4","recCMQKVmFULiFdAI","recxcgnhlG58HvTmn","recyk8xo77dMdaogb","reclWuAOIzTn1Prvy","rec1CMvTYgcM3c0A5","recufM56SJoHpZP5u","recVNznRKWyKFfQRF","recc1jYPa3GkV1aac","recUAjRcW1Oj3AbNv","rechmP36pKWI8qDLj"],"Mentor
+ Skills":["recXxKHRRiglWGPWt","recIUKKi6ZDfmamqb","recJR4JPYBISWJVGx"],"Mentor
+ Count":9,"Mentee Requests":0},"createdTime":"2017-03-05T19:10:10.000Z"},{"id":"recry8s14qGJhHeOC","fields":{"Name":"General
+ Guidance - Slack Chat","Description":"Chat 1 on 1 with a mentor via slack
+ chat","Mentors":["recGp2dytDt32ojl6","recRlKczGAcNKN26G","recJkYfbRbuxOXTLA","recoAB9NcDwlBgHkj","recooZOCPZ5mR6ARp","recsblzySLFHOSl1f","recErAVRZsjwjpULL","reccKrEc0w88fSs7W","recBM9iaLwaAee4BQ","rec8gWUa2agvWe6fj","recQI7eSAFvP5LEhP"],"Mentees":["recwZDCOVDH3QU3Vq","recQxZqkW2QfrDX7E"],"Mentor
+ Request":["recQlLUpf76DI9uRt","recxTxNKZcYuZPgiV","recWD3SbCvBHCtPEv","reckywOc9xoVAQ4vl","rec7C3aD1Z4WJcGnD","recvEsH0WKwfOIvat","recJf3oHXBNzAdJK8","recUNPVezaf8UNuqi","recMU7Jm7lU8GKSNy","recy9ZOgGCdJ4OjxX","recHVC8HTzXWsZeLg","rec7rx7ilpWb1W88v","rece8pNd1jYbi6Myc","recL3hM3ELIHQjtpD","recISHnxSOMjxKrgi","recYBK56Xp8AVEkYX","recRwfkRluRKOhKM4","recX6K7E4ydO0YjPy","recK1EkZSZCLFA007","recEXEwOmEWnxHdne","recF6AkQMSJaAa7ki","recjMGB93cCTBRAZY","rechii0wYCNIqdw8P","recGuKPSSlzj7mdM1","recBargZbtPOcpotA","rec9aa5x8ZRwA47Zr","recCymG2ALbKUAIXB","rec3aMjN13XEM2cUW","recjnrbWiZEl0brY1","rectLIJFqjVS6WhpM","recIIuZVf0Q9mRchL","recqVu45XffOI48Q5","recLnucDYfq0Mu1cA","recH5papKgKz88dbM","rec5BghMVYJ2KntB9","recYfXnoqFBgxwlDA","recBEPGtjSaA4vyta","recKoXfJZhyCDUFCV","recFekw7gHVMUlndt","rec6H2ZHUVnPU1IhC","recxD9kZnxYjJrut5","recjs0mQjL01oyQgj","recFfWoelZjKcTOb0","recmV1rL9Nfvo6tLx","recTzbQImlYsBi1M6","recSYBMzzdV0Nve8z","recbno9og0y0awr3Z","rechSkc7p41sx5jYq","recQP3XP3MUcpnkE0","recy6qoppSKByp1kH","rec9JNuk4ukpteyIR","recBNrnoQr0LEnBPd","recq4B8aguxGWdcwT","recVFLH8oVxQP4eER","recfV4wkoKGrcrlju","rechCv1ax04rK8kzy","recI0eTHxdoAOsKjQ","rec5jawkKPQKilO7t","recH1uObvhmQw6BBg","recweUyCr42l5ssrN","rec6PmvxU85p59gIK","recUQ2SlgVZmup8jM","rec8g9DWRhfcFhLgl","rec7ufwS4Id3VOke5","rec9T1AP2teWQLtEf","reck20KTFAABo6Be1","recABaMetQGB2Wsr4","reczPcsp85arch31m","recDtkpn4f0HwZgOm","recWg4m7RAN1yuhH4","recYwqjVh4sKOnOCS","recMth82AsU3nngSs","recOLfWE8TwHPzAmd","recRxDOVqyBfSlx9L","recZWgBHqNaWipElw","recb5DnUjyDIS4SRV","recN4ACryNBZj87Mm"],"Mentor
+ Skills":["recCbfP26C9oyF6oZ","recXxKHRRiglWGPWt","recbn3OVB3DUPWuI0","reczS6v9bDXf9G8CV","recJR4JPYBISWJVGx"],"Mentor
+ Count":11,"Mentee Requests":2},"createdTime":"2017-03-05T19:07:42.000Z"},{"id":"rectzgTGoQyy2FVMC","fields":{"Name":"General
+ Guidance - Voice Chat","Description":"Chat 1 on 1 with a mentor via voice
+ or video","Mentors":["recGp2dytDt32ojl6","recJkYfbRbuxOXTLA","recRlWEzlSS7xPcMD","recooZOCPZ5mR6ARp","recsblzySLFHOSl1f","recErAVRZsjwjpULL","reccKrEc0w88fSs7W","recBM9iaLwaAee4BQ","rec8gWUa2agvWe6fj","recQI7eSAFvP5LEhP"],"Mentor
+ Request":["reciES5Dp5sR5UiTD","recPXxsjkxCK30l5w","rec86L1kFMGYOmnGn","rec3Sp9P5gTgMFdub","recWJcrc7yshLW535","recyw52g0meDKcxBS","recTrJNLGZeyZrQso","recle23ZC0KGpzq7f","recI84guIOF7Rm4xN","recFiFgdmv7q8OI0k","recfxAuJUGJZQuyOv","recDsbdLGttUXWmUk","rec2n9fNgVJOvk9N3","recb3rcFjBP66pEsM","recO0gtj5NOox5cvU","rec72rOLM74NmG7mL","recEgw278MbXFPjXV","rec5NufGIw6PLJXcD","recVlscT5IeV7Jy0j","recV2opjArSXUkM85","recoHLGJd46435i6v","rec0WXnwFu0gRnZr6","recTx4fWdyWA5XiAT","recf6fuzdgY4fwgQm","recBVb0ZegUcGmLmn","rechOY0LvnrO5p8uM","recdFALRdOkpObGsO","recaK1RmmTwPbtQch","rechlkZKhQIPebb5X","recM3x8O5Nym2hAEM","recqqkBPcUrpozV8f","reclEsb5Tn63Yz17u","receOS381ThK8L27v","recul4wH0fUXpcku5","rec2CpCt6XTrmKf2I","recF5h7HvxIvPuLJV","recIEqi0xGG12h3q2","recM7Bnv6h9kP1hAb","recWPOb4pbLJLSBBO","recw5yJdWIp6t9Lwg","recd4hW73XpoSgWVq","recuyrOhS8FwT1TdH"],"Mentor
+ Skills":["recCbfP26C9oyF6oZ","recXxKHRRiglWGPWt","reczS6v9bDXf9G8CV","recJR4JPYBISWJVGx"],"Mentor
+ Count":10,"Mentee Requests":0},"createdTime":"2017-03-05T19:07:42.000Z"},{"id":"recxDrpFL9w5tNzkW","fields":{"Name":"Pair
+ Programming","Description":"Spend an hour with a mentor programming together","Mentors":["recJkYfbRbuxOXTLA","recRlWEzlSS7xPcMD","recsblzySLFHOSl1f","reccKrEc0w88fSs7W","recBM9iaLwaAee4BQ","recQI7eSAFvP5LEhP"],"Mentees":["recQxZqkW2QfrDX7E"],"Mentor
+ Request":["recoZWLdBba0RtObw","recfuT67S14yMmRsR","recH75YcWSGHzoDgL","recVcYxcQZNhZBz8R","rec8OYu6F8n9O2pbv","recbLo1LZkH78m0tf","recPz02jtI7F5Vw4d","recDFjF5KTByknL2j","recWka1ynPANo5s3X","recBtZ6gFrjpRFYFM","recAwQTvFeITTfXe8","recv5Zgl4WqF9RXqr","recD78YUBEB5C7lDF","recpgngdrEXCHdoZK","recQddCu26j0MGmO5","recdGPicU3AM6jUnt","recz1vIqJnTTzDcBS","recevtA3LaYZMqSI2"],"Mentor
+ Skills":["recCbfP26C9oyF6oZ","recbn3OVB3DUPWuI0","reczS6v9bDXf9G8CV","recJR4JPYBISWJVGx"],"Mentor
+ Count":6,"Mentee Requests":1},"createdTime":"2017-03-05T19:07:42.000Z"}]}'
+ http_version:
+ recorded_at: Sun, 06 May 2018 16:39:52 GMT
+recorded_with: VCR 3.0.3
diff --git a/test/cassettes/airtable/client/post_record_successful.yml b/test/cassettes/airtable/client/post_record_successful.yml
new file mode 100644
index 00000000..3d44a079
--- /dev/null
+++ b/test/cassettes/airtable/client/post_record_successful.yml
@@ -0,0 +1,48 @@
+---
+http_interactions:
+- request:
+ method: post
+ uri: https://api.airtable.com/v0/some_random_id/Mentor%20Request
+ body:
+ encoding: UTF-8
+ string: '{"fields":{"Slack User":"test_case_1","Service":["rec3ZQMCQsKPKlE2C"],"Skillsets":["Java"],"Additional
+ Details":"Some test description.","Mentor Requested":["rec0SDZDK2DiW4PY9"]}}'
+ headers:
+ Authorization:
+ - Bearer some_random_key
+ Content-Type:
+ - application/json
+ response:
+ status:
+ code: 200
+ message: OK
+ headers:
+ Access-Control-Allow-Headers:
+ - content-type, authorization, content-length, x-requested-with, x-api-version,
+ x-airtable-application-id, user-agent, x-airtable-user-agent
+ Access-Control-Allow-Methods:
+ - GET,PUT,POST,PATCH,DELETE,OPTIONS
+ Access-Control-Allow-Origin:
+ - "*"
+ Content-Type:
+ - application/json; charset=utf-8
+ Date:
+ - Sun, 06 May 2018 16:47:48 GMT
+ Etag:
+ - W/"11d-Xl6S4CZUyAGFCtB7g81qkH8g6uM"
+ Server:
+ - Tengine
+ Vary:
+ - Accept-Encoding
+ Content-Length:
+ - '285'
+ Connection:
+ - keep-alive
+ body:
+ encoding: UTF-8
+ string: '{"id":"recMyCjs0vX1LCd8w","fields":{"Slack User":"test_case_1","Service":["rec3ZQMCQsKPKlE2C"],"Skillsets":["Java"],"Additional
+ Details":"Some test description.","Mentor Requested":["rec0SDZDK2DiW4PY9"],"Created
+ At":"2018-05-06T16:47:48.000Z"},"createdTime":"2018-05-06T16:47:48.353Z"}'
+ http_version:
+ recorded_at: Sun, 06 May 2018 16:47:50 GMT
+recorded_with: VCR 3.0.3
diff --git a/test/cassettes/airtable/mentorship/exceeded_rate_limit.yml b/test/cassettes/airtable/mentorship/exceeded_rate_limit.yml
new file mode 100644
index 00000000..d247498d
--- /dev/null
+++ b/test/cassettes/airtable/mentorship/exceeded_rate_limit.yml
@@ -0,0 +1,912 @@
+---
+http_interactions:
+- request:
+ method: get
+ uri: http://api.airtable.com/v0/some_random_id/Mentors
+ body:
+ encoding: US-ASCII
+ string: ''
+ headers:
+ Authorization:
+ - Bearer some_random_key
+ response:
+ status:
+ code: 301
+ message: Moved Permanently
+ headers:
+ Content-Type:
+ - text/html
+ Date:
+ - Sun, 29 Apr 2018 23:16:23 GMT
+ Location:
+ - https://api.airtable.com/v0/some_random_id/Mentors
+ Server:
+ - Tengine
+ Content-Length:
+ - '278'
+ Connection:
+ - keep-alive
+ body:
+ encoding: UTF-8
+ string: "\r\n\r\n
301
+ Moved Permanently\r\n\r\n301 Moved
+ Permanently
\r\nThe requested resource has been assigned a new permanent
+ URI.
\r\n
Powered by Tengine\r\n\r\n"
+ http_version:
+ recorded_at: Sun, 29 Apr 2018 23:16:23 GMT
+- request:
+ method: get
+ uri: https://api.airtable.com/v0/some_random_id/Mentors
+ body:
+ encoding: US-ASCII
+ string: ''
+ headers:
+ Authorization:
+ - Bearer some_random_key
+ response:
+ status:
+ code: 429
+ message: ''
+ headers:
+ Access-Control-Allow-Headers:
+ - content-type, authorization, content-length, x-requested-with, x-api-version,
+ x-airtable-application-id, user-agent, x-airtable-user-agent
+ Access-Control-Allow-Methods:
+ - GET,PUT,POST,PATCH,DELETE,OPTIONS
+ Access-Control-Allow-Origin:
+ - "*"
+ Content-Type:
+ - application/json; charset=utf-8
+ Date:
+ - Sun, 29 Apr 2018 23:16:23 GMT
+ Etag:
+ - W/"7044-ASsyZ8UBGjpIT3NIjPdImM+kzRQ"
+ Server:
+ - Tengine
+ Vary:
+ - Accept-Encoding
+ Content-Length:
+ - '28740'
+ Connection:
+ - keep-alive
+ body:
+ encoding: ASCII-8BIT
+ string: !binary |-
+ eyJyZWNvcmRzIjpbeyJpZCI6InJlYzBTRFpESzJEaVc0UFk5IiwiZmllbGRz
+ Ijp7IlNsYWNrIE5hbWUiOiJ3YW5ndHJvbiIsIkZ1bGwgTmFtZSI6IkV2YW5z
+ IFdhbmciLCJTa2lsbHNldHMiOlsicmVjSkJCN1p4VE9NNndMNXciLCJyZWM5
+ bG5IWmFEdDJDdlZyWiIsInJlY2FvRXgxcTBRUnB2Y2FSIiwicmVjQ1ZjN3Uz
+ a0NPTmhKZkYiLCJyZWNuUEhEZFdXMUowNmV2TyIsInJlY2s0bGtPVGtmc01S
+ UGtSIl0sIkFjdGl2ZSI6dHJ1ZSwiTWVudG9yIFJlcXVlc3QiOlsicmVjaFNr
+ YzdwNDFzeDVqWXEiLCJyZWN6MXZJcUpuVFR6RGNCUyJdLCJFbWFpbCI6ImV2
+ YW5zLndhbmdAb3BlcmF0aW9uY29kZS5vcmcifSwiY3JlYXRlZFRpbWUiOiIy
+ MDE4LTAyLTIyVDE1OjU5OjQ1LjAwMFoifSx7ImlkIjoicmVjMlFMUTc2dGhB
+ VlFqSDAiLCJmaWVsZHMiOnsiU2xhY2sgTmFtZSI6IkBidWlsdGJ5Y29vcGVy
+ IiwiRnVsbCBOYW1lIjoiRXZhbiBDb29wZXIiLCJTa2lsbHNldHMiOlsicmVj
+ SkJCN1p4VE9NNndMNXciLCJyZWNxbXlDV2pQU0FxZ0NvcCIsInJlY25QSERk
+ V1cxSjA2ZXZPIiwicmVjazRsa09Ua2ZzTVJQa1IiLCJyZWM1RllYVTZqVG5Y
+ S1BIZyJdLCJBY3RpdmUiOnRydWUsIkVtYWlsIjoiZXZhbm5jb29wZXJAZ21h
+ aWwuY29tIn0sImNyZWF0ZWRUaW1lIjoiMjAxOC0wMy0yNVQyMTo0NDo1Mi4w
+ MDBaIn0seyJpZCI6InJlYzM4cHNsN3pJOHAzYWlUIiwiZmllbGRzIjp7IlNs
+ YWNrIE5hbWUiOiJsb25nX2NvbW1vbl9uYW1lIiwiRnVsbCBOYW1lIjoiV2ls
+ bGlhbSBNb250Z29tZXJ5IiwiU2tpbGxzZXRzIjpbInJlY2V3ZjFqTGNPMVFs
+ VmZZIiwicmVjbDhWd28yeHVGaUVySnkiLCJyZWNxbXlDV2pQU0FxZ0NvcCIs
+ InJlY0NWYzd1M2tDT05oSmZGIiwicmVjNUZZWFU2alRuWEtQSGciLCJyZWNm
+ SU56ckZmTEtTSTBHViJdLCJNYXggTWVudGVlcyI6MiwiQmlvIjoiUHJldmlv
+ dXNseSBVUyBBaXIgRm9yY2UgTWVkaWNhbCBMYWIgVGVjaCBhbmQgY3VycmVu
+ dGx5IGEgRGV2ZWxvcGVyIGF0IFRyYXZlbHBvcnQuICBFbmpveWluZyBkYXRh
+ IGFuYWx5c2lzLCBkYXRhIG1hbmlwdWxhdGlvbiwgbGVhcm5pbmcgZnJvbnQg
+ ZW5kIGFuZCBoZWxwaW5nIG90aGVyIHdpdGggcHl0aG9uLCBPQyBjb21tdW5p
+ dHkgbWVtYmVyIHNpbmNlIG1hciAyMDE3IiwiQWN0aXZlIjp0cnVlLCJNZW50
+ b3IgUmVxdWVzdCI6WyJyZWNTWUJNenpkVjBOdmU4eiIsInJlY0VndzI3OE1i
+ WEZQalhWIiwicmVjeTZxb3BwU0tCeXAxa0giLCJyZWNEdGtwbjRmMEh3WmdP
+ bSJdLCJFbWFpbCI6IndpbW83MDgzQGNvbG9yYWRvLmVkdSJ9LCJjcmVhdGVk
+ VGltZSI6IjIwMTgtMDItMDRUMjA6NTM6MjkuMDAwWiJ9LHsiaWQiOiJyZWM0
+ MjVWOWM4RHNRS2NrQyIsImZpZWxkcyI6eyJTbGFjayBOYW1lIjoidmluY2Vu
+ dCIsIkZ1bGwgTmFtZSI6IlZpbmNlbnQgQWJydXp6byIsIlNraWxsc2V0cyI6
+ WyJyZWNKQkI3WnhUT002d0w1dyIsInJlY25QSERkV1cxSjA2ZXZPIiwicmVj
+ RTZHR2tMNHcyVDZwbkMiLCJyZWNmdzc4VmRuRDd0cFpWeiIsInJlYzVGWVhV
+ NmpUblhLUEhnIiwicmVjYW9FeDFxMFFScHZjYVIiLCJyZWNxbXlDV2pQU0Fx
+ Z0NvcCIsInJlY2s0bGtPVGtmc01SUGtSIiwicmVjQ1ZjN3Uza0NPTmhKZkYi
+ LCJyZWNTanJsc0h0V2g5WFdPUCIsInJlY1dCTGZaQWJOZlBTcExyIiwicmVj
+ bjRJT3FyUTV1cEN3d1kiXSwiQWN0aXZlIjp0cnVlLCJFbWFpbCI6InZnYWJy
+ dXp6b0BnbWFpbC5jb20ifSwiY3JlYXRlZFRpbWUiOiIyMDE4LTAzLTI0VDE5
+ OjE0OjA3LjAwMFoifSx7ImlkIjoicmVjNm5BNFdJcmhDdEtXNW4iLCJmaWVs
+ ZHMiOnsiU2xhY2sgTmFtZSI6ImpheSIsIkZ1bGwgTmFtZSI6IkpheSBEb3Jz
+ ZXkiLCJTa2lsbHNldHMiOlsicmVjU2pybHNIdFdoOVhXT1AiLCJyZWM5bG5I
+ WmFEdDJDdlZyWiIsInJlY0NWYzd1M2tDT05oSmZGIl0sIkFjdGl2ZSI6dHJ1
+ ZSwiTWVudG9yIFJlcXVlc3QiOlsicmVjVmxzY1Q1SWVWN0p5MGoiXSwiRW1h
+ aWwiOiJqYXlkb3JzZXlAZmFzdG1haWwuY29tIn0sImNyZWF0ZWRUaW1lIjoi
+ MjAxOC0wMi0xMFQyMTo0MDo0OC4wMDBaIn0seyJpZCI6InJlYzdaU0VCclVK
+ VTlPd1JrIiwiZmllbGRzIjp7IlNsYWNrIE5hbWUiOiJFZHdpbiIsIkZ1bGwg
+ TmFtZSI6IkVkd2luIE0gVCBDYXJ0ZXIiLCJTa2lsbHNldHMiOlsicmVjNUZZ
+ WFU2alRuWEtQSGciLCJyZWNhb0V4MXEwUVJwdmNhUiIsInJlY1dCTGZaQWJO
+ ZlBTcExyIiwicmVjSkhpVlFOSUMzT05NV3MiXSwiQWN0aXZlIjp0cnVlLCJF
+ bWFpbCI6ImNhcnRlci5lZHdpbkBnbWFpbC5jb20ifSwiY3JlYXRlZFRpbWUi
+ OiIyMDE4LTAzLTI3VDE0OjQyOjU0LjAwMFoifSx7ImlkIjoicmVjN2k3SFlN
+ Ulg2QUFyQlMiLCJmaWVsZHMiOnsiU2xhY2sgTmFtZSI6IlBhdHJpY2lhIEdh
+ dGVzIiwiRnVsbCBOYW1lIjoiUGF0cmljaWEgR2F0ZXMiLCJTa2lsbHNldHMi
+ OlsicmVjSW1yb1duZDZwMDJhWHUiLCJyZWNhb0V4MXEwUVJwdmNhUiIsInJl
+ YzVGWVhVNmpUblhLUEhnIl0sIkFjdGl2ZSI6dHJ1ZSwiTWVudG9yIFJlcXVl
+ c3QiOlsicmVjVUFqUmNXMU9qM0FiTnYiXSwiRW1haWwiOiJwYXRyaWNpYS5h
+ bml0YS5nYXRlc0BnbWFpbC5jb20ifSwiY3JlYXRlZFRpbWUiOiIyMDE4LTAz
+ LTI0VDE5OjE0OjA3LjAwMFoifSx7ImlkIjoicmVjOGdXVWEyYWd2V2U2Zmoi
+ LCJmaWVsZHMiOnsiU2xhY2sgTmFtZSI6IktlbiBNdWdyYWdlIiwiRnVsbCBO
+ YW1lIjoiS2VuIE11Z3JhZ2UiLCJTa2lsbHNldHMiOlsicmVjU2pybHNIdFdo
+ OVhXT1AiLCJyZWNhb0V4MXEwUVJwdmNhUiJdLCJXaGF0IHRpbWUgem9uZSBh
+ cmUgeW91IGluPyI6IlBhY2lmaWMiLCJCaW8iOiJTZXBhcmF0ZWQgZnJvbSB0
+ aGUgVVNNQyBpbiAnODkuXG5cbkFmdGVyIHRoYXQgSSB3b3JrZWQgYXMgYSBz
+ eXNhZG1pbiBmb3IgU2VhdHRsZSdzIGZpcnN0IGludGVybmV0IHNlcnZpY2Ug
+ cHJvdmlkZXIgYW5kIHRoZW4gd2VudCBvbiB0byBmb3VuZCBteSBvd24gd2Vi
+ IGRldmVsb3BtZW50IGNvbXBhbnkgaW4gMTk5NC4gSW4gdGhlIHllYXJzIHNp
+ bmNlIEkndmUgaGVsZCBqdXN0IGFib3V0IGV2ZXJ5IHRlY2huaWNhbCByb2xl
+ IGluIGEgc29mdHdhcmUgY29tcGFueSwgZnJvbSBkZXZlbG9wZXIgdG8gQ1RP
+ LiBcblxuSSBjdXJyZW50bHkgdGVhY2ggQ29udGludW91cyBEZWxpdmVyeSBh
+ bmQgRGV2T3BzIGZvciBUaG91Z2h0V29ya3MuIEknbSBhbHNvIG9uZSBvZiB0
+ aGUgZ2xvYmFsIGNvcmUgb3JnYW5pemVycyBmb3IgRGV2T3BzRGF5cyAod2hl
+ cmUgdGhlIHRlcm0gRGV2T3BzIGNvbWVzIGZyb20pIFxuXG5JJ20gaGFwcHkg
+ dG8gb2ZmZXIgaGVscCB0byBhbnlvbmUgd2hvIG5lZWRzIGl0LiBJIHRyYXZl
+ bCBnbG9iYWxseSBmYWlybHkgb2Z0ZW4gc28gdGltZSB6b25lcyBjYW4gYmUg
+ YSBjaGFsbGVuZ2UsIGJ1dCBwcmV0dHkgZmxleGlibGUgb3RoZXJ3aXNlLiIs
+ IkFjdGl2ZSI6dHJ1ZSwiU2VydmljZXMiOlsicmVjcnk4czE0cUdKaEhlT0Mi
+ LCJyZWN0emdUR29ReXkyRlZNQyIsInJlY04wbEo0NkJZbnNJOHo5Il0sIk1l
+ bnRvciBSZXF1ZXN0IjpbInJlY040QUNyeU5CWmo4N01tIl0sIkVtYWlsIjoi
+ a211Z3JhZ2VAZ21haWwuY29tIiwiQ29kZSBvZiBDb25kdWN0IEFjY2VwdGVk
+ PyI6dHJ1ZSwiR3VpZGVib29rIFJlYWQ/Ijp0cnVlfSwiY3JlYXRlZFRpbWUi
+ OiIyMDE4LTA0LTExVDAwOjIxOjE0LjAwMFoifSx7ImlkIjoicmVjOGhDdmRj
+ d0EydFIzdkYiLCJmaWVsZHMiOnsiU2xhY2sgTmFtZSI6IkVyaWsiLCJGdWxs
+ IE5hbWUiOiJFcmlrIEFuZGVyc29uIiwiU2tpbGxzZXRzIjpbInJlYzlsbkha
+ YUR0MkN2VnJaIiwicmVjQkloRGR1SkQzWUxhSHEiLCJyZWNuUEhEZFdXMUow
+ NmV2TyIsInJlY2V3ZjFqTGNPMVFsVmZZIiwicmVjRTZHR2tMNHcyVDZwbkMi
+ LCJyZWN3RmZJcnZQZXEwcUdYRyIsInJlYzhJVktlVHJ3c2dVUGNnIiwicmVj
+ Znc3OFZkbkQ3dHBaVnoiLCJyZWNhb0V4MXEwUVJwdmNhUiIsInJlY3FteUNX
+ alBTQXFnQ29wIiwicmVjazRsa09Ua2ZzTVJQa1IiLCJyZWNDVmM3dTNrQ09O
+ aEpmRiIsInJlY1NqcmxzSHRXaDlYV09QIiwicmVjajJvbWR1N1duSVhMSmsi
+ LCJyZWNXQkxmWkFiTmZQU3BMciIsInJlY3lHNnNjRVR0eFp1VE54Il0sIk1h
+ eCBNZW50ZWVzIjoxLCJFbWFpbCI6ImVhbmRlcnNAcG9ib3guY29tIn0sImNy
+ ZWF0ZWRUaW1lIjoiMjAxOC0wNC0yNFQxNjo1MToyOC4wMDBaIn0seyJpZCI6
+ InJlYzlNY3M1SlRGeFZvS1QxIiwiZmllbGRzIjp7IlNsYWNrIE5hbWUiOiJr
+ eWxlbWgiLCJGdWxsIE5hbWUiOiJLeWxlIEhvbG1iZXJnIiwiU2tpbGxzZXRz
+ IjpbInJlY0pCQjdaeFRPTTZ3TDV3IiwicmVjZXdmMWpMY08xUWxWZlkiLCJy
+ ZWNFNkdHa0w0dzJUNnBuQyIsInJlY0ltcm9XbmQ2cDAyYVh1IiwicmVjcW15
+ Q1dqUFNBcWdDb3AiLCJyZWNDVmM3dTNrQ09OaEpmRiIsInJlY25QSERkV1cx
+ SjA2ZXZPIiwicmVjazRsa09Ua2ZzTVJQa1IiLCJyZWM1RllYVTZqVG5YS1BI
+ ZyJdLCJBY3RpdmUiOnRydWUsIkVtYWlsIjoia3lsZW1oLmVtYWlsQGdtYWls
+ LmNvbSJ9LCJjcmVhdGVkVGltZSI6IjIwMTgtMDMtMjVUMjE6NDQ6NDkuMDAw
+ WiJ9LHsiaWQiOiJyZWNCTTlpYUx3YUFlZTRCUSIsImZpZWxkcyI6eyJTbGFj
+ ayBOYW1lIjoia2V2aW4ua2lrLmxlZSIsIkZ1bGwgTmFtZSI6IktldmluIEsu
+ IExlZSIsIlNraWxsc2V0cyI6WyJyZWNwZFY2dkFtdG1JNXBzTSIsInJlY1R1
+ N3Q1TTBWaUlMbTVBIiwicmVjSkJCN1p4VE9NNndMNXciLCJyZWM5bG5IWmFE
+ dDJDdlZyWiIsInJlY0U2R0drTDR3MlQ2cG5DIl0sIldoYXQgdGltZSB6b25l
+ IGFyZSB5b3UgaW4/IjoiRVNUIiwiQmlvIjoiSm9obiBIYW1wdG9uIHdhcyBh
+ c3NpZ25lZCB0byBtZSBhcyBhIG1lbnRvci4gIFdoZW4gSSBzdGFydGVkIG15
+ IGNyYXp5IGpvdXJuZXkgb2YgZ2V0dGluZyBpbnRvIGNvZGluZywgSSBmZWx0
+ IHN1Y2ggY29tZm9ydCBrbm93aW5nIHRoYXQgdGhlcmUgd2FzIHNvbWVvbmUg
+ aW4gdGhlIHdvcmxkIGtlZXBpbmcgdHJhY2sgb2Ygd2hhdCBJIGFtIGRvaW5n
+ LiAgSSB3YW50IHRvIHByb3ZpZGUgdGhlIHNhbWUgZm9yIG90aGVycy4gICIs
+ IkFjdGl2ZSI6dHJ1ZSwiU2VydmljZXMiOlsicmVjdHpnVEdvUXl5MkZWTUMi
+ LCJyZWNyeThzMTRxR0poSGVPQyIsInJlY3hEcnBGTDl3NXROemtXIiwicmVj
+ S0xSVW9sQ3hzdldCdUYiLCJyZWMzWlFNQ1FzS1BLbEUyQyIsInJlY04wbEo0
+ NkJZbnNJOHo5Il0sIk1lbnRvciBSZXF1ZXN0IjpbInJlY3E0QjhhZ3V4R1dk
+ Y3dUIl0sIkVtYWlsIjoia2V2aW4ua2lrLmxlZUBnbWFpbC5jb20iLCJDb2Rl
+ IG9mIENvbmR1Y3QgQWNjZXB0ZWQ/Ijp0cnVlLCJHdWlkZWJvb2sgUmVhZD8i
+ OnRydWV9LCJjcmVhdGVkVGltZSI6IjIwMTgtMDEtMTJUMTc6MzU6NDguMDAw
+ WiJ9LHsiaWQiOiJyZWNFb2U5WXFzNllNR20xTCIsImZpZWxkcyI6eyJTbGFj
+ ayBOYW1lIjoibWFnZ2kiLCJGdWxsIE5hbWUiOiJNYWdnaSBNb2xpbmEiLCJT
+ a2lsbHNldHMiOlsicmVjVVY5RExFb0sxSnFSVjkiLCJyZWN6bDVsaVFKT0pD
+ YXA3TCIsInJlY3lHbmRnVVlra3lQQ3JTIiwicmVjZjBVYlBXdzI4OUxLanci
+ LCJyZWNSeVBCd04xSkJqOUQ5bCIsInJlY1hlVjRGbTBsSG5VdDJlIl0sIkFj
+ dGl2ZSI6dHJ1ZSwiTWVudG9yIFJlcXVlc3QiOlsicmVjeTlaT2dHQ2RKNE9q
+ eFgiLCJyZWNqczBtUWpMMDFveVFnaiIsInJlY2xFc2I1VG42M1l6MTd1Il0s
+ IkVtYWlsIjoibWFnZ2lAb3BlcmF0aW9uY29kZS5vcmcifSwiY3JlYXRlZFRp
+ bWUiOiIyMDE3LTA2LTA3VDE5OjM1OjUxLjAwMFoifSx7ImlkIjoicmVjRXJB
+ VlJac2p3anBVTEwiLCJmaWVsZHMiOnsiU2xhY2sgTmFtZSI6IkhpbHRzIiwi
+ Tm90ZXMiOiJHbyB0byBZb3VUdWJlIGFuZCBzZWFyY2ggZm9yIFwiYm9iJ3Mg
+ YXV0aG9yIHRhbGtzXCIgdG8gc2VlIG1lLiAgSSBob3N0ZWQgYWJvdXQgMTUg
+ dGFsa3MgYXQgR29vZ2xlLiIsIkZ1bGwgTmFtZSI6IkJvYiBQdXJ2eSIsIlNr
+ aWxsc2V0cyI6WyJyZWNld2YxakxjTzFRbFZmWSIsInJlY0U2R0drTDR3MlQ2
+ cG5DIiwicmVjb3NSdmlMb0JDZ2g2VHEiLCJyZWNJbXJvV25kNnAwMmFYdSIs
+ InJlY2oyb21kdTdXbklYTEprIiwicmVjNUZZWFU2alRuWEtQSGciXSwiV2hh
+ dCB0aW1lIHpvbmUgYXJlIHlvdSBpbj8iOiJQYWNpZmljIiwiQmlvIjoiSSdt
+ IHJldGlyZWQgbm93LCBhZnRlciAxMiB5ZWFycyBhdCBHb29nbGU7ICBhbHNv
+ IGEgc3VjY2Vzc2Z1bCBzdGFydHVwIChQYWNrZXRlZXIpOyAgT3JhY2xlOyAg
+ M0NvbTsgIFhlcm94ICh0aGUgWGVyb3ggU3RhcikuICBNLlMuIGluIENvbXB1
+ dGVyIFNjaWVuY2UgZnJvbSBVLiBvZiBJbGxpbm9pcy4iLCJBY3RpdmUiOnRy
+ dWUsIlNlcnZpY2VzIjpbInJlY3R6Z1RHb1F5eTJGVk1DIiwicmVjcnk4czE0
+ cUdKaEhlT0MiLCJyZWNOMGxKNDZCWW5zSTh6OSJdLCJNZW50b3IgUmVxdWVz
+ dCI6WyJyZWNoT1kwTHZuck81cDh1TSIsInJlYzZQbXZ4VTg1cDU5Z0lLIiwi
+ cmVjVVEyU2xnVlptdXA4ak0iXSwiRW1haWwiOiJicHVydnlAZ21haWwuY29t
+ IiwiQ29kZSBvZiBDb25kdWN0IEFjY2VwdGVkPyI6dHJ1ZSwiR3VpZGVib29r
+ IFJlYWQ/Ijp0cnVlfSwiY3JlYXRlZFRpbWUiOiIyMDE3LTExLTI2VDE1OjUw
+ OjU0LjAwMFoifSx7ImlkIjoicmVjRjRvQnpqRTNKNkEwd28iLCJmaWVsZHMi
+ OnsiU2xhY2sgTmFtZSI6InRvYWR6a3kiLCJGdWxsIE5hbWUiOiJEYXZpZCBI
+ YXJyaXMiLCJTa2lsbHNldHMiOlsicmVjU2pybHNIdFdoOVhXT1AiLCJyZWNK
+ QkI3WnhUT002d0w1dyIsInJlY0U2R0drTDR3MlQ2cG5DIiwicmVjb3NSdmlM
+ b0JDZ2g2VHEiLCJyZWNDVmM3dTNrQ09OaEpmRiIsInJlY09mR3k5dE1lVXdq
+ Tjc4IiwicmVjNUZZWFU2alRuWEtQSGciXSwiTWF4IE1lbnRlZXMiOjIsIldo
+ YXQgdGltZSB6b25lIGFyZSB5b3UgaW4/IjoiTW91bnRhaW4iLCJIb3cgbWFu
+ eSBob3VycyB3b3VsZCB5b3UgbGlrZSB0byBtZW50b3IgZm9yLCBwZXIgbW9u
+ dGg/IjoiNCIsIkJpbyI6IkknbSBhIHByb2Zlc3Npb25hbCBzb2Z0d2FyZSBl
+ bmdpbmVlciB3aXRoIGEgZGVncmVlIGluIENvbXB1dGVyIFNjaWVuY2UuIEkg
+ ZGlkIDExIHllYXJzIGluIHRoZSBBcm15IE5hdGlvbmFsIEd1YXJkLCBpbmNs
+ dWRpbmcgMiBkZXBsb3ltZW50cyB0byBJcmFxLiBJIHNwZWNpYWxpemUgaW4g
+ YmFja2VuZCBzeXN0ZW1zIGZvciBjbG91ZCBzZXJ2aWNlcywgbW9zdGx5IHdy
+ aXR0ZW4gaW4gSmF2YSwgYnV0IHdpdGggZXhwZXJpZW5jZSBpbiBDIyBhbmQg
+ Tm9kZSBhcyB3ZWxsLiBJJ3ZlIGFsc28gZG9uZSBzb21lIG1vYmlsZSB3b3Jr
+ LCBib3RoIGluIG5hdGl2ZSBBbmRyb2lkIGFuZCB1c2luZyB0aGUgWGFtYXJp
+ biBDIyBmcmFtZXdvcmsuIFxuXG5JIGNhbWUgdG8gT3BlcmF0aW9uIENvZGUg
+ dGhyb3VnaCBhIGZyaWVuZCBmcm9tIGEgcHJldmlvdXMgam9iLiBJJ20gaGFw
+ cHkgdG8gbWVudG9yIGFueW9uZSwgYnV0IEknZCBwcmVmZXIgc29tZW9uZSB3
+ aG8gaXMgaW50ZXJlc3RlZCBpbiBzb2Z0d2FyZSBkZXZlbG9wbWVudCBiZWNh
+ dXNlIHRoZXkgaGF2ZSBhIHBhc3Npb24gZm9yIHByb2JsZW0gc29sdmluZyBh
+ bmQgdGVjaG5vbG9neSwgbm90IGp1c3QgYmVjYXVzZSBpdCdzIGEgaGlnaCBw
+ YXlpbmcgam9iLiIsIkFjdGl2ZSI6dHJ1ZSwiTWVudG9yIFJlcXVlc3QiOlsi
+ cmVjUWRkQ3UyNmowTUdtTzUiLCJyZWM1amF3a0tQUUtpbE83dCIsInJlY2RH
+ UGljVTNBTTZqVW50IiwicmVjZU9TMzgxVGhLOEwyN3YiXSwiRW1haWwiOiJ0
+ b2Fkemt5QGdtYWlsLmNvbSJ9LCJjcmVhdGVkVGltZSI6IjIwMTctMDItMTRU
+ MTY6MjI6MDQuMDAwWiJ9LHsiaWQiOiJyZWNHcDJkeXREdDMyb2psNiIsImZp
+ ZWxkcyI6eyJTbGFjayBOYW1lIjoiZnJvc3RtYXR0aGV3IiwiRnVsbCBOYW1l
+ IjoiTWF0dGhldyBGcm9zdCIsIlNraWxsc2V0cyI6WyJyZWNFNkdHa0w0dzJU
+ NnBuQyIsInJlY29zUnZpTG9CQ2doNlRxIiwicmVjOWxuSFphRHQyQ3ZWcloi
+ LCJyZWNxbXlDV2pQU0FxZ0NvcCIsInJlY0NWYzd1M2tDT05oSmZGIiwicmVj
+ NUZZWFU2alRuWEtQSGciXSwiV2hhdCB0aW1lIHpvbmUgYXJlIHlvdSBpbj8i
+ OiJFYXN0ZXJuIiwiQmlvIjoiSSd2ZSBiZWVuIGEgc29mdHdhcmUgZW5naW5l
+ ZXIgZm9yIG92ZXIgZml2ZSB5ZWFycy4gVGhlIGZpcnN0IHR3byB5ZWFycyBJ
+ IHdhcyB0aGUgc29sZSBkZXZlbG9wZXIgYXQgYSBzbWFsbCBJbmZvU2VjIG5v
+ bnByb2ZpdCBhbmQgZm9yIHRoZSBsYXN0IHRocmVlIEkndmUgYmVlbiBhdCBW
+ TXdhcmUgd29ya2luZyBvbiB2Q2xvdWQgRGlyZWN0b3IuIFByaW9yIHRvIHRo
+ YXQgSSB3b3JrZWQgaW4gaG90ZWxzIGFzIGEgYmFucXVldCBtYW5hZ2VyIGJl
+ Zm9yZSBnb2luZyBiYWNrIHRvIHNjaG9vbCB0byBzd2l0Y2ggY2FyZWVycy5c
+ blxuSSBqdXN0IGRpc2NvdmVyZWQgT3BlcmF0aW9uIENvZGUgYSBjb3VwbGUg
+ ZGF5cyBhZ28gdGhhbmtzIHRvIGEgQmFja0NoYW5uZWwgcG9zdCBhbmQgSSdt
+ IGluY3JlZGlibHkgZXhjaXRlZCBieSBpdHMgbWlzc2lvbiBhcyBJIGhhdmUg
+ YSBzdHJvbmcgaW50ZXJlc3QgaW4gaGVscGluZyB0aG9zZSB3aG8gaGF2ZSBz
+ ZXJ2ZWQgKGUuZy4gYXQgVk13YXJlIEknbSBvbiBhbiBpbmZvcm1hbCBjb21t
+ aXR0ZWUgdG8gZW5jb3VyYWdlIChjb21wYW55LXdpZGUpIGhpcmluZyBvZiB2
+ ZXRlcmFucykuIiwiQWN0aXZlIjp0cnVlLCJTZXJ2aWNlcyI6WyJyZWN0emdU
+ R29ReXkyRlZNQyIsInJlY3J5OHMxNHFHSmhIZU9DIiwicmVjS0xSVW9sQ3hz
+ dldCdUYiLCJyZWMzWlFNQ1FzS1BLbEUyQyIsInJlY04wbEo0NkJZbnNJOHo5
+ Il0sIk1lbnRvciBSZXF1ZXN0IjpbInJlY1BYeHNqa3hDSzMwbDV3IiwicmVj
+ N0MzYUQxWjRXSmNHbkQiLCJyZWNCRVBHdGpTYUE0dnl0YSIsInJlY0tvWGZK
+ Wmh5Q0RVRkNWIiwicmVjMUNNdlRZZ2NNM2MwQTUiLCJyZWNmNmZ1emRnWTRm
+ d2dRbSIsInJlY2hDdjFheDA0cks4a3p5IiwicmVjN3Vmd1M0SWQzVk9rZTUi
+ LCJyZWM5VDFBUDJ0ZVdRTHRFZiJdLCJFbWFpbCI6Im1mQG1hdHRoZXdmcm9z
+ dC5jb20ifSwiY3JlYXRlZFRpbWUiOiIyMDE3LTA1LTA3VDE0OjIwOjExLjAw
+ MFoifSx7ImlkIjoicmVjSDhlMlpEdGZ0YkZxUkMiLCJmaWVsZHMiOnsiU2xh
+ Y2sgTmFtZSI6IkppbSBGdW5nIiwiRnVsbCBOYW1lIjoiSmltIEZ1bmciLCJT
+ a2lsbHNldHMiOlsicmVjOWxuSFphRHQyQ3ZWcloiLCJyZWNhb0V4MXEwUVJw
+ dmNhUiIsInJlY3FteUNXalBTQXFnQ29wIiwicmVjQ1ZjN3Uza0NPTmhKZkYi
+ XSwiTWF4IE1lbnRlZXMiOjEsIkFjdGl2ZSI6dHJ1ZSwiRW1haWwiOiJqaW10
+ aGVlbmdpbmVlckBnbWFpbC5jb20ifSwiY3JlYXRlZFRpbWUiOiIyMDE4LTA0
+ LTA0VDAwOjM2OjEwLjAwMFoifSx7ImlkIjoicmVjSVBLSW5TdnhyMzByY0Yi
+ LCJmaWVsZHMiOnsiU2xhY2sgTmFtZSI6ImFiYW50aGVzIiwiRnVsbCBOYW1l
+ IjoiQWxsZW4gQW50aGVzIiwiU2tpbGxzZXRzIjpbInJlYzZpcWhNeEhobFJa
+ cmh4Il0sIkJpbyI6IkZvciB0ZXN0aW5nIiwiTWVudG9yIFJlcXVlc3QiOlsi
+ cmVjV2c0bTdSQU4xeXVoSDQiXSwiRW1haWwiOiJhYmFudGhlc0BnbWFpbC5j
+ b20ifSwiY3JlYXRlZFRpbWUiOiIyMDE4LTAzLTE5VDE4OjA1OjEyLjAwMFoi
+ fSx7ImlkIjoicmVjSjhXaTJMT3FsWTFnYWYiLCJmaWVsZHMiOnsiU2xhY2sg
+ TmFtZSI6ImpkdWNvZXVyIiwiRnVsbCBOYW1lIjoiTWFyayBXYWtzIiwiU2tp
+ bGxzZXRzIjpbInJlY2Z3NzhWZG5EN3RwWlZ6IiwicmVjWkcxNHNTN1lZVmtW
+ M1IiXSwiQWN0aXZlIjp0cnVlLCJFbWFpbCI6ImpkdWNvZXVyQGdtYWlsLmNv
+ bSJ9LCJjcmVhdGVkVGltZSI6IjIwMTgtMDMtMjRUMTk6MTE6MDMuMDAwWiJ9
+ LHsiaWQiOiJyZWNKa1lmYlJidXhPWFRMQSIsImZpZWxkcyI6eyJTbGFjayBO
+ YW1lIjoiaGFycnkiLCJOb3RlcyI6IkhlcmUgYXJlIHNvbWUgcmVsZXZhbnQg
+ bGlua3M6XG5cbmh0dHBzOi8vZ2l0aHViLmNvbS9ocGphalxuaHR0cHM6Ly93
+ d3cubGlua2VkaW4uY29tL2luL2hhcnJ5bWxldmluZS9cbmh0dHBzOi8vYmxv
+ Zy50ZWNoYXRwb3dlci5jb20vQGhhcnJ5bWxldmluZVxuaHR0cDovL2hwamFq
+ LmNvbS9cbmh0dHBzOi8vbWVkaXVtLmNvbS9AaGFycnltbGV2aW5lL2EtdGVh
+ Y2hlcnMtdHdvLWNlbnRzLXdoZW4tbGVhcm5pbmctcnVieS1vbi1yYWlscy1j
+ ZjUxODA4NTgxZDRcblxuVGhhbmtzISIsIkFzc2lnbm1lbnRzIjpbInJlYzJS
+ bmJVMk13Z2Z2dHVkIl0sIkZ1bGwgTmFtZSI6IkhhcnJ5IExldmluZSIsIlNr
+ aWxsc2V0cyI6WyJyZWM5bG5IWmFEdDJDdlZyWiIsInJlY3FteUNXalBTQXFn
+ Q29wIiwicmVjQ1ZjN3Uza0NPTmhKZkYiXSwiV2hhdCB0aW1lIHpvbmUgYXJl
+ IHlvdSBpbj8iOiJNb3VudGFpbiIsIkJpbyI6IknigJltIGEgZnVsbCBzdGFj
+ ayB3ZWIgZGV2ZWxvcGVyIGZvciBQb3dlciBIUkcgKHd3dy5wb3dlcmhyZy5j
+ b20pLCBwcmltYXJpbHkgZm9jdXNzZWQgb24gUnVieSBvbiBSYWlscy4gIEJl
+ aW5nIGZ1bGwgc3RhY2ssIEkgYWxzbyB1c2UgSFRNTCwgQ1NTLCBhbmQgSmF2
+ YVNjcmlwdCBzb21ld2hhdCByZWd1bGFybHkuXG5cbkkgbGl2ZSBpbiBEZW52
+ ZXIsIENPLiAgSSBoYXZlIGJlZW4gYSBzb2Z0d2FyZSBkZXZlbG9wZXIsIHBy
+ b2Zlc3Npb25hbGx5LCBmb3IganVzdCB1bmRlciB0aHJlZSB5ZWFycy4gIEFz
+ IHBhcnQgb2YgbXkgdHJhbnNpdGlvbiBpbnRvIHNvZnR3YXJlIGRldmVsb3Bt
+ ZW50LCBJIGF0dGVuZGVkIGFuZCBncmFkdWF0ZWQgZnJvbSBCbG9jLmlvLlxu
+ XG5QcmlvciB0byBjb2RpbmcgSSB3YXMgaW4gdGVhY2hpbmcgYW5kIGVkdWNh
+ dGlvbiBmb3IgMTIgeWVhcnMuICBJIGRpZCBldmVyeXRoaW5nIGZyb20gVC5B
+ LidpbmcgY29sbGVnZSBLaW5lc2lvbG9neSwgdG8gdHV0b3JpbmcgY2hpbGRy
+ ZW4gaW4gSXRhbHksIHRvIHRlYWNoaW5nIGhpZ2ggc2Nob29sIHNjaWVuY2Us
+ IHRvIGNvcnBvcmF0ZSB0cmFpbmluZywgdG8gdGVjaG5pY2FsIHRyYWluaW5n
+ IGZvciBhIHNvZnR3YXJlIGNvbXBhbnksIHRvIHRlY2huaWNhbCB0cmFpbmlu
+ ZyBkb25lIHZpcnR1YWxseSAodmlhIEdvVG9NZWV0aW5nLCBldGMuKSwgdG8g
+ YmVpbmcgdGhlIGRpcmVjdG9yIG9mIHRyYWluaW5nIGZvciBhIHNvZnR3YXJl
+ IGNvbXBhbnksIHRvIGluc3RydWN0aW9uYWwgZGVzaWduLCB0byBjdXJyaWN1
+ bHVtIGRldmVsb3BtZW50LCBhbmQgbW9yZS5cblxuSSBqb2luZWQgT3BlcmF0
+ aW9uIENvZGUgdG8gc2VlIGlmIEkgY2FuIGxlbmQgYSBoYW5kIHRvIGFueW9u
+ ZSBvdXQgdGhlcmUgbGVhcm5pbmcgdG8gY29kZS4gIEnigJl2ZSBiZWVuIHRo
+ ZXJlLCBJIGFwcHJlY2lhdGUgb3VyIHZldGVyYW5zLCBhbmQgd291bGQgbGlr
+ ZSB0byBoZWxwIGlmIEkgY2FuISIsIkFjdGl2ZSI6dHJ1ZSwiU2VydmljZXMi
+ OlsicmVjdHpnVEdvUXl5MkZWTUMiLCJyZWNyeThzMTRxR0poSGVPQyIsInJl
+ Y3hEcnBGTDl3NXROemtXIiwicmVjS0xSVW9sQ3hzdldCdUYiXSwiTWVudG9y
+ IFJlcXVlc3QiOlsicmVjSmYzb0hYQk56QWRKSzgiLCJyZWNBd1FUdkZlSVRU
+ ZlhlOCIsInJlY3ZKdTIyelo0eHk1RkdzIl0sIkVtYWlsIjoiaG1sZXZpbmVA
+ Z21haWwuY29tIn0sImNyZWF0ZWRUaW1lIjoiMjAxNy0wNS0xNFQwMTo0Njo1
+ NS4wMDBaIn0seyJpZCI6InJlY1AwTk5EZkRxMDJ2bDZZIiwiZmllbGRzIjp7
+ IlNsYWNrIE5hbWUiOiJib25pY2lsbG8ubSIsIkZ1bGwgTmFtZSI6Ik1hcmsg
+ Qm9uaWNpbGxvIiwiU2tpbGxzZXRzIjpbInJlY2V3ZjFqTGNPMVFsVmZZIiwi
+ cmVjb3NSdmlMb0JDZ2g2VHEiLCJyZWNsOFZ3bzJ4dUZpRXJKeSIsInJlY0lt
+ cm9XbmQ2cDAyYVh1IiwicmVjZnc3OFZkbkQ3dHBaVnoiLCJyZWNVVjlETEVv
+ SzFKcVJWOSIsInJlY2FvRXgxcTBRUnB2Y2FSIiwicmVjcW15Q1dqUFNBcWdD
+ b3AiLCJyZWNDVmM3dTNrQ09OaEpmRiIsInJlY1dCTGZaQWJOZlBTcExyIl0s
+ IkFjdGl2ZSI6dHJ1ZSwiTWVudG9yIFJlcXVlc3QiOlsicmVjRjVoN0h2eEl2
+ UHVMSlYiLCJyZWNJRXFpMHhHRzEyaDNxMiJdLCJFbWFpbCI6Im1hcmthYm9u
+ aWNpbGxvQGdtYWlsLmNvbSJ9LCJjcmVhdGVkVGltZSI6IjIwMTgtMDMtMjRU
+ MTk6MTQ6MDcuMDAwWiJ9LHsiaWQiOiJyZWNQcTF5N05nWmZyQmU2bSIsImZp
+ ZWxkcyI6eyJTbGFjayBOYW1lIjoiQW5kcmV3IiwiRnVsbCBOYW1lIjoiQW5k
+ cmV3IFBob21tYXRoZXAiLCJTa2lsbHNldHMiOlsicmVjRTZHR2tMNHcyVDZw
+ bkMiLCJyZWNmdzc4VmRuRDd0cFpWeiIsInJlY0NWYzd1M2tDT05oSmZGIiwi
+ cmVjUTZleDlHRjVpalFUb2QiXSwiTWF4IE1lbnRlZXMiOjEsIkFjdGl2ZSI6
+ dHJ1ZSwiTWVudG9yIFJlcXVlc3QiOlsicmVjWldnQkhxTmFXaXBFbHciLCJy
+ ZWNSeERPVnF5QmZTbHg5TCJdLCJFbWFpbCI6IjEzZGVzdGluaWVzQGdtYWls
+ LmNvbSJ9LCJjcmVhdGVkVGltZSI6IjIwMTgtMDQtMDdUMDM6MzM6MTguMDAw
+ WiJ9LHsiaWQiOiJyZWNRclp2ZlNSNGpuM1JOTyIsImZpZWxkcyI6eyJTbGFj
+ ayBOYW1lIjoiYnJpYW5rYWhycyIsIkZ1bGwgTmFtZSI6IkJyaWFuIEthaHJz
+ IiwiU2tpbGxzZXRzIjpbInJlY1VWOURMRW9LMUpxUlY5IiwicmVjNUZZWFU2
+ alRuWEtQSGciLCJyZWNhb0V4MXEwUVJwdmNhUiIsInJlY3ZER2hHZlBVSzVV
+ d0cwIl0sIk1heCBNZW50ZWVzIjoxLCJFbWFpbCI6ImJyaWFuLmthaHJzQGdt
+ YWlsLmNvbSJ9LCJjcmVhdGVkVGltZSI6IjIwMTgtMDQtMjNUMTg6NTI6NDQu
+ MDAwWiJ9LHsiaWQiOiJyZWNSbEtjekdBY05LTjI2RyIsImZpZWxkcyI6eyJT
+ bGFjayBOYW1lIjoiYm9iLXJvYiIsIkZ1bGwgTmFtZSI6IkJvYiBSb2JlcnRz
+ IiwiU2tpbGxzZXRzIjpbInJlYzlsbkhaYUR0MkN2VnJaIl0sIldoYXQgdGlt
+ ZSB6b25lIGFyZSB5b3UgaW4/IjoiQ2VudHJhbCIsIkJpbyI6IkkgaGF2ZSBi
+ ZWVuIHVzaW5nIFJvUiBmb3IgOCB5ZWFycyBub3cgYW5kIHN0aWxsIGxvdmUg
+ aXQuICBJIGhhdmUgZG9uZSBzb21lIG1lbnRvcmluZyBhbmQgSSBlbmpveSBo
+ ZWxwaW5nIG90aGVycyBsZWFybiBhcyBvdGhlciBoYWQgaGVscGVkIG1lIGlu
+ IG15IHBhc3QuIiwiQWN0aXZlIjp0cnVlLCJTZXJ2aWNlcyI6WyJyZWNyeThz
+ MTRxR0poSGVPQyIsInJlY0tMUlVvbEN4c3ZXQnVGIl0sIk1lbnRvciBSZXF1
+ ZXN0IjpbInJlY0sxRWtaU1pDTEZBMDA3IiwicmVjak1HQjkzY0NUQlJBWlki
+ LCJyZWMwV1hud0Z1MGdSblpyNiIsInJlY0Q3OFlVQkVCNUM3bERGIiwicmVj
+ TXRoODJBc1Uzbm5nU3MiXSwiRW1haWwiOiJjYXJkc2ZhbmJvYkBnbWFpbC5j
+ b20ifSwiY3JlYXRlZFRpbWUiOiIyMDE3LTA1LTEzVDA0OjMwOjM4LjAwMFoi
+ fSx7ImlkIjoicmVjUmxXRXpsU1M3eFBjTUQiLCJmaWVsZHMiOnsiU2xhY2sg
+ TmFtZSI6Im5yeW91bmciLCJOb3RlcyI6IkkgZGlkIG5vdCBoYXZlIGVub3Vn
+ aCBtZW50b3JzIHRoYXQgcmVhbGx5IGhlbHBlZCBteSBwdXNoIG15IGNhcmVl
+ ciBmb3J3YXJkIGFuZCBJIGFtIGxvb2tpbmcgdG8gXCJwYXkgaXQgZm9yd2Fy
+ ZFwiLiBJIGhhdmUgd2FudGVkIHRvIHZvbHVudGVlciBteSB0aW1lIGhlbHBp
+ bmcgdmV0ZXJhbnMgbGlrZSBteXNlbGYgZm9yIHNvbWUgdGltZSBhbmQgSSBm
+ aW5hbGx5IGZvdW5kIE9wZXJhdGlvbiBDb2RlLCB3aGljaCBzZWVtcyBsaWtl
+ IGEgZ29vZCBmaXQuIiwiRnVsbCBOYW1lIjoiTmljIFlvdW5nIiwiU2tpbGxz
+ ZXRzIjpbInJlY1NqcmxzSHRXaDlYV09QIiwicmVjSkJCN1p4VE9NNndMNXci
+ LCJyZWNld2YxakxjTzFRbFZmWSIsInJlY0U2R0drTDR3MlQ2cG5DIiwicmVj
+ Znc3OFZkbkQ3dHBaVnoiLCJyZWNhb0V4MXEwUVJwdmNhUiIsInJlY3FteUNX
+ alBTQXFnQ29wIiwicmVjQ1ZjN3Uza0NPTmhKZkYiLCJyZWNuUEhEZFdXMUow
+ NmV2TyIsInJlY2s0bGtPVGtmc01SUGtSIiwicmVjNUZZWFU2alRuWEtQSGci
+ XSwiV2hhdCB0aW1lIHpvbmUgYXJlIHlvdSBpbj8iOiJNRFQvTVNUIiwiQmlv
+ IjoiSSBqb2luZWQgdGhlIEFybXkgaW4gMjAwNSBhbmQgc2VydmVkIGZvciAz
+ LjUgeWVhcnMgYXMgaW5mYW50cnkuIEFmdGVyIGdldHRpbmcgb3V0IG9mIHRo
+ ZSBtaWxpdGFyeSBJIHdlbnQgZGlyZWN0bHkgdG8gc2Nob29sIGFuZCByZWNl
+ aXZlZCBteSBCYWNoZWxvcnMgb2YgU2NpZW5jZSBpbiBDb21wdXRlciBTY2ll
+ bmNlIGZyb20gdGhlIFVuaXZlcnNpdHkgb2YgQ29sb3JhZG8gYXQgRGVudmVy
+ IGluIDIwMTQuIER1cmluZyBteSBzZW5pb3IgeWVhciBhdCBVbml2ZXJzaXR5
+ IEkgZ290IGEgZnVsbCB0aW1lIHBvc2l0aW9uIGFzIGEgU29mdHdhcmUgRW5n
+ aW5lZXIgbW9zdGx5IHVzaW5nIFB5dGhvbi4gSSBhbSBub3cgZW1wbG95ZWQg
+ ZnVsbCB0aW1lIGFzIGEgRnVsbCBTdGFjayBFbmdpbmVlciBhdCBhIHNvZnR3
+ YXJlIGNvbnN1bHRhbmN5IGJhc2VkIG91dCBvZiBOWUMgY2FsbGVkIFBvc3Rs
+ aWdodC4gSSBhbSBtb3N0bHkgd3JpdGluZyBFUzYgYW5kIFJlYWN0LCBidXQg
+ SSBhbSBjb21mb3J0YWJsZSB1cCBhbmQgZG93biB0aGUgc3RhY2sgb2YgYW4g
+ YXBwbGljYXRpb24uIiwiQWN0aXZlIjp0cnVlLCJTZXJ2aWNlcyI6WyJyZWN0
+ emdUR29ReXkyRlZNQyIsInJlY3hEcnBGTDl3NXROemtXIiwicmVjS0xSVW9s
+ Q3hzdldCdUYiLCJyZWMzWlFNQ1FzS1BLbEUyQyIsInJlY04wbEo0NkJZbnNJ
+ OHo5Il0sIk1lbnRvciBSZXF1ZXN0IjpbInJlY2lFUzVEcDVzUjVVaVREIiwi
+ cmVjOGc5RFdSaGZjRmhMZ2wiXSwiRW1haWwiOiJucnlvdW5nQGdtYWlsLmNv
+ bSJ9LCJjcmVhdGVkVGltZSI6IjIwMTctMDYtMDJUMTg6MjU6MDUuMDAwWiJ9
+ LHsiaWQiOiJyZWNUUW80Q2JLZ2RtVDlYdiIsImZpZWxkcyI6eyJTbGFjayBO
+ YW1lIjoiZGF2aWRfdGh1cmVzb24iLCJGdWxsIE5hbWUiOiJEYXZpZCBUaHVy
+ ZXNvbiIsIlNraWxsc2V0cyI6WyJyZWNld2YxakxjTzFRbFZmWSIsInJlY0U2
+ R0drTDR3MlQ2cG5DIiwicmVjb3NSdmlMb0JDZ2g2VHEiLCJyZWNhb0V4MXEw
+ UVJwdmNhUiIsInJlY3FteUNXalBTQXFnQ29wIiwicmVjQ1ZjN3Uza0NPTmhK
+ ZkYiLCJyZWNqMm9tZHU3V25JWExKayIsInJlYzVGWVhVNmpUblhLUEhnIl0s
+ IkFjdGl2ZSI6dHJ1ZSwiRW1haWwiOiJEYXZpZC5HLlRodXJlc29uQGdtYWls
+ LmNvbSJ9LCJjcmVhdGVkVGltZSI6IjIwMTgtMDMtMjRUMTk6MTI6NDguMDAw
+ WiJ9LHsiaWQiOiJyZWNWMHFKRDI4a2kyUThrciIsImZpZWxkcyI6eyJTbGFj
+ ayBOYW1lIjoiSGVsaW8gQ29sYSIsIkZ1bGwgTmFtZSI6IkhlbGlvIENvbGEi
+ LCJTa2lsbHNldHMiOlsicmVjSkJCN1p4VE9NNndMNXciLCJyZWNFNkdHa0w0
+ dzJUNnBuQyIsInJlYzlsbkhaYUR0MkN2VnJaIiwicmVjcW15Q1dqUFNBcWdD
+ b3AiLCJyZWNDVmM3dTNrQ09OaEpmRiIsInJlY1dCTGZaQWJOZlBTcExyIl0s
+ IkFjdGl2ZSI6dHJ1ZSwiRW1haWwiOiJoZWxpby5jb2xhQGdtYWlsLmNvbSJ9
+ LCJjcmVhdGVkVGltZSI6IjIwMTgtMDMtMjRUMTk6MTM6MjUuMDAwWiJ9LHsi
+ aWQiOiJyZWNXUHl4clkyUUtBa1BWTCIsImZpZWxkcyI6eyJTbGFjayBOYW1l
+ IjoibWlrZXJvZF9zZCIsIkZ1bGwgTmFtZSI6Ik1pY2hhZWwgUm9kcmlndWV6
+ IiwiU2tpbGxzZXRzIjpbInJlY3lHNnNjRVR0eFp1VE54Il0sIkFjdGl2ZSI6
+ dHJ1ZSwiTWVudG9yIFJlcXVlc3QiOlsicmVjVjJvcGpBclNYVWtNODUiLCJy
+ ZWN3NXlKZFdJcDZ0OUx3ZyJdLCJFbWFpbCI6InJvZHJpZ3Vlem1sQGdtYWls
+ LmNvbSJ9LCJjcmVhdGVkVGltZSI6IjIwMTgtMDItMTBUMjI6NDY6MDAuMDAw
+ WiJ9LHsiaWQiOiJyZWNaSUV4Vno3eWhLdGZhOCIsImZpZWxkcyI6eyJTbGFj
+ ayBOYW1lIjoiamhhbXB0b24iLCJOb3RlcyI6Im9wZW4gdG8gaGVscGluZyBh
+ bnlvbmUgdy8gSFRNTC9DU1MgdG9vXG4iLCJBc3NpZ25tZW50cyI6WyJyZWNY
+ SGRYVjExMEZTTUJxdCJdLCJGdWxsIE5hbWUiOiJKb2huIEhhbXB0b24iLCJT
+ a2lsbHNldHMiOlsicmVjSkJCN1p4VE9NNndMNXciLCJyZWNrNGxrT1RrZnNN
+ UlBrUiIsInJlYzVGWVhVNmpUblhLUEhnIl0sIk1heCBNZW50ZWVzIjoxLCJX
+ aGF0IHRpbWUgem9uZSBhcmUgeW91IGluPyI6IkVTVCIsIkhvdyBtYW55IGhv
+ dXJzIHdvdWxkIHlvdSBsaWtlIHRvIG1lbnRvciBmb3IsIHBlciBtb250aD8i
+ OiI0IiwiQmlvIjoiSSdtIGFuIEFybXkgdmV0ZXJhbiBvZiA3IHllYXJzIChh
+ Y3RpdmUtZHV0eSBlbmxpc3RlZCwgNjhLIE1lZGljYWwgTGFib3JhdG9yeSkg
+ d2hvIHN3aXRjaGVkIGNhcmVlcnMgYWZ0ZXIgc2VwYXJhdGluZyBhbmQgaGF2
+ ZSBiZWVuIHdvcmtpbmcgYXMgYSBmdWxsLXRpbWUgZGV2ZWxvcGVyIHNpbmNl
+ IG1pZC0yMDE1LiAgSSBmb3VuZCBPcGVyYXRpb24gQ29kZSBzaG9ydGx5IGJl
+ Zm9yZSB0aGVuLCBhbmQgdGhleSd2ZSBiZWVuIGEgY29uc2lzdGVudCBzb3Vy
+ Y2Ugb2Ygc3VwcG9ydCB0aHJvdWdob3V0LiAgSSdtIGxvb2tpbmcgdG8gZ2l2
+ ZSBiYWNrIGFuZCBoZWxwIG90aGVyIHZldGVyYW5zIHdobyBhcmUgdHJ5aW5n
+ IHRvIGJyZWFrIGludG8gdGhpcyBpbmR1c3RyeS4gIFdoaWxlIEkgYXR0ZW5k
+ ZWQgYSAxMi13ZWVrIGZyb250LWVuZCBib290Y2FtcCwgSSBhbHNvIGNvbnNp
+ ZGVyIG15c2VsZiBhIHNlbGYtdGF1Z2h0IGRldmVsb3Blci4gIEkgd29yayBt
+ b3N0bHkgdy8gSmF2YXNjcmlwdCAvIFR5cGVzY3JpcHQgLyBBbmd1bGFyIGZy
+ b250LWVuZCBzdGFjaywgYnV0IGFsc28gaGF2ZSBleHBlcmllbmNlIHcvIFJl
+ YWN0LCBFbWJlciwgYW5kIHZhcmlvdXMgb3RoZXIgZnJvbnQtZW5kLWlzaCBz
+ dHVmZi4gV291bGQgcHJlZmVyIHRvIG1lbnRvciBhbnlvbmUgd2hvIGhhcyBh
+ IHN0cm9uZyBkZXNpcmUgdG8gZm9jdXMgb24gSmF2YXNjcmlwdCAoZnJvbnQt
+ ZW5kIG9yIGJhY2stZW5kKS4iLCJBY3RpdmUiOnRydWUsIlNxdWFkcyI6WyJy
+ ZWNzSzd2alc1OW0wRW11VCJdLCJNZW50b3IgUmVxdWVzdCI6WyJyZWN2RXNI
+ MFdLd2ZPSXZhdCIsInJlYzNTcDlQNWdUZ01GZHViIiwicmVjRnpVaEJPMEtZ
+ NDk2aHkiLCJyZWNYNks3RTR5ZE8wWWpQeSIsInJlY3BJbzZJbm9DcUNLem5q
+ IiwicmVjREZqRjVLVEJ5a25MMmoiLCJyZWN0TElKRnFqVlM2V2hwTSIsInJl
+ Y1A5M1ZVZVlleWhyTlZ6IiwicmVjVHpiUUltbFlzQmkxTTYiLCJyZWNJMGVU
+ SHhkb0FPc0tqUSJdLCJFbWFpbCI6ImpvaG5fal9oYW1wdG9uQHlhaG9vLmNv
+ bSJ9LCJjcmVhdGVkVGltZSI6IjIwMTYtMTItMDJUMDM6MDU6MTkuMDAwWiJ9
+ LHsiaWQiOiJyZWNiNllFS1phQktBeXQ4eSIsImZpZWxkcyI6eyJTbGFjayBO
+ YW1lIjoiS2VuIE11Z3JhZ2UiLCJGdWxsIE5hbWUiOiJLZW4gTXVncmFnZSIs
+ IlNraWxsc2V0cyI6WyJyZWM1RllYVTZqVG5YS1BIZyIsInJlY2FvRXgxcTBR
+ UnB2Y2FSIiwicmVjU2pybHNIdFdoOVhXT1AiXSwiTWF4IE1lbnRlZXMiOjMs
+ IkFjdGl2ZSI6dHJ1ZSwiRW1haWwiOiJrbXVncmFnZUBnbWFpbC5jb20ifSwi
+ Y3JlYXRlZFRpbWUiOiIyMDE4LTA0LTExVDAwOjI5OjMzLjAwMFoifSx7Imlk
+ IjoicmVjY0tyRWMwdzg4ZlNzN1ciLCJmaWVsZHMiOnsiU2xhY2sgTmFtZSI6
+ Im1vbGphYyIsIkZ1bGwgTmFtZSI6Ik1pbGplbmtvIEN2amV0a28iLCJTa2ls
+ bHNldHMiOlsicmVjTk9OSjhTMXAxVGpmS1YiLCJyZWNKQUN4a1p1SFRaU1Uy
+ aiIsInJlY1NqcmxzSHRXaDlYV09QIiwicmVjb3NSdmlMb0JDZ2g2VHEiLCJy
+ ZWNTeTRIbUlHdElMcVpSdiIsInJlY09mR3k5dE1lVXdqTjc4IiwicmVjWTBH
+ MjhESW5hZkJ4Z1QiLCJyZWNVVjlETEVvSzFKcVJWOSIsInJlY0NWYzd1M2tD
+ T05oSmZGIiwicmVjTTlrYjNTYXpGNDY2eG8iLCJyZWNDS3JQbkhEcU9kbGhB
+ ZyJdLCJXaGF0IHRpbWUgem9uZSBhcmUgeW91IGluPyI6IkNFVCAiLCJCaW8i
+ OiIrIE1pY3Jvc29mdCBGVEUgKFhhbWFyaW4gVGVhbSAtIENvbXBvbmVudHMg
+ VGVhbSkgc2luY2UgMjAxNi4wNy4wMVxuKyBYYW1hcmluIEludGVybmF0aW9u
+ YWwgQ29udHJhY3RvciBzaW5jZSAyMDE0LjAxXG4rIG93bmVyIG9mIHNtYWxs
+ IGJ1c2luZXNzIChIb2xpc3RpY1dhcmUpIC0gdXNlZCB0byB3b3JrIGZvciBY
+ YW1hcmluIGFzIGludGVybmF0aW9uYWwgY29udHJhY3RvclxuKyBmdWxsIHN0
+ YWNrIGRldmVsb3BlciAoLk5FVCwgQyMsIFhhbWFyaW4uKiwgQVNQLm5ldCBD
+ b3JlKVxuKyB2ZXRlcmFuIChDcm9hdGlhbiBQb2xpY2UgYW5kIEFybXkgMTk5
+ MS0xOTkzKSBtaWxpdGFyeSBzZXJ2aWNlIDMrIHllYXJzXG4rIHRyeWluZyB0
+ byBoZWxwIGxvY2FsIHZldGVyYW4gY29tbXVuaXR5IGluIENyb2F0aWEgc28g
+ SSBzZWFyY2hlZCBhcm91bmQgYW5kIGpvaW5lZCBPcGVyYXRpb25Db2RlIGNv
+ cyBJIG1pZ2h0IGJlIGhlbHBmdWxsXG4rIHByZWZlcmVuY2VzIC0gLk5FVCBz
+ dGFjayAoSSByZWFkIGphdmEgYW5kIG9iamMtYywgYnV0IG5vdCB3cml0ZSks
+ IEMvQysrIGlzIGEgYml0IHJ1c3R5IChsYXRlIDE5OTBzKSIsIkFjdGl2ZSI6
+ dHJ1ZSwiU2VydmljZXMiOlsicmVjdHpnVEdvUXl5MkZWTUMiLCJyZWNyeThz
+ MTRxR0poSGVPQyIsInJlY3hEcnBGTDl3NXROemtXIiwicmVjS0xSVW9sQ3hz
+ dldCdUYiXSwiTWVudG9yIFJlcXVlc3QiOlsicmVjSDF1T2J2aG1RdzZCQmci
+ LCJyZWNUeDRmV2R5V0E1WGlBVCIsInJlY3VsNHdIMGZVWHBja3U1IiwicmVj
+ QUJhTWV0UUdCMldzcjQiLCJyZWNldnRBM0xhWVpNcVNJMiJdLCJFbWFpbCI6
+ Im1jdmpldGtvQGhvbGlzdGljd2FyZS5jb20iLCJDb2RlIG9mIENvbmR1Y3Qg
+ QWNjZXB0ZWQ/Ijp0cnVlLCJHdWlkZWJvb2sgUmVhZD8iOnRydWV9LCJjcmVh
+ dGVkVGltZSI6IjIwMTctMTItMjBUMjA6MTI6NDEuMDAwWiJ9LHsiaWQiOiJy
+ ZWNlQmVUeXVXbExmQXBIQiIsImZpZWxkcyI6eyJTbGFjayBOYW1lIjoiZ2F0
+ b3JxdWUiLCJOb3RlcyI6IklmIHlvdSB3YW50IHRvIGxlYXJuIEMsIEMrKywg
+ Q01ha2UsIExpbnV4LCBHaXQsIGVtYmVkZGVkIGRldmljZXMsIGNvbXBpbGVy
+ cywgb3IgT09QIGNvbmNlcHRzIEkgY2FuIGhlbHAgeW91IG91dC4gSWYgeW91
+ IGFyZSB0YWtpbmcgQ1M1MCBmcm9tIGVkWCAtIEkgY2FuIGhlbHAgeW91IHdp
+ dGggeW91ciBhc3NpZ25tZW50cyAod2l0aG91dCBnaXZpbmcgdGhlIGFuc3dl
+ cnMpLiIsIkFzc2lnbm1lbnRzIjpbInJlY0lNRW80dTlJeGNld3o4Il0sIkZ1
+ bGwgTmFtZSI6IlJ5YW4gTGluZGVtYW4iLCJTa2lsbHNldHMiOlsicmVjRko5
+ RlhFNnp4cmQ5aTQiLCJyZWNvc1J2aUxvQkNnaDZUcSIsInJlY2w4VndvMnh1
+ RmlFckp5Il0sIk1heCBNZW50ZWVzIjoyLCJXaGF0IHRpbWUgem9uZSBhcmUg
+ eW91IGluPyI6Ik1TVCIsIkhvdyBtYW55IGhvdXJzIHdvdWxkIHlvdSBsaWtl
+ IHRvIG1lbnRvciBmb3IsIHBlciBtb250aD8iOiIyMCIsIkJpbyI6IkknbSBh
+ IGxhcmdlbHkgc2VsZiB0YXVnaHQgcHJvZ3JhbW1lciB3aXRoIGEgQlMgaW4g
+ Q29tcHV0ZXIgU2NpZW5jZSBhbmQgTVMgaW4gQ29tcHV0ZXIgRW5naW5lZXJp
+ bmcuIEkgY3VycmVudGx5IHdvcmsgZm9yIENBIEVuZ2luZWVyaW5nIHByb3Zp
+ ZGluZyB3aXJlbGVzcyAoODAyLjExLCBaaWdiZWUsIEJsdWV0b290aCwgZXRj
+ KSBjb25zdWx0aW5nIHNlcnZpY2VzIG1haW5seSBmb3IgUXVhbENvbW0gQXRo
+ ZXJvcyBjdXN0b21lcnMuXG5JIGxvdmUgaGVscGluZyBwZW9wbGUgbGVhcm4g
+ dG8gcHJvZ3JhbSBhbmQgaW1wb3J0YW50IGNvbmNlcHRzIGxpa2UgZGF0YSBz
+ dHJ1Y3R1cmVzLCB0aHJlYWRpbmcsIGFyY2hpdGVjdHVyZSwgYW5kIGFsZ29y
+ aXRobXMuIEluIG15IHNwYXJlIHRpbWUgSSBsaWtlIHRvIHJlYWQsIHN0dWR5
+ IG5ldyBwcm9ncmFtbWluZyBjb25jZXB0cywgYW5kIHdyaXRlIGNvbXB1dGVy
+ IGdhbWVzIChBbmRyb2lkIGFuZCBkZXNrdG9wKS4iLCJBY3RpdmUiOnRydWUs
+ Ik1lbnRvciBSZXF1ZXN0IjpbInJlY2I1RG5VanlESVM0U1JWIl0sIkVtYWls
+ IjoicnlhbmxpbmRlbWFuQGdtYWlsLmNvbSJ9LCJjcmVhdGVkVGltZSI6IjIw
+ MTYtMTItMjFUMDI6NTM6NTYuMDAwWiJ9LHsiaWQiOiJyZWNlR0tGUkF4WmEw
+ WkhOZiIsImZpZWxkcyI6eyJTbGFjayBOYW1lIjoiZW1tYWRzdXJnZW9uIiwi
+ RnVsbCBOYW1lIjoiRW1tYW51ZWwgSWRlaGFuIiwiU2tpbGxzZXRzIjpbInJl
+ Y29zUnZpTG9CQ2doNlRxIiwicmVjbDhWd28yeHVGaUVySnkiLCJyZWNJbXJv
+ V25kNnAwMmFYdSIsInJlY2Z3NzhWZG5EN3RwWlZ6IiwicmVjVVY5RExFb0sx
+ SnFSVjkiLCJyZWNXQkxmWkFiTmZQU3BMciIsInJlY1kwRzI4REluYWZCeGdU
+ IiwicmVjajJvbWR1N1duSVhMSmsiXSwiQWN0aXZlIjp0cnVlLCJFbWFpbCI6
+ ImVtbWFudWVsLmlkZWhlbkBtdnN1LmVkdSJ9LCJjcmVhdGVkVGltZSI6IjIw
+ MTgtMDMtMjRUMTk6MTQ6MDcuMDAwWiJ9LHsiaWQiOiJyZWNmdE5pRDkxSGhq
+ OTUwNiIsImZpZWxkcyI6eyJTbGFjayBOYW1lIjoiZ2VvcmdlbWF1ZXIiLCJB
+ c3NpZ25tZW50cyI6WyJyZWNnUDM3VDFRVjRJdkZseSIsInJlY2NxbTFObUdS
+ MW10TXBhIl0sIkZ1bGwgTmFtZSI6Ikdlb3JnZSBNYXVlciIsIlNraWxsc2V0
+ cyI6WyJyZWNKQkI3WnhUT002d0w1dyIsInJlY0U2R0drTDR3MlQ2cG5DIiwi
+ cmVjTk9OSjhTMXAxVGpmS1YiLCJyZWNmS3g4Y3JncmpNTXZTayIsInJlY25Q
+ SERkV1cxSjA2ZXZPIiwicmVjcW15Q1dqUFNBcWdDb3AiLCJyZWNrNGxrT1Rr
+ ZnNNUlBrUiIsInJlY0NWYzd1M2tDT05oSmZGIiwicmVjU3ppY0VzWVhHNFAx
+ QTQiLCJyZWNhb0V4MXEwUVJwdmNhUiIsInJlY2Z3NzhWZG5EN3RwWlZ6Il0s
+ Ik1heCBNZW50ZWVzIjoyLCJXaGF0IHRpbWUgem9uZSBhcmUgeW91IGluPyI6
+ IkNlbnRyYWwiLCJIb3cgbWFueSBob3VycyB3b3VsZCB5b3UgbGlrZSB0byBt
+ ZW50b3IgZm9yLCBwZXIgbW9udGg/IjoiMTAiLCJCaW8iOiJJJ20gRGlyZWN0
+ b3Igb2YgRGV2ZWxvcG1lbnQgYXQgU3VyZ2UgQ29uc3VsdGluZy4gSSB3cml0
+ ZSBjb2RlIGZ1bGwgdGltZSBhbmQgc3BlYWssIG1lbnRvciwgYW5kIHdyaXRl
+ IG9uIGFsbCBzb3J0cyBvZiB0b3BpY3MgaW4gdGhlIGRldmVsb3BtZW50IHNw
+ YWNlIGxhcmdlbHkgZm9jdXNpbmcgb24gSmF2YXNjcmlwdCwgU29mdHdhcmUg
+ QXJjaGl0ZWN0dXJlLCBUZXN0aW5nLCBGdW5jdGlvbmFsIFByb2dyYW1taW5n
+ LCBhbmQgVGVhY2hpbmcuIEknbSBhIG1lbnRvciBhbmQgZ3Vlc3QgbGVjdHVy
+ ZXIgd2l0aCBPcGVyYXRpb24gU3BhcmsgYW5kIG9jY2FzaW9uYWxseSB0aGUg
+ VGVjaCBUYWxlbnQgU291dGggY29kZSBjYW1wcy4gSSBsb3ZlIHRhbGtpbmcg
+ YWJvdXQgdGhpcyBzdHVmZi4gSSdtIG5vdCBhIHZldCBidXQgaGFwcHkgdG8g
+ aGVscCBvdXQuIiwiQWN0aXZlIjp0cnVlLCJNZW50b3IgUmVxdWVzdCI6WyJy
+ ZWNMM2hNM0VMSUhRanRwRCIsInJlY1BNNzVmSU9QZlhSNTFtIiwicmVjOE9Z
+ dTZGOG45TzJwYnYiLCJyZWNxVnU0NVhmZk9JNDhRNSIsInJlY3Y1WmdsNFdx
+ RjlSWHFyIiwicmVjZ3ZtVU9yZmJQNzN3STUiLCJyZWNhSzFSbW1Ud1BidFFj
+ aCIsInJlY3dlVXlDcjQybDVzc3JOIiwicmVjQlZiMFplZ1VjR21MbW4iLCJy
+ ZWNkNGhXNzNYcG9TZ1dWcSJdLCJFbWFpbCI6ImdtYXVlckBnbWFpbC5jb20i
+ fSwiY3JlYXRlZFRpbWUiOiIyMDE3LTAyLTEyVDE4OjU2OjMyLjAwMFoifSx7
+ ImlkIjoicmVjaVpJMU9tQlpDZHVqQzUiLCJmaWVsZHMiOnsiU2xhY2sgTmFt
+ ZSI6ImNhZXNhcmFydW0iLCJGdWxsIE5hbWUiOiJQZXRlciBQb29sZSIsIlNr
+ aWxsc2V0cyI6WyJyZWNKQkI3WnhUT002d0w1dyIsInJlY0U2R0drTDR3MlQ2
+ cG5DIiwicmVjOWxuSFphRHQyQ3ZWcloiLCJyZWNhb0V4MXEwUVJwdmNhUiIs
+ InJlY0NWYzd1M2tDT05oSmZGIiwicmVjNUZZWFU2alRuWEtQSGciXSwiQWN0
+ aXZlIjp0cnVlLCJFbWFpbCI6InBldGVyLmoucG9vbGVAZ21haWwuY29tIn0s
+ ImNyZWF0ZWRUaW1lIjoiMjAxOC0wMy0yNFQxOToxNDowMy4wMDBaIn0seyJp
+ ZCI6InJlY2paRDhmcXVnWDhjMnkzIiwiZmllbGRzIjp7IlNsYWNrIE5hbWUi
+ OiJidXNoaWRvY29kZXMiLCJGdWxsIE5hbWUiOiJTZWFuIE1jQnJpZGUiLCJT
+ a2lsbHNldHMiOlsicmVjQkloRGR1SkQzWUxhSHEiLCJyZWNuUEhEZFdXMUow
+ NmV2TyIsInJlY0U2R0drTDR3MlQ2cG5DIiwicmVjNUZZWFU2alRuWEtQSGci
+ LCJyZWNhb0V4MXEwUVJwdmNhUiIsInJlY3FteUNXalBTQXFnQ29wIiwicmVj
+ azRsa09Ua2ZzTVJQa1IiLCJyZWNDVmM3dTNrQ09OaEpmRiIsInJlY1dCTGZa
+ QWJOZlBTcExyIl0sIk1heCBNZW50ZWVzIjoyLCJBY3RpdmUiOnRydWUsIkVt
+ YWlsIjoic3BtY2JyaWRlMTIwMUBnbWFpbC5jb20ifSwiY3JlYXRlZFRpbWUi
+ OiIyMDE4LTA0LTExVDIwOjQyOjQzLjAwMFoifSx7ImlkIjoicmVjbGdBNGRn
+ Z20zMGIyV1EiLCJmaWVsZHMiOnsiU2xhY2sgTmFtZSI6IkouVC4iLCJGdWxs
+ IE5hbWUiOiJKb2huIEtub3giLCJTa2lsbHNldHMiOlsicmVjSkJCN1p4VE9N
+ NndMNXciLCJyZWNhb0V4MXEwUVJwdmNhUiIsInJlY3FteUNXalBTQXFnQ29w
+ IiwicmVjQ1ZjN3Uza0NPTmhKZkYiLCJyZWNrNGxrT1RrZnNNUlBrUiJdLCJB
+ Y3RpdmUiOnRydWUsIk1lbnRvciBSZXF1ZXN0IjpbInJlY2syMEtURkFBQm82
+ QmUxIl0sIkVtYWlsIjoianRrbm94OTFAZ21haWwuY29tIn0sImNyZWF0ZWRU
+ aW1lIjoiMjAxOC0wMy0xOVQxMjowNzo0Ny4wMDBaIn0seyJpZCI6InJlY29B
+ QjlOY0R3bEJnSGtqIiwiZmllbGRzIjp7IlNsYWNrIE5hbWUiOiJtYWNrc29s
+ ZCIsIkZ1bGwgTmFtZSI6Ik1hcmsgU29sZGF2aW5pIiwiU2tpbGxzZXRzIjpb
+ InJlY1NqcmxzSHRXaDlYV09QIiwicmVjZXdmMWpMY08xUWxWZlkiLCJyZWNF
+ NkdHa0w0dzJUNnBuQyIsInJlY29zUnZpTG9CQ2doNlRxIiwicmVjTk9OSjhT
+ MXAxVGpmS1YiLCJyZWNhb0V4MXEwUVJwdmNhUiIsInJlY0NWYzd1M2tDT05o
+ SmZGIiwicmVjNUZZWFU2alRuWEtQSGciXSwiV2hhdCB0aW1lIHpvbmUgYXJl
+ IHlvdSBpbj8iOiJFU1QiLCJCaW8iOiJTVU1NQVJJWkVEIFBST0ZFU1NJT05B
+ TCBFWFBFUklFTkNFXG5JVCBQcm9mZXNzaW9uYWwgd2l0aCBvdmVyIHR3ZW50
+ eSB5ZWFycyBvZiBleHBlcmllbmNlIGluIHNvZnR3YXJlIGRldmVsb3BtZW50
+ LiBKYXZhIGFuZCBQeXRob24gZGV2ZWxvcGVyIHdpdGggYWRkaXRpb25hbCBz
+ a2lsbHMgaW4gdGhlIGFyZWFzIG9mIHdlYiBhcHBsaWNhdGlvbiBzZWN1cml0
+ eSwgc29mdHdhcmUgZGVzaWduLCBhbmQgdGVhbSBsZWFkZXJzaGlwLiBFeHBl
+ cmllbmNlZCBpbiBhZ2lsZSBkZXZlbG9wbWVudCBhbmQgYnVpbGRpbmcgcXVh
+ bGl0eSBzb2Z0d2FyZSB0aHJvdWdoIGEgcHJvY2VzcyB0aGF0IGluY2x1ZGVz
+ IHVuaXQgdGVzdGluZyBhbmQgY29udGludW91cyBpbnRlZ3JhdGlvbi4gRm91
+ ci15ZWFyIHRvdXIgaW4gdGhlIFVTIEFybXkgSW5mYW50cnkgZGV2ZWxvcGVk
+ IGxlYWRlcnNoaXAgYW5kIHRyYWluaW5nIHNraWxscy5cblxuSSBhbSBoZXJl
+ IGJlY2F1c2UgSSB3YXMgYSBncnVudCB0aGF0IGxlYXJuZWQgdG8gY29kZSAy
+ MCB5ZWFycyBhZ28uIEkga25vdyB0aGUgdHJhbnNpdGlvbiBjYW4gYmUgZG9u
+ ZSBhbmQgd291bGQgbGlrZSB0byB0cnkgYW5kIGhlbHAgb3RoZXJzLiBJIGFt
+ IGluIHRoZSBEQyBhcmVhLiIsIkFjdGl2ZSI6dHJ1ZSwiU2VydmljZXMiOlsi
+ cmVjcnk4czE0cUdKaEhlT0MiLCJyZWNLTFJVb2xDeHN2V0J1RiIsInJlYzNa
+ UU1DUXNLUEtsRTJDIiwicmVjTjBsSjQ2Qlluc0k4ejkiXSwiRW1haWwiOiJt
+ YWNrc29sZEB5YWhvby5jb20ifSwiY3JlYXRlZFRpbWUiOiIyMDE3LTA3LTAz
+ VDE0OjE4OjU4LjAwMFoifSx7ImlkIjoicmVjb29aT0NQWjVtUjZBUnAiLCJm
+ aWVsZHMiOnsiU2xhY2sgTmFtZSI6Im1pa2VvZXJ0bGkiLCJGdWxsIE5hbWUi
+ OiJNaWtlIE9lcnRsaSIsIlNraWxsc2V0cyI6WyJyZWNvc1J2aUxvQkNnaDZU
+ cSIsInJlYzVGWVhVNmpUblhLUEhnIl0sIldoYXQgdGltZSB6b25lIGFyZSB5
+ b3UgaW4/IjoiTVNUIiwiQmlvIjoiSSdtIGEgamF2YSBkZXZlbG9wZXIgd2l0
+ aCBhIHN0cm9uZyBpbnRlcmVzdCBpbiBzbWFsbCBidXNpbmVzcyBvcGVyYXRp
+ b25zLiBJIHdvcmsgZm9yIGEgc21hbGwgRG9EIGNvbnRyYWN0IHNob3AgaW4g
+ RGVudmVyLCBoYXBweSB0byBoZWxwIGhvd2V2ZXIgSSBjYW4hIiwiQWN0aXZl
+ Ijp0cnVlLCJTZXJ2aWNlcyI6WyJyZWNyeThzMTRxR0poSGVPQyIsInJlY04w
+ bEo0NkJZbnNJOHo5IiwicmVjM1pRTUNRc0tQS2xFMkMiLCJyZWNLTFJVb2xD
+ eHN2V0J1RiIsInJlY3R6Z1RHb1F5eTJGVk1DIl0sIkVtYWlsIjoibWlrZW9l
+ cnRsaUBnbWFpbC5jb20iLCJDb2RlIG9mIENvbmR1Y3QgQWNjZXB0ZWQ/Ijp0
+ cnVlLCJHdWlkZWJvb2sgUmVhZD8iOnRydWV9LCJjcmVhdGVkVGltZSI6IjIw
+ MTctMDgtMTdUMjA6MDU6MDMuMDAwWiJ9LHsiaWQiOiJyZWNxRThabDhGaDRi
+ bzRQRyIsImZpZWxkcyI6eyJTbGFjayBOYW1lIjoiZnJhbmt5dSIsIkZ1bGwg
+ TmFtZSI6IkZyYW5rIFl1IiwiU2tpbGxzZXRzIjpbInJlY0ltcm9XbmQ2cDAy
+ YVh1IiwicmVjVVY5RExFb0sxSnFSVjkiXSwiQWN0aXZlIjp0cnVlLCJFbWFp
+ bCI6ImZyYW5reXVAZ21haWwuY29tIn0sImNyZWF0ZWRUaW1lIjoiMjAxOC0w
+ My0yNFQxOToxMzo1OS4wMDBaIn0seyJpZCI6InJlY3FyQWVGeWxqbFd0c1hD
+ IiwiZmllbGRzIjp7IlNsYWNrIE5hbWUiOiJBc2hsZXkiLCJGdWxsIE5hbWUi
+ OiJBc2hsZXkgVGVtcGxldCIsIlNraWxsc2V0cyI6WyJyZWN5RzZzY0VUdHha
+ dVROeCJdLCJNZW50b3IgUmVxdWVzdCI6WyJyZWNNM3g4TzVOeW0yaEFFTSIs
+ InJlYzVOdWZHSXc2UExKWGNEIiwicmVjbFd1QU9JelRuMVBydnkiLCJyZWNW
+ RkxIOG9WeFFQNGVFUiJdLCJFbWFpbCI6ImFzaGxleS50ZW1wbGV0QGdtYWls
+ LmNvbSJ9LCJjcmVhdGVkVGltZSI6IjIwMTgtMDItMTNUMTk6NTI6MDkuMDAw
+ WiJ9LHsiaWQiOiJyZWNzYmx6eVNMRkhPU2wxZiIsImZpZWxkcyI6eyJTbGFj
+ ayBOYW1lIjoib2hhaXdhbHQiLCJGdWxsIE5hbWUiOiJNYXR0aGV3IFdhbHRl
+ ciIsIlNraWxsc2V0cyI6WyJyZWNTanJsc0h0V2g5WFdPUCIsInJlY2V3ZjFq
+ TGNPMVFsVmZZIiwicmVjNUZZWFU2alRuWEtQSGciLCJyZWNmS3g4Y3JncmpN
+ TXZTayJdLCJXaGF0IHRpbWUgem9uZSBhcmUgeW91IGluPyI6IlVUQy00Iiwi
+ QmlvIjoiRm9ybWVyIE5hdnkgSVQxIHR1cm5lZCBMaW51eCBzeXNhZG1pbiwg
+ bm93IFNpdGUgUmVsaWFiaWxpdHkgRW5naW5lZXIgYXQgc29jaWFsbHkgY29u
+ c2Npb3VzIEdvdlRlY2ggc3RhcnR1cCBTZWFtbGVzc0RvY3MuIEFsbCB0aGlu
+ Z3MgY29udGFpbmVycywgbW9uaXRvcmluZywgYXV0b21hdGlvbiwgY2xvdWQs
+ IGluZnJhc3RydWN0dXJlLCBzZWN1cml0eSwgYW5kIHNhZmUgc3lzdGVtcy5c
+ blxuSW50ZXJlc3RlZCBpbiBoZWxwaW5nIG91dCBmZWxsb3cgdmV0ZXJhbnMg
+ YW5kIG1ha2luZyB0aGUgdHJhbnNpdGlvbiBlYXNpZXIsIHNpbmNlIG1pbmUg
+ d2FzIHByZXR0eSByb3VnaCBhbmQgSSBhbSB2ZXJ5IGx1Y2t5L2JsZXNzZWQg
+ dG8gYmUgd2hlcmUgSSBhbSB0b2RheS4iLCJBY3RpdmUiOnRydWUsIlNlcnZp
+ Y2VzIjpbInJlY3R6Z1RHb1F5eTJGVk1DIiwicmVjcnk4czE0cUdKaEhlT0Mi
+ LCJyZWN4RHJwRkw5dzV0TnprVyIsInJlY0tMUlVvbEN4c3ZXQnVGIiwicmVj
+ TjBsSjQ2Qlluc0k4ejkiXSwiTWVudG9yIFJlcXVlc3QiOlsicmVjaG1QMzZw
+ S1dJOHFETGoiXSwiRW1haWwiOiJvaGFpd2FsdEBnbWFpbC5jb20iLCJDb2Rl
+ IG9mIENvbmR1Y3QgQWNjZXB0ZWQ/Ijp0cnVlLCJHdWlkZWJvb2sgUmVhZD8i
+ OnRydWV9LCJjcmVhdGVkVGltZSI6IjIwMTctMDgtMThUMTY6MDQ6NTcuMDAw
+ WiJ9LHsiaWQiOiJyZWN1eFVicVBlckx4Z29GZSIsImZpZWxkcyI6eyJTbGFj
+ ayBOYW1lIjoiemRpZWhsaW8iLCJGdWxsIE5hbWUiOiJaYWNoYXJ5IEwgRGll
+ aGwiLCJTa2lsbHNldHMiOlsicmVjQkloRGR1SkQzWUxhSHEiLCJyZWNuUEhE
+ ZFdXMUowNmV2TyIsInJlY1VWOURMRW9LMUpxUlY5IiwicmVjYW9FeDFxMFFS
+ cHZjYVIiLCJyZWNrNGxrT1RrZnNNUlBrUiJdLCJNYXggTWVudGVlcyI6NSwi
+ RW1haWwiOiJ6YWNoYXJ5LmRpZWhsQGdtYWlsLmNvbSJ9LCJjcmVhdGVkVGlt
+ ZSI6IjIwMTgtMDQtMjZUMTY6NDU6NTcuMDAwWiJ9LHsiaWQiOiJyZWN2VUt5
+ NkpsQ1RIR0NaaSIsImZpZWxkcyI6eyJTbGFjayBOYW1lIjoiYXVicmV5Iiwi
+ RnVsbCBOYW1lIjoiQXVicmV5IEFyY2FuZ2VsIiwiU2tpbGxzZXRzIjpbInJl
+ Y0pCQjdaeFRPTTZ3TDV3IiwicmVjYW9FeDFxMFFScHZjYVIiLCJyZWM1RllY
+ VTZqVG5YS1BIZyJdLCJBY3RpdmUiOnRydWUsIk1lbnRvciBSZXF1ZXN0Ijpb
+ InJlY003Qm52Nmg5a1AxaEFiIl0sIkVtYWlsIjoiYWFyY2FuZ2VsQGdtYWls
+ LmNvbSJ9LCJjcmVhdGVkVGltZSI6IjIwMTgtMDMtMjRUMTk6MTM6NTEuMDAw
+ WiJ9LHsiaWQiOiJyZWN3TFBnRDlURlRENDFkUiIsImZpZWxkcyI6eyJTbGFj
+ ayBOYW1lIjoiaU9TVG9tIiwiRnVsbCBOYW1lIjoiVGhvbWFzIiwiU2tpbGxz
+ ZXRzIjpbInJlY29zUnZpTG9CQ2doNlRxIiwicmVjV0JMZlpBYk5mUFNwTHIi
+ LCJyZWNZMEcyOERJbmFmQnhnVCIsInJlY3lHNnNjRVR0eFp1VE54Il0sIk1h
+ eCBNZW50ZWVzIjoxLCJBY3RpdmUiOnRydWUsIkVtYWlsIjoidGhvbWFzLm1h
+ cmxlckBnbWFpbC5jb20ifSwiY3JlYXRlZFRpbWUiOiIyMDE4LTAzLTI2VDE0
+ OjI1OjUyLjAwMFoifSx7ImlkIjoicmVjeFlPMWpxTDRIV25KYkkiLCJmaWVs
+ ZHMiOnsiU2xhY2sgTmFtZSI6Im1zY290dCIsIkZ1bGwgTmFtZSI6Ik1pY2hh
+ ZWwgSyBTY290dCIsIlNraWxsc2V0cyI6WyJyZWNvc1J2aUxvQkNnaDZUcSIs
+ InJlY2Z3NzhWZG5EN3RwWlZ6IiwicmVjYW9FeDFxMFFScHZjYVIiLCJyZWNx
+ bXlDV2pQU0FxZ0NvcCIsInJlY0NWYzd1M2tDT05oSmZGIiwicmVjNUZZWFU2
+ alRuWEtQSGciXSwiQWN0aXZlIjp0cnVlLCJFbWFpbCI6Im1pY2hhZWwua2Vs
+ bHkuc2NvdHRAZ21haWwuY29tIn0sImNyZWF0ZWRUaW1lIjoiMjAxOC0wMy0y
+ NlQwNjoxMTo0Ni4wMDBaIn0seyJpZCI6InJlY3hiZVQxRGF6TGRaMkk4Iiwi
+ ZmllbGRzIjp7IlNsYWNrIE5hbWUiOiJqcmFtZXMiLCJOb3RlcyI6IkkgYW0g
+ YWxyZWFkeSBtZW50b3JpbmcgUm9uIFJpaG9vLiAgSG9wZWZ1bGx5IEkgd2ls
+ bCBoYXZlIG1vcmUgYmFuZHdpZHRoIGluIHRoZSBmdXR1cmUsIGJ1dCBjdXJy
+ ZW50bHkgbXkgaGFuZHMgYXJlIHByZXR0eSBmdWxsIHdpdGggUm9uIGFuZCBz
+ b21lIG90aGVycyBJIHN0YXJ0ZWQgaGVscGluZyByZWNlbnRseS4iLCJBc3Np
+ Z25tZW50cyI6WyJyZWNNcVFCOFVRUFlIZVk3MCJdLCJGdWxsIE5hbWUiOiJK
+ ZWZmIFJhbWVzIiwiU2tpbGxzZXRzIjpbInJlY1kwRzI4REluYWZCeGdUIiwi
+ cmVjNUZZWFU2alRuWEtQSGciLCJyZWNxbXlDV2pQU0FxZ0NvcCIsInJlY2Fv
+ RXgxcTBRUnB2Y2FSIl0sIk1heCBNZW50ZWVzIjoxLCJXaGF0IHRpbWUgem9u
+ ZSBhcmUgeW91IGluPyI6IkNTVCIsIkhvdyBtYW55IGhvdXJzIHdvdWxkIHlv
+ dSBsaWtlIHRvIG1lbnRvciBmb3IsIHBlciBtb250aD8iOiI1IiwiQmlvIjoi
+ SSBoYXZlIHdvcmtlZCBhdCBhIGZvcnR1bmUgNTAgY29tcGFueSwgYSAyIHBl
+ cnNvbiBjb25zdWx0aW5nIGZpcm0sIGFuZCBjdXJyZW50bHkgYSBzbWFsbCBi
+ dXNpbmVzcyBhYm91dCBhYm91dCAxMDAgZW1wbG95ZWVzLiAgSSBjdXJyZW50
+ bHkgd29yayBvbiBpT1MgbWVkaWNhbCBlbnRlcnByaXNlIHNvZnR3YXJlLiAg
+ SSBhbHNvIGRvIHdyaXRpbmcgYW5kIHRlY2huaWNhbCBlZGl0aW5nIGZvciBh
+ IHR1dG9yaWFsIHNpdGUsIHJheXdlbmRlcmxpY2guY29tLlxuXG5JJ20gYWx3
+ YXlzIGhhcHB5IHRvIGhlbHAgcGVvcGxlIHRoYXQgYXJlIHN0YXJ0aW5nIG91
+ dCwgYW5kIG9ubHkgcmVjZW50bHkgcmVhbGl6ZWQgSSBzaG91bGQgbG9vayBm
+ b3Igb2ZmaWNpYWwgbWVudG9yaW5nIG9wcG9ydHVuaXRpZXMuIFNvbWVvbmUg
+ bWVudGlvbmVkIE9wZXJhdGlvbiBDb2RlLCBhbmQgSSB3YXMgaW1tZWRpYXRl
+ bHkgaW50ZXJlc3RlZC4gIEkgbGlrZSB0aGUgaWRlYSBvZiBnaXZpbmcgYmFj
+ ayB0byBhIGNvbW11bml0eSB0aGF0IGhhcyBnaXZlbiBzbyBtdWNoIGZvciBv
+ dXIgY291bnRyeS5cblxuSSdtIGJlc3QgcG9zaXRpb25lZCB0byBoZWxwIHBl
+ b3BsZSBpbnRlcmVzdGVkIGluIG1vYmlsZSBhcHBsaWNhdGlvbiBkZXZlbG9w
+ bWVudC4gIENhcmVlciBndWlkYW5jZSBpcyBhbHNvIGFub3RoZXIgYXJlYSB3
+ aGVyZSBJIGNhbiBwcm92aWRlIHNvbWUgaGVscCwgcGFydGljdWxhcmx5IHRv
+ IHRob3NlIGVhcmx5IGluIHRoZWlyIGNhcmVlcnMuICAiLCJBY3RpdmUiOnRy
+ dWUsIk1lbnRvciBSZXF1ZXN0IjpbInJlY0lJdVpWZjBROW1SY2hMIl0sIkVt
+ YWlsIjoianJhbWVzQGdtYWlsLmNvbSJ9LCJjcmVhdGVkVGltZSI6IjIwMTYt
+ MTItMThUMTg6NTk6NDQuMDAwWiJ9LHsiaWQiOiJyZWN5R0dTb3ZUcnVsNDAx
+ WSIsImZpZWxkcyI6eyJTbGFjayBOYW1lIjoiTWJhY2giLCJBc3NpZ25tZW50
+ cyI6WyJyZWNDV0ZobVNGd1J2VkpvSSJdLCJGdWxsIE5hbWUiOiJNYXR0aGV3
+ IEJhY2giLCJTa2lsbHNldHMiOlsicmVjZXdmMWpMY08xUWxWZlkiLCJyZWNF
+ NkdHa0w0dzJUNnBuQyIsInJlY1R1N3Q1TTBWaUlMbTVBIiwicmVjU2pybHNI
+ dFdoOVhXT1AiXSwiTWF4IE1lbnRlZXMiOjIsIldoYXQgdGltZSB6b25lIGFy
+ ZSB5b3UgaW4/IjoiRWFzdGVybiIsIkhvdyBtYW55IGhvdXJzIHdvdWxkIHlv
+ dSBsaWtlIHRvIG1lbnRvciBmb3IsIHBlciBtb250aD8iOiI4IiwiQmlvIjoi
+ V291bGQgcHJlZmVyIHNvbWVvbmUgd2hvIGlzIGVhZ2VyIHRvIHByb2JsZW0g
+ c29sdmUgd2l0aCBQeXRob24gYXMgYW4gYXV0b21hdGlvbiBsYW5ndWFnZS4g
+ VGhpcyBpcyBsaWtlbHkgd2hlcmUgSSBjYW4gYmUgdGhlIG1vc3QgaGVscCwg
+ YnV0IEknbSB3aWxsaW5nIHRvIHRha2Ugb24gYW55b25lIHdobydzIGludGVy
+ ZXN0ZWQuICIsIkFjdGl2ZSI6dHJ1ZSwiU3F1YWRzIjpbInJlY0k0aUhwVVBq
+ a2RuclVnIl0sIk1lbnRvciBSZXF1ZXN0IjpbInJlY0ZmV29lbFpqS2NUT2Iw
+ Il0sIkVtYWlsIjoibWJhY2gwNEBnbWFpbC5jb20ifSwiY3JlYXRlZFRpbWUi
+ OiIyMDE3LTAxLTAyVDE2OjMwOjQ2LjAwMFoifV19
+ http_version:
+ recorded_at: Sun, 29 Apr 2018 23:16:23 GMT
+- request:
+ method: get
+ uri: http://api.airtable.com/v0/some_random_id/Services
+ body:
+ encoding: US-ASCII
+ string: ''
+ headers:
+ Authorization:
+ - Bearer some_random_key
+ response:
+ status:
+ code: 301
+ message: Moved Permanently
+ headers:
+ Content-Type:
+ - text/html
+ Date:
+ - Sun, 29 Apr 2018 23:16:23 GMT
+ Location:
+ - https://api.airtable.com/v0/some_random_id/Services
+ Server:
+ - Tengine
+ Content-Length:
+ - '278'
+ Connection:
+ - keep-alive
+ body:
+ encoding: UTF-8
+ string: "\r\n\r\n301
+ Moved Permanently\r\n\r\n301 Moved
+ Permanently
\r\nThe requested resource has been assigned a new permanent
+ URI.
\r\n
Powered by Tengine\r\n\r\n"
+ http_version:
+ recorded_at: Sun, 29 Apr 2018 23:16:23 GMT
+- request:
+ method: get
+ uri: https://api.airtable.com/v0/some_random_id/Services
+ body:
+ encoding: US-ASCII
+ string: ''
+ headers:
+ Authorization:
+ - Bearer some_random_key
+ response:
+ status:
+ code: 429
+ message: ''
+ headers:
+ Access-Control-Allow-Headers:
+ - content-type, authorization, content-length, x-requested-with, x-api-version,
+ x-airtable-application-id, user-agent, x-airtable-user-agent
+ Access-Control-Allow-Methods:
+ - GET,PUT,POST,PATCH,DELETE,OPTIONS
+ Access-Control-Allow-Origin:
+ - "*"
+ Content-Type:
+ - application/json; charset=utf-8
+ Date:
+ - Sun, 29 Apr 2018 23:16:23 GMT
+ Etag:
+ - W/"188b-ZKAMD6Yvl9hZgAq+Q/KY5tI7PJU"
+ Server:
+ - Tengine
+ Vary:
+ - Accept-Encoding
+ Content-Length:
+ - '6283'
+ Connection:
+ - keep-alive
+ body:
+ encoding: UTF-8
+ string: '{"records":[{"id":"rec3ZQMCQsKPKlE2C","fields":{"Name":"Mock Interview","Description":"Have
+ one of our mentors conduct a mock coding interview.","Mentors":["recGp2dytDt32ojl6","recRlWEzlSS7xPcMD","recoAB9NcDwlBgHkj","recooZOCPZ5mR6ARp","recBM9iaLwaAee4BQ"],"Mentor
+ Request":["recPM75fIOPfXR51m","recFzUhBO0KY496hy","recpIo6InoCqCKznj","recPRPi6IzrcHPSfR","recJ3q5zTOccP0Wnt","recgvmUOrfbP73wI5"],"Mentor
+ Skills":["recbn3OVB3DUPWuI0","recIUKKi6ZDfmamqb","recJR4JPYBISWJVGx"],"Mentor
+ Count":5,"Mentee Requests":0},"createdTime":"2017-03-05T19:10:07.000Z"},{"id":"recKLRUolCxsvWBuF","fields":{"Name":"Code
+ Review","Description":"Have a mentor look over a PR, code exercise or software
+ architecture","Mentors":["recGp2dytDt32ojl6","recRlKczGAcNKN26G","recJkYfbRbuxOXTLA","recRlWEzlSS7xPcMD","recoAB9NcDwlBgHkj","recooZOCPZ5mR6ARp","recsblzySLFHOSl1f","reccKrEc0w88fSs7W","recBM9iaLwaAee4BQ"],"Mentor
+ Request":["recvhYWculzcAxvi2","recP93VUeYeyhrNVz","recvJu22zZ4xy5FGs","recAF7yKRfpfHjrhK"],"Mentor
+ Skills":["recXxKHRRiglWGPWt","recbn3OVB3DUPWuI0","reczS6v9bDXf9G8CV","recIUKKi6ZDfmamqb","recJR4JPYBISWJVGx"],"Mentor
+ Count":9,"Mentee Requests":0},"createdTime":"2017-03-05T19:09:58.000Z"},{"id":"recN0lJ46BYnsI8z9","fields":{"Name":"Resume
+ Review","Description":"Have one of our mentors look over your resume","Mentors":["recGp2dytDt32ojl6","recRlWEzlSS7xPcMD","recoAB9NcDwlBgHkj","recooZOCPZ5mR6ARp","recsblzySLFHOSl1f","recErAVRZsjwjpULL","recBM9iaLwaAee4BQ","rec8gWUa2agvWe6fj"],"Mentor
+ Request":["rec0tJIOd8GpmqZ5V","recfwDlYeOARfJoe8","recw5Xw9qkv3VrzE2","reczhwH7rtfs8clc4","recCMQKVmFULiFdAI","recxcgnhlG58HvTmn","recyk8xo77dMdaogb","reclWuAOIzTn1Prvy","rec1CMvTYgcM3c0A5","recufM56SJoHpZP5u","recVNznRKWyKFfQRF","recc1jYPa3GkV1aac","recUAjRcW1Oj3AbNv","rechmP36pKWI8qDLj"],"Mentor
+ Skills":["recXxKHRRiglWGPWt","recIUKKi6ZDfmamqb","recJR4JPYBISWJVGx"],"Mentor
+ Count":8,"Mentee Requests":0},"createdTime":"2017-03-05T19:10:10.000Z"},{"id":"recry8s14qGJhHeOC","fields":{"Name":"General
+ Guidance - Slack Chat","Description":"Chat 1 on 1 with a mentor via slack
+ chat","Mentors":["recGp2dytDt32ojl6","recRlKczGAcNKN26G","recJkYfbRbuxOXTLA","recoAB9NcDwlBgHkj","recooZOCPZ5mR6ARp","recsblzySLFHOSl1f","recErAVRZsjwjpULL","reccKrEc0w88fSs7W","recBM9iaLwaAee4BQ","rec8gWUa2agvWe6fj"],"Mentees":["recwZDCOVDH3QU3Vq","recQxZqkW2QfrDX7E"],"Mentor
+ Request":["recQlLUpf76DI9uRt","recxTxNKZcYuZPgiV","recWD3SbCvBHCtPEv","reckywOc9xoVAQ4vl","rec7C3aD1Z4WJcGnD","recvEsH0WKwfOIvat","recJf3oHXBNzAdJK8","recUNPVezaf8UNuqi","recMU7Jm7lU8GKSNy","recy9ZOgGCdJ4OjxX","recHVC8HTzXWsZeLg","rec7rx7ilpWb1W88v","rece8pNd1jYbi6Myc","recL3hM3ELIHQjtpD","recISHnxSOMjxKrgi","recYBK56Xp8AVEkYX","recRwfkRluRKOhKM4","recX6K7E4ydO0YjPy","recK1EkZSZCLFA007","recEXEwOmEWnxHdne","recF6AkQMSJaAa7ki","recjMGB93cCTBRAZY","rechii0wYCNIqdw8P","recGuKPSSlzj7mdM1","recBargZbtPOcpotA","rec9aa5x8ZRwA47Zr","recCymG2ALbKUAIXB","rec3aMjN13XEM2cUW","recjnrbWiZEl0brY1","rectLIJFqjVS6WhpM","recIIuZVf0Q9mRchL","recqVu45XffOI48Q5","recLnucDYfq0Mu1cA","recH5papKgKz88dbM","rec5BghMVYJ2KntB9","recYfXnoqFBgxwlDA","recBEPGtjSaA4vyta","recKoXfJZhyCDUFCV","recFekw7gHVMUlndt","rec6H2ZHUVnPU1IhC","recxD9kZnxYjJrut5","recjs0mQjL01oyQgj","recFfWoelZjKcTOb0","recmV1rL9Nfvo6tLx","recTzbQImlYsBi1M6","recSYBMzzdV0Nve8z","recbno9og0y0awr3Z","rechSkc7p41sx5jYq","recQP3XP3MUcpnkE0","recy6qoppSKByp1kH","rec9JNuk4ukpteyIR","recBNrnoQr0LEnBPd","recq4B8aguxGWdcwT","recVFLH8oVxQP4eER","recfV4wkoKGrcrlju","rechCv1ax04rK8kzy","recI0eTHxdoAOsKjQ","rec5jawkKPQKilO7t","recH1uObvhmQw6BBg","recweUyCr42l5ssrN","rec6PmvxU85p59gIK","recUQ2SlgVZmup8jM","rec8g9DWRhfcFhLgl","rec7ufwS4Id3VOke5","rec9T1AP2teWQLtEf","reck20KTFAABo6Be1","recABaMetQGB2Wsr4","reczPcsp85arch31m","recDtkpn4f0HwZgOm","recWg4m7RAN1yuhH4","recYwqjVh4sKOnOCS","recMth82AsU3nngSs","recOLfWE8TwHPzAmd","recRxDOVqyBfSlx9L","recZWgBHqNaWipElw","recb5DnUjyDIS4SRV","recN4ACryNBZj87Mm"],"Mentor
+ Skills":["recCbfP26C9oyF6oZ","recXxKHRRiglWGPWt","recbn3OVB3DUPWuI0","reczS6v9bDXf9G8CV","recJR4JPYBISWJVGx"],"Mentor
+ Count":10,"Mentee Requests":2},"createdTime":"2017-03-05T19:07:42.000Z"},{"id":"rectzgTGoQyy2FVMC","fields":{"Name":"General
+ Guidance - Voice Chat","Description":"Chat 1 on 1 with a mentor via voice
+ or video","Mentors":["recGp2dytDt32ojl6","recJkYfbRbuxOXTLA","recRlWEzlSS7xPcMD","recooZOCPZ5mR6ARp","recsblzySLFHOSl1f","recErAVRZsjwjpULL","reccKrEc0w88fSs7W","recBM9iaLwaAee4BQ","rec8gWUa2agvWe6fj"],"Mentor
+ Request":["reciES5Dp5sR5UiTD","recPXxsjkxCK30l5w","rec86L1kFMGYOmnGn","rec3Sp9P5gTgMFdub","recWJcrc7yshLW535","recyw52g0meDKcxBS","recTrJNLGZeyZrQso","recle23ZC0KGpzq7f","recI84guIOF7Rm4xN","recFiFgdmv7q8OI0k","recfxAuJUGJZQuyOv","recDsbdLGttUXWmUk","rec2n9fNgVJOvk9N3","recb3rcFjBP66pEsM","recO0gtj5NOox5cvU","rec72rOLM74NmG7mL","recEgw278MbXFPjXV","rec5NufGIw6PLJXcD","recVlscT5IeV7Jy0j","recV2opjArSXUkM85","recoHLGJd46435i6v","rec0WXnwFu0gRnZr6","recTx4fWdyWA5XiAT","recf6fuzdgY4fwgQm","recBVb0ZegUcGmLmn","rechOY0LvnrO5p8uM","recdFALRdOkpObGsO","recaK1RmmTwPbtQch","rechlkZKhQIPebb5X","recM3x8O5Nym2hAEM","recqqkBPcUrpozV8f","reclEsb5Tn63Yz17u","receOS381ThK8L27v","recul4wH0fUXpcku5","rec2CpCt6XTrmKf2I","recF5h7HvxIvPuLJV","recIEqi0xGG12h3q2","recM7Bnv6h9kP1hAb","recWPOb4pbLJLSBBO","recw5yJdWIp6t9Lwg","recd4hW73XpoSgWVq","recuyrOhS8FwT1TdH"],"Mentor
+ Skills":["recCbfP26C9oyF6oZ","recXxKHRRiglWGPWt","reczS6v9bDXf9G8CV","recJR4JPYBISWJVGx"],"Mentor
+ Count":9,"Mentee Requests":0},"createdTime":"2017-03-05T19:07:42.000Z"},{"id":"recxDrpFL9w5tNzkW","fields":{"Name":"Pair
+ Programming","Description":"Spend an hour with a mentor programming together","Mentors":["recJkYfbRbuxOXTLA","recRlWEzlSS7xPcMD","recsblzySLFHOSl1f","reccKrEc0w88fSs7W","recBM9iaLwaAee4BQ"],"Mentees":["recQxZqkW2QfrDX7E"],"Mentor
+ Request":["recoZWLdBba0RtObw","recfuT67S14yMmRsR","recH75YcWSGHzoDgL","recVcYxcQZNhZBz8R","rec8OYu6F8n9O2pbv","recbLo1LZkH78m0tf","recPz02jtI7F5Vw4d","recDFjF5KTByknL2j","recWka1ynPANo5s3X","recBtZ6gFrjpRFYFM","recAwQTvFeITTfXe8","recv5Zgl4WqF9RXqr","recD78YUBEB5C7lDF","recpgngdrEXCHdoZK","recQddCu26j0MGmO5","recdGPicU3AM6jUnt","recz1vIqJnTTzDcBS","recevtA3LaYZMqSI2"],"Mentor
+ Skills":["recCbfP26C9oyF6oZ","recbn3OVB3DUPWuI0","reczS6v9bDXf9G8CV","recJR4JPYBISWJVGx"],"Mentor
+ Count":5,"Mentee Requests":1},"createdTime":"2017-03-05T19:07:42.000Z"}]}'
+ http_version:
+ recorded_at: Sun, 29 Apr 2018 23:16:23 GMT
+- request:
+ method: get
+ uri: http://api.airtable.com/v0/some_random_id/Skillsets
+ body:
+ encoding: US-ASCII
+ string: ''
+ headers:
+ Authorization:
+ - Bearer some_random_key
+ response:
+ status:
+ code: 301
+ message: Moved Permanently
+ headers:
+ Content-Type:
+ - text/html
+ Date:
+ - Sun, 29 Apr 2018 23:16:24 GMT
+ Location:
+ - https://api.airtable.com/v0/some_random_id/Skillsets
+ Server:
+ - Tengine
+ Content-Length:
+ - '278'
+ Connection:
+ - keep-alive
+ body:
+ encoding: UTF-8
+ string: "\r\n\r\n301
+ Moved Permanently\r\n\r\n301 Moved
+ Permanently
\r\nThe requested resource has been assigned a new permanent
+ URI.
\r\n
Powered by Tengine\r\n\r\n"
+ http_version:
+ recorded_at: Sun, 29 Apr 2018 23:16:24 GMT
+- request:
+ method: get
+ uri: https://api.airtable.com/v0/some_random_id/Skillsets
+ body:
+ encoding: US-ASCII
+ string: ''
+ headers:
+ Authorization:
+ - Bearer some_random_key
+ response:
+ status:
+ code: 429
+ message: ''
+ headers:
+ Access-Control-Allow-Headers:
+ - content-type, authorization, content-length, x-requested-with, x-api-version,
+ x-airtable-application-id, user-agent, x-airtable-user-agent
+ Access-Control-Allow-Methods:
+ - GET,PUT,POST,PATCH,DELETE,OPTIONS
+ Access-Control-Allow-Origin:
+ - "*"
+ Content-Type:
+ - application/json; charset=utf-8
+ Date:
+ - Sun, 29 Apr 2018 23:16:24 GMT
+ Etag:
+ - W/"286b-1vcTHyIdkMCD4HHe4fcXmNd6RBs"
+ Server:
+ - Tengine
+ Vary:
+ - Accept-Encoding
+ Content-Length:
+ - '10347'
+ Connection:
+ - keep-alive
+ body:
+ encoding: UTF-8
+ string: '{"records":[{"id":"rec5FYXU6jTnXKPHg","fields":{"Name":"Resume Reviews","Mentors":["recZIExVz7yhKtfa8","recxbeT1DazLdZ2I8","recF4oBzjE3J6A0wo","recGp2dytDt32ojl6","recRlWEzlSS7xPcMD","recoAB9NcDwlBgHkj","recooZOCPZ5mR6ARp","recsblzySLFHOSl1f","recErAVRZsjwjpULL","rec38psl7zI8p3aiT","recTQo4CbKgdmT9Xv","recvUKy6JlCTHGCZi","reciZI1OmBZCdujC5","rec425V9c8DsQKckC","rec7i7HYMRX6AArBS","rec9Mcs5JTFxVoKT1","rec2QLQ76thAVQjH0","recxYO1jqL4HWnJbI","rec7ZSEBrUJU9OwRk","recb6YEKZaBKAyt8y","recjZD8fqugX8c2y3","recQrZvfSR4jn3RNO"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"rec6iqhMxHhlRZrhx","fields":{"Name":"Bot
+ Specialist","Mentors":["recIPKInSvxr30rcF"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"rec8IVKeTrwsgUPcg","fields":{"Name":"C#/Net","Mentors":["rec8hCvdcwA2tR3vF"]},"createdTime":"2018-04-24T16:51:28.000Z"},{"id":"rec9lnHZaDt2CvVrZ","fields":{"Name":"Ruby
+ / Rails","Mentors":["recGp2dytDt32ojl6","recRlKczGAcNKN26G","recJkYfbRbuxOXTLA","recBM9iaLwaAee4BQ","rec6nA4WIrhCtKW5n","rec0SDZDK2DiW4PY9","recV0qJD28ki2Q8kr","reciZI1OmBZCdujC5","recH8e2ZDtftbFqRC","rec8hCvdcwA2tR3vF"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recBIhDduJD3YLaHq","fields":{"Name":"JavaScript","Mentors":["recjZD8fqugX8c2y3","rec8hCvdcwA2tR3vF","recuxUbqPerLxgoFe"]},"createdTime":"2018-04-11T20:42:43.000Z"},{"id":"recCKrPnHDqOdlhAg","fields":{"Name":"Cake","Mentors":["reccKrEc0w88fSs7W"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recCVc7u3kCONhJfF","fields":{"Name":"Back
+ End Development","Mentors":["recftNiD91Hhj9506","recF4oBzjE3J6A0wo","recGp2dytDt32ojl6","recJkYfbRbuxOXTLA","recRlWEzlSS7xPcMD","recoAB9NcDwlBgHkj","reccKrEc0w88fSs7W","rec38psl7zI8p3aiT","rec6nA4WIrhCtKW5n","rec0SDZDK2DiW4PY9","reclgA4dggm30b2WQ","recTQo4CbKgdmT9Xv","recV0qJD28ki2Q8kr","reciZI1OmBZCdujC5","rec425V9c8DsQKckC","recP0NNDfDq02vl6Y","rec9Mcs5JTFxVoKT1","recxYO1jqL4HWnJbI","recH8e2ZDtftbFqRC","recPq1y7NgZfrBe6m","recjZD8fqugX8c2y3","rec8hCvdcwA2tR3vF"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recE6GGkL4w2T6pnC","fields":{"Name":"SQL","Mentors":["recyGGSovTrul401Y","recftNiD91Hhj9506","recF4oBzjE3J6A0wo","recGp2dytDt32ojl6","recRlWEzlSS7xPcMD","recoAB9NcDwlBgHkj","recErAVRZsjwjpULL","recBM9iaLwaAee4BQ","recTQo4CbKgdmT9Xv","recV0qJD28ki2Q8kr","reciZI1OmBZCdujC5","rec425V9c8DsQKckC","rec9Mcs5JTFxVoKT1","recPq1y7NgZfrBe6m","recjZD8fqugX8c2y3","rec8hCvdcwA2tR3vF"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recFJ9FXE6zxrd9i4","fields":{"Name":"Mobile
+ (Android)","Mentors":["receBeTyuWlLfApHB"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recImroWnd6p02aXu","fields":{"Name":"Design
+ / UX","Mentors":["recErAVRZsjwjpULL","recqE8Zl8Fh4bo4PG","rec7i7HYMRX6AArBS","receGKFRAxZa0ZHNf","recP0NNDfDq02vl6Y","rec9Mcs5JTFxVoKT1"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recJACxkZuHTZSU2j","fields":{"Name":"Data
+ Science","Mentors":["reccKrEc0w88fSs7W"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recJBB7ZxTOM6wL5w","fields":{"Name":"Javascript","Mentors":["recZIExVz7yhKtfa8","recftNiD91Hhj9506","recF4oBzjE3J6A0wo","recRlWEzlSS7xPcMD","recBM9iaLwaAee4BQ","rec0SDZDK2DiW4PY9","reclgA4dggm30b2WQ","recV0qJD28ki2Q8kr","recvUKy6JlCTHGCZi","reciZI1OmBZCdujC5","rec425V9c8DsQKckC","rec9Mcs5JTFxVoKT1","rec2QLQ76thAVQjH0"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recJHiVQNIC3ONMWs","fields":{"Name":"UNIX
+ Linux Mac OS and command line operation and scripting","Mentors":["rec7ZSEBrUJU9OwRk"]},"createdTime":"2018-03-27T14:42:54.000Z"},{"id":"recM9kb3SazF466xo","fields":{"Name":"Azure","Mentors":["reccKrEc0w88fSs7W"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recNONJ8S1p1TjfKV","fields":{"Name":"C#
+ / .NET","Mentors":["recftNiD91Hhj9506","recoAB9NcDwlBgHkj","reccKrEc0w88fSs7W"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recOfGy9tMeUwjN78","fields":{"Name":"Android
+ Development","Mentors":["recF4oBzjE3J6A0wo","reccKrEc0w88fSs7W"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recQ6ex9GF5ijQTod","fields":{"Name":"PHP","Mentors":["recPq1y7NgZfrBe6m"]},"createdTime":"2018-04-07T03:33:18.000Z"},{"id":"recRyPBwN1JBj9D9l","fields":{"Name":"Ethics","Mentors":["recEoe9Yqs6YMGm1L"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recSjrlsHtWh9XWOP","fields":{"Name":"DevOps","Mentors":["recyGGSovTrul401Y","recF4oBzjE3J6A0wo","recRlWEzlSS7xPcMD","recoAB9NcDwlBgHkj","recsblzySLFHOSl1f","reccKrEc0w88fSs7W","rec6nA4WIrhCtKW5n","rec425V9c8DsQKckC","rec8gWUa2agvWe6fj","recb6YEKZaBKAyt8y","rec8hCvdcwA2tR3vF"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recSy4HmIGtILqZRv","fields":{"Name":"Xamarian","Mentors":["reccKrEc0w88fSs7W"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recSzicEsYXG4P1A4","fields":{"Name":"Architecture","Mentors":["recftNiD91Hhj9506"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recTu7t5M0ViILm5A","fields":{"Name":"Web
+ (Backend Development)","Mentors":["recyGGSovTrul401Y","recBM9iaLwaAee4BQ"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recUV9DLEoK1JqRV9","fields":{"Name":"Entrepreneurship","Mentors":["recEoe9Yqs6YMGm1L","reccKrEc0w88fSs7W","recqE8Zl8Fh4bo4PG","receGKFRAxZa0ZHNf","recP0NNDfDq02vl6Y","recQrZvfSR4jn3RNO","recuxUbqPerLxgoFe"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recWBLfZAbNfPSpLr","fields":{"Name":"Linux","Mentors":["recV0qJD28ki2Q8kr","rec425V9c8DsQKckC","receGKFRAxZa0ZHNf","recP0NNDfDq02vl6Y","recwLPgD9TFTD41dR","rec7ZSEBrUJU9OwRk","recjZD8fqugX8c2y3","rec8hCvdcwA2tR3vF"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recXeV4Fm0lHnUt2e","fields":{"Name":"Slack","Mentors":["recEoe9Yqs6YMGm1L"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recY0G28DInafBxgT","fields":{"Name":"IoS
+ Development","Mentors":["recxbeT1DazLdZ2I8","reccKrEc0w88fSs7W","receGKFRAxZa0ZHNf","recwLPgD9TFTD41dR"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recZG14sS7YYVkV3R","fields":{"Name":"scala","Mentors":["recJ8Wi2LOqlY1gaf"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recaoEx1q0QRpvcaR","fields":{"Name":"General
+ Career Advice","Mentors":["recxbeT1DazLdZ2I8","recftNiD91Hhj9506","recRlWEzlSS7xPcMD","recoAB9NcDwlBgHkj","rec0SDZDK2DiW4PY9","reclgA4dggm30b2WQ","recTQo4CbKgdmT9Xv","recvUKy6JlCTHGCZi","reciZI1OmBZCdujC5","rec425V9c8DsQKckC","rec7i7HYMRX6AArBS","recP0NNDfDq02vl6Y","recxYO1jqL4HWnJbI","rec7ZSEBrUJU9OwRk","recH8e2ZDtftbFqRC","rec8gWUa2agvWe6fj","recb6YEKZaBKAyt8y","recjZD8fqugX8c2y3","recQrZvfSR4jn3RNO","rec8hCvdcwA2tR3vF","recuxUbqPerLxgoFe"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recewf1jLcO1QlVfY","fields":{"Name":"Python","Mentors":["recyGGSovTrul401Y","recRlWEzlSS7xPcMD","recoAB9NcDwlBgHkj","recsblzySLFHOSl1f","recErAVRZsjwjpULL","rec38psl7zI8p3aiT","recTQo4CbKgdmT9Xv","recP0NNDfDq02vl6Y","rec9Mcs5JTFxVoKT1","rec8hCvdcwA2tR3vF"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recf0UbPWw289LKjw","fields":{"Name":"Dancing","Mentors":["recEoe9Yqs6YMGm1L"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recfINzrFfLKSI0GV","fields":{"Name":"Prolog","Mentors":["rec38psl7zI8p3aiT"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recfKx8crgrjMMvSk","fields":{"Name":"Cat
+ Pictures","Mentors":["recftNiD91Hhj9506","recsblzySLFHOSl1f"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recfw78VdnD7tpZVz","fields":{"Name":"Functional
+ Programming","Mentors":["recftNiD91Hhj9506","recRlWEzlSS7xPcMD","recJ8Wi2LOqlY1gaf","rec425V9c8DsQKckC","receGKFRAxZa0ZHNf","recP0NNDfDq02vl6Y","recxYO1jqL4HWnJbI","recPq1y7NgZfrBe6m","rec8hCvdcwA2tR3vF"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recj2omdu7WnIXLJk","fields":{"Name":"Data-Science","Mentors":["recErAVRZsjwjpULL","recTQo4CbKgdmT9Xv","receGKFRAxZa0ZHNf","rec8hCvdcwA2tR3vF"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"reck4lkOTkfsMRPkR","fields":{"Name":"Front
+ End Development","Mentors":["recZIExVz7yhKtfa8","recftNiD91Hhj9506","recRlWEzlSS7xPcMD","rec0SDZDK2DiW4PY9","reclgA4dggm30b2WQ","rec425V9c8DsQKckC","rec9Mcs5JTFxVoKT1","rec2QLQ76thAVQjH0","recjZD8fqugX8c2y3","rec8hCvdcwA2tR3vF","recuxUbqPerLxgoFe"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recl8Vwo2xuFiErJy","fields":{"Name":"C
+ / C++","Mentors":["receBeTyuWlLfApHB","rec38psl7zI8p3aiT","receGKFRAxZa0ZHNf","recP0NNDfDq02vl6Y"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recn4IOqrQ5upCwwY","fields":{"Name":"Cyber-Security","Mentors":["rec425V9c8DsQKckC"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recnPHDdWW1J06evO","fields":{"Name":"React","Mentors":["recftNiD91Hhj9506","recRlWEzlSS7xPcMD","rec0SDZDK2DiW4PY9","rec425V9c8DsQKckC","rec9Mcs5JTFxVoKT1","rec2QLQ76thAVQjH0","recjZD8fqugX8c2y3","rec8hCvdcwA2tR3vF","recuxUbqPerLxgoFe"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recosRviLoBCgh6Tq","fields":{"Name":"Java","Mentors":["receBeTyuWlLfApHB","recF4oBzjE3J6A0wo","recGp2dytDt32ojl6","recoAB9NcDwlBgHkj","recooZOCPZ5mR6ARp","recErAVRZsjwjpULL","reccKrEc0w88fSs7W","recTQo4CbKgdmT9Xv","receGKFRAxZa0ZHNf","recP0NNDfDq02vl6Y","recxYO1jqL4HWnJbI","recwLPgD9TFTD41dR"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recpdV6vAmtmI5psM","fields":{"Name":"Web
+ (Frontend Development)","Mentors":["recBM9iaLwaAee4BQ"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recqmyCWjPSAqgCop","fields":{"Name":"Code
+ Review","Mentors":["recxbeT1DazLdZ2I8","recftNiD91Hhj9506","recGp2dytDt32ojl6","recJkYfbRbuxOXTLA","recRlWEzlSS7xPcMD","rec38psl7zI8p3aiT","reclgA4dggm30b2WQ","recTQo4CbKgdmT9Xv","recV0qJD28ki2Q8kr","rec425V9c8DsQKckC","recP0NNDfDq02vl6Y","rec9Mcs5JTFxVoKT1","rec2QLQ76thAVQjH0","recxYO1jqL4HWnJbI","recH8e2ZDtftbFqRC","recjZD8fqugX8c2y3","rec8hCvdcwA2tR3vF"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recvDGhGfPUK5UwG0","fields":{"Name":"product
+ and program management (transitioning to or growing within the function)","Mentors":["recQrZvfSR4jn3RNO"]},"createdTime":"2018-04-23T18:52:44.000Z"},{"id":"recwFfIrvPeq0qGXG","fields":{"Name":"C/C++","Mentors":["rec8hCvdcwA2tR3vF"]},"createdTime":"2018-04-24T16:51:28.000Z"},{"id":"recyG6scETtxZuTNx","fields":{"Name":"Cyber-security","Mentors":["recWPyxrY2QKAkPVL","recqrAeFyljlWtsXC","recwLPgD9TFTD41dR","rec8hCvdcwA2tR3vF"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recyGndgUYkkyPCrS","fields":{"Name":"Career
+ Advice","Mentors":["recEoe9Yqs6YMGm1L"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"reczl5liQJOJCap7L","fields":{"Name":"Resume
+ Review","Mentors":["recEoe9Yqs6YMGm1L"]},"createdTime":"2018-03-26T19:22:16.000Z"}]}'
+ http_version:
+ recorded_at: Sun, 29 Apr 2018 23:16:24 GMT
+recorded_with: VCR 3.0.3
diff --git a/test/cassettes/airtable/mentorship/post_multiple_successful.yml b/test/cassettes/airtable/mentorship/post_multiple_successful.yml
new file mode 100644
index 00000000..1de6b9df
--- /dev/null
+++ b/test/cassettes/airtable/mentorship/post_multiple_successful.yml
@@ -0,0 +1,49 @@
+---
+http_interactions:
+- request:
+ method: post
+ uri: https://api.airtable.com/v0/some_random_id/Mentor%20Request
+ body:
+ encoding: UTF-8
+ string: '{"fields":{"Slack User":"test_case_1","Service":["rec3ZQMCQsKPKlE2C"],"Skillsets":["Java","Study
+ Help","Web (Frontend Development)"],"Additional Details":"Some test description.","Mentor
+ Requested":["rec0SDZDK2DiW4PY9"]}}'
+ headers:
+ Authorization:
+ - Bearer some_random_key
+ Content-Type:
+ - application/json
+ response:
+ status:
+ code: 200
+ message: OK
+ headers:
+ Access-Control-Allow-Headers:
+ - content-type, authorization, content-length, x-requested-with, x-api-version,
+ x-airtable-application-id, user-agent, x-airtable-user-agent
+ Access-Control-Allow-Methods:
+ - GET,PUT,POST,PATCH,DELETE,OPTIONS
+ Access-Control-Allow-Origin:
+ - "*"
+ Content-Type:
+ - application/json; charset=utf-8
+ Date:
+ - Sun, 06 May 2018 19:28:15 GMT
+ Etag:
+ - W/"147-1wtCT6E5MFLX/1fukH9vFtZ3Ef4"
+ Server:
+ - Tengine
+ Vary:
+ - Accept-Encoding
+ Content-Length:
+ - '327'
+ Connection:
+ - keep-alive
+ body:
+ encoding: UTF-8
+ string: '{"id":"recTvgUmwkGMG2HNc","fields":{"Slack User":"test_case_1","Service":["rec3ZQMCQsKPKlE2C"],"Skillsets":["Web
+ (Frontend Development)","Java","Study Help"],"Additional Details":"Some test
+ description.","Mentor Requested":["rec0SDZDK2DiW4PY9"],"Created At":"2018-05-06T19:28:15.000Z"},"createdTime":"2018-05-06T19:28:15.645Z"}'
+ http_version:
+ recorded_at: Sun, 06 May 2018 19:28:15 GMT
+recorded_with: VCR 3.0.3
diff --git a/test/cassettes/airtable/mentorship/post_successful.yml b/test/cassettes/airtable/mentorship/post_successful.yml
new file mode 100644
index 00000000..5fd23525
--- /dev/null
+++ b/test/cassettes/airtable/mentorship/post_successful.yml
@@ -0,0 +1,48 @@
+---
+http_interactions:
+- request:
+ method: post
+ uri: https://api.airtable.com/v0/some_random_id/Mentor%20Request
+ body:
+ encoding: UTF-8
+ string: '{"fields":{"Slack User":"test_case_1","Service":["rec3ZQMCQsKPKlE2C"],"Skillsets":["Java"],"Additional
+ Details":"Some test description.","Mentor Requested":["rec0SDZDK2DiW4PY9"]}}'
+ headers:
+ Authorization:
+ - Bearer some_random_key
+ Content-Type:
+ - application/json
+ response:
+ status:
+ code: 200
+ message: OK
+ headers:
+ Access-Control-Allow-Headers:
+ - content-type, authorization, content-length, x-requested-with, x-api-version,
+ x-airtable-application-id, user-agent, x-airtable-user-agent
+ Access-Control-Allow-Methods:
+ - GET,PUT,POST,PATCH,DELETE,OPTIONS
+ Access-Control-Allow-Origin:
+ - "*"
+ Content-Type:
+ - application/json; charset=utf-8
+ Date:
+ - Sun, 06 May 2018 02:10:37 GMT
+ Etag:
+ - W/"11d-aFN6bt/wzubKc+KtOD2gB/yAJEk"
+ Server:
+ - Tengine
+ Vary:
+ - Accept-Encoding
+ Content-Length:
+ - '285'
+ Connection:
+ - keep-alive
+ body:
+ encoding: UTF-8
+ string: '{"id":"recPr5qFiMDGc9624","fields":{"Slack User":"test_case_1","Service":["rec3ZQMCQsKPKlE2C"],"Skillsets":["Java"],"Additional
+ Details":"Some test description.","Mentor Requested":["rec0SDZDK2DiW4PY9"],"Created
+ At":"2018-05-06T02:10:37.000Z"},"createdTime":"2018-05-06T02:10:37.565Z"}'
+ http_version:
+ recorded_at: Sun, 06 May 2018 02:10:37 GMT
+recorded_with: VCR 3.0.3
diff --git a/test/cassettes/airtable/mentorship/successful.yml b/test/cassettes/airtable/mentorship/successful.yml
new file mode 100644
index 00000000..7cd1d096
--- /dev/null
+++ b/test/cassettes/airtable/mentorship/successful.yml
@@ -0,0 +1,895 @@
+---
+http_interactions:
+- request:
+ method: get
+ uri: https://api.airtable.com/v0/some_random_id/Mentors
+ body:
+ encoding: US-ASCII
+ string: ''
+ headers:
+ Authorization:
+ - Bearer some_random_key
+ response:
+ status:
+ code: 200
+ message: OK
+ headers:
+ Access-Control-Allow-Headers:
+ - content-type, authorization, content-length, x-requested-with, x-api-version,
+ x-airtable-application-id, user-agent, x-airtable-user-agent
+ Access-Control-Allow-Methods:
+ - GET,PUT,POST,PATCH,DELETE,OPTIONS
+ Access-Control-Allow-Origin:
+ - "*"
+ Content-Type:
+ - application/json; charset=utf-8
+ Date:
+ - Sun, 06 May 2018 16:27:04 GMT
+ Etag:
+ - W/"7f15-r62oO8NOnrSkz5HdI+/nw9mwzDU"
+ Server:
+ - Tengine
+ Vary:
+ - Accept-Encoding
+ Content-Length:
+ - '32533'
+ Connection:
+ - keep-alive
+ body:
+ encoding: ASCII-8BIT
+ string: !binary |-
+ eyJyZWNvcmRzIjpbeyJpZCI6InJlYzBTRFpESzJEaVc0UFk5IiwiZmllbGRz
+ Ijp7IlNsYWNrIE5hbWUiOiJ3YW5ndHJvbiIsIkZ1bGwgTmFtZSI6IkV2YW5z
+ IFdhbmciLCJTa2lsbHNldHMiOlsicmVjSkJCN1p4VE9NNndMNXciLCJyZWM5
+ bG5IWmFEdDJDdlZyWiIsInJlY2FvRXgxcTBRUnB2Y2FSIiwicmVjQ1ZjN3Uz
+ a0NPTmhKZkYiLCJyZWNuUEhEZFdXMUowNmV2TyIsInJlY2s0bGtPVGtmc01S
+ UGtSIl0sIkFjdGl2ZSI6dHJ1ZSwiTWVudG9yIFJlcXVlc3QiOlsicmVjaFNr
+ YzdwNDFzeDVqWXEiLCJyZWN6MXZJcUpuVFR6RGNCUyJdLCJFbWFpbCI6ImV2
+ YW5zLndhbmdAb3BlcmF0aW9uY29kZS5vcmcifSwiY3JlYXRlZFRpbWUiOiIy
+ MDE4LTAyLTIyVDE1OjU5OjQ1LjAwMFoifSx7ImlkIjoicmVjMlFMUTc2dGhB
+ VlFqSDAiLCJmaWVsZHMiOnsiU2xhY2sgTmFtZSI6IkBidWlsdGJ5Y29vcGVy
+ IiwiRnVsbCBOYW1lIjoiRXZhbiBDb29wZXIiLCJTa2lsbHNldHMiOlsicmVj
+ SkJCN1p4VE9NNndMNXciLCJyZWNxbXlDV2pQU0FxZ0NvcCIsInJlY25QSERk
+ V1cxSjA2ZXZPIiwicmVjazRsa09Ua2ZzTVJQa1IiLCJyZWM1RllYVTZqVG5Y
+ S1BIZyJdLCJBY3RpdmUiOnRydWUsIkVtYWlsIjoiZXZhbm5jb29wZXJAZ21h
+ aWwuY29tIn0sImNyZWF0ZWRUaW1lIjoiMjAxOC0wMy0yNVQyMTo0NDo1Mi4w
+ MDBaIn0seyJpZCI6InJlYzM4cHNsN3pJOHAzYWlUIiwiZmllbGRzIjp7IlNs
+ YWNrIE5hbWUiOiJsb25nX2NvbW1vbl9uYW1lIiwiRnVsbCBOYW1lIjoiV2ls
+ bGlhbSBNb250Z29tZXJ5IiwiU2tpbGxzZXRzIjpbInJlY2V3ZjFqTGNPMVFs
+ VmZZIiwicmVjbDhWd28yeHVGaUVySnkiLCJyZWNxbXlDV2pQU0FxZ0NvcCIs
+ InJlY0NWYzd1M2tDT05oSmZGIiwicmVjNUZZWFU2alRuWEtQSGciLCJyZWNm
+ SU56ckZmTEtTSTBHViJdLCJNYXggTWVudGVlcyI6MiwiQmlvIjoiUHJldmlv
+ dXNseSBVUyBBaXIgRm9yY2UgTWVkaWNhbCBMYWIgVGVjaCBhbmQgY3VycmVu
+ dGx5IGEgRGV2ZWxvcGVyIGF0IFRyYXZlbHBvcnQuICBFbmpveWluZyBkYXRh
+ IGFuYWx5c2lzLCBkYXRhIG1hbmlwdWxhdGlvbiwgbGVhcm5pbmcgZnJvbnQg
+ ZW5kIGFuZCBoZWxwaW5nIG90aGVyIHdpdGggcHl0aG9uLCBPQyBjb21tdW5p
+ dHkgbWVtYmVyIHNpbmNlIG1hciAyMDE3IiwiQWN0aXZlIjp0cnVlLCJNZW50
+ b3IgUmVxdWVzdCI6WyJyZWNTWUJNenpkVjBOdmU4eiIsInJlY0VndzI3OE1i
+ WEZQalhWIiwicmVjeTZxb3BwU0tCeXAxa0giLCJyZWNEdGtwbjRmMEh3WmdP
+ bSJdLCJFbWFpbCI6IndpbW83MDgzQGNvbG9yYWRvLmVkdSJ9LCJjcmVhdGVk
+ VGltZSI6IjIwMTgtMDItMDRUMjA6NTM6MjkuMDAwWiJ9LHsiaWQiOiJyZWM0
+ MjVWOWM4RHNRS2NrQyIsImZpZWxkcyI6eyJTbGFjayBOYW1lIjoidmluY2Vu
+ dCIsIkZ1bGwgTmFtZSI6IlZpbmNlbnQgQWJydXp6byIsIlNraWxsc2V0cyI6
+ WyJyZWNKQkI3WnhUT002d0w1dyIsInJlY25QSERkV1cxSjA2ZXZPIiwicmVj
+ RTZHR2tMNHcyVDZwbkMiLCJyZWNmdzc4VmRuRDd0cFpWeiIsInJlYzVGWVhV
+ NmpUblhLUEhnIiwicmVjYW9FeDFxMFFScHZjYVIiLCJyZWNxbXlDV2pQU0Fx
+ Z0NvcCIsInJlY2s0bGtPVGtmc01SUGtSIiwicmVjQ1ZjN3Uza0NPTmhKZkYi
+ LCJyZWNTanJsc0h0V2g5WFdPUCIsInJlY1dCTGZaQWJOZlBTcExyIiwicmVj
+ bjRJT3FyUTV1cEN3d1kiXSwiQWN0aXZlIjp0cnVlLCJFbWFpbCI6InZnYWJy
+ dXp6b0BnbWFpbC5jb20ifSwiY3JlYXRlZFRpbWUiOiIyMDE4LTAzLTI0VDE5
+ OjE0OjA3LjAwMFoifSx7ImlkIjoicmVjNm5BNFdJcmhDdEtXNW4iLCJmaWVs
+ ZHMiOnsiU2xhY2sgTmFtZSI6ImpheSIsIkZ1bGwgTmFtZSI6IkpheSBEb3Jz
+ ZXkiLCJTa2lsbHNldHMiOlsicmVjU2pybHNIdFdoOVhXT1AiLCJyZWM5bG5I
+ WmFEdDJDdlZyWiIsInJlY0NWYzd1M2tDT05oSmZGIl0sIkFjdGl2ZSI6dHJ1
+ ZSwiTWVudG9yIFJlcXVlc3QiOlsicmVjVmxzY1Q1SWVWN0p5MGoiXSwiRW1h
+ aWwiOiJqYXlkb3JzZXlAZmFzdG1haWwuY29tIn0sImNyZWF0ZWRUaW1lIjoi
+ MjAxOC0wMi0xMFQyMTo0MDo0OC4wMDBaIn0seyJpZCI6InJlYzdaU0VCclVK
+ VTlPd1JrIiwiZmllbGRzIjp7IlNsYWNrIE5hbWUiOiJFZHdpbiIsIkZ1bGwg
+ TmFtZSI6IkVkd2luIE0gVCBDYXJ0ZXIiLCJTa2lsbHNldHMiOlsicmVjNUZZ
+ WFU2alRuWEtQSGciLCJyZWNhb0V4MXEwUVJwdmNhUiIsInJlY1dCTGZaQWJO
+ ZlBTcExyIiwicmVjSkhpVlFOSUMzT05NV3MiXSwiQWN0aXZlIjp0cnVlLCJF
+ bWFpbCI6ImNhcnRlci5lZHdpbkBnbWFpbC5jb20ifSwiY3JlYXRlZFRpbWUi
+ OiIyMDE4LTAzLTI3VDE0OjQyOjU0LjAwMFoifSx7ImlkIjoicmVjN2k3SFlN
+ Ulg2QUFyQlMiLCJmaWVsZHMiOnsiU2xhY2sgTmFtZSI6IlBhdHJpY2lhIEdh
+ dGVzIiwiRnVsbCBOYW1lIjoiUGF0cmljaWEgR2F0ZXMiLCJTa2lsbHNldHMi
+ OlsicmVjSW1yb1duZDZwMDJhWHUiLCJyZWNhb0V4MXEwUVJwdmNhUiIsInJl
+ YzVGWVhVNmpUblhLUEhnIl0sIkFjdGl2ZSI6dHJ1ZSwiTWVudG9yIFJlcXVl
+ c3QiOlsicmVjVUFqUmNXMU9qM0FiTnYiXSwiRW1haWwiOiJwYXRyaWNpYS5h
+ bml0YS5nYXRlc0BnbWFpbC5jb20ifSwiY3JlYXRlZFRpbWUiOiIyMDE4LTAz
+ LTI0VDE5OjE0OjA3LjAwMFoifSx7ImlkIjoicmVjOGdXVWEyYWd2V2U2Zmoi
+ LCJmaWVsZHMiOnsiU2xhY2sgTmFtZSI6IktlbiBNdWdyYWdlIiwiRnVsbCBO
+ YW1lIjoiS2VuIE11Z3JhZ2UiLCJTa2lsbHNldHMiOlsicmVjU2pybHNIdFdo
+ OVhXT1AiLCJyZWNhb0V4MXEwUVJwdmNhUiJdLCJXaGF0IHRpbWUgem9uZSBh
+ cmUgeW91IGluPyI6IlBhY2lmaWMiLCJCaW8iOiJTZXBhcmF0ZWQgZnJvbSB0
+ aGUgVVNNQyBpbiAnODkuXG5cbkFmdGVyIHRoYXQgSSB3b3JrZWQgYXMgYSBz
+ eXNhZG1pbiBmb3IgU2VhdHRsZSdzIGZpcnN0IGludGVybmV0IHNlcnZpY2Ug
+ cHJvdmlkZXIgYW5kIHRoZW4gd2VudCBvbiB0byBmb3VuZCBteSBvd24gd2Vi
+ IGRldmVsb3BtZW50IGNvbXBhbnkgaW4gMTk5NC4gSW4gdGhlIHllYXJzIHNp
+ bmNlIEkndmUgaGVsZCBqdXN0IGFib3V0IGV2ZXJ5IHRlY2huaWNhbCByb2xl
+ IGluIGEgc29mdHdhcmUgY29tcGFueSwgZnJvbSBkZXZlbG9wZXIgdG8gQ1RP
+ LiBcblxuSSBjdXJyZW50bHkgdGVhY2ggQ29udGludW91cyBEZWxpdmVyeSBh
+ bmQgRGV2T3BzIGZvciBUaG91Z2h0V29ya3MuIEknbSBhbHNvIG9uZSBvZiB0
+ aGUgZ2xvYmFsIGNvcmUgb3JnYW5pemVycyBmb3IgRGV2T3BzRGF5cyAod2hl
+ cmUgdGhlIHRlcm0gRGV2T3BzIGNvbWVzIGZyb20pIFxuXG5JJ20gaGFwcHkg
+ dG8gb2ZmZXIgaGVscCB0byBhbnlvbmUgd2hvIG5lZWRzIGl0LiBJIHRyYXZl
+ bCBnbG9iYWxseSBmYWlybHkgb2Z0ZW4gc28gdGltZSB6b25lcyBjYW4gYmUg
+ YSBjaGFsbGVuZ2UsIGJ1dCBwcmV0dHkgZmxleGlibGUgb3RoZXJ3aXNlLiIs
+ IkFjdGl2ZSI6dHJ1ZSwiU2VydmljZXMiOlsicmVjcnk4czE0cUdKaEhlT0Mi
+ LCJyZWN0emdUR29ReXkyRlZNQyIsInJlY04wbEo0NkJZbnNJOHo5Il0sIk1l
+ bnRvciBSZXF1ZXN0IjpbInJlY040QUNyeU5CWmo4N01tIl0sIkVtYWlsIjoi
+ a211Z3JhZ2VAZ21haWwuY29tIiwiQ29kZSBvZiBDb25kdWN0IEFjY2VwdGVk
+ PyI6dHJ1ZSwiR3VpZGVib29rIFJlYWQ/Ijp0cnVlfSwiY3JlYXRlZFRpbWUi
+ OiIyMDE4LTA0LTExVDAwOjIxOjE0LjAwMFoifSx7ImlkIjoicmVjOGhDdmRj
+ d0EydFIzdkYiLCJmaWVsZHMiOnsiU2xhY2sgTmFtZSI6IkVyaWsiLCJGdWxs
+ IE5hbWUiOiJFcmlrIEFuZGVyc29uIiwiU2tpbGxzZXRzIjpbInJlYzlsbkha
+ YUR0MkN2VnJaIiwicmVjQkloRGR1SkQzWUxhSHEiLCJyZWNuUEhEZFdXMUow
+ NmV2TyIsInJlY2V3ZjFqTGNPMVFsVmZZIiwicmVjRTZHR2tMNHcyVDZwbkMi
+ LCJyZWN3RmZJcnZQZXEwcUdYRyIsInJlYzhJVktlVHJ3c2dVUGNnIiwicmVj
+ Znc3OFZkbkQ3dHBaVnoiLCJyZWNhb0V4MXEwUVJwdmNhUiIsInJlY3FteUNX
+ alBTQXFnQ29wIiwicmVjazRsa09Ua2ZzTVJQa1IiLCJyZWNDVmM3dTNrQ09O
+ aEpmRiIsInJlY1NqcmxzSHRXaDlYV09QIiwicmVjajJvbWR1N1duSVhMSmsi
+ LCJyZWNXQkxmWkFiTmZQU3BMciIsInJlY3lHNnNjRVR0eFp1VE54Il0sIk1h
+ eCBNZW50ZWVzIjoxLCJFbWFpbCI6ImVhbmRlcnNAcG9ib3guY29tIn0sImNy
+ ZWF0ZWRUaW1lIjoiMjAxOC0wNC0yNFQxNjo1MToyOC4wMDBaIn0seyJpZCI6
+ InJlYzlNY3M1SlRGeFZvS1QxIiwiZmllbGRzIjp7IlNsYWNrIE5hbWUiOiJr
+ eWxlbWgiLCJGdWxsIE5hbWUiOiJLeWxlIEhvbG1iZXJnIiwiU2tpbGxzZXRz
+ IjpbInJlY0pCQjdaeFRPTTZ3TDV3IiwicmVjZXdmMWpMY08xUWxWZlkiLCJy
+ ZWNFNkdHa0w0dzJUNnBuQyIsInJlY0ltcm9XbmQ2cDAyYVh1IiwicmVjcW15
+ Q1dqUFNBcWdDb3AiLCJyZWNDVmM3dTNrQ09OaEpmRiIsInJlY25QSERkV1cx
+ SjA2ZXZPIiwicmVjazRsa09Ua2ZzTVJQa1IiLCJyZWM1RllYVTZqVG5YS1BI
+ ZyJdLCJBY3RpdmUiOnRydWUsIkVtYWlsIjoia3lsZW1oLmVtYWlsQGdtYWls
+ LmNvbSJ9LCJjcmVhdGVkVGltZSI6IjIwMTgtMDMtMjVUMjE6NDQ6NDkuMDAw
+ WiJ9LHsiaWQiOiJyZWNCTTlpYUx3YUFlZTRCUSIsImZpZWxkcyI6eyJTbGFj
+ ayBOYW1lIjoia2V2aW4ua2lrLmxlZSIsIkZ1bGwgTmFtZSI6IktldmluIEsu
+ IExlZSIsIlNraWxsc2V0cyI6WyJyZWNwZFY2dkFtdG1JNXBzTSIsInJlY1R1
+ N3Q1TTBWaUlMbTVBIiwicmVjSkJCN1p4VE9NNndMNXciLCJyZWM5bG5IWmFE
+ dDJDdlZyWiIsInJlY0U2R0drTDR3MlQ2cG5DIl0sIldoYXQgdGltZSB6b25l
+ IGFyZSB5b3UgaW4/IjoiRVNUIiwiQmlvIjoiSm9obiBIYW1wdG9uIHdhcyBh
+ c3NpZ25lZCB0byBtZSBhcyBhIG1lbnRvci4gIFdoZW4gSSBzdGFydGVkIG15
+ IGNyYXp5IGpvdXJuZXkgb2YgZ2V0dGluZyBpbnRvIGNvZGluZywgSSBmZWx0
+ IHN1Y2ggY29tZm9ydCBrbm93aW5nIHRoYXQgdGhlcmUgd2FzIHNvbWVvbmUg
+ aW4gdGhlIHdvcmxkIGtlZXBpbmcgdHJhY2sgb2Ygd2hhdCBJIGFtIGRvaW5n
+ LiAgSSB3YW50IHRvIHByb3ZpZGUgdGhlIHNhbWUgZm9yIG90aGVycy4gICIs
+ IkFjdGl2ZSI6dHJ1ZSwiU2VydmljZXMiOlsicmVjdHpnVEdvUXl5MkZWTUMi
+ LCJyZWNyeThzMTRxR0poSGVPQyIsInJlY3hEcnBGTDl3NXROemtXIiwicmVj
+ S0xSVW9sQ3hzdldCdUYiLCJyZWMzWlFNQ1FzS1BLbEUyQyIsInJlY04wbEo0
+ NkJZbnNJOHo5Il0sIk1lbnRvciBSZXF1ZXN0IjpbInJlY3E0QjhhZ3V4R1dk
+ Y3dUIl0sIkVtYWlsIjoia2V2aW4ua2lrLmxlZUBnbWFpbC5jb20iLCJDb2Rl
+ IG9mIENvbmR1Y3QgQWNjZXB0ZWQ/Ijp0cnVlLCJHdWlkZWJvb2sgUmVhZD8i
+ OnRydWV9LCJjcmVhdGVkVGltZSI6IjIwMTgtMDEtMTJUMTc6MzU6NDguMDAw
+ WiJ9LHsiaWQiOiJyZWNFb2U5WXFzNllNR20xTCIsImZpZWxkcyI6eyJTbGFj
+ ayBOYW1lIjoibWFnZ2kiLCJGdWxsIE5hbWUiOiJNYWdnaSBNb2xpbmEiLCJT
+ a2lsbHNldHMiOlsicmVjVVY5RExFb0sxSnFSVjkiLCJyZWN6bDVsaVFKT0pD
+ YXA3TCIsInJlY3lHbmRnVVlra3lQQ3JTIiwicmVjZjBVYlBXdzI4OUxLanci
+ LCJyZWNSeVBCd04xSkJqOUQ5bCIsInJlY1hlVjRGbTBsSG5VdDJlIl0sIkFj
+ dGl2ZSI6dHJ1ZSwiTWVudG9yIFJlcXVlc3QiOlsicmVjeTlaT2dHQ2RKNE9q
+ eFgiLCJyZWNqczBtUWpMMDFveVFnaiIsInJlY2xFc2I1VG42M1l6MTd1Il0s
+ IkVtYWlsIjoibWFnZ2lAb3BlcmF0aW9uY29kZS5vcmcifSwiY3JlYXRlZFRp
+ bWUiOiIyMDE3LTA2LTA3VDE5OjM1OjUxLjAwMFoifSx7ImlkIjoicmVjRXJB
+ VlJac2p3anBVTEwiLCJmaWVsZHMiOnsiU2xhY2sgTmFtZSI6IkhpbHRzIiwi
+ Tm90ZXMiOiJHbyB0byBZb3VUdWJlIGFuZCBzZWFyY2ggZm9yIFwiYm9iJ3Mg
+ YXV0aG9yIHRhbGtzXCIgdG8gc2VlIG1lLiAgSSBob3N0ZWQgYWJvdXQgMTUg
+ dGFsa3MgYXQgR29vZ2xlLiIsIkZ1bGwgTmFtZSI6IkJvYiBQdXJ2eSIsIlNr
+ aWxsc2V0cyI6WyJyZWNld2YxakxjTzFRbFZmWSIsInJlY0U2R0drTDR3MlQ2
+ cG5DIiwicmVjb3NSdmlMb0JDZ2g2VHEiLCJyZWNJbXJvV25kNnAwMmFYdSIs
+ InJlY2oyb21kdTdXbklYTEprIiwicmVjNUZZWFU2alRuWEtQSGciXSwiV2hh
+ dCB0aW1lIHpvbmUgYXJlIHlvdSBpbj8iOiJQYWNpZmljIiwiQmlvIjoiSSdt
+ IHJldGlyZWQgbm93LCBhZnRlciAxMiB5ZWFycyBhdCBHb29nbGU7ICBhbHNv
+ IGEgc3VjY2Vzc2Z1bCBzdGFydHVwIChQYWNrZXRlZXIpOyAgT3JhY2xlOyAg
+ M0NvbTsgIFhlcm94ICh0aGUgWGVyb3ggU3RhcikuICBNLlMuIGluIENvbXB1
+ dGVyIFNjaWVuY2UgZnJvbSBVLiBvZiBJbGxpbm9pcy4iLCJBY3RpdmUiOnRy
+ dWUsIlNlcnZpY2VzIjpbInJlY3R6Z1RHb1F5eTJGVk1DIiwicmVjcnk4czE0
+ cUdKaEhlT0MiLCJyZWNOMGxKNDZCWW5zSTh6OSJdLCJNZW50b3IgUmVxdWVz
+ dCI6WyJyZWNoT1kwTHZuck81cDh1TSIsInJlYzZQbXZ4VTg1cDU5Z0lLIiwi
+ cmVjVVEyU2xnVlptdXA4ak0iXSwiRW1haWwiOiJicHVydnlAZ21haWwuY29t
+ IiwiQ29kZSBvZiBDb25kdWN0IEFjY2VwdGVkPyI6dHJ1ZSwiR3VpZGVib29r
+ IFJlYWQ/Ijp0cnVlfSwiY3JlYXRlZFRpbWUiOiIyMDE3LTExLTI2VDE1OjUw
+ OjU0LjAwMFoifSx7ImlkIjoicmVjRjRvQnpqRTNKNkEwd28iLCJmaWVsZHMi
+ OnsiU2xhY2sgTmFtZSI6InRvYWR6a3kiLCJGdWxsIE5hbWUiOiJEYXZpZCBI
+ YXJyaXMiLCJTa2lsbHNldHMiOlsicmVjU2pybHNIdFdoOVhXT1AiLCJyZWNK
+ QkI3WnhUT002d0w1dyIsInJlY0U2R0drTDR3MlQ2cG5DIiwicmVjb3NSdmlM
+ b0JDZ2g2VHEiLCJyZWNDVmM3dTNrQ09OaEpmRiIsInJlY09mR3k5dE1lVXdq
+ Tjc4IiwicmVjNUZZWFU2alRuWEtQSGciXSwiTWF4IE1lbnRlZXMiOjIsIldo
+ YXQgdGltZSB6b25lIGFyZSB5b3UgaW4/IjoiTW91bnRhaW4iLCJIb3cgbWFu
+ eSBob3VycyB3b3VsZCB5b3UgbGlrZSB0byBtZW50b3IgZm9yLCBwZXIgbW9u
+ dGg/IjoiNCIsIkJpbyI6IkknbSBhIHByb2Zlc3Npb25hbCBzb2Z0d2FyZSBl
+ bmdpbmVlciB3aXRoIGEgZGVncmVlIGluIENvbXB1dGVyIFNjaWVuY2UuIEkg
+ ZGlkIDExIHllYXJzIGluIHRoZSBBcm15IE5hdGlvbmFsIEd1YXJkLCBpbmNs
+ dWRpbmcgMiBkZXBsb3ltZW50cyB0byBJcmFxLiBJIHNwZWNpYWxpemUgaW4g
+ YmFja2VuZCBzeXN0ZW1zIGZvciBjbG91ZCBzZXJ2aWNlcywgbW9zdGx5IHdy
+ aXR0ZW4gaW4gSmF2YSwgYnV0IHdpdGggZXhwZXJpZW5jZSBpbiBDIyBhbmQg
+ Tm9kZSBhcyB3ZWxsLiBJJ3ZlIGFsc28gZG9uZSBzb21lIG1vYmlsZSB3b3Jr
+ LCBib3RoIGluIG5hdGl2ZSBBbmRyb2lkIGFuZCB1c2luZyB0aGUgWGFtYXJp
+ biBDIyBmcmFtZXdvcmsuIFxuXG5JIGNhbWUgdG8gT3BlcmF0aW9uIENvZGUg
+ dGhyb3VnaCBhIGZyaWVuZCBmcm9tIGEgcHJldmlvdXMgam9iLiBJJ20gaGFw
+ cHkgdG8gbWVudG9yIGFueW9uZSwgYnV0IEknZCBwcmVmZXIgc29tZW9uZSB3
+ aG8gaXMgaW50ZXJlc3RlZCBpbiBzb2Z0d2FyZSBkZXZlbG9wbWVudCBiZWNh
+ dXNlIHRoZXkgaGF2ZSBhIHBhc3Npb24gZm9yIHByb2JsZW0gc29sdmluZyBh
+ bmQgdGVjaG5vbG9neSwgbm90IGp1c3QgYmVjYXVzZSBpdCdzIGEgaGlnaCBw
+ YXlpbmcgam9iLiIsIkFjdGl2ZSI6dHJ1ZSwiTWVudG9yIFJlcXVlc3QiOlsi
+ cmVjUWRkQ3UyNmowTUdtTzUiLCJyZWM1amF3a0tQUUtpbE83dCIsInJlY2RH
+ UGljVTNBTTZqVW50IiwicmVjZU9TMzgxVGhLOEwyN3YiXSwiRW1haWwiOiJ0
+ b2Fkemt5QGdtYWlsLmNvbSJ9LCJjcmVhdGVkVGltZSI6IjIwMTctMDItMTRU
+ MTY6MjI6MDQuMDAwWiJ9LHsiaWQiOiJyZWNHcDJkeXREdDMyb2psNiIsImZp
+ ZWxkcyI6eyJTbGFjayBOYW1lIjoiZnJvc3RtYXR0aGV3IiwiRnVsbCBOYW1l
+ IjoiTWF0dGhldyBGcm9zdCIsIlNraWxsc2V0cyI6WyJyZWNFNkdHa0w0dzJU
+ NnBuQyIsInJlY29zUnZpTG9CQ2doNlRxIiwicmVjOWxuSFphRHQyQ3ZWcloi
+ LCJyZWNxbXlDV2pQU0FxZ0NvcCIsInJlY0NWYzd1M2tDT05oSmZGIiwicmVj
+ NUZZWFU2alRuWEtQSGciXSwiV2hhdCB0aW1lIHpvbmUgYXJlIHlvdSBpbj8i
+ OiJFYXN0ZXJuIiwiQmlvIjoiSSd2ZSBiZWVuIGEgc29mdHdhcmUgZW5naW5l
+ ZXIgZm9yIG92ZXIgZml2ZSB5ZWFycy4gVGhlIGZpcnN0IHR3byB5ZWFycyBJ
+ IHdhcyB0aGUgc29sZSBkZXZlbG9wZXIgYXQgYSBzbWFsbCBJbmZvU2VjIG5v
+ bnByb2ZpdCBhbmQgZm9yIHRoZSBsYXN0IHRocmVlIEkndmUgYmVlbiBhdCBW
+ TXdhcmUgd29ya2luZyBvbiB2Q2xvdWQgRGlyZWN0b3IuIFByaW9yIHRvIHRo
+ YXQgSSB3b3JrZWQgaW4gaG90ZWxzIGFzIGEgYmFucXVldCBtYW5hZ2VyIGJl
+ Zm9yZSBnb2luZyBiYWNrIHRvIHNjaG9vbCB0byBzd2l0Y2ggY2FyZWVycy5c
+ blxuSSBqdXN0IGRpc2NvdmVyZWQgT3BlcmF0aW9uIENvZGUgYSBjb3VwbGUg
+ ZGF5cyBhZ28gdGhhbmtzIHRvIGEgQmFja0NoYW5uZWwgcG9zdCBhbmQgSSdt
+ IGluY3JlZGlibHkgZXhjaXRlZCBieSBpdHMgbWlzc2lvbiBhcyBJIGhhdmUg
+ YSBzdHJvbmcgaW50ZXJlc3QgaW4gaGVscGluZyB0aG9zZSB3aG8gaGF2ZSBz
+ ZXJ2ZWQgKGUuZy4gYXQgVk13YXJlIEknbSBvbiBhbiBpbmZvcm1hbCBjb21t
+ aXR0ZWUgdG8gZW5jb3VyYWdlIChjb21wYW55LXdpZGUpIGhpcmluZyBvZiB2
+ ZXRlcmFucykuIiwiQWN0aXZlIjp0cnVlLCJTZXJ2aWNlcyI6WyJyZWN0emdU
+ R29ReXkyRlZNQyIsInJlY3J5OHMxNHFHSmhIZU9DIiwicmVjS0xSVW9sQ3hz
+ dldCdUYiLCJyZWMzWlFNQ1FzS1BLbEUyQyIsInJlY04wbEo0NkJZbnNJOHo5
+ Il0sIk1lbnRvciBSZXF1ZXN0IjpbInJlY1BYeHNqa3hDSzMwbDV3IiwicmVj
+ N0MzYUQxWjRXSmNHbkQiLCJyZWNCRVBHdGpTYUE0dnl0YSIsInJlY0tvWGZK
+ Wmh5Q0RVRkNWIiwicmVjMUNNdlRZZ2NNM2MwQTUiLCJyZWNmNmZ1emRnWTRm
+ d2dRbSIsInJlY2hDdjFheDA0cks4a3p5IiwicmVjN3Vmd1M0SWQzVk9rZTUi
+ LCJyZWM5VDFBUDJ0ZVdRTHRFZiJdLCJFbWFpbCI6Im1mQG1hdHRoZXdmcm9z
+ dC5jb20ifSwiY3JlYXRlZFRpbWUiOiIyMDE3LTA1LTA3VDE0OjIwOjExLjAw
+ MFoifSx7ImlkIjoicmVjSDhlMlpEdGZ0YkZxUkMiLCJmaWVsZHMiOnsiU2xh
+ Y2sgTmFtZSI6IkppbSBGdW5nIiwiRnVsbCBOYW1lIjoiSmltIEZ1bmciLCJT
+ a2lsbHNldHMiOlsicmVjOWxuSFphRHQyQ3ZWcloiLCJyZWNhb0V4MXEwUVJw
+ dmNhUiIsInJlY3FteUNXalBTQXFnQ29wIiwicmVjQ1ZjN3Uza0NPTmhKZkYi
+ XSwiTWF4IE1lbnRlZXMiOjEsIkFjdGl2ZSI6dHJ1ZSwiRW1haWwiOiJqaW10
+ aGVlbmdpbmVlckBnbWFpbC5jb20ifSwiY3JlYXRlZFRpbWUiOiIyMDE4LTA0
+ LTA0VDAwOjM2OjEwLjAwMFoifSx7ImlkIjoicmVjSVBLSW5TdnhyMzByY0Yi
+ LCJmaWVsZHMiOnsiU2xhY2sgTmFtZSI6ImFiYW50aGVzIiwiRnVsbCBOYW1l
+ IjoiQWxsZW4gQW50aGVzIiwiU2tpbGxzZXRzIjpbInJlYzZpcWhNeEhobFJa
+ cmh4Il0sIkJpbyI6IkZvciB0ZXN0aW5nIiwiTWVudG9yIFJlcXVlc3QiOlsi
+ cmVjV2c0bTdSQU4xeXVoSDQiXSwiRW1haWwiOiJhYmFudGhlc0BnbWFpbC5j
+ b20ifSwiY3JlYXRlZFRpbWUiOiIyMDE4LTAzLTE5VDE4OjA1OjEyLjAwMFoi
+ fSx7ImlkIjoicmVjSjhXaTJMT3FsWTFnYWYiLCJmaWVsZHMiOnsiU2xhY2sg
+ TmFtZSI6ImpkdWNvZXVyIiwiRnVsbCBOYW1lIjoiTWFyayBXYWtzIiwiU2tp
+ bGxzZXRzIjpbInJlY2Z3NzhWZG5EN3RwWlZ6IiwicmVjWkcxNHNTN1lZVmtW
+ M1IiXSwiQWN0aXZlIjp0cnVlLCJFbWFpbCI6ImpkdWNvZXVyQGdtYWlsLmNv
+ bSJ9LCJjcmVhdGVkVGltZSI6IjIwMTgtMDMtMjRUMTk6MTE6MDMuMDAwWiJ9
+ LHsiaWQiOiJyZWNKa1lmYlJidXhPWFRMQSIsImZpZWxkcyI6eyJTbGFjayBO
+ YW1lIjoiaGFycnkiLCJOb3RlcyI6IkhlcmUgYXJlIHNvbWUgcmVsZXZhbnQg
+ bGlua3M6XG5cbmh0dHBzOi8vZ2l0aHViLmNvbS9ocGphalxuaHR0cHM6Ly93
+ d3cubGlua2VkaW4uY29tL2luL2hhcnJ5bWxldmluZS9cbmh0dHBzOi8vYmxv
+ Zy50ZWNoYXRwb3dlci5jb20vQGhhcnJ5bWxldmluZVxuaHR0cDovL2hwamFq
+ LmNvbS9cbmh0dHBzOi8vbWVkaXVtLmNvbS9AaGFycnltbGV2aW5lL2EtdGVh
+ Y2hlcnMtdHdvLWNlbnRzLXdoZW4tbGVhcm5pbmctcnVieS1vbi1yYWlscy1j
+ ZjUxODA4NTgxZDRcblxuVGhhbmtzISIsIkFzc2lnbm1lbnRzIjpbInJlYzJS
+ bmJVMk13Z2Z2dHVkIl0sIkZ1bGwgTmFtZSI6IkhhcnJ5IExldmluZSIsIlNr
+ aWxsc2V0cyI6WyJyZWM5bG5IWmFEdDJDdlZyWiIsInJlY3FteUNXalBTQXFn
+ Q29wIiwicmVjQ1ZjN3Uza0NPTmhKZkYiXSwiV2hhdCB0aW1lIHpvbmUgYXJl
+ IHlvdSBpbj8iOiJNb3VudGFpbiIsIkJpbyI6IknigJltIGEgZnVsbCBzdGFj
+ ayB3ZWIgZGV2ZWxvcGVyIGZvciBQb3dlciBIUkcgKHd3dy5wb3dlcmhyZy5j
+ b20pLCBwcmltYXJpbHkgZm9jdXNzZWQgb24gUnVieSBvbiBSYWlscy4gIEJl
+ aW5nIGZ1bGwgc3RhY2ssIEkgYWxzbyB1c2UgSFRNTCwgQ1NTLCBhbmQgSmF2
+ YVNjcmlwdCBzb21ld2hhdCByZWd1bGFybHkuXG5cbkkgbGl2ZSBpbiBEZW52
+ ZXIsIENPLiAgSSBoYXZlIGJlZW4gYSBzb2Z0d2FyZSBkZXZlbG9wZXIsIHBy
+ b2Zlc3Npb25hbGx5LCBmb3IganVzdCB1bmRlciB0aHJlZSB5ZWFycy4gIEFz
+ IHBhcnQgb2YgbXkgdHJhbnNpdGlvbiBpbnRvIHNvZnR3YXJlIGRldmVsb3Bt
+ ZW50LCBJIGF0dGVuZGVkIGFuZCBncmFkdWF0ZWQgZnJvbSBCbG9jLmlvLlxu
+ XG5QcmlvciB0byBjb2RpbmcgSSB3YXMgaW4gdGVhY2hpbmcgYW5kIGVkdWNh
+ dGlvbiBmb3IgMTIgeWVhcnMuICBJIGRpZCBldmVyeXRoaW5nIGZyb20gVC5B
+ LidpbmcgY29sbGVnZSBLaW5lc2lvbG9neSwgdG8gdHV0b3JpbmcgY2hpbGRy
+ ZW4gaW4gSXRhbHksIHRvIHRlYWNoaW5nIGhpZ2ggc2Nob29sIHNjaWVuY2Us
+ IHRvIGNvcnBvcmF0ZSB0cmFpbmluZywgdG8gdGVjaG5pY2FsIHRyYWluaW5n
+ IGZvciBhIHNvZnR3YXJlIGNvbXBhbnksIHRvIHRlY2huaWNhbCB0cmFpbmlu
+ ZyBkb25lIHZpcnR1YWxseSAodmlhIEdvVG9NZWV0aW5nLCBldGMuKSwgdG8g
+ YmVpbmcgdGhlIGRpcmVjdG9yIG9mIHRyYWluaW5nIGZvciBhIHNvZnR3YXJl
+ IGNvbXBhbnksIHRvIGluc3RydWN0aW9uYWwgZGVzaWduLCB0byBjdXJyaWN1
+ bHVtIGRldmVsb3BtZW50LCBhbmQgbW9yZS5cblxuSSBqb2luZWQgT3BlcmF0
+ aW9uIENvZGUgdG8gc2VlIGlmIEkgY2FuIGxlbmQgYSBoYW5kIHRvIGFueW9u
+ ZSBvdXQgdGhlcmUgbGVhcm5pbmcgdG8gY29kZS4gIEnigJl2ZSBiZWVuIHRo
+ ZXJlLCBJIGFwcHJlY2lhdGUgb3VyIHZldGVyYW5zLCBhbmQgd291bGQgbGlr
+ ZSB0byBoZWxwIGlmIEkgY2FuISIsIkFjdGl2ZSI6dHJ1ZSwiU2VydmljZXMi
+ OlsicmVjdHpnVEdvUXl5MkZWTUMiLCJyZWNyeThzMTRxR0poSGVPQyIsInJl
+ Y3hEcnBGTDl3NXROemtXIiwicmVjS0xSVW9sQ3hzdldCdUYiXSwiTWVudG9y
+ IFJlcXVlc3QiOlsicmVjSmYzb0hYQk56QWRKSzgiLCJyZWNBd1FUdkZlSVRU
+ ZlhlOCIsInJlY3ZKdTIyelo0eHk1RkdzIl0sIkVtYWlsIjoiaG1sZXZpbmVA
+ Z21haWwuY29tIn0sImNyZWF0ZWRUaW1lIjoiMjAxNy0wNS0xNFQwMTo0Njo1
+ NS4wMDBaIn0seyJpZCI6InJlY1AwTk5EZkRxMDJ2bDZZIiwiZmllbGRzIjp7
+ IlNsYWNrIE5hbWUiOiJib25pY2lsbG8ubSIsIkZ1bGwgTmFtZSI6Ik1hcmsg
+ Qm9uaWNpbGxvIiwiU2tpbGxzZXRzIjpbInJlY2V3ZjFqTGNPMVFsVmZZIiwi
+ cmVjb3NSdmlMb0JDZ2g2VHEiLCJyZWNsOFZ3bzJ4dUZpRXJKeSIsInJlY0lt
+ cm9XbmQ2cDAyYVh1IiwicmVjZnc3OFZkbkQ3dHBaVnoiLCJyZWNVVjlETEVv
+ SzFKcVJWOSIsInJlY2FvRXgxcTBRUnB2Y2FSIiwicmVjcW15Q1dqUFNBcWdD
+ b3AiLCJyZWNDVmM3dTNrQ09OaEpmRiIsInJlY1dCTGZaQWJOZlBTcExyIl0s
+ IkFjdGl2ZSI6dHJ1ZSwiTWVudG9yIFJlcXVlc3QiOlsicmVjRjVoN0h2eEl2
+ UHVMSlYiLCJyZWNJRXFpMHhHRzEyaDNxMiJdLCJFbWFpbCI6Im1hcmthYm9u
+ aWNpbGxvQGdtYWlsLmNvbSJ9LCJjcmVhdGVkVGltZSI6IjIwMTgtMDMtMjRU
+ MTk6MTQ6MDcuMDAwWiJ9LHsiaWQiOiJyZWNQcTF5N05nWmZyQmU2bSIsImZp
+ ZWxkcyI6eyJTbGFjayBOYW1lIjoiQW5kcmV3IiwiRnVsbCBOYW1lIjoiQW5k
+ cmV3IFBob21tYXRoZXAiLCJTa2lsbHNldHMiOlsicmVjRTZHR2tMNHcyVDZw
+ bkMiLCJyZWNmdzc4VmRuRDd0cFpWeiIsInJlY0NWYzd1M2tDT05oSmZGIiwi
+ cmVjUTZleDlHRjVpalFUb2QiXSwiTWF4IE1lbnRlZXMiOjEsIkFjdGl2ZSI6
+ dHJ1ZSwiTWVudG9yIFJlcXVlc3QiOlsicmVjWldnQkhxTmFXaXBFbHciLCJy
+ ZWNSeERPVnF5QmZTbHg5TCJdLCJFbWFpbCI6IjEzZGVzdGluaWVzQGdtYWls
+ LmNvbSJ9LCJjcmVhdGVkVGltZSI6IjIwMTgtMDQtMDdUMDM6MzM6MTguMDAw
+ WiJ9LHsiaWQiOiJyZWNRSTdlU0FGdlA1TEVoUCIsImZpZWxkcyI6eyJTbGFj
+ ayBOYW1lIjoiZmJyYWRmaWVsZCIsIk5vdGVzIjoiTGlua3MgdG8gQ29kZSBv
+ ZiBDb25kdWN0IGFuZCBHdWlkZWJvb2sgYmVsb3cgZG9uJ3QgYXBwZWFyIHRv
+ IHdvcmsgYW55bW9yZSAoZG9jdW1lbnRzIHJlcG8gZG9lc24ndCBleGlzdCku
+ IiwiRnVsbCBOYW1lIjoiRnJhbmtsaW4gQnJhZGZpZWxkIiwiU2tpbGxzZXRz
+ IjpbInJlY3lHbmRnVVlra3lQQ3JTIiwicmVjZXdmMWpMY08xUWxWZlkiLCJy
+ ZWNKQUN4a1p1SFRaU1UyaiIsInJlY29zUnZpTG9CQ2doNlRxIiwicmVjcW15
+ Q1dqUFNBcWdDb3AiLCJyZWM1RllYVTZqVG5YS1BIZyIsInJlY2FvRXgxcTBR
+ UnB2Y2FSIiwicmVjQ1ZjN3Uza0NPTmhKZkYiLCJyZWNKSGlWUU5JQzNPTk1X
+ cyIsInJlY1dCTGZaQWJOZlBTcExyIiwicmVjVHU3dDVNMFZpSUxtNUEiXSwi
+ V2hhdCB0aW1lIHpvbmUgYXJlIHlvdSBpbj8iOiJFYXN0ZXJuIiwiQmlvIjoi
+ SSdtIGEgc2VsZi10YXVnaHQgdGVjaCBwcm9mZXNzaW9uYWwsIGN1cnJlbnRs
+ eSBlbXBsb3llZCBhcyBSZXNlYXJjaCBFbmdpbmVlciBhdCBHZW9yZ2lhIFRl
+ Y2ggUmVzZWFyY2ggSW5zdGl0dXRlLCB3aG8ncyBpbnRlcmVzdGVkIGluIHZl
+ dGVyYW4gb3V0cmVhY2guIE15IHdvcmsgcHJpbWFyaWx5IGNlbnRlcnMgYXJv
+ dW5kIGRhdGEgc2NpZW5jZSwgbWFjaGluZSBsZWFybmluZywgYW5kIG5hdHVy
+ YWwgbGFuZ3VhZ2UgcHJvY2Vzc2luZy4gSW4gdGhpcyBjYXBhY2l0eSwgSSB3
+ b3JrIG9uIG5vdmVsIHJlc2VhcmNoIGZvciBsYXJnZS1zY2FsZSBkZWZlbnNl
+ IHN5c3RlbXMgdXNpbmcgYSB3aWRlIGFycmF5IG9mIHRlY2hub2xvZ2llcyB0
+ aGF0IGFyZSBrZXkgdG8gdG9kYXkncyBpbmR1c3RyeSwgaW5jbHVkaW5nIFB5
+ dGhvbiwgSmF2YSwgSmF2YXNjcmlwdCAvIEhUTUwgLyBDU1MsIERhdGFiYXNl
+ cyAoTW9uZ29EQiwgTXlTUUwpLCBMaW51eCwgR2l0LCBEb2NrZXIsIGFuZCBt
+ b3JlLiBcblxuR3JhZHVhdGluZyBmcm9tIEdlb3JnaWEgU3RhdGUgVW5pdmVy
+ c2l0eSB3aXRoIGRlZ3JlZXMgaW4gQXBwbGllZCBMaW5ndWlzdGljcyBhbmQg
+ RWNvbm9taWNzIGluIDIwMTQsIG15IGltbWVkaWF0ZSBjYXJlZXIgcHJvc3Bl
+ Y3RzIHdlcmVuJ3QgdG9vIGdyZWF0IGFzIHVuZGVyZ3JhZHVhdGVzIGZyb20g
+ dGhlc2UgbWFqb3JzIGFyZSBub3QgdG9vIGhpZ2hseSBzb3VnaHQgb3V0IGlu
+ IGluZHVzdHJ5LiBCdWlsZGluZyBvbiBhIHN0dWR5IGFicm9hZCBleHBlcmll
+ bmNlIEkgaGFkIGluIENoaW5hIHdoaWxlIGluIHNjaG9vbCwgSSBkZWNpZGVk
+ IHRvIG1vdmUgdG8gdGhlIGNvdW50cnkgYWZ0ZXIgZ3JhZHVhdGluZyB0byBi
+ ZSB3aXRoIG15IGN1cnJlbnQgd2lmZSBhbmQgd29yayBhcyBhbiBFbmdsaXNo
+ IHRlYWNoZXIuIFRoZXJlIEkgcXVpY2tseSBnb3QgYm9yZWQgdGVhY2hpbmcg
+ bXkgbmF0aXZlIGxhbmd1YWdlLCBzbyBJIGJyYW5jaGVkIG91dCBpbnRvIG1v
+ cmUgcXVhbnRpdGF0aXZlIHN1YmplY3RzIHN1Y2ggYXMgc3RhdGlzdGljcyBh
+ bmQgbWF0aGVtYXRpY3MuIEdldHRpbmcgaW50byBteSBzZWNvbmQgeWVhciB0
+ aGVyZSwgSSBkZWNpZGVkIEkgZGlkbid0IHdhbnQgdG8gbWFpbnRhaW4gdGhh
+ dCBsaWZlc3R5bGUgZm9yZXZlciwgc28gSSBmaW5hbGx5IGNvbW1pdHRlZCB0
+ byB0YWtpbmcgb24gYSBjaGFsbGVuZ2UgdGhhdCBoYWQgaW50aW1pZGF0ZWQg
+ bWUgZm9yIHllYXJzOiB0ZWFjaCBteXNlbGYgcHJvZ3JhbW1pbmcgYW5kIGRh
+ dGEgc2NpZW5jZSB0byB0aGUgcG9pbnQgb2YgZ2V0dGluZyBoaXJlZCBpbiB0
+ aGUgdGVjaCBpbmR1c3RyeS4gTG9uZyBzdG9yeSBzaG9ydCwgYWZ0ZXIgMTgg
+ bW9udGhzIG9mIGRpbGlnZW5jZSwgbXkgZWZmb3J0cyBwcm92ZWQgd29ydGh3
+ aGlsZSB3aGVuIEkgd2FzIGhpcmVkIGZvciBteSBjdXJyZW50IHBvc2l0aW9u
+ IGluIE9jdC4gMjAxNy4gSGF2aW5nIGdvbmUgZnJvbSBiYXJlbHkgYmVpbmcg
+ YWJsZSB0byB3cml0ZSBhIHByaW50IHN0YXRlbWVudCB0byBsYW5kaW5nIGEg
+ c2F0aXNmeWluZyBqb2IgaW4gdGhpcyBmaWVsZCwgSSBrbm93IHdlbGwgdGhl
+ IGNoYWxsZW5nZXMgYW5kIHJld2FyZHMgdGhhdCBjb21lIHdpdGggbWFraW5n
+ IHN1Y2ggYSBjYXJlZXIgdHJhbnNpdGlvbi4gXG5cbkFzIHRoZSBncmFuZHNv
+ biBvZiBhIEtvcmVhbiBXYXIgdmV0LCBhbmQgYSBmcmllbmQgb2Ygc2V2ZXJh
+ bCBJcmFxIHZldHMsIEkndmUgY29tZSB0byBjb21wcmVoZW5kIHRoZSBleHBl
+ cmllbmNlcyB0aGF0IHZldGVyYW5zIGZhY2UgYWZ0ZXIgdGhlaXIgc2Vydmlj
+ ZS4gSSd2ZSB3YW50ZWQgdG8gcmVhY2ggb3V0LCBnZXQgdG8ga25vdywgYW5k
+ IGhlbHAgdGhpcyBjb21tdW5pdHkgaW4gYW55IHdheSBJIGNvdWxkIGZvciB5
+ ZWFycywgYnV0IG5ldmVyIGhhZCB0aGUgY29uZmlkZW5jZSBvciBjb3VyYWdl
+ IHRvIFwidGFrZSB0aGUgbGVhcFwiLiBOb3Qgd2FudGluZyB0byBiZSBwYXNz
+ aXZlIGFueSBsb25nZXIgaG93ZXZlciwgSSBzdGFydGVkIHJlc2VhcmNoaW5n
+ IGNoYXJpdGllcyBhbmQgb3JnYW5pemF0aW9ucyB0aGF0IG9wZXJhdGUgaW4g
+ dGhpcyBhcmVhLiBTb21lIG9mIHRoZXNlIG9yZ2FuaXphdGlvbnMgaGF2ZSBj
+ b21tdW5pdHkgdm9sdW50ZWVyIHByb2dyYW1zIHRoYXQgSSBjb3VsZCBiZSBh
+ IHBhcnQgb2YsIGJ1dCB3aGVuIEkgZm91bmQgT3BlcmF0aW9uIENvZGUsIEkg
+ a25ldyBpbW1lZGlhdGVseSB0aGF0IG1lbnRvcmluZyBpbiB0aGlzIHByb2dy
+ YW0gd291bGQgaGFuZHMtZG93biBiZSB0aGUgaGlnaGVzdCB2YWx1ZSBhY3Rp
+ dml0eSB0aGF0IEkgaGF2ZSB0byBvZmZlci4gSSdtIHJlYWxseSBleGNpdGVk
+ IGFib3V0IHRoaXMgY2F1c2UgYW5kIGhvcGUgdG8gY29udHJpYnV0ZSB3aGVy
+ ZSBJJ20gYWJsZS4gIEkgZmVlbCBteSBiYWNrZ3JvdW5kIGlzIGVzcGVjaWFs
+ bHkgc3VpdGFibGUgZm9yIHRob3NlIHdpdGggYSBwYXJ0aWN1bGFyIGludGVy
+ ZXN0IGluIGRhdGEgc2NpZW5jZSAvIG1hY2hpbmUgbGVhcm5pbmcsIGJ1dCBJ
+ J20gb3BlbiB0byBtZW50b3JpbmcgYW55IGJlZ2lubmVycyB0byB0ZWNoIC8g
+ cHJvZ3JhbW1pbmcgdGhhdCBhcmUgcGFzc2lvbmF0ZSBhbmQgZWFnZXIgYWJv
+ dXQgZGl2aW5nIGluLCBtYWtpbmcgdGhpcyB0cmFuc2l0aW9uLCBhbmQgZ2V0
+ dGluZyBoaXJlZCB3aXRoIHRoZWlyIG5ldyBza2lsbHMuIiwiU2VydmljZXMi
+ OlsicmVjdHpnVEdvUXl5MkZWTUMiLCJyZWNyeThzMTRxR0poSGVPQyIsInJl
+ Y04wbEo0NkJZbnNJOHo5IiwicmVjeERycEZMOXc1dE56a1ciLCJyZWNLTFJV
+ b2xDeHN2V0J1RiJdLCJFbWFpbCI6ImZicmFkZmllbGQxQGdtYWlsLmNvbSIs
+ IkNvZGUgb2YgQ29uZHVjdCBBY2NlcHRlZD8iOnRydWUsIkd1aWRlYm9vayBS
+ ZWFkPyI6dHJ1ZX0sImNyZWF0ZWRUaW1lIjoiMjAxOC0wNS0wM1QwNDo0MTox
+ MC4wMDBaIn0seyJpZCI6InJlY1FyWnZmU1I0am4zUk5PIiwiZmllbGRzIjp7
+ IlNsYWNrIE5hbWUiOiJicmlhbmthaHJzIiwiRnVsbCBOYW1lIjoiQnJpYW4g
+ S2FocnMiLCJTa2lsbHNldHMiOlsicmVjVVY5RExFb0sxSnFSVjkiLCJyZWM1
+ RllYVTZqVG5YS1BIZyIsInJlY2FvRXgxcTBRUnB2Y2FSIiwicmVjdkRHaEdm
+ UFVLNVV3RzAiXSwiTWF4IE1lbnRlZXMiOjEsIkVtYWlsIjoiYnJpYW4ua2Fo
+ cnNAZ21haWwuY29tIn0sImNyZWF0ZWRUaW1lIjoiMjAxOC0wNC0yM1QxODo1
+ Mjo0NC4wMDBaIn0seyJpZCI6InJlY1JsS2N6R0FjTktOMjZHIiwiZmllbGRz
+ Ijp7IlNsYWNrIE5hbWUiOiJib2Itcm9iIiwiRnVsbCBOYW1lIjoiQm9iIFJv
+ YmVydHMiLCJTa2lsbHNldHMiOlsicmVjOWxuSFphRHQyQ3ZWcloiXSwiV2hh
+ dCB0aW1lIHpvbmUgYXJlIHlvdSBpbj8iOiJDZW50cmFsIiwiQmlvIjoiSSBo
+ YXZlIGJlZW4gdXNpbmcgUm9SIGZvciA4IHllYXJzIG5vdyBhbmQgc3RpbGwg
+ bG92ZSBpdC4gIEkgaGF2ZSBkb25lIHNvbWUgbWVudG9yaW5nIGFuZCBJIGVu
+ am95IGhlbHBpbmcgb3RoZXJzIGxlYXJuIGFzIG90aGVyIGhhZCBoZWxwZWQg
+ bWUgaW4gbXkgcGFzdC4iLCJBY3RpdmUiOnRydWUsIlNlcnZpY2VzIjpbInJl
+ Y3J5OHMxNHFHSmhIZU9DIiwicmVjS0xSVW9sQ3hzdldCdUYiXSwiTWVudG9y
+ IFJlcXVlc3QiOlsicmVjSzFFa1pTWkNMRkEwMDciLCJyZWNqTUdCOTNjQ1RC
+ UkFaWSIsInJlYzBXWG53RnUwZ1JuWnI2IiwicmVjRDc4WVVCRUI1QzdsREYi
+ LCJyZWNNdGg4MkFzVTNubmdTcyJdLCJFbWFpbCI6ImNhcmRzZmFuYm9iQGdt
+ YWlsLmNvbSJ9LCJjcmVhdGVkVGltZSI6IjIwMTctMDUtMTNUMDQ6MzA6Mzgu
+ MDAwWiJ9LHsiaWQiOiJyZWNSbFdFemxTUzd4UGNNRCIsImZpZWxkcyI6eyJT
+ bGFjayBOYW1lIjoibnJ5b3VuZyIsIk5vdGVzIjoiSSBkaWQgbm90IGhhdmUg
+ ZW5vdWdoIG1lbnRvcnMgdGhhdCByZWFsbHkgaGVscGVkIG15IHB1c2ggbXkg
+ Y2FyZWVyIGZvcndhcmQgYW5kIEkgYW0gbG9va2luZyB0byBcInBheSBpdCBm
+ b3J3YXJkXCIuIEkgaGF2ZSB3YW50ZWQgdG8gdm9sdW50ZWVyIG15IHRpbWUg
+ aGVscGluZyB2ZXRlcmFucyBsaWtlIG15c2VsZiBmb3Igc29tZSB0aW1lIGFu
+ ZCBJIGZpbmFsbHkgZm91bmQgT3BlcmF0aW9uIENvZGUsIHdoaWNoIHNlZW1z
+ IGxpa2UgYSBnb29kIGZpdC4iLCJGdWxsIE5hbWUiOiJOaWMgWW91bmciLCJT
+ a2lsbHNldHMiOlsicmVjU2pybHNIdFdoOVhXT1AiLCJyZWNKQkI3WnhUT002
+ d0w1dyIsInJlY2V3ZjFqTGNPMVFsVmZZIiwicmVjRTZHR2tMNHcyVDZwbkMi
+ LCJyZWNmdzc4VmRuRDd0cFpWeiIsInJlY2FvRXgxcTBRUnB2Y2FSIiwicmVj
+ cW15Q1dqUFNBcWdDb3AiLCJyZWNDVmM3dTNrQ09OaEpmRiIsInJlY25QSERk
+ V1cxSjA2ZXZPIiwicmVjazRsa09Ua2ZzTVJQa1IiLCJyZWM1RllYVTZqVG5Y
+ S1BIZyJdLCJXaGF0IHRpbWUgem9uZSBhcmUgeW91IGluPyI6Ik1EVC9NU1Qi
+ LCJCaW8iOiJJIGpvaW5lZCB0aGUgQXJteSBpbiAyMDA1IGFuZCBzZXJ2ZWQg
+ Zm9yIDMuNSB5ZWFycyBhcyBpbmZhbnRyeS4gQWZ0ZXIgZ2V0dGluZyBvdXQg
+ b2YgdGhlIG1pbGl0YXJ5IEkgd2VudCBkaXJlY3RseSB0byBzY2hvb2wgYW5k
+ IHJlY2VpdmVkIG15IEJhY2hlbG9ycyBvZiBTY2llbmNlIGluIENvbXB1dGVy
+ IFNjaWVuY2UgZnJvbSB0aGUgVW5pdmVyc2l0eSBvZiBDb2xvcmFkbyBhdCBE
+ ZW52ZXIgaW4gMjAxNC4gRHVyaW5nIG15IHNlbmlvciB5ZWFyIGF0IFVuaXZl
+ cnNpdHkgSSBnb3QgYSBmdWxsIHRpbWUgcG9zaXRpb24gYXMgYSBTb2Z0d2Fy
+ ZSBFbmdpbmVlciBtb3N0bHkgdXNpbmcgUHl0aG9uLiBJIGFtIG5vdyBlbXBs
+ b3llZCBmdWxsIHRpbWUgYXMgYSBGdWxsIFN0YWNrIEVuZ2luZWVyIGF0IGEg
+ c29mdHdhcmUgY29uc3VsdGFuY3kgYmFzZWQgb3V0IG9mIE5ZQyBjYWxsZWQg
+ UG9zdGxpZ2h0LiBJIGFtIG1vc3RseSB3cml0aW5nIEVTNiBhbmQgUmVhY3Qs
+ IGJ1dCBJIGFtIGNvbWZvcnRhYmxlIHVwIGFuZCBkb3duIHRoZSBzdGFjayBv
+ ZiBhbiBhcHBsaWNhdGlvbi4iLCJBY3RpdmUiOnRydWUsIlNlcnZpY2VzIjpb
+ InJlY3R6Z1RHb1F5eTJGVk1DIiwicmVjeERycEZMOXc1dE56a1ciLCJyZWNL
+ TFJVb2xDeHN2V0J1RiIsInJlYzNaUU1DUXNLUEtsRTJDIiwicmVjTjBsSjQ2
+ Qlluc0k4ejkiXSwiTWVudG9yIFJlcXVlc3QiOlsicmVjaUVTNURwNXNSNVVp
+ VEQiLCJyZWM4ZzlEV1JoZmNGaExnbCJdLCJFbWFpbCI6Im5yeW91bmdAZ21h
+ aWwuY29tIn0sImNyZWF0ZWRUaW1lIjoiMjAxNy0wNi0wMlQxODoyNTowNS4w
+ MDBaIn0seyJpZCI6InJlY1RRbzRDYktnZG1UOVh2IiwiZmllbGRzIjp7IlNs
+ YWNrIE5hbWUiOiJkYXZpZF90aHVyZXNvbiIsIkZ1bGwgTmFtZSI6IkRhdmlk
+ IFRodXJlc29uIiwiU2tpbGxzZXRzIjpbInJlY2V3ZjFqTGNPMVFsVmZZIiwi
+ cmVjRTZHR2tMNHcyVDZwbkMiLCJyZWNvc1J2aUxvQkNnaDZUcSIsInJlY2Fv
+ RXgxcTBRUnB2Y2FSIiwicmVjcW15Q1dqUFNBcWdDb3AiLCJyZWNDVmM3dTNr
+ Q09OaEpmRiIsInJlY2oyb21kdTdXbklYTEprIiwicmVjNUZZWFU2alRuWEtQ
+ SGciXSwiQWN0aXZlIjp0cnVlLCJFbWFpbCI6IkRhdmlkLkcuVGh1cmVzb25A
+ Z21haWwuY29tIn0sImNyZWF0ZWRUaW1lIjoiMjAxOC0wMy0yNFQxOToxMjo0
+ OC4wMDBaIn0seyJpZCI6InJlY1YwcUpEMjhraTJROGtyIiwiZmllbGRzIjp7
+ IlNsYWNrIE5hbWUiOiJIZWxpbyBDb2xhIiwiRnVsbCBOYW1lIjoiSGVsaW8g
+ Q29sYSIsIlNraWxsc2V0cyI6WyJyZWNKQkI3WnhUT002d0w1dyIsInJlY0U2
+ R0drTDR3MlQ2cG5DIiwicmVjOWxuSFphRHQyQ3ZWcloiLCJyZWNxbXlDV2pQ
+ U0FxZ0NvcCIsInJlY0NWYzd1M2tDT05oSmZGIiwicmVjV0JMZlpBYk5mUFNw
+ THIiXSwiQWN0aXZlIjp0cnVlLCJFbWFpbCI6ImhlbGlvLmNvbGFAZ21haWwu
+ Y29tIn0sImNyZWF0ZWRUaW1lIjoiMjAxOC0wMy0yNFQxOToxMzoyNS4wMDBa
+ In0seyJpZCI6InJlY1dQeXhyWTJRS0FrUFZMIiwiZmllbGRzIjp7IlNsYWNr
+ IE5hbWUiOiJtaWtlcm9kX3NkIiwiRnVsbCBOYW1lIjoiTWljaGFlbCBSb2Ry
+ aWd1ZXoiLCJTa2lsbHNldHMiOlsicmVjeUc2c2NFVHR4WnVUTngiXSwiQWN0
+ aXZlIjp0cnVlLCJNZW50b3IgUmVxdWVzdCI6WyJyZWNWMm9wakFyU1hVa004
+ NSIsInJlY3c1eUpkV0lwNnQ5THdnIl0sIkVtYWlsIjoicm9kcmlndWV6bWxA
+ Z21haWwuY29tIn0sImNyZWF0ZWRUaW1lIjoiMjAxOC0wMi0xMFQyMjo0Njow
+ MC4wMDBaIn0seyJpZCI6InJlY1pJRXhWejd5aEt0ZmE4IiwiZmllbGRzIjp7
+ IlNsYWNrIE5hbWUiOiJqaGFtcHRvbiIsIk5vdGVzIjoib3BlbiB0byBoZWxw
+ aW5nIGFueW9uZSB3LyBIVE1ML0NTUyB0b29cbiIsIkFzc2lnbm1lbnRzIjpb
+ InJlY1hIZFhWMTEwRlNNQnF0Il0sIkZ1bGwgTmFtZSI6IkpvaG4gSGFtcHRv
+ biIsIlNraWxsc2V0cyI6WyJyZWNKQkI3WnhUT002d0w1dyIsInJlY2s0bGtP
+ VGtmc01SUGtSIiwicmVjNUZZWFU2alRuWEtQSGciXSwiTWF4IE1lbnRlZXMi
+ OjEsIldoYXQgdGltZSB6b25lIGFyZSB5b3UgaW4/IjoiRVNUIiwiSG93IG1h
+ bnkgaG91cnMgd291bGQgeW91IGxpa2UgdG8gbWVudG9yIGZvciwgcGVyIG1v
+ bnRoPyI6IjQiLCJCaW8iOiJJJ20gYW4gQXJteSB2ZXRlcmFuIG9mIDcgeWVh
+ cnMgKGFjdGl2ZS1kdXR5IGVubGlzdGVkLCA2OEsgTWVkaWNhbCBMYWJvcmF0
+ b3J5KSB3aG8gc3dpdGNoZWQgY2FyZWVycyBhZnRlciBzZXBhcmF0aW5nIGFu
+ ZCBoYXZlIGJlZW4gd29ya2luZyBhcyBhIGZ1bGwtdGltZSBkZXZlbG9wZXIg
+ c2luY2UgbWlkLTIwMTUuICBJIGZvdW5kIE9wZXJhdGlvbiBDb2RlIHNob3J0
+ bHkgYmVmb3JlIHRoZW4sIGFuZCB0aGV5J3ZlIGJlZW4gYSBjb25zaXN0ZW50
+ IHNvdXJjZSBvZiBzdXBwb3J0IHRocm91Z2hvdXQuICBJJ20gbG9va2luZyB0
+ byBnaXZlIGJhY2sgYW5kIGhlbHAgb3RoZXIgdmV0ZXJhbnMgd2hvIGFyZSB0
+ cnlpbmcgdG8gYnJlYWsgaW50byB0aGlzIGluZHVzdHJ5LiAgV2hpbGUgSSBh
+ dHRlbmRlZCBhIDEyLXdlZWsgZnJvbnQtZW5kIGJvb3RjYW1wLCBJIGFsc28g
+ Y29uc2lkZXIgbXlzZWxmIGEgc2VsZi10YXVnaHQgZGV2ZWxvcGVyLiAgSSB3
+ b3JrIG1vc3RseSB3LyBKYXZhc2NyaXB0IC8gVHlwZXNjcmlwdCAvIEFuZ3Vs
+ YXIgZnJvbnQtZW5kIHN0YWNrLCBidXQgYWxzbyBoYXZlIGV4cGVyaWVuY2Ug
+ dy8gUmVhY3QsIEVtYmVyLCBhbmQgdmFyaW91cyBvdGhlciBmcm9udC1lbmQt
+ aXNoIHN0dWZmLiBXb3VsZCBwcmVmZXIgdG8gbWVudG9yIGFueW9uZSB3aG8g
+ aGFzIGEgc3Ryb25nIGRlc2lyZSB0byBmb2N1cyBvbiBKYXZhc2NyaXB0IChm
+ cm9udC1lbmQgb3IgYmFjay1lbmQpLiIsIkFjdGl2ZSI6dHJ1ZSwiU3F1YWRz
+ IjpbInJlY3NLN3ZqVzU5bTBFbXVUIl0sIk1lbnRvciBSZXF1ZXN0IjpbInJl
+ Y3ZFc0gwV0t3Zk9JdmF0IiwicmVjM1NwOVA1Z1RnTUZkdWIiLCJyZWNGelVo
+ Qk8wS1k0OTZoeSIsInJlY1g2SzdFNHlkTzBZalB5IiwicmVjcElvNklub0Nx
+ Q0t6bmoiLCJyZWNERmpGNUtUQnlrbkwyaiIsInJlY3RMSUpGcWpWUzZXaHBN
+ IiwicmVjUDkzVlVlWWV5aHJOVnoiLCJyZWNUemJRSW1sWXNCaTFNNiIsInJl
+ Y0kwZVRIeGRvQU9zS2pRIl0sIkVtYWlsIjoiam9obl9qX2hhbXB0b25AeWFo
+ b28uY29tIn0sImNyZWF0ZWRUaW1lIjoiMjAxNi0xMi0wMlQwMzowNToxOS4w
+ MDBaIn0seyJpZCI6InJlY2I2WUVLWmFCS0F5dDh5IiwiZmllbGRzIjp7IlNs
+ YWNrIE5hbWUiOiJLZW4gTXVncmFnZSIsIkZ1bGwgTmFtZSI6IktlbiBNdWdy
+ YWdlIiwiU2tpbGxzZXRzIjpbInJlYzVGWVhVNmpUblhLUEhnIiwicmVjYW9F
+ eDFxMFFScHZjYVIiLCJyZWNTanJsc0h0V2g5WFdPUCJdLCJNYXggTWVudGVl
+ cyI6MywiQWN0aXZlIjp0cnVlLCJFbWFpbCI6ImttdWdyYWdlQGdtYWlsLmNv
+ bSJ9LCJjcmVhdGVkVGltZSI6IjIwMTgtMDQtMTFUMDA6Mjk6MzMuMDAwWiJ9
+ LHsiaWQiOiJyZWNjS3JFYzB3ODhmU3M3VyIsImZpZWxkcyI6eyJTbGFjayBO
+ YW1lIjoibW9samFjIiwiRnVsbCBOYW1lIjoiTWlsamVua28gQ3ZqZXRrbyIs
+ IlNraWxsc2V0cyI6WyJyZWNOT05KOFMxcDFUamZLViIsInJlY0pBQ3hrWnVI
+ VFpTVTJqIiwicmVjU2pybHNIdFdoOVhXT1AiLCJyZWNvc1J2aUxvQkNnaDZU
+ cSIsInJlY1N5NEhtSUd0SUxxWlJ2IiwicmVjT2ZHeTl0TWVVd2pONzgiLCJy
+ ZWNZMEcyOERJbmFmQnhnVCIsInJlY1VWOURMRW9LMUpxUlY5IiwicmVjQ1Zj
+ N3Uza0NPTmhKZkYiLCJyZWNNOWtiM1NhekY0NjZ4byIsInJlY0NLclBuSERx
+ T2RsaEFnIl0sIldoYXQgdGltZSB6b25lIGFyZSB5b3UgaW4/IjoiQ0VUICIs
+ IkJpbyI6IisgTWljcm9zb2Z0IEZURSAoWGFtYXJpbiBUZWFtIC0gQ29tcG9u
+ ZW50cyBUZWFtKSBzaW5jZSAyMDE2LjA3LjAxXG4rIFhhbWFyaW4gSW50ZXJu
+ YXRpb25hbCBDb250cmFjdG9yIHNpbmNlIDIwMTQuMDFcbisgb3duZXIgb2Yg
+ c21hbGwgYnVzaW5lc3MgKEhvbGlzdGljV2FyZSkgLSB1c2VkIHRvIHdvcmsg
+ Zm9yIFhhbWFyaW4gYXMgaW50ZXJuYXRpb25hbCBjb250cmFjdG9yXG4rIGZ1
+ bGwgc3RhY2sgZGV2ZWxvcGVyICguTkVULCBDIywgWGFtYXJpbi4qLCBBU1Au
+ bmV0IENvcmUpXG4rIHZldGVyYW4gKENyb2F0aWFuIFBvbGljZSBhbmQgQXJt
+ eSAxOTkxLTE5OTMpIG1pbGl0YXJ5IHNlcnZpY2UgMysgeWVhcnNcbisgdHJ5
+ aW5nIHRvIGhlbHAgbG9jYWwgdmV0ZXJhbiBjb21tdW5pdHkgaW4gQ3JvYXRp
+ YSBzbyBJIHNlYXJjaGVkIGFyb3VuZCBhbmQgam9pbmVkIE9wZXJhdGlvbkNv
+ ZGUgY29zIEkgbWlnaHQgYmUgaGVscGZ1bGxcbisgcHJlZmVyZW5jZXMgLSAu
+ TkVUIHN0YWNrIChJIHJlYWQgamF2YSBhbmQgb2JqYy1jLCBidXQgbm90IHdy
+ aXRlKSwgQy9DKysgaXMgYSBiaXQgcnVzdHkgKGxhdGUgMTk5MHMpIiwiQWN0
+ aXZlIjp0cnVlLCJTZXJ2aWNlcyI6WyJyZWN0emdUR29ReXkyRlZNQyIsInJl
+ Y3J5OHMxNHFHSmhIZU9DIiwicmVjeERycEZMOXc1dE56a1ciLCJyZWNLTFJV
+ b2xDeHN2V0J1RiJdLCJNZW50b3IgUmVxdWVzdCI6WyJyZWNIMXVPYnZobVF3
+ NkJCZyIsInJlY1R4NGZXZHlXQTVYaUFUIiwicmVjdWw0d0gwZlVYcGNrdTUi
+ LCJyZWNBQmFNZXRRR0IyV3NyNCIsInJlY2V2dEEzTGFZWk1xU0kyIl0sIkVt
+ YWlsIjoibWN2amV0a29AaG9saXN0aWN3YXJlLmNvbSIsIkNvZGUgb2YgQ29u
+ ZHVjdCBBY2NlcHRlZD8iOnRydWUsIkd1aWRlYm9vayBSZWFkPyI6dHJ1ZX0s
+ ImNyZWF0ZWRUaW1lIjoiMjAxNy0xMi0yMFQyMDoxMjo0MS4wMDBaIn0seyJp
+ ZCI6InJlY2VCZVR5dVdsTGZBcEhCIiwiZmllbGRzIjp7IlNsYWNrIE5hbWUi
+ OiJnYXRvcnF1ZSIsIk5vdGVzIjoiSWYgeW91IHdhbnQgdG8gbGVhcm4gQywg
+ QysrLCBDTWFrZSwgTGludXgsIEdpdCwgZW1iZWRkZWQgZGV2aWNlcywgY29t
+ cGlsZXJzLCBvciBPT1AgY29uY2VwdHMgSSBjYW4gaGVscCB5b3Ugb3V0LiBJ
+ ZiB5b3UgYXJlIHRha2luZyBDUzUwIGZyb20gZWRYIC0gSSBjYW4gaGVscCB5
+ b3Ugd2l0aCB5b3VyIGFzc2lnbm1lbnRzICh3aXRob3V0IGdpdmluZyB0aGUg
+ YW5zd2VycykuIiwiQXNzaWdubWVudHMiOlsicmVjSU1FbzR1OUl4Y2V3ejgi
+ XSwiRnVsbCBOYW1lIjoiUnlhbiBMaW5kZW1hbiIsIlNraWxsc2V0cyI6WyJy
+ ZWNGSjlGWEU2enhyZDlpNCIsInJlY29zUnZpTG9CQ2doNlRxIiwicmVjbDhW
+ d28yeHVGaUVySnkiXSwiTWF4IE1lbnRlZXMiOjIsIldoYXQgdGltZSB6b25l
+ IGFyZSB5b3UgaW4/IjoiTVNUIiwiSG93IG1hbnkgaG91cnMgd291bGQgeW91
+ IGxpa2UgdG8gbWVudG9yIGZvciwgcGVyIG1vbnRoPyI6IjIwIiwiQmlvIjoi
+ SSdtIGEgbGFyZ2VseSBzZWxmIHRhdWdodCBwcm9ncmFtbWVyIHdpdGggYSBC
+ UyBpbiBDb21wdXRlciBTY2llbmNlIGFuZCBNUyBpbiBDb21wdXRlciBFbmdp
+ bmVlcmluZy4gSSBjdXJyZW50bHkgd29yayBmb3IgQ0EgRW5naW5lZXJpbmcg
+ cHJvdmlkaW5nIHdpcmVsZXNzICg4MDIuMTEsIFppZ2JlZSwgQmx1ZXRvb3Ro
+ LCBldGMpIGNvbnN1bHRpbmcgc2VydmljZXMgbWFpbmx5IGZvciBRdWFsQ29t
+ bSBBdGhlcm9zIGN1c3RvbWVycy5cbkkgbG92ZSBoZWxwaW5nIHBlb3BsZSBs
+ ZWFybiB0byBwcm9ncmFtIGFuZCBpbXBvcnRhbnQgY29uY2VwdHMgbGlrZSBk
+ YXRhIHN0cnVjdHVyZXMsIHRocmVhZGluZywgYXJjaGl0ZWN0dXJlLCBhbmQg
+ YWxnb3JpdGhtcy4gSW4gbXkgc3BhcmUgdGltZSBJIGxpa2UgdG8gcmVhZCwg
+ c3R1ZHkgbmV3IHByb2dyYW1taW5nIGNvbmNlcHRzLCBhbmQgd3JpdGUgY29t
+ cHV0ZXIgZ2FtZXMgKEFuZHJvaWQgYW5kIGRlc2t0b3ApLiIsIkFjdGl2ZSI6
+ dHJ1ZSwiTWVudG9yIFJlcXVlc3QiOlsicmVjYjVEblVqeURJUzRTUlYiXSwi
+ RW1haWwiOiJyeWFubGluZGVtYW5AZ21haWwuY29tIn0sImNyZWF0ZWRUaW1l
+ IjoiMjAxNi0xMi0yMVQwMjo1Mzo1Ni4wMDBaIn0seyJpZCI6InJlY2VHS0ZS
+ QXhaYTBaSE5mIiwiZmllbGRzIjp7IlNsYWNrIE5hbWUiOiJlbW1hZHN1cmdl
+ b24iLCJGdWxsIE5hbWUiOiJFbW1hbnVlbCBJZGVoYW4iLCJTa2lsbHNldHMi
+ OlsicmVjb3NSdmlMb0JDZ2g2VHEiLCJyZWNsOFZ3bzJ4dUZpRXJKeSIsInJl
+ Y0ltcm9XbmQ2cDAyYVh1IiwicmVjZnc3OFZkbkQ3dHBaVnoiLCJyZWNVVjlE
+ TEVvSzFKcVJWOSIsInJlY1dCTGZaQWJOZlBTcExyIiwicmVjWTBHMjhESW5h
+ ZkJ4Z1QiLCJyZWNqMm9tZHU3V25JWExKayJdLCJBY3RpdmUiOnRydWUsIkVt
+ YWlsIjoiZW1tYW51ZWwuaWRlaGVuQG12c3UuZWR1In0sImNyZWF0ZWRUaW1l
+ IjoiMjAxOC0wMy0yNFQxOToxNDowNy4wMDBaIn0seyJpZCI6InJlY2Z0TmlE
+ OTFIaGo5NTA2IiwiZmllbGRzIjp7IlNsYWNrIE5hbWUiOiJnZW9yZ2VtYXVl
+ ciIsIkFzc2lnbm1lbnRzIjpbInJlY2dQMzdUMVFWNEl2Rmx5IiwicmVjY3Ft
+ MU5tR1IxbXRNcGEiXSwiRnVsbCBOYW1lIjoiR2VvcmdlIE1hdWVyIiwiU2tp
+ bGxzZXRzIjpbInJlY0pCQjdaeFRPTTZ3TDV3IiwicmVjRTZHR2tMNHcyVDZw
+ bkMiLCJyZWNOT05KOFMxcDFUamZLViIsInJlY2ZLeDhjcmdyak1NdlNrIiwi
+ cmVjblBIRGRXVzFKMDZldk8iLCJyZWNxbXlDV2pQU0FxZ0NvcCIsInJlY2s0
+ bGtPVGtmc01SUGtSIiwicmVjQ1ZjN3Uza0NPTmhKZkYiLCJyZWNTemljRXNZ
+ WEc0UDFBNCIsInJlY2FvRXgxcTBRUnB2Y2FSIiwicmVjZnc3OFZkbkQ3dHBa
+ VnoiXSwiTWF4IE1lbnRlZXMiOjIsIldoYXQgdGltZSB6b25lIGFyZSB5b3Ug
+ aW4/IjoiQ2VudHJhbCIsIkhvdyBtYW55IGhvdXJzIHdvdWxkIHlvdSBsaWtl
+ IHRvIG1lbnRvciBmb3IsIHBlciBtb250aD8iOiIxMCIsIkJpbyI6IkknbSBE
+ aXJlY3RvciBvZiBEZXZlbG9wbWVudCBhdCBTdXJnZSBDb25zdWx0aW5nLiBJ
+ IHdyaXRlIGNvZGUgZnVsbCB0aW1lIGFuZCBzcGVhaywgbWVudG9yLCBhbmQg
+ d3JpdGUgb24gYWxsIHNvcnRzIG9mIHRvcGljcyBpbiB0aGUgZGV2ZWxvcG1l
+ bnQgc3BhY2UgbGFyZ2VseSBmb2N1c2luZyBvbiBKYXZhc2NyaXB0LCBTb2Z0
+ d2FyZSBBcmNoaXRlY3R1cmUsIFRlc3RpbmcsIEZ1bmN0aW9uYWwgUHJvZ3Jh
+ bW1pbmcsIGFuZCBUZWFjaGluZy4gSSdtIGEgbWVudG9yIGFuZCBndWVzdCBs
+ ZWN0dXJlciB3aXRoIE9wZXJhdGlvbiBTcGFyayBhbmQgb2NjYXNpb25hbGx5
+ IHRoZSBUZWNoIFRhbGVudCBTb3V0aCBjb2RlIGNhbXBzLiBJIGxvdmUgdGFs
+ a2luZyBhYm91dCB0aGlzIHN0dWZmLiBJJ20gbm90IGEgdmV0IGJ1dCBoYXBw
+ eSB0byBoZWxwIG91dC4iLCJBY3RpdmUiOnRydWUsIk1lbnRvciBSZXF1ZXN0
+ IjpbInJlY0wzaE0zRUxJSFFqdHBEIiwicmVjUE03NWZJT1BmWFI1MW0iLCJy
+ ZWM4T1l1NkY4bjlPMnBidiIsInJlY3FWdTQ1WGZmT0k0OFE1IiwicmVjdjVa
+ Z2w0V3FGOVJYcXIiLCJyZWNndm1VT3JmYlA3M3dJNSIsInJlY2FLMVJtbVR3
+ UGJ0UWNoIiwicmVjd2VVeUNyNDJsNXNzck4iLCJyZWNCVmIwWmVnVWNHbUxt
+ biIsInJlY2Q0aFc3M1hwb1NnV1ZxIl0sIkVtYWlsIjoiZ21hdWVyQGdtYWls
+ LmNvbSJ9LCJjcmVhdGVkVGltZSI6IjIwMTctMDItMTJUMTg6NTY6MzIuMDAw
+ WiJ9LHsiaWQiOiJyZWNpWkkxT21CWkNkdWpDNSIsImZpZWxkcyI6eyJTbGFj
+ ayBOYW1lIjoiY2Flc2FyYXJ1bSIsIkZ1bGwgTmFtZSI6IlBldGVyIFBvb2xl
+ IiwiU2tpbGxzZXRzIjpbInJlY0pCQjdaeFRPTTZ3TDV3IiwicmVjRTZHR2tM
+ NHcyVDZwbkMiLCJyZWM5bG5IWmFEdDJDdlZyWiIsInJlY2FvRXgxcTBRUnB2
+ Y2FSIiwicmVjQ1ZjN3Uza0NPTmhKZkYiLCJyZWM1RllYVTZqVG5YS1BIZyJd
+ LCJBY3RpdmUiOnRydWUsIkVtYWlsIjoicGV0ZXIuai5wb29sZUBnbWFpbC5j
+ b20ifSwiY3JlYXRlZFRpbWUiOiIyMDE4LTAzLTI0VDE5OjE0OjAzLjAwMFoi
+ fSx7ImlkIjoicmVjalpEOGZxdWdYOGMyeTMiLCJmaWVsZHMiOnsiU2xhY2sg
+ TmFtZSI6ImJ1c2hpZG9jb2RlcyIsIkZ1bGwgTmFtZSI6IlNlYW4gTWNCcmlk
+ ZSIsIlNraWxsc2V0cyI6WyJyZWNCSWhEZHVKRDNZTGFIcSIsInJlY25QSERk
+ V1cxSjA2ZXZPIiwicmVjRTZHR2tMNHcyVDZwbkMiLCJyZWM1RllYVTZqVG5Y
+ S1BIZyIsInJlY2FvRXgxcTBRUnB2Y2FSIiwicmVjcW15Q1dqUFNBcWdDb3Ai
+ LCJyZWNrNGxrT1RrZnNNUlBrUiIsInJlY0NWYzd1M2tDT05oSmZGIiwicmVj
+ V0JMZlpBYk5mUFNwTHIiXSwiTWF4IE1lbnRlZXMiOjIsIkFjdGl2ZSI6dHJ1
+ ZSwiRW1haWwiOiJzcG1jYnJpZGUxMjAxQGdtYWlsLmNvbSJ9LCJjcmVhdGVk
+ VGltZSI6IjIwMTgtMDQtMTFUMjA6NDI6NDMuMDAwWiJ9LHsiaWQiOiJyZWNs
+ Z0E0ZGdnbTMwYjJXUSIsImZpZWxkcyI6eyJTbGFjayBOYW1lIjoiSi5ULiIs
+ IkZ1bGwgTmFtZSI6IkpvaG4gS25veCIsIlNraWxsc2V0cyI6WyJyZWNKQkI3
+ WnhUT002d0w1dyIsInJlY2FvRXgxcTBRUnB2Y2FSIiwicmVjcW15Q1dqUFNB
+ cWdDb3AiLCJyZWNDVmM3dTNrQ09OaEpmRiIsInJlY2s0bGtPVGtmc01SUGtS
+ Il0sIkFjdGl2ZSI6dHJ1ZSwiTWVudG9yIFJlcXVlc3QiOlsicmVjazIwS1RG
+ QUFCbzZCZTEiXSwiRW1haWwiOiJqdGtub3g5MUBnbWFpbC5jb20ifSwiY3Jl
+ YXRlZFRpbWUiOiIyMDE4LTAzLTE5VDEyOjA3OjQ3LjAwMFoifSx7ImlkIjoi
+ cmVjb0FCOU5jRHdsQmdIa2oiLCJmaWVsZHMiOnsiU2xhY2sgTmFtZSI6Im1h
+ Y2tzb2xkIiwiRnVsbCBOYW1lIjoiTWFyayBTb2xkYXZpbmkiLCJTa2lsbHNl
+ dHMiOlsicmVjU2pybHNIdFdoOVhXT1AiLCJyZWNld2YxakxjTzFRbFZmWSIs
+ InJlY0U2R0drTDR3MlQ2cG5DIiwicmVjb3NSdmlMb0JDZ2g2VHEiLCJyZWNO
+ T05KOFMxcDFUamZLViIsInJlY2FvRXgxcTBRUnB2Y2FSIiwicmVjQ1ZjN3Uz
+ a0NPTmhKZkYiLCJyZWM1RllYVTZqVG5YS1BIZyJdLCJXaGF0IHRpbWUgem9u
+ ZSBhcmUgeW91IGluPyI6IkVTVCIsIkJpbyI6IlNVTU1BUklaRUQgUFJPRkVT
+ U0lPTkFMIEVYUEVSSUVOQ0VcbklUIFByb2Zlc3Npb25hbCB3aXRoIG92ZXIg
+ dHdlbnR5IHllYXJzIG9mIGV4cGVyaWVuY2UgaW4gc29mdHdhcmUgZGV2ZWxv
+ cG1lbnQuIEphdmEgYW5kIFB5dGhvbiBkZXZlbG9wZXIgd2l0aCBhZGRpdGlv
+ bmFsIHNraWxscyBpbiB0aGUgYXJlYXMgb2Ygd2ViIGFwcGxpY2F0aW9uIHNl
+ Y3VyaXR5LCBzb2Z0d2FyZSBkZXNpZ24sIGFuZCB0ZWFtIGxlYWRlcnNoaXAu
+ IEV4cGVyaWVuY2VkIGluIGFnaWxlIGRldmVsb3BtZW50IGFuZCBidWlsZGlu
+ ZyBxdWFsaXR5IHNvZnR3YXJlIHRocm91Z2ggYSBwcm9jZXNzIHRoYXQgaW5j
+ bHVkZXMgdW5pdCB0ZXN0aW5nIGFuZCBjb250aW51b3VzIGludGVncmF0aW9u
+ LiBGb3VyLXllYXIgdG91ciBpbiB0aGUgVVMgQXJteSBJbmZhbnRyeSBkZXZl
+ bG9wZWQgbGVhZGVyc2hpcCBhbmQgdHJhaW5pbmcgc2tpbGxzLlxuXG5JIGFt
+ IGhlcmUgYmVjYXVzZSBJIHdhcyBhIGdydW50IHRoYXQgbGVhcm5lZCB0byBj
+ b2RlIDIwIHllYXJzIGFnby4gSSBrbm93IHRoZSB0cmFuc2l0aW9uIGNhbiBi
+ ZSBkb25lIGFuZCB3b3VsZCBsaWtlIHRvIHRyeSBhbmQgaGVscCBvdGhlcnMu
+ IEkgYW0gaW4gdGhlIERDIGFyZWEuIiwiQWN0aXZlIjp0cnVlLCJTZXJ2aWNl
+ cyI6WyJyZWNyeThzMTRxR0poSGVPQyIsInJlY0tMUlVvbEN4c3ZXQnVGIiwi
+ cmVjM1pRTUNRc0tQS2xFMkMiLCJyZWNOMGxKNDZCWW5zSTh6OSJdLCJFbWFp
+ bCI6Im1hY2tzb2xkQHlhaG9vLmNvbSJ9LCJjcmVhdGVkVGltZSI6IjIwMTct
+ MDctMDNUMTQ6MTg6NTguMDAwWiJ9LHsiaWQiOiJyZWNvb1pPQ1BaNW1SNkFS
+ cCIsImZpZWxkcyI6eyJTbGFjayBOYW1lIjoibWlrZW9lcnRsaSIsIkZ1bGwg
+ TmFtZSI6Ik1pa2UgT2VydGxpIiwiU2tpbGxzZXRzIjpbInJlY29zUnZpTG9C
+ Q2doNlRxIiwicmVjNUZZWFU2alRuWEtQSGciXSwiV2hhdCB0aW1lIHpvbmUg
+ YXJlIHlvdSBpbj8iOiJNU1QiLCJCaW8iOiJJJ20gYSBqYXZhIGRldmVsb3Bl
+ ciB3aXRoIGEgc3Ryb25nIGludGVyZXN0IGluIHNtYWxsIGJ1c2luZXNzIG9w
+ ZXJhdGlvbnMuIEkgd29yayBmb3IgYSBzbWFsbCBEb0QgY29udHJhY3Qgc2hv
+ cCBpbiBEZW52ZXIsIGhhcHB5IHRvIGhlbHAgaG93ZXZlciBJIGNhbiEiLCJB
+ Y3RpdmUiOnRydWUsIlNlcnZpY2VzIjpbInJlY3J5OHMxNHFHSmhIZU9DIiwi
+ cmVjTjBsSjQ2Qlluc0k4ejkiLCJyZWMzWlFNQ1FzS1BLbEUyQyIsInJlY0tM
+ UlVvbEN4c3ZXQnVGIiwicmVjdHpnVEdvUXl5MkZWTUMiXSwiRW1haWwiOiJt
+ aWtlb2VydGxpQGdtYWlsLmNvbSIsIkNvZGUgb2YgQ29uZHVjdCBBY2NlcHRl
+ ZD8iOnRydWUsIkd1aWRlYm9vayBSZWFkPyI6dHJ1ZX0sImNyZWF0ZWRUaW1l
+ IjoiMjAxNy0wOC0xN1QyMDowNTowMy4wMDBaIn0seyJpZCI6InJlY3FFOFps
+ OEZoNGJvNFBHIiwiZmllbGRzIjp7IlNsYWNrIE5hbWUiOiJmcmFua3l1Iiwi
+ RnVsbCBOYW1lIjoiRnJhbmsgWXUiLCJTa2lsbHNldHMiOlsicmVjSW1yb1du
+ ZDZwMDJhWHUiLCJyZWNVVjlETEVvSzFKcVJWOSJdLCJBY3RpdmUiOnRydWUs
+ IkVtYWlsIjoiZnJhbmt5dUBnbWFpbC5jb20ifSwiY3JlYXRlZFRpbWUiOiIy
+ MDE4LTAzLTI0VDE5OjEzOjU5LjAwMFoifSx7ImlkIjoicmVjcWV6Y3ZCcDRp
+ a2JOQXIiLCJmaWVsZHMiOnsiU2xhY2sgTmFtZSI6InBhdHJpY2sucGllcnNv
+ biIsIkZ1bGwgTmFtZSI6IlBhdHJpY2sgUGllcnNvbiIsIlNraWxsc2V0cyI6
+ WyJyZWNld2YxakxjTzFRbFZmWSIsInJlYzVGWVhVNmpUblhLUEhnIiwicmVj
+ YW9FeDFxMFFScHZjYVIiLCJyZWNxbXlDV2pQU0FxZ0NvcCIsInJlY1Nqcmxz
+ SHRXaDlYV09QIiwicmVjajJvbWR1N1duSVhMSmsiLCJyZWNXQkxmWkFiTmZQ
+ U3BMciIsInJlY2x0YVB3NjlFclJDSG1TIl0sIk1heCBNZW50ZWVzIjoxLCJF
+ bWFpbCI6InBhdHJpY2sucGllcnNvbkB2ZnczMjg1Lm9yZyJ9LCJjcmVhdGVk
+ VGltZSI6IjIwMTgtMDUtMDRUMjA6MTY6MDEuMDAwWiJ9LHsiaWQiOiJyZWNx
+ ckFlRnlsamxXdHNYQyIsImZpZWxkcyI6eyJTbGFjayBOYW1lIjoiQXNobGV5
+ IiwiRnVsbCBOYW1lIjoiQXNobGV5IFRlbXBsZXQiLCJTa2lsbHNldHMiOlsi
+ cmVjeUc2c2NFVHR4WnVUTngiXSwiTWVudG9yIFJlcXVlc3QiOlsicmVjTTN4
+ OE81TnltMmhBRU0iLCJyZWM1TnVmR0l3NlBMSlhjRCIsInJlY2xXdUFPSXpU
+ bjFQcnZ5IiwicmVjVkZMSDhvVnhRUDRlRVIiXSwiRW1haWwiOiJhc2hsZXku
+ dGVtcGxldEBnbWFpbC5jb20ifSwiY3JlYXRlZFRpbWUiOiIyMDE4LTAyLTEz
+ VDE5OjUyOjA5LjAwMFoifSx7ImlkIjoicmVjc2JsenlTTEZIT1NsMWYiLCJm
+ aWVsZHMiOnsiU2xhY2sgTmFtZSI6Im9oYWl3YWx0IiwiRnVsbCBOYW1lIjoi
+ TWF0dGhldyBXYWx0ZXIiLCJTa2lsbHNldHMiOlsicmVjU2pybHNIdFdoOVhX
+ T1AiLCJyZWNld2YxakxjTzFRbFZmWSIsInJlYzVGWVhVNmpUblhLUEhnIiwi
+ cmVjZkt4OGNyZ3JqTU12U2siXSwiV2hhdCB0aW1lIHpvbmUgYXJlIHlvdSBp
+ bj8iOiJVVEMtNCIsIkJpbyI6IkZvcm1lciBOYXZ5IElUMSB0dXJuZWQgTGlu
+ dXggc3lzYWRtaW4sIG5vdyBTaXRlIFJlbGlhYmlsaXR5IEVuZ2luZWVyIGF0
+ IHNvY2lhbGx5IGNvbnNjaW91cyBHb3ZUZWNoIHN0YXJ0dXAgU2VhbWxlc3NE
+ b2NzLiBBbGwgdGhpbmdzIGNvbnRhaW5lcnMsIG1vbml0b3JpbmcsIGF1dG9t
+ YXRpb24sIGNsb3VkLCBpbmZyYXN0cnVjdHVyZSwgc2VjdXJpdHksIGFuZCBz
+ YWZlIHN5c3RlbXMuXG5cbkludGVyZXN0ZWQgaW4gaGVscGluZyBvdXQgZmVs
+ bG93IHZldGVyYW5zIGFuZCBtYWtpbmcgdGhlIHRyYW5zaXRpb24gZWFzaWVy
+ LCBzaW5jZSBtaW5lIHdhcyBwcmV0dHkgcm91Z2ggYW5kIEkgYW0gdmVyeSBs
+ dWNreS9ibGVzc2VkIHRvIGJlIHdoZXJlIEkgYW0gdG9kYXkuIiwiQWN0aXZl
+ Ijp0cnVlLCJTZXJ2aWNlcyI6WyJyZWN0emdUR29ReXkyRlZNQyIsInJlY3J5
+ OHMxNHFHSmhIZU9DIiwicmVjeERycEZMOXc1dE56a1ciLCJyZWNLTFJVb2xD
+ eHN2V0J1RiIsInJlY04wbEo0NkJZbnNJOHo5Il0sIk1lbnRvciBSZXF1ZXN0
+ IjpbInJlY2htUDM2cEtXSThxRExqIl0sIkVtYWlsIjoib2hhaXdhbHRAZ21h
+ aWwuY29tIiwiQ29kZSBvZiBDb25kdWN0IEFjY2VwdGVkPyI6dHJ1ZSwiR3Vp
+ ZGVib29rIFJlYWQ/Ijp0cnVlfSwiY3JlYXRlZFRpbWUiOiIyMDE3LTA4LTE4
+ VDE2OjA0OjU3LjAwMFoifSx7ImlkIjoicmVjdXhVYnFQZXJMeGdvRmUiLCJm
+ aWVsZHMiOnsiU2xhY2sgTmFtZSI6InpkaWVobGlvIiwiRnVsbCBOYW1lIjoi
+ WmFjaGFyeSBMIERpZWhsIiwiU2tpbGxzZXRzIjpbInJlY0JJaERkdUpEM1lM
+ YUhxIiwicmVjblBIRGRXVzFKMDZldk8iLCJyZWNVVjlETEVvSzFKcVJWOSIs
+ InJlY2FvRXgxcTBRUnB2Y2FSIiwicmVjazRsa09Ua2ZzTVJQa1IiXSwiTWF4
+ IE1lbnRlZXMiOjUsIkVtYWlsIjoiemFjaGFyeS5kaWVobEBnbWFpbC5jb20i
+ fSwiY3JlYXRlZFRpbWUiOiIyMDE4LTA0LTI2VDE2OjQ1OjU3LjAwMFoifSx7
+ ImlkIjoicmVjdlVLeTZKbENUSEdDWmkiLCJmaWVsZHMiOnsiU2xhY2sgTmFt
+ ZSI6ImF1YnJleSIsIkZ1bGwgTmFtZSI6IkF1YnJleSBBcmNhbmdlbCIsIlNr
+ aWxsc2V0cyI6WyJyZWNKQkI3WnhUT002d0w1dyIsInJlY2FvRXgxcTBRUnB2
+ Y2FSIiwicmVjNUZZWFU2alRuWEtQSGciXSwiQWN0aXZlIjp0cnVlLCJNZW50
+ b3IgUmVxdWVzdCI6WyJyZWNNN0JudjZoOWtQMWhBYiJdLCJFbWFpbCI6ImFh
+ cmNhbmdlbEBnbWFpbC5jb20ifSwiY3JlYXRlZFRpbWUiOiIyMDE4LTAzLTI0
+ VDE5OjEzOjUxLjAwMFoifSx7ImlkIjoicmVjd0xQZ0Q5VEZURDQxZFIiLCJm
+ aWVsZHMiOnsiU2xhY2sgTmFtZSI6ImlPU1RvbSIsIkZ1bGwgTmFtZSI6IlRo
+ b21hcyIsIlNraWxsc2V0cyI6WyJyZWNvc1J2aUxvQkNnaDZUcSIsInJlY1dC
+ TGZaQWJOZlBTcExyIiwicmVjWTBHMjhESW5hZkJ4Z1QiLCJyZWN5RzZzY0VU
+ dHhadVROeCJdLCJNYXggTWVudGVlcyI6MSwiQWN0aXZlIjp0cnVlLCJFbWFp
+ bCI6InRob21hcy5tYXJsZXJAZ21haWwuY29tIn0sImNyZWF0ZWRUaW1lIjoi
+ MjAxOC0wMy0yNlQxNDoyNTo1Mi4wMDBaIn0seyJpZCI6InJlY3hZTzFqcUw0
+ SFduSmJJIiwiZmllbGRzIjp7IlNsYWNrIE5hbWUiOiJtc2NvdHQiLCJGdWxs
+ IE5hbWUiOiJNaWNoYWVsIEsgU2NvdHQiLCJTa2lsbHNldHMiOlsicmVjb3NS
+ dmlMb0JDZ2g2VHEiLCJyZWNmdzc4VmRuRDd0cFpWeiIsInJlY2FvRXgxcTBR
+ UnB2Y2FSIiwicmVjcW15Q1dqUFNBcWdDb3AiLCJyZWNDVmM3dTNrQ09OaEpm
+ RiIsInJlYzVGWVhVNmpUblhLUEhnIl0sIkFjdGl2ZSI6dHJ1ZSwiRW1haWwi
+ OiJtaWNoYWVsLmtlbGx5LnNjb3R0QGdtYWlsLmNvbSJ9LCJjcmVhdGVkVGlt
+ ZSI6IjIwMTgtMDMtMjZUMDY6MTE6NDYuMDAwWiJ9LHsiaWQiOiJyZWN4YmVU
+ MURhekxkWjJJOCIsImZpZWxkcyI6eyJTbGFjayBOYW1lIjoianJhbWVzIiwi
+ Tm90ZXMiOiJJIGFtIGFscmVhZHkgbWVudG9yaW5nIFJvbiBSaWhvby4gIEhv
+ cGVmdWxseSBJIHdpbGwgaGF2ZSBtb3JlIGJhbmR3aWR0aCBpbiB0aGUgZnV0
+ dXJlLCBidXQgY3VycmVudGx5IG15IGhhbmRzIGFyZSBwcmV0dHkgZnVsbCB3
+ aXRoIFJvbiBhbmQgc29tZSBvdGhlcnMgSSBzdGFydGVkIGhlbHBpbmcgcmVj
+ ZW50bHkuIiwiQXNzaWdubWVudHMiOlsicmVjTXFRQjhVUVBZSGVZNzAiXSwi
+ RnVsbCBOYW1lIjoiSmVmZiBSYW1lcyIsIlNraWxsc2V0cyI6WyJyZWNZMEcy
+ OERJbmFmQnhnVCIsInJlYzVGWVhVNmpUblhLUEhnIiwicmVjcW15Q1dqUFNB
+ cWdDb3AiLCJyZWNhb0V4MXEwUVJwdmNhUiJdLCJNYXggTWVudGVlcyI6MSwi
+ V2hhdCB0aW1lIHpvbmUgYXJlIHlvdSBpbj8iOiJDU1QiLCJIb3cgbWFueSBo
+ b3VycyB3b3VsZCB5b3UgbGlrZSB0byBtZW50b3IgZm9yLCBwZXIgbW9udGg/
+ IjoiNSIsIkJpbyI6IkkgaGF2ZSB3b3JrZWQgYXQgYSBmb3J0dW5lIDUwIGNv
+ bXBhbnksIGEgMiBwZXJzb24gY29uc3VsdGluZyBmaXJtLCBhbmQgY3VycmVu
+ dGx5IGEgc21hbGwgYnVzaW5lc3MgYWJvdXQgYWJvdXQgMTAwIGVtcGxveWVl
+ cy4gIEkgY3VycmVudGx5IHdvcmsgb24gaU9TIG1lZGljYWwgZW50ZXJwcmlz
+ ZSBzb2Z0d2FyZS4gIEkgYWxzbyBkbyB3cml0aW5nIGFuZCB0ZWNobmljYWwg
+ ZWRpdGluZyBmb3IgYSB0dXRvcmlhbCBzaXRlLCByYXl3ZW5kZXJsaWNoLmNv
+ bS5cblxuSSdtIGFsd2F5cyBoYXBweSB0byBoZWxwIHBlb3BsZSB0aGF0IGFy
+ ZSBzdGFydGluZyBvdXQsIGFuZCBvbmx5IHJlY2VudGx5IHJlYWxpemVkIEkg
+ c2hvdWxkIGxvb2sgZm9yIG9mZmljaWFsIG1lbnRvcmluZyBvcHBvcnR1bml0
+ aWVzLiBTb21lb25lIG1lbnRpb25lZCBPcGVyYXRpb24gQ29kZSwgYW5kIEkg
+ d2FzIGltbWVkaWF0ZWx5IGludGVyZXN0ZWQuICBJIGxpa2UgdGhlIGlkZWEg
+ b2YgZ2l2aW5nIGJhY2sgdG8gYSBjb21tdW5pdHkgdGhhdCBoYXMgZ2l2ZW4g
+ c28gbXVjaCBmb3Igb3VyIGNvdW50cnkuXG5cbkknbSBiZXN0IHBvc2l0aW9u
+ ZWQgdG8gaGVscCBwZW9wbGUgaW50ZXJlc3RlZCBpbiBtb2JpbGUgYXBwbGlj
+ YXRpb24gZGV2ZWxvcG1lbnQuICBDYXJlZXIgZ3VpZGFuY2UgaXMgYWxzbyBh
+ bm90aGVyIGFyZWEgd2hlcmUgSSBjYW4gcHJvdmlkZSBzb21lIGhlbHAsIHBh
+ cnRpY3VsYXJseSB0byB0aG9zZSBlYXJseSBpbiB0aGVpciBjYXJlZXJzLiAg
+ IiwiQWN0aXZlIjp0cnVlLCJNZW50b3IgUmVxdWVzdCI6WyJyZWNJSXVaVmYw
+ UTltUmNoTCJdLCJFbWFpbCI6ImpyYW1lc0BnbWFpbC5jb20ifSwiY3JlYXRl
+ ZFRpbWUiOiIyMDE2LTEyLTE4VDE4OjU5OjQ0LjAwMFoifSx7ImlkIjoicmVj
+ eUdHU292VHJ1bDQwMVkiLCJmaWVsZHMiOnsiU2xhY2sgTmFtZSI6Ik1iYWNo
+ IiwiQXNzaWdubWVudHMiOlsicmVjQ1dGaG1TRndSdlZKb0kiXSwiRnVsbCBO
+ YW1lIjoiTWF0dGhldyBCYWNoIiwiU2tpbGxzZXRzIjpbInJlY2V3ZjFqTGNP
+ MVFsVmZZIiwicmVjRTZHR2tMNHcyVDZwbkMiLCJyZWNUdTd0NU0wVmlJTG01
+ QSIsInJlY1NqcmxzSHRXaDlYV09QIl0sIk1heCBNZW50ZWVzIjoyLCJXaGF0
+ IHRpbWUgem9uZSBhcmUgeW91IGluPyI6IkVhc3Rlcm4iLCJIb3cgbWFueSBo
+ b3VycyB3b3VsZCB5b3UgbGlrZSB0byBtZW50b3IgZm9yLCBwZXIgbW9udGg/
+ IjoiOCIsIkJpbyI6IldvdWxkIHByZWZlciBzb21lb25lIHdobyBpcyBlYWdl
+ ciB0byBwcm9ibGVtIHNvbHZlIHdpdGggUHl0aG9uIGFzIGFuIGF1dG9tYXRp
+ b24gbGFuZ3VhZ2UuIFRoaXMgaXMgbGlrZWx5IHdoZXJlIEkgY2FuIGJlIHRo
+ ZSBtb3N0IGhlbHAsIGJ1dCBJJ20gd2lsbGluZyB0byB0YWtlIG9uIGFueW9u
+ ZSB3aG8ncyBpbnRlcmVzdGVkLiAiLCJBY3RpdmUiOnRydWUsIlNxdWFkcyI6
+ WyJyZWNJNGlIcFVQamtkbnJVZyJdLCJNZW50b3IgUmVxdWVzdCI6WyJyZWNG
+ ZldvZWxaaktjVE9iMCJdLCJFbWFpbCI6Im1iYWNoMDRAZ21haWwuY29tIn0s
+ ImNyZWF0ZWRUaW1lIjoiMjAxNy0wMS0wMlQxNjozMDo0Ni4wMDBaIn1dfQ==
+ http_version:
+ recorded_at: Sun, 06 May 2018 16:27:07 GMT
+- request:
+ method: get
+ uri: https://api.airtable.com/v0/some_random_id/Services
+ body:
+ encoding: US-ASCII
+ string: ''
+ headers:
+ Authorization:
+ - Bearer some_random_key
+ response:
+ status:
+ code: 200
+ message: OK
+ headers:
+ Access-Control-Allow-Headers:
+ - content-type, authorization, content-length, x-requested-with, x-api-version,
+ x-airtable-application-id, user-agent, x-airtable-user-agent
+ Access-Control-Allow-Methods:
+ - GET,PUT,POST,PATCH,DELETE,OPTIONS
+ Access-Control-Allow-Origin:
+ - "*"
+ Content-Type:
+ - application/json; charset=utf-8
+ Date:
+ - Sun, 06 May 2018 16:27:05 GMT
+ Etag:
+ - W/"1905-MIKFMHVdDXjLEi25UpV9coUOiKs"
+ Server:
+ - Tengine
+ Vary:
+ - Accept-Encoding
+ Content-Length:
+ - '6405'
+ Connection:
+ - keep-alive
+ body:
+ encoding: UTF-8
+ string: '{"records":[{"id":"rec3ZQMCQsKPKlE2C","fields":{"Name":"Mock Interview","Description":"Have
+ one of our mentors conduct a mock coding interview.","Mentors":["recGp2dytDt32ojl6","recRlWEzlSS7xPcMD","recoAB9NcDwlBgHkj","recooZOCPZ5mR6ARp","recBM9iaLwaAee4BQ"],"Mentor
+ Request":["recPM75fIOPfXR51m","recFzUhBO0KY496hy","recpIo6InoCqCKznj","recPRPi6IzrcHPSfR","recJ3q5zTOccP0Wnt","recgvmUOrfbP73wI5","recPr5qFiMDGc9624"],"Mentor
+ Skills":["recbn3OVB3DUPWuI0","recIUKKi6ZDfmamqb","recJR4JPYBISWJVGx"],"Mentor
+ Count":5,"Mentee Requests":0},"createdTime":"2017-03-05T19:10:07.000Z"},{"id":"recKLRUolCxsvWBuF","fields":{"Name":"Code
+ Review","Description":"Have a mentor look over a PR, code exercise or software
+ architecture","Mentors":["recGp2dytDt32ojl6","recRlKczGAcNKN26G","recJkYfbRbuxOXTLA","recRlWEzlSS7xPcMD","recoAB9NcDwlBgHkj","recooZOCPZ5mR6ARp","recsblzySLFHOSl1f","reccKrEc0w88fSs7W","recBM9iaLwaAee4BQ","recQI7eSAFvP5LEhP"],"Mentor
+ Request":["recvhYWculzcAxvi2","recP93VUeYeyhrNVz","recvJu22zZ4xy5FGs","recAF7yKRfpfHjrhK"],"Mentor
+ Skills":["recXxKHRRiglWGPWt","recbn3OVB3DUPWuI0","reczS6v9bDXf9G8CV","recIUKKi6ZDfmamqb","recJR4JPYBISWJVGx"],"Mentor
+ Count":10,"Mentee Requests":0},"createdTime":"2017-03-05T19:09:58.000Z"},{"id":"recN0lJ46BYnsI8z9","fields":{"Name":"Resume
+ Review","Description":"Have one of our mentors look over your resume","Mentors":["recGp2dytDt32ojl6","recRlWEzlSS7xPcMD","recoAB9NcDwlBgHkj","recooZOCPZ5mR6ARp","recsblzySLFHOSl1f","recErAVRZsjwjpULL","recBM9iaLwaAee4BQ","rec8gWUa2agvWe6fj","recQI7eSAFvP5LEhP"],"Mentor
+ Request":["rec0tJIOd8GpmqZ5V","recfwDlYeOARfJoe8","recw5Xw9qkv3VrzE2","reczhwH7rtfs8clc4","recCMQKVmFULiFdAI","recxcgnhlG58HvTmn","recyk8xo77dMdaogb","reclWuAOIzTn1Prvy","rec1CMvTYgcM3c0A5","recufM56SJoHpZP5u","recVNznRKWyKFfQRF","recc1jYPa3GkV1aac","recUAjRcW1Oj3AbNv","rechmP36pKWI8qDLj"],"Mentor
+ Skills":["recXxKHRRiglWGPWt","recIUKKi6ZDfmamqb","recJR4JPYBISWJVGx"],"Mentor
+ Count":9,"Mentee Requests":0},"createdTime":"2017-03-05T19:10:10.000Z"},{"id":"recry8s14qGJhHeOC","fields":{"Name":"General
+ Guidance - Slack Chat","Description":"Chat 1 on 1 with a mentor via slack
+ chat","Mentors":["recGp2dytDt32ojl6","recRlKczGAcNKN26G","recJkYfbRbuxOXTLA","recoAB9NcDwlBgHkj","recooZOCPZ5mR6ARp","recsblzySLFHOSl1f","recErAVRZsjwjpULL","reccKrEc0w88fSs7W","recBM9iaLwaAee4BQ","rec8gWUa2agvWe6fj","recQI7eSAFvP5LEhP"],"Mentees":["recwZDCOVDH3QU3Vq","recQxZqkW2QfrDX7E"],"Mentor
+ Request":["recQlLUpf76DI9uRt","recxTxNKZcYuZPgiV","recWD3SbCvBHCtPEv","reckywOc9xoVAQ4vl","rec7C3aD1Z4WJcGnD","recvEsH0WKwfOIvat","recJf3oHXBNzAdJK8","recUNPVezaf8UNuqi","recMU7Jm7lU8GKSNy","recy9ZOgGCdJ4OjxX","recHVC8HTzXWsZeLg","rec7rx7ilpWb1W88v","rece8pNd1jYbi6Myc","recL3hM3ELIHQjtpD","recISHnxSOMjxKrgi","recYBK56Xp8AVEkYX","recRwfkRluRKOhKM4","recX6K7E4ydO0YjPy","recK1EkZSZCLFA007","recEXEwOmEWnxHdne","recF6AkQMSJaAa7ki","recjMGB93cCTBRAZY","rechii0wYCNIqdw8P","recGuKPSSlzj7mdM1","recBargZbtPOcpotA","rec9aa5x8ZRwA47Zr","recCymG2ALbKUAIXB","rec3aMjN13XEM2cUW","recjnrbWiZEl0brY1","rectLIJFqjVS6WhpM","recIIuZVf0Q9mRchL","recqVu45XffOI48Q5","recLnucDYfq0Mu1cA","recH5papKgKz88dbM","rec5BghMVYJ2KntB9","recYfXnoqFBgxwlDA","recBEPGtjSaA4vyta","recKoXfJZhyCDUFCV","recFekw7gHVMUlndt","rec6H2ZHUVnPU1IhC","recxD9kZnxYjJrut5","recjs0mQjL01oyQgj","recFfWoelZjKcTOb0","recmV1rL9Nfvo6tLx","recTzbQImlYsBi1M6","recSYBMzzdV0Nve8z","recbno9og0y0awr3Z","rechSkc7p41sx5jYq","recQP3XP3MUcpnkE0","recy6qoppSKByp1kH","rec9JNuk4ukpteyIR","recBNrnoQr0LEnBPd","recq4B8aguxGWdcwT","recVFLH8oVxQP4eER","recfV4wkoKGrcrlju","rechCv1ax04rK8kzy","recI0eTHxdoAOsKjQ","rec5jawkKPQKilO7t","recH1uObvhmQw6BBg","recweUyCr42l5ssrN","rec6PmvxU85p59gIK","recUQ2SlgVZmup8jM","rec8g9DWRhfcFhLgl","rec7ufwS4Id3VOke5","rec9T1AP2teWQLtEf","reck20KTFAABo6Be1","recABaMetQGB2Wsr4","reczPcsp85arch31m","recDtkpn4f0HwZgOm","recWg4m7RAN1yuhH4","recYwqjVh4sKOnOCS","recMth82AsU3nngSs","recOLfWE8TwHPzAmd","recRxDOVqyBfSlx9L","recZWgBHqNaWipElw","recb5DnUjyDIS4SRV","recN4ACryNBZj87Mm"],"Mentor
+ Skills":["recCbfP26C9oyF6oZ","recXxKHRRiglWGPWt","recbn3OVB3DUPWuI0","reczS6v9bDXf9G8CV","recJR4JPYBISWJVGx"],"Mentor
+ Count":11,"Mentee Requests":2},"createdTime":"2017-03-05T19:07:42.000Z"},{"id":"rectzgTGoQyy2FVMC","fields":{"Name":"General
+ Guidance - Voice Chat","Description":"Chat 1 on 1 with a mentor via voice
+ or video","Mentors":["recGp2dytDt32ojl6","recJkYfbRbuxOXTLA","recRlWEzlSS7xPcMD","recooZOCPZ5mR6ARp","recsblzySLFHOSl1f","recErAVRZsjwjpULL","reccKrEc0w88fSs7W","recBM9iaLwaAee4BQ","rec8gWUa2agvWe6fj","recQI7eSAFvP5LEhP"],"Mentor
+ Request":["reciES5Dp5sR5UiTD","recPXxsjkxCK30l5w","rec86L1kFMGYOmnGn","rec3Sp9P5gTgMFdub","recWJcrc7yshLW535","recyw52g0meDKcxBS","recTrJNLGZeyZrQso","recle23ZC0KGpzq7f","recI84guIOF7Rm4xN","recFiFgdmv7q8OI0k","recfxAuJUGJZQuyOv","recDsbdLGttUXWmUk","rec2n9fNgVJOvk9N3","recb3rcFjBP66pEsM","recO0gtj5NOox5cvU","rec72rOLM74NmG7mL","recEgw278MbXFPjXV","rec5NufGIw6PLJXcD","recVlscT5IeV7Jy0j","recV2opjArSXUkM85","recoHLGJd46435i6v","rec0WXnwFu0gRnZr6","recTx4fWdyWA5XiAT","recf6fuzdgY4fwgQm","recBVb0ZegUcGmLmn","rechOY0LvnrO5p8uM","recdFALRdOkpObGsO","recaK1RmmTwPbtQch","rechlkZKhQIPebb5X","recM3x8O5Nym2hAEM","recqqkBPcUrpozV8f","reclEsb5Tn63Yz17u","receOS381ThK8L27v","recul4wH0fUXpcku5","rec2CpCt6XTrmKf2I","recF5h7HvxIvPuLJV","recIEqi0xGG12h3q2","recM7Bnv6h9kP1hAb","recWPOb4pbLJLSBBO","recw5yJdWIp6t9Lwg","recd4hW73XpoSgWVq","recuyrOhS8FwT1TdH"],"Mentor
+ Skills":["recCbfP26C9oyF6oZ","recXxKHRRiglWGPWt","reczS6v9bDXf9G8CV","recJR4JPYBISWJVGx"],"Mentor
+ Count":10,"Mentee Requests":0},"createdTime":"2017-03-05T19:07:42.000Z"},{"id":"recxDrpFL9w5tNzkW","fields":{"Name":"Pair
+ Programming","Description":"Spend an hour with a mentor programming together","Mentors":["recJkYfbRbuxOXTLA","recRlWEzlSS7xPcMD","recsblzySLFHOSl1f","reccKrEc0w88fSs7W","recBM9iaLwaAee4BQ","recQI7eSAFvP5LEhP"],"Mentees":["recQxZqkW2QfrDX7E"],"Mentor
+ Request":["recoZWLdBba0RtObw","recfuT67S14yMmRsR","recH75YcWSGHzoDgL","recVcYxcQZNhZBz8R","rec8OYu6F8n9O2pbv","recbLo1LZkH78m0tf","recPz02jtI7F5Vw4d","recDFjF5KTByknL2j","recWka1ynPANo5s3X","recBtZ6gFrjpRFYFM","recAwQTvFeITTfXe8","recv5Zgl4WqF9RXqr","recD78YUBEB5C7lDF","recpgngdrEXCHdoZK","recQddCu26j0MGmO5","recdGPicU3AM6jUnt","recz1vIqJnTTzDcBS","recevtA3LaYZMqSI2"],"Mentor
+ Skills":["recCbfP26C9oyF6oZ","recbn3OVB3DUPWuI0","reczS6v9bDXf9G8CV","recJR4JPYBISWJVGx"],"Mentor
+ Count":6,"Mentee Requests":1},"createdTime":"2017-03-05T19:07:42.000Z"}]}'
+ http_version:
+ recorded_at: Sun, 06 May 2018 16:27:07 GMT
+- request:
+ method: get
+ uri: https://api.airtable.com/v0/some_random_id/Skillsets
+ body:
+ encoding: US-ASCII
+ string: ''
+ headers:
+ Authorization:
+ - Bearer some_random_key
+ response:
+ status:
+ code: 200
+ message: OK
+ headers:
+ Access-Control-Allow-Headers:
+ - content-type, authorization, content-length, x-requested-with, x-api-version,
+ x-airtable-application-id, user-agent, x-airtable-user-agent
+ Access-Control-Allow-Methods:
+ - GET,PUT,POST,PATCH,DELETE,OPTIONS
+ Access-Control-Allow-Origin:
+ - "*"
+ Content-Type:
+ - application/json; charset=utf-8
+ Date:
+ - Sun, 06 May 2018 16:27:05 GMT
+ Etag:
+ - W/"2a5f-riCl8fpcICS4IRlHlF8n2iJxErg"
+ Server:
+ - Tengine
+ Vary:
+ - Accept-Encoding
+ Content-Length:
+ - '10847'
+ Connection:
+ - keep-alive
+ body:
+ encoding: UTF-8
+ string: '{"records":[{"id":"rec5FYXU6jTnXKPHg","fields":{"Name":"Resume Reviews","Mentors":["recZIExVz7yhKtfa8","recxbeT1DazLdZ2I8","recF4oBzjE3J6A0wo","recGp2dytDt32ojl6","recRlWEzlSS7xPcMD","recoAB9NcDwlBgHkj","recooZOCPZ5mR6ARp","recsblzySLFHOSl1f","recErAVRZsjwjpULL","rec38psl7zI8p3aiT","recTQo4CbKgdmT9Xv","recvUKy6JlCTHGCZi","reciZI1OmBZCdujC5","rec425V9c8DsQKckC","rec7i7HYMRX6AArBS","rec9Mcs5JTFxVoKT1","rec2QLQ76thAVQjH0","recxYO1jqL4HWnJbI","rec7ZSEBrUJU9OwRk","recb6YEKZaBKAyt8y","recjZD8fqugX8c2y3","recQrZvfSR4jn3RNO","recQI7eSAFvP5LEhP","recqezcvBp4ikbNAr"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"rec6iqhMxHhlRZrhx","fields":{"Name":"Bot
+ Specialist","Mentors":["recIPKInSvxr30rcF"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"rec8IVKeTrwsgUPcg","fields":{"Name":"C#/Net","Mentors":["rec8hCvdcwA2tR3vF"]},"createdTime":"2018-04-24T16:51:28.000Z"},{"id":"rec9lnHZaDt2CvVrZ","fields":{"Name":"Ruby
+ / Rails","Mentors":["recGp2dytDt32ojl6","recRlKczGAcNKN26G","recJkYfbRbuxOXTLA","recBM9iaLwaAee4BQ","rec6nA4WIrhCtKW5n","rec0SDZDK2DiW4PY9","recV0qJD28ki2Q8kr","reciZI1OmBZCdujC5","recH8e2ZDtftbFqRC","rec8hCvdcwA2tR3vF"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recBIhDduJD3YLaHq","fields":{"Name":"JavaScript","Mentors":["recjZD8fqugX8c2y3","rec8hCvdcwA2tR3vF","recuxUbqPerLxgoFe"]},"createdTime":"2018-04-11T20:42:43.000Z"},{"id":"recCKrPnHDqOdlhAg","fields":{"Name":"Cake","Mentors":["reccKrEc0w88fSs7W"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recCVc7u3kCONhJfF","fields":{"Name":"Back
+ End Development","Mentors":["recftNiD91Hhj9506","recF4oBzjE3J6A0wo","recGp2dytDt32ojl6","recJkYfbRbuxOXTLA","recRlWEzlSS7xPcMD","recoAB9NcDwlBgHkj","reccKrEc0w88fSs7W","rec38psl7zI8p3aiT","rec6nA4WIrhCtKW5n","rec0SDZDK2DiW4PY9","reclgA4dggm30b2WQ","recTQo4CbKgdmT9Xv","recV0qJD28ki2Q8kr","reciZI1OmBZCdujC5","rec425V9c8DsQKckC","recP0NNDfDq02vl6Y","rec9Mcs5JTFxVoKT1","recxYO1jqL4HWnJbI","recH8e2ZDtftbFqRC","recPq1y7NgZfrBe6m","recjZD8fqugX8c2y3","rec8hCvdcwA2tR3vF","recQI7eSAFvP5LEhP"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recE6GGkL4w2T6pnC","fields":{"Name":"SQL","Mentors":["recyGGSovTrul401Y","recftNiD91Hhj9506","recF4oBzjE3J6A0wo","recGp2dytDt32ojl6","recRlWEzlSS7xPcMD","recoAB9NcDwlBgHkj","recErAVRZsjwjpULL","recBM9iaLwaAee4BQ","recTQo4CbKgdmT9Xv","recV0qJD28ki2Q8kr","reciZI1OmBZCdujC5","rec425V9c8DsQKckC","rec9Mcs5JTFxVoKT1","recPq1y7NgZfrBe6m","recjZD8fqugX8c2y3","rec8hCvdcwA2tR3vF"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recFJ9FXE6zxrd9i4","fields":{"Name":"Mobile
+ (Android)","Mentors":["receBeTyuWlLfApHB"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recImroWnd6p02aXu","fields":{"Name":"Design
+ / UX","Mentors":["recErAVRZsjwjpULL","recqE8Zl8Fh4bo4PG","rec7i7HYMRX6AArBS","receGKFRAxZa0ZHNf","recP0NNDfDq02vl6Y","rec9Mcs5JTFxVoKT1"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recJACxkZuHTZSU2j","fields":{"Name":"Data
+ Science","Mentors":["reccKrEc0w88fSs7W","recQI7eSAFvP5LEhP"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recJBB7ZxTOM6wL5w","fields":{"Name":"Javascript","Mentors":["recZIExVz7yhKtfa8","recftNiD91Hhj9506","recF4oBzjE3J6A0wo","recRlWEzlSS7xPcMD","recBM9iaLwaAee4BQ","rec0SDZDK2DiW4PY9","reclgA4dggm30b2WQ","recV0qJD28ki2Q8kr","recvUKy6JlCTHGCZi","reciZI1OmBZCdujC5","rec425V9c8DsQKckC","rec9Mcs5JTFxVoKT1","rec2QLQ76thAVQjH0"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recJHiVQNIC3ONMWs","fields":{"Name":"UNIX
+ Linux Mac OS and command line operation and scripting","Mentors":["rec7ZSEBrUJU9OwRk","recQI7eSAFvP5LEhP"]},"createdTime":"2018-03-27T14:42:54.000Z"},{"id":"recM9kb3SazF466xo","fields":{"Name":"Azure","Mentors":["reccKrEc0w88fSs7W"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recNONJ8S1p1TjfKV","fields":{"Name":"C#
+ / .NET","Mentors":["recftNiD91Hhj9506","recoAB9NcDwlBgHkj","reccKrEc0w88fSs7W"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recOfGy9tMeUwjN78","fields":{"Name":"Android
+ Development","Mentors":["recF4oBzjE3J6A0wo","reccKrEc0w88fSs7W"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recQ6ex9GF5ijQTod","fields":{"Name":"PHP","Mentors":["recPq1y7NgZfrBe6m"]},"createdTime":"2018-04-07T03:33:18.000Z"},{"id":"recRyPBwN1JBj9D9l","fields":{"Name":"Ethics","Mentors":["recEoe9Yqs6YMGm1L"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recSjrlsHtWh9XWOP","fields":{"Name":"DevOps","Mentors":["recyGGSovTrul401Y","recF4oBzjE3J6A0wo","recRlWEzlSS7xPcMD","recoAB9NcDwlBgHkj","recsblzySLFHOSl1f","reccKrEc0w88fSs7W","rec6nA4WIrhCtKW5n","rec425V9c8DsQKckC","rec8gWUa2agvWe6fj","recb6YEKZaBKAyt8y","rec8hCvdcwA2tR3vF","recqezcvBp4ikbNAr"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recSy4HmIGtILqZRv","fields":{"Name":"Xamarian","Mentors":["reccKrEc0w88fSs7W"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recSzicEsYXG4P1A4","fields":{"Name":"Architecture","Mentors":["recftNiD91Hhj9506"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recTu7t5M0ViILm5A","fields":{"Name":"Web
+ (Backend Development)","Mentors":["recyGGSovTrul401Y","recBM9iaLwaAee4BQ","recQI7eSAFvP5LEhP"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recUV9DLEoK1JqRV9","fields":{"Name":"Entrepreneurship","Mentors":["recEoe9Yqs6YMGm1L","reccKrEc0w88fSs7W","recqE8Zl8Fh4bo4PG","receGKFRAxZa0ZHNf","recP0NNDfDq02vl6Y","recQrZvfSR4jn3RNO","recuxUbqPerLxgoFe"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recWBLfZAbNfPSpLr","fields":{"Name":"Linux","Mentors":["recV0qJD28ki2Q8kr","rec425V9c8DsQKckC","receGKFRAxZa0ZHNf","recP0NNDfDq02vl6Y","recwLPgD9TFTD41dR","rec7ZSEBrUJU9OwRk","recjZD8fqugX8c2y3","rec8hCvdcwA2tR3vF","recQI7eSAFvP5LEhP","recqezcvBp4ikbNAr"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recXeV4Fm0lHnUt2e","fields":{"Name":"Slack","Mentors":["recEoe9Yqs6YMGm1L"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recY0G28DInafBxgT","fields":{"Name":"IoS
+ Development","Mentors":["recxbeT1DazLdZ2I8","reccKrEc0w88fSs7W","receGKFRAxZa0ZHNf","recwLPgD9TFTD41dR"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recZG14sS7YYVkV3R","fields":{"Name":"scala","Mentors":["recJ8Wi2LOqlY1gaf"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recaoEx1q0QRpvcaR","fields":{"Name":"General
+ Career Advice","Mentors":["recxbeT1DazLdZ2I8","recftNiD91Hhj9506","recRlWEzlSS7xPcMD","recoAB9NcDwlBgHkj","rec0SDZDK2DiW4PY9","reclgA4dggm30b2WQ","recTQo4CbKgdmT9Xv","recvUKy6JlCTHGCZi","reciZI1OmBZCdujC5","rec425V9c8DsQKckC","rec7i7HYMRX6AArBS","recP0NNDfDq02vl6Y","recxYO1jqL4HWnJbI","rec7ZSEBrUJU9OwRk","recH8e2ZDtftbFqRC","rec8gWUa2agvWe6fj","recb6YEKZaBKAyt8y","recjZD8fqugX8c2y3","recQrZvfSR4jn3RNO","rec8hCvdcwA2tR3vF","recuxUbqPerLxgoFe","recQI7eSAFvP5LEhP","recqezcvBp4ikbNAr"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recewf1jLcO1QlVfY","fields":{"Name":"Python","Mentors":["recyGGSovTrul401Y","recRlWEzlSS7xPcMD","recoAB9NcDwlBgHkj","recsblzySLFHOSl1f","recErAVRZsjwjpULL","rec38psl7zI8p3aiT","recTQo4CbKgdmT9Xv","recP0NNDfDq02vl6Y","rec9Mcs5JTFxVoKT1","rec8hCvdcwA2tR3vF","recQI7eSAFvP5LEhP","recqezcvBp4ikbNAr"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recf0UbPWw289LKjw","fields":{"Name":"Dancing","Mentors":["recEoe9Yqs6YMGm1L"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recfINzrFfLKSI0GV","fields":{"Name":"Prolog","Mentors":["rec38psl7zI8p3aiT"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recfKx8crgrjMMvSk","fields":{"Name":"Cat
+ Pictures","Mentors":["recftNiD91Hhj9506","recsblzySLFHOSl1f"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recfw78VdnD7tpZVz","fields":{"Name":"Functional
+ Programming","Mentors":["recftNiD91Hhj9506","recRlWEzlSS7xPcMD","recJ8Wi2LOqlY1gaf","rec425V9c8DsQKckC","receGKFRAxZa0ZHNf","recP0NNDfDq02vl6Y","recxYO1jqL4HWnJbI","recPq1y7NgZfrBe6m","rec8hCvdcwA2tR3vF"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recj2omdu7WnIXLJk","fields":{"Name":"Data-Science","Mentors":["recErAVRZsjwjpULL","recTQo4CbKgdmT9Xv","receGKFRAxZa0ZHNf","rec8hCvdcwA2tR3vF","recqezcvBp4ikbNAr"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"reck4lkOTkfsMRPkR","fields":{"Name":"Front
+ End Development","Mentors":["recZIExVz7yhKtfa8","recftNiD91Hhj9506","recRlWEzlSS7xPcMD","rec0SDZDK2DiW4PY9","reclgA4dggm30b2WQ","rec425V9c8DsQKckC","rec9Mcs5JTFxVoKT1","rec2QLQ76thAVQjH0","recjZD8fqugX8c2y3","rec8hCvdcwA2tR3vF","recuxUbqPerLxgoFe"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recl8Vwo2xuFiErJy","fields":{"Name":"C
+ / C++","Mentors":["receBeTyuWlLfApHB","rec38psl7zI8p3aiT","receGKFRAxZa0ZHNf","recP0NNDfDq02vl6Y"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recltaPw69ErRCHmS","fields":{"Name":"Amazon
+ Web Services","Mentors":["recqezcvBp4ikbNAr"]},"createdTime":"2018-05-04T20:16:01.000Z"},{"id":"recn4IOqrQ5upCwwY","fields":{"Name":"Cyber-Security","Mentors":["rec425V9c8DsQKckC"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recnPHDdWW1J06evO","fields":{"Name":"React","Mentors":["recftNiD91Hhj9506","recRlWEzlSS7xPcMD","rec0SDZDK2DiW4PY9","rec425V9c8DsQKckC","rec9Mcs5JTFxVoKT1","rec2QLQ76thAVQjH0","recjZD8fqugX8c2y3","rec8hCvdcwA2tR3vF","recuxUbqPerLxgoFe"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recosRviLoBCgh6Tq","fields":{"Name":"Java","Mentors":["receBeTyuWlLfApHB","recF4oBzjE3J6A0wo","recGp2dytDt32ojl6","recoAB9NcDwlBgHkj","recooZOCPZ5mR6ARp","recErAVRZsjwjpULL","reccKrEc0w88fSs7W","recTQo4CbKgdmT9Xv","receGKFRAxZa0ZHNf","recP0NNDfDq02vl6Y","recxYO1jqL4HWnJbI","recwLPgD9TFTD41dR","recQI7eSAFvP5LEhP"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recpdV6vAmtmI5psM","fields":{"Name":"Web
+ (Frontend Development)","Mentors":["recBM9iaLwaAee4BQ"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recqmyCWjPSAqgCop","fields":{"Name":"Code
+ Review","Mentors":["recxbeT1DazLdZ2I8","recftNiD91Hhj9506","recGp2dytDt32ojl6","recJkYfbRbuxOXTLA","recRlWEzlSS7xPcMD","rec38psl7zI8p3aiT","reclgA4dggm30b2WQ","recTQo4CbKgdmT9Xv","recV0qJD28ki2Q8kr","rec425V9c8DsQKckC","recP0NNDfDq02vl6Y","rec9Mcs5JTFxVoKT1","rec2QLQ76thAVQjH0","recxYO1jqL4HWnJbI","recH8e2ZDtftbFqRC","recjZD8fqugX8c2y3","rec8hCvdcwA2tR3vF","recQI7eSAFvP5LEhP","recqezcvBp4ikbNAr"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recvDGhGfPUK5UwG0","fields":{"Name":"product
+ and program management (transitioning to or growing within the function)","Mentors":["recQrZvfSR4jn3RNO"]},"createdTime":"2018-04-23T18:52:44.000Z"},{"id":"recwFfIrvPeq0qGXG","fields":{"Name":"C/C++","Mentors":["rec8hCvdcwA2tR3vF"]},"createdTime":"2018-04-24T16:51:28.000Z"},{"id":"recyG6scETtxZuTNx","fields":{"Name":"Cyber-security","Mentors":["recWPyxrY2QKAkPVL","recqrAeFyljlWtsXC","recwLPgD9TFTD41dR","rec8hCvdcwA2tR3vF"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"recyGndgUYkkyPCrS","fields":{"Name":"Career
+ Advice","Mentors":["recEoe9Yqs6YMGm1L","recQI7eSAFvP5LEhP"]},"createdTime":"2018-03-26T19:22:16.000Z"},{"id":"reczl5liQJOJCap7L","fields":{"Name":"Resume
+ Review","Mentors":["recEoe9Yqs6YMGm1L"]},"createdTime":"2018-03-26T19:22:16.000Z"}]}'
+ http_version:
+ recorded_at: Sun, 06 May 2018 16:27:07 GMT
+recorded_with: VCR 3.0.3
diff --git a/test/cassettes/api_v_airtable_mentorships_controller_test/_create_when_user_is_not_verified_it_returns_a_and_error_message.yml b/test/cassettes/api_v_airtable_mentorships_controller_test/_create_when_user_is_not_verified_it_returns_a_and_error_message.yml
new file mode 100644
index 00000000..aa0a4730
--- /dev/null
+++ b/test/cassettes/api_v_airtable_mentorships_controller_test/_create_when_user_is_not_verified_it_returns_a_and_error_message.yml
@@ -0,0 +1,115 @@
+---
+http_interactions:
+- request:
+ method: get
+ uri: http://maps.googleapis.com/maps/api/geocode/json?address=97201&language=en&sensor=false
+ body:
+ encoding: US-ASCII
+ string: ''
+ headers:
+ Accept-Encoding:
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
+ Accept:
+ - "*/*"
+ User-Agent:
+ - Ruby
+ response:
+ status:
+ code: 200
+ message: OK
+ headers:
+ Content-Type:
+ - application/json; charset=UTF-8
+ Date:
+ - Sun, 06 May 2018 19:46:13 GMT
+ Expires:
+ - Mon, 07 May 2018 19:46:13 GMT
+ Access-Control-Allow-Origin:
+ - "*"
+ Server:
+ - mafe
+ Content-Length:
+ - '495'
+ X-Xss-Protection:
+ - 1; mode=block
+ X-Frame-Options:
+ - SAMEORIGIN
+ Cache-Control:
+ - public, max-age=86400
+ Age:
+ - '1'
+ body:
+ encoding: ASCII-8BIT
+ string: |
+ {
+ "results" : [
+ {
+ "address_components" : [
+ {
+ "long_name" : "97201",
+ "short_name" : "97201",
+ "types" : [ "postal_code" ]
+ },
+ {
+ "long_name" : "Southwest Portland",
+ "short_name" : "Southwest Portland",
+ "types" : [ "neighborhood", "political" ]
+ },
+ {
+ "long_name" : "Portland",
+ "short_name" : "Portland",
+ "types" : [ "locality", "political" ]
+ },
+ {
+ "long_name" : "Multnomah County",
+ "short_name" : "Multnomah County",
+ "types" : [ "administrative_area_level_2", "political" ]
+ },
+ {
+ "long_name" : "Oregon",
+ "short_name" : "OR",
+ "types" : [ "administrative_area_level_1", "political" ]
+ },
+ {
+ "long_name" : "United States",
+ "short_name" : "US",
+ "types" : [ "country", "political" ]
+ }
+ ],
+ "formatted_address" : "Portland, OR 97201, USA",
+ "geometry" : {
+ "bounds" : {
+ "northeast" : {
+ "lat" : 45.519965,
+ "lng" : -122.665103
+ },
+ "southwest" : {
+ "lat" : 45.497957,
+ "lng" : -122.7193571
+ }
+ },
+ "location" : {
+ "lat" : 45.505603,
+ "lng" : -122.6882145
+ },
+ "location_type" : "APPROXIMATE",
+ "viewport" : {
+ "northeast" : {
+ "lat" : 45.519965,
+ "lng" : -122.665103
+ },
+ "southwest" : {
+ "lat" : 45.497957,
+ "lng" : -122.7193571
+ }
+ }
+ },
+ "place_id" : "ChIJi8MjqD8KlVQRsyr5ZtaBLMI",
+ "types" : [ "postal_code" ]
+ }
+ ],
+ "status" : "OK"
+ }
+ http_version:
+ recorded_at: Sun, 06 May 2018 19:46:14 GMT
+recorded_with: VCR 3.0.3
diff --git a/test/controllers/api/v1/airtable/mentorships_controller_test.rb b/test/controllers/api/v1/airtable/mentorships_controller_test.rb
new file mode 100644
index 00000000..9b38a5c4
--- /dev/null
+++ b/test/controllers/api/v1/airtable/mentorships_controller_test.rb
@@ -0,0 +1,87 @@
+require 'test_helper'
+
+class Api::V1::Airtable::MentorshipsControllerTest < ActionDispatch::IntegrationTest
+ setup do
+ user = create(:user, :verified)
+ @headers = authorization_headers(user)
+ end
+
+ test ':index renders mentorship data' do
+ VCR.use_cassette('airtable/mentorship/successful') do
+ get api_v1_airtable_mentorships_path, headers: @headers, as: :json
+
+ assert response.status == 200
+ assert response.parsed_body.keys.sort == ['mentors', 'services', 'skillsets']
+ end
+ end
+
+ test ':index when rate limit returns a 422 and error message' do
+ VCR.use_cassette('airtable/mentorship/exceeded_rate_limit') do
+ get api_v1_airtable_mentorships_path, headers: @headers, as: :json
+
+ assert response.status == 422
+ assert response.parsed_body['error'].present?
+ end
+ end
+
+ test ':create creates a new mentor request record in Airtable' do
+ VCR.use_cassette('airtable/mentorship/post_successful') do
+ params = {
+ slack_user: 'test_case_1',
+ services: 'rec3ZQMCQsKPKlE2C',
+ skillsets: 'Java',
+ additional_details: 'Some test description.',
+ mentor_requested: 'rec0SDZDK2DiW4PY9'
+ }
+
+ post(
+ api_v1_airtable_mentorships_url,
+ params: params,
+ headers: @headers,
+ as: :json
+ )
+
+ assert response.status == 201
+ assert response.parsed_body['id'].present?
+ assert response.parsed_body['createdTime'].present?
+ end
+ end
+
+ test ':create with multiple skillets creates a new mentor request record in Airtable' do
+ VCR.use_cassette('airtable/mentorship/post_multiple_successful') do
+ params = {
+ slack_user: 'test_case_1',
+ services: 'rec3ZQMCQsKPKlE2C',
+ skillsets: 'Java, Study Help, Web (Frontend Development)',
+ additional_details: 'Some test description.',
+ mentor_requested: 'rec0SDZDK2DiW4PY9'
+ }
+
+ post(
+ api_v1_airtable_mentorships_url,
+ params: params,
+ headers: @headers,
+ as: :json
+ )
+
+ assert response.status == 201
+ assert response.parsed_body['id'].present?
+ assert response.parsed_body['createdTime'].present?
+ end
+ end
+
+ test ':create when user is not verified it returns a 422 and error message' do
+ user = create(:user, verified: false)
+ headers = authorization_headers(user)
+
+ post(
+ api_v1_airtable_mentorships_url,
+ params: {},
+ headers: headers,
+ as: :json
+ )
+
+ assert response.status == 422
+ assert response.parsed_body['error'].present?
+ end
+end
diff --git a/test/factories/users.rb b/test/factories/users.rb
index c7371e2a..447a5078 100644
--- a/test/factories/users.rb
+++ b/test/factories/users.rb
@@ -22,6 +22,10 @@
trait :dynamic_zip do
zip { Faker::Address.postcode }
end
+
+ trait :verified do
+ verified true
+ end
end
end
diff --git a/test/jobs/add_user_to_airtables_job_test.rb b/test/jobs/add_user_to_airtables_job_test.rb
deleted file mode 100644
index 917bc3d2..00000000
--- a/test/jobs/add_user_to_airtables_job_test.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-require 'test_helper'
-
-class AddUserToAirtablesJobTest < ActiveJob::TestCase
- test 'it adds a user to airtables' do
- user = build(:user, email: 'static@email.com')
- Operationcode::Airtable.any_instance.expects(:create).with(
- email: user.email,
- zip: user.zip,
- latitude: user.latitude,
- longitude: user.longitude,
- created_at: user.created_at,
- updated_at: user.updated_at
- )
- AddUserToAirtablesJob.perform_now(user)
- end
-
- test 'it doesnt add a user if it exists' do
- user = build(:user, email: 'static@email.com')
- Operationcode::Airtable.any_instance.expects(:create).once.with(
- email: user.email,
- zip: user.zip,
- latitude: user.latitude,
- longitude: user.longitude,
- created_at: user.created_at,
- updated_at: user.updated_at
- )
- AddUserToAirtablesJob.perform_now(user)
-
- Operationcode::Airtable.any_instance.stubs(:find_by).returns(true)
- AddUserToAirtablesJob.perform_now(user)
- end
-end
diff --git a/test/models/user_test.rb b/test/models/user_test.rb
index d573770d..8813f123 100644
--- a/test/models/user_test.rb
+++ b/test/models/user_test.rb
@@ -5,7 +5,6 @@ class UserTest < ActiveSupport::TestCase
user = build(:user, user_opts)
SlackJobs::InviterJob.expects(:perform_later).with(user_opts[:email])
- AddUserToAirtablesJob.expects(:perform_later).with(user)
AddUserToSendGridJob.expects(:perform_later).with(user)
assert_difference('User.count') { user.save }
diff --git a/test/requests/airtable/client_test.rb b/test/requests/airtable/client_test.rb
new file mode 100644
index 00000000..e215e70f
--- /dev/null
+++ b/test/requests/airtable/client_test.rb
@@ -0,0 +1,36 @@
+require 'test_helper'
+
+class ClientTest < Minitest::Test
+ def test_get_records_for_gets_all_the_records_for_the_passed_table
+ VCR.use_cassette('airtable/client/get_records_successful') do
+ response = Airtable::Client.new.get_records_for('Services')
+
+ assert response['records'].present?
+ end
+ end
+
+ def test_post_record_creates_a_new_record_in_the_passed_table
+ request_body = {
+ 'fields' => {
+ 'Slack User' => 'test_case_1',
+ 'Service' => [
+ 'rec3ZQMCQsKPKlE2C'
+ ],
+ 'Skillsets' => [
+ 'Java'
+ ],
+ 'Additional Details' => 'Some test description.',
+ 'Mentor Requested' => [
+ 'rec0SDZDK2DiW4PY9'
+ ]
+ }
+ }.to_json
+
+ VCR.use_cassette('airtable/client/post_record_successful') do
+ response = Airtable::Client.new.post_record('Mentor Request', request_body)
+
+ assert response['id'].present?
+ assert response['createdTime'].present?
+ end
+ end
+end
diff --git a/test/requests/airtable/mentorship_test.rb b/test/requests/airtable/mentorship_test.rb
new file mode 100644
index 00000000..387eb247
--- /dev/null
+++ b/test/requests/airtable/mentorship_test.rb
@@ -0,0 +1,76 @@
+require 'test_helper'
+
+class MentorshipTest < Minitest::Test
+ def setup
+ VCR.use_cassette('airtable/mentorship/successful') do
+ @successful_response = Airtable::Mentorship.new.mentor_request_data
+ end
+ end
+
+ def test_mentor_request_data_returns_correct_keys
+ assert @successful_response.keys.sort == %i[mentors services skillsets]
+ end
+
+ def test_mentor_request_data_returns_correct_mentor_data
+ mentor = @successful_response[:mentors].first
+
+ assert mentor[:id].present?
+ assert mentor[:name].present?
+ end
+
+ def test_mentor_request_data_returns_correct_service_data
+ service = @successful_response[:services].first
+
+ assert service[:id].present?
+ assert service[:name].present?
+ end
+
+ def test_mentor_request_data_returns_correct_skillset_data
+ skillset = @successful_response[:skillsets].first
+
+ assert skillset[:id].present?
+ assert skillset[:name].present?
+ end
+
+ def test_429_raises_airtable_error
+ VCR.use_cassette('airtable/mentorship/exceeded_rate_limit') do
+ assert_raises Airtable::Error do
+ Airtable::Mentorship.new.mentor_request_data
+ end
+ end
+ end
+
+ def test_create_mentor_request_creates_the_passed_mentor_request
+ VCR.use_cassette('airtable/mentorship/post_successful') do
+ request_body = {
+ slack_user: 'test_case_1',
+ services: 'rec3ZQMCQsKPKlE2C',
+ skillsets: 'Java',
+ additional_details: 'Some test description.',
+ mentor_requested: 'rec0SDZDK2DiW4PY9'
+ }
+
+ response = Airtable::Mentorship.new.create_mentor_request(request_body)
+
+ assert response['id'].present?
+ assert response.dig('fields', 'Slack User') == request_body[:slack_user]
+ assert response.dig('fields', 'Service') == [request_body[:services]]
+ assert response.dig('fields', 'Skillsets') == [request_body[:skillsets]]
+ assert response.dig('fields', 'Additional Details') == request_body[:additional_details]
+ assert response.dig('fields', 'Mentor Requested') == [request_body[:mentor_requested]]
+ end
+ end
+
+ def test_format_for_posting_converts_comma_separated_string_into_array_of_strings
+ instance = Airtable::Mentorship.new
+
+ converted = instance.send(:format_for_posting, 'this , and long ')
+ assert converted == ['this', 'and long']
+
+ converted = instance.send(:format_for_posting, 'this,that')
+ assert converted == ['this', 'that']
+
+ converted = instance.send(:format_for_posting, 'this')
+ assert converted == ['this']
+ end
+end