@decaf-ts/for-fabric 0.12.6 → 0.12.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +177 -146
- package/dist/for-fabric.cjs +2 -3797
- package/dist/for-fabric.cjs.map +1 -0
- package/dist/for-fabric.js +2 -3901
- package/dist/for-fabric.js.map +1 -0
- package/lib/cjs/bin/cli.cjs +2 -2
- package/lib/cjs/bin/cli.cjs.map +1 -0
- package/lib/cjs/cli-module.cjs +107 -3
- package/lib/cjs/cli-module.cjs.map +1 -0
- package/lib/cjs/cli-utils.cjs +2 -2
- package/lib/cjs/cli-utils.cjs.map +1 -0
- package/lib/cjs/client/FabricClientAdapter.cjs +2 -2
- package/lib/cjs/client/FabricClientAdapter.cjs.map +1 -0
- package/lib/cjs/client/FabricClientDispatch.cjs +2 -2
- package/lib/cjs/client/FabricClientDispatch.cjs.map +1 -0
- package/lib/cjs/client/FabricClientPaginator.cjs +2 -2
- package/lib/cjs/client/FabricClientPaginator.cjs.map +1 -0
- package/lib/cjs/client/FabricClientRepository.cjs +2 -2
- package/lib/cjs/client/FabricClientRepository.cjs.map +1 -0
- package/lib/cjs/client/FabricClientStatement.cjs +2 -2
- package/lib/cjs/client/FabricClientStatement.cjs.map +1 -0
- package/lib/cjs/client/collections/generation.cjs +2 -2
- package/lib/cjs/client/collections/generation.cjs.map +1 -0
- package/lib/cjs/client/collections/index.cjs +2 -2
- package/lib/cjs/client/collections/index.cjs.map +1 -0
- package/lib/cjs/client/constants.cjs +2 -2
- package/lib/cjs/client/constants.cjs.map +1 -0
- package/lib/cjs/client/crypto.cjs +2 -2
- package/lib/cjs/client/crypto.cjs.map +1 -0
- package/lib/cjs/client/erc20/FabricERC20ClientRepository.cjs +2 -2
- package/lib/cjs/client/erc20/FabricERC20ClientRepository.cjs.map +1 -0
- package/lib/cjs/client/erc20/index.cjs +2 -2
- package/lib/cjs/client/erc20/index.cjs.map +1 -0
- package/lib/cjs/client/fabric-fs.cjs +2 -2
- package/lib/cjs/client/fabric-fs.cjs.map +1 -0
- package/lib/cjs/client/fabric-hsm.cjs +2 -2
- package/lib/cjs/client/fabric-hsm.cjs.map +1 -0
- package/lib/cjs/client/ids/id-extraction.cjs +2 -2
- package/lib/cjs/client/ids/id-extraction.cjs.map +1 -0
- package/lib/cjs/client/ids/index.cjs +2 -2
- package/lib/cjs/client/ids/index.cjs.map +1 -0
- package/lib/cjs/client/index.cjs +2 -2
- package/lib/cjs/client/index.cjs.map +1 -0
- package/lib/cjs/client/indexes/generation.cjs +9 -4
- package/lib/cjs/client/indexes/generation.cjs.map +1 -0
- package/lib/cjs/client/indexes/index.cjs +2 -2
- package/lib/cjs/client/indexes/index.cjs.map +1 -0
- package/lib/cjs/client/logging.cjs +2 -2
- package/lib/cjs/client/logging.cjs.map +1 -0
- package/lib/cjs/client/services/FabricEnrollmentService.cjs +2 -2
- package/lib/cjs/client/services/FabricEnrollmentService.cjs.map +1 -0
- package/lib/cjs/client/services/FabricIdentityService.cjs +2 -2
- package/lib/cjs/client/services/FabricIdentityService.cjs.map +1 -0
- package/lib/cjs/client/services/RegistrationRequestBuilder.cjs +2 -2
- package/lib/cjs/client/services/RegistrationRequestBuilder.cjs.map +1 -0
- package/lib/cjs/client/services/constants.cjs +2 -2
- package/lib/cjs/client/services/constants.cjs.map +1 -0
- package/lib/cjs/client/services/index.cjs +2 -2
- package/lib/cjs/client/services/index.cjs.map +1 -0
- package/lib/cjs/client/types.cjs +2 -2
- package/lib/cjs/client/types.cjs.map +1 -0
- package/lib/cjs/client/utils.cjs +2 -2
- package/lib/cjs/client/utils.cjs.map +1 -0
- package/lib/cjs/contract/Address.cjs +2 -2
- package/lib/cjs/contract/Address.cjs.map +1 -0
- package/lib/cjs/contract/AddressContract.cjs +2 -2
- package/lib/cjs/contract/AddressContract.cjs.map +1 -0
- package/lib/cjs/contract/AuditContract.cjs +2 -2
- package/lib/cjs/contract/AuditContract.cjs.map +1 -0
- package/lib/cjs/contract/BatchContract.cjs +2 -2
- package/lib/cjs/contract/BatchContract.cjs.map +1 -0
- package/lib/cjs/contract/MarketContract.cjs +2 -2
- package/lib/cjs/contract/MarketContract.cjs.map +1 -0
- package/lib/cjs/contract/OtherAuditContract.cjs +2 -2
- package/lib/cjs/contract/OtherAuditContract.cjs.map +1 -0
- package/lib/cjs/contract/OtherBatchContract.cjs +2 -2
- package/lib/cjs/contract/OtherBatchContract.cjs.map +1 -0
- package/lib/cjs/contract/OtherLeafletContract.cjs +72 -0
- package/lib/cjs/contract/OtherLeafletContract.cjs.map +1 -0
- package/lib/cjs/contract/OtherLeafletFileContract.cjs +76 -0
- package/lib/cjs/contract/OtherLeafletFileContract.cjs.map +1 -0
- package/lib/cjs/contract/OtherMarketContract.cjs +2 -2
- package/lib/cjs/contract/OtherMarketContract.cjs.map +1 -0
- package/lib/cjs/contract/OtherProductContract.cjs +2 -2
- package/lib/cjs/contract/OtherProductContract.cjs.map +1 -0
- package/lib/cjs/contract/OtherProductImageContract.cjs +2 -2
- package/lib/cjs/contract/OtherProductImageContract.cjs.map +1 -0
- package/lib/cjs/contract/OtherProductSharedContract.cjs +2 -2
- package/lib/cjs/contract/OtherProductSharedContract.cjs.map +1 -0
- package/lib/cjs/contract/OtherProductStrengthContract.cjs +2 -2
- package/lib/cjs/contract/OtherProductStrengthContract.cjs.map +1 -0
- package/lib/cjs/contract/Product.cjs +2 -2
- package/lib/cjs/contract/Product.cjs.map +1 -0
- package/lib/cjs/contract/ProductContract.cjs +2 -2
- package/lib/cjs/contract/ProductContract.cjs.map +1 -0
- package/lib/cjs/contract/ProductStrengthContract.cjs +2 -2
- package/lib/cjs/contract/ProductStrengthContract.cjs.map +1 -0
- package/lib/cjs/contract/SegregatedPrivateDocumentContract.cjs +2 -2
- package/lib/cjs/contract/SegregatedPrivateDocumentContract.cjs.map +1 -0
- package/lib/cjs/contract/SegregatedSharedDocumentContract.cjs +2 -2
- package/lib/cjs/contract/SegregatedSharedDocumentContract.cjs.map +1 -0
- package/lib/cjs/contract/User.cjs +2 -2
- package/lib/cjs/contract/User.cjs.map +1 -0
- package/lib/cjs/contract/UserContract.cjs +2 -2
- package/lib/cjs/contract/UserContract.cjs.map +1 -0
- package/lib/cjs/contract/index.cjs +20 -20
- package/lib/cjs/contract/index.cjs.map +1 -0
- package/lib/cjs/contract/logging-context.cjs +2 -2
- package/lib/cjs/contract/logging-context.cjs.map +1 -0
- package/lib/cjs/contract/models/Audit.cjs +2 -2
- package/lib/cjs/contract/models/Audit.cjs.map +1 -0
- package/lib/cjs/contract/models/BaseIdentifiedModel.cjs +2 -2
- package/lib/cjs/contract/models/BaseIdentifiedModel.cjs.map +1 -0
- package/lib/cjs/contract/models/BaseModel.cjs +2 -2
- package/lib/cjs/contract/models/BaseModel.cjs.map +1 -0
- package/lib/cjs/contract/models/Batch.cjs +2 -2
- package/lib/cjs/contract/models/Batch.cjs.map +1 -0
- package/lib/cjs/contract/models/GtinOwner.cjs +2 -2
- package/lib/cjs/contract/models/GtinOwner.cjs.map +1 -0
- package/lib/cjs/contract/models/History.cjs +2 -2
- package/lib/cjs/contract/models/History.cjs.map +1 -0
- package/lib/cjs/contract/models/Leaflet.cjs +2 -2
- package/lib/cjs/contract/models/Leaflet.cjs.map +1 -0
- package/lib/cjs/contract/models/LeafletFile.cjs +2 -2
- package/lib/cjs/contract/models/LeafletFile.cjs.map +1 -0
- package/lib/cjs/contract/models/Market.cjs +2 -2
- package/lib/cjs/contract/models/Market.cjs.map +1 -0
- package/lib/cjs/contract/models/OtherAudit.cjs +3 -3
- package/lib/cjs/contract/models/OtherAudit.cjs.map +1 -0
- package/lib/cjs/contract/models/OtherBatchShared.cjs +137 -28
- package/lib/cjs/contract/models/OtherBatchShared.cjs.map +1 -0
- package/lib/cjs/contract/models/OtherLeaflet.cjs +3 -3
- package/lib/cjs/contract/models/OtherLeaflet.cjs.map +1 -0
- package/lib/cjs/contract/models/OtherLeafletFile.cjs +3 -3
- package/lib/cjs/contract/models/OtherLeafletFile.cjs.map +1 -0
- package/lib/cjs/contract/models/OtherMarket.cjs +3 -3
- package/lib/cjs/contract/models/OtherMarket.cjs.map +1 -0
- package/lib/cjs/contract/models/OtherProduct.cjs +3 -3
- package/lib/cjs/contract/models/OtherProduct.cjs.map +1 -0
- package/lib/cjs/contract/models/OtherProductImage.cjs +3 -3
- package/lib/cjs/contract/models/OtherProductImage.cjs.map +1 -0
- package/lib/cjs/contract/models/OtherProductShared.cjs +3 -3
- package/lib/cjs/contract/models/OtherProductShared.cjs.map +1 -0
- package/lib/cjs/contract/models/OtherProductStrength.cjs +3 -5
- package/lib/cjs/contract/models/OtherProductStrength.cjs.map +1 -0
- package/lib/cjs/contract/models/Product.cjs +2 -2
- package/lib/cjs/contract/models/Product.cjs.map +1 -0
- package/lib/cjs/contract/models/ProductStrength.cjs +2 -2
- package/lib/cjs/contract/models/ProductStrength.cjs.map +1 -0
- package/lib/cjs/contract/models/SegregatedDocument.cjs +2 -2
- package/lib/cjs/contract/models/SegregatedDocument.cjs.map +1 -0
- package/lib/cjs/contract/models/constants.cjs +2 -2
- package/lib/cjs/contract/models/constants.cjs.map +1 -0
- package/lib/cjs/contract/models/decorators-private.cjs +2 -2
- package/lib/cjs/contract/models/decorators-private.cjs.map +1 -0
- package/lib/cjs/contract/models/decorators.cjs +2 -2
- package/lib/cjs/contract/models/decorators.cjs.map +1 -0
- package/lib/cjs/contract/models/gtin.cjs +2 -2
- package/lib/cjs/contract/models/gtin.cjs.map +1 -0
- package/lib/cjs/contract/models/history-dec.cjs +2 -2
- package/lib/cjs/contract/models/history-dec.cjs.map +1 -0
- package/lib/cjs/contract/trackedModels/History.cjs +81 -0
- package/lib/cjs/contract/trackedModels/History.cjs.map +1 -0
- package/lib/cjs/contract/trackedModels/OtherAudit.cjs +124 -0
- package/lib/cjs/contract/trackedModels/OtherAudit.cjs.map +1 -0
- package/lib/cjs/contract/trackedModels/OtherLeaflet.cjs +121 -0
- package/lib/cjs/contract/trackedModels/OtherLeaflet.cjs.map +1 -0
- package/lib/cjs/contract/trackedModels/OtherLeafletFile.cjs +71 -0
- package/lib/cjs/contract/trackedModels/OtherLeafletFile.cjs.map +1 -0
- package/lib/cjs/contract/trackedModels/OtherMarket.cjs +90 -0
- package/lib/cjs/contract/trackedModels/OtherMarket.cjs.map +1 -0
- package/lib/cjs/contract/trackedModels/OtherProduct.cjs +83 -0
- package/lib/cjs/contract/trackedModels/OtherProduct.cjs.map +1 -0
- package/lib/cjs/contract/trackedModels/OtherProductImage.cjs +65 -0
- package/lib/cjs/contract/trackedModels/OtherProductImage.cjs.map +1 -0
- package/lib/cjs/contract/trackedModels/OtherProductShared.cjs +105 -0
- package/lib/cjs/contract/trackedModels/OtherProductShared.cjs.map +1 -0
- package/lib/cjs/contract/trackedModels/OtherProductStrength.cjs +91 -0
- package/lib/cjs/contract/trackedModels/OtherProductStrength.cjs.map +1 -0
- package/lib/cjs/contracts/ContractAdapter.cjs +2 -2
- package/lib/cjs/contracts/ContractAdapter.cjs.map +1 -0
- package/lib/cjs/contracts/ContractContext.cjs +2 -2
- package/lib/cjs/contracts/ContractContext.cjs.map +1 -0
- package/lib/cjs/contracts/FabricContractDispatch.cjs +2 -2
- package/lib/cjs/contracts/FabricContractDispatch.cjs.map +1 -0
- package/lib/cjs/contracts/FabricContractPaginator.cjs +2 -2
- package/lib/cjs/contracts/FabricContractPaginator.cjs.map +1 -0
- package/lib/cjs/contracts/FabricContractRepository.cjs +2 -2
- package/lib/cjs/contracts/FabricContractRepository.cjs.map +1 -0
- package/lib/cjs/contracts/FabricContractRepositoryObservableHandler.cjs +2 -2
- package/lib/cjs/contracts/FabricContractRepositoryObservableHandler.cjs.map +1 -0
- package/lib/cjs/contracts/FabricContractSequence.cjs +2 -2
- package/lib/cjs/contracts/FabricContractSequence.cjs.map +1 -0
- package/lib/cjs/contracts/FabricContractStatement.cjs +2 -2
- package/lib/cjs/contracts/FabricContractStatement.cjs.map +1 -0
- package/lib/cjs/contracts/MigrationContract.cjs +2 -2
- package/lib/cjs/contracts/MigrationContract.cjs.map +1 -0
- package/lib/cjs/contracts/PrivateSequence.cjs +2 -2
- package/lib/cjs/contracts/PrivateSequence.cjs.map +1 -0
- package/lib/cjs/contracts/auth/decorators.cjs +2 -2
- package/lib/cjs/contracts/auth/decorators.cjs.map +1 -0
- package/lib/cjs/contracts/auth/index.cjs +2 -2
- package/lib/cjs/contracts/auth/index.cjs.map +1 -0
- package/lib/cjs/contracts/bootstrap.cjs +14 -0
- package/lib/cjs/contracts/bootstrap.cjs.map +1 -0
- package/lib/cjs/contracts/crud/crud-contract.cjs +3 -2
- package/lib/cjs/contracts/crud/crud-contract.cjs.map +1 -0
- package/lib/cjs/contracts/crud/index.cjs +2 -2
- package/lib/cjs/contracts/crud/index.cjs.map +1 -0
- package/lib/cjs/contracts/crud/serialized-crud-contract.cjs +2 -2
- package/lib/cjs/contracts/crud/serialized-crud-contract.cjs.map +1 -0
- package/lib/cjs/contracts/erc20/erc20contract.cjs +2 -2
- package/lib/cjs/contracts/erc20/erc20contract.cjs.map +1 -0
- package/lib/cjs/contracts/erc20/index.cjs +2 -2
- package/lib/cjs/contracts/erc20/index.cjs.map +1 -0
- package/lib/cjs/contracts/erc20/models.cjs +2 -2
- package/lib/cjs/contracts/erc20/models.cjs.map +1 -0
- package/lib/cjs/contracts/fabric-overrides.cjs +65 -0
- package/lib/cjs/contracts/fabric-overrides.cjs.map +1 -0
- package/lib/cjs/contracts/index.cjs +3 -2
- package/lib/cjs/contracts/index.cjs.map +1 -0
- package/lib/cjs/contracts/logging.cjs +2 -2
- package/lib/cjs/contracts/logging.cjs.map +1 -0
- package/lib/cjs/contracts/overrides.cjs +2 -2
- package/lib/cjs/contracts/overrides.cjs.map +1 -0
- package/lib/cjs/contracts/types.cjs +2 -2
- package/lib/cjs/contracts/types.cjs.map +1 -0
- package/lib/cjs/contracts/uuid.cjs +2 -2
- package/lib/cjs/contracts/uuid.cjs.map +1 -0
- package/lib/cjs/index.cjs +2 -2
- package/lib/cjs/index.cjs.map +1 -0
- package/lib/cjs/shared/ClientSerializer.cjs +2 -2
- package/lib/cjs/shared/ClientSerializer.cjs.map +1 -0
- package/lib/cjs/shared/DeterministicSerializer.cjs +2 -2
- package/lib/cjs/shared/DeterministicSerializer.cjs.map +1 -0
- package/lib/cjs/shared/SimpleDeterministicSerializer.cjs +2 -2
- package/lib/cjs/shared/SimpleDeterministicSerializer.cjs.map +1 -0
- package/lib/cjs/shared/constants.cjs +2 -2
- package/lib/cjs/shared/constants.cjs.map +1 -0
- package/lib/cjs/shared/decorators.cjs +2 -2
- package/lib/cjs/shared/decorators.cjs.map +1 -0
- package/lib/cjs/shared/erc20/erc20-constants.cjs +2 -2
- package/lib/cjs/shared/erc20/erc20-constants.cjs.map +1 -0
- package/lib/cjs/shared/erc20/index.cjs +2 -2
- package/lib/cjs/shared/erc20/index.cjs.map +1 -0
- package/lib/cjs/shared/errors.cjs +2 -2
- package/lib/cjs/shared/errors.cjs.map +1 -0
- package/lib/cjs/shared/events.cjs +2 -2
- package/lib/cjs/shared/events.cjs.map +1 -0
- package/lib/cjs/shared/fabric-types.cjs +2 -2
- package/lib/cjs/shared/fabric-types.cjs.map +1 -0
- package/lib/cjs/shared/index.cjs +2 -2
- package/lib/cjs/shared/index.cjs.map +1 -0
- package/lib/cjs/shared/interfaces/Checkable.cjs +2 -2
- package/lib/cjs/shared/interfaces/Checkable.cjs.map +1 -0
- package/lib/cjs/shared/interfaces/index.cjs +2 -2
- package/lib/cjs/shared/interfaces/index.cjs.map +1 -0
- package/lib/cjs/shared/math.cjs +2 -2
- package/lib/cjs/shared/math.cjs.map +1 -0
- package/lib/cjs/shared/model/FabricBaseModel.cjs +2 -2
- package/lib/cjs/shared/model/FabricBaseModel.cjs.map +1 -0
- package/lib/cjs/shared/model/FabricIdentifiedBaseModel.cjs +2 -2
- package/lib/cjs/shared/model/FabricIdentifiedBaseModel.cjs.map +1 -0
- package/lib/cjs/shared/model/Identity.cjs +2 -2
- package/lib/cjs/shared/model/Identity.cjs.map +1 -0
- package/lib/cjs/shared/model/IdentityCredentials.cjs +2 -2
- package/lib/cjs/shared/model/IdentityCredentials.cjs.map +1 -0
- package/lib/cjs/shared/model/index.cjs +2 -2
- package/lib/cjs/shared/model/index.cjs.map +1 -0
- package/lib/cjs/shared/overrides/Model.cjs +2 -2
- package/lib/cjs/shared/overrides/Model.cjs.map +1 -0
- package/lib/cjs/shared/overrides/index.cjs +2 -2
- package/lib/cjs/shared/overrides/index.cjs.map +1 -0
- package/lib/cjs/shared/overrides/overrides.cjs +2 -2
- package/lib/cjs/shared/overrides/overrides.cjs.map +1 -0
- package/lib/cjs/shared/types.cjs +2 -2
- package/lib/cjs/shared/types.cjs.map +1 -0
- package/lib/cjs/version.cjs +3 -3
- package/lib/cjs/version.cjs.map +1 -0
- package/lib/esm/bin/cli.js +1 -1
- package/lib/esm/bin/cli.js.map +1 -0
- package/lib/esm/cli-module.js +106 -2
- package/lib/esm/cli-module.js.map +1 -0
- package/lib/esm/cli-utils.js +1 -1
- package/lib/esm/cli-utils.js.map +1 -0
- package/lib/esm/client/FabricClientAdapter.js +1 -1
- package/lib/esm/client/FabricClientAdapter.js.map +1 -0
- package/lib/esm/client/FabricClientDispatch.js +1 -1
- package/lib/esm/client/FabricClientDispatch.js.map +1 -0
- package/lib/esm/client/FabricClientPaginator.js +1 -1
- package/lib/esm/client/FabricClientPaginator.js.map +1 -0
- package/lib/esm/client/FabricClientRepository.js +1 -1
- package/lib/esm/client/FabricClientRepository.js.map +1 -0
- package/lib/esm/client/FabricClientStatement.js +1 -1
- package/lib/esm/client/FabricClientStatement.js.map +1 -0
- package/lib/esm/client/collections/generation.js +1 -1
- package/lib/esm/client/collections/generation.js.map +1 -0
- package/lib/esm/client/collections/index.js +1 -1
- package/lib/esm/client/collections/index.js.map +1 -0
- package/lib/esm/client/constants.js +1 -1
- package/lib/esm/client/constants.js.map +1 -0
- package/lib/esm/client/crypto.js +1 -1
- package/lib/esm/client/crypto.js.map +1 -0
- package/lib/esm/client/erc20/FabricERC20ClientRepository.js +1 -1
- package/lib/esm/client/erc20/FabricERC20ClientRepository.js.map +1 -0
- package/lib/esm/client/erc20/index.js +1 -1
- package/lib/esm/client/erc20/index.js.map +1 -0
- package/lib/esm/client/fabric-fs.js +1 -1
- package/lib/esm/client/fabric-fs.js.map +1 -0
- package/lib/esm/client/fabric-hsm.js +1 -1
- package/lib/esm/client/fabric-hsm.js.map +1 -0
- package/lib/esm/client/ids/id-extraction.js +1 -1
- package/lib/esm/client/ids/id-extraction.js.map +1 -0
- package/lib/esm/client/ids/index.js +1 -1
- package/lib/esm/client/ids/index.js.map +1 -0
- package/lib/esm/client/index.js +1 -1
- package/lib/esm/client/index.js.map +1 -0
- package/lib/esm/client/indexes/generation.js +8 -3
- package/lib/esm/client/indexes/generation.js.map +1 -0
- package/lib/esm/client/indexes/index.js +1 -1
- package/lib/esm/client/indexes/index.js.map +1 -0
- package/lib/esm/client/logging.js +1 -1
- package/lib/esm/client/logging.js.map +1 -0
- package/lib/esm/client/services/FabricEnrollmentService.js +1 -1
- package/lib/esm/client/services/FabricEnrollmentService.js.map +1 -0
- package/lib/esm/client/services/FabricIdentityService.js +1 -1
- package/lib/esm/client/services/FabricIdentityService.js.map +1 -0
- package/lib/esm/client/services/RegistrationRequestBuilder.js +1 -1
- package/lib/esm/client/services/RegistrationRequestBuilder.js.map +1 -0
- package/lib/esm/client/services/constants.js +1 -1
- package/lib/esm/client/services/constants.js.map +1 -0
- package/lib/esm/client/services/index.js +1 -1
- package/lib/esm/client/services/index.js.map +1 -0
- package/lib/esm/client/types.js +1 -1
- package/lib/esm/client/types.js.map +1 -0
- package/lib/esm/client/utils.js +1 -1
- package/lib/esm/client/utils.js.map +1 -0
- package/lib/esm/contract/Address.js +1 -1
- package/lib/esm/contract/Address.js.map +1 -0
- package/lib/esm/contract/AddressContract.js +1 -1
- package/lib/esm/contract/AddressContract.js.map +1 -0
- package/lib/esm/contract/AuditContract.js +1 -1
- package/lib/esm/contract/AuditContract.js.map +1 -0
- package/lib/esm/contract/BatchContract.js +1 -1
- package/lib/esm/contract/BatchContract.js.map +1 -0
- package/lib/esm/contract/MarketContract.js +1 -1
- package/lib/esm/contract/MarketContract.js.map +1 -0
- package/lib/esm/contract/OtherAuditContract.js +1 -1
- package/lib/esm/contract/OtherAuditContract.js.map +1 -0
- package/lib/esm/contract/OtherBatchContract.js +1 -1
- package/lib/esm/contract/OtherBatchContract.js.map +1 -0
- package/lib/esm/contract/OtherLeafletContract.js +63 -0
- package/lib/esm/contract/OtherLeafletContract.js.map +1 -0
- package/lib/esm/contract/OtherLeafletFileContract.js +67 -0
- package/lib/esm/contract/OtherLeafletFileContract.js.map +1 -0
- package/lib/esm/contract/OtherMarketContract.js +1 -1
- package/lib/esm/contract/OtherMarketContract.js.map +1 -0
- package/lib/esm/contract/OtherProductContract.js +1 -1
- package/lib/esm/contract/OtherProductContract.js.map +1 -0
- package/lib/esm/contract/OtherProductImageContract.js +1 -1
- package/lib/esm/contract/OtherProductImageContract.js.map +1 -0
- package/lib/esm/contract/OtherProductSharedContract.js +1 -1
- package/lib/esm/contract/OtherProductSharedContract.js.map +1 -0
- package/lib/esm/contract/OtherProductStrengthContract.js +1 -1
- package/lib/esm/contract/OtherProductStrengthContract.js.map +1 -0
- package/lib/esm/contract/Product.js +1 -1
- package/lib/esm/contract/Product.js.map +1 -0
- package/lib/esm/contract/ProductContract.js +1 -1
- package/lib/esm/contract/ProductContract.js.map +1 -0
- package/lib/esm/contract/ProductStrengthContract.js +1 -1
- package/lib/esm/contract/ProductStrengthContract.js.map +1 -0
- package/lib/esm/contract/SegregatedPrivateDocumentContract.js +1 -1
- package/lib/esm/contract/SegregatedPrivateDocumentContract.js.map +1 -0
- package/lib/esm/contract/SegregatedSharedDocumentContract.js +1 -1
- package/lib/esm/contract/SegregatedSharedDocumentContract.js.map +1 -0
- package/lib/esm/contract/User.js +1 -1
- package/lib/esm/contract/User.js.map +1 -0
- package/lib/esm/contract/UserContract.js +1 -1
- package/lib/esm/contract/UserContract.js.map +1 -0
- package/lib/esm/contract/index.js +19 -19
- package/lib/esm/contract/index.js.map +1 -0
- package/lib/esm/contract/logging-context.js +1 -1
- package/lib/esm/contract/logging-context.js.map +1 -0
- package/lib/esm/contract/models/Audit.js +1 -1
- package/lib/esm/contract/models/Audit.js.map +1 -0
- package/lib/esm/contract/models/BaseIdentifiedModel.js +1 -1
- package/lib/esm/contract/models/BaseIdentifiedModel.js.map +1 -0
- package/lib/esm/contract/models/BaseModel.js +1 -1
- package/lib/esm/contract/models/BaseModel.js.map +1 -0
- package/lib/esm/contract/models/Batch.js +1 -1
- package/lib/esm/contract/models/Batch.js.map +1 -0
- package/lib/esm/contract/models/GtinOwner.js +1 -1
- package/lib/esm/contract/models/GtinOwner.js.map +1 -0
- package/lib/esm/contract/models/History.js +1 -1
- package/lib/esm/contract/models/History.js.map +1 -0
- package/lib/esm/contract/models/Leaflet.js +1 -1
- package/lib/esm/contract/models/Leaflet.js.map +1 -0
- package/lib/esm/contract/models/LeafletFile.js +1 -1
- package/lib/esm/contract/models/LeafletFile.js.map +1 -0
- package/lib/esm/contract/models/Market.js +1 -1
- package/lib/esm/contract/models/Market.js.map +1 -0
- package/lib/esm/contract/models/OtherAudit.js +2 -2
- package/lib/esm/contract/models/OtherAudit.js.map +1 -0
- package/lib/esm/contract/models/OtherBatchShared.js +139 -31
- package/lib/esm/contract/models/OtherBatchShared.js.map +1 -0
- package/lib/esm/contract/models/OtherLeaflet.js +2 -2
- package/lib/esm/contract/models/OtherLeaflet.js.map +1 -0
- package/lib/esm/contract/models/OtherLeafletFile.js +2 -2
- package/lib/esm/contract/models/OtherLeafletFile.js.map +1 -0
- package/lib/esm/contract/models/OtherMarket.js +2 -2
- package/lib/esm/contract/models/OtherMarket.js.map +1 -0
- package/lib/esm/contract/models/OtherProduct.js +2 -2
- package/lib/esm/contract/models/OtherProduct.js.map +1 -0
- package/lib/esm/contract/models/OtherProductImage.js +2 -2
- package/lib/esm/contract/models/OtherProductImage.js.map +1 -0
- package/lib/esm/contract/models/OtherProductShared.js +2 -2
- package/lib/esm/contract/models/OtherProductShared.js.map +1 -0
- package/lib/esm/contract/models/OtherProductStrength.js +2 -4
- package/lib/esm/contract/models/OtherProductStrength.js.map +1 -0
- package/lib/esm/contract/models/Product.js +1 -1
- package/lib/esm/contract/models/Product.js.map +1 -0
- package/lib/esm/contract/models/ProductStrength.js +1 -1
- package/lib/esm/contract/models/ProductStrength.js.map +1 -0
- package/lib/esm/contract/models/SegregatedDocument.js +1 -1
- package/lib/esm/contract/models/SegregatedDocument.js.map +1 -0
- package/lib/esm/contract/models/constants.js +1 -1
- package/lib/esm/contract/models/constants.js.map +1 -0
- package/lib/esm/contract/models/decorators-private.js +1 -1
- package/lib/esm/contract/models/decorators-private.js.map +1 -0
- package/lib/esm/contract/models/decorators.js +1 -1
- package/lib/esm/contract/models/decorators.js.map +1 -0
- package/lib/esm/contract/models/gtin.js +1 -1
- package/lib/esm/contract/models/gtin.js.map +1 -0
- package/lib/esm/contract/models/history-dec.js +1 -1
- package/lib/esm/contract/models/history-dec.js.map +1 -0
- package/lib/esm/contract/trackedModels/History.js +72 -0
- package/lib/esm/contract/trackedModels/History.js.map +1 -0
- package/lib/esm/contract/trackedModels/OtherAudit.js +115 -0
- package/lib/esm/contract/trackedModels/OtherAudit.js.map +1 -0
- package/lib/esm/contract/trackedModels/OtherLeaflet.js +112 -0
- package/lib/esm/contract/trackedModels/OtherLeaflet.js.map +1 -0
- package/lib/esm/contract/trackedModels/OtherLeafletFile.js +62 -0
- package/lib/esm/contract/trackedModels/OtherLeafletFile.js.map +1 -0
- package/lib/esm/contract/trackedModels/OtherMarket.js +81 -0
- package/lib/esm/contract/trackedModels/OtherMarket.js.map +1 -0
- package/lib/esm/contract/trackedModels/OtherProduct.js +74 -0
- package/lib/esm/contract/trackedModels/OtherProduct.js.map +1 -0
- package/lib/esm/contract/trackedModels/OtherProductImage.js +56 -0
- package/lib/esm/contract/trackedModels/OtherProductImage.js.map +1 -0
- package/lib/esm/contract/trackedModels/OtherProductShared.js +96 -0
- package/lib/esm/contract/trackedModels/OtherProductShared.js.map +1 -0
- package/lib/esm/contract/trackedModels/OtherProductStrength.js +82 -0
- package/lib/esm/contract/trackedModels/OtherProductStrength.js.map +1 -0
- package/lib/esm/contracts/ContractAdapter.js +1 -1
- package/lib/esm/contracts/ContractAdapter.js.map +1 -0
- package/lib/esm/contracts/ContractContext.js +1 -1
- package/lib/esm/contracts/ContractContext.js.map +1 -0
- package/lib/esm/contracts/FabricContractDispatch.js +1 -1
- package/lib/esm/contracts/FabricContractDispatch.js.map +1 -0
- package/lib/esm/contracts/FabricContractPaginator.js +1 -1
- package/lib/esm/contracts/FabricContractPaginator.js.map +1 -0
- package/lib/esm/contracts/FabricContractRepository.js +1 -1
- package/lib/esm/contracts/FabricContractRepository.js.map +1 -0
- package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js +1 -1
- package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js.map +1 -0
- package/lib/esm/contracts/FabricContractSequence.js +1 -1
- package/lib/esm/contracts/FabricContractSequence.js.map +1 -0
- package/lib/esm/contracts/FabricContractStatement.js +1 -1
- package/lib/esm/contracts/FabricContractStatement.js.map +1 -0
- package/lib/esm/contracts/MigrationContract.js +1 -1
- package/lib/esm/contracts/MigrationContract.js.map +1 -0
- package/lib/esm/contracts/PrivateSequence.js +1 -1
- package/lib/esm/contracts/PrivateSequence.js.map +1 -0
- package/lib/esm/contracts/auth/decorators.js +1 -1
- package/lib/esm/contracts/auth/decorators.js.map +1 -0
- package/lib/esm/contracts/auth/index.js +1 -1
- package/lib/esm/contracts/auth/index.js.map +1 -0
- package/lib/esm/contracts/bootstrap.js +11 -0
- package/lib/esm/contracts/bootstrap.js.map +1 -0
- package/lib/esm/contracts/crud/crud-contract.js +2 -1
- package/lib/esm/contracts/crud/crud-contract.js.map +1 -0
- package/lib/esm/contracts/crud/index.js +1 -1
- package/lib/esm/contracts/crud/index.js.map +1 -0
- package/lib/esm/contracts/crud/serialized-crud-contract.js +1 -1
- package/lib/esm/contracts/crud/serialized-crud-contract.js.map +1 -0
- package/lib/esm/contracts/erc20/erc20contract.js +1 -1
- package/lib/esm/contracts/erc20/erc20contract.js.map +1 -0
- package/lib/esm/contracts/erc20/index.js +1 -1
- package/lib/esm/contracts/erc20/index.js.map +1 -0
- package/lib/esm/contracts/erc20/models.js +1 -1
- package/lib/esm/contracts/erc20/models.js.map +1 -0
- package/lib/esm/contracts/fabric-overrides.js +61 -0
- package/lib/esm/contracts/fabric-overrides.js.map +1 -0
- package/lib/esm/contracts/index.js +2 -1
- package/lib/esm/contracts/index.js.map +1 -0
- package/lib/esm/contracts/logging.js +1 -1
- package/lib/esm/contracts/logging.js.map +1 -0
- package/lib/esm/contracts/overrides.js +1 -1
- package/lib/esm/contracts/overrides.js.map +1 -0
- package/lib/esm/contracts/types.js +1 -1
- package/lib/esm/contracts/types.js.map +1 -0
- package/lib/esm/contracts/uuid.js +1 -1
- package/lib/esm/contracts/uuid.js.map +1 -0
- package/lib/esm/index.js +1 -1
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/shared/ClientSerializer.js +1 -1
- package/lib/esm/shared/ClientSerializer.js.map +1 -0
- package/lib/esm/shared/DeterministicSerializer.js +1 -1
- package/lib/esm/shared/DeterministicSerializer.js.map +1 -0
- package/lib/esm/shared/SimpleDeterministicSerializer.js +1 -1
- package/lib/esm/shared/SimpleDeterministicSerializer.js.map +1 -0
- package/lib/esm/shared/constants.js +1 -1
- package/lib/esm/shared/constants.js.map +1 -0
- package/lib/esm/shared/decorators.js +1 -1
- package/lib/esm/shared/decorators.js.map +1 -0
- package/lib/esm/shared/erc20/erc20-constants.js +1 -1
- package/lib/esm/shared/erc20/erc20-constants.js.map +1 -0
- package/lib/esm/shared/erc20/index.js +1 -1
- package/lib/esm/shared/erc20/index.js.map +1 -0
- package/lib/esm/shared/errors.js +1 -1
- package/lib/esm/shared/errors.js.map +1 -0
- package/lib/esm/shared/events.js +1 -1
- package/lib/esm/shared/events.js.map +1 -0
- package/lib/esm/shared/fabric-types.js +1 -1
- package/lib/esm/shared/fabric-types.js.map +1 -0
- package/lib/esm/shared/index.js +1 -1
- package/lib/esm/shared/index.js.map +1 -0
- package/lib/esm/shared/interfaces/Checkable.js +1 -1
- package/lib/esm/shared/interfaces/Checkable.js.map +1 -0
- package/lib/esm/shared/interfaces/index.js +1 -1
- package/lib/esm/shared/interfaces/index.js.map +1 -0
- package/lib/esm/shared/math.js +1 -1
- package/lib/esm/shared/math.js.map +1 -0
- package/lib/esm/shared/model/FabricBaseModel.js +1 -1
- package/lib/esm/shared/model/FabricBaseModel.js.map +1 -0
- package/lib/esm/shared/model/FabricIdentifiedBaseModel.js +1 -1
- package/lib/esm/shared/model/FabricIdentifiedBaseModel.js.map +1 -0
- package/lib/esm/shared/model/Identity.js +1 -1
- package/lib/esm/shared/model/Identity.js.map +1 -0
- package/lib/esm/shared/model/IdentityCredentials.js +1 -1
- package/lib/esm/shared/model/IdentityCredentials.js.map +1 -0
- package/lib/esm/shared/model/index.js +1 -1
- package/lib/esm/shared/model/index.js.map +1 -0
- package/lib/esm/shared/overrides/Model.js +1 -1
- package/lib/esm/shared/overrides/Model.js.map +1 -0
- package/lib/esm/shared/overrides/index.js +1 -1
- package/lib/esm/shared/overrides/index.js.map +1 -0
- package/lib/esm/shared/overrides/overrides.js +1 -1
- package/lib/esm/shared/overrides/overrides.js.map +1 -0
- package/lib/esm/shared/types.js +1 -1
- package/lib/esm/shared/types.js.map +1 -0
- package/lib/esm/version.js +2 -2
- package/lib/esm/version.js.map +1 -0
- package/lib/types/contract/OtherLeafletContract.d.cts +18 -0
- package/lib/types/contract/OtherLeafletContract.d.mts +18 -0
- package/lib/types/contract/OtherLeafletFileContract.d.cts +17 -0
- package/lib/types/contract/OtherLeafletFileContract.d.mts +17 -0
- package/lib/types/contract/index.d.cts +1 -0
- package/lib/types/contract/index.d.mts +1 -0
- package/lib/types/contract/models/OtherBatchShared.d.cts +43 -6
- package/lib/types/contract/models/OtherBatchShared.d.mts +43 -6
- package/lib/types/contract/trackedModels/History.d.cts +9 -0
- package/lib/types/contract/trackedModels/History.d.mts +9 -0
- package/lib/types/contract/trackedModels/OtherAudit.d.cts +15 -0
- package/lib/types/contract/trackedModels/OtherAudit.d.mts +15 -0
- package/lib/types/contract/trackedModels/OtherLeaflet.d.cts +16 -0
- package/lib/types/contract/trackedModels/OtherLeaflet.d.mts +16 -0
- package/lib/types/contract/trackedModels/OtherLeafletFile.d.cts +10 -0
- package/lib/types/contract/trackedModels/OtherLeafletFile.d.mts +10 -0
- package/lib/types/contract/trackedModels/OtherMarket.d.cts +13 -0
- package/lib/types/contract/trackedModels/OtherMarket.d.mts +13 -0
- package/lib/types/contract/trackedModels/OtherProduct.d.cts +12 -0
- package/lib/types/contract/trackedModels/OtherProduct.d.mts +12 -0
- package/lib/types/contract/trackedModels/OtherProductImage.d.cts +9 -0
- package/lib/types/contract/trackedModels/OtherProductImage.d.mts +9 -0
- package/lib/types/contract/trackedModels/OtherProductShared.d.cts +18 -0
- package/lib/types/contract/trackedModels/OtherProductShared.d.mts +18 -0
- package/lib/types/contract/trackedModels/OtherProductStrength.d.cts +12 -0
- package/lib/types/contract/trackedModels/OtherProductStrength.d.mts +12 -0
- package/lib/types/contracts/bootstrap.d.cts +10 -0
- package/lib/types/contracts/bootstrap.d.mts +10 -0
- package/lib/types/contracts/crud/crud-contract.d.cts +1 -0
- package/lib/types/contracts/crud/crud-contract.d.mts +1 -0
- package/lib/types/contracts/fabric-overrides.d.cts +1 -0
- package/lib/types/contracts/fabric-overrides.d.mts +1 -0
- package/lib/types/contracts/index.d.cts +1 -0
- package/lib/types/contracts/index.d.mts +1 -0
- package/lib/types/version.d.cts +1 -1
- package/lib/types/version.d.mts +1 -1
- package/package.json +31 -5
|
@@ -344,5 +344,5 @@ class FabricEnrollmentService extends logging_1.LoggedClass {
|
|
|
344
344
|
}
|
|
345
345
|
}
|
|
346
346
|
exports.FabricEnrollmentService = FabricEnrollmentService;
|
|
347
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljRW5yb2xsbWVudFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2xpZW50L3NlcnZpY2VzL0ZhYnJpY0Vucm9sbG1lbnRTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sZ0JBQWdCLE1BQU0sa0JBQWtCLENBQUM7QUFXaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSx5Q0FBb0M7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUNMLGFBQWEsRUFDYixhQUFhLEVBQ2IsYUFBYSxHQUNkLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBaUI7QUFFckMsT0FBTyxFQUFFLFdBQVcsRUFBRSx1QkFBa0I7QUFPeEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlDQUE0QjtBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXpEOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBTixJQUFZLGdCQU1YO0FBTkQsV0FBWSxnQkFBZ0I7SUFDMUIsaUNBQWEsQ0FBQTtJQUNiLHVDQUFtQixDQUFBO0lBQ25CLHFDQUFpQixDQUFBO0lBQ2pCLGlDQUFhLENBQUE7SUFDYixtQ0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFOVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBTTNCO0FBaUJEOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBTixJQUFZLHNCQVFYO0FBUkQsV0FBWSxzQkFBc0I7SUFDaEMsaUVBQXVDLENBQUE7SUFDdkMsaUZBQXVELENBQUE7SUFDdkQsMkVBQWlELENBQUE7SUFDakQsZ0VBQXNDLENBQUE7SUFDdEMsa0RBQXdCLENBQUE7SUFDeEIsZ0VBQXNDLENBQUE7SUFDdEMsZ0RBQXNCLENBQUE7QUFDeEIsQ0FBQyxFQVJXLHNCQUFzQixLQUF0QixzQkFBc0IsUUFR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LElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNuRixDQUFDO1FBQ0osT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEZhYnJpY0NBU2VydmljZXMgZnJvbSBcImZhYnJpYy1jYS1jbGllbnRcIjtcbmltcG9ydCB7XG4gIEFmZmlsaWF0aW9uU2VydmljZSxcbiAgSWRlbnRpdHlTZXJ2aWNlLFxuICBJRW5yb2xsUmVzcG9uc2UsXG4gIElSZWdpc3RlclJlcXVlc3QsXG4gIElTZXJ2aWNlUmVzcG9uc2UsXG4gIFRMU09wdGlvbnMsXG59IGZyb20gXCJmYWJyaWMtY2EtY2xpZW50XCI7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSBcImZhYnJpYy1jb21tb25cIjtcbmltcG9ydCB7IENBQ29uZmlnLCBDcmVkZW50aWFscyB9IGZyb20gXCIuLi8uLi9zaGFyZWQvdHlwZXNcIjtcbmltcG9ydCB7IElkZW50aXR5IH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9tb2RlbC9JZGVudGl0eVwiO1xuaW1wb3J0IHsgQXV0aG9yaXphdGlvbkVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQge1xuICBDb25mbGljdEVycm9yLFxuICBJbnRlcm5hbEVycm9yLFxuICBOb3RGb3VuZEVycm9yLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IENvcmVVdGlscyB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgQ0FfUk9MRSB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgQ3J5cHRvVXRpbHMgfSBmcm9tIFwiLi4vY3J5cHRvXCI7XG5pbXBvcnQge1xuICBDZXJ0aWZpY2F0ZVJlc3BvbnNlLFxuICBGYWJyaWNJZGVudGl0eSxcbiAgR2V0Q2VydGlmaWNhdGVzUmVxdWVzdCxcbiAgSWRlbnRpdHlSZXNwb25zZSxcbn0gZnJvbSBcIi4uLy4uL3NoYXJlZC9mYWJyaWMtdHlwZXNcIjtcbmltcG9ydCB7IFJlZ2lzdHJhdGlvbkVycm9yIH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9lcnJvcnNcIjtcbmltcG9ydCB7IExvZ2dlZENsYXNzLCBMb2dnaW5nIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEh5cGVybGVkZ2VyIEZhYnJpYyBDQSBpZGVudGl0eSB0eXBlcy5cbiAqIEBzdW1tYXJ5IEVudW1lcmF0ZXMgdGhlIHN1cHBvcnRlZCBpZGVudGl0eSB0eXBlcyByZWNvZ25pemVkIGJ5IEZhYnJpYyBDQSBmb3IgcmVnaXN0cmF0aW9uIGFuZCBpZGVudGl0eSBtYW5hZ2VtZW50LlxuICogQGVudW0ge3N0cmluZ31cbiAqIEByZWFkb25seVxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLmNsaWVudFxuICovXG5leHBvcnQgZW51bSBIRkNBSWRlbnRpdHlUeXBlIHtcbiAgUEVFUiA9IFwicGVlclwiLFxuICBPUkRFUkVSID0gXCJvcmRlcmVyXCIsXG4gIENMSUVOVCA9IFwiY2xpZW50XCIsXG4gIFVTRVIgPSBcInVzZXJcIixcbiAgQURNSU4gPSBcImFkbWluXCIsXG59XG4vKipcbiAqIEBkZXNjcmlwdGlvbiBLZXkvdmFsdWUgYXR0cmlidXRlIHVzZWQgZHVyaW5nIENBIHJlZ2lzdHJhdGlvbi5cbiAqIEBzdW1tYXJ5IFJlcHJlc2VudHMgYW4gYXR0cmlidXRlIGVudHJ5IHRoYXQgY2FuIGJlIGF0dGFjaGVkIHRvIGEgRmFicmljIENBIGlkZW50aXR5IGR1cmluZyByZWdpc3RyYXRpb24sIG9wdGlvbmFsbHkgbWFya2luZyBpdCBmb3IgaW5jbHVzaW9uIGluIGVjZXJ0LlxuICogQGludGVyZmFjZSBJS2V5VmFsdWVBdHRyaWJ1dGVcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIEF0dHJpYnV0ZSBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gQXR0cmlidXRlIHZhbHVlLlxuICogQHBhcmFtIHtib29sZWFufSBbZWNlcnRdIC0gV2hldGhlciB0aGUgYXR0cmlidXRlIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgZW5yb2xsbWVudCBjZXJ0aWZpY2F0ZSAoRUNlcnQpLlxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLmNsaWVudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElLZXlWYWx1ZUF0dHJpYnV0ZSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgZWNlcnQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBTdGFuZGFyZCBGYWJyaWMgQ0EgaWRlbnRpdHkgYXR0cmlidXRlIGtleXMuXG4gKiBAc3VtbWFyeSBFbnVtZXJhdGVzIHdlbGwta25vd24gRmFicmljIENBIGF0dHJpYnV0ZSBrZXlzIHRoYXQgY2FuIGJlIGFzc2lnbmVkIHRvIGlkZW50aXRpZXMgZm9yIGRlbGVnYXRpb25zIGFuZCBwZXJtaXNzaW9ucy5cbiAqIEBlbnVtIHtzdHJpbmd9XG4gKiBAcmVhZG9ubHlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWZhYnJpYy5jbGllbnRcbiAqL1xuZXhwb3J0IGVudW0gSEZDQUlkZW50aXR5QXR0cmlidXRlcyB7XG4gIEhGUkVHSVNUUkFSUk9MRVMgPSBcImhmLlJlZ2lzdHJhci5Sb2xlc1wiLFxuICBIRlJFR0lTVFJBUkRFTEVHQVRFUk9MRVMgPSBcImhmLlJlZ2lzdHJhci5EZWxlZ2F0ZVJvbGVzXCIsXG4gIEhGUkVHSVNUUkFSQVRUUklCVVRFUyA9IFwiaGYuUmVnaXN0cmFyLkF0dHJpYnV0ZXNcIixcbiAgSEZJTlRFUk1FRElBVEVDQSA9IFwiaGYuSW50ZXJtZWRpYXRlQ0FcIixcbiAgSEZSRVZPS0VSID0gXCJoZi5SZXZva2VyXCIsXG4gIEhGQUZGSUxJQVRJT05NR1IgPSBcImhmLkFmZmlsaWF0aW9uTWdyXCIsXG4gIEhGR0VOQ1JMID0gXCJoZi5HZW5DUkxcIixcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gU2VydmljZSB3cmFwcGVyIGZvciBpbnRlcmFjdGluZyB3aXRoIGEgRmFicmljIENBLlxuICogQHN1bW1hcnkgUHJvdmlkZXMgaGlnaC1sZXZlbCBvcGVyYXRpb25zIGZvciBtYW5hZ2luZyBpZGVudGl0aWVzIGFnYWluc3QgYSBIeXBlcmxlZGdlciBGYWJyaWMgQ2VydGlmaWNhdGUgQXV0aG9yaXR5LCBpbmNsdWRpbmcgcmVnaXN0cmF0aW9uLCBlbnJvbGxtZW50LCByZXZvY2F0aW9uLCBhbmQgYWRtaW5pc3RyYXRpdmUgcXVlcmllcy4gRW5jYXBzdWxhdGVzIGxvd2VyLWxldmVsIEZhYnJpYyBDQSBjbGllbnQgY2FsbHMgd2l0aCBjb25zaXN0ZW50IGxvZ2dpbmcgYW5kIGVycm9yIG1hcHBpbmcuXG4gKiBAcGFyYW0ge0NBQ29uZmlnfSBjYUNvbmZpZyAtIENvbm5lY3Rpb24gYW5kIFRMUyBjb25maWd1cmF0aW9uIGZvciB0aGUgdGFyZ2V0IENBLlxuICogQGNsYXNzIEZhYnJpY0Vucm9sbG1lbnRTZXJ2aWNlXG4gKiBAZXhhbXBsZVxuICogLy8gUmVnaXN0ZXIgYW5kIGVucm9sbCBhIG5ldyB1c2VyXG4gKiBjb25zdCBzdmMgPSBuZXcgRmFicmljRW5yb2xsbWVudFNlcnZpY2Uoe1xuICogICB1cmw6ICdodHRwczovL2xvY2FsaG9zdDo3MDU0JyxcbiAqICAgY2FOYW1lOiAnT3JnMUNBJyxcbiAqICAgdGxzOiB7IHRydXN0ZWRSb290czogWycvcGF0aC90by9jYS5wZW0nXSwgdmVyaWZ5OiBmYWxzZSB9LFxuICogICBjYUNlcnQ6ICcvcGF0aC90by9hZG1pbi9jZXJ0RGlyJyxcbiAqICAgY2FLZXk6ICcvcGF0aC90by9hZG1pbi9rZXlEaXInXG4gKiB9KTtcbiAqIGF3YWl0IHN2Yy5yZWdpc3Rlcih7IHVzZXJOYW1lOiAnYWxpY2UnLCBwYXNzd29yZDogJ3MzY3IzdCcgfSwgZmFsc2UsICdvcmcxLmRlcGFydG1lbnQxJywgQ0FfUk9MRS5VU0VSKTtcbiAqIGNvbnN0IGlkID0gYXdhaXQgc3ZjLmVucm9sbCgnYWxpY2UnLCAnczNjcjN0Jyk7XG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIGF1dG9udW1iZXJcbiAqICAgcGFydGljaXBhbnQgQXBwXG4gKiAgIHBhcnRpY2lwYW50IFN2YyBhcyBGYWJyaWNFbnJvbGxtZW50U2VydmljZVxuICogICBwYXJ0aWNpcGFudCBDQSBhcyBGYWJyaWMgQ0FcbiAqICAgQXBwLT4+U3ZjOiByZWdpc3RlcihjcmVkZW50aWFscywgLi4uKVxuICogICBTdmMtPj5DQTogcmVnaXN0ZXIocmVxdWVzdCwgYWRtaW5Vc2VyKVxuICogICBDQS0tPj5TdmM6IGVucm9sbG1lbnRTZWNyZXRcbiAqICAgU3ZjLS0+PkFwcDogc2VjcmV0XG4gKiAgIEFwcC0+PlN2YzogZW5yb2xsKGVucm9sbG1lbnRJZCwgc2VjcmV0KVxuICogICBTdmMtPj5DQTogZW5yb2xsKHtlbnJvbGxtZW50SUQsIHNlY3JldH0pXG4gKiAgIENBLS0+PlN2YzogY2VydGlmaWNhdGVzXG4gKiAgIFN2Yy0tPj5BcHA6IElkZW50aXR5XG4gKi9cbmV4cG9ydCBjbGFzcyBGYWJyaWNFbnJvbGxtZW50U2VydmljZSBleHRlbmRzIExvZ2dlZENsYXNzIHtcbiAgcHJpdmF0ZSBjYT86IEZhYnJpY0NBU2VydmljZXM7XG5cbiAgcHJpdmF0ZSBjZXJ0aWZpY2F0ZVNlcnZpY2U/OiBhbnk7XG5cbiAgcHJpdmF0ZSBhZmZpbGlhdGlvblNlcnZpY2U/OiBBZmZpbGlhdGlvblNlcnZpY2U7XG5cbiAgcHJpdmF0ZSBpZGVudGl0eVNlcnZpY2U/OiBJZGVudGl0eVNlcnZpY2U7XG5cbiAgcHJpdmF0ZSBjbGllbnQ/OiBhbnk7XG5cbiAgcHJpdmF0ZSB1c2VyPzogVXNlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNhQ29uZmlnOiBDQUNvbmZpZykge1xuICAgIENvcmVVdGlscy5nZXRDcnlwdG9TdWl0ZShcbiAgICAgIGNhQ29uZmlnLmhzbVxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHNvZnR3YXJlOiBmYWxzZSxcbiAgICAgICAgICAgIGxpYjogY2FDb25maWcuaHNtLmxpYnJhcnksXG4gICAgICAgICAgICBzbG90OiBjYUNvbmZpZy5oc20uc2xvdCxcbiAgICAgICAgICAgIGxhYmVsOiBjYUNvbmZpZy5oc20udG9rZW5MYWJlbCxcbiAgICAgICAgICAgIHBpbjogU3RyaW5nKGNhQ29uZmlnLmhzbS5waW4pLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWRcbiAgICApO1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgVXNlcigpOiBQcm9taXNlPFVzZXI+IHtcbiAgICBpZiAodGhpcy51c2VyKSByZXR1cm4gdGhpcy51c2VyO1xuICAgIGNvbnN0IHsgY2FOYW1lLCBjYUNlcnQsIGNhS2V5LCB1cmwsIGhzbSB9ID0gdGhpcy5jYUNvbmZpZztcbiAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5Vc2VyKTtcbiAgICBsb2cuZGVidWcoYENyZWF0aW5nIENBIHVzZXIgZm9yICR7Y2FOYW1lfSBhdCAke3VybH1gKTtcbiAgICBsb2cuZGVidWcoYFJldHJpZXZpbmcgQ0EgY2VydGlmaWNhdGUgZnJvbSAke2NhQ2VydH1gKTtcbiAgICBjb25zdCBjZXJ0aWZpY2F0ZSA9IGF3YWl0IENvcmVVdGlscy5nZXRGaXJzdERpckZpbGVOYW1lQ29udGVudChjYUNlcnQpO1xuICAgIGxldCBrZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBpZiAoIWhzbSkge1xuICAgICAgaWYgKCFjYUtleSkge1xuICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICBgTWlzc2luZyBjYUtleSBjb25maWd1cmF0aW9uIGZvciBDQSAke2NhTmFtZX0uIFByb3ZpZGUgYSBrZXkgZGlyZWN0b3J5IG9yIGNvbmZpZ3VyZSBIU00gc3VwcG9ydC5gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBsb2cuZGVidWcoYFJldHJpZXZpbmcgQ0Ega2V5IGZyb20gJHtjYUtleX1gKTtcbiAgICAgIGtleSA9IGF3YWl0IENvcmVVdGlscy5nZXRGaXJzdERpckZpbGVOYW1lQ29udGVudChjYUtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZy5kZWJ1ZyhcbiAgICAgICAgYFVzaW5nIEhTTSBjb25maWd1cmF0aW9uIGZvciBDQSAke2NhTmFtZX0gd2l0aCBsaWJyYXJ5ICR7aHNtLmxpYnJhcnl9YFxuICAgICAgKTtcbiAgICB9XG4gICAgbG9nLmRlYnVnKGBMb2FkaW5nIEFkbWluIHVzZXIgZm9yIGNhICR7Y2FOYW1lfWApO1xuICAgIHRoaXMudXNlciA9IGF3YWl0IENvcmVVdGlscy5nZXRDQVVzZXIoXCJhZG1pblwiLCBrZXksIGNlcnRpZmljYXRlLCBjYU5hbWUsIHtcbiAgICAgIGhzbSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy51c2VyO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIENBKCk6IFByb21pc2U8RmFicmljQ0FTZXJ2aWNlcz4ge1xuICAgIGlmICh0aGlzLmNhKSByZXR1cm4gdGhpcy5jYTtcbiAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5DQSk7XG4gICAgY29uc3QgeyB1cmwsIHRscywgY2FOYW1lIH0gPSB0aGlzLmNhQ29uZmlnO1xuXG4gICAgLy8gRk9SIFNvbWUgUmVhc29uIHRoZSB2ZXJpZmljYXRpb24gZmFpbHMgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGlzIHdvcmtzIGZvciBub3dcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgbGV0IHsgdHJ1c3RlZFJvb3RzLCB2ZXJpZnkgfSA9IHRscyBhcyBUTFNPcHRpb25zO1xuXG4gICAgY29uc3Qgcm9vdCA9ICh0cnVzdGVkUm9vdHMgYXMgc3RyaW5nW10pWzBdIGFzIHN0cmluZztcbiAgICBsb2cuZGVidWcoYFJldHJpZXZpbmcgQ0EgY2VydGlmaWNhdGUgZnJvbSAke3Jvb3R9LiBjd2Q6ICR7cHJvY2Vzcy5jd2QoKX1gKTtcblxuICAgIGNvbnN0IGNlcnRpZmljYXRlID0gYXdhaXQgQ29yZVV0aWxzLmdldEZpbGVDb250ZW50KHJvb3QpO1xuICAgIGxvZy5kZWJ1ZyhgQ3JlYXRpbmcgQ0EgQ2xpZW50IGZvciBDQSAke2NhTmFtZX0gdW5kZXIgJHt1cmx9YCk7XG4gICAgdGhpcy5jYSA9IG5ldyBGYWJyaWNDQVNlcnZpY2VzKFxuICAgICAgdXJsLFxuICAgICAge1xuICAgICAgICB0cnVzdGVkUm9vdHM6IEJ1ZmZlci5mcm9tKGNlcnRpZmljYXRlKSxcbiAgICAgICAgdmVyaWZ5LFxuICAgICAgfSBhcyBUTFNPcHRpb25zLFxuICAgICAgY2FOYW1lXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5jYTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBDbGllbnQoKTogUHJvbWlzZTx7IG5ld0NlcnRpZmljYXRlU2VydmljZTogYW55IH0+IHtcbiAgICBpZiAodGhpcy5jbGllbnQpIHJldHVybiB0aGlzLmNsaWVudDtcbiAgICBjb25zdCBjYSA9IGF3YWl0IHRoaXMuQ0EoKTtcbiAgICB0aGlzLmNsaWVudCA9IChjYSBhcyBhbnkpW1wiX0ZhYnJpY0NBU2VydmljZXNcIl07XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50O1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIENlcnRpZmljYXRlKCkge1xuICAgIGlmICghdGhpcy5jZXJ0aWZpY2F0ZVNlcnZpY2UpXG4gICAgICB0aGlzLmNlcnRpZmljYXRlU2VydmljZSA9IChhd2FpdCB0aGlzLkNsaWVudCgpKS5uZXdDZXJ0aWZpY2F0ZVNlcnZpY2UoKTtcbiAgICByZXR1cm4gdGhpcy5jZXJ0aWZpY2F0ZVNlcnZpY2U7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgQWZmaWxpYXRpb25zKCkge1xuICAgIGlmICghdGhpcy5hZmZpbGlhdGlvblNlcnZpY2UpXG4gICAgICB0aGlzLmFmZmlsaWF0aW9uU2VydmljZSA9IChhd2FpdCB0aGlzLkNBKCkpLm5ld0FmZmlsaWF0aW9uU2VydmljZSgpO1xuICAgIHJldHVybiB0aGlzLmFmZmlsaWF0aW9uU2VydmljZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBJZGVudGl0aWVzKCkge1xuICAgIGlmICghdGhpcy5pZGVudGl0eVNlcnZpY2UpXG4gICAgICB0aGlzLmlkZW50aXR5U2VydmljZSA9IChhd2FpdCB0aGlzLkNBKCkpLm5ld0lkZW50aXR5U2VydmljZSgpO1xuICAgIHJldHVybiB0aGlzLmlkZW50aXR5U2VydmljZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmUgY2VydGlmaWNhdGVzIGZyb20gdGhlIENBLlxuICAgKiBAc3VtbWFyeSBDYWxscyB0aGUgQ0EgY2VydGlmaWNhdGUgc2VydmljZSB0byBsaXN0IGNlcnRpZmljYXRlcywgb3B0aW9uYWxseSBtYXBwaW5nIHRvIFBFTSBzdHJpbmdzIG9ubHkuXG4gICAqIEBwYXJhbSB7R2V0Q2VydGlmaWNhdGVzUmVxdWVzdH0gW3JlcXVlc3RdIC0gT3B0aW9uYWwgZmlsdGVyIHJlcXVlc3QgZm9yIGNlcnRpZmljYXRlIGxvb2t1cC5cbiAgICogQHBhcmFtIHtib29sZWFufSBbZG9NYXA9dHJ1ZV0gLSBXaGVuIHRydWUsIHJldHVybnMgYXJyYXkgb2YgUEVNIHN0cmluZ3M7IG90aGVyd2lzZSByZXR1cm5zIGZ1bGwgcmVzcG9uc2Ugb2JqZWN0LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZ1tdIHwgQ2VydGlmaWNhdGVSZXNwb25zZT59IEFycmF5IG9mIFBFTSBzdHJpbmdzIG9yIHRoZSBmdWxsIGNlcnRpZmljYXRlIHJlc3BvbnNlLlxuICAgKi9cbiAgYXN5bmMgZ2V0Q2VydGlmaWNhdGVzKFxuICAgIHJlcXVlc3Q/OiBHZXRDZXJ0aWZpY2F0ZXNSZXF1ZXN0LFxuICAgIGRvTWFwID0gdHJ1ZVxuICApOiBQcm9taXNlPHN0cmluZ1tdIHwgQ2VydGlmaWNhdGVSZXNwb25zZT4ge1xuICAgIGNvbnN0IGNlcnRpZmljYXRlU2VydmljZSA9IGF3YWl0IHRoaXMuQ2VydGlmaWNhdGUoKTtcbiAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5Vc2VyKCk7XG4gICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMuZ2V0Q2VydGlmaWNhdGVzKTtcbiAgICBsb2cuZGVidWcoXG4gICAgICBgUmV0cmlldmluZyBjZXJ0aWZpY2F0ZXMke3JlcXVlc3QgPyBgIGZvciAke3JlcXVlc3QuaWR9YCA6IFwiXCJ9IGZvciBDQSAke3RoaXMuY2FDb25maWcuY2FOYW1lfWBcbiAgICApO1xuICAgIGNvbnN0IHJlc3BvbnNlOiBDZXJ0aWZpY2F0ZVJlc3BvbnNlID0gKFxuICAgICAgYXdhaXQgY2VydGlmaWNhdGVTZXJ2aWNlLmdldENlcnRpZmljYXRlcyhyZXF1ZXN0IHx8IHt9LCB1c2VyKVxuICAgICkucmVzdWx0O1xuICAgIGxvZy5kZWJ1ZyhcbiAgICAgIGBGb3VuZCAke3Jlc3BvbnNlLmNlcnRzLmxlbmd0aH0gY2VydGlmaWNhdGVzOiAke0pTT04uc3RyaW5naWZ5KHJlc3BvbnNlKX1gXG4gICAgKTtcbiAgICByZXR1cm4gZG9NYXAgPyByZXNwb25zZS5jZXJ0cy5tYXAoKGMpID0+IGMuUEVNKSA6IHJlc3BvbnNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IGlkZW50aXRpZXMgcmVnaXN0ZXJlZCBpbiB0aGUgQ0EuXG4gICAqIEBzdW1tYXJ5IFF1ZXJpZXMgdGhlIENBIGlkZW50aXR5IHNlcnZpY2UgdG8gZmV0Y2ggYWxsIGlkZW50aXRpZXMgYW5kIHJldHVybnMgdGhlIGxpc3QgYXMgRmFicmljSWRlbnRpdHkgb2JqZWN0cy5cbiAgICogQHJldHVybiB7UHJvbWlzZTxGYWJyaWNJZGVudGl0eVtdPn0gVGhlIGxpc3Qgb2YgaWRlbnRpdGllcyByZWdpc3RlcmVkIGluIHRoZSBDQS5cbiAgICovXG4gIGFzeW5jIGdldElkZW50aXRpZXMoKTogUHJvbWlzZTxGYWJyaWNJZGVudGl0eVtdPiB7XG4gICAgY29uc3QgaWRlbnRpdGllc1NlcnZpY2UgPSBhd2FpdCB0aGlzLklkZW50aXRpZXMoKTtcbiAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5nZXRJZGVudGl0aWVzKTtcbiAgICBsb2cuZGVidWcoYFJldHJpZXZpbmcgSWRlbnRpdGllcyB1bmRlciBDQSAke3RoaXMuY2FDb25maWcuY2FOYW1lfWApO1xuICAgIGNvbnN0IHJlc3BvbnNlOiBJZGVudGl0eVJlc3BvbnNlID0gKFxuICAgICAgYXdhaXQgaWRlbnRpdGllc1NlcnZpY2UuZ2V0QWxsKGF3YWl0IHRoaXMuVXNlcigpKVxuICAgICkucmVzdWx0O1xuICAgIGxvZy5kZWJ1ZyhcbiAgICAgIGBGb3VuZCAke3Jlc3BvbnNlLmlkZW50aXRpZXMubGVuZ3RofSBJZGVudGl0aWVzOiAke0pTT04uc3RyaW5naWZ5KHJlc3BvbnNlKX1gXG4gICAgKTtcbiAgICByZXR1cm4gcmVzcG9uc2UuaWRlbnRpdGllcztcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZUVycm9yKGU6IEVycm9yKSB7XG4gICAgY29uc3QgcmVnZXhwID0gLy4qY29kZTpcXHMoXFxkKykuKj9tZXNzYWdlOlxcc1tcIiddKC4rKVtcIiddL2dzO1xuICAgIGNvbnN0IG1hdGNoID0gcmVnZXhwLmV4ZWMoZS5tZXNzYWdlKTtcbiAgICBpZiAoIW1hdGNoKSByZXR1cm4gbmV3IFJlZ2lzdHJhdGlvbkVycm9yKGUpO1xuICAgIGNvbnN0IFssIGNvZGUsIG1lc3NhZ2VdID0gbWF0Y2g7XG4gICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICBjYXNlIFwiNzRcIjpcbiAgICAgIGNhc2UgXCI3MVwiOlxuICAgICAgICByZXR1cm4gbmV3IENvbmZsaWN0RXJyb3IobWVzc2FnZSk7XG4gICAgICBjYXNlIFwiMjBcIjpcbiAgICAgICAgcmV0dXJuIG5ldyBBdXRob3JpemF0aW9uRXJyb3IobWVzc2FnZSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbmV3IFJlZ2lzdHJhdGlvbkVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmUgYWZmaWxpYXRpb25zIGZyb20gdGhlIENBLlxuICAgKiBAc3VtbWFyeSBRdWVyaWVzIHRoZSBDQSBmb3IgdGhlIGxpc3Qgb2YgYWZmaWxpYXRpb25zIGF2YWlsYWJsZSB1bmRlciB0aGUgY29uZmlndXJlZCBDQS5cbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgYWZmaWxpYXRpb25zIHJlc3VsdCBwYXlsb2FkLlxuICAgKi9cbiAgYXN5bmMgZ2V0QWZmaWxpYXRpb25zKCkge1xuICAgIGNvbnN0IGFmZmlsaWF0aW9uU2VydmljZSA9IGF3YWl0IHRoaXMuQWZmaWxpYXRpb25zKCk7XG4gICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMuZ2V0QWZmaWxpYXRpb25zKTtcbiAgICBsb2cuZGVidWcoYFJldHJpZXZpbmcgQWZmaWxpYXRpb25zIHVuZGVyIENBICR7dGhpcy5jYUNvbmZpZy5jYU5hbWV9YCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSAoYXdhaXQgYWZmaWxpYXRpb25TZXJ2aWNlLmdldEFsbChhd2FpdCB0aGlzLlVzZXIoKSkpXG4gICAgICAucmVzdWx0O1xuICAgIGxvZy5kZWJ1ZyhcbiAgICAgIGBGb3VuZCAke3Jlc3BvbnNlLmEubGVuZ3RofSBBZmZpbGlhdGlvbnM6ICR7SlNPTi5zdHJpbmdpZnkocmVzcG9uc2UpfWBcbiAgICApO1xuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVhZCBpZGVudGl0eSBkZXRhaWxzIGZyb20gdGhlIENBIGJ5IGVucm9sbG1lbnQgSUQuXG4gICAqIEBzdW1tYXJ5IFJldHJpZXZlcyBhbmQgdmFsaWRhdGVzIGEgc2luZ2xlIGlkZW50aXR5LCB0aHJvd2luZyBOb3RGb3VuZEVycm9yIHdoZW4gbWlzc2luZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGVucm9sbG1lbnRJZCAtIEVucm9sbG1lbnQgSUQgdG8gbG9va3VwLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPEZhYnJpY0lkZW50aXR5Pn0gVGhlIGlkZW50aXR5IGRldGFpbHMgc3RvcmVkIGluIHRoZSBDQS5cbiAgICovXG4gIGFzeW5jIHJlYWQoZW5yb2xsbWVudElkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjYSA9IGF3YWl0IHRoaXMuQ0EoKTtcbiAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5Vc2VyKCk7XG4gICAgbGV0IHJlc3VsdDogSVNlcnZpY2VSZXNwb25zZTtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgY2EubmV3SWRlbnRpdHlTZXJ2aWNlKCkuZ2V0T25lKGVucm9sbG1lbnRJZCwgdXNlcik7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcbiAgICAgICAgYENvdWxkbid0IGZpbmQgZW5yb2xsbWVudCB3aXRoIGlkICR7ZW5yb2xsbWVudElkfTogJHtlfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCFyZXN1bHQuc3VjY2VzcylcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFxuICAgICAgICBgQ291bGRuJ3QgZmluZCBlbnJvbGxtZW50IHdpdGggaWQgJHtlbnJvbGxtZW50SWR9OiAke3Jlc3VsdC5lcnJvcnMuam9pbihcIlxcblwiKX1gXG4gICAgICApO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5yZXN1bHQgYXMgRmFicmljSWRlbnRpdHk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlZ2lzdGVyIGEgbmV3IGlkZW50aXR5IHdpdGggdGhlIENBLlxuICAgKiBAc3VtbWFyeSBTdWJtaXRzIGEgcmVnaXN0cmF0aW9uIHJlcXVlc3QgZm9yIGEgbmV3IGVucm9sbG1lbnQgSUQsIHJldHVybmluZyB0aGUgZW5yb2xsbWVudCBzZWNyZXQgdXBvbiBzdWNjZXNzLlxuICAgKiBAcGFyYW0ge0NyZWRlbnRpYWxzfSBtb2RlbCAtIENyZWRlbnRpYWxzIGNvbnRhaW5pbmcgdXNlck5hbWUgYW5kIHBhc3N3b3JkIGZvciB0aGUgbmV3IGlkZW50aXR5LlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc1N1cGVyVXNlcj1mYWxzZV0gLSBXaGV0aGVyIHRvIHJlZ2lzdGVyIHRoZSBpZGVudGl0eSBhcyBhIHN1cGVyIHVzZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYWZmaWxpYXRpb249XCJcIl0gLSBBZmZpbGlhdGlvbiBzdHJpbmcgKGUuZy4sIG9yZzEuZGVwYXJ0bWVudDEpLlxuICAgKiBAcGFyYW0ge0NBX1JPTEUgfCBzdHJpbmd9IFt1c2VyUm9sZV0gLSBSb2xlIHRvIGFzc2lnbiB0byB0aGUgaWRlbnRpdHkuXG4gICAqIEBwYXJhbSB7SUtleVZhbHVlQXR0cmlidXRlfSBbYXR0cnNdIC0gT3B0aW9uYWwgYXR0cmlidXRlcyB0byBhdHRhY2ggdG8gdGhlIGlkZW50aXR5LlxuICAgKiBAcGFyYW0ge251bWJlcn0gW21heEVucm9sbG1lbnRzXSAtIE1heGltdW0gbnVtYmVyIG9mIGVucm9sbG1lbnRzIGFsbG93ZWQgZm9yIHRoZSBpZGVudGl0eS5cbiAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSBUaGUgZW5yb2xsbWVudCBzZWNyZXQgZm9yIHRoZSByZWdpc3RlcmVkIGlkZW50aXR5LlxuICAgKi9cbiAgYXN5bmMgcmVnaXN0ZXIoXG4gICAgbW9kZWw6IENyZWRlbnRpYWxzLFxuICAgIGlzU3VwZXJVc2VyOiBib29sZWFuID0gZmFsc2UsXG4gICAgYWZmaWxpYXRpb246IHN0cmluZyA9IFwiXCIsXG4gICAgdXNlclJvbGU/OiBDQV9ST0xFIHwgc3RyaW5nLFxuICAgIGF0dHJzPzogSUtleVZhbHVlQXR0cmlidXRlLFxuICAgIG1heEVucm9sbG1lbnRzPzogbnVtYmVyXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgbGV0IHJlZ2lzdHJhdGlvbjogc3RyaW5nO1xuICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLnJlZ2lzdGVyKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyB1c2VyTmFtZSwgcGFzc3dvcmQgfSA9IG1vZGVsO1xuICAgICAgY29uc3QgY2EgPSBhd2FpdCB0aGlzLkNBKCk7XG4gICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5Vc2VyKCk7XG4gICAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgICAgZW5yb2xsbWVudElEOiB1c2VyTmFtZSBhcyBzdHJpbmcsXG4gICAgICAgIGVucm9sbG1lbnRTZWNyZXQ6IHBhc3N3b3JkLFxuICAgICAgICBhZmZpbGlhdGlvbjogYWZmaWxpYXRpb24sXG4gICAgICAgIHVzZXJSb2xlOiB1c2VyUm9sZSxcbiAgICAgICAgYXR0cnM6IGF0dHJzLFxuICAgICAgICBtYXhFbnJvbGxtZW50czogbWF4RW5yb2xsbWVudHMsXG4gICAgICB9IGFzIElSZWdpc3RlclJlcXVlc3Q7XG4gICAgICByZWdpc3RyYXRpb24gPSBhd2FpdCBjYS5yZWdpc3Rlcihwcm9wcywgdXNlcik7XG4gICAgICBsb2cuaW5mbyhcbiAgICAgICAgYFJlZ2lzdHJhdGlvbiBmb3IgJHt1c2VyTmFtZX0gY3JlYXRlZCB3aXRoIHVzZXIgdHlwZSAke3VzZXJSb2xlID8/IFwiVW5kZWZpbmVkIFJvbGVcIn0gJHtpc1N1cGVyVXNlciA/IFwiYXMgc3VwZXIgdXNlclwiIDogXCJcIn1gXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGUpO1xuICAgIH1cbiAgICByZXR1cm4gcmVnaXN0cmF0aW9uO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0YXRpYyBpZGVudGl0eUZyb21FbnJvbGxtZW50KFxuICAgIGVucm9sbG1lbnQ6IElFbnJvbGxSZXNwb25zZSxcbiAgICBtc3BJZDogc3RyaW5nXG4gICk6IElkZW50aXR5IHtcbiAgICBjb25zdCB7IGNlcnRpZmljYXRlLCBrZXksIHJvb3RDZXJ0aWZpY2F0ZSB9ID0gZW5yb2xsbWVudDtcbiAgICBjb25zdCBsb2cgPSBMb2dnaW5nLmZvcihGYWJyaWNFbnJvbGxtZW50U2VydmljZSwge30pLmZvcihcbiAgICAgIHRoaXMuaWRlbnRpdHlGcm9tRW5yb2xsbWVudFxuICAgICk7XG4gICAgbG9nLmRlYnVnKFxuICAgICAgYEdlbmVyYXRpbmcgSWRlbnRpdHkgZnJvbSBjZXJ0aWZpY2F0ZSAke2NlcnRpZmljYXRlfSBpbiBtc3AgJHttc3BJZH1gXG4gICAgKTtcbiAgICBjb25zdCBjbGllbnRJZCA9IENyeXB0b1V0aWxzLmZhYnJpY0lkRnJvbUNlcnRpZmljYXRlKGNlcnRpZmljYXRlKTtcbiAgICBjb25zdCBpZCA9IENyeXB0b1V0aWxzLmVuY29kZShjbGllbnRJZCk7XG4gICAgbG9nLmRlYnVnKGBJZGVudGl0eSAke2NsaWVudElkfSBhbmQgZW5jb2RlZElkICR7aWR9YCk7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICByZXR1cm4gbmV3IElkZW50aXR5KHtcbiAgICAgIGlkOiBpZCxcbiAgICAgIGNyZWRlbnRpYWxzOiB7XG4gICAgICAgIGlkOiBpZCxcbiAgICAgICAgY2VydGlmaWNhdGU6IGNlcnRpZmljYXRlLFxuICAgICAgICBwcml2YXRlS2V5OiBrZXkudG9CeXRlcygpLFxuICAgICAgICByb290Q2VydGlmaWNhdGU6IHJvb3RDZXJ0aWZpY2F0ZSxcbiAgICAgICAgY3JlYXRlZE9uOiBub3csXG4gICAgICAgIHVwZGF0ZWRPbjogbm93LFxuICAgICAgfSxcbiAgICAgIG1zcElkOiBtc3BJZCxcbiAgICAgIGNyZWF0ZWRPbjogbm93LFxuICAgICAgdXBkYXRlZE9uOiBub3csXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEVucm9sbCBhbiBpZGVudGl0eSB3aXRoIHRoZSBDQSB1c2luZyBhIHJlZ2lzdHJhdGlvbiBzZWNyZXQuXG4gICAqIEBzdW1tYXJ5IEV4Y2hhbmdlcyB0aGUgZW5yb2xsbWVudCBJRCBhbmQgc2VjcmV0IGZvciBjZXJ0aWZpY2F0ZXMsIHJldHVybmluZyBhIGNvbnN0cnVjdGVkIElkZW50aXR5IG1vZGVsLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZW5yb2xsbWVudElkIC0gRW5yb2xsbWVudCBJRCB0byBlbnJvbGwuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb24gLSBFbnJvbGxtZW50IHNlY3JldCByZXR1cm5lZCBhdCByZWdpc3RyYXRpb24gdGltZS5cbiAgICogQHJldHVybiB7UHJvbWlzZTxJZGVudGl0eT59IFRoZSBlbnJvbGxlZCBpZGVudGl0eSBvYmplY3Qgd2l0aCBjcmVkZW50aWFscy5cbiAgICovXG4gIGFzeW5jIGVucm9sbChlbnJvbGxtZW50SWQ6IHN0cmluZywgcmVnaXN0cmF0aW9uOiBzdHJpbmcpIHtcbiAgICBsZXQgaWRlbnRpdHk6IElkZW50aXR5O1xuICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLmVucm9sbCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNhID0gYXdhaXQgdGhpcy5DQSgpO1xuICAgICAgbG9nLmRlYnVnKGBFbnJvbGxpbmcgJHtlbnJvbGxtZW50SWR9YCk7XG4gICAgICBjb25zdCBlbnJvbGxtZW50OiBJRW5yb2xsUmVzcG9uc2UgPSBhd2FpdCBjYS5lbnJvbGwoe1xuICAgICAgICBlbnJvbGxtZW50SUQ6IGVucm9sbG1lbnRJZCxcbiAgICAgICAgZW5yb2xsbWVudFNlY3JldDogcmVnaXN0cmF0aW9uLFxuICAgICAgfSk7XG4gICAgICBpZGVudGl0eSA9IEZhYnJpY0Vucm9sbG1lbnRTZXJ2aWNlLmlkZW50aXR5RnJvbUVucm9sbG1lbnQoXG4gICAgICAgIGVucm9sbG1lbnQsXG4gICAgICAgIHRoaXMuY2FDb25maWcuY2FOYW1lXG4gICAgICApO1xuICAgICAgbG9nLmluZm8oXG4gICAgICAgIGBTdWNjZXNzZnVsbHkgZW5yb2xsZWQgJHtlbnJvbGxtZW50SWR9IHVuZGVyICR7dGhpcy5jYUNvbmZpZy5jYU5hbWV9IGFzICR7aWRlbnRpdHkuaWR9YFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlKTtcbiAgICB9XG4gICAgcmV0dXJuIGlkZW50aXR5O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZWdpc3RlciBhbmQgZW5yb2xsIGEgbmV3IGlkZW50aXR5IGluIG9uZSBzdGVwLlxuICAgKiBAc3VtbWFyeSBSZWdpc3RlcnMgYSBuZXcgZW5yb2xsbWVudCBJRCB3aXRoIHRoZSBDQSBhbmQgaW1tZWRpYXRlbHkgZXhjaGFuZ2VzIHRoZSBzZWNyZXQgdG8gZW5yb2xsLCByZXR1cm5pbmcgdGhlIGNyZWF0ZWQgSWRlbnRpdHkuXG4gICAqIEBwYXJhbSB7Q3JlZGVudGlhbHN9IG1vZGVsIC0gQ3JlZGVudGlhbHMgZm9yIHRoZSBuZXcgaWRlbnRpdHkgY29udGFpbmluZyB1c2VyTmFtZSBhbmQgcGFzc3dvcmQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzU3VwZXJVc2VyPWZhbHNlXSAtIFdoZXRoZXIgdG8gcmVnaXN0ZXIgdGhlIGlkZW50aXR5IGFzIGEgc3VwZXIgdXNlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFthZmZpbGlhdGlvbj1cIlwiXSAtIEFmZmlsaWF0aW9uIHN0cmluZyAoZS5nLiwgb3JnMS5kZXBhcnRtZW50MSkuXG4gICAqIEBwYXJhbSB7Q0FfUk9MRSB8IHN0cmluZ30gW3VzZXJSb2xlXSAtIFJvbGUgdG8gYXNzaWduIHRvIHRoZSBpZGVudGl0eS5cbiAgICogQHBhcmFtIHtJS2V5VmFsdWVBdHRyaWJ1dGV9IFthdHRyc10gLSBPcHRpb25hbCBhdHRyaWJ1dGVzIHRvIGF0dGFjaCB0byB0aGUgaWRlbnRpdHkuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbWF4RW5yb2xsbWVudHNdIC0gTWF4aW11bSBudW1iZXIgb2YgZW5yb2xsbWVudHMgYWxsb3dlZCBmb3IgdGhlIGlkZW50aXR5LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPElkZW50aXR5Pn0gVGhlIGVucm9sbGVkIGlkZW50aXR5LlxuICAgKi9cbiAgYXN5bmMgcmVnaXN0ZXJBbmRFbnJvbGwoXG4gICAgbW9kZWw6IENyZWRlbnRpYWxzLFxuICAgIGlzU3VwZXJVc2VyOiBib29sZWFuID0gZmFsc2UsXG4gICAgYWZmaWxpYXRpb246IHN0cmluZyA9IFwiXCIsXG4gICAgdXNlclJvbGU/OiBDQV9ST0xFIHwgc3RyaW5nLFxuICAgIGF0dHJzPzogSUtleVZhbHVlQXR0cmlidXRlLFxuICAgIG1heEVucm9sbG1lbnRzPzogbnVtYmVyXG4gICk6IFByb21pc2U8SWRlbnRpdHk+IHtcbiAgICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCB0aGlzLnJlZ2lzdGVyKFxuICAgICAgbW9kZWwsXG4gICAgICBpc1N1cGVyVXNlcixcbiAgICAgIGFmZmlsaWF0aW9uLFxuICAgICAgdXNlclJvbGUsXG4gICAgICBhdHRycyxcbiAgICAgIG1heEVucm9sbG1lbnRzXG4gICAgKTtcbiAgICBjb25zdCB7IHVzZXJOYW1lIH0gPSBtb2RlbDtcbiAgICByZXR1cm4gdGhpcy5lbnJvbGwodXNlck5hbWUgYXMgc3RyaW5nLCByZWdpc3RyYXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldm9rZXMgdGhlIGVucm9sbG1lbnQgb2YgYW4gaWRlbnRpdHkgd2l0aCB0aGUgc3BlY2lmaWVkIGVucm9sbG1lbnQgSUQuXG4gICAqXG4gICAqIEBwYXJhbSBlbnJvbGxtZW50SWQgLSBUaGUgZW5yb2xsbWVudCBJRCBvZiB0aGUgaWRlbnRpdHkgdG8gYmUgcmV2b2tlZC5cbiAgICpcbiAgICogQHJldHVybnMgQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHJlc3VsdCBvZiB0aGUgcmV2b2NhdGlvbiBvcGVyYXRpb24uXG4gICAqXG4gICAqIEB0aHJvd3Mge05vdEZvdW5kRXJyb3J9IElmIHRoZSBlbnJvbGxtZW50IHdpdGggdGhlIHNwZWNpZmllZCBJRCBkb2VzIG5vdCBleGlzdC5cbiAgICogQHRocm93cyB7SW50ZXJuYWxFcnJvcn0gSWYgdGhlcmUgaXMgYW4gZXJyb3IgZHVyaW5nIHRoZSByZXZvY2F0aW9uIHByb2Nlc3MuXG4gICAqL1xuICBhc3luYyByZXZva2UoZW5yb2xsbWVudElkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjYSA9IGF3YWl0IHRoaXMuQ0EoKTtcbiAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5Vc2VyKCk7XG4gICAgY29uc3QgaWRlbnRpdHkgPSBhd2FpdCB0aGlzLnJlYWQoZW5yb2xsbWVudElkKTtcbiAgICBpZiAoIWlkZW50aXR5KVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXG4gICAgICAgIGBDb3VsZCBub3QgZmluZCBlbnJvbGxtZW50IHdpdGggaWQgJHtlbnJvbGxtZW50SWR9YFxuICAgICAgKTtcbiAgICBsZXQgcmVzdWx0OiBJU2VydmljZVJlc3BvbnNlO1xuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBhd2FpdCBjYS5yZXZva2UoXG4gICAgICAgIHsgZW5yb2xsbWVudElEOiBpZGVudGl0eS5pZCwgcmVhc29uOiBcIlVzZXIgRGVsZXRhdGlvblwiIH0sXG4gICAgICAgIHVzZXJcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIGBDb3VsZCBub3QgcmV2b2tlIGVucm9sbG1lbnQgd2l0aCBpZCAke2Vucm9sbG1lbnRJZH06ICR7ZX1gXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIXJlc3VsdC5zdWNjZXNzKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIGBDb3VsZCBub3QgcmV2b2tlIGVucm9sbG1lbnQgd2l0aCBpZCAke2Vucm9sbG1lbnRJZH06ICR7cmVzdWx0LmVycm9ycy5qb2luKFwiXFxuXCIpfWBcbiAgICAgICk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
|
|
348
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljRW5yb2xsbWVudFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJGYWJyaWNFbnJvbGxtZW50U2VydmljZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx3RUFBZ0Q7QUFDaEQsa0VBQTREO0FBQzVELHlDQUFvRDtBQUNwRCwyREFBdUY7QUFDdkYsNENBQTBDO0FBQzFDLDhDQUE2QztBQUM3Qyx3REFBNkQ7QUFDN0QsK0NBQXlEO0FBU3pELENBQUMsVUFBVSxnQkFBZ0I7SUFDdkIsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ2xDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUN4QyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDdEMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ2xDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUN4QyxDQUFDLENBQUMsQ0FBQyx3QkFBZ0IsSUFBSSxDQUFDLHdCQUFnQixHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFTaEQsQ0FBQyxVQUFVLHNCQUFzQjtJQUM3QixzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLG9CQUFvQixDQUFDO0lBQ2xFLHNCQUFzQixDQUFDLDBCQUEwQixDQUFDLEdBQUcsNEJBQTRCLENBQUM7SUFDbEYsc0JBQXNCLENBQUMsdUJBQXVCLENBQUMsR0FBRyx5QkFBeUIsQ0FBQztJQUM1RSxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLG1CQUFtQixDQUFDO0lBQ2pFLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxHQUFHLFlBQVksQ0FBQztJQUNuRCxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLG1CQUFtQixDQUFDO0lBQ2pFLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxHQUFHLFdBQVcsQ0FBQztBQUNyRCxDQUFD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QUFZLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hILE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7Q0FDSjtBQTNSRCwwREEyUkM7QUFDRCwwem9DQUEwem9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEZhYnJpY0NBU2VydmljZXMgZnJvbSBcImZhYnJpYy1jYS1jbGllbnRcIjtcbmltcG9ydCB7IElkZW50aXR5IH0gZnJvbSBcIi4vLi4vLi4vc2hhcmVkL21vZGVsL0lkZW50aXR5LmpzXCI7XG5pbXBvcnQgeyBBdXRob3JpemF0aW9uRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IENvbmZsaWN0RXJyb3IsIEludGVybmFsRXJyb3IsIE5vdEZvdW5kRXJyb3IsIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBDb3JlVXRpbHMgfSBmcm9tIFwiLi8uLi91dGlscy5qc1wiO1xuaW1wb3J0IHsgQ3J5cHRvVXRpbHMgfSBmcm9tIFwiLi8uLi9jcnlwdG8uanNcIjtcbmltcG9ydCB7IFJlZ2lzdHJhdGlvbkVycm9yIH0gZnJvbSBcIi4vLi4vLi4vc2hhcmVkL2Vycm9ycy5qc1wiO1xuaW1wb3J0IHsgTG9nZ2VkQ2xhc3MsIExvZ2dpbmcgfSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcbi8qKlxuICogQGRlc2NyaXB0aW9uIEh5cGVybGVkZ2VyIEZhYnJpYyBDQSBpZGVudGl0eSB0eXBlcy5cbiAqIEBzdW1tYXJ5IEVudW1lcmF0ZXMgdGhlIHN1cHBvcnRlZCBpZGVudGl0eSB0eXBlcyByZWNvZ25pemVkIGJ5IEZhYnJpYyBDQSBmb3IgcmVnaXN0cmF0aW9uIGFuZCBpZGVudGl0eSBtYW5hZ2VtZW50LlxuICogQGVudW0ge3N0cmluZ31cbiAqIEByZWFkb25seVxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLmNsaWVudFxuICovXG5leHBvcnQgdmFyIEhGQ0FJZGVudGl0eVR5cGU7XG4oZnVuY3Rpb24gKEhGQ0FJZGVudGl0eVR5cGUpIHtcbiAgICBIRkNBSWRlbnRpdHlUeXBlW1wiUEVFUlwiXSA9IFwicGVlclwiO1xuICAgIEhGQ0FJZGVudGl0eVR5cGVbXCJPUkRFUkVSXCJdID0gXCJvcmRlcmVyXCI7XG4gICAgSEZDQUlkZW50aXR5VHlwZVtcIkNMSUVOVFwiXSA9IFwiY2xpZW50XCI7XG4gICAgSEZDQUlkZW50aXR5VHlwZVtcIlVTRVJcIl0gPSBcInVzZXJcIjtcbiAgICBIRkNBSWRlbnRpdHlUeXBlW1wiQURNSU5cIl0gPSBcImFkbWluXCI7XG59KShIRkNBSWRlbnRpdHlUeXBlIHx8IChIRkNBSWRlbnRpdHlUeXBlID0ge30pKTtcbi8qKlxuICogQGRlc2NyaXB0aW9uIFN0YW5kYXJkIEZhYnJpYyBDQSBpZGVudGl0eSBhdHRyaWJ1dGUga2V5cy5cbiAqIEBzdW1tYXJ5IEVudW1lcmF0ZXMgd2VsbC1rbm93biBGYWJyaWMgQ0EgYXR0cmlidXRlIGtleXMgdGhhdCBjYW4gYmUgYXNzaWduZWQgdG8gaWRlbnRpdGllcyBmb3IgZGVsZWdhdGlvbnMgYW5kIHBlcm1pc3Npb25zLlxuICogQGVudW0ge3N0cmluZ31cbiAqIEByZWFkb25seVxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLmNsaWVudFxuICovXG5leHBvcnQgdmFyIEhGQ0FJZGVudGl0eUF0dHJpYnV0ZXM7XG4oZnVuY3Rpb24gKEhGQ0FJZGVudGl0eUF0dHJpYnV0ZXMpIHtcbiAgICBIRkNBSWRlbnRpdHlBdHRyaWJ1dGVzW1wiSEZSRUdJU1RSQVJST0xFU1wiXSA9IFwiaGYuUmVnaXN0cmFyLlJvbGVzXCI7XG4gICAgSEZDQUlkZW50aXR5QXR0cmlidXRlc1tcIkhGUkVHSVNUUkFSREVMRUdBVEVST0xFU1wiXSA9IFwiaGYuUmVnaXN0cmFyLkRlbGVnYXRlUm9sZXNcIjtcbiAgICBIRkNBSWRlbnRpdHlBdHRyaWJ1dGVzW1wiSEZSRUdJU1RSQVJBVFRSSUJVVEVTXCJdID0gXCJoZi5SZWdpc3RyYXIuQXR0cmlidXRlc1wiO1xuICAgIEhGQ0FJZGVudGl0eUF0dHJpYnV0ZXNbXCJIRklOVEVSTUVESUFURUNBXCJdID0gXCJoZi5JbnRlcm1lZGlhdGVDQVwiO1xuICAgIEhGQ0FJZGVudGl0eUF0dHJpYnV0ZXNbXCJIRlJFVk9LRVJcIl0gPSBcImhmLlJldm9rZXJcIjtcbiAgICBIRkNBSWRlbnRpdHlBdHRyaWJ1dGVzW1wiSEZBRkZJTElBVElPTk1HUlwiXSA9IFwiaGYuQWZmaWxpYXRpb25NZ3JcIjtcbiAgICBIRkNBSWRlbnRpdHlBdHRyaWJ1dGVzW1wiSEZHRU5DUkxcIl0gPSBcImhmLkdlbkNSTFwiO1xufSkoSEZDQUlkZW50aXR5QXR0cmlidXRlcyB8fCAoSEZDQUlkZW50aXR5QXR0cmlidXRlcyA9IHt9KSk7XG4vKipcbiAqIEBkZXNjcmlwdGlvbiBTZXJ2aWNlIHdyYXBwZXIgZm9yIGludGVyYWN0aW5nIHdpdGggYSBGYWJyaWMgQ0EuXG4gKiBAc3VtbWFyeSBQcm92aWRlcyBoaWdoLWxldmVsIG9wZXJhdGlvbnMgZm9yIG1hbmFnaW5nIGlkZW50aXRpZXMgYWdhaW5zdCBhIEh5cGVybGVkZ2VyIEZhYnJpYyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHksIGluY2x1ZGluZyByZWdpc3RyYXRpb24sIGVucm9sbG1lbnQsIHJldm9jYXRpb24sIGFuZCBhZG1pbmlzdHJhdGl2ZSBxdWVyaWVzLiBFbmNhcHN1bGF0ZXMgbG93ZXItbGV2ZWwgRmFicmljIENBIGNsaWVudCBjYWxscyB3aXRoIGNvbnNpc3RlbnQgbG9nZ2luZyBhbmQgZXJyb3IgbWFwcGluZy5cbiAqIEBwYXJhbSB7Q0FDb25maWd9IGNhQ29uZmlnIC0gQ29ubmVjdGlvbiBhbmQgVExTIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB0YXJnZXQgQ0EuXG4gKiBAY2xhc3MgRmFicmljRW5yb2xsbWVudFNlcnZpY2VcbiAqIEBleGFtcGxlXG4gKiAvLyBSZWdpc3RlciBhbmQgZW5yb2xsIGEgbmV3IHVzZXJcbiAqIGNvbnN0IHN2YyA9IG5ldyBGYWJyaWNFbnJvbGxtZW50U2VydmljZSh7XG4gKiAgIHVybDogJ2h0dHBzOi8vbG9jYWxob3N0OjcwNTQnLFxuICogICBjYU5hbWU6ICdPcmcxQ0EnLFxuICogICB0bHM6IHsgdHJ1c3RlZFJvb3RzOiBbJy9wYXRoL3RvL2NhLnBlbSddLCB2ZXJpZnk6IGZhbHNlIH0sXG4gKiAgIGNhQ2VydDogJy9wYXRoL3RvL2FkbWluL2NlcnREaXInLFxuICogICBjYUtleTogJy9wYXRoL3RvL2FkbWluL2tleURpcidcbiAqIH0pO1xuICogYXdhaXQgc3ZjLnJlZ2lzdGVyKHsgdXNlck5hbWU6ICdhbGljZScsIHBhc3N3b3JkOiAnczNjcjN0JyB9LCBmYWxzZSwgJ29yZzEuZGVwYXJ0bWVudDEnLCBDQV9ST0xFLlVTRVIpO1xuICogY29uc3QgaWQgPSBhd2FpdCBzdmMuZW5yb2xsKCdhbGljZScsICdzM2NyM3QnKTtcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgYXV0b251bWJlclxuICogICBwYXJ0aWNpcGFudCBBcHBcbiAqICAgcGFydGljaXBhbnQgU3ZjIGFzIEZhYnJpY0Vucm9sbG1lbnRTZXJ2aWNlXG4gKiAgIHBhcnRpY2lwYW50IENBIGFzIEZhYnJpYyBDQVxuICogICBBcHAtPj5TdmM6IHJlZ2lzdGVyKGNyZWRlbnRpYWxzLCAuLi4pXG4gKiAgIFN2Yy0+PkNBOiByZWdpc3RlcihyZXF1ZXN0LCBhZG1pblVzZXIpXG4gKiAgIENBLS0+PlN2YzogZW5yb2xsbWVudFNlY3JldFxuICogICBTdmMtLT4+QXBwOiBzZWNyZXRcbiAqICAgQXBwLT4+U3ZjOiBlbnJvbGwoZW5yb2xsbWVudElkLCBzZWNyZXQpXG4gKiAgIFN2Yy0+PkNBOiBlbnJvbGwoe2Vucm9sbG1lbnRJRCwgc2VjcmV0fSlcbiAqICAgQ0EtLT4+U3ZjOiBjZXJ0aWZpY2F0ZXNcbiAqICAgU3ZjLS0+PkFwcDogSWRlbnRpdHlcbiAqL1xuZXhwb3J0IGNsYXNzIEZhYnJpY0Vucm9sbG1lbnRTZXJ2aWNlIGV4dGVuZHMgTG9nZ2VkQ2xhc3Mge1xuICAgIGNvbnN0cnVjdG9yKGNhQ29uZmlnKSB7XG4gICAgICAgIENvcmVVdGlscy5nZXRDcnlwdG9TdWl0ZShjYUNvbmZpZy5oc21cbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIHNvZnR3YXJlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBsaWI6IGNhQ29uZmlnLmhzbS5saWJyYXJ5LFxuICAgICAgICAgICAgICAgIHNsb3Q6IGNhQ29uZmlnLmhzbS5zbG90LFxuICAgICAgICAgICAgICAgIGxhYmVsOiBjYUNvbmZpZy5oc20udG9rZW5MYWJlbCxcbiAgICAgICAgICAgICAgICBwaW46IFN0cmluZyhjYUNvbmZpZy5oc20ucGluKSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkKTtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jYUNvbmZpZyA9IGNhQ29uZmlnO1xuICAgIH1cbiAgICBhc3luYyBVc2VyKCkge1xuICAgICAgICBpZiAodGhpcy51c2VyKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXNlcjtcbiAgICAgICAgY29uc3QgeyBjYU5hbWUsIGNhQ2VydCwgY2FLZXksIHVybCwgaHNtIH0gPSB0aGlzLmNhQ29uZmlnO1xuICAgICAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5Vc2VyKTtcbiAgICAgICAgbG9nLmRlYnVnKGBDcmVhdGluZyBDQSB1c2VyIGZvciAke2NhTmFtZX0gYXQgJHt1cmx9YCk7XG4gICAgICAgIGxvZy5kZWJ1ZyhgUmV0cmlldmluZyBDQSBjZXJ0aWZpY2F0ZSBmcm9tICR7Y2FDZXJ0fWApO1xuICAgICAgICBjb25zdCBjZXJ0aWZpY2F0ZSA9IGF3YWl0IENvcmVVdGlscy5nZXRGaXJzdERpckZpbGVOYW1lQ29udGVudChjYUNlcnQpO1xuICAgICAgICBsZXQga2V5O1xuICAgICAgICBpZiAoIWhzbSkge1xuICAgICAgICAgICAgaWYgKCFjYUtleSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBNaXNzaW5nIGNhS2V5IGNvbmZpZ3VyYXRpb24gZm9yIENBICR7Y2FOYW1lfS4gUHJvdmlkZSBhIGtleSBkaXJlY3Rvcnkgb3IgY29uZmlndXJlIEhTTSBzdXBwb3J0LmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbG9nLmRlYnVnKGBSZXRyaWV2aW5nIENBIGtleSBmcm9tICR7Y2FLZXl9YCk7XG4gICAgICAgICAgICBrZXkgPSBhd2FpdCBDb3JlVXRpbHMuZ2V0Rmlyc3REaXJGaWxlTmFtZUNvbnRlbnQoY2FLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbG9nLmRlYnVnKGBVc2luZyBIU00gY29uZmlndXJhdGlvbiBmb3IgQ0EgJHtjYU5hbWV9IHdpdGggbGlicmFyeSAke2hzbS5saWJyYXJ5fWApO1xuICAgICAgICB9XG4gICAgICAgIGxvZy5kZWJ1ZyhgTG9hZGluZyBBZG1pbiB1c2VyIGZvciBjYSAke2NhTmFtZX1gKTtcbiAgICAgICAgdGhpcy51c2VyID0gYXdhaXQgQ29yZVV0aWxzLmdldENBVXNlcihcImFkbWluXCIsIGtleSwgY2VydGlmaWNhdGUsIGNhTmFtZSwge1xuICAgICAgICAgICAgaHNtLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMudXNlcjtcbiAgICB9XG4gICAgYXN5bmMgQ0EoKSB7XG4gICAgICAgIGlmICh0aGlzLmNhKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2E7XG4gICAgICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLkNBKTtcbiAgICAgICAgY29uc3QgeyB1cmwsIHRscywgY2FOYW1lIH0gPSB0aGlzLmNhQ29uZmlnO1xuICAgICAgICAvLyBGT1IgU29tZSBSZWFzb24gdGhlIHZlcmlmaWNhdGlvbiBmYWlscyBuZWVkIHRvIGludmVzdGlnYXRlIHRoaXMgd29ya3MgZm9yIG5vd1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgICAgIGxldCB7IHRydXN0ZWRSb290cywgdmVyaWZ5IH0gPSB0bHM7XG4gICAgICAgIGNvbnN0IHJvb3QgPSB0cnVzdGVkUm9vdHNbMF07XG4gICAgICAgIGxvZy5kZWJ1ZyhgUmV0cmlldmluZyBDQSBjZXJ0aWZpY2F0ZSBmcm9tICR7cm9vdH0uIGN3ZDogJHtwcm9jZXNzLmN3ZCgpfWApO1xuICAgICAgICBjb25zdCBjZXJ0aWZpY2F0ZSA9IGF3YWl0IENvcmVVdGlscy5nZXRGaWxlQ29udGVudChyb290KTtcbiAgICAgICAgbG9nLmRlYnVnKGBDcmVhdGluZyBDQSBDbGllbnQgZm9yIENBICR7Y2FOYW1lfSB1bmRlciAke3VybH1gKTtcbiAgICAgICAgdGhpcy5jYSA9IG5ldyBGYWJyaWNDQVNlcnZpY2VzKHVybCwge1xuICAgICAgICAgICAgdHJ1c3RlZFJvb3RzOiBCdWZmZXIuZnJvbShjZXJ0aWZpY2F0ZSksXG4gICAgICAgICAgICB2ZXJpZnksXG4gICAgICAgIH0sIGNhTmFtZSk7XG4gICAgICAgIHJldHVybiB0aGlzLmNhO1xuICAgIH1cbiAgICBhc3luYyBDbGllbnQoKSB7XG4gICAgICAgIGlmICh0aGlzLmNsaWVudClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNsaWVudDtcbiAgICAgICAgY29uc3QgY2EgPSBhd2FpdCB0aGlzLkNBKCk7XG4gICAgICAgIHRoaXMuY2xpZW50ID0gY2FbXCJfRmFicmljQ0FTZXJ2aWNlc1wiXTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xpZW50O1xuICAgIH1cbiAgICBhc3luYyBDZXJ0aWZpY2F0ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNlcnRpZmljYXRlU2VydmljZSlcbiAgICAgICAgICAgIHRoaXMuY2VydGlmaWNhdGVTZXJ2aWNlID0gKGF3YWl0IHRoaXMuQ2xpZW50KCkpLm5ld0NlcnRpZmljYXRlU2VydmljZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5jZXJ0aWZpY2F0ZVNlcnZpY2U7XG4gICAgfVxuICAgIGFzeW5jIEFmZmlsaWF0aW9ucygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmFmZmlsaWF0aW9uU2VydmljZSlcbiAgICAgICAgICAgIHRoaXMuYWZmaWxpYXRpb25TZXJ2aWNlID0gKGF3YWl0IHRoaXMuQ0EoKSkubmV3QWZmaWxpYXRpb25TZXJ2aWNlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmFmZmlsaWF0aW9uU2VydmljZTtcbiAgICB9XG4gICAgYXN5bmMgSWRlbnRpdGllcygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlkZW50aXR5U2VydmljZSlcbiAgICAgICAgICAgIHRoaXMuaWRlbnRpdHlTZXJ2aWNlID0gKGF3YWl0IHRoaXMuQ0EoKSkubmV3SWRlbnRpdHlTZXJ2aWNlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmlkZW50aXR5U2VydmljZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJldHJpZXZlIGNlcnRpZmljYXRlcyBmcm9tIHRoZSBDQS5cbiAgICAgKiBAc3VtbWFyeSBDYWxscyB0aGUgQ0EgY2VydGlmaWNhdGUgc2VydmljZSB0byBsaXN0IGNlcnRpZmljYXRlcywgb3B0aW9uYWxseSBtYXBwaW5nIHRvIFBFTSBzdHJpbmdzIG9ubHkuXG4gICAgICogQHBhcmFtIHtHZXRDZXJ0aWZpY2F0ZXNSZXF1ZXN0fSBbcmVxdWVzdF0gLSBPcHRpb25hbCBmaWx0ZXIgcmVxdWVzdCBmb3IgY2VydGlmaWNhdGUgbG9va3VwLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2RvTWFwPXRydWVdIC0gV2hlbiB0cnVlLCByZXR1cm5zIGFycmF5IG9mIFBFTSBzdHJpbmdzOyBvdGhlcndpc2UgcmV0dXJucyBmdWxsIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZ1tdIHwgQ2VydGlmaWNhdGVSZXNwb25zZT59IEFycmF5IG9mIFBFTSBzdHJpbmdzIG9yIHRoZSBmdWxsIGNlcnRpZmljYXRlIHJlc3BvbnNlLlxuICAgICAqL1xuICAgIGFzeW5jIGdldENlcnRpZmljYXRlcyhyZXF1ZXN0LCBkb01hcCA9IHRydWUpIHtcbiAgICAgICAgY29uc3QgY2VydGlmaWNhdGVTZXJ2aWNlID0gYXdhaXQgdGhpcy5DZXJ0aWZpY2F0ZSgpO1xuICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5Vc2VyKCk7XG4gICAgICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLmdldENlcnRpZmljYXRlcyk7XG4gICAgICAgIGxvZy5kZWJ1ZyhgUmV0cmlldmluZyBjZXJ0aWZpY2F0ZXMke3JlcXVlc3QgPyBgIGZvciAke3JlcXVlc3QuaWR9YCA6IFwiXCJ9IGZvciBDQSAke3RoaXMuY2FDb25maWcuY2FOYW1lfWApO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IChhd2FpdCBjZXJ0aWZpY2F0ZVNlcnZpY2UuZ2V0Q2VydGlmaWNhdGVzKHJlcXVlc3QgfHwge30sIHVzZXIpKS5yZXN1bHQ7XG4gICAgICAgIGxvZy5kZWJ1ZyhgRm91bmQgJHtyZXNwb25zZS5jZXJ0cy5sZW5ndGh9IGNlcnRpZmljYXRlczogJHtKU09OLnN0cmluZ2lmeShyZXNwb25zZSl9YCk7XG4gICAgICAgIHJldHVybiBkb01hcCA/IHJlc3BvbnNlLmNlcnRzLm1hcCgoYykgPT4gYy5QRU0pIDogcmVzcG9uc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IGlkZW50aXRpZXMgcmVnaXN0ZXJlZCBpbiB0aGUgQ0EuXG4gICAgICogQHN1bW1hcnkgUXVlcmllcyB0aGUgQ0EgaWRlbnRpdHkgc2VydmljZSB0byBmZXRjaCBhbGwgaWRlbnRpdGllcyBhbmQgcmV0dXJucyB0aGUgbGlzdCBhcyBGYWJyaWNJZGVudGl0eSBvYmplY3RzLlxuICAgICAqIEByZXR1cm4ge1Byb21pc2U8RmFicmljSWRlbnRpdHlbXT59IFRoZSBsaXN0IG9mIGlkZW50aXRpZXMgcmVnaXN0ZXJlZCBpbiB0aGUgQ0EuXG4gICAgICovXG4gICAgYXN5bmMgZ2V0SWRlbnRpdGllcygpIHtcbiAgICAgICAgY29uc3QgaWRlbnRpdGllc1NlcnZpY2UgPSBhd2FpdCB0aGlzLklkZW50aXRpZXMoKTtcbiAgICAgICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMuZ2V0SWRlbnRpdGllcyk7XG4gICAgICAgIGxvZy5kZWJ1ZyhgUmV0cmlldmluZyBJZGVudGl0aWVzIHVuZGVyIENBICR7dGhpcy5jYUNvbmZpZy5jYU5hbWV9YCk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gKGF3YWl0IGlkZW50aXRpZXNTZXJ2aWNlLmdldEFsbChhd2FpdCB0aGlzLlVzZXIoKSkpLnJlc3VsdDtcbiAgICAgICAgbG9nLmRlYnVnKGBGb3VuZCAke3Jlc3BvbnNlLmlkZW50aXRpZXMubGVuZ3RofSBJZGVudGl0aWVzOiAke0pTT04uc3RyaW5naWZ5KHJlc3BvbnNlKX1gKTtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmlkZW50aXRpZXM7XG4gICAgfVxuICAgIHBhcnNlRXJyb3IoZSkge1xuICAgICAgICBjb25zdCByZWdleHAgPSAvLipjb2RlOlxccyhcXGQrKS4qP21lc3NhZ2U6XFxzW1wiJ10oLispW1wiJ10vZ3M7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gcmVnZXhwLmV4ZWMoZS5tZXNzYWdlKTtcbiAgICAgICAgaWYgKCFtYXRjaClcbiAgICAgICAgICAgIHJldHVybiBuZXcgUmVnaXN0cmF0aW9uRXJyb3IoZSk7XG4gICAgICAgIGNvbnN0IFssIGNvZGUsIG1lc3NhZ2VdID0gbWF0Y2g7XG4gICAgICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgICAgICAgY2FzZSBcIjc0XCI6XG4gICAgICAgICAgICBjYXNlIFwiNzFcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvbmZsaWN0RXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgICBjYXNlIFwiMjBcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEF1dGhvcml6YXRpb25FcnJvcihtZXNzYWdlKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdpc3RyYXRpb25FcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmUgYWZmaWxpYXRpb25zIGZyb20gdGhlIENBLlxuICAgICAqIEBzdW1tYXJ5IFF1ZXJpZXMgdGhlIENBIGZvciB0aGUgbGlzdCBvZiBhZmZpbGlhdGlvbnMgYXZhaWxhYmxlIHVuZGVyIHRoZSBjb25maWd1cmVkIENBLlxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGFmZmlsaWF0aW9ucyByZXN1bHQgcGF5bG9hZC5cbiAgICAgKi9cbiAgICBhc3luYyBnZXRBZmZpbGlhdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IGFmZmlsaWF0aW9uU2VydmljZSA9IGF3YWl0IHRoaXMuQWZmaWxpYXRpb25zKCk7XG4gICAgICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLmdldEFmZmlsaWF0aW9ucyk7XG4gICAgICAgIGxvZy5kZWJ1ZyhgUmV0cmlldmluZyBBZmZpbGlhdGlvbnMgdW5kZXIgQ0EgJHt0aGlzLmNhQ29uZmlnLmNhTmFtZX1gKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSAoYXdhaXQgYWZmaWxpYXRpb25TZXJ2aWNlLmdldEFsbChhd2FpdCB0aGlzLlVzZXIoKSkpXG4gICAgICAgICAgICAucmVzdWx0O1xuICAgICAgICBsb2cuZGVidWcoYEZvdW5kICR7cmVzcG9uc2UuYS5sZW5ndGh9IEFmZmlsaWF0aW9uczogJHtKU09OLnN0cmluZ2lmeShyZXNwb25zZSl9YCk7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlYWQgaWRlbnRpdHkgZGV0YWlscyBmcm9tIHRoZSBDQSBieSBlbnJvbGxtZW50IElELlxuICAgICAqIEBzdW1tYXJ5IFJldHJpZXZlcyBhbmQgdmFsaWRhdGVzIGEgc2luZ2xlIGlkZW50aXR5LCB0aHJvd2luZyBOb3RGb3VuZEVycm9yIHdoZW4gbWlzc2luZy5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZW5yb2xsbWVudElkIC0gRW5yb2xsbWVudCBJRCB0byBsb29rdXAuXG4gICAgICogQHJldHVybiB7UHJvbWlzZTxGYWJyaWNJZGVudGl0eT59IFRoZSBpZGVudGl0eSBkZXRhaWxzIHN0b3JlZCBpbiB0aGUgQ0EuXG4gICAgICovXG4gICAgYXN5bmMgcmVhZChlbnJvbGxtZW50SWQpIHtcbiAgICAgICAgY29uc3QgY2EgPSBhd2FpdCB0aGlzLkNBKCk7XG4gICAgICAgIGNvbnN0IHVzZXIgPSBhd2FpdCB0aGlzLlVzZXIoKTtcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IGNhLm5ld0lkZW50aXR5U2VydmljZSgpLmdldE9uZShlbnJvbGxtZW50SWQsIHVzZXIpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgQ291bGRuJ3QgZmluZCBlbnJvbGxtZW50IHdpdGggaWQgJHtlbnJvbGxtZW50SWR9OiAke2V9YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyZXN1bHQuc3VjY2VzcylcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKGBDb3VsZG4ndCBmaW5kIGVucm9sbG1lbnQgd2l0aCBpZCAke2Vucm9sbG1lbnRJZH06ICR7cmVzdWx0LmVycm9ycy5qb2luKFwiXFxuXCIpfWApO1xuICAgICAgICByZXR1cm4gcmVzdWx0LnJlc3VsdDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlZ2lzdGVyIGEgbmV3IGlkZW50aXR5IHdpdGggdGhlIENBLlxuICAgICAqIEBzdW1tYXJ5IFN1Ym1pdHMgYSByZWdpc3RyYXRpb24gcmVxdWVzdCBmb3IgYSBuZXcgZW5yb2xsbWVudCBJRCwgcmV0dXJuaW5nIHRoZSBlbnJvbGxtZW50IHNlY3JldCB1cG9uIHN1Y2Nlc3MuXG4gICAgICogQHBhcmFtIHtDcmVkZW50aWFsc30gbW9kZWwgLSBDcmVkZW50aWFscyBjb250YWluaW5nIHVzZXJOYW1lIGFuZCBwYXNzd29yZCBmb3IgdGhlIG5ldyBpZGVudGl0eS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc1N1cGVyVXNlcj1mYWxzZV0gLSBXaGV0aGVyIHRvIHJlZ2lzdGVyIHRoZSBpZGVudGl0eSBhcyBhIHN1cGVyIHVzZXIuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFthZmZpbGlhdGlvbj1cIlwiXSAtIEFmZmlsaWF0aW9uIHN0cmluZyAoZS5nLiwgb3JnMS5kZXBhcnRtZW50MSkuXG4gICAgICogQHBhcmFtIHtDQV9ST0xFIHwgc3RyaW5nfSBbdXNlclJvbGVdIC0gUm9sZSB0byBhc3NpZ24gdG8gdGhlIGlkZW50aXR5LlxuICAgICAqIEBwYXJhbSB7SUtleVZhbHVlQXR0cmlidXRlfSBbYXR0cnNdIC0gT3B0aW9uYWwgYXR0cmlidXRlcyB0byBhdHRhY2ggdG8gdGhlIGlkZW50aXR5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWF4RW5yb2xsbWVudHNdIC0gTWF4aW11bSBudW1iZXIgb2YgZW5yb2xsbWVudHMgYWxsb3dlZCBmb3IgdGhlIGlkZW50aXR5LlxuICAgICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gVGhlIGVucm9sbG1lbnQgc2VjcmV0IGZvciB0aGUgcmVnaXN0ZXJlZCBpZGVudGl0eS5cbiAgICAgKi9cbiAgICBhc3luYyByZWdpc3Rlcihtb2RlbCwgaXNTdXBlclVzZXIgPSBmYWxzZSwgYWZmaWxpYXRpb24gPSBcIlwiLCB1c2VyUm9sZSwgYXR0cnMsIG1heEVucm9sbG1lbnRzKSB7XG4gICAgICAgIGxldCByZWdpc3RyYXRpb247XG4gICAgICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLnJlZ2lzdGVyKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHsgdXNlck5hbWUsIHBhc3N3b3JkIH0gPSBtb2RlbDtcbiAgICAgICAgICAgIGNvbnN0IGNhID0gYXdhaXQgdGhpcy5DQSgpO1xuICAgICAgICAgICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMuVXNlcigpO1xuICAgICAgICAgICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICAgICAgICAgICAgZW5yb2xsbWVudElEOiB1c2VyTmFtZSxcbiAgICAgICAgICAgICAgICBlbnJvbGxtZW50U2VjcmV0OiBwYXNzd29yZCxcbiAgICAgICAgICAgICAgICBhZmZpbGlhdGlvbjogYWZmaWxpYXRpb24sXG4gICAgICAgICAgICAgICAgdXNlclJvbGU6IHVzZXJSb2xlLFxuICAgICAgICAgICAgICAgIGF0dHJzOiBhdHRycyxcbiAgICAgICAgICAgICAgICBtYXhFbnJvbGxtZW50czogbWF4RW5yb2xsbWVudHMsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVnaXN0cmF0aW9uID0gYXdhaXQgY2EucmVnaXN0ZXIocHJvcHMsIHVzZXIpO1xuICAgICAgICAgICAgbG9nLmluZm8oYFJlZ2lzdHJhdGlvbiBmb3IgJHt1c2VyTmFtZX0gY3JlYXRlZCB3aXRoIHVzZXIgdHlwZSAke3VzZXJSb2xlID8/IFwiVW5kZWZpbmVkIFJvbGVcIn0gJHtpc1N1cGVyVXNlciA/IFwiYXMgc3VwZXIgdXNlclwiIDogXCJcIn1gKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWdpc3RyYXRpb247XG4gICAgfVxuICAgIHN0YXRpYyBpZGVudGl0eUZyb21FbnJvbGxtZW50KGVucm9sbG1lbnQsIG1zcElkKSB7XG4gICAgICAgIGNvbnN0IHsgY2VydGlmaWNhdGUsIGtleSwgcm9vdENlcnRpZmljYXRlIH0gPSBlbnJvbGxtZW50O1xuICAgICAgICBjb25zdCBsb2cgPSBMb2dnaW5nLmZvcihGYWJyaWNFbnJvbGxtZW50U2VydmljZSwge30pLmZvcih0aGlzLmlkZW50aXR5RnJvbUVucm9sbG1lbnQpO1xuICAgICAgICBsb2cuZGVidWcoYEdlbmVyYXRpbmcgSWRlbnRpdHkgZnJvbSBjZXJ0aWZpY2F0ZSAke2NlcnRpZmljYXRlfSBpbiBtc3AgJHttc3BJZH1gKTtcbiAgICAgICAgY29uc3QgY2xpZW50SWQgPSBDcnlwdG9VdGlscy5mYWJyaWNJZEZyb21DZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZSk7XG4gICAgICAgIGNvbnN0IGlkID0gQ3J5cHRvVXRpbHMuZW5jb2RlKGNsaWVudElkKTtcbiAgICAgICAgbG9nLmRlYnVnKGBJZGVudGl0eSAke2NsaWVudElkfSBhbmQgZW5jb2RlZElkICR7aWR9YCk7XG4gICAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgICAgIHJldHVybiBuZXcgSWRlbnRpdHkoe1xuICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgY3JlZGVudGlhbHM6IHtcbiAgICAgICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICAgICAgY2VydGlmaWNhdGU6IGNlcnRpZmljYXRlLFxuICAgICAgICAgICAgICAgIHByaXZhdGVLZXk6IGtleS50b0J5dGVzKCksXG4gICAgICAgICAgICAgICAgcm9vdENlcnRpZmljYXRlOiByb290Q2VydGlmaWNhdGUsXG4gICAgICAgICAgICAgICAgY3JlYXRlZE9uOiBub3csXG4gICAgICAgICAgICAgICAgdXBkYXRlZE9uOiBub3csXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbXNwSWQ6IG1zcElkLFxuICAgICAgICAgICAgY3JlYXRlZE9uOiBub3csXG4gICAgICAgICAgICB1cGRhdGVkT246IG5vdyxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFbnJvbGwgYW4gaWRlbnRpdHkgd2l0aCB0aGUgQ0EgdXNpbmcgYSByZWdpc3RyYXRpb24gc2VjcmV0LlxuICAgICAqIEBzdW1tYXJ5IEV4Y2hhbmdlcyB0aGUgZW5yb2xsbWVudCBJRCBhbmQgc2VjcmV0IGZvciBjZXJ0aWZpY2F0ZXMsIHJldHVybmluZyBhIGNvbnN0cnVjdGVkIElkZW50aXR5IG1vZGVsLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBlbnJvbGxtZW50SWQgLSBFbnJvbGxtZW50IElEIHRvIGVucm9sbC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uIC0gRW5yb2xsbWVudCBzZWNyZXQgcmV0dXJuZWQgYXQgcmVnaXN0cmF0aW9uIHRpbWUuXG4gICAgICogQHJldHVybiB7UHJvbWlzZTxJZGVudGl0eT59IFRoZSBlbnJvbGxlZCBpZGVudGl0eSBvYmplY3Qgd2l0aCBjcmVkZW50aWFscy5cbiAgICAgKi9cbiAgICBhc3luYyBlbnJvbGwoZW5yb2xsbWVudElkLCByZWdpc3RyYXRpb24pIHtcbiAgICAgICAgbGV0IGlkZW50aXR5O1xuICAgICAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5lbnJvbGwpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgY2EgPSBhd2FpdCB0aGlzLkNBKCk7XG4gICAgICAgICAgICBsb2cuZGVidWcoYEVucm9sbGluZyAke2Vucm9sbG1lbnRJZH1gKTtcbiAgICAgICAgICAgIGNvbnN0IGVucm9sbG1lbnQgPSBhd2FpdCBjYS5lbnJvbGwoe1xuICAgICAgICAgICAgICAgIGVucm9sbG1lbnRJRDogZW5yb2xsbWVudElkLFxuICAgICAgICAgICAgICAgIGVucm9sbG1lbnRTZWNyZXQ6IHJlZ2lzdHJhdGlvbixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWRlbnRpdHkgPSBGYWJyaWNFbnJvbGxtZW50U2VydmljZS5pZGVudGl0eUZyb21FbnJvbGxtZW50KGVucm9sbG1lbnQsIHRoaXMuY2FDb25maWcuY2FOYW1lKTtcbiAgICAgICAgICAgIGxvZy5pbmZvKGBTdWNjZXNzZnVsbHkgZW5yb2xsZWQgJHtlbnJvbGxtZW50SWR9IHVuZGVyICR7dGhpcy5jYUNvbmZpZy5jYU5hbWV9IGFzICR7aWRlbnRpdHkuaWR9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaWRlbnRpdHk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZWdpc3RlciBhbmQgZW5yb2xsIGEgbmV3IGlkZW50aXR5IGluIG9uZSBzdGVwLlxuICAgICAqIEBzdW1tYXJ5IFJlZ2lzdGVycyBhIG5ldyBlbnJvbGxtZW50IElEIHdpdGggdGhlIENBIGFuZCBpbW1lZGlhdGVseSBleGNoYW5nZXMgdGhlIHNlY3JldCB0byBlbnJvbGwsIHJldHVybmluZyB0aGUgY3JlYXRlZCBJZGVudGl0eS5cbiAgICAgKiBAcGFyYW0ge0NyZWRlbnRpYWxzfSBtb2RlbCAtIENyZWRlbnRpYWxzIGZvciB0aGUgbmV3IGlkZW50aXR5IGNvbnRhaW5pbmcgdXNlck5hbWUgYW5kIHBhc3N3b3JkLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzU3VwZXJVc2VyPWZhbHNlXSAtIFdoZXRoZXIgdG8gcmVnaXN0ZXIgdGhlIGlkZW50aXR5IGFzIGEgc3VwZXIgdXNlci5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2FmZmlsaWF0aW9uPVwiXCJdIC0gQWZmaWxpYXRpb24gc3RyaW5nIChlLmcuLCBvcmcxLmRlcGFydG1lbnQxKS5cbiAgICAgKiBAcGFyYW0ge0NBX1JPTEUgfCBzdHJpbmd9IFt1c2VyUm9sZV0gLSBSb2xlIHRvIGFzc2lnbiB0byB0aGUgaWRlbnRpdHkuXG4gICAgICogQHBhcmFtIHtJS2V5VmFsdWVBdHRyaWJ1dGV9IFthdHRyc10gLSBPcHRpb25hbCBhdHRyaWJ1dGVzIHRvIGF0dGFjaCB0byB0aGUgaWRlbnRpdHkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFttYXhFbnJvbGxtZW50c10gLSBNYXhpbXVtIG51bWJlciBvZiBlbnJvbGxtZW50cyBhbGxvd2VkIGZvciB0aGUgaWRlbnRpdHkuXG4gICAgICogQHJldHVybiB7UHJvbWlzZTxJZGVudGl0eT59IFRoZSBlbnJvbGxlZCBpZGVudGl0eS5cbiAgICAgKi9cbiAgICBhc3luYyByZWdpc3RlckFuZEVucm9sbChtb2RlbCwgaXNTdXBlclVzZXIgPSBmYWxzZSwgYWZmaWxpYXRpb24gPSBcIlwiLCB1c2VyUm9sZSwgYXR0cnMsIG1heEVucm9sbG1lbnRzKSB7XG4gICAgICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IHRoaXMucmVnaXN0ZXIobW9kZWwsIGlzU3VwZXJVc2VyLCBhZmZpbGlhdGlvbiwgdXNlclJvbGUsIGF0dHJzLCBtYXhFbnJvbGxtZW50cyk7XG4gICAgICAgIGNvbnN0IHsgdXNlck5hbWUgfSA9IG1vZGVsO1xuICAgICAgICByZXR1cm4gdGhpcy5lbnJvbGwodXNlck5hbWUsIHJlZ2lzdHJhdGlvbik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldm9rZXMgdGhlIGVucm9sbG1lbnQgb2YgYW4gaWRlbnRpdHkgd2l0aCB0aGUgc3BlY2lmaWVkIGVucm9sbG1lbnQgSUQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZW5yb2xsbWVudElkIC0gVGhlIGVucm9sbG1lbnQgSUQgb2YgdGhlIGlkZW50aXR5IHRvIGJlIHJldm9rZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgcmVzdWx0IG9mIHRoZSByZXZvY2F0aW9uIG9wZXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEB0aHJvd3Mge05vdEZvdW5kRXJyb3J9IElmIHRoZSBlbnJvbGxtZW50IHdpdGggdGhlIHNwZWNpZmllZCBJRCBkb2VzIG5vdCBleGlzdC5cbiAgICAgKiBAdGhyb3dzIHtJbnRlcm5hbEVycm9yfSBJZiB0aGVyZSBpcyBhbiBlcnJvciBkdXJpbmcgdGhlIHJldm9jYXRpb24gcHJvY2Vzcy5cbiAgICAgKi9cbiAgICBhc3luYyByZXZva2UoZW5yb2xsbWVudElkKSB7XG4gICAgICAgIGNvbnN0IGNhID0gYXdhaXQgdGhpcy5DQSgpO1xuICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5Vc2VyKCk7XG4gICAgICAgIGNvbnN0IGlkZW50aXR5ID0gYXdhaXQgdGhpcy5yZWFkKGVucm9sbG1lbnRJZCk7XG4gICAgICAgIGlmICghaWRlbnRpdHkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgQ291bGQgbm90IGZpbmQgZW5yb2xsbWVudCB3aXRoIGlkICR7ZW5yb2xsbWVudElkfWApO1xuICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzdWx0ID0gYXdhaXQgY2EucmV2b2tlKHsgZW5yb2xsbWVudElEOiBpZGVudGl0eS5pZCwgcmVhc29uOiBcIlVzZXIgRGVsZXRhdGlvblwiIH0sIHVzZXIpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgQ291bGQgbm90IHJldm9rZSBlbnJvbGxtZW50IHdpdGggaWQgJHtlbnJvbGxtZW50SWR9OiAke2V9YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyZXN1bHQuc3VjY2VzcylcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBDb3VsZCBub3QgcmV2b2tlIGVucm9sbG1lbnQgd2l0aCBpZCAke2Vucm9sbG1lbnRJZH06ICR7cmVzdWx0LmVycm9ycy5qb2luKFwiXFxuXCIpfWApO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVJtRmljbWxqUlc1eWIyeHNiV1Z1ZEZObGNuWnBZMlV1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk4dUxpOHVMaTl6Y21NdlkyeHBaVzUwTDNObGNuWnBZMlZ6TDBaaFluSnBZMFZ1Y205c2JHMWxiblJUWlhKMmFXTmxMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxFOUJRVThzWjBKQlFXZENMRTFCUVUwc2EwSkJRV3RDTEVOQlFVTTdRVUZYYUVRc1QwRkJUeXhGUVVGRkxGRkJRVkVzUlVGQlJTeDVRMEZCYjBNN1FVRkRka1FzVDBGQlR5eEZRVUZGTEd0Q1FVRnJRaXhGUVVGRkxFMUJRVTBzWjBKQlFXZENMRU5CUVVNN1FVRkRjRVFzVDBGQlR5eEZRVU5NTEdGQlFXRXNSVUZEWWl4aFFVRmhMRVZCUTJJc1lVRkJZU3hIUVVOa0xFMUJRVTBzZVVKQlFYbENMRU5CUVVNN1FVRkRha01zVDBGQlR5eEZRVUZGTEZOQlFWTXNSVUZCUlN4elFrRkJhVUk3UVVGRmNrTXNUMEZCVHl4RlFVRkZMRmRCUVZjc1JVRkJSU3gxUWtGQmEwSTdRVUZQZUVNc1QwRkJUeXhGUVVGRkxHbENRVUZwUWl4RlFVRkZMR2xEUVVFMFFqdEJRVU40UkN4UFFVRlBMRVZCUVVVc1YwRkJWeXhGUVVGRkxFOUJRVThzUlVGQlJTeE5RVUZOTEcxQ1FVRnRRaXhEUVVGRE8wRkJSWHBFT3pzN096czdSMEZOUnp0QlFVTklMRTFCUVUwc1EwRkJUaXhKUVVGWkxHZENRVTFZTzBGQlRrUXNWMEZCV1N4blFrRkJaMEk3U1VGRE1VSXNhVU5CUVdFc1EwRkJRVHRKUVVOaUxIVkRRVUZ0UWl4RFFVRkJPMGxCUTI1Q0xIRkRRVUZwUWl4RFFVRkJPMGxCUTJwQ0xHbERRVUZoTEVOQlFVRTdTVUZEWWl4dFEwRkJaU3hEUVVGQk8wRkJRMnBDTEVOQlFVTXNSVUZPVnl4blFrRkJaMElzUzBGQmFFSXNaMEpCUVdkQ0xGRkJUVE5DTzBGQmFVSkVPenM3T3pzN1IwRk5SenRCUVVOSUxFMUJRVTBzUTBGQlRpeEpRVUZaTEhOQ1FWRllPMEZCVWtRc1YwRkJXU3h6UWtGQmMwSTdTVUZEYUVNc2FVVkJRWFZETEVOQlFVRTdTVUZEZGtNc2FVWkJRWFZFTEVOQlFVRTdTVUZEZGtRc01rVkJRV2xFTEVOQlFVRTdTVUZEYWtRc1owVkJRWE5ETEVOQlFVRTdTVUZEZEVNc2EwUkJRWGRDTEVOQlFVRTdTVUZEZUVJc1owVkJRWE5ETEVOQlFVRTdTVUZEZEVNc1owUkJRWE5DTEVOQlFVRTdRVUZEZUVJc1EwRkJReXhGUVZKWExITkNRVUZ6UWl4TFFVRjBRaXh6UWtGQmMwSXNVVUZSYWtNN1FVRkZSRHM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3TzBkQk9FSkhPMEZCUTBnc1RVRkJUU3hQUVVGUExIVkNRVUYzUWl4VFFVRlJMRmRCUVZjN1NVRmhkRVFzV1VGQmIwSXNVVUZCYTBJN1VVRkRjRU1zVTBGQlV5eERRVUZETEdOQlFXTXNRMEZEZEVJc1VVRkJVU3hEUVVGRExFZEJRVWM3V1VGRFZpeERRVUZETEVOQlFVTTdaMEpCUTBVc1VVRkJVU3hGUVVGRkxFdEJRVXM3WjBKQlEyWXNSMEZCUnl4RlFVRkZMRkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zVDBGQlR6dG5Ra0ZEZWtJc1NVRkJTU3hGUVVGRkxGRkJRVkVzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1R0blFrRkRka0lzUzBGQlN5eEZRVUZGTEZGQlFWRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1ZVRkJWVHRuUWtGRE9VSXNSMEZCUnl4RlFVRkZMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXp0aFFVTTVRanRaUVVOSUxFTkJRVU1zUTBGQlF5eFRRVUZUTEVOQlEyUXNRMEZCUXp0UlFVTkdMRXRCUVVzc1JVRkJSU3hEUVVGRE8xRkJXbFVzWVVGQlVTeEhRVUZTTEZGQlFWRXNRMEZCVlR0SlFXRjBReXhEUVVGRE8wbEJSVk1zUzBGQlN5eERRVUZETEVsQlFVazdVVUZEYkVJc1NVRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNUdFpRVUZGTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJRenRSUVVOb1F5eE5RVUZOTEVWQlFVVXNUVUZCVFN4RlFVRkZMRTFCUVUwc1JVRkJSU3hMUVVGTExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU03VVVGRE1VUXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRM0JETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc2QwSkJRWGRDTEUxQlFVMHNUMEZCVHl4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJRM1JFTEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc2EwTkJRV3RETEUxQlFVMHNSVUZCUlN4RFFVRkRMRU5CUVVNN1VVRkRkRVFzVFVGQlRTeFhRVUZYTEVkQlFVY3NUVUZCVFN4VFFVRlRMRU5CUVVNc01FSkJRVEJDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1VVRkRka1VzU1VGQlNTeEhRVUYxUWl4RFFVRkRPMUZCUXpWQ0xFbEJRVWtzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXp0WlFVTlVMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6dG5Ra0ZEV0N4TlFVRk5MRWxCUVVrc1lVRkJZU3hEUVVOeVFpeHpRMEZCYzBNc1RVRkJUU3h4UkVGQmNVUXNRMEZEYkVjc1EwRkJRenRaUVVOS0xFTkJRVU03V1VGRFJDeEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMREJDUVVFd1FpeExRVUZMTEVWQlFVVXNRMEZCUXl4RFFVRkRPMWxCUXpkRExFZEJRVWNzUjBGQlJ5eE5RVUZOTEZOQlFWTXNRMEZCUXl3d1FrRkJNRUlzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0UlFVTXhSQ3hEUVVGRE8yRkJRVTBzUTBGQlF6dFpRVU5PTEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUTFBc2EwTkJRV3RETEUxQlFVMHNhVUpCUVdsQ0xFZEJRVWNzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZEZGtVc1EwRkJRenRSUVVOS0xFTkJRVU03VVVGRFJDeEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRFpDUVVFMlFpeE5RVUZOTEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTJwRUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NUVUZCVFN4VFFVRlRMRU5CUVVNc1UwRkJVeXhEUVVGRExFOUJRVThzUlVGQlJTeEhRVUZITEVWQlFVVXNWMEZCVnl4RlFVRkZMRTFCUVUwc1JVRkJSVHRaUVVOMlJTeEhRVUZITzFOQlEwb3NRMEZCUXl4RFFVRkRPMUZCUTBnc1QwRkJUeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETzBsQlEyNUNMRU5CUVVNN1NVRkZVeXhMUVVGTExFTkJRVU1zUlVGQlJUdFJRVU5vUWl4SlFVRkpMRWxCUVVrc1EwRkJReXhGUVVGRk8xbEJRVVVzVDBGQlR5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRPMUZCUXpWQ0xFMUJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0UlFVTnNReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4TlFVRk5MRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETzFGQlJUTkRMR2RHUVVGblJqdFJRVU5vUml4M1EwRkJkME03VVVGRGVFTXNTVUZCU1N4RlFVRkZMRmxCUVZrc1JVRkJSU3hOUVVGTkxFVkJRVVVzUjBGQlJ5eEhRVUZwUWl4RFFVRkRPMUZCUldwRUxFMUJRVTBzU1VGQlNTeEhRVUZKTEZsQlFYbENMRU5CUVVNc1EwRkJReXhEUVVGWExFTkJRVU03VVVGRGNrUXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhyUTBGQmEwTXNTVUZCU1N4VlFVRlZMRTlCUVU4c1EwRkJReXhIUVVGSExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdVVUZGTTBVc1RVRkJUU3hYUVVGWExFZEJRVWNzVFVGQlRTeFRRVUZUTEVOQlFVTXNZMEZCWXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRM3BFTEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc05rSkJRVFpDTEUxQlFVMHNWVUZCVlN4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJRemxFTEVsQlFVa3NRMEZCUXl4RlFVRkZMRWRCUVVjc1NVRkJTU3huUWtGQlowSXNRMEZETlVJc1IwRkJSeXhGUVVOSU8xbEJRMFVzV1VGQldTeEZRVUZGTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRE8xbEJRM1JETEUxQlFVMDdVMEZEVHl4RlFVTm1MRTFCUVUwc1EwRkRVQ3hEUVVGRE8xRkJRMFlzVDBGQlR5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUTJwQ0xFTkJRVU03U1VGRlV5eExRVUZMTEVOQlFVTXNUVUZCVFR0UlFVTndRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTzFsQlFVVXNUMEZCVHl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRE8xRkJRM0JETEUxQlFVMHNSVUZCUlN4SFFVRkhMRTFCUVUwc1NVRkJTU3hEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETzFGQlF6TkNMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWtzUlVGQlZTeERRVUZETEcxQ1FVRnRRaXhEUVVGRExFTkJRVU03VVVGREwwTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRE8wbEJRM0pDTEVOQlFVTTdTVUZGVXl4TFFVRkxMRU5CUVVNc1YwRkJWenRSUVVONlFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMR3RDUVVGclFqdFpRVU14UWl4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVkQlFVY3NRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eERRVUZETEhGQ1FVRnhRaXhGUVVGRkxFTkJRVU03VVVGRE1VVXNUMEZCVHl4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTTdTVUZEYWtNc1EwRkJRenRKUVVWVExFdEJRVXNzUTBGQlF5eFpRVUZaTzFGQlF6RkNMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zYTBKQlFXdENPMWxCUXpGQ0xFbEJRVWtzUTBGQlF5eHJRa0ZCYTBJc1IwRkJSeXhEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc2NVSkJRWEZDTEVWQlFVVXNRMEZCUXp0UlFVTjBSU3hQUVVGUExFbEJRVWtzUTBGQlF5eHJRa0ZCYTBJc1EwRkJRenRKUVVOcVF5eERRVUZETzBsQlJWTXNTMEZCU3l4RFFVRkRMRlZCUVZVN1VVRkRlRUlzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4bFFVRmxPMWxCUTNaQ0xFbEJRVWtzUTBGQlF5eGxRVUZsTEVkQlFVY3NRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEd0Q1FVRnJRaXhGUVVGRkxFTkJRVU03VVVGRGFFVXNUMEZCVHl4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRE8wbEJRemxDTEVOQlFVTTdTVUZGUkRzN096czdPMDlCVFVjN1NVRkRTQ3hMUVVGTExFTkJRVU1zWlVGQlpTeERRVU51UWl4UFFVRm5ReXhGUVVOb1F5eExRVUZMTEVkQlFVY3NTVUZCU1R0UlFVVmFMRTFCUVUwc2EwSkJRV3RDTEVkQlFVY3NUVUZCVFN4SlFVRkpMRU5CUVVNc1YwRkJWeXhGUVVGRkxFTkJRVU03VVVGRGNFUXNUVUZCVFN4SlFVRkpMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTTdVVUZETDBJc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eERRVUZETzFGQlF5OURMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRMUFzTUVKQlFUQkNMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeFBRVUZQTEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzVjBGQlZ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVNdlJpeERRVUZETzFGQlEwWXNUVUZCVFN4UlFVRlJMRWRCUVhkQ0xFTkJRM0JETEUxQlFVMHNhMEpCUVd0Q0xFTkJRVU1zWlVGQlpTeERRVUZETEU5QlFVOHNTVUZCU1N4RlFVRkZMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRemxFTEVOQlFVTXNUVUZCVFN4RFFVRkRPMUZCUTFRc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGRFVDeFRRVUZUTEZGQlFWRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hyUWtGQmEwSXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhSUVVGUkxFTkJRVU1zUlVGQlJTeERRVU16UlN4RFFVRkRPMUZCUTBZc1QwRkJUeXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNRMEZCUXp0SlFVTTNSQ3hEUVVGRE8wbEJSVVE3T3pzN1QwRkpSenRKUVVOSUxFdEJRVXNzUTBGQlF5eGhRVUZoTzFGQlEycENMRTFCUVUwc2FVSkJRV2xDTEVkQlFVY3NUVUZCVFN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU03VVVGRGJFUXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRE8xRkJRemRETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc2EwTkJRV3RETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUTBGQlF6dFJRVU53UlN4TlFVRk5MRkZCUVZFc1IwRkJjVUlzUTBGRGFrTXNUVUZCVFN4cFFrRkJhVUlzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGRGJFUXNRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkRWQ3hIUVVGSExFTkJRVU1zUzBGQlN5eERRVU5RTEZOQlFWTXNVVUZCVVN4RFFVRkRMRlZCUVZVc1EwRkJReXhOUVVGTkxHZENRVUZuUWl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExGRkJRVkVzUTBGQlF5eEZRVUZGTEVOQlF6bEZMRU5CUVVNN1VVRkRSaXhQUVVGUExGRkJRVkVzUTBGQlF5eFZRVUZWTEVOQlFVTTdTVUZETjBJc1EwRkJRenRKUVVWVExGVkJRVlVzUTBGQlF5eERRVUZSTzFGQlF6TkNMRTFCUVUwc1RVRkJUU3hIUVVGSExESkRRVUV5UXl4RFFVRkRPMUZCUXpORUxFMUJRVTBzUzBGQlN5eEhRVUZITEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFGQlEzSkRMRWxCUVVrc1EwRkJReXhMUVVGTE8xbEJRVVVzVDBGQlR5eEpRVUZKTEdsQ1FVRnBRaXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6VkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFbEJRVWtzUlVGQlJTeFBRVUZQTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNN1VVRkRhRU1zVVVGQlVTeEpRVUZKTEVWQlFVVXNRMEZCUXp0WlFVTmlMRXRCUVVzc1NVRkJTU3hEUVVGRE8xbEJRMVlzUzBGQlN5eEpRVUZKTzJkQ1FVTlFMRTlCUVU4c1NVRkJTU3hoUVVGaExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdXVUZEY0VNc1MwRkJTeXhKUVVGSk8yZENRVU5RTEU5QlFVOHNTVUZCU1N4clFrRkJhMElzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0WlFVTjZRenRuUWtGRFJTeFBRVUZQTEVsQlFVa3NhVUpCUVdsQ0xFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdVVUZETVVNc1EwRkJRenRKUVVOSUxFTkJRVU03U1VGRlJEczdPenRQUVVsSE8wbEJRMGdzUzBGQlN5eERRVUZETEdWQlFXVTdVVUZEYmtJc1RVRkJUU3hyUWtGQmEwSXNSMEZCUnl4TlFVRk5MRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVVzUTBGQlF6dFJRVU55UkN4TlFVRk5MRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU03VVVGREwwTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXh2UTBGQmIwTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eERRVUZETzFGQlEzUkZMRTFCUVUwc1VVRkJVU3hIUVVGSExFTkJRVU1zVFVGQlRTeHJRa0ZCYTBJc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJRenRoUVVOc1JTeE5RVUZOTEVOQlFVTTdVVUZEVml4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVOUUxGTkJRVk1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MR3RDUVVGclFpeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRkZCUVZFc1EwRkJReXhGUVVGRkxFTkJRM1pGTEVOQlFVTTdVVUZEUml4UFFVRlBMRkZCUVZFc1EwRkJRenRKUVVOc1FpeERRVUZETzBsQlJVUTdPenM3TzA5QlMwYzdTVUZEU0N4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVzlDTzFGQlF6ZENMRTFCUVUwc1JVRkJSU3hIUVVGSExFMUJRVTBzU1VGQlNTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUXpOQ0xFMUJRVTBzU1VGQlNTeEhRVUZITEUxQlFVMHNTVUZCU1N4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRE8xRkJReTlDTEVsQlFVa3NUVUZCZDBJc1EwRkJRenRSUVVNM1FpeEpRVUZKTEVOQlFVTTdXVUZEU0N4TlFVRk5MRWRCUVVjc1RVRkJUU3hGUVVGRkxFTkJRVU1zYTBKQlFXdENMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zV1VGQldTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUTNCRkxFTkJRVU03VVVGQlF5eFBRVUZQTEVOQlFVMHNSVUZCUlN4RFFVRkRPMWxCUTJoQ0xFMUJRVTBzU1VGQlNTeGhRVUZoTEVOQlEzSkNMRzlEUVVGdlF5eFpRVUZaTEV0QlFVc3NRMEZCUXl4RlFVRkZMRU5CUTNwRUxFTkJRVU03VVVGRFNpeERRVUZETzFGQlJVUXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUE8xbEJRMnBDTEUxQlFVMHNTVUZCU1N4aFFVRmhMRU5CUTNKQ0xHOURRVUZ2UXl4WlFVRlpMRXRCUVVzc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkRhRVlzUTBGQlF6dFJRVVZLTEU5QlFVOHNUVUZCVFN4RFFVRkRMRTFCUVhkQ0xFTkJRVU03U1VGRGVrTXNRMEZCUXp0SlFVVkVPenM3T3pzN096czdPMDlCVlVjN1NVRkRTQ3hMUVVGTExFTkJRVU1zVVVGQlVTeERRVU5hTEV0QlFXdENMRVZCUTJ4Q0xHTkJRWFZDTEV0QlFVc3NSVUZETlVJc1kwRkJjMElzUlVGQlJTeEZRVU40UWl4UlFVRXlRaXhGUVVNelFpeExRVUV3UWl4RlFVTXhRaXhqUVVGMVFqdFJRVVYyUWl4SlFVRkpMRmxCUVc5Q0xFTkJRVU03VVVGRGVrSXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8xRkJRM2hETEVsQlFVa3NRMEZCUXp0WlFVTklMRTFCUVUwc1JVRkJSU3hSUVVGUkxFVkJRVVVzVVVGQlVTeEZRVUZGTEVkQlFVY3NTMEZCU3l4RFFVRkRPMWxCUTNKRExFMUJRVTBzUlVGQlJTeEhRVUZITEUxQlFVMHNTVUZCU1N4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRE8xbEJRek5DTEUxQlFVMHNTVUZCU1N4SFFVRkhMRTFCUVUwc1NVRkJTU3hEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETzFsQlF5OUNMRTFCUVUwc1MwRkJTeXhIUVVGSE8yZENRVU5hTEZsQlFWa3NSVUZCUlN4UlFVRnJRanRuUWtGRGFFTXNaMEpCUVdkQ0xFVkJRVVVzVVVGQlVUdG5Ra0ZETVVJc1YwRkJWeXhGUVVGRkxGZEJRVmM3WjBKQlEzaENMRkZCUVZFc1JVRkJSU3hSUVVGUk8yZENRVU5zUWl4TFFVRkxMRVZCUVVVc1MwRkJTenRuUWtGRFdpeGpRVUZqTEVWQlFVVXNZMEZCWXp0aFFVTllMRU5CUVVNN1dVRkRkRUlzV1VGQldTeEhRVUZITEUxQlFVMHNSVUZCUlN4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdXVUZET1VNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGRFRpeHZRa0ZCYjBJc1VVRkJVU3d5UWtGQk1rSXNVVUZCVVN4SlFVRkpMR2RDUVVGblFpeEpRVUZKTEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZETlVnc1EwRkJRenRSUVVOS0xFTkJRVU03VVVGQlF5eFBRVUZQTEVOQlFVMHNSVUZCUlN4RFFVRkRPMWxCUTJoQ0xFMUJRVTBzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNelFpeERRVUZETzFGQlEwUXNUMEZCVHl4WlFVRlpMRU5CUVVNN1NVRkRkRUlzUTBGQlF6dEpRVVZUTEUxQlFVMHNRMEZCUXl4elFrRkJjMElzUTBGRGNrTXNWVUZCTWtJc1JVRkRNMElzUzBGQllUdFJRVVZpTEUxQlFVMHNSVUZCUlN4WFFVRlhMRVZCUVVVc1IwRkJSeXhGUVVGRkxHVkJRV1VzUlVGQlJTeEhRVUZITEZWQlFWVXNRMEZCUXp0UlFVTjZSQ3hOUVVGTkxFZEJRVWNzUjBGQlJ5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMSFZDUVVGMVFpeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkRkRVFzU1VGQlNTeERRVUZETEhOQ1FVRnpRaXhEUVVNMVFpeERRVUZETzFGQlEwWXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkRVQ3gzUTBGQmQwTXNWMEZCVnl4WFFVRlhMRXRCUVVzc1JVRkJSU3hEUVVOMFJTeERRVUZETzFGQlEwWXNUVUZCVFN4UlFVRlJMRWRCUVVjc1YwRkJWeXhEUVVGRExIVkNRVUYxUWl4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRE8xRkJRMnhGTEUxQlFVMHNSVUZCUlN4SFFVRkhMRmRCUVZjc1EwRkJReXhOUVVGTkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdVVUZEZUVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eFpRVUZaTEZGQlFWRXNhMEpCUVd0Q0xFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdVVUZEZEVRc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXp0UlFVTjJRaXhQUVVGUExFbEJRVWtzVVVGQlVTeERRVUZETzFsQlEyeENMRVZCUVVVc1JVRkJSU3hGUVVGRk8xbEJRMDRzVjBGQlZ5eEZRVUZGTzJkQ1FVTllMRVZCUVVVc1JVRkJSU3hGUVVGRk8yZENRVU5PTEZkQlFWY3NSVUZCUlN4WFFVRlhPMmRDUVVONFFpeFZRVUZWTEVWQlFVVXNSMEZCUnl4RFFVRkRMRTlCUVU4c1JVRkJSVHRuUWtGRGVrSXNaVUZCWlN4RlFVRkZMR1ZCUVdVN1owSkJRMmhETEZOQlFWTXNSVUZCUlN4SFFVRkhPMmRDUVVOa0xGTkJRVk1zUlVGQlJTeEhRVUZITzJGQlEyWTdXVUZEUkN4TFFVRkxMRVZCUVVVc1MwRkJTenRaUVVOYUxGTkJRVk1zUlVGQlJTeEhRVUZITzFsQlEyUXNVMEZCVXl4RlFVRkZMRWRCUVVjN1UwRkRaaXhEUVVGRExFTkJRVU03U1VGRFRDeERRVUZETzBsQlJVUTdPenM3T3p0UFFVMUhPMGxCUTBnc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eFpRVUZ2UWl4RlFVRkZMRmxCUVc5Q08xRkJRM0pFTEVsQlFVa3NVVUZCYTBJc1EwRkJRenRSUVVOMlFpeE5RVUZOTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1VVRkRkRU1zU1VGQlNTeERRVUZETzFsQlEwZ3NUVUZCVFN4RlFVRkZMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTTdXVUZETTBJc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eGhRVUZoTEZsQlFWa3NSVUZCUlN4RFFVRkRMRU5CUVVNN1dVRkRka01zVFVGQlRTeFZRVUZWTEVkQlFXOUNMRTFCUVUwc1JVRkJSU3hEUVVGRExFMUJRVTBzUTBGQlF6dG5Ra0ZEYkVRc1dVRkJXU3hGUVVGRkxGbEJRVms3WjBKQlF6RkNMR2RDUVVGblFpeEZRVUZGTEZsQlFWazdZVUZETDBJc1EwRkJReXhEUVVGRE8xbEJRMGdzVVVGQlVTeEhRVUZITEhWQ1FVRjFRaXhEUVVGRExITkNRVUZ6UWl4RFFVTjJSQ3hWUVVGVkxFVkJRMVlzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4TlFVRk5MRU5CUTNKQ0xFTkJRVU03V1VGRFJpeEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVTk9MSGxDUVVGNVFpeFpRVUZaTEZWQlFWVXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhOUVVGTkxFOUJRVThzVVVGQlVTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVTjRSaXhEUVVGRE8xRkJRMG9zUTBGQlF6dFJRVUZETEU5QlFVOHNRMEZCVFN4RlFVRkZMRU5CUVVNN1dVRkRhRUlzVFVGQlRTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRek5DTEVOQlFVTTdVVUZEUkN4UFFVRlBMRkZCUVZFc1EwRkJRenRKUVVOc1FpeERRVUZETzBsQlJVUTdPenM3T3pzN096czdUMEZWUnp0SlFVTklMRXRCUVVzc1EwRkJReXhwUWtGQmFVSXNRMEZEY2tJc1MwRkJhMElzUlVGRGJFSXNZMEZCZFVJc1MwRkJTeXhGUVVNMVFpeGpRVUZ6UWl4RlFVRkZMRVZCUTNoQ0xGRkJRVEpDTEVWQlF6TkNMRXRCUVRCQ0xFVkJRekZDTEdOQlFYVkNPMUZCUlhaQ0xFMUJRVTBzV1VGQldTeEhRVUZITEUxQlFVMHNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkRkRU1zUzBGQlN5eEZRVU5NTEZkQlFWY3NSVUZEV0N4WFFVRlhMRVZCUTFnc1VVRkJVU3hGUVVOU0xFdEJRVXNzUlVGRFRDeGpRVUZqTEVOQlEyWXNRMEZCUXp0UlFVTkdMRTFCUVUwc1JVRkJSU3hSUVVGUkxFVkJRVVVzUjBGQlJ5eExRVUZMTEVOQlFVTTdVVUZETTBJc1QwRkJUeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEZGQlFXdENMRVZCUVVVc1dVRkJXU3hEUVVGRExFTkJRVU03U1VGRGRrUXNRMEZCUXp0SlFVVkVPenM3T3pzN096czdUMEZUUnp0SlFVTklMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU1zV1VGQmIwSTdVVUZETDBJc1RVRkJUU3hGUVVGRkxFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNN1VVRkRNMElzVFVGQlRTeEpRVUZKTEVkQlFVY3NUVUZCVFN4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU03VVVGREwwSXNUVUZCVFN4UlFVRlJMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRPMUZCUXk5RExFbEJRVWtzUTBGQlF5eFJRVUZSTzFsQlExZ3NUVUZCVFN4SlFVRkpMR0ZCUVdFc1EwRkRja0lzY1VOQlFYRkRMRmxCUVZrc1JVRkJSU3hEUVVOd1JDeERRVUZETzFGQlEwb3NTVUZCU1N4TlFVRjNRaXhEUVVGRE8xRkJRemRDTEVsQlFVa3NRMEZCUXp0WlFVTklMRTFCUVUwc1IwRkJSeXhOUVVGTkxFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlEzUkNMRVZCUVVVc1dVRkJXU3hGUVVGRkxGRkJRVkVzUTBGQlF5eEZRVUZGTEVWQlFVVXNUVUZCVFN4RlFVRkZMR2xDUVVGcFFpeEZRVUZGTEVWQlEzaEVMRWxCUVVrc1EwRkRUQ3hEUVVGRE8xRkJRMG9zUTBGQlF6dFJRVUZETEU5QlFVOHNRMEZCVlN4RlFVRkZMRU5CUVVNN1dVRkRjRUlzVFVGQlRTeEpRVUZKTEdGQlFXRXNRMEZEY2tJc2RVTkJRWFZETEZsQlFWa3NTMEZCU3l4RFFVRkRMRVZCUVVVc1EwRkROVVFzUTBGQlF6dFJRVU5LTEVOQlFVTTdVVUZEUkN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFOUJRVTg3V1VGRGFrSXNUVUZCVFN4SlFVRkpMR0ZCUVdFc1EwRkRja0lzZFVOQlFYVkRMRmxCUVZrc1MwRkJTeXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVOdVJpeERRVUZETzFGQlEwb3NUMEZCVHl4TlFVRk5MRU5CUVVNN1NVRkRhRUlzUTBGQlF6dERRVU5HSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUVaaFluSnBZME5CVTJWeWRtbGpaWE1nWm5KdmJTQmNJbVpoWW5KcFl5MWpZUzFqYkdsbGJuUmNJanRjYm1sdGNHOXlkQ0I3WEc0Z0lFRm1abWxzYVdGMGFXOXVVMlZ5ZG1salpTeGNiaUFnU1dSbGJuUnBkSGxUWlhKMmFXTmxMRnh1SUNCSlJXNXliMnhzVW1WemNHOXVjMlVzWEc0Z0lFbFNaV2RwYzNSbGNsSmxjWFZsYzNRc1hHNGdJRWxUWlhKMmFXTmxVbVZ6Y0c5dWMyVXNYRzRnSUZSTVUwOXdkR2x2Ym5Nc1hHNTlJR1p5YjIwZ1hDSm1ZV0p5YVdNdFkyRXRZMnhwWlc1MFhDSTdYRzVwYlhCdmNuUWdleUJWYzJWeUlIMGdabkp2YlNCY0ltWmhZbkpwWXkxamIyMXRiMjVjSWp0Y2JtbHRjRzl5ZENCN0lFTkJRMjl1Wm1sbkxDQkRjbVZrWlc1MGFXRnNjeUI5SUdaeWIyMGdYQ0l1TGk4dUxpOXphR0Z5WldRdmRIbHdaWE5jSWp0Y2JtbHRjRzl5ZENCN0lFbGtaVzUwYVhSNUlIMGdabkp2YlNCY0lpNHVMeTR1TDNOb1lYSmxaQzl0YjJSbGJDOUpaR1Z1ZEdsMGVWd2lPMXh1YVcxd2IzSjBJSHNnUVhWMGFHOXlhWHBoZEdsdmJrVnljbTl5SUgwZ1puSnZiU0JjSWtCa1pXTmhaaTEwY3k5amIzSmxYQ0k3WEc1cGJYQnZjblFnZTF4dUlDQkRiMjVtYkdsamRFVnljbTl5TEZ4dUlDQkpiblJsY201aGJFVnljbTl5TEZ4dUlDQk9iM1JHYjNWdVpFVnljbTl5TEZ4dWZTQm1jbTl0SUZ3aVFHUmxZMkZtTFhSekwyUmlMV1JsWTI5eVlYUnZjbk5jSWp0Y2JtbHRjRzl5ZENCN0lFTnZjbVZWZEdsc2N5QjlJR1p5YjIwZ1hDSXVMaTkxZEdsc2Mxd2lPMXh1YVcxd2IzSjBJSHNnUTBGZlVrOU1SU0I5SUdaeWIyMGdYQ0l1TDJOdmJuTjBZVzUwYzF3aU8xeHVhVzF3YjNKMElIc2dRM0o1Y0hSdlZYUnBiSE1nZlNCbWNtOXRJRndpTGk0dlkzSjVjSFJ2WENJN1hHNXBiWEJ2Y25RZ2UxeHVJQ0JEWlhKMGFXWnBZMkYwWlZKbGMzQnZibk5sTEZ4dUlDQkdZV0p5YVdOSlpHVnVkR2wwZVN4Y2JpQWdSMlYwUTJWeWRHbG1hV05oZEdWelVtVnhkV1Z6ZEN4Y2JpQWdTV1JsYm5ScGRIbFNaWE53YjI1elpTeGNibjBnWm5KdmJTQmNJaTR1THk0dUwzTm9ZWEpsWkM5bVlXSnlhV010ZEhsd1pYTmNJanRjYm1sdGNHOXlkQ0I3SUZKbFoybHpkSEpoZEdsdmJrVnljbTl5SUgwZ1puSnZiU0JjSWk0dUx5NHVMM05vWVhKbFpDOWxjbkp2Y25OY0lqdGNibWx0Y0c5eWRDQjdJRXh2WjJkbFpFTnNZWE56TENCTWIyZG5hVzVuSUgwZ1puSnZiU0JjSWtCa1pXTmhaaTEwY3k5c2IyZG5hVzVuWENJN1hHNWNiaThxS2x4dUlDb2dRR1JsYzJOeWFYQjBhVzl1SUVoNWNHVnliR1ZrWjJWeUlFWmhZbkpwWXlCRFFTQnBaR1Z1ZEdsMGVTQjBlWEJsY3k1Y2JpQXFJRUJ6ZFcxdFlYSjVJRVZ1ZFcxbGNtRjBaWE1nZEdobElITjFjSEJ2Y25SbFpDQnBaR1Z1ZEdsMGVTQjBlWEJsY3lCeVpXTnZaMjVwZW1Wa0lHSjVJRVpoWW5KcFl5QkRRU0JtYjNJZ2NtVm5hWE4wY21GMGFXOXVJR0Z1WkNCcFpHVnVkR2wwZVNCdFlXNWhaMlZ0Wlc1MExseHVJQ29nUUdWdWRXMGdlM04wY21sdVozMWNiaUFxSUVCeVpXRmtiMjVzZVZ4dUlDb2dRRzFsYldKbGNrOW1JRzF2WkhWc1pUcG1iM0l0Wm1GaWNtbGpMbU5zYVdWdWRGeHVJQ292WEc1bGVIQnZjblFnWlc1MWJTQklSa05CU1dSbGJuUnBkSGxVZVhCbElIdGNiaUFnVUVWRlVpQTlJRndpY0dWbGNsd2lMRnh1SUNCUFVrUkZVa1ZTSUQwZ1hDSnZjbVJsY21WeVhDSXNYRzRnSUVOTVNVVk9WQ0E5SUZ3aVkyeHBaVzUwWENJc1hHNGdJRlZUUlZJZ1BTQmNJblZ6WlhKY0lpeGNiaUFnUVVSTlNVNGdQU0JjSW1Ga2JXbHVYQ0lzWEc1OVhHNHZLaXBjYmlBcUlFQmtaWE5qY21sd2RHbHZiaUJMWlhrdmRtRnNkV1VnWVhSMGNtbGlkWFJsSUhWelpXUWdaSFZ5YVc1bklFTkJJSEpsWjJsemRISmhkR2x2Ymk1Y2JpQXFJRUJ6ZFcxdFlYSjVJRkpsY0hKbGMyVnVkSE1nWVc0Z1lYUjBjbWxpZFhSbElHVnVkSEo1SUhSb1lYUWdZMkZ1SUdKbElHRjBkR0ZqYUdWa0lIUnZJR0VnUm1GaWNtbGpJRU5CSUdsa1pXNTBhWFI1SUdSMWNtbHVaeUJ5WldkcGMzUnlZWFJwYjI0c0lHOXdkR2x2Ym1Gc2JIa2diV0Z5YTJsdVp5QnBkQ0JtYjNJZ2FXNWpiSFZ6YVc5dUlHbHVJR1ZqWlhKMExseHVJQ29nUUdsdWRHVnlabUZqWlNCSlMyVjVWbUZzZFdWQmRIUnlhV0oxZEdWY2JpQXFJRUIwWlcxd2JHRjBaU0JVWEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JtRnRaU0F0SUVGMGRISnBZblYwWlNCdVlXMWxMbHh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhaaGJIVmxJQzBnUVhSMGNtbGlkWFJsSUhaaGJIVmxMbHh1SUNvZ1FIQmhjbUZ0SUh0aWIyOXNaV0Z1ZlNCYlpXTmxjblJkSUMwZ1YyaGxkR2hsY2lCMGFHVWdZWFIwY21saWRYUmxJSE5vYjNWc1pDQmlaU0JwYm1Oc2RXUmxaQ0JwYmlCMGFHVWdaVzV5YjJ4c2JXVnVkQ0JqWlhKMGFXWnBZMkYwWlNBb1JVTmxjblFwTGx4dUlDb2dRRzFsYldKbGNrOW1JRzF2WkhWc1pUcG1iM0l0Wm1GaWNtbGpMbU5zYVdWdWRGeHVJQ292WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUVsTFpYbFdZV3gxWlVGMGRISnBZblYwWlNCN1hHNGdJRzVoYldVNklITjBjbWx1Wnp0Y2JpQWdkbUZzZFdVNklITjBjbWx1Wnp0Y2JpQWdaV05sY25RL09pQmliMjlzWldGdU8xeHVmVnh1WEc0dktpcGNiaUFxSUVCa1pYTmpjbWx3ZEdsdmJpQlRkR0Z1WkdGeVpDQkdZV0p5YVdNZ1EwRWdhV1JsYm5ScGRIa2dZWFIwY21saWRYUmxJR3RsZVhNdVhHNGdLaUJBYzNWdGJXRnllU0JGYm5WdFpYSmhkR1Z6SUhkbGJHd3RhMjV2ZDI0Z1JtRmljbWxqSUVOQklHRjBkSEpwWW5WMFpTQnJaWGx6SUhSb1lYUWdZMkZ1SUdKbElHRnpjMmxuYm1Wa0lIUnZJR2xrWlc1MGFYUnBaWE1nWm05eUlHUmxiR1ZuWVhScGIyNXpJR0Z1WkNCd1pYSnRhWE56YVc5dWN5NWNiaUFxSUVCbGJuVnRJSHR6ZEhKcGJtZDlYRzRnS2lCQWNtVmhaRzl1YkhsY2JpQXFJRUJ0WlcxaVpYSlBaaUJ0YjJSMWJHVTZabTl5TFdaaFluSnBZeTVqYkdsbGJuUmNiaUFxTDF4dVpYaHdiM0owSUdWdWRXMGdTRVpEUVVsa1pXNTBhWFI1UVhSMGNtbGlkWFJsY3lCN1hHNGdJRWhHVWtWSFNWTlVVa0ZTVWs5TVJWTWdQU0JjSW1obUxsSmxaMmx6ZEhKaGNpNVNiMnhsYzF3aUxGeHVJQ0JJUmxKRlIwbFRWRkpCVWtSRlRFVkhRVlJGVWs5TVJWTWdQU0JjSW1obUxsSmxaMmx6ZEhKaGNpNUVaV3hsWjJGMFpWSnZiR1Z6WENJc1hHNGdJRWhHVWtWSFNWTlVVa0ZTUVZSVVVrbENWVlJGVXlBOUlGd2lhR1l1VW1WbmFYTjBjbUZ5TGtGMGRISnBZblYwWlhOY0lpeGNiaUFnU0VaSlRsUkZVazFGUkVsQlZFVkRRU0E5SUZ3aWFHWXVTVzUwWlhKdFpXUnBZWFJsUTBGY0lpeGNiaUFnU0VaU1JWWlBTMFZTSUQwZ1hDSm9aaTVTWlhadmEyVnlYQ0lzWEc0Z0lFaEdRVVpHU1V4SlFWUkpUMDVOUjFJZ1BTQmNJbWhtTGtGbVptbHNhV0YwYVc5dVRXZHlYQ0lzWEc0Z0lFaEdSMFZPUTFKTUlEMGdYQ0pvWmk1SFpXNURVa3hjSWl4Y2JuMWNibHh1THlvcVhHNGdLaUJBWkdWelkzSnBjSFJwYjI0Z1UyVnlkbWxqWlNCM2NtRndjR1Z5SUdadmNpQnBiblJsY21GamRHbHVaeUIzYVhSb0lHRWdSbUZpY21saklFTkJMbHh1SUNvZ1FITjFiVzFoY25rZ1VISnZkbWxrWlhNZ2FHbG5hQzFzWlhabGJDQnZjR1Z5WVhScGIyNXpJR1p2Y2lCdFlXNWhaMmx1WnlCcFpHVnVkR2wwYVdWeklHRm5ZV2x1YzNRZ1lTQkllWEJsY214bFpHZGxjaUJHWVdKeWFXTWdRMlZ5ZEdsbWFXTmhkR1VnUVhWMGFHOXlhWFI1TENCcGJtTnNkV1JwYm1jZ2NtVm5hWE4wY21GMGFXOXVMQ0JsYm5KdmJHeHRaVzUwTENCeVpYWnZZMkYwYVc5dUxDQmhibVFnWVdSdGFXNXBjM1J5WVhScGRtVWdjWFZsY21sbGN5NGdSVzVqWVhCemRXeGhkR1Z6SUd4dmQyVnlMV3hsZG1Wc0lFWmhZbkpwWXlCRFFTQmpiR2xsYm5RZ1kyRnNiSE1nZDJsMGFDQmpiMjV6YVhOMFpXNTBJR3h2WjJkcGJtY2dZVzVrSUdWeWNtOXlJRzFoY0hCcGJtY3VYRzRnS2lCQWNHRnlZVzBnZTBOQlEyOXVabWxuZlNCallVTnZibVpwWnlBdElFTnZibTVsWTNScGIyNGdZVzVrSUZSTVV5QmpiMjVtYVdkMWNtRjBhVzl1SUdadmNpQjBhR1VnZEdGeVoyVjBJRU5CTGx4dUlDb2dRR05zWVhOeklFWmhZbkpwWTBWdWNtOXNiRzFsYm5SVFpYSjJhV05sWEc0Z0tpQkFaWGhoYlhCc1pWeHVJQ29nTHk4Z1VtVm5hWE4wWlhJZ1lXNWtJR1Z1Y205c2JDQmhJRzVsZHlCMWMyVnlYRzRnS2lCamIyNXpkQ0J6ZG1NZ1BTQnVaWGNnUm1GaWNtbGpSVzV5YjJ4c2JXVnVkRk5sY25acFkyVW9lMXh1SUNvZ0lDQjFjbXc2SUNkb2RIUndjem92TDJ4dlkyRnNhRzl6ZERvM01EVTBKeXhjYmlBcUlDQWdZMkZPWVcxbE9pQW5UM0puTVVOQkp5eGNiaUFxSUNBZ2RHeHpPaUI3SUhSeWRYTjBaV1JTYjI5MGN6b2dXeWN2Y0dGMGFDOTBieTlqWVM1d1pXMG5YU3dnZG1WeWFXWjVPaUJtWVd4elpTQjlMRnh1SUNvZ0lDQmpZVU5sY25RNklDY3ZjR0YwYUM5MGJ5OWhaRzFwYmk5alpYSjBSR2x5Snl4Y2JpQXFJQ0FnWTJGTFpYazZJQ2N2Y0dGMGFDOTBieTloWkcxcGJpOXJaWGxFYVhJblhHNGdLaUI5S1R0Y2JpQXFJR0YzWVdsMElITjJZeTV5WldkcGMzUmxjaWg3SUhWelpYSk9ZVzFsT2lBbllXeHBZMlVuTENCd1lYTnpkMjl5WkRvZ0ozTXpZM0l6ZENjZ2ZTd2dabUZzYzJVc0lDZHZjbWN4TG1SbGNHRnlkRzFsYm5ReEp5d2dRMEZmVWs5TVJTNVZVMFZTS1R0Y2JpQXFJR052Ym5OMElHbGtJRDBnWVhkaGFYUWdjM1pqTG1WdWNtOXNiQ2duWVd4cFkyVW5MQ0FuY3pOamNqTjBKeWs3WEc0Z0tpQkFiV1Z5YldGcFpGeHVJQ29nYzJWeGRXVnVZMlZFYVdGbmNtRnRYRzRnS2lBZ0lHRjFkRzl1ZFcxaVpYSmNiaUFxSUNBZ2NHRnlkR2xqYVhCaGJuUWdRWEJ3WEc0Z0tpQWdJSEJoY25ScFkybHdZVzUwSUZOMll5QmhjeUJHWVdKeWFXTkZibkp2Ykd4dFpXNTBVMlZ5ZG1salpWeHVJQ29nSUNCd1lYSjBhV05wY0dGdWRDQkRRU0JoY3lCR1lXSnlhV01nUTBGY2JpQXFJQ0FnUVhCd0xUNCtVM1pqT2lCeVpXZHBjM1JsY2loamNtVmtaVzUwYVdGc2N5d2dMaTR1S1Z4dUlDb2dJQ0JUZG1NdFBqNURRVG9nY21WbmFYTjBaWElvY21WeGRXVnpkQ3dnWVdSdGFXNVZjMlZ5S1Z4dUlDb2dJQ0JEUVMwdFBqNVRkbU02SUdWdWNtOXNiRzFsYm5SVFpXTnlaWFJjYmlBcUlDQWdVM1pqTFMwK1BrRndjRG9nYzJWamNtVjBYRzRnS2lBZ0lFRndjQzArUGxOMll6b2daVzV5YjJ4c0tHVnVjbTlzYkcxbGJuUkpaQ3dnYzJWamNtVjBLVnh1SUNvZ0lDQlRkbU10UGo1RFFUb2daVzV5YjJ4c0tIdGxibkp2Ykd4dFpXNTBTVVFzSUhObFkzSmxkSDBwWEc0Z0tpQWdJRU5CTFMwK1BsTjJZem9nWTJWeWRHbG1hV05oZEdWelhHNGdLaUFnSUZOMll5MHRQajVCY0hBNklFbGtaVzUwYVhSNVhHNGdLaTljYm1WNGNHOXlkQ0JqYkdGemN5QkdZV0p5YVdORmJuSnZiR3h0Wlc1MFUyVnlkbWxqWlNCbGVIUmxibVJ6SUV4dloyZGxaRU5zWVhOeklIdGNiaUFnY0hKcGRtRjBaU0JqWVQ4NklFWmhZbkpwWTBOQlUyVnlkbWxqWlhNN1hHNWNiaUFnY0hKcGRtRjBaU0JqWlhKMGFXWnBZMkYwWlZObGNuWnBZMlUvT2lCaGJuazdYRzVjYmlBZ2NISnBkbUYwWlNCaFptWnBiR2xoZEdsdmJsTmxjblpwWTJVL09pQkJabVpwYkdsaGRHbHZibE5sY25acFkyVTdYRzVjYmlBZ2NISnBkbUYwWlNCcFpHVnVkR2wwZVZObGNuWnBZMlUvT2lCSlpHVnVkR2wwZVZObGNuWnBZMlU3WEc1Y2JpQWdjSEpwZG1GMFpTQmpiR2xsYm5RL09pQmhibms3WEc1Y2JpQWdjSEpwZG1GMFpTQjFjMlZ5UHpvZ1ZYTmxjanRjYmx4dUlDQmpiMjV6ZEhKMVkzUnZjaWh3Y21sMllYUmxJR05oUTI5dVptbG5PaUJEUVVOdmJtWnBaeWtnZTF4dUlDQWdJRU52Y21WVmRHbHNjeTVuWlhSRGNubHdkRzlUZFdsMFpTaGNiaUFnSUNBZ0lHTmhRMjl1Wm1sbkxtaHpiVnh1SUNBZ0lDQWdJQ0EvSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSE52Wm5SM1lYSmxPaUJtWVd4elpTeGNiaUFnSUNBZ0lDQWdJQ0FnSUd4cFlqb2dZMkZEYjI1bWFXY3VhSE50TG14cFluSmhjbmtzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnpiRzkwT2lCallVTnZibVpwWnk1b2MyMHVjMnh2ZEN4Y2JpQWdJQ0FnSUNBZ0lDQWdJR3hoWW1Wc09pQmpZVU52Ym1acFp5NW9jMjB1ZEc5clpXNU1ZV0psYkN4Y2JpQWdJQ0FnSUNBZ0lDQWdJSEJwYmpvZ1UzUnlhVzVuS0dOaFEyOXVabWxuTG1oemJTNXdhVzRwTEZ4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdPaUIxYm1SbFptbHVaV1JjYmlBZ0lDQXBPMXh1SUNBZ0lITjFjR1Z5S0NrN1hHNGdJSDFjYmx4dUlDQndjbTkwWldOMFpXUWdZWE41Ym1NZ1ZYTmxjaWdwT2lCUWNtOXRhWE5sUEZWelpYSStJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NTFjMlZ5S1NCeVpYUjFjbTRnZEdocGN5NTFjMlZ5TzF4dUlDQWdJR052Ym5OMElIc2dZMkZPWVcxbExDQmpZVU5sY25Rc0lHTmhTMlY1TENCMWNtd3NJR2h6YlNCOUlEMGdkR2hwY3k1allVTnZibVpwWnp0Y2JpQWdJQ0JqYjI1emRDQnNiMmNnUFNCMGFHbHpMbXh2Wnk1bWIzSW9kR2hwY3k1VmMyVnlLVHRjYmlBZ0lDQnNiMmN1WkdWaWRXY29ZRU55WldGMGFXNW5JRU5CSUhWelpYSWdabTl5SUNSN1kyRk9ZVzFsZlNCaGRDQWtlM1Z5YkgxZ0tUdGNiaUFnSUNCc2IyY3VaR1ZpZFdjb1lGSmxkSEpwWlhacGJtY2dRMEVnWTJWeWRHbG1hV05oZEdVZ1puSnZiU0FrZTJOaFEyVnlkSDFnS1R0Y2JpQWdJQ0JqYjI1emRDQmpaWEowYVdacFkyRjBaU0E5SUdGM1lXbDBJRU52Y21WVmRHbHNjeTVuWlhSR2FYSnpkRVJwY2tacGJHVk9ZVzFsUTI5dWRHVnVkQ2hqWVVObGNuUXBPMXh1SUNBZ0lHeGxkQ0JyWlhrNklITjBjbWx1WnlCOElIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCcFppQW9JV2h6YlNrZ2UxeHVJQ0FnSUNBZ2FXWWdLQ0ZqWVV0bGVTa2dlMXh1SUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnU1c1MFpYSnVZV3hGY25KdmNpaGNiaUFnSUNBZ0lDQWdJQ0JnVFdsemMybHVaeUJqWVV0bGVTQmpiMjVtYVdkMWNtRjBhVzl1SUdadmNpQkRRU0FrZTJOaFRtRnRaWDB1SUZCeWIzWnBaR1VnWVNCclpYa2daR2x5WldOMGIzSjVJRzl5SUdOdmJtWnBaM1Z5WlNCSVUwMGdjM1Z3Y0c5eWRDNWdYRzRnSUNBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0JzYjJjdVpHVmlkV2NvWUZKbGRISnBaWFpwYm1jZ1EwRWdhMlY1SUdaeWIyMGdKSHRqWVV0bGVYMWdLVHRjYmlBZ0lDQWdJR3RsZVNBOUlHRjNZV2wwSUVOdmNtVlZkR2xzY3k1blpYUkdhWEp6ZEVScGNrWnBiR1ZPWVcxbFEyOXVkR1Z1ZENoallVdGxlU2s3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lHeHZaeTVrWldKMVp5aGNiaUFnSUNBZ0lDQWdZRlZ6YVc1bklFaFRUU0JqYjI1bWFXZDFjbUYwYVc5dUlHWnZjaUJEUVNBa2UyTmhUbUZ0WlgwZ2QybDBhQ0JzYVdKeVlYSjVJQ1I3YUhOdExteHBZbkpoY25sOVlGeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCOVhHNGdJQ0FnYkc5bkxtUmxZblZuS0dCTWIyRmthVzVuSUVGa2JXbHVJSFZ6WlhJZ1ptOXlJR05oSUNSN1kyRk9ZVzFsZldBcE8xeHVJQ0FnSUhSb2FYTXVkWE5sY2lBOUlHRjNZV2wwSUVOdmNtVlZkR2xzY3k1blpYUkRRVlZ6WlhJb1hDSmhaRzFwYmx3aUxDQnJaWGtzSUdObGNuUnBabWxqWVhSbExDQmpZVTVoYldVc0lIdGNiaUFnSUNBZ0lHaHpiU3hjYmlBZ0lDQjlLVHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTUxYzJWeU8xeHVJQ0I5WEc1Y2JpQWdjSEp2ZEdWamRHVmtJR0Z6ZVc1aklFTkJLQ2s2SUZCeWIyMXBjMlU4Um1GaWNtbGpRMEZUWlhKMmFXTmxjejRnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbU5oS1NCeVpYUjFjbTRnZEdocGN5NWpZVHRjYmlBZ0lDQmpiMjV6ZENCc2IyY2dQU0IwYUdsekxteHZaeTVtYjNJb2RHaHBjeTVEUVNrN1hHNGdJQ0FnWTI5dWMzUWdleUIxY213c0lIUnNjeXdnWTJGT1lXMWxJSDBnUFNCMGFHbHpMbU5oUTI5dVptbG5PMXh1WEc0Z0lDQWdMeThnUms5U0lGTnZiV1VnVW1WaGMyOXVJSFJvWlNCMlpYSnBabWxqWVhScGIyNGdabUZwYkhNZ2JtVmxaQ0IwYnlCcGJuWmxjM1JwWjJGMFpTQjBhR2x6SUhkdmNtdHpJR1p2Y2lCdWIzZGNiaUFnSUNBdkx5QmxjMnhwYm5RdFpHbHpZV0pzWlMxdVpYaDBMV3hwYm1VZ2NISmxabVZ5TFdOdmJuTjBYRzRnSUNBZ2JHVjBJSHNnZEhKMWMzUmxaRkp2YjNSekxDQjJaWEpwWm5rZ2ZTQTlJSFJzY3lCaGN5QlVURk5QY0hScGIyNXpPMXh1WEc0Z0lDQWdZMjl1YzNRZ2NtOXZkQ0E5SUNoMGNuVnpkR1ZrVW05dmRITWdZWE1nYzNSeWFXNW5XMTBwV3pCZElHRnpJSE4wY21sdVp6dGNiaUFnSUNCc2IyY3VaR1ZpZFdjb1lGSmxkSEpwWlhacGJtY2dRMEVnWTJWeWRHbG1hV05oZEdVZ1puSnZiU0FrZTNKdmIzUjlMaUJqZDJRNklDUjdjSEp2WTJWemN5NWpkMlFvS1gxZ0tUdGNibHh1SUNBZ0lHTnZibk4wSUdObGNuUnBabWxqWVhSbElEMGdZWGRoYVhRZ1EyOXlaVlYwYVd4ekxtZGxkRVpwYkdWRGIyNTBaVzUwS0hKdmIzUXBPMXh1SUNBZ0lHeHZaeTVrWldKMVp5aGdRM0psWVhScGJtY2dRMEVnUTJ4cFpXNTBJR1p2Y2lCRFFTQWtlMk5oVG1GdFpYMGdkVzVrWlhJZ0pIdDFjbXg5WUNrN1hHNGdJQ0FnZEdocGN5NWpZU0E5SUc1bGR5QkdZV0p5YVdORFFWTmxjblpwWTJWektGeHVJQ0FnSUNBZ2RYSnNMRnh1SUNBZ0lDQWdlMXh1SUNBZ0lDQWdJQ0IwY25WemRHVmtVbTl2ZEhNNklFSjFabVpsY2k1bWNtOXRLR05sY25ScFptbGpZWFJsS1N4Y2JpQWdJQ0FnSUNBZ2RtVnlhV1o1TEZ4dUlDQWdJQ0FnZlNCaGN5QlVURk5QY0hScGIyNXpMRnh1SUNBZ0lDQWdZMkZPWVcxbFhHNGdJQ0FnS1R0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1allUdGNiaUFnZlZ4dVhHNGdJSEJ5YjNSbFkzUmxaQ0JoYzNsdVl5QkRiR2xsYm5Rb0tUb2dVSEp2YldselpUeDdJRzVsZDBObGNuUnBabWxqWVhSbFUyVnlkbWxqWlRvZ1lXNTVJSDArSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVqYkdsbGJuUXBJSEpsZEhWeWJpQjBhR2x6TG1Oc2FXVnVkRHRjYmlBZ0lDQmpiMjV6ZENCallTQTlJR0YzWVdsMElIUm9hWE11UTBFb0tUdGNiaUFnSUNCMGFHbHpMbU5zYVdWdWRDQTlJQ2hqWVNCaGN5QmhibmtwVzF3aVgwWmhZbkpwWTBOQlUyVnlkbWxqWlhOY0lsMDdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVZMnhwWlc1ME8xeHVJQ0I5WEc1Y2JpQWdjSEp2ZEdWamRHVmtJR0Z6ZVc1aklFTmxjblJwWm1sallYUmxLQ2tnZTF4dUlDQWdJR2xtSUNnaGRHaHBjeTVqWlhKMGFXWnBZMkYwWlZObGNuWnBZMlVwWEc0Z0lDQWdJQ0IwYUdsekxtTmxjblJwWm1sallYUmxVMlZ5ZG1salpTQTlJQ2hoZDJGcGRDQjBhR2x6TGtOc2FXVnVkQ2dwS1M1dVpYZERaWEowYVdacFkyRjBaVk5sY25acFkyVW9LVHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVqWlhKMGFXWnBZMkYwWlZObGNuWnBZMlU3WEc0Z0lIMWNibHh1SUNCd2NtOTBaV04wWldRZ1lYTjVibU1nUVdabWFXeHBZWFJwYjI1ektDa2dlMXh1SUNBZ0lHbG1JQ2doZEdocGN5NWhabVpwYkdsaGRHbHZibE5sY25acFkyVXBYRzRnSUNBZ0lDQjBhR2x6TG1GbVptbHNhV0YwYVc5dVUyVnlkbWxqWlNBOUlDaGhkMkZwZENCMGFHbHpMa05CS0NrcExtNWxkMEZtWm1sc2FXRjBhVzl1VTJWeWRtbGpaU2dwTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1GbVptbHNhV0YwYVc5dVUyVnlkbWxqWlR0Y2JpQWdmVnh1WEc0Z0lIQnliM1JsWTNSbFpDQmhjM2x1WXlCSlpHVnVkR2wwYVdWektDa2dlMXh1SUNBZ0lHbG1JQ2doZEdocGN5NXBaR1Z1ZEdsMGVWTmxjblpwWTJVcFhHNGdJQ0FnSUNCMGFHbHpMbWxrWlc1MGFYUjVVMlZ5ZG1salpTQTlJQ2hoZDJGcGRDQjBhR2x6TGtOQktDa3BMbTVsZDBsa1pXNTBhWFI1VTJWeWRtbGpaU2dwTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1sa1pXNTBhWFI1VTJWeWRtbGpaVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCQVpHVnpZM0pwY0hScGIyNGdVbVYwY21sbGRtVWdZMlZ5ZEdsbWFXTmhkR1Z6SUdaeWIyMGdkR2hsSUVOQkxseHVJQ0FnS2lCQWMzVnRiV0Z5ZVNCRFlXeHNjeUIwYUdVZ1EwRWdZMlZ5ZEdsbWFXTmhkR1VnYzJWeWRtbGpaU0IwYnlCc2FYTjBJR05sY25ScFptbGpZWFJsY3l3Z2IzQjBhVzl1WVd4c2VTQnRZWEJ3YVc1bklIUnZJRkJGVFNCemRISnBibWR6SUc5dWJIa3VYRzRnSUNBcUlFQndZWEpoYlNCN1IyVjBRMlZ5ZEdsbWFXTmhkR1Z6VW1WeGRXVnpkSDBnVzNKbGNYVmxjM1JkSUMwZ1QzQjBhVzl1WVd3Z1ptbHNkR1Z5SUhKbGNYVmxjM1FnWm05eUlHTmxjblJwWm1sallYUmxJR3h2YjJ0MWNDNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0aWIyOXNaV0Z1ZlNCYlpHOU5ZWEE5ZEhKMVpWMGdMU0JYYUdWdUlIUnlkV1VzSUhKbGRIVnlibk1nWVhKeVlYa2diMllnVUVWTklITjBjbWx1WjNNN0lHOTBhR1Z5ZDJselpTQnlaWFIxY201eklHWjFiR3dnY21WemNHOXVjMlVnYjJKcVpXTjBMbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdFFjbTl0YVhObFBITjBjbWx1WjF0ZElId2dRMlZ5ZEdsbWFXTmhkR1ZTWlhOd2IyNXpaVDU5SUVGeWNtRjVJRzltSUZCRlRTQnpkSEpwYm1keklHOXlJSFJvWlNCbWRXeHNJR05sY25ScFptbGpZWFJsSUhKbGMzQnZibk5sTGx4dUlDQWdLaTljYmlBZ1lYTjVibU1nWjJWMFEyVnlkR2xtYVdOaGRHVnpLRnh1SUNBZ0lISmxjWFZsYzNRL09pQkhaWFJEWlhKMGFXWnBZMkYwWlhOU1pYRjFaWE4wTEZ4dUlDQWdJR1J2VFdGd0lEMGdkSEoxWlZ4dUlDQXBPaUJRY205dGFYTmxQSE4wY21sdVoxdGRJSHdnUTJWeWRHbG1hV05oZEdWU1pYTndiMjV6WlQ0Z2UxeHVJQ0FnSUdOdmJuTjBJR05sY25ScFptbGpZWFJsVTJWeWRtbGpaU0E5SUdGM1lXbDBJSFJvYVhNdVEyVnlkR2xtYVdOaGRHVW9LVHRjYmlBZ0lDQmpiMjV6ZENCMWMyVnlJRDBnWVhkaGFYUWdkR2hwY3k1VmMyVnlLQ2s3WEc0Z0lDQWdZMjl1YzNRZ2JHOW5JRDBnZEdocGN5NXNiMmN1Wm05eUtIUm9hWE11WjJWMFEyVnlkR2xtYVdOaGRHVnpLVHRjYmlBZ0lDQnNiMmN1WkdWaWRXY29YRzRnSUNBZ0lDQmdVbVYwY21sbGRtbHVaeUJqWlhKMGFXWnBZMkYwWlhNa2UzSmxjWFZsYzNRZ1B5QmdJR1p2Y2lBa2UzSmxjWFZsYzNRdWFXUjlZQ0E2SUZ3aVhDSjlJR1p2Y2lCRFFTQWtlM1JvYVhNdVkyRkRiMjVtYVdjdVkyRk9ZVzFsZldCY2JpQWdJQ0FwTzF4dUlDQWdJR052Ym5OMElISmxjM0J2Ym5ObE9pQkRaWEowYVdacFkyRjBaVkpsYzNCdmJuTmxJRDBnS0Z4dUlDQWdJQ0FnWVhkaGFYUWdZMlZ5ZEdsbWFXTmhkR1ZUWlhKMmFXTmxMbWRsZEVObGNuUnBabWxqWVhSbGN5aHlaWEYxWlhOMElIeDhJSHQ5TENCMWMyVnlLVnh1SUNBZ0lDa3VjbVZ6ZFd4ME8xeHVJQ0FnSUd4dlp5NWtaV0oxWnloY2JpQWdJQ0FnSUdCR2IzVnVaQ0FrZTNKbGMzQnZibk5sTG1ObGNuUnpMbXhsYm1kMGFIMGdZMlZ5ZEdsbWFXTmhkR1Z6T2lBa2UwcFRUMDR1YzNSeWFXNW5hV1o1S0hKbGMzQnZibk5sS1gxZ1hHNGdJQ0FnS1R0Y2JpQWdJQ0J5WlhSMWNtNGdaRzlOWVhBZ1B5QnlaWE53YjI1elpTNWpaWEowY3k1dFlYQW9LR01wSUQwK0lHTXVVRVZOS1NBNklISmxjM0J2Ym5ObE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJrWlhOamNtbHdkR2x2YmlCTWFYTjBJR2xrWlc1MGFYUnBaWE1nY21WbmFYTjBaWEpsWkNCcGJpQjBhR1VnUTBFdVhHNGdJQ0FxSUVCemRXMXRZWEo1SUZGMVpYSnBaWE1nZEdobElFTkJJR2xrWlc1MGFYUjVJSE5sY25acFkyVWdkRzhnWm1WMFkyZ2dZV3hzSUdsa1pXNTBhWFJwWlhNZ1lXNWtJSEpsZEhWeWJuTWdkR2hsSUd4cGMzUWdZWE1nUm1GaWNtbGpTV1JsYm5ScGRIa2diMkpxWldOMGN5NWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1VISnZiV2x6WlR4R1lXSnlhV05KWkdWdWRHbDBlVnRkUG4wZ1ZHaGxJR3hwYzNRZ2IyWWdhV1JsYm5ScGRHbGxjeUJ5WldkcGMzUmxjbVZrSUdsdUlIUm9aU0JEUVM1Y2JpQWdJQ292WEc0Z0lHRnplVzVqSUdkbGRFbGtaVzUwYVhScFpYTW9LVG9nVUhKdmJXbHpaVHhHWVdKeWFXTkpaR1Z1ZEdsMGVWdGRQaUI3WEc0Z0lDQWdZMjl1YzNRZ2FXUmxiblJwZEdsbGMxTmxjblpwWTJVZ1BTQmhkMkZwZENCMGFHbHpMa2xrWlc1MGFYUnBaWE1vS1R0Y2JpQWdJQ0JqYjI1emRDQnNiMmNnUFNCMGFHbHpMbXh2Wnk1bWIzSW9kR2hwY3k1blpYUkpaR1Z1ZEdsMGFXVnpLVHRjYmlBZ0lDQnNiMmN1WkdWaWRXY29ZRkpsZEhKcFpYWnBibWNnU1dSbGJuUnBkR2xsY3lCMWJtUmxjaUJEUVNBa2UzUm9hWE11WTJGRGIyNW1hV2N1WTJGT1lXMWxmV0FwTzF4dUlDQWdJR052Ym5OMElISmxjM0J2Ym5ObE9pQkpaR1Z1ZEdsMGVWSmxjM0J2Ym5ObElEMGdLRnh1SUNBZ0lDQWdZWGRoYVhRZ2FXUmxiblJwZEdsbGMxTmxjblpwWTJVdVoyVjBRV3hzS0dGM1lXbDBJSFJvYVhNdVZYTmxjaWdwS1Z4dUlDQWdJQ2t1Y21WemRXeDBPMXh1SUNBZ0lHeHZaeTVrWldKMVp5aGNiaUFnSUNBZ0lHQkdiM1Z1WkNBa2UzSmxjM0J2Ym5ObExtbGtaVzUwYVhScFpYTXViR1Z1WjNSb2ZTQkpaR1Z1ZEdsMGFXVnpPaUFrZTBwVFQwNHVjM1J5YVc1bmFXWjVLSEpsYzNCdmJuTmxLWDFnWEc0Z0lDQWdLVHRjYmlBZ0lDQnlaWFIxY200Z2NtVnpjRzl1YzJVdWFXUmxiblJwZEdsbGN6dGNiaUFnZlZ4dVhHNGdJSEJ5YjNSbFkzUmxaQ0J3WVhKelpVVnljbTl5S0dVNklFVnljbTl5S1NCN1hHNGdJQ0FnWTI5dWMzUWdjbVZuWlhod0lEMGdMeTRxWTI5a1pUcGNYSE1vWEZ4a0t5a3VLajl0WlhOellXZGxPbHhjYzF0Y0lpZGRLQzRyS1Z0Y0lpZGRMMmR6TzF4dUlDQWdJR052Ym5OMElHMWhkR05vSUQwZ2NtVm5aWGh3TG1WNFpXTW9aUzV0WlhOellXZGxLVHRjYmlBZ0lDQnBaaUFvSVcxaGRHTm9LU0J5WlhSMWNtNGdibVYzSUZKbFoybHpkSEpoZEdsdmJrVnljbTl5S0dVcE8xeHVJQ0FnSUdOdmJuTjBJRnNzSUdOdlpHVXNJRzFsYzNOaFoyVmRJRDBnYldGMFkyZzdYRzRnSUNBZ2MzZHBkR05vSUNoamIyUmxLU0I3WEc0Z0lDQWdJQ0JqWVhObElGd2lOelJjSWpwY2JpQWdJQ0FnSUdOaGMyVWdYQ0kzTVZ3aU9seHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2JtVjNJRU52Ym1ac2FXTjBSWEp5YjNJb2JXVnpjMkZuWlNrN1hHNGdJQ0FnSUNCallYTmxJRndpTWpCY0lqcGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHNWxkeUJCZFhSb2IzSnBlbUYwYVc5dVJYSnliM0lvYldWemMyRm5aU2s3WEc0Z0lDQWdJQ0JrWldaaGRXeDBPbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdibVYzSUZKbFoybHpkSEpoZEdsdmJrVnljbTl5S0cxbGMzTmhaMlVwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCQVpHVnpZM0pwY0hScGIyNGdVbVYwY21sbGRtVWdZV1ptYVd4cFlYUnBiMjV6SUdaeWIyMGdkR2hsSUVOQkxseHVJQ0FnS2lCQWMzVnRiV0Z5ZVNCUmRXVnlhV1Z6SUhSb1pTQkRRU0JtYjNJZ2RHaGxJR3hwYzNRZ2IyWWdZV1ptYVd4cFlYUnBiMjV6SUdGMllXbHNZV0pzWlNCMWJtUmxjaUIwYUdVZ1kyOXVabWxuZFhKbFpDQkRRUzVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZTQlVhR1VnWVdabWFXeHBZWFJwYjI1eklISmxjM1ZzZENCd1lYbHNiMkZrTGx4dUlDQWdLaTljYmlBZ1lYTjVibU1nWjJWMFFXWm1hV3hwWVhScGIyNXpLQ2tnZTF4dUlDQWdJR052Ym5OMElHRm1abWxzYVdGMGFXOXVVMlZ5ZG1salpTQTlJR0YzWVdsMElIUm9hWE11UVdabWFXeHBZWFJwYjI1ektDazdYRzRnSUNBZ1kyOXVjM1FnYkc5bklEMGdkR2hwY3k1c2IyY3VabTl5S0hSb2FYTXVaMlYwUVdabWFXeHBZWFJwYjI1ektUdGNiaUFnSUNCc2IyY3VaR1ZpZFdjb1lGSmxkSEpwWlhacGJtY2dRV1ptYVd4cFlYUnBiMjV6SUhWdVpHVnlJRU5CSUNSN2RHaHBjeTVqWVVOdmJtWnBaeTVqWVU1aGJXVjlZQ2s3WEc0Z0lDQWdZMjl1YzNRZ2NtVnpjRzl1YzJVZ1BTQW9ZWGRoYVhRZ1lXWm1hV3hwWVhScGIyNVRaWEoyYVdObExtZGxkRUZzYkNoaGQyRnBkQ0IwYUdsekxsVnpaWElvS1NrcFhHNGdJQ0FnSUNBdWNtVnpkV3gwTzF4dUlDQWdJR3h2Wnk1a1pXSjFaeWhjYmlBZ0lDQWdJR0JHYjNWdVpDQWtlM0psYzNCdmJuTmxMbUV1YkdWdVozUm9mU0JCWm1acGJHbGhkR2x2Ym5NNklDUjdTbE5QVGk1emRISnBibWRwWm5rb2NtVnpjRzl1YzJVcGZXQmNiaUFnSUNBcE8xeHVJQ0FnSUhKbGRIVnliaUJ5WlhOd2IyNXpaVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCQVpHVnpZM0pwY0hScGIyNGdVbVZoWkNCcFpHVnVkR2wwZVNCa1pYUmhhV3h6SUdaeWIyMGdkR2hsSUVOQklHSjVJR1Z1Y205c2JHMWxiblFnU1VRdVhHNGdJQ0FxSUVCemRXMXRZWEo1SUZKbGRISnBaWFpsY3lCaGJtUWdkbUZzYVdSaGRHVnpJR0VnYzJsdVoyeGxJR2xrWlc1MGFYUjVMQ0IwYUhKdmQybHVaeUJPYjNSR2IzVnVaRVZ5Y205eUlIZG9aVzRnYldsemMybHVaeTVjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHVnVjbTlzYkcxbGJuUkpaQ0F0SUVWdWNtOXNiRzFsYm5RZ1NVUWdkRzhnYkc5dmEzVndMbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdFFjbTl0YVhObFBFWmhZbkpwWTBsa1pXNTBhWFI1UG4wZ1ZHaGxJR2xrWlc1MGFYUjVJR1JsZEdGcGJITWdjM1J2Y21Wa0lHbHVJSFJvWlNCRFFTNWNiaUFnSUNvdlhHNGdJR0Z6ZVc1aklISmxZV1FvWlc1eWIyeHNiV1Z1ZEVsa09pQnpkSEpwYm1jcElIdGNiaUFnSUNCamIyNXpkQ0JqWVNBOUlHRjNZV2wwSUhSb2FYTXVRMEVvS1R0Y2JpQWdJQ0JqYjI1emRDQjFjMlZ5SUQwZ1lYZGhhWFFnZEdocGN5NVZjMlZ5S0NrN1hHNGdJQ0FnYkdWMElISmxjM1ZzZERvZ1NWTmxjblpwWTJWU1pYTndiMjV6WlR0Y2JpQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ2NtVnpkV3gwSUQwZ1lYZGhhWFFnWTJFdWJtVjNTV1JsYm5ScGRIbFRaWEoyYVdObEtDa3VaMlYwVDI1bEtHVnVjbTlzYkcxbGJuUkpaQ3dnZFhObGNpazdYRzRnSUNBZ2ZTQmpZWFJqYUNBb1pUb2dZVzU1S1NCN1hHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1RtOTBSbTkxYm1SRmNuSnZjaWhjYmlBZ0lDQWdJQ0FnWUVOdmRXeGtiaWQwSUdacGJtUWdaVzV5YjJ4c2JXVnVkQ0IzYVhSb0lHbGtJQ1I3Wlc1eWIyeHNiV1Z1ZEVsa2ZUb2dKSHRsZldCY2JpQWdJQ0FnSUNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tDRnlaWE4xYkhRdWMzVmpZMlZ6Y3lsY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCT2IzUkdiM1Z1WkVWeWNtOXlLRnh1SUNBZ0lDQWdJQ0JnUTI5MWJHUnVKM1FnWm1sdVpDQmxibkp2Ykd4dFpXNTBJSGRwZEdnZ2FXUWdKSHRsYm5KdmJHeHRaVzUwU1dSOU9pQWtlM0psYzNWc2RDNWxjbkp2Y25NdWFtOXBiaWhjSWx4Y2Jsd2lLWDFnWEc0Z0lDQWdJQ0FwTzF4dVhHNGdJQ0FnY21WMGRYSnVJSEpsYzNWc2RDNXlaWE4xYkhRZ1lYTWdSbUZpY21salNXUmxiblJwZEhrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsYzJOeWFYQjBhVzl1SUZKbFoybHpkR1Z5SUdFZ2JtVjNJR2xrWlc1MGFYUjVJSGRwZEdnZ2RHaGxJRU5CTGx4dUlDQWdLaUJBYzNWdGJXRnllU0JUZFdKdGFYUnpJR0VnY21WbmFYTjBjbUYwYVc5dUlISmxjWFZsYzNRZ1ptOXlJR0VnYm1WM0lHVnVjbTlzYkcxbGJuUWdTVVFzSUhKbGRIVnlibWx1WnlCMGFHVWdaVzV5YjJ4c2JXVnVkQ0J6WldOeVpYUWdkWEJ2YmlCemRXTmpaWE56TGx4dUlDQWdLaUJBY0dGeVlXMGdlME55WldSbGJuUnBZV3h6ZlNCdGIyUmxiQ0F0SUVOeVpXUmxiblJwWVd4eklHTnZiblJoYVc1cGJtY2dkWE5sY2s1aGJXVWdZVzVrSUhCaGMzTjNiM0prSUdadmNpQjBhR1VnYm1WM0lHbGtaVzUwYVhSNUxseHVJQ0FnS2lCQWNHRnlZVzBnZTJKdmIyeGxZVzU5SUZ0cGMxTjFjR1Z5VlhObGNqMW1ZV3h6WlYwZ0xTQlhhR1YwYUdWeUlIUnZJSEpsWjJsemRHVnlJSFJvWlNCcFpHVnVkR2wwZVNCaGN5QmhJSE4xY0dWeUlIVnpaWEl1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQmJZV1ptYVd4cFlYUnBiMjQ5WENKY0lsMGdMU0JCWm1acGJHbGhkR2x2YmlCemRISnBibWNnS0dVdVp5NHNJRzl5WnpFdVpHVndZWEowYldWdWRERXBMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwTkJYMUpQVEVVZ2ZDQnpkSEpwYm1kOUlGdDFjMlZ5VW05c1pWMGdMU0JTYjJ4bElIUnZJR0Z6YzJsbmJpQjBieUIwYUdVZ2FXUmxiblJwZEhrdVhHNGdJQ0FxSUVCd1lYSmhiU0I3U1V0bGVWWmhiSFZsUVhSMGNtbGlkWFJsZlNCYllYUjBjbk5kSUMwZ1QzQjBhVzl1WVd3Z1lYUjBjbWxpZFhSbGN5QjBieUJoZEhSaFkyZ2dkRzhnZEdobElHbGtaVzUwYVhSNUxseHVJQ0FnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnVzIxaGVFVnVjbTlzYkcxbGJuUnpYU0F0SUUxaGVHbHRkVzBnYm5WdFltVnlJRzltSUdWdWNtOXNiRzFsYm5SeklHRnNiRzkzWldRZ1ptOXlJSFJvWlNCcFpHVnVkR2wwZVM1Y2JpQWdJQ29nUUhKbGRIVnliaUI3VUhKdmJXbHpaVHh6ZEhKcGJtYytmU0JVYUdVZ1pXNXliMnhzYldWdWRDQnpaV055WlhRZ1ptOXlJSFJvWlNCeVpXZHBjM1JsY21Wa0lHbGtaVzUwYVhSNUxseHVJQ0FnS2k5Y2JpQWdZWE41Ym1NZ2NtVm5hWE4wWlhJb1hHNGdJQ0FnYlc5a1pXdzZJRU55WldSbGJuUnBZV3h6TEZ4dUlDQWdJR2x6VTNWd1pYSlZjMlZ5T2lCaWIyOXNaV0Z1SUQwZ1ptRnNjMlVzWEc0Z0lDQWdZV1ptYVd4cFlYUnBiMjQ2SUhOMGNtbHVaeUE5SUZ3aVhDSXNYRzRnSUNBZ2RYTmxjbEp2YkdVL09pQkRRVjlTVDB4RklId2djM1J5YVc1bkxGeHVJQ0FnSUdGMGRISnpQem9nU1V0bGVWWmhiSFZsUVhSMGNtbGlkWFJsTEZ4dUlDQWdJRzFoZUVWdWNtOXNiRzFsYm5SelB6b2diblZ0WW1WeVhHNGdJQ2s2SUZCeWIyMXBjMlU4YzNSeWFXNW5QaUI3WEc0Z0lDQWdiR1YwSUhKbFoybHpkSEpoZEdsdmJqb2djM1J5YVc1bk8xeHVJQ0FnSUdOdmJuTjBJR3h2WnlBOUlIUm9hWE11Ykc5bkxtWnZjaWgwYUdsekxuSmxaMmx6ZEdWeUtUdGNiaUFnSUNCMGNua2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ2V5QjFjMlZ5VG1GdFpTd2djR0Z6YzNkdmNtUWdmU0E5SUcxdlpHVnNPMXh1SUNBZ0lDQWdZMjl1YzNRZ1kyRWdQU0JoZDJGcGRDQjBhR2x6TGtOQktDazdYRzRnSUNBZ0lDQmpiMjV6ZENCMWMyVnlJRDBnWVhkaGFYUWdkR2hwY3k1VmMyVnlLQ2s3WEc0Z0lDQWdJQ0JqYjI1emRDQndjbTl3Y3lBOUlIdGNiaUFnSUNBZ0lDQWdaVzV5YjJ4c2JXVnVkRWxFT2lCMWMyVnlUbUZ0WlNCaGN5QnpkSEpwYm1jc1hHNGdJQ0FnSUNBZ0lHVnVjbTlzYkcxbGJuUlRaV055WlhRNklIQmhjM04zYjNKa0xGeHVJQ0FnSUNBZ0lDQmhabVpwYkdsaGRHbHZiam9nWVdabWFXeHBZWFJwYjI0c1hHNGdJQ0FnSUNBZ0lIVnpaWEpTYjJ4bE9pQjFjMlZ5VW05c1pTeGNiaUFnSUNBZ0lDQWdZWFIwY25NNklHRjBkSEp6TEZ4dUlDQWdJQ0FnSUNCdFlYaEZibkp2Ykd4dFpXNTBjem9nYldGNFJXNXliMnhzYldWdWRITXNYRzRnSUNBZ0lDQjlJR0Z6SUVsU1pXZHBjM1JsY2xKbGNYVmxjM1E3WEc0Z0lDQWdJQ0J5WldkcGMzUnlZWFJwYjI0Z1BTQmhkMkZwZENCallTNXlaV2RwYzNSbGNpaHdjbTl3Y3l3Z2RYTmxjaWs3WEc0Z0lDQWdJQ0JzYjJjdWFXNW1ieWhjYmlBZ0lDQWdJQ0FnWUZKbFoybHpkSEpoZEdsdmJpQm1iM0lnSkh0MWMyVnlUbUZ0WlgwZ1kzSmxZWFJsWkNCM2FYUm9JSFZ6WlhJZ2RIbHdaU0FrZTNWelpYSlNiMnhsSUQ4L0lGd2lWVzVrWldacGJtVmtJRkp2YkdWY0luMGdKSHRwYzFOMWNHVnlWWE5sY2lBL0lGd2lZWE1nYzNWd1pYSWdkWE5sY2x3aUlEb2dYQ0pjSW4xZ1hHNGdJQ0FnSUNBcE8xeHVJQ0FnSUgwZ1kyRjBZMmdnS0dVNklHRnVlU2tnZTF4dUlDQWdJQ0FnZEdoeWIzY2dkR2hwY3k1d1lYSnpaVVZ5Y205eUtHVXBPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnY21WbmFYTjBjbUYwYVc5dU8xeHVJQ0I5WEc1Y2JpQWdjSEp2ZEdWamRHVmtJSE4wWVhScFl5QnBaR1Z1ZEdsMGVVWnliMjFGYm5KdmJHeHRaVzUwS0Z4dUlDQWdJR1Z1Y205c2JHMWxiblE2SUVsRmJuSnZiR3hTWlhOd2IyNXpaU3hjYmlBZ0lDQnRjM0JKWkRvZ2MzUnlhVzVuWEc0Z0lDazZJRWxrWlc1MGFYUjVJSHRjYmlBZ0lDQmpiMjV6ZENCN0lHTmxjblJwWm1sallYUmxMQ0JyWlhrc0lISnZiM1JEWlhKMGFXWnBZMkYwWlNCOUlEMGdaVzV5YjJ4c2JXVnVkRHRjYmlBZ0lDQmpiMjV6ZENCc2IyY2dQU0JNYjJkbmFXNW5MbVp2Y2loR1lXSnlhV05GYm5KdmJHeHRaVzUwVTJWeWRtbGpaU3dnZTMwcExtWnZjaWhjYmlBZ0lDQWdJSFJvYVhNdWFXUmxiblJwZEhsR2NtOXRSVzV5YjJ4c2JXVnVkRnh1SUNBZ0lDazdYRzRnSUNBZ2JHOW5MbVJsWW5WbktGeHVJQ0FnSUNBZ1lFZGxibVZ5WVhScGJtY2dTV1JsYm5ScGRIa2dabkp2YlNCalpYSjBhV1pwWTJGMFpTQWtlMk5sY25ScFptbGpZWFJsZlNCcGJpQnRjM0FnSkh0dGMzQkpaSDFnWEc0Z0lDQWdLVHRjYmlBZ0lDQmpiMjV6ZENCamJHbGxiblJKWkNBOUlFTnllWEIwYjFWMGFXeHpMbVpoWW5KcFkwbGtSbkp2YlVObGNuUnBabWxqWVhSbEtHTmxjblJwWm1sallYUmxLVHRjYmlBZ0lDQmpiMjV6ZENCcFpDQTlJRU55ZVhCMGIxVjBhV3h6TG1WdVkyOWtaU2hqYkdsbGJuUkpaQ2s3WEc0Z0lDQWdiRzluTG1SbFluVm5LR0JKWkdWdWRHbDBlU0FrZTJOc2FXVnVkRWxrZlNCaGJtUWdaVzVqYjJSbFpFbGtJQ1I3YVdSOVlDazdYRzRnSUNBZ1kyOXVjM1FnYm05M0lEMGdibVYzSUVSaGRHVW9LVHRjYmlBZ0lDQnlaWFIxY200Z2JtVjNJRWxrWlc1MGFYUjVLSHRjYmlBZ0lDQWdJR2xrT2lCcFpDeGNiaUFnSUNBZ0lHTnlaV1JsYm5ScFlXeHpPaUI3WEc0Z0lDQWdJQ0FnSUdsa09pQnBaQ3hjYmlBZ0lDQWdJQ0FnWTJWeWRHbG1hV05oZEdVNklHTmxjblJwWm1sallYUmxMRnh1SUNBZ0lDQWdJQ0J3Y21sMllYUmxTMlY1T2lCclpYa3VkRzlDZVhSbGN5Z3BMRnh1SUNBZ0lDQWdJQ0J5YjI5MFEyVnlkR2xtYVdOaGRHVTZJSEp2YjNSRFpYSjBhV1pwWTJGMFpTeGNiaUFnSUNBZ0lDQWdZM0psWVhSbFpFOXVPaUJ1YjNjc1hHNGdJQ0FnSUNBZ0lIVndaR0YwWldSUGJqb2dibTkzTEZ4dUlDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUcxemNFbGtPaUJ0YzNCSlpDeGNiaUFnSUNBZ0lHTnlaV0YwWldSUGJqb2dibTkzTEZ4dUlDQWdJQ0FnZFhCa1lYUmxaRTl1T2lCdWIzY3NYRzRnSUNBZ2ZTazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dUlFVnVjbTlzYkNCaGJpQnBaR1Z1ZEdsMGVTQjNhWFJvSUhSb1pTQkRRU0IxYzJsdVp5QmhJSEpsWjJsemRISmhkR2x2YmlCelpXTnlaWFF1WEc0Z0lDQXFJRUJ6ZFcxdFlYSjVJRVY0WTJoaGJtZGxjeUIwYUdVZ1pXNXliMnhzYldWdWRDQkpSQ0JoYm1RZ2MyVmpjbVYwSUdadmNpQmpaWEowYVdacFkyRjBaWE1zSUhKbGRIVnlibWx1WnlCaElHTnZibk4wY25WamRHVmtJRWxrWlc1MGFYUjVJRzF2WkdWc0xseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnWlc1eWIyeHNiV1Z1ZEVsa0lDMGdSVzV5YjJ4c2JXVnVkQ0JKUkNCMGJ5Qmxibkp2Ykd3dVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J5WldkcGMzUnlZWFJwYjI0Z0xTQkZibkp2Ykd4dFpXNTBJSE5sWTNKbGRDQnlaWFIxY201bFpDQmhkQ0J5WldkcGMzUnlZWFJwYjI0Z2RHbHRaUzVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdVSEp2YldselpUeEpaR1Z1ZEdsMGVUNTlJRlJvWlNCbGJuSnZiR3hsWkNCcFpHVnVkR2wwZVNCdlltcGxZM1FnZDJsMGFDQmpjbVZrWlc1MGFXRnNjeTVjYmlBZ0lDb3ZYRzRnSUdGemVXNWpJR1Z1Y205c2JDaGxibkp2Ykd4dFpXNTBTV1E2SUhOMGNtbHVaeXdnY21WbmFYTjBjbUYwYVc5dU9pQnpkSEpwYm1jcElIdGNiaUFnSUNCc1pYUWdhV1JsYm5ScGRIazZJRWxrWlc1MGFYUjVPMXh1SUNBZ0lHTnZibk4wSUd4dlp5QTlJSFJvYVhNdWJHOW5MbVp2Y2loMGFHbHpMbVZ1Y205c2JDazdYRzRnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJR052Ym5OMElHTmhJRDBnWVhkaGFYUWdkR2hwY3k1RFFTZ3BPMXh1SUNBZ0lDQWdiRzluTG1SbFluVm5LR0JGYm5KdmJHeHBibWNnSkh0bGJuSnZiR3h0Wlc1MFNXUjlZQ2s3WEc0Z0lDQWdJQ0JqYjI1emRDQmxibkp2Ykd4dFpXNTBPaUJKUlc1eWIyeHNVbVZ6Y0c5dWMyVWdQU0JoZDJGcGRDQmpZUzVsYm5KdmJHd29lMXh1SUNBZ0lDQWdJQ0JsYm5KdmJHeHRaVzUwU1VRNklHVnVjbTlzYkcxbGJuUkpaQ3hjYmlBZ0lDQWdJQ0FnWlc1eWIyeHNiV1Z1ZEZObFkzSmxkRG9nY21WbmFYTjBjbUYwYVc5dUxGeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQnBaR1Z1ZEdsMGVTQTlJRVpoWW5KcFkwVnVjbTlzYkcxbGJuUlRaWEoyYVdObExtbGtaVzUwYVhSNVJuSnZiVVZ1Y205c2JHMWxiblFvWEc0Z0lDQWdJQ0FnSUdWdWNtOXNiRzFsYm5Rc1hHNGdJQ0FnSUNBZ0lIUm9hWE11WTJGRGIyNW1hV2N1WTJGT1lXMWxYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdiRzluTG1sdVptOG9YRzRnSUNBZ0lDQWdJR0JUZFdOalpYTnpablZzYkhrZ1pXNXliMnhzWldRZ0pIdGxibkp2Ykd4dFpXNTBTV1I5SUhWdVpHVnlJQ1I3ZEdocGN5NWpZVU52Ym1acFp5NWpZVTVoYldWOUlHRnpJQ1I3YVdSbGJuUnBkSGt1YVdSOVlGeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCOUlHTmhkR05vSUNobE9pQmhibmtwSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJSFJvYVhNdWNHRnljMlZGY25KdmNpaGxLVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdsa1pXNTBhWFI1TzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWE5qY21sd2RHbHZiaUJTWldkcGMzUmxjaUJoYm1RZ1pXNXliMnhzSUdFZ2JtVjNJR2xrWlc1MGFYUjVJR2x1SUc5dVpTQnpkR1Z3TGx4dUlDQWdLaUJBYzNWdGJXRnllU0JTWldkcGMzUmxjbk1nWVNCdVpYY2daVzV5YjJ4c2JXVnVkQ0JKUkNCM2FYUm9JSFJvWlNCRFFTQmhibVFnYVcxdFpXUnBZWFJsYkhrZ1pYaGphR0Z1WjJWeklIUm9aU0J6WldOeVpYUWdkRzhnWlc1eWIyeHNMQ0J5WlhSMWNtNXBibWNnZEdobElHTnlaV0YwWldRZ1NXUmxiblJwZEhrdVhHNGdJQ0FxSUVCd1lYSmhiU0I3UTNKbFpHVnVkR2xoYkhOOUlHMXZaR1ZzSUMwZ1EzSmxaR1Z1ZEdsaGJITWdabTl5SUhSb1pTQnVaWGNnYVdSbGJuUnBkSGtnWTI5dWRHRnBibWx1WnlCMWMyVnlUbUZ0WlNCaGJtUWdjR0Z6YzNkdmNtUXVYRzRnSUNBcUlFQndZWEpoYlNCN1ltOXZiR1ZoYm4wZ1cybHpVM1Z3WlhKVmMyVnlQV1poYkhObFhTQXRJRmRvWlhSb1pYSWdkRzhnY21WbmFYTjBaWElnZEdobElHbGtaVzUwYVhSNUlHRnpJR0VnYzNWd1pYSWdkWE5sY2k1Y2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRnRoWm1acGJHbGhkR2x2YmoxY0lsd2lYU0F0SUVGbVptbHNhV0YwYVc5dUlITjBjbWx1WnlBb1pTNW5MaXdnYjNKbk1TNWtaWEJoY25SdFpXNTBNU2t1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdRMEZmVWs5TVJTQjhJSE4wY21sdVozMGdXM1Z6WlhKU2IyeGxYU0F0SUZKdmJHVWdkRzhnWVhOemFXZHVJSFJ2SUhSb1pTQnBaR1Z1ZEdsMGVTNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0SlMyVjVWbUZzZFdWQmRIUnlhV0oxZEdWOUlGdGhkSFJ5YzEwZ0xTQlBjSFJwYjI1aGJDQmhkSFJ5YVdKMWRHVnpJSFJ2SUdGMGRHRmphQ0IwYnlCMGFHVWdhV1JsYm5ScGRIa3VYRzRnSUNBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCYmJXRjRSVzV5YjJ4c2JXVnVkSE5kSUMwZ1RXRjRhVzExYlNCdWRXMWlaWElnYjJZZ1pXNXliMnhzYldWdWRITWdZV3hzYjNkbFpDQm1iM0lnZEdobElHbGtaVzUwYVhSNUxseHVJQ0FnS2lCQWNtVjBkWEp1SUh0UWNtOXRhWE5sUEVsa1pXNTBhWFI1UG4wZ1ZHaGxJR1Z1Y205c2JHVmtJR2xrWlc1MGFYUjVMbHh1SUNBZ0tpOWNiaUFnWVhONWJtTWdjbVZuYVhOMFpYSkJibVJGYm5KdmJHd29YRzRnSUNBZ2JXOWtaV3c2SUVOeVpXUmxiblJwWVd4ekxGeHVJQ0FnSUdselUzVndaWEpWYzJWeU9pQmliMjlzWldGdUlEMGdabUZzYzJVc1hHNGdJQ0FnWVdabWFXeHBZWFJwYjI0NklITjBjbWx1WnlBOUlGd2lYQ0lzWEc0Z0lDQWdkWE5sY2xKdmJHVS9PaUJEUVY5U1QweEZJSHdnYzNSeWFXNW5MRnh1SUNBZ0lHRjBkSEp6UHpvZ1NVdGxlVlpoYkhWbFFYUjBjbWxpZFhSbExGeHVJQ0FnSUcxaGVFVnVjbTlzYkcxbGJuUnpQem9nYm5WdFltVnlYRzRnSUNrNklGQnliMjFwYzJVOFNXUmxiblJwZEhrK0lIdGNiaUFnSUNCamIyNXpkQ0J5WldkcGMzUnlZWFJwYjI0Z1BTQmhkMkZwZENCMGFHbHpMbkpsWjJsemRHVnlLRnh1SUNBZ0lDQWdiVzlrWld3c1hHNGdJQ0FnSUNCcGMxTjFjR1Z5VlhObGNpeGNiaUFnSUNBZ0lHRm1abWxzYVdGMGFXOXVMRnh1SUNBZ0lDQWdkWE5sY2xKdmJHVXNYRzRnSUNBZ0lDQmhkSFJ5Y3l4Y2JpQWdJQ0FnSUcxaGVFVnVjbTlzYkcxbGJuUnpYRzRnSUNBZ0tUdGNiaUFnSUNCamIyNXpkQ0I3SUhWelpYSk9ZVzFsSUgwZ1BTQnRiMlJsYkR0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1bGJuSnZiR3dvZFhObGNrNWhiV1VnWVhNZ2MzUnlhVzVuTENCeVpXZHBjM1J5WVhScGIyNHBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGRtOXJaWE1nZEdobElHVnVjbTlzYkcxbGJuUWdiMllnWVc0Z2FXUmxiblJwZEhrZ2QybDBhQ0IwYUdVZ2MzQmxZMmxtYVdWa0lHVnVjbTlzYkcxbGJuUWdTVVF1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCbGJuSnZiR3h0Wlc1MFNXUWdMU0JVYUdVZ1pXNXliMnhzYldWdWRDQkpSQ0J2WmlCMGFHVWdhV1JsYm5ScGRIa2dkRzhnWW1VZ2NtVjJiMnRsWkM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEpsZEhWeWJuTWdRU0JRY205dGFYTmxJSFJvWVhRZ2NtVnpiMngyWlhNZ2RHOGdkR2hsSUhKbGMzVnNkQ0J2WmlCMGFHVWdjbVYyYjJOaGRHbHZiaUJ2Y0dWeVlYUnBiMjR1WEc0Z0lDQXFYRzRnSUNBcUlFQjBhSEp2ZDNNZ2UwNXZkRVp2ZFc1a1JYSnliM0o5SUVsbUlIUm9aU0JsYm5KdmJHeHRaVzUwSUhkcGRHZ2dkR2hsSUhOd1pXTnBabWxsWkNCSlJDQmtiMlZ6SUc1dmRDQmxlR2x6ZEM1Y2JpQWdJQ29nUUhSb2NtOTNjeUI3U1c1MFpYSnVZV3hGY25KdmNuMGdTV1lnZEdobGNtVWdhWE1nWVc0Z1pYSnliM0lnWkhWeWFXNW5JSFJvWlNCeVpYWnZZMkYwYVc5dUlIQnliMk5sYzNNdVhHNGdJQ0FxTDF4dUlDQmhjM2x1WXlCeVpYWnZhMlVvWlc1eWIyeHNiV1Z1ZEVsa09pQnpkSEpwYm1jcElIdGNiaUFnSUNCamIyNXpkQ0JqWVNBOUlHRjNZV2wwSUhSb2FYTXVRMEVvS1R0Y2JpQWdJQ0JqYjI1emRDQjFjMlZ5SUQwZ1lYZGhhWFFnZEdocGN5NVZjMlZ5S0NrN1hHNGdJQ0FnWTI5dWMzUWdhV1JsYm5ScGRIa2dQU0JoZDJGcGRDQjBhR2x6TG5KbFlXUW9aVzV5YjJ4c2JXVnVkRWxrS1R0Y2JpQWdJQ0JwWmlBb0lXbGtaVzUwYVhSNUtWeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFNXZkRVp2ZFc1a1JYSnliM0lvWEc0Z0lDQWdJQ0FnSUdCRGIzVnNaQ0J1YjNRZ1ptbHVaQ0JsYm5KdmJHeHRaVzUwSUhkcGRHZ2dhV1FnSkh0bGJuSnZiR3h0Wlc1MFNXUjlZRnh1SUNBZ0lDQWdLVHRjYmlBZ0lDQnNaWFFnY21WemRXeDBPaUJKVTJWeWRtbGpaVkpsYzNCdmJuTmxPMXh1SUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0J5WlhOMWJIUWdQU0JoZDJGcGRDQmpZUzV5WlhadmEyVW9YRzRnSUNBZ0lDQWdJSHNnWlc1eWIyeHNiV1Z1ZEVsRU9pQnBaR1Z1ZEdsMGVTNXBaQ3dnY21WaGMyOXVPaUJjSWxWelpYSWdSR1ZzWlhSaGRHbHZibHdpSUgwc1hHNGdJQ0FnSUNBZ0lIVnpaWEpjYmlBZ0lDQWdJQ2s3WEc0Z0lDQWdmU0JqWVhSamFDQW9aVG9nZFc1cmJtOTNiaWtnZTF4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVsdWRHVnlibUZzUlhKeWIzSW9YRzRnSUNBZ0lDQWdJR0JEYjNWc1pDQnViM1FnY21WMmIydGxJR1Z1Y205c2JHMWxiblFnZDJsMGFDQnBaQ0FrZTJWdWNtOXNiRzFsYm5SSlpIMDZJQ1I3WlgxZ1hHNGdJQ0FnSUNBcE8xeHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb0lYSmxjM1ZzZEM1emRXTmpaWE56S1Z4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVsdWRHVnlibUZzUlhKeWIzSW9YRzRnSUNBZ0lDQWdJR0JEYjNWc1pDQnViM1FnY21WMmIydGxJR1Z1Y205c2JHMWxiblFnZDJsMGFDQnBaQ0FrZTJWdWNtOXNiRzFsYm5SSlpIMDZJQ1I3Y21WemRXeDBMbVZ5Y205eWN5NXFiMmx1S0Z3aVhGeHVYQ0lwZldCY2JpQWdJQ0FnSUNrN1hHNGdJQ0FnY21WMGRYSnVJSEpsYzNWc2REdGNiaUFnZlZ4dWZWeHVJbDE5Il19
|
|
347
|
+
//# sourceMappingURL=FabricEnrollmentService.js.map
|
|
348
|
+
//# sourceMappingURL=FabricEnrollmentService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FabricEnrollmentService.js","sourceRoot":"","sources":["FabricEnrollmentService.js"],"names":[],"mappings":"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"}
|