diff --git a/doc/InstanceToken.md b/doc/InstanceToken.md deleted file mode 100644 index 7a9c0ee..0000000 --- a/doc/InstanceToken.md +++ /dev/null @@ -1,323 +0,0 @@ -# Instance Token - -[TOC] - -# Generate `dls_instance_token.tok` - -- Generated by `https:///service_instance_manager/v1/service-instance/identity-token` -- Using binary `service_instance_token_manager.cpython-312-x86_64-linux-gnu.so` file -- -
- `service_instance_token_manager_controller.py` - -```python -# from "service_instance_token_manager.cpython-312-x86_64-linux-gnu.so" -_serviceInstanceTokenManager = ServiceInstanceTokenManager() - -# ... -data = _serviceInstanceTokenManager.siit_get(event_args) -``` - -
- - -# Load and Parse `liense.bin` - -For *logs* and *patches* see [src/nls/patches-and-logs](/src/nls/patches-and-logs). - -This [Private-Key we have](LicensingFlow.md#public-keys-private-keys-certificates) - in DB-Table -`service_instance_artifact`, Key `service_instance.identity` -`si_identity_private_key = self._get_si_identity_private_key(service_instance_xid=service_instance_xid)` - -## `LicenseFileInstallationManager` - -> `self.processor.read_license_payload()` calls `LicenseFileProcessor.read_license_payload()` - -
- `license_file_installation_manager.py` - -```python -class LicenseFileInstallationManager: - @retry(ExceptionToCheck=InterfaceError, tries=3, delay=0.05) - def license_file_installation(self, event_args): - kwargs = self._validate_and_return_args(event_args) - service_instance_xid = self._validate_si_xid_header(event_args) - - # ensure no upgrade job is in progress - self._check_migration_job(event_args, service_instance_xid) - - request: LicenseFileRequest = kwargs['request'] - try: - si_model = self.dal.get_service_instance(service_instance_xid) - - deployment_token, payload, product_mapping_token, api_key_models, dls_certificate_token, dls_feat_display_map_token = self._read_license_file( - service_instance_xid=service_instance_xid, request=request - ) - - # Register SI if it is UNINITIALIZED - self._validate_si_state(si_model, deployment_token, event_args) - generated_data = {} - generated_data = self.dal.insert_license_file( - license_file_xid=payload.header.license_allocation_file_xid, - license_file_timestamp=payload.header.license_allocation_file_timestamp, - license_allocation_list=payload.license_allocation_list, - service_instance_xid=service_instance_xid, - product_mapping_list=product_mapping_token.product_mapping_info, - api_key_models=api_key_models, - dls_certificate_token=dls_certificate_token, - dls_feat_display_map_token=dls_feat_display_map_token, - si_model=si_model, - _license=request.license, - generated_data=generated_data - ) - # Audit this in case of DLS - if self._is_dls(si_model) and generated_data is not None: - for value in generated_data.values(): - if "la_xid" in value: - self.audit_event_processor.audit_license_server_installation_event(value["la_xid"], si_model, event_args.get('headers')) - - except Exception as ex: - log.error(f'Error processing license allocation file for service_instance: {service_instance_xid} Error {ex}') - raise - - def _read_license_file(self, service_instance_xid, request): - if not LicenseFileInstallationManager._is_dls_pre_registered(): - # if its not pre-registered then go the standard route - return self._read_lf_with_si_bound_keys(service_instance_xid, request) - - # X - THIS LINE IS IMPORTANT - si_preregistered_private_key = LicenseFileInstallationManager._get_si_preregistered_private_key() - try: - # X - THIS LINE IS IMPORTANT - return self.processor.read_license_payload(request.license, si_preregistered_private_key) - except Exception as ex: - # if decryption fails with SI pre-registered private key, possibility that user has acknowledged on NLP - # so try with SI bound instance keys - log.error(f"error decrypting license file with pre-registered identity key, trying SI identity private key, {ex}") - return self._read_lf_with_si_bound_keys(service_instance_xid, request) - - def _read_lf_with_si_bound_keys(self, service_instance_xid, request): - si_identity_private_key = self._get_si_identity_private_key(service_instance_xid=service_instance_xid) - # if it fails with generic SI private key, try with SI bound key - deployment_token, payload, product_mapping_token, api_keys_models, dls_certificate_token, dls_feat_display_map_token = self.processor.read_license_payload(request.license, si_identity_private_key) - return deployment_token, payload, product_mapping_token, api_keys_models, dls_certificate_token, dls_feat_display_map_token - - def _get_si_identity_private_key(self, service_instance_xid): - # if this fails look for global private key because it means that the incoming file has pre-registered token - try: - # Get SI Identity private key to decrypt this license file - si_identity_private_key = self.dal.get_si_artifact( - service_instance_xid, - si_constants.SERVICE_INSTANCE_IDENTITY_NAMESPACE, - si_constants.ARTIFACT_NAME_PRIVATE_KEY - ) - return si_identity_private_key.value - except NotFoundError as ex: - log.error(f'Error fetching artifacts for SI attached to this license file', ex) - raise BadRequestError("Failed to process license allocation file") - - @staticmethod - def _is_dls_pre_registered(): - return os.path.exists(si_constants.SI_IS_PRE_REGISTRATION_MARKER) - - @staticmethod - def _get_si_preregistered_private_key(): - _global_private_key = PrivateKey.from_data(os.getenv("DLS_PRE_REGISTRATION_PRIVATE_KEY")) - return _global_private_key.data -``` - -
- -## `LicenseFileProcessor` - -
- `license_file_processor.py` - -```python -class LicenseFileProcessor: - def build_license_payload(self, license_allocation_file_xid, license_allocation_file_timestamp, - license_allocation_list, public_key_string, deployment_token, - product_mapping_token=None, - api_keys_response=None, - dls_certificate_properties=None, - dls_feature_display_mapping_token=None): - # Generate license file container with laf and preamble - license_file_container = LicenseFileContainer() - product_mapping_token_base64 = self.generate_base64_encrypted_string(product_mapping_token, public_key_string) - api_keys_response_encrypted_base64 = self.get_api_key_encrypted_encoded_val(api_keys_response, public_key_string) - - encrypted_dls_certificate_token = self.get_encrypted_dls_certificate_token(dls_certificate_properties, public_key_string) - - - encrypted_dls_feature_display_mapping_token = self._get_encrypted_dls_feature_display_mapping_token(dls_feature_display_mapping_token, public_key_string) - license_file_container.preamble = LicenseFilePreamble( - deployment_token=deployment_token, - product_mapping_token=product_mapping_token_base64, - api_keys_response=api_keys_response_encrypted_base64, - dls_certificate_token=encrypted_dls_certificate_token, - dls_feature_display_mapping_token=encrypted_dls_feature_display_mapping_token - ) - - # process license file payload - license_file_payload = LicenseFilePayload() - license_file_payload.header = LicenseFilePayloadHeader( - license_allocation_file_xid=license_allocation_file_xid, - license_allocation_file_timestamp=license_allocation_file_timestamp.isoformat() - ) - license_file_payload.license_allocation_list = license_allocation_list - - # Generate license file response - # need special UUIDEncoder because license_file_payload contains UUID objects - payload_str = json_dumps(license_file_payload.to_dict(), cls=UUIDEncoder) - public_key = PublicKey.from_data(public_key_string) - encrypted_payload_str = public_key.encrypt_aes(payload_str) - encrypted_payload_str = base64.b64encode(encrypted_payload_str.encode('utf-8')).decode('utf-8') - license_file_container.payload = encrypted_payload_str - - # dump LicenseFileContainer response to JSON and base64 encode it - license_container_str = json_dumps(license_file_container.to_dict(), cls=UUIDEncoder) - license_container_str = base64.b64encode(license_container_str.encode('utf-8')).decode('utf-8') - - return license_container_str - - - def read_license_payload(self, license_container_str, private_key_string): - try: - # Decode whole string object into LicenseFileContainer object - license_container_str = base64.b64decode(license_container_str.encode('utf-8')).decode('utf-8') - license_file_container = LicenseFileContainer.from_dict(JsonUtils.from_json(license_container_str)) - - # Decode preamble and payload - encrypted_payload_str = base64.b64decode(license_file_container.payload.encode('utf-8')).decode('utf-8') - # X - THIS LINE IS IMPORTANT - private_key = PrivateKey.from_data(private_key_string) - license_file_decoded = private_key.decrypt_aes(encrypted_payload_str) - payload = LicenseFilePayload.from_dict(JsonUtils.from_json(license_file_decoded)) - - # Decode product mapping data - product_mapping_token = license_file_container.preamble.product_mapping_token - if product_mapping_token is not None and product_mapping_token != "": - encrypted_product_mapping_token = base64.b64decode(license_file_container.preamble.product_mapping_token.encode('utf-8')).decode('utf-8') - private_key = PrivateKey.from_data(private_key_string) - decrypted_product_mapping_token = private_key.decrypt_aes(encrypted_product_mapping_token) - product_mapping_token = ProductMappingFileContainer.from_dict(JsonUtils.from_json(decrypted_product_mapping_token)) - - # Api Key preamble - api_key_models = self._get_api_key_preamble(license_file_container, private_key_string) - - # Cert response preamble - dls_certificate_token = self._get_dls_certificate_token_preamble(license_file_container, private_key_string) - - # Feature display mapping token - dls_feat_display_map_token = self._get_dls_feature_display_mapping_token(license_file_container, private_key_string) - except (UnicodeDecodeError, BinAsciiError) as be: - log.exception(f'Error processing license file, invalid license file: {be}') - raise BadRequestError('Invalid license file format') from be - except JSONDecodeError: - raise BadRequestError('Invalid license file object') - except ValueError as e: - if "Incorrect decryption" in str(e) or "Ciphertext too large" in str(e): - log.exception(f'Error decrypting license allocation file : {e}') - raise BadRequestError('Invalid license file for this service instance') - else: - raise - except Exception as be: - log.exception(f'Error processing license allocation file : {be}') - raise BadRequestError('Error processing license allocation file') from be - - return license_file_container.preamble.deployment_token, payload, product_mapping_token, api_key_models, dls_certificate_token, dls_feat_display_map_token -``` - -
- -# Other Code - -Interesting is that for encryption the `service_instance.deployment` **Public-Key** is used. For that one, we have no -private key. - -see - -```diff -public_key_string=si_deployment_public_key.value -``` - -
- `return_file_export_manager.py` - -```python -class ReturnFileExportManager: - def return_file_export_handler(self, event_args, params, dal): - if 'file_timestamp' not in event_args: - # file_timestamp not in event_args means original request on primary, - # so we get current time as file_timestamp - license_allocation_file_timestamp = datetime.utcnow() - # modify incoming event_args parameter to add file_timestamp, - # so broadcaster to sends file_timestamp to secondary - event_args['file_timestamp'] = license_allocation_file_timestamp - else: - # file_timestamp in event_args means replication call on secondary - # so we use file_timestamp from event_args - license_allocation_file_timestamp = event_args['file_timestamp'] - - license_allocation_file_xid = self.processor.get_license_file_xid() - log.info(f'Generating license allocation return file: {license_allocation_file_xid}') - - # Generate license allocation data - license_allocation = LicenseAllocation() - license_allocation.header = LicenseAllocationHeader(params.license_allotment_xid) - log.info(f'Generating return for license allocation: {params.license_allotment_xid}') - license_allocation.object_list = self._get_object_list(params, dal) - - try: - si_deployment_public_key = dal.get_si_artifact_for_license_allotment( - params.license_allotment_xid, si_constants.SERVICE_INSTANCE_DEPLOYMENT_NAMESPACE, - si_constants.ARTIFACT_NAME_PUBLIC_KEY - ) - except NotFoundError as ex: - log.error(f'Error fetching artifacts for SI attached to this license allocation return file', ex) - raise BadRequestError("Failed to return license allocation file") - - # Build license file payload string - encrypted_payload_str = self.processor.build_license_payload( - license_allocation_file_xid=license_allocation_file_xid, - license_allocation_file_timestamp=license_allocation_file_timestamp, - license_allocation_list=[license_allocation], - public_key_string=si_deployment_public_key.value, - deployment_token="") - - # insert LAF record - dal.insert_file_creation_record(license_allocation_file_xid, license_allocation_file_timestamp, - params.license_allotment_xid, encrypted_payload_str) - - response = ReturnFileResponse(return_license=encrypted_payload_str) - return response -``` - -
- - -
- `dls_license_file_installation_dal.py` - -```python -class DlsLicenseFileInstallationDal: - def insert_file_creation_record(self, schema, license_file_xid, license_file_timestamp, license_allotment_xid, license_allocation_file, session=None): - insert_file_creation_record_query = f""" - insert into {schema}.license_allotment_file_publication (xid, license_allotment_xid, publication_detail) - values (:xid, :la_xid, :publication_detail) - on conflict (xid) do update - set license_allotment_xid = :la_xid, publication_detail = :publication_detail - """ - publication_detail_dict = { - 'timestamp': license_file_timestamp.isoformat(), - 'license': license_allocation_file, - } - - publication_detail = json_dumps(publication_detail_dict) - session.execute(insert_file_creation_record_query, {'xid': license_file_xid, 'la_xid': license_allotment_xid, 'publication_detail': publication_detail}) - -``` - -
- - diff --git a/doc/database/1-initial/request_routing.alert_configuration.json b/doc/database/1-initial/request_routing.alert_configuration.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/request_routing.alert_configuration.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/request_routing.global_configuration.json b/doc/database/1-initial/request_routing.global_configuration.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/request_routing.global_configuration.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/request_routing.license_allotment_reference.json b/doc/database/1-initial/request_routing.license_allotment_reference.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/request_routing.license_allotment_reference.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/request_routing.license_allotment_service_instance.json b/doc/database/1-initial/request_routing.license_allotment_service_instance.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/request_routing.license_allotment_service_instance.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/request_routing.origin_interim.json b/doc/database/1-initial/request_routing.origin_interim.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/request_routing.origin_interim.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/request_routing.origin_service_instance.json b/doc/database/1-initial/request_routing.origin_service_instance.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/request_routing.origin_service_instance.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/request_routing.service_instance.json b/doc/database/1-initial/request_routing.service_instance.json new file mode 100644 index 0000000..c69da08 --- /dev/null +++ b/doc/database/1-initial/request_routing.service_instance.json @@ -0,0 +1,15 @@ +[ + { + "xid": "d8c07e4a-f6a4-49d0-b2dc-3faf0e1bf2bd", + "secret_identifier_ref": "45798d4d-b25a-434f-bb59-9c9a68591a30", + "service_instance_type_xid": "c92a973e-424a-463a-b48f-24b9f1441272", + "org_name": "", + "name": "DEFAULT_2025-03-26_19:51:36", + "description": "ON_PREM_SERVICE_INSTANCE", + "state": "setup_uninitialized", + "detail": {}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "instant_clone_support": false + } +] \ No newline at end of file diff --git a/doc/database/1-initial/request_routing.service_instance_type.json b/doc/database/1-initial/request_routing.service_instance_type.json new file mode 100644 index 0000000..dcdfeb3 --- /dev/null +++ b/doc/database/1-initial/request_routing.service_instance_type.json @@ -0,0 +1,16 @@ +[ + { + "xid": "c92a973e-424a-463a-b48f-24b9f1441272", + "name": "On-prem", + "description": "On-prem service instance", + "created_at": "2025-03-26 19:48:36.181435", + "last_updated_at": "2025-03-26 19:48:36.181435" + }, + { + "xid": "83cc294f-671f-4823-8c94-0d95f9b01904", + "name": "Cloud", + "description": "Cloud service instance", + "created_at": "2025-03-26 19:48:36.186564", + "last_updated_at": "2025-03-26 19:48:36.186564" + } +] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.api_key.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.api_key.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.api_key.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.audit_event.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.audit_event.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.audit_event.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.captured_event.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.captured_event.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.captured_event.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration.json new file mode 100644 index 0000000..a2540d2 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration.json @@ -0,0 +1,29 @@ +[ + { + "property_name": "METRICS_COLLECTION", + "property_value": {"value": 1}, + "created_at": "2025-03-26 19:51:37.062607", + "created_by": null, + "last_updated_at": "2025-03-26 19:51:37.062607", + "last_updated_by": null, + "description": "settings for collection of Appliance metrics in minutes" + }, + { + "property_name": "METRICS_CLEAN_UP", + "property_value": {"value": 7}, + "created_at": "2025-03-26 19:51:37.062607", + "created_by": null, + "last_updated_at": "2025-03-26 19:51:37.062607", + "last_updated_by": null, + "description": "settings for deletion of Appliance metrics collected in days" + }, + { + "property_name": "DLS_SI_FEATURE_DISPLAY_MAPPING", + "property_value": {"GRID-vGaming" : "NVIDIA vGaming", "GRID-Virtual-Apps" : "NVIDIA Virtual Applications", "GRID-Virtual-PC" : "NVIDIA Virtual PC", "GRID-Virtual-WS" : "NVIDIA RTX Virtual Workstation", "NVIDIA-vComputeServer" : "NVIDIA Virtual Compute Server", "Quadro-Virtual-DWS" : "NVIDIA RTX Virtual Workstation", "OVE_Licensing" : "NVIDIA OVE Licensing"}, + "created_at": "2025-03-26 19:51:37.062607", + "created_by": null, + "last_updated_at": "2025-03-26 19:51:37.062607", + "last_updated_by": null, + "description": null + } +] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_scope.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_scope.json new file mode 100644 index 0000000..2f13331 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_scope.json @@ -0,0 +1,26 @@ +[ + { + "xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "name": "global", + "description": "Global scope", + "rank": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "dea45ef9-80e2-4829-a390-c601c77591ab", + "name": "license-server", + "description": "Licence server scope", + "rank": 4, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "6c8ba662-f319-4a35-b780-3eb420c328f0", + "name": "service-instance", + "description": "Service Instance Scope", + "rank": 3, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + } +] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_specification.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_specification.json new file mode 100644 index 0000000..afb1529 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_specification.json @@ -0,0 +1,101 @@ +[ + { + "xid": "412e3184-af2f-4828-8743-ec45b959405b", + "name": "offline_lease", + "description": "Setting for offline lease", + "value_specification": {"data_type": "boolean"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0", "dea45ef9-80e2-4829-a390-c601c77591ab"] + }, + { + "xid": "fce81950-203a-441f-9c27-18809fef462d", + "name": "admin_event_purge_time", + "description": "Time setting in days to delete admin events older than specified", + "value_specification": {"max": "730", "min": "1", "data_type": "integer"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0"] + }, + { + "xid": "15a9fba3-10c1-40f3-ab2e-6c223b436cf0", + "name": "lease_event_purge_time", + "description": "Time setting in days to delete lease events older than specified", + "value_specification": {"max": "90", "min": "1", "data_type": "integer"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0"] + }, + { + "xid": "2d0e5e8a-3d0b-48eb-89cc-beaf2825c6f2", + "name": "default_renewal_period", + "description": "Default renewal period as percentage of lease borrow duration", + "value_specification": {"max": "95", "min": "15", "data_type": "integer"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0", "dea45ef9-80e2-4829-a390-c601c77591ab"] + }, + { + "xid": "e556bb20-8ac0-48ac-b1b3-3428b87bd0c0", + "name": "min_lease_period", + "description": "If clients pass any lease period value in lease borrow or renew requests it should be greater than configured or default Min Lease Period, otherwise Min Lease Period will be used for lease duration", + "value_specification": {"max": "P30D", "min": "PT10M", "data_type": "iso8601duration"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0", "dea45ef9-80e2-4829-a390-c601c77591ab"] + }, + { + "xid": "82edba98-a43a-4e81-b91b-d23c24a7e632", + "name": "max_lease_period", + "description": "If clients pass any lease period value in lease borrow or renew requests it should be less than configured or default Max Lease Period, otherwise Max Lease Period will be used for lease duration", + "value_specification": {"max": "P365D", "min": "PT10M", "data_type": "iso8601duration"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0", "dea45ef9-80e2-4829-a390-c601c77591ab"] + }, + { + "xid": "6e2bbcc1-5897-4761-97e1-67a034652af8", + "name": "auth_token_expiry_time", + "description": "Shorter expiry time leads to more secure communication but increases network calls. Longer expiry time leads to reduced network calls but less secured communication", + "value_specification": {"max": "P1D", "min": "PT1H", "data_type": "iso8601duration"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0"] + }, + { + "xid": "55f06d20-3f40-4135-bbf5-4f45ac9641f8", + "name": "default_lease_period", + "description": "This lease duration value is used if clients do not pass any lease period in lease borrow or renew requests", + "value_specification": {"max": "P365D", "min": "PT10M", "data_type": "iso8601duration"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0", "dea45ef9-80e2-4829-a390-c601c77591ab"] + }, + { + "xid": "fb1eeca0-595d-4296-8cfb-ff61b0984c13", + "name": "window_for_purging_inactive_clients", + "description": "Licensed clients which do not have any active leases and there is no lease activity in this configured window will be purged", + "value_specification": {"max": "P30D", "min": "PT1H", "data_type": "iso8601duration"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0"] + }, + { + "xid": "789b8a27-4118-49d5-828a-64f1ca6f96ca", + "name": "inactive_clients_registration_time_threshold", + "description": "Time window of client registration to consider when purging inactive clients", + "value_specification": {"max": "P30D", "min": "P1D", "data_type": "iso8601duration"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0"] + }, + { + "xid": "7c25b4b0-e4d0-11ec-b876-273ed73fd3ec", + "name": "volume_disk_allocation_in_gb", + "description": "Postgres volume size attached to the container.(This setting is not applicable for VM based appliances where the volume size is computed by the system )", + "value_specification": {"max": "1000", "min": "10", "data_type": "integer"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0"] + } +] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_value.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_value.json new file mode 100644 index 0000000..a6c3a4d --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_value.json @@ -0,0 +1,101 @@ +[ + { + "xid": "5dd1e217-f7e5-4df1-a571-ed5a867784a5", + "configuration_setting_specification_xid": "55f06d20-3f40-4135-bbf5-4f45ac9641f8", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "P1D"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "b34d1711-9dc0-4f00-b999-544ca59c3e3d", + "configuration_setting_specification_xid": "e556bb20-8ac0-48ac-b1b3-3428b87bd0c0", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "PT10M"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "6f9d025d-3b10-42e7-a686-82ac8c390b06", + "configuration_setting_specification_xid": "82edba98-a43a-4e81-b91b-d23c24a7e632", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "P7D"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "7791726b-6938-4efa-bb1f-188825194ca3", + "configuration_setting_specification_xid": "2d0e5e8a-3d0b-48eb-89cc-beaf2825c6f2", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": 15}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "85d8ed95-9890-4735-a23b-b1744b9d9939", + "configuration_setting_specification_xid": "412e3184-af2f-4828-8743-ec45b959405b", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": false}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "f1b31a6b-6a04-4031-a869-e83197464cdb", + "configuration_setting_specification_xid": "fce81950-203a-441f-9c27-18809fef462d", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "90"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "cab58f94-d47a-4a63-aef6-0e81fd0b9394", + "configuration_setting_specification_xid": "15a9fba3-10c1-40f3-ab2e-6c223b436cf0", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "15"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "c92ec621-d798-428c-b030-13704f1fa03d", + "configuration_setting_specification_xid": "6e2bbcc1-5897-4761-97e1-67a034652af8", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "PT1H"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "aa19531f-8df4-4dde-9455-f28338c6c2ce", + "configuration_setting_specification_xid": "7c25b4b0-e4d0-11ec-b876-273ed73fd3ec", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "10"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "409508c2-843f-4fdd-873c-70d72e9f523c", + "configuration_setting_specification_xid": "fb1eeca0-595d-4296-8cfb-ff61b0984c13", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "PT1H"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "60fd989d-412d-4691-af26-760e579369a9", + "configuration_setting_specification_xid": "789b8a27-4118-49d5-828a-64f1ca6f96ca", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "P1D"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + } +] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.entitlement.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.entitlement.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.entitlement.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.entitlement_feature.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.entitlement_feature.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.entitlement_feature.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.event_detail_property.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.event_detail_property.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.event_detail_property.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.export_report_job.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.export_report_job.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.export_report_job.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.failover_events.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.failover_events.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.failover_events.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.feature_per_device_licensing_support.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.feature_per_device_licensing_support.json new file mode 100644 index 0000000..b7e39ca --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.feature_per_device_licensing_support.json @@ -0,0 +1,12 @@ +[ + { + "xid": "55f06d20-3f40-4135-bbf5-4f45ac9641f8", + "feature_name": "NVAIE_Licensing", + "is_per_device_licensing_supported": true + }, + { + "xid": "55f06d20-3f40-4135-bbf5-4f45ac9641f9", + "feature_name": "NVIDIA-vComputeServer", + "is_per_device_licensing_supported": true + } +] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.forced_feature_release.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.forced_feature_release.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.forced_feature_release.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_class_reference.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_class_reference.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_class_reference.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_condition.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_condition.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_condition.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_condition_binding.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_condition_binding.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_condition_binding.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_borrow_event_detail.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_borrow_event_detail.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_borrow_event_detail.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_event.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_event.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_event.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_event_type.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_event_type.json new file mode 100644 index 0000000..1470adc --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_event_type.json @@ -0,0 +1,20 @@ +[ + { + "xid": "e26f72d1-14f5-42e8-a6d9-35598882d1a4", + "name": "borrow", + "description": null, + "created_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "3907286e-2195-435f-bd25-a4c5e5b2a0c4", + "name": "renew", + "description": null, + "created_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "311b0593-594b-403d-b162-1f893333923d", + "name": "release", + "description": null, + "created_at": "2025-03-26 19:51:37.062607" + } +] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_feature.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_feature.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_feature.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_file_publication.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_file_publication.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_file_publication.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_key.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_key.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_key.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_pending_returns.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_pending_returns.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_pending_returns.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_org.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_org.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_org.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature_allotment_consumption.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature_allotment_consumption.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature_allotment_consumption.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature_running_counts.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature_running_counts.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature_running_counts.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.nll_file.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.nll_file.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.nll_file.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product.json new file mode 100644 index 0000000..cf63b2a --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product.json @@ -0,0 +1,209 @@ +[ + { + "xid": "bdfbde00-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVIDIA Virtual Applications", + "name": "NVIDIA Virtual Applications", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "bdfbe16d-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVIDIA Virtual PC", + "name": "NVIDIA Virtual PC", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "bdfbe308-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVIDIA RTX Virtual Workstation", + "name": "NVIDIA RTX Virtual Workstation", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "bdfbe405-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVIDIA vGaming", + "name": "NVIDIA vGaming", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "bdfbe509-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID Virtual Applications", + "name": "GRID Virtual Applications", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "bdfbe5c6-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID Virtual PC", + "name": "GRID Virtual PC", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "bdfbe6e8-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "Quadro Virtual Data Center Workstation", + "name": "Quadro Virtual Data Center Workstation", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "bdfbe7c8-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID vGaming", + "name": "GRID vGaming", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "bdfbe884-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVIDIA Virtual Compute Server", + "name": "NVIDIA Virtual Compute Server", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "c0ce7114-d8a5-40d4-b8b0-df204f4ff631", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVIDIA-vComputeServer-9.0", + "name": "NVIDIA-vComputeServer-9.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "2a99638e-493f-424b-bc3a-629935307490", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "vGaming_Flexera_License-0.1", + "name": "vGaming_Flexera_License-0.1", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "a013d60c-3cd6-4e61-ae51-018b5e342178", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID-Virtual-Apps-3.0", + "name": "GRID-Virtual-Apps-3.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "bb99c6a3-81ce-4439-aef5-9648e75dd878", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID-vGaming-NLS-Metered-8.0", + "name": "GRID-vGaming-NLS-Metered-8.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "c653e131-695c-4477-b77c-42ade3dcb02c", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID-Virtual-WS-Ext-2.0", + "name": "GRID-Virtual-WS-Ext-2.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "6fc224ef-e0b5-467b-9bbb-d31c9eb7c6fc", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID-vGaming-8.0", + "name": "GRID-vGaming-8.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "3c88888d-ebf3-4df7-9e86-c97d5b29b997", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID-Virtual-PC-2.0", + "name": "GRID-Virtual-PC-2.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "66744b41-1fff-49be-a5a6-4cbd71b1117e", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVAIE_Licensing-1.0", + "name": "NVAIE_Licensing-1.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "1d4e9ebc-a78c-41f4-a11a-de38a467b2ba", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVIDIA-vComputeServer NLS Metered-9.0", + "name": "NVIDIA-vComputeServer NLS Metered-9.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "2152f8aa-d17b-46f5-8f5f-6f8c0760ce9c", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "vGaming_FB_License-0.1", + "name": "vGaming_FB_License-0.1", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "54cbe0e8-7b35-4068-b058-e11f5b367c66", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "Quadro-Virtual-DWS-5.0", + "name": "Quadro-Virtual-DWS-5.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "07a1d2b5-c147-48bc-bf44-9390339ca388", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID-Virtual-WS-2.0", + "name": "GRID-Virtual-WS-2.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "82d7a5f0-0c26-11ef-b3b6-371045c70906", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "vGaming_Flexera_License-0.1", + "name": "vGaming_Flexera_License-0.1", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "f09b5c33-5c07-11ed-9fa6-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVIDIA OVE Licensing", + "name": "NVIDIA Omniverse Nucleus", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + } +] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_family.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_family.json new file mode 100644 index 0000000..5753781 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_family.json @@ -0,0 +1,10 @@ +[ + { + "xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "ems_identifier": "ems_id", + "name": "vgpu", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + } +] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_fulfillment.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_fulfillment.json new file mode 100644 index 0000000..ff396ce --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_fulfillment.json @@ -0,0 +1,186 @@ +[ + { + "xid": "be2769b9-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbde00-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be276d7b-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbe16d-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be276efe-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbe308-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be276ff0-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbe405-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be2770af-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbe509-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be277164-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbe5c6-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be277214-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbe6e8-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be2772c8-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbe7c8-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be277379-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbe884-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "cf0a5330-b583-4d9f-84bb-cfc8ce0917bb", + "product_xid": "07a1d2b5-c147-48bc-bf44-9390339ca388", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "90d0f05f-9431-4a15-86e7-740a4f08d457", + "product_xid": "1d4e9ebc-a78c-41f4-a11a-de38a467b2ba", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "327385dd-4ba8-4b3c-bc56-30bcf58ae9a3", + "product_xid": "2152f8aa-d17b-46f5-8f5f-6f8c0760ce9c", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "6733f2cc-0736-47ee-bcc8-20c4c624ce37", + "product_xid": "2a99638e-493f-424b-bc3a-629935307490", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "f35396a9-24f8-44b6-aa6a-493b335f4d56", + "product_xid": "3c88888d-ebf3-4df7-9e86-c97d5b29b997", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "6c7981d3-7192-4bfd-b7ec-ea2ad0b466dc", + "product_xid": "54cbe0e8-7b35-4068-b058-e11f5b367c66", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "9bd09610-6190-4684-9be6-3d9503833e80", + "product_xid": "66744b41-1fff-49be-a5a6-4cbd71b1117e", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "a4282e5b-ea08-4e0a-b724-7f4059ba99de", + "product_xid": "6fc224ef-e0b5-467b-9bbb-d31c9eb7c6fc", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "5cf793fc-1fb3-45c0-a711-d3112c775cbe", + "product_xid": "a013d60c-3cd6-4e61-ae51-018b5e342178", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "eb2d39a4-6370-4464-8a6a-ec3f42c69cb5", + "product_xid": "bb99c6a3-81ce-4439-aef5-9648e75dd878", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "e9df1c70-7fac-4c84-b54c-66e922b9791a", + "product_xid": "c0ce7114-d8a5-40d4-b8b0-df204f4ff631", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "6a4d5bcd-7b81-4e22-a289-ce3673e5cabf", + "product_xid": "c653e131-695c-4477-b77c-42ade3dcb02c", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "c4284597-5c09-11ed-9fa6-061a22468b59", + "product_xid": "f09b5c33-5c07-11ed-9fa6-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "9e162d3c-0c26-11ef-b3b6-371045c70906", + "product_xid": "82d7a5f0-0c26-11ef-b3b6-371045c70906", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + } +] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_fulfillment_feature.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_fulfillment_feature.json new file mode 100644 index 0000000..9c2a78a --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_fulfillment_feature.json @@ -0,0 +1,422 @@ +[ + { + "xid": "be531e98-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be2769b9-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-Apps", + "feature_version": "3.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be53219e-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276d7b-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-PC", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be5322f0-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276d7b-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "Quadro-Virtual-DWS", + "feature_version": "5.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 1, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be5323d8-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276d7b-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-WS", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 2, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be5324a6-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276d7b-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-WS-Ext", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 3, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be532568-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276efe-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "Quadro-Virtual-DWS", + "feature_version": "5.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be532630-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276efe-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-WS", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 1, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be5326e7-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276efe-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-WS-Ext", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 2, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be5327a7-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276ff0-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-vGaming", + "feature_version": "8.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be532923-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be2770af-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-Apps", + "feature_version": "3.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be5329e0-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277164-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-PC", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be532aa0-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277164-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "Quadro-Virtual-DWS", + "feature_version": "5.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 1, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be532b5c-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277164-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-WS", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 2, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be532c19-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277164-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-WS-Ext", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 3, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be532ccb-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277214-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "Quadro-Virtual-DWS", + "feature_version": "5.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be532d92-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277214-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-WS", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 1, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be532e45-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277214-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-WS-Ext", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 2, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be532efa-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be2772c8-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-vGaming", + "feature_version": "8.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be53306d-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277379-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "NVIDIA-vComputeServer", + "feature_version": "9.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be533228-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277379-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "NVIDIA-vComputeServer NLS Metered", + "feature_version": "9.0", + "license_type_identifier": "CONCURRENT_UNCOUNTED_SINGLE", + "evaluation_order_index": 2, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be5332f6-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277379-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "NVAIE_Licensing", + "feature_version": "1.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 3, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "9ca32d2b-736e-4e4f-8f5a-895a755b4c41", + "product_fulfillment_xid": "5cf793fc-1fb3-45c0-a711-d3112c775cbe", + "feature_identifier": "GRID-Virtual-Apps", + "feature_version": "3.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "d8b25329-f47f-43dc-a278-f2d38f9e939b", + "product_fulfillment_xid": "f35396a9-24f8-44b6-aa6a-493b335f4d56", + "feature_identifier": "GRID-Virtual-PC", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "e7102df8-d88a-4bd0-aa79-9a53d8b77888", + "product_fulfillment_xid": "cf0a5330-b583-4d9f-84bb-cfc8ce0917bb", + "feature_identifier": "GRID-Virtual-WS", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "30761db3-0afe-454d-b284-efba6d9b13a3", + "product_fulfillment_xid": "6a4d5bcd-7b81-4e22-a289-ce3673e5cabf", + "feature_identifier": "GRID-Virtual-WS-Ext", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "10fd7701-83ae-4caf-a27f-75880fab23f6", + "product_fulfillment_xid": "a4282e5b-ea08-4e0a-b724-7f4059ba99de", + "feature_identifier": "GRID-vGaming", + "feature_version": "8.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "cbd61276-fb1e-42e1-b844-43e94465da8f", + "product_fulfillment_xid": "9bd09610-6190-4684-9be6-3d9503833e80", + "feature_identifier": "NVAIE_Licensing", + "feature_version": "1.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "6b1c74b5-1511-46ee-9f12-8bc6d5636fef", + "product_fulfillment_xid": "90d0f05f-9431-4a15-86e7-740a4f08d457", + "feature_identifier": "NVIDIA-vComputeServer NLS Metered", + "feature_version": "9.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "db53af09-7295-48b7-b927-24b23690c959", + "product_fulfillment_xid": "e9df1c70-7fac-4c84-b54c-66e922b9791a", + "feature_identifier": "NVIDIA-vComputeServer", + "feature_version": "9.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "1f62be61-a887-4e54-a34e-61cfa7b2db30", + "product_fulfillment_xid": "6c7981d3-7192-4bfd-b7ec-ea2ad0b466dc", + "feature_identifier": "Quadro-Virtual-DWS", + "feature_version": "5.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "8a4b5e98-f1ca-4c18-b0d4-8f4f9f0462e2", + "product_fulfillment_xid": "327385dd-4ba8-4b3c-bc56-30bcf58ae9a3", + "feature_identifier": "vGaming_FB_License", + "feature_version": "0.1", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "a1dfe741-3e49-11ed-9fa6-061a22468b59", + "product_fulfillment_xid": "be2772c8-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "vGaming_Flexera_License", + "feature_version": "0.1", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 1, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "8eabcb08-3f0e-11ed-9fa6-061a22468b59", + "product_fulfillment_xid": "be2772c8-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "vGaming_FB_License", + "feature_version": "0.1", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 2, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "0c1552ca-3ef8-11ed-9fa6-061a22468b59", + "product_fulfillment_xid": "be276ff0-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "vGaming_Flexera_License", + "feature_version": "0.1", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 1, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "7fb1d01d-3f0e-11ed-9fa6-061a22468b59", + "product_fulfillment_xid": "be276ff0-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "vGaming_FB_License", + "feature_version": "0.1", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 2, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be53286a-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276ff0-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-vGaming-NLS-Metered", + "feature_version": "8.0", + "license_type_identifier": "CONCURRENT_UNCOUNTED_SINGLE", + "evaluation_order_index": 3, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be532fb2-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be2772c8-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-vGaming-NLS-Metered", + "feature_version": "8.0", + "license_type_identifier": "CONCURRENT_UNCOUNTED_SINGLE", + "evaluation_order_index": 3, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "15ff4f16-57a8-4593-93ec-58352a256f12", + "product_fulfillment_xid": "eb2d39a4-6370-4464-8a6a-ec3f42c69cb5", + "feature_identifier": "GRID-vGaming-NLS-Metered", + "feature_version": "8.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 3, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "6caeb4cf-360f-11ee-b67d-02f279bf2bff", + "product_fulfillment_xid": "be277379-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "NVAIE_Licensing", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 4, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "bf105e18-0c26-11ef-b3b6-371045c70906", + "product_fulfillment_xid": "9e162d3c-0c26-11ef-b3b6-371045c70906", + "feature_identifier": "vGaming_Flexera_License", + "feature_version": "0.1", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "31c3be8c-5c0a-11ed-9fa6-061a22468b59", + "product_fulfillment_xid": "c4284597-5c09-11ed-9fa6-061a22468b59", + "feature_identifier": "OVE_Licensing", + "feature_version": "1.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be533144-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277379-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "Quadro-Virtual-DWS", + "feature_version": "0.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 1, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + } +] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.public_private_key_pair.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.public_private_key_pair.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.public_private_key_pair.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.public_private_key_pair_kid.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.public_private_key_pair_kid.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.public_private_key_pair_kid.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.registered_origin.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.registered_origin.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.registered_origin.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.returned_license_allotment_feature.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.returned_license_allotment_feature.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.returned_license_allotment_feature.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.selection_rule.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.selection_rule.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.selection_rule.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.semantic_logging_activity_type.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.semantic_logging_activity_type.json new file mode 100644 index 0000000..e9f0d4f --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.semantic_logging_activity_type.json @@ -0,0 +1,44 @@ +[ + { + "xid": "23169ffc-84c6-4606-acb6-14296d53f1af", + "activity": 0, + "display_name": "Internal Failure", + "description": "internal failure event" + }, + { + "xid": "90e8e4e4-b976-43b7-b6cb-233dbf0445b1", + "activity": 1, + "display_name": "Directive", + "description": "directive event" + }, + { + "xid": "5ffd173e-29e4-41bf-9b4c-3c6076de6a53", + "activity": 100, + "display_name": "Leasing", + "description": "leasing event" + }, + { + "xid": "72fa1a14-7fbc-4de9-ae82-b247cc7460cd", + "activity": 300, + "display_name": "Telemetery Capture", + "description": "telemetery capture event" + }, + { + "xid": "360a3b38-b365-47d3-9ab7-f41d222929f1", + "activity": 400, + "display_name": "Diagnostic Capture", + "description": "diagnostic capture event" + }, + { + "xid": "9259815a-bab5-4fb1-815f-8389145c8cbc", + "activity": 200, + "display_name": "Admin", + "description": "audit event" + }, + { + "xid": "6f4e55a2-674f-494f-8584-42a4995c27cf", + "activity": 150, + "display_name": "Admin", + "description": "system audit event" + } +] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.semantic_logging_events.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.semantic_logging_events.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.semantic_logging_events.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_artifact.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_artifact.json new file mode 100644 index 0000000..c433cb1 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_artifact.json @@ -0,0 +1,47 @@ +[ + { + "xid": "b8cf3c25-4949-41b3-9ce5-11f4d66f748a", + "service_instance_xid": "d8c07e4a-f6a4-49d0-b2dc-3faf0e1bf2bd", + "namespace": "service_instance.identity", + "name": "public_key", + "value": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvN4tuxoTqb6q0duPdRkx\nWX9rl48bJ09JRdGNVMTfJUQiitCAr7aseXZarTwq5iyi+swR1KNF2B+pJT6SOudQ\nwbXZe1ZwgD4arel+d65ouTwcZLnb7If3auDQkXbu6sgMkgX5JfQn9eb+lStr8M6v\ntz7yYquHbbv8mGM1Ulca+O4nUwI5hLHpE8KA3dtVPfEOZVGmONzsNA4RrScT3aBI\nd5uCm6BkmL1EJEvFTSR2SX5Cnkuj6AhLIA0LwOmavJgxjl6MC9Np95qs6ll1C91f\nbXJ+U9ReCyUw0vIl41tv2+sZxcygYUoPG8Z1u5WvE3l00rfbW+OMzaEBM7RKOxBY\nZwIDAQAB\n-----END PUBLIC KEY-----", + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "1a4f360c-aa8e-43cc-9630-ee95fd107e88", + "service_instance_xid": "d8c07e4a-f6a4-49d0-b2dc-3faf0e1bf2bd", + "namespace": "service_instance.identity", + "name": "private_key", + "value": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAvN4tuxoTqb6q0duPdRkxWX9rl48bJ09JRdGNVMTfJUQiitCA\nr7aseXZarTwq5iyi+swR1KNF2B+pJT6SOudQwbXZe1ZwgD4arel+d65ouTwcZLnb\n7If3auDQkXbu6sgMkgX5JfQn9eb+lStr8M6vtz7yYquHbbv8mGM1Ulca+O4nUwI5\nhLHpE8KA3dtVPfEOZVGmONzsNA4RrScT3aBId5uCm6BkmL1EJEvFTSR2SX5Cnkuj\n6AhLIA0LwOmavJgxjl6MC9Np95qs6ll1C91fbXJ+U9ReCyUw0vIl41tv2+sZxcyg\nYUoPG8Z1u5WvE3l00rfbW+OMzaEBM7RKOxBYZwIDAQABAoIBAC8AB1dZXO1QAoho\n4CFe3JYODINR3IsCwxQ52rbuqy1F8GalDnErv24WkugrYe2XzBMnd4R4ASiQcHJR\nSOiZqdIa4/06fJKdYdxHj+5Om8cE+3fhfKY3C84wFhctBrWshNxN2jukr9EU4+PR\nQ3JQrQ+n/X+qefBH6MsvXRSZkp/Bjm7YbD5t0IFQIpxfrmc/cX7vfRgFmUOWu8ju\nKB3C5DSkhJzXAyfuq8zjN8gLTyEYQfqHtgQEu63DSaS+sWm8f2mmha2YZ4ixGiLJ\ngTwnoemJQmEOiqhBpYs/xfefP1IDpIXqx7F/LCWTNgAkUq6TSevcxgMdgyULGjWM\nN+oj5WECgYEAyTt8/7zsUa7As9n6gGDHM5xRSIftfSiI0QzkJfKI3Cua4Cl/c54F\nSoSdlNUNXUh1J2/b0Ukdi7AWjiuHVy1EAfu5rPNcWwsqE2bE9MXVY/MpsvyABEpi\n8QoMi47SDCpMf1W0cYIn3B8rLVLxlOVcZ6d9htaNQ6+MEGdXGU7SfNECgYEA8EU3\nWipQ1tbYpRcOItjVZNVCy2t7RcZoRSrtqc+bLtXXRPMhncly7ceQ22tf1Yxe11vO\nOxJnFlvXCxsZncta4tQd24/aoxmzGCBltVmXb1FcJly6/y9uurVdceeU2Vp0mxKZ\nZ9zQBBqtFvlMVAZOhSc63aZ7ByKJK/8i+tty77cCgYEAsCSoV9rxKNbEyylkwnb0\nJ1MPO2PwF/whNowIMMdJ0R9CJDFu5K9Phljq7tpHJn5EPk8FpP5RJHLwa2XixAZV\nXz8O2jrzfqYZIH52rKN3FFRHDetDy32pecAIFyje59MmvtcwaaM6bM3Dp5rQ6DqU\nVg8gK6UmZjcFbV5nuTlrueECgYBIhUvIvj76KYzof4X3xKTcM3ZeuclSbSlpvyRO\n/eekAk1gdVYvLu+uj27Mm6MobJ7vt7kOoWZWHFBS/NIFi6yaDFYawFfIpOgmnxiz\n3R/VLKR4u8KBZYqxdi6HQ9Psqt3JNJry+3YZ1wdpiMOeFO08SXP+FNLLe4QVsIOZ\nXgVaDwKBgFEIOAeFksIpx2l5TrgaV1f1e0rxilTsEsnBOrJSXjhKUGSkSGQyZirH\nPnc2z/QDXJuSeMX+w9nxJy+33kkBgkjvQnZpGgfitj/8ICmw+u4eCWL7cnu/UEbz\nzAI81NKnf1MN72uc8utYpz1ee4ALSUxa0vJGLQ6PRSQQGdlZv2iP\n-----END RSA PRIVATE KEY-----", + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "a3453cbf-1b9c-44f5-a9e8-7fdcc8d1ba78", + "service_instance_xid": "d8c07e4a-f6a4-49d0-b2dc-3faf0e1bf2bd", + "namespace": "service_instance.client.all", + "name": "public_key", + "value": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4hKQSjyWdWAvkStVPRhK\n5ObBDX6ghF4ULkmDB5iKdexAWPPKaHCGHER+1GGABsAwU9gn1nxhI1npnoM6a9qp\ncXwMRTf5R14zSGisyzug6SJSUykxnLG1K6uYTTQo95sXKee7bAzoHERhWK9Uxqki\nvLwW2rGiW8hRG4UHQ/Ea3OVrjPbRHfmsaJm4tbf2oBkZ1S3xhzQIIkrV8f3RUe1S\nxxQ/iftf5UaYOZzru6my4Sb/vIjEU66SiDnkJwbqVKdkI86q21YLXq7DMi+vAVIE\n5rc/SWYz/iRZ/McsRDrofVxQIoHq71613XEmTyQkRm0T/I44Yhynhe2qQLgf0hzu\nBQIDAQAB\n-----END PUBLIC KEY-----", + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "ef6e9c05-dc4e-49f3-b9b4-a0e1ed1151a5", + "service_instance_xid": "d8c07e4a-f6a4-49d0-b2dc-3faf0e1bf2bd", + "namespace": "service_instance.client.all", + "name": "private_key", + "value": "-----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEA4hKQSjyWdWAvkStVPRhK5ObBDX6ghF4ULkmDB5iKdexAWPPK\naHCGHER+1GGABsAwU9gn1nxhI1npnoM6a9qpcXwMRTf5R14zSGisyzug6SJSUykx\nnLG1K6uYTTQo95sXKee7bAzoHERhWK9UxqkivLwW2rGiW8hRG4UHQ/Ea3OVrjPbR\nHfmsaJm4tbf2oBkZ1S3xhzQIIkrV8f3RUe1SxxQ/iftf5UaYOZzru6my4Sb/vIjE\nU66SiDnkJwbqVKdkI86q21YLXq7DMi+vAVIE5rc/SWYz/iRZ/McsRDrofVxQIoHq\n71613XEmTyQkRm0T/I44Yhynhe2qQLgf0hzuBQIDAQABAoIBABpJh06iieo/E3jh\nXYl7nCXOsS8FBNwvZlBViu9krOD2ZisRufz37Jg33LmMVssyKMxvC37UuqTWLSSZ\n5L6qz94aywB3eDx0tyjZxxHgrp69N25lEVhDj6nyy4RaptLXzVM5l2EChTDYQKuD\nw6tP+nKQumWWlybt/YRiLQyY6gM6UBT8DX9ajy9AnJhu4wmE/mxX2ZHcAw9BNWZT\nCzprf5oTkkB8gHzufev56u1Lt11lg4cIg5JSwBeQH77uswKevLsaaT7ARlHZHrKz\n8bsY8kcxPwuSZr5lGV26DxrT3SUWOJhVYG2WZTzjySpfFnwMkBq/3mqeE48g2jfe\nQf4Y7JECgYEA6Y5DCzzM6Phaec6vX8PoB1iwqA75Rvqs+Bc3tYAf1wdz4v7zvHOA\n0E0jAuXpKwkEimHxPt6GbCOtwPDcyLj+P/44vWI+Z0Hg8x2d0u8aBVrLIA/sOowy\nUBlbYMXLTPpGnFwkE5wOfH5oo2A/AtdP7lJlKQIrFyprCNx8dMw/tY0CgYEA98w0\n366/u+/GcsCv4utOyaTgZBoyww+FY3SInSOpo2c8YDyHpdCkPh+2OuWex819UJnU\nl0jWCIR815LeMePlOnVVA1qSaA9RcqEAxWkvxaBllqOZtbGTt0ED7d0rxCDckfpW\nOS9OlXmsE6p5IcyJOremLIA6L/QpnNC9v0SWEFkCgYAJZcUC1b50/VE+p3ddBhf2\n+7WX/YpANePx05VVQ0OEtnMORi3ufkNHnmLzQecA6Ur6enhnjDKidUkPg2GO3gq0\n7ni//gz+wKLZhW6NRzunzYBw2NMrg+qeWHbZzPuiLEvdDMQS2eunTLrPIBdI+Prp\nXv1dCg5Lz1QhNiX32SQTHQKBgAiuZsvPW3hCFjm+9mqEw+XcmN/o6w5aZNnvIzoe\nHbtTypG0jSwJ+zcR9Vhq4v0s/c7tFL2YF6eEvLrwskgdK9K4eZn8elSa9MeHTHee\nD8ZksCpu4Nu0tPAenvyeWwIsBI44rvyh46bo9FZcCpJckBI2jOPSOjej3jFYPs2M\noZVBAoGAX3Eoejuq4mAy8nqAc6B+9lFgLfJgpaDj4In3PLWazfkQtUSQk7fYMU9B\nhRj8bTT27IN4V/BgLBUtIWXCqHya3HzgSv5jOwPWJueLi7HYdLeAnEOoZQRgjtXC\nhklDEonJ90Ni5cPzQMq4em9pynU6nQK+fBWVHCStBhcBIe+gL7E=\n-----END RSA PRIVATE KEY-----", + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "219f0685-dd0a-4df6-a5b4-1f38bbac9f6f", + "service_instance_xid": "d8c07e4a-f6a4-49d0-b2dc-3faf0e1bf2bd", + "namespace": "global.identity", + "name": "public_key", + "value": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtqeqqbZqDXnQMO54tXoZ\nmxrOQ+Av6sarE6sMlf+tFOLRrcWsbgf6tLILyQ1fODKcCgOHs+QNbWIr2pA+SAp5\nfa8jIVzWIJmf5i08iLAzZNfM8PXUmx6tKHlyl8xPtwy9pp7sigt2hx7gDgTDD+Uf\nCePSMH/Cko+rQrornc6P0WoabMZ6gd0NR3T/jGEIIBbJ5M2hoPY3GOEn79/u4R7R\nWrH4FzoVKC4D43AGSSKHIpAS7m3l+B0achSXAgbvVOlCEv9PoivLS4ANw/gArImw\nJpYqP4CwxTrt6OARG5fodeHrqhxv3NYof38N7ByLzEUNm8tmtXTXGY3Lz68LQ4X4\nmQIDAQAB\n-----END PUBLIC KEY-----", + "created_at": "2025-03-26 19:51:37.781301", + "last_updated_at": "2025-03-26 19:51:37.781301" + } +] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_migration_job.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_migration_job.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_migration_job.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_state.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_state.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_state.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.users.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.users.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.users.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.virtual_group.json b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.virtual_group.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/1-initial/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.virtual_group.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/request_routing.alert_configuration.json b/doc/database/2-after-download-instance-token/request_routing.alert_configuration.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/request_routing.alert_configuration.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/request_routing.global_configuration.json b/doc/database/2-after-download-instance-token/request_routing.global_configuration.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/request_routing.global_configuration.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/request_routing.license_allotment_reference.json b/doc/database/2-after-download-instance-token/request_routing.license_allotment_reference.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/request_routing.license_allotment_reference.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/request_routing.license_allotment_service_instance.json b/doc/database/2-after-download-instance-token/request_routing.license_allotment_service_instance.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/request_routing.license_allotment_service_instance.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/request_routing.origin_interim.json b/doc/database/2-after-download-instance-token/request_routing.origin_interim.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/request_routing.origin_interim.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/request_routing.origin_service_instance.json b/doc/database/2-after-download-instance-token/request_routing.origin_service_instance.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/request_routing.origin_service_instance.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/request_routing.service_instance.json b/doc/database/2-after-download-instance-token/request_routing.service_instance.json new file mode 100644 index 0000000..c69da08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/request_routing.service_instance.json @@ -0,0 +1,15 @@ +[ + { + "xid": "d8c07e4a-f6a4-49d0-b2dc-3faf0e1bf2bd", + "secret_identifier_ref": "45798d4d-b25a-434f-bb59-9c9a68591a30", + "service_instance_type_xid": "c92a973e-424a-463a-b48f-24b9f1441272", + "org_name": "", + "name": "DEFAULT_2025-03-26_19:51:36", + "description": "ON_PREM_SERVICE_INSTANCE", + "state": "setup_uninitialized", + "detail": {}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "instant_clone_support": false + } +] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/request_routing.service_instance_type.json b/doc/database/2-after-download-instance-token/request_routing.service_instance_type.json new file mode 100644 index 0000000..dcdfeb3 --- /dev/null +++ b/doc/database/2-after-download-instance-token/request_routing.service_instance_type.json @@ -0,0 +1,16 @@ +[ + { + "xid": "c92a973e-424a-463a-b48f-24b9f1441272", + "name": "On-prem", + "description": "On-prem service instance", + "created_at": "2025-03-26 19:48:36.181435", + "last_updated_at": "2025-03-26 19:48:36.181435" + }, + { + "xid": "83cc294f-671f-4823-8c94-0d95f9b01904", + "name": "Cloud", + "description": "Cloud service instance", + "created_at": "2025-03-26 19:48:36.186564", + "last_updated_at": "2025-03-26 19:48:36.186564" + } +] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.api_key.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.api_key.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.api_key.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.audit_event.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.audit_event.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.audit_event.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.captured_event.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.captured_event.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.captured_event.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration.json new file mode 100644 index 0000000..a2540d2 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration.json @@ -0,0 +1,29 @@ +[ + { + "property_name": "METRICS_COLLECTION", + "property_value": {"value": 1}, + "created_at": "2025-03-26 19:51:37.062607", + "created_by": null, + "last_updated_at": "2025-03-26 19:51:37.062607", + "last_updated_by": null, + "description": "settings for collection of Appliance metrics in minutes" + }, + { + "property_name": "METRICS_CLEAN_UP", + "property_value": {"value": 7}, + "created_at": "2025-03-26 19:51:37.062607", + "created_by": null, + "last_updated_at": "2025-03-26 19:51:37.062607", + "last_updated_by": null, + "description": "settings for deletion of Appliance metrics collected in days" + }, + { + "property_name": "DLS_SI_FEATURE_DISPLAY_MAPPING", + "property_value": {"GRID-vGaming" : "NVIDIA vGaming", "GRID-Virtual-Apps" : "NVIDIA Virtual Applications", "GRID-Virtual-PC" : "NVIDIA Virtual PC", "GRID-Virtual-WS" : "NVIDIA RTX Virtual Workstation", "NVIDIA-vComputeServer" : "NVIDIA Virtual Compute Server", "Quadro-Virtual-DWS" : "NVIDIA RTX Virtual Workstation", "OVE_Licensing" : "NVIDIA OVE Licensing"}, + "created_at": "2025-03-26 19:51:37.062607", + "created_by": null, + "last_updated_at": "2025-03-26 19:51:37.062607", + "last_updated_by": null, + "description": null + } +] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_scope.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_scope.json new file mode 100644 index 0000000..2f13331 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_scope.json @@ -0,0 +1,26 @@ +[ + { + "xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "name": "global", + "description": "Global scope", + "rank": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "dea45ef9-80e2-4829-a390-c601c77591ab", + "name": "license-server", + "description": "Licence server scope", + "rank": 4, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "6c8ba662-f319-4a35-b780-3eb420c328f0", + "name": "service-instance", + "description": "Service Instance Scope", + "rank": 3, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + } +] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_specification.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_specification.json new file mode 100644 index 0000000..afb1529 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_specification.json @@ -0,0 +1,101 @@ +[ + { + "xid": "412e3184-af2f-4828-8743-ec45b959405b", + "name": "offline_lease", + "description": "Setting for offline lease", + "value_specification": {"data_type": "boolean"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0", "dea45ef9-80e2-4829-a390-c601c77591ab"] + }, + { + "xid": "fce81950-203a-441f-9c27-18809fef462d", + "name": "admin_event_purge_time", + "description": "Time setting in days to delete admin events older than specified", + "value_specification": {"max": "730", "min": "1", "data_type": "integer"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0"] + }, + { + "xid": "15a9fba3-10c1-40f3-ab2e-6c223b436cf0", + "name": "lease_event_purge_time", + "description": "Time setting in days to delete lease events older than specified", + "value_specification": {"max": "90", "min": "1", "data_type": "integer"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0"] + }, + { + "xid": "2d0e5e8a-3d0b-48eb-89cc-beaf2825c6f2", + "name": "default_renewal_period", + "description": "Default renewal period as percentage of lease borrow duration", + "value_specification": {"max": "95", "min": "15", "data_type": "integer"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0", "dea45ef9-80e2-4829-a390-c601c77591ab"] + }, + { + "xid": "e556bb20-8ac0-48ac-b1b3-3428b87bd0c0", + "name": "min_lease_period", + "description": "If clients pass any lease period value in lease borrow or renew requests it should be greater than configured or default Min Lease Period, otherwise Min Lease Period will be used for lease duration", + "value_specification": {"max": "P30D", "min": "PT10M", "data_type": "iso8601duration"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0", "dea45ef9-80e2-4829-a390-c601c77591ab"] + }, + { + "xid": "82edba98-a43a-4e81-b91b-d23c24a7e632", + "name": "max_lease_period", + "description": "If clients pass any lease period value in lease borrow or renew requests it should be less than configured or default Max Lease Period, otherwise Max Lease Period will be used for lease duration", + "value_specification": {"max": "P365D", "min": "PT10M", "data_type": "iso8601duration"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0", "dea45ef9-80e2-4829-a390-c601c77591ab"] + }, + { + "xid": "6e2bbcc1-5897-4761-97e1-67a034652af8", + "name": "auth_token_expiry_time", + "description": "Shorter expiry time leads to more secure communication but increases network calls. Longer expiry time leads to reduced network calls but less secured communication", + "value_specification": {"max": "P1D", "min": "PT1H", "data_type": "iso8601duration"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0"] + }, + { + "xid": "55f06d20-3f40-4135-bbf5-4f45ac9641f8", + "name": "default_lease_period", + "description": "This lease duration value is used if clients do not pass any lease period in lease borrow or renew requests", + "value_specification": {"max": "P365D", "min": "PT10M", "data_type": "iso8601duration"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0", "dea45ef9-80e2-4829-a390-c601c77591ab"] + }, + { + "xid": "fb1eeca0-595d-4296-8cfb-ff61b0984c13", + "name": "window_for_purging_inactive_clients", + "description": "Licensed clients which do not have any active leases and there is no lease activity in this configured window will be purged", + "value_specification": {"max": "P30D", "min": "PT1H", "data_type": "iso8601duration"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0"] + }, + { + "xid": "789b8a27-4118-49d5-828a-64f1ca6f96ca", + "name": "inactive_clients_registration_time_threshold", + "description": "Time window of client registration to consider when purging inactive clients", + "value_specification": {"max": "P30D", "min": "P1D", "data_type": "iso8601duration"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0"] + }, + { + "xid": "7c25b4b0-e4d0-11ec-b876-273ed73fd3ec", + "name": "volume_disk_allocation_in_gb", + "description": "Postgres volume size attached to the container.(This setting is not applicable for VM based appliances where the volume size is computed by the system )", + "value_specification": {"max": "1000", "min": "10", "data_type": "integer"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0"] + } +] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_value.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_value.json new file mode 100644 index 0000000..a6c3a4d --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_value.json @@ -0,0 +1,101 @@ +[ + { + "xid": "5dd1e217-f7e5-4df1-a571-ed5a867784a5", + "configuration_setting_specification_xid": "55f06d20-3f40-4135-bbf5-4f45ac9641f8", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "P1D"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "b34d1711-9dc0-4f00-b999-544ca59c3e3d", + "configuration_setting_specification_xid": "e556bb20-8ac0-48ac-b1b3-3428b87bd0c0", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "PT10M"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "6f9d025d-3b10-42e7-a686-82ac8c390b06", + "configuration_setting_specification_xid": "82edba98-a43a-4e81-b91b-d23c24a7e632", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "P7D"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "7791726b-6938-4efa-bb1f-188825194ca3", + "configuration_setting_specification_xid": "2d0e5e8a-3d0b-48eb-89cc-beaf2825c6f2", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": 15}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "85d8ed95-9890-4735-a23b-b1744b9d9939", + "configuration_setting_specification_xid": "412e3184-af2f-4828-8743-ec45b959405b", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": false}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "f1b31a6b-6a04-4031-a869-e83197464cdb", + "configuration_setting_specification_xid": "fce81950-203a-441f-9c27-18809fef462d", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "90"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "cab58f94-d47a-4a63-aef6-0e81fd0b9394", + "configuration_setting_specification_xid": "15a9fba3-10c1-40f3-ab2e-6c223b436cf0", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "15"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "c92ec621-d798-428c-b030-13704f1fa03d", + "configuration_setting_specification_xid": "6e2bbcc1-5897-4761-97e1-67a034652af8", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "PT1H"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "aa19531f-8df4-4dde-9455-f28338c6c2ce", + "configuration_setting_specification_xid": "7c25b4b0-e4d0-11ec-b876-273ed73fd3ec", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "10"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "409508c2-843f-4fdd-873c-70d72e9f523c", + "configuration_setting_specification_xid": "fb1eeca0-595d-4296-8cfb-ff61b0984c13", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "PT1H"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "60fd989d-412d-4691-af26-760e579369a9", + "configuration_setting_specification_xid": "789b8a27-4118-49d5-828a-64f1ca6f96ca", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "P1D"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + } +] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.entitlement.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.entitlement.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.entitlement.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.entitlement_feature.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.entitlement_feature.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.entitlement_feature.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.event_detail_property.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.event_detail_property.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.event_detail_property.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.export_report_job.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.export_report_job.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.export_report_job.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.failover_events.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.failover_events.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.failover_events.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.feature_per_device_licensing_support.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.feature_per_device_licensing_support.json new file mode 100644 index 0000000..b7e39ca --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.feature_per_device_licensing_support.json @@ -0,0 +1,12 @@ +[ + { + "xid": "55f06d20-3f40-4135-bbf5-4f45ac9641f8", + "feature_name": "NVAIE_Licensing", + "is_per_device_licensing_supported": true + }, + { + "xid": "55f06d20-3f40-4135-bbf5-4f45ac9641f9", + "feature_name": "NVIDIA-vComputeServer", + "is_per_device_licensing_supported": true + } +] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.forced_feature_release.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.forced_feature_release.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.forced_feature_release.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_class_reference.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_class_reference.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_class_reference.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_condition.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_condition.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_condition.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_condition_binding.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_condition_binding.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_condition_binding.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_borrow_event_detail.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_borrow_event_detail.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_borrow_event_detail.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_event.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_event.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_event.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_event_type.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_event_type.json new file mode 100644 index 0000000..1470adc --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_event_type.json @@ -0,0 +1,20 @@ +[ + { + "xid": "e26f72d1-14f5-42e8-a6d9-35598882d1a4", + "name": "borrow", + "description": null, + "created_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "3907286e-2195-435f-bd25-a4c5e5b2a0c4", + "name": "renew", + "description": null, + "created_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "311b0593-594b-403d-b162-1f893333923d", + "name": "release", + "description": null, + "created_at": "2025-03-26 19:51:37.062607" + } +] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_feature.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_feature.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_feature.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_file_publication.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_file_publication.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_file_publication.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_key.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_key.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_key.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_pending_returns.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_pending_returns.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_pending_returns.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_org.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_org.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_org.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature_allotment_consumption.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature_allotment_consumption.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature_allotment_consumption.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature_running_counts.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature_running_counts.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature_running_counts.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.nll_file.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.nll_file.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.nll_file.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product.json new file mode 100644 index 0000000..cf63b2a --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product.json @@ -0,0 +1,209 @@ +[ + { + "xid": "bdfbde00-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVIDIA Virtual Applications", + "name": "NVIDIA Virtual Applications", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "bdfbe16d-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVIDIA Virtual PC", + "name": "NVIDIA Virtual PC", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "bdfbe308-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVIDIA RTX Virtual Workstation", + "name": "NVIDIA RTX Virtual Workstation", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "bdfbe405-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVIDIA vGaming", + "name": "NVIDIA vGaming", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "bdfbe509-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID Virtual Applications", + "name": "GRID Virtual Applications", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "bdfbe5c6-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID Virtual PC", + "name": "GRID Virtual PC", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "bdfbe6e8-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "Quadro Virtual Data Center Workstation", + "name": "Quadro Virtual Data Center Workstation", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "bdfbe7c8-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID vGaming", + "name": "GRID vGaming", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "bdfbe884-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVIDIA Virtual Compute Server", + "name": "NVIDIA Virtual Compute Server", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "c0ce7114-d8a5-40d4-b8b0-df204f4ff631", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVIDIA-vComputeServer-9.0", + "name": "NVIDIA-vComputeServer-9.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "2a99638e-493f-424b-bc3a-629935307490", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "vGaming_Flexera_License-0.1", + "name": "vGaming_Flexera_License-0.1", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "a013d60c-3cd6-4e61-ae51-018b5e342178", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID-Virtual-Apps-3.0", + "name": "GRID-Virtual-Apps-3.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "bb99c6a3-81ce-4439-aef5-9648e75dd878", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID-vGaming-NLS-Metered-8.0", + "name": "GRID-vGaming-NLS-Metered-8.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "c653e131-695c-4477-b77c-42ade3dcb02c", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID-Virtual-WS-Ext-2.0", + "name": "GRID-Virtual-WS-Ext-2.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "6fc224ef-e0b5-467b-9bbb-d31c9eb7c6fc", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID-vGaming-8.0", + "name": "GRID-vGaming-8.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "3c88888d-ebf3-4df7-9e86-c97d5b29b997", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID-Virtual-PC-2.0", + "name": "GRID-Virtual-PC-2.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "66744b41-1fff-49be-a5a6-4cbd71b1117e", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVAIE_Licensing-1.0", + "name": "NVAIE_Licensing-1.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "1d4e9ebc-a78c-41f4-a11a-de38a467b2ba", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVIDIA-vComputeServer NLS Metered-9.0", + "name": "NVIDIA-vComputeServer NLS Metered-9.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "2152f8aa-d17b-46f5-8f5f-6f8c0760ce9c", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "vGaming_FB_License-0.1", + "name": "vGaming_FB_License-0.1", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "54cbe0e8-7b35-4068-b058-e11f5b367c66", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "Quadro-Virtual-DWS-5.0", + "name": "Quadro-Virtual-DWS-5.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "07a1d2b5-c147-48bc-bf44-9390339ca388", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID-Virtual-WS-2.0", + "name": "GRID-Virtual-WS-2.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "82d7a5f0-0c26-11ef-b3b6-371045c70906", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "vGaming_Flexera_License-0.1", + "name": "vGaming_Flexera_License-0.1", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "f09b5c33-5c07-11ed-9fa6-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVIDIA OVE Licensing", + "name": "NVIDIA Omniverse Nucleus", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + } +] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_family.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_family.json new file mode 100644 index 0000000..5753781 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_family.json @@ -0,0 +1,10 @@ +[ + { + "xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "ems_identifier": "ems_id", + "name": "vgpu", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + } +] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_fulfillment.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_fulfillment.json new file mode 100644 index 0000000..ff396ce --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_fulfillment.json @@ -0,0 +1,186 @@ +[ + { + "xid": "be2769b9-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbde00-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be276d7b-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbe16d-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be276efe-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbe308-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be276ff0-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbe405-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be2770af-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbe509-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be277164-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbe5c6-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be277214-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbe6e8-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be2772c8-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbe7c8-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be277379-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbe884-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "cf0a5330-b583-4d9f-84bb-cfc8ce0917bb", + "product_xid": "07a1d2b5-c147-48bc-bf44-9390339ca388", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "90d0f05f-9431-4a15-86e7-740a4f08d457", + "product_xid": "1d4e9ebc-a78c-41f4-a11a-de38a467b2ba", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "327385dd-4ba8-4b3c-bc56-30bcf58ae9a3", + "product_xid": "2152f8aa-d17b-46f5-8f5f-6f8c0760ce9c", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "6733f2cc-0736-47ee-bcc8-20c4c624ce37", + "product_xid": "2a99638e-493f-424b-bc3a-629935307490", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "f35396a9-24f8-44b6-aa6a-493b335f4d56", + "product_xid": "3c88888d-ebf3-4df7-9e86-c97d5b29b997", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "6c7981d3-7192-4bfd-b7ec-ea2ad0b466dc", + "product_xid": "54cbe0e8-7b35-4068-b058-e11f5b367c66", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "9bd09610-6190-4684-9be6-3d9503833e80", + "product_xid": "66744b41-1fff-49be-a5a6-4cbd71b1117e", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "a4282e5b-ea08-4e0a-b724-7f4059ba99de", + "product_xid": "6fc224ef-e0b5-467b-9bbb-d31c9eb7c6fc", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "5cf793fc-1fb3-45c0-a711-d3112c775cbe", + "product_xid": "a013d60c-3cd6-4e61-ae51-018b5e342178", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "eb2d39a4-6370-4464-8a6a-ec3f42c69cb5", + "product_xid": "bb99c6a3-81ce-4439-aef5-9648e75dd878", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "e9df1c70-7fac-4c84-b54c-66e922b9791a", + "product_xid": "c0ce7114-d8a5-40d4-b8b0-df204f4ff631", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "6a4d5bcd-7b81-4e22-a289-ce3673e5cabf", + "product_xid": "c653e131-695c-4477-b77c-42ade3dcb02c", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "c4284597-5c09-11ed-9fa6-061a22468b59", + "product_xid": "f09b5c33-5c07-11ed-9fa6-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "9e162d3c-0c26-11ef-b3b6-371045c70906", + "product_xid": "82d7a5f0-0c26-11ef-b3b6-371045c70906", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + } +] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_fulfillment_feature.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_fulfillment_feature.json new file mode 100644 index 0000000..9c2a78a --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_fulfillment_feature.json @@ -0,0 +1,422 @@ +[ + { + "xid": "be531e98-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be2769b9-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-Apps", + "feature_version": "3.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be53219e-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276d7b-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-PC", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be5322f0-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276d7b-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "Quadro-Virtual-DWS", + "feature_version": "5.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 1, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be5323d8-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276d7b-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-WS", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 2, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be5324a6-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276d7b-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-WS-Ext", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 3, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be532568-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276efe-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "Quadro-Virtual-DWS", + "feature_version": "5.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be532630-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276efe-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-WS", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 1, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be5326e7-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276efe-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-WS-Ext", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 2, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be5327a7-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276ff0-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-vGaming", + "feature_version": "8.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be532923-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be2770af-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-Apps", + "feature_version": "3.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be5329e0-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277164-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-PC", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be532aa0-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277164-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "Quadro-Virtual-DWS", + "feature_version": "5.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 1, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be532b5c-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277164-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-WS", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 2, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be532c19-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277164-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-WS-Ext", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 3, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be532ccb-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277214-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "Quadro-Virtual-DWS", + "feature_version": "5.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be532d92-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277214-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-WS", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 1, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be532e45-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277214-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-WS-Ext", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 2, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be532efa-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be2772c8-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-vGaming", + "feature_version": "8.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be53306d-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277379-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "NVIDIA-vComputeServer", + "feature_version": "9.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be533228-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277379-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "NVIDIA-vComputeServer NLS Metered", + "feature_version": "9.0", + "license_type_identifier": "CONCURRENT_UNCOUNTED_SINGLE", + "evaluation_order_index": 2, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be5332f6-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277379-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "NVAIE_Licensing", + "feature_version": "1.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 3, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "9ca32d2b-736e-4e4f-8f5a-895a755b4c41", + "product_fulfillment_xid": "5cf793fc-1fb3-45c0-a711-d3112c775cbe", + "feature_identifier": "GRID-Virtual-Apps", + "feature_version": "3.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "d8b25329-f47f-43dc-a278-f2d38f9e939b", + "product_fulfillment_xid": "f35396a9-24f8-44b6-aa6a-493b335f4d56", + "feature_identifier": "GRID-Virtual-PC", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "e7102df8-d88a-4bd0-aa79-9a53d8b77888", + "product_fulfillment_xid": "cf0a5330-b583-4d9f-84bb-cfc8ce0917bb", + "feature_identifier": "GRID-Virtual-WS", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "30761db3-0afe-454d-b284-efba6d9b13a3", + "product_fulfillment_xid": "6a4d5bcd-7b81-4e22-a289-ce3673e5cabf", + "feature_identifier": "GRID-Virtual-WS-Ext", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "10fd7701-83ae-4caf-a27f-75880fab23f6", + "product_fulfillment_xid": "a4282e5b-ea08-4e0a-b724-7f4059ba99de", + "feature_identifier": "GRID-vGaming", + "feature_version": "8.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "cbd61276-fb1e-42e1-b844-43e94465da8f", + "product_fulfillment_xid": "9bd09610-6190-4684-9be6-3d9503833e80", + "feature_identifier": "NVAIE_Licensing", + "feature_version": "1.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "6b1c74b5-1511-46ee-9f12-8bc6d5636fef", + "product_fulfillment_xid": "90d0f05f-9431-4a15-86e7-740a4f08d457", + "feature_identifier": "NVIDIA-vComputeServer NLS Metered", + "feature_version": "9.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "db53af09-7295-48b7-b927-24b23690c959", + "product_fulfillment_xid": "e9df1c70-7fac-4c84-b54c-66e922b9791a", + "feature_identifier": "NVIDIA-vComputeServer", + "feature_version": "9.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "1f62be61-a887-4e54-a34e-61cfa7b2db30", + "product_fulfillment_xid": "6c7981d3-7192-4bfd-b7ec-ea2ad0b466dc", + "feature_identifier": "Quadro-Virtual-DWS", + "feature_version": "5.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "8a4b5e98-f1ca-4c18-b0d4-8f4f9f0462e2", + "product_fulfillment_xid": "327385dd-4ba8-4b3c-bc56-30bcf58ae9a3", + "feature_identifier": "vGaming_FB_License", + "feature_version": "0.1", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "a1dfe741-3e49-11ed-9fa6-061a22468b59", + "product_fulfillment_xid": "be2772c8-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "vGaming_Flexera_License", + "feature_version": "0.1", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 1, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "8eabcb08-3f0e-11ed-9fa6-061a22468b59", + "product_fulfillment_xid": "be2772c8-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "vGaming_FB_License", + "feature_version": "0.1", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 2, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "0c1552ca-3ef8-11ed-9fa6-061a22468b59", + "product_fulfillment_xid": "be276ff0-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "vGaming_Flexera_License", + "feature_version": "0.1", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 1, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "7fb1d01d-3f0e-11ed-9fa6-061a22468b59", + "product_fulfillment_xid": "be276ff0-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "vGaming_FB_License", + "feature_version": "0.1", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 2, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be53286a-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276ff0-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-vGaming-NLS-Metered", + "feature_version": "8.0", + "license_type_identifier": "CONCURRENT_UNCOUNTED_SINGLE", + "evaluation_order_index": 3, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be532fb2-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be2772c8-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-vGaming-NLS-Metered", + "feature_version": "8.0", + "license_type_identifier": "CONCURRENT_UNCOUNTED_SINGLE", + "evaluation_order_index": 3, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "15ff4f16-57a8-4593-93ec-58352a256f12", + "product_fulfillment_xid": "eb2d39a4-6370-4464-8a6a-ec3f42c69cb5", + "feature_identifier": "GRID-vGaming-NLS-Metered", + "feature_version": "8.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 3, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "6caeb4cf-360f-11ee-b67d-02f279bf2bff", + "product_fulfillment_xid": "be277379-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "NVAIE_Licensing", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 4, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "bf105e18-0c26-11ef-b3b6-371045c70906", + "product_fulfillment_xid": "9e162d3c-0c26-11ef-b3b6-371045c70906", + "feature_identifier": "vGaming_Flexera_License", + "feature_version": "0.1", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "31c3be8c-5c0a-11ed-9fa6-061a22468b59", + "product_fulfillment_xid": "c4284597-5c09-11ed-9fa6-061a22468b59", + "feature_identifier": "OVE_Licensing", + "feature_version": "1.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be533144-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277379-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "Quadro-Virtual-DWS", + "feature_version": "0.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 1, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + } +] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.public_private_key_pair.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.public_private_key_pair.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.public_private_key_pair.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.public_private_key_pair_kid.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.public_private_key_pair_kid.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.public_private_key_pair_kid.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.registered_origin.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.registered_origin.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.registered_origin.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.returned_license_allotment_feature.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.returned_license_allotment_feature.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.returned_license_allotment_feature.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.selection_rule.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.selection_rule.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.selection_rule.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.semantic_logging_activity_type.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.semantic_logging_activity_type.json new file mode 100644 index 0000000..e9f0d4f --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.semantic_logging_activity_type.json @@ -0,0 +1,44 @@ +[ + { + "xid": "23169ffc-84c6-4606-acb6-14296d53f1af", + "activity": 0, + "display_name": "Internal Failure", + "description": "internal failure event" + }, + { + "xid": "90e8e4e4-b976-43b7-b6cb-233dbf0445b1", + "activity": 1, + "display_name": "Directive", + "description": "directive event" + }, + { + "xid": "5ffd173e-29e4-41bf-9b4c-3c6076de6a53", + "activity": 100, + "display_name": "Leasing", + "description": "leasing event" + }, + { + "xid": "72fa1a14-7fbc-4de9-ae82-b247cc7460cd", + "activity": 300, + "display_name": "Telemetery Capture", + "description": "telemetery capture event" + }, + { + "xid": "360a3b38-b365-47d3-9ab7-f41d222929f1", + "activity": 400, + "display_name": "Diagnostic Capture", + "description": "diagnostic capture event" + }, + { + "xid": "9259815a-bab5-4fb1-815f-8389145c8cbc", + "activity": 200, + "display_name": "Admin", + "description": "audit event" + }, + { + "xid": "6f4e55a2-674f-494f-8584-42a4995c27cf", + "activity": 150, + "display_name": "Admin", + "description": "system audit event" + } +] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.semantic_logging_events.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.semantic_logging_events.json new file mode 100644 index 0000000..7ca7a05 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.semantic_logging_events.json @@ -0,0 +1,10 @@ +[ + { + "id": "f18f2a91-49bd-4d10-847e-b1999ee91458", + "ts": "2025-03-26 20:06:12.798370", + "activity": 200, + "context": {"SERVICE_INSTANCE_ID": "d8c07e4a-f6a4-49d0-b2dc-3faf0e1bf2bd", "description": "dls_admin logged in", "event_by": "dls_admin", "function_name": "login_user", "lineno": 946, "module_name": "nls_services_auth.controllers.logins_controller", "operation_id": "65849216-279e-4393-af2c-011f500146b8", "service_name": "nls_services_auth"}, + "detail": {"details": {"oc": {"service_instance_xid": "d8c07e4a-f6a4-49d0-b2dc-3faf0e1bf2bd"}}, "operation_id": "65849216-279e-4393-af2c-011f500146b8"}, + "metadata": {} + } +] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_artifact.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_artifact.json new file mode 100644 index 0000000..c433cb1 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_artifact.json @@ -0,0 +1,47 @@ +[ + { + "xid": "b8cf3c25-4949-41b3-9ce5-11f4d66f748a", + "service_instance_xid": "d8c07e4a-f6a4-49d0-b2dc-3faf0e1bf2bd", + "namespace": "service_instance.identity", + "name": "public_key", + "value": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvN4tuxoTqb6q0duPdRkx\nWX9rl48bJ09JRdGNVMTfJUQiitCAr7aseXZarTwq5iyi+swR1KNF2B+pJT6SOudQ\nwbXZe1ZwgD4arel+d65ouTwcZLnb7If3auDQkXbu6sgMkgX5JfQn9eb+lStr8M6v\ntz7yYquHbbv8mGM1Ulca+O4nUwI5hLHpE8KA3dtVPfEOZVGmONzsNA4RrScT3aBI\nd5uCm6BkmL1EJEvFTSR2SX5Cnkuj6AhLIA0LwOmavJgxjl6MC9Np95qs6ll1C91f\nbXJ+U9ReCyUw0vIl41tv2+sZxcygYUoPG8Z1u5WvE3l00rfbW+OMzaEBM7RKOxBY\nZwIDAQAB\n-----END PUBLIC KEY-----", + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "1a4f360c-aa8e-43cc-9630-ee95fd107e88", + "service_instance_xid": "d8c07e4a-f6a4-49d0-b2dc-3faf0e1bf2bd", + "namespace": "service_instance.identity", + "name": "private_key", + "value": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAvN4tuxoTqb6q0duPdRkxWX9rl48bJ09JRdGNVMTfJUQiitCA\nr7aseXZarTwq5iyi+swR1KNF2B+pJT6SOudQwbXZe1ZwgD4arel+d65ouTwcZLnb\n7If3auDQkXbu6sgMkgX5JfQn9eb+lStr8M6vtz7yYquHbbv8mGM1Ulca+O4nUwI5\nhLHpE8KA3dtVPfEOZVGmONzsNA4RrScT3aBId5uCm6BkmL1EJEvFTSR2SX5Cnkuj\n6AhLIA0LwOmavJgxjl6MC9Np95qs6ll1C91fbXJ+U9ReCyUw0vIl41tv2+sZxcyg\nYUoPG8Z1u5WvE3l00rfbW+OMzaEBM7RKOxBYZwIDAQABAoIBAC8AB1dZXO1QAoho\n4CFe3JYODINR3IsCwxQ52rbuqy1F8GalDnErv24WkugrYe2XzBMnd4R4ASiQcHJR\nSOiZqdIa4/06fJKdYdxHj+5Om8cE+3fhfKY3C84wFhctBrWshNxN2jukr9EU4+PR\nQ3JQrQ+n/X+qefBH6MsvXRSZkp/Bjm7YbD5t0IFQIpxfrmc/cX7vfRgFmUOWu8ju\nKB3C5DSkhJzXAyfuq8zjN8gLTyEYQfqHtgQEu63DSaS+sWm8f2mmha2YZ4ixGiLJ\ngTwnoemJQmEOiqhBpYs/xfefP1IDpIXqx7F/LCWTNgAkUq6TSevcxgMdgyULGjWM\nN+oj5WECgYEAyTt8/7zsUa7As9n6gGDHM5xRSIftfSiI0QzkJfKI3Cua4Cl/c54F\nSoSdlNUNXUh1J2/b0Ukdi7AWjiuHVy1EAfu5rPNcWwsqE2bE9MXVY/MpsvyABEpi\n8QoMi47SDCpMf1W0cYIn3B8rLVLxlOVcZ6d9htaNQ6+MEGdXGU7SfNECgYEA8EU3\nWipQ1tbYpRcOItjVZNVCy2t7RcZoRSrtqc+bLtXXRPMhncly7ceQ22tf1Yxe11vO\nOxJnFlvXCxsZncta4tQd24/aoxmzGCBltVmXb1FcJly6/y9uurVdceeU2Vp0mxKZ\nZ9zQBBqtFvlMVAZOhSc63aZ7ByKJK/8i+tty77cCgYEAsCSoV9rxKNbEyylkwnb0\nJ1MPO2PwF/whNowIMMdJ0R9CJDFu5K9Phljq7tpHJn5EPk8FpP5RJHLwa2XixAZV\nXz8O2jrzfqYZIH52rKN3FFRHDetDy32pecAIFyje59MmvtcwaaM6bM3Dp5rQ6DqU\nVg8gK6UmZjcFbV5nuTlrueECgYBIhUvIvj76KYzof4X3xKTcM3ZeuclSbSlpvyRO\n/eekAk1gdVYvLu+uj27Mm6MobJ7vt7kOoWZWHFBS/NIFi6yaDFYawFfIpOgmnxiz\n3R/VLKR4u8KBZYqxdi6HQ9Psqt3JNJry+3YZ1wdpiMOeFO08SXP+FNLLe4QVsIOZ\nXgVaDwKBgFEIOAeFksIpx2l5TrgaV1f1e0rxilTsEsnBOrJSXjhKUGSkSGQyZirH\nPnc2z/QDXJuSeMX+w9nxJy+33kkBgkjvQnZpGgfitj/8ICmw+u4eCWL7cnu/UEbz\nzAI81NKnf1MN72uc8utYpz1ee4ALSUxa0vJGLQ6PRSQQGdlZv2iP\n-----END RSA PRIVATE KEY-----", + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "a3453cbf-1b9c-44f5-a9e8-7fdcc8d1ba78", + "service_instance_xid": "d8c07e4a-f6a4-49d0-b2dc-3faf0e1bf2bd", + "namespace": "service_instance.client.all", + "name": "public_key", + "value": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4hKQSjyWdWAvkStVPRhK\n5ObBDX6ghF4ULkmDB5iKdexAWPPKaHCGHER+1GGABsAwU9gn1nxhI1npnoM6a9qp\ncXwMRTf5R14zSGisyzug6SJSUykxnLG1K6uYTTQo95sXKee7bAzoHERhWK9Uxqki\nvLwW2rGiW8hRG4UHQ/Ea3OVrjPbRHfmsaJm4tbf2oBkZ1S3xhzQIIkrV8f3RUe1S\nxxQ/iftf5UaYOZzru6my4Sb/vIjEU66SiDnkJwbqVKdkI86q21YLXq7DMi+vAVIE\n5rc/SWYz/iRZ/McsRDrofVxQIoHq71613XEmTyQkRm0T/I44Yhynhe2qQLgf0hzu\nBQIDAQAB\n-----END PUBLIC KEY-----", + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "ef6e9c05-dc4e-49f3-b9b4-a0e1ed1151a5", + "service_instance_xid": "d8c07e4a-f6a4-49d0-b2dc-3faf0e1bf2bd", + "namespace": "service_instance.client.all", + "name": "private_key", + "value": "-----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEA4hKQSjyWdWAvkStVPRhK5ObBDX6ghF4ULkmDB5iKdexAWPPK\naHCGHER+1GGABsAwU9gn1nxhI1npnoM6a9qpcXwMRTf5R14zSGisyzug6SJSUykx\nnLG1K6uYTTQo95sXKee7bAzoHERhWK9UxqkivLwW2rGiW8hRG4UHQ/Ea3OVrjPbR\nHfmsaJm4tbf2oBkZ1S3xhzQIIkrV8f3RUe1SxxQ/iftf5UaYOZzru6my4Sb/vIjE\nU66SiDnkJwbqVKdkI86q21YLXq7DMi+vAVIE5rc/SWYz/iRZ/McsRDrofVxQIoHq\n71613XEmTyQkRm0T/I44Yhynhe2qQLgf0hzuBQIDAQABAoIBABpJh06iieo/E3jh\nXYl7nCXOsS8FBNwvZlBViu9krOD2ZisRufz37Jg33LmMVssyKMxvC37UuqTWLSSZ\n5L6qz94aywB3eDx0tyjZxxHgrp69N25lEVhDj6nyy4RaptLXzVM5l2EChTDYQKuD\nw6tP+nKQumWWlybt/YRiLQyY6gM6UBT8DX9ajy9AnJhu4wmE/mxX2ZHcAw9BNWZT\nCzprf5oTkkB8gHzufev56u1Lt11lg4cIg5JSwBeQH77uswKevLsaaT7ARlHZHrKz\n8bsY8kcxPwuSZr5lGV26DxrT3SUWOJhVYG2WZTzjySpfFnwMkBq/3mqeE48g2jfe\nQf4Y7JECgYEA6Y5DCzzM6Phaec6vX8PoB1iwqA75Rvqs+Bc3tYAf1wdz4v7zvHOA\n0E0jAuXpKwkEimHxPt6GbCOtwPDcyLj+P/44vWI+Z0Hg8x2d0u8aBVrLIA/sOowy\nUBlbYMXLTPpGnFwkE5wOfH5oo2A/AtdP7lJlKQIrFyprCNx8dMw/tY0CgYEA98w0\n366/u+/GcsCv4utOyaTgZBoyww+FY3SInSOpo2c8YDyHpdCkPh+2OuWex819UJnU\nl0jWCIR815LeMePlOnVVA1qSaA9RcqEAxWkvxaBllqOZtbGTt0ED7d0rxCDckfpW\nOS9OlXmsE6p5IcyJOremLIA6L/QpnNC9v0SWEFkCgYAJZcUC1b50/VE+p3ddBhf2\n+7WX/YpANePx05VVQ0OEtnMORi3ufkNHnmLzQecA6Ur6enhnjDKidUkPg2GO3gq0\n7ni//gz+wKLZhW6NRzunzYBw2NMrg+qeWHbZzPuiLEvdDMQS2eunTLrPIBdI+Prp\nXv1dCg5Lz1QhNiX32SQTHQKBgAiuZsvPW3hCFjm+9mqEw+XcmN/o6w5aZNnvIzoe\nHbtTypG0jSwJ+zcR9Vhq4v0s/c7tFL2YF6eEvLrwskgdK9K4eZn8elSa9MeHTHee\nD8ZksCpu4Nu0tPAenvyeWwIsBI44rvyh46bo9FZcCpJckBI2jOPSOjej3jFYPs2M\noZVBAoGAX3Eoejuq4mAy8nqAc6B+9lFgLfJgpaDj4In3PLWazfkQtUSQk7fYMU9B\nhRj8bTT27IN4V/BgLBUtIWXCqHya3HzgSv5jOwPWJueLi7HYdLeAnEOoZQRgjtXC\nhklDEonJ90Ni5cPzQMq4em9pynU6nQK+fBWVHCStBhcBIe+gL7E=\n-----END RSA PRIVATE KEY-----", + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "219f0685-dd0a-4df6-a5b4-1f38bbac9f6f", + "service_instance_xid": "d8c07e4a-f6a4-49d0-b2dc-3faf0e1bf2bd", + "namespace": "global.identity", + "name": "public_key", + "value": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtqeqqbZqDXnQMO54tXoZ\nmxrOQ+Av6sarE6sMlf+tFOLRrcWsbgf6tLILyQ1fODKcCgOHs+QNbWIr2pA+SAp5\nfa8jIVzWIJmf5i08iLAzZNfM8PXUmx6tKHlyl8xPtwy9pp7sigt2hx7gDgTDD+Uf\nCePSMH/Cko+rQrornc6P0WoabMZ6gd0NR3T/jGEIIBbJ5M2hoPY3GOEn79/u4R7R\nWrH4FzoVKC4D43AGSSKHIpAS7m3l+B0achSXAgbvVOlCEv9PoivLS4ANw/gArImw\nJpYqP4CwxTrt6OARG5fodeHrqhxv3NYof38N7ByLzEUNm8tmtXTXGY3Lz68LQ4X4\nmQIDAQAB\n-----END PUBLIC KEY-----", + "created_at": "2025-03-26 19:51:37.781301", + "last_updated_at": "2025-03-26 19:51:37.781301" + } +] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_migration_job.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_migration_job.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_migration_job.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_state.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_state.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_state.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.users.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.users.json new file mode 100644 index 0000000..dce279b --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.users.json @@ -0,0 +1,10 @@ +[ + { + "xid": "828cdb4d-1b5d-4d62-b805-92a745a869d7", + "name": "dls_admin", + "password": "4a052d1fb49208bcd2a4eee6c22f1eea7c052a49cf99eb547a6f79c6d541f94a", + "secret": "28b22cb5-76db-4211-84a7-d2821293fe44", + "created_at": "2025-03-26 20:05:20.957439", + "last_updated_at": "2025-03-26 20:05:20.957439" + } +] \ No newline at end of file diff --git a/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.virtual_group.json b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.virtual_group.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/2-after-download-instance-token/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.virtual_group.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/request_routing.alert_configuration.json b/doc/database/3-after-upload-license/request_routing.alert_configuration.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/3-after-upload-license/request_routing.alert_configuration.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/request_routing.global_configuration.json b/doc/database/3-after-upload-license/request_routing.global_configuration.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/3-after-upload-license/request_routing.global_configuration.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/request_routing.license_allotment_reference.json b/doc/database/3-after-upload-license/request_routing.license_allotment_reference.json new file mode 100644 index 0000000..cc1dc59 --- /dev/null +++ b/doc/database/3-after-upload-license/request_routing.license_allotment_reference.json @@ -0,0 +1,7 @@ +[ + { + "xid": "4585c908-b375-4226-a838-a4a315c9b904", + "license_allotment_xid": "93b3129f-0a80-11f0-ad1e-0e4240b54003", + "detail": {"local": false, "activation_timestamp": "2025-03-26 20:36:15", "deactivation_timestamp": null} + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/request_routing.license_allotment_service_instance.json b/doc/database/3-after-upload-license/request_routing.license_allotment_service_instance.json new file mode 100644 index 0000000..801f660 --- /dev/null +++ b/doc/database/3-after-upload-license/request_routing.license_allotment_service_instance.json @@ -0,0 +1,9 @@ +[ + { + "xid": "b0b4d738-9f19-4fbe-b812-815eb992a7c0", + "service_instance_xid": "d8c07e4a-f6a4-49d0-b2dc-3faf0e1bf2bd", + "license_allotment_xid": "93b3129f-0a80-11f0-ad1e-0e4240b54003", + "created_at": "2025-03-26 20:26:20.000000", + "last_updated_at": "2025-03-26 20:26:20.000000" + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/request_routing.origin_interim.json b/doc/database/3-after-upload-license/request_routing.origin_interim.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/3-after-upload-license/request_routing.origin_interim.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/request_routing.origin_service_instance.json b/doc/database/3-after-upload-license/request_routing.origin_service_instance.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/3-after-upload-license/request_routing.origin_service_instance.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/request_routing.service_instance.json b/doc/database/3-after-upload-license/request_routing.service_instance.json new file mode 100644 index 0000000..1e5e9e9 --- /dev/null +++ b/doc/database/3-after-upload-license/request_routing.service_instance.json @@ -0,0 +1,15 @@ +[ + { + "xid": "d8c07e4a-f6a4-49d0-b2dc-3faf0e1bf2bd", + "secret_identifier_ref": "45798d4d-b25a-434f-bb59-9c9a68591a30", + "service_instance_type_xid": "c92a973e-424a-463a-b48f-24b9f1441272", + "org_name": "lic-0018z00002uq5maqat", + "name": "DEFAULT_2025-03-26_19:51:36", + "description": "ON_PREM_SERVICE_INSTANCE", + "state": "setup_registered", + "detail": {}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 20:36:14.205836", + "instant_clone_support": false + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/request_routing.service_instance_type.json b/doc/database/3-after-upload-license/request_routing.service_instance_type.json new file mode 100644 index 0000000..dcdfeb3 --- /dev/null +++ b/doc/database/3-after-upload-license/request_routing.service_instance_type.json @@ -0,0 +1,16 @@ +[ + { + "xid": "c92a973e-424a-463a-b48f-24b9f1441272", + "name": "On-prem", + "description": "On-prem service instance", + "created_at": "2025-03-26 19:48:36.181435", + "last_updated_at": "2025-03-26 19:48:36.181435" + }, + { + "xid": "83cc294f-671f-4823-8c94-0d95f9b01904", + "name": "Cloud", + "description": "Cloud service instance", + "created_at": "2025-03-26 19:48:36.186564", + "last_updated_at": "2025-03-26 19:48:36.186564" + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.api_key.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.api_key.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.api_key.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.audit_event.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.audit_event.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.audit_event.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.captured_event.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.captured_event.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.captured_event.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration.json new file mode 100644 index 0000000..cda6c39 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration.json @@ -0,0 +1,38 @@ +[ + { + "property_name": "METRICS_COLLECTION", + "property_value": {"value": 1}, + "created_at": "2025-03-26 19:51:37.062607", + "created_by": null, + "last_updated_at": "2025-03-26 19:51:37.062607", + "last_updated_by": null, + "description": "settings for collection of Appliance metrics in minutes" + }, + { + "property_name": "METRICS_CLEAN_UP", + "property_value": {"value": 7}, + "created_at": "2025-03-26 19:51:37.062607", + "created_by": null, + "last_updated_at": "2025-03-26 19:51:37.062607", + "last_updated_by": null, + "description": "settings for deletion of Appliance metrics collected in days" + }, + { + "property_name": "DLS_SI_CERTIFICATE", + "property_value": {"not_after": "2028-03-25T20:27:52.000Z", "ca_chain": "[\"-----BEGIN CERTIFICATE-----\\r\\nMIIF3TCCA8WgAwIBAgIUCpVszfecRrnPa3EGwPKuyWESBmMwDQYJKoZIhvcNAQELBQAwcjELMAkG\\r\\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExDzANBgNVBAoTBk52aWRpYTEnMCUGA1UECxMe\\r\\nTnZpZGlhIExpY2Vuc2luZyBTZXJ2aWNlIChOTFMpMRQwEgYDVQQDEwtOTFMgUm9vdCBDQTAeFw0y\\r\\nNDA5MjYwNzM4MTlaFw0zNDA5MjQwNzM4NDlaMHoxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxp\\r\\nZm9ybmlhMQ8wDQYDVQQKEwZOdmlkaWExJzAlBgNVBAsTHk52aWRpYSBMaWNlbnNpbmcgU2Vydmlj\\r\\nZSAoTkxTKTEcMBoGA1UEAxMTTkxTIEludGVybWVkaWF0ZSBDQTCCAiIwDQYJKoZIhvcNAQEBBQAD\\r\\nggIPADCCAgoCggIBAOIb5ZcYWR78WkJipEW4cOB2d3WkXhjzA9Omj0SBnA6fJad+zObguInmkgyB\\r\\nUC/0xMnHeEH1WQpZ0yZE1rdH0ziwPy07hmCgjMSC8iXSfV4QXoHzsQy80HSbD3dr0A5Fk9UrWdJu\\r\\nIlLnwqTfUjxMSqiVYbGI2JLVLDIPjnrCKgZ//vVTFWiMDQaGInDz5Qo3azHIt1Sw3u47/b88TzmK\\r\\ni3TMbjtAR3djlhQfJBY6nUdP8wWy2Fntx9fO7U723sp6cnGtHnbXGpon/QqxlPjT4RXXm1QmFQ/d\\r\\nyUmvmjoiJsCQ3v2KFJNei2bkUS29ZKPr4TGokojOilESQAQTLo+5s0cN7ZtPWvwZ4uets84GCRP5\\r\\ndC+aKoNQ7cg06A1tA3SxEL9r6D2LaTiheuWKFNiIJZzfmmbTPExsKt4Nzmv72wfG2i2+sY6l4f5x\\r\\nEFiKybn2EY1Hjpt0J3vL/goOOt/ejRtS5qKco3pu6zZBBWqB1qesA813AGgqbscht4y4m414rPmQ\\r\\naHA2PTe0JRDcradK75chFUOvLeIYD1Hy0XTxNxlhRA/5mFd2GkWZmtsW3D1iAV73VHAEvWDS0hXB\\r\\ng60B0y4d3fyYxI+pOTaZzsh0PAC2jUqDOhQ7dKELeYUKWsEDDMq9mg2bxqSNoQnQbITIsbu7IELu\\r\\nvmxIWT1omRptd5LrAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0G\\r\\nA1UdDgQWBBRKNST8UPeZYQgLZLEKMBGklaADHjAfBgNVHSMEGDAWgBRiEXE0RonjkPN+XBjnSQbo\\r\\nA8X3ajANBgkqhkiG9w0BAQsFAAOCAgEAEq5FaQWhTWt1hNfoz/BeDQ68O9PEGGveCPouElE8s/uG\\r\\nPHYSJpmg7dq5Qoxb5dpdq1mJX2rTgixJu/iC3uRUsirdH6wsVjjqz4YsoAz5VqjlkriFJpXlfOpp\\r\\nw18ex5C5p4x3TrlPCowMgf9h6VBR1iCq3VikVVguqSPP/zf9G3Qhitvqs0+m7KJnbwFA/bDLMET8\\r\\nTJS/r4XKQYisXfu95XrG2TTCaOwytqx+uepqwB74tFMznfdjzKyztqGwniKLrcZ3kOuM4cyo5ZT4\\r\\nOORCV6FWmbRq2OtttI4o85zsVNkY1JF8hvyvjygRiX5dQROza5EStkXvGO6532atFU43KNJvLanZ\\r\\nZTaxIJvZGWeKvrH+HTCANp11cgq5qcRRltQHb7KWweYNM4nyCjyBQm5vTm7g1uVI7llVm2Txx5dT\\r\\n5OtenaohmJIr6POeq8Y2Z+DJ8s3UpZoZCc3Vj5PQyNZiAx2ErN6XgrsmljG3w6+k2ooLpT9Sr1Ql\\r\\nKc8okN5SJGUOLuFI+h8jX1hHqpQejjNKy3UkTzjosYNq6Kk0h2Tl1i8iO+wY4Wb3GbL6GtP1rcjI\\r\\np/d9mxPNJONlp4a0koaMEpHTODT/xyVjU7FkUyKE9Uj1O/1lBEANYsFrQGfmuHAZTGf9J+cvkrz3\\r\\n56OFWPHcA7gxkpU8wftrVMLFeDvLIGc\\u003d\\r\\n-----END CERTIFICATE-----\"]", "not_before": "2025-03-26T20:27:22.000Z", "certificate": "-----BEGIN CERTIFICATE-----\r\nMIIE2zCCAsOgAwIBAgIUPyoRsVIJLnex1WKbERqLAQcXHcQwDQYJKoZIhvcNAQELBQAwejELMAkG\r\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExDzANBgNVBAoTBk52aWRpYTEnMCUGA1UECxMe\r\nTnZpZGlhIExpY2Vuc2luZyBTZXJ2aWNlIChOTFMpMRwwGgYDVQQDExNOTFMgSW50ZXJtZWRpYXRl\r\nIENBMB4XDTI1MDMyNjIwMjcyMloXDTI4MDMyNTIwMjc1MlowLzEtMCsGA1UEAxMkZDhjMDdlNGEt\r\nZjZhNC00OWQwLWIyZGMtM2ZhZjBlMWJmMmJkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC\r\nAQEAwAJLh9/L2l2Efl+TLWp2pCuwJZJBpcHcVbksrXRTfV9dEe+UY1atNbg0HE6yz03CWkeIkTeW\r\nzYkg7oF7bdZ/usZpTIRnK0bN/FzXeXkENOGNsLgcjSGWu8IP4mJcp/k7Ucg/FgDMbxVYifBKnrOh\r\nT7HZ21UQcXgik9iEnL0chAW/JmcEHMTofkj+BuKdyUqXHj4OKDLOhmPtKCKY0gv+0wL4t7alzsGS\r\nlXsRC/59ddCLyomHlRU5BJb+Fm73ZFmhEYhR3eindFzqXJhDXQpg9d0Mt42YTFfnlKG41ECdxtmH\r\nYOOw5sSweFsrx9Dzlfcx/SSg0q9OXP0wHv+kNd/CMQIDAQABo4GjMIGgMA4GA1UdDwEB/wQEAwID\r\nqDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHQYDVR0OBBYEFDtS2fehr07/mVr2ZCb5\r\n+BRuaWjNMB8GA1UdIwQYMBaAFEo1JPxQ95lhCAtksQowEaSVoAMeMC8GA1UdEQQoMCaCJGQ4YzA3\r\nZTRhLWY2YTQtNDlkMC1iMmRjLTNmYWYwZTFiZjJiZDANBgkqhkiG9w0BAQsFAAOCAgEAbrgK1TBm\r\nwUVkSGnGSy88RevUd3a52TxAYxGuVe/2qYuIkSoPfMJ1P5nbk6hnOjiBg5GGSrqv6Qwj+ZtPo6cm\r\nyg0Z8RXb5cboU+3Xru6HEQCsidLuC1bwbcsnmvyt4pJxjGG1MQvN9jBWBGiKvqSnDuLMW34eD7mg\r\nLm1W0QCMzTvxIxH2X/xylT2q7gkFdDPxHnMotYeFpeYmPn6nqI36Ot7xBv512RUZz5hdG6r20LSP\r\ndbHoBYZIbaS+wGTaAOFIpms1Xwe/S/ehQpMpArlzphqV+o9IOZn8BIRvpT3d4r8iV/a2TtbxPDVX\r\nOR/aooC9BRI7Q52b2V3L0aKYeC2P8bqqwoivBrWPnr12h+CRx18NvF7sxJ8A8O6h7+Os2psA22CX\r\nvDd0ngxnNy08CMgS1u98Nxg5nV2P596mLRY9X7dzgQikoabEfKtqdKOW4PJWI/wane44ju6vUZPK\r\n3MyAgUWJr34aB8Q0paou0atP9OW+KOeFuwICL02RQ7ke5IpBQrWSF/OlMxhnepzhnp1favk5W3rl\r\ncZNLQMFmeaxyKKrjowh3diBsfo2m6Qin/fkRA3w62Zfox37l5q4s+B/YPxMmrcJgoDFxxf2WYDc6\r\nsoqR7/ExG7kHasd+Th+oqaX8LGdGUfZMD/IY6wvOFJ1Smh7QgWTZbUyLRwTU6jZ40pM=\r\n-----END CERTIFICATE-----", "private_key": "ldQReVaQ4/+YaOtP7BTDFGoTd3sEs+XEXrrkg9xdI7CZJPkiz1wjSPkkzbzNX9usBfGc2NBh9gIHXrniMt6qE1q5OsXbTC3Qfus0S1KGTvIk5lj6/yyeY3dBJayBNt8pBSIydWJgQPvKnXlS43jkNryjEDjc7Po70D1OojmoSdxb9V0uShp69M32NqUGm27NCWtcD18k44DZCNUOiuuOyzBootu4xWgEJhFSL5OzOt8UR07j2WbqvZ4Q7VULbkXo2BXT4kO/etaGuMIE9H7jrwSvmhdztzZHfXHxP0G77wWm1XFGSrGIO8PHtvAAWRVkSNKWOWErTo2IR9VjT5qjT/p9jeqUq5XMfWm/txYnwA5XxMrPMAfy6HtDIRt6aYXCo5vyvSy6YqDlV1ZkIqxi5AaiUdkheyk0EbsyaG/GsrDGI4RiMg5qFgVqxodSQ1Kaxw7feemu8vQJfv1Z5oFcFZU/FonmJsukgA8BnRaSz+JDC0iB+18RtOsl20p1JRS6HsPxSI8cam7kNLDR69GvBa6BDC4atUx/GgXZnFhJRkDopbZ8mSrIEmAnysGuN6abazKYMYP5bXDFPxASjcayPDtjHY43HLEo3RxTG5w5dqqYy8+JSGx/WsxKmnioApLh1Hianl7lOOO89rUi8C3FBxrlOK/u1GBF3tvIcpo1TdVpgJ2u6L6jrXRHUj8BQ1f2qyOVe6UKL7i0VI1w20CdkEDfev4SFq9nMavFkGf2umm7yjSy4LTt2sbAW/F5IvDkJZgxZUISi/tr9pxCCpJ13/XFic9yfu83p/EdVRvK1wBKWevvJ6sGwngCY4ScR4B/6X7j1eWsN7sKCLSsSs0ocZsgQDAQbMA6Ybt/kwXIjeFTVo21eOXKEzOwlmCwE4zxAOVgp0OWdmrEukCOks1OfXl+hbo+2ubTZMizvX+6wYHB6+TS3ivzvLwaB8evmc/2wHCx4XxpHMm5cC6YTrxO7yvNm/ETnlqSeK0d52L+glSkkfyUJ8nI3yVJMGzIN+ZRtyLbLKppcU4DtyudmRGGnvf2I2qmgAotjtqZ5WsqhM2ixssGQ6gzKr8Gihsj9H0dgU7ox3SM0xyA2ymeMkVb1FC+/64kEfPVZPENpeRmAyB16gs4TMWG8imOUBO7b+V0EOPrjwmxsna8lZle6c6K1quWC2bMlRjCG8ya/HtMJWJF7+gWX9lavBKPPiEu/TVbwCoXhzzIdV1gvYj7319Ijxnl7unsMJH1KQ7qPHbTfectvp+tyzOzDoX9VIKSdLh+MLtPqIe9bGkJcKkf20Ew1Ng8WQZeysuZZ+eUHyyn93eOi9zgyU5URcH/6CXJnszqIx8dF9n1inucSgiQTIpHeQ7/C8+74s9+f0frlSpEqho5LocC3VCk1G9XQLnkNjDiBfBCZ26hg9399NrhA9jGoK+gFTaTeH64/oZFBbswtmXO1ztABDB2HrvCk32et2hGhtSP7xy/ovdH42RVK7UOPUzGQ0w7oXaGwJUBxPjZJjVNppLBOPpwzkqedgEvD3Z9BjPDX+oTEEsQp3rr41qAUCPsLig6KVm/Oq/gKwOBqGI9B3FHcibwfUlR40QqxZWLSBECVnTqHwHflKrhW7KjLaJ7GqO2Ok5B/4ofulZ4/Bq2xoq5GAUrgdfjVb1uhhE+x7NKfMQvdLLYFRUxNgtGuh3GXBXevgXnfcJjl0b5RzVNwt+q0Qd+ZZs6pqMzidNiKBGtY1CuJgzssnJHr8LWDeWtt4XkvAwy1QamSU+k46qloAvHrGEh+WkcVADrq1rFySZZvhpKnctYRBlmJpmBCaFu3ZPqWqL7gnzcqIp+5cFlKH4Qd5vvZwsDqhPlJLTxNvladaFB33r59AQxsG99e8cXSMRJlt3udvqKU6NIe9kWMR80rvGBEe4c4yPuKbHr+xKClc8iL7QKO/g9nfsxK3BGt5y6fHLQBxywpGEn2za0M2Hs8Wf19dAcc1H87BD3TAlEazIxkglUaDBwA4XSkxDJHKSwm+5uS+mHskqhMRvUEpPRBmRqj5N9A/J8nDLwK416BLVB01KO0h3OT6kGNTGwVGowQLycsRxrsUImOcXAjfg5P+2ahC1zW+3HzlijFwwTrVM42U5ZHvBjYzptm79RcYLPRYolA+6VrDKSHGKMNZeaAvBGobkBz4UExvmwThQu/hkzeJ342KWr0kZ+POa0JKup+XZmhiaCOMKtK+78H+EFUPZCGY54NLWP5OMiFY9AWjg6nqZCoH2Ti1ScfsBMawNVCYqfbZ/ywiwFT4CXI+56VF33bZ8nPhUDzlsXfWZJQtKzY7L7vNY7lq9lUA==", "serial_number": "3f:2a:11:b1:52:09:2e:77:b1:d5:62:9b:11:1a:8b:01:07:17:1d:c4"}, + "created_at": "2025-03-26 20:36:15.709628", + "created_by": null, + "last_updated_at": "2025-03-26 20:36:15.709628", + "last_updated_by": null, + "description": null + }, + { + "property_name": "DLS_SI_FEATURE_DISPLAY_MAPPING", + "property_value": {"GRID-vGaming": "NVIDIA vGaming", "GRID-Virtual-Apps": "NVIDIA Virtual Applications", "GRID-Virtual-PC": "NVIDIA Virtual PC", "GRID-Virtual-WS": "NVIDIA RTX Virtual Workstation", "NVIDIA-vComputeServer": "NVIDIA Virtual Compute Server", "OVE_Licensing": "NVIDIA OVE Licensing", "Quadro-Virtual-DWS": "NVIDIA RTX Virtual Workstation"}, + "created_at": "2025-03-26 19:51:37.062607", + "created_by": null, + "last_updated_at": "2025-03-26 20:36:15.764995", + "last_updated_by": null, + "description": null + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_scope.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_scope.json new file mode 100644 index 0000000..2f13331 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_scope.json @@ -0,0 +1,26 @@ +[ + { + "xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "name": "global", + "description": "Global scope", + "rank": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "dea45ef9-80e2-4829-a390-c601c77591ab", + "name": "license-server", + "description": "Licence server scope", + "rank": 4, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "6c8ba662-f319-4a35-b780-3eb420c328f0", + "name": "service-instance", + "description": "Service Instance Scope", + "rank": 3, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_specification.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_specification.json new file mode 100644 index 0000000..afb1529 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_specification.json @@ -0,0 +1,101 @@ +[ + { + "xid": "412e3184-af2f-4828-8743-ec45b959405b", + "name": "offline_lease", + "description": "Setting for offline lease", + "value_specification": {"data_type": "boolean"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0", "dea45ef9-80e2-4829-a390-c601c77591ab"] + }, + { + "xid": "fce81950-203a-441f-9c27-18809fef462d", + "name": "admin_event_purge_time", + "description": "Time setting in days to delete admin events older than specified", + "value_specification": {"max": "730", "min": "1", "data_type": "integer"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0"] + }, + { + "xid": "15a9fba3-10c1-40f3-ab2e-6c223b436cf0", + "name": "lease_event_purge_time", + "description": "Time setting in days to delete lease events older than specified", + "value_specification": {"max": "90", "min": "1", "data_type": "integer"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0"] + }, + { + "xid": "2d0e5e8a-3d0b-48eb-89cc-beaf2825c6f2", + "name": "default_renewal_period", + "description": "Default renewal period as percentage of lease borrow duration", + "value_specification": {"max": "95", "min": "15", "data_type": "integer"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0", "dea45ef9-80e2-4829-a390-c601c77591ab"] + }, + { + "xid": "e556bb20-8ac0-48ac-b1b3-3428b87bd0c0", + "name": "min_lease_period", + "description": "If clients pass any lease period value in lease borrow or renew requests it should be greater than configured or default Min Lease Period, otherwise Min Lease Period will be used for lease duration", + "value_specification": {"max": "P30D", "min": "PT10M", "data_type": "iso8601duration"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0", "dea45ef9-80e2-4829-a390-c601c77591ab"] + }, + { + "xid": "82edba98-a43a-4e81-b91b-d23c24a7e632", + "name": "max_lease_period", + "description": "If clients pass any lease period value in lease borrow or renew requests it should be less than configured or default Max Lease Period, otherwise Max Lease Period will be used for lease duration", + "value_specification": {"max": "P365D", "min": "PT10M", "data_type": "iso8601duration"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0", "dea45ef9-80e2-4829-a390-c601c77591ab"] + }, + { + "xid": "6e2bbcc1-5897-4761-97e1-67a034652af8", + "name": "auth_token_expiry_time", + "description": "Shorter expiry time leads to more secure communication but increases network calls. Longer expiry time leads to reduced network calls but less secured communication", + "value_specification": {"max": "P1D", "min": "PT1H", "data_type": "iso8601duration"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0"] + }, + { + "xid": "55f06d20-3f40-4135-bbf5-4f45ac9641f8", + "name": "default_lease_period", + "description": "This lease duration value is used if clients do not pass any lease period in lease borrow or renew requests", + "value_specification": {"max": "P365D", "min": "PT10M", "data_type": "iso8601duration"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0", "dea45ef9-80e2-4829-a390-c601c77591ab"] + }, + { + "xid": "fb1eeca0-595d-4296-8cfb-ff61b0984c13", + "name": "window_for_purging_inactive_clients", + "description": "Licensed clients which do not have any active leases and there is no lease activity in this configured window will be purged", + "value_specification": {"max": "P30D", "min": "PT1H", "data_type": "iso8601duration"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0"] + }, + { + "xid": "789b8a27-4118-49d5-828a-64f1ca6f96ca", + "name": "inactive_clients_registration_time_threshold", + "description": "Time window of client registration to consider when purging inactive clients", + "value_specification": {"max": "P30D", "min": "P1D", "data_type": "iso8601duration"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0"] + }, + { + "xid": "7c25b4b0-e4d0-11ec-b876-273ed73fd3ec", + "name": "volume_disk_allocation_in_gb", + "description": "Postgres volume size attached to the container.(This setting is not applicable for VM based appliances where the volume size is computed by the system )", + "value_specification": {"max": "1000", "min": "10", "data_type": "integer"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607", + "scope_set": ["f24935c4-f915-49b4-a419-fa74cff5a702", "6c8ba662-f319-4a35-b780-3eb420c328f0"] + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_value.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_value.json new file mode 100644 index 0000000..a6c3a4d --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.configuration_setting_value.json @@ -0,0 +1,101 @@ +[ + { + "xid": "5dd1e217-f7e5-4df1-a571-ed5a867784a5", + "configuration_setting_specification_xid": "55f06d20-3f40-4135-bbf5-4f45ac9641f8", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "P1D"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "b34d1711-9dc0-4f00-b999-544ca59c3e3d", + "configuration_setting_specification_xid": "e556bb20-8ac0-48ac-b1b3-3428b87bd0c0", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "PT10M"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "6f9d025d-3b10-42e7-a686-82ac8c390b06", + "configuration_setting_specification_xid": "82edba98-a43a-4e81-b91b-d23c24a7e632", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "P7D"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "7791726b-6938-4efa-bb1f-188825194ca3", + "configuration_setting_specification_xid": "2d0e5e8a-3d0b-48eb-89cc-beaf2825c6f2", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": 15}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "85d8ed95-9890-4735-a23b-b1744b9d9939", + "configuration_setting_specification_xid": "412e3184-af2f-4828-8743-ec45b959405b", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": false}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "f1b31a6b-6a04-4031-a869-e83197464cdb", + "configuration_setting_specification_xid": "fce81950-203a-441f-9c27-18809fef462d", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "90"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "cab58f94-d47a-4a63-aef6-0e81fd0b9394", + "configuration_setting_specification_xid": "15a9fba3-10c1-40f3-ab2e-6c223b436cf0", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "15"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "c92ec621-d798-428c-b030-13704f1fa03d", + "configuration_setting_specification_xid": "6e2bbcc1-5897-4761-97e1-67a034652af8", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "PT1H"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "aa19531f-8df4-4dde-9455-f28338c6c2ce", + "configuration_setting_specification_xid": "7c25b4b0-e4d0-11ec-b876-273ed73fd3ec", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "10"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "409508c2-843f-4fdd-873c-70d72e9f523c", + "configuration_setting_specification_xid": "fb1eeca0-595d-4296-8cfb-ff61b0984c13", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "PT1H"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "60fd989d-412d-4691-af26-760e579369a9", + "configuration_setting_specification_xid": "789b8a27-4118-49d5-828a-64f1ca6f96ca", + "configuration_setting_scope_xid": "f24935c4-f915-49b4-a419-fa74cff5a702", + "scope_instance_xid": null, + "value": {"value": "P1D"}, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.entitlement.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.entitlement.json new file mode 100644 index 0000000..01e0629 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.entitlement.json @@ -0,0 +1,10 @@ +[ + { + "id": "fd26fdcb-c494-4421-8d2a-717adcb26fc6", + "virtual_group_id": 34348, + "ems_entitlement_id": "41921023-5a07-4bdf-afaa-8d5a36d7eeb6", + "description": null, + "created_at": "2021-12-08 06:29:14.000000", + "last_updated_at": "2021-12-08 06:29:14.000000" + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.entitlement_feature.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.entitlement_feature.json new file mode 100644 index 0000000..75ead5a --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.entitlement_feature.json @@ -0,0 +1,15 @@ +[ + { + "id": "a4ecee2b-a6e6-42ee-ab67-58e61af265cb", + "entitlement_id": "fd26fdcb-c494-4421-8d2a-717adcb26fc6", + "ems_product_key_id": "xqn2mod5s8-vxlodqjqsj-d2n34wgqss", + "feature_name": "GRID-Virtual-Apps", + "feature_version": "3.0", + "license_type": "CONCURRENT_COUNTED_SINGLE", + "start_date": "2021-12-07 00:00:00.000000", + "end_date": "2026-12-06 00:00:00.000000", + "allotment_detail": null, + "created_at": "2021-12-08 06:29:14.000000", + "last_updated_at": "2025-03-26 20:26:19.000000" + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.event_detail_property.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.event_detail_property.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.event_detail_property.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.export_report_job.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.export_report_job.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.export_report_job.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.failover_events.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.failover_events.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.failover_events.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.feature_per_device_licensing_support.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.feature_per_device_licensing_support.json new file mode 100644 index 0000000..b7e39ca --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.feature_per_device_licensing_support.json @@ -0,0 +1,12 @@ +[ + { + "xid": "55f06d20-3f40-4135-bbf5-4f45ac9641f8", + "feature_name": "NVAIE_Licensing", + "is_per_device_licensing_supported": true + }, + { + "xid": "55f06d20-3f40-4135-bbf5-4f45ac9641f9", + "feature_name": "NVIDIA-vComputeServer", + "is_per_device_licensing_supported": true + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.forced_feature_release.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.forced_feature_release.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.forced_feature_release.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_class_reference.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_class_reference.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_class_reference.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_condition.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_condition.json new file mode 100644 index 0000000..a12388d --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_condition.json @@ -0,0 +1,14 @@ +[ + { + "xid": "732c8abb-355f-466c-89e4-b0e3e18400e7", + "license_allotment_xid": "93b3129f-0a80-11f0-ad1e-0e4240b54003", + "name": "Initial FC", + "description": "Initial FC", + "evaluation_order_index": 0, + "selection_rule_xid": "50ece873-babe-11ea-ae74-020564bda15f", + "enabled": true, + "evaluation_context": {"arguments": []}, + "created_at": "2025-03-26 20:36:14.300504", + "last_updated_at": "2025-03-26 20:36:14.300504" + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_condition_binding.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_condition_binding.json new file mode 100644 index 0000000..f9660df --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.fulfillment_condition_binding.json @@ -0,0 +1,9 @@ +[ + { + "fulfillment_condition_xid": "732c8abb-355f-466c-89e4-b0e3e18400e7", + "license_pool_xid": "4dd98d66-b003-41ad-aad1-07285e262cab", + "evaluation_order_index": 0, + "created_at": "2025-03-26 20:36:14.300504", + "last_updated_at": "2025-03-26 20:36:14.300504" + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_borrow_event_detail.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_borrow_event_detail.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_borrow_event_detail.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_event.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_event.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_event.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_event_type.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_event_type.json new file mode 100644 index 0000000..1470adc --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.lease_event_type.json @@ -0,0 +1,20 @@ +[ + { + "xid": "e26f72d1-14f5-42e8-a6d9-35598882d1a4", + "name": "borrow", + "description": null, + "created_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "3907286e-2195-435f-bd25-a4c5e5b2a0c4", + "name": "renew", + "description": null, + "created_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "311b0593-594b-403d-b162-1f893333923d", + "name": "release", + "description": null, + "created_at": "2025-03-26 19:51:37.062607" + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment.json new file mode 100644 index 0000000..8e605c2 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment.json @@ -0,0 +1,12 @@ +[ + { + "xid": "93b3129f-0a80-11f0-ad1e-0e4240b54003", + "virtual_group_id": 34348, + "name": "dls-test", + "description": "", + "enabled": true, + "created_at": "2025-03-26 20:26:19.000000", + "last_updated_at": "2025-03-26 20:26:19.000000", + "additional_detail": {"type": "NVIDIA", "leasing_mode": "STANDARD"} + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_feature.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_feature.json new file mode 100644 index 0000000..8e17699 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_feature.json @@ -0,0 +1,10 @@ +[ + { + "xid": "93b31c86-0a80-11f0-ad1e-0e4240b54003", + "license_allotment_xid": "93b3129f-0a80-11f0-ad1e-0e4240b54003", + "entitlement_feature_id": "a4ecee2b-a6e6-42ee-ab67-58e61af265cb", + "allotment_detail": {"overage_limit": 0, "total_allotment": 1}, + "created_at": "2025-03-26 20:26:19.000000", + "last_updated_at": "2025-03-26 20:26:19.000000" + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_file_publication.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_file_publication.json new file mode 100644 index 0000000..50668cd --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_file_publication.json @@ -0,0 +1,9 @@ +[ + { + "xid": "95fbb16d-4762-438d-9bd7-5158f3137a5a", + "license_allotment_xid": "93b3129f-0a80-11f0-ad1e-0e4240b54003", + "publication_detail": {"license": "eyJwcmVhbWJsZSI6IHsiZGVwbG95bWVudF90b2tlbiI6ICJleUpoYkdjaU9pSlNVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKcWFYUWlPaUl5WWpNME9EYzNPUzAxWkRJd0xUUXdOREF0T0RSaFpDMDNNelExTjJNME9EVTNPRGtpTENKcGMzTWlPaUpRYjNKMFlXd2lMQ0poZFdRaU9pSlRaWEoyYVdObElFbHVjM1JoYm1ObElpd2lhV0YwSWpveE56UXpNREl3T0RjeUxDSnVZbVlpT2pFM05ETXdNakE0TnpJc0ltVjRjQ0k2TVRjME5UWXhNamczTWl3aWMyVnlkbWxqWlY5cGJuTjBZVzVqWlY5a1pYQnNiM2x0Wlc1MElqb2lVMUV4VDFreUswbzNWUzl4VlZNelFUSlNlalY2VEd0SFRDc3laSEZtUlc4d05FNDJlbk01TTNGR1ptMVNSalF5ZFVaNFUwMU1TVTV0Y0dkTmNFbG1OV0l6TlVaSGQybG1SVVpOUlRacGVrWTFWVnBNUjFwVmNVdG1OMFZKTDJGU2F6TmtNVTU1VVhJMWF6bHBURmhWV0ZWaGMzUjBkbk0wZEdFNVIweGFWMjV2VFUxTVpqVnZiVVJ1U1Vrd2RFb3JObmd5YVVwMVFWSnViRTAxYm1JeGFrMW1ZV05WTTBWemVURXJTV3hQUWpORlJHbGxiVXBOY2xCV2NXTnNURkJVWm5wMFpHUnBSVXB0VjI5R1lVUXZOMVJYZG5JcmNqRnRMMnhOUkVaeFduaExOVmQ0YkdreFdVeE1SRTF3ZEVkRk5tUlJla0l3YWpKUUt6VnBZbW93ZW1sS1dWWnVTamx1UlRobVdITkJRalkzUjJKa2IyZzBWRUpGTVdWcFdYQlFXa3B0Y1d4bE1rd3ZSVE5oY0UxNFNpOVRWR1kzWmpWallqVkZXSHBKUTFGeFZWRkhLMUJpVUVGd05VOWtabU5sZFhwMlJ6bERNbWhoT0d4c1ZVTXpkVVpwV0hOVFQxcHVWVkpqZUhJMFJtbHhSMHhrYUZJMmNHZHFSRGxGZVN0R01EWlVTVVEwV1VoWGVEQlpVa050U2k5Tk1XaGtTekpOYlZSUlN5OUlVbVkwY214WmJ6Y3pibEpUWTFONlNEWXhRazAyUWtsQ2NtaGxaU3M0WVhaeGQyWmxSM0VyWkhJeFZtUlZNMGxpU21GblVrNHpPR3BRUkhab2FXMU1hak5IUW13d09VTkZlVFJIWWxWSFMxcERNVk5OWTFjNFRWTlJTSEZDWlZKRmIwMHhabEVyZGxWNFdrcGtOVk5TYmtGblZXWjJOV2RyYVU5UFdWWm1RVmg0VkVvMlR6SlZRMll3V25SRWNqTlNSV3BEVjJSVWVEQmpkRE5FYTI1bFV6SmplbmhRU1hjeksxZFpXR1U1Y1hnNFRXeDNhRFZ5V0dkRmFsSXpabEJvVGxwdmNrcHVlRXR2Wm1KelkxVXJLMVkzTjBkQ1owWnJSVTFtTVZFeE9GVkJZVnBWTlM5dGQzSm5LMWRJVm5wdVNXUXhZek5UVm5RNGMzZHNRMDl0VVVkVE5XcDNZMVl3VDNWeFNuVXpkMjFCVUdaMVJGZDBXWEJLWlROaWNFbG9ObkZNTDFWdFpuSkZhR3RXZEVWVk4wcGlRMWM1Y0VSS2FtMVVaWGcyV2pCM1kybDZkMVZyVkhabk5rSllMM1F6V1RCMU5rUjZSRUYxUmtGWFYzaEhOWGx4UldKU2JXZ3JWbTlSU0ZoM01UaDFSSGRRZWpaTldUUTJVMWN3TUN0UlUwWTNla2hvU25WQmNpdEVTMHQyYm5sYVVXRk5VbFJzY21ReFpHY3lkVGh3ZG1oNWRWaEpja2xMYURKUVMwWnNaazlGZVZoeU5tSXJiakU1YW5OVmFXWjBjMlJYZFdjNU9IZzROVk5NYlRKYU5XMUlPWFZyWkZVdlpXVlBWR2N2VkZGb1RqUnpVVXhhV2lzNFZXcGphSEJuVnpKdlExSlpNUzkyTkhnMFZIWm5VWGN4WlRGMEwybGFWVE42Vkhob2IwWnRORWQzY1VaaWJFRXpOVGcxWW5GYU5ITnRWakJ2ZWtJNVpHMXRRMFpuWjBVeVJUWkdTMFJhWVZsUmMyWTRXbGREU3pKNFdUWkRZbVZPV1VsbFRVeHdVV3BQYkc5cVdYSjRPRzQzVGtNclJsZDJNMDloYUhGbFZ5OVRhR1ozY1hNcmIwdDJlak5ZZDFoek0ycEtLemxJU0hkVE4xbDZXRVJ6V21ocmNUTXJNMHBZU3pKbWVHNTVhazg1Vkdsd2JYTkZZM05KTTBaNlUxRXdjVnB0UWpSQ2FVRTFiblZDV1RWUmFFOUZOMVpWVG14d2VsaHpkMDVhWXl0QmMwTlpibkp4ZEhCdGEzVlJhRko2WkRSTU5UZExZVE5SV2xCWldFOHdNMDFVY210blNGVmhhMVpTTjFKMlZFa3diRk4wTmtwWlRqWk5aU3RUYkRkSVdHOU9Za1ZFTWtkM1VtbDFiVFphYlhCblNTdGlUV1paZERSVlZGWm9LMnR2TWt3d1RHSkRWVWxMUWxsdmFUTkxXakptTjJvd1pFUnhkRFZ1VW01RE5uUjRVVU5ZVDNsRVkyYzNSbVV5T0M5Q1NuZFlTMFpoYnpodU5YQkdjMVJ6Y2paMlVqWm9UWFpZVXpOSlVFaDNVM0ZoYUdGbGEyZ3ZRall3WlVkWWF6TkpjM2RSTm5VMmVXZEVNVFIxSzNsRmJ5OWFVRmQwU1dVclZWcFBhbXRZU0hwVFZVZGlRM3B1UmxNNGNVeHpSR1UwZVZGdGVWRlpjRkpEUkdGcVpreHBObGRVVVU5RU5VOUtSek56UVRadU5HNW9VMVJGVTBGWmVuTm9jM2xKU0c5b1MyeEJSMUJUVFhGdFV6QkZhM2xsTWpsRlpVbHNVRFpQSzBSbmRsVnJNbk54VEVocmNscFlXSGxPZWpocGFWcFBlVEJpUnpKRFoxRTBaRzlKYVVWUE4zQmpNVVJaWTFWVU1WRkphRU5MYmtOc1ozUkJRVXQyTTNWT05HZDJUbXhOYUVsb1lrMVVSalpsYlRCSEsyWkVTRE1yUlVKb1pFZEhTelZaTm1aU1dtMVBabTVGZWtOYVlrOUVkMjl2WTJReWJISjVTM2RIYlVjMlRuSlZlR1JHWlVWM1RIVk1WVkpQWkVrNVp6TnpjR3RyTVZWT1F6TTFZVmxKU25sbk5Hd3JVbU5XTWsxTlpEUnhOV1p1TmxOcmRVaHNRV3M1WTNOVmQwWnJORU40TlZCbWJ6QXlObXhOVWtsbGRXTnpVVk5zYnpaVVR6TjNWa2RVVEd0SVJqQkpRWGQ1TVhwbk5GQk1XRXhhYUM5RmVESTRiMjFCYW14UFdWWkNORVpoWTFwSU5UWlBiV3AxVmpkRVkxVkhVM1JETkhnMmQyaDVZM05HY21weVVteHJSbVJoTmxZMVZXVjJlamhoTWxJdk9VRXpaRlJvZFhObFRYbG1ielk0WlZKSE1VZEdSbFp6VFdweFpXbGtabE5pTjJJNVptZGtVblJtY25SRFQwRjFTalF4TlZSelkxRnljWGd6TUhWcFpYZE5aelpYYlRWeE4xSjBaRTE0VnpkR01GRmhUMjVPYTNOaVJUTldVbWxpTVdGbmVGcGhiSFV2T1RWQ0wyMUdia04xTlVaUkszaDBVQ3RhTkRJd1VuWlRValF4UkdoRVdVMURNMWQyZW1wNlJVWlFhMDl3YmpSU1VXWTBMM3BYVGpRNFUwOUNZMnRHUzFZdk4xUk1ZVVpwY0M5bmNUSlVWRVZQVjJGS2VYbFhTVmREVVc4d1JFcDJVMmxwYml0elowRlRjSEJKVkRaVWRHMVFlR1IyUVZscU4zaDNORWRyTDNWaVZUQktkRUp6UWxWT2VWVjFSWGgyWVZsc1RYSlJWelV4YzNOdlZqUldXVWd5YVZwblpqSTVSVTUyZUVndmRETXJkbTFvVDJzd1dHUkVibGN6ZUdObmNVRTlJaXdpWkdWd2JHOTViV1Z1ZEY5MGIydGxibDlzWldWM1lYa2lPalF6TWpBd01IMC5pQzJTTlVtc2VBdW1HOURVa0kwZEc5bFNpWGEtV0tGaTBwVFItbnlPR05kRXRLWUNlY21XRDdZQTRlLVZ0OHNtTkdrRzNnakFUNDFZRDNZXzRJLUpIOTg5SE5GRXBQVkhhbTc1ZWt5MFhqaDdSVzA0MzM0TWZFcVBiTXlLLVVnbVRpY1pua2dYRnJnNHh1V0ItYW9LRm1QcnhsT29KbTFCSExEZnZBTnI2OGo2ZGRVd3JCRHhQWko4V1dRNFlIRHJVUDNhajlFc1lYV09PbFRTazZSUDhkZTdOdmRzaHZLU18xVl9hUF9OQzBkR2tFSXVsNHhtbUxsclB3UHFJN1hnRUVpWVZZa090Um5VSlE5QjVfN2ZDV0FlN3l6UVRkLVRxdURNWWZmR1NYOHFnRDhlaVJZMGIyWEctTWp5YWlrLUdnZnNNdHFSdExtVFJkWjdlYktxNmciLCAicHJvZHVjdF9tYXBwaW5nX3Rva2VuIjogIlQxWjZUM0pIYUZKaFVuVnpUbkZNVmpoNVFWSXlSM1Z2ZDNkQ1JXSjZjVkl3V0N0TFV6aFllblYxVW5jdk9IcGpZa0ZLTWxSTVN6Qk5iVm8xVlNzNGRqWkdlVU5aUkhsdGRFOU9NbFZNY0c5WU55OXRhVEZ0WW1KR1lXdHRLMUIzUWk5blUyeEphMEptYWpsU09Fa3JaMlUwVUhNMFRXeGhLM0pQWW1GU1ZuRnRNR0V5TmxCUk1IazRjbGRHUWtwblZGUnBlVk5DYm05dFpXTlVNSGxySzBWTmFrNVNOekpWT1V4MWEyRmhjR0ZhZW5BMFQyWXhLMWRqUkROb1kyVnZZMFp3ZFc1bmNFNHJkMFYxVkU1ME1WRlBLemt5WTA0NVUxQnVialoxZDFRemVWTXZhWFJMVms5Vk1YbHFiMFphYzFReVEwdEpiV01yWjNBNVJUQkxOR3hvWlZjMlpHSnlUMWRTVEVsWFJDOUthV2h2VW14cFRGQnJVbm95V1V0WVF6VlVhbmhPVTFnNWJGZEpTM2xpVDJ4eVMwVldWMnBrVDFZNGNFdGxWalJzTVN0TE5IWnJlbkpMVjNOa1NIWnlTVmx6WkdoWU1GUXpZekoxTjJoWVJuaERWV2M1VEhGdGNtbG9OR3BWVm1WeVQxTmhjM3A1Y0hwWWFIUXhOMGhrU0hsV1NIbERVMDV2TkZWMVMxZFVjVTh2WlhWSlUzTXdkMmh0WjFwTlRrTXpUa1pHWW1weVdqVndOMHREUlZCbU0wWnpkalZsUWxsRWFsb3hlVTkzV2twdVUwZEVMMkoxVTJWeU1IQjVRbUpqVlZjNFpXbzBkMUZLVG10VWNIbHRVMk5ETm5RMWFsWlpZMUY1ZUd4U04zWTJZMG80TUdSNVZrSlhVRk5IUmtSU1FXd3pRVGxNZGxkcVRubzFUM2xvV1V0RVZFOUNlbVZMTVdwS1NEVmFRVEUxWmpCT05XVkJPWGxTVkhKM1VpdHBNMmQ0WTB0UFp6VkxSMjFPWVVWVGEwcHJaV0YwT0dSR2R6bHhOa2RYZGtvd1pXWlRSQzkyTmsxcGQxQkJjblZJWTNabVZ6TnhkRXRYZEdGek5XWmthSGQzWm01TlR6ZE9NSFZsTkdwSVRVSnJjWHBOVDNCdFRreG5TMkU0U1RBMGEyaEhWVlJyWmxWUGQwTmtWVEJvWkhob2FVZFFRbEZrTm5WMFJXUjRSQ3R1UzJKNGRHRTJZekJxY2tJM1FuVmFOWEV2WlhoVGVVRnlhMEZxV1hVek1HSXZUbVJpTnpOYVVuVm1PRWxLT1V4VGNHazVlbE4wZGpOeWFFMUZlbGN5VnpFeFVuUmhXWFZIVjI0eVNHeHhTVElyUVZwelkyUnlSbGt2TVRkc2JHVnNUMUpYVEVVcmVuRjFOVVpOYlhGMGVUVXJSMmR4YTNWUlFuSlBUWEJCZGtreGNHRXdXVkJDZFVOM1lteDNNbk5sU201MmJUVkhUWFJyVXpOb2NVZFdOMGhEVFRCdlkwY3lZVTVUYzJZNWFEaElZVTAzTHpnd1VsRnZSM0ZsY0Radk1HMVBkVFpXYjA5cVZITXlRak54WVUwd1oyb3JMekZKWjFSSWRIaHlkMnNyYUZsQldVRkZSVWhCU2tOTFVGaFBWMloyUTI1Tk1uTXdZMFp3Y1VSVVRXdDBOWGhNZG1relNWRXhjWEZMYVcxMWIwaDNWVlZCTnpkSmRscFROekpPZFhjeFozZERiMUJHVG5sVlUzcFNhVXBZVlV4dlFWUTNlREZzU1U5aWJXaE1UU3Q0ZFdrMGJ6ZDFSMm94U0V0bU5YWkJTbEI2UzBWdlIwbFRSblJPVjJGVVZsSmhVMlkyTlVVNFVITnZMMUpsWkdobGNYZEthbVpETTBrNFl6Um1abk5QY1hCVlpsRXljbkpHUzBOcFRYbE1la2xCWVN0TmNGcGhla1E0Tm1kNE1uZDRSQ3MzZEZWSmNVOVpkelowVEdaRmIzQnRNbW8wUkVoVGJrTlRUeTluUlRoV05ERllhMHd2YjJaaGIwY3pXbGRuZVdKeWVVSmlOME0zYVZCS1pXOUhMM2hyZWxRNWVFdEhiV05rYld4blpsWkVSMDFsWWs5clNrczJZbUppTkVOTFMyZzBNbXRyVFdKMlVtMWhkalF4Y0VOc05rUm1WeTh2VTJsak5Hd3ZPV2hoYm0xbmFtNXVlRFJwWlhGSldUUnBVVTEzY1V0bWNTOURRbE5hUmtWMk9FdHBNRVZQYURKbk1scFhUV1V2Y2xKck5GaExSVzF6YjJOaGRHUkVNbEIwY0ZKR2RFeGFlRU12Yms5TE9FRkxjekp6YlZaUllUSTJRMjQzVFhGbWRWSXJiWEJqVW5VelRYWTRSVlpVY2pkYVJYQlFORGcxUzNRMVJtUlVUMDFOTmpsSE9HOUhXRFZvZWxrclRqaDFRWGROYjFORlNUTnBSRFpZVmxKQlZHTnNkekkxYzJwNlRtcHZOamt5V0hWeVNHOXpUWGhDV0d0dFNVVlFXWEJPT1VWSE1Hb3pZa2t4UW5sVlIzbFNTVE41VUhGTVUwUXZTbWg2TjBGU1lqa3ZTalZZVlhkdFVtNVZVSE5pSzB4YWIyWkVjMUYwY0VkelNDdFdiVTFETlZwRU9WVmlkMGhUZEdKUmFFbFdLMmwyWmtkblkybHhURUY0ZURSSFlXYzJTVzFTTldOTFpsRjVjMFY0VG1GUVZYWldZVUV3YlROUmR5OUxkV1U0VUVKdEsyazBPREZuU0d0ek9UTmFZM015TkdGb2IwMWtNMnBNYW1sR1pXdE1NalVyVDJSVE0zZzJkbmwwUW1SUlJubGhOaXRxU3pkUFlrNUVXVzF6V2pFM1dTOVdjRGt3VGpKTVJWTkRSR2t5Unl0cFV5OUtPVUZxT0ROREwwaHZMMWg1V1ZwWWNWWnhiRGQzZFVSTFZrRkdaa1phVlhrNWVqRjFjMnhtV0dwVFdFeGFhazE2VjNoRFNVUXpZbFZJU25SNGEwbzNjREpyVDFGU1UydEZaM1UxWVVsV1EyZEdSWEJpTDJzM04yWmFXamcwWmk5VVZGTktjRk42YTNjMFlXRTVPRnBRUXl0TVZWQk5lR1J3TVhCTlRITnhlbE4wYjNKUmVsQk1kRU5IZEdkMFFVTmxTVk5DYkhSS1dGUnJNVTlQS3pjd1JHaHJkbWd2TURKMFpTOUROMnR6VTJ4NWMxbEllVXBuWlZWeVFYYzFNRU5JVTFWc1VYWkpRMXBHZWtkd1EwVndSbWRvWVRrMlFtSlBVbEF4TUdkR1RHMUZUWEZYTkdneVVHMVBZVmxSVW1KaFIzWnFkek51YjNSemJGSlNjVlpDYTJoYWEzSnhSR1pOTUdoaWEwOWhSRkpMT0d4SU9EZGpiV0Z4VFM5VVpHZE5RVTFFWjFWSkswRTFhSHB1U1V0clZVbEpObGxaZVdjdlFXMHpSR3czTjNGTlRFYzFSR05WTTFoUFIxUk1SbXBIVG10dGNFYzBlVFJSZGs5VWFsSm9LMUp4Y21ONmNpODNWVWh5V1ZsU2VuUmxMMXB3TVRVMlZIRXlkbnB3V2xKcmFtZFVVSE5GTkRWUFlqVjJXbWg2ZWtWeVRFaFdXRmsxZVVacGRTdGtRakZSUmxab0swbEJVV2c1WW5GcFRYQk5TSEJZVGtKcVZtc3dXRGxoTW1WeksySTJkVTUwWlZSNldqRnpTbWhyYUcxd1NESmlUVXRQZW1SbVEzZFBVWFI2U1hwc2RHVlNXaXMzTW5WamRuSkhhMk5UY21wSVlXcDZkMFp6YW1GdWNFaHFOMVk1U3pKakswSmFUMEZOUVhCcFVqazBiaTh4UkdGaldFeEJjV0kxVURsRk1sVnpNMDgzZFVwU1JGRldNRTFWVFhoWGRqYzJNbE5yZUN0dFV6VndZV0pDTVU4MVJqVXZNVU12ZUZGVksxUnpiMUV2YUZsRlUycGFaMmRZUkdJcmQxbEViMGxtY1hWSFNrSlBVMWMwV2pOUFNsUnpPV1ZtUWsxRFpUZEdaVVZEVnpsQ1NTOVlWRFZrZVdaak9Vb3pTRlZIWmpsd1JIUjBkVVZQVmpNMFdqWmlSRFJHY2pnM1kyWnRhRkFySzBoVllTc3lZM0ptUkVwNmIyTXhjV3RyZEZwU1pVeEJNbWhsZG5aNVJXSnBSVVprZW1Vd1NtYzFlbkpHUkU5Q2VXRjZWRzFvY2tVek55c3pXRnBuYlZwR2JXTnNhazVCYmpGS2R6SlVkMkkwTkhwVmRWaGljamx5V0dGRlVURTVUR0V3UVhwNldFdExXalJ3YUhSWFdFdDFWRFZTYjFsdGNWQlNOVWR6VVdWb1JURlFWSFF2WnpCWWVuVXhhbGg2YWpSNWVUUllTV3hVU1ZGekwzaFJVVkkxZW5oTGJFdFRhbVV5YzJFeVZHZFhTek5JTnl0allqbHBia2RhTDA5T1NFTXJVRGhaUkdRdmJHNTZOblJ6TlVreVYyZFBZelpoZFVFclVEZzFiR3N4VTBOM1dqWmhVRWR6ZGpGcWJGTlRabUpHTmpWRGRXNHpkbEYyVjAxMVQzWkxhVlJXUm5kWFVGYzFVbGRYTVVoV05HNUhNeTh2VFV4d01VMXROVlpwVERBNE5IcEJjbXA2U1VWTFZGQTNibk5OUlhoak0yVldZMndyYUVJNWNrcGhTMGRYUVU5cmVXcExlbEJVZVRGR1dqY3JORFpLZFdOVFdUZHNMMlZXVWt4Q2FtVmFWVmN3TURjMVlTOVhkWE5FTVVOV01EZExXRk5vYjJOMFFrOW9SVFJuY1ZaVVdXTmlaRVZ4WkRaU1NYUTBjbGxLUlhSMldIZG1VWEozYVV0NVZVRmlhVEJQVlZWdGJrOU5WM293WVUwMVVFRkdUQzkxZVd0dFowMDFVRFkwVGt0R1RUSk1Zelk0UTNGTGNYVkliV3c1TmxFMlFsQXpkVzVUWkZWd1NERkZTakZVVDNKeldWa3pSMWh3YlRGM2JFVnlTa2xJYWxGdGVrTnhObmx6UWt4SU1tRTFXRkU0UVhCT2IyNTZabTVwYm5KQk56RkZhVTVGTkZwbk16UnNZMEZVUlRkTFpFUXZNMHQxVFVaWlJrOWxLMVZHVlVoMFNISlZURlp1Y25oMUt5dDNTbXRsYTBWQlkyTnJkbWxSYzNCb05VUXpVR0ptV0cxQlRFRXhhSGN4YjBGUU55OXNWRVJxTVdsYVlYVnhhRGxWUlc5S2IxVnJkMEY2YURGWWVFa3lNSE5HWkZOdGJUZElkU3RtU25WNFl6TnRSeXRaZURnMVVrZzRXV1J4YkhJNFZHcExRWFJPWkRCNmEyWm5iVkZhYkc0MlZVRjBXblIxVjJsVU5tcHdMM055WkhGMVdXWnBVRWRGTDNSc1drSjNURWRUTlZKUWFESXhabmxrWVRobmNFeHhiVlZDUzIxaWVrcFFZWGhuY21GcmNGSlpjVU50U21WVVNsUlNjMmdyYWxkamFWRnhWV3BNVW1NM1pXNVdOM0kyVXpOVFlWRkNkVWR2TkVsSlVXRldXbWw2Y0VNM1QxUlZSRUZ5V0dGb2RHMWxkM0pUWmxsaFptNHdOVGMwSzNkSmVGSXljU3RIV0hOV1pYTlVNSGxHY0ZKNFZ6RlZRbHA1VjFSYVlqTlFZbWMzY0hkdGJHTnZTM1pwTUdReGVWbFliSFozUkZORFEybE9XVWhLTHpoTFdFMXZVRFZyY1V4aVNUWk5SMjF5VFZsSk9EVnpkekp0WW5oblFqaFFNRTVvUlZRclZuUjNVRWRKU2xwclZ6RXZTaTgzZVdzeFRGRXJOVXRZV1hOTWNUVjVXV0kwTkZWTU5HWldVMWhVZVRrMlNEQTFUbXhEYUhSeFluUlFObFozZVdGcVMyVkVjR2hhZVdWMmVubHVhbEF4TVZKSU9XVndabVpOYmxFMlJsVmlRWGQ2YkZZd2JGZE5SR0pWTjI5bWVHdE9kVTFFTVVsUGVGUlBSbkYzTUVsdFFXOVZTMjR2VDAxWlZXTTBiMUptZUhSRFZtSnhPVkJXYTJwbGRVcHBSMjlLT1VKd00xaFVibTVuYVVsRlkyWmpiVTVpUlRCWFdVbDZUVGhUT0dZNWFqaHBPR2wxZFhWMWFYWktNMGM1UjB4aVEyY3pSMlpOT0dOVWFuQXpVVnBaUzBOd1ExSkJSemxRTDAxRFFUUldRM0ZrZGxNME1VRXlkVzUxZFhSaWRuRjFUa2w1WVdRclN5OTVVV2RoVnpsclRsVnhibE5uZVd4dllraEdiRFkyZEdOQkwzRkdTMmxOVVdKM0swTnJXRFptUmpsblEzaENSbFpRZUdzMVVtZFFSVFp6VGs4dlpTdGFUMDVZUm1NMmFpdDRaVmM0VldSWllXMHJOa1JMTnpSYVdUUmxhM0k1WTJjNVYzUkhPVVZETVdoUWJXZzNkbEpDSzJFdlJYWmtiRm92YUVZM2NIUjBjV1ExY25WRE1UUXJTMEo1V1hjdlpYUm9UVkZFVVM5cU9WbG5jbTFpZDFCblJEaE9WMGhvVlhaSFoxcHNNRlYxZGpWSk1VVkRkM2RwYVRsQ2JqTmxLMHh0VWs1SVdIUk1RM2xOTjJwU2NYSkJhV2g0YlZOYU1HUkdWRkpXTjNOMmQzSjJSSEJ6YlVaak9HSkhVbFI1Y0dRNE5TOU1ZVVoxZUU5dFdrWXlhV2x1TUdGSmJDdHhOME13VFVSSVdWWnNjVVlyUVVOMk9GRkRZWE5JY1hwTFdHNU5ka1ZITmpsdVoyUmxLMGhuUTFoamQwVTFkbVV6T0ZKdmNpOHhTMEZyVVRKeU5tSmtiVmhETjJSMWVuVnhPRWd5VTBFMk5USnVLemRPSzJOVU1GaFFZM2hGWVRsU1pGQk5aQzlCZERkSVRWSjZMMVZ1ZVZCWlNVNXJjRGQzYlhaWFpFUkphVUZXVldaSU55OHllRlJLV0U1MFNURkRUalJ1VURaWFExa3JjbkI0ZURSRlExQmpUVXB5Y1RSbGRsY3JiV2d3Wml0SGVYWnpWM2w2U1dkWk1sZG9jREJ0WmpGbGVtWnNOVlZ3UmswNGVsaEJibWQyTUdOT1JHdExSWGxWTmxSalNHcFBPV2hqU3l0WlRsVTJTbkZ2YTFCclMzSkVkVGc0TkRWT1ZEbHRZVTVJYkZwS1RHMUNLMVZLY0dKeVJUTTVRM3BhTWpSeFdYaFhSRk5EU3k4ck1HTTRlU3RoYldsalVsTlNiME5FZGxVeU15OXZhVzgxYjNGaVNsSnpZbGR4Y2tsSVdUaE5Va3d3YWpCd2JUSjZaREpFWldKVFVERlVPR1JCYlhCcGEwTnBRbmd3ZEVjMFRGQmFSbVJFZFRRMGEzRlBNVVpQV1RodFlWTlhVbUZpY2pSNlV6bEVWMnM1Y25kUlprbE9SamgxVlhwVVpqWkJkRUoxYkRsRWF6ZzFSWFJOVUUxbGVsWmpZbTh2V1dOQ1ZWTjJVM05xYlRKT0swWTBSbE5GV1hVNFVYTTJLMjh2THpGclYwOHpkMWRwVlRoUGRFaExhMUl2YjNVMlNFcFRWWE0wYm1sNlVsSTJSSEZZY1c1WmFteHNVVVZrZGxWTllWcDVNMjlUUWpCTk5qWnVhWEJUY1dsV2QyZE9jMU5hZDJGVlRGcHZSRkJrV1VodWVXcFRkSGxqTVZNeVFYSnBUVTVWWkN0bWRVRkllVU5YUjNwdVVreFhUV0V6TjB0d09VRlVha2cyYm1SU1JDdGxhSHBYUVROaVEwOURkRGx0ZDBsRmIxVjNibGhpZVdjd00wSlNPU3RaY21Gc1lqVnRVV1poVmtKaUsxSXlRak5tU2xSNkt6TXlVWFJOVVRWT1QzZDNZM1k0UVdkalpHWnNXRkE0Y2pKUVdGWm5PRFZhSzJVdlNUbHVTVEZEVlM5aFRUTk1NVlp6YTA1V1dqZHVOVmhFTlcxSFJsQk9NRzB6Vm1JNFFVOWFOMEpsU0ZBNVdIbFlhRUYxVlVaV01WQlBaRWd4U0RBeFdVNVhZemhzWVRWaWExVjVVa0l4YW01NVoyeERWbEF2YnpGa01DOUZWMWRhYm5KQlkwaHdkVGhYWW1KcVUyb3dUemhXUlVOTFdsZE5hMGxoYlRaT1dtRklOMHB4YzNscU1XbEZXamxEUldOVEswVkxjemhUY0c5V05pOXBURzl4VUVWRVFuTkpXSEJhTTNoRU0xQjRZVXcxU25KMEx6TkRSa3gzYzBoeFNHbFJVRFpKU3k5TVdXZEVNelJpVm5SYU1FZGtVSGRxVWxsc1RreHRSbEZxSzFwSE0yaGxka3QzVlhKTVlUWklabGhxZDFoSVZWQkRWV1V5TTBscmNHOXJOR2RxYjBSRVIwTkdkUzkzWTFvMmJIZFhXRTVFWkVjMFpHaEdiVlZYY1VNeVRFNXVZa2MzUjJOUWJVWlZUbTlxY0ZkVldFVk1WbFJPSzNCVFRrSjBObkZRVG5nelVGTllibEZUTms5bFZXTlhka3R6WW5Cd1ZYTk1TVU5IWjAxMFJtZFpjRzAwUzFoblpIZFJURU5UT0RaQ1dsWlVWelJhWmpocFYySlBSMHhDYVcxMVFrbzFPRE14WVd0Sk1VNVBMMVZJZDJ0TGJqQkNaWGQ0TUZWUlltRTFUVlYyTVRNd00zQnVVbXBzVnpaWlFuUXhhVzVIWTB0U2JGZHhNelZHU1c5S1IwMUpSbVpPYmk5clpIaDVhR2hZZDNreU1Wa3laMGt5ZDJOUFVUVllXWFV3VmpCQmJIcFlWbEpvTnpWdk9ITm9kRVo1YW0wNE0xSXpUa3BOYzNJeFlrcHpOV1ZoZFd4bllpOXNkbkJQZVZScE1UVnlTRFpCWjNseWVYVlVOVlp1VVdSaVdtSlphekIxVUhOMFFsWkljbVJKUTI5QmRFaFNjVmR6VlhKT1JYaFZjMlV6VWpOVlN6QTNNWGR3Y25KQmVXVnVNbUp2TW5kMFVWZEZhVkIzVmtVNGNXTlVSMU5ZT0N0S1VHMXNVR0ozTW1odmVrY3laMHhMWmpZNVpqVnRhVEZqTDFodlN6WXZhVU5SYmpKNlpITXhVVlpSY3pneFNYTm9VMlJQU1dKaVkydHpjak5DUmpOQ1JGVm5TRFZXTkRkUWQwdGpaWGxMVG14alRESTJOMVI1WWtGc1MzTnpVRTlGYWxSNWFUVlNiVTVwWVVKR2MzUlNVWEI0VVhWUlMwNXdTRWt5Um5scWJtTjNTV1J4WjJncldsUklPSFJtV0hsREx5dDJRVkUzYm1aa1RqUlpUVVlyVmtNelZrZDFRa2w2TmpadlFtbGpOMlZ0TkZWRlR6QmhOV3d6ZDJ4YWQwVTJTMmR4TTNsalRrdFBXVk15V0UxQlpVVjRhbmM1T1hKTlMya3diVzVGUjJKSE1GWjBNMWQwZVhrdkwyRlVjSGRZY2pGVlQzSktlVU5MZVdsMloyVTVjMmg2VERFMFJtYzFOMUoyYkdGUFRUWXdVMU56V25BMGVIaHRZalo1WVVoUlJIWXJWVmRJY2xOYWNYTnVOMWhaZDFOQmQzVlNLMUJQYXpFNVJtNVRPV1ZUV2tGTWJFcDZkemxVZDJ4dU5YRmxkR3gxYzJWRVVsbFhLeTkxY1hOTWRqUTNZVlZITkN0MmIxYzNhamRZZW1GbFRVdDJWbTlNZFhBNWJXSTBVbk51T0Rsd1UyTkdSVEptYUhsUUx6WjBVMkpqT0hKVGFFTm9hblptWkdoVFEyWjNPVlptWVdORlduaGtRWEFyZUdGSkt6SXJSbmN3ZUVKbGFWWmFjVzR4Y2sxbVNVUjFUMnAzV2tSNlZIVnFiRzVIVjNnelRWTjNORWxYVDFwdU5VVlROR2hVTmtjdmVGcEtjR1pUU0dwa1YxbElaa3N4YmtKalVYUndZMVJxTTJwTmVra3ZWbmh6TmtWTlEwNDRURzVqWVhGc1FYRnpPSGdyWXpWVmVIRTFRV05SVjNkUlZsRmtaVFV6ZG5scVkyOVFLMjg0UkdRM2IzUTBOSEo2T0RONU9WbG5VMUJYU2pKU1drUldZbk5xUml0RFlYUXhPRWRJZEhKb1JGUmtUR2dyVldVclJVcG1WMUZ1T1VaTGJtTlhPV3RuY1hwRFJWTXdhMDlIWTI5SGIxZzJWMUppTlhoTE4xRXJTVlJQZUd0RmNrOUVSa3N5ZDNwWmRFRlNlU3RGV0hSeFpFaEVPRVJNUzFvNE9XZ3lkbmx2UWs1TmNUQnVkbTVDVmpKUFNDOHdaVWM1TUROb1FTdHJiSFJJY1RoWmJ6QTVaVUl3ZG1ReFpVUjNZMVpIVjFaV2FuTXlXWFp1VkdGR1NUaFFRbU5XUWsxVGVYVlBTaXR0YWtsMlNVZGpjbkJOYlZKQk1UQTFXVmh0VTNJNE1VaGtOMVl5UmpCQlR6RlZaWG94ZWpsTFkwSXpMMjVaZEZBeU0za3hkWGwzYlRKNFdETmpVMU5UYUhJeU1reEZZekJwVkN0cmNGQjZja1UzYTBSRFVWQTRNSFpFYW1kc1ExazNTMjlMYWxwRGFFZzVWRTVrWkZOTVpXcFhVVWRJUm0xSFUwUTRhMGNyTTBsbGRsTkZXR3BOT1hsVWFrMUdaRllyY0hOc00xUk5kMVJsZFZkUFEzSkpWamxJZW5sV2RXMTRiSHBYVkU5MVMwWndRemxxZDNCWmNHRmhOVkpUY3pBeFdUUnRlSGRLWldNdmNXVTVTRlU0ZUdGNGRVOURWVXRPYW5OeVJEUlZkSGR3VmtoRGIzZDNSMUkyVUc5aUwzSk1ka1JoTkc4eVNrbEVjbE5IVmxoamNrTTRUV2szZFVFelRYUlNUSHBCZERWNlNtbGlSRlUwVEZka1dFZERPSGxLVUdGbGJFbEVNelJPSzFOR1NEZE5iR05sV25GRlkwTm5TVUpxSzJWTWFqVnVaMnREZFdGaWIxWTFSMFZ5YVVGMWVTOTViRmR2ZWl0WlNFRmlaek5VYW5CV1Z6UlhNa0psZDFCWGF6RnJiMmhoYjNWb1FUSkJTRFZHU2xkdmNYQlBZbVJKY25KblpXdHVjRFpOWlZCM1NVaGxNMDFTVUcxSUt6ZEZXSEo1UVhwWldGY3JaVmRIVFdWUVMzSnNZV1F6Vnl0T1RXcERjemRwWkU0emRtVnhTbTl3YkVaSFJESkZUMnQzUm5WdVUxUkZVMEY1ZVdsd1MyTjJaRE56TmsxR1FsQnNha1J0VWk5TU0zSmlabmhzV0VSNU0wVkRiR3h4TlRaNVIyaHpaRkpHUTFOb1RUZHRSRWxNVlc5RWJXMTJWWGw2WVVsT09VUndNR00xZFRkNWMxbHJlVmh0VjNkWWFqbHdXR3BoY1hCSk1IRlJXVmxOUVVkUFdHcFVVblEyVEVOU1YwSnJXRTFGTHl0aFJsRkRjelJVYkhGeGQxUnBSMmwwYmpKNE0wcFpZbXhRTW5kNlJFOTFaVGQ0VWtadmNWQnlTVEo1Tm1KQ2JHNXNOMmRYV1ZsdU56VmxTelpGY1RRMWRHSkRZMnBMYjJad2JrVmFiWEZwY2t0U2NsVnNhM2xvWm1sT1EzUkRWRVV3ZVhWcFMwSkphbkJYUVhKYWFETTRRMGh5U2xZdmNuZFJkVFV3WWs5RE1qVTNiM2RFVDBsWk1rWkhXR2hKWjJodFFtVTNiVlp4ZHpWb1UwSmpLM3BZVFVkemFVdDVTM0JDTlhZM1pqTnBRelZzZG5wRGQyUjBlbFZrUkdSeE5IZGxhbEpyVFZGaWRFcDVjalpQTlRKWmRtOXJOSFo0VWpSVVVHOXlXVXh6WWs1NFZGUlJOWFE0V1ZKck0xZGlZelVyWml0WlJHcE9PSFJLU21wMVdWbE5PVU5aUVZKclNUQklhRWc0TTNKcmVYQldXSG8yV2pselJVVk5VbUZxY0c1UVZEYzRNbmxsUmxnd1pEVjFhVFZCTVVwQ05HRm1RM2N3V2k5QmVYUjJkMEp3UjNsNlVqVlpOR1pMWkdSb2RHaDVZazk2WjFGb2FrUmliVXh5VUhSaWJWaEdiWFF6VUZoWVltaDZkMkpNUWxOT0x6QldUMFVyVTJ0RWVsRlNVVEJJZEZaa05rZEpWMk5wVlU1RFZGQTBNRkJQY0d0S2VGTjZOMmRhVGpoM1VuZFlRWFZyYTNGaU5HNUtLelF6U25GU1VDdGlUMlJzVkZkYVJXOU1kRUpDZEVRME5sQTRUM280VTJkWE5Vd3hTMlJhU25ocVpHbzRWMFJYZVZwNVVuazJhVVpTTUZaUE5HNW9SRFp6YldWNUwzbGtOREpSZHpGVVJTOWpaMVpsYkdNclZFMVZZa3hwYzNORFVrZDVlbWxNU3pGV09IUkVUemxMVEdGWWNFRjFhVFpCTjA5Q1ZFSTVkREZEY1hFd1kweHZhVTl4VG10bmQxTlhWVkZ1ZVdGS1dVWlRXRmhDY0RCS01taFJjR1Z2TVVaNmVYZE5Oa3BWZGpJNFMzSmtUV3MxWjFsWFRscFFRMU5qUTBsVU1Va3piVFJRVTNKM1Vra3lTRkp5YmpGbU1IaEJOM1p0T1dONlRtWldZVTVFUlRCMUswZDBRVVJZVlROVFZETk1iM2RFTldGS2JWWjFjbVZZU0U5b1kwWlRiRnBrWmpoUFJVeE1VRmQ1TmpOdWNURlVPSGsyVmpOR2RrWTJUV05NU1UxV1ZGTmpRbklyVDFnMGEwZDJlVWd6YjNOcWEwUkZWWEZ2TlhKc1RGcHlja1pGVG1OREt5czVZMU5XY0ZkTVUydENhbFp0VlVob1ZUbFNhVEk0ZFVZNFpHRmxNekV3VUVzemVHdFBiRU4zVHk5MlUzWnRSemN2VTNCQ1VFZzROVWhKWXpkT1NHWklkbGQ1YlU5cFptVmhVMUpSWW1oREsxUjBiakZKV1RST2FsWlpTR3hCT1VkU1MyUnlWVGhtWjNaWEx6ZEtSRXQ0TlZjNVRreFpZVmhOTkVONGVEbEhhbVZEUjFsQ1kxVnlhMWRGYlZKQ1Uyd3pRVWtyWjJSb2EzbGlUVVZPZFRSelVsaHJaREJIYmtWTVJXZEhOV1I2VkhaWVdscEhNRkIyV2xsV1NYZzNVa0ZOY21zM1NYcFhSbEZvWkVJNGVGUkRLeXR1TWxGR2FrRmtPRkEyVVVGRE1IRTFkM2xvWlRkWU56ZGFiakJQU2tvM05GcE5UVXR3T0hnMU1HeE5kRzRyYjFRMlprczBVa2hXTURoUlRrWm1WRU50TDNsNmFEaG9VVWc0WVc1cU1GSTNkMlZrT1ZaVWRHaHJRM2ROWVZCTWVVdFJNM3BaZVVaVU4yaFpkelV5Y3pVMWJHMUJXaTlKV1d4eGVFRk1ibHAzV1dGc2JXbFVaRU55VEdKVWNITTViMHRyVUZGaVozbFVjWEpKVFhsc01scFBSblU1YTFKaVRpOUtjVEJhWVZwelptVk9aMWh3TjBRd2IzWjNUbTlPVURoMk5TODVTamxtVTB4cGFrVlJOblpHWXpWTk5UaERja3QzU0haYVVHUmFRbGxNY1dWM1RtZFdVblJIZVVrclNGVnNjblIyZUVkT1RuUTBhREJ6YkhrNGEwZFFLM1p1WmpkMWIyZDVMMnA1WkhsV1prOUpjbFZEY1RGaFVGTkZWR2xNY0hCTWRsWktjMWsxU1cxSlNGSmxaRWg0UVdvMWIyaHNURGRLU1hCd05GbDFNR2hXYVdKWVEwRkRSamxrUW1GT1ltRm5jbXg0V0RGbFVXSjRkamM1UVZsdlMyaEVlRnBTTVdaTGRVaDRWMWx6YUZad1R5OXpWMFZ0VlhGTlVIbHhLMmxrWW1wVFUwdDVlRlpOZFhvNWQwZG1hMmQ0WW5CVFlqQTVTbkpzU2tneWJXWnVXV2hJWW5kM1R6Z3lRakk0TDNOelptWTVRbmhqU3psSlpYY3hRazVJZFVKS2VEZEtRbk5yVlZSWU9XNTZXR3hCTVdacldEVnFTM1p1ZDFCSFZERjViakJIVEdObWJXcFBOWFZsVlZreFlXVkRXbkJNVEZCakszaHRaako0SzBSRE5GaFdhMHd5VWl0YVNERm1TWGRxWVdadE5uZEVPVzV5UmxSMFJEVTVWbmRUTkZnMVRVVnlVR05IVG5GdGVtRmlSME0yWVd0UFZHSXdPUzlTTVRkMVRpdFRUMGRMYmpOTGIwRjZNWGxMYlRONGFtTlNUekZvYmpaSE0xTmhXR0ZtVEVGNFpGRlBSVlJITkRCR00wTllPVlpxZFVOU1REVXlWMXBUUzA1d1IxaGxaVEJtY1VKclVFRlBUSEo1ZVVaQ1QxUjJTVzVsYms5VE5qSnhOQ3RpYlUxcmNpOU1ZVXhQZG1OWWJWUjJia2xYYVZORlprOUhUMGRXWlhCaWMzSk5SRUpFVVdZMWJYQkZSWEpDWTBSQ2RTdFhPVFZVYjNkUVUyTlFXakJhUTNaV2JGZFRTamgzYmpsVVIwSjFOMkpUVjBKYWFGcE5lVzUxV1UxaWVYbFhWbGg2UzBnMVYzUnhSM0Z4ZUdSbFlVcHlOMHRJU1UxV2NqSmhVVEE1YkVWT1ZHNVRObWcyVmtsU0sweEdjVzlwVWpOdFVIRlpTbEJ5V1VwME0wVkNiVnB4VTJsbmNUZGtjV2w1VW1adFQwMTVkRUZDTVVkTGRsRlJablJMVW0wMFFWbE1kMms0TTNWcGVERjZjMGxVWVZsNVZWZGlkbWxhVm5od1VXZHdhVGRSTUVGVlVDdDJNMnBCVGtKd2FYbFlZemhoY25NclNYWXZUM0Y2YUZaRWVEZFJXbmRYVDNObmRqSllOVk4ySzJoU2FHOUpVelUyVVdob1JsWkVaVmR2UkdsNVoxSlpOVXBhZFhOMUx6RkxNek5sUXpGd2RXMUhXSFozTlU1RVNIaGhOamxvU1RKUmIyTXJUbFJoT1ZrMU1WcHBPV2haUm1kTGJWVTFNblp4WTNkWmVWQTBWbXMxZGpCeGRYY3hhRTVSTldKQ2JUaGxMemh2UXl0SlpEVjVia1pTTTNGRVpFbDVSRU4yWkRCM1pWRk9VVGRzVmpGS09YbFNORlF3Tnk5S1kyWXJhM1JxTUUxVFRUSnBhVEpyUkVOWlEwSnFWMjU0ZVVWclUyVktOVzFqU0dwV1UwNWlXSGQyVlZwclpWVXpRV0pDUVZKWVpuSnpWRzFrTkVkWVJETlRlbXRFWWpnelZWWnFRV0ZNVFc1UmNETTVTV0Y2VTNWNVZ6YzNaRU5LV1dkWFYyWjVialpUWkVFMFNYbG5TVzF5V0VoUmRTOVdNR0ZzU1Rkc1IzSm9NQ3N5Ym5sUVJrUldVVmh3VUZWaFR6bDVLMGx0YldOdlFsVm9MMVpEU25kclQzWTJWU3RHZHpod2IzaFVXWEZtT0U4MlNtaExiM0ZoTXpSYWJIUkVNMWhvZG5ReGNIUTRUMjFsWmxCTU0wZEVWblpPZEZsaVFVaElOa1pvZHpGcGQyWlRWRTFYZEdoSFlrcHdSemhNTjBsTWVGUkNZMVZWUTJsTWRWcFlVbnAwYWpOT01sSXJjSGxWV2xJNUwyOUNjVXRxUzNkMFFtMVZTbkkyVlUxUFJXdzBTRkJpWWtKYVdGRXZjM04zTXpSeFUxVjFUVXBrZDNOTVNWWndRV2R2ZDBoUWMwVTNRVEUxV0hZNVVqSnZRVVpoYmpZelkxY3ZRVEZxTjFJMGNUUlhTREZzWVRRMVJHMUlObFlyT1RSRk0zbFVaRmRKU2pGTVUybEZhbWtyU25KRU5rOTBNWGhLTlRSVWFWVTNkekp5Tkc5WFFXRnhSU3N3UzJ0UVRHWm5PRUp5VkU1U2NtZFVkRlJvTm5oMlVHMXpZVnBuVTJ0WE1WZEhkVVpUVXprclEwSnRiM015YzNnclFVaExTbWgwWmxsa1NYWnVNMmwyVVZvd2FUTktZa3ROZWtwUFRsSkNUMlp5VW5jemRXVkdNa0Z6TmtGd0syMWlWalF5TTFwUFVEZHhVV0Z2ZEdsaGJtTmxNVUYzTVdjd2VYTktkemRuYUZoUFJFRjNZWGMzTm5wWFRFY3ZRblp6WkdSdmVWVlhjeXMzWW5kVFNXcDBkMXBXZW1wd01DOTJNM2N4VFZoT1FUUlhhbkp2YkhZM1dYaDRWV1Z4VURadWExRkdhRXBvU210R1pFbFRaVkpSSzAxbU1rTnhWMlY2UmxGbGNtVXZPWFIzYlc5NFltMW1VbWx4WkZsMWMyc3JTM1VyTVVkclExZFlVSFJHTTBncmVVRmpNUzh2Vkd4UFJYZFhaVEZ3S3pVek5GcGxSR3hqVEV3MVZVUnBlV1ZWWVZsQ1ZHUndRbVJaTmxWaFJtazBjRlZtZUhZd1RVUnlVRkJXY1U1cVVHaFdiMEo1VVVONWRXbERNVVF5TldRcmJWcDFOamczU0ZaVGRIbFdaRXBSVEZwSU5rRkVSa001ZDFFdmJVaGpiRGRtVTJrck1YQmljRGcwTVhVM1JsZzNSVVJuVGtKUlJEZElMMjlsV0VKaldFUnphV1pXT0hSNE1XcEZjRlprUkRaV2VqTnVWR0U0Um5SUVdVaHhkbVJZYTBkcFkyaFhlblJLYlRJM1psUktXRXRwVDFOTFJqQTNNblp4YXpaaFFXaHlZMWh2U1ZSSmEzWTBUbkYyWnpoM04yMVFTV3hPYUU1TWRIUnFjV05DY1ZkblJYSTBObWxoYjIxTWEwZFFXbU5LYzNWdlNHaFZkMDFpSzBZMFVUbEtXbFUyTUhKcFEzTTFha1ZpUlVoWlUzUXJXVlpvU1RSS2NuQnZiblJGYm14bVZuaEpPRU5IVFdOV09VTm9LMnhuWjFKRE1qTTRaVWhvWm5WamNIbGpiRlJZY21GRFpHOW9UazgwWTFCRlZrVllNMU5vT0c5alQzRnFVMUZhV1RobVJHUnJSRkZTUjFCeWIzZ3dZM1ZHZFhCeFNpOUlOVlJEYzFsSU1EUlNaekkzY3pOTVZWRlBWVlY1Y1ZsNmNWSkJTSFJVTVhGRGFsVnBUMlZrT1ZWRFpUUklSekJrUkRSdVZXUkpkMDE2YWxsUVIySjZXVXhDZHpVeU9VeHVUMDUxUkc1NmRVZG5kbEFyY2psTVdtbExUMjFNUTNVMlJHc3lhMGsxTjBSR2MwRXdjVFJpUWxjdlQwOURkRVpsVVZKdlFubEJlRGhRVkhSQmMyWnlUV1puT1ZocllteEVRa0pITlhWbmRrMU5jRWxMVFRsWVl6VjRiM051TkZkbFIzSmxTRlUzVm5oMVJqTk5kQzh4TUROeksxQmFZWEJIZEVrME5GQndZMGRMTkhST1pHMDFSWFZ6YzJwMmVpdHVRWHBSUm1KS2MwcFNTMU5WTTI1VVZrb3pkbmRNVUN0SFZYRndMMHRhZW10RUwzbGhOMVZFYUVkQlNXVlpabWMxV2tKMlZHcENjV3BJVUVwaWRuUjRNa3BzZWtWcldVZ3liazFXU2sxdGNGbFBObXBrV2xwb1oycE9WR2RCYmtGaGVrTjZTVEpYVDI5NE1YSkxla3RqUjNjMWRsRlJOa056VVhOcWJ6TjNlRE5YTWxaUWRYaFBOVE5RVVZJNVp6UXlVamRvZGxOUU1VaDNOMmw1WkN0UlExTXdUR1FyYVdRNVQyWjVOVFk1WVRoVlRHUlRhamhFZVdFNGQzSXlZVTV2UjBONlZ5OWFaRE5CUVhONWRsVm9WV3BJYVZOVVpFMVBlRXBUYjNsRVR6SlphVGx4Y2t0MlVuSlRlbVV6YjFoVFEyVXlUVUZOZWtOb0szUXdSa1I1ZVRJMmFHdExZMWRIVFZCT2IwcFdNV05aVld4eGMzZHhTVE0zVVdaT1JHSlViRnAyZGxNclFscEtXVzlMYVZKWGVEVTNRMDl0ZEVsQ1VqbERjR1ZvV210RFQyZDFTemx0Y1RaclpYUmxaekJvT1hSelkyOW9ORVZaZVZKdVNuWkdZbXBQUm5JMlNtWTBLMW96YUhsQ00yMVRMekU1VjJwWVNFZ3hZVEY0VkVsR1NtaFBXa0ZoVEM5MVpsQkZNMFIxUzNGUmFqUm5hRzVrVDBneFRHUTNlVEJvYjFwdVRGVkRSVUYxT0ZwSlJYSnBhRXBLVVhrM1dFNDJkVk5YVVVGeU1uUjZTVTB2TTNGWVZWUTVjSFZZVVRsVE5GZFFSa2hsUlhWcmFrVllZMWxLV2tKaEwwZDNOa04xYkVwVWNFUkplQ3MwTWswclNtRmFSaXROUjNwaVRrUjVVSEJJZDJWQ1FTOUVkVFZaTDB4MlowbE9VRXRxVkVKaWFtSmhNVVpCTDFwTldGUkhiek5hYjFRMlRUVnhkakYwYzJOT2RuZGFZa1l5UW1WU1JqUnVZbk52ZVZSdFF5dFNkR1JXZWxZMVFqQnJaMU42YWxONGNERmpXRnBvVFUxalRuRmtMMDFFT0ZSSVEwNTRkWEoyT0daTWFHWmxiMDlUZEhkM1p6UnBia2hRZWk5cGVFZFVPRkpzWm5oQ1lVNXpWWGN4WldvMlYyTk1kR1JNYm5VMmNsaFBjbG96ZUV4b2RtSTVjbGhvYVhSeGVYUTJjVUZCY1hORlNHaDNiMHMzWXpKdlpERXJVa0VyYWxwRWRWRmFWQ3N2Y25OTmFpOHljM1pEVGtGYWFERktWV1pHY20weVVHSnBSV3BrV1ZkSU1UaFZaVGgxT1dobFkycDVXSEpTYXpselZWTmthMlJETTJKTFZTdDNhM0J3Y2pCSE1FRk5hV0pYVHpaNVJIRlVPRnBsVVZwcmVVeHhkM1ppTVdwa2VEbHdkSEJuV1c1TWIyc3ZZWGRvYjBGVVREaE5jSGt3UW01V1lYVk1NMnd2ZWtJd1NGRXdiRFJ1UW5OTmIyUlNTalowWjJWTGJqY3djMnBVY0RSa2JsTkVORFZ2UVRCT1dHMTFTalpoYW05UmNVSjViMHN6Y0VsVWFubGtVVlpRSzNoNlkzTTNUMnhyWWtsT2EwUXZWSE5STTJoMmRHZHJUV2hzUldSdFZVbHFRV1JpY25nNVdXdDJialp0V2pBcmIwcDFhVWhuVWtSaVIycGlRWFJTZVd0TVRWVmxURGRVT0ZwcmFFY3pNME41TVhoRlMyOUJiSHBxZEVsaGNFdEtRMHh6T0ZKR2FVdHZMMlpDZVRnNGVWZDNSeXRKWkZCUk5EZDBiVGgxUTNveVFUUk1jelZYTkdsTk5sRjFWak5KTVdORlFqTklMMlo0ZFhkNU16VkxSVVJKZEVaQ2JTOURUMFZQWmpkM1F6UjNValI1VEhkS1ozUllkbU5aUTFBM1dsUllNMGx1TVVSSWEzSlRaM1pYYkRCU1FsbFVNMjFHUlUxaWNGUmpiMG96UzFSUE4yYzBibWMwUm5kcEwwMXFTMHBvUkZWcVIyZE1lVEJuWkM5a2VIWkZOUzlWY0VaeFVHZG1iM280WTNGQ1YwdExObkJLT0ZOUGNsbFphMUY0YTBrdldISkxXVlJyWjI4eGNHUXhTekpTUzJwMFZXWm5MMVp2V0VWNmQybHRMMmhFU0ZvMWREQnFjRFZaUlZCWWJXTnlWazlvUTIxTldsRnNSMjAwVW1WWlVXcEpVM1ZpTDFsVmVIaE5kVGwyY2pVeWRVZG5jMmxoYzIxdFVuZHJTVVpoSzFoUllXTTFjVFp1YlVWNE1VbDRjRFp6YVhKV00zQTBNbHBhZFhkR2FFMVJkMUZhVjBrM2VHdG5kMDFXVW1WR1EyeHBOVXRXZVVRd2VreGtObGRDZWl0VFZ6WXpjVlpSZEZocUwzaElOR1JwVG5sWk1TdG1WVEowZW1WQ1ZHVXhhRTFZUjFkMFIxZFVXRTFETXpSNk0wY3JlblJWUkhsd0wwNDBVR0paWWpGMmQxRnNaVGxuU0VZMlMyUlJiQzlTVVhOWGVTOVpWM0p0U0hjMU1rUnNZbU5wTkdkSFVsWXJXR0pzU21kVFozTkpiVVF6V2xkR1YyMUZSVGcxVDB4eVNubDBObmNyVTI1T05XMWpkV2RQTms5eVdETmthemRFU2twR0wzWlNWM2wxTHpodmQxWlVOamRwVTJKSGVYcFFSMDAyYUZseE5FbE9UMEYyY0d3eU9WbzNVM1pRVVhjNGIzQlJUREUwYkU1MFdIRnFOM3BuU0hWQ0wyNVRjSGgyYzFOQ2NYVkJjMHN3TTJSa1dGVnFOU3QxUVRCMVlTdE5USGR0TjA1TU5XOTNlRGh3TW1GQmNtSXhVRmRWTWpCelFXMDJSMmhIYWtsMmFrZ3pXR1E1ZVhZMFpGUkVTemhLVnpaQk1EaHBPVFZpTDJSNk5sVXZNWG96WWl0aU0xWTVOMnAyY2k5Q1RFcEthMDVzVVVWRmRtSm9TVmRTYkZWaEx6UkNabU53YlVSS01FWlpTekpQWjFCYVFtWmhiMGxJTm5WM1psVlBlVlpyZUVVclVTdDJNSGhOY0VGdk0yVlZhM2w1U21vM1VtZGhkMVZSVFRCRlVTdDBSell6VVdaaFpIQjJORlZXWTNvMk1rMWpUakZRT1RkeWFuUXZUbVZpVFZWcFJUWnJTMFZyYTNwR09XVmpXakk0ZWtKNmVrUnJPV3BDVkZoSlNHUTBVbTV2YmtORVVtSmlhVkEzS3pGeUt6RjFZazR3U3pKYVdUbHBTQ3RHTVZKMk9HVjRPVlZoVUcxbFlrRXdOMmxYWmk5NVoxWkxiMGhvWWk4elNHbFlMelpDT1VOMlRqWmhPREpJVUZGU2RsSnFOVTlzU25sV2RFNWxUR2hCZEVKblYwaFVaVFUyTTJsdmNsRlRTMFEzWVUxRkt6ZDVSbTFzZVZad1ltMTBUR1l2V0VWNk9Fa3ZOME52ZDNabVdXWTRUVEp3U1dkMWMwTkJXVzkyUTIwNGFqbEtTRlpNVEV4TWJubE9ZMDg0ZDNSdGMwUlJjM0ZYY1hsM2NHazFkRFpsV1hseE9HcFBMM1pzWVhsbGMzVlFSMmQxUjJZdlpVY3habG8xV1VsdWMwbDBTRVJ5ZFhGVFJuSmFURzAzTUdGM2EySlJibFZVYkVobmRFUnBRMjVYYmpONVpuZEdLME5UWjFONWFHUnNSMGwzZDFWT01rWmlkbU16V0VoeWMzWjVPRGwyVG1GR1pYaElUbEpKVkVKRGVUZG9aVWRzUWpSS1VUWjJjMGszVGxSM2NGQmxLMnBSTTJFdmVXNHpiV1JDUkhrek0xRjFVMmR0UkZjeWMzWndja016VVRJeFdXeFBlVlYzVm5kU09FcGhRbFJyT0dKbVJYSlNXbkZ1Y0dwS2JqWTVTMlo0UlZWV1puSkxjRGhLVkdSWE5uaHpXVUpuWTNoYWJUbFVUMkowY2xkbU5XWlJTbWx4Tnl0VWNsTktjMVl2V1d0MFp6aE1VVEJ6YkV4UFlVZHVUWGxSSzJwellrc3pTMUZoTWpSdVVYQjFiVTQ1V2pZMU5EQktSM2hxYjJkSE9FeFJNbHBrT0dNM1VscHhRelZIZUhZelpIcEtiM3BxUVVsVGJrSkpZMVJzV1d0S09VTnZZekpYVWpSNFF6a3JWMEpYWmtVNVdXOU9jMDlZTlhKMFVTOW1iazAxWkdWbVRWbHhWREEyUW1kVmQzZHJVSGRHYURsSk1qVnZkME5pU1dscFJ6VlBOblk0TlhoYVltNTZVR0V4UnpKYWVqbFdla05GUW1rd1EwUkhjR1V2YzNsWVQxbzVTbUZNU0doRGNrdFdaRkZrTm1sQ2ExQkVTamRwWTIxdlZHOU9jWGRtY1VOU1MyZFhaVWRYYlZCemFrSkRaVlpLTWl0QlVVaE5aRXhGWVdWVlZXdE1RbWRqSzFKWE5YRlNXblpNVERWVFlrTllZalZHWmxWRVNpdGtUREZRVG05c1RXWmlTSHBPTnl0clJIUmFTMU5EUm5adk5IaGxMMjFyU0ZCMUswRktjR2s0YURKUmFtdDVRVUpRSzBwcmRESm9WVWhaWVVGdE1VOVVUWFJtYkdkaVkwSlpZVlJvUzJaVE1uZHdWMmhCVDNsYVJrd3hTelp5UnpJdlRHVTVSWGhVZVZRM1ptcEZibWM0WjJ0NlVreDJUSFJtUXpkQ1ptVXdiakJITDNKaFdUQlJWMVU1TVRnd05rMW5jazVYZGxaTlJreEpkVU5tWWtOMVYxcHpkakJLTlhBelptWlpkVU5tZWtOVFVGTnllR1l5ZVc5SFlXcEJPVEp6TTBSVVUwRnFSamRsZDBKRWJIWjNVMDVvWkVWSGRuVkNLeTloWjBkWFIxVTRXVXRoZFU5VUwxQnRTRE0yV0RGRGVrRk9NbGN5WVd0UFRtUXJiVXhqYUhNclIzWnlZVkJ4Tms0MlQyMUNSbVp5V1ZJdlNVMVdOWFEwVFZaUGVHZFJjVXBoWWtsc1NYQklWV3BFUkVsc2FIWmxkbWREUkZKak1TdEZhbkJKV0dNNE9YZEpOazlJYmxsUVpVSXdUMlZqT1VNMVJVWnVNM1k0TWtodk1XbGFOMVZyY3paaGMzbzBPWHBKVGpSbVJqaERkVTk1VlhvMUwwRjBSV2hFYjBvMFRqSkhUblY1UWpWWVoyeFBWakkzY1RWR1JYcDVLMHBNVjFKbVkyUk5ka3hOWkVsSFpEaDVNbU5FUjBSQ1JtSlVWSEJsZEZaaVRVaGhUeTlXZURWdlVXMTFNak5rWXpOVGVuVnFTamxuZGpodVVWTlBPVXBMT1ZGSlpXMHlVVkl4YWtWamVHMVlNSGhpT1VOUlMyUlhNMUZ2VUZaNlVHeE5MMlZEYlhOd2VHTnRlWGxsWkZoa0syOWhkR3hTWjNCc1owOVdlbEE1VTBvNWVYZFZWa2h1U1dsYWNURjFZVGxPVFRFeWNsRkdWMWRqZVhRMFEyUjFlU3REU0hSUFZFbFFiSEpWUlhBelVuQTFiWGRTYW5oaFNFeFJjMFZMV0hOcFVqazJRa1pJU2pSdFdGbG9kMk0wU1dSaVVWRXZjVWRIUVV0b04xaFRVR1ZHV1doRWVFUlJRWEJrUmsxMWJFSnlTRWR1THpReWFYcFRRbTFFVUdzeGNUVlZkRkZTVW5SaFRsTnNlVGRCVEhRNWQzY3pNV2hsWTNsM2VHVXJSMEpDTjJwemFrOWlObklyTjJjNGFFcHRaRU5vVm5abVVrMUJXRXBTT0dSS2RTdHVRVGxTTWtKRVdsVlJRMmQxTjBoNVVFOUpVRXMxWVdwR1Uyd3hXVWxCVm05NVpteDZXSEZJZDJ0V1RXOU5XWFpxYjA1TVJYWk5WemhaTUdNcmVVUmxUVlJRTW5WNGFDOHpURU5yZW1JM1UwRmlWaTkwWm01WFJHNDVVMnR4VEdSM1JsbFlaalI0ZURoQ1JXVTNabFJuSzFoSk9HUlVibXhQUTA5a1dTc3dNVmhSYVRkSFZrMDVNemxVWVhodmRVUndPRTlUTkhobmNXRlpiVnBrVW5ZNVduVkVlbG92VkhwMVVtbExhaTlzUlZOQlJUQTVVMW95U0UxNmJuaE1aRTFXY1VWTmMyeDJaVXBGVkZaSVVqZGphQzlKZDFjd2VrdEtXRFI1WjNGaWNFUkNRa2M0ZERaU2FHMVBiekZ0Y0RobVV6UkNWSGxUT1ZSNGVWVlJhVGhOTmpobVlVY3dlRTh2TmpSSGRrOHpiRmxUVm5KYWVHNHlVbGN3YWxKbWVuRlVUVzVxVnpCRlVrSmFjbGQ2Y1M5aE5tWlpWRTk2TTFKVldqaHJkRE14VldadVVYSTNXVUZWTkZGdWVGUnZObWxxTVZjemFra3pPSGRYTm1veksyaHBTa0ZwZGtOcFEyTTViMWxOV0VoV1ZVMWtORVowU0VWT2VYVlZlbk5IZGtSRWNqRk5TV2Q0T0ZjelZFTkllV01yUkd0M2VscHVlbXBhTUZnNWQxTjNlbVpFUkM4NFVUVnlNelZEUm01SVJHWklRWEZpT1hBd1NWSlNORlZaTkVzeVExZDNkbmx1ZEN0TlYzaFdWVzgwZWtGbVlVRlBVazR2ZVhaa05VMXVMMlpVUWtNMU4yRnpTR0V6UkVWellXWm5URFpwUjBGd1RVUTVPV0pzTHk4d2IwTkRjMVJXZWpGVllqUkdVemxaZGpCSmRrUXpkMHhzUTFweVVFRjFTVEZ5TVZwblJFWXhWVVo0Y2pab01rWm1WRmR2VTJaU2JFeFVRek55YTFSUldrUjBka2hzVFZoS1dqQmFWbFZHVW5sYVYzbHllSFJxYW5KMmJuVmhTRnBQVEVoTlRtWkxUMDFUVTNZMGVVcHFhRGRPY1dWek5rUlpMMkp4Wlc5WE5VMURkMDl5V2xoRWQxQkJjVUpaUmk5UWJHOXZTblZQYTBJek5HaFdlRk5qZFhkNkwwWkRWMUZVZWxOTGJEVkVlREp5ZUd4M2FYRXJaM2xCY2tWTUwzVnJSbEJxY2tSaVpuQlViRFZOZEdjMFZWQnBObUZoUmpNdk4wbEtNWHBPTlRnd1psTmtkRGRNUkZCdE1YZ3pWMHBDYzBoUWRrNXpXakl5V0djME9EWkdOMmd6TURBMk5FUnNlVVJNTVd0bU9ESlNhalpuTVRSdmFuRndkbE0yU1UxNFkzZERUM2s1UW1vMmRYRkdRVlI1ZVVOU1YyNVBZVU1yYURBelNWb3hkMjV3YUhwbVNXdE9WSElyU0RKc0x5dHVhbVowV2pKcmNVSnVUbHBvZFUxWGQzRmtUM2RJYkZGUk5scFJlRnBxS3pGQ01Ua3lSbVJ2ZVRkVk1WbFVkRWxoUlcxWWNERmFWM0ZJTWpFdlRsQlZhVUZVYkRCRGNGUkdlakpSYUdKTVpteElWbHAwWkVOYU1qVjNSR3RTYmxaMFlsVnhablZoVkZrNGFWRk1iak4yVUZSSVVUWkpjamd2YUhsWVFVTk1RVFJzUVVsemExRk9VRWhxTWtKek5UQTVjVEJLTnpWVWFHWnNXalJMWVhwNVRYaDBiV1pXUVc1dE1GcEJkbkJqVjFOWFZqUlBVR1pGVTNBck1EWnNWRlpKYkdGMFlUaDNWWEpUYzJwSFJtWnNZVXQzWTB4SFFuVnhTRlpHVW1vME5uZzVkVlZHTUdSNk1XcFJXSE16WTFrd2EzQlRlbFZIVWpWdksyMHlaMWhaTlUxNVlXeFdUV04yYjJ0RWNuaEJNbmRFTWpONU5IRmFjR2RNTlRsRFUzbHFORko2Y3pWdUswMUpSSHBpVEdwRlQxUnNPVk40Y1VWM1ZtNVRlRUppTURnMVZIZEZUVmhWV1hsdlVHWkNSM05wVVRsWmEwdG1OVEJFV1VZd1VEZEJVV2R2YjBOdVpFNXhVek54YUZReGFXWm5OelJUUmxrMmVuWk5OSFJDZFRsclpVcDNRM0p6VTBsQ05HVmxXbmc1WTFWTFNIVllhR1ZuZGt0eGVrVlBaWEExWlZabU9IQlFiMVV5VkhOMmJIY3ZZamRFYUdOSlVqZDVPRVZRZHpOeVFrRjBibXhPT1hOUVJVbDBUbHBqWmpoU1NXRlRURmxuVVhKeFREbEtOVklyVjFwWmF6TnplVzQxYjNvNFQxcDZjRFE1ZW1Vd1NHaHFObmNyY2pCbVIyTklaWGx4YTBoQ1pqRnFiR1ZTVVdjemRtcHlaV1ZoYkVkSGIxSktNakUxT0V4b1l6ZFlOMVJvVUZCWmFtMHlkek5PTWtkM2IxZDFVVFZ0VTNOcFJXZFpiRU5uUXpZM1prVnJRVGxuZGlzd01GRlZkbXd3VEZGS1ZYTlhOVTF1Y2pKYU9GZFVSamhxYldKSVJVZG5lRkJzZGl0M1JXaExUaXRqTkhKRk16ZEhVWEpRZDJGRGNHdGlRbFI2V25CVk5IVlRkMngzWlVWRU1teEJZMFF4UlRZNFVUbDZOblJpTlRGNE9WZEhiRVJSVGtocVpsVm5XbWxETUhFNVRsVklhM2xoYTJkelEyUjJjaXRzVVdjelNYZGFlRGxuUzBsMU1taGhiVTkwVlU1VlkyOW1Na0ZETjJWUWIyTmtjM1JUYkZoRlRrWnJaVE01ZEhWTFRDdHFOVU5xUzB0c2MydFplR2t3ZFU4MEwxZHdkVUoyTVVKS2RVSjJOekZCUm05elMwWjRiM1l5TVdnemNYZ3lVRVZ3YVdKelprWXpSVVpLYWxCeFltRXdVQzlSYm13eVNETmpialZyYlRFNGFFUkdWV1ZTTHk5TFV6Vk9lbVpMZDNScWRYQXlhMUoxTURJclFVTjZSM0JMYkM5QmJDOVZSQ3RFUVVaS1RsWmFUa3gwWkZob1ZuRk1WR2hJUmtvdlVXdDNiblpDYVdkMFFqVkNOWHBzV1c5VFQyOVRORlZOZEVFMVIzUktWekZwY0U1blkwTjBVWGx4Wm5wSFRVVjBXWHAxV1NzMVlVZGFiM05VTlRsU1ZXRXZiRGRyZDNscWFEQkpZM0JQVVM5RldEY3liU3QyVDFvMFNXSXhkMmRSU20xRmRtaDNXRk4zUmtadVVGVjRVVTlWT1VSSFVqRlpSRzkyY0ZnNVRUaDNZemx6TWxSalJYQXlUR1ZxYm1kSWNHWkhla2wzV1ZOc1VHNXRjMWszY2xaalFubG1iM2hNV0ZCS09FcFRlVkJIU21JemJrNXlWRE5SV2t4TGREY3pRM0JXYlZVell6UTVLM2RJUVV4U1J5dGxUMFJNZUc5RFFUbGhNbFJUV0hOVmJGTkVVbGhuZWtGUU9ETTVUV1F5UzNkUU9ETlJZM0JzU0ZkdVZXWnlabFpESzNOSlFXdFVRWGN3YkRKbWREWm5WSGhLYzJoelFYcHlTSHAxTkd4NlpHSmpObFkzY1ZOUVpVWm1lbkI0YkdreGNFRlRUSHBTZFhWTlEwRlRRbFUyYjBKVlNWRktSVEpIUm1wa2JGSnlhVGRaWkVoUVdXUlVVWEZEU0RNd1NEVTJTMjV6YVU4MGVVTkRlRkl6ZEZReE4yVktlV0ZUSzFKallrcDZOSFZCWldSS05HbzJOVnBoZUZGWU0yaGpiR2huY0hvM1RTdFdla3AxUVUxalVGQlRSMUpwYURoVVJHRkhWRzg0ZG1ocVduTTJPVzFMVTBwTFpEWk9SR2xwYmtsMVptZHBMM1JqUXk5dlFXOTJUMU0xVUZSa05GRnlaekJMTUdoV1FrSlhjamRyZEdGRlUwUjRaa054V0dNck1tVndUMkpSU0hCcFVWZzBabnAwTlZvclMwVnpTVUpvVkcxNWN6ZFdUVGhDTWxwSU9YSTFRMDFMZEZOVGJuRXhMMFZ4YldaWGVtc3paMVpzZUhOSVJFSTBhSGxPVGtrM1pHRmFOVEF3ZDAxWVZXRm5aSGs1VGpCc1ZFbDJPR2RuVEcwelRFNVljV1UwUTBOVlMzcHBlRWR1VW5kS1FUTXhMMkZ3VUc5cllpOURPSEV4VkhodmVGSjBWV3BoZDBaNE1rWldRbkJPY1hWVlJqaG9ia1pQVEZJNFRHdFdMM0ZFTkZaWmRtUkdXblp1WlRsdGQyOXVlV1IzUXk4eldscEtablJWWkRGcFdrcFZiaXN5WXpscmRqRmlNVVkyVTJNMGJuRnBkRzV3ZUVKTlpEUk1kMGxVVFhabVZVTkxNbUZzVm13NFNEaHNWbWt3UkRoRUswMDJSSE5oY1ZWc2RtOUJkMU5SVFRkcVVHZG9hMk54ZEhWR1lsWm5VeXN6VURKd2FFOVZURGhKVDJsclQzUkZXalZCYlZSbmNGTXZOM2xtTUdoUE4zaDJXbkpOV0V3MlVrOTNVVVpMVVRNdllTdDBhbE1yWVVkVU1qTnlhSGhDZG5Sc1FrWnJRbkJPUTFSclRXSkVZMk54TVZOSFpsbHNlVUU0Ym1aWFNXbEpMMDVsYW14aFUxb3hOemc0WjA0dmNtUTRiRTB5YkN0Wkt6QkVaRmN2YzBoaGEyTmpXVFJrVDNVdlFXMVFjWHBKUkRSd2NtMVpRVkZIYkhkbGJtUkhVRUpWVldkMVV6ZHBjeXRNVDJWTWFrcElhM2g0Y2tJMEwycEJSMFIyVEZOS1kzSjRNME51TW1OSVJUQlBWVkpUVWpWbVVYY3JjMmRPTWtkNGVWazJjVFpwZVhsbk5tVjJibkowVm1oM2IyTXZaa1IyTlV0eU9GaG1aWGs1TnpGb2IwdHRjRlZaTm5OV2VESXZSV3huZFdoaVRHMW9iVmhEY0djMWFqSkRURFpEVDBKV1JWazNOQzk2TlU1aFFXMUZkR3hXY0ZWV2JFMXVjSHBrTm1sa1pFUkxZV3hKUzNkalIyNU1TVk4wZHpaaVdEWkhWR2gzWkhacE5GVkZVR1ZQUlc4NGRFWTRUVXAzVW1ac1pEQlpiREpwYWtkbk0wMHpXVlo2VXpaRmIzRnFRVFpoYUdwUlkwSmtWWFpvU2tGaGJuaEhaM292U0RSM05FRmpMMjFZVDB4cE1uQnpURXA0TW5CWlNtODVkR0kwVW14Sk1rRXJOVkZpZVZWNk5tSnpUbUpLVFZOVU1ETk5TalJvU25sc2RqUnplVkJNTlVodE1raHRTamMzWW0xNWQxQnJXV3M0S3k4M1dUQkZMMFpzWTBwS1NtOXRhbXg0WTNZMllVc3diMUU1YTFSRk0wVXZhM0JsYmpOVmQzWk1NVWxXYUVGM1R5OVNZalUwYlhvclMyOW9lV1ZKYUdzNVVEUm5RVGhRZVZOT2MxVmhabTF5V0ZwT1pIaDVTemh6V0hCbFpHUlNNbGRqU0hKR0swVkhNekpHVFZaVE1YaFJjVGRuTms5V1VuWTVkemRITDNwM01tOXVORU5XTTNwMlNrTjNUelkzVVRSWlEyVnljV2g1U0hNeGRqa3dSbGRWZFRoMFJGSlJOa3AzUkU1aFNHbzRUa1ZHVlUxRlVuVmhUMGx3TlVwVFUzcEhObmRLVWxodVNEbE9VWGx0WmpaR1RIaG5RbkJSTUVKUmQzbFBSVEZ3TjJVMWFrZG1VVkF2VUVsck1FaHpWSGRKYW5wVmFWQndkVWx4VEhwalRWVmtOSFJqV21oVFMzaHdURmxvVkdoT1duaEhZMkl6VEZsdmFqQlFTVlIxZUdSbmIyTnRjMFpJVFV0S2JGZHNWSFJ1UVRRM1lTdE9URmxqY21oMlIwUndlamRPWm5sUGVXOXZhVXRCY2pRemRYVkJSVGxqZW1OaWNVSjNWa1l2V1ZwSk9UWlRNbWx4U0c1UVZsSTJiRWQyWjJJeGNISllVVU5NZEZsVVVVd3pjRUpKTjJsSFRFMDNVMGxSZEdOcFlqSnlUbVpKVjFoSE9EVTRTMHR5WjFvM0wwSnZSVUkyVkUxU2FWRTlQUT09IiwgImFwaV9rZXlzX3Jlc3BvbnNlIjogImNTczJVVWxNVldjMU1UVnFXVUY1T1d0MGNGUk9VRUVyUW5WNUwySnJVbFF2UkZGdFJWUnJWM3AzU0U1UlNYcHNTR0Y1TTNrMkwyOXdPRzkxYkhKM2JGWlVSRVJrYUU5UlZVeGxkR1Z1TjBsUGFHSndkMUF5TldWa1VGUmpUVEpFUm1kU2RHSmxNRWxoYkc5NVZ6QllabGxKYTJ4cmVWUk5kRk0wSzNORlVpOTJlVFE1YkRkc1RuY3pjMk5zYUVKV1QycHNSR3AwYkRWUFZXeE9ORFZvVVhsSlNqUlZTVVJNUm5jMlJVUXZja2RWV1dGbmRrTlhiWGd6YldGekszaFNUbVZRZERSTVozcGFha1YwYmsxdlRUUnFURkJNYzJVclVsbHNlRGRTUVU5SWNuRnpRek52V25Gb1RESmtaMmhyWTBGSllqbGthVXhvTHpaUWFTOVdNM0pWTnpkSGFsUTBTMGhrVTJWdVNUWmlOalJTTkRad2NVUm1VMFF3U1RBcmRWTnRkamwwVTNCbWIwdFBVV1ZNVlZnelRIWm9WVVU1WWxGMFMyMUZjMnBSVjFkeFQwNWxTR2w0YWtoeU9URkxNMWsxSzFOU2NtYzFjSEkzUkhod0x6ZFVTM1pIV2pJNWNESnVORUpCZGxCSE1pdGtZMW93YWxkME9TdEpTVkZMVlZoaWFrTnVTVEJZUkRKdE1qQkRaRUowZDBFPSIsICJkbHNfY2VydGlmaWNhdGVfdG9rZW4iOiAiVUVReFkwdGpSRE0yVkhZMlFVNHZLMEZSUWxZd2FtcEtWMWRrUm1WclluTjNPV0phU1dSVmJESjVNMDVSYzNacmVUVnZkMDltVUZSbWJ6aHVlRnBHWm5Sc1VIQTVTVm8zV0ZoU1QyeFplR0l4YTJ0dFRsQmlNalZ1T1hjM2Nrd3lWM2h2Ukd0NGQxbEpiMWxuZFdOWWRYWjVabVZsWWtGc1pIaHlabnBPZFVodE9URnpjbEZZVkdOdFYweHZiMDl0T0UxQ05XeHlaRFJ6Vm5aTllXRTJXazl3VDBwdU1URTJXWE5UUVROSVpuSkNaeTlxZERObVdrWnNNRXB2UlZJM05HTnJOVEF2VVhSRWJ6SmljMFJGVkZob05IbHBjM2x2UldSdlNFbzBMMjlRUm04NWVVUmhNaXRvVUZob2NWQXJkSEZNZFM5T2R6WkJkbkp1UkVweE1HOU5ZVUpLVlUxMVJHaFRjMDR5YTA4eE1XcHBLMGxzVDFwSFJHaHNVMUJQWjFKak5rOUxLMFFyU2tOM05tVkthRUpSVEdOVWJqWTRiWG96WW5neVpXUkxTMFJRT1dSQ2MxTmpZbkZsZW1KVUswRTNhakU0TjJoRVprRmpSVUZEY1d0UWExRjFTRGt6YkRWWE5TODNVM2RUWjJ0M1ZWWXpValZrUlRKSFdHbFJSVU5PYzNjdll6WkhaM2RpYjI5U1RVZGphR1Z2Y2toeWFqWnBUemt4WmpjMFMyWkVTVUZQVFhSSFpXUlhkbWx5UTFwMmJsRkJVRVI2TWlzclFsUlZaRkZRUnpVNVkyZzNlV2x4VGk5Q1VHSTVNR1JyUjJjMFUwWTJSbFI2Ym5CaWNWQjVhRlIyVWpadmVFcDZVRzVhVVdneE4wbDVla3hWUWs1dlkxWlVTR1pKUm1Sd2JFRlBiVW8wTVdFeVJtcFNSbmRpY0VkTWQxWkdhWGhEUkM5bWR6ZE5XVmt6TjBoUldrSkxkU3R4VFhGelJubDBXRmszVFdJeE9VaHdlVkF3VlZodlZUZHZhVFpOTW1GTU4yRm5TelIzTkRobVUzSlRXbTlsT0dKdU5sSkVVa2RwTDJodldtaDFhQzlWUnpadVZVUklhVmx2ZFZOc1ltTmlVbTB2VUhONGFXVlZjRzR4WmtGa2ExSlBUVGhFUWxGdk5EaHpMMDVoYlRnMWJESnpPR0pLTjNoM05tWXhOMWx2UW5KRVFUQk1WWGMzTTIxM2FrSk9TRmhJTUVWU2NIQTJjWGxyTVRCMmQxaEVRWEZXZURjcmFrbEVSbE5OYW05dldEZHZTR1pVWjI4NWVTOUxjSGQxS3poeGFTOUNOSGR5VTJwbGJXcHViMjl4T1hCRU1FMVpSVWRsYlRadGR6SXdhMFJNU1hvMWExQTFlalV6VDNORkwzUldXWFZ3ZEhKRmEyUkxVbkJsZWxwNFEyMU5PWFF2VnpkMU15dHhSMWRWZW1jM1FrVkRjMU5qZVdOTWIwSjZTbUpaUkc5Q09DdE9jelJCYUhsblIxVnRTM1EwV25weUsxVmhOMDl1Y1dKVFRXRkpPVE5pVmxweFZFTm1NbGhGTVVOVFpsbHdaaTkxTTJ4MVNsVnpiVUlyUXpaVGNrNVVUMWhUVUdJek0zVXlTVkIzVEdGamFqWndkVmhITTFsWFlXUXZWSFUwTWtacldWaHFNbXBEYjBkelZXa3ZlREkzYVc5TlZFYzJOMHMyZW5VdmVuQXJVMkl6YjNaRFkxTTFWa05OVlVScU9IQkljbVJxUkdoaFRrOVZlbUpwU1hkbFpFUXdVM1Z1VG1GeldsUm1aRGhPY0V0SlNqZ3lXa0ZITTFCeE1UUldiRGhIZEdkS2NDOXVNV2RoUW13NVF6QnFOSHByVEZwSGRISlBhelJtWVRacFJqVkNiV2wxY0RGU1ZsRjZZak0yZDJ4eVoydG1WM1UwWm1kNFVVbHdaM1pJTUU5WFptRlhUVEpyTDJoclpVTlVabkJVVGpGRE1sQTRha2MyUkd4alZuWkxhbUpzYjA1eU9XYzRjRmhLTmtKTldqWlVVRTFwUnpkblVrWjVVbkpWVm5OcFowRkJWSFJyY1ZWeVdVMDJNaTlwUzNKcE0xbHBNR2t6UWpsb1JYWktUa2RITVhJM09XeHVSRFpNVjJ0UWJWZElVbk5ZUTJSb1FqZHlibGhQT0dKUVIwaFZiQ3RrVmxGSUt6TjFlbXRtWkd0S1NFaGhOVlZWV1hNelpEUnBVMDUyVUU1R1preGFVWFEwTmtwUlZubHBiemxhWWswMmJYTXdUME4zZVhSeU0xSnJMMVpTVVVVMWFsRTBkVmx2UzFacWVIQTRZakpvY2pKelRrOUVTbGdyWVV0SVREWXJWWG95TmtOM1YwWmpWbmRMWjFsNWNUTTRhV29yT0hoNk5GUXJOVVJDWWpacVQybHZlRkpKZVUxWE1tUllZelZTYWxKWGRHZE9abnBhWjJSRlNrWlhSamt5V1RKQlpHbFFPRFkzTVVwbFMycFlja3RxTmxKVmMySkNWV2R1ZEhKSFNFZEpRM1JTYkZSUFJsY3hVMEpIUkRoTFIxSTRZVUo1VGsxU1VreDRiRlZ6ZFRCRWNGbEhOa1JFT1M4elZtSm9jR1IzZEdaMVQzSXpVMmRNUkVwcWNIQjJVWFkwZFhCeFVGRlhLMjlCYURoU1VWSkdWSEkzTDBaVWFWWmhXRkZaTkhjMVJYSndjRFl3U1ZONGVqRjFkR2RyT0ZsM1prNWFZVVZQV0VvMGNESkJjbWhEVWxNek1GUnlVMmh2ZERCRk1URTFZV2t4Y25ONFNWbHdaMDVxWmpKSldUQmtUM1Y2Y25CRWJXRnNNa0p3WkdveVJuZ3labU5NVGxOUU1WaHJNMGNyYzNONGJVSkpkRGc1TmtKTldVVnhhelU1TUhCcWNHcFVlbWh1U0VGaFdIcE1WRVJrUzFKUFJsSlZSV2c1VDA4elNWcGxSelJQZEdWUVRsTmhkbkZwV0RKSmR6aFFaMmd5VG5GT2MzRnVPVEU1WjBsUFNuUmtaWEJGZFVSQk0yOW5UemhDZEd3MFdFdFFjVVJKWkVsaGEwdzFOVVJ1ZEM5TWFXcFZaVzFCVTA1UFJqUjJiV2s1V1VjNWNVRktkRkpxYlhoSWJFUlhaM0JrU0RWd1N6VnhjbGx5VGt0bU9EbERSMUZVUVRKemNYWnliMWxGUVZKUFRUSlpRMVFyU0hwMU5rdGtMMlZYYkhvM1pVZHVkVW8zYWtkS1Z6ZHhUbUZTZFc0M05EWldZM0UyTmxsbGVWUTBTbElyVW10YWNqbGthV3hoV0hWeWMweGpRV05TZUdkSVVDOXZWMk0zZHpGb1NUZHJUVVYyVW5sSmJVSjRXV2hZV0VGM2IwWk9WbmwzZURaRFNXTmxSbWxOYVdvM2FrbzJSUzlYTDNCYU5HdFhOMWxsTDJSRFlrbzJaMWhLT0U5MlRIZzRZM1JqTUVkc2VFMDJaMGhGY0hCM0syUm5NVkp0VkdRNGRWVlZOVkUyY2pKdVF6RXpiR2xOU0ZWWmRIRXpNR3gyYmpKdWVHOUNSRkpDU0VKaFZYbGhiMlZ0VEZONVMwRktURXRTUW5ObVNEUllPSG8yUm1KaFVrWjBNV0Y0TUdSb1JuTTVTMUpoT1hKR1NtUTFhbU5ZYUhkU2IwOU1RelpsWjI5dU5WbGFTVVJsTDJKbU9EaHNUMUYzWTFoeEwzVkJReXMzYm5WMWFtUnRSMEZvVmt0T1dWVTJhR1pXYkZwVFptd3JNRE5qTUV3MVRYRXpVMkZCVFdOclRHMVlhMG8wZEhGcFNVdFdkMms1VURGdWJrbEhLMUJoYTBsVE5GVk9hRmh3V1RBd01rVkdjVEZXTW1sc1JHRmtjWEJ6TlM5b2IxQXhSRkUxVFhabU9XZFRSbXd3YkVWbWRGUnhUa2xOYldkWWVXNXJVVzgxU21ReVJsSTJNelZxUmt4MWExaFNXbEU0UVVJMWN6WTJhRlphTlZSMWN6Z3hRbXQ0YjA5S01UTnRNR1pSVVVGMVZrVm5jV0ZaYVV0alJtMXFNWE00ZFVGeVZTdHRSbTFqUWtJdmRtZzNNVVkwYkVwTk5qQlVWMFJJZUVVcmNubHhOemx2ZVRSeWJUTXhTREY0TVdndlNEaGhjRUpwVjNaQ2RISnNRemhRWXpWUGJWQnpORzlyWkhKaGJXdE1kVzVsZEZKU1ZYSndZM2RGVDNWTFdYTTFhRXh5UW1sVlpFdGxTVlJzTkd0dldtcFJSMWdyWkhnMFoxcDZURlpxVlZCUGR6UTJNSGhVZW1OTmIzaGlNVTkzVVdWbGFuUlhiMjFxY0RFcllVOXdUazVMTmxCMU1UWTJORWxZTDBRNWNVbG9iVmhMYmxKdVkxQXhWVkZTUjFOSk1tTllNVGR3WTFSa2FUVkxNV0ZLV0RGalNGWnhVa2xVTjJob01WZHFjVVVyUkV0eVZFMVdNVFV2WjNoVk56Sk5NbEl3SzNwMVNrRnpNRlkzVlRjNFpXVTRhbk5wU0UxS1FtVnFNSGRVYVVneEswTlFSVGh2TlZKd2NYZDFPVzgwWlM5SVRYbHBZU3RtVFV4aVpFSnBjRWhFWW0xTlYxcDJUMmRSYTNkbWVVNXNaVFp6TVdKQ1pFZHRibFp5Y2tORlRtVkdNVkpoWTNrNWRGazVkVUpNVjJNNWRubHlUMUEzVkhac1FWRlRSR0ZsUkVZMGJWWlBLMDFRVVV4NU5XaHFWbE5XYml0TWJFbHNla3hRVlRGelJucEdVR3N5V0VGaFMyVnBOM2hJT1daV1luUnJZamR5TkVkWlpVeGhRVlJRYURZeE0yTlNVRmxTZGtGYVZGTXhWRzkwYW5saWJtWkdka3BtWVZkak4za3lXSEJhWTBwYWRGcFFZMDlKUjFSTVRFSnVNMmhzY1hObFVVNXNOeXR4WVZaelRHTlZjazVsVW1oU1ZWQklMMDFSUWxoNFlrWmthVEJWYVN0c2FsUkNaVVpxTmpSclN6TnNORWt3T1d4NlREWXJjbWxPZG5GSFozcGpiVFZEVkVFd2JrY3phVGRwVTBWWlpHaEhOMFpFYUdaMmNTOWpjM2xrU0RkTFoxVm9Wa3QzUVdGb01sUmtXVzFtZVdFNVJXeDFTMGx0WkRCWldsVkljRkV5VVRCNGNuaEViVXQxU2xKWE0wcFVaVFpxTlZSaWRUQnhZelpqYW5KSlMyTmtPR2xrWkhOamRrZFNSRXAxSzNKNU5Yb3dPRzFsTlRoclRFdGhabkJuVUVnNFUwMWtlR3hrWlU0M2JFVmlRMU4xWnpoeFdpOTNTRTFKY0RkUWVWWkxaMjV3T0d0dk1EZHBhVTlJV2tGUk0xQjJhMVJKWjI1S05uaFNPVzVQTW5Gc2FtVjBNekJOVmtoYWFXcFBkR1V5VFhGNFVHMUpSM0ZXVW1SWWIwRmxSRzl2TTJkaFJWcHdVVVJFWTJ4c1RISXlZamRKYTJOaFpUTlNlRVI0YUdoS1FtZHNWREJVVjJaNWN6SjBiVVl5T1Zjdk9IZDJabkl2U3paclJGSnVUakJhT0ZKUFRtcFRZVGRrUkVWdVpFWTNjeTgzVm5KbGFucEtSVTFTVkRFd1FWUXhlbVZTTTNObmNVcHhiRXN2YkVwNE5sRkpkR1ZzTkhsQ1QzaHdkakJ3SzJadFpVUnVWRFo0ZVd0TU5rYzBla3g1VjNoVGVHbFpjMmR2UjFOUll5OXljVkpOVERabmVuRjRhUzluTVdGYWFrVlVWMU50TTFBelpUSlJRV0ZFU1RWdE4yVkdiV3BEWVN0SmRuZFROVE5NUW1OWmRtMWxiV1JTTDBrdlUxRnpTRmt4WlV4QmREbElTbTFIT0d4WVlucG5ORk5ZWmpkNlFVWmpaemh4UTFGTk0yWmhjbVZIWldkT05UZFVZM2xFWjI1MmJEZG5PRzVLZEU5aFUyTllielpMVTNOVVRYUjRRbGhZV2k5QmNFdEZaR3hwZEhCMGJscHpNalp4YWtsd1pYaHljRVZYSzIxRFpFUnJlVUZDT1ZkTGVqQnNibWRMVEd0TmQxWmFRWGRSVkhKeVEzSklPU3ROVTNvM1FURTFTRGMwWTNGSFV6QnFiek5wVGtSaFJsQkxNRVIxUm5sWk0zUmpkR016VFRKcU5IbFJZV2RDTVd4aFNscGlVbkV2UkV4MU9GcENWR0o2VFVwaU1qWmtPR2xWYUd0d2NsVmpMM1l2V2pWWWVFbHRSbEEzVGxCbGMwa3paVkpPZVRkdFlsUnljMUZMUlN0NGFYRXJlbXR3UlZkb2RrdFdSV2c0ZEc5amJFUkRUMHBRT0M5bWFIbzJhRmRpTWtJeFl6WXhRa28ySzJvd2F6RkNXV0p5TUVKYU1UUTNPUzgwZDFCdWNIRlBibWh4VW0xc1VHZEtTMnB1ZVVSSGVuUlpVMDVHZDJWaFNWaFFkVUpDYldKU1ZUZ3pUMWxKWW1GM1ZsQjRUMmt2VkhKelJWbEdkM04yZUZZd1RWTmxSWE0zT1haWmIzaERibFp5UlVkaVNFZHhlakJ1T1VReVlqVkVLMk12ZERCbGJVSXdUVWM0Y2xWNlkweHdPRmxIYVhSc1VGaGtXakZZU25Cdlp6TlRaMkpSSzBodWMwdE9hWEkyTVhGSWMxRmlha3RXVW05M04xUldSMmxSZFhnMFlXRkZWWG92Y1VablVHY3ZVbVJOY0daVVpIQk5OVnBIU1haaFdrZFVUa3BGVTJZNE9VOU5PVFJZYm1Kd1ltWldSMmR6WTBOUE4yTm1UMm93UkZoSFMwdzVTVnBVZWpGMFlVTTNNRE56TVZoSWQyVlRRMjlhUzFGT2NEVmtibHBGWnk5M1MwdFFlRmRMVERkbGNWZHpkVXQ2U0VGNk5VWXlMMEUxSzNFMmRrWjVjMlpvZERRM1ZUbFJkbkpGYUN0SVRVd3ZhelpoZEhsa2JVeHBVMkpWUzJVMlJGUkVWelJvUXpaNFdYRlVhalpCY3pKbE9HZG5UMk5TTnpOQlp6ZFliVGhTYnpGcmFtNVhXbUV2SzJaR2IzVmthVk5QTm5sdlYyWklkMDVUVURGYVMwczBXVFVyTlhOU2RXMVNVMDlGU2swNWJVcDZhRUZ1Uld3clZYVjBiRTFQUnlzMGNrMTVjVEJRUW5WUU5reFRUbFp2ZEdWcmRIZ3lTRVJEUXpZdmNWSTFjM3BvTkZobVRtRktNVE5QVUcxc1FrSmFkM1Z2Yms4NGFHWkliWGxJYlhGWU1pODJhMjF3VDFKelVWZzNSVmRzTTFNNU1XOWFWSFJwT1VRcmVuaExhMWRZY1hWcE1qRmhVbEZWVjFGSmJUTlhiSFJLZVdzMlZISm1kRlpIV0RobVVHdDFlRVJOVjBWRGVVTnRiV1pMUVRCRWJGbFlhRzFuTWs1SE5scFJaMWRNZUVkSGREQTFUbXBGZUN0RmJWUjBaV1JRWkVJelNrRjVlVFJIVkZOSVQyUkNZWFZvUmtWWlkyMUlMMnQ1VDI5U2EwZDZWR2h0VFRSME0xaGtjR1ZFYVRseGJHTkxaWG8wZGtsVFdESjVRVlJFU3pobVoyVkhSV2g1VUZwVFJqWklaamhKVG5ScWFYSjVhR2hETkd0aFJ6YzRUbFJzUVZoaFMweHdlVXBhWWtvMk5rUXJOVlpyUkRGMWRGZGtXWGRSYUM5bVJVRk9TV2h5UVVad1pWbHpUVE5tVERaalV6aElORFY0TWtwRFFuUXJUVEJPVWsxcGNHMVNlakUzTkdKclIwVTJRa1IzWTJoalVIUlljbmh4YzJnM1ozVmlZWEUwTkV4SmR6VjNNa3hLVTJadmJXNVpPR1JtTW5aRVUzTldLM1ZKVm01WGJuZ3lTRll3VW10a05tOUtSa3A2WjJkaFJpOWxSMVI1VDB0eEwycFpkVEpDZDJWbGJTOVhTMjFLY0hobVUwTnJlbFpDT0ZkUE0xbGpUbmt4UTNWR00xTm1hRmM0V0RkUGVHZElUV1l4UzFWVE1WSjJXRTVrZDNWak5qZFFVMDlKVERCNFJTOTVSV1YxYzJ0aVlsUllNV2wyVDJKSVUwVnVWamszU0VaYVUyOTNSV3hyZFU0eFJrUlVTRmhEZWxWUVkzZFNUMWxZYTNnMlZXaG1kRkJzY2pSNFJIbFJiV3hoUTFOVU1XMTBXRVJRV1U4M2MzbEtOa3RwUjA0emIyNVRha1UyZEdaT1VVWlRVbWg2WjJVMlJrd3hkVVJuVW5WUlRtMVVjVlZzTWtsdGIwSk5ZMlZwT0RjNFRHVXlWamNyVW1NMk1rTklTMDlvWVRaYVRtRktTRXBNTkRGUFIxUjFjSFEzY0RSQ05uSlJhbEpsY0hNdlozbHNaSFZUVUdWdEsxWkdTblpSV0RCdFdYZGtRVkoyTjNwU2RVTjRiRGhoZUdVNVZVMUlUWGhVYW1adE5YcHJaakpPUzA1d1N6RnFORzh3YzA1Q01UQXlVM0ZqVm5kRVMxaExOV1pHV0dsWWRVdHFWMjU2WjFNMmJHbExRbXhST0dWWEwwRTFRelphY25CNVQwMHJkMHh4ZEdocE4xRTNNVUpMVEZCeWNsUnVTRFF6TkZCVGRqTkhlbGREWnpZeVptbHdhVmxzWlV0cmRtaHFaRkJFZUVKU2RraDBOMmMxU0ZoSFZpdDRSR1p1YWpoMU0xSkxZa2w1V1d3d1dWQXZUbnB6VlM5V05FSmxlbXBxZWxNd00wTlRkbWR6UkVsV01YZDBUVEZ1TDFoamNucERkbmd6Y3pSaWJIQkxSRmhvVm1ndlVWQkhaUzl2WkZjMFYxSldZa0o2ZDFWeVkyb3pPRzgzVVZweGFWaEpabXc0YWpSNlNHOU9jRXRZY3pBMlNVSjNiVGhQV0dRMU9XWnJaMHRCWlM5RFlYbHZhM0JJTTJKWlp6UnBRM2x1T0ZSNFNqZGxVVE5SZDJKbVRFUlpWamt5U2t0MlpGWTJSemcxTm05aGRFNXZXRFJrYTFKU2NtMHJOVmt3ZERGWlkybFVhakJMZEZoRGNXNWFNMVpUY1daYU9UbFFkbUpOV0ZkeFVIY3hLMU5IWWxoYVUxZHNVM2RXU1dWVVlWSkJZazR3UkZwWFJIRkdiV2h4UWtWUFdDOTNhVTVITkhwd1lqVm5abU51YVVoeGNuaHNSM2s0VjJRNFEwOUVaM2M1UVM5NGFWZDVUVGd4YVNzNFNWUlpSekZ0YzNGRmNHRTFTRlJMV2xsd2RFTjNUV2xwTUhoUFYzWmhXalJYUTNWVmFtY3lPR3BzU2xrdmRsRXhjVE01VUZoUk1GZHZha3BJYVRWR01Ga3dZV1k1YWxkTk9YQktXRXBLYmpGT1ZWUkRWVlZTTlVkek5qVlBSRWwzT1V0SU5FdEJaVWhNUjA4M2FtNW1WMk5xVDBsT1UyOTVVMGxOUVRjdmNXdFhkMlo1ZFhNdlJURnZPREJHYlVsNFYwOXlNU3R5UzFwd2NqSXZhbFlyZFRkR1Vrd3dXVkUwU1dFM1RFWlRSSEpGTjNjMmFEZEtOamRCV0RKTkszWkViVFJaTTNScksxbEdhRmhvYlZCRFZra3ZUV05wWWtZMlpsQXJVekpCV0hGcmRXaHdhVVY0VGk5VWJXdGlaME4wTTAxQ09FWllMMU5TYUdwaWJqUjBjamsxYm1oNmNuSlJVMFkyVmtOYU5Ea3lkR3BJYkRSSVkxRlVhVllyUnpOdk5FVjFaRVZrY0RoSVoyNW1hbTkxUWpGeU5rUjBVVWRDTmtsV1psY3ZNalF3Yld4eGVrOXBXSFpuVW1WWWJEZExOeTh6WnpKRlJFNXVXbmxLUlhaNmFHbE1iMlpIYmtoaFIxRlFVMlZ0VkdsU2RGTjJaMmwyU0VGcVdIQkxieXRZTUU5elRGcHBiMnhwY3poNmFtNVZUbFZFTlhCVFJpOU1hMDlZVURSTE1sTnpNa3d3ZWxoRE0ycERNbXBzYzBsQmVYb3hNakE0TjBkWmFtSnBSR0oyUTBKd01uVkphMHAwTjFsT2JWSlJlR2xRYjNodlJGQXJiV2hVVTI1aEwyY3ZSMlZTY1VsSkswdE1WM28xTldkTlJtUjJXUzk2VWpsdk0xSkVMMFJ3ZEV4RGJ5dDJkaXRHVkdSSWFGVTNjbGRWTDA5bFNYVnFkMkl3WkdGc1NVVTBORmR2T0ZGWWFUbDNSMHc0YnpSc2VGQTJOVW95TVdGb1NVaFBSSEk1TTAxa05VeGlUMmQ2T0ZKNGFtZ3dUVGxsVFVGTFpHeEpZVzAwVG14SGVHNHpTVEpuYlVaR1dXbFdhbkpLZEdOTGFtZFVkR015UVRCcVVWVk1XVE5sTjNwa1QxQkZiMUZzWVhSdlltUkJNMWh3TUVsT1VVWXZORVZOWjA1NE9XTnlhMVJxWlZNMFZuUnhXV0ZFU21NNWNWWTFTVEF2Tm0xWVprb3hWblUxWmpKUldtRkJZMmM1Y0VGdFFqZDNXbEJaVkUxaVFtUlJhV1I0YTA1UWFVNUdOVGRJVkUxRlNUWm1TM0oxUkc1RFFWVm1OMHRTTkVGR1ptNW1UWE5RY21WQ1VVRmtaMGh2T0VKR1NIbDJOa0ZXWVRsS1VETlZkV2wyVDFZMVIwWlZkVzVYUVhGRVlscE1MekZUYVM4cldHcHdiRkJvWm5KYVNFMTNVRkIyUW1GcWVIVk1LMlZDWWxGeGRESnhhbE55UkVkb1ZHVkpaemhQTkcxc1RYVkpXRkZqWkU1RmFWaDJiMGxpU1VRMFNrdEVSREl3TUhjd00zTkpSRUoxY0d0aGFtdG1XR2M1U1UwMWVHUXZWR3BzYVRkU1RXUjBkVWc1Y0hWSFFVRlZkMnRrUkRGdlZXSlBhMmRwVG5oT1JtOVlXRmR1ZEV4U1ZFZDJhRU5JVVRGbGJFWjFNR2hJZGxvMlMyeERiMlI0Ym1KU2EwaEhjMDVCTmpCTlZVNUNObU12ZVVZd01HdE1UVk5MWlVSVGJGUkNZV3MyYms5R01WVjBkVlpEYzNSTlUxWnBZbTU0UlM5UGJWWlNNVUl2TDFwVGVqUm5NM2xMYVU1YWF6Qk9Ra1IzUm5kaWVHZGxiWE5TYVhGS1QycHViSGxYVHpRMGFXdEZkRXgyYjFWdVJVeERSMWRsYmt0Rk5UWk9VVFV2Y25waVZraG1ibTlYUmpOamNuVkNjeXRwTjB4WFkwUlZSRzR5Ym5vNVNsSndSVXMxWW5KNlJTczBjR0Z2ZEZoMVlsQkxkRzVwZFRscE0yNTBla2xwSzNSRmJXdDBhR1puYzB0RVpGazNXRlZRTkM5V1ZFVnhaa2wxYkdOVU5HSnVSRTluWWl0cFYxSnNORTFZZFdNemJDdENTRVZsTkhCSkt6SnJjWEJMU21Sa2RFeFJjbGRqYlU4eEszWmFaMjVUSzNKMVVucDBSSEZyUTBGbU0wOW9iSEEwZEhSdldWQXJkM0phYVd0eFFtcG1VakZ3YVUxQ1RGbEJaVWxrTTFkTE5VdFFhM05YYzFCemFYQjRhMHBhWkdscVEyOW9SbGxzTURReGNEUmxaV2hVUTNwRk5EWnJhMlZKYXpGNVozTjNiRFl5Y0djMVpYazFSMlE0VWpSblpUaDZOVWRoYzNBeFVuVlRTM2w1YW1GTWFtcFJXSFpxUWtkdFFYRkpXbmgyV0dKNWNURk9lV0pHUjFNeWFqVndaR3hVVjNSMFZIUkZaMnBUVHpjeVVqQklZMHQxUVZsS1JEZE1VMGgzWlVkWVYxZFJOVEYxTmpGTk9YaHJaVlJ4Wnk4MU0zY3phVlpYVGxGUVJtUkpRbGx4YVd4Wk1teFdNR1ZYZWs5eEwwcFFTSGxFZUdzMlVYQTJVR1F5YmpkbldWUm9VMFJvWjNCeWVsbDBTRVZWVGs5aFIwNTNPVVJ0YTI5bWQxRktkMWxIU1daUmF6QkRSRmwxTUZReGJ6aERjRUYwTmpkamRqRnJVelJpT1V3NGEzUm1WMGxDTlZsNlUzUm1MMFY1TmxweWFXNXJVMGxYVlhrMFR6aG5TM2x5SzNKUFQwaHBkMjlTZEhSaE1GcG5RVkl2WVZZeU5pdEpUakJqT1djek1YVm5WR2RITmpSdFUxaGxkREJ6VjNsV1dIRlJNekptTlVKbGFrSkdhVTFRYTNOVGNtaDFiV0oyUVZZNVMxTlBaa2xGV0haRVZVVkNTM2dyY2poM04zTjNRaXRWTlM5UFYwUXJaRlJCYVhaYVJXMVBSMkZ5U21oc05ubHlUMWQ0Y2tNd2JUbG9kMFZpWlhvMlpuQnBSMDVYY3pCb1psUmlSM05HWWpoU2NuTkxSa3B1Y0hodlZtOVlOVTlMZHpnMllUUnZVVk5WWTNKMFkwSkhVWFJuYTBsUFFsUkdVR2RwTURGcVZuTjRhVk4zU3pkU2FqTTVLMlowWldSellXSnZlRU54TmtzMGVHMWtlVlkyZUcxSVYxQTBkeXRzWkhWTk9HdFFZMjU0Y1UxWWFUSnhkVGxUVVhvelJFRXJOVXBrU2k5cFNYWm1lVXN6V1N0YVJHSXdSbkpLYzI1VlEwOUpSbFJVTlZoeWFETnZjWFJOUkc1Qk16WXdXWGd5YldZdkt6SjVlRWRpYlc1TllrbFlabTU2TVhFemRIZHlkM2hIT0hSNFRpOHZaWEUwTjFrNGFXaDNWMFUzVkRWNWFHZHVhRmg2UjBWNE5VeGFaRm8xYTNNeVpDdE9NM1pKU2pCUVdUbHlNM0pMTTNobVRqaGFXRmMwZUdsalZYWmxkVE5PUlRsRlQwMUNLM05UVEhBM2IyUXpUbkZWVDIxYVpVY3hNbXRsVVd0alFYSk9MM1poYUUxRmJGVm5ZMmxWV0dGMmRFRlZURE4xWlZsU2FFWlhTbmRITmt0dlMwRlFPRGMxVjJRemRqbERiMU0zV1RBMVptMHJVRGc1WlRGdVZIbHFWbFZSYmxoeFlUWXdObHAwWTJSbWVqaFFORVJCZFZkUmVIWllNMU5WYVdSeFZFZDVhM0IzVEZKU04ydHhRaTlsVldGMFVUUTJiVzUyZURWTlZqRkxSRlpxU0hoT1NEWllhV2xJU1ZKSVFpOHZPR2gxTnpKalZISmxSa05EZGtkMk0xQlZPR3hoVXpKU0swVjJiaXMyYjFRNE5FSkNTMlJNZDFRcllXcDZjREpKYlZSdlNqQnJWRVJ4YzJabGFVOHZNM2hQVTNKWFlqTm1aRTF3ZWxoelZVRnlXa04xY2taNU5tUlNOVkZ4UzB0UFdUZHNOVkI1V0V0UU9IRnNhalpSYm05UFNqUmhWa1UyV1VsMFJVRk1kamhUV1hGeFdWazRjbTVHUTFFeGVuaEZkRko0ZEZKWWNIZGpTbGQzZVZkUllXTk5RVmRNWkVkM2RXNWxNV2xtZW1kbGFqQjVTVlp2TlRCVmJqaFVlRGs1YkcxcldVUnlMMkYzWW05Qk9FZEhhMlJQWkZCWmVpOUpLM2xZWlROSlExQlpjWFpKUVV4eFFVVkdTM2xZYjNCUkt6aHhTMDgxYmpoaFNHWkZMelZ1WTJSdVFubFJVQ3RzVlRKTlIyUk1WMlpaZFVWTWJWTlpNMDB2WjJGYU1ISnNSRTVqVnpKcVJGaFRWVXA1U2pGQlIyWjBiVmhVYlhCWFkyVkdNbmxEYkhNeE0yRTRaMU5wUTNsRFdITmlXVU14Y1hOb1IwZFdVU3QzTVdSYVdFbHNhWFZ2T1hGR00wbzFTRTQ1YjBWSVQxQnpkVWhpUjFaeE1tazVWM1E1T1dSb1prNVhaelozWjNKa01EVjJiR1pNYjNvdmMyZHFTMUJGVFVSRlJITXhUVXBqWWxkSFRERkphMjF0WkdRNVNuSnJTV2RsZFRKdFdGTnlja1JxYVZvcmJucEVVbEpMTUhGSGFucExjRFp5VGpSMmRqbGFUSEJpVmxkalpEaEhjVzgwU1RjMGJGWjRUVk14YUhFNFNFNHJTVmQzUnpOM2QxbFNUblUzWjJwbE4wOTVWbVU1WjFSWlJEbEJkRXg2VmxCM2RXbFRPVVpFWjJoa2IzWXhURzlJUjJOcE55OWtlV2xLYlZwTFlrVTJNRWh4ZWt4blZuaDVUbVZ5SzFWcWNtZzBSMVZNVDBzMk5WVm9hWEZ2TDBreE5GUkhSV2t5VjJ4RGNrMXhSSHBLVldkMldYcEhUbGh0U2xWMlVYVlVhRXhXYzBOdFduRk5WazVTWW1OeE5qaGpVMWQ1YURsd1dUSmFhbmxJTkVaNmFIWlpXRWwyU2tkdmVtVjNWRmhRVkZOYU1EZEdRa3hpT0had2RHMUZkbmhIWXk5c1p6TkdZVWR6ZHpCcVZsbGhRM0V6YkUxMllUQmhaa05WVDBoS00zcFhUMDFFYUc5bmFFbFVUbXREVTJvM1Z6VmFWVTV6UkRKaVMwWk1UbXRyV0hwYVpsVTJTVnBFV1dGWmNscGhjVmszZEhOM2NUWjBiemQzYTJvek1GRnBSRUo0VWpCRk4xUk5XRUo1ZFhONFJVWTFjVEJRZUZWTFUyOU1NRXRWWjNoeVpWTnhWM1Y1WVZNNVMyeDBUR2g2YUZSMVRqZHVlRk14ZVd4SVdVZFZjVlI0TTFwa04zQlBhSEZEVFZNMFVrbE1WWEppVGpoUFRXb3hPSFptVlRjeU1IUlJVMjk0ZFVkUU1WUnJhV2hZVmtKVldWaFhla2hSVlVFNVYxTkljSFYwSzI5cGNGazVPWEoyUlV0aGRWa3pabFF6U3pGU1dFMUZPRTluV0ZodmVuRkllVEJHUjBGRVpWVnJRVE0yTkZGak5IbENXSE0zUmtsdlJrY3ZVMVpWTVhaSlVUWlhlR1UxUW1WalFXNXZSMGh4SzBkWE5scDBlbXhvZFhGM1VFMXJlbGt4U1hOMlMxRlVWekoyT1ZaQk1WRkxPVzl3ZVRKbmNUWTFibFZtVFV0VGFDdGFVVUp0WjBORFNVdGFkVzFLYjBFNE1UVmtUREp2VGtob2RrazRlWEp1TjNsMVQzTkpjMHRHVldKSE1qbFdTbGxXVGpWTEwyRkRSelZ2VG1WUmNFTkNhU3R5UTJGNlVVUTNTRUp3T0RKU2RTOXRRV1ZUVjBobFJraFFNM1JJVEV4cmMwaHhXbFJLUVdSUVZuWnVibWxsWWxVeFl6bHFkQzlsZWtrellWTmlMemtyVlRWalZtZEpUMkl4UVdoNlNVUXZTMHMyVHpodU0yeFhaM05SVnpnMGExVTVPWGhQWmpGc2RVOUpNVmhrTm1rclprazViWFYyYldkVFIycEJlVWRSUkc1S1RXZGhkVTVZWTJVMmFUVmFhWGwxYUdGQ1dVRlhkRGhUTlU0dlQxUkVabWszV21jd1FsbDFhVTVLWTFFelNWTlZWMmRNTVZOWmN6QXdSVlpJTldsaVpHVXhOMnRZY0hWc09HUlVVbmxWVUdwdlQzTXJhMFpCVUd4T09TOXpRMEpsVlVwSE9VSnNka0ZtVFV0RWJrd3lSVk53VG1Vd016SkViMHRXVUhwSFRub3lVMWx2TW10YVZHWlBUR0pXZFZKSFZuWnBjWGh0Vm1aek5tRlZSR0ZKVmxSUFRHSjFOWFZuWVhKNmQzVXdPVXRKY0hGUlVYbExRV1V6YkZCTGJtcGhjREEyTjFwalQzQXJiR2RUU1RJMk5Ga3lRVzlYTWtkd1kxQnZVRzVDZFZSd04xUjBMM2hJZGxKTVYzTjZMMHN2YkRGRmRIUlZTazh3WjJWWmFURk1NRGRJTVVKVVlsWjVlSHBaUmk4Mk1GcEVObU5NTmtweGVERXZhWHBWTUdkQlZrMVRiRmhCTkN0V09GWTBTMkV6TXpKWGJGcHpNV055VnpCR05VbHJNbVJITW5OaGNWcE1jRmhHU0ZkR1ltczRkblZPUlRGTFRXaDVabkoxUzNWMmMwTjJlVzVQTm1kR1IyWlBValp2VFRsUWMzaHllSGxFV0hSSGIzQkJlVEV5TDBsQ05EVndZWFp0Y25OM05XdGtaV1pyY2xkR01URnJLemxCUW5WMFVFeFZTWFZHYkdaR2R6UlRTMHBKZEdGeGJGVk1aWE52TmpGc1psZEJSREJvZVdWdGFETjBlRVJPUTB0aWNXcHBORlZHUmtwUVZHRk1NMU5PVXpjeVNIWXdabFp0Y21GNFYzQmFjVFZMZERaTVUzSkJhM2xtZVZock4yOHdjRXB2VWxJNFdVY3JjRFUwYW01NWNWazFhV2czZGtSTE9XMHlhV1J1U2tnM2MwbDJka3BxUzFKWmMySm9keXR6TWpsdGRHRjNTRTlWVUhWM2NYWkZNREppVTBjMlprcEhZMnhZT1N0NmVrMXhZbkppTHc9PSIsICJkbHNfZmVhdHVyZV9kaXNwbGF5X21hcHBpbmdfdG9rZW4iOiAiY2xRM09YVTFhalJ0YmpoeFpHVmlUR1pFVTFaV2RYQnliSGhzWkdneU1UVkVOVTVDUkU5T2JIcGFVM1IwUzNCa05ESkVZMFo0YzI5cFdFVktVRTA1V0haUFlrcG9lVTVMVVVSSlJXdE9WamhvZVRKeVNWbG9jRFpIT0RGM05uRXJOMXBwVUVkSk5tOVhNMDlxV0hSWWVITm1hRTltU1VVNFRGaHdaVGRxTkZrcmVEYzJWVGh6WVdWaFNHeGpZbmN3TkRVd05UTllPVVp3ZGxKSVdWQnFNbEZEYjFCbVVXbERZazFXZVdad01VUmxXV2xHY0VOUVdHTk1kbTlNUW1sSmNYSnhjV3BxTmpsa0wzWm1PVlJhZW14dVlVVkNhbUV3U0ZwMWEwRkNhWGxSWXpadlFqVlpXRlZ5U1M5YU5FMVNPVnB2UzBsMmFXdDZSa3M1VkZkcU1VcHpWRVl3U1Vka1YwSmxZVEpuU0ZGQldFMHJUa2g2V2xsYVNqbEtialJ6YzFNNFExRnRXWE5NZEZWQlVIcEhUbVJPT1VGdFZFTldjR1pPYjJJeWVtSmFiRkptT1dsRFVFaFBXbWhyVldveGFqRlBTbkJYVlVwM05IWlBkbEI1ZFVoMlVGVndVR2g0TjFGbWRqSnhXbXRuZVhNNVpYSnVZMjV3YUdSWVVITnVhRlJ1Y0hsTE9WRnVhWEZXV1VaMmJFSmpSRk51YUdRM2JISjJkMnc0TVZGQkwzZGtaMDl6YzFaR2NXdEtUbWxUZFVScE9XVnZlRzFHUzJGTlRtdFZjRlZIVWtwTlEzQllMM2hpZDJOeFpsbFhkbXhtU2tSMmFHMW9Ua2MzVlZKS1UycDBLMDVHTDFOd1dsQmtRbk4zWjJRMVF6RTROVE0xTUdORWQwRnVXVXhRVVZSQlJYRlZkbmdyU1dZeWNtMVdVbE4yVXpCQ2NsQnZXV0pXYlhjeGExRjNjemR1VVUxdFpGbE1halZJUzJ0bGNsWTRWRFp3WTBoMVNuZElaa2N2ZUVFdmQwRk5TVzlNWjJGTEwxZGtTREZSZEhOSlFXUnNTRllyWlhka2JuUnNWekJwTHpKVVYxZDBMM0ZaTDB0amJGWkVhbXBGYUhSRFdUQTFPSG8wYlZSb1ZtOW5LMHR1YzJaYVdWZHNSM0UxYkhWdGFrZGFXblpzVjJSWWJIb3ZZbTgwYTJ0WVNrdHNZV3hwU2k4d2VUQjFNSEJyTURSMFFtNDJTemN5WmtWQmJ6aEZlbXhtYUZwWlFVUmxVRzlpTkdWdWVHZEpiMjlvUTFSbGJpczBOakZFY3pCSWVrOUtLMU5uTkdKMFRsRm1VMnBwU1ZwamQxVjFibHAzYjJ4M2JUTkNSRGR1Y0d0M2Myb3liME41VGtkRk9FWTNRMWhFYnpaRE4yUlZabUpQWjBGb2VGQlJlWEpVWVdwblp6aGtVSGR2VjNNclFVMWtTa3QyUkhjOVBRPT0ifSwgInBheWxvYWQiOiAiVkM4NFpraGFTSGw1WTBsdmExbGtWazR6Ymtvck1YUXdLMHhoWlRCd1UydENZVkZCUkZBMlIwNUhZVkp6Ym04eWRIbHdlbkJEVEhSMWJIbHFWVWRhZFZnMUsxbENNakpEUW5KeFNVYzJVMlU1V0hSM1NqZFVjMEptYW1RMlEySm1VRGRrZWpaM1IyNUJSUzl2VEVOMGJHTk5WRGdyYWt0Tk5XVnpUMWxJWkRsUksxVTVSalI2VGk4MWJVeHZabTR5VlVsa01sWlZSemhoU0RBclVWWTFSVGxuWVV4bVNXSnNSRUkzYldaUFdqRlZPR2RoVmtWNk9IQTNOMlZsTm1GT09EaEVka0Z3TldFeFRqSmtlbXNyVjFoNVpIQklUbTFrWmtoeVRVWjBkMkphWlZsTFZWVkRWWGh6TW05c1JVMVhWRVUxY0RSMFJYTjZVbTVNTVZoYU5VbGxMM1pPWTBoU2JWZFVUMFV4Vkc1amRVSkdRa0ZRZWtad1lqY3hkWGhPWlRWSVZqVnBNalpVUXpKdFdHbFdUbkZQUjAxV1RqUklSekF5YldnNGJpdE1aVGxFUmpobmEwZHJOMWxHTW1KblpDOHlSbnBZWkdvM00yMUhTWFJCZFN0TlVXOWhkVU5sVm1SNVRucDNXbmxYUW5KaWNsbHFUMGx3T1cxNVdHMUJlRE15VjNwbloydHlTSFpyUmxGNFdXOW9OMEZzYXpKamIxQnFXR2RpZW5oNFVtTXdOVWQzZW1Wa2EzcHplV2gxV1hGTVZrMTVaVGhUV2l0WVptaHdhVVp3Ym5FeWJFNHhNRnBLZGpCeFVFUlhOa0V5Tm5nNWNGVTFhamxWYkVKblpsUmtUbUpHT0VreU9IVldSalYyVGpWNmFrODBTbTloY3pkcmVrSjFOV1UxWVhBd2JIYzJibGh3UnpoNGEzQTViV2Q2VFdvNWNqbGxhMGQ0UVVwcWJWa3hRbTl2WkZsRk5HMHZUelYwTkZVemNEQlpaaloyYTBFeE1HdHFXV0U0UjJsQ2VWQmlVVWxuTmpOSU4wb3lhR1o0ZUVKS1VuSnNRVU5RYjNBMksweFJXbTFsVURaNU9WWjVVMVZDUW1nM2NXWjBiakYyUWxocWQyZDBTRFl4ZWs1a1JFUlZUa1JrTVdJeWVERXpXVXMwU25Ka1FUTXdVbXhJY3pVMVMyZDBkbkJHVld0NVIyVm1hblpuVVRBNE5ISTNXSEJRYXpBeFdsaHlZWEJyYjI5cU5YVkthMndyVm1kMWIyNHdabmxHTXpKd1MyRjJjak5xZFc1S1JYRnBXV2g1ZEZWMWVrSjRkRE5zTkZGNU56Qk1Va05aWjJRM1NrWjRkV05CZWk5WlUxaGplRWhTV1hSd1RrMTFjM05yYUVoTVZETTRMMDFKUjJKRlZYcGxhSGxSTVRJeGNHWm1RVU53ZFM4NGNGTlVVekk0V0VReE56WnRUeXRqVURSelVUSTRUbXMzVHpacWQzZFBTRGx2WW1KUmVIZDVUVXhWVkhKb1UxTkVkbVl3VUVVMlRESjRURkE1TDJac1VpOTFObFl4YVRoNlZXRlBjbWhYTUZVM1FVWmhaRTB5TTI1RGNucDFRWEpITlhCMU9WTjRhWEZzYm1abWNEYzFiVWhWZW14WFRFTlhTWEpDYW0xeVZIWkJSa0ZaZDNsWmNpODFOVTFUV2pOdE9WbFhSMmhWVFdNelMwTmFVazFRTUVsQlowSXJXV3BuUjJ0bVFWbHFObmw2ZDNsSlQzZFZjWEl5Wm5Oa1UwTmlWbmhNTlZWTGNUQXdXVE5YSzFZd1FVaHhjVzFaUVRKNVdDOVlPRUpUV1dKWFZFcDRNbmh6Ums5aVZVNVlNa05RWW1RMFNIaDRkMloxZG1ac1FtbDJWblZtV0VOcFV5OVdTREZxYkV4VUszZFplVzRyYjJzeGRXNDVUbEYyUVV4SlpWTkdPVk5TT0U1dEwyUnNiMjF2Um05SU1FTldUWGQzWW1SQlNqWjBNVE5FWlRabWIxTm9WbW94VWxwMVZXUTFhWFlyUkdwc2NuUXlaa05FVnpsbWJrSktlVEpLV1dSbWExRnRZWFZsYVZodmMyUnhVMjFOT1VSek1sSXZSWGxDYVRSMlQzQkNjRGhEVlRkS2NtTnFja2hPWjNsMFExVTVhMGRxZUhWbE5XMXlZbXBwVHpCQmJtRjNiRFU0WTNOM2RDOU9VVkpTVHprME9YRXdRMWR3YldRMlN6WmhUa3QxWTBWaFQwVjVabXhQUlVOR1Z6RldkVzVXTW1SRGEzSm5PREppYW5VMVEzQnZjMU5rYzBJeWMxSmFVSHBFZEVObFltVmtSRWd3YVhjcldERnFXRk5xU0M4eVVsUllWVVJzU0RKd1VWcGpUbEJSZGpKQlZVcHNSSEZtZGtVNUsxSlNOV3RSVVc1NlpuRkVkRzVxY0hoWUwzSXhWRFpFVGpoQ2MzWjBNRUZ4VGxKUk1sSmhPV053V0hJNFZHVjNUa3htWkV0TWIzQkROVGwwT0dSclFUbHVWVTF6YWswM2NHZHlkMHRHUlZjcmQwRnVTMGtyTkd4S016bE9hamt2VFdRd01XcGhWbFYzZVhkUlRUTlhTalJYWjB4eVRWTXhUMEZMVm1NNWJrZGpWWEZpZDFGdVR6aHRWaTgxYXpWMWEwTlBOM1l4ZDNGSlRXVkdkMkozVmxoaVozZEhRVTFvY0RWaVRWcERRMVUxWWxOc2VXRkhkelZQUzJaNWNVeG5kWGRxYURaYVozUkxkbU5aTUVSV1VtVnZXQ3R4ZUZFelJFWTRVa3R3VEN0SVF5OTJZVEY2U1ROUVpYZEtWMDVqU21RMWVFMWFTQzhyTUNzM1JVSk1XRzU1WW01NWRWZG1OVTlKYlVFNVYydDVUM0JKT0dwV1lra3dkV05FVFU5RVRuVjBVbkJsTTI5YWJHRnRRWHBoVUdRNWVFTndVWFZDWlRKT1JFWnJUQ3QyUWs4NFZ6a3ZSa28xT1d4VVEyaExPVTFvVERnMGQwWXhSRXBoVG14SWFIVnVTRmxCT0ZCQlZuRkhUV0pUTVVndmJqVlZURkpTUjJWcmR6WlVhbkZNVmxrelQwTk1aR2sxUTFOR0szSlhhM2RJY1ZGRWIyaE9XRXRMV2xwYVZYSkJXREJoYVU1NFYyVkNaVEpzU0dobU9XSnZOSGN6SzNWSU1XZEdOMVJ6UzFCSVMwMTBZVEV4VTJaNk5FNVhjSFI0ZFdacFJFNWhaRFJwZDNsd2RXbFJiWFl6U0ZGeVRERmhXV1UyV0VGVE1UQm5lRE01UlVST1lTdFJTQ3RoVlZZelFTOHhaMUZrVlZwbVpUWlhNMkZrY25ObFlWWmxTV0pFUVUxa1dUTlpURmMyVERKdVZtdzBSREZaYm5OdkwzZG9TRlExZVRGdVlrMXNNWGR1UW5wNGMwNUdZVkpUZVUwNVptbHRXakZyU1hvM1pUTTFSbGM0UzBObVZGRjZRMmxIY2pWU01sVTJPVFpCZW14b2JVMURSekJNYmtaU2JIcENjM0ZUYUZjdmQyaHdXV3BpWTFCdGNIWlZjVVJFWWpWUk9IZHlVVVpoY0VKUVRXTTVUbkJOVEVwMFIyUnVWMjF2UjNKaFduVlBjbmsxWVU4MFpIcG9LelZRZFdsNlozVmlLM0JQTVRSYVUyazRlR2RqYVdkVlowRm1aMGQzVFRCeGFWTlRRWEZvVW01a1JEZG9Ra3QxWXpWNU9XZFJWVXhuYW5wMFoyUnVUWE4wWWtseGEycHFWWHByVkcxTFVXWnRhWFIzWVRFelpHOXpkWFprYlZoRE5XbERTRVZqZEZGQ2VHeEhka2xXY1dndlNVUmlPVUY1VEd0SU1FdGpMemRDZEV0eVUxWk5TbUZhV2xjMGJUUnBNVGhuUm05S1IyWXpUMlp1UW1Jd2FIRjVaVmRvSzJOS1RYVk1WVkJFTlRoQ09FcFhhREV2ZEhaVFMweE1RVVJKWkcxUFZVMVVVRVF5TUhkbWFVcDZRa3hHTUd0eWVUSkZRMVpyY0d0SFJHZGpRa3hZV2xBMWEyaFljamQ2VFdKMlNsUkZUbUl6TjJGU2QwWlFOV04xVUdGdVpEaENlalZKVkhsWk5WaENVbFZTTVVrMlJFTjBXak4wWlUxUE9ITjBibVZ2WW5CRWR6VmlNSFpIWldSVVYzZHlRME5UZG5OV09WRm1jMGhDY0VacWJGcHdNVUVyVlV4VlltMVlRV2d6TjFFNVNUaFBUa1JtTkcxV2VFcE9lR3B3YTFvMk5UTXpUazFCYWxGeFUzbDVaems0V2poVU0zcG5Na3AwY0djM01tTjBOM2xLWXl0WlltUndPVzVRZDNaMGRYWnhTVEJJWTJsTGNsazFNME5VVGsxaWJVWXlaWGRsYTBJemVETkJVM0F5VkUxeWJtMXNVVFJ4WkRoR1QySlFWRXg0VGpSNlJHbE1UaTlrUkhKUGFuYzFVamxTVDNoM05rcGFkWFpLTUZwUWNFYzBValpPZEZreVpsRjZiUzl3YzJwMmMyRnZiMWs1WTBKWlVqSnFiVk55ZFdKS1QxTnNUV1JKTlc5a00yNTBZbTV4TUV0aFNVUTNSVE5KYzJGMGVsWm9UVTlGVTFGWGRXVktVRmxqTm1SbVZrZEZPWE5hT1RWVk9YZ3ZkVGxZVkhReldrdEpUVzlpY0Rnd1pFWlhhbFZEUVVKVlluQTRPWEE0U1hSQmNsZ3lZazgzUmt0eVlVMXlWVEV6VmpOdk0wdEpNR0ptWXpkV1ZXZHBTVmMyZERkWVlWaFZjR1poYlZwNFNEbHBZMlZCZVZaT1ZWZExhV3BEZVZNeVZVSXdRV1ozY21ObFVFUXdVMWxrZVhwUE1UaDNVR2RRVXpaME1tNTFRa1Z2ZEhSak1rSmxVMkZPVDJaS2RqTnZVU3RUWkRGWmIweEphRVpEZEZkVE1ERXZiRk5tWlVaa2VIRm1jbEp5Wm1acWNuVmhXVGRyWlhGdGMwb3lNWFk0ZEZGMlZESllTMWRtZFVsWVNIcFdXRU5DV25abFYyZGtTM1J3V0dKbE1XMW5SVk5hZDNRMmRuWjVSVWQ1TkhKVE1HUXdaelZGYW1ObGQyUlhOMmQxU2xBeWQxQkpZMnhaUVZsbWJuaENSREJGYzBrdk1VbHFNVXhxYXpaaWJVdHRLeXMzU0RSWFVuVldlVGQxTm1OYVRUSnJibXcxZUdGdlYwSXZjMGxzVDFKbk1teFlOM2ROZUZjelRFSTBaVkZRTDBkcWFuQmxkbXBuUjBKeE0yRnRXa0p6ZDNkVVRrSm9jV3RLVTBOSVVWcDNNRFJZVGpaTGJYZFpRVEU0UlU5cFNVRm5Ra2dyVUdNelExTTVRVzlIZUROaFVHOWtheXN4TTJkRFlTOVRPV0prUzBSNWVXUlhiMHRNU21WUWRFRk1ZekJ4ZFhWdVVYbzNOMkUyTURZelNHeHZjbFIwYTNsM1FUVkpkRzl2WVVKUk0wMWFTWEpNYW5kVFprRnhTM2RyTkUxdlUwOU5PRXhYUlU1WGIySnFUVGR5UTNVeUszQnVZakZRTDBkM2JrZFplbVkyTVV4Uk4wSk1RVXB1TWxFclpWRXdZblpFUVRFMFRtZFVZekJoVjAxcGIxWkhSblp6UjB3eFRHSmFWMGt3VDFaSFVYSkNRbEZOTDJwTVVIUlFhM05LUTNkbmFYSTVORWhNUlU1VUwyWkxVM1Y1VEhFcmRFMXBZMjV4TjBVMEsybEhNV0l4U2pod00yMXdhSEJKVDFBNE0yMVVaalphUjB3M01ubEljblZIYVVkaGJGTkRXbTR6Umtwdk4ycGtlVTl4UXpKeE1qZEJUMkZJYkdGMFZuaHhNR3RZWm01VFlVWlZObFZyY1RoQ2RDc3lORk5aY0V4ME9UaDJhMmhCY2xveGVqWldUbWhGY21aMVpYVXZZa3RUTkdaRk9XSjFkRWQ0VUV4bE5sQkRaRlZuVGtOak1uTTBNR1p2TTIxcWJuVXlTMjAwZUV0R1YyNXZia1JqV25CT1FsRTNRVko2U0VkTE16ZGpha3g0UjJwWFQyMVRUVUpTZGs4cmEzSnJXRXA0YURORFlVSlZVM2d2ZGtGclRUaFpNbTk0Vmk5Q1EwbzFVRGxxUW05TmRHRkxPVFppTWtabldETkJNM294T1ZOaWIzbDFiSFptZEVGVVZWQlNjMnhGYVc5bWExSm9UR2xwVWxsQk4zRlRWa3hXVms5dmN6ZG9VMnBYV2xRcmJpdERLM0ZYVERCUlZXWjBSbTgwVkVGaVQwUjVLMEpZVWpkVmVWSTNUbUZHTjNOellUTlpWSHBQY0hoSE1teHNja1ZZS3pKc1preHNjVEJxVmxwRWRtcGlVa1ZUUjJnM2VFTTJiWG96Y0hweFpGQnhhVWRwYmxCeWVGbEtha000WkVZeU5qWlJaRWxTTUVKQ01rNVljMk5JYlZCeFZIVkRVMlZqTUdZeE1XVjZTRXhxVFVocldYRTRUWFJzZVRoT2FFRnpPRzVLTTBKeGNuaFJWek5WY2twMFFrbDZURlpGVWpKaFJsSnFSMDE2WVZWNVIxRmtOV0ZISzJsa09IcE5Wa3RhUkZveE5EQnpRelpqU0c5dlFTdElXbEI2V1VoUVRXOTBkbmhDUTFWVGNVTXJkRmRUZEVKWFdXMDVSaTh4UjI5emR6UXpWa051WkhscGVpOXJia0kxVDFCeVlUbEtkM1JNYTJoWlMwTTBNSFZpWkdjMU0wUTBhakF2VkhOS2VISktibUZwUTFsVmRXdDJObEoyWVhvNFZrNDBhbWxsU201UVZtUllRWFptTTJ3ME1HSmhUbFJvUzNjMFdIVjBZVVpNYzJSTmJsa3ZVMk4wUmxkb056SlZObWxMVEVGWGN6QlJlbWhNZWt0T1lYY3hOVzQwVFZvd1JUbHhNVTFvU25oek5pOVJTM1ZqZWpkU1pYTndRV1ExYUVwMGN6Wkxkamh2Y2xkc01GbGtNMjVPV0RWcFIwZFJTekoyTmxwaVVHWmhhRnBvVURoM1JtWldTbXRCU2pOV1pHbG9jekpPWTFoS1UyMTZPWFpCSzBkMmVHTjVRMHRHTUZWS2FVeFZXV3hJYkRsRWJsbHRaRXRKYVUxV1JXazBUMnhaTjFoRVN6TmpjazFNY21kVFMydDBjamRaZUhKRmFHTjNja3hhUzNsdVdtMWlVQzl1ZVZKMU9WaHlkWFJJWldablFscDRlR2hGZVVaUWVTdGxTelpIVFZGelZHUm5iME5vUW1RM1VHcDBUbWQxWjFoM1ltOVBXaXRJTDA1bFZXMDNjR0p3V1ZaSU5tUlJWRGhKZUZOV05EVjBOVk5NT0c0MFZVVkpZMjl3YmtWNFRpdFNXSGhDUjJWUWEyTk1UbkpYZFVWU0t6RkNTVkY2VUhOeWMxSlFiVGRIWjBONlduUTJOekZEZVd0MEsyUk5SakJ4TUZOTGJqZEthR1JFWTB0VWRFNTRZbEJ2Wlc5Q1YxRXZWM0Z3UVVoMVJYbG1NR2RFTjBKU1ZIcG9UVFp1V0hOS2FXNDJjVWR3VURaS01XeFhTWFZyUzB0R0wzVm1jM0UxWW5oM1JUVjNObFZRY1hnd01VaFhRblJ5TnpadVJFOXJka2hLVEU5U0swcGxXakU1UmtkTVpsaFNOMk5vU25vclJqTXlTMHRDTXpWcE5WUnpkR3R2WjFsMlMzcG9Va0V4T1VOUFMyaElZVVJJVlRWcU5qUXlTbXgzT1VKR2IyOVljMGRLWWtaVlkwSmhiMUZHYVZoM1ZWaEthV3BrWnpBMU5EVjJVbGd4Ulcxa1RFVjNjekJrYjFaamRGWlVVRWM1UmtaaVMzRTJkRGRKYkVSbGNYaGlSekExVmxGWlYyWjBlV0p3VWpobE1pdEJZbnBDYWtkS1kwNHdZMHB6YXpGeVVYTkdOMUF3V2s5SlEwMUhNRTFRUzFSdk4wOTVialZxT1VaNVUzWllMM1J1VmpKWVdHaDVjSE15ZGxoeEwzWjZXVGcyY1RJelZHWlJNVGgzZEdKT1VuRnZVbkJ2V2pWcmVFOHlNWEJJVTFaRk1VRkNjbk12VDFaaFJUY3ZSRlkxYzB4a2NFWlVTbEJLU2tkdmRuQmxlRVZLVVRaRFJsaHBhSEIzYzNsWGVWb3ZXWE12TWsxSWJWSjRlRU5IWkRoVU1VNUpSM2RTV1M5WVNsSmxhbGx1UjB0eVpGRlJWREpzTkZVME1VMTBia1I2VVRKSFYxWjZWMVp4VWk5T1pWZ3dha3B1U0RkQ1RIVmphWEpxWms4eU9FNVlXbFk0WTAxWkswRXhUMHhOZFhwaGNXUTBjRVZyWTFwV1FrRkphbVZET1ZCUFNFRnNiVGRGYzBKcGFqaE9lalpMVVRNdlMyaG9Wa3h4WWpVd1VHMVBiMDExU0hCdVJYbFpkREpTYTJWcVFqWnhSelpLWkVKNU5HRXhXa2d5TWxVclNFOXJZazlIVjA4MU1WRnljMnhSYlcxV2IyUkdkMnR0Wnk4MFNtSktha0ZLVFVVNWNVMVdWMlJITkZCeGJtUnFORTl4ZHpsbk5WRjVXVFppU2xwb2NrSmtWR1pRSzNGRWVrdHdPRmxwZUVwbldXRTVUREZxVldVNFlrZ3hjVlJGWVhZeFRrTTNTbGR1VWxCc1dXcDZTazB6UTFOb1VHaEtRMDlaZVhaaVlWTnVRVTloTlhCUFNUY3lVRkZNTkhSaVZXUkpWMDl0TUdneGRFUXlZMkpMTW1ocmJuWlZNV3BwYjNSV1RuQkRZVnBWWjNaWlVHazNLMkpVU2pkUWExaHdielJGUm1sWVIwSlhlazFUZFVaUlIyWnljMWxJTkRFeWJqUmxNMFkyTkcxRmJXWmhMekp5Wms5aVowWkdaWEJKU0dGa1VHbFZTR05pZUZOamNXaEhaVGR5Wmt0NlkwZEhOWGhLWkZST1dIUlJWVEpEYm05R1RVcDBMM0oyYzFweVFtWjNOVkZqTjBKNkwzQnhTbVpKV25wVlNrUk1hVkZYUkRWMWVITlZkMnhsZGpsNWQydHRNMlZ5T0hWRlkyNU9UMGh1ZWk5SmIyaDRhMk5JWlhsMWNXOHdWREJQV0ZObk0wUm1NM2hMT0VsdmJEQjRjM05uVGtaS1JqTnFhRk52UzNrM1ltTjRkRmhDVmt4WldYaFRPVzUwVW5veFQzbEVXbEZ3YW1Kd1ZERm5TVEp5TTFjdlZucENRakJxYm5sVFJUTnJTR2xNYzFaSGFTdEpkbE5RTXpsWGRVbHZkRGsyZFV4UE4weHBSbWxJT0hOa1lUWXJXRGR2ZEcxTVRuWk1TMjVHTDBwSFNYSnNRVEZGYjNwa1pHcHdPV3hoZW5kdE1tNWlNVEJKV2tGS1UzQlZVM0JRUXpsQlFrVTFVbTF3Y2tNclUxSjZaWEk0U2xaMFJ5OHdRMVZ1ZDJSdGNtNWxhV2RqY201NmRIZGhZVkZsY0ZkTFUwRkxOWGhRVFhkbmVHUktPVGh6VkVOMFNHNXlha0YwYzBjd1Z6QkZWMVZ4ZDFkV2EzSkllbnBLUjBSbVNWQlhPRUp3TjBKamNVbHZObmxIU2tGUlVGZHZZWEpQUTFKUFkwbGxUMHgzYkdwT1JWWlFjbVpuT0VOTlJFYzNkMVZWV1hkbWQwWkJhbUpGUjFwcFozcHBRMlZLWVZwRGVEZENWVVJXTkVGb1lsY3JTalZHVW5WRFdVMXJVRVp4ZFhKb05GRkNTVzR5Tmk5VVlVOXBTRXhpTm1sTlZVeGxSM1p2V1U4NVlTdERkblo0WjAwMGEzRk9VM2szV21WQ05VOXVlbFZpZERObFEyRnhhRzlyWWtWNVV6VnVhMjVaYVdOS01UZFJZV2hhTWpjMVV6QkVORFYxTW05eWNIbDBSa1p1YnpjeGRWQlBZMHBTV0dsU1RqVTRhbWcxTkdKTE1rTklhREZtYTA1bmREUmFOelZ6WjNVeFFUZE5XRWswVVRsSVZscHFNMFlyU21RMmJqVlZlbWt5THpOblYxaFpTSFpXTWxwcVlXTXdaMDA0UTJwaUszQkZVaTlwWkVVemJqUk1kalY2VEdScGMwVndTVlpuTURKTlFsRnVMMnBrV0hsWlJVc3dXVGRJVHpCTFYyUnVVVE5IUVRKMWJUSlVkRU0zYTJwdVpqVnRaMUU0UXpKYVluTkJlVmxWTW5rdlpYVkNiSEV2TWpScVZVNU5VRFZYUlZCeVZrWjVNRmd6WVVWR1kwdzJSbmh0U0RGclFtcG9hbmxaUmxwNldsUmpOa1Y0YzAxQ2NXaE5kRlo0T1RaWk9FTlVURlozVG05NmExZHlOMmhQWTB0c1JYUnlMMUpZUTNVNFRscHRjMDlNVDBFNGIyTnpORXhLWWxSVWFrWndaVWN2WkdKSGFUVkhVa0k1WjFScVN5dGlRbUZuSzNwdWNITjRkVmg1TVROUmMwaFpjV2hXVlhSWFZXUk9TSGhpTTFGemRWQmFiamx2V0doWlJrSlRNa3BIWVZWb2VFdGlNbEZMZFRoeFl6SnlXbFZVZW5OS1FsbGFiMjVaVDBSUmNVOHpkMUl2YkhSaWFUTkZVMDlWVVhZdk5VZHBZVnBMVG5KWmJrRm5lRk53V21SWVVVVkNiMk5YZG5kdGNsRnJaVlJNU0RoNVNXa3lhRkpaTDFSemFrYzBPRlZxYUVsSVNqSmxjMkpJUmtadFJrSk5TR1ZIYUd0V2RuRnBjemwwWVVWc1REUXlPWGg1VWxoc2JDdEJWVXQwVjJwc1FVWktkWGcwTUdKV1RFMHZTRFJFUVVJeE5GcGxNQzlYV2xGa0wxWnhiM3BqZEdaRU5XdGhRV0phUlRGRllXRnhaVzF6UkhCVVJVSmxkbFpxU2t0bGJpdGhaaTlsTWpoSFpVbE5jRGMwT1VaSGFGQlVXVFZHYUdwSE9HcG5OMGxRYlVNMVkwNWhOalJ0U1VkdE5HUnViMjVyZEhORldTdDJaMmhqUkc1SFVtZHNlSEZyU2pjMk1WUklUSFp6UWpaYWJETm5SSEIyV1c5Rk9YWnNSMlZ4TUZZd1NYUlBUamxVU1ZsVGJURnVaQzlhZVdkMVMzUmhlak5zT0ZCQ09HSm5VVXBuVGxFeU1UVnZTV2RMTVd4U0x6WkhWR2cwUWxOWmVqUndVamc1YTAwMFprRkxTVVJJTUdzMlNGUllSemhEZGxwNlFUUlNaVzVCVms1RWNqZDRWa1ZpY1dOVlYxbHFZMlZsWjJ0cWRtNVhUMWRFT1RRdlEybDBjVEp2U0UxNmVtUmpjakEzYjNBMmFrRXZaSEZEUTJSdmExSXlMMU5DUW1SaFlUQkJVMlV6UTFGRVFtRktkMVpqVFdsbGJWaDVNbUZKTUVKaGNHdEdWelI0Vlcxd2FtZEdiMVJyYkhoT1MzWTFNVVJuV1VwelUzQkhNM1ZNU1dSS05sUlZSREV6SzJ0S2MwNXBNRUpJWkVsRWNsZGFNbXBhTm1oellVSmpha013TlVsS2NVSnJhV1J0TTA5dWExSmtja2RUTjJZeWRUQndOSGxSZVVGbVdrTnlURzloY2xjd01rZFljVWRJU0ROc2VVZ3pUelkyT1hoUFRIUkRUVkkzYUZVeVZHbHlNWE5zWjNWSlkwNWFNbTFOVVVaUE5ISjNkM2hGU21rcmVWRlpVMEZuT0c5S1QyTnVRMUZQZFVsbFUwVnhNak5NZUVVNWVYcE1aVGx5U0hVNGVFUnJSVWxITHpBM1JqVk9ZeXMyUVhoSFFtSlZNU3M1UmpKM1VqRjBaMGhJWVN0RFpXWTJjVVJUWkZOM05WUk9UWEU0TkZseE0wNTJiRkI2UzNkTlVVMU1ablZXYjA4eU1HVjNaQzl6YkRKUVNqRkJaR3BvTWpKeU9FVTNOR3hOYTNCbWJWRnhMelJZV0VwMWVFcGtjeko0Tm1aaGFUUnBUelJXTkZOc1NTOXZlbkk1TVRWRVVuVkdWWEpPWkVoM1RXdDBSbEpyU1RZMlNuTmtVbVpLZG1wWWNHSTBTRlJoZW1KUk1FZHdNbWxpU0VJdlNFTkVMMlpvWkZKR2NXcEZTV2hCWkVNM1IyeFdOREZKYjNocmNuQjBXa2RGVkZGMlkxTlBkMlJvZEhrNFJHWktaMDR3VWtsaGFEQXplR28zVFVKU2JuVnRNMUZhVDJ0RllXWm5ZbEIyU25KRWVUbDNlazVoTTBoaU9IUldPVXczYW00M1drOVJjamN3TWtGSldHSTFZa3B6YVVGWFV5OU5keXRJYm0xdlZVUTVWMHBPWTJkNFZFVXdhVTEzWm1oTGJIRmpZbFpWWjNaMk16WjFRbGRZU0dOSVkxUjVTa0V5ZVdwS01rTXJORnB5ZUd0MGJHSkNWbWwwZG1KRVVsWmtRWGhUV0Rnd1VUVk1aekpJUjJSNE1WSmFkMDFXV25waGRuWlVZamswZFRCbVNsUnhja3RKVWtVelJIWlFhMGxPYmpaMGNFaEhXRTlRTVRScGFHRlhWMVJxYW1OVFMwdG1OMEpGWmpORWVtbEZUVU1yZVVWd1duUjBOMXBLTkdJeGRUaHFOMmwyVlVOVmQyaG1NWFJYUVVwRFV6bHFjVGRJUkc4MmJYSTBWblJzUkhoek1uUjRNRTV6U0VKa1FrTnJXalUwUWxaMWRrMVJTbEI1T0VKQmJpODRkVmhEVXpRMFlrMXlXRzVCVkd4SWJDdEtZbmd3WlhwemF6UnBVbTlyUWxKck1tSlRRVkpYV1VKaVpERnhlazQ0UW5kRmVrSlNZM293YkRKa1ZYY3dNV3RFYUU1NldrbDVUa28xWVZsTGJXSllkVVF5WlVsWFpFTlNUU3MzZFU1ME5GZDNPR1JPTm5Cc2J5dFpXRGhZUVd4NllXZ3hXSEZJTDB4cE9WVnhUR0Z5Y0hNNVMyOUhOVFZzZWsxWFUzQlNjRTkxT1ZoU1VWQnRPVFp5VTJGWWVreHpTeTh2ZFVJMmIzVk9kbmt6Y1doTFpqSkZabTk0UldGYWVra3dOelpYVURSTldFYzVRbXNyVWxrM0wxVm5WRFZRT1RrME1rOUZRVXhQU0RkcGRHMUlTR3hYYTFob1pDOVBTRlZZYzFGd1lVWkllV3h2TkZsTEwwZzVWazh5ZEU4NFIwaGhOa2g0ZHpaRGVuSlpXVE0wU0V0MFZUSlVjamhGZDA1SldqbFBkRmcxUmtSRldHNXZLekpNZUhaNVkwRnNWSEZzTlhCbVMySkpjbkJRUmtZeFVXSlRiV1l2Tldwc1FtUlhSRk5STjNSS2NWQjZkek14Wm5SNVJuQndOUzl0Ymk5SWNtMUVWblZHWTNZNE1rUkxWMlIzVFRoRFNXOHdja0pYY0ZsV2FrNVlSM2gwVldWeVVYUnhSekF2YW10Wk9XTnhPRUpMWVhoRVZ6bDJlRTQxV25CYVJXOVlhREU1TkRreE9FcE5XRmRPYW0wMVZUVTNZbWxVZGxCalUxQXhTMmw0UkRKeUx6a3pNa1JIYWtvclJWZ3pWRmxoUjB3M1V6bEZiMDFVWm5WQmExUnNVRGxpVEZoSWJ6bFFaelZ0TlV0dlVrWmlVRmhWYjBWQlJFZ3dORlYzTjB0QlRsTmhTVWRTY2l0MlluUjNSVzF3VTJjelVVaHVSMU52YmxWQ1oxcEZhMVZWYzJ3clUzTXlUMWRvYWxaV1lXcHJlazFXWVVkc1V6QnBNemRKT0VvdmFtRjBRM2d6Wmt3NFZHYzJaMFJ0TVdaVlVWbFpNalZRYmxwSVQyWlVVbUp0Ym5nd1ZVbGhMM2RwWVdFdlJtRkZTVEExVnpGc0wwcDZaakZqYUZwUE9XNXZWVGMxSzFaNmIyVkVTVUZRYm1OS01GUk9hVVprTDB0bVQweDRPRWhGU20xT05XNHdlV3cyWlVZclRWTm9lUzlFY0RSWmVWSmxkMnMxUWxaNFpqSmhiRUkwY1hscGFIWktTMFZ1TlVadGFFdFJNMjVTUjA5UGVrUjBjRGRNT1cxNFIydzRNbTB4TTJvNFIxTXhaVlJZUjJ3MGIzaHFjbVl6VTBaaE1FSlNTbFUxUW5NNVVFcFFTek12VEdKQlYwZE5jbVpyVEZCaVVscGpha2RvVG10b2VqSkVaWEp3Ym5FNVZVNWFWemMzV0RWT1NuQnhRa3BqUkRWcE1Ya3pTMnR4WTI1cmVFTnpSbkV5Vm10UGFXUlVLMDB2T0RKdWVHNWpMekpJTDNZdlpEWTNSR050Um5aMFpXdGFjalV4SzNob2QwdEpkVmR3WTI4NWVsaFhlRlJIVGk5VlNGTTBlV2hYTDJadE0zUk5UazUzZEZGVWJYTXdia3MxZVZoNFExbFRRME5EYjJoR1JGWXdVR1JuZUdKdlVrdDFiRlYyTDFGRFVsSlhPVzFhWjBkdWFWSm9hRTV4ZUZwb1J6aFhlbHBYWldKa1NsRjVZekZ0SzFkcGVXSXhSVEpFVEUxVWRtbENWVVpXVVU4cldVVlpPV2tyZVZoS1VXZHhlbkpSVFZFMFF6QnVRMjVETW5CTWJtSkxSRzB6TUdaU2QxRjRaSFJSY25wdlFXVlBTSE55VmxsU1ZWTXlkV1JvVmpoSksyWnhVRE5KU2xaeGEwUmlOemxVZGpKaU0xSllSSEpzWnpWSFlVZHhVM1pNY214d1dFTm1lRkZMUnpKR1kycFNNVTFYZEZkVVJXUkRLM0pJZUVoUVVtcFRVM0V3T1VRclZYcFpSMlkxVkdkM09WQkxXbXBLTDFOSFdrSk5Obk51Ym14aFZXdDFaRlZIWm1SQmVXWlRLemR1V0VZdmFITTNjRzlUY2xacVRtaENUMmh4UjBJNFZHaHpXbGRuYTNVNFkxQjNkVEpqU1dSdlVFODVaRUo0VFZSUVJscFBabEJDZEZCV1VsWkJhMmhCY0RoWmRtZE1TbGhXY3pOMk4zUm5SMHhWVDNvd1dYWkxZbUp6ZWtoa1lVVkthWEVyVTBVeE0xSXZha1pIU1dWTVZraFJlRE5yWVRaT1VtbHJiamhZTlc5R2VFRk5LemRtTkV4emFrd3paV0pSY1hWcVIxaDFXbmhwVFVaTGVDOVhXSGx6SzFVM1prZ3pabU5rTVVvNVNraEpOeTlITVRNMkszVkxTVXhrVGtVM1JWQkxaR2xzUW1aQ2VIaGliM2M1VldSTWVXRTJXbEZKSzJkc1Z6RXdaRTFtYlZsRVVIQnFkVk5YYVd0WWFrSjNUWFJRYW5wblFXTnZhVEZTVm5STWExbE5aMk5SYzFGVU1pc3hVR2x3YlROYWVsZFNURXhRVkVOSlRrNXNZWEJxZUZScGFXaFFaRkpMYkZNMmJuWndVSGg1VERONlVGVTJWRUZKVEV4d2FYZGpURTVrUm1GVU9HbDFhVVpHVjNkR05FRXlVbEU1WXpKc1YwVlhkMHhQZVd0aVp6RXZXbkJOVGpkbmVUWndkRk0wVjFOeVVIcHNRbVpLVm5sV2VTOXpTakpZYVZKbFkyRnVWMXBWVUZncksyOTRlRTkzVERaTGRVcEZOR2QyYVhSb09VdHZlRk5vVlhCWFJtUkxjR2hJYzB4dlF5dDVZVzlvWjFaaVlreHRhaXRTZWxGbE5XeDNZalkwTlZNNWJGWlNTMGxzYUhWbGJGSlNXWFZWWkdOTVRqSkRWVXh0T0VNNU0ybE1TVEZ0YWxjMk1uRkdibkJTYUc1MlUybE5NRTB2ZW1STFlUWTFORTlGZG5NclVrWnBWREJyYUhSdGNsbzJOMXBYYzBKMmNGUXdUVUU0T1RReWFHcHdVSFEzV1ZCTEt6aHFVRUZYSzJwMFZDdDVVbTloZWpnMFNVaHFlVFp1UzI5Q2FIcHZkRGhsU1ZkclpGVnlWeTlUTjNJek0yUXdVMEpqZFhWWlZGUldkbk5OWlVGRFJHMW1WV2MyTm5KQ1ZtWnBjbFJDY0RadmVqbFdTV2wyVkRaNVUyOVNNVFJTTlcxU1ZHbFhVbkJYYW1GTVQyUlVZa3hEZERGMGJWSTRXRXAwU25JNGJFZGhlamRZWW5Ca1JGRnhkMnBaVjJkWFNtczVTVXRPWkVObGVWWkpTV3RWYVhWd1R6aDJWVGRwTDNrNFEydFViWGxXZEdwMWExWnhTMHgyVEd4T1VIVjRNbkoyZG5nd2JHUTJlV2hZVlU5V05YVkJkMm8yTUM5WlJHdHRSVEpVYkVjdmNtbDZNMVZOZDIwNFEyUk9VV295UWtka2NTODBXRTF3VldsTGJUaGhNR2xuYlRZMVdFbG1jekpTU1RkSlpqTkdaa2x1YTJsUVVsZ3hkMjVLUzBVME9YUjZTMU5qZGxJNFpUUk5jRmRpYnpCUloyMU1kRUZRZVd3d1dGaEtaWEJVUm5WUVZteEZaRk5pVEZOUVNtc3JTblZhZUVOVGVpc3piRXBaVFZkdGNrMUhWMGxuVjJWeWVGZG9PRlpoVVZkWldtMVpTVmd2UmxNd1ZqSTVXbnBsYzBZNVlWcGFibmhJZURKNVZXRmpRMjFpVTNKT2FEWmlSbVJpZEZKcWRsaEVLMHhCV0N0cFkzbFJNVk55T0cxdFkwWnpORGhoV0dOVU5pOW5XR2hhWVN0eE16UXZUbWwzUTBRNFlsQlZVRXhFZUdsRVpVOVRZblZ2SzFWSVJUaE9lRzlHVjBFeGRsbFBPVXcxTWtkc05UTkVUMkZsT1ZsMVEyZGxjakZaY1RsS2VEaElWM05qYjBSR2IxQTBSMWQyVVUxbVZVTkNTblZ6Wms4M01tcE9RMVJUYVZORk1ucE1OalJNUnpOcGJteERlVkF5WjNOWmJFUXdVRmQ1VGtKd1dWQkxlbEJTWmxsQmRYVnZTMGN3VHpscGJuWm9aRWx6UWs5VFJtUkZaMlo0Y2toM2NGSm5UVGxsYldSTk9ITjVNRXBMYlVGS1ExRktVR1pRZFZFd1duUkdWemN3Y0Raa2IyaHRNMFp4UW5GTFVWZHhTVE50YVhSbmJETm5NR3h0VlhrMFowRjRhbk40WmpScmRqaENkMEpJVlcxWGIzRkNkMmQzTTA0NFRtZFJiVmhhUVdoMk5HaG9UV1JuT1d4SmVGZExWMFV2Y1ZKRFMwTnNNbmh2VGl0NFpVcHVhMWRQY0hsamNXMVNOamRPUld0c2MzWlRURXBTY0ZnMVNtRmxlVkYwVEVSVU9IZFRRbEJvTHpkbFltVkdaMVJEUkhSUVJHeFFiRlJIZG1rdllrTlZOelpITWpVdmQzSlpUVEZ1TTA1eGNteG9kM2gxVlcxYWExSkZaelZRVFV4Mk9IWm5NekJ4Ykdad1VXUXphazB2TTBwTk1rTlhlako1TlUxaVJYaDVibEIyY1dsSlVIcHdWMHA2T0dWRE9YRjZZbkEwTVcxQ1FtbFBkRGt2Um1SR1VGaFlUbXhDVldSdFNHbFpjMVZrUVdSU1kwWkRXRTAzV1RZM2Qxa3pTREZDUmlzclR6UjBObVZwVldoamJtSnhOSGRtSzJZMWExTk1WR0kyU21Oa1RrVXdjVlpOVFRnMWMxWmtaMWgxTnpoQ2NrcDJXR2gwVG01R2RHTXZhUzlLVkdoaWJraHpRMHcwY3pSUVJsTm5jMmhpVVVWM1NUZG9kVzgxV0M5VVZVcDBMekphVTJWRE9EWmhSakJaU1RCUVV5dHJRMUJOVkd0dVprSmhhalZtVGxBMlVrOTVXRGhKUzBsTFExQldkM1ZEUzJWaE0zUkdVRVpUVVdKeFJHMDVaMEZFYTIxb2NuWk5kSFpyWkZBelZWUjJVQzh5ZEVKeGVEbERlbUZQZW5kVVpGRk5TVmx6ZFdjeWVESlNka3RLYjNvMmFHOUdkSEJHVkZSdmEyVm5PR2MyY0hGRE9FNDVSbWxHYzFkSlkybFpUWGgxVUhSNk9YZHpiMkZTYjA5blUyaGxhRzEyTUhkQ1pUVm1hVUpJYjBaWVRFTTFVV2hNUzNKd1IwVTBVVmxZWlRsQlNUVlVLM1l4U0V0QmN6ZFlWR3hMV0ZVeE5YZGlkakJWT1hKUWJFSTNWVkZqUzB0M2NtMHhURlpZWmpNeWFGbFRPR3M1U0RaVk9XSnBjaXRLV1dJMUx6UkRlREJNWmsweWRXNHpNVFJLVFZaT1owWkZRVEl3UWpaeFMyNTFjVmt3In0=", "timestamp": "2025-03-26T20:27:52.524376"}, + "created_at": "2025-03-26 20:36:14.300504", + "last_updated_at": "2025-03-26 20:36:14.300504" + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_key.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_key.json new file mode 100644 index 0000000..3500464 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_key.json @@ -0,0 +1,8 @@ +[ + { + "xid": "0496518b-a9e6-4395-8fb3-acde6555dd16", + "license_allotment_xid": "93b3129f-0a80-11f0-ad1e-0e4240b54003", + "public_private_key_pair_xid": "0435ee65-dea3-4e8f-a7ed-c7862225500c", + "created_at": "2025-03-26 20:36:14.300504" + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_pending_returns.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_pending_returns.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_allotment_pending_returns.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_org.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_org.json new file mode 100644 index 0000000..70883a2 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_org.json @@ -0,0 +1,11 @@ +[ + { + "id": "6405e555-457e-48f6-ad25-7af9366b79f9", + "name": "lic-0018z00002uq5maqat", + "description": "Collin Webdesigns", + "country": "DE", + "created_date": "2021-12-08 06:27:52.000000", + "last_updated_at": "2025-03-26 20:36:14.300504", + "additional_properties": {"max_mellanox_archived_license_files": "5"} + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool.json new file mode 100644 index 0000000..d1f2d62 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool.json @@ -0,0 +1,11 @@ +[ + { + "xid": "4dd98d66-b003-41ad-aad1-07285e262cab", + "license_allotment_xid": "93b3129f-0a80-11f0-ad1e-0e4240b54003", + "name": "Initial LP", + "description": "Initial LP", + "enabled": true, + "created_at": "2025-03-26 20:36:14.300504", + "last_updated_at": "2025-03-26 20:36:14.300504" + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature.json new file mode 100644 index 0000000..8ca8605 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature.json @@ -0,0 +1,10 @@ +[ + { + "xid": "13b88a57-06f3-4cb8-a4dc-bac19d2a4f70", + "license_pool_xid": "4dd98d66-b003-41ad-aad1-07285e262cab", + "license_allotment_feature_xid": "93b31c86-0a80-11f0-ad1e-0e4240b54003", + "allotment_detail": {"total_allotment": 1}, + "created_at": "2025-03-26 20:36:14.300504", + "last_updated_at": "2025-03-26 20:36:14.300504" + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature_allotment_consumption.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature_allotment_consumption.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature_allotment_consumption.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature_running_counts.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature_running_counts.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.license_pool_feature_running_counts.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.nll_file.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.nll_file.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.nll_file.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product.json new file mode 100644 index 0000000..9f5a437 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product.json @@ -0,0 +1,209 @@ +[ + { + "xid": "c0ce7114-d8a5-40d4-b8b0-df204f4ff631", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVIDIA-vComputeServer-9.0", + "name": "NVIDIA-vComputeServer-9.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "2a99638e-493f-424b-bc3a-629935307490", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "vGaming_Flexera_License-0.1", + "name": "vGaming_Flexera_License-0.1", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "a013d60c-3cd6-4e61-ae51-018b5e342178", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID-Virtual-Apps-3.0", + "name": "GRID-Virtual-Apps-3.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "bb99c6a3-81ce-4439-aef5-9648e75dd878", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID-vGaming-NLS-Metered-8.0", + "name": "GRID-vGaming-NLS-Metered-8.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "c653e131-695c-4477-b77c-42ade3dcb02c", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID-Virtual-WS-Ext-2.0", + "name": "GRID-Virtual-WS-Ext-2.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "6fc224ef-e0b5-467b-9bbb-d31c9eb7c6fc", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID-vGaming-8.0", + "name": "GRID-vGaming-8.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "3c88888d-ebf3-4df7-9e86-c97d5b29b997", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID-Virtual-PC-2.0", + "name": "GRID-Virtual-PC-2.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "66744b41-1fff-49be-a5a6-4cbd71b1117e", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVAIE_Licensing-1.0", + "name": "NVAIE_Licensing-1.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "1d4e9ebc-a78c-41f4-a11a-de38a467b2ba", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVIDIA-vComputeServer NLS Metered-9.0", + "name": "NVIDIA-vComputeServer NLS Metered-9.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "2152f8aa-d17b-46f5-8f5f-6f8c0760ce9c", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "vGaming_FB_License-0.1", + "name": "vGaming_FB_License-0.1", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "54cbe0e8-7b35-4068-b058-e11f5b367c66", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "Quadro-Virtual-DWS-5.0", + "name": "Quadro-Virtual-DWS-5.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "07a1d2b5-c147-48bc-bf44-9390339ca388", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID-Virtual-WS-2.0", + "name": "GRID-Virtual-WS-2.0", + "description": null, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "82d7a5f0-0c26-11ef-b3b6-371045c70906", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "vGaming_Flexera_License-0.1", + "name": "vGaming_Flexera_License-0.1", + "description": null, + "created_at": "2024-05-10 14:45:32.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "bdfbde00-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVIDIA Virtual Applications", + "name": "NVIDIA Virtual Applications", + "description": null, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "bdfbe16d-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVIDIA Virtual PC", + "name": "NVIDIA Virtual PC", + "description": null, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "bdfbe308-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVIDIA RTX Virtual Workstation", + "name": "NVIDIA RTX Virtual Workstation", + "description": null, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "bdfbe405-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVIDIA vGaming", + "name": "NVIDIA vGaming", + "description": null, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "bdfbe509-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID Virtual Applications", + "name": "GRID Virtual Applications", + "description": null, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "bdfbe5c6-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID Virtual PC", + "name": "GRID Virtual PC", + "description": null, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "bdfbe6e8-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "Quadro Virtual Data Center Workstation", + "name": "Quadro Virtual Data Center Workstation", + "description": null, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "bdfbe7c8-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "GRID vGaming", + "name": "GRID vGaming", + "description": null, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "bdfbe884-2cdb-11ec-9838-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVIDIA Virtual Compute Server", + "name": "NVIDIA Virtual Compute Server", + "description": null, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "f09b5c33-5c07-11ed-9fa6-061a22468b59", + "product_family_xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "identifier": "NVIDIA OVE Licensing", + "name": "NVIDIA Omniverse Nucleus", + "description": null, + "created_at": "2022-12-12 12:34:18.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_family.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_family.json new file mode 100644 index 0000000..cf4e83c --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_family.json @@ -0,0 +1,10 @@ +[ + { + "xid": "bda4d909-2cdb-11ec-9838-061a22468b59", + "ems_identifier": "ems_id", + "name": "vgpu", + "description": null, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_fulfillment.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_fulfillment.json new file mode 100644 index 0000000..bc70708 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_fulfillment.json @@ -0,0 +1,186 @@ +[ + { + "xid": "cf0a5330-b583-4d9f-84bb-cfc8ce0917bb", + "product_xid": "07a1d2b5-c147-48bc-bf44-9390339ca388", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "90d0f05f-9431-4a15-86e7-740a4f08d457", + "product_xid": "1d4e9ebc-a78c-41f4-a11a-de38a467b2ba", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "327385dd-4ba8-4b3c-bc56-30bcf58ae9a3", + "product_xid": "2152f8aa-d17b-46f5-8f5f-6f8c0760ce9c", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "6733f2cc-0736-47ee-bcc8-20c4c624ce37", + "product_xid": "2a99638e-493f-424b-bc3a-629935307490", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "f35396a9-24f8-44b6-aa6a-493b335f4d56", + "product_xid": "3c88888d-ebf3-4df7-9e86-c97d5b29b997", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "6c7981d3-7192-4bfd-b7ec-ea2ad0b466dc", + "product_xid": "54cbe0e8-7b35-4068-b058-e11f5b367c66", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "9bd09610-6190-4684-9be6-3d9503833e80", + "product_xid": "66744b41-1fff-49be-a5a6-4cbd71b1117e", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "a4282e5b-ea08-4e0a-b724-7f4059ba99de", + "product_xid": "6fc224ef-e0b5-467b-9bbb-d31c9eb7c6fc", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "5cf793fc-1fb3-45c0-a711-d3112c775cbe", + "product_xid": "a013d60c-3cd6-4e61-ae51-018b5e342178", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "eb2d39a4-6370-4464-8a6a-ec3f42c69cb5", + "product_xid": "bb99c6a3-81ce-4439-aef5-9648e75dd878", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "e9df1c70-7fac-4c84-b54c-66e922b9791a", + "product_xid": "c0ce7114-d8a5-40d4-b8b0-df204f4ff631", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "6a4d5bcd-7b81-4e22-a289-ce3673e5cabf", + "product_xid": "c653e131-695c-4477-b77c-42ade3dcb02c", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "9e162d3c-0c26-11ef-b3b6-371045c70906", + "product_xid": "82d7a5f0-0c26-11ef-b3b6-371045c70906", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2024-05-10 14:45:32.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be2769b9-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbde00-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be276d7b-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbe16d-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be276efe-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbe308-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be276ff0-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbe405-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be2770af-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbe509-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be277164-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbe5c6-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be277214-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbe6e8-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be2772c8-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbe7c8-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be277379-2cdb-11ec-9838-061a22468b59", + "product_xid": "bdfbe884-2cdb-11ec-9838-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "c4284597-5c09-11ed-9fa6-061a22468b59", + "product_xid": "f09b5c33-5c07-11ed-9fa6-061a22468b59", + "qualifier_specification": null, + "evaluation_order_index": 0, + "created_at": "2022-12-12 12:34:18.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_fulfillment_feature.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_fulfillment_feature.json new file mode 100644 index 0000000..ec1e64b --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.product_fulfillment_feature.json @@ -0,0 +1,422 @@ +[ + { + "xid": "9ca32d2b-736e-4e4f-8f5a-895a755b4c41", + "product_fulfillment_xid": "5cf793fc-1fb3-45c0-a711-d3112c775cbe", + "feature_identifier": "GRID-Virtual-Apps", + "feature_version": "3.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "d8b25329-f47f-43dc-a278-f2d38f9e939b", + "product_fulfillment_xid": "f35396a9-24f8-44b6-aa6a-493b335f4d56", + "feature_identifier": "GRID-Virtual-PC", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "e7102df8-d88a-4bd0-aa79-9a53d8b77888", + "product_fulfillment_xid": "cf0a5330-b583-4d9f-84bb-cfc8ce0917bb", + "feature_identifier": "GRID-Virtual-WS", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "30761db3-0afe-454d-b284-efba6d9b13a3", + "product_fulfillment_xid": "6a4d5bcd-7b81-4e22-a289-ce3673e5cabf", + "feature_identifier": "GRID-Virtual-WS-Ext", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "10fd7701-83ae-4caf-a27f-75880fab23f6", + "product_fulfillment_xid": "a4282e5b-ea08-4e0a-b724-7f4059ba99de", + "feature_identifier": "GRID-vGaming", + "feature_version": "8.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "cbd61276-fb1e-42e1-b844-43e94465da8f", + "product_fulfillment_xid": "9bd09610-6190-4684-9be6-3d9503833e80", + "feature_identifier": "NVAIE_Licensing", + "feature_version": "1.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "6b1c74b5-1511-46ee-9f12-8bc6d5636fef", + "product_fulfillment_xid": "90d0f05f-9431-4a15-86e7-740a4f08d457", + "feature_identifier": "NVIDIA-vComputeServer NLS Metered", + "feature_version": "9.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "db53af09-7295-48b7-b927-24b23690c959", + "product_fulfillment_xid": "e9df1c70-7fac-4c84-b54c-66e922b9791a", + "feature_identifier": "NVIDIA-vComputeServer", + "feature_version": "9.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "1f62be61-a887-4e54-a34e-61cfa7b2db30", + "product_fulfillment_xid": "6c7981d3-7192-4bfd-b7ec-ea2ad0b466dc", + "feature_identifier": "Quadro-Virtual-DWS", + "feature_version": "5.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "8a4b5e98-f1ca-4c18-b0d4-8f4f9f0462e2", + "product_fulfillment_xid": "327385dd-4ba8-4b3c-bc56-30bcf58ae9a3", + "feature_identifier": "vGaming_FB_License", + "feature_version": "0.1", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "be531e98-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be2769b9-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-Apps", + "feature_version": "3.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be53219e-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276d7b-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-PC", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be5322f0-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276d7b-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "Quadro-Virtual-DWS", + "feature_version": "5.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 1, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be5323d8-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276d7b-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-WS", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 2, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be5324a6-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276d7b-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-WS-Ext", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 3, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be532568-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276efe-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "Quadro-Virtual-DWS", + "feature_version": "5.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be532630-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276efe-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-WS", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 1, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be5326e7-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276efe-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-WS-Ext", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 2, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be5327a7-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276ff0-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-vGaming", + "feature_version": "8.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be532923-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be2770af-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-Apps", + "feature_version": "3.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be5329e0-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277164-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-PC", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be532aa0-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277164-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "Quadro-Virtual-DWS", + "feature_version": "5.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 1, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be532b5c-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277164-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-WS", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 2, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be532c19-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277164-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-WS-Ext", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 3, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be532ccb-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277214-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "Quadro-Virtual-DWS", + "feature_version": "5.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be532d92-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277214-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-WS", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 1, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be532e45-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277214-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-Virtual-WS-Ext", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 2, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be532efa-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be2772c8-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-vGaming", + "feature_version": "8.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be53306d-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277379-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "NVIDIA-vComputeServer", + "feature_version": "9.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be533228-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277379-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "NVIDIA-vComputeServer NLS Metered", + "feature_version": "9.0", + "license_type_identifier": "CONCURRENT_UNCOUNTED_SINGLE", + "evaluation_order_index": 2, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be5332f6-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277379-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "NVAIE_Licensing", + "feature_version": "1.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 3, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "15ff4f16-57a8-4593-93ec-58352a256f12", + "product_fulfillment_xid": "eb2d39a4-6370-4464-8a6a-ec3f42c69cb5", + "feature_identifier": "GRID-vGaming-NLS-Metered", + "feature_version": "8.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 3, + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "0c1552ca-3ef8-11ed-9fa6-061a22468b59", + "product_fulfillment_xid": "be276ff0-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "vGaming_Flexera_License", + "feature_version": "0.1", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 1, + "created_at": "2022-09-30 10:03:24.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "31c3be8c-5c0a-11ed-9fa6-061a22468b59", + "product_fulfillment_xid": "c4284597-5c09-11ed-9fa6-061a22468b59", + "feature_identifier": "OVE_Licensing", + "feature_version": "1.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2022-12-12 12:34:18.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "6caeb4cf-360f-11ee-b67d-02f279bf2bff", + "product_fulfillment_xid": "be277379-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "NVAIE_Licensing", + "feature_version": "2.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 4, + "created_at": "2023-08-08 17:39:18.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "7fb1d01d-3f0e-11ed-9fa6-061a22468b59", + "product_fulfillment_xid": "be276ff0-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "vGaming_FB_License", + "feature_version": "0.1", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 2, + "created_at": "2022-09-28 09:30:30.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "8eabcb08-3f0e-11ed-9fa6-061a22468b59", + "product_fulfillment_xid": "be2772c8-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "vGaming_FB_License", + "feature_version": "0.1", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 2, + "created_at": "2022-09-28 09:30:30.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "a1dfe741-3e49-11ed-9fa6-061a22468b59", + "product_fulfillment_xid": "be2772c8-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "vGaming_Flexera_License", + "feature_version": "0.1", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 1, + "created_at": "2022-09-30 10:03:24.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be53286a-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be276ff0-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-vGaming-NLS-Metered", + "feature_version": "8.0", + "license_type_identifier": "CONCURRENT_UNCOUNTED_SINGLE", + "evaluation_order_index": 3, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be532fb2-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be2772c8-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "GRID-vGaming-NLS-Metered", + "feature_version": "8.0", + "license_type_identifier": "CONCURRENT_UNCOUNTED_SINGLE", + "evaluation_order_index": 3, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "be533144-2cdb-11ec-9838-061a22468b59", + "product_fulfillment_xid": "be277379-2cdb-11ec-9838-061a22468b59", + "feature_identifier": "Quadro-Virtual-DWS", + "feature_version": "0.0", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 1, + "created_at": "2021-11-11 06:58:20.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + }, + { + "xid": "bf105e18-0c26-11ef-b3b6-371045c70906", + "product_fulfillment_xid": "9e162d3c-0c26-11ef-b3b6-371045c70906", + "feature_identifier": "vGaming_Flexera_License", + "feature_version": "0.1", + "license_type_identifier": "CONCURRENT_COUNTED_SINGLE", + "evaluation_order_index": 0, + "created_at": "2024-05-10 14:45:32.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.public_private_key_pair.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.public_private_key_pair.json new file mode 100644 index 0000000..413afa2 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.public_private_key_pair.json @@ -0,0 +1,11 @@ +[ + { + "xid": "0435ee65-dea3-4e8f-a7ed-c7862225500c", + "public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnApHWXQGS4wRp8JCnzoT\n/ufN96gsuAG0XCJMwhoFPRoVZNUqx9AEjp7LWqFqGzCdhG5GkwT/CMeQgeAKQAiE\nRyascHs3pwSquOct3QCd41TrbSkReRjm8SyfZ8mvS+4weXdTnMJhRAX6b8S1jR7o\ns9gf2DfKPWOxSi8ziBHevQp2k5VCp7reGwfRK4uYgq6mRSFbkrTDYg9nl5fMR0hH\nJfpDL177eiO+EnU6dRbKUo1pNqAa9DutieVvEAeEM/8ZXz9xmcVhkwKDo47lATCd\nNidU7ivP2u+3EGegurCdeI3+lTTq3PYGEIxDkGrLAmIyVnduWCnNdZy4N4Z7kUVu\nXwIDAQAB\n-----END PUBLIC KEY-----", + "private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEAnApHWXQGS4wRp8JCnzoT/ufN96gsuAG0XCJMwhoFPRoVZNUq\nx9AEjp7LWqFqGzCdhG5GkwT/CMeQgeAKQAiERyascHs3pwSquOct3QCd41TrbSkR\neRjm8SyfZ8mvS+4weXdTnMJhRAX6b8S1jR7os9gf2DfKPWOxSi8ziBHevQp2k5VC\np7reGwfRK4uYgq6mRSFbkrTDYg9nl5fMR0hHJfpDL177eiO+EnU6dRbKUo1pNqAa\n9DutieVvEAeEM/8ZXz9xmcVhkwKDo47lATCdNidU7ivP2u+3EGegurCdeI3+lTTq\n3PYGEIxDkGrLAmIyVnduWCnNdZy4N4Z7kUVuXwIDAQABAoIBAC+21Op9mA8x3ZQ2\nyrh1wfeIWmsIeeQqYURrGJ2h50gv2arjpBlFep9B31zvTsrRqtj7/4ilVncQzxdn\nsrqx4AEBymj6xKHFw46W4mdZ8O264eKXVEh7XOMSigvqmDfXterumhqtNaDfUx0q\nQXnNocqco+Ax7x2mhmfw1wkcrceQGNoaogflWyYIPmWmGop0J+1d98rMRaT6ss4R\nStKXsaAIiEt1eaxpi0a/dis2kI9qNsz66NL/R/QrdgEU6klV1DiJDvPk0M1YAkTa\nmRZO5fJbNo1+jngtvUOK2YYWOv+UHoYl2gmMLa5JwFcHd6KS74rz2RQBfDpF9vtI\nwdRqgQECgYEAt+PMB00e16aqXmwY3758OyBWm3Mxh2PcZjclgLW9yG283jRi8gXR\npdSaQwLKVt0m+37tPXwf7gK0Hbhk9U73NIma917JHFheQKxhgNlQWddnyxkZ0Mxt\n9iIccYFOLfVePckUzQfIr3Zc0nNDRbr5VYl5y6WwzC9RcB8qblZjyU8CgYEA2Tq6\nQisy07jlG3/tWqMaKvIHFQmxa831YlnAXHu9vknxdXwwMX2ue8bDMcQYy0U7BKu4\nTz1YNdOXYiWFmAMtVCV99M1ICiHmYxhUJlDbTa0D5UnQil2Nb8Vp+5p5NhtDzsTq\ndiMs1lC2xDBenwGTwfNFU0sEmegk1w0E6mrbpfECgYAtcbpGQ6TPnnyUARrUkHqb\nEg7VM86VqvQYvqAiAsf39Easkz2wmgeJd9T3ooTmmpi7pk5y1238n+ZrQdqRVQZ6\nkVcesun4e04vpWojMZFN4pHf+0AJ/btfDGcDFfWAHhdAJaViVf4efp3J1HpXjTF5\nFhRnY3chvr/deZY+1lKquQKBgQC0Xh7pchTx10PkYYQjDepcXjmjLjky2gA1eXBP\nWi9iIONsOYGKlmCaRZ8tYzVzEji+2BZhNP5ZMycvRxh1761jgP3klc6LGzrAbSLx\n7ZEqHc5uQ6v0N1mIxNILJ2gdlOXoeXh0PyCrkrkujTsDq7uT/vpA/rkDUc3FAfpi\n6fcXAQKBgQCWx2z84avYKblDtD3WcZUizcRiC98iBZ7Ws+uoFgNAn8PtlwIK3Tbn\nizokE+pyYQ5QScZd4EVlvRowHl9a6l40mKxJ8Navrb8+BRHeqSRpX/g2JBgjLxLn\nz7gQk1e4yws6qBpi0ratWbdf4kg14w7xONGNKp1kQDf+EoEvjrXaLA==\n-----END RSA PRIVATE KEY-----", + "activation": "2025-03-26 20:36:15.532234", + "deactivation": null, + "created_at": "2025-03-26 20:36:14.300504", + "last_updated_at": "2025-03-26 20:36:14.300504" + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.public_private_key_pair_kid.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.public_private_key_pair_kid.json new file mode 100644 index 0000000..4fe087e --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.public_private_key_pair_kid.json @@ -0,0 +1,10 @@ +[ + { + "xid": "9260df84-a872-44ee-b254-fdf896334ad9", + "public_private_key_pair_xid": "0435ee65-dea3-4e8f-a7ed-c7862225500c", + "activation": "2025-03-26 20:36:15.532234", + "deactivation": null, + "created_at": "2025-03-26 20:36:14.300504", + "last_updated_at": "2025-03-26 20:36:14.300504" + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.registered_origin.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.registered_origin.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.registered_origin.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.returned_license_allotment_feature.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.returned_license_allotment_feature.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.returned_license_allotment_feature.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.selection_rule.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.selection_rule.json new file mode 100644 index 0000000..758ff1c --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.selection_rule.json @@ -0,0 +1,18 @@ +[ + { + "xid": "50eca163-babe-11ea-ae74-020564bda15f", + "name": "Reference Match", + "description": "Test if any value passed in the fullfillment_condition_ref_list member of the request's context object is in the specified matching set of access group reference values.", + "definition": {"parameters": [{"name": "Matching Set", "identifier": "matching_set", "description": "The set of one or more fulfillment condition references against which candidate values are tested for a match."}]}, + "created_at": "2020-06-30 10:41:55.000000", + "last_updated_at": "2021-08-14 15:04:26.000000" + }, + { + "xid": "50ece873-babe-11ea-ae74-020564bda15f", + "name": "Universal Match", + "description": "Test if no value passed in the fulfillment_condition_ref_list member of the request's context object is in the specified matching set of access group reference values.", + "definition": {"parameters": [{"name": "Matching Set", "identifier": "matching_set", "description": "The set of one or more fulfillment conditionreferences against which candidate values are tested for a match."}]}, + "created_at": "2020-06-30 10:41:55.000000", + "last_updated_at": "2020-06-30 10:41:55.000000" + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.semantic_logging_activity_type.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.semantic_logging_activity_type.json new file mode 100644 index 0000000..e9f0d4f --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.semantic_logging_activity_type.json @@ -0,0 +1,44 @@ +[ + { + "xid": "23169ffc-84c6-4606-acb6-14296d53f1af", + "activity": 0, + "display_name": "Internal Failure", + "description": "internal failure event" + }, + { + "xid": "90e8e4e4-b976-43b7-b6cb-233dbf0445b1", + "activity": 1, + "display_name": "Directive", + "description": "directive event" + }, + { + "xid": "5ffd173e-29e4-41bf-9b4c-3c6076de6a53", + "activity": 100, + "display_name": "Leasing", + "description": "leasing event" + }, + { + "xid": "72fa1a14-7fbc-4de9-ae82-b247cc7460cd", + "activity": 300, + "display_name": "Telemetery Capture", + "description": "telemetery capture event" + }, + { + "xid": "360a3b38-b365-47d3-9ab7-f41d222929f1", + "activity": 400, + "display_name": "Diagnostic Capture", + "description": "diagnostic capture event" + }, + { + "xid": "9259815a-bab5-4fb1-815f-8389145c8cbc", + "activity": 200, + "display_name": "Admin", + "description": "audit event" + }, + { + "xid": "6f4e55a2-674f-494f-8584-42a4995c27cf", + "activity": 150, + "display_name": "Admin", + "description": "system audit event" + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.semantic_logging_events.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.semantic_logging_events.json new file mode 100644 index 0000000..1d45704 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.semantic_logging_events.json @@ -0,0 +1,18 @@ +[ + { + "id": "f18f2a91-49bd-4d10-847e-b1999ee91458", + "ts": "2025-03-26 20:06:12.798370", + "activity": 200, + "context": {"SERVICE_INSTANCE_ID": "d8c07e4a-f6a4-49d0-b2dc-3faf0e1bf2bd", "description": "dls_admin logged in", "event_by": "dls_admin", "function_name": "login_user", "lineno": 946, "module_name": "nls_services_auth.controllers.logins_controller", "operation_id": "65849216-279e-4393-af2c-011f500146b8", "service_name": "nls_services_auth"}, + "detail": {"details": {"oc": {"service_instance_xid": "d8c07e4a-f6a4-49d0-b2dc-3faf0e1bf2bd"}}, "operation_id": "65849216-279e-4393-af2c-011f500146b8"}, + "metadata": {} + }, + { + "id": "76d485a5-aa53-4707-8656-5b82f5498c1a", + "ts": "2025-03-26 20:36:16.023693", + "activity": 200, + "context": {"SERVICE_INSTANCE_ID": "d8c07e4a-f6a4-49d0-b2dc-3faf0e1bf2bd", "SERVICE_INSTANCE_NAME": "DEFAULT_2025-03-26_19:51:36", "description": "Installed License Server 93b3129f-0a80-11f0-ad1e-0e4240b54003 on this Service Instance", "event_by": "dls_admin", "function_name": "audit_license_server_installation_event", "lineno": 33, "module_name": "nls_core_file_installation.audit.audit_event_processor", "operation_id": "fbe9669e-4309-4d27-b56e-68f2819fd544", "service_name": "nls_services_file_installation"}, + "detail": {"category": "LICENSE_SERVER", "operation_id": "fbe9669e-4309-4d27-b56e-68f2819fd544", "service_instance_id": "d8c07e4a-f6a4-49d0-b2dc-3faf0e1bf2bd", "service_instance_state": "SETUP_UNINITIALIZED"}, + "metadata": {} + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_artifact.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_artifact.json new file mode 100644 index 0000000..557aee7 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_artifact.json @@ -0,0 +1,56 @@ +[ + { + "xid": "b8cf3c25-4949-41b3-9ce5-11f4d66f748a", + "service_instance_xid": "d8c07e4a-f6a4-49d0-b2dc-3faf0e1bf2bd", + "namespace": "service_instance.identity", + "name": "public_key", + "value": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvN4tuxoTqb6q0duPdRkx\nWX9rl48bJ09JRdGNVMTfJUQiitCAr7aseXZarTwq5iyi+swR1KNF2B+pJT6SOudQ\nwbXZe1ZwgD4arel+d65ouTwcZLnb7If3auDQkXbu6sgMkgX5JfQn9eb+lStr8M6v\ntz7yYquHbbv8mGM1Ulca+O4nUwI5hLHpE8KA3dtVPfEOZVGmONzsNA4RrScT3aBI\nd5uCm6BkmL1EJEvFTSR2SX5Cnkuj6AhLIA0LwOmavJgxjl6MC9Np95qs6ll1C91f\nbXJ+U9ReCyUw0vIl41tv2+sZxcygYUoPG8Z1u5WvE3l00rfbW+OMzaEBM7RKOxBY\nZwIDAQAB\n-----END PUBLIC KEY-----", + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "1a4f360c-aa8e-43cc-9630-ee95fd107e88", + "service_instance_xid": "d8c07e4a-f6a4-49d0-b2dc-3faf0e1bf2bd", + "namespace": "service_instance.identity", + "name": "private_key", + "value": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAvN4tuxoTqb6q0duPdRkxWX9rl48bJ09JRdGNVMTfJUQiitCA\nr7aseXZarTwq5iyi+swR1KNF2B+pJT6SOudQwbXZe1ZwgD4arel+d65ouTwcZLnb\n7If3auDQkXbu6sgMkgX5JfQn9eb+lStr8M6vtz7yYquHbbv8mGM1Ulca+O4nUwI5\nhLHpE8KA3dtVPfEOZVGmONzsNA4RrScT3aBId5uCm6BkmL1EJEvFTSR2SX5Cnkuj\n6AhLIA0LwOmavJgxjl6MC9Np95qs6ll1C91fbXJ+U9ReCyUw0vIl41tv2+sZxcyg\nYUoPG8Z1u5WvE3l00rfbW+OMzaEBM7RKOxBYZwIDAQABAoIBAC8AB1dZXO1QAoho\n4CFe3JYODINR3IsCwxQ52rbuqy1F8GalDnErv24WkugrYe2XzBMnd4R4ASiQcHJR\nSOiZqdIa4/06fJKdYdxHj+5Om8cE+3fhfKY3C84wFhctBrWshNxN2jukr9EU4+PR\nQ3JQrQ+n/X+qefBH6MsvXRSZkp/Bjm7YbD5t0IFQIpxfrmc/cX7vfRgFmUOWu8ju\nKB3C5DSkhJzXAyfuq8zjN8gLTyEYQfqHtgQEu63DSaS+sWm8f2mmha2YZ4ixGiLJ\ngTwnoemJQmEOiqhBpYs/xfefP1IDpIXqx7F/LCWTNgAkUq6TSevcxgMdgyULGjWM\nN+oj5WECgYEAyTt8/7zsUa7As9n6gGDHM5xRSIftfSiI0QzkJfKI3Cua4Cl/c54F\nSoSdlNUNXUh1J2/b0Ukdi7AWjiuHVy1EAfu5rPNcWwsqE2bE9MXVY/MpsvyABEpi\n8QoMi47SDCpMf1W0cYIn3B8rLVLxlOVcZ6d9htaNQ6+MEGdXGU7SfNECgYEA8EU3\nWipQ1tbYpRcOItjVZNVCy2t7RcZoRSrtqc+bLtXXRPMhncly7ceQ22tf1Yxe11vO\nOxJnFlvXCxsZncta4tQd24/aoxmzGCBltVmXb1FcJly6/y9uurVdceeU2Vp0mxKZ\nZ9zQBBqtFvlMVAZOhSc63aZ7ByKJK/8i+tty77cCgYEAsCSoV9rxKNbEyylkwnb0\nJ1MPO2PwF/whNowIMMdJ0R9CJDFu5K9Phljq7tpHJn5EPk8FpP5RJHLwa2XixAZV\nXz8O2jrzfqYZIH52rKN3FFRHDetDy32pecAIFyje59MmvtcwaaM6bM3Dp5rQ6DqU\nVg8gK6UmZjcFbV5nuTlrueECgYBIhUvIvj76KYzof4X3xKTcM3ZeuclSbSlpvyRO\n/eekAk1gdVYvLu+uj27Mm6MobJ7vt7kOoWZWHFBS/NIFi6yaDFYawFfIpOgmnxiz\n3R/VLKR4u8KBZYqxdi6HQ9Psqt3JNJry+3YZ1wdpiMOeFO08SXP+FNLLe4QVsIOZ\nXgVaDwKBgFEIOAeFksIpx2l5TrgaV1f1e0rxilTsEsnBOrJSXjhKUGSkSGQyZirH\nPnc2z/QDXJuSeMX+w9nxJy+33kkBgkjvQnZpGgfitj/8ICmw+u4eCWL7cnu/UEbz\nzAI81NKnf1MN72uc8utYpz1ee4ALSUxa0vJGLQ6PRSQQGdlZv2iP\n-----END RSA PRIVATE KEY-----", + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "a3453cbf-1b9c-44f5-a9e8-7fdcc8d1ba78", + "service_instance_xid": "d8c07e4a-f6a4-49d0-b2dc-3faf0e1bf2bd", + "namespace": "service_instance.client.all", + "name": "public_key", + "value": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4hKQSjyWdWAvkStVPRhK\n5ObBDX6ghF4ULkmDB5iKdexAWPPKaHCGHER+1GGABsAwU9gn1nxhI1npnoM6a9qp\ncXwMRTf5R14zSGisyzug6SJSUykxnLG1K6uYTTQo95sXKee7bAzoHERhWK9Uxqki\nvLwW2rGiW8hRG4UHQ/Ea3OVrjPbRHfmsaJm4tbf2oBkZ1S3xhzQIIkrV8f3RUe1S\nxxQ/iftf5UaYOZzru6my4Sb/vIjEU66SiDnkJwbqVKdkI86q21YLXq7DMi+vAVIE\n5rc/SWYz/iRZ/McsRDrofVxQIoHq71613XEmTyQkRm0T/I44Yhynhe2qQLgf0hzu\nBQIDAQAB\n-----END PUBLIC KEY-----", + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "ef6e9c05-dc4e-49f3-b9b4-a0e1ed1151a5", + "service_instance_xid": "d8c07e4a-f6a4-49d0-b2dc-3faf0e1bf2bd", + "namespace": "service_instance.client.all", + "name": "private_key", + "value": "-----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEA4hKQSjyWdWAvkStVPRhK5ObBDX6ghF4ULkmDB5iKdexAWPPK\naHCGHER+1GGABsAwU9gn1nxhI1npnoM6a9qpcXwMRTf5R14zSGisyzug6SJSUykx\nnLG1K6uYTTQo95sXKee7bAzoHERhWK9UxqkivLwW2rGiW8hRG4UHQ/Ea3OVrjPbR\nHfmsaJm4tbf2oBkZ1S3xhzQIIkrV8f3RUe1SxxQ/iftf5UaYOZzru6my4Sb/vIjE\nU66SiDnkJwbqVKdkI86q21YLXq7DMi+vAVIE5rc/SWYz/iRZ/McsRDrofVxQIoHq\n71613XEmTyQkRm0T/I44Yhynhe2qQLgf0hzuBQIDAQABAoIBABpJh06iieo/E3jh\nXYl7nCXOsS8FBNwvZlBViu9krOD2ZisRufz37Jg33LmMVssyKMxvC37UuqTWLSSZ\n5L6qz94aywB3eDx0tyjZxxHgrp69N25lEVhDj6nyy4RaptLXzVM5l2EChTDYQKuD\nw6tP+nKQumWWlybt/YRiLQyY6gM6UBT8DX9ajy9AnJhu4wmE/mxX2ZHcAw9BNWZT\nCzprf5oTkkB8gHzufev56u1Lt11lg4cIg5JSwBeQH77uswKevLsaaT7ARlHZHrKz\n8bsY8kcxPwuSZr5lGV26DxrT3SUWOJhVYG2WZTzjySpfFnwMkBq/3mqeE48g2jfe\nQf4Y7JECgYEA6Y5DCzzM6Phaec6vX8PoB1iwqA75Rvqs+Bc3tYAf1wdz4v7zvHOA\n0E0jAuXpKwkEimHxPt6GbCOtwPDcyLj+P/44vWI+Z0Hg8x2d0u8aBVrLIA/sOowy\nUBlbYMXLTPpGnFwkE5wOfH5oo2A/AtdP7lJlKQIrFyprCNx8dMw/tY0CgYEA98w0\n366/u+/GcsCv4utOyaTgZBoyww+FY3SInSOpo2c8YDyHpdCkPh+2OuWex819UJnU\nl0jWCIR815LeMePlOnVVA1qSaA9RcqEAxWkvxaBllqOZtbGTt0ED7d0rxCDckfpW\nOS9OlXmsE6p5IcyJOremLIA6L/QpnNC9v0SWEFkCgYAJZcUC1b50/VE+p3ddBhf2\n+7WX/YpANePx05VVQ0OEtnMORi3ufkNHnmLzQecA6Ur6enhnjDKidUkPg2GO3gq0\n7ni//gz+wKLZhW6NRzunzYBw2NMrg+qeWHbZzPuiLEvdDMQS2eunTLrPIBdI+Prp\nXv1dCg5Lz1QhNiX32SQTHQKBgAiuZsvPW3hCFjm+9mqEw+XcmN/o6w5aZNnvIzoe\nHbtTypG0jSwJ+zcR9Vhq4v0s/c7tFL2YF6eEvLrwskgdK9K4eZn8elSa9MeHTHee\nD8ZksCpu4Nu0tPAenvyeWwIsBI44rvyh46bo9FZcCpJckBI2jOPSOjej3jFYPs2M\noZVBAoGAX3Eoejuq4mAy8nqAc6B+9lFgLfJgpaDj4In3PLWazfkQtUSQk7fYMU9B\nhRj8bTT27IN4V/BgLBUtIWXCqHya3HzgSv5jOwPWJueLi7HYdLeAnEOoZQRgjtXC\nhklDEonJ90Ni5cPzQMq4em9pynU6nQK+fBWVHCStBhcBIe+gL7E=\n-----END RSA PRIVATE KEY-----", + "created_at": "2025-03-26 19:51:37.062607", + "last_updated_at": "2025-03-26 19:51:37.062607" + }, + { + "xid": "219f0685-dd0a-4df6-a5b4-1f38bbac9f6f", + "service_instance_xid": "d8c07e4a-f6a4-49d0-b2dc-3faf0e1bf2bd", + "namespace": "global.identity", + "name": "public_key", + "value": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtqeqqbZqDXnQMO54tXoZ\nmxrOQ+Av6sarE6sMlf+tFOLRrcWsbgf6tLILyQ1fODKcCgOHs+QNbWIr2pA+SAp5\nfa8jIVzWIJmf5i08iLAzZNfM8PXUmx6tKHlyl8xPtwy9pp7sigt2hx7gDgTDD+Uf\nCePSMH/Cko+rQrornc6P0WoabMZ6gd0NR3T/jGEIIBbJ5M2hoPY3GOEn79/u4R7R\nWrH4FzoVKC4D43AGSSKHIpAS7m3l+B0achSXAgbvVOlCEv9PoivLS4ANw/gArImw\nJpYqP4CwxTrt6OARG5fodeHrqhxv3NYof38N7ByLzEUNm8tmtXTXGY3Lz68LQ4X4\nmQIDAQAB\n-----END PUBLIC KEY-----", + "created_at": "2025-03-26 19:51:37.781301", + "last_updated_at": "2025-03-26 19:51:37.781301" + }, + { + "xid": "957f2d2f-981d-405c-8871-abb6e21a3e1a", + "service_instance_xid": "d8c07e4a-f6a4-49d0-b2dc-3faf0e1bf2bd", + "namespace": "service_instance.deployment", + "name": "public_key", + "value": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsBq0O7CTPPGL95KBawxv\nuM9JacUwHx+8Hi7Cg+4c0YgVAtK48RcJ72gT77mRcIn/D2NQtp+Y+CUh9wVEWh2a\nmy9TSKdyf799HIkAiZS2kFkjbuHHtgTLv6LU5ii5sA5/8hPkprIllzFO0e/XQF1M\nTTvJXGSA7Or2zTef522uAZb6MWGwnZrNpO7MCxqSYNHxA2rvfFzU5zMz0vlWpahE\nhI3u9ZJ2oS87ZFVzldmHFDgxTZWp8xB7CRjeQ9XbPuKlEY9i3ymzHQJmryY3fh7U\nzbTaAANglPggCsMrhBv9iXvlqhckGtkscdMvp2aV6ereO1zQ5AWkQX2O6LKoiC6p\nEwIDAQAB\n-----END PUBLIC KEY-----", + "created_at": "2025-03-26 20:36:14.205836", + "last_updated_at": "2025-03-26 20:36:14.205836" + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_migration_job.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_migration_job.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_migration_job.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_state.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_state.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.service_instance_state.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.users.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.users.json new file mode 100644 index 0000000..dce279b --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.users.json @@ -0,0 +1,10 @@ +[ + { + "xid": "828cdb4d-1b5d-4d62-b805-92a745a869d7", + "name": "dls_admin", + "password": "4a052d1fb49208bcd2a4eee6c22f1eea7c052a49cf99eb547a6f79c6d541f94a", + "secret": "28b22cb5-76db-4211-84a7-d2821293fe44", + "created_at": "2025-03-26 20:05:20.957439", + "last_updated_at": "2025-03-26 20:05:20.957439" + } +] \ No newline at end of file diff --git a/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.virtual_group.json b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.virtual_group.json new file mode 100644 index 0000000..160d7f2 --- /dev/null +++ b/doc/database/3-after-upload-license/si_d8c07e4af6a449d0b2dc3faf0e1bf2bd.virtual_group.json @@ -0,0 +1,10 @@ +[ + { + "id": 34348, + "org_name": "lic-0018z00002uq5maqat", + "name": "DEFAULT_VG", + "description": null, + "created_date": "2021-12-08 06:27:52.000000", + "last_updated_at": "2025-03-26 20:36:14.300504" + } +] \ No newline at end of file diff --git a/doc/database/README.md b/doc/database/README.md new file mode 100644 index 0000000..1b90c70 --- /dev/null +++ b/doc/database/README.md @@ -0,0 +1,9 @@ +# Database + +This directory contains different states of the database. + +- `1-initial`: after calling `docker compose up -d` +- `2-after-donwload-instance-token`: after download [`dls_instance_token_03-26-2025-21-06-23.tok`](../files/dls_instance_token_03-26-2025-21-06-23.tok) +- `3-after-upload-license`: after upload [`license.bin`](../files/license_03-26-2025-21-27-51.bin) + +To reproduce the *after* state, read [Setup.md](../Setup.md). diff --git a/doc/dls_instance_token.md b/doc/dls_instance_token.md new file mode 100644 index 0000000..7c1a37d --- /dev/null +++ b/doc/dls_instance_token.md @@ -0,0 +1,28 @@ +# Instance Token - `dls_instance_token.tok` + +> TODO: Unknown value / encrypted + +- Generated by `GET https:///service_instance_manager/v1/service-instance/identity-token` +- Using binary `service_instance_token_manager.cpython-312-x86_64-linux-gnu.so` file +- [Example file](files/dls_instance_token_03-26-2025-21-06-23.tok) +- [Test file](/src/test/test_dls_instance_token.py) + +This file contains raw JSON with one attribute `identityToken`. +This attribute is a JWT with only one interesting claim `service_instance_identity` which contains a bas64-decoded +string. +After encoding, it has a length of `1522` bytes. + + +
+ `service_instance_token_manager_controller.py` + +```python +# from "service_instance_token_manager.cpython-312-x86_64-linux-gnu.so" +_serviceInstanceTokenManager = ServiceInstanceTokenManager() + +# ... +data = _serviceInstanceTokenManager.siit_get(event_args) +``` + +
+ diff --git a/doc/files/dls_instance_token_03-26-2025-21-06-23.tok b/doc/files/dls_instance_token_03-26-2025-21-06-23.tok new file mode 100644 index 0000000..be93c71 --- /dev/null +++ b/doc/files/dls_instance_token_03-26-2025-21-06-23.tok @@ -0,0 +1 @@ +{"identityToken":"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJqaXQiOiI5NDY3OGRjYi0zNTQ3LTQ5NzQtOWE0Mi04ODVkMmExMDQxYzkiLCJpc3MiOiJTZXJ2aWNlIEluc3RhbmNlIiwiYXVkIjoiUG9ydGFsIiwiaWF0IjoxNzQzMDE5NTgzLCJuYmYiOjE3NDMwMTk1ODMsImV4cCI6MTc0NTYxMTU4Mywic2lfdmVyc2lvbiI6IjMuNC4xIiwic2VydmljZV9pbnN0YW5jZV9pZGVudGl0eSI6ImdVWlFCWEMwdUJMSjhHdjNwaHFxVm5UNGxZeWtQRVRMT0M4UkdmQXU3ZFBvRS9YZEVYdnI2enhJcnhKYmZoQVFxdkp6SmxhY25qRVJ1SUZMSklpbFlUV1RXSHoxLzVNM0MraHFFMjN0bmxMRnVFT1lEa25IaUtsWU9HSHhqcE1BZVlYR09rZGh6eERxZHZaT1dEdGhPWTErOFNlUjBCcHNLQlJDY1htSzJudSs4M2tNQU41SG9McDZUallTMGZnbVJKUlVySVRrSWQzSTA1MmNCWWhYUEx0akxJU1ZpZDRnY2ozVXJwdzJ6eHM4bkVKNFVuWnVGb05wTkU5Mmh3djIzL2NUZ280Vyt5ZEsrdVYyZlRibzlSd2E3cW5pT3RBbUxlWFJJM3VKajNBdXJzalY5RTcwYjFCdHF5dkJKK09iaHF1elF6U29iS2xMLzFnVkl4dXRtQ2dHWTFkaUJ3UmZQQjIyRmVBb0QxR2JVKzl3V1hFZTFkTlB1Ym9DSkt4V2RhT1ZZaTJOeFY3TjMyeDkyTXVvMHhiT1ZKcnJvMEVmV1ZtbGNLSUNVZnM2ek5INzZvQ1dkNjFmN2lHZExENkV1QUFjQnRPTjVGU09DcDYwaUZMaCtWSzhkc3NEcDdwY0drdkVQa3FDTW9hYTlraFpnSzVlWXo1NWorQjFEQWtOaGhQRndoMjRHWG8ySGhXdWFkZ2MrSmVQeW9IeDJia1hoOVYrWDZRdnhHcTBCRTZHUVdoY0RCMlNsOFN2YWtDbGFyY2xseXpGczh0L01kZnd1Z0VkenA5cUdIWXI4UURxWjhXME85eVlSUlBOL0d0QXUzSXJZTnQ3OWJOays0WWZ1U0hubzFEanZEMXF5WlArRHlSQ3M5WDc4N2V5bUNEMGx2UlI2R00wMTdnajJScDhSZTF0WjI1OXo3WnNWeG1YL2owTUN2NG9IQmtreXFINU83bzViT1JmZG16TDV6SzEwcWJ0aGVuUHFkbDlWcXkyMHNOYzUxeGVrclRab0lzelZlTXhZaVR6TGRSRVVTNlFUTUk5VG1LWmNteENuODgzNjhwWkxEbnJ4c0hvQ1hsWm9UMWdwTzJzWWI0U21udzA5dlFMZlR2RHZFemd3UEIvVjI2eGZLRkd6VE9SUjc2aTJpZDQwOEVRN1RQby9iL1BndEp4cUwraE5wckx4ejBvY3BoUVhLOFRVaDhXN3dwNEtyeG1tUllKWlpOWmFqTm1VbFZkZm9lRFpQZ2pBWnlaZ0dnaHNUT2Zpb3NXYnRWT0EvNC9kTXZvRGcyQU0yMkFBVzFtSzhxSXhDY2RuNC9MaWhvTldXaVRYaXpDYU5oSXdOcnp3VlR4ZXpOekVRL09jY3RiMUxYYnVpMjl0KzhZMkc3RjA4SzRBaW9YckFpTEdSTGxxSUNJSGt6TjFyUzU2ZW94WU80ck80cDFSVTZPYlVxMkFEbnJESjRMMmwxa0FLTDVBMDBHUVNVaFFkdkp6dzIwZ21sa2JyR0laM3F0dTNFampRZjVPZ3Z2YUhaK3doc085b0FOcG5RZGd2S0ErNkZQN1RyVGFwZ2doT3NDbnpaV1R3ZFVXR0pWSkxZYnRFSGRydlpxa1ZlTGRPNENMNXJkcFJST2s0alhqbTNpRlJkeUZFaFoyb0NjdnZNWmlzTEgwVXFGNUtzcE5Qa0wzK05nS3ZJc2FOTkp1aXJOWGo5dm10TXRSZDhrQVJFaEtBWlFOeTViZ3Zrdk9qbkN1WG9Gb2lpVDE2ZEJXR1dRLzl1YzB5NGhndjlycEFuTnV5QXFUbFdIZHhNNWJsaURXRjYxQTdTU0RVV0Q1cnlJRGZiWWR6Q3ZDRlpqNmUwRnMxYm1ndnJoNkdXc0l2RVRoakk5bmEwcFpiOFNGcG9TUEZQM2c4Vy93OU9WNHVwMUVUVk9QdTBmMnR6ZXc4b3JvQVFzVGFZNWpZclVDeksweTVDaklQNHlEOWN5ZFVIc1FPYWNLaVhoNit2eEpNbVRkcVdPTzdiTjROcjdoaDgvN251MnZVcmlFVU0vc3VTL3ZLSzMzUTJ5bTdtOVBuN2Y2NnBJR0VkN0NEd29rRnh0MUdZUWFnalBieEQxc3Vyek5CQ3NkTjhkS2pORWp3N3Q5TmNxTGxJK3AvMmwwSjRaUkNMU3U2VEgyQnhzeEh6ZExPSEkrZjNaem55K2xMUDJKNzRvcmZFYTRsbTJUWEZyeHRtWENYNzc1a1VRM1NWcnBiQkx6VG42T0JxdWVwWjJNaDk2ellWRjdaMW00SzNGUEdwRERQUmpjTzJLd2EzckNGVWc0WjlMeHBwc3JLVjBYWG44aGZMemV3K0o1NWNHbkZ5UHN3WXVodkFjT2RPbTIyeU5HNU5IeW0xL0tmVHFmL3JvUERIS283dlc1emg5UWhXLzFzeVZ6b0FSMDlCa2JrTzNQb0NlbEVxM0NxQ3IvM081TlpYa3dKMDdsQkhwK0hvY1c2emhMdTVSYU1Sa3ovbU5uUVIyNVR6RGkxNG1mZUhOcFpEWklJblNNaW1zOHc1c0JxL3RSRVQxTUZic3RUQlkxV3F2VE1mT2d1VEJKUHVObU9FK1dncUJIS0s2Tm9GZVdXckw5d3dDdFZRUzFhVXBaQ2tVMDluRnI4SlhMTWpIUDM5c3lPVmMzT2dBL1FLQ0g3Um5UYmZCWGp3a3VkbDdiMDBhN1lPVTBRPT0ifQ.gEmYC4e8pu01hXwq6gGlP5N0JoqaBt_0sOj_ZYQkcJcZkDysgKZJW60ToRFgat5Q4_BaeSxl041MSikJiDEeIu3tbL9HcL030Ph23MLSuWGiqC9qPW4JX145cNxGcclvTFyqqV41PFsca8k-lQ7m1LUP7bhsxzFPRSodekdoSzXLb771vzCymjlI3wS5L91gPKGXztGDq_7X-YTBThwJpd27XiBr0Y4wNSO19hrMLNE0eMgtn-aY4kXyCBxOm3h1TL32kRxBlVHlnDvOzaRDwMG2h87LQkUlBtoojJpP-8XvAJUtXaJrbQMKbjwihv2GXKCh3Qc_dsF9oW1PiN7S4A"} \ No newline at end of file diff --git a/doc/files/license_03-26-2025-21-27-51.bin b/doc/files/license_03-26-2025-21-27-51.bin new file mode 100644 index 0000000..6446037 --- /dev/null +++ b/doc/files/license_03-26-2025-21-27-51.bin @@ -0,0 +1 @@ +eyJwcmVhbWJsZSI6IHsiZGVwbG95bWVudF90b2tlbiI6ICJleUpoYkdjaU9pSlNVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKcWFYUWlPaUl5WWpNME9EYzNPUzAxWkRJd0xUUXdOREF0T0RSaFpDMDNNelExTjJNME9EVTNPRGtpTENKcGMzTWlPaUpRYjNKMFlXd2lMQ0poZFdRaU9pSlRaWEoyYVdObElFbHVjM1JoYm1ObElpd2lhV0YwSWpveE56UXpNREl3T0RjeUxDSnVZbVlpT2pFM05ETXdNakE0TnpJc0ltVjRjQ0k2TVRjME5UWXhNamczTWl3aWMyVnlkbWxqWlY5cGJuTjBZVzVqWlY5a1pYQnNiM2x0Wlc1MElqb2lVMUV4VDFreUswbzNWUzl4VlZNelFUSlNlalY2VEd0SFRDc3laSEZtUlc4d05FNDJlbk01TTNGR1ptMVNSalF5ZFVaNFUwMU1TVTV0Y0dkTmNFbG1OV0l6TlVaSGQybG1SVVpOUlRacGVrWTFWVnBNUjFwVmNVdG1OMFZKTDJGU2F6TmtNVTU1VVhJMWF6bHBURmhWV0ZWaGMzUjBkbk0wZEdFNVIweGFWMjV2VFUxTVpqVnZiVVJ1U1Vrd2RFb3JObmd5YVVwMVFWSnViRTAxYm1JeGFrMW1ZV05WTTBWemVURXJTV3hQUWpORlJHbGxiVXBOY2xCV2NXTnNURkJVWm5wMFpHUnBSVXB0VjI5R1lVUXZOMVJYZG5JcmNqRnRMMnhOUkVaeFduaExOVmQ0YkdreFdVeE1SRTF3ZEVkRk5tUlJla0l3YWpKUUt6VnBZbW93ZW1sS1dWWnVTamx1UlRobVdITkJRalkzUjJKa2IyZzBWRUpGTVdWcFdYQlFXa3B0Y1d4bE1rd3ZSVE5oY0UxNFNpOVRWR1kzWmpWallqVkZXSHBKUTFGeFZWRkhLMUJpVUVGd05VOWtabU5sZFhwMlJ6bERNbWhoT0d4c1ZVTXpkVVpwV0hOVFQxcHVWVkpqZUhJMFJtbHhSMHhrYUZJMmNHZHFSRGxGZVN0R01EWlVTVVEwV1VoWGVEQlpVa050U2k5Tk1XaGtTekpOYlZSUlN5OUlVbVkwY214WmJ6Y3pibEpUWTFONlNEWXhRazAyUWtsQ2NtaGxaU3M0WVhaeGQyWmxSM0VyWkhJeFZtUlZNMGxpU21GblVrNHpPR3BRUkhab2FXMU1hak5IUW13d09VTkZlVFJIWWxWSFMxcERNVk5OWTFjNFRWTlJTSEZDWlZKRmIwMHhabEVyZGxWNFdrcGtOVk5TYmtGblZXWjJOV2RyYVU5UFdWWm1RVmg0VkVvMlR6SlZRMll3V25SRWNqTlNSV3BEVjJSVWVEQmpkRE5FYTI1bFV6SmplbmhRU1hjeksxZFpXR1U1Y1hnNFRXeDNhRFZ5V0dkRmFsSXpabEJvVGxwdmNrcHVlRXR2Wm1KelkxVXJLMVkzTjBkQ1owWnJSVTFtTVZFeE9GVkJZVnBWTlM5dGQzSm5LMWRJVm5wdVNXUXhZek5UVm5RNGMzZHNRMDl0VVVkVE5XcDNZMVl3VDNWeFNuVXpkMjFCVUdaMVJGZDBXWEJLWlROaWNFbG9ObkZNTDFWdFpuSkZhR3RXZEVWVk4wcGlRMWM1Y0VSS2FtMVVaWGcyV2pCM1kybDZkMVZyVkhabk5rSllMM1F6V1RCMU5rUjZSRUYxUmtGWFYzaEhOWGx4UldKU2JXZ3JWbTlSU0ZoM01UaDFSSGRRZWpaTldUUTJVMWN3TUN0UlUwWTNla2hvU25WQmNpdEVTMHQyYm5sYVVXRk5VbFJzY21ReFpHY3lkVGh3ZG1oNWRWaEpja2xMYURKUVMwWnNaazlGZVZoeU5tSXJiakU1YW5OVmFXWjBjMlJYZFdjNU9IZzROVk5NYlRKYU5XMUlPWFZyWkZVdlpXVlBWR2N2VkZGb1RqUnpVVXhhV2lzNFZXcGphSEJuVnpKdlExSlpNUzkyTkhnMFZIWm5VWGN4WlRGMEwybGFWVE42Vkhob2IwWnRORWQzY1VaaWJFRXpOVGcxWW5GYU5ITnRWakJ2ZWtJNVpHMXRRMFpuWjBVeVJUWkdTMFJhWVZsUmMyWTRXbGREU3pKNFdUWkRZbVZPV1VsbFRVeHdVV3BQYkc5cVdYSjRPRzQzVGtNclJsZDJNMDloYUhGbFZ5OVRhR1ozY1hNcmIwdDJlak5ZZDFoek0ycEtLemxJU0hkVE4xbDZXRVJ6V21ocmNUTXJNMHBZU3pKbWVHNTVhazg1Vkdsd2JYTkZZM05KTTBaNlUxRXdjVnB0UWpSQ2FVRTFiblZDV1RWUmFFOUZOMVpWVG14d2VsaHpkMDVhWXl0QmMwTlpibkp4ZEhCdGEzVlJhRko2WkRSTU5UZExZVE5SV2xCWldFOHdNMDFVY210blNGVmhhMVpTTjFKMlZFa3diRk4wTmtwWlRqWk5aU3RUYkRkSVdHOU9Za1ZFTWtkM1VtbDFiVFphYlhCblNTdGlUV1paZERSVlZGWm9LMnR2TWt3d1RHSkRWVWxMUWxsdmFUTkxXakptTjJvd1pFUnhkRFZ1VW01RE5uUjRVVU5ZVDNsRVkyYzNSbVV5T0M5Q1NuZFlTMFpoYnpodU5YQkdjMVJ6Y2paMlVqWm9UWFpZVXpOSlVFaDNVM0ZoYUdGbGEyZ3ZRall3WlVkWWF6TkpjM2RSTm5VMmVXZEVNVFIxSzNsRmJ5OWFVRmQwU1dVclZWcFBhbXRZU0hwVFZVZGlRM3B1UmxNNGNVeHpSR1UwZVZGdGVWRlpjRkpEUkdGcVpreHBObGRVVVU5RU5VOUtSek56UVRadU5HNW9VMVJGVTBGWmVuTm9jM2xKU0c5b1MyeEJSMUJUVFhGdFV6QkZhM2xsTWpsRlpVbHNVRFpQSzBSbmRsVnJNbk54VEVocmNscFlXSGxPZWpocGFWcFBlVEJpUnpKRFoxRTBaRzlKYVVWUE4zQmpNVVJaWTFWVU1WRkphRU5MYmtOc1ozUkJRVXQyTTNWT05HZDJUbXhOYUVsb1lrMVVSalpsYlRCSEsyWkVTRE1yUlVKb1pFZEhTelZaTm1aU1dtMVBabTVGZWtOYVlrOUVkMjl2WTJReWJISjVTM2RIYlVjMlRuSlZlR1JHWlVWM1RIVk1WVkpQWkVrNVp6TnpjR3RyTVZWT1F6TTFZVmxKU25sbk5Hd3JVbU5XTWsxTlpEUnhOV1p1TmxOcmRVaHNRV3M1WTNOVmQwWnJORU40TlZCbWJ6QXlObXhOVWtsbGRXTnpVVk5zYnpaVVR6TjNWa2RVVEd0SVJqQkpRWGQ1TVhwbk5GQk1XRXhhYUM5RmVESTRiMjFCYW14UFdWWkNORVpoWTFwSU5UWlBiV3AxVmpkRVkxVkhVM1JETkhnMmQyaDVZM05HY21weVVteHJSbVJoTmxZMVZXVjJlamhoTWxJdk9VRXpaRlJvZFhObFRYbG1ielk0WlZKSE1VZEdSbFp6VFdweFpXbGtabE5pTjJJNVptZGtVblJtY25SRFQwRjFTalF4TlZSelkxRnljWGd6TUhWcFpYZE5aelpYYlRWeE4xSjBaRTE0VnpkR01GRmhUMjVPYTNOaVJUTldVbWxpTVdGbmVGcGhiSFV2T1RWQ0wyMUdia04xTlVaUkszaDBVQ3RhTkRJd1VuWlRValF4UkdoRVdVMURNMWQyZW1wNlJVWlFhMDl3YmpSU1VXWTBMM3BYVGpRNFUwOUNZMnRHUzFZdk4xUk1ZVVpwY0M5bmNUSlVWRVZQVjJGS2VYbFhTVmREVVc4d1JFcDJVMmxwYml0elowRlRjSEJKVkRaVWRHMVFlR1IyUVZscU4zaDNORWRyTDNWaVZUQktkRUp6UWxWT2VWVjFSWGgyWVZsc1RYSlJWelV4YzNOdlZqUldXVWd5YVZwblpqSTVSVTUyZUVndmRETXJkbTFvVDJzd1dHUkVibGN6ZUdObmNVRTlJaXdpWkdWd2JHOTViV1Z1ZEY5MGIydGxibDlzWldWM1lYa2lPalF6TWpBd01IMC5pQzJTTlVtc2VBdW1HOURVa0kwZEc5bFNpWGEtV0tGaTBwVFItbnlPR05kRXRLWUNlY21XRDdZQTRlLVZ0OHNtTkdrRzNnakFUNDFZRDNZXzRJLUpIOTg5SE5GRXBQVkhhbTc1ZWt5MFhqaDdSVzA0MzM0TWZFcVBiTXlLLVVnbVRpY1pua2dYRnJnNHh1V0ItYW9LRm1QcnhsT29KbTFCSExEZnZBTnI2OGo2ZGRVd3JCRHhQWko4V1dRNFlIRHJVUDNhajlFc1lYV09PbFRTazZSUDhkZTdOdmRzaHZLU18xVl9hUF9OQzBkR2tFSXVsNHhtbUxsclB3UHFJN1hnRUVpWVZZa090Um5VSlE5QjVfN2ZDV0FlN3l6UVRkLVRxdURNWWZmR1NYOHFnRDhlaVJZMGIyWEctTWp5YWlrLUdnZnNNdHFSdExtVFJkWjdlYktxNmciLCAicHJvZHVjdF9tYXBwaW5nX3Rva2VuIjogIlQxWjZUM0pIYUZKaFVuVnpUbkZNVmpoNVFWSXlSM1Z2ZDNkQ1JXSjZjVkl3V0N0TFV6aFllblYxVW5jdk9IcGpZa0ZLTWxSTVN6Qk5iVm8xVlNzNGRqWkdlVU5aUkhsdGRFOU9NbFZNY0c5WU55OXRhVEZ0WW1KR1lXdHRLMUIzUWk5blUyeEphMEptYWpsU09Fa3JaMlUwVUhNMFRXeGhLM0pQWW1GU1ZuRnRNR0V5TmxCUk1IazRjbGRHUWtwblZGUnBlVk5DYm05dFpXTlVNSGxySzBWTmFrNVNOekpWT1V4MWEyRmhjR0ZhZW5BMFQyWXhLMWRqUkROb1kyVnZZMFp3ZFc1bmNFNHJkMFYxVkU1ME1WRlBLemt5WTA0NVUxQnVialoxZDFRemVWTXZhWFJMVms5Vk1YbHFiMFphYzFReVEwdEpiV01yWjNBNVJUQkxOR3hvWlZjMlpHSnlUMWRTVEVsWFJDOUthV2h2VW14cFRGQnJVbm95V1V0WVF6VlVhbmhPVTFnNWJGZEpTM2xpVDJ4eVMwVldWMnBrVDFZNGNFdGxWalJzTVN0TE5IWnJlbkpMVjNOa1NIWnlTVmx6WkdoWU1GUXpZekoxTjJoWVJuaERWV2M1VEhGdGNtbG9OR3BWVm1WeVQxTmhjM3A1Y0hwWWFIUXhOMGhrU0hsV1NIbERVMDV2TkZWMVMxZFVjVTh2WlhWSlUzTXdkMmh0WjFwTlRrTXpUa1pHWW1weVdqVndOMHREUlZCbU0wWnpkalZsUWxsRWFsb3hlVTkzV2twdVUwZEVMMkoxVTJWeU1IQjVRbUpqVlZjNFpXbzBkMUZLVG10VWNIbHRVMk5ETm5RMWFsWlpZMUY1ZUd4U04zWTJZMG80TUdSNVZrSlhVRk5IUmtSU1FXd3pRVGxNZGxkcVRubzFUM2xvV1V0RVZFOUNlbVZMTVdwS1NEVmFRVEUxWmpCT05XVkJPWGxTVkhKM1VpdHBNMmQ0WTB0UFp6VkxSMjFPWVVWVGEwcHJaV0YwT0dSR2R6bHhOa2RYZGtvd1pXWlRSQzkyTmsxcGQxQkJjblZJWTNabVZ6TnhkRXRYZEdGek5XWmthSGQzWm01TlR6ZE9NSFZsTkdwSVRVSnJjWHBOVDNCdFRreG5TMkU0U1RBMGEyaEhWVlJyWmxWUGQwTmtWVEJvWkhob2FVZFFRbEZrTm5WMFJXUjRSQ3R1UzJKNGRHRTJZekJxY2tJM1FuVmFOWEV2WlhoVGVVRnlhMEZxV1hVek1HSXZUbVJpTnpOYVVuVm1PRWxLT1V4VGNHazVlbE4wZGpOeWFFMUZlbGN5VnpFeFVuUmhXWFZIVjI0eVNHeHhTVElyUVZwelkyUnlSbGt2TVRkc2JHVnNUMUpYVEVVcmVuRjFOVVpOYlhGMGVUVXJSMmR4YTNWUlFuSlBUWEJCZGtreGNHRXdXVkJDZFVOM1lteDNNbk5sU201MmJUVkhUWFJyVXpOb2NVZFdOMGhEVFRCdlkwY3lZVTVUYzJZNWFEaElZVTAzTHpnd1VsRnZSM0ZsY0Radk1HMVBkVFpXYjA5cVZITXlRak54WVUwd1oyb3JMekZKWjFSSWRIaHlkMnNyYUZsQldVRkZSVWhCU2tOTFVGaFBWMloyUTI1Tk1uTXdZMFp3Y1VSVVRXdDBOWGhNZG1relNWRXhjWEZMYVcxMWIwaDNWVlZCTnpkSmRscFROekpPZFhjeFozZERiMUJHVG5sVlUzcFNhVXBZVlV4dlFWUTNlREZzU1U5aWJXaE1UU3Q0ZFdrMGJ6ZDFSMm94U0V0bU5YWkJTbEI2UzBWdlIwbFRSblJPVjJGVVZsSmhVMlkyTlVVNFVITnZMMUpsWkdobGNYZEthbVpETTBrNFl6Um1abk5QY1hCVlpsRXljbkpHUzBOcFRYbE1la2xCWVN0TmNGcGhla1E0Tm1kNE1uZDRSQ3MzZEZWSmNVOVpkelowVEdaRmIzQnRNbW8wUkVoVGJrTlRUeTluUlRoV05ERllhMHd2YjJaaGIwY3pXbGRuZVdKeWVVSmlOME0zYVZCS1pXOUhMM2hyZWxRNWVFdEhiV05rYld4blpsWkVSMDFsWWs5clNrczJZbUppTkVOTFMyZzBNbXRyVFdKMlVtMWhkalF4Y0VOc05rUm1WeTh2VTJsak5Hd3ZPV2hoYm0xbmFtNXVlRFJwWlhGSldUUnBVVTEzY1V0bWNTOURRbE5hUmtWMk9FdHBNRVZQYURKbk1scFhUV1V2Y2xKck5GaExSVzF6YjJOaGRHUkVNbEIwY0ZKR2RFeGFlRU12Yms5TE9FRkxjekp6YlZaUllUSTJRMjQzVFhGbWRWSXJiWEJqVW5VelRYWTRSVlpVY2pkYVJYQlFORGcxUzNRMVJtUlVUMDFOTmpsSE9HOUhXRFZvZWxrclRqaDFRWGROYjFORlNUTnBSRFpZVmxKQlZHTnNkekkxYzJwNlRtcHZOamt5V0hWeVNHOXpUWGhDV0d0dFNVVlFXWEJPT1VWSE1Hb3pZa2t4UW5sVlIzbFNTVE41VUhGTVUwUXZTbWg2TjBGU1lqa3ZTalZZVlhkdFVtNVZVSE5pSzB4YWIyWkVjMUYwY0VkelNDdFdiVTFETlZwRU9WVmlkMGhUZEdKUmFFbFdLMmwyWmtkblkybHhURUY0ZURSSFlXYzJTVzFTTldOTFpsRjVjMFY0VG1GUVZYWldZVUV3YlROUmR5OUxkV1U0VUVKdEsyazBPREZuU0d0ek9UTmFZM015TkdGb2IwMWtNMnBNYW1sR1pXdE1NalVyVDJSVE0zZzJkbmwwUW1SUlJubGhOaXRxU3pkUFlrNUVXVzF6V2pFM1dTOVdjRGt3VGpKTVJWTkRSR2t5Unl0cFV5OUtPVUZxT0ROREwwaHZMMWg1V1ZwWWNWWnhiRGQzZFVSTFZrRkdaa1phVlhrNWVqRjFjMnhtV0dwVFdFeGFhazE2VjNoRFNVUXpZbFZJU25SNGEwbzNjREpyVDFGU1UydEZaM1UxWVVsV1EyZEdSWEJpTDJzM04yWmFXamcwWmk5VVZGTktjRk42YTNjMFlXRTVPRnBRUXl0TVZWQk5lR1J3TVhCTlRITnhlbE4wYjNKUmVsQk1kRU5IZEdkMFFVTmxTVk5DYkhSS1dGUnJNVTlQS3pjd1JHaHJkbWd2TURKMFpTOUROMnR6VTJ4NWMxbEllVXBuWlZWeVFYYzFNRU5JVTFWc1VYWkpRMXBHZWtkd1EwVndSbWRvWVRrMlFtSlBVbEF4TUdkR1RHMUZUWEZYTkdneVVHMVBZVmxSVW1KaFIzWnFkek51YjNSemJGSlNjVlpDYTJoYWEzSnhSR1pOTUdoaWEwOWhSRkpMT0d4SU9EZGpiV0Z4VFM5VVpHZE5RVTFFWjFWSkswRTFhSHB1U1V0clZVbEpObGxaZVdjdlFXMHpSR3czTjNGTlRFYzFSR05WTTFoUFIxUk1SbXBIVG10dGNFYzBlVFJSZGs5VWFsSm9LMUp4Y21ONmNpODNWVWh5V1ZsU2VuUmxMMXB3TVRVMlZIRXlkbnB3V2xKcmFtZFVVSE5GTkRWUFlqVjJXbWg2ZWtWeVRFaFdXRmsxZVVacGRTdGtRakZSUmxab0swbEJVV2c1WW5GcFRYQk5TSEJZVGtKcVZtc3dXRGxoTW1WeksySTJkVTUwWlZSNldqRnpTbWhyYUcxd1NESmlUVXRQZW1SbVEzZFBVWFI2U1hwc2RHVlNXaXMzTW5WamRuSkhhMk5UY21wSVlXcDZkMFp6YW1GdWNFaHFOMVk1U3pKakswSmFUMEZOUVhCcFVqazBiaTh4UkdGaldFeEJjV0kxVURsRk1sVnpNMDgzZFVwU1JGRldNRTFWVFhoWGRqYzJNbE5yZUN0dFV6VndZV0pDTVU4MVJqVXZNVU12ZUZGVksxUnpiMUV2YUZsRlUycGFaMmRZUkdJcmQxbEViMGxtY1hWSFNrSlBVMWMwV2pOUFNsUnpPV1ZtUWsxRFpUZEdaVVZEVnpsQ1NTOVlWRFZrZVdaak9Vb3pTRlZIWmpsd1JIUjBkVVZQVmpNMFdqWmlSRFJHY2pnM1kyWnRhRkFySzBoVllTc3lZM0ptUkVwNmIyTXhjV3RyZEZwU1pVeEJNbWhsZG5aNVJXSnBSVVprZW1Vd1NtYzFlbkpHUkU5Q2VXRjZWRzFvY2tVek55c3pXRnBuYlZwR2JXTnNhazVCYmpGS2R6SlVkMkkwTkhwVmRWaGljamx5V0dGRlVURTVUR0V3UVhwNldFdExXalJ3YUhSWFdFdDFWRFZTYjFsdGNWQlNOVWR6VVdWb1JURlFWSFF2WnpCWWVuVXhhbGg2YWpSNWVUUllTV3hVU1ZGekwzaFJVVkkxZW5oTGJFdFRhbVV5YzJFeVZHZFhTek5JTnl0allqbHBia2RhTDA5T1NFTXJVRGhaUkdRdmJHNTZOblJ6TlVreVYyZFBZelpoZFVFclVEZzFiR3N4VTBOM1dqWmhVRWR6ZGpGcWJGTlRabUpHTmpWRGRXNHpkbEYyVjAxMVQzWkxhVlJXUm5kWFVGYzFVbGRYTVVoV05HNUhNeTh2VFV4d01VMXROVlpwVERBNE5IcEJjbXA2U1VWTFZGQTNibk5OUlhoak0yVldZMndyYUVJNWNrcGhTMGRYUVU5cmVXcExlbEJVZVRGR1dqY3JORFpLZFdOVFdUZHNMMlZXVWt4Q2FtVmFWVmN3TURjMVlTOVhkWE5FTVVOV01EZExXRk5vYjJOMFFrOW9SVFJuY1ZaVVdXTmlaRVZ4WkRaU1NYUTBjbGxLUlhSMldIZG1VWEozYVV0NVZVRmlhVEJQVlZWdGJrOU5WM293WVUwMVVFRkdUQzkxZVd0dFowMDFVRFkwVGt0R1RUSk1Zelk0UTNGTGNYVkliV3c1TmxFMlFsQXpkVzVUWkZWd1NERkZTakZVVDNKeldWa3pSMWh3YlRGM2JFVnlTa2xJYWxGdGVrTnhObmx6UWt4SU1tRTFXRkU0UVhCT2IyNTZabTVwYm5KQk56RkZhVTVGTkZwbk16UnNZMEZVUlRkTFpFUXZNMHQxVFVaWlJrOWxLMVZHVlVoMFNISlZURlp1Y25oMUt5dDNTbXRsYTBWQlkyTnJkbWxSYzNCb05VUXpVR0ptV0cxQlRFRXhhSGN4YjBGUU55OXNWRVJxTVdsYVlYVnhhRGxWUlc5S2IxVnJkMEY2YURGWWVFa3lNSE5HWkZOdGJUZElkU3RtU25WNFl6TnRSeXRaZURnMVVrZzRXV1J4YkhJNFZHcExRWFJPWkRCNmEyWm5iVkZhYkc0MlZVRjBXblIxVjJsVU5tcHdMM055WkhGMVdXWnBVRWRGTDNSc1drSjNURWRUTlZKUWFESXhabmxrWVRobmNFeHhiVlZDUzIxaWVrcFFZWGhuY21GcmNGSlpjVU50U21WVVNsUlNjMmdyYWxkamFWRnhWV3BNVW1NM1pXNVdOM0kyVXpOVFlWRkNkVWR2TkVsSlVXRldXbWw2Y0VNM1QxUlZSRUZ5V0dGb2RHMWxkM0pUWmxsaFptNHdOVGMwSzNkSmVGSXljU3RIV0hOV1pYTlVNSGxHY0ZKNFZ6RlZRbHA1VjFSYVlqTlFZbWMzY0hkdGJHTnZTM1pwTUdReGVWbFliSFozUkZORFEybE9XVWhLTHpoTFdFMXZVRFZyY1V4aVNUWk5SMjF5VFZsSk9EVnpkekp0WW5oblFqaFFNRTVvUlZRclZuUjNVRWRKU2xwclZ6RXZTaTgzZVdzeFRGRXJOVXRZV1hOTWNUVjVXV0kwTkZWTU5HWldVMWhVZVRrMlNEQTFUbXhEYUhSeFluUlFObFozZVdGcVMyVkVjR2hhZVdWMmVubHVhbEF4TVZKSU9XVndabVpOYmxFMlJsVmlRWGQ2YkZZd2JGZE5SR0pWTjI5bWVHdE9kVTFFTVVsUGVGUlBSbkYzTUVsdFFXOVZTMjR2VDAxWlZXTTBiMUptZUhSRFZtSnhPVkJXYTJwbGRVcHBSMjlLT1VKd00xaFVibTVuYVVsRlkyWmpiVTVpUlRCWFdVbDZUVGhUT0dZNWFqaHBPR2wxZFhWMWFYWktNMGM1UjB4aVEyY3pSMlpOT0dOVWFuQXpVVnBaUzBOd1ExSkJSemxRTDAxRFFUUldRM0ZrZGxNME1VRXlkVzUxZFhSaWRuRjFUa2w1WVdRclN5OTVVV2RoVnpsclRsVnhibE5uZVd4dllraEdiRFkyZEdOQkwzRkdTMmxOVVdKM0swTnJXRFptUmpsblEzaENSbFpRZUdzMVVtZFFSVFp6VGs4dlpTdGFUMDVZUm1NMmFpdDRaVmM0VldSWllXMHJOa1JMTnpSYVdUUmxhM0k1WTJjNVYzUkhPVVZETVdoUWJXZzNkbEpDSzJFdlJYWmtiRm92YUVZM2NIUjBjV1ExY25WRE1UUXJTMEo1V1hjdlpYUm9UVkZFVVM5cU9WbG5jbTFpZDFCblJEaE9WMGhvVlhaSFoxcHNNRlYxZGpWSk1VVkRkM2RwYVRsQ2JqTmxLMHh0VWs1SVdIUk1RM2xOTjJwU2NYSkJhV2g0YlZOYU1HUkdWRkpXTjNOMmQzSjJSSEJ6YlVaak9HSkhVbFI1Y0dRNE5TOU1ZVVoxZUU5dFdrWXlhV2x1TUdGSmJDdHhOME13VFVSSVdWWnNjVVlyUVVOMk9GRkRZWE5JY1hwTFdHNU5ka1ZITmpsdVoyUmxLMGhuUTFoamQwVTFkbVV6T0ZKdmNpOHhTMEZyVVRKeU5tSmtiVmhETjJSMWVuVnhPRWd5VTBFMk5USnVLemRPSzJOVU1GaFFZM2hGWVRsU1pGQk5aQzlCZERkSVRWSjZMMVZ1ZVZCWlNVNXJjRGQzYlhaWFpFUkphVUZXVldaSU55OHllRlJLV0U1MFNURkRUalJ1VURaWFExa3JjbkI0ZURSRlExQmpUVXB5Y1RSbGRsY3JiV2d3Wml0SGVYWnpWM2w2U1dkWk1sZG9jREJ0WmpGbGVtWnNOVlZ3UmswNGVsaEJibWQyTUdOT1JHdExSWGxWTmxSalNHcFBPV2hqU3l0WlRsVTJTbkZ2YTFCclMzSkVkVGc0TkRWT1ZEbHRZVTVJYkZwS1RHMUNLMVZLY0dKeVJUTTVRM3BhTWpSeFdYaFhSRk5EU3k4ck1HTTRlU3RoYldsalVsTlNiME5FZGxVeU15OXZhVzgxYjNGaVNsSnpZbGR4Y2tsSVdUaE5Va3d3YWpCd2JUSjZaREpFWldKVFVERlVPR1JCYlhCcGEwTnBRbmd3ZEVjMFRGQmFSbVJFZFRRMGEzRlBNVVpQV1RodFlWTlhVbUZpY2pSNlV6bEVWMnM1Y25kUlprbE9SamgxVlhwVVpqWkJkRUoxYkRsRWF6ZzFSWFJOVUUxbGVsWmpZbTh2V1dOQ1ZWTjJVM05xYlRKT0swWTBSbE5GV1hVNFVYTTJLMjh2THpGclYwOHpkMWRwVlRoUGRFaExhMUl2YjNVMlNFcFRWWE0wYm1sNlVsSTJSSEZZY1c1WmFteHNVVVZrZGxWTllWcDVNMjlUUWpCTk5qWnVhWEJUY1dsV2QyZE9jMU5hZDJGVlRGcHZSRkJrV1VodWVXcFRkSGxqTVZNeVFYSnBUVTVWWkN0bWRVRkllVU5YUjNwdVVreFhUV0V6TjB0d09VRlVha2cyYm1SU1JDdGxhSHBYUVROaVEwOURkRGx0ZDBsRmIxVjNibGhpZVdjd00wSlNPU3RaY21Gc1lqVnRVV1poVmtKaUsxSXlRak5tU2xSNkt6TXlVWFJOVVRWT1QzZDNZM1k0UVdkalpHWnNXRkE0Y2pKUVdGWm5PRFZhSzJVdlNUbHVTVEZEVlM5aFRUTk1NVlp6YTA1V1dqZHVOVmhFTlcxSFJsQk9NRzB6Vm1JNFFVOWFOMEpsU0ZBNVdIbFlhRUYxVlVaV01WQlBaRWd4U0RBeFdVNVhZemhzWVRWaWExVjVVa0l4YW01NVoyeERWbEF2YnpGa01DOUZWMWRhYm5KQlkwaHdkVGhYWW1KcVUyb3dUemhXUlVOTFdsZE5hMGxoYlRaT1dtRklOMHB4YzNscU1XbEZXamxEUldOVEswVkxjemhUY0c5V05pOXBURzl4VUVWRVFuTkpXSEJhTTNoRU0xQjRZVXcxU25KMEx6TkRSa3gzYzBoeFNHbFJVRFpKU3k5TVdXZEVNelJpVm5SYU1FZGtVSGRxVWxsc1RreHRSbEZxSzFwSE0yaGxka3QzVlhKTVlUWklabGhxZDFoSVZWQkRWV1V5TTBscmNHOXJOR2RxYjBSRVIwTkdkUzkzWTFvMmJIZFhXRTVFWkVjMFpHaEdiVlZYY1VNeVRFNXVZa2MzUjJOUWJVWlZUbTlxY0ZkVldFVk1WbFJPSzNCVFRrSjBObkZRVG5nelVGTllibEZUTms5bFZXTlhka3R6WW5Cd1ZYTk1TVU5IWjAxMFJtZFpjRzAwUzFoblpIZFJURU5UT0RaQ1dsWlVWelJhWmpocFYySlBSMHhDYVcxMVFrbzFPRE14WVd0Sk1VNVBMMVZJZDJ0TGJqQkNaWGQ0TUZWUlltRTFUVlYyTVRNd00zQnVVbXBzVnpaWlFuUXhhVzVIWTB0U2JGZHhNelZHU1c5S1IwMUpSbVpPYmk5clpIaDVhR2hZZDNreU1Wa3laMGt5ZDJOUFVUVllXWFV3VmpCQmJIcFlWbEpvTnpWdk9ITm9kRVo1YW0wNE0xSXpUa3BOYzNJeFlrcHpOV1ZoZFd4bllpOXNkbkJQZVZScE1UVnlTRFpCWjNseWVYVlVOVlp1VVdSaVdtSlphekIxVUhOMFFsWkljbVJKUTI5QmRFaFNjVmR6VlhKT1JYaFZjMlV6VWpOVlN6QTNNWGR3Y25KQmVXVnVNbUp2TW5kMFVWZEZhVkIzVmtVNGNXTlVSMU5ZT0N0S1VHMXNVR0ozTW1odmVrY3laMHhMWmpZNVpqVnRhVEZqTDFodlN6WXZhVU5SYmpKNlpITXhVVlpSY3pneFNYTm9VMlJQU1dKaVkydHpjak5DUmpOQ1JGVm5TRFZXTkRkUWQwdGpaWGxMVG14alRESTJOMVI1WWtGc1MzTnpVRTlGYWxSNWFUVlNiVTVwWVVKR2MzUlNVWEI0VVhWUlMwNXdTRWt5Um5scWJtTjNTV1J4WjJncldsUklPSFJtV0hsREx5dDJRVkUzYm1aa1RqUlpUVVlyVmtNelZrZDFRa2w2TmpadlFtbGpOMlZ0TkZWRlR6QmhOV3d6ZDJ4YWQwVTJTMmR4TTNsalRrdFBXVk15V0UxQlpVVjRhbmM1T1hKTlMya3diVzVGUjJKSE1GWjBNMWQwZVhrdkwyRlVjSGRZY2pGVlQzSktlVU5MZVdsMloyVTVjMmg2VERFMFJtYzFOMUoyYkdGUFRUWXdVMU56V25BMGVIaHRZalo1WVVoUlJIWXJWVmRJY2xOYWNYTnVOMWhaZDFOQmQzVlNLMUJQYXpFNVJtNVRPV1ZUV2tGTWJFcDZkemxVZDJ4dU5YRmxkR3gxYzJWRVVsbFhLeTkxY1hOTWRqUTNZVlZITkN0MmIxYzNhamRZZW1GbFRVdDJWbTlNZFhBNWJXSTBVbk51T0Rsd1UyTkdSVEptYUhsUUx6WjBVMkpqT0hKVGFFTm9hblptWkdoVFEyWjNPVlptWVdORlduaGtRWEFyZUdGSkt6SXJSbmN3ZUVKbGFWWmFjVzR4Y2sxbVNVUjFUMnAzV2tSNlZIVnFiRzVIVjNnelRWTjNORWxYVDFwdU5VVlROR2hVTmtjdmVGcEtjR1pUU0dwa1YxbElaa3N4YmtKalVYUndZMVJxTTJwTmVra3ZWbmh6TmtWTlEwNDRURzVqWVhGc1FYRnpPSGdyWXpWVmVIRTFRV05SVjNkUlZsRmtaVFV6ZG5scVkyOVFLMjg0UkdRM2IzUTBOSEo2T0RONU9WbG5VMUJYU2pKU1drUldZbk5xUml0RFlYUXhPRWRJZEhKb1JGUmtUR2dyVldVclJVcG1WMUZ1T1VaTGJtTlhPV3RuY1hwRFJWTXdhMDlIWTI5SGIxZzJWMUppTlhoTE4xRXJTVlJQZUd0RmNrOUVSa3N5ZDNwWmRFRlNlU3RGV0hSeFpFaEVPRVJNUzFvNE9XZ3lkbmx2UWs1TmNUQnVkbTVDVmpKUFNDOHdaVWM1TUROb1FTdHJiSFJJY1RoWmJ6QTVaVUl3ZG1ReFpVUjNZMVpIVjFaV2FuTXlXWFp1VkdGR1NUaFFRbU5XUWsxVGVYVlBTaXR0YWtsMlNVZGpjbkJOYlZKQk1UQTFXVmh0VTNJNE1VaGtOMVl5UmpCQlR6RlZaWG94ZWpsTFkwSXpMMjVaZEZBeU0za3hkWGwzYlRKNFdETmpVMU5UYUhJeU1reEZZekJwVkN0cmNGQjZja1UzYTBSRFVWQTRNSFpFYW1kc1ExazNTMjlMYWxwRGFFZzVWRTVrWkZOTVpXcFhVVWRJUm0xSFUwUTRhMGNyTTBsbGRsTkZXR3BOT1hsVWFrMUdaRllyY0hOc00xUk5kMVJsZFZkUFEzSkpWamxJZW5sV2RXMTRiSHBYVkU5MVMwWndRemxxZDNCWmNHRmhOVkpUY3pBeFdUUnRlSGRLWldNdmNXVTVTRlU0ZUdGNGRVOURWVXRPYW5OeVJEUlZkSGR3VmtoRGIzZDNSMUkyVUc5aUwzSk1ka1JoTkc4eVNrbEVjbE5IVmxoamNrTTRUV2szZFVFelRYUlNUSHBCZERWNlNtbGlSRlUwVEZka1dFZERPSGxLVUdGbGJFbEVNelJPSzFOR1NEZE5iR05sV25GRlkwTm5TVUpxSzJWTWFqVnVaMnREZFdGaWIxWTFSMFZ5YVVGMWVTOTViRmR2ZWl0WlNFRmlaek5VYW5CV1Z6UlhNa0psZDFCWGF6RnJiMmhoYjNWb1FUSkJTRFZHU2xkdmNYQlBZbVJKY25KblpXdHVjRFpOWlZCM1NVaGxNMDFTVUcxSUt6ZEZXSEo1UVhwWldGY3JaVmRIVFdWUVMzSnNZV1F6Vnl0T1RXcERjemRwWkU0emRtVnhTbTl3YkVaSFJESkZUMnQzUm5WdVUxUkZVMEY1ZVdsd1MyTjJaRE56TmsxR1FsQnNha1J0VWk5TU0zSmlabmhzV0VSNU0wVkRiR3h4TlRaNVIyaHpaRkpHUTFOb1RUZHRSRWxNVlc5RWJXMTJWWGw2WVVsT09VUndNR00xZFRkNWMxbHJlVmh0VjNkWWFqbHdXR3BoY1hCSk1IRlJXVmxOUVVkUFdHcFVVblEyVEVOU1YwSnJXRTFGTHl0aFJsRkRjelJVYkhGeGQxUnBSMmwwYmpKNE0wcFpZbXhRTW5kNlJFOTFaVGQ0VWtadmNWQnlTVEo1Tm1KQ2JHNXNOMmRYV1ZsdU56VmxTelpGY1RRMWRHSkRZMnBMYjJad2JrVmFiWEZwY2t0U2NsVnNhM2xvWm1sT1EzUkRWRVV3ZVhWcFMwSkphbkJYUVhKYWFETTRRMGh5U2xZdmNuZFJkVFV3WWs5RE1qVTNiM2RFVDBsWk1rWkhXR2hKWjJodFFtVTNiVlp4ZHpWb1UwSmpLM3BZVFVkemFVdDVTM0JDTlhZM1pqTnBRelZzZG5wRGQyUjBlbFZrUkdSeE5IZGxhbEpyVFZGaWRFcDVjalpQTlRKWmRtOXJOSFo0VWpSVVVHOXlXVXh6WWs1NFZGUlJOWFE0V1ZKck0xZGlZelVyWml0WlJHcE9PSFJLU21wMVdWbE5PVU5aUVZKclNUQklhRWc0TTNKcmVYQldXSG8yV2pselJVVk5VbUZxY0c1UVZEYzRNbmxsUmxnd1pEVjFhVFZCTVVwQ05HRm1RM2N3V2k5QmVYUjJkMEp3UjNsNlVqVlpOR1pMWkdSb2RHaDVZazk2WjFGb2FrUmliVXh5VUhSaWJWaEdiWFF6VUZoWVltaDZkMkpNUWxOT0x6QldUMFVyVTJ0RWVsRlNVVEJJZEZaa05rZEpWMk5wVlU1RFZGQTBNRkJQY0d0S2VGTjZOMmRhVGpoM1VuZFlRWFZyYTNGaU5HNUtLelF6U25GU1VDdGlUMlJzVkZkYVJXOU1kRUpDZEVRME5sQTRUM280VTJkWE5Vd3hTMlJhU25ocVpHbzRWMFJYZVZwNVVuazJhVVpTTUZaUE5HNW9SRFp6YldWNUwzbGtOREpSZHpGVVJTOWpaMVpsYkdNclZFMVZZa3hwYzNORFVrZDVlbWxNU3pGV09IUkVUemxMVEdGWWNFRjFhVFpCTjA5Q1ZFSTVkREZEY1hFd1kweHZhVTl4VG10bmQxTlhWVkZ1ZVdGS1dVWlRXRmhDY0RCS01taFJjR1Z2TVVaNmVYZE5Oa3BWZGpJNFMzSmtUV3MxWjFsWFRscFFRMU5qUTBsVU1Va3piVFJRVTNKM1Vra3lTRkp5YmpGbU1IaEJOM1p0T1dONlRtWldZVTVFUlRCMUswZDBRVVJZVlROVFZETk1iM2RFTldGS2JWWjFjbVZZU0U5b1kwWlRiRnBrWmpoUFJVeE1VRmQ1TmpOdWNURlVPSGsyVmpOR2RrWTJUV05NU1UxV1ZGTmpRbklyVDFnMGEwZDJlVWd6YjNOcWEwUkZWWEZ2TlhKc1RGcHlja1pGVG1OREt5czVZMU5XY0ZkTVUydENhbFp0VlVob1ZUbFNhVEk0ZFVZNFpHRmxNekV3VUVzemVHdFBiRU4zVHk5MlUzWnRSemN2VTNCQ1VFZzROVWhKWXpkT1NHWklkbGQ1YlU5cFptVmhVMUpSWW1oREsxUjBiakZKV1RST2FsWlpTR3hCT1VkU1MyUnlWVGhtWjNaWEx6ZEtSRXQ0TlZjNVRreFpZVmhOTkVONGVEbEhhbVZEUjFsQ1kxVnlhMWRGYlZKQ1Uyd3pRVWtyWjJSb2EzbGlUVVZPZFRSelVsaHJaREJIYmtWTVJXZEhOV1I2VkhaWVdscEhNRkIyV2xsV1NYZzNVa0ZOY21zM1NYcFhSbEZvWkVJNGVGUkRLeXR1TWxGR2FrRmtPRkEyVVVGRE1IRTFkM2xvWlRkWU56ZGFiakJQU2tvM05GcE5UVXR3T0hnMU1HeE5kRzRyYjFRMlprczBVa2hXTURoUlRrWm1WRU50TDNsNmFEaG9VVWc0WVc1cU1GSTNkMlZrT1ZaVWRHaHJRM2ROWVZCTWVVdFJNM3BaZVVaVU4yaFpkelV5Y3pVMWJHMUJXaTlKV1d4eGVFRk1ibHAzV1dGc2JXbFVaRU55VEdKVWNITTViMHRyVUZGaVozbFVjWEpKVFhsc01scFBSblU1YTFKaVRpOUtjVEJhWVZwelptVk9aMWh3TjBRd2IzWjNUbTlPVURoMk5TODVTamxtVTB4cGFrVlJOblpHWXpWTk5UaERja3QzU0haYVVHUmFRbGxNY1dWM1RtZFdVblJIZVVrclNGVnNjblIyZUVkT1RuUTBhREJ6YkhrNGEwZFFLM1p1WmpkMWIyZDVMMnA1WkhsV1prOUpjbFZEY1RGaFVGTkZWR2xNY0hCTWRsWktjMWsxU1cxSlNGSmxaRWg0UVdvMWIyaHNURGRLU1hCd05GbDFNR2hXYVdKWVEwRkRSamxrUW1GT1ltRm5jbXg0V0RGbFVXSjRkamM1UVZsdlMyaEVlRnBTTVdaTGRVaDRWMWx6YUZad1R5OXpWMFZ0VlhGTlVIbHhLMmxrWW1wVFUwdDVlRlpOZFhvNWQwZG1hMmQ0WW5CVFlqQTVTbkpzU2tneWJXWnVXV2hJWW5kM1R6Z3lRakk0TDNOelptWTVRbmhqU3psSlpYY3hRazVJZFVKS2VEZEtRbk5yVlZSWU9XNTZXR3hCTVdacldEVnFTM1p1ZDFCSFZERjViakJIVEdObWJXcFBOWFZsVlZreFlXVkRXbkJNVEZCakszaHRaako0SzBSRE5GaFdhMHd5VWl0YVNERm1TWGRxWVdadE5uZEVPVzV5UmxSMFJEVTVWbmRUTkZnMVRVVnlVR05IVG5GdGVtRmlSME0yWVd0UFZHSXdPUzlTTVRkMVRpdFRUMGRMYmpOTGIwRjZNWGxMYlRONGFtTlNUekZvYmpaSE0xTmhXR0ZtVEVGNFpGRlBSVlJITkRCR00wTllPVlpxZFVOU1REVXlWMXBUUzA1d1IxaGxaVEJtY1VKclVFRlBUSEo1ZVVaQ1QxUjJTVzVsYms5VE5qSnhOQ3RpYlUxcmNpOU1ZVXhQZG1OWWJWUjJia2xYYVZORlprOUhUMGRXWlhCaWMzSk5SRUpFVVdZMWJYQkZSWEpDWTBSQ2RTdFhPVFZVYjNkUVUyTlFXakJhUTNaV2JGZFRTamgzYmpsVVIwSjFOMkpUVjBKYWFGcE5lVzUxV1UxaWVYbFhWbGg2UzBnMVYzUnhSM0Z4ZUdSbFlVcHlOMHRJU1UxV2NqSmhVVEE1YkVWT1ZHNVRObWcyVmtsU0sweEdjVzlwVWpOdFVIRlpTbEJ5V1VwME0wVkNiVnB4VTJsbmNUZGtjV2w1VW1adFQwMTVkRUZDTVVkTGRsRlJablJMVW0wMFFWbE1kMms0TTNWcGVERjZjMGxVWVZsNVZWZGlkbWxhVm5od1VXZHdhVGRSTUVGVlVDdDJNMnBCVGtKd2FYbFlZemhoY25NclNYWXZUM0Y2YUZaRWVEZFJXbmRYVDNObmRqSllOVk4ySzJoU2FHOUpVelUyVVdob1JsWkVaVmR2UkdsNVoxSlpOVXBhZFhOMUx6RkxNek5sUXpGd2RXMUhXSFozTlU1RVNIaGhOamxvU1RKUmIyTXJUbFJoT1ZrMU1WcHBPV2haUm1kTGJWVTFNblp4WTNkWmVWQTBWbXMxZGpCeGRYY3hhRTVSTldKQ2JUaGxMemh2UXl0SlpEVjVia1pTTTNGRVpFbDVSRU4yWkRCM1pWRk9VVGRzVmpGS09YbFNORlF3Tnk5S1kyWXJhM1JxTUUxVFRUSnBhVEpyUkVOWlEwSnFWMjU0ZVVWclUyVktOVzFqU0dwV1UwNWlXSGQyVlZwclpWVXpRV0pDUVZKWVpuSnpWRzFrTkVkWVJETlRlbXRFWWpnelZWWnFRV0ZNVFc1UmNETTVTV0Y2VTNWNVZ6YzNaRU5LV1dkWFYyWjVialpUWkVFMFNYbG5TVzF5V0VoUmRTOVdNR0ZzU1Rkc1IzSm9NQ3N5Ym5sUVJrUldVVmh3VUZWaFR6bDVLMGx0YldOdlFsVm9MMVpEU25kclQzWTJWU3RHZHpod2IzaFVXWEZtT0U4MlNtaExiM0ZoTXpSYWJIUkVNMWhvZG5ReGNIUTRUMjFsWmxCTU0wZEVWblpPZEZsaVFVaElOa1pvZHpGcGQyWlRWRTFYZEdoSFlrcHdSemhNTjBsTWVGUkNZMVZWUTJsTWRWcFlVbnAwYWpOT01sSXJjSGxWV2xJNUwyOUNjVXRxUzNkMFFtMVZTbkkyVlUxUFJXdzBTRkJpWWtKYVdGRXZjM04zTXpSeFUxVjFUVXBrZDNOTVNWWndRV2R2ZDBoUWMwVTNRVEUxV0hZNVVqSnZRVVpoYmpZelkxY3ZRVEZxTjFJMGNUUlhTREZzWVRRMVJHMUlObFlyT1RSRk0zbFVaRmRKU2pGTVUybEZhbWtyU25KRU5rOTBNWGhLTlRSVWFWVTNkekp5Tkc5WFFXRnhSU3N3UzJ0UVRHWm5PRUp5VkU1U2NtZFVkRlJvTm5oMlVHMXpZVnBuVTJ0WE1WZEhkVVpUVXprclEwSnRiM015YzNnclFVaExTbWgwWmxsa1NYWnVNMmwyVVZvd2FUTktZa3ROZWtwUFRsSkNUMlp5VW5jemRXVkdNa0Z6TmtGd0syMWlWalF5TTFwUFVEZHhVV0Z2ZEdsaGJtTmxNVUYzTVdjd2VYTktkemRuYUZoUFJFRjNZWGMzTm5wWFRFY3ZRblp6WkdSdmVWVlhjeXMzWW5kVFNXcDBkMXBXZW1wd01DOTJNM2N4VFZoT1FUUlhhbkp2YkhZM1dYaDRWV1Z4VURadWExRkdhRXBvU210R1pFbFRaVkpSSzAxbU1rTnhWMlY2UmxGbGNtVXZPWFIzYlc5NFltMW1VbWx4WkZsMWMyc3JTM1VyTVVkclExZFlVSFJHTTBncmVVRmpNUzh2Vkd4UFJYZFhaVEZ3S3pVek5GcGxSR3hqVEV3MVZVUnBlV1ZWWVZsQ1ZHUndRbVJaTmxWaFJtazBjRlZtZUhZd1RVUnlVRkJXY1U1cVVHaFdiMEo1VVVONWRXbERNVVF5TldRcmJWcDFOamczU0ZaVGRIbFdaRXBSVEZwSU5rRkVSa001ZDFFdmJVaGpiRGRtVTJrck1YQmljRGcwTVhVM1JsZzNSVVJuVGtKUlJEZElMMjlsV0VKaldFUnphV1pXT0hSNE1XcEZjRlprUkRaV2VqTnVWR0U0Um5SUVdVaHhkbVJZYTBkcFkyaFhlblJLYlRJM1psUktXRXRwVDFOTFJqQTNNblp4YXpaaFFXaHlZMWh2U1ZSSmEzWTBUbkYyWnpoM04yMVFTV3hPYUU1TWRIUnFjV05DY1ZkblJYSTBObWxoYjIxTWEwZFFXbU5LYzNWdlNHaFZkMDFpSzBZMFVUbEtXbFUyTUhKcFEzTTFha1ZpUlVoWlUzUXJXVlpvU1RSS2NuQnZiblJGYm14bVZuaEpPRU5IVFdOV09VTm9LMnhuWjFKRE1qTTRaVWhvWm5WamNIbGpiRlJZY21GRFpHOW9UazgwWTFCRlZrVllNMU5vT0c5alQzRnFVMUZhV1RobVJHUnJSRkZTUjFCeWIzZ3dZM1ZHZFhCeFNpOUlOVlJEYzFsSU1EUlNaekkzY3pOTVZWRlBWVlY1Y1ZsNmNWSkJTSFJVTVhGRGFsVnBUMlZrT1ZWRFpUUklSekJrUkRSdVZXUkpkMDE2YWxsUVIySjZXVXhDZHpVeU9VeHVUMDUxUkc1NmRVZG5kbEFyY2psTVdtbExUMjFNUTNVMlJHc3lhMGsxTjBSR2MwRXdjVFJpUWxjdlQwOURkRVpsVVZKdlFubEJlRGhRVkhSQmMyWnlUV1puT1ZocllteEVRa0pITlhWbmRrMU5jRWxMVFRsWVl6VjRiM051TkZkbFIzSmxTRlUzVm5oMVJqTk5kQzh4TUROeksxQmFZWEJIZEVrME5GQndZMGRMTkhST1pHMDFSWFZ6YzJwMmVpdHVRWHBSUm1KS2MwcFNTMU5WTTI1VVZrb3pkbmRNVUN0SFZYRndMMHRhZW10RUwzbGhOMVZFYUVkQlNXVlpabWMxV2tKMlZHcENjV3BJVUVwaWRuUjRNa3BzZWtWcldVZ3liazFXU2sxdGNGbFBObXBrV2xwb1oycE9WR2RCYmtGaGVrTjZTVEpYVDI5NE1YSkxla3RqUjNjMWRsRlJOa056VVhOcWJ6TjNlRE5YTWxaUWRYaFBOVE5RVVZJNVp6UXlVamRvZGxOUU1VaDNOMmw1WkN0UlExTXdUR1FyYVdRNVQyWjVOVFk1WVRoVlRHUlRhamhFZVdFNGQzSXlZVTV2UjBONlZ5OWFaRE5CUVhONWRsVm9WV3BJYVZOVVpFMVBlRXBUYjNsRVR6SlphVGx4Y2t0MlVuSlRlbVV6YjFoVFEyVXlUVUZOZWtOb0szUXdSa1I1ZVRJMmFHdExZMWRIVFZCT2IwcFdNV05aVld4eGMzZHhTVE0zVVdaT1JHSlViRnAyZGxNclFscEtXVzlMYVZKWGVEVTNRMDl0ZEVsQ1VqbERjR1ZvV210RFQyZDFTemx0Y1RaclpYUmxaekJvT1hSelkyOW9ORVZaZVZKdVNuWkdZbXBQUm5JMlNtWTBLMW96YUhsQ00yMVRMekU1VjJwWVNFZ3hZVEY0VkVsR1NtaFBXa0ZoVEM5MVpsQkZNMFIxUzNGUmFqUm5hRzVrVDBneFRHUTNlVEJvYjFwdVRGVkRSVUYxT0ZwSlJYSnBhRXBLVVhrM1dFNDJkVk5YVVVGeU1uUjZTVTB2TTNGWVZWUTVjSFZZVVRsVE5GZFFSa2hsUlhWcmFrVllZMWxLV2tKaEwwZDNOa04xYkVwVWNFUkplQ3MwTWswclNtRmFSaXROUjNwaVRrUjVVSEJJZDJWQ1FTOUVkVFZaTDB4MlowbE9VRXRxVkVKaWFtSmhNVVpCTDFwTldGUkhiek5hYjFRMlRUVnhkakYwYzJOT2RuZGFZa1l5UW1WU1JqUnVZbk52ZVZSdFF5dFNkR1JXZWxZMVFqQnJaMU42YWxONGNERmpXRnBvVFUxalRuRmtMMDFFT0ZSSVEwNTRkWEoyT0daTWFHWmxiMDlUZEhkM1p6UnBia2hRZWk5cGVFZFVPRkpzWm5oQ1lVNXpWWGN4WldvMlYyTk1kR1JNYm5VMmNsaFBjbG96ZUV4b2RtSTVjbGhvYVhSeGVYUTJjVUZCY1hORlNHaDNiMHMzWXpKdlpERXJVa0VyYWxwRWRWRmFWQ3N2Y25OTmFpOHljM1pEVGtGYWFERktWV1pHY20weVVHSnBSV3BrV1ZkSU1UaFZaVGgxT1dobFkycDVXSEpTYXpselZWTmthMlJETTJKTFZTdDNhM0J3Y2pCSE1FRk5hV0pYVHpaNVJIRlVPRnBsVVZwcmVVeHhkM1ppTVdwa2VEbHdkSEJuV1c1TWIyc3ZZWGRvYjBGVVREaE5jSGt3UW01V1lYVk1NMnd2ZWtJd1NGRXdiRFJ1UW5OTmIyUlNTalowWjJWTGJqY3djMnBVY0RSa2JsTkVORFZ2UVRCT1dHMTFTalpoYW05UmNVSjViMHN6Y0VsVWFubGtVVlpRSzNoNlkzTTNUMnhyWWtsT2EwUXZWSE5STTJoMmRHZHJUV2hzUldSdFZVbHFRV1JpY25nNVdXdDJialp0V2pBcmIwcDFhVWhuVWtSaVIycGlRWFJTZVd0TVRWVmxURGRVT0ZwcmFFY3pNME41TVhoRlMyOUJiSHBxZEVsaGNFdEtRMHh6T0ZKR2FVdHZMMlpDZVRnNGVWZDNSeXRKWkZCUk5EZDBiVGgxUTNveVFUUk1jelZYTkdsTk5sRjFWak5KTVdORlFqTklMMlo0ZFhkNU16VkxSVVJKZEVaQ2JTOURUMFZQWmpkM1F6UjNValI1VEhkS1ozUllkbU5aUTFBM1dsUllNMGx1TVVSSWEzSlRaM1pYYkRCU1FsbFVNMjFHUlUxaWNGUmpiMG96UzFSUE4yYzBibWMwUm5kcEwwMXFTMHBvUkZWcVIyZE1lVEJuWkM5a2VIWkZOUzlWY0VaeFVHZG1iM280WTNGQ1YwdExObkJLT0ZOUGNsbFphMUY0YTBrdldISkxXVlJyWjI4eGNHUXhTekpTUzJwMFZXWm5MMVp2V0VWNmQybHRMMmhFU0ZvMWREQnFjRFZaUlZCWWJXTnlWazlvUTIxTldsRnNSMjAwVW1WWlVXcEpVM1ZpTDFsVmVIaE5kVGwyY2pVeWRVZG5jMmxoYzIxdFVuZHJTVVpoSzFoUllXTTFjVFp1YlVWNE1VbDRjRFp6YVhKV00zQTBNbHBhZFhkR2FFMVJkMUZhVjBrM2VHdG5kMDFXVW1WR1EyeHBOVXRXZVVRd2VreGtObGRDZWl0VFZ6WXpjVlpSZEZocUwzaElOR1JwVG5sWk1TdG1WVEowZW1WQ1ZHVXhhRTFZUjFkMFIxZFVXRTFETXpSNk0wY3JlblJWUkhsd0wwNDBVR0paWWpGMmQxRnNaVGxuU0VZMlMyUlJiQzlTVVhOWGVTOVpWM0p0U0hjMU1rUnNZbU5wTkdkSFVsWXJXR0pzU21kVFozTkpiVVF6V2xkR1YyMUZSVGcxVDB4eVNubDBObmNyVTI1T05XMWpkV2RQTms5eVdETmthemRFU2twR0wzWlNWM2wxTHpodmQxWlVOamRwVTJKSGVYcFFSMDAyYUZseE5FbE9UMEYyY0d3eU9WbzNVM1pRVVhjNGIzQlJUREUwYkU1MFdIRnFOM3BuU0hWQ0wyNVRjSGgyYzFOQ2NYVkJjMHN3TTJSa1dGVnFOU3QxUVRCMVlTdE5USGR0TjA1TU5XOTNlRGh3TW1GQmNtSXhVRmRWTWpCelFXMDJSMmhIYWtsMmFrZ3pXR1E1ZVhZMFpGUkVTemhLVnpaQk1EaHBPVFZpTDJSNk5sVXZNWG96WWl0aU0xWTVOMnAyY2k5Q1RFcEthMDVzVVVWRmRtSm9TVmRTYkZWaEx6UkNabU53YlVSS01FWlpTekpQWjFCYVFtWmhiMGxJTm5WM1psVlBlVlpyZUVVclVTdDJNSGhOY0VGdk0yVlZhM2w1U21vM1VtZGhkMVZSVFRCRlVTdDBSell6VVdaaFpIQjJORlZXWTNvMk1rMWpUakZRT1RkeWFuUXZUbVZpVFZWcFJUWnJTMFZyYTNwR09XVmpXakk0ZWtKNmVrUnJPV3BDVkZoSlNHUTBVbTV2YmtORVVtSmlhVkEzS3pGeUt6RjFZazR3U3pKYVdUbHBTQ3RHTVZKMk9HVjRPVlZoVUcxbFlrRXdOMmxYWmk5NVoxWkxiMGhvWWk4elNHbFlMelpDT1VOMlRqWmhPREpJVUZGU2RsSnFOVTlzU25sV2RFNWxUR2hCZEVKblYwaFVaVFUyTTJsdmNsRlRTMFEzWVUxRkt6ZDVSbTFzZVZad1ltMTBUR1l2V0VWNk9Fa3ZOME52ZDNabVdXWTRUVEp3U1dkMWMwTkJXVzkyUTIwNGFqbEtTRlpNVEV4TWJubE9ZMDg0ZDNSdGMwUlJjM0ZYY1hsM2NHazFkRFpsV1hseE9HcFBMM1pzWVhsbGMzVlFSMmQxUjJZdlpVY3habG8xV1VsdWMwbDBTRVJ5ZFhGVFJuSmFURzAzTUdGM2EySlJibFZVYkVobmRFUnBRMjVYYmpONVpuZEdLME5UWjFONWFHUnNSMGwzZDFWT01rWmlkbU16V0VoeWMzWjVPRGwyVG1GR1pYaElUbEpKVkVKRGVUZG9aVWRzUWpSS1VUWjJjMGszVGxSM2NGQmxLMnBSTTJFdmVXNHpiV1JDUkhrek0xRjFVMmR0UkZjeWMzWndja016VVRJeFdXeFBlVlYzVm5kU09FcGhRbFJyT0dKbVJYSlNXbkZ1Y0dwS2JqWTVTMlo0UlZWV1puSkxjRGhLVkdSWE5uaHpXVUpuWTNoYWJUbFVUMkowY2xkbU5XWlJTbWx4Tnl0VWNsTktjMVl2V1d0MFp6aE1VVEJ6YkV4UFlVZHVUWGxSSzJwellrc3pTMUZoTWpSdVVYQjFiVTQ1V2pZMU5EQktSM2hxYjJkSE9FeFJNbHBrT0dNM1VscHhRelZIZUhZelpIcEtiM3BxUVVsVGJrSkpZMVJzV1d0S09VTnZZekpYVWpSNFF6a3JWMEpYWmtVNVdXOU9jMDlZTlhKMFVTOW1iazAxWkdWbVRWbHhWREEyUW1kVmQzZHJVSGRHYURsSk1qVnZkME5pU1dscFJ6VlBOblk0TlhoYVltNTZVR0V4UnpKYWVqbFdla05GUW1rd1EwUkhjR1V2YzNsWVQxbzVTbUZNU0doRGNrdFdaRkZrTm1sQ2ExQkVTamRwWTIxdlZHOU9jWGRtY1VOU1MyZFhaVWRYYlZCemFrSkRaVlpLTWl0QlVVaE5aRXhGWVdWVlZXdE1RbWRqSzFKWE5YRlNXblpNVERWVFlrTllZalZHWmxWRVNpdGtUREZRVG05c1RXWmlTSHBPTnl0clJIUmFTMU5EUm5adk5IaGxMMjFyU0ZCMUswRktjR2s0YURKUmFtdDVRVUpRSzBwcmRESm9WVWhaWVVGdE1VOVVUWFJtYkdkaVkwSlpZVlJvUzJaVE1uZHdWMmhCVDNsYVJrd3hTelp5UnpJdlRHVTVSWGhVZVZRM1ptcEZibWM0WjJ0NlVreDJUSFJtUXpkQ1ptVXdiakJITDNKaFdUQlJWMVU1TVRnd05rMW5jazVYZGxaTlJreEpkVU5tWWtOMVYxcHpkakJLTlhBelptWlpkVU5tZWtOVFVGTnllR1l5ZVc5SFlXcEJPVEp6TTBSVVUwRnFSamRsZDBKRWJIWjNVMDVvWkVWSGRuVkNLeTloWjBkWFIxVTRXVXRoZFU5VUwxQnRTRE0yV0RGRGVrRk9NbGN5WVd0UFRtUXJiVXhqYUhNclIzWnlZVkJ4Tms0MlQyMUNSbVp5V1ZJdlNVMVdOWFEwVFZaUGVHZFJjVXBoWWtsc1NYQklWV3BFUkVsc2FIWmxkbWREUkZKak1TdEZhbkJKV0dNNE9YZEpOazlJYmxsUVpVSXdUMlZqT1VNMVJVWnVNM1k0TWtodk1XbGFOMVZyY3paaGMzbzBPWHBKVGpSbVJqaERkVTk1VlhvMUwwRjBSV2hFYjBvMFRqSkhUblY1UWpWWVoyeFBWakkzY1RWR1JYcDVLMHBNVjFKbVkyUk5ka3hOWkVsSFpEaDVNbU5FUjBSQ1JtSlVWSEJsZEZaaVRVaGhUeTlXZURWdlVXMTFNak5rWXpOVGVuVnFTamxuZGpodVVWTlBPVXBMT1ZGSlpXMHlVVkl4YWtWamVHMVlNSGhpT1VOUlMyUlhNMUZ2VUZaNlVHeE5MMlZEYlhOd2VHTnRlWGxsWkZoa0syOWhkR3hTWjNCc1owOVdlbEE1VTBvNWVYZFZWa2h1U1dsYWNURjFZVGxPVFRFeWNsRkdWMWRqZVhRMFEyUjFlU3REU0hSUFZFbFFiSEpWUlhBelVuQTFiWGRTYW5oaFNFeFJjMFZMV0hOcFVqazJRa1pJU2pSdFdGbG9kMk0wU1dSaVVWRXZjVWRIUVV0b04xaFRVR1ZHV1doRWVFUlJRWEJrUmsxMWJFSnlTRWR1THpReWFYcFRRbTFFVUdzeGNUVlZkRkZTVW5SaFRsTnNlVGRCVEhRNWQzY3pNV2hsWTNsM2VHVXJSMEpDTjJwemFrOWlObklyTjJjNGFFcHRaRU5vVm5abVVrMUJXRXBTT0dSS2RTdHVRVGxTTWtKRVdsVlJRMmQxTjBoNVVFOUpVRXMxWVdwR1Uyd3hXVWxCVm05NVpteDZXSEZJZDJ0V1RXOU5XWFpxYjA1TVJYWk5WemhaTUdNcmVVUmxUVlJRTW5WNGFDOHpURU5yZW1JM1UwRmlWaTkwWm01WFJHNDVVMnR4VEdSM1JsbFlaalI0ZURoQ1JXVTNabFJuSzFoSk9HUlVibXhQUTA5a1dTc3dNVmhSYVRkSFZrMDVNemxVWVhodmRVUndPRTlUTkhobmNXRlpiVnBrVW5ZNVduVkVlbG92VkhwMVVtbExhaTlzUlZOQlJUQTVVMW95U0UxNmJuaE1aRTFXY1VWTmMyeDJaVXBGVkZaSVVqZGphQzlKZDFjd2VrdEtXRFI1WjNGaWNFUkNRa2M0ZERaU2FHMVBiekZ0Y0RobVV6UkNWSGxUT1ZSNGVWVlJhVGhOTmpobVlVY3dlRTh2TmpSSGRrOHpiRmxUVm5KYWVHNHlVbGN3YWxKbWVuRlVUVzVxVnpCRlVrSmFjbGQ2Y1M5aE5tWlpWRTk2TTFKVldqaHJkRE14VldadVVYSTNXVUZWTkZGdWVGUnZObWxxTVZjemFra3pPSGRYTm1veksyaHBTa0ZwZGtOcFEyTTViMWxOV0VoV1ZVMWtORVowU0VWT2VYVlZlbk5IZGtSRWNqRk5TV2Q0T0ZjelZFTkllV01yUkd0M2VscHVlbXBhTUZnNWQxTjNlbVpFUkM4NFVUVnlNelZEUm01SVJHWklRWEZpT1hBd1NWSlNORlZaTkVzeVExZDNkbmx1ZEN0TlYzaFdWVzgwZWtGbVlVRlBVazR2ZVhaa05VMXVMMlpVUWtNMU4yRnpTR0V6UkVWellXWm5URFpwUjBGd1RVUTVPV0pzTHk4d2IwTkRjMVJXZWpGVllqUkdVemxaZGpCSmRrUXpkMHhzUTFweVVFRjFTVEZ5TVZwblJFWXhWVVo0Y2pab01rWm1WRmR2VTJaU2JFeFVRek55YTFSUldrUjBka2hzVFZoS1dqQmFWbFZHVW5sYVYzbHllSFJxYW5KMmJuVmhTRnBQVEVoTlRtWkxUMDFUVTNZMGVVcHFhRGRPY1dWek5rUlpMMkp4Wlc5WE5VMURkMDl5V2xoRWQxQkJjVUpaUmk5UWJHOXZTblZQYTBJek5HaFdlRk5qZFhkNkwwWkRWMUZVZWxOTGJEVkVlREp5ZUd4M2FYRXJaM2xCY2tWTUwzVnJSbEJxY2tSaVpuQlViRFZOZEdjMFZWQnBObUZoUmpNdk4wbEtNWHBPTlRnd1psTmtkRGRNUkZCdE1YZ3pWMHBDYzBoUWRrNXpXakl5V0djME9EWkdOMmd6TURBMk5FUnNlVVJNTVd0bU9ESlNhalpuTVRSdmFuRndkbE0yU1UxNFkzZERUM2s1UW1vMmRYRkdRVlI1ZVVOU1YyNVBZVU1yYURBelNWb3hkMjV3YUhwbVNXdE9WSElyU0RKc0x5dHVhbVowV2pKcmNVSnVUbHBvZFUxWGQzRmtUM2RJYkZGUk5scFJlRnBxS3pGQ01Ua3lSbVJ2ZVRkVk1WbFVkRWxoUlcxWWNERmFWM0ZJTWpFdlRsQlZhVUZVYkRCRGNGUkdlakpSYUdKTVpteElWbHAwWkVOYU1qVjNSR3RTYmxaMFlsVnhablZoVkZrNGFWRk1iak4yVUZSSVVUWkpjamd2YUhsWVFVTk1RVFJzUVVsemExRk9VRWhxTWtKek5UQTVjVEJLTnpWVWFHWnNXalJMWVhwNVRYaDBiV1pXUVc1dE1GcEJkbkJqVjFOWFZqUlBVR1pGVTNBck1EWnNWRlpKYkdGMFlUaDNWWEpUYzJwSFJtWnNZVXQzWTB4SFFuVnhTRlpHVW1vME5uZzVkVlZHTUdSNk1XcFJXSE16WTFrd2EzQlRlbFZIVWpWdksyMHlaMWhaTlUxNVlXeFdUV04yYjJ0RWNuaEJNbmRFTWpONU5IRmFjR2RNTlRsRFUzbHFORko2Y3pWdUswMUpSSHBpVEdwRlQxUnNPVk40Y1VWM1ZtNVRlRUppTURnMVZIZEZUVmhWV1hsdlVHWkNSM05wVVRsWmEwdG1OVEJFV1VZd1VEZEJVV2R2YjBOdVpFNXhVek54YUZReGFXWm5OelJUUmxrMmVuWk5OSFJDZFRsclpVcDNRM0p6VTBsQ05HVmxXbmc1WTFWTFNIVllhR1ZuZGt0eGVrVlBaWEExWlZabU9IQlFiMVV5VkhOMmJIY3ZZamRFYUdOSlVqZDVPRVZRZHpOeVFrRjBibXhPT1hOUVJVbDBUbHBqWmpoU1NXRlRURmxuVVhKeFREbEtOVklyVjFwWmF6TnplVzQxYjNvNFQxcDZjRFE1ZW1Vd1NHaHFObmNyY2pCbVIyTklaWGx4YTBoQ1pqRnFiR1ZTVVdjemRtcHlaV1ZoYkVkSGIxSktNakUxT0V4b1l6ZFlOMVJvVUZCWmFtMHlkek5PTWtkM2IxZDFVVFZ0VTNOcFJXZFpiRU5uUXpZM1prVnJRVGxuZGlzd01GRlZkbXd3VEZGS1ZYTlhOVTF1Y2pKYU9GZFVSamhxYldKSVJVZG5lRkJzZGl0M1JXaExUaXRqTkhKRk16ZEhVWEpRZDJGRGNHdGlRbFI2V25CVk5IVlRkMngzWlVWRU1teEJZMFF4UlRZNFVUbDZOblJpTlRGNE9WZEhiRVJSVGtocVpsVm5XbWxETUhFNVRsVklhM2xoYTJkelEyUjJjaXRzVVdjelNYZGFlRGxuUzBsMU1taGhiVTkwVlU1VlkyOW1Na0ZETjJWUWIyTmtjM1JUYkZoRlRrWnJaVE01ZEhWTFRDdHFOVU5xUzB0c2MydFplR2t3ZFU4MEwxZHdkVUoyTVVKS2RVSjJOekZCUm05elMwWjRiM1l5TVdnemNYZ3lVRVZ3YVdKelprWXpSVVpLYWxCeFltRXdVQzlSYm13eVNETmpialZyYlRFNGFFUkdWV1ZTTHk5TFV6Vk9lbVpMZDNScWRYQXlhMUoxTURJclFVTjZSM0JMYkM5QmJDOVZSQ3RFUVVaS1RsWmFUa3gwWkZob1ZuRk1WR2hJUmtvdlVXdDNiblpDYVdkMFFqVkNOWHBzV1c5VFQyOVRORlZOZEVFMVIzUktWekZwY0U1blkwTjBVWGx4Wm5wSFRVVjBXWHAxV1NzMVlVZGFiM05VTlRsU1ZXRXZiRGRyZDNscWFEQkpZM0JQVVM5RldEY3liU3QyVDFvMFNXSXhkMmRSU20xRmRtaDNXRk4zUmtadVVGVjRVVTlWT1VSSFVqRlpSRzkyY0ZnNVRUaDNZemx6TWxSalJYQXlUR1ZxYm1kSWNHWkhla2wzV1ZOc1VHNXRjMWszY2xaalFubG1iM2hNV0ZCS09FcFRlVkJIU21JemJrNXlWRE5SV2t4TGREY3pRM0JXYlZVell6UTVLM2RJUVV4U1J5dGxUMFJNZUc5RFFUbGhNbFJUV0hOVmJGTkVVbGhuZWtGUU9ETTVUV1F5UzNkUU9ETlJZM0JzU0ZkdVZXWnlabFpESzNOSlFXdFVRWGN3YkRKbWREWm5WSGhLYzJoelFYcHlTSHAxTkd4NlpHSmpObFkzY1ZOUVpVWm1lbkI0YkdreGNFRlRUSHBTZFhWTlEwRlRRbFUyYjBKVlNWRktSVEpIUm1wa2JGSnlhVGRaWkVoUVdXUlVVWEZEU0RNd1NEVTJTMjV6YVU4MGVVTkRlRkl6ZEZReE4yVktlV0ZUSzFKallrcDZOSFZCWldSS05HbzJOVnBoZUZGWU0yaGpiR2huY0hvM1RTdFdla3AxUVUxalVGQlRSMUpwYURoVVJHRkhWRzg0ZG1ocVduTTJPVzFMVTBwTFpEWk9SR2xwYmtsMVptZHBMM1JqUXk5dlFXOTJUMU0xVUZSa05GRnlaekJMTUdoV1FrSlhjamRyZEdGRlUwUjRaa054V0dNck1tVndUMkpSU0hCcFVWZzBabnAwTlZvclMwVnpTVUpvVkcxNWN6ZFdUVGhDTWxwSU9YSTFRMDFMZEZOVGJuRXhMMFZ4YldaWGVtc3paMVpzZUhOSVJFSTBhSGxPVGtrM1pHRmFOVEF3ZDAxWVZXRm5aSGs1VGpCc1ZFbDJPR2RuVEcwelRFNVljV1UwUTBOVlMzcHBlRWR1VW5kS1FUTXhMMkZ3VUc5cllpOURPSEV4VkhodmVGSjBWV3BoZDBaNE1rWldRbkJPY1hWVlJqaG9ia1pQVEZJNFRHdFdMM0ZFTkZaWmRtUkdXblp1WlRsdGQyOXVlV1IzUXk4eldscEtablJWWkRGcFdrcFZiaXN5WXpscmRqRmlNVVkyVTJNMGJuRnBkRzV3ZUVKTlpEUk1kMGxVVFhabVZVTkxNbUZzVm13NFNEaHNWbWt3UkRoRUswMDJSSE5oY1ZWc2RtOUJkMU5SVFRkcVVHZG9hMk54ZEhWR1lsWm5VeXN6VURKd2FFOVZURGhKVDJsclQzUkZXalZCYlZSbmNGTXZOM2xtTUdoUE4zaDJXbkpOV0V3MlVrOTNVVVpMVVRNdllTdDBhbE1yWVVkVU1qTnlhSGhDZG5Sc1FrWnJRbkJPUTFSclRXSkVZMk54TVZOSFpsbHNlVUU0Ym1aWFNXbEpMMDVsYW14aFUxb3hOemc0WjA0dmNtUTRiRTB5YkN0Wkt6QkVaRmN2YzBoaGEyTmpXVFJrVDNVdlFXMVFjWHBKUkRSd2NtMVpRVkZIYkhkbGJtUkhVRUpWVldkMVV6ZHBjeXRNVDJWTWFrcElhM2g0Y2tJMEwycEJSMFIyVEZOS1kzSjRNME51TW1OSVJUQlBWVkpUVWpWbVVYY3JjMmRPTWtkNGVWazJjVFpwZVhsbk5tVjJibkowVm1oM2IyTXZaa1IyTlV0eU9GaG1aWGs1TnpGb2IwdHRjRlZaTm5OV2VESXZSV3huZFdoaVRHMW9iVmhEY0djMWFqSkRURFpEVDBKV1JWazNOQzk2TlU1aFFXMUZkR3hXY0ZWV2JFMXVjSHBrTm1sa1pFUkxZV3hKUzNkalIyNU1TVk4wZHpaaVdEWkhWR2gzWkhacE5GVkZVR1ZQUlc4NGRFWTRUVXAzVW1ac1pEQlpiREpwYWtkbk0wMHpXVlo2VXpaRmIzRnFRVFpoYUdwUlkwSmtWWFpvU2tGaGJuaEhaM292U0RSM05FRmpMMjFZVDB4cE1uQnpURXA0TW5CWlNtODVkR0kwVW14Sk1rRXJOVkZpZVZWNk5tSnpUbUpLVFZOVU1ETk5TalJvU25sc2RqUnplVkJNTlVodE1raHRTamMzWW0xNWQxQnJXV3M0S3k4M1dUQkZMMFpzWTBwS1NtOXRhbXg0WTNZMllVc3diMUU1YTFSRk0wVXZhM0JsYmpOVmQzWk1NVWxXYUVGM1R5OVNZalUwYlhvclMyOW9lV1ZKYUdzNVVEUm5RVGhRZVZOT2MxVmhabTF5V0ZwT1pIaDVTemh6V0hCbFpHUlNNbGRqU0hKR0swVkhNekpHVFZaVE1YaFJjVGRuTms5V1VuWTVkemRITDNwM01tOXVORU5XTTNwMlNrTjNUelkzVVRSWlEyVnljV2g1U0hNeGRqa3dSbGRWZFRoMFJGSlJOa3AzUkU1aFNHbzRUa1ZHVlUxRlVuVmhUMGx3TlVwVFUzcEhObmRLVWxodVNEbE9VWGx0WmpaR1RIaG5RbkJSTUVKUmQzbFBSVEZ3TjJVMWFrZG1VVkF2VUVsck1FaHpWSGRKYW5wVmFWQndkVWx4VEhwalRWVmtOSFJqV21oVFMzaHdURmxvVkdoT1duaEhZMkl6VEZsdmFqQlFTVlIxZUdSbmIyTnRjMFpJVFV0S2JGZHNWSFJ1UVRRM1lTdE9URmxqY21oMlIwUndlamRPWm5sUGVXOXZhVXRCY2pRemRYVkJSVGxqZW1OaWNVSjNWa1l2V1ZwSk9UWlRNbWx4U0c1UVZsSTJiRWQyWjJJeGNISllVVU5NZEZsVVVVd3pjRUpKTjJsSFRFMDNVMGxSZEdOcFlqSnlUbVpKVjFoSE9EVTRTMHR5WjFvM0wwSnZSVUkyVkUxU2FWRTlQUT09IiwgImFwaV9rZXlzX3Jlc3BvbnNlIjogImNTczJVVWxNVldjMU1UVnFXVUY1T1d0MGNGUk9VRUVyUW5WNUwySnJVbFF2UkZGdFJWUnJWM3AzU0U1UlNYcHNTR0Y1TTNrMkwyOXdPRzkxYkhKM2JGWlVSRVJrYUU5UlZVeGxkR1Z1TjBsUGFHSndkMUF5TldWa1VGUmpUVEpFUm1kU2RHSmxNRWxoYkc5NVZ6QllabGxKYTJ4cmVWUk5kRk0wSzNORlVpOTJlVFE1YkRkc1RuY3pjMk5zYUVKV1QycHNSR3AwYkRWUFZXeE9ORFZvVVhsSlNqUlZTVVJNUm5jMlJVUXZja2RWV1dGbmRrTlhiWGd6YldGekszaFNUbVZRZERSTVozcGFha1YwYmsxdlRUUnFURkJNYzJVclVsbHNlRGRTUVU5SWNuRnpRek52V25Gb1RESmtaMmhyWTBGSllqbGthVXhvTHpaUWFTOVdNM0pWTnpkSGFsUTBTMGhrVTJWdVNUWmlOalJTTkRad2NVUm1VMFF3U1RBcmRWTnRkamwwVTNCbWIwdFBVV1ZNVlZnelRIWm9WVVU1WWxGMFMyMUZjMnBSVjFkeFQwNWxTR2w0YWtoeU9URkxNMWsxSzFOU2NtYzFjSEkzUkhod0x6ZFVTM1pIV2pJNWNESnVORUpCZGxCSE1pdGtZMW93YWxkME9TdEpTVkZMVlZoaWFrTnVTVEJZUkRKdE1qQkRaRUowZDBFPSIsICJkbHNfY2VydGlmaWNhdGVfdG9rZW4iOiAiVUVReFkwdGpSRE0yVkhZMlFVNHZLMEZSUWxZd2FtcEtWMWRrUm1WclluTjNPV0phU1dSVmJESjVNMDVSYzNacmVUVnZkMDltVUZSbWJ6aHVlRnBHWm5Sc1VIQTVTVm8zV0ZoU1QyeFplR0l4YTJ0dFRsQmlNalZ1T1hjM2Nrd3lWM2h2Ukd0NGQxbEpiMWxuZFdOWWRYWjVabVZsWWtGc1pIaHlabnBPZFVodE9URnpjbEZZVkdOdFYweHZiMDl0T0UxQ05XeHlaRFJ6Vm5aTllXRTJXazl3VDBwdU1URTJXWE5UUVROSVpuSkNaeTlxZERObVdrWnNNRXB2UlZJM05HTnJOVEF2VVhSRWJ6SmljMFJGVkZob05IbHBjM2x2UldSdlNFbzBMMjlRUm04NWVVUmhNaXRvVUZob2NWQXJkSEZNZFM5T2R6WkJkbkp1UkVweE1HOU5ZVUpLVlUxMVJHaFRjMDR5YTA4eE1XcHBLMGxzVDFwSFJHaHNVMUJQWjFKak5rOUxLMFFyU2tOM05tVkthRUpSVEdOVWJqWTRiWG96WW5neVpXUkxTMFJRT1dSQ2MxTmpZbkZsZW1KVUswRTNhakU0TjJoRVprRmpSVUZEY1d0UWExRjFTRGt6YkRWWE5TODNVM2RUWjJ0M1ZWWXpValZrUlRKSFdHbFJSVU5PYzNjdll6WkhaM2RpYjI5U1RVZGphR1Z2Y2toeWFqWnBUemt4WmpjMFMyWkVTVUZQVFhSSFpXUlhkbWx5UTFwMmJsRkJVRVI2TWlzclFsUlZaRkZRUnpVNVkyZzNlV2x4VGk5Q1VHSTVNR1JyUjJjMFUwWTJSbFI2Ym5CaWNWQjVhRlIyVWpadmVFcDZVRzVhVVdneE4wbDVla3hWUWs1dlkxWlVTR1pKUm1Sd2JFRlBiVW8wTVdFeVJtcFNSbmRpY0VkTWQxWkdhWGhEUkM5bWR6ZE5XVmt6TjBoUldrSkxkU3R4VFhGelJubDBXRmszVFdJeE9VaHdlVkF3VlZodlZUZHZhVFpOTW1GTU4yRm5TelIzTkRobVUzSlRXbTlsT0dKdU5sSkVVa2RwTDJodldtaDFhQzlWUnpadVZVUklhVmx2ZFZOc1ltTmlVbTB2VUhONGFXVlZjRzR4WmtGa2ExSlBUVGhFUWxGdk5EaHpMMDVoYlRnMWJESnpPR0pLTjNoM05tWXhOMWx2UW5KRVFUQk1WWGMzTTIxM2FrSk9TRmhJTUVWU2NIQTJjWGxyTVRCMmQxaEVRWEZXZURjcmFrbEVSbE5OYW05dldEZHZTR1pVWjI4NWVTOUxjSGQxS3poeGFTOUNOSGR5VTJwbGJXcHViMjl4T1hCRU1FMVpSVWRsYlRadGR6SXdhMFJNU1hvMWExQTFlalV6VDNORkwzUldXWFZ3ZEhKRmEyUkxVbkJsZWxwNFEyMU5PWFF2VnpkMU15dHhSMWRWZW1jM1FrVkRjMU5qZVdOTWIwSjZTbUpaUkc5Q09DdE9jelJCYUhsblIxVnRTM1EwV25weUsxVmhOMDl1Y1dKVFRXRkpPVE5pVmxweFZFTm1NbGhGTVVOVFpsbHdaaTkxTTJ4MVNsVnpiVUlyUXpaVGNrNVVUMWhUVUdJek0zVXlTVkIzVEdGamFqWndkVmhITTFsWFlXUXZWSFUwTWtacldWaHFNbXBEYjBkelZXa3ZlREkzYVc5TlZFYzJOMHMyZW5VdmVuQXJVMkl6YjNaRFkxTTFWa05OVlVScU9IQkljbVJxUkdoaFRrOVZlbUpwU1hkbFpFUXdVM1Z1VG1GeldsUm1aRGhPY0V0SlNqZ3lXa0ZITTFCeE1UUldiRGhIZEdkS2NDOXVNV2RoUW13NVF6QnFOSHByVEZwSGRISlBhelJtWVRacFJqVkNiV2wxY0RGU1ZsRjZZak0yZDJ4eVoydG1WM1UwWm1kNFVVbHdaM1pJTUU5WFptRlhUVEpyTDJoclpVTlVabkJVVGpGRE1sQTRha2MyUkd4alZuWkxhbUpzYjA1eU9XYzRjRmhLTmtKTldqWlVVRTFwUnpkblVrWjVVbkpWVm5OcFowRkJWSFJyY1ZWeVdVMDJNaTlwUzNKcE0xbHBNR2t6UWpsb1JYWktUa2RITVhJM09XeHVSRFpNVjJ0UWJWZElVbk5ZUTJSb1FqZHlibGhQT0dKUVIwaFZiQ3RrVmxGSUt6TjFlbXRtWkd0S1NFaGhOVlZWV1hNelpEUnBVMDUyVUU1R1preGFVWFEwTmtwUlZubHBiemxhWWswMmJYTXdUME4zZVhSeU0xSnJMMVpTVVVVMWFsRTBkVmx2UzFacWVIQTRZakpvY2pKelRrOUVTbGdyWVV0SVREWXJWWG95TmtOM1YwWmpWbmRMWjFsNWNUTTRhV29yT0hoNk5GUXJOVVJDWWpacVQybHZlRkpKZVUxWE1tUllZelZTYWxKWGRHZE9abnBhWjJSRlNrWlhSamt5V1RKQlpHbFFPRFkzTVVwbFMycFlja3RxTmxKVmMySkNWV2R1ZEhKSFNFZEpRM1JTYkZSUFJsY3hVMEpIUkRoTFIxSTRZVUo1VGsxU1VreDRiRlZ6ZFRCRWNGbEhOa1JFT1M4elZtSm9jR1IzZEdaMVQzSXpVMmRNUkVwcWNIQjJVWFkwZFhCeFVGRlhLMjlCYURoU1VWSkdWSEkzTDBaVWFWWmhXRkZaTkhjMVJYSndjRFl3U1ZONGVqRjFkR2RyT0ZsM1prNWFZVVZQV0VvMGNESkJjbWhEVWxNek1GUnlVMmh2ZERCRk1URTFZV2t4Y25ONFNWbHdaMDVxWmpKSldUQmtUM1Y2Y25CRWJXRnNNa0p3WkdveVJuZ3labU5NVGxOUU1WaHJNMGNyYzNONGJVSkpkRGc1TmtKTldVVnhhelU1TUhCcWNHcFVlbWh1U0VGaFdIcE1WRVJrUzFKUFJsSlZSV2c1VDA4elNWcGxSelJQZEdWUVRsTmhkbkZwV0RKSmR6aFFaMmd5VG5GT2MzRnVPVEU1WjBsUFNuUmtaWEJGZFVSQk0yOW5UemhDZEd3MFdFdFFjVVJKWkVsaGEwdzFOVVJ1ZEM5TWFXcFZaVzFCVTA1UFJqUjJiV2s1V1VjNWNVRktkRkpxYlhoSWJFUlhaM0JrU0RWd1N6VnhjbGx5VGt0bU9EbERSMUZVUVRKemNYWnliMWxGUVZKUFRUSlpRMVFyU0hwMU5rdGtMMlZYYkhvM1pVZHVkVW8zYWtkS1Z6ZHhUbUZTZFc0M05EWldZM0UyTmxsbGVWUTBTbElyVW10YWNqbGthV3hoV0hWeWMweGpRV05TZUdkSVVDOXZWMk0zZHpGb1NUZHJUVVYyVW5sSmJVSjRXV2hZV0VGM2IwWk9WbmwzZURaRFNXTmxSbWxOYVdvM2FrbzJSUzlYTDNCYU5HdFhOMWxsTDJSRFlrbzJaMWhLT0U5MlRIZzRZM1JqTUVkc2VFMDJaMGhGY0hCM0syUm5NVkp0VkdRNGRWVlZOVkUyY2pKdVF6RXpiR2xOU0ZWWmRIRXpNR3gyYmpKdWVHOUNSRkpDU0VKaFZYbGhiMlZ0VEZONVMwRktURXRTUW5ObVNEUllPSG8yUm1KaFVrWjBNV0Y0TUdSb1JuTTVTMUpoT1hKR1NtUTFhbU5ZYUhkU2IwOU1RelpsWjI5dU5WbGFTVVJsTDJKbU9EaHNUMUYzWTFoeEwzVkJReXMzYm5WMWFtUnRSMEZvVmt0T1dWVTJhR1pXYkZwVFptd3JNRE5qTUV3MVRYRXpVMkZCVFdOclRHMVlhMG8wZEhGcFNVdFdkMms1VURGdWJrbEhLMUJoYTBsVE5GVk9hRmh3V1RBd01rVkdjVEZXTW1sc1JHRmtjWEJ6TlM5b2IxQXhSRkUxVFhabU9XZFRSbXd3YkVWbWRGUnhUa2xOYldkWWVXNXJVVzgxU21ReVJsSTJNelZxUmt4MWExaFNXbEU0UVVJMWN6WTJhRlphTlZSMWN6Z3hRbXQ0YjA5S01UTnRNR1pSVVVGMVZrVm5jV0ZaYVV0alJtMXFNWE00ZFVGeVZTdHRSbTFqUWtJdmRtZzNNVVkwYkVwTk5qQlVWMFJJZUVVcmNubHhOemx2ZVRSeWJUTXhTREY0TVdndlNEaGhjRUpwVjNaQ2RISnNRemhRWXpWUGJWQnpORzlyWkhKaGJXdE1kVzVsZEZKU1ZYSndZM2RGVDNWTFdYTTFhRXh5UW1sVlpFdGxTVlJzTkd0dldtcFJSMWdyWkhnMFoxcDZURlpxVlZCUGR6UTJNSGhVZW1OTmIzaGlNVTkzVVdWbGFuUlhiMjFxY0RFcllVOXdUazVMTmxCMU1UWTJORWxZTDBRNWNVbG9iVmhMYmxKdVkxQXhWVkZTUjFOSk1tTllNVGR3WTFSa2FUVkxNV0ZLV0RGalNGWnhVa2xVTjJob01WZHFjVVVyUkV0eVZFMVdNVFV2WjNoVk56Sk5NbEl3SzNwMVNrRnpNRlkzVlRjNFpXVTRhbk5wU0UxS1FtVnFNSGRVYVVneEswTlFSVGh2TlZKd2NYZDFPVzgwWlM5SVRYbHBZU3RtVFV4aVpFSnBjRWhFWW0xTlYxcDJUMmRSYTNkbWVVNXNaVFp6TVdKQ1pFZHRibFp5Y2tORlRtVkdNVkpoWTNrNWRGazVkVUpNVjJNNWRubHlUMUEzVkhac1FWRlRSR0ZsUkVZMGJWWlBLMDFRVVV4NU5XaHFWbE5XYml0TWJFbHNla3hRVlRGelJucEdVR3N5V0VGaFMyVnBOM2hJT1daV1luUnJZamR5TkVkWlpVeGhRVlJRYURZeE0yTlNVRmxTZGtGYVZGTXhWRzkwYW5saWJtWkdka3BtWVZkak4za3lXSEJhWTBwYWRGcFFZMDlKUjFSTVRFSnVNMmhzY1hObFVVNXNOeXR4WVZaelRHTlZjazVsVW1oU1ZWQklMMDFSUWxoNFlrWmthVEJWYVN0c2FsUkNaVVpxTmpSclN6TnNORWt3T1d4NlREWXJjbWxPZG5GSFozcGpiVFZEVkVFd2JrY3phVGRwVTBWWlpHaEhOMFpFYUdaMmNTOWpjM2xrU0RkTFoxVm9Wa3QzUVdGb01sUmtXVzFtZVdFNVJXeDFTMGx0WkRCWldsVkljRkV5VVRCNGNuaEViVXQxU2xKWE0wcFVaVFpxTlZSaWRUQnhZelpqYW5KSlMyTmtPR2xrWkhOamRrZFNSRXAxSzNKNU5Yb3dPRzFsTlRoclRFdGhabkJuVUVnNFUwMWtlR3hrWlU0M2JFVmlRMU4xWnpoeFdpOTNTRTFKY0RkUWVWWkxaMjV3T0d0dk1EZHBhVTlJV2tGUk0xQjJhMVJKWjI1S05uaFNPVzVQTW5Gc2FtVjBNekJOVmtoYWFXcFBkR1V5VFhGNFVHMUpSM0ZXVW1SWWIwRmxSRzl2TTJkaFJWcHdVVVJFWTJ4c1RISXlZamRKYTJOaFpUTlNlRVI0YUdoS1FtZHNWREJVVjJaNWN6SjBiVVl5T1Zjdk9IZDJabkl2U3paclJGSnVUakJhT0ZKUFRtcFRZVGRrUkVWdVpFWTNjeTgzVm5KbGFucEtSVTFTVkRFd1FWUXhlbVZTTTNObmNVcHhiRXN2YkVwNE5sRkpkR1ZzTkhsQ1QzaHdkakJ3SzJadFpVUnVWRFo0ZVd0TU5rYzBla3g1VjNoVGVHbFpjMmR2UjFOUll5OXljVkpOVERabmVuRjRhUzluTVdGYWFrVlVWMU50TTFBelpUSlJRV0ZFU1RWdE4yVkdiV3BEWVN0SmRuZFROVE5NUW1OWmRtMWxiV1JTTDBrdlUxRnpTRmt4WlV4QmREbElTbTFIT0d4WVlucG5ORk5ZWmpkNlFVWmpaemh4UTFGTk0yWmhjbVZIWldkT05UZFVZM2xFWjI1MmJEZG5PRzVLZEU5aFUyTllielpMVTNOVVRYUjRRbGhZV2k5QmNFdEZaR3hwZEhCMGJscHpNalp4YWtsd1pYaHljRVZYSzIxRFpFUnJlVUZDT1ZkTGVqQnNibWRMVEd0TmQxWmFRWGRSVkhKeVEzSklPU3ROVTNvM1FURTFTRGMwWTNGSFV6QnFiek5wVGtSaFJsQkxNRVIxUm5sWk0zUmpkR016VFRKcU5IbFJZV2RDTVd4aFNscGlVbkV2UkV4MU9GcENWR0o2VFVwaU1qWmtPR2xWYUd0d2NsVmpMM1l2V2pWWWVFbHRSbEEzVGxCbGMwa3paVkpPZVRkdFlsUnljMUZMUlN0NGFYRXJlbXR3UlZkb2RrdFdSV2c0ZEc5amJFUkRUMHBRT0M5bWFIbzJhRmRpTWtJeFl6WXhRa28ySzJvd2F6RkNXV0p5TUVKYU1UUTNPUzgwZDFCdWNIRlBibWh4VW0xc1VHZEtTMnB1ZVVSSGVuUlpVMDVHZDJWaFNWaFFkVUpDYldKU1ZUZ3pUMWxKWW1GM1ZsQjRUMmt2VkhKelJWbEdkM04yZUZZd1RWTmxSWE0zT1haWmIzaERibFp5UlVkaVNFZHhlakJ1T1VReVlqVkVLMk12ZERCbGJVSXdUVWM0Y2xWNlkweHdPRmxIYVhSc1VGaGtXakZZU25Cdlp6TlRaMkpSSzBodWMwdE9hWEkyTVhGSWMxRmlha3RXVW05M04xUldSMmxSZFhnMFlXRkZWWG92Y1VablVHY3ZVbVJOY0daVVpIQk5OVnBIU1haaFdrZFVUa3BGVTJZNE9VOU5PVFJZYm1Kd1ltWldSMmR6WTBOUE4yTm1UMm93UkZoSFMwdzVTVnBVZWpGMFlVTTNNRE56TVZoSWQyVlRRMjlhUzFGT2NEVmtibHBGWnk5M1MwdFFlRmRMVERkbGNWZHpkVXQ2U0VGNk5VWXlMMEUxSzNFMmRrWjVjMlpvZERRM1ZUbFJkbkpGYUN0SVRVd3ZhelpoZEhsa2JVeHBVMkpWUzJVMlJGUkVWelJvUXpaNFdYRlVhalpCY3pKbE9HZG5UMk5TTnpOQlp6ZFliVGhTYnpGcmFtNVhXbUV2SzJaR2IzVmthVk5QTm5sdlYyWklkMDVUVURGYVMwczBXVFVyTlhOU2RXMVNVMDlGU2swNWJVcDZhRUZ1Uld3clZYVjBiRTFQUnlzMGNrMTVjVEJRUW5WUU5reFRUbFp2ZEdWcmRIZ3lTRVJEUXpZdmNWSTFjM3BvTkZobVRtRktNVE5QVUcxc1FrSmFkM1Z2Yms4NGFHWkliWGxJYlhGWU1pODJhMjF3VDFKelVWZzNSVmRzTTFNNU1XOWFWSFJwT1VRcmVuaExhMWRZY1hWcE1qRmhVbEZWVjFGSmJUTlhiSFJLZVdzMlZISm1kRlpIV0RobVVHdDFlRVJOVjBWRGVVTnRiV1pMUVRCRWJGbFlhRzFuTWs1SE5scFJaMWRNZUVkSGREQTFUbXBGZUN0RmJWUjBaV1JRWkVJelNrRjVlVFJIVkZOSVQyUkNZWFZvUmtWWlkyMUlMMnQ1VDI5U2EwZDZWR2h0VFRSME0xaGtjR1ZFYVRseGJHTkxaWG8wZGtsVFdESjVRVlJFU3pobVoyVkhSV2g1VUZwVFJqWklaamhKVG5ScWFYSjVhR2hETkd0aFJ6YzRUbFJzUVZoaFMweHdlVXBhWWtvMk5rUXJOVlpyUkRGMWRGZGtXWGRSYUM5bVJVRk9TV2h5UVVad1pWbHpUVE5tVERaalV6aElORFY0TWtwRFFuUXJUVEJPVWsxcGNHMVNlakUzTkdKclIwVTJRa1IzWTJoalVIUlljbmh4YzJnM1ozVmlZWEUwTkV4SmR6VjNNa3hLVTJadmJXNVpPR1JtTW5aRVUzTldLM1ZKVm01WGJuZ3lTRll3VW10a05tOUtSa3A2WjJkaFJpOWxSMVI1VDB0eEwycFpkVEpDZDJWbGJTOVhTMjFLY0hobVUwTnJlbFpDT0ZkUE0xbGpUbmt4UTNWR00xTm1hRmM0V0RkUGVHZElUV1l4UzFWVE1WSjJXRTVrZDNWak5qZFFVMDlKVERCNFJTOTVSV1YxYzJ0aVlsUllNV2wyVDJKSVUwVnVWamszU0VaYVUyOTNSV3hyZFU0eFJrUlVTRmhEZWxWUVkzZFNUMWxZYTNnMlZXaG1kRkJzY2pSNFJIbFJiV3hoUTFOVU1XMTBXRVJRV1U4M2MzbEtOa3RwUjA0emIyNVRha1UyZEdaT1VVWlRVbWg2WjJVMlJrd3hkVVJuVW5WUlRtMVVjVlZzTWtsdGIwSk5ZMlZwT0RjNFRHVXlWamNyVW1NMk1rTklTMDlvWVRaYVRtRktTRXBNTkRGUFIxUjFjSFEzY0RSQ05uSlJhbEpsY0hNdlozbHNaSFZUVUdWdEsxWkdTblpSV0RCdFdYZGtRVkoyTjNwU2RVTjRiRGhoZUdVNVZVMUlUWGhVYW1adE5YcHJaakpPUzA1d1N6RnFORzh3YzA1Q01UQXlVM0ZqVm5kRVMxaExOV1pHV0dsWWRVdHFWMjU2WjFNMmJHbExRbXhST0dWWEwwRTFRelphY25CNVQwMHJkMHh4ZEdocE4xRTNNVUpMVEZCeWNsUnVTRFF6TkZCVGRqTkhlbGREWnpZeVptbHdhVmxzWlV0cmRtaHFaRkJFZUVKU2RraDBOMmMxU0ZoSFZpdDRSR1p1YWpoMU0xSkxZa2w1V1d3d1dWQXZUbnB6VlM5V05FSmxlbXBxZWxNd00wTlRkbWR6UkVsV01YZDBUVEZ1TDFoamNucERkbmd6Y3pSaWJIQkxSRmhvVm1ndlVWQkhaUzl2WkZjMFYxSldZa0o2ZDFWeVkyb3pPRzgzVVZweGFWaEpabXc0YWpSNlNHOU9jRXRZY3pBMlNVSjNiVGhQV0dRMU9XWnJaMHRCWlM5RFlYbHZhM0JJTTJKWlp6UnBRM2x1T0ZSNFNqZGxVVE5SZDJKbVRFUlpWamt5U2t0MlpGWTJSemcxTm05aGRFNXZXRFJrYTFKU2NtMHJOVmt3ZERGWlkybFVhakJMZEZoRGNXNWFNMVpUY1daYU9UbFFkbUpOV0ZkeFVIY3hLMU5IWWxoYVUxZHNVM2RXU1dWVVlWSkJZazR3UkZwWFJIRkdiV2h4UWtWUFdDOTNhVTVITkhwd1lqVm5abU51YVVoeGNuaHNSM2s0VjJRNFEwOUVaM2M1UVM5NGFWZDVUVGd4YVNzNFNWUlpSekZ0YzNGRmNHRTFTRlJMV2xsd2RFTjNUV2xwTUhoUFYzWmhXalJYUTNWVmFtY3lPR3BzU2xrdmRsRXhjVE01VUZoUk1GZHZha3BJYVRWR01Ga3dZV1k1YWxkTk9YQktXRXBLYmpGT1ZWUkRWVlZTTlVkek5qVlBSRWwzT1V0SU5FdEJaVWhNUjA4M2FtNW1WMk5xVDBsT1UyOTVVMGxOUVRjdmNXdFhkMlo1ZFhNdlJURnZPREJHYlVsNFYwOXlNU3R5UzFwd2NqSXZhbFlyZFRkR1Vrd3dXVkUwU1dFM1RFWlRSSEpGTjNjMmFEZEtOamRCV0RKTkszWkViVFJaTTNScksxbEdhRmhvYlZCRFZra3ZUV05wWWtZMlpsQXJVekpCV0hGcmRXaHdhVVY0VGk5VWJXdGlaME4wTTAxQ09FWllMMU5TYUdwaWJqUjBjamsxYm1oNmNuSlJVMFkyVmtOYU5Ea3lkR3BJYkRSSVkxRlVhVllyUnpOdk5FVjFaRVZrY0RoSVoyNW1hbTkxUWpGeU5rUjBVVWRDTmtsV1psY3ZNalF3Yld4eGVrOXBXSFpuVW1WWWJEZExOeTh6WnpKRlJFNXVXbmxLUlhaNmFHbE1iMlpIYmtoaFIxRlFVMlZ0VkdsU2RGTjJaMmwyU0VGcVdIQkxieXRZTUU5elRGcHBiMnhwY3poNmFtNVZUbFZFTlhCVFJpOU1hMDlZVURSTE1sTnpNa3d3ZWxoRE0ycERNbXBzYzBsQmVYb3hNakE0TjBkWmFtSnBSR0oyUTBKd01uVkphMHAwTjFsT2JWSlJlR2xRYjNodlJGQXJiV2hVVTI1aEwyY3ZSMlZTY1VsSkswdE1WM28xTldkTlJtUjJXUzk2VWpsdk0xSkVMMFJ3ZEV4RGJ5dDJkaXRHVkdSSWFGVTNjbGRWTDA5bFNYVnFkMkl3WkdGc1NVVTBORmR2T0ZGWWFUbDNSMHc0YnpSc2VGQTJOVW95TVdGb1NVaFBSSEk1TTAxa05VeGlUMmQ2T0ZKNGFtZ3dUVGxsVFVGTFpHeEpZVzAwVG14SGVHNHpTVEpuYlVaR1dXbFdhbkpLZEdOTGFtZFVkR015UVRCcVVWVk1XVE5sTjNwa1QxQkZiMUZzWVhSdlltUkJNMWh3TUVsT1VVWXZORVZOWjA1NE9XTnlhMVJxWlZNMFZuUnhXV0ZFU21NNWNWWTFTVEF2Tm0xWVprb3hWblUxWmpKUldtRkJZMmM1Y0VGdFFqZDNXbEJaVkUxaVFtUlJhV1I0YTA1UWFVNUdOVGRJVkUxRlNUWm1TM0oxUkc1RFFWVm1OMHRTTkVGR1ptNW1UWE5RY21WQ1VVRmtaMGh2T0VKR1NIbDJOa0ZXWVRsS1VETlZkV2wyVDFZMVIwWlZkVzVYUVhGRVlscE1MekZUYVM4cldHcHdiRkJvWm5KYVNFMTNVRkIyUW1GcWVIVk1LMlZDWWxGeGRESnhhbE55UkVkb1ZHVkpaemhQTkcxc1RYVkpXRkZqWkU1RmFWaDJiMGxpU1VRMFNrdEVSREl3TUhjd00zTkpSRUoxY0d0aGFtdG1XR2M1U1UwMWVHUXZWR3BzYVRkU1RXUjBkVWc1Y0hWSFFVRlZkMnRrUkRGdlZXSlBhMmRwVG5oT1JtOVlXRmR1ZEV4U1ZFZDJhRU5JVVRGbGJFWjFNR2hJZGxvMlMyeERiMlI0Ym1KU2EwaEhjMDVCTmpCTlZVNUNObU12ZVVZd01HdE1UVk5MWlVSVGJGUkNZV3MyYms5R01WVjBkVlpEYzNSTlUxWnBZbTU0UlM5UGJWWlNNVUl2TDFwVGVqUm5NM2xMYVU1YWF6Qk9Ra1IzUm5kaWVHZGxiWE5TYVhGS1QycHViSGxYVHpRMGFXdEZkRXgyYjFWdVJVeERSMWRsYmt0Rk5UWk9VVFV2Y25waVZraG1ibTlYUmpOamNuVkNjeXRwTjB4WFkwUlZSRzR5Ym5vNVNsSndSVXMxWW5KNlJTczBjR0Z2ZEZoMVlsQkxkRzVwZFRscE0yNTBla2xwSzNSRmJXdDBhR1puYzB0RVpGazNXRlZRTkM5V1ZFVnhaa2wxYkdOVU5HSnVSRTluWWl0cFYxSnNORTFZZFdNemJDdENTRVZsTkhCSkt6SnJjWEJMU21Sa2RFeFJjbGRqYlU4eEszWmFaMjVUSzNKMVVucDBSSEZyUTBGbU0wOW9iSEEwZEhSdldWQXJkM0phYVd0eFFtcG1VakZ3YVUxQ1RGbEJaVWxrTTFkTE5VdFFhM05YYzFCemFYQjRhMHBhWkdscVEyOW9SbGxzTURReGNEUmxaV2hVUTNwRk5EWnJhMlZKYXpGNVozTjNiRFl5Y0djMVpYazFSMlE0VWpSblpUaDZOVWRoYzNBeFVuVlRTM2w1YW1GTWFtcFJXSFpxUWtkdFFYRkpXbmgyV0dKNWNURk9lV0pHUjFNeWFqVndaR3hVVjNSMFZIUkZaMnBUVHpjeVVqQklZMHQxUVZsS1JEZE1VMGgzWlVkWVYxZFJOVEYxTmpGTk9YaHJaVlJ4Wnk4MU0zY3phVlpYVGxGUVJtUkpRbGx4YVd4Wk1teFdNR1ZYZWs5eEwwcFFTSGxFZUdzMlVYQTJVR1F5YmpkbldWUm9VMFJvWjNCeWVsbDBTRVZWVGs5aFIwNTNPVVJ0YTI5bWQxRktkMWxIU1daUmF6QkRSRmwxTUZReGJ6aERjRUYwTmpkamRqRnJVelJpT1V3NGEzUm1WMGxDTlZsNlUzUm1MMFY1TmxweWFXNXJVMGxYVlhrMFR6aG5TM2x5SzNKUFQwaHBkMjlTZEhSaE1GcG5RVkl2WVZZeU5pdEpUakJqT1djek1YVm5WR2RITmpSdFUxaGxkREJ6VjNsV1dIRlJNekptTlVKbGFrSkdhVTFRYTNOVGNtaDFiV0oyUVZZNVMxTlBaa2xGV0haRVZVVkNTM2dyY2poM04zTjNRaXRWTlM5UFYwUXJaRlJCYVhaYVJXMVBSMkZ5U21oc05ubHlUMWQ0Y2tNd2JUbG9kMFZpWlhvMlpuQnBSMDVYY3pCb1psUmlSM05HWWpoU2NuTkxSa3B1Y0hodlZtOVlOVTlMZHpnMllUUnZVVk5WWTNKMFkwSkhVWFJuYTBsUFFsUkdVR2RwTURGcVZuTjRhVk4zU3pkU2FqTTVLMlowWldSellXSnZlRU54TmtzMGVHMWtlVlkyZUcxSVYxQTBkeXRzWkhWTk9HdFFZMjU0Y1UxWWFUSnhkVGxUVVhvelJFRXJOVXBrU2k5cFNYWm1lVXN6V1N0YVJHSXdSbkpLYzI1VlEwOUpSbFJVTlZoeWFETnZjWFJOUkc1Qk16WXdXWGd5YldZdkt6SjVlRWRpYlc1TllrbFlabTU2TVhFemRIZHlkM2hIT0hSNFRpOHZaWEUwTjFrNGFXaDNWMFUzVkRWNWFHZHVhRmg2UjBWNE5VeGFaRm8xYTNNeVpDdE9NM1pKU2pCUVdUbHlNM0pMTTNobVRqaGFXRmMwZUdsalZYWmxkVE5PUlRsRlQwMUNLM05UVEhBM2IyUXpUbkZWVDIxYVpVY3hNbXRsVVd0alFYSk9MM1poYUUxRmJGVm5ZMmxWV0dGMmRFRlZURE4xWlZsU2FFWlhTbmRITmt0dlMwRlFPRGMxVjJRemRqbERiMU0zV1RBMVptMHJVRGc1WlRGdVZIbHFWbFZSYmxoeFlUWXdObHAwWTJSbWVqaFFORVJCZFZkUmVIWllNMU5WYVdSeFZFZDVhM0IzVEZKU04ydHhRaTlsVldGMFVUUTJiVzUyZURWTlZqRkxSRlpxU0hoT1NEWllhV2xJU1ZKSVFpOHZPR2gxTnpKalZISmxSa05EZGtkMk0xQlZPR3hoVXpKU0swVjJiaXMyYjFRNE5FSkNTMlJNZDFRcllXcDZjREpKYlZSdlNqQnJWRVJ4YzJabGFVOHZNM2hQVTNKWFlqTm1aRTF3ZWxoelZVRnlXa04xY2taNU5tUlNOVkZ4UzB0UFdUZHNOVkI1V0V0UU9IRnNhalpSYm05UFNqUmhWa1UyV1VsMFJVRk1kamhUV1hGeFdWazRjbTVHUTFFeGVuaEZkRko0ZEZKWWNIZGpTbGQzZVZkUllXTk5RVmRNWkVkM2RXNWxNV2xtZW1kbGFqQjVTVlp2TlRCVmJqaFVlRGs1YkcxcldVUnlMMkYzWW05Qk9FZEhhMlJQWkZCWmVpOUpLM2xZWlROSlExQlpjWFpKUVV4eFFVVkdTM2xZYjNCUkt6aHhTMDgxYmpoaFNHWkZMelZ1WTJSdVFubFJVQ3RzVlRKTlIyUk1WMlpaZFVWTWJWTlpNMDB2WjJGYU1ISnNSRTVqVnpKcVJGaFRWVXA1U2pGQlIyWjBiVmhVYlhCWFkyVkdNbmxEYkhNeE0yRTRaMU5wUTNsRFdITmlXVU14Y1hOb1IwZFdVU3QzTVdSYVdFbHNhWFZ2T1hGR00wbzFTRTQ1YjBWSVQxQnpkVWhpUjFaeE1tazVWM1E1T1dSb1prNVhaelozWjNKa01EVjJiR1pNYjNvdmMyZHFTMUJGVFVSRlJITXhUVXBqWWxkSFRERkphMjF0WkdRNVNuSnJTV2RsZFRKdFdGTnlja1JxYVZvcmJucEVVbEpMTUhGSGFucExjRFp5VGpSMmRqbGFUSEJpVmxkalpEaEhjVzgwU1RjMGJGWjRUVk14YUhFNFNFNHJTVmQzUnpOM2QxbFNUblUzWjJwbE4wOTVWbVU1WjFSWlJEbEJkRXg2VmxCM2RXbFRPVVpFWjJoa2IzWXhURzlJUjJOcE55OWtlV2xLYlZwTFlrVTJNRWh4ZWt4blZuaDVUbVZ5SzFWcWNtZzBSMVZNVDBzMk5WVm9hWEZ2TDBreE5GUkhSV2t5VjJ4RGNrMXhSSHBLVldkMldYcEhUbGh0U2xWMlVYVlVhRXhXYzBOdFduRk5WazVTWW1OeE5qaGpVMWQ1YURsd1dUSmFhbmxJTkVaNmFIWlpXRWwyU2tkdmVtVjNWRmhRVkZOYU1EZEdRa3hpT0had2RHMUZkbmhIWXk5c1p6TkdZVWR6ZHpCcVZsbGhRM0V6YkUxMllUQmhaa05WVDBoS00zcFhUMDFFYUc5bmFFbFVUbXREVTJvM1Z6VmFWVTV6UkRKaVMwWk1UbXRyV0hwYVpsVTJTVnBFV1dGWmNscGhjVmszZEhOM2NUWjBiemQzYTJvek1GRnBSRUo0VWpCRk4xUk5XRUo1ZFhONFJVWTFjVEJRZUZWTFUyOU1NRXRWWjNoeVpWTnhWM1Y1WVZNNVMyeDBUR2g2YUZSMVRqZHVlRk14ZVd4SVdVZFZjVlI0TTFwa04zQlBhSEZEVFZNMFVrbE1WWEppVGpoUFRXb3hPSFptVlRjeU1IUlJVMjk0ZFVkUU1WUnJhV2hZVmtKVldWaFhla2hSVlVFNVYxTkljSFYwSzI5cGNGazVPWEoyUlV0aGRWa3pabFF6U3pGU1dFMUZPRTluV0ZodmVuRkllVEJHUjBGRVpWVnJRVE0yTkZGak5IbENXSE0zUmtsdlJrY3ZVMVpWTVhaSlVUWlhlR1UxUW1WalFXNXZSMGh4SzBkWE5scDBlbXhvZFhGM1VFMXJlbGt4U1hOMlMxRlVWekoyT1ZaQk1WRkxPVzl3ZVRKbmNUWTFibFZtVFV0VGFDdGFVVUp0WjBORFNVdGFkVzFLYjBFNE1UVmtUREp2VGtob2RrazRlWEp1TjNsMVQzTkpjMHRHVldKSE1qbFdTbGxXVGpWTEwyRkRSelZ2VG1WUmNFTkNhU3R5UTJGNlVVUTNTRUp3T0RKU2RTOXRRV1ZUVjBobFJraFFNM1JJVEV4cmMwaHhXbFJLUVdSUVZuWnVibWxsWWxVeFl6bHFkQzlsZWtrellWTmlMemtyVlRWalZtZEpUMkl4UVdoNlNVUXZTMHMyVHpodU0yeFhaM05SVnpnMGExVTVPWGhQWmpGc2RVOUpNVmhrTm1rclprazViWFYyYldkVFIycEJlVWRSUkc1S1RXZGhkVTVZWTJVMmFUVmFhWGwxYUdGQ1dVRlhkRGhUTlU0dlQxUkVabWszV21jd1FsbDFhVTVLWTFFelNWTlZWMmRNTVZOWmN6QXdSVlpJTldsaVpHVXhOMnRZY0hWc09HUlVVbmxWVUdwdlQzTXJhMFpCVUd4T09TOXpRMEpsVlVwSE9VSnNka0ZtVFV0RWJrd3lSVk53VG1Vd016SkViMHRXVUhwSFRub3lVMWx2TW10YVZHWlBUR0pXZFZKSFZuWnBjWGh0Vm1aek5tRlZSR0ZKVmxSUFRHSjFOWFZuWVhKNmQzVXdPVXRKY0hGUlVYbExRV1V6YkZCTGJtcGhjREEyTjFwalQzQXJiR2RUU1RJMk5Ga3lRVzlYTWtkd1kxQnZVRzVDZFZSd04xUjBMM2hJZGxKTVYzTjZMMHN2YkRGRmRIUlZTazh3WjJWWmFURk1NRGRJTVVKVVlsWjVlSHBaUmk4Mk1GcEVObU5NTmtweGVERXZhWHBWTUdkQlZrMVRiRmhCTkN0V09GWTBTMkV6TXpKWGJGcHpNV055VnpCR05VbHJNbVJITW5OaGNWcE1jRmhHU0ZkR1ltczRkblZPUlRGTFRXaDVabkoxUzNWMmMwTjJlVzVQTm1kR1IyWlBValp2VFRsUWMzaHllSGxFV0hSSGIzQkJlVEV5TDBsQ05EVndZWFp0Y25OM05XdGtaV1pyY2xkR01URnJLemxCUW5WMFVFeFZTWFZHYkdaR2R6UlRTMHBKZEdGeGJGVk1aWE52TmpGc1psZEJSREJvZVdWdGFETjBlRVJPUTB0aWNXcHBORlZHUmtwUVZHRk1NMU5PVXpjeVNIWXdabFp0Y21GNFYzQmFjVFZMZERaTVUzSkJhM2xtZVZock4yOHdjRXB2VWxJNFdVY3JjRFUwYW01NWNWazFhV2czZGtSTE9XMHlhV1J1U2tnM2MwbDJka3BxUzFKWmMySm9keXR6TWpsdGRHRjNTRTlWVUhWM2NYWkZNREppVTBjMlprcEhZMnhZT1N0NmVrMXhZbkppTHc9PSIsICJkbHNfZmVhdHVyZV9kaXNwbGF5X21hcHBpbmdfdG9rZW4iOiAiY2xRM09YVTFhalJ0YmpoeFpHVmlUR1pFVTFaV2RYQnliSGhzWkdneU1UVkVOVTVDUkU5T2JIcGFVM1IwUzNCa05ESkVZMFo0YzI5cFdFVktVRTA1V0haUFlrcG9lVTVMVVVSSlJXdE9WamhvZVRKeVNWbG9jRFpIT0RGM05uRXJOMXBwVUVkSk5tOVhNMDlxV0hSWWVITm1hRTltU1VVNFRGaHdaVGRxTkZrcmVEYzJWVGh6WVdWaFNHeGpZbmN3TkRVd05UTllPVVp3ZGxKSVdWQnFNbEZEYjFCbVVXbERZazFXZVdad01VUmxXV2xHY0VOUVdHTk1kbTlNUW1sSmNYSnhjV3BxTmpsa0wzWm1PVlJhZW14dVlVVkNhbUV3U0ZwMWEwRkNhWGxSWXpadlFqVlpXRlZ5U1M5YU5FMVNPVnB2UzBsMmFXdDZSa3M1VkZkcU1VcHpWRVl3U1Vka1YwSmxZVEpuU0ZGQldFMHJUa2g2V2xsYVNqbEtialJ6YzFNNFExRnRXWE5NZEZWQlVIcEhUbVJPT1VGdFZFTldjR1pPYjJJeWVtSmFiRkptT1dsRFVFaFBXbWhyVldveGFqRlBTbkJYVlVwM05IWlBkbEI1ZFVoMlVGVndVR2g0TjFGbWRqSnhXbXRuZVhNNVpYSnVZMjV3YUdSWVVITnVhRlJ1Y0hsTE9WRnVhWEZXV1VaMmJFSmpSRk51YUdRM2JISjJkMnc0TVZGQkwzZGtaMDl6YzFaR2NXdEtUbWxUZFVScE9XVnZlRzFHUzJGTlRtdFZjRlZIVWtwTlEzQllMM2hpZDJOeFpsbFhkbXhtU2tSMmFHMW9Ua2MzVlZKS1UycDBLMDVHTDFOd1dsQmtRbk4zWjJRMVF6RTROVE0xTUdORWQwRnVXVXhRVVZSQlJYRlZkbmdyU1dZeWNtMVdVbE4yVXpCQ2NsQnZXV0pXYlhjeGExRjNjemR1VVUxdFpGbE1halZJUzJ0bGNsWTRWRFp3WTBoMVNuZElaa2N2ZUVFdmQwRk5TVzlNWjJGTEwxZGtTREZSZEhOSlFXUnNTRllyWlhka2JuUnNWekJwTHpKVVYxZDBMM0ZaTDB0amJGWkVhbXBGYUhSRFdUQTFPSG8wYlZSb1ZtOW5LMHR1YzJaYVdWZHNSM0UxYkhWdGFrZGFXblpzVjJSWWJIb3ZZbTgwYTJ0WVNrdHNZV3hwU2k4d2VUQjFNSEJyTURSMFFtNDJTemN5WmtWQmJ6aEZlbXhtYUZwWlFVUmxVRzlpTkdWdWVHZEpiMjlvUTFSbGJpczBOakZFY3pCSWVrOUtLMU5uTkdKMFRsRm1VMnBwU1ZwamQxVjFibHAzYjJ4M2JUTkNSRGR1Y0d0M2Myb3liME41VGtkRk9FWTNRMWhFYnpaRE4yUlZabUpQWjBGb2VGQlJlWEpVWVdwblp6aGtVSGR2VjNNclFVMWtTa3QyUkhjOVBRPT0ifSwgInBheWxvYWQiOiAiVkM4NFpraGFTSGw1WTBsdmExbGtWazR6Ymtvck1YUXdLMHhoWlRCd1UydENZVkZCUkZBMlIwNUhZVkp6Ym04eWRIbHdlbkJEVEhSMWJIbHFWVWRhZFZnMUsxbENNakpEUW5KeFNVYzJVMlU1V0hSM1NqZFVjMEptYW1RMlEySm1VRGRrZWpaM1IyNUJSUzl2VEVOMGJHTk5WRGdyYWt0Tk5XVnpUMWxJWkRsUksxVTVSalI2VGk4MWJVeHZabTR5VlVsa01sWlZSemhoU0RBclVWWTFSVGxuWVV4bVNXSnNSRUkzYldaUFdqRlZPR2RoVmtWNk9IQTNOMlZsTm1GT09EaEVka0Z3TldFeFRqSmtlbXNyVjFoNVpIQklUbTFrWmtoeVRVWjBkMkphWlZsTFZWVkRWWGh6TW05c1JVMVhWRVUxY0RSMFJYTjZVbTVNTVZoYU5VbGxMM1pPWTBoU2JWZFVUMFV4Vkc1amRVSkdRa0ZRZWtad1lqY3hkWGhPWlRWSVZqVnBNalpVUXpKdFdHbFdUbkZQUjAxV1RqUklSekF5YldnNGJpdE1aVGxFUmpobmEwZHJOMWxHTW1KblpDOHlSbnBZWkdvM00yMUhTWFJCZFN0TlVXOWhkVU5sVm1SNVRucDNXbmxYUW5KaWNsbHFUMGx3T1cxNVdHMUJlRE15VjNwbloydHlTSFpyUmxGNFdXOW9OMEZzYXpKamIxQnFXR2RpZW5oNFVtTXdOVWQzZW1Wa2EzcHplV2gxV1hGTVZrMTVaVGhUV2l0WVptaHdhVVp3Ym5FeWJFNHhNRnBLZGpCeFVFUlhOa0V5Tm5nNWNGVTFhamxWYkVKblpsUmtUbUpHT0VreU9IVldSalYyVGpWNmFrODBTbTloY3pkcmVrSjFOV1UxWVhBd2JIYzJibGh3UnpoNGEzQTViV2Q2VFdvNWNqbGxhMGQ0UVVwcWJWa3hRbTl2WkZsRk5HMHZUelYwTkZVemNEQlpaaloyYTBFeE1HdHFXV0U0UjJsQ2VWQmlVVWxuTmpOSU4wb3lhR1o0ZUVKS1VuSnNRVU5RYjNBMksweFJXbTFsVURaNU9WWjVVMVZDUW1nM2NXWjBiakYyUWxocWQyZDBTRFl4ZWs1a1JFUlZUa1JrTVdJeWVERXpXVXMwU25Ka1FUTXdVbXhJY3pVMVMyZDBkbkJHVld0NVIyVm1hblpuVVRBNE5ISTNXSEJRYXpBeFdsaHlZWEJyYjI5cU5YVkthMndyVm1kMWIyNHdabmxHTXpKd1MyRjJjak5xZFc1S1JYRnBXV2g1ZEZWMWVrSjRkRE5zTkZGNU56Qk1Va05aWjJRM1NrWjRkV05CZWk5WlUxaGplRWhTV1hSd1RrMTFjM05yYUVoTVZETTRMMDFKUjJKRlZYcGxhSGxSTVRJeGNHWm1RVU53ZFM4NGNGTlVVekk0V0VReE56WnRUeXRqVURSelVUSTRUbXMzVHpacWQzZFBTRGx2WW1KUmVIZDVUVXhWVkhKb1UxTkVkbVl3VUVVMlRESjRURkE1TDJac1VpOTFObFl4YVRoNlZXRlBjbWhYTUZVM1FVWmhaRTB5TTI1RGNucDFRWEpITlhCMU9WTjRhWEZzYm1abWNEYzFiVWhWZW14WFRFTlhTWEpDYW0xeVZIWkJSa0ZaZDNsWmNpODFOVTFUV2pOdE9WbFhSMmhWVFdNelMwTmFVazFRTUVsQlowSXJXV3BuUjJ0bVFWbHFObmw2ZDNsSlQzZFZjWEl5Wm5Oa1UwTmlWbmhNTlZWTGNUQXdXVE5YSzFZd1FVaHhjVzFaUVRKNVdDOVlPRUpUV1dKWFZFcDRNbmh6Ums5aVZVNVlNa05RWW1RMFNIaDRkMloxZG1ac1FtbDJWblZtV0VOcFV5OVdTREZxYkV4VUszZFplVzRyYjJzeGRXNDVUbEYyUVV4SlpWTkdPVk5TT0U1dEwyUnNiMjF2Um05SU1FTldUWGQzWW1SQlNqWjBNVE5FWlRabWIxTm9WbW94VWxwMVZXUTFhWFlyUkdwc2NuUXlaa05FVnpsbWJrSktlVEpLV1dSbWExRnRZWFZsYVZodmMyUnhVMjFOT1VSek1sSXZSWGxDYVRSMlQzQkNjRGhEVlRkS2NtTnFja2hPWjNsMFExVTVhMGRxZUhWbE5XMXlZbXBwVHpCQmJtRjNiRFU0WTNOM2RDOU9VVkpTVHprME9YRXdRMWR3YldRMlN6WmhUa3QxWTBWaFQwVjVabXhQUlVOR1Z6RldkVzVXTW1SRGEzSm5PREppYW5VMVEzQnZjMU5rYzBJeWMxSmFVSHBFZEVObFltVmtSRWd3YVhjcldERnFXRk5xU0M4eVVsUllWVVJzU0RKd1VWcGpUbEJSZGpKQlZVcHNSSEZtZGtVNUsxSlNOV3RSVVc1NlpuRkVkRzVxY0hoWUwzSXhWRFpFVGpoQ2MzWjBNRUZ4VGxKUk1sSmhPV053V0hJNFZHVjNUa3htWkV0TWIzQkROVGwwT0dSclFUbHVWVTF6YWswM2NHZHlkMHRHUlZjcmQwRnVTMGtyTkd4S016bE9hamt2VFdRd01XcGhWbFYzZVhkUlRUTlhTalJYWjB4eVRWTXhUMEZMVm1NNWJrZGpWWEZpZDFGdVR6aHRWaTgxYXpWMWEwTlBOM1l4ZDNGSlRXVkdkMkozVmxoaVozZEhRVTFvY0RWaVRWcERRMVUxWWxOc2VXRkhkelZQUzJaNWNVeG5kWGRxYURaYVozUkxkbU5aTUVSV1VtVnZXQ3R4ZUZFelJFWTRVa3R3VEN0SVF5OTJZVEY2U1ROUVpYZEtWMDVqU21RMWVFMWFTQzhyTUNzM1JVSk1XRzU1WW01NWRWZG1OVTlKYlVFNVYydDVUM0JKT0dwV1lra3dkV05FVFU5RVRuVjBVbkJsTTI5YWJHRnRRWHBoVUdRNWVFTndVWFZDWlRKT1JFWnJUQ3QyUWs4NFZ6a3ZSa28xT1d4VVEyaExPVTFvVERnMGQwWXhSRXBoVG14SWFIVnVTRmxCT0ZCQlZuRkhUV0pUTVVndmJqVlZURkpTUjJWcmR6WlVhbkZNVmxrelQwTk1aR2sxUTFOR0szSlhhM2RJY1ZGRWIyaE9XRXRMV2xwYVZYSkJXREJoYVU1NFYyVkNaVEpzU0dobU9XSnZOSGN6SzNWSU1XZEdOMVJ6UzFCSVMwMTBZVEV4VTJaNk5FNVhjSFI0ZFdacFJFNWhaRFJwZDNsd2RXbFJiWFl6U0ZGeVRERmhXV1UyV0VGVE1UQm5lRE01UlVST1lTdFJTQ3RoVlZZelFTOHhaMUZrVlZwbVpUWlhNMkZrY25ObFlWWmxTV0pFUVUxa1dUTlpURmMyVERKdVZtdzBSREZaYm5OdkwzZG9TRlExZVRGdVlrMXNNWGR1UW5wNGMwNUdZVkpUZVUwNVptbHRXakZyU1hvM1pUTTFSbGM0UzBObVZGRjZRMmxIY2pWU01sVTJPVFpCZW14b2JVMURSekJNYmtaU2JIcENjM0ZUYUZjdmQyaHdXV3BpWTFCdGNIWlZjVVJFWWpWUk9IZHlVVVpoY0VKUVRXTTVUbkJOVEVwMFIyUnVWMjF2UjNKaFduVlBjbmsxWVU4MFpIcG9LelZRZFdsNlozVmlLM0JQTVRSYVUyazRlR2RqYVdkVlowRm1aMGQzVFRCeGFWTlRRWEZvVW01a1JEZG9Ra3QxWXpWNU9XZFJWVXhuYW5wMFoyUnVUWE4wWWtseGEycHFWWHByVkcxTFVXWnRhWFIzWVRFelpHOXpkWFprYlZoRE5XbERTRVZqZEZGQ2VHeEhka2xXY1dndlNVUmlPVUY1VEd0SU1FdGpMemRDZEV0eVUxWk5TbUZhV2xjMGJUUnBNVGhuUm05S1IyWXpUMlp1UW1Jd2FIRjVaVmRvSzJOS1RYVk1WVkJFTlRoQ09FcFhhREV2ZEhaVFMweE1RVVJKWkcxUFZVMVVVRVF5TUhkbWFVcDZRa3hHTUd0eWVUSkZRMVpyY0d0SFJHZGpRa3hZV2xBMWEyaFljamQ2VFdKMlNsUkZUbUl6TjJGU2QwWlFOV04xVUdGdVpEaENlalZKVkhsWk5WaENVbFZTTVVrMlJFTjBXak4wWlUxUE9ITjBibVZ2WW5CRWR6VmlNSFpIWldSVVYzZHlRME5UZG5OV09WRm1jMGhDY0VacWJGcHdNVUVyVlV4VlltMVlRV2d6TjFFNVNUaFBUa1JtTkcxV2VFcE9lR3B3YTFvMk5UTXpUazFCYWxGeFUzbDVaems0V2poVU0zcG5Na3AwY0djM01tTjBOM2xLWXl0WlltUndPVzVRZDNaMGRYWnhTVEJJWTJsTGNsazFNME5VVGsxaWJVWXlaWGRsYTBJemVETkJVM0F5VkUxeWJtMXNVVFJ4WkRoR1QySlFWRXg0VGpSNlJHbE1UaTlrUkhKUGFuYzFVamxTVDNoM05rcGFkWFpLTUZwUWNFYzBValpPZEZreVpsRjZiUzl3YzJwMmMyRnZiMWs1WTBKWlVqSnFiVk55ZFdKS1QxTnNUV1JKTlc5a00yNTBZbTV4TUV0aFNVUTNSVE5KYzJGMGVsWm9UVTlGVTFGWGRXVktVRmxqTm1SbVZrZEZPWE5hT1RWVk9YZ3ZkVGxZVkhReldrdEpUVzlpY0Rnd1pFWlhhbFZEUVVKVlluQTRPWEE0U1hSQmNsZ3lZazgzUmt0eVlVMXlWVEV6VmpOdk0wdEpNR0ptWXpkV1ZXZHBTVmMyZERkWVlWaFZjR1poYlZwNFNEbHBZMlZCZVZaT1ZWZExhV3BEZVZNeVZVSXdRV1ozY21ObFVFUXdVMWxrZVhwUE1UaDNVR2RRVXpaME1tNTFRa1Z2ZEhSak1rSmxVMkZPVDJaS2RqTnZVU3RUWkRGWmIweEphRVpEZEZkVE1ERXZiRk5tWlVaa2VIRm1jbEp5Wm1acWNuVmhXVGRyWlhGdGMwb3lNWFk0ZEZGMlZESllTMWRtZFVsWVNIcFdXRU5DV25abFYyZGtTM1J3V0dKbE1XMW5SVk5hZDNRMmRuWjVSVWQ1TkhKVE1HUXdaelZGYW1ObGQyUlhOMmQxU2xBeWQxQkpZMnhaUVZsbWJuaENSREJGYzBrdk1VbHFNVXhxYXpaaWJVdHRLeXMzU0RSWFVuVldlVGQxTm1OYVRUSnJibXcxZUdGdlYwSXZjMGxzVDFKbk1teFlOM2ROZUZjelRFSTBaVkZRTDBkcWFuQmxkbXBuUjBKeE0yRnRXa0p6ZDNkVVRrSm9jV3RLVTBOSVVWcDNNRFJZVGpaTGJYZFpRVEU0UlU5cFNVRm5Ra2dyVUdNelExTTVRVzlIZUROaFVHOWtheXN4TTJkRFlTOVRPV0prUzBSNWVXUlhiMHRNU21WUWRFRk1ZekJ4ZFhWdVVYbzNOMkUyTURZelNHeHZjbFIwYTNsM1FUVkpkRzl2WVVKUk0wMWFTWEpNYW5kVFprRnhTM2RyTkUxdlUwOU5PRXhYUlU1WGIySnFUVGR5UTNVeUszQnVZakZRTDBkM2JrZFplbVkyTVV4Uk4wSk1RVXB1TWxFclpWRXdZblpFUVRFMFRtZFVZekJoVjAxcGIxWkhSblp6UjB3eFRHSmFWMGt3VDFaSFVYSkNRbEZOTDJwTVVIUlFhM05LUTNkbmFYSTVORWhNUlU1VUwyWkxVM1Y1VEhFcmRFMXBZMjV4TjBVMEsybEhNV0l4U2pod00yMXdhSEJKVDFBNE0yMVVaalphUjB3M01ubEljblZIYVVkaGJGTkRXbTR6Umtwdk4ycGtlVTl4UXpKeE1qZEJUMkZJYkdGMFZuaHhNR3RZWm01VFlVWlZObFZyY1RoQ2RDc3lORk5aY0V4ME9UaDJhMmhCY2xveGVqWldUbWhGY21aMVpYVXZZa3RUTkdaRk9XSjFkRWQ0VUV4bE5sQkRaRlZuVGtOak1uTTBNR1p2TTIxcWJuVXlTMjAwZUV0R1YyNXZia1JqV25CT1FsRTNRVko2U0VkTE16ZGpha3g0UjJwWFQyMVRUVUpTZGs4cmEzSnJXRXA0YURORFlVSlZVM2d2ZGtGclRUaFpNbTk0Vmk5Q1EwbzFVRGxxUW05TmRHRkxPVFppTWtabldETkJNM294T1ZOaWIzbDFiSFptZEVGVVZWQlNjMnhGYVc5bWExSm9UR2xwVWxsQk4zRlRWa3hXVms5dmN6ZG9VMnBYV2xRcmJpdERLM0ZYVERCUlZXWjBSbTgwVkVGaVQwUjVLMEpZVWpkVmVWSTNUbUZHTjNOellUTlpWSHBQY0hoSE1teHNja1ZZS3pKc1preHNjVEJxVmxwRWRtcGlVa1ZUUjJnM2VFTTJiWG96Y0hweFpGQnhhVWRwYmxCeWVGbEtha000WkVZeU5qWlJaRWxTTUVKQ01rNVljMk5JYlZCeFZIVkRVMlZqTUdZeE1XVjZTRXhxVFVocldYRTRUWFJzZVRoT2FFRnpPRzVLTTBKeGNuaFJWek5WY2twMFFrbDZURlpGVWpKaFJsSnFSMDE2WVZWNVIxRmtOV0ZISzJsa09IcE5Wa3RhUkZveE5EQnpRelpqU0c5dlFTdElXbEI2V1VoUVRXOTBkbmhDUTFWVGNVTXJkRmRUZEVKWFdXMDVSaTh4UjI5emR6UXpWa051WkhscGVpOXJia0kxVDFCeVlUbEtkM1JNYTJoWlMwTTBNSFZpWkdjMU0wUTBhakF2VkhOS2VISktibUZwUTFsVmRXdDJObEoyWVhvNFZrNDBhbWxsU201UVZtUllRWFptTTJ3ME1HSmhUbFJvUzNjMFdIVjBZVVpNYzJSTmJsa3ZVMk4wUmxkb056SlZObWxMVEVGWGN6QlJlbWhNZWt0T1lYY3hOVzQwVFZvd1JUbHhNVTFvU25oek5pOVJTM1ZqZWpkU1pYTndRV1ExYUVwMGN6Wkxkamh2Y2xkc01GbGtNMjVPV0RWcFIwZFJTekoyTmxwaVVHWmhhRnBvVURoM1JtWldTbXRCU2pOV1pHbG9jekpPWTFoS1UyMTZPWFpCSzBkMmVHTjVRMHRHTUZWS2FVeFZXV3hJYkRsRWJsbHRaRXRKYVUxV1JXazBUMnhaTjFoRVN6TmpjazFNY21kVFMydDBjamRaZUhKRmFHTjNja3hhUzNsdVdtMWlVQzl1ZVZKMU9WaHlkWFJJWldablFscDRlR2hGZVVaUWVTdGxTelpIVFZGelZHUm5iME5vUW1RM1VHcDBUbWQxWjFoM1ltOVBXaXRJTDA1bFZXMDNjR0p3V1ZaSU5tUlJWRGhKZUZOV05EVjBOVk5NT0c0MFZVVkpZMjl3YmtWNFRpdFNXSGhDUjJWUWEyTk1UbkpYZFVWU0t6RkNTVkY2VUhOeWMxSlFiVGRIWjBONlduUTJOekZEZVd0MEsyUk5SakJ4TUZOTGJqZEthR1JFWTB0VWRFNTRZbEJ2Wlc5Q1YxRXZWM0Z3UVVoMVJYbG1NR2RFTjBKU1ZIcG9UVFp1V0hOS2FXNDJjVWR3VURaS01XeFhTWFZyUzB0R0wzVm1jM0UxWW5oM1JUVjNObFZRY1hnd01VaFhRblJ5TnpadVJFOXJka2hLVEU5U0swcGxXakU1UmtkTVpsaFNOMk5vU25vclJqTXlTMHRDTXpWcE5WUnpkR3R2WjFsMlMzcG9Va0V4T1VOUFMyaElZVVJJVlRWcU5qUXlTbXgzT1VKR2IyOVljMGRLWWtaVlkwSmhiMUZHYVZoM1ZWaEthV3BrWnpBMU5EVjJVbGd4Ulcxa1RFVjNjekJrYjFaamRGWlVVRWM1UmtaaVMzRTJkRGRKYkVSbGNYaGlSekExVmxGWlYyWjBlV0p3VWpobE1pdEJZbnBDYWtkS1kwNHdZMHB6YXpGeVVYTkdOMUF3V2s5SlEwMUhNRTFRUzFSdk4wOTVialZxT1VaNVUzWllMM1J1VmpKWVdHaDVjSE15ZGxoeEwzWjZXVGcyY1RJelZHWlJNVGgzZEdKT1VuRnZVbkJ2V2pWcmVFOHlNWEJJVTFaRk1VRkNjbk12VDFaaFJUY3ZSRlkxYzB4a2NFWlVTbEJLU2tkdmRuQmxlRVZLVVRaRFJsaHBhSEIzYzNsWGVWb3ZXWE12TWsxSWJWSjRlRU5IWkRoVU1VNUpSM2RTV1M5WVNsSmxhbGx1UjB0eVpGRlJWREpzTkZVME1VMTBia1I2VVRKSFYxWjZWMVp4VWk5T1pWZ3dha3B1U0RkQ1RIVmphWEpxWms4eU9FNVlXbFk0WTAxWkswRXhUMHhOZFhwaGNXUTBjRVZyWTFwV1FrRkphbVZET1ZCUFNFRnNiVGRGYzBKcGFqaE9lalpMVVRNdlMyaG9Wa3h4WWpVd1VHMVBiMDExU0hCdVJYbFpkREpTYTJWcVFqWnhSelpLWkVKNU5HRXhXa2d5TWxVclNFOXJZazlIVjA4MU1WRnljMnhSYlcxV2IyUkdkMnR0Wnk4MFNtSktha0ZLVFVVNWNVMVdWMlJITkZCeGJtUnFORTl4ZHpsbk5WRjVXVFppU2xwb2NrSmtWR1pRSzNGRWVrdHdPRmxwZUVwbldXRTVUREZxVldVNFlrZ3hjVlJGWVhZeFRrTTNTbGR1VWxCc1dXcDZTazB6UTFOb1VHaEtRMDlaZVhaaVlWTnVRVTloTlhCUFNUY3lVRkZNTkhSaVZXUkpWMDl0TUdneGRFUXlZMkpMTW1ocmJuWlZNV3BwYjNSV1RuQkRZVnBWWjNaWlVHazNLMkpVU2pkUWExaHdielJGUm1sWVIwSlhlazFUZFVaUlIyWnljMWxJTkRFeWJqUmxNMFkyTkcxRmJXWmhMekp5Wms5aVowWkdaWEJKU0dGa1VHbFZTR05pZUZOamNXaEhaVGR5Wmt0NlkwZEhOWGhLWkZST1dIUlJWVEpEYm05R1RVcDBMM0oyYzFweVFtWjNOVkZqTjBKNkwzQnhTbVpKV25wVlNrUk1hVkZYUkRWMWVITlZkMnhsZGpsNWQydHRNMlZ5T0hWRlkyNU9UMGh1ZWk5SmIyaDRhMk5JWlhsMWNXOHdWREJQV0ZObk0wUm1NM2hMT0VsdmJEQjRjM05uVGtaS1JqTnFhRk52UzNrM1ltTjRkRmhDVmt4WldYaFRPVzUwVW5veFQzbEVXbEZ3YW1Kd1ZERm5TVEp5TTFjdlZucENRakJxYm5sVFJUTnJTR2xNYzFaSGFTdEpkbE5RTXpsWGRVbHZkRGsyZFV4UE4weHBSbWxJT0hOa1lUWXJXRGR2ZEcxTVRuWk1TMjVHTDBwSFNYSnNRVEZGYjNwa1pHcHdPV3hoZW5kdE1tNWlNVEJKV2tGS1UzQlZVM0JRUXpsQlFrVTFVbTF3Y2tNclUxSjZaWEk0U2xaMFJ5OHdRMVZ1ZDJSdGNtNWxhV2RqY201NmRIZGhZVkZsY0ZkTFUwRkxOWGhRVFhkbmVHUktPVGh6VkVOMFNHNXlha0YwYzBjd1Z6QkZWMVZ4ZDFkV2EzSkllbnBLUjBSbVNWQlhPRUp3TjBKamNVbHZObmxIU2tGUlVGZHZZWEpQUTFKUFkwbGxUMHgzYkdwT1JWWlFjbVpuT0VOTlJFYzNkMVZWV1hkbWQwWkJhbUpGUjFwcFozcHBRMlZLWVZwRGVEZENWVVJXTkVGb1lsY3JTalZHVW5WRFdVMXJVRVp4ZFhKb05GRkNTVzR5Tmk5VVlVOXBTRXhpTm1sTlZVeGxSM1p2V1U4NVlTdERkblo0WjAwMGEzRk9VM2szV21WQ05VOXVlbFZpZERObFEyRnhhRzlyWWtWNVV6VnVhMjVaYVdOS01UZFJZV2hhTWpjMVV6QkVORFYxTW05eWNIbDBSa1p1YnpjeGRWQlBZMHBTV0dsU1RqVTRhbWcxTkdKTE1rTklhREZtYTA1bmREUmFOelZ6WjNVeFFUZE5XRWswVVRsSVZscHFNMFlyU21RMmJqVlZlbWt5THpOblYxaFpTSFpXTWxwcVlXTXdaMDA0UTJwaUszQkZVaTlwWkVVemJqUk1kalY2VEdScGMwVndTVlpuTURKTlFsRnVMMnBrV0hsWlJVc3dXVGRJVHpCTFYyUnVVVE5IUVRKMWJUSlVkRU0zYTJwdVpqVnRaMUU0UXpKYVluTkJlVmxWTW5rdlpYVkNiSEV2TWpScVZVNU5VRFZYUlZCeVZrWjVNRmd6WVVWR1kwdzJSbmh0U0RGclFtcG9hbmxaUmxwNldsUmpOa1Y0YzAxQ2NXaE5kRlo0T1RaWk9FTlVURlozVG05NmExZHlOMmhQWTB0c1JYUnlMMUpZUTNVNFRscHRjMDlNVDBFNGIyTnpORXhLWWxSVWFrWndaVWN2WkdKSGFUVkhVa0k1WjFScVN5dGlRbUZuSzNwdWNITjRkVmg1TVROUmMwaFpjV2hXVlhSWFZXUk9TSGhpTTFGemRWQmFiamx2V0doWlJrSlRNa3BIWVZWb2VFdGlNbEZMZFRoeFl6SnlXbFZVZW5OS1FsbGFiMjVaVDBSUmNVOHpkMUl2YkhSaWFUTkZVMDlWVVhZdk5VZHBZVnBMVG5KWmJrRm5lRk53V21SWVVVVkNiMk5YZG5kdGNsRnJaVlJNU0RoNVNXa3lhRkpaTDFSemFrYzBPRlZxYUVsSVNqSmxjMkpJUmtadFJrSk5TR1ZIYUd0V2RuRnBjemwwWVVWc1REUXlPWGg1VWxoc2JDdEJWVXQwVjJwc1FVWktkWGcwTUdKV1RFMHZTRFJFUVVJeE5GcGxNQzlYV2xGa0wxWnhiM3BqZEdaRU5XdGhRV0phUlRGRllXRnhaVzF6UkhCVVJVSmxkbFpxU2t0bGJpdGhaaTlsTWpoSFpVbE5jRGMwT1VaSGFGQlVXVFZHYUdwSE9HcG5OMGxRYlVNMVkwNWhOalJ0U1VkdE5HUnViMjVyZEhORldTdDJaMmhqUkc1SFVtZHNlSEZyU2pjMk1WUklUSFp6UWpaYWJETm5SSEIyV1c5Rk9YWnNSMlZ4TUZZd1NYUlBUamxVU1ZsVGJURnVaQzlhZVdkMVMzUmhlak5zT0ZCQ09HSm5VVXBuVGxFeU1UVnZTV2RMTVd4U0x6WkhWR2cwUWxOWmVqUndVamc1YTAwMFprRkxTVVJJTUdzMlNGUllSemhEZGxwNlFUUlNaVzVCVms1RWNqZDRWa1ZpY1dOVlYxbHFZMlZsWjJ0cWRtNVhUMWRFT1RRdlEybDBjVEp2U0UxNmVtUmpjakEzYjNBMmFrRXZaSEZEUTJSdmExSXlMMU5DUW1SaFlUQkJVMlV6UTFGRVFtRktkMVpqVFdsbGJWaDVNbUZKTUVKaGNHdEdWelI0Vlcxd2FtZEdiMVJyYkhoT1MzWTFNVVJuV1VwelUzQkhNM1ZNU1dSS05sUlZSREV6SzJ0S2MwNXBNRUpJWkVsRWNsZGFNbXBhTm1oellVSmpha013TlVsS2NVSnJhV1J0TTA5dWExSmtja2RUTjJZeWRUQndOSGxSZVVGbVdrTnlURzloY2xjd01rZFljVWRJU0ROc2VVZ3pUelkyT1hoUFRIUkRUVkkzYUZVeVZHbHlNWE5zWjNWSlkwNWFNbTFOVVVaUE5ISjNkM2hGU21rcmVWRlpVMEZuT0c5S1QyTnVRMUZQZFVsbFUwVnhNak5NZUVVNWVYcE1aVGx5U0hVNGVFUnJSVWxITHpBM1JqVk9ZeXMyUVhoSFFtSlZNU3M1UmpKM1VqRjBaMGhJWVN0RFpXWTJjVVJUWkZOM05WUk9UWEU0TkZseE0wNTJiRkI2UzNkTlVVMU1ablZXYjA4eU1HVjNaQzl6YkRKUVNqRkJaR3BvTWpKeU9FVTNOR3hOYTNCbWJWRnhMelJZV0VwMWVFcGtjeko0Tm1aaGFUUnBUelJXTkZOc1NTOXZlbkk1TVRWRVVuVkdWWEpPWkVoM1RXdDBSbEpyU1RZMlNuTmtVbVpLZG1wWWNHSTBTRlJoZW1KUk1FZHdNbWxpU0VJdlNFTkVMMlpvWkZKR2NXcEZTV2hCWkVNM1IyeFdOREZKYjNocmNuQjBXa2RGVkZGMlkxTlBkMlJvZEhrNFJHWktaMDR3VWtsaGFEQXplR28zVFVKU2JuVnRNMUZhVDJ0RllXWm5ZbEIyU25KRWVUbDNlazVoTTBoaU9IUldPVXczYW00M1drOVJjamN3TWtGSldHSTFZa3B6YVVGWFV5OU5keXRJYm0xdlZVUTVWMHBPWTJkNFZFVXdhVTEzWm1oTGJIRmpZbFpWWjNaMk16WjFRbGRZU0dOSVkxUjVTa0V5ZVdwS01rTXJORnB5ZUd0MGJHSkNWbWwwZG1KRVVsWmtRWGhUV0Rnd1VUVk1aekpJUjJSNE1WSmFkMDFXV25waGRuWlVZamswZFRCbVNsUnhja3RKVWtVelJIWlFhMGxPYmpaMGNFaEhXRTlRTVRScGFHRlhWMVJxYW1OVFMwdG1OMEpGWmpORWVtbEZUVU1yZVVWd1duUjBOMXBLTkdJeGRUaHFOMmwyVlVOVmQyaG1NWFJYUVVwRFV6bHFjVGRJUkc4MmJYSTBWblJzUkhoek1uUjRNRTV6U0VKa1FrTnJXalUwUWxaMWRrMVJTbEI1T0VKQmJpODRkVmhEVXpRMFlrMXlXRzVCVkd4SWJDdEtZbmd3WlhwemF6UnBVbTlyUWxKck1tSlRRVkpYV1VKaVpERnhlazQ0UW5kRmVrSlNZM293YkRKa1ZYY3dNV3RFYUU1NldrbDVUa28xWVZsTGJXSllkVVF5WlVsWFpFTlNUU3MzZFU1ME5GZDNPR1JPTm5Cc2J5dFpXRGhZUVd4NllXZ3hXSEZJTDB4cE9WVnhUR0Z5Y0hNNVMyOUhOVFZzZWsxWFUzQlNjRTkxT1ZoU1VWQnRPVFp5VTJGWWVreHpTeTh2ZFVJMmIzVk9kbmt6Y1doTFpqSkZabTk0UldGYWVra3dOelpYVURSTldFYzVRbXNyVWxrM0wxVm5WRFZRT1RrME1rOUZRVXhQU0RkcGRHMUlTR3hYYTFob1pDOVBTRlZZYzFGd1lVWkllV3h2TkZsTEwwZzVWazh5ZEU4NFIwaGhOa2g0ZHpaRGVuSlpXVE0wU0V0MFZUSlVjamhGZDA1SldqbFBkRmcxUmtSRldHNXZLekpNZUhaNVkwRnNWSEZzTlhCbVMySkpjbkJRUmtZeFVXSlRiV1l2Tldwc1FtUlhSRk5STjNSS2NWQjZkek14Wm5SNVJuQndOUzl0Ymk5SWNtMUVWblZHWTNZNE1rUkxWMlIzVFRoRFNXOHdja0pYY0ZsV2FrNVlSM2gwVldWeVVYUnhSekF2YW10Wk9XTnhPRUpMWVhoRVZ6bDJlRTQxV25CYVJXOVlhREU1TkRreE9FcE5XRmRPYW0wMVZUVTNZbWxVZGxCalUxQXhTMmw0UkRKeUx6a3pNa1JIYWtvclJWZ3pWRmxoUjB3M1V6bEZiMDFVWm5WQmExUnNVRGxpVEZoSWJ6bFFaelZ0TlV0dlVrWmlVRmhWYjBWQlJFZ3dORlYzTjB0QlRsTmhTVWRTY2l0MlluUjNSVzF3VTJjelVVaHVSMU52YmxWQ1oxcEZhMVZWYzJ3clUzTXlUMWRvYWxaV1lXcHJlazFXWVVkc1V6QnBNemRKT0VvdmFtRjBRM2d6Wmt3NFZHYzJaMFJ0TVdaVlVWbFpNalZRYmxwSVQyWlVVbUp0Ym5nd1ZVbGhMM2RwWVdFdlJtRkZTVEExVnpGc0wwcDZaakZqYUZwUE9XNXZWVGMxSzFaNmIyVkVTVUZRYm1OS01GUk9hVVprTDB0bVQweDRPRWhGU20xT05XNHdlV3cyWlVZclRWTm9lUzlFY0RSWmVWSmxkMnMxUWxaNFpqSmhiRUkwY1hscGFIWktTMFZ1TlVadGFFdFJNMjVTUjA5UGVrUjBjRGRNT1cxNFIydzRNbTB4TTJvNFIxTXhaVlJZUjJ3MGIzaHFjbVl6VTBaaE1FSlNTbFUxUW5NNVVFcFFTek12VEdKQlYwZE5jbVpyVEZCaVVscGpha2RvVG10b2VqSkVaWEp3Ym5FNVZVNWFWemMzV0RWT1NuQnhRa3BqUkRWcE1Ya3pTMnR4WTI1cmVFTnpSbkV5Vm10UGFXUlVLMDB2T0RKdWVHNWpMekpJTDNZdlpEWTNSR050Um5aMFpXdGFjalV4SzNob2QwdEpkVmR3WTI4NWVsaFhlRlJIVGk5VlNGTTBlV2hYTDJadE0zUk5UazUzZEZGVWJYTXdia3MxZVZoNFExbFRRME5EYjJoR1JGWXdVR1JuZUdKdlVrdDFiRlYyTDFGRFVsSlhPVzFhWjBkdWFWSm9hRTV4ZUZwb1J6aFhlbHBYWldKa1NsRjVZekZ0SzFkcGVXSXhSVEpFVEUxVWRtbENWVVpXVVU4cldVVlpPV2tyZVZoS1VXZHhlbkpSVFZFMFF6QnVRMjVETW5CTWJtSkxSRzB6TUdaU2QxRjRaSFJSY25wdlFXVlBTSE55VmxsU1ZWTXlkV1JvVmpoSksyWnhVRE5KU2xaeGEwUmlOemxVZGpKaU0xSllSSEpzWnpWSFlVZHhVM1pNY214d1dFTm1lRkZMUnpKR1kycFNNVTFYZEZkVVJXUkRLM0pJZUVoUVVtcFRVM0V3T1VRclZYcFpSMlkxVkdkM09WQkxXbXBLTDFOSFdrSk5Obk51Ym14aFZXdDFaRlZIWm1SQmVXWlRLemR1V0VZdmFITTNjRzlUY2xacVRtaENUMmh4UjBJNFZHaHpXbGRuYTNVNFkxQjNkVEpqU1dSdlVFODVaRUo0VFZSUVJscFBabEJDZEZCV1VsWkJhMmhCY0RoWmRtZE1TbGhXY3pOMk4zUm5SMHhWVDNvd1dYWkxZbUp6ZWtoa1lVVkthWEVyVTBVeE0xSXZha1pIU1dWTVZraFJlRE5yWVRaT1VtbHJiamhZTlc5R2VFRk5LemRtTkV4emFrd3paV0pSY1hWcVIxaDFXbmhwVFVaTGVDOVhXSGx6SzFVM1prZ3pabU5rTVVvNVNraEpOeTlITVRNMkszVkxTVXhrVGtVM1JWQkxaR2xzUW1aQ2VIaGliM2M1VldSTWVXRTJXbEZKSzJkc1Z6RXdaRTFtYlZsRVVIQnFkVk5YYVd0WWFrSjNUWFJRYW5wblFXTnZhVEZTVm5STWExbE5aMk5SYzFGVU1pc3hVR2x3YlROYWVsZFNURXhRVkVOSlRrNXNZWEJxZUZScGFXaFFaRkpMYkZNMmJuWndVSGg1VERONlVGVTJWRUZKVEV4d2FYZGpURTVrUm1GVU9HbDFhVVpHVjNkR05FRXlVbEU1WXpKc1YwVlhkMHhQZVd0aVp6RXZXbkJOVGpkbmVUWndkRk0wVjFOeVVIcHNRbVpLVm5sV2VTOXpTakpZYVZKbFkyRnVWMXBWVUZncksyOTRlRTkzVERaTGRVcEZOR2QyYVhSb09VdHZlRk5vVlhCWFJtUkxjR2hJYzB4dlF5dDVZVzlvWjFaaVlreHRhaXRTZWxGbE5XeDNZalkwTlZNNWJGWlNTMGxzYUhWbGJGSlNXWFZWWkdOTVRqSkRWVXh0T0VNNU0ybE1TVEZ0YWxjMk1uRkdibkJTYUc1MlUybE5NRTB2ZW1STFlUWTFORTlGZG5NclVrWnBWREJyYUhSdGNsbzJOMXBYYzBKMmNGUXdUVUU0T1RReWFHcHdVSFEzV1ZCTEt6aHFVRUZYSzJwMFZDdDVVbTloZWpnMFNVaHFlVFp1UzI5Q2FIcHZkRGhsU1ZkclpGVnlWeTlUTjNJek0yUXdVMEpqZFhWWlZGUldkbk5OWlVGRFJHMW1WV2MyTm5KQ1ZtWnBjbFJDY0RadmVqbFdTV2wyVkRaNVUyOVNNVFJTTlcxU1ZHbFhVbkJYYW1GTVQyUlVZa3hEZERGMGJWSTRXRXAwU25JNGJFZGhlamRZWW5Ca1JGRnhkMnBaVjJkWFNtczVTVXRPWkVObGVWWkpTV3RWYVhWd1R6aDJWVGRwTDNrNFEydFViWGxXZEdwMWExWnhTMHgyVEd4T1VIVjRNbkoyZG5nd2JHUTJlV2hZVlU5V05YVkJkMm8yTUM5WlJHdHRSVEpVYkVjdmNtbDZNMVZOZDIwNFEyUk9VV295UWtka2NTODBXRTF3VldsTGJUaGhNR2xuYlRZMVdFbG1jekpTU1RkSlpqTkdaa2x1YTJsUVVsZ3hkMjVLUzBVME9YUjZTMU5qZGxJNFpUUk5jRmRpYnpCUloyMU1kRUZRZVd3d1dGaEtaWEJVUm5WUVZteEZaRk5pVEZOUVNtc3JTblZhZUVOVGVpc3piRXBaVFZkdGNrMUhWMGxuVjJWeWVGZG9PRlpoVVZkWldtMVpTVmd2UmxNd1ZqSTVXbnBsYzBZNVlWcGFibmhJZURKNVZXRmpRMjFpVTNKT2FEWmlSbVJpZEZKcWRsaEVLMHhCV0N0cFkzbFJNVk55T0cxdFkwWnpORGhoV0dOVU5pOW5XR2hhWVN0eE16UXZUbWwzUTBRNFlsQlZVRXhFZUdsRVpVOVRZblZ2SzFWSVJUaE9lRzlHVjBFeGRsbFBPVXcxTWtkc05UTkVUMkZsT1ZsMVEyZGxjakZaY1RsS2VEaElWM05qYjBSR2IxQTBSMWQyVVUxbVZVTkNTblZ6Wms4M01tcE9RMVJUYVZORk1ucE1OalJNUnpOcGJteERlVkF5WjNOWmJFUXdVRmQ1VGtKd1dWQkxlbEJTWmxsQmRYVnZTMGN3VHpscGJuWm9aRWx6UWs5VFJtUkZaMlo0Y2toM2NGSm5UVGxsYldSTk9ITjVNRXBMYlVGS1ExRktVR1pRZFZFd1duUkdWemN3Y0Raa2IyaHRNMFp4UW5GTFVWZHhTVE50YVhSbmJETm5NR3h0VlhrMFowRjRhbk40WmpScmRqaENkMEpJVlcxWGIzRkNkMmQzTTA0NFRtZFJiVmhhUVdoMk5HaG9UV1JuT1d4SmVGZExWMFV2Y1ZKRFMwTnNNbmh2VGl0NFpVcHVhMWRQY0hsamNXMVNOamRPUld0c2MzWlRURXBTY0ZnMVNtRmxlVkYwVEVSVU9IZFRRbEJvTHpkbFltVkdaMVJEUkhSUVJHeFFiRlJIZG1rdllrTlZOelpITWpVdmQzSlpUVEZ1TTA1eGNteG9kM2gxVlcxYWExSkZaelZRVFV4Mk9IWm5NekJ4Ykdad1VXUXphazB2TTBwTk1rTlhlako1TlUxaVJYaDVibEIyY1dsSlVIcHdWMHA2T0dWRE9YRjZZbkEwTVcxQ1FtbFBkRGt2Um1SR1VGaFlUbXhDVldSdFNHbFpjMVZrUVdSU1kwWkRXRTAzV1RZM2Qxa3pTREZDUmlzclR6UjBObVZwVldoamJtSnhOSGRtSzJZMWExTk1WR0kyU21Oa1RrVXdjVlpOVFRnMWMxWmtaMWgxTnpoQ2NrcDJXR2gwVG01R2RHTXZhUzlLVkdoaWJraHpRMHcwY3pSUVJsTm5jMmhpVVVWM1NUZG9kVzgxV0M5VVZVcDBMekphVTJWRE9EWmhSakJaU1RCUVV5dHJRMUJOVkd0dVprSmhhalZtVGxBMlVrOTVXRGhKUzBsTFExQldkM1ZEUzJWaE0zUkdVRVpUVVdKeFJHMDVaMEZFYTIxb2NuWk5kSFpyWkZBelZWUjJVQzh5ZEVKeGVEbERlbUZQZW5kVVpGRk5TVmx6ZFdjeWVESlNka3RLYjNvMmFHOUdkSEJHVkZSdmEyVm5PR2MyY0hGRE9FNDVSbWxHYzFkSlkybFpUWGgxVUhSNk9YZHpiMkZTYjA5blUyaGxhRzEyTUhkQ1pUVm1hVUpJYjBaWVRFTTFVV2hNUzNKd1IwVTBVVmxZWlRsQlNUVlVLM1l4U0V0QmN6ZFlWR3hMV0ZVeE5YZGlkakJWT1hKUWJFSTNWVkZqUzB0M2NtMHhURlpZWmpNeWFGbFRPR3M1U0RaVk9XSnBjaXRLV1dJMUx6UkRlREJNWmsweWRXNHpNVFJLVFZaT1owWkZRVEl3UWpaeFMyNTFjVmt3In0= \ No newline at end of file diff --git a/doc/license.md b/doc/license.md new file mode 100644 index 0000000..e873e5d --- /dev/null +++ b/doc/license.md @@ -0,0 +1,231 @@ +# License File - `liense.bin` + +> TODO: Unknown value / encrypted + +- Uploaded to `PUT https:///file_installation/v1/license-file` +- [Example file](files/license_03-26-2025-21-27-51.bin) +- [Test file](/src/test/test_license.py) + +This file contains a base64-decoded JSON with the following payload. + +```json +{ + "preamble": { + "deployment_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJqaXQiOiIyYjM0ODc3OS01ZDIwLTQwNDAtODRhZC03MzQ1N2M0ODU3ODkiLCJpc3MiOiJQb3J0YWwiLCJhdWQiOiJTZXJ2aWNlIEluc3RhbmNlIiwiaWF0IjoxNzQzMDIwODcyLCJuYmYiOjE3NDMwMjA4NzIsImV4cCI6MTc0NTYxMjg3Miwic2VydmljZV9pbnN0YW5jZV9kZXBsb3ltZW50IjoiU1ExT1kyK0o3VS9xVVMzQTJSejV6TGtHTCsyZHFmRW8wNE42enM5M3FGZm1SRjQydUZ4U01MSU5tcGdNcElmNWIzNUZHd2lmRUZNRTZpekY1VVpMR1pVcUtmN0VJL2FSazNkMU55UXI1azlpTFhVWFVhc3R0dnM0dGE5R0xaV25vTU1MZjVvbURuSUkwdEorNngyaUp1QVJubE01bmIxak1mYWNVM0VzeTErSWxPQjNFRGllbUpNclBWcWNsTFBUZnp0ZGRpRUptV29GYUQvN1RXdnIrcjFtL2xNREZxWnhLNVd4bGkxWUxMRE1wdEdFNmRRekIwajJQKzVpYmowemlKWVZuSjluRThmWHNBQjY3R2Jkb2g0VEJFMWVpWXBQWkptcWxlMkwvRTNhcE14Si9TVGY3ZjVjYjVFWHpJQ1FxVVFHK1BiUEFwNU9kZmNldXp2RzlDMmhhOGxsVUMzdUZpWHNTT1puVVJjeHI0RmlxR0xkaFI2cGdqRDlFeStGMDZUSUQ0WUhXeDBZUkNtSi9NMWhkSzJNbVRRSy9IUmY0cmxZbzczblJTY1N6SDYxQk02QklCcmhlZSs4YXZxd2ZlR3ErZHIxVmRVM0liSmFnUk4zOGpQRHZoaW1MajNHQmwwOUNFeTRHYlVHS1pDMVNNY1c4TVNRSHFCZVJFb00xZlErdlV4WkpkNVNSbkFnVWZ2NWdraU9PWVZmQVh4VEo2TzJVQ2YwWnREcjNSRWpDV2RUeDBjdDNEa25lUzJjenhQSXczK1dZWGU5cXg4TWx3aDVyWGdFalIzZlBoTlpvckpueEtvZmJzY1UrK1Y3N0dCZ0ZrRU1mMVExOFVBYVpVNS9td3JnK1dIVnpuSWQxYzNTVnQ4c3dsQ09tUUdTNWp3Y1YwT3VxSnUzd21BUGZ1RFd0WXBKZTNicEloNnFML1VtZnJFaGtWdEVVN0piQ1c5cERKam1UZXg2WjB3Y2l6d1VrVHZnNkJYL3QzWTB1NkR6REF1RkFXV3hHNXlxRWJSbWgrVm9RSFh3MTh1RHdQejZNWTQ2U1cwMCtRU0Y3ekhoSnVBcitES0t2bnlaUWFNUlRscmQxZGcydThwdmh5dVhJcklLaDJQS0ZsZk9FeVhyNmIrbjE5anNVaWZ0c2RXdWc5OHg4NVNMbTJaNW1IOXVrZFUvZWVPVGcvVFFoTjRzUUxaWis4VWpjaHBnVzJvQ1JZMS92NHg0VHZnUXcxZTF0L2laVTN6VHhob0ZtNEd3cUZibEEzNTg1YnFaNHNtVjBvekI5ZG1tQ0ZnZ0UyRTZGS0RaYVlRc2Y4WldDSzJ4WTZDYmVOWUllTUxwUWpPbG9qWXJ4OG43TkMrRld2M09haHFlVy9TaGZ3cXMrb0t2ejNYd1hzM2pKKzlISHdTN1l6WERzWmhrcTMrM0pYSzJmeG55ak85VGlwbXNFY3NJM0Z6U1EwcVptQjRCaUE1bnVCWTVRaE9FN1ZVTmxwelhzd05aYytBc0NZbnJxdHBta3VRaFJ6ZDRMNTdLYTNRWlBZWE8wM01UcmtnSFVha1ZSN1J2VEkwbFN0NkpZTjZNZStTbDdIWG9OYkVEMkd3Uml1bTZabXBnSStiTWZZdDRVVFZoK2tvMkwwTGJDVUlLQllvaTNLWjJmN2owZERxdDVuUm5DNnR4UUNYT3lEY2c3RmUyOC9CSndYS0ZhbzhuNXBGc1RzcjZ2UjZoTXZYUzNJUEh3U3FhaGFla2gvQjYwZUdYazNJc3dRNnU2eWdEMTR1K3lFby9aUFd0SWUrVVpPamtYSHpTVUdiQ3puRlM4cUxzRGU0eVFteVFZcFJDRGFqZkxpNldUUU9ENU9KRzNzQTZuNG5oU1RFU0FZenNoc3lJSG9oS2xBR1BTTXFtUzBFa3llMjlFZUlsUDZPK0RndlVrMnNxTEhrclpYWHlOejhpaVpPeTBiRzJDZ1E0ZG9JaUVPN3BjMURZY1VUMVFJaENLbkNsZ3RBQUt2M3VONGd2TmxNaEloYk1URjZlbTBHK2ZESDMrRUJoZEdHSzVZNmZSWm1PZm5FekNaYk9Ed29vY2QybHJ5S3dHbUc2TnJVeGRGZUV3THVMVVJPZEk5ZzNzcGtrMVVOQzM1YVlJSnlnNGwrUmNWMk1NZDRxNWZuNlNrdUhsQWs5Y3NVd0ZrNEN4NVBmbzAyNmxNUklldWNzUVNsbzZUTzN3VkdUTGtIRjBJQXd5MXpnNFBMWExaaC9FeDI4b21BamxPWVZCNEZhY1pINTZPbWp1VjdEY1VHU3RDNHg2d2h5Y3NGcmpyUmxrRmRhNlY1VWV2ejhhMlIvOUEzZFRodXNlTXlmbzY4ZVJHMUdGRlZzTWpxZWlkZlNiN2I5ZmdkUnRmcnRDT0F1SjQxNVRzY1FycXgzMHVpZXdNZzZXbTVxN1J0ZE14VzdGMFFhT25Oa3NiRTNWUmliMWFneFphbHUvOTVCL21GbkN1NUZRK3h0UCtaNDIwUnZTUjQxRGhEWU1DM1d2emp6RUZQa09wbjRSUWY0L3pXTjQ4U09CY2tGS1YvN1RMYUZpcC9ncTJUVEVPV2FKeXlXSVdDUW8wREp2U2lpbitzZ0FTcHBJVDZUdG1QeGR2QVlqN3h3NEdrL3ViVTBKdEJzQlVOeVV1RXh2YVlsTXJRVzUxc3NvVjRWWUgyaVpnZjI5RU52eEgvdDMrdm1oT2swWGREblczeGNncUE9IiwiZGVwbG95bWVudF90b2tlbl9sZWV3YXkiOjQzMjAwMH0.iC2SNUmseAumG9DUkI0dG9lSiXa-WKFi0pTR-nyOGNdEtKYCecmWD7YA4e-Vt8smNGkG3gjAT41YD3Y_4I-JH989HNFEpPVHam75eky0Xjh7RW04334MfEqPbMyK-UgmTicZnkgXFrg4xuWB-aoKFmPrxlOoJm1BHLDfvANr68j6ddUwrBDxPZJ8WWQ4YHDrUP3aj9EsYXWOOlTSk6RP8de7NvdshvKS_1V_aP_NC0dGkEIul4xmmLlrPwPqI7XgEEiYVYkOtRnUJQ9B5_7fCWAe7yzQTd-TquDMYffGSX8qgD8eiRY0b2XG-Mjyaik-GgfsMtqRtLmTRdZ7ebKq6g", + "product_mapping_token": "T1Z6T3JHaFJhUnVzTnFMVjh5QVIyR3Vvd3dCRWJ6cVIwWCtLUzhYenV1UncvOHpjYkFKMlRMSzBNbVo1VSs4djZGeUNZRHltdE9OMlVMcG9YNy9taTFtYmJGYWttK1B3Qi9nU2xJa0JmajlSOEkrZ2U0UHM0TWxhK3JPYmFSVnFtMGEyNlBRMHk4cldGQkpnVFRpeVNCbm9tZWNUMHlrK0VNak5SNzJVOUx1a2FhcGFaenA0T2YxK1djRDNoY2VvY0ZwdW5ncE4rd0V1VE50MVFPKzkyY045U1BubjZ1d1QzeVMvaXRLVk9VMXlqb0Zac1QyQ0tJbWMrZ3A5RTBLNGxoZVc2ZGJyT1dSTElXRC9KaWhvUmxpTFBrUnoyWUtYQzVUanhOU1g5bFdJS3liT2xyS0VWV2pkT1Y4cEtlVjRsMStLNHZrenJLV3NkSHZySVlzZGhYMFQzYzJ1N2hYRnhDVWc5THFtcmloNGpVVmVyT1Nhc3p5cHpYaHQxN0hkSHlWSHlDU05vNFV1S1dUcU8vZXVJU3Mwd2htZ1pNTkMzTkZGYmpyWjVwN0tDRVBmM0ZzdjVlQllEaloxeU93WkpuU0dEL2J1U2VyMHB5QmJjVVc4ZWo0d1FKTmtUcHltU2NDNnQ1alZZY1F5eGxSN3Y2Y0o4MGR5VkJXUFNHRkRSQWwzQTlMdldqTno1T3loWUtEVE9CemVLMWpKSDVaQTE1ZjBONWVBOXlSVHJ3UitpM2d4Y0tPZzVLR21OYUVTa0prZWF0OGRGdzlxNkdXdkowZWZTRC92Nk1pd1BBcnVIY3ZmVzNxdEtXdGFzNWZkaHd3Zm5NTzdOMHVlNGpITUJrcXpNT3BtTkxnS2E4STA0a2hHVVRrZlVPd0NkVTBoZHhoaUdQQlFkNnV0RWR4RCtuS2J4dGE2YzBqckI3QnVaNXEvZXhTeUFya0FqWXUzMGIvTmRiNzNaUnVmOElKOUxTcGk5elN0djNyaE1FelcyVzExUnRhWXVHV24ySGxxSTIrQVpzY2RyRlkvMTdsbGVsT1JXTEUrenF1NUZNbXF0eTUrR2dxa3VRQnJPTXBBdkkxcGEwWVBCdUN3Ymx3MnNlSm52bTVHTXRrUzNocUdWN0hDTTBvY0cyYU5Tc2Y5aDhIYU03LzgwUlFvR3FlcDZvMG1PdTZWb09qVHMyQjNxYU0wZ2orLzFJZ1RIdHhyd2sraFlBWUFFRUhBSkNLUFhPV2Z2Q25NMnMwY0ZwcURUTWt0NXhMdmkzSVExcXFLaW11b0h3VVVBNzdJdlpTNzJOdXcxZ3dDb1BGTnlVU3pSaUpYVUxvQVQ3eDFsSU9ibWhMTSt4dWk0bzd1R2oxSEtmNXZBSlB6S0VvR0lTRnROV2FUVlJhU2Y2NUU4UHNvL1JlZGhlcXdKamZDM0k4YzRmZnNPcXBVZlEycnJGS0NpTXlMeklBYStNcFphekQ4Nmd4Mnd4RCs3dFVJcU9ZdzZ0TGZFb3BtMmo0REhTbkNTTy9nRThWNDFYa0wvb2Zhb0czWldneWJyeUJiN0M3aVBKZW9HL3hrelQ5eEtHbWNkbWxnZlZER01lYk9rSks2YmJiNENLS2g0MmtrTWJ2Um1hdjQxcENsNkRmVy8vU2ljNGwvOWhhbm1nam5ueDRpZXFJWTRpUU13cUtmcS9DQlNaRkV2OEtpMEVPaDJnMlpXTWUvclJrNFhLRW1zb2NhdGREMlB0cFJGdExaeEMvbk9LOEFLczJzbVZRYTI2Q243TXFmdVIrbXBjUnUzTXY4RVZUcjdaRXBQNDg1S3Q1RmRUT01NNjlHOG9HWDVoelkrTjh1QXdNb1NFSTNpRDZYVlJBVGNsdzI1c2p6TmpvNjkyWHVySG9zTXhCWGttSUVQWXBOOUVHMGozYkkxQnlVR3lSSTN5UHFMU0QvSmh6N0FSYjkvSjVYVXdtUm5VUHNiK0xab2ZEc1F0cEdzSCtWbU1DNVpEOVVid0hTdGJRaElWK2l2ZkdnY2lxTEF4eDRHYWc2SW1SNWNLZlF5c0V4TmFQVXZWYUEwbTNRdy9LdWU4UEJtK2k0ODFnSGtzOTNaY3MyNGFob01kM2pMamlGZWtMMjUrT2RTM3g2dnl0QmRRRnlhNitqSzdPYk5EWW1zWjE3WS9WcDkwTjJMRVNDRGkyRytpUy9KOUFqODNDL0hvL1h5WVpYcVZxbDd3dURLVkFGZkZaVXk5ejF1c2xmWGpTWExaak16V3hDSUQzYlVISnR4a0o3cDJrT1FSU2tFZ3U1YUlWQ2dGRXBiL2s3N2ZaWjg0Zi9UVFNKcFN6a3c0YWE5OFpQQytMVVBNeGRwMXBNTHNxelN0b3JRelBMdENHdGd0QUNlSVNCbHRKWFRrMU9PKzcwRGhrdmgvMDJ0ZS9DN2tzU2x5c1lIeUpnZVVyQXc1MENIU1VsUXZJQ1pGekdwQ0VwRmdoYTk2QmJPUlAxMGdGTG1FTXFXNGgyUG1PYVlRUmJhR3ZqdzNub3RzbFJScVZCa2haa3JxRGZNMGhia09hRFJLOGxIODdjbWFxTS9UZGdNQU1EZ1VJK0E1aHpuSUtrVUlJNllZeWcvQW0zRGw3N3FNTEc1RGNVM1hPR1RMRmpHTmttcEc0eTRRdk9UalJoK1JxcmN6ci83VUhyWVlSenRlL1pwMTU2VHEydnpwWlJramdUUHNFNDVPYjV2Wmh6ekVyTEhWWFk1eUZpdStkQjFRRlZoK0lBUWg5YnFpTXBNSHBYTkJqVmswWDlhMmVzK2I2dU50ZVR6WjFzSmhraG1wSDJiTUtPemRmQ3dPUXR6SXpsdGVSWis3MnVjdnJHa2NTcmpIYWp6d0ZzamFucEhqN1Y5SzJjK0JaT0FNQXBpUjk0bi8xRGFjWExBcWI1UDlFMlVzM083dUpSRFFWME1VTXhXdjc2MlNreCttUzVwYWJCMU81RjUvMUMveFFVK1Rzb1EvaFlFU2paZ2dYRGIrd1lEb0lmcXVHSkJPU1c0WjNPSlRzOWVmQk1DZTdGZUVDVzlCSS9YVDVkeWZjOUozSFVHZjlwRHR0dUVPVjM0WjZiRDRGcjg3Y2ZtaFArK0hVYSsyY3JmREp6b2MxcWtrdFpSZUxBMmhldnZ5RWJpRUZkemUwSmc1enJGRE9CeWF6VG1ockUzNyszWFpnbVpGbWNsak5BbjFKdzJUd2I0NHpVdVhicjlyWGFFUTE5TGEwQXp6WEtLWjRwaHRXWEt1VDVSb1ltcVBSNUdzUWVoRTFQVHQvZzBYenUxalh6ajR5eTRYSWxUSVFzL3hRUVI1enhLbEtTamUyc2EyVGdXSzNINytjYjlpbkdaL09OSEMrUDhZRGQvbG56NnRzNUkyV2dPYzZhdUErUDg1bGsxU0N3WjZhUEdzdjFqbFNTZmJGNjVDdW4zdlF2V011T3ZLaVRWRndXUFc1UldXMUhWNG5HMy8vTUxwMU1tNVZpTDA4NHpBcmp6SUVLVFA3bnNNRXhjM2VWY2wraEI5ckphS0dXQU9reWpLelBUeTFGWjcrNDZKdWNTWTdsL2VWUkxCamVaVVcwMDc1YS9XdXNEMUNWMDdLWFNob2N0Qk9oRTRncVZUWWNiZEVxZDZSSXQ0cllKRXR2WHdmUXJ3aUt5VUFiaTBPVVVtbk9NV3owYU01UEFGTC91eWttZ001UDY0TktGTTJMYzY4Q3FLcXVIbWw5NlE2QlAzdW5TZFVwSDFFSjFUT3JzWVkzR1hwbTF3bEVySklIalFtekNxNnlzQkxIMmE1WFE4QXBOb256Zm5pbnJBNzFFaU5FNFpnMzRsY0FURTdLZEQvM0t1TUZZRk9lK1VGVUh0SHJVTFZucnh1Kyt3Smtla0VBY2NrdmlRc3BoNUQzUGJmWG1BTEExaHcxb0FQNy9sVERqMWlaYXVxaDlVRW9Kb1Vrd0F6aDFYeEkyMHNGZFNtbTdIdStmSnV4YzNtRytZeDg1Ukg4WWRxbHI4VGpLQXROZDB6a2ZnbVFabG42VUF0WnR1V2lUNmpwL3NyZHF1WWZpUEdFL3RsWkJ3TEdTNVJQaDIxZnlkYThncExxbVVCS21iekpQYXhncmFrcFJZcUNtSmVUSlRSc2graldjaVFxVWpMUmM3ZW5WN3I2UzNTYVFCdUdvNElJUWFWWml6cEM3T1RVREFyWGFodG1ld3JTZllhZm4wNTc0K3dJeFIycStHWHNWZXNUMHlGcFJ4VzFVQlp5V1RaYjNQYmc3cHdtbGNvS3ZpMGQxeVlYbHZ3RFNDQ2lOWUhKLzhLWE1vUDVrcUxiSTZNR21yTVlJODVzdzJtYnhnQjhQME5oRVQrVnR3UEdJSlprVzEvSi83eWsxTFErNUtYWXNMcTV5WWI0NFVMNGZWU1hUeTk2SDA1TmxDaHRxYnRQNlZ3eWFqS2VEcGhaeWV2enlualAxMVJIOWVwZmZNblE2RlViQXd6bFYwbFdNRGJVN29meGtOdU1EMUlPeFRPRnF3MEltQW9VS24vT01ZVWM0b1JmeHRDVmJxOVBWa2pldUppR29KOUJwM1hUbm5naUlFY2ZjbU5iRTBXWUl6TThTOGY5ajhpOGl1dXV1aXZKM0c5R0xiQ2czR2ZNOGNUanAzUVpZS0NwQ1JBRzlQL01DQTRWQ3FkdlM0MUEydW51dXRidnF1Tkl5YWQrSy95UWdhVzlrTlVxblNneWxvYkhGbDY2dGNBL3FGS2lNUWJ3K0NrWDZmRjlnQ3hCRlZQeGs1UmdQRTZzTk8vZStaT05YRmM2ait4ZVc4VWRZYW0rNkRLNzRaWTRla3I5Y2c5V3RHOUVDMWhQbWg3dlJCK2EvRXZkbFovaEY3cHR0cWQ1cnVDMTQrS0J5WXcvZXRoTVFEUS9qOVlncm1id1BnRDhOV0hoVXZHZ1psMFV1djVJMUVDd3dpaTlCbjNlK0xtUk5IWHRMQ3lNN2pScXJBaWh4bVNaMGRGVFJWN3N2d3J2RHBzbUZjOGJHUlR5cGQ4NS9MYUZ1eE9tWkYyaWluMGFJbCtxN0MwTURIWVZscUYrQUN2OFFDYXNIcXpLWG5NdkVHNjluZ2RlK0hnQ1hjd0U1dmUzOFJvci8xS0FrUTJyNmJkbVhDN2R1enVxOEgyU0E2NTJuKzdOK2NUMFhQY3hFYTlSZFBNZC9BdDdITVJ6L1VueVBZSU5rcDd3bXZXZERJaUFWVWZINy8yeFRKWE50STFDTjRuUDZXQ1krcnB4eDRFQ1BjTUpycTRldlcrbWgwZitHeXZzV3l6SWdZMldocDBtZjFlemZsNVVwRk04elhBbmd2MGNORGtLRXlVNlRjSGpPOWhjSytZTlU2SnFva1BrS3JEdTg4NDVOVDltYU5IbFpKTG1CK1VKcGJyRTM5Q3paMjRxWXhXRFNDSy8rMGM4eSthbWljUlNSb0NEdlUyMy9vaW81b3FiSlJzYldxcklIWThNUkwwajBwbTJ6ZDJEZWJTUDFUOGRBbXBpa0NpQngwdEc0TFBaRmREdTQ0a3FPMUZPWThtYVNXUmFicjR6UzlEV2s5cndRZklORjh1VXpUZjZBdEJ1bDlEazg1RXRNUE1lelZjYm8vWWNCVVN2U3NqbTJOK0Y0RlNFWXU4UXM2K28vLzFrV08zd1dpVThPdEhLa1Ivb3U2SEpTVXM0bml6UlI2RHFYcW5ZamxsUUVkdlVNYVp5M29TQjBNNjZuaXBTcWlWd2dOc1Nad2FVTFpvRFBkWUhueWpTdHljMVMyQXJpTU5VZCtmdUFIeUNXR3puUkxXTWEzN0twOUFUakg2bmRSRCtlaHpXQTNiQ09DdDltd0lFb1V3blhieWcwM0JSOStZcmFsYjVtUWZhVkJiK1IyQjNmSlR6KzMyUXRNUTVOT3d3Y3Y4QWdjZGZsWFA4cjJQWFZnODVaK2UvSTluSTFDVS9hTTNMMVZza05WWjduNVhENW1HRlBOMG0zVmI4QU9aN0JlSFA5WHlYaEF1VUZWMVBPZEgxSDAxWU5XYzhsYTVia1V5UkIxam55Z2xDVlAvbzFkMC9FV1dabnJBY0hwdThXYmJqU2owTzhWRUNLWldNa0lhbTZOWmFIN0pxc3lqMWlFWjlDRWNTK0VLczhTcG9WNi9pTG9xUEVEQnNJWHBaM3hEM1B4YUw1SnJ0LzNDRkx3c0hxSGlRUDZJSy9MWWdEMzRiVnRaMEdkUHdqUllsTkxtRlFqK1pHM2hldkt3VXJMYTZIZlhqd1hIVVBDVWUyM0lrcG9rNGdqb0RER0NGdS93Y1o2bHdXWE5EZEc0ZGhGbVVXcUMyTE5uYkc3R2NQbUZVTm9qcFdVWEVMVlROK3BTTkJ0NnFQTngzUFNYblFTNk9lVWNXdktzYnBwVXNMSUNHZ010RmdZcG00S1hnZHdRTENTODZCWlZUVzRaZjhpV2JPR0xCaW11Qko1ODMxYWtJMU5PL1VId2tLbjBCZXd4MFVRYmE1TVV2MTMwM3BuUmpsVzZZQnQxaW5HY0tSbFdxMzVGSW9KR01JRmZObi9rZHh5aGhYd3kyMVkyZ0kyd2NPUTVYWXUwVjBBbHpYVlJoNzVvOHNodEZ5am04M1IzTkpNc3IxYkpzNWVhdWxnYi9sdnBPeVRpMTVySDZBZ3lyeXVUNVZuUWRiWmJZazB1UHN0QlZIcmRJQ29BdEhScVdzVXJORXhVc2UzUjNVSzA3MXdwcnJBeWVuMmJvMnd0UVdFaVB3VkU4cWNUR1NYOCtKUG1sUGJ3MmhvekcyZ0xLZjY5ZjVtaTFjL1hvSzYvaUNRbjJ6ZHMxUVZRczgxSXNoU2RPSWJiY2tzcjNCRjNCRFVnSDVWNDdQd0tjZXlLTmxjTDI2N1R5YkFsS3NzUE9FalR5aTVSbU5pYUJGc3RSUXB4UXVRS05wSEkyRnlqbmN3SWRxZ2grWlRIOHRmWHlDLyt2QVE3bmZkTjRZTUYrVkMzVkd1Qkl6NjZvQmljN2VtNFVFTzBhNWwzd2xad0U2S2dxM3ljTktPWVMyWE1BZUV4anc5OXJNS2kwbW5FR2JHMFZ0M1d0eXkvL2FUcHdYcjFVT3JKeUNLeWl2Z2U5c2h6TDE0Rmc1N1J2bGFPTTYwU1NzWnA0eHhtYjZ5YUhRRHYrVVdIclNacXNuN1hZd1NBd3VSK1BPazE5Rm5TOWVTWkFMbEp6dzlUd2xuNXFldGx1c2VEUllXKy91cXNMdjQ3YVVHNCt2b1c3ajdYemFlTUt2Vm9MdXA5bWI0UnNuODlwU2NGRTJmaHlQLzZ0U2JjOHJTaENoanZmZGhTQ2Z3OVZmYWNFWnhkQXAreGFJKzIrRncweEJlaVZacW4xck1mSUR1T2p3WkR6VHVqbG5HV3gzTVN3NElXT1puNUVTNGhUNkcveFpKcGZTSGpkV1lIZksxbkJjUXRwY1RqM2pNekkvVnhzNkVNQ044TG5jYXFsQXFzOHgrYzVVeHE1QWNRV3dRVlFkZTUzdnlqY29QK284RGQ3b3Q0NHJ6ODN5OVlnU1BXSjJSWkRWYnNqRitDYXQxOEdIdHJoRFRkTGgrVWUrRUpmV1FuOUZLbmNXOWtncXpDRVMwa09HY29Hb1g2V1JiNXhLN1ErSVRPeGtFck9ERksyd3pZdEFSeStFWHRxZEhEOERMS1o4OWgydnlvQk5NcTBudm5CVjJPSC8wZUc5MDNoQStrbHRIcThZbzA5ZUIwdmQxZUR3Y1ZHV1ZWanMyWXZuVGFGSThQQmNWQk1TeXVPSittakl2SUdjcnBNbVJBMTA1WVhtU3I4MUhkN1YyRjBBTzFVZXoxejlLY0IzL25ZdFAyM3kxdXl3bTJ4WDNjU1NTaHIyMkxFYzBpVCtrcFB6ckU3a0RDUVA4MHZEamdsQ1k3S29LalpDaEg5VE5kZFNMZWpXUUdIRm1HU0Q4a0crM0lldlNFWGpNOXlUak1GZFYrcHNsM1RNd1RldVdPQ3JJVjlIenlWdW14bHpXVE91S0ZwQzlqd3BZcGFhNVJTczAxWTRteHdKZWMvcWU5SFU4eGF4dU9DVUtOanNyRDRVdHdwVkhDb3d3R1I2UG9iL3JMdkRhNG8ySklEclNHVlhjckM4TWk3dUEzTXRSTHpBdDV6SmliRFU0TFdkWEdDOHlKUGFlbElEMzROK1NGSDdNbGNlWnFFY0NnSUJqK2VMajVuZ2tDdWFib1Y1R0VyaUF1eS95bFdveitZSEFiZzNUanBWVzRXMkJld1BXazFrb2hhb3VoQTJBSDVGSldvcXBPYmRJcnJnZWtucDZNZVB3SUhlM01SUG1IKzdFWHJ5QXpZWFcrZVdHTWVQS3JsYWQzVytOTWpDczdpZE4zdmVxSm9wbEZHRDJFT2t3RnVuU1RFU0F5eWlwS2N2ZDNzNk1GQlBsakRtUi9MM3JiZnhsWER5M0VDbGxxNTZ5R2hzZFJGQ1NoTTdtRElMVW9EbW12VXl6YUlOOURwMGM1dTd5c1lreVhtV3dYajlwWGphcXBJMHFRWVlNQUdPWGpUUnQ2TENSV0JrWE1FLythRlFDczRUbHFxd1RpR2l0bjJ4M0pZYmxQMnd6RE91ZTd4UkZvcVBySTJ5NmJCbG5sN2dXWVluNzVlSzZFcTQ1dGJDY2pLb2ZwbkVabXFpcktSclVsa3loZmlOQ3RDVEUweXVpS0JJanBXQXJaaDM4Q0hySlYvcndRdTUwYk9DMjU3b3dET0lZMkZHWGhJZ2htQmU3bVZxdzVoU0JjK3pYTUdzaUt5S3BCNXY3ZjNpQzVsdnpDd2R0elVkRGRxNHdlalJrTVFidEp5cjZPNTJZdm9rNHZ4UjRUUG9yWUxzYk54VFRRNXQ4WVJrM1diYzUrZitZRGpOOHRKSmp1WVlNOUNZQVJrSTBIaEg4M3JreXBWWHo2WjlzRUVNUmFqcG5QVDc4MnllRlgwZDV1aTVBMUpCNGFmQ3cwWi9BeXR2d0JwR3l6UjVZNGZLZGRodGh5Yk96Z1FoakRibUxyUHRibVhGbXQzUFhYYmh6d2JMQlNOLzBWT0UrU2tEelFSUTBIdFZkNkdJV2NpVU5DVFA0MFBPcGtKeFN6N2daTjh3UndYQXVra3FiNG5KKzQzSnFSUCtiT2RsVFdaRW9MdEJCdEQ0NlA4T3o4U2dXNUwxS2RaSnhqZGo4V0RXeVp5Unk2aUZSMFZPNG5oRDZzbWV5L3lkNDJRdzFURS9jZ1ZlbGMrVE1VYkxpc3NDUkd5emlMSzFWOHRETzlLTGFYcEF1aTZBN09CVEI5dDFDcXEwY0xvaU9xTmtnd1NXVVFueWFKWUZTWFhCcDBKMmhRcGVvMUZ6eXdNNkpVdjI4S3JkTWs1Z1lXTlpQQ1NjQ0lUMUkzbTRQU3J3UkkySFJybjFmMHhBN3ZtOWN6TmZWYU5ERTB1K0d0QURYVTNTVDNMb3dENWFKbVZ1cmVYSE9oY0ZTbFpkZjhPRUxMUFd5NjNucTFUOHk2VjNGdkY2TWNMSU1WVFNjQnIrT1g0a0d2eUgzb3Nqa0RFVXFvNXJsTFpyckZFTmNDKys5Y1NWcFdMU2tCalZtVUhoVTlSaTI4dUY4ZGFlMzEwUEszeGtPbEN3Ty92U3ZtRzcvU3BCUEg4NUhJYzdOSGZIdld5bU9pZmVhU1JRYmhDK1R0bjFJWTROalZZSGxBOUdSS2RyVThmZ3ZXLzdKREt4NVc5TkxZYVhNNEN4eDlHamVDR1lCY1Vya1dFbVJCU2wzQUkrZ2Roa3liTUVOdTRzUlhrZDBHbkVMRWdHNWR6VHZYWlpHMFB2WllWSXg3UkFNcms3SXpXRlFoZEI4eFRDKytuMlFGakFkOFA2UUFDMHE1d3loZTdYNzdabjBPSko3NFpNTUtwOHg1MGxNdG4rb1Q2Zks0UkhWMDhRTkZmVENtL3l6aDhoUUg4YW5qMFI3d2VkOVZUdGhrQ3dNYVBMeUtRM3pZeUZUN2hZdzUyczU1bG1BWi9JWWxxeEFMblp3WWFsbWlUZENyTGJUcHM5b0trUFFiZ3lUcXJJTXlsMlpPRnU5a1JiTi9KcTBaYVpzZmVOZ1hwN0Qwb3Z3Tm9OUDh2NS85SjlmU0xpakVRNnZGYzVNNThDckt3SHZaUGRaQllMcWV3TmdWUnRHeUkrSFVscnR2eEdOTnQ0aDBzbHk4a0dQK3ZuZjd1b2d5L2p5ZHlWZk9JclVDcTFhUFNFVGlMcHBMdlZKc1k1SW1JSFJlZEh4QWo1b2hsTDdKSXBwNFl1MGhWaWJYQ0FDRjlkQmFOYmFncmx4WDFlUWJ4djc5QVlvS2hEeFpSMWZLdUh4V1lzaFZwTy9zV0VtVXFNUHlxK2lkYmpTU0t5eFZNdXo5d0dma2d4YnBTYjA5SnJsSkgybWZuWWhIYnd3TzgyQjI4L3NzZmY5QnhjSzlJZXcxQk5IdUJKeDdKQnNrVVRYOW56WGxBMWZrWDVqS3Zud1BHVDF5bjBHTGNmbWpPNXVlVVkxYWVDWnBMTFBjK3htZjJ4K0RDNFhWa0wyUitaSDFmSXdqYWZtNndEOW5yRlR0RDU5VndTNFg1TUVyUGNHTnFtemFiR0M2YWtPVGIwOS9SMTd1TitTT0dLbjNLb0F6MXlLbTN4amNSTzFobjZHM1NhWGFmTEF4ZFFPRVRHNDBGM0NYOVZqdUNSTDUyV1pTS05wR1hlZTBmcUJrUEFPTHJ5eUZCT1R2SW5lbk9TNjJxNCtibU1rci9MYUxPdmNYbVR2bklXaVNFZk9HT0dWZXBic3JNREJEUWY1bXBFRXJCY0RCdStXOTVUb3dQU2NQWjBaQ3ZWbFdTSjh3bjlUR0J1N2JTV0JaaFpNeW51WU1ieXlXVlh6S0g1V3RxR3FxeGRlYUpyN0tISU1WcjJhUTA5bEVOVG5TNmg2VklSK0xGcW9pUjNtUHFZSlByWUp0M0VCbVpxU2lncTdkcWl5UmZtT015dEFCMUdLdlFRZnRLUm00QVlMd2k4M3VpeDF6c0lUYVl5VVdidmlaVnhwUWdwaTdRMEFVUCt2M2pBTkJwaXlYYzhhcnMrSXYvT3F6aFZEeDdRWndXT3NndjJYNVN2K2hSaG9JUzU2UWhoRlZEZVdvRGl5Z1JZNUpadXN1LzFLMzNlQzFwdW1HWHZ3NU5ESHhhNjloSTJRb2MrTlRhOVk1MVppOWhZRmdLbVU1MnZxY3dZeVA0Vms1djBxdXcxaE5RNWJCbThlLzhvQytJZDV5bkZSM3FEZEl5REN2ZDB3ZVFOUTdsVjFKOXlSNFQwNy9KY2Yra3RqME1TTTJpaTJrRENZQ0JqV254eUVrU2VKNW1jSGpWU05iWHd2VVprZVUzQWJCQVJYZnJzVG1kNEdYRDNTemtEYjgzVVZqQWFMTW5RcDM5SWF6U3V5Vzc3ZENKWWdXV2Z5bjZTZEE0SXlnSW1yWEhRdS9WMGFsSTdsR3JoMCsybnlQRkRWUVhwUFVhTzl5K0ltbWNvQlVoL1ZDSndrT3Y2VStGdzhwb3hUWXFmOE82SmhLb3FhMzRabHREM1hodnQxcHQ4T21lZlBMM0dEVnZOdFliQUhINkZodzFpd2ZTVE1XdGhHYkpwRzhMN0lMeFRCY1VVQ2lMdVpYUnp0ajNOMlIrcHlVWlI5L29CcUtqS3d0Qm1VSnI2VU1PRWw0SFBiYkJaWFEvc3N3MzRxU1V1TUpkd3NMSVZwQWdvd0hQc0U3QTE1WHY5UjJvQUZhbjYzY1cvQTFqN1I0cTRXSDFsYTQ1RG1INlYrOTRFM3lUZFdJSjFMU2lFamkrSnJENk90MXhKNTRUaVU3dzJyNG9XQWFxRSswS2tQTGZnOEJyVE5ScmdUdFRoNnh2UG1zYVpnU2tXMVdHdUZTUzkrQ0Jtb3Myc3grQUhLSmh0ZllkSXZuM2l2UVowaTNKYktNekpPTlJCT2ZyUnczdWVGMkFzNkFwK21iVjQyM1pPUDdxUWFvdGlhbmNlMUF3MWcweXNKdzdnaFhPREF3YXc3NnpXTEcvQnZzZGRveVVXcys3YndTSWp0d1pWempwMC92M3cxTVhOQTRXanJvbHY3WXh4VWVxUDZua1FGaEpoSmtGZElTZVJRK01mMkNxV2V6RlFlcmUvOXR3bW94Ym1mUmlxZFl1c2srS3UrMUdrQ1dYUHRGM0greUFjMS8vVGxPRXdXZTFwKzUzNFplRGxjTEw1VURpeWVVYVlCVGRwQmRZNlVhRmk0cFVmeHYwTURyUFBWcU5qUGhWb0J5UUN5dWlDMUQyNWQrbVp1Njg3SFZTdHlWZEpRTFpINkFERkM5d1EvbUhjbDdmU2krMXBicDg0MXU3Rlg3RURnTkJRRDdIL29lWEJjWERzaWZWOHR4MWpFcFZkRDZWejNuVGE4RnRQWUhxdmRYa0dpY2hXenRKbTI3ZlRKWEtpT1NLRjA3MnZxazZhQWhyY1hvSVRJa3Y0TnF2Zzh3N21QSWxOaE5MdHRqcWNCcVdnRXI0Nmlhb21Ma0dQWmNKc3VvSGhVd01iK0Y0UTlKWlU2MHJpQ3M1akViRUhZU3QrWVZoSTRKcnBvbnRFbmxmVnhJOENHTWNWOUNoK2xnZ1JDMjM4ZUhoZnVjcHljbFRYcmFDZG9oTk80Y1BFVkVYM1NoOG9jT3FqU1FaWThmRGRrRFFSR1Byb3gwY3VGdXBxSi9INVRDc1lIMDRSZzI3czNMVVFPVVV5cVl6cVJBSHRUMXFDalVpT2VkOVVDZTRIRzBkRDRuVWRJd016allQR2J6WUxCdzUyOUxuT051RG56dUdndlArcjlMWmlLT21MQ3U2RGsya0k1N0RGc0EwcTRiQlcvT09DdEZlUVJvQnlBeDhQVHRBc2ZyTWZnOVhrYmxEQkJHNXVndk1NcElLTTlYYzV4b3NuNFdlR3JlSFU3Vnh1RjNNdC8xMDNzK1BaYXBHdEk0NFBwY0dLNHROZG01RXVzc2p2eituQXpRRmJKc0pSS1NVM25UVkozdndMUCtHVXFwL0taemtEL3lhN1VEaEdBSWVZZmc1WkJ2VGpCcWpIUEpidnR4MkpsekVrWUgybk1WSk1tcFlPNmpkWlpoZ2pOVGdBbkFhekN6STJXT294MXJLektjR3c1dlFRNkNzUXNqbzN3eDNXMlZQdXhPNTNQUVI5ZzQyUjdodlNQMUh3N2l5ZCtRQ1MwTGQraWQ5T2Z5NTY5YThVTGRTajhEeWE4d3IyYU5vR0N6Vy9aZDNBQXN5dlVoVWpIaVNUZE1PeEpTb3lETzJZaTlxckt2UnJTemUzb1hTQ2UyTUFNekNoK3QwRkR5eTI2aGtLY1dHTVBOb0pWMWNZVWxxc3dxSTM3UWZORGJUbFp2dlMrQlpKWW9LaVJXeDU3Q09tdElCUjlDcGVoWmtDT2d1SzltcTZrZXRlZzBoOXRzY29oNEVZeVJuSnZGYmpPRnI2SmY0K1ozaHlCM21TLzE5V2pYSEgxYTF4VElGSmhPWkFhTC91ZlBFM0R1S3FRajRnaG5kT0gxTGQ3eTBob1puTFVDRUF1OFpJRXJpaEpKUXk3WE42dVNXUUFyMnR6SU0vM3FYVVQ5cHVYUTlTNFdQRkhlRXVrakVYY1lKWkJhL0d3NkN1bEpUcERJeCs0Mk0rSmFaRitNR3piTkR5UHBId2VCQS9EdTVZL0x2Z0lOUEtqVEJiamJhMUZBL1pNWFRHbzNab1Q2TTVxdjF0c2NOdndaYkYyQmVSRjRuYnNveVRtQytSdGRWelY1QjBrZ1N6alN4cDFjWFpoTU1jTnFkL01EOFRIQ054dXJ2OGZMaGZlb09TdHd3ZzRpbkhQei9peEdUOFJsZnhCYU5zVXcxZWo2V2NMdGRMbnU2clhPclozeExodmI5clhoaXRxeXQ2cUFBcXNFSGh3b0s3YzJvZDErUkEralpEdVFaVCsvcnNNai8yc3ZDTkFaaDFKVWZGcm0yUGJpRWpkWVdIMThVZTh1OWhlY2p5WHJSazlzVVNka2RDM2JLVSt3a3BwcjBHMEFNaWJXTzZ5RHFUOFplUVpreUxxd3ZiMWpkeDlwdHBnWW5Mb2svYXdob0FUTDhNcHkwQm5WYXVMM2wvekIwSFEwbDRuQnNNb2RSSjZ0Z2VLbjcwc2pUcDRkblNENDVvQTBOWG11SjZham9RcUJ5b0szcElUanlkUVZQK3h6Y3M3T2xrYklOa0QvVHNRM2h2dGdrTWhsRWRtVUlqQWRicng5WWt2bjZtWjArb0p1aUhnUkRiR2piQXRSeWtMTVVlTDdUOFpraEczM0N5MXhFS29BbHpqdElhcEtKQ0xzOFJGaUtvL2ZCeTg4eVd3RytJZFBRNDd0bTh1Q3oyQTRMczVXNGlNNlF1VjNJMWNFQjNIL2Z4dXd5MzVLRURJdEZCbS9DT0VPZjd3QzR3UjR5THdKZ3RYdmNZQ1A3WlRYM0luMURIa3JTZ3ZXbDBSQllUM21GRU1icFRjb0ozS1RPN2c0bmc0RndpL01qS0poRFVqR2dMeTBnZC9keHZFNS9VcEZxUGdmb3o4Y3FCV0tLNnBKOFNPcllZa1F4a0kvWHJLWVRrZ28xcGQxSzJSS2p0VWZnL1ZvWEV6d2ltL2hESFo1dDBqcDVZRVBYbWNyVk9oQ21NWlFsR200UmVZUWpJU3ViL1lVeHhNdTl2cjUydUdnc2lhc21tUndrSUZhK1hRYWM1cTZubUV4MUl4cDZzaXJWM3A0MlpadXdGaE1Rd1FaV0k3eGtnd01WUmVGQ2xpNUtWeUQwekxkNldCeitTVzYzcVZRdFhqL3hINGRpTnlZMStmVTJ0emVCVGUxaE1YR1d0R1dUWE1DMzR6M0crenRVRHlwL040UGJZYjF2d1FsZTlnSEY2S2RRbC9SUXNXeS9ZV3JtSHc1MkRsYmNpNGdHUlYrWGJsSmdTZ3NJbUQzWldGV21FRTg1T0xySnl0NncrU25ONW1jdWdPNk9yWDNkazdESkpGL3ZSV3l1Lzhvd1ZUNjdpU2JHeXpQR002aFlxNElOT0F2cGwyOVo3U3ZQUXc4b3BRTDE0bE50WHFqN3pnSHVCL25TcHh2c1NCcXVBc0swM2RkWFVqNSt1QTB1YStNTHdtN05MNW93eDhwMmFBcmIxUFdVMjBzQW02R2hHakl2akgzWGQ5eXY0ZFRESzhKVzZBMDhpOTViL2R6NlUvMXozYitiM1Y5N2p2ci9CTEpKa05sUUVFdmJoSVdSbFVhLzRCZmNwbURKMEZZSzJPZ1BaQmZhb0lINnV3ZlVPeVZreEUrUSt2MHhNcEFvM2VVa3l5Smo3Umdhd1VRTTBFUSt0RzYzUWZhZHB2NFVWY3o2Mk1jTjFQOTdyanQvTmViTVVpRTZrS0Vra3pGOWVjWjI4ekJ6ekRrOWpCVFhJSGQ0Um5vbkNEUmJiaVA3KzFyKzF1Yk4wSzJaWTlpSCtGMVJ2OGV4OVVhUG1lYkEwN2lXZi95Z1ZLb0hoYi8zSGlYLzZCOUN2TjZhODJIUFFSdlJqNU9sSnlWdE5lTGhBdEJnV0hUZTU2M2lvclFTS0Q3YU1FKzd5Rm1seVZwYm10TGYvWEV6OEkvN0Nvd3ZmWWY4TTJwSWd1c0NBWW92Q204ajlKSFZMTExMbnlOY084d3Rtc0RRc3FXcXl3cGk1dDZlWXlxOGpPL3ZsYXllc3VQR2d1R2YvZUcxZlo1WUluc0l0SERydXFTRnJaTG03MGF3a2JRblVUbEhndERpQ25XbjN5ZndGK0NTZ1N5aGRsR0l3d1VOMkZidmMzWEhyc3Z5ODl2TmFGZXhITlJJVEJDeTdoZUdsQjRKUTZ2c0k3TlR3cFBlK2pRM2EveW4zbWRCRHkzM1F1U2dtRFcyc3ZwckMzUTIxWWxPeVV3VndSOEphQlRrOGJmRXJSWnFucGpKbjY5S2Z4RVVWZnJLcDhKVGRXNnhzWUJnY3habTlUT2J0cldmNWZRSmlxNytUclNKc1YvWWt0ZzhMUTBzbExPYUduTXlRK2pzYkszS1FhMjRuUXB1bU45WjY1NDBKR3hqb2dHOExRMlpkOGM3UlpxQzVHeHYzZHpKb3pqQUlTbkJJY1RsWWtKOUNvYzJXUjR4QzkrV0JXZkU5WW9Oc09YNXJ0US9mbk01ZGVmTVlxVDA2QmdVd3drUHdGaDlJMjVvd0NiSWlpRzVPNnY4NXhaYm56UGExRzJaejlWekNFQmkwQ0RHcGUvc3lYT1o5SmFMSGhDcktWZFFkNmlCa1BESjdpY21vVG9OcXdmcUNSS2dXZUdXbVBzakJDZVZKMitBUUhNZExFYWVVVWtMQmdjK1JXNXFSWnZMTDVTYkNYYjVGZlVESitkTDFQTm9sTWZiSHpONytrRHRaS1NDRnZvNHhlL21rSFB1K0FKcGk4aDJRamt5QUJQK0prdDJoVUhZYUFtMU9UTXRmbGdiY0JZYVRoS2ZTMndwV2hBT3laRkwxSzZyRzIvTGU5RXhUeVQ3ZmpFbmc4Z2t6Ukx2THRmQzdCZmUwbjBHL3JhWTBRV1U5MTgwNk1nck5XdlZNRkxJdUNmYkN1V1pzdjBKNXAzZmZZdUNmekNTUFNyeGYyeW9HYWpBOTJzM0RUU0FqRjdld0JEbHZ3U05oZEVHdnVCKy9hZ0dXR1U4WUthdU9UL1BtSDM2WDFDekFOMlcyYWtPTmQrbUxjaHMrR3ZyYVBxNk42T21CRmZyWVIvSU1WNXQ0TVZPeGdRcUphYklsSXBIVWpERElsaHZldmdDRFJjMStFanBJWGM4OXdJNk9IbllQZUIwT2VjOUM1RUZuM3Y4MkhvMWlaN1VrczZhc3o0OXpJTjRmRjhDdU95VXo1L0F0RWhEb0o0TjJHTnV5QjVYZ2xPVjI3cTVGRXp5K0pMV1JmY2RNdkxNZElHZDh5MmNER0RCRmJUVHBldFZiTUhhTy9WeDVvUW11MjNkYzNTenVqSjlndjhuUVNPOUpLOVFJZW0yUVIxakVjeG1YMHhiOUNRS2RXM1FvUFZ6UGxNL2VDbXNweGNteXllZFhkK29hdGxSZ3BsZ09WelA5U0o5eXdVVkhuSWlacTF1YTlOTTEyclFGV1djeXQ0Q2R1eStDSHRPVElQbHJVRXAzUnA1bXdSanhhSExRc0VLWHNpUjk2QkZISjRtWFlod2M0SWRiUVEvcUdHQUtoN1hTUGVGWWhEeERRQXBkRk11bEJySEduLzQyaXpTQm1EUGsxcTVVdFFSUnRhTlNseTdBTHQ5d3czMWhlY3l3eGUrR0JCN2pzak9iNnIrN2c4aEptZENoVnZmUk1BWEpSOGRKdStuQTlSMkJEWlVRQ2d1N0h5UE9JUEs1YWpGU2wxWUlBVm95Zmx6WHFId2tWTW9NWXZqb05MRXZNVzhZMGMreURlTVRQMnV4aC8zTENremI3U0FiVi90Zm5XRG45U2txTGR3RllYZjR4eDhCRWU3ZlRnK1hJOGRUbmxPQ09kWSswMVhRaTdHVk05MzlUYXhvdURwOE9TNHhncWFZbVpkUnY5WnVEelovVHp1UmlLai9sRVNBRTA5U1oySE16bnhMZE1WcUVNc2x2ZUpFVFZIUjdjaC9Jd1cwektKWDR5Z3FicERCQkc4dDZSaG1PbzFtcDhmUzRCVHlTOVR4eVVRaThNNjhmYUcweE8vNjRHdk8zbFlTVnJaeG4yUlcwalJmenFUTW5qVzBFUkJacld6cS9hNmZZVE96M1JVWjhrdDMxVWZuUXI3WUFVNFFueFRvNmlqMVczakkzOHdXNmozK2hpSkFpdkNpQ2M5b1lNWEhWVU1kNEZ0SEVOeXVVenNHdkREcjFNSWd4OFczVENIeWMrRGt3elpuempaMFg5d1N3emZERC84UTVyMzVDRm5IRGZIQXFiOXAwSVJSNFVZNEsyQ1d3dnludCtNV3hWVW80ekFmYUFPUk4veXZkNU1uL2ZUQkM1N2FzSGEzREVzYWZnTDZpR0FwTUQ5OWJsLy8wb0NDc1RWejFVYjRGUzlZdjBJdkQzd0xsQ1pyUEF1STFyMVpnREYxVUZ4cjZoMkZmVFdvU2ZSbExUQzNya1RRWkR0dkhsTVhKWjBaVlVGUnlaV3lyeHRqanJ2bnVhSFpPTEhNTmZLT01TU3Y0eUpqaDdOcWVzNkRZL2JxZW9XNU1Dd09yWlhEd1BBcUJZRi9QbG9vSnVPa0IzNGhWeFNjdXd6L0ZDV1FUelNLbDVEeDJyeGx3aXErZ3lBckVML3VrRlBqckRiZnBUbDVNdGc0VVBpNmFhRjMvN0lKMXpONTgwZlNkdDdMRFBtMXgzV0pCc0hQdk5zWjIyWGc0ODZGN2gzMDA2NERseURMMWtmODJSajZnMTRvanFwdlM2SU14Y3dDT3k5Qmo2dXFGQVR5eUNSV25PYUMraDAzSVoxd25waHpmSWtOVHIrSDJsLytuamZ0WjJrcUJuTlpodU1Xd3FkT3dIbFFRNlpReFpqKzFCMTkyRmRveTdVMVlUdElhRW1YcDFaV3FIMjEvTlBVaUFUbDBDcFRGejJRaGJMZmxIVlp0ZENaMjV3RGtSblZ0YlVxZnVhVFk4aVFMbjN2UFRIUTZJcjgvaHlYQUNMQTRsQUlza1FOUEhqMkJzNTA5cTBKNzVUaGZsWjRLYXp5TXh0bWZWQW5tMFpBdnBjV1NXVjRPUGZFU3ArMDZsVFZJbGF0YTh3VXJTc2pHRmZsYUt3Y0xHQnVxSFZGUmo0Nng5dVVGMGR6MWpRWHMzY1kwa3BTelVHUjVvK20yZ1hZNU15YWxWTWN2b2tEcnhBMndEMjN5NHFacGdMNTlDU3lqNFJ6czVuK01JRHpiTGpFT1RsOVN4cUV3Vm5TeEJiMDg1VHdFTVhVWXlvUGZCR3NpUTlZa0tmNTBEWUYwUDdBUWdvb0NuZE5xUzNxaFQxaWZnNzRTRlk2enZNNHRCdTlrZUp3Q3JzU0lCNGVlWng5Y1VLSHVYaGVndktxekVPZXA1ZVZmOHBQb1UyVHN2bHcvYjdEaGNJUjd5OEVQdzNyQkF0bmxOOXNQRUl0TlpjZjhSSWFTTFlnUXJxTDlKNVIrV1pZazNzeW41b3o4T1p6cDQ5emUwSGhqNncrcjBmR2NIZXlxa0hCZjFqbGVSUWczdmpyZWVhbEdHb1JKMjE1OExoYzdYN1RoUFBZam0ydzNOMkd3b1d1UTVtU3NpRWdZbENnQzY3ZkVrQTlndiswMFFVdmwwTFFKVXNXNU1ucjJaOFdURjhqbWJIRUdneFBsdit3RWhLTitjNHJFMzdHUXJQd2FDcGtiQlR6WnBVNHVTd2x3ZUVEMmxBY0QxRTY4UTl6NnRiNTF4OVdHbERRTkhqZlVnWmlDMHE5TlVIa3lha2dzQ2R2citsUWczSXdaeDlnS0l1MmhhbU90VU5VY29mMkFDN2VQb2Nkc3RTbFhFTkZrZTM5dHVLTCtqNUNqS0tsc2tZeGkwdU80L1dwdUJ2MUJKdUJ2NzFBRm9zS0Z4b3YyMWgzcXgyUEVwaWJzZkYzRUZKalBxYmEwUC9RbmwySDNjbjVrbTE4aERGVWVSLy9LUzVOemZLd3RqdXAya1J1MDIrQUN6R3BLbC9BbC9VRCtEQUZKTlZaTkx0ZFhoVnFMVGhIRkovUWt3bnZCaWd0QjVCNXpsWW9TT29TNFVNdEE1R3RKVzFpcE5nY0N0UXlxZnpHTUV0WXp1WSs1YUdab3NUNTlSVWEvbDdrd3lqaDBJY3BPUS9FWDcybSt2T1o0SWIxd2dRSm1Fdmh3WFN3RkZuUFV4UU9VOURHUjFZRG92cFg5TTh3YzlzMlRjRXAyTGVqbmdIcGZHekl3WVNsUG5tc1k3clZjQnlmb3hMWFBKOEpTeVBHSmIzbk5yVDNRWkxLdDczQ3BWbVUzYzQ5K3dIQUxSRytlT0RMeG9DQTlhMlRTWHNVbFNEUlhnekFQODM5TWQyS3dQODNRY3BsSFduVWZyZlZDK3NJQWtUQXcwbDJmdDZnVHhKc2hzQXpySHp1NGx6ZGJjNlY3cVNQZUZmenB4bGkxcEFTTHpSdXVNQ0FTQlU2b0JVSVFKRTJHRmpkbFJyaTdZZEhQWWRUUXFDSDMwSDU2S25zaU80eUNDeFIzdFQxN2VKeWFTK1JjYkp6NHVBZWRKNGo2NVpheFFYM2hjbGhncHo3TStWekp1QU1jUFBTR1JpaDhURGFHVG84dmhqWnM2OW1LU0pLZDZORGlpbkl1ZmdpL3RjQy9vQW92T1M1UFRkNFFyZzBLMGhWQkJXcjdrdGFFU0R4ZkNxWGMrMmVwT2JRSHBpUVg0Znp0NVorS0VzSUJoVG15czdWTThCMlpIOXI1Q01LdFNTbnExL0VxbWZXemszZ1ZseHNIREI0aHlOTkk3ZGFaNTAwd01YVWFnZHk5TjBsVEl2OGdnTG0zTE5YcWU0Q0NVS3ppeEduUndKQTMxL2FwUG9rYi9DOHExVHhveFJ0VWphd0Z4MkZWQnBOcXVVRjhobkZPTFI4TGtWL3FENFZZdmRGWnZuZTltd29ueWR3Qy8zWlpKZnRVZDFpWkpVbisyYzlrdjFiMUY2U2M0bnFpdG5weEJNZDRMd0lUTXZmVUNLMmFsVmw4SDhsVmkwRDhEK002RHNhcVVsdm9Bd1NRTTdqUGdoa2NxdHVGYlZnUyszUDJwaE9VTDhJT2lrT3RFWjVBbVRncFMvN3lmMGhPN3h2WnJNWEw2Uk93UUZLUTMvYSt0alMrYUdUMjNyaHhCdnRsQkZrQnBOQ1RrTWJEY2NxMVNHZllseUE4bmZXSWlJL05lamxhU1oxNzg4Z04vcmQ4bE0ybCtZKzBEZFcvc0hha2NjWTRkT3UvQW1QcXpJRDRwcm1ZQVFHbHdlbmRHUEJVVWd1UzdpcytMT2VMakpIa3h4ckI0L2pBR0R2TFNKY3J4M0NuMmNIRTBPVVJTUjVmUXcrc2dOMkd4eVk2cTZpeXlnNmV2bnJ0Vmh3b2MvZkR2NUtyOFhmZXk5NzFob0ttcFVZNnNWeDIvRWxndWhiTG1obVhDcGc1ajJDTDZDT0JWRVk3NC96NU5hQW1FdGxWcFVWbE1ucHpkNmlkZERLYWxJS3djR25MSVN0dzZiWDZHVGh3ZHZpNFVFUGVPRW84dEY4TUp3UmZsZDBZbDJpakdnM00zWVZ6UzZFb3FqQTZhaGpRY0JkVXZoSkFhbnhHZ3ovSDR3NEFjL21YT0xpMnBzTEp4MnBZSm85dGI0UmxJMkErNVFieVV6NmJzTmJKTVNUMDNNSjRoSnlsdjRzeVBMNUhtMkhtSjc3Ym15d1BrWWs4Ky83WTBFL0ZsY0pKSm9tamx4Y3Y2YUswb1E5a1RFM0Uva3BlbjNVd3ZMMUlWaEF3Ty9SYjU0bXorS29oeWVJaGs5UDRnQThQeVNOc1VhZm1yWFpOZHh5SzhzWHBlZGRSMldjSHJGK0VHMzJGTVZTMXhRcTdnNk9WUnY5dzdHL3p3Mm9uNENWM3p2SkN3TzY3UTRZQ2VycWh5SHMxdjkwRldVdTh0RFJRNkp3RE5hSGo4TkVGVU1FUnVhT0lwNUpTU3pHNndKUlhuSDlOUXltZjZGTHhnQnBRMEJRd3lPRTFwN2U1akdmUVAvUElrMEhzVHdJanpVaVBwdUlxTHpjTVVkNHRjWmhTS3hwTFloVGhOWnhHY2IzTFlvajBQSVR1eGRnb2Ntc0ZITUtKbFdsVHRuQTQ3YStOTFljcmh2R0RwejdOZnlPeW9vaUtBcjQzdXVBRTljemNicUJ3VkYvWVpJOTZTMmlxSG5QVlI2bEd2Z2IxcHJYUUNMdFlUUUwzcEJJN2lHTE03U0lRdGNpYjJyTmZJV1hHODU4S0tyZ1o3L0JvRUI2VE1SaVE9PQ==", + "api_keys_response": "cSs2UUlMVWc1MTVqWUF5OWt0cFROUEErQnV5L2JrUlQvRFFtRVRrV3p3SE5RSXpsSGF5M3k2L29wOG91bHJ3bFZURERkaE9RVUxldGVuN0lPaGJwd1AyNWVkUFRjTTJERmdSdGJlMElhbG95VzBYZllJa2xreVRNdFM0K3NFUi92eTQ5bDdsTnczc2NsaEJWT2psRGp0bDVPVWxONDVoUXlJSjRVSURMRnc2RUQvckdVWWFndkNXbXgzbWFzK3hSTmVQdDRMZ3paakV0bk1vTTRqTFBMc2UrUllseDdSQU9IcnFzQzNvWnFoTDJkZ2hrY0FJYjlkaUxoLzZQaS9WM3JVNzdHalQ0S0hkU2VuSTZiNjRSNDZwcURmU0QwSTArdVNtdjl0U3Bmb0tPUWVMVVgzTHZoVUU5YlF0S21Fc2pRV1dxT05lSGl4akhyOTFLM1k1K1NScmc1cHI3RHhwLzdUS3ZHWjI5cDJuNEJBdlBHMitkY1owald0OStJSVFLVVhiakNuSTBYRDJtMjBDZEJ0d0E=", + "dls_certificate_token": "UEQxY0tjRDM2VHY2QU4vK0FRQlYwampKV1dkRmVrYnN3OWJaSWRVbDJ5M05Rc3ZreTVvd09mUFRmbzhueFpGZnRsUHA5SVo3WFhST2xZeGIxa2ttTlBiMjVuOXc3ckwyV3hvRGt4d1lJb1lndWNYdXZ5ZmVlYkFsZHhyZnpOdUhtOTFzclFYVGNtV0xvb09tOE1CNWxyZDRzVnZNYWE2Wk9wT0puMTE2WXNTQTNIZnJCZy9qdDNmWkZsMEpvRVI3NGNrNTAvUXREbzJic0RFVFhoNHlpc3lvRWRvSEo0L29QRm85eURhMitoUFhocVArdHFMdS9OdzZBdnJuREpxMG9NYUJKVU11RGhTc04ya08xMWppK0lsT1pHRGhsU1BPZ1JjNk9LK0QrSkN3NmVKaEJRTGNUbjY4bXozYngyZWRLS0RQOWRCc1NjYnFlemJUK0E3ajE4N2hEZkFjRUFDcWtQa1F1SDkzbDVXNS83U3dTZ2t3VVYzUjVkRTJHWGlRRUNOc3cvYzZHZ3dib29STUdjaGVvckhyajZpTzkxZjc0S2ZESUFPTXRHZWRXdmlyQ1p2blFBUER6MisrQlRVZFFQRzU5Y2g3eWlxTi9CUGI5MGRrR2c0U0Y2RlR6bnBicVB5aFR2UjZveEp6UG5aUWgxN0l5ekxVQk5vY1ZUSGZJRmRwbEFPbUo0MWEyRmpSRndicEdMd1ZGaXhDRC9mdzdNWVkzN0hRWkJLdStxTXFzRnl0WFk3TWIxOUhweVAwVVhvVTdvaTZNMmFMN2FnSzR3NDhmU3JTWm9lOGJuNlJEUkdpL2hvWmh1aC9VRzZuVURIaVlvdVNsYmNiUm0vUHN4aWVVcG4xZkFka1JPTThEQlFvNDhzL05hbTg1bDJzOGJKN3h3NmYxN1lvQnJEQTBMVXc3M213akJOSFhIMEVScHA2cXlrMTB2d1hEQXFWeDcraklERlNNam9vWDdvSGZUZ285eS9LcHd1KzhxaS9CNHdyU2plbWpub29xOXBEME1ZRUdlbTZtdzIwa0RMSXo1a1A1ejUzT3NFL3RWWXVwdHJFa2RLUnBlelp4Q21NOXQvVzd1MytxR1dVemc3QkVDc1NjeWNMb0J6SmJZRG9COCtOczRBaHlnR1VtS3Q0WnpyK1VhN09ucWJTTWFJOTNiVlpxVENmMlhFMUNTZllwZi91M2x1SlVzbUIrQzZTck5UT1hTUGIzM3UySVB3TGFjajZwdVhHM1lXYWQvVHU0MkZrWVhqMmpDb0dzVWkveDI3aW9NVEc2N0s2enUvenArU2Izb3ZDY1M1VkNNVURqOHBIcmRqRGhhTk9VemJpSXdlZEQwU3VuTmFzWlRmZDhOcEtJSjgyWkFHM1BxMTRWbDhHdGdKcC9uMWdhQmw5QzBqNHprTFpHdHJPazRmYTZpRjVCbWl1cDFSVlF6YjM2d2xyZ2tmV3U0Zmd4UUlwZ3ZIME9XZmFXTTJrL2hrZUNUZnBUTjFDMlA4akc2RGxjVnZLamJsb05yOWc4cFhKNkJNWjZUUE1pRzdnUkZ5UnJVVnNpZ0FBVHRrcVVyWU02Mi9pS3JpM1lpMGkzQjloRXZKTkdHMXI3OWxuRDZMV2tQbVdIUnNYQ2RoQjdyblhPOGJQR0hVbCtkVlFIKzN1emtmZGtKSEhhNVVVWXMzZDRpU052UE5GZkxaUXQ0NkpRVnlpbzlaYk02bXMwT0N3eXRyM1JrL1ZSUUU1alE0dVlvS1ZqeHA4YjJocjJzTk9ESlgrYUtITDYrVXoyNkN3V0ZjVndLZ1l5cTM4aWorOHh6NFQrNURCYjZqT2lveFJJeU1XMmRYYzVSalJXdGdOZnpaZ2RFSkZXRjkyWTJBZGlQODY3MUplS2pYcktqNlJVc2JCVWdudHJHSEdJQ3RSbFRPRlcxU0JHRDhLR1I4YUJ5Tk1SUkx4bFVzdTBEcFlHNkREOS8zVmJocGR3dGZ1T3IzU2dMREpqcHB2UXY0dXBxUFFXK29BaDhSUVJGVHI3L0ZUaVZhWFFZNHc1RXJwcDYwSVN4ejF1dGdrOFl3Zk5aYUVPWEo0cDJBcmhDUlMzMFRyU2hvdDBFMTE1YWkxcnN4SVlwZ05qZjJJWTBkT3V6cnBEbWFsMkJwZGoyRngyZmNMTlNQMVhrM0crc3N4bUJJdDg5NkJNWUVxazU5MHBqcGpUemhuSEFhWHpMVERkS1JPRlJVRWg5T08zSVplRzRPdGVQTlNhdnFpWDJJdzhQZ2gyTnFOc3FuOTE5Z0lPSnRkZXBFdURBM29nTzhCdGw0WEtQcURJZElha0w1NURudC9MaWpVZW1BU05PRjR2bWk5WUc5cUFKdFJqbXhIbERXZ3BkSDVwSzVxcllyTktmODlDR1FUQTJzcXZyb1lFQVJPTTJZQ1QrSHp1NktkL2VXbHo3ZUdudUo3akdKVzdxTmFSdW43NDZWY3E2NllleVQ0SlIrUmtacjlkaWxhWHVyc0xjQWNSeGdIUC9vV2M3dzFoSTdrTUV2UnlJbUJ4WWhYWEF3b0ZOVnl3eDZDSWNlRmlNaWo3ako2RS9XL3BaNGtXN1llL2RDYko2Z1hKOE92THg4Y3RjMEdseE02Z0hFcHB3K2RnMVJtVGQ4dVVVNVE2cjJuQzEzbGlNSFVZdHEzMGx2bjJueG9CRFJCSEJhVXlhb2VtTFN5S0FKTEtSQnNmSDRYOHo2RmJhUkZ0MWF4MGRoRnM5S1JhOXJGSmQ1amNYaHdSb09MQzZlZ29uNVlaSURlL2JmODhsT1F3Y1hxL3VBQys3bnV1amRtR0FoVktOWVU2aGZWbFpTZmwrMDNjMEw1TXEzU2FBTWNrTG1Ya0o0dHFpSUtWd2k5UDFubklHK1Bha0lTNFVOaFhwWTAwMkVGcTFWMmlsRGFkcXBzNS9ob1AxRFE1TXZmOWdTRmwwbEVmdFRxTklNbWdYeW5rUW81SmQyRlI2MzVqRkx1a1hSWlE4QUI1czY2aFZaNVR1czgxQmt4b09KMTNtMGZRUUF1VkVncWFZaUtjRm1qMXM4dUFyVSttRm1jQkIvdmg3MUY0bEpNNjBUV0RIeEUrcnlxNzlveTRybTMxSDF4MWgvSDhhcEJpV3ZCdHJsQzhQYzVPbVBzNG9rZHJhbWtMdW5ldFJSVXJwY3dFT3VLWXM1aExyQmlVZEtlSVRsNGtvWmpRR1grZHg0Z1p6TFZqVVBPdzQ2MHhUemNNb3hiMU93UWVlanRXb21qcDErYU9wTk5LNlB1MTY2NElYL0Q5cUlobVhLblJuY1AxVVFSR1NJMmNYMTdwY1RkaTVLMWFKWDFjSFZxUklUN2hoMVdqcUUrREtyVE1WMTUvZ3hVNzJNMlIwK3p1SkFzMFY3VTc4ZWU4anNpSE1KQmVqMHdUaUgxK0NQRThvNVJwcXd1OW80ZS9ITXlpYStmTUxiZEJpcEhEYm1NV1p2T2dRa3dmeU5sZTZzMWJCZEdtblZyckNFTmVGMVJhY3k5dFk5dUJMV2M5dnlyT1A3VHZsQVFTRGFlREY0bVZPK01QUUx5NWhqVlNWbitMbElsekxQVTFzRnpGUGsyWEFhS2VpN3hIOWZWYnRrYjdyNEdZZUxhQVRQaDYxM2NSUFlSdkFaVFMxVG90anlibmZGdkpmYVdjN3kyWHBaY0padFpQY09JR1RMTEJuM2hscXNlUU5sNytxYVZzTGNVck5lUmhSVVBIL01RQlh4YkZkaTBVaStsalRCZUZqNjRrSzNsNEkwOWx6TDYrcmlOdnFHZ3pjbTVDVEEwbkczaTdpU0VZZGhHN0ZEaGZ2cS9jc3lkSDdLZ1VoVkt3QWFoMlRkWW1meWE5RWx1S0ltZDBZWlVIcFEyUTB4cnhEbUt1SlJXM0pUZTZqNVRidTBxYzZjanJJS2NkOGlkZHNjdkdSREp1K3J5NXowOG1lNThrTEthZnBnUEg4U01keGxkZU43bEViQ1N1ZzhxWi93SE1JcDdQeVZLZ25wOGtvMDdpaU9IWkFRM1B2a1RJZ25KNnhSOW5PMnFsamV0MzBNVkhaaWpPdGUyTXF4UG1JR3FWUmRYb0FlRG9vM2dhRVpwUUREY2xsTHIyYjdJa2NhZTNSeER4aGhKQmdsVDBUV2Z5czJ0bUYyOVcvOHd2ZnIvSzZrRFJuTjBaOFJPTmpTYTdkREVuZEY3cy83VnJlanpKRU1SVDEwQVQxemVSM3NncUpxbEsvbEp4NlFJdGVsNHlCT3hwdjBwK2ZtZURuVDZ4eWtMNkc0ekx5V3hTeGlZc2dvR1NRYy9ycVJNTDZnenF4aS9nMWFaakVUV1NtM1AzZTJRQWFESTVtN2VGbWpDYStJdndTNTNMQmNZdm1lbWRSL0kvU1FzSFkxZUxBdDlISm1HOGxYYnpnNFNYZjd6QUZjZzhxQ1FNM2ZhcmVHZWdONTdUY3lEZ252bDdnOG5KdE9hU2NYbzZLU3NUTXR4QlhYWi9BcEtFZGxpdHB0blpzMjZxaklwZXhycEVXK21DZERreUFCOVdLejBsbmdLTGtNd1ZaQXdRVHJyQ3JIOStNU3o3QTE1SDc0Y3FHUzBqbzNpTkRhRlBLMER1RnlZM3RjdGMzTTJqNHlRYWdCMWxhSlpiUnEvREx1OFpCVGJ6TUpiMjZkOGlVaGtwclVjL3YvWjVYeEltRlA3TlBlc0kzZVJOeTdtYlRyc1FLRSt4aXEremtwRVdodktWRWg4dG9jbERDT0pQOC9maHo2aFdiMkIxYzYxQko2K2owazFCWWJyMEJaMTQ3OS80d1BucHFPbmhxUm1sUGdKS2pueURHenRZU05Gd2VhSVhQdUJCbWJSVTgzT1lJYmF3VlB4T2kvVHJzRVlGd3N2eFYwTVNlRXM3OXZZb3hDblZyRUdiSEdxejBuOUQyYjVEK2MvdDBlbUIwTUc4clV6Y0xwOFlHaXRsUFhkWjFYSnBvZzNTZ2JRK0huc0tOaXI2MXFIc1FiaktWUm93N1RWR2lRdXg0YWFFVXovcUZnUGcvUmRNcGZUZHBNNVpHSXZhWkdUTkpFU2Y4OU9NOTRYbmJwYmZWR2dzY0NPN2NmT2owRFhHS0w5SVpUejF0YUM3MDNzMVhId2VTQ29aS1FOcDVkblpFZy93S0tQeFdLTDdlcVdzdUt6SEF6NUYyL0E1K3E2dkZ5c2ZodDQ3VTlRdnJFaCtITUwvazZhdHlkbUxpU2JVS2U2RFREVzRoQzZ4WXFUajZBczJlOGdnT2NSNzNBZzdYbThSbzFram5XWmEvK2ZGb3VkaVNPNnlvV2ZId05TUDFaS0s0WTUrNXNSdW1SU09FSk05bUp6aEFuRWwrVXV0bE1PRys0ck15cTBQQnVQNkxTTlZvdGVrdHgySERDQzYvcVI1c3poNFhmTmFKMTNPUG1sQkJad3Vvbk84aGZIbXlIbXFYMi82a21wT1JzUVg3RVdsM1M5MW9aVHRpOUQrenhLa1dYcXVpMjFhUlFVV1FJbTNXbHRKeWs2VHJmdFZHWDhmUGt1eERNV0VDeUNtbWZLQTBEbFlYaG1nMk5HNlpRZ1dMeEdHdDA1TmpFeCtFbVR0ZWRQZEIzSkF5eTRHVFNIT2RCYXVoRkVZY21IL2t5T29Sa0d6VGhtTTR0M1hkcGVEaTlxbGNLZXo0dklTWDJ5QVRESzhmZ2VHRWh5UFpTRjZIZjhJTnRqaXJ5aGhDNGthRzc4TlRsQVhhS0xweUpaYko2NkQrNVZrRDF1dFdkWXdRaC9mRUFOSWhyQUZwZVlzTTNmTDZjUzhINDV4MkpDQnQrTTBOUk1pcG1SejE3NGJrR0U2QkR3Y2hjUHRYcnhxc2g3Z3ViYXE0NExJdzV3MkxKU2ZvbW5ZOGRmMnZEU3NWK3VJVm5XbngySFYwUmtkNm9KRkp6Z2dhRi9lR1R5T0txL2pZdTJCd2VlbS9XS21KcHhmU0NrelZCOFdPM1ljTnkxQ3VGM1NmaFc4WDdPeGdITWYxS1VTMVJ2WE5kd3VjNjdQU09JTDB4RS95RWV1c2tiYlRYMWl2T2JIU0VuVjk3SEZaU293RWxrdU4xRkRUSFhDelVQY3dST1lYa3g2VWhmdFBscjR4RHlRbWxhQ1NUMW10WERQWU83c3lKNktpR04zb25TakU2dGZOUUZTUmh6Z2U2RkwxdURnUnVRTm1UcVVsMkltb0JNY2VpODc4TGUyVjcrUmM2MkNIS09oYTZaTmFKSEpMNDFPR1R1cHQ3cDRCNnJRalJlcHMvZ3lsZHVTUGVtK1ZGSnZRWDBtWXdkQVJ2N3pSdUN4bDhheGU5VU1ITXhUamZtNXprZjJOS05wSzFqNG8wc05CMTAyU3FjVndES1hLNWZGWGlYdUtqV256Z1M2bGlLQmxROGVXL0E1QzZacnB5T00rd0xxdGhpN1E3MUJLTFByclRuSDQzNFBTdjNHeldDZzYyZmlwaVlsZUtrdmhqZFBEeEJSdkh0N2c1SFhHVit4RGZuajh1M1JLYkl5WWwwWVAvTnpzVS9WNEJlempqelMwM0NTdmdzRElWMXd0TTFuL1hjcnpDdngzczRibHBLRFhoVmgvUVBHZS9vZFc0V1JWYkJ6d1VyY2ozOG83UVpxaVhJZmw4ajR6SG9OcEtYczA2SUJ3bThPWGQ1OWZrZ0tBZS9DYXlva3BIM2JZZzRpQ3luOFR4SjdlUTNRd2JmTERZVjkySkt2ZFY2Rzg1Nm9hdE5vWDRka1JScm0rNVkwdDFZY2lUajBLdFhDcW5aM1ZTcWZaOTlQdmJNWFdxUHcxK1NHYlhaU1dsU3dWSWVUYVJBYk4wRFpXRHFGbWhxQkVPWC93aU5HNHpwYjVnZmNuaUhxcnhsR3k4V2Q4Q09EZ3c5QS94aVd5TTgxaSs4SVRZRzFtc3FFcGE1SFRLWllwdEN3TWlpMHhPV3ZhWjRXQ3VVamcyOGpsSlkvdlExcTM5UFhRMFdvakpIaTVGMFkwYWY5aldNOXBKWEpKbjFOVVRDVVVSNUdzNjVPREl3OUtINEtBZUhMR083am5mV2NqT0lOU295U0lNQTcvcWtXd2Z5dXMvRTFvODBGbUl4V09yMStyS1pwcjIvalYrdTdGUkwwWVE0SWE3TEZTRHJFN3c2aDdKNjdBWDJNK3ZEbTRZM3RrK1lGaFhobVBDVkkvTWNpYkY2ZlArUzJBWHFrdWhwaUV4Ti9UbWtiZ0N0M01COEZYL1NSaGpibjR0cjk1bmh6cnJRU0Y2VkNaNDkydGpIbDRIY1FUaVYrRzNvNEV1ZEVkcDhIZ25mam91QjFyNkR0UUdCNklWZlcvMjQwbWxxek9pWHZnUmVYbDdLNy8zZzJFRE5uWnlKRXZ6aGlMb2ZHbkhhR1FQU2VtVGlSdFN2Z2l2SEFqWHBLbytYME9zTFppb2xpczh6am5VTlVENXBTRi9Ma09YUDRLMlNzMkwwelhDM2pDMmpsc0lBeXoxMjA4N0dZamJpRGJ2Q0JwMnVJa0p0N1lObVJReGlQb3hvRFArbWhUU25hL2cvR2VScUlJK0tMV3o1NWdNRmR2WS96UjlvM1JEL0RwdExDbyt2ditGVGRIaFU3cldVL09lSXVqd2IwZGFsSUU0NFdvOFFYaTl3R0w4bzRseFA2NUoyMWFoSUhPRHI5M01kNUxiT2d6OFJ4amgwTTllTUFLZGxJYW00TmxHeG4zSTJnbUZGWWlWanJKdGNLamdUdGMyQTBqUVVMWTNlN3pkT1BFb1FsYXRvYmRBM1hwMElOUUYvNEVNZ054OWNya1RqZVM0VnRxWWFESmM5cVY1STAvNm1YZkoxVnU1ZjJRWmFBY2c5cEFtQjd3WlBZVE1iQmRRaWR4a05QaU5GNTdIVE1FSTZmS3J1RG5DQVVmN0tSNEFGZm5mTXNQcmVCUUFkZ0hvOEJGSHl2NkFWYTlKUDNVdWl2T1Y1R0ZVdW5XQXFEYlpMLzFTaS8rWGpwbFBoZnJaSE13UFB2QmFqeHVMK2VCYlFxdDJxalNyREdoVGVJZzhPNG1sTXVJWFFjZE5FaVh2b0liSUQ0SktERDIwMHcwM3NJREJ1cGthamtmWGc5SU01eGQvVGpsaTdSTWR0dUg5cHVHQUFVd2tkRDFvVWJPa2dpTnhORm9YWFdudExSVEd2aENIUTFlbEZ1MGhIdlo2S2xDb2R4bmJSa0hHc05BNjBNVU5CNmMveUYwMGtMTVNLZURTbFRCYWs2bk9GMVV0dVZDc3RNU1ZpYm54RS9PbVZSMUIvL1pTejRnM3lLaU5aazBOQkR3RndieGdlbXNSaXFKT2pubHlXTzQ0aWtFdEx2b1VuRUxDR1dlbktFNTZOUTUvcnpiVkhmbm9XRjNjcnVCcytpN0xXY0RVRG4ybno5SlJwRUs1YnJ6RSs0cGFvdFh1YlBLdG5pdTlpM250eklpK3RFbWt0aGZnc0tEZFk3WFVQNC9WVEVxZkl1bGNUNGJuRE9nYitpV1JsNE1YdWMzbCtCSEVlNHBJKzJrcXBLSmRkdExRcldjbU8xK3ZaZ25TK3J1Unp0RHFrQ0FmM09obHA0dHRvWVArd3JaaWtxQmpmUjFwaU1CTFlBZUlkM1dLNUtQa3NXc1BzaXB4a0paZGlqQ29oRllsMDQxcDRlZWhUQ3pFNDZra2VJazF5Z3N3bDYycGc1ZXk1R2Q4UjRnZTh6NUdhc3AxUnVTS3l5amFMampRWHZqQkdtQXFJWnh2WGJ5cTFOeWJGR1MyajVwZGxUV3R0VHRFZ2pTTzcyUjBIY0t1QVlKRDdMU0h3ZUdYV1dRNTF1NjFNOXhrZVRxZy81M3czaVZXTlFQRmRJQllxaWxZMmxWMGVXek9xL0pQSHlEeGs2UXA2UGQybjdnWVRoU0RoZ3Byell0SEVVTk9hR053OURta29md1FKd1lHSWZRazBDRFl1MFQxbzhDcEF0NjdjdjFrUzRiOUw4a3RmV0lCNVl6U3RmL0V5NlpyaW5rU0lXVXk0TzhnS3lyK3JPT0hpd29SdHRhMFpnQVIvYVYyNitJTjBjOWczMXVnVGdHNjRtU1hldDBzV3lWWHFRMzJmNUJlakJGaU1Qa3NTcmh1bWJ2QVY5S1NPZklFWHZEVUVCS3grcjh3N3N3QitVNS9PV0QrZFRBaXZaRW1PR2FySmhsNnlyT1d4ckMwbTlod0ViZXo2ZnBpR05XczBoZlRiR3NGYjhScnNLRkpucHhvVm9YNU9Ldzg2YTRvUVNVY3J0Y0JHUXRna0lPQlRGUGdpMDFqVnN4aVN3SzdSajM5K2Z0ZWRzYWJveENxNks0eG1keVY2eG1IV1A0dytsZHVNOGtQY254cU1YaTJxdTlTUXozREErNUpkSi9pSXZmeUszWStaRGIwRnJKc25VQ09JRlRUNVhyaDNvcXRNRG5BMzYwWXgybWYvKzJ5eEdibW5NYklYZm56MXEzdHdyd3hHOHR4Ti8vZXE0N1k4aWh3V0U3VDV5aGduaFh6R0V4NUxaZFo1a3MyZCtOM3ZJSjBQWTlyM3JLM3hmTjhaWFc0eGljVXZldTNORTlFT01CK3NTTHA3b2QzTnFVT21aZUcxMmtlUWtjQXJOL3ZhaE1FbFVnY2lVWGF2dEFVTDN1ZVlSaEZXSndHNktvS0FQODc1V2QzdjlDb1M3WTA1Zm0rUDg5ZTFuVHlqVlVRblhxYTYwNlp0Y2RmejhQNERBdVdReHZYM1NVaWRxVEd5a3B3TFJSN2txQi9lVWF0UTQ2bW52eDVNVjFLRFZqSHhOSDZYaWlISVJIQi8vOGh1NzJjVHJlRkNDdkd2M1BVOGxhUzJSK0V2bis2b1Q4NEJCS2RMd1QrYWp6cDJJbVRvSjBrVERxc2ZlaU8vM3hPU3JXYjNmZE1welhzVUFyWkN1ckZ5NmRSNVFxS0tPWTdsNVB5WEtQOHFsajZRbm9PSjRhVkU2WUl0RUFMdjhTWXFxWVk4cm5GQ1ExenhFdFJ4dFJYcHdjSld3eVdRYWNNQVdMZEd3dW5lMWlmemdlajB5SVZvNTBVbjhUeDk5bG1rWURyL2F3Ym9BOEdHa2RPZFBZei9JK3lYZTNJQ1BZcXZJQUxxQUVGS3lYb3BRKzhxS081bjhhSGZFLzVuY2RuQnlRUCtsVTJNR2RMV2ZZdUVMbVNZM00vZ2FaMHJsRE5jVzJqRFhTVUp5SjFBR2Z0bVhUbXBXY2VGMnlDbHMxM2E4Z1NpQ3lDWHNiWUMxcXNoR0dWUSt3MWRaWElsaXVvOXFGM0o1SE45b0VIT1BzdUhiR1ZxMmk5V3Q5OWRoZk5XZzZ3Z3JkMDV2bGZMb3ovc2dqS1BFTURFRHMxTUpjYldHTDFJa21tZGQ5SnJrSWdldTJtWFNyckRqaVorbnpEUlJLMHFHanpLcDZyTjR2djlaTHBiVldjZDhHcW80STc0bFZ4TVMxaHE4SE4rSVd3RzN3d1lSTnU3Z2plN095VmU5Z1RZRDlBdEx6VlB3dWlTOUZEZ2hkb3YxTG9IR2NpNy9keWlKbVpLYkU2MEhxekxnVnh5TmVyK1Vqcmg0R1VMT0s2NVVoaXFvL0kxNFRHRWkyV2xDck1xRHpKVWd2WXpHTlhtSlV2UXVUaExWc0NtWnFNVk5SYmNxNjhjU1d5aDlwWTJaanlINEZ6aHZZWEl2SkdvemV3VFhQVFNaMDdGQkxiOHZwdG1FdnhHYy9sZzNGYUdzdzBqVllhQ3EzbE12YTBhZkNVT0hKM3pXT01EaG9naElUTmtDU2o3VzVaVU5zRDJiS0ZMTmtrWHpaZlU2SVpEWWFZclphcVk3dHN3cTZ0bzd3a2ozMFFpREJ4UjBFN1RNWEJ5dXN4RUY1cTBQeFVLU29MMEtVZ3hyZVNxV3V5YVM5S2x0TGh6aFR1TjdueFMxeWxIWUdVcVR4M1pkN3BPaHFDTVM0UklMVXJiTjhPTWoxOHZmVTcyMHRRU294dUdQMVRraWhYVkJVWVhXekhRVUE5V1NIcHV0K29pcFk5OXJ2RUthdVkzZlQzSzFSWE1FOE9nWFhvenFIeTBGR0FEZVVrQTM2NFFjNHlCWHM3RklvRkcvU1ZVMXZJUTZXeGU1QmVjQW5vR0hxK0dXNlp0emxodXF3UE1relkxSXN2S1FUVzJ2OVZBMVFLOW9weTJncTY1blVmTUtTaCtaUUJtZ0NDSUtadW1Kb0E4MTVkTDJvTkhodkk4eXJuN3l1T3NJc0tGVWJHMjlWSllWTjVLL2FDRzVvTmVRcENCaStyQ2F6UUQ3SEJwODJSdS9tQWVTV0hlRkhQM3RITExrc0hxWlRKQWRQVnZubmllYlUxYzlqdC9lekkzYVNiLzkrVTVjVmdJT2IxQWh6SUQvS0s2TzhuM2xXZ3NRVzg0a1U5OXhPZjFsdU9JMVhkNmkrZkk5bXV2bWdTR2pBeUdRRG5KTWdhdU5YY2U2aTVaaXl1aGFCWUFXdDhTNU4vT1REZmk3WmcwQll1aU5KY1EzSVNVV2dMMVNZczAwRVZINWliZGUxN2tYcHVsOGRUUnlVUGpvT3Mra0ZBUGxOOS9zQ0JlVUpHOUJsdkFmTUtEbkwyRVNwTmUwMzJEb0tWUHpHTnoyU1lvMmtaVGZPTGJWdVJHVnZpcXhtVmZzNmFVRGFJVlRPTGJ1NXVnYXJ6d3UwOUtJcHFRUXlLQWUzbFBLbmphcDA2N1pjT3ArbGdTSTI2NFkyQW9XMkdwY1BvUG5CdVRwN1R0L3hIdlJMV3N6L0svbDFFdHRVSk8wZ2VZaTFMMDdIMUJUYlZ5eHpZRi82MFpENmNMNkpxeDEvaXpVMGdBVk1TbFhBNCtWOFY0S2EzMzJXbFpzMWNyVzBGNUlrMmRHMnNhcVpMcFhGSFdGYms4dnVORTFLTWh5ZnJ1S3V2c0N2eW5PNmdGR2ZPUjZvTTlQc3hyeHlEWHRHb3BBeTEyL0lCNDVwYXZtcnN3NWtkZWZrcldGMTFrKzlBQnV0UExVSXVGbGZGdzRTS0pJdGFxbFVMZXNvNjFsZldBRDBoeWVtaDN0eEROQ0ticWppNFVGRkpQVGFMM1NOUzcySHYwZlZtcmF4V3BacTVLdDZMU3JBa3lmeVhrN28wcEpvUlI4WUcrcDU0am55cVk1aWg3dkRLOW0yaWRuSkg3c0l2dkpqS1JZc2JodytzMjltdGF3SE9VUHV3cXZFMDJiU0c2ZkpHY2xYOSt6ek1xYnJiLw==", + "dls_feature_display_mapping_token": "clQ3OXU1ajRtbjhxZGViTGZEU1ZWdXBybHhsZGgyMTVENU5CRE9ObHpaU3R0S3BkNDJEY0Z4c29pWEVKUE05WHZPYkpoeU5LUURJRWtOVjhoeTJySVlocDZHODF3NnErN1ppUEdJNm9XM09qWHRYeHNmaE9mSUU4TFhwZTdqNFkreDc2VThzYWVhSGxjYncwNDUwNTNYOUZwdlJIWVBqMlFDb1BmUWlDYk1WeWZwMURlWWlGcENQWGNMdm9MQmlJcXJxcWpqNjlkL3ZmOVRaemxuYUVCamEwSFp1a0FCaXlRYzZvQjVZWFVySS9aNE1SOVpvS0l2aWt6Rks5VFdqMUpzVEYwSUdkV0JlYTJnSFFBWE0rTkh6WllaSjlKbjRzc1M4Q1FtWXNMdFVBUHpHTmROOUFtVENWcGZOb2IyemJabFJmOWlDUEhPWmhrVWoxajFPSnBXVUp3NHZPdlB5dUh2UFVwUGh4N1FmdjJxWmtneXM5ZXJuY25waGRYUHNuaFRucHlLOVFuaXFWWUZ2bEJjRFNuaGQ3bHJ2d2w4MVFBL3dkZ09zc1ZGcWtKTmlTdURpOWVveG1GS2FNTmtVcFVHUkpNQ3BYL3hid2NxZllXdmxmSkR2aG1oTkc3VVJKU2p0K05GL1NwWlBkQnN3Z2Q1QzE4NTM1MGNEd0FuWUxQUVRBRXFVdngrSWYycm1WUlN2UzBCclBvWWJWbXcxa1F3czduUU1tZFlMajVIS2tlclY4VDZwY0h1SndIZkcveEEvd0FNSW9MZ2FLL1dkSDFRdHNJQWRsSFYrZXdkbnRsVzBpLzJUV1d0L3FZL0tjbFZEampFaHRDWTA1OHo0bVRoVm9nK0tuc2ZaWVdsR3E1bHVtakdaWnZsV2RYbHovYm80a2tYSktsYWxpSi8weTB1MHBrMDR0Qm42SzcyZkVBbzhFemxmaFpZQURlUG9iNGVueGdJb29oQ1Rlbis0NjFEczBIek9KK1NnNGJ0TlFmU2ppSVpjd1V1blp3b2x3bTNCRDducGt3c2oyb0N5TkdFOEY3Q1hEbzZDN2RVZmJPZ0FoeFBReXJUYWpnZzhkUHdvV3MrQU1kSkt2RHc9PQ==" + }, + "payload": "VC84ZkhaSHl5Y0lva1lkVk4zbkorMXQwK0xhZTBwU2tCYVFBRFA2R05HYVJzbm8ydHlwenBDTHR1bHlqVUdadVg1K1lCMjJDQnJxSUc2U2U5WHR3SjdUc0JmamQ2Q2JmUDdkejZ3R25BRS9vTEN0bGNNVDgraktNNWVzT1lIZDlRK1U5RjR6Ti81bUxvZm4yVUlkMlZVRzhhSDArUVY1RTlnYUxmSWJsREI3bWZPWjFVOGdhVkV6OHA3N2VlNmFOODhEdkFwNWExTjJkemsrV1h5ZHBITm1kZkhyTUZ0d2JaZVlLVVVDVXhzMm9sRU1XVEU1cDR0RXN6Um5MMVhaNUllL3ZOY0hSbVdUT0UxVG5jdUJGQkFQekZwYjcxdXhOZTVIVjVpMjZUQzJtWGlWTnFPR01WTjRIRzAybWg4bitMZTlERjhna0drN1lGMmJnZC8yRnpYZGo3M21HSXRBdStNUW9hdUNlVmR5Tnp3WnlXQnJicllqT0lwOW15WG1BeDMyV3pnZ2tySHZrRlF4WW9oN0FsazJjb1BqWGdienh4UmMwNUd3emVka3pzeWh1WXFMVk15ZThTWitYZmhwaUZwbnEybE4xMFpKdjBxUERXNkEyNng5cFU1ajlVbEJnZlRkTmJGOEkyOHVWRjV2TjV6ak80Sm9hczdrekJ1NWU1YXAwbHc2blhwRzh4a3A5bWd6TWo5cjlla0d4QUpqbVkxQm9vZFlFNG0vTzV0NFUzcDBZZjZ2a0ExMGtqWWE4R2lCeVBiUUlnNjNIN0oyaGZ4eEJKUnJsQUNQb3A2K0xRWm1lUDZ5OVZ5U1VCQmg3cWZ0bjF2Qlhqd2d0SDYxek5kRERVTkRkMWIyeDEzWUs0SnJkQTMwUmxIczU1S2d0dnBGVWt5R2VmanZnUTA4NHI3WHBQazAxWlhyYXBrb29qNXVKa2wrVmd1b24wZnlGMzJwS2F2cjNqdW5KRXFpWWh5dFV1ekJ4dDNsNFF5NzBMUkNZZ2Q3SkZ4dWNBei9ZU1hjeEhSWXRwTk11c3NraEhMVDM4L01JR2JFVXplaHlRMTIxcGZmQUNwdS84cFNUUzI4WEQxNzZtTytjUDRzUTI4Tms3TzZqd3dPSDlvYmJReHd5TUxVVHJoU1NEdmYwUEU2TDJ4TFA5L2ZsUi91NlYxaTh6VWFPcmhXMFU3QUZhZE0yM25Dcnp1QXJHNXB1OVN4aXFsbmZmcDc1bUhVemxXTENXSXJCam1yVHZBRkFZd3lZci81NU1TWjNtOVlXR2hVTWMzS0NaUk1QMElBZ0IrWWpnR2tmQVlqNnl6d3lJT3dVcXIyZnNkU0NiVnhMNVVLcTAwWTNXK1YwQUhxcW1ZQTJ5WC9YOEJTWWJXVEp4MnhzRk9iVU5YMkNQYmQ0SHh4d2Z1dmZsQml2VnVmWENpUy9WSDFqbExUK3dZeW4rb2sxdW45TlF2QUxJZVNGOVNSOE5tL2Rsb21vRm9IMENWTXd3YmRBSjZ0MTNEZTZmb1NoVmoxUlp1VWQ1aXYrRGpscnQyZkNEVzlmbkJKeTJKWWRma1FtYXVlaVhvc2RxU21NOURzMlIvRXlCaTR2T3BCcDhDVTdKcmNqckhOZ3l0Q1U5a0dqeHVlNW1yYmppTzBBbmF3bDU4Y3N3dC9OUVJSTzk0OXEwQ1dwbWQ2SzZhTkt1Y0VhT0V5ZmxPRUNGVzFWdW5WMmRDa3JnODJianU1Q3Bvc1Nkc0Iyc1JaUHpEdENlYmVkREgwaXcrWDFqWFNqSC8yUlRYVURsSDJwUVpjTlBRdjJBVUpsRHFmdkU5K1JSNWtRUW56ZnFEdG5qcHhYL3IxVDZETjhCc3Z0MEFxTlJRMlJhOWNwWHI4VGV3TkxmZEtMb3BDNTl0OGRrQTluVU1zak03cGdyd0tGRVcrd0FuS0krNGxKMzlOajkvTWQwMWphVlV3eXdRTTNXSjRXZ0xyTVMxT0FLVmM5bkdjVXFid1FuTzhtVi81azV1a0NPN3Yxd3FJTWVGd2J3VlhiZ3dHQU1ocDViTVpDQ1U1YlNseWFHdzVPS2Z5cUxndXdqaDZaZ3RLdmNZMERWUmVvWCtxeFEzREY4UktwTCtIQy92YTF6STNQZXdKV05jSmQ1eE1aSC8rMCs3RUJMWG55Ym55dVdmNU9JbUE5V2t5T3BJOGpWYkkwdWNETU9ETnV0UnBlM29abGFtQXphUGQ5eENwUXVCZTJOREZrTCt2Qk84VzkvRko1OWxUQ2hLOU1oTDg0d0YxREphTmxIaHVuSFlBOFBBVnFHTWJTMUgvbjVVTFJSR2VrdzZUanFMVlkzT0NMZGk1Q1NGK3JXa3dIcVFEb2hOWEtLWlpaVXJBWDBhaU54V2VCZTJsSGhmOWJvNHczK3VIMWdGN1RzS1BIS010YTExU2Z6NE5XcHR4dWZpRE5hZDRpd3lwdWlRbXYzSFFyTDFhWWU2WEFTMTBneDM5RUROYStRSCthVVYzQS8xZ1FkVVpmZTZXM2FkcnNlYVZlSWJEQU1kWTNZTFc2TDJuVmw0RDFZbnNvL3doSFQ1eTFuYk1sMXduQnp4c05GYVJTeU05ZmltWjFrSXo3ZTM1Rlc4S0NmVFF6Q2lHcjVSMlU2OTZBemxobU1DRzBMbkZSbHpCc3FTaFcvd2hwWWpiY1BtcHZVcUREYjVROHdyUUZhcEJQTWM5TnBNTEp0R2RuV21vR3JhWnVPcnk1YU80ZHpoKzVQdWl6Z3ViK3BPMTRaU2k4eGdjaWdVZ0FmZ0d3TTBxaVNTQXFoUm5kRDdoQkt1YzV5OWdRVUxnanp0Z2RuTXN0Yklxa2pqVXprVG1LUWZtaXR3YTEzZG9zdXZkbVhDNWlDSEVjdFFCeGxHdklWcWgvSURiOUF5TGtIMEtjLzdCdEtyU1ZNSmFaWlc0bTRpMThnRm9KR2YzT2ZuQmIwaHF5ZVdoK2NKTXVMVVBENThCOEpXaDEvdHZTS0xMQURJZG1PVU1UUEQyMHdmaUp6QkxGMGtyeTJFQ1ZrcGtHRGdjQkxYWlA1a2hYcjd6TWJ2SlRFTmIzN2FSd0ZQNWN1UGFuZDhCejVJVHlZNVhCUlVSMUk2REN0WjN0ZU1POHN0bmVvYnBEdzViMHZHZWRUV3dyQ0NTdnNWOVFmc0hCcEZqbFpwMUErVUxVYm1YQWgzN1E5SThPTkRmNG1WeEpOeGpwa1o2NTMzTk1BalFxU3l5Zzk4WjhUM3pnMkp0cGc3MmN0N3lKYytZYmRwOW5Qd3Z0dXZxSTBIY2lLclk1M0NUTk1ibUYyZXdla0IzeDNBU3AyVE1ybm1sUTRxZDhGT2JQVEx4TjR6RGlMTi9kRHJPanc1UjlST3h3NkpadXZKMFpQcEc0UjZOdFkyZlF6bS9wc2p2c2Fvb1k5Y0JZUjJqbVNydWJKT1NsTWRJNW9kM250Ym5xMEthSUQ3RTNJc2F0elZoTU9FU1FXdWVKUFljNmRmVkdFOXNaOTVVOXgvdTlYVHQzWktJTW9icDgwZEZXalVDQUJVYnA4OXA4SXRBclgyYk83RktyYU1yVTEzVjNvM0tJMGJmYzdWVWdpSVc2dDdYYVhVcGZhbVp4SDlpY2VBeVZOVVdLaWpDeVMyVUIwQWZ3cmNlUEQwU1lkeXpPMTh3UGdQUzZ0Mm51QkVvdHRjMkJlU2FOT2ZKdjNvUStTZDFZb0xJaEZDdFdTMDEvbFNmZUZkeHFmclJyZmZqcnVhWTdrZXFtc0oyMXY4dFF2VDJYS1dmdUlYSHpWWENCWnZlV2dkS3RwWGJlMW1nRVNad3Q2dnZ5RUd5NHJTMGQwZzVFamNld2RXN2d1SlAyd1BJY2xZQVlmbnhCRDBFc0kvMUlqMUxqazZibUttKys3SDRXUnVWeTd1NmNaTTJrbmw1eGFvV0Ivc0lsT1JnMmxYN3dNeFczTEI0ZVFQL0dqanBldmpnR0JxM2FtWkJzd3dUTkJocWtKU0NIUVp3MDRYTjZLbXdZQTE4RU9pSUFnQkgrUGMzQ1M5QW9HeDNhUG9kaysxM2dDYS9TOWJkS0R5eWRXb0tMSmVQdEFMYzBxdXVuUXo3N2E2MDYzSGxvclR0a3l3QTVJdG9vYUJRM01aSXJMandTZkFxS3drNE1vU09NOExXRU5Xb2JqTTdyQ3UyK3BuYjFQL0d3bkdZemY2MUxRN0JMQUpuMlErZVEwYnZEQTE0TmdUYzBhV01pb1ZHRnZzR0wxTGJaV0kwT1ZHUXJCQlFNL2pMUHRQa3NKQ3dnaXI5NEhMRU5UL2ZLU3V5THErdE1pY25xN0U0K2lHMWIxSjhwM21waHBJT1A4M21UZjZaR0w3MnlIcnVHaUdhbFNDWm4zRkpvN2pkeU9xQzJxMjdBT2FIbGF0VnhxMGtYZm5TYUZVNlVrcThCdCsyNFNZcEx0OTh2a2hBcloxejZWTmhFcmZ1ZXUvYktTNGZFOWJ1dEd4UExlNlBDZFVnTkNjMnM0MGZvM21qbnUyS200eEtGV25vbkRjWnBOQlE3QVJ6SEdLMzdjakx4R2pXT21TTUJSdk8ra3JrWEp4aDNDYUJVU3gvdkFrTThZMm94Vi9CQ0o1UDlqQm9NdGFLOTZiMkZnWDNBM3oxOVNib3l1bHZmdEFUVVBSc2xFaW9ma1JoTGlpUllBN3FTVkxWVk9vczdoU2pXWlQrbitDK3FXTDBRVWZ0Rm80VEFiT0R5K0JYUjdVeVI3TmFGN3NzYTNZVHpPcHhHMmxsckVYKzJsZkxscTBqVlpEdmpiUkVTR2g3eEM2bXozcHpxZFBxaUdpblByeFlKakM4ZEYyNjZRZElSMEJCMk5Yc2NIbVBxVHVDU2VjMGYxMWV6SExqTUhrWXE4TXRseThOaEFzOG5KM0JxcnhRVzNVckp0Qkl6TFZFUjJhRlJqR016YVV5R1FkNWFHK2lkOHpNVktaRFoxNDBzQzZjSG9vQStIWlB6WUhQTW90dnhCQ1VTcUMrdFdTdEJXWW05Ri8xR29zdzQzVkNuZHlpei9rbkI1T1ByYTlKd3RMa2hZS0M0MHViZGc1M0Q0ajAvVHNKeHJKbmFpQ1lVdWt2NlJ2YXo4Vk40amllSm5QVmRYQXZmM2w0MGJhTlRoS3c0WHV0YUZMc2RNblkvU2N0RldoNzJVNmlLTEFXczBRemhMektOYXcxNW40TVowRTlxMU1oSnhzNi9RS3VjejdSZXNwQWQ1aEp0czZLdjhvcldsMFlkM25OWDVpR0dRSzJ2NlpiUGZhaFpoUDh3RmZWSmtBSjNWZGloczJOY1hKU216OXZBK0d2eGN5Q0tGMFVKaUxVWWxIbDlEblltZEtJaU1WRWk0T2xZN1hESzNjck1McmdTS2t0cjdZeHJFaGN3ckxaS3luWm1iUC9ueVJ1OVhydXRIZWZnQlp4eGhFeUZQeStlSzZHTVFzVGRnb0NoQmQ3UGp0Tmd1Z1h3Ym9PWitIL05lVW03cGJwWVZINmRRVDhJeFNWNDV0NVNMOG40VUVJY29wbkV4TitSWHhCR2VQa2NMTnJXdUVSKzFCSVF6UHNyc1JQbTdHZ0N6WnQ2NzFDeWt0K2RNRjBxMFNLbjdKaGREY0tUdE54YlBvZW9CV1EvV3FwQUh1RXlmMGdEN0JSVHpoTTZuWHNKaW42cUdwUDZKMWxXSXVrS0tGL3Vmc3E1Ynh3RTV3NlVQcXgwMUhXQnRyNzZuRE9rdkhKTE9SK0plWjE5RkdMZlhSN2NoSnorRjMyS0tCMzVpNVRzdGtvZ1l2S3poUkExOUNPS2hIYURIVTVqNjQySmx3OUJGb29Yc0dKYkZVY0Jhb1FGaVh3VVhKaWpkZzA1NDV2UlgxRW1kTEV3czBkb1ZjdFZUUEc5RkZiS3E2dDdJbERlcXhiRzA1VlFZV2Z0eWJwUjhlMitBYnpCakdKY04wY0pzazFyUXNGN1AwWk9JQ01HME1QS1RvN095bjVqOUZ5U3ZYL3RuVjJYWGh5cHMydlhxL3Z6WTg2cTIzVGZRMTh3dGJOUnFvUnBvWjVreE8yMXBIU1ZFMUFCcnMvT1ZhRTcvRFY1c0xkcEZUSlBKSkdvdnBleEVKUTZDRlhpaHB3c3lXeVovWXMvMk1IbVJ4eENHZDhUMU5JR3dSWS9YSlJlalluR0tyZFFRVDJsNFU0MU10bkR6UTJHV1Z6V1ZxUi9OZVgwakpuSDdCTHVjaXJqZk8yOE5YWlY4Y01ZK0ExT0xNdXphcWQ0cEVrY1pWQkFJamVDOVBPSEFsbTdFc0JpajhOejZLUTMvS2hoVkxxYjUwUG1Pb011SHBuRXlZdDJSa2VqQjZxRzZKZEJ5NGExWkgyMlUrSE9rYk9HV081MVFyc2xRbW1Wb2RGd2ttZy80SmJKakFKTUU5cU1WV2RHNFBxbmRqNE9xdzlnNVF5WTZiSlpockJkVGZQK3FEektwOFlpeEpnWWE5TDFqVWU4YkgxcVRFYXYxTkM3SlduUlBsWWp6Sk0zQ1NoUGhKQ09ZeXZiYVNuQU9hNXBPSTcyUFFMNHRiVWRJV09tMGgxdEQyY2JLMmhrbnZVMWppb3RWTnBDYVpVZ3ZZUGk3K2JUSjdQa1hwbzRFRmlYR0JXek1TdUZRR2Zyc1lINDEybjRlM0Y2NG1FbWZhLzJyZk9iZ0ZGZXBJSGFkUGlVSGNieFNjcWhHZTdyZkt6Y0dHNXhKZFROWHRRVTJDbm9GTUp0L3J2c1pyQmZ3NVFjN0J6L3BxSmZJWnpVSkRMaVFXRDV1eHNVd2xldjl5d2ttM2VyOHVFY25OT0huei9Jb2h4a2NIZXl1cW8wVDBPWFNnM0RmM3hLOElvbDB4c3NnTkZKRjNqaFNvS3k3YmN4dFhCVkxZWXhTOW50UnoxT3lEWlFwamJwVDFnSTJyM1cvVnpCQjBqbnlTRTNrSGlMc1ZHaStJdlNQMzlXdUlvdDk2dUxPN0xpRmlIOHNkYTYrWDdvdG1MTnZMS25GL0pHSXJsQTFFb3pkZGpwOWxhendtMm5iMTBJWkFKU3BVU3BQQzlBQkU1Um1wckMrU1J6ZXI4SlZ0Ry8wQ1Vud2Rtcm5laWdjcm56dHdhYVFlcFdLU0FLNXhQTXdneGRKOThzVEN0SG5yakF0c0cwVzBFV1Vxd1dWa3JIenpKR0RmSVBXOEJwN0JjcUlvNnlHSkFRUFdvYXJPQ1JPY0llT0x3bGpORVZQcmZnOENNREc3d1VVWXdmd0ZBamJFR1ppZ3ppQ2VKYVpDeDdCVURWNEFoYlcrSjVGUnVDWU1rUEZxdXJoNFFCSW4yNi9UYU9pSExiNmlNVUxlR3ZvWU85YStDdnZ4Z000a3FOU3k3WmVCNU9uelVidDNlQ2FxaG9rYkV5UzVua25ZaWNKMTdRYWhaMjc1UzBENDV1Mm9ycHl0RkZubzcxdVBPY0pSWGlSTjU4amg1NGJLMkNIaDFma05ndDRaNzVzZ3UxQTdNWEk0UTlIVlpqM0YrSmQ2bjVVemkyLzNnV1hZSHZWMlpqYWMwZ004Q2piK3BFUi9pZEUzbjRMdjV6TGRpc0VwSVZnMDJNQlFuL2pkWHlZRUswWTdITzBLV2RuUTNHQTJ1bTJUdEM3a2puZjVtZ1E4QzJaYnNBeVlVMnkvZXVCbHEvMjRqVU5NUDVXRVByVkZ5MFgzYUVGY0w2RnhtSDFrQmpoanlZRlp6WlRjNkV4c01CcWhNdFZ4OTZZOENUTFZ3Tm96a1dyN2hPY0tsRXRyL1JYQ3U4Tlptc09MT0E4b2NzNExKYlRUakZwZUcvZGJHaTVHUkI5Z1RqSytiQmFnK3pucHN4dVh5MTNRc0hZcWhWVXRXVWROSHhiM1FzdVBabjlvWGhZRkJTMkpHYVVoeEtiMlFLdThxYzJyWlVUenNKQllab25ZT0RRcU8zd1IvbHRiaTNFU09VUXYvNUdpYVpLTnJZbkFneFNwWmRYUUVCb2NXdndtclFrZVRMSDh5SWkyaFJZL1Rzakc0OFVqaElISjJlc2JIRkZtRkJNSGVHaGtWdnFpczl0YUVsTDQyOXh5UlhsbCtBVUt0V2psQUZKdXg0MGJWTE0vSDREQUIxNFplMC9XWlFkL1Zxb3pjdGZENWthQWJaRTFFYWFxZW1zRHBURUJldlZqSktlbithZi9lMjhHZUlNcDc0OUZHaFBUWTVGaGpHOGpnN0lQbUM1Y05hNjRtSUdtNGRub25rdHNFWSt2Z2hjRG5HUmdseHFrSjc2MVRITHZzQjZabDNnRHB2WW9FOXZsR2VxMFYwSXRPTjlUSVlTbTFuZC9aeWd1S3RhejNsOFBCOGJnUUpnTlEyMTVvSWdLMWxSLzZHVGg0QlNZejRwUjg5a000ZkFLSURIMGs2SFRYRzhDdlp6QTRSZW5BVk5Ecjd4VkVicWNVV1lqY2VlZ2tqdm5XT1dEOTQvQ2l0cTJvSE16emRjcjA3b3A2akEvZHFDQ2Rva1IyL1NCQmRhYTBBU2UzQ1FEQmFKd1ZjTWllbVh5MmFJMEJhcGtGVzR4VW1wamdGb1RrbHhOS3Y1MURnWUpzU3BHM3VMSWRKNlRVRDEzK2tKc05pMEJIZElEcldaMmpaNmhzYUJjakMwNUlKcUJraWRtM09ua1JkckdTN2YydTBwNHlReUFmWkNyTG9hclcwMkdYcUdISDNseUgzTzY2OXhPTHRDTVI3aFUyVGlyMXNsZ3VJY05aMm1NUUZPNHJ3d3hFSmkreVFZU0FnOG9KT2NuQ1FPdUllU0VxMjNMeEU5eXpMZTlySHU4eERrRUlHLzA3RjVOYys2QXhHQmJVMSs5RjJ3UjF0Z0hIYStDZWY2cURTZFN3NVROTXE4NFlxM052bFB6S3dNUU1MZnVWb08yMGV3ZC9zbDJQSjFBZGpoMjJyOEU3NGxNa3BmbVFxLzRYWEp1eEpkczJ4NmZhaTRpTzRWNFNsSS9venI5MTVEUnVGVXJOZEh3TWt0RlJrSTY2SnNkUmZKdmpYcGI0SFRhemJRMEdwMmliSEIvSENEL2ZoZFJGcWpFSWhBZEM3R2xWNDFJb3hrcnB0WkdFVFF2Y1NPd2RodHk4RGZKZ04wUklhaDAzeGo3TUJSbnVtM1FaT2tFYWZnYlB2SnJEeTl3ek5hM0hiOHRWOUw3am43Wk9RcjcwMkFJWGI1YkpzaUFXUy9NdytIbm1vVUQ5V0pOY2d4VEUwaU13ZmhLbHFjYlZVZ3Z2MzZ1QldYSGNIY1R5SkEyeWpKMkMrNFpyeGt0bGJCVml0dmJEUlZkQXhTWDgwUTVMZzJIR2R4MVJad01WWnphdnZUYjk0dTBmSlRxcktJUkUzRHZQa0lObjZ0cEhHWE9QMTRpaGFXV1RqamNTS0tmN0JFZjNEemlFTUMreUVwWnR0N1pKNGIxdThqN2l2VUNVd2hmMXRXQUpDUzlqcTdIRG82bXI0VnRsRHhzMnR4ME5zSEJkQkNrWjU0QlZ1dk1RSlB5OEJBbi84dVhDUzQ0Yk1yWG5BVGxIbCtKYngwZXpzazRpUm9rQlJrMmJTQVJXWUJiZDFxek44QndFekJSY3owbDJkVXcwMWtEaE56Wkl5Tko1YVlLbWJYdUQyZUlXZENSTSs3dU50NFd3OGRONnBsbytZWDhYQWx6YWgxWHFIL0xpOVVxTGFycHM5S29HNTVsek1XU3BScE91OVhSUVBtOTZyU2FYekxzSy8vdUI2b3VOdnkzcWhLZjJFZm94RWFaekkwNzZXUDRNWEc5QmsrUlk3L1VnVDVQOTk0Mk9FQUxPSDdpdG1ISGxXa1hoZC9PSFVYc1FwYUZIeWxvNFlLL0g5Vk8ydE84R0hhNkh4dzZDenJZWTM0SEt0VTJUcjhFd05JWjlPdFg1RkRFWG5vKzJMeHZ5Y0FsVHFsNXBmS2JJcnBQRkYxUWJTbWYvNWpsQmRXRFNRN3RKcVB6dzMxZnR5RnBwNS9tbi9Icm1EVnVGY3Y4MkRLV2R3TThDSW8wckJXcFlWak5YR3h0VWVyUXRxRzAvamtZOWNxOEJLYXhEVzl2eE41WnBaRW9YaDE5NDkxOEpNWFdOam01VTU3YmlUdlBjU1AxS2l4RDJyLzkzMkRHakorRVgzVFlhR0w3UzlFb01UZnVBa1RsUDliTFhIbzlQZzVtNUtvUkZiUFhVb0VBREgwNFV3N0tBTlNhSUdScit2YnR3RW1wU2czUUhuR1NvblVCZ1pFa1VVc2wrU3MyT1doalZWYWprek1WYUdsUzBpMzdJOEovamF0Q3gzZkw4VGc2Z0RtMWZVUVlZMjVQblpIT2ZUUmJtbngwVUlhL3dpYWEvRmFFSTA1VzFsL0p6ZjFjaFpPOW5vVTc1K1Z6b2VESUFQbmNKMFROaUZkL0tmT0x4OEhFSm1ONW4weWw2ZUYrTVNoeS9EcDRZeVJld2s1QlZ4ZjJhbEI0cXlpaHZKS0VuNUZtaEtRM25SR09PekR0cDdMOW14R2w4Mm0xM2o4R1MxZVRYR2w0b3hqcmYzU0ZhMEJSSlU1QnM5UEpQSzMvTGJBV0dNcmZrTFBiUlpjakdoTmtoejJEZXJwbnE5VU5aVzc3WDVOSnBxQkpjRDVpMXkzS2txY25reENzRnEyVmtPaWRUK00vODJueG5jLzJIL3YvZDY3RGNtRnZ0ZWtacjUxK3hod0tJdVdwY285elhXeFRHTi9VSFM0eWhXL2ZtM3RNTk53dFFUbXMwbks1eVh4Q1lTQ0NDb2hGRFYwUGRneGJvUkt1bFV2L1FDUlJXOW1aZ0duaVJoaE5xeFpoRzhXelpXZWJkSlF5YzFtK1dpeWIxRTJETE1UdmlCVUZWUU8rWUVZOWkreVhKUWdxenJRTVE0QzBuQ25DMnBMbmJLRG0zMGZSd1F4ZHRRcnpvQWVPSHNyVllSVVMydWRoVjhJK2ZxUDNJSlZxa0RiNzlUdjJiM1JYRHJsZzVHYUdxU3ZMcmxwWENmeFFLRzJGY2pSMU1XdFdURWRDK3JIeEhQUmpTU3EwOUQrVXpZR2Y1VGd3OVBLWmpKL1NHWkJNNnNubmxhVWt1ZFVHZmRBeWZTKzduWEYvaHM3cG9TclZqTmhCT2hxR0I4VGhzWldna3U4Y1B3dTJjSWRvUE85ZEJ4TVRQRlpPZlBCdFBWUlZBa2hBcDhZdmdMSlhWczN2N3RnR0xVT3owWXZLYmJzekhkYUVKaXErU0UxM1IvakZHSWVMVkhReDNrYTZOUmlrbjhYNW9GeEFNKzdmNExzakwzZWJRcXVqR1h1WnhpTUZLeC9XWHlzK1U3ZkgzZmNkMUo5SkhJNy9HMTM2K3VLSUxkTkU3RVBLZGlsQmZCeHhib3c5VWRMeWE2WlFJK2dsVzEwZE1mbVlEUHBqdVNXaWtYakJ3TXRQanpnQWNvaTFSVnRMa1lNZ2NRc1FUMisxUGlwbTNaeldSTExQVENJTk5sYXBqeFRpaWhQZFJLbFM2bnZwUHh5TDN6UFU2VEFJTExwaXdjTE5kRmFUOGl1aUZGV3dGNEEyUlE5YzJsV0VXd0xPeWtiZzEvWnBNTjdneTZwdFM0V1NyUHpsQmZKVnlWeS9zSjJYaVJlY2FuV1pVUFgrK294eE93TDZLdUpFNGd2aXRoOUtveFNoVXBXRmRLcGhIc0xvQyt5YW9oZ1ZiYkxtaitSelFlNWx3YjY0NVM5bFZSS0lsaHVlbFJSWXVVZGNMTjJDVUxtOEM5M2lMSTFtalc2MnFGbnBSaG52U2lNME0vemRLYTY1NE9FdnMrUkZpVDBraHRtclo2N1pXc0J2cFQwTUE4OTQyaGpwUHQ3WVBLKzhqUEFXK2p0VCt5Um9hejg0SUhqeTZuS29CaHpvdDhlSVdrZFVyVy9TN3IzM2QwU0JjdXVZVFRWdnNNZUFDRG1mVWc2NnJCVmZpclRCcDZvejlWSWl2VDZ5U29SMTRSNW1SVGlXUnBXamFMT2RUYkxDdDF0bVI4WEp0SnI4bEdhejdYYnBkRFFxd2pZV2dXSms5SUtOZENleVZJSWtVaXVwTzh2VTdpL3k4Q2tUbXlWdGp1a1ZxS0x2TGxOUHV4MnJ2dngwbGQ2eWhYVU9WNXVBd2o2MC9ZRGttRTJUbEcvcml6M1VNd204Q2ROUWoyQkdkcS80WE1wVWlLbThhMGlnbTY1WElmczJSSTdJZjNGZklua2lQUlgxd25KS0U0OXR6S1NjdlI4ZTRNcFdibzBRZ21MdEFQeWwwWFhKZXBURnVQVmxFZFNiTFNQSmsrSnVaeENTeiszbEpZTVdtck1HV0lnV2VyeFdoOFZhUVdZWm1ZSVgvRlMwVjI5Wnplc0Y5YVpabnhIeDJ5VWFjQ21iU3JOaDZiRmRidFJqdlhEK0xBWCtpY3lRMVNyOG1tY0ZzNDhhWGNUNi9nWGhaYStxMzQvTml3Q0Q4YlBVUExEeGlEZU9TYnVvK1VIRThOeG9GV0ExdllPOUw1MkdsNTNET2FlOVl1Q2dlcjFZcTlKeDhIV3Njb0RGb1A0R1d2UU1mVUNCSnVzZk83MmpOQ1RTaVNFMnpMNjRMRzNpbmxDeVAyZ3NZbEQwUFd5TkJwWVBLelBSZllBdXVvS0cwTzlpbnZoZElzQk9TRmRFZ2Z4ckh3cFJnTTllbWRNOHN5MEpLbUFKQ1FKUGZQdVEwWnRGVzcwcDZkb2htM0ZxQnFLUVdxSTNtaXRnbDNnMGxtVXk0Z0F4anN4ZjRrdjhCd0JIVW1Xb3FCd2d3M044TmdRbVhaQWh2NGhoTWRnOWxJeFdLV0UvcVJDS0NsMnhvTit4ZUpua1dPcHljcW1SNjdORWtsc3ZTTEpScFg1SmFleVF0TERUOHdTQlBoLzdlYmVGZ1RDRHRQRGxQbFRHdmkvYkNVNzZHMjUvd3JZTTFuM05xcmxod3h1VW1aa1JFZzVQTUx2OHZnMzBxbGZwUWQzak0vM0pNMkNXejJ5NU1iRXh5blB2cWlJUHpwV0p6OGVDOXF6YnA0MW1CQmlPdDkvRmRGUFhYTmxCVWRtSGlZc1VkQWRSY0ZDWE03WTY3d1kzSDFCRisrTzR0NmVpVWhjbmJxNHdmK2Y1a1NMVGI2SmNkTkUwcVZNTTg1c1ZkZ1h1NzhCckp2WGh0Tm5GdGMvaS9KVGhibkhzQ0w0czRQRlNnc2hiUUV3STdodW81WC9UVUp0LzJaU2VDODZhRjBZSTBQUytrQ1BNVGtuZkJhajVmTlA2Uk95WDhJS0lLQ1BWd3VDS2VhM3RGUEZTUWJxRG05Z0FEa21ocnZNdHZrZFAzVVR2UC8ydEJxeDlDemFPendUZFFNSVlzdWcyeDJSdktKb3o2aG9GdHBGVFRva2VnOGc2cHFDOE45RmlGc1dJY2lZTXh1UHR6OXdzb2FSb09nU2hlaG12MHdCZTVmaUJIb0ZYTEM1UWhMS3JwR0U0UVlYZTlBSTVUK3YxSEtBczdYVGxLWFUxNXdidjBVOXJQbEI3VVFjS0t3cm0xTFZYZjMyaFlTOGs5SDZVOWJpcitKWWI1LzRDeDBMZk0ydW4zMTRKTVZOZ0ZFQTIwQjZxS251cVkw" +} +``` + +## Debug on my DLS Instance + +For *logs* and *patches* see [src/nls/patches-and-logs](/src/nls/patches-and-logs). + +This [Private-Key we have](LicensingFlow.md#public-keys-private-keys-certificates) - in DB-Table +`service_instance_artifact`, Key `service_instance.identity` +`si_identity_private_key = self._get_si_identity_private_key(service_instance_xid=service_instance_xid)` + +### `LicenseFileInstallationManager` + +> `self.processor.read_license_payload()` calls `LicenseFileProcessor.read_license_payload()` + +
+ `license_file_installation_manager.py` + +```python +class LicenseFileInstallationManager: + @retry(ExceptionToCheck=InterfaceError, tries=3, delay=0.05) + def license_file_installation(self, event_args): + kwargs = self._validate_and_return_args(event_args) + service_instance_xid = self._validate_si_xid_header(event_args) + + # ensure no upgrade job is in progress + self._check_migration_job(event_args, service_instance_xid) + + request: LicenseFileRequest = kwargs['request'] + try: + si_model = self.dal.get_service_instance(service_instance_xid) + + deployment_token, payload, product_mapping_token, api_key_models, dls_certificate_token, dls_feat_display_map_token = self._read_license_file( + service_instance_xid=service_instance_xid, request=request + ) + + # Register SI if it is UNINITIALIZED + self._validate_si_state(si_model, deployment_token, event_args) + generated_data = {} + generated_data = self.dal.insert_license_file( + license_file_xid=payload.header.license_allocation_file_xid, + license_file_timestamp=payload.header.license_allocation_file_timestamp, + license_allocation_list=payload.license_allocation_list, + service_instance_xid=service_instance_xid, + product_mapping_list=product_mapping_token.product_mapping_info, + api_key_models=api_key_models, + dls_certificate_token=dls_certificate_token, + dls_feat_display_map_token=dls_feat_display_map_token, + si_model=si_model, + _license=request.license, + generated_data=generated_data + ) + # Audit this in case of DLS + if self._is_dls(si_model) and generated_data is not None: + for value in generated_data.values(): + if "la_xid" in value: + self.audit_event_processor.audit_license_server_installation_event(value["la_xid"], si_model, event_args.get('headers')) + + except Exception as ex: + log.error(f'Error processing license allocation file for service_instance: {service_instance_xid} Error {ex}') + raise + + def _read_license_file(self, service_instance_xid, request): + if not LicenseFileInstallationManager._is_dls_pre_registered(): + # if its not pre-registered then go the standard route + return self._read_lf_with_si_bound_keys(service_instance_xid, request) + + # X - THIS LINE IS IMPORTANT + si_preregistered_private_key = LicenseFileInstallationManager._get_si_preregistered_private_key() + try: + # X - THIS LINE IS IMPORTANT + return self.processor.read_license_payload(request.license, si_preregistered_private_key) + except Exception as ex: + # if decryption fails with SI pre-registered private key, possibility that user has acknowledged on NLP + # so try with SI bound instance keys + log.error(f"error decrypting license file with pre-registered identity key, trying SI identity private key, {ex}") + return self._read_lf_with_si_bound_keys(service_instance_xid, request) + + def _read_lf_with_si_bound_keys(self, service_instance_xid, request): + si_identity_private_key = self._get_si_identity_private_key(service_instance_xid=service_instance_xid) + # if it fails with generic SI private key, try with SI bound key + deployment_token, payload, product_mapping_token, api_keys_models, dls_certificate_token, dls_feat_display_map_token = self.processor.read_license_payload(request.license, si_identity_private_key) + return deployment_token, payload, product_mapping_token, api_keys_models, dls_certificate_token, dls_feat_display_map_token + + def _get_si_identity_private_key(self, service_instance_xid): + # if this fails look for global private key because it means that the incoming file has pre-registered token + try: + # Get SI Identity private key to decrypt this license file + si_identity_private_key = self.dal.get_si_artifact( + service_instance_xid, + si_constants.SERVICE_INSTANCE_IDENTITY_NAMESPACE, + si_constants.ARTIFACT_NAME_PRIVATE_KEY + ) + return si_identity_private_key.value + except NotFoundError as ex: + log.error(f'Error fetching artifacts for SI attached to this license file', ex) + raise BadRequestError("Failed to process license allocation file") + + @staticmethod + def _is_dls_pre_registered(): + return os.path.exists(si_constants.SI_IS_PRE_REGISTRATION_MARKER) + + @staticmethod + def _get_si_preregistered_private_key(): + _global_private_key = PrivateKey.from_data(os.getenv("DLS_PRE_REGISTRATION_PRIVATE_KEY")) + return _global_private_key.data +``` + +
+ +### `LicenseFileProcessor` + +
+ `license_file_processor.py` + +```python +class LicenseFileProcessor: + def build_license_payload(self, license_allocation_file_xid, license_allocation_file_timestamp, + license_allocation_list, public_key_string, deployment_token, + product_mapping_token=None, + api_keys_response=None, + dls_certificate_properties=None, + dls_feature_display_mapping_token=None): + # Generate license file container with laf and preamble + license_file_container = LicenseFileContainer() + product_mapping_token_base64 = self.generate_base64_encrypted_string(product_mapping_token, public_key_string) + api_keys_response_encrypted_base64 = self.get_api_key_encrypted_encoded_val(api_keys_response, public_key_string) + + encrypted_dls_certificate_token = self.get_encrypted_dls_certificate_token(dls_certificate_properties, public_key_string) + + + encrypted_dls_feature_display_mapping_token = self._get_encrypted_dls_feature_display_mapping_token(dls_feature_display_mapping_token, public_key_string) + license_file_container.preamble = LicenseFilePreamble( + deployment_token=deployment_token, + product_mapping_token=product_mapping_token_base64, + api_keys_response=api_keys_response_encrypted_base64, + dls_certificate_token=encrypted_dls_certificate_token, + dls_feature_display_mapping_token=encrypted_dls_feature_display_mapping_token + ) + + # process license file payload + license_file_payload = LicenseFilePayload() + license_file_payload.header = LicenseFilePayloadHeader( + license_allocation_file_xid=license_allocation_file_xid, + license_allocation_file_timestamp=license_allocation_file_timestamp.isoformat() + ) + license_file_payload.license_allocation_list = license_allocation_list + + # Generate license file response + # need special UUIDEncoder because license_file_payload contains UUID objects + payload_str = json_dumps(license_file_payload.to_dict(), cls=UUIDEncoder) + public_key = PublicKey.from_data(public_key_string) + encrypted_payload_str = public_key.encrypt_aes(payload_str) + encrypted_payload_str = base64.b64encode(encrypted_payload_str.encode('utf-8')).decode('utf-8') + license_file_container.payload = encrypted_payload_str + + # dump LicenseFileContainer response to JSON and base64 encode it + license_container_str = json_dumps(license_file_container.to_dict(), cls=UUIDEncoder) + license_container_str = base64.b64encode(license_container_str.encode('utf-8')).decode('utf-8') + + return license_container_str + + + def read_license_payload(self, license_container_str, private_key_string): + try: + # Decode whole string object into LicenseFileContainer object + license_container_str = base64.b64decode(license_container_str.encode('utf-8')).decode('utf-8') + license_file_container = LicenseFileContainer.from_dict(JsonUtils.from_json(license_container_str)) + + # Decode preamble and payload + encrypted_payload_str = base64.b64decode(license_file_container.payload.encode('utf-8')).decode('utf-8') + # X - THIS LINE IS IMPORTANT + private_key = PrivateKey.from_data(private_key_string) + license_file_decoded = private_key.decrypt_aes(encrypted_payload_str) + payload = LicenseFilePayload.from_dict(JsonUtils.from_json(license_file_decoded)) + + # Decode product mapping data + product_mapping_token = license_file_container.preamble.product_mapping_token + if product_mapping_token is not None and product_mapping_token != "": + encrypted_product_mapping_token = base64.b64decode(license_file_container.preamble.product_mapping_token.encode('utf-8')).decode('utf-8') + private_key = PrivateKey.from_data(private_key_string) + decrypted_product_mapping_token = private_key.decrypt_aes(encrypted_product_mapping_token) + product_mapping_token = ProductMappingFileContainer.from_dict(JsonUtils.from_json(decrypted_product_mapping_token)) + + # Api Key preamble + api_key_models = self._get_api_key_preamble(license_file_container, private_key_string) + + # Cert response preamble + dls_certificate_token = self._get_dls_certificate_token_preamble(license_file_container, private_key_string) + + # Feature display mapping token + dls_feat_display_map_token = self._get_dls_feature_display_mapping_token(license_file_container, private_key_string) + except (UnicodeDecodeError, BinAsciiError) as be: + log.exception(f'Error processing license file, invalid license file: {be}') + raise BadRequestError('Invalid license file format') from be + except JSONDecodeError: + raise BadRequestError('Invalid license file object') + except ValueError as e: + if "Incorrect decryption" in str(e) or "Ciphertext too large" in str(e): + log.exception(f'Error decrypting license allocation file : {e}') + raise BadRequestError('Invalid license file for this service instance') + else: + raise + except Exception as be: + log.exception(f'Error processing license allocation file : {be}') + raise BadRequestError('Error processing license allocation file') from be + + return license_file_container.preamble.deployment_token, payload, product_mapping_token, api_key_models, dls_certificate_token, dls_feat_display_map_token +``` + +
\ No newline at end of file