diff --git a/Gemfile b/Gemfile index 65086cd..4009db5 100644 --- a/Gemfile +++ b/Gemfile @@ -1,10 +1,10 @@ source "http://rubygems.org" -gem "faraday", "~> 0.7" -gem "faraday_middleware", "~> 0.7" -gem "hashie", "~> 1.2" +gem "faraday", "~> 0.9.2" +gem "faraday_middleware", "~> 0.10" +gem "hashie", "~> 3.4" gem "multi_json", "~> 1.0" -gem "chronic", "~> 0.6" +gem "chronic", "~> 0.10" group :development, :test do gem "rspec", "~> 2.8" @@ -13,8 +13,9 @@ group :development, :test do gem "bundler", "~> 1.0" gem "jeweler", "~> 1.6.4" gem "simplecov", "~> 0.5" - gem "vcr", "~> 1.11.3" + gem "vcr", "~> 3.0" gem "webmock", "~> 1.7" + gem "rb-readline" gem "pry" end diff --git a/genability.gemspec b/genability.gemspec index 1f20d9d..f17a6b7 100644 --- a/genability.gemspec +++ b/genability.gemspec @@ -2,14 +2,16 @@ # DO NOT EDIT THIS FILE DIRECTLY # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec' # -*- encoding: utf-8 -*- +# stub: genability 0.3.0 ruby lib Gem::Specification.new do |s| s.name = "genability" s.version = "0.3.0" - s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version= + s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib"] s.authors = ["Matthew Solt"] - s.date = "2011-11-27" + s.date = "2016-02-26" s.description = "Ruby client for the Genability power pricing and related APIs - learn more at https://developer.genability.com" s.email = "mattsolt@gmail.com" s.extra_rdoc_files = [ @@ -33,6 +35,7 @@ Gem::Specification.new do |s| "lib/genability.rb", "lib/genability/api.rb", "lib/genability/client.rb", + "lib/genability/client/account.rb", "lib/genability/client/calculate.rb", "lib/genability/client/echo.rb", "lib/genability/client/helpers.rb", @@ -43,19 +46,26 @@ Gem::Specification.new do |s| "lib/genability/client/tariff.rb", "lib/genability/client/territory.rb", "lib/genability/client/time_of_use.rb", + "lib/genability/client/usage_profile.rb", "lib/genability/client/zip_code.rb", "lib/genability/configuration.rb", "lib/genability/connection.rb", "lib/genability/error.rb", "lib/genability/request.rb", "lib/mashie_extensions.rb", + "spec/cassettes/account.yml", + "spec/cassettes/account_add.yml", + "spec/cassettes/account_delete.yml", + "spec/cassettes/accounts.yml", "spec/cassettes/calculate.yml", "spec/cassettes/echo.yml", + "spec/cassettes/green_button.yml", "spec/cassettes/load_serving_entities.yml", "spec/cassettes/load_serving_entity.yml", "spec/cassettes/prices.yml", "spec/cassettes/properties.yml", "spec/cassettes/property.yml", + "spec/cassettes/readings_add.yml", "spec/cassettes/seasons.yml", "spec/cassettes/tariff.yml", "spec/cassettes/tariffs.yml", @@ -63,7 +73,11 @@ Gem::Specification.new do |s| "spec/cassettes/territory.yml", "spec/cassettes/time_of_use.yml", "spec/cassettes/time_of_uses.yml", + "spec/cassettes/usage_profile.yml", + "spec/cassettes/usage_profile_add.yml", + "spec/cassettes/usage_profiles.yml", "spec/cassettes/zipcode.yml", + "spec/client/account_spec.rb", "spec/client/calculate_spec.rb", "spec/client/echo_spec.rb", "spec/client/helpers_spec.rb", @@ -74,64 +88,69 @@ Gem::Specification.new do |s| "spec/client/tariff_spec.rb", "spec/client/territory_spec.rb", "spec/client/time_of_use_spec.rb", + "spec/client/usage_profile_spec.rb", "spec/client/zip_code_spec.rb", "spec/configuration.yml.sample", "spec/faraday/response_spec.rb", + "spec/fixtures/greenbutton.xml", + "spec/fixtures/sample.csv", "spec/genability_spec.rb", "spec/spec_helper.rb" ] s.homepage = "http://github.com/activefx/genability" s.licenses = ["MIT"] - s.require_paths = ["lib"] - s.rubygems_version = "1.8.11" + s.rubygems_version = "2.4.8" s.summary = "Ruby client for the Genability API" if s.respond_to? :specification_version then - s.specification_version = 3 + s.specification_version = 4 if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then - s.add_runtime_dependency(%q, ["~> 0.7.4"]) - s.add_runtime_dependency(%q, ["~> 0.7.0"]) - s.add_runtime_dependency(%q, ["~> 1.2.0"]) - s.add_runtime_dependency(%q, ["~> 1.0.3"]) - s.add_runtime_dependency(%q, ["~> 0.6.4"]) - s.add_development_dependency(%q, ["~> 2.7"]) - s.add_development_dependency(%q, ["~> 0.7.0"]) - s.add_development_dependency(%q, ["~> 1.0.7"]) + s.add_runtime_dependency(%q, ["~> 0.7"]) + s.add_runtime_dependency(%q, ["~> 0.7"]) + s.add_runtime_dependency(%q, ["~> 3.4"]) + s.add_runtime_dependency(%q, ["~> 1.0"]) + s.add_runtime_dependency(%q, ["~> 0.10"]) + s.add_development_dependency(%q, ["~> 2.8"]) + s.add_development_dependency(%q, ["~> 0.7"]) + s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, ["~> 1.0"]) s.add_development_dependency(%q, ["~> 1.6.4"]) - s.add_development_dependency(%q, ["~> 0.4"]) + s.add_development_dependency(%q, ["~> 0.5"]) s.add_development_dependency(%q, ["~> 1.11.3"]) - s.add_development_dependency(%q, ["~> 1.7.4"]) - s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, ["~> 1.7"]) + s.add_development_dependency(%q, [">= 0"]) else - s.add_dependency(%q, ["~> 0.7.4"]) - s.add_dependency(%q, ["~> 0.7.0"]) - s.add_dependency(%q, ["~> 1.2.0"]) - s.add_dependency(%q, ["~> 1.0.3"]) - s.add_dependency(%q, ["~> 0.6.4"]) - s.add_dependency(%q, ["~> 2.7"]) - s.add_dependency(%q, ["~> 0.7.0"]) - s.add_dependency(%q, ["~> 1.0.7"]) + s.add_dependency(%q, ["~> 0.7"]) + s.add_dependency(%q, ["~> 0.7"]) + s.add_dependency(%q, ["~> 3.4"]) + s.add_dependency(%q, ["~> 1.0"]) + s.add_dependency(%q, ["~> 0.10"]) + s.add_dependency(%q, ["~> 2.8"]) + s.add_dependency(%q, ["~> 0.7"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, ["~> 1.0"]) s.add_dependency(%q, ["~> 1.6.4"]) - s.add_dependency(%q, ["~> 0.4"]) + s.add_dependency(%q, ["~> 0.5"]) s.add_dependency(%q, ["~> 1.11.3"]) - s.add_dependency(%q, ["~> 1.7.4"]) - s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, ["~> 1.7"]) + s.add_dependency(%q, [">= 0"]) end else - s.add_dependency(%q, ["~> 0.7.4"]) - s.add_dependency(%q, ["~> 0.7.0"]) - s.add_dependency(%q, ["~> 1.2.0"]) - s.add_dependency(%q, ["~> 1.0.3"]) - s.add_dependency(%q, ["~> 0.6.4"]) - s.add_dependency(%q, ["~> 2.7"]) - s.add_dependency(%q, ["~> 0.7.0"]) - s.add_dependency(%q, ["~> 1.0.7"]) + s.add_dependency(%q, ["~> 0.7"]) + s.add_dependency(%q, ["~> 0.7"]) + s.add_dependency(%q, ["~> 3.4"]) + s.add_dependency(%q, ["~> 1.0"]) + s.add_dependency(%q, ["~> 0.10"]) + s.add_dependency(%q, ["~> 2.8"]) + s.add_dependency(%q, ["~> 0.7"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, ["~> 1.0"]) s.add_dependency(%q, ["~> 1.6.4"]) - s.add_dependency(%q, ["~> 0.4"]) + s.add_dependency(%q, ["~> 0.5"]) s.add_dependency(%q, ["~> 1.11.3"]) - s.add_dependency(%q, ["~> 1.7.4"]) - s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, ["~> 1.7"]) + s.add_dependency(%q, [">= 0"]) end end diff --git a/lib/faraday/response/raise_http_4xx.rb b/lib/faraday/response/raise_http_4xx.rb index 749a105..053b69c 100644 --- a/lib/faraday/response/raise_http_4xx.rb +++ b/lib/faraday/response/raise_http_4xx.rb @@ -1,4 +1,5 @@ require 'faraday' +require 'hashie' # @private module Faraday @@ -9,6 +10,8 @@ def on_complete(env) case env[:status].to_i when 400 raise Genability::BadRequest, error_message(env) + when 401 + raise Genability::Unauthorized, error_message(env) when 403 raise Genability::Forbidden, error_message(env) when 404 @@ -26,12 +29,14 @@ def error_body(body) if body.nil? nil else - "ERRORS:#{body.count}#{error_details(body)}" + body = JSON.parse(body) if body.is_a?(String) + "ERRORS:#{body["results"].count}#{error_details(body)}" end end def error_details(body) msg = "" + body = Hashie::Mash.new(body) if !body.is_a?(Hashie::Mash) body.results.each_with_index do |result, i| msg << " #{i+1}[code:#{result.code} object_name:#{result.objectName} property_name:#{result.propertyName} message:#{result.message}]" end diff --git a/lib/genability/client.rb b/lib/genability/client.rb index 2bb53b1..2c43ef8 100644 --- a/lib/genability/client.rb +++ b/lib/genability/client.rb @@ -3,11 +3,15 @@ module Genability class Client < API require 'genability/client/helpers' require 'genability/client/account' + require 'genability/client/account_calculation' + require 'genability/client/account_tariff' require 'genability/client/calculate' require 'genability/client/echo' + require 'genability/client/incentive' require 'genability/client/load_serving_entity' require 'genability/client/price' require 'genability/client/property' + require 'genability/client/savings_analysis' require 'genability/client/season' require 'genability/client/tariff' require 'genability/client/territory' @@ -18,12 +22,16 @@ class Client < API include Genability::Client::Helpers include Genability::Client::Account + include Genability::Client::AccountCalculation + include Genability::Client::AccountTariff include Genability::Client::Calculate include Genability::Client::Echo + include Genability::Client::Incentive include Genability::Client::LoadServingEntity include Genability::Client::Price include Genability::Client::Property include Genability::Client::Season + include Genability::Client::SavingsAnalysis include Genability::Client::Tariff include Genability::Client::Territory include Genability::Client::TimeOfUse diff --git a/lib/genability/client/account.rb b/lib/genability/client/account.rb index d7cf446..75697ce 100644 --- a/lib/genability/client/account.rb +++ b/lib/genability/client/account.rb @@ -4,32 +4,48 @@ class Client module Account def add_account(options = {}) - post("beta/accounts?appId=#{application_id}&appKey=#{application_key}", account_params(options)).results.first + post("v1/accounts", add_account_params(options)).results.first + end + + def upsert_account(options = {}) + put("v1/accounts", add_account_params(options)).results.first end def delete_account(account_id) - delete("beta/accounts/#{account_id}") + delete("v1/accounts/#{account_id}") + end + + def account(account_id, options = {}) + get("v1/accounts/#{account_id}", account_params(options)).results.first end - def account(account_id) - get("beta/accounts/#{account_id}").results.first + def provider_account(provider_account_id, options = {}) + get("v1/accounts/pid/#{provider_account_id}", account_params(options)).results.first end def accounts(options = {}) - get("beta/accounts", accounts_params(options)).results + get("v1/accounts", accounts_params(options)).results end private - def account_params(options) + def add_account_params(options) { + "providerAccountId" => options[:provider_account_id], "accountName" => options[:account_name], "customerOrgId" => options[:customer_org_id], - "providerAccountId" => options[:provider_account_id], - "customerOrgName" => options[:customer_org_name] + "customerOrgName" => options[:customer_org_name], + "address" => address_params(options[:address]), + "properties" => properties_params(options[:properties]) + }. + delete_if{ |k,v| v.nil? } + end + + def account_params(options) + { + "fields" => options[:fields] }. - delete_if{ |k,v| v.nil? }. - to_json + delete_if{ |k,v| v.nil? } end def accounts_params(options) @@ -37,6 +53,23 @@ def accounts_params(options) merge( search_params(options) ) end + def address_params(options) + return nil if options.nil? + { + "addressString" => options[:address_string], + "addressName" => options[:address_name], + "address1" => options[:address1], + "address2" => options[:address2], + "city" => options[:city], + "state" => options[:state], + "zip" => options[:zip], + "country" => options[:country], + "lon" => options[:lon], + "lat" => options[:lat] + }. + delete_if{ |k,v| v.nil? } + end + end end end diff --git a/lib/genability/client/account_calculation.rb b/lib/genability/client/account_calculation.rb new file mode 100644 index 0000000..7a44316 --- /dev/null +++ b/lib/genability/client/account_calculation.rb @@ -0,0 +1,42 @@ +module Genability + class Client + module AccountCalculation + def account_calculation(account_id, options = {}) + post("v1/accounts/#{account_id}/calculate", calculation_params(options)).results.first + end + + def provider_account_calculation(provider_account_id, options = {}) + post("v1/accounts/pid/#{provider_account_id}/calculate", calculation_params(options)).results.first + end + + private + + def calculation_params(options) + { + "fromDateTime" => format_to_iso8601(options[:from] || options[:from_date_time]), + "toDateTime" => format_to_iso8601(options[:to] || options[:to_date_time]), + "tariffEffectiveOn" => format_to_ymd(options[:tariff_effective_on]), + "detailLevel" => convert_to_upcase(options[:detail_level]), + "groupBy" => convert_to_upcase(options[:group_by]), + "tiers" => convert_to_upcase(options[:tiers]), + "includeDefaultProfile" => convert_to_boolean(options[:include_default_profile]), + "profileId" => options[:profile_id], + "dataFactor" => options[:data_factor], + "billingPeriod" => convert_to_boolean(options[:billing_period]), + "minimums" => convert_to_boolean(options[:minimums]), + "applyUtilityTax" => convert_to_boolean(options[:apply_utility_tax]), + "calcNetExcessGeneration" => convert_to_boolean(options[:calc_net_excess_generation]), + "excludeChargeClass" => multi_option_handler(options[:exclude_charge_class]), + "autoBaseline" => convert_to_boolean(options[:auto_baseline]), + "useIntelligentBaselining" => convert_to_boolean(options[:use_intelligent_baselining]), + "masterTariffId" => options[:master_tariff_id], + "fields" => options[:fields], + "propertyInputs" => tariff_inputs_params(options[:property_inputs]), + "rateInputs" => rate_inputs_params(options[:rate_inputs]) + }. + delete_if{ |k,v| v.nil? } + end + end + end +end + diff --git a/lib/genability/client/account_tariff.rb b/lib/genability/client/account_tariff.rb new file mode 100644 index 0000000..965d246 --- /dev/null +++ b/lib/genability/client/account_tariff.rb @@ -0,0 +1,51 @@ +module Genability + class Client + + module AccountTariff + + def add_account_tariff(account_id, options = {}) + post("v1/accounts/#{account_id}/tariffs", add_account_tariff_params(options)).results.first + end + + def upsert_account_tariff(account_id, options = {}) + put("v1/accounts/#{account_id}/tariffs", add_account_tariff_params(options)).results.first + end + + def delete_account_tariff(account_id, options = {}) + delete("v1/accounts/#{account_id}/tariffs", delete_account_tariff_params(options)) + end + + def add_provider_account_tariff(provider_account_id, options = {}) + post("v1/accounts/pid/#{provider_account_id}/tariffs", add_account_tariff_params(options)).results.first + end + + def upsert_provider_account_tariff(provider_account_id, options = {}) + put("v1/accounts/pid/#{provider_account_id}/tariffs", add_account_tariff_params(options)).results.first + end + + def delete_provider_account_tariff(provider_account_id, options = {}) + delete("v1/accounts/pid/#{provider_account_id}/tariffs", delete_account_tariff_params(options)) + end + + private + + def add_account_tariff_params(options) + { + "masterTariffId" => options[:master_tariff_id], + "serviceType" => convert_to_upcase(options[:service_type]), + "effectiveDate" => format_to_ymd(options[:effective_date]), + "endDate" => format_to_ymd(options[:end_date]) + }. + delete_if{ |k,v| v.nil? } + end + + def delete_account_tariff_params(options) + { + "effectiveDate" => format_to_ymd(options[:effective_date]) + }. + delete_if{ |k,v| v.nil? } + end + end + end +end + diff --git a/lib/genability/client/calculate.rb b/lib/genability/client/calculate.rb index 24067f5..37074ce 100644 --- a/lib/genability/client/calculate.rb +++ b/lib/genability/client/calculate.rb @@ -1,124 +1,45 @@ module Genability class Client - # The Calculate service basically calculates the cost of electricity for a - # given rate/pricing plan. This can be used to calculate a bill, "what-if" - # different rates, levels of usage, energy efficiency measures or any other - # electrical activity. It gives a total cost for a period of time. (Note - # that if you want a price/rate for a specific point in time, then look at - # the Price service.) module Calculate - - # @overload calculate_metadata(tariff_id, from_date_time, to_date_time, options = {}) - # Calling the URL as a HTTP GET will return the "inputs" required to accurately - # calculate the cost for a given period. It essentially gives you the meta-data - # for what to pass into the calculate method, and as such provides a template - # for the payload of the HTTP POST. - # @param tariff_id [Integer] Unique Genability ID (primary key) for a tariff. - # @param from_date_time [DateTime, String] Starting date and time for this Calculate request. - # In ISO 8601 format. Will attempt to use the Chronic gem to parse if a string is used. - # @param to_date_time [DateTime, String] End date and time for this Calculate request. - # In ISO 8601 format. Will attempt to use the Chronic gem to parse if a string is used. - # @param options [Hash] A customizable set of options. - # @option options [Integer] :territory_id The territory ID of where the usage consumption - # occurred. (Required for most CA tariffs.) - # @option options [Hash] :additional_values Any additional applicability values that - # are required to calculate this tariff are passed in on the request url. Keep in - # mind that this is only for the GET method where you are getting the required inputs. - # When you POST to run the calculation, you will pass these applicability values as - # part of the Tariff Input array. To find out how to get the list of applicability - # properties required for a tariff, - # {https://developer.genability.com/documentation/api-reference/public/tariff#getTariff read more here}. - # @return [Array] Array of TariffInput for consumption. - # @example Return the inputs required to accurately calculate the cost for a given period - # Genability.calculate_metadata(512, "2011-06-16T19:00:00.0-0400", "2011-08-01T00:00:00.0-0400", - # { :additional_values => { "connectionType" => "Primary Connection", "cityLimits" => "Inside" }) - # @format :json - # @authenticated true - # @rate_limited true - # @see https://developer.genability.com/documentation/api-reference/pricing/calculate - def calculate_metadata(tariff_id, from, to, options = {}) - get("beta/calculate/#{tariff_id}", calculate_meta_params(from, to, options)).results + def calculate_metadata(tariff_id, options = {}) + get("v1/calculate/#{tariff_id}", calculate_meta_params(options)).results end - # Calculate the cost of electricity for a given rate/pricing plan. - # @overload calculate(tariff_id, from_date_time, to_date_time, tariff_inputs, options = {}) - # To run a new calculation, you will POST a payload containing the calculation criteria and - # inputs, and a Calculated Cost will be returned. The table below documents the various - # properties of the payload, and immediately after the table is an example of the payload itself. - # @param tariff_id [Integer] Unique Genability ID (primary key) for a tariff. - # @param from_date_time [DateTime, String] Starting date and time for this Calculate request. - # In ISO 8601 format. Will attempt to use the Chronic gem to parse if a string is used. - # @param to_date_time [DateTime, String] End date and time for this Calculate request. - # In ISO 8601 format. Will attempt to use the Chronic gem to parse if a string is used. - # @param options [Hash] A customizable set of options. - # @option options [Integer] :territory_id The territory ID of where the usage consumption - # occurred. (Required for most CA tariffs.) - # @option options [String] :detail_level Toggles the level of details for the calculation - # result. (Optional) Possible values are: - # ALL - return all details for this calculation (default) - # TOTAL - return only the overall total, without any details - # CHARGE_TYPE - group the details by charge types, such as FIXED, CONSUMPTION, QUANTITY - # RATE - group the details by rates. This is most similar to how a utility bill is constructed. - # @option options [Array] :tariff_inputs The array of TariffInput values to use when running - # the calculation. - # @format :json - # @authenticated true - # @rate_limited true - # @see https://developer.genability.com/documentation/api-reference/pricing/calculate - def calculate(tariff_id, from, to, tariff_inputs, options = {}) - post( "beta/calculate/#{tariff_id}?appId=#{application_id}&appKey=#{application_key}", - calculate_params(from, to, tariff_inputs, options) - ).results.first + def calculate(tariff_id, options = {}) + post("v1/calculate/#{tariff_id}", calculate_params(options)).results.first end private - def calculate_params(from, to, tariff_inputs, options) - { - "fromDateTime" => format_to_iso8601(from), - "toDateTime" => format_to_iso8601(to), - "territoryId" => options[:territory_id], - "detailLevel" => options[:detail_level], - "tariffInputs" => tariff_input_params(tariff_inputs) - }. - delete_if{ |k,v| v.nil? }. - to_json - end - - def tariff_input_params(tariff_inputs) - [].tap do |a| - case tariff_inputs - when Hash - a << convert_tariff_input_params(tariff_inputs) - when Array - tariff_inputs.each do |ti| - a << convert_tariff_input_params(ti) - end - else - raise Genability::InvalidInput - end - end + def calculate_meta_params(options) + params = { + "fromDateTime" => format_to_iso8601(options[:from] || options[:from_date_time]), + "toDateTime" => format_to_iso8601(options[:to] || options[:to_date_time]), + "billingPeriod" => convert_to_boolean(options[:billing_period]) + }.delete_if{ |k,v| v.nil? } + params.merge( + options.select{ |k,v| params[ruby_to_camel_case(k)].nil? }. + map{ |k,v| [ruby_to_camel_case(k), v] }. + to_h + ) end - def convert_tariff_input_params(tariff_input) - return tariff_input.to_hash if tariff_input.is_a? Hashie::Mash - raise Genability::InvalidInput unless tariff_input.is_a?(Hash) - tariff_input - end - - def calculate_meta_params(from, to, options) + def calculate_params(options) { - "fromDateTime" => format_to_iso8601(from), - "toDateTime" => format_to_iso8601(to), - "territoryId" => options[:territory_id] - }.delete_if{ |k,v| v.nil? }. - merge( additional_values(options[:additional_values]) ) - end - - def additional_values(av) - av.is_a?(Hash) ? av : {} + "accountId" => options[:account_id], + "providerAccountId" => options[:provider_account_id], + "fromDateTime" => format_to_iso8601(options[:from] || options[:from_date_time]), + "toDateTime" => format_to_iso8601(options[:to] || options[:to_date_time]), + "billingPeriod" => convert_to_boolean(options[:billing_period]), + "detailLevel" => convert_to_upcase(options[:detail_level]), + "tiers" => convert_to_upcase(options[:tiers]), + "groupBy" => convert_to_upcase(options[:group_by]), + "fields" => options[:fields], + "tariffInputs" => tariff_inputs_params(options[:tariff_inputs]), + "rateInputs" => rate_inputs_params(options[:rate_inputs]) + }. + delete_if{ |k,v| v.nil? } end - end end end diff --git a/lib/genability/client/helpers.rb b/lib/genability/client/helpers.rb index 392080d..12f2e0b 100644 --- a/lib/genability/client/helpers.rb +++ b/lib/genability/client/helpers.rb @@ -61,7 +61,102 @@ def search_params(options = {}) }.delete_if{ |k,v| v.nil? } end + def properties_params(options = nil) + return nil if options.nil? + options.map do |key_name, data| + [ + ruby_to_camel_case(key_name), + { + 'keyName' => ruby_to_camel_case(key_name), + 'dataValue' => data.is_a?(Hash) ? data[:data_value] : data + } + ] + end.to_h.delete_if{ |k,v| v['dataValue'].nil? } + end + + def tariff_inputs_params(tariff_inputs) + return nil if tariff_inputs.nil? + case tariff_inputs + when Hash + [convert_tariff_input(tariff_inputs)] + when Array + tariff_inputs.map{|t| convert_tariff_input(t)} + else + raise Genability::InvalidInput + end + end + + def convert_tariff_input(options) + { + "scenarios" => options[:scenarios], + "fromDateTime" => format_to_iso8601(options[:from] || options[:from_date_time]), + "toDateTime" => format_to_iso8601(options[:to] || options[:to_date_time]), + "keyName" => ruby_to_camel_case(options[:key_name]), + "dataValue" => options[:data_value], + "dataType" => convert_to_upcase(options[:data_type]), + "dataFactor" => options[:data_factor], + "unit" => options[:unit], + "operator" => options[:operator] + }. + delete_if{ |k,v| v.nil? } + end + + def rate_inputs_params(rate_inputs) + return nil if rate_inputs.nil? + case rate_inputs + when Hash + [convert_rate_input(rate_inputs)] + when Array + rate_inputs.map{|p| convert_rate_input(p)} + else + raise Genability::InvalidInput + end + end + + def convert_rate_input(options) + { + "scenarios" => options[:scenarios], + "fromDateTime" => format_to_iso8601(options[:from] || options[:from_date_time]), + "toDateTime" => format_to_iso8601(options[:to] || options[:to_date_time]), + "chargeType" => convert_to_upcase(options[:charge_type]), + "chargeClass" => convert_to_upcase(options[:charge_class]), + "tariffBookRateName" => options[:tariff_book_rate_name], + "rateName" => options[:rate_name], + "rateGroupName" => options[:rate_group_name], + "rateBands" => rate_bands_params(options[:rate_bands]) + }. + delete_if{ |k,v| v.nil? } + end + + def rate_bands_params(rate_bands) + return nil if rate_bands.nil? + case rate_bands + when Hash + [convert_rate_band(rate_bands)] + when Array + rate_bands.map{|r| convert_rate_band(r)} + else + raise Genability::InvalidInput + end + end + + def convert_rate_band(options) + { + "rateAmount" => options[:rate_amount], + "rateUnit" => convert_to_upcase(options[:rate_unit]), + "hasConsumptionLimit" => convert_to_boolean(options[:has_consumption_limit]), + "isCredit" => convert_to_boolean(options[:is_credit]) + }. + delete_if{ |k,v| v.nil? } + end + + def convert_to_upcase(value = nil) + return nil if value.nil? || value.to_s.nil? + value.to_s.upcase + end + def convert_to_boolean(value = nil) + return value if !value.is_a?(String) return nil if value.nil? || value.empty? value == "false" ? nil : "true" end @@ -69,9 +164,9 @@ def convert_to_boolean(value = nil) def multi_option_handler(value = nil) return nil if value.nil? if value.is_a?(Array) - value.collect{|x| x.upcase}.join(',') + value.collect{|x| x.to_s.upcase}.join(',') else - value.upcase + value.to_s.upcase end end @@ -97,6 +192,27 @@ def genability_iso8601_converter(date_time = nil) nil end + def format_to_ymd(date_time = nil) + if date_time.respond_to?(:strftime) + date_time.strftime("%Y-%m-%d") + else + parse_and_format_to_ymd(date_time) + end + end + + def parse_and_format_to_ymd(date_time = nil) + parsed_date = Chronic.parse(date_time.to_s) + parsed_date = parsed_date.nil? ? Time.parse(date_time.to_s) : parsed_date + parsed_date.strftime("%Y-%m-%d") + rescue + nil + end + + def ruby_to_camel_case(str) + return nil if str.nil? + str.to_s.gsub(/(?:^|_)(.)/){ $1.upcase }.gsub(/^[A-Z]/){ $&.downcase } + end + end end end diff --git a/lib/genability/client/incentive.rb b/lib/genability/client/incentive.rb new file mode 100644 index 0000000..3580dff --- /dev/null +++ b/lib/genability/client/incentive.rb @@ -0,0 +1,59 @@ +module Genability + class Client + module Incentive + + # Returns a list of incentives. + def incentives(options = {}) + get("beta/incentives", incentives_params(options)).results + end + + # Returns one incentive. + def incentive(incentive_id, options = {}) + get("beta/incentives/#{incentive_id}", incentive_params(options)).results.first + end + + # Returns a list of incentives. + def applicabilities(options = {}) + get("beta/incentives/applicabilities", incentives_params(options)).results + end + + + private + + def incentives_params(options) + params = { + 'projectType' => ruby_to_camel_case(options[:project_type]), + 'incentiveType' => ruby_to_camel_case(options[:incentive_type]), + 'defaultIncentives' => convert_to_boolean(options[:default_incentives]), + 'customerClasses' => multi_option_handler(options[:customer_classes]), + 'countryCode' => options[:country_code], + 'lseId' => options[:lse_id], + 'state' => options[:state], + 'zipCode' => options[:zip_code], + 'addressString' => options[:address_string], + 'effectiveOn' => format_to_iso8601(options[:effective_on]), + 'fromDate' => format_to_iso8601(options[:from] || options[:from_date]), + 'toDate' => format_to_iso8601(options[:to] || options[:to_date]), + 'isExhausted' => convert_to_boolean(options[:is_exhausted]) + }.delete_if{ |k,v| v.nil? }. + merge( incentive_params(options) ). + merge( search_params(options) ). + merge( pagination_params(options) ) + params.merge( + options.select{ |k,v| params[ruby_to_camel_case(k)].nil? }. + map{ |k,v| [ruby_to_camel_case(k), v] }. + to_h + ) + end + + def incentive_params(options) + { + 'populateDetails' => convert_to_boolean(options[:populate_details]), + 'populateDocuments' => convert_to_boolean(options[:populate_documents]) + }.delete_if{ |k,v| v.nil? } + end + + end + end +end + diff --git a/lib/genability/client/savings_analysis.rb b/lib/genability/client/savings_analysis.rb new file mode 100644 index 0000000..7b7bc57 --- /dev/null +++ b/lib/genability/client/savings_analysis.rb @@ -0,0 +1,29 @@ +module Genability + class Client + module SavingsAnalysis + def analysis(options = {}) + post("v1/accounts/analysis", analysis_params(options)).results.first + end + + private + + def analysis_params(options) + { + "accountId" => options[:account_id], + "providerAccountId" => options[:provider_account_id], + "fromDateTime" => format_to_ymd(options[:from] || options[:from_date_time]), + "toDateTime" => format_to_ymd(options[:to] || options[:to_date_time]), + "tariffEffectiveOn" => format_to_ymd(options[:tariff_effective_on]), + "autoBaseline" => convert_to_boolean(options[:auto_baseline]), + "useIntelligentBaselining" => convert_to_boolean(options[:use_intelligent_baselining]), + "populateCosts" => options[:populate_costs], + "fields" => options[:fields], + "propertyInputs" => tariff_inputs_params(options[:property_inputs]), + "rateInputs" => rate_inputs_params(options[:rate_inputs]) + }. + delete_if{ |k,v| v.nil? } + end + end + end +end + diff --git a/lib/genability/client/tariff.rb b/lib/genability/client/tariff.rb index 813ca18..dfdd924 100644 --- a/lib/genability/client/tariff.rb +++ b/lib/genability/client/tariff.rb @@ -3,18 +3,9 @@ class Client # Tariffs are rate plans for electricity. They describe who the plan applies # to (service and applicability), what the charges are, and other information # about this electricity service: - # - # 1. We have residential tariffs currently. General tariffs (commercial & - # industrial and speciality tariffs) are coming soon. - # 2. You can specify whether you want the tariff fully populated, or whether - # you just want a sub section of the data (to avoid charges and to speed - # up your queries). module Tariff # Returns a list of tariffs. # - # @format :json - # @authenticated true - # @rate_limited true # @param options [Hash] A customizable set of options. # @option options [Integer] :lse_id Filter tariffs for a specific Load Serving # Entity. (Optional) @@ -83,9 +74,6 @@ def tariffs(options = {}) # Returns one tariff. # - # @format :json - # @authenticated true - # @rate_limited true # @param tariff_id [Integer] Unique Genability ID (primary key) for a tariff. # @param options [Hash] A customizable set of options. # @option options [Boolean] :populate_rates Populates the rate details for the @@ -105,13 +93,20 @@ def tariff(tariff_id, options = {}) def tariffs_params(options) { 'lseId' => options[:lse_id], - 'effectiveOn' => format_to_iso8601(options[:effective_on]), + 'openOn' => format_to_iso8601(options[:open_on]), 'fromDateTime' => format_to_iso8601(options[:from] || options[:from_date_time]), 'toDateTime' => format_to_iso8601(options[:to] || options[:to_date_time]), 'customerClasses' => multi_option_handler(options[:customer_classes]), 'tariffTypes' => multi_option_handler(options[:tariff_types]), + 'serviceTypes' => multi_option_handler(options[:service_types]), + 'privacyFlags' => multi_option_handler(options[:privacy_flags]), + 'addressString' => options[:address_string], 'zipCode' => options[:zip_code], - 'accountId' => options[:account_id] + 'country' => options[:country], + 'accountId' => options[:account_id], + 'consumption' => options[:consumption], + 'demand' => options[:demand], + 'hasNetMetering' => convert_to_boolean(options[:has_net_metering]) }.delete_if{ |k,v| v.nil? }. merge( tariff_params(options) ). merge( search_params(options) ). @@ -121,7 +116,14 @@ def tariffs_params(options) def tariff_params(options) { 'populateRates' => convert_to_boolean(options[:populate_rates]), - 'populateProperties' => convert_to_boolean(options[:populate_properties]) + 'populateProperties' => convert_to_boolean(options[:populate_properties]), + 'populateDocuments' => convert_to_boolean(options[:populate_documents]), + 'effectiveOn' => format_to_iso8601(options[:effective_on]), + 'territoryId' => options[:territory_id], + 'bundleRates' => convert_to_boolean(options[:bundle_rates]), + 'applicableRateOnly' => convert_to_boolean(options[:applicable_rate_only]), + 'lookupVariableRates' => convert_to_boolean(options[:lookup_variable_rates]), + 'fields' => options[:fields] }.delete_if{ |k,v| v.nil? } end diff --git a/lib/genability/client/territory.rb b/lib/genability/client/territory.rb index 34e8c3c..58013d3 100644 --- a/lib/genability/client/territory.rb +++ b/lib/genability/client/territory.rb @@ -93,7 +93,7 @@ def territory(territory_id, options = {}) # @example Return a list of territories for Pacific Gas & Electric Co # Genability.territories(:lse_id => 734) # @example Get a Territory ID from a Zipcode - # Genability.territories(:lse_id => 734, :contains_item_type => 'ZIPCODE', :contains_item_value => 94115) + # Genability.territories(:lse_id => 734, :zip_code => 94115) def territories(options = {}) get("public/territories", territories_params(options)).results end @@ -102,17 +102,20 @@ def territories(options = {}) def territory_params(options) { - 'populateItems' => convert_to_boolean(options[:populate_items]) + 'populateItems' => convert_to_boolean(options[:populate_items]), + 'populateLses' => options[:populate_lses] }.delete_if{ |k,v| v.nil? } end def territories_params(options) { 'lseId' => options[:lse_id], + 'zipCode' => options[:zip_code] || options[:post_code], + 'addressString' => options[:address_string] || options[:address], + 'lat' => options[:lat], + 'lng' => options[:lng], 'masterTariffId' => options[:master_tariff_id], - 'containsItemType' => options[:contains_item_type], - 'containsItemValue' => options[:contains_item_value], - 'usageType' => options[:usage_type] + 'usageTypes' => options[:usage_type] }.delete_if{ |k,v| v.nil? }. merge( territory_params(options) ). merge( search_params(options) ). diff --git a/lib/genability/client/usage_profile.rb b/lib/genability/client/usage_profile.rb index ae58b86..6b97d95 100644 --- a/lib/genability/client/usage_profile.rb +++ b/lib/genability/client/usage_profile.rb @@ -3,103 +3,181 @@ class Client module UsageProfile - def add_usage_profile(options = {}) - post( "beta/usage/profiles?appId=#{application_id}&appKey=#{application_key}", - add_usage_profile_params(options) - ).results.first + def add_profile(options = {}) + post("v1/profiles", add_profile_params(options)).results.first end - def usage_profiles(options = {}) - get("beta/usage/profiles", usage_profiles_params(options)).results + def upsert_profile(options = {}) + put("v1/profiles", add_profile_params(options)).results.first end - def usage_profile(usage_profile_id, options = {}) - get("beta/usage/profiles/#{usage_profile_id}", usage_profile_params(options)).results.first + def delete_profile(profile_id) + delete("v1/profiles/#{profile_id}") end - def add_readings(usage_profile_id, options = {}) - post( "beta/usage/profiles/#{usage_profile_id}/readings?appId=#{application_id}&appKey=#{application_key}", - readings_params(options[:readings]) - ) + def delete_provider_profile(provider_profile_id) + delete("v1/profiles/pid/#{provider_profile_id}") end - def bulk_upload(file, options = {}) - profile_name = options[:profile_name] || "CsvUpload" + def profiles(options = {}) + get("v1/profiles", profiles_params(options)).results + end - url = "beta/usage/bulk" - url += "/#{options[:usage_profile_id]}" - url += "?appId=#{application_id}&appKey=#{application_key}" - url += "&profileName=#{profile_name}" + def profile(profile_id, options = {}) + get("v1/profiles/#{profile_id}", profile_params(options)).results.first + end - payload = { - "fileData" => Faraday::UploadIO.new(file, 'text/csv') - } + def provider_profile(provider_profile_id, options = {}) + get("v1/profiles/pid/#{provider_profile_id}", profile_params(options)).results.first + end + + def add_profile_readings(profile_id, options = {}) + post("v1/profiles/#{profile_id}/readings", add_readings_params(options)) + end - post( url, payload) + def update_profile_readings(profile_id, options = {}) + put("v1/profiles/#{profile_id}/readings", add_readings_params(options)) end - def green_button(file, options = {}) - profile_name = options[:profile_name] || "GreenButton" + def add_provider_profile_readings(provider_profile_id, options = {}) + post("v1/profiles/pid/#{provider_profile_id}/readings", add_readings_params(options)) + end - url = "beta/usage/bulk" - url += "/#{options[:usage_profile_id]}" - url += "?appId=#{application_id}&appKey=#{application_key}" - url += "&profileName=#{profile_name}&fileFormat=espi" + def update_provider_profile_readings(provider_profile_id, options = {}) + put("v1/profiles/pid/#{provider_profile_id}/readings", add_readings_params(options)) + end - payload = { - "fileData" => Faraday::UploadIO.new(file, 'application/xml') - } + def upload_csv(file, options = {}) + post("v1/loader/account/up.json", upload_params(file, "text/csv", "csv", options)).results.first + end - post( url, payload) + def upload_green_button(file, options = {}) + post("v1/loader/account/up.json", upload_params(file, "application/xml", "espi", options)).results.first end + alias :add_usage_profile :add_profile + alias :usage_profiles :profiles + alias :usage_profile :profile + alias :add_readings :add_profile_readings + alias :green_button :upload_green_button + private - def add_usage_profile_params(options) - usage_profiles_params(options).to_json + def add_profile_params(options) + { + "accountId" => options[:account_id], + "providerAccountId" => options[:provider_account_id], + "providerProfileId" => options[:provider_profile_id], + "profileName" => options[:profile_name], + "description" => options[:description], + "serviceTypes" => multi_option_handler(options[:service_types]), + "isDefault" => convert_to_boolean(options[:is_default]), + "sourceId" => ruby_to_camel_case(options[:source_id]), + "source" => source_params(options[:source]), + "properties" => properties_params(options[:properties]), + "readingData" => readings_params(options[:reading_data]), + "baselineMeasures" => baseline_measures_params(options[:baseline_measures]), + "groupBy" => convert_to_upcase(options[:group_by]) + }. + delete_if{ |k,v| v.nil? } end - def usage_profiles_params(options) + def profiles_params(options) { - "accountId" => options[:account_id] + "accountId" => options[:account_id], + "profileName" => options[:profile_name], + "serviceTypes" => multi_option_handler(options[:service_types]), + "isDefault" => convert_to_boolean(options[:is_default]), + "groupBy" => convert_to_upcase(options[:group_by]), + "populateIntervals" => convert_to_boolean(options[:populate_intervals]) }. - delete_if{ |k,v| v.nil? } + delete_if{ |k,v| v.nil? }. + merge(pagination_params(options)). + merge(search_params(options)) end - def usage_profile_params(options) + def profile_params(options) { "fromDateTime" => format_to_iso8601(options[:from] || options[:from_date_time]), "toDateTime" => format_to_iso8601(options[:to] || options[:to_date_time]), - "populateUsageData" => convert_to_boolean(options[:populate_usage_data]), - "groupBy" => options[:group_by], - "clipBy" => options[:clip_by] - }.delete_if{ |k,v| v.nil? } + "populateReadings" => convert_to_boolean(options[:populate_readings]), + "populateIntervals" => convert_to_boolean(options[:populate_intervals]), + "populateBaseline" => convert_to_boolean(options[:populate_baseline]), + "groupBy" => convert_to_upcase(options[:group_by]), + "clipBy" => options[:clip_by], + "fields" => options[:fields] + }. + delete_if{ |k,v| v.nil? } end - def readings_params(readings) + def add_readings_params(options) + return nil if options.nil? + { + "usageProfileId" => options[:usage_profile_id], + "providerProfileId" => options[:provider_profile_id], + "readings" => readings_params(options[:readings]), + }. + delete_if{ |k,v| v.nil? } + end + + def source_params(options) + return nil if options.nil? { - "readings" => [].tap do |a| - case readings - when Hash - a << convert_readings(readings) - when Array - readings.each do |r| - a << convert_readings(r) - end - else - raise Genability::InvalidInput - end - end - }.to_json - end - - def convert_readings(options) + "sourceId" => options[:source_id], + "sourceVersion" => options[:source_version] + }. + delete_if{ |k,v| v.nil? } + end + + def readings_params(readings) + return nil if readings.nil? + case readings + when Hash + [convert_reading(readings)] + when Array + readings.map{|r| convert_reading(r)} + else + raise Genability::InvalidInput + end + end + + def convert_reading(options) { "fromDateTime" => format_to_iso8601(options[:from] || options[:from_date_time]), "toDateTime" => format_to_iso8601(options[:to] || options[:to_date_time]), "quantityUnit" => options[:quantity_unit], - "quantityValue" => options[:quantity_value] - }.delete_if{ |k,v| v.nil? } + "quantityValue" => options[:quantity_value], + "touType" => convert_to_upcase(options[:tou_type]) + }. + delete_if{ |k,v| v.nil? } + end + + def upload_params(file, format, content_type, options = {}) + { + "fileData" => Faraday::UploadIO.new(file, content_type), + "fileFormat" => format + } + .merge(add_profile_params(options)) + end + + def baseline_measures_params(baseline_measures) + return nil if baseline_measures.nil? + case baseline_measures + when Hash + [convert_baseline_measure(baseline_measures)] + when Array + baseline_measures.map{|b| convert_baseline_measure(b)} + else + raise Genability::InvalidInput + end + end + + def convert_baseline_measure(options) + { + "i" => options[:i], + "v" => options[:v], + }. + delete_if{ |k,v| v.nil? } end end diff --git a/lib/genability/configuration.rb b/lib/genability/configuration.rb index eed9a1d..c0147d2 100644 --- a/lib/genability/configuration.rb +++ b/lib/genability/configuration.rb @@ -11,7 +11,8 @@ module Configuration :endpoint, :format, :user_agent, - :proxy + :proxy, + :debug_logging ].freeze # An array of valid request/response formats @@ -32,8 +33,7 @@ module Configuration DEFAULT_APPLICATION_KEY = nil # The endpoint that will be used to connect if none is set - # - DEFAULT_ENDPOINT = 'http://api.genability.com/rest/' + DEFAULT_ENDPOINT = 'https://api.genability.com/rest/' # The response format appended to the path and sent in the 'Accept' header if none is set # @@ -46,6 +46,9 @@ module Configuration # The user agent that will be sent to the API endpoint if none is set DEFAULT_USER_AGENT = "Genability API Ruby Gem".freeze + # By default, disable debug logging + DEFAULT_DEBUG_LOGGING = false + # @private attr_accessor *VALID_OPTIONS_KEYS @@ -75,6 +78,7 @@ def reset self.format = DEFAULT_FORMAT self.user_agent = DEFAULT_USER_AGENT self.proxy = DEFAULT_PROXY + self.debug_logging = DEFAULT_DEBUG_LOGGING end end end diff --git a/lib/genability/connection.rb b/lib/genability/connection.rb index 52f1d51..da6b3ed 100644 --- a/lib/genability/connection.rb +++ b/lib/genability/connection.rb @@ -1,5 +1,4 @@ require 'faraday_middleware' -require 'faraday/request/url_encoding_fix' require 'faraday/response/raise_http_4xx' require 'faraday/response/raise_http_5xx' @@ -11,27 +10,28 @@ module Connection def connection(raw=false) # raise if id or key is missing options = { - :headers => {'Accept' => "application/#{format}; charset=utf-8", 'User-Agent' => user_agent}, :proxy => proxy, :ssl => {:verify => false}, :url => endpoint } Faraday::Connection.new(options) do |connection| - #connection.use Faraday::Request::OAuth2, client_id, access_token - connection.use Faraday::Request::UrlEncodingFix - connection.use Faraday::Response::RaiseHttp4xx - connection.use Faraday::Response::Mashify unless raw + connection.basic_auth application_id, application_key + connection.headers['Accept'] = "application/#{format}; charset=utf-8" + connection.headers['User-Agent'] = user_agent + connection.request :json + connection.request :multipart + connection.response :mashify unless raw + connection.response :logger if debug_logging unless raw case format.to_s.downcase when 'json' - connection.use Faraday::Response::ParseJson + connection.response :json, :content_type => /\bjson$/ end end + connection.use Faraday::Response::RaiseHttp4xx connection.use Faraday::Response::RaiseHttp5xx - connection.use Faraday::Request::Multipart - connection.use Faraday::Request::UrlEncoded - connection.adapter(adapter) + connection.adapter adapter end end end diff --git a/lib/genability/error.rb b/lib/genability/error.rb index e66613c..d859829 100644 --- a/lib/genability/error.rb +++ b/lib/genability/error.rb @@ -5,6 +5,9 @@ class Error < StandardError; end # Raised when Genability returns the HTTP status code 400 class BadRequest < Error; end + # Raised when Genability returns the HTTP status code 401 + class Unauthorized < Error; end + # Raised when Genability returns the HTTP status code 403 class Forbidden < Error; end @@ -17,6 +20,9 @@ class ServerError < Error; end # Raised when Genability returns the HTTP status code 503 class ServiceUnavailable < Error; end + # Raised when Genability returns an ill-formatted response body + class InvalidResponseFormat < Error; end + # Raised when the tariff input for the calculate method is # not an array or hash class InvalidInput < Error; end diff --git a/lib/genability/request.rb b/lib/genability/request.rb index 7ee94ba..8a40813 100644 --- a/lib/genability/request.rb +++ b/lib/genability/request.rb @@ -30,8 +30,6 @@ def request(method, path, options, raw=false, unformatted=false) case method when :get, :delete request.url(path, options) - request.params['appId'] = application_id - request.params['appKey'] = application_key when :post, :put request.path = path if options['fileData'] @@ -39,11 +37,19 @@ def request(method, path, options, raw=false, unformatted=false) request.body = options else request.headers['Content-Type'] = 'application/json;charset=utf-8' - request.body = options unless options.empty? + if !options.empty? + request.body = options.is_a?(Hash) ? options.to_json : options + end end end end - raw ? response : response.body + if raw + response + elsif response && response.body && !response.body.is_a?(String) + response.body + else + raise Genability::InvalidResponseFormat, "Invalid response format: #{response && response.body}" + end end def formatted_path(path) diff --git a/spec/cassettes/Genability_Client/account_calculation_json/_account_calculation/calculates_the_total_cost.yml b/spec/cassettes/Genability_Client/account_calculation_json/_account_calculation/calculates_the_total_cost.yml new file mode 100644 index 0000000..0d0314b --- /dev/null +++ b/spec/cassettes/Genability_Client/account_calculation_json/_account_calculation/calculates_the_total_cost.yml @@ -0,0 +1,96 @@ +--- +http_interactions: +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts + body: + encoding: UTF-8 + string: '{"providerAccountId":"ruby_test_account","address":{"addressString":"94703"}}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Sat, 28 Jul 2018 06:43:22 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","providerAccountId":"ruby_test_account","accountName":null,"customerOrgId":null,"customerOrgName":null,"address":{"addressString":"94703","city":"Berkeley","state":"CA","zip":"94703","country":"US","lon":-122.2738958,"lat":37.85247409999999},"status":"ACTIVE","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Sat, 28 Jul 2018 06:43:22 GMT +- request: + method: post + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts/0e08dbf1-d45a-4236-88cb-c678446650f7/calculate + body: + encoding: UTF-8 + string: '{"fromDateTime":"2016-01-01T00:00:00.0-0800","toDateTime":"2016-01-01T01:00:00.0-0800","masterTariffId":512,"propertyInputs":[{"fromDateTime":"2016-01-01T00:00:00.0-0800","toDateTime":"2016-01-01T00:15:00.0-0800","keyName":"consumption","dataValue":2.2,"unit":"kWh"},{"fromDateTime":"2016-01-01T00:15:00.0-0800","toDateTime":"2016-01-01T00:30:00.0-0800","keyName":"consumption","dataValue":1.3,"unit":"kWh"},{"fromDateTime":"2016-01-01T00:30:00.0-0800","toDateTime":"2016-01-01T00:45:00.0-0800","keyName":"consumption","dataValue":0.6,"unit":"kWh"},{"fromDateTime":"2016-01-01T00:45:00.0-0800","toDateTime":"2016-01-01T01:00:00.0-0800","keyName":"consumption","dataValue":2.1,"unit":"kWh"},{"fromDateTime":"2016-01-01T00:00:00.0-0800","toDateTime":"2016-01-01T01:00:00.0-0800","keyName":"cityLimits","dataValue":"Inside"},{"fromDateTime":"2016-01-01T00:00:00.0-0800","toDateTime":"2016-01-01T01:00:00.0-0800","keyName":"connectionType","dataValue":"Primary"}],"rateInputs":[{"fromDateTime":"2016-01-01T12:00:00.0-0800","toDateTime":"2016-01-02T12:00:00.0-0800","chargeType":"TAX","rateName":"Utility + Users Tax","rateGroupName":"Taxes","rateBands":[{"rateAmount":0.075,"rateUnit":"PERCENTAGE"}]}]}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Sat, 28 Jul 2018 06:43:24 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Content-Length: + - '1359' + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"CalculatedCost","requestId":"def89347-1f0a-4c00-ae5d-2f513e981447","results":[{"calculatedCostId":"d000f8c5-bad4-4559-a424-aea4bff03bc0","masterTariffId":512,"tariffName":"Residential","totalCost":0.59000000,"fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","currency":"USD","summary":{"subTotalCost":0.59,"taxCost":0.00,"totalCost":0.59,"adjustedTotalCost":0.59,"kWh":6.20,"kW":0},"accuracy":0.00000000,"items":[{"tariffRateId":17471831,"tariffRateBandId":10922532,"rateSequenceNumber":0,"rateGroupName":"Basic + Service Charge","rateName":"Basic Service Charge","fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","quantityKey":"fixed","rateType":"COST_PER_UNIT","rateAmount":0.01344086,"itemQuantity":1.00000000,"cost":0.01344086,"chargeType":"FIXED_PRICE"},{"tariffRateId":17471832,"tariffRateBandId":10922533,"rateSequenceNumber":1,"rateGroupName":"Environmental + Compliance Cost Recovery Charge","rateName":"Basic Service Charge Component","fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","quantityKey":"fixed","rateType":"COST_PER_UNIT","rateAmount":0.00171613,"itemQuantity":1.00000000,"cost":0.00171613,"chargeType":"FIXED_PRICE"},{"tariffRateId":17471833,"tariffRateBandId":10922534,"rateSequenceNumber":2,"rateGroupName":"Nuclear + Construction Cost Recovery Charge","rateName":"Basic Service Charge Component","fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","quantityKey":"fixed","rateType":"COST_PER_UNIT","rateAmount":0.00130856,"itemQuantity":1.00000000,"cost":0.00130856,"chargeType":"FIXED_PRICE"},{"tariffRateId":17471834,"tariffRateBandId":10922535,"rateSequenceNumber":3,"rateGroupName":"Demand + Side Management Charge","rateName":"Basic Service Charge Component","fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","quantityKey":"fixed","rateType":"COST_PER_UNIT","rateAmount":0.00022474,"itemQuantity":1.00000000,"cost":0.00022474,"chargeType":"FIXED_PRICE"},{"tariffRateId":17471836,"tariffRateBandId":10922539,"rateSequenceNumber":5,"rateGroupName":"Demand + Side Management Charge","rateName":"Energy Charge - Winter Component","fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","quantityKey":"consumption","rateType":"COST_PER_UNIT","rateAmount":0.00081880,"itemQuantity":6.20000000,"cost":0.00507656,"chargeType":"CONSUMPTION_BASED","seasonId":314,"seasonName":"Winter"},{"tariffRateId":17471837,"tariffRateBandId":10922542,"rateSequenceNumber":6,"rateGroupName":"Energy + Charges","rateName":"Winter Rate","fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","quantityKey":"consumption","rateType":"COST_PER_UNIT","rateAmount":0.04896858,"itemQuantity":6.20000000,"cost":0.30360520,"chargeType":"CONSUMPTION_BASED","seasonId":314,"seasonName":"Winter"},{"tariffRateId":17471838,"tariffRateBandId":10922545,"rateSequenceNumber":7,"rateGroupName":"Environmental + Compliance Cost Recovery Charge","rateName":"Energy Charge - Winter Component","fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","quantityKey":"consumption","rateType":"COST_PER_UNIT","rateAmount":0.00625231,"itemQuantity":6.20000000,"cost":0.03876432,"chargeType":"CONSUMPTION_BASED","seasonId":314,"seasonName":"Winter"},{"tariffRateId":17471848,"tariffRateBandId":10922565,"rateSequenceNumber":8,"rateGroupName":"Municipal + Franchise Fee","rateName":"Inside City Limit Customer","fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","quantityKey":"percentage","rateType":"PERCENTAGE","rateAmount":2.99890000,"itemQuantity":1.00000000,"cost":0.01716376,"chargeType":"QUANTITY"},{"tariffRateId":17471839,"tariffRateBandId":10922548,"rateSequenceNumber":8,"rateGroupName":"Nuclear + Construction Cost Recovery Charge","rateName":"Energy Charge - Winter Component","fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","quantityKey":"consumption","rateType":"COST_PER_UNIT","rateAmount":0.00476743,"itemQuantity":6.20000000,"cost":0.02955807,"chargeType":"CONSUMPTION_BASED","seasonId":314,"seasonName":"Winter"},{"tariffRateId":17471840,"tariffRateBandId":10922549,"rateSequenceNumber":9,"rateGroupName":"Fuel + Cost Recovery Charge","rateName":"Winter Rate","fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","quantityKey":"consumption","rateType":"COST_PER_UNIT","rateAmount":0.02881300,"itemQuantity":6.20000000,"cost":0.17864060,"chargeType":"CONSUMPTION_BASED","seasonId":314,"seasonName":"Winter"}],"assumptions":[{"keyName":"tariffId","dataType":"INTEGER","fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","dataValue":"3244437"},{"keyName":"profileId","displayName":"Default + Profile","description":"Account does not have a default profile","dataType":"STRING","accuracy":0},{"keyName":"isLowIncomeSeniorCitizen953","displayName":"Is + Low Income Senior Citizen","description":"Customers who are at least 62 years + of age or older or be a disabled person as evidenced by receiving Supplemental + Security Income (SSI) or State Supplemental Payment (SSP) and whose total + gross annual income for all persons in the applicant''s household may not + exceed seventy-five (75) percent of the most recent median income levels.","dataType":"BOOLEAN","fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","dataValue":"false","accuracy":80},{"keyName":"cityLimits","displayName":"Service + Area (Inside/outside city limits)","description":"Has service inside or outside + city limits","dataType":"STRING","fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","dataValue":"Inside","accuracy":100}]}]}' + http_version: + recorded_at: Sat, 28 Jul 2018 06:43:25 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/account_calculation_json/_account_calculation/does_not_allow_invalid_tariff_inputs.yml b/spec/cassettes/Genability_Client/account_calculation_json/_account_calculation/does_not_allow_invalid_tariff_inputs.yml new file mode 100644 index 0000000..60fb8a3 --- /dev/null +++ b/spec/cassettes/Genability_Client/account_calculation_json/_account_calculation/does_not_allow_invalid_tariff_inputs.yml @@ -0,0 +1,40 @@ +--- +http_interactions: +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts + body: + encoding: UTF-8 + string: '{"providerAccountId":"ruby_test_account","address":{"addressString":"94703"}}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Sat, 28 Jul 2018 06:43:24 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Content-Length: + - '307' + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","providerAccountId":"ruby_test_account","accountName":null,"customerOrgId":null,"customerOrgName":null,"address":{"addressString":"94703","city":"Berkeley","state":"CA","zip":"94703","country":"US","lon":-122.2738958,"lat":37.85247409999999},"status":"ACTIVE","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Sat, 28 Jul 2018 06:43:25 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/account_json/_account/returns_an_account.yml b/spec/cassettes/Genability_Client/account_json/_account/returns_an_account.yml new file mode 100644 index 0000000..33a3d24 --- /dev/null +++ b/spec/cassettes/Genability_Client/account_json/_account/returns_an_account.yml @@ -0,0 +1,112 @@ +--- +http_interactions: +- request: + method: post + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts + body: + encoding: UTF-8 + string: '{"accountName":"Ruby Account Test"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:06 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"45c99e4a-d611-404c-9911-d661b644bdff","providerAccountId":null,"accountName":"Ruby + Account Test","customerOrgId":null,"customerOrgName":null,"status":"ACTIVE","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:07 GMT +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts/45c99e4a-d611-404c-9911-d661b644bdff + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:06 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"45c99e4a-d611-404c-9911-d661b644bdff","providerAccountId":null,"accountName":"Ruby + Account Test","customerOrgId":null,"customerOrgName":null,"status":"ACTIVE","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:07 GMT +- request: + method: delete + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts/45c99e4a-d611-404c-9911-d661b644bdff + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:06 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"45c99e4a-d611-404c-9911-d661b644bdff","providerAccountId":null,"accountName":null,"customerOrgId":null,"customerOrgName":null,"status":"DELETED","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:07 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/account_json/_accounts/returns_a_list_of_accounts.yml b/spec/cassettes/Genability_Client/account_json/_accounts/returns_a_list_of_accounts.yml new file mode 100644 index 0000000..c6b7ca6 --- /dev/null +++ b/spec/cassettes/Genability_Client/account_json/_accounts/returns_a_list_of_accounts.yml @@ -0,0 +1,112 @@ +--- +http_interactions: +- request: + method: post + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts + body: + encoding: UTF-8 + string: '{"accountName":"Ruby Accounts Test"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:06 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"4cb27d92-3e17-49b3-b57d-4b43522b6ec2","providerAccountId":null,"accountName":"Ruby + Accounts Test","customerOrgId":null,"customerOrgName":null,"status":"ACTIVE","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:07 GMT +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts?search=Ruby%20Accounts%20Test + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:06 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Content-Length: + - '245' + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"4cb27d92-3e17-49b3-b57d-4b43522b6ec2","providerAccountId":null,"accountName":"Ruby + Accounts Test","customerOrgId":null,"customerOrgName":null,"status":"ACTIVE","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}],"pageStart":0,"pageCount":25}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:07 GMT +- request: + method: delete + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts/4cb27d92-3e17-49b3-b57d-4b43522b6ec2 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:06 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"4cb27d92-3e17-49b3-b57d-4b43522b6ec2","providerAccountId":null,"accountName":null,"customerOrgId":null,"customerOrgName":null,"status":"DELETED","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:07 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/account_json/_add_account/creates_a_new_account.yml b/spec/cassettes/Genability_Client/account_json/_add_account/creates_a_new_account.yml new file mode 100644 index 0000000..07c2e4d --- /dev/null +++ b/spec/cassettes/Genability_Client/account_json/_add_account/creates_a_new_account.yml @@ -0,0 +1,76 @@ +--- +http_interactions: +- request: + method: post + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts + body: + encoding: UTF-8 + string: '{"accountName":"Ruby Add Account Test"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:06 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"a937a54d-07c2-4a69-acd3-16f46b7fd1bb","providerAccountId":null,"accountName":"Ruby + Add Account Test","customerOrgId":null,"customerOrgName":null,"status":"ACTIVE","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:06 GMT +- request: + method: delete + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts/a937a54d-07c2-4a69-acd3-16f46b7fd1bb + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:06 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"a937a54d-07c2-4a69-acd3-16f46b7fd1bb","providerAccountId":null,"accountName":null,"customerOrgId":null,"customerOrgName":null,"status":"DELETED","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:06 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/account_json/_delete_account/deletes_an_account.yml b/spec/cassettes/Genability_Client/account_json/_delete_account/deletes_an_account.yml new file mode 100644 index 0000000..2914fe3 --- /dev/null +++ b/spec/cassettes/Genability_Client/account_json/_delete_account/deletes_an_account.yml @@ -0,0 +1,76 @@ +--- +http_interactions: +- request: + method: post + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts + body: + encoding: UTF-8 + string: '{"accountName":"Ruby Delete Account Test"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:06 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"f75126f9-d737-4503-bf7f-52088154ebb4","providerAccountId":null,"accountName":"Ruby + Delete Account Test","customerOrgId":null,"customerOrgName":null,"status":"ACTIVE","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:06 GMT +- request: + method: delete + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts/f75126f9-d737-4503-bf7f-52088154ebb4 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:06 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"f75126f9-d737-4503-bf7f-52088154ebb4","providerAccountId":null,"accountName":null,"customerOrgId":null,"customerOrgName":null,"status":"DELETED","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:07 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/account_json/_provider_account/returns_an_account.yml b/spec/cassettes/Genability_Client/account_json/_provider_account/returns_an_account.yml new file mode 100644 index 0000000..be862e0 --- /dev/null +++ b/spec/cassettes/Genability_Client/account_json/_provider_account/returns_an_account.yml @@ -0,0 +1,113 @@ +--- +http_interactions: +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts + body: + encoding: UTF-8 + string: '{"providerAccountId":"provider_account_test","accountName":"Ruby Provider + Account Test"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:06 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"94a65558-3e7b-4eb2-a8c3-35870f58b820","providerAccountId":"provider_account_test","accountName":"Ruby + Provider Account Test","customerOrgId":null,"customerOrgName":null,"status":"DELETED","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:07 GMT +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts/pid/provider_account_test + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:06 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"94a65558-3e7b-4eb2-a8c3-35870f58b820","providerAccountId":"provider_account_test","accountName":"Ruby + Provider Account Test","customerOrgId":null,"customerOrgName":null,"status":"DELETED","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:07 GMT +- request: + method: delete + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts/94a65558-3e7b-4eb2-a8c3-35870f58b820 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:06 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"94a65558-3e7b-4eb2-a8c3-35870f58b820","providerAccountId":null,"accountName":null,"customerOrgId":null,"customerOrgName":null,"status":"DELETED","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:07 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/account_json/_upsert_account/upserts_an_account.yml b/spec/cassettes/Genability_Client/account_json/_upsert_account/upserts_an_account.yml new file mode 100644 index 0000000..037a11b --- /dev/null +++ b/spec/cassettes/Genability_Client/account_json/_upsert_account/upserts_an_account.yml @@ -0,0 +1,77 @@ +--- +http_interactions: +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts + body: + encoding: UTF-8 + string: '{"providerAccountId":"upsert_account_test","accountName":"Ruby Upsert + Account Test"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:06 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"6fcd14f6-3fd4-4b26-a5fd-6c187c71baa1","providerAccountId":"upsert_account_test","accountName":"Ruby + Upsert Account Test","customerOrgId":null,"customerOrgName":null,"status":"DELETED","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:06 GMT +- request: + method: delete + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts/6fcd14f6-3fd4-4b26-a5fd-6c187c71baa1 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:06 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"6fcd14f6-3fd4-4b26-a5fd-6c187c71baa1","providerAccountId":null,"accountName":null,"customerOrgId":null,"customerOrgName":null,"status":"DELETED","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:06 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/account_tariff_json/_add_account_tariff/adds_a_new_account_tariff.yml b/spec/cassettes/Genability_Client/account_tariff_json/_add_account_tariff/adds_a_new_account_tariff.yml new file mode 100644 index 0000000..38254dc --- /dev/null +++ b/spec/cassettes/Genability_Client/account_tariff_json/_add_account_tariff/adds_a_new_account_tariff.yml @@ -0,0 +1,114 @@ +--- +http_interactions: +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts + body: + encoding: UTF-8 + string: '{"providerAccountId":"account_test"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Wed, 15 Feb 2017 18:34:40 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"16d2efd6-0aaa-4c4e-b03c-c867736054f4","providerAccountId":"account_test","accountName":"Ruby + Provider Account Test","customerOrgId":null,"customerOrgName":null,"status":"DELETED","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Wed, 15 Feb 2017 18:34:41 GMT +- request: + method: post + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts/16d2efd6-0aaa-4c4e-b03c-c867736054f4/tariffs + body: + encoding: UTF-8 + string: '{"masterTariffId":522}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Wed, 15 Feb 2017 18:36:05 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Tariff","results":[{"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","customerClass":null,"customerLikelihood":null,"endDate":null,"timeZone":"America/Los_Angeles","billingPeriod":"MONTHLY","currency":"USD"}]}' + http_version: + recorded_at: Wed, 15 Feb 2017 18:36:06 GMT +- request: + method: delete + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts/16d2efd6-0aaa-4c4e-b03c-c867736054f4 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Wed, 15 Feb 2017 18:36:05 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Content-Length: + - '212' + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"16d2efd6-0aaa-4c4e-b03c-c867736054f4","providerAccountId":null,"accountName":null,"customerOrgId":null,"customerOrgName":null,"status":"DELETED","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Wed, 15 Feb 2017 18:36:06 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/account_tariff_json/_add_provider_account_tariff/adds_a_new_account_tariff.yml b/spec/cassettes/Genability_Client/account_tariff_json/_add_provider_account_tariff/adds_a_new_account_tariff.yml new file mode 100644 index 0000000..c6670e9 --- /dev/null +++ b/spec/cassettes/Genability_Client/account_tariff_json/_add_provider_account_tariff/adds_a_new_account_tariff.yml @@ -0,0 +1,115 @@ +--- +http_interactions: +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts + body: + encoding: UTF-8 + string: '{"providerAccountId":"account_test"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Wed, 15 Feb 2017 18:40:40 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"16d2efd6-0aaa-4c4e-b03c-c867736054f4","providerAccountId":"account_test","accountName":"Ruby + Provider Account Test","customerOrgId":null,"customerOrgName":null,"status":"DELETED","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":{"lseId":{"keyName":"lseId","displayName":"PGE","description":"Pacific + Gas & Electric Co","dataValue":"734"}},"tariffs":[],"projects":null}]}' + http_version: + recorded_at: Wed, 15 Feb 2017 18:40:41 GMT +- request: + method: post + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts/pid/account_test/tariffs + body: + encoding: UTF-8 + string: '{"masterTariffId":522}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Wed, 15 Feb 2017 18:40:40 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Tariff","results":[{"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","customerClass":null,"customerLikelihood":null,"endDate":null,"timeZone":"America/Los_Angeles","billingPeriod":"MONTHLY","currency":"USD"}]}' + http_version: + recorded_at: Wed, 15 Feb 2017 18:40:41 GMT +- request: + method: delete + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts/16d2efd6-0aaa-4c4e-b03c-c867736054f4 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Wed, 15 Feb 2017 18:40:41 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"16d2efd6-0aaa-4c4e-b03c-c867736054f4","providerAccountId":null,"accountName":null,"customerOrgId":null,"customerOrgName":null,"status":"DELETED","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Wed, 15 Feb 2017 18:40:41 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/account_tariff_json/_delete_account_tariff/deletes_an_account.yml b/spec/cassettes/Genability_Client/account_tariff_json/_delete_account_tariff/deletes_an_account.yml new file mode 100644 index 0000000..e92bc7e --- /dev/null +++ b/spec/cassettes/Genability_Client/account_tariff_json/_delete_account_tariff/deletes_an_account.yml @@ -0,0 +1,149 @@ +--- +http_interactions: +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts + body: + encoding: UTF-8 + string: '{"providerAccountId":"account_test"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Wed, 15 Feb 2017 18:34:40 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"16d2efd6-0aaa-4c4e-b03c-c867736054f4","providerAccountId":"account_test","accountName":"Ruby + Provider Account Test","customerOrgId":null,"customerOrgName":null,"status":"DELETED","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Wed, 15 Feb 2017 18:34:41 GMT +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts/16d2efd6-0aaa-4c4e-b03c-c867736054f4/tariffs + body: + encoding: UTF-8 + string: '{"masterTariffId":522}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Wed, 15 Feb 2017 18:36:05 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Tariff","results":[{"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","customerClass":null,"customerLikelihood":null,"endDate":null,"timeZone":"America/Los_Angeles","billingPeriod":"MONTHLY","currency":"USD"}]}' + http_version: + recorded_at: Wed, 15 Feb 2017 18:36:06 GMT +- request: + method: delete + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts/16d2efd6-0aaa-4c4e-b03c-c867736054f4/tariffs + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Wed, 15 Feb 2017 18:37:09 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":0,"type":"Tariff","results":null}' + http_version: + recorded_at: Wed, 15 Feb 2017 18:37:10 GMT +- request: + method: delete + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts/16d2efd6-0aaa-4c4e-b03c-c867736054f4 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Wed, 15 Feb 2017 18:37:10 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Content-Length: + - '217' + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"16d2efd6-0aaa-4c4e-b03c-c867736054f4","providerAccountId":null,"accountName":null,"customerOrgId":null,"customerOrgName":null,"status":"DELETED","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Wed, 15 Feb 2017 18:37:10 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/account_tariff_json/_delete_provider_account_tariff/deletes_an_account.yml b/spec/cassettes/Genability_Client/account_tariff_json/_delete_provider_account_tariff/deletes_an_account.yml new file mode 100644 index 0000000..8f9887c --- /dev/null +++ b/spec/cassettes/Genability_Client/account_tariff_json/_delete_provider_account_tariff/deletes_an_account.yml @@ -0,0 +1,151 @@ +--- +http_interactions: +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts + body: + encoding: UTF-8 + string: '{"providerAccountId":"account_test"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Wed, 15 Feb 2017 18:40:41 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Content-Length: + - '426' + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"16d2efd6-0aaa-4c4e-b03c-c867736054f4","providerAccountId":"account_test","accountName":"Ruby + Provider Account Test","customerOrgId":null,"customerOrgName":null,"status":"DELETED","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":{"lseId":{"keyName":"lseId","displayName":"PGE","description":"Pacific + Gas & Electric Co","dataValue":"734"}},"tariffs":[{"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","customerClass":null,"customerLikelihood":null,"endDate":null,"timeZone":"America/Los_Angeles","billingPeriod":"MONTHLY","currency":"USD"}],"projects":null}]}' + http_version: + recorded_at: Wed, 15 Feb 2017 18:40:41 GMT +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts/16d2efd6-0aaa-4c4e-b03c-c867736054f4/tariffs + body: + encoding: UTF-8 + string: '{"masterTariffId":522}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Wed, 15 Feb 2017 18:40:41 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Content-Length: + - '246' + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Tariff","results":[{"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","customerClass":null,"customerLikelihood":null,"endDate":null,"timeZone":"America/Los_Angeles","billingPeriod":"MONTHLY","currency":"USD"}]}' + http_version: + recorded_at: Wed, 15 Feb 2017 18:40:41 GMT +- request: + method: delete + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts/pid/account_test/tariffs + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Wed, 15 Feb 2017 18:40:40 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Content-Length: + - '84' + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":0,"type":"Tariff","results":null}' + http_version: + recorded_at: Wed, 15 Feb 2017 18:40:41 GMT +- request: + method: delete + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts/16d2efd6-0aaa-4c4e-b03c-c867736054f4 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Wed, 15 Feb 2017 18:40:41 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"16d2efd6-0aaa-4c4e-b03c-c867736054f4","providerAccountId":null,"accountName":null,"customerOrgId":null,"customerOrgName":null,"status":"DELETED","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Wed, 15 Feb 2017 18:40:41 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/account_tariff_json/_upsert_account_tariff/adds_a_new_account_tariff.yml b/spec/cassettes/Genability_Client/account_tariff_json/_upsert_account_tariff/adds_a_new_account_tariff.yml new file mode 100644 index 0000000..9657fac --- /dev/null +++ b/spec/cassettes/Genability_Client/account_tariff_json/_upsert_account_tariff/adds_a_new_account_tariff.yml @@ -0,0 +1,114 @@ +--- +http_interactions: +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts + body: + encoding: UTF-8 + string: '{"providerAccountId":"account_test"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Wed, 15 Feb 2017 18:34:41 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"16d2efd6-0aaa-4c4e-b03c-c867736054f4","providerAccountId":"account_test","accountName":"Ruby + Provider Account Test","customerOrgId":null,"customerOrgName":null,"status":"DELETED","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Wed, 15 Feb 2017 18:34:41 GMT +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts/16d2efd6-0aaa-4c4e-b03c-c867736054f4/tariffs + body: + encoding: UTF-8 + string: '{"masterTariffId":522}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Wed, 15 Feb 2017 18:36:05 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Tariff","results":[{"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","customerClass":null,"customerLikelihood":null,"endDate":null,"timeZone":"America/Los_Angeles","billingPeriod":"MONTHLY","currency":"USD"}]}' + http_version: + recorded_at: Wed, 15 Feb 2017 18:36:06 GMT +- request: + method: delete + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts/16d2efd6-0aaa-4c4e-b03c-c867736054f4 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Wed, 15 Feb 2017 18:36:05 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"16d2efd6-0aaa-4c4e-b03c-c867736054f4","providerAccountId":null,"accountName":null,"customerOrgId":null,"customerOrgName":null,"status":"DELETED","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Wed, 15 Feb 2017 18:36:06 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/account_tariff_json/_upsert_provider_account_tariff/adds_a_new_account_tariff.yml b/spec/cassettes/Genability_Client/account_tariff_json/_upsert_provider_account_tariff/adds_a_new_account_tariff.yml new file mode 100644 index 0000000..99df14b --- /dev/null +++ b/spec/cassettes/Genability_Client/account_tariff_json/_upsert_provider_account_tariff/adds_a_new_account_tariff.yml @@ -0,0 +1,116 @@ +--- +http_interactions: +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts + body: + encoding: UTF-8 + string: '{"providerAccountId":"account_test"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Wed, 15 Feb 2017 18:40:40 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"16d2efd6-0aaa-4c4e-b03c-c867736054f4","providerAccountId":"account_test","accountName":"Ruby + Provider Account Test","customerOrgId":null,"customerOrgName":null,"status":"DELETED","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":{"lseId":{"keyName":"lseId","displayName":"PGE","description":"Pacific + Gas & Electric Co","dataValue":"734"}},"tariffs":[{"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","customerClass":null,"customerLikelihood":null,"endDate":null,"timeZone":"America/Los_Angeles","billingPeriod":"MONTHLY","currency":"USD"}],"projects":null}]}' + http_version: + recorded_at: Wed, 15 Feb 2017 18:40:41 GMT +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts/pid/account_test/tariffs + body: + encoding: UTF-8 + string: '{"masterTariffId":522}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Wed, 15 Feb 2017 18:40:59 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Content-Length: + - '246' + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Tariff","results":[{"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","customerClass":null,"customerLikelihood":null,"endDate":null,"timeZone":"America/Los_Angeles","billingPeriod":"MONTHLY","currency":"USD"}]}' + http_version: + recorded_at: Wed, 15 Feb 2017 18:41:00 GMT +- request: + method: delete + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts/16d2efd6-0aaa-4c4e-b03c-c867736054f4 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Wed, 15 Feb 2017 18:41:00 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"16d2efd6-0aaa-4c4e-b03c-c867736054f4","providerAccountId":null,"accountName":null,"customerOrgId":null,"customerOrgName":null,"status":"DELETED","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Wed, 15 Feb 2017 18:41:00 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/analysis_json/_savings_analysis/runs_a_savings_analysis.yml b/spec/cassettes/Genability_Client/analysis_json/_savings_analysis/runs_a_savings_analysis.yml new file mode 100644 index 0000000..e745d8f --- /dev/null +++ b/spec/cassettes/Genability_Client/analysis_json/_savings_analysis/runs_a_savings_analysis.yml @@ -0,0 +1,356 @@ +--- +http_interactions: +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts + body: + encoding: UTF-8 + string: '{"providerAccountId":"ruby_test_account","address":{"addressString":"94703"}}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:30 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","providerAccountId":"ruby_test_account","accountName":null,"customerOrgId":null,"customerOrgName":null,"address":{"addressString":"94703","city":"Berkeley","state":"CA","zip":"94703","country":"US","lon":-122.2738958,"lat":37.85247409999999},"status":"ACTIVE","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:30 GMT +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles + body: + encoding: UTF-8 + string: '{"accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","providerProfileId":"test_usage_profile","profileName":"Electricity + Usage","serviceTypes":"ELECTRICITY","isDefault":true,"sourceId":"readingEntry","readingData":[{"fromDateTime":"2016-01-01T00:00:00.0-0800","toDateTime":"2016-02-01T00:00:00.0-0800","quantityUnit":"kWh","quantityValue":1000}]}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:30 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"UsageProfile","results":[{"profileId":"571976fde013c65f7ca7e09e","providerProfileId":"test_usage_profile","profileName":"Electricity + Usage","accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","serviceTypes":"ELECTRICITY","source":{"sourceId":"ReadingEntry","name":"Readings","type":"Reading","sourceVersion":null},"isDefault":true,"dataStatus":2,"properties":null,"readingDataSummaries":[{"quantityUnit":"kWh","fromDateTime":"2016-01-01T08:00:00+00:00","toDateTime":"2016-02-01T08:00:00+00:00","numberOfReadings":1}],"baselineMeasures":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:30 GMT +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles + body: + encoding: UTF-8 + string: '{"accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","providerProfileId":"test_solar_profile","profileName":"Solar + Production","serviceTypes":"SOLAR_PV","sourceId":"readingEntry","readingData":[{"fromDateTime":"2016-01-01T00:00:00.0-0800","toDateTime":"2016-02-01T00:00:00.0-0800","quantityUnit":"kWh","quantityValue":800}]}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:30 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"UsageProfile","results":[{"profileId":"571976fde013c65f7ca7e09f","providerProfileId":"test_solar_profile","profileName":"Solar + Production","accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","serviceTypes":"SOLAR_PV","source":{"sourceId":"ReadingEntry","name":"Readings","type":"Reading","sourceVersion":null},"dataStatus":2,"properties":null,"readingDataSummaries":[{"quantityUnit":"kWh","fromDateTime":"2016-01-01T08:00:00+00:00","toDateTime":"2016-02-01T08:00:00+00:00","numberOfReadings":1}],"baselineMeasures":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:30 GMT +- request: + method: post + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts/analysis + body: + encoding: UTF-8 + string: '{"accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","fromDateTime":"2016-01-01","useIntelligentBaselining":true,"populateCosts":true,"fields":"ext","propertyInputs":[{"scenarios":"before","keyName":"masterTariffId","dataValue":522},{"scenarios":"after","keyName":"masterTariffId","dataValue":525},{"scenarios":"before,after","keyName":"providerProfileId","dataValue":"test_usage_profile"},{"scenarios":"solar,after","keyName":"providerProfileId","dataValue":"test_solar_profile"}],"rateInputs":[{"scenarios":"solar","chargeType":"FIXED_PRICE","rateBands":[{"rateAmount":100.0}]}]}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:31 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"AccountAnalysis","results":[{"savingsAnalysisId":"0e439cc9-4d20-4eb1-9564-e548330c500f","createdDate":"2016-04-22T00:57:30+0000","accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","designId":null,"dataStatus":2,"currency":"USD","request":{"accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","fromDateTime":"2016-01-01T00:00:00+00:00","toDateTime":"2017-01-01T00:00:00+00:00","useIntelligentBaselining":true,"populateCosts":true,"propertyInputs":[{"keyName":"profileId","displayName":"Electricity + Usage","dataType":"STRING","dataValue":"571976fde013c65f7ca7e09e","scenarios":"before,after"},{"keyName":"profileId","displayName":"Solar + Production","dataType":"STRING","dataValue":"571976fde013c65f7ca7e09f","scenarios":"solar,after","operator":"-"},{"keyName":"masterTariffId","displayName":"Residential","dataType":"INTEGER","dataValue":"522","scenarios":"before"},{"keyName":"lseId","displayName":"Pacific + Gas & Electric Co","dataType":"INTEGER","dataValue":"734","scenarios":"before"},{"keyName":"tariffCode","displayName":"E-1","dataType":"STRING","dataValue":"E-1","scenarios":"before"}],"rateInputs":[{"masterTariffRateId":null,"tariffBookSequenceNumber":null,"tariffBookRateGroupName":null,"tariffBookRateName":null,"fromDateTime":null,"toDateTime":null,"chargeType":"FIXED_PRICE","chargePeriod":"MONTHLY","transactionType":"BUY","rateBands":[{"tariffRateBandId":null,"tariffRateId":null,"rateSequenceNumber":null,"hasConsumptionLimit":null,"hasDemandLimit":null,"hasPropertyLimit":false,"rateAmount":100.0,"rateUnit":null,"isCredit":null,"prevUpperLimit":null}],"scenarios":"solar"}]},"summary":{"lifeTimeUtilityAfterCost":8684.089,"lifeTimeUtilityAvoidedRate":0.267,"lifetimeAvoidedCost":22482.511,"lifetimeSolarCost":24000.000,"lifetimeWithoutCost":55166.600,"netAvoidedCost":2399.97,"netAvoidedCostPctOffset":0.8701,"netAvoidedKWh":9133.10,"netAvoidedKWhPctOffset":0.8000,"netAvoidedRate":0.262777,"postTotalCost":358.36,"postTotalKWh":2283.25852800,"postTotalKWhCost":411.258718112479461258000000,"postTotalKWhRate":0.18011921,"postTotalMinCost":120.245640000000,"postTotalNonMinCost":358.358718112479461258000000,"postTotalRate":0.15695113,"preTotalCost":2758.33,"preTotalKWh":11416.35950400000000,"preTotalKWhCost":2811.227233426749961024300000000000,"preTotalKWhRate":0.24624551,"preTotalMinCost":120.245640000000,"preTotalNonMinCost":2758.327233426749961024300000000000,"preTotalRate":0.24161205},"scenarios":[{"id":null,"name":"before","serviceType":"ELECTRICITY","inputs":[{"keyName":"lseId","displayName":"Utility + or Load Serving Entity","dataType":"INTEGER","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"734","scenarios":"before","quantityUnit":""},{"keyName":"masterTariffId","displayName":"Residential","dataType":"INTEGER","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"522","scenarios":"before"},{"keyName":"profileId","displayName":"Electricity + Usage","dataType":"STRING","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"571976fde013c65f7ca7e09e","scenarios":"before"},{"keyName":"tariffCode","displayName":"tariffCode","dataType":"INTEGER","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"E-1","scenarios":"before"}],"assumptions":[{"keyName":"dailyMedicalAllowance","displayName":"Daily + Medical Allowance ","description":"Residential customers on a medical allowance + get additional quantities of energy at the lowest (baseline) price. The medical + allowance is a daily value. ","dataType":"DECIMAL","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"0","accuracy":80},{"keyName":"hasCAEnergySurchargeExemption","displayName":"Has + Energy Surcharge Exemption","description":"Exemptions for CA Energy Surcharge + apply to the following:\r\n1. Federal Agencies\r\n2. American National Red + Cross facilities\r\n3. Energy consumed on Indian reservations\r\n4. Foreign + consular employees\r\n5. Federal Credit Unions","dataType":"BOOLEAN","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"false","accuracy":80},{"keyName":"intelligentBaselining","dataType":"BOOLEAN","dataValue":"true"},{"keyName":"isSmartRateCustomer","displayName":"Is + SmartRate Customer","description":"The residential SmartRate program is a + voluntary rate supplement to the customer''s \r\notherwise applicable rate + schedule (OAS).\r\nThe customer will be billed for all regular charges applicable + under the customer''s OAS. \r\nAdditional charges (based on usage during + SmartDay High-Price Periods) and \r\nSmartRate credits will be determined + according to the rates specified in this schedule. The customer must have + a SmartMeter system to participate in the residential \r\nSmartRate program","dataType":"BOOLEAN","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"false","accuracy":80},{"keyName":"powerChargeIndifferenceAdjustmentVintageYear","displayName":"Power + Charge Indifference Adjustment Vintage Year ","description":"The adjustment + (either a \r\ncharge or credit) is intended to ensure that customers that + purchase electricity from \r\nnon-utility suppliers pay their share of cost + for generation acquired prior to 2003","dataType":"STRING","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"None","accuracy":80},{"keyName":"smartMeterOptOut","displayName":"Has + Smart Meter Opt-Out","description":"Customers who elect to opt-out of receiving + a smart meter and choose to retain a non-smart meter, are subject to the Smart + Meter Opt-Out fees.\r\n\r\nSmart Meter Opt-Out Customers are subject to one-time, + up-front fee and a recurring monthly fee ","dataType":"BOOLEAN","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"false","accuracy":80},{"keyName":"solarChoiceCustomerCategory","displayName":"Solar + Choice Customer Category","description":"The customer is a solar choice customer taking + service under Schedule E-GT. The customer will pay the applicable Program + Charge based on the year service under this schedule was started. ","dataType":"STRING","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"None","accuracy":80},{"keyName":"tariffId","dataType":"INTEGER","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2016-03-01T00:00:00-08:00","dataValue":"3243470","accuracy":100},{"keyName":"tariffId","dataType":"INTEGER","fromDateTime":"2016-03-01T00:00:00-08:00","toDateTime":"2016-03-24T00:00:00-07:00","dataValue":"3249960","accuracy":100},{"keyName":"tariffId","dataType":"INTEGER","fromDateTime":"2016-03-24T00:00:00-07:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"3252392","accuracy":100},{"keyName":"territoryId","dataType":"INTEGER","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"3534","accuracy":80},{"keyName":"typicalBaseline","dataType":"STRING","dataValue":"5462916ef81548bdd70a3d24"},{"keyName":"usageExtrapolated","dataType":"BOOLEAN","dataValue":"true","accuracy":78},{"keyName":"usageInterpolated","dataType":"BOOLEAN","dataValue":"true","accuracy":80},{"keyName":"utilityEmployee","displayName":"Is + Utility Employee","description":"Applicable to domestic service utility employees + ","dataType":"BOOLEAN","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"false","accuracy":80}]},{"id":null,"name":"after","serviceType":"ELECTRICITY","inputs":[{"keyName":"lseId","displayName":"Pacific + Gas & Electric Co","dataType":"INTEGER","dataValue":"734","scenarios":"after"},{"keyName":"masterTariffId","displayName":"Residential + - Time of Use","dataType":"INTEGER","dataValue":"525","scenarios":"after"},{"keyName":"profileId","displayName":"Solar + Production","dataType":"STRING","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"571976fde013c65f7ca7e09f","scenarios":"after","operator":"-"},{"keyName":"profileId","displayName":"Electricity + Usage","dataType":"STRING","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"571976fde013c65f7ca7e09e","scenarios":"after"},{"keyName":"solarDegradation","dataType":"DECIMAL","dataValue":"0.5","scenarios":"after"},{"keyName":"tariffCode","displayName":"E-6-TOU","dataType":"STRING","dataValue":"E-6-TOU","scenarios":"after"}],"rates":[],"assumptions":[{"keyName":"dailyMedicalAllowance","displayName":"Daily + Medical Allowance ","description":"Residential customers on a medical allowance + get additional quantities of energy at the lowest (baseline) price. The medical + allowance is a daily value. ","dataType":"DECIMAL","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"0","accuracy":80},{"keyName":"hasCAEnergySurchargeExemption","displayName":"Has + Energy Surcharge Exemption","description":"Exemptions for CA Energy Surcharge + apply to the following:\r\n1. Federal Agencies\r\n2. American National Red + Cross facilities\r\n3. Energy consumed on Indian reservations\r\n4. Foreign + consular employees\r\n5. Federal Credit Unions","dataType":"BOOLEAN","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"false","accuracy":80},{"keyName":"intelligentBaselining","dataType":"BOOLEAN","dataValue":"true"},{"keyName":"isSmartRateCustomer","displayName":"Is + SmartRate Customer","description":"The residential SmartRate program is a + voluntary rate supplement to the customer''s \r\notherwise applicable rate + schedule (OAS).\r\nThe customer will be billed for all regular charges applicable + under the customer''s OAS. \r\nAdditional charges (based on usage during + SmartDay High-Price Periods) and \r\nSmartRate credits will be determined + according to the rates specified in this schedule. The customer must have + a SmartMeter system to participate in the residential \r\nSmartRate program","dataType":"BOOLEAN","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"false","accuracy":80},{"keyName":"minimum","dataType":"STRING","fromDateTime":"2016-04-01T00:00:00-07:00","toDateTime":"2016-05-01T00:00:00-07:00","dataValue":"true","accuracy":100},{"keyName":"powerChargeIndifferenceAdjustmentVintageYear","displayName":"Power + Charge Indifference Adjustment Vintage Year ","description":"The adjustment + (either a \r\ncharge or credit) is intended to ensure that customers that + purchase electricity from \r\nnon-utility suppliers pay their share of cost + for generation acquired prior to 2003","dataType":"STRING","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"None","accuracy":80},{"keyName":"smartMeterOptOut","displayName":"Has + Smart Meter Opt-Out","description":"Customers who elect to opt-out of receiving + a smart meter and choose to retain a non-smart meter, are subject to the Smart + Meter Opt-Out fees.\r\n\r\nSmart Meter Opt-Out Customers are subject to one-time, + up-front fee and a recurring monthly fee ","dataType":"BOOLEAN","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"false","accuracy":80},{"keyName":"solarChoiceCustomerCategory","displayName":"Solar + Choice Customer Category","description":"The customer is a solar choice customer taking + service under Schedule E-GT. The customer will pay the applicable Program + Charge based on the year service under this schedule was started. ","dataType":"STRING","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"None","accuracy":80},{"keyName":"tariffId","dataType":"INTEGER","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2016-03-01T00:00:00-08:00","dataValue":"3243474","accuracy":100},{"keyName":"tariffId","dataType":"INTEGER","fromDateTime":"2016-03-01T00:00:00-08:00","toDateTime":"2016-03-24T00:00:00-07:00","dataValue":"3250016","accuracy":100},{"keyName":"tariffId","dataType":"INTEGER","fromDateTime":"2016-03-24T00:00:00-07:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"3252389","accuracy":100},{"keyName":"territoryId","dataType":"INTEGER","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"3535","accuracy":80},{"keyName":"typicalBaseline","dataType":"STRING","dataValue":"5462916ef81548bdd70a3d24"},{"keyName":"usageExtrapolated","dataType":"BOOLEAN","dataValue":"true","accuracy":78},{"keyName":"usageInterpolated","dataType":"BOOLEAN","dataValue":"true","accuracy":80},{"keyName":"utilityEmployee","displayName":"Is + Utility Employee","description":"Applicable to domestic service utility employees + ","dataType":"BOOLEAN","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"false","accuracy":80}]},{"id":null,"name":"solar","serviceType":"SOLAR_PV","inputs":[{"keyName":"profileId","displayName":"Solar + Production","dataType":"STRING","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"571976fde013c65f7ca7e09f","scenarios":"solar","operator":"+"},{"keyName":"solarDegradation","dataType":"DECIMAL","dataValue":"0.5","scenarios":"solar"}],"rates":[{"masterTariffRateId":null,"tariffBookSequenceNumber":null,"tariffBookRateGroupName":null,"tariffBookRateName":null,"fromDateTime":null,"toDateTime":null,"chargeType":"FIXED_PRICE","chargePeriod":"MONTHLY","transactionType":"BUY","rateBands":[{"tariffRateBandId":null,"tariffRateId":null,"rateSequenceNumber":null,"hasConsumptionLimit":null,"hasDemandLimit":null,"hasPropertyLimit":false,"rateAmount":100.0,"rateUnit":null,"isCredit":null,"prevUpperLimit":null}],"scenarios":"solar"}]}],"series":[{"seriesId":1,"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","scenario":"before","displayLabel":"Before + Solar Utility (Mo/Year 1)","seriesPeriod":"MONTH","seriesDuration":12,"designId":null,"key":null,"rate":0.24161205,"qty":11416.35950400000000,"cost":2758.33},{"seriesId":2,"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","scenario":"after","displayLabel":"After + Solar Utility (Mo/Year 1)","seriesPeriod":"MONTH","seriesDuration":12,"designId":null,"key":null,"rate":0.15695113,"qty":2283.25852800,"cost":358.36},{"seriesId":3,"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","scenario":"solar","displayLabel":"Solar + (Mo/Year 1)","seriesPeriod":"MONTH","seriesDuration":12,"designId":null,"key":null,"rate":0.131390,"qty":9133.10097600,"cost":1200.0},{"seriesId":4,"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","scenario":"savings","displayLabel":"Total + Savings (Mo/Year 1)","seriesPeriod":"MONTH","seriesDuration":12,"designId":null,"key":null,"qty":0,"cost":1199.968515314270499766300000000000},{"seriesId":5,"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2036-01-01T00:00:00-08:00","scenario":"before","displayLabel":"Before + Solar Utility (Annual)","seriesPeriod":"YEAR","seriesDuration":20,"designId":null,"key":null,"rate":0.241612,"qty":228327.19008000000000,"cost":55166.600000},{"seriesId":6,"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2036-01-01T00:00:00-08:00","scenario":"after","displayLabel":"After + Solar Utility (Annual/Lifetime)","seriesPeriod":"YEAR","seriesDuration":20,"designId":null,"key":null,"rate":0.160558,"qty":54086.89008000000000,"cost":8684.088718},{"seriesId":7,"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2036-01-01T00:00:00-08:00","scenario":"solar","displayLabel":"Solar + (Annual/Lifetime)","seriesPeriod":"YEAR","seriesDuration":20,"designId":null,"key":null,"rate":0.137741,"qty":174240.30,"cost":24000.0},{"seriesId":8,"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2036-01-01T00:00:00-08:00","scenario":"savings","displayLabel":"Total + Year Savings (Annual/Lifetime)","seriesPeriod":"YEAR","seriesDuration":20,"designId":null,"key":null,"rate":0,"qty":0,"cost":22482.511282},{"seriesId":9,"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2036-01-01T00:00:00-08:00","scenario":"before","displayLabel":"Before + Solar Utility (Lifetime)","seriesPeriod":"ALL","seriesDuration":20,"designId":null,"key":null,"rate":0.241612,"qty":228327.19008000000000,"cost":55166.600000},{"seriesId":10,"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2036-01-01T00:00:00-08:00","scenario":"after","displayLabel":"After + Solar Utility (Lifetime)","seriesPeriod":"ALL","seriesDuration":20,"designId":null,"key":null,"rate":0.160558,"qty":54086.89008000000000,"cost":8684.088718},{"seriesId":11,"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2036-01-01T00:00:00-08:00","scenario":"solar","displayLabel":"Solar + (Lifetime)","seriesPeriod":"ALL","seriesDuration":20,"designId":null,"key":null,"rate":0.137741,"qty":174240.30,"cost":24000.0},{"seriesId":12,"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2036-01-01T00:00:00-08:00","scenario":"savings","displayLabel":"Total + Savings (Lifetime)","seriesPeriod":"ALL","seriesDuration":20,"designId":null,"key":null,"rate":0,"qty":0,"cost":22482.511282}],"seriesData":[{"seriesId":1,"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2016-02-01T00:00:00-08:00","rate":0.25007230,"qty":1000.26735000000000,"cost":250.139154817499997078500000000000},{"seriesId":1,"fromDateTime":"2016-02-01T00:00:00-08:00","toDateTime":"2016-03-01T00:00:00-08:00","rate":0.24711002,"qty":908.54244500000000,"cost":224.509942127249988478300000000000},{"seriesId":1,"fromDateTime":"2016-03-01T00:00:00-08:00","toDateTime":"2016-04-01T00:00:00-07:00","rate":0.25135793,"qty":958.96759600000000,"cost":241.044106069659984613000000000000},{"seriesId":1,"fromDateTime":"2016-04-01T00:00:00-07:00","toDateTime":"2016-05-01T00:00:00-07:00","rate":0.22021628,"qty":908.45873700000000,"cost":200.057403840659996951500000000000},{"seriesId":1,"fromDateTime":"2016-05-01T00:00:00-07:00","toDateTime":"2016-06-01T00:00:00-07:00","rate":0.23483066,"qty":920.00123000,"cost":216.044494141400000000},{"seriesId":1,"fromDateTime":"2016-06-01T00:00:00-07:00","toDateTime":"2016-07-01T00:00:00-07:00","rate":0.24064832,"qty":932.25308500,"cost":224.34513449530000000},{"seriesId":1,"fromDateTime":"2016-07-01T00:00:00-07:00","toDateTime":"2016-08-01T00:00:00-07:00","rate":0.23547154,"qty":924.58218700,"cost":217.712787061660000000},{"seriesId":1,"fromDateTime":"2016-08-01T00:00:00-07:00","toDateTime":"2016-09-01T00:00:00-07:00","rate":0.24020385,"qty":959.87457400,"cost":230.565568559320000000},{"seriesId":1,"fromDateTime":"2016-09-01T00:00:00-07:00","toDateTime":"2016-10-01T00:00:00-07:00","rate":0.24612381,"qty":975.49136400,"cost":240.09165094152000000},{"seriesId":1,"fromDateTime":"2016-10-01T00:00:00-07:00","toDateTime":"2016-11-01T00:00:00-07:00","rate":0.21629228,"qty":972.09934100,"cost":210.257584205380000000},{"seriesId":1,"fromDateTime":"2016-11-01T00:00:00-07:00","toDateTime":"2016-12-01T00:00:00-08:00","rate":0.25581420,"qty":947.20931300000000,"cost":242.309588608339996951500000000000},{"seriesId":1,"fromDateTime":"2016-12-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","rate":0.25901907,"qty":1008.61228200000000,"cost":261.249818558759996951500000000000},{"seriesId":2,"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2016-02-01T00:00:00-08:00","rate":0.15570349,"qty":200.05236300,"cost":31.1488501716900000},{"seriesId":2,"fromDateTime":"2016-02-01T00:00:00-08:00","toDateTime":"2016-03-01T00:00:00-08:00","rate":0.15582857,"qty":181.70739400,"cost":28.3152028381200000},{"seriesId":2,"fromDateTime":"2016-03-01T00:00:00-08:00","toDateTime":"2016-04-01T00:00:00-07:00","rate":0.15649141,"qty":191.79237000,"cost":30.013858075729461258000000},{"seriesId":2,"fromDateTime":"2016-04-01T00:00:00-07:00","toDateTime":"2016-05-01T00:00:00-07:00","rate":0.00141320,"qty":181.69065800,"cost":0.2567648856200000},{"seriesId":2,"fromDateTime":"2016-05-01T00:00:00-07:00","toDateTime":"2016-06-01T00:00:00-07:00","rate":0.20088090,"qty":183.99910400,"cost":36.9619058729900000},{"seriesId":2,"fromDateTime":"2016-06-01T00:00:00-07:00","toDateTime":"2016-07-01T00:00:00-07:00","rate":0.20574214,"qty":186.44948000,"cost":38.3605148098800000},{"seriesId":2,"fromDateTime":"2016-07-01T00:00:00-07:00","toDateTime":"2016-08-01T00:00:00-07:00","rate":0.20045406,"qty":184.91535600,"cost":37.0670342671500000},{"seriesId":2,"fromDateTime":"2016-08-01T00:00:00-07:00","toDateTime":"2016-09-01T00:00:00-07:00","rate":0.20720836,"qty":191.97381700,"cost":39.7785796333100000},{"seriesId":2,"fromDateTime":"2016-09-01T00:00:00-07:00","toDateTime":"2016-10-01T00:00:00-07:00","rate":0.20745856,"qty":195.09709300,"cost":40.4745629130800000},{"seriesId":2,"fromDateTime":"2016-10-01T00:00:00-07:00","toDateTime":"2016-11-01T00:00:00-07:00","rate":0.07612911,"qty":194.41882900,"cost":14.8009317884500000},{"seriesId":2,"fromDateTime":"2016-11-01T00:00:00-07:00","toDateTime":"2016-12-01T00:00:00-08:00","rate":0.15638302,"qty":189.44072300,"cost":29.6253125634200000},{"seriesId":2,"fromDateTime":"2016-12-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","rate":0.15642966,"qty":201.72134100,"cost":31.5552002930400000},{"seriesId":3,"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2016-02-01T00:00:00-08:00","rate":0.124966,"qty":800.21498700,"cost":100.0},{"seriesId":3,"fromDateTime":"2016-02-01T00:00:00-08:00","toDateTime":"2016-03-01T00:00:00-08:00","rate":0.137583,"qty":726.83505100,"cost":100.0},{"seriesId":3,"fromDateTime":"2016-03-01T00:00:00-08:00","toDateTime":"2016-04-01T00:00:00-07:00","rate":0.130348,"qty":767.17522600,"cost":100.0},{"seriesId":3,"fromDateTime":"2016-04-01T00:00:00-07:00","toDateTime":"2016-05-01T00:00:00-07:00","rate":0.137595,"qty":726.76807900,"cost":100.0},{"seriesId":3,"fromDateTime":"2016-05-01T00:00:00-07:00","toDateTime":"2016-06-01T00:00:00-07:00","rate":0.135869,"qty":736.00212600,"cost":100.0},{"seriesId":3,"fromDateTime":"2016-06-01T00:00:00-07:00","toDateTime":"2016-07-01T00:00:00-07:00","rate":0.134084,"qty":745.80360500,"cost":100.0},{"seriesId":3,"fromDateTime":"2016-07-01T00:00:00-07:00","toDateTime":"2016-08-01T00:00:00-07:00","rate":0.135196,"qty":739.66683100,"cost":100.0},{"seriesId":3,"fromDateTime":"2016-08-01T00:00:00-07:00","toDateTime":"2016-09-01T00:00:00-07:00","rate":0.130225,"qty":767.90075700,"cost":100.0},{"seriesId":3,"fromDateTime":"2016-09-01T00:00:00-07:00","toDateTime":"2016-10-01T00:00:00-07:00","rate":0.128140,"qty":780.39427100,"cost":100.0},{"seriesId":3,"fromDateTime":"2016-10-01T00:00:00-07:00","toDateTime":"2016-11-01T00:00:00-07:00","rate":0.128588,"qty":777.68051200,"cost":100.0},{"seriesId":3,"fromDateTime":"2016-11-01T00:00:00-07:00","toDateTime":"2016-12-01T00:00:00-08:00","rate":0.131966,"qty":757.76859000,"cost":100.0},{"seriesId":3,"fromDateTime":"2016-12-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","rate":0.123932,"qty":806.89094100,"cost":100.0},{"seriesId":4,"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2016-02-01T00:00:00-08:00","rate":0.148698,"qty":800.21498700,"cost":118.990304645809997078500000000000},{"seriesId":4,"fromDateTime":"2016-02-01T00:00:00-08:00","toDateTime":"2016-03-01T00:00:00-08:00","rate":0.132347,"qty":726.83505100,"cost":96.194739289129988478300000000000},{"seriesId":4,"fromDateTime":"2016-03-01T00:00:00-08:00","toDateTime":"2016-04-01T00:00:00-07:00","rate":0.144726,"qty":767.17522600,"cost":111.030247993930523355000000000000},{"seriesId":4,"fromDateTime":"2016-04-01T00:00:00-07:00","toDateTime":"2016-05-01T00:00:00-07:00","rate":0.137321,"qty":726.76807900,"cost":99.800638955039996951500000000000},{"seriesId":4,"fromDateTime":"2016-05-01T00:00:00-07:00","toDateTime":"2016-06-01T00:00:00-07:00","rate":0.107449,"qty":736.00212600,"cost":79.082588268410000000},{"seriesId":4,"fromDateTime":"2016-06-01T00:00:00-07:00","toDateTime":"2016-07-01T00:00:00-07:00","rate":0.115291,"qty":745.80360500,"cost":85.98461968542000000},{"seriesId":4,"fromDateTime":"2016-07-01T00:00:00-07:00","toDateTime":"2016-08-01T00:00:00-07:00","rate":0.109030,"qty":739.66683100,"cost":80.645752794510000000},{"seriesId":4,"fromDateTime":"2016-08-01T00:00:00-07:00","toDateTime":"2016-09-01T00:00:00-07:00","rate":0.118228,"qty":767.90075700,"cost":90.786988926010000000},{"seriesId":4,"fromDateTime":"2016-09-01T00:00:00-07:00","toDateTime":"2016-10-01T00:00:00-07:00","rate":0.127650,"qty":780.39427100,"cost":99.61708802844000000},{"seriesId":4,"fromDateTime":"2016-10-01T00:00:00-07:00","toDateTime":"2016-11-01T00:00:00-07:00","rate":0.122745,"qty":777.68051200,"cost":95.456652416930000000},{"seriesId":4,"fromDateTime":"2016-11-01T00:00:00-07:00","toDateTime":"2016-12-01T00:00:00-08:00","rate":0.148705,"qty":757.76859000,"cost":112.684276044919996951500000000000},{"seriesId":4,"fromDateTime":"2016-12-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","rate":0.160734,"qty":806.89094100,"cost":129.694618265719996951500000000000},{"seriesId":5,"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","rate":0.24161181,"qty":11416.35950400000000,"cost":2758.330000},{"seriesId":5,"fromDateTime":"2017-01-01T00:00:00-08:00","toDateTime":"2018-01-01T00:00:00-08:00","rate":0.24161181,"qty":11416.35950400000000,"cost":2758.330000},{"seriesId":5,"fromDateTime":"2018-01-01T00:00:00-08:00","toDateTime":"2019-01-01T00:00:00-08:00","rate":0.24161181,"qty":11416.35950400000000,"cost":2758.330000},{"seriesId":5,"fromDateTime":"2019-01-01T00:00:00-08:00","toDateTime":"2020-01-01T00:00:00-08:00","rate":0.24161181,"qty":11416.35950400000000,"cost":2758.330000},{"seriesId":5,"fromDateTime":"2020-01-01T00:00:00-08:00","toDateTime":"2021-01-01T00:00:00-08:00","rate":0.24161181,"qty":11416.35950400000000,"cost":2758.330000},{"seriesId":5,"fromDateTime":"2021-01-01T00:00:00-08:00","toDateTime":"2022-01-01T00:00:00-08:00","rate":0.24161181,"qty":11416.35950400000000,"cost":2758.330000},{"seriesId":5,"fromDateTime":"2022-01-01T00:00:00-08:00","toDateTime":"2023-01-01T00:00:00-08:00","rate":0.24161181,"qty":11416.35950400000000,"cost":2758.330000},{"seriesId":5,"fromDateTime":"2023-01-01T00:00:00-08:00","toDateTime":"2024-01-01T00:00:00-08:00","rate":0.24161181,"qty":11416.35950400000000,"cost":2758.330000},{"seriesId":5,"fromDateTime":"2024-01-01T00:00:00-08:00","toDateTime":"2025-01-01T00:00:00-08:00","rate":0.24161181,"qty":11416.35950400000000,"cost":2758.330000},{"seriesId":5,"fromDateTime":"2025-01-01T00:00:00-08:00","toDateTime":"2026-01-01T00:00:00-08:00","rate":0.24161181,"qty":11416.35950400000000,"cost":2758.330000},{"seriesId":5,"fromDateTime":"2026-01-01T00:00:00-08:00","toDateTime":"2027-01-01T00:00:00-08:00","rate":0.24161181,"qty":11416.35950400000000,"cost":2758.330000},{"seriesId":5,"fromDateTime":"2027-01-01T00:00:00-08:00","toDateTime":"2028-01-01T00:00:00-08:00","rate":0.24161181,"qty":11416.35950400000000,"cost":2758.330000},{"seriesId":5,"fromDateTime":"2028-01-01T00:00:00-08:00","toDateTime":"2029-01-01T00:00:00-08:00","rate":0.24161181,"qty":11416.35950400000000,"cost":2758.330000},{"seriesId":5,"fromDateTime":"2029-01-01T00:00:00-08:00","toDateTime":"2030-01-01T00:00:00-08:00","rate":0.24161181,"qty":11416.35950400000000,"cost":2758.330000},{"seriesId":5,"fromDateTime":"2030-01-01T00:00:00-08:00","toDateTime":"2031-01-01T00:00:00-08:00","rate":0.24161181,"qty":11416.35950400000000,"cost":2758.330000},{"seriesId":5,"fromDateTime":"2031-01-01T00:00:00-08:00","toDateTime":"2032-01-01T00:00:00-08:00","rate":0.24161181,"qty":11416.35950400000000,"cost":2758.330000},{"seriesId":5,"fromDateTime":"2032-01-01T00:00:00-08:00","toDateTime":"2033-01-01T00:00:00-08:00","rate":0.24161181,"qty":11416.35950400000000,"cost":2758.330000},{"seriesId":5,"fromDateTime":"2033-01-01T00:00:00-08:00","toDateTime":"2034-01-01T00:00:00-08:00","rate":0.24161181,"qty":11416.35950400000000,"cost":2758.330000},{"seriesId":5,"fromDateTime":"2034-01-01T00:00:00-08:00","toDateTime":"2035-01-01T00:00:00-08:00","rate":0.24161181,"qty":11416.35950400000000,"cost":2758.330000},{"seriesId":5,"fromDateTime":"2035-01-01T00:00:00-08:00","toDateTime":"2036-01-01T00:00:00-08:00","rate":0.24161181,"qty":11416.35950400000000,"cost":2758.330000},{"seriesId":6,"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","rate":0.15695050,"qty":2283.25950400000000,"cost":358.358718},{"seriesId":6,"fromDateTime":"2017-01-01T00:00:00-08:00","toDateTime":"2018-01-01T00:00:00-08:00","rate":0.15740494,"qty":2328.92950400000000,"cost":366.585000},{"seriesId":6,"fromDateTime":"2018-01-01T00:00:00-08:00","toDateTime":"2019-01-01T00:00:00-08:00","rate":0.15783980,"qty":2374.36950400000000,"cost":374.770000},{"seriesId":6,"fromDateTime":"2019-01-01T00:00:00-08:00","toDateTime":"2020-01-01T00:00:00-08:00","rate":0.15825601,"qty":2419.57950400000000,"cost":382.913000},{"seriesId":6,"fromDateTime":"2020-01-01T00:00:00-08:00","toDateTime":"2021-01-01T00:00:00-08:00","rate":0.15865513,"qty":2464.55950400000000,"cost":391.015000},{"seriesId":6,"fromDateTime":"2021-01-01T00:00:00-08:00","toDateTime":"2022-01-01T00:00:00-08:00","rate":0.15903794,"qty":2509.31950400000000,"cost":399.077000},{"seriesId":6,"fromDateTime":"2022-01-01T00:00:00-08:00","toDateTime":"2023-01-01T00:00:00-08:00","rate":0.15940540,"qty":2553.85950400000000,"cost":407.099000},{"seriesId":6,"fromDateTime":"2023-01-01T00:00:00-08:00","toDateTime":"2024-01-01T00:00:00-08:00","rate":0.15975863,"qty":2598.16950400000000,"cost":415.080000},{"seriesId":6,"fromDateTime":"2024-01-01T00:00:00-08:00","toDateTime":"2025-01-01T00:00:00-08:00","rate":0.16009858,"qty":2642.25950400000000,"cost":423.022000},{"seriesId":6,"fromDateTime":"2025-01-01T00:00:00-08:00","toDateTime":"2026-01-01T00:00:00-08:00","rate":0.16042562,"qty":2686.12950400000000,"cost":430.924000},{"seriesId":6,"fromDateTime":"2026-01-01T00:00:00-08:00","toDateTime":"2027-01-01T00:00:00-08:00","rate":0.16074046,"qty":2729.77950400000000,"cost":438.786000},{"seriesId":6,"fromDateTime":"2027-01-01T00:00:00-08:00","toDateTime":"2028-01-01T00:00:00-08:00","rate":0.16104373,"qty":2773.20950400000000,"cost":446.608000},{"seriesId":6,"fromDateTime":"2028-01-01T00:00:00-08:00","toDateTime":"2029-01-01T00:00:00-08:00","rate":0.16133654,"qty":2816.42950400000000,"cost":454.393000},{"seriesId":6,"fromDateTime":"2029-01-01T00:00:00-08:00","toDateTime":"2030-01-01T00:00:00-08:00","rate":0.16161895,"qty":2859.42950400000000,"cost":462.138000},{"seriesId":6,"fromDateTime":"2030-01-01T00:00:00-08:00","toDateTime":"2031-01-01T00:00:00-08:00","rate":0.16189183,"qty":2902.20950400000000,"cost":469.844000},{"seriesId":6,"fromDateTime":"2031-01-01T00:00:00-08:00","toDateTime":"2032-01-01T00:00:00-08:00","rate":0.16215509,"qty":2944.77950400000000,"cost":477.511000},{"seriesId":6,"fromDateTime":"2032-01-01T00:00:00-08:00","toDateTime":"2033-01-01T00:00:00-08:00","rate":0.16240989,"qty":2987.13950400000000,"cost":485.141000},{"seriesId":6,"fromDateTime":"2033-01-01T00:00:00-08:00","toDateTime":"2034-01-01T00:00:00-08:00","rate":0.16265629,"qty":3029.28950400000000,"cost":492.733000},{"seriesId":6,"fromDateTime":"2034-01-01T00:00:00-08:00","toDateTime":"2035-01-01T00:00:00-08:00","rate":0.16289470,"qty":3071.22950400000000,"cost":500.287000},{"seriesId":6,"fromDateTime":"2035-01-01T00:00:00-08:00","toDateTime":"2036-01-01T00:00:00-08:00","rate":0.16312580,"qty":3112.95950400000000,"cost":507.804000},{"seriesId":7,"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","rate":0.131390,"qty":9133.10,"cost":1200.0},{"seriesId":7,"fromDateTime":"2017-01-01T00:00:00-08:00","toDateTime":"2018-01-01T00:00:00-08:00","rate":0.132051,"qty":9087.43,"cost":1200.0},{"seriesId":7,"fromDateTime":"2018-01-01T00:00:00-08:00","toDateTime":"2019-01-01T00:00:00-08:00","rate":0.132714,"qty":9041.99,"cost":1200.0},{"seriesId":7,"fromDateTime":"2019-01-01T00:00:00-08:00","toDateTime":"2020-01-01T00:00:00-08:00","rate":0.133381,"qty":8996.78,"cost":1200.0},{"seriesId":7,"fromDateTime":"2020-01-01T00:00:00-08:00","toDateTime":"2021-01-01T00:00:00-08:00","rate":0.134051,"qty":8951.80,"cost":1200.0},{"seriesId":7,"fromDateTime":"2021-01-01T00:00:00-08:00","toDateTime":"2022-01-01T00:00:00-08:00","rate":0.134725,"qty":8907.04,"cost":1200.0},{"seriesId":7,"fromDateTime":"2022-01-01T00:00:00-08:00","toDateTime":"2023-01-01T00:00:00-08:00","rate":0.135402,"qty":8862.50,"cost":1200.0},{"seriesId":7,"fromDateTime":"2023-01-01T00:00:00-08:00","toDateTime":"2024-01-01T00:00:00-08:00","rate":0.136082,"qty":8818.19,"cost":1200.0},{"seriesId":7,"fromDateTime":"2024-01-01T00:00:00-08:00","toDateTime":"2025-01-01T00:00:00-08:00","rate":0.136766,"qty":8774.10,"cost":1200.0},{"seriesId":7,"fromDateTime":"2025-01-01T00:00:00-08:00","toDateTime":"2026-01-01T00:00:00-08:00","rate":0.137453,"qty":8730.23,"cost":1200.0},{"seriesId":7,"fromDateTime":"2026-01-01T00:00:00-08:00","toDateTime":"2027-01-01T00:00:00-08:00","rate":0.138144,"qty":8686.58,"cost":1200.0},{"seriesId":7,"fromDateTime":"2027-01-01T00:00:00-08:00","toDateTime":"2028-01-01T00:00:00-08:00","rate":0.138838,"qty":8643.15,"cost":1200.0},{"seriesId":7,"fromDateTime":"2028-01-01T00:00:00-08:00","toDateTime":"2029-01-01T00:00:00-08:00","rate":0.139536,"qty":8599.93,"cost":1200.0},{"seriesId":7,"fromDateTime":"2029-01-01T00:00:00-08:00","toDateTime":"2030-01-01T00:00:00-08:00","rate":0.140237,"qty":8556.93,"cost":1200.0},{"seriesId":7,"fromDateTime":"2030-01-01T00:00:00-08:00","toDateTime":"2031-01-01T00:00:00-08:00","rate":0.140942,"qty":8514.15,"cost":1200.0},{"seriesId":7,"fromDateTime":"2031-01-01T00:00:00-08:00","toDateTime":"2032-01-01T00:00:00-08:00","rate":0.141650,"qty":8471.58,"cost":1200.0},{"seriesId":7,"fromDateTime":"2032-01-01T00:00:00-08:00","toDateTime":"2033-01-01T00:00:00-08:00","rate":0.142362,"qty":8429.22,"cost":1200.0},{"seriesId":7,"fromDateTime":"2033-01-01T00:00:00-08:00","toDateTime":"2034-01-01T00:00:00-08:00","rate":0.143077,"qty":8387.07,"cost":1200.0},{"seriesId":7,"fromDateTime":"2034-01-01T00:00:00-08:00","toDateTime":"2035-01-01T00:00:00-08:00","rate":0.143796,"qty":8345.13,"cost":1200.0},{"seriesId":7,"fromDateTime":"2035-01-01T00:00:00-08:00","toDateTime":"2036-01-01T00:00:00-08:00","rate":0.144519,"qty":8303.40,"cost":1200.0},{"seriesId":8,"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","rate":0.131387,"qty":9133.10,"cost":1199.971282},{"seriesId":8,"fromDateTime":"2017-01-01T00:00:00-08:00","toDateTime":"2018-01-01T00:00:00-08:00","rate":0.131142,"qty":9087.43,"cost":1191.745000},{"seriesId":8,"fromDateTime":"2018-01-01T00:00:00-08:00","toDateTime":"2019-01-01T00:00:00-08:00","rate":0.130896,"qty":9041.99,"cost":1183.560000},{"seriesId":8,"fromDateTime":"2019-01-01T00:00:00-08:00","toDateTime":"2020-01-01T00:00:00-08:00","rate":0.130649,"qty":8996.78,"cost":1175.417000},{"seriesId":8,"fromDateTime":"2020-01-01T00:00:00-08:00","toDateTime":"2021-01-01T00:00:00-08:00","rate":0.130400,"qty":8951.80,"cost":1167.315000},{"seriesId":8,"fromDateTime":"2021-01-01T00:00:00-08:00","toDateTime":"2022-01-01T00:00:00-08:00","rate":0.130150,"qty":8907.04,"cost":1159.253000},{"seriesId":8,"fromDateTime":"2022-01-01T00:00:00-08:00","toDateTime":"2023-01-01T00:00:00-08:00","rate":0.129899,"qty":8862.50,"cost":1151.231000},{"seriesId":8,"fromDateTime":"2023-01-01T00:00:00-08:00","toDateTime":"2024-01-01T00:00:00-08:00","rate":0.129647,"qty":8818.19,"cost":1143.250000},{"seriesId":8,"fromDateTime":"2024-01-01T00:00:00-08:00","toDateTime":"2025-01-01T00:00:00-08:00","rate":0.129393,"qty":8774.10,"cost":1135.308000},{"seriesId":8,"fromDateTime":"2025-01-01T00:00:00-08:00","toDateTime":"2026-01-01T00:00:00-08:00","rate":0.129138,"qty":8730.23,"cost":1127.406000},{"seriesId":8,"fromDateTime":"2026-01-01T00:00:00-08:00","toDateTime":"2027-01-01T00:00:00-08:00","rate":0.128882,"qty":8686.58,"cost":1119.544000},{"seriesId":8,"fromDateTime":"2027-01-01T00:00:00-08:00","toDateTime":"2028-01-01T00:00:00-08:00","rate":0.128625,"qty":8643.15,"cost":1111.722000},{"seriesId":8,"fromDateTime":"2028-01-01T00:00:00-08:00","toDateTime":"2029-01-01T00:00:00-08:00","rate":0.128366,"qty":8599.93,"cost":1103.937000},{"seriesId":8,"fromDateTime":"2029-01-01T00:00:00-08:00","toDateTime":"2030-01-01T00:00:00-08:00","rate":0.128106,"qty":8556.93,"cost":1096.192000},{"seriesId":8,"fromDateTime":"2030-01-01T00:00:00-08:00","toDateTime":"2031-01-01T00:00:00-08:00","rate":0.127844,"qty":8514.15,"cost":1088.486000},{"seriesId":8,"fromDateTime":"2031-01-01T00:00:00-08:00","toDateTime":"2032-01-01T00:00:00-08:00","rate":0.127582,"qty":8471.58,"cost":1080.819000},{"seriesId":8,"fromDateTime":"2032-01-01T00:00:00-08:00","toDateTime":"2033-01-01T00:00:00-08:00","rate":0.127318,"qty":8429.22,"cost":1073.189000},{"seriesId":8,"fromDateTime":"2033-01-01T00:00:00-08:00","toDateTime":"2034-01-01T00:00:00-08:00","rate":0.127052,"qty":8387.07,"cost":1065.597000},{"seriesId":8,"fromDateTime":"2034-01-01T00:00:00-08:00","toDateTime":"2035-01-01T00:00:00-08:00","rate":0.126786,"qty":8345.13,"cost":1058.043000},{"seriesId":8,"fromDateTime":"2035-01-01T00:00:00-08:00","toDateTime":"2036-01-01T00:00:00-08:00","rate":0.126518,"qty":8303.40,"cost":1050.526000},{"seriesId":9,"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2036-01-01T00:00:00-08:00","rate":0.241612,"qty":228327.19008000000000,"cost":55166.600000},{"seriesId":10,"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2036-01-01T00:00:00-08:00","rate":0.160558,"qty":54086.89008000000000,"cost":8684.088718},{"seriesId":11,"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2036-01-01T00:00:00-08:00","rate":0.137741,"qty":174240.30,"cost":24000.0},{"seriesId":12,"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2036-01-01T00:00:00-08:00","rate":0,"qty":0,"cost":22482.511282}],"seriesCosts":{"1":{"masterTariffId":522,"tariffName":"Residential","totalCost":2758.33000000,"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","currency":"USD","summary":{"ELECTRICITY":{"kWh":11416.36,"kW":4.17},"subTotalCost":2758.33,"taxCost":0.00,"totalCost":2758.33,"adjustedTotalCost":2758.33,"kWh":11416.36,"kW":3.33},"accuracy":1.00000000,"items":[{"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2016-02-01T00:00:00-08:00","quantityKey":"fixed","rateAmount":0.00000000,"itemQuantity":0.00000000,"cost":0.00000000,"chargeType":"FIXED_PRICE"},{"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2016-02-01T00:00:00-08:00","quantityKey":"consumption","rateAmount":0.18180000,"tierLowerLimit":0.00000000,"tierUpperLimit":381.30000000,"itemQuantity":381.30000000,"cost":69.32034000,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2016-02-01T00:00:00-08:00","quantityKey":"consumption","rateAmount":0.21575000,"tierLowerLimit":381.30000000,"tierUpperLimit":495.69000000,"itemQuantity":114.39000000,"cost":24.67964250,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2016-02-01T00:00:00-08:00","quantityKey":"consumption","rateAmount":0.27418000,"tierLowerLimit":495.69000000,"tierUpperLimit":762.60000000,"itemQuantity":266.91000000,"cost":73.18138380,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2016-02-01T00:00:00-08:00","quantityKey":"consumption","rateAmount":0.34905000,"tierLowerLimit":762.60000000,"tierUpperLimit":1000.26735000,"itemQuantity":237.66735000,"cost":82.95778852,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2016-02-01T00:00:00-08:00","quantityKey":"minimum","rateAmount":0.32854000,"itemQuantity":31.00000000,"cost":10.18474000,"chargeType":"MINIMUM"},{"fromDateTime":"2016-02-01T00:00:00-08:00","toDateTime":"2016-03-01T00:00:00-08:00","quantityKey":"fixed","rateAmount":0.00000000,"itemQuantity":0.00000000,"cost":0.00000000,"chargeType":"FIXED_PRICE"},{"fromDateTime":"2016-02-01T00:00:00-08:00","toDateTime":"2016-03-01T00:00:00-08:00","quantityKey":"consumption","rateAmount":0.18180000,"tierLowerLimit":0.00000000,"tierUpperLimit":356.70000000,"itemQuantity":356.70000000,"cost":64.84806000,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-02-01T00:00:00-08:00","toDateTime":"2016-03-01T00:00:00-08:00","quantityKey":"consumption","rateAmount":0.21575000,"tierLowerLimit":356.70000000,"tierUpperLimit":463.71000000,"itemQuantity":107.01000000,"cost":23.08740750,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-02-01T00:00:00-08:00","toDateTime":"2016-03-01T00:00:00-08:00","quantityKey":"consumption","rateAmount":0.27418000,"tierLowerLimit":463.71000000,"tierUpperLimit":713.40000000,"itemQuantity":249.69000000,"cost":68.46000420,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-02-01T00:00:00-08:00","toDateTime":"2016-03-01T00:00:00-08:00","quantityKey":"consumption","rateAmount":0.34905000,"tierLowerLimit":713.40000000,"tierUpperLimit":908.54244500,"itemQuantity":195.14244500,"cost":68.11447043,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-02-01T00:00:00-08:00","toDateTime":"2016-03-01T00:00:00-08:00","quantityKey":"minimum","rateAmount":0.32854000,"itemQuantity":29.00000000,"cost":9.52766000,"chargeType":"MINIMUM"},{"fromDateTime":"2016-03-01T00:00:00-08:00","toDateTime":"2016-04-01T00:00:00-07:00","quantityKey":"fixed","rateAmount":0.00000000,"itemQuantity":0.00000000,"cost":0.00000000,"chargeType":"FIXED_PRICE"},{"fromDateTime":"2016-03-01T00:00:00-08:00","toDateTime":"2016-04-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.18170434,"tierLowerLimit":0.00000000,"tierUpperLimit":381.30000000,"itemQuantity":381.30000000,"cost":69.28386382,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-03-01T00:00:00-08:00","toDateTime":"2016-04-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.24637789,"tierLowerLimit":381.30000000,"tierUpperLimit":495.69000000,"itemQuantity":114.39000000,"cost":28.18316635,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-03-01T00:00:00-08:00","toDateTime":"2016-04-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.26211208,"tierLowerLimit":495.69000000,"tierUpperLimit":762.60000000,"itemQuantity":266.91000000,"cost":69.96033507,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-03-01T00:00:00-08:00","toDateTime":"2016-04-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.37489251,"tierLowerLimit":762.60000000,"tierUpperLimit":958.96759600,"itemQuantity":196.36759600,"cost":73.61674083,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-03-01T00:00:00-08:00","toDateTime":"2016-04-01T00:00:00-07:00","quantityKey":"minimum","rateAmount":0.32854000,"itemQuantity":31.00000000,"cost":10.18474000,"chargeType":"MINIMUM"},{"fromDateTime":"2016-04-01T00:00:00-07:00","toDateTime":"2016-05-01T00:00:00-07:00","quantityKey":"fixed","rateAmount":-28.14000000,"itemQuantity":1.00000000,"cost":-28.14000000,"chargeType":"FIXED_PRICE"},{"fromDateTime":"2016-04-01T00:00:00-07:00","toDateTime":"2016-05-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.18241000,"tierLowerLimit":0.00000000,"tierUpperLimit":369.00000000,"itemQuantity":369.00000000,"cost":67.30929000,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-04-01T00:00:00-07:00","toDateTime":"2016-05-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.22510000,"tierLowerLimit":369.00000000,"tierUpperLimit":479.70000000,"itemQuantity":110.70000000,"cost":24.91857000,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-04-01T00:00:00-07:00","toDateTime":"2016-05-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.28607000,"tierLowerLimit":479.70000000,"tierUpperLimit":738.00000000,"itemQuantity":258.30000000,"cost":73.89188100,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-04-01T00:00:00-07:00","toDateTime":"2016-05-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.36418000,"tierLowerLimit":738.00000000,"tierUpperLimit":908.45873700,"itemQuantity":170.45873700,"cost":62.07766284,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-04-01T00:00:00-07:00","toDateTime":"2016-05-01T00:00:00-07:00","quantityKey":"minimum","rateAmount":0.32854000,"itemQuantity":30.00000000,"cost":9.85620000,"chargeType":"MINIMUM"},{"fromDateTime":"2016-05-01T00:00:00-07:00","toDateTime":"2016-06-01T00:00:00-07:00","quantityKey":"fixed","rateAmount":0.00000000,"itemQuantity":0.00000000,"cost":0.00000000,"chargeType":"FIXED_PRICE"},{"fromDateTime":"2016-05-01T00:00:00-07:00","toDateTime":"2016-06-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.18241000,"tierLowerLimit":0.00000000,"tierUpperLimit":427.80000000,"itemQuantity":427.80000000,"cost":78.03499800,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-05-01T00:00:00-07:00","toDateTime":"2016-06-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.22510000,"tierLowerLimit":427.80000000,"tierUpperLimit":556.14000000,"itemQuantity":128.34000000,"cost":28.88933400,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-05-01T00:00:00-07:00","toDateTime":"2016-06-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.28607000,"tierLowerLimit":556.14000000,"tierUpperLimit":855.60000000,"itemQuantity":299.46000000,"cost":85.66652220,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-05-01T00:00:00-07:00","toDateTime":"2016-06-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.36418000,"tierLowerLimit":855.60000000,"tierUpperLimit":920.00123000,"itemQuantity":64.40123000,"cost":23.45363994,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-05-01T00:00:00-07:00","toDateTime":"2016-06-01T00:00:00-07:00","quantityKey":"minimum","rateAmount":0.32854000,"itemQuantity":31.00000000,"cost":10.18474000,"chargeType":"MINIMUM"},{"fromDateTime":"2016-06-01T00:00:00-07:00","toDateTime":"2016-07-01T00:00:00-07:00","quantityKey":"fixed","rateAmount":0.00000000,"itemQuantity":0.00000000,"cost":0.00000000,"chargeType":"FIXED_PRICE"},{"fromDateTime":"2016-06-01T00:00:00-07:00","toDateTime":"2016-07-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.18241000,"tierLowerLimit":0.00000000,"tierUpperLimit":414.00000000,"itemQuantity":414.00000000,"cost":75.51774000,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-06-01T00:00:00-07:00","toDateTime":"2016-07-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.22510000,"tierLowerLimit":414.00000000,"tierUpperLimit":538.20000000,"itemQuantity":124.20000000,"cost":27.95742000,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-06-01T00:00:00-07:00","toDateTime":"2016-07-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.28607000,"tierLowerLimit":538.20000000,"tierUpperLimit":828.00000000,"itemQuantity":289.80000000,"cost":82.90308600,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-06-01T00:00:00-07:00","toDateTime":"2016-07-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.36418000,"tierLowerLimit":828.00000000,"tierUpperLimit":932.25308500,"itemQuantity":104.25308500,"cost":37.96688850,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-06-01T00:00:00-07:00","toDateTime":"2016-07-01T00:00:00-07:00","quantityKey":"minimum","rateAmount":0.32854000,"itemQuantity":30.00000000,"cost":9.85620000,"chargeType":"MINIMUM"},{"fromDateTime":"2016-07-01T00:00:00-07:00","toDateTime":"2016-08-01T00:00:00-07:00","quantityKey":"fixed","rateAmount":0.00000000,"itemQuantity":0.00000000,"cost":0.00000000,"chargeType":"FIXED_PRICE"},{"fromDateTime":"2016-07-01T00:00:00-07:00","toDateTime":"2016-08-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.18241000,"tierLowerLimit":0.00000000,"tierUpperLimit":427.80000000,"itemQuantity":427.80000000,"cost":78.03499800,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-07-01T00:00:00-07:00","toDateTime":"2016-08-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.22510000,"tierLowerLimit":427.80000000,"tierUpperLimit":556.14000000,"itemQuantity":128.34000000,"cost":28.88933400,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-07-01T00:00:00-07:00","toDateTime":"2016-08-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.28607000,"tierLowerLimit":556.14000000,"tierUpperLimit":855.60000000,"itemQuantity":299.46000000,"cost":85.66652220,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-07-01T00:00:00-07:00","toDateTime":"2016-08-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.36418000,"tierLowerLimit":855.60000000,"tierUpperLimit":924.58218700,"itemQuantity":68.98218700,"cost":25.12193286,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-07-01T00:00:00-07:00","toDateTime":"2016-08-01T00:00:00-07:00","quantityKey":"minimum","rateAmount":0.32854000,"itemQuantity":31.00000000,"cost":10.18474000,"chargeType":"MINIMUM"},{"fromDateTime":"2016-08-01T00:00:00-07:00","toDateTime":"2016-09-01T00:00:00-07:00","quantityKey":"fixed","rateAmount":0.00000000,"itemQuantity":0.00000000,"cost":0.00000000,"chargeType":"FIXED_PRICE"},{"fromDateTime":"2016-08-01T00:00:00-07:00","toDateTime":"2016-09-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.18241000,"tierLowerLimit":0.00000000,"tierUpperLimit":427.80000000,"itemQuantity":427.80000000,"cost":78.03499800,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-08-01T00:00:00-07:00","toDateTime":"2016-09-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.22510000,"tierLowerLimit":427.80000000,"tierUpperLimit":556.14000000,"itemQuantity":128.34000000,"cost":28.88933400,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-08-01T00:00:00-07:00","toDateTime":"2016-09-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.28607000,"tierLowerLimit":556.14000000,"tierUpperLimit":855.60000000,"itemQuantity":299.46000000,"cost":85.66652220,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-08-01T00:00:00-07:00","toDateTime":"2016-09-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.36418000,"tierLowerLimit":855.60000000,"tierUpperLimit":959.87457400,"itemQuantity":104.27457400,"cost":37.97471436,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-08-01T00:00:00-07:00","toDateTime":"2016-09-01T00:00:00-07:00","quantityKey":"minimum","rateAmount":0.32854000,"itemQuantity":31.00000000,"cost":10.18474000,"chargeType":"MINIMUM"},{"fromDateTime":"2016-09-01T00:00:00-07:00","toDateTime":"2016-10-01T00:00:00-07:00","quantityKey":"fixed","rateAmount":0.00000000,"itemQuantity":0.00000000,"cost":0.00000000,"chargeType":"FIXED_PRICE"},{"fromDateTime":"2016-09-01T00:00:00-07:00","toDateTime":"2016-10-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.18241000,"tierLowerLimit":0.00000000,"tierUpperLimit":414.00000000,"itemQuantity":414.00000000,"cost":75.51774000,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-09-01T00:00:00-07:00","toDateTime":"2016-10-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.22510000,"tierLowerLimit":414.00000000,"tierUpperLimit":538.20000000,"itemQuantity":124.20000000,"cost":27.95742000,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-09-01T00:00:00-07:00","toDateTime":"2016-10-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.28607000,"tierLowerLimit":538.20000000,"tierUpperLimit":828.00000000,"itemQuantity":289.80000000,"cost":82.90308600,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-09-01T00:00:00-07:00","toDateTime":"2016-10-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.36418000,"tierLowerLimit":828.00000000,"tierUpperLimit":975.49136400,"itemQuantity":147.49136400,"cost":53.71340494,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-09-01T00:00:00-07:00","toDateTime":"2016-10-01T00:00:00-07:00","quantityKey":"minimum","rateAmount":0.32854000,"itemQuantity":30.00000000,"cost":9.85620000,"chargeType":"MINIMUM"},{"fromDateTime":"2016-10-01T00:00:00-07:00","toDateTime":"2016-11-01T00:00:00-07:00","quantityKey":"fixed","rateAmount":-24.76000000,"itemQuantity":1.00000000,"cost":-24.76000000,"chargeType":"FIXED_PRICE"},{"fromDateTime":"2016-10-01T00:00:00-07:00","toDateTime":"2016-11-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.18241000,"tierLowerLimit":0.00000000,"tierUpperLimit":427.80000000,"itemQuantity":427.80000000,"cost":78.03499800,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-10-01T00:00:00-07:00","toDateTime":"2016-11-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.22510000,"tierLowerLimit":427.80000000,"tierUpperLimit":556.14000000,"itemQuantity":128.34000000,"cost":28.88933400,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-10-01T00:00:00-07:00","toDateTime":"2016-11-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.28607000,"tierLowerLimit":556.14000000,"tierUpperLimit":855.60000000,"itemQuantity":299.46000000,"cost":85.66652220,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-10-01T00:00:00-07:00","toDateTime":"2016-11-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.36418000,"tierLowerLimit":855.60000000,"tierUpperLimit":972.09934100,"itemQuantity":116.49934100,"cost":42.42673001,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-10-01T00:00:00-07:00","toDateTime":"2016-11-01T00:00:00-07:00","quantityKey":"minimum","rateAmount":0.32854000,"itemQuantity":31.00000000,"cost":10.18474000,"chargeType":"MINIMUM"},{"fromDateTime":"2016-11-01T00:00:00-07:00","toDateTime":"2016-12-01T00:00:00-08:00","quantityKey":"fixed","rateAmount":0.00000000,"itemQuantity":0.00000000,"cost":0.00000000,"chargeType":"FIXED_PRICE"},{"fromDateTime":"2016-11-01T00:00:00-07:00","toDateTime":"2016-12-01T00:00:00-08:00","quantityKey":"consumption","rateAmount":0.18241000,"tierLowerLimit":0.00000000,"tierUpperLimit":369.00000000,"itemQuantity":369.00000000,"cost":67.30929000,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-11-01T00:00:00-07:00","toDateTime":"2016-12-01T00:00:00-08:00","quantityKey":"consumption","rateAmount":0.22510000,"tierLowerLimit":369.00000000,"tierUpperLimit":479.70000000,"itemQuantity":110.70000000,"cost":24.91857000,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-11-01T00:00:00-07:00","toDateTime":"2016-12-01T00:00:00-08:00","quantityKey":"consumption","rateAmount":0.28607000,"tierLowerLimit":479.70000000,"tierUpperLimit":738.00000000,"itemQuantity":258.30000000,"cost":73.89188100,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-11-01T00:00:00-07:00","toDateTime":"2016-12-01T00:00:00-08:00","quantityKey":"consumption","rateAmount":0.36418000,"tierLowerLimit":738.00000000,"tierUpperLimit":947.20931300,"itemQuantity":209.20931300,"cost":76.18984761,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-11-01T00:00:00-07:00","toDateTime":"2016-12-01T00:00:00-08:00","quantityKey":"minimum","rateAmount":0.32854000,"itemQuantity":30.00000000,"cost":9.85620000,"chargeType":"MINIMUM"},{"fromDateTime":"2016-12-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","quantityKey":"fixed","rateAmount":0.00000000,"itemQuantity":0.00000000,"cost":0.00000000,"chargeType":"FIXED_PRICE"},{"fromDateTime":"2016-12-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","quantityKey":"consumption","rateAmount":0.18241000,"tierLowerLimit":0.00000000,"tierUpperLimit":381.30000000,"itemQuantity":381.30000000,"cost":69.55293300,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-12-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","quantityKey":"consumption","rateAmount":0.22510000,"tierLowerLimit":381.30000000,"tierUpperLimit":495.69000000,"itemQuantity":114.39000000,"cost":25.74918900,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-12-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","quantityKey":"consumption","rateAmount":0.28607000,"tierLowerLimit":495.69000000,"tierUpperLimit":762.60000000,"itemQuantity":266.91000000,"cost":76.35494370,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-12-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","quantityKey":"consumption","rateAmount":0.36418000,"tierLowerLimit":762.60000000,"tierUpperLimit":1008.61228200,"itemQuantity":246.01228200,"cost":89.59275286,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-12-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","quantityKey":"minimum","rateAmount":0.32854000,"itemQuantity":31.00000000,"cost":10.18474000,"chargeType":"MINIMUM"}],"assumptions":[{"keyName":"intelligentBaselining","dataType":"BOOLEAN","dataValue":"true"},{"keyName":"typicalBaseline","dataType":"STRING","dataValue":"5462916ef81548bdd70a3d24"},{"keyName":"usageExtrapolated","dataType":"BOOLEAN","dataValue":"true","accuracy":78},{"keyName":"territoryId","dataType":"INTEGER","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"3534","accuracy":80},{"keyName":"usageInterpolated","dataType":"BOOLEAN","dataValue":"true","accuracy":80},{"keyName":"dailyMedicalAllowance","displayName":"Daily + Medical Allowance ","description":"Residential customers on a medical allowance + get additional quantities of energy at the lowest (baseline) price. The medical + allowance is a daily value. ","dataType":"DECIMAL","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"0","accuracy":80},{"keyName":"hasCAEnergySurchargeExemption","displayName":"Has + Energy Surcharge Exemption","description":"Exemptions for CA Energy Surcharge + apply to the following:\r\n1. Federal Agencies\r\n2. American National Red + Cross facilities\r\n3. Energy consumed on Indian reservations\r\n4. Foreign + consular employees\r\n5. Federal Credit Unions","dataType":"BOOLEAN","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"false","accuracy":80},{"keyName":"smartMeterOptOut","displayName":"Has + Smart Meter Opt-Out","description":"Customers who elect to opt-out of receiving + a smart meter and choose to retain a non-smart meter, are subject to the Smart + Meter Opt-Out fees.\r\n\r\nSmart Meter Opt-Out Customers are subject to one-time, + up-front fee and a recurring monthly fee ","dataType":"BOOLEAN","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"false","accuracy":80},{"keyName":"isSmartRateCustomer","displayName":"Is + SmartRate Customer","description":"The residential SmartRate program is a + voluntary rate supplement to the customer''s \r\notherwise applicable rate + schedule (OAS).\r\nThe customer will be billed for all regular charges applicable + under the customer''s OAS. \r\nAdditional charges (based on usage during + SmartDay High-Price Periods) and \r\nSmartRate credits will be determined + according to the rates specified in this schedule. The customer must have + a SmartMeter system to participate in the residential \r\nSmartRate program","dataType":"BOOLEAN","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"false","accuracy":80},{"keyName":"utilityEmployee","displayName":"Is + Utility Employee","description":"Applicable to domestic service utility employees + ","dataType":"BOOLEAN","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"false","accuracy":80},{"keyName":"powerChargeIndifferenceAdjustmentVintageYear","displayName":"Power + Charge Indifference Adjustment Vintage Year ","description":"The adjustment + (either a \r\ncharge or credit) is intended to ensure that customers that + purchase electricity from \r\nnon-utility suppliers pay their share of cost + for generation acquired prior to 2003","dataType":"STRING","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"None","accuracy":80},{"keyName":"solarChoiceCustomerCategory","displayName":"Solar + Choice Customer Category","description":"The customer is a solar choice customer taking + service under Schedule E-GT. The customer will pay the applicable Program + Charge based on the year service under this schedule was started. ","dataType":"STRING","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"None","accuracy":80},{"keyName":"tariffId","dataType":"INTEGER","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2016-03-01T00:00:00-08:00","dataValue":"3243470","accuracy":100},{"keyName":"tariffId","dataType":"INTEGER","fromDateTime":"2016-03-01T00:00:00-08:00","toDateTime":"2016-03-24T00:00:00-07:00","dataValue":"3249960","accuracy":100},{"keyName":"tariffId","dataType":"INTEGER","fromDateTime":"2016-03-24T00:00:00-07:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"3252392","accuracy":100}]},"2":{"masterTariffId":525,"tariffName":"Residential + - Time of Use","totalCost":367.96000000,"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","currency":"USD","summary":{"SOLAR_PV":{"kWh":9133.1,"kW":0.00},"ELECTRICITY":{"kWh":11416.36,"kW":4.17},"subTotalCost":367.96,"taxCost":0.00,"totalCost":367.96,"adjustedTotalCost":367.96,"kWh":2283.26,"kW":0.67},"accuracy":1.00000000,"items":[{"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2016-02-01T00:00:00-08:00","quantityKey":"fixed","rateAmount":0.00000000,"itemQuantity":0.00000000,"cost":0.00000000,"chargeType":"FIXED_PRICE"},{"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2016-02-01T00:00:00-08:00","quantityKey":"consumption","rateAmount":0.15570349,"tierLowerLimit":0.00000000,"tierUpperLimit":200.05236300,"itemQuantity":200.05236300,"cost":31.14885017,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2016-02-01T00:00:00-08:00","quantityKey":"minimum","rateAmount":0.32854000,"itemQuantity":31.00000000,"cost":10.18474000,"chargeType":"MINIMUM"},{"fromDateTime":"2016-02-01T00:00:00-08:00","toDateTime":"2016-03-01T00:00:00-08:00","quantityKey":"fixed","rateAmount":0.00000000,"itemQuantity":0.00000000,"cost":0.00000000,"chargeType":"FIXED_PRICE"},{"fromDateTime":"2016-02-01T00:00:00-08:00","toDateTime":"2016-03-01T00:00:00-08:00","quantityKey":"consumption","rateAmount":0.15582857,"tierLowerLimit":0.00000000,"tierUpperLimit":181.70739400,"itemQuantity":181.70739400,"cost":28.31520284,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-02-01T00:00:00-08:00","toDateTime":"2016-03-01T00:00:00-08:00","quantityKey":"minimum","rateAmount":0.32854000,"itemQuantity":29.00000000,"cost":9.52766000,"chargeType":"MINIMUM"},{"fromDateTime":"2016-03-01T00:00:00-08:00","toDateTime":"2016-04-01T00:00:00-07:00","quantityKey":"fixed","rateAmount":0.00000000,"itemQuantity":0.00000000,"cost":0.00000000,"chargeType":"FIXED_PRICE"},{"fromDateTime":"2016-03-01T00:00:00-08:00","toDateTime":"2016-04-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.15649141,"tierLowerLimit":0.00000000,"tierUpperLimit":191.79237000,"itemQuantity":191.79237000,"cost":30.01385808,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-03-01T00:00:00-08:00","toDateTime":"2016-04-01T00:00:00-07:00","quantityKey":"minimum","rateAmount":0.32854000,"itemQuantity":31.00000000,"cost":10.18474000,"chargeType":"MINIMUM"},{"fromDateTime":"2016-04-01T00:00:00-07:00","toDateTime":"2016-05-01T00:00:00-07:00","quantityKey":"fixed","rateAmount":-28.14000000,"itemQuantity":1.00000000,"cost":-28.14000000,"chargeType":"FIXED_PRICE"},{"fromDateTime":"2016-04-01T00:00:00-07:00","toDateTime":"2016-05-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.15629183,"tierLowerLimit":0.00000000,"tierUpperLimit":181.69065800,"itemQuantity":181.69065800,"cost":28.39676489,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-04-01T00:00:00-07:00","toDateTime":"2016-05-01T00:00:00-07:00","quantityKey":"minimum","rateAmount":0.32854000,"itemQuantity":30.00000000,"cost":9.85620000,"chargeType":"MINIMUM"},{"fromDateTime":"2016-05-01T00:00:00-07:00","toDateTime":"2016-06-01T00:00:00-07:00","quantityKey":"fixed","rateAmount":0.00000000,"itemQuantity":0.00000000,"cost":0.00000000,"chargeType":"FIXED_PRICE"},{"fromDateTime":"2016-05-01T00:00:00-07:00","toDateTime":"2016-06-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.20088090,"tierLowerLimit":0.00000000,"tierUpperLimit":183.99910400,"itemQuantity":183.99910400,"cost":36.96190587,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-05-01T00:00:00-07:00","toDateTime":"2016-06-01T00:00:00-07:00","quantityKey":"minimum","rateAmount":0.32854000,"itemQuantity":31.00000000,"cost":10.18474000,"chargeType":"MINIMUM"},{"fromDateTime":"2016-06-01T00:00:00-07:00","toDateTime":"2016-07-01T00:00:00-07:00","quantityKey":"fixed","rateAmount":0.00000000,"itemQuantity":0.00000000,"cost":0.00000000,"chargeType":"FIXED_PRICE"},{"fromDateTime":"2016-06-01T00:00:00-07:00","toDateTime":"2016-07-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.20574214,"tierLowerLimit":0.00000000,"tierUpperLimit":186.44948000,"itemQuantity":186.44948000,"cost":38.36051481,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-06-01T00:00:00-07:00","toDateTime":"2016-07-01T00:00:00-07:00","quantityKey":"minimum","rateAmount":0.32854000,"itemQuantity":30.00000000,"cost":9.85620000,"chargeType":"MINIMUM"},{"fromDateTime":"2016-07-01T00:00:00-07:00","toDateTime":"2016-08-01T00:00:00-07:00","quantityKey":"fixed","rateAmount":0.00000000,"itemQuantity":0.00000000,"cost":0.00000000,"chargeType":"FIXED_PRICE"},{"fromDateTime":"2016-07-01T00:00:00-07:00","toDateTime":"2016-08-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.20045406,"tierLowerLimit":0.00000000,"tierUpperLimit":184.91535600,"itemQuantity":184.91535600,"cost":37.06703427,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-07-01T00:00:00-07:00","toDateTime":"2016-08-01T00:00:00-07:00","quantityKey":"minimum","rateAmount":0.32854000,"itemQuantity":31.00000000,"cost":10.18474000,"chargeType":"MINIMUM"},{"fromDateTime":"2016-08-01T00:00:00-07:00","toDateTime":"2016-09-01T00:00:00-07:00","quantityKey":"fixed","rateAmount":0.00000000,"itemQuantity":0.00000000,"cost":0.00000000,"chargeType":"FIXED_PRICE"},{"fromDateTime":"2016-08-01T00:00:00-07:00","toDateTime":"2016-09-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.20720836,"tierLowerLimit":0.00000000,"tierUpperLimit":191.97381700,"itemQuantity":191.97381700,"cost":39.77857963,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-08-01T00:00:00-07:00","toDateTime":"2016-09-01T00:00:00-07:00","quantityKey":"minimum","rateAmount":0.32854000,"itemQuantity":31.00000000,"cost":10.18474000,"chargeType":"MINIMUM"},{"fromDateTime":"2016-09-01T00:00:00-07:00","toDateTime":"2016-10-01T00:00:00-07:00","quantityKey":"fixed","rateAmount":0.00000000,"itemQuantity":0.00000000,"cost":0.00000000,"chargeType":"FIXED_PRICE"},{"fromDateTime":"2016-09-01T00:00:00-07:00","toDateTime":"2016-10-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.20745856,"tierLowerLimit":0.00000000,"tierUpperLimit":195.09709300,"itemQuantity":195.09709300,"cost":40.47456291,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-09-01T00:00:00-07:00","toDateTime":"2016-10-01T00:00:00-07:00","quantityKey":"minimum","rateAmount":0.32854000,"itemQuantity":30.00000000,"cost":9.85620000,"chargeType":"MINIMUM"},{"fromDateTime":"2016-10-01T00:00:00-07:00","toDateTime":"2016-11-01T00:00:00-07:00","quantityKey":"fixed","rateAmount":-24.76000000,"itemQuantity":1.00000000,"cost":-24.76000000,"chargeType":"FIXED_PRICE"},{"fromDateTime":"2016-10-01T00:00:00-07:00","toDateTime":"2016-11-01T00:00:00-07:00","quantityKey":"consumption","rateAmount":0.20348303,"tierLowerLimit":0.00000000,"tierUpperLimit":194.41882900,"itemQuantity":194.41882900,"cost":39.56093179,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-10-01T00:00:00-07:00","toDateTime":"2016-11-01T00:00:00-07:00","quantityKey":"minimum","rateAmount":0.32854000,"itemQuantity":31.00000000,"cost":10.18474000,"chargeType":"MINIMUM"},{"fromDateTime":"2016-11-01T00:00:00-07:00","toDateTime":"2016-12-01T00:00:00-08:00","quantityKey":"fixed","rateAmount":0.00000000,"itemQuantity":0.00000000,"cost":0.00000000,"chargeType":"FIXED_PRICE"},{"fromDateTime":"2016-11-01T00:00:00-07:00","toDateTime":"2016-12-01T00:00:00-08:00","quantityKey":"consumption","rateAmount":0.15638302,"tierLowerLimit":0.00000000,"tierUpperLimit":189.44072300,"itemQuantity":189.44072300,"cost":29.62531256,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-11-01T00:00:00-07:00","toDateTime":"2016-12-01T00:00:00-08:00","quantityKey":"minimum","rateAmount":0.32854000,"itemQuantity":30.00000000,"cost":9.85620000,"chargeType":"MINIMUM"},{"fromDateTime":"2016-12-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","quantityKey":"fixed","rateAmount":0.00000000,"itemQuantity":0.00000000,"cost":0.00000000,"chargeType":"FIXED_PRICE"},{"fromDateTime":"2016-12-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","quantityKey":"consumption","rateAmount":0.15642966,"tierLowerLimit":0.00000000,"tierUpperLimit":201.72134100,"itemQuantity":201.72134100,"cost":31.55520029,"chargeType":"CONSUMPTION_BASED"},{"fromDateTime":"2016-12-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","quantityKey":"minimum","rateAmount":0.32854000,"itemQuantity":31.00000000,"cost":10.18474000,"chargeType":"MINIMUM"}],"assumptions":[{"keyName":"intelligentBaselining","dataType":"BOOLEAN","dataValue":"true"},{"keyName":"typicalBaseline","dataType":"STRING","dataValue":"5462916ef81548bdd70a3d24"},{"keyName":"usageExtrapolated","dataType":"BOOLEAN","dataValue":"true","accuracy":78},{"keyName":"territoryId","dataType":"INTEGER","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"3535","accuracy":80},{"keyName":"usageInterpolated","dataType":"BOOLEAN","dataValue":"true","accuracy":80},{"keyName":"dailyMedicalAllowance","displayName":"Daily + Medical Allowance ","description":"Residential customers on a medical allowance + get additional quantities of energy at the lowest (baseline) price. The medical + allowance is a daily value. ","dataType":"DECIMAL","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"0","accuracy":80},{"keyName":"hasCAEnergySurchargeExemption","displayName":"Has + Energy Surcharge Exemption","description":"Exemptions for CA Energy Surcharge + apply to the following:\r\n1. Federal Agencies\r\n2. American National Red + Cross facilities\r\n3. Energy consumed on Indian reservations\r\n4. Foreign + consular employees\r\n5. Federal Credit Unions","dataType":"BOOLEAN","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"false","accuracy":80},{"keyName":"smartMeterOptOut","displayName":"Has + Smart Meter Opt-Out","description":"Customers who elect to opt-out of receiving + a smart meter and choose to retain a non-smart meter, are subject to the Smart + Meter Opt-Out fees.\r\n\r\nSmart Meter Opt-Out Customers are subject to one-time, + up-front fee and a recurring monthly fee ","dataType":"BOOLEAN","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"false","accuracy":80},{"keyName":"isSmartRateCustomer","displayName":"Is + SmartRate Customer","description":"The residential SmartRate program is a + voluntary rate supplement to the customer''s \r\notherwise applicable rate + schedule (OAS).\r\nThe customer will be billed for all regular charges applicable + under the customer''s OAS. \r\nAdditional charges (based on usage during + SmartDay High-Price Periods) and \r\nSmartRate credits will be determined + according to the rates specified in this schedule. The customer must have + a SmartMeter system to participate in the residential \r\nSmartRate program","dataType":"BOOLEAN","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"false","accuracy":80},{"keyName":"utilityEmployee","displayName":"Is + Utility Employee","description":"Applicable to domestic service utility employees + ","dataType":"BOOLEAN","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"false","accuracy":80},{"keyName":"powerChargeIndifferenceAdjustmentVintageYear","displayName":"Power + Charge Indifference Adjustment Vintage Year ","description":"The adjustment + (either a \r\ncharge or credit) is intended to ensure that customers that + purchase electricity from \r\nnon-utility suppliers pay their share of cost + for generation acquired prior to 2003","dataType":"STRING","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"None","accuracy":80},{"keyName":"solarChoiceCustomerCategory","displayName":"Solar + Choice Customer Category","description":"The customer is a solar choice customer taking + service under Schedule E-GT. The customer will pay the applicable Program + Charge based on the year service under this schedule was started. ","dataType":"STRING","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"None","accuracy":80},{"keyName":"tariffId","dataType":"INTEGER","fromDateTime":"2016-01-01T00:00:00-08:00","toDateTime":"2016-03-01T00:00:00-08:00","dataValue":"3243474","accuracy":100},{"keyName":"tariffId","dataType":"INTEGER","fromDateTime":"2016-03-01T00:00:00-08:00","toDateTime":"2016-03-24T00:00:00-07:00","dataValue":"3250016","accuracy":100},{"keyName":"tariffId","dataType":"INTEGER","fromDateTime":"2016-03-24T00:00:00-07:00","toDateTime":"2017-01-01T00:00:00-08:00","dataValue":"3252389","accuracy":100},{"keyName":"minimum","dataType":"STRING","fromDateTime":"2016-04-01T00:00:00-07:00","toDateTime":"2016-05-01T00:00:00-07:00","dataValue":"true","accuracy":100}]}}}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:32 GMT +- request: + method: delete + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles/571976fde013c65f7ca7e09e + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:32 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":0,"type":"UsageProfile","results":null}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:32 GMT +- request: + method: delete + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles/571976fde013c65f7ca7e09f + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:31 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Content-Length: + - '90' + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":0,"type":"UsageProfile","results":null}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:32 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/calculate_json/_calculate/calculates_the_total_cost.yml b/spec/cassettes/Genability_Client/calculate_json/_calculate/calculates_the_total_cost.yml new file mode 100644 index 0000000..532da68 --- /dev/null +++ b/spec/cassettes/Genability_Client/calculate_json/_calculate/calculates_the_total_cost.yml @@ -0,0 +1,58 @@ +--- +http_interactions: +- request: + method: post + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/calculate/512 + body: + encoding: UTF-8 + string: '{"fromDateTime":"2016-01-01T00:00:00.0-0800","toDateTime":"2016-01-01T01:00:00.0-0800","tariffInputs":[{"fromDateTime":"2016-01-01T00:00:00.0-0800","toDateTime":"2016-01-01T00:15:00.0-0800","keyName":"consumption","dataValue":2.2,"unit":"kWh"},{"fromDateTime":"2016-01-01T00:15:00.0-0800","toDateTime":"2016-01-01T00:30:00.0-0800","keyName":"consumption","dataValue":1.3,"unit":"kWh"},{"fromDateTime":"2016-01-01T00:30:00.0-0800","toDateTime":"2016-01-01T00:45:00.0-0800","keyName":"consumption","dataValue":0.6,"unit":"kWh"},{"fromDateTime":"2016-01-01T00:45:00.0-0800","toDateTime":"2016-01-01T01:00:00.0-0800","keyName":"consumption","dataValue":2.1,"unit":"kWh"},{"fromDateTime":"2016-01-01T00:00:00.0-0800","toDateTime":"2016-01-01T01:00:00.0-0800","keyName":"cityLimits","dataValue":"Inside"},{"fromDateTime":"2016-01-01T00:00:00.0-0800","toDateTime":"2016-01-01T01:00:00.0-0800","keyName":"connectionType","dataValue":"Primary"}],"rateInputs":[{"fromDateTime":"2016-01-01T12:00:00.0-0800","toDateTime":"2016-01-02T12:00:00.0-0800","chargeType":"TAX","rateGroupName":"Taxes","rateName":"Utility + Users Tax","rateBands":[{"rateAmount":0.075,"rateUnit":"PERCENTAGE"}]}]}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:39 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Content-Length: + - '1180' + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"CalculatedCost","results":[{"masterTariffId":512,"tariffName":"Residential","totalCost":0.59000000,"fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","currency":"USD","summary":{"subTotalCost":0.59,"taxCost":0.00,"totalCost":0.59,"adjustedTotalCost":0.59,"kWh":6.20,"kW":0},"accuracy":1.00000000,"items":[{"tariffRateId":17471831,"tariffRateBandId":10922532,"rateSequenceNumber":0,"rateGroupName":"Basic + Service Charge","rateName":"Basic Service Charge","fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","quantityKey":"fixed","rateType":"COST_PER_UNIT","rateAmount":0.01344086,"itemQuantity":1.00000000,"cost":0.01344086},{"tariffRateId":17471832,"tariffRateBandId":10922533,"rateSequenceNumber":1,"rateGroupName":"Environmental + Compliance Cost Recovery Charge","rateName":"Basic Service Charge Component","fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","quantityKey":"fixed","rateType":"COST_PER_UNIT","rateAmount":0.00171613,"itemQuantity":1.00000000,"cost":0.00171613},{"tariffRateId":17471833,"tariffRateBandId":10922534,"rateSequenceNumber":2,"rateGroupName":"Nuclear + Construction Cost Recovery Charge","rateName":"Basic Service Charge Component","fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","quantityKey":"fixed","rateType":"COST_PER_UNIT","rateAmount":0.00130856,"itemQuantity":1.00000000,"cost":0.00130856},{"tariffRateId":17471834,"tariffRateBandId":10922535,"rateSequenceNumber":3,"rateGroupName":"Demand + Side Management Charge","rateName":"Basic Service Charge Component","fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","quantityKey":"fixed","rateType":"COST_PER_UNIT","rateAmount":0.00022474,"itemQuantity":1.00000000,"cost":0.00022474},{"tariffRateId":17471836,"tariffRateBandId":10922539,"rateSequenceNumber":5,"rateGroupName":"Demand + Side Management Charge","rateName":"Energy Charge - Winter Component","fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","quantityKey":"consumption","rateType":"COST_PER_UNIT","rateAmount":0.00081880,"itemQuantity":6.20000000,"cost":0.00507656},{"tariffRateId":17471837,"tariffRateBandId":10922542,"rateSequenceNumber":6,"rateGroupName":"Energy + Charges","rateName":"Winter Rate","fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","quantityKey":"consumption","rateType":"COST_PER_UNIT","rateAmount":0.04896858,"itemQuantity":6.20000000,"cost":0.30360520},{"tariffRateId":17471838,"tariffRateBandId":10922545,"rateSequenceNumber":7,"rateGroupName":"Environmental + Compliance Cost Recovery Charge","rateName":"Energy Charge - Winter Component","fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","quantityKey":"consumption","rateType":"COST_PER_UNIT","rateAmount":0.00625231,"itemQuantity":6.20000000,"cost":0.03876432},{"tariffRateId":17471848,"tariffRateBandId":10922565,"rateSequenceNumber":8,"rateGroupName":"Municipal + Franchise Fee","rateName":"Inside City Limit Customer","fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","quantityKey":"percentage","rateType":"PERCENTAGE","rateAmount":2.99890000,"itemQuantity":1.00000000,"cost":0.01716376},{"tariffRateId":17471839,"tariffRateBandId":10922548,"rateSequenceNumber":8,"rateGroupName":"Nuclear + Construction Cost Recovery Charge","rateName":"Energy Charge - Winter Component","fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","quantityKey":"consumption","rateType":"COST_PER_UNIT","rateAmount":0.00476743,"itemQuantity":6.20000000,"cost":0.02955807},{"tariffRateId":17471840,"tariffRateBandId":10922549,"rateSequenceNumber":9,"rateGroupName":"Fuel + Cost Recovery Charge","rateName":"Winter Rate","fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","quantityKey":"consumption","rateType":"COST_PER_UNIT","rateAmount":0.02881300,"itemQuantity":6.20000000,"cost":0.17864060}],"assumptions":[{"keyName":"tariffId","dataType":"INTEGER","fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","dataValue":"3244437"},{"keyName":"isLowIncomeSeniorCitizen953","displayName":"Is + Low Income Senior Citizen","description":"Customers who are at least 62 years + of age or older or be a disabled person as evidenced by receiving Supplemental + Security Income (SSI) or State Supplemental Payment (SSP) and whose total + gross annual income for all persons in the applicant''s household may not + exceed seventy-five (75) percent of the most recent median income levels.","dataType":"BOOLEAN","fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","dataValue":"false","accuracy":80},{"keyName":"cityLimits","displayName":"Service + Area (Inside/outside city limits)","description":"Has service inside or outside + city limits","dataType":"STRING","fromDateTime":"2016-01-01T03:00:00-05:00","toDateTime":"2016-01-01T04:00:00-05:00","dataValue":"Inside","accuracy":100}]}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:39 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/calculate_json/_calculate_metadata/returns_the_inputs_required_to_use_the_calculate_method.yml b/spec/cassettes/Genability_Client/calculate_json/_calculate_metadata/returns_the_inputs_required_to_use_the_calculate_method.yml new file mode 100644 index 0000000..dbca002 --- /dev/null +++ b/spec/cassettes/Genability_Client/calculate_json/_calculate_metadata/returns_the_inputs_required_to_use_the_calculate_method.yml @@ -0,0 +1,44 @@ +--- +http_interactions: +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/calculate/512?cityLimits=Inside&connectionType=Primary%20Connection&fromDateTime=2016-01-01T00:00:00.0-0500&toDateTime=2016-01-02T00:00:00.0-0500 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:38 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":3,"type":"PropertyData","results":[{"keyName":"cityLimits","displayName":"Service + Area (Inside/outside city limits)","family":"service","keyspace":"electricity","dataType":"CHOICE","fromDateTime":"2016-01-01T00:00:00-05:00","toDateTime":"2016-01-02T00:00:00-05:00","dataValue":"Inside","accuracy":100},{"keyName":"isLowIncomeSeniorCitizen953","displayName":"Is + Low Income Senior Citizen","description":"Customers who are at least 62 years + of age or older or be a disabled person as evidenced by receiving Supplemental + Security Income (SSI) or State Supplemental Payment (SSP) and whose total + gross annual income for all persons in the applicant''s household may not + exceed seventy-five (75) percent of the most recent median income levels.","dataType":"BOOLEAN","fromDateTime":"2016-01-01T00:00:00-05:00","toDateTime":"2016-01-02T00:00:00-05:00","dataValue":"false","accuracy":80},{"keyName":"consumption","dataType":"DECIMAL","fromDateTime":"2016-01-01T00:00:00-05:00","toDateTime":"2016-01-02T00:00:00-05:00","unit":"kWh"}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:39 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/incentive_json/_applicabilities/should_return_an_array_of_applicabilities.yml b/spec/cassettes/Genability_Client/incentive_json/_applicabilities/should_return_an_array_of_applicabilities.yml new file mode 100644 index 0000000..234ade9 --- /dev/null +++ b/spec/cassettes/Genability_Client/incentive_json/_applicabilities/should_return_an_array_of_applicabilities.yml @@ -0,0 +1,107 @@ +--- +http_interactions: +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/beta/incentives/applicabilities + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:25 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":37,"type":"IncentiveApplicability","results":[{"applicabilityKey":"10YearOldRefrigerator","displayName":"Has + 10 Year Old Refrigerator (14-15 cu.ft.)","description":"Has 10 Year Old Refrigerator + (14-15 cu.ft.)?"},{"applicabilityKey":"annualConsumption","displayName":"Annual + Consumption ","description":"Annual Consumption by customer","quantityUnit":"kWh"},{"applicabilityKey":"annualDemand","displayName":"Annual + Demand","description":"Quantity in kW of load that is used in the maximum + 15-minute kW delivery during each month, for 12 months."},{"applicabilityKey":"annualEstimatedSolarProduction","displayName":"Annual + Estimated Solar Production","description":"How many kWh the solar system is + estimated to produce in the first year. ","quantityUnit":"kWh"},{"applicabilityKey":"ashraeStandards","displayName":"ASHRAE + Standards","description":"Have a licensed contractor or engineer verify lighting + power density and/or verify through energy modeling that the portion of the + building being submitted for the tax credit is 25%-50% better than ASHRAE + 90.1-2001 standards. Save all your receipts and equipment documentation. Consult + the IRS or your tax advisor."},{"applicabilityKey":"azimuth","displayName":"Azimuth","description":"Azimuth + angle (degrees)."},{"applicabilityKey":"classSpecialsSector","displayName":"Customer + Sector","description":"Subclassification for customer class Special","choices":[{"displayValue":"Agriculture","value":"agriculture","dataValue":"agriculture","likelihood":null},{"displayValue":"Government","value":"government","dataValue":"government","likelihood":null},{"displayValue":"Non + Profit","value":"nonProfit","dataValue":"nonProfit","likelihood":null},{"displayValue":"School","value":"school","dataValue":"school","likelihood":null},{"displayValue":"Other","value":"other","dataValue":"other","likelihood":null}]},{"applicabilityKey":"constructionType","displayName":"Construction + Type","description":"Construction is new or existing","choices":[{"displayValue":"Retrofit","value":"retrofit","dataValue":"retrofit","likelihood":null},{"displayValue":"New + Construction","value":"new","dataValue":"new","likelihood":null},{"displayValue":"Operations + & Maintenance","value":"om","dataValue":"om","likelihood":null},{"displayValue":"Retired","value":"retire","dataValue":"retire","likelihood":null}]},{"applicabilityKey":"cpsLocalContractor","displayName":"CPS + Local Contractor","description":"Is the installer a CPS Energy approved local + contractor."},{"applicabilityKey":"demand","displayName":"Demand (kW)","description":"Quantity + in kW of load that is used for a given period"},{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","choices":[{"displayValue":"Building + Shell","value":"buildingShell","dataValue":"buildingShell","likelihood":null},{"displayValue":"Heating","value":"airHeat","dataValue":"airHeat","likelihood":null},{"displayValue":"Cooling","value":"airCool","dataValue":"airCool","likelihood":null},{"displayValue":"Water + Heating","value":"waterHeat","dataValue":"waterHeat","likelihood":null},{"displayValue":"Lighting","value":"lighting","dataValue":"lighting","likelihood":null},{"displayValue":"Refrigeration","value":"refrigeration","dataValue":"refrigeration","likelihood":null},{"displayValue":"Processing + & Manufacturing Equipment","value":"processingEquipment","dataValue":"processingEquipment","likelihood":null},{"displayValue":"Food + Service & Restaurants","value":"foodService","dataValue":"foodService","likelihood":null},{"displayValue":"Motors + & Drives (VFD)","value":"motor","dataValue":"motor","likelihood":null},{"displayValue":"Appliances","value":"appliances","dataValue":"appliances","likelihood":null},{"displayValue":"Electronics","value":"electronics","dataValue":"electronics","likelihood":null},{"displayValue":"Pool","value":"pool","dataValue":"pool","likelihood":null},{"displayValue":"Irrigation","value":"irrigation","dataValue":"irrigation","likelihood":null},{"displayValue":"Electric + Vehicle","value":"ev","dataValue":"ev","likelihood":null},{"displayValue":"Custom + Use","value":"custom","dataValue":"custom","likelihood":null},{"displayValue":"Other","value":"other","dataValue":"other","likelihood":null}]},{"applicabilityKey":"endUseResidential","displayName":"End + Use Residential","description":"End Use Technology for Residential","choices":[{"displayValue":"Building + Shell","value":"buildingShell","dataValue":"buildingShell","likelihood":null},{"displayValue":"Heating + & Cooling","value":"airHeatCool","dataValue":"airHeatCool","likelihood":null},{"displayValue":"Water + Heating","value":"waterHeat","dataValue":"waterHeat","likelihood":null},{"displayValue":"Lighting","value":"lighting","dataValue":"lighting","likelihood":null},{"displayValue":"Major + Appliances","value":"majorAppliances","dataValue":"majorAppliances","likelihood":null},{"displayValue":"Electronics","value":"electronics","dataValue":"electronics","likelihood":null},{"displayValue":"Pool + & Spa","value":"pool","dataValue":"pool","likelihood":null},{"displayValue":"Electric + Vehicle","value":"ev","dataValue":"ev","likelihood":null},{"displayValue":"Custom + Usage","value":"custom","dataValue":"custom","likelihood":null},{"displayValue":"Other","value":"other","dataValue":"other","likelihood":null}]},{"applicabilityKey":"isAffectedByHurricaneSandy","displayName":"Is + Affected by Hurricane Sandy","description":"Is Affected by Hurricane Sandy? + (If your home is located in a zip code designated as a \"major\" or \"minor\" + damaged area impacted by Hurricane Sandy or home is located outside the eligible + zip code list, but have experienced damage caused by Hurricane Sandy)"},{"applicabilityKey":"isConEdCustomer","displayName":"Consolidated + Edison Customer","description":"Is the applicant a Consolidated Edison customer?"},{"applicabilityKey":"isLowIncome","displayName":"Low + Income Customer","description":"Is the customer considered low income by the + LSE. "},{"applicabilityKey":"isLowIncomeCustomer","displayName":"Is Low Income + Customer","description":"Customers who are (1) low-income senior citizens + over 62; (2) low-income customers with a permanent disability or those who + have a person with a permanent disability living in the household (3) low-income + customers on life support."},{"applicabilityKey":"isPacificPowerCustomer","displayName":"Pacific + Power Customer","description":"Is the applicant a Pacific Power customer?"},{"applicabilityKey":"isPgeCustomer","displayName":"Portland + General Electric Customer","description":"Is the applicant a Portland General + Electric customer?"},{"applicabilityKey":"lowIncomeCustomer","displayName":"Is + Low Income Customer","description":"Customer who are enrolled in the Company''s + low-income program. To qualify for the low-income program, a Customer must + be enrolled in the Direct Vendor or Utility Guarantee Program and/or receiving + benefits under Supplemental Security Income, Temporary Assistance to Needy + Persons/Families, Safety Net Assistance, or Food Stamps, or have received + a Home Energy Assistance Program grant in the preceding 12 months."},{"applicabilityKey":"mobileHome","displayName":"Is + a Mobile Home","description":"Mobile homes or static caravans (also informally + called caravans or trailers) are prefabricated homes built in factories, rather + than on site, and then taken to the place where they will be occupied."},{"applicabilityKey":"peakDemandReduction","displayName":"Peak + Demand Reduction","description":"Peak Demand Reduction by a customer"},{"applicabilityKey":"recRetained","displayName":"REC + Retained","description":"Whether the owner has chosen to retain their REC + (Renewable Energy Credits). "},{"applicabilityKey":"rmldLocalContractorAndManufacturer","displayName":"RMLD + Local Contractor and Manufacturer","description":"Is the system installer + and parts manufacturer a Reading Municipal Light Department approved local + business."},{"applicabilityKey":"singleFamilyHome","displayName":"Is a Single + Family Home","description":"A single-family detached home, also called a single-detached + dwelling or separate house is a free-standing residential building."},{"applicabilityKey":"specificApplicability","displayName":"Specific + Applicability","description":"Specific Customer''s applicability"}],"pageStart":0,"pageCount":25}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:24 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/incentive_json/_applicabilities/should_return_valid_applicabilities_.yml b/spec/cassettes/Genability_Client/incentive_json/_applicabilities/should_return_valid_applicabilities_.yml new file mode 100644 index 0000000..23b2302 --- /dev/null +++ b/spec/cassettes/Genability_Client/incentive_json/_applicabilities/should_return_valid_applicabilities_.yml @@ -0,0 +1,71 @@ +--- +http_interactions: +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/beta/incentives/applicabilities?projectType=solarPv + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:25 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":20,"type":"IncentiveApplicability","results":[{"applicabilityKey":"annualConsumption","displayName":"Annual + Consumption ","description":"Annual Consumption by customer","quantityUnit":"kWh"},{"applicabilityKey":"annualEstimatedSolarProduction","displayName":"Annual + Estimated Solar Production","description":"How many kWh the solar system is + estimated to produce in the first year. ","quantityUnit":"kWh"},{"applicabilityKey":"azimuth","displayName":"Azimuth","description":"Azimuth + angle (degrees)."},{"applicabilityKey":"cpsLocalContractor","displayName":"CPS + Local Contractor","description":"Is the installer a CPS Energy approved local + contractor."},{"applicabilityKey":"isConEdCustomer","displayName":"Consolidated + Edison Customer","description":"Is the applicant a Consolidated Edison customer?"},{"applicabilityKey":"isLowIncome","displayName":"Low + Income Customer","description":"Is the customer considered low income by the + LSE. "},{"applicabilityKey":"isPacificPowerCustomer","displayName":"Pacific + Power Customer","description":"Is the applicant a Pacific Power customer?"},{"applicabilityKey":"isPgeCustomer","displayName":"Portland + General Electric Customer","description":"Is the applicant a Portland General + Electric customer?"},{"applicabilityKey":"recRetained","displayName":"REC + Retained","description":"Whether the owner has chosen to retain their REC + (Renewable Energy Credits). "},{"applicabilityKey":"rmldLocalContractorAndManufacturer","displayName":"RMLD + Local Contractor and Manufacturer","description":"Is the system installer + and parts manufacturer a Reading Municipal Light Department approved local + business."},{"applicabilityKey":"systemCost","displayName":"System Cost","description":"Cost + of the solar system in USD. ","quantityUnit":"USD"},{"applicabilityKey":"systemOwnership","displayName":"System + Ownership","description":"If incentive requires the system to be owned by + the Host or Third Party to qualify. ","choices":[{"displayValue":"Host","value":"host","dataValue":"host","likelihood":null},{"displayValue":"Third + Party","value":"thirdParty","dataValue":"thirdParty","likelihood":null}]},{"applicabilityKey":"systemSize","displayName":"System + Size","description":"Nameplate capacity (kW).","quantityUnit":"kW"},{"applicabilityKey":"systemSizeAc","displayName":"System + Size AC","description":"Nameplate capacity (kW) times inverter efficiency","quantityUnit":"kW"},{"applicabilityKey":"systemSizeAcW","displayName":"System + Size AC W","description":"Size of the solar system in Watts AC","quantityUnit":"W"},{"applicabilityKey":"systemSizeDc","displayName":"System + Size DC","description":"Size of the solar system in kiloWatts DC","quantityUnit":"kW"},{"applicabilityKey":"systemSizeDcW","displayName":"System + Size DC W","description":"Size of the solar system in Watts DC","quantityUnit":"W"},{"applicabilityKey":"taxType","displayName":"Tax + Type","description":"Tax categories","choices":[{"displayValue":"Income Tax","value":"Income + Tax","dataValue":"Income Tax","likelihood":null},{"displayValue":"Property + Tax","value":"Property Tax","dataValue":"Property Tax","likelihood":null},{"displayValue":"Sales + Tax","value":"Sales Tax","dataValue":"Sales Tax","likelihood":null}]},{"applicabilityKey":"tilt","displayName":"Tilt","description":"Tilt + angle in degrees of the PV (degrees)."},{"applicabilityKey":"uSAComponents","displayName":"USA + Made Components","description":"Whether the system''s photovoltaic panels + or inverter are made in the USA. "}],"pageStart":0,"pageCount":25}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:25 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/incentive_json/_incentive/should_return_an_incentive.yml b/spec/cassettes/Genability_Client/incentive_json/_incentive/should_return_an_incentive.yml new file mode 100644 index 0000000..4e437e1 --- /dev/null +++ b/spec/cassettes/Genability_Client/incentive_json/_incentive/should_return_an_incentive.yml @@ -0,0 +1,101 @@ +--- +http_interactions: +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/beta/incentives/3163700 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:22 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Content-Length: + - '1210' + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: !binary |- + eyJzdGF0dXMiOiJzdWNjZXNzIiwiY291bnQiOjEsInR5cGUiOiJJbmNlbnRp + dmUiLCJyZXN1bHRzIjpbeyJpbmNlbnRpdmVJZCI6MzI0Njk4MywibWFzdGVy + SW5jZW50aXZlSWQiOjMxNjM3MDAsInRhcmlmZkNvZGUiOiJOb25lIiwiaW5j + ZW50aXZlTmFtZSI6Ik5ZU0VSREEgTlktU1VOIFJlc2lkZW50aWFsIFNvbGFy + IFBWIEluY2VudGl2ZSBVcHN0YXRlIC0gQmxvY2sgNyIsImxzZUlkIjoxMDAy + ODcsImxzZU5hbWUiOiJTdGF0ZSBvZiBOZXcgWW9yayBJbmNlbnRpdmVzIiwi + c2VydmljZVR5cGUiOiJTT0xBUl9QViIsImN1c3RvbWVyQ2xhc3MiOiJSRVNJ + REVOVElBTCIsInN0YXJ0RGF0ZSI6IjIwMTYtMDEtMjgiLCJlbmREYXRlIjpu + dWxsLCJpc0V4aGF1c3RlZCI6ZmFsc2UsInByb2plY3RUeXBlIjoic29sYXJQ + diIsImluY2VudGl2ZVR5cGUiOiJyZWJhdGUiLCJyYXRlIjowLjQwMDAwMCwi + cmF0ZVVuaXQiOiJDT1NUX1BFUl9VTklUIiwiZG9jdW1lbnRzIjpudWxsLCJq + dXJpc2RpY3Rpb24iOiJzdGF0ZSIsInF1YW50aXR5S2V5Ijp7ImtleU5hbWUi + OiJzeXN0ZW1TaXplRGNXIiwiZGlzcGxheU5hbWUiOiJTeXN0ZW0gU2l6ZSBE + QyBXIiwiZGVzY3JpcHRpb24iOiJTaXplIG9mIHRoZSBzb2xhciBzeXN0ZW0g + aW4gV2F0dHMgREMiLCJxdWFudGl0eVVuaXQiOiJXIn0sInF1YW50aXR5S2V5 + Q2FwIjoiMjUwMDAiLCJzdGF0ZSI6Ik5ZIiwicGVyY2VudENvc3RDYXAiOm51 + bGwsInBlcmNlbnRDb3N0Q2FwS2V5Ijp7ImtleU5hbWUiOm51bGx9LCJwYXlt + ZW50Q2FwIjpudWxsLCJwYXltZW50RHVyYXRpb24iOjEsImluY2VudGl2ZVBh + aWRUbyI6ImNvbnRyYWN0b3IiLCJwcm9qZWN0VHlwZUV4Y2x1c2l2ZSI6ZmFs + c2UsImFwcGxpY2FiaWxpdGllcyI6W3siYXBwbGljYWJpbGl0eUtleSI6ImFu + bnVhbEVzdGltYXRlZFNvbGFyUHJvZHVjdGlvbiIsImRpc3BsYXlOYW1lIjoi + QW5udWFsIEVzdGltYXRlZCBTb2xhciBQcm9kdWN0aW9uIiwiZGVzY3JpcHRp + b24iOiJIb3cgbWFueSBrV2ggdGhlIHNvbGFyIHN5c3RlbSBpcyBlc3RpbWF0 + ZWQgdG8gcHJvZHVjZSBpbiB0aGUgZmlyc3QgeWVhci4gIiwicXVhbnRpdHlV + bml0Ijoia1doIiwib3BlcmF0b3IiOiI8PSIsInF1YW50aXR5S2V5IjoiMTEw + cGVyY2VudEFubnVhbENvbnN1bXB0aW9uIn0seyJhcHBsaWNhYmlsaXR5S2V5 + IjoiaXNDb25FZEN1c3RvbWVyIiwiZGlzcGxheU5hbWUiOiJDb25zb2xpZGF0 + ZWQgRWRpc29uIEN1c3RvbWVyIiwiZGVzY3JpcHRpb24iOiJJcyB0aGUgYXBw + bGljYW50IGEgQ29uc29saWRhdGVkIEVkaXNvbiBjdXN0b21lcj8iLCJyZXF1 + aXJlZFZhbHVlIjoiZmFsc2UiLCJvcGVyYXRvciI6Ij0ifV0sInN1bW1hcnki + OiJUaGUgTmV3IFlvcmsgU3RhdGUgRW5lcmd5IFJlc2VhcmNoIGFuZCBEZXZl + bG9wbWVudCBBdXRob3JpdHkgKE5ZU0VSREEpIHByb3ZpZGUgaW5jZW50aXZl + cyBmb3IgdGhlIGluc3RhbGxhdGlvbiBvZiBuZXcgZ3JpZC1jb25uZWN0ZWQg + c29sYXIgcGhvdG92b2x0YWljIChQVikgc3lzdGVtcyB0aGF0IHdpbGwgb2Zm + c2V0IHRoZSB1c2Ugb2YgZ3JpZC1zdXBwbGllZCBlbGVjdHJpY2l0eS4gVGhl + IGluY2VudGl2ZSBjYXBzIGFwcGx5IHRvIGVhY2ggc2l0ZS9tZXRlci4gQSBz + aXRlL21ldGVyIGlzIHRoZSBsb2NhdGlvbiB3aGVyZSB0aGUgUFYgc3lzdGVt + IHdpbGwgYmUgaW50ZXJjb25uZWN0ZWQgdG8gdGhlIHV0aWxpdHkgbWV0ZXIu + IElmIG11bHRpcGxlIG1ldGVycyBhcmUgcHJlc2VudCBtdWx0aXBsZSBzeXN0 + ZW1zIHdpbGwgYmUgZWxpZ2libGUgZm9yIGluY2VudGl2ZXM7IHRoZSBpbmNl + bnRpdmUgY2FwcyB3aWxsIGFwcGx5IHRvIGVhY2ggbWV0ZXIuIiwicmVxdWly + ZW1lbnRzIjoiVGhlIE5ldyBZb3JrIFN0YXRlIEVuZXJneSBSZXNlYXJjaCBh + bmQgRGV2ZWxvcG1lbnQgQXV0aG9yaXR5IChOWVNFUkRBKSBwcm92aWRlIGlu + Y2VudGl2ZXMgZm9yIHRoZSBpbnN0YWxsYXRpb24gb2YgbmV3IGdyaWQtY29u + bmVjdGVkIHNvbGFyIHBob3Rvdm9sdGFpYyAoUFYpIHN5c3RlbXMgdGhhdCB3 + aWxsIG9mZnNldCB0aGUgdXNlIG9mIGdyaWQtc3VwcGxpZWQgZWxlY3RyaWNp + dHkuIFN5c3RlbSBpbmNlbnRpdmVzIGFyZSBjYXBwZWQgYXQgdGhlIGxvd2Vy + IG9mOiAoMSkgMjVrVyBwZXIgc2l0ZS9tZXRlciBmb3IgcmVzaWRlbnRpYWwg + c3lzdGVtcyBvciAoMikgdGhlIFBWIFN5c3RlbSBrVyBzaXplIHRoYXQgaXMg + ZXhwZWN0ZWQgdG8gcHJvZHVjZSBlbmVyZ3kgZXF1YWwgdG8gbm8gbW9yZSB0 + aGFuIDExMCUgb2YgdGhlIHRvdGFsIGtXaCBjb25zdW1wdGlvbiBmb3IgdGhl + IHByZXZpb3VzIDEyIG1vbnRocyBvZiBlbGVjdHJpYyB1c2FnZSB0aHJvdWdo + IHRoZSBhc3NvY2lhdGVkIG1ldGVyLiBOZXcgQ29uc3RydWN0aW9uIHN5c3Rl + bXMgbXVzdCBiZSBzaXplZCBub3QgdG8gZXhjZWVkIDExMCUgb2YgdGhlIGNh + bGN1bGF0ZWQgeWVhcmx5IHByb2plY3RlZCBrV2ggb2YgZWxlY3RyaWMgdXNh + Z2UuIEZ1bmRpbmcgZm9yIHRoZSBTb2xhciBFbGVjdHJpYyBJbmNlbnRpdmUg + UHJvZ3JhbSAo4oCcUHJvZ3JhbeKAnSkgaGFzIGJlZW4gYWxsb2NhdGVkIGJ5 + IHRoZSBOZXcgWW9yayBTdGF0ZSBQdWJsaWMgU2VydmljZSBDb21taXNzaW9u + IHRocm91Z2ggdGhlIFJlbmV3YWJsZSBQb3J0Zm9saW8gU3RhbmRhcmQgcHJv + Z3JhbS4gSW5jZW50aXZlIFByb2dyYW0gKOKAnFByb2dyYW3igJ0pIGhhcyBi + ZWVuIGFsbG9jYXRlZCBieSB0aGUgTmV3IFlvcmsgU3RhdGUgUHVibGljIFNl + cnZpY2UgQ29tbWlzc2lvbiB0aHJvdWdoIHRoZSBSZW5ld2FibGUgUG9ydGZv + bGlvIFN0YW5kYXJkIHByb2dyYW0uIn1dfQ== + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:22 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/incentive_json/_incentive/should_return_an_incentive_with_applicabilities.yml b/spec/cassettes/Genability_Client/incentive_json/_incentive/should_return_an_incentive_with_applicabilities.yml new file mode 100644 index 0000000..6d64708 --- /dev/null +++ b/spec/cassettes/Genability_Client/incentive_json/_incentive/should_return_an_incentive_with_applicabilities.yml @@ -0,0 +1,101 @@ +--- +http_interactions: +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/beta/incentives/3163700 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:21 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: !binary |- + eyJzdGF0dXMiOiJzdWNjZXNzIiwiY291bnQiOjEsInR5cGUiOiJJbmNlbnRp + dmUiLCJyZXN1bHRzIjpbeyJpbmNlbnRpdmVJZCI6MzI0Njk4MywibWFzdGVy + SW5jZW50aXZlSWQiOjMxNjM3MDAsInRhcmlmZkNvZGUiOiJOb25lIiwiaW5j + ZW50aXZlTmFtZSI6Ik5ZU0VSREEgTlktU1VOIFJlc2lkZW50aWFsIFNvbGFy + IFBWIEluY2VudGl2ZSBVcHN0YXRlIC0gQmxvY2sgNyIsImxzZUlkIjoxMDAy + ODcsImxzZU5hbWUiOiJTdGF0ZSBvZiBOZXcgWW9yayBJbmNlbnRpdmVzIiwi + c2VydmljZVR5cGUiOiJTT0xBUl9QViIsImN1c3RvbWVyQ2xhc3MiOiJSRVNJ + REVOVElBTCIsInN0YXJ0RGF0ZSI6IjIwMTYtMDEtMjgiLCJlbmREYXRlIjpu + dWxsLCJpc0V4aGF1c3RlZCI6ZmFsc2UsInByb2plY3RUeXBlIjoic29sYXJQ + diIsImluY2VudGl2ZVR5cGUiOiJyZWJhdGUiLCJyYXRlIjowLjQwMDAwMCwi + cmF0ZVVuaXQiOiJDT1NUX1BFUl9VTklUIiwiZG9jdW1lbnRzIjpudWxsLCJq + dXJpc2RpY3Rpb24iOiJzdGF0ZSIsInF1YW50aXR5S2V5Ijp7ImtleU5hbWUi + OiJzeXN0ZW1TaXplRGNXIiwiZGlzcGxheU5hbWUiOiJTeXN0ZW0gU2l6ZSBE + QyBXIiwiZGVzY3JpcHRpb24iOiJTaXplIG9mIHRoZSBzb2xhciBzeXN0ZW0g + aW4gV2F0dHMgREMiLCJxdWFudGl0eVVuaXQiOiJXIn0sInF1YW50aXR5S2V5 + Q2FwIjoiMjUwMDAiLCJzdGF0ZSI6Ik5ZIiwicGVyY2VudENvc3RDYXAiOm51 + bGwsInBlcmNlbnRDb3N0Q2FwS2V5Ijp7ImtleU5hbWUiOm51bGx9LCJwYXlt + ZW50Q2FwIjpudWxsLCJwYXltZW50RHVyYXRpb24iOjEsImluY2VudGl2ZVBh + aWRUbyI6ImNvbnRyYWN0b3IiLCJwcm9qZWN0VHlwZUV4Y2x1c2l2ZSI6ZmFs + c2UsImFwcGxpY2FiaWxpdGllcyI6W3siYXBwbGljYWJpbGl0eUtleSI6ImFu + bnVhbEVzdGltYXRlZFNvbGFyUHJvZHVjdGlvbiIsImRpc3BsYXlOYW1lIjoi + QW5udWFsIEVzdGltYXRlZCBTb2xhciBQcm9kdWN0aW9uIiwiZGVzY3JpcHRp + b24iOiJIb3cgbWFueSBrV2ggdGhlIHNvbGFyIHN5c3RlbSBpcyBlc3RpbWF0 + ZWQgdG8gcHJvZHVjZSBpbiB0aGUgZmlyc3QgeWVhci4gIiwicXVhbnRpdHlV + bml0Ijoia1doIiwib3BlcmF0b3IiOiI8PSIsInF1YW50aXR5S2V5IjoiMTEw + cGVyY2VudEFubnVhbENvbnN1bXB0aW9uIn0seyJhcHBsaWNhYmlsaXR5S2V5 + IjoiaXNDb25FZEN1c3RvbWVyIiwiZGlzcGxheU5hbWUiOiJDb25zb2xpZGF0 + ZWQgRWRpc29uIEN1c3RvbWVyIiwiZGVzY3JpcHRpb24iOiJJcyB0aGUgYXBw + bGljYW50IGEgQ29uc29saWRhdGVkIEVkaXNvbiBjdXN0b21lcj8iLCJyZXF1 + aXJlZFZhbHVlIjoiZmFsc2UiLCJvcGVyYXRvciI6Ij0ifV0sInN1bW1hcnki + OiJUaGUgTmV3IFlvcmsgU3RhdGUgRW5lcmd5IFJlc2VhcmNoIGFuZCBEZXZl + bG9wbWVudCBBdXRob3JpdHkgKE5ZU0VSREEpIHByb3ZpZGUgaW5jZW50aXZl + cyBmb3IgdGhlIGluc3RhbGxhdGlvbiBvZiBuZXcgZ3JpZC1jb25uZWN0ZWQg + c29sYXIgcGhvdG92b2x0YWljIChQVikgc3lzdGVtcyB0aGF0IHdpbGwgb2Zm + c2V0IHRoZSB1c2Ugb2YgZ3JpZC1zdXBwbGllZCBlbGVjdHJpY2l0eS4gVGhl + IGluY2VudGl2ZSBjYXBzIGFwcGx5IHRvIGVhY2ggc2l0ZS9tZXRlci4gQSBz + aXRlL21ldGVyIGlzIHRoZSBsb2NhdGlvbiB3aGVyZSB0aGUgUFYgc3lzdGVt + IHdpbGwgYmUgaW50ZXJjb25uZWN0ZWQgdG8gdGhlIHV0aWxpdHkgbWV0ZXIu + IElmIG11bHRpcGxlIG1ldGVycyBhcmUgcHJlc2VudCBtdWx0aXBsZSBzeXN0 + ZW1zIHdpbGwgYmUgZWxpZ2libGUgZm9yIGluY2VudGl2ZXM7IHRoZSBpbmNl + bnRpdmUgY2FwcyB3aWxsIGFwcGx5IHRvIGVhY2ggbWV0ZXIuIiwicmVxdWly + ZW1lbnRzIjoiVGhlIE5ldyBZb3JrIFN0YXRlIEVuZXJneSBSZXNlYXJjaCBh + bmQgRGV2ZWxvcG1lbnQgQXV0aG9yaXR5IChOWVNFUkRBKSBwcm92aWRlIGlu + Y2VudGl2ZXMgZm9yIHRoZSBpbnN0YWxsYXRpb24gb2YgbmV3IGdyaWQtY29u + bmVjdGVkIHNvbGFyIHBob3Rvdm9sdGFpYyAoUFYpIHN5c3RlbXMgdGhhdCB3 + aWxsIG9mZnNldCB0aGUgdXNlIG9mIGdyaWQtc3VwcGxpZWQgZWxlY3RyaWNp + dHkuIFN5c3RlbSBpbmNlbnRpdmVzIGFyZSBjYXBwZWQgYXQgdGhlIGxvd2Vy + IG9mOiAoMSkgMjVrVyBwZXIgc2l0ZS9tZXRlciBmb3IgcmVzaWRlbnRpYWwg + c3lzdGVtcyBvciAoMikgdGhlIFBWIFN5c3RlbSBrVyBzaXplIHRoYXQgaXMg + ZXhwZWN0ZWQgdG8gcHJvZHVjZSBlbmVyZ3kgZXF1YWwgdG8gbm8gbW9yZSB0 + aGFuIDExMCUgb2YgdGhlIHRvdGFsIGtXaCBjb25zdW1wdGlvbiBmb3IgdGhl + IHByZXZpb3VzIDEyIG1vbnRocyBvZiBlbGVjdHJpYyB1c2FnZSB0aHJvdWdo + IHRoZSBhc3NvY2lhdGVkIG1ldGVyLiBOZXcgQ29uc3RydWN0aW9uIHN5c3Rl + bXMgbXVzdCBiZSBzaXplZCBub3QgdG8gZXhjZWVkIDExMCUgb2YgdGhlIGNh + bGN1bGF0ZWQgeWVhcmx5IHByb2plY3RlZCBrV2ggb2YgZWxlY3RyaWMgdXNh + Z2UuIEZ1bmRpbmcgZm9yIHRoZSBTb2xhciBFbGVjdHJpYyBJbmNlbnRpdmUg + UHJvZ3JhbSAo4oCcUHJvZ3JhbeKAnSkgaGFzIGJlZW4gYWxsb2NhdGVkIGJ5 + IHRoZSBOZXcgWW9yayBTdGF0ZSBQdWJsaWMgU2VydmljZSBDb21taXNzaW9u + IHRocm91Z2ggdGhlIFJlbmV3YWJsZSBQb3J0Zm9saW8gU3RhbmRhcmQgcHJv + Z3JhbS4gSW5jZW50aXZlIFByb2dyYW0gKOKAnFByb2dyYW3igJ0pIGhhcyBi + ZWVuIGFsbG9jYXRlZCBieSB0aGUgTmV3IFlvcmsgU3RhdGUgUHVibGljIFNl + cnZpY2UgQ29tbWlzc2lvbiB0aHJvdWdoIHRoZSBSZW5ld2FibGUgUG9ydGZv + bGlvIFN0YW5kYXJkIHByb2dyYW0uIn1dfQ== + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:22 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/incentive_json/_incentives/should_allow_searches_by_customer_classes.yml b/spec/cassettes/Genability_Client/incentive_json/_incentives/should_allow_searches_by_customer_classes.yml new file mode 100644 index 0000000..e2a5eba --- /dev/null +++ b/spec/cassettes/Genability_Client/incentive_json/_incentives/should_allow_searches_by_customer_classes.yml @@ -0,0 +1,1268 @@ +--- +http_interactions: +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/beta/incentives?customerClasses=RESIDENTIAL + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:21 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: !binary |- + eyJzdGF0dXMiOiJzdWNjZXNzIiwiY291bnQiOjIzMTUsInR5cGUiOiJJbmNl + bnRpdmUiLCJyZXN1bHRzIjpbeyJpbmNlbnRpdmVJZCI6MzE1NjMwOCwibWFz + dGVySW5jZW50aXZlSWQiOjMxNTYzMDgsImVsaWdpYmlsaXR5IjoiQ09VTERf + QkVfRUxJR0lCTEUiLCJyZXF1aXJlZERhdGEiOlt7ImFwcGxpY2FiaWxpdHlL + ZXkiOiJlbmRVc2VSZXNpZGVudGlhbCIsImRpc3BsYXlOYW1lIjoiRW5kIFVz + ZSBSZXNpZGVudGlhbCIsImRlc2NyaXB0aW9uIjoiRW5kIFVzZSBUZWNobm9s + b2d5IGZvciBSZXNpZGVudGlhbCIsInJlcXVpcmVkVmFsdWUiOiJhaXJIZWF0 + Q29vbCIsIm9wZXJhdG9yIjoiPSJ9XSwidGFyaWZmQ29kZSI6Ik5vbmUiLCJp + bmNlbnRpdmVOYW1lIjoiUmVzaWRlbnRpYWwgSFZBQyBSZWJhdGVzIiwibHNl + SWQiOjczNCwibHNlTmFtZSI6IlBhY2lmaWMgR2FzICYgRWxlY3RyaWMgQ28i + LCJzZXJ2aWNlVHlwZSI6IkVMRUNUUklDSVRZIiwiY3VzdG9tZXJDbGFzcyI6 + IlJFU0lERU5USUFMIiwic3RhcnREYXRlIjoiMjAxMy0wMS0wMSIsImVuZERh + dGUiOiIyMDE0LTAxLTAxIiwiaXNFeGhhdXN0ZWQiOmZhbHNlLCJwcm9qZWN0 + VHlwZSI6Imh2YWMiLCJpbmNlbnRpdmVUeXBlIjoicmViYXRlIiwicmF0ZSI6 + MTAwLjAwMDAwMCwicmF0ZVVuaXQiOiJDT1NUX1BFUl9VTklUIiwiZG9jdW1l + bnRzIjpudWxsLCJqdXJpc2RpY3Rpb24iOiJ1dGlsaXR5IiwicXVhbnRpdHlL + ZXkiOnsia2V5TmFtZSI6Indob2xlSG91c2VGYW43MzQiLCJkaXNwbGF5TmFt + ZSI6Ildob2xlIEhvdXNlIEZhbiIsImRlc2NyaXB0aW9uIjoiV2hvbGUgSG91 + c2UgRmFuLiBSZXF1aXJlbWVudHM6IE1heSBiZSBhIG5ldyBpbnN0YWxsYXRp + b24gd2hlcmUgbm9uZSBwcmV2aW91c2x5IGV4aXN0ZWQuIE9uZSByZWJhdGUg + cGVyIGluc3RhbGxhdGlvbiBhZGRyZXNzLCByZWdhcmRsZXNzIG9mIHRoZW51 + bWJlciBvZiB1bml0cyBpbnN0YWxsZWQuIFRoZSBmYW4gbXVzdCBtb3ZlIDEs + MDAwIGN1YmljIGZlZXQgb2YgYWlyIHBlciBtaW51dGUoQ0ZNKSBvciBtb3Jl + IGFuZCBiZSBwZXJtYW5lbnRseSBpbnN0YWxsZWQgKGNvbm5lY3RlZHRvIHRo + ZSBmcmFtaW5nKS4gQ29uc3VsdCBtYW51ZmFjdHVyZXI/cyBzcGVjaWNhdGlv + bnMgdG8gZGV0ZXJtaW5ldGhlIHByb3BlciBmYW4gc2l6ZSBwcmlvciB0byBw + dXJjaGFzZS4gTG91dmVycyBiZXR3ZWVuIHRoZSBsaXZpbmcgc3BhY2UgYW5k + IHRoZSBhdHRpYyBzaG91bGRjcmVhdGUgYW4gYWlydGlnaHQgc2VhbCB3aGVu + IHRoZSBmYW4gaXMgb2ZmLiBBbiBpbnN1bGF0ZWQgbG91dmVyIGNvdmVyIGlz + IGFsc28gcmVjb21tZW5kZWQgZm9ydXNlIGluIHRoZSB3aW50ZXIuIEdvIHRv + IHd3dy5wZ2UuY29tL3JlYmF0ZXMgZm9yIGEgbGlzdCBvZiBxdWFsaWZ5aW5n + cHJvZHVjdHMuIEluc3RhbGxhdGlvbiBhZGRyZXNzIG11c3QgaGF2ZSBhbiBl + bGVjdHJpY2FjY291bnQgd2l0aCBQRyZFIn0sInF1YW50aXR5S2V5Q2FwIjpu + dWxsLCJzdGF0ZSI6IkNBIiwicGVyY2VudENvc3RDYXAiOm51bGwsInBlcmNl + bnRDb3N0Q2FwS2V5Ijp7ImtleU5hbWUiOm51bGx9LCJwYXltZW50Q2FwIjpu + dWxsLCJwYXltZW50RHVyYXRpb24iOm51bGwsImluY2VudGl2ZVBhaWRUbyI6 + InRlbmFudE9yT3duZXIiLCJwcm9qZWN0VHlwZUV4Y2x1c2l2ZSI6bnVsbCwi + YXBwbGljYWJpbGl0aWVzIjpbeyJhcHBsaWNhYmlsaXR5S2V5IjoiZW5kVXNl + UmVzaWRlbnRpYWwiLCJkaXNwbGF5TmFtZSI6IkVuZCBVc2UgUmVzaWRlbnRp + YWwiLCJkZXNjcmlwdGlvbiI6IkVuZCBVc2UgVGVjaG5vbG9neSBmb3IgUmVz + aWRlbnRpYWwiLCJyZXF1aXJlZFZhbHVlIjoiYWlySGVhdENvb2wiLCJvcGVy + YXRvciI6Ij0ifV0sInN1bW1hcnkiOm51bGwsInJlcXVpcmVtZW50cyI6IkFs + bCBQRyZFIGluY2VudGl2ZXMgYXBwbHkgdG93YXJkcyB0aGUgcHVyY2hhc2Ug + b2YgbmV3IG9yIHJlcGxhY2VtZW50IGVuZXJneS1lZmZpY2llbnQgZXF1aXBt + ZW50LiBVc2VkIG9yIHJlYnVpbHQgZXF1aXBtZW50IGlzIG5vdCBlbGlnaWJs + ZSwgYW5kIGN1c3RvbWVycyBtdXN0IGluY2x1ZGUgcHJvb2YgdGhhdCB0aGUg + YXBwbGlhbmNlcyBtZWV0IGFsbCB0aGUgcmVxdWlyZWQgZW5lcmd5IGVmZmlj + aWVuY3kgc3BlY2lmaWNhdGlvbnMuIFBsZWFzZSBub3RlIHRoYXQgZnVuZGlu + ZyBmb3IgdGhlc2UgcHJvZ3JhbXMgaXMgbGltaXRlZCBhbmQgYXZhaWxhYmxl + IG9uIGEgZmlyc3QtY29tZSwgZmlyc3Qtc2VydmVkIGJhc2lzIHVudGlsIGFs + bG9jYXRlZCBmdW5kcyBhcmUgZXhoYXVzdGVkIG9yIHRoZSBwcm9ncmFtIGVu + ZHMsIHdoaWNoZXZlciBjb21lcyBmaXJzdC4gVGhpcyBwcm9ncmFtIG1heSBi + ZSBtb2RpZmllZCBvciB0ZXJtaW5hdGVkIHdpdGhvdXQgcHJpb3Igbm90aWNl + LCBhbmQgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBhcHBseS4g + SW5zdGFsbGF0aW9uIGFkZHJlc3MgbXVzdCBoYXZlIGEgY29tbWVyY2lhbCBl + bGVjdHJpYyBhY2NvdW50IHdpdGhQRyZFLiBGb3IgaXRlbSBsZXZlbCBzcGVj + aWZpY2F0aW9ucyByZWZlciB0byBjYXRhbG9nLiJ9LHsiaW5jZW50aXZlSWQi + OjMxNTYzMDksIm1hc3RlckluY2VudGl2ZUlkIjozMTU2MzA5LCJlbGlnaWJp + bGl0eSI6IkNPVUxEX0JFX0VMSUdJQkxFIiwicmVxdWlyZWREYXRhIjpbeyJh + cHBsaWNhYmlsaXR5S2V5IjoiZW5kVXNlUmVzaWRlbnRpYWwiLCJkaXNwbGF5 + TmFtZSI6IkVuZCBVc2UgUmVzaWRlbnRpYWwiLCJkZXNjcmlwdGlvbiI6IkVu + ZCBVc2UgVGVjaG5vbG9neSBmb3IgUmVzaWRlbnRpYWwiLCJyZXF1aXJlZFZh + bHVlIjoiYnVpbGRpbmdTaGVsbCIsIm9wZXJhdG9yIjoiPSJ9XSwidGFyaWZm + Q29kZSI6Ik5vbmUiLCJpbmNlbnRpdmVOYW1lIjoiUmVzaWRlbnRpYWwgR2Vu + ZXJhbCBJbXByb3ZlbWVudHMgUmViYXRlcyIsImxzZUlkIjo3MzQsImxzZU5h + bWUiOiJQYWNpZmljIEdhcyAmIEVsZWN0cmljIENvIiwic2VydmljZVR5cGUi + OiJFTEVDVFJJQ0lUWSIsImN1c3RvbWVyQ2xhc3MiOiJSRVNJREVOVElBTCIs + InN0YXJ0RGF0ZSI6IjIwMTMtMDEtMDEiLCJlbmREYXRlIjoiMjAxNC0wMS0w + MSIsImlzRXhoYXVzdGVkIjpmYWxzZSwicHJvamVjdFR5cGUiOiJidWlsZGlu + Z1NoZWxsIiwiaW5jZW50aXZlVHlwZSI6InJlYmF0ZSIsInJhdGUiOjAuMjAw + MDAwLCJyYXRlVW5pdCI6IkNPU1RfUEVSX1VOSVQiLCJkb2N1bWVudHMiOm51 + bGwsImp1cmlzZGljdGlvbiI6InV0aWxpdHkiLCJxdWFudGl0eUtleSI6eyJr + ZXlOYW1lIjoiY29vbFJvb2ZMb3dTbG9wZTczNCIsImRpc3BsYXlOYW1lIjoi + Q29vbCBSb29mIExvdyBTbG9wZSIsImRlc2NyaXB0aW9uIjoiQ29vbCBSb29m + IExvdyBTbG9wZSBhdmFpbGFibGUgaW4gQ2xpbWF0ZSBab25lIChDWikgMiwg + NCwgMTEgJiAxMiBvbmx5LiBDdXN0b21lciBtdXN0IGhhdmUgZWxlY3RyaWNp + dHkgZGlzdHJpYnV0ZWQgYnkgUEcmRSB0byB0aGUgaW5zdGFsbGF0aW9uIGFk + ZHJlc3MuICBPbmx5IFBHJkUgcmVzaWRlbnRpYWwgZWxlY3RyaWMgY3VzdG9t + ZXJzIHdobyBvd24gYW4gZXhpc3Rpbmcgc2luZ2xlIGZhbWlseSBvciBtb2Jp + bGUgaG9tZSBhcmUgZWxpZ2libGUuIE11c3QgcmVzaWRlIGluIHF1YWxpZnlp + bmcgY2xpbWF0ZSB6b25lIDIsIDQsIDExLCAxMiBvciAxMy4gT25seSBzdGVl + cCBzbG9wZSByb29mcyBxdWFsaWZ5IGluIGNsaW1hdGUgem9uZSAxMy4gVG8g + ZmluZCB5b3VyIGNsaW1hdGUgem9uZSBnbyB0bzogd3d3LnBnZS5jb20vY2xp + bWF0ZXpvbmVzLiBDdXN0b21lciBtdXN0IGhhdmUgYSBjZW50cmFsIGFpciBj + b25kaXRpb25pbmcgKEFDKSBzeXN0ZW0gIG9yIGJlIGluc3RhbGxpbmcgYSBu + ZXcgQUMgc3lzdGVtIGNvbmN1cnJlbnRseS4gIEN1c3RvbWVyIG11c3QgcHVy + Y2hhc2UgYW5kIGhhdmUgaW5zdGFsbGVkIHJvb2ZpbmcgbWF0ZXJpYWxzIHRo + YXQgbWVldCBvciBleGNlZWQgdGhlIEFnZWQgU29sYXIgUmVmbGVjdGFuY2Ug + YW5kIEFnZWQgVGhlcm1hbCBFbWl0dGFuY2UgbGV2ZWxzIHNwZWNpZmllZCBp + biB0aGUgUmViYXRlIExldmVsIGFuZCBQcm9kdWN0IFNwZWNpZmljYXRpb25z + IFRhYmxlIGFsb25nIHdpdGggYmVpbmcgcmF0ZWQgYnkgdGhlIENvb2wgUm9v + ZiBSYXRpbmcgQ291bmNpbCAoQ1JSQykuIFRoZSBDUlJDIG1haW50YWlucyBh + IGRpcmVjdG9yeSBhbmQgc2VhcmNoYWJsZSBkYXRhYmFzZSBvZiByYXRlZCBw + cm9kdWN0cyBhdCB3d3cuY29vbHJvb2ZzLm9yZy4gRXhjbHVzaW9uczogIEhv + bWVzIHdpdGggcG9ydGFibGUgb3Igd2luZG93IGFpciBjb25kaXRpb25pbmcg + c3lzdGVtcyBhbmQgZXZhcG9yYXRpdmUgY29vbGVycyAoZS5nLiBzd2FtcCBj + b29sZXJzKSBkbyBub3QgcXVhbGlmeS4ifSwicXVhbnRpdHlLZXlDYXAiOm51 + bGwsInN0YXRlIjoiQ0EiLCJwZXJjZW50Q29zdENhcCI6bnVsbCwicGVyY2Vu + dENvc3RDYXBLZXkiOnsia2V5TmFtZSI6bnVsbH0sInBheW1lbnRDYXAiOm51 + bGwsInBheW1lbnREdXJhdGlvbiI6bnVsbCwiaW5jZW50aXZlUGFpZFRvIjoi + dGVuYW50T3JPd25lciIsInByb2plY3RUeXBlRXhjbHVzaXZlIjpudWxsLCJh + cHBsaWNhYmlsaXRpZXMiOlt7ImFwcGxpY2FiaWxpdHlLZXkiOiJlbmRVc2VS + ZXNpZGVudGlhbCIsImRpc3BsYXlOYW1lIjoiRW5kIFVzZSBSZXNpZGVudGlh + bCIsImRlc2NyaXB0aW9uIjoiRW5kIFVzZSBUZWNobm9sb2d5IGZvciBSZXNp + ZGVudGlhbCIsInJlcXVpcmVkVmFsdWUiOiJidWlsZGluZ1NoZWxsIiwib3Bl + cmF0b3IiOiI9In1dLCJzdW1tYXJ5IjpudWxsLCJyZXF1aXJlbWVudHMiOiJP + bmx5IFBHJkUgcmVzaWRlbnRpYWwgZWxlY3RyaWMgY3VzdG9tZXJzIHdobyBv + d24gYW4gZXhpc3Rpbmcgc2luZ2xlIGZhbWlseSBvciBtb2JpbGUgXG5ob21l + IGFyZSBlbGlnaWJsZS5cbi1NdXN0IHJlc2lkZSBpbiBxdWFsaWZ5aW5nIGNs + aW1hdGUgem9uZXMgKENaKSAyLCA0LCAxMSwgMTIgb3IgMTMuXG4tT25seSBz + dGVlcCBzbG9wZSByb29mcyBxdWFsaWZ5IGluIGNsaW1hdGUgem9uZSAxMy4g + VG8gZmluZCB5b3VyIGNsaW1hdGUgem9uZSBnbyB0byBcbnd3dy5wZ2UuY29t + L2NsaW1hdGV6b25lcy5cbi1DdXN0b21lciBtdXN0IGhhdmUgYSBjZW50cmFs + IGFpciBjb25kaXRpb25pbmcgKEFDKSBzeXN0ZW0gb3IgYmUgaW5zdGFsbGlu + ZyBhIG5ldyBBQyBzeXN0ZW0gY29uY3VycmVudGx5LlxuLUNoZWNrIHdpdGgg + eW91ciBsb2NhbCBjaXR5L2NvdW50eSBidWlsZGluZyBkZXBhcnRtZW50IGZv + ciBhbnkgc3BlY2lhbCByZXF1aXJlbWVudHMgXG5yZWxhdGVkIHRvIHlvdXIg + c2VsZWN0ZWQgcHJvZHVjdC5cbi1DdXN0b21lciBtdXN0IHB1cmNoYXNlIGFu + ZCBoYXZlIGluc3RhbGxlZCByb29maW5nIG1hdGVyaWFscyB0aGF0IG1lZXQg + b3IgZXhjZWVkIHRoZSBBZ2VkIFNvbGFyIFJlZmxlY3RhbmNlIGFuZCBBZ2Vk + IFRoZXJtYWwgRW1pdHRhbmNlIGxldmVscyBzcGVjaWZpZWQgaW4gdGhlIFJl + YmF0ZSBMZXZlbCBhbmQgUHJvZHVjdCBTcGVjaWZpY2F0aW9ucyBUYWJsZSBh + bmQgdGhhdCBhcmUgcmF0ZWQgYnkgdGhlIENvb2wgUm9vZiBSYXRpbmcgQ291 + bmNpbCAoQ1JSQykuXG4tVGhlIENSUkMgbWFpbnRhaW5zIGEgZGlyZWN0b3J5 + IGFuZCBzZWFyY2hhYmxlIGRhdGFiYXNlIG9mIHJhdGVkIHByb2R1Y3RzIGF0 + IHd3dy5jb29scm9vZnMub3JnLlxuLUluc3RhbGxhdGlvbiBhZGRyZXNzIG11 + c3QgaGF2ZSBhbiBlbGVjdHJpYyBhY2NvdW50IHdpdGggUEcmRS5cbiJ9LHsi + aW5jZW50aXZlSWQiOjMxNTYzMTAsIm1hc3RlckluY2VudGl2ZUlkIjozMTU2 + MzEwLCJlbGlnaWJpbGl0eSI6IkNPVUxEX0JFX0VMSUdJQkxFIiwicmVxdWly + ZWREYXRhIjpbeyJhcHBsaWNhYmlsaXR5S2V5IjoiZW5kVXNlUmVzaWRlbnRp + YWwiLCJkaXNwbGF5TmFtZSI6IkVuZCBVc2UgUmVzaWRlbnRpYWwiLCJkZXNj + cmlwdGlvbiI6IkVuZCBVc2UgVGVjaG5vbG9neSBmb3IgUmVzaWRlbnRpYWwi + LCJyZXF1aXJlZFZhbHVlIjoibWFqb3JBcHBsaWFuY2VzIiwib3BlcmF0b3Ii + OiI9In1dLCJ0YXJpZmZDb2RlIjoiTm9uZSIsImluY2VudGl2ZU5hbWUiOiJS + ZXNpZGVudGlhbCBBcHBsaWFuY2VzIFJlYmF0ZXMiLCJsc2VJZCI6NzM0LCJs + c2VOYW1lIjoiUGFjaWZpYyBHYXMgJiBFbGVjdHJpYyBDbyIsInNlcnZpY2VU + eXBlIjoiRUxFQ1RSSUNJVFkiLCJjdXN0b21lckNsYXNzIjoiUkVTSURFTlRJ + QUwiLCJzdGFydERhdGUiOiIyMDEzLTAxLTAxIiwiZW5kRGF0ZSI6IjIwMTQt + MDEtMDEiLCJpc0V4aGF1c3RlZCI6ZmFsc2UsInByb2plY3RUeXBlIjoibWFq + b3JBcHBsaWFuY2VzIiwiaW5jZW50aXZlVHlwZSI6InJlYmF0ZSIsInJhdGUi + OjUwLjAwMDAwMCwicmF0ZVVuaXQiOiJDT1NUX1BFUl9VTklUIiwiZG9jdW1l + bnRzIjpudWxsLCJqdXJpc2RpY3Rpb24iOiJ1dGlsaXR5IiwicXVhbnRpdHlL + ZXkiOnsia2V5TmFtZSI6ImhpZ2hFZmZpY2llbmN5Q2xvdGhlc1dhc2hlcjcz + NCIsImRpc3BsYXlOYW1lIjoiSGlnaC1FZmZpY2llbmN5IENsb3RoZXMgV2Fz + aGVyIiwiZGVzY3JpcHRpb24iOiJIaWdoLUVmZmljaWVuY3kgQ2xvdGhlcyBX + YXNoZXIgQ0VFIFRpZXIgMyBvciBoaWdoZXIsIE1FRiBvZiAyLjQgb3IgZ3Jl + YXRlciwgV0Ygb2YgNC4wIG9yIGxlc3MgUmVxdWlyZW1lbnRzOiBDbG90aGVz + IHdhc2hlciBtdXN0IGJlIGEgQ29uc29ydGl1bSBmb3IgRW5lcmd5IEVmZmlj + aWVuY3kgKENFRSkgVGllcjMgbW9kZWwgb3IgaGlnaGVyLiBHb3RvIHd3dy5j + ZWUxLm9yZy9jb20vY3dzaC9jd3Noc3BlYy5wZGZcclxuZm9yIGEgbGlzdCBv + ZiBxdWFsaWZ5aW5nIGNvbW1lcmNpYWwgd2FzaGVycy4gVGhlIHdhc2hlciBt + dXN0IGhhdmUgYSBNb2RpZmllZCBFbmVyZ3kgRmFjdG9yIChNRUYpIG9mIDIu + NCBvciBncmVhdGVyIGFuZFxyXG5hIFdhdGVyIEZhY3RvciBvZiA0LjAgb3Ig + bGVzcy4gSW5zdGFsbGF0aW9uIGFkZHJlc3MgbXVzdCBoYXZlIGNvbW1lcmNp + YWwgZWxlY3RyaWMgYW5kIG9yIG5hdHVyYWwgZ2FzIGFjY291bnRzIHdpdGgg + UEcmRS4gRXhjbHVzaW9uczogTm90IGFsbCBFTkVSR1lTVEFSIGNsb3RoZXN3 + YXNoZXJzIHF1YWxpZnkgZm9yIHRoaXMgcmViYXRlLiBDRUUgVGllcjEgYW5k + IDIgbW9kZWxzIGRvIG5vdCBxdWFsaWZ5LiJ9LCJxdWFudGl0eUtleUNhcCI6 + bnVsbCwic3RhdGUiOiJDQSIsInBlcmNlbnRDb3N0Q2FwIjpudWxsLCJwZXJj + ZW50Q29zdENhcEtleSI6eyJrZXlOYW1lIjpudWxsfSwicGF5bWVudENhcCI6 + bnVsbCwicGF5bWVudER1cmF0aW9uIjpudWxsLCJpbmNlbnRpdmVQYWlkVG8i + OiJ0ZW5hbnRPck93bmVyIiwicHJvamVjdFR5cGVFeGNsdXNpdmUiOm51bGws + ImFwcGxpY2FiaWxpdGllcyI6W3siYXBwbGljYWJpbGl0eUtleSI6ImVuZFVz + ZVJlc2lkZW50aWFsIiwiZGlzcGxheU5hbWUiOiJFbmQgVXNlIFJlc2lkZW50 + aWFsIiwiZGVzY3JpcHRpb24iOiJFbmQgVXNlIFRlY2hub2xvZ3kgZm9yIFJl + c2lkZW50aWFsIiwicmVxdWlyZWRWYWx1ZSI6Im1ham9yQXBwbGlhbmNlcyIs + Im9wZXJhdG9yIjoiPSJ9XSwic3VtbWFyeSI6bnVsbCwicmVxdWlyZW1lbnRz + IjoiQWxsIFBHJkUgaW5jZW50aXZlcyBhcHBseSB0b3dhcmRzIHRoZSBwdXJj + aGFzZSBvZiBuZXcgb3IgcmVwbGFjZW1lbnQgZW5lcmd5LWVmZmljaWVudCBl + cXVpcG1lbnQuIFVzZWQgb3IgcmVidWlsdCBlcXVpcG1lbnQgaXMgbm90IGVs + aWdpYmxlLCBhbmQgY3VzdG9tZXJzIG11c3QgaW5jbHVkZSBwcm9vZiB0aGF0 + IHRoZSBhcHBsaWFuY2VzIG1lZXQgYWxsIHRoZSByZXF1aXJlZCBlbmVyZ3kg + ZWZmaWNpZW5jeSBzcGVjaWZpY2F0aW9ucy4gUGxlYXNlIG5vdGUgdGhhdCBm + dW5kaW5nIGZvciB0aGVzZSBwcm9ncmFtcyBpcyBsaW1pdGVkIGFuZCBhdmFp + bGFibGUgb24gYSBmaXJzdC1jb21lLCBmaXJzdC1zZXJ2ZWQgYmFzaXMgdW50 + aWwgYWxsb2NhdGVkIGZ1bmRzIGFyZSBleGhhdXN0ZWQgb3IgdGhlIHByb2dy + YW0gZW5kcywgd2hpY2hldmVyIGNvbWVzIGZpcnN0LiBUaGlzIHByb2dyYW0g + bWF5IGJlIG1vZGlmaWVkIG9yIHRlcm1pbmF0ZWQgd2l0aG91dCBwcmlvciBu + b3RpY2UsIGFuZCBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGFw + cGx5LiBJbnN0YWxsYXRpb24gYWRkcmVzcyBtdXN0IGhhdmUgYSBjb21tZXJj + aWFsIGVsZWN0cmljIGFjY291bnQgd2l0aFBHJkUuIEZvciBpdGVtIGxldmVs + IHNwZWNpZmljYXRpb25zIHJlZmVyIHRvIGNhdGFsb2cuIn0seyJpbmNlbnRp + dmVJZCI6MzE1NjMxMSwibWFzdGVySW5jZW50aXZlSWQiOjMxNTYzMTEsImVs + aWdpYmlsaXR5IjoiQ09VTERfQkVfRUxJR0lCTEUiLCJyZXF1aXJlZERhdGEi + Olt7ImFwcGxpY2FiaWxpdHlLZXkiOiJlbmRVc2VSZXNpZGVudGlhbCIsImRp + c3BsYXlOYW1lIjoiRW5kIFVzZSBSZXNpZGVudGlhbCIsImRlc2NyaXB0aW9u + IjoiRW5kIFVzZSBUZWNobm9sb2d5IGZvciBSZXNpZGVudGlhbCIsInJlcXVp + cmVkVmFsdWUiOiJwb29sIiwib3BlcmF0b3IiOiI9In1dLCJ0YXJpZmZDb2Rl + IjoiTm9uZSIsImluY2VudGl2ZU5hbWUiOiJSZXNpZGVudGlhbCAgUG9vbCBG + aWx0cmF0aW9uIFB1bXBzIFJlYmF0ZXMiLCJsc2VJZCI6NzM0LCJsc2VOYW1l + IjoiUGFjaWZpYyBHYXMgJiBFbGVjdHJpYyBDbyIsInNlcnZpY2VUeXBlIjoi + RUxFQ1RSSUNJVFkiLCJjdXN0b21lckNsYXNzIjoiUkVTSURFTlRJQUwiLCJz + dGFydERhdGUiOiIyMDEzLTAxLTAxIiwiZW5kRGF0ZSI6IjIwMTQtMDEtMDEi + LCJpc0V4aGF1c3RlZCI6ZmFsc2UsInByb2plY3RUeXBlIjoicG9vbCIsImlu + Y2VudGl2ZVR5cGUiOiJyZWJhdGUiLCJyYXRlIjoxMDAuMDAwMDAwLCJyYXRl + VW5pdCI6IkNPU1RfUEVSX1VOSVQiLCJkb2N1bWVudHMiOm51bGwsImp1cmlz + ZGljdGlvbiI6InV0aWxpdHkiLCJxdWFudGl0eUtleSI6eyJrZXlOYW1lIjoi + dmFyaWFibGVTcGVlZFBvb2xQdW1wRm9yRmlsdHJhdGlvbk9ubHk3MzQiLCJk + aXNwbGF5TmFtZSI6IlZhcmlhYmxlLVNwZWVkIFBvb2wgUHVtcCBmb3IgRmls + dHJhdGlvbiBPbmx5IiwiZGVzY3JpcHRpb24iOiJWYXJpYWJsZS1TcGVlZCBQ + b29sIFB1bXAgZm9yIEZpbHRyYXRpb24gT25seS4gUmVxdWlyZW1lbnRzOiBB + bGwgcHVtcHMgbXVzdCBiZSBuZXcsIGFuZCBtdXN0IGJlIHB1cmNoYXNlZCBh + bmQgaW5zdGFsbGVkIGJldHdlZW4gSmFudWFyeSAxLCAyMDEzLCBhbmQgRGVj + ZW1iZXIgMzEsIDIwMTQuIFJlYmF0ZXMgYXJlIGZvciBxdWFsaWZ5aW5nIHB1 + bXBzLCB0aHJlZSBob3JzZXBvd2VyIG9yIGxlc3MsIGluc3RhbGxlZCBvbiBu + ZXcgb3IgZXhpc3RpbmcgcmVzaWRlbnRpYWwgaW4tZ3JvdW5kIHN3aW1taW5n + IHBvb2xzIGZvciBwcmltYXJ5IGZpbHRyYXRpb24gb25seS4gTmV3IHB1bXAg + bXVzdCBiZSBvcGVyYXRlZCB3aXRoIGEgcXVhbGlmeWluZyBjb250cm9sbGVy + LiBDdXN0b21lciBtYXkgZWl0aGVyIHVzZSBhbiBleGlzdGluZyBxdWFsaWZ5 + aW5nIGNvbnRyb2xsZXIgb3IgcHVyY2hhc2UgYW5kIGluc3RhbGwgYSBzZXBh + cmF0ZSBxdWFsaWZ5aW5nIGNvbnRyb2xsZXIgdW5pdCBpZiB0aGUgbmV3IHZh + cmlhYmxlIHNwZWVkIG9yIHZhcmlhYmxlLWZsb3cgcHVtcCBkb2VzIG5vdCBo + YXZlIGEgYnVpbHQtaW4gcXVhbGlmeWluZyBjb250cm9sbGVyLiBRdWFsaWZ5 + aW5nIGNvbnRyb2xsZXIgaXMgYSBwcm9ncmFtbWFibGUgY29udHJvbGxlciB0 + aGF0IG1lZXRzIENBIFRpdGxlIDIwIHJlZ3VsYXRpb24gcmVxdWlyZW1lbnRz + LiBNdXN0IGJlIGFibGUgdG8gb3BlcmF0ZSB0aGUgcG9vbCBwdW1wIG9uIGF0 + IGxlYXN0IHR3byBzcGVlZHMgYW5kIHN3aXRjaCBzcGVlZHMgYXV0b21hdGlj + YWxseS4gTXVzdCBkZWZhdWx0IHRvIHRoZSBsb3dlc3Qgc3BlZWQgYWZ0ZXIg + b25lIG5vcm1hbCBjeWNsZSAoMjQgaG91cnMpIGlmIHRlbXBvcmFyeSBoaWdo + IHNwZWVkIG92ZXJyaWRlIGNhcGFiaWxpdHkgZXhpc3RzLiBFeGNsdXNpb25z + OiBBYm92ZS1ncm91bmQgcG9vbCwgcG9uZCwgcG9vbCBjbGVhbmVyL2Jvb3N0 + ZXIsIHNwYSBhbmQgd2F0ZXIgZmVhdHVyZSBwdW1wcyBkbyBub3QgcXVhbGlm + eS4ifSwicXVhbnRpdHlLZXlDYXAiOm51bGwsInN0YXRlIjoiQ0EiLCJwZXJj + ZW50Q29zdENhcCI6bnVsbCwicGVyY2VudENvc3RDYXBLZXkiOnsia2V5TmFt + ZSI6bnVsbH0sInBheW1lbnRDYXAiOm51bGwsInBheW1lbnREdXJhdGlvbiI6 + bnVsbCwiaW5jZW50aXZlUGFpZFRvIjoidGVuYW50T3JPd25lciIsInByb2pl + Y3RUeXBlRXhjbHVzaXZlIjpudWxsLCJhcHBsaWNhYmlsaXRpZXMiOlt7ImFw + cGxpY2FiaWxpdHlLZXkiOiJlbmRVc2VSZXNpZGVudGlhbCIsImRpc3BsYXlO + YW1lIjoiRW5kIFVzZSBSZXNpZGVudGlhbCIsImRlc2NyaXB0aW9uIjoiRW5k + IFVzZSBUZWNobm9sb2d5IGZvciBSZXNpZGVudGlhbCIsInJlcXVpcmVkVmFs + dWUiOiJwb29sIiwib3BlcmF0b3IiOiI9In1dLCJzdW1tYXJ5IjpudWxsLCJy + ZXF1aXJlbWVudHMiOiJGb2xsb3cgYWxsIG1hbnVmYWN0dXJlciBpbnN0YWxs + YXRpb24gcmVxdWlyZW1lbnRzLlxuLUFsbCBwdW1wcyBtdXN0IGJlIG5ldywg + YW5kIG11c3QgYmUgcHVyY2hhc2VkIGFuZCBpbnN0YWxsZWQgYmV0d2VlbiBK + YW51YXJ5IDEsIDIwMTMsIGFuZCBEZWNlbWJlciAzMSwgMjAxNC5cbi1FcXVp + cG1lbnQgYW5kIG1hdGVyaWFscyBtdXN0IG1lZXQgb3IgZXhjZWVkIGFsbCBh + cHBsaWNhYmxlIGxvY2FsLCBzdGF0ZSBhbmQgZmVkZXJhbCBzdGFuZGFyZHMu + XG4tUmViYXRlcyBhcmUgZm9yIHF1YWxpZnlpbmcgcHVtcHMsIHRocmVlIGhv + cnNlcG93ZXIgb3IgbGVzcywgaW5zdGFsbGVkIG9uIG5ldyBvciBleGlzdGlu + ZyByZXNpZGVudGlhbCBpbi1ncm91bmQgc3dpbW1pbmcgcG9vbHMgZm9yIHBy + aW1hcnkgZmlsdHJhdGlvbiBvbmx5LiBWaXNpdCB3d3cucGdlLmNvbS9wb29s + cyBmb3IgYSBsaXN0IG9mIHF1YWxpZnlpbmcgcHVtcHMuXG4tQWJvdmUtZ3Jv + dW5kIHBvb2wsIHBvbmQsIHBvb2wgY2xlYW5lci9ib29zdGVyLCBzcGEgYW5k + IHdhdGVyIGZlYXR1cmUgcHVtcHMgZG8gbm90IHF1YWxpZnkuXG4tTmV3IHB1 + bXAgbXVzdCBiZSBvcGVyYXRlZCB3aXRoIGEgcXVhbGlmeWluZyBjb250cm9s + bGVyLlxuIEN1c3RvbWVyIG1heSBlaXRoZXIgdXNlIGFuIGV4aXN0aW5nIHF1 + YWxpZnlpbmcgY29udHJvbGxlciBvciBwdXJjaGFzZSBhbmQgaW5zdGFsbCBh + IHNlcGFyYXRlIHF1YWxpZnlpbmcgY29udHJvbGxlciB1bml0IGlmIHRoZSBu + ZXcgdmFyaWFibGUgc3BlZWQgb3IgdmFyaWFibGUtZmxvdyBwdW1wIGRvZXMg + bm90IGhhdmUgYSBidWlsdC1pbiBxdWFsaWZ5aW5nIGNvbnRyb2xsZXIuXG5R + dWFsaWZ5aW5nIGNvbnRyb2xsZXIgaXMgYSBwcm9ncmFtbWFibGUgY29udHJv + bGxlciB0aGF0IG1lZXRzIENBIFRpdGxlIDIwIHJlZ3VsYXRpb24gcmVxdWly + ZW1lbnRzLiBNdXN0IGJlIGFibGUgdG8gb3BlcmF0ZSB0aGUgcG9vbCBwdW1w + IG9uIGF0IGxlYXN0IHR3byBzcGVlZHMgYW5kIHN3aXRjaCBzcGVlZHMgYXV0 + b21hdGljYWxseSJ9LHsiaW5jZW50aXZlSWQiOjMxNTYzMjgsIm1hc3Rlcklu + Y2VudGl2ZUlkIjozMTU2MzI4LCJlbGlnaWJpbGl0eSI6IkNPVUxEX0JFX0VM + SUdJQkxFIiwicmVxdWlyZWREYXRhIjpbeyJhcHBsaWNhYmlsaXR5S2V5Ijoi + ZW5kVXNlUmVzaWRlbnRpYWwiLCJkaXNwbGF5TmFtZSI6IkVuZCBVc2UgUmVz + aWRlbnRpYWwiLCJkZXNjcmlwdGlvbiI6IkVuZCBVc2UgVGVjaG5vbG9neSBm + b3IgUmVzaWRlbnRpYWwiLCJyZXF1aXJlZFZhbHVlIjoid2F0ZXJIZWF0Iiwi + b3BlcmF0b3IiOiI9In1dLCJ0YXJpZmZDb2RlIjoiTm9uZSIsImluY2VudGl2 + ZU5hbWUiOiJSZXNpZGVudGlhbCBXYXRlciBIZWF0ZXIgUmViYXRlIiwibHNl + SWQiOjEyMjgsImxzZU5hbWUiOiJTb3V0aGVybiBDYWxpZm9ybmlhIEVkaXNv + biBDbyIsInNlcnZpY2VUeXBlIjoiRUxFQ1RSSUNJVFkiLCJjdXN0b21lckNs + YXNzIjoiUkVTSURFTlRJQUwiLCJzdGFydERhdGUiOiIyMDEzLTAxLTAxIiwi + ZW5kRGF0ZSI6IjIwMTQtMDEtMDEiLCJpc0V4aGF1c3RlZCI6ZmFsc2UsInBy + b2plY3RUeXBlIjoid2F0ZXJIZWF0IiwiaW5jZW50aXZlVHlwZSI6InJlYmF0 + ZSIsInJhdGUiOjIwMC4wMDAwMDAsInJhdGVVbml0IjoiQ09TVF9QRVJfVU5J + VCIsImRvY3VtZW50cyI6bnVsbCwianVyaXNkaWN0aW9uIjoidXRpbGl0eSIs + InF1YW50aXR5S2V5Ijp7ImtleU5hbWUiOiJoeWJyaWRFbGVjdHJpY0hlYXRQ + dW1wV2F0ZXJIZWF0ZXIiLCJkaXNwbGF5TmFtZSI6Ikh5YnJpZCBFbGVjdHJp + YyBIZWF0IFB1bXAgV2F0ZXIgSGVhdGVyIiwiZGVzY3JpcHRpb24iOiJIeWJy + aWQgRWxlY3RyaWMgSGVhdCBQdW1wIFdhdGVyIEhlYXRlclxyXG5cclxuUmVx + dWlyZW1lbnRzOiBIeWJyaWQgZWxlY3RyaWMgaGVhdCBwdW1wIHdhdGVyIGhl + YXRlciBtdXN0IGhhdmUgYW4gZW5lcmd5IGZhY3RvciBvZiAyLjAgb3IgZ3Jl + YXRlciBhbmQgYmUgNDAgZ2FsbG9ucyBvciBncmVhdGVyLiBJbnN0YWxsIHRo + ZSBxdWFsaWZ5aW5nIGh5YnJpZCBlbGVjdHJpYyBoZWF0IHB1bXAgd2F0ZXIg + aGVhdGVyIGJ5IEZlYnJ1YXJ5IDI4LCAyMDE0LiBSZWJhdGUgaXMgbGltaXRl + ZCB0byBoeWJyaWQgZWxlY3RyaWMgaGVhdCBwdW1wIHdhdGVyIGhlYXRlcnMg + dGhhdCBhcmUgNDAgZ2FsbG9ucyBvciBncmVhdGVyLiBUaGUgbmV3IHF1YWxp + ZnlpbmcgcHJvZHVjdCBtdXN0IHJlcGxhY2UgYW4gZXhpc3RpbmcgZWxlY3Ry + aWMgd2F0ZXIgaGVhdGVyLiBQcm9vZiBvZiBwdXJjaGFzZSBtdXN0IGJlIHBy + b3ZpZGVkIHdpdGggeW91ciBhcHBsaWNhdGlvbi4gT25lIHdhdGVyIGhlYXRl + ciByZWJhdGUgcGVyIGluc3RhbGxhdGlvbiBhZGRyZXNzLiAgXHJcblxyXG5F + eGNsdXNpb246IFRhbmtsZXNzIHdhdGVyIGhlYXRlcnMgZG8gbm90IHF1YWxp + ZnkuIFJlcGxhY2luZyBhIGdhcyB3YXRlciBoZWF0ZXIgd2l0aCBhIGh5YnJp + ZCBlbGVjdHJpYyBoZWF0IHB1bXAgd2F0ZXIgaGVhdGVyIGRvZXMgbm90IHF1 + YWxpZnkuICBcclxuIn0sInF1YW50aXR5S2V5Q2FwIjpudWxsLCJzdGF0ZSI6 + IkNBIiwicGVyY2VudENvc3RDYXAiOm51bGwsInBlcmNlbnRDb3N0Q2FwS2V5 + Ijp7ImtleU5hbWUiOm51bGx9LCJwYXltZW50Q2FwIjpudWxsLCJwYXltZW50 + RHVyYXRpb24iOm51bGwsImluY2VudGl2ZVBhaWRUbyI6InRlbmFudE9yT3du + ZXIiLCJwcm9qZWN0VHlwZUV4Y2x1c2l2ZSI6bnVsbCwiYXBwbGljYWJpbGl0 + aWVzIjpbeyJhcHBsaWNhYmlsaXR5S2V5IjoiZW5kVXNlUmVzaWRlbnRpYWwi + LCJkaXNwbGF5TmFtZSI6IkVuZCBVc2UgUmVzaWRlbnRpYWwiLCJkZXNjcmlw + dGlvbiI6IkVuZCBVc2UgVGVjaG5vbG9neSBmb3IgUmVzaWRlbnRpYWwiLCJy + ZXF1aXJlZFZhbHVlIjoid2F0ZXJIZWF0Iiwib3BlcmF0b3IiOiI9In1dLCJz + dW1tYXJ5IjpudWxsLCJyZXF1aXJlbWVudHMiOiJQdXJjaGFzZSBhIG5ldyBx + dWFsaWZ5aW5nIGVsZWN0cmljIHN0b3JhZ2Ugd2F0ZXIgaGVhdGVyIGJldHdl + ZW4gSmFudWFyeSAyMDEzIGFuZCBEZWNlbWJlciAzMSwgMjAxMy4gVGFua2xl + c3Mgd2F0ZXIgaGVhdGVycyBkbyBub3QgcXVhbGlmeS4gUmVwbGFjaW5nIGEg + Z2FzIHdhdGVyIGhlYXRlciB3aXRoIGFuIGVsZWN0cmljIHVuaXQgZG9lcyBu + b3QgcXVhbGlmeS4gTWFrZSBzdXJlIHRoZSBwcm9kdWN0IGFwcGVhcnMgb24g + dGhlIGxpc3Qgb2YgcXVhbGlmeWluZyBwcm9kdWN0cyB0aGF0IGNhbiBiZSBm + b3VuZCBhdCBTQ0Ugd2Vic2l0ZS4gSW5zdGFsbCB0aGUgcXVhbGlmeWluZyBl + bGVjdHJpYyBzdG9yYWdlIHdhdGVyIGhlYXRlciBieSBGZWJydWFyeSAyOCwg + MjAxNC4gVGhlIG5ldyBxdWFsaWZ5aW5nIHByb2R1Y3QgbXVzdCByZXBsYWNl + IGFuIGV4aXN0aW5nIGVsZWN0cmljIHdhdGVyIGhlYXRlci4gUHJvb2Ygb2Yg + cHVyY2hhc2UgbXVzdCBiZSBwcm92aWRlZCB3aXRoIHlvdXIgYXBwbGljYXRp + b24uIExpbWl0OiBPbmUgb2YgYW55IHR5cGUgb2YgSEVFUiB3YXRlciBoZWF0 + ZXIgcmViYXRlIHBlciBJbnN0YWxsYXRpb24gQWRkcmVzcy4gRm9yIGl0ZW0g + bGV2ZWwgc3BlY2lmaWNhdGlvbnMgcmVmZXIgdG8gY2F0YWxvZy4ifSx7Imlu + Y2VudGl2ZUlkIjozMTU2MzI5LCJtYXN0ZXJJbmNlbnRpdmVJZCI6MzE1NjMy + OSwiZWxpZ2liaWxpdHkiOiJDT1VMRF9CRV9FTElHSUJMRSIsInJlcXVpcmVk + RGF0YSI6W3siYXBwbGljYWJpbGl0eUtleSI6ImVuZFVzZVJlc2lkZW50aWFs + IiwiZGlzcGxheU5hbWUiOiJFbmQgVXNlIFJlc2lkZW50aWFsIiwiZGVzY3Jp + cHRpb24iOiJFbmQgVXNlIFRlY2hub2xvZ3kgZm9yIFJlc2lkZW50aWFsIiwi + cmVxdWlyZWRWYWx1ZSI6Im1ham9yQXBwbGlhbmNlcyIsIm9wZXJhdG9yIjoi + PSJ9XSwidGFyaWZmQ29kZSI6Ik5vbmUiLCJpbmNlbnRpdmVOYW1lIjoiUmVz + aWRlbnRpYWwgQ2xvdGhlcyBXYXNoZXIgUmViYXRlIiwibHNlSWQiOjEyMjgs + ImxzZU5hbWUiOiJTb3V0aGVybiBDYWxpZm9ybmlhIEVkaXNvbiBDbyIsInNl + cnZpY2VUeXBlIjoiRUxFQ1RSSUNJVFkiLCJjdXN0b21lckNsYXNzIjoiUkVT + SURFTlRJQUwiLCJzdGFydERhdGUiOiIyMDEzLTAxLTAxIiwiZW5kRGF0ZSI6 + IjIwMTQtMDEtMDEiLCJpc0V4aGF1c3RlZCI6ZmFsc2UsInByb2plY3RUeXBl + IjoibWFqb3JBcHBsaWFuY2VzIiwiaW5jZW50aXZlVHlwZSI6InJlYmF0ZSIs + InJhdGUiOjUwLjAwMDAwMCwicmF0ZVVuaXQiOiJDT1NUX1BFUl9VTklUIiwi + ZG9jdW1lbnRzIjpudWxsLCJqdXJpc2RpY3Rpb24iOiJ1dGlsaXR5IiwicXVh + bnRpdHlLZXkiOnsia2V5TmFtZSI6ImVuZXJneVN0YXJRdWFsaWZpZWRDbG90 + aGVzV2FzaGVyIiwiZGlzcGxheU5hbWUiOiJFbmVyZ3kgU3RhciBRdWFsaWZp + ZWQgQ2xvdGhlcyBXYXNoZXIiLCJkZXNjcmlwdGlvbiI6IkVuZXJneSBTdGFy + IFF1YWxpZmllZCBDbG90aGVzIFdhc2hlclxyXG5cclxuUmVxdWlyZW1lbnRz + OiBJbnN0YWxsIHRoZSBxdWFsaWZ5aW5nIGNsb3RoZXMgd2FzaGVyIGJ5IEZl + YnJ1YXJ5IDI4LCAyMDE0LiBUaGUgRU5FUkdZIFNUQVIgcXVhbGlmZWQgY2xv + dGhlcyB3YXNoZXIgbXVzdCBoYXZlIGEgbW9kaWZlZCBlbmVyZ3kgZmFjdG9y + IChNRUYpIG9mIDIuMCBvciBncmVhdGVyIGFuZCBhIHdhdGVyIGZhY3RvciAo + d2YpIG9mIDYuMCBvciBsZXNzLiBSZWJhdGUgaXMgbGltaXRlZCB0byBTQ0Ug + cmVzaWRlbnRpYWwgY3VzdG9tZXJzIHdobyBhcmUgY3VycmVudGx5IHVzaW5n + IGFuIGVsZWN0cmljIHdhdGVyIGhlYXRlci4gUHJvb2Ygb2YgcHVyY2hhc2Ug + bXVzdCBiZSBwcm92aWRlZCB3aXRoIHlvdXIgYXBwbGljYXRpb24uIExpbWl0 + IG9uZSBFTkVSR1kgU1RBUiBxdWFsaWZpZWQgY2xvdGhlcyB3YXNoZXIgcmVi + YXRlIHBlciBJbnN0YWxsYXRpb24gQWRkcmVzc1xyXG5cclxuIn0sInF1YW50 + aXR5S2V5Q2FwIjpudWxsLCJzdGF0ZSI6IkNBIiwicGVyY2VudENvc3RDYXAi + Om51bGwsInBlcmNlbnRDb3N0Q2FwS2V5Ijp7ImtleU5hbWUiOm51bGx9LCJw + YXltZW50Q2FwIjpudWxsLCJwYXltZW50RHVyYXRpb24iOm51bGwsImluY2Vu + dGl2ZVBhaWRUbyI6InRlbmFudE9yT3duZXIiLCJwcm9qZWN0VHlwZUV4Y2x1 + c2l2ZSI6bnVsbCwiYXBwbGljYWJpbGl0aWVzIjpbeyJhcHBsaWNhYmlsaXR5 + S2V5IjoiZW5kVXNlUmVzaWRlbnRpYWwiLCJkaXNwbGF5TmFtZSI6IkVuZCBV + c2UgUmVzaWRlbnRpYWwiLCJkZXNjcmlwdGlvbiI6IkVuZCBVc2UgVGVjaG5v + bG9neSBmb3IgUmVzaWRlbnRpYWwiLCJyZXF1aXJlZFZhbHVlIjoibWFqb3JB + cHBsaWFuY2VzIiwib3BlcmF0b3IiOiI9In1dLCJzdW1tYXJ5IjpudWxsLCJy + ZXF1aXJlbWVudHMiOiItUHVyY2hhc2UgYSBuZXcgRU5FUkdZIFNUQVIgcXVh + bGlmaWVkIGNsb3RoZXMgd2FzaGVyIGJldHdlZW4gSmFudWFyeSAxLCAyMDEz + IGFuZCBEZWNlbWJlciAzMSwgMjAxMy4gLSBNYWtlIHN1cmUgdGhlIHByb2R1 + Y3QgYXBwZWFycyBvbiB0aGUgbGlzdCBvZiBxdWFsaWZ5aW5nIHByb2R1Y3Rz + IHRoYXQgY2FuIGJlIGZvdW5kIGF0IHd3dy5zY2UuY29tL2FwcGxpYW5jZXMg + LSBJbnN0YWxsIHRoZSBxdWFsaWZ5aW5nIGNsb3RoZXMgd2FzaGVyIGJ5IEZl + YnJ1YXJ5IDI4LCAyMDE0LiAtIFRoZSBFTkVSR1kgU1RBUiBxdWFsaWZpZWQg + Y2xvdGhlcyB3YXNoZXIgbXVzdCBoYXZlIGEgbW9kaWZpZWQgZW5lcmd5IGZh + Y3RvciAoTUVGKSBvZiAyLjAgb3IgZ3JlYXRlciBBTkQgYSB3YXRlciBmYWN0 + b3IgKHdmKSBvZiA2LjAgb3IgbGVzcy4gLSBSZWJhdGUgaXMgbGltaXRlZCB0 + byBTQ0UgcmVzaWRlbnRpYWwgY3VzdG9tZXJzIHdobyBhcmUgY3VycmVudGx5 + IHVzaW5nIGFuIGVsZWN0cmljIHdhdGVyIGhlYXRlci4gLSBQcm9vZiBvZiBw + dXJjaGFzZSBtdXN0IGJlIHByb3ZpZGVkIHdpdGggeW91ciBhcHBsaWNhdGlv + bi4gLSBMaW1pdDogT25lIEVORVJHWSBTVEFSIHF1YWxpZmllZCBjbG90aGVz + IHdhc2hlciByZWJhdGUgcGVyIEluc3RhbGxhdGlvbiBBZGRyZXNzLiJ9LHsi + aW5jZW50aXZlSWQiOjMxNTYzMzEsIm1hc3RlckluY2VudGl2ZUlkIjozMTU2 + MzMxLCJlbGlnaWJpbGl0eSI6IkNPVUxEX0JFX0VMSUdJQkxFIiwicmVxdWly + ZWREYXRhIjpbeyJhcHBsaWNhYmlsaXR5S2V5IjoiZW5kVXNlUmVzaWRlbnRp + YWwiLCJkaXNwbGF5TmFtZSI6IkVuZCBVc2UgUmVzaWRlbnRpYWwiLCJkZXNj + cmlwdGlvbiI6IkVuZCBVc2UgVGVjaG5vbG9neSBmb3IgUmVzaWRlbnRpYWwi + LCJyZXF1aXJlZFZhbHVlIjoibWFqb3JBcHBsaWFuY2VzIiwib3BlcmF0b3Ii + OiI9In1dLCJ0YXJpZmZDb2RlIjoiTm9uZSIsImluY2VudGl2ZU5hbWUiOiJS + ZXNpZGVudGlhbCBBcHBsaWFuY2UgSW5jZW50aXZlcyIsImxzZUlkIjo4MTks + ImxzZU5hbWUiOiJQRUNPIEVuZXJneSBDbyIsInNlcnZpY2VUeXBlIjoiRUxF + Q1RSSUNJVFkiLCJjdXN0b21lckNsYXNzIjoiUkVTSURFTlRJQUwiLCJzdGFy + dERhdGUiOiIyMDExLTExLTAxIiwiZW5kRGF0ZSI6IjIwMTMtMDUtMzEiLCJp + c0V4aGF1c3RlZCI6ZmFsc2UsInByb2plY3RUeXBlIjoibWFqb3JBcHBsaWFu + Y2VzIiwiaW5jZW50aXZlVHlwZSI6InJlYmF0ZSIsInJhdGUiOjI1LjAwMDAw + MCwicmF0ZVVuaXQiOiJDT1NUX1BFUl9VTklUIiwiZG9jdW1lbnRzIjpudWxs + LCJqdXJpc2RpY3Rpb24iOiJ1dGlsaXR5IiwicXVhbnRpdHlLZXkiOnsia2V5 + TmFtZSI6ImVORVJHWVNUQVJSZWZyaWdlcmF0b3IiLCJkaXNwbGF5TmFtZSI6 + IkVuZXJneSBTdGFyIFJlZnJpZ2VyYXRvciIsImRlc2NyaXB0aW9uIjoiRU5F + UkdZIFNUQVIgUmVmcmlnZXJhdG9yLiBcclxuXHJcblJlcXVpcmVtZW50czog + UXVhbGlmeWluZyByZWZyaWdlcmF0b3JzIG1lZXQgc3RhbmRhcmRzIGJhc2Vk + IG9uIEVORVJHWSBTVEFSIGNyaXRlcmlhLiJ9LCJxdWFudGl0eUtleUNhcCI6 + bnVsbCwic3RhdGUiOiJQQSIsInBlcmNlbnRDb3N0Q2FwIjpudWxsLCJwZXJj + ZW50Q29zdENhcEtleSI6eyJrZXlOYW1lIjpudWxsfSwicGF5bWVudENhcCI6 + bnVsbCwicGF5bWVudER1cmF0aW9uIjpudWxsLCJpbmNlbnRpdmVQYWlkVG8i + OiJ0ZW5hbnRPck93bmVyIiwicHJvamVjdFR5cGVFeGNsdXNpdmUiOm51bGws + ImFwcGxpY2FiaWxpdGllcyI6W3siYXBwbGljYWJpbGl0eUtleSI6ImVuZFVz + ZVJlc2lkZW50aWFsIiwiZGlzcGxheU5hbWUiOiJFbmQgVXNlIFJlc2lkZW50 + aWFsIiwiZGVzY3JpcHRpb24iOiJFbmQgVXNlIFRlY2hub2xvZ3kgZm9yIFJl + c2lkZW50aWFsIiwicmVxdWlyZWRWYWx1ZSI6Im1ham9yQXBwbGlhbmNlcyIs + Im9wZXJhdG9yIjoiPSJ9XSwic3VtbWFyeSI6bnVsbCwicmVxdWlyZW1lbnRz + IjoiUmViYXRlIEVsaWdpYmlsaXR5OiAxLiBUaGlzIGFwcGxpY2F0aW9uIGlz + IG9ubHkgZm9yIGN1c3RvbWVycyB3aG8gcmVzaWRlIGluIGEgbWFzdGVyLW1l + dGVyZWQsIG11bHRpLXVuaXQgZmFjaWxpdHkuIDIuIEFwcGxpY2FudCdzIGJ1 + aWxkaW5nIG11c3QgY3VycmVudGx5IHJlY2VpdmUgZWxlY3RyaWMgc2Vydmlj + ZSBmcm9tIFBFQ08gYW5kIHJlcGxhY2UgZXhpc3RpbmcgZWxlY3RyaWMgZXF1 + aXBtZW50IHdpdGggcXVhbGlmaWVkIGVxdWlwbWVudCB0byBiZSBlbGlnaWJs + ZSBmb3IgaW5jZW50aXZlcy4gMy4gTmV3IGNvbnN0cnVjdGlvbiByZXBsYWNl + bWVudCBpcyBub3QgZWxpZ2libGUuIDQuIEN1c3RvbWVycyBtdXN0IHB1cmNo + YXNlIGFuZCBpbnN0YWxsIHF1YWxpZnlpbmcgZXF1aXBtZW50IGJldHdlZW4g + SnVseSAxLCAyMDA5LCBhbmQgTWF5IDMxLCAyMDEyLiA1LiBFcXVpcG1lbnQg + cHVyY2hhc2VzIGFuZCBpbnN0YWxsYXRpb25zIHByaW9yIHRvIEp1bHkgMSwg + MjAwOSwgZG8gbm90IHF1YWxpZnkgZm9yIGFuIGluY2VudGl2ZS4gNi4gQWRk + aXRpb25hbCBlcXVpcG1lbnQgcXVhbGlmaWNhdGlvbiBpbmZvcm1hdGlvbiBj + YW4gYmUgZm91bmQgYXQgd3d3LnBlY28uY29tL1NtYXJ0SWRlYXMsIG9yIGNh + bGwgMS04ODgtNS1QRUNPLVNBVkUgKDEtODg4LTU3My0yNjcyKS4ifSx7Imlu + Y2VudGl2ZUlkIjozMTU2MzMyLCJtYXN0ZXJJbmNlbnRpdmVJZCI6MzE1NjMz + MiwiZWxpZ2liaWxpdHkiOiJDT1VMRF9CRV9FTElHSUJMRSIsInJlcXVpcmVk + RGF0YSI6W3siYXBwbGljYWJpbGl0eUtleSI6ImVuZFVzZVJlc2lkZW50aWFs + IiwiZGlzcGxheU5hbWUiOiJFbmQgVXNlIFJlc2lkZW50aWFsIiwiZGVzY3Jp + cHRpb24iOiJFbmQgVXNlIFRlY2hub2xvZ3kgZm9yIFJlc2lkZW50aWFsIiwi + cmVxdWlyZWRWYWx1ZSI6ImFpckhlYXRDb29sIiwib3BlcmF0b3IiOiI9In1d + LCJ0YXJpZmZDb2RlIjoiTm9uZSIsImluY2VudGl2ZU5hbWUiOiJXYXRlciBI + ZWF0aW5nIFJlYmF0ZXMiLCJsc2VJZCI6ODE5LCJsc2VOYW1lIjoiUEVDTyBF + bmVyZ3kgQ28iLCJzZXJ2aWNlVHlwZSI6IkVMRUNUUklDSVRZIiwiY3VzdG9t + ZXJDbGFzcyI6IlJFU0lERU5USUFMIiwic3RhcnREYXRlIjoiMjAxMS0xMS0w + MSIsImVuZERhdGUiOiIyMDEzLTA1LTMxIiwiaXNFeGhhdXN0ZWQiOmZhbHNl + LCJwcm9qZWN0VHlwZSI6IndhdGVySGVhdCIsImluY2VudGl2ZVR5cGUiOiJy + ZWJhdGUiLCJyYXRlIjoyNS4wMDAwMDAsInJhdGVVbml0IjoiQ09TVF9QRVJf + VU5JVCIsImRvY3VtZW50cyI6bnVsbCwianVyaXNkaWN0aW9uIjoidXRpbGl0 + eSIsInF1YW50aXR5S2V5Ijp7ImtleU5hbWUiOiJlbGVjdHJpY1dhdGVySGVh + dGVyUG9pbnQ5M0VuZXJneUZhY3Rvck9ySGlnaGVyIiwiZGlzcGxheU5hbWUi + OiJFbGVjdHJpYyBXYXRlciBIZWF0ZXIgLSAwLjkzIEVuZXJneSBGYWN0b3Ig + b3IgSGlnaGVyIiwiZGVzY3JpcHRpb24iOiJFbGVjdHJpYyBXYXRlciBIZWF0 + ZXIgLSAwLjkzIEVuZXJneSBGYWN0b3Igb3IgSGlnaGVyXHJcbiJ9LCJxdWFu + dGl0eUtleUNhcCI6bnVsbCwic3RhdGUiOiJQQSIsInBlcmNlbnRDb3N0Q2Fw + IjpudWxsLCJwZXJjZW50Q29zdENhcEtleSI6eyJrZXlOYW1lIjpudWxsfSwi + cGF5bWVudENhcCI6bnVsbCwicGF5bWVudER1cmF0aW9uIjpudWxsLCJpbmNl + bnRpdmVQYWlkVG8iOiJ0ZW5hbnRPck93bmVyIiwicHJvamVjdFR5cGVFeGNs + dXNpdmUiOm51bGwsImFwcGxpY2FiaWxpdGllcyI6W3siYXBwbGljYWJpbGl0 + eUtleSI6ImVuZFVzZVJlc2lkZW50aWFsIiwiZGlzcGxheU5hbWUiOiJFbmQg + VXNlIFJlc2lkZW50aWFsIiwiZGVzY3JpcHRpb24iOiJFbmQgVXNlIFRlY2hu + b2xvZ3kgZm9yIFJlc2lkZW50aWFsIiwicmVxdWlyZWRWYWx1ZSI6ImFpckhl + YXRDb29sIiwib3BlcmF0b3IiOiI9In1dLCJzdW1tYXJ5IjpudWxsLCJyZXF1 + aXJlbWVudHMiOiJSZWJhdGUgRWxpZ2liaWxpdHk6IDEuIFRoaXMgYXBwbGlj + YXRpb24gaXMgb25seSBmb3IgY3VzdG9tZXJzIHdobyByZXNpZGUgaW4gYSBt + YXN0ZXItbWV0ZXJlZCwgbXVsdGktdW5pdCBmYWNpbGl0eS4gMi4gQXBwbGlj + YW50J3MgYnVpbGRpbmcgbXVzdCBjdXJyZW50bHkgcmVjZWl2ZSBlbGVjdHJp + YyBzZXJ2aWNlIGZyb20gUEVDTyBhbmQgcmVwbGFjZSBleGlzdGluZyBlbGVj + dHJpYyBlcXVpcG1lbnQgd2l0aCBxdWFsaWZpZWQgZXF1aXBtZW50IHRvIGJl + IGVsaWdpYmxlIGZvciBpbmNlbnRpdmVzLiAzLiBOZXcgY29uc3RydWN0aW9u + IHJlcGxhY2VtZW50IGlzIG5vdCBlbGlnaWJsZS4gNC4gQ3VzdG9tZXJzIG11 + c3QgcHVyY2hhc2UgYW5kIGluc3RhbGwgcXVhbGlmeWluZyBlcXVpcG1lbnQg + YmV0d2VlbiBKdWx5IDEsIDIwMDksIGFuZCBNYXkgMzEsIDIwMTIuIDUuIEVx + dWlwbWVudCBwdXJjaGFzZXMgYW5kIGluc3RhbGxhdGlvbnMgcHJpb3IgdG8g + SnVseSAxLCAyMDA5LCBkbyBub3QgcXVhbGlmeSBmb3IgYW4gaW5jZW50aXZl + LiA2LiBBZGRpdGlvbmFsIGVxdWlwbWVudCBxdWFsaWZpY2F0aW9uIGluZm9y + bWF0aW9uIGNhbiBiZSBmb3VuZCBhdCB3d3cucGVjby5jb20vU21hcnRJZGVh + cywgb3IgY2FsbCAxLTg4OC01LVBFQ08tU0FWRSAoMS04ODgtNTczLTI2NzIp + LiJ9LHsiaW5jZW50aXZlSWQiOjMxNTYzMzMsIm1hc3RlckluY2VudGl2ZUlk + IjozMTU2MzMzLCJlbGlnaWJpbGl0eSI6IkNPVUxEX0JFX0VMSUdJQkxFIiwi + cmVxdWlyZWREYXRhIjpbeyJhcHBsaWNhYmlsaXR5S2V5IjoiZW5kVXNlUmVz + aWRlbnRpYWwiLCJkaXNwbGF5TmFtZSI6IkVuZCBVc2UgUmVzaWRlbnRpYWwi + LCJkZXNjcmlwdGlvbiI6IkVuZCBVc2UgVGVjaG5vbG9neSBmb3IgUmVzaWRl + bnRpYWwiLCJyZXF1aXJlZFZhbHVlIjoiYWlySGVhdENvb2wiLCJvcGVyYXRv + ciI6Ij0ifV0sInRhcmlmZkNvZGUiOiJOb25lIiwiaW5jZW50aXZlTmFtZSI6 + IlJlc2lkZW50aWFsIENlbnRyYWwgSGVhdGluZyAmIENvb2xpbmcgUmViYXRl + cyIsImxzZUlkIjo4MTksImxzZU5hbWUiOiJQRUNPIEVuZXJneSBDbyIsInNl + cnZpY2VUeXBlIjoiRUxFQ1RSSUNJVFkiLCJjdXN0b21lckNsYXNzIjoiUkVT + SURFTlRJQUwiLCJzdGFydERhdGUiOiIyMDExLTExLTAxIiwiZW5kRGF0ZSI6 + IjIwMTMtMDUtMzEiLCJpc0V4aGF1c3RlZCI6ZmFsc2UsInByb2plY3RUeXBl + IjoiaHZhYyIsImluY2VudGl2ZVR5cGUiOiJyZWJhdGUiLCJyYXRlIjozMDAu + MDAwMDAwLCJyYXRlVW5pdCI6IkNPU1RfUEVSX1VOSVQiLCJkb2N1bWVudHMi + Om51bGwsImp1cmlzZGljdGlvbiI6InV0aWxpdHkiLCJxdWFudGl0eUtleSI6 + eyJrZXlOYW1lIjoiZU5FUkdZU1RBUkNlbnRyYWxBQzE2U0VFUm9ySGlnaGVy + IiwiZGlzcGxheU5hbWUiOiJFTkVSR1kgU1RBUiBDZW50cmFsIEFDIC0gMTYg + U0VFUiBvciBIaWdoZXIiLCJkZXNjcmlwdGlvbiI6IkVORVJHWSBTVEFSIENl + bnRyYWwgQUMgLSAxNiBTRUVSIG9yIEhpZ2hlclxyXG4ifSwicXVhbnRpdHlL + ZXlDYXAiOm51bGwsInN0YXRlIjoiUEEiLCJwZXJjZW50Q29zdENhcCI6bnVs + bCwicGVyY2VudENvc3RDYXBLZXkiOnsia2V5TmFtZSI6bnVsbH0sInBheW1l + bnRDYXAiOm51bGwsInBheW1lbnREdXJhdGlvbiI6bnVsbCwiaW5jZW50aXZl + UGFpZFRvIjoidGVuYW50T3JPd25lciIsInByb2plY3RUeXBlRXhjbHVzaXZl + IjpudWxsLCJhcHBsaWNhYmlsaXRpZXMiOlt7ImFwcGxpY2FiaWxpdHlLZXki + OiJlbmRVc2VSZXNpZGVudGlhbCIsImRpc3BsYXlOYW1lIjoiRW5kIFVzZSBS + ZXNpZGVudGlhbCIsImRlc2NyaXB0aW9uIjoiRW5kIFVzZSBUZWNobm9sb2d5 + IGZvciBSZXNpZGVudGlhbCIsInJlcXVpcmVkVmFsdWUiOiJhaXJIZWF0Q29v + bCIsIm9wZXJhdG9yIjoiPSJ9XSwic3VtbWFyeSI6bnVsbCwicmVxdWlyZW1l + bnRzIjoiVG8gcXVhbGlmeSBmb3IgYW4gaW5jZW50aXZlLCBlcXVpcG1lbnQg + bXVzdCBtZWV0IG9yIGV4Y2VlZCB0aGUgcmVxdWlyZW1lbnRzIG91dGxpbmVk + IG9uIHRoaXMgZm9ybS4gUGxlYXNlIHJlZmVyIHRoZSBpbmNlbnRpdmUgZG9j + dW1lbnQgZm9yIGluZGl2aWR1YWwgaXRlbSBzcGVjaWZpY2F0aW9ucy4ifSx7 + ImluY2VudGl2ZUlkIjozMTU2MzQwLCJtYXN0ZXJJbmNlbnRpdmVJZCI6MzE1 + NjM0MCwiZWxpZ2liaWxpdHkiOiJDT1VMRF9CRV9FTElHSUJMRSIsInJlcXVp + cmVkRGF0YSI6W3siYXBwbGljYWJpbGl0eUtleSI6ImVuZFVzZVJlc2lkZW50 + aWFsIiwiZGlzcGxheU5hbWUiOiJFbmQgVXNlIFJlc2lkZW50aWFsIiwiZGVz + Y3JpcHRpb24iOiJFbmQgVXNlIFRlY2hub2xvZ3kgZm9yIFJlc2lkZW50aWFs + IiwicmVxdWlyZWRWYWx1ZSI6Im1ham9yQXBwbGlhbmNlcyIsIm9wZXJhdG9y + IjoiPSJ9XSwidGFyaWZmQ29kZSI6Ik5vbmUiLCJpbmNlbnRpdmVOYW1lIjoi + UmVzaWRlbnRpYWwgUmVmcmlnZXJhdG9yIGFuZCBGcmVlemVyIFJlY3ljbGlu + ZyBJbmNlbnRpdmUiLCJsc2VJZCI6MTIyOCwibHNlTmFtZSI6IlNvdXRoZXJu + IENhbGlmb3JuaWEgRWRpc29uIENvIiwic2VydmljZVR5cGUiOiJFTEVDVFJJ + Q0lUWSIsImN1c3RvbWVyQ2xhc3MiOiJSRVNJREVOVElBTCIsInN0YXJ0RGF0 + ZSI6IjIwMTItMDEtMDEiLCJlbmREYXRlIjoiMjAxMy0wMS0wMSIsImlzRXho + YXVzdGVkIjpmYWxzZSwicHJvamVjdFR5cGUiOiJtYWpvckFwcGxpYW5jZXMi + LCJpbmNlbnRpdmVUeXBlIjoicmViYXRlIiwicmF0ZSI6MzUuMDAwMDAwLCJy + YXRlVW5pdCI6IkNPU1RfUEVSX1VOSVQiLCJkb2N1bWVudHMiOm51bGwsImp1 + cmlzZGljdGlvbiI6InV0aWxpdHkiLCJxdWFudGl0eUtleSI6eyJrZXlOYW1l + IjoicmVmcmlnZXJhdG9yMTIyOCIsImRpc3BsYXlOYW1lIjoiUmVmcmlnZXJh + dG9yIChSZWN5Y2xpbmcpIiwiZGVzY3JpcHRpb24iOiJSZWZyaWdlcmF0b3Ig + KFJlY3ljbGluZylcclxuXHJcblJlcXVpcmVtZW50czogUmVjeWNsaW5nIGlu + ZWZmaWNpZW50IGJ1dCB3b3JraW5nIHJlZnJpZ2VyYXRvci4gUmVmcmlnZXJh + dG9yIG11c3QgYmUgaW4gd29ya2luZyAoZS5nLiwgY29vbGluZykgb3JkZXIs + IGJldHdlZW4gMTAgYW5kIDMyIGN1LiBmdC4ifSwicXVhbnRpdHlLZXlDYXAi + Om51bGwsInN0YXRlIjoiQ0EiLCJwZXJjZW50Q29zdENhcCI6bnVsbCwicGVy + Y2VudENvc3RDYXBLZXkiOnsia2V5TmFtZSI6bnVsbH0sInBheW1lbnRDYXAi + Om51bGwsInBheW1lbnREdXJhdGlvbiI6bnVsbCwiaW5jZW50aXZlUGFpZFRv + IjoidGVuYW50T3JPd25lciIsInByb2plY3RUeXBlRXhjbHVzaXZlIjpudWxs + LCJhcHBsaWNhYmlsaXRpZXMiOlt7ImFwcGxpY2FiaWxpdHlLZXkiOiJlbmRV + c2VSZXNpZGVudGlhbCIsImRpc3BsYXlOYW1lIjoiRW5kIFVzZSBSZXNpZGVu + dGlhbCIsImRlc2NyaXB0aW9uIjoiRW5kIFVzZSBUZWNobm9sb2d5IGZvciBS + ZXNpZGVudGlhbCIsInJlcXVpcmVkVmFsdWUiOiJtYWpvckFwcGxpYW5jZXMi + LCJvcGVyYXRvciI6Ij0ifV0sInN1bW1hcnkiOm51bGwsInJlcXVpcmVtZW50 + cyI6IllvdSBtYXkgcXVhbGlmeSBpZjogWW91IGFyZSBhbiBTQ0UgY3VzdG9t + ZXIuIFRoZSBhcHBsaWFuY2UgaXMgbG9jYXRlZCBhdCB5b3VyIFNDRSBzZXJ2 + aWNlIGFkZHJlc3MuIFRoZSBhcHBsaWFuY2UgaXMgaW4gd29ya2luZyBjb25k + aXRpb24gYXQgdGhlIHRpbWUgb2YgcGljayB1cC4gVGhlIHJlZnJpZ2VyYXRv + ciBvciBmcmVlemVyIGlzIDEwIHRvIDMyIGN1YmljIGZlZXQgaW4gc2l6ZS4i + fSx7ImluY2VudGl2ZUlkIjozMTU2MzQxLCJtYXN0ZXJJbmNlbnRpdmVJZCI6 + MzE1NjM0MSwiZWxpZ2liaWxpdHkiOiJDT1VMRF9CRV9FTElHSUJMRSIsInJl + cXVpcmVkRGF0YSI6W3siYXBwbGljYWJpbGl0eUtleSI6ImVuZFVzZVJlc2lk + ZW50aWFsIiwiZGlzcGxheU5hbWUiOiJFbmQgVXNlIFJlc2lkZW50aWFsIiwi + ZGVzY3JpcHRpb24iOiJFbmQgVXNlIFRlY2hub2xvZ3kgZm9yIFJlc2lkZW50 + aWFsIiwicmVxdWlyZWRWYWx1ZSI6ImFpckhlYXRDb29sIiwib3BlcmF0b3Ii + OiI9In1dLCJ0YXJpZmZDb2RlIjoiTm9uZSIsImluY2VudGl2ZU5hbWUiOiJS + ZXNpZGVudGlhbCBDb29saW5nIFN5c3RlbXMgUmViYXRlcyIsImxzZUlkIjox + MjI4LCJsc2VOYW1lIjoiU291dGhlcm4gQ2FsaWZvcm5pYSBFZGlzb24gQ28i + LCJzZXJ2aWNlVHlwZSI6IkVMRUNUUklDSVRZIiwiY3VzdG9tZXJDbGFzcyI6 + IlJFU0lERU5USUFMIiwic3RhcnREYXRlIjoiMjAxMy0wMS0wMSIsImVuZERh + dGUiOiIyMDE0LTAxLTAxIiwiaXNFeGhhdXN0ZWQiOmZhbHNlLCJwcm9qZWN0 + VHlwZSI6Imh2YWMiLCJpbmNlbnRpdmVUeXBlIjoicmViYXRlIiwicmF0ZSI6 + MzAwLjAwMDAwMCwicmF0ZVVuaXQiOiJDT1NUX1BFUl9VTklUIiwiZG9jdW1l + bnRzIjpudWxsLCJqdXJpc2RpY3Rpb24iOiJ1dGlsaXR5IiwicXVhbnRpdHlL + ZXkiOnsia2V5TmFtZSI6ImR1Y3RlZEV2YXBvcmF0aXZlQ29vbGluZ1N5c3Rl + bTEyMjgiLCJkaXNwbGF5TmFtZSI6IkR1Y3RlZCBFdmFwb3JhdGl2ZSBDb29s + aW5nIFN5c3RlbSIsImRlc2NyaXB0aW9uIjoiRHVjdGVkIEV2YXBvcmF0aXZl + IENvb2xpbmcgU3lzdGVtXHJcblxyXG5SZXF1aXJlbWVudHM6IE1ha2Ugc3Vy + ZSB0aGUgcHJvZHVjdCBhcHBlYXJzIG9uIHRoZSBsaXN0IG9mIHF1YWxpZnlp + bmcgcHJvZHVjdHMgdGhhdCBjYW4gYmUgZm91bmQgYXQgd3d3LnNjZS5jb20v + ZXZhcGNvb2xlci4gSW5zdGFsbCB0aGUgcXVhbGlmeWluZyBldmFwb3JhdGl2 + ZSBjb29saW5nIHN5c3RlbSBieSBGZWJydWFyeSAyOCwgMjAxNC4gRHVjdGVk + IGV2YXBvcmF0aXZlIGNvb2xlcnMgbXVzdCBiZSBwZXJtYW5lbnRseSBpbnN0 + YWxsZWQgdGhyb3VnaCB0aGUgd2FsbG9yIG9uIHRoZSByb29mLkR1Y3RlZCBl + dmFwb3JhdGl2ZSBjb29sZXJzIG11c3QgaGF2ZSBVTCByZWNvZ25pemVkIGVs + ZWN0cmljYWwgY29tcG9uZW50cy4gUHJvb2Ygb2YgcHVyY2hhc2UgbXVzdCBi + ZSBwcm92aWRlZCB3aXRoIHlvdXIgYXBwbGljYXRpb24uIExpbWl0OiBvbmUg + b2YgYW55IHR5cGUgb2YgSEVFUiBldmFwb3JhdGl2ZSBjb29saW5nIHN5c3Rl + bSByZWJhdGUgcGVyIEluc3RhbGxhdGlvbiBBZGRyZXNzLlxyXG5cclxuXHJc + bkV4Y2x1c2lvbjogRXZhcG9yYXRpdmUgY29vbGVycyBtb3VudGVkdGhyb3Vn + aCBhIHdpbmRvdyBkbyBub3QgcXVhbGlmeSBmb3IgdGhpcyByZWJhdGUifSwi + cXVhbnRpdHlLZXlDYXAiOm51bGwsInN0YXRlIjoiQ0EiLCJwZXJjZW50Q29z + dENhcCI6bnVsbCwicGVyY2VudENvc3RDYXBLZXkiOnsia2V5TmFtZSI6bnVs + bH0sInBheW1lbnRDYXAiOm51bGwsInBheW1lbnREdXJhdGlvbiI6bnVsbCwi + aW5jZW50aXZlUGFpZFRvIjoidGVuYW50T3JPd25lciIsInByb2plY3RUeXBl + RXhjbHVzaXZlIjpudWxsLCJhcHBsaWNhYmlsaXRpZXMiOlt7ImFwcGxpY2Fi + aWxpdHlLZXkiOiJlbmRVc2VSZXNpZGVudGlhbCIsImRpc3BsYXlOYW1lIjoi + RW5kIFVzZSBSZXNpZGVudGlhbCIsImRlc2NyaXB0aW9uIjoiRW5kIFVzZSBU + ZWNobm9sb2d5IGZvciBSZXNpZGVudGlhbCIsInJlcXVpcmVkVmFsdWUiOiJh + aXJIZWF0Q29vbCIsIm9wZXJhdG9yIjoiPSJ9XSwic3VtbWFyeSI6bnVsbCwi + cmVxdWlyZW1lbnRzIjoiQWxsIGNvb2xpbmcgc3lzdGVtIGVxdWlwbWVudC9t + YXRlcmlhbHMgbXVzdCBiZSBuZXcuIEZvbGxvdyBtYW51ZmFjdHVyZXIgaW5z + dGFsbGF0aW9uIHJlcXVpcmVtZW50cy4gRXF1aXBtZW50L01hdGVyaWFscyBt + dXN0IG1lZXQgb3IgZXhjZWVkIGFsbCBhcHBsaWNhYmxlIGxvY2FsLCBzdGF0 + ZSBhbmQgZmVkZXJhbCBzdGFuZGFyZHMsIGFzIHdlbGwgYXMgYWxsIHRoZSBm + b2xsb3dpbmcgcmVxdWlyZW1lbnRzLiBQcm92aWRlIHRoZSBpbmZvcm1hdGlv + biByZXF1ZXN0ZWQgZm9yIGVhY2ggcHJvZHVjdCBpbnN0YWxsZWQuIERldGFj + aCBhbmQgbWFpbCBpbiB0aGUgY29tcGxldGVkIGFuZCBzaWduZWQgQ3VzdG9t + ZXIgQXBwbGljYXRpb24gRm9ybSwgY29weShpZXMpIG9mIHByb29mKHMpIG9m + IHB1cmNoYXNlLCBhbmQgb3RoZXIgcmVxdWlyZWQgZG9jdW1lbnRhdGlvbi4g + QW4gb24tc2l0ZSB2ZXJpZmljYXRpb24gb2YgdGhlIHByb2R1Y3QocykgcHVy + Y2hhc2VkIGFuZCBpbnN0YWxsZWQgbWF5IGJlIHJlcXVpcmVkIGJlZm9yZSB0 + aGUgcmViYXRlIGlzIHBhaWQuIEZvciBpdGVtIGxldmVsIHNwZWNpZmljYXRp + b25zIHJlZmVyIHRvIGNhdGFsb2cuIn0seyJpbmNlbnRpdmVJZCI6MzE1NjM0 + MiwibWFzdGVySW5jZW50aXZlSWQiOjMxNTYzNDIsImVsaWdpYmlsaXR5Ijoi + Q09VTERfQkVfRUxJR0lCTEUiLCJyZXF1aXJlZERhdGEiOlt7ImFwcGxpY2Fi + aWxpdHlLZXkiOiJlbmRVc2VSZXNpZGVudGlhbCIsImRpc3BsYXlOYW1lIjoi + RW5kIFVzZSBSZXNpZGVudGlhbCIsImRlc2NyaXB0aW9uIjoiRW5kIFVzZSBU + ZWNobm9sb2d5IGZvciBSZXNpZGVudGlhbCIsInJlcXVpcmVkVmFsdWUiOiJh + aXJIZWF0Q29vbCIsIm9wZXJhdG9yIjoiPSJ9XSwidGFyaWZmQ29kZSI6Ik5v + bmUiLCJpbmNlbnRpdmVOYW1lIjoiUmVzaWRlbnRpYWwgTXVsdGktRmFtaWx5 + IEhWQUMgUmViYXRlIiwibHNlSWQiOjEyMjgsImxzZU5hbWUiOiJTb3V0aGVy + biBDYWxpZm9ybmlhIEVkaXNvbiBDbyIsInNlcnZpY2VUeXBlIjoiRUxFQ1RS + SUNJVFkiLCJjdXN0b21lckNsYXNzIjoiUkVTSURFTlRJQUwiLCJzdGFydERh + dGUiOiIyMDEzLTAxLTAxIiwiZW5kRGF0ZSI6IjIwMTUtMDEtMDEiLCJpc0V4 + aGF1c3RlZCI6ZmFsc2UsInByb2plY3RUeXBlIjoiaHZhYyIsImluY2VudGl2 + ZVR5cGUiOiJyZWJhdGUiLCJyYXRlIjoxNTAuMDAwMDAwLCJyYXRlVW5pdCI6 + IkNPU1RfUEVSX1VOSVQiLCJkb2N1bWVudHMiOm51bGwsImp1cmlzZGljdGlv + biI6InV0aWxpdHkiLCJxdWFudGl0eUtleSI6eyJrZXlOYW1lIjoicmVzaWRl + bnRpYWxFbmVyZ3lFZmZpY2llbnRQYWNrYWdlVGVybWluYWxBaXJDb25kaXRp + b25lckFuZEhlYXRQdW1wMTIyOCIsImRpc3BsYXlOYW1lIjoiUmVzaWRlbnRp + YWwgRW5lcmd5LUVmZmljaWVudCBQYWNrYWdlIFRlcm1pbmFsIEFpciBDb25k + aXRpb25lciBhbmQgSGVhdCBQdW1wIiwiZGVzY3JpcHRpb24iOiJFbmVyZ3kt + RWZmaWNpZW50IFBhY2thZ2UgVGVybWluYWwgQWlyIENvbmRpdGlvbmVyIGFu + ZCBIZWF0IFB1bXAuIFxyXG5cclxuUmVxdWlyZW1lbnRzOlxyXG5FbGlnaWJs + ZSBhcmUgdGhyb3VnaC10aGUtd2FsbCBvciB0aHJvdWdoLXRoZS13aW5kb3cg + YWlyIGNvbmRpdGlvbmVyIHVuaXRzLCBhcmUgMiB0b25zICgyNCwwMDAgQlRV + L2hyKSBvciBsZXNzLCBhbmQgbXVzdCBleGNlZWQgVGl0bGUgMjAgYnkgYXQg + bGVhc3QgMjAlLiBUbyBjYWxjdWxhdGUgdGhlIG1pbmltdW0gZW5lcmd5IGVm + ZmljaWVuY3kgcmF0aW8gZWxpZ2libGUgZm9yIHJlYmF0ZSwgbXVsdGlwbHkg + dGhlIGVuZXJneSBlZmZpY2llbmN5IHJhdGlvIGluIENhbGlmb3JuaWEgVGl0 + bGUgMjAgU3RhbmRhcmRzIGJ5IDEuMi4gUFRBQyBtdXN0IGJlIGxpc3RlZCBi + eSB0aGUgQWlyLUNvbmRpdGlvbmluZyBhbmQgUmVmcmlnZXJhdGlvbiBJbnN0 + aXR1dGUgKEFSSSkuIE1ha2UgYW5kIG1vZGVsIG51bWJlciBtdXN0IGJlIGlu + Y2x1ZGVkIHdpdGggYSBjb3B5IG9mIHlvdXIgcHJvb2Ytb2YtcHVyY2hhc2Uu + In0sInF1YW50aXR5S2V5Q2FwIjpudWxsLCJzdGF0ZSI6IkNBIiwicGVyY2Vu + dENvc3RDYXAiOm51bGwsInBlcmNlbnRDb3N0Q2FwS2V5Ijp7ImtleU5hbWUi + Om51bGx9LCJwYXltZW50Q2FwIjpudWxsLCJwYXltZW50RHVyYXRpb24iOm51 + bGwsImluY2VudGl2ZVBhaWRUbyI6InRlbmFudE9yT3duZXIiLCJwcm9qZWN0 + VHlwZUV4Y2x1c2l2ZSI6bnVsbCwiYXBwbGljYWJpbGl0aWVzIjpbeyJhcHBs + aWNhYmlsaXR5S2V5IjoiZW5kVXNlUmVzaWRlbnRpYWwiLCJkaXNwbGF5TmFt + ZSI6IkVuZCBVc2UgUmVzaWRlbnRpYWwiLCJkZXNjcmlwdGlvbiI6IkVuZCBV + c2UgVGVjaG5vbG9neSBmb3IgUmVzaWRlbnRpYWwiLCJyZXF1aXJlZFZhbHVl + IjoiYWlySGVhdENvb2wiLCJvcGVyYXRvciI6Ij0ifV0sInN1bW1hcnkiOm51 + bGwsInJlcXVpcmVtZW50cyI6IkVsaWdpYmxlIHBhY2thZ2UgdGVybWluYWwg + YWlyIGNvbmRpdGlvbmVycyBhbmQgaGVhdCBwdW1wcyBhcmUgdGhyb3VnaC10 + aGUtd2FsbCBvciB0aHJvdWdoLXRoZS13aW5kb3cgYWlyIGNvbmRpdGlvbmVy + IHVuaXRzLCBhcmUgMiB0b25zICgyNCwwMDAgQlRVL2hyKSBvciBsZXNzLCBh + bmQgbXVzdCBleGNlZWQgVGl0bGUgMjAgYnkgYXQgbGVhc3QgMjAlLiBUbyBj + YWxjdWxhdGUgdGhlIG1pbmltdW0gZW5lcmd5IGVmZmljaWVuY3kgcmF0aW8g + ZWxpZ2libGUgZm9yIHJlYmF0ZSwgbXVsdGlwbHkgdGhlIGVuZXJneSBlZmZp + Y2llbmN5IHJhdGlvIGluIENhbGlmb3JuaWEgVGl0bGUgMjAgU3RhbmRhcmRz + IGJ5IDEuMi4gUFRBQyBtdXN0IGJlIGxpc3RlZCBieSB0aGUgQWlyLUNvbmRp + dGlvbmluZyBhbmQgUmVmcmlnZXJhdGlvbiBJbnN0aXR1dGUgKEFSSSkuTWFr + ZSBhbmQgbW9kZWwgbnVtYmVyIG11c3QgYmUgaW5jbHVkZWQgd2l0aCBhIGNv + cHkgb2YgeW91ciBwcm9vZi1vZi1wdXJjaGFzZS4ifSx7ImluY2VudGl2ZUlk + IjozMTU2MzQzLCJtYXN0ZXJJbmNlbnRpdmVJZCI6MzE1NjM0MywiZWxpZ2li + aWxpdHkiOiJDT1VMRF9CRV9FTElHSUJMRSIsInJlcXVpcmVkRGF0YSI6W3si + YXBwbGljYWJpbGl0eUtleSI6ImVuZFVzZVJlc2lkZW50aWFsIiwiZGlzcGxh + eU5hbWUiOiJFbmQgVXNlIFJlc2lkZW50aWFsIiwiZGVzY3JpcHRpb24iOiJF + bmQgVXNlIFRlY2hub2xvZ3kgZm9yIFJlc2lkZW50aWFsIiwicmVxdWlyZWRW + YWx1ZSI6Im1ham9yQXBwbGlhbmNlcyIsIm9wZXJhdG9yIjoiPSJ9XSwidGFy + aWZmQ29kZSI6Ik5vbmUiLCJpbmNlbnRpdmVOYW1lIjoiUmVzaWRlbnRpYWwg + UmVmcmlnZXJhdGlvbiBSZWJhdGVzIiwibHNlSWQiOjEyMjgsImxzZU5hbWUi + OiJTb3V0aGVybiBDYWxpZm9ybmlhIEVkaXNvbiBDbyIsInNlcnZpY2VUeXBl + IjoiRUxFQ1RSSUNJVFkiLCJjdXN0b21lckNsYXNzIjoiUkVTSURFTlRJQUwi + LCJzdGFydERhdGUiOiIyMDEzLTAxLTAxIiwiZW5kRGF0ZSI6IjIwMTQtMDEt + MDEiLCJpc0V4aGF1c3RlZCI6ZmFsc2UsInByb2plY3RUeXBlIjoibWFqb3JB + cHBsaWFuY2VzIiwiaW5jZW50aXZlVHlwZSI6InJlYmF0ZSIsInJhdGUiOjM1 + LjAwMDAwMCwicmF0ZVVuaXQiOiJDT1NUX1BFUl9VTklUIiwiZG9jdW1lbnRz + IjpudWxsLCJqdXJpc2RpY3Rpb24iOiJ1dGlsaXR5IiwicXVhbnRpdHlLZXki + Onsia2V5TmFtZSI6ImVuZXJneVN0YXJRdWFsaWZpZWRSZWZyaWdlcmF0b3Ix + MjI4IiwiZGlzcGxheU5hbWUiOiJFbmVyZ3kgU3RhciBRdWFsaWZpZWQgUmVm + cmlnZXJhdG9yIiwiZGVzY3JpcHRpb24iOiJFbmVyZ3kgU3RhciBRdWFsaWZp + ZWQgUmVmcmlnZXJhdG9yXHJcblxyXG5SZXF1aXJlbWVudHM6IHN1cmUgdGhl + IHByb2R1Y3QgYXBwZWFycyBvbiB0aGUgbGlzdCBvZiBxdWFsaWZ5aW5nIHBy + b2R1Y3RzIHRoYXQgY2FuIGJlIGZvdW5kIGF0IHd3dy5lbmVyZ3lzdGFyLmdv + diAodW5kZXIgbGluayBcIlF1YWxpZmllZCBSZWZyaWdlcmF0b3JzXCIpLiBJ + bnN0YWxsIHRoZSBxdWFsaWZ5aW5nIHJlZnJpZ2VyYXRvciBieSBGZWJydWFy + eSAyOCwgMjAxNC4gVGhlIG5ldyByZWZyaWdlcmF0b3IgbXVzdCBiZSB0aGUg + cHJpbWFyeSByZWZyaWdlcmF0b3IgdXNlZCBpbiB0aGUgaG9tZS4gIFByb29m + IG9mIHB1cmNoYXNlIG11c3QgYmUgcHJvdmlkZWQgd2l0aCB5b3VyIGFwcGxp + Y2F0aW9uLiBMaW1pdDogb25lIG9mIGFueSB0eXBlIG9mIEhFRVIgcmVmcmln + ZXJhdG9yIHJlYmF0ZSBwZXIgSW5zdGFsbGF0aW9uIEFkZHJlc3MuIn0sInF1 + YW50aXR5S2V5Q2FwIjpudWxsLCJzdGF0ZSI6IkNBIiwicGVyY2VudENvc3RD + YXAiOm51bGwsInBlcmNlbnRDb3N0Q2FwS2V5Ijp7ImtleU5hbWUiOm51bGx9 + LCJwYXltZW50Q2FwIjpudWxsLCJwYXltZW50RHVyYXRpb24iOm51bGwsImlu + Y2VudGl2ZVBhaWRUbyI6InRlbmFudE9yT3duZXIiLCJwcm9qZWN0VHlwZUV4 + Y2x1c2l2ZSI6bnVsbCwiYXBwbGljYWJpbGl0aWVzIjpbeyJhcHBsaWNhYmls + aXR5S2V5IjoiZW5kVXNlUmVzaWRlbnRpYWwiLCJkaXNwbGF5TmFtZSI6IkVu + ZCBVc2UgUmVzaWRlbnRpYWwiLCJkZXNjcmlwdGlvbiI6IkVuZCBVc2UgVGVj + aG5vbG9neSBmb3IgUmVzaWRlbnRpYWwiLCJyZXF1aXJlZFZhbHVlIjoibWFq + b3JBcHBsaWFuY2VzIiwib3BlcmF0b3IiOiI9In1dLCJzdW1tYXJ5IjpudWxs + LCJyZXF1aXJlbWVudHMiOiJBbGwgcHJvZHVjdHMgbXVzdCBiZSBuZXcuIEZv + bGxvdyBtYW51ZmFjdHVyZXIgaW5zdGFsbGF0aW9uIHJlcXVpcmVtZW50cy4g + RXF1aXBtZW50L01hdGVyaWFscyBtdXN0IG1lZXQgb3IgZXhjZWVkIGFsbCBh + cHBsaWNhYmxlIGxvY2FsLCBzdGF0ZSBhbmQgZmVkZXJhbCBzdGFuZGFyZHMu + IEluc3RhbGwgdGhlIHF1YWxpZnlpbmcgcmVmcmlnZXJhdG9yIGJ5IEZlYnJ1 + YXJ5IDI4LCAyMDE0LiBUaGUgbmV3IHJlZnJpZ2VyYXRvciBtdXN0IGJlIHRo + ZSBwcmltYXJ5IHJlZnJpZ2VyYXRvciB1c2VkIGluIHRoZSBob21lLiAgUHJv + b2Ygb2YgcHVyY2hhc2UgbXVzdCBiZSBwcm92aWRlZCB3aXRoIHlvdXIgYXBw + bGljYXRpb24uICBMaW1pdDogb25lIG9mIGFueSB0eXBlIG9mIEhFRVIgcmVm + cmlnZXJhdG9yIHJlYmF0ZSBwZXIgSW5zdGFsbGF0aW9uIEFkZHJlc3MifSx7 + ImluY2VudGl2ZUlkIjozMTU2MzQ0LCJtYXN0ZXJJbmNlbnRpdmVJZCI6MzE1 + NjM0NCwiZWxpZ2liaWxpdHkiOiJDT1VMRF9CRV9FTElHSUJMRSIsInJlcXVp + cmVkRGF0YSI6W3siYXBwbGljYWJpbGl0eUtleSI6ImVuZFVzZVJlc2lkZW50 + aWFsIiwiZGlzcGxheU5hbWUiOiJFbmQgVXNlIFJlc2lkZW50aWFsIiwiZGVz + Y3JpcHRpb24iOiJFbmQgVXNlIFRlY2hub2xvZ3kgZm9yIFJlc2lkZW50aWFs + IiwicmVxdWlyZWRWYWx1ZSI6InBvb2wiLCJvcGVyYXRvciI6Ij0ifV0sInRh + cmlmZkNvZGUiOiJOb25lIiwiaW5jZW50aXZlTmFtZSI6IlJlc2lkZW50aWFs + IFBvb2wgUmViYXRlIiwibHNlSWQiOjEyMjgsImxzZU5hbWUiOiJTb3V0aGVy + biBDYWxpZm9ybmlhIEVkaXNvbiBDbyIsInNlcnZpY2VUeXBlIjoiRUxFQ1RS + SUNJVFkiLCJjdXN0b21lckNsYXNzIjoiUkVTSURFTlRJQUwiLCJzdGFydERh + dGUiOiIyMDEzLTAxLTAxIiwiZW5kRGF0ZSI6IjIwMTQtMDEtMDEiLCJpc0V4 + aGF1c3RlZCI6ZmFsc2UsInByb2plY3RUeXBlIjoicG9vbCIsImluY2VudGl2 + ZVR5cGUiOiJyZWJhdGUiLCJyYXRlIjoyMDAuMDAwMDAwLCJyYXRlVW5pdCI6 + IkNPU1RfUEVSX1VOSVQiLCJkb2N1bWVudHMiOm51bGwsImp1cmlzZGljdGlv + biI6InV0aWxpdHkiLCJxdWFudGl0eUtleSI6eyJrZXlOYW1lIjoidmFyaWFi + bGVTcGVlZFBvb2xQdW1wQW5kTW90b3IxMjI4IiwiZGlzcGxheU5hbWUiOiJW + YXJpYWJsZS1TcGVlZCBQb29sIFB1bXAgYW5kIE1vdG9yIiwiZGVzY3JpcHRp + b24iOiJWYXJpYWJsZS1TcGVlZCBQb29sIFB1bXAgYW5kIE1vdG9yXHJcblxy + XG5SZXF1aXJlbWVudHM6XHJcbkluc3RhbGwgdGhlIHF1YWxpZnlpbmcgdmFy + aWFibGUtc3BlZWQgcG9vbCBwdW1wIGFuZCBtb3RvciBieSBGZWJydWFyeSAy + OCwgMjAxNC4gRm9yIHBvb2wgcHVtcHMgdGhhdCByZXF1aXJlIGEgcXVhbGlm + eWluZyBjb250cm9sbGVyLCB0aGUgY29udHJvbGxlciBtdXN0IGFsc28gYmUg + cHVyY2hhc2VkIGJldHdlZW4gSmFudWFyeSAxLCAyMDEzIGFuZCBEZWNlbWJl + ciAzMSwgMjAxMywgYW5kIGluc3RhbGxlZCBieSBGZWJydWFyeSAyOCwgMjAx + NC4gTWFrZSBzdXJlIHRoZSBwb29sIHB1bXBzIChhbmQgcXVhbGlmeWluZyBj + b250cm9sbGVycykgYXBwZWFyIG9uIHRoZSBsaXN0IG9mIHF1YWxpZnlpbmcg + cHJvZHVjdHMgdGhhdCBjYW4gYmUgZm91bmQgYXQgd3d3LnNjZS5jb20vcG9v + bHB1bXAuIFZhcmlhYmxlLXNwZWVkIHBvb2wgcHVtcCBhbmQgbW90b3IgbXVz + dCBiZSBpbnN0YWxsZWQgaW4gYSBwcmUtZXhpc3Rpbmcgb3IgbmV3IGluLWdy + b3VuZCBwb29sLiBUaGUgcG9vbCBwdW1wIG11c3QgYmUgaW5zdGFsbGVkIGF0 + IGEgc2luZ2xlIGZhbWlseSByZXNpZGVuY2UuIFByb29mIG9mIHB1cmNoYXNl + IG11c3QgYmUgcHJvdmlkZWQgd2l0aCB5b3VyIGFwcGxpY2F0aW9uLiBMaW1p + dDogb25lIHZhcmlhYmxlLXNwZWVkIHBvb2wgcHVtcCBhbmQgbW90b3IgcmVi + YXRlIHBlciBJbnN0YWxsYXRpb24gQWRkcmVzcy5cclxuXHJcbkV4Y2x1c2lv + bjogUG9vbCBwdW1wcyBpbnN0YWxsZWQgaW4gYSBzcGEgb3IgamFjdXp6aSBk + byBub3QgcXVhbGlmeSBmb3IgYSByZWJhdGUuXHJcbiJ9LCJxdWFudGl0eUtl + eUNhcCI6bnVsbCwic3RhdGUiOiJDQSIsInBlcmNlbnRDb3N0Q2FwIjpudWxs + LCJwZXJjZW50Q29zdENhcEtleSI6eyJrZXlOYW1lIjpudWxsfSwicGF5bWVu + dENhcCI6bnVsbCwicGF5bWVudER1cmF0aW9uIjpudWxsLCJpbmNlbnRpdmVQ + YWlkVG8iOiJ0ZW5hbnRPck93bmVyIiwicHJvamVjdFR5cGVFeGNsdXNpdmUi + Om51bGwsImFwcGxpY2FiaWxpdGllcyI6W3siYXBwbGljYWJpbGl0eUtleSI6 + ImVuZFVzZVJlc2lkZW50aWFsIiwiZGlzcGxheU5hbWUiOiJFbmQgVXNlIFJl + c2lkZW50aWFsIiwiZGVzY3JpcHRpb24iOiJFbmQgVXNlIFRlY2hub2xvZ3kg + Zm9yIFJlc2lkZW50aWFsIiwicmVxdWlyZWRWYWx1ZSI6InBvb2wiLCJvcGVy + YXRvciI6Ij0ifV0sInN1bW1hcnkiOm51bGwsInJlcXVpcmVtZW50cyI6IlJl + cXVpcmVtZW50czogMS4gUHVyY2hhc2UgYSBuZXcgdmFyaWFibGUtc3BlZWQg + cG9vbCBwdW1wIGFuZCBtb3RvciBiZXR3ZWVuIEphbnVhcnkgMSwgMjAxMyBh + bmQgRGVjZW1iZXIgMzEsIDIwMTMuIDIuIEluc3RhbGwgdGhlIHF1YWxpZnlp + bmcgdmFyaWFibGUtc3BlZWQgcG9vbCBwdW1wIGFuZCBtb3RvciBieSBGZWJy + dWFyeSAyOCwgMjAxNC4gMy4gRm9yIHBvb2wgcHVtcHMgdGhhdCByZXF1aXJl + IGEgcXVhbGlmeWluZyBjb250cm9sbGVyLCB0aGUgY29udHJvbGxlciBtdXN0 + IGFsc28gYmUgcHVyY2hhc2VkIGJldHdlZW4gSmFudWFyeSAxLCAyMDEzIGFu + ZCBEZWNlbWJlciAzMSwgMjAxMywgYW5kIGluc3RhbGxlZCBieSBGZWJydWFy + eSAyOCwgMjAxNC4gNC4gTWFrZSBzdXJlIHRoZSBwb29sIHB1bXBzIChhbmQg + cXVhbGlmeWluZyBjb250cm9sbGVycykgYXBwZWFyIG9uIHRoZSBsaXN0IG9m + IHF1YWxpZnlpbmcgcHJvZHVjdHMgdGhhdCBjYW4gYmUgZm91bmQgYXQgd3d3 + LnNjZS5jb20vcG9vbHB1bXAuIDUuIFZhcmlhYmxlLXNwZWVkIHBvb2wgcHVt + cCBhbmQgbW90b3IgbXVzdCBiZSBpbnN0YWxsZWQgaW4gYSBwcmUtZXhpc3Rp + bmcgb3IgbmV3IGluLWdyb3VuZCBwb29sLiBOb3RlOiBQb29sIHB1bXBzIGlu + c3RhbGxlZCBpbiBhIHNwYSBvciBqYWN1enppIGRvIG5vdCBxdWFsaWZ5IGZv + ciBhIHJlYmF0ZS4gNi4gVGhlIHBvb2wgcHVtcCBtdXN0IGJlIGluc3RhbGxl + ZCBhdCBhIHNpbmdsZSBmYW1pbHkgcmVzaWRlbmNlLiA3LiBQcm9vZiBvZiBw + dXJjaGFzZSBtdXN0IGJlIHByb3ZpZGVkIHdpdGggeW91ciBhcHBsaWNhdGlv + bi4gOC4gTGltaXQ6IG9uZSB2YXJpYWJsZS1zcGVlZCBwb29sIHB1bXAgYW5k + IG1vdG9yIHJlYmF0ZSBwZXIgSW5zdGFsbGF0aW9uIEFkZHJlc3MuIn0seyJp + bmNlbnRpdmVJZCI6MzE1NjM0NSwibWFzdGVySW5jZW50aXZlSWQiOjMxNTYz + NDUsImVsaWdpYmlsaXR5IjoiQ09VTERfQkVfRUxJR0lCTEUiLCJyZXF1aXJl + ZERhdGEiOlt7ImFwcGxpY2FiaWxpdHlLZXkiOiJlbmRVc2VSZXNpZGVudGlh + bCIsImRpc3BsYXlOYW1lIjoiRW5kIFVzZSBSZXNpZGVudGlhbCIsImRlc2Ny + aXB0aW9uIjoiRW5kIFVzZSBUZWNobm9sb2d5IGZvciBSZXNpZGVudGlhbCIs + InJlcXVpcmVkVmFsdWUiOiJtYWpvckFwcGxpYW5jZXMiLCJvcGVyYXRvciI6 + Ij0ifV0sInRhcmlmZkNvZGUiOiJOb25lIiwiaW5jZW50aXZlTmFtZSI6IlJl + c2lkZW50aWFsIE11bHRpLUZhbWlseSBBcHBsaWFuY2VzIFJlYmF0ZXMiLCJs + c2VJZCI6MTIyOCwibHNlTmFtZSI6IlNvdXRoZXJuIENhbGlmb3JuaWEgRWRp + c29uIENvIiwic2VydmljZVR5cGUiOiJFTEVDVFJJQ0lUWSIsImN1c3RvbWVy + Q2xhc3MiOiJSRVNJREVOVElBTCIsInN0YXJ0RGF0ZSI6IjIwMTMtMDEtMDEi + LCJlbmREYXRlIjoiMjAxNS0wMS0wMSIsImlzRXhoYXVzdGVkIjpmYWxzZSwi + cHJvamVjdFR5cGUiOiJtYWpvckFwcGxpYW5jZXMiLCJpbmNlbnRpdmVUeXBl + IjoicmViYXRlIiwicmF0ZSI6NTAuMDAwMDAwLCJyYXRlVW5pdCI6IkNPU1Rf + UEVSX1VOSVQiLCJkb2N1bWVudHMiOm51bGwsImp1cmlzZGljdGlvbiI6InV0 + aWxpdHkiLCJxdWFudGl0eUtleSI6eyJrZXlOYW1lIjoicmVzaWRlbnRpYWxI + aWdoRWZmaWNpZW5jeUNsb3RoZXNXYXNoZXIxMjI4IiwiZGlzcGxheU5hbWUi + OiJSZXNpZGVudGlhbCBIaWdoLUVmZmljaWVuY3kgQ2xvdGhlcyBXYXNoZXIi + LCJkZXNjcmlwdGlvbiI6IlJlc2lkZW50aWFsIEhpZ2gtRWZmaWNpZW5jeSBD + bG90aGVzIFdhc2hlclxyXG5cclxuUmVxdWlyZW1lbnRzOiBIaWdoLUVmZmlj + aWVuY3kgQ2xvdGhlcyBXYXNoZXIgbXVzdCBoYXZlIE1vZGlmaWVkIEVuZXJn + eSBGYWN0b3IgKE1FRikgb2YgMi4wIG9yIGdyZWF0ZXIgYW5kIGEgV2F0ZXIg + RmFjdG9yIChXRikgb2YgNi4wIG9yIGxlc3MuIENsb3RoZXMgd2FzaGVyIG11 + c3QgYmUgbGlzdGVkIG9uIHRoZSBFTkVSR1kgU1RBUiBxdWFsaWZpZWQgcHJv + ZHVjdCBsaXN0LiJ9LCJxdWFudGl0eUtleUNhcCI6bnVsbCwic3RhdGUiOiJD + QSIsInBlcmNlbnRDb3N0Q2FwIjpudWxsLCJwZXJjZW50Q29zdENhcEtleSI6 + eyJrZXlOYW1lIjpudWxsfSwicGF5bWVudENhcCI6bnVsbCwicGF5bWVudER1 + cmF0aW9uIjpudWxsLCJpbmNlbnRpdmVQYWlkVG8iOiJ0ZW5hbnRPck93bmVy + IiwicHJvamVjdFR5cGVFeGNsdXNpdmUiOm51bGwsImFwcGxpY2FiaWxpdGll + cyI6W3siYXBwbGljYWJpbGl0eUtleSI6ImVuZFVzZVJlc2lkZW50aWFsIiwi + ZGlzcGxheU5hbWUiOiJFbmQgVXNlIFJlc2lkZW50aWFsIiwiZGVzY3JpcHRp + b24iOiJFbmQgVXNlIFRlY2hub2xvZ3kgZm9yIFJlc2lkZW50aWFsIiwicmVx + dWlyZWRWYWx1ZSI6Im1ham9yQXBwbGlhbmNlcyIsIm9wZXJhdG9yIjoiPSJ9 + XSwic3VtbWFyeSI6bnVsbCwicmVxdWlyZW1lbnRzIjoiQWxsIHByb2R1Y3Rz + IG11c3QgYmUgTmV3LiAgRm9yIGl0ZW0gbGV2ZWwgc3BlY2lmaWNhdGlvbnMg + cmVmZXIgdG8gY2F0YWxvZy4ifSx7ImluY2VudGl2ZUlkIjozMTU2MzQ2LCJt + YXN0ZXJJbmNlbnRpdmVJZCI6MzE1NjM0NiwiZWxpZ2liaWxpdHkiOiJDT1VM + RF9CRV9FTElHSUJMRSIsInJlcXVpcmVkRGF0YSI6W3siYXBwbGljYWJpbGl0 + eUtleSI6ImVuZFVzZVJlc2lkZW50aWFsIiwiZGlzcGxheU5hbWUiOiJFbmQg + VXNlIFJlc2lkZW50aWFsIiwiZGVzY3JpcHRpb24iOiJFbmQgVXNlIFRlY2hu + b2xvZ3kgZm9yIFJlc2lkZW50aWFsIiwicmVxdWlyZWRWYWx1ZSI6IndhdGVy + SGVhdCIsIm9wZXJhdG9yIjoiPSJ9XSwidGFyaWZmQ29kZSI6Ik5vbmUiLCJp + bmNlbnRpdmVOYW1lIjoiUmVzaWRlbnRpYWwgTXVsdGktRmFtaWx5IFdhdGVy + IEhlYXRlciBSZWJhdGUiLCJsc2VJZCI6MTIyOCwibHNlTmFtZSI6IlNvdXRo + ZXJuIENhbGlmb3JuaWEgRWRpc29uIENvIiwic2VydmljZVR5cGUiOiJFTEVD + VFJJQ0lUWSIsImN1c3RvbWVyQ2xhc3MiOiJSRVNJREVOVElBTCIsInN0YXJ0 + RGF0ZSI6IjIwMTMtMDEtMDEiLCJlbmREYXRlIjoiMjAxNS0wMS0wMSIsImlz + RXhoYXVzdGVkIjpmYWxzZSwicHJvamVjdFR5cGUiOiJ3YXRlckhlYXQiLCJp + bmNlbnRpdmVUeXBlIjoicmViYXRlIiwicmF0ZSI6MzAuMDAwMDAwLCJyYXRl + VW5pdCI6IkNPU1RfUEVSX1VOSVQiLCJkb2N1bWVudHMiOm51bGwsImp1cmlz + ZGljdGlvbiI6InV0aWxpdHkiLCJxdWFudGl0eUtleSI6eyJrZXlOYW1lIjoi + cmVzaWRlbnRpYWxFbmVyZ3lFZmZpY2llbmN5RWxlY3RyaWNTdG9yYWdlV2F0 + ZXJIZWF0ZXIxMjI4IiwiZGlzcGxheU5hbWUiOiJFbmVyZ3kgRWZmaWNpZW5j + eSBFbGVjdHJpYyBTdG9yYWdlIFdhdGVyIEhlYXRlciIsImRlc2NyaXB0aW9u + IjoiRW5lcmd5IEVmZmljaWVuY3kgRWxlY3RyaWMgU3RvcmFnZSBXYXRlciBI + ZWF0ZXIgXHJcblxyXG5SZXF1aXJlbWVudHM6XHJcbkVuZXJneSBlZmZpY2ll + bmN5IGVsZWN0cmljIHN0b3JhZ2Ugd2F0ZXIgaGVhdGVycyBtdXN0IGhhdmUg + YW4gRW5lcmd5IEZhY3RvciAoRUYpIG9mIDAuOTMgb3IgZ3JlYXRlci4gTG9v + ayBmb3IgdGhlIEVGIHJhdGluZyBvbiB0aGUgd2F0ZXIgaGVhdGVyIHNwZWNp + ZmljYXRpb24gc2hlZXQgb3Igb24gdGhlIHBhY2stYWdpbmcgYm94OyBpdCBk + b2VzIG5vdCBhbHdheXMgYXBwZWFyIG9uIHRoZSB3YXRlciBoZWF0ZXIgbGFi + ZWwgaXRzZWxmLiBUaGlzIHJlYmF0ZSBpcyBsaW1pdGVkIHRvIGVsZWN0cmlj + IHN0b3JhZ2Ugd2F0ZXIgaGVhdGVycyB0aGF0IGFyZSAzMCBnYWxsb25zIG9y + IGdyZWF0ZXIgYW5kIGluc3RhbGxlZCB3aXRoaW4gYSBtdWx0aWZhbWlseSBk + d2VsbGluZyB1bml0LiBNYWtlIGFuZCBtb2RlbCBudW1iZXIgbXVzdCBiZSBp + bmNsdWRlZCB3aXRoIGEgY29weSBvZiB5b3VyIHByb29mLW9mLXB1cmNoYXNl + LlxyXG5cclxuRXhjbHVzaW9uOlxyXG5UYW5rbGVzcyB3YXRlciBoZWF0ZXJz + IGRvIG5vdCBxdWFsaWZ5LiJ9LCJxdWFudGl0eUtleUNhcCI6bnVsbCwic3Rh + dGUiOiJDQSIsInBlcmNlbnRDb3N0Q2FwIjpudWxsLCJwZXJjZW50Q29zdENh + cEtleSI6eyJrZXlOYW1lIjpudWxsfSwicGF5bWVudENhcCI6bnVsbCwicGF5 + bWVudER1cmF0aW9uIjpudWxsLCJpbmNlbnRpdmVQYWlkVG8iOiJ0ZW5hbnRP + ck93bmVyIiwicHJvamVjdFR5cGVFeGNsdXNpdmUiOm51bGwsImFwcGxpY2Fi + aWxpdGllcyI6W3siYXBwbGljYWJpbGl0eUtleSI6ImVuZFVzZVJlc2lkZW50 + aWFsIiwiZGlzcGxheU5hbWUiOiJFbmQgVXNlIFJlc2lkZW50aWFsIiwiZGVz + Y3JpcHRpb24iOiJFbmQgVXNlIFRlY2hub2xvZ3kgZm9yIFJlc2lkZW50aWFs + IiwicmVxdWlyZWRWYWx1ZSI6IndhdGVySGVhdCIsIm9wZXJhdG9yIjoiPSJ9 + XSwic3VtbWFyeSI6bnVsbCwicmVxdWlyZW1lbnRzIjoiRW5lcmd5IGVmZmlj + aWVuY3kgZWxlY3RyaWMgc3RvcmFnZSB3YXRlciBoZWF0ZXJzIG11c3QgaGF2 + ZSBhbiBFbmVyZ3kgRmFjdG9yIChFRikgb2YgMC45M29yIGdyZWF0ZXIuIExv + b2sgZm9yIHRoZSBFRiByYXRpbmcgb24gdGhlIHdhdGVyIGhlYXRlciBzcGVj + aWZpY2F0aW9uIHNoZWV0IG9yIG9uIHRoZSBwYWNrYWdpbmcgYm94OyBpdCBk + b2VzIG5vdCBhbHdheXMgYXBwZWFyIG9uIHRoZSB3YXRlciBoZWF0ZXIgbGFi + ZWwgaXRzZWxmLiBUaGlzIHJlYmF0ZSBpcyBsaW1pdGVkIHRvIGVsZWN0cmlj + IHN0b3JhZ2Ugd2F0ZXIgaGVhdGVycyB0aGF0IGFyZSAzMCBnYWxsb25zIG9y + IGdyZWF0ZXIgYW5kIGluc3RhbGxlZCB3aXRoaW4gYSBtdWx0aWZhbWlseSBk + d2VsbGluZyB1bml0LiBUYW5rbGVzcyB3YXRlciBoZWF0ZXJzIGRvIG5vdCBx + dWFsaWZ5LiBNYWtlIGFuZCBtb2RlbCBudW1iZXIgbXVzdCBiZSBpbmNsdWRl + ZCB3aXRoIGEgY29weSBvZiB5b3VyIHByb29mLW9mLXB1cmNoYXNlLiJ9LHsi + aW5jZW50aXZlSWQiOjMxNTYzNDcsIm1hc3RlckluY2VudGl2ZUlkIjozMTU2 + MzQ3LCJlbGlnaWJpbGl0eSI6IkNPVUxEX0JFX0VMSUdJQkxFIiwicmVxdWly + ZWREYXRhIjpbeyJhcHBsaWNhYmlsaXR5S2V5IjoiZW5kVXNlUmVzaWRlbnRp + YWwiLCJkaXNwbGF5TmFtZSI6IkVuZCBVc2UgUmVzaWRlbnRpYWwiLCJkZXNj + cmlwdGlvbiI6IkVuZCBVc2UgVGVjaG5vbG9neSBmb3IgUmVzaWRlbnRpYWwi + LCJyZXF1aXJlZFZhbHVlIjoiYnVpbGRpbmdTaGVsbCIsIm9wZXJhdG9yIjoi + PSJ9XSwidGFyaWZmQ29kZSI6Ik5vbmUiLCJpbmNlbnRpdmVOYW1lIjoiUmVz + aWRlbnRpYWwgTXVsdGktRmFtaWx5IFdpbmRvdyBSZWJhdGUiLCJsc2VJZCI6 + MTIyOCwibHNlTmFtZSI6IlNvdXRoZXJuIENhbGlmb3JuaWEgRWRpc29uIENv + Iiwic2VydmljZVR5cGUiOiJFTEVDVFJJQ0lUWSIsImN1c3RvbWVyQ2xhc3Mi + OiJSRVNJREVOVElBTCIsInN0YXJ0RGF0ZSI6IjIwMTMtMDEtMDEiLCJlbmRE + YXRlIjoiMjAxNS0wMS0wMSIsImlzRXhoYXVzdGVkIjpmYWxzZSwicHJvamVj + dFR5cGUiOiJidWlsZGluZ1NoZWxsIiwiaW5jZW50aXZlVHlwZSI6InJlYmF0 + ZSIsInJhdGUiOjAuNzUwMDAwLCJyYXRlVW5pdCI6IkNPU1RfUEVSX1VOSVQi + LCJkb2N1bWVudHMiOm51bGwsImp1cmlzZGljdGlvbiI6InV0aWxpdHkiLCJx + dWFudGl0eUtleSI6eyJrZXlOYW1lIjoiaGlnaFBlcmZvcm1hbmNlRHVhbFBh + bmVXaW5kb3cxMjI4IiwiZGlzcGxheU5hbWUiOiJIaWdoIFBlcmZvcm1hbmNl + IER1YWwtUGFuZSBXaW5kb3ciLCJkZXNjcmlwdGlvbiI6IkhpZ2ggUGVyZm9y + bWFuY2UgRHVhbC1QYW5lIFdpbmRvdyBcclxuXHJcblJlcXVpcmVtZW50czpc + clxuSGlnaCBQZXJmb3JtYW5jZSBEdWFsLVBhbmUgV2luZG93cyBhcmUgZWxp + Z2libGUgZm9yIGluY2VudGl2ZXMgcHJvdmlkZWQgdGhleSBoYXZlIGEgVS1m + YWN0b3Igb2YgMC4zNSBvciBsZXNzIGFuZCBhIFNvbGFyIEhlYXQgR2FpbiBD + b2VmZmljaWVudCAoU0hHQykgb2YgMC4zMiBvciBsZXNzLiBVLWZhY3RvciBp + cyBhIG1lYXN1cmUgb2YgdGhlIGhlYXQgZmxvdyB0aHJvdWdoIHRoZSB3aW5k + b3cgYXNzZW1ibHkgYW5kIFNIR0MgaXMgYSBtZWFzdXJlIG9mIHRoZSBzb2xh + ciBlbmVyZ3kgY29taW5nIHRocm91Z2ggdGhlIHdpbmRvdy4gV2luZG93cyB3 + aXRoIGEgU0hHQyBvZiAwLjQgb3IgbGVzcyBhcmUgcmVmZXJyZWQgdG8gYXMg + c3BlY3RyYWxseSBzZWxlY3RpdmUgbG93IEUgZ2xhc3MuIEJvdGggb2YgdGhl + c2UgbnVtYmVycyBjYW4gYmUgZm91bmQgb24gdGhlIE5hdGlvbmFsIEZlbmVz + dHJhdGlvbiBSYXRpbmcgQ291bmNpbChORlJDKSBsYWJlbCBvciBvbiB0aGUg + bWFudWZhY3R1cmVyP3Mgb3JkZXIgY29uZmlybWF0aW9uIHNoZWV0LiBcclxu + XHJcbkV4Y2x1c2lvbjogR2FyYWdlcyBhbmQgb3RoZXIgbm9uLWxpdmluZyBh + cmVhcyBkbyBub3QgcXVhbGlmeSB1bmxlc3MgdGhleSBhcmUgY29uZGl0aW9u + ZWQuIn0sInF1YW50aXR5S2V5Q2FwIjpudWxsLCJzdGF0ZSI6IkNBIiwicGVy + Y2VudENvc3RDYXAiOm51bGwsInBlcmNlbnRDb3N0Q2FwS2V5Ijp7ImtleU5h + bWUiOm51bGx9LCJwYXltZW50Q2FwIjpudWxsLCJwYXltZW50RHVyYXRpb24i + Om51bGwsImluY2VudGl2ZVBhaWRUbyI6InRlbmFudE9yT3duZXIiLCJwcm9q + ZWN0VHlwZUV4Y2x1c2l2ZSI6bnVsbCwiYXBwbGljYWJpbGl0aWVzIjpbeyJh + cHBsaWNhYmlsaXR5S2V5IjoiZW5kVXNlUmVzaWRlbnRpYWwiLCJkaXNwbGF5 + TmFtZSI6IkVuZCBVc2UgUmVzaWRlbnRpYWwiLCJkZXNjcmlwdGlvbiI6IkVu + ZCBVc2UgVGVjaG5vbG9neSBmb3IgUmVzaWRlbnRpYWwiLCJyZXF1aXJlZFZh + bHVlIjoiYnVpbGRpbmdTaGVsbCIsIm9wZXJhdG9yIjoiPSJ9XSwic3VtbWFy + eSI6bnVsbCwicmVxdWlyZW1lbnRzIjoiSGlnaCBQZXJmb3JtYW5jZSBEdWFs + LVBhbmUgV2luZG93cyBhcmUgZWxpZ2libGUgZm9yIGluY2VudGl2ZXMgcHJv + dmlkZWQgdGhleSBoYXZlIGEgVS1mYWN0b3Igb2YgMC4zNSBvciBsZXNzIGFu + ZCBhIFNvbGFyIEhlYXQgR2FpbiBDb2VmZmljaWVudCAoU0hHQykgb2YgMC4z + MiBvciBsZXNzLiBVLWZhY3RvciBpcyBhIG1lYXN1cmUgb2YgdGhlIGhlYXQg + ZmxvdyB0aHJvdWdoIHRoZSB3aW5kb3cgYXNzZW1ibHkgYW5kIFNIR0MgaXMg + YSBtZWFzdXJlIG9mIHRoZSBzb2xhciBlbmVyZ3kgY29taW5nIHRocm91Z2gg + dGhlIHdpbmRvdy4gV2luZG93cyB3aXRoIGEgU0hHQyBvZiAwLjQgb3IgbGVz + cyBhcmUgcmVmZXJyZWQgdG8gYXMgc3BlY3RyYWxseSBzZWxlY3RpdmUgbG93 + IEUgZ2xhc3MuIEJvdGggb2YgdGhlc2UgbnVtYmVycyBjYW4gYmUgZm91bmQg + b24gdGhlIE5hdGlvbmFsIEZlbmVzdHJhdGlvbiBSYXRpbmcgQ291bmNpbChO + RlJDKSBsYWJlbCBvciBvbiB0aGUgbWFudWZhY3R1cmVyJ3Mgb3JkZXIgY29u + ZmlybWF0aW9uIHNoZWV0LiBHYXJhZ2VzIGFuZCBvdGhlciBub24tbGl2aW5n + IGFyZWFzIGRvIG5vdCBxdWFsaWZ5IHVubGVzcyB0aGV5IGFyZSBjb25kaXRp + b25lZC4ifSx7ImluY2VudGl2ZUlkIjozMTU2MzQ4LCJtYXN0ZXJJbmNlbnRp + dmVJZCI6MzE1NjM0OCwiZWxpZ2liaWxpdHkiOiJDT1VMRF9CRV9FTElHSUJM + RSIsInJlcXVpcmVkRGF0YSI6W3siYXBwbGljYWJpbGl0eUtleSI6ImVuZFVz + ZVJlc2lkZW50aWFsIiwiZGlzcGxheU5hbWUiOiJFbmQgVXNlIFJlc2lkZW50 + aWFsIiwiZGVzY3JpcHRpb24iOiJFbmQgVXNlIFRlY2hub2xvZ3kgZm9yIFJl + c2lkZW50aWFsIiwicmVxdWlyZWRWYWx1ZSI6ImxpZ2h0aW5nIiwib3BlcmF0 + b3IiOiI9In1dLCJ0YXJpZmZDb2RlIjoiTm9uZSIsImluY2VudGl2ZU5hbWUi + OiJSZXNpZGVudGlhbCBNdWx0aS1GYW1pbHkgTGlnaHRpbmcgUmViYXRlcyIs + ImxzZUlkIjoxMjI4LCJsc2VOYW1lIjoiU291dGhlcm4gQ2FsaWZvcm5pYSBF + ZGlzb24gQ28iLCJzZXJ2aWNlVHlwZSI6IkVMRUNUUklDSVRZIiwiY3VzdG9t + ZXJDbGFzcyI6IlJFU0lERU5USUFMIiwic3RhcnREYXRlIjoiMjAxMy0wMS0w + MSIsImVuZERhdGUiOiIyMDE1LTAxLTAxIiwiaXNFeGhhdXN0ZWQiOmZhbHNl + LCJwcm9qZWN0VHlwZSI6ImxpZ2h0aW5nIiwiaW5jZW50aXZlVHlwZSI6InJl + YmF0ZSIsInJhdGUiOjUwLjAwMDAwMCwicmF0ZVVuaXQiOiJDT1NUX1BFUl9V + TklUIiwiZG9jdW1lbnRzIjpudWxsLCJqdXJpc2RpY3Rpb24iOiJ1dGlsaXR5 + IiwicXVhbnRpdHlLZXkiOnsia2V5TmFtZSI6ImxFRFBvb2xBbmRTcGFMaWdo + dGluZ0R1c2tUb0Nsb3NlMTIyOCIsImRpc3BsYXlOYW1lIjoiTEVEIFBvb2wg + YW5kIFNwYSBMaWdodGluZyAtIER1c2sgdG8gQ2xvc2UiLCJkZXNjcmlwdGlv + biI6IkxFRCBQb29sIGFuZCBTcGEgTGlnaHRpbmcgLSBEdXNrIHRvIENsb3Nl + IHdpdGggb3BlcmF0aW5nIGhvdXJzIG9mIDZwbSB0byAxMHBtXHJcblxyXG5S + ZXF1aXJlbWVudHM6XHJcbkluY2FuZGVzY2VudCBwb29sIGxhbXAocykgbXVz + dCBiZSByZXBsYWNlZCB3aXRoIExFRCBwb29sIGxpZ2h0aW5nIGluIGNvbW1l + cmNpYWwgYW5kIHJlc2lkZW50aWFsIHN3aW1taW5nIHBvb2xzIGFuZCBzcGFz + LiBGb3IgTEVEIHBvb2wgbGlnaHRzIHRvIG1hdGNoIHRoZSBjb2xvciB0ZW1w + ZXJhdHVyZSBvZiB0aGUgaW5jYW5kZXNjZW50LCBpdCBtdXN0IG1lZXQgdGhl + IG1pbmltdW0gbGlnaHQgbGV2ZWxzIG9mIHRoZSBpbmNhbmRlc2NlbnQgbGFt + cHNcclxuIn0sInF1YW50aXR5S2V5Q2FwIjpudWxsLCJzdGF0ZSI6IkNBIiwi + cGVyY2VudENvc3RDYXAiOm51bGwsInBlcmNlbnRDb3N0Q2FwS2V5Ijp7Imtl + eU5hbWUiOm51bGx9LCJwYXltZW50Q2FwIjpudWxsLCJwYXltZW50RHVyYXRp + b24iOm51bGwsImluY2VudGl2ZVBhaWRUbyI6InRlbmFudE9yT3duZXIiLCJw + cm9qZWN0VHlwZUV4Y2x1c2l2ZSI6bnVsbCwiYXBwbGljYWJpbGl0aWVzIjpb + eyJhcHBsaWNhYmlsaXR5S2V5IjoiZW5kVXNlUmVzaWRlbnRpYWwiLCJkaXNw + bGF5TmFtZSI6IkVuZCBVc2UgUmVzaWRlbnRpYWwiLCJkZXNjcmlwdGlvbiI6 + IkVuZCBVc2UgVGVjaG5vbG9neSBmb3IgUmVzaWRlbnRpYWwiLCJyZXF1aXJl + ZFZhbHVlIjoibGlnaHRpbmciLCJvcGVyYXRvciI6Ij0ifV0sInN1bW1hcnki + Om51bGwsInJlcXVpcmVtZW50cyI6IkFsbCBwcm9kdWN0cyBtdXN0IGJlIG5l + dy4gIEZvciBpdGVtIGxldmVsIHNwZWNpZmljYXRpb25zIHJlZmVyIHRvIGNh + dGFsb2cuIn0seyJpbmNlbnRpdmVJZCI6MzE1NjM1OSwibWFzdGVySW5jZW50 + aXZlSWQiOjMxNTYzNTksImVsaWdpYmlsaXR5IjoiQ09VTERfQkVfRUxJR0lC + TEUiLCJyZXF1aXJlZERhdGEiOlt7ImFwcGxpY2FiaWxpdHlLZXkiOiJlbmRV + c2VSZXNpZGVudGlhbCIsImRpc3BsYXlOYW1lIjoiRW5kIFVzZSBSZXNpZGVu + dGlhbCIsImRlc2NyaXB0aW9uIjoiRW5kIFVzZSBUZWNobm9sb2d5IGZvciBS + ZXNpZGVudGlhbCIsInJlcXVpcmVkVmFsdWUiOiJtYWpvckFwcGxpYW5jZXMi + LCJvcGVyYXRvciI6Ij0ifV0sInRhcmlmZkNvZGUiOiJOb25lIiwiaW5jZW50 + aXZlTmFtZSI6IlJlc2lkZW50aWFsIFJlZnJpZ2VyYXRvciBhbmQgRnJlZXpl + ciBSZWN5Y2xpbmcgSW5jZW50aXZlIiwibHNlSWQiOjEwNzEsImxzZU5hbWUi + OiJTYW4gRGllZ28gR2FzICYgRWxlY3RyaWMgQ28iLCJzZXJ2aWNlVHlwZSI6 + IkVMRUNUUklDSVRZIiwiY3VzdG9tZXJDbGFzcyI6IlJFU0lERU5USUFMIiwi + c3RhcnREYXRlIjoiMjAxMy0wMS0wMSIsImVuZERhdGUiOm51bGwsImlzRXho + YXVzdGVkIjpmYWxzZSwicHJvamVjdFR5cGUiOiJtYWpvckFwcGxpYW5jZXMi + LCJpbmNlbnRpdmVUeXBlIjoicmViYXRlIiwicmF0ZSI6MzUuMDAwMDAwLCJy + YXRlVW5pdCI6IkNPU1RfUEVSX1VOSVQiLCJkb2N1bWVudHMiOm51bGwsImp1 + cmlzZGljdGlvbiI6InV0aWxpdHkiLCJxdWFudGl0eUtleSI6eyJrZXlOYW1l + IjoicmVmcmlnZXJhdG9yMTA3MSIsImRpc3BsYXlOYW1lIjoiUmVmcmlnZXJh + dG9yIChSZWN5Y2xpbmcpIiwiZGVzY3JpcHRpb24iOiJSZWN5Y2xpbmcgb2xk + IHdvcmtpbmcgcmVmcmlnZXJhdG9yLiBcclxuXHJcblJlcXVpcmVtZW50czog + WW91IG11c3QgYmUgYW4gU0RHJkUgcmVzaWRlbnRpYWwgZWxlY3RyaWMgY3Vz + dG9tZXIgYW5kIG93biB0aGUgYXBwbGlhbmNlLiBSZWZyaWdlcmF0b3JzIG11 + c3QgYmUgMTAtMzIgY3ViaWMgZmVldC4gQXBwbGlhbmNlIG11c3QgYmUgaW4g + d29ya2luZyAoY29vbGluZykgb3JkZXIgYW5kIHBsdWdnZWQgaW4gdGhlIG5p + Z2h0IHByaW9yIHRvIHBpY2t1cC4gVHdvIHVuaXRzIG1heCBwZXIgeWVhciAo + dHdvIHJlZnJpZ2VyYXRvciBvciBmcmVlemVycyAtIGFueSBjb21iaW5hdGlv + bi4gIn0sInF1YW50aXR5S2V5Q2FwIjpudWxsLCJzdGF0ZSI6IkNBIiwicGVy + Y2VudENvc3RDYXAiOm51bGwsInBlcmNlbnRDb3N0Q2FwS2V5Ijp7ImtleU5h + bWUiOm51bGx9LCJwYXltZW50Q2FwIjpudWxsLCJwYXltZW50RHVyYXRpb24i + Om51bGwsImluY2VudGl2ZVBhaWRUbyI6InRlbmFudE9yT3duZXIiLCJwcm9q + ZWN0VHlwZUV4Y2x1c2l2ZSI6bnVsbCwiYXBwbGljYWJpbGl0aWVzIjpbeyJh + cHBsaWNhYmlsaXR5S2V5IjoiZW5kVXNlUmVzaWRlbnRpYWwiLCJkaXNwbGF5 + TmFtZSI6IkVuZCBVc2UgUmVzaWRlbnRpYWwiLCJkZXNjcmlwdGlvbiI6IkVu + ZCBVc2UgVGVjaG5vbG9neSBmb3IgUmVzaWRlbnRpYWwiLCJyZXF1aXJlZFZh + bHVlIjoibWFqb3JBcHBsaWFuY2VzIiwib3BlcmF0b3IiOiI9In1dLCJzdW1t + YXJ5IjpudWxsLCJyZXF1aXJlbWVudHMiOiJHZXQgYSAkMzUgcmViYXRlIHdo + ZW4geW91IHJlY3ljbGUgb2xkIHdvcmtpbmcgcmVmcmlnZXJhdG9ycywgZnJl + ZXplcnMgYW5kIHJvb20gYWlyIGNvbmRpdGlvbmVycy4gRmluZCBvdXQgd2hl + dGhlciB5b3VyIGFwcGxpYW5jZSBpcyBlbGlnaWJsZSBmb3IgdGhlIHJlYmF0 + ZSBhbmQgc2NoZWR1bGUgYSBwaWNrLXVwIGRhdGUgYW5kIHRpbWUgYnkgY2Fs + bGluZyB0aGUgQXBwbGlhbmNlIFJlY3ljbGluZyBDZW50ZXJzIG9mIEFtZXJp + Y2EsIEluYy4gKEFSQ0EpIGF0IDEtODAwLTU5OS01NzkyIG9yIGJ5IGVucm9s + bGluZyBvbmxpbmUuIn0seyJpbmNlbnRpdmVJZCI6MzE1NjM2MCwibWFzdGVy + SW5jZW50aXZlSWQiOjMxNTYzNjAsImVsaWdpYmlsaXR5IjoiQ09VTERfQkVf + RUxJR0lCTEUiLCJyZXF1aXJlZERhdGEiOlt7ImFwcGxpY2FiaWxpdHlLZXki + OiJlbmRVc2VSZXNpZGVudGlhbCIsImRpc3BsYXlOYW1lIjoiRW5kIFVzZSBS + ZXNpZGVudGlhbCIsImRlc2NyaXB0aW9uIjoiRW5kIFVzZSBUZWNobm9sb2d5 + IGZvciBSZXNpZGVudGlhbCIsInJlcXVpcmVkVmFsdWUiOiJhaXJIZWF0Q29v + bCIsIm9wZXJhdG9yIjoiPSJ9XSwidGFyaWZmQ29kZSI6Ik5vbmUiLCJpbmNl + bnRpdmVOYW1lIjoiUmVzaWRlbnRpYWwgQWlyIENvbmRpdGlvbmVyIFJlY3lj + bGluZyBJbmNlbnRpdmUiLCJsc2VJZCI6MTA3MSwibHNlTmFtZSI6IlNhbiBE + aWVnbyBHYXMgJiBFbGVjdHJpYyBDbyIsInNlcnZpY2VUeXBlIjoiRUxFQ1RS + SUNJVFkiLCJjdXN0b21lckNsYXNzIjoiUkVTSURFTlRJQUwiLCJzdGFydERh + dGUiOiIyMDEzLTAxLTAxIiwiZW5kRGF0ZSI6IjIwMTQtMDEtMDEiLCJpc0V4 + aGF1c3RlZCI6ZmFsc2UsInByb2plY3RUeXBlIjoiaHZhYyIsImluY2VudGl2 + ZVR5cGUiOiJyZWJhdGUiLCJyYXRlIjozNS4wMDAwMDAsInJhdGVVbml0Ijoi + Q09TVF9QRVJfVU5JVCIsImRvY3VtZW50cyI6bnVsbCwianVyaXNkaWN0aW9u + IjoidXRpbGl0eSIsInF1YW50aXR5S2V5Ijp7ImtleU5hbWUiOiJyb29tQWly + Q29uZGl0aW9uZXIxMDcxIiwiZGlzcGxheU5hbWUiOiJSb29tIEFpciBDb25k + aXRpb25lciAoUmVjeWNsaW5nKSIsImRlc2NyaXB0aW9uIjoiUmVjeWNsaW5n + IG9sZCB3b3JraW5nIHJvb20gYWlyIGNvbmRpdGlvbmVyLiBcclxuXHJcbkEg + cmViYXRlIGlzIHByb3ZpZGVkIGZvciByb29tIGFpciBjb25kaXRpb25lcnMg + dGhhdCBhcmUgY29sbGVjdGVkIGluIGNvbmp1bmN0aW9uIHdpdGggYSByZWZy + aWdlcmF0b3IvZnJlZXplci4gVGhlIGFwcGxpYW5jZXMsIHdoaWNoIGFyZSBw + aWNrZWQgdXAgaW5zaWRlIHRoZSBjdXN0b21lcnM/IGhvbWUgYW5kIGFyZSBw + cm9wZXJseSByZWN5Y2xlZCBpbiBhIGxvY2FsIENhbGlmb3JuaWEgcmVjeWNs + aW5nIGNlbnRlciwgcHJvdmlkZSBhIGNvbnZlbmllbnQgYW5kIGVudmlyb25t + ZW50YWxseSBmcmllbmRseSBzb2x1dGlvbiBmb3IgdGhlIGRpc3Bvc2FsIG9m + IG9sZCwgd29ya2luZyByZWZyaWdlcmF0aW9uIGFwcGxpYW5jZXMuIn0sInF1 + YW50aXR5S2V5Q2FwIjpudWxsLCJzdGF0ZSI6IkNBIiwicGVyY2VudENvc3RD + YXAiOm51bGwsInBlcmNlbnRDb3N0Q2FwS2V5Ijp7ImtleU5hbWUiOm51bGx9 + LCJwYXltZW50Q2FwIjpudWxsLCJwYXltZW50RHVyYXRpb24iOm51bGwsImlu + Y2VudGl2ZVBhaWRUbyI6InRlbmFudE9yT3duZXIiLCJwcm9qZWN0VHlwZUV4 + Y2x1c2l2ZSI6bnVsbCwiYXBwbGljYWJpbGl0aWVzIjpbeyJhcHBsaWNhYmls + aXR5S2V5IjoiZW5kVXNlUmVzaWRlbnRpYWwiLCJkaXNwbGF5TmFtZSI6IkVu + ZCBVc2UgUmVzaWRlbnRpYWwiLCJkZXNjcmlwdGlvbiI6IkVuZCBVc2UgVGVj + aG5vbG9neSBmb3IgUmVzaWRlbnRpYWwiLCJyZXF1aXJlZFZhbHVlIjoiYWly + SGVhdENvb2wiLCJvcGVyYXRvciI6Ij0ifV0sInN1bW1hcnkiOm51bGwsInJl + cXVpcmVtZW50cyI6IlRoZSBBcHBsaWFuY2UgUmVjeWNsaW5nIFByb2dyYW0s + IHdoaWNoIGhhcyBiZWVuIGF2YWlsYWJsZSBzaW5jZSAyMDAwLCBwcm92aWRl + cyBTREcmRSByZXNpZGVudGlhbCBlbGVjdHJpYyBjdXN0b21lcnMgYSByZWJh + dGUgdG8gcmVjeWNsZSB0aGVpciBvbGQsIHdvcmtpbmcgcmVmcmlnZXJhdG9y + cywgZnJlZXplcnMgYW5kL29yIHJvb20gYWlyIGNvbmRpdGlvbmVycy4gQSAk + MzUgcmViYXRlIGlzIHByb3ZpZGVkIHBlciByZWZyaWdlcmF0b3IvZnJlZXpl + ciwgYW5kIGEgJDI1IHJlYmF0ZSBpcyBwcm92aWRlZCBmb3Igcm9vbSBhaXIg + Y29uZGl0aW9uZXJzIHRoYXQgYXJlIGNvbGxlY3RlZCBpbiBjb25qdW5jdGlv + biB3aXRoIGEgcmVmcmlnZXJhdG9yL2ZyZWV6ZXIuIFRoZSBhcHBsaWFuY2Vz + LCB3aGljaCBhcmUgcGlja2VkIHVwIGluc2lkZSB0aGUgY3VzdG9tZXJzw6Li + gqzihKIgaG9tZSBhbmQgYXJlIHByb3Blcmx5IHJlY3ljbGVkIGluIGEgbG9j + YWwgQ2FsaWZvcm5pYSByZWN5Y2xpbmcgY2VudGVyLCBwcm92aWRlIGEgY29u + dmVuaWVudCBhbmQgZW52aXJvbm1lbnRhbGx5IGZyaWVuZGx5IHNvbHV0aW9u + IGZvciB0aGUgZGlzcG9zYWwgb2Ygb2xkLCB3b3JraW5nIHJlZnJpZ2VyYXRp + b24gYXBwbGlhbmNlcy4ifSx7ImluY2VudGl2ZUlkIjozMTU2MzYxLCJtYXN0 + ZXJJbmNlbnRpdmVJZCI6MzE1NjM2MSwiZWxpZ2liaWxpdHkiOiJDT1VMRF9C + RV9FTElHSUJMRSIsInJlcXVpcmVkRGF0YSI6W3siYXBwbGljYWJpbGl0eUtl + eSI6ImVuZFVzZVJlc2lkZW50aWFsIiwiZGlzcGxheU5hbWUiOiJFbmQgVXNl + IFJlc2lkZW50aWFsIiwiZGVzY3JpcHRpb24iOiJFbmQgVXNlIFRlY2hub2xv + Z3kgZm9yIFJlc2lkZW50aWFsIiwicmVxdWlyZWRWYWx1ZSI6Im1ham9yQXBw + bGlhbmNlcyIsIm9wZXJhdG9yIjoiPSJ9XSwidGFyaWZmQ29kZSI6Ik5vbmUi + LCJpbmNlbnRpdmVOYW1lIjoiU21hcnQgQXBwbGlhbmNlIFJlY3ljbGluZyIs + ImxzZUlkIjo4MTksImxzZU5hbWUiOiJQRUNPIEVuZXJneSBDbyIsInNlcnZp + Y2VUeXBlIjoiRUxFQ1RSSUNJVFkiLCJjdXN0b21lckNsYXNzIjoiUkVTSURF + TlRJQUwiLCJzdGFydERhdGUiOiIyMDEzLTAxLTAxIiwiZW5kRGF0ZSI6IjIw + MTMtMDYtMDEiLCJpc0V4aGF1c3RlZCI6ZmFsc2UsInByb2plY3RUeXBlIjoi + bWFqb3JBcHBsaWFuY2VzIiwiaW5jZW50aXZlVHlwZSI6InJlYmF0ZSIsInJh + dGUiOjE1LjAwMDAwMCwicmF0ZVVuaXQiOiJDT1NUX1BFUl9VTklUIiwiZG9j + dW1lbnRzIjpudWxsLCJqdXJpc2RpY3Rpb24iOiJ1dGlsaXR5IiwicXVhbnRp + dHlLZXkiOnsia2V5TmFtZSI6InJlZnJpZ2VyYXRvckZyZWV6ZXJSZWN5Y2xp + bmciLCJkaXNwbGF5TmFtZSI6IlJlZnJpZ2VyYXRvci9GcmVlemVyIFJlY3lj + bGluZyIsImRlc2NyaXB0aW9uIjoiUmVmcmlnZXJhdG9yL0ZyZWV6ZXIgUmVj + eWNsaW5nLiBSZXF1aXJlbWVudHM6IFJlZnJpZ2VyYXRvciBvciBGcmVlemVy + IHVuaXQgbXVzdCBiZSBiZXR3ZWVuIDEwIGFuZCAzMCBjdWJpYyBmZWV0LiBF + bXB0eSBhbmQgd29ya2luZyBhdCB0aGUgdGltZSBvZiBwaWNrLXVwLiBBY2Nl + c3NpYmxlIHdpdGggYSBjbGVhciBhbmQgc2FmZSBwYXRoIG9mIHJlbW92YWwu + IFRoZSByZW1vdmFsIHRlYW0gd2lsbCBub3QgcmlzayBpbmp1cnksIHJlbW92 + ZSBwZXJzb25hbCBlZmZlY3RzIG9yIG1vZGlmeSB5b3VyIGhvbWUgKGUuZy4g + cmVtb3ZlIGRvb3JzIG9yIHJhaWxpbmdzKSB0byByZW1vdmUgdGhlIHVuaXQo + cykuIFRoZSBjdXN0b21lciBtdXN0IG93biB0aGUgdW5pdChzKSBiZWluZyBy + ZWN5Y2xlZC4gRXhjbHVzaW9uczogTm9uLXdvcmtpbmcgZnJpZGdlcyBhbmQg + ZnJlZXplcnMgZG8gbm90IHF1YWxpZnkgZm9yIHRoZSBBcHBsaWFuY2UgUmVj + eWNsaW5nIHByb2dyYW0uIn0sInF1YW50aXR5S2V5Q2FwIjpudWxsLCJzdGF0 + ZSI6IlBBIiwicGVyY2VudENvc3RDYXAiOm51bGwsInBlcmNlbnRDb3N0Q2Fw + S2V5Ijp7ImtleU5hbWUiOm51bGx9LCJwYXltZW50Q2FwIjpudWxsLCJwYXlt + ZW50RHVyYXRpb24iOm51bGwsImluY2VudGl2ZVBhaWRUbyI6InRlbmFudE9y + T3duZXIiLCJwcm9qZWN0VHlwZUV4Y2x1c2l2ZSI6bnVsbCwiYXBwbGljYWJp + bGl0aWVzIjpbeyJhcHBsaWNhYmlsaXR5S2V5IjoiZW5kVXNlUmVzaWRlbnRp + YWwiLCJkaXNwbGF5TmFtZSI6IkVuZCBVc2UgUmVzaWRlbnRpYWwiLCJkZXNj + cmlwdGlvbiI6IkVuZCBVc2UgVGVjaG5vbG9neSBmb3IgUmVzaWRlbnRpYWwi + LCJyZXF1aXJlZFZhbHVlIjoibWFqb3JBcHBsaWFuY2VzIiwib3BlcmF0b3Ii + OiI9In1dLCJzdW1tYXJ5IjpudWxsLCJyZXF1aXJlbWVudHMiOiJSZXF1aXJl + bWVudHM6IDEuIEJldHdlZW4gMTAgYW5kIDMwIGN1YmljIGZlZXQgaW4gc2l6 + ZS4gU2l6ZSBpcyB1c3VhbGx5IGluZGljYXRlZCBvbiB0aGUgc2lkZSBvZiB0 + aGUgcmVmcmlnZXJhdG9yIG9yIGZyZWV6ZXIgZG9vci4yLiBFbXB0eSBhbmQg + d29ya2luZyBhdCB0aGUgdGltZSBvZiBwaWNrLXVwLjMuIEFjY2Vzc2libGUg + d2l0aCBhIGNsZWFyIGFuZCBzYWZlIHBhdGggb2YgcmVtb3ZhbC4gVGhlIHJl + bW92YWwgdGVhbSB3aWxsIG5vdCByaXNrIGluanVyeSwgcmVtb3ZlIHBlcnNv + bmFsIGVmZmVjdHMgb3IgbW9kaWZ5IHlvdXIgaG9tZSAoZS5nLiByZW1vdmUg + ZG9vcnMgb3IgcmFpbGluZ3MpIHRvIHJlbW92ZSB0aGUgdW5pdChzKS4ifSx7 + ImluY2VudGl2ZUlkIjozMTU2MzYyLCJtYXN0ZXJJbmNlbnRpdmVJZCI6MzE1 + NjM2MiwiZWxpZ2liaWxpdHkiOiJDT1VMRF9CRV9FTElHSUJMRSIsInJlcXVp + cmVkRGF0YSI6W3siYXBwbGljYWJpbGl0eUtleSI6ImVuZFVzZVJlc2lkZW50 + aWFsIiwiZGlzcGxheU5hbWUiOiJFbmQgVXNlIFJlc2lkZW50aWFsIiwiZGVz + Y3JpcHRpb24iOiJFbmQgVXNlIFRlY2hub2xvZ3kgZm9yIFJlc2lkZW50aWFs + IiwicmVxdWlyZWRWYWx1ZSI6ImV2Iiwib3BlcmF0b3IiOiI9In1dLCJ0YXJp + ZmZDb2RlIjoiTm9uZSIsImluY2VudGl2ZU5hbWUiOiJTbWFydCBEcml2ZXIg + UmViYXRlcyIsImxzZUlkIjo4MTksImxzZU5hbWUiOiJQRUNPIEVuZXJneSBD + byIsInNlcnZpY2VUeXBlIjoiRUxFQ1RSSUNJVFkiLCJjdXN0b21lckNsYXNz + IjoiUkVTSURFTlRJQUwiLCJzdGFydERhdGUiOiIyMDEzLTAxLTAxIiwiZW5k + RGF0ZSI6IjIwMTMtMTItMzEiLCJpc0V4aGF1c3RlZCI6ZmFsc2UsInByb2pl + Y3RUeXBlIjoiZXYiLCJpbmNlbnRpdmVUeXBlIjoicmViYXRlIiwicmF0ZSI6 + NTAuMDAwMDAwLCJyYXRlVW5pdCI6IkNPU1RfUEVSX1VOSVQiLCJkb2N1bWVu + dHMiOm51bGwsImp1cmlzZGljdGlvbiI6InV0aWxpdHkiLCJxdWFudGl0eUtl + eSI6eyJrZXlOYW1lIjoibmV3RWxlY3RyaWNWZWhpY2xlIiwiZGlzcGxheU5h + bWUiOiJOZXcgRWxlY3RyaWMgVmVoaWNsZSAiLCJkZXNjcmlwdGlvbiI6Ik5l + dyBFbGVjdHJpYyBWZWhpY2xlLiBSZXF1aXJlbWVudHM6IFlvdSBhcmUgdGhl + IGFjY291bnQgaG9sZGVyIHdobyBjdXJyZW50bHkgcmVjZWl2ZXMgcmVzaWRl + bnRpYWwgZWxlY3RyaWMgc2VydmljZSBmcm9tIFBFQ08gb3IgbGl2ZSBhdCB0 + aGUgc2FtZSBhZGRyZXNzIGFzIHRoZSBhY2NvdW50IGhvbGRlci4gWW91IGFy + ZSBhIHRlbmFudCBvZiBhbiBhcGFydG1lbnQgdGhhdCBpcyBpbiB0aGUgUEVD + TyBzZXJ2aWNlIHRlcnJpdG9yeSBhbmQgeW91IHBheSBmb3IgeW91ciByZXNp + ZGVudGlhbCBlbGVjdHJpYyBzZXJ2aWNlIGFzIGEgcGFydCBvZiB0aGUgcmVu + dCB5b3UgcGF5IHlvdXIgbGFuZGxvcmQuIFlvdXIgcHJpbWFyeSBwbGFjZSBv + ZiByZWNoYXJnaW5nIHlvdXIgdmVoaWNsZSBpcyBvciB3aWxsIGJlIGxvY2F0 + ZWQgaW4gdGhlIFBFQ08gc2VydmljZSB0ZXJyaXRvcnkuIFJlYmF0ZSBmdW5k + cyBhcmUgbGltaXRlZCBhbmQgcmViYXRlcyBhcmUgY29udGluZ2VudCB1cG9u + IGZ1bmQgYXZhaWxhYmlsaXR5IGZvciB0aGlzIHByb2dyYW0uIFlvdSBtdXN0 + IHB1cmNoYXNlIGEgcXVhbGlmaWVkIGVsZWN0cmljIHZlaGljbGUgYnkgRGVj + ZW1iZXIgMzEsIDIwMTMgbmQgc3VibWl0IGEgUmViYXRlIGZvcm0gdGhhdCBp + cyBwb3N0bWFya2VkIGJ5IE1hcmNoIDEsMjAxNC4gQSBsaXN0IG9mIHF1YWxp + ZmllZCBlbGVjdHJpYyB2ZWhpY2xlcyBjYW4gYmUgZm91bmQgYXQgd3d3LlBF + Q08uY29tL0dyZWVuVmVoaWNsZXMsIGNsaWNrIG9uIHRoZSBQRUNPU21hcnQg + RHJpdmVyIFJlYmF0ZXMgbGluaywgb3IgYnkgY2FsbGluZyAxIC04ODgtNS1Q + RUNPLVNBVkUgKDEgLTg4OC01NzMtMjY3MikuIn0sInF1YW50aXR5S2V5Q2Fw + IjpudWxsLCJzdGF0ZSI6IlBBIiwicGVyY2VudENvc3RDYXAiOm51bGwsInBl + cmNlbnRDb3N0Q2FwS2V5Ijp7ImtleU5hbWUiOm51bGx9LCJwYXltZW50Q2Fw + IjpudWxsLCJwYXltZW50RHVyYXRpb24iOm51bGwsImluY2VudGl2ZVBhaWRU + byI6InRlbmFudE9yT3duZXIiLCJwcm9qZWN0VHlwZUV4Y2x1c2l2ZSI6bnVs + bCwiYXBwbGljYWJpbGl0aWVzIjpbeyJhcHBsaWNhYmlsaXR5S2V5IjoiZW5k + VXNlUmVzaWRlbnRpYWwiLCJkaXNwbGF5TmFtZSI6IkVuZCBVc2UgUmVzaWRl + bnRpYWwiLCJkZXNjcmlwdGlvbiI6IkVuZCBVc2UgVGVjaG5vbG9neSBmb3Ig + UmVzaWRlbnRpYWwiLCJyZXF1aXJlZFZhbHVlIjoiZXYiLCJvcGVyYXRvciI6 + Ij0ifV0sInN1bW1hcnkiOm51bGwsInJlcXVpcmVtZW50cyI6IlJlYmF0ZSBF + bGlnaWJpbGl0eTogMS4gWW91IGFyZSB0aGUgYWNjb3VudCBob2xkZXIgd2hv + IGN1cnJlbnRseSByZWNlaXZlcyByZXNpZGVudGlhbCBlbGVjdHJpYyBzZXJ2 + aWNlIGZyb20gUEVDTyBvciBsaXZlIGF0IHRoZXNhbWUgYWRkcmVzcyBhcyB0 + aGUgYWNjb3VudCBob2xkZXIuMi4gWW91IGFyZSBhIHRlbmFudCBvZiBhbiBh + cGFydG1lbnQgdGhhdCBpcyBpbiB0aGUgUEVDTyBzZXJ2aWNlIHRlcnJpdG9y + eSBhbmQgeW91IHBheSBmb3IgeW91ciByZXNpZGVudGlhbGVsZWN0cmljIHNl + cnZpY2UgYXMgYSBwYXJ0IG9mIHRoZSByZW50IHlvdSBwYXkgeW91ciBsYW5k + bG9yZC4zLiBZb3VyIHByaW1hcnkgcGxhY2Ugb2YgcmVjaGFyZ2luZyB5b3Vy + IHZlaGljbGUgaXMgb3Igd2lsbCBiZSBsb2NhdGVkIGluIHRoZSBQRUNPIHNl + cnZpY2UgdGVycml0b3J5LjQuIFJlYmF0ZSBmdW5kcyBhcmUgbGltaXRlZCBh + bmQgcmViYXRlcyBhcmUgY29udGluZ2VudCB1cG9uIGZ1bmQgYXZhaWxhYmls + aXR5IGZvciB0aGlzIHByb2dyYW0uNS4gWW91IG11c3QgcHVyY2hhc2UgYSBx + dWFsaWZpZWQgZWxlY3RyaWMgdmVoaWNsZSBieSBEZWNlbWJlciAzMSwgMjAx + MyBhbmQgc3VibWl0IGEgUmViYXRlIGZvcm0gdGhhdCBpc3Bvc3RtYXJrZWQg + YnkgTWFyY2ggMSwgMjAxNC42LiBBIGxpc3Qgb2YgcXVhbGlmaWVkIGVsZWN0 + cmljIHZlaGljbGVzIGNhbiBiZSBmb3VuZCBhdCB3d3cuUEVDTy5jb20vR3Jl + ZW5WZWhpY2xlcywgY2xpY2sgb24gdGhlIFBFQ08gU21hcnQgRHJpdmVyIFJl + YmF0ZXMgbGluaywgb3IgYnkgY2FsbGluZyAxLTg4OC01LVBFQ08tU0FWRSAo + MS04ODgtNTczLTI2NzIpLiJ9LHsiaW5jZW50aXZlSWQiOjMxNTYzNjMsIm1h + c3RlckluY2VudGl2ZUlkIjozMTU2MzYzLCJlbGlnaWJpbGl0eSI6IkNPVUxE + X0JFX0VMSUdJQkxFIiwicmVxdWlyZWREYXRhIjpbeyJhcHBsaWNhYmlsaXR5 + S2V5IjoiZW5kVXNlUmVzaWRlbnRpYWwiLCJkaXNwbGF5TmFtZSI6IkVuZCBV + c2UgUmVzaWRlbnRpYWwiLCJkZXNjcmlwdGlvbiI6IkVuZCBVc2UgVGVjaG5v + bG9neSBmb3IgUmVzaWRlbnRpYWwiLCJyZXF1aXJlZFZhbHVlIjoiYWlySGVh + dENvb2wiLCJvcGVyYXRvciI6Ij0ifV0sInRhcmlmZkNvZGUiOiJOb25lIiwi + aW5jZW50aXZlTmFtZSI6IlNtYXJ0IEEvQyBTYXZlciIsImxzZUlkIjo4MTks + ImxzZU5hbWUiOiJQRUNPIEVuZXJneSBDbyIsInNlcnZpY2VUeXBlIjoiRUxF + Q1RSSUNJVFkiLCJjdXN0b21lckNsYXNzIjoiUkVTSURFTlRJQUwiLCJzdGFy + dERhdGUiOiIyMDEyLTA2LTAxIiwiZW5kRGF0ZSI6IjIwMTMtMDYtMDEiLCJp + c0V4aGF1c3RlZCI6ZmFsc2UsInByb2plY3RUeXBlIjoibG9hZE1hbmFnZW1l + bnQiLCJpbmNlbnRpdmVUeXBlIjoicmViYXRlIiwicmF0ZSI6MzAuMDAwMDAw + LCJyYXRlVW5pdCI6IkNPU1RfUEVSX1VOSVQiLCJkb2N1bWVudHMiOm51bGws + Imp1cmlzZGljdGlvbiI6InV0aWxpdHkiLCJxdWFudGl0eUtleSI6eyJrZXlO + YW1lIjpudWxsfSwicXVhbnRpdHlLZXlDYXAiOm51bGwsInN0YXRlIjoiUEEi + LCJwZXJjZW50Q29zdENhcCI6bnVsbCwicGVyY2VudENvc3RDYXBLZXkiOnsi + a2V5TmFtZSI6bnVsbH0sInBheW1lbnRDYXAiOm51bGwsInBheW1lbnREdXJh + dGlvbiI6bnVsbCwiaW5jZW50aXZlUGFpZFRvIjoidGVuYW50T3JPd25lciIs + InByb2plY3RUeXBlRXhjbHVzaXZlIjpudWxsLCJhcHBsaWNhYmlsaXRpZXMi + Olt7ImFwcGxpY2FiaWxpdHlLZXkiOiJlbmRVc2VSZXNpZGVudGlhbCIsImRp + c3BsYXlOYW1lIjoiRW5kIFVzZSBSZXNpZGVudGlhbCIsImRlc2NyaXB0aW9u + IjoiRW5kIFVzZSBUZWNobm9sb2d5IGZvciBSZXNpZGVudGlhbCIsInJlcXVp + cmVkVmFsdWUiOiJhaXJIZWF0Q29vbCIsIm9wZXJhdG9yIjoiPSJ9XSwic3Vt + bWFyeSI6bnVsbCwicmVxdWlyZW1lbnRzIjoiVG8gYmUgZWxpZ2libGUgY3Vz + dG9tZXJzIG11c3QgaGF2ZSBhIGNlbnRyYWwgYWlyIGNvbmRpdGlvbmluZyJ9 + LHsiaW5jZW50aXZlSWQiOjMxNTYzNjQsIm1hc3RlckluY2VudGl2ZUlkIjoz + MTU2MzY0LCJlbGlnaWJpbGl0eSI6IkNPVUxEX0JFX0VMSUdJQkxFIiwicmVx + dWlyZWREYXRhIjpbeyJhcHBsaWNhYmlsaXR5S2V5IjoiZW5kVXNlUmVzaWRl + bnRpYWwiLCJkaXNwbGF5TmFtZSI6IkVuZCBVc2UgUmVzaWRlbnRpYWwiLCJk + ZXNjcmlwdGlvbiI6IkVuZCBVc2UgVGVjaG5vbG9neSBmb3IgUmVzaWRlbnRp + YWwiLCJyZXF1aXJlZFZhbHVlIjoibWFqb3JBcHBsaWFuY2VzIiwib3BlcmF0 + b3IiOiI9In1dLCJ0YXJpZmZDb2RlIjoiTm9uZSIsImluY2VudGl2ZU5hbWUi + OiJSZXNpZGVudGlhbCBBcHBsaWFuY2VzIFJlYmF0ZXMiLCJsc2VJZCI6MTA3 + MSwibHNlTmFtZSI6IlNhbiBEaWVnbyBHYXMgJiBFbGVjdHJpYyBDbyIsInNl + cnZpY2VUeXBlIjoiRUxFQ1RSSUNJVFkiLCJjdXN0b21lckNsYXNzIjoiUkVT + SURFTlRJQUwiLCJzdGFydERhdGUiOiIyMDEzLTAxLTAxIiwiZW5kRGF0ZSI6 + IjIwMTUtMDEtMDEiLCJpc0V4aGF1c3RlZCI6ZmFsc2UsInByb2plY3RUeXBl + IjoibWFqb3JBcHBsaWFuY2VzIiwiaW5jZW50aXZlVHlwZSI6InJlYmF0ZSIs + InJhdGUiOjUwLjAwMDAwMCwicmF0ZVVuaXQiOiJDT1NUX1BFUl9VTklUIiwi + ZG9jdW1lbnRzIjpudWxsLCJqdXJpc2RpY3Rpb24iOiJ1dGlsaXR5IiwicXVh + bnRpdHlLZXkiOnsia2V5TmFtZSI6InJlc2lkZW50aWFsQ0VFUXVhbGlmaWVk + UmVmcmlnZXJhdG9yMTA3MSIsImRpc3BsYXlOYW1lIjoiUmVzaWRlbnRpYWwg + Q0VFLVF1YWxpZmllZCBSZWZyaWdlcmF0b3IiLCJkZXNjcmlwdGlvbiI6IlJl + c2lkZW50aWFsIENFRS1RdWFsaWZpZWQgUmVmcmlnZXJhdG9yXHJcblxyXG5S + ZXF1aXJlbWVudDogUmVzaWRlbnRpYWwgQ0VFLVF1YWxpZmllZCBSZWZyaWdl + cmF0b3IsIENFRSB0aWVyIDIgb3IgaGlnaGVyLiBMaW1pdCBvZiBvbmUgcmVm + cmlnZXJhdG9yIHJlYmF0ZSBwZXIgaG91c2Vob2xkIn0sInF1YW50aXR5S2V5 + Q2FwIjpudWxsLCJzdGF0ZSI6IkNBIiwicGVyY2VudENvc3RDYXAiOm51bGws + InBlcmNlbnRDb3N0Q2FwS2V5Ijp7ImtleU5hbWUiOm51bGx9LCJwYXltZW50 + Q2FwIjpudWxsLCJwYXltZW50RHVyYXRpb24iOm51bGwsImluY2VudGl2ZVBh + aWRUbyI6InRlbmFudE9yT3duZXIiLCJwcm9qZWN0VHlwZUV4Y2x1c2l2ZSI6 + bnVsbCwiYXBwbGljYWJpbGl0aWVzIjpbeyJhcHBsaWNhYmlsaXR5S2V5Ijoi + ZW5kVXNlUmVzaWRlbnRpYWwiLCJkaXNwbGF5TmFtZSI6IkVuZCBVc2UgUmVz + aWRlbnRpYWwiLCJkZXNjcmlwdGlvbiI6IkVuZCBVc2UgVGVjaG5vbG9neSBm + b3IgUmVzaWRlbnRpYWwiLCJyZXF1aXJlZFZhbHVlIjoibWFqb3JBcHBsaWFu + Y2VzIiwib3BlcmF0b3IiOiI9In1dLCJzdW1tYXJ5IjpudWxsLCJyZXF1aXJl + bWVudHMiOiJSZWZyaWdlcmF0b3IgLSBDRUUgMSBxdWFsaWZpZWQgYW5kIGxp + bWl0IG9mIDEgcmVmcmlnZXJhdG9yIHJlYmF0ZSBwZXIgaG91c2Vob2xkLiBD + bG90aGVzIFdhc2hlciAtIG11c3QgYmUgQ0VFIFRpZXIgMyBxdWFsaWZpZWQg + YW5kIG11c3QgaGF2ZSBhIE1vZGlmaWVkIEVuZXJneSBGYWN0b3IgKE1FRikg + b2YgMi40IG9yIGFib3ZlIGFuZCBXYXRlciBGYWN0b3IgKFdGKSBvZiA0LjAg + b3IgYmVsb3cuIn0seyJpbmNlbnRpdmVJZCI6MzE1NjM2NywibWFzdGVySW5j + ZW50aXZlSWQiOjMxNTYzNjcsImVsaWdpYmlsaXR5IjoiQ09VTERfQkVfRUxJ + R0lCTEUiLCJyZXF1aXJlZERhdGEiOlt7ImFwcGxpY2FiaWxpdHlLZXkiOiJl + bmRVc2VSZXNpZGVudGlhbCIsImRpc3BsYXlOYW1lIjoiRW5kIFVzZSBSZXNp + ZGVudGlhbCIsImRlc2NyaXB0aW9uIjoiRW5kIFVzZSBUZWNobm9sb2d5IGZv + ciBSZXNpZGVudGlhbCIsInJlcXVpcmVkVmFsdWUiOiJwb29sIiwib3BlcmF0 + b3IiOiI9In1dLCJ0YXJpZmZDb2RlIjoiTm9uZSIsImluY2VudGl2ZU5hbWUi + OiJSZXNpZGVudGlhbCBQb29sIFJlYmF0ZXMiLCJsc2VJZCI6MTA3MSwibHNl + TmFtZSI6IlNhbiBEaWVnbyBHYXMgJiBFbGVjdHJpYyBDbyIsInNlcnZpY2VU + eXBlIjoiRUxFQ1RSSUNJVFkiLCJjdXN0b21lckNsYXNzIjoiUkVTSURFTlRJ + QUwiLCJzdGFydERhdGUiOiIyMDEzLTAxLTAxIiwiZW5kRGF0ZSI6IjIwMTUt + MDEtMDEiLCJpc0V4aGF1c3RlZCI6ZmFsc2UsInByb2plY3RUeXBlIjoicG9v + bCIsImluY2VudGl2ZVR5cGUiOiJyZWJhdGUiLCJyYXRlIjoyMDAuMDAwMDAw + LCJyYXRlVW5pdCI6IkNPU1RfUEVSX1VOSVQiLCJkb2N1bWVudHMiOm51bGws + Imp1cmlzZGljdGlvbiI6InV0aWxpdHkiLCJxdWFudGl0eUtleSI6eyJrZXlO + YW1lIjoicmVzaWRlbnRpYWxWYXJpYWJsZVNwZWVkUG9vbFB1bXBBbmRNb3Rv + cjEwNzEiLCJkaXNwbGF5TmFtZSI6IlJlc2lkZW50aWFsIFZhcmlhYmxlLVNw + ZWVkIFBvb2wgUHVtcCBhbmQgTW90b3IiLCJkZXNjcmlwdGlvbiI6IlJlc2lk + ZW50aWFsIFZhcmlhYmxlLVNwZWVkIFBvb2wgUHVtcCBhbmQgTW90b3IuIFxy + XG5cclxuUmVxdWlyZW1lbnRzOiBJbnN0YWxsIG9yIHJlcGxhY2UgZXhpc3Rp + bmcgaW4tZ3JvdW5kIHBvb2wgcHVtcCBhbmQgbW90b3Igd2l0aCBhIHZhcmlh + YmxlLXNwZWVkIHB1bXAgYW5kIG1vdG9yLiBFbnN1cmUgeW91ciBpbnZvaWNl + IGNsZWFybHkgc2hvd3MgdGhlIHB1cmNoYXNlIGRhdGUgYW5kIHRoZSBtb2Rl + bCBudW1iZXIgb2YgdGhlIHBvb2wgcHVtcCBhbmQgbW90b3IgYW5kIGhlIGF1 + dG9tYXRpYyBjb250cm9sbGVyIChpZiByZXF1aXJlZCkuXHJcblxyXG5FeGNs + dXNpb25zOiBNYW51YWwgY29udHJvbCBzeXN0ZW1zIGFyZSBub3QgZWxpZ2li + bGUuIFB1bXBzIGZvciBhYm92ZS1ncm91bmQgcG9vbHMsIHBvb2wgY2xlYW5l + cnMsIGJvb3N0ZXJzLCBzcGFzLCBhbmQgd2F0ZXIgZmVhdHVyZXMgYXJlIG5v + dCBlbGlnaWJsZS4gVGhlIHJlcGxhY2VtZW50IG9mIGEgbW90b3Igb25seSBk + b2VzIG5vdCBxdWFsaWZ5IGZvciByZWJhdGUuXHJcbiJ9LCJxdWFudGl0eUtl + eUNhcCI6bnVsbCwic3RhdGUiOiJDQSIsInBlcmNlbnRDb3N0Q2FwIjpudWxs + LCJwZXJjZW50Q29zdENhcEtleSI6eyJrZXlOYW1lIjpudWxsfSwicGF5bWVu + dENhcCI6bnVsbCwicGF5bWVudER1cmF0aW9uIjpudWxsLCJpbmNlbnRpdmVQ + YWlkVG8iOiJ0ZW5hbnRPck93bmVyIiwicHJvamVjdFR5cGVFeGNsdXNpdmUi + Om51bGwsImFwcGxpY2FiaWxpdGllcyI6W3siYXBwbGljYWJpbGl0eUtleSI6 + ImVuZFVzZVJlc2lkZW50aWFsIiwiZGlzcGxheU5hbWUiOiJFbmQgVXNlIFJl + c2lkZW50aWFsIiwiZGVzY3JpcHRpb24iOiJFbmQgVXNlIFRlY2hub2xvZ3kg + Zm9yIFJlc2lkZW50aWFsIiwicmVxdWlyZWRWYWx1ZSI6InBvb2wiLCJvcGVy + YXRvciI6Ij0ifV0sInN1bW1hcnkiOm51bGwsInJlcXVpcmVtZW50cyI6Iklu + c3RhbGwgb3IgcmVwbGFjZSBleGlzdGluZyBpbi1ncm91bmQgcG9vbCBwdW1w + IGFuZCBtb3RvciB3aXRoIGEgdmFyaWFibGUtc3BlZWQgcHVtcCBhbmQgbW90 + b3IuIE1hbnVhbCBjb250cm9sIHN5c3RlbXMgYXJlIG5vdCBlbGlnaWJsZS4g + UHVtcHMgZm9yIGFib3ZlLWdyb3VuZCBwb29scywgcG9vbCBjbGVhbmVycywg + Ym9vc3RlcnMsIHNwYXMsIGFuZCB3YXRlciBmZWF0dXJlcyBhcmUgbm90IGVs + aWdpYmxlLiBUaGUgcmVwbGFjZW1lbnQgb2YgYSBtb3RvciBvbmx5IGRvZXMg + bm90IHF1YWxpZnkgZm9yIHJlYmF0ZS5FbnN1cmUgeW91ciBpbnZvaWNlIGNs + ZWFybHkgc2hvd3MgdGhlIHB1cmNoYXNlIGRhdGUgYW5kIHRoZSBtb2RlbCBu + dW1iZXIgb2YgdGhlIHBvb2wgcHVtcCBhbmQgbW90b3IgYW5kIHRoZSBhdXRv + bWF0aWMgY29udHJvbGxlciAoaWYgcmVxdWlyZWQpLiJ9XSwicGFnZVN0YXJ0 + IjowLCJwYWdlQ291bnQiOjI1fQ== + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:22 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/incentive_json/_incentives/should_allow_searches_by_incentive_type.yml b/spec/cassettes/Genability_Client/incentive_json/_incentives/should_allow_searches_by_incentive_type.yml new file mode 100644 index 0000000..802a832 --- /dev/null +++ b/spec/cassettes/Genability_Client/incentive_json/_incentives/should_allow_searches_by_incentive_type.yml @@ -0,0 +1,491 @@ +--- +http_interactions: +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/beta/incentives?incentiveType=rebate + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:20 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":3379,"type":"Incentive","results":[{"incentiveId":3156262,"masterIncentiveId":3156262,"eligibility":"COULD_BE_ELIGIBLE","requiredData":[{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"refrigeration","minValue":0.00,"maxValue":0.00,"operator":"="}],"tariffCode":"None","incentiveName":"Commercial + Refrigeration Rebates","lseId":734,"lseName":"Pacific Gas & Electric Co","serviceType":"ELECTRICITY","customerClass":"GENERAL","startDate":"2013-01-01","endDate":"2014-01-01","isExhausted":false,"projectType":"refrigeration","incentiveType":"rebate","rate":25.000000,"rateUnit":"COST_PER_UNIT","documents":null,"jurisdiction":"utility","quantityKey":{"keyName":"antiSweatHeaterControls","displayName":"Anti-Sweat + Heater Controls ","description":"Anti-Sweat Heater Controls. Requirements: + Display refrigerators must be equipped with humidity sensing controls that + reduce the amount of power supplied to the heaters. Must sense the relative + humidity in the air surrounding the display case and reduce or turn off the + anti-sweat heaters of the glass door (if applicable) and door frame during + periods of low humidity. Equivalent technologies that reduce or turn off anti-sweat + heaters depending on the level of condensation on the inner glass pane may + qualify. Rebate amount is based on the linear footage of the display case. + Installation address must have a commercial electric account with PG&E. Exclusions: + Please note that this rebate cannot be used in conjunction with the rebate + for New Refrigeration Display Case with Doors."},"quantityKeyCap":null,"state":"CA","percentCostCap":null,"percentCostCapKey":{"keyName":null},"paymentCap":null,"paymentDuration":null,"incentivePaidTo":"tenantOrOwner","projectTypeExclusive":null,"applicabilities":[{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"refrigeration","minValue":0.00,"maxValue":0.00,"operator":"="}],"summary":null,"requirements":"All + PG&E incentives apply towards the purchase of new or replacement energy-efficient + equipment. Used or rebuilt equipment is not eligible, and customers must include + proof that the appliances meet all the required energy efficiency specifications. + Please note that funding for these programs is limited and available on a + first-come, first-served basis until allocated funds are exhausted or the + program ends, whichever comes first. This program may be modified or terminated + without prior notice, and additional terms and conditions apply. Installation + address must have a commercial electric account withPG&E. For item level specifications + refer to catalog."},{"incentiveId":3156263,"masterIncentiveId":3156263,"eligibility":"COULD_BE_ELIGIBLE","requiredData":[{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"foodService","operator":"="}],"tariffCode":"None","incentiveName":"Commercial + Food Service Rebates","lseId":734,"lseName":"Pacific Gas & Electric Co","serviceType":"ELECTRICITY","customerClass":"GENERAL","startDate":"2013-01-01","endDate":null,"isExhausted":false,"projectType":"other","incentiveType":"rebate","rate":1000.000000,"rateUnit":"COST_PER_UNIT","documents":null,"jurisdiction":"utility","quantityKey":{"keyName":"commercialCombinationOvenSteamerElectric734","displayName":"Commercial + Combination Oven/Steamer Electric","description":"Commercial Combination Oven/Steamer + Electric. Requirements: Must have a cooking energy efficiency of 50 percent + or greater in steam mode and 70 percent cooking energy efficiency or greater + in convection mode, utilizing American Society for Testing and Materials (ASTM) + F2861 Must meet the idle energy rate requirements in the Electric Combination + Oven/Steamer Table catalog below, utilizing ASTM F2861. Installation address + must have a commercial electric account with PG&E."},"quantityKeyCap":null,"state":"CA","percentCostCap":null,"percentCostCapKey":{"keyName":null},"paymentCap":null,"paymentDuration":null,"incentivePaidTo":"tenantOrOwner","projectTypeExclusive":null,"applicabilities":[{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"foodService","operator":"="}],"summary":null,"requirements":"All + PG&E incentives apply towards the purchase of new or replacement energy-efficient + equipment. Used or rebuilt equipment is not eligible, and customers must include + proof that the appliances meet all the required energy efficiency specifications. + Please note that funding for these programs is limited and available on a + first-come, first-served basis until allocated funds are exhausted or the + program ends, whichever comes first. This program may be modified or terminated + without prior notice, and additional terms and conditions apply. Installation + address must have a commercial electric account withPG&E. For item level specifications + refer to catalog."},{"incentiveId":3156266,"masterIncentiveId":3156266,"eligibility":"COULD_BE_ELIGIBLE","requiredData":[{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"airCool","operator":"="}],"tariffCode":"None","incentiveName":"Commercial + HVAC Rebates","lseId":734,"lseName":"Pacific Gas & Electric Co","serviceType":"ELECTRICITY","customerClass":"GENERAL","startDate":"2013-01-01","endDate":"2014-01-01","isExhausted":false,"projectType":"hvac","incentiveType":"rebate","rate":50.000000,"rateUnit":"COST_PER_UNIT","documents":null,"jurisdiction":"utility","quantityKey":{"keyName":"replacementMultipleSpeedBrushlessPermanentMagnetBlowerMotor734","displayName":"Replacement + Multiple-Speed Brushless Permanent Magnet Blower Motor","description":"Replacement + Multiple-Speed Brushless Permanent Magnet Blower Motor. Requirements: Must + replace the existing permanent split capacitor motor for supply air blower + with a new super-efficient direct replace ment brushless permanent magnet + blower motor with built-incontroller. Motors must be 10 horse power or less + to be eligible for this rebate. Motor must be capable of plugging in to existing + controlboard. Only available to customers residing in climate zones 11,12 + and13. Goto\r\nwww.pge.com/climatezones to find your climate zone. Installation + address must have a commercial electric account with PG&E. Exclusions: A Variable + Frequency Drive (VFD) is not eligible for this rebate."},"quantityKeyCap":null,"state":"CA","percentCostCap":null,"percentCostCapKey":{"keyName":null},"paymentCap":null,"paymentDuration":null,"incentivePaidTo":"tenantOrOwner","projectTypeExclusive":null,"applicabilities":[{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"airCool","operator":"="}],"summary":null,"requirements":"All + PG&E incentives apply towards the purchase of new or replacement energy-efficient + equipment. Used or rebuilt equipment is not eligible, and customers must include + proof that the appliances meet all the required energy efficiency specifications. + Please note that funding for these programs is limited and available on a + first-come, first-served basis until allocated funds are exhausted or the + program ends, whichever comes first. This program may be modified or terminated + without prior notice, and additional terms and conditions apply. Installation + address must have a commercial electric account withPG&E. For item level + specifications refer to catalog."},{"incentiveId":3156269,"masterIncentiveId":3156269,"eligibility":"COULD_BE_ELIGIBLE","requiredData":[{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"lighting","operator":"="}],"tariffCode":"None","incentiveName":"Commercial + Lighting Rebates","lseId":734,"lseName":"Pacific Gas & Electric Co","serviceType":"ELECTRICITY","customerClass":"GENERAL","startDate":"2013-01-01","endDate":"2014-01-01","isExhausted":false,"projectType":"lighting","incentiveType":"rebate","rate":17.500000,"rateUnit":"COST_PER_UNIT","documents":null,"jurisdiction":"utility","quantityKey":{"keyName":"t8Fixtures2x22LampsFixtureRLOBallastFactor","displayName":"T8 + 2''x2'' - 2 Lamps High Performance Fixture with RLO Ballast","description":"T8 + 2''x2'' - 2 Lamps High Performance Fixture with RLO Ballast. Requirements: + New fixtures or new retrofit kits only, and onlycertain combinations of lamp + number and ballast factor are eligible. Fixture efficiency must exceed 80 + percent. T8 measures are based on the savings provided by utilizinga one-lamp + or two-lamp fixture instead of the industry-standard three-lamp fixture. Additional + savings are realizedif a RLO ballast is used instead of the standard, base-caseNLO + ballast. Please note that savings are reduced if a HLOor VHLO ballast is used. + T5 measures are based on the savings provided by utilizinga two-lamp T5 fixture + instead of the industry-standardthree-lamp T8 fixture. Additional savings + are realized ifa NLO ballast is used instead of a HLO ballast. VHLO T5ballasts + are excluded due to insufficient savings relativeto the base case. These rebates + cannot be combined with rebates fromother catalog measures or other programs + claiminglighting savings. Please refer to catalog for complete requirements."},"quantityKeyCap":null,"state":"CA","percentCostCap":null,"percentCostCapKey":{"keyName":null},"paymentCap":null,"paymentDuration":null,"incentivePaidTo":"tenantOrOwner","projectTypeExclusive":null,"applicabilities":[{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"lighting","operator":"="}],"summary":null,"requirements":"All + PG&E incentives apply towards the purchase of new or replacement energy-efficient + equipment. Used or rebuilt equipment is not eligible, and customers must include + proof that the appliances meet all the required energy efficiency specifications. + Please note that funding for these programs is limited and available on a + first-come, first-served basis until allocated funds are exhausted or the + program ends, whichever comes first. This program may be modified or terminated + without prior notice, and additional terms and conditions apply. Installation + address must have a commercial electric account withPG&E. For item level specifications + refer to catalog."},{"incentiveId":3156271,"masterIncentiveId":3156271,"eligibility":"COULD_BE_ELIGIBLE","requiredData":[{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"waterHeat","operator":"="}],"tariffCode":"None","incentiveName":"Commercial + Water Heating Rebate","lseId":734,"lseName":"Pacific Gas & Electric Co","serviceType":"ELECTRICITY","customerClass":"GENERAL","startDate":"2013-01-01","endDate":"2014-01-01","isExhausted":false,"projectType":"waterHeat","incentiveType":"rebate","rate":500.000000,"rateUnit":"COST_PER_UNIT","documents":null,"jurisdiction":"utility","quantityKey":{"keyName":"electricHeatPumpWaterHeater734","displayName":"Electric + Heat Pump Water Heater","description":"ENERGY STAR Electric Heat Pump\r\nWater + Heater EF of 2.0 or greater\r\n\r\nRequirements: Electric storage water heater + must have an Energy Factor of 2.0 or greater. Capacity must be 40 gallons + or more. Must be new and meet or exceed all applicable local, state and federal + standards. Only residential-style electric storage water heaters qualify for + this rebate. Goto www.energystar.gov for a list of ENERGYSTAR -qualifying + water heaters that meet or exceed the EF requirements. Check with your contractor + for installation requirements for your installation address. Installation + address must have a commercial electric account with PG&E. Must be a commercial + end-use customer. Exclusions: Instantaneous or tank less water heaters do + not qualify for this rebate\r\n"},"quantityKeyCap":null,"state":"CA","percentCostCap":null,"percentCostCapKey":{"keyName":null},"paymentCap":null,"paymentDuration":null,"incentivePaidTo":"tenantOrOwner","projectTypeExclusive":null,"applicabilities":[{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"waterHeat","operator":"="}],"summary":null,"requirements":"Requirements: + Electric storage water heater must have an Energy Factor of 2.0 or greater. + Capacity must be 40 gallons or more. Must be new and meet or exceed all applicable + local, state and federal standards. Only residential-style electric storage + water heaters qualify for this rebate. Goto www.energystar.gov for a list + of ENERGYSTAR -qualifying water heaters that meet or exceed the EF requirements. + Check with your contractor for installation requirements for your installation + address. Installation address must have a commercial electric account with + PG&E. Must be a commercial end-use customer. Exclusions: Instantaneous or + tank less water heaters do not qualify for this rebate"},{"incentiveId":3156273,"masterIncentiveId":3156273,"eligibility":"COULD_BE_ELIGIBLE","requiredData":[{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"electronics","operator":"="}],"tariffCode":"None","incentiveName":"Commercial + Business Computing Rebates","lseId":734,"lseName":"Pacific Gas & Electric + Co","serviceType":"ELECTRICITY","customerClass":"GENERAL","startDate":"2013-01-01","endDate":"2014-01-01","isExhausted":false,"projectType":"majorAppliances","incentiveType":"rebate","rate":15.000000,"rateUnit":"COST_PER_UNIT","documents":null,"jurisdiction":"utility","quantityKey":{"keyName":"plugLoadOccupancySensorsF734","displayName":"Plug + Load Occupancy Sensors","description":"Plug Load Occupancy Sensors Requirements: + Only passive infrared and/or ultrasonic detectors are eligible. Plug load + sensors must control electricity using equipment in offices or cubicles, including + sharedcopiers and/or printers. Installation address must have a commercial + electric account with PG&E."},"quantityKeyCap":null,"state":"CA","percentCostCap":null,"percentCostCapKey":{"keyName":null},"paymentCap":null,"paymentDuration":null,"incentivePaidTo":"tenantOrOwner","projectTypeExclusive":null,"applicabilities":[{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"electronics","operator":"="}],"summary":null,"requirements":"All + PG&E incentives apply towards the purchase of new or replacement energy-efficient + equipment. Used or rebuilt equipment is not eligible, and customers must include + proof that the appliances meet all the required energy efficiency specifications. + Please note that funding for these programs is limited and available on a + first-come, first-served basis until allocated funds are exhausted or the + program ends, whichever comes first. This program may be modified or terminated + without prior notice, and additional terms and conditions apply. Installation + address must have a commercial electric account withPG&E.\n\nFor item level + specifications refer to catalog."},{"incentiveId":3156274,"masterIncentiveId":3156274,"eligibility":"COULD_BE_ELIGIBLE","requiredData":[{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"appliances","operator":"="}],"tariffCode":"None","incentiveName":"Commercial + Appliances Rebates","lseId":734,"lseName":"Pacific Gas & Electric Co","serviceType":"ELECTRICITY","customerClass":"GENERAL","startDate":"2013-01-01","endDate":"2014-01-01","isExhausted":false,"projectType":"majorAppliances","incentiveType":"rebate","rate":50.000000,"rateUnit":"COST_PER_UNIT","documents":null,"jurisdiction":"utility","quantityKey":{"keyName":"highEfficiencyClothesWasher734","displayName":"High-Efficiency + Clothes Washer","description":"High-Efficiency Clothes Washer CEE Tier 3 or + higher, MEF of 2.4 or greater, WF of 4.0 or less Requirements: Clothes washer + must be a Consortium for Energy Efficiency (CEE) Tier3 model or higher. Goto + www.cee1.org/com/cwsh/cwshspec.pdf\r\nfor a list of qualifying commercial + washers. The washer must have a Modified Energy Factor (MEF) of 2.4 or greater + and\r\na Water Factor of 4.0 or less. Installation address must have commercial + electric and or natural gas accounts with PG&E. Exclusions: Not all ENERGYSTAR + clotheswashers qualify for this rebate. CEE Tier1 and 2 models do not qualify."},"quantityKeyCap":null,"state":"CA","percentCostCap":null,"percentCostCapKey":{"keyName":null},"paymentCap":null,"paymentDuration":null,"incentivePaidTo":"tenantOrOwner","projectTypeExclusive":null,"applicabilities":[{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"appliances","operator":"="}],"summary":null,"requirements":"All + PG&E incentives apply towards the purchase of new or replacement energy-efficient + equipment. Used or rebuilt equipment is not eligible, and customers must include + proof that the appliances meet all the required energy efficiency specifications. + Please note that funding for these programs is limited and available on a + first-come, first-served basis until allocated funds are exhausted or the + program ends, whichever comes first. This program may be modified or terminated + without prior notice, and additional terms and conditions apply. Installation + address must have a commercial electric account withPG&E. For item level specifications + refer to catalog."},{"incentiveId":3156308,"masterIncentiveId":3156308,"eligibility":"COULD_BE_ELIGIBLE","requiredData":[{"applicabilityKey":"endUseResidential","displayName":"End + Use Residential","description":"End Use Technology for Residential","requiredValue":"airHeatCool","operator":"="}],"tariffCode":"None","incentiveName":"Residential + HVAC Rebates","lseId":734,"lseName":"Pacific Gas & Electric Co","serviceType":"ELECTRICITY","customerClass":"RESIDENTIAL","startDate":"2013-01-01","endDate":"2014-01-01","isExhausted":false,"projectType":"hvac","incentiveType":"rebate","rate":100.000000,"rateUnit":"COST_PER_UNIT","documents":null,"jurisdiction":"utility","quantityKey":{"keyName":"wholeHouseFan734","displayName":"Whole + House Fan","description":"Whole House Fan. Requirements: May be a new installation + where none previously existed. One rebate per installation address, regardless + of thenumber of units installed. The fan must move 1,000 cubic feet of air + per minute(CFM) or more and be permanently installed (connectedto the framing). + Consult manufacturer?s specications to determinethe proper fan size prior + to purchase. Louvers between the living space and the attic shouldcreate an + airtight seal when the fan is off. An insulated louver cover is also recommended + foruse in the winter. Go to www.pge.com/rebates for a list of qualifyingproducts. + Installation address must have an electricaccount with PG&E"},"quantityKeyCap":null,"state":"CA","percentCostCap":null,"percentCostCapKey":{"keyName":null},"paymentCap":null,"paymentDuration":null,"incentivePaidTo":"tenantOrOwner","projectTypeExclusive":null,"applicabilities":[{"applicabilityKey":"endUseResidential","displayName":"End + Use Residential","description":"End Use Technology for Residential","requiredValue":"airHeatCool","operator":"="}],"summary":null,"requirements":"All + PG&E incentives apply towards the purchase of new or replacement energy-efficient + equipment. Used or rebuilt equipment is not eligible, and customers must include + proof that the appliances meet all the required energy efficiency specifications. + Please note that funding for these programs is limited and available on a + first-come, first-served basis until allocated funds are exhausted or the + program ends, whichever comes first. This program may be modified or terminated + without prior notice, and additional terms and conditions apply. Installation + address must have a commercial electric account withPG&E. For item level specifications + refer to catalog."},{"incentiveId":3156309,"masterIncentiveId":3156309,"eligibility":"COULD_BE_ELIGIBLE","requiredData":[{"applicabilityKey":"endUseResidential","displayName":"End + Use Residential","description":"End Use Technology for Residential","requiredValue":"buildingShell","operator":"="}],"tariffCode":"None","incentiveName":"Residential + General Improvements Rebates","lseId":734,"lseName":"Pacific Gas & Electric + Co","serviceType":"ELECTRICITY","customerClass":"RESIDENTIAL","startDate":"2013-01-01","endDate":"2014-01-01","isExhausted":false,"projectType":"buildingShell","incentiveType":"rebate","rate":0.200000,"rateUnit":"COST_PER_UNIT","documents":null,"jurisdiction":"utility","quantityKey":{"keyName":"coolRoofLowSlope734","displayName":"Cool + Roof Low Slope","description":"Cool Roof Low Slope available in Climate Zone + (CZ) 2, 4, 11 & 12 only. Customer must have electricity distributed by PG&E + to the installation address. Only PG&E residential electric customers who + own an existing single family or mobile home are eligible. Must reside in + qualifying climate zone 2, 4, 11, 12 or 13. Only steep slope roofs qualify + in climate zone 13. To find your climate zone go to: www.pge.com/climatezones. + Customer must have a central air conditioning (AC) system or be installing + a new AC system concurrently. Customer must purchase and have installed roofing + materials that meet or exceed the Aged Solar Reflectance and Aged Thermal + Emittance levels specified in the Rebate Level and Product Specifications + Table along with being rated by the Cool Roof Rating Council (CRRC). The CRRC + maintains a directory and searchable database of rated products at www.coolroofs.org. + Exclusions: Homes with portable or window air conditioning systems and evaporative + coolers (e.g. swamp coolers) do not qualify."},"quantityKeyCap":null,"state":"CA","percentCostCap":null,"percentCostCapKey":{"keyName":null},"paymentCap":null,"paymentDuration":null,"incentivePaidTo":"tenantOrOwner","projectTypeExclusive":null,"applicabilities":[{"applicabilityKey":"endUseResidential","displayName":"End + Use Residential","description":"End Use Technology for Residential","requiredValue":"buildingShell","operator":"="}],"summary":null,"requirements":"Only + PG&E residential electric customers who own an existing single family or mobile + \nhome are eligible.\n-Must reside in qualifying climate zones (CZ) 2, 4, + 11, 12 or 13.\n-Only steep slope roofs qualify in climate zone 13. To find + your climate zone go to \nwww.pge.com/climatezones.\n-Customer must have a + central air conditioning (AC) system or be installing a new AC system concurrently.\n-Check + with your local city/county building department for any special requirements + \nrelated to your selected product.\n-Customer must purchase and have installed + roofing materials that meet or exceed the Aged Solar Reflectance and Aged + Thermal Emittance levels specified in the Rebate Level and Product Specifications + Table and that are rated by the Cool Roof Rating Council (CRRC).\n-The CRRC + maintains a directory and searchable database of rated products at www.coolroofs.org.\n-Installation + address must have an electric account with PG&E.\n"},{"incentiveId":3156310,"masterIncentiveId":3156310,"eligibility":"COULD_BE_ELIGIBLE","requiredData":[{"applicabilityKey":"endUseResidential","displayName":"End + Use Residential","description":"End Use Technology for Residential","requiredValue":"majorAppliances","operator":"="}],"tariffCode":"None","incentiveName":"Residential + Appliances Rebates","lseId":734,"lseName":"Pacific Gas & Electric Co","serviceType":"ELECTRICITY","customerClass":"RESIDENTIAL","startDate":"2013-01-01","endDate":"2014-01-01","isExhausted":false,"projectType":"majorAppliances","incentiveType":"rebate","rate":50.000000,"rateUnit":"COST_PER_UNIT","documents":null,"jurisdiction":"utility","quantityKey":{"keyName":"highEfficiencyClothesWasher734","displayName":"High-Efficiency + Clothes Washer","description":"High-Efficiency Clothes Washer CEE Tier 3 or + higher, MEF of 2.4 or greater, WF of 4.0 or less Requirements: Clothes washer + must be a Consortium for Energy Efficiency (CEE) Tier3 model or higher. Goto + www.cee1.org/com/cwsh/cwshspec.pdf\r\nfor a list of qualifying commercial + washers. The washer must have a Modified Energy Factor (MEF) of 2.4 or greater + and\r\na Water Factor of 4.0 or less. Installation address must have commercial + electric and or natural gas accounts with PG&E. Exclusions: Not all ENERGYSTAR + clotheswashers qualify for this rebate. CEE Tier1 and 2 models do not qualify."},"quantityKeyCap":null,"state":"CA","percentCostCap":null,"percentCostCapKey":{"keyName":null},"paymentCap":null,"paymentDuration":null,"incentivePaidTo":"tenantOrOwner","projectTypeExclusive":null,"applicabilities":[{"applicabilityKey":"endUseResidential","displayName":"End + Use Residential","description":"End Use Technology for Residential","requiredValue":"majorAppliances","operator":"="}],"summary":null,"requirements":"All + PG&E incentives apply towards the purchase of new or replacement energy-efficient + equipment. Used or rebuilt equipment is not eligible, and customers must include + proof that the appliances meet all the required energy efficiency specifications. + Please note that funding for these programs is limited and available on a + first-come, first-served basis until allocated funds are exhausted or the + program ends, whichever comes first. This program may be modified or terminated + without prior notice, and additional terms and conditions apply. Installation + address must have a commercial electric account withPG&E. For item level specifications + refer to catalog."},{"incentiveId":3156311,"masterIncentiveId":3156311,"eligibility":"COULD_BE_ELIGIBLE","requiredData":[{"applicabilityKey":"endUseResidential","displayName":"End + Use Residential","description":"End Use Technology for Residential","requiredValue":"pool","operator":"="}],"tariffCode":"None","incentiveName":"Residential Pool + Filtration Pumps Rebates","lseId":734,"lseName":"Pacific Gas & Electric Co","serviceType":"ELECTRICITY","customerClass":"RESIDENTIAL","startDate":"2013-01-01","endDate":"2014-01-01","isExhausted":false,"projectType":"pool","incentiveType":"rebate","rate":100.000000,"rateUnit":"COST_PER_UNIT","documents":null,"jurisdiction":"utility","quantityKey":{"keyName":"variableSpeedPoolPumpForFiltrationOnly734","displayName":"Variable-Speed + Pool Pump for Filtration Only","description":"Variable-Speed Pool Pump for + Filtration Only. Requirements: All pumps must be new, and must be purchased + and installed between January 1, 2013, and December 31, 2014. Rebates are + for qualifying pumps, three horsepower or less, installed on new or existing + residential in-ground swimming pools for primary filtration only. New pump + must be operated with a qualifying controller. Customer may either use an + existing qualifying controller or purchase and install a separate qualifying + controller unit if the new variable speed or variable-flow pump does not have + a built-in qualifying controller. Qualifying controller is a programmable + controller that meets CA Title 20 regulation requirements. Must be able to + operate the pool pump on at least two speeds and switch speeds automatically. + Must default to the lowest speed after one normal cycle (24 hours) if temporary + high speed override capability exists. Exclusions: Above-ground pool, pond, + pool cleaner/booster, spa and water feature pumps do not qualify."},"quantityKeyCap":null,"state":"CA","percentCostCap":null,"percentCostCapKey":{"keyName":null},"paymentCap":null,"paymentDuration":null,"incentivePaidTo":"tenantOrOwner","projectTypeExclusive":null,"applicabilities":[{"applicabilityKey":"endUseResidential","displayName":"End + Use Residential","description":"End Use Technology for Residential","requiredValue":"pool","operator":"="}],"summary":null,"requirements":"Follow + all manufacturer installation requirements.\n-All pumps must be new, and must + be purchased and installed between January 1, 2013, and December 31, 2014.\n-Equipment + and materials must meet or exceed all applicable local, state and federal + standards.\n-Rebates are for qualifying pumps, three horsepower or less, installed + on new or existing residential in-ground swimming pools for primary filtration + only. Visit www.pge.com/pools for a list of qualifying pumps.\n-Above-ground + pool, pond, pool cleaner/booster, spa and water feature pumps do not qualify.\n-New + pump must be operated with a qualifying controller.\n Customer may either + use an existing qualifying controller or purchase and install a separate qualifying + controller unit if the new variable speed or variable-flow pump does not have + a built-in qualifying controller.\nQualifying controller is a programmable + controller that meets CA Title 20 regulation requirements. Must be able to + operate the pool pump on at least two speeds and switch speeds automatically"},{"incentiveId":3156328,"masterIncentiveId":3156328,"eligibility":"COULD_BE_ELIGIBLE","requiredData":[{"applicabilityKey":"endUseResidential","displayName":"End + Use Residential","description":"End Use Technology for Residential","requiredValue":"waterHeat","operator":"="}],"tariffCode":"None","incentiveName":"Residential + Water Heater Rebate","lseId":1228,"lseName":"Southern California Edison Co","serviceType":"ELECTRICITY","customerClass":"RESIDENTIAL","startDate":"2013-01-01","endDate":"2014-01-01","isExhausted":false,"projectType":"waterHeat","incentiveType":"rebate","rate":200.000000,"rateUnit":"COST_PER_UNIT","documents":null,"jurisdiction":"utility","quantityKey":{"keyName":"hybridElectricHeatPumpWaterHeater","displayName":"Hybrid + Electric Heat Pump Water Heater","description":"Hybrid Electric Heat Pump + Water Heater\r\n\r\nRequirements: Hybrid electric heat pump water heater must + have an energy factor of 2.0 or greater and be 40 gallons or greater. Install + the qualifying hybrid electric heat pump water heater by February 28, 2014. + Rebate is limited to hybrid electric heat pump water heaters that are 40 gallons + or greater. The new qualifying product must replace an existing electric water + heater. Proof of purchase must be provided with your application. One water + heater rebate per installation address. \r\n\r\nExclusion: Tankless water + heaters do not qualify. Replacing a gas water heater with a hybrid electric + heat pump water heater does not qualify. \r\n"},"quantityKeyCap":null,"state":"CA","percentCostCap":null,"percentCostCapKey":{"keyName":null},"paymentCap":null,"paymentDuration":null,"incentivePaidTo":"tenantOrOwner","projectTypeExclusive":null,"applicabilities":[{"applicabilityKey":"endUseResidential","displayName":"End + Use Residential","description":"End Use Technology for Residential","requiredValue":"waterHeat","operator":"="}],"summary":null,"requirements":"Purchase + a new qualifying electric storage water heater between January 2013 and December + 31, 2013. Tankless water heaters do not qualify. Replacing a gas water heater + with an electric unit does not qualify. Make sure the product appears on the + list of qualifying products that can be found at SCE website. Install the + qualifying electric storage water heater by February 28, 2014. The new qualifying + product must replace an existing electric water heater. Proof of purchase + must be provided with your application. Limit: One of any type of HEER water + heater rebate per Installation Address. For item level specifications refer + to catalog."},{"incentiveId":3156329,"masterIncentiveId":3156329,"eligibility":"COULD_BE_ELIGIBLE","requiredData":[{"applicabilityKey":"endUseResidential","displayName":"End + Use Residential","description":"End Use Technology for Residential","requiredValue":"majorAppliances","operator":"="}],"tariffCode":"None","incentiveName":"Residential + Clothes Washer Rebate","lseId":1228,"lseName":"Southern California Edison + Co","serviceType":"ELECTRICITY","customerClass":"RESIDENTIAL","startDate":"2013-01-01","endDate":"2014-01-01","isExhausted":false,"projectType":"majorAppliances","incentiveType":"rebate","rate":50.000000,"rateUnit":"COST_PER_UNIT","documents":null,"jurisdiction":"utility","quantityKey":{"keyName":"energyStarQualifiedClothesWasher","displayName":"Energy + Star Qualified Clothes Washer","description":"Energy Star Qualified Clothes + Washer\r\n\r\nRequirements: Install the qualifying clothes washer by February + 28, 2014. The ENERGY STAR qualifed clothes washer must have a modifed energy + factor (MEF) of 2.0 or greater and a water factor (wf) of 6.0 or less. Rebate + is limited to SCE residential customers who are currently using an electric + water heater. Proof of purchase must be provided with your application. Limit + one ENERGY STAR qualified clothes washer rebate per Installation Address\r\n\r\n"},"quantityKeyCap":null,"state":"CA","percentCostCap":null,"percentCostCapKey":{"keyName":null},"paymentCap":null,"paymentDuration":null,"incentivePaidTo":"tenantOrOwner","projectTypeExclusive":null,"applicabilities":[{"applicabilityKey":"endUseResidential","displayName":"End + Use Residential","description":"End Use Technology for Residential","requiredValue":"majorAppliances","operator":"="}],"summary":null,"requirements":"-Purchase + a new ENERGY STAR qualified clothes washer between January 1, 2013 and December + 31, 2013. - Make sure the product appears on the list of qualifying products + that can be found at www.sce.com/appliances - Install the qualifying clothes + washer by February 28, 2014. - The ENERGY STAR qualified clothes washer must + have a modified energy factor (MEF) of 2.0 or greater AND a water factor (wf) + of 6.0 or less. - Rebate is limited to SCE residential customers who are currently + using an electric water heater. - Proof of purchase must be provided with + your application. - Limit: One ENERGY STAR qualified clothes washer rebate + per Installation Address."},{"incentiveId":3156330,"masterIncentiveId":3156330,"eligibility":"COULD_BE_ELIGIBLE","requiredData":[{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"irrigation","operator":"="}],"tariffCode":"None","incentiveName":"Agricultural + Rebates","lseId":1071,"lseName":"San Diego Gas & Electric Co","serviceType":"ELECTRICITY","customerClass":"GENERAL","startDate":"2013-01-01","endDate":null,"isExhausted":false,"projectType":"irrigation","incentiveType":"rebate","rate":44.000000,"rateUnit":"COST_PER_UNIT","documents":null,"jurisdiction":"utility","quantityKey":{"keyName":"sprinklerToDripIrrigationPerAcre1071","displayName":"Sprinkler + to Drip Irrigation","description":"High Pressure Sprinkler to Drip Irrigation, + Per Acre \r\n\r\nRequirements: Must convert from a high-pressure, impact-type, + sprinkler irrigation system (50 psi operating pressure or more at the sprinkler + head) to a micro-irrigation system. Include an Assessor''s Parcel Map or other + documentation to verify acreage \r\n\r\nExclusions: Drip tape systems are + not eligible Not applicable to new plantings of vineyards or orchards unless + a vineyard or orchard was the previous crop on the field"},"quantityKeyCap":null,"state":"CA","percentCostCap":null,"percentCostCapKey":{"keyName":null},"paymentCap":null,"paymentDuration":null,"incentivePaidTo":"tenantOrOwner","projectTypeExclusive":null,"applicabilities":[{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"irrigation","operator":"="}],"summary":null,"requirements":"Customers + must have a SDG&E commercial electric account if applying for an electric + measure. Everything must be installed and operational before a rebate application + is submitted. All rebates apply toward the purchase of new or replacement + energy-efficient equipment, unless otherwise indicated. Used or rebuilt equipment + is not eligible. For item level specifications refer to catalog."},{"incentiveId":3156331,"masterIncentiveId":3156331,"eligibility":"COULD_BE_ELIGIBLE","requiredData":[{"applicabilityKey":"endUseResidential","displayName":"End + Use Residential","description":"End Use Technology for Residential","requiredValue":"majorAppliances","operator":"="}],"tariffCode":"None","incentiveName":"Residential + Appliance Incentives","lseId":819,"lseName":"PECO Energy Co","serviceType":"ELECTRICITY","customerClass":"RESIDENTIAL","startDate":"2011-11-01","endDate":"2013-05-31","isExhausted":false,"projectType":"majorAppliances","incentiveType":"rebate","rate":25.000000,"rateUnit":"COST_PER_UNIT","documents":null,"jurisdiction":"utility","quantityKey":{"keyName":"eNERGYSTARRefrigerator","displayName":"Energy + Star Refrigerator","description":"ENERGY STAR Refrigerator. \r\n\r\nRequirements: + Qualifying refrigerators meet standards based on ENERGY STAR criteria."},"quantityKeyCap":null,"state":"PA","percentCostCap":null,"percentCostCapKey":{"keyName":null},"paymentCap":null,"paymentDuration":null,"incentivePaidTo":"tenantOrOwner","projectTypeExclusive":null,"applicabilities":[{"applicabilityKey":"endUseResidential","displayName":"End + Use Residential","description":"End Use Technology for Residential","requiredValue":"majorAppliances","operator":"="}],"summary":null,"requirements":"Rebate + Eligibility: 1. This application is only for customers who reside in a master-metered, + multi-unit facility. 2. Applicant''s building must currently receive electric + service from PECO and replace existing electric equipment with qualified equipment + to be eligible for incentives. 3. New construction replacement is not eligible. + 4. Customers must purchase and install qualifying equipment between July 1, + 2009, and May 31, 2012. 5. Equipment purchases and installations prior to + July 1, 2009, do not qualify for an incentive. 6. Additional equipment qualification + information can be found at www.peco.com/SmartIdeas, or call 1-888-5-PECO-SAVE + (1-888-573-2672)."},{"incentiveId":3156332,"masterIncentiveId":3156332,"eligibility":"COULD_BE_ELIGIBLE","requiredData":[{"applicabilityKey":"endUseResidential","displayName":"End + Use Residential","description":"End Use Technology for Residential","requiredValue":"airHeatCool","operator":"="}],"tariffCode":"None","incentiveName":"Water + Heating Rebates","lseId":819,"lseName":"PECO Energy Co","serviceType":"ELECTRICITY","customerClass":"RESIDENTIAL","startDate":"2011-11-01","endDate":"2013-05-31","isExhausted":false,"projectType":"waterHeat","incentiveType":"rebate","rate":25.000000,"rateUnit":"COST_PER_UNIT","documents":null,"jurisdiction":"utility","quantityKey":{"keyName":"electricWaterHeaterPoint93EnergyFactorOrHigher","displayName":"Electric + Water Heater - 0.93 Energy Factor or Higher","description":"Electric Water + Heater - 0.93 Energy Factor or Higher\r\n"},"quantityKeyCap":null,"state":"PA","percentCostCap":null,"percentCostCapKey":{"keyName":null},"paymentCap":null,"paymentDuration":null,"incentivePaidTo":"tenantOrOwner","projectTypeExclusive":null,"applicabilities":[{"applicabilityKey":"endUseResidential","displayName":"End + Use Residential","description":"End Use Technology for Residential","requiredValue":"airHeatCool","operator":"="}],"summary":null,"requirements":"Rebate + Eligibility: 1. This application is only for customers who reside in a master-metered, + multi-unit facility. 2. Applicant''s building must currently receive electric + service from PECO and replace existing electric equipment with qualified equipment + to be eligible for incentives. 3. New construction replacement is not eligible. + 4. Customers must purchase and install qualifying equipment between July 1, + 2009, and May 31, 2012. 5. Equipment purchases and installations prior to + July 1, 2009, do not qualify for an incentive. 6. Additional equipment qualification + information can be found at www.peco.com/SmartIdeas, or call 1-888-5-PECO-SAVE + (1-888-573-2672)."},{"incentiveId":3156333,"masterIncentiveId":3156333,"eligibility":"COULD_BE_ELIGIBLE","requiredData":[{"applicabilityKey":"endUseResidential","displayName":"End + Use Residential","description":"End Use Technology for Residential","requiredValue":"airHeatCool","operator":"="}],"tariffCode":"None","incentiveName":"Residential + Central Heating & Cooling Rebates","lseId":819,"lseName":"PECO Energy Co","serviceType":"ELECTRICITY","customerClass":"RESIDENTIAL","startDate":"2011-11-01","endDate":"2013-05-31","isExhausted":false,"projectType":"hvac","incentiveType":"rebate","rate":300.000000,"rateUnit":"COST_PER_UNIT","documents":null,"jurisdiction":"utility","quantityKey":{"keyName":"eNERGYSTARCentralAC16SEERorHigher","displayName":"ENERGY + STAR Central AC - 16 SEER or Higher","description":"ENERGY STAR Central AC + - 16 SEER or Higher\r\n"},"quantityKeyCap":null,"state":"PA","percentCostCap":null,"percentCostCapKey":{"keyName":null},"paymentCap":null,"paymentDuration":null,"incentivePaidTo":"tenantOrOwner","projectTypeExclusive":null,"applicabilities":[{"applicabilityKey":"endUseResidential","displayName":"End + Use Residential","description":"End Use Technology for Residential","requiredValue":"airHeatCool","operator":"="}],"summary":null,"requirements":"To + qualify for an incentive, equipment must meet or exceed the requirements outlined + on this form. Please refer the incentive document for individual item specifications."},{"incentiveId":3156334,"masterIncentiveId":3156334,"eligibility":"COULD_BE_ELIGIBLE","requiredData":[{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"lighting","operator":"="}],"tariffCode":"None","incentiveName":"Lighting + Incentives","lseId":819,"lseName":"PECO Energy Co","serviceType":"ELECTRICITY","customerClass":"GENERAL","startDate":"2012-06-01","endDate":"2013-06-01","isExhausted":false,"projectType":"lighting","incentiveType":"rebate","rate":1.500000,"rateUnit":"COST_PER_UNIT","documents":null,"jurisdiction":"utility","quantityKey":{"keyName":"cFLScrewIn30WorLess","displayName":"CFL + - Screw-in (30W or Less)","description":"Interior Compact Fluorescent Lamps, + Screw-In (Replacing Incandescent): CFL ? Screw-in (30W or Less. Requirements: + Screw-in CFLs must replace incandescent existing lamps, and be ENERGY STAR + rated lamps or meet ENERGY STAR criteria."},"quantityKeyCap":null,"state":"PA","percentCostCap":null,"percentCostCapKey":{"keyName":null},"paymentCap":null,"paymentDuration":null,"incentivePaidTo":"tenantOrOwner","projectTypeExclusive":null,"applicabilities":[{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"lighting","operator":"="}],"summary":null,"requirements":"To + qualify for an incentive, equipment must meet or exceed the requirements outlined + on this form. Please refer the incentive document for individual item specifications."},{"incentiveId":3156335,"masterIncentiveId":3156335,"eligibility":"COULD_BE_ELIGIBLE","requiredData":[{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"motor","operator":"="}],"tariffCode":"None","incentiveName":"Motors + and Drives Incentives","lseId":819,"lseName":"PECO Energy Co","serviceType":"ELECTRICITY","customerClass":"GENERAL","startDate":"2012-06-01","endDate":"2013-05-31","isExhausted":false,"projectType":"motor","incentiveType":"rebate","rate":8.000000,"rateUnit":"COST_PER_UNIT","documents":null,"jurisdiction":"utility","quantityKey":{"keyName":"1HPMotor","displayName":"1HP + Motor","description":"Premium Efficiency Motors. Requirements: Incentives + are offered for three-phase AC induction motors, from 1 to 250 HP, of open + drip-proof (open) and totally enclosed fan-cooled (closed) classifications. Incentives + are based on the motor?s nominal full load efficiencies, tested in accordance + with IEEE (Institute of Electrical and Electronics Engineers) Standard 112, + method B, that meet or exceed the NEMA premium efficiency standards on the + Motor Incentives Worksheet. The application must include the manufacturer''s + performance data sheet or nameplate image that shows motor type, motor horsepower, + model number, and efficiency rating. Customers should consider matching water + or air flows (GPM, CFM) of the existing pump or fan when installing energy-efficient + motors that inherently have higher speeds (less slip), which may increase + energy savings. Incentive is per motor. Exclusions: Rewound motors do not + qualify."},"quantityKeyCap":null,"state":"PA","percentCostCap":null,"percentCostCapKey":{"keyName":null},"paymentCap":null,"paymentDuration":null,"incentivePaidTo":"tenantOrOwner","projectTypeExclusive":null,"applicabilities":[{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"motor","operator":"="}],"summary":null,"requirements":"To + qualify for an incentive, equipment must meet or exceed the requirements outlined + on this form. Please refer the incentive document for individual item specifications."},{"incentiveId":3156336,"masterIncentiveId":3156336,"eligibility":"COULD_BE_ELIGIBLE","requiredData":[{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"airHeat","operator":"="}],"tariffCode":"None","incentiveName":"HVAC + Incentives","lseId":819,"lseName":"PECO Energy Co","serviceType":"ELECTRICITY","customerClass":"GENERAL","startDate":"2012-06-01","endDate":"2013-06-01","isExhausted":false,"projectType":"hvac","incentiveType":"rebate","rate":35.000000,"rateUnit":"COST_PER_UNIT","documents":null,"jurisdiction":"utility","quantityKey":{"keyName":"airSourceAirConditionersLessThan5tons","displayName":"Air-Source + Air Conditioners < 5.41 tons","description":"Air-Source Air Conditioners. + Requirements: New unitary air conditioning units that meet or exceed the + qualifying cooling efficiency shown in the HVAC Incentives Worksheet are eligible + for an incentive. They can be either split systems or single package units. + The efficiency of split systems is based on an ARI reference number. All packaged + and split system cooling equipment must meet Air Conditioning and Refrigeration + Institute (ARI) standards (210/240, 320 or 340/360), be UL listed, use a minimum + ozone-depleting refrigerant (e.g., HCFC or HFC). All required efficiencies + are based on the Consortium for Energy Efficiency (CEE) high-efficiency commercial + air conditioning and heat pump specifications (www.cee1.org). A manufacturer''s + specification sheet indicating the system efficiency must accompany the application. + Disposal of the existing unit must comply with local codes and ordinances."},"quantityKeyCap":null,"state":"PA","percentCostCap":null,"percentCostCapKey":{"keyName":null},"paymentCap":null,"paymentDuration":null,"incentivePaidTo":"tenantOrOwner","projectTypeExclusive":null,"applicabilities":[{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"airHeat","operator":"="}],"summary":null,"requirements":"To + qualify for an incentive, equipment must meet or exceed the requirements outlined + on this form. Please refer the incentive document for individual item specifications."},{"incentiveId":3156337,"masterIncentiveId":3156337,"eligibility":"COULD_BE_ELIGIBLE","requiredData":[{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"manufacturingEquipment","operator":"="}],"tariffCode":"None","incentiveName":"Food + Service Incentives","lseId":819,"lseName":"PECO Energy Co","serviceType":"ELECTRICITY","customerClass":"GENERAL","startDate":"2012-06-01","endDate":"2013-06-01","isExhausted":false,"projectType":"other","incentiveType":"rebate","rate":100.000000,"rateUnit":"COST_PER_UNIT","documents":null,"jurisdiction":"utility","quantityKey":{"keyName":"highEfficiencyIceMakers101to200lbs24hrsCapacity","displayName":"High-Efficiency + Ice Makers 101-200 lbs/24 hrs. capacity","description":"High-Efficiency Ice + Makers 101-200 lbs/24 hrs. capacity - The incentive offering covers ice machines + that generate 60 grams (2 oz.) or lighter ice cubes, flaked, crushed, or fragmented + ice. Only air-cooled machines qualify (self-contained, ice-making heads, or + remote condensing).\r\n"},"quantityKeyCap":null,"state":"PA","percentCostCap":null,"percentCostCapKey":{"keyName":null},"paymentCap":null,"paymentDuration":null,"incentivePaidTo":"tenantOrOwner","projectTypeExclusive":null,"applicabilities":[{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"manufacturingEquipment","operator":"="}],"summary":null,"requirements":"To + qualify for an incentive, equipment must meet or exceed the requirements outlined + on this form. Please refer the incentive document for individual item specifications."},{"incentiveId":3156338,"masterIncentiveId":3156338,"eligibility":"COULD_BE_ELIGIBLE","requiredData":[{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"refrigeration","operator":"="}],"tariffCode":"None","incentiveName":"Refrigeration + Incentives","lseId":819,"lseName":"PECO Energy Co","serviceType":"ELECTRICITY","customerClass":"GENERAL","startDate":"2012-06-01","endDate":"2013-06-01","isExhausted":false,"projectType":"refrigeration","incentiveType":"rebate","rate":45.000000,"rateUnit":"COST_PER_UNIT","documents":null,"jurisdiction":"utility","quantityKey":{"keyName":"antiSweatHeaterControls819","displayName":"Anti-Sweat + Heater Controls","description":"Anti-Sweat Heater Controls. Requirements: + Incentives are offered for devices that sense the relative humidity in the + air outside of the display case and cycles or turns off the glass door (if + applicable) and frame anti-sweat heaters when the ambient dewpoint is below + a preset setpoint. Technologies that can turn off anti-sweat heaters based + on sensing condensation (on the inner glass pane) also qualify. Incentive + is based on the horizontal linear footage of the case."},"quantityKeyCap":null,"state":"PA","percentCostCap":null,"percentCostCapKey":{"keyName":null},"paymentCap":null,"paymentDuration":null,"incentivePaidTo":"tenantOrOwner","projectTypeExclusive":null,"applicabilities":[{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"refrigeration","operator":"="}],"summary":null,"requirements":"To + qualify for an incentive, equipment must meet or exceed the requirements outlined + on this form. Please refer the incentive document for individual item specifications."},{"incentiveId":3156339,"masterIncentiveId":3156339,"eligibility":"COULD_BE_ELIGIBLE","requiredData":[{"applicabilityKey":"classSpecialsSector","displayName":"Customer + Sector","description":"Subclassification for customer class Special","requiredValue":"government","operator":"="},{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"lighting","operator":"="}],"tariffCode":"None","incentiveName":"Exterior + Lighting Incentives","lseId":819,"lseName":"PECO Energy Co","serviceType":"ELECTRICITY","customerClass":"SPECIAL_USE","startDate":"2012-06-01","endDate":"2013-06-01","isExhausted":false,"projectType":"lighting","incentiveType":"rebate","rate":48.000000,"rateUnit":"COST_PER_UNIT","documents":null,"jurisdiction":"utility","quantityKey":{"keyName":"lEDtrafficLightsGreen8inchROUND","displayName":"LED + traffic lights - Green 8 inch (ROUND)","description":"LED Traffic and Pedestrian + Lights. Requirements: Incentives are offered for LED traffic lights on a + per-signal basis (including arrows) that replace or retrofit an existing incandescent + traffic signal. Lights must be hard-wired, with the exception of pedestrian + hand signals. Exclusions: Incentives are not available for spare lights. "},"quantityKeyCap":null,"state":"PA","percentCostCap":null,"percentCostCapKey":{"keyName":null},"paymentCap":null,"paymentDuration":null,"incentivePaidTo":"tenantOrOwner","projectTypeExclusive":null,"applicabilities":[{"applicabilityKey":"classSpecialsSector","displayName":"Customer + Sector","description":"Subclassification for customer class Special","requiredValue":"government","operator":"="},{"applicabilityKey":"endUseCommercial","displayName":"End + Use Commercial","description":"End Use Technology for Commercial","requiredValue":"lighting","operator":"="}],"summary":null,"requirements":"To + qualify for an incentive, equipment must meet or exceed the requirements outlined + on this form. Please refer the incentive document for individual item specifications."},{"incentiveId":3156340,"masterIncentiveId":3156340,"eligibility":"COULD_BE_ELIGIBLE","requiredData":[{"applicabilityKey":"endUseResidential","displayName":"End + Use Residential","description":"End Use Technology for Residential","requiredValue":"majorAppliances","operator":"="}],"tariffCode":"None","incentiveName":"Residential + Refrigerator and Freezer Recycling Incentive","lseId":1228,"lseName":"Southern + California Edison Co","serviceType":"ELECTRICITY","customerClass":"RESIDENTIAL","startDate":"2012-01-01","endDate":"2013-01-01","isExhausted":false,"projectType":"majorAppliances","incentiveType":"rebate","rate":35.000000,"rateUnit":"COST_PER_UNIT","documents":null,"jurisdiction":"utility","quantityKey":{"keyName":"refrigerator1228","displayName":"Refrigerator + (Recycling)","description":"Refrigerator (Recycling)\r\n\r\nRequirements: + Recycling inefficient but working refrigerator. Refrigerator must be in working + (e.g., cooling) order, between 10 and 32 cu. ft."},"quantityKeyCap":null,"state":"CA","percentCostCap":null,"percentCostCapKey":{"keyName":null},"paymentCap":null,"paymentDuration":null,"incentivePaidTo":"tenantOrOwner","projectTypeExclusive":null,"applicabilities":[{"applicabilityKey":"endUseResidential","displayName":"End + Use Residential","description":"End Use Technology for Residential","requiredValue":"majorAppliances","operator":"="}],"summary":null,"requirements":"You + may qualify if: You are an SCE customer. The appliance is located at your + SCE service address. The appliance is in working condition at the time of + pick up. The refrigerator or freezer is 10 to 32 cubic feet in size."},{"incentiveId":3156341,"masterIncentiveId":3156341,"eligibility":"COULD_BE_ELIGIBLE","requiredData":[{"applicabilityKey":"endUseResidential","displayName":"End + Use Residential","description":"End Use Technology for Residential","requiredValue":"airHeatCool","operator":"="}],"tariffCode":"None","incentiveName":"Residential + Cooling Systems Rebates","lseId":1228,"lseName":"Southern California Edison + Co","serviceType":"ELECTRICITY","customerClass":"RESIDENTIAL","startDate":"2013-01-01","endDate":"2014-01-01","isExhausted":false,"projectType":"hvac","incentiveType":"rebate","rate":300.000000,"rateUnit":"COST_PER_UNIT","documents":null,"jurisdiction":"utility","quantityKey":{"keyName":"ductedEvaporativeCoolingSystem1228","displayName":"Ducted + Evaporative Cooling System","description":"Ducted Evaporative Cooling System\r\n\r\nRequirements: + Make sure the product appears on the list of qualifying products that can + be found at www.sce.com/evapcooler. Install the qualifying evaporative cooling + system by February 28, 2014. Ducted evaporative coolers must be permanently + installed through the wallor on the roof.Ducted evaporative coolers must have + UL recognized electrical components. Proof of purchase must be provided with + your application. Limit: one of any type of HEER evaporative cooling system + rebate per Installation Address.\r\n\r\n\r\nExclusion: Evaporative coolers + mountedthrough a window do not qualify for this rebate"},"quantityKeyCap":null,"state":"CA","percentCostCap":null,"percentCostCapKey":{"keyName":null},"paymentCap":null,"paymentDuration":null,"incentivePaidTo":"tenantOrOwner","projectTypeExclusive":null,"applicabilities":[{"applicabilityKey":"endUseResidential","displayName":"End + Use Residential","description":"End Use Technology for Residential","requiredValue":"airHeatCool","operator":"="}],"summary":null,"requirements":"All + cooling system equipment/materials must be new. Follow manufacturer installation + requirements. Equipment/Materials must meet or exceed all applicable local, + state and federal standards, as well as all the following requirements. Provide + the information requested for each product installed. Detach and mail in the + completed and signed Customer Application Form, copy(ies) of proof(s) of purchase, + and other required documentation. An on-site verification of the product(s) + purchased and installed may be required before the rebate is paid. For item + level specifications refer to catalog."}],"pageStart":0,"pageCount":25}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:20 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/incentive_json/_incentives/should_allow_searches_by_project_type.yml b/spec/cassettes/Genability_Client/incentive_json/_incentives/should_allow_searches_by_project_type.yml new file mode 100644 index 0000000..d5a2390 --- /dev/null +++ b/spec/cassettes/Genability_Client/incentive_json/_incentives/should_allow_searches_by_project_type.yml @@ -0,0 +1,1440 @@ +--- +http_interactions: +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/beta/incentives?projectType=solarPv + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:18 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Content-Length: + - '13459' + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: !binary |- + eyJzdGF0dXMiOiJzdWNjZXNzIiwiY291bnQiOjQzOCwidHlwZSI6IkluY2Vu + dGl2ZSIsInJlc3VsdHMiOlt7ImluY2VudGl2ZUlkIjozMTU3MzU5LCJtYXN0 + ZXJJbmNlbnRpdmVJZCI6MzE1NzM1OSwiZWxpZ2liaWxpdHkiOiJDT1VMRF9C + RV9FTElHSUJMRSIsInJlcXVpcmVkRGF0YSI6W3siYXBwbGljYWJpbGl0eUtl + eSI6InN5c3RlbVNpemVEYyIsImRpc3BsYXlOYW1lIjoiU3lzdGVtIFNpemUg + REMiLCJkZXNjcmlwdGlvbiI6IlNpemUgb2YgdGhlIHNvbGFyIHN5c3RlbSBp + biBraWxvV2F0dHMgREMiLCJtaW5WYWx1ZSI6MC41MCwibWF4VmFsdWUiOjEw + LjAwLCJxdWFudGl0eVVuaXQiOiJrVyJ9LHsiYXBwbGljYWJpbGl0eUtleSI6 + InJlY1JldGFpbmVkIiwiZGlzcGxheU5hbWUiOiJSRUMgUmV0YWluZWQiLCJk + ZXNjcmlwdGlvbiI6IldoZXRoZXIgdGhlIG93bmVyIGhhcyBjaG9zZW4gdG8g + cmV0YWluIHRoZWlyIFJFQyAoUmVuZXdhYmxlIEVuZXJneSBDcmVkaXRzKS4g + ICIsInJlcXVpcmVkVmFsdWUiOiJmYWxzZSIsIm9wZXJhdG9yIjoiPSJ9LHsi + YXBwbGljYWJpbGl0eUtleSI6InN5c3RlbU93bmVyc2hpcCIsImRpc3BsYXlO + YW1lIjoiU3lzdGVtIE93bmVyc2hpcCIsImRlc2NyaXB0aW9uIjoiSWYgaW5j + ZW50aXZlIHJlcXVpcmVzIHRoZSBzeXN0ZW0gdG8gYmUgb3duZWQgYnkgdGhl + IEhvc3Qgb3IgVGhpcmQgUGFydHkgdG8gcXVhbGlmeS4gICIsInJlcXVpcmVk + VmFsdWUiOiJob3N0Iiwib3BlcmF0b3IiOiI9In1dLCJ0YXJpZmZDb2RlIjoi + Tm9uZSIsImluY2VudGl2ZU5hbWUiOiJSZXNpZGVudGlhbCBSZW5ld2FibGUg + RW5lcmd5IENyZWRpdCAtIDEwIGtXIG9yIFNtYWxsZXIgU3lzdGVtcyIsImxz + ZUlkIjo3NCwibHNlTmFtZSI6IkxhIFBsYXRhIEVsZWN0cmljIEFzc24sIElu + YyIsInNlcnZpY2VUeXBlIjoiU09MQVJfUFYiLCJjdXN0b21lckNsYXNzIjoi + UkVTSURFTlRJQUwiLCJzdGFydERhdGUiOiIyMDEzLTAxLTAxIiwiZW5kRGF0 + ZSI6IjIwMTQtMDEtMDEiLCJpc0V4aGF1c3RlZCI6dHJ1ZSwicHJvamVjdFR5 + cGUiOiJzb2xhclB2IiwiaW5jZW50aXZlVHlwZSI6InJlYmF0ZSIsInJhdGUi + OjQwMC4wMDAwMDAsInJhdGVVbml0IjoiQ09TVF9QRVJfVU5JVCIsImRvY3Vt + ZW50cyI6bnVsbCwianVyaXNkaWN0aW9uIjoidXRpbGl0eSIsInF1YW50aXR5 + S2V5Ijp7ImtleU5hbWUiOiJzeXN0ZW1TaXplRGMiLCJkaXNwbGF5TmFtZSI6 + IlN5c3RlbSBTaXplIERDIiwiZGVzY3JpcHRpb24iOiJTaXplIG9mIHRoZSBz + b2xhciBzeXN0ZW0gaW4ga2lsb1dhdHRzIERDIn0sInF1YW50aXR5S2V5Q2Fw + IjpudWxsLCJzdGF0ZSI6IkNPIiwicGVyY2VudENvc3RDYXAiOjEwMCwicGVy + Y2VudENvc3RDYXBLZXkiOnsia2V5TmFtZSI6InN5c3RlbUNvc3QiLCJkaXNw + bGF5TmFtZSI6IlN5c3RlbSBDb3N0IiwiZGVzY3JpcHRpb24iOiJDb3N0IG9m + IHRoZSBzb2xhciBzeXN0ZW0gaW4gVVNELiAifSwicGF5bWVudENhcCI6bnVs + bCwicGF5bWVudER1cmF0aW9uIjoxLCJpbmNlbnRpdmVQYWlkVG8iOiJ0ZW5h + bnRPck93bmVyIiwicHJvamVjdFR5cGVFeGNsdXNpdmUiOmZhbHNlLCJhcHBs + aWNhYmlsaXRpZXMiOlt7ImFwcGxpY2FiaWxpdHlLZXkiOiJyZWNSZXRhaW5l + ZCIsImRpc3BsYXlOYW1lIjoiUkVDIFJldGFpbmVkIiwiZGVzY3JpcHRpb24i + OiJXaGV0aGVyIHRoZSBvd25lciBoYXMgY2hvc2VuIHRvIHJldGFpbiB0aGVp + ciBSRUMgKFJlbmV3YWJsZSBFbmVyZ3kgQ3JlZGl0cykuICAiLCJyZXF1aXJl + ZFZhbHVlIjoiZmFsc2UiLCJvcGVyYXRvciI6Ij0ifSx7ImFwcGxpY2FiaWxp + dHlLZXkiOiJzeXN0ZW1Pd25lcnNoaXAiLCJkaXNwbGF5TmFtZSI6IlN5c3Rl + bSBPd25lcnNoaXAiLCJkZXNjcmlwdGlvbiI6IklmIGluY2VudGl2ZSByZXF1 + aXJlcyB0aGUgc3lzdGVtIHRvIGJlIG93bmVkIGJ5IHRoZSBIb3N0IG9yIFRo + aXJkIFBhcnR5IHRvIHF1YWxpZnkuICAiLCJyZXF1aXJlZFZhbHVlIjoiaG9z + dCIsIm9wZXJhdG9yIjoiPSJ9LHsiYXBwbGljYWJpbGl0eUtleSI6InN5c3Rl + bVNpemVEYyIsImRpc3BsYXlOYW1lIjoiU3lzdGVtIFNpemUgREMiLCJkZXNj + cmlwdGlvbiI6IlNpemUgb2YgdGhlIHNvbGFyIHN5c3RlbSBpbiBraWxvV2F0 + dHMgREMiLCJtaW5WYWx1ZSI6MC41MCwibWF4VmFsdWUiOjEwLjAwLCJxdWFu + dGl0eVVuaXQiOiJrVyJ9XSwic3VtbWFyeSI6IkxhIFBsYXRhIEVsZWN0cmlj + IEFzc24sIEluYyBpcyBvZmZlcmluZyBwYXltZW50cyBmb3IgUmVuZXdhYmxl + IEVuZXJneSBDcmVkaXRzIHRvIHN1cHBvcnQgYW5kIGVuY291cmFnZSB0aGUg + dXNlIG9mIHJlbmV3YWJsZSBnZW5lcmF0aW9uLiBMUEVBIHdpbGwgcHJvdmlk + ZSBjdXN0b21lcnMgYSBvbmV0aW1lIHVwZnJvbnQgcGF5bWVudCBvZiAkNDAw + IGZvciBSRUNzIGFzc29jaWF0ZWQgd2l0aCBsb2NhbCBSZW5ld2FibGUgR2Vu + ZXJhdGlvbiBpbnN0YWxsYXRpb25zIG9mIDEwIGtXIG9yIHNtYWxsZXIsIHNl + dCBmb3J0aCBoZXJlaW4gYW5kIGFzIGRldGVybWluZWQgZnJvbSB0aW1lIHRv + IHRpbWUgYnkgdGhlIExQRUEgQm9hcmQgb2YgRGlyZWN0b3JzLCBub3QgdG8g + ZXhjZWVkIHRoZSBjb3N0IG9mIHRoZSB1bml0LiBSZXNpZGVudGlhbCBncmlk + LXRpZWQgaW5zdGFsbGF0aW9ucyBsb2NhdGVkIHdpdGhpbiB0aGUgTFBFQSBz + ZXJ2aWNlIHRlcnJpdG9yeSBzaGFsbCBiZSBlbGlnaWJsZSBmb3IgdGhlIFJF + QyBwYXltZW50LiIsInJlcXVpcmVtZW50cyI6IkZvciBTb2xhciBQViBTeXN0 + ZW1zIDEwIGtXIG9yIHNtYWxsZXIuIEluc3RhbGxhdGlvbnMgbG9jYXRlZCB3 + aXRoaW4gdGhlIExQRUEgc2VydmljZSB0ZXJyaXRvcnkgc2hhbGwgYmUgZWxp + Z2libGUgZm9yIHRoZSBSRUMgcGF5bWVudC4gVGhlIGN1c3RvbWVyIHNoYWxs + IGFzc2lnbiwgaW4gYSBtYW5uZXIgYWNjZXB0YWJsZSB0byBMUEVBIGFuZCBm + b3IgYSB0ZXJtIG9mIHRlbiB5ZWFycywgYWxsIFJFQ3MgYXMgZW52aXJvbm1l + bnRhbCBhdHRyaWJ1dGVzLCBhc3NvY2lhdGVkIHdpdGggdGhlIGluc3RhbGxh + dGlvbi4ifSx7ImluY2VudGl2ZUlkIjozMTU3NTY4LCJtYXN0ZXJJbmNlbnRp + dmVJZCI6MzE1NzU2OCwiZWxpZ2liaWxpdHkiOiJDT1VMRF9CRV9FTElHSUJM + RSIsInJlcXVpcmVkRGF0YSI6W3siYXBwbGljYWJpbGl0eUtleSI6InN5c3Rl + bVNpemVBY1ciLCJkaXNwbGF5TmFtZSI6IlN5c3RlbSBTaXplIEFDIFciLCJk + ZXNjcmlwdGlvbiI6IlNpemUgb2YgdGhlIHNvbGFyIHN5c3RlbSBpbiBXYXR0 + cyBBQyIsIm1pblZhbHVlIjo1MDAuMDAsIm1heFZhbHVlIjoxMDAwMC4wMCwi + cXVhbnRpdHlVbml0IjoiVyJ9XSwidGFyaWZmQ29kZSI6Ik5vbmUiLCJpbmNl + bnRpdmVOYW1lIjoiUmVzaWRlbnRpYWwgU29sYXIgUGhvdG92b2x0YWljcyBS + ZWJhdGUiLCJsc2VJZCI6MjE2NiwibHNlTmFtZSI6IkNvbG9yYWRvIFNwcmlu + Z3MgVXRpbGl0aWVzIiwic2VydmljZVR5cGUiOiJTT0xBUl9QViIsImN1c3Rv + bWVyQ2xhc3MiOiJSRVNJREVOVElBTCIsInN0YXJ0RGF0ZSI6IjIwMTQtMDEt + MDEiLCJlbmREYXRlIjoiMjAxNS0wMS0wMSIsImlzRXhoYXVzdGVkIjp0cnVl + LCJwcm9qZWN0VHlwZSI6InNvbGFyUHYiLCJpbmNlbnRpdmVUeXBlIjoicmVi + YXRlIiwicmF0ZSI6MS41MDAwMDAsInJhdGVVbml0IjoiQ09TVF9QRVJfVU5J + VCIsImRvY3VtZW50cyI6bnVsbCwianVyaXNkaWN0aW9uIjoidXRpbGl0eSIs + InF1YW50aXR5S2V5Ijp7ImtleU5hbWUiOiJzeXN0ZW1TaXplQWNXIiwiZGlz + cGxheU5hbWUiOiJTeXN0ZW0gU2l6ZSBBQyBXIiwiZGVzY3JpcHRpb24iOiJT + aXplIG9mIHRoZSBzb2xhciBzeXN0ZW0gaW4gV2F0dHMgQUMifSwicXVhbnRp + dHlLZXlDYXAiOiIxMDAwMCIsInN0YXRlIjoiQ08iLCJwZXJjZW50Q29zdENh + cCI6bnVsbCwicGVyY2VudENvc3RDYXBLZXkiOnsia2V5TmFtZSI6bnVsbH0s + InBheW1lbnRDYXAiOm51bGwsInBheW1lbnREdXJhdGlvbiI6MSwiaW5jZW50 + aXZlUGFpZFRvIjoidGVuYW50T3JPd25lciIsInByb2plY3RUeXBlRXhjbHVz + aXZlIjpmYWxzZSwiYXBwbGljYWJpbGl0aWVzIjpbeyJhcHBsaWNhYmlsaXR5 + S2V5Ijoic3lzdGVtU2l6ZUFjVyIsImRpc3BsYXlOYW1lIjoiU3lzdGVtIFNp + emUgQUMgVyIsImRlc2NyaXB0aW9uIjoiU2l6ZSBvZiB0aGUgc29sYXIgc3lz + dGVtIGluIFdhdHRzIEFDIiwibWluVmFsdWUiOjUwMC4wMCwibWF4VmFsdWUi + OjEwMDAwLjAwLCJxdWFudGl0eVVuaXQiOiJXIn1dLCJzdW1tYXJ5IjoiVGhy + b3VnaCBpdHMgUmVuZXdhYmxlIEVuZXJneSBSZWJhdGUgUHJvZ3JhbSwgQ29s + b3JhZG8gU3ByaW5ncyBVdGlsaXRpZXMgKENTVSkgb2ZmZXJzIGEgcmViYXRl + IHRvIGN1c3RvbWVycyB3aG8gaW5zdGFsbCBncmlkLWNvbm5lY3RlZCBzb2xh + ci1lbGVjdHJpYyAoUFYpIHN5c3RlbXMsIGFuZCBzb2xhciB3YXRlciBoZWF0 + ZXJzLiBUbyBjYWxjdWxhdGUgdGhlIFBWIHN5c3RlbSdzIEFDIG91dHB1dCwg + YSBkZS1yYXRpbmcgZmFjdG9yIGlzIHVzZWQgdG8gYWNjb3VudCBmb3Igc2hh + ZGluZyBhbmQgc3Vib3B0aW1hbCBvcmllbnRhdGlvbiBvciB0aWx0LiBBbGwg + UmVuZXdhYmxlIEVuZXJneSBDcmVkaXRzIChSRUNzKSBnZW5lcmF0ZWQgZnJv + bSBzeXN0ZW1zIGluc3RhbGxlZCB1bmRlciB0aGlzIHByb2dyYW0gYXJlIGNv + bmZlcnJlZCB0byBDU1UgZm9yIGNvbXBsaWFuY2Ugd2l0aCBDb2xvcmFkbydz + IFJlbmV3YWJsZSBFbmVyZ3kgU3RhbmRhcmQuIFRoZSB1dGlsaXR5IHBsYW5z + IHRvIGNvbnRpbnVlIG9mZmVyaW5nIHRoZSByZWJhdGUgaW4gZnV0dXJlIHll + YXJzIHBlbmRpbmcgYXBwcm92YWwgYnkgdGhlIFV0aWxpdGllcyBCb2FyZCwg + YnV0IHRoZSBpbmNlbnRpdmUgYW1vdW50IGlzIGxpa2VseSB0byBkZWNyZWFz + ZSBpbiBmdXR1cmUgeWVhcnMuIFF1YWxpZnlpbmcgUFYgbW9kdWxlcyBhbmQg + aW52ZXJ0ZXJzIG11c3QgYmUgaW5jbHVkZWQgaW4gdGhlIENhbGlmb3JuaWEg + RW5lcmd5IENvbW1pc3Npb24ncyAoQ0VDKSBsaXN0cyBvZiBlbGlnaWJsZSBl + cXVpcG1lbnQuIFF1YWxpZnlpbmcgc3lzdGVtcyBtdXN0IGFsc28gY2Fycnkg + bWluaW11bSBtYW51ZmFjdHVyZXIgYW5kL29yIGluc3RhbGxlciB3YXJyYW50 + aWVzIGFzIG91dGxpbmVkIGluIHRoZSBwcm9ncmFtIGd1aWRlbGluZXMuIiwi + cmVxdWlyZW1lbnRzIjoiQmUgb3duZWQgYnkgdGhlIGN1c3RvbWVyIGFuZCBy + ZW1haW4gaW50ZXJjb25uZWN0ZWQgdG8gU3ByaW5ncyBVdGlsaXRpZXMnIGVs + ZWN0cmljIHN5c3RlbSBhbmQgb3BlcmF0aW9uYWwgZm9yIGEgbWluaW11bSBv + ZiA1IHllYXJzLCBvciB0aGUgcmViYXRlIHBheW1lbnQgYW1vdW50IHdpbGwg + YmUgYmlsbGVkIHRvIHRoZSBjdXN0b21lci4gSGF2ZSBhIG1pbmltdW0gU3lz + dGVtIGNhcGFjaXR5IG9mIDUwMCB3YXR0cywgYW5kIGEgbWF4aW11bSBjYXBh + Y2l0eSBvZiAxMCBraWxvd2F0dHMgZm9yIHJlc2lkZW50aWFsIGFuZCAyNSBr + aWxvd2F0dHMgZm9yIGJ1c2luZXNzLiBDYXJyeSBtYW51ZmFjdHVyZXIgYW5k + L29yIGluc3RhbGxlciB3YXJyYW50aWVzIGZvciB0aGUgZm9sbG93aW5nIG1p + bmltdW0gc3BlY2lmaWVkIHBlcmlvZChzKSBhcyBhcHByb3ByaWF0ZSBmb3Ig + dGhlIHByb2R1Y3QgaW5zdGFsbGVkLCBmcm9tIHRoZSBkYXRlIG9mIGNvbXBs + ZXRpb24gb2YgdGhlIHdvcmsuIFRoZSB3YXJyYW50eSBpbmNsdWRlcyBhbGwg + bWF0ZXJpYWxzLCBwYXJ0cywgc2VydmljZSBjYWxscyBhbmQgbGFib3IgZm9y + IHRoZSBwZXJpb2QocykgYXMgYXBwcm9wcmlhdGUgZm9yIHRoZSBwcm9kdWN0 + IGluc3RhbGxlZC4gUFYgc3lzdGVtIC0gNSB5ZWFycyBhZ2FpbnN0IGRlZmVj + dHMgaW4gd29ya21hbnNoaXAuIEluc3RhbGxlciBtdXN0IHByb3ZpZGUgd2Fy + cmFudHksIHVubGVzcyBzeXN0ZW0gaXMgaW5zdGFsbGVkIGJ5IEN1c3RvbWVy + LiBJbnZlcnRlciAtIDUgeWVhcnMgYWdhaW5zdCBtYW51ZmFjdHVyZXIgZGVm + ZWN0cy4gTWFudWZhY3R1cmVyIG11c3QgcHJvdmlkZSB3YXJyYW50eS4gUFYg + bW9kdWxlcyAtIDIwIHllYXJzIGFnYWluc3QgZGVncmFkYXRpb24gb2YgcGVy + Zm9ybWFuY2UgYmVsb3cgODAlIG9mIG9yaWdpbmFsIG91dHB1dCB1bmRlciBT + dGFuZGFyZCBUZXN0IENvbmRpdGlvbnMgKFNUQykuIE1hbnVmYWN0dXJlciBt + dXN0IHByb3ZpZGUgd2FycmFudHkuIn0seyJpbmNlbnRpdmVJZCI6MzE1Nzcw + NCwibWFzdGVySW5jZW50aXZlSWQiOjMxNTc3MDQsImVsaWdpYmlsaXR5Ijoi + Q09VTERfQkVfRUxJR0lCTEUiLCJyZXF1aXJlZERhdGEiOlt7ImFwcGxpY2Fi + aWxpdHlLZXkiOiJhemltdXRoIiwiZGlzcGxheU5hbWUiOiJBemltdXRoIiwi + ZGVzY3JpcHRpb24iOiJBemltdXRoIGFuZ2xlIChkZWdyZWVzKS4iLCJtaW5W + YWx1ZSI6OTAuMDAsIm1heFZhbHVlIjoyNzAuMDB9LHsiYXBwbGljYWJpbGl0 + eUtleSI6InN5c3RlbVNpemVBY1ciLCJkaXNwbGF5TmFtZSI6IlN5c3RlbSBT + aXplIEFDIFciLCJkZXNjcmlwdGlvbiI6IlNpemUgb2YgdGhlIHNvbGFyIHN5 + c3RlbSBpbiBXYXR0cyBBQyIsIm1pblZhbHVlIjoxMDAwLjAwLCJxdWFudGl0 + eVVuaXQiOiJXIn1dLCJ0YXJpZmZDb2RlIjoiRVBCQiIsImluY2VudGl2ZU5h + bWUiOiJSZXNpZGVudGlhbCBTb2xhciBQYXJ0bmVyc2hpcCBSZWJhdGUiLCJs + c2VJZCI6MjI3OSwibHNlTmFtZSI6IkNvcm9uYSBEZXBhcnRtZW50IG9mIFdh + dGVyIGFuZCBQb3dlciIsInNlcnZpY2VUeXBlIjoiU09MQVJfUFYiLCJjdXN0 + b21lckNsYXNzIjoiUkVTSURFTlRJQUwiLCJzdGFydERhdGUiOiIyMDEzLTAz + LTExIiwiZW5kRGF0ZSI6IjIwMTQtMDEtMDEiLCJpc0V4aGF1c3RlZCI6dHJ1 + ZSwicHJvamVjdFR5cGUiOiJzb2xhclB2IiwiaW5jZW50aXZlVHlwZSI6InJl + YmF0ZSIsInJhdGUiOjEuMjIwMDAwLCJyYXRlVW5pdCI6IkNPU1RfUEVSX1VO + SVQiLCJkb2N1bWVudHMiOm51bGwsImp1cmlzZGljdGlvbiI6IlV0aWxpdHki + LCJxdWFudGl0eUtleSI6eyJrZXlOYW1lIjoic3lzdGVtU2l6ZUFjVyIsImRp + c3BsYXlOYW1lIjoiU3lzdGVtIFNpemUgQUMgVyIsImRlc2NyaXB0aW9uIjoi + U2l6ZSBvZiB0aGUgc29sYXIgc3lzdGVtIGluIFdhdHRzIEFDIn0sInF1YW50 + aXR5S2V5Q2FwIjoiMzAwMCIsInN0YXRlIjoiQ0EiLCJwZXJjZW50Q29zdENh + cCI6bnVsbCwicGVyY2VudENvc3RDYXBLZXkiOnsia2V5TmFtZSI6bnVsbH0s + InBheW1lbnRDYXAiOjM2NjAsInBheW1lbnREdXJhdGlvbiI6MSwiaW5jZW50 + aXZlUGFpZFRvIjoidGVuYW50T3JPd25lciIsInByb2plY3RUeXBlRXhjbHVz + aXZlIjpmYWxzZSwiYXBwbGljYWJpbGl0aWVzIjpbeyJhcHBsaWNhYmlsaXR5 + S2V5IjoiYXppbXV0aCIsImRpc3BsYXlOYW1lIjoiQXppbXV0aCIsImRlc2Ny + aXB0aW9uIjoiQXppbXV0aCBhbmdsZSAoZGVncmVlcykuIiwibWluVmFsdWUi + OjkwLjAwLCJtYXhWYWx1ZSI6MjcwLjAwfSx7ImFwcGxpY2FiaWxpdHlLZXki + OiJzeXN0ZW1TaXplQWNXIiwiZGlzcGxheU5hbWUiOiJTeXN0ZW0gU2l6ZSBB + QyBXIiwiZGVzY3JpcHRpb24iOiJTaXplIG9mIHRoZSBzb2xhciBzeXN0ZW0g + aW4gV2F0dHMgQUMiLCJtaW5WYWx1ZSI6MTAwMC4wMCwicXVhbnRpdHlVbml0 + IjoiVyJ9XSwic3VtbWFyeSI6IkRXUOKAmXMgbmV3IFNvbGFyIFBhcnRuZXJz + aGlwIFByb2dyYW0gaXMgYXZhaWxhYmxlIHRvIGhlbHAgb2Zmc2V0IHRoZSBp + bnZlc3RtZW50IGluIGEgUFYgc3lzdGVtIGFuZCBnZXQgb24gdGhlIHJvYWQg + dG8gbWFraW5nIHVzZSBvZiByZW5ld2FibGUgZW5lcmd5LiBEV1AgcHJvdmlk + ZXMgcmViYXRlcyB0byBpdHMgZWxlY3RyaWMgY3VzdG9tZXJzIHRvIHJlZHVj + ZSB0aGUgaW5pdGlhbCBzeXN0ZW0gY29zdC4gQWxsIENhbGlmb3JuaWEgdXRp + bGl0aWVzIGFyZSByZXF1aXJlZCB0byBjb2xsZWN0IFB1YmxpYyBCZW5lZml0 + cyBGdW5kcyBmcm9tIHRoZWlyIGN1c3RvbWVycy4gVGhlc2UgZnVuZHMgYXJl + IHRvIGJlIHVzZWQgYnkgdGhlIHV0aWxpdGllcyB0byBkZXZlbG9wIGFuZCBp + bXBsZW1lbnQgcHVibGljIHB1cnBvc2UgcHJvZ3JhbXMgc3VjaCBhcyBQaG90 + b3ZvbHRhaWNzLiBEV1AgaXMgY29tbWl0dGVkIHRvIHByb21vdGluZyBhbmQg + c3VwcG9ydGluZyByZW5ld2FibGUgdGVjaG5vbG9naWVzIGFuZCBpcyBvZmZl + cmluZyBpdHMgY3VzdG9tZXJzIHJlYmF0ZXMgdG8gcmVkdWNlIHRoZSBwdXJj + aGFzZSBhbmQgaW5zdGFsbGF0aW9uIGNvc3RzIGZvciBQViBzeXN0ZW1zIGFu + ZCBwcm92aWRlIGEgbmV0IG1ldGVyaW5nIGNyZWRpdCBmb3IgcHJvZHVjaW5n + IHNvbGFyIGVsZWN0cmljaXR5LiBEV1DigJlzIFNvbGFyIFBhcnRuZXJzaGlw + IFByb2dyYW0gdXNlcyBpdHMgY3VzdG9tZXIgZnVuZHMgdG8gcHJvdmlkZSB0 + aGVzZSBzb2xhciBpbmNlbnRpdmVzLiBUaGUgRFdQIFNvbGFyIFBhcnRuZXJz + aGlwIFByb2dyYW0gaXMgZGVzaWduZWQgdG8gZW5jb3VyYWdlIHRoZSBpbnN0 + YWxsYXRpb24gb2YgUFYgU3lzdGVtcyB0aGF0IHByb2R1Y2UgdGhlIG1heGlt + dW0gYW1vdW50IG9mIGVuZXJneSBwb3NzaWJsZSwgc28gdGhlaXIgUHJvZ3Jh + bSBpbmNlbnRpdmUgaXMgY2FsY3VsYXRlZCBiYXNlZCBvbiBhbiBFc3RpbWF0 + ZWQgUGVyZm9ybWFuY2UgQ2FsY3VsYXRpb24uIiwicmVxdWlyZW1lbnRzIjoi + UGhvdG92b2x0YWljIHN5c3RlbXMgbXVzdCBiZSBpbnN0YWxsZWQgYnkgYXBw + cm9wcmlhdGVseSBsaWNlbnNlZCBDYWxpZm9ybmlhIGNvbnRyYWN0b3JzIGlu + IGFjY29yZGFuY2Ugd2l0aCBydWxlcyBhbmQgcmVndWxhdGlvbnMgYWRvcHRl + ZCBieSB0aGUgU3RhdGUgb2YgQ2FsaWZvcm5pYSBDb250cmFjdG9ycycgU3Rh + dGUgTGljZW5zaW5nIEJvYXJkIGFuZCBtdXN0IGluIGFsbCBjYXNlcyBiZSBp + bnN0YWxsZWQgaW4gY29uZm9ybWFuY2Ugd2l0aCB0aGUgbWFudWZhY3R1cmVy + J3Mgc3BlY2lmaWNhdGlvbnMgYW5kIHdpdGggYWxsIGFwcGxpY2FibGUgZWxl + Y3RyaWNhbCBhbmQgb3RoZXIgY29kZXMgYW5kIHN0YW5kYXJkcy4gQ29udHJh + Y3RvcnMgbXVzdCBwb3NzZXNzLCBvciBlbXBsb3kgc3ViY29udHJhY3RvcnMg + d2hvIHBvc3Nlc3MsIGFuIEEsIEIsIEMtMTAgb3IgQy00NiBsaWNlbnNlLiBF + bGlnaWJsZSBzeXN0ZW1zIGluIHRoZSBTb2xhciBQYXJ0bmVyc2hpcCBwcm9n + cmFtIG11c3QgYmUgZ3JpZC1jb25uZWN0ZWQuIFRoaXMgbWVhbnMgc2ltcGx5 + IHRoYXQgdGhlIHN5c3RlbSBtdXN0IGJlIGVsZWN0cmljYWxseSBjb25uZWN0 + ZWQgKG9uIHRoZSBjdXN0b21lcuKAmXMgcHJlbWlzZXMpIHRvIHRoZSBEV1Ag + ZWxlY3RyaWNhbCBncmlkIHNlcnZpbmcgdGhlIGN1c3RvbWVycyBlbGVjdHJp + Y2FsIGxvYWQuIEFsbCByZXRhaWxlcnMgb2YgZ2VuZXJhdGluZyBzeXN0ZW1z + IHRoYXQgcmVjZWl2ZSBhIFNvbGFyIFBhcnRuZXJzaGlwIFByb2dyYW0gcGF5 + bWVudCB1bmRlciB0aGlzIHByb2dyYW0gbXVzdCBwcm92aWRlIGEgbWluaW11 + bSB0ZW4teWVhciB3YXJyYW50eSB0byB0aGUgcHVyY2hhc2VyIGFnYWluc3Qg + YnJlYWtkb3duIG9yIGRlZ3JhZGF0aW9uIG9mIG91dHB1dC4ifSx7ImluY2Vu + dGl2ZUlkIjozMTU3ODkwLCJtYXN0ZXJJbmNlbnRpdmVJZCI6MzE1Nzg5MCwi + ZWxpZ2liaWxpdHkiOiJDT1VMRF9CRV9FTElHSUJMRSIsInJlcXVpcmVkRGF0 + YSI6W3siYXBwbGljYWJpbGl0eUtleSI6ImFubnVhbEVzdGltYXRlZFNvbGFy + UHJvZHVjdGlvbiIsImRpc3BsYXlOYW1lIjoiQW5udWFsIEVzdGltYXRlZCBT + b2xhciBQcm9kdWN0aW9uIiwiZGVzY3JpcHRpb24iOiJIb3cgbWFueSBrV2gg + dGhlIHNvbGFyIHN5c3RlbSBpcyBlc3RpbWF0ZWQgdG8gcHJvZHVjZSBpbiB0 + aGUgZmlyc3QgeWVhci4gIiwicXVhbnRpdHlVbml0Ijoia1doIiwib3BlcmF0 + b3IiOiI8PSIsInF1YW50aXR5S2V5IjoiMTAwcGVyY2VudEFubnVhbENvbnN1 + bXB0aW9uIn1dLCJ0YXJpZmZDb2RlIjoiTm9uZSIsImluY2VudGl2ZU5hbWUi + OiJTb2xhciBQViBSZWJhdGUiLCJsc2VJZCI6MTk5LCJsc2VOYW1lIjoiQ2l0 + eSBvZiBMb21wb2MgVXRpbGl0aWVzIiwic2VydmljZVR5cGUiOiJTT0xBUl9Q + ViIsImN1c3RvbWVyQ2xhc3MiOiJSRVNJREVOVElBTCIsInN0YXJ0RGF0ZSI6 + IjIwMTMtMDEtMDEiLCJlbmREYXRlIjoiMjAxNC0wMS0wMSIsImlzRXhoYXVz + dGVkIjp0cnVlLCJwcm9qZWN0VHlwZSI6InNvbGFyUHYiLCJpbmNlbnRpdmVU + eXBlIjoicmViYXRlIiwicmF0ZSI6Mi4wMDAwMDAsInJhdGVVbml0IjoiQ09T + VF9QRVJfVU5JVCIsImRvY3VtZW50cyI6bnVsbCwianVyaXNkaWN0aW9uIjoi + VXRpbGl0eSIsInF1YW50aXR5S2V5Ijp7ImtleU5hbWUiOiJzeXN0ZW1TaXpl + RGNXIiwiZGlzcGxheU5hbWUiOiJTeXN0ZW0gU2l6ZSBEQyBXIiwiZGVzY3Jp + cHRpb24iOiJTaXplIG9mIHRoZSBzb2xhciBzeXN0ZW0gaW4gV2F0dHMgREMi + fSwicXVhbnRpdHlLZXlDYXAiOm51bGwsInN0YXRlIjoiQ0EiLCJwZXJjZW50 + Q29zdENhcCI6NTAsInBlcmNlbnRDb3N0Q2FwS2V5Ijp7ImtleU5hbWUiOiJz + eXN0ZW1Db3N0IiwiZGlzcGxheU5hbWUiOiJTeXN0ZW0gQ29zdCIsImRlc2Ny + aXB0aW9uIjoiQ29zdCBvZiB0aGUgc29sYXIgc3lzdGVtIGluIFVTRC4gIn0s + InBheW1lbnRDYXAiOjUwMDAwLCJwYXltZW50RHVyYXRpb24iOjEsImluY2Vu + dGl2ZVBhaWRUbyI6InRlbmFudE9yT3duZXIiLCJwcm9qZWN0VHlwZUV4Y2x1 + c2l2ZSI6ZmFsc2UsImFwcGxpY2FiaWxpdGllcyI6W3siYXBwbGljYWJpbGl0 + eUtleSI6ImFubnVhbEVzdGltYXRlZFNvbGFyUHJvZHVjdGlvbiIsImRpc3Bs + YXlOYW1lIjoiQW5udWFsIEVzdGltYXRlZCBTb2xhciBQcm9kdWN0aW9uIiwi + ZGVzY3JpcHRpb24iOiJIb3cgbWFueSBrV2ggdGhlIHNvbGFyIHN5c3RlbSBp + cyBlc3RpbWF0ZWQgdG8gcHJvZHVjZSBpbiB0aGUgZmlyc3QgeWVhci4gIiwi + cXVhbnRpdHlVbml0Ijoia1doIiwib3BlcmF0b3IiOiI8PSIsInF1YW50aXR5 + S2V5IjoiMTAwcGVyY2VudEFubnVhbENvbnN1bXB0aW9uIn1dLCJzdW1tYXJ5 + IjoiQ2l0eSBvZiBMb21wb2MgVXRpbGl0aWVzIHByb3ZpZGVzIHJlYmF0ZXMg + dG8gaXRzIGVsZWN0cmljIGN1c3RvbWVycyB3aG8gcHVyY2hhc2UgYW5kIGlu + c3RhbGwgcGhvdG92b2x0YWljIChQVikgc3lzdGVtcy4gVGhlIHJlYmF0ZSBp + cyAkMi4wMCBwZXIgd2F0dC4gVGhlIGluY2VudGl2ZSBhbW91bnQgbWF5IG5v + dCBleGNlZWQgNTAlIHRoZSBjb3N0IG9mIHRoZSBzeXN0ZW0sIHVwIHRvIGEg + bWF4aW11bSBvZiAkNTAsMDAwLlRvIHF1YWxpZnkgZm9yIHRoZSByZWJhdGUg + dGhlIHN5c3RlbSBtdXN0IG1lZXQgYWxsIHRoZSBjcml0ZXJpYSBhcyBkZWZp + bmVkIGJ5IHRoZSBMb21wb2MgQ2l0eSBFbGVjdHJpYyBpbnRlcmNvbm5lY3Rp + b24gYWdyZWVtZW50IGZvciBzZWxmLWdlbmVyYXRpbmcgZWxlY3RyaWMgc3lz + dGVtcyBhbmQgdGhlIHJlcXVpcmVtZW50cyBzZXQgZm9ydGggYnkgdGhlIENh + bGlmb3JuaWEgRW5lcmd5IENvbW1pc3Npb24uIiwicmVxdWlyZW1lbnRzIjoi + RWxpZ2libGUgU3lzdGVtIFNpemUgc2hhbGwgYmUgbm8gbGFyZ2VyIHRoYW4g + dGhlIGN1c3RvbWVyJ3MgYXZlcmFnZSB1c2FnZSBvdmVyIHRoZSBwYXN0IDMg + eWVhcnMuIFBWIG1vZHVsZXMgYW5kIGludmVydGVycyBtdXN0IGJlIG9uIHRo + ZSBTdGF0ZSBvZiBDYWxpZm9ybmlhIEVuZXJneSBDb21taXNzaW9uIGxpc3Qg + b2YgZWxpZ2libGUgZXF1aXBtZW50OyBNdXN0IGhhdmUgbWluaW11bSAxMC15 + ZWFyIHdhcnJhbnR5IGFnYWluc3QgYnJlYWtkb3duIG9yIHVudXN1YWwgZGVn + cmFkYXRpb24uIFN5c3RlbXMgbXVzdCBiZSBpbnN0YWxsZWQgYnkgYW4gYXBw + cm9wcmlhdGVseSBsaWNlbnNlZCBDYWxpZm9ybmlhIHNvbGFyIGluc3RhbGxl + ciBpZiBub3QgaW5zdGFsbGVkIGJ5IHRoZSBzeXN0ZW0gb3duZXIuIn0seyJp + bmNlbnRpdmVJZCI6MzE1ODMyOCwibWFzdGVySW5jZW50aXZlSWQiOjMxNTgz + MjgsImVsaWdpYmlsaXR5IjoiQ09VTERfQkVfRUxJR0lCTEUiLCJyZXF1aXJl + ZERhdGEiOlt7ImFwcGxpY2FiaWxpdHlLZXkiOiJzeXN0ZW1TaXplIiwiZGlz + cGxheU5hbWUiOiJTeXN0ZW0gU2l6ZSIsImRlc2NyaXB0aW9uIjoiTmFtZXBs + YXRlIGNhcGFjaXR5IChrVykuIiwibWluVmFsdWUiOjAuNTAsIm1heFZhbHVl + IjoyNS4wMCwicXVhbnRpdHlVbml0Ijoia1cifV0sInRhcmlmZkNvZGUiOiJO + b25lIiwiaW5jZW50aXZlTmFtZSI6IlJlc2lkZW50aWFsIFNvbGFyIFJld2Fy + ZHMgUmViYXRlIiwibHNlSWQiOjEyNzIsImxzZU5hbWUiOiJDaXR5IFdhdGVy + IExpZ2h0ICYgUG93ZXIiLCJzZXJ2aWNlVHlwZSI6IlNPTEFSX1BWIiwiY3Vz + dG9tZXJDbGFzcyI6IlJFU0lERU5USUFMIiwic3RhcnREYXRlIjoiMjAxMy0w + MS0wMSIsImVuZERhdGUiOiIyMDE1LTAzLTAxIiwiaXNFeGhhdXN0ZWQiOnRy + dWUsInByb2plY3RUeXBlIjoic29sYXJQdiIsImluY2VudGl2ZVR5cGUiOiJy + ZWJhdGUiLCJyYXRlIjoxNTAwLjAwMDAwMCwicmF0ZVVuaXQiOiJDT1NUX1BF + Ul9VTklUIiwiZG9jdW1lbnRzIjpudWxsLCJqdXJpc2RpY3Rpb24iOiJ1dGls + aXR5IiwicXVhbnRpdHlLZXkiOnsia2V5TmFtZSI6InN5c3RlbVNpemVEYyIs + ImRpc3BsYXlOYW1lIjoiU3lzdGVtIFNpemUgREMiLCJkZXNjcmlwdGlvbiI6 + IlNpemUgb2YgdGhlIHNvbGFyIHN5c3RlbSBpbiBraWxvV2F0dHMgREMifSwi + cXVhbnRpdHlLZXlDYXAiOm51bGwsInN0YXRlIjoiSUwiLCJwZXJjZW50Q29z + dENhcCI6bnVsbCwicGVyY2VudENvc3RDYXBLZXkiOnsia2V5TmFtZSI6bnVs + bH0sInBheW1lbnRDYXAiOjc1MDAsInBheW1lbnREdXJhdGlvbiI6MSwiaW5j + ZW50aXZlUGFpZFRvIjoidGVuYW50T3JPd25lciIsInByb2plY3RUeXBlRXhj + bHVzaXZlIjpmYWxzZSwiYXBwbGljYWJpbGl0aWVzIjpbeyJhcHBsaWNhYmls + aXR5S2V5Ijoic3lzdGVtU2l6ZSIsImRpc3BsYXlOYW1lIjoiU3lzdGVtIFNp + emUiLCJkZXNjcmlwdGlvbiI6Ik5hbWVwbGF0ZSBjYXBhY2l0eSAoa1cpLiIs + Im1pblZhbHVlIjowLjUwLCJtYXhWYWx1ZSI6MjUuMDAsInF1YW50aXR5VW5p + dCI6ImtXIn1dLCJzdW1tYXJ5IjoiQ1dMUCdzIFNPTEFSIFJFV0FSRFMgcHJv + Z3JhbSBvZmZlcnMgcmViYXRlcyBvZiB1cCB0byAkMiw1MDAgcGVyIGhvdXNl + aG9sZCBhbmQgJDUsMDAwIHBlciBidXNpbmVzcyB0byBDV0xQIGVsZWN0cmlj + IGN1c3RvbWVycyB3aG8gaW5zdGFsbCBzb2xhciBlbGVjdHJpYyAtIGFsc28g + a25vd24gYXMgcGhvdG92b2x0YWljIChQVikgLXN5c3RlbXMgYXQgdGhlaXIg + cmVzaWRlbnRpYWwgb3IgY29tbWVyY2lhbCBmYWNpbGl0aWVzLiBUaGUgU09M + QVIgUkVXQVJEUyByZWJhdGUgcHJvZ3JhbSBpcyBiZWluZyBvZmZlcmVkIG9u + IGEgZmlyc3QtY29tZS9maXJzdC1zZXJ2ZWQgYmFzaXMgdW50aWwgZnVuZHMg + YnVkZ2V0ZWQgZm9yIHRoZSBwcm9ncmFtIGFyZSBleGhhdXN0ZWQuIFRoZSBy + ZWJhdGUgaXMgY2FsY3VsYXRlZCBhdCAkNTAwIHBlciBraWxvd2F0dCAoa1ct + REMpIG9mIHN5c3RlbSBjYXBhY2l0eSB1cCB0byB0aGUgbWF4aW11bSByZWJh + dGUgYW1vdW50cyBub3RlZCBhYm92ZS4gUXVhbGlmeWluZyBzeXN0ZW1zIGNh + biByYW5nZSBmcm9tIGEgbWluaW11bSBvZiAwLjUga1cgdG8gYSBtYXhpbXVt + IG9mIDI1IGtXLiIsInJlcXVpcmVtZW50cyI6IlF1YWxpZnlpbmcgUFYgcHJv + ZHVjdHMgbXVzdCBiZSBuZXcsIGNvdmVyZWQgYnkgd2FycmFudHkgJiBpbnN0 + YWxsZWQgaW4gYWNjb3JkYW5jZSB3aXRoIENpdHkgYnVpbGRpbmcgY29kZXMu + IFN5c3RlbXMgbXVzdCBiZSBpbnN0YWxsZWQgYWZ0ZXIgMDMtMDYtMjAxMy4g + SW5zdGFsbGF0aW9ucyBtdXN0IGNvbXBseSB3aXRoIGFsbCBhcHBsaWNhYmxl + IGZlZGVyYWwsIHN0YXRlLCAmIGxvY2FsIGNvZGVzICYgc3RhbmRhcmRzICYg + bXVzdCBiZSBlbGlnaWJsZSAmIGNvbXBseSB3aXRoIENXTFAncyBpbnRlcmNv + bm5lY3Rpb24gJiBuZXQgbWV0ZXJpbmcgcmVxdWlyZW1lbnRzLiBJbnZlcnRl + cnMgbXVzdCBiZSBjZXJ0aWZpZWQsIG1lZXRpbmcgdGhlIG1vc3QgY3VycmVu + dCBlZGl0aW9uIG9mIFVMIDE3NDEgJiBoYXZlIGEgbWluaW11bSA1IHllYXIg + d2FycmFudHkuIFBWIG1vZHVsZXMgbXVzdCBiZSBjZXJ0aWZpZWQsIG1lZXRp + bmcgdGhlIG1vc3QgY3VycmVudCBlZGl0aW9uIG9mIFVMIDE3MDMgJiBoYXZl + IGEgMjAgeWVhciB3YXJyYW50eS4gVGhlIG1pbmltdW0gc2l6ZSBQViBpbnN0 + YWxsYXRpb24gZWxpZ2libGUgZm9yIHRoaXMgcmViYXRlIGlzIDAuNUtXLiBF + bGlnaWJsZSBDdXN0b21lcnMgZGVmaW5lZCBhcyBidWlsZGluZyBvd25lcnMg + d2hvIGFyZSBkaXJlY3RseSBtZXRlcmVkIGVsZWN0cmljIGN1c3RvbWVycyBv + ZiBDV0xQIHdpdGggbm8gb3V0c3RhbmRpbmcgYWNjb3VudCBiYWxhbmNlIG1v + cmUgdGhhbiAzMyBkYXlzIHBhc3QgZHVlLiBDV0xQIHJlYmF0ZXMgYXJlIGF3 + YXJkZWQgdG8gZWxpZ2libGUgY3VzdG9tZXJzIG9ubHkgZm9yIHF1YWxpZnlp + bmcgUFYgcHJvZHVjdChzKSBpbnN0YWxsZWQgcGVybWFuZW50bHkgb24gcHJv + cGVydHkgb3duZWQgYnkgdGhlIENXTFAgY3VzdG9tZXIgYXQgdGhlIGxvY2F0 + aW9uIGlkZW50aWZpZWQgYXMgdGhlIGluc3RhbGxhdGlvbiBhZGRyZXNzIG9u + IHRoaXMgYXBwbGljYXRpb24uIn0seyJpbmNlbnRpdmVJZCI6MzE1ODM1Nywi + bWFzdGVySW5jZW50aXZlSWQiOjMxNTgzNTcsImVsaWdpYmlsaXR5IjoiQ09V + TERfQkVfRUxJR0lCTEUiLCJyZXF1aXJlZERhdGEiOlt7ImFwcGxpY2FiaWxp + dHlLZXkiOiJzeXN0ZW1TaXplQWNXIiwiZGlzcGxheU5hbWUiOiJTeXN0ZW0g + U2l6ZSBBQyBXIiwiZGVzY3JpcHRpb24iOiJTaXplIG9mIHRoZSBzb2xhciBz + eXN0ZW0gaW4gV2F0dHMgQUMiLCJtaW5WYWx1ZSI6MTAwMC4wMCwibWF4VmFs + dWUiOjEwMDAwMDAuMDAsInF1YW50aXR5VW5pdCI6IlcifV0sInRhcmlmZkNv + ZGUiOiJOb25lIiwiaW5jZW50aXZlTmFtZSI6IlJlc2lkZW50aWFsIFNvbGFy + L1Bob3Rvdm9sdGFpYyBSZWJhdGUiLCJsc2VJZCI6MTkzLCJsc2VOYW1lIjoi + TG9kaSBFbGVjdHJpYyBVdGlsaXR5IERlcGFydG1lbnQiLCJzZXJ2aWNlVHlw + ZSI6IlNPTEFSX1BWIiwiY3VzdG9tZXJDbGFzcyI6IlJFU0lERU5USUFMIiwi + c3RhcnREYXRlIjoiMjAxMy0wMS0wMSIsImVuZERhdGUiOiIyMDE0LTAxLTAx + IiwiaXNFeGhhdXN0ZWQiOnRydWUsInByb2plY3RUeXBlIjoic29sYXJQdiIs + ImluY2VudGl2ZVR5cGUiOiJyZWJhdGUiLCJyYXRlIjoxLjk0MDAwMCwicmF0 + ZVVuaXQiOiJDT1NUX1BFUl9VTklUIiwiZG9jdW1lbnRzIjpudWxsLCJqdXJp + c2RpY3Rpb24iOiJVdGlsaXR5IiwicXVhbnRpdHlLZXkiOnsia2V5TmFtZSI6 + InN5c3RlbVNpemVBY1ciLCJkaXNwbGF5TmFtZSI6IlN5c3RlbSBTaXplIEFD + IFciLCJkZXNjcmlwdGlvbiI6IlNpemUgb2YgdGhlIHNvbGFyIHN5c3RlbSBp + biBXYXR0cyBBQyJ9LCJxdWFudGl0eUtleUNhcCI6IjEwMDAwMDAiLCJzdGF0 + ZSI6IkNBIiwicGVyY2VudENvc3RDYXAiOjUwLCJwZXJjZW50Q29zdENhcEtl + eSI6eyJrZXlOYW1lIjoic3lzdGVtQ29zdCIsImRpc3BsYXlOYW1lIjoiU3lz + dGVtIENvc3QiLCJkZXNjcmlwdGlvbiI6IkNvc3Qgb2YgdGhlIHNvbGFyIHN5 + c3RlbSBpbiBVU0QuICJ9LCJwYXltZW50Q2FwIjo3MDAwLCJwYXltZW50RHVy + YXRpb24iOjEsImluY2VudGl2ZVBhaWRUbyI6InRlbmFudE9yT3duZXIiLCJw + cm9qZWN0VHlwZUV4Y2x1c2l2ZSI6ZmFsc2UsImFwcGxpY2FiaWxpdGllcyI6 + W3siYXBwbGljYWJpbGl0eUtleSI6InN5c3RlbVNpemVBY1ciLCJkaXNwbGF5 + TmFtZSI6IlN5c3RlbSBTaXplIEFDIFciLCJkZXNjcmlwdGlvbiI6IlNpemUg + b2YgdGhlIHNvbGFyIHN5c3RlbSBpbiBXYXR0cyBBQyIsIm1pblZhbHVlIjox + MDAwLjAwLCJtYXhWYWx1ZSI6MTAwMDAwMC4wMCwicXVhbnRpdHlVbml0Ijoi + VyJ9XSwic3VtbWFyeSI6IkxvZGkgRWxlY3RyaWMgVXRpbGl0eSBvZmZlcnMg + cmViYXRlcyB0byByZXNpZGVudGlhbCBjdXN0b21lcnMgd2hvIGluc3RhbGwg + cGhvdG92b2x0YWljIChQVikgc3lzdGVtcy4gVGhlIHJlYmF0ZSBwcm9ncmFt + IGlzIGZ1bmRlZCB3aXRoIGFwcHJveGltYXRlbHkgJDYgbWlsbGlvbiB0byBz + dXBwb3J0IHN5c3RlbXMgaW5zdGFsbGVkIGJldHdlZW4gSmFudWFyeSAxLCAy + MDA4IGFuZCBKYW51YXJ5IDEsIDIwMTguIFRoZSB0b3RhbCBhbW91bnQgYXZh + aWxhYmxlIGZvciBxdWFsaWZpZWQgaW5zdGFsbGF0aW9ucyBpbiAyMDEzIGlz + ICQzMDAsMDAwLCB3aXRoICQxMDAsMDAwIHJlc2VydmVkIGZvciByZXNpZGVu + dGlhbCBpbnN0YWxsYXRpb25zLiBUaGUgcmViYXRlIGZvciByZXNpZGVudGlh + bCBQViBzeXN0ZW1zIGluc3RhbGxlZCBpbiAyMDEzIGlzICQxLjk0L3dhdHQu + IiwicmVxdWlyZW1lbnRzIjoiTXVzdCBjb21wbHkgd2l0aCBlc3RhYmxpc2hl + ZCBTdGF0ZSBTdGFuZGFyZHMsIGFzIHdlbGwgYXMgTG9kaSBFbGVjdHJpYyBV + dGlsaXR5IEVuZ2luZWVyaW5nIFNwZWNpZmljYXRpb25zLiBBcyBub3RlZCBv + biB0aGUgcmViYXRlIGFwcGxpY2F0aW9uIGZvcm0sIHRoZXNlIHN0YW5kYXJk + cyBpbmNsdWRlIGZhdm9yYWJsZSBvciBhcHByb3ByaWF0ZSBwYW5lbCBvcmll + bnRhdGlvbiwgdGlsdCBvZiBzb2xhciBwYW5lbHMsIGFuZCBzeXN0ZW0gd2Fy + cmFudGllcy4gSW4gYWRkaXRpb24sIHByb2dyYW0gcGFydGljaXBhbnRzIHdp + bGwgYmUgcmVxdWlyZWQgdG8gcGVyZm9ybSBhIExvZGkgRWxlY3RyaWMgVXRp + bGl0eSBlbmVyZ3kgZWZmaWNpZW5jeSBhdWRpdCBhdCBubyBjaGFyZ2UuIFN5 + c3RlbSBtdXN0IGJlIG93bmVkIGJ5IHRoZSBjdXN0b21lciBhbmQgaW5zdGFs + bGVkIG9uIHRoZSBjdXN0b21lcuKAmXMgc2lkZSBvZiB0aGUgbWV0ZXIuIEFs + bCBQViBtb2R1bGVzLCBpbnZlcnRlcnMsIGFuZCBtZXRlcnMgbXVzdCBiZSBs + aXN0ZWQgb24gdGhlIENhbGlmb3JuaWEgRW5lcmd5IENvbW1pc3Npb27igJlz + IChDRUMpIEVsaWdpYmxlIEVxdWlwbWVudCBMaXN0IGFuZCBtdXN0IGJlIG5l + dyBhbmQgbm90IHByZXZpb3VzbHkgcGxhY2VkIGluIHNlcnZpY2UgaW4gYW55 + IG90aGVyIGxvY2F0aW9uIG9yIGZvciBhbnkgb3RoZXIgYXBwbGljYXRpb24u + In0seyJpbmNlbnRpdmVJZCI6MzE1ODUzOCwibWFzdGVySW5jZW50aXZlSWQi + OjMxNTg1MzgsImVsaWdpYmlsaXR5IjoiQ09VTERfQkVfRUxJR0lCTEUiLCJy + ZXF1aXJlZERhdGEiOlt7ImFwcGxpY2FiaWxpdHlLZXkiOiJzeXN0ZW1TaXpl + QWNXIiwiZGlzcGxheU5hbWUiOiJTeXN0ZW0gU2l6ZSBBQyBXIiwiZGVzY3Jp + cHRpb24iOiJTaXplIG9mIHRoZSBzb2xhciBzeXN0ZW0gaW4gV2F0dHMgQUMi + LCJtaW5WYWx1ZSI6MTAwMC4wMCwicXVhbnRpdHlVbml0IjoiVyJ9LHsiYXBw + bGljYWJpbGl0eUtleSI6InN5c3RlbU93bmVyc2hpcCIsImRpc3BsYXlOYW1l + IjoiU3lzdGVtIE93bmVyc2hpcCIsImRlc2NyaXB0aW9uIjoiSWYgaW5jZW50 + aXZlIHJlcXVpcmVzIHRoZSBzeXN0ZW0gdG8gYmUgb3duZWQgYnkgdGhlIEhv + c3Qgb3IgVGhpcmQgUGFydHkgdG8gcXVhbGlmeS4gICIsInJlcXVpcmVkVmFs + dWUiOiJob3N0Iiwib3BlcmF0b3IiOiI9In1dLCJ0YXJpZmZDb2RlIjoiTm9u + ZSIsImluY2VudGl2ZU5hbWUiOiJSZXNpZGVudGlhbCBTb2xhciBJbmNlbnRp + dmUiLCJsc2VJZCI6MTE0MCwibHNlTmFtZSI6IkNpdHkgb2YgQmlnZ3MgRWxl + Y3RyaWMgVXRpbGl0eSIsInNlcnZpY2VUeXBlIjoiU09MQVJfUFYiLCJjdXN0 + b21lckNsYXNzIjoiUkVTSURFTlRJQUwiLCJzdGFydERhdGUiOiIyMDEzLTAx + LTAxIiwiZW5kRGF0ZSI6IjIwMTQtMDEtMDEiLCJpc0V4aGF1c3RlZCI6dHJ1 + ZSwicHJvamVjdFR5cGUiOiJzb2xhclB2IiwiaW5jZW50aXZlVHlwZSI6InJl + YmF0ZSIsInJhdGUiOjEuNjUwMDAwLCJyYXRlVW5pdCI6IkNPU1RfUEVSX1VO + SVQiLCJkb2N1bWVudHMiOm51bGwsImp1cmlzZGljdGlvbiI6InV0aWxpdHki + LCJxdWFudGl0eUtleSI6eyJrZXlOYW1lIjoic3lzdGVtU2l6ZUFjVyIsImRp + c3BsYXlOYW1lIjoiU3lzdGVtIFNpemUgQUMgVyIsImRlc2NyaXB0aW9uIjoi + U2l6ZSBvZiB0aGUgc29sYXIgc3lzdGVtIGluIFdhdHRzIEFDIn0sInF1YW50 + aXR5S2V5Q2FwIjoiMzAwMCIsInN0YXRlIjoiQ0EiLCJwZXJjZW50Q29zdENh + cCI6bnVsbCwicGVyY2VudENvc3RDYXBLZXkiOnsia2V5TmFtZSI6bnVsbH0s + InBheW1lbnRDYXAiOm51bGwsInBheW1lbnREdXJhdGlvbiI6MSwiaW5jZW50 + aXZlUGFpZFRvIjoib3duZXJPckNvbnRyYWN0b3IiLCJwcm9qZWN0VHlwZUV4 + Y2x1c2l2ZSI6ZmFsc2UsImFwcGxpY2FiaWxpdGllcyI6W3siYXBwbGljYWJp + bGl0eUtleSI6InN5c3RlbU93bmVyc2hpcCIsImRpc3BsYXlOYW1lIjoiU3lz + dGVtIE93bmVyc2hpcCIsImRlc2NyaXB0aW9uIjoiSWYgaW5jZW50aXZlIHJl + cXVpcmVzIHRoZSBzeXN0ZW0gdG8gYmUgb3duZWQgYnkgdGhlIEhvc3Qgb3Ig + VGhpcmQgUGFydHkgdG8gcXVhbGlmeS4gICIsInJlcXVpcmVkVmFsdWUiOiJo + b3N0Iiwib3BlcmF0b3IiOiI9In0seyJhcHBsaWNhYmlsaXR5S2V5Ijoic3lz + dGVtU2l6ZUFjVyIsImRpc3BsYXlOYW1lIjoiU3lzdGVtIFNpemUgQUMgVyIs + ImRlc2NyaXB0aW9uIjoiU2l6ZSBvZiB0aGUgc29sYXIgc3lzdGVtIGluIFdh + dHRzIEFDIiwibWluVmFsdWUiOjEwMDAuMDAsInF1YW50aXR5VW5pdCI6Ilci + fV0sInN1bW1hcnkiOiJUaGUgQ2l0eSBvZiBCaWdncyAoXCJDaXR5XCIpIG9m + ZmVycyBpbmNlbnRpdmVzIHRvIGVuY291cmFnZSB0aGUgaW5zdGFsbGF0aW9u + IG9mIGhpZ2gtcXVhbGl0eSBzb2xhciBwaG90b3ZvbHRhaWMgKFwiUFZcIikg + c3lzdGVtcy4gQ2FsaWZvcm5pYSdzIFNlbmF0ZSBCaWxsIDEgKFwiU0IxXCIp + LCBwYXNzZWQgaW4gQXVndXN0IDIwMDYsIHNldCBhIHN0YXRld2lkZSBnb2Fs + IHRvIGFkZCAzLDAwMCBNVyBvZiBuZXcgUFYgc3lzdGVtcyBvdmVyIHRlbiB5 + ZWFycy4gVGhlIG91dGNvbWUgb2YgdGhlIHByb2dyYW0gaXMgZXhhbWluZWQg + YXQgdGhlIGVuZCBvZiBlYWNoIHllYXIgYW5kIGFwcHJvcHJpYXRlIHJldmlz + aW9ucyBhcmUgbWFkZSB0byBlbnN1cmUgcHJvZ3Jlc3MgdG93YXJkIHByb2dy + YW0gZ29hbHMgYW5kIGVxdWl0eSBhbW9uZyByYXRlIGNsYXNzZXMuIFBlciBT + QjEgcmVxdWlyZW1lbnRzLCBhIHNvbGFyIFBWIHJlYmF0ZSBidWRnZXQgd2ls + bCBiZSBtYWRlIGF2YWlsYWJsZSB0aHJvdWdoIDIwMTcuIFRoZSBDaXR5J3Mg + U0IxIFByb2dyYW0gaXMgZnVuZGVkIGJ5IGVsZWN0cmljIHV0aWxpdHkgY3Vz + dG9tZXIgcmV2ZW51ZS4gSW4gYWNjb3JkYW5jZSB3aXRoIEFzc2VtYmx5IEJp + bGwgMTg5MCBwdWJsaWNseS1vd25lZCB1dGlsaXRpZXMgYXJlIHJlcXVpcmVk + IHRvIGNvbGxlY3QgYSBzZXBhcmF0ZSBzdXJjaGFyZ2UgdG8gYmUgdXNlZCBm + b3IgXCJwdWJsaWMgYmVuZWZpdHNcIiAoUEIpIHByb2dyYW1zLiBUaGUgZXhw + ZW5kaXR1cmUgb2YgdGhvc2UgZnVuZHMgaXMgZW50aXJlbHkgdGhlIGRpc2Ny + ZXRpb24gb2YgbG9jYWxseSBlbGVjdGVkIGdvdmVybmluZyBib2RpZXMgc28g + bG9uZyBhcyB0aGUgZXhwZW5kaXR1cmVzIGZpdCB3aXRoaW4gYSBjYXRlZ29y + eSBpbmNsdWRlZCBpbiBBQiAxODkwLiBUaGUgQ2l0eSdzIFNCMSBQcm9ncmFt + IGlzIGVsaWdpYmxlIGZvciB1c2Ugb2YgUHVibGljIEJlbmVmaXRzIEZ1bmRz + IChQQkYpLiIsInJlcXVpcmVtZW50cyI6IlRoZSBDaXR5J3MgU29sYXIgUHJv + Z3JhbSBpcyBhdmFpbGFibGUgdG8gYWxsIENpdHkgZWxlY3RyaWMgdXRpbGl0 + eSBjdXN0b21lcnMuIFRvIGJlIGVsaWdpYmxlIGZvciBhIHJlYmF0ZSwgdGhl + IHN5c3RlbSBtdXN0IGJlIG93bmVkIGJ5IHRoZSBjdXN0b21lciBhbmQgaW5z + dGFsbGVkIG9uIHRoZSBjdXN0b21lcidzIHNpZGUgb2YgdGhlIG1ldGVyLiBM + ZWFzZWQgc3lzdGVtcyBkbyBub3QgcXVhbGlmeSBmb3IgdGhlIENpdHkgcmVi + YXRlcy4gVGhlIGN1c3RvbWVyIG11c3Qgc3VibWl0IGEgUmViYXRlIEFwcGxp + Y2F0aW9uIGFuZCByZWNlaXZlIGEgUmViYXRlIFJlc2VydmF0aW9uIENvbmZp + cm1hdGlvbiBsZXR0ZXIgZnJvbSB0aGUgQ2l0eSBwcmlvciB0byB0aGUgYmVn + aW5uaW5nIG9mIGluc3RhbGxhdGlvbiBhbmQgZmluYWwgaW50ZXJjb25uZWN0 + aW9uIGF1dGhvcml6YXRpb24uIEFsbCBzeXN0ZW1zIG11c3QgYmUgaW5zdGFs + bGVkIGJ5IGFwcHJvcHJpYXRlbHkgbGljZW5zZWQgY29udHJhY3RvcnMgaW4g + YWNjb3JkYW5jZSB3aXRoIHJ1bGVzIGFuZCByZWd1bGF0aW9ucyBhZG9wdGVk + IGJ5IHRoZSBTdGF0ZSBvZiBDYWxpZm9ybmlhIENvbnRyYWN0b3JzIFN0YXRl + IExpY2Vuc2luZyBCb2FyZCAoXCJDU0xCXCIpIGFuZCBDaXR5IEJ1aWxkaW5n + IENvZGVzLiBDb250cmFjdG9ycyBtdXN0IGhhdmUgYW4gYWN0aXZlIEEsIEIs + IEMtMTAgbGljZW5zZSwgb3IgQy00NiBsaWNlbnNlIGZvciBpbnN0YWxsaW5n + IFBWIHN5c3RlbXMuIEFsbCBQViBtb2R1bGVzLCBpbnZlcnRlcnMsIGFuZCBt + ZXRlcnMgbXVzdCBiZSBsaXN0ZWQgb24gdGhlIENhbGlmb3JuaWEgRW5lcmd5 + IENvbW1pc3Npb27igJlzIChcIkNFQ1wiKSBFbGlnaWJsZSBFcXVpcG1lbnQg + TGlzdCBhbmQgbXVzdCBiZSBuZXcgYW5kIG5vdCBiZWVuIHByZXZpb3VzbHkg + cGxhY2VkIGluIHNlcnZpY2UgaW4gYW55IG90aGVyIGxvY2F0aW9uIG9yIGZv + ciBhbnkgb3RoZXIgYXBwbGljYXRpb24uIn0seyJpbmNlbnRpdmVJZCI6MzE1 + ODY1NiwibWFzdGVySW5jZW50aXZlSWQiOjMxNTg2NTYsImVsaWdpYmlsaXR5 + IjoiRUxJR0lCTEUiLCJ0YXJpZmZDb2RlIjoiTm9uZSIsImluY2VudGl2ZU5h + bWUiOiJTb2xhci1FbGVjdHJpYyAoUFYpIFJlYmF0ZSBQcm9ncmFtIiwibHNl + SWQiOjQwNiwibHNlTmFtZSI6Ik1pbm5lc290YSBQb3dlciIsInNlcnZpY2VU + eXBlIjoiU09MQVJfUFYiLCJjdXN0b21lckNsYXNzIjoiUkVTSURFTlRJQUwi + LCJzdGFydERhdGUiOiIyMDE0LTAxLTAxIiwiZW5kRGF0ZSI6IjIwMTUtMDEt + MDEiLCJpc0V4aGF1c3RlZCI6dHJ1ZSwicHJvamVjdFR5cGUiOiJzb2xhclB2 + IiwiaW5jZW50aXZlVHlwZSI6InJlYmF0ZSIsInJhdGUiOjEwMDAuMDAwMDAw + LCJyYXRlVW5pdCI6IkNPU1RfUEVSX1VOSVQiLCJkb2N1bWVudHMiOm51bGws + Imp1cmlzZGljdGlvbiI6InV0aWxpdHkiLCJxdWFudGl0eUtleSI6eyJrZXlO + YW1lIjoic3lzdGVtU2l6ZURjIiwiZGlzcGxheU5hbWUiOiJTeXN0ZW0gU2l6 + ZSBEQyIsImRlc2NyaXB0aW9uIjoiU2l6ZSBvZiB0aGUgc29sYXIgc3lzdGVt + IGluIGtpbG9XYXR0cyBEQyJ9LCJxdWFudGl0eUtleUNhcCI6bnVsbCwic3Rh + dGUiOiJNTiIsInBlcmNlbnRDb3N0Q2FwIjo2MCwicGVyY2VudENvc3RDYXBL + ZXkiOnsia2V5TmFtZSI6InN5c3RlbUNvc3QiLCJkaXNwbGF5TmFtZSI6IlN5 + c3RlbSBDb3N0IiwiZGVzY3JpcHRpb24iOiJDb3N0IG9mIHRoZSBzb2xhciBz + eXN0ZW0gaW4gVVNELiAifSwicGF5bWVudENhcCI6MjAwMDAsInBheW1lbnRE + dXJhdGlvbiI6MSwiaW5jZW50aXZlUGFpZFRvIjoidGVuYW50T3JPd25lciIs + InByb2plY3RUeXBlRXhjbHVzaXZlIjpmYWxzZSwiYXBwbGljYWJpbGl0aWVz + IjpbXSwic3VtbWFyeSI6Ik1pbm5lc290YSBQb3dlciBvZmZlcnMgYSByZWJh + dGUgb2YgJDEsMDAwIHBlciBraWxvd2F0dCAoa1cpIERDIGZvciBncmlkLWNv + bm5lY3RlZCBzb2xhci1lbGVjdHJpYyAoUFYpIHN5c3RlbXMsIHdpdGggYSBt + YXhpbXVtIGF3YXJkIG9mICQyMCwwMDAgcGVyIGN1c3RvbWVyIG9yIDYwJSBp + bnN0YWxsZWQgY29zdHMgcGVyIGN1c3RvbWVyLiBUaGlzIHByb2dyYW0sIHdo + aWNoIGJlZ2FuIGluIDIwMDQsIGlzIGF2YWlsYWJsZSB0byB0aGUgdXRpbGl0 + eSdzIHJlc2lkZW50aWFsIGN1c3RvbWVycyB0aGF0IHJlY2VpdmUgcmV0YWls + IGVsZWN0cmljIHNlcnZpY2UsIHN1YmplY3QgdG8gYXZhaWxhYmlsaXR5IG9m + IGZ1bmRpbmcuIE9yaWdpbmFsbHksIE1pbm5lc290YSBQb3dlcidzIHJlYmF0 + ZSBmb3IgUFYgc3lzdGVtcyBjb3VsZCBiZSBjb21iaW5lZCB3aXRoIHRoZSBN + aW5uZXNvdGEgT2ZmaWNlIG9mIEVuZXJneSBTZWN1cml0eSdzIFNvbGFyLUVs + ZWN0cmljIChQVikgUmViYXRlIFByb2dyYW07IGhvd2V2ZXIsIHRoZSBzdGF0 + ZSBwcm9ncmFtIGlzIG5vIGxvbmdlciBhdmFpbGFibGUuIiwicmVxdWlyZW1l + bnRzIjoiQ3VzdG9tZXJzIGNhbiByZWNlaXZlIGEgcmViYXRlIGZvciBpbnN0 + YWxsaW5nIGEgZ3JpZC1jb25uZWN0ZWQgc29sYXIgcGhvdG92b2x0YWljIGVs + ZWN0cmljIHN5c3RlbS4gQWxsIGNvbnNlcnZhdGlvbiBwcm9ncmFtLWVsaWdp + YmxlIGN1c3RvbWVyIGNsYXNzZXMgY2FuIGFwcGx5LiBHZXQgcHJlYXBwcm92 + YWwgb2YgdGhlIHByb2plY3QgcHJpb3IgdG8gcHVyY2hhc2UgYW5kIGluc3Rh + bGxhdGlvbi4gSW5zdGFsbCBuZXcgY29tcG9uZW50cywgaW5jbHVkaW5nIGFs + bCBtYWpvciBzeXN0ZW0gY29tcG9uZW50cywgdXNpbmcgYSBzb2xhciBlbmVy + Z3kgaW5zdGFsbGVyLiBPd24gdGhlIFBWIHN5c3RlbSBhbmQgdGhlIHByb3Bl + cnR5L2J1aWxkaW5nIHdoZXJlIHRoZSBzeXN0ZW0gd2lsbCBiZSBpbnN0YWxs + ZWQuIENvbXBsZXRlIHRoZSBpbnN0YWxsYXRpb24gd2l0aGluIHRoZSBlYXJs + aWVyIG9mIHRocmVlIG1vbnRocyBvZiByZWNlaXZpbmcgYXBwcm92YWwgb2Yg + dGhlIFN5c3RlbSBSZXZpZXcgRm9ybSBhbmQgYW4gaW50ZXJjb25uZWN0aW9u + IGFncmVlbWVudCBvciBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgcHJvZ3JhbSBj + YWxlbmRhciB5ZWFyLiBNdXN0IGhhdmUgY29tcGxldGVkIGFuIGVuZXJneSBh + bmFseXNpcyBhc3Nlc3NtZW50IHdpdGhpbiB0aGUgaW1tZWRpYXRlbHkgcHJl + Y2VkaW5nIDI0IG1vbnRocy4gWW91IG1heSBub3QgaW5zdGFsbCBhIHN5c3Rl + bSB3aXRoIGtXaCBnZW5lcmF0aW9uIGNhcGFjaXR5IG9mIG1vcmUgdGhhbiAx + MjAlIG9mIHRoZSBwcmVtaXNlJ3MgdHdlbHZlIG1vbnRocyBlbmVyZ3kgY29u + c3VtcHRpb24uIExpbWl0ZWQgdG8gb25lIHJlYmF0ZSBwZXIgY3VzdG9tZXIs + IHBlciB5ZWFyIGJhc2VkIG9uIG1hcmtldCBhY3Rpdml0eSBhbmQgZG9sbGFy + IGF2YWlsYWJpbGl0eS4ifSx7ImluY2VudGl2ZUlkIjozMTU4NzUxLCJtYXN0 + ZXJJbmNlbnRpdmVJZCI6MzE1ODc1MSwiZWxpZ2liaWxpdHkiOiJDT1VMRF9C + RV9FTElHSUJMRSIsInJlcXVpcmVkRGF0YSI6W3siYXBwbGljYWJpbGl0eUtl + eSI6InN5c3RlbVNpemVEYyIsImRpc3BsYXlOYW1lIjoiU3lzdGVtIFNpemUg + REMiLCJkZXNjcmlwdGlvbiI6IlNpemUgb2YgdGhlIHNvbGFyIHN5c3RlbSBp + biBraWxvV2F0dHMgREMiLCJyZXF1aXJlZFZhbHVlIjoiMTAiLCJxdWFudGl0 + eVVuaXQiOiJrVyIsIm9wZXJhdG9yIjoiPD0ifV0sInRhcmlmZkNvZGUiOiJO + b25lIiwiaW5jZW50aXZlTmFtZSI6IlNvbGFyIFBvd2VyIEhvbWUgUmViYXRl + IChQVikiLCJsc2VJZCI6MzA4NiwibHNlTmFtZSI6IkphY2tzb24gRWxlY3Ry + aWMgTWVtYmVyIENvcnAiLCJzZXJ2aWNlVHlwZSI6IlNPTEFSX1BWIiwiY3Vz + dG9tZXJDbGFzcyI6IlJFU0lERU5USUFMIiwic3RhcnREYXRlIjoiMjAxMy0w + MS0wMSIsImVuZERhdGUiOm51bGwsImlzRXhoYXVzdGVkIjpmYWxzZSwicHJv + amVjdFR5cGUiOiJzb2xhclB2IiwiaW5jZW50aXZlVHlwZSI6InJlYmF0ZSIs + InJhdGUiOjQ1MC4wMDAwMDAsInJhdGVVbml0IjoiQ09TVF9QRVJfVU5JVCIs + ImRvY3VtZW50cyI6bnVsbCwianVyaXNkaWN0aW9uIjoidXRpbGl0eSIsInF1 + YW50aXR5S2V5Ijp7ImtleU5hbWUiOiJzeXN0ZW1TaXplRGMiLCJkaXNwbGF5 + TmFtZSI6IlN5c3RlbSBTaXplIERDIiwiZGVzY3JpcHRpb24iOiJTaXplIG9m + IHRoZSBzb2xhciBzeXN0ZW0gaW4ga2lsb1dhdHRzIERDIn0sInF1YW50aXR5 + S2V5Q2FwIjpudWxsLCJzdGF0ZSI6IkdBIiwicGVyY2VudENvc3RDYXAiOm51 + bGwsInBlcmNlbnRDb3N0Q2FwS2V5Ijp7ImtleU5hbWUiOm51bGx9LCJwYXlt + ZW50Q2FwIjo0NTAwLCJwYXltZW50RHVyYXRpb24iOjEsImluY2VudGl2ZVBh + aWRUbyI6InRlbmFudE9yT3duZXIiLCJwcm9qZWN0VHlwZUV4Y2x1c2l2ZSI6 + ZmFsc2UsImFwcGxpY2FiaWxpdGllcyI6W3siYXBwbGljYWJpbGl0eUtleSI6 + InN5c3RlbVNpemVEYyIsImRpc3BsYXlOYW1lIjoiU3lzdGVtIFNpemUgREMi + LCJkZXNjcmlwdGlvbiI6IlNpemUgb2YgdGhlIHNvbGFyIHN5c3RlbSBpbiBr + aWxvV2F0dHMgREMiLCJyZXF1aXJlZFZhbHVlIjoiMTAiLCJxdWFudGl0eVVu + aXQiOiJrVyIsIm9wZXJhdG9yIjoiPD0ifV0sInN1bW1hcnkiOiJKYWNrc29u + IEVsZWN0cmljIE1lbWJlcnNoaXAgQ29ycG9yYXRpb24gKEphY2tzb24gRU1D + KSwgd2hpY2ggc2VydmVzIG92ZXIgMTg1LDAwMCByZXNpZGVudGlhbCBjdXN0 + b21lcnMsIG9mZmVycyByZWJhdGVzIHRvIHRob3NlIGN1c3RvbWVycyB3aG8g + aW5zdGFsbCBwaG90b3ZvbHRhaWMgKFBWKSBzeXN0ZW1zLiBJbiBleGNoYW5n + ZSBmb3IgdGhlc2UgaW5jZW50aXZlcywgSmFja3NvbiBFTUMgcmV0YWlucyB0 + aGUgcmlnaHRzIHRvIGFueSByZW5ld2FibGUgZW5lcmd5IGNyZWRpdHMgKFJF + Q3MpIGFzc29jaWF0ZWQgd2l0aCB0aGUgZW5lcmd5IHByb2R1Y3Rpb24gb2Yg + dGhlc2Ugc3lzdGVtcy4gUmVzaWRlbnRpYWwgY3VzdG9tZXJzIG1heSBxdWFs + aWZ5IGZvciB0aGUgb25lLXRpbWUgcmViYXRlIG9mICQ0NTAgcGVyIGtpbG93 + YXR0IChrVykgb2YgREMgaW5zdGFsbGVkLCB1cCB0byAxMCBrVy4gSW4gb3Jk + ZXIgdG8gcXVhbGlmeSwgdGhleSBtdXN0IHNlbGVjdCBhIHRyYWluZWQgYW5k + IGNlcnRpZmllZCBOb3J0aCBBbWVyaWNhbiBCb2FyZCBvZiBDZXJ0aWZpZWQg + RW5lcmd5IFByYWN0aXRpb25lcnMgKE5BQkNFUCkgY29udHJhY3RvciB0byBp + bnN0YWxsIHRoZSBzeXN0ZW0sIHdoaWNoIG11c3QgYmUgY2VydGlmaWVkIGJ5 + IHRoZSBGbG9yaWRhIFNvbGFyIEVuZXJneSBDZW50ZXIuIEluIGFkZGl0aW9u + LCB0aGUgY3VzdG9tZXIncyBzeXN0ZW0gbXVzdCBtZWV0IEphY2tzb24gRU1D + IHJlcXVpcmVtZW50cyBhbmQgYmUgcHJlLWFwcHJvdmVkIGZvciBpbnRlcmNv + bm5lY3Rpb24gYW5kIG5ldCBtZXRlcmluZy4iLCJyZXF1aXJlbWVudHMiOiJN + dXN0IGJlIGEgSmFja3NvbiBFTUMgY3VzdG9tZXIgYW5kIG93biB0aGUgcHJv + cGVydHkuIFRoZSByb29mIG11c3QgYmUgaW4gZ29vZCBjb25kaXRpb24gYW5k + IGFibGUgdG8gc3VwcG9ydCBhIHNvbGFyIHN5c3RlbSBpbnN0YWxsYXRpb24u + IEEgcm9vZiBpbnN0YWxsYXRpb24gc2hvdWxkIGZhY2Ugc291dGh3YXJkLiBU + aGUgcHJvcGVydHkgbXVzdCBoYXZlIG1pbmltYWwgc2hhZGluZyBieSB0cmVl + cyBhbmQgc3RydWN0dXJlcy4gVGhlIHByb3BlcnR5IG11c3QgYmUgZnJlZSBm + cm9tIGRlZWQgcmVzdHJpY3Rpb25zIG9uIHNvbGFyIGVuZXJneSBzeXN0ZW1z + LiBPbmx5IGluc3RhbGxhdGlvbnMgdGhhdCBoYXZlIGdvbmUgdGhyb3VnaCBv + dXIgcmV2aWV3IHByb2Nlc3MgYW5kIGhhdmUgYmVlbiBpbnN0YWxsZWQgYW5k + IGluc3BlY3RlZCBhY2NvcmRpbmcgdG8gcHJvZ3JhbSBndWlkZWxpbmVzIGFy + ZSBlbGlnaWJsZSBmb3IgcmViYXRlcy4ifSx7ImluY2VudGl2ZUlkIjozMTU4 + Nzg0LCJtYXN0ZXJJbmNlbnRpdmVJZCI6MzE1ODc4NCwiZWxpZ2liaWxpdHki + OiJFTElHSUJMRSIsInRhcmlmZkNvZGUiOiJOb25lIiwiaW5jZW50aXZlTmFt + ZSI6IlJlc2lkZW50aWFsIFJlbmV3YWJsZSBFbmVyZ3kgVGF4IENyZWRpdCIs + ImxzZUlkIjoxMDAyODMsImxzZU5hbWUiOiJTdGF0ZSBvZiBBcml6b25hIElu + Y2VudGl2ZXMiLCJzZXJ2aWNlVHlwZSI6IlNPTEFSX1BWIiwiY3VzdG9tZXJD + bGFzcyI6IlJFU0lERU5USUFMIiwic3RhcnREYXRlIjoiMjAwOC0xMi0zMSIs + ImVuZERhdGUiOiIyMDE2LTEyLTMxIiwiaXNFeGhhdXN0ZWQiOmZhbHNlLCJw + cm9qZWN0VHlwZSI6InNvbGFyUHYiLCJpbmNlbnRpdmVUeXBlIjoidGF4Q3Jl + ZGl0IiwicmF0ZSI6MzAuMDAwMDAwLCJyYXRlVW5pdCI6IlBFUkNFTlRBR0Ui + LCJkb2N1bWVudHMiOm51bGwsImp1cmlzZGljdGlvbiI6ImZlZGVyYWwiLCJx + dWFudGl0eUtleSI6eyJrZXlOYW1lIjoic3lzdGVtQ29zdE1pbnVzSW5jZW50 + aXZlcyIsImRpc3BsYXlOYW1lIjoiU3lzdGVtIENvc3QgQWZ0ZXIgSW5jZW50 + aXZlcyIsImRlc2NyaXB0aW9uIjoiQ29zdCBvZiB0aGUgc29sYXIgc3lzdGVt + IGFmdGVyIGluY2VudGl2ZXMsIHJlYmF0ZXMgYW5kIHRheCBjcmVkaXRzIn0s + InF1YW50aXR5S2V5Q2FwIjpudWxsLCJzdGF0ZSI6IkFaIiwicGVyY2VudENv + c3RDYXAiOm51bGwsInBlcmNlbnRDb3N0Q2FwS2V5Ijp7ImtleU5hbWUiOm51 + bGx9LCJwYXltZW50Q2FwIjpudWxsLCJwYXltZW50RHVyYXRpb24iOjEsImlu + Y2VudGl2ZVBhaWRUbyI6InRlbmFudE9yT3duZXIiLCJwcm9qZWN0VHlwZUV4 + Y2x1c2l2ZSI6ZmFsc2UsImFwcGxpY2FiaWxpdGllcyI6W10sInN1bW1hcnki + OiJBIHRheHBheWVyIG1heSBjbGFpbSBhIGNyZWRpdCBvZiAzMCUgb2YgcXVh + bGlmaWVkIGV4cGVuZGl0dXJlcywgYWZ0ZXIgZGVkdWN0aW5nIGluY2VudGl2 + ZXMsIHdpdGggbm8gdXBwZXIgbGltaXQgZm9yIGEgc3lzdGVtIHRoYXQgc2Vy + dmVzIGEgZHdlbGxpbmcgdW5pdCBsb2NhdGVkIGluIHRoZSBVbml0ZWQgU3Rh + dGVzIHRoYXQgaXMgb3duZWQgYW5kIHVzZWQgYXMgYSByZXNpZGVuY2UgYnkg + dGhlIHRheHBheWVyLiBFeHBlbmRpdHVyZXMgd2l0aCByZXNwZWN0IHRvIHRo + ZSBlcXVpcG1lbnQgYXJlIHRyZWF0ZWQgYXMgbWFkZSB3aGVuIHRoZSBpbnN0 + YWxsYXRpb24gaXMgY29tcGxldGVkLiBJZiB0aGUgaW5zdGFsbGF0aW9uIGlz + IGF0IGEgbmV3IGhvbWUsIHRoZSBcInBsYWNlZCBpbiBzZXJ2aWNlXCIgZGF0 + ZSBpcyB0aGUgZGF0ZSBvZiBvY2N1cGFuY3kgYnkgdGhlIGhvbWVvd25lci4g + RXhwZW5kaXR1cmVzIGluY2x1ZGUgbGFib3IgY29zdHMgZm9yIG9uLXNpdGUg + cHJlcGFyYXRpb24sIGFzc2VtYmx5IG9yIG9yaWdpbmFsIHN5c3RlbSBpbnN0 + YWxsYXRpb24sIGFuZCBmb3IgcGlwaW5nIG9yIHdpcmluZyB0byBpbnRlcmNv + bm5lY3QgYSBzeXN0ZW0gdG8gdGhlIGhvbWUuIElmIHRoZSBmZWRlcmFsIHRh + eCBjcmVkaXQgZXhjZWVkcyB0YXggbGlhYmlsaXR5LCB0aGUgZXhjZXNzIGFt + b3VudCBtYXkgYmUgY2FycmllZCBmb3J3YXJkIHRvIHRoZSBzdWNjZWVkaW5n + IHRheGFibGUgeWVhci4gVGhlIGV4Y2VzcyBjcmVkaXQgbWF5IGJlIGNhcnJp + ZWQgZm9yd2FyZCB1bnRpbCAyMDE2LCBidXQgaXQgaXMgdW5jbGVhciB3aGV0 + aGVyIHRoZSB1bnVzZWQgdGF4IGNyZWRpdCBjYW4gYmUgY2FycmllZCBmb3J3 + YXJkIGFmdGVyIHRoZW4uIiwicmVxdWlyZW1lbnRzIjoiVGhlIHN5c3RlbSBt + dXN0IGJlIGNlcnRpZmllZCBieSB0aGUgU29sYXIgUmF0aW5nIGFuZCBDZXJ0 + aWZpY2F0aW9uIENvcnBvcmF0aW9uIChTUkNDKSBvciBhIGNvbXBhcmFibGUg + ZW50aXR5IGVuZG9yc2VkIGJ5IHRoZSBnb3Zlcm5tZW50IG9mIHRoZSBzdGF0 + ZSBpbiB3aGljaCB0aGUgcHJvcGVydHkgaXMgaW5zdGFsbGVkLiJ9LHsiaW5j + ZW50aXZlSWQiOjMxNTg4MzksIm1hc3RlckluY2VudGl2ZUlkIjozMTU4ODM5 + LCJlbGlnaWJpbGl0eSI6IkVMSUdJQkxFIiwidGFyaWZmQ29kZSI6Ik5vbmUi + LCJpbmNlbnRpdmVOYW1lIjoiUmVzaWRlbnRpYWwgUmVuZXdhYmxlIEVuZXJn + eSBUYXggQ3JlZGl0IiwibHNlSWQiOjEwMDI4MSwibHNlTmFtZSI6IlN0YXRl + IG9mIENhbGlmb3JuaWEgSW5jZW50aXZlcyIsInNlcnZpY2VUeXBlIjoiU09M + QVJfUFYiLCJjdXN0b21lckNsYXNzIjoiUkVTSURFTlRJQUwiLCJzdGFydERh + dGUiOiIyMDA2LTAxLTAxIiwiZW5kRGF0ZSI6IjIwMTYtMTItMzEiLCJpc0V4 + aGF1c3RlZCI6ZmFsc2UsInByb2plY3RUeXBlIjoic29sYXJQdiIsImluY2Vu + dGl2ZVR5cGUiOiJ0YXhDcmVkaXQiLCJyYXRlIjozMC4wMDAwMDAsInJhdGVV + bml0IjoiUEVSQ0VOVEFHRSIsImRvY3VtZW50cyI6bnVsbCwianVyaXNkaWN0 + aW9uIjoiZmVkZXJhbCIsInF1YW50aXR5S2V5Ijp7ImtleU5hbWUiOiJzeXN0 + ZW1Db3N0TWludXNJbmNlbnRpdmVzIiwiZGlzcGxheU5hbWUiOiJTeXN0ZW0g + Q29zdCBBZnRlciBJbmNlbnRpdmVzIiwiZGVzY3JpcHRpb24iOiJDb3N0IG9m + IHRoZSBzb2xhciBzeXN0ZW0gYWZ0ZXIgaW5jZW50aXZlcywgcmViYXRlcyBh + bmQgdGF4IGNyZWRpdHMifSwicXVhbnRpdHlLZXlDYXAiOm51bGwsInN0YXRl + IjoiQ0EiLCJwZXJjZW50Q29zdENhcCI6bnVsbCwicGVyY2VudENvc3RDYXBL + ZXkiOnsia2V5TmFtZSI6bnVsbH0sInBheW1lbnRDYXAiOm51bGwsInBheW1l + bnREdXJhdGlvbiI6MSwiaW5jZW50aXZlUGFpZFRvIjoidGVuYW50T3JPd25l + ciIsInByb2plY3RUeXBlRXhjbHVzaXZlIjpmYWxzZSwiYXBwbGljYWJpbGl0 + aWVzIjpbXSwic3VtbWFyeSI6IkVzdGFibGlzaGVkIGJ5IFRoZSBFbmVyZ3kg + UG9saWN5IEFjdCBvZiAyMDA1LCB0aGUgZmVkZXJhbCB0YXggY3JlZGl0IGZv + ciByZXNpZGVudGlhbCBlbmVyZ3kgcHJvcGVydHkgaW5pdGlhbGx5IGFwcGxp + ZWQgdG8gc29sYXItZWxlY3RyaWMgJiBzb2xhciB3YXRlciBoZWF0aW5nLiBP + dGhlciBrZXkgcmV2aXNpb25zIGluY2x1ZGVkIGFuIDgteWVhciBleHRlbnNp + b24gb2YgdGhlIGNyZWRpdCB0byAxMi8zMS8yMDE2OyB0aGUgYWJpbGl0eSB0 + byB0YWtlIHRoZSBjcmVkaXQgYWdhaW5zdCB0aGUgYWx0ZXJuYXRpdmUgbWlu + aW11bSB0YXg7ICYgdGhlIHJlbW92YWwgb2YgdGhlICQyMDAwIGNyZWRpdCBs + aW1pdCBmb3Igc29sYXItZWxlY3RyaWMgYmVnaW5uaW5nIGluIDIwMDkuIFRo + ZSBjcmVkaXQgd2FzIGZ1cnRoZXIgZW5oYW5jZWQgaW4gRmVicnVhcnkgMjAw + OSBieSBUaGUgQW1lcmljYW4gUmVjb3ZlcnkgJiBSZWludmVzdG1lbnQgQWN0 + IG9mIDIwMDksIHdoaWNoIHJlbW92ZWQgdGhlIG1heGltdW0gY3JlZGl0IGFt + b3VudCBmb3IgYWxsIGVsaWdpYmxlIHRlY2hub2xvZ2llcyBwbGFjZWQgaW4g + c2VydmljZSBhZnRlciAyMDA4LiBBIHRheHBheWVyIG1heSBjbGFpbSBhIGNy + ZWRpdCBvZiAzMCUgb2YgcXVhbGlmaWVkIGV4cGVuZGl0dXJlcyBmb3IgYSBz + eXN0ZW0gdGhhdCBzZXJ2ZXMgYSBkd2VsbGluZyB1bml0IHRoYXQgaXMgb3du + ZWQgJiB1c2VkIGFzIGEgcmVzaWRlbmNlIGJ5IHRoZSB0YXhwYXllci4gSWYg + dGhlIGluc3RhbGxhdGlvbiBpcyBhdCBhIG5ldyBob21lLCB0aGUgXCJwbGFj + ZWQgaW4gc2VydmljZVwiIGRhdGUgaXMgdGhlIGRhdGUgb2Ygb2NjdXBhbmN5 + IGJ5IHRoZSBob21lb3duZXIuIEV4cGVuZGl0dXJlcyBpbmNsdWRlIGxhYm9y + IGNvc3RzIGZvciBvbi1zaXRlIHByZXBhcmF0aW9uLCBhc3NlbWJseSBvciBv + cmlnaW5hbCBzeXN0ZW0gaW5zdGFsbGF0aW9uLCAmIGZvciBwaXBpbmcgb3Ig + d2lyaW5nIHRvIGludGVyY29ubmVjdCBhIHN5c3RlbSB0byB0aGUgaG9tZS4i + LCJyZXF1aXJlbWVudHMiOiJBIHRheHBheWVyIG1heSBjbGFpbSBhIGNyZWRp + dCBvZiAzMCUgb2YgcXVhbGlmaWVkIGV4cGVuZGl0dXJlcyBmb3IgYSBzeXN0 + ZW0gdGhhdCBzZXJ2ZXMgYSBkd2VsbGluZyB1bml0IHRoYXQgaXMgb3duZWQg + JiB1c2VkIGFzIGEgcmVzaWRlbmNlIGJ5IHRoZSB0YXhwYXllci4gRXhwZW5k + aXR1cmVzIGluY2x1ZGUgbGFib3IgY29zdHMgZm9yIG9uLXNpdGUgcHJlcGFy + YXRpb24sIGFzc2VtYmx5IG9yIG9yaWdpbmFsIHN5c3RlbSBpbnN0YWxsYXRp + b24sICYgZm9yIHBpcGluZyBvciB3aXJpbmcgdG8gaW50ZXJjb25uZWN0IGEg + c3lzdGVtIHRvIHRoZSBob21lLiBUaGUgYmlsbCBleHRlbmRzIHRoZSAzMCUg + SVRDIGZvciByZXNpZGVudGlhbCBzb2xhciBwcm9wZXJ0eSBmb3IgZWlnaHQg + eWVhcnMgdGhyb3VnaCBEZWNlbWJlciAzMSwgMjAxNi4ifSx7ImluY2VudGl2 + ZUlkIjozMTU4OTcxLCJtYXN0ZXJJbmNlbnRpdmVJZCI6MzE1ODk3MSwiZWxp + Z2liaWxpdHkiOiJDT1VMRF9CRV9FTElHSUJMRSIsInJlcXVpcmVkRGF0YSI6 + W3siYXBwbGljYWJpbGl0eUtleSI6InN5c3RlbVNpemVBY1ciLCJkaXNwbGF5 + TmFtZSI6IlN5c3RlbSBTaXplIEFDIFciLCJkZXNjcmlwdGlvbiI6IlNpemUg + b2YgdGhlIHNvbGFyIHN5c3RlbSBpbiBXYXR0cyBBQyIsIm1heFZhbHVlIjoz + MDAwMC4wMCwicXVhbnRpdHlVbml0IjoiVyJ9LHsiYXBwbGljYWJpbGl0eUtl + eSI6InRpbHQiLCJkaXNwbGF5TmFtZSI6IlRpbHQiLCJkZXNjcmlwdGlvbiI6 + IlRpbHQgYW5nbGUgaW4gZGVncmVlcyBvZiB0aGUgUFYgKGRlZ3JlZXMpLiIs + Im1pblZhbHVlIjo1LjAwLCJtYXhWYWx1ZSI6NTUuMDB9XSwidGFyaWZmQ29k + ZSI6IkVQQkIiLCJpbmNlbnRpdmVOYW1lIjoiUmVzaWRlbnRpYWwgU29sYXIg + RWxlY3RyaWMgSW5jZW50aXZlIC0gRVBCQiIsImxzZUlkIjoyNDU2LCJsc2VO + YW1lIjoiTW9yZW5vIFZhbGxleSBVdGlsaXR5Iiwic2VydmljZVR5cGUiOiJT + T0xBUl9QViIsImN1c3RvbWVyQ2xhc3MiOiJSRVNJREVOVElBTCIsInN0YXJ0 + RGF0ZSI6IjIwMTItMDEtMDEiLCJlbmREYXRlIjoiMjAxMy0wMS0wMSIsImlz + RXhoYXVzdGVkIjp0cnVlLCJwcm9qZWN0VHlwZSI6InNvbGFyUHYiLCJpbmNl + bnRpdmVUeXBlIjoicmViYXRlIiwicmF0ZSI6Mi4yNTAwMDAsInJhdGVVbml0 + IjoiQ09TVF9QRVJfVU5JVCIsImRvY3VtZW50cyI6bnVsbCwianVyaXNkaWN0 + aW9uIjoidXRpbGl0eSIsInF1YW50aXR5S2V5Ijp7ImtleU5hbWUiOiJzeXN0 + ZW1TaXplQWNXIiwiZGlzcGxheU5hbWUiOiJTeXN0ZW0gU2l6ZSBBQyBXIiwi + ZGVzY3JpcHRpb24iOiJTaXplIG9mIHRoZSBzb2xhciBzeXN0ZW0gaW4gV2F0 + dHMgQUMifSwicXVhbnRpdHlLZXlDYXAiOiIzMDAwMCIsInN0YXRlIjoiQ0Ei + LCJwZXJjZW50Q29zdENhcCI6NTAsInBlcmNlbnRDb3N0Q2FwS2V5Ijp7Imtl + eU5hbWUiOiJzeXN0ZW1Db3N0IiwiZGlzcGxheU5hbWUiOiJTeXN0ZW0gQ29z + dCIsImRlc2NyaXB0aW9uIjoiQ29zdCBvZiB0aGUgc29sYXIgc3lzdGVtIGlu + IFVTRC4gIn0sInBheW1lbnRDYXAiOjEwMDAwLCJwYXltZW50RHVyYXRpb24i + OjEsImluY2VudGl2ZVBhaWRUbyI6InRlbmFudE9yT3duZXIiLCJwcm9qZWN0 + VHlwZUV4Y2x1c2l2ZSI6dHJ1ZSwiYXBwbGljYWJpbGl0aWVzIjpbeyJhcHBs + aWNhYmlsaXR5S2V5Ijoic3lzdGVtU2l6ZUFjVyIsImRpc3BsYXlOYW1lIjoi + U3lzdGVtIFNpemUgQUMgVyIsImRlc2NyaXB0aW9uIjoiU2l6ZSBvZiB0aGUg + c29sYXIgc3lzdGVtIGluIFdhdHRzIEFDIiwibWF4VmFsdWUiOjMwMDAwLjAw + LCJxdWFudGl0eVVuaXQiOiJXIn0seyJhcHBsaWNhYmlsaXR5S2V5Ijoic3lz + dGVtU2l6ZUFjVyIsImRpc3BsYXlOYW1lIjoiU3lzdGVtIFNpemUgQUMgVyIs + ImRlc2NyaXB0aW9uIjoiU2l6ZSBvZiB0aGUgc29sYXIgc3lzdGVtIGluIFdh + dHRzIEFDIiwibWluVmFsdWUiOjEwMDAuMDAsInF1YW50aXR5VW5pdCI6Ilci + fSx7ImFwcGxpY2FiaWxpdHlLZXkiOiJ0aWx0IiwiZGlzcGxheU5hbWUiOiJU + aWx0IiwiZGVzY3JpcHRpb24iOiJUaWx0IGFuZ2xlIGluIGRlZ3JlZXMgb2Yg + dGhlIFBWIChkZWdyZWVzKS4iLCJtaW5WYWx1ZSI6NS4wMCwibWF4VmFsdWUi + OjU1LjAwfV0sInN1bW1hcnkiOiJUaGUgTVZVIFNvbGFyIFJlYmF0ZSBpcyBh + dmFpbGFibGUgdG8gTVZVIGVsZWN0cmljIGN1c3RvbWVycyBvbmx5LiBUaGlz + IHByb2dyYW0gaXMgbGltaXRlZCB0byBmdW5kcyBhdmFpbGFibGUgb24gYSBm + aXJzdC1jb21lLWZpcnN0LXNlcnZlZCBiYXNpcy4gUGFuZWxzIG11c3QgYmUg + d2FycmFudGVkIGZvciAyNSB5ZWFycywgYW5kIGludmVydGVycyBhbmQgbGFi + b3IgZm9yIDEwIHllYXJzLiBUaGUgbWluaW11bSBpbnN0YWxsYXRpb24gc2l6 + ZSBlbGlnaWJsZSBmb3IgYSByZWJhdGUgaXMgMSBrVyAoMSwwMDAgd2F0dHMp + LCBhbmQgdGhlIG1heGltdW0gaW5zdGFsbGF0aW9uIHNpemUgZWxpZ2libGUg + Zm9yIGEgcmViYXRlIDEgTVcgKDEsMDAwLDAwMCB3YXR0cykuIEN1c3RvbWVy + cyB3aWxsIG9ubHkgcmVjZWl2ZSByZWJhdGVzIGZvciBzeXN0ZW1zIGluc3Rh + bGxlZCB0aGF0IGFyZSBzaXplZCB1cCB0byAxMDAlIG9mIHRoZSBtYXhpbXVt + IGF2ZXJhZ2UgaGlzdG9yaWNhbCB1c2FnZSBmb3IgdGhlIHBhc3QgMjQgbW9u + dGhzLiBGb3IgY3VzdG9tZXJzIHdpdGggbGVzcyB0aGFuIDIgeWVhcnMgYWNj + b3VudCBoaXN0b3J5LCB0aGUgYXZlcmFnZSB3aWxsIGJlIGJhc2VkIG9uIGF2 + YWlsYWJsZSBkYXRhLiBBbGwgaW5jZW50aXZlIHBheW1lbnRzIGFyZSBiYXNl + ZCBvbiBhdmFpbGFibGUgZnVuZHMgYW5kIHZlcmlmaWNhdGlvbiBvZiBpbnN0 + YWxsYXRpb24uIiwicmVxdWlyZW1lbnRzIjoiVGhlIHF1YWxpZnlpbmcgc3lz + dGVtIG11c3QgYmUgb24gc2FtZSBwcmVtaXNlcyBhcyB0aGUgY3VzdG9tZXIu + IEFsbCBzb2xhciBzeXN0ZW0gY29tcG9uZW50cyBtdXN0IGJlIG5ldyBhbmQg + YXBwcm92ZWQgYnkgTVZVLiBQYW5lbHMgYW5kIGludmVydGVycyBtdXN0IGFw + cGVhciBvbiB0aGUgbGF0ZXN0IENhbGlmb3JuaWEgRW5lcmd5IENvbW1pc3Np + b24gY2VydGlmaWVkIHBob3Rvdm9sdGFpYyBtb2R1bGVzIGxpc3Qgb3IgY2Vy + dGlmaWVkIGludmVydGVycyBsaXN0IGFzIHBvc3RlZCBvbiB0aGUgR28gU29s + YXIgQ2FsaWZvcm5pYSB3ZWJzaXRlLiBQYW5lbHMgbXVzdCBiZSB3YXJyYW50 + ZWQgZm9yIDI1IHllYXJzLCBhbmQgaW52ZXJ0ZXJzIGFuZCBsYWJvciBmb3Ig + MTAgeWVhcnMuIEFuIGVsZWN0cmljIG1ldGVyIG11c3QgYmUgaW4gcGxhY2Ug + dG8gbW9uaXRvciB0aGUgc3lzdGVtJ3MgcGVyZm9ybWFuY2UuIFRoZSBtaW5p + bXVtIGluc3RhbGxhdGlvbiBzaXplIGVsaWdpYmxlIGZvciBhIHJlYmF0ZSBp + cyAxIGtXICYgbWF4aW11bSBpcyAxIE1XLiBDdXN0b21lcnMgd2hvIGluc3Rh + bGwgc29sYXIgZWxlY3RyaWMgZ2VuZXJhdGlvbiBzeXN0ZW1zIDMwIGtXLCBv + ciBsZXNzLCB3aWxsIHF1YWxpZnkgZm9yIHRoZSBFeHBlY3RlZCBQZXJmb3Jt + YW5jZSBCYXNlZCBCdXlkb3duIChFUEJCKSBwcm9ncmFtIHdoaWNoIGhhcyBh + IHJlYmF0ZSBsZXZlbCBhdCAkMS4wMCBwZXIgQUMgd2F0dCBpbnN0YWxsZWQu + IEVQQkIgcXVhbGlmaWVkIGN1c3RvbWVyIHJlYmF0ZSBhbW91bnRzIGFyZSBs + aW1pdGVkIHRvICQxMCwwMDAgZm9yIHJlc2lkZW50aWFsIHN5c3RlbXMsIG9y + ICQ1MCwwMDAgZm9yIHNtYWxsIGNvbW1lcmNpYWwsIG9yIDUwJSBvZiB0aGUg + dG90YWwgY29zdCBvZiB0aGUgcHJvamVjdC4ifSx7ImluY2VudGl2ZUlkIjoz + MTU5MTEyLCJtYXN0ZXJJbmNlbnRpdmVJZCI6MzE1OTExMiwiZWxpZ2liaWxp + dHkiOiJDT1VMRF9CRV9FTElHSUJMRSIsInJlcXVpcmVkRGF0YSI6W3siYXBw + bGljYWJpbGl0eUtleSI6InN5c3RlbVNpemVBYyIsImRpc3BsYXlOYW1lIjoi + U3lzdGVtIFNpemUgQUMiLCJkZXNjcmlwdGlvbiI6Ik5hbWVwbGF0ZSBjYXBh + Y2l0eSAoa1cpIHRpbWVzIGludmVydGVyIGVmZmljaWVuY3kiLCJtYXhWYWx1 + ZSI6MTAuMDAsInF1YW50aXR5VW5pdCI6ImtXIn1dLCJ0YXJpZmZDb2RlIjoi + Tm9uZSIsImluY2VudGl2ZU5hbWUiOiJTb2xhciBQaG90b3ZvbHRhaWMgKFBW + KSBSZWJhdGUgUHJvZ3JhbSIsImxzZUlkIjoyNzQ4LCJsc2VOYW1lIjoiR3Jl + eVN0b25lIFBvd2VyIENvcnBvcmF0aW9uIiwic2VydmljZVR5cGUiOiJTT0xB + Ul9QViIsImN1c3RvbWVyQ2xhc3MiOiJSRVNJREVOVElBTCIsInN0YXJ0RGF0 + ZSI6IjIwMTMtMDEtMDEiLCJlbmREYXRlIjoiMjAxNi0wMS0wMSIsImlzRXho + YXVzdGVkIjp0cnVlLCJwcm9qZWN0VHlwZSI6InNvbGFyUHYiLCJpbmNlbnRp + dmVUeXBlIjoicmViYXRlIiwicmF0ZSI6NDUwLjAwMDAwMCwicmF0ZVVuaXQi + OiJDT1NUX1BFUl9VTklUIiwiZG9jdW1lbnRzIjpudWxsLCJqdXJpc2RpY3Rp + b24iOiJ1dGlsaXR5IiwicXVhbnRpdHlLZXkiOnsia2V5TmFtZSI6InN5c3Rl + bVNpemVBYyIsImRpc3BsYXlOYW1lIjoiU3lzdGVtIFNpemUgQUMiLCJkZXNj + cmlwdGlvbiI6Ik5hbWVwbGF0ZSBjYXBhY2l0eSAoa1cpIHRpbWVzIGludmVy + dGVyIGVmZmljaWVuY3kifSwicXVhbnRpdHlLZXlDYXAiOm51bGwsInN0YXRl + IjoiR0EiLCJwZXJjZW50Q29zdENhcCI6bnVsbCwicGVyY2VudENvc3RDYXBL + ZXkiOnsia2V5TmFtZSI6bnVsbH0sInBheW1lbnRDYXAiOm51bGwsInBheW1l + bnREdXJhdGlvbiI6MSwiaW5jZW50aXZlUGFpZFRvIjoidGVuYW50T3JPd25l + ciIsInByb2plY3RUeXBlRXhjbHVzaXZlIjpmYWxzZSwiYXBwbGljYWJpbGl0 + aWVzIjpbeyJhcHBsaWNhYmlsaXR5S2V5Ijoic3lzdGVtU2l6ZUFjIiwiZGlz + cGxheU5hbWUiOiJTeXN0ZW0gU2l6ZSBBQyIsImRlc2NyaXB0aW9uIjoiTmFt + ZXBsYXRlIGNhcGFjaXR5IChrVykgdGltZXMgaW52ZXJ0ZXIgZWZmaWNpZW5j + eSIsIm1heFZhbHVlIjoxMC4wMCwicXVhbnRpdHlVbml0Ijoia1cifV0sInN1 + bW1hcnkiOiJHcmV5U3RvbmUgaGFzIGxvbmcgZW5jb3VyYWdlZCBhbmQgc3Vw + cG9ydGVkIHRoZSB3aXNlIGFuZCBlZmZpY2llbnQgdXNlIG9mIGVsZWN0cmlj + aXR5LiBHcmV5U3RvbmUgYWxzbyBzdXBwb3J0cyB0aGUgcHJvcGVyIGFwcGxp + Y2F0aW9uIGFuZCB1c2Ugb2YgcmVsaWFibGUgcmVuZXdhYmxlIGVuZXJneSB0 + ZWNobm9sb2dpZXMuIFRvIGhlbHAgZW5jb3VyYWdlIHRoZSBhZG9wdGlvbiBv + ZiB0aGVzZSBwcm92ZW4gcmVzb3VyY2VzLCBHcmV5U3RvbmUgaXMgb2ZmZXJp + bmcgYSByZWJhdGUgdG8gaGVscCBtYWtlIGluc3RhbGxpbmcgYW5kIGdlbmVy + YXRpbmcgZWxlY3RyaWNpdHkgZnJvbSBwaG90b3ZvbHRhaWMgc3lzdGVtcyBt + b3JlIGFmZm9yZGFibGUgZm9yIG1lbWJlcnMuIElmIGEgcmVzaWRlbnRpYWwg + R3JleVN0b25lIFBvd2VyIG1lbWJlciBjaG9vc2VzIHRvIGluc3RhbGwgYSBx + dWFsaWZ5aW5nIHBob3Rvdm9sdGFpYyBzeXN0ZW0gb24gdGhlaXIgaG9tZSwg + dGhlIHJlYmF0ZSBpcyBkZXNpZ25lZCB0byBoZWxwIG9mZnNldCBhIHBvcnRp + b24gb2YgdGhlIGluaXRpYWwgaW5zdGFsbGF0aW9uIGNvc3Qgb2YgdGhlIHN5 + c3RlbS4gTWVtYmVycyB3aG8gcXVhbGlmeSBmb3IgdGhlIHByb2dyYW0gYXJl + IGVsaWdpYmxlIHRvIHJlY2VpdmUgYSBvbmUtdGltZSByZWJhdGUgb2YgJDQ1 + MCBwZXIga2lsb3dhdHQgQUMgKGtXKSBpbnN0YWxsZWQsIHVwIHRvIDEwIGtX + LiIsInJlcXVpcmVtZW50cyI6IlRvIHBhcnRpY2lwYXRlIGluIHRoaXMgcHJv + Z3JhbSwgeW91IG11c3QgYmUgYSBHcmV5U3RvbmUgUG93ZXIgUmVzaWRlbnRp + YWwgb3IgQ29tbWVyY2lhbCBtZW1iZXIuIFRoZSBwaG90b3ZvbHRhaWMgc3lz + dGVtIG11c3QgYmUgaW5zdGFsbGVkIGJ5IGEgbGljZW5zZWQgY29udHJhY3Rv + ci4gSW5zdGFsbGVkIGluIGFjY29yZGFuY2Ugd2l0aCBhbGwgYXBwbGljYWJs + ZSBidWlsZGluZyBhbmQgbmF0aW9uYWwgZWxlY3RyaWMgY29kZXMuIEludGVy + Y29ubmVjdGVkIHRvIHRoZSBHcmV5U3RvbmUgUG93ZXIgZGlzdHJpYnV0aW9u + IHN5c3RlbSB3aXRoIGFwcHJvdmVkIGludGVyY29ubmVjdGlvbiBlcXVpcG1l + bnQgYW5kIGRldmljZXMuIn0seyJpbmNlbnRpdmVJZCI6MzE1OTQyOCwibWFz + dGVySW5jZW50aXZlSWQiOjMxNTk0MjgsImVsaWdpYmlsaXR5IjoiQ09VTERf + QkVfRUxJR0lCTEUiLCJyZXF1aXJlZERhdGEiOlt7ImFwcGxpY2FiaWxpdHlL + ZXkiOiJzeXN0ZW1TaXplRGNXIiwiZGlzcGxheU5hbWUiOiJTeXN0ZW0gU2l6 + ZSBEQyBXIiwiZGVzY3JpcHRpb24iOiJTaXplIG9mIHRoZSBzb2xhciBzeXN0 + ZW0gaW4gV2F0dHMgREMiLCJtaW5WYWx1ZSI6MjAwLjAwLCJxdWFudGl0eVVu + aXQiOiJXIn1dLCJ0YXJpZmZDb2RlIjoiTm9uZSIsImluY2VudGl2ZU5hbWUi + OiJSZXNpZGVudGlhbCBTb2xhciBFbGVjdHJpYyBJbmNlbnRpdmVzIiwibHNl + SWQiOjIwMzcsImxzZU5hbWUiOiJDZW50cmFsIExpbmNvbG4gUGVvcGxlJ3Mg + VXQgRHQiLCJzZXJ2aWNlVHlwZSI6IlNPTEFSX1BWIiwiY3VzdG9tZXJDbGFz + cyI6IlJFU0lERU5USUFMIiwic3RhcnREYXRlIjoiMjAxMy0wMS0wMSIsImVu + ZERhdGUiOm51bGwsImlzRXhoYXVzdGVkIjpmYWxzZSwicHJvamVjdFR5cGUi + OiJzb2xhclB2IiwiaW5jZW50aXZlVHlwZSI6InJlYmF0ZSIsInJhdGUiOjUw + MC4wMDAwMDAsInJhdGVVbml0IjoiQ09TVF9QRVJfVU5JVCIsImRvY3VtZW50 + cyI6bnVsbCwianVyaXNkaWN0aW9uIjoidXRpbGl0eSIsInF1YW50aXR5S2V5 + Ijp7ImtleU5hbWUiOiJzeXN0ZW1TaXplRGMiLCJkaXNwbGF5TmFtZSI6IlN5 + c3RlbSBTaXplIERDIiwiZGVzY3JpcHRpb24iOiJTaXplIG9mIHRoZSBzb2xh + ciBzeXN0ZW0gaW4ga2lsb1dhdHRzIERDIn0sInF1YW50aXR5S2V5Q2FwIjpu + dWxsLCJzdGF0ZSI6Ik9SIiwicGVyY2VudENvc3RDYXAiOm51bGwsInBlcmNl + bnRDb3N0Q2FwS2V5Ijp7ImtleU5hbWUiOm51bGx9LCJwYXltZW50Q2FwIjoy + MDAwLCJwYXltZW50RHVyYXRpb24iOjEsImluY2VudGl2ZVBhaWRUbyI6Im93 + bmVyT3JDb250cmFjdG9yIiwicHJvamVjdFR5cGVFeGNsdXNpdmUiOmZhbHNl + LCJhcHBsaWNhYmlsaXRpZXMiOlt7ImFwcGxpY2FiaWxpdHlLZXkiOiJzeXN0 + ZW1TaXplRGNXIiwiZGlzcGxheU5hbWUiOiJTeXN0ZW0gU2l6ZSBEQyBXIiwi + ZGVzY3JpcHRpb24iOiJTaXplIG9mIHRoZSBzb2xhciBzeXN0ZW0gaW4gV2F0 + dHMgREMiLCJtaW5WYWx1ZSI6MjAwLjAwLCJxdWFudGl0eVVuaXQiOiJXIn1d + LCJzdW1tYXJ5IjoiQ2VudHJhbCBMaW5jb2xuIFBlb3BsZeKAmXMgVXRpbGl0 + eSBEaXN0cmljdCB3aWxsIG9mZmVyIGluY2VudGl2ZXMgZm9yIGl0cyBjb21t + ZXJjaWFsIGFuZCByZXNpZGVudGlhbCBjdXN0b21lcnMgdG8gaW5zdGFsbCBw + aG90b3ZvbHRhaWMgKFBWKS4gVGhlIFRvdGFsIFNvbGFyIFJlc291cmNlIEZy + YWN0aW9uIGZvciB0aGUgbG9jYXRpb24gb2YgYW55IHNvbGFyIGVuZXJneSBz + eXN0ZW0gbXVzdCBiZSBhdCBsZWFzdCA3NSUuIEFsbCBhcHBsaWNhYmxlIHBs + dW1iaW5nLCBzdHJ1Y3R1cmFsLCBtZWNoYW5pY2FsIGFuZCBlbGVjdHJpY2Fs + IHJlcXVpcmVtZW50cyBmb3IgdGhlIGp1cmlzZGljdGlvbiBhcHBseS4gQWxs + IHN5c3RlbSBtdXN0IGJlIGNvdmVyZWQgYnkgYSBmdWxsIHN5c3RlbSAyLXll + YXIgd2FycmFudHkuIEluY2VudGl2ZXMgYXJlIHBheWFibGUgdG8gY3VzdG9t + ZXJzIG9mIENlbnRyYWwgTGluY29sbiBQVUQgdXBvbiBzdWJtaXR0YWwgb2Yg + YSBjb21wbGV0ZWQgaW5jZW50aXZlIGFwcGxpY2F0aW9uIHBhY2thZ2UuIiwi + cmVxdWlyZW1lbnRzIjoiVGVjaG5pY2FsIFJlcXVpcmVtZW50czogMS4gRG9t + ZXN0aWMgc29sYXIgZWxlY3RyaWMgc3lzdGVtcyBtdXN0IGJlIGNvbXByaXNl + ZCBvZiBuZXcsIFVMIGxpc3RlZCBjb21wb25lbnRzIGRlc2lnbmVkIGZvciB0 + aGUgaW5zdGFsbGVkIGR1dHkuIEV4dGVybmFsbHkgaW5zdGFsbGVkIG5vbi1l + bGVjdHJpY2FsIGVxdWlwbWVudCBtdXN0IGJlIG9mIGFsdW1pbnVtIG9yIHN0 + YWlubGVzcyBzdGVlbCBhbmQgcmF0ZWQgZm9yIHRoZSBleHBvc3VyZSBpdCBp + cyB0byBiZSBwbGFjZWQgaW4uIEluc3RhbGxhdGlvbnMgbXVzdCBiZSBjb21w + bGV0ZWQgYW5kIGNlcnRpZmllZCBieSBhIHN0YXRlIG9mIE9yZWdvbiBUYXgg + Q3JlZGl0IENlcnRpZmllZCBUZWNobmljaWFuIGZvciBzb2xhciB0aGVybWFs + IHN5c3RlbXMgaW4gYWNjb3JkIHdpdGggdGhlIHRlY2huaWNhbCByZXF1aXJl + bWVudHMgZm9yIHJlc2lkZW50aWFsIGVuZXJneSB0YXggY3JlZGl0cyBhbmQg + dGhlIEVuZXJneSBUcnVzdCBvZiBPcmVnb24gc3lzdGVtIHJlcXVpcmVtZW50 + cy4ifSx7ImluY2VudGl2ZUlkIjozMTU5NTM0LCJtYXN0ZXJJbmNlbnRpdmVJ + ZCI6MzE1OTUzNCwiZWxpZ2liaWxpdHkiOiJDT1VMRF9CRV9FTElHSUJMRSIs + InJlcXVpcmVkRGF0YSI6W3siYXBwbGljYWJpbGl0eUtleSI6InN5c3RlbVNp + emVEY1ciLCJkaXNwbGF5TmFtZSI6IlN5c3RlbSBTaXplIERDIFciLCJkZXNj + cmlwdGlvbiI6IlNpemUgb2YgdGhlIHNvbGFyIHN5c3RlbSBpbiBXYXR0cyBE + QyIsIm1heFZhbHVlIjoyMDAwMC4wMCwicXVhbnRpdHlVbml0IjoiVyJ9XSwi + dGFyaWZmQ29kZSI6Ik5vbmUiLCJpbmNlbnRpdmVOYW1lIjoiU29sYXIgUGhv + dG92b2x0YWljIChQVikgRWxlY3RyaWNhbCBTeXN0ZW0gUmViYXRlIiwibHNl + SWQiOjI4NTYsImxzZU5hbWUiOiJHdWFkYWx1cGUgVmFsbGV5IEVsZWMgQ29v + cCBJbmMiLCJzZXJ2aWNlVHlwZSI6IlNPTEFSX1BWIiwiY3VzdG9tZXJDbGFz + cyI6IlJFU0lERU5USUFMIiwic3RhcnREYXRlIjoiMjAxMy0wMS0wMSIsImVu + ZERhdGUiOiIyMDE1LTAxLTAxIiwiaXNFeGhhdXN0ZWQiOnRydWUsInByb2pl + Y3RUeXBlIjoic29sYXJQdiIsImluY2VudGl2ZVR5cGUiOiJyZWJhdGUiLCJy + YXRlIjoyLjAwMDAwMCwicmF0ZVVuaXQiOiJDT1NUX1BFUl9VTklUIiwiZG9j + dW1lbnRzIjpudWxsLCJqdXJpc2RpY3Rpb24iOiJ1dGlsaXR5IiwicXVhbnRp + dHlLZXkiOnsia2V5TmFtZSI6InN5c3RlbVNpemVEY1ciLCJkaXNwbGF5TmFt + ZSI6IlN5c3RlbSBTaXplIERDIFciLCJkZXNjcmlwdGlvbiI6IlNpemUgb2Yg + dGhlIHNvbGFyIHN5c3RlbSBpbiBXYXR0cyBEQyJ9LCJxdWFudGl0eUtleUNh + cCI6bnVsbCwic3RhdGUiOiJUWCIsInBlcmNlbnRDb3N0Q2FwIjpudWxsLCJw + ZXJjZW50Q29zdENhcEtleSI6eyJrZXlOYW1lIjpudWxsfSwicGF5bWVudENh + cCI6NDAwMCwicGF5bWVudER1cmF0aW9uIjoxLCJpbmNlbnRpdmVQYWlkVG8i + OiJ0ZW5hbnRPck93bmVyIiwicHJvamVjdFR5cGVFeGNsdXNpdmUiOmZhbHNl + LCJhcHBsaWNhYmlsaXRpZXMiOlt7ImFwcGxpY2FiaWxpdHlLZXkiOiJzeXN0 + ZW1TaXplRGNXIiwiZGlzcGxheU5hbWUiOiJTeXN0ZW0gU2l6ZSBEQyBXIiwi + ZGVzY3JpcHRpb24iOiJTaXplIG9mIHRoZSBzb2xhciBzeXN0ZW0gaW4gV2F0 + dHMgREMiLCJtYXhWYWx1ZSI6MjAwMDAuMDAsInF1YW50aXR5VW5pdCI6Ilci + fV0sInN1bW1hcnkiOiJUaGUgR3VhZGFsdXBlIFZhbGxleSBFbGVjdHJpYyBD + b29wZXJhdGl2ZSAoR1ZFQykgb2ZmZXJzIHJlYmF0ZXMgdG8gaXRzIG1lbWJl + ciBjdXN0b21lcnMgb2YgJDIuMDAvd2F0dCB1cCB0byBsZXNzZXIgb2YgMjAg + a1cgb3IgJDQwMDAgZm9yIHRoZSBpbnN0YWxsYXRpb24gb2YgcGhvdG92b2x0 + YWljIChQVikgc3lzdGVtcyB3aXRoaW4gaXRzIHNlcnZpY2UgdGVycml0b3J5 + LiBTeXN0ZW1zIG11c3QgYmUgbmV3IGFuZCBtZWV0IGEgdmFyaWV0eSBvZiBl + cXVpcG1lbnQsIHdhcnJhbnR5LCBhbmQgaW5zdGFsbGF0aW9uIHJlcXVpcmVt + ZW50cyB0aGF0IHZhcnkgYnkgdGVjaG5vbG9neS4gQWxsIHVuaXRzIG11c3Qg + YmUgaW5zdGFsbGVkIGJ5IGEgcHJvZ3JhbSBhcHByb3ZlZCBjb250cmFjdG9y + IGFjY29yZGluZyB0byB0aGUgbWFudWZhY3R1cmVyJ3Mgc3BlY2lmaWVkIHBy + b2NlZHVyZXMgYW5kIGNvZGVzLiIsInJlcXVpcmVtZW50cyI6Ik11c3QgbWVl + dCBhbGwgcmVxdWlyZW1lbnRzIG9mIFJlbmV3YWJsZSBFbmVyZ3kgQXBwbGlj + YXRpb24gYW5kIENvbnRyYWN0IChJbnRlcmNvbm5lY3Rpb24gQWdyZWVtZW50 + KSwgU3lzdGVtcyB0aGF0IGV4Y2VlZCAyMCBrVyBkbyBub3QgcXVhbGlmeS4g + QWxsIFBWIHN5c3RlbXMgc2hhbGwgY2FycnkgYSAxIHllYXIgd2FycmFudHkg + ZnJvbSB0aGUgSW5zdGFsbGVyLCBhbmQgbWFudWZhY3R1cmVyJ3Mgd2FycmFu + dHkgb2YgMjAgeWVhcnMgb24gc29sYXIgcGFuZWxzIGFuZCA1IHllYXJzIG9u + IHRoZSBpbnZlcnRlci4gQWxsIGVxdWlwbWVudCBzaGFsbCBiZSBuZXcgYW5k + IGxpc3RlZCBieSB0aGUgQ2FsaWZvcm5pYSBFbmVyZ3kgQ29tbWlzc2lvbiAo + Q0VDKSB0byBxdWFsaWZ5IGZvciB0aGUgcmViYXRlLiBTaXRlIGxvY2F0aW9u + IG11c3QgaGF2ZSBtaW5pbWFsIHNoYWRpbmcgYnkgdHJlZXMsIHN0cnVjdHVy + ZXMsIGV0Yy4gR1ZFQyByZXNlcnZlcyB0aGUgcmlnaHQgdG8gZGVueSByZWJh + dGUgYmFzZWQgb24gZXhjZXNzaXZlIHNoYWRpbmcgb2YgdGhlIHNvbGFyIHN5 + c3RlbS4gSWYgc2hhZGluZyBhdCBzaXRlIGxvY2F0aW9uIGlzIGluIHF1ZXN0 + aW9uLCBjb250YWN0IEdWRUMgcHJpb3IgdG8gaW5zdGFsbGF0aW9uIG9mIHRo + ZSBzeXN0ZW0uIEEgc2lnbmVkIHNhbGVzIGNvbnRyYWN0IHdpdGggdGhlIGNv + bnRyYWN0b3IgbXVzdCBiZSBzdWJtaXR0ZWQgd2l0aGluIDE0IGRheXMgYWZ0 + ZXIgcmVjZWlwdCBvZiBpbml0aWFsIHNvbGFyIHJlYmF0ZSByZXF1ZXN0IHRv + IHF1YWxpZnkuIE9ubHkgc3lzdGVtcyB3aXRoIGEgc2lnbmVkIHNhbGVzIGNv + bnRyYWN0LCBhZGRpdGlvbmFsIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiwg + YW5kIHJlcXVpcmVkIGluc3RhbGxhdGlvbiBkYXRlIHdpbGwgcXVhbGlmeSBm + b3IgcmViYXRlLiJ9LHsiaW5jZW50aXZlSWQiOjMxNTk3NjYsIm1hc3Rlcklu + Y2VudGl2ZUlkIjozMTU5NzY2LCJlbGlnaWJpbGl0eSI6IkNPVUxEX0JFX0VM + SUdJQkxFIiwicmVxdWlyZWREYXRhIjpbeyJhcHBsaWNhYmlsaXR5S2V5Ijoi + c3lzdGVtU2l6ZURjVyIsImRpc3BsYXlOYW1lIjoiU3lzdGVtIFNpemUgREMg + VyIsImRlc2NyaXB0aW9uIjoiU2l6ZSBvZiB0aGUgc29sYXIgc3lzdGVtIGlu + IFdhdHRzIERDIiwibWluVmFsdWUiOjEwMDAuMDAsInF1YW50aXR5VW5pdCI6 + IlcifV0sInRhcmlmZkNvZGUiOiJOb25lIiwiaW5jZW50aXZlTmFtZSI6IlJl + c2lkZW50aWFsIFNNQVJUIFNvdXJjZSBTb2xhciBQViBSZWJhdGUgUHJvZ3Jh + bSIsImxzZUlkIjoxNjgzLCJsc2VOYW1lIjoiQUVQIFRleGFzIE5vcnRoIENv + bXBhbnkiLCJzZXJ2aWNlVHlwZSI6IlNPTEFSX1BWIiwiY3VzdG9tZXJDbGFz + cyI6IlJFU0lERU5USUFMIiwic3RhcnREYXRlIjoiMjAxMy0wMS0wMSIsImVu + ZERhdGUiOiIyMDE0LTAxLTA4IiwiaXNFeGhhdXN0ZWQiOnRydWUsInByb2pl + Y3RUeXBlIjoic29sYXJQdiIsImluY2VudGl2ZVR5cGUiOiJyZWJhdGUiLCJy + YXRlIjoxLjUwMDAwMCwicmF0ZVVuaXQiOiJDT1NUX1BFUl9VTklUIiwiZG9j + dW1lbnRzIjpudWxsLCJqdXJpc2RpY3Rpb24iOiJ1dGlsaXR5IiwicXVhbnRp + dHlLZXkiOnsia2V5TmFtZSI6InN5c3RlbVNpemVEY1ciLCJkaXNwbGF5TmFt + ZSI6IlN5c3RlbSBTaXplIERDIFciLCJkZXNjcmlwdGlvbiI6IlNpemUgb2Yg + dGhlIHNvbGFyIHN5c3RlbSBpbiBXYXR0cyBEQyJ9LCJxdWFudGl0eUtleUNh + cCI6IjEwMDAwIiwic3RhdGUiOiJUWCIsInBlcmNlbnRDb3N0Q2FwIjpudWxs + LCJwZXJjZW50Q29zdENhcEtleSI6eyJrZXlOYW1lIjpudWxsfSwicGF5bWVu + dENhcCI6bnVsbCwicGF5bWVudER1cmF0aW9uIjoxLCJpbmNlbnRpdmVQYWlk + VG8iOiJvd25lck9yQ29udHJhY3RvciIsInByb2plY3RUeXBlRXhjbHVzaXZl + IjpmYWxzZSwiYXBwbGljYWJpbGl0aWVzIjpbeyJhcHBsaWNhYmlsaXR5S2V5 + Ijoic3lzdGVtU2l6ZURjVyIsImRpc3BsYXlOYW1lIjoiU3lzdGVtIFNpemUg + REMgVyIsImRlc2NyaXB0aW9uIjoiU2l6ZSBvZiB0aGUgc29sYXIgc3lzdGVt + IGluIFdhdHRzIERDIiwibWluVmFsdWUiOjEwMDAuMDAsInF1YW50aXR5VW5p + dCI6IlcifV0sInN1bW1hcnkiOiJBbWVyaWNhbiBFbGVjdHJpYyBQb3dlciBU + ZXhhcyBOb3J0aCBDb21wYW55IChBRVAtVE5DKSBvZmZlcnMgcmViYXRlcyB0 + byBhbnkgY3VzdG9tZXIgdGhhdCBpbnN0YWxscyBwaG90b3ZvbHRhaWMgKFBW + KSBzeXN0ZW1zIG9uIGhvbWVzIG9yIG90aGVyIGJ1aWxkaW5ncy4gUmViYXRl + cyBtYXkgYmUgYXNzaWduZWQgdG8gdGhlIGN1c3RvbWVyLCBhIHNlcnZpY2Ug + cHJvdmlkZXIsIG9yIGEgdGhpcmQgcGFydHkuIFJlYmF0ZXMgYXJlIG9mZmVy + ZWQgYXQgYSBmbGF0IHJhdGUgb2YgJDEuNTAvd2F0dCAoREMpIHVwIHRvIDEw + IGtXIGZvciByZXNpZGVudGlhbCBjdXN0b21lcnMuIEJlZ2lubmluZyBKdWx5 + IDEsIDIwMTMgdGhlIGxpbWl0cyBvbiBjdXN0b21lcnMgYW5kIHNlcnZpY2Ug + cHJvdmlkZXJzL3Byb2plY3Qgb3duZXJzIHdpbGwgbm8gbG9uZ2VyIGJlIGVu + Zm9yY2VkLiBPd25lcnMgb2YgdGhlIHN5c3RlbXMgYWxzbyBvd24gYWxsIHJl + bmV3YWJsZSBlbmVyZ3kgY3JlZGl0cyAoUkVDcykgb3Igb3RoZXIgZW52aXJv + bm1lbnRhbCBjcmVkaXRzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvamVjdC4i + LCJyZXF1aXJlbWVudHMiOiJBbGwgaW5zdGFsbGVkIHBob3Rvdm9sdGFpYyBt + b2R1bGVzIG11c3QgYmUgbmV3IGFuZCBjZXJ0aWZpZWQgdG8gVUwgMTcwMyBi + eSBhIE5hdGlvbmFsbHkgUmVjb2duaXplZCBUZXN0aW5nIExhYm9yYXRvcnkg + KE5SVEwpIHRvIGVuc3VyZSBzYWZldHkgYW5kIHJlbGlhYmlsaXR5LiBFbGln + aWJsZSBtb2R1bGVzIG11c3QgYmUgd2FycmFudGVkIGZvciBhdCBsZWFzdCAx + MCB5ZWFycyB0byBwcm9kdWNlIGF0IGxlYXN0IDkwJSBvZiB0aGVpciByYXRl + ZCBwb3dlciBvdXRwdXQsIGFuZCBmb3IgYXQgbGVhc3QgMjAgeWVhcnMgdG8g + cHJvZHVjZSBhdCBsZWFzdCA4MCUgb2YgdGhlaXIgcmF0ZWQgcG93ZXIgb3V0 + cHV0LiBBbGwgaW5zdGFsbGVkIGludmVydGVycywgaW5jbHVkaW5nIG1pY3Jv + LWludmVydGVycywgbXVzdCBiZSBuZXcgYW5kIGNlcnRpZmllZCB0byBVTCAx + NzQxIHN0YW5kYXJkcyBieSBhIE5hdGlvbmFsbHkgUmVjb2duaXplZCBUZXN0 + aW5nIExhYm9yYXRvcnkgKE5SVEwpLiBXaGVuIGFuIGludmVydGVyIGlzIGlu + dGVncmFsIHRvIGFuZCB3aG9sbHkgY29udGFpbmVkIHdpdGhpbiBhIHNvbGFy + IGVsZWN0cmljIGdlbmVyYXRvciAoUFYgbW9kdWxlKSwgdGhlIGludmVydGVy + IHNoYWxsIG5vdCBiZSByZXF1aXJlZCB0byBiZSBzZXBhcmF0ZWx5IGNlcnRp + ZmllZCB0byBVTCAxNzQxIGlmIFVMIDE3NDEgdGVzdGluZyBpcyBwZXJmb3Jt + ZWQgYXMgcGFydCBvZiBhIGZ1bGwgc2FmZXR5IGNlcnRpZmljYXRpb24gYnkg + YSBOUlRMIGZvciB0aGUgc29sYXIgZWxlY3RyaWMgZ2VuZXJhdG9yLiBBIHZp + c2libGUsIGxvY2thYmxlLCBsYWJlbGVkLCB1dGlsaXR5LWFjY2Vzc2libGUg + QUMgZGlzY29ubmVjdCBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBsb2NhdGVk + IHdpdGhpbiAxMCBmZWV0IG9mIHRoZSBVdGlsaXR5IG1ldGVyLiBUaGUgQUMg + ZGlzY29ubmVjdCBtdXN0IHByb3ZpZGUgYSB2aXNpYmxlIGJyZWFrIGJldHdl + ZW4gdGhlIGNvbmR1Y3RvcnMgd2hlbiBpbiB0aGUgb3BlbiBwb3NpdGlvbi4i + fSx7ImluY2VudGl2ZUlkIjozMTU5OTcxLCJtYXN0ZXJJbmNlbnRpdmVJZCI6 + MzE1OTk3MSwiZWxpZ2liaWxpdHkiOiJFTElHSUJMRSIsInRhcmlmZkNvZGUi + OiJOb25lIiwiaW5jZW50aXZlTmFtZSI6IlJlc2lkZW50aWFsIFNNQVJUIFNv + dXJjZSBTb2xhciBQViBSZWJhdGUgUHJvZ3JhbSIsImxzZUlkIjoyMDQyLCJs + c2VOYW1lIjoiQUVQIFRleGFzIENlbnRyYWwgQ29tcGFueSIsInNlcnZpY2VU + eXBlIjoiU09MQVJfUFYiLCJjdXN0b21lckNsYXNzIjoiUkVTSURFTlRJQUwi + LCJzdGFydERhdGUiOiIyMDEzLTAxLTAxIiwiZW5kRGF0ZSI6IjIwMTQtMDEt + MDEiLCJpc0V4aGF1c3RlZCI6dHJ1ZSwicHJvamVjdFR5cGUiOiJzb2xhclB2 + IiwiaW5jZW50aXZlVHlwZSI6InJlYmF0ZSIsInJhdGUiOjEuNTAwMDAwLCJy + YXRlVW5pdCI6IkNPU1RfUEVSX1VOSVQiLCJkb2N1bWVudHMiOm51bGwsImp1 + cmlzZGljdGlvbiI6InV0aWxpdHkiLCJxdWFudGl0eUtleSI6eyJrZXlOYW1l + Ijoic3lzdGVtU2l6ZURjVyIsImRpc3BsYXlOYW1lIjoiU3lzdGVtIFNpemUg + REMgVyIsImRlc2NyaXB0aW9uIjoiU2l6ZSBvZiB0aGUgc29sYXIgc3lzdGVt + IGluIFdhdHRzIERDIn0sInF1YW50aXR5S2V5Q2FwIjoiMTAwMDAiLCJzdGF0 + ZSI6IlRYIiwicGVyY2VudENvc3RDYXAiOm51bGwsInBlcmNlbnRDb3N0Q2Fw + S2V5Ijp7ImtleU5hbWUiOm51bGx9LCJwYXltZW50Q2FwIjpudWxsLCJwYXlt + ZW50RHVyYXRpb24iOjEsImluY2VudGl2ZVBhaWRUbyI6InRlbmFudE9yT3du + ZXIiLCJwcm9qZWN0VHlwZUV4Y2x1c2l2ZSI6ZmFsc2UsImFwcGxpY2FiaWxp + dGllcyI6W10sInN1bW1hcnkiOiJBbWVyaWNhbiBFbGVjdHJpYyBQb3dlciBU + ZXhhcyBDZW50cmFsIENvbXBhbnkgKEFFUC1UQ0MpIG9mZmVycyByZWJhdGVz + IHRvIGFueSBjdXN0b21lciB0aGF0IGluc3RhbGxzIHBob3Rvdm9sdGFpYyAo + UFYpIHN5c3RlbXMgb24gaG9tZXMgb3Igb3RoZXIgYnVpbGRpbmdzLiBSZWJh + dGVzIG1heSBiZSBhc3NpZ25lZCB0byB0aGUgY3VzdG9tZXIsIGEgc2Vydmlj + ZSBwcm92aWRlciwgb3IgYSB0aGlyZCBwYXJ0eS4gUmViYXRlcyBhcmUgb2Zm + ZXJlZCBhdCBhIGZsYXQgcmF0ZSBvZiAkMS41MCBwZXIgd2F0dCAoVyktREMg + Zm9yIHJlc2lkZW50aWFsIGN1c3RvbWVycy4gVGhlIG1heGltdW0gcmViYXRl + IGlzICQxNSwwMDAgcGVyIHJlc2lkZW50aWFsIGN1c3RvbWVyIChlcXVpdmFs + ZW50IHRvIGEgMTAga1cgc3lzdGVtKS4gVGhlIGFib3ZlIGxpbWl0IG5vIGxv + bmdlciBhcHBseSBhZnRlciBKdWx5IDEsIDIwMTMuIE93bmVycyBvZiB0aGUg + c3lzdGVtcyBhbHNvIG93biBhbGwgcmVuZXdhYmxlIGVuZXJneSBjcmVkaXRz + IChSRUNzKSBvciBvdGhlciBlbnZpcm9ubWVudGFsIGNyZWRpdHMgYXNzb2Np + YXRlZCB3aXRoIHRoZSBwcm9qZWN0LiBUaGUgdG90YWwgYW1vdW50IG9mIHBy + b2dyYW0gZnVuZGluZyBmb3IgMjAxMyBpcyAkOTAsMDAwIGZvciByZXNpZGVu + dGlhbCBjdXN0b21lcnMuIiwicmVxdWlyZW1lbnRzIjoiQWxsIGluc3RhbGxl + ZCBwaG90b3ZvbHRhaWMgbW9kdWxlcyBtdXN0IGJlIG5ldyBhbmQgY2VydGlm + aWVkIHRvIFVMIDE3MDMgYnkgYSBOYXRpb25hbGx5ICBSZWNvZ25pemVkIFRl + c3RpbmcgTGFib3JhdG9yeSAoTlJUTCkgdG8gZW5zdXJlIHNhZmV0eSBhbmQg + cmVsaWFiaWxpdHkuIEVsaWdpYmxlIG1vZHVsZXMgbXVzdCBiZSB3YXJyYW50 + ZWQgZm9yIGF0IGxlYXN0IDEwIHllYXJzIHRvIHByb2R1Y2UgYXQgbGVhc3Qg + OTAlIG9mIHRoZWlyIHJhdGVkIHBvd2VyIG91dHB1dCwgYW5kIGZvciBhdCBs + ZWFzdCAyMCB5ZWFycyB0byBwcm9kdWNlIGF0IGxlYXN0IDgwJSBvZiB0aGVp + ciByYXRlZCBwb3dlciBvdXRwdXQuIEFsbCBpbnN0YWxsZWQgaW52ZXJ0ZXJz + LCBpbmNsdWRpbmcgbWljcm8taW52ZXJ0ZXJzLCBtdXN0IGJlIG5ldyBhbmQg + Y2VydGlmaWVkIHRvIFVMIDE3NDEgc3RhbmRhcmRzIGJ5IGEgTmF0aW9uYWxs + eSBSZWNvZ25pemVkIFRlc3RpbmcgTGFib3JhdG9yeSAoTlJUTCkuIFdoZW4g + YW4gaW52ZXJ0ZXIgaXMgaW50ZWdyYWwgdG8gYW5kIHdob2xseSBjb250YWlu + ZWQgd2l0aGluIGEgc29sYXIgZWxlY3RyaWMgZ2VuZXJhdG9yIChQViBtb2R1 + bGUpLCB0aGUgaW52ZXJ0ZXIgc2hhbGwgbm90IGJlIHJlcXVpcmVkIHRvIGJl + IHNlcGFyYXRlbHkgY2VydGlmaWVkIHRvIFVMIDE3NDEgaWYgVUwgMTc0MSB0 + ZXN0aW5nIGlzIHBlcmZvcm1lZCBhcyBwYXJ0IG9mIGEgZnVsbCBzYWZldHkg + Y2VydGlmaWNhdGlvbiBieSBhIE5SVEwgZm9yIHRoZSBzb2xhciBlbGVjdHJp + YyBnZW5lcmF0b3IuQSB2aXNpYmxlLCBsb2NrYWJsZSwgbGFiZWxlZCwgdXRp + bGl0eS1hY2Nlc3NpYmxlIEFDIGRpc2Nvbm5lY3QgaXMgcmVxdWlyZWQgYW5k + IG11c3QgYmUgbG9jYXRlZCB3aXRoaW4gMTAgZmVldCBvZiB0aGUgVXRpbGl0 + eSBtZXRlci4gVGhlIEFDIGRpc2Nvbm5lY3QgbXVzdCBwcm92aWRlIGEgdmlz + aWJsZSBicmVhayBiZXR3ZWVuIHRoZSBjb25kdWN0b3JzIHdoZW4gaW4gdGhl + IG9wZW4gcG9zaXRpb24uIn0seyJpbmNlbnRpdmVJZCI6MzE2MDI0OSwibWFz + dGVySW5jZW50aXZlSWQiOjMxNjAyNDksImVsaWdpYmlsaXR5IjoiRUxJR0lC + TEUiLCJ0YXJpZmZDb2RlIjoiTm9uZSIsImluY2VudGl2ZU5hbWUiOiJSZW5l + d2FibGUgRW5lcmd5IFRheCBDcmVkaXQgLSBQZXJzb25hbCIsImxzZUlkIjox + MDAyOTAsImxzZU5hbWUiOiJTdGF0ZSBvZiBOb3J0aCBDYXJvbGluYSBJbmNl + bnRpdmVzIiwic2VydmljZVR5cGUiOiJTT0xBUl9QViIsImN1c3RvbWVyQ2xh + c3MiOiJSRVNJREVOVElBTCIsInN0YXJ0RGF0ZSI6IjIwMTMtMDEtMDEiLCJl + bmREYXRlIjoiMjAxNi0wMS0wMSIsImlzRXhoYXVzdGVkIjp0cnVlLCJwcm9q + ZWN0VHlwZSI6InNvbGFyUHYiLCJpbmNlbnRpdmVUeXBlIjoidGF4Q3JlZGl0 + IiwicmF0ZSI6MzUuMDAwMDAwLCJyYXRlVW5pdCI6IlBFUkNFTlRBR0UiLCJk + b2N1bWVudHMiOm51bGwsImp1cmlzZGljdGlvbiI6InN0YXRlIiwicXVhbnRp + dHlLZXkiOnsia2V5TmFtZSI6InN5c3RlbUNvc3QiLCJkaXNwbGF5TmFtZSI6 + IlN5c3RlbSBDb3N0IiwiZGVzY3JpcHRpb24iOiJDb3N0IG9mIHRoZSBzb2xh + ciBzeXN0ZW0gaW4gVVNELiAifSwicXVhbnRpdHlLZXlDYXAiOm51bGwsInN0 + YXRlIjoiTkMiLCJwZXJjZW50Q29zdENhcCI6bnVsbCwicGVyY2VudENvc3RD + YXBLZXkiOnsia2V5TmFtZSI6bnVsbH0sInBheW1lbnRDYXAiOjEwNTAwLCJw + YXltZW50RHVyYXRpb24iOjEsImluY2VudGl2ZVBhaWRUbyI6InRlbmFudE9y + T3duZXIiLCJwcm9qZWN0VHlwZUV4Y2x1c2l2ZSI6ZmFsc2UsImFwcGxpY2Fi + aWxpdGllcyI6W10sInN1bW1hcnkiOiJOb3J0aCBDYXJvbGluYSBvZmZlcnMg + YSB0YXggY3JlZGl0IGVxdWFsIHRvIDM1JSBvZiB0aGUgY29zdCBvZiBlbGln + aWJsZSByZW5ld2FibGUgZW5lcmd5IHByb3BlcnR5IGNvbnN0cnVjdGVkLCBw + dXJjaGFzZWQgb3IgbGVhc2VkIGJ5IGEgdGF4cGF5ZXIgYW5kIHBsYWNlZCBp + bnRvIHNlcnZpY2UgaW4gTm9ydGggQ2Fyb2xpbmEgZHVyaW5nIHRoZSB0YXhh + YmxlIHllYXIuIFRoZSBjcmVkaXQgaGFzIGJlZW4gYW1lbmRlZCBzZXZlcmFs + IHRpbWVzIHNpbmNlIGl0cyBvcmlnaW5hbCBpbmNlcHRpb24uIEhvdXNlIEJp + bGwgNTEyIG9mIDIwMDkgZXh0ZW5kZWQgdGhlIGVsaWdpYmlsaXR5IHRvIGdl + b3RoZXJtYWwgZXF1aXBtZW50LCBleHRlbmRlZCB0aGUgZXhwaXJhdGlvbiBk + YXRlIHRvIERlY2VtYmVyIDMxLCAyMDE1LCBhbmQgYWxsb3dlZCB0aGUgY3Jl + ZGl0IHRvIGJlIHRha2VuIGFnYWluc3QgdGhlIEdyb3NzIFByZW1pdW1zIFRh + eC4gSEIgMTgyOSBvZiAyMDEwIGZ1cnRoZXIgZXh0ZW5kZWQgdGhpcyBjcmVk + aXQgdG8gY29tYmluZWQgaGVhdCBhbmQgcG93ZXIgc3lzdGVtcy4gVGhlIGNy + ZWRpdCBpcyBzdWJqZWN0IHRvIHZhcmlvdXMgY2VpbGluZ3MgZGVwZW5kaW5n + IG9uIHNlY3RvciBhbmQgdGhlIHR5cGUgb2YgcmVuZXdhYmxlLWVuZXJneSBz + eXN0ZW0uIFRoZSBjcmVkaXQgY2FuIGJlIHRha2VuIGFnYWluc3QgZnJhbmNo + aXNlIHRheCwgY29ycG9yYXRlIHRheCwgaW5jb21lIHRheCwgb3IgaW4gdGhl + IGNhc2Ugb2YgaW5zdXJhbmNlIGNvbXBhbmllcywgYWdhaW5zdCB0aGUgZ3Jv + c3MgcHJlbWl1bXMgdGF4LiIsInJlcXVpcmVtZW50cyI6IlJlbmV3YWJsZS1l + bmVyZ3kgZXF1aXBtZW50IGV4cGVuZGl0dXJlcyBlbGlnaWJsZSBmb3IgdGhl + IHRheCBjcmVkaXQgaW5jbHVkZSB0aGUgY29zdCBvZiB0aGUgZXF1aXBtZW50 + IGFuZCBhc3NvY2lhdGVkIGRlc2lnbjsgY29uc3RydWN0aW9uIGNvc3RzOyBh + bmQgaW5zdGFsbGF0aW9uIGNvc3RzIGxlc3MgYW55IGRpc2NvdW50cywgcmVi + YXRlcywgYWR2ZXJ0aXNpbmcsIGluc3RhbGxhdGlvbi1hc3Npc3RhbmNlIGNy + ZWRpdHMsIG5hbWUtcmVmZXJyYWwgYWxsb3dhbmNlcyBvciBvdGhlciBzaW1p + bGFyIHJlZHVjdGlvbnMgcHJvdmlkZWQgYnkgcHVibGljIGZ1bmRzLiBTQiAz + ODggb2YgMjAxMCBjbGFyaWZpZWQgdGhhdCBmZWRlcmFsIGdyYW50cyBtYWRl + IGF2YWlsYWJsZSBieSBTZWN0aW9uIDE2MDMgb2YgdGhlIEFtZXJpY2FuIFJl + Y292ZXJ5IGFuZCBSZWludmVzdG1lbnQgVGF4IEFjdCBvZiAyMDA5IGRvIG5v + dCBjb25zdGl0dXRlIHB1YmxpYyBmdW5kcy5UaGUgYWxsb3dhYmxlIGNyZWRp + dCBtYXkgbm90IGV4Y2VlZCA1MCUgb2YgYSB0YXhwYXllcidzIHN0YXRlIHRh + eCBsaWFiaWxpdHkgZm9yIHRoZSB5ZWFyLCByZWR1Y2VkIGJ5IHRoZSBzdW0g + b2YgYWxsIG90aGVyIHN0YXRlIHRheCBjcmVkaXRzLiBRdWFsaWZ5aW5nIHJl + bmV3YWJsZS1lbmVyZ3kgc3lzdGVtcyB1c2VkIGZvciBhIG5vbi1idXNpbmVz + cyBwdXJwb3NlIG11c3QgdGFrZSB0aGUgbWF4aW11bSBjcmVkaXQgYW1vdW50 + IGFsbG93YWJsZSBmb3IgdGhlIHRheCB5ZWFyIGluIHdoaWNoIHRoZSBzeXN0 + ZW0gaXMgaW5zdGFsbGVkLiBJZiB0aGUgY3JlZGl0IGlzIG5vdCB1c2VkIGVu + dGlyZWx5IGR1cmluZyB0aGUgZmlyc3QgeWVhciwgdGhlIHJlbWFpbmluZyBh + bW91bnQgbWF5IGJlIGNhcnJpZWQgb3ZlciBmb3IgdGhlIG5leHQgZml2ZSB5 + ZWFycy4ifSx7ImluY2VudGl2ZUlkIjozMTYwMzIyLCJtYXN0ZXJJbmNlbnRp + dmVJZCI6MzE2MDMyMiwiZWxpZ2liaWxpdHkiOiJFTElHSUJMRSIsInRhcmlm + ZkNvZGUiOiJOb25lIiwiaW5jZW50aXZlTmFtZSI6IlNvbGFyIE1hcmtldCBE + ZXZlbG9wbWVudCBUYXggQ3JlZGl0IC0gUmVzaWRlbnRpYWwiLCJsc2VJZCI6 + MTAwMjg5LCJsc2VOYW1lIjoiU3RhdGUgb2YgTmV3IE1leGljbyBJbmNlbnRp + dmVzIiwic2VydmljZVR5cGUiOiJTT0xBUl9QViIsImN1c3RvbWVyQ2xhc3Mi + OiJSRVNJREVOVElBTCIsInN0YXJ0RGF0ZSI6IjIwMDYtMDEtMDEiLCJlbmRE + YXRlIjoiMjAxNi0xMi0zMSIsImlzRXhoYXVzdGVkIjpmYWxzZSwicHJvamVj + dFR5cGUiOiJzb2xhclB2IiwiaW5jZW50aXZlVHlwZSI6InRheENyZWRpdCIs + InJhdGUiOjEwLjAwMDAwMCwicmF0ZVVuaXQiOiJQRVJDRU5UQUdFIiwiZG9j + dW1lbnRzIjpudWxsLCJqdXJpc2RpY3Rpb24iOiJzdGF0ZSIsInF1YW50aXR5 + S2V5Ijp7ImtleU5hbWUiOiJzeXN0ZW1Db3N0IiwiZGlzcGxheU5hbWUiOiJT + eXN0ZW0gQ29zdCIsImRlc2NyaXB0aW9uIjoiQ29zdCBvZiB0aGUgc29sYXIg + c3lzdGVtIGluIFVTRC4gIn0sInF1YW50aXR5S2V5Q2FwIjpudWxsLCJzdGF0 + ZSI6Ik5NICIsInBlcmNlbnRDb3N0Q2FwIjpudWxsLCJwZXJjZW50Q29zdENh + cEtleSI6eyJrZXlOYW1lIjpudWxsfSwicGF5bWVudENhcCI6OTAwMCwicGF5 + bWVudER1cmF0aW9uIjoxLCJpbmNlbnRpdmVQYWlkVG8iOiJ0ZW5hbnRPck93 + bmVyIiwicHJvamVjdFR5cGVFeGNsdXNpdmUiOmZhbHNlLCJhcHBsaWNhYmls + aXRpZXMiOltdLCJzdW1tYXJ5IjoiVG8gcHJvbW90ZSB0aGUgdXNlIG9mIHNv + bGFyIHBvd2VyLCBOZXcgTWV4aWNvIGxhd21ha2VycyBoYXZlIHBhc3NlZCBh + IHBlcnNvbmFsIHRheCBjcmVkaXQgb24gdGhlIHB1cmNoYXNlIGFuZCBpbnN0 + YWxsYXRpb24gb2YgYSByZXNpZGVudGlhbCBzb2xhciBwb3dlciBzeXN0ZW0u + IFNvbGFyIE1hcmtldCBEZXZlbG9wbWVudCBUYXggQ3JlZGl0LCBvciBTb2xh + ciBUYXggQ3JlZGl0IChTVEMpLCB3aWxsIHBheSB1cCB0byAxMCUgKHVwIHRv + ICQ5LDAwMCkgb2YgeW91ciBzb2xhciBwaG90b3ZvbHRhaWMgKFBWKS4iLCJy + ZXF1aXJlbWVudHMiOiJPbmx5IGEgTmV3IE1leGljbyB0YXhwYXllciBoYXZp + bmcgcHVyY2hhc2VkIGFuZCBpbnN0YWxsZWQgYW4gb3BlcmF0aW5nIHNvbGFy + IGVuZXJneSBzeXN0ZW0gdGhlIGRlcGFydG1lbnQgaGFzIGNlcnRpZmllZCBp + cyBlbGlnaWJsZSBmb3IgYSBzdGF0ZSB0YXggY3JlZGl0LiBDZXJ0aWZpZWQg + c29sYXIgdGhlcm1hbCBvciBwaG90b3ZvbHRhaWMgKFBWKXN5c3RlbSBwdXJj + aGFzZXMgZnJvbSBKYW51YXJ5IDIwMDYgdGhyb3VnaCBEZWNlbWJlciAyMDE2 + IG1heSBxdWFsaWZ5IGZvciB0YXggY3JlZGl0cy4gU29sYXIgZW5lcmd5IHN5 + c3RlbXMgc2hhbGwgYmUgbWFkZSBvZiBuZXcgZXF1aXBtZW50LCBjb21wb25l + bnRzIGFuZCBtYXRlcmlhbHMuIElmIGluc3RhbGxlZCBieSBhIGNvbnRyYWN0 + b3IsIGhhdmUgYSB3cml0dGVuIG1pbmltdW0gdHdvLXllYXIgd2FycmFudHkg + cHJvdmlkZWQgYnkgdGhlIGNvbnRyYWN0b3Igb24gcGFydHMsIGVxdWlwbWVu + dCBhbmQgbGFib3IuIn0seyJpbmNlbnRpdmVJZCI6MzE2MDMyOSwibWFzdGVy + SW5jZW50aXZlSWQiOjMxNjAzMjksImVsaWdpYmlsaXR5IjoiRUxJR0lCTEUi + LCJ0YXJpZmZDb2RlIjoiTm9uZSIsImluY2VudGl2ZU5hbWUiOiJSZXNpZGVu + dGlhbCBSZW5ld2FibGUgRW5lcmd5IFRheCBDcmVkaXQiLCJsc2VJZCI6MTAw + Mjg5LCJsc2VOYW1lIjoiU3RhdGUgb2YgTmV3IE1leGljbyBJbmNlbnRpdmVz + Iiwic2VydmljZVR5cGUiOiJTT0xBUl9QViIsImN1c3RvbWVyQ2xhc3MiOiJS + RVNJREVOVElBTCIsInN0YXJ0RGF0ZSI6IjIwMDYtMDEtMDEiLCJlbmREYXRl + IjoiMjAxNi0xMi0zMSIsImlzRXhoYXVzdGVkIjpmYWxzZSwicHJvamVjdFR5 + cGUiOiJzb2xhclB2IiwiaW5jZW50aXZlVHlwZSI6InRheENyZWRpdCIsInJh + dGUiOjMwLjAwMDAwMCwicmF0ZVVuaXQiOiJQRVJDRU5UQUdFIiwiZG9jdW1l + bnRzIjpudWxsLCJqdXJpc2RpY3Rpb24iOiJmZWRlcmFsIiwicXVhbnRpdHlL + ZXkiOnsia2V5TmFtZSI6InN5c3RlbUNvc3RNaW51c0luY2VudGl2ZXMiLCJk + aXNwbGF5TmFtZSI6IlN5c3RlbSBDb3N0IEFmdGVyIEluY2VudGl2ZXMiLCJk + ZXNjcmlwdGlvbiI6IkNvc3Qgb2YgdGhlIHNvbGFyIHN5c3RlbSBhZnRlciBp + bmNlbnRpdmVzLCByZWJhdGVzIGFuZCB0YXggY3JlZGl0cyJ9LCJxdWFudGl0 + eUtleUNhcCI6bnVsbCwic3RhdGUiOiJOTSAiLCJwZXJjZW50Q29zdENhcCI6 + bnVsbCwicGVyY2VudENvc3RDYXBLZXkiOnsia2V5TmFtZSI6bnVsbH0sInBh + eW1lbnRDYXAiOm51bGwsInBheW1lbnREdXJhdGlvbiI6MSwiaW5jZW50aXZl + UGFpZFRvIjoidGVuYW50T3JPd25lciIsInByb2plY3RUeXBlRXhjbHVzaXZl + IjpmYWxzZSwiYXBwbGljYWJpbGl0aWVzIjpbXSwic3VtbWFyeSI6IkEgdGF4 + cGF5ZXIgbWF5IGNsYWltIGEgY3JlZGl0IG9mIDMwJSBvZiBxdWFsaWZpZWQg + ZXhwZW5kaXR1cmVzLCBhZnRlciBkZWR1Y3RpbmcgaW5jZW50aXZlcywgd2l0 + aCBubyB1cHBlciBsaW1pdCBmb3IgYSBzeXN0ZW0gdGhhdCBzZXJ2ZXMgYSBk + d2VsbGluZyB1bml0IGxvY2F0ZWQgaW4gdGhlIFVuaXRlZCBTdGF0ZXMgdGhh + dCBpcyBvd25lZCBhbmQgdXNlZCBhcyBhIHJlc2lkZW5jZSBieSB0aGUgdGF4 + cGF5ZXIuIEV4cGVuZGl0dXJlcyB3aXRoIHJlc3BlY3QgdG8gdGhlIGVxdWlw + bWVudCBhcmUgdHJlYXRlZCBhcyBtYWRlIHdoZW4gdGhlIGluc3RhbGxhdGlv + biBpcyBjb21wbGV0ZWQuIElmIHRoZSBpbnN0YWxsYXRpb24gaXMgYXQgYSBu + ZXcgaG9tZSwgdGhlIFwicGxhY2VkIGluIHNlcnZpY2VcIiBkYXRlIGlzIHRo + ZSBkYXRlIG9mIG9jY3VwYW5jeSBieSB0aGUgaG9tZW93bmVyLiBFeHBlbmRp + dHVyZXMgaW5jbHVkZSBsYWJvciBjb3N0cyBmb3Igb24tc2l0ZSBwcmVwYXJh + dGlvbiwgYXNzZW1ibHkgb3Igb3JpZ2luYWwgc3lzdGVtIGluc3RhbGxhdGlv + biwgYW5kIGZvciBwaXBpbmcgb3Igd2lyaW5nIHRvIGludGVyY29ubmVjdCBh + IHN5c3RlbSB0byB0aGUgaG9tZS4gSWYgdGhlIGZlZGVyYWwgdGF4IGNyZWRp + dCBleGNlZWRzIHRheCBsaWFiaWxpdHksIHRoZSBleGNlc3MgYW1vdW50IG1h + eSBiZSBjYXJyaWVkIGZvcndhcmQgdG8gdGhlIHN1Y2NlZWRpbmcgdGF4YWJs + ZSB5ZWFyLiBUaGUgZXhjZXNzIGNyZWRpdCBtYXkgYmUgY2FycmllZCBmb3J3 + YXJkIHVudGlsIDIwMTYsIGJ1dCBpdCBpcyB1bmNsZWFyIHdoZXRoZXIgdGhl + IHVudXNlZCB0YXggY3JlZGl0IGNhbiBiZSBjYXJyaWVkIGZvcndhcmQgYWZ0 + ZXIgdGhlbi4iLCJyZXF1aXJlbWVudHMiOiJUaGUgc3lzdGVtIG11c3QgYmUg + Y2VydGlmaWVkIGJ5IHRoZSBTb2xhciBSYXRpbmcgYW5kIENlcnRpZmljYXRp + b24gQ29ycG9yYXRpb24gKFNSQ0MpIG9yIGEgY29tcGFyYWJsZSBlbnRpdHkg + ZW5kb3JzZWQgYnkgdGhlIGdvdmVybm1lbnQgb2YgdGhlIHN0YXRlIGluIHdo + aWNoIHRoZSBwcm9wZXJ0eSBpcyBpbnN0YWxsZWQuIn0seyJpbmNlbnRpdmVJ + ZCI6MzE2MDQ1OSwibWFzdGVySW5jZW50aXZlSWQiOjMxNjA0NTksImVsaWdp + YmlsaXR5IjoiQ09VTERfQkVfRUxJR0lCTEUiLCJyZXF1aXJlZERhdGEiOlt7 + ImFwcGxpY2FiaWxpdHlLZXkiOiJzeXN0ZW1Pd25lcnNoaXAiLCJkaXNwbGF5 + TmFtZSI6IlN5c3RlbSBPd25lcnNoaXAiLCJkZXNjcmlwdGlvbiI6IklmIGlu + Y2VudGl2ZSByZXF1aXJlcyB0aGUgc3lzdGVtIHRvIGJlIG93bmVkIGJ5IHRo + ZSBIb3N0IG9yIFRoaXJkIFBhcnR5IHRvIHF1YWxpZnkuICAiLCJyZXF1aXJl + ZFZhbHVlIjoiaG9zdCIsIm9wZXJhdG9yIjoiPSJ9XSwidGFyaWZmQ29kZSI6 + Ik5BIiwiaW5jZW50aXZlTmFtZSI6IlN1bnNlbnNlIFNvbGFyIFBWIFByb2dy + YW0iLCJsc2VJZCI6MTk4OCwibHNlTmFtZSI6IkR1a2UgRW5lcmd5IChQcm9n + cmVzcyBFbmVyZ3kgQ2Fyb2xpbmFzIEluYykiLCJzZXJ2aWNlVHlwZSI6IlNP + TEFSX1BWIiwiY3VzdG9tZXJDbGFzcyI6IlJFU0lERU5USUFMIiwic3RhcnRE + YXRlIjoiMjAxMy0wNC0wMSIsImVuZERhdGUiOiIyMDE1LTAxLTAxIiwiaXNF + eGhhdXN0ZWQiOnRydWUsInByb2plY3RUeXBlIjoic29sYXJQdiIsImluY2Vu + dGl2ZVR5cGUiOiJyZWJhdGUiLCJyYXRlIjo1MDAuMDAwMDAwLCJyYXRlVW5p + dCI6IkNPU1RfUEVSX1VOSVQiLCJkb2N1bWVudHMiOm51bGwsImp1cmlzZGlj + dGlvbiI6InV0aWxpdHkiLCJxdWFudGl0eUtleSI6eyJrZXlOYW1lIjoic3lz + dGVtU2l6ZUFjIiwiZGlzcGxheU5hbWUiOiJTeXN0ZW0gU2l6ZSBBQyIsImRl + c2NyaXB0aW9uIjoiTmFtZXBsYXRlIGNhcGFjaXR5IChrVykgdGltZXMgaW52 + ZXJ0ZXIgZWZmaWNpZW5jeSJ9LCJxdWFudGl0eUtleUNhcCI6bnVsbCwic3Rh + dGUiOiJTQyIsInBlcmNlbnRDb3N0Q2FwIjpudWxsLCJwZXJjZW50Q29zdENh + cEtleSI6eyJrZXlOYW1lIjpudWxsfSwicGF5bWVudENhcCI6bnVsbCwicGF5 + bWVudER1cmF0aW9uIjoxLCJpbmNlbnRpdmVQYWlkVG8iOiJ0ZW5hbnRPck93 + bmVyIiwicHJvamVjdFR5cGVFeGNsdXNpdmUiOmZhbHNlLCJhcHBsaWNhYmls + aXRpZXMiOlt7ImFwcGxpY2FiaWxpdHlLZXkiOiJzeXN0ZW1Pd25lcnNoaXAi + LCJkaXNwbGF5TmFtZSI6IlN5c3RlbSBPd25lcnNoaXAiLCJkZXNjcmlwdGlv + biI6IklmIGluY2VudGl2ZSByZXF1aXJlcyB0aGUgc3lzdGVtIHRvIGJlIG93 + bmVkIGJ5IHRoZSBIb3N0IG9yIFRoaXJkIFBhcnR5IHRvIHF1YWxpZnkuICAi + LCJyZXF1aXJlZFZhbHVlIjoiaG9zdCIsIm9wZXJhdG9yIjoiPSJ9XSwic3Vt + bWFyeSI6IlRoaXMgcHJvZ3JhbSBpcyBwYXJ0IG9mIER1a2UgRW5lcmd5J3Mg + b25nb2luZyBjb21taXRtZW50IHRvIG1ha2luZyByZW5ld2FibGUgZW5lcmd5 + IG1vcmUgYWNjZXNzaWJsZSBhbmQgYWZmb3JkYWJsZSBmb3IgY3VzdG9tZXJz + IGFuZCBjb21tdW5pdGllcy4gV2l0aCBzb2xhciBwaG90b3ZvbHRhaWMgKFBW + KSBwYW5lbHMgb24geW91ciByb29mdG9wLCB5b3UgY291bGQgYmUgZ2VuZXJh + dGluZyBjbGVhbiwgcmVuZXdhYmxlIGVsZWN0cmljaXR5IGFuZCBpbmNlbnRp + dmVzIGZyb20gRHVrZSBFbmVyZ3kgUHJvZ3Jlc3MuIFRoZSBpbmNlbnRpdmUg + aXMgbXVsdGlmYWNldGVkLiBDdXN0b21lcnMgd2lsbCByZWNlaXZlIGFuIHVw + ZnJvbnQgcGF5bWVudCBvZiAkMjUwIGZvciBldmVyeSBraWxvd2F0dC1BQyAo + a1ctQUMpIHRoZXkgaW5zdGFsbCBvbiB0aGVpciBob21lLCBhbmQgdGhleSB3 + aWxsIHJlY2VpdmUgbW9udGhseSBjcmVkaXRzIG9uIHRoZWlyIGJpbGwgb2Yg + JDQuNTAgcGVyIGtXLUFDLiBGb3IgaW5zdGFuY2UsIGlmIGEgY3VzdG9tZXIg + aW5zdGFsbHMgYSAxMCBrVy1BQyBzeXN0ZW0sIHRoZSBsYXJnZXN0IHN5c3Rl + bSBlbGlnaWJsZSB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgcHJvZ3JhbSwgdGhl + IGN1c3RvbWVyIHdpbGwgcmVjZWl2ZSBhIGNoZWNrIGZvciAkMjUwMCBwbHVz + IGEgYmlsbCBjcmVkaXQgb2YgJDQ1IG9uIHRoZWlyIG1vbnRobHkgYmlsbHMu + IFRvIHBhcnRpY2lwYXRlIGluIHRoZSBwcm9ncmFtLCB0aGUgY3VzdG9tZXIg + bXVzdCBzdXJyZW5kZXIgYWxsIHRoZWlyIFJlbmV3YWJsZSBFbmVyZ3kgQ3Jl + ZGl0cyAoUkVDcyopIHRvIER1a2UgRW5lcmd5IFByb2dyZXNzIGZvciBhIHBl + cmlvZCBvZiBmaXZlIHllYXJzIGFuZCB0aGV5IHdpbGwgcmVjZWl2ZSB0aGUg + JDQuNTAgcGVyIGtXIGJpbGwgY3JlZGl0cyB0aHJvdWdob3V0IHRob3NlIGZp + dmUgeWVhcnMuIiwicmVxdWlyZW1lbnRzIjoiQSByZXNpZGVudGlhbCBjdXN0 + b21lciBzZXJ2ZWQgYnkgRHVrZSBFbmVyZ3kgUHJvZ3Jlc3MsIHdoaWNoIGlz + IGxvY2F0ZWQgaW4gU291dGggQ2Fyb2xpbmEuIFRoZSBjdXN0b21lciBtdXN0 + IGJlIHRoZSBhY2NvdW50IGhvbGRlciwgb3duIGFuZCBvY2N1cHkgdGhlIGhv + bWUgdXBvbiB3aGljaCB0aGUgc29sYXIgUFYgc3lzdGVtIGlzIGluc3RhbGxl + ZCwgYW5kIG93biB0aGUgcHJvcG9zZWQgc29sYXIgUFYgc3lzdGVtLiBQViBz + eXN0ZW0gbXVzdCBiZSByb29mdG9wLW1vdW50ZWQgYW5kIHJhbmdlIGluIHNp + emUgZnJvbSAyIGtXIEFDIHRvIDEwIGtXIEFDLiBTeXN0ZW1zIG11c3QgYmUg + aW5zdGFsbGVkIGJ5IGEgbGljZW5zZWQgY29udHJhY3RvciwgbWVldCBlbGVj + dHJpYyBhbmQgc2FmZXR5IHN0YW5kYXJkcyBhbmQgYmUgY2FwYWJsZSBvZiBw + cm9kdWNpbmcgYW1pbmltdW0gb2YgMSwyMDAga1doL3BlciBrVyBBQyBhbm51 + YWxseS4ifSx7ImluY2VudGl2ZUlkIjozMTYzNDEyLCJtYXN0ZXJJbmNlbnRp + dmVJZCI6MzE2MzQxMiwiZWxpZ2liaWxpdHkiOiJDT1VMRF9CRV9FTElHSUJM + RSIsInJlcXVpcmVkRGF0YSI6W3siYXBwbGljYWJpbGl0eUtleSI6InN5c3Rl + bVNpemUiLCJkaXNwbGF5TmFtZSI6IlN5c3RlbSBTaXplIiwiZGVzY3JpcHRp + b24iOiJOYW1lcGxhdGUgY2FwYWNpdHkgKGtXKS4iLCJtaW5WYWx1ZSI6MS4w + MCwibWF4VmFsdWUiOjIwLjAwLCJxdWFudGl0eVVuaXQiOiJrVyJ9LHsiYXBw + bGljYWJpbGl0eUtleSI6InN5c3RlbU93bmVyc2hpcCIsImRpc3BsYXlOYW1l + IjoiU3lzdGVtIE93bmVyc2hpcCIsImRlc2NyaXB0aW9uIjoiSWYgaW5jZW50 + aXZlIHJlcXVpcmVzIHRoZSBzeXN0ZW0gdG8gYmUgb3duZWQgYnkgdGhlIEhv + c3Qgb3IgVGhpcmQgUGFydHkgdG8gcXVhbGlmeS4gICIsInJlcXVpcmVkVmFs + dWUiOiJob3N0Iiwib3BlcmF0b3IiOiI9In1dLCJ0YXJpZmZDb2RlIjoiTm9u + ZSIsImluY2VudGl2ZU5hbWUiOiJSZXNpZGVudGlhbCBDbGVhbiBFbmVyZ3kg + R3JhbnQgUHJvZ3JhbSAtIFNvbGFyIFBWIiwibHNlSWQiOjEwMDMwMiwibHNl + TmFtZSI6IlN0YXRlIG9mIE1hcnlsYW5kIEluY2VudGl2ZXMiLCJzZXJ2aWNl + VHlwZSI6IlNPTEFSX1BWIiwiY3VzdG9tZXJDbGFzcyI6IlJFU0lERU5USUFM + Iiwic3RhcnREYXRlIjoiMjAxMi0wNy0wMSIsImVuZERhdGUiOm51bGwsImlz + RXhoYXVzdGVkIjpmYWxzZSwicHJvamVjdFR5cGUiOiJzb2xhclB2IiwiaW5j + ZW50aXZlVHlwZSI6InJlYmF0ZSIsInJhdGUiOjEwMDAuMDAwMDAwLCJyYXRl + VW5pdCI6IkNPU1RfUEVSX1VOSVQiLCJkb2N1bWVudHMiOm51bGwsImp1cmlz + ZGljdGlvbiI6InN0YXRlIiwicXVhbnRpdHlLZXkiOnsia2V5TmFtZSI6bnVs + bH0sInF1YW50aXR5S2V5Q2FwIjpudWxsLCJzdGF0ZSI6Ik1EIiwicGVyY2Vu + dENvc3RDYXAiOm51bGwsInBlcmNlbnRDb3N0Q2FwS2V5Ijp7ImtleU5hbWUi + Om51bGx9LCJwYXltZW50Q2FwIjpudWxsLCJwYXltZW50RHVyYXRpb24iOjEs + ImluY2VudGl2ZVBhaWRUbyI6InRlbmFudE9yT3duZXIiLCJwcm9qZWN0VHlw + ZUV4Y2x1c2l2ZSI6ZmFsc2UsImFwcGxpY2FiaWxpdGllcyI6W3siYXBwbGlj + YWJpbGl0eUtleSI6InN5c3RlbU93bmVyc2hpcCIsImRpc3BsYXlOYW1lIjoi + U3lzdGVtIE93bmVyc2hpcCIsImRlc2NyaXB0aW9uIjoiSWYgaW5jZW50aXZl + IHJlcXVpcmVzIHRoZSBzeXN0ZW0gdG8gYmUgb3duZWQgYnkgdGhlIEhvc3Qg + b3IgVGhpcmQgUGFydHkgdG8gcXVhbGlmeS4gICIsInJlcXVpcmVkVmFsdWUi + OiJob3N0Iiwib3BlcmF0b3IiOiI9In0seyJhcHBsaWNhYmlsaXR5S2V5Ijoi + c3lzdGVtU2l6ZSIsImRpc3BsYXlOYW1lIjoiU3lzdGVtIFNpemUiLCJkZXNj + cmlwdGlvbiI6Ik5hbWVwbGF0ZSBjYXBhY2l0eSAoa1cpLiIsIm1pblZhbHVl + IjoxLjAwLCJtYXhWYWx1ZSI6MjAuMDAsInF1YW50aXR5VW5pdCI6ImtXIn1d + LCJzdW1tYXJ5IjoiTWFyeWxhbmQncyBSZXNpZGVudGlhbCBDbGVhbiBFbmVy + Z3kgR3JhbnQgUHJvZ3JhbSwgYWRtaW5pc3RlcmVkIGJ5IHRoZSBNYXJ5bGFu + ZCBFbmVyZ3kgQWRtaW5pc3RyYXRpb24gKE1FQSksIHByb3ZpZGVzIGZpbmFu + Y2lhbCBpbmNlbnRpdmVzIHRvIGhvbWVvd25lcnMgdGhhdCBpbnN0YWxsIHNv + bGFyIHdhdGVyLWhlYXRpbmcgc3lzdGVtcyBvciBzb2xhci1lbGVjdHJpYyAo + UFYpIHN5c3RlbXMuIEluY3JlYXNpbmcgdGhlIGFtb3VudCBvZiByZW5ld2Fi + bGUgZW5lcmd5IGlzIG9uZSBvZiB0aGUgU3RhdGXigJlzIGtleSBwb2xpY3kg + Z29hbHMuIFRoZSBNYXJ5bGFuZCBFbmVyZ3kgQWRtaW5pc3RyYXRpb24gaXMg + dGFza2VkIHdpdGggYWNoaWV2aW5nIHRoZSBzdGF0ZeKAmXMgUmVuZXdhYmxl + IFBvcnRmb2xpbyBTdGFuZGFyZCAoUlBTKS4gQ3VycmVudGx5LCB0aGUgUlBT + IHJlcXVpcmVzIHRoYXQgMjAlIG9mIGVuZXJneSBzb2xkIGluIE1hcnlsYW5k + IGluIDIwMjIgY29tZSBmcm9tIHF1YWxpZmllZCByZW5ld2FibGUgZW5lcmd5 + IHJlc291cmNlcywgd2l0aCAyJSBjb21pbmcgZnJvbSBxdWFsaWZpZWQgc29s + YXIgcmVzb3VyY2VzLkdyYW50cyBhcmUgYWxsb2NhdGVkIG9uIGEgZmlyc3Qg + Y29tZS9maXJzdCBzZXJ2ZWQgYmFzaXMgYWNyb3NzIHRlY2hub2xvZ2llcyBh + bmQgYXJlIHN1YmplY3QgdG8gY2hhbmdlIGluIGFtb3VudCBhbmQgZXhpc3Rl + bmNlIGJhc2VkIG9uIGZ1bmRpbmcgYXZhaWxhYmlsaXR5LiBBIGhvbWUgb3du + ZXIgbWF5IHJlY2VpdmUgYXdhcmRzIHRoYXQgYWdncmVnYXRlIHVwIHRvIHRo + ZSBtYXhpbXVtIGF3YXJkIHBlciB0ZWNobm9sb2d5IHBlciBmaXNjYWwgeWVh + ciAoZnJvbSBKdWx5IDEgb2YgYW55IGdpdmVuIHllYXIgdGhyb3VnaCBKdW5l + IDMwIG9mIHRoZSBuZXh0KS4iLCJyZXF1aXJlbWVudHMiOiJUaGUgcHJvcGVy + dHkgbXVzdCBiZSBhIHByaW1hcnkgTWFyeWxhbmQgcmVzaWRlbmNlLiBPbmx5 + IHB1cmNoYXNlZCBzb2xhciBwaG90b3ZvbHRhaWMgc3lzdGVtcyBhcmUgZWxp + Z2libGUgdG8gYXBwbHkgZm9yIHRoZSBSZXNpZGVudGlhbCBDRUdQIFByb2dy + YW0uIE11bHRpcGxlIHByb2plY3RzIG9uIGNvbnRpZ3VvdXMgcGFyY2VscyBv + ZiBwcm9wZXJ0eSB3aWxsIGJlIGNvbnNpZGVyZWQgb25lIHByb2plY3QuIEEg + cHJvcGVydHkgbWF5IG5vdCByZWNlaXZlIG1vcmUgdGhhbiBvbmUgZ3JhbnQg + cGVyIHByb2plY3QgcGVyIGZpc2NhbCB5ZWFyLiAoTm90ZTogVGhlIHRlcm0g + XCJwcm9qZWN0XCIgaXMgZGVmaW5lZCBieSB0aGUgcHJvZ3JhbSBtYW5hZ2Vy + KS4gTUVBIGNhbm5vdCBvZmZlciBncmFudHMgdG8gYSBwcm9wZXJ0eSBoZWxk + IGluIGEgdHJ1c3QuIEFwcGxpY2F0aW9ucyBoYXZlIHRvIGJlIHN1Ym1pdHRl + ZCB0byBNRUEgd2l0aGluIDEyIG1vbnRocyBvZiBpbnN0YWxsYXRpb24uIFBW + IHN5c3RlbSBoYXJkd2FyZSBtdXN0IGJlIGluIGNvbXBsaWFuY2Ugd2l0aCBh + bGwgYXBwbGljYWJsZSBwZXJmb3JtYW5jZSBhbmQgc2FmZXR5IHN0YW5kYXJk + cy4ifSx7ImluY2VudGl2ZUlkIjozMTYzNDU2LCJtYXN0ZXJJbmNlbnRpdmVJ + ZCI6MzE2MzQ1NiwiZWxpZ2liaWxpdHkiOiJFTElHSUJMRSIsInRhcmlmZkNv + ZGUiOiJOb25lIiwiaW5jZW50aXZlTmFtZSI6IlJlc2lkZW50aWFsIFNvbGFy + IEVuZXJneSBTeXN0ZW1zIFRheCBDcmVkaXQiLCJsc2VJZCI6MTAwMjgzLCJs + c2VOYW1lIjoiU3RhdGUgb2YgQXJpem9uYSBJbmNlbnRpdmVzIiwic2Vydmlj + ZVR5cGUiOiJTT0xBUl9QViIsImN1c3RvbWVyQ2xhc3MiOiJSRVNJREVOVElB + TCIsInN0YXJ0RGF0ZSI6IjIwMTMtMDQtMDEiLCJlbmREYXRlIjpudWxsLCJp + c0V4aGF1c3RlZCI6ZmFsc2UsInByb2plY3RUeXBlIjoic29sYXJQdiIsImlu + Y2VudGl2ZVR5cGUiOiJ0YXhDcmVkaXQiLCJyYXRlIjoyNS4wMDAwMDAsInJh + dGVVbml0IjoiUEVSQ0VOVEFHRSIsImRvY3VtZW50cyI6bnVsbCwianVyaXNk + aWN0aW9uIjoic3RhdGUiLCJxdWFudGl0eUtleSI6eyJrZXlOYW1lIjoic3lz + dGVtQ29zdCIsImRpc3BsYXlOYW1lIjoiU3lzdGVtIENvc3QiLCJkZXNjcmlw + dGlvbiI6IkNvc3Qgb2YgdGhlIHNvbGFyIHN5c3RlbSBpbiBVU0QuICJ9LCJx + dWFudGl0eUtleUNhcCI6bnVsbCwic3RhdGUiOiJBWiIsInBlcmNlbnRDb3N0 + Q2FwIjpudWxsLCJwZXJjZW50Q29zdENhcEtleSI6eyJrZXlOYW1lIjpudWxs + fSwicGF5bWVudENhcCI6MTAwMCwicGF5bWVudER1cmF0aW9uIjoxLCJpbmNl + bnRpdmVQYWlkVG8iOiJ0ZW5hbnRPck93bmVyIiwicHJvamVjdFR5cGVFeGNs + dXNpdmUiOmZhbHNlLCJhcHBsaWNhYmlsaXRpZXMiOltdLCJzdW1tYXJ5Ijoi + QXJpem9uYSdzIFNvbGFyIEVuZXJneSBDcmVkaXQgaXMgYXZhaWxhYmxlIHRv + IGluZGl2aWR1YWwgdGF4cGF5ZXJzIHdobyBpbnN0YWxsIGEgc29sYXIgZW5l + cmd5IGRldmljZSBhdCB0aGUgdGF4cGF5ZXIncyBBcml6b25hIHJlc2lkZW5j + ZS4gVGhlIGNyZWRpdCBpcyBhbGxvd2VkIGFnYWluc3QgdGhlIHRheHBheWVy + J3MgcGVyc29uYWwgaW5jb21lIHRheCBpbiB0aGUgYW1vdW50IG9mIDI1JSBv + ZiB0aGUgY29zdCBvZiBhIHNvbGFyIGVuZXJneSBkZXZpY2UsIHdpdGggYSAk + MSwwMDAgbWF4aW11bSBhbGxvd2FibGUgbGltaXQsIHJlZ2FyZGxlc3Mgb2Yg + dGhlIG51bWJlciBvZiBlbmVyZ3kgZGV2aWNlcyBpbnN0YWxsZWQuIFRoZSBj + cmVkaXQgaXMgY2xhaW1lZCBpbiB0aGUgeWVhciBvZiBpbnN0YWxsYXRpb24u + IElmIHRoZSBhbW91bnQgb2YgdGhlIGNyZWRpdCBleGNlZWRzIGEgdGF4cGF5 + ZXIncyBsaWFiaWxpdHkgaW4gYSBjZXJ0YWluIHllYXIsIHRoZSB1bnVzZWQg + cG9ydGlvbiBvZiB0aGUgY3JlZGl0IG1heSBiZSBjYXJyaWVkIGZvcndhcmQg + Zm9yIHVwIHRvIGZpdmUgeWVhcnMuIFF1YWxpZnlpbmcgdGVjaG5vbG9naWVz + IGluY2x1ZGUgc29sYXIgZG9tZXN0aWMgd2F0ZXIgaGVhdGluZyBzeXN0ZW1z + LCBzb2xhciBzd2ltbWluZyBwb29sIGFuZCBzcGEgaGVhdGluZyBzeXN0ZW1z + LCBwaG90b3ZvbHRhaWMgc3lzdGVtcywgcGhvdG92b2x0YWljIHBob25lcyBh + bmQgc3RyZWV0IGxpZ2h0cywgcGFzc2l2ZSBzb2xhciBidWlsZGluZyBzeXN0 + ZW1zICh0cm9tYmUgd2FsbHMsIHRoZXJtYWwgbWFzcywgZXRjLiksIGFuZCBz + b2xhciBkYXlsaWdodGluZyBzeXN0ZW1zIChleGNsdWRpbmcgY29udmVudGlv + bmFsIHNreWxpZ2h0cykuIiwicmVxdWlyZW1lbnRzIjoiVGhlIHNvbGFyIGVu + ZXJneSBjcmVkaXQgaXMgZXF1YWwgdG8gMjUgcGVyY2VudCBvZiB0aGUgY29z + dCBvZiB0aGUgZGV2aWNlLiBUaGUgbWF4aW11bSBjcmVkaXQgaW4gYSB0YXhh + YmxlIHllYXIgY2Fubm90IGV4Y2VlZCAkMSwwMDAsIGFuZCB0aGUgY3VtdWxh + dGl2ZSBzb2xhciBlbmVyZ3kgY3JlZGl0cyBhbGxvd2VkIGZvciB0aGUgc2Ft + ZSByZXNpZGVuY2UgY2Fubm90IGV4Y2VlZCAkMSwwMDAuIFRoZSBtYXhpbXVt + IGNyZWRpdCBhIHRheHBheWVyIG1heSB0YWtlIGZvciBhbGwgc29sYXIgZW5l + cmd5IGRldmljZXMgaW5zdGFsbGVkIGluIHRoZSBzYW1lIHJlc2lkZW5jZSBj + YW5ub3QgZXhjZWVkICQxLDAwMCBpbiB0aGUgYWdncmVnYXRlLiBUYXhwYXll + ciBtYXkgY2FycnkgdGhlIGNyZWRpdCBmb3J3YXJkIGZvciBhIHBlcmlvZCBu + b3QgZXhjZWVkaW5nIGZpdmUgeWVhci4gVGhlIGNyZWRpdCBpcyBhbGxvd2Vk + IGZvciB0aGUgaW5zdGFsbGF0aW9uIG9mIGEgcXVhbGlmeWluZyBzb2xhciBl + bmVyZ3kgZGV2aWNlLiBUaGUgYWRkaXRpb24gb2YgYSBuZXcgY29tcG9uZW50 + IHBhcnQgb3IgYW5jaWxsYXJ5IGVxdWlwbWVudCB0byBhbiBleGlzdGluZyBz + eXN0ZW0gd291bGQgbm90IHF1YWxpZnkuIn0seyJpbmNlbnRpdmVJZCI6MzE2 + MzQ2NiwibWFzdGVySW5jZW50aXZlSWQiOjMxNjM0NjYsImVsaWdpYmlsaXR5 + IjoiRUxJR0lCTEUiLCJ0YXJpZmZDb2RlIjoiRUMiLCJpbmNlbnRpdmVOYW1l + IjoiUmVzaWRlbnRpYWwgUmVuZXdhYmxlIEVuZXJneSBJbmNvbWUgVGF4IENy + ZWRpdCIsImxzZUlkIjoxMDAyOTgsImxzZU5hbWUiOiJTdGF0ZSBvZiBNYXNz + YWNodXNldHRzIEluY2VudGl2ZXMiLCJzZXJ2aWNlVHlwZSI6IlNPTEFSX1BW + IiwiY3VzdG9tZXJDbGFzcyI6IlJFU0lERU5USUFMIiwic3RhcnREYXRlIjoi + MTk3OS0wMS0wMSIsImVuZERhdGUiOm51bGwsImlzRXhoYXVzdGVkIjpmYWxz + ZSwicHJvamVjdFR5cGUiOiJzb2xhclB2IiwiaW5jZW50aXZlVHlwZSI6InRh + eENyZWRpdCIsInJhdGUiOjE1LjAwMDAwMCwicmF0ZVVuaXQiOiJQRVJDRU5U + QUdFIiwiZG9jdW1lbnRzIjpudWxsLCJqdXJpc2RpY3Rpb24iOiJzdGF0ZSIs + InF1YW50aXR5S2V5Ijp7ImtleU5hbWUiOiJzeXN0ZW1Db3N0TWludXNJbmNl + bnRpdmVzIiwiZGlzcGxheU5hbWUiOiJTeXN0ZW0gQ29zdCBBZnRlciBJbmNl + bnRpdmVzIiwiZGVzY3JpcHRpb24iOiJDb3N0IG9mIHRoZSBzb2xhciBzeXN0 + ZW0gYWZ0ZXIgaW5jZW50aXZlcywgcmViYXRlcyBhbmQgdGF4IGNyZWRpdHMi + fSwicXVhbnRpdHlLZXlDYXAiOm51bGwsInN0YXRlIjoiTUEiLCJwZXJjZW50 + Q29zdENhcCI6bnVsbCwicGVyY2VudENvc3RDYXBLZXkiOnsia2V5TmFtZSI6 + bnVsbH0sInBheW1lbnRDYXAiOjEwMDAsInBheW1lbnREdXJhdGlvbiI6MSwi + aW5jZW50aXZlUGFpZFRvIjoidGVuYW50T3JPd25lciIsInByb2plY3RUeXBl + RXhjbHVzaXZlIjpmYWxzZSwiYXBwbGljYWJpbGl0aWVzIjpbXSwic3VtbWFy + eSI6Ik1hc3NhY2h1c2V0dHMgYWxsb3dzIGEgMTUlIGNyZWRpdCB1cCB0byAk + MSwwMDAgYWdhaW5zdCB0aGUgc3RhdGUgaW5jb21lIHRheCBmb3IgdGhlIG5l + dCBleHBlbmRpdHVyZSBvZiBhIHJlbmV3YWJsZS1lbmVyZ3kgc3lzdGVtIChp + bmNsdWRpbmcgaW5zdGFsbGF0aW9uIGNvc3RzKSBpbnN0YWxsZWQgb24gYW4g + aW5kaXZpZHVhbCdzIHByaW1hcnkgcmVzaWRlbmNlLiBJZiB0aGUgY3JlZGl0 + IGFtb3VudCBpcyBncmVhdGVyIHRoYW4gYSByZXNpZGVudCdzIGluY29tZSB0 + YXggbGlhYmlsaXR5LCB0aGUgZXhjZXNzIGNyZWRpdCBhbW91bnQgbWF5IGJl + IGNhcnJpZWQgZm9yd2FyZCB0byB0aGUgbmV4dCBzdWNjZWVkaW5nIHllYXIg + Zm9yIHVwIHRvIHRocmVlIHllYXJzLiBFbGlnaWJsZSB0ZWNobm9sb2dpZXMg + aW5jbHVkZSBzb2xhciB3YXRlciBhbmQgc3BhY2UgaGVhdGluZywgcGhvdG92 + b2x0YWljcyAoUFYpLCBhbmQgd2luZC1lbmVyZ3kgc3lzdGVtcy4gVGhlIG9y + aWdpbmFsIHVzZSBvZiB0aGUgc3lzdGVtIG11c3QgYmVnaW4gd2l0aCB0aGUg + dGF4cGF5ZXIsIGFuZCB0aGUgc3lzdGVtIHNob3VsZCBcInJlYXNvbmFibHkg + YmUgZXhwZWN0ZWQgdG8gcmVtYWluIGluIG9wZXJhdGlvbiBmb3IgYXQgbGVh + c3QgZml2ZSB5ZWFycy5cIiBUaGUgY3JlZGl0IGlzIGF2YWlsYWJsZSB0byBh + bnkgb3duZXIgb3IgdGVuYW50IG9mIHJlc2lkZW50aWFsIHByb3BlcnR5LiBG + b3IgYSBuZXdseSBjb25zdHJ1Y3RlZCBob21lLCB0aGUgY3JlZGl0IGlzIGF2 + YWlsYWJsZSB0byB0aGUgb3JpZ2luYWwgb3duZXIvb2NjdXBhbnQuIEpvaW50 + IG93bmVycyBvZiBhIHJlc2lkZW50aWFsIHByb3BlcnR5IHNoYWxsIHNoYXJl + IGFueSBjcmVkaXQgYXZhaWxhYmxlIHRvIHRoZSBwcm9wZXJ0eSB1bmRlciB0 + aGlzIHN1YnNlY3Rpb24gaW4gdGhlIHNhbWUgcHJvcG9ydGlvbiBhcyB0aGVp + ciBvd25lcnNoaXAgaW50ZXJlc3QuIiwicmVxdWlyZW1lbnRzIjoiVG8gdGFr + ZSB0aGUgY3JlZGl0IGZvciBhIHJlbmV3YWJsZSBlbmVyZ3kgc291cmNlIGl0 + ZW06IDEuIHlvdSBtdXN0IGJlIHRoZSBmaXJzdCBvbmUgdG8gdXNlIHRoZSBp + dGVtOyAyLiBpdCBtdXN0IGJlIGV4cGVjdGVkIHRvIGxhc3QgZml2ZSB5ZWFy + czsgYW5kIDMuIGl0IG11c3QgbWVldCB0aGUgcGVyZm9ybWFuY2UgYW5kIHF1 + YWxpdHkgc3RhbmRhcmRzIHByZXNjcmliZWQgYnkgdGhlIENvbW1pc3Npb25l + ciBvZiBSZXZlbnVlLiJ9LHsiaW5jZW50aXZlSWQiOjMxNjM0OTUsIm1hc3Rl + ckluY2VudGl2ZUlkIjozMTYzNDk1LCJlbGlnaWJpbGl0eSI6IkVMSUdJQkxF + IiwidGFyaWZmQ29kZSI6Ik5vbmUiLCJpbmNlbnRpdmVOYW1lIjoiU2luZ2xl + LUZhbWlseSBQaG90b3ZvbHRhaWMgRW5lcmd5IEluY29tZSBUYXggQ3JlZGl0 + IChOb24tUmVmdW5kYWJsZSkiLCJsc2VJZCI6MTAwMzE4LCJsc2VOYW1lIjoi + U3RhdGUgb2YgSGF3YWlpIEluY2VudGl2ZXMiLCJzZXJ2aWNlVHlwZSI6IlNP + TEFSX1BWIiwiY3VzdG9tZXJDbGFzcyI6IlJFU0lERU5USUFMIiwic3RhcnRE + YXRlIjoiMjAwOS0wNy0wMSIsImVuZERhdGUiOm51bGwsImlzRXhoYXVzdGVk + IjpmYWxzZSwicHJvamVjdFR5cGUiOiJzb2xhclB2IiwiaW5jZW50aXZlVHlw + ZSI6InRheENyZWRpdCIsInJhdGUiOjM1LjAwMDAwMCwicmF0ZVVuaXQiOiJQ + RVJDRU5UQUdFIiwiZG9jdW1lbnRzIjpudWxsLCJqdXJpc2RpY3Rpb24iOiJz + dGF0ZSIsInF1YW50aXR5S2V5Ijp7ImtleU5hbWUiOiJzeXN0ZW1Db3N0Iiwi + ZGlzcGxheU5hbWUiOiJTeXN0ZW0gQ29zdCIsImRlc2NyaXB0aW9uIjoiQ29z + dCBvZiB0aGUgc29sYXIgc3lzdGVtIGluIFVTRC4gIn0sInF1YW50aXR5S2V5 + Q2FwIjpudWxsLCJzdGF0ZSI6IkhJIiwicGVyY2VudENvc3RDYXAiOm51bGws + InBlcmNlbnRDb3N0Q2FwS2V5Ijp7ImtleU5hbWUiOm51bGx9LCJwYXltZW50 + Q2FwIjo1MDAwLCJwYXltZW50RHVyYXRpb24iOjEsImluY2VudGl2ZVBhaWRU + byI6InRlbmFudE9yT3duZXIiLCJwcm9qZWN0VHlwZUV4Y2x1c2l2ZSI6dHJ1 + ZSwiYXBwbGljYWJpbGl0aWVzIjpbXSwic3VtbWFyeSI6IjM1JSBvZiBwcm9q + ZWN0IGNvc3QgdXAgdG8gJDUsMDAwIiwicmVxdWlyZW1lbnRzIjoiRm9yIGEg + c29sYXIgZW5lcmd5IHN5c3RlbSwgc3VjaCBhcyBhIHNvbGFyIHdhdGVyIGhl + YXRlciBvciBwaG90b3ZvbHRhaWMgc3lzdGVtLCB5b3UgbWF5IHJlZHVjZSB0 + aGUgY3JlZGl0IGFtb3VudCBieSAzMCUsIHVubGVzcyBZb3VyIEhhd2FpaSBh + ZGp1c3RlZCBncm9zcyBpbmNvbWUgKEFHSSkgaXMgJDIwLDAwMCBvciBsZXNz + ICgkNDAsMDAwIG9yIGxlc3MgaWYgeW91IGFyZSBtYXJyaWVkIGZpbGluZyBh + IGpvaW50IHJldHVybikuIFRoZSBsYXcgcmVxdWlyZXMgdGhhdCBhbGwgb3Ro + ZXIgY3JlZGl0cyBvZmZzZXQgYSB0YXhwYXllcuKAmXMgdGF4IGxpYWJpbGl0 + eSBiZWZvcmUgYWxsb3dpbmcgYSByZW5ld2FibGUgZW5lcmd5IHRlY2hub2xv + Z2llcyBpbmNvbWUgdGF4IGNyZWRpdC4ifV0sInBhZ2VTdGFydCI6MCwicGFn + ZUNvdW50IjoyNX0= + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:17 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/incentive_json/_incentives/should_return_an_array_of_incentives.yml b/spec/cassettes/Genability_Client/incentive_json/_incentives/should_return_an_array_of_incentives.yml new file mode 100644 index 0000000..1861745 --- /dev/null +++ b/spec/cassettes/Genability_Client/incentive_json/_incentives/should_return_an_array_of_incentives.yml @@ -0,0 +1,1373 @@ +--- +http_interactions: +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/beta/incentives + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:57:17 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: !binary |- + eyJzdGF0dXMiOiJzdWNjZXNzIiwiY291bnQiOjQyNTEsInR5cGUiOiJJbmNl + bnRpdmUiLCJyZXN1bHRzIjpbeyJpbmNlbnRpdmVJZCI6MzE1NjI2MiwibWFz + dGVySW5jZW50aXZlSWQiOjMxNTYyNjIsImVsaWdpYmlsaXR5IjoiQ09VTERf + QkVfRUxJR0lCTEUiLCJyZXF1aXJlZERhdGEiOlt7ImFwcGxpY2FiaWxpdHlL + ZXkiOiJlbmRVc2VDb21tZXJjaWFsIiwiZGlzcGxheU5hbWUiOiJFbmQgVXNl + IENvbW1lcmNpYWwiLCJkZXNjcmlwdGlvbiI6IkVuZCBVc2UgVGVjaG5vbG9n + eSBmb3IgQ29tbWVyY2lhbCIsInJlcXVpcmVkVmFsdWUiOiJyZWZyaWdlcmF0 + aW9uIiwibWluVmFsdWUiOjAuMDAsIm1heFZhbHVlIjowLjAwLCJvcGVyYXRv + ciI6Ij0ifV0sInRhcmlmZkNvZGUiOiJOb25lIiwiaW5jZW50aXZlTmFtZSI6 + IkNvbW1lcmNpYWwgUmVmcmlnZXJhdGlvbiBSZWJhdGVzIiwibHNlSWQiOjcz + NCwibHNlTmFtZSI6IlBhY2lmaWMgR2FzICYgRWxlY3RyaWMgQ28iLCJzZXJ2 + aWNlVHlwZSI6IkVMRUNUUklDSVRZIiwiY3VzdG9tZXJDbGFzcyI6IkdFTkVS + QUwiLCJzdGFydERhdGUiOiIyMDEzLTAxLTAxIiwiZW5kRGF0ZSI6IjIwMTQt + MDEtMDEiLCJpc0V4aGF1c3RlZCI6ZmFsc2UsInByb2plY3RUeXBlIjoicmVm + cmlnZXJhdGlvbiIsImluY2VudGl2ZVR5cGUiOiJyZWJhdGUiLCJyYXRlIjoy + NS4wMDAwMDAsInJhdGVVbml0IjoiQ09TVF9QRVJfVU5JVCIsImRvY3VtZW50 + cyI6bnVsbCwianVyaXNkaWN0aW9uIjoidXRpbGl0eSIsInF1YW50aXR5S2V5 + Ijp7ImtleU5hbWUiOiJhbnRpU3dlYXRIZWF0ZXJDb250cm9scyIsImRpc3Bs + YXlOYW1lIjoiQW50aS1Td2VhdCBIZWF0ZXIgQ29udHJvbHMgIiwiZGVzY3Jp + cHRpb24iOiJBbnRpLVN3ZWF0IEhlYXRlciBDb250cm9scy4gUmVxdWlyZW1l + bnRzOiBEaXNwbGF5IHJlZnJpZ2VyYXRvcnMgbXVzdCBiZSBlcXVpcHBlZCB3 + aXRoIGh1bWlkaXR5IHNlbnNpbmcgY29udHJvbHMgdGhhdCByZWR1Y2UgdGhl + IGFtb3VudCBvZiBwb3dlciBzdXBwbGllZCB0byB0aGUgaGVhdGVycy4gTXVz + dCBzZW5zZSB0aGUgcmVsYXRpdmUgaHVtaWRpdHkgaW4gdGhlIGFpciBzdXJy + b3VuZGluZyB0aGUgZGlzcGxheSBjYXNlIGFuZCByZWR1Y2Ugb3IgdHVybiBv + ZmYgdGhlIGFudGktc3dlYXQgaGVhdGVycyBvZiB0aGUgZ2xhc3MgZG9vciAo + aWYgYXBwbGljYWJsZSkgYW5kIGRvb3IgZnJhbWUgZHVyaW5nIHBlcmlvZHMg + b2YgbG93IGh1bWlkaXR5LiBFcXVpdmFsZW50IHRlY2hub2xvZ2llcyB0aGF0 + IHJlZHVjZSBvciB0dXJuIG9mZiBhbnRpLXN3ZWF0IGhlYXRlcnMgZGVwZW5k + aW5nIG9uIHRoZSBsZXZlbCBvZiBjb25kZW5zYXRpb24gb24gdGhlIGlubmVy + IGdsYXNzIHBhbmUgbWF5IHF1YWxpZnkuIFJlYmF0ZSBhbW91bnQgaXMgYmFz + ZWQgb24gdGhlIGxpbmVhciBmb290YWdlIG9mIHRoZSBkaXNwbGF5IGNhc2Uu + IEluc3RhbGxhdGlvbiBhZGRyZXNzIG11c3QgaGF2ZSBhIGNvbW1lcmNpYWwg + ZWxlY3RyaWMgYWNjb3VudCB3aXRoIFBHJkUuIEV4Y2x1c2lvbnM6IFBsZWFz + ZSBub3RlIHRoYXQgdGhpcyByZWJhdGUgY2Fubm90IGJlIHVzZWQgaW4gY29u + anVuY3Rpb24gd2l0aCB0aGUgcmViYXRlIGZvciBOZXcgUmVmcmlnZXJhdGlv + biBEaXNwbGF5IENhc2Ugd2l0aCBEb29ycy4ifSwicXVhbnRpdHlLZXlDYXAi + Om51bGwsInN0YXRlIjoiQ0EiLCJwZXJjZW50Q29zdENhcCI6bnVsbCwicGVy + Y2VudENvc3RDYXBLZXkiOnsia2V5TmFtZSI6bnVsbH0sInBheW1lbnRDYXAi + Om51bGwsInBheW1lbnREdXJhdGlvbiI6bnVsbCwiaW5jZW50aXZlUGFpZFRv + IjoidGVuYW50T3JPd25lciIsInByb2plY3RUeXBlRXhjbHVzaXZlIjpudWxs + LCJhcHBsaWNhYmlsaXRpZXMiOlt7ImFwcGxpY2FiaWxpdHlLZXkiOiJlbmRV + c2VDb21tZXJjaWFsIiwiZGlzcGxheU5hbWUiOiJFbmQgVXNlIENvbW1lcmNp + YWwiLCJkZXNjcmlwdGlvbiI6IkVuZCBVc2UgVGVjaG5vbG9neSBmb3IgQ29t + bWVyY2lhbCIsInJlcXVpcmVkVmFsdWUiOiJyZWZyaWdlcmF0aW9uIiwibWlu + VmFsdWUiOjAuMDAsIm1heFZhbHVlIjowLjAwLCJvcGVyYXRvciI6Ij0ifV0s + InN1bW1hcnkiOm51bGwsInJlcXVpcmVtZW50cyI6IkFsbCBQRyZFIGluY2Vu + dGl2ZXMgYXBwbHkgdG93YXJkcyB0aGUgcHVyY2hhc2Ugb2YgbmV3IG9yIHJl + cGxhY2VtZW50IGVuZXJneS1lZmZpY2llbnQgZXF1aXBtZW50LiBVc2VkIG9y + IHJlYnVpbHQgZXF1aXBtZW50IGlzIG5vdCBlbGlnaWJsZSwgYW5kIGN1c3Rv + bWVycyBtdXN0IGluY2x1ZGUgcHJvb2YgdGhhdCB0aGUgYXBwbGlhbmNlcyBt + ZWV0IGFsbCB0aGUgcmVxdWlyZWQgZW5lcmd5IGVmZmljaWVuY3kgc3BlY2lm + aWNhdGlvbnMuIFBsZWFzZSBub3RlIHRoYXQgZnVuZGluZyBmb3IgdGhlc2Ug + cHJvZ3JhbXMgaXMgbGltaXRlZCBhbmQgYXZhaWxhYmxlIG9uIGEgZmlyc3Qt + Y29tZSwgZmlyc3Qtc2VydmVkIGJhc2lzIHVudGlsIGFsbG9jYXRlZCBmdW5k + cyBhcmUgZXhoYXVzdGVkIG9yIHRoZSBwcm9ncmFtIGVuZHMsIHdoaWNoZXZl + ciBjb21lcyBmaXJzdC4gVGhpcyBwcm9ncmFtIG1heSBiZSBtb2RpZmllZCBv + ciB0ZXJtaW5hdGVkIHdpdGhvdXQgcHJpb3Igbm90aWNlLCBhbmQgYWRkaXRp + b25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBhcHBseS4gSW5zdGFsbGF0aW9u + IGFkZHJlc3MgbXVzdCBoYXZlIGEgY29tbWVyY2lhbCBlbGVjdHJpYyBhY2Nv + dW50IHdpdGhQRyZFLiBGb3IgaXRlbSBsZXZlbCBzcGVjaWZpY2F0aW9ucyBy + ZWZlciB0byBjYXRhbG9nLiJ9LHsiaW5jZW50aXZlSWQiOjMxNTYyNjMsIm1h + c3RlckluY2VudGl2ZUlkIjozMTU2MjYzLCJlbGlnaWJpbGl0eSI6IkNPVUxE + X0JFX0VMSUdJQkxFIiwicmVxdWlyZWREYXRhIjpbeyJhcHBsaWNhYmlsaXR5 + S2V5IjoiZW5kVXNlQ29tbWVyY2lhbCIsImRpc3BsYXlOYW1lIjoiRW5kIFVz + ZSBDb21tZXJjaWFsIiwiZGVzY3JpcHRpb24iOiJFbmQgVXNlIFRlY2hub2xv + Z3kgZm9yIENvbW1lcmNpYWwiLCJyZXF1aXJlZFZhbHVlIjoiZm9vZFNlcnZp + Y2UiLCJvcGVyYXRvciI6Ij0ifV0sInRhcmlmZkNvZGUiOiJOb25lIiwiaW5j + ZW50aXZlTmFtZSI6IkNvbW1lcmNpYWwgRm9vZCBTZXJ2aWNlIFJlYmF0ZXMi + LCJsc2VJZCI6NzM0LCJsc2VOYW1lIjoiUGFjaWZpYyBHYXMgJiBFbGVjdHJp + YyBDbyIsInNlcnZpY2VUeXBlIjoiRUxFQ1RSSUNJVFkiLCJjdXN0b21lckNs + YXNzIjoiR0VORVJBTCIsInN0YXJ0RGF0ZSI6IjIwMTMtMDEtMDEiLCJlbmRE + YXRlIjpudWxsLCJpc0V4aGF1c3RlZCI6ZmFsc2UsInByb2plY3RUeXBlIjoi + b3RoZXIiLCJpbmNlbnRpdmVUeXBlIjoicmViYXRlIiwicmF0ZSI6MTAwMC4w + MDAwMDAsInJhdGVVbml0IjoiQ09TVF9QRVJfVU5JVCIsImRvY3VtZW50cyI6 + bnVsbCwianVyaXNkaWN0aW9uIjoidXRpbGl0eSIsInF1YW50aXR5S2V5Ijp7 + ImtleU5hbWUiOiJjb21tZXJjaWFsQ29tYmluYXRpb25PdmVuU3RlYW1lckVs + ZWN0cmljNzM0IiwiZGlzcGxheU5hbWUiOiJDb21tZXJjaWFsIENvbWJpbmF0 + aW9uIE92ZW4vU3RlYW1lciBFbGVjdHJpYyIsImRlc2NyaXB0aW9uIjoiQ29t + bWVyY2lhbCBDb21iaW5hdGlvbiBPdmVuL1N0ZWFtZXIgRWxlY3RyaWMuIFJl + cXVpcmVtZW50czogTXVzdCBoYXZlIGEgY29va2luZyBlbmVyZ3kgZWZmaWNp + ZW5jeSBvZiA1MCBwZXJjZW50IG9yIGdyZWF0ZXIgaW4gc3RlYW0gbW9kZSBh + bmQgNzAgcGVyY2VudCBjb29raW5nIGVuZXJneSBlZmZpY2llbmN5IG9yIGdy + ZWF0ZXIgaW4gY29udmVjdGlvbiBtb2RlLCB1dGlsaXppbmcgQW1lcmljYW4g + U29jaWV0eSBmb3IgVGVzdGluZyBhbmQgTWF0ZXJpYWxzIChBU1RNKSBGMjg2 + MSBNdXN0IG1lZXQgdGhlIGlkbGUgZW5lcmd5IHJhdGUgcmVxdWlyZW1lbnRz + IGluIHRoZSBFbGVjdHJpYyBDb21iaW5hdGlvbiBPdmVuL1N0ZWFtZXIgVGFi + bGUgY2F0YWxvZyBiZWxvdywgdXRpbGl6aW5nIEFTVE0gRjI4NjEuIEluc3Rh + bGxhdGlvbiBhZGRyZXNzIG11c3QgaGF2ZSBhIGNvbW1lcmNpYWwgZWxlY3Ry + aWMgYWNjb3VudCB3aXRoIFBHJkUuIn0sInF1YW50aXR5S2V5Q2FwIjpudWxs + LCJzdGF0ZSI6IkNBIiwicGVyY2VudENvc3RDYXAiOm51bGwsInBlcmNlbnRD + b3N0Q2FwS2V5Ijp7ImtleU5hbWUiOm51bGx9LCJwYXltZW50Q2FwIjpudWxs + LCJwYXltZW50RHVyYXRpb24iOm51bGwsImluY2VudGl2ZVBhaWRUbyI6InRl + bmFudE9yT3duZXIiLCJwcm9qZWN0VHlwZUV4Y2x1c2l2ZSI6bnVsbCwiYXBw + bGljYWJpbGl0aWVzIjpbeyJhcHBsaWNhYmlsaXR5S2V5IjoiZW5kVXNlQ29t + bWVyY2lhbCIsImRpc3BsYXlOYW1lIjoiRW5kIFVzZSBDb21tZXJjaWFsIiwi + ZGVzY3JpcHRpb24iOiJFbmQgVXNlIFRlY2hub2xvZ3kgZm9yIENvbW1lcmNp + YWwiLCJyZXF1aXJlZFZhbHVlIjoiZm9vZFNlcnZpY2UiLCJvcGVyYXRvciI6 + Ij0ifV0sInN1bW1hcnkiOm51bGwsInJlcXVpcmVtZW50cyI6IkFsbCBQRyZF + IGluY2VudGl2ZXMgYXBwbHkgdG93YXJkcyB0aGUgcHVyY2hhc2Ugb2YgbmV3 + IG9yIHJlcGxhY2VtZW50IGVuZXJneS1lZmZpY2llbnQgZXF1aXBtZW50LiBV + c2VkIG9yIHJlYnVpbHQgZXF1aXBtZW50IGlzIG5vdCBlbGlnaWJsZSwgYW5k + IGN1c3RvbWVycyBtdXN0IGluY2x1ZGUgcHJvb2YgdGhhdCB0aGUgYXBwbGlh + bmNlcyBtZWV0IGFsbCB0aGUgcmVxdWlyZWQgZW5lcmd5IGVmZmljaWVuY3kg + c3BlY2lmaWNhdGlvbnMuIFBsZWFzZSBub3RlIHRoYXQgZnVuZGluZyBmb3Ig + dGhlc2UgcHJvZ3JhbXMgaXMgbGltaXRlZCBhbmQgYXZhaWxhYmxlIG9uIGEg + Zmlyc3QtY29tZSwgZmlyc3Qtc2VydmVkIGJhc2lzIHVudGlsIGFsbG9jYXRl + ZCBmdW5kcyBhcmUgZXhoYXVzdGVkIG9yIHRoZSBwcm9ncmFtIGVuZHMsIHdo + aWNoZXZlciBjb21lcyBmaXJzdC4gVGhpcyBwcm9ncmFtIG1heSBiZSBtb2Rp + ZmllZCBvciB0ZXJtaW5hdGVkIHdpdGhvdXQgcHJpb3Igbm90aWNlLCBhbmQg + YWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBhcHBseS4gSW5zdGFs + bGF0aW9uIGFkZHJlc3MgbXVzdCBoYXZlIGEgY29tbWVyY2lhbCBlbGVjdHJp + YyBhY2NvdW50IHdpdGhQRyZFLiBGb3IgaXRlbSBsZXZlbCBzcGVjaWZpY2F0 + aW9ucyByZWZlciB0byBjYXRhbG9nLiJ9LHsiaW5jZW50aXZlSWQiOjMxNTYy + NjYsIm1hc3RlckluY2VudGl2ZUlkIjozMTU2MjY2LCJlbGlnaWJpbGl0eSI6 + IkNPVUxEX0JFX0VMSUdJQkxFIiwicmVxdWlyZWREYXRhIjpbeyJhcHBsaWNh + YmlsaXR5S2V5IjoiZW5kVXNlQ29tbWVyY2lhbCIsImRpc3BsYXlOYW1lIjoi + RW5kIFVzZSBDb21tZXJjaWFsIiwiZGVzY3JpcHRpb24iOiJFbmQgVXNlIFRl + Y2hub2xvZ3kgZm9yIENvbW1lcmNpYWwiLCJyZXF1aXJlZFZhbHVlIjoiYWly + Q29vbCIsIm9wZXJhdG9yIjoiPSJ9XSwidGFyaWZmQ29kZSI6Ik5vbmUiLCJp + bmNlbnRpdmVOYW1lIjoiQ29tbWVyY2lhbCBIVkFDIFJlYmF0ZXMiLCJsc2VJ + ZCI6NzM0LCJsc2VOYW1lIjoiUGFjaWZpYyBHYXMgJiBFbGVjdHJpYyBDbyIs + InNlcnZpY2VUeXBlIjoiRUxFQ1RSSUNJVFkiLCJjdXN0b21lckNsYXNzIjoi + R0VORVJBTCIsInN0YXJ0RGF0ZSI6IjIwMTMtMDEtMDEiLCJlbmREYXRlIjoi + MjAxNC0wMS0wMSIsImlzRXhoYXVzdGVkIjpmYWxzZSwicHJvamVjdFR5cGUi + OiJodmFjIiwiaW5jZW50aXZlVHlwZSI6InJlYmF0ZSIsInJhdGUiOjUwLjAw + MDAwMCwicmF0ZVVuaXQiOiJDT1NUX1BFUl9VTklUIiwiZG9jdW1lbnRzIjpu + dWxsLCJqdXJpc2RpY3Rpb24iOiJ1dGlsaXR5IiwicXVhbnRpdHlLZXkiOnsi + a2V5TmFtZSI6InJlcGxhY2VtZW50TXVsdGlwbGVTcGVlZEJydXNobGVzc1Bl + cm1hbmVudE1hZ25ldEJsb3dlck1vdG9yNzM0IiwiZGlzcGxheU5hbWUiOiJS + ZXBsYWNlbWVudCBNdWx0aXBsZS1TcGVlZCBCcnVzaGxlc3MgUGVybWFuZW50 + IE1hZ25ldCBCbG93ZXIgTW90b3IiLCJkZXNjcmlwdGlvbiI6IlJlcGxhY2Vt + ZW50IE11bHRpcGxlLVNwZWVkIEJydXNobGVzcyBQZXJtYW5lbnQgTWFnbmV0 + IEJsb3dlciBNb3Rvci4gUmVxdWlyZW1lbnRzOiBNdXN0IHJlcGxhY2UgdGhl + IGV4aXN0aW5nIHBlcm1hbmVudCBzcGxpdCBjYXBhY2l0b3IgbW90b3IgZm9y + IHN1cHBseSBhaXIgYmxvd2VyIHdpdGggYSBuZXcgc3VwZXItZWZmaWNpZW50 + IGRpcmVjdCByZXBsYWNlIG1lbnQgYnJ1c2hsZXNzIHBlcm1hbmVudCBtYWdu + ZXQgYmxvd2VyIG1vdG9yIHdpdGggYnVpbHQtaW5jb250cm9sbGVyLiBNb3Rv + cnMgbXVzdCBiZSAxMCBob3JzZSBwb3dlciBvciBsZXNzIHRvIGJlIGVsaWdp + YmxlIGZvciB0aGlzIHJlYmF0ZS4gTW90b3IgbXVzdCBiZSBjYXBhYmxlIG9m + IHBsdWdnaW5nIGluIHRvIGV4aXN0aW5nIGNvbnRyb2xib2FyZC4gT25seSBh + dmFpbGFibGUgdG8gY3VzdG9tZXJzIHJlc2lkaW5nIGluIGNsaW1hdGUgem9u + ZXMgMTEsMTIgYW5kMTMuIEdvdG9cclxud3d3LnBnZS5jb20vY2xpbWF0ZXpv + bmVzIHRvIGZpbmQgeW91ciBjbGltYXRlIHpvbmUuIEluc3RhbGxhdGlvbiBh + ZGRyZXNzIG11c3QgaGF2ZSBhIGNvbW1lcmNpYWwgZWxlY3RyaWMgYWNjb3Vu + dCB3aXRoIFBHJkUuIEV4Y2x1c2lvbnM6IEEgVmFyaWFibGUgRnJlcXVlbmN5 + IERyaXZlIChWRkQpIGlzIG5vdCBlbGlnaWJsZSBmb3IgdGhpcyByZWJhdGUu + In0sInF1YW50aXR5S2V5Q2FwIjpudWxsLCJzdGF0ZSI6IkNBIiwicGVyY2Vu + dENvc3RDYXAiOm51bGwsInBlcmNlbnRDb3N0Q2FwS2V5Ijp7ImtleU5hbWUi + Om51bGx9LCJwYXltZW50Q2FwIjpudWxsLCJwYXltZW50RHVyYXRpb24iOm51 + bGwsImluY2VudGl2ZVBhaWRUbyI6InRlbmFudE9yT3duZXIiLCJwcm9qZWN0 + VHlwZUV4Y2x1c2l2ZSI6bnVsbCwiYXBwbGljYWJpbGl0aWVzIjpbeyJhcHBs + aWNhYmlsaXR5S2V5IjoiZW5kVXNlQ29tbWVyY2lhbCIsImRpc3BsYXlOYW1l + IjoiRW5kIFVzZSBDb21tZXJjaWFsIiwiZGVzY3JpcHRpb24iOiJFbmQgVXNl + IFRlY2hub2xvZ3kgZm9yIENvbW1lcmNpYWwiLCJyZXF1aXJlZFZhbHVlIjoi + YWlyQ29vbCIsIm9wZXJhdG9yIjoiPSJ9XSwic3VtbWFyeSI6bnVsbCwicmVx + dWlyZW1lbnRzIjoiQWxsIFBHJkUgaW5jZW50aXZlcyBhcHBseSB0b3dhcmRz + IHRoZSBwdXJjaGFzZSBvZiBuZXcgb3IgcmVwbGFjZW1lbnQgZW5lcmd5LWVm + ZmljaWVudCBlcXVpcG1lbnQuIFVzZWQgb3IgcmVidWlsdCBlcXVpcG1lbnQg + aXMgbm90IGVsaWdpYmxlLCBhbmQgY3VzdG9tZXJzIG11c3QgaW5jbHVkZSBw + cm9vZiB0aGF0IHRoZSBhcHBsaWFuY2VzIG1lZXQgYWxsIHRoZSByZXF1aXJl + ZCBlbmVyZ3kgZWZmaWNpZW5jeSBzcGVjaWZpY2F0aW9ucy4gUGxlYXNlIG5v + dGUgdGhhdCBmdW5kaW5nIGZvciB0aGVzZSBwcm9ncmFtcyBpcyBsaW1pdGVk + IGFuZCBhdmFpbGFibGUgb24gYSBmaXJzdC1jb21lLCBmaXJzdC1zZXJ2ZWQg + YmFzaXMgdW50aWwgYWxsb2NhdGVkIGZ1bmRzIGFyZSBleGhhdXN0ZWQgb3Ig + dGhlIHByb2dyYW0gZW5kcywgd2hpY2hldmVyIGNvbWVzIGZpcnN0LiBUaGlz + IHByb2dyYW0gbWF5IGJlIG1vZGlmaWVkIG9yIHRlcm1pbmF0ZWQgd2l0aG91 + dCBwcmlvciBub3RpY2UsIGFuZCBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25k + aXRpb25zIGFwcGx5LiBJbnN0YWxsYXRpb24gYWRkcmVzcyBtdXN0IGhhdmUg + YSBjb21tZXJjaWFsIGVsZWN0cmljIGFjY291bnQgd2l0aFBHJkUuICBGb3Ig + aXRlbSBsZXZlbCBzcGVjaWZpY2F0aW9ucyByZWZlciB0byBjYXRhbG9nLiJ9 + LHsiaW5jZW50aXZlSWQiOjMxNTYyNjksIm1hc3RlckluY2VudGl2ZUlkIjoz + MTU2MjY5LCJlbGlnaWJpbGl0eSI6IkNPVUxEX0JFX0VMSUdJQkxFIiwicmVx + dWlyZWREYXRhIjpbeyJhcHBsaWNhYmlsaXR5S2V5IjoiZW5kVXNlQ29tbWVy + Y2lhbCIsImRpc3BsYXlOYW1lIjoiRW5kIFVzZSBDb21tZXJjaWFsIiwiZGVz + Y3JpcHRpb24iOiJFbmQgVXNlIFRlY2hub2xvZ3kgZm9yIENvbW1lcmNpYWwi + LCJyZXF1aXJlZFZhbHVlIjoibGlnaHRpbmciLCJvcGVyYXRvciI6Ij0ifV0s + InRhcmlmZkNvZGUiOiJOb25lIiwiaW5jZW50aXZlTmFtZSI6IkNvbW1lcmNp + YWwgTGlnaHRpbmcgUmViYXRlcyIsImxzZUlkIjo3MzQsImxzZU5hbWUiOiJQ + YWNpZmljIEdhcyAmIEVsZWN0cmljIENvIiwic2VydmljZVR5cGUiOiJFTEVD + VFJJQ0lUWSIsImN1c3RvbWVyQ2xhc3MiOiJHRU5FUkFMIiwic3RhcnREYXRl + IjoiMjAxMy0wMS0wMSIsImVuZERhdGUiOiIyMDE0LTAxLTAxIiwiaXNFeGhh + dXN0ZWQiOmZhbHNlLCJwcm9qZWN0VHlwZSI6ImxpZ2h0aW5nIiwiaW5jZW50 + aXZlVHlwZSI6InJlYmF0ZSIsInJhdGUiOjE3LjUwMDAwMCwicmF0ZVVuaXQi + OiJDT1NUX1BFUl9VTklUIiwiZG9jdW1lbnRzIjpudWxsLCJqdXJpc2RpY3Rp + b24iOiJ1dGlsaXR5IiwicXVhbnRpdHlLZXkiOnsia2V5TmFtZSI6InQ4Rml4 + dHVyZXMyeDIyTGFtcHNGaXh0dXJlUkxPQmFsbGFzdEZhY3RvciIsImRpc3Bs + YXlOYW1lIjoiVDggMid4MicgLSAyIExhbXBzIEhpZ2ggUGVyZm9ybWFuY2Ug + Rml4dHVyZSB3aXRoIFJMTyBCYWxsYXN0IiwiZGVzY3JpcHRpb24iOiJUOCAy + J3gyJyAtIDIgTGFtcHMgSGlnaCBQZXJmb3JtYW5jZSBGaXh0dXJlIHdpdGgg + UkxPIEJhbGxhc3QuIFJlcXVpcmVtZW50czogTmV3IGZpeHR1cmVzIG9yIG5l + dyByZXRyb2ZpdCBraXRzIG9ubHksIGFuZCBvbmx5Y2VydGFpbiBjb21iaW5h + dGlvbnMgb2YgbGFtcCBudW1iZXIgYW5kIGJhbGxhc3QgZmFjdG9yIGFyZSBl + bGlnaWJsZS4gRml4dHVyZSBlZmZpY2llbmN5IG11c3QgZXhjZWVkIDgwIHBl + cmNlbnQuIFQ4IG1lYXN1cmVzIGFyZSBiYXNlZCBvbiB0aGUgc2F2aW5ncyBw + cm92aWRlZCBieSB1dGlsaXppbmdhIG9uZS1sYW1wIG9yIHR3by1sYW1wIGZp + eHR1cmUgaW5zdGVhZCBvZiB0aGUgaW5kdXN0cnktc3RhbmRhcmQgdGhyZWUt + bGFtcCBmaXh0dXJlLiBBZGRpdGlvbmFsIHNhdmluZ3MgYXJlIHJlYWxpemVk + aWYgYSBSTE8gYmFsbGFzdCBpcyB1c2VkIGluc3RlYWQgb2YgdGhlIHN0YW5k + YXJkLCBiYXNlLWNhc2VOTE8gYmFsbGFzdC4gUGxlYXNlIG5vdGUgdGhhdCBz + YXZpbmdzIGFyZSByZWR1Y2VkIGlmIGEgSExPb3IgVkhMTyBiYWxsYXN0IGlz + IHVzZWQuIFQ1IG1lYXN1cmVzIGFyZSBiYXNlZCBvbiB0aGUgc2F2aW5ncyBw + cm92aWRlZCBieSB1dGlsaXppbmdhIHR3by1sYW1wIFQ1IGZpeHR1cmUgaW5z + dGVhZCBvZiB0aGUgaW5kdXN0cnktc3RhbmRhcmR0aHJlZS1sYW1wIFQ4IGZp + eHR1cmUuIEFkZGl0aW9uYWwgc2F2aW5ncyBhcmUgcmVhbGl6ZWQgaWZhIE5M + TyBiYWxsYXN0IGlzIHVzZWQgaW5zdGVhZCBvZiBhIEhMTyBiYWxsYXN0LiBW + SExPIFQ1YmFsbGFzdHMgYXJlIGV4Y2x1ZGVkIGR1ZSB0byBpbnN1ZmZpY2ll + bnQgc2F2aW5ncyByZWxhdGl2ZXRvIHRoZSBiYXNlIGNhc2UuIFRoZXNlIHJl + YmF0ZXMgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggcmViYXRlcyBmcm9tb3Ro + ZXIgY2F0YWxvZyBtZWFzdXJlcyBvciBvdGhlciBwcm9ncmFtcyBjbGFpbWlu + Z2xpZ2h0aW5nIHNhdmluZ3MuICBQbGVhc2UgcmVmZXIgdG8gY2F0YWxvZyBm + b3IgY29tcGxldGUgcmVxdWlyZW1lbnRzLiJ9LCJxdWFudGl0eUtleUNhcCI6 + bnVsbCwic3RhdGUiOiJDQSIsInBlcmNlbnRDb3N0Q2FwIjpudWxsLCJwZXJj + ZW50Q29zdENhcEtleSI6eyJrZXlOYW1lIjpudWxsfSwicGF5bWVudENhcCI6 + bnVsbCwicGF5bWVudER1cmF0aW9uIjpudWxsLCJpbmNlbnRpdmVQYWlkVG8i + OiJ0ZW5hbnRPck93bmVyIiwicHJvamVjdFR5cGVFeGNsdXNpdmUiOm51bGws + ImFwcGxpY2FiaWxpdGllcyI6W3siYXBwbGljYWJpbGl0eUtleSI6ImVuZFVz + ZUNvbW1lcmNpYWwiLCJkaXNwbGF5TmFtZSI6IkVuZCBVc2UgQ29tbWVyY2lh + bCIsImRlc2NyaXB0aW9uIjoiRW5kIFVzZSBUZWNobm9sb2d5IGZvciBDb21t + ZXJjaWFsIiwicmVxdWlyZWRWYWx1ZSI6ImxpZ2h0aW5nIiwib3BlcmF0b3Ii + OiI9In1dLCJzdW1tYXJ5IjpudWxsLCJyZXF1aXJlbWVudHMiOiJBbGwgUEcm + RSBpbmNlbnRpdmVzIGFwcGx5IHRvd2FyZHMgdGhlIHB1cmNoYXNlIG9mIG5l + dyBvciByZXBsYWNlbWVudCBlbmVyZ3ktZWZmaWNpZW50IGVxdWlwbWVudC4g + VXNlZCBvciByZWJ1aWx0IGVxdWlwbWVudCBpcyBub3QgZWxpZ2libGUsIGFu + ZCBjdXN0b21lcnMgbXVzdCBpbmNsdWRlIHByb29mIHRoYXQgdGhlIGFwcGxp + YW5jZXMgbWVldCBhbGwgdGhlIHJlcXVpcmVkIGVuZXJneSBlZmZpY2llbmN5 + IHNwZWNpZmljYXRpb25zLiBQbGVhc2Ugbm90ZSB0aGF0IGZ1bmRpbmcgZm9y + IHRoZXNlIHByb2dyYW1zIGlzIGxpbWl0ZWQgYW5kIGF2YWlsYWJsZSBvbiBh + IGZpcnN0LWNvbWUsIGZpcnN0LXNlcnZlZCBiYXNpcyB1bnRpbCBhbGxvY2F0 + ZWQgZnVuZHMgYXJlIGV4aGF1c3RlZCBvciB0aGUgcHJvZ3JhbSBlbmRzLCB3 + aGljaGV2ZXIgY29tZXMgZmlyc3QuIFRoaXMgcHJvZ3JhbSBtYXkgYmUgbW9k + aWZpZWQgb3IgdGVybWluYXRlZCB3aXRob3V0IHByaW9yIG5vdGljZSwgYW5k + IGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgYXBwbHkuIEluc3Rh + bGxhdGlvbiBhZGRyZXNzIG11c3QgaGF2ZSBhIGNvbW1lcmNpYWwgZWxlY3Ry + aWMgYWNjb3VudCB3aXRoUEcmRS4gRm9yIGl0ZW0gbGV2ZWwgc3BlY2lmaWNh + dGlvbnMgcmVmZXIgdG8gY2F0YWxvZy4ifSx7ImluY2VudGl2ZUlkIjozMTU2 + MjcxLCJtYXN0ZXJJbmNlbnRpdmVJZCI6MzE1NjI3MSwiZWxpZ2liaWxpdHki + OiJDT1VMRF9CRV9FTElHSUJMRSIsInJlcXVpcmVkRGF0YSI6W3siYXBwbGlj + YWJpbGl0eUtleSI6ImVuZFVzZUNvbW1lcmNpYWwiLCJkaXNwbGF5TmFtZSI6 + IkVuZCBVc2UgQ29tbWVyY2lhbCIsImRlc2NyaXB0aW9uIjoiRW5kIFVzZSBU + ZWNobm9sb2d5IGZvciBDb21tZXJjaWFsIiwicmVxdWlyZWRWYWx1ZSI6Indh + dGVySGVhdCIsIm9wZXJhdG9yIjoiPSJ9XSwidGFyaWZmQ29kZSI6Ik5vbmUi + LCJpbmNlbnRpdmVOYW1lIjoiQ29tbWVyY2lhbCBXYXRlciBIZWF0aW5nIFJl + YmF0ZSIsImxzZUlkIjo3MzQsImxzZU5hbWUiOiJQYWNpZmljIEdhcyAmIEVs + ZWN0cmljIENvIiwic2VydmljZVR5cGUiOiJFTEVDVFJJQ0lUWSIsImN1c3Rv + bWVyQ2xhc3MiOiJHRU5FUkFMIiwic3RhcnREYXRlIjoiMjAxMy0wMS0wMSIs + ImVuZERhdGUiOiIyMDE0LTAxLTAxIiwiaXNFeGhhdXN0ZWQiOmZhbHNlLCJw + cm9qZWN0VHlwZSI6IndhdGVySGVhdCIsImluY2VudGl2ZVR5cGUiOiJyZWJh + dGUiLCJyYXRlIjo1MDAuMDAwMDAwLCJyYXRlVW5pdCI6IkNPU1RfUEVSX1VO + SVQiLCJkb2N1bWVudHMiOm51bGwsImp1cmlzZGljdGlvbiI6InV0aWxpdHki + LCJxdWFudGl0eUtleSI6eyJrZXlOYW1lIjoiZWxlY3RyaWNIZWF0UHVtcFdh + dGVySGVhdGVyNzM0IiwiZGlzcGxheU5hbWUiOiJFbGVjdHJpYyBIZWF0IFB1 + bXAgV2F0ZXIgSGVhdGVyIiwiZGVzY3JpcHRpb24iOiJFTkVSR1kgU1RBUiBF + bGVjdHJpYyBIZWF0IFB1bXBcclxuV2F0ZXIgSGVhdGVyIEVGIG9mIDIuMCBv + ciBncmVhdGVyXHJcblxyXG5SZXF1aXJlbWVudHM6IEVsZWN0cmljIHN0b3Jh + Z2Ugd2F0ZXIgaGVhdGVyIG11c3QgaGF2ZSBhbiBFbmVyZ3kgRmFjdG9yIG9m + IDIuMCBvciBncmVhdGVyLiBDYXBhY2l0eSBtdXN0IGJlIDQwIGdhbGxvbnMg + b3IgbW9yZS4gTXVzdCBiZSBuZXcgYW5kIG1lZXQgb3IgZXhjZWVkIGFsbCBh + cHBsaWNhYmxlIGxvY2FsLCBzdGF0ZSBhbmQgZmVkZXJhbCBzdGFuZGFyZHMu + IE9ubHkgcmVzaWRlbnRpYWwtc3R5bGUgZWxlY3RyaWMgc3RvcmFnZSB3YXRl + ciBoZWF0ZXJzIHF1YWxpZnkgZm9yIHRoaXMgcmViYXRlLiBHb3RvIHd3dy5l + bmVyZ3lzdGFyLmdvdiBmb3IgYSBsaXN0IG9mIEVORVJHWVNUQVIgLXF1YWxp + Znlpbmcgd2F0ZXIgaGVhdGVycyB0aGF0IG1lZXQgb3IgZXhjZWVkIHRoZSBF + RiByZXF1aXJlbWVudHMuIENoZWNrIHdpdGggeW91ciBjb250cmFjdG9yIGZv + ciBpbnN0YWxsYXRpb24gcmVxdWlyZW1lbnRzIGZvciB5b3VyIGluc3RhbGxh + dGlvbiBhZGRyZXNzLiBJbnN0YWxsYXRpb24gYWRkcmVzcyBtdXN0IGhhdmUg + YSBjb21tZXJjaWFsIGVsZWN0cmljIGFjY291bnQgd2l0aCBQRyZFLiBNdXN0 + IGJlIGEgY29tbWVyY2lhbCBlbmQtdXNlIGN1c3RvbWVyLiBFeGNsdXNpb25z + OiBJbnN0YW50YW5lb3VzIG9yIHRhbmsgbGVzcyB3YXRlciBoZWF0ZXJzIGRv + IG5vdCBxdWFsaWZ5IGZvciB0aGlzIHJlYmF0ZVxyXG4ifSwicXVhbnRpdHlL + ZXlDYXAiOm51bGwsInN0YXRlIjoiQ0EiLCJwZXJjZW50Q29zdENhcCI6bnVs + bCwicGVyY2VudENvc3RDYXBLZXkiOnsia2V5TmFtZSI6bnVsbH0sInBheW1l + bnRDYXAiOm51bGwsInBheW1lbnREdXJhdGlvbiI6bnVsbCwiaW5jZW50aXZl + UGFpZFRvIjoidGVuYW50T3JPd25lciIsInByb2plY3RUeXBlRXhjbHVzaXZl + IjpudWxsLCJhcHBsaWNhYmlsaXRpZXMiOlt7ImFwcGxpY2FiaWxpdHlLZXki + OiJlbmRVc2VDb21tZXJjaWFsIiwiZGlzcGxheU5hbWUiOiJFbmQgVXNlIENv + bW1lcmNpYWwiLCJkZXNjcmlwdGlvbiI6IkVuZCBVc2UgVGVjaG5vbG9neSBm + b3IgQ29tbWVyY2lhbCIsInJlcXVpcmVkVmFsdWUiOiJ3YXRlckhlYXQiLCJv + cGVyYXRvciI6Ij0ifV0sInN1bW1hcnkiOm51bGwsInJlcXVpcmVtZW50cyI6 + IlJlcXVpcmVtZW50czogRWxlY3RyaWMgc3RvcmFnZSB3YXRlciBoZWF0ZXIg + bXVzdCBoYXZlIGFuIEVuZXJneSBGYWN0b3Igb2YgMi4wIG9yIGdyZWF0ZXIu + IENhcGFjaXR5IG11c3QgYmUgNDAgZ2FsbG9ucyBvciBtb3JlLiBNdXN0IGJl + IG5ldyBhbmQgbWVldCBvciBleGNlZWQgYWxsIGFwcGxpY2FibGUgbG9jYWws + IHN0YXRlIGFuZCBmZWRlcmFsIHN0YW5kYXJkcy4gT25seSByZXNpZGVudGlh + bC1zdHlsZSBlbGVjdHJpYyBzdG9yYWdlIHdhdGVyIGhlYXRlcnMgcXVhbGlm + eSBmb3IgdGhpcyByZWJhdGUuIEdvdG8gd3d3LmVuZXJneXN0YXIuZ292IGZv + ciBhIGxpc3Qgb2YgRU5FUkdZU1RBUiAtcXVhbGlmeWluZyB3YXRlciBoZWF0 + ZXJzIHRoYXQgbWVldCBvciBleGNlZWQgdGhlIEVGIHJlcXVpcmVtZW50cy4g + Q2hlY2sgd2l0aCB5b3VyIGNvbnRyYWN0b3IgZm9yIGluc3RhbGxhdGlvbiBy + ZXF1aXJlbWVudHMgZm9yIHlvdXIgaW5zdGFsbGF0aW9uIGFkZHJlc3MuIElu + c3RhbGxhdGlvbiBhZGRyZXNzIG11c3QgaGF2ZSBhIGNvbW1lcmNpYWwgZWxl + Y3RyaWMgYWNjb3VudCB3aXRoIFBHJkUuIE11c3QgYmUgYSBjb21tZXJjaWFs + IGVuZC11c2UgY3VzdG9tZXIuIEV4Y2x1c2lvbnM6IEluc3RhbnRhbmVvdXMg + b3IgdGFuayBsZXNzIHdhdGVyIGhlYXRlcnMgZG8gbm90IHF1YWxpZnkgZm9y + IHRoaXMgcmViYXRlIn0seyJpbmNlbnRpdmVJZCI6MzE1NjI3MywibWFzdGVy + SW5jZW50aXZlSWQiOjMxNTYyNzMsImVsaWdpYmlsaXR5IjoiQ09VTERfQkVf + RUxJR0lCTEUiLCJyZXF1aXJlZERhdGEiOlt7ImFwcGxpY2FiaWxpdHlLZXki + OiJlbmRVc2VDb21tZXJjaWFsIiwiZGlzcGxheU5hbWUiOiJFbmQgVXNlIENv + bW1lcmNpYWwiLCJkZXNjcmlwdGlvbiI6IkVuZCBVc2UgVGVjaG5vbG9neSBm + b3IgQ29tbWVyY2lhbCIsInJlcXVpcmVkVmFsdWUiOiJlbGVjdHJvbmljcyIs + Im9wZXJhdG9yIjoiPSJ9XSwidGFyaWZmQ29kZSI6Ik5vbmUiLCJpbmNlbnRp + dmVOYW1lIjoiQ29tbWVyY2lhbCBCdXNpbmVzcyBDb21wdXRpbmcgUmViYXRl + cyIsImxzZUlkIjo3MzQsImxzZU5hbWUiOiJQYWNpZmljIEdhcyAmIEVsZWN0 + cmljIENvIiwic2VydmljZVR5cGUiOiJFTEVDVFJJQ0lUWSIsImN1c3RvbWVy + Q2xhc3MiOiJHRU5FUkFMIiwic3RhcnREYXRlIjoiMjAxMy0wMS0wMSIsImVu + ZERhdGUiOiIyMDE0LTAxLTAxIiwiaXNFeGhhdXN0ZWQiOmZhbHNlLCJwcm9q + ZWN0VHlwZSI6Im1ham9yQXBwbGlhbmNlcyIsImluY2VudGl2ZVR5cGUiOiJy + ZWJhdGUiLCJyYXRlIjoxNS4wMDAwMDAsInJhdGVVbml0IjoiQ09TVF9QRVJf + VU5JVCIsImRvY3VtZW50cyI6bnVsbCwianVyaXNkaWN0aW9uIjoidXRpbGl0 + eSIsInF1YW50aXR5S2V5Ijp7ImtleU5hbWUiOiJwbHVnTG9hZE9jY3VwYW5j + eVNlbnNvcnNGNzM0IiwiZGlzcGxheU5hbWUiOiJQbHVnIExvYWQgT2NjdXBh + bmN5IFNlbnNvcnMiLCJkZXNjcmlwdGlvbiI6IlBsdWcgTG9hZCBPY2N1cGFu + Y3kgU2Vuc29ycyBSZXF1aXJlbWVudHM6IE9ubHkgcGFzc2l2ZSBpbmZyYXJl + ZCBhbmQvb3IgdWx0cmFzb25pYyBkZXRlY3RvcnMgYXJlIGVsaWdpYmxlLiBQ + bHVnIGxvYWQgc2Vuc29ycyBtdXN0IGNvbnRyb2wgZWxlY3RyaWNpdHkgdXNp + bmcgZXF1aXBtZW50IGluIG9mZmljZXMgb3IgY3ViaWNsZXMsIGluY2x1ZGlu + ZyBzaGFyZWRjb3BpZXJzIGFuZC9vciBwcmludGVycy4gSW5zdGFsbGF0aW9u + IGFkZHJlc3MgbXVzdCBoYXZlIGEgY29tbWVyY2lhbCBlbGVjdHJpYyBhY2Nv + dW50IHdpdGggUEcmRS4ifSwicXVhbnRpdHlLZXlDYXAiOm51bGwsInN0YXRl + IjoiQ0EiLCJwZXJjZW50Q29zdENhcCI6bnVsbCwicGVyY2VudENvc3RDYXBL + ZXkiOnsia2V5TmFtZSI6bnVsbH0sInBheW1lbnRDYXAiOm51bGwsInBheW1l + bnREdXJhdGlvbiI6bnVsbCwiaW5jZW50aXZlUGFpZFRvIjoidGVuYW50T3JP + d25lciIsInByb2plY3RUeXBlRXhjbHVzaXZlIjpudWxsLCJhcHBsaWNhYmls + aXRpZXMiOlt7ImFwcGxpY2FiaWxpdHlLZXkiOiJlbmRVc2VDb21tZXJjaWFs + IiwiZGlzcGxheU5hbWUiOiJFbmQgVXNlIENvbW1lcmNpYWwiLCJkZXNjcmlw + dGlvbiI6IkVuZCBVc2UgVGVjaG5vbG9neSBmb3IgQ29tbWVyY2lhbCIsInJl + cXVpcmVkVmFsdWUiOiJlbGVjdHJvbmljcyIsIm9wZXJhdG9yIjoiPSJ9XSwi + c3VtbWFyeSI6bnVsbCwicmVxdWlyZW1lbnRzIjoiQWxsIFBHJkUgaW5jZW50 + aXZlcyBhcHBseSB0b3dhcmRzIHRoZSBwdXJjaGFzZSBvZiBuZXcgb3IgcmVw + bGFjZW1lbnQgZW5lcmd5LWVmZmljaWVudCBlcXVpcG1lbnQuIFVzZWQgb3Ig + cmVidWlsdCBlcXVpcG1lbnQgaXMgbm90IGVsaWdpYmxlLCBhbmQgY3VzdG9t + ZXJzIG11c3QgaW5jbHVkZSBwcm9vZiB0aGF0IHRoZSBhcHBsaWFuY2VzIG1l + ZXQgYWxsIHRoZSByZXF1aXJlZCBlbmVyZ3kgZWZmaWNpZW5jeSBzcGVjaWZp + Y2F0aW9ucy4gUGxlYXNlIG5vdGUgdGhhdCBmdW5kaW5nIGZvciB0aGVzZSBw + cm9ncmFtcyBpcyBsaW1pdGVkIGFuZCBhdmFpbGFibGUgb24gYSBmaXJzdC1j + b21lLCBmaXJzdC1zZXJ2ZWQgYmFzaXMgdW50aWwgYWxsb2NhdGVkIGZ1bmRz + IGFyZSBleGhhdXN0ZWQgb3IgdGhlIHByb2dyYW0gZW5kcywgd2hpY2hldmVy + IGNvbWVzIGZpcnN0LiBUaGlzIHByb2dyYW0gbWF5IGJlIG1vZGlmaWVkIG9y + IHRlcm1pbmF0ZWQgd2l0aG91dCBwcmlvciBub3RpY2UsIGFuZCBhZGRpdGlv + bmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGFwcGx5LiBJbnN0YWxsYXRpb24g + YWRkcmVzcyBtdXN0IGhhdmUgYSBjb21tZXJjaWFsIGVsZWN0cmljIGFjY291 + bnQgd2l0aFBHJkUuXG5cbkZvciBpdGVtIGxldmVsIHNwZWNpZmljYXRpb25z + IHJlZmVyIHRvIGNhdGFsb2cuIn0seyJpbmNlbnRpdmVJZCI6MzE1NjI3NCwi + bWFzdGVySW5jZW50aXZlSWQiOjMxNTYyNzQsImVsaWdpYmlsaXR5IjoiQ09V + TERfQkVfRUxJR0lCTEUiLCJyZXF1aXJlZERhdGEiOlt7ImFwcGxpY2FiaWxp + dHlLZXkiOiJlbmRVc2VDb21tZXJjaWFsIiwiZGlzcGxheU5hbWUiOiJFbmQg + VXNlIENvbW1lcmNpYWwiLCJkZXNjcmlwdGlvbiI6IkVuZCBVc2UgVGVjaG5v + bG9neSBmb3IgQ29tbWVyY2lhbCIsInJlcXVpcmVkVmFsdWUiOiJhcHBsaWFu + Y2VzIiwib3BlcmF0b3IiOiI9In1dLCJ0YXJpZmZDb2RlIjoiTm9uZSIsImlu + Y2VudGl2ZU5hbWUiOiJDb21tZXJjaWFsIEFwcGxpYW5jZXMgUmViYXRlcyIs + ImxzZUlkIjo3MzQsImxzZU5hbWUiOiJQYWNpZmljIEdhcyAmIEVsZWN0cmlj + IENvIiwic2VydmljZVR5cGUiOiJFTEVDVFJJQ0lUWSIsImN1c3RvbWVyQ2xh + c3MiOiJHRU5FUkFMIiwic3RhcnREYXRlIjoiMjAxMy0wMS0wMSIsImVuZERh + dGUiOiIyMDE0LTAxLTAxIiwiaXNFeGhhdXN0ZWQiOmZhbHNlLCJwcm9qZWN0 + VHlwZSI6Im1ham9yQXBwbGlhbmNlcyIsImluY2VudGl2ZVR5cGUiOiJyZWJh + dGUiLCJyYXRlIjo1MC4wMDAwMDAsInJhdGVVbml0IjoiQ09TVF9QRVJfVU5J + VCIsImRvY3VtZW50cyI6bnVsbCwianVyaXNkaWN0aW9uIjoidXRpbGl0eSIs + InF1YW50aXR5S2V5Ijp7ImtleU5hbWUiOiJoaWdoRWZmaWNpZW5jeUNsb3Ro + ZXNXYXNoZXI3MzQiLCJkaXNwbGF5TmFtZSI6IkhpZ2gtRWZmaWNpZW5jeSBD + bG90aGVzIFdhc2hlciIsImRlc2NyaXB0aW9uIjoiSGlnaC1FZmZpY2llbmN5 + IENsb3RoZXMgV2FzaGVyIENFRSBUaWVyIDMgb3IgaGlnaGVyLCBNRUYgb2Yg + Mi40IG9yIGdyZWF0ZXIsIFdGIG9mIDQuMCBvciBsZXNzIFJlcXVpcmVtZW50 + czogQ2xvdGhlcyB3YXNoZXIgbXVzdCBiZSBhIENvbnNvcnRpdW0gZm9yIEVu + ZXJneSBFZmZpY2llbmN5IChDRUUpIFRpZXIzIG1vZGVsIG9yIGhpZ2hlci4g + R290byB3d3cuY2VlMS5vcmcvY29tL2N3c2gvY3dzaHNwZWMucGRmXHJcbmZv + ciBhIGxpc3Qgb2YgcXVhbGlmeWluZyBjb21tZXJjaWFsIHdhc2hlcnMuIFRo + ZSB3YXNoZXIgbXVzdCBoYXZlIGEgTW9kaWZpZWQgRW5lcmd5IEZhY3RvciAo + TUVGKSBvZiAyLjQgb3IgZ3JlYXRlciBhbmRcclxuYSBXYXRlciBGYWN0b3Ig + b2YgNC4wIG9yIGxlc3MuIEluc3RhbGxhdGlvbiBhZGRyZXNzIG11c3QgaGF2 + ZSBjb21tZXJjaWFsIGVsZWN0cmljIGFuZCBvciBuYXR1cmFsIGdhcyBhY2Nv + dW50cyB3aXRoIFBHJkUuIEV4Y2x1c2lvbnM6IE5vdCBhbGwgRU5FUkdZU1RB + UiBjbG90aGVzd2FzaGVycyBxdWFsaWZ5IGZvciB0aGlzIHJlYmF0ZS4gQ0VF + IFRpZXIxIGFuZCAyIG1vZGVscyBkbyBub3QgcXVhbGlmeS4ifSwicXVhbnRp + dHlLZXlDYXAiOm51bGwsInN0YXRlIjoiQ0EiLCJwZXJjZW50Q29zdENhcCI6 + bnVsbCwicGVyY2VudENvc3RDYXBLZXkiOnsia2V5TmFtZSI6bnVsbH0sInBh + eW1lbnRDYXAiOm51bGwsInBheW1lbnREdXJhdGlvbiI6bnVsbCwiaW5jZW50 + aXZlUGFpZFRvIjoidGVuYW50T3JPd25lciIsInByb2plY3RUeXBlRXhjbHVz + aXZlIjpudWxsLCJhcHBsaWNhYmlsaXRpZXMiOlt7ImFwcGxpY2FiaWxpdHlL + ZXkiOiJlbmRVc2VDb21tZXJjaWFsIiwiZGlzcGxheU5hbWUiOiJFbmQgVXNl + IENvbW1lcmNpYWwiLCJkZXNjcmlwdGlvbiI6IkVuZCBVc2UgVGVjaG5vbG9n + eSBmb3IgQ29tbWVyY2lhbCIsInJlcXVpcmVkVmFsdWUiOiJhcHBsaWFuY2Vz + Iiwib3BlcmF0b3IiOiI9In1dLCJzdW1tYXJ5IjpudWxsLCJyZXF1aXJlbWVu + dHMiOiJBbGwgUEcmRSBpbmNlbnRpdmVzIGFwcGx5IHRvd2FyZHMgdGhlIHB1 + cmNoYXNlIG9mIG5ldyBvciByZXBsYWNlbWVudCBlbmVyZ3ktZWZmaWNpZW50 + IGVxdWlwbWVudC4gVXNlZCBvciByZWJ1aWx0IGVxdWlwbWVudCBpcyBub3Qg + ZWxpZ2libGUsIGFuZCBjdXN0b21lcnMgbXVzdCBpbmNsdWRlIHByb29mIHRo + YXQgdGhlIGFwcGxpYW5jZXMgbWVldCBhbGwgdGhlIHJlcXVpcmVkIGVuZXJn + eSBlZmZpY2llbmN5IHNwZWNpZmljYXRpb25zLiBQbGVhc2Ugbm90ZSB0aGF0 + IGZ1bmRpbmcgZm9yIHRoZXNlIHByb2dyYW1zIGlzIGxpbWl0ZWQgYW5kIGF2 + YWlsYWJsZSBvbiBhIGZpcnN0LWNvbWUsIGZpcnN0LXNlcnZlZCBiYXNpcyB1 + bnRpbCBhbGxvY2F0ZWQgZnVuZHMgYXJlIGV4aGF1c3RlZCBvciB0aGUgcHJv + Z3JhbSBlbmRzLCB3aGljaGV2ZXIgY29tZXMgZmlyc3QuIFRoaXMgcHJvZ3Jh + bSBtYXkgYmUgbW9kaWZpZWQgb3IgdGVybWluYXRlZCB3aXRob3V0IHByaW9y + IG5vdGljZSwgYW5kIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMg + YXBwbHkuIEluc3RhbGxhdGlvbiBhZGRyZXNzIG11c3QgaGF2ZSBhIGNvbW1l + cmNpYWwgZWxlY3RyaWMgYWNjb3VudCB3aXRoUEcmRS4gRm9yIGl0ZW0gbGV2 + ZWwgc3BlY2lmaWNhdGlvbnMgcmVmZXIgdG8gY2F0YWxvZy4ifSx7ImluY2Vu + dGl2ZUlkIjozMTU2MzA4LCJtYXN0ZXJJbmNlbnRpdmVJZCI6MzE1NjMwOCwi + ZWxpZ2liaWxpdHkiOiJDT1VMRF9CRV9FTElHSUJMRSIsInJlcXVpcmVkRGF0 + YSI6W3siYXBwbGljYWJpbGl0eUtleSI6ImVuZFVzZVJlc2lkZW50aWFsIiwi + ZGlzcGxheU5hbWUiOiJFbmQgVXNlIFJlc2lkZW50aWFsIiwiZGVzY3JpcHRp + b24iOiJFbmQgVXNlIFRlY2hub2xvZ3kgZm9yIFJlc2lkZW50aWFsIiwicmVx + dWlyZWRWYWx1ZSI6ImFpckhlYXRDb29sIiwib3BlcmF0b3IiOiI9In1dLCJ0 + YXJpZmZDb2RlIjoiTm9uZSIsImluY2VudGl2ZU5hbWUiOiJSZXNpZGVudGlh + bCBIVkFDIFJlYmF0ZXMiLCJsc2VJZCI6NzM0LCJsc2VOYW1lIjoiUGFjaWZp + YyBHYXMgJiBFbGVjdHJpYyBDbyIsInNlcnZpY2VUeXBlIjoiRUxFQ1RSSUNJ + VFkiLCJjdXN0b21lckNsYXNzIjoiUkVTSURFTlRJQUwiLCJzdGFydERhdGUi + OiIyMDEzLTAxLTAxIiwiZW5kRGF0ZSI6IjIwMTQtMDEtMDEiLCJpc0V4aGF1 + c3RlZCI6ZmFsc2UsInByb2plY3RUeXBlIjoiaHZhYyIsImluY2VudGl2ZVR5 + cGUiOiJyZWJhdGUiLCJyYXRlIjoxMDAuMDAwMDAwLCJyYXRlVW5pdCI6IkNP + U1RfUEVSX1VOSVQiLCJkb2N1bWVudHMiOm51bGwsImp1cmlzZGljdGlvbiI6 + InV0aWxpdHkiLCJxdWFudGl0eUtleSI6eyJrZXlOYW1lIjoid2hvbGVIb3Vz + ZUZhbjczNCIsImRpc3BsYXlOYW1lIjoiV2hvbGUgSG91c2UgRmFuIiwiZGVz + Y3JpcHRpb24iOiJXaG9sZSBIb3VzZSBGYW4uIFJlcXVpcmVtZW50czogTWF5 + IGJlIGEgbmV3IGluc3RhbGxhdGlvbiB3aGVyZSBub25lIHByZXZpb3VzbHkg + ZXhpc3RlZC4gT25lIHJlYmF0ZSBwZXIgaW5zdGFsbGF0aW9uIGFkZHJlc3Ms + IHJlZ2FyZGxlc3Mgb2YgdGhlbnVtYmVyIG9mIHVuaXRzIGluc3RhbGxlZC4g + VGhlIGZhbiBtdXN0IG1vdmUgMSwwMDAgY3ViaWMgZmVldCBvZiBhaXIgcGVy + IG1pbnV0ZShDRk0pIG9yIG1vcmUgYW5kIGJlIHBlcm1hbmVudGx5IGluc3Rh + bGxlZCAoY29ubmVjdGVkdG8gdGhlIGZyYW1pbmcpLiBDb25zdWx0IG1hbnVm + YWN0dXJlcj9zIHNwZWNpY2F0aW9ucyB0byBkZXRlcm1pbmV0aGUgcHJvcGVy + IGZhbiBzaXplIHByaW9yIHRvIHB1cmNoYXNlLiBMb3V2ZXJzIGJldHdlZW4g + dGhlIGxpdmluZyBzcGFjZSBhbmQgdGhlIGF0dGljIHNob3VsZGNyZWF0ZSBh + biBhaXJ0aWdodCBzZWFsIHdoZW4gdGhlIGZhbiBpcyBvZmYuIEFuIGluc3Vs + YXRlZCBsb3V2ZXIgY292ZXIgaXMgYWxzbyByZWNvbW1lbmRlZCBmb3J1c2Ug + aW4gdGhlIHdpbnRlci4gR28gdG8gd3d3LnBnZS5jb20vcmViYXRlcyBmb3Ig + YSBsaXN0IG9mIHF1YWxpZnlpbmdwcm9kdWN0cy4gSW5zdGFsbGF0aW9uIGFk + ZHJlc3MgbXVzdCBoYXZlIGFuIGVsZWN0cmljYWNjb3VudCB3aXRoIFBHJkUi + fSwicXVhbnRpdHlLZXlDYXAiOm51bGwsInN0YXRlIjoiQ0EiLCJwZXJjZW50 + Q29zdENhcCI6bnVsbCwicGVyY2VudENvc3RDYXBLZXkiOnsia2V5TmFtZSI6 + bnVsbH0sInBheW1lbnRDYXAiOm51bGwsInBheW1lbnREdXJhdGlvbiI6bnVs + bCwiaW5jZW50aXZlUGFpZFRvIjoidGVuYW50T3JPd25lciIsInByb2plY3RU + eXBlRXhjbHVzaXZlIjpudWxsLCJhcHBsaWNhYmlsaXRpZXMiOlt7ImFwcGxp + Y2FiaWxpdHlLZXkiOiJlbmRVc2VSZXNpZGVudGlhbCIsImRpc3BsYXlOYW1l + IjoiRW5kIFVzZSBSZXNpZGVudGlhbCIsImRlc2NyaXB0aW9uIjoiRW5kIFVz + ZSBUZWNobm9sb2d5IGZvciBSZXNpZGVudGlhbCIsInJlcXVpcmVkVmFsdWUi + OiJhaXJIZWF0Q29vbCIsIm9wZXJhdG9yIjoiPSJ9XSwic3VtbWFyeSI6bnVs + bCwicmVxdWlyZW1lbnRzIjoiQWxsIFBHJkUgaW5jZW50aXZlcyBhcHBseSB0 + b3dhcmRzIHRoZSBwdXJjaGFzZSBvZiBuZXcgb3IgcmVwbGFjZW1lbnQgZW5l + cmd5LWVmZmljaWVudCBlcXVpcG1lbnQuIFVzZWQgb3IgcmVidWlsdCBlcXVp + cG1lbnQgaXMgbm90IGVsaWdpYmxlLCBhbmQgY3VzdG9tZXJzIG11c3QgaW5j + bHVkZSBwcm9vZiB0aGF0IHRoZSBhcHBsaWFuY2VzIG1lZXQgYWxsIHRoZSBy + ZXF1aXJlZCBlbmVyZ3kgZWZmaWNpZW5jeSBzcGVjaWZpY2F0aW9ucy4gUGxl + YXNlIG5vdGUgdGhhdCBmdW5kaW5nIGZvciB0aGVzZSBwcm9ncmFtcyBpcyBs + aW1pdGVkIGFuZCBhdmFpbGFibGUgb24gYSBmaXJzdC1jb21lLCBmaXJzdC1z + ZXJ2ZWQgYmFzaXMgdW50aWwgYWxsb2NhdGVkIGZ1bmRzIGFyZSBleGhhdXN0 + ZWQgb3IgdGhlIHByb2dyYW0gZW5kcywgd2hpY2hldmVyIGNvbWVzIGZpcnN0 + LiBUaGlzIHByb2dyYW0gbWF5IGJlIG1vZGlmaWVkIG9yIHRlcm1pbmF0ZWQg + d2l0aG91dCBwcmlvciBub3RpY2UsIGFuZCBhZGRpdGlvbmFsIHRlcm1zIGFu + ZCBjb25kaXRpb25zIGFwcGx5LiBJbnN0YWxsYXRpb24gYWRkcmVzcyBtdXN0 + IGhhdmUgYSBjb21tZXJjaWFsIGVsZWN0cmljIGFjY291bnQgd2l0aFBHJkUu + IEZvciBpdGVtIGxldmVsIHNwZWNpZmljYXRpb25zIHJlZmVyIHRvIGNhdGFs + b2cuIn0seyJpbmNlbnRpdmVJZCI6MzE1NjMwOSwibWFzdGVySW5jZW50aXZl + SWQiOjMxNTYzMDksImVsaWdpYmlsaXR5IjoiQ09VTERfQkVfRUxJR0lCTEUi + LCJyZXF1aXJlZERhdGEiOlt7ImFwcGxpY2FiaWxpdHlLZXkiOiJlbmRVc2VS + ZXNpZGVudGlhbCIsImRpc3BsYXlOYW1lIjoiRW5kIFVzZSBSZXNpZGVudGlh + bCIsImRlc2NyaXB0aW9uIjoiRW5kIFVzZSBUZWNobm9sb2d5IGZvciBSZXNp + ZGVudGlhbCIsInJlcXVpcmVkVmFsdWUiOiJidWlsZGluZ1NoZWxsIiwib3Bl + cmF0b3IiOiI9In1dLCJ0YXJpZmZDb2RlIjoiTm9uZSIsImluY2VudGl2ZU5h + bWUiOiJSZXNpZGVudGlhbCBHZW5lcmFsIEltcHJvdmVtZW50cyBSZWJhdGVz + IiwibHNlSWQiOjczNCwibHNlTmFtZSI6IlBhY2lmaWMgR2FzICYgRWxlY3Ry + aWMgQ28iLCJzZXJ2aWNlVHlwZSI6IkVMRUNUUklDSVRZIiwiY3VzdG9tZXJD + bGFzcyI6IlJFU0lERU5USUFMIiwic3RhcnREYXRlIjoiMjAxMy0wMS0wMSIs + ImVuZERhdGUiOiIyMDE0LTAxLTAxIiwiaXNFeGhhdXN0ZWQiOmZhbHNlLCJw + cm9qZWN0VHlwZSI6ImJ1aWxkaW5nU2hlbGwiLCJpbmNlbnRpdmVUeXBlIjoi + cmViYXRlIiwicmF0ZSI6MC4yMDAwMDAsInJhdGVVbml0IjoiQ09TVF9QRVJf + VU5JVCIsImRvY3VtZW50cyI6bnVsbCwianVyaXNkaWN0aW9uIjoidXRpbGl0 + eSIsInF1YW50aXR5S2V5Ijp7ImtleU5hbWUiOiJjb29sUm9vZkxvd1Nsb3Bl + NzM0IiwiZGlzcGxheU5hbWUiOiJDb29sIFJvb2YgTG93IFNsb3BlIiwiZGVz + Y3JpcHRpb24iOiJDb29sIFJvb2YgTG93IFNsb3BlIGF2YWlsYWJsZSBpbiBD + bGltYXRlIFpvbmUgKENaKSAyLCA0LCAxMSAmIDEyIG9ubHkuIEN1c3RvbWVy + IG11c3QgaGF2ZSBlbGVjdHJpY2l0eSBkaXN0cmlidXRlZCBieSBQRyZFIHRv + IHRoZSBpbnN0YWxsYXRpb24gYWRkcmVzcy4gIE9ubHkgUEcmRSByZXNpZGVu + dGlhbCBlbGVjdHJpYyBjdXN0b21lcnMgd2hvIG93biBhbiBleGlzdGluZyBz + aW5nbGUgZmFtaWx5IG9yIG1vYmlsZSBob21lIGFyZSBlbGlnaWJsZS4gTXVz + dCByZXNpZGUgaW4gcXVhbGlmeWluZyBjbGltYXRlIHpvbmUgMiwgNCwgMTEs + IDEyIG9yIDEzLiBPbmx5IHN0ZWVwIHNsb3BlIHJvb2ZzIHF1YWxpZnkgaW4g + Y2xpbWF0ZSB6b25lIDEzLiBUbyBmaW5kIHlvdXIgY2xpbWF0ZSB6b25lIGdv + IHRvOiB3d3cucGdlLmNvbS9jbGltYXRlem9uZXMuIEN1c3RvbWVyIG11c3Qg + aGF2ZSBhIGNlbnRyYWwgYWlyIGNvbmRpdGlvbmluZyAoQUMpIHN5c3RlbSAg + b3IgYmUgaW5zdGFsbGluZyBhIG5ldyBBQyBzeXN0ZW0gY29uY3VycmVudGx5 + LiAgQ3VzdG9tZXIgbXVzdCBwdXJjaGFzZSBhbmQgaGF2ZSBpbnN0YWxsZWQg + cm9vZmluZyBtYXRlcmlhbHMgdGhhdCBtZWV0IG9yIGV4Y2VlZCB0aGUgQWdl + ZCBTb2xhciBSZWZsZWN0YW5jZSBhbmQgQWdlZCBUaGVybWFsIEVtaXR0YW5j + ZSBsZXZlbHMgc3BlY2lmaWVkIGluIHRoZSBSZWJhdGUgTGV2ZWwgYW5kIFBy + b2R1Y3QgU3BlY2lmaWNhdGlvbnMgVGFibGUgYWxvbmcgd2l0aCBiZWluZyBy + YXRlZCBieSB0aGUgQ29vbCBSb29mIFJhdGluZyBDb3VuY2lsIChDUlJDKS4g + VGhlIENSUkMgbWFpbnRhaW5zIGEgZGlyZWN0b3J5IGFuZCBzZWFyY2hhYmxl + IGRhdGFiYXNlIG9mIHJhdGVkIHByb2R1Y3RzIGF0IHd3dy5jb29scm9vZnMu + b3JnLiBFeGNsdXNpb25zOiAgSG9tZXMgd2l0aCBwb3J0YWJsZSBvciB3aW5k + b3cgYWlyIGNvbmRpdGlvbmluZyBzeXN0ZW1zIGFuZCBldmFwb3JhdGl2ZSBj + b29sZXJzIChlLmcuIHN3YW1wIGNvb2xlcnMpIGRvIG5vdCBxdWFsaWZ5LiJ9 + LCJxdWFudGl0eUtleUNhcCI6bnVsbCwic3RhdGUiOiJDQSIsInBlcmNlbnRD + b3N0Q2FwIjpudWxsLCJwZXJjZW50Q29zdENhcEtleSI6eyJrZXlOYW1lIjpu + dWxsfSwicGF5bWVudENhcCI6bnVsbCwicGF5bWVudER1cmF0aW9uIjpudWxs + LCJpbmNlbnRpdmVQYWlkVG8iOiJ0ZW5hbnRPck93bmVyIiwicHJvamVjdFR5 + cGVFeGNsdXNpdmUiOm51bGwsImFwcGxpY2FiaWxpdGllcyI6W3siYXBwbGlj + YWJpbGl0eUtleSI6ImVuZFVzZVJlc2lkZW50aWFsIiwiZGlzcGxheU5hbWUi + OiJFbmQgVXNlIFJlc2lkZW50aWFsIiwiZGVzY3JpcHRpb24iOiJFbmQgVXNl + IFRlY2hub2xvZ3kgZm9yIFJlc2lkZW50aWFsIiwicmVxdWlyZWRWYWx1ZSI6 + ImJ1aWxkaW5nU2hlbGwiLCJvcGVyYXRvciI6Ij0ifV0sInN1bW1hcnkiOm51 + bGwsInJlcXVpcmVtZW50cyI6Ik9ubHkgUEcmRSByZXNpZGVudGlhbCBlbGVj + dHJpYyBjdXN0b21lcnMgd2hvIG93biBhbiBleGlzdGluZyBzaW5nbGUgZmFt + aWx5IG9yIG1vYmlsZSBcbmhvbWUgYXJlIGVsaWdpYmxlLlxuLU11c3QgcmVz + aWRlIGluIHF1YWxpZnlpbmcgY2xpbWF0ZSB6b25lcyAoQ1opIDIsIDQsIDEx + LCAxMiBvciAxMy5cbi1Pbmx5IHN0ZWVwIHNsb3BlIHJvb2ZzIHF1YWxpZnkg + aW4gY2xpbWF0ZSB6b25lIDEzLiBUbyBmaW5kIHlvdXIgY2xpbWF0ZSB6b25l + IGdvIHRvIFxud3d3LnBnZS5jb20vY2xpbWF0ZXpvbmVzLlxuLUN1c3RvbWVy + IG11c3QgaGF2ZSBhIGNlbnRyYWwgYWlyIGNvbmRpdGlvbmluZyAoQUMpIHN5 + c3RlbSBvciBiZSBpbnN0YWxsaW5nIGEgbmV3IEFDIHN5c3RlbSBjb25jdXJy + ZW50bHkuXG4tQ2hlY2sgd2l0aCB5b3VyIGxvY2FsIGNpdHkvY291bnR5IGJ1 + aWxkaW5nIGRlcGFydG1lbnQgZm9yIGFueSBzcGVjaWFsIHJlcXVpcmVtZW50 + cyBcbnJlbGF0ZWQgdG8geW91ciBzZWxlY3RlZCBwcm9kdWN0LlxuLUN1c3Rv + bWVyIG11c3QgcHVyY2hhc2UgYW5kIGhhdmUgaW5zdGFsbGVkIHJvb2Zpbmcg + bWF0ZXJpYWxzIHRoYXQgbWVldCBvciBleGNlZWQgdGhlIEFnZWQgU29sYXIg + UmVmbGVjdGFuY2UgYW5kIEFnZWQgVGhlcm1hbCBFbWl0dGFuY2UgbGV2ZWxz + IHNwZWNpZmllZCBpbiB0aGUgUmViYXRlIExldmVsIGFuZCBQcm9kdWN0IFNw + ZWNpZmljYXRpb25zIFRhYmxlIGFuZCB0aGF0IGFyZSByYXRlZCBieSB0aGUg + Q29vbCBSb29mIFJhdGluZyBDb3VuY2lsIChDUlJDKS5cbi1UaGUgQ1JSQyBt + YWludGFpbnMgYSBkaXJlY3RvcnkgYW5kIHNlYXJjaGFibGUgZGF0YWJhc2Ug + b2YgcmF0ZWQgcHJvZHVjdHMgYXQgd3d3LmNvb2xyb29mcy5vcmcuXG4tSW5z + dGFsbGF0aW9uIGFkZHJlc3MgbXVzdCBoYXZlIGFuIGVsZWN0cmljIGFjY291 + bnQgd2l0aCBQRyZFLlxuIn0seyJpbmNlbnRpdmVJZCI6MzE1NjMxMCwibWFz + dGVySW5jZW50aXZlSWQiOjMxNTYzMTAsImVsaWdpYmlsaXR5IjoiQ09VTERf + QkVfRUxJR0lCTEUiLCJyZXF1aXJlZERhdGEiOlt7ImFwcGxpY2FiaWxpdHlL + ZXkiOiJlbmRVc2VSZXNpZGVudGlhbCIsImRpc3BsYXlOYW1lIjoiRW5kIFVz + ZSBSZXNpZGVudGlhbCIsImRlc2NyaXB0aW9uIjoiRW5kIFVzZSBUZWNobm9s + b2d5IGZvciBSZXNpZGVudGlhbCIsInJlcXVpcmVkVmFsdWUiOiJtYWpvckFw + cGxpYW5jZXMiLCJvcGVyYXRvciI6Ij0ifV0sInRhcmlmZkNvZGUiOiJOb25l + IiwiaW5jZW50aXZlTmFtZSI6IlJlc2lkZW50aWFsIEFwcGxpYW5jZXMgUmVi + YXRlcyIsImxzZUlkIjo3MzQsImxzZU5hbWUiOiJQYWNpZmljIEdhcyAmIEVs + ZWN0cmljIENvIiwic2VydmljZVR5cGUiOiJFTEVDVFJJQ0lUWSIsImN1c3Rv + bWVyQ2xhc3MiOiJSRVNJREVOVElBTCIsInN0YXJ0RGF0ZSI6IjIwMTMtMDEt + MDEiLCJlbmREYXRlIjoiMjAxNC0wMS0wMSIsImlzRXhoYXVzdGVkIjpmYWxz + ZSwicHJvamVjdFR5cGUiOiJtYWpvckFwcGxpYW5jZXMiLCJpbmNlbnRpdmVU + eXBlIjoicmViYXRlIiwicmF0ZSI6NTAuMDAwMDAwLCJyYXRlVW5pdCI6IkNP + U1RfUEVSX1VOSVQiLCJkb2N1bWVudHMiOm51bGwsImp1cmlzZGljdGlvbiI6 + InV0aWxpdHkiLCJxdWFudGl0eUtleSI6eyJrZXlOYW1lIjoiaGlnaEVmZmlj + aWVuY3lDbG90aGVzV2FzaGVyNzM0IiwiZGlzcGxheU5hbWUiOiJIaWdoLUVm + ZmljaWVuY3kgQ2xvdGhlcyBXYXNoZXIiLCJkZXNjcmlwdGlvbiI6IkhpZ2gt + RWZmaWNpZW5jeSBDbG90aGVzIFdhc2hlciBDRUUgVGllciAzIG9yIGhpZ2hl + ciwgTUVGIG9mIDIuNCBvciBncmVhdGVyLCBXRiBvZiA0LjAgb3IgbGVzcyBS + ZXF1aXJlbWVudHM6IENsb3RoZXMgd2FzaGVyIG11c3QgYmUgYSBDb25zb3J0 + aXVtIGZvciBFbmVyZ3kgRWZmaWNpZW5jeSAoQ0VFKSBUaWVyMyBtb2RlbCBv + ciBoaWdoZXIuIEdvdG8gd3d3LmNlZTEub3JnL2NvbS9jd3NoL2N3c2hzcGVj + LnBkZlxyXG5mb3IgYSBsaXN0IG9mIHF1YWxpZnlpbmcgY29tbWVyY2lhbCB3 + YXNoZXJzLiBUaGUgd2FzaGVyIG11c3QgaGF2ZSBhIE1vZGlmaWVkIEVuZXJn + eSBGYWN0b3IgKE1FRikgb2YgMi40IG9yIGdyZWF0ZXIgYW5kXHJcbmEgV2F0 + ZXIgRmFjdG9yIG9mIDQuMCBvciBsZXNzLiBJbnN0YWxsYXRpb24gYWRkcmVz + cyBtdXN0IGhhdmUgY29tbWVyY2lhbCBlbGVjdHJpYyBhbmQgb3IgbmF0dXJh + bCBnYXMgYWNjb3VudHMgd2l0aCBQRyZFLiBFeGNsdXNpb25zOiBOb3QgYWxs + IEVORVJHWVNUQVIgY2xvdGhlc3dhc2hlcnMgcXVhbGlmeSBmb3IgdGhpcyBy + ZWJhdGUuIENFRSBUaWVyMSBhbmQgMiBtb2RlbHMgZG8gbm90IHF1YWxpZnku + In0sInF1YW50aXR5S2V5Q2FwIjpudWxsLCJzdGF0ZSI6IkNBIiwicGVyY2Vu + dENvc3RDYXAiOm51bGwsInBlcmNlbnRDb3N0Q2FwS2V5Ijp7ImtleU5hbWUi + Om51bGx9LCJwYXltZW50Q2FwIjpudWxsLCJwYXltZW50RHVyYXRpb24iOm51 + bGwsImluY2VudGl2ZVBhaWRUbyI6InRlbmFudE9yT3duZXIiLCJwcm9qZWN0 + VHlwZUV4Y2x1c2l2ZSI6bnVsbCwiYXBwbGljYWJpbGl0aWVzIjpbeyJhcHBs + aWNhYmlsaXR5S2V5IjoiZW5kVXNlUmVzaWRlbnRpYWwiLCJkaXNwbGF5TmFt + ZSI6IkVuZCBVc2UgUmVzaWRlbnRpYWwiLCJkZXNjcmlwdGlvbiI6IkVuZCBV + c2UgVGVjaG5vbG9neSBmb3IgUmVzaWRlbnRpYWwiLCJyZXF1aXJlZFZhbHVl + IjoibWFqb3JBcHBsaWFuY2VzIiwib3BlcmF0b3IiOiI9In1dLCJzdW1tYXJ5 + IjpudWxsLCJyZXF1aXJlbWVudHMiOiJBbGwgUEcmRSBpbmNlbnRpdmVzIGFw + cGx5IHRvd2FyZHMgdGhlIHB1cmNoYXNlIG9mIG5ldyBvciByZXBsYWNlbWVu + dCBlbmVyZ3ktZWZmaWNpZW50IGVxdWlwbWVudC4gVXNlZCBvciByZWJ1aWx0 + IGVxdWlwbWVudCBpcyBub3QgZWxpZ2libGUsIGFuZCBjdXN0b21lcnMgbXVz + dCBpbmNsdWRlIHByb29mIHRoYXQgdGhlIGFwcGxpYW5jZXMgbWVldCBhbGwg + dGhlIHJlcXVpcmVkIGVuZXJneSBlZmZpY2llbmN5IHNwZWNpZmljYXRpb25z + LiBQbGVhc2Ugbm90ZSB0aGF0IGZ1bmRpbmcgZm9yIHRoZXNlIHByb2dyYW1z + IGlzIGxpbWl0ZWQgYW5kIGF2YWlsYWJsZSBvbiBhIGZpcnN0LWNvbWUsIGZp + cnN0LXNlcnZlZCBiYXNpcyB1bnRpbCBhbGxvY2F0ZWQgZnVuZHMgYXJlIGV4 + aGF1c3RlZCBvciB0aGUgcHJvZ3JhbSBlbmRzLCB3aGljaGV2ZXIgY29tZXMg + Zmlyc3QuIFRoaXMgcHJvZ3JhbSBtYXkgYmUgbW9kaWZpZWQgb3IgdGVybWlu + YXRlZCB3aXRob3V0IHByaW9yIG5vdGljZSwgYW5kIGFkZGl0aW9uYWwgdGVy + bXMgYW5kIGNvbmRpdGlvbnMgYXBwbHkuIEluc3RhbGxhdGlvbiBhZGRyZXNz + IG11c3QgaGF2ZSBhIGNvbW1lcmNpYWwgZWxlY3RyaWMgYWNjb3VudCB3aXRo + UEcmRS4gRm9yIGl0ZW0gbGV2ZWwgc3BlY2lmaWNhdGlvbnMgcmVmZXIgdG8g + Y2F0YWxvZy4ifSx7ImluY2VudGl2ZUlkIjozMTU2MzExLCJtYXN0ZXJJbmNl + bnRpdmVJZCI6MzE1NjMxMSwiZWxpZ2liaWxpdHkiOiJDT1VMRF9CRV9FTElH + SUJMRSIsInJlcXVpcmVkRGF0YSI6W3siYXBwbGljYWJpbGl0eUtleSI6ImVu + ZFVzZVJlc2lkZW50aWFsIiwiZGlzcGxheU5hbWUiOiJFbmQgVXNlIFJlc2lk + ZW50aWFsIiwiZGVzY3JpcHRpb24iOiJFbmQgVXNlIFRlY2hub2xvZ3kgZm9y + IFJlc2lkZW50aWFsIiwicmVxdWlyZWRWYWx1ZSI6InBvb2wiLCJvcGVyYXRv + ciI6Ij0ifV0sInRhcmlmZkNvZGUiOiJOb25lIiwiaW5jZW50aXZlTmFtZSI6 + IlJlc2lkZW50aWFsICBQb29sIEZpbHRyYXRpb24gUHVtcHMgUmViYXRlcyIs + ImxzZUlkIjo3MzQsImxzZU5hbWUiOiJQYWNpZmljIEdhcyAmIEVsZWN0cmlj + IENvIiwic2VydmljZVR5cGUiOiJFTEVDVFJJQ0lUWSIsImN1c3RvbWVyQ2xh + c3MiOiJSRVNJREVOVElBTCIsInN0YXJ0RGF0ZSI6IjIwMTMtMDEtMDEiLCJl + bmREYXRlIjoiMjAxNC0wMS0wMSIsImlzRXhoYXVzdGVkIjpmYWxzZSwicHJv + amVjdFR5cGUiOiJwb29sIiwiaW5jZW50aXZlVHlwZSI6InJlYmF0ZSIsInJh + dGUiOjEwMC4wMDAwMDAsInJhdGVVbml0IjoiQ09TVF9QRVJfVU5JVCIsImRv + Y3VtZW50cyI6bnVsbCwianVyaXNkaWN0aW9uIjoidXRpbGl0eSIsInF1YW50 + aXR5S2V5Ijp7ImtleU5hbWUiOiJ2YXJpYWJsZVNwZWVkUG9vbFB1bXBGb3JG + aWx0cmF0aW9uT25seTczNCIsImRpc3BsYXlOYW1lIjoiVmFyaWFibGUtU3Bl + ZWQgUG9vbCBQdW1wIGZvciBGaWx0cmF0aW9uIE9ubHkiLCJkZXNjcmlwdGlv + biI6IlZhcmlhYmxlLVNwZWVkIFBvb2wgUHVtcCBmb3IgRmlsdHJhdGlvbiBP + bmx5LiBSZXF1aXJlbWVudHM6IEFsbCBwdW1wcyBtdXN0IGJlIG5ldywgYW5k + IG11c3QgYmUgcHVyY2hhc2VkIGFuZCBpbnN0YWxsZWQgYmV0d2VlbiBKYW51 + YXJ5IDEsIDIwMTMsIGFuZCBEZWNlbWJlciAzMSwgMjAxNC4gUmViYXRlcyBh + cmUgZm9yIHF1YWxpZnlpbmcgcHVtcHMsIHRocmVlIGhvcnNlcG93ZXIgb3Ig + bGVzcywgaW5zdGFsbGVkIG9uIG5ldyBvciBleGlzdGluZyByZXNpZGVudGlh + bCBpbi1ncm91bmQgc3dpbW1pbmcgcG9vbHMgZm9yIHByaW1hcnkgZmlsdHJh + dGlvbiBvbmx5LiBOZXcgcHVtcCBtdXN0IGJlIG9wZXJhdGVkIHdpdGggYSBx + dWFsaWZ5aW5nIGNvbnRyb2xsZXIuIEN1c3RvbWVyIG1heSBlaXRoZXIgdXNl + IGFuIGV4aXN0aW5nIHF1YWxpZnlpbmcgY29udHJvbGxlciBvciBwdXJjaGFz + ZSBhbmQgaW5zdGFsbCBhIHNlcGFyYXRlIHF1YWxpZnlpbmcgY29udHJvbGxl + ciB1bml0IGlmIHRoZSBuZXcgdmFyaWFibGUgc3BlZWQgb3IgdmFyaWFibGUt + ZmxvdyBwdW1wIGRvZXMgbm90IGhhdmUgYSBidWlsdC1pbiBxdWFsaWZ5aW5n + IGNvbnRyb2xsZXIuIFF1YWxpZnlpbmcgY29udHJvbGxlciBpcyBhIHByb2dy + YW1tYWJsZSBjb250cm9sbGVyIHRoYXQgbWVldHMgQ0EgVGl0bGUgMjAgcmVn + dWxhdGlvbiByZXF1aXJlbWVudHMuIE11c3QgYmUgYWJsZSB0byBvcGVyYXRl + IHRoZSBwb29sIHB1bXAgb24gYXQgbGVhc3QgdHdvIHNwZWVkcyBhbmQgc3dp + dGNoIHNwZWVkcyBhdXRvbWF0aWNhbGx5LiBNdXN0IGRlZmF1bHQgdG8gdGhl + IGxvd2VzdCBzcGVlZCBhZnRlciBvbmUgbm9ybWFsIGN5Y2xlICgyNCBob3Vy + cykgaWYgdGVtcG9yYXJ5IGhpZ2ggc3BlZWQgb3ZlcnJpZGUgY2FwYWJpbGl0 + eSBleGlzdHMuIEV4Y2x1c2lvbnM6IEFib3ZlLWdyb3VuZCBwb29sLCBwb25k + LCBwb29sIGNsZWFuZXIvYm9vc3Rlciwgc3BhIGFuZCB3YXRlciBmZWF0dXJl + IHB1bXBzIGRvIG5vdCBxdWFsaWZ5LiJ9LCJxdWFudGl0eUtleUNhcCI6bnVs + bCwic3RhdGUiOiJDQSIsInBlcmNlbnRDb3N0Q2FwIjpudWxsLCJwZXJjZW50 + Q29zdENhcEtleSI6eyJrZXlOYW1lIjpudWxsfSwicGF5bWVudENhcCI6bnVs + bCwicGF5bWVudER1cmF0aW9uIjpudWxsLCJpbmNlbnRpdmVQYWlkVG8iOiJ0 + ZW5hbnRPck93bmVyIiwicHJvamVjdFR5cGVFeGNsdXNpdmUiOm51bGwsImFw + cGxpY2FiaWxpdGllcyI6W3siYXBwbGljYWJpbGl0eUtleSI6ImVuZFVzZVJl + c2lkZW50aWFsIiwiZGlzcGxheU5hbWUiOiJFbmQgVXNlIFJlc2lkZW50aWFs + IiwiZGVzY3JpcHRpb24iOiJFbmQgVXNlIFRlY2hub2xvZ3kgZm9yIFJlc2lk + ZW50aWFsIiwicmVxdWlyZWRWYWx1ZSI6InBvb2wiLCJvcGVyYXRvciI6Ij0i + fV0sInN1bW1hcnkiOm51bGwsInJlcXVpcmVtZW50cyI6IkZvbGxvdyBhbGwg + bWFudWZhY3R1cmVyIGluc3RhbGxhdGlvbiByZXF1aXJlbWVudHMuXG4tQWxs + IHB1bXBzIG11c3QgYmUgbmV3LCBhbmQgbXVzdCBiZSBwdXJjaGFzZWQgYW5k + IGluc3RhbGxlZCBiZXR3ZWVuIEphbnVhcnkgMSwgMjAxMywgYW5kIERlY2Vt + YmVyIDMxLCAyMDE0LlxuLUVxdWlwbWVudCBhbmQgbWF0ZXJpYWxzIG11c3Qg + bWVldCBvciBleGNlZWQgYWxsIGFwcGxpY2FibGUgbG9jYWwsIHN0YXRlIGFu + ZCBmZWRlcmFsIHN0YW5kYXJkcy5cbi1SZWJhdGVzIGFyZSBmb3IgcXVhbGlm + eWluZyBwdW1wcywgdGhyZWUgaG9yc2Vwb3dlciBvciBsZXNzLCBpbnN0YWxs + ZWQgb24gbmV3IG9yIGV4aXN0aW5nIHJlc2lkZW50aWFsIGluLWdyb3VuZCBz + d2ltbWluZyBwb29scyBmb3IgcHJpbWFyeSBmaWx0cmF0aW9uIG9ubHkuIFZp + c2l0IHd3dy5wZ2UuY29tL3Bvb2xzIGZvciBhIGxpc3Qgb2YgcXVhbGlmeWlu + ZyBwdW1wcy5cbi1BYm92ZS1ncm91bmQgcG9vbCwgcG9uZCwgcG9vbCBjbGVh + bmVyL2Jvb3N0ZXIsIHNwYSBhbmQgd2F0ZXIgZmVhdHVyZSBwdW1wcyBkbyBu + b3QgcXVhbGlmeS5cbi1OZXcgcHVtcCBtdXN0IGJlIG9wZXJhdGVkIHdpdGgg + YSBxdWFsaWZ5aW5nIGNvbnRyb2xsZXIuXG4gQ3VzdG9tZXIgbWF5IGVpdGhl + ciB1c2UgYW4gZXhpc3RpbmcgcXVhbGlmeWluZyBjb250cm9sbGVyIG9yIHB1 + cmNoYXNlIGFuZCBpbnN0YWxsIGEgc2VwYXJhdGUgcXVhbGlmeWluZyBjb250 + cm9sbGVyIHVuaXQgaWYgdGhlIG5ldyB2YXJpYWJsZSBzcGVlZCBvciB2YXJp + YWJsZS1mbG93IHB1bXAgZG9lcyBub3QgaGF2ZSBhIGJ1aWx0LWluIHF1YWxp + ZnlpbmcgY29udHJvbGxlci5cblF1YWxpZnlpbmcgY29udHJvbGxlciBpcyBh + IHByb2dyYW1tYWJsZSBjb250cm9sbGVyIHRoYXQgbWVldHMgQ0EgVGl0bGUg + MjAgcmVndWxhdGlvbiByZXF1aXJlbWVudHMuIE11c3QgYmUgYWJsZSB0byBv + cGVyYXRlIHRoZSBwb29sIHB1bXAgb24gYXQgbGVhc3QgdHdvIHNwZWVkcyBh + bmQgc3dpdGNoIHNwZWVkcyBhdXRvbWF0aWNhbGx5In0seyJpbmNlbnRpdmVJ + ZCI6MzE1NjMyMSwibWFzdGVySW5jZW50aXZlSWQiOjMxNTYzMjEsImVsaWdp + YmlsaXR5IjoiQ09VTERfQkVfRUxJR0lCTEUiLCJyZXF1aXJlZERhdGEiOlt7 + ImFwcGxpY2FiaWxpdHlLZXkiOiJjb25zdHJ1Y3Rpb25UeXBlIiwiZGlzcGxh + eU5hbWUiOiJDb25zdHJ1Y3Rpb24gVHlwZSIsImRlc2NyaXB0aW9uIjoiQ29u + c3RydWN0aW9uIGlzIG5ldyBvciBleGlzdGluZyIsInJlcXVpcmVkVmFsdWUi + OiJyZXRyb2ZpdCIsIm9wZXJhdG9yIjoiPSJ9LHsiYXBwbGljYWJpbGl0eUtl + eSI6ImVuZFVzZUNvbW1lcmNpYWwiLCJkaXNwbGF5TmFtZSI6IkVuZCBVc2Ug + Q29tbWVyY2lhbCIsImRlc2NyaXB0aW9uIjoiRW5kIFVzZSBUZWNobm9sb2d5 + IGZvciBDb21tZXJjaWFsIiwicmVxdWlyZWRWYWx1ZSI6ImxpZ2h0aW5nIiwi + b3BlcmF0b3IiOiI9In1dLCJ0YXJpZmZDb2RlIjoiTm9uZSIsImluY2VudGl2 + ZU5hbWUiOiJDdXN0b21pemVkIFJldHJvZml0IC0gTGlnaHRpbmciLCJsc2VJ + ZCI6NzM0LCJsc2VOYW1lIjoiUGFjaWZpYyBHYXMgJiBFbGVjdHJpYyBDbyIs + InNlcnZpY2VUeXBlIjoiRUxFQ1RSSUNJVFkiLCJjdXN0b21lckNsYXNzIjoi + R0VORVJBTCIsInN0YXJ0RGF0ZSI6IjIwMTMtMDEtMDEiLCJlbmREYXRlIjoi + MjAxNC0wMS0wMSIsImlzRXhoYXVzdGVkIjpmYWxzZSwicHJvamVjdFR5cGUi + OiJidWlsZGluZ1NoZWxsIiwiaW5jZW50aXZlVHlwZSI6ImJpbGxDcmVkaXQi + LCJyYXRlIjo1LjAwMDAwMCwicmF0ZVVuaXQiOiJDT1NUX1BFUl9VTklUIiwi + ZG9jdW1lbnRzIjpudWxsLCJqdXJpc2RpY3Rpb24iOiJ1dGlsaXR5IiwicXVh + bnRpdHlLZXkiOnsia2V5TmFtZSI6bnVsbH0sInF1YW50aXR5S2V5Q2FwIjpu + dWxsLCJzdGF0ZSI6IkNBIiwicGVyY2VudENvc3RDYXAiOm51bGwsInBlcmNl + bnRDb3N0Q2FwS2V5Ijp7ImtleU5hbWUiOm51bGx9LCJwYXltZW50Q2FwIjpu + dWxsLCJwYXltZW50RHVyYXRpb24iOm51bGwsImluY2VudGl2ZVBhaWRUbyI6 + InRlbmFudE9yT3duZXIiLCJwcm9qZWN0VHlwZUV4Y2x1c2l2ZSI6bnVsbCwi + YXBwbGljYWJpbGl0aWVzIjpbeyJhcHBsaWNhYmlsaXR5S2V5IjoiY29uc3Ry + dWN0aW9uVHlwZSIsImRpc3BsYXlOYW1lIjoiQ29uc3RydWN0aW9uIFR5cGUi + LCJkZXNjcmlwdGlvbiI6IkNvbnN0cnVjdGlvbiBpcyBuZXcgb3IgZXhpc3Rp + bmciLCJyZXF1aXJlZFZhbHVlIjoicmV0cm9maXQiLCJvcGVyYXRvciI6Ij0i + fSx7ImFwcGxpY2FiaWxpdHlLZXkiOiJlbmRVc2VDb21tZXJjaWFsIiwiZGlz + cGxheU5hbWUiOiJFbmQgVXNlIENvbW1lcmNpYWwiLCJkZXNjcmlwdGlvbiI6 + IkVuZCBVc2UgVGVjaG5vbG9neSBmb3IgQ29tbWVyY2lhbCIsInJlcXVpcmVk + VmFsdWUiOiJsaWdodGluZyIsIm9wZXJhdG9yIjoiPSJ9XSwic3VtbWFyeSI6 + bnVsbCwicmVxdWlyZW1lbnRzIjoiLVlvdSBtdXN0IGJlIGEgUEcmRSBjdXN0 + b21lciBhbmQgcGF5IHRoZSBQdWJsaWMgR29vZHMgQ2hhcmdlIG9uIHlvdXIg + ZWxlY3RyaWNhbmQvb3IgbmF0dXJhbCBnYXMgYmlsbC4gLVlvdSBtdXN0IHN1 + Ym1pdCBhIHByb2plY3QgYXBwbGljYXRpb24gcHJpb3IgdG8gYmVnaW5uaW5n + IHdvcmsgb24gdGhlIHByb2plY3QuIC1QRyZFIG11c3QgaW5zcGVjdCBhbmQg + YXBwcm92ZSB0aGUgcHJvamVjdCBwcmlvciB0byB0aGUgcmVtb3ZhbCBvZiB0 + aGUgZXhpc3RpbmcgZXF1aXBtZW50L3N5c3RlbXMgYW5kIHRoZSBpbnN0YWxs + YXRpb24gb2YgbmV3IGVxdWlwbWVudC9zeXN0ZW1zIn0seyJpbmNlbnRpdmVJ + ZCI6MzE1NjMyMiwibWFzdGVySW5jZW50aXZlSWQiOjMxNTYzMjIsImVsaWdp + YmlsaXR5IjoiQ09VTERfQkVfRUxJR0lCTEUiLCJyZXF1aXJlZERhdGEiOlt7 + ImFwcGxpY2FiaWxpdHlLZXkiOiJlbmRVc2VDb21tZXJjaWFsIiwiZGlzcGxh + eU5hbWUiOiJFbmQgVXNlIENvbW1lcmNpYWwiLCJkZXNjcmlwdGlvbiI6IkVu + ZCBVc2UgVGVjaG5vbG9neSBmb3IgQ29tbWVyY2lhbCIsInJlcXVpcmVkVmFs + dWUiOiJidWlsZGluZ1NoZWxsIiwib3BlcmF0b3IiOiI9In0seyJhcHBsaWNh + YmlsaXR5S2V5IjoiYW5udWFsQ29uc3VtcHRpb24iLCJkaXNwbGF5TmFtZSI6 + IkFubnVhbCBDb25zdW1wdGlvbiAiLCJkZXNjcmlwdGlvbiI6IkFubnVhbCBD + b25zdW1wdGlvbiBieSBjdXN0b21lciIsInJlcXVpcmVkVmFsdWUiOiIyMDAw + MDAwIiwibWluVmFsdWUiOjIwMDAwMDAuMDAsInF1YW50aXR5VW5pdCI6ImtX + aCIsIm9wZXJhdG9yIjoiPiJ9XSwidGFyaWZmQ29kZSI6Ik5vbmUiLCJpbmNl + bnRpdmVOYW1lIjoiUmV0cm9jb21taXNzaW9uaW5nIFByb2dyYW0iLCJsc2VJ + ZCI6NzM0LCJsc2VOYW1lIjoiUGFjaWZpYyBHYXMgJiBFbGVjdHJpYyBDbyIs + InNlcnZpY2VUeXBlIjoiRUxFQ1RSSUNJVFkiLCJjdXN0b21lckNsYXNzIjoi + R0VORVJBTCIsInN0YXJ0RGF0ZSI6IjIwMTMtMDEtMDEiLCJlbmREYXRlIjpu + dWxsLCJpc0V4aGF1c3RlZCI6ZmFsc2UsInByb2plY3RUeXBlIjoibG9hZE1h + bmFnZW1lbnQiLCJpbmNlbnRpdmVUeXBlIjoiYmlsbENyZWRpdCIsInJhdGUi + OjkuMDAwMDAwLCJyYXRlVW5pdCI6IkNPU1RfUEVSX1VOSVQiLCJkb2N1bWVu + dHMiOm51bGwsImp1cmlzZGljdGlvbiI6InV0aWxpdHkiLCJxdWFudGl0eUtl + eSI6eyJrZXlOYW1lIjpudWxsfSwicXVhbnRpdHlLZXlDYXAiOm51bGwsInN0 + YXRlIjoiQ0EiLCJwZXJjZW50Q29zdENhcCI6bnVsbCwicGVyY2VudENvc3RD + YXBLZXkiOnsia2V5TmFtZSI6bnVsbH0sInBheW1lbnRDYXAiOm51bGwsInBh + eW1lbnREdXJhdGlvbiI6bnVsbCwiaW5jZW50aXZlUGFpZFRvIjoidGVuYW50 + T3JPd25lciIsInByb2plY3RUeXBlRXhjbHVzaXZlIjpudWxsLCJhcHBsaWNh + YmlsaXRpZXMiOlt7ImFwcGxpY2FiaWxpdHlLZXkiOiJhbm51YWxDb25zdW1w + dGlvbiIsImRpc3BsYXlOYW1lIjoiQW5udWFsIENvbnN1bXB0aW9uICIsImRl + c2NyaXB0aW9uIjoiQW5udWFsIENvbnN1bXB0aW9uIGJ5IGN1c3RvbWVyIiwi + cmVxdWlyZWRWYWx1ZSI6IjIwMDAwMDAiLCJtaW5WYWx1ZSI6MjAwMDAwMC4w + MCwicXVhbnRpdHlVbml0Ijoia1doIiwib3BlcmF0b3IiOiI+In0seyJhcHBs + aWNhYmlsaXR5S2V5IjoiZW5kVXNlQ29tbWVyY2lhbCIsImRpc3BsYXlOYW1l + IjoiRW5kIFVzZSBDb21tZXJjaWFsIiwiZGVzY3JpcHRpb24iOiJFbmQgVXNl + IFRlY2hub2xvZ3kgZm9yIENvbW1lcmNpYWwiLCJyZXF1aXJlZFZhbHVlIjoi + YnVpbGRpbmdTaGVsbCIsIm9wZXJhdG9yIjoiPSJ9XSwic3VtbWFyeSI6bnVs + bCwicmVxdWlyZW1lbnRzIjoiVGhlIFJDeCBQcm9ncmFtIGlzIGludGVuZGVk + IGZvciBjb21tZXJjaWFsIGN1c3RvbWVycyB3aG86XG4tUmVjZWl2ZSBnYXMg + T1IgZWxlY3RyaWMgc2VydmljZSBmcm9tIFBHJkU7XG4tUGF5IGEgQ2FsaWZv + cm5pYSBwdWJsaWMgcHVycG9zZSBwcm9ncmFtcyBzdXJjaGFyZ2Ugb24gdGhl + aXIgdXRpbGl0eSBiaWxscztcbi1Pd24gb3Igb3BlcmF0ZSBhIGZhY2lsaXR5 + IHRoYXQgaGFzIGF0IGxlYXN0IDEwMCwwMDAgc3F1YXJlIGZlZXQgb2YgY29u + ZGl0aW9uZWQgc3BhY2Ugb3IgdGhhdCBjb25zdW1lcyAyLDAwMCwwMDAga1do + IG9yIDUwLDAwMCB0aGVybXMgcGVyIHllYXIgYW5kXG4tSGF2ZSBhY2Nlc3Mg + dG8gZnVuZGluZyB0byBpbXBsZW1lbnQgYWdyZWVkIHVwb24gUkN4IG1lYXN1 + cmVzIHdpdGhpbiAxMiBtb250aHNcbiJ9LHsiaW5jZW50aXZlSWQiOjMxNTYz + MjMsIm1hc3RlckluY2VudGl2ZUlkIjozMTU2MzIzLCJlbGlnaWJpbGl0eSI6 + IkNPVUxEX0JFX0VMSUdJQkxFIiwicmVxdWlyZWREYXRhIjpbeyJhcHBsaWNh + YmlsaXR5S2V5IjoiYW5udWFsRGVtYW5kIiwiZGlzcGxheU5hbWUiOiJBbm51 + YWwgRGVtYW5kIiwiZGVzY3JpcHRpb24iOiJRdWFudGl0eSBpbiBrVyBvZiBs + b2FkIHRoYXQgaXMgdXNlZCBpbiB0aGUgbWF4aW11bSAxNS1taW51dGUga1cg + ZGVsaXZlcnkgZHVyaW5nIGVhY2ggbW9udGgsIGZvciAxMiBtb250aHMuIiwi + cmVxdWlyZWRWYWx1ZSI6IjIwMCIsIm1pblZhbHVlIjoyMDAuMDAsIm9wZXJh + dG9yIjoiPiJ9LHsiYXBwbGljYWJpbGl0eUtleSI6ImVuZFVzZUNvbW1lcmNp + YWwiLCJkaXNwbGF5TmFtZSI6IkVuZCBVc2UgQ29tbWVyY2lhbCIsImRlc2Ny + aXB0aW9uIjoiRW5kIFVzZSBUZWNobm9sb2d5IGZvciBDb21tZXJjaWFsIiwi + cmVxdWlyZWRWYWx1ZSI6ImN1c3RvbSIsIm9wZXJhdG9yIjoiPSJ9LHsiYXBw + bGljYWJpbGl0eUtleSI6InBlYWtEZW1hbmRSZWR1Y3Rpb24iLCJkaXNwbGF5 + TmFtZSI6IlBlYWsgRGVtYW5kIFJlZHVjdGlvbiIsImRlc2NyaXB0aW9uIjoi + UGVhayBEZW1hbmQgUmVkdWN0aW9uIGJ5IGEgY3VzdG9tZXIiLCJyZXF1aXJl + ZFZhbHVlIjoiMzAiLCJtaW5WYWx1ZSI6MzAuMDAsIm9wZXJhdG9yIjoiPiJ9 + XSwidGFyaWZmQ29kZSI6Ik5vbmUiLCJpbmNlbnRpdmVOYW1lIjoiRGVtYW5k + IFJlc3BvbnNlIFRlY2hub2xvZ3kgSW5jZW50aXZlcyIsImxzZUlkIjo3MzQs + ImxzZU5hbWUiOiJQYWNpZmljIEdhcyAmIEVsZWN0cmljIENvIiwic2Vydmlj + ZVR5cGUiOiJFTEVDVFJJQ0lUWSIsImN1c3RvbWVyQ2xhc3MiOiJHRU5FUkFM + Iiwic3RhcnREYXRlIjoiMjAxMy0wMS0wMSIsImVuZERhdGUiOiIyMDE0LTAx + LTAxIiwiaXNFeGhhdXN0ZWQiOmZhbHNlLCJwcm9qZWN0VHlwZSI6ImxvYWRN + YW5hZ2VtZW50IiwiaW5jZW50aXZlVHlwZSI6ImJpbGxDcmVkaXQiLCJyYXRl + IjoxMjUuMDAwMDAwLCJyYXRlVW5pdCI6IkNPU1RfUEVSX1VOSVQiLCJkb2N1 + bWVudHMiOm51bGwsImp1cmlzZGljdGlvbiI6InV0aWxpdHkiLCJxdWFudGl0 + eUtleSI6eyJrZXlOYW1lIjpudWxsfSwicXVhbnRpdHlLZXlDYXAiOm51bGws + InN0YXRlIjoiQ0EiLCJwZXJjZW50Q29zdENhcCI6bnVsbCwicGVyY2VudENv + c3RDYXBLZXkiOnsia2V5TmFtZSI6bnVsbH0sInBheW1lbnRDYXAiOm51bGws + InBheW1lbnREdXJhdGlvbiI6bnVsbCwiaW5jZW50aXZlUGFpZFRvIjoidGVu + YW50T3JPd25lciIsInByb2plY3RUeXBlRXhjbHVzaXZlIjpudWxsLCJhcHBs + aWNhYmlsaXRpZXMiOlt7ImFwcGxpY2FiaWxpdHlLZXkiOiJhbm51YWxEZW1h + bmQiLCJkaXNwbGF5TmFtZSI6IkFubnVhbCBEZW1hbmQiLCJkZXNjcmlwdGlv + biI6IlF1YW50aXR5IGluIGtXIG9mIGxvYWQgdGhhdCBpcyB1c2VkIGluIHRo + ZSBtYXhpbXVtIDE1LW1pbnV0ZSBrVyBkZWxpdmVyeSBkdXJpbmcgZWFjaCBt + b250aCwgZm9yIDEyIG1vbnRocy4iLCJyZXF1aXJlZFZhbHVlIjoiMjAwIiwi + bWluVmFsdWUiOjIwMC4wMCwib3BlcmF0b3IiOiI+In0seyJhcHBsaWNhYmls + aXR5S2V5IjoiZW5kVXNlQ29tbWVyY2lhbCIsImRpc3BsYXlOYW1lIjoiRW5k + IFVzZSBDb21tZXJjaWFsIiwiZGVzY3JpcHRpb24iOiJFbmQgVXNlIFRlY2hu + b2xvZ3kgZm9yIENvbW1lcmNpYWwiLCJyZXF1aXJlZFZhbHVlIjoiY3VzdG9t + Iiwib3BlcmF0b3IiOiI9In0seyJhcHBsaWNhYmlsaXR5S2V5IjoicGVha0Rl + bWFuZFJlZHVjdGlvbiIsImRpc3BsYXlOYW1lIjoiUGVhayBEZW1hbmQgUmVk + dWN0aW9uIiwiZGVzY3JpcHRpb24iOiJQZWFrIERlbWFuZCBSZWR1Y3Rpb24g + YnkgYSBjdXN0b21lciIsInJlcXVpcmVkVmFsdWUiOiIzMCIsIm1pblZhbHVl + IjozMC4wMCwib3BlcmF0b3IiOiI+In1dLCJzdW1tYXJ5IjpudWxsLCJyZXF1 + aXJlbWVudHMiOiJUaGUgVEkgcHJvZ3JhbSBpcyBvcGVuIHRvIGFsbCBjb21t + ZXJjaWFsLCBpbmR1c3RyaWFsIGFuZCBhZ3JpY3VsdHVyYWwgY3VzdG9tZXJz + IHdobzogLUhhdmUgYSBmYWNpbGl0eSBsb2NhdGVkIGluIHRoZSBQRyZFIHNl + cnZpY2UgYXJlYSBhbmQgcmVjZWl2ZSBzZXJ2aWNlIGZyb20gUEcmRSB1cG9u + IGNvbXBsZXRpb24uIC1IYXZlIGhhZCBhIG1heGltdW0gZGVtYW5kIGdyZWF0 + ZXIgdGhhbiBvciBlcXVhbCB0byAyMDAga1cgd2l0aGluIHRoZSBsYXN0IDEy + IGJpbGxpbmcgbW9udGhzIG9yIGhhdmUgdGhlIGFiaWxpdHkgdG8gZGVtb25z + dHJhdGUgYSBsb2FkIHJlZHVjdGlvbiBncmVhdGVyIHRoYW4gb3IgZXF1YWwg + dG8gMzAga1cuIC1BcmUgc2VydmVkIGJ5IGFuIGludGVydmFsIG1ldGVyLCBv + ciBhIFNtYXJ0TWV0ZXLDouKAnsKiIGVsZWN0cmljIG1ldGVyLCB0aGF0IGNh + biBiZSByZWFkIHJlbW90ZWx5IGFuZCBiaWxsZWQgYnkgUEcmRS4gLUVucm9s + bCBpbiBhIFBHJkUgRFIgcHJvZ3JhbS4gQXV0byBEUiBpcyBhdmFpbGFibGUg + b25seSBvbiBQZWFrIERheSBQcmljaW5nLCBEZW1hbmQgQmlkZGluZyBhbmQg + UGVha0Nob2ljZSBwcm9ncmFtcyBhbmQgcmVxdWlyZXMgSW50ZXJuZXQgYWNj + ZXNzLiJ9LHsiaW5jZW50aXZlSWQiOjMxNTYzMjQsIm1hc3RlckluY2VudGl2 + ZUlkIjozMTU2MzI0LCJlbGlnaWJpbGl0eSI6IkNPVUxEX0JFX0VMSUdJQkxF + IiwicmVxdWlyZWREYXRhIjpbeyJhcHBsaWNhYmlsaXR5S2V5IjoiY29uc3Ry + dWN0aW9uVHlwZSIsImRpc3BsYXlOYW1lIjoiQ29uc3RydWN0aW9uIFR5cGUi + LCJkZXNjcmlwdGlvbiI6IkNvbnN0cnVjdGlvbiBpcyBuZXcgb3IgZXhpc3Rp + bmciLCJyZXF1aXJlZFZhbHVlIjoicmV0cm9maXQiLCJvcGVyYXRvciI6Ij0i + fSx7ImFwcGxpY2FiaWxpdHlLZXkiOiJlbmRVc2VDb21tZXJjaWFsIiwiZGlz + cGxheU5hbWUiOiJFbmQgVXNlIENvbW1lcmNpYWwiLCJkZXNjcmlwdGlvbiI6 + IkVuZCBVc2UgVGVjaG5vbG9neSBmb3IgQ29tbWVyY2lhbCIsInJlcXVpcmVk + VmFsdWUiOiJjdXN0b20iLCJvcGVyYXRvciI6Ij0ifV0sInRhcmlmZkNvZGUi + OiJOb25lIiwiaW5jZW50aXZlTmFtZSI6Ik9uLUJpbGwgRmluYW5jaW5nIElu + Y2VudGl2ZSAtIENvbW1lcmNpYWwiLCJsc2VJZCI6NzM0LCJsc2VOYW1lIjoi + UGFjaWZpYyBHYXMgJiBFbGVjdHJpYyBDbyIsInNlcnZpY2VUeXBlIjoiRUxF + Q1RSSUNJVFkiLCJjdXN0b21lckNsYXNzIjoiR0VORVJBTCIsInN0YXJ0RGF0 + ZSI6IjIwMTMtMDEtMDEiLCJlbmREYXRlIjpudWxsLCJpc0V4aGF1c3RlZCI6 + ZmFsc2UsInByb2plY3RUeXBlIjoib3RoZXIiLCJpbmNlbnRpdmVUeXBlIjoi + bG9hbiIsInJhdGUiOjAuMDAwMDAwLCJyYXRlVW5pdCI6IkNPU1RfUEVSX1VO + SVQiLCJkb2N1bWVudHMiOm51bGwsImp1cmlzZGljdGlvbiI6InV0aWxpdHki + LCJxdWFudGl0eUtleSI6eyJrZXlOYW1lIjpudWxsfSwicXVhbnRpdHlLZXlD + YXAiOm51bGwsInN0YXRlIjoiQ0EiLCJwZXJjZW50Q29zdENhcCI6bnVsbCwi + cGVyY2VudENvc3RDYXBLZXkiOnsia2V5TmFtZSI6bnVsbH0sInBheW1lbnRD + YXAiOm51bGwsInBheW1lbnREdXJhdGlvbiI6bnVsbCwiaW5jZW50aXZlUGFp + ZFRvIjoidGVuYW50T3JPd25lciIsInByb2plY3RUeXBlRXhjbHVzaXZlIjpu + dWxsLCJhcHBsaWNhYmlsaXRpZXMiOlt7ImFwcGxpY2FiaWxpdHlLZXkiOiJj + b25zdHJ1Y3Rpb25UeXBlIiwiZGlzcGxheU5hbWUiOiJDb25zdHJ1Y3Rpb24g + VHlwZSIsImRlc2NyaXB0aW9uIjoiQ29uc3RydWN0aW9uIGlzIG5ldyBvciBl + eGlzdGluZyIsInJlcXVpcmVkVmFsdWUiOiJyZXRyb2ZpdCIsIm9wZXJhdG9y + IjoiPSJ9LHsiYXBwbGljYWJpbGl0eUtleSI6ImVuZFVzZUNvbW1lcmNpYWwi + LCJkaXNwbGF5TmFtZSI6IkVuZCBVc2UgQ29tbWVyY2lhbCIsImRlc2NyaXB0 + aW9uIjoiRW5kIFVzZSBUZWNobm9sb2d5IGZvciBDb21tZXJjaWFsIiwicmVx + dWlyZWRWYWx1ZSI6ImN1c3RvbSIsIm9wZXJhdG9yIjoiPSJ9XSwic3VtbWFy + eSI6bnVsbCwicmVxdWlyZW1lbnRzIjoiVGhlIEVuZXJneSBFZmZpY2llbmN5 + IFJldHJvZml0IExvYW4gUHJvZ3JhbSBwcm92aWRlcyBxdWFsaWZpZWQgUEcm + RSBjdXN0b21lcnMgd2l0aCBhIG1lYW5zIHRvIGZpbmFuY2UgZW5lcmd5LWVm + ZmljaWVudChFRSkgcmV0cm9maXQgcHJvamVjdHMgaW1wbGVtZW50ZWQgdW5k + ZXIgc2VsZWN0IFBHJkUgRUUgUHJvZ3JhbXMgKHRoZSBcIlF1YWxpZmllZCBQ + cm9ncmFtXCIpLiBUaGUgbG9hbnMgaXNzdWVkIHVuZGVyIHRoZSBQcm9ncmFt + IGFyZSBpbnRlcmVzdC1mcmVlLCB1bnNlY3VyZWQgbG9hbnMgdG8gZnVsbHkg + b3IgcGFydGlhbGx5IHJlaW1idXJzZSBxdWFsaWZpZWQgUEcmRSBjdXN0b21l + cnMgZm9yIHRoZSBjb3N0cyB0aGV5IGluY3VyIGluIGNvbm5lY3Rpb24gd2l0 + aCBhIHF1YWxpZmllZCByZXRyb2ZpdCBwcm9qZWN0LCB3aGljaCB0ZXJtIHNo + YWxsIG1lYW4gdGhlIGVuZXJneSBlZmZpY2llbmN5IHJldHJvZml0IHByb2pl + Y3QgZGVzY3JpYmVkIGluIEN1c3RvbWVycyByZWxldmFudCBFbmVyZ3kgRWZm + aWNpZW5jeSBQcm9ncmFtIEFwcGxpY2F0aW9uLiBQcmlvciB0byBwdXJjaGFz + aW5nIGFuZCBpbnN0YWxsaW5nIGFueSBlbmVyZ3ktZWZmaWNpZW50IG1lYXN1 + cmVzIG9yIGVxdWlwbWVudCB1bmRlciB0aGUgUXVhbGlmaWVkIFByb2dyYW0s + IEN1c3RvbWVyIG11c3Qgc2F0aXNmeSB0aGUgZWxpZ2liaWxpdHkgcmVxdWly + ZW1lbnRzIG9mIGJvdGggdGhlIFByb2dyYW0gYW5kIFF1YWxpZmllZCBQcm9n + cmFtLiBCZWNhdXNlIGVuZXJneSBlZmZpY2llbmN5IHByb2plY3RzIGluIHBy + b2dyZXNzIGFyZSBpbmVsaWdpYmxlIHVuZGVyIHRoZSBQcm9ncmFtLCBDdXN0 + b21lciBtdXN0IGhhdmUgYW4gaW5zcGVjdGlvbiBvZiB0aGUgUmV0cm9maXQg + UHJvamVjdCBhbmQgTG9jYXRpb24gY29uZHVjdGVkIGFuZCBjb21wbGV0ZWQg + YnkgUEcmRSBiZWZvcmUgY29tbWVuY2luZyBhbnkgd29yayBvciBwdXJjaGFz + aW5nIGFueSBlcXVpcG1lbnQgZm9yIHRoZSBSZXRyb2ZpdCBQcm9qZWN0LiJ9 + LHsiaW5jZW50aXZlSWQiOjMxNTYzMjUsIm1hc3RlckluY2VudGl2ZUlkIjoz + MTU2MzI1LCJlbGlnaWJpbGl0eSI6IkNPVUxEX0JFX0VMSUdJQkxFIiwicmVx + dWlyZWREYXRhIjpbeyJhcHBsaWNhYmlsaXR5S2V5IjoiY29uc3RydWN0aW9u + VHlwZSIsImRpc3BsYXlOYW1lIjoiQ29uc3RydWN0aW9uIFR5cGUiLCJkZXNj + cmlwdGlvbiI6IkNvbnN0cnVjdGlvbiBpcyBuZXcgb3IgZXhpc3RpbmciLCJy + ZXF1aXJlZFZhbHVlIjoicmV0cm9maXQiLCJvcGVyYXRvciI6Ij0ifSx7ImFw + cGxpY2FiaWxpdHlLZXkiOiJhc2hyYWVTdGFuZGFyZHMiLCJkaXNwbGF5TmFt + ZSI6IkFTSFJBRSBTdGFuZGFyZHMiLCJkZXNjcmlwdGlvbiI6IkhhdmUgYSBs + aWNlbnNlZCBjb250cmFjdG9yIG9yIGVuZ2luZWVyIHZlcmlmeSBsaWdodGlu + ZyBwb3dlciBkZW5zaXR5IGFuZC9vciB2ZXJpZnkgdGhyb3VnaCBlbmVyZ3kg + bW9kZWxpbmcgdGhhdCB0aGUgcG9ydGlvbiBvZiB0aGUgYnVpbGRpbmcgYmVp + bmcgc3VibWl0dGVkIGZvciB0aGUgdGF4IGNyZWRpdCBpcyAyNSUtNTAlIGJl + dHRlciB0aGFuIEFTSFJBRSA5MC4xLTIwMDEgc3RhbmRhcmRzLiBTYXZlIGFs + bCB5b3VyIHJlY2VpcHRzIGFuZCBlcXVpcG1lbnQgZG9jdW1lbnRhdGlvbi4g + Q29uc3VsdCB0aGUgSVJTIG9yIHlvdXIgdGF4IGFkdmlzb3IuIiwicmVxdWly + ZWRWYWx1ZSI6IjI1IiwibWluVmFsdWUiOjI1LjAwLCJvcGVyYXRvciI6Ij4i + fSx7ImFwcGxpY2FiaWxpdHlLZXkiOiJlbmRVc2VDb21tZXJjaWFsIiwiZGlz + cGxheU5hbWUiOiJFbmQgVXNlIENvbW1lcmNpYWwiLCJkZXNjcmlwdGlvbiI6 + IkVuZCBVc2UgVGVjaG5vbG9neSBmb3IgQ29tbWVyY2lhbCIsInJlcXVpcmVk + VmFsdWUiOiJsaWdodGluZyIsIm9wZXJhdG9yIjoiPSJ9XSwidGFyaWZmQ29k + ZSI6Ik5vbmUiLCJpbmNlbnRpdmVOYW1lIjoiQ29tbWVyY2lhbCBFbmVyZ3kt + RWZmaWNpZW5jeSBGZWRlcmFsIFRheCBDcmVkaXRzIC0gTGlnaHRpbmciLCJs + c2VJZCI6NzM0LCJsc2VOYW1lIjoiUGFjaWZpYyBHYXMgJiBFbGVjdHJpYyBD + byIsInNlcnZpY2VUeXBlIjoiRUxFQ1RSSUNJVFkiLCJjdXN0b21lckNsYXNz + IjoiR0VORVJBTCIsInN0YXJ0RGF0ZSI6IjIwMTMtMDEtMDEiLCJlbmREYXRl + IjpudWxsLCJpc0V4aGF1c3RlZCI6ZmFsc2UsInByb2plY3RUeXBlIjoibGln + aHRpbmciLCJpbmNlbnRpdmVUeXBlIjoidGF4Q3JlZGl0IiwicmF0ZSI6MC42 + MDAwMDAsInJhdGVVbml0IjoiQ09TVF9QRVJfVU5JVCIsImRvY3VtZW50cyI6 + bnVsbCwianVyaXNkaWN0aW9uIjoidXRpbGl0eSIsInF1YW50aXR5S2V5Ijp7 + ImtleU5hbWUiOiJidWlsZGluZ1NxdWFyZUZvb3QiLCJkaXNwbGF5TmFtZSI6 + IkJ1aWxkaW5nIFNxdWFyZSBGb290YWdlIiwiZGVzY3JpcHRpb24iOiJJbmNl + bnRpdmUgaXMgcGVyIHNxdWFyZSBmb290IG9mIHRoZSBidWlsZGluZyBmYWNp + bGl0eSJ9LCJxdWFudGl0eUtleUNhcCI6bnVsbCwic3RhdGUiOiJDQSIsInBl + cmNlbnRDb3N0Q2FwIjpudWxsLCJwZXJjZW50Q29zdENhcEtleSI6eyJrZXlO + YW1lIjpudWxsfSwicGF5bWVudENhcCI6bnVsbCwicGF5bWVudER1cmF0aW9u + IjpudWxsLCJpbmNlbnRpdmVQYWlkVG8iOiJ0ZW5hbnRPck93bmVyIiwicHJv + amVjdFR5cGVFeGNsdXNpdmUiOm51bGwsImFwcGxpY2FiaWxpdGllcyI6W3si + YXBwbGljYWJpbGl0eUtleSI6ImFzaHJhZVN0YW5kYXJkcyIsImRpc3BsYXlO + YW1lIjoiQVNIUkFFIFN0YW5kYXJkcyIsImRlc2NyaXB0aW9uIjoiSGF2ZSBh + IGxpY2Vuc2VkIGNvbnRyYWN0b3Igb3IgZW5naW5lZXIgdmVyaWZ5IGxpZ2h0 + aW5nIHBvd2VyIGRlbnNpdHkgYW5kL29yIHZlcmlmeSB0aHJvdWdoIGVuZXJn + eSBtb2RlbGluZyB0aGF0IHRoZSBwb3J0aW9uIG9mIHRoZSBidWlsZGluZyBi + ZWluZyBzdWJtaXR0ZWQgZm9yIHRoZSB0YXggY3JlZGl0IGlzIDI1JS01MCUg + YmV0dGVyIHRoYW4gQVNIUkFFIDkwLjEtMjAwMSBzdGFuZGFyZHMuIFNhdmUg + YWxsIHlvdXIgcmVjZWlwdHMgYW5kIGVxdWlwbWVudCBkb2N1bWVudGF0aW9u + LiBDb25zdWx0IHRoZSBJUlMgb3IgeW91ciB0YXggYWR2aXNvci4iLCJyZXF1 + aXJlZFZhbHVlIjoiMjUiLCJtaW5WYWx1ZSI6MjUuMDAsIm9wZXJhdG9yIjoi + PiJ9LHsiYXBwbGljYWJpbGl0eUtleSI6ImNvbnN0cnVjdGlvblR5cGUiLCJk + aXNwbGF5TmFtZSI6IkNvbnN0cnVjdGlvbiBUeXBlIiwiZGVzY3JpcHRpb24i + OiJDb25zdHJ1Y3Rpb24gaXMgbmV3IG9yIGV4aXN0aW5nIiwicmVxdWlyZWRW + YWx1ZSI6InJldHJvZml0Iiwib3BlcmF0b3IiOiI9In0seyJhcHBsaWNhYmls + aXR5S2V5IjoiZW5kVXNlQ29tbWVyY2lhbCIsImRpc3BsYXlOYW1lIjoiRW5k + IFVzZSBDb21tZXJjaWFsIiwiZGVzY3JpcHRpb24iOiJFbmQgVXNlIFRlY2hu + b2xvZ3kgZm9yIENvbW1lcmNpYWwiLCJyZXF1aXJlZFZhbHVlIjoibGlnaHRp + bmciLCJvcGVyYXRvciI6Ij0ifV0sInN1bW1hcnkiOm51bGwsInJlcXVpcmVt + ZW50cyI6IlxuT3duZXJzIGFuZCBkZXNpZ25lcnMgb2YgbmV3IGFuZCBleGlz + dGluZyBlbmVyZ3ktZWZmaWNpZW50IGNvbW1lcmNpYWwgYnVpbGRpbmdzIG1h + eSBxdWFsaWZ5IGZvciB0YXggZGVkdWN0aW9ucyB1bmRlciB0aGUgRW5lcmd5 + IFBvbGljeSBBY3Qgb2YgMjAwNS4gIEVuZXJneSBTdGFuZGFyZHMgbXVzdCBi + ZSAgMjUlLTUwJSBiZXR0ZXIgdGhhbiBBU0hSQUUgOTAuMS0gMjAwMSJ9LHsi + aW5jZW50aXZlSWQiOjMxNTYzMjYsIm1hc3RlckluY2VudGl2ZUlkIjozMTU2 + MzI2LCJlbGlnaWJpbGl0eSI6IkNPVUxEX0JFX0VMSUdJQkxFIiwicmVxdWly + ZWREYXRhIjpbeyJhcHBsaWNhYmlsaXR5S2V5IjoiY29uc3RydWN0aW9uVHlw + ZSIsImRpc3BsYXlOYW1lIjoiQ29uc3RydWN0aW9uIFR5cGUiLCJkZXNjcmlw + dGlvbiI6IkNvbnN0cnVjdGlvbiBpcyBuZXcgb3IgZXhpc3RpbmciLCJyZXF1 + aXJlZFZhbHVlIjoicmV0cm9maXQiLCJvcGVyYXRvciI6Ij0ifSx7ImFwcGxp + Y2FiaWxpdHlLZXkiOiJhc2hyYWVTdGFuZGFyZHMiLCJkaXNwbGF5TmFtZSI6 + IkFTSFJBRSBTdGFuZGFyZHMiLCJkZXNjcmlwdGlvbiI6IkhhdmUgYSBsaWNl + bnNlZCBjb250cmFjdG9yIG9yIGVuZ2luZWVyIHZlcmlmeSBsaWdodGluZyBw + b3dlciBkZW5zaXR5IGFuZC9vciB2ZXJpZnkgdGhyb3VnaCBlbmVyZ3kgbW9k + ZWxpbmcgdGhhdCB0aGUgcG9ydGlvbiBvZiB0aGUgYnVpbGRpbmcgYmVpbmcg + c3VibWl0dGVkIGZvciB0aGUgdGF4IGNyZWRpdCBpcyAyNSUtNTAlIGJldHRl + ciB0aGFuIEFTSFJBRSA5MC4xLTIwMDEgc3RhbmRhcmRzLiBTYXZlIGFsbCB5 + b3VyIHJlY2VpcHRzIGFuZCBlcXVpcG1lbnQgZG9jdW1lbnRhdGlvbi4gQ29u + c3VsdCB0aGUgSVJTIG9yIHlvdXIgdGF4IGFkdmlzb3IuIiwicmVxdWlyZWRW + YWx1ZSI6IjUwIiwibWluVmFsdWUiOjUwLjAwLCJvcGVyYXRvciI6Ij4ifSx7 + ImFwcGxpY2FiaWxpdHlLZXkiOiJlbmRVc2VDb21tZXJjaWFsIiwiZGlzcGxh + eU5hbWUiOiJFbmQgVXNlIENvbW1lcmNpYWwiLCJkZXNjcmlwdGlvbiI6IkVu + ZCBVc2UgVGVjaG5vbG9neSBmb3IgQ29tbWVyY2lhbCIsInJlcXVpcmVkVmFs + dWUiOiJhaXJIZWF0Iiwib3BlcmF0b3IiOiI9In1dLCJ0YXJpZmZDb2RlIjoi + Tm9uZSIsImluY2VudGl2ZU5hbWUiOiJDb21tZXJjaWFsIEVuZXJneS1FZmZp + Y2llbmN5IEZlZGVyYWwgVGF4IENyZWRpdHMgLSBIVkFDIiwibHNlSWQiOjcz + NCwibHNlTmFtZSI6IlBhY2lmaWMgR2FzICYgRWxlY3RyaWMgQ28iLCJzZXJ2 + aWNlVHlwZSI6IkVMRUNUUklDSVRZIiwiY3VzdG9tZXJDbGFzcyI6IkdFTkVS + QUwiLCJzdGFydERhdGUiOiIyMDEzLTAxLTAxIiwiZW5kRGF0ZSI6bnVsbCwi + aXNFeGhhdXN0ZWQiOmZhbHNlLCJwcm9qZWN0VHlwZSI6Imh2YWMiLCJpbmNl + bnRpdmVUeXBlIjoidGF4Q3JlZGl0IiwicmF0ZSI6MC42MDAwMDAsInJhdGVV + bml0IjoiQ09TVF9QRVJfVU5JVCIsImRvY3VtZW50cyI6bnVsbCwianVyaXNk + aWN0aW9uIjoidXRpbGl0eSIsInF1YW50aXR5S2V5Ijp7ImtleU5hbWUiOiJi + dWlsZGluZ1NxdWFyZUZvb3QiLCJkaXNwbGF5TmFtZSI6IkJ1aWxkaW5nIFNx + dWFyZSBGb290YWdlIiwiZGVzY3JpcHRpb24iOiJJbmNlbnRpdmUgaXMgcGVy + IHNxdWFyZSBmb290IG9mIHRoZSBidWlsZGluZyBmYWNpbGl0eSJ9LCJxdWFu + dGl0eUtleUNhcCI6bnVsbCwic3RhdGUiOiJDQSIsInBlcmNlbnRDb3N0Q2Fw + IjpudWxsLCJwZXJjZW50Q29zdENhcEtleSI6eyJrZXlOYW1lIjpudWxsfSwi + cGF5bWVudENhcCI6bnVsbCwicGF5bWVudER1cmF0aW9uIjpudWxsLCJpbmNl + bnRpdmVQYWlkVG8iOiJ0ZW5hbnRPck93bmVyIiwicHJvamVjdFR5cGVFeGNs + dXNpdmUiOm51bGwsImFwcGxpY2FiaWxpdGllcyI6W3siYXBwbGljYWJpbGl0 + eUtleSI6ImFzaHJhZVN0YW5kYXJkcyIsImRpc3BsYXlOYW1lIjoiQVNIUkFF + IFN0YW5kYXJkcyIsImRlc2NyaXB0aW9uIjoiSGF2ZSBhIGxpY2Vuc2VkIGNv + bnRyYWN0b3Igb3IgZW5naW5lZXIgdmVyaWZ5IGxpZ2h0aW5nIHBvd2VyIGRl + bnNpdHkgYW5kL29yIHZlcmlmeSB0aHJvdWdoIGVuZXJneSBtb2RlbGluZyB0 + aGF0IHRoZSBwb3J0aW9uIG9mIHRoZSBidWlsZGluZyBiZWluZyBzdWJtaXR0 + ZWQgZm9yIHRoZSB0YXggY3JlZGl0IGlzIDI1JS01MCUgYmV0dGVyIHRoYW4g + QVNIUkFFIDkwLjEtMjAwMSBzdGFuZGFyZHMuIFNhdmUgYWxsIHlvdXIgcmVj + ZWlwdHMgYW5kIGVxdWlwbWVudCBkb2N1bWVudGF0aW9uLiBDb25zdWx0IHRo + ZSBJUlMgb3IgeW91ciB0YXggYWR2aXNvci4iLCJyZXF1aXJlZFZhbHVlIjoi + NTAiLCJtaW5WYWx1ZSI6NTAuMDAsIm9wZXJhdG9yIjoiPiJ9LHsiYXBwbGlj + YWJpbGl0eUtleSI6ImNvbnN0cnVjdGlvblR5cGUiLCJkaXNwbGF5TmFtZSI6 + IkNvbnN0cnVjdGlvbiBUeXBlIiwiZGVzY3JpcHRpb24iOiJDb25zdHJ1Y3Rp + b24gaXMgbmV3IG9yIGV4aXN0aW5nIiwicmVxdWlyZWRWYWx1ZSI6InJldHJv + Zml0Iiwib3BlcmF0b3IiOiI9In0seyJhcHBsaWNhYmlsaXR5S2V5IjoiZW5k + VXNlQ29tbWVyY2lhbCIsImRpc3BsYXlOYW1lIjoiRW5kIFVzZSBDb21tZXJj + aWFsIiwiZGVzY3JpcHRpb24iOiJFbmQgVXNlIFRlY2hub2xvZ3kgZm9yIENv + bW1lcmNpYWwiLCJyZXF1aXJlZFZhbHVlIjoiYWlySGVhdCIsIm9wZXJhdG9y + IjoiPSJ9LHsiYXBwbGljYWJpbGl0eUtleSI6ImVuZFVzZUNvbW1lcmNpYWwi + LCJkaXNwbGF5TmFtZSI6IkVuZCBVc2UgQ29tbWVyY2lhbCIsImRlc2NyaXB0 + aW9uIjoiRW5kIFVzZSBUZWNobm9sb2d5IGZvciBDb21tZXJjaWFsIiwicmVx + dWlyZWRWYWx1ZSI6ImFpckNvb2wiLCJvcGVyYXRvciI6Ij0ifSx7ImFwcGxp + Y2FiaWxpdHlLZXkiOiJlbmRVc2VDb21tZXJjaWFsIiwiZGlzcGxheU5hbWUi + OiJFbmQgVXNlIENvbW1lcmNpYWwiLCJkZXNjcmlwdGlvbiI6IkVuZCBVc2Ug + VGVjaG5vbG9neSBmb3IgQ29tbWVyY2lhbCIsInJlcXVpcmVkVmFsdWUiOiJ3 + YXRlckhlYXQiLCJvcGVyYXRvciI6Ij0ifV0sInN1bW1hcnkiOm51bGwsInJl + cXVpcmVtZW50cyI6IlxuT3duZXJzIGFuZCBkZXNpZ25lcnMgb2YgbmV3IGFu + ZCBleGlzdGluZyBlbmVyZ3ktZWZmaWNpZW50IGNvbW1lcmNpYWwgYnVpbGRp + bmdzIG1heSBxdWFsaWZ5IGZvciB0YXggZGVkdWN0aW9ucyB1bmRlciB0aGUg + RW5lcmd5IFBvbGljeSBBY3Qgb2YgMjAwNS4gIEVuZXJneSBTdGFuZGFyZHMg + bXVzdCBiIDUwJSBiZXR0ZXIgdGhhbiBBU0hSQUUgOTAuMS0yMDAxIGZvciBI + VkFDIGFuZCBIb3QgV2F0ZXIgU3lzdGVtIG9yIEJ1aWxkaW5nIEVudmVsb3Bl + In0seyJpbmNlbnRpdmVJZCI6MzE1NjMyNywibWFzdGVySW5jZW50aXZlSWQi + OjMxNTYzMjcsImVsaWdpYmlsaXR5IjoiQ09VTERfQkVfRUxJR0lCTEUiLCJy + ZXF1aXJlZERhdGEiOlt7ImFwcGxpY2FiaWxpdHlLZXkiOiJhc2hyYWVTdGFu + ZGFyZHMiLCJkaXNwbGF5TmFtZSI6IkFTSFJBRSBTdGFuZGFyZHMiLCJkZXNj + cmlwdGlvbiI6IkhhdmUgYSBsaWNlbnNlZCBjb250cmFjdG9yIG9yIGVuZ2lu + ZWVyIHZlcmlmeSBsaWdodGluZyBwb3dlciBkZW5zaXR5IGFuZC9vciB2ZXJp + ZnkgdGhyb3VnaCBlbmVyZ3kgbW9kZWxpbmcgdGhhdCB0aGUgcG9ydGlvbiBv + ZiB0aGUgYnVpbGRpbmcgYmVpbmcgc3VibWl0dGVkIGZvciB0aGUgdGF4IGNy + ZWRpdCBpcyAyNSUtNTAlIGJldHRlciB0aGFuIEFTSFJBRSA5MC4xLTIwMDEg + c3RhbmRhcmRzLiBTYXZlIGFsbCB5b3VyIHJlY2VpcHRzIGFuZCBlcXVpcG1l + bnQgZG9jdW1lbnRhdGlvbi4gQ29uc3VsdCB0aGUgSVJTIG9yIHlvdXIgdGF4 + IGFkdmlzb3IuIiwicmVxdWlyZWRWYWx1ZSI6IjUwIiwibWluVmFsdWUiOjUw + LjAwLCJvcGVyYXRvciI6Ij4ifSx7ImFwcGxpY2FiaWxpdHlLZXkiOiJlbmRV + c2VDb21tZXJjaWFsIiwiZGlzcGxheU5hbWUiOiJFbmQgVXNlIENvbW1lcmNp + YWwiLCJkZXNjcmlwdGlvbiI6IkVuZCBVc2UgVGVjaG5vbG9neSBmb3IgQ29t + bWVyY2lhbCIsInJlcXVpcmVkVmFsdWUiOiJidWlsZGluZ1NoZWxsIiwib3Bl + cmF0b3IiOiI9In1dLCJ0YXJpZmZDb2RlIjoiTm9uZSIsImluY2VudGl2ZU5h + bWUiOiJDb21tZXJjaWFsIEVuZXJneS1FZmZpY2llbmN5IEZlZGVyYWwgVGF4 + IENyZWRpdHMgLSBXaG9sZSBCdWlsZGluZyIsImxzZUlkIjo3MzQsImxzZU5h + bWUiOiJQYWNpZmljIEdhcyAmIEVsZWN0cmljIENvIiwic2VydmljZVR5cGUi + OiJFTEVDVFJJQ0lUWSIsImN1c3RvbWVyQ2xhc3MiOiJHRU5FUkFMIiwic3Rh + cnREYXRlIjoiMjAxMy0wMS0wMSIsImVuZERhdGUiOm51bGwsImlzRXhoYXVz + dGVkIjpmYWxzZSwicHJvamVjdFR5cGUiOiJidWlsZGluZ1NoZWxsIiwiaW5j + ZW50aXZlVHlwZSI6InRheENyZWRpdCIsInJhdGUiOjEuODAwMDAwLCJyYXRl + VW5pdCI6IkNPU1RfUEVSX1VOSVQiLCJkb2N1bWVudHMiOm51bGwsImp1cmlz + ZGljdGlvbiI6InV0aWxpdHkiLCJxdWFudGl0eUtleSI6eyJrZXlOYW1lIjoi + YnVpbGRpbmdTcXVhcmVGb290IiwiZGlzcGxheU5hbWUiOiJCdWlsZGluZyBT + cXVhcmUgRm9vdGFnZSIsImRlc2NyaXB0aW9uIjoiSW5jZW50aXZlIGlzIHBl + ciBzcXVhcmUgZm9vdCBvZiB0aGUgYnVpbGRpbmcgZmFjaWxpdHkifSwicXVh + bnRpdHlLZXlDYXAiOm51bGwsInN0YXRlIjoiQ0EiLCJwZXJjZW50Q29zdENh + cCI6bnVsbCwicGVyY2VudENvc3RDYXBLZXkiOnsia2V5TmFtZSI6bnVsbH0s + InBheW1lbnRDYXAiOm51bGwsInBheW1lbnREdXJhdGlvbiI6bnVsbCwiaW5j + ZW50aXZlUGFpZFRvIjoidGVuYW50T3JPd25lciIsInByb2plY3RUeXBlRXhj + bHVzaXZlIjpudWxsLCJhcHBsaWNhYmlsaXRpZXMiOlt7ImFwcGxpY2FiaWxp + dHlLZXkiOiJhc2hyYWVTdGFuZGFyZHMiLCJkaXNwbGF5TmFtZSI6IkFTSFJB + RSBTdGFuZGFyZHMiLCJkZXNjcmlwdGlvbiI6IkhhdmUgYSBsaWNlbnNlZCBj + b250cmFjdG9yIG9yIGVuZ2luZWVyIHZlcmlmeSBsaWdodGluZyBwb3dlciBk + ZW5zaXR5IGFuZC9vciB2ZXJpZnkgdGhyb3VnaCBlbmVyZ3kgbW9kZWxpbmcg + dGhhdCB0aGUgcG9ydGlvbiBvZiB0aGUgYnVpbGRpbmcgYmVpbmcgc3VibWl0 + dGVkIGZvciB0aGUgdGF4IGNyZWRpdCBpcyAyNSUtNTAlIGJldHRlciB0aGFu + IEFTSFJBRSA5MC4xLTIwMDEgc3RhbmRhcmRzLiBTYXZlIGFsbCB5b3VyIHJl + Y2VpcHRzIGFuZCBlcXVpcG1lbnQgZG9jdW1lbnRhdGlvbi4gQ29uc3VsdCB0 + aGUgSVJTIG9yIHlvdXIgdGF4IGFkdmlzb3IuIiwicmVxdWlyZWRWYWx1ZSI6 + IjUwIiwibWluVmFsdWUiOjUwLjAwLCJvcGVyYXRvciI6Ij4ifSx7ImFwcGxp + Y2FiaWxpdHlLZXkiOiJlbmRVc2VDb21tZXJjaWFsIiwiZGlzcGxheU5hbWUi + OiJFbmQgVXNlIENvbW1lcmNpYWwiLCJkZXNjcmlwdGlvbiI6IkVuZCBVc2Ug + VGVjaG5vbG9neSBmb3IgQ29tbWVyY2lhbCIsInJlcXVpcmVkVmFsdWUiOiJi + dWlsZGluZ1NoZWxsIiwib3BlcmF0b3IiOiI9In1dLCJzdW1tYXJ5IjpudWxs + LCJyZXF1aXJlbWVudHMiOiJcbk93bmVycyBhbmQgZGVzaWduZXJzIG9mIG5l + dyBhbmQgZXhpc3RpbmcgZW5lcmd5LWVmZmljaWVudCBjb21tZXJjaWFsIGJ1 + aWxkaW5ncyBtYXkgcXVhbGlmeSBmb3IgdGF4IGRlZHVjdGlvbnMgdW5kZXIg + dGhlIEVuZXJneSBQb2xpY3kgQWN0IG9mIDIwMDUuICBJbmNlbnRpdmUgaXMg + Zm9yIHRoZSB3aG9sZSBidWlsZGluZy4gIEVuZXJneSBTdGFuZGFyZHMgbXVz + dCBiZSA1MCUgYmV0dGVyIHRoYW4gQVNIUkFFIDkwLjEtIDIwMDEifSx7Imlu + Y2VudGl2ZUlkIjozMTU2MzI4LCJtYXN0ZXJJbmNlbnRpdmVJZCI6MzE1NjMy + OCwiZWxpZ2liaWxpdHkiOiJDT1VMRF9CRV9FTElHSUJMRSIsInJlcXVpcmVk + RGF0YSI6W3siYXBwbGljYWJpbGl0eUtleSI6ImVuZFVzZVJlc2lkZW50aWFs + IiwiZGlzcGxheU5hbWUiOiJFbmQgVXNlIFJlc2lkZW50aWFsIiwiZGVzY3Jp + cHRpb24iOiJFbmQgVXNlIFRlY2hub2xvZ3kgZm9yIFJlc2lkZW50aWFsIiwi + cmVxdWlyZWRWYWx1ZSI6IndhdGVySGVhdCIsIm9wZXJhdG9yIjoiPSJ9XSwi + dGFyaWZmQ29kZSI6Ik5vbmUiLCJpbmNlbnRpdmVOYW1lIjoiUmVzaWRlbnRp + YWwgV2F0ZXIgSGVhdGVyIFJlYmF0ZSIsImxzZUlkIjoxMjI4LCJsc2VOYW1l + IjoiU291dGhlcm4gQ2FsaWZvcm5pYSBFZGlzb24gQ28iLCJzZXJ2aWNlVHlw + ZSI6IkVMRUNUUklDSVRZIiwiY3VzdG9tZXJDbGFzcyI6IlJFU0lERU5USUFM + Iiwic3RhcnREYXRlIjoiMjAxMy0wMS0wMSIsImVuZERhdGUiOiIyMDE0LTAx + LTAxIiwiaXNFeGhhdXN0ZWQiOmZhbHNlLCJwcm9qZWN0VHlwZSI6IndhdGVy + SGVhdCIsImluY2VudGl2ZVR5cGUiOiJyZWJhdGUiLCJyYXRlIjoyMDAuMDAw + MDAwLCJyYXRlVW5pdCI6IkNPU1RfUEVSX1VOSVQiLCJkb2N1bWVudHMiOm51 + bGwsImp1cmlzZGljdGlvbiI6InV0aWxpdHkiLCJxdWFudGl0eUtleSI6eyJr + ZXlOYW1lIjoiaHlicmlkRWxlY3RyaWNIZWF0UHVtcFdhdGVySGVhdGVyIiwi + ZGlzcGxheU5hbWUiOiJIeWJyaWQgRWxlY3RyaWMgSGVhdCBQdW1wIFdhdGVy + IEhlYXRlciIsImRlc2NyaXB0aW9uIjoiSHlicmlkIEVsZWN0cmljIEhlYXQg + UHVtcCBXYXRlciBIZWF0ZXJcclxuXHJcblJlcXVpcmVtZW50czogSHlicmlk + IGVsZWN0cmljIGhlYXQgcHVtcCB3YXRlciBoZWF0ZXIgbXVzdCBoYXZlIGFu + IGVuZXJneSBmYWN0b3Igb2YgMi4wIG9yIGdyZWF0ZXIgYW5kIGJlIDQwIGdh + bGxvbnMgb3IgZ3JlYXRlci4gSW5zdGFsbCB0aGUgcXVhbGlmeWluZyBoeWJy + aWQgZWxlY3RyaWMgaGVhdCBwdW1wIHdhdGVyIGhlYXRlciBieSBGZWJydWFy + eSAyOCwgMjAxNC4gUmViYXRlIGlzIGxpbWl0ZWQgdG8gaHlicmlkIGVsZWN0 + cmljIGhlYXQgcHVtcCB3YXRlciBoZWF0ZXJzIHRoYXQgYXJlIDQwIGdhbGxv + bnMgb3IgZ3JlYXRlci4gVGhlIG5ldyBxdWFsaWZ5aW5nIHByb2R1Y3QgbXVz + dCByZXBsYWNlIGFuIGV4aXN0aW5nIGVsZWN0cmljIHdhdGVyIGhlYXRlci4g + UHJvb2Ygb2YgcHVyY2hhc2UgbXVzdCBiZSBwcm92aWRlZCB3aXRoIHlvdXIg + YXBwbGljYXRpb24uIE9uZSB3YXRlciBoZWF0ZXIgcmViYXRlIHBlciBpbnN0 + YWxsYXRpb24gYWRkcmVzcy4gIFxyXG5cclxuRXhjbHVzaW9uOiBUYW5rbGVz + cyB3YXRlciBoZWF0ZXJzIGRvIG5vdCBxdWFsaWZ5LiBSZXBsYWNpbmcgYSBn + YXMgd2F0ZXIgaGVhdGVyIHdpdGggYSBoeWJyaWQgZWxlY3RyaWMgaGVhdCBw + dW1wIHdhdGVyIGhlYXRlciBkb2VzIG5vdCBxdWFsaWZ5LiAgXHJcbiJ9LCJx + dWFudGl0eUtleUNhcCI6bnVsbCwic3RhdGUiOiJDQSIsInBlcmNlbnRDb3N0 + Q2FwIjpudWxsLCJwZXJjZW50Q29zdENhcEtleSI6eyJrZXlOYW1lIjpudWxs + fSwicGF5bWVudENhcCI6bnVsbCwicGF5bWVudER1cmF0aW9uIjpudWxsLCJp + bmNlbnRpdmVQYWlkVG8iOiJ0ZW5hbnRPck93bmVyIiwicHJvamVjdFR5cGVF + eGNsdXNpdmUiOm51bGwsImFwcGxpY2FiaWxpdGllcyI6W3siYXBwbGljYWJp + bGl0eUtleSI6ImVuZFVzZVJlc2lkZW50aWFsIiwiZGlzcGxheU5hbWUiOiJF + bmQgVXNlIFJlc2lkZW50aWFsIiwiZGVzY3JpcHRpb24iOiJFbmQgVXNlIFRl + Y2hub2xvZ3kgZm9yIFJlc2lkZW50aWFsIiwicmVxdWlyZWRWYWx1ZSI6Indh + dGVySGVhdCIsIm9wZXJhdG9yIjoiPSJ9XSwic3VtbWFyeSI6bnVsbCwicmVx + dWlyZW1lbnRzIjoiUHVyY2hhc2UgYSBuZXcgcXVhbGlmeWluZyBlbGVjdHJp + YyBzdG9yYWdlIHdhdGVyIGhlYXRlciBiZXR3ZWVuIEphbnVhcnkgMjAxMyBh + bmQgRGVjZW1iZXIgMzEsIDIwMTMuIFRhbmtsZXNzIHdhdGVyIGhlYXRlcnMg + ZG8gbm90IHF1YWxpZnkuIFJlcGxhY2luZyBhIGdhcyB3YXRlciBoZWF0ZXIg + d2l0aCBhbiBlbGVjdHJpYyB1bml0IGRvZXMgbm90IHF1YWxpZnkuIE1ha2Ug + c3VyZSB0aGUgcHJvZHVjdCBhcHBlYXJzIG9uIHRoZSBsaXN0IG9mIHF1YWxp + ZnlpbmcgcHJvZHVjdHMgdGhhdCBjYW4gYmUgZm91bmQgYXQgU0NFIHdlYnNp + dGUuIEluc3RhbGwgdGhlIHF1YWxpZnlpbmcgZWxlY3RyaWMgc3RvcmFnZSB3 + YXRlciBoZWF0ZXIgYnkgRmVicnVhcnkgMjgsIDIwMTQuIFRoZSBuZXcgcXVh + bGlmeWluZyBwcm9kdWN0IG11c3QgcmVwbGFjZSBhbiBleGlzdGluZyBlbGVj + dHJpYyB3YXRlciBoZWF0ZXIuIFByb29mIG9mIHB1cmNoYXNlIG11c3QgYmUg + cHJvdmlkZWQgd2l0aCB5b3VyIGFwcGxpY2F0aW9uLiBMaW1pdDogT25lIG9m + IGFueSB0eXBlIG9mIEhFRVIgd2F0ZXIgaGVhdGVyIHJlYmF0ZSBwZXIgSW5z + dGFsbGF0aW9uIEFkZHJlc3MuIEZvciBpdGVtIGxldmVsIHNwZWNpZmljYXRp + b25zIHJlZmVyIHRvIGNhdGFsb2cuIn0seyJpbmNlbnRpdmVJZCI6MzE1NjMy + OSwibWFzdGVySW5jZW50aXZlSWQiOjMxNTYzMjksImVsaWdpYmlsaXR5Ijoi + Q09VTERfQkVfRUxJR0lCTEUiLCJyZXF1aXJlZERhdGEiOlt7ImFwcGxpY2Fi + aWxpdHlLZXkiOiJlbmRVc2VSZXNpZGVudGlhbCIsImRpc3BsYXlOYW1lIjoi + RW5kIFVzZSBSZXNpZGVudGlhbCIsImRlc2NyaXB0aW9uIjoiRW5kIFVzZSBU + ZWNobm9sb2d5IGZvciBSZXNpZGVudGlhbCIsInJlcXVpcmVkVmFsdWUiOiJt + YWpvckFwcGxpYW5jZXMiLCJvcGVyYXRvciI6Ij0ifV0sInRhcmlmZkNvZGUi + OiJOb25lIiwiaW5jZW50aXZlTmFtZSI6IlJlc2lkZW50aWFsIENsb3RoZXMg + V2FzaGVyIFJlYmF0ZSIsImxzZUlkIjoxMjI4LCJsc2VOYW1lIjoiU291dGhl + cm4gQ2FsaWZvcm5pYSBFZGlzb24gQ28iLCJzZXJ2aWNlVHlwZSI6IkVMRUNU + UklDSVRZIiwiY3VzdG9tZXJDbGFzcyI6IlJFU0lERU5USUFMIiwic3RhcnRE + YXRlIjoiMjAxMy0wMS0wMSIsImVuZERhdGUiOiIyMDE0LTAxLTAxIiwiaXNF + eGhhdXN0ZWQiOmZhbHNlLCJwcm9qZWN0VHlwZSI6Im1ham9yQXBwbGlhbmNl + cyIsImluY2VudGl2ZVR5cGUiOiJyZWJhdGUiLCJyYXRlIjo1MC4wMDAwMDAs + InJhdGVVbml0IjoiQ09TVF9QRVJfVU5JVCIsImRvY3VtZW50cyI6bnVsbCwi + anVyaXNkaWN0aW9uIjoidXRpbGl0eSIsInF1YW50aXR5S2V5Ijp7ImtleU5h + bWUiOiJlbmVyZ3lTdGFyUXVhbGlmaWVkQ2xvdGhlc1dhc2hlciIsImRpc3Bs + YXlOYW1lIjoiRW5lcmd5IFN0YXIgUXVhbGlmaWVkIENsb3RoZXMgV2FzaGVy + IiwiZGVzY3JpcHRpb24iOiJFbmVyZ3kgU3RhciBRdWFsaWZpZWQgQ2xvdGhl + cyBXYXNoZXJcclxuXHJcblJlcXVpcmVtZW50czogSW5zdGFsbCB0aGUgcXVh + bGlmeWluZyBjbG90aGVzIHdhc2hlciBieSBGZWJydWFyeSAyOCwgMjAxNC4g + VGhlIEVORVJHWSBTVEFSIHF1YWxpZmVkIGNsb3RoZXMgd2FzaGVyIG11c3Qg + aGF2ZSBhIG1vZGlmZWQgZW5lcmd5IGZhY3RvciAoTUVGKSBvZiAyLjAgb3Ig + Z3JlYXRlciBhbmQgYSB3YXRlciBmYWN0b3IgKHdmKSBvZiA2LjAgb3IgbGVz + cy4gUmViYXRlIGlzIGxpbWl0ZWQgdG8gU0NFIHJlc2lkZW50aWFsIGN1c3Rv + bWVycyB3aG8gYXJlIGN1cnJlbnRseSB1c2luZyBhbiBlbGVjdHJpYyB3YXRl + ciBoZWF0ZXIuIFByb29mIG9mIHB1cmNoYXNlIG11c3QgYmUgcHJvdmlkZWQg + d2l0aCB5b3VyIGFwcGxpY2F0aW9uLiBMaW1pdCBvbmUgRU5FUkdZIFNUQVIg + cXVhbGlmaWVkIGNsb3RoZXMgd2FzaGVyIHJlYmF0ZSBwZXIgSW5zdGFsbGF0 + aW9uIEFkZHJlc3NcclxuXHJcbiJ9LCJxdWFudGl0eUtleUNhcCI6bnVsbCwi + c3RhdGUiOiJDQSIsInBlcmNlbnRDb3N0Q2FwIjpudWxsLCJwZXJjZW50Q29z + dENhcEtleSI6eyJrZXlOYW1lIjpudWxsfSwicGF5bWVudENhcCI6bnVsbCwi + cGF5bWVudER1cmF0aW9uIjpudWxsLCJpbmNlbnRpdmVQYWlkVG8iOiJ0ZW5h + bnRPck93bmVyIiwicHJvamVjdFR5cGVFeGNsdXNpdmUiOm51bGwsImFwcGxp + Y2FiaWxpdGllcyI6W3siYXBwbGljYWJpbGl0eUtleSI6ImVuZFVzZVJlc2lk + ZW50aWFsIiwiZGlzcGxheU5hbWUiOiJFbmQgVXNlIFJlc2lkZW50aWFsIiwi + ZGVzY3JpcHRpb24iOiJFbmQgVXNlIFRlY2hub2xvZ3kgZm9yIFJlc2lkZW50 + aWFsIiwicmVxdWlyZWRWYWx1ZSI6Im1ham9yQXBwbGlhbmNlcyIsIm9wZXJh + dG9yIjoiPSJ9XSwic3VtbWFyeSI6bnVsbCwicmVxdWlyZW1lbnRzIjoiLVB1 + cmNoYXNlIGEgbmV3IEVORVJHWSBTVEFSIHF1YWxpZmllZCBjbG90aGVzIHdh + c2hlciBiZXR3ZWVuIEphbnVhcnkgMSwgMjAxMyBhbmQgRGVjZW1iZXIgMzEs + IDIwMTMuIC0gTWFrZSBzdXJlIHRoZSBwcm9kdWN0IGFwcGVhcnMgb24gdGhl + IGxpc3Qgb2YgcXVhbGlmeWluZyBwcm9kdWN0cyB0aGF0IGNhbiBiZSBmb3Vu + ZCBhdCB3d3cuc2NlLmNvbS9hcHBsaWFuY2VzIC0gSW5zdGFsbCB0aGUgcXVh + bGlmeWluZyBjbG90aGVzIHdhc2hlciBieSBGZWJydWFyeSAyOCwgMjAxNC4g + LSBUaGUgRU5FUkdZIFNUQVIgcXVhbGlmaWVkIGNsb3RoZXMgd2FzaGVyIG11 + c3QgaGF2ZSBhIG1vZGlmaWVkIGVuZXJneSBmYWN0b3IgKE1FRikgb2YgMi4w + IG9yIGdyZWF0ZXIgQU5EIGEgd2F0ZXIgZmFjdG9yICh3Zikgb2YgNi4wIG9y + IGxlc3MuIC0gUmViYXRlIGlzIGxpbWl0ZWQgdG8gU0NFIHJlc2lkZW50aWFs + IGN1c3RvbWVycyB3aG8gYXJlIGN1cnJlbnRseSB1c2luZyBhbiBlbGVjdHJp + YyB3YXRlciBoZWF0ZXIuIC0gUHJvb2Ygb2YgcHVyY2hhc2UgbXVzdCBiZSBw + cm92aWRlZCB3aXRoIHlvdXIgYXBwbGljYXRpb24uIC0gTGltaXQ6IE9uZSBF + TkVSR1kgU1RBUiBxdWFsaWZpZWQgY2xvdGhlcyB3YXNoZXIgcmViYXRlIHBl + ciBJbnN0YWxsYXRpb24gQWRkcmVzcy4ifSx7ImluY2VudGl2ZUlkIjozMTU2 + MzMwLCJtYXN0ZXJJbmNlbnRpdmVJZCI6MzE1NjMzMCwiZWxpZ2liaWxpdHki + OiJDT1VMRF9CRV9FTElHSUJMRSIsInJlcXVpcmVkRGF0YSI6W3siYXBwbGlj + YWJpbGl0eUtleSI6ImVuZFVzZUNvbW1lcmNpYWwiLCJkaXNwbGF5TmFtZSI6 + IkVuZCBVc2UgQ29tbWVyY2lhbCIsImRlc2NyaXB0aW9uIjoiRW5kIFVzZSBU + ZWNobm9sb2d5IGZvciBDb21tZXJjaWFsIiwicmVxdWlyZWRWYWx1ZSI6Imly + cmlnYXRpb24iLCJvcGVyYXRvciI6Ij0ifV0sInRhcmlmZkNvZGUiOiJOb25l + IiwiaW5jZW50aXZlTmFtZSI6IkFncmljdWx0dXJhbCBSZWJhdGVzIiwibHNl + SWQiOjEwNzEsImxzZU5hbWUiOiJTYW4gRGllZ28gR2FzICYgRWxlY3RyaWMg + Q28iLCJzZXJ2aWNlVHlwZSI6IkVMRUNUUklDSVRZIiwiY3VzdG9tZXJDbGFz + cyI6IkdFTkVSQUwiLCJzdGFydERhdGUiOiIyMDEzLTAxLTAxIiwiZW5kRGF0 + ZSI6bnVsbCwiaXNFeGhhdXN0ZWQiOmZhbHNlLCJwcm9qZWN0VHlwZSI6Imly + cmlnYXRpb24iLCJpbmNlbnRpdmVUeXBlIjoicmViYXRlIiwicmF0ZSI6NDQu + MDAwMDAwLCJyYXRlVW5pdCI6IkNPU1RfUEVSX1VOSVQiLCJkb2N1bWVudHMi + Om51bGwsImp1cmlzZGljdGlvbiI6InV0aWxpdHkiLCJxdWFudGl0eUtleSI6 + eyJrZXlOYW1lIjoic3ByaW5rbGVyVG9EcmlwSXJyaWdhdGlvblBlckFjcmUx + MDcxIiwiZGlzcGxheU5hbWUiOiJTcHJpbmtsZXIgdG8gRHJpcCBJcnJpZ2F0 + aW9uIiwiZGVzY3JpcHRpb24iOiJIaWdoIFByZXNzdXJlIFNwcmlua2xlciB0 + byBEcmlwIElycmlnYXRpb24sIFBlciBBY3JlIFxyXG5cclxuUmVxdWlyZW1l + bnRzOiBNdXN0IGNvbnZlcnQgZnJvbSBhIGhpZ2gtcHJlc3N1cmUsIGltcGFj + dC10eXBlLCBzcHJpbmtsZXIgaXJyaWdhdGlvbiBzeXN0ZW0gKDUwIHBzaSBv + cGVyYXRpbmcgcHJlc3N1cmUgb3IgbW9yZSBhdCB0aGUgc3ByaW5rbGVyIGhl + YWQpIHRvIGEgbWljcm8taXJyaWdhdGlvbiBzeXN0ZW0uIEluY2x1ZGUgYW4g + QXNzZXNzb3IncyBQYXJjZWwgTWFwIG9yIG90aGVyIGRvY3VtZW50YXRpb24g + dG8gdmVyaWZ5IGFjcmVhZ2UgXHJcblxyXG5FeGNsdXNpb25zOiBEcmlwIHRh + cGUgc3lzdGVtcyBhcmUgbm90IGVsaWdpYmxlIE5vdCBhcHBsaWNhYmxlIHRv + IG5ldyBwbGFudGluZ3Mgb2YgdmluZXlhcmRzIG9yIG9yY2hhcmRzIHVubGVz + cyBhIHZpbmV5YXJkIG9yIG9yY2hhcmQgd2FzIHRoZSBwcmV2aW91cyBjcm9w + IG9uIHRoZSBmaWVsZCJ9LCJxdWFudGl0eUtleUNhcCI6bnVsbCwic3RhdGUi + OiJDQSIsInBlcmNlbnRDb3N0Q2FwIjpudWxsLCJwZXJjZW50Q29zdENhcEtl + eSI6eyJrZXlOYW1lIjpudWxsfSwicGF5bWVudENhcCI6bnVsbCwicGF5bWVu + dER1cmF0aW9uIjpudWxsLCJpbmNlbnRpdmVQYWlkVG8iOiJ0ZW5hbnRPck93 + bmVyIiwicHJvamVjdFR5cGVFeGNsdXNpdmUiOm51bGwsImFwcGxpY2FiaWxp + dGllcyI6W3siYXBwbGljYWJpbGl0eUtleSI6ImVuZFVzZUNvbW1lcmNpYWwi + LCJkaXNwbGF5TmFtZSI6IkVuZCBVc2UgQ29tbWVyY2lhbCIsImRlc2NyaXB0 + aW9uIjoiRW5kIFVzZSBUZWNobm9sb2d5IGZvciBDb21tZXJjaWFsIiwicmVx + dWlyZWRWYWx1ZSI6ImlycmlnYXRpb24iLCJvcGVyYXRvciI6Ij0ifV0sInN1 + bW1hcnkiOm51bGwsInJlcXVpcmVtZW50cyI6IkN1c3RvbWVycyBtdXN0IGhh + dmUgYSBTREcmRSBjb21tZXJjaWFsIGVsZWN0cmljIGFjY291bnQgaWYgYXBw + bHlpbmcgZm9yIGFuIGVsZWN0cmljIG1lYXN1cmUuIEV2ZXJ5dGhpbmcgbXVz + dCBiZSBpbnN0YWxsZWQgYW5kIG9wZXJhdGlvbmFsIGJlZm9yZSBhIHJlYmF0 + ZSBhcHBsaWNhdGlvbiBpcyBzdWJtaXR0ZWQuIEFsbCByZWJhdGVzIGFwcGx5 + IHRvd2FyZCB0aGUgcHVyY2hhc2Ugb2YgbmV3IG9yIHJlcGxhY2VtZW50IGVu + ZXJneS1lZmZpY2llbnQgZXF1aXBtZW50LCB1bmxlc3Mgb3RoZXJ3aXNlIGlu + ZGljYXRlZC4gVXNlZCBvciByZWJ1aWx0IGVxdWlwbWVudCBpcyBub3QgZWxp + Z2libGUuIEZvciBpdGVtIGxldmVsIHNwZWNpZmljYXRpb25zIHJlZmVyIHRv + IGNhdGFsb2cuIn0seyJpbmNlbnRpdmVJZCI6MzE1NjMzMSwibWFzdGVySW5j + ZW50aXZlSWQiOjMxNTYzMzEsImVsaWdpYmlsaXR5IjoiQ09VTERfQkVfRUxJ + R0lCTEUiLCJyZXF1aXJlZERhdGEiOlt7ImFwcGxpY2FiaWxpdHlLZXkiOiJl + bmRVc2VSZXNpZGVudGlhbCIsImRpc3BsYXlOYW1lIjoiRW5kIFVzZSBSZXNp + ZGVudGlhbCIsImRlc2NyaXB0aW9uIjoiRW5kIFVzZSBUZWNobm9sb2d5IGZv + ciBSZXNpZGVudGlhbCIsInJlcXVpcmVkVmFsdWUiOiJtYWpvckFwcGxpYW5j + ZXMiLCJvcGVyYXRvciI6Ij0ifV0sInRhcmlmZkNvZGUiOiJOb25lIiwiaW5j + ZW50aXZlTmFtZSI6IlJlc2lkZW50aWFsIEFwcGxpYW5jZSBJbmNlbnRpdmVz + IiwibHNlSWQiOjgxOSwibHNlTmFtZSI6IlBFQ08gRW5lcmd5IENvIiwic2Vy + dmljZVR5cGUiOiJFTEVDVFJJQ0lUWSIsImN1c3RvbWVyQ2xhc3MiOiJSRVNJ + REVOVElBTCIsInN0YXJ0RGF0ZSI6IjIwMTEtMTEtMDEiLCJlbmREYXRlIjoi + MjAxMy0wNS0zMSIsImlzRXhoYXVzdGVkIjpmYWxzZSwicHJvamVjdFR5cGUi + OiJtYWpvckFwcGxpYW5jZXMiLCJpbmNlbnRpdmVUeXBlIjoicmViYXRlIiwi + cmF0ZSI6MjUuMDAwMDAwLCJyYXRlVW5pdCI6IkNPU1RfUEVSX1VOSVQiLCJk + b2N1bWVudHMiOm51bGwsImp1cmlzZGljdGlvbiI6InV0aWxpdHkiLCJxdWFu + dGl0eUtleSI6eyJrZXlOYW1lIjoiZU5FUkdZU1RBUlJlZnJpZ2VyYXRvciIs + ImRpc3BsYXlOYW1lIjoiRW5lcmd5IFN0YXIgUmVmcmlnZXJhdG9yIiwiZGVz + Y3JpcHRpb24iOiJFTkVSR1kgU1RBUiBSZWZyaWdlcmF0b3IuIFxyXG5cclxu + UmVxdWlyZW1lbnRzOiBRdWFsaWZ5aW5nIHJlZnJpZ2VyYXRvcnMgbWVldCBz + dGFuZGFyZHMgYmFzZWQgb24gRU5FUkdZIFNUQVIgY3JpdGVyaWEuIn0sInF1 + YW50aXR5S2V5Q2FwIjpudWxsLCJzdGF0ZSI6IlBBIiwicGVyY2VudENvc3RD + YXAiOm51bGwsInBlcmNlbnRDb3N0Q2FwS2V5Ijp7ImtleU5hbWUiOm51bGx9 + LCJwYXltZW50Q2FwIjpudWxsLCJwYXltZW50RHVyYXRpb24iOm51bGwsImlu + Y2VudGl2ZVBhaWRUbyI6InRlbmFudE9yT3duZXIiLCJwcm9qZWN0VHlwZUV4 + Y2x1c2l2ZSI6bnVsbCwiYXBwbGljYWJpbGl0aWVzIjpbeyJhcHBsaWNhYmls + aXR5S2V5IjoiZW5kVXNlUmVzaWRlbnRpYWwiLCJkaXNwbGF5TmFtZSI6IkVu + ZCBVc2UgUmVzaWRlbnRpYWwiLCJkZXNjcmlwdGlvbiI6IkVuZCBVc2UgVGVj + aG5vbG9neSBmb3IgUmVzaWRlbnRpYWwiLCJyZXF1aXJlZFZhbHVlIjoibWFq + b3JBcHBsaWFuY2VzIiwib3BlcmF0b3IiOiI9In1dLCJzdW1tYXJ5IjpudWxs + LCJyZXF1aXJlbWVudHMiOiJSZWJhdGUgRWxpZ2liaWxpdHk6IDEuIFRoaXMg + YXBwbGljYXRpb24gaXMgb25seSBmb3IgY3VzdG9tZXJzIHdobyByZXNpZGUg + aW4gYSBtYXN0ZXItbWV0ZXJlZCwgbXVsdGktdW5pdCBmYWNpbGl0eS4gMi4g + QXBwbGljYW50J3MgYnVpbGRpbmcgbXVzdCBjdXJyZW50bHkgcmVjZWl2ZSBl + bGVjdHJpYyBzZXJ2aWNlIGZyb20gUEVDTyBhbmQgcmVwbGFjZSBleGlzdGlu + ZyBlbGVjdHJpYyBlcXVpcG1lbnQgd2l0aCBxdWFsaWZpZWQgZXF1aXBtZW50 + IHRvIGJlIGVsaWdpYmxlIGZvciBpbmNlbnRpdmVzLiAzLiBOZXcgY29uc3Ry + dWN0aW9uIHJlcGxhY2VtZW50IGlzIG5vdCBlbGlnaWJsZS4gNC4gQ3VzdG9t + ZXJzIG11c3QgcHVyY2hhc2UgYW5kIGluc3RhbGwgcXVhbGlmeWluZyBlcXVp + cG1lbnQgYmV0d2VlbiBKdWx5IDEsIDIwMDksIGFuZCBNYXkgMzEsIDIwMTIu + IDUuIEVxdWlwbWVudCBwdXJjaGFzZXMgYW5kIGluc3RhbGxhdGlvbnMgcHJp + b3IgdG8gSnVseSAxLCAyMDA5LCBkbyBub3QgcXVhbGlmeSBmb3IgYW4gaW5j + ZW50aXZlLiA2LiBBZGRpdGlvbmFsIGVxdWlwbWVudCBxdWFsaWZpY2F0aW9u + IGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBhdCB3d3cucGVjby5jb20vU21h + cnRJZGVhcywgb3IgY2FsbCAxLTg4OC01LVBFQ08tU0FWRSAoMS04ODgtNTcz + LTI2NzIpLiJ9LHsiaW5jZW50aXZlSWQiOjMxNTYzMzIsIm1hc3RlckluY2Vu + dGl2ZUlkIjozMTU2MzMyLCJlbGlnaWJpbGl0eSI6IkNPVUxEX0JFX0VMSUdJ + QkxFIiwicmVxdWlyZWREYXRhIjpbeyJhcHBsaWNhYmlsaXR5S2V5IjoiZW5k + VXNlUmVzaWRlbnRpYWwiLCJkaXNwbGF5TmFtZSI6IkVuZCBVc2UgUmVzaWRl + bnRpYWwiLCJkZXNjcmlwdGlvbiI6IkVuZCBVc2UgVGVjaG5vbG9neSBmb3Ig + UmVzaWRlbnRpYWwiLCJyZXF1aXJlZFZhbHVlIjoiYWlySGVhdENvb2wiLCJv + cGVyYXRvciI6Ij0ifV0sInRhcmlmZkNvZGUiOiJOb25lIiwiaW5jZW50aXZl + TmFtZSI6IldhdGVyIEhlYXRpbmcgUmViYXRlcyIsImxzZUlkIjo4MTksImxz + ZU5hbWUiOiJQRUNPIEVuZXJneSBDbyIsInNlcnZpY2VUeXBlIjoiRUxFQ1RS + SUNJVFkiLCJjdXN0b21lckNsYXNzIjoiUkVTSURFTlRJQUwiLCJzdGFydERh + dGUiOiIyMDExLTExLTAxIiwiZW5kRGF0ZSI6IjIwMTMtMDUtMzEiLCJpc0V4 + aGF1c3RlZCI6ZmFsc2UsInByb2plY3RUeXBlIjoid2F0ZXJIZWF0IiwiaW5j + ZW50aXZlVHlwZSI6InJlYmF0ZSIsInJhdGUiOjI1LjAwMDAwMCwicmF0ZVVu + aXQiOiJDT1NUX1BFUl9VTklUIiwiZG9jdW1lbnRzIjpudWxsLCJqdXJpc2Rp + Y3Rpb24iOiJ1dGlsaXR5IiwicXVhbnRpdHlLZXkiOnsia2V5TmFtZSI6ImVs + ZWN0cmljV2F0ZXJIZWF0ZXJQb2ludDkzRW5lcmd5RmFjdG9yT3JIaWdoZXIi + LCJkaXNwbGF5TmFtZSI6IkVsZWN0cmljIFdhdGVyIEhlYXRlciAtIDAuOTMg + RW5lcmd5IEZhY3RvciBvciBIaWdoZXIiLCJkZXNjcmlwdGlvbiI6IkVsZWN0 + cmljIFdhdGVyIEhlYXRlciAtIDAuOTMgRW5lcmd5IEZhY3RvciBvciBIaWdo + ZXJcclxuIn0sInF1YW50aXR5S2V5Q2FwIjpudWxsLCJzdGF0ZSI6IlBBIiwi + cGVyY2VudENvc3RDYXAiOm51bGwsInBlcmNlbnRDb3N0Q2FwS2V5Ijp7Imtl + eU5hbWUiOm51bGx9LCJwYXltZW50Q2FwIjpudWxsLCJwYXltZW50RHVyYXRp + b24iOm51bGwsImluY2VudGl2ZVBhaWRUbyI6InRlbmFudE9yT3duZXIiLCJw + cm9qZWN0VHlwZUV4Y2x1c2l2ZSI6bnVsbCwiYXBwbGljYWJpbGl0aWVzIjpb + eyJhcHBsaWNhYmlsaXR5S2V5IjoiZW5kVXNlUmVzaWRlbnRpYWwiLCJkaXNw + bGF5TmFtZSI6IkVuZCBVc2UgUmVzaWRlbnRpYWwiLCJkZXNjcmlwdGlvbiI6 + IkVuZCBVc2UgVGVjaG5vbG9neSBmb3IgUmVzaWRlbnRpYWwiLCJyZXF1aXJl + ZFZhbHVlIjoiYWlySGVhdENvb2wiLCJvcGVyYXRvciI6Ij0ifV0sInN1bW1h + cnkiOm51bGwsInJlcXVpcmVtZW50cyI6IlJlYmF0ZSBFbGlnaWJpbGl0eTog + MS4gVGhpcyBhcHBsaWNhdGlvbiBpcyBvbmx5IGZvciBjdXN0b21lcnMgd2hv + IHJlc2lkZSBpbiBhIG1hc3Rlci1tZXRlcmVkLCBtdWx0aS11bml0IGZhY2ls + aXR5LiAyLiBBcHBsaWNhbnQncyBidWlsZGluZyBtdXN0IGN1cnJlbnRseSBy + ZWNlaXZlIGVsZWN0cmljIHNlcnZpY2UgZnJvbSBQRUNPIGFuZCByZXBsYWNl + IGV4aXN0aW5nIGVsZWN0cmljIGVxdWlwbWVudCB3aXRoIHF1YWxpZmllZCBl + cXVpcG1lbnQgdG8gYmUgZWxpZ2libGUgZm9yIGluY2VudGl2ZXMuIDMuIE5l + dyBjb25zdHJ1Y3Rpb24gcmVwbGFjZW1lbnQgaXMgbm90IGVsaWdpYmxlLiA0 + LiBDdXN0b21lcnMgbXVzdCBwdXJjaGFzZSBhbmQgaW5zdGFsbCBxdWFsaWZ5 + aW5nIGVxdWlwbWVudCBiZXR3ZWVuIEp1bHkgMSwgMjAwOSwgYW5kIE1heSAz + MSwgMjAxMi4gNS4gRXF1aXBtZW50IHB1cmNoYXNlcyBhbmQgaW5zdGFsbGF0 + aW9ucyBwcmlvciB0byBKdWx5IDEsIDIwMDksIGRvIG5vdCBxdWFsaWZ5IGZv + ciBhbiBpbmNlbnRpdmUuIDYuIEFkZGl0aW9uYWwgZXF1aXBtZW50IHF1YWxp + ZmljYXRpb24gaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGF0IHd3dy5wZWNv + LmNvbS9TbWFydElkZWFzLCBvciBjYWxsIDEtODg4LTUtUEVDTy1TQVZFICgx + LTg4OC01NzMtMjY3MikuIn0seyJpbmNlbnRpdmVJZCI6MzE1NjMzMywibWFz + dGVySW5jZW50aXZlSWQiOjMxNTYzMzMsImVsaWdpYmlsaXR5IjoiQ09VTERf + QkVfRUxJR0lCTEUiLCJyZXF1aXJlZERhdGEiOlt7ImFwcGxpY2FiaWxpdHlL + ZXkiOiJlbmRVc2VSZXNpZGVudGlhbCIsImRpc3BsYXlOYW1lIjoiRW5kIFVz + ZSBSZXNpZGVudGlhbCIsImRlc2NyaXB0aW9uIjoiRW5kIFVzZSBUZWNobm9s + b2d5IGZvciBSZXNpZGVudGlhbCIsInJlcXVpcmVkVmFsdWUiOiJhaXJIZWF0 + Q29vbCIsIm9wZXJhdG9yIjoiPSJ9XSwidGFyaWZmQ29kZSI6Ik5vbmUiLCJp + bmNlbnRpdmVOYW1lIjoiUmVzaWRlbnRpYWwgQ2VudHJhbCBIZWF0aW5nICYg + Q29vbGluZyBSZWJhdGVzIiwibHNlSWQiOjgxOSwibHNlTmFtZSI6IlBFQ08g + RW5lcmd5IENvIiwic2VydmljZVR5cGUiOiJFTEVDVFJJQ0lUWSIsImN1c3Rv + bWVyQ2xhc3MiOiJSRVNJREVOVElBTCIsInN0YXJ0RGF0ZSI6IjIwMTEtMTEt + MDEiLCJlbmREYXRlIjoiMjAxMy0wNS0zMSIsImlzRXhoYXVzdGVkIjpmYWxz + ZSwicHJvamVjdFR5cGUiOiJodmFjIiwiaW5jZW50aXZlVHlwZSI6InJlYmF0 + ZSIsInJhdGUiOjMwMC4wMDAwMDAsInJhdGVVbml0IjoiQ09TVF9QRVJfVU5J + VCIsImRvY3VtZW50cyI6bnVsbCwianVyaXNkaWN0aW9uIjoidXRpbGl0eSIs + InF1YW50aXR5S2V5Ijp7ImtleU5hbWUiOiJlTkVSR1lTVEFSQ2VudHJhbEFD + MTZTRUVSb3JIaWdoZXIiLCJkaXNwbGF5TmFtZSI6IkVORVJHWSBTVEFSIENl + bnRyYWwgQUMgLSAxNiBTRUVSIG9yIEhpZ2hlciIsImRlc2NyaXB0aW9uIjoi + RU5FUkdZIFNUQVIgQ2VudHJhbCBBQyAtIDE2IFNFRVIgb3IgSGlnaGVyXHJc + biJ9LCJxdWFudGl0eUtleUNhcCI6bnVsbCwic3RhdGUiOiJQQSIsInBlcmNl + bnRDb3N0Q2FwIjpudWxsLCJwZXJjZW50Q29zdENhcEtleSI6eyJrZXlOYW1l + IjpudWxsfSwicGF5bWVudENhcCI6bnVsbCwicGF5bWVudER1cmF0aW9uIjpu + dWxsLCJpbmNlbnRpdmVQYWlkVG8iOiJ0ZW5hbnRPck93bmVyIiwicHJvamVj + dFR5cGVFeGNsdXNpdmUiOm51bGwsImFwcGxpY2FiaWxpdGllcyI6W3siYXBw + bGljYWJpbGl0eUtleSI6ImVuZFVzZVJlc2lkZW50aWFsIiwiZGlzcGxheU5h + bWUiOiJFbmQgVXNlIFJlc2lkZW50aWFsIiwiZGVzY3JpcHRpb24iOiJFbmQg + VXNlIFRlY2hub2xvZ3kgZm9yIFJlc2lkZW50aWFsIiwicmVxdWlyZWRWYWx1 + ZSI6ImFpckhlYXRDb29sIiwib3BlcmF0b3IiOiI9In1dLCJzdW1tYXJ5Ijpu + dWxsLCJyZXF1aXJlbWVudHMiOiJUbyBxdWFsaWZ5IGZvciBhbiBpbmNlbnRp + dmUsIGVxdWlwbWVudCBtdXN0IG1lZXQgb3IgZXhjZWVkIHRoZSByZXF1aXJl + bWVudHMgb3V0bGluZWQgb24gdGhpcyBmb3JtLiBQbGVhc2UgcmVmZXIgdGhl + IGluY2VudGl2ZSBkb2N1bWVudCBmb3IgaW5kaXZpZHVhbCBpdGVtIHNwZWNp + ZmljYXRpb25zLiJ9LHsiaW5jZW50aXZlSWQiOjMxNTYzMzQsIm1hc3Rlcklu + Y2VudGl2ZUlkIjozMTU2MzM0LCJlbGlnaWJpbGl0eSI6IkNPVUxEX0JFX0VM + SUdJQkxFIiwicmVxdWlyZWREYXRhIjpbeyJhcHBsaWNhYmlsaXR5S2V5Ijoi + ZW5kVXNlQ29tbWVyY2lhbCIsImRpc3BsYXlOYW1lIjoiRW5kIFVzZSBDb21t + ZXJjaWFsIiwiZGVzY3JpcHRpb24iOiJFbmQgVXNlIFRlY2hub2xvZ3kgZm9y + IENvbW1lcmNpYWwiLCJyZXF1aXJlZFZhbHVlIjoibGlnaHRpbmciLCJvcGVy + YXRvciI6Ij0ifV0sInRhcmlmZkNvZGUiOiJOb25lIiwiaW5jZW50aXZlTmFt + ZSI6IkxpZ2h0aW5nIEluY2VudGl2ZXMiLCJsc2VJZCI6ODE5LCJsc2VOYW1l + IjoiUEVDTyBFbmVyZ3kgQ28iLCJzZXJ2aWNlVHlwZSI6IkVMRUNUUklDSVRZ + IiwiY3VzdG9tZXJDbGFzcyI6IkdFTkVSQUwiLCJzdGFydERhdGUiOiIyMDEy + LTA2LTAxIiwiZW5kRGF0ZSI6IjIwMTMtMDYtMDEiLCJpc0V4aGF1c3RlZCI6 + ZmFsc2UsInByb2plY3RUeXBlIjoibGlnaHRpbmciLCJpbmNlbnRpdmVUeXBl + IjoicmViYXRlIiwicmF0ZSI6MS41MDAwMDAsInJhdGVVbml0IjoiQ09TVF9Q + RVJfVU5JVCIsImRvY3VtZW50cyI6bnVsbCwianVyaXNkaWN0aW9uIjoidXRp + bGl0eSIsInF1YW50aXR5S2V5Ijp7ImtleU5hbWUiOiJjRkxTY3Jld0luMzBX + b3JMZXNzIiwiZGlzcGxheU5hbWUiOiJDRkwgLSBTY3Jldy1pbiAoMzBXIG9y + IExlc3MpIiwiZGVzY3JpcHRpb24iOiJJbnRlcmlvciBDb21wYWN0IEZsdW9y + ZXNjZW50IExhbXBzLCBTY3Jldy1JbiAoUmVwbGFjaW5nIEluY2FuZGVzY2Vu + dCk6IENGTCA/IFNjcmV3LWluICgzMFcgb3IgTGVzcy4gUmVxdWlyZW1lbnRz + OiBTY3Jldy1pbiBDRkxzIG11c3QgcmVwbGFjZSBpbmNhbmRlc2NlbnQgZXhp + c3RpbmcgbGFtcHMsIGFuZCBiZSBFTkVSR1kgU1RBUiByYXRlZCBsYW1wcyBv + ciBtZWV0IEVORVJHWSBTVEFSIGNyaXRlcmlhLiJ9LCJxdWFudGl0eUtleUNh + cCI6bnVsbCwic3RhdGUiOiJQQSIsInBlcmNlbnRDb3N0Q2FwIjpudWxsLCJw + ZXJjZW50Q29zdENhcEtleSI6eyJrZXlOYW1lIjpudWxsfSwicGF5bWVudENh + cCI6bnVsbCwicGF5bWVudER1cmF0aW9uIjpudWxsLCJpbmNlbnRpdmVQYWlk + VG8iOiJ0ZW5hbnRPck93bmVyIiwicHJvamVjdFR5cGVFeGNsdXNpdmUiOm51 + bGwsImFwcGxpY2FiaWxpdGllcyI6W3siYXBwbGljYWJpbGl0eUtleSI6ImVu + ZFVzZUNvbW1lcmNpYWwiLCJkaXNwbGF5TmFtZSI6IkVuZCBVc2UgQ29tbWVy + Y2lhbCIsImRlc2NyaXB0aW9uIjoiRW5kIFVzZSBUZWNobm9sb2d5IGZvciBD + b21tZXJjaWFsIiwicmVxdWlyZWRWYWx1ZSI6ImxpZ2h0aW5nIiwib3BlcmF0 + b3IiOiI9In1dLCJzdW1tYXJ5IjpudWxsLCJyZXF1aXJlbWVudHMiOiJUbyBx + dWFsaWZ5IGZvciBhbiBpbmNlbnRpdmUsIGVxdWlwbWVudCBtdXN0IG1lZXQg + b3IgZXhjZWVkIHRoZSByZXF1aXJlbWVudHMgb3V0bGluZWQgb24gdGhpcyBm + b3JtLiBQbGVhc2UgcmVmZXIgdGhlIGluY2VudGl2ZSBkb2N1bWVudCBmb3Ig + aW5kaXZpZHVhbCBpdGVtIHNwZWNpZmljYXRpb25zLiJ9XSwicGFnZVN0YXJ0 + IjowLCJwYWdlQ291bnQiOjI1fQ== + http_version: + recorded_at: Fri, 22 Apr 2016 00:57:17 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/profile_json/_add_profile/creates_a_new_profile.yml b/spec/cassettes/Genability_Client/profile_json/_add_profile/creates_a_new_profile.yml new file mode 100644 index 0000000..c764392 --- /dev/null +++ b/spec/cassettes/Genability_Client/profile_json/_add_profile/creates_a_new_profile.yml @@ -0,0 +1,113 @@ +--- +http_interactions: +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts + body: + encoding: UTF-8 + string: '{"providerAccountId":"account_test"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:16 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"16d2efd6-0aaa-4c4e-b03c-c867736054f4","providerAccountId":"account_test","accountName":"Ruby + Provider Account Test","customerOrgId":null,"customerOrgName":null,"status":"DELETED","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:16 GMT +- request: + method: post + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles + body: + encoding: UTF-8 + string: '{"accountId":"16d2efd6-0aaa-4c4e-b03c-c867736054f4"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:15 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"UsageProfile","results":[{"profileId":"f42ee747-d4d6-49b8-9ae2-5516b6e9cd3c","accountId":"16d2efd6-0aaa-4c4e-b03c-c867736054f4","serviceTypes":"ELECTRICITY","source":{"sourceId":"ReadingEntry","name":null,"type":"Reading","sourceVersion":null},"isDefault":true,"dataStatus":2,"properties":null,"baselineMeasures":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:16 GMT +- request: + method: delete + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles/f42ee747-d4d6-49b8-9ae2-5516b6e9cd3c + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:16 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":0,"type":"UsageProfile","results":null}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:16 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/profile_json/_add_profile_readings/adds_profile_readings.yml b/spec/cassettes/Genability_Client/profile_json/_add_profile_readings/adds_profile_readings.yml new file mode 100644 index 0000000..95c92a0 --- /dev/null +++ b/spec/cassettes/Genability_Client/profile_json/_add_profile_readings/adds_profile_readings.yml @@ -0,0 +1,184 @@ +--- +http_interactions: +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts + body: + encoding: UTF-8 + string: '{"providerAccountId":"ruby_test_account"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:17 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","providerAccountId":"ruby_test_account","accountName":null,"customerOrgId":null,"customerOrgName":null,"address":{"addressString":"94703","city":"Berkeley","state":"CA","zip":"94703","country":"US","lon":-122.2738958,"lat":37.85247409999999},"status":"ACTIVE","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:17 GMT +- request: + method: post + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles + body: + encoding: UTF-8 + string: '{"accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:17 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"UsageProfile","results":[{"profileId":"8533bacb-3a85-470a-8e09-df8ee0fc01d8","accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","serviceTypes":"ELECTRICITY","source":{"sourceId":"ReadingEntry","name":null,"type":"Reading","sourceVersion":null},"dataStatus":2,"properties":null,"baselineMeasures":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:17 GMT +- request: + method: post + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles/8533bacb-3a85-470a-8e09-df8ee0fc01d8/readings + body: + encoding: UTF-8 + string: '{"readings":[{"fromDateTime":"2011-08-01T22:30:00.0-0700","toDateTime":"2011-08-01T22:45:00.0-0700","quantityUnit":"kWh","quantityValue":220}]}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:17 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Content-Length: + - '94' + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":0,"type":"ReadingData","results":null}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:17 GMT +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles/8533bacb-3a85-470a-8e09-df8ee0fc01d8?groupBy=MONTH + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:17 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"UsageProfile","results":[{"profileId":"8533bacb-3a85-470a-8e09-df8ee0fc01d8","accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","serviceTypes":"ELECTRICITY","source":{"sourceId":"ReadingEntry","name":null,"type":"Reading","sourceVersion":null},"dataStatus":2,"properties":null,"readingDataSummaries":[{"quantityUnit":"kWh","fromDateTime":"2011-08-02T05:30:00+00:00","toDateTime":"2011-08-02T05:45:00+00:00","numberOfReadings":1}],"readings":{"totalCount":1,"pageCount":0,"pageStart":0},"intervals":{"totalCount":1,"pageCount":25,"pageStart":0,"list":[{"fromDateTime":"2011-08-01T00:00:00+00:00","toDateTime":"2011-09-01T00:00:00+00:00","duration":2678400000,"kWh":{"quantityAmount":220.0,"rateAmount":0},"kW":{"quantityAmount":880.0,"rateAmount":0}}]},"baselineMeasures":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:17 GMT +- request: + method: delete + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles/8533bacb-3a85-470a-8e09-df8ee0fc01d8 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:17 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":0,"type":"UsageProfile","results":null}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:17 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/profile_json/_delete_profile/deletes_a_profile.yml b/spec/cassettes/Genability_Client/profile_json/_delete_profile/deletes_a_profile.yml new file mode 100644 index 0000000..598a9b3 --- /dev/null +++ b/spec/cassettes/Genability_Client/profile_json/_delete_profile/deletes_a_profile.yml @@ -0,0 +1,112 @@ +--- +http_interactions: +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts + body: + encoding: UTF-8 + string: '{"providerAccountId":"ruby_test_account"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:16 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","providerAccountId":"ruby_test_account","accountName":null,"customerOrgId":null,"customerOrgName":null,"address":{"addressString":"94703","city":"Berkeley","state":"CA","zip":"94703","country":"US","lon":-122.2738958,"lat":37.85247409999999},"status":"ACTIVE","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:16 GMT +- request: + method: post + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles + body: + encoding: UTF-8 + string: '{"accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:16 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"UsageProfile","results":[{"profileId":"4dcff2f2-32bd-4de4-bd38-ed3a5ab94ee4","accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","serviceTypes":"ELECTRICITY","source":{"sourceId":"ReadingEntry","name":null,"type":"Reading","sourceVersion":null},"isDefault":true,"dataStatus":2,"properties":null,"baselineMeasures":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:16 GMT +- request: + method: delete + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles/4dcff2f2-32bd-4de4-bd38-ed3a5ab94ee4 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:16 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":0,"type":"UsageProfile","results":null}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:16 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/profile_json/_delete_provider_profile/deletes_a_provider_profile.yml b/spec/cassettes/Genability_Client/profile_json/_delete_provider_profile/deletes_a_provider_profile.yml new file mode 100644 index 0000000..35ad173 --- /dev/null +++ b/spec/cassettes/Genability_Client/profile_json/_delete_provider_profile/deletes_a_provider_profile.yml @@ -0,0 +1,112 @@ +--- +http_interactions: +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts + body: + encoding: UTF-8 + string: '{"providerAccountId":"ruby_test_account"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:16 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","providerAccountId":"ruby_test_account","accountName":null,"customerOrgId":null,"customerOrgName":null,"address":{"addressString":"94703","city":"Berkeley","state":"CA","zip":"94703","country":"US","lon":-122.2738958,"lat":37.85247409999999},"status":"ACTIVE","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:16 GMT +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles + body: + encoding: UTF-8 + string: '{"accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","providerProfileId":"delete_profile_test"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:16 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"UsageProfile","results":[{"profileId":"5719763be013c65f7ca7e093","providerProfileId":"delete_profile_test","accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","serviceTypes":"ELECTRICITY","source":{"sourceId":"ReadingEntry","name":null,"type":"Reading","sourceVersion":null},"isDefault":true,"dataStatus":2,"properties":null,"baselineMeasures":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:16 GMT +- request: + method: delete + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles/pid/delete_profile_test + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:16 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Content-Length: + - '90' + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":0,"type":"UsageProfile","results":null}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:16 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/profile_json/_profile/returns_a_profile.yml b/spec/cassettes/Genability_Client/profile_json/_profile/returns_a_profile.yml new file mode 100644 index 0000000..4ec519b --- /dev/null +++ b/spec/cassettes/Genability_Client/profile_json/_profile/returns_a_profile.yml @@ -0,0 +1,147 @@ +--- +http_interactions: +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts + body: + encoding: UTF-8 + string: '{"providerAccountId":"ruby_test_account"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:16 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","providerAccountId":"ruby_test_account","accountName":null,"customerOrgId":null,"customerOrgName":null,"address":{"addressString":"94703","city":"Berkeley","state":"CA","zip":"94703","country":"US","lon":-122.2738958,"lat":37.85247409999999},"status":"ACTIVE","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:17 GMT +- request: + method: post + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles + body: + encoding: UTF-8 + string: '{"accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:17 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"UsageProfile","results":[{"profileId":"fb7e9010-ccba-4d0b-ba13-8d8518320e78","accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","serviceTypes":"ELECTRICITY","source":{"sourceId":"ReadingEntry","name":null,"type":"Reading","sourceVersion":null},"dataStatus":2,"properties":null,"baselineMeasures":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:17 GMT +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles/fb7e9010-ccba-4d0b-ba13-8d8518320e78 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:16 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"UsageProfile","results":[{"profileId":"fb7e9010-ccba-4d0b-ba13-8d8518320e78","accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","serviceTypes":"ELECTRICITY","source":{"sourceId":"ReadingEntry","name":null,"type":"Reading","sourceVersion":null},"dataStatus":2,"properties":null,"baselineMeasures":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:17 GMT +- request: + method: delete + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles/fb7e9010-ccba-4d0b-ba13-8d8518320e78 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:17 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":0,"type":"UsageProfile","results":null}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:17 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/profile_json/_profiles/lists_profiles.yml b/spec/cassettes/Genability_Client/profile_json/_profiles/lists_profiles.yml new file mode 100644 index 0000000..37a56ff --- /dev/null +++ b/spec/cassettes/Genability_Client/profile_json/_profiles/lists_profiles.yml @@ -0,0 +1,148 @@ +--- +http_interactions: +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts + body: + encoding: UTF-8 + string: '{"providerAccountId":"ruby_test_account"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:16 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","providerAccountId":"ruby_test_account","accountName":null,"customerOrgId":null,"customerOrgName":null,"address":{"addressString":"94703","city":"Berkeley","state":"CA","zip":"94703","country":"US","lon":-122.2738958,"lat":37.85247409999999},"status":"ACTIVE","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:16 GMT +- request: + method: post + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles + body: + encoding: UTF-8 + string: '{"accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:16 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"UsageProfile","results":[{"profileId":"68af7ef8-76df-4285-b555-c2a6bd9a5c18","accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","serviceTypes":"ELECTRICITY","source":{"sourceId":"ReadingEntry","name":null,"type":"Reading","sourceVersion":null},"isDefault":true,"dataStatus":2,"properties":null,"baselineMeasures":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:17 GMT +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles?accountId=0e08dbf1-d45a-4236-88cb-c678446650f7 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:17 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":2,"type":"UsageProfile","results":[{"profileId":"56d293d019f08fde72d7a628","providerProfileId":"test_profile","profileName":"null + Solar Production","accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","serviceTypes":"SOLAR_PV","source":{"sourceId":"ReadingEntry","name":null,"type":"Reading","sourceVersion":null},"isDefault":true,"dataStatus":2,"properties":null,"readingDataSummaries":[{"quantityUnit":"kWh","fromDateTime":"2016-01-01T08:00:00+00:00","toDateTime":"2016-02-01T08:00:00+00:00","numberOfReadings":1}],"baselineMeasures":null},{"profileId":"68af7ef8-76df-4285-b555-c2a6bd9a5c18","accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","serviceTypes":"ELECTRICITY","source":{"sourceId":"ReadingEntry","name":null,"type":"Reading","sourceVersion":null},"isDefault":true,"dataStatus":2,"properties":null,"baselineMeasures":null}],"pageStart":0,"pageCount":25}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:17 GMT +- request: + method: delete + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles/68af7ef8-76df-4285-b555-c2a6bd9a5c18 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:56:35 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":0,"type":"UsageProfile","results":null}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:56:36 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/profile_json/_provider_profile/returns_a_provider_profile.yml b/spec/cassettes/Genability_Client/profile_json/_provider_profile/returns_a_provider_profile.yml new file mode 100644 index 0000000..3e17f6a --- /dev/null +++ b/spec/cassettes/Genability_Client/profile_json/_provider_profile/returns_a_provider_profile.yml @@ -0,0 +1,147 @@ +--- +http_interactions: +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts + body: + encoding: UTF-8 + string: '{"providerAccountId":"ruby_test_account"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:16 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Content-Length: + - '307' + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","providerAccountId":"ruby_test_account","accountName":null,"customerOrgId":null,"customerOrgName":null,"address":{"addressString":"94703","city":"Berkeley","state":"CA","zip":"94703","country":"US","lon":-122.2738958,"lat":37.85247409999999},"status":"ACTIVE","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:17 GMT +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles + body: + encoding: UTF-8 + string: '{"accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","providerProfileId":"provider_profile_test"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:17 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"UsageProfile","results":[{"profileId":"5719763ce013c65f7ca7e094","providerProfileId":"provider_profile_test","accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","serviceTypes":"ELECTRICITY","source":{"sourceId":"ReadingEntry","name":null,"type":"Reading","sourceVersion":null},"dataStatus":2,"properties":null,"baselineMeasures":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:17 GMT +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles/pid/provider_profile_test + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:17 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"UsageProfile","results":[{"profileId":"5719763ce013c65f7ca7e094","providerProfileId":"provider_profile_test","accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","serviceTypes":"ELECTRICITY","source":{"sourceId":"ReadingEntry","name":null,"type":"Reading","sourceVersion":null},"dataStatus":2,"properties":null,"baselineMeasures":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:17 GMT +- request: + method: delete + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles/5719763ce013c65f7ca7e094 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:17 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":0,"type":"UsageProfile","results":null}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:17 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/profile_json/_update_profile_readings/updates_profile_readings.yml b/spec/cassettes/Genability_Client/profile_json/_update_profile_readings/updates_profile_readings.yml new file mode 100644 index 0000000..84871e3 --- /dev/null +++ b/spec/cassettes/Genability_Client/profile_json/_update_profile_readings/updates_profile_readings.yml @@ -0,0 +1,184 @@ +--- +http_interactions: +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts + body: + encoding: UTF-8 + string: '{"providerAccountId":"ruby_test_account"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:17 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","providerAccountId":"ruby_test_account","accountName":null,"customerOrgId":null,"customerOrgName":null,"address":{"addressString":"94703","city":"Berkeley","state":"CA","zip":"94703","country":"US","lon":-122.2738958,"lat":37.85247409999999},"status":"ACTIVE","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:18 GMT +- request: + method: post + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles + body: + encoding: UTF-8 + string: '{"accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:17 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Content-Length: + - '259' + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"UsageProfile","results":[{"profileId":"f32915b9-f8b3-47a5-a4f8-fc6bc770e05f","accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","serviceTypes":"ELECTRICITY","source":{"sourceId":"ReadingEntry","name":null,"type":"Reading","sourceVersion":null},"dataStatus":2,"properties":null,"baselineMeasures":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:18 GMT +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles/f32915b9-f8b3-47a5-a4f8-fc6bc770e05f/readings + body: + encoding: UTF-8 + string: '{"readings":[{"fromDateTime":"2011-08-01T22:30:00.0-0700","toDateTime":"2011-08-01T22:45:00.0-0700","quantityUnit":"kWh","quantityValue":220}]}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:18 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":0,"type":"ReadingData","results":null}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:18 GMT +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles/f32915b9-f8b3-47a5-a4f8-fc6bc770e05f?groupBy=MONTH + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:17 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"UsageProfile","results":[{"profileId":"f32915b9-f8b3-47a5-a4f8-fc6bc770e05f","accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","serviceTypes":"ELECTRICITY","source":{"sourceId":"ReadingEntry","name":null,"type":"Reading","sourceVersion":null},"dataStatus":2,"properties":null,"readingDataSummaries":[{"quantityUnit":"kWh","fromDateTime":"2011-08-02T05:30:00+00:00","toDateTime":"2011-08-02T05:45:00+00:00","numberOfReadings":1}],"readings":{"totalCount":1,"pageCount":0,"pageStart":0},"intervals":{"totalCount":1,"pageCount":25,"pageStart":0,"list":[{"fromDateTime":"2011-08-01T00:00:00+00:00","toDateTime":"2011-09-01T00:00:00+00:00","duration":2678400000,"kWh":{"quantityAmount":220.0,"rateAmount":0},"kW":{"quantityAmount":880.0,"rateAmount":0}}]},"baselineMeasures":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:18 GMT +- request: + method: delete + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles/f32915b9-f8b3-47a5-a4f8-fc6bc770e05f + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:18 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":0,"type":"UsageProfile","results":null}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:18 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/profile_json/_upsert_profile/upserts_a_profile.yml b/spec/cassettes/Genability_Client/profile_json/_upsert_profile/upserts_a_profile.yml new file mode 100644 index 0000000..4ce88ba --- /dev/null +++ b/spec/cassettes/Genability_Client/profile_json/_upsert_profile/upserts_a_profile.yml @@ -0,0 +1,112 @@ +--- +http_interactions: +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/accounts + body: + encoding: UTF-8 + string: '{"providerAccountId":"ruby_test_account"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:16 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Account","results":[{"accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","providerAccountId":"ruby_test_account","accountName":null,"customerOrgId":null,"customerOrgName":null,"address":{"addressString":"94703","city":"Berkeley","state":"CA","zip":"94703","country":"US","lon":-122.2738958,"lat":37.85247409999999},"status":"ACTIVE","type":null,"accountManager":null,"assignee":null,"contacts":null,"properties":null,"tariffs":null,"projects":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:16 GMT +- request: + method: put + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles + body: + encoding: UTF-8 + string: '{"accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","providerProfileId":"upsert_profile_test"}' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Content-Type: + - application/json;charset=utf-8 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:16 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"UsageProfile","results":[{"profileId":"5719763be013c65f7ca7e092","providerProfileId":"upsert_profile_test","accountId":"0e08dbf1-d45a-4236-88cb-c678446650f7","serviceTypes":"ELECTRICITY","source":{"sourceId":"ReadingEntry","name":null,"type":"Reading","sourceVersion":null},"isDefault":true,"dataStatus":2,"properties":null,"baselineMeasures":null}]}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:16 GMT +- request: + method: delete + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/v1/profiles/5719763be013c65f7ca7e092 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Fri, 22 Apr 2016 00:54:16 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":0,"type":"UsageProfile","results":null}' + http_version: + recorded_at: Fri, 22 Apr 2016 00:54:16 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/tariff_json/_tariff/should_return_a_tariff.yml b/spec/cassettes/Genability_Client/tariff_json/_tariff/should_return_a_tariff.yml new file mode 100644 index 0000000..56f676c --- /dev/null +++ b/spec/cassettes/Genability_Client/tariff_json/_tariff/should_return_a_tariff.yml @@ -0,0 +1,39 @@ +--- +http_interactions: +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/public/tariffs/512 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Tue, 26 Apr 2016 02:49:43 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Tariff","results":[{"tariffId":3244437,"masterTariffId":512,"tariffCode":"R-22","tariffName":"Residential","lseId":2756,"lseName":"Georgia + Power Co","priorTariffId":3228032,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":2028231,"customerLikelihood":null,"territoryId":3114,"effectiveDate":"2016-01-01","endDate":null,"timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,QUANTITY,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":true,"requiredData":null,"eligibility":null,"applicabilities":[]}]}' + http_version: + recorded_at: Tue, 26 Apr 2016 02:49:44 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/tariff_json/_tariff/should_return_a_tariff_with_rates_and_properties.yml b/spec/cassettes/Genability_Client/tariff_json/_tariff/should_return_a_tariff_with_rates_and_properties.yml new file mode 100644 index 0000000..6565e5b --- /dev/null +++ b/spec/cassettes/Genability_Client/tariff_json/_tariff/should_return_a_tariff_with_rates_and_properties.yml @@ -0,0 +1,67 @@ +--- +http_interactions: +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/public/tariffs/512?populateProperties=true&populateRates=true + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Tue, 26 Apr 2016 02:49:43 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Tariff","results":[{"tariffId":3244437,"masterTariffId":512,"tariffCode":"R-22","tariffName":"Residential","lseId":2756,"lseName":"Georgia + Power Co","priorTariffId":3228032,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":2028231,"customerLikelihood":null,"territoryId":3114,"effectiveDate":"2016-01-01","endDate":null,"timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,QUANTITY,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":true,"properties":[{"keyName":"cityLimits","quantityKey":null,"displayName":"Service + Area (Inside/outside city limits)","family":"service","keyspace":"electricity","description":"Has + service inside or outside city limits","dataType":"CHOICE","propertyTypes":"RATE_CRITERIA","operator":"=","propertyValue":"Inside","choices":[{"displayValue":"Inside","value":"Inside","dataValue":"Inside","likelihood":null},{"displayValue":"Outside","value":"Outside","dataValue":"Outside","likelihood":null}],"isDefault":true},{"keyName":"consumption","quantityKey":null,"displayName":"Consumption + (kWh)","family":"load","keyspace":"electricity","description":"Quantity in + kWh of load that is used for a period of time","dataType":"DECIMAL","propertyTypes":"RATE_CRITERIA","operator":"","isDefault":false},{"keyName":"isLowIncomeSeniorCitizen953","quantityKey":null,"displayName":"Is + Low Income Senior Citizen","family":"customerStatus","keyspace":"customer","description":"Customers + who are at least 62 years of age or older or be a disabled person as evidenced + by receiving Supplemental Security Income (SSI) or State Supplemental Payment + (SSP) and whose total gross annual income for all persons in the applicant''s + household may not exceed seventy-five (75) percent of the most recent median + income levels.","dataType":"BOOLEAN","propertyTypes":"RATE_CRITERIA","operator":"=","propertyValue":"false","isDefault":true}],"rates":[{"tariffRateId":17471831,"tariffId":3244437,"tariffSequenceNumber":0,"rateGroupName":"Basic + Service Charge","rateName":"Basic Service Charge","fromDateTime":"2016-01-01T00:00:00-05:00","toDateTime":null,"chargeType":"FIXED_PRICE","chargePeriod":"MONTHLY","rateBands":[{"tariffRateBandId":10922532,"tariffRateId":17471831,"rateSequenceNumber":1,"hasConsumptionLimit":false,"hasDemandLimit":false,"hasPropertyLimit":false,"rateAmount":10.000000,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null}]},{"tariffRateId":17471832,"tariffId":3244437,"tariffSequenceNumber":1,"rateGroupName":"Environmental + Compliance Cost Recovery Charge","rateName":"Basic Service Charge Component","fromDateTime":"2016-01-01T00:00:00-05:00","toDateTime":null,"chargeType":"FIXED_PRICE","chargePeriod":"MONTHLY","rateBands":[{"tariffRateBandId":10922533,"tariffRateId":17471832,"rateSequenceNumber":1,"hasConsumptionLimit":false,"hasDemandLimit":false,"hasPropertyLimit":false,"calculationFactor":0.127680,"rateAmount":10.000000,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null}]},{"tariffRateId":17471845,"tariffId":3244437,"tariffSequenceNumber":1,"rateGroupName":"Fuel + Cost Recovery Charge","rateName":"Summer Rate","fromDateTime":"2016-01-01T00:00:00-05:00","toDateTime":null,"season":{"seasonId":315,"lseId":2756,"seasonGroupId":3,"seasonName":"Summer","seasonFromMonth":6,"seasonFromDay":1,"seasonToMonth":9,"seasonToDay":30},"chargeType":"CONSUMPTION_BASED","chargePeriod":"MONTHLY","variableRateKey":"fuelCostRecoverySecondaryDistributionSummer","rateBands":[{"tariffRateBandId":10922562,"tariffRateId":17471845,"rateSequenceNumber":1,"hasConsumptionLimit":false,"hasDemandLimit":false,"hasPropertyLimit":false,"rateAmount":0.000000,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null}]},{"tariffRateId":17471833,"tariffId":3244437,"tariffSequenceNumber":2,"rateGroupName":"Nuclear + Construction Cost Recovery Charge","rateName":"Basic Service Charge Component","fromDateTime":"2016-01-01T00:00:00-05:00","toDateTime":null,"chargeType":"FIXED_PRICE","chargePeriod":"MONTHLY","rateBands":[{"tariffRateBandId":10922534,"tariffRateId":17471833,"rateSequenceNumber":1,"hasConsumptionLimit":false,"hasDemandLimit":false,"hasPropertyLimit":false,"calculationFactor":0.097357,"rateAmount":10.000000,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null}]},{"tariffRateId":17471834,"tariffId":3244437,"tariffSequenceNumber":3,"rateGroupName":"Demand + Side Management Charge","rateName":"Basic Service Charge Component","fromDateTime":"2016-01-01T00:00:00-05:00","toDateTime":null,"chargeType":"FIXED_PRICE","chargePeriod":"MONTHLY","rateBands":[{"tariffRateBandId":10922535,"tariffRateId":17471834,"rateSequenceNumber":1,"hasConsumptionLimit":false,"hasDemandLimit":false,"hasPropertyLimit":false,"calculationFactor":0.016721,"rateAmount":10.000000,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null}]},{"tariffRateId":17471835,"tariffId":3244437,"tariffSequenceNumber":4,"rateGroupName":"Senior + Citizen - Low Income Assistance","rateName":"Senior Citizen - Low Income Assistance","fromDateTime":"2016-01-01T00:00:00-05:00","toDateTime":null,"chargeType":"FIXED_PRICE","chargePeriod":"MONTHLY","applicabilityKey":"isLowIncomeSeniorCitizen953","rateBands":[{"tariffRateBandId":10922536,"tariffRateId":17471835,"rateSequenceNumber":1,"hasConsumptionLimit":false,"hasDemandLimit":false,"hasPropertyLimit":false,"applicabilityValue":"true","rateAmount":18.000000,"rateUnit":"COST_PER_UNIT","isCredit":true,"prevUpperLimit":null}]},{"tariffRateId":17471841,"tariffId":3244437,"tariffSequenceNumber":4,"rateGroupName":"Environmental + Compliance Cost Recovery Charge","rateName":"Energy Charge - Summer Component","fromDateTime":"2016-01-01T00:00:00-05:00","toDateTime":null,"season":{"seasonId":315,"lseId":2756,"seasonGroupId":3,"seasonName":"Summer","seasonFromMonth":6,"seasonFromDay":1,"seasonToMonth":9,"seasonToDay":30},"chargeType":"CONSUMPTION_BASED","chargePeriod":"MONTHLY","rateBands":[{"tariffRateBandId":10922550,"tariffRateId":17471841,"rateSequenceNumber":1,"hasConsumptionLimit":true,"consumptionUpperLimit":650.0,"hasDemandLimit":false,"hasPropertyLimit":false,"calculationFactor":0.127680,"rateAmount":0.056582,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null},{"tariffRateBandId":10922551,"tariffRateId":17471841,"rateSequenceNumber":2,"hasConsumptionLimit":true,"consumptionUpperLimit":1000.0,"hasDemandLimit":false,"hasPropertyLimit":false,"calculationFactor":0.127680,"rateAmount":0.093983,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null},{"tariffRateBandId":10922552,"tariffRateId":17471841,"rateSequenceNumber":3,"hasConsumptionLimit":true,"hasDemandLimit":false,"hasPropertyLimit":false,"calculationFactor":0.127680,"rateAmount":0.097273,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null}]},{"tariffRateId":17471836,"tariffId":3244437,"tariffSequenceNumber":5,"rateGroupName":"Demand + Side Management Charge","rateName":"Energy Charge - Winter Component","fromDateTime":"2016-01-01T00:00:00-05:00","toDateTime":null,"season":{"seasonId":314,"lseId":2756,"seasonGroupId":3,"seasonName":"Winter","seasonFromMonth":10,"seasonFromDay":1,"seasonToMonth":5,"seasonToDay":31},"chargeType":"CONSUMPTION_BASED","chargePeriod":"MONTHLY","rateBands":[{"tariffRateBandId":10922537,"tariffRateId":17471836,"rateSequenceNumber":1,"hasConsumptionLimit":true,"consumptionUpperLimit":650.0,"hasDemandLimit":false,"hasPropertyLimit":false,"calculationFactor":0.016721,"rateAmount":0.056582,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null},{"tariffRateBandId":10922538,"tariffRateId":17471836,"rateSequenceNumber":2,"hasConsumptionLimit":true,"consumptionUpperLimit":1000.0,"hasDemandLimit":false,"hasPropertyLimit":false,"calculationFactor":0.016721,"rateAmount":0.048533,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null},{"tariffRateBandId":10922539,"tariffRateId":17471836,"rateSequenceNumber":3,"hasConsumptionLimit":true,"hasDemandLimit":false,"hasPropertyLimit":false,"calculationFactor":0.016721,"rateAmount":0.047641,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null}]},{"tariffRateId":17471837,"tariffId":3244437,"tariffSequenceNumber":6,"rateGroupName":"Energy + Charges","rateName":"Winter Rate","fromDateTime":"2016-01-01T00:00:00-05:00","toDateTime":null,"season":{"seasonId":314,"lseId":2756,"seasonGroupId":3,"seasonName":"Winter","seasonFromMonth":10,"seasonFromDay":1,"seasonToMonth":5,"seasonToDay":31},"chargeType":"CONSUMPTION_BASED","chargePeriod":"MONTHLY","rateBands":[{"tariffRateBandId":10922540,"tariffRateId":17471837,"rateSequenceNumber":1,"hasConsumptionLimit":true,"consumptionUpperLimit":650.0,"hasDemandLimit":false,"hasPropertyLimit":false,"rateAmount":0.056582,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null},{"tariffRateBandId":10922541,"tariffRateId":17471837,"rateSequenceNumber":2,"hasConsumptionLimit":true,"consumptionUpperLimit":1000.0,"hasDemandLimit":false,"hasPropertyLimit":false,"rateAmount":0.048533,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null},{"tariffRateBandId":10922542,"tariffRateId":17471837,"rateSequenceNumber":3,"hasConsumptionLimit":true,"hasDemandLimit":false,"hasPropertyLimit":false,"rateAmount":0.047641,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null}]},{"tariffRateId":17471838,"tariffId":3244437,"tariffSequenceNumber":7,"rateGroupName":"Environmental + Compliance Cost Recovery Charge","rateName":"Energy Charge - Winter Component","fromDateTime":"2016-01-01T00:00:00-05:00","toDateTime":null,"season":{"seasonId":314,"lseId":2756,"seasonGroupId":3,"seasonName":"Winter","seasonFromMonth":10,"seasonFromDay":1,"seasonToMonth":5,"seasonToDay":31},"chargeType":"CONSUMPTION_BASED","chargePeriod":"MONTHLY","rateBands":[{"tariffRateBandId":10922543,"tariffRateId":17471838,"rateSequenceNumber":1,"hasConsumptionLimit":true,"consumptionUpperLimit":650.0,"hasDemandLimit":false,"hasPropertyLimit":false,"calculationFactor":0.127680,"rateAmount":0.056582,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null},{"tariffRateBandId":10922544,"tariffRateId":17471838,"rateSequenceNumber":2,"hasConsumptionLimit":true,"consumptionUpperLimit":1000.0,"hasDemandLimit":false,"hasPropertyLimit":false,"calculationFactor":0.127680,"rateAmount":0.048533,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null},{"tariffRateBandId":10922545,"tariffRateId":17471838,"rateSequenceNumber":3,"hasConsumptionLimit":true,"hasDemandLimit":false,"hasPropertyLimit":false,"calculationFactor":0.127680,"rateAmount":0.047641,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null}]},{"tariffRateId":17471842,"tariffId":3244437,"tariffSequenceNumber":7,"rateGroupName":"Nuclear + Construction Cost Recovery Charge","rateName":"Energy Charge - Summer Component","fromDateTime":"2016-01-01T00:00:00-05:00","toDateTime":null,"season":{"seasonId":315,"lseId":2756,"seasonGroupId":3,"seasonName":"Summer","seasonFromMonth":6,"seasonFromDay":1,"seasonToMonth":9,"seasonToDay":30},"chargeType":"CONSUMPTION_BASED","chargePeriod":"MONTHLY","rateBands":[{"tariffRateBandId":10922553,"tariffRateId":17471842,"rateSequenceNumber":1,"hasConsumptionLimit":true,"consumptionUpperLimit":650.0,"hasDemandLimit":false,"hasPropertyLimit":false,"calculationFactor":0.097357,"rateAmount":0.056582,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null},{"tariffRateBandId":10922554,"tariffRateId":17471842,"rateSequenceNumber":2,"hasConsumptionLimit":true,"consumptionUpperLimit":1000.0,"hasDemandLimit":false,"hasPropertyLimit":false,"calculationFactor":0.097357,"rateAmount":0.093983,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null},{"tariffRateBandId":10922555,"tariffRateId":17471842,"rateSequenceNumber":3,"hasConsumptionLimit":true,"hasDemandLimit":false,"hasPropertyLimit":false,"calculationFactor":0.097357,"rateAmount":0.097273,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null}]},{"tariffRateId":17471839,"tariffId":3244437,"tariffSequenceNumber":8,"rateGroupName":"Nuclear + Construction Cost Recovery Charge","rateName":"Energy Charge - Winter Component","fromDateTime":"2016-01-01T00:00:00-05:00","toDateTime":null,"season":{"seasonId":314,"lseId":2756,"seasonGroupId":3,"seasonName":"Winter","seasonFromMonth":10,"seasonFromDay":1,"seasonToMonth":5,"seasonToDay":31},"chargeType":"CONSUMPTION_BASED","chargePeriod":"MONTHLY","rateBands":[{"tariffRateBandId":10922546,"tariffRateId":17471839,"rateSequenceNumber":1,"hasConsumptionLimit":true,"consumptionUpperLimit":650.0,"hasDemandLimit":false,"hasPropertyLimit":false,"calculationFactor":0.097357,"rateAmount":0.056582,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null},{"tariffRateBandId":10922547,"tariffRateId":17471839,"rateSequenceNumber":2,"hasConsumptionLimit":true,"consumptionUpperLimit":1000.0,"hasDemandLimit":false,"hasPropertyLimit":false,"calculationFactor":0.097357,"rateAmount":0.048533,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null},{"tariffRateBandId":10922548,"tariffRateId":17471839,"rateSequenceNumber":3,"hasConsumptionLimit":true,"hasDemandLimit":false,"hasPropertyLimit":false,"calculationFactor":0.097357,"rateAmount":0.047641,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null}]},{"tariffRateId":17471848,"tariffId":3244437,"tariffSequenceNumber":8,"rateGroupName":"Municipal + Franchise Fee","rateName":"Inside City Limit Customer","fromDateTime":"2016-01-01T00:00:00-05:00","toDateTime":null,"chargeType":"QUANTITY","chargePeriod":"MONTHLY","applicabilityKey":"cityLimits","variableRateKey":"municipalFranchiseFeeInsideCityLimits","rateBands":[{"tariffRateBandId":10922565,"tariffRateId":17471848,"rateSequenceNumber":1,"hasConsumptionLimit":false,"hasDemandLimit":false,"hasPropertyLimit":false,"applicabilityValue":"Inside","rateAmount":0.000000,"rateUnit":"PERCENTAGE","isCredit":false,"prevUpperLimit":null}]},{"tariffRateId":17471840,"tariffId":3244437,"tariffSequenceNumber":9,"rateGroupName":"Fuel + Cost Recovery Charge","rateName":"Winter Rate","fromDateTime":"2016-01-01T00:00:00-05:00","toDateTime":null,"season":{"seasonId":314,"lseId":2756,"seasonGroupId":3,"seasonName":"Winter","seasonFromMonth":10,"seasonFromDay":1,"seasonToMonth":5,"seasonToDay":31},"chargeType":"CONSUMPTION_BASED","chargePeriod":"MONTHLY","variableRateKey":"fuelCostRecoverySecondaryDistributionWinter","rateBands":[{"tariffRateBandId":10922549,"tariffRateId":17471840,"rateSequenceNumber":1,"hasConsumptionLimit":false,"hasDemandLimit":false,"hasPropertyLimit":false,"rateAmount":0.000000,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null}]},{"tariffRateId":17471843,"tariffId":3244437,"tariffSequenceNumber":9,"rateGroupName":"Energy + Charges","rateName":"Summer Rate","fromDateTime":"2016-01-01T00:00:00-05:00","toDateTime":null,"season":{"seasonId":315,"lseId":2756,"seasonGroupId":3,"seasonName":"Summer","seasonFromMonth":6,"seasonFromDay":1,"seasonToMonth":9,"seasonToDay":30},"chargeType":"CONSUMPTION_BASED","chargePeriod":"MONTHLY","rateBands":[{"tariffRateBandId":10922556,"tariffRateId":17471843,"rateSequenceNumber":1,"hasConsumptionLimit":true,"consumptionUpperLimit":650.0,"hasDemandLimit":false,"hasPropertyLimit":false,"rateAmount":0.056582,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null},{"tariffRateBandId":10922557,"tariffRateId":17471843,"rateSequenceNumber":2,"hasConsumptionLimit":true,"consumptionUpperLimit":1000.0,"hasDemandLimit":false,"hasPropertyLimit":false,"rateAmount":0.093983,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null},{"tariffRateBandId":10922558,"tariffRateId":17471843,"rateSequenceNumber":3,"hasConsumptionLimit":true,"hasDemandLimit":false,"hasPropertyLimit":false,"rateAmount":0.097273,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null}]},{"tariffRateId":17471844,"tariffId":3244437,"tariffSequenceNumber":9,"rateGroupName":"Demand + Side Management Charge","rateName":"Energy Charge - Summer Component","fromDateTime":"2016-01-01T00:00:00-05:00","toDateTime":null,"season":{"seasonId":315,"lseId":2756,"seasonGroupId":3,"seasonName":"Summer","seasonFromMonth":6,"seasonFromDay":1,"seasonToMonth":9,"seasonToDay":30},"chargeType":"CONSUMPTION_BASED","chargePeriod":"MONTHLY","rateBands":[{"tariffRateBandId":10922559,"tariffRateId":17471844,"rateSequenceNumber":1,"hasConsumptionLimit":true,"consumptionUpperLimit":650.0,"hasDemandLimit":false,"hasPropertyLimit":false,"calculationFactor":0.016721,"rateAmount":0.056582,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null},{"tariffRateBandId":10922560,"tariffRateId":17471844,"rateSequenceNumber":2,"hasConsumptionLimit":true,"consumptionUpperLimit":1000.0,"hasDemandLimit":false,"hasPropertyLimit":false,"calculationFactor":0.016721,"rateAmount":0.093983,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null},{"tariffRateBandId":10922561,"tariffRateId":17471844,"rateSequenceNumber":3,"hasConsumptionLimit":true,"hasDemandLimit":false,"hasPropertyLimit":false,"calculationFactor":0.016721,"rateAmount":0.097273,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null}]},{"tariffRateId":17471849,"tariffId":3244437,"tariffSequenceNumber":9,"rateGroupName":"Municipal + Franchise Fee","rateName":"Outside City Limit Customer","fromDateTime":"2016-01-01T00:00:00-05:00","toDateTime":null,"chargeType":"QUANTITY","chargePeriod":"MONTHLY","applicabilityKey":"cityLimits","variableRateKey":"municipalFranchiseFeeOutsideCityLimits","rateBands":[{"tariffRateBandId":10922566,"tariffRateId":17471849,"rateSequenceNumber":1,"hasConsumptionLimit":false,"hasDemandLimit":false,"hasPropertyLimit":false,"applicabilityValue":"Outside","rateAmount":0.000000,"rateUnit":"PERCENTAGE","isCredit":false,"prevUpperLimit":null}]},{"tariffRateId":17471850,"tariffId":3244437,"tariffSequenceNumber":999,"rateGroupName":"Minimum + Charge","rateName":"Minimum Charge","fromDateTime":"2016-01-01T00:00:00-05:00","toDateTime":null,"chargeType":"MINIMUM","chargePeriod":"MONTHLY","rateBands":[{"tariffRateBandId":10922567,"tariffRateId":17471850,"rateSequenceNumber":1,"hasConsumptionLimit":false,"hasDemandLimit":false,"hasPropertyLimit":false,"rateAmount":10.000000,"rateUnit":"COST_PER_UNIT","isCredit":false,"prevUpperLimit":null}]}],"requiredData":null,"eligibility":null,"applicabilities":[]}]}' + http_version: + recorded_at: Tue, 26 Apr 2016 02:49:44 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/tariff_json/_tariffs/should_accept_a_string_for_customerClass.yml b/spec/cassettes/Genability_Client/tariff_json/_tariffs/should_accept_a_string_for_customerClass.yml new file mode 100644 index 0000000..9fe9f08 --- /dev/null +++ b/spec/cassettes/Genability_Client/tariff_json/_tariffs/should_accept_a_string_for_customerClass.yml @@ -0,0 +1,63 @@ +--- +http_interactions: +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/public/tariffs?customerClasses=RESIDENTIAL + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Tue, 26 Apr 2016 02:49:42 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":13015,"type":"Tariff","results":[{"tariffId":355,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":355,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4600,"territoryId":3004,"effectiveDate":"2010-03-01","endDate":"2011-03-01","timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":84794,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":84794,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4600,"territoryId":3004,"effectiveDate":"2011-03-01","endDate":"2012-01-03","timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":2634732,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":2634732,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4600,"territoryId":3004,"effectiveDate":"2012-01-03","endDate":"2013-01-02","timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3156046,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":3156046,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4600,"territoryId":3004,"effectiveDate":"2013-01-02","endDate":"2013-04-24","timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3161779,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":3161779,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4600,"territoryId":3004,"effectiveDate":"2013-04-24","endDate":"2014-01-02","timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3164397,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":3164397,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4600,"territoryId":3004,"effectiveDate":"2014-01-02","endDate":"2014-04-01","timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3169005,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":3169005,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4600,"territoryId":3004,"effectiveDate":"2014-04-01","endDate":"2015-01-02","timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3209670,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":3209670,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4600,"territoryId":3004,"effectiveDate":"2015-01-02","endDate":"2016-04-01","timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3253392,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":3209670,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4600,"territoryId":3004,"effectiveDate":"2016-04-01","endDate":null,"timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":true,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3163748,"masterTariffId":3163748,"tariffCode":"D","tariffName":"Residential","lseId":100357,"lseName":"Hydro + Quebec","priorTariffId":3163748,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3780793,"customerLikelihood":0.4400,"territoryId":4696,"effectiveDate":"2013-04-01","endDate":"2014-04-01","timeZone":"Canada/Eastern","billingPeriod":"MONTHLY","currency":"CAD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,DEMAND_BASED","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3170080,"masterTariffId":3163748,"tariffCode":"D","tariffName":"Residential","lseId":100357,"lseName":"Hydro + Quebec","priorTariffId":3170080,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3780793,"customerLikelihood":0.4400,"territoryId":4696,"effectiveDate":"2014-04-01","endDate":"2015-04-01","timeZone":"Canada/Eastern","billingPeriod":"MONTHLY","currency":"CAD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,DEMAND_BASED","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":522,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":522,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3900,"territoryId":807,"effectiveDate":"2011-03-01","endDate":"2011-06-19","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":83625,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":83625,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3900,"territoryId":807,"effectiveDate":"2011-06-19","endDate":"2011-11-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":126989,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":126989,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3900,"territoryId":807,"effectiveDate":"2011-11-01","endDate":"2012-01-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":127341,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":127341,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3900,"territoryId":807,"effectiveDate":"2011-01-01","endDate":"2011-03-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":2634639,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":2634639,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3900,"territoryId":807,"effectiveDate":"2012-01-01","endDate":"2012-03-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3153502,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3153502,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3900,"territoryId":807,"effectiveDate":"2012-03-01","endDate":"2012-07-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3154354,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3154354,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3900,"territoryId":807,"effectiveDate":"2012-07-01","endDate":"2013-01-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3155887,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3155887,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3900,"territoryId":807,"effectiveDate":"2013-01-01","endDate":"2013-05-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3160193,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3160193,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3900,"territoryId":807,"effectiveDate":"2013-05-01","endDate":"2013-10-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3163175,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3163175,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3900,"territoryId":807,"effectiveDate":"2013-10-01","endDate":"2014-01-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3164509,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3164509,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3900,"territoryId":807,"effectiveDate":"2014-01-01","endDate":"2014-03-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3166167,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3166167,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3900,"territoryId":807,"effectiveDate":"2014-03-01","endDate":"2014-05-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3178976,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3178976,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3900,"territoryId":807,"effectiveDate":"2014-05-01","endDate":"2014-08-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3189177,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3189177,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3900,"territoryId":807,"effectiveDate":"2014-08-01","endDate":"2014-10-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]}],"pageStart":0,"pageCount":25}' + http_version: + recorded_at: Tue, 26 Apr 2016 02:49:43 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/tariff_json/_tariffs/should_accept_an_array_for_tariffTypes.yml b/spec/cassettes/Genability_Client/tariff_json/_tariffs/should_accept_an_array_for_tariffTypes.yml new file mode 100644 index 0000000..83ef4e8 --- /dev/null +++ b/spec/cassettes/Genability_Client/tariff_json/_tariffs/should_accept_an_array_for_tariffTypes.yml @@ -0,0 +1,63 @@ +--- +http_interactions: +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/public/tariffs?tariffTypes=DEFAULT,ALTERNATIVE + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Tue, 26 Apr 2016 02:49:43 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":30587,"type":"Tariff","results":[{"tariffId":355,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":355,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4200,"territoryId":3004,"effectiveDate":"2010-03-01","endDate":"2011-03-01","timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":84794,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":84794,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4200,"territoryId":3004,"effectiveDate":"2011-03-01","endDate":"2012-01-03","timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":2634732,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":2634732,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4200,"territoryId":3004,"effectiveDate":"2012-01-03","endDate":"2013-01-02","timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3156046,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":3156046,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4200,"territoryId":3004,"effectiveDate":"2013-01-02","endDate":"2013-04-24","timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3161779,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":3161779,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4200,"territoryId":3004,"effectiveDate":"2013-04-24","endDate":"2014-01-02","timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3164397,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":3164397,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4200,"territoryId":3004,"effectiveDate":"2014-01-02","endDate":"2014-04-01","timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3169005,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":3169005,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4200,"territoryId":3004,"effectiveDate":"2014-04-01","endDate":"2015-01-02","timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3209670,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":3209670,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4200,"territoryId":3004,"effectiveDate":"2015-01-02","endDate":"2016-04-01","timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3253392,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":3209670,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4200,"territoryId":3004,"effectiveDate":"2016-04-01","endDate":null,"timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":true,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3163748,"masterTariffId":3163748,"tariffCode":"D","tariffName":"Residential","lseId":100357,"lseName":"Hydro + Quebec","priorTariffId":3163748,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3780793,"customerLikelihood":0.4000,"territoryId":4696,"effectiveDate":"2013-04-01","endDate":"2014-04-01","timeZone":"Canada/Eastern","billingPeriod":"MONTHLY","currency":"CAD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,DEMAND_BASED","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3170080,"masterTariffId":3163748,"tariffCode":"D","tariffName":"Residential","lseId":100357,"lseName":"Hydro + Quebec","priorTariffId":3170080,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3780793,"customerLikelihood":0.4000,"territoryId":4696,"effectiveDate":"2014-04-01","endDate":"2015-04-01","timeZone":"Canada/Eastern","billingPeriod":"MONTHLY","currency":"CAD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,DEMAND_BASED","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":522,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":522,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2011-03-01","endDate":"2011-06-19","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":83625,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":83625,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2011-06-19","endDate":"2011-11-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":126989,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":126989,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2011-11-01","endDate":"2012-01-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":127341,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":127341,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2011-01-01","endDate":"2011-03-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":2634639,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":2634639,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2012-01-01","endDate":"2012-03-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3153502,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3153502,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2012-03-01","endDate":"2012-07-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3154354,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3154354,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2012-07-01","endDate":"2013-01-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3155887,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3155887,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2013-01-01","endDate":"2013-05-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3160193,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3160193,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2013-05-01","endDate":"2013-10-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3163175,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3163175,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2013-10-01","endDate":"2014-01-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3164509,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3164509,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2014-01-01","endDate":"2014-03-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3166167,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3166167,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2014-03-01","endDate":"2014-05-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3178976,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3178976,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2014-05-01","endDate":"2014-08-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3189177,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3189177,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2014-08-01","endDate":"2014-10-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]}],"pageStart":0,"pageCount":25}' + http_version: + recorded_at: Tue, 26 Apr 2016 02:49:44 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/tariff_json/_tariffs/should_allow_searches_by_lse_id.yml b/spec/cassettes/Genability_Client/tariff_json/_tariffs/should_allow_searches_by_lse_id.yml new file mode 100644 index 0000000..b0b3eb9 --- /dev/null +++ b/spec/cassettes/Genability_Client/tariff_json/_tariffs/should_allow_searches_by_lse_id.yml @@ -0,0 +1,63 @@ +--- +http_interactions: +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/public/tariffs?lseId=734 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Tue, 26 Apr 2016 02:49:40 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1054,"type":"Tariff","results":[{"tariffId":522,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":522,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":3.1800,"territoryId":807,"effectiveDate":"2011-03-01","endDate":"2011-06-19","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":83625,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":83625,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":3.1800,"territoryId":807,"effectiveDate":"2011-06-19","endDate":"2011-11-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":126989,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":126989,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":3.1800,"territoryId":807,"effectiveDate":"2011-11-01","endDate":"2012-01-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":127341,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":127341,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":3.1800,"territoryId":807,"effectiveDate":"2011-01-01","endDate":"2011-03-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":2634639,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":2634639,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":3.1800,"territoryId":807,"effectiveDate":"2012-01-01","endDate":"2012-03-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3153502,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3153502,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":3.1800,"territoryId":807,"effectiveDate":"2012-03-01","endDate":"2012-07-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3154354,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3154354,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":3.1800,"territoryId":807,"effectiveDate":"2012-07-01","endDate":"2013-01-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3155887,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3155887,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":3.1800,"territoryId":807,"effectiveDate":"2013-01-01","endDate":"2013-05-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3160193,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3160193,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":3.1800,"territoryId":807,"effectiveDate":"2013-05-01","endDate":"2013-10-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3163175,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3163175,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":3.1800,"territoryId":807,"effectiveDate":"2013-10-01","endDate":"2014-01-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3164509,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3164509,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":3.1800,"territoryId":807,"effectiveDate":"2014-01-01","endDate":"2014-03-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3166167,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3166167,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":3.1800,"territoryId":807,"effectiveDate":"2014-03-01","endDate":"2014-05-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3178976,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3178976,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":3.1800,"territoryId":807,"effectiveDate":"2014-05-01","endDate":"2014-08-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3189177,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3189177,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":3.1800,"territoryId":807,"effectiveDate":"2014-08-01","endDate":"2014-10-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3198726,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3198726,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":3.1800,"territoryId":807,"effectiveDate":"2014-10-01","endDate":"2015-01-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3208305,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3208305,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":3.1800,"territoryId":807,"effectiveDate":"2015-01-01","endDate":"2015-03-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3215865,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3215865,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":3.1800,"territoryId":807,"effectiveDate":"2015-03-01","endDate":"2015-09-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3236300,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3236300,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":3.1800,"territoryId":807,"effectiveDate":"2015-09-01","endDate":"2016-01-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3243470,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3243470,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":3.1800,"territoryId":807,"effectiveDate":"2016-01-01","endDate":"2016-03-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3249960,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3249960,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":3.1800,"territoryId":807,"effectiveDate":"2016-03-01","endDate":"2016-03-24","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3252392,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3249960,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":3.1800,"territoryId":807,"effectiveDate":"2016-03-24","endDate":null,"timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":true,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":521,"masterTariffId":521,"tariffCode":"E-1-EH","tariffName":"Residential + - Electric Heat","lseId":734,"lseName":"Pacific Gas & Electric Co","priorTariffId":521,"tariffType":"ALTERNATIVE","customerClass":"RESIDENTIAL","customerCount":1078966,"customerLikelihood":1.0300,"territoryId":807,"effectiveDate":"2011-03-01","endDate":"2011-06-20","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":83622,"masterTariffId":521,"tariffCode":"E-1-EH","tariffName":"Residential + - Electric Heat","lseId":734,"lseName":"Pacific Gas & Electric Co","priorTariffId":83622,"tariffType":"ALTERNATIVE","customerClass":"RESIDENTIAL","customerCount":1078966,"customerLikelihood":1.0300,"territoryId":807,"effectiveDate":"2011-06-20","endDate":"2011-11-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":126988,"masterTariffId":521,"tariffCode":"E-1-EH","tariffName":"Residential + - Electric Heat","lseId":734,"lseName":"Pacific Gas & Electric Co","priorTariffId":126988,"tariffType":"ALTERNATIVE","customerClass":"RESIDENTIAL","customerCount":1078966,"customerLikelihood":1.0300,"territoryId":807,"effectiveDate":"2011-11-01","endDate":"2012-01-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":127342,"masterTariffId":521,"tariffCode":"E-1-EH","tariffName":"Residential + - Electric Heat","lseId":734,"lseName":"Pacific Gas & Electric Co","priorTariffId":127342,"tariffType":"ALTERNATIVE","customerClass":"RESIDENTIAL","customerCount":1078966,"customerLikelihood":1.0300,"territoryId":807,"effectiveDate":"2011-01-01","endDate":"2011-03-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]}],"pageStart":0,"pageCount":25}' + http_version: + recorded_at: Tue, 26 Apr 2016 02:49:42 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/tariff_json/_tariffs/should_return_an_array_of_tariffs.yml b/spec/cassettes/Genability_Client/tariff_json/_tariffs/should_return_an_array_of_tariffs.yml new file mode 100644 index 0000000..32fd847 --- /dev/null +++ b/spec/cassettes/Genability_Client/tariff_json/_tariffs/should_return_an_array_of_tariffs.yml @@ -0,0 +1,63 @@ +--- +http_interactions: +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/public/tariffs + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Tue, 26 Apr 2016 02:49:41 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":35013,"type":"Tariff","results":[{"tariffId":355,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":355,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4200,"territoryId":3004,"effectiveDate":"2010-03-01","endDate":"2011-03-01","timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":84794,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":84794,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4200,"territoryId":3004,"effectiveDate":"2011-03-01","endDate":"2012-01-03","timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":2634732,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":2634732,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4200,"territoryId":3004,"effectiveDate":"2012-01-03","endDate":"2013-01-02","timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3156046,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":3156046,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4200,"territoryId":3004,"effectiveDate":"2013-01-02","endDate":"2013-04-24","timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3161779,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":3161779,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4200,"territoryId":3004,"effectiveDate":"2013-04-24","endDate":"2014-01-02","timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3164397,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":3164397,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4200,"territoryId":3004,"effectiveDate":"2014-01-02","endDate":"2014-04-01","timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3169005,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":3169005,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4200,"territoryId":3004,"effectiveDate":"2014-04-01","endDate":"2015-01-02","timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3209670,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":3209670,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4200,"territoryId":3004,"effectiveDate":"2015-01-02","endDate":"2016-04-01","timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3253392,"masterTariffId":355,"tariffCode":"RS-1","tariffName":"Residential","lseId":2654,"lseName":"Florida + Power & Light Co","priorTariffId":3209670,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":4000595,"customerLikelihood":0.4200,"territoryId":3004,"effectiveDate":"2016-04-01","endDate":null,"timeZone":"US/Eastern","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"MONTHLY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":false,"isActive":true,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3163748,"masterTariffId":3163748,"tariffCode":"D","tariffName":"Residential","lseId":100357,"lseName":"Hydro + Quebec","priorTariffId":3163748,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3780793,"customerLikelihood":0.4000,"territoryId":4696,"effectiveDate":"2013-04-01","endDate":"2014-04-01","timeZone":"Canada/Eastern","billingPeriod":"MONTHLY","currency":"CAD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,DEMAND_BASED","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3170080,"masterTariffId":3163748,"tariffCode":"D","tariffName":"Residential","lseId":100357,"lseName":"Hydro + Quebec","priorTariffId":3170080,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3780793,"customerLikelihood":0.4000,"territoryId":4696,"effectiveDate":"2014-04-01","endDate":"2015-04-01","timeZone":"Canada/Eastern","billingPeriod":"MONTHLY","currency":"CAD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,DEMAND_BASED","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":522,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":522,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2011-03-01","endDate":"2011-06-19","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":83625,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":83625,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2011-06-19","endDate":"2011-11-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":126989,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":126989,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2011-11-01","endDate":"2012-01-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":127341,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":127341,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2011-01-01","endDate":"2011-03-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":2634639,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":2634639,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2012-01-01","endDate":"2012-03-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3153502,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3153502,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2012-03-01","endDate":"2012-07-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3154354,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3154354,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2012-07-01","endDate":"2013-01-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3155887,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3155887,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2013-01-01","endDate":"2013-05-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3160193,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3160193,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2013-05-01","endDate":"2013-10-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3163175,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3163175,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2013-10-01","endDate":"2014-01-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3164509,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3164509,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2014-01-01","endDate":"2014-03-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3166167,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3166167,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2014-03-01","endDate":"2014-05-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3178976,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3178976,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2014-05-01","endDate":"2014-08-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]},{"tariffId":3189177,"masterTariffId":522,"tariffCode":"E-1","tariffName":"Residential","lseId":734,"lseName":"Pacific + Gas & Electric Co","priorTariffId":3189177,"tariffType":"DEFAULT","customerClass":"RESIDENTIAL","customerCount":3321385,"customerLikelihood":0.3500,"territoryId":807,"effectiveDate":"2014-08-01","endDate":"2014-10-01","timeZone":"US/Pacific","billingPeriod":"MONTHLY","currency":"USD","chargeTypes":"FIXED_PRICE,CONSUMPTION_BASED,MINIMUM","chargePeriod":"DAILY","hasTimeOfUseRates":false,"hasTieredRates":true,"hasContractedRates":false,"hasRateApplicability":true,"isActive":false,"requiredData":null,"eligibility":null,"applicabilities":[]}],"pageStart":0,"pageCount":25}' + http_version: + recorded_at: Tue, 26 Apr 2016 02:49:42 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/territory_json/_territories/should_allow_searches_by_lse_id.yml b/spec/cassettes/Genability_Client/territory_json/_territories/should_allow_searches_by_lse_id.yml new file mode 100644 index 0000000..833835d --- /dev/null +++ b/spec/cassettes/Genability_Client/territory_json/_territories/should_allow_searches_by_lse_id.yml @@ -0,0 +1,49 @@ +--- +http_interactions: +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/public/territories?lseId=734 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Tue, 03 May 2016 23:10:42 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Content-Length: + - '623' + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":11,"type":"Territory","results":[{"territoryId":807,"territoryName":"Service + area for CA","lseId":734,"lseName":"Pacific Gas & Electric Co","usageType":"SERVICE","itemTypes":"COUNTY","deregRes":false,"deregCandi":false,"centerPoint":{"longitude":-121.35850650459477,"latitude":37.825256018379214}},{"territoryId":3534,"territoryName":"Baseline + Region P","lseId":734,"lseName":"Pacific Gas & Electric Co","parentTerritoryId":807,"usageType":"TARIFF","itemTypes":"ZIPCODE","deregRes":false,"deregCandi":false,"centerPoint":{"longitude":-121.25965298684213,"latitude":38.81323759210526}},{"territoryId":3535,"territoryName":"Baseline + Region Q","lseId":734,"lseName":"Pacific Gas & Electric Co","parentTerritoryId":807,"usageType":"TARIFF","itemTypes":"ZIPCODE","deregRes":false,"deregCandi":false,"centerPoint":{"longitude":-121.92218766666667,"latitude":37.018478}},{"territoryId":3536,"territoryName":"Baseline + Region R","lseId":734,"lseName":"Pacific Gas & Electric Co","parentTerritoryId":807,"usageType":"TARIFF","itemTypes":"ZIPCODE","deregRes":false,"deregCandi":false,"centerPoint":{"longitude":-119.45533490449439,"latitude":37.08063061797762}},{"territoryId":3537,"territoryName":"Baseline + Region S","lseId":734,"lseName":"Pacific Gas & Electric Co","parentTerritoryId":807,"usageType":"TARIFF","itemTypes":"ZIPCODE","deregRes":false,"deregCandi":false,"centerPoint":{"longitude":-121.43255658024694,"latitude":38.47617793415638}},{"territoryId":3538,"territoryName":"Baseline + Region T","lseId":734,"lseName":"Pacific Gas & Electric Co","parentTerritoryId":807,"usageType":"TARIFF","itemTypes":"ZIPCODE","deregRes":false,"deregCandi":false,"centerPoint":{"longitude":-122.0622513529413,"latitude":37.268442714285754}},{"territoryId":3539,"territoryName":"Baseline + Region V","lseId":734,"lseName":"Pacific Gas & Electric Co","parentTerritoryId":807,"usageType":"TARIFF","itemTypes":"ZIPCODE","deregRes":false,"deregCandi":false,"centerPoint":{"longitude":-124.06306692000003,"latitude":40.690513440000004}},{"territoryId":3540,"territoryName":"Baseline + Region W","lseId":734,"lseName":"Pacific Gas & Electric Co","parentTerritoryId":807,"usageType":"TARIFF","itemTypes":"ZIPCODE","deregRes":false,"deregCandi":false,"centerPoint":{"longitude":-119.22503353333337,"latitude":35.71898616666665}},{"territoryId":3541,"territoryName":"Baseline + Region X","lseId":734,"lseName":"Pacific Gas & Electric Co","parentTerritoryId":807,"usageType":"TARIFF","itemTypes":"ZIPCODE","deregRes":false,"deregCandi":false,"centerPoint":{"longitude":-122.0893179725087,"latitude":37.60216264261169}},{"territoryId":3542,"territoryName":"Baseline + Region Y","lseId":734,"lseName":"Pacific Gas & Electric Co","parentTerritoryId":807,"usageType":"TARIFF","itemTypes":"ZIPCODE","deregRes":false,"deregCandi":false,"centerPoint":{"longitude":-121.54436931081078,"latitude":39.6615340945946}},{"territoryId":3543,"territoryName":"Baseline + Region Z","lseId":734,"lseName":"Pacific Gas & Electric Co","parentTerritoryId":807,"usageType":"TARIFF","itemTypes":"ZIPCODE","deregRes":false,"deregCandi":false,"centerPoint":{"longitude":-120.64584263636362,"latitude":39.317859545454546}}],"pageStart":0,"pageCount":25}' + http_version: + recorded_at: Tue, 03 May 2016 23:10:43 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/territory_json/_territories/should_get_the_territory_ID_from_a_zipcode.yml b/spec/cassettes/Genability_Client/territory_json/_territories/should_get_the_territory_ID_from_a_zipcode.yml new file mode 100644 index 0000000..1f4b599 --- /dev/null +++ b/spec/cassettes/Genability_Client/territory_json/_territories/should_get_the_territory_ID_from_a_zipcode.yml @@ -0,0 +1,76 @@ +--- +http_interactions: +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/public/territories?lseId=734&zipCode=94115 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Tue, 03 May 2016 23:10:42 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":2,"type":"Territory","results":[{"territoryId":807,"territoryName":"Service + area for CA","lseId":734,"lseName":"Pacific Gas & Electric Co","usageType":"SERVICE","itemTypes":"COUNTY","deregRes":false,"deregCandi":false,"centerPoint":{"longitude":-121.35850650459477,"latitude":37.825256018379214}},{"territoryId":3538,"territoryName":"Baseline + Region T","lseId":734,"lseName":"Pacific Gas & Electric Co","parentTerritoryId":807,"usageType":"TARIFF","itemTypes":"ZIPCODE","deregRes":false,"deregCandi":false,"centerPoint":{"longitude":-122.0622513529413,"latitude":37.268442714285754}}],"pageStart":0,"pageCount":25}' + http_version: + recorded_at: Tue, 03 May 2016 23:10:43 GMT +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/public/territories?lseId=734&masterTariffId=522&zipCode=94115 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Tue, 03 May 2016 23:11:26 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Content-Length: + - '282' + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Territory","results":[{"territoryId":3538,"territoryName":"Baseline + Region T","lseId":734,"lseName":"Pacific Gas & Electric Co","parentTerritoryId":807,"usageType":"TARIFF","itemTypes":"ZIPCODE","deregRes":false,"deregCandi":false,"centerPoint":{"longitude":-122.0622513529413,"latitude":37.268442714285754}}],"pageStart":0,"pageCount":25}' + http_version: + recorded_at: Tue, 03 May 2016 23:11:27 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/territory_json/_territories/should_return_an_array_of_territories.yml b/spec/cassettes/Genability_Client/territory_json/_territories/should_return_an_array_of_territories.yml new file mode 100644 index 0000000..bdd63d9 --- /dev/null +++ b/spec/cassettes/Genability_Client/territory_json/_territories/should_return_an_array_of_territories.yml @@ -0,0 +1,49 @@ +--- +http_interactions: +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/public/territories?lseId=734 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Tue, 03 May 2016 23:10:42 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":11,"type":"Territory","results":[{"territoryId":807,"territoryName":"Service + area for CA","lseId":734,"lseName":"Pacific Gas & Electric Co","usageType":"SERVICE","itemTypes":"COUNTY","deregRes":false,"deregCandi":false,"centerPoint":{"longitude":-121.35850650459477,"latitude":37.825256018379214}},{"territoryId":3534,"territoryName":"Baseline + Region P","lseId":734,"lseName":"Pacific Gas & Electric Co","parentTerritoryId":807,"usageType":"TARIFF","itemTypes":"ZIPCODE","deregRes":false,"deregCandi":false,"centerPoint":{"longitude":-121.25965298684213,"latitude":38.81323759210526}},{"territoryId":3535,"territoryName":"Baseline + Region Q","lseId":734,"lseName":"Pacific Gas & Electric Co","parentTerritoryId":807,"usageType":"TARIFF","itemTypes":"ZIPCODE","deregRes":false,"deregCandi":false,"centerPoint":{"longitude":-121.92218766666667,"latitude":37.018478}},{"territoryId":3536,"territoryName":"Baseline + Region R","lseId":734,"lseName":"Pacific Gas & Electric Co","parentTerritoryId":807,"usageType":"TARIFF","itemTypes":"ZIPCODE","deregRes":false,"deregCandi":false,"centerPoint":{"longitude":-119.45533490449439,"latitude":37.08063061797762}},{"territoryId":3537,"territoryName":"Baseline + Region S","lseId":734,"lseName":"Pacific Gas & Electric Co","parentTerritoryId":807,"usageType":"TARIFF","itemTypes":"ZIPCODE","deregRes":false,"deregCandi":false,"centerPoint":{"longitude":-121.43255658024694,"latitude":38.47617793415638}},{"territoryId":3538,"territoryName":"Baseline + Region T","lseId":734,"lseName":"Pacific Gas & Electric Co","parentTerritoryId":807,"usageType":"TARIFF","itemTypes":"ZIPCODE","deregRes":false,"deregCandi":false,"centerPoint":{"longitude":-122.0622513529413,"latitude":37.268442714285754}},{"territoryId":3539,"territoryName":"Baseline + Region V","lseId":734,"lseName":"Pacific Gas & Electric Co","parentTerritoryId":807,"usageType":"TARIFF","itemTypes":"ZIPCODE","deregRes":false,"deregCandi":false,"centerPoint":{"longitude":-124.06306692000003,"latitude":40.690513440000004}},{"territoryId":3540,"territoryName":"Baseline + Region W","lseId":734,"lseName":"Pacific Gas & Electric Co","parentTerritoryId":807,"usageType":"TARIFF","itemTypes":"ZIPCODE","deregRes":false,"deregCandi":false,"centerPoint":{"longitude":-119.22503353333337,"latitude":35.71898616666665}},{"territoryId":3541,"territoryName":"Baseline + Region X","lseId":734,"lseName":"Pacific Gas & Electric Co","parentTerritoryId":807,"usageType":"TARIFF","itemTypes":"ZIPCODE","deregRes":false,"deregCandi":false,"centerPoint":{"longitude":-122.0893179725087,"latitude":37.60216264261169}},{"territoryId":3542,"territoryName":"Baseline + Region Y","lseId":734,"lseName":"Pacific Gas & Electric Co","parentTerritoryId":807,"usageType":"TARIFF","itemTypes":"ZIPCODE","deregRes":false,"deregCandi":false,"centerPoint":{"longitude":-121.54436931081078,"latitude":39.6615340945946}},{"territoryId":3543,"territoryName":"Baseline + Region Z","lseId":734,"lseName":"Pacific Gas & Electric Co","parentTerritoryId":807,"usageType":"TARIFF","itemTypes":"ZIPCODE","deregRes":false,"deregCandi":false,"centerPoint":{"longitude":-120.64584263636362,"latitude":39.317859545454546}}],"pageStart":0,"pageCount":25}' + http_version: + recorded_at: Tue, 03 May 2016 23:10:42 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/Genability_Client/territory_json/_territory/should_return_a_territory.yml b/spec/cassettes/Genability_Client/territory_json/_territory/should_return_a_territory.yml new file mode 100644 index 0000000..0ffc70e --- /dev/null +++ b/spec/cassettes/Genability_Client/territory_json/_territory/should_return_a_territory.yml @@ -0,0 +1,39 @@ +--- +http_interactions: +- request: + method: get + uri: https://ValidAppID:ValidAppKey@api.genability.com/rest/public/territories/3539 + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json; charset=utf-8 + User-Agent: + - Genability API Ruby Gem + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json;charset=utf-8 + Date: + - Tue, 03 May 2016 23:10:42 GMT + Server: + - Apache-Coyote/1.1 + Vary: + - Accept-Encoding + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: '{"status":"success","count":1,"type":"Territory","results":[{"territoryId":3539,"territoryName":"Baseline + Region V","lseId":734,"lseName":"Pacific Gas & Electric Co","parentTerritoryId":807,"usageType":"TARIFF","itemTypes":"ZIPCODE","deregRes":false,"deregCandi":false,"centerPoint":{"longitude":-124.06306692000003,"latitude":40.690513440000004}}]}' + http_version: + recorded_at: Tue, 03 May 2016 23:10:43 GMT +recorded_with: VCR 3.0.1 diff --git a/spec/cassettes/account.yml b/spec/cassettes/account.yml deleted file mode 100644 index d55de8f..0000000 --- a/spec/cassettes/account.yml +++ /dev/null @@ -1,94 +0,0 @@ ---- -- !ruby/struct:VCR::HTTPInteraction - request: !ruby/struct:VCR::Request - method: :post - uri: http://api.genability.com:80/rest/beta/accounts?appId=ValidAppID&appKey=ValidAppKey - body: ! '{"accountName":"Ruby Account Test"}' - headers: - accept: - - application/json; charset=utf-8 - user-agent: - - Genability API Ruby Gem - content-type: - - application/json;charset=utf-8 - response: !ruby/struct:VCR::Response - status: !ruby/struct:VCR::ResponseStatus - code: 200 - message: OK - headers: - access-control-allow-origin: - - ! '*' - content-type: - - application/json;charset=utf-8 - date: - - Sat, 05 May 2012 18:43:28 GMT - server: - - Apache/2.2.16 (Ubuntu) - transfer-encoding: - - chunked - connection: - - keep-alive - body: ! '{"status":"success","count":1,"type":"Account","results":[{"accountId":"0a183e3f-9797-442a-a568-97e4efb583d6","providerAccountId":null,"providerOrgId":"403b8a29-71aa-481a-9b5f-72fb9416f8ab","accountName":"Ruby - Account Test","customerOrgId":null,"customerOrgName":null,"status":"ACTIVE","properties":null,"tariffs":null}]}' - http_version: '1.1' -- !ruby/struct:VCR::HTTPInteraction - request: !ruby/struct:VCR::Request - method: :get - uri: http://api.genability.com:80/rest/beta/accounts/0a183e3f-9797-442a-a568-97e4efb583d6?appId=ValidAppID&appKey=ValidAppKey - body: - headers: - accept: - - application/json; charset=utf-8 - user-agent: - - Genability API Ruby Gem - accept-encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - response: !ruby/struct:VCR::Response - status: !ruby/struct:VCR::ResponseStatus - code: 200 - message: OK - headers: - access-control-allow-origin: - - ! '*' - content-type: - - application/json;charset=utf-8 - date: - - Sat, 05 May 2012 18:43:28 GMT - server: - - Apache/2.2.16 (Ubuntu) - transfer-encoding: - - chunked - connection: - - keep-alive - body: ! '{"status":"success","count":1,"type":"Account","results":[{"accountId":"0a183e3f-9797-442a-a568-97e4efb583d6","providerAccountId":null,"providerOrgId":"403b8a29-71aa-481a-9b5f-72fb9416f8ab","accountName":"Ruby - Account Test","customerOrgId":null,"customerOrgName":null,"status":"ACTIVE","properties":null,"tariffs":null}]}' - http_version: '1.1' -- !ruby/struct:VCR::HTTPInteraction - request: !ruby/struct:VCR::Request - method: :delete - uri: http://api.genability.com:80/rest/beta/accounts/0a183e3f-9797-442a-a568-97e4efb583d6?appId=ValidAppID&appKey=ValidAppKey - body: - headers: - accept: - - application/json; charset=utf-8 - user-agent: - - Genability API Ruby Gem - response: !ruby/struct:VCR::Response - status: !ruby/struct:VCR::ResponseStatus - code: 200 - message: OK - headers: - access-control-allow-origin: - - ! '*' - content-type: - - application/json;charset=utf-8 - date: - - Sat, 05 May 2012 18:43:29 GMT - server: - - Apache/2.2.16 (Ubuntu) - transfer-encoding: - - chunked - connection: - - keep-alive - body: ! '{"status":"success","count":0,"type":"Account","results":null}' - http_version: '1.1' diff --git a/spec/cassettes/account_add.yml b/spec/cassettes/account_add.yml deleted file mode 100644 index 4b528f7..0000000 --- a/spec/cassettes/account_add.yml +++ /dev/null @@ -1,62 +0,0 @@ ---- -- !ruby/struct:VCR::HTTPInteraction - request: !ruby/struct:VCR::Request - method: :post - uri: http://api.genability.com:80/rest/beta/accounts?appId=ValidAppID&appKey=ValidAppKey - body: ! '{"accountName":"Ruby Add Account Test"}' - headers: - accept: - - application/json; charset=utf-8 - user-agent: - - Genability API Ruby Gem - content-type: - - application/json;charset=utf-8 - response: !ruby/struct:VCR::Response - status: !ruby/struct:VCR::ResponseStatus - code: 200 - message: OK - headers: - access-control-allow-origin: - - ! '*' - content-type: - - application/json;charset=utf-8 - date: - - Sat, 05 May 2012 18:43:26 GMT - server: - - Apache/2.2.16 (Ubuntu) - transfer-encoding: - - chunked - connection: - - keep-alive - body: ! '{"status":"success","count":1,"type":"Account","results":[{"accountId":"f5d5b03f-924c-46a0-8979-eb38b51b1a60","providerAccountId":null,"providerOrgId":"403b8a29-71aa-481a-9b5f-72fb9416f8ab","accountName":"Ruby - Add Account Test","customerOrgId":null,"customerOrgName":null,"status":"ACTIVE","properties":null,"tariffs":null}]}' - http_version: '1.1' -- !ruby/struct:VCR::HTTPInteraction - request: !ruby/struct:VCR::Request - method: :delete - uri: http://api.genability.com:80/rest/beta/accounts/f5d5b03f-924c-46a0-8979-eb38b51b1a60?appId=ValidAppID&appKey=ValidAppKey - body: - headers: - accept: - - application/json; charset=utf-8 - user-agent: - - Genability API Ruby Gem - response: !ruby/struct:VCR::Response - status: !ruby/struct:VCR::ResponseStatus - code: 200 - message: OK - headers: - access-control-allow-origin: - - ! '*' - content-type: - - application/json;charset=utf-8 - date: - - Sat, 05 May 2012 18:43:26 GMT - server: - - Apache/2.2.16 (Ubuntu) - transfer-encoding: - - chunked - connection: - - keep-alive - body: ! '{"status":"success","count":0,"type":"Account","results":null}' - http_version: '1.1' diff --git a/spec/cassettes/account_delete.yml b/spec/cassettes/account_delete.yml deleted file mode 100644 index 5387f8d..0000000 --- a/spec/cassettes/account_delete.yml +++ /dev/null @@ -1,62 +0,0 @@ ---- -- !ruby/struct:VCR::HTTPInteraction - request: !ruby/struct:VCR::Request - method: :post - uri: http://api.genability.com:80/rest/beta/accounts?appId=ValidAppID&appKey=ValidAppKey - body: ! '{"accountName":"Ruby Delete Account Test"}' - headers: - accept: - - application/json; charset=utf-8 - user-agent: - - Genability API Ruby Gem - content-type: - - application/json;charset=utf-8 - response: !ruby/struct:VCR::Response - status: !ruby/struct:VCR::ResponseStatus - code: 200 - message: OK - headers: - access-control-allow-origin: - - ! '*' - content-type: - - application/json;charset=utf-8 - date: - - Sat, 05 May 2012 18:43:26 GMT - server: - - Apache/2.2.16 (Ubuntu) - transfer-encoding: - - chunked - connection: - - keep-alive - body: ! '{"status":"success","count":1,"type":"Account","results":[{"accountId":"dfda7789-c8f5-4f5c-9d9c-aa844b5a0009","providerAccountId":null,"providerOrgId":"403b8a29-71aa-481a-9b5f-72fb9416f8ab","accountName":"Ruby - Delete Account Test","customerOrgId":null,"customerOrgName":null,"status":"ACTIVE","properties":null,"tariffs":null}]}' - http_version: '1.1' -- !ruby/struct:VCR::HTTPInteraction - request: !ruby/struct:VCR::Request - method: :delete - uri: http://api.genability.com:80/rest/beta/accounts/dfda7789-c8f5-4f5c-9d9c-aa844b5a0009?appId=ValidAppID&appKey=ValidAppKey - body: - headers: - accept: - - application/json; charset=utf-8 - user-agent: - - Genability API Ruby Gem - response: !ruby/struct:VCR::Response - status: !ruby/struct:VCR::ResponseStatus - code: 200 - message: OK - headers: - access-control-allow-origin: - - ! '*' - content-type: - - application/json;charset=utf-8 - date: - - Sat, 05 May 2012 18:43:27 GMT - server: - - Apache/2.2.16 (Ubuntu) - transfer-encoding: - - chunked - connection: - - keep-alive - body: ! '{"status":"success","count":0,"type":"Account","results":null}' - http_version: '1.1' diff --git a/spec/cassettes/accounts.yml b/spec/cassettes/accounts.yml deleted file mode 100644 index 80cc621..0000000 --- a/spec/cassettes/accounts.yml +++ /dev/null @@ -1,94 +0,0 @@ ---- -- !ruby/struct:VCR::HTTPInteraction - request: !ruby/struct:VCR::Request - method: :post - uri: http://api.genability.com:80/rest/beta/accounts?appId=ValidAppID&appKey=ValidAppKey - body: ! '{"accountName":"Ruby Accounts Test"}' - headers: - accept: - - application/json; charset=utf-8 - user-agent: - - Genability API Ruby Gem - content-type: - - application/json;charset=utf-8 - response: !ruby/struct:VCR::Response - status: !ruby/struct:VCR::ResponseStatus - code: 200 - message: OK - headers: - access-control-allow-origin: - - ! '*' - content-type: - - application/json;charset=utf-8 - date: - - Sat, 05 May 2012 18:45:43 GMT - server: - - Apache/2.2.16 (Ubuntu) - transfer-encoding: - - chunked - connection: - - keep-alive - body: ! '{"status":"success","count":1,"type":"Account","results":[{"accountId":"956c50b8-12fe-4b9e-b407-7895795879bf","providerAccountId":null,"providerOrgId":"403b8a29-71aa-481a-9b5f-72fb9416f8ab","accountName":"Ruby - Accounts Test","customerOrgId":null,"customerOrgName":null,"status":"ACTIVE","properties":null,"tariffs":null}]}' - http_version: '1.1' -- !ruby/struct:VCR::HTTPInteraction - request: !ruby/struct:VCR::Request - method: :get - uri: http://api.genability.com:80/rest/beta/accounts?appId=ValidAppID&appKey=ValidAppKey&search=Ruby%20Accounts%20Test - body: - headers: - accept: - - application/json; charset=utf-8 - user-agent: - - Genability API Ruby Gem - accept-encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - response: !ruby/struct:VCR::Response - status: !ruby/struct:VCR::ResponseStatus - code: 200 - message: OK - headers: - access-control-allow-origin: - - ! '*' - content-type: - - application/json;charset=utf-8 - date: - - Sat, 05 May 2012 18:45:44 GMT - server: - - Apache/2.2.16 (Ubuntu) - transfer-encoding: - - chunked - connection: - - keep-alive - body: ! '{"status":"success","count":1,"type":"Account","results":[{"accountId":"956c50b8-12fe-4b9e-b407-7895795879bf","providerAccountId":null,"providerOrgId":"403b8a29-71aa-481a-9b5f-72fb9416f8ab","accountName":"Ruby - Accounts Test","customerOrgId":null,"customerOrgName":null,"status":"ACTIVE","properties":null,"tariffs":null}]}' - http_version: '1.1' -- !ruby/struct:VCR::HTTPInteraction - request: !ruby/struct:VCR::Request - method: :delete - uri: http://api.genability.com:80/rest/beta/accounts/956c50b8-12fe-4b9e-b407-7895795879bf?appId=ValidAppID&appKey=ValidAppKey - body: - headers: - accept: - - application/json; charset=utf-8 - user-agent: - - Genability API Ruby Gem - response: !ruby/struct:VCR::Response - status: !ruby/struct:VCR::ResponseStatus - code: 200 - message: OK - headers: - access-control-allow-origin: - - ! '*' - content-type: - - application/json;charset=utf-8 - date: - - Sat, 05 May 2012 18:45:44 GMT - server: - - Apache/2.2.16 (Ubuntu) - transfer-encoding: - - chunked - connection: - - keep-alive - body: ! '{"status":"success","count":0,"type":"Account","results":null}' - http_version: '1.1' diff --git a/spec/cassettes/usage_profile.yml b/spec/cassettes/usage_profile.yml deleted file mode 100644 index bb8d8a1..0000000 --- a/spec/cassettes/usage_profile.yml +++ /dev/null @@ -1,124 +0,0 @@ ---- -- !ruby/struct:VCR::HTTPInteraction - request: !ruby/struct:VCR::Request - method: :post - uri: http://api.genability.com:80/rest/beta/accounts?appId=ValidAppID&appKey=ValidAppKey - body: ! '{"accountName":"Ruby Usage Profile Test"}' - headers: - accept: - - application/json; charset=utf-8 - user-agent: - - Genability API Ruby Gem - content-type: - - application/json;charset=utf-8 - response: !ruby/struct:VCR::Response - status: !ruby/struct:VCR::ResponseStatus - code: 200 - message: OK - headers: - access-control-allow-origin: - - ! '*' - content-type: - - application/json;charset=utf-8 - date: - - Sat, 05 May 2012 18:43:33 GMT - server: - - Apache/2.2.16 (Ubuntu) - transfer-encoding: - - chunked - connection: - - keep-alive - body: ! '{"status":"success","count":1,"type":"Account","results":[{"accountId":"a8608861-e07a-472e-8bcc-b4f436879593","providerAccountId":null,"providerOrgId":"403b8a29-71aa-481a-9b5f-72fb9416f8ab","accountName":"Ruby - Usage Profile Test","customerOrgId":null,"customerOrgName":null,"status":"ACTIVE","properties":null,"tariffs":null}]}' - http_version: '1.1' -- !ruby/struct:VCR::HTTPInteraction - request: !ruby/struct:VCR::Request - method: :post - uri: http://api.genability.com:80/rest/beta/usage/profiles?appId=ValidAppID&appKey=ValidAppKey - body: ! '{"accountId":"a8608861-e07a-472e-8bcc-b4f436879593"}' - headers: - accept: - - application/json; charset=utf-8 - user-agent: - - Genability API Ruby Gem - content-type: - - application/json;charset=utf-8 - response: !ruby/struct:VCR::Response - status: !ruby/struct:VCR::ResponseStatus - code: 200 - message: OK - headers: - access-control-allow-origin: - - ! '*' - content-type: - - application/json;charset=utf-8 - date: - - Sat, 05 May 2012 18:43:33 GMT - server: - - Apache/2.2.16 (Ubuntu) - content-length: - - '186' - connection: - - keep-alive - body: ! '{"status":"success","count":1,"type":"UsageProfile","results":[{"profileId":"889ade5c-6e89-44f6-a606-46728ec75862","accountId":"a8608861-e07a-472e-8bcc-b4f436879593","dataStatus":null}]}' - http_version: '1.1' -- !ruby/struct:VCR::HTTPInteraction - request: !ruby/struct:VCR::Request - method: :get - uri: http://api.genability.com:80/rest/beta/usage/profiles/889ade5c-6e89-44f6-a606-46728ec75862?appId=ValidAppID&appKey=ValidAppKey - body: - headers: - accept: - - application/json; charset=utf-8 - user-agent: - - Genability API Ruby Gem - accept-encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - response: !ruby/struct:VCR::Response - status: !ruby/struct:VCR::ResponseStatus - code: 200 - message: OK - headers: - access-control-allow-origin: - - ! '*' - content-type: - - application/json;charset=utf-8 - date: - - Sat, 05 May 2012 18:43:33 GMT - server: - - Apache/2.2.16 (Ubuntu) - transfer-encoding: - - chunked - connection: - - keep-alive - body: ! '{"status":"success","count":1,"type":"UsageProfile","results":[{"profileId":"889ade5c-6e89-44f6-a606-46728ec75862","accountId":"a8608861-e07a-472e-8bcc-b4f436879593","dataStatus":null}]}' - http_version: '1.1' -- !ruby/struct:VCR::HTTPInteraction - request: !ruby/struct:VCR::Request - method: :delete - uri: http://api.genability.com:80/rest/beta/accounts/a8608861-e07a-472e-8bcc-b4f436879593?appId=ValidAppID&appKey=ValidAppKey - body: - headers: - accept: - - application/json; charset=utf-8 - user-agent: - - Genability API Ruby Gem - response: !ruby/struct:VCR::Response - status: !ruby/struct:VCR::ResponseStatus - code: 200 - message: OK - headers: - access-control-allow-origin: - - ! '*' - content-type: - - application/json;charset=utf-8 - date: - - Sat, 05 May 2012 18:43:34 GMT - server: - - Apache/2.2.16 (Ubuntu) - transfer-encoding: - - chunked - connection: - - keep-alive - body: ! '{"status":"success","count":0,"type":"Account","results":null}' - http_version: '1.1' diff --git a/spec/cassettes/usage_profile_add.yml b/spec/cassettes/usage_profile_add.yml deleted file mode 100644 index f630ea3..0000000 --- a/spec/cassettes/usage_profile_add.yml +++ /dev/null @@ -1,93 +0,0 @@ ---- -- !ruby/struct:VCR::HTTPInteraction - request: !ruby/struct:VCR::Request - method: :post - uri: http://api.genability.com:80/rest/beta/accounts?appId=ValidAppID&appKey=ValidAppKey - body: ! '{"accountName":"Ruby Add Usage Profile Test"}' - headers: - accept: - - application/json; charset=utf-8 - user-agent: - - Genability API Ruby Gem - content-type: - - application/json;charset=utf-8 - response: !ruby/struct:VCR::Response - status: !ruby/struct:VCR::ResponseStatus - code: 200 - message: OK - headers: - access-control-allow-origin: - - ! '*' - content-type: - - application/json;charset=utf-8 - date: - - Sat, 05 May 2012 18:43:31 GMT - server: - - Apache/2.2.16 (Ubuntu) - transfer-encoding: - - chunked - connection: - - keep-alive - body: ! '{"status":"success","count":1,"type":"Account","results":[{"accountId":"18a6eb5f-94be-422e-9003-4cdf3adc7c6f","providerAccountId":null,"providerOrgId":"403b8a29-71aa-481a-9b5f-72fb9416f8ab","accountName":"Ruby - Add Usage Profile Test","customerOrgId":null,"customerOrgName":null,"status":"ACTIVE","properties":null,"tariffs":null}]}' - http_version: '1.1' -- !ruby/struct:VCR::HTTPInteraction - request: !ruby/struct:VCR::Request - method: :post - uri: http://api.genability.com:80/rest/beta/usage/profiles?appId=ValidAppID&appKey=ValidAppKey - body: ! '{"accountId":"18a6eb5f-94be-422e-9003-4cdf3adc7c6f"}' - headers: - accept: - - application/json; charset=utf-8 - user-agent: - - Genability API Ruby Gem - content-type: - - application/json;charset=utf-8 - response: !ruby/struct:VCR::Response - status: !ruby/struct:VCR::ResponseStatus - code: 200 - message: OK - headers: - access-control-allow-origin: - - ! '*' - content-type: - - application/json;charset=utf-8 - date: - - Sat, 05 May 2012 18:43:31 GMT - server: - - Apache/2.2.16 (Ubuntu) - transfer-encoding: - - chunked - connection: - - keep-alive - body: ! '{"status":"success","count":1,"type":"UsageProfile","results":[{"profileId":"d762b1bd-fb2e-4510-b8ca-18453d5f135b","accountId":"18a6eb5f-94be-422e-9003-4cdf3adc7c6f","dataStatus":null}]}' - http_version: '1.1' -- !ruby/struct:VCR::HTTPInteraction - request: !ruby/struct:VCR::Request - method: :delete - uri: http://api.genability.com:80/rest/beta/accounts/18a6eb5f-94be-422e-9003-4cdf3adc7c6f?appId=ValidAppID&appKey=ValidAppKey - body: - headers: - accept: - - application/json; charset=utf-8 - user-agent: - - Genability API Ruby Gem - response: !ruby/struct:VCR::Response - status: !ruby/struct:VCR::ResponseStatus - code: 200 - message: OK - headers: - access-control-allow-origin: - - ! '*' - content-type: - - application/json;charset=utf-8 - date: - - Sat, 05 May 2012 18:43:32 GMT - server: - - Apache/2.2.16 (Ubuntu) - transfer-encoding: - - chunked - connection: - - keep-alive - body: ! '{"status":"success","count":0,"type":"Account","results":null}' - http_version: '1.1' diff --git a/spec/cassettes/usage_profiles.yml b/spec/cassettes/usage_profiles.yml deleted file mode 100644 index 22e75d7..0000000 --- a/spec/cassettes/usage_profiles.yml +++ /dev/null @@ -1,124 +0,0 @@ ---- -- !ruby/struct:VCR::HTTPInteraction - request: !ruby/struct:VCR::Request - method: :post - uri: http://api.genability.com:80/rest/beta/accounts?appId=ValidAppID&appKey=ValidAppKey - body: ! '{"accountName":"Ruby Usage Profiles Test"}' - headers: - accept: - - application/json; charset=utf-8 - user-agent: - - Genability API Ruby Gem - content-type: - - application/json;charset=utf-8 - response: !ruby/struct:VCR::Response - status: !ruby/struct:VCR::ResponseStatus - code: 200 - message: OK - headers: - access-control-allow-origin: - - ! '*' - content-type: - - application/json;charset=utf-8 - date: - - Sat, 05 May 2012 18:43:32 GMT - server: - - Apache/2.2.16 (Ubuntu) - transfer-encoding: - - chunked - connection: - - keep-alive - body: ! '{"status":"success","count":1,"type":"Account","results":[{"accountId":"8c722ec2-980c-46ac-a811-904ba6abf5b8","providerAccountId":null,"providerOrgId":"403b8a29-71aa-481a-9b5f-72fb9416f8ab","accountName":"Ruby - Usage Profiles Test","customerOrgId":null,"customerOrgName":null,"status":"ACTIVE","properties":null,"tariffs":null}]}' - http_version: '1.1' -- !ruby/struct:VCR::HTTPInteraction - request: !ruby/struct:VCR::Request - method: :post - uri: http://api.genability.com:80/rest/beta/usage/profiles?appId=ValidAppID&appKey=ValidAppKey - body: ! '{"accountId":"8c722ec2-980c-46ac-a811-904ba6abf5b8"}' - headers: - accept: - - application/json; charset=utf-8 - user-agent: - - Genability API Ruby Gem - content-type: - - application/json;charset=utf-8 - response: !ruby/struct:VCR::Response - status: !ruby/struct:VCR::ResponseStatus - code: 200 - message: OK - headers: - access-control-allow-origin: - - ! '*' - content-type: - - application/json;charset=utf-8 - date: - - Sat, 05 May 2012 18:43:32 GMT - server: - - Apache/2.2.16 (Ubuntu) - transfer-encoding: - - chunked - connection: - - keep-alive - body: ! '{"status":"success","count":1,"type":"UsageProfile","results":[{"profileId":"083a4668-2b2d-443b-b871-7c08b1bcd190","accountId":"8c722ec2-980c-46ac-a811-904ba6abf5b8","dataStatus":null}]}' - http_version: '1.1' -- !ruby/struct:VCR::HTTPInteraction - request: !ruby/struct:VCR::Request - method: :get - uri: http://api.genability.com:80/rest/beta/usage/profiles?accountId=8c722ec2-980c-46ac-a811-904ba6abf5b8&appId=ValidAppID&appKey=ValidAppKey - body: - headers: - accept: - - application/json; charset=utf-8 - user-agent: - - Genability API Ruby Gem - accept-encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - response: !ruby/struct:VCR::Response - status: !ruby/struct:VCR::ResponseStatus - code: 200 - message: OK - headers: - access-control-allow-origin: - - ! '*' - content-type: - - application/json;charset=utf-8 - date: - - Sat, 05 May 2012 18:43:32 GMT - server: - - Apache/2.2.16 (Ubuntu) - transfer-encoding: - - chunked - connection: - - keep-alive - body: ! '{"status":"success","count":1,"type":"UsageProfile","results":[{"profileId":"083a4668-2b2d-443b-b871-7c08b1bcd190","accountId":"8c722ec2-980c-46ac-a811-904ba6abf5b8","dataStatus":null}]}' - http_version: '1.1' -- !ruby/struct:VCR::HTTPInteraction - request: !ruby/struct:VCR::Request - method: :delete - uri: http://api.genability.com:80/rest/beta/accounts/8c722ec2-980c-46ac-a811-904ba6abf5b8?appId=ValidAppID&appKey=ValidAppKey - body: - headers: - accept: - - application/json; charset=utf-8 - user-agent: - - Genability API Ruby Gem - response: !ruby/struct:VCR::Response - status: !ruby/struct:VCR::ResponseStatus - code: 200 - message: OK - headers: - access-control-allow-origin: - - ! '*' - content-type: - - application/json;charset=utf-8 - date: - - Sat, 05 May 2012 18:43:33 GMT - server: - - Apache/2.2.16 (Ubuntu) - transfer-encoding: - - chunked - connection: - - keep-alive - body: ! '{"status":"success","count":0,"type":"Account","results":null}' - http_version: '1.1' diff --git a/spec/client/account_calculation_spec.rb b/spec/client/account_calculation_spec.rb new file mode 100644 index 0000000..88c1512 --- /dev/null +++ b/spec/client/account_calculation_spec.rb @@ -0,0 +1,108 @@ +require File.expand_path('../../spec_helper', __FILE__) + +describe Genability::Client, vcr: true do + + Genability::Configuration::VALID_FORMATS.each do |format| + + context "account_calculation.#{format}" do + + before(:all) do + @options = {:format => format}.merge(configuration_defaults) + @client = Genability::Client.new(@options) + end + + context ".account_calculation" do + + it "calculates the total cost" do + account = build_account(@client) + calc = @client.account_calculation(account.account_id, + :from_date_time => "2016-01-01T00:00:00-0800", + :to_date_time => "2016-01-01T01:00:00-0800", + :master_tariff_id => 512, + :property_inputs => [ + { + :key_name => :consumption, + :from_date_time => "2016-01-01T00:00:00-0800", + :to_date_time => "2016-01-01T00:15:00-0800", + :data_value => 2.2, + :unit => "kWh" + }, + { + :key_name => :consumption, + :from_date_time => "2016-01-01T00:15:00-0800", + :to_date_time => "2016-01-01T00:30:00-0800", + :data_value => 1.3, + :unit => "kWh" + }, + { + :key_name => :consumption, + :from_date_time => "2016-01-01T00:30:00-0800", + :to_date_time => "2016-01-01T00:45:00-0800", + :data_value => 0.6, + :unit => "kWh" + }, + { + :key_name => :consumption, + :from_date_time => "2016-01-01T00:45:00-0800", + :to_date_time => "2016-01-01T01:00:00-0800", + :data_value => 2.1, + :unit => "kWh" + }, + { + :key_name => :city_limits, + :from_date_time => "2016-01-01T00:00:00-0800", + :to_date_time => "2016-01-01T01:00:00-0800", + :data_value => "Inside" + }, + { + :key_name => :connection_type, + :from_date_time => "2016-01-01T00:00:00-0800", + :to_date_time => "2016-01-01T01:00:00-0800", + :data_value => "Primary" + } + ], + :rate_inputs => [ + { + :rate_group_name => "Taxes", + :rate_name => "Utility Users Tax", + :from_date_time => "2016-01-01", + :to_date_time => "2016-01-02", + :charge_type => :tax, + :rate_bands => [ + { + :rate_amount => 0.075, + :rate_unit => :percentage + } + ] + } + ] + ) + + calc.tariff_name.should == "Residential" + calc.items.first.rate_name.should == "Basic Service Charge" + end + + it "does not allow invalid tariff inputs" do + lambda do + account = build_account(@client) + @client.account_calculation(account.account_id, + :from_date_time => Time.parse("2016-01-01T00:00:00-0800"), + :to_date_time => Time.parse("2016-01-01T01:00:00-0800"), + :property_inputs => "InvalidTariffInput") + end.should raise_error(Genability::InvalidInput) + end + + end + + end + + end + + def build_account(client) + account = @client.upsert_account( + :provider_account_id => 'ruby_test_account', + :address => { :address_string => "94703" } + ) + end +end + diff --git a/spec/client/account_spec.rb b/spec/client/account_spec.rb index 059fb38..3ce2ec6 100644 --- a/spec/client/account_spec.rb +++ b/spec/client/account_spec.rb @@ -1,10 +1,10 @@ require File.expand_path('../../spec_helper', __FILE__) -describe Genability::Client do +describe Genability::Client, vcr: true do Genability::Configuration::VALID_FORMATS.each do |format| - context ".new(:format => '#{format}')" do + context "account.#{format}" do before(:all) do @options = {:format => format}.merge(configuration_defaults) @@ -13,9 +13,7 @@ context ".add_account" do - use_vcr_cassette "account_add" - - it "should create a new account" do + it "creates a new account" do @account = @client.add_account(:account_name => 'Ruby Add Account Test') @account.account_name.should == 'Ruby Add Account Test' @client.delete_account(@account.account_id) @@ -23,11 +21,22 @@ end - context ".delete_account" do + context ".upsert_account" do + + it "upserts an account" do + @account = @client.upsert_account( + :provider_account_id => 'upsert_account_test', + :account_name => 'Ruby Upsert Account Test') + @account.provider_account_id.should == 'upsert_account_test' + @account.account_name.should == 'Ruby Upsert Account Test' + @client.delete_account(@account.account_id) + end + + end - use_vcr_cassette "account_delete" + context ".delete_account" do - it "should delete an account" do + it "deletes an account" do @account = @client.add_account(:account_name => 'Ruby Delete Account Test') @client.delete_account(@account.account_id).status.should == 'success' end @@ -36,9 +45,7 @@ context ".accounts" do - use_vcr_cassette "accounts" - - it "should return a list of accounts" do + it "returns a list of accounts" do @account = @client.add_account(:account_name => 'Ruby Accounts Test') @account.account_name.should == 'Ruby Accounts Test' @client.accounts(:search => 'Ruby Accounts Test').count.should == 1 @@ -49,9 +56,7 @@ context ".account" do - use_vcr_cassette "account" - - it "should return a an account" do + it "returns an account" do @account = @client.add_account(:account_name => 'Ruby Account Test') @client.account(@account.account_id).account_name.should == 'Ruby Account Test' @client.delete_account(@account.account_id) @@ -59,6 +64,19 @@ end + context ".provider_account" do + + it "returns an account" do + @account = @client.upsert_account( + :provider_account_id => 'provider_account_test', + :account_name => 'Ruby Provider Account Test') + @found_account = @client.provider_account(@account.provider_account_id) + @found_account.account_name.should == 'Ruby Provider Account Test' + @client.delete_account(@account.account_id) + end + + end + end end end diff --git a/spec/client/account_tariff_spec.rb b/spec/client/account_tariff_spec.rb new file mode 100644 index 0000000..08abe4d --- /dev/null +++ b/spec/client/account_tariff_spec.rb @@ -0,0 +1,83 @@ +require File.expand_path('../../spec_helper', __FILE__) + +describe Genability::Client, vcr: true do + + Genability::Configuration::VALID_FORMATS.each do |format| + + context "account_tariff.#{format}" do + + before(:all) do + @options = {:format => format}.merge(configuration_defaults) + @client = Genability::Client.new(@options) + end + + context ".add_account_tariff" do + + it "adds a new account tariff" do + @account = @client.upsert_account(:provider_account_id => 'account_test') + @account_tariff = @client.add_account_tariff(@account.account_id, :master_tariff_id => 522) + @account_tariff.master_tariff_id.should == 522 + @client.delete_account(@account.account_id) + end + + end + + context ".upsert_account_tariff" do + + it "adds a new account tariff" do + @account = @client.upsert_account(:provider_account_id => 'account_test') + @account_tariff = @client.upsert_account_tariff(@account.account_id, :master_tariff_id => 522) + @account_tariff.master_tariff_id.should == 522 + @client.delete_account(@account.account_id) + end + + end + + context ".delete_account_tariff" do + + it "deletes an account" do + @account = @client.upsert_account(:provider_account_id => 'account_test') + @account_tariff = @client.upsert_account_tariff(@account.account_id, :master_tariff_id => 522) + @client.delete_account_tariff(@account.account_id).status.should == 'success' + @client.delete_account(@account.account_id) + end + + end + + context ".add_provider_account_tariff" do + + it "adds a new account tariff" do + @account = @client.upsert_account(:provider_account_id => 'account_test') + @account_tariff = @client.add_provider_account_tariff(@account.provider_account_id, :master_tariff_id => 522) + @account_tariff.master_tariff_id.should == 522 + @client.delete_account(@account.account_id) + end + + end + + context ".upsert_provider_account_tariff" do + + it "adds a new account tariff" do + @account = @client.upsert_account(:provider_account_id => 'account_test') + @account_tariff = @client.upsert_provider_account_tariff(@account.provider_account_id, :master_tariff_id => 522) + @account_tariff.master_tariff_id.should == 522 + @client.delete_account(@account.account_id) + end + + end + + context ".delete_provider_account_tariff" do + + it "deletes an account" do + @account = @client.upsert_account(:provider_account_id => 'account_test') + @account_tariff = @client.upsert_account_tariff(@account.account_id, :master_tariff_id => 522) + @client.delete_provider_account_tariff(@account.provider_account_id).status.should == 'success' + @client.delete_account(@account.account_id) + end + + end + + end + end +end + diff --git a/spec/client/calculate_spec.rb b/spec/client/calculate_spec.rb index cc00a11..9870e56 100644 --- a/spec/client/calculate_spec.rb +++ b/spec/client/calculate_spec.rb @@ -1,61 +1,106 @@ require File.expand_path('../../spec_helper', __FILE__) -describe Genability::Client do +describe Genability::Client, vcr: true do Genability::Configuration::VALID_FORMATS.each do |format| - context ".new(:format => '#{format}')" do + context "calculate.#{format}" do before(:all) do @options = {:format => format}.merge(configuration_defaults) @client = Genability::Client.new(@options) - @master_tariff_id = 512 - @from = "Monday, September 1st, 2011" - @to = "Monday, September 10th, 2011" - @metadata_options = { - "connectionType" => "Primary Connection", - "cityLimits" => "Inside" - } end context ".calculate_metadata" do - use_vcr_cassette "calculate" - - it "should return the inputs required to use the calculate method" do - metadata = @client.calculate_metadata( - @master_tariff_id, @from, @to, { :additional_values => @metadata_options } - ).first - metadata.unit.should == "kwh" + it "returns the inputs required to use the calculate method" do + metadata = @client.calculate_metadata(512, + :from_date_time => Time.parse("2016-01-01T00:00:00-0500"), + :to_date_time => Time.parse("2016-01-02T00:00:00-0500"), + "connectionType" => "Primary Connection", + "cityLimits" => "Inside" + ) + metadata.count.should == 3 + metadata.find { |m| m.key_name == "consumption" }.unit.should == "kWh" end end context ".calculate" do - use_vcr_cassette "calculate" - - it "should calculate the total cost" do - # First, get the Calculate Input metadata - metadata = @client.calculate_metadata( - @master_tariff_id, @from, @to, { :additional_values => @metadata_options } - ) - # Then run the calculation with the input metadata - calc = @client.calculate( - @master_tariff_id, @from, @to, metadata, {} - ) - calc.tariff_name.should == "Residential Service" + it "calculates the total cost" do + calc = @client.calculate(512, + :from_date_time => Time.parse("2016-01-01T00:00:00-0800"), + :to_date_time => Time.parse("2016-01-01T01:00:00-0800"), + :tariff_inputs => [ + { + :key_name => :consumption, + :from_date_time => "2016-01-01T00:00:00-0800", + :to_date_time => "2016-01-01T00:15:00-0800", + :data_value => 2.2, + :unit => "kWh" + }, + { + :key_name => :consumption, + :from_date_time => "2016-01-01T00:15:00-0800", + :to_date_time => "2016-01-01T00:30:00-0800", + :data_value => 1.3, + :unit => "kWh" + }, + { + :key_name => :consumption, + :from_date_time => "2016-01-01T00:30:00-0800", + :to_date_time => "2016-01-01T00:45:00-0800", + :data_value => 0.6, + :unit => "kWh" + }, + { + :key_name => :consumption, + :from_date_time => "2016-01-01T00:45:00-0800", + :to_date_time => "2016-01-01T01:00:00-0800", + :data_value => 2.1, + :unit => "kWh" + }, + { + :key_name => :city_limits, + :from_date_time => "2016-01-01T00:00:00-0800", + :to_date_time => "2016-01-01T01:00:00-0800", + :data_value => "Inside" + }, + { + :key_name => :connection_type, + :from_date_time => "2016-01-01T00:00:00-0800", + :to_date_time => "2016-01-01T01:00:00-0800", + :data_value => "Primary" + } + ], + :rate_inputs => [ + { + :rate_group_name => "Taxes", + :rate_name => "Utility Users Tax", + :from_date_time => "2016-01-01", + :to_date_time => "2016-01-02", + :charge_type => :tax, + :rate_bands => [ + { + :rate_amount => 0.075, + :rate_unit => :percentage + } + ] + } + ] + ) + + calc.tariff_name.should == "Residential" calc.items.first.rate_name.should == "Basic Service Charge" end - it "should not allow invalid tariff inputs" do + it "does not allow invalid tariff inputs" do lambda do - @client.calculate( - 512, - "Monday, September 1st, 2011", - "Monday, September 10th, 2011", - "InvalidTariffInput" - ) + @client.calculate(512, + :from_date_time => Time.parse("2016-01-01T00:00:00-0800"), + :to_date_time => Time.parse("2016-01-01T01:00:00-0800"), + :tariff_inputs => "InvalidTariffInput") end.should raise_error(Genability::InvalidInput) end @@ -64,5 +109,12 @@ end end + + def build_account(client) + account = @client.upsert_account( + :provider_account_id => 'ruby_test_account', + :address => { :address_string => "94703" } + ) + end end diff --git a/spec/client/incentive_spec.rb b/spec/client/incentive_spec.rb new file mode 100644 index 0000000..a323253 --- /dev/null +++ b/spec/client/incentive_spec.rb @@ -0,0 +1,76 @@ +require File.expand_path('../../spec_helper', __FILE__) + +describe Genability::Client, vcr: true do + + Genability::Configuration::VALID_FORMATS.each do |format| + + context "incentive.#{format}" do + + before(:all) do + @options = {:format => format}.merge(configuration_defaults) + @client = Genability::Client.new(@options) + end + + context ".incentives" do + + it "should return an array of incentives" do + incentives = @client.incentives + incentives.should be_an Array + end + + it "should allow searches by project_type" do + @client.incentives(:project_type => "solar_pv").each do |incentive| + incentive.project_type.should == "solarPv" + end + end + + it "should allow searches by incentive_type" do + @client.incentives(:incentive_type => "rebate").each do |incentive| + incentive.incentive_type.should == "rebate" + end + end + + it "should allow searches by customer_classes" do + @client.incentives(:customer_classes => 'residential').each do |incentive| + incentive.customer_class.should =~ /RESIDENTIAL/ + end + end + + end + + context ".incentive" do + + it "should return an incentive" do + incentive = @client.incentive(3163700) + incentive.should be_a Hashie::Mash + incentive.master_incentive_id.should == 3163700 + end + + it "should return an incentive with applicabilities" do + incentive = @client.incentive(3163700, { :populate_applicabilities => 'true' }) + incentive.should be_a Hashie::Mash + incentive.applicabilities.count.should > 0 + end + + end + + context ".applicabilities" do + + it "should return an array of applicabilities" do + applicabilities = @client.applicabilities + applicabilities.should be_an Array + end + + it "should return valid applicabilities " do + @client.applicabilities(:project_type => "solar_pv").each do |applicability| + applicability.applicability_key.should_not == nil + end + end + + end + + end + + end +end + diff --git a/spec/client/savings_analysis_spec.rb b/spec/client/savings_analysis_spec.rb new file mode 100644 index 0000000..5f1bb32 --- /dev/null +++ b/spec/client/savings_analysis_spec.rb @@ -0,0 +1,110 @@ +require File.expand_path('../../spec_helper', __FILE__) + +describe Genability::Client, vcr: true do + + Genability::Configuration::VALID_FORMATS.each do |format| + + context "analysis.#{format}" do + + before(:all) do + @options = {:format => format}.merge(configuration_defaults) + @client = Genability::Client.new(@options) + end + + context ".savings_analysis" do + + it "runs a savings analysis" do + account = build_account(@client) + usage_profile = build_usage_profile(@client, account) + solar_profile = build_solar_profile(@client, account) + analysis = @client.analysis({ + :account_id => account.account_id, + :from_date_time => "2016-01-01", + :use_intelligent_baselining => true, + :populate_costs => true, + :fields => :ext, + :property_inputs => [ + { + :scenarios => "before", + :key_name => :master_tariff_id, + :data_value => 522 + }, + { + :scenarios => "after", + :key_name => :master_tariff_id, + :data_value => 525 + }, + { + :scenarios => "before,after", + :key_name => :provider_profile_id, + :data_value => usage_profile.provider_profile_id + }, + { + :scenarios => "solar,after", + :key_name => :provider_profile_id, + :data_value => solar_profile.provider_profile_id + } + ], + :rate_inputs => [{ + :scenarios => "solar", + :charge_type => :fixed_price, + :rate_bands => [{ + :rate_amount => 100.00 + }] + }] + }) + analysis.summary.net_avoided_cost.should > 0 + @client.delete_profile(usage_profile.profile_id) + @client.delete_profile(solar_profile.profile_id) + end + + end + + end + end + + def build_account(client) + account = @client.upsert_account( + :provider_account_id => 'ruby_test_account', + :address => { :address_string => "94703" } + ) + end + + def build_usage_profile(client, account) + client.upsert_profile( + :account_id => account.account_id, + :provider_profile_id => 'test_usage_profile', + :profile_name => 'Electricity Usage', + :service_types => :electricity, + :source_id => :reading_entry, + :is_default => true, + :reading_data => [ + { + :from => "2016-01-01T00:00:00.000-0800", + :to => "2016-02-01T00:00:00.000-0800", + :quantity_unit => "kWh", + :quantity_value => 1000 + } + ] + ) + end + + def build_solar_profile(client, account) + client.upsert_profile( + :account_id => account.account_id, + :provider_profile_id => 'test_solar_profile', + :profile_name => 'Solar Production', + :service_types => :solar_pv, + :source_id => :reading_entry, + :reading_data => [ + { + :from => "2016-01-01T00:00:00.000-0800", + :to => "2016-02-01T00:00:00.000-0800", + :quantity_unit => "kWh", + :quantity_value => 800 + } + ] + ) + end +end + diff --git a/spec/client/tariff_spec.rb b/spec/client/tariff_spec.rb index 75cc7d4..050c3d8 100644 --- a/spec/client/tariff_spec.rb +++ b/spec/client/tariff_spec.rb @@ -1,10 +1,10 @@ require File.expand_path('../../spec_helper', __FILE__) -describe Genability::Client do +describe Genability::Client, vcr: true do Genability::Configuration::VALID_FORMATS.each do |format| - context ".new(:format => '#{format}')" do + context "tariff.#{format}" do before(:all) do @options = {:format => format}.merge(configuration_defaults) @@ -13,27 +13,24 @@ context ".tariffs" do - use_vcr_cassette "tariffs" - it "should return an array of tariffs" do tariffs = @client.tariffs tariffs.should be_an Array - tariffs.first.tariff_id.should == 447 end - # this example also demonstrates searching within results it "should allow searches by lse_id" do - tariffs = @client.tariffs(:lse_id => 734) - tariffs.select{|x| x['tariffCode'] == "E-7"}.first.tariff_code.should == "E-7" + @client.tariffs(:lse_id => 734).each do |tariff| + tariff.lse_id.should == 734 + end end - it "should accept a string for customerClasses and tariffTypes parameters" do + it "should accept a string for customerClass" do @client.tariffs(:customer_classes => 'residential').each do |tariff| tariff.customer_class.should =~ /RESIDENTIAL/ end end - it "should accept an array for customerClasses and tariffTypes parameters" do + it "should accept an array for tariffTypes" do @client.tariffs(:tariff_types => ['default', 'alternative']).each do |tariff| tariff.tariff_type.should =~ /(DEFAULT)|(ALTERNATIVE)/ end @@ -43,8 +40,6 @@ context ".tariff" do - use_vcr_cassette "tariff" - it "should return a tariff" do tariff = @client.tariff(512) tariff.should be_a Hashie::Mash @@ -52,11 +47,10 @@ end it "should return a tariff with rates and properties" do - tariff = @client.tariff(512, { :populate_rates => 'ture', :populate_properties => 'true' }) + tariff = @client.tariff(512, { :populate_rates => 'true', :populate_properties => 'true' }) tariff.should be_a Hashie::Mash tariff.properties.count.should > 0 tariff.rates.count.should > 0 - tariff.master_tariff_id.should == 512 end end diff --git a/spec/client/territory_spec.rb b/spec/client/territory_spec.rb index d75faf9..4fc2a40 100644 --- a/spec/client/territory_spec.rb +++ b/spec/client/territory_spec.rb @@ -1,10 +1,10 @@ require File.expand_path('../../spec_helper', __FILE__) -describe Genability::Client do +describe Genability::Client, vcr: true do Genability::Configuration::VALID_FORMATS.each do |format| - context ".new(:format => '#{format}')" do + context "territory.#{format}" do before(:all) do @options = {:format => format}.merge(configuration_defaults) @@ -13,19 +13,21 @@ context ".territories" do - use_vcr_cassette "territories" - it "should return an array of territories" do territories = @client.territories(:lse_id => 734) territories.should be_an Array - territories.first.territory_id.should == 807 + end + + it "should allow searches by lse_id" do + @client.territories(:lse_id => 734).each do |territory| + territory.lse_id.should == 734 + end end it "should get the territory ID from a zipcode" do territories = @client.territories( :lse_id => 734, - :contains_item_type => 'ZIPCODE', - :contains_item_value => 94115, + :zip_code => 94115, :master_tariff_id => 522) territories.first.territory_id.should == 3538 end @@ -34,8 +36,6 @@ context ".territory" do - use_vcr_cassette "territory" - it "should return a territory" do territory = @client.territory(3539) territory.should be_a Hashie::Mash diff --git a/spec/client/usage_profile_spec.rb b/spec/client/usage_profile_spec.rb index c17eae7..cc695b0 100644 --- a/spec/client/usage_profile_spec.rb +++ b/spec/client/usage_profile_spec.rb @@ -1,119 +1,207 @@ require File.expand_path('../../spec_helper', __FILE__) -describe Genability::Client do +describe Genability::Client, vcr: true do Genability::Configuration::VALID_FORMATS.each do |format| - context ".new(:format => '#{format}')" do + context "profile.#{format}" do before(:all) do @options = {:format => format}.merge(configuration_defaults) @client = Genability::Client.new(@options) end - context ".add_usage_profile" do + context ".add_profile" do - use_vcr_cassette "usage_profile_add" - - it "should create a new account" do - @account = @client.add_account(:account_name => 'Ruby Add Usage Profile Test') - @usage_profile = @client.add_usage_profile(:account_id => @account.account_id) - @usage_profile.account_id.should == @account.account_id - @client.delete_account(@account.account_id) + it "creates a new profile" do + @account = @client.upsert_account(:provider_account_id => 'account_test') + @profile = @client.add_profile(:account_id => @account.account_id) + @profile.account_id.should == @account.account_id + @client.delete_profile(@profile.profile_id) end end - context ".usage_profiles" do - - use_vcr_cassette "usage_profiles" + context ".upsert_profile" do - it "should list usage profiles" do - @account = @client.add_account(:account_name => 'Ruby Usage Profiles Test') - @usage_profile = @client.add_usage_profile(:account_id => @account.account_id) - @client.usage_profiles(:account_id => @account.account_id).count.should == 1 - @client.delete_account(@account.account_id) + it "upserts a profile" do + @account = @client.upsert_account(:provider_account_id => 'ruby_test_account') + @profile = @client.upsert_profile( + :account_id => @account.account_id, + :provider_profile_id => 'upsert_profile_test') + @profile.account_id.should == @account.account_id + @profile.provider_profile_id.should == 'upsert_profile_test' + @client.delete_profile(@profile.profile_id) end end - context ".usage_profile" do + context ".delete_profile" do + + it "deletes a profile" do + @account = @client.upsert_account(:provider_account_id => 'ruby_test_account') + @profile = @client.add_profile(:account_id => @account.account_id) + @client.delete_profile(@profile.profile_id).status.should == 'success' + end + + end - use_vcr_cassette "usage_profile" + context ".delete_provider_profile" do - it "should return a usage profile" do - @account = @client.add_account(:account_name => 'Ruby Usage Profile Test') - @usage_profile = @client.add_usage_profile(:account_id => @account.account_id) - @client.usage_profile(@usage_profile.profile_id).profile_id.should == @usage_profile.profile_id - @client.delete_account(@account.account_id) + it "deletes a provider profile" do + @account = @client.upsert_account(:provider_account_id => 'ruby_test_account') + @profile = @client.upsert_profile( + :account_id => @account.account_id, + :provider_profile_id => 'delete_profile_test') + @result = @client.delete_provider_profile(@profile.provider_profile_id) + @result.status.should == 'success' end end - context ".add_readings" do - - use_vcr_cassette "readings_add" - - it "should return a usage profile" do - @account = @client.add_account(:account_name => 'Ruby Add Readings Test') - @usage_profile = @client.add_usage_profile(:account_id => @account.account_id) - @readings = @client.add_readings(@usage_profile.profile_id, :readings => - [ - { - :from => "2011-08-01T22:30:00.000-0700", - :to => "2011-08-01T22:45:00.000-0700", - :quantity_unit => "kWh", - :quantity_value => 220 - } - ] - ) - @readings.status.should == "success" - @client.usage_profile(@usage_profile.profile_id). - reading_data_summaries.count.should == 1 - @client.delete_account(@account.account_id) + context ".profiles" do + + it "lists profiles" do + @account = @client.upsert_account(:provider_account_id => 'ruby_test_account') + @profile = @client.add_profile(:account_id => @account.account_id) + @client.profiles(:account_id => @account.account_id).count.should >= 1 + @client.delete_profile(@profile.profile_id) end end - context ".bulk_upload" do + context ".profile" do -# context "with CSV" do + it "returns a profile" do + @account = @client.upsert_account(:provider_account_id => 'ruby_test_account') + @profile = @client.add_profile(:account_id => @account.account_id) + @client.profile(@profile.profile_id).profile_id.should == @profile.profile_id + @client.delete_profile(@profile.profile_id) + end -# use_vcr_cassette "bulk_upload_csv" + end -# it "should accept properly formatted CSV files" do -# @account = @client.add_account(:account_name => 'Ruby Bulk Upload Test') -# @usage_profile = @client.add_usage_profile(:account_id => @account.account_id) -# @result = @client.bulk_upload( -# File.expand_path("../../fixtures/sample.csv", __FILE__), -# :usage_profile_id => @usage_profile.profile_id -# ) -# @result.status.should == "success" -# @client.delete_account(@account.account_id) -# end + context ".provider_profile" do -# end + it "returns a provider profile" do + @account = @client.upsert_account(:provider_account_id => 'ruby_test_account') + @profile = @client.upsert_profile( + :account_id => @account.account_id, + :provider_profile_id => 'provider_profile_test') + @found_profile = @client.provider_profile(@profile.provider_profile_id) + @found_profile.profile_id.should == @profile.profile_id + @client.delete_profile(@profile.profile_id) + end - context "with ESPI (Green Button XML)" do + end + + context ".add_profile_readings" do + + it "adds profile readings" do + @account = @client.upsert_account(:provider_account_id => 'ruby_test_account') + @profile = @client.add_profile(:account_id => @account.account_id) + @readings = @client.add_profile_readings(@profile.profile_id, :readings => test_readings) + @readings.status.should == "success" + @found_profile = @client.profile(@profile.profile_id, :group_by => "month") + @found_profile.reading_data_summaries.count.should == 1 + @found_profile.reading_data_summaries.first.number_of_readings.should > 0 + @found_profile.intervals.total_count.should > 0 + @client.delete_profile(@profile.profile_id) + end - use_vcr_cassette "green_button" + end - it "should accept properly formatted XML files" do - @account = @client.add_account(:account_name => 'Ruby Green Button Test') - @usage_profile = @client.add_usage_profile(:account_id => @account.account_id) - @result = @client.green_button( - File.expand_path("../../fixtures/greenbutton.xml", __FILE__), - :usage_profile_id => @usage_profile.profile_id - ) - @result.status.should == "success" - @client.delete_account(@account.account_id) - end + context ".update_profile_readings" do + it "updates profile readings" do + @account = @client.upsert_account(:provider_account_id => 'ruby_test_account') + @profile = @client.add_profile(:account_id => @account.account_id) + @readings = @client.update_profile_readings(@profile.profile_id, :readings => test_readings) + @readings.status.should == "success" + @found_profile = @client.profile(@profile.profile_id, :group_by => "month") + @found_profile.reading_data_summaries.count.should == 1 + @found_profile.reading_data_summaries.first.number_of_readings.should > 0 + @client.delete_profile(@profile.profile_id) end end + # context ".add_provider_profile_readings" do + + # it "adds provider profile readings" do + # @account = @client.upsert_account(:provider_account_id => 'ruby_test_account') + # @profile = @client.upsert_profile( + # :account_id => @account.account_id, + # :provider_profile_id => 'add_provider_profile_readings_test') + # @readings = @client.add_provider_profile_readings(@profile.provider_profile_id, :readings => test_readings) + # @readings.status.should == "success" + # @found_profile = @client.profile(@profile.profile_id, :group_by => "month") + # @found_profile.reading_data_summaries.count.should == 1 + # @found_profile.reading_data_summaries.first.number_of_readings.should > 0 + # @client.delete_profile(@profile.profile_id) + # end + + # end + + # context ".update_provider_profile_readings" do + + # it "updates provider profile readings" do + # @account = @client.upsert_account(:provider_account_id => 'ruby_test_account') + # @profile = @client.upsert_profile( + # :account_id => @account.account_id, + # :provider_profile_id => 'update_provider_profile_readings_test') + # @readings = @client.update_provider_profile_readings(@profile.provider_profile_id, :readings => test_readings) + # @readings.status.should == "success" + # @found_profile = @client.profile(@profile.profile_id, :group_by => "month") + # @found_profile.reading_data_summaries.count.should == 1 + # @found_profile.reading_data_summaries.first.number_of_readings.should > 0 + # @client.delete_profile(@profile.profile_id) + # end + + # end + + # context ".upload_csv" do + + # it "should accept properly formatted CSV files" do + # @account = @client.upsert_account(:provider_account_id => 'ruby_test_account') + # @profile = @client.add_profile(:account_id => @account.account_id) + # @result = @client.upload_csv( + # File.expand_path("../../fixtures/sample.csv", __FILE__), + # :profile_id => @profile.profile_id + # ) + # @result.status.should == "success" + # @client.delete_profile(@profile.profile_id) + # end + + # end + + # context ".upload_green_button" do + + # it "should accept properly formatted XML files" do + # @account = @client.upsert_account(:provider_account_id => 'ruby_test_account') + # @profile = @client.add_profile(:account_id => @account.account_id) + # @result = @client.upload_green_button( + # File.expand_path("../../fixtures/greenbutton.xml", __FILE__), + # :profile_id => @profile.profile_id + # ) + # @result.status.should == "success" + # @client.delete_profile(@profile.profile_id) + # end + + # end + end end + + def test_readings + [ + { + :from => "2011-08-01T22:30:00.000-0700", + :to => "2011-08-01T22:45:00.000-0700", + :quantity_unit => "kWh", + :quantity_value => 220 + } + ] + end end diff --git a/spec/faraday/response_spec.rb b/spec/faraday/response_spec.rb index 9308817..9960925 100644 --- a/spec/faraday/response_spec.rb +++ b/spec/faraday/response_spec.rb @@ -2,12 +2,20 @@ describe Faraday::Response do + before(:all) do + VCR.turn_off! + end + after(:all) do + VCR.turn_on! + end + before do @client = Genability::Client.new({:application_id => 'ValidAppID', :application_key => 'ValidAppKey'}) end { 400 => Genability::BadRequest, + 401 => Genability::Unauthorized, 403 => Genability::Forbidden, 404 => Genability::NotFound, 500 => Genability::ServerError, @@ -16,8 +24,17 @@ context "when HTTP status is #{status}" do before(:each) do - stub_get('public/lses?appId=ValidAppID&appKey=ValidAppKey'). - to_return(:status => status) + body = { + status: "error", + count: 1, + type: "Error", + results: [{ + code: "404", + message: "Message" + }] + } + stub_request(:get, /.*\/public\/lses/). + to_return(:status => status, :body => body.to_json) end it "should raise #{exception.name} error" do @@ -27,5 +44,19 @@ end end end + + context "when response is not JSON-formatted" do + before(:each) do + stub_request(:get, /.*\/public\/lses/). + to_return(:status => 200, :body => "this is a bad response") + end + + it "should raise Genability::InvalidResponseFormat" do + lambda do + @client.load_serving_entities() + end.should raise_error(Genability::InvalidResponseFormat, /this is a bad response/) + end + + end end diff --git a/spec/genability_spec.rb b/spec/genability_spec.rb index 64b60df..1b71742 100644 --- a/spec/genability_spec.rb +++ b/spec/genability_spec.rb @@ -6,10 +6,11 @@ it { Genability::Configuration::DEFAULT_ADAPTER.should == :net_http } it { Genability::Configuration::DEFAULT_APPLICATION_ID.should be_nil } it { Genability::Configuration::DEFAULT_APPLICATION_KEY.should be_nil } - it { Genability::Configuration::DEFAULT_ENDPOINT.should == 'http://api.genability.com/rest/' } + it { Genability::Configuration::DEFAULT_ENDPOINT.should == 'https://api.genability.com/rest/' } it { Genability::Configuration::DEFAULT_FORMAT.should == :json } it { Genability::Configuration::DEFAULT_USER_AGENT.should == 'Genability API Ruby Gem' } it { Genability::Configuration::DEFAULT_PROXY.should be_nil } + it { Genability::Configuration::DEBUG_LOGGING.should false } end context ".client" do @@ -109,6 +110,19 @@ end end + context ".debug_logging" do + it "should return the default value of debug_logging" do + Genability.proxy.should == Genability::Configuration::DEFAULT_DEBUG_LOGGING + end + end + + context ".debug_logging=" do + it "should set the value of debug_logging" do + Genability.debug_logging = true + Genability.debug_logging.should be true + end + end + context ".options" do it "should retreive a hash of options and their values" do Genability.options.keys.should == Genability::Configuration::VALID_OPTIONS_KEYS diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index a81e523..a9d5e16 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -4,6 +4,7 @@ require 'webmock/rspec' require 'genability' require 'vcr' +require 'pry' CONFIGURATION_DEFAULTS = begin YAML::load_file("#{File.dirname(__FILE__)}/configuration.yml").inject({}) do |options, (key, value)| @@ -29,10 +30,11 @@ config.run_all_when_everything_filtered = true end -VCR.config do |c| +VCR.configure do |c| + c.configure_rspec_metadata! c.ignore_localhost = true c.cassette_library_dir = 'spec/cassettes' - c.stub_with :webmock #:typhoeus, :faraday, :fakeweb, or :webmock + c.hook_into :webmock #:typhoeus, :faraday, :fakeweb, or :webmock c.default_cassette_options = { :record => :new_episodes } c.filter_sensitive_data('ValidAppID') { CONFIGURATION_DEFAULTS[:application_id] } c.filter_sensitive_data('ValidAppKey') { CONFIGURATION_DEFAULTS[:application_key] }