Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add 100% test coverage on Response class #240

Merged
merged 1 commit into from
Jun 9, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions lib/onelogin/ruby-saml/response.rb
Original file line number Diff line number Diff line change
Expand Up @@ -259,8 +259,8 @@ def validate
reset_errors!

validate_response_state &&
validate_id &&
validate_version &&
validate_id &&
validate_success_status &&
validate_num_assertion &&
validate_no_encrypted_attributes &&
Expand Down Expand Up @@ -549,7 +549,9 @@ def validate_subject_confirmation
# @raise [ValidationError] if soft == false and validation fails
#
def validate_signature
unless document.validate_document(settings.get_fingerprint, soft, :fingerprint_alg => settings.idp_cert_fingerprint_algorithm)
fingerprint = settings.get_fingerprint

unless fingerprint && document.validate_document(fingerprint, soft, :fingerprint_alg => settings.idp_cert_fingerprint_algorithm)
error_msg = "Invalid Signature on SAML Response"
return append_error(error_msg)
end
Expand Down
604 changes: 533 additions & 71 deletions test/response_test.rb

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions test/responses/invalids/invalid_audience.xml.base64
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
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
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8c2FtbHA6UmVzcG9uc2UgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgSUQ9InBmeGMzMmFlZDY3LTgyMGYtNDI5Ni0wYzIwLTIwNWExMGRkNTc4NyIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIiBEZXN0aW5hdGlvbj0iaHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvZW5kcG9pbnRzL2Fjcy5waHAiIEluUmVzcG9uc2VUbz0iXzU3YmNiZjcwLTdiMWYtMDEyZS1jODIxLTc4MmJjYjEzYmIzOCI+DQogIDxzYW1sOklzc3Vlcj5odHRwOi8vaWRwLmV4YW1wbGUuY29tLzwvc2FtbDpJc3N1ZXI+DQogIDxzYW1scDpTdGF0dXM+DQogICAgPHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPg0KICA8L3NhbWxwOlN0YXR1cz4NCiAgPHNhbWw6QXNzZXJ0aW9uIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDc4NDE5OTFjLWM3M2YtNDAzNS1lMmVlLWMxNzBjMGUxZDNlNCIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIj4NCiAgICA8c2FtbDpJc3N1ZXI+aHR0cDovL2ludmFsaWQuaXNzdWVyLmV4YW1wbGUuY29tLzwvc2FtbDpJc3N1ZXI+ICAgIA0KICAgIDxzYW1sOlN1YmplY3Q+DQogICAgICA8c2FtbDpOYW1lSUQgU1BOYW1lUXVhbGlmaWVyPSJoZWxsby5jb20iIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj5zb21lb25lQGV4YW1wbGUuY29tPC9zYW1sOk5hbWVJRD4NCiAgICAgIDxzYW1sOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4NCiAgICAgICAgPHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgTm90T25PckFmdGVyPSIyMDIwLTA2LTE3VDE0OjU5OjE0WiIgUmVjaXBpZW50PSJodHRwOi8vc3R1ZmYuY29tL2VuZHBvaW50cy9lbmRwb2ludHMvYWNzLnBocCIgSW5SZXNwb25zZVRvPSJfNTdiY2JmNzAtN2IxZi0wMTJlLWM4MjEtNzgyYmNiMTNiYjM4Ii8+DQogICAgICA8L3NhbWw6U3ViamVjdENvbmZpcm1hdGlvbj4NCiAgICA8L3NhbWw6U3ViamVjdD4NCiAgICA8c2FtbDpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAxMC0wNi0xN1QxNDo1Mzo0NFoiIE5vdE9uT3JBZnRlcj0iMjAyMS0wNi0xN1QxNDo1OToxNFoiPg0KICAgICAgPHNhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj4NCiAgICAgICAgPHNhbWw6QXVkaWVuY2U+aHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvbWV0YWRhdGEucGhwPC9zYW1sOkF1ZGllbmNlPg0KICAgICAgPC9zYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+DQogICAgPC9zYW1sOkNvbmRpdGlvbnM+DQogICAgPHNhbWw6QXV0aG5TdGF0ZW1lbnQgQXV0aG5JbnN0YW50PSIyMDExLTA2LTE3VDE0OjU0OjA3WiIgU2Vzc2lvbk5vdE9uT3JBZnRlcj0iMjAyMS0wNi0xN1QyMjo1NDoxNFoiIFNlc3Npb25JbmRleD0iXzUxYmUzNzk2NWZlYjU1NzlkODAzMTQxMDc2OTM2ZGMyZTlkMWQ5OGViZiI+DQogICAgICA8c2FtbDpBdXRobkNvbnRleHQ+DQogICAgICAgIDxzYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkPC9zYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPg0KICAgICAgPC9zYW1sOkF1dGhuQ29udGV4dD4NCiAgICA8L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+DQogICAgPHNhbWw6QXR0cmlidXRlU3RhdGVtZW50Pg0KICAgICAgPHNhbWw6QXR0cmlidXRlIE5hbWU9Im1haWwiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6YmFzaWMiPg0KICAgICAgICA8c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6c3RyaW5nIj5zb21lb25lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPg0KICAgICAgPC9zYW1sOkF0dHJpYnV0ZT4NCiAgICA8L3NhbWw6QXR0cmlidXRlU3RhdGVtZW50Pg0KICA8L3NhbWw6QXNzZXJ0aW9uPg0KPC9zYW1scDpSZXNwb25zZT4=
1 change: 1 addition & 0 deletions test/responses/invalids/invalid_issuer_message.xml.base64
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8c2FtbHA6UmVzcG9uc2UgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgSUQ9InBmeGMzMmFlZDY3LTgyMGYtNDI5Ni0wYzIwLTIwNWExMGRkNTc4NyIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIiBEZXN0aW5hdGlvbj0iaHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvZW5kcG9pbnRzL2Fjcy5waHAiIEluUmVzcG9uc2VUbz0iXzU3YmNiZjcwLTdiMWYtMDEyZS1jODIxLTc4MmJjYjEzYmIzOCI+DQogIDxzYW1sOklzc3Vlcj5odHRwOi8vaW52YWxpZC5pc3N1ZXIuZXhhbXBsZS5jb20vPC9zYW1sOklzc3Vlcj4NCiAgPHNhbWxwOlN0YXR1cz4NCiAgICA8c2FtbHA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnN0YXR1czpTdWNjZXNzIi8+DQogIDwvc2FtbHA6U3RhdHVzPg0KICA8c2FtbDpBc3NlcnRpb24geG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0icGZ4Nzg0MTk5MWMtYzczZi00MDM1LWUyZWUtYzE3MGMwZTFkM2U0IiBWZXJzaW9uPSIyLjAiIElzc3VlSW5zdGFudD0iMjAxMS0wNi0xN1QxNDo1NDoxNFoiPg0KICAgIDxzYW1sOklzc3Vlcj5odHRwOi8vaWRwLmV4YW1wbGUuY29tLzwvc2FtbDpJc3N1ZXI+ICAgIA0KICAgIDxzYW1sOlN1YmplY3Q+DQogICAgICA8c2FtbDpOYW1lSUQgU1BOYW1lUXVhbGlmaWVyPSJoZWxsby5jb20iIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj5zb21lb25lQGV4YW1wbGUuY29tPC9zYW1sOk5hbWVJRD4NCiAgICAgIDxzYW1sOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4NCiAgICAgICAgPHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgTm90T25PckFmdGVyPSIyMDIwLTA2LTE3VDE0OjU5OjE0WiIgUmVjaXBpZW50PSJodHRwOi8vc3R1ZmYuY29tL2VuZHBvaW50cy9lbmRwb2ludHMvYWNzLnBocCIgSW5SZXNwb25zZVRvPSJfNTdiY2JmNzAtN2IxZi0wMTJlLWM4MjEtNzgyYmNiMTNiYjM4Ii8+DQogICAgICA8L3NhbWw6U3ViamVjdENvbmZpcm1hdGlvbj4NCiAgICA8L3NhbWw6U3ViamVjdD4NCiAgICA8c2FtbDpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAxMC0wNi0xN1QxNDo1Mzo0NFoiIE5vdE9uT3JBZnRlcj0iMjAyMS0wNi0xN1QxNDo1OToxNFoiPg0KICAgICAgPHNhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj4NCiAgICAgICAgPHNhbWw6QXVkaWVuY2U+aHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvbWV0YWRhdGEucGhwPC9zYW1sOkF1ZGllbmNlPg0KICAgICAgPC9zYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+DQogICAgPC9zYW1sOkNvbmRpdGlvbnM+DQogICAgPHNhbWw6QXV0aG5TdGF0ZW1lbnQgQXV0aG5JbnN0YW50PSIyMDExLTA2LTE3VDE0OjU0OjA3WiIgU2Vzc2lvbk5vdE9uT3JBZnRlcj0iMjAyMS0wNi0xN1QyMjo1NDoxNFoiIFNlc3Npb25JbmRleD0iXzUxYmUzNzk2NWZlYjU1NzlkODAzMTQxMDc2OTM2ZGMyZTlkMWQ5OGViZiI+DQogICAgICA8c2FtbDpBdXRobkNvbnRleHQ+DQogICAgICAgIDxzYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkPC9zYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPg0KICAgICAgPC9zYW1sOkF1dGhuQ29udGV4dD4NCiAgICA8L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+DQogICAgPHNhbWw6QXR0cmlidXRlU3RhdGVtZW50Pg0KICAgICAgPHNhbWw6QXR0cmlidXRlIE5hbWU9Im1haWwiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6YmFzaWMiPg0KICAgICAgICA8c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6c3RyaW5nIj5zb21lb25lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPg0KICAgICAgPC9zYW1sOkF0dHJpYnV0ZT4NCiAgICA8L3NhbWw6QXR0cmlidXRlU3RhdGVtZW50Pg0KICA8L3NhbWw6QXNzZXJ0aW9uPg0KPC9zYW1scDpSZXNwb25zZT4=
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
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
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8c2FtbHA6UmVzcG9uc2UgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgSUQ9InBmeDY3MjlmMTI0LTc3ZjQtMzVkMS0xMjQ5LTVhNjhhODZlZGEwZSIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIiBEZXN0aW5hdGlvbj0iaHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvZW5kcG9pbnRzL2Fjcy5waHAiIEluUmVzcG9uc2VUbz0iXzU3YmNiZjcwLTdiMWYtMDEyZS1jODIxLTc4MmJjYjEzYmIzOCI+DQogIDxzYW1sOklzc3Vlcj5odHRwOi8vaWRwLmV4YW1wbGUuY29tLzwvc2FtbDpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+DQogIDxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+DQogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPg0KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDY3MjlmMTI0LTc3ZjQtMzVkMS0xMjQ5LTVhNjhhODZlZGEwZSI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+eUJXcmtUUjFtOGM1enVXOTQwMVVDV0VERHFnPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5MMmdNNHYyeDhKdUIzNEJ0bzdXS3VGeUIwSzkzME5DMDdiS1pMUkQ4cy8yK2VOa1RGajdRL2dWNTVqYTkwNzdZZGsrOTQ2RGtFZ3g3bkNYcEd2a1hLakpjV042MEZFYXNNREJrcHdGNXRISVh6WGg2NkF2NWpCbzRyTHc3M0ZSYUQwYW5nOU1WeW44VTdYWllrUkVHeTZraGxSdkU3emJwaWMzaTdLQVBZd2c9PC9kczpTaWduYXR1cmVWYWx1ZT4NCjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUNnVENDQWVvQ0NRQ2JPbHJXRGRYN0ZUQU5CZ2txaGtpRzl3MEJBUVVGQURDQmhERUxNQWtHQTFVRUJoTUNUazh4R0RBV0JnTlZCQWdURDBGdVpISmxZWE1nVTI5c1ltVnlaekVNTUFvR0ExVUVCeE1EUm05dk1SQXdEZ1lEVlFRS0V3ZFZUa2xPUlZSVU1SZ3dGZ1lEVlFRREV3OW1aV2xrWlM1bGNteGhibWN1Ym04eElUQWZCZ2txaGtpRzl3MEJDUUVXRW1GdVpISmxZWE5BZFc1cGJtVjBkQzV1YnpBZUZ3MHdOekEyTVRVeE1qQXhNelZhRncwd056QTRNVFF4TWpBeE16VmFNSUdFTVFzd0NRWURWUVFHRXdKT1R6RVlNQllHQTFVRUNCTVBRVzVrY21WaGN5QlRiMnhpWlhKbk1Rd3dDZ1lEVlFRSEV3TkdiMjh4RURBT0JnTlZCQW9UQjFWT1NVNUZWRlF4R0RBV0JnTlZCQU1URDJabGFXUmxMbVZ5YkdGdVp5NXViekVoTUI4R0NTcUdTSWIzRFFFSkFSWVNZVzVrY21WaGMwQjFibWx1WlhSMExtNXZNSUdmTUEwR0NTcUdTSWIzRFFFQkFRVUFBNEdOQURDQmlRS0JnUURpdmJoUjdQNTE2eC9TM0JxS3h1cFFlMExPTm9saXVwaUJPZXNDTzNTSGJEcmwzK3E5SWJmbmZtRTA0ck51TWNQc0l4QjE2MVRkRHBJZXNMQ243YzhhUEhJU0tPdFBsQWVUWlNuYjhRQXU3YVJqWnEzK1BiclA1dVczVGNmQ0dQdEtUeXRIT2dlL09sSmJvMDc4ZFZoWFExNGQxRUR3WEpXMXJSWHVVdDRDOFFJREFRQUJNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0R0JBQ0RWZnA4NkhPYnFZK2U4QlVvV1E5K1ZNUXgxQVNEb2hCandPc2cyV3lrVXFSWEYrZExmY1VIOWRXUjYzQ3RaSUtGRGJTdE5vbVBuUXo3bmJLK29ueWd3QnNwVkVibkh1VWloWnEzWlVkbXVtUXFDdzRVdnMvMVV2cTNvck9vL1dKVmhUeXZMZ0ZWSzJRYXJRNC82N09aZkhkN1IrUE9CWGhvcGhTTXYxWk9vPC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+DQogIDxzYW1scDpTdGF0dXM+DQogICAgPHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPg0KICA8L3NhbWxwOlN0YXR1cz4NCiAgPHNhbWw6QXNzZXJ0aW9uIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDc4NDE5OTFjLWM3M2YtNDAzNS1lMmVlLWMxNzBjMGUxZDNlNCIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIj4NCiAgICA8c2FtbDpJc3N1ZXI+aHR0cDovL2lkcC5leGFtcGxlLmNvbS88L3NhbWw6SXNzdWVyPiAgICANCiAgICA8c2FtbDpTdWJqZWN0Pg0KICAgICAgPHNhbWw6TmFtZUlEIFNQTmFtZVF1YWxpZmllcj0iaGVsbG8uY29tIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+c29tZW9uZUBleGFtcGxlLmNvbTwvc2FtbDpOYW1lSUQ+DQogICAgICA8c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+DQogICAgICAgIDxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjAyMC0wNi0xN1QxNDo1OToxNFoiIFJlY2lwaWVudD0iaHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvZW5kcG9pbnRzL2Fjcy5waHAiIEluUmVzcG9uc2VUbz0iaW52YWxpZF9pbnJlc3BvbnNlIi8+DQogICAgICA8L3NhbWw6U3ViamVjdENvbmZpcm1hdGlvbj4NCiAgICA8L3NhbWw6U3ViamVjdD4NCiAgICA8c2FtbDpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAxMC0wNi0xN1QxNDo1Mzo0NFoiIE5vdE9uT3JBZnRlcj0iMjAyMS0wNi0xN1QxNDo1OToxNFoiPg0KICAgICAgPHNhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj4NCiAgICAgICAgPHNhbWw6QXVkaWVuY2U+aHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvbWV0YWRhdGEucGhwPC9zYW1sOkF1ZGllbmNlPg0KICAgICAgPC9zYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+DQogICAgPC9zYW1sOkNvbmRpdGlvbnM+DQogICAgPHNhbWw6QXV0aG5TdGF0ZW1lbnQgQXV0aG5JbnN0YW50PSIyMDExLTA2LTE3VDE0OjU0OjA3WiIgU2Vzc2lvbk5vdE9uT3JBZnRlcj0iMjAyMS0wNi0xN1QyMjo1NDoxNFoiIFNlc3Npb25JbmRleD0iXzUxYmUzNzk2NWZlYjU1NzlkODAzMTQxMDc2OTM2ZGMyZTlkMWQ5OGViZiI+DQogICAgICA8c2FtbDpBdXRobkNvbnRleHQ+DQogICAgICAgIDxzYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkPC9zYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPg0KICAgICAgPC9zYW1sOkF1dGhuQ29udGV4dD4NCiAgICA8L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+DQogICAgPHNhbWw6QXR0cmlidXRlU3RhdGVtZW50Pg0KICAgICAgPHNhbWw6QXR0cmlidXRlIE5hbWU9Im1haWwiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6YmFzaWMiPg0KICAgICAgICA8c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6c3RyaW5nIj5zb21lb25lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPg0KICAgICAgPC9zYW1sOkF0dHJpYnV0ZT4NCiAgICA8L3NhbWw6QXR0cmlidXRlU3RhdGVtZW50Pg0KICA8L3NhbWw6QXNzZXJ0aW9uPg0KPC9zYW1scDpSZXNwb25zZT4=
Loading