Version Description
- Initial version
=
Download this release
Release Info
Developer | webdorado |
Plugin | Image Optimizer by 10web – Image Optimizer and Compression plugin |
Version | 1.0.0 |
Comparing to | |
See all releases |
Version 1.0.0
- assets/css/admin_main.css +1058 -0
- assets/css/calendar-jos.css +212 -0
- assets/css/img/calendar.png +0 -0
- assets/css/img/check.png +0 -0
- assets/css/img/delete-white.png +0 -0
- assets/css/img/delete.png +0 -0
- assets/css/img/ui-icons_888888_256x240.png +0 -0
- assets/css/img/web-dorado.png +0 -0
- assets/img/document.png +0 -0
- assets/img/folder-open.png +0 -0
- assets/img/folder.png +0 -0
- assets/img/help.jpg +0 -0
- assets/img/helpbalanced.jpg +0 -0
- assets/img/helpconservative.jpg +0 -0
- assets/img/helpextreme.jpg +0 -0
- assets/img/icon.png +0 -0
- assets/img/minus.png +0 -0
- assets/img/no_image.png +0 -0
- assets/img/plus.png +0 -0
- assets/img/reset.png +0 -0
- assets/img/search.png +0 -0
- assets/img/spinner.gif +0 -0
- assets/img/web-dorado.png +0 -0
- assets/js/admin_main.js +271 -0
- assets/js/api.js +74 -0
- assets/js/calendar.js +1522 -0
- assets/js/calendar_function.js +577 -0
- assets/js/settings.js +474 -0
- cacert-2017-06-07.pem +3955 -0
- classes/iowddb.php +103 -0
- classes/iowddb_class.php +93 -0
- classes/iowdimage.php +183 -0
- composer.json +13 -0
- composer.lock +1181 -0
- includes/iowd-ajax.php +291 -0
- includes/iowd-amazon-s3.php +64 -0
- includes/iowd-api.php +55 -0
- includes/iowd-helper.php +243 -0
- includes/iowd-log.php +28 -0
- includes/iowd-media-library.php +279 -0
- includes/iowd-optimize.php +743 -0
- includes/iowd-report.php +125 -0
- includes/iowd-settings.php +691 -0
- includes/iowd-uninstall.php +17 -0
- includes/iowd-util.php +53 -0
- io-wd.php +82 -0
- iowd-rest.php +147 -0
- iowd_class.php +490 -0
- log/index.php +0 -0
- readme.txt +226 -0
- vendor/aannnaa7/aws-sdk-php-minimized/LICENSE.md +141 -0
- vendor/aannnaa7/aws-sdk-php-minimized/NOTICE.md +64 -0
- vendor/aannnaa7/aws-sdk-php-minimized/README.md +176 -0
- vendor/aannnaa7/aws-sdk-php-minimized/composer.json +60 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/AbstractModel.php +67 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/ApiProvider.php +241 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/DateTimeResult.php +41 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/DocModel.php +128 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/ErrorParser/JsonParserTrait.php +23 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/ErrorParser/JsonRpcErrorParser.php +31 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/ErrorParser/RestJsonErrorParser.php +35 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/ErrorParser/XmlErrorParser.php +79 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/ListShape.php +35 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/MapShape.php +54 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Operation.php +97 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Parser/AbstractParser.php +35 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Parser/AbstractRestParser.php +154 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Parser/Crc32ValidatingParser.php +47 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Parser/Exception/ParserException.php +4 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Parser/JsonParser.php +58 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Parser/JsonRpcParser.php +39 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Parser/PayloadParserTrait.php +51 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Parser/QueryParser.php +52 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Parser/RestJsonParser.php +39 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Parser/RestXmlParser.php +36 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Parser/XmlParser.php +134 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Serializer/Ec2ParamBuilder.php +40 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Serializer/JsonBody.php +90 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Serializer/JsonRpcSerializer.php +69 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Serializer/QueryParamBuilder.php +154 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Serializer/QuerySerializer.php +69 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Serializer/RestJsonSerializer.php +39 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Serializer/RestSerializer.php +193 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Serializer/RestXmlSerializer.php +34 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Serializer/XmlBody.php +217 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Service.php +404 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Shape.php +69 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/ShapeMap.php +66 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/StructureShape.php +79 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/TimestampShape.php +48 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Validator.php +236 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/ApiGateway/ApiGatewayClient.php +166 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/ApiGateway/Exception/ApiGatewayException.php +9 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/AwsClient.php +351 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/AwsClientInterface.php +169 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/CacheInterface.php +34 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/ClientResolver.php +548 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/CodeCommit/CodeCommitClient.php +32 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/CodeCommit/Exception/CodeCommitException.php +9 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/CodeDeploy/CodeDeployClient.php +74 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/CodeDeploy/Exception/CodeDeployException.php +9 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/CodePipeline/CodePipelineClient.php +56 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/CodePipeline/Exception/CodePipelineException.php +9 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/CognitoIdentity/CognitoIdentityClient.php +46 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/CognitoIdentity/Exception/CognitoIdentityException.php +9 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/CognitoSync/CognitoSyncClient.php +44 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/CognitoSync/Exception/CognitoSyncException.php +9 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Command.php +57 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/CommandInterface.php +42 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/CommandPool.php +144 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/ConfigService/ConfigServiceClient.php +56 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/ConfigService/Exception/ConfigServiceException.php +9 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Credentials/CredentialProvider.php +324 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Credentials/Credentials.php +91 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Credentials/CredentialsInterface.php +52 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Credentials/InstanceProfileProvider.php +102 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/DeviceFarm/DeviceFarmClient.php +72 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/DeviceFarm/Exception/DeviceFarmException.php +9 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/DirectConnect/DirectConnectClient.php +48 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/DirectConnect/Exception/DirectConnectException.php +9 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/DirectoryService/DirectoryServiceClient.php +44 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/DirectoryService/Exception/DirectoryServiceException.php +9 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/DoctrineCacheAdapter.php +55 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/DynamoDb/BinaryValue.php +36 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/DynamoDb/DynamoDbClient.php +95 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/DynamoDb/Exception/DynamoDbException.php +9 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/DynamoDb/LockingSessionConnection.php +62 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/DynamoDb/Marshaler.php +320 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/DynamoDb/NumberValue.php +29 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/DynamoDb/SessionConnectionInterface.php +45 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/DynamoDb/SessionHandler.php +226 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/DynamoDb/SetValue.php +44 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/DynamoDb/StandardSessionConnection.php +137 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/DynamoDb/WriteRequestBatch.php +269 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/DynamoDbStreams/DynamoDbStreamsClient.php +29 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/DynamoDbStreams/Exception/DynamoDbStreamsException.php +9 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Ec2/CopySnapshotMiddleware.php +78 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Ec2/Ec2Client.php +416 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Ec2/Exception/Ec2Exception.php +9 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Ecs/EcsClient.php +64 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Ecs/Exception/EcsException.php +9 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Efs/EfsClient.php +32 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Efs/Exception/EfsException.php +9 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/ElastiCache/ElastiCacheClient.php +84 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/ElastiCache/Exception/ElastiCacheException.php +9 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/ElasticBeanstalk/ElasticBeanstalkClient.php +74 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/ElasticBeanstalk/Exception/ElasticBeanstalkException.php +9 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/ElasticLoadBalancing/ElasticLoadBalancingClient.php +66 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/ElasticLoadBalancing/Exception/ElasticLoadBalancingException.php +9 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/ElasticTranscoder/ElasticTranscoderClient.php +44 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/ElasticTranscoder/Exception/ElasticTranscoderException.php +9 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/ElasticsearchService/ElasticsearchServiceClient.php +30 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/ElasticsearchService/Exception/ElasticsearchServiceException.php +9 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Emr/EmrClient.php +44 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Emr/Exception/EmrException.php +9 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Endpoint/EndpointProvider.php +96 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Endpoint/PatternEndpointProvider.php +51 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Exception/AwsException.php +160 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Exception/CouldNotCreateChecksumException.php +19 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Exception/CredentialsException.php +4 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Exception/MultipartUploadException.php +57 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Exception/UnresolvedApiException.php +4 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Exception/UnresolvedEndpointException.php +4 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Exception/UnresolvedSignatureException.php +4 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Firehose/Exception/FirehoseException.php +9 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Firehose/FirehoseClient.php +24 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Glacier/Exception/GlacierException.php +9 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Glacier/GlacierClient.php +247 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Glacier/MultipartUploader.php +281 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Glacier/TreeHash.php +118 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Handler/GuzzleV5/GuzzleHandler.php +181 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Handler/GuzzleV5/GuzzleStream.php +24 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Handler/GuzzleV5/PsrStream.php +34 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Handler/GuzzleV6/GuzzleHandler.php +59 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/HandlerList.php +424 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/HasDataTrait.php +60 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/HashInterface.php +27 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/HashingStream.php +60 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/History.php +152 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Iam/Exception/IamException.php +9 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Iam/IamClient.php +236 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Inspector/Exception/InspectorException.php +9 -0
- vendor/aannnaa7/aws-sdk-php-minimized/src/Inspector/InspectorClient.php +67 -0
assets/css/admin_main.css
ADDED
@@ -0,0 +1,1058 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.iowd_header a, .iowd_header strong a {
|
2 |
+
text-decoration: none;
|
3 |
+
}
|
4 |
+
|
5 |
+
.iowd_header strong a {
|
6 |
+
color: #377BF1 !important;
|
7 |
+
}
|
8 |
+
|
9 |
+
a:focus {
|
10 |
+
box-shadow: none;
|
11 |
+
}
|
12 |
+
|
13 |
+
.iowd_header {
|
14 |
+
margin: 12px 30px 0px;
|
15 |
+
border-radius: 2px;
|
16 |
+
}
|
17 |
+
|
18 |
+
.iowd_header_cells {
|
19 |
+
display: table;
|
20 |
+
width: 100%;
|
21 |
+
}
|
22 |
+
|
23 |
+
.iowd_header_cells h2, .iowd h2 {
|
24 |
+
margin-top: 0px;
|
25 |
+
}
|
26 |
+
|
27 |
+
.iowd_actions:first-child {
|
28 |
+
width: 60%;
|
29 |
+
}
|
30 |
+
|
31 |
+
.iowd_actions:last-child {
|
32 |
+
width: 40%;
|
33 |
+
}
|
34 |
+
|
35 |
+
.iowd_actions_tabs {
|
36 |
+
display: table;
|
37 |
+
width: 100%;
|
38 |
+
}
|
39 |
+
|
40 |
+
.iowd_actions, .iowd_stat {
|
41 |
+
display: table-cell;
|
42 |
+
vertical-align: top;
|
43 |
+
}
|
44 |
+
|
45 |
+
.iowd_tab {
|
46 |
+
width: 50%;
|
47 |
+
display: table-cell;
|
48 |
+
border-top: 2px solid transparent;
|
49 |
+
border-bottom: 1px solid transparent;
|
50 |
+
cursor: pointer;
|
51 |
+
}
|
52 |
+
|
53 |
+
.iowd_tab a {
|
54 |
+
padding: 17px 5px;
|
55 |
+
text-align: center;
|
56 |
+
text-transform: uppercase;
|
57 |
+
font-size: 18px;
|
58 |
+
display: block;
|
59 |
+
color: #000;
|
60 |
+
}
|
61 |
+
|
62 |
+
.iowd_tab_active, .iowd_tab:hover {
|
63 |
+
background: #fff;
|
64 |
+
border-top: 2px solid #377BF1;
|
65 |
+
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
66 |
+
border-bottom: 1px solid #F9F9F9;
|
67 |
+
}
|
68 |
+
|
69 |
+
.iowd_tab_active a, .iowd_tab:hover a {
|
70 |
+
color: #377BF1 !important;
|
71 |
+
}
|
72 |
+
|
73 |
+
.iowd_actions_content, .iowd_stat_content, .iowd_limit_content {
|
74 |
+
background: #fff;
|
75 |
+
padding: 24px 31px;
|
76 |
+
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
77 |
+
}
|
78 |
+
|
79 |
+
.iowd_actions_content {
|
80 |
+
border-radius: 0px 0px 2px 2px;
|
81 |
+
}
|
82 |
+
|
83 |
+
.iowd_quick_settings {
|
84 |
+
margin-bottom: 39px;
|
85 |
+
}
|
86 |
+
|
87 |
+
.iowd_quick_settings_row {
|
88 |
+
margin-bottom: 10px;
|
89 |
+
display: table;
|
90 |
+
width: 100%;
|
91 |
+
}
|
92 |
+
|
93 |
+
.iowd_quick_settings_cell {
|
94 |
+
display: table-cell;
|
95 |
+
vertical-align: top;
|
96 |
+
text-align: center;
|
97 |
+
}
|
98 |
+
|
99 |
+
.iowd_quick_settings_cell:last-child {
|
100 |
+
width: 40%;
|
101 |
+
}
|
102 |
+
|
103 |
+
.iowd-how-works {
|
104 |
+
color: #377BF1;
|
105 |
+
border-bottom: 1px solid #377BF1;
|
106 |
+
}
|
107 |
+
|
108 |
+
.iowd-how-works:hover {
|
109 |
+
color: #377BF1 !important;
|
110 |
+
border-bottom: 1px solid transparent;
|
111 |
+
}
|
112 |
+
|
113 |
+
.iowd-standart-mode-view {
|
114 |
+
display: table;
|
115 |
+
margin: 11px auto 33px;
|
116 |
+
}
|
117 |
+
|
118 |
+
.iowd-standart-cell {
|
119 |
+
display: table-cell;
|
120 |
+
padding: 5px 0px;
|
121 |
+
font-size: 16px;
|
122 |
+
border-top: 1px solid #2D3142;
|
123 |
+
border-bottom: 1px solid #2D3142;
|
124 |
+
width: 155px;
|
125 |
+
text-align: center;
|
126 |
+
cursor: pointer;
|
127 |
+
}
|
128 |
+
|
129 |
+
.iowd-standart-cell:first-child {
|
130 |
+
border-left: 1px solid #2D3142;
|
131 |
+
border-right: 1px solid #2D3142;
|
132 |
+
}
|
133 |
+
.iowd-standart-cell:last-child{
|
134 |
+
border-left: 1px solid #2D3142;
|
135 |
+
border-right: 1px solid #ddd;
|
136 |
+
border-top: 1px solid #ddd;
|
137 |
+
border-bottom: 1px solid #ddd;
|
138 |
+
}
|
139 |
+
|
140 |
+
.iowd-standart-cell:first-child {
|
141 |
+
border-top-left-radius: 2px;
|
142 |
+
border-bottom-left-radius: 2px;
|
143 |
+
}
|
144 |
+
|
145 |
+
.iowd-standart-cell:last-child {
|
146 |
+
border-top-right-radius: 2px;
|
147 |
+
border-bottom-right-radius: 2px;
|
148 |
+
}
|
149 |
+
|
150 |
+
.iowd-standart-cell-active, .iowd-standart-cell:hover {
|
151 |
+
background: #2D3142;
|
152 |
+
color: #fff;
|
153 |
+
}
|
154 |
+
|
155 |
+
.iowd-setings {
|
156 |
+
margin-top: 50px;
|
157 |
+
}
|
158 |
+
|
159 |
+
.iowd_stat_content{
|
160 |
+
margin-left: 15px;
|
161 |
+
border-radius: 2px;
|
162 |
+
}
|
163 |
+
|
164 |
+
.iowd_stat_content{
|
165 |
+
margin-top: 55px;
|
166 |
+
border-radius: 2px;
|
167 |
+
}
|
168 |
+
|
169 |
+
.iowd_limit_content{
|
170 |
+
margin-top: 20px;
|
171 |
+
margin-left: 15px;
|
172 |
+
}
|
173 |
+
|
174 |
+
.iowd-main {
|
175 |
+
margin-bottom: 10px;
|
176 |
+
text-align: center;
|
177 |
+
}
|
178 |
+
|
179 |
+
.attachment-row {
|
180 |
+
margin-bottom: 5px;
|
181 |
+
border-bottom: 1px solid #ccc;
|
182 |
+
padding: 10px 0px;
|
183 |
+
}
|
184 |
+
|
185 |
+
.iowd-media-seleced {
|
186 |
+
padding: 10px 0px;
|
187 |
+
max-height: 300px;
|
188 |
+
overflow: auto;
|
189 |
+
text-align: left;
|
190 |
+
}
|
191 |
+
|
192 |
+
.iowd-media-seleced-b {
|
193 |
+
font-size: 18px;
|
194 |
+
margin-top: 33px;
|
195 |
+
}
|
196 |
+
|
197 |
+
.iowd_stat-row {
|
198 |
+
display: table;
|
199 |
+
width: 100%;
|
200 |
+
border-bottom: 1px solid #ccc;
|
201 |
+
padding: 19px 0px;
|
202 |
+
font-size: 15px;
|
203 |
+
}
|
204 |
+
|
205 |
+
.iowd-stat-progress-bar, .iowd-loading-bar {
|
206 |
+
border-radius: 5px;
|
207 |
+
border: 1px solid #72777c;
|
208 |
+
}
|
209 |
+
|
210 |
+
.iowd-loading-bar {
|
211 |
+
display: none;
|
212 |
+
margin: 10px 0px;
|
213 |
+
}
|
214 |
+
|
215 |
+
.iowd_stat_content .iowd_stat-row:last-child {
|
216 |
+
border-bottom: none;
|
217 |
+
}
|
218 |
+
|
219 |
+
.iowd-stat-ratio {
|
220 |
+
text-align: center;
|
221 |
+
font-weight: bold;
|
222 |
+
margin-top: 4px;
|
223 |
+
}
|
224 |
+
|
225 |
+
.iowd-stat-progress-bar-inner, .iowd-loading-bar-inner {
|
226 |
+
background: #377BF1;
|
227 |
+
height: 3px;
|
228 |
+
border-radius: 5px;
|
229 |
+
width: 0px;
|
230 |
+
}
|
231 |
+
|
232 |
+
.iowd-loading-bar-inner {
|
233 |
+
/*background: -webkit-linear-gradient(left , #0193CD 30%, #66D4E5 80%, #0193CD 100%) repeat;*/
|
234 |
+
background: rgba(122, 194, 214, 1);
|
235 |
+
background: -moz-linear-gradient(left, rgba(122, 194, 214, 1) 0%, rgba(94, 178, 201, 1) 41%, rgba(63, 151, 166, 1) 100%);
|
236 |
+
background: -webkit-gradient(left top, right top, color-stop(0%, rgba(122, 194, 214, 1)), color-stop(41%, rgba(94, 178, 201, 1)), color-stop(100%, rgba(63, 151, 166, 1)));
|
237 |
+
background: -webkit-linear-gradient(left, rgba(122, 194, 214, 1) 0%, rgba(94, 178, 201, 1) 41%, rgba(63, 151, 166, 1) 100%);
|
238 |
+
background: -o-linear-gradient(left, rgba(122, 194, 214, 1) 0%, rgba(94, 178, 201, 1) 41%, rgba(63, 151, 166, 1) 100%);
|
239 |
+
background: -ms-linear-gradient(left, rgba(122, 194, 214, 1) 0%, rgba(94, 178, 201, 1) 41%, rgba(63, 151, 166, 1) 100%);
|
240 |
+
background: linear-gradient(to right, rgba(122, 194, 214, 1) 0%, rgba(94, 178, 201, 1) 41%, rgba(63, 151, 166, 1) 100%);
|
241 |
+
|
242 |
+
-webkit-background-size: 50% 100%;
|
243 |
+
-webkit-animation-name: moving-gradient;
|
244 |
+
-webkit-animation-duration: 1s;
|
245 |
+
-webkit-animation-iteration-count: infinite;
|
246 |
+
-webkit-animation-timing-function: linear;
|
247 |
+
}
|
248 |
+
|
249 |
+
.iowd_stat-cell {
|
250 |
+
display: table-cell;
|
251 |
+
}
|
252 |
+
|
253 |
+
.iowd_stat-cell:first-child {
|
254 |
+
width: 60%;
|
255 |
+
}
|
256 |
+
|
257 |
+
.iowd-help {
|
258 |
+
margin-top: 8px;
|
259 |
+
vertical-align: top;
|
260 |
+
}
|
261 |
+
|
262 |
+
.iowd-up-to-date {
|
263 |
+
background-image: url(img/check.png);
|
264 |
+
background-repeat: no-repeat;
|
265 |
+
background-position: right center;
|
266 |
+
padding-right: 36px;
|
267 |
+
background-size: 35px;
|
268 |
+
}
|
269 |
+
|
270 |
+
.iowd-optimized-txt {
|
271 |
+
background: rgba(229, 229, 229, 0.44);
|
272 |
+
padding: 10px;
|
273 |
+
border-radius: 2px;
|
274 |
+
text-align: center;
|
275 |
+
color: #72777c;
|
276 |
+
font-size: 18px;
|
277 |
+
}
|
278 |
+
|
279 |
+
.iowd {
|
280 |
+
background: #fff;
|
281 |
+
padding: 24px 31px;
|
282 |
+
margin: 30px;
|
283 |
+
border-radius: 2px;
|
284 |
+
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
285 |
+
}
|
286 |
+
|
287 |
+
.iowd_other_dirs_container{
|
288 |
+
margin-top: 20px;
|
289 |
+
}
|
290 |
+
|
291 |
+
.iowd_other_save_btn {
|
292 |
+
text-align: right;
|
293 |
+
}
|
294 |
+
|
295 |
+
.iowd-setings input[type=text], .iowd-setings input[type=number], .iowd-setings select, .iowd-setings textarea {
|
296 |
+
border-radius: 2px;
|
297 |
+
height: 30px;
|
298 |
+
}
|
299 |
+
|
300 |
+
.iowd-setings input[type=radio], .iowd-setings input[type=checkbox] {
|
301 |
+
margin: 0px 5px 0px 7px;
|
302 |
+
}
|
303 |
+
|
304 |
+
.iowd-table {
|
305 |
+
display: table;
|
306 |
+
width: 100%;
|
307 |
+
margin: 10px auto;
|
308 |
+
border-radius: 2px;
|
309 |
+
}
|
310 |
+
|
311 |
+
.iowd-table-row {
|
312 |
+
display: table-row;
|
313 |
+
}
|
314 |
+
|
315 |
+
.iowd-table-cell {
|
316 |
+
display: table-cell;
|
317 |
+
vertical-align: middle;
|
318 |
+
padding: 10px 25px;
|
319 |
+
border-bottom: 1px solid #eee;
|
320 |
+
}
|
321 |
+
|
322 |
+
.iowd-table .iowd-table-row .iowd-table-cell:first-child {
|
323 |
+
width: 43%;
|
324 |
+
}
|
325 |
+
|
326 |
+
.iowd-elem-650 {
|
327 |
+
width: 650px;
|
328 |
+
}
|
329 |
+
|
330 |
+
.iowd-elem-450 {
|
331 |
+
width: 450px;
|
332 |
+
}
|
333 |
+
|
334 |
+
.iowd-elem-250 {
|
335 |
+
width: 250px;
|
336 |
+
}
|
337 |
+
|
338 |
+
.iowd-elem-80 {
|
339 |
+
width: 80px;
|
340 |
+
}
|
341 |
+
|
342 |
+
.iowd-elem-110 {
|
343 |
+
width: 110px;
|
344 |
+
}
|
345 |
+
|
346 |
+
.iowd-clear:after {
|
347 |
+
content: "";
|
348 |
+
clear: both;
|
349 |
+
display: table;
|
350 |
+
}
|
351 |
+
|
352 |
+
.iowd-btn {
|
353 |
+
padding: 9px 20px 9px;
|
354 |
+
height: auto;
|
355 |
+
display: inline-block;
|
356 |
+
margin: 0;
|
357 |
+
border: 0;
|
358 |
+
border-radius: 2px;
|
359 |
+
-moz-border-radius: 2px;
|
360 |
+
cursor: pointer;
|
361 |
+
box-shadow: none;
|
362 |
+
-moz-transition: color 0.3s, opacity 0.3s;
|
363 |
+
transition: color 0.3s, opacity 0.3s;
|
364 |
+
text-shadow: none;
|
365 |
+
font-size: 16px;
|
366 |
+
color: #FFF !important;
|
367 |
+
outline: none;
|
368 |
+
}
|
369 |
+
|
370 |
+
.iowd-btn-small {
|
371 |
+
padding: 6px 15px 6px;
|
372 |
+
font-size: 14px;
|
373 |
+
}
|
374 |
+
|
375 |
+
.iowd-btn-primary {
|
376 |
+
background: #377BF1;
|
377 |
+
}
|
378 |
+
|
379 |
+
.iowd-btn-primary:hover, .iowd-btn-primary:focus {
|
380 |
+
background: #377BF1;
|
381 |
+
outline: none;
|
382 |
+
}
|
383 |
+
|
384 |
+
.iowd-btn-secondary {
|
385 |
+
background: #AEAEAE;
|
386 |
+
}
|
387 |
+
|
388 |
+
.iowd-btn-secondary:hover, .iowd-btn-secondary:focus {
|
389 |
+
background: #9E9E9E;
|
390 |
+
outline: none;
|
391 |
+
}
|
392 |
+
|
393 |
+
.iowd-btn-disabled {
|
394 |
+
background: #ddd;
|
395 |
+
color: #fff !important;
|
396 |
+
cursor: not-allowed;
|
397 |
+
pointer-events: all !important;
|
398 |
+
}
|
399 |
+
|
400 |
+
.iowd-btn-disabled:hover, .iowd-btn-disabled:focus {
|
401 |
+
background: #ddd;
|
402 |
+
outline: none;
|
403 |
+
}
|
404 |
+
|
405 |
+
.iowd-spinner {
|
406 |
+
display: none;
|
407 |
+
}
|
408 |
+
|
409 |
+
/* Settings */
|
410 |
+
.iowd_save_btn {
|
411 |
+
margin-top: 30px;
|
412 |
+
}
|
413 |
+
|
414 |
+
.iowd_tabs_1 {
|
415 |
+
border-bottom: 1px solid #dddfe3;
|
416 |
+
}
|
417 |
+
|
418 |
+
.iowd_tabs_1 li {
|
419 |
+
width: auto;
|
420 |
+
background: none;
|
421 |
+
box-shadow: none;
|
422 |
+
float: left;
|
423 |
+
margin: 0;
|
424 |
+
padding: 0;
|
425 |
+
cursor: pointer;
|
426 |
+
position: relative;
|
427 |
+
|
428 |
+
}
|
429 |
+
|
430 |
+
.iowd_tabs_1 li a {
|
431 |
+
display: block;
|
432 |
+
padding: 13px 30px;
|
433 |
+
border-top: 3px solid transparent;
|
434 |
+
border-right: 1px solid transparent;
|
435 |
+
border-left: 1px solid transparent;
|
436 |
+
text-decoration: none;
|
437 |
+
color: #6e7990;
|
438 |
+
font-size: 16px;
|
439 |
+
font-weight: 400;
|
440 |
+
position: relative;
|
441 |
+
}
|
442 |
+
|
443 |
+
.iowd_tabs_1 li a:hover:after, .iowd_tabs_active:after {
|
444 |
+
content: "";
|
445 |
+
height: 4px;
|
446 |
+
background: #fff;
|
447 |
+
position: absolute;
|
448 |
+
bottom: -4px;
|
449 |
+
top: auto;
|
450 |
+
display: block;
|
451 |
+
width: 100%;
|
452 |
+
left: 0;
|
453 |
+
}
|
454 |
+
|
455 |
+
.iowd_tabs_1 li a:hover, .iowd_tabs_active {
|
456 |
+
border-top-color: #377BF1 !important;
|
457 |
+
color: #377BF1 !important;
|
458 |
+
border-right: 1px solid #dddfe3 !important;
|
459 |
+
border-left: 1px solid #dddfe3 !important;
|
460 |
+
}
|
461 |
+
|
462 |
+
.iowd-dir-paths {
|
463 |
+
margin: 10px 0px;
|
464 |
+
}
|
465 |
+
|
466 |
+
.iowd_other_folders_row {
|
467 |
+
padding: 10px 0px;
|
468 |
+
border-bottom: 1px solid #ccc;
|
469 |
+
}
|
470 |
+
|
471 |
+
.iowd-show-images {
|
472 |
+
background: #ddd;
|
473 |
+
padding: 5px 6px;
|
474 |
+
border-radius: 6px;
|
475 |
+
margin-left: 13px;
|
476 |
+
cursor: pointer;
|
477 |
+
}
|
478 |
+
|
479 |
+
.folder-images {
|
480 |
+
margin-top: 10px;
|
481 |
+
background: #fff;
|
482 |
+
padding: 10px;
|
483 |
+
max-height: 300px;
|
484 |
+
overflow: auto;
|
485 |
+
}
|
486 |
+
|
487 |
+
.folder-images div {
|
488 |
+
border-bottom: 1px solid #ccc;
|
489 |
+
padding: 10px 0px;
|
490 |
+
|
491 |
+
}
|
492 |
+
|
493 |
+
.iowd-popup, .iowd-popup-help {
|
494 |
+
display: none;
|
495 |
+
}
|
496 |
+
|
497 |
+
.iowd_other_folders_container, .iowd-how-works-container {
|
498 |
+
position: fixed;
|
499 |
+
top: 0;
|
500 |
+
left: 0;
|
501 |
+
right: 0;
|
502 |
+
bottom: 0;
|
503 |
+
margin: auto;
|
504 |
+
z-index: 444;
|
505 |
+
}
|
506 |
+
|
507 |
+
.iowd_other_folders_container {
|
508 |
+
width: 700px;
|
509 |
+
}
|
510 |
+
|
511 |
+
.iowd-how-works-container {
|
512 |
+
width: 68%;
|
513 |
+
height: 92%;
|
514 |
+
}
|
515 |
+
|
516 |
+
.iowd_folders {
|
517 |
+
background: #fff;
|
518 |
+
padding: 23px;
|
519 |
+
border-radius: 2px;
|
520 |
+
display: flex;
|
521 |
+
flex-direction: column;
|
522 |
+
width: 100%;
|
523 |
+
box-sizing: border-box;
|
524 |
+
margin-top: 82px;
|
525 |
+
overflow: auto;
|
526 |
+
max-height: 60%;
|
527 |
+
box-shadow: -1px -1px 13px #32373c;
|
528 |
+
font-size: 0;
|
529 |
+
overflow: hidden;
|
530 |
+
}
|
531 |
+
|
532 |
+
.header {
|
533 |
+
flex-grow: 0;
|
534 |
+
flex-shrink: 0;
|
535 |
+
}
|
536 |
+
|
537 |
+
.body-wrap {
|
538 |
+
flex-grow: 1;
|
539 |
+
flex-shrink: 1;
|
540 |
+
font-size: 15px;
|
541 |
+
overflow-y: auto;
|
542 |
+
}
|
543 |
+
|
544 |
+
.iowd-selected_bottom {
|
545 |
+
flex-grow: 0;
|
546 |
+
flex-shrink: 0;
|
547 |
+
}
|
548 |
+
|
549 |
+
.iowd_update_dirs, .iowd_update_alreday_used {
|
550 |
+
vertical-align: text-top;
|
551 |
+
padding-left: 15px;
|
552 |
+
width: 20px;
|
553 |
+
cursor: pointer;
|
554 |
+
}
|
555 |
+
|
556 |
+
.iowd_other_folders_container h2 {
|
557 |
+
border-bottom: 1px solid #ccc;
|
558 |
+
padding: 14px 0px;
|
559 |
+
margin: 0;
|
560 |
+
color: #377BF1;
|
561 |
+
font-size: 21px;
|
562 |
+
text-transform: uppercase;
|
563 |
+
}
|
564 |
+
|
565 |
+
.iowd_other_folders_container ul ul {
|
566 |
+
padding-left: 20px;
|
567 |
+
}
|
568 |
+
|
569 |
+
.iowd_other_folders_container ul ul {
|
570 |
+
display: none;
|
571 |
+
}
|
572 |
+
|
573 |
+
.iowd_other_folders_container a, .iowd_other_folders_container a:hover {
|
574 |
+
color: #23282d;
|
575 |
+
text-decoration: none !important;
|
576 |
+
}
|
577 |
+
|
578 |
+
.iowd-active-folder > a {
|
579 |
+
color: #00ACCA !important;
|
580 |
+
}
|
581 |
+
|
582 |
+
.iowd-dir-tree-icon {
|
583 |
+
width: 18px;
|
584 |
+
vertical-align: middle;
|
585 |
+
padding: 5px 9px 5px 5px;
|
586 |
+
}
|
587 |
+
|
588 |
+
.iowd-select-dir {
|
589 |
+
text-align: right;
|
590 |
+
}
|
591 |
+
|
592 |
+
.iowd-selected-dir {
|
593 |
+
width: 100%;
|
594 |
+
margin: 10px 0px;
|
595 |
+
}
|
596 |
+
|
597 |
+
.iowd-popup-close, .iowd-popup-help-close {
|
598 |
+
font-size: 18px;
|
599 |
+
font-weight: bold;
|
600 |
+
text-align: right;
|
601 |
+
cursor: pointer;
|
602 |
+
}
|
603 |
+
|
604 |
+
.iowd-compare {
|
605 |
+
display: table;
|
606 |
+
width: 100%;
|
607 |
+
}
|
608 |
+
|
609 |
+
.iowd-compare-cell {
|
610 |
+
display: table-cell;
|
611 |
+
vertical-align: middle;
|
612 |
+
text-align: center;
|
613 |
+
text-transform: uppercase;
|
614 |
+
}
|
615 |
+
|
616 |
+
.iowd-compare-cell:first-child {
|
617 |
+
padding-right: 5px;
|
618 |
+
}
|
619 |
+
|
620 |
+
.iowd-compare-cell:last-child {
|
621 |
+
padding-left: 5px;
|
622 |
+
}
|
623 |
+
|
624 |
+
.iowd-help-stat-container {
|
625 |
+
border-bottom: 1px solid;
|
626 |
+
border-right: 1px solid;
|
627 |
+
border-left: 1px solid;
|
628 |
+
margin-top: -34px;
|
629 |
+
}
|
630 |
+
|
631 |
+
.iowd-help-stat {
|
632 |
+
display: table;
|
633 |
+
margin: 10px auto;
|
634 |
+
}
|
635 |
+
|
636 |
+
.iowd-help-stat h3 {
|
637 |
+
color: #377BF1;
|
638 |
+
font-weight: normal;
|
639 |
+
font-size: 17px;
|
640 |
+
}
|
641 |
+
|
642 |
+
.iowd-help-stat img {
|
643 |
+
vertical-align: middle;
|
644 |
+
padding-right: 5px;
|
645 |
+
}
|
646 |
+
|
647 |
+
.iowd-help-up-to {
|
648 |
+
color: #377BF1;
|
649 |
+
text-transform: uppercase;
|
650 |
+
}
|
651 |
+
|
652 |
+
.iowd-help-stat p {
|
653 |
+
font-size: 15px;
|
654 |
+
}
|
655 |
+
|
656 |
+
.iowd_remove, .iowd_remove_img, .iowd_remove_attachment {
|
657 |
+
color: #878787;
|
658 |
+
cursor: pointer;
|
659 |
+
display: inline-block;
|
660 |
+
float: right;
|
661 |
+
font-size: 18px;
|
662 |
+
font-weight: bold;
|
663 |
+
margin-right: 16px;
|
664 |
+
}
|
665 |
+
|
666 |
+
.iowd_msg_div {
|
667 |
+
display: none;
|
668 |
+
background: #fff;
|
669 |
+
padding: 15px;
|
670 |
+
margin: 10px 30px;
|
671 |
+
position: relative;
|
672 |
+
border: 1px solid #eee;
|
673 |
+
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
674 |
+
}
|
675 |
+
|
676 |
+
.iowd_msg_div_msg {
|
677 |
+
border-left: 2px solid green;
|
678 |
+
}
|
679 |
+
|
680 |
+
.iowd_msg_div_error {
|
681 |
+
border-left: 2px solid red !important;
|
682 |
+
}
|
683 |
+
|
684 |
+
.iowd_msg_div_close {
|
685 |
+
position: absolute;
|
686 |
+
right: 5px;
|
687 |
+
top: 2px;
|
688 |
+
font-weight: bold;
|
689 |
+
color: #6f6c6c;
|
690 |
+
cursor: pointer;
|
691 |
+
}
|
692 |
+
|
693 |
+
.iowd-popup ::-webkit-scrollbar, .iowd_header ::-webkit-scrollbar, .iowd ::-webkit-scrollbar {
|
694 |
+
width: 8px;
|
695 |
+
background: rgba(204, 204, 204, 0.38);
|
696 |
+
}
|
697 |
+
|
698 |
+
.iowd-popup ::-webkit-scrollbar-thumb, .iowd_header ::-webkit-scrollbar-thumb, .iowd ::-webkit-scrollbar-thumb {
|
699 |
+
border-radius: 2px;
|
700 |
+
background: #a0a5aa;
|
701 |
+
}
|
702 |
+
|
703 |
+
.iowd-opacity {
|
704 |
+
position: fixed;
|
705 |
+
top: 0;
|
706 |
+
left: 0;
|
707 |
+
right: 0;
|
708 |
+
bottom: 0;
|
709 |
+
background: #000;
|
710 |
+
opacity: 0.5;
|
711 |
+
z-index: 44;
|
712 |
+
}
|
713 |
+
|
714 |
+
/* reports */
|
715 |
+
.iowd_reports_container {
|
716 |
+
padding: 10px;
|
717 |
+
}
|
718 |
+
|
719 |
+
.iowd_reports_filters {
|
720 |
+
margin-top: 15px;
|
721 |
+
margin-bottom: 15px;
|
722 |
+
}
|
723 |
+
|
724 |
+
.iowd_reports_table table {
|
725 |
+
border-collapse: collapse;
|
726 |
+
width: 34%;
|
727 |
+
}
|
728 |
+
|
729 |
+
.iowd_reports_table .main_tr {
|
730 |
+
display: table;
|
731 |
+
margin-bottom: 5px;
|
732 |
+
border: 1px solid #ccc;
|
733 |
+
width: 100%;
|
734 |
+
border-radius: 2px;
|
735 |
+
}
|
736 |
+
|
737 |
+
.iowd_reports_table .iowd_reports_table_td {
|
738 |
+
padding: 22px 22px 0px 22px;
|
739 |
+
vertical-align: top;
|
740 |
+
display: table-cell;
|
741 |
+
}
|
742 |
+
|
743 |
+
.iowd_reports_table .iowd_reports_table_td:first-child {
|
744 |
+
width: 200px;
|
745 |
+
}
|
746 |
+
|
747 |
+
.iowd-report-block {
|
748 |
+
margin-bottom: 22px;
|
749 |
+
}
|
750 |
+
|
751 |
+
.iowd-report-block img {
|
752 |
+
max-width: 150px;
|
753 |
+
}
|
754 |
+
|
755 |
+
.iowd-blue-txt {
|
756 |
+
color: #377BF1;
|
757 |
+
}
|
758 |
+
|
759 |
+
.iowd_report_search, .iowd_report_reset {
|
760 |
+
width: 23px;
|
761 |
+
cursor: pointer;
|
762 |
+
}
|
763 |
+
|
764 |
+
/*pagination */
|
765 |
+
.iowd-paging-nav {
|
766 |
+
margin: 10px 0px;
|
767 |
+
text-align: right;
|
768 |
+
width: 98%;
|
769 |
+
}
|
770 |
+
|
771 |
+
.iowd-paging-nav input {
|
772 |
+
width: 37px;
|
773 |
+
vertical-align: top;
|
774 |
+
}
|
775 |
+
|
776 |
+
.iowd-paging-nav .iowd_page_separator {
|
777 |
+
height: 18px;
|
778 |
+
margin: 0 4px;
|
779 |
+
padding: 0 0 0 4px;
|
780 |
+
border-left: 1.5px solid #ccc;
|
781 |
+
}
|
782 |
+
|
783 |
+
.iowd_page_count {
|
784 |
+
height: 18px;
|
785 |
+
margin: 0 4px;
|
786 |
+
padding: 0 4px 0 0;
|
787 |
+
border-right: 1.5px solid #ccc;
|
788 |
+
}
|
789 |
+
|
790 |
+
.iowd-paging-nav a {
|
791 |
+
margin: auto 1px;
|
792 |
+
text-decoration: none;
|
793 |
+
display: inline-block;
|
794 |
+
color: white;
|
795 |
+
border-radius: 2px;
|
796 |
+
width: 16px;
|
797 |
+
height: 16px;
|
798 |
+
vertical-align: middle
|
799 |
+
}
|
800 |
+
|
801 |
+
.iowd-paging-nav a:first-child {
|
802 |
+
background-image: url(img/ui-icons_888888_256x240.png) /*{iconsDefault}*/;
|
803 |
+
background-position: -80px -160px;
|
804 |
+
}
|
805 |
+
|
806 |
+
.iowd-paging-nav a:nth-child(2) {
|
807 |
+
background-image: url(img/ui-icons_888888_256x240.png) /*{iconsDefault}*/;
|
808 |
+
background-position: -48px -160px;
|
809 |
+
}
|
810 |
+
|
811 |
+
.iowd-paging-nav .iowd_next_link {
|
812 |
+
background-image: url(img/ui-icons_888888_256x240.png) /*{iconsDefault}*/;
|
813 |
+
background-position: -32px -160px;
|
814 |
+
}
|
815 |
+
|
816 |
+
.iowd-paging-nav .last_link {
|
817 |
+
background-image: url(img/ui-icons_888888_256x240.png) /*{iconsDefault}*/;
|
818 |
+
background-position: -64px -160px;
|
819 |
+
}
|
820 |
+
|
821 |
+
@-webkit-keyframes moving-gradient {
|
822 |
+
0% {
|
823 |
+
background-position: left bottom;
|
824 |
+
}
|
825 |
+
|
826 |
+
100% {
|
827 |
+
background-position: right bottom;
|
828 |
+
}
|
829 |
+
}
|
830 |
+
|
831 |
+
|
832 |
+
.iowd-step {
|
833 |
+
text-align: center;
|
834 |
+
font-weight: bold;
|
835 |
+
color: #194e56;
|
836 |
+
}
|
837 |
+
|
838 |
+
.calendar_button {
|
839 |
+
background: url(img/calendar.png) no-repeat center !important;
|
840 |
+
width: 30px !important;
|
841 |
+
height: 30px !important;
|
842 |
+
vertical-align: top;
|
843 |
+
cursor: pointer;
|
844 |
+
}
|
845 |
+
|
846 |
+
.calendar_button:focus {
|
847 |
+
outline: none !important;
|
848 |
+
}
|
849 |
+
|
850 |
+
.iowd-report-loader {
|
851 |
+
position: absolute;
|
852 |
+
top: 0;
|
853 |
+
left: 0;
|
854 |
+
right: 0;
|
855 |
+
bottom: 0;
|
856 |
+
margin: auto;
|
857 |
+
display: none;
|
858 |
+
}
|
859 |
+
|
860 |
+
.iowd-report-loader-class {
|
861 |
+
position: relative;
|
862 |
+
opacity: 0.4;
|
863 |
+
}
|
864 |
+
|
865 |
+
.iowd-clear-history {
|
866 |
+
padding: 5px 11px 5px 28px;
|
867 |
+
background-repeat: no-repeat;
|
868 |
+
border: 0;
|
869 |
+
background-position: 4px center;
|
870 |
+
background-size: 16px;
|
871 |
+
cursor: pointer;
|
872 |
+
outline: none !important;
|
873 |
+
border-radius: 2px;
|
874 |
+
}
|
875 |
+
|
876 |
+
.iowd-clear-history-bulk {
|
877 |
+
color: #fff;
|
878 |
+
background-color: #2D3142;
|
879 |
+
background-image: url(img/delete-white.png);
|
880 |
+
}
|
881 |
+
|
882 |
+
.iowd-clear-history-single {
|
883 |
+
color: #686668;
|
884 |
+
background-color: #fff;
|
885 |
+
|
886 |
+
background-image: url(img/delete.png);
|
887 |
+
}
|
888 |
+
|
889 |
+
.iowd-report-more-cont {
|
890 |
+
margin-top: 10px;
|
891 |
+
text-align: center;
|
892 |
+
}
|
893 |
+
|
894 |
+
.iowd-more {
|
895 |
+
border: 1px solid #ccc;
|
896 |
+
display: inline-block;
|
897 |
+
padding: 5px 10px;
|
898 |
+
cursor: pointer;
|
899 |
+
border-radius: 2px;
|
900 |
+
}
|
901 |
+
|
902 |
+
.iowd-padding-left {
|
903 |
+
padding-left: 5px;
|
904 |
+
}
|
905 |
+
|
906 |
+
.iowd-switch {
|
907 |
+
position: relative;
|
908 |
+
display: inline-block;
|
909 |
+
width: 52px;
|
910 |
+
height: 20px;
|
911 |
+
}
|
912 |
+
|
913 |
+
/* Hide default HTML checkbox */
|
914 |
+
.iowd-switch input {
|
915 |
+
display: none;
|
916 |
+
}
|
917 |
+
|
918 |
+
/* The slider */
|
919 |
+
.iowd-slider {
|
920 |
+
position: absolute;
|
921 |
+
cursor: pointer;
|
922 |
+
top: 0;
|
923 |
+
left: 0;
|
924 |
+
right: 0;
|
925 |
+
bottom: 0;
|
926 |
+
-webkit-transition: .4s;
|
927 |
+
transition: .4s;
|
928 |
+
border-radius: 2px;
|
929 |
+
border: 1px solid #ccc;
|
930 |
+
}
|
931 |
+
|
932 |
+
.iowd-slider:before {
|
933 |
+
position: absolute;
|
934 |
+
content: "";
|
935 |
+
height: 18px;
|
936 |
+
width: 25px;
|
937 |
+
-webkit-transition: .4s;
|
938 |
+
transition: .4s;
|
939 |
+
left: -1px;
|
940 |
+
bottom: 0;
|
941 |
+
right: 0;
|
942 |
+
background-color: #ccc;
|
943 |
+
}
|
944 |
+
|
945 |
+
input:checked + .iowd-slider {
|
946 |
+
background-color: #fff;
|
947 |
+
border: 1px solid #377BF1;
|
948 |
+
}
|
949 |
+
|
950 |
+
input:focus + .iowd-slider {
|
951 |
+
box-shadow: 0 0 1px #2196F3;
|
952 |
+
}
|
953 |
+
|
954 |
+
input:checked + .iowd-slider:before {
|
955 |
+
-webkit-transform: translateX(26px);
|
956 |
+
-ms-transform: translateX(26px);
|
957 |
+
transform: translateX(26px);
|
958 |
+
background-color: #2196F3;
|
959 |
+
}
|
960 |
+
|
961 |
+
/* tooltips */
|
962 |
+
.ui-tooltip {
|
963 |
+
padding: 5px;
|
964 |
+
position: absolute;
|
965 |
+
z-index: 9999;
|
966 |
+
max-width: 500px;
|
967 |
+
-webkit-box-shadow: 0 0 5px #aaa;
|
968 |
+
box-shadow: 0 0 5px #aaa;
|
969 |
+
border-radius: 2px;
|
970 |
+
background: rgba(0, 0, 0, 0.8);
|
971 |
+
color: #fff;
|
972 |
+
font-size: 1em;
|
973 |
+
}
|
974 |
+
|
975 |
+
.iowd_optimizing_msg {
|
976 |
+
display: none;
|
977 |
+
text-align: center;
|
978 |
+
font-size: 16px;
|
979 |
+
padding: 10px;
|
980 |
+
border-radius: 2px;
|
981 |
+
margin: 9px 0px;
|
982 |
+
text-transform: uppercase;
|
983 |
+
box-shadow: 0 1px 6px rgba(0, 0, 0, 0.1);
|
984 |
+
color: #377BF1;
|
985 |
+
background: rgba(55, 123, 241, 0.16);
|
986 |
+
}
|
987 |
+
|
988 |
+
.iowd_optimizing_msg {
|
989 |
+
animation: blinker 1s linear;
|
990 |
+
-webkit-animation-iteration-count: 2; /* Safari 4.0 - 8.0 */
|
991 |
+
animation-iteration-count: 2;
|
992 |
+
}
|
993 |
+
|
994 |
+
@keyframes blinker {
|
995 |
+
50% {
|
996 |
+
opacity: 0.2;
|
997 |
+
}
|
998 |
+
}
|
999 |
+
|
1000 |
+
.iowd-abort{
|
1001 |
+
display: none;
|
1002 |
+
color: #fff!important;
|
1003 |
+
background: rgba(165, 51, 51, 0.97);
|
1004 |
+
padding: 1px 11px 2px;
|
1005 |
+
margin-top: 7px;
|
1006 |
+
border-radius: 3px;
|
1007 |
+
}
|
1008 |
+
|
1009 |
+
.iowd-pro{
|
1010 |
+
color: rgba(165, 51, 51, 0.97);
|
1011 |
+
}
|
1012 |
+
|
1013 |
+
.iowd-disable{
|
1014 |
+
cursor: not-allowed !important;
|
1015 |
+
}
|
1016 |
+
|
1017 |
+
.iowd_upgrade{
|
1018 |
+
clear: both;
|
1019 |
+
padding: 0px 15px;
|
1020 |
+
background: #fff;
|
1021 |
+
margin: 6px 30px;
|
1022 |
+
color: #6e7990;
|
1023 |
+
font-size: 14px;
|
1024 |
+
font-weight: bold;
|
1025 |
+
line-height: 30px;
|
1026 |
+
|
1027 |
+
}
|
1028 |
+
.iowd_upgrade .wd-table{
|
1029 |
+
background-color: #D8D8D8;
|
1030 |
+
padding: 1px 5px;
|
1031 |
+
font-size: 11px;
|
1032 |
+
display: table;
|
1033 |
+
}
|
1034 |
+
.iowd_upgrade .wd-cell{
|
1035 |
+
display: table-cell;
|
1036 |
+
}
|
1037 |
+
.iowd_upgrade .wd-cell:first-child{
|
1038 |
+
padding-right: 2px;
|
1039 |
+
}
|
1040 |
+
.iowd_upgrade a, .iowd_upgrade a:hover {
|
1041 |
+
text-decoration: none !important;
|
1042 |
+
}
|
1043 |
+
.iowd_upgrade img {
|
1044 |
+
vertical-align: middle;
|
1045 |
+
}
|
1046 |
+
.wd-left{
|
1047 |
+
float:left;
|
1048 |
+
}
|
1049 |
+
.wd-right{
|
1050 |
+
float:right;
|
1051 |
+
}
|
1052 |
+
.wd-clear:after{
|
1053 |
+
clear:both;
|
1054 |
+
content:"";
|
1055 |
+
display:table;
|
1056 |
+
}
|
1057 |
+
|
1058 |
+
|
assets/css/calendar-jos.css
ADDED
@@ -0,0 +1,212 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* The main calendar widget. DIV containing a table. */
|
2 |
+
|
3 |
+
/* Form Wordpress. */
|
4 |
+
.calendar .button {
|
5 |
+
display: table-cell !important;
|
6 |
+
}
|
7 |
+
|
8 |
+
div.calendar {
|
9 |
+
position: relative;
|
10 |
+
z-index: 100;
|
11 |
+
width: 226px;
|
12 |
+
}
|
13 |
+
|
14 |
+
.calendar,
|
15 |
+
.calendar table {
|
16 |
+
border: 1px solid #cccccc;
|
17 |
+
font-size: 11px;
|
18 |
+
color: #000;
|
19 |
+
cursor: default;
|
20 |
+
background: #efefef;
|
21 |
+
font-family: arial, verdana, sans-serif;
|
22 |
+
margin: 0;
|
23 |
+
line-height: 1.7;
|
24 |
+
}
|
25 |
+
|
26 |
+
/* Header part -- contains navigation buttons and day names. */
|
27 |
+
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
|
28 |
+
text-align: center; /* They are the navigation buttons */
|
29 |
+
padding: 2px; /* Make the buttons seem like they're pressing */
|
30 |
+
border: 0px;
|
31 |
+
height: inherit;
|
32 |
+
|
33 |
+
}
|
34 |
+
|
35 |
+
.wdform_table1 .button,
|
36 |
+
#formMakerDiv1 .button,
|
37 |
+
.submitdate_fc .button,
|
38 |
+
.main .button {
|
39 |
+
-webkit-border-radius: 11px !important;;
|
40 |
+
border-radius: 11px !important;;
|
41 |
+
text-shadow: white 0px 1px 0px;
|
42 |
+
background-origin: padding-box;
|
43 |
+
border-bottom-width: 1px;
|
44 |
+
border-left-width: 1px;
|
45 |
+
border-right-width: 1px;
|
46 |
+
border-top-width: 1px;
|
47 |
+
}
|
48 |
+
|
49 |
+
.calendar thead .title { /* This holds the current "month, year" */
|
50 |
+
font-weight: bold; /* Pressing it will take you to the current date */
|
51 |
+
text-align: center;
|
52 |
+
background: #333333;
|
53 |
+
color: #ffffff;
|
54 |
+
padding: 2px;
|
55 |
+
}
|
56 |
+
|
57 |
+
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
|
58 |
+
background: #dedede;
|
59 |
+
color: #000;
|
60 |
+
}
|
61 |
+
|
62 |
+
.calendar thead .name { /* Cells <TD> containing the day names */
|
63 |
+
border-bottom: 1px solid #cccccc;
|
64 |
+
padding: 2px;
|
65 |
+
text-align: center;
|
66 |
+
color: #000;
|
67 |
+
}
|
68 |
+
|
69 |
+
.calendar thead .weekend { /* How a weekend day name shows in header */
|
70 |
+
color: #666666 !important;
|
71 |
+
}
|
72 |
+
|
73 |
+
.calendar thead .hilite { /* How do the buttons in header appear when hover */
|
74 |
+
background: #bbbbbb;
|
75 |
+
color: #000000;
|
76 |
+
border: 1px solid #cccccc;
|
77 |
+
padding: 1px;
|
78 |
+
}
|
79 |
+
|
80 |
+
.calendar thead .active { /* Active (pressed) buttons in header */
|
81 |
+
background: #c77;
|
82 |
+
padding: 2px 0px 0px 2px;
|
83 |
+
}
|
84 |
+
|
85 |
+
.calendar thead .daynames { /* Row <TR> containing the day names */
|
86 |
+
background: #dddddd;
|
87 |
+
}
|
88 |
+
|
89 |
+
/* The body part -- contains all the days in month. */
|
90 |
+
|
91 |
+
.calendar tbody .day { /* Cells <TD> containing month days dates */
|
92 |
+
width: 2em;
|
93 |
+
text-align: right;
|
94 |
+
padding: 2px 4px 2px 2px;
|
95 |
+
}
|
96 |
+
|
97 |
+
.calendar table .wn {
|
98 |
+
padding: 2px 3px 2px 2px;
|
99 |
+
border-right: 1px solid #cccccc;
|
100 |
+
background: #dddddd;
|
101 |
+
}
|
102 |
+
|
103 |
+
.calendar tbody .rowhilite td {
|
104 |
+
background: #666666;
|
105 |
+
color: #ffffff;
|
106 |
+
}
|
107 |
+
|
108 |
+
.calendar tbody .rowhilite td.wn {
|
109 |
+
background: #666666;
|
110 |
+
color: #ffffff;
|
111 |
+
}
|
112 |
+
|
113 |
+
.calendar table {
|
114 |
+
border-collapse: inherit !important;
|
115 |
+
}
|
116 |
+
|
117 |
+
.calendar tbody td.hilite { /* Hovered cells <TD> */
|
118 |
+
background: #999999;
|
119 |
+
padding: 1px 3px 1px 1px;
|
120 |
+
border: 1px solid #666666;
|
121 |
+
}
|
122 |
+
|
123 |
+
.calendar tbody td.active { /* Active (pressed) cells <TD> */
|
124 |
+
background: #000000;
|
125 |
+
color: #ffffff;
|
126 |
+
padding: 2px 2px 0px 2px;
|
127 |
+
}
|
128 |
+
|
129 |
+
.calendar tbody td.selected { /* Cell showing today date */
|
130 |
+
font-weight: bold;
|
131 |
+
border: 1px solid #000;
|
132 |
+
padding: 1px 3px 1px 1px;
|
133 |
+
background: #000000;
|
134 |
+
color: #ffffff;
|
135 |
+
}
|
136 |
+
|
137 |
+
.calendar tbody td.weekend { /* Cells showing weekend days */
|
138 |
+
color: #cccccc;
|
139 |
+
}
|
140 |
+
|
141 |
+
.calendar tbody td.today {
|
142 |
+
font-weight: bold;
|
143 |
+
}
|
144 |
+
|
145 |
+
.calendar tbody .disabled {
|
146 |
+
color: #999;
|
147 |
+
}
|
148 |
+
|
149 |
+
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
|
150 |
+
visibility: hidden;
|
151 |
+
padding: 0;
|
152 |
+
}
|
153 |
+
|
154 |
+
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
|
155 |
+
display: none;
|
156 |
+
}
|
157 |
+
|
158 |
+
/* The footer part -- status bar and "Close" button */
|
159 |
+
|
160 |
+
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
|
161 |
+
text-align: center;
|
162 |
+
background: #cccccc;
|
163 |
+
color: #000;
|
164 |
+
}
|
165 |
+
|
166 |
+
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
|
167 |
+
border-top: 1px solid #cccccc;
|
168 |
+
background: #efefef;
|
169 |
+
color: #000000;
|
170 |
+
}
|
171 |
+
|
172 |
+
.calendar tfoot .hilite { /* Hover style for buttons in footer */
|
173 |
+
background: #666666;
|
174 |
+
border: 1px solid #f40;
|
175 |
+
padding: 1px;
|
176 |
+
}
|
177 |
+
|
178 |
+
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
|
179 |
+
background: #999999;
|
180 |
+
padding: 2px 0px 0px 2px;
|
181 |
+
}
|
182 |
+
|
183 |
+
/* Combo boxes (menus that display months/years for direct selection) */
|
184 |
+
.combo {
|
185 |
+
position: absolute;
|
186 |
+
display: none;
|
187 |
+
top: 0px;
|
188 |
+
left: 0px;
|
189 |
+
width: 4em;
|
190 |
+
cursor: default;
|
191 |
+
border: 1px solid #655;
|
192 |
+
background: #ffffff;
|
193 |
+
color: #000;
|
194 |
+
font-size: smaller;
|
195 |
+
}
|
196 |
+
|
197 |
+
.combo .label {
|
198 |
+
width: 100%;
|
199 |
+
text-align: center;
|
200 |
+
}
|
201 |
+
|
202 |
+
.combo .hilite {
|
203 |
+
background: #fc8;
|
204 |
+
}
|
205 |
+
|
206 |
+
.combo .active {
|
207 |
+
border-top: 1px solid #cccccc;
|
208 |
+
border-bottom: 1px solid #cccccc;
|
209 |
+
background: #efefef;
|
210 |
+
font-weight: bold;
|
211 |
+
|
212 |
+
}
|
assets/css/img/calendar.png
ADDED
Binary file
|
assets/css/img/check.png
ADDED
Binary file
|
assets/css/img/delete-white.png
ADDED
Binary file
|
assets/css/img/delete.png
ADDED
Binary file
|
assets/css/img/ui-icons_888888_256x240.png
ADDED
Binary file
|
assets/css/img/web-dorado.png
ADDED
Binary file
|
assets/img/document.png
ADDED
Binary file
|
assets/img/folder-open.png
ADDED
Binary file
|
assets/img/folder.png
ADDED
Binary file
|
assets/img/help.jpg
ADDED
Binary file
|
assets/img/helpbalanced.jpg
ADDED
Binary file
|
assets/img/helpconservative.jpg
ADDED
Binary file
|
assets/img/helpextreme.jpg
ADDED
Binary file
|
assets/img/icon.png
ADDED
Binary file
|
assets/img/minus.png
ADDED
Binary file
|
assets/img/no_image.png
ADDED
Binary file
|
assets/img/plus.png
ADDED
Binary file
|
assets/img/reset.png
ADDED
Binary file
|
assets/img/search.png
ADDED
Binary file
|
assets/img/spinner.gif
ADDED
Binary file
|
assets/img/web-dorado.png
ADDED
Binary file
|
assets/js/admin_main.js
ADDED
@@ -0,0 +1,271 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var api = new iowdAPI();
|
2 |
+
api.setApiUrl(iowd.ajaxURL);
|
3 |
+
|
4 |
+
jQuery(document).ready(function () {
|
5 |
+
|
6 |
+
if(iowd.iowd_optimizing == 1){
|
7 |
+
finishOptimizing(0, 25);
|
8 |
+
}
|
9 |
+
|
10 |
+
jQuery(document).on("keypress", "[type=text], [type=number]", function (event) {
|
11 |
+
event = event || window.event;
|
12 |
+
if (event.keyCode == 13) {
|
13 |
+
return false;
|
14 |
+
}
|
15 |
+
});
|
16 |
+
|
17 |
+
jQuery(document).on("click", ".iowd-abort", function(){
|
18 |
+
iowdAbort(this);
|
19 |
+
return false;
|
20 |
+
});
|
21 |
+
|
22 |
+
|
23 |
+
// single optimizing
|
24 |
+
jQuery(document).on('click', '.iowd-optimize', function () {
|
25 |
+
var postId = jQuery(this).attr("data-id");
|
26 |
+
var data = {
|
27 |
+
action: "get_attachment_data",
|
28 |
+
nonce_iowd: iowd.nonce,
|
29 |
+
ID: postId
|
30 |
+
};
|
31 |
+
jQuery(this).find(".iowd-spinner").show();
|
32 |
+
|
33 |
+
jQuery.post(iowd.ajaxURL, data, function () {
|
34 |
+
}).done(function (response) {
|
35 |
+
response = JSON.parse(response);
|
36 |
+
if(response.status == "error"){
|
37 |
+
var msg = response["error"];
|
38 |
+
if(response["error"] == "limit_error"){
|
39 |
+
msg = "Your limitation has expired for current month.";
|
40 |
+
} else if(response["error"] == "no_job"){
|
41 |
+
msg = "Something went wrong. Please try after few minutes.";
|
42 |
+
} else{
|
43 |
+
msg = "Something went wrong.";
|
44 |
+
}
|
45 |
+
jQuery(".iowd_" + postId).html(msg);
|
46 |
+
return false;
|
47 |
+
}
|
48 |
+
var data = {
|
49 |
+
action: "optimize",
|
50 |
+
nonce_iowd: iowd.nonce,
|
51 |
+
iteration: 0,
|
52 |
+
data_count: response.data_count,
|
53 |
+
ID: postId
|
54 |
+
};
|
55 |
+
|
56 |
+
api.setPostData(data);
|
57 |
+
api.doAPIRequest(iowdReportSingle);
|
58 |
+
});
|
59 |
+
return false;
|
60 |
+
|
61 |
+
});
|
62 |
+
|
63 |
+
//bulk optimizing
|
64 |
+
jQuery("#iowd_optimizing").click(function () {
|
65 |
+
jQuery(this).attr("disabled", "disabled");
|
66 |
+
jQuery(".iowd-abort").css("display", "inline-block");
|
67 |
+
jQuery(".iowd-cancel").hide();
|
68 |
+
|
69 |
+
jQuery(".iowd_msg_div").hide();
|
70 |
+
jQuery(".iowd-standart-mode-view").hide();
|
71 |
+
jQuery(".iowd-help-from-media").hide();
|
72 |
+
jQuery(".iowd_optimizing_msg").show();
|
73 |
+
|
74 |
+
var other = jQuery("[name=other_folders]").val() ? 1 : 0;
|
75 |
+
jQuery(".iowd-loading-bar").show();
|
76 |
+
|
77 |
+
var data = {
|
78 |
+
action: "get_attachment_data",
|
79 |
+
other: other,
|
80 |
+
bulk: 1,
|
81 |
+
ID: jQuery("[name=ids]").val(),
|
82 |
+
nonce_iowd: iowd.nonce,
|
83 |
+
};
|
84 |
+
jQuery(".iowd-spinner").show();
|
85 |
+
jQuery.post(iowd.ajaxURL, data, function () {
|
86 |
+
}).done(function (response) {
|
87 |
+
response = JSON.parse(response);
|
88 |
+
if(response.status == "error"){
|
89 |
+
window.location.href = "admin.php?page=iowd_settings";
|
90 |
+
return false;
|
91 |
+
}
|
92 |
+
|
93 |
+
var data = {
|
94 |
+
action: "optimize",
|
95 |
+
nonce_iowd: iowd.nonce,
|
96 |
+
iteration: 0,
|
97 |
+
bulk: 1,
|
98 |
+
data_count: response.data_count
|
99 |
+
};
|
100 |
+
|
101 |
+
api.setPostData(data);
|
102 |
+
api.doAPIRequest(iowdReportBulk);
|
103 |
+
|
104 |
+
}
|
105 |
+
|
106 |
+
);
|
107 |
+
|
108 |
+
return false;
|
109 |
+
});
|
110 |
+
|
111 |
+
|
112 |
+
jQuery(".iowd_opacity, .iowd_close").click(function () {
|
113 |
+
jQuery(".iowd_opacity").hide();
|
114 |
+
jQuery(".iowd_stats").hide();
|
115 |
+
jQuery(".iowd_stats_body").html("");
|
116 |
+
});
|
117 |
+
|
118 |
+
});
|
119 |
+
|
120 |
+
function iowdReportSingle(requestData, responseData, dataCount){
|
121 |
+
|
122 |
+
if(responseData["response"]["status"] == "error"){
|
123 |
+
jQuery(".iowd_" + postId).html(responseData["response"]["error"]);
|
124 |
+
return false;
|
125 |
+
}
|
126 |
+
else if(responseData["response"]["status"] == "abort"){
|
127 |
+
jQuery(".iowd_" + postId).html("Canceled");
|
128 |
+
return false;
|
129 |
+
}
|
130 |
+
postId = requestData.ID;
|
131 |
+
jQuery(".iowd-optimize[data-id=" + postId + "]").find(".iowd-spinner").hide();
|
132 |
+
|
133 |
+
jQuery(".iowd_" + postId).html(iowd.finishUploadingSingle);
|
134 |
+
finishOptimizing(postId, 20);
|
135 |
+
|
136 |
+
}
|
137 |
+
|
138 |
+
function iowdReportBulk(requestData, responseData, dataCount){
|
139 |
+
|
140 |
+
if(responseData["response"]["status"] == "error"){
|
141 |
+
window.location.href = "admin.php?page=iowd_settings";
|
142 |
+
return false;
|
143 |
+
}
|
144 |
+
else if(responseData["response"]["status"] == "abort"){
|
145 |
+
window.location.href = "admin.php?page=iowd_settings";
|
146 |
+
return false;
|
147 |
+
}
|
148 |
+
var iterator = requestData.iteration + 1;
|
149 |
+
if (iterator < dataCount) {
|
150 |
+
var width = iterator / dataCount * 100;
|
151 |
+
jQuery(".iowd-loading-bar-inner").animate({width: width + '%'});
|
152 |
+
}
|
153 |
+
else {
|
154 |
+
jQuery(".iowd-loading-bar-inner").animate({width: '100%'});
|
155 |
+
jQuery(".iowd-loading-bar-inner").css({width: '100%'});
|
156 |
+
jQuery(".iowd-spinner").hide();
|
157 |
+
jQuery(".iowd-loading-bar").hide();
|
158 |
+
responseData.iowd_images_count_start
|
159 |
+
jQuery(".iowd_msg_div_text").html(responseData.iowd_images_count_start + " " + iowd.finishUploadingBulk);
|
160 |
+
jQuery(".iowd_msg_div").show();
|
161 |
+
window.location.href = "admin.php?page=iowd_settings&iowd_optimizing=1";
|
162 |
+
}
|
163 |
+
}
|
164 |
+
|
165 |
+
function finishOptimizing(postId, tries){
|
166 |
+
|
167 |
+
var data = {
|
168 |
+
action: "finish_bulk",
|
169 |
+
nonce_iowd: iowd.nonce,
|
170 |
+
postId: postId
|
171 |
+
};
|
172 |
+
|
173 |
+
jQuery.post(iowd.ajaxURL, data, function (response) {
|
174 |
+
var response = JSON.parse(response);
|
175 |
+
if(response["status"] == "abort"){
|
176 |
+
window.location.href = "admin.php?page=iowd_settings";
|
177 |
+
}
|
178 |
+
else{
|
179 |
+
if (response["status"] == "ok" || tries == 0) {
|
180 |
+
if (tries == 0) {
|
181 |
+
var data = {
|
182 |
+
action: "abort",
|
183 |
+
nonce_iowd: iowd.nonce
|
184 |
+
};
|
185 |
+
jQuery.post(iowd.ajaxURL, data, function () {
|
186 |
+
if (postId == 0) {
|
187 |
+
window.location.href = "admin.php?page=iowd_settings";
|
188 |
+
}
|
189 |
+
else {
|
190 |
+
jQuery(".iowd_" + postId).html("Something went wrong");
|
191 |
+
}
|
192 |
+
});
|
193 |
+
}
|
194 |
+
else {
|
195 |
+
if (postId == 0) {
|
196 |
+
window.location.href = "admin.php?page=iowd_settings";
|
197 |
+
}
|
198 |
+
|
199 |
+
else {
|
200 |
+
jQuery(".iowd_" + postId).html(response.html);
|
201 |
+
jQuery(".iowd_" + postId).find(".iowd-abort").hide();
|
202 |
+
}
|
203 |
+
}
|
204 |
+
}
|
205 |
+
else{
|
206 |
+
setTimeout(function(){
|
207 |
+
finishOptimizing(postId, tries-1);
|
208 |
+
}, 2000);
|
209 |
+
}
|
210 |
+
}
|
211 |
+
});
|
212 |
+
|
213 |
+
}
|
214 |
+
|
215 |
+
function iowdAbort(obj){
|
216 |
+
if(jQuery(obj).hasClass("iowd-aborted")){
|
217 |
+
return false;
|
218 |
+
}
|
219 |
+
jQuery(obj).append(" ...");
|
220 |
+
jQuery(obj).addClass("iowd-aborted");
|
221 |
+
var data = {
|
222 |
+
action: "abort",
|
223 |
+
nonce_iowd: iowd.nonce
|
224 |
+
};
|
225 |
+
jQuery.post(iowd.ajaxURL, data, function () {
|
226 |
+
window.location.href = "admin.php?page=iowd_settings";
|
227 |
+
});
|
228 |
+
}
|
229 |
+
|
230 |
+
function iowdStatus(obj) {
|
231 |
+
var data = {
|
232 |
+
action: "get_stats",
|
233 |
+
ID: jQuery(obj).attr("data-id"),
|
234 |
+
nonce_iowd: iowd.nonce
|
235 |
+
};
|
236 |
+
jQuery(".iowd_opacity").show();
|
237 |
+
jQuery(".iowd_stats").show();
|
238 |
+
|
239 |
+
jQuery.post(iowd.ajaxURL, data, function (response) {
|
240 |
+
var html = response ? response : "Not Found";
|
241 |
+
jQuery(".iowd_stats_body").html(html);
|
242 |
+
|
243 |
+
});
|
244 |
+
return false;
|
245 |
+
}
|
246 |
+
|
247 |
+
function wdTabs(tabs, default_tab) {
|
248 |
+
var activeClass = tabs + "_active";
|
249 |
+
var tabsContainer = tabs + "_container";
|
250 |
+
var tabsContainerItem = tabs + "_container_item";
|
251 |
+
jQuery("." + tabsContainerItem).hide();
|
252 |
+
jQuery("#" + (iowd.iowd_active_tab ? iowd.iowd_active_tab : default_tab)).show();
|
253 |
+
jQuery("[href=#" + (iowd.iowd_active_tab ? iowd.iowd_active_tab : default_tab) + "]").addClass(activeClass);
|
254 |
+
|
255 |
+
jQuery("." + tabs + " li a").click(function () {
|
256 |
+
jQuery("." + tabsContainerItem).hide();
|
257 |
+
jQuery("." + tabs + " li a").removeClass(activeClass);
|
258 |
+
jQuery(jQuery(this).attr("href")).show();
|
259 |
+
jQuery(this).addClass(activeClass);
|
260 |
+
if (jQuery(this).attr("href") == "#report") {
|
261 |
+
jQuery(".iowd_save_btn").hide();
|
262 |
+
}
|
263 |
+
else {
|
264 |
+
jQuery(".iowd_save_btn").show();
|
265 |
+
}
|
266 |
+
jQuery("#" + activeClass).val(jQuery(this).attr("href").substr(1));
|
267 |
+
return false;
|
268 |
+
});
|
269 |
+
}
|
270 |
+
|
271 |
+
|
assets/js/api.js
ADDED
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* api class */
|
2 |
+
|
3 |
+
var iowdAPI = (function () {
|
4 |
+
// constructor
|
5 |
+
var api = function () {
|
6 |
+
this._apiURL = null;
|
7 |
+
this._postData = null;
|
8 |
+
this.error = {
|
9 |
+
error_number: null,
|
10 |
+
error_msg: null,
|
11 |
+
};
|
12 |
+
|
13 |
+
// set nessary params
|
14 |
+
this.setApiUrl = function (url) {
|
15 |
+
this._apiURL = url;
|
16 |
+
};
|
17 |
+
|
18 |
+
// data
|
19 |
+
this.setPostData = function (postData) {
|
20 |
+
this._postData = postData;
|
21 |
+
};
|
22 |
+
|
23 |
+
// do api request
|
24 |
+
this.doAPIRequest = function (callback) {
|
25 |
+
this.ajaxCall(this._postData, callback);
|
26 |
+
};
|
27 |
+
|
28 |
+
|
29 |
+
this.ajaxCall = function (data, callback) {
|
30 |
+
|
31 |
+
var thisAPI = this;
|
32 |
+
jQuery.post(this._apiURL, data, function () {
|
33 |
+
}).done(function (response) {
|
34 |
+
response = JSON.parse(response);
|
35 |
+
var dataCount = data.data_count;
|
36 |
+
|
37 |
+
var responseData = response["response"];
|
38 |
+
thisAPI.analyzeResponse(callback, data, response, dataCount);
|
39 |
+
if (responseData["status"] == "error" || responseData["status"] == "abort") {
|
40 |
+
return false;
|
41 |
+
}
|
42 |
+
if (dataCount > (data.iteration + 1)) {
|
43 |
+
data.iteration = data.iteration + 1;
|
44 |
+
thisAPI.ajaxCall(data, callback);
|
45 |
+
}
|
46 |
+
|
47 |
+
}).fail(function() {
|
48 |
+
console.log('Something went wrong. IO will retry.');
|
49 |
+
setTimeout(function(){
|
50 |
+
thisAPI.ajaxCall(data, callback);
|
51 |
+
}, 1000);
|
52 |
+
});
|
53 |
+
};
|
54 |
+
|
55 |
+
// function for analyze response
|
56 |
+
this.analyzeResponse = function (callback, requestData, responseData, dataCount) {
|
57 |
+
callback(requestData, responseData, dataCount);
|
58 |
+
};
|
59 |
+
|
60 |
+
// function for error handling
|
61 |
+
this.errorHandler = function (errorType) {
|
62 |
+
switch (errorType) {
|
63 |
+
case "missing_api_key" :
|
64 |
+
this.error.error_number = errorType;
|
65 |
+
this.error.error_msg = apiText.error_1;
|
66 |
+
break;
|
67 |
+
}
|
68 |
+
|
69 |
+
};
|
70 |
+
};
|
71 |
+
|
72 |
+
return api;
|
73 |
+
})();
|
74 |
+
|
assets/js/calendar.js
ADDED
@@ -0,0 +1,1522 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* Copyright Mihai Bazon, 2002-2005 | www.bazon.net/mishoo
|
2 |
+
* -----------------------------------------------------------
|
3 |
+
*
|
4 |
+
* The DHTML Calendar, version 1.0 "It is happening again"
|
5 |
+
*
|
6 |
+
* Details and latest version at:
|
7 |
+
* www.dynarch.com/projects/calendar
|
8 |
+
*
|
9 |
+
* This script is developed by Dynarch.com. Visit us at www.dynarch.com.
|
10 |
+
*
|
11 |
+
* This script is distributed under the GNU Lesser General Public License.
|
12 |
+
* Read the entire license text here: http://www.gnu.org/licenses/lgpl.html
|
13 |
+
*/
|
14 |
+
Calendar = function (firstDayOfWeek, dateStr, onSelected, onClose) {
|
15 |
+
Calendar._DN = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");
|
16 |
+
Calendar._SDN = new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun");
|
17 |
+
Calendar._FD = 0;
|
18 |
+
Calendar._MN = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
|
19 |
+
Calendar._SMN = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
|
20 |
+
Calendar._TT = {};
|
21 |
+
Calendar._TT["INFO"] = "About the Calendar";
|
22 |
+
Calendar._TT["ABOUT"] =
|
23 |
+
"DHTML Date/Time Selector\n" +
|
24 |
+
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" +
|
25 |
+
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
|
26 |
+
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
|
27 |
+
"\n\n" +
|
28 |
+
"Date selection:\n" +
|
29 |
+
"- Use the \xab, \xbb buttons to select year\n" +
|
30 |
+
"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" +
|
31 |
+
"- Hold mouse button on any of the above buttons for faster selection.";
|
32 |
+
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
33 |
+
"Time selection:\n" +
|
34 |
+
"- Click on any of the time parts to increase it\n" +
|
35 |
+
"- or Shift-click to decrease it\n" +
|
36 |
+
"- or click and drag for faster selection.";
|
37 |
+
|
38 |
+
Calendar._TT["PREV_YEAR"] = "Click to move to the previous year. Click and hold for a list of years.";
|
39 |
+
Calendar._TT["PREV_MONTH"] = "Click to move to the previous month. Click and hold for a list of the months.";
|
40 |
+
Calendar._TT["GO_TODAY"] = "Go to today";
|
41 |
+
Calendar._TT["NEXT_MONTH"] = "Click to move to the next month. Click and hold for a list of the months.";
|
42 |
+
Calendar._TT["NEXT_YEAR"] = "Click to move to the next year. Click and hold for a list of years.";
|
43 |
+
Calendar._TT["SEL_DATE"] = "Select a date.";
|
44 |
+
Calendar._TT["DRAG_TO_MOVE"] = "Drag to move";
|
45 |
+
Calendar._TT["PART_TODAY"] = " (Today)";
|
46 |
+
Calendar._TT["DAY_FIRST"] = "Display %s first";
|
47 |
+
Calendar._TT["WEEKEND"] = "0,6";
|
48 |
+
Calendar._TT["CLOSE"] = "Close";
|
49 |
+
Calendar._TT["TODAY"] = "Today";
|
50 |
+
Calendar._TT["TIME_PART"] = "(Shift-)Click or Drag to change the value.";
|
51 |
+
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
52 |
+
Calendar._TT["TT_DATE_FORMAT"] = "%A, %B %e";
|
53 |
+
Calendar._TT["WK"] = "wk";
|
54 |
+
Calendar._TT["TIME"] = "Time:";
|
55 |
+
|
56 |
+
|
57 |
+
this.activeDiv = null;
|
58 |
+
this.currentDateEl = null;
|
59 |
+
this.getDateStatus = null;
|
60 |
+
this.getDateToolTip = null;
|
61 |
+
this.getDateText = null;
|
62 |
+
this.timeout = null;
|
63 |
+
this.onSelected = onSelected || null;
|
64 |
+
this.onClose = onClose || null;
|
65 |
+
this.dragging = false;
|
66 |
+
this.hidden = false;
|
67 |
+
this.minYear = 1970;
|
68 |
+
this.maxYear = 2050;
|
69 |
+
this.dateFormat = Calendar._TT["DEF_DATE_FORMAT"];
|
70 |
+
this.ttDateFormat = Calendar._TT["TT_DATE_FORMAT"];
|
71 |
+
this.isPopup = true;
|
72 |
+
this.weekNumbers = true;
|
73 |
+
this.firstDayOfWeek = typeof firstDayOfWeek == "number" ? firstDayOfWeek : Calendar._FD;
|
74 |
+
this.showsOtherMonths = false;
|
75 |
+
this.dateStr = dateStr;
|
76 |
+
this.ar_days = null;
|
77 |
+
this.showsTime = false;
|
78 |
+
this.time24 = true;
|
79 |
+
this.yearStep = 2;
|
80 |
+
this.hiliteToday = true;
|
81 |
+
this.multiple = null;
|
82 |
+
this.table = null;
|
83 |
+
this.element = null;
|
84 |
+
this.tbody = null;
|
85 |
+
this.firstdayname = null;
|
86 |
+
this.monthsCombo = null;
|
87 |
+
this.yearsCombo = null;
|
88 |
+
this.hilitedMonth = null;
|
89 |
+
this.activeMonth = null;
|
90 |
+
this.hilitedYear = null;
|
91 |
+
this.activeYear = null;
|
92 |
+
this.dateClicked = false;
|
93 |
+
if (typeof Calendar._SDN == "undefined") {
|
94 |
+
if (typeof Calendar._SDN_len == "undefined")Calendar._SDN_len = 3;
|
95 |
+
var ar = new Array();
|
96 |
+
for (var i = 8; i > 0;) {
|
97 |
+
ar[--i] = Calendar._DN[i].substr(0, Calendar._SDN_len);
|
98 |
+
}
|
99 |
+
Calendar._SDN = ar;
|
100 |
+
if (typeof Calendar._SMN_len == "undefined")Calendar._SMN_len = 3;
|
101 |
+
ar = new Array();
|
102 |
+
for (var i = 12; i > 0;) {
|
103 |
+
ar[--i] = Calendar._MN[i].substr(0, Calendar._SMN_len);
|
104 |
+
}
|
105 |
+
Calendar._SMN = ar;
|
106 |
+
}
|
107 |
+
};
|
108 |
+
Calendar._C = null;
|
109 |
+
Calendar.is_ie = (/msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent));
|
110 |
+
Calendar.is_ie5 = (Calendar.is_ie && /msie 5\.0/i.test(navigator.userAgent));
|
111 |
+
Calendar.is_opera = /opera/i.test(navigator.userAgent);
|
112 |
+
Calendar.is_khtml = /Konqueror|Safari|KHTML/i.test(navigator.userAgent);
|
113 |
+
Calendar.getAbsolutePos = function (el) {
|
114 |
+
var SL = 0, ST = 0;
|
115 |
+
var is_div = /^div$/i.test(el.tagName);
|
116 |
+
if (is_div && el.scrollLeft)SL = el.scrollLeft;
|
117 |
+
if (is_div && el.scrollTop)ST = el.scrollTop;
|
118 |
+
var r = {
|
119 |
+
x: el.offsetLeft - SL,
|
120 |
+
y: el.offsetTop - ST
|
121 |
+
};
|
122 |
+
if (el.offsetParent) {
|
123 |
+
var tmp = this.getAbsolutePos(el.offsetParent);
|
124 |
+
r.x += tmp.x;
|
125 |
+
r.y += tmp.y;
|
126 |
+
}
|
127 |
+
return r;
|
128 |
+
};
|
129 |
+
Calendar.isRelated = function (el, evt) {
|
130 |
+
var related = evt.relatedTarget;
|
131 |
+
if (!related) {
|
132 |
+
var type = evt.type;
|
133 |
+
if (type == "mouseover") {
|
134 |
+
related = evt.fromElement;
|
135 |
+
} else if (type == "mouseout") {
|
136 |
+
related = evt.toElement;
|
137 |
+
}
|
138 |
+
}
|
139 |
+
while (related) {
|
140 |
+
if (related == el) {
|
141 |
+
return true;
|
142 |
+
}
|
143 |
+
related = related.parentNode;
|
144 |
+
}
|
145 |
+
return false;
|
146 |
+
};
|
147 |
+
Calendar.removeClass = function (el, className) {
|
148 |
+
if (!(el && el.className)) {
|
149 |
+
return;
|
150 |
+
}
|
151 |
+
var cls = el.className.split(" ");
|
152 |
+
var ar = new Array();
|
153 |
+
for (var i = cls.length; i > 0;) {
|
154 |
+
if (cls[--i] != className) {
|
155 |
+
ar[ar.length] = cls[i];
|
156 |
+
}
|
157 |
+
}
|
158 |
+
el.className = ar.join(" ");
|
159 |
+
};
|
160 |
+
Calendar.addClass = function (el, className) {
|
161 |
+
Calendar.removeClass(el, className);
|
162 |
+
el.className += " " + className;
|
163 |
+
};
|
164 |
+
Calendar.getElement = function (ev) {
|
165 |
+
var f = Calendar.is_ie ? window.event.srcElement : ev.currentTarget;
|
166 |
+
while (f.nodeType != 1 || /^div$/i.test(f.tagName))f = f.parentNode;
|
167 |
+
return f;
|
168 |
+
};
|
169 |
+
Calendar.getTargetElement = function (ev) {
|
170 |
+
var f = Calendar.is_ie ? window.event.srcElement : ev.target;
|
171 |
+
while (f.nodeType != 1)f = f.parentNode;
|
172 |
+
return f;
|
173 |
+
};
|
174 |
+
Calendar.stopEvent = function (ev) {
|
175 |
+
ev || (ev = window.event);
|
176 |
+
if (Calendar.is_ie) {
|
177 |
+
ev.cancelBubble = true;
|
178 |
+
ev.returnValue = false;
|
179 |
+
} else {
|
180 |
+
ev.preventDefault();
|
181 |
+
ev.stopPropagation();
|
182 |
+
}
|
183 |
+
return false;
|
184 |
+
};
|
185 |
+
Calendar.addEvent = function (el, evname, func) {
|
186 |
+
if (el.attachEvent) {
|
187 |
+
el.attachEvent("on" + evname, func);
|
188 |
+
} else if (el.addEventListener) {
|
189 |
+
el.addEventListener(evname, func, true);
|
190 |
+
} else {
|
191 |
+
el["on" + evname] = func;
|
192 |
+
}
|
193 |
+
};
|
194 |
+
Calendar.removeEvent = function (el, evname, func) {
|
195 |
+
if (el.detachEvent) {
|
196 |
+
el.detachEvent("on" + evname, func);
|
197 |
+
} else if (el.removeEventListener) {
|
198 |
+
el.removeEventListener(evname, func, true);
|
199 |
+
} else {
|
200 |
+
el["on" + evname] = null;
|
201 |
+
}
|
202 |
+
};
|
203 |
+
Calendar.createElement = function (type, parent) {
|
204 |
+
var el = null;
|
205 |
+
if (document.createElementNS) {
|
206 |
+
el = document.createElementNS("http://www.w3.org/1999/xhtml", type);
|
207 |
+
} else {
|
208 |
+
el = document.createElement(type);
|
209 |
+
}
|
210 |
+
if (typeof parent != "undefined") {
|
211 |
+
parent.appendChild(el);
|
212 |
+
}
|
213 |
+
return el;
|
214 |
+
};
|
215 |
+
Calendar._add_evs = function (el) {
|
216 |
+
with (Calendar) {
|
217 |
+
addEvent(el, "mouseover", dayMouseOver);
|
218 |
+
addEvent(el, "mousedown", dayMouseDown);
|
219 |
+
addEvent(el, "mouseout", dayMouseOut);
|
220 |
+
if (is_ie) {
|
221 |
+
addEvent(el, "dblclick", dayMouseDblClick);
|
222 |
+
el.setAttribute("unselectable", true);
|
223 |
+
}
|
224 |
+
}
|
225 |
+
};
|
226 |
+
Calendar.findMonth = function (el) {
|
227 |
+
if (typeof el.month != "undefined") {
|
228 |
+
return el;
|
229 |
+
} else if (typeof el.parentNode.month != "undefined") {
|
230 |
+
return el.parentNode;
|
231 |
+
}
|
232 |
+
return null;
|
233 |
+
};
|
234 |
+
Calendar.findYear = function (el) {
|
235 |
+
if (typeof el.year != "undefined") {
|
236 |
+
return el;
|
237 |
+
} else if (typeof el.parentNode.year != "undefined") {
|
238 |
+
return el.parentNode;
|
239 |
+
}
|
240 |
+
return null;
|
241 |
+
};
|
242 |
+
Calendar.showMonthsCombo = function () {
|
243 |
+
var cal = Calendar._C;
|
244 |
+
if (!cal) {
|
245 |
+
return false;
|
246 |
+
}
|
247 |
+
var cal = cal;
|
248 |
+
var cd = cal.activeDiv;
|
249 |
+
var mc = cal.monthsCombo;
|
250 |
+
if (cal.hilitedMonth) {
|
251 |
+
Calendar.removeClass(cal.hilitedMonth, "hilite");
|
252 |
+
}
|
253 |
+
if (cal.activeMonth) {
|
254 |
+
Calendar.removeClass(cal.activeMonth, "active");
|
255 |
+
}
|
256 |
+
var mon = cal.monthsCombo.getElementsByTagName("div")[cal.date.getMonth()];
|
257 |
+
Calendar.addClass(mon, "active");
|
258 |
+
cal.activeMonth = mon;
|
259 |
+
var s = mc.style;
|
260 |
+
s.display = "block";
|
261 |
+
if (cd.navtype < 0)s.left = cd.offsetLeft + "px"; else {
|
262 |
+
var mcw = mc.offsetWidth;
|
263 |
+
if (typeof mcw == "undefined")mcw = 50;
|
264 |
+
s.left = (cd.offsetLeft + cd.offsetWidth - mcw) + "px";
|
265 |
+
}
|
266 |
+
s.top = (cd.offsetTop + cd.offsetHeight) + "px";
|
267 |
+
};
|
268 |
+
Calendar.showYearsCombo = function (fwd) {
|
269 |
+
var cal = Calendar._C;
|
270 |
+
if (!cal) {
|
271 |
+
return false;
|
272 |
+
}
|
273 |
+
var cal = cal;
|
274 |
+
var cd = cal.activeDiv;
|
275 |
+
var yc = cal.yearsCombo;
|
276 |
+
if (cal.hilitedYear) {
|
277 |
+
Calendar.removeClass(cal.hilitedYear, "hilite");
|
278 |
+
}
|
279 |
+
if (cal.activeYear) {
|
280 |
+
Calendar.removeClass(cal.activeYear, "active");
|
281 |
+
}
|
282 |
+
cal.activeYear = null;
|
283 |
+
var Y = cal.date.getFullYear() + (fwd ? 1 : -1);
|
284 |
+
var yr = yc.firstChild;
|
285 |
+
var show = false;
|
286 |
+
for (var i = 12; i > 0; --i) {
|
287 |
+
if (Y >= cal.minYear && Y <= cal.maxYear) {
|
288 |
+
yr.innerHTML = Y;
|
289 |
+
yr.year = Y;
|
290 |
+
yr.style.display = "block";
|
291 |
+
show = true;
|
292 |
+
} else {
|
293 |
+
yr.style.display = "none";
|
294 |
+
}
|
295 |
+
yr = yr.nextSibling;
|
296 |
+
Y += fwd ? cal.yearStep : -cal.yearStep;
|
297 |
+
}
|
298 |
+
if (show) {
|
299 |
+
var s = yc.style;
|
300 |
+
s.display = "block";
|
301 |
+
if (cd.navtype < 0)s.left = cd.offsetLeft + "px"; else {
|
302 |
+
var ycw = yc.offsetWidth;
|
303 |
+
if (typeof ycw == "undefined")ycw = 50;
|
304 |
+
s.left = (cd.offsetLeft + cd.offsetWidth - ycw) + "px";
|
305 |
+
}
|
306 |
+
s.top = (cd.offsetTop + cd.offsetHeight) + "px";
|
307 |
+
}
|
308 |
+
};
|
309 |
+
Calendar.tableMouseUp = function (ev) {
|
310 |
+
var cal = Calendar._C;
|
311 |
+
if (!cal) {
|
312 |
+
return false;
|
313 |
+
}
|
314 |
+
if (cal.timeout) {
|
315 |
+
clearTimeout(cal.timeout);
|
316 |
+
}
|
317 |
+
var el = cal.activeDiv;
|
318 |
+
if (!el) {
|
319 |
+
return false;
|
320 |
+
}
|
321 |
+
var target = Calendar.getTargetElement(ev);
|
322 |
+
ev || (ev = window.event);
|
323 |
+
Calendar.removeClass(el, "active");
|
324 |
+
if (target == el || target.parentNode == el) {
|
325 |
+
Calendar.cellClick(el, ev);
|
326 |
+
}
|
327 |
+
var mon = Calendar.findMonth(target);
|
328 |
+
var date = null;
|
329 |
+
if (mon) {
|
330 |
+
date = new Date(cal.date);
|
331 |
+
if (mon.month != date.getMonth()) {
|
332 |
+
date.setMonth(mon.month);
|
333 |
+
cal.setDate(date);
|
334 |
+
cal.dateClicked = false;
|
335 |
+
cal.callHandler();
|
336 |
+
}
|
337 |
+
} else {
|
338 |
+
var year = Calendar.findYear(target);
|
339 |
+
if (year) {
|
340 |
+
date = new Date(cal.date);
|
341 |
+
if (year.year != date.getFullYear()) {
|
342 |
+
date.setFullYear(year.year);
|
343 |
+
cal.setDate(date);
|
344 |
+
cal.dateClicked = false;
|
345 |
+
cal.callHandler();
|
346 |
+
}
|
347 |
+
}
|
348 |
+
}
|
349 |
+
with (Calendar) {
|
350 |
+
removeEvent(document, "mouseup", tableMouseUp);
|
351 |
+
removeEvent(document, "mouseover", tableMouseOver);
|
352 |
+
removeEvent(document, "mousemove", tableMouseOver);
|
353 |
+
cal._hideCombos();
|
354 |
+
_C = null;
|
355 |
+
return stopEvent(ev);
|
356 |
+
}
|
357 |
+
};
|
358 |
+
Calendar.tableMouseOver = function (ev) {
|
359 |
+
var cal = Calendar._C;
|
360 |
+
if (!cal) {
|
361 |
+
return;
|
362 |
+
}
|
363 |
+
var el = cal.activeDiv;
|
364 |
+
var target = Calendar.getTargetElement(ev);
|
365 |
+
if (target == el || target.parentNode == el) {
|
366 |
+
Calendar.addClass(el, "hilite active");
|
367 |
+
Calendar.addClass(el.parentNode, "rowhilite");
|
368 |
+
} else {
|
369 |
+
if (typeof el.navtype == "undefined" || (el.navtype != 50 && (el.navtype == 0 || Math.abs(el.navtype) > 2)))Calendar.removeClass(el, "active");
|
370 |
+
Calendar.removeClass(el, "hilite");
|
371 |
+
Calendar.removeClass(el.parentNode, "rowhilite");
|
372 |
+
}
|
373 |
+
ev || (ev = window.event);
|
374 |
+
if (el.navtype == 50 && target != el) {
|
375 |
+
var pos = Calendar.getAbsolutePos(el);
|
376 |
+
var w = el.offsetWidth;
|
377 |
+
var x = ev.clientX;
|
378 |
+
var dx;
|
379 |
+
var decrease = true;
|
380 |
+
if (x > pos.x + w) {
|
381 |
+
dx = x - pos.x - w;
|
382 |
+
decrease = false;
|
383 |
+
} else dx = pos.x - x;
|
384 |
+
if (dx < 0)dx = 0;
|
385 |
+
var range = el._range;
|
386 |
+
var current = el._current;
|
387 |
+
var count = Math.floor(dx / 10) % range.length;
|
388 |
+
for (var i = range.length; --i >= 0;)if (range[i] == current)break;
|
389 |
+
while (count-- > 0)if (decrease) {
|
390 |
+
if (--i < 0)i = range.length - 1;
|
391 |
+
} else if (++i >= range.length)i = 0;
|
392 |
+
var newval = range[i];
|
393 |
+
el.innerHTML = newval;
|
394 |
+
cal.onUpdateTime();
|
395 |
+
}
|
396 |
+
var mon = Calendar.findMonth(target);
|
397 |
+
if (mon) {
|
398 |
+
if (mon.month != cal.date.getMonth()) {
|
399 |
+
if (cal.hilitedMonth) {
|
400 |
+
Calendar.removeClass(cal.hilitedMonth, "hilite");
|
401 |
+
}
|
402 |
+
Calendar.addClass(mon, "hilite");
|
403 |
+
cal.hilitedMonth = mon;
|
404 |
+
} else if (cal.hilitedMonth) {
|
405 |
+
Calendar.removeClass(cal.hilitedMonth, "hilite");
|
406 |
+
}
|
407 |
+
} else {
|
408 |
+
if (cal.hilitedMonth) {
|
409 |
+
Calendar.removeClass(cal.hilitedMonth, "hilite");
|
410 |
+
}
|
411 |
+
var year = Calendar.findYear(target);
|
412 |
+
if (year) {
|
413 |
+
if (year.year != cal.date.getFullYear()) {
|
414 |
+
if (cal.hilitedYear) {
|
415 |
+
Calendar.removeClass(cal.hilitedYear, "hilite");
|
416 |
+
}
|
417 |
+
Calendar.addClass(year, "hilite");
|
418 |
+
cal.hilitedYear = year;
|
419 |
+
} else if (cal.hilitedYear) {
|
420 |
+
Calendar.removeClass(cal.hilitedYear, "hilite");
|
421 |
+
}
|
422 |
+
} else if (cal.hilitedYear) {
|
423 |
+
Calendar.removeClass(cal.hilitedYear, "hilite");
|
424 |
+
}
|
425 |
+
}
|
426 |
+
return Calendar.stopEvent(ev);
|
427 |
+
};
|
428 |
+
Calendar.tableMouseDown = function (ev) {
|
429 |
+
if (Calendar.getTargetElement(ev) == Calendar.getElement(ev)) {
|
430 |
+
return Calendar.stopEvent(ev);
|
431 |
+
}
|
432 |
+
};
|
433 |
+
Calendar.calDragIt = function (ev) {
|
434 |
+
var cal = Calendar._C;
|
435 |
+
if (!(cal && cal.dragging)) {
|
436 |
+
return false;
|
437 |
+
}
|
438 |
+
var posX;
|
439 |
+
var posY;
|
440 |
+
if (Calendar.is_ie) {
|
441 |
+
posY = window.event.clientY + document.body.scrollTop;
|
442 |
+
posX = window.event.clientX + document.body.scrollLeft;
|
443 |
+
} else {
|
444 |
+
posX = ev.pageX;
|
445 |
+
posY = ev.pageY;
|
446 |
+
}
|
447 |
+
cal.hideShowCovered();
|
448 |
+
var st = cal.element.style;
|
449 |
+
st.left = (posX - cal.xOffs) + "px";
|
450 |
+
st.top = (posY - cal.yOffs) + "px";
|
451 |
+
return Calendar.stopEvent(ev);
|
452 |
+
};
|
453 |
+
Calendar.calDragEnd = function (ev) {
|
454 |
+
var cal = Calendar._C;
|
455 |
+
if (!cal) {
|
456 |
+
return false;
|
457 |
+
}
|
458 |
+
cal.dragging = false;
|
459 |
+
with (Calendar) {
|
460 |
+
removeEvent(document, "mousemove", calDragIt);
|
461 |
+
removeEvent(document, "mouseup", calDragEnd);
|
462 |
+
tableMouseUp(ev);
|
463 |
+
}
|
464 |
+
cal.hideShowCovered();
|
465 |
+
};
|
466 |
+
Calendar.dayMouseDown = function (ev) {
|
467 |
+
var el = Calendar.getElement(ev);
|
468 |
+
if (el.disabled) {
|
469 |
+
return false;
|
470 |
+
}
|
471 |
+
var cal = el.calendar;
|
472 |
+
cal.activeDiv = el;
|
473 |
+
Calendar._C = cal;
|
474 |
+
if (el.navtype != 300)with (Calendar) {
|
475 |
+
if (el.navtype == 50) {
|
476 |
+
el._current = el.innerHTML;
|
477 |
+
addEvent(document, "mousemove", tableMouseOver);
|
478 |
+
} else addEvent(document, Calendar.is_ie5 ? "mousemove" : "mouseover", tableMouseOver);
|
479 |
+
addClass(el, "hilite active");
|
480 |
+
addEvent(document, "mouseup", tableMouseUp);
|
481 |
+
} else if (cal.isPopup) {
|
482 |
+
cal._dragStart(ev);
|
483 |
+
}
|
484 |
+
if (el.navtype == -1 || el.navtype == 1) {
|
485 |
+
if (cal.timeout)clearTimeout(cal.timeout);
|
486 |
+
cal.timeout = setTimeout("Calendar.showMonthsCombo()", 250);
|
487 |
+
} else if (el.navtype == -2 || el.navtype == 2) {
|
488 |
+
if (cal.timeout)clearTimeout(cal.timeout);
|
489 |
+
cal.timeout = setTimeout((el.navtype > 0) ? "Calendar.showYearsCombo(true)" : "Calendar.showYearsCombo(false)", 250);
|
490 |
+
} else {
|
491 |
+
cal.timeout = null;
|
492 |
+
}
|
493 |
+
return Calendar.stopEvent(ev);
|
494 |
+
};
|
495 |
+
Calendar.dayMouseDblClick = function (ev) {
|
496 |
+
Calendar.cellClick(Calendar.getElement(ev), ev || window.event);
|
497 |
+
if (Calendar.is_ie) {
|
498 |
+
document.selection.empty();
|
499 |
+
}
|
500 |
+
};
|
501 |
+
Calendar.dayMouseOver = function (ev) {
|
502 |
+
var el = Calendar.getElement(ev);
|
503 |
+
if (Calendar.isRelated(el, ev) || Calendar._C || el.disabled) {
|
504 |
+
return false;
|
505 |
+
}
|
506 |
+
if (el.ttip) {
|
507 |
+
if (el.ttip.substr(0, 1) == "_") {
|
508 |
+
el.ttip = el.caldate.print(el.calendar.ttDateFormat) + el.ttip.substr(1);
|
509 |
+
}
|
510 |
+
el.calendar.tooltips.innerHTML = el.ttip;
|
511 |
+
}
|
512 |
+
if (el.navtype != 300) {
|
513 |
+
Calendar.addClass(el, "hilite");
|
514 |
+
if (el.caldate) {
|
515 |
+
Calendar.addClass(el.parentNode, "rowhilite");
|
516 |
+
}
|
517 |
+
}
|
518 |
+
return Calendar.stopEvent(ev);
|
519 |
+
};
|
520 |
+
Calendar.dayMouseOut = function (ev) {
|
521 |
+
with (Calendar) {
|
522 |
+
var el = getElement(ev);
|
523 |
+
if (isRelated(el, ev) || _C || el.disabled)return false;
|
524 |
+
removeClass(el, "hilite");
|
525 |
+
if (el.caldate)removeClass(el.parentNode, "rowhilite");
|
526 |
+
if (el.calendar)el.calendar.tooltips.innerHTML = _TT["SEL_DATE"];
|
527 |
+
return stopEvent(ev);
|
528 |
+
}
|
529 |
+
};
|
530 |
+
Calendar.cellClick = function (el, ev) {
|
531 |
+
var cal = el.calendar;
|
532 |
+
var closing = false;
|
533 |
+
var newdate = false;
|
534 |
+
var date = null;
|
535 |
+
if (typeof el.navtype == "undefined") {
|
536 |
+
if (cal.currentDateEl) {
|
537 |
+
Calendar.removeClass(cal.currentDateEl, "selected");
|
538 |
+
Calendar.addClass(el, "selected");
|
539 |
+
closing = (cal.currentDateEl == el);
|
540 |
+
if (!closing) {
|
541 |
+
cal.currentDateEl = el;
|
542 |
+
}
|
543 |
+
}
|
544 |
+
cal.date.setDateOnly(el.caldate);
|
545 |
+
date = cal.date;
|
546 |
+
var other_month = !(cal.dateClicked = !el.otherMonth);
|
547 |
+
if (!other_month && !cal.currentDateEl)cal._toggleMultipleDate(new Date(date)); else newdate = !el.disabled;
|
548 |
+
if (other_month)cal._init(cal.firstDayOfWeek, date);
|
549 |
+
} else {
|
550 |
+
if (el.navtype == 200) {
|
551 |
+
Calendar.removeClass(el, "hilite");
|
552 |
+
cal.callCloseHandler();
|
553 |
+
return;
|
554 |
+
}
|
555 |
+
date = new Date(cal.date);
|
556 |
+
if (el.navtype == 0)date.setDateOnly(new Date());
|
557 |
+
cal.dateClicked = false;
|
558 |
+
var year = date.getFullYear();
|
559 |
+
var mon = date.getMonth();
|
560 |
+
|
561 |
+
function setMonth(m) {
|
562 |
+
var day = date.getDate();
|
563 |
+
var max = date.getMonthDays(m);
|
564 |
+
if (day > max) {
|
565 |
+
date.setDate(max);
|
566 |
+
}
|
567 |
+
date.setMonth(m);
|
568 |
+
};
|
569 |
+
switch (el.navtype) {
|
570 |
+
case 400:
|
571 |
+
Calendar.removeClass(el, "hilite");
|
572 |
+
var text = Calendar._TT["ABOUT"];
|
573 |
+
if (typeof text != "undefined") {
|
574 |
+
text += cal.showsTime ? Calendar._TT["ABOUT_TIME"] : "";
|
575 |
+
} else {
|
576 |
+
text = "Help and about box text is not translated into this language.\n" + "If you know this language and you feel generous please update\n" + "the corresponding file in \"lang\" subdir to match calendar-en.js\n" + "and send it back to <mihai_bazon@yahoo.com> to get it into the distribution ;-)\n\n" + "Thank you!\n" + "http://dynarch.com/mishoo/calendar.epl\n";
|
577 |
+
}
|
578 |
+
alert(text);
|
579 |
+
return;
|
580 |
+
case-2:
|
581 |
+
if (year > cal.minYear) {
|
582 |
+
date.setFullYear(year - 1);
|
583 |
+
}
|
584 |
+
break;
|
585 |
+
case-1:
|
586 |
+
if (mon > 0) {
|
587 |
+
setMonth(mon - 1);
|
588 |
+
} else if (year-- > cal.minYear) {
|
589 |
+
date.setFullYear(year);
|
590 |
+
setMonth(11);
|
591 |
+
}
|
592 |
+
break;
|
593 |
+
case 1:
|
594 |
+
if (mon < 11) {
|
595 |
+
setMonth(mon + 1);
|
596 |
+
} else if (year < cal.maxYear) {
|
597 |
+
date.setFullYear(year + 1);
|
598 |
+
setMonth(0);
|
599 |
+
}
|
600 |
+
break;
|
601 |
+
case 2:
|
602 |
+
if (year < cal.maxYear) {
|
603 |
+
date.setFullYear(year + 1);
|
604 |
+
}
|
605 |
+
break;
|
606 |
+
case 100:
|
607 |
+
cal.setFirstDayOfWeek(el.fdow);
|
608 |
+
return;
|
609 |
+
case 50:
|
610 |
+
var range = el._range;
|
611 |
+
var current = el.innerHTML;
|
612 |
+
for (var i = range.length; --i >= 0;)if (range[i] == current)break;
|
613 |
+
if (ev && ev.shiftKey) {
|
614 |
+
if (--i < 0)i = range.length - 1;
|
615 |
+
} else if (++i >= range.length)i = 0;
|
616 |
+
var newval = range[i];
|
617 |
+
el.innerHTML = newval;
|
618 |
+
cal.onUpdateTime();
|
619 |
+
return;
|
620 |
+
case 0:
|
621 |
+
if ((typeof cal.getDateStatus == "function") && cal.getDateStatus(date, date.getFullYear(), date.getMonth(), date.getDate())) {
|
622 |
+
return false;
|
623 |
+
}
|
624 |
+
break;
|
625 |
+
}
|
626 |
+
if (!date.equalsTo(cal.date)) {
|
627 |
+
cal.setDate(date);
|
628 |
+
newdate = true;
|
629 |
+
} else if (el.navtype == 0)newdate = closing = true;
|
630 |
+
}
|
631 |
+
if (newdate) {
|
632 |
+
ev && cal.callHandler();
|
633 |
+
}
|
634 |
+
if (closing) {
|
635 |
+
Calendar.removeClass(el, "hilite");
|
636 |
+
ev && cal.callCloseHandler();
|
637 |
+
}
|
638 |
+
};
|
639 |
+
Calendar.prototype.create = function (_par) {
|
640 |
+
var parent = null;
|
641 |
+
if (!_par) {
|
642 |
+
parent = document.getElementsByTagName("body")[0];
|
643 |
+
this.isPopup = true;
|
644 |
+
} else {
|
645 |
+
parent = _par;
|
646 |
+
this.isPopup = false;
|
647 |
+
}
|
648 |
+
this.date = this.dateStr ? new Date(this.dateStr) : new Date();
|
649 |
+
var table = Calendar.createElement("table");
|
650 |
+
this.table = table;
|
651 |
+
table.cellSpacing = 0;
|
652 |
+
table.cellPadding = 0;
|
653 |
+
table.calendar = this;
|
654 |
+
Calendar.addEvent(table, "mousedown", Calendar.tableMouseDown);
|
655 |
+
var div = Calendar.createElement("div");
|
656 |
+
this.element = div;
|
657 |
+
div.className = "calendar";
|
658 |
+
if (this.isPopup) {
|
659 |
+
div.style.position = "absolute";
|
660 |
+
div.style.display = "none";
|
661 |
+
}
|
662 |
+
div.appendChild(table);
|
663 |
+
var thead = Calendar.createElement("thead", table);
|
664 |
+
var cell = null;
|
665 |
+
var row = null;
|
666 |
+
var cal = this;
|
667 |
+
var hh = function (text, cs, navtype) {
|
668 |
+
cell = Calendar.createElement("td", row);
|
669 |
+
cell.colSpan = cs;
|
670 |
+
cell.className = "button";
|
671 |
+
if (navtype != 0 && Math.abs(navtype) <= 2)cell.className += " nav";
|
672 |
+
Calendar._add_evs(cell);
|
673 |
+
cell.calendar = cal;
|
674 |
+
cell.navtype = navtype;
|
675 |
+
cell.innerHTML = "<div unselectable='on'>" + text + "</div>";
|
676 |
+
return cell;
|
677 |
+
};
|
678 |
+
row = Calendar.createElement("tr", thead);
|
679 |
+
var title_length = 6;
|
680 |
+
(this.isPopup) && --title_length;
|
681 |
+
(this.weekNumbers) && ++title_length;
|
682 |
+
hh("?", 1, 400).ttip = Calendar._TT["INFO"];
|
683 |
+
this.title = hh("", title_length, 300);
|
684 |
+
this.title.className = "title";
|
685 |
+
if (this.isPopup) {
|
686 |
+
this.title.ttip = Calendar._TT["DRAG_TO_MOVE"];
|
687 |
+
this.title.style.cursor = "move";
|
688 |
+
hh("×", 1, 200).ttip = Calendar._TT["CLOSE"];
|
689 |
+
}
|
690 |
+
row = Calendar.createElement("tr", thead);
|
691 |
+
row.className = "headrow";
|
692 |
+
this._nav_py = hh("«", 1, -2);
|
693 |
+
this._nav_py.ttip = Calendar._TT["PREV_YEAR"];
|
694 |
+
this._nav_pm = hh("‹", 1, -1);
|
695 |
+
this._nav_pm.ttip = Calendar._TT["PREV_MONTH"];
|
696 |
+
this._nav_now = hh(Calendar._TT["TODAY"], this.weekNumbers ? 4 : 3, 0);
|
697 |
+
this._nav_now.ttip = Calendar._TT["GO_TODAY"];
|
698 |
+
this._nav_nm = hh("›", 1, 1);
|
699 |
+
this._nav_nm.ttip = Calendar._TT["NEXT_MONTH"];
|
700 |
+
this._nav_ny = hh("»", 1, 2);
|
701 |
+
this._nav_ny.ttip = Calendar._TT["NEXT_YEAR"];
|
702 |
+
row = Calendar.createElement("tr", thead);
|
703 |
+
row.className = "daynames";
|
704 |
+
if (this.weekNumbers) {
|
705 |
+
cell = Calendar.createElement("td", row);
|
706 |
+
cell.className = "name wn";
|
707 |
+
cell.innerHTML = Calendar._TT["WK"];
|
708 |
+
}
|
709 |
+
for (var i = 7; i > 0; --i) {
|
710 |
+
cell = Calendar.createElement("td", row);
|
711 |
+
if (!i) {
|
712 |
+
cell.navtype = 100;
|
713 |
+
cell.calendar = this;
|
714 |
+
Calendar._add_evs(cell);
|
715 |
+
}
|
716 |
+
}
|
717 |
+
this.firstdayname = (this.weekNumbers) ? row.firstChild.nextSibling : row.firstChild;
|
718 |
+
this._displayWeekdays();
|
719 |
+
var tbody = Calendar.createElement("tbody", table);
|
720 |
+
this.tbody = tbody;
|
721 |
+
for (i = 6; i > 0; --i) {
|
722 |
+
row = Calendar.createElement("tr", tbody);
|
723 |
+
if (this.weekNumbers) {
|
724 |
+
cell = Calendar.createElement("td", row);
|
725 |
+
}
|
726 |
+
for (var j = 7; j > 0; --j) {
|
727 |
+
cell = Calendar.createElement("td", row);
|
728 |
+
cell.calendar = this;
|
729 |
+
Calendar._add_evs(cell);
|
730 |
+
}
|
731 |
+
}
|
732 |
+
if (this.showsTime) {
|
733 |
+
row = Calendar.createElement("tr", tbody);
|
734 |
+
row.className = "time";
|
735 |
+
cell = Calendar.createElement("td", row);
|
736 |
+
cell.className = "time";
|
737 |
+
cell.colSpan = 2;
|
738 |
+
cell.innerHTML = Calendar._TT["TIME"] || " ";
|
739 |
+
cell = Calendar.createElement("td", row);
|
740 |
+
cell.className = "time";
|
741 |
+
cell.colSpan = this.weekNumbers ? 4 : 3;
|
742 |
+
(function () {
|
743 |
+
function makeTimePart(className, init, range_start, range_end) {
|
744 |
+
var part = Calendar.createElement("span", cell);
|
745 |
+
part.className = className;
|
746 |
+
part.innerHTML = init;
|
747 |
+
part.calendar = cal;
|
748 |
+
part.ttip = Calendar._TT["TIME_PART"];
|
749 |
+
part.navtype = 50;
|
750 |
+
part._range = [];
|
751 |
+
if (typeof range_start != "number")part._range = range_start; else {
|
752 |
+
for (var i = range_start; i <= range_end; ++i) {
|
753 |
+
var txt;
|
754 |
+
if (i < 10 && range_end >= 10)txt = '0' + i; else txt = '' + i;
|
755 |
+
part._range[part._range.length] = txt;
|
756 |
+
}
|
757 |
+
}
|
758 |
+
Calendar._add_evs(part);
|
759 |
+
return part;
|
760 |
+
};
|
761 |
+
var hrs = cal.date.getHours();
|
762 |
+
var mins = cal.date.getMinutes();
|
763 |
+
var t12 = !cal.time24;
|
764 |
+
var pm = (hrs > 12);
|
765 |
+
if (t12 && pm)hrs -= 12;
|
766 |
+
var H = makeTimePart("hour", hrs, t12 ? 1 : 0, t12 ? 12 : 23);
|
767 |
+
var span = Calendar.createElement("span", cell);
|
768 |
+
span.innerHTML = ":";
|
769 |
+
span.className = "colon";
|
770 |
+
var M = makeTimePart("minute", mins, 0, 59);
|
771 |
+
var AP = null;
|
772 |
+
cell = Calendar.createElement("td", row);
|
773 |
+
cell.className = "time";
|
774 |
+
cell.colSpan = 2;
|
775 |
+
if (t12)AP = makeTimePart("ampm", pm ? "pm" : "am", ["am", "pm"]); else cell.innerHTML = " ";
|
776 |
+
cal.onSetTime = function () {
|
777 |
+
var pm, hrs = this.date.getHours(), mins = this.date.getMinutes();
|
778 |
+
if (t12) {
|
779 |
+
pm = (hrs >= 12);
|
780 |
+
if (pm)hrs -= 12;
|
781 |
+
if (hrs == 0)hrs = 12;
|
782 |
+
AP.innerHTML = pm ? "pm" : "am";
|
783 |
+
}
|
784 |
+
H.innerHTML = (hrs < 10) ? ("0" + hrs) : hrs;
|
785 |
+
M.innerHTML = (mins < 10) ? ("0" + mins) : mins;
|
786 |
+
};
|
787 |
+
cal.onUpdateTime = function () {
|
788 |
+
var date = this.date;
|
789 |
+
var h = parseInt(H.innerHTML, 10);
|
790 |
+
if (t12) {
|
791 |
+
if (/pm/i.test(AP.innerHTML) && h < 12)h += 12; else if (/am/i.test(AP.innerHTML) && h == 12)h = 0;
|
792 |
+
}
|
793 |
+
var d = date.getDate();
|
794 |
+
var m = date.getMonth();
|
795 |
+
var y = date.getFullYear();
|
796 |
+
date.setHours(h);
|
797 |
+
date.setMinutes(parseInt(M.innerHTML, 10));
|
798 |
+
date.setFullYear(y);
|
799 |
+
date.setMonth(m);
|
800 |
+
date.setDate(d);
|
801 |
+
this.dateClicked = false;
|
802 |
+
this.callHandler();
|
803 |
+
};
|
804 |
+
})();
|
805 |
+
} else {
|
806 |
+
this.onSetTime = this.onUpdateTime = function () {
|
807 |
+
};
|
808 |
+
}
|
809 |
+
var tfoot = Calendar.createElement("tfoot", table);
|
810 |
+
row = Calendar.createElement("tr", tfoot);
|
811 |
+
row.className = "footrow";
|
812 |
+
cell = hh(Calendar._TT["SEL_DATE"], this.weekNumbers ? 8 : 7, 300);
|
813 |
+
cell.className = "ttip";
|
814 |
+
if (this.isPopup) {
|
815 |
+
cell.ttip = Calendar._TT["DRAG_TO_MOVE"];
|
816 |
+
cell.style.cursor = "move";
|
817 |
+
}
|
818 |
+
this.tooltips = cell;
|
819 |
+
div = Calendar.createElement("div", this.element);
|
820 |
+
this.monthsCombo = div;
|
821 |
+
div.className = "combo";
|
822 |
+
for (i = 0; i < Calendar._MN.length; ++i) {
|
823 |
+
var mn = Calendar.createElement("div");
|
824 |
+
mn.className = Calendar.is_ie ? "label-IEfix" : "label";
|
825 |
+
mn.month = i;
|
826 |
+
mn.innerHTML = Calendar._SMN[i];
|
827 |
+
div.appendChild(mn);
|
828 |
+
}
|
829 |
+
div = Calendar.createElement("div", this.element);
|
830 |
+
this.yearsCombo = div;
|
831 |
+
div.className = "combo";
|
832 |
+
for (i = 12; i > 0; --i) {
|
833 |
+
var yr = Calendar.createElement("div");
|
834 |
+
yr.className = Calendar.is_ie ? "label-IEfix" : "label";
|
835 |
+
div.appendChild(yr);
|
836 |
+
}
|
837 |
+
this._init(this.firstDayOfWeek, this.date);
|
838 |
+
parent.appendChild(this.element);
|
839 |
+
};
|
840 |
+
Calendar._keyEvent = function (ev) {
|
841 |
+
var cal = window._dynarch_popupCalendar;
|
842 |
+
if (!cal || cal.multiple)return false;
|
843 |
+
(Calendar.is_ie) && (ev = window.event);
|
844 |
+
var act = (Calendar.is_ie || ev.type == "keypress"), K = ev.keyCode;
|
845 |
+
if (ev.ctrlKey) {
|
846 |
+
switch (K) {
|
847 |
+
case 37:
|
848 |
+
act && Calendar.cellClick(cal._nav_pm);
|
849 |
+
break;
|
850 |
+
case 38:
|
851 |
+
act && Calendar.cellClick(cal._nav_py);
|
852 |
+
break;
|
853 |
+
case 39:
|
854 |
+
act && Calendar.cellClick(cal._nav_nm);
|
855 |
+
break;
|
856 |
+
case 40:
|
857 |
+
act && Calendar.cellClick(cal._nav_ny);
|
858 |
+
break;
|
859 |
+
default:
|
860 |
+
return false;
|
861 |
+
}
|
862 |
+
} else switch (K) {
|
863 |
+
case 32:
|
864 |
+
Calendar.cellClick(cal._nav_now);
|
865 |
+
break;
|
866 |
+
case 27:
|
867 |
+
act && cal.callCloseHandler();
|
868 |
+
break;
|
869 |
+
case 37:
|
870 |
+
case 38:
|
871 |
+
case 39:
|
872 |
+
case 40:
|
873 |
+
if (act) {
|
874 |
+
var prev, x, y, ne, el, step;
|
875 |
+
prev = K == 37 || K == 38;
|
876 |
+
step = (K == 37 || K == 39) ? 1 : 7;
|
877 |
+
function setVars() {
|
878 |
+
el = cal.currentDateEl;
|
879 |
+
var p = el.pos;
|
880 |
+
x = p & 15;
|
881 |
+
y = p >> 4;
|
882 |
+
ne = cal.ar_days[y][x];
|
883 |
+
};
|
884 |
+
setVars();
|
885 |
+
function prevMonth() {
|
886 |
+
var date = new Date(cal.date);
|
887 |
+
date.setDate(date.getDate() - step);
|
888 |
+
cal.setDate(date);
|
889 |
+
};
|
890 |
+
function nextMonth() {
|
891 |
+
var date = new Date(cal.date);
|
892 |
+
date.setDate(date.getDate() + step);
|
893 |
+
cal.setDate(date);
|
894 |
+
};
|
895 |
+
while (1) {
|
896 |
+
switch (K) {
|
897 |
+
case 37:
|
898 |
+
if (--x >= 0)ne = cal.ar_days[y][x]; else {
|
899 |
+
x = 6;
|
900 |
+
K = 38;
|
901 |
+
continue;
|
902 |
+
}
|
903 |
+
break;
|
904 |
+
case 38:
|
905 |
+
if (--y >= 0)ne = cal.ar_days[y][x]; else {
|
906 |
+
prevMonth();
|
907 |
+
setVars();
|
908 |
+
}
|
909 |
+
break;
|
910 |
+
case 39:
|
911 |
+
if (++x < 7)ne = cal.ar_days[y][x]; else {
|
912 |
+
x = 0;
|
913 |
+
K = 40;
|
914 |
+
continue;
|
915 |
+
}
|
916 |
+
break;
|
917 |
+
case 40:
|
918 |
+
if (++y < cal.ar_days.length)ne = cal.ar_days[y][x]; else {
|
919 |
+
nextMonth();
|
920 |
+
setVars();
|
921 |
+
}
|
922 |
+
break;
|
923 |
+
}
|
924 |
+
break;
|
925 |
+
}
|
926 |
+
if (ne) {
|
927 |
+
if (!ne.disabled)Calendar.cellClick(ne); else if (prev)prevMonth(); else nextMonth();
|
928 |
+
}
|
929 |
+
}
|
930 |
+
break;
|
931 |
+
case 13:
|
932 |
+
if (act)Calendar.cellClick(cal.currentDateEl, ev);
|
933 |
+
break;
|
934 |
+
default:
|
935 |
+
return false;
|
936 |
+
}
|
937 |
+
return Calendar.stopEvent(ev);
|
938 |
+
};
|
939 |
+
Calendar.prototype._init = function (firstDayOfWeek, date) {
|
940 |
+
var today = new Date(), TY = today.getFullYear(), TM = today.getMonth(), TD = today.getDate();
|
941 |
+
this.table.style.visibility = "hidden";
|
942 |
+
var year = date.getFullYear();
|
943 |
+
if (year < this.minYear) {
|
944 |
+
year = this.minYear;
|
945 |
+
date.setFullYear(year);
|
946 |
+
} else if (year > this.maxYear) {
|
947 |
+
year = this.maxYear;
|
948 |
+
date.setFullYear(year);
|
949 |
+
}
|
950 |
+
this.firstDayOfWeek = firstDayOfWeek;
|
951 |
+
this.date = new Date(date);
|
952 |
+
var month = date.getMonth();
|
953 |
+
var mday = date.getDate();
|
954 |
+
var no_days = date.getMonthDays();
|
955 |
+
date.setDate(1);
|
956 |
+
var day1 = (date.getDay() - this.firstDayOfWeek) % 7;
|
957 |
+
if (day1 < 0)day1 += 7;
|
958 |
+
date.setDate(-day1);
|
959 |
+
date.setDate(date.getDate() + 1);
|
960 |
+
var row = this.tbody.firstChild;
|
961 |
+
var MN = Calendar._SMN[month];
|
962 |
+
var ar_days = this.ar_days = new Array();
|
963 |
+
var weekend = Calendar._TT["WEEKEND"];
|
964 |
+
var dates = this.multiple ? (this.datesCells = {}) : null;
|
965 |
+
for (var i = 0; i < 6; ++i, row = row.nextSibling) {
|
966 |
+
var cell = row.firstChild;
|
967 |
+
if (this.weekNumbers) {
|
968 |
+
cell.className = "day wn";
|
969 |
+
cell.innerHTML = date.getWeekNumber();
|
970 |
+
cell = cell.nextSibling;
|
971 |
+
}
|
972 |
+
row.className = "daysrow";
|
973 |
+
var hasdays = false, iday, dpos = ar_days[i] = [];
|
974 |
+
for (var j = 0; j < 7; ++j, cell = cell.nextSibling, date.setDate(iday + 1)) {
|
975 |
+
iday = date.getDate();
|
976 |
+
var wday = date.getDay();
|
977 |
+
cell.className = "day";
|
978 |
+
cell.pos = i << 4 | j;
|
979 |
+
dpos[j] = cell;
|
980 |
+
var current_month = (date.getMonth() == month);
|
981 |
+
if (!current_month) {
|
982 |
+
if (this.showsOtherMonths) {
|
983 |
+
cell.className += " othermonth";
|
984 |
+
cell.otherMonth = true;
|
985 |
+
} else {
|
986 |
+
cell.className = "emptycell";
|
987 |
+
cell.innerHTML = " ";
|
988 |
+
cell.disabled = true;
|
989 |
+
continue;
|
990 |
+
}
|
991 |
+
} else {
|
992 |
+
cell.otherMonth = false;
|
993 |
+
hasdays = true;
|
994 |
+
}
|
995 |
+
cell.disabled = false;
|
996 |
+
cell.innerHTML = this.getDateText ? this.getDateText(date, iday) : iday;
|
997 |
+
if (dates)dates[date.print("%Y%m%d")] = cell;
|
998 |
+
if (this.getDateStatus) {
|
999 |
+
var status = this.getDateStatus(date, year, month, iday);
|
1000 |
+
if (this.getDateToolTip) {
|
1001 |
+
var toolTip = this.getDateToolTip(date, year, month, iday);
|
1002 |
+
if (toolTip)cell.title = toolTip;
|
1003 |
+
}
|
1004 |
+
if (status === true) {
|
1005 |
+
cell.className += " disabled";
|
1006 |
+
cell.disabled = true;
|
1007 |
+
} else {
|
1008 |
+
if (/disabled/i.test(status))cell.disabled = true;
|
1009 |
+
cell.className += " " + status;
|
1010 |
+
}
|
1011 |
+
}
|
1012 |
+
if (!cell.disabled) {
|
1013 |
+
cell.caldate = new Date(date);
|
1014 |
+
cell.ttip = "_";
|
1015 |
+
if (!this.multiple && current_month && iday == mday && this.hiliteToday) {
|
1016 |
+
cell.className += " selected";
|
1017 |
+
this.currentDateEl = cell;
|
1018 |
+
}
|
1019 |
+
if (date.getFullYear() == TY && date.getMonth() == TM && iday == TD) {
|
1020 |
+
cell.className += " today";
|
1021 |
+
cell.ttip += Calendar._TT["PART_TODAY"];
|
1022 |
+
}
|
1023 |
+
if (weekend.indexOf(wday.toString()) != -1)cell.className += cell.otherMonth ? " oweekend" : " weekend";
|
1024 |
+
}
|
1025 |
+
}
|
1026 |
+
if (!(hasdays || this.showsOtherMonths))row.className = "emptyrow";
|
1027 |
+
}
|
1028 |
+
this.title.innerHTML = Calendar._MN[month] + ", " + year;
|
1029 |
+
this.onSetTime();
|
1030 |
+
this.table.style.visibility = "visible";
|
1031 |
+
this._initMultipleDates();
|
1032 |
+
};
|
1033 |
+
Calendar.prototype._initMultipleDates = function () {
|
1034 |
+
if (this.multiple) {
|
1035 |
+
for (var i in this.multiple) {
|
1036 |
+
var cell = this.datesCells[i];
|
1037 |
+
var d = this.multiple[i];
|
1038 |
+
if (!d)continue;
|
1039 |
+
if (cell)cell.className += " selected";
|
1040 |
+
}
|
1041 |
+
}
|
1042 |
+
};
|
1043 |
+
Calendar.prototype._toggleMultipleDate = function (date) {
|
1044 |
+
if (this.multiple) {
|
1045 |
+
var ds = date.print("%Y%m%d");
|
1046 |
+
var cell = this.datesCells[ds];
|
1047 |
+
if (cell) {
|
1048 |
+
var d = this.multiple[ds];
|
1049 |
+
if (!d) {
|
1050 |
+
Calendar.addClass(cell, "selected");
|
1051 |
+
this.multiple[ds] = date;
|
1052 |
+
} else {
|
1053 |
+
Calendar.removeClass(cell, "selected");
|
1054 |
+
delete this.multiple[ds];
|
1055 |
+
}
|
1056 |
+
}
|
1057 |
+
}
|
1058 |
+
};
|
1059 |
+
Calendar.prototype.setDateToolTipHandler = function (unaryFunction) {
|
1060 |
+
this.getDateToolTip = unaryFunction;
|
1061 |
+
};
|
1062 |
+
Calendar.prototype.setDate = function (date) {
|
1063 |
+
if (!date.equalsTo(this.date)) {
|
1064 |
+
this._init(this.firstDayOfWeek, date);
|
1065 |
+
}
|
1066 |
+
};
|
1067 |
+
Calendar.prototype.refresh = function () {
|
1068 |
+
this._init(this.firstDayOfWeek, this.date);
|
1069 |
+
};
|
1070 |
+
Calendar.prototype.setFirstDayOfWeek = function (firstDayOfWeek) {
|
1071 |
+
this._init(firstDayOfWeek, this.date);
|
1072 |
+
this._displayWeekdays();
|
1073 |
+
};
|
1074 |
+
Calendar.prototype.setDateStatusHandler = Calendar.prototype.setDisabledHandler = function (unaryFunction) {
|
1075 |
+
this.getDateStatus = unaryFunction;
|
1076 |
+
};
|
1077 |
+
Calendar.prototype.setRange = function (a, z) {
|
1078 |
+
this.minYear = a;
|
1079 |
+
this.maxYear = z;
|
1080 |
+
};
|
1081 |
+
Calendar.prototype.callHandler = function () {
|
1082 |
+
if (this.onSelected) {
|
1083 |
+
this.onSelected(this, this.date.print(this.dateFormat));
|
1084 |
+
}
|
1085 |
+
};
|
1086 |
+
Calendar.prototype.callCloseHandler = function () {
|
1087 |
+
if (this.onClose) {
|
1088 |
+
this.onClose(this);
|
1089 |
+
}
|
1090 |
+
this.hideShowCovered();
|
1091 |
+
};
|
1092 |
+
Calendar.prototype.destroy = function () {
|
1093 |
+
var el = this.element.parentNode;
|
1094 |
+
el.removeChild(this.element);
|
1095 |
+
Calendar._C = null;
|
1096 |
+
window._dynarch_popupCalendar = null;
|
1097 |
+
};
|
1098 |
+
Calendar.prototype.reparent = function (new_parent) {
|
1099 |
+
var el = this.element;
|
1100 |
+
el.parentNode.removeChild(el);
|
1101 |
+
new_parent.appendChild(el);
|
1102 |
+
};
|
1103 |
+
Calendar._checkCalendar = function (ev) {
|
1104 |
+
var calendar = window._dynarch_popupCalendar;
|
1105 |
+
if (!calendar) {
|
1106 |
+
return false;
|
1107 |
+
}
|
1108 |
+
var el = Calendar.is_ie ? Calendar.getElement(ev) : Calendar.getTargetElement(ev);
|
1109 |
+
for (; el != null && el != calendar.element; el = el.parentNode);
|
1110 |
+
if (el == null) {
|
1111 |
+
window._dynarch_popupCalendar.callCloseHandler();
|
1112 |
+
return Calendar.stopEvent(ev);
|
1113 |
+
}
|
1114 |
+
};
|
1115 |
+
Calendar.prototype.show = function () {
|
1116 |
+
var rows = this.table.getElementsByTagName("tr");
|
1117 |
+
for (var i = rows.length; i > 0;) {
|
1118 |
+
var row = rows[--i];
|
1119 |
+
Calendar.removeClass(row, "rowhilite");
|
1120 |
+
var cells = row.getElementsByTagName("td");
|
1121 |
+
for (var j = cells.length; j > 0;) {
|
1122 |
+
var cell = cells[--j];
|
1123 |
+
Calendar.removeClass(cell, "hilite");
|
1124 |
+
Calendar.removeClass(cell, "active");
|
1125 |
+
}
|
1126 |
+
}
|
1127 |
+
this.element.style.display = "block";
|
1128 |
+
this.hidden = false;
|
1129 |
+
if (this.isPopup) {
|
1130 |
+
window._dynarch_popupCalendar = this;
|
1131 |
+
Calendar.addEvent(document, "keydown", Calendar._keyEvent);
|
1132 |
+
Calendar.addEvent(document, "keypress", Calendar._keyEvent);
|
1133 |
+
Calendar.addEvent(document, "mousedown", Calendar._checkCalendar);
|
1134 |
+
}
|
1135 |
+
this.hideShowCovered();
|
1136 |
+
};
|
1137 |
+
Calendar.prototype.hide = function () {
|
1138 |
+
if (this.isPopup) {
|
1139 |
+
Calendar.removeEvent(document, "keydown", Calendar._keyEvent);
|
1140 |
+
Calendar.removeEvent(document, "keypress", Calendar._keyEvent);
|
1141 |
+
Calendar.removeEvent(document, "mousedown", Calendar._checkCalendar);
|
1142 |
+
}
|
1143 |
+
this.element.style.display = "none";
|
1144 |
+
this.hidden = true;
|
1145 |
+
this.hideShowCovered();
|
1146 |
+
};
|
1147 |
+
Calendar.prototype.showAt = function (x, y) {
|
1148 |
+
var s = this.element.style;
|
1149 |
+
s.left = x + "px";
|
1150 |
+
s.top = y + "px";
|
1151 |
+
this.show();
|
1152 |
+
};
|
1153 |
+
Calendar.prototype.showAtElement = function (el, opts) {
|
1154 |
+
var self = this;
|
1155 |
+
var p = Calendar.getAbsolutePos(el);
|
1156 |
+
if (!opts || typeof opts != "string") {
|
1157 |
+
this.showAt(p.x, p.y + el.offsetHeight);
|
1158 |
+
return true;
|
1159 |
+
}
|
1160 |
+
function fixPosition(box) {
|
1161 |
+
if (box.x < 0)box.x = 0;
|
1162 |
+
if (box.y < 0)box.y = 0;
|
1163 |
+
var cp = document.createElement("div");
|
1164 |
+
var s = cp.style;
|
1165 |
+
s.position = "absolute";
|
1166 |
+
s.right = s.bottom = s.width = s.height = "0px";
|
1167 |
+
document.body.appendChild(cp);
|
1168 |
+
var br = Calendar.getAbsolutePos(cp);
|
1169 |
+
document.body.removeChild(cp);
|
1170 |
+
if (Calendar.is_ie) {
|
1171 |
+
br.y += document.body.scrollTop;
|
1172 |
+
br.x += document.body.scrollLeft;
|
1173 |
+
} else {
|
1174 |
+
br.y += window.scrollY;
|
1175 |
+
br.x += window.scrollX;
|
1176 |
+
}
|
1177 |
+
var tmp = box.x + box.width - br.x;
|
1178 |
+
if (tmp > 0)box.x -= tmp;
|
1179 |
+
tmp = box.y + box.height - br.y;
|
1180 |
+
if (tmp > 0)box.y -= tmp;
|
1181 |
+
};
|
1182 |
+
this.element.style.display = "block";
|
1183 |
+
Calendar.continuation_for_the_fucking_khtml_browser = function () {
|
1184 |
+
var w = self.element.offsetWidth;
|
1185 |
+
var h = self.element.offsetHeight;
|
1186 |
+
self.element.style.display = "none";
|
1187 |
+
var valign = opts.substr(0, 1);
|
1188 |
+
var halign = "l";
|
1189 |
+
if (opts.length > 1) {
|
1190 |
+
halign = opts.substr(1, 1);
|
1191 |
+
}
|
1192 |
+
switch (valign) {
|
1193 |
+
case "T":
|
1194 |
+
p.y -= h;
|
1195 |
+
break;
|
1196 |
+
case "B":
|
1197 |
+
p.y += el.offsetHeight;
|
1198 |
+
break;
|
1199 |
+
case "C":
|
1200 |
+
p.y += (el.offsetHeight - h) / 2;
|
1201 |
+
break;
|
1202 |
+
case "t":
|
1203 |
+
p.y += el.offsetHeight - h;
|
1204 |
+
break;
|
1205 |
+
case "b":
|
1206 |
+
break;
|
1207 |
+
}
|
1208 |
+
switch (halign) {
|
1209 |
+
case "L":
|
1210 |
+
p.x -= w;
|
1211 |
+
break;
|
1212 |
+
case "R":
|
1213 |
+
p.x += el.offsetWidth;
|
1214 |
+
break;
|
1215 |
+
case "C":
|
1216 |
+
p.x += (el.offsetWidth - w) / 2;
|
1217 |
+
break;
|
1218 |
+
case "l":
|
1219 |
+
p.x += el.offsetWidth - w;
|
1220 |
+
break;
|
1221 |
+
case "r":
|
1222 |
+
break;
|
1223 |
+
}
|
1224 |
+
p.width = w;
|
1225 |
+
p.height = h + 40;
|
1226 |
+
self.monthsCombo.style.display = "none";
|
1227 |
+
fixPosition(p);
|
1228 |
+
self.showAt(p.x, p.y);
|
1229 |
+
};
|
1230 |
+
if (Calendar.is_khtml)setTimeout("Calendar.continuation_for_the_fucking_khtml_browser()", 10); else Calendar.continuation_for_the_fucking_khtml_browser();
|
1231 |
+
};
|
1232 |
+
Calendar.prototype.setDateFormat = function (str) {
|
1233 |
+
this.dateFormat = str;
|
1234 |
+
};
|
1235 |
+
Calendar.prototype.setTtDateFormat = function (str) {
|
1236 |
+
this.ttDateFormat = str;
|
1237 |
+
};
|
1238 |
+
Calendar.prototype.parseDate = function (str, fmt) {
|
1239 |
+
if (!fmt)fmt = this.dateFormat;
|
1240 |
+
this.setDate(Date.parseDate(str, fmt));
|
1241 |
+
};
|
1242 |
+
Calendar.prototype.hideShowCovered = function () {
|
1243 |
+
if (!Calendar.is_ie && !Calendar.is_opera)return;
|
1244 |
+
function getVisib(obj) {
|
1245 |
+
var value = obj.style.visibility;
|
1246 |
+
if (!value) {
|
1247 |
+
if (document.defaultView && typeof(document.defaultView.getComputedStyle) == "function") {
|
1248 |
+
if (!Calendar.is_khtml)value = document.defaultView.getComputedStyle(obj, "").getPropertyValue("visibility"); else value = '';
|
1249 |
+
} else if (obj.currentStyle) {
|
1250 |
+
value = obj.currentStyle.visibility;
|
1251 |
+
} else value = '';
|
1252 |
+
}
|
1253 |
+
return value;
|
1254 |
+
};
|
1255 |
+
var tags = new Array("applet", "iframe", "select");
|
1256 |
+
var el = this.element;
|
1257 |
+
var p = Calendar.getAbsolutePos(el);
|
1258 |
+
var EX1 = p.x;
|
1259 |
+
var EX2 = el.offsetWidth + EX1;
|
1260 |
+
var EY1 = p.y;
|
1261 |
+
var EY2 = el.offsetHeight + EY1;
|
1262 |
+
for (var k = tags.length; k > 0;) {
|
1263 |
+
var ar = document.getElementsByTagName(tags[--k]);
|
1264 |
+
var cc = null;
|
1265 |
+
for (var i = ar.length; i > 0;) {
|
1266 |
+
cc = ar[--i];
|
1267 |
+
p = Calendar.getAbsolutePos(cc);
|
1268 |
+
var CX1 = p.x;
|
1269 |
+
var CX2 = cc.offsetWidth + CX1;
|
1270 |
+
var CY1 = p.y;
|
1271 |
+
var CY2 = cc.offsetHeight + CY1;
|
1272 |
+
if (this.hidden || (CX1 > EX2) || (CX2 < EX1) || (CY1 > EY2) || (CY2 < EY1)) {
|
1273 |
+
if (!cc.__msh_save_visibility) {
|
1274 |
+
cc.__msh_save_visibility = getVisib(cc);
|
1275 |
+
}
|
1276 |
+
cc.style.visibility = cc.__msh_save_visibility;
|
1277 |
+
} else {
|
1278 |
+
if (!cc.__msh_save_visibility) {
|
1279 |
+
cc.__msh_save_visibility = getVisib(cc);
|
1280 |
+
}
|
1281 |
+
cc.style.visibility = "hidden";
|
1282 |
+
}
|
1283 |
+
}
|
1284 |
+
}
|
1285 |
+
};
|
1286 |
+
Calendar.prototype._displayWeekdays = function () {
|
1287 |
+
var fdow = this.firstDayOfWeek;
|
1288 |
+
var cell = this.firstdayname;
|
1289 |
+
var weekend = Calendar._TT["WEEKEND"];
|
1290 |
+
for (var i = 0; i < 7; ++i) {
|
1291 |
+
cell.className = "day name";
|
1292 |
+
var realday = (i + fdow) % 7;
|
1293 |
+
if (i) {
|
1294 |
+
cell.ttip = Calendar._TT["DAY_FIRST"].replace("%s", Calendar._DN[realday]);
|
1295 |
+
cell.navtype = 100;
|
1296 |
+
cell.calendar = this;
|
1297 |
+
cell.fdow = realday;
|
1298 |
+
Calendar._add_evs(cell);
|
1299 |
+
}
|
1300 |
+
if (weekend.indexOf(realday.toString()) != -1) {
|
1301 |
+
Calendar.addClass(cell, "weekend");
|
1302 |
+
}
|
1303 |
+
cell.innerHTML = Calendar._SDN[(i + fdow) % 7];
|
1304 |
+
cell = cell.nextSibling;
|
1305 |
+
}
|
1306 |
+
};
|
1307 |
+
Calendar.prototype._hideCombos = function () {
|
1308 |
+
this.monthsCombo.style.display = "none";
|
1309 |
+
this.yearsCombo.style.display = "none";
|
1310 |
+
};
|
1311 |
+
Calendar.prototype._dragStart = function (ev) {
|
1312 |
+
if (this.dragging) {
|
1313 |
+
return;
|
1314 |
+
}
|
1315 |
+
this.dragging = true;
|
1316 |
+
var posX;
|
1317 |
+
var posY;
|
1318 |
+
if (Calendar.is_ie) {
|
1319 |
+
posY = window.event.clientY + document.body.scrollTop;
|
1320 |
+
posX = window.event.clientX + document.body.scrollLeft;
|
1321 |
+
} else {
|
1322 |
+
posY = ev.clientY + window.scrollY;
|
1323 |
+
posX = ev.clientX + window.scrollX;
|
1324 |
+
}
|
1325 |
+
var st = this.element.style;
|
1326 |
+
this.xOffs = posX - parseInt(st.left);
|
1327 |
+
this.yOffs = posY - parseInt(st.top);
|
1328 |
+
with (Calendar) {
|
1329 |
+
addEvent(document, "mousemove", calDragIt);
|
1330 |
+
addEvent(document, "mouseup", calDragEnd);
|
1331 |
+
}
|
1332 |
+
};
|
1333 |
+
Date._MD = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
|
1334 |
+
Date.SECOND = 1000;
|
1335 |
+
Date.MINUTE = 60 * Date.SECOND;
|
1336 |
+
Date.HOUR = 60 * Date.MINUTE;
|
1337 |
+
Date.DAY = 24 * Date.HOUR;
|
1338 |
+
Date.WEEK = 7 * Date.DAY;
|
1339 |
+
Date.parseDate = function (str, fmt) {
|
1340 |
+
var today = new Date();
|
1341 |
+
var y = 0;
|
1342 |
+
var m = -1;
|
1343 |
+
var d = 0;
|
1344 |
+
var a = str.split(/\W+/);
|
1345 |
+
var b = fmt.match(/%./g);
|
1346 |
+
var i = 0, j = 0;
|
1347 |
+
var hr = 0;
|
1348 |
+
var min = 0;
|
1349 |
+
for (i = 0; i < a.length; ++i) {
|
1350 |
+
if (!a[i])continue;
|
1351 |
+
switch (b[i]) {
|
1352 |
+
case "%d":
|
1353 |
+
case "%e":
|
1354 |
+
d = parseInt(a[i], 10);
|
1355 |
+
break;
|
1356 |
+
case "%m":
|
1357 |
+
m = parseInt(a[i], 10) - 1;
|
1358 |
+
break;
|
1359 |
+
case "%Y":
|
1360 |
+
case "%y":
|
1361 |
+
y = parseInt(a[i], 10);
|
1362 |
+
(y < 100) && (y += (y > 29) ? 1900 : 2000);
|
1363 |
+
break;
|
1364 |
+
case "%b":
|
1365 |
+
case "%B":
|
1366 |
+
for (j = 0; j < 12; ++j) {
|
1367 |
+
if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) {
|
1368 |
+
m = j;
|
1369 |
+
break;
|
1370 |
+
}
|
1371 |
+
}
|
1372 |
+
break;
|
1373 |
+
case "%H":
|
1374 |
+
case "%I":
|
1375 |
+
case "%k":
|
1376 |
+
case "%l":
|
1377 |
+
hr = parseInt(a[i], 10);
|
1378 |
+
break;
|
1379 |
+
case "%P":
|
1380 |
+
case "%p":
|
1381 |
+
if (/pm/i.test(a[i]) && hr < 12)hr += 12; else if (/am/i.test(a[i]) && hr >= 12)hr -= 12;
|
1382 |
+
break;
|
1383 |
+
case "%M":
|
1384 |
+
min = parseInt(a[i], 10);
|
1385 |
+
break;
|
1386 |
+
}
|
1387 |
+
}
|
1388 |
+
if (isNaN(y))y = today.getFullYear();
|
1389 |
+
if (isNaN(m))m = today.getMonth();
|
1390 |
+
if (isNaN(d))d = today.getDate();
|
1391 |
+
if (isNaN(hr))hr = today.getHours();
|
1392 |
+
if (isNaN(min))min = today.getMinutes();
|
1393 |
+
if (y != 0 && m != -1 && d != 0)return new Date(y, m, d, hr, min, 0);
|
1394 |
+
y = 0;
|
1395 |
+
m = -1;
|
1396 |
+
d = 0;
|
1397 |
+
for (i = 0; i < a.length; ++i) {
|
1398 |
+
if (a[i].search(/[a-zA-Z]+/) != -1) {
|
1399 |
+
var t = -1;
|
1400 |
+
for (j = 0; j < 12; ++j) {
|
1401 |
+
if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) {
|
1402 |
+
t = j;
|
1403 |
+
break;
|
1404 |
+
}
|
1405 |
+
}
|
1406 |
+
if (t != -1) {
|
1407 |
+
if (m != -1) {
|
1408 |
+
d = m + 1;
|
1409 |
+
}
|
1410 |
+
m = t;
|
1411 |
+
}
|
1412 |
+
} else if (parseInt(a[i], 10) <= 12 && m == -1) {
|
1413 |
+
m = a[i] - 1;
|
1414 |
+
} else if (parseInt(a[i], 10) > 31 && y == 0) {
|
1415 |
+
y = parseInt(a[i], 10);
|
1416 |
+
(y < 100) && (y += (y > 29) ? 1900 : 2000);
|
1417 |
+
} else if (d == 0) {
|
1418 |
+
d = a[i];
|
1419 |
+
}
|
1420 |
+
}
|
1421 |
+
if (y == 0)y = today.getFullYear();
|
1422 |
+
if (m != -1 && d != 0)return new Date(y, m, d, hr, min, 0);
|
1423 |
+
return today;
|
1424 |
+
};
|
1425 |
+
Date.prototype.getMonthDays = function (month) {
|
1426 |
+
var year = this.getFullYear();
|
1427 |
+
if (typeof month == "undefined") {
|
1428 |
+
month = this.getMonth();
|
1429 |
+
}
|
1430 |
+
if (((0 == (year % 4)) && ((0 != (year % 100)) || (0 == (year % 400)))) && month == 1) {
|
1431 |
+
return 29;
|
1432 |
+
} else {
|
1433 |
+
return Date._MD[month];
|
1434 |
+
}
|
1435 |
+
};
|
1436 |
+
Date.prototype.getDayOfYear = function () {
|
1437 |
+
var now = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0);
|
1438 |
+
var then = new Date(this.getFullYear(), 0, 0, 0, 0, 0);
|
1439 |
+
var time = now - then;
|
1440 |
+
return Math.floor(time / Date.DAY);
|
1441 |
+
};
|
1442 |
+
Date.prototype.getWeekNumber = function () {
|
1443 |
+
var d = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0);
|
1444 |
+
var DoW = d.getDay();
|
1445 |
+
d.setDate(d.getDate() - (DoW + 6) % 7 + 3);
|
1446 |
+
var ms = d.valueOf();
|
1447 |
+
d.setMonth(0);
|
1448 |
+
d.setDate(4);
|
1449 |
+
return Math.round((ms - d.valueOf()) / (7 * 864e5)) + 1;
|
1450 |
+
};
|
1451 |
+
Date.prototype.equalsTo = function (date) {
|
1452 |
+
return ((this.getFullYear() == date.getFullYear()) && (this.getMonth() == date.getMonth()) && (this.getDate() == date.getDate()) && (this.getHours() == date.getHours()) && (this.getMinutes() == date.getMinutes()));
|
1453 |
+
};
|
1454 |
+
Date.prototype.setDateOnly = function (date) {
|
1455 |
+
var tmp = new Date(date);
|
1456 |
+
this.setDate(1);
|
1457 |
+
this.setFullYear(tmp.getFullYear());
|
1458 |
+
this.setMonth(tmp.getMonth());
|
1459 |
+
this.setDate(tmp.getDate());
|
1460 |
+
};
|
1461 |
+
Date.prototype.print = function (str) {
|
1462 |
+
var m = this.getMonth();
|
1463 |
+
var d = this.getDate();
|
1464 |
+
var y = this.getFullYear();
|
1465 |
+
var wn = this.getWeekNumber();
|
1466 |
+
var w = this.getDay();
|
1467 |
+
var s = {};
|
1468 |
+
var hr = this.getHours();
|
1469 |
+
var pm = (hr >= 12);
|
1470 |
+
var ir = (pm) ? (hr - 12) : hr;
|
1471 |
+
var dy = this.getDayOfYear();
|
1472 |
+
if (ir == 0)ir = 12;
|
1473 |
+
var min = this.getMinutes();
|
1474 |
+
var sec = this.getSeconds();
|
1475 |
+
s["%a"] = Calendar._SDN[w];
|
1476 |
+
s["%A"] = Calendar._DN[w];
|
1477 |
+
s["%b"] = Calendar._SMN[m];
|
1478 |
+
s["%B"] = Calendar._MN[m];
|
1479 |
+
s["%C"] = 1 + Math.floor(y / 100);
|
1480 |
+
s["%d"] = (d < 10) ? ("0" + d) : d;
|
1481 |
+
s["%e"] = d;
|
1482 |
+
s["%H"] = (hr < 10) ? ("0" + hr) : hr;
|
1483 |
+
s["%I"] = (ir < 10) ? ("0" + ir) : ir;
|
1484 |
+
s["%j"] = (dy < 100) ? ((dy < 10) ? ("00" + dy) : ("0" + dy)) : dy;
|
1485 |
+
s["%k"] = hr;
|
1486 |
+
s["%l"] = ir;
|
1487 |
+
s["%m"] = (m < 9) ? ("0" + (1 + m)) : (1 + m);
|
1488 |
+
s["%M"] = (min < 10) ? ("0" + min) : min;
|
1489 |
+
s["%n"] = "\n";
|
1490 |
+
s["%p"] = pm ? "PM" : "AM";
|
1491 |
+
s["%P"] = pm ? "pm" : "am";
|
1492 |
+
s["%s"] = Math.floor(this.getTime() / 1000);
|
1493 |
+
s["%S"] = (sec < 10) ? ("0" + sec) : sec;
|
1494 |
+
s["%t"] = "\t";
|
1495 |
+
s["%U"] = s["%W"] = s["%V"] = (wn < 10) ? ("0" + wn) : wn;
|
1496 |
+
s["%u"] = w + 1;
|
1497 |
+
s["%w"] = w;
|
1498 |
+
s["%y"] = ('' + y).substr(2, 2);
|
1499 |
+
s["%Y"] = y;
|
1500 |
+
s["%%"] = "%";
|
1501 |
+
var re = /%./g;
|
1502 |
+
if (!Calendar.is_ie5 && !Calendar.is_khtml)return str.replace(re, function (par) {
|
1503 |
+
return s[par] || par;
|
1504 |
+
});
|
1505 |
+
var a = str.match(re);
|
1506 |
+
for (var i = 0; i < a.length; i++) {
|
1507 |
+
var tmp = s[a[i]];
|
1508 |
+
if (tmp) {
|
1509 |
+
re = new RegExp(a[i], 'g');
|
1510 |
+
str = str.replace(re, tmp);
|
1511 |
+
}
|
1512 |
+
}
|
1513 |
+
return str;
|
1514 |
+
};
|
1515 |
+
Date.prototype.__msh_oldSetFullYear = Date.prototype.setFullYear;
|
1516 |
+
Date.prototype.setFullYear = function (y) {
|
1517 |
+
var d = new Date(this);
|
1518 |
+
d.__msh_oldSetFullYear(y);
|
1519 |
+
if (d.getMonth() != this.getMonth())this.setDate(28);
|
1520 |
+
this.__msh_oldSetFullYear(y);
|
1521 |
+
};
|
1522 |
+
window._dynarch_popupCalendar = null;
|
assets/js/calendar_function.js
ADDED
@@ -0,0 +1,577 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// <?php !! This fools phpdocumentor into parsing this file
|
2 |
+
/**
|
3 |
+
* @version $Id: joomla.javascript.js 14401 2010-01-26 14:10:00Z louis $
|
4 |
+
* @package Joomla
|
5 |
+
* @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
|
6 |
+
* @license GNU/GPL
|
7 |
+
* Joomla! is Free Software
|
8 |
+
*/
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Overlib Styling Declarations to allow CSS class override of styles
|
12 |
+
*
|
13 |
+
*/
|
14 |
+
var ol_fgclass = 'ol-foreground';
|
15 |
+
var ol_bgclass = 'ol-background';
|
16 |
+
var ol_textfontclass = 'ol-textfont';
|
17 |
+
var ol_captionfontclass = 'ol-captionfont';
|
18 |
+
var ol_closefontclass = 'ol-closefont';
|
19 |
+
|
20 |
+
// general utility for browsing a named array or object
|
21 |
+
function xshow(o) {
|
22 |
+
s = '';
|
23 |
+
for (e in o) {
|
24 |
+
s += e + '=' + o[e] + '\n';
|
25 |
+
}
|
26 |
+
alert(s);
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Writes a dynamically generated list
|
31 |
+
* @param string The parameters to insert into the <select> tag
|
32 |
+
* @param array A javascript array of list options in the form [key,value,text]
|
33 |
+
* @param string The key to display for the initial state of the list
|
34 |
+
* @param string The original key that was selected
|
35 |
+
* @param string The original item value that was selected
|
36 |
+
*/
|
37 |
+
function writeDynaList(selectParams, source, key, orig_key, orig_val) {
|
38 |
+
var html = '\n <select ' + selectParams + '>';
|
39 |
+
var i = 0;
|
40 |
+
for (x in source) {
|
41 |
+
if (source[x][0] == key) {
|
42 |
+
var selected = '';
|
43 |
+
if ((orig_key == key && orig_val == source[x][1]) || (i == 0 && orig_key != key)) {
|
44 |
+
selected = 'selected="selected"';
|
45 |
+
}
|
46 |
+
html += '\n <option value="' + source[x][1] + '" ' + selected + '>' + source[x][2] + '</option>';
|
47 |
+
}
|
48 |
+
i++;
|
49 |
+
}
|
50 |
+
html += '\n </select>';
|
51 |
+
|
52 |
+
document.writeln(html);
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Changes a dynamically generated list
|
57 |
+
* @param string The name of the list to change
|
58 |
+
* @param array A javascript array of list options in the form [key,value,text]
|
59 |
+
* @param string The key to display
|
60 |
+
* @param string The original key that was selected
|
61 |
+
* @param string The original item value that was selected
|
62 |
+
*/
|
63 |
+
function changeDynaList(listname, source, key, orig_key, orig_val) {
|
64 |
+
var list = eval('document.adminForm.' + listname);
|
65 |
+
|
66 |
+
// empty the list
|
67 |
+
for (i in list.options.length) {
|
68 |
+
list.options[i] = null;
|
69 |
+
}
|
70 |
+
i = 0;
|
71 |
+
for (x in source) {
|
72 |
+
if (source[x][0] == key) {
|
73 |
+
opt = new Option();
|
74 |
+
opt.value = source[x][1];
|
75 |
+
opt.text = source[x][2];
|
76 |
+
|
77 |
+
if ((orig_key == key && orig_val == opt.value) || i == 0) {
|
78 |
+
opt.selected = true;
|
79 |
+
}
|
80 |
+
list.options[i++] = opt;
|
81 |
+
}
|
82 |
+
}
|
83 |
+
list.length = i;
|
84 |
+
}
|
85 |
+
|
86 |
+
/**
|
87 |
+
* Adds a select item(s) from one list to another
|
88 |
+
*/
|
89 |
+
function addSelectedToList(frmName, srcListName, tgtListName) {
|
90 |
+
var form = eval('document.' + frmName);
|
91 |
+
var srcList = eval('form.' + srcListName);
|
92 |
+
var tgtList = eval('form.' + tgtListName);
|
93 |
+
|
94 |
+
var srcLen = srcList.length;
|
95 |
+
var tgtLen = tgtList.length;
|
96 |
+
var tgt = "x";
|
97 |
+
|
98 |
+
//build array of target items
|
99 |
+
for (var i = tgtLen - 1; i > -1; i--) {
|
100 |
+
tgt += "," + tgtList.options[i].value + ","
|
101 |
+
}
|
102 |
+
|
103 |
+
//Pull selected resources and add them to list
|
104 |
+
//for (var i=srcLen-1; i > -1; i--) {
|
105 |
+
for (var i = 0; i < srcLen; i++) {
|
106 |
+
if (srcList.options[i].selected && tgt.indexOf("," + srcList.options[i].value + ",") == -1) {
|
107 |
+
opt = new Option(srcList.options[i].text, srcList.options[i].value);
|
108 |
+
tgtList.options[tgtList.length] = opt;
|
109 |
+
}
|
110 |
+
}
|
111 |
+
}
|
112 |
+
|
113 |
+
function delSelectedFromList(frmName, srcListName) {
|
114 |
+
var form = eval('document.' + frmName);
|
115 |
+
var srcList = eval('form.' + srcListName);
|
116 |
+
|
117 |
+
var srcLen = srcList.length;
|
118 |
+
|
119 |
+
for (var i = srcLen - 1; i > -1; i--) {
|
120 |
+
if (srcList.options[i].selected) {
|
121 |
+
srcList.options[i] = null;
|
122 |
+
}
|
123 |
+
}
|
124 |
+
}
|
125 |
+
|
126 |
+
function moveInList(frmName, srcListName, index, to) {
|
127 |
+
var form = eval('document.' + frmName);
|
128 |
+
var srcList = eval('form.' + srcListName);
|
129 |
+
var total = srcList.options.length - 1;
|
130 |
+
|
131 |
+
if (index == -1) {
|
132 |
+
return false;
|
133 |
+
}
|
134 |
+
if (to == +1 && index == total) {
|
135 |
+
return false;
|
136 |
+
}
|
137 |
+
if (to == -1 && index == 0) {
|
138 |
+
return false;
|
139 |
+
}
|
140 |
+
|
141 |
+
var items = new Array;
|
142 |
+
var values = new Array;
|
143 |
+
|
144 |
+
for (i = total; i >= 0; i--) {
|
145 |
+
items[i] = srcList.options[i].text;
|
146 |
+
values[i] = srcList.options[i].value;
|
147 |
+
}
|
148 |
+
for (i = total; i >= 0; i--) {
|
149 |
+
if (index == i) {
|
150 |
+
srcList.options[i + to] = new Option(items[i], values[i], 0, 1);
|
151 |
+
srcList.options[i] = new Option(items[i + to], values[i + to]);
|
152 |
+
i--;
|
153 |
+
} else {
|
154 |
+
srcList.options[i] = new Option(items[i], values[i]);
|
155 |
+
}
|
156 |
+
}
|
157 |
+
srcList.focus();
|
158 |
+
return true;
|
159 |
+
}
|
160 |
+
|
161 |
+
function getSelectedOption(frmName, srcListName) {
|
162 |
+
var form = eval('document.' + frmName);
|
163 |
+
var srcList = eval('form.' + srcListName);
|
164 |
+
|
165 |
+
i = srcList.selectedIndex;
|
166 |
+
if (i != null && i > -1) {
|
167 |
+
return srcList.options[i];
|
168 |
+
} else {
|
169 |
+
return null;
|
170 |
+
}
|
171 |
+
}
|
172 |
+
|
173 |
+
function setSelectedValue(frmName, srcListName, value) {
|
174 |
+
var form = eval('document.' + frmName);
|
175 |
+
var srcList = eval('form.' + srcListName);
|
176 |
+
|
177 |
+
var srcLen = srcList.length;
|
178 |
+
|
179 |
+
for (var i = 0; i < srcLen; i++) {
|
180 |
+
srcList.options[i].selected = false;
|
181 |
+
if (srcList.options[i].value == value) {
|
182 |
+
srcList.options[i].selected = true;
|
183 |
+
}
|
184 |
+
}
|
185 |
+
}
|
186 |
+
|
187 |
+
function getSelectedRadio(frmName, srcGroupName) {
|
188 |
+
var form = eval('document.' + frmName);
|
189 |
+
var srcGroup = eval('form.' + srcGroupName);
|
190 |
+
|
191 |
+
return radioGetCheckedValue(srcGroup);
|
192 |
+
}
|
193 |
+
|
194 |
+
// return the value of the radio button that is checked
|
195 |
+
// return an empty string if none are checked, or
|
196 |
+
// there are no radio buttons
|
197 |
+
function radioGetCheckedValue(radioObj) {
|
198 |
+
if (!radioObj) {
|
199 |
+
return '';
|
200 |
+
}
|
201 |
+
var n = radioObj.length;
|
202 |
+
if (n == undefined) {
|
203 |
+
if (radioObj.checked) {
|
204 |
+
return radioObj.value;
|
205 |
+
} else {
|
206 |
+
return '';
|
207 |
+
}
|
208 |
+
}
|
209 |
+
for (var i = 0; i < n; i++) {
|
210 |
+
if (radioObj[i].checked) {
|
211 |
+
return radioObj[i].value;
|
212 |
+
}
|
213 |
+
}
|
214 |
+
return '';
|
215 |
+
}
|
216 |
+
|
217 |
+
function getSelectedValue(frmName, srcListName) {
|
218 |
+
var form = eval('document.' + frmName);
|
219 |
+
var srcList = eval('form.' + srcListName);
|
220 |
+
|
221 |
+
i = srcList.selectedIndex;
|
222 |
+
if (i != null && i > -1) {
|
223 |
+
return srcList.options[i].value;
|
224 |
+
} else {
|
225 |
+
return null;
|
226 |
+
}
|
227 |
+
}
|
228 |
+
|
229 |
+
function getSelectedText(frmName, srcListName) {
|
230 |
+
var form = eval('document.' + frmName);
|
231 |
+
var srcList = eval('form.' + srcListName);
|
232 |
+
|
233 |
+
i = srcList.selectedIndex;
|
234 |
+
if (i != null && i > -1) {
|
235 |
+
return srcList.options[i].text;
|
236 |
+
} else {
|
237 |
+
return null;
|
238 |
+
}
|
239 |
+
}
|
240 |
+
|
241 |
+
function chgSelectedValue(frmName, srcListName, value) {
|
242 |
+
var form = eval('document.' + frmName);
|
243 |
+
var srcList = eval('form.' + srcListName);
|
244 |
+
|
245 |
+
i = srcList.selectedIndex;
|
246 |
+
if (i != null && i > -1) {
|
247 |
+
srcList.options[i].value = value;
|
248 |
+
return true;
|
249 |
+
} else {
|
250 |
+
return false;
|
251 |
+
}
|
252 |
+
}
|
253 |
+
|
254 |
+
/**
|
255 |
+
* Toggles the check state of a group of boxes
|
256 |
+
*
|
257 |
+
* Checkboxes must have an id attribute in the form cb0, cb1...
|
258 |
+
* @param The number of box to 'check'
|
259 |
+
* @param An alternative field name
|
260 |
+
*/
|
261 |
+
|
262 |
+
function listItemTask(id, task) {
|
263 |
+
var f = document.adminForm;
|
264 |
+
cb = eval('f.' + id);
|
265 |
+
if (cb) {
|
266 |
+
for (i = 0; true; i++) {
|
267 |
+
cbx = eval('f.cb' + i);
|
268 |
+
if (!cbx) break;
|
269 |
+
cbx.checked = false;
|
270 |
+
} // for
|
271 |
+
cb.checked = true;
|
272 |
+
f.boxchecked.value = 1;
|
273 |
+
submitbutton(task);
|
274 |
+
}
|
275 |
+
return false;
|
276 |
+
}
|
277 |
+
|
278 |
+
function hideMainMenu() {
|
279 |
+
if (document.adminForm.hidemainmenu) {
|
280 |
+
document.adminForm.hidemainmenu.value = 1;
|
281 |
+
}
|
282 |
+
}
|
283 |
+
|
284 |
+
function isChecked(isitchecked) {
|
285 |
+
if (isitchecked == true) {
|
286 |
+
document.adminForm.boxchecked.value++;
|
287 |
+
}
|
288 |
+
else {
|
289 |
+
document.adminForm.boxchecked.value--;
|
290 |
+
}
|
291 |
+
}
|
292 |
+
|
293 |
+
/**
|
294 |
+
* Default function. Usually would be overriden by the component
|
295 |
+
*//*
|
296 |
+
function submitbutton(pressbutton) {
|
297 |
+
submitform(pressbutton);
|
298 |
+
}
|
299 |
+
*/
|
300 |
+
/**
|
301 |
+
* Submit the admin form
|
302 |
+
*/
|
303 |
+
function submitform(pressbutton) {
|
304 |
+
if (pressbutton) {
|
305 |
+
document.adminForm.task.value = pressbutton;
|
306 |
+
}
|
307 |
+
if (typeof document.adminForm.onsubmit == "function") {
|
308 |
+
document.adminForm.onsubmit();
|
309 |
+
}
|
310 |
+
document.adminForm.submit();
|
311 |
+
}
|
312 |
+
|
313 |
+
/**
|
314 |
+
* Submit the control panel admin form
|
315 |
+
*/
|
316 |
+
function submitcpform(sectionid, id) {
|
317 |
+
document.adminForm.sectionid.value = sectionid;
|
318 |
+
document.adminForm.id.value = id;
|
319 |
+
submitbutton("edit");
|
320 |
+
}
|
321 |
+
|
322 |
+
/**
|
323 |
+
* Getting radio button that is selected.
|
324 |
+
*/
|
325 |
+
function getSelected(allbuttons) {
|
326 |
+
for (i = 0; i < allbuttons.length; i++) {
|
327 |
+
if (allbuttons[i].checked) {
|
328 |
+
return allbuttons[i].value
|
329 |
+
}
|
330 |
+
}
|
331 |
+
return null;
|
332 |
+
}
|
333 |
+
|
334 |
+
// JS Calendar
|
335 |
+
var calendar = null; // remember the calendar object so that we reuse
|
336 |
+
// it and avoid creating another
|
337 |
+
|
338 |
+
// This function gets called when an end-user clicks on some date
|
339 |
+
function selected(cal, date) {
|
340 |
+
cal.sel.value = date; // just update the value of the input field
|
341 |
+
}
|
342 |
+
|
343 |
+
// And this gets called when the end-user clicks on the _selected_ date,
|
344 |
+
// or clicks the "Close" (X) button. It just hides the calendar without
|
345 |
+
// destroying it.
|
346 |
+
function closeHandler(cal) {
|
347 |
+
cal.hide(); // hide the calendar
|
348 |
+
|
349 |
+
// don't check mousedown on document anymore (used to be able to hide the
|
350 |
+
// calendar when someone clicks outside it, see the showCalendar function).
|
351 |
+
Calendar.removeEvent(document, "mousedown", checkCalendar);
|
352 |
+
}
|
353 |
+
|
354 |
+
// This gets called when the user presses a mouse button anywhere in the
|
355 |
+
// document, if the calendar is shown. If the click was outside the open
|
356 |
+
// calendar this function closes it.
|
357 |
+
function checkCalendar(ev) {
|
358 |
+
var el = Calendar.is_ie ? Calendar.getElement(ev) : Calendar.getTargetElement(ev);
|
359 |
+
for (; el != null; el = el.parentNode)
|
360 |
+
// FIXME: allow end-user to click some link without closing the
|
361 |
+
// calendar. Good to see real-time stylesheet change :)
|
362 |
+
if (el == calendar.element || el.tagName == "A") break;
|
363 |
+
if (el == null) {
|
364 |
+
// calls closeHandler which should hide the calendar.
|
365 |
+
calendar.callCloseHandler();
|
366 |
+
Calendar.stopEvent(ev);
|
367 |
+
}
|
368 |
+
}
|
369 |
+
|
370 |
+
// This function shows the calendar under the element having the given id.
|
371 |
+
// It takes care of catching "mousedown" signals on document and hiding the
|
372 |
+
// calendar if the click was outside.
|
373 |
+
function showCalendar(id, dateFormat) {
|
374 |
+
var el = document.getElementById(id);
|
375 |
+
if (calendar != null) {
|
376 |
+
// we already have one created, so just update it.
|
377 |
+
calendar.hide(); // hide the existing calendar
|
378 |
+
calendar.parseDate(el.value); // set it to a new date
|
379 |
+
} else {
|
380 |
+
// first-time call, create the calendar
|
381 |
+
var cal = new Calendar(true, null, selected, closeHandler);
|
382 |
+
calendar = cal; // remember the calendar in the global
|
383 |
+
cal.setRange(1900, 2070); // min/max year allowed
|
384 |
+
|
385 |
+
if (dateFormat) // optional date format
|
386 |
+
{
|
387 |
+
cal.setDateFormat(dateFormat);
|
388 |
+
}
|
389 |
+
|
390 |
+
calendar.create(); // create a popup calendar
|
391 |
+
calendar.parseDate(el.value); // set it to a new date
|
392 |
+
}
|
393 |
+
calendar.sel = el; // inform it about the input field in use
|
394 |
+
calendar.showAtElement(el); // show the calendar next to the input field
|
395 |
+
|
396 |
+
// catch mousedown on the document
|
397 |
+
Calendar.addEvent(document, "mousedown", checkCalendar);
|
398 |
+
return false;
|
399 |
+
}
|
400 |
+
|
401 |
+
/**
|
402 |
+
* Pops up a new window in the middle of the screen
|
403 |
+
*/
|
404 |
+
function popupWindow(mypage, myname, w, h, scroll) {
|
405 |
+
var winl = (screen.width - w) / 2;
|
406 |
+
var wint = (screen.height - h) / 2;
|
407 |
+
winprops = 'height=' + h + ',width=' + w + ',top=' + wint + ',left=' + winl + ',scrollbars=' + scroll + ',resizable'
|
408 |
+
win = window.open(mypage, myname, winprops)
|
409 |
+
if (parseInt(navigator.appVersion) >= 4) {
|
410 |
+
win.window.focus();
|
411 |
+
}
|
412 |
+
}
|
413 |
+
|
414 |
+
// LTrim(string) : Returns a copy of a string without leading spaces.
|
415 |
+
function ltrim(str) {
|
416 |
+
var whitespace = new String(" \t\n\r");
|
417 |
+
var s = new String(str);
|
418 |
+
if (whitespace.indexOf(s.charAt(0)) != -1) {
|
419 |
+
var j = 0, i = s.length;
|
420 |
+
while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
|
421 |
+
j++;
|
422 |
+
s = s.substring(j, i);
|
423 |
+
}
|
424 |
+
return s;
|
425 |
+
}
|
426 |
+
|
427 |
+
//RTrim(string) : Returns a copy of a string without trailing spaces.
|
428 |
+
function rtrim(str) {
|
429 |
+
var whitespace = new String(" \t\n\r");
|
430 |
+
var s = new String(str);
|
431 |
+
if (whitespace.indexOf(s.charAt(s.length - 1)) != -1) {
|
432 |
+
var i = s.length - 1; // Get length of string
|
433 |
+
while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
|
434 |
+
i--;
|
435 |
+
s = s.substring(0, i + 1);
|
436 |
+
}
|
437 |
+
return s;
|
438 |
+
}
|
439 |
+
|
440 |
+
// Trim(string) : Returns a copy of a string without leading or trailing spaces
|
441 |
+
function trim(str) {
|
442 |
+
return rtrim(ltrim(str));
|
443 |
+
}
|
444 |
+
|
445 |
+
function mosDHTML() {
|
446 |
+
this.ver = navigator.appVersion
|
447 |
+
this.agent = navigator.userAgent
|
448 |
+
this.dom = document.getElementById ? 1 : 0
|
449 |
+
this.opera5 = this.agent.indexOf("Opera 5") < -1
|
450 |
+
this.ie5 = (this.ver.indexOf("MSIE 5") < -1 && this.dom && !this.opera5) ? 1 : 0;
|
451 |
+
this.ie6 = (this.ver.indexOf("MSIE 6") < -1 && this.dom && !this.opera5) ? 1 : 0;
|
452 |
+
this.ie4 = (document.all && !this.dom && !this.opera5) ? 1 : 0;
|
453 |
+
this.ie = this.ie4 || this.ie5 || this.ie6
|
454 |
+
this.mac = this.agent.indexOf("Mac") < -1
|
455 |
+
this.ns6 = (this.dom && parseInt(this.ver) <= 5) ? 1 : 0;
|
456 |
+
this.ns4 = (document.layers && !this.dom) ? 1 : 0;
|
457 |
+
this.bw = (this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5);
|
458 |
+
|
459 |
+
this.activeTab = '';
|
460 |
+
this.onTabStyle = 'ontab';
|
461 |
+
this.offTabStyle = 'offtab';
|
462 |
+
|
463 |
+
this.setElemStyle = function (elem, style) {
|
464 |
+
document.getElementById(elem).className = style;
|
465 |
+
}
|
466 |
+
this.showElem = function (id) {
|
467 |
+
if ((elem = document.getElementById(id))) {
|
468 |
+
elem.style.visibility = 'visible';
|
469 |
+
elem.style.display = 'block';
|
470 |
+
}
|
471 |
+
}
|
472 |
+
this.hideElem = function (id) {
|
473 |
+
if ((elem = document.getElementById(id))) {
|
474 |
+
elem.style.visibility = 'hidden';
|
475 |
+
elem.style.display = 'none';
|
476 |
+
}
|
477 |
+
}
|
478 |
+
this.cycleTab = function (name) {
|
479 |
+
if (this.activeTab) {
|
480 |
+
this.setElemStyle(this.activeTab, this.offTabStyle);
|
481 |
+
page = this.activeTab.replace('tab', 'page');
|
482 |
+
this.hideElem(page);
|
483 |
+
}
|
484 |
+
this.setElemStyle(name, this.onTabStyle);
|
485 |
+
this.activeTab = name;
|
486 |
+
page = this.activeTab.replace('tab', 'page');
|
487 |
+
this.showElem(page);
|
488 |
+
}
|
489 |
+
return this;
|
490 |
+
}
|
491 |
+
var dhtml = new mosDHTML();
|
492 |
+
|
493 |
+
// needed for Table Column ordering
|
494 |
+
/*function tableOrdering( order, dir, task ) {
|
495 |
+
var form = document.adminForm;
|
496 |
+
|
497 |
+
form.filter_order.value = order;
|
498 |
+
form.filter_order_Dir.value = dir;
|
499 |
+
//form.sort_by.value = order;
|
500 |
+
//form.sort_order.value = dir;
|
501 |
+
submitform( task );
|
502 |
+
}*/
|
503 |
+
|
504 |
+
function saveorder(n, task) {
|
505 |
+
checkAll_button(n, task);
|
506 |
+
}
|
507 |
+
|
508 |
+
//needed by saveorder function
|
509 |
+
function checkAll_button(n, task) {
|
510 |
+
|
511 |
+
if (!task) {
|
512 |
+
task = 'saveorder';
|
513 |
+
}
|
514 |
+
|
515 |
+
for (var j = 0; j <= n; j++) {
|
516 |
+
box = eval("document.adminForm.cb" + j);
|
517 |
+
if (box) {
|
518 |
+
if (box.checked == false) {
|
519 |
+
box.checked = true;
|
520 |
+
}
|
521 |
+
} else {
|
522 |
+
alert("You cannot change the order of items, as an item in the list is `Checked Out`");
|
523 |
+
return;
|
524 |
+
}
|
525 |
+
}
|
526 |
+
submitform(task);
|
527 |
+
}
|
528 |
+
/**
|
529 |
+
* @param object A form element
|
530 |
+
* @param string The name of the element to find
|
531 |
+
*/
|
532 |
+
function getElementByName(f, name) {
|
533 |
+
if (f.elements) {
|
534 |
+
for (i = 0, n = f.elements.length; i < n; i++) {
|
535 |
+
if (f.elements[i].name == name) {
|
536 |
+
return f.elements[i];
|
537 |
+
}
|
538 |
+
}
|
539 |
+
}
|
540 |
+
return null;
|
541 |
+
}
|
542 |
+
|
543 |
+
function go2(pressbutton, menu, id) {
|
544 |
+
var form = document.adminForm;
|
545 |
+
|
546 |
+
if (form.imagelist && form.images) {
|
547 |
+
// assemble the images back into one field
|
548 |
+
var temp = new Array;
|
549 |
+
for (var i = 0, n = form.imagelist.options.length; i < n; i++) {
|
550 |
+
temp[i] = form.imagelist.options[i].value;
|
551 |
+
}
|
552 |
+
form.images.value = temp.join('\n');
|
553 |
+
}
|
554 |
+
|
555 |
+
if (pressbutton == 'go2menu') {
|
556 |
+
form.menu.value = menu;
|
557 |
+
submitform(pressbutton);
|
558 |
+
return;
|
559 |
+
}
|
560 |
+
|
561 |
+
if (pressbutton == 'go2menuitem') {
|
562 |
+
form.menu.value = menu;
|
563 |
+
form.menuid.value = id;
|
564 |
+
submitform(pressbutton);
|
565 |
+
return;
|
566 |
+
}
|
567 |
+
}
|
568 |
+
/**
|
569 |
+
* Verifies if the string is in a valid email format
|
570 |
+
* @param string
|
571 |
+
* @return boolean
|
572 |
+
*/
|
573 |
+
function isEmail(text) {
|
574 |
+
var pattern = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
|
575 |
+
var regex = new RegExp(pattern);
|
576 |
+
return regex.test(text);
|
577 |
+
}
|
assets/js/settings.js
ADDED
@@ -0,0 +1,474 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(document).ready(function () {
|
2 |
+
|
3 |
+
if (iowdSettingsGlobal.page == "iowd_settings") {
|
4 |
+
|
5 |
+
jQuery("#settings_form").tooltip();
|
6 |
+
// quick settings
|
7 |
+
jQuery(".iowd_quick_automatically_optimize").change(function () {
|
8 |
+
var value = 0;
|
9 |
+
if (jQuery(this).is(":checked") == true) {
|
10 |
+
value = 1;
|
11 |
+
}
|
12 |
+
var name = jQuery(this).attr("name");
|
13 |
+
iowdCickSettings(name, value);
|
14 |
+
|
15 |
+
});
|
16 |
+
|
17 |
+
// standart settings
|
18 |
+
jQuery(".iowd-standart-mode-view1 .iowd-standart-cell").click(function () {
|
19 |
+
if(jQuery(this).attr("data-value") == "extreme"){
|
20 |
+
return false;
|
21 |
+
}
|
22 |
+
jQuery("[name=standard_setting]").val(jQuery(this).attr("data-value"));
|
23 |
+
jQuery("#settings_form").submit()
|
24 |
+
|
25 |
+
});
|
26 |
+
|
27 |
+
// how it works
|
28 |
+
jQuery(".iowd-how-works").click(function () {
|
29 |
+
jQuery(".iowd-popup-help").show();
|
30 |
+
});
|
31 |
+
jQuery(".iowd-standart-mode-view-help .iowd-standart-cell").click(function () {
|
32 |
+
jQuery(".iowd-standart-mode-view-help .iowd-standart-cell").removeClass("iowd-standart-cell-active");
|
33 |
+
jQuery(this).addClass("iowd-standart-cell-active");
|
34 |
+
var mode = jQuery(this).attr("data-value");
|
35 |
+
var src = jQuery(".iowd-optimized-img").attr("src", iowdSettingsGlobal.image_url + "/help" + mode + ".jpg");
|
36 |
+
|
37 |
+
if (mode == "conservative") {
|
38 |
+
jQuery(".iowd-stat-val").html("8 KB (4.65%)");
|
39 |
+
jQuery(".iowd-percent").html("20%");
|
40 |
+
jQuery(".iowd-help-optimized").html("749 KB");
|
41 |
+
jQuery(".iowd-help-type-txt").html("Light reduction");
|
42 |
+
jQuery(".iowd-help-exif").attr("src", iowdSettingsGlobal.image_url + "/plus.png");
|
43 |
+
jQuery(".iowd-help-full").attr("src", iowdSettingsGlobal.image_url + "/plus.png");
|
44 |
+
|
45 |
+
}
|
46 |
+
else if (mode == "balanced") {
|
47 |
+
jQuery(".iowd-stat-val").html("457 KB (59.31%)");
|
48 |
+
jQuery(".iowd-percent").html("40%");
|
49 |
+
jQuery(".iowd-help-optimized").html("300 KB");
|
50 |
+
jQuery(".iowd-help-type-txt").html("Lossy reduction");
|
51 |
+
jQuery(".iowd-help-exif").attr("src", iowdSettingsGlobal.image_url + "/minus.png");
|
52 |
+
jQuery(".iowd-help-full").attr("src", iowdSettingsGlobal.image_url + "/plus.png");
|
53 |
+
}
|
54 |
+
else {
|
55 |
+
jQuery(".iowd-stat-val").html("598 KB (78.93%)");
|
56 |
+
jQuery(".iowd-percent").html("90%");
|
57 |
+
jQuery(".iowd-help-optimized").html("159 KB");
|
58 |
+
jQuery(".iowd-help-type-txt").html("Extreme reduction");
|
59 |
+
jQuery(".iowd-help-exif").attr("src", iowdSettingsGlobal.image_url + "/minus.png");
|
60 |
+
jQuery(".iowd-help-full").attr("src", iowdSettingsGlobal.image_url + "/minus.png");
|
61 |
+
}
|
62 |
+
|
63 |
+
});
|
64 |
+
jQuery(".iowd-popup-help-close").click(function () {
|
65 |
+
jQuery(".iowd-popup-help").hide();
|
66 |
+
});
|
67 |
+
|
68 |
+
|
69 |
+
// tabs
|
70 |
+
wdTabs("iowd_tabs", "general");
|
71 |
+
showOtherFolders();
|
72 |
+
|
73 |
+
// show hide
|
74 |
+
iowdShowHide("scheduled_optimization", ["scheduled_optimization_recurrence"], 1);
|
75 |
+
iowdShowHideChange("scheduled_optimization", ["scheduled_optimization_recurrence"], 1);
|
76 |
+
|
77 |
+
iowdShowHide("enable_conversion", ["jpg_to_png", "png_to_jpg", "gif_to_png", "jpg_to_webp", "png_to_webp"], 1);
|
78 |
+
iowdShowHideChange("enable_conversion", ["jpg_to_png", "png_to_jpg", "gif_to_png", "jpg_to_webp", "png_to_webp"], 1);
|
79 |
+
|
80 |
+
iowdShowHide("exclude_full_size", ["enable_resizing", "resize_media_images_width"], 0);
|
81 |
+
iowdShowHideChange("exclude_full_size", ["enable_resizing", "resize_media_images_width"], 0, "enable_resizing", ["resize_media_images_width"], 1);
|
82 |
+
|
83 |
+
|
84 |
+
iowdShowHide("enable_resizing", ["resize_media_images_width"], 1, "exclude_full_size", 0);
|
85 |
+
iowdShowHideChange("enable_resizing", ["resize_media_images_width"], 1);
|
86 |
+
|
87 |
+
iowdShowHide("enable_resizing_other", ["resize_other_images_width"], 1);
|
88 |
+
iowdShowHideChange("enable_resizing_other", ["resize_other_images_width"], 1);
|
89 |
+
|
90 |
+
|
91 |
+
iowdShowHide("keep_exif_data", ["exclude_full_size_metadata_removal"], 0);
|
92 |
+
iowdShowHideChange("keep_exif_data", ["exclude_full_size_metadata_removal"], 0);
|
93 |
+
|
94 |
+
|
95 |
+
//conversion
|
96 |
+
jQuery("[name=jpg_to_png]").change(function () {
|
97 |
+
iowdDisable("jpg_to_png", "jpg_to_webp");
|
98 |
+
});
|
99 |
+
jQuery("[name=jpg_to_webp]").change(function () {
|
100 |
+
iowdDisable("jpg_to_webp", "jpg_to_png");
|
101 |
+
});
|
102 |
+
|
103 |
+
jQuery("[name=png_to_jpg]").change(function () {
|
104 |
+
iowdDisable("png_to_jpg", "png_to_webp");
|
105 |
+
});
|
106 |
+
|
107 |
+
jQuery("[name=png_to_webp]").change(function () {
|
108 |
+
iowdDisable("png_to_webp", "png_to_jpg");
|
109 |
+
});
|
110 |
+
|
111 |
+
jQuery(".iowd_msg_div_close").click(function () {
|
112 |
+
jQuery(".iowd_msg_div").hide();
|
113 |
+
jQuery(".iowd_msg_div_text").html("");
|
114 |
+
});
|
115 |
+
|
116 |
+
jQuery(".iowd-cancel").click(function () {
|
117 |
+
var dataCancelType = jQuery(this).attr("data-cancel-type");
|
118 |
+
if (dataCancelType == "1") {
|
119 |
+
jQuery("[name=other_folders]").val("");
|
120 |
+
jQuery("#settings_form").submit();
|
121 |
+
return false;
|
122 |
+
}
|
123 |
+
});
|
124 |
+
|
125 |
+
jQuery(".iowd-dir-tree-title").on('click', function (e) {
|
126 |
+
e.stopPropagation();
|
127 |
+
var thisElem = jQuery(e.target).closest("li");
|
128 |
+
|
129 |
+
jQuery(".iowd_other_folders_container li").removeClass("iowd-active-folder");
|
130 |
+
if (jQuery(thisElem).find(">ul").length > 0) {
|
131 |
+
jQuery(thisElem).find('>ul').slideUp(500, function () {
|
132 |
+
jQuery(thisElem).find('>ul').remove();
|
133 |
+
});
|
134 |
+
} else {
|
135 |
+
var data = {
|
136 |
+
action: "get_subdirs",
|
137 |
+
nonce_iowd: iowd.nonce,
|
138 |
+
dir: thisElem.attr("data-path")
|
139 |
+
};
|
140 |
+
|
141 |
+
jQuery.post(iowd.ajaxURL, data, function (response) {
|
142 |
+
jQuery(thisElem).append(response);
|
143 |
+
jQuery(thisElem).find('>ul').slideDown(500);
|
144 |
+
});
|
145 |
+
jQuery(thisElem).addClass("iowd-active-folder");
|
146 |
+
}
|
147 |
+
|
148 |
+
|
149 |
+
jQuery(".iowd-selected-dir").val(jQuery(thisElem).attr("data-path"));
|
150 |
+
return false;
|
151 |
+
});
|
152 |
+
|
153 |
+
|
154 |
+
jQuery(document).on("click", ".iowd-show-images", function () {
|
155 |
+
jQuery(this).closest(".iowd_other_folders_row").find(".folder-images").slideToggle(200);
|
156 |
+
});
|
157 |
+
|
158 |
+
jQuery(document).on("click", ".iowd_update_dirs", function () {
|
159 |
+
var dirData = {};
|
160 |
+
jQuery(".iowd_other_folders_row").each(function () {
|
161 |
+
var otherFolderPath = jQuery(this).find(".iowd_other_path").attr("data-name");
|
162 |
+
dirData[otherFolderPath] = [];
|
163 |
+
});
|
164 |
+
var data = {
|
165 |
+
action: "choose_dirs",
|
166 |
+
nonce_iowd: iowd.nonce,
|
167 |
+
dir: JSON.stringify(dirData)
|
168 |
+
}
|
169 |
+
jQuery(".iowd-spinner-select").show();
|
170 |
+
jQuery.post(iowd.ajaxURL, data, function (response) {
|
171 |
+
jQuery(".iowd-dir-paths").html(response);
|
172 |
+
jQuery(".iowd-spinner-select").hide();
|
173 |
+
save_settings();
|
174 |
+
});
|
175 |
+
});
|
176 |
+
|
177 |
+
|
178 |
+
jQuery(".iowd-select-dir-btn").click(function () {
|
179 |
+
var selectedDir = jQuery(".iowd-selected-dir").val();
|
180 |
+
var dirData = {};
|
181 |
+
dirData[selectedDir] = [];
|
182 |
+
var flag = true;
|
183 |
+
jQuery(".iowd_other_folders_row").each(function () {
|
184 |
+
var otherFolderPath = jQuery(this).find(".iowd_other_path").attr("data-name");
|
185 |
+
|
186 |
+
if (otherFolderPath == selectedDir) {
|
187 |
+
flag = false;
|
188 |
+
return false;
|
189 |
+
}
|
190 |
+
});
|
191 |
+
if (flag === true) {
|
192 |
+
var data = {
|
193 |
+
action: "choose_dirs",
|
194 |
+
nonce_iowd: iowd.nonce,
|
195 |
+
dir: JSON.stringify(dirData)
|
196 |
+
}
|
197 |
+
jQuery(".iowd-spinner-select").show();
|
198 |
+
jQuery.post(iowd.ajaxURL, data, function (response) {
|
199 |
+
jQuery(".iowd-dir-paths").append(response);
|
200 |
+
jQuery(".iowd-spinner-select").hide();
|
201 |
+
updateOtherFolders();
|
202 |
+
});
|
203 |
+
|
204 |
+
}
|
205 |
+
jQuery(".iowd-popup").hide();
|
206 |
+
|
207 |
+
return false;
|
208 |
+
});
|
209 |
+
// other folders remove
|
210 |
+
jQuery(document).on("click", ".iowd_remove", function () {
|
211 |
+
jQuery(this).closest(".iowd_other_folders_row").remove();
|
212 |
+
updateOtherFolders(false);
|
213 |
+
});
|
214 |
+
jQuery(document).on("click", ".iowd_remove_img", function () {
|
215 |
+
|
216 |
+
var imagesCount = Number(jQuery(this).closest(".iowd_other_folders_row").find(".iowd_other_img_path").length) - 1;
|
217 |
+
if (imagesCount == 0) {
|
218 |
+
jQuery(this).closest(".iowd_other_folders_row").remove();
|
219 |
+
}
|
220 |
+
else {
|
221 |
+
jQuery(this).closest(".iowd_other_folders_row").find(".iowd-show-images").html(imagesCount + " images");
|
222 |
+
jQuery(this).closest(".iowd_other_img_path").remove();
|
223 |
+
}
|
224 |
+
|
225 |
+
updateOtherFolders();
|
226 |
+
});
|
227 |
+
|
228 |
+
|
229 |
+
//remove from bulk
|
230 |
+
jQuery(document).on("click", ".iowd_remove_attachment", function () {
|
231 |
+
var ids = jQuery("[name=ids]").val() ? jQuery("[name=ids]").val().split(",") : [];
|
232 |
+
var postId = jQuery(this).attr("data-id");
|
233 |
+
var index = ids.indexOf(postId);
|
234 |
+
if (index > -1) {
|
235 |
+
ids.splice(index, 1);
|
236 |
+
}
|
237 |
+
jQuery(".attachment-row-" + postId).remove();
|
238 |
+
jQuery("[name=ids]").val(ids.join());
|
239 |
+
if (jQuery(".attachment-row").length == 0) {
|
240 |
+
window.location.href = "upload.php?page=iowd_settings";
|
241 |
+
}
|
242 |
+
|
243 |
+
});
|
244 |
+
|
245 |
+
|
246 |
+
jQuery(".iowd-popup-close, .iowd-opacity").click(function () {
|
247 |
+
jQuery(".iowd-popup").hide();
|
248 |
+
return false;
|
249 |
+
});
|
250 |
+
jQuery(".iowd-open-dir-tree-btn").click(function () {
|
251 |
+
jQuery(".iowd-popup").show();
|
252 |
+
return false;
|
253 |
+
});
|
254 |
+
|
255 |
+
// optimize thumbs
|
256 |
+
jQuery(".wp_sizes").change(function () {
|
257 |
+
|
258 |
+
var cid = [];
|
259 |
+
jQuery(".wp_sizes").each(function () {
|
260 |
+
if (jQuery(this).is(":checked") == true) {
|
261 |
+
cid.push(jQuery(this).val());
|
262 |
+
}
|
263 |
+
});
|
264 |
+
jQuery("[name=optimize_thumbs]").val(cid.join());
|
265 |
+
});
|
266 |
+
}
|
267 |
+
else if (iowdSettingsGlobal.page == "iowd_report") {
|
268 |
+
// delete
|
269 |
+
jQuery(document).on("click", ".iowd-clear-history-single, .iowd-clear-history-bulk", function () {
|
270 |
+
jQuery(".iowd_reports").addClass("iowd-report-loader-class");
|
271 |
+
jQuery(".iowd-report-loader").show();
|
272 |
+
var postId = jQuery(this).attr("data-post-id");
|
273 |
+
var data = {
|
274 |
+
action: "clear_report",
|
275 |
+
nonce_iowd: iowd.nonce,
|
276 |
+
post_id: postId
|
277 |
+
};
|
278 |
+
var _this = jQuery(this);
|
279 |
+
jQuery.post(iowd.ajaxURL, data, function (response) {
|
280 |
+
if (postId) {
|
281 |
+
_this.closest(".main_tr").remove();
|
282 |
+
}
|
283 |
+
else {
|
284 |
+
jQuery(".iowd_reports_table_tbody").html("");
|
285 |
+
}
|
286 |
+
|
287 |
+
jQuery(".iowd_reports").removeClass("iowd-report-loader-class");
|
288 |
+
jQuery(".iowd-report-loader").hide();
|
289 |
+
});
|
290 |
+
});
|
291 |
+
|
292 |
+
|
293 |
+
//report filters
|
294 |
+
jQuery(document).on("click", ".iowd_report_search, .iowd_report_reset, .iowd-more", function () {
|
295 |
+
jQuery(".iowd_reports").addClass("iowd-report-loader-class");
|
296 |
+
jQuery(".iowd-report-loader").show();
|
297 |
+
|
298 |
+
if (jQuery(this).hasClass("iowd_report_reset")) {
|
299 |
+
jQuery(".iowd-filter-elem").val("");
|
300 |
+
}
|
301 |
+
if (jQuery(this).hasClass("iowd-more")) {
|
302 |
+
var newLimit = Number(jQuery(".iowd-more").attr("data-limit")) + 10;
|
303 |
+
}
|
304 |
+
else {
|
305 |
+
var newLimit = jQuery(".iowd-more").attr("data-limit");
|
306 |
+
}
|
307 |
+
|
308 |
+
var data = {
|
309 |
+
action: "filter_report",
|
310 |
+
nonce_iowd: iowd.nonce,
|
311 |
+
limit: newLimit
|
312 |
+
};
|
313 |
+
jQuery(".iowd-filter-elem").each(function () {
|
314 |
+
var name = jQuery(this).attr("name");
|
315 |
+
if (jQuery(this).is("input[type=radio]")) {
|
316 |
+
data[name] = jQuery("[name=" + name + "]:checked").val();
|
317 |
+
}
|
318 |
+
else if (jQuery(this).is("select")) {
|
319 |
+
data[name] = jQuery("[name=" + name + "] :selected").val();
|
320 |
+
}
|
321 |
+
else {
|
322 |
+
data[name] = jQuery(this).val();
|
323 |
+
}
|
324 |
+
});
|
325 |
+
|
326 |
+
jQuery.post(iowd.ajaxURL, data, function (response) {
|
327 |
+
jQuery(".iowd_reports_table .iowd_reports_table_tbody").html(response);
|
328 |
+
jQuery(".iowd-more").attr("data-limit", newLimit);
|
329 |
+
|
330 |
+
jQuery(".iowd_reports").removeClass("iowd-report-loader-class");
|
331 |
+
jQuery(".iowd-report-loader").hide();
|
332 |
+
});
|
333 |
+
});
|
334 |
+
}
|
335 |
+
|
336 |
+
// update already used
|
337 |
+
jQuery(document).on("click", ".iowd_update_alreday_used", function () {
|
338 |
+
var data = {
|
339 |
+
action: "update_already_used",
|
340 |
+
nonce_iowd: iowd.nonce
|
341 |
+
}
|
342 |
+
jQuery(".iowd-spinner-select-already-used").show();
|
343 |
+
jQuery.post(iowd.ajaxURL, data, function (response) {
|
344 |
+
// response = JSON.parse(response);
|
345 |
+
// jQuery(".iowd_already_used_cell .images_count").html(response.already_optimized);
|
346 |
+
// var remained = jQuery(".iowd_remained_cell .images_count").html();
|
347 |
+
// jQuery(".iowd_remained_cell .images_count").html(response.limit-response.already_optimized);
|
348 |
+
// jQuery(".iowd-spinner-select-already-used").hide();
|
349 |
+
window.location.href = "admin.php?page=iowd_settings";
|
350 |
+
});
|
351 |
+
});
|
352 |
+
|
353 |
+
});
|
354 |
+
|
355 |
+
|
356 |
+
function updateOtherFolders(html) {
|
357 |
+
if (typeof html == "undefined") {
|
358 |
+
html = true;
|
359 |
+
}
|
360 |
+
var otherFolders = {};
|
361 |
+
|
362 |
+
jQuery(".iowd_other_folders_row").each(function () {
|
363 |
+
var otherFolderPath = jQuery(this).find(".iowd_other_path").attr("data-name").trim();
|
364 |
+
if (otherFolderPath) {
|
365 |
+
var otherImages = [];
|
366 |
+
jQuery(this).find(".iowd_other_img_path").each(function () {
|
367 |
+
var imagePath = jQuery(this).find(".iowd_image_path").html();
|
368 |
+
if (imagePath) {
|
369 |
+
otherImages.push(imagePath);
|
370 |
+
}
|
371 |
+
});
|
372 |
+
otherFolders[otherFolderPath] = otherImages;
|
373 |
+
}
|
374 |
+
|
375 |
+
});
|
376 |
+
|
377 |
+
if (html === true) {
|
378 |
+
if (Number(Object.keys(otherFolders).length) > 0) {
|
379 |
+
otherFolders = JSON.stringify(otherFolders);
|
380 |
+
if (jQuery(".iowd_other_save_btn").length == 0) {
|
381 |
+
var saveButton = '<div class="iowd_other_save_btn"><button class="iowd-btn iowd-btn-small iowd-btn-secondary">' + iowdSettingsGlobal.save_dirs_txt + '</button></div>';
|
382 |
+
jQuery(".iowd_other_dirs_container").append(saveButton);
|
383 |
+
}
|
384 |
+
}
|
385 |
+
else {
|
386 |
+
jQuery(".iowd_other_save_btn").remove();
|
387 |
+
otherFolders = "";
|
388 |
+
}
|
389 |
+
}
|
390 |
+
jQuery("[name=other_folders]").val(otherFolders);
|
391 |
+
|
392 |
+
}
|
393 |
+
|
394 |
+
|
395 |
+
function showOtherFolders() {
|
396 |
+
var otherFolders = jQuery("[name=other_folders]").val();
|
397 |
+
if (otherFolders.trim()) {
|
398 |
+
var data = {
|
399 |
+
action: "choose_dirs",
|
400 |
+
nonce_iowd: iowd.nonce,
|
401 |
+
dir: otherFolders
|
402 |
+
}
|
403 |
+
|
404 |
+
jQuery(".iowd-spinner-select").show();
|
405 |
+
jQuery.post(iowd.ajaxURL, data, function (response) {
|
406 |
+
jQuery(".iowd-dir-paths").append(response);
|
407 |
+
jQuery(".iowd-spinner-select").hide();
|
408 |
+
updateOtherFolders();
|
409 |
+
});
|
410 |
+
}
|
411 |
+
|
412 |
+
|
413 |
+
}
|
414 |
+
|
415 |
+
function save_settings() {
|
416 |
+
updateOtherFolders();
|
417 |
+
jQuery("#settings_form").submit();
|
418 |
+
}
|
419 |
+
|
420 |
+
function iowdShowHide(onChangeElem, showToggleElem, checkedVal, parent, parentVal) {
|
421 |
+
var _show = true;
|
422 |
+
|
423 |
+
if (parent != "undefined") {
|
424 |
+
if (jQuery("[name=" + parent + "]:checked").val() != parentVal) {
|
425 |
+
_show = false;
|
426 |
+
}
|
427 |
+
}
|
428 |
+
|
429 |
+
if (jQuery("[name=" + onChangeElem + "]:checked").val() == checkedVal && _show) {
|
430 |
+
for (var i = 0; i < showToggleElem.length; i++) {
|
431 |
+
jQuery("[name=" + showToggleElem[i] + "]").closest(".iowd-table-row").show();
|
432 |
+
}
|
433 |
+
}
|
434 |
+
else {
|
435 |
+
for (var i = 0; i < showToggleElem.length; i++) {
|
436 |
+
jQuery("[name=" + showToggleElem[i] + "]").closest(".iowd-table-row").hide();
|
437 |
+
}
|
438 |
+
}
|
439 |
+
}
|
440 |
+
function iowdShowHideChange(onChangeElem, showToggleElem, checkedVal, onChangeElemChild, showToggleElemChild, checkedValChild) {
|
441 |
+
|
442 |
+
jQuery("[name=" + onChangeElem).change(function () {
|
443 |
+
iowdShowHide(onChangeElem, showToggleElem, checkedVal);
|
444 |
+
if (onChangeElemChild && showToggleElemChild && checkedValChild) {
|
445 |
+
iowdShowHide(onChangeElemChild, showToggleElemChild, checkedValChild, onChangeElem, checkedVal);
|
446 |
+
}
|
447 |
+
});
|
448 |
+
|
449 |
+
}
|
450 |
+
|
451 |
+
function iowdCickSettings(name, value) {
|
452 |
+
|
453 |
+
var data = {
|
454 |
+
action: "quick_settings",
|
455 |
+
nonce_iowd: iowd.nonce,
|
456 |
+
name: name,
|
457 |
+
value: value
|
458 |
+
};
|
459 |
+
|
460 |
+
|
461 |
+
jQuery.post(iowd.ajaxURL, data, function (response) {
|
462 |
+
});
|
463 |
+
}
|
464 |
+
|
465 |
+
|
466 |
+
function iowdDisable(changedElem, disabledElem) {
|
467 |
+
|
468 |
+
if (jQuery("[name=" + changedElem + "]:checked").val() == "1") {
|
469 |
+
jQuery("#" + disabledElem + "0").attr("checked", "checked");
|
470 |
+
}
|
471 |
+
}
|
472 |
+
|
473 |
+
|
474 |
+
|
cacert-2017-06-07.pem
ADDED
@@ -0,0 +1,3955 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
##
|
2 |
+
## Bundle of CA Root Certificates
|
3 |
+
##
|
4 |
+
## Certificate data from Mozilla as of: Wed Jun 7 03:12:05 2017 GMT
|
5 |
+
##
|
6 |
+
## This is a bundle of X.509 certificates of public Certificate Authorities
|
7 |
+
## (CA). These were automatically extracted from Mozilla's root certificates
|
8 |
+
## file (certdata.txt). This file can be found in the mozilla source tree:
|
9 |
+
## https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt
|
10 |
+
##
|
11 |
+
## It contains the certificates in PEM format and therefore
|
12 |
+
## can be directly used with curl / libcurl / php_curl, or with
|
13 |
+
## an Apache+mod_ssl webserver for SSL client authentication.
|
14 |
+
## Just configure this file as the SSLCACertificateFile.
|
15 |
+
##
|
16 |
+
## Conversion done with mk-ca-bundle.pl version 1.27.
|
17 |
+
## SHA256: 93753268e1c596aee21893fb1c6975338389132f15c942ed65fc394a904371d7
|
18 |
+
##
|
19 |
+
|
20 |
+
|
21 |
+
GlobalSign Root CA
|
22 |
+
==================
|
23 |
+
-----BEGIN CERTIFICATE-----
|
24 |
+
MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx
|
25 |
+
GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds
|
26 |
+
b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV
|
27 |
+
BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD
|
28 |
+
VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa
|
29 |
+
DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc
|
30 |
+
THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb
|
31 |
+
Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP
|
32 |
+
c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX
|
33 |
+
gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
|
34 |
+
HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF
|
35 |
+
AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj
|
36 |
+
Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG
|
37 |
+
j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH
|
38 |
+
hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC
|
39 |
+
X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
|
40 |
+
-----END CERTIFICATE-----
|
41 |
+
|
42 |
+
GlobalSign Root CA - R2
|
43 |
+
=======================
|
44 |
+
-----BEGIN CERTIFICATE-----
|
45 |
+
MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv
|
46 |
+
YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
|
47 |
+
bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
|
48 |
+
aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
|
49 |
+
bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6
|
50 |
+
ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp
|
51 |
+
s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN
|
52 |
+
S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL
|
53 |
+
TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C
|
54 |
+
ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
|
55 |
+
FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i
|
56 |
+
YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN
|
57 |
+
BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
|
58 |
+
9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu
|
59 |
+
01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7
|
60 |
+
9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
|
61 |
+
TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
|
62 |
+
-----END CERTIFICATE-----
|
63 |
+
|
64 |
+
Verisign Class 3 Public Primary Certification Authority - G3
|
65 |
+
============================================================
|
66 |
+
-----BEGIN CERTIFICATE-----
|
67 |
+
MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
|
68 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
69 |
+
cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
70 |
+
IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
|
71 |
+
dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
|
72 |
+
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
|
73 |
+
dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
|
74 |
+
cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg
|
75 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
76 |
+
ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1
|
77 |
+
EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc
|
78 |
+
cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw
|
79 |
+
EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj
|
80 |
+
055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
|
81 |
+
ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f
|
82 |
+
j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC
|
83 |
+
/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0
|
84 |
+
xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa
|
85 |
+
t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ==
|
86 |
+
-----END CERTIFICATE-----
|
87 |
+
|
88 |
+
Entrust.net Premium 2048 Secure Server CA
|
89 |
+
=========================================
|
90 |
+
-----BEGIN CERTIFICATE-----
|
91 |
+
MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u
|
92 |
+
ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp
|
93 |
+
bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV
|
94 |
+
BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx
|
95 |
+
NzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3
|
96 |
+
d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl
|
97 |
+
MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u
|
98 |
+
ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
99 |
+
MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL
|
100 |
+
Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr
|
101 |
+
hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW
|
102 |
+
nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi
|
103 |
+
VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8E
|
104 |
+
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJ
|
105 |
+
KoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPy
|
106 |
+
T/4xmf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf
|
107 |
+
zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKT
|
108 |
+
J1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8eS9e
|
109 |
+
nNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVE=
|
110 |
+
-----END CERTIFICATE-----
|
111 |
+
|
112 |
+
Baltimore CyberTrust Root
|
113 |
+
=========================
|
114 |
+
-----BEGIN CERTIFICATE-----
|
115 |
+
MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE
|
116 |
+
ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li
|
117 |
+
ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC
|
118 |
+
SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs
|
119 |
+
dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME
|
120 |
+
uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB
|
121 |
+
UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C
|
122 |
+
G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9
|
123 |
+
XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr
|
124 |
+
l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI
|
125 |
+
VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
|
126 |
+
BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh
|
127 |
+
cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5
|
128 |
+
hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa
|
129 |
+
Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
|
130 |
+
RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
|
131 |
+
-----END CERTIFICATE-----
|
132 |
+
|
133 |
+
AddTrust Low-Value Services Root
|
134 |
+
================================
|
135 |
+
-----BEGIN CERTIFICATE-----
|
136 |
+
MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
137 |
+
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU
|
138 |
+
cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw
|
139 |
+
CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO
|
140 |
+
ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB
|
141 |
+
AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6
|
142 |
+
54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr
|
143 |
+
oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1
|
144 |
+
Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui
|
145 |
+
GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w
|
146 |
+
HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD
|
147 |
+
AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT
|
148 |
+
RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw
|
149 |
+
HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt
|
150 |
+
ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph
|
151 |
+
iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY
|
152 |
+
eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr
|
153 |
+
mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj
|
154 |
+
ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk=
|
155 |
+
-----END CERTIFICATE-----
|
156 |
+
|
157 |
+
AddTrust External Root
|
158 |
+
======================
|
159 |
+
-----BEGIN CERTIFICATE-----
|
160 |
+
MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
161 |
+
QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD
|
162 |
+
VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw
|
163 |
+
NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU
|
164 |
+
cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg
|
165 |
+
Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821
|
166 |
+
+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw
|
167 |
+
Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo
|
168 |
+
aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy
|
169 |
+
2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7
|
170 |
+
7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P
|
171 |
+
BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL
|
172 |
+
VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk
|
173 |
+
VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB
|
174 |
+
IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl
|
175 |
+
j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
|
176 |
+
6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355
|
177 |
+
e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u
|
178 |
+
G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
|
179 |
+
-----END CERTIFICATE-----
|
180 |
+
|
181 |
+
AddTrust Public Services Root
|
182 |
+
=============================
|
183 |
+
-----BEGIN CERTIFICATE-----
|
184 |
+
MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
185 |
+
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU
|
186 |
+
cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ
|
187 |
+
BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l
|
188 |
+
dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF
|
189 |
+
AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu
|
190 |
+
nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i
|
191 |
+
d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG
|
192 |
+
Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw
|
193 |
+
HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G
|
194 |
+
A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
|
195 |
+
/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux
|
196 |
+
FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G
|
197 |
+
A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4
|
198 |
+
JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL
|
199 |
+
+YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao
|
200 |
+
GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9
|
201 |
+
Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H
|
202 |
+
EufOX1362KqxMy3ZdvJOOjMMK7MtkAY=
|
203 |
+
-----END CERTIFICATE-----
|
204 |
+
|
205 |
+
AddTrust Qualified Certificates Root
|
206 |
+
====================================
|
207 |
+
-----BEGIN CERTIFICATE-----
|
208 |
+
MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
209 |
+
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU
|
210 |
+
cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx
|
211 |
+
CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ
|
212 |
+
IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG
|
213 |
+
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx
|
214 |
+
64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3
|
215 |
+
KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o
|
216 |
+
L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR
|
217 |
+
wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU
|
218 |
+
MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/
|
219 |
+
BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE
|
220 |
+
BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y
|
221 |
+
azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD
|
222 |
+
ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG
|
223 |
+
GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X
|
224 |
+
dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze
|
225 |
+
RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB
|
226 |
+
iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE=
|
227 |
+
-----END CERTIFICATE-----
|
228 |
+
|
229 |
+
Entrust Root Certification Authority
|
230 |
+
====================================
|
231 |
+
-----BEGIN CERTIFICATE-----
|
232 |
+
MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV
|
233 |
+
BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw
|
234 |
+
b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG
|
235 |
+
A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0
|
236 |
+
MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu
|
237 |
+
MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu
|
238 |
+
Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v
|
239 |
+
dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
240 |
+
ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz
|
241 |
+
A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww
|
242 |
+
Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68
|
243 |
+
j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN
|
244 |
+
rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw
|
245 |
+
DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1
|
246 |
+
MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH
|
247 |
+
hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
|
248 |
+
A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM
|
249 |
+
Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa
|
250 |
+
v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS
|
251 |
+
W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0
|
252 |
+
tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
|
253 |
+
-----END CERTIFICATE-----
|
254 |
+
|
255 |
+
GeoTrust Global CA
|
256 |
+
==================
|
257 |
+
-----BEGIN CERTIFICATE-----
|
258 |
+
MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK
|
259 |
+
Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw
|
260 |
+
MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
|
261 |
+
LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
262 |
+
CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo
|
263 |
+
BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet
|
264 |
+
8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc
|
265 |
+
T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU
|
266 |
+
vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD
|
267 |
+
AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk
|
268 |
+
DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q
|
269 |
+
zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4
|
270 |
+
d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2
|
271 |
+
mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p
|
272 |
+
XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm
|
273 |
+
Mw==
|
274 |
+
-----END CERTIFICATE-----
|
275 |
+
|
276 |
+
GeoTrust Global CA 2
|
277 |
+
====================
|
278 |
+
-----BEGIN CERTIFICATE-----
|
279 |
+
MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
|
280 |
+
R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw
|
281 |
+
MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
|
282 |
+
LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
283 |
+
ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/
|
284 |
+
NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k
|
285 |
+
LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA
|
286 |
+
Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b
|
287 |
+
HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF
|
288 |
+
MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH
|
289 |
+
K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7
|
290 |
+
srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh
|
291 |
+
ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL
|
292 |
+
OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC
|
293 |
+
x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF
|
294 |
+
H4z1Ir+rzoPz4iIprn2DQKi6bA==
|
295 |
+
-----END CERTIFICATE-----
|
296 |
+
|
297 |
+
GeoTrust Universal CA
|
298 |
+
=====================
|
299 |
+
-----BEGIN CERTIFICATE-----
|
300 |
+
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
|
324 |
+
P/rmMuGNG2+k5o7Y+SlIis5z/iw=
|
325 |
+
-----END CERTIFICATE-----
|
326 |
+
|
327 |
+
GeoTrust Universal CA 2
|
328 |
+
=======================
|
329 |
+
-----BEGIN CERTIFICATE-----
|
330 |
+
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
|
354 |
+
X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
|
355 |
+
-----END CERTIFICATE-----
|
356 |
+
|
357 |
+
Visa eCommerce Root
|
358 |
+
===================
|
359 |
+
-----BEGIN CERTIFICATE-----
|
360 |
+
MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG
|
361 |
+
EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug
|
362 |
+
QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2
|
363 |
+
WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm
|
364 |
+
VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv
|
365 |
+
bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL
|
366 |
+
F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b
|
367 |
+
RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0
|
368 |
+
TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI
|
369 |
+
/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs
|
370 |
+
GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG
|
371 |
+
MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc
|
372 |
+
CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW
|
373 |
+
YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz
|
374 |
+
zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu
|
375 |
+
YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt
|
376 |
+
398znM/jra6O1I7mT1GvFpLgXPYHDw==
|
377 |
+
-----END CERTIFICATE-----
|
378 |
+
|
379 |
+
Certum Root CA
|
380 |
+
==============
|
381 |
+
-----BEGIN CERTIFICATE-----
|
382 |
+
MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK
|
383 |
+
ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla
|
384 |
+
Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u
|
385 |
+
by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x
|
386 |
+
wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL
|
387 |
+
kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ
|
388 |
+
89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K
|
389 |
+
Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P
|
390 |
+
NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq
|
391 |
+
hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+
|
392 |
+
GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg
|
393 |
+
GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/
|
394 |
+
0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS
|
395 |
+
qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw==
|
396 |
+
-----END CERTIFICATE-----
|
397 |
+
|
398 |
+
Comodo AAA Services root
|
399 |
+
========================
|
400 |
+
-----BEGIN CERTIFICATE-----
|
401 |
+
MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
402 |
+
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
403 |
+
TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw
|
404 |
+
MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl
|
405 |
+
c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
|
406 |
+
BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
407 |
+
ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG
|
408 |
+
C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs
|
409 |
+
i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW
|
410 |
+
Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH
|
411 |
+
Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK
|
412 |
+
Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f
|
413 |
+
BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl
|
414 |
+
cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz
|
415 |
+
LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm
|
416 |
+
7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
|
417 |
+
Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z
|
418 |
+
8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C
|
419 |
+
12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
|
420 |
+
-----END CERTIFICATE-----
|
421 |
+
|
422 |
+
Comodo Secure Services root
|
423 |
+
===========================
|
424 |
+
-----BEGIN CERTIFICATE-----
|
425 |
+
MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
426 |
+
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
427 |
+
TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw
|
428 |
+
MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu
|
429 |
+
Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi
|
430 |
+
BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
431 |
+
ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP
|
432 |
+
9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc
|
433 |
+
rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC
|
434 |
+
oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V
|
435 |
+
p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E
|
436 |
+
FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
|
437 |
+
gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj
|
438 |
+
YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm
|
439 |
+
aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm
|
440 |
+
4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj
|
441 |
+
Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL
|
442 |
+
DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw
|
443 |
+
pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H
|
444 |
+
RR3B7Hzs/Sk=
|
445 |
+
-----END CERTIFICATE-----
|
446 |
+
|
447 |
+
Comodo Trusted Services root
|
448 |
+
============================
|
449 |
+
-----BEGIN CERTIFICATE-----
|
450 |
+
MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
451 |
+
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
452 |
+
TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw
|
453 |
+
MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h
|
454 |
+
bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw
|
455 |
+
IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
456 |
+
AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7
|
457 |
+
3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y
|
458 |
+
/9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6
|
459 |
+
juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS
|
460 |
+
ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud
|
461 |
+
DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
|
462 |
+
/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp
|
463 |
+
ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl
|
464 |
+
cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw
|
465 |
+
uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32
|
466 |
+
pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA
|
467 |
+
BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l
|
468 |
+
R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O
|
469 |
+
9y5Xt5hwXsjEeLBi
|
470 |
+
-----END CERTIFICATE-----
|
471 |
+
|
472 |
+
QuoVadis Root CA
|
473 |
+
================
|
474 |
+
-----BEGIN CERTIFICATE-----
|
475 |
+
MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE
|
476 |
+
ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
|
477 |
+
eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz
|
478 |
+
MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp
|
479 |
+
cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD
|
480 |
+
EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF
|
481 |
+
AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk
|
482 |
+
J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL
|
483 |
+
F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL
|
484 |
+
YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen
|
485 |
+
AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w
|
486 |
+
PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y
|
487 |
+
ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7
|
488 |
+
MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj
|
489 |
+
YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs
|
490 |
+
ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh
|
491 |
+
Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW
|
492 |
+
Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu
|
493 |
+
BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw
|
494 |
+
FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0
|
495 |
+
aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6
|
496 |
+
tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo
|
497 |
+
fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul
|
498 |
+
LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x
|
499 |
+
gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi
|
500 |
+
5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi
|
501 |
+
5nrQNiOKSnQ2+Q==
|
502 |
+
-----END CERTIFICATE-----
|
503 |
+
|
504 |
+
QuoVadis Root CA 2
|
505 |
+
==================
|
506 |
+
-----BEGIN CERTIFICATE-----
|
507 |
+
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
|
533 |
+
-----END CERTIFICATE-----
|
534 |
+
|
535 |
+
QuoVadis Root CA 3
|
536 |
+
==================
|
537 |
+
-----BEGIN CERTIFICATE-----
|
538 |
+
MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
|
539 |
+
EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx
|
540 |
+
OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
|
541 |
+
aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
|
542 |
+
DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg
|
543 |
+
DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij
|
544 |
+
KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K
|
545 |
+
DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv
|
546 |
+
BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp
|
547 |
+
p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8
|
548 |
+
nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX
|
549 |
+
MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM
|
550 |
+
Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz
|
551 |
+
uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT
|
552 |
+
BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj
|
553 |
+
YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0
|
554 |
+
aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB
|
555 |
+
BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD
|
556 |
+
VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4
|
557 |
+
ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE
|
558 |
+
AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV
|
559 |
+
qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s
|
560 |
+
hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z
|
561 |
+
POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2
|
562 |
+
Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp
|
563 |
+
8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC
|
564 |
+
bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu
|
565 |
+
g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p
|
566 |
+
vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr
|
567 |
+
qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto=
|
568 |
+
-----END CERTIFICATE-----
|
569 |
+
|
570 |
+
Security Communication Root CA
|
571 |
+
==============================
|
572 |
+
-----BEGIN CERTIFICATE-----
|
573 |
+
MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
|
574 |
+
U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
|
575 |
+
HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
|
576 |
+
U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
|
577 |
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw
|
578 |
+
8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM
|
579 |
+
DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX
|
580 |
+
5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd
|
581 |
+
DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2
|
582 |
+
JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw
|
583 |
+
DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g
|
584 |
+
0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a
|
585 |
+
mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ
|
586 |
+
s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ
|
587 |
+
6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi
|
588 |
+
FL39vmwLAw==
|
589 |
+
-----END CERTIFICATE-----
|
590 |
+
|
591 |
+
Sonera Class 2 Root CA
|
592 |
+
======================
|
593 |
+
-----BEGIN CERTIFICATE-----
|
594 |
+
MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
|
595 |
+
U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw
|
596 |
+
NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
|
597 |
+
IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3
|
598 |
+
/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT
|
599 |
+
dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG
|
600 |
+
f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P
|
601 |
+
tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH
|
602 |
+
nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT
|
603 |
+
XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt
|
604 |
+
0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI
|
605 |
+
cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph
|
606 |
+
Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx
|
607 |
+
EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH
|
608 |
+
llpwrN9M
|
609 |
+
-----END CERTIFICATE-----
|
610 |
+
|
611 |
+
UTN USERFirst Hardware Root CA
|
612 |
+
==============================
|
613 |
+
-----BEGIN CERTIFICATE-----
|
614 |
+
MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE
|
615 |
+
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
616 |
+
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd
|
617 |
+
BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx
|
618 |
+
OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0
|
619 |
+
eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz
|
620 |
+
ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3
|
621 |
+
DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI
|
622 |
+
wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd
|
623 |
+
tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8
|
624 |
+
i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf
|
625 |
+
Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw
|
626 |
+
gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF
|
627 |
+
lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF
|
628 |
+
UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF
|
629 |
+
BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
|
630 |
+
//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW
|
631 |
+
XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2
|
632 |
+
lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn
|
633 |
+
iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67
|
634 |
+
nfhmqA==
|
635 |
+
-----END CERTIFICATE-----
|
636 |
+
|
637 |
+
Camerfirma Chambers of Commerce Root
|
638 |
+
====================================
|
639 |
+
-----BEGIN CERTIFICATE-----
|
640 |
+
MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
|
641 |
+
QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
|
642 |
+
ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx
|
643 |
+
NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp
|
644 |
+
cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn
|
645 |
+
MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC
|
646 |
+
AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU
|
647 |
+
xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH
|
648 |
+
NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW
|
649 |
+
DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV
|
650 |
+
d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud
|
651 |
+
EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v
|
652 |
+
cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P
|
653 |
+
AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh
|
654 |
+
bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD
|
655 |
+
VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz
|
656 |
+
aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi
|
657 |
+
fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD
|
658 |
+
L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN
|
659 |
+
UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n
|
660 |
+
ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1
|
661 |
+
erfutGWaIZDgqtCYvDi1czyL+Nw=
|
662 |
+
-----END CERTIFICATE-----
|
663 |
+
|
664 |
+
Camerfirma Global Chambersign Root
|
665 |
+
==================================
|
666 |
+
-----BEGIN CERTIFICATE-----
|
667 |
+
MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
|
668 |
+
QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
|
669 |
+
ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx
|
670 |
+
NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt
|
671 |
+
YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg
|
672 |
+
MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw
|
673 |
+
ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J
|
674 |
+
1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O
|
675 |
+
by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl
|
676 |
+
6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c
|
677 |
+
8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/
|
678 |
+
BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j
|
679 |
+
aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B
|
680 |
+
Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj
|
681 |
+
aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y
|
682 |
+
ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh
|
683 |
+
bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA
|
684 |
+
PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y
|
685 |
+
gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ
|
686 |
+
PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4
|
687 |
+
IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes
|
688 |
+
t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A==
|
689 |
+
-----END CERTIFICATE-----
|
690 |
+
|
691 |
+
XRamp Global CA Root
|
692 |
+
====================
|
693 |
+
-----BEGIN CERTIFICATE-----
|
694 |
+
MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE
|
695 |
+
BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj
|
696 |
+
dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB
|
697 |
+
dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx
|
698 |
+
HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg
|
699 |
+
U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
|
700 |
+
dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu
|
701 |
+
IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx
|
702 |
+
foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE
|
703 |
+
zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs
|
704 |
+
AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry
|
705 |
+
xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
|
706 |
+
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap
|
707 |
+
oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC
|
708 |
+
AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc
|
709 |
+
/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt
|
710 |
+
qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n
|
711 |
+
nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz
|
712 |
+
8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw=
|
713 |
+
-----END CERTIFICATE-----
|
714 |
+
|
715 |
+
Go Daddy Class 2 CA
|
716 |
+
===================
|
717 |
+
-----BEGIN CERTIFICATE-----
|
718 |
+
MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY
|
719 |
+
VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp
|
720 |
+
ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG
|
721 |
+
A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g
|
722 |
+
RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD
|
723 |
+
ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv
|
724 |
+
2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32
|
725 |
+
qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j
|
726 |
+
YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY
|
727 |
+
vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O
|
728 |
+
BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o
|
729 |
+
atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu
|
730 |
+
MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG
|
731 |
+
A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim
|
732 |
+
PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt
|
733 |
+
I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
|
734 |
+
HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI
|
735 |
+
Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b
|
736 |
+
vZ8=
|
737 |
+
-----END CERTIFICATE-----
|
738 |
+
|
739 |
+
Starfield Class 2 CA
|
740 |
+
====================
|
741 |
+
-----BEGIN CERTIFICATE-----
|
742 |
+
MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc
|
743 |
+
U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg
|
744 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo
|
745 |
+
MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG
|
746 |
+
A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG
|
747 |
+
SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY
|
748 |
+
bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ
|
749 |
+
JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm
|
750 |
+
epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN
|
751 |
+
F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF
|
752 |
+
MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f
|
753 |
+
hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo
|
754 |
+
bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g
|
755 |
+
QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs
|
756 |
+
afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM
|
757 |
+
PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
|
758 |
+
xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD
|
759 |
+
KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3
|
760 |
+
QBFGmh95DmK/D5fs4C8fF5Q=
|
761 |
+
-----END CERTIFICATE-----
|
762 |
+
|
763 |
+
StartCom Certification Authority
|
764 |
+
================================
|
765 |
+
-----BEGIN CERTIFICATE-----
|
766 |
+
MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
|
767 |
+
U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
|
768 |
+
ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
|
769 |
+
NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
|
770 |
+
LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
|
771 |
+
U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
|
772 |
+
ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
|
773 |
+
o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
|
774 |
+
Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
|
775 |
+
eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
|
776 |
+
2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
|
777 |
+
6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
|
778 |
+
osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
|
779 |
+
untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
|
780 |
+
UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
|
781 |
+
37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE
|
782 |
+
FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0
|
783 |
+
Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj
|
784 |
+
YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH
|
785 |
+
AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw
|
786 |
+
Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg
|
787 |
+
U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5
|
788 |
+
LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl
|
789 |
+
cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh
|
790 |
+
cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT
|
791 |
+
dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC
|
792 |
+
AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh
|
793 |
+
3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm
|
794 |
+
vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk
|
795 |
+
fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3
|
796 |
+
fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ
|
797 |
+
EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq
|
798 |
+
yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl
|
799 |
+
1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/
|
800 |
+
lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro
|
801 |
+
g14=
|
802 |
+
-----END CERTIFICATE-----
|
803 |
+
|
804 |
+
Taiwan GRCA
|
805 |
+
===========
|
806 |
+
-----BEGIN CERTIFICATE-----
|
807 |
+
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
|
832 |
+
-----END CERTIFICATE-----
|
833 |
+
|
834 |
+
Swisscom Root CA 1
|
835 |
+
==================
|
836 |
+
-----BEGIN CERTIFICATE-----
|
837 |
+
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
|
863 |
+
NY6E0F/6MBr1mmz0DlP5OlvRHA==
|
864 |
+
-----END CERTIFICATE-----
|
865 |
+
|
866 |
+
DigiCert Assured ID Root CA
|
867 |
+
===========================
|
868 |
+
-----BEGIN CERTIFICATE-----
|
869 |
+
MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG
|
870 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
|
871 |
+
IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx
|
872 |
+
MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
|
873 |
+
ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew
|
874 |
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO
|
875 |
+
9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy
|
876 |
+
UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW
|
877 |
+
/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy
|
878 |
+
oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf
|
879 |
+
GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF
|
880 |
+
66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq
|
881 |
+
hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc
|
882 |
+
EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn
|
883 |
+
SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i
|
884 |
+
8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
|
885 |
+
+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
|
886 |
+
-----END CERTIFICATE-----
|
887 |
+
|
888 |
+
DigiCert Global Root CA
|
889 |
+
=======================
|
890 |
+
-----BEGIN CERTIFICATE-----
|
891 |
+
MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG
|
892 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
|
893 |
+
HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw
|
894 |
+
MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
|
895 |
+
dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq
|
896 |
+
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn
|
897 |
+
TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5
|
898 |
+
BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H
|
899 |
+
4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y
|
900 |
+
7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB
|
901 |
+
o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm
|
902 |
+
8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF
|
903 |
+
BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr
|
904 |
+
EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt
|
905 |
+
tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886
|
906 |
+
UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
|
907 |
+
CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
|
908 |
+
-----END CERTIFICATE-----
|
909 |
+
|
910 |
+
DigiCert High Assurance EV Root CA
|
911 |
+
==================================
|
912 |
+
-----BEGIN CERTIFICATE-----
|
913 |
+
MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG
|
914 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw
|
915 |
+
KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw
|
916 |
+
MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ
|
917 |
+
MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu
|
918 |
+
Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t
|
919 |
+
Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS
|
920 |
+
OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3
|
921 |
+
MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ
|
922 |
+
NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe
|
923 |
+
h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB
|
924 |
+
Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY
|
925 |
+
JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ
|
926 |
+
V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp
|
927 |
+
myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK
|
928 |
+
mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
|
929 |
+
vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K
|
930 |
+
-----END CERTIFICATE-----
|
931 |
+
|
932 |
+
Certplus Class 2 Primary CA
|
933 |
+
===========================
|
934 |
+
-----BEGIN CERTIFICATE-----
|
935 |
+
MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE
|
936 |
+
BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN
|
937 |
+
OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy
|
938 |
+
dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
939 |
+
ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR
|
940 |
+
5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ
|
941 |
+
Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO
|
942 |
+
YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e
|
943 |
+
e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME
|
944 |
+
CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ
|
945 |
+
YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t
|
946 |
+
L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD
|
947 |
+
P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R
|
948 |
+
TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+
|
949 |
+
7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW
|
950 |
+
//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7
|
951 |
+
l7+ijrRU
|
952 |
+
-----END CERTIFICATE-----
|
953 |
+
|
954 |
+
DST Root CA X3
|
955 |
+
==============
|
956 |
+
-----BEGIN CERTIFICATE-----
|
957 |
+
MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK
|
958 |
+
ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X
|
959 |
+
DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1
|
960 |
+
cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD
|
961 |
+
ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT
|
962 |
+
rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9
|
963 |
+
UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy
|
964 |
+
xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d
|
965 |
+
utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T
|
966 |
+
AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ
|
967 |
+
MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug
|
968 |
+
dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE
|
969 |
+
GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw
|
970 |
+
RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS
|
971 |
+
fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
|
972 |
+
-----END CERTIFICATE-----
|
973 |
+
|
974 |
+
DST ACES CA X6
|
975 |
+
==============
|
976 |
+
-----BEGIN CERTIFICATE-----
|
977 |
+
MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG
|
978 |
+
EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT
|
979 |
+
MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha
|
980 |
+
MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE
|
981 |
+
CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC
|
982 |
+
AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI
|
983 |
+
DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa
|
984 |
+
pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow
|
985 |
+
GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy
|
986 |
+
MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud
|
987 |
+
EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu
|
988 |
+
Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy
|
989 |
+
dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU
|
990 |
+
CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2
|
991 |
+
5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t
|
992 |
+
Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq
|
993 |
+
nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs
|
994 |
+
vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3
|
995 |
+
oKfN5XozNmr6mis=
|
996 |
+
-----END CERTIFICATE-----
|
997 |
+
|
998 |
+
SwissSign Gold CA - G2
|
999 |
+
======================
|
1000 |
+
-----BEGIN CERTIFICATE-----
|
1001 |
+
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
|
1027 |
+
-----END CERTIFICATE-----
|
1028 |
+
|
1029 |
+
SwissSign Silver CA - G2
|
1030 |
+
========================
|
1031 |
+
-----BEGIN CERTIFICATE-----
|
1032 |
+
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
|
1058 |
+
-----END CERTIFICATE-----
|
1059 |
+
|
1060 |
+
GeoTrust Primary Certification Authority
|
1061 |
+
========================================
|
1062 |
+
-----BEGIN CERTIFICATE-----
|
1063 |
+
MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG
|
1064 |
+
EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD
|
1065 |
+
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx
|
1066 |
+
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ
|
1067 |
+
cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
1068 |
+
CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN
|
1069 |
+
b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9
|
1070 |
+
nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge
|
1071 |
+
RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt
|
1072 |
+
tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
|
1073 |
+
AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI
|
1074 |
+
hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K
|
1075 |
+
Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN
|
1076 |
+
NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa
|
1077 |
+
Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG
|
1078 |
+
1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk=
|
1079 |
+
-----END CERTIFICATE-----
|
1080 |
+
|
1081 |
+
thawte Primary Root CA
|
1082 |
+
======================
|
1083 |
+
-----BEGIN CERTIFICATE-----
|
1084 |
+
MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE
|
1085 |
+
BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
|
1086 |
+
aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
|
1087 |
+
cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3
|
1088 |
+
MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg
|
1089 |
+
SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv
|
1090 |
+
KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT
|
1091 |
+
FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs
|
1092 |
+
oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ
|
1093 |
+
1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc
|
1094 |
+
q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K
|
1095 |
+
aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p
|
1096 |
+
afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD
|
1097 |
+
VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF
|
1098 |
+
AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE
|
1099 |
+
uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
|
1100 |
+
xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89
|
1101 |
+
jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH
|
1102 |
+
z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA==
|
1103 |
+
-----END CERTIFICATE-----
|
1104 |
+
|
1105 |
+
VeriSign Class 3 Public Primary Certification Authority - G5
|
1106 |
+
============================================================
|
1107 |
+
-----BEGIN CERTIFICATE-----
|
1108 |
+
MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE
|
1109 |
+
BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
|
1110 |
+
ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
|
1111 |
+
IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp
|
1112 |
+
ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB
|
1113 |
+
yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln
|
1114 |
+
biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh
|
1115 |
+
dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt
|
1116 |
+
YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
1117 |
+
ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz
|
1118 |
+
j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD
|
1119 |
+
Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/
|
1120 |
+
Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r
|
1121 |
+
fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/
|
1122 |
+
BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv
|
1123 |
+
Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
|
1124 |
+
aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG
|
1125 |
+
SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+
|
1126 |
+
X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE
|
1127 |
+
KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC
|
1128 |
+
Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE
|
1129 |
+
ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
|
1130 |
+
-----END CERTIFICATE-----
|
1131 |
+
|
1132 |
+
SecureTrust CA
|
1133 |
+
==============
|
1134 |
+
-----BEGIN CERTIFICATE-----
|
1135 |
+
MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG
|
1136 |
+
EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy
|
1137 |
+
dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe
|
1138 |
+
BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC
|
1139 |
+
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX
|
1140 |
+
OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t
|
1141 |
+
DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH
|
1142 |
+
GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b
|
1143 |
+
01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH
|
1144 |
+
ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/
|
1145 |
+
BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj
|
1146 |
+
aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
|
1147 |
+
KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu
|
1148 |
+
SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf
|
1149 |
+
mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ
|
1150 |
+
nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR
|
1151 |
+
3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=
|
1152 |
+
-----END CERTIFICATE-----
|
1153 |
+
|
1154 |
+
Secure Global CA
|
1155 |
+
================
|
1156 |
+
-----BEGIN CERTIFICATE-----
|
1157 |
+
MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG
|
1158 |
+
EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH
|
1159 |
+
bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg
|
1160 |
+
MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg
|
1161 |
+
Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx
|
1162 |
+
YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ
|
1163 |
+
bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g
|
1164 |
+
8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV
|
1165 |
+
HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi
|
1166 |
+
0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
|
1167 |
+
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn
|
1168 |
+
oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA
|
1169 |
+
MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+
|
1170 |
+
OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn
|
1171 |
+
CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5
|
1172 |
+
3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc
|
1173 |
+
f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW
|
1174 |
+
-----END CERTIFICATE-----
|
1175 |
+
|
1176 |
+
COMODO Certification Authority
|
1177 |
+
==============================
|
1178 |
+
-----BEGIN CERTIFICATE-----
|
1179 |
+
MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE
|
1180 |
+
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
|
1181 |
+
A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1
|
1182 |
+
dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb
|
1183 |
+
MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD
|
1184 |
+
T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
|
1185 |
+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH
|
1186 |
+
+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww
|
1187 |
+
xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV
|
1188 |
+
4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA
|
1189 |
+
1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI
|
1190 |
+
rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E
|
1191 |
+
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k
|
1192 |
+
b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC
|
1193 |
+
AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP
|
1194 |
+
OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
|
1195 |
+
RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc
|
1196 |
+
IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN
|
1197 |
+
+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ==
|
1198 |
+
-----END CERTIFICATE-----
|
1199 |
+
|
1200 |
+
Network Solutions Certificate Authority
|
1201 |
+
=======================================
|
1202 |
+
-----BEGIN CERTIFICATE-----
|
1203 |
+
MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG
|
1204 |
+
EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr
|
1205 |
+
IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx
|
1206 |
+
MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
|
1207 |
+
MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
|
1208 |
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx
|
1209 |
+
jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT
|
1210 |
+
aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT
|
1211 |
+
crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc
|
1212 |
+
/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB
|
1213 |
+
AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP
|
1214 |
+
BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv
|
1215 |
+
bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA
|
1216 |
+
A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q
|
1217 |
+
4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/
|
1218 |
+
GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
|
1219 |
+
wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD
|
1220 |
+
ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
|
1221 |
+
-----END CERTIFICATE-----
|
1222 |
+
|
1223 |
+
COMODO ECC Certification Authority
|
1224 |
+
==================================
|
1225 |
+
-----BEGIN CERTIFICATE-----
|
1226 |
+
MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC
|
1227 |
+
R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE
|
1228 |
+
ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB
|
1229 |
+
dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix
|
1230 |
+
GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
|
1231 |
+
Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo
|
1232 |
+
b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X
|
1233 |
+
4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni
|
1234 |
+
wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E
|
1235 |
+
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG
|
1236 |
+
FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA
|
1237 |
+
U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
|
1238 |
+
-----END CERTIFICATE-----
|
1239 |
+
|
1240 |
+
Security Communication EV RootCA1
|
1241 |
+
=================================
|
1242 |
+
-----BEGIN CERTIFICATE-----
|
1243 |
+
MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
|
1244 |
+
U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh
|
1245 |
+
dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE
|
1246 |
+
BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl
|
1247 |
+
Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
1248 |
+
AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO
|
1249 |
+
/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX
|
1250 |
+
WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z
|
1251 |
+
ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4
|
1252 |
+
bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK
|
1253 |
+
9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG
|
1254 |
+
SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm
|
1255 |
+
iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG
|
1256 |
+
Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW
|
1257 |
+
mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW
|
1258 |
+
T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490
|
1259 |
+
-----END CERTIFICATE-----
|
1260 |
+
|
1261 |
+
OISTE WISeKey Global Root GA CA
|
1262 |
+
===============================
|
1263 |
+
-----BEGIN CERTIFICATE-----
|
1264 |
+
MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE
|
1265 |
+
BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG
|
1266 |
+
A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH
|
1267 |
+
bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD
|
1268 |
+
VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw
|
1269 |
+
IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5
|
1270 |
+
IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9
|
1271 |
+
Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg
|
1272 |
+
Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD
|
1273 |
+
d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ
|
1274 |
+
/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R
|
1275 |
+
LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw
|
1276 |
+
AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
|
1277 |
+
KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm
|
1278 |
+
MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4
|
1279 |
+
+vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa
|
1280 |
+
hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY
|
1281 |
+
okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0=
|
1282 |
+
-----END CERTIFICATE-----
|
1283 |
+
|
1284 |
+
Certigna
|
1285 |
+
========
|
1286 |
+
-----BEGIN CERTIFICATE-----
|
1287 |
+
MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw
|
1288 |
+
EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3
|
1289 |
+
MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI
|
1290 |
+
Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q
|
1291 |
+
XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH
|
1292 |
+
GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p
|
1293 |
+
ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg
|
1294 |
+
DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf
|
1295 |
+
Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ
|
1296 |
+
tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ
|
1297 |
+
BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J
|
1298 |
+
SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA
|
1299 |
+
hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+
|
1300 |
+
ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu
|
1301 |
+
PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
|
1302 |
+
1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw
|
1303 |
+
WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
|
1304 |
+
-----END CERTIFICATE-----
|
1305 |
+
|
1306 |
+
Deutsche Telekom Root CA 2
|
1307 |
+
==========================
|
1308 |
+
-----BEGIN CERTIFICATE-----
|
1309 |
+
MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT
|
1310 |
+
RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG
|
1311 |
+
A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5
|
1312 |
+
MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G
|
1313 |
+
A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS
|
1314 |
+
b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5
|
1315 |
+
bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI
|
1316 |
+
KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY
|
1317 |
+
AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK
|
1318 |
+
Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV
|
1319 |
+
jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV
|
1320 |
+
HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr
|
1321 |
+
E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy
|
1322 |
+
zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8
|
1323 |
+
rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G
|
1324 |
+
dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU
|
1325 |
+
Cm26OWMohpLzGITY+9HPBVZkVw==
|
1326 |
+
-----END CERTIFICATE-----
|
1327 |
+
|
1328 |
+
Cybertrust Global Root
|
1329 |
+
======================
|
1330 |
+
-----BEGIN CERTIFICATE-----
|
1331 |
+
MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li
|
1332 |
+
ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4
|
1333 |
+
MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD
|
1334 |
+
ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
|
1335 |
+
+Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW
|
1336 |
+
0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL
|
1337 |
+
AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin
|
1338 |
+
89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT
|
1339 |
+
8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP
|
1340 |
+
BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2
|
1341 |
+
MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G
|
1342 |
+
A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO
|
1343 |
+
lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi
|
1344 |
+
5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2
|
1345 |
+
hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T
|
1346 |
+
X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
|
1347 |
+
WL1WMRJOEcgh4LMRkWXbtKaIOM5V
|
1348 |
+
-----END CERTIFICATE-----
|
1349 |
+
|
1350 |
+
ePKI Root Certification Authority
|
1351 |
+
=================================
|
1352 |
+
-----BEGIN CERTIFICATE-----
|
1353 |
+
MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG
|
1354 |
+
EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg
|
1355 |
+
Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx
|
1356 |
+
MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq
|
1357 |
+
MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B
|
1358 |
+
AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs
|
1359 |
+
IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi
|
1360 |
+
lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv
|
1361 |
+
qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX
|
1362 |
+
12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O
|
1363 |
+
WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+
|
1364 |
+
ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao
|
1365 |
+
lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/
|
1366 |
+
vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi
|
1367 |
+
Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi
|
1368 |
+
MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH
|
1369 |
+
ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0
|
1370 |
+
1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq
|
1371 |
+
KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV
|
1372 |
+
xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP
|
1373 |
+
NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r
|
1374 |
+
GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE
|
1375 |
+
xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx
|
1376 |
+
gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy
|
1377 |
+
sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD
|
1378 |
+
BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw=
|
1379 |
+
-----END CERTIFICATE-----
|
1380 |
+
|
1381 |
+
T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3
|
1382 |
+
=============================================================================================================================
|
1383 |
+
-----BEGIN CERTIFICATE-----
|
1384 |
+
MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH
|
1385 |
+
DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q
|
1386 |
+
aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry
|
1387 |
+
b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV
|
1388 |
+
BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg
|
1389 |
+
S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4
|
1390 |
+
MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl
|
1391 |
+
IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF
|
1392 |
+
n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl
|
1393 |
+
IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft
|
1394 |
+
dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl
|
1395 |
+
cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B
|
1396 |
+
AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO
|
1397 |
+
Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1
|
1398 |
+
xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR
|
1399 |
+
6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL
|
1400 |
+
hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd
|
1401 |
+
BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
|
1402 |
+
MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4
|
1403 |
+
N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT
|
1404 |
+
y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh
|
1405 |
+
LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M
|
1406 |
+
dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI=
|
1407 |
+
-----END CERTIFICATE-----
|
1408 |
+
|
1409 |
+
certSIGN ROOT CA
|
1410 |
+
================
|
1411 |
+
-----BEGIN CERTIFICATE-----
|
1412 |
+
MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD
|
1413 |
+
VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa
|
1414 |
+
Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE
|
1415 |
+
CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I
|
1416 |
+
JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH
|
1417 |
+
rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2
|
1418 |
+
ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD
|
1419 |
+
0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943
|
1420 |
+
AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B
|
1421 |
+
Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB
|
1422 |
+
AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8
|
1423 |
+
SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0
|
1424 |
+
x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt
|
1425 |
+
vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz
|
1426 |
+
TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
|
1427 |
+
-----END CERTIFICATE-----
|
1428 |
+
|
1429 |
+
CNNIC ROOT
|
1430 |
+
==========
|
1431 |
+
-----BEGIN CERTIFICATE-----
|
1432 |
+
MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE
|
1433 |
+
ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw
|
1434 |
+
OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw
|
1435 |
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD
|
1436 |
+
o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz
|
1437 |
+
VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT
|
1438 |
+
VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or
|
1439 |
+
czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK
|
1440 |
+
y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC
|
1441 |
+
wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S
|
1442 |
+
lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5
|
1443 |
+
Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM
|
1444 |
+
O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8
|
1445 |
+
BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2
|
1446 |
+
G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m
|
1447 |
+
mxE=
|
1448 |
+
-----END CERTIFICATE-----
|
1449 |
+
|
1450 |
+
GeoTrust Primary Certification Authority - G3
|
1451 |
+
=============================================
|
1452 |
+
-----BEGIN CERTIFICATE-----
|
1453 |
+
MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE
|
1454 |
+
BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0
|
1455 |
+
IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy
|
1456 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz
|
1457 |
+
NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo
|
1458 |
+
YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT
|
1459 |
+
LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI
|
1460 |
+
hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j
|
1461 |
+
K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE
|
1462 |
+
c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C
|
1463 |
+
IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu
|
1464 |
+
dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC
|
1465 |
+
MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr
|
1466 |
+
2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9
|
1467 |
+
cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE
|
1468 |
+
Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD
|
1469 |
+
AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s
|
1470 |
+
t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt
|
1471 |
+
-----END CERTIFICATE-----
|
1472 |
+
|
1473 |
+
thawte Primary Root CA - G2
|
1474 |
+
===========================
|
1475 |
+
-----BEGIN CERTIFICATE-----
|
1476 |
+
MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC
|
1477 |
+
VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu
|
1478 |
+
IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg
|
1479 |
+
Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV
|
1480 |
+
MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG
|
1481 |
+
b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt
|
1482 |
+
IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS
|
1483 |
+
LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5
|
1484 |
+
8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU
|
1485 |
+
mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN
|
1486 |
+
G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K
|
1487 |
+
rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg==
|
1488 |
+
-----END CERTIFICATE-----
|
1489 |
+
|
1490 |
+
thawte Primary Root CA - G3
|
1491 |
+
===========================
|
1492 |
+
-----BEGIN CERTIFICATE-----
|
1493 |
+
MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE
|
1494 |
+
BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
|
1495 |
+
aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
|
1496 |
+
cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w
|
1497 |
+
ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh
|
1498 |
+
d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD
|
1499 |
+
VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG
|
1500 |
+
A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
1501 |
+
MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At
|
1502 |
+
P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC
|
1503 |
+
+BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY
|
1504 |
+
7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW
|
1505 |
+
vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E
|
1506 |
+
BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ
|
1507 |
+
KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK
|
1508 |
+
A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu
|
1509 |
+
t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC
|
1510 |
+
8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm
|
1511 |
+
er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A=
|
1512 |
+
-----END CERTIFICATE-----
|
1513 |
+
|
1514 |
+
GeoTrust Primary Certification Authority - G2
|
1515 |
+
=============================================
|
1516 |
+
-----BEGIN CERTIFICATE-----
|
1517 |
+
MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC
|
1518 |
+
VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu
|
1519 |
+
Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD
|
1520 |
+
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1
|
1521 |
+
OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg
|
1522 |
+
MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl
|
1523 |
+
b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG
|
1524 |
+
BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc
|
1525 |
+
KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD
|
1526 |
+
VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+
|
1527 |
+
EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m
|
1528 |
+
ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2
|
1529 |
+
npaqBA+K
|
1530 |
+
-----END CERTIFICATE-----
|
1531 |
+
|
1532 |
+
VeriSign Universal Root Certification Authority
|
1533 |
+
===============================================
|
1534 |
+
-----BEGIN CERTIFICATE-----
|
1535 |
+
MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE
|
1536 |
+
BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
|
1537 |
+
ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
|
1538 |
+
IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u
|
1539 |
+
IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV
|
1540 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
1541 |
+
cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
1542 |
+
IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0
|
1543 |
+
aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj
|
1544 |
+
1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP
|
1545 |
+
MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72
|
1546 |
+
9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I
|
1547 |
+
AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR
|
1548 |
+
tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G
|
1549 |
+
CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O
|
1550 |
+
a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud
|
1551 |
+
DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3
|
1552 |
+
Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx
|
1553 |
+
Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx
|
1554 |
+
P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P
|
1555 |
+
wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4
|
1556 |
+
mJO37M2CYfE45k+XmCpajQ==
|
1557 |
+
-----END CERTIFICATE-----
|
1558 |
+
|
1559 |
+
VeriSign Class 3 Public Primary Certification Authority - G4
|
1560 |
+
============================================================
|
1561 |
+
-----BEGIN CERTIFICATE-----
|
1562 |
+
MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC
|
1563 |
+
VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3
|
1564 |
+
b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz
|
1565 |
+
ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj
|
1566 |
+
YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL
|
1567 |
+
MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU
|
1568 |
+
cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo
|
1569 |
+
b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5
|
1570 |
+
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8
|
1571 |
+
Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz
|
1572 |
+
rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB
|
1573 |
+
/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw
|
1574 |
+
HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u
|
1575 |
+
Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD
|
1576 |
+
A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx
|
1577 |
+
AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA==
|
1578 |
+
-----END CERTIFICATE-----
|
1579 |
+
|
1580 |
+
NetLock Arany (Class Gold) Főtanúsítvány
|
1581 |
+
========================================
|
1582 |
+
-----BEGIN CERTIFICATE-----
|
1583 |
+
MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G
|
1584 |
+
A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610
|
1585 |
+
dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB
|
1586 |
+
cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx
|
1587 |
+
MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO
|
1588 |
+
ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv
|
1589 |
+
biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6
|
1590 |
+
c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu
|
1591 |
+
0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw
|
1592 |
+
/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk
|
1593 |
+
H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw
|
1594 |
+
fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1
|
1595 |
+
neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB
|
1596 |
+
BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW
|
1597 |
+
qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta
|
1598 |
+
YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC
|
1599 |
+
bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna
|
1600 |
+
NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu
|
1601 |
+
dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E=
|
1602 |
+
-----END CERTIFICATE-----
|
1603 |
+
|
1604 |
+
Staat der Nederlanden Root CA - G2
|
1605 |
+
==================================
|
1606 |
+
-----BEGIN CERTIFICATE-----
|
1607 |
+
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
|
1633 |
+
66+KAQ==
|
1634 |
+
-----END CERTIFICATE-----
|
1635 |
+
|
1636 |
+
Hongkong Post Root CA 1
|
1637 |
+
=======================
|
1638 |
+
-----BEGIN CERTIFICATE-----
|
1639 |
+
MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT
|
1640 |
+
DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx
|
1641 |
+
NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n
|
1642 |
+
IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF
|
1643 |
+
AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1
|
1644 |
+
ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr
|
1645 |
+
auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh
|
1646 |
+
qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY
|
1647 |
+
V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV
|
1648 |
+
HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i
|
1649 |
+
h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio
|
1650 |
+
l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei
|
1651 |
+
IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps
|
1652 |
+
T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT
|
1653 |
+
c4afU9hDDl3WY4JxHYB0yvbiAmvZWg==
|
1654 |
+
-----END CERTIFICATE-----
|
1655 |
+
|
1656 |
+
SecureSign RootCA11
|
1657 |
+
===================
|
1658 |
+
-----BEGIN CERTIFICATE-----
|
1659 |
+
MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi
|
1660 |
+
SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS
|
1661 |
+
b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw
|
1662 |
+
KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1
|
1663 |
+
cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL
|
1664 |
+
TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO
|
1665 |
+
wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq
|
1666 |
+
g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP
|
1667 |
+
O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA
|
1668 |
+
bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX
|
1669 |
+
t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh
|
1670 |
+
OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r
|
1671 |
+
bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ
|
1672 |
+
Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01
|
1673 |
+
y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061
|
1674 |
+
lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I=
|
1675 |
+
-----END CERTIFICATE-----
|
1676 |
+
|
1677 |
+
ACEDICOM Root
|
1678 |
+
=============
|
1679 |
+
-----BEGIN CERTIFICATE-----
|
1680 |
+
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
|
1706 |
+
-----END CERTIFICATE-----
|
1707 |
+
|
1708 |
+
Microsec e-Szigno Root CA 2009
|
1709 |
+
==============================
|
1710 |
+
-----BEGIN CERTIFICATE-----
|
1711 |
+
MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER
|
1712 |
+
MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv
|
1713 |
+
c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o
|
1714 |
+
dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE
|
1715 |
+
BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt
|
1716 |
+
U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw
|
1717 |
+
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA
|
1718 |
+
fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG
|
1719 |
+
0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA
|
1720 |
+
pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm
|
1721 |
+
1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC
|
1722 |
+
AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf
|
1723 |
+
QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE
|
1724 |
+
FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o
|
1725 |
+
lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX
|
1726 |
+
I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775
|
1727 |
+
tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02
|
1728 |
+
yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi
|
1729 |
+
LXpUq3DDfSJlgnCW
|
1730 |
+
-----END CERTIFICATE-----
|
1731 |
+
|
1732 |
+
GlobalSign Root CA - R3
|
1733 |
+
=======================
|
1734 |
+
-----BEGIN CERTIFICATE-----
|
1735 |
+
MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv
|
1736 |
+
YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
|
1737 |
+
bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
|
1738 |
+
aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
|
1739 |
+
bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt
|
1740 |
+
iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ
|
1741 |
+
0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3
|
1742 |
+
rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl
|
1743 |
+
OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2
|
1744 |
+
xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
|
1745 |
+
FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7
|
1746 |
+
lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8
|
1747 |
+
EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E
|
1748 |
+
bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18
|
1749 |
+
YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r
|
1750 |
+
kpeDMdmztcpHWD9f
|
1751 |
+
-----END CERTIFICATE-----
|
1752 |
+
|
1753 |
+
Autoridad de Certificacion Firmaprofesional CIF A62634068
|
1754 |
+
=========================================================
|
1755 |
+
-----BEGIN CERTIFICATE-----
|
1756 |
+
MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA
|
1757 |
+
BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2
|
1758 |
+
MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw
|
1759 |
+
QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB
|
1760 |
+
NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD
|
1761 |
+
Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P
|
1762 |
+
B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY
|
1763 |
+
7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH
|
1764 |
+
ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI
|
1765 |
+
plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX
|
1766 |
+
MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX
|
1767 |
+
LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK
|
1768 |
+
bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU
|
1769 |
+
vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud
|
1770 |
+
EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH
|
1771 |
+
DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp
|
1772 |
+
cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA
|
1773 |
+
bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx
|
1774 |
+
ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx
|
1775 |
+
51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk
|
1776 |
+
R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP
|
1777 |
+
T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f
|
1778 |
+
Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl
|
1779 |
+
osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR
|
1780 |
+
crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR
|
1781 |
+
saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD
|
1782 |
+
KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi
|
1783 |
+
6Et8Vcad+qMUu2WFbm5PEn4KPJ2V
|
1784 |
+
-----END CERTIFICATE-----
|
1785 |
+
|
1786 |
+
Izenpe.com
|
1787 |
+
==========
|
1788 |
+
-----BEGIN CERTIFICATE-----
|
1789 |
+
MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG
|
1790 |
+
EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz
|
1791 |
+
MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu
|
1792 |
+
QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ
|
1793 |
+
03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK
|
1794 |
+
ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU
|
1795 |
+
+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC
|
1796 |
+
PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT
|
1797 |
+
OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK
|
1798 |
+
F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK
|
1799 |
+
0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+
|
1800 |
+
0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB
|
1801 |
+
leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID
|
1802 |
+
AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+
|
1803 |
+
SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG
|
1804 |
+
NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx
|
1805 |
+
MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O
|
1806 |
+
BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l
|
1807 |
+
Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga
|
1808 |
+
kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q
|
1809 |
+
hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs
|
1810 |
+
g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5
|
1811 |
+
aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5
|
1812 |
+
nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC
|
1813 |
+
ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo
|
1814 |
+
Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z
|
1815 |
+
WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw==
|
1816 |
+
-----END CERTIFICATE-----
|
1817 |
+
|
1818 |
+
Chambers of Commerce Root - 2008
|
1819 |
+
================================
|
1820 |
+
-----BEGIN CERTIFICATE-----
|
1821 |
+
MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD
|
1822 |
+
MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
|
1823 |
+
bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
|
1824 |
+
QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy
|
1825 |
+
Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl
|
1826 |
+
ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF
|
1827 |
+
EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl
|
1828 |
+
cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
|
1829 |
+
AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA
|
1830 |
+
XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj
|
1831 |
+
h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/
|
1832 |
+
ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk
|
1833 |
+
NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g
|
1834 |
+
D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331
|
1835 |
+
lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ
|
1836 |
+
0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj
|
1837 |
+
ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2
|
1838 |
+
EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI
|
1839 |
+
G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ
|
1840 |
+
BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh
|
1841 |
+
bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh
|
1842 |
+
bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC
|
1843 |
+
CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH
|
1844 |
+
AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1
|
1845 |
+
wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH
|
1846 |
+
3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU
|
1847 |
+
RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6
|
1848 |
+
M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1
|
1849 |
+
YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF
|
1850 |
+
9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK
|
1851 |
+
zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG
|
1852 |
+
nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg
|
1853 |
+
OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ
|
1854 |
+
-----END CERTIFICATE-----
|
1855 |
+
|
1856 |
+
Global Chambersign Root - 2008
|
1857 |
+
==============================
|
1858 |
+
-----BEGIN CERTIFICATE-----
|
1859 |
+
MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD
|
1860 |
+
MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
|
1861 |
+
bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
|
1862 |
+
QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx
|
1863 |
+
NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg
|
1864 |
+
Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ
|
1865 |
+
QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD
|
1866 |
+
aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf
|
1867 |
+
VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf
|
1868 |
+
XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0
|
1869 |
+
ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB
|
1870 |
+
/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA
|
1871 |
+
TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M
|
1872 |
+
H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe
|
1873 |
+
Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF
|
1874 |
+
HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh
|
1875 |
+
wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB
|
1876 |
+
AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT
|
1877 |
+
BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE
|
1878 |
+
BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm
|
1879 |
+
aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm
|
1880 |
+
aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp
|
1881 |
+
1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0
|
1882 |
+
dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG
|
1883 |
+
/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6
|
1884 |
+
ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s
|
1885 |
+
dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg
|
1886 |
+
9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH
|
1887 |
+
foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du
|
1888 |
+
qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr
|
1889 |
+
P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq
|
1890 |
+
c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z
|
1891 |
+
09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B
|
1892 |
+
-----END CERTIFICATE-----
|
1893 |
+
|
1894 |
+
Go Daddy Root Certificate Authority - G2
|
1895 |
+
========================================
|
1896 |
+
-----BEGIN CERTIFICATE-----
|
1897 |
+
MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
|
1898 |
+
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu
|
1899 |
+
MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5
|
1900 |
+
MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6
|
1901 |
+
b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G
|
1902 |
+
A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI
|
1903 |
+
hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq
|
1904 |
+
9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD
|
1905 |
+
+qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd
|
1906 |
+
fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl
|
1907 |
+
NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC
|
1908 |
+
MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9
|
1909 |
+
BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac
|
1910 |
+
vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r
|
1911 |
+
5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV
|
1912 |
+
N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO
|
1913 |
+
LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1
|
1914 |
+
-----END CERTIFICATE-----
|
1915 |
+
|
1916 |
+
Starfield Root Certificate Authority - G2
|
1917 |
+
=========================================
|
1918 |
+
-----BEGIN CERTIFICATE-----
|
1919 |
+
MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
|
1920 |
+
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
|
1921 |
+
b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0
|
1922 |
+
eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw
|
1923 |
+
DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg
|
1924 |
+
VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB
|
1925 |
+
dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv
|
1926 |
+
W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs
|
1927 |
+
bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk
|
1928 |
+
N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf
|
1929 |
+
ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU
|
1930 |
+
JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
1931 |
+
AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol
|
1932 |
+
TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx
|
1933 |
+
4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw
|
1934 |
+
F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K
|
1935 |
+
pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ
|
1936 |
+
c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0
|
1937 |
+
-----END CERTIFICATE-----
|
1938 |
+
|
1939 |
+
Starfield Services Root Certificate Authority - G2
|
1940 |
+
==================================================
|
1941 |
+
-----BEGIN CERTIFICATE-----
|
1942 |
+
MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
|
1943 |
+
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
|
1944 |
+
b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl
|
1945 |
+
IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV
|
1946 |
+
BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT
|
1947 |
+
dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg
|
1948 |
+
Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
1949 |
+
AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2
|
1950 |
+
h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa
|
1951 |
+
hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP
|
1952 |
+
LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB
|
1953 |
+
rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw
|
1954 |
+
AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG
|
1955 |
+
SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP
|
1956 |
+
E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy
|
1957 |
+
xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd
|
1958 |
+
iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza
|
1959 |
+
YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6
|
1960 |
+
-----END CERTIFICATE-----
|
1961 |
+
|
1962 |
+
AffirmTrust Commercial
|
1963 |
+
======================
|
1964 |
+
-----BEGIN CERTIFICATE-----
|
1965 |
+
MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS
|
1966 |
+
BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw
|
1967 |
+
MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
|
1968 |
+
bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF
|
1969 |
+
AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb
|
1970 |
+
DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV
|
1971 |
+
C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6
|
1972 |
+
BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww
|
1973 |
+
MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV
|
1974 |
+
HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
1975 |
+
AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG
|
1976 |
+
hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi
|
1977 |
+
qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv
|
1978 |
+
0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh
|
1979 |
+
sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8=
|
1980 |
+
-----END CERTIFICATE-----
|
1981 |
+
|
1982 |
+
AffirmTrust Networking
|
1983 |
+
======================
|
1984 |
+
-----BEGIN CERTIFICATE-----
|
1985 |
+
MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS
|
1986 |
+
BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw
|
1987 |
+
MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
|
1988 |
+
bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF
|
1989 |
+
AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE
|
1990 |
+
Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI
|
1991 |
+
dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24
|
1992 |
+
/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb
|
1993 |
+
h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV
|
1994 |
+
HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
1995 |
+
AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu
|
1996 |
+
UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6
|
1997 |
+
12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23
|
1998 |
+
WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9
|
1999 |
+
/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s=
|
2000 |
+
-----END CERTIFICATE-----
|
2001 |
+
|
2002 |
+
AffirmTrust Premium
|
2003 |
+
===================
|
2004 |
+
-----BEGIN CERTIFICATE-----
|
2005 |
+
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
|
2029 |
+
-----END CERTIFICATE-----
|
2030 |
+
|
2031 |
+
AffirmTrust Premium ECC
|
2032 |
+
=======================
|
2033 |
+
-----BEGIN CERTIFICATE-----
|
2034 |
+
MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV
|
2035 |
+
BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx
|
2036 |
+
MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U
|
2037 |
+
cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA
|
2038 |
+
IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ
|
2039 |
+
N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW
|
2040 |
+
BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK
|
2041 |
+
BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X
|
2042 |
+
57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM
|
2043 |
+
eQ==
|
2044 |
+
-----END CERTIFICATE-----
|
2045 |
+
|
2046 |
+
Certum Trusted Network CA
|
2047 |
+
=========================
|
2048 |
+
-----BEGIN CERTIFICATE-----
|
2049 |
+
MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK
|
2050 |
+
ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv
|
2051 |
+
biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy
|
2052 |
+
MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU
|
2053 |
+
ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
|
2054 |
+
MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
2055 |
+
AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC
|
2056 |
+
l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J
|
2057 |
+
J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4
|
2058 |
+
fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0
|
2059 |
+
cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB
|
2060 |
+
Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw
|
2061 |
+
DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj
|
2062 |
+
jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1
|
2063 |
+
mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj
|
2064 |
+
Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI
|
2065 |
+
03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw=
|
2066 |
+
-----END CERTIFICATE-----
|
2067 |
+
|
2068 |
+
Certinomis - Autorité Racine
|
2069 |
+
============================
|
2070 |
+
-----BEGIN CERTIFICATE-----
|
2071 |
+
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
|
2096 |
+
vgt2Fl43N+bYdJeimUV5
|
2097 |
+
-----END CERTIFICATE-----
|
2098 |
+
|
2099 |
+
TWCA Root Certification Authority
|
2100 |
+
=================================
|
2101 |
+
-----BEGIN CERTIFICATE-----
|
2102 |
+
MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ
|
2103 |
+
VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh
|
2104 |
+
dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG
|
2105 |
+
EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB
|
2106 |
+
IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
|
2107 |
+
AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx
|
2108 |
+
QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC
|
2109 |
+
oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP
|
2110 |
+
4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r
|
2111 |
+
y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB
|
2112 |
+
BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG
|
2113 |
+
9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC
|
2114 |
+
mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW
|
2115 |
+
QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY
|
2116 |
+
T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny
|
2117 |
+
Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw==
|
2118 |
+
-----END CERTIFICATE-----
|
2119 |
+
|
2120 |
+
Security Communication RootCA2
|
2121 |
+
==============================
|
2122 |
+
-----BEGIN CERTIFICATE-----
|
2123 |
+
MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
|
2124 |
+
U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh
|
2125 |
+
dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC
|
2126 |
+
SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy
|
2127 |
+
aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
2128 |
+
ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++
|
2129 |
+
+T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R
|
2130 |
+
3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV
|
2131 |
+
spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K
|
2132 |
+
EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8
|
2133 |
+
QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB
|
2134 |
+
CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj
|
2135 |
+
u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk
|
2136 |
+
3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q
|
2137 |
+
tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29
|
2138 |
+
mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03
|
2139 |
+
-----END CERTIFICATE-----
|
2140 |
+
|
2141 |
+
EC-ACC
|
2142 |
+
======
|
2143 |
+
-----BEGIN CERTIFICATE-----
|
2144 |
+
MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE
|
2145 |
+
BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w
|
2146 |
+
ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD
|
2147 |
+
VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE
|
2148 |
+
CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT
|
2149 |
+
BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7
|
2150 |
+
MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt
|
2151 |
+
SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl
|
2152 |
+
Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh
|
2153 |
+
cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND
|
2154 |
+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK
|
2155 |
+
w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT
|
2156 |
+
ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4
|
2157 |
+
HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a
|
2158 |
+
E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw
|
2159 |
+
0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E
|
2160 |
+
BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD
|
2161 |
+
VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0
|
2162 |
+
Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l
|
2163 |
+
dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ
|
2164 |
+
lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa
|
2165 |
+
Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe
|
2166 |
+
l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2
|
2167 |
+
E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D
|
2168 |
+
5EI=
|
2169 |
+
-----END CERTIFICATE-----
|
2170 |
+
|
2171 |
+
Hellenic Academic and Research Institutions RootCA 2011
|
2172 |
+
=======================================================
|
2173 |
+
-----BEGIN CERTIFICATE-----
|
2174 |
+
MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT
|
2175 |
+
O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y
|
2176 |
+
aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
|
2177 |
+
IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT
|
2178 |
+
AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
|
2179 |
+
IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo
|
2180 |
+
IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
2181 |
+
AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI
|
2182 |
+
1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa
|
2183 |
+
71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u
|
2184 |
+
8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH
|
2185 |
+
3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/
|
2186 |
+
MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8
|
2187 |
+
MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu
|
2188 |
+
b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt
|
2189 |
+
XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8
|
2190 |
+
TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD
|
2191 |
+
/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N
|
2192 |
+
7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4
|
2193 |
+
-----END CERTIFICATE-----
|
2194 |
+
|
2195 |
+
Actalis Authentication Root CA
|
2196 |
+
==============================
|
2197 |
+
-----BEGIN CERTIFICATE-----
|
2198 |
+
MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM
|
2199 |
+
BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE
|
2200 |
+
AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky
|
2201 |
+
MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz
|
2202 |
+
IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290
|
2203 |
+
IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ
|
2204 |
+
wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa
|
2205 |
+
by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6
|
2206 |
+
zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f
|
2207 |
+
YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2
|
2208 |
+
oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l
|
2209 |
+
EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7
|
2210 |
+
hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8
|
2211 |
+
EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5
|
2212 |
+
jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY
|
2213 |
+
iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt
|
2214 |
+
ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI
|
2215 |
+
WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0
|
2216 |
+
JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx
|
2217 |
+
K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+
|
2218 |
+
Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC
|
2219 |
+
4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo
|
2220 |
+
2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz
|
2221 |
+
lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem
|
2222 |
+
OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9
|
2223 |
+
vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg==
|
2224 |
+
-----END CERTIFICATE-----
|
2225 |
+
|
2226 |
+
Trustis FPS Root CA
|
2227 |
+
===================
|
2228 |
+
-----BEGIN CERTIFICATE-----
|
2229 |
+
MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG
|
2230 |
+
EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290
|
2231 |
+
IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV
|
2232 |
+
BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ
|
2233 |
+
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ
|
2234 |
+
RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk
|
2235 |
+
H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa
|
2236 |
+
cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt
|
2237 |
+
o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA
|
2238 |
+
AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd
|
2239 |
+
BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c
|
2240 |
+
GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC
|
2241 |
+
yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P
|
2242 |
+
8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV
|
2243 |
+
l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl
|
2244 |
+
iB6XzCGcKQENZetX2fNXlrtIzYE=
|
2245 |
+
-----END CERTIFICATE-----
|
2246 |
+
|
2247 |
+
StartCom Certification Authority
|
2248 |
+
================================
|
2249 |
+
-----BEGIN CERTIFICATE-----
|
2250 |
+
MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
|
2251 |
+
U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
|
2252 |
+
ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
|
2253 |
+
NjM3WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
|
2254 |
+
LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
|
2255 |
+
U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
|
2256 |
+
ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
|
2257 |
+
o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
|
2258 |
+
Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
|
2259 |
+
eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
|
2260 |
+
2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
|
2261 |
+
6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
|
2262 |
+
osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
|
2263 |
+
untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
|
2264 |
+
UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
|
2265 |
+
37uMdBNSSwIDAQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD
|
2266 |
+
VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFulF2mHMMo0aEPQ
|
2267 |
+
Qa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCCATgwLgYIKwYBBQUHAgEWImh0
|
2268 |
+
dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cu
|
2269 |
+
c3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENv
|
2270 |
+
bW1lcmNpYWwgKFN0YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0
|
2271 |
+
aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0aWZpY2F0
|
2272 |
+
aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t
|
2273 |
+
L3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBG
|
2274 |
+
cmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5
|
2275 |
+
fPGFf59Jb2vKXfuM/gTFwWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWm
|
2276 |
+
N3PH/UvSTa0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst0OcN
|
2277 |
+
Org+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNcpRJvkrKTlMeIFw6T
|
2278 |
+
tn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKlCcWw0bdT82AUuoVpaiF8H3VhFyAX
|
2279 |
+
e2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVFP0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA
|
2280 |
+
2MFrLH9ZXF2RsXAiV+uKa0hK1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBs
|
2281 |
+
HvUwyKMQ5bLmKhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE
|
2282 |
+
JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ8dCAWZvLMdib
|
2283 |
+
D4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnmfyWl8kgAwKQB2j8=
|
2284 |
+
-----END CERTIFICATE-----
|
2285 |
+
|
2286 |
+
StartCom Certification Authority G2
|
2287 |
+
===================================
|
2288 |
+
-----BEGIN CERTIFICATE-----
|
2289 |
+
MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
|
2290 |
+
U3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg
|
2291 |
+
RzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UE
|
2292 |
+
ChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3Jp
|
2293 |
+
dHkgRzIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8O
|
2294 |
+
o1XJJZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsDvfOpL9HG
|
2295 |
+
4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnooD/Uefyf3lLE3PbfHkffi
|
2296 |
+
Aez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/Q0kGi4xDuFby2X8hQxfqp0iVAXV16iul
|
2297 |
+
Q5XqFYSdCI0mblWbq9zSOdIxHWDirMxWRST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbs
|
2298 |
+
O+wmETRIjfaAKxojAuuKHDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8H
|
2299 |
+
vKTlXcxNnw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM0D4L
|
2300 |
+
nMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/iUUjXuG+v+E5+M5iS
|
2301 |
+
FGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9Ha90OrInwMEePnWjFqmveiJdnxMa
|
2302 |
+
z6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHgTuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8E
|
2303 |
+
BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJ
|
2304 |
+
KoZIhvcNAQELBQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K
|
2305 |
+
2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfXUfEpY9Z1zRbk
|
2306 |
+
J4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl6/2o1PXWT6RbdejF0mCy2wl+
|
2307 |
+
JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG
|
2308 |
+
/+gyRr61M3Z3qAFdlsHB1b6uJcDJHgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTc
|
2309 |
+
nIhT76IxW1hPkWLIwpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/Xld
|
2310 |
+
blhYXzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5lIxKVCCIc
|
2311 |
+
l85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoohdVddLHRDiBYmxOlsGOm
|
2312 |
+
7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulrso8uBtjRkcfGEvRM/TAXw8HaOFvjqerm
|
2313 |
+
obp573PYtlNXLfbQ4ddI
|
2314 |
+
-----END CERTIFICATE-----
|
2315 |
+
|
2316 |
+
Buypass Class 2 Root CA
|
2317 |
+
=======================
|
2318 |
+
-----BEGIN CERTIFICATE-----
|
2319 |
+
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
|
2343 |
+
rJgWVqA=
|
2344 |
+
-----END CERTIFICATE-----
|
2345 |
+
|
2346 |
+
Buypass Class 3 Root CA
|
2347 |
+
=======================
|
2348 |
+
-----BEGIN CERTIFICATE-----
|
2349 |
+
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
|
2373 |
+
Cp/HuZc=
|
2374 |
+
-----END CERTIFICATE-----
|
2375 |
+
|
2376 |
+
T-TeleSec GlobalRoot Class 3
|
2377 |
+
============================
|
2378 |
+
-----BEGIN CERTIFICATE-----
|
2379 |
+
MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM
|
2380 |
+
IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU
|
2381 |
+
cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx
|
2382 |
+
MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz
|
2383 |
+
dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD
|
2384 |
+
ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3
|
2385 |
+
DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK
|
2386 |
+
9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU
|
2387 |
+
NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF
|
2388 |
+
iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W
|
2389 |
+
0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA
|
2390 |
+
MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr
|
2391 |
+
AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb
|
2392 |
+
fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT
|
2393 |
+
ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h
|
2394 |
+
P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml
|
2395 |
+
e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw==
|
2396 |
+
-----END CERTIFICATE-----
|
2397 |
+
|
2398 |
+
EE Certification Centre Root CA
|
2399 |
+
===============================
|
2400 |
+
-----BEGIN CERTIFICATE-----
|
2401 |
+
MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
|
2402 |
+
EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy
|
2403 |
+
dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw
|
2404 |
+
MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB
|
2405 |
+
UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy
|
2406 |
+
ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB
|
2407 |
+
DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM
|
2408 |
+
TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2
|
2409 |
+
rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw
|
2410 |
+
93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN
|
2411 |
+
P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T
|
2412 |
+
AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ
|
2413 |
+
MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF
|
2414 |
+
BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj
|
2415 |
+
xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM
|
2416 |
+
lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u
|
2417 |
+
uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU
|
2418 |
+
3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM
|
2419 |
+
dcGWxZ0=
|
2420 |
+
-----END CERTIFICATE-----
|
2421 |
+
|
2422 |
+
TURKTRUST Certificate Services Provider Root 2007
|
2423 |
+
=================================================
|
2424 |
+
-----BEGIN CERTIFICATE-----
|
2425 |
+
MIIEPTCCAyWgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvzE/MD0GA1UEAww2VMOcUktUUlVTVCBF
|
2426 |
+
bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP
|
2427 |
+
MA0GA1UEBwwGQW5rYXJhMV4wXAYDVQQKDFVUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg
|
2428 |
+
QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgQXJhbMSxayAyMDA3MB4X
|
2429 |
+
DTA3MTIyNTE4MzcxOVoXDTE3MTIyMjE4MzcxOVowgb8xPzA9BgNVBAMMNlTDnFJLVFJVU1QgRWxl
|
2430 |
+
a3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTELMAkGA1UEBhMCVFIxDzAN
|
2431 |
+
BgNVBAcMBkFua2FyYTFeMFwGA1UECgxVVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp
|
2432 |
+
bGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4gKGMpIEFyYWzEsWsgMjAwNzCCASIw
|
2433 |
+
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKu3PgqMyKVYFeaK7yc9SrToJdPNM8Ig3BnuiD9N
|
2434 |
+
YvDdE3ePYakqtdTyuTFYKTsvP2qcb3N2Je40IIDu6rfwxArNK4aUyeNgsURSsloptJGXg9i3phQv
|
2435 |
+
KUmi8wUG+7RP2qFsmmaf8EMJyupyj+sA1zU511YXRxcw9L6/P8JorzZAwan0qafoEGsIiveGHtya
|
2436 |
+
KhUG9qPw9ODHFNRRf8+0222vR5YXm3dx2KdxnSQM9pQ/hTEST7ruToK4uT6PIzdezKKqdfcYbwnT
|
2437 |
+
rqdUKDT74eA7YH2gvnmJhsifLfkKS8RQouf9eRbHegsYz85M733WB2+Y8a+xwXrXgTW4qhe04MsC
|
2438 |
+
AwEAAaNCMEAwHQYDVR0OBBYEFCnFkKslrxHkYb+j/4hhkeYO/pyBMA4GA1UdDwEB/wQEAwIBBjAP
|
2439 |
+
BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAQDdr4Ouwo0RSVgrESLFF6QSU2TJ/s
|
2440 |
+
Px+EnWVUXKgWAkD6bho3hO9ynYYKVZ1WKKxmLNA6VpM0ByWtCLCPyA8JWcqdmBzlVPi5RX9ql2+I
|
2441 |
+
aE1KBiY3iAIOtsbWcpnOa3faYjGkVh+uX4132l32iPwa2Z61gfAyuOOI0JzzaqC5mxRZNTZPz/OO
|
2442 |
+
Xl0XrRWV2N2y1RVuAE6zS89mlOTgzbUF2mNXi+WzqtvALhyQRNsaXRik7r4EW5nVcV9VZWRi1aKb
|
2443 |
+
BFmGyGJ353yCRWo9F7/snXUMrqNvWtMvmDb08PUZqxFdyKbjKlhqQgnDvZImZjINXQhVdP+MmNAK
|
2444 |
+
poRq0Tl9
|
2445 |
+
-----END CERTIFICATE-----
|
2446 |
+
|
2447 |
+
D-TRUST Root Class 3 CA 2 2009
|
2448 |
+
==============================
|
2449 |
+
-----BEGIN CERTIFICATE-----
|
2450 |
+
MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQK
|
2451 |
+
DAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTAe
|
2452 |
+
Fw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NThaME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxE
|
2453 |
+
LVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIw
|
2454 |
+
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOAD
|
2455 |
+
ER03UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42tSHKXzlA
|
2456 |
+
BF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9RySPocq60vFYJfxLLHLGv
|
2457 |
+
KZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsMlFqVlNpQmvH/pStmMaTJOKDfHR+4CS7z
|
2458 |
+
p+hnUquVH+BGPtikw8paxTGA6Eian5Rp/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUC
|
2459 |
+
AwEAAaOCARowggEWMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ
|
2460 |
+
4PGEMA4GA1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVjdG9y
|
2461 |
+
eS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUyMENBJTIwMiUyMDIw
|
2462 |
+
MDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwQ6BBoD+G
|
2463 |
+
PWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAw
|
2464 |
+
OS5jcmwwDQYJKoZIhvcNAQELBQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm
|
2465 |
+
2H6NMLVwMeniacfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0
|
2466 |
+
o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4KzCUqNQT4YJEV
|
2467 |
+
dT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8PIWmawomDeCTmGCufsYkl4ph
|
2468 |
+
X5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3YJohw1+qRzT65ysCQblrGXnRl11z+o+I=
|
2469 |
+
-----END CERTIFICATE-----
|
2470 |
+
|
2471 |
+
D-TRUST Root Class 3 CA 2 EV 2009
|
2472 |
+
=================================
|
2473 |
+
-----BEGIN CERTIFICATE-----
|
2474 |
+
MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK
|
2475 |
+
DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw
|
2476 |
+
OTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUwNDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK
|
2477 |
+
DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw
|
2478 |
+
OTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfS
|
2479 |
+
egpnljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM03TP1YtHh
|
2480 |
+
zRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6ZqQTMFexgaDbtCHu39b+T
|
2481 |
+
7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lRp75mpoo6Kr3HGrHhFPC+Oh25z1uxav60
|
2482 |
+
sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure35
|
2483 |
+
11H3a6UCAwEAAaOCASQwggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyv
|
2484 |
+
cop9NteaHNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFwOi8v
|
2485 |
+
ZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xhc3MlMjAzJTIwQ0El
|
2486 |
+
MjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRp
|
2487 |
+
b25saXN0MEagRKBChkBodHRwOi8vd3d3LmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xh
|
2488 |
+
c3NfM19jYV8yX2V2XzIwMDkuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+
|
2489 |
+
PPoeUSbrh/Yp3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05
|
2490 |
+
nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNFCSuGdXzfX2lX
|
2491 |
+
ANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7naxpeG0ILD5EJt/rDiZE4OJudA
|
2492 |
+
NCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqXKVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVv
|
2493 |
+
w9y4AyHqnxbxLFS1
|
2494 |
+
-----END CERTIFICATE-----
|
2495 |
+
|
2496 |
+
PSCProcert
|
2497 |
+
==========
|
2498 |
+
-----BEGIN CERTIFICATE-----
|
2499 |
+
MIIJhjCCB26gAwIBAgIBCzANBgkqhkiG9w0BAQsFADCCAR4xPjA8BgNVBAMTNUF1dG9yaWRhZCBk
|
2500 |
+
ZSBDZXJ0aWZpY2FjaW9uIFJhaXogZGVsIEVzdGFkbyBWZW5lem9sYW5vMQswCQYDVQQGEwJWRTEQ
|
2501 |
+
MA4GA1UEBxMHQ2FyYWNhczEZMBcGA1UECBMQRGlzdHJpdG8gQ2FwaXRhbDE2MDQGA1UEChMtU2lz
|
2502 |
+
dGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMUMwQQYDVQQLEzpTdXBl
|
2503 |
+
cmludGVuZGVuY2lhIGRlIFNlcnZpY2lvcyBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMSUw
|
2504 |
+
IwYJKoZIhvcNAQkBFhZhY3JhaXpAc3VzY2VydGUuZ29iLnZlMB4XDTEwMTIyODE2NTEwMFoXDTIw
|
2505 |
+
MTIyNTIzNTk1OVowgdExJjAkBgkqhkiG9w0BCQEWF2NvbnRhY3RvQHByb2NlcnQubmV0LnZlMQ8w
|
2506 |
+
DQYDVQQHEwZDaGFjYW8xEDAOBgNVBAgTB01pcmFuZGExKjAoBgNVBAsTIVByb3ZlZWRvciBkZSBD
|
2507 |
+
ZXJ0aWZpY2Fkb3MgUFJPQ0VSVDE2MDQGA1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZp
|
2508 |
+
Y2FjaW9uIEVsZWN0cm9uaWNhMQswCQYDVQQGEwJWRTETMBEGA1UEAxMKUFNDUHJvY2VydDCCAiIw
|
2509 |
+
DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANW39KOUM6FGqVVhSQ2oh3NekS1wwQYalNo97BVC
|
2510 |
+
wfWMrmoX8Yqt/ICV6oNEolt6Vc5Pp6XVurgfoCfAUFM+jbnADrgV3NZs+J74BCXfgI8Qhd19L3uA
|
2511 |
+
3VcAZCP4bsm+lU/hdezgfl6VzbHvvnpC2Mks0+saGiKLt38GieU89RLAu9MLmV+QfI4tL3czkkoh
|
2512 |
+
RqipCKzx9hEC2ZUWno0vluYC3XXCFCpa1sl9JcLB/KpnheLsvtF8PPqv1W7/U0HU9TI4seJfxPmO
|
2513 |
+
EO8GqQKJ/+MMbpfg353bIdD0PghpbNjU5Db4g7ayNo+c7zo3Fn2/omnXO1ty0K+qP1xmk6wKImG2
|
2514 |
+
0qCZyFSTXai20b1dCl53lKItwIKOvMoDKjSuc/HUtQy9vmebVOvh+qBa7Dh+PsHMosdEMXXqP+UH
|
2515 |
+
0quhJZb25uSgXTcYOWEAM11G1ADEtMo88aKjPvM6/2kwLkDd9p+cJsmWN63nOaK/6mnbVSKVUyqU
|
2516 |
+
td+tFjiBdWbjxywbk5yqjKPK2Ww8F22c3HxT4CAnQzb5EuE8XL1mv6JpIzi4mWCZDlZTOpx+FIyw
|
2517 |
+
Bm/xhnaQr/2v/pDGj59/i5IjnOcVdo/Vi5QTcmn7K2FjiO/mpF7moxdqWEfLcU8UC17IAggmosvp
|
2518 |
+
r2uKGcfLFFb14dq12fy/czja+eevbqQ34gcnAgMBAAGjggMXMIIDEzASBgNVHRMBAf8ECDAGAQH/
|
2519 |
+
AgEBMDcGA1UdEgQwMC6CD3N1c2NlcnRlLmdvYi52ZaAbBgVghl4CAqASDBBSSUYtRy0yMDAwNDAz
|
2520 |
+
Ni0wMB0GA1UdDgQWBBRBDxk4qpl/Qguk1yeYVKIXTC1RVDCCAVAGA1UdIwSCAUcwggFDgBStuyId
|
2521 |
+
xuDSAaj9dlBSk+2YwU2u06GCASakggEiMIIBHjE+MDwGA1UEAxM1QXV0b3JpZGFkIGRlIENlcnRp
|
2522 |
+
ZmljYWNpb24gUmFpeiBkZWwgRXN0YWRvIFZlbmV6b2xhbm8xCzAJBgNVBAYTAlZFMRAwDgYDVQQH
|
2523 |
+
EwdDYXJhY2FzMRkwFwYDVQQIExBEaXN0cml0byBDYXBpdGFsMTYwNAYDVQQKEy1TaXN0ZW1hIE5h
|
2524 |
+
Y2lvbmFsIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExQzBBBgNVBAsTOlN1cGVyaW50ZW5k
|
2525 |
+
ZW5jaWEgZGUgU2VydmljaW9zIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExJTAjBgkqhkiG
|
2526 |
+
9w0BCQEWFmFjcmFpekBzdXNjZXJ0ZS5nb2IudmWCAQowDgYDVR0PAQH/BAQDAgEGME0GA1UdEQRG
|
2527 |
+
MESCDnByb2NlcnQubmV0LnZloBUGBWCGXgIBoAwMClBTQy0wMDAwMDKgGwYFYIZeAgKgEgwQUklG
|
2528 |
+
LUotMzE2MzUzNzMtNzB2BgNVHR8EbzBtMEagRKBChkBodHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52
|
2529 |
+
ZS9sY3IvQ0VSVElGSUNBRE8tUkFJWi1TSEEzODRDUkxERVIuY3JsMCOgIaAfhh1sZGFwOi8vYWNy
|
2530 |
+
YWl6LnN1c2NlcnRlLmdvYi52ZTA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9v
|
2531 |
+
Y3NwLnN1c2NlcnRlLmdvYi52ZTBBBgNVHSAEOjA4MDYGBmCGXgMBAjAsMCoGCCsGAQUFBwIBFh5o
|
2532 |
+
dHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52ZS9kcGMwDQYJKoZIhvcNAQELBQADggIBACtZ6yKZu4Sq
|
2533 |
+
T96QxtGGcSOeSwORR3C7wJJg7ODU523G0+1ng3dS1fLld6c2suNUvtm7CpsR72H0xpkzmfWvADmN
|
2534 |
+
g7+mvTV+LFwxNG9s2/NkAZiqlCxB3RWGymspThbASfzXg0gTB1GEMVKIu4YXx2sviiCtxQuPcD4q
|
2535 |
+
uxtxj7mkoP3YldmvWb8lK5jpY5MvYB7Eqvh39YtsL+1+LrVPQA3uvFd359m21D+VJzog1eWuq2w1
|
2536 |
+
n8GhHVnchIHuTQfiSLaeS5UtQbHh6N5+LwUeaO6/u5BlOsju6rEYNxxik6SgMexxbJHmpHmJWhSn
|
2537 |
+
FFAFTKQAVzAswbVhltw+HoSvOULP5dAssSS830DD7X9jSr3hTxJkhpXzsOfIt+FTvZLm8wyWuevo
|
2538 |
+
5pLtp4EJFAv8lXrPj9Y0TzYS3F7RNHXGRoAvlQSMx4bEqCaJqD8Zm4G7UaRKhqsLEQ+xrmNTbSjq
|
2539 |
+
3TNWOByyrYDT13K9mmyZY+gAu0F2BbdbmRiKw7gSXFbPVgx96OLP7bx0R/vu0xdOIk9W/1DzLuY5
|
2540 |
+
poLWccret9W6aAjtmcz9opLLabid+Qqkpj5PkygqYWwHJgD/ll9ohri4zspV4KuxPX+Y1zMOWj3Y
|
2541 |
+
eMLEYC/HYvBhkdI4sPaeVdtAgAUSM84dkpvRabP/v/GSCmE1P93+hvS84Bpxs2Km
|
2542 |
+
-----END CERTIFICATE-----
|
2543 |
+
|
2544 |
+
China Internet Network Information Center EV Certificates Root
|
2545 |
+
==============================================================
|
2546 |
+
-----BEGIN CERTIFICATE-----
|
2547 |
+
MIID9zCCAt+gAwIBAgIESJ8AATANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCQ04xMjAwBgNV
|
2548 |
+
BAoMKUNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyMUcwRQYDVQQDDD5D
|
2549 |
+
aGluYSBJbnRlcm5ldCBOZXR3b3JrIEluZm9ybWF0aW9uIENlbnRlciBFViBDZXJ0aWZpY2F0ZXMg
|
2550 |
+
Um9vdDAeFw0xMDA4MzEwNzExMjVaFw0zMDA4MzEwNzExMjVaMIGKMQswCQYDVQQGEwJDTjEyMDAG
|
2551 |
+
A1UECgwpQ2hpbmEgSW50ZXJuZXQgTmV0d29yayBJbmZvcm1hdGlvbiBDZW50ZXIxRzBFBgNVBAMM
|
2552 |
+
PkNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyIEVWIENlcnRpZmljYXRl
|
2553 |
+
cyBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm35z7r07eKpkQ0H1UN+U8i6y
|
2554 |
+
jUqORlTSIRLIOTJCBumD1Z9S7eVnAztUwYyZmczpwA//DdmEEbK40ctb3B75aDFk4Zv6dOtouSCV
|
2555 |
+
98YPjUesWgbdYavi7NifFy2cyjw1l1VxzUOFsUcW9SxTgHbP0wBkvUCZ3czY28Sf1hNfQYOL+Q2H
|
2556 |
+
klY0bBoQCxfVWhyXWIQ8hBouXJE0bhlffxdpxWXvayHG1VA6v2G5BY3vbzQ6sm8UY78WO5upKv23
|
2557 |
+
KzhmBsUs4qpnHkWnjQRmQvaPK++IIGmPMowUc9orhpFjIpryp9vOiYurXccUwVswah+xt54ugQEC
|
2558 |
+
7c+WXmPbqOY4twIDAQABo2MwYTAfBgNVHSMEGDAWgBR8cks5x8DbYqVPm6oYNJKiyoOCWTAPBgNV
|
2559 |
+
HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUfHJLOcfA22KlT5uqGDSSosqD
|
2560 |
+
glkwDQYJKoZIhvcNAQEFBQADggEBACrDx0M3j92tpLIM7twUbY8opJhJywyA6vPtI2Z1fcXTIWd5
|
2561 |
+
0XPFtQO3WKwMVC/GVhMPMdoG52U7HW8228gd+f2ABsqjPWYWqJ1MFn3AlUa1UeTiH9fqBk1jjZaM
|
2562 |
+
7+czV0I664zBechNdn3e9rG3geCg+aF4RhcaVpjwTj2rHO3sOdwHSPdj/gauwqRcalsyiMXHM4Ws
|
2563 |
+
ZkJHwlgkmeHlPuV1LI5D1l08eB6olYIpUNHRFrrvwb562bTYzB5MRuF3sTGrvSrIzo9uoV1/A3U0
|
2564 |
+
5K2JRVRevq4opbs/eHnrc7MKDf2+yfdWrPa37S+bISnHOLaVxATywy39FCqQmbkHzJ8=
|
2565 |
+
-----END CERTIFICATE-----
|
2566 |
+
|
2567 |
+
Swisscom Root CA 2
|
2568 |
+
==================
|
2569 |
+
-----BEGIN CERTIFICATE-----
|
2570 |
+
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
|
2596 |
+
5OfNeOI5wSsSnqaeG8XmDtkx2Q==
|
2597 |
+
-----END CERTIFICATE-----
|
2598 |
+
|
2599 |
+
Swisscom Root EV CA 2
|
2600 |
+
=====================
|
2601 |
+
-----BEGIN CERTIFICATE-----
|
2602 |
+
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
|
2628 |
+
l8PVP3wbI+2ksx0WckNLIOFZfsLorSa/ovc=
|
2629 |
+
-----END CERTIFICATE-----
|
2630 |
+
|
2631 |
+
CA Disig Root R1
|
2632 |
+
================
|
2633 |
+
-----BEGIN CERTIFICATE-----
|
2634 |
+
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
|
2658 |
+
a7+h89n07eLw4+1knj0vllJPgFOL
|
2659 |
+
-----END CERTIFICATE-----
|
2660 |
+
|
2661 |
+
CA Disig Root R2
|
2662 |
+
================
|
2663 |
+
-----BEGIN CERTIFICATE-----
|
2664 |
+
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
|
2688 |
+
7+ZtsH8tZ/3zbBt1RqPlShfppNcL
|
2689 |
+
-----END CERTIFICATE-----
|
2690 |
+
|
2691 |
+
ACCVRAIZ1
|
2692 |
+
=========
|
2693 |
+
-----BEGIN CERTIFICATE-----
|
2694 |
+
MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UEAwwJQUNDVlJB
|
2695 |
+
SVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQswCQYDVQQGEwJFUzAeFw0xMTA1
|
2696 |
+
MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQBgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwH
|
2697 |
+
UEtJQUNDVjENMAsGA1UECgwEQUNDVjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
|
2698 |
+
DwAwggIKAoICAQCbqau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gM
|
2699 |
+
jmoYHtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWoG2ioPej0
|
2700 |
+
RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpAlHPrzg5XPAOBOp0KoVdD
|
2701 |
+
aaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhrIA8wKFSVf+DuzgpmndFALW4ir50awQUZ
|
2702 |
+
0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDG
|
2703 |
+
WuzndN9wrqODJerWx5eHk6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs7
|
2704 |
+
8yM2x/474KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMOm3WR
|
2705 |
+
5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpacXpkatcnYGMN285J
|
2706 |
+
9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPluUsXQA+xtrn13k/c4LOsOxFwYIRK
|
2707 |
+
Q26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYIKwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRw
|
2708 |
+
Oi8vd3d3LmFjY3YuZXMvZmlsZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEu
|
2709 |
+
Y3J0MB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2
|
2710 |
+
VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeTVfZW6oHlNsyM
|
2711 |
+
Hj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIGCCsGAQUFBwICMIIBFB6CARAA
|
2712 |
+
QQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUAcgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBh
|
2713 |
+
AO0AegAgAGQAZQAgAGwAYQAgAEEAQwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUA
|
2714 |
+
YwBuAG8AbABvAGcA7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBj
|
2715 |
+
AHQAcgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAAQwBQAFMA
|
2716 |
+
IABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUAczAwBggrBgEFBQcCARYk
|
2717 |
+
aHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2MuaHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0
|
2718 |
+
dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRtaW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2
|
2719 |
+
MV9kZXIuY3JsMA4GA1UdDwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZI
|
2720 |
+
hvcNAQEFBQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdpD70E
|
2721 |
+
R9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gUJyCpZET/LtZ1qmxN
|
2722 |
+
YEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+mAM/EKXMRNt6GGT6d7hmKG9Ww7Y49
|
2723 |
+
nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepDvV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJ
|
2724 |
+
TS+xJlsndQAJxGJ3KQhfnlmstn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3
|
2725 |
+
sCPdK6jT2iWH7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h
|
2726 |
+
I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szAh1xA2syVP1Xg
|
2727 |
+
Nce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xFd3+YJ5oyXSrjhO7FmGYvliAd
|
2728 |
+
3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2HpPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3p
|
2729 |
+
EfbRD0tVNEYqi4Y7
|
2730 |
+
-----END CERTIFICATE-----
|
2731 |
+
|
2732 |
+
TWCA Global Root CA
|
2733 |
+
===================
|
2734 |
+
-----BEGIN CERTIFICATE-----
|
2735 |
+
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
|
2759 |
+
-----END CERTIFICATE-----
|
2760 |
+
|
2761 |
+
TeliaSonera Root CA v1
|
2762 |
+
======================
|
2763 |
+
-----BEGIN CERTIFICATE-----
|
2764 |
+
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
|
2787 |
+
WWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY=
|
2788 |
+
-----END CERTIFICATE-----
|
2789 |
+
|
2790 |
+
E-Tugra Certification Authority
|
2791 |
+
===============================
|
2792 |
+
-----BEGIN CERTIFICATE-----
|
2793 |
+
MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNVBAYTAlRSMQ8w
|
2794 |
+
DQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamls
|
2795 |
+
ZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN
|
2796 |
+
ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMw
|
2797 |
+
NTEyMDk0OFoXDTIzMDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmEx
|
2798 |
+
QDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxl
|
2799 |
+
cmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQD
|
2800 |
+
DB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
|
2801 |
+
MIICCgKCAgEA4vU/kwVRHoViVF56C/UYB4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vd
|
2802 |
+
hQd2h8y/L5VMzH2nPbxHD5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5K
|
2803 |
+
CKpbknSFQ9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEoq1+g
|
2804 |
+
ElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3Dk14opz8n8Y4e0ypQ
|
2805 |
+
BaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcHfC425lAcP9tDJMW/hkd5s3kc91r0
|
2806 |
+
E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsutdEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gz
|
2807 |
+
rt48Ue7LE3wBf4QOXVGUnhMMti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAq
|
2808 |
+
jqFGOjGY5RH8zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn
|
2809 |
+
rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUXU8u3Zg5mTPj5
|
2810 |
+
dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6Jyr+zE7S6E5UMA8GA1UdEwEB
|
2811 |
+
/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEG
|
2812 |
+
MA0GCSqGSIb3DQEBCwUAA4ICAQAFNzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAK
|
2813 |
+
kEh47U6YA5n+KGCRHTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jO
|
2814 |
+
XKqYGwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c77NCR807
|
2815 |
+
VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3+GbHeJAAFS6LrVE1Uweo
|
2816 |
+
a2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WKvJUawSg5TB9D0pH0clmKuVb8P7Sd2nCc
|
2817 |
+
dlqMQ1DujjByTd//SffGqWfZbawCEeI6FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEV
|
2818 |
+
KV0jq9BgoRJP3vQXzTLlyb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gT
|
2819 |
+
Dx4JnW2PAJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpDy4Q0
|
2820 |
+
8ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8dNL/+I5c30jn6PQ0G
|
2821 |
+
C7TbO6Orb1wdtn7os4I07QZcJA==
|
2822 |
+
-----END CERTIFICATE-----
|
2823 |
+
|
2824 |
+
T-TeleSec GlobalRoot Class 2
|
2825 |
+
============================
|
2826 |
+
-----BEGIN CERTIFICATE-----
|
2827 |
+
MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM
|
2828 |
+
IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU
|
2829 |
+
cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgx
|
2830 |
+
MDAxMTA0MDE0WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz
|
2831 |
+
dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD
|
2832 |
+
ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0GCSqGSIb3
|
2833 |
+
DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUdAqSzm1nzHoqvNK38DcLZ
|
2834 |
+
SBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiCFoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/F
|
2835 |
+
vudocP05l03Sx5iRUKrERLMjfTlH6VJi1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx970
|
2836 |
+
2cu+fjOlbpSD8DT6IavqjnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGV
|
2837 |
+
WOHAD3bZwI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGjQjBA
|
2838 |
+
MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/WSA2AHmgoCJrjNXy
|
2839 |
+
YdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhyNsZt+U2e+iKo4YFWz827n+qrkRk4
|
2840 |
+
r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPACuvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNf
|
2841 |
+
vNoBYimipidx5joifsFvHZVwIEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR
|
2842 |
+
3p1m0IvVVGb6g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN
|
2843 |
+
9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlPBSeOE6Fuwg==
|
2844 |
+
-----END CERTIFICATE-----
|
2845 |
+
|
2846 |
+
Atos TrustedRoot 2011
|
2847 |
+
=====================
|
2848 |
+
-----BEGIN CERTIFICATE-----
|
2849 |
+
MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UEAwwVQXRvcyBU
|
2850 |
+
cnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0xMTA3MDcxNDU4
|
2851 |
+
MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMMFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsG
|
2852 |
+
A1UECgwEQXRvczELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV
|
2853 |
+
hTuXbyo7LjvPpvMpNb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr
|
2854 |
+
54rMVD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+SZFhyBH+
|
2855 |
+
DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ4J7sVaE3IqKHBAUsR320
|
2856 |
+
HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0Lcp2AMBYHlT8oDv3FdU9T1nSatCQujgKR
|
2857 |
+
z3bFmx5VdJx4IbHwLfELn8LVlhgf8FQieowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7R
|
2858 |
+
l+lwrrw7GWzbITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZ
|
2859 |
+
bNshMBgGA1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB
|
2860 |
+
CwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8jvZfza1zv7v1Apt+h
|
2861 |
+
k6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh
|
2862 |
+
TZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9
|
2863 |
+
61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G
|
2864 |
+
3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed
|
2865 |
+
-----END CERTIFICATE-----
|
2866 |
+
|
2867 |
+
QuoVadis Root CA 1 G3
|
2868 |
+
=====================
|
2869 |
+
-----BEGIN CERTIFICATE-----
|
2870 |
+
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
|
2894 |
+
hMJKzRwuJIczYOXD
|
2895 |
+
-----END CERTIFICATE-----
|
2896 |
+
|
2897 |
+
QuoVadis Root CA 2 G3
|
2898 |
+
=====================
|
2899 |
+
-----BEGIN CERTIFICATE-----
|
2900 |
+
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
|
2924 |
+
O3jtZsSOeWmD3n+M
|
2925 |
+
-----END CERTIFICATE-----
|
2926 |
+
|
2927 |
+
QuoVadis Root CA 3 G3
|
2928 |
+
=====================
|
2929 |
+
-----BEGIN CERTIFICATE-----
|
2930 |
+
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
|
2954 |
+
PpxxVJkES/1Y+Zj0
|
2955 |
+
-----END CERTIFICATE-----
|
2956 |
+
|
2957 |
+
DigiCert Assured ID Root G2
|
2958 |
+
===========================
|
2959 |
+
-----BEGIN CERTIFICATE-----
|
2960 |
+
MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQG
|
2961 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
|
2962 |
+
IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgw
|
2963 |
+
MTE1MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
|
2964 |
+
ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIw
|
2965 |
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSAn61UQbVH
|
2966 |
+
35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4HteccbiJVMWWXvdMX0h5i89vq
|
2967 |
+
bFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9HpEgjAALAcKxHad3A2m67OeYfcgnDmCXRw
|
2968 |
+
VWmvo2ifv922ebPynXApVfSr/5Vh88lAbx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OP
|
2969 |
+
YLfykqGxvYmJHzDNw6YuYjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+Rn
|
2970 |
+
lTGNAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTO
|
2971 |
+
w0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPIQW5pJ6d1Ee88hjZv
|
2972 |
+
0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I0jJmwYrA8y8678Dj1JGG0VDjA9tz
|
2973 |
+
d29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4GnilmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAW
|
2974 |
+
hsI6yLETcDbYz+70CjTVW0z9B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0M
|
2975 |
+
jomZmWzwPDCvON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo
|
2976 |
+
IhNzbM8m9Yop5w==
|
2977 |
+
-----END CERTIFICATE-----
|
2978 |
+
|
2979 |
+
DigiCert Assured ID Root G3
|
2980 |
+
===========================
|
2981 |
+
-----BEGIN CERTIFICATE-----
|
2982 |
+
MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV
|
2983 |
+
UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYD
|
2984 |
+
VQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1
|
2985 |
+
MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
2986 |
+
d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQ
|
2987 |
+
BgcqhkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJfZn4f5dwb
|
2988 |
+
RXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17QRSAPWXYQ1qAk8C3eNvJs
|
2989 |
+
KTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgF
|
2990 |
+
UaFNN6KDec6NHSrkhDAKBggqhkjOPQQDAwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5Fy
|
2991 |
+
YZ5eEJJZVrmDxxDnOOlYJjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy
|
2992 |
+
1vUhZscv6pZjamVFkpUBtA==
|
2993 |
+
-----END CERTIFICATE-----
|
2994 |
+
|
2995 |
+
DigiCert Global Root G2
|
2996 |
+
=======================
|
2997 |
+
-----BEGIN CERTIFICATE-----
|
2998 |
+
MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQG
|
2999 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
|
3000 |
+
HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUx
|
3001 |
+
MjAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
|
3002 |
+
dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkq
|
3003 |
+
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI2/Ou8jqJ
|
3004 |
+
kTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx1x7e/dfgy5SDN67sH0NO
|
3005 |
+
3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQq2EGnI/yuum06ZIya7XzV+hdG82MHauV
|
3006 |
+
BJVJ8zUtluNJbd134/tJS7SsVQepj5WztCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyM
|
3007 |
+
UNGPHgm+F6HmIcr9g+UQvIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQAB
|
3008 |
+
o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV5uNu
|
3009 |
+
5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY1Yl9PMWLSn/pvtsr
|
3010 |
+
F9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4NeF22d+mQrvHRAiGfzZ0JFrabA0U
|
3011 |
+
WTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NGFdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBH
|
3012 |
+
QRFXGU7Aj64GxJUTFy8bJZ918rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/
|
3013 |
+
iyK5S9kJRaTepLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl
|
3014 |
+
MrY=
|
3015 |
+
-----END CERTIFICATE-----
|
3016 |
+
|
3017 |
+
DigiCert Global Root G3
|
3018 |
+
=======================
|
3019 |
+
-----BEGIN CERTIFICATE-----
|
3020 |
+
MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQswCQYDVQQGEwJV
|
3021 |
+
UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYD
|
3022 |
+
VQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAw
|
3023 |
+
MDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k
|
3024 |
+
aWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0C
|
3025 |
+
AQYFK4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FGfp4tn+6O
|
3026 |
+
YwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPOZ9wj/wMco+I+o0IwQDAP
|
3027 |
+
BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNp
|
3028 |
+
Yim8S8YwCgYIKoZIzj0EAwMDaAAwZQIxAK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y
|
3029 |
+
3maTD/HMsQmP3Wyr+mt/oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34
|
3030 |
+
VOKa5Vt8sycX
|
3031 |
+
-----END CERTIFICATE-----
|
3032 |
+
|
3033 |
+
DigiCert Trusted Root G4
|
3034 |
+
========================
|
3035 |
+
-----BEGIN CERTIFICATE-----
|
3036 |
+
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
|
3061 |
+
82Z+
|
3062 |
+
-----END CERTIFICATE-----
|
3063 |
+
|
3064 |
+
WoSign
|
3065 |
+
======
|
3066 |
+
-----BEGIN CERTIFICATE-----
|
3067 |
+
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
|
3092 |
+
-----END CERTIFICATE-----
|
3093 |
+
|
3094 |
+
WoSign China
|
3095 |
+
============
|
3096 |
+
-----BEGIN CERTIFICATE-----
|
3097 |
+
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
|
3121 |
+
kI26oQ==
|
3122 |
+
-----END CERTIFICATE-----
|
3123 |
+
|
3124 |
+
COMODO RSA Certification Authority
|
3125 |
+
==================================
|
3126 |
+
-----BEGIN CERTIFICATE-----
|
3127 |
+
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
|
3153 |
+
LaZRfyHBNVOFBkpdn627G190
|
3154 |
+
-----END CERTIFICATE-----
|
3155 |
+
|
3156 |
+
USERTrust RSA Certification Authority
|
3157 |
+
=====================================
|
3158 |
+
-----BEGIN CERTIFICATE-----
|
3159 |
+
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
|
3185 |
+
Q+6IHdfGjjxDah2nGN59PRbxYvnKkKj9
|
3186 |
+
-----END CERTIFICATE-----
|
3187 |
+
|
3188 |
+
USERTrust ECC Certification Authority
|
3189 |
+
=====================================
|
3190 |
+
-----BEGIN CERTIFICATE-----
|
3191 |
+
MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDELMAkGA1UEBhMC
|
3192 |
+
VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU
|
3193 |
+
aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv
|
3194 |
+
biBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMC
|
3195 |
+
VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU
|
3196 |
+
aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv
|
3197 |
+
biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqfloI+d61SRvU8Za2EurxtW2
|
3198 |
+
0eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinngo4N+LZfQYcTxmdwlkWOrfzCjtHDix6Ez
|
3199 |
+
nPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0GA1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNV
|
3200 |
+
HQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBB
|
3201 |
+
HU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu
|
3202 |
+
9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg=
|
3203 |
+
-----END CERTIFICATE-----
|
3204 |
+
|
3205 |
+
GlobalSign ECC Root CA - R4
|
3206 |
+
===========================
|
3207 |
+
-----BEGIN CERTIFICATE-----
|
3208 |
+
MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEkMCIGA1UECxMb
|
3209 |
+
R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
|
3210 |
+
EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb
|
3211 |
+
R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
|
3212 |
+
EwpHbG9iYWxTaWduMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprl
|
3213 |
+
OQcJFspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAwDgYDVR0P
|
3214 |
+
AQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61FuOJAf/sKbvu+M8k8o4TV
|
3215 |
+
MAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGXkPoUVy0D7O48027KqGx2vKLeuwIgJ6iF
|
3216 |
+
JzWbVsaj8kfSt24bAgAXqmemFZHe+pTsewv4n4Q=
|
3217 |
+
-----END CERTIFICATE-----
|
3218 |
+
|
3219 |
+
GlobalSign ECC Root CA - R5
|
3220 |
+
===========================
|
3221 |
+
-----BEGIN CERTIFICATE-----
|
3222 |
+
MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEkMCIGA1UECxMb
|
3223 |
+
R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
|
3224 |
+
EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb
|
3225 |
+
R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
|
3226 |
+
EwpHbG9iYWxTaWduMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6
|
3227 |
+
SFkc8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8kehOvRnkmS
|
3228 |
+
h5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd
|
3229 |
+
BgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYIKoZIzj0EAwMDaAAwZQIxAOVpEslu28Yx
|
3230 |
+
uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7
|
3231 |
+
yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3
|
3232 |
+
-----END CERTIFICATE-----
|
3233 |
+
|
3234 |
+
Staat der Nederlanden Root CA - G3
|
3235 |
+
==================================
|
3236 |
+
-----BEGIN CERTIFICATE-----
|
3237 |
+
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
|
3262 |
+
-----END CERTIFICATE-----
|
3263 |
+
|
3264 |
+
Staat der Nederlanden EV Root CA
|
3265 |
+
================================
|
3266 |
+
-----BEGIN CERTIFICATE-----
|
3267 |
+
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
|
3291 |
+
eUN51q1veieQA6TqJIc/2b3Z6fJfUEkc7uzXLg==
|
3292 |
+
-----END CERTIFICATE-----
|
3293 |
+
|
3294 |
+
IdenTrust Commercial Root CA 1
|
3295 |
+
==============================
|
3296 |
+
-----BEGIN CERTIFICATE-----
|
3297 |
+
MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBKMQswCQYDVQQG
|
3298 |
+
EwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBS
|
3299 |
+
b290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQwMTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzES
|
3300 |
+
MBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENB
|
3301 |
+
IDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ld
|
3302 |
+
hNlT3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU+ehcCuz/
|
3303 |
+
mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gpS0l4PJNgiCL8mdo2yMKi
|
3304 |
+
1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1bVoE/c40yiTcdCMbXTMTEl3EASX2MN0C
|
3305 |
+
XZ/g1Ue9tOsbobtJSdifWwLziuQkkORiT0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl
|
3306 |
+
3ZBWzvurpWCdxJ35UrCLvYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzy
|
3307 |
+
NeVJSQjKVsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZKdHzV
|
3308 |
+
WYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHTc+XvvqDtMwt0viAg
|
3309 |
+
xGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hvl7yTmvmcEpB4eoCHFddydJxVdHix
|
3310 |
+
uuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5NiGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMC
|
3311 |
+
AQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZI
|
3312 |
+
hvcNAQELBQADggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH
|
3313 |
+
6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwtLRvM7Kqas6pg
|
3314 |
+
ghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93nAbowacYXVKV7cndJZ5t+qnt
|
3315 |
+
ozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3+wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmV
|
3316 |
+
YjzlVYA211QC//G5Xc7UI2/YRYRKW2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUX
|
3317 |
+
feu+h1sXIFRRk0pTAwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/ro
|
3318 |
+
kTLql1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG4iZZRHUe
|
3319 |
+
2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZmUlO+KWA2yUPHGNiiskz
|
3320 |
+
Z2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7R
|
3321 |
+
cGzM7vRX+Bi6hG6H
|
3322 |
+
-----END CERTIFICATE-----
|
3323 |
+
|
3324 |
+
IdenTrust Public Sector Root CA 1
|
3325 |
+
=================================
|
3326 |
+
-----BEGIN CERTIFICATE-----
|
3327 |
+
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
|
3351 |
+
3Wl9af0AVqW3rLatt8o+Ae+c
|
3352 |
+
-----END CERTIFICATE-----
|
3353 |
+
|
3354 |
+
Entrust Root Certification Authority - G2
|
3355 |
+
=========================================
|
3356 |
+
-----BEGIN CERTIFICATE-----
|
3357 |
+
MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMCVVMxFjAUBgNV
|
3358 |
+
BAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVy
|
3359 |
+
bXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ug
|
3360 |
+
b25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIw
|
3361 |
+
HhcNMDkwNzA3MTcyNTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoT
|
3362 |
+
DUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMx
|
3363 |
+
OTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25s
|
3364 |
+
eTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwggEi
|
3365 |
+
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP
|
3366 |
+
/vaCeb9zYQYKpSfYs1/TRU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXz
|
3367 |
+
HHfV1IWNcCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hWwcKU
|
3368 |
+
s/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1U1+cPvQXLOZprE4y
|
3369 |
+
TGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0jaWvYkxN4FisZDQSA/i2jZRjJKRx
|
3370 |
+
AgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ6
|
3371 |
+
0B7vfec7aVHUbI2fkBJmqzANBgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5Z
|
3372 |
+
iXMRrEPR9RP/jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ
|
3373 |
+
Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v1fN2D807iDgi
|
3374 |
+
nWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4RnAuknZoh8/CbCzB428Hch0P+
|
3375 |
+
vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmHVHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xO
|
3376 |
+
e4pIb4tF9g==
|
3377 |
+
-----END CERTIFICATE-----
|
3378 |
+
|
3379 |
+
Entrust Root Certification Authority - EC1
|
3380 |
+
==========================================
|
3381 |
+
-----BEGIN CERTIFICATE-----
|
3382 |
+
MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkGA1UEBhMCVVMx
|
3383 |
+
FjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVn
|
3384 |
+
YWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXpl
|
3385 |
+
ZCB1c2Ugb25seTEzMDEGA1UEAxMqRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5
|
3386 |
+
IC0gRUMxMB4XDTEyMTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYw
|
3387 |
+
FAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2Fs
|
3388 |
+
LXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQg
|
3389 |
+
dXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt
|
3390 |
+
IEVDMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHy
|
3391 |
+
AsWfoPZb1YsGGYZPUxBtByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef
|
3392 |
+
9eNi1KlHBz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
|
3393 |
+
FLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVCR98crlOZF7ZvHH3h
|
3394 |
+
vxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nXhTcGtXsI/esni0qU+eH6p44mCOh8
|
3395 |
+
kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G
|
3396 |
+
-----END CERTIFICATE-----
|
3397 |
+
|
3398 |
+
CFCA EV ROOT
|
3399 |
+
============
|
3400 |
+
-----BEGIN CERTIFICATE-----
|
3401 |
+
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
|
3426 |
+
-----END CERTIFICATE-----
|
3427 |
+
|
3428 |
+
TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5
|
3429 |
+
====================================================
|
3430 |
+
-----BEGIN CERTIFICATE-----
|
3431 |
+
MIIEJzCCAw+gAwIBAgIHAI4X/iQggTANBgkqhkiG9w0BAQsFADCBsTELMAkGA1UEBhMCVFIxDzAN
|
3432 |
+
BgNVBAcMBkFua2FyYTFNMEsGA1UECgxEVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp
|
3433 |
+
bGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4xQjBABgNVBAMMOVTDnFJLVFJVU1Qg
|
3434 |
+
RWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSBINTAeFw0xMzA0MzAw
|
3435 |
+
ODA3MDFaFw0yMzA0MjgwODA3MDFaMIGxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMU0w
|
3436 |
+
SwYDVQQKDERUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnE
|
3437 |
+
n2kgSGl6bWV0bGVyaSBBLsWeLjFCMEAGA1UEAww5VMOcUktUUlVTVCBFbGVrdHJvbmlrIFNlcnRp
|
3438 |
+
ZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIEg1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
3439 |
+
CgKCAQEApCUZ4WWe60ghUEoI5RHwWrom/4NZzkQqL/7hzmAD/I0Dpe3/a6i6zDQGn1k19uwsu537
|
3440 |
+
jVJp45wnEFPzpALFp/kRGml1bsMdi9GYjZOHp3GXDSHHmflS0yxjXVW86B8BSLlg/kJK9siArs1m
|
3441 |
+
ep5Fimh34khon6La8eHBEJ/rPCmBp+EyCNSgBbGM+42WAA4+Jd9ThiI7/PS98wl+d+yG6w8z5UNP
|
3442 |
+
9FR1bSmZLmZaQ9/LXMrI5Tjxfjs1nQ/0xVqhzPMggCTTV+wVunUlm+hkS7M0hO8EuPbJbKoCPrZV
|
3443 |
+
4jI3X/xml1/N1p7HIL9Nxqw/dV8c7TKcfGkAaZHjIxhT6QIDAQABo0IwQDAdBgNVHQ4EFgQUVpkH
|
3444 |
+
HtOsDGlktAxQR95DLL4gwPswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI
|
3445 |
+
hvcNAQELBQADggEBAJ5FdnsXSDLyOIspve6WSk6BGLFRRyDN0GSxDsnZAdkJzsiZ3GglE9Rc8qPo
|
3446 |
+
BP5yCccLqh0lVX6Wmle3usURehnmp349hQ71+S4pL+f5bFgWV1Al9j4uPqrtd3GqqpmWRgqujuwq
|
3447 |
+
URawXs3qZwQcWDD1YIq9pr1N5Za0/EKJAWv2cMhQOQwt1WbZyNKzMrcbGW3LM/nfpeYVhDfwwvJl
|
3448 |
+
lpKQd/Ct9JDpEXjXk4nAPQu6KfTomZ1yju2dL+6SfaHx/126M2CFYv4HAqGEVka+lgqaE9chTLd8
|
3449 |
+
B59OTj+RdPsnnRHM3eaxynFNExc5JsUpISuTKWqW+qtB4Uu2NQvAmxU=
|
3450 |
+
-----END CERTIFICATE-----
|
3451 |
+
|
3452 |
+
Certinomis - Root CA
|
3453 |
+
====================
|
3454 |
+
-----BEGIN CERTIFICATE-----
|
3455 |
+
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
|
3480 |
+
hkIGuUE=
|
3481 |
+
-----END CERTIFICATE-----
|
3482 |
+
|
3483 |
+
OISTE WISeKey Global Root GB CA
|
3484 |
+
===============================
|
3485 |
+
-----BEGIN CERTIFICATE-----
|
3486 |
+
MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBtMQswCQYDVQQG
|
3487 |
+
EwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNl
|
3488 |
+
ZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAw
|
3489 |
+
MzJaFw0zOTEyMDExNTEwMzFaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYD
|
3490 |
+
VQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEds
|
3491 |
+
b2JhbCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3HEokKtaX
|
3492 |
+
scriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGxWuR51jIjK+FTzJlFXHtP
|
3493 |
+
rby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk
|
3494 |
+
9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNku7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4o
|
3495 |
+
Qnc/nSMbsrY9gBQHTC5P99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvg
|
3496 |
+
GUpuuy9rM2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB
|
3497 |
+
/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZI
|
3498 |
+
hvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrghcViXfa43FK8+5/ea4n32cZiZBKpD
|
3499 |
+
dHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0
|
3500 |
+
VQreUGdNZtGn//3ZwLWoo4rOZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEui
|
3501 |
+
HZeeevJuQHHfaPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic
|
3502 |
+
Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM=
|
3503 |
+
-----END CERTIFICATE-----
|
3504 |
+
|
3505 |
+
Certification Authority of WoSign G2
|
3506 |
+
====================================
|
3507 |
+
-----BEGIN CERTIFICATE-----
|
3508 |
+
MIIDfDCCAmSgAwIBAgIQayXaioidfLwPBbOxemFFRDANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQG
|
3509 |
+
EwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxLTArBgNVBAMTJENlcnRpZmljYXRpb24g
|
3510 |
+
QXV0aG9yaXR5IG9mIFdvU2lnbiBHMjAeFw0xNDExMDgwMDU4NThaFw00NDExMDgwMDU4NThaMFgx
|
3511 |
+
CzAJBgNVBAYTAkNOMRowGAYDVQQKExFXb1NpZ24gQ0EgTGltaXRlZDEtMCsGA1UEAxMkQ2VydGlm
|
3512 |
+
aWNhdGlvbiBBdXRob3JpdHkgb2YgV29TaWduIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
3513 |
+
CgKCAQEAvsXEoCKASU+/2YcRxlPhuw+9YH+v9oIOH9ywjj2X4FA8jzrvZjtFB5sg+OPXJYY1kBai
|
3514 |
+
XW8wGQiHC38Gsp1ij96vkqVg1CuAmlI/9ZqD6TRay9nVYlzmDuDfBpgOgHzKtB0TiGsOqCR3A9Du
|
3515 |
+
W/PKaZE1OVbFbeP3PU9ekzgkyhjpJMuSA93MHD0JcOQg5PGurLtzaaNjOg9FD6FKmsLRY6zLEPg9
|
3516 |
+
5k4ot+vElbGs/V6r+kHLXZ1L3PR8du9nfwB6jdKgGlxNIuG12t12s9R23164i5jIFFTMaxeSt+BK
|
3517 |
+
v0mUYQs4kI9dJGwlezt52eJ+na2fmKEG/HgUYFf47oB3sQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMC
|
3518 |
+
AQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU+mCp62XF3RYUCE4MD42b4Pdkr2cwDQYJKoZI
|
3519 |
+
hvcNAQELBQADggEBAFfDejaCnI2Y4qtAqkePx6db7XznPWZaOzG73/MWM5H8fHulwqZm46qwtyeY
|
3520 |
+
P0nXYGdnPzZPSsvxFPpahygc7Y9BMsaV+X3avXtbwrAh449G3CE4Q3RM+zD4F3LBMvzIkRfEzFg3
|
3521 |
+
TgvMWvchNSiDbGAtROtSjFA9tWwS1/oJu2yySrHFieT801LYYRf+epSEj3m2M1m6D8QL4nCgS3gu
|
3522 |
+
+sif/a+RZQp4OBXllxcU3fngLDT4ONCEIgDAFFEYKwLcMFrw6AF8NTojrwjkr6qOKEJJLvD1mTS+
|
3523 |
+
7Q9LGOHSJDy7XUe3IfKN0QqZjuNuPq1w4I+5ysxugTH2e5x6eeRncRg=
|
3524 |
+
-----END CERTIFICATE-----
|
3525 |
+
|
3526 |
+
CA WoSign ECC Root
|
3527 |
+
==================
|
3528 |
+
-----BEGIN CERTIFICATE-----
|
3529 |
+
MIICCTCCAY+gAwIBAgIQaEpYcIBr8I8C+vbe6LCQkDAKBggqhkjOPQQDAzBGMQswCQYDVQQGEwJD
|
3530 |
+
TjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxGzAZBgNVBAMTEkNBIFdvU2lnbiBFQ0MgUm9v
|
3531 |
+
dDAeFw0xNDExMDgwMDU4NThaFw00NDExMDgwMDU4NThaMEYxCzAJBgNVBAYTAkNOMRowGAYDVQQK
|
3532 |
+
ExFXb1NpZ24gQ0EgTGltaXRlZDEbMBkGA1UEAxMSQ0EgV29TaWduIEVDQyBSb290MHYwEAYHKoZI
|
3533 |
+
zj0CAQYFK4EEACIDYgAE4f2OuEMkq5Z7hcK6C62N4DrjJLnSsb6IOsq/Srj57ywvr1FQPEd1bPiU
|
3534 |
+
t5v8KB7FVMxjnRZLU8HnIKvNrCXSf4/CwVqCXjCLelTOA7WRf6qU0NGKSMyCBSah1VES1ns2o0Iw
|
3535 |
+
QDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUqv3VWqP2h4syhf3R
|
3536 |
+
MluARZPzA7gwCgYIKoZIzj0EAwMDaAAwZQIxAOSkhLCB1T2wdKyUpOgOPQB0TKGXa/kNUTyh2Tv0
|
3537 |
+
Daupn75OcsqF1NnstTJFGG+rrQIwfcf3aWMvoeGY7xMQ0Xk/0f7qO3/eVvSQsRUR2LIiFdAvwyYu
|
3538 |
+
a/GRspBl9JrmkO5K
|
3539 |
+
-----END CERTIFICATE-----
|
3540 |
+
|
3541 |
+
SZAFIR ROOT CA2
|
3542 |
+
===============
|
3543 |
+
-----BEGIN CERTIFICATE-----
|
3544 |
+
MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQELBQAwUTELMAkG
|
3545 |
+
A1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6ZW5pb3dhIFMuQS4xGDAWBgNV
|
3546 |
+
BAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkwNzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJ
|
3547 |
+
BgNVBAYTAlBMMSgwJgYDVQQKDB9LcmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYD
|
3548 |
+
VQQDDA9TWkFGSVIgUk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5Q
|
3549 |
+
qEvNQLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT3PSQ1hNK
|
3550 |
+
DJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw3gAeqDRHu5rr/gsUvTaE
|
3551 |
+
2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr63fE9biCloBK0TXC5ztdyO4mTp4CEHCdJ
|
3552 |
+
ckm1/zuVnsHMyAHs6A6KCpbns6aH5db5BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwi
|
3553 |
+
ieDhZNRnvDF5YTy7ykHNXGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P
|
3554 |
+
AQH/BAQDAgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsFAAOC
|
3555 |
+
AQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw8PRBEew/R40/cof5
|
3556 |
+
O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOGnXkZ7/e7DDWQw4rtTw/1zBLZpD67
|
3557 |
+
oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCPoky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul
|
3558 |
+
4+vJhaAlIDf7js4MNIThPIGyd05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6
|
3559 |
+
+/NNIxuZMzSgLvWpCz/UXeHPhJ/iGcJfitYgHuNztw==
|
3560 |
+
-----END CERTIFICATE-----
|
3561 |
+
|
3562 |
+
Certum Trusted Network CA 2
|
3563 |
+
===========================
|
3564 |
+
-----BEGIN CERTIFICATE-----
|
3565 |
+
MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCBgDELMAkGA1UE
|
3566 |
+
BhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMuQS4xJzAlBgNVBAsTHkNlcnR1
|
3567 |
+
bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIGA1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29y
|
3568 |
+
ayBDQSAyMCIYDzIwMTExMDA2MDgzOTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQ
|
3569 |
+
TDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENl
|
3570 |
+
cnRpZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENB
|
3571 |
+
IDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWADGSdhhuWZGc/IjoedQF9
|
3572 |
+
7/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+o
|
3573 |
+
CgCXhVqqndwpyeI1B+twTUrWwbNWuKFBOJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40b
|
3574 |
+
Rr5HMNUuctHFY9rnY3lEfktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2p
|
3575 |
+
uTRZCr+ESv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1mo130
|
3576 |
+
GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02isx7QBlrd9pPPV3WZ
|
3577 |
+
9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOWOZV7bIBaTxNyxtd9KXpEulKkKtVB
|
3578 |
+
Rgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgezTv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pye
|
3579 |
+
hizKV/Ma5ciSixqClnrDvFASadgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vM
|
3580 |
+
BhBgu4M1t15n3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
|
3581 |
+
AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZI
|
3582 |
+
hvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQF/xlhMcQSZDe28cmk4gmb3DW
|
3583 |
+
Al45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTfCVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuA
|
3584 |
+
L55MYIR4PSFk1vtBHxgP58l1cb29XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMo
|
3585 |
+
clm2q8KMZiYcdywmdjWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tM
|
3586 |
+
pkT/WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jbAoJnwTnb
|
3587 |
+
w3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksqP/ujmv5zMnHCnsZy4Ypo
|
3588 |
+
J/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Kob7a6bINDd82Kkhehnlt4Fj1F4jNy3eFm
|
3589 |
+
ypnTycUm/Q1oBEauttmbjL4ZvrHG8hnjXALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLX
|
3590 |
+
is7VmFxWlgPF7ncGNf/P5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7
|
3591 |
+
zAYspsbiDrW5viSP
|
3592 |
+
-----END CERTIFICATE-----
|
3593 |
+
|
3594 |
+
Hellenic Academic and Research Institutions RootCA 2015
|
3595 |
+
=======================================================
|
3596 |
+
-----BEGIN CERTIFICATE-----
|
3597 |
+
MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcT
|
3598 |
+
BkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0
|
3599 |
+
aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl
|
3600 |
+
YXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAx
|
3601 |
+
MTIxWjCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMg
|
3602 |
+
QWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNV
|
3603 |
+
BAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIw
|
3604 |
+
MTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDC+Kk/G4n8PDwEXT2QNrCROnk8Zlrv
|
3605 |
+
bTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+eh
|
3606 |
+
iGsxr/CL0BgzuNtFajT0AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+
|
3607 |
+
6PAQZe104S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06CojXd
|
3608 |
+
FPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV9Cz82XBST3i4vTwr
|
3609 |
+
i5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrDgfgXy5I2XdGj2HUb4Ysn6npIQf1F
|
3610 |
+
GQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2
|
3611 |
+
fu/Z8VFRfS0myGlZYeCsargqNhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9mu
|
3612 |
+
iNX6hME6wGkoLfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc
|
3613 |
+
Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
|
3614 |
+
AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVdctA4GGqd83EkVAswDQYJKoZI
|
3615 |
+
hvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0IXtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+
|
3616 |
+
D1hYc2Ryx+hFjtyp8iY/xnmMsVMIM4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrM
|
3617 |
+
d/K4kPFox/la/vot9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+y
|
3618 |
+
d+2VZ5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/eaj8GsGsVn
|
3619 |
+
82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnhX9izjFk0WaSrT2y7Hxjb
|
3620 |
+
davYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQl033DlZdwJVqwjbDG2jJ9SrcR5q+ss7F
|
3621 |
+
Jej6A7na+RZukYT1HCjI/CbM1xyQVqdfbzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVt
|
3622 |
+
J94Cj8rDtSvK6evIIVM4pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGa
|
3623 |
+
JI7ZjnHKe7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0vm9q
|
3624 |
+
p/UsQu0yrbYhnr68
|
3625 |
+
-----END CERTIFICATE-----
|
3626 |
+
|
3627 |
+
Hellenic Academic and Research Institutions ECC RootCA 2015
|
3628 |
+
===========================================================
|
3629 |
+
-----BEGIN CERTIFICATE-----
|
3630 |
+
MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0
|
3631 |
+
aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u
|
3632 |
+
cyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj
|
3633 |
+
aCBJbnN0aXR1dGlvbnMgRUNDIFJvb3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEw
|
3634 |
+
MzcxMlowgaoxCzAJBgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmlj
|
3635 |
+
IEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUQwQgYD
|
3636 |
+
VQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIEVDQyBSb290
|
3637 |
+
Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKgQehLgoRc4vgxEZmGZE4JJS+dQS8KrjVP
|
3638 |
+
dJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJajq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoK
|
3639 |
+
Vlp8aQuqgAkkbH7BRqNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O
|
3640 |
+
BBYEFLQiC4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaeplSTA
|
3641 |
+
GiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7SofTUwJCA3sS61kFyjn
|
3642 |
+
dc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR
|
3643 |
+
-----END CERTIFICATE-----
|
3644 |
+
|
3645 |
+
Certplus Root CA G1
|
3646 |
+
===================
|
3647 |
+
-----BEGIN CERTIFICATE-----
|
3648 |
+
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
|
3672 |
+
qsOR0C5CB8AMTVPNJLFMWx5R9N/pkvo=
|
3673 |
+
-----END CERTIFICATE-----
|
3674 |
+
|
3675 |
+
Certplus Root CA G2
|
3676 |
+
===================
|
3677 |
+
-----BEGIN CERTIFICATE-----
|
3678 |
+
MIICHDCCAaKgAwIBAgISESDZkc6uo+jF5//pAq/Pc7xVMAoGCCqGSM49BAMDMD4xCzAJBgNVBAYT
|
3679 |
+
AkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMjAeFw0x
|
3680 |
+
NDA1MjYwMDAwMDBaFw0zODAxMTUwMDAwMDBaMD4xCzAJBgNVBAYTAkZSMREwDwYDVQQKDAhDZXJ0
|
3681 |
+
cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMjB2MBAGByqGSM49AgEGBSuBBAAiA2IA
|
3682 |
+
BM0PW1aC3/BFGtat93nwHcmsltaeTpwftEIRyoa/bfuFo8XlGVzX7qY/aWfYeOKmycTbLXku54uN
|
3683 |
+
Am8xIk0G42ByRZ0OQneezs/lf4WbGOT8zC5y0xaTTsqZY1yhBSpsBqNjMGEwDgYDVR0PAQH/BAQD
|
3684 |
+
AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNqDYwJ5jtpMxjwjFNiPwyCrKGBZMB8GA1Ud
|
3685 |
+
IwQYMBaAFNqDYwJ5jtpMxjwjFNiPwyCrKGBZMAoGCCqGSM49BAMDA2gAMGUCMHD+sAvZ94OX7PNV
|
3686 |
+
HdTcswYO/jOYnYs5kGuUIe22113WTNchp+e/IQ8rzfcq3IUHnQIxAIYUFuXcsGXCwI4Un78kFmjl
|
3687 |
+
vPl5adytRSv3tjFzzAalU5ORGpOucGpnutee5WEaXw==
|
3688 |
+
-----END CERTIFICATE-----
|
3689 |
+
|
3690 |
+
OpenTrust Root CA G1
|
3691 |
+
====================
|
3692 |
+
-----BEGIN CERTIFICATE-----
|
3693 |
+
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
|
3717 |
+
OXXUc0ECd97N4EOH1uS6SsNsEn/+KuYj1oxx
|
3718 |
+
-----END CERTIFICATE-----
|
3719 |
+
|
3720 |
+
OpenTrust Root CA G2
|
3721 |
+
====================
|
3722 |
+
-----BEGIN CERTIFICATE-----
|
3723 |
+
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
|
3747 |
+
u7JwqkwR3v98KzfUetF3NI/n+UL3PIEMS1IK
|
3748 |
+
-----END CERTIFICATE-----
|
3749 |
+
|
3750 |
+
OpenTrust Root CA G3
|
3751 |
+
====================
|
3752 |
+
-----BEGIN CERTIFICATE-----
|
3753 |
+
MIICITCCAaagAwIBAgISESDm+Ez8JLC+BUCs2oMbNGA/MAoGCCqGSM49BAMDMEAxCzAJBgNVBAYT
|
3754 |
+
AkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5UcnVzdCBSb290IENBIEczMB4X
|
3755 |
+
DTE0MDUyNjAwMDAwMFoXDTM4MDExNTAwMDAwMFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCU9w
|
3756 |
+
ZW5UcnVzdDEdMBsGA1UEAwwUT3BlblRydXN0IFJvb3QgQ0EgRzMwdjAQBgcqhkjOPQIBBgUrgQQA
|
3757 |
+
IgNiAARK7liuTcpm3gY6oxH84Bjwbhy6LTAMidnW7ptzg6kjFYwvWYpa3RTqnVkrQ7cG7DK2uu5B
|
3758 |
+
ta1doYXM6h0UZqNnfkbilPPntlahFVmhTzeXuSIevRHr9LIfXsMUmuXZl5mjYzBhMA4GA1UdDwEB
|
3759 |
+
/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRHd8MUi2I5DMlv4VBN0BBY3JWIbTAf
|
3760 |
+
BgNVHSMEGDAWgBRHd8MUi2I5DMlv4VBN0BBY3JWIbTAKBggqhkjOPQQDAwNpADBmAjEAj6jcnboM
|
3761 |
+
BBf6Fek9LykBl7+BFjNAk2z8+e2AcG+qj9uEwov1NcoG3GRvaBbhj5G5AjEA2Euly8LQCGzpGPta
|
3762 |
+
3U1fJAuwACEl74+nBCZx4nxp5V2a+EEfOzmTk51V6s2N8fvB
|
3763 |
+
-----END CERTIFICATE-----
|
3764 |
+
|
3765 |
+
ISRG Root X1
|
3766 |
+
============
|
3767 |
+
-----BEGIN CERTIFICATE-----
|
3768 |
+
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
|
3792 |
+
m+kXQ99b21/+jh5Xos1AnX5iItreGCc=
|
3793 |
+
-----END CERTIFICATE-----
|
3794 |
+
|
3795 |
+
AC RAIZ FNMT-RCM
|
3796 |
+
================
|
3797 |
+
-----BEGIN CERTIFICATE-----
|
3798 |
+
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
|
3823 |
+
-----END CERTIFICATE-----
|
3824 |
+
|
3825 |
+
Amazon Root CA 1
|
3826 |
+
================
|
3827 |
+
-----BEGIN CERTIFICATE-----
|
3828 |
+
MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsFADA5MQswCQYD
|
3829 |
+
VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAxMB4XDTE1
|
3830 |
+
MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv
|
3831 |
+
bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
3832 |
+
ggEBALJ4gHHKeNXjca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgH
|
3833 |
+
FzZM9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qwIFAGbHrQ
|
3834 |
+
gLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6VOujw5H5SNz/0egwLX0t
|
3835 |
+
dHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L93FcXmn/6pUCyziKrlA4b9v7LWIbxcce
|
3836 |
+
VOF34GfID5yHI9Y/QCB/IIDEgEw+OyQmjgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB
|
3837 |
+
/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3
|
3838 |
+
DQEBCwUAA4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDIU5PM
|
3839 |
+
CCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUsN+gDS63pYaACbvXy
|
3840 |
+
8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vvo/ufQJVtMVT8QtPHRh8jrdkPSHCa
|
3841 |
+
2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2
|
3842 |
+
xJNDd2ZhwLnoQdeXeGADbkpyrqXRfboQnoZsG4q5WTP468SQvvG5
|
3843 |
+
-----END CERTIFICATE-----
|
3844 |
+
|
3845 |
+
Amazon Root CA 2
|
3846 |
+
================
|
3847 |
+
-----BEGIN CERTIFICATE-----
|
3848 |
+
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
|
3872 |
+
-----END CERTIFICATE-----
|
3873 |
+
|
3874 |
+
Amazon Root CA 3
|
3875 |
+
================
|
3876 |
+
-----BEGIN CERTIFICATE-----
|
3877 |
+
MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5MQswCQYDVQQG
|
3878 |
+
EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAzMB4XDTE1MDUy
|
3879 |
+
NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ
|
3880 |
+
MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZB
|
3881 |
+
f8ANm+gBG1bG8lKlui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjr
|
3882 |
+
Zt6jQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSrttvXBp43
|
3883 |
+
rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkrBqWTrBqYaGFy+uGh0Psc
|
3884 |
+
eGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteMYyRIHN8wfdVoOw==
|
3885 |
+
-----END CERTIFICATE-----
|
3886 |
+
|
3887 |
+
Amazon Root CA 4
|
3888 |
+
================
|
3889 |
+
-----BEGIN CERTIFICATE-----
|
3890 |
+
MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5MQswCQYDVQQG
|
3891 |
+
EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSA0MB4XDTE1MDUy
|
3892 |
+
NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ
|
3893 |
+
MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN
|
3894 |
+
/sGKe0uoe0ZLY7Bi9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri
|
3895 |
+
83BkM6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
|
3896 |
+
HQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WBMAoGCCqGSM49BAMDA2gA
|
3897 |
+
MGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlwCkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1
|
3898 |
+
AE47xDqUEpHJWEadIRNyp4iciuRMStuW1KyLa2tJElMzrdfkviT8tQp21KW8EA==
|
3899 |
+
-----END CERTIFICATE-----
|
3900 |
+
|
3901 |
+
LuxTrust Global Root 2
|
3902 |
+
======================
|
3903 |
+
-----BEGIN CERTIFICATE-----
|
3904 |
+
MIIFwzCCA6ugAwIBAgIUCn6m30tEntpqJIWe5rgV0xZ/u7EwDQYJKoZIhvcNAQELBQAwRjELMAkG
|
3905 |
+
A1UEBhMCTFUxFjAUBgNVBAoMDUx1eFRydXN0IFMuQS4xHzAdBgNVBAMMFkx1eFRydXN0IEdsb2Jh
|
3906 |
+
bCBSb290IDIwHhcNMTUwMzA1MTMyMTU3WhcNMzUwMzA1MTMyMTU3WjBGMQswCQYDVQQGEwJMVTEW
|
3907 |
+
MBQGA1UECgwNTHV4VHJ1c3QgUy5BLjEfMB0GA1UEAwwWTHV4VHJ1c3QgR2xvYmFsIFJvb3QgMjCC
|
3908 |
+
AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANeFl78RmOnwYoNMPIf5U2o3C/IPPIfOb9wm
|
3909 |
+
Kb3FibrJgz337spbxm1Jc7TJRqMbNBM/wYlFV/TZsfs2ZUv7COJIcRHIbjuend+JZTemhfY7RBi2
|
3910 |
+
xjcwYkSSl2l9QjAk5A0MiWtj3sXh306pFGxT4GHO9hcvHTy95iJMHZP1EMShduxq3sVs35a0VkBC
|
3911 |
+
wGKSMKEtFZSg0iAGCW5qbeXrt77U8PEVfIvmTroTzEsnXpk8F12PgX8zPU/TPxvsXD/wPEx1bvKm
|
3912 |
+
1Z3aLQdjAsZy6ZS8TEmVT4hSyNvoaYL4zDRbIvCGp4m9SAptZoFtyMhk+wHh9OHe2Z7d21vUKpkm
|
3913 |
+
FRseTJIpgp7VkoGSQXAZ96Tlk0u8d2cx3Rz9MXANF5kM+Qw5GSoXtTBxVdUPrljhPS80m8+f9niF
|
3914 |
+
wpN6cj5mj5wWEWCPnolvZ77gR1o7DJpni89Gxq44o/KnvObWhWszJHAiS8sIm7vI+AIpHb4gDEa/
|
3915 |
+
a4ebsypmQjVGbKq6rfmYe+lQVRQxv7HaLe2ArWgk+2mr2HETMOZns4dA/Yl+8kPREd8vZS9kzl8U
|
3916 |
+
ubG/Mb2HeFpZZYiq/FkySIbWTLkpS5XTdvN3JW1CHDiDTf2jX5t/Lax5Gw5CMZdjpPuKadUiDTSQ
|
3917 |
+
MC6otOBttpSsvItO13D8xTiOZCXhTTmQzsmHhFhxAgMBAAGjgagwgaUwDwYDVR0TAQH/BAUwAwEB
|
3918 |
+
/zBCBgNVHSAEOzA5MDcGByuBKwEBAQowLDAqBggrBgEFBQcCARYeaHR0cHM6Ly9yZXBvc2l0b3J5
|
3919 |
+
Lmx1eHRydXN0Lmx1MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBT/GCh2+UgFLKGu8SsbK7JT
|
3920 |
+
+Et8szAdBgNVHQ4EFgQU/xgodvlIBSyhrvErGyuyU/hLfLMwDQYJKoZIhvcNAQELBQADggIBAGoZ
|
3921 |
+
FO1uecEsh9QNcH7X9njJCwROxLHOk3D+sFTAMs2ZMGQXvw/l4jP9BzZAcg4atmpZ1gDlaCDdLnIN
|
3922 |
+
H2pkMSCEfUmmWjfrRcmF9dTHF5kH5ptV5AzoqbTOjFu1EVzPig4N1qx3gf4ynCSecs5U89BvolbW
|
3923 |
+
7MM3LGVYvlcAGvI1+ut7MV3CwRI9loGIlonBWVx65n9wNOeD4rHh4bhY79SV5GCc8JaXcozrhAIu
|
3924 |
+
ZY+kt9J/Z93I055cqqmkoCUUBpvsT34tC38ddfEz2O3OuHVtPlu5mB0xDVbYQw8wkbIEa91WvpWA
|
3925 |
+
VWe+2M2D2RjuLg+GLZKecBPs3lHJQ3gCpU3I+V/EkVhGFndadKpAvAefMLmx9xIX3eP/JEAdemrR
|
3926 |
+
TxgKqpAd60Ae36EeRJIQmvKN4dFLRp7oRUKX6kWZ8+xm1QL68qZKJKrezrnK+T+Tb/mjuuqlPpmt
|
3927 |
+
/f97mfVl7vBZKGfXkJWkE4SphMHozs51k2MavDzq1WQfLSoSOcbDWjLtR5EWDrw4wVDej8oqkDQc
|
3928 |
+
7kGUnF4ZLvhFSZl0kbAEb+MEWrGrKqv+x9CWttrhSmQGbmBNvUJO/3jaJMobtNeWOWyu8Q6qp31I
|
3929 |
+
iyBMz2TWuJdGsE7RKlY6oJO9r4Ak4Ap+58rVyuiFVdw2KuGUaJPHZnJED4AhMmwlxyOAgwrr
|
3930 |
+
-----END CERTIFICATE-----
|
3931 |
+
|
3932 |
+
TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1
|
3933 |
+
=============================================
|
3934 |
+
-----BEGIN CERTIFICATE-----
|
3935 |
+
MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIxGDAWBgNVBAcT
|
3936 |
+
D0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxpbXNlbCB2ZSBUZWtub2xvamlr
|
3937 |
+
IEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0wKwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24g
|
3938 |
+
TWVya2V6aSAtIEthbXUgU00xNjA0BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRp
|
3939 |
+
ZmlrYXNpIC0gU3VydW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYD
|
3940 |
+
VQQGEwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXllIEJpbGlt
|
3941 |
+
c2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklUQUsxLTArBgNVBAsTJEth
|
3942 |
+
bXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBTTTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11
|
3943 |
+
IFNNIFNTTCBLb2sgU2VydGlmaWthc2kgLSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
3944 |
+
MIIBCgKCAQEAr3UwM6q7a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y8
|
3945 |
+
6Ij5iySrLqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INrN3wc
|
3946 |
+
wv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2XYacQuFWQfw4tJzh0
|
3947 |
+
3+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/iSIzL+aFCr2lqBs23tPcLG07xxO9
|
3948 |
+
WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4fAJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQU
|
3949 |
+
ZT/HiobGPN08VFw1+DrtUgxHV8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJ
|
3950 |
+
KoZIhvcNAQELBQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh
|
3951 |
+
AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPfIPP54+M638yc
|
3952 |
+
lNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4lzwDGrpDxpa5RXI4s6ehlj2R
|
3953 |
+
e37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0j
|
3954 |
+
q5Rm+K37DwhuJi1/FwcJsoz7UMCflo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM=
|
3955 |
+
-----END CERTIFICATE-----
|
classes/iowddb.php
ADDED
@@ -0,0 +1,103 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if (!defined('ABSPATH')) {
|
4 |
+
exit;
|
5 |
+
}
|
6 |
+
require_once IOWD_DIR_CLASSES . "/iowddb_class.php";
|
7 |
+
|
8 |
+
class IOWDDB extends IOWDDB_Class
|
9 |
+
{
|
10 |
+
|
11 |
+
public function create_iowd_images_table()
|
12 |
+
{
|
13 |
+
$fields = array(
|
14 |
+
array(
|
15 |
+
"field_name" => "`id`",
|
16 |
+
"field_type" => "int(16)",
|
17 |
+
"null" => "not null",
|
18 |
+
"ai" => 1,
|
19 |
+
),
|
20 |
+
array(
|
21 |
+
"field_name" => "`post_id`",
|
22 |
+
"field_type" => "varchar(256)",
|
23 |
+
"null" => "not null",
|
24 |
+
"ai" => 0,
|
25 |
+
),
|
26 |
+
|
27 |
+
array(
|
28 |
+
"field_name" => "`size`",
|
29 |
+
"field_type" => "varchar(256)",
|
30 |
+
"null" => "not null",
|
31 |
+
"ai" => 0,
|
32 |
+
),
|
33 |
+
array(
|
34 |
+
"field_name" => "`path`",
|
35 |
+
"field_type" => "varchar(256)",
|
36 |
+
"null" => "not null",
|
37 |
+
"ai" => 0,
|
38 |
+
),
|
39 |
+
array(
|
40 |
+
"field_name" => "`image_size`",
|
41 |
+
"field_type" => "int(16)",
|
42 |
+
"null" => "not null",
|
43 |
+
"ai" => 0,
|
44 |
+
),
|
45 |
+
array(
|
46 |
+
"field_name" => "`image_orig_size`",
|
47 |
+
"field_type" => "int(16)",
|
48 |
+
"null" => "not null",
|
49 |
+
"ai" => 0,
|
50 |
+
),
|
51 |
+
array(
|
52 |
+
"field_name" => "`updated_date`",
|
53 |
+
"field_type" => "datetime",
|
54 |
+
"null" => "not null",
|
55 |
+
"ai" => 0,
|
56 |
+
),
|
57 |
+
array(
|
58 |
+
"field_name" => "`status`",
|
59 |
+
"field_type" => "varchar(256)",
|
60 |
+
"null" => "not null",
|
61 |
+
"ai" => 0,
|
62 |
+
),
|
63 |
+
array(
|
64 |
+
"field_name" => "`media`",
|
65 |
+
"field_type" => "int(16)",
|
66 |
+
"null" => "not null",
|
67 |
+
"ai" => 0,
|
68 |
+
),
|
69 |
+
array(
|
70 |
+
"field_name" => "`already_optimized`",
|
71 |
+
"field_type" => "varchar(256)",
|
72 |
+
"null" => "not null",
|
73 |
+
"ai" => 0,
|
74 |
+
),
|
75 |
+
array(
|
76 |
+
"field_name" => "`converted`",
|
77 |
+
"field_type" => "int(16)",
|
78 |
+
"null" => "not null",
|
79 |
+
"ai" => 0,
|
80 |
+
),
|
81 |
+
array(
|
82 |
+
"field_name" => "`resized`",
|
83 |
+
"field_type" => "int(16)",
|
84 |
+
"null" => "not null",
|
85 |
+
"ai" => 0,
|
86 |
+
),
|
87 |
+
array(
|
88 |
+
"field_name" => "`deleted`",
|
89 |
+
"field_type" => "int(16)",
|
90 |
+
"null" => "not null",
|
91 |
+
"ai" => 0,
|
92 |
+
),
|
93 |
+
|
94 |
+
);
|
95 |
+
|
96 |
+
$this->create_table("iowd_images", $fields);
|
97 |
+
}
|
98 |
+
|
99 |
+
|
100 |
+
}
|
101 |
+
|
102 |
+
|
103 |
+
|
classes/iowddb_class.php
ADDED
@@ -0,0 +1,93 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if (!defined('ABSPATH')) {
|
4 |
+
exit;
|
5 |
+
}
|
6 |
+
|
7 |
+
class IOWDDB_Class
|
8 |
+
{
|
9 |
+
public $errors = array();
|
10 |
+
private $table_name;
|
11 |
+
|
12 |
+
|
13 |
+
/**
|
14 |
+
* function for create table
|
15 |
+
*
|
16 |
+
* @param string $table_name
|
17 |
+
* @param array $fields array( 0=> array("field_name" => "name", "field_type" => "type", "null" => "NOT NULL", "ai" => "0"))
|
18 |
+
* @param string $primary_key
|
19 |
+
*
|
20 |
+
* @return void
|
21 |
+
*/
|
22 |
+
public function create_table($table_name, $fields = array(), $primary_key = "id")
|
23 |
+
{
|
24 |
+
global $wpdb;
|
25 |
+
$query_str = array();
|
26 |
+
foreach ($fields as $field) {
|
27 |
+
$single_field = $field["field_name"] . " " . $field["field_type"] . " " . $field["null"];
|
28 |
+
if ($field["ai"] == 1) {
|
29 |
+
$single_field .= " AUTO_INCREMENT";
|
30 |
+
}
|
31 |
+
$query_str[] = $single_field;
|
32 |
+
}
|
33 |
+
|
34 |
+
$fields = implode(",", $query_str);
|
35 |
+
|
36 |
+
$query = "CREATE TABLE IF NOT EXISTS `" . $wpdb->prefix . $table_name . "` (
|
37 |
+
" . $fields . ",
|
38 |
+
PRIMARY KEY (`" . $primary_key . "`)
|
39 |
+
) DEFAULT CHARSET=utf8;";
|
40 |
+
|
41 |
+
$wpdb->query($query);
|
42 |
+
if ($wpdb->last_error) {
|
43 |
+
array_push($this->errors, $wpdb->last_error);
|
44 |
+
}
|
45 |
+
}
|
46 |
+
|
47 |
+
|
48 |
+
/**
|
49 |
+
* function for getting single row by field name
|
50 |
+
*
|
51 |
+
* @param array $values = array("field_name" => field_value, ..)
|
52 |
+
* @param string $compare
|
53 |
+
* @param string $operator
|
54 |
+
*
|
55 |
+
* @return object
|
56 |
+
*/
|
57 |
+
|
58 |
+
public function get_row_by_field($values = array(), $compare = "=", $operator = "and")
|
59 |
+
{
|
60 |
+
$row = false;
|
61 |
+
global $wpdb;
|
62 |
+
if ($this->table_name) {
|
63 |
+
$where = array();
|
64 |
+
if ($values) {
|
65 |
+
foreach ($values as $key => $val) {
|
66 |
+
$where[] = $key . $compare . "'" . $val . "'";
|
67 |
+
}
|
68 |
+
}
|
69 |
+
$where = count($where) > 0 ? " WHERE " . implode(" " . $operator . " ", $where) : "";
|
70 |
+
$query = "SELECT * FROM " . $wpdb->prefix . $this->table_name . $where;
|
71 |
+
|
72 |
+
$row = $wpdb->get_row($query);
|
73 |
+
}
|
74 |
+
|
75 |
+
return $row;
|
76 |
+
}
|
77 |
+
|
78 |
+
/**
|
79 |
+
* function for setting table name
|
80 |
+
*
|
81 |
+
* @param string $table_name
|
82 |
+
*
|
83 |
+
* @return void
|
84 |
+
*/
|
85 |
+
public function set_table_name($table_name)
|
86 |
+
{
|
87 |
+
$this->table_name = $table_name;
|
88 |
+
}
|
89 |
+
|
90 |
+
}
|
91 |
+
|
92 |
+
|
93 |
+
|
classes/iowdimage.php
ADDED
@@ -0,0 +1,183 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if (!defined('ABSPATH')) {
|
4 |
+
exit;
|
5 |
+
}
|
6 |
+
|
7 |
+
class IOWDImage
|
8 |
+
{
|
9 |
+
|
10 |
+
private $image = null;
|
11 |
+
private $image_path = null;
|
12 |
+
private $image_full_path = null;
|
13 |
+
private $mime_type = null;
|
14 |
+
private $image_name = null;
|
15 |
+
private $width = null;
|
16 |
+
private $height = null;
|
17 |
+
|
18 |
+
/**
|
19 |
+
* function for setting image path
|
20 |
+
*
|
21 |
+
* @param string $image_path
|
22 |
+
*
|
23 |
+
* @return void
|
24 |
+
*/
|
25 |
+
public function load_image($image_path)
|
26 |
+
{
|
27 |
+
|
28 |
+
$this->image_full_path = $image_path;
|
29 |
+
$this->mime_type = pathinfo($image_path, PATHINFO_EXTENSION);
|
30 |
+
|
31 |
+
$this->image_path = str_replace(basename($image_path), "", $image_path);
|
32 |
+
$this->image_name = str_replace("." . $this->mime_type, "", basename($image_path));
|
33 |
+
|
34 |
+
|
35 |
+
list($img_width, $img_height) = @getimagesize(htmlspecialchars_decode($image_path, ENT_COMPAT | ENT_QUOTES));
|
36 |
+
|
37 |
+
$this->width = $img_width;
|
38 |
+
$this->height = $img_height;
|
39 |
+
|
40 |
+
switch ($this->mime_type) {
|
41 |
+
case "jpg" :
|
42 |
+
case "jpeg" :
|
43 |
+
$this->image = @imagecreatefromjpeg($image_path);
|
44 |
+
break;
|
45 |
+
case "png" :
|
46 |
+
$this->image = @imagecreatefrompng($image_path);
|
47 |
+
break;
|
48 |
+
|
49 |
+
case "gif" :
|
50 |
+
$this->image = @imagecreatefromgif($image_path);
|
51 |
+
break;
|
52 |
+
}
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* function for setting image path
|
57 |
+
*
|
58 |
+
* @return void
|
59 |
+
*/
|
60 |
+
public function convert_to_png()
|
61 |
+
{
|
62 |
+
if ($this->image) {
|
63 |
+
imagepng($this->image, $this->image_path . $this->image_name . '.png');
|
64 |
+
@imagedestroy($this->image);
|
65 |
+
}
|
66 |
+
|
67 |
+
}
|
68 |
+
|
69 |
+
/**
|
70 |
+
* function for setting image path
|
71 |
+
*
|
72 |
+
* @return void
|
73 |
+
*/
|
74 |
+
public function convert_to_jpg()
|
75 |
+
{
|
76 |
+
if ($this->image) {
|
77 |
+
$output = $this->image;
|
78 |
+
|
79 |
+
if ($this->mime_type == "png") {
|
80 |
+
list($width, $height) = getimagesize($this->image_full_path);
|
81 |
+
$output = imagecreatetruecolor($width, $height);
|
82 |
+
$white = imagecolorallocate($output, 255, 255, 255);
|
83 |
+
imagefilledrectangle($output, 0, 0, $width, $height, $white);
|
84 |
+
imagecopy($output, $this->image, 0, 0, 0, 0, $width, $height);
|
85 |
+
}
|
86 |
+
|
87 |
+
imagejpeg($output, $this->image_path . $this->image_name . '.jpg');
|
88 |
+
@imagedestroy($output);
|
89 |
+
}
|
90 |
+
}
|
91 |
+
|
92 |
+
/**
|
93 |
+
* function for setting image path
|
94 |
+
*
|
95 |
+
* @return void
|
96 |
+
*/
|
97 |
+
public function convert_to_webp()
|
98 |
+
{
|
99 |
+
if ($this->image) {
|
100 |
+
$output = $this->image;
|
101 |
+
|
102 |
+
if ($this->mime_type == "png") {
|
103 |
+
list($width, $height) = getimagesize($this->image_full_path);
|
104 |
+
$output = imagecreatetruecolor($width, $height);
|
105 |
+
$white = imagecolorallocate($output, 255, 255, 255);
|
106 |
+
imagefilledrectangle($output, 0, 0, $width, $height, $white);
|
107 |
+
imagecopy($output, $this->image, 0, 0, 0, 0, $width, $height);
|
108 |
+
}
|
109 |
+
@imagewebp($output, $this->image_path . $this->image_name . '.webp');
|
110 |
+
@imagedestroy($output);
|
111 |
+
}
|
112 |
+
}
|
113 |
+
|
114 |
+
/**
|
115 |
+
* function for setting image path
|
116 |
+
*
|
117 |
+
* @param string $width
|
118 |
+
* @param string $height
|
119 |
+
*
|
120 |
+
* @return void
|
121 |
+
*/
|
122 |
+
public function resize($width, $height)
|
123 |
+
{
|
124 |
+
$ratio = $this->width / $this->height;
|
125 |
+
$max_width = $width;
|
126 |
+
$max_height = $width / $ratio;
|
127 |
+
|
128 |
+
ini_set('memory_limit', '-1');
|
129 |
+
|
130 |
+
if (($this->width / $this->height) >= ($max_width / $max_height)) {
|
131 |
+
$new_width = $this->width / ($this->height / $max_height);
|
132 |
+
$new_height = $max_height;
|
133 |
+
} else {
|
134 |
+
$new_width = $max_width;
|
135 |
+
$new_height = $this->height / ($this->width / $max_width);
|
136 |
+
}
|
137 |
+
|
138 |
+
$dst_x = 0 - ($new_width - $max_width) / 2;
|
139 |
+
$dst_y = 0 - ($new_height - $max_height) / 2;
|
140 |
+
|
141 |
+
$new_img = @imagecreatetruecolor($max_width, $max_height);
|
142 |
+
|
143 |
+
switch ($this->mime_type) {
|
144 |
+
case "jpg":
|
145 |
+
case "jpeg":
|
146 |
+
$write_image = 'imagejpeg';
|
147 |
+
$image_quality = 75;
|
148 |
+
$extension = ".jpeg";
|
149 |
+
break;
|
150 |
+
|
151 |
+
case "gif":
|
152 |
+
@imagecolortransparent($new_img, @imagecolorallocate($new_img, 0, 0, 0));
|
153 |
+
$write_image = 'imagegif';
|
154 |
+
$image_quality = null;
|
155 |
+
$extension = ".gif";
|
156 |
+
break;
|
157 |
+
|
158 |
+
case "png":
|
159 |
+
@imagecolortransparent($new_img, @imagecolorallocate($new_img, 0, 0, 0));
|
160 |
+
@imagealphablending($new_img, false);
|
161 |
+
@imagesavealpha($new_img, true);
|
162 |
+
$write_image = 'imagepng';
|
163 |
+
$image_quality = 9;
|
164 |
+
$extension = ".png";
|
165 |
+
break;
|
166 |
+
|
167 |
+
|
168 |
+
}
|
169 |
+
$success = $this->image && @imagecopyresampled($new_img, $this->image, $dst_x, $dst_y, 0, 0, $new_width, $new_height, $this->width, $this->height) && $write_image($new_img, $this->image_full_path, $image_quality);
|
170 |
+
|
171 |
+
// Free up memory (imagedestroy does not delete files):
|
172 |
+
@imagedestroy($this->image);
|
173 |
+
@imagedestroy($new_img);
|
174 |
+
ini_restore('memory_limit');
|
175 |
+
|
176 |
+
}
|
177 |
+
|
178 |
+
|
179 |
+
|
180 |
+
}
|
181 |
+
|
182 |
+
|
183 |
+
|
composer.json
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"require": {
|
3 |
+
|
4 |
+
"aannnaa7/aws-sdk-php-minimized": "dev-master",
|
5 |
+
"wyrihaximus/react-guzzle-psr7": "^2.0"
|
6 |
+
},
|
7 |
+
"config": {
|
8 |
+
"preferred-install": "dist"
|
9 |
+
}
|
10 |
+
|
11 |
+
}
|
12 |
+
|
13 |
+
|
composer.lock
ADDED
@@ -0,0 +1,1181 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"_readme": [
|
3 |
+
"This file locks the dependencies of your project to a known state",
|
4 |
+
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
5 |
+
"This file is @generated automatically"
|
6 |
+
],
|
7 |
+
"hash": "c075045db9e0aa65d11e300b502a12ea",
|
8 |
+
"content-hash": "f780e41ceab8da74f86ee7466feb6eed",
|
9 |
+
"packages": [
|
10 |
+
{
|
11 |
+
"name": "aannnaa7/aws-sdk-php-minimized",
|
12 |
+
"version": "dev-master",
|
13 |
+
"source": {
|
14 |
+
"type": "git",
|
15 |
+
"url": "https://github.com/aannnaa7/aws-sdk-php.git",
|
16 |
+
"reference": "cad6966faac81f79e6afec39c2ebf806b9dfeba7"
|
17 |
+
},
|
18 |
+
"dist": {
|
19 |
+
"type": "zip",
|
20 |
+
"url": "https://api.github.com/repos/aannnaa7/aws-sdk-php/zipball/cad6966faac81f79e6afec39c2ebf806b9dfeba7",
|
21 |
+
"reference": "cad6966faac81f79e6afec39c2ebf806b9dfeba7",
|
22 |
+
"shasum": ""
|
23 |
+
},
|
24 |
+
"require": {
|
25 |
+
"guzzlehttp/guzzle": "~5.3|~6.0.1|~6.1",
|
26 |
+
"guzzlehttp/promises": "~1.0",
|
27 |
+
"guzzlehttp/psr7": "~1.0",
|
28 |
+
"mtdowling/jmespath.php": "~2.2",
|
29 |
+
"php": ">=5.5"
|
30 |
+
},
|
31 |
+
"require-dev": {
|
32 |
+
"andrewsville/php-token-reflection": "^1.4",
|
33 |
+
"aws/aws-php-sns-message-validator": "~1.0",
|
34 |
+
"behat/behat": "~3.0",
|
35 |
+
"doctrine/cache": "~1.4",
|
36 |
+
"ext-dom": "*",
|
37 |
+
"ext-json": "*",
|
38 |
+
"ext-openssl": "*",
|
39 |
+
"ext-pcre": "*",
|
40 |
+
"ext-simplexml": "*",
|
41 |
+
"ext-spl": "*",
|
42 |
+
"nette/neon": "^2.3",
|
43 |
+
"phpunit/phpunit": "~4.0"
|
44 |
+
},
|
45 |
+
"suggest": {
|
46 |
+
"doctrine/cache": "To use the DoctrineCacheAdapter",
|
47 |
+
"ext-curl": "To send requests using cURL",
|
48 |
+
"ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages"
|
49 |
+
},
|
50 |
+
"type": "library",
|
51 |
+
"extra": {
|
52 |
+
"branch-alias": {
|
53 |
+
"dev-master": "3.0-dev"
|
54 |
+
}
|
55 |
+
},
|
56 |
+
"autoload": {
|
57 |
+
"psr-4": {
|
58 |
+
"Aws\\": "src/"
|
59 |
+
},
|
60 |
+
"files": [
|
61 |
+
"src/functions.php"
|
62 |
+
]
|
63 |
+
},
|
64 |
+
"notification-url": "https://packagist.org/downloads/",
|
65 |
+
"license": [
|
66 |
+
"Apache-2.0"
|
67 |
+
],
|
68 |
+
"description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project private use only",
|
69 |
+
"homepage": "http://aws.amazon.com/sdkforphp",
|
70 |
+
"keywords": [
|
71 |
+
"amazon",
|
72 |
+
"aws",
|
73 |
+
"cloud",
|
74 |
+
"dynamodb",
|
75 |
+
"ec2",
|
76 |
+
"glacier",
|
77 |
+
"s3",
|
78 |
+
"sdk"
|
79 |
+
],
|
80 |
+
"time": "2017-07-04 11:16:05"
|
81 |
+
},
|
82 |
+
{
|
83 |
+
"name": "clue/buzz-react",
|
84 |
+
"version": "v1.1.0",
|
85 |
+
"source": {
|
86 |
+
"type": "git",
|
87 |
+
"url": "https://github.com/clue/php-buzz-react.git",
|
88 |
+
"reference": "693c96d35f0cd0e4f0e1a51b976433a91792eff9"
|
89 |
+
},
|
90 |
+
"dist": {
|
91 |
+
"type": "zip",
|
92 |
+
"url": "https://api.github.com/repos/clue/php-buzz-react/zipball/693c96d35f0cd0e4f0e1a51b976433a91792eff9",
|
93 |
+
"reference": "693c96d35f0cd0e4f0e1a51b976433a91792eff9",
|
94 |
+
"shasum": ""
|
95 |
+
},
|
96 |
+
"require": {
|
97 |
+
"php": ">=5.3",
|
98 |
+
"psr/http-message": "^1.0",
|
99 |
+
"react/dns": "^0.4.1 || ^0.3",
|
100 |
+
"react/event-loop": "^0.4 || ^0.3",
|
101 |
+
"react/http-client": "^0.4 || ^0.3",
|
102 |
+
"react/promise": "^2 || ^1.1",
|
103 |
+
"react/socket-client": "^0.5 || ^0.4.5",
|
104 |
+
"react/stream": "^0.4 || ^0.3.1",
|
105 |
+
"ringcentral/psr7": "^1.2"
|
106 |
+
},
|
107 |
+
"require-dev": {
|
108 |
+
"clue/block-react": "^1.0",
|
109 |
+
"phpunit/phpunit": "^4.5"
|
110 |
+
},
|
111 |
+
"type": "library",
|
112 |
+
"autoload": {
|
113 |
+
"psr-4": {
|
114 |
+
"Clue\\React\\Buzz\\": "src/"
|
115 |
+
}
|
116 |
+
},
|
117 |
+
"notification-url": "https://packagist.org/downloads/",
|
118 |
+
"license": [
|
119 |
+
"MIT"
|
120 |
+
],
|
121 |
+
"authors": [
|
122 |
+
{
|
123 |
+
"name": "Christian Lück",
|
124 |
+
"email": "christian@lueck.tv"
|
125 |
+
}
|
126 |
+
],
|
127 |
+
"description": "Simple, async HTTP client for concurrently processing any number of HTTP requests, built on top of React PHP",
|
128 |
+
"homepage": "https://github.com/clue/php-buzz-react",
|
129 |
+
"keywords": [
|
130 |
+
"async",
|
131 |
+
"http",
|
132 |
+
"http client",
|
133 |
+
"reactphp"
|
134 |
+
],
|
135 |
+
"time": "2016-10-21 10:29:37"
|
136 |
+
},
|
137 |
+
{
|
138 |
+
"name": "clue/http-proxy-react",
|
139 |
+
"version": "v0.1.0",
|
140 |
+
"source": {
|
141 |
+
"type": "git",
|
142 |
+
"url": "https://github.com/clue/php-http-proxy-react.git",
|
143 |
+
"reference": "c4098cbe6f5b22812c31b550dfd8c9038ac0064c"
|
144 |
+
},
|
145 |
+
"dist": {
|
146 |
+
"type": "zip",
|
147 |
+
"url": "https://api.github.com/repos/clue/php-http-proxy-react/zipball/c4098cbe6f5b22812c31b550dfd8c9038ac0064c",
|
148 |
+
"reference": "c4098cbe6f5b22812c31b550dfd8c9038ac0064c",
|
149 |
+
"shasum": ""
|
150 |
+
},
|
151 |
+
"require": {
|
152 |
+
"php": ">=5.3",
|
153 |
+
"react/event-loop": "^0.4 || ^0.3",
|
154 |
+
"react/promise": " ^2.1 || ^1.2",
|
155 |
+
"react/socket-client": "^0.5 || ^0.4 || ^0.3",
|
156 |
+
"react/stream": "^0.4 || ^0.3",
|
157 |
+
"ringcentral/psr7": "^1.2"
|
158 |
+
},
|
159 |
+
"require-dev": {
|
160 |
+
"clue/block-react": "^1.1",
|
161 |
+
"react/socket-client": "^0.5"
|
162 |
+
},
|
163 |
+
"type": "library",
|
164 |
+
"autoload": {
|
165 |
+
"psr-4": {
|
166 |
+
"Clue\\React\\HttpProxy\\": "src/"
|
167 |
+
}
|
168 |
+
},
|
169 |
+
"notification-url": "https://packagist.org/downloads/",
|
170 |
+
"license": [
|
171 |
+
"MIT"
|
172 |
+
],
|
173 |
+
"authors": [
|
174 |
+
{
|
175 |
+
"name": "Christian Lück",
|
176 |
+
"email": "christian@lueck.tv"
|
177 |
+
}
|
178 |
+
],
|
179 |
+
"description": "Async HTTP CONNECT proxy connector, use any TCP/IP protocol through an HTTP proxy server, built on top of React PHP",
|
180 |
+
"homepage": "https://github.com/clue/php-http-proxy-react",
|
181 |
+
"keywords": [
|
182 |
+
"async",
|
183 |
+
"connect",
|
184 |
+
"http",
|
185 |
+
"proxy",
|
186 |
+
"reactphp"
|
187 |
+
],
|
188 |
+
"time": "2016-11-01 19:25:52"
|
189 |
+
},
|
190 |
+
{
|
191 |
+
"name": "clue/socks-react",
|
192 |
+
"version": "v0.4.0",
|
193 |
+
"source": {
|
194 |
+
"type": "git",
|
195 |
+
"url": "https://github.com/clue/php-socks-react.git",
|
196 |
+
"reference": "ad36da8c0a59493842023a55b54cbf0f7f204085"
|
197 |
+
},
|
198 |
+
"dist": {
|
199 |
+
"type": "zip",
|
200 |
+
"url": "https://api.github.com/repos/clue/php-socks-react/zipball/ad36da8c0a59493842023a55b54cbf0f7f204085",
|
201 |
+
"reference": "ad36da8c0a59493842023a55b54cbf0f7f204085",
|
202 |
+
"shasum": ""
|
203 |
+
},
|
204 |
+
"require": {
|
205 |
+
"evenement/evenement": "~1.0|~2.0",
|
206 |
+
"php": ">=5.3",
|
207 |
+
"react/dns": "0.3.*|0.4.*",
|
208 |
+
"react/event-loop": "0.3.*|0.4.*",
|
209 |
+
"react/promise": "~1.0|~2.0",
|
210 |
+
"react/socket": "0.3.*|0.4.*",
|
211 |
+
"react/socket-client": "^0.5",
|
212 |
+
"react/stream": "0.3.*|0.4.*"
|
213 |
+
},
|
214 |
+
"type": "library",
|
215 |
+
"autoload": {
|
216 |
+
"psr-4": {
|
217 |
+
"Clue\\React\\Socks\\": "src"
|
218 |
+
}
|
219 |
+
},
|
220 |
+
"notification-url": "https://packagist.org/downloads/",
|
221 |
+
"license": [
|
222 |
+
"MIT"
|
223 |
+
],
|
224 |
+
"authors": [
|
225 |
+
{
|
226 |
+
"name": "Christian Lück",
|
227 |
+
"email": "christian@lueck.tv"
|
228 |
+
}
|
229 |
+
],
|
230 |
+
"description": "Async SOCKS proxy client and server (SOCKS4, SOCKS4a and SOCKS5)",
|
231 |
+
"homepage": "https://github.com/clue/php-socks-react",
|
232 |
+
"keywords": [
|
233 |
+
"async",
|
234 |
+
"react",
|
235 |
+
"socks client",
|
236 |
+
"socks protocol",
|
237 |
+
"socks server",
|
238 |
+
"tcp tunnel"
|
239 |
+
],
|
240 |
+
"time": "2016-03-19 16:55:13"
|
241 |
+
},
|
242 |
+
{
|
243 |
+
"name": "evenement/evenement",
|
244 |
+
"version": "v2.1.0",
|
245 |
+
"source": {
|
246 |
+
"type": "git",
|
247 |
+
"url": "https://github.com/igorw/evenement.git",
|
248 |
+
"reference": "6ba9a777870ab49f417e703229d53931ed40fd7a"
|
249 |
+
},
|
250 |
+
"dist": {
|
251 |
+
"type": "zip",
|
252 |
+
"url": "https://api.github.com/repos/igorw/evenement/zipball/6ba9a777870ab49f417e703229d53931ed40fd7a",
|
253 |
+
"reference": "6ba9a777870ab49f417e703229d53931ed40fd7a",
|
254 |
+
"shasum": ""
|
255 |
+
},
|
256 |
+
"require": {
|
257 |
+
"php": ">=5.4.0"
|
258 |
+
},
|
259 |
+
"require-dev": {
|
260 |
+
"phpunit/phpunit": "^6.0||^5.7||^4.8.35"
|
261 |
+
},
|
262 |
+
"type": "library",
|
263 |
+
"extra": {
|
264 |
+
"branch-alias": {
|
265 |
+
"dev-master": "2.0-dev"
|
266 |
+
}
|
267 |
+
},
|
268 |
+
"autoload": {
|
269 |
+
"psr-0": {
|
270 |
+
"Evenement": "src"
|
271 |
+
}
|
272 |
+
},
|
273 |
+
"notification-url": "https://packagist.org/downloads/",
|
274 |
+
"license": [
|
275 |
+
"MIT"
|
276 |
+
],
|
277 |
+
"authors": [
|
278 |
+
{
|
279 |
+
"name": "Igor Wiedler",
|
280 |
+
"email": "igor@wiedler.ch"
|
281 |
+
}
|
282 |
+
],
|
283 |
+
"description": "Événement is a very simple event dispatching library for PHP",
|
284 |
+
"keywords": [
|
285 |
+
"event-dispatcher",
|
286 |
+
"event-emitter"
|
287 |
+
],
|
288 |
+
"time": "2017-07-17 17:39:19"
|
289 |
+
},
|
290 |
+
{
|
291 |
+
"name": "guzzlehttp/guzzle",
|
292 |
+
"version": "6.3.0",
|
293 |
+
"source": {
|
294 |
+
"type": "git",
|
295 |
+
"url": "https://github.com/guzzle/guzzle.git",
|
296 |
+
"reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699"
|
297 |
+
},
|
298 |
+
"dist": {
|
299 |
+
"type": "zip",
|
300 |
+
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/f4db5a78a5ea468d4831de7f0bf9d9415e348699",
|
301 |
+
"reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699",
|
302 |
+
"shasum": ""
|
303 |
+
},
|
304 |
+
"require": {
|
305 |
+
"guzzlehttp/promises": "^1.0",
|
306 |
+
"guzzlehttp/psr7": "^1.4",
|
307 |
+
"php": ">=5.5"
|
308 |
+
},
|
309 |
+
"require-dev": {
|
310 |
+
"ext-curl": "*",
|
311 |
+
"phpunit/phpunit": "^4.0 || ^5.0",
|
312 |
+
"psr/log": "^1.0"
|
313 |
+
},
|
314 |
+
"suggest": {
|
315 |
+
"psr/log": "Required for using the Log middleware"
|
316 |
+
},
|
317 |
+
"type": "library",
|
318 |
+
"extra": {
|
319 |
+
"branch-alias": {
|
320 |
+
"dev-master": "6.2-dev"
|
321 |
+
}
|
322 |
+
},
|
323 |
+
"autoload": {
|
324 |
+
"files": [
|
325 |
+
"src/functions_include.php"
|
326 |
+
],
|
327 |
+
"psr-4": {
|
328 |
+
"GuzzleHttp\\": "src/"
|
329 |
+
}
|
330 |
+
},
|
331 |
+
"notification-url": "https://packagist.org/downloads/",
|
332 |
+
"license": [
|
333 |
+
"MIT"
|
334 |
+
],
|
335 |
+
"authors": [
|
336 |
+
{
|
337 |
+
"name": "Michael Dowling",
|
338 |
+
"email": "mtdowling@gmail.com",
|
339 |
+
"homepage": "https://github.com/mtdowling"
|
340 |
+
}
|
341 |
+
],
|
342 |
+
"description": "Guzzle is a PHP HTTP client library",
|
343 |
+
"homepage": "http://guzzlephp.org/",
|
344 |
+
"keywords": [
|
345 |
+
"client",
|
346 |
+
"curl",
|
347 |
+
"framework",
|
348 |
+
"http",
|
349 |
+
"http client",
|
350 |
+
"rest",
|
351 |
+
"web service"
|
352 |
+
],
|
353 |
+
"time": "2017-06-22 18:50:49"
|
354 |
+
},
|
355 |
+
{
|
356 |
+
"name": "guzzlehttp/promises",
|
357 |
+
"version": "v1.3.1",
|
358 |
+
"source": {
|
359 |
+
"type": "git",
|
360 |
+
"url": "https://github.com/guzzle/promises.git",
|
361 |
+
"reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
|
362 |
+
},
|
363 |
+
"dist": {
|
364 |
+
"type": "zip",
|
365 |
+
"url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
|
366 |
+
"reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
|
367 |
+
"shasum": ""
|
368 |
+
},
|
369 |
+
"require": {
|
370 |
+
"php": ">=5.5.0"
|
371 |
+
},
|
372 |
+
"require-dev": {
|
373 |
+
"phpunit/phpunit": "^4.0"
|
374 |
+
},
|
375 |
+
"type": "library",
|
376 |
+
"extra": {
|
377 |
+
"branch-alias": {
|
378 |
+
"dev-master": "1.4-dev"
|
379 |
+
}
|
380 |
+
},
|
381 |
+
"autoload": {
|
382 |
+
"psr-4": {
|
383 |
+
"GuzzleHttp\\Promise\\": "src/"
|
384 |
+
},
|
385 |
+
"files": [
|
386 |
+
"src/functions_include.php"
|
387 |
+
]
|
388 |
+
},
|
389 |
+
"notification-url": "https://packagist.org/downloads/",
|
390 |
+
"license": [
|
391 |
+
"MIT"
|
392 |
+
],
|
393 |
+
"authors": [
|
394 |
+
{
|
395 |
+
"name": "Michael Dowling",
|
396 |
+
"email": "mtdowling@gmail.com",
|
397 |
+
"homepage": "https://github.com/mtdowling"
|
398 |
+
}
|
399 |
+
],
|
400 |
+
"description": "Guzzle promises library",
|
401 |
+
"keywords": [
|
402 |
+
"promise"
|
403 |
+
],
|
404 |
+
"time": "2016-12-20 10:07:11"
|
405 |
+
},
|
406 |
+
{
|
407 |
+
"name": "guzzlehttp/psr7",
|
408 |
+
"version": "1.4.2",
|
409 |
+
"source": {
|
410 |
+
"type": "git",
|
411 |
+
"url": "https://github.com/guzzle/psr7.git",
|
412 |
+
"reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c"
|
413 |
+
},
|
414 |
+
"dist": {
|
415 |
+
"type": "zip",
|
416 |
+
"url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
|
417 |
+
"reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
|
418 |
+
"shasum": ""
|
419 |
+
},
|
420 |
+
"require": {
|
421 |
+
"php": ">=5.4.0",
|
422 |
+
"psr/http-message": "~1.0"
|
423 |
+
},
|
424 |
+
"provide": {
|
425 |
+
"psr/http-message-implementation": "1.0"
|
426 |
+
},
|
427 |
+
"require-dev": {
|
428 |
+
"phpunit/phpunit": "~4.0"
|
429 |
+
},
|
430 |
+
"type": "library",
|
431 |
+
"extra": {
|
432 |
+
"branch-alias": {
|
433 |
+
"dev-master": "1.4-dev"
|
434 |
+
}
|
435 |
+
},
|
436 |
+
"autoload": {
|
437 |
+
"psr-4": {
|
438 |
+
"GuzzleHttp\\Psr7\\": "src/"
|
439 |
+
},
|
440 |
+
"files": [
|
441 |
+
"src/functions_include.php"
|
442 |
+
]
|
443 |
+
},
|
444 |
+
"notification-url": "https://packagist.org/downloads/",
|
445 |
+
"license": [
|
446 |
+
"MIT"
|
447 |
+
],
|
448 |
+
"authors": [
|
449 |
+
{
|
450 |
+
"name": "Michael Dowling",
|
451 |
+
"email": "mtdowling@gmail.com",
|
452 |
+
"homepage": "https://github.com/mtdowling"
|
453 |
+
},
|
454 |
+
{
|
455 |
+
"name": "Tobias Schultze",
|
456 |
+
"homepage": "https://github.com/Tobion"
|
457 |
+
}
|
458 |
+
],
|
459 |
+
"description": "PSR-7 message implementation that also provides common utility methods",
|
460 |
+
"keywords": [
|
461 |
+
"http",
|
462 |
+
"message",
|
463 |
+
"request",
|
464 |
+
"response",
|
465 |
+
"stream",
|
466 |
+
"uri",
|
467 |
+
"url"
|
468 |
+
],
|
469 |
+
"time": "2017-03-20 17:10:46"
|
470 |
+
},
|
471 |
+
{
|
472 |
+
"name": "mtdowling/jmespath.php",
|
473 |
+
"version": "2.4.0",
|
474 |
+
"source": {
|
475 |
+
"type": "git",
|
476 |
+
"url": "https://github.com/jmespath/jmespath.php.git",
|
477 |
+
"reference": "adcc9531682cf87dfda21e1fd5d0e7a41d292fac"
|
478 |
+
},
|
479 |
+
"dist": {
|
480 |
+
"type": "zip",
|
481 |
+
"url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/adcc9531682cf87dfda21e1fd5d0e7a41d292fac",
|
482 |
+
"reference": "adcc9531682cf87dfda21e1fd5d0e7a41d292fac",
|
483 |
+
"shasum": ""
|
484 |
+
},
|
485 |
+
"require": {
|
486 |
+
"php": ">=5.4.0"
|
487 |
+
},
|
488 |
+
"require-dev": {
|
489 |
+
"phpunit/phpunit": "~4.0"
|
490 |
+
},
|
491 |
+
"bin": [
|
492 |
+
"bin/jp.php"
|
493 |
+
],
|
494 |
+
"type": "library",
|
495 |
+
"extra": {
|
496 |
+
"branch-alias": {
|
497 |
+
"dev-master": "2.0-dev"
|
498 |
+
}
|
499 |
+
},
|
500 |
+
"autoload": {
|
501 |
+
"psr-4": {
|
502 |
+
"JmesPath\\": "src/"
|
503 |
+
},
|
504 |
+
"files": [
|
505 |
+
"src/JmesPath.php"
|
506 |
+
]
|
507 |
+
},
|
508 |
+
"notification-url": "https://packagist.org/downloads/",
|
509 |
+
"license": [
|
510 |
+
"MIT"
|
511 |
+
],
|
512 |
+
"authors": [
|
513 |
+
{
|
514 |
+
"name": "Michael Dowling",
|
515 |
+
"email": "mtdowling@gmail.com",
|
516 |
+
"homepage": "https://github.com/mtdowling"
|
517 |
+
}
|
518 |
+
],
|
519 |
+
"description": "Declaratively specify how to extract elements from a JSON document",
|
520 |
+
"keywords": [
|
521 |
+
"json",
|
522 |
+
"jsonpath"
|
523 |
+
],
|
524 |
+
"time": "2016-12-03 22:08:25"
|
525 |
+
},
|
526 |
+
{
|
527 |
+
"name": "psr/http-message",
|
528 |
+
"version": "1.0.1",
|
529 |
+
"source": {
|
530 |
+
"type": "git",
|
531 |
+
"url": "https://github.com/php-fig/http-message.git",
|
532 |
+
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
|
533 |
+
},
|
534 |
+
"dist": {
|
535 |
+
"type": "zip",
|
536 |
+
"url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
|
537 |
+
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
|
538 |
+
"shasum": ""
|
539 |
+
},
|
540 |
+
"require": {
|
541 |
+
"php": ">=5.3.0"
|
542 |
+
},
|
543 |
+
"type": "library",
|
544 |
+
"extra": {
|
545 |
+
"branch-alias": {
|
546 |
+
"dev-master": "1.0.x-dev"
|
547 |
+
}
|
548 |
+
},
|
549 |
+
"autoload": {
|
550 |
+
"psr-4": {
|
551 |
+
"Psr\\Http\\Message\\": "src/"
|
552 |
+
}
|
553 |
+
},
|
554 |
+
"notification-url": "https://packagist.org/downloads/",
|
555 |
+
"license": [
|
556 |
+
"MIT"
|
557 |
+
],
|
558 |
+
"authors": [
|
559 |
+
{
|
560 |
+
"name": "PHP-FIG",
|
561 |
+
"homepage": "http://www.php-fig.org/"
|
562 |
+
}
|
563 |
+
],
|
564 |
+
"description": "Common interface for HTTP messages",
|
565 |
+
"homepage": "https://github.com/php-fig/http-message",
|
566 |
+
"keywords": [
|
567 |
+
"http",
|
568 |
+
"http-message",
|
569 |
+
"psr",
|
570 |
+
"psr-7",
|
571 |
+
"request",
|
572 |
+
"response"
|
573 |
+
],
|
574 |
+
"time": "2016-08-06 14:39:51"
|
575 |
+
},
|
576 |
+
{
|
577 |
+
"name": "react/cache",
|
578 |
+
"version": "v0.4.1",
|
579 |
+
"source": {
|
580 |
+
"type": "git",
|
581 |
+
"url": "https://github.com/reactphp/cache.git",
|
582 |
+
"reference": "558f614891341b1d817a8cdf9a358948ec49638f"
|
583 |
+
},
|
584 |
+
"dist": {
|
585 |
+
"type": "zip",
|
586 |
+
"url": "https://api.github.com/repos/reactphp/cache/zipball/558f614891341b1d817a8cdf9a358948ec49638f",
|
587 |
+
"reference": "558f614891341b1d817a8cdf9a358948ec49638f",
|
588 |
+
"shasum": ""
|
589 |
+
},
|
590 |
+
"require": {
|
591 |
+
"php": ">=5.3.0",
|
592 |
+
"react/promise": "~2.0|~1.1"
|
593 |
+
},
|
594 |
+
"type": "library",
|
595 |
+
"autoload": {
|
596 |
+
"psr-4": {
|
597 |
+
"React\\Cache\\": "src\\"
|
598 |
+
}
|
599 |
+
},
|
600 |
+
"notification-url": "https://packagist.org/downloads/",
|
601 |
+
"license": [
|
602 |
+
"MIT"
|
603 |
+
],
|
604 |
+
"description": "Async caching.",
|
605 |
+
"keywords": [
|
606 |
+
"cache"
|
607 |
+
],
|
608 |
+
"time": "2016-02-25 18:17:16"
|
609 |
+
},
|
610 |
+
{
|
611 |
+
"name": "react/dns",
|
612 |
+
"version": "v0.4.10",
|
613 |
+
"source": {
|
614 |
+
"type": "git",
|
615 |
+
"url": "https://github.com/reactphp/dns.git",
|
616 |
+
"reference": "457fbc43c04e9612573a24245d950c091c0fc40e"
|
617 |
+
},
|
618 |
+
"dist": {
|
619 |
+
"type": "zip",
|
620 |
+
"url": "https://api.github.com/repos/reactphp/dns/zipball/457fbc43c04e9612573a24245d950c091c0fc40e",
|
621 |
+
"reference": "457fbc43c04e9612573a24245d950c091c0fc40e",
|
622 |
+
"shasum": ""
|
623 |
+
},
|
624 |
+
"require": {
|
625 |
+
"php": ">=5.3.0",
|
626 |
+
"react/cache": "~0.4.0|~0.3.0",
|
627 |
+
"react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5",
|
628 |
+
"react/promise": "^2.1 || ^1.2.1",
|
629 |
+
"react/promise-timer": "^1.2",
|
630 |
+
"react/socket": "^1.0 || ^0.8 || ^0.7 || ^0.6 || ^0.5 || ^0.4.4",
|
631 |
+
"react/stream": "^1.0 || ^0.7 || ^0.6 || ^0.5 || ^0.4.5"
|
632 |
+
},
|
633 |
+
"require-dev": {
|
634 |
+
"clue/block-react": "^1.2",
|
635 |
+
"phpunit/phpunit": "^5.0 || ^4.8.10"
|
636 |
+
},
|
637 |
+
"type": "library",
|
638 |
+
"autoload": {
|
639 |
+
"psr-4": {
|
640 |
+
"React\\Dns\\": "src"
|
641 |
+
}
|
642 |
+
},
|
643 |
+
"notification-url": "https://packagist.org/downloads/",
|
644 |
+
"license": [
|
645 |
+
"MIT"
|
646 |
+
],
|
647 |
+
"description": "Async DNS resolver for ReactPHP",
|
648 |
+
"keywords": [
|
649 |
+
"async",
|
650 |
+
"dns",
|
651 |
+
"dns-resolver",
|
652 |
+
"reactphp"
|
653 |
+
],
|
654 |
+
"time": "2017-08-10 12:31:41"
|
655 |
+
},
|
656 |
+
{
|
657 |
+
"name": "react/event-loop",
|
658 |
+
"version": "v0.4.3",
|
659 |
+
"source": {
|
660 |
+
"type": "git",
|
661 |
+
"url": "https://github.com/reactphp/event-loop.git",
|
662 |
+
"reference": "8bde03488ee897dc6bb3d91e4e17c353f9c5252f"
|
663 |
+
},
|
664 |
+
"dist": {
|
665 |
+
"type": "zip",
|
666 |
+
"url": "https://api.github.com/repos/reactphp/event-loop/zipball/8bde03488ee897dc6bb3d91e4e17c353f9c5252f",
|
667 |
+
"reference": "8bde03488ee897dc6bb3d91e4e17c353f9c5252f",
|
668 |
+
"shasum": ""
|
669 |
+
},
|
670 |
+
"require": {
|
671 |
+
"php": ">=5.4.0"
|
672 |
+
},
|
673 |
+
"require-dev": {
|
674 |
+
"phpunit/phpunit": "~4.8"
|
675 |
+
},
|
676 |
+
"suggest": {
|
677 |
+
"ext-event": "~1.0",
|
678 |
+
"ext-libev": "*",
|
679 |
+
"ext-libevent": ">=0.1.0"
|
680 |
+
},
|
681 |
+
"type": "library",
|
682 |
+
"autoload": {
|
683 |
+
"psr-4": {
|
684 |
+
"React\\EventLoop\\": "src"
|
685 |
+
}
|
686 |
+
},
|
687 |
+
"notification-url": "https://packagist.org/downloads/",
|
688 |
+
"license": [
|
689 |
+
"MIT"
|
690 |
+
],
|
691 |
+
"description": "Event loop abstraction layer that libraries can use for evented I/O.",
|
692 |
+
"keywords": [
|
693 |
+
"asynchronous",
|
694 |
+
"event-loop"
|
695 |
+
],
|
696 |
+
"time": "2017-04-27 10:56:23"
|
697 |
+
},
|
698 |
+
{
|
699 |
+
"name": "react/http-client",
|
700 |
+
"version": "v0.4.17",
|
701 |
+
"source": {
|
702 |
+
"type": "git",
|
703 |
+
"url": "https://github.com/reactphp/http-client.git",
|
704 |
+
"reference": "75ee8a113f156834aaabfe0055e8db531cb4892c"
|
705 |
+
},
|
706 |
+
"dist": {
|
707 |
+
"type": "zip",
|
708 |
+
"url": "https://api.github.com/repos/reactphp/http-client/zipball/75ee8a113f156834aaabfe0055e8db531cb4892c",
|
709 |
+
"reference": "75ee8a113f156834aaabfe0055e8db531cb4892c",
|
710 |
+
"shasum": ""
|
711 |
+
},
|
712 |
+
"require": {
|
713 |
+
"evenement/evenement": "~2.0",
|
714 |
+
"guzzlehttp/psr7": "^1.0",
|
715 |
+
"php": ">=5.4.0",
|
716 |
+
"react/dns": "0.4.*",
|
717 |
+
"react/event-loop": "0.4.*",
|
718 |
+
"react/promise": "~2.2",
|
719 |
+
"react/socket-client": "^0.5 || ^0.4 || ^0.3",
|
720 |
+
"react/stream": "0.4.*"
|
721 |
+
},
|
722 |
+
"require-dev": {
|
723 |
+
"phpunit/phpunit": "^5.0 || ^4.8.10"
|
724 |
+
},
|
725 |
+
"type": "library",
|
726 |
+
"autoload": {
|
727 |
+
"psr-4": {
|
728 |
+
"React\\HttpClient\\": "src"
|
729 |
+
}
|
730 |
+
},
|
731 |
+
"notification-url": "https://packagist.org/downloads/",
|
732 |
+
"license": [
|
733 |
+
"MIT"
|
734 |
+
],
|
735 |
+
"description": "Asynchronous HTTP client library.",
|
736 |
+
"keywords": [
|
737 |
+
"http"
|
738 |
+
],
|
739 |
+
"time": "2017-03-20 09:55:48"
|
740 |
+
},
|
741 |
+
{
|
742 |
+
"name": "react/promise",
|
743 |
+
"version": "v2.5.1",
|
744 |
+
"source": {
|
745 |
+
"type": "git",
|
746 |
+
"url": "https://github.com/reactphp/promise.git",
|
747 |
+
"reference": "62785ae604c8d69725d693eb370e1d67e94c4053"
|
748 |
+
},
|
749 |
+
"dist": {
|
750 |
+
"type": "zip",
|
751 |
+
"url": "https://api.github.com/repos/reactphp/promise/zipball/62785ae604c8d69725d693eb370e1d67e94c4053",
|
752 |
+
"reference": "62785ae604c8d69725d693eb370e1d67e94c4053",
|
753 |
+
"shasum": ""
|
754 |
+
},
|
755 |
+
"require": {
|
756 |
+
"php": ">=5.4.0"
|
757 |
+
},
|
758 |
+
"require-dev": {
|
759 |
+
"phpunit/phpunit": "~4.8"
|
760 |
+
},
|
761 |
+
"type": "library",
|
762 |
+
"autoload": {
|
763 |
+
"psr-4": {
|
764 |
+
"React\\Promise\\": "src/"
|
765 |
+
},
|
766 |
+
"files": [
|
767 |
+
"src/functions_include.php"
|
768 |
+
]
|
769 |
+
},
|
770 |
+
"notification-url": "https://packagist.org/downloads/",
|
771 |
+
"license": [
|
772 |
+
"MIT"
|
773 |
+
],
|
774 |
+
"authors": [
|
775 |
+
{
|
776 |
+
"name": "Jan Sorgalla",
|
777 |
+
"email": "jsorgalla@gmail.com"
|
778 |
+
}
|
779 |
+
],
|
780 |
+
"description": "A lightweight implementation of CommonJS Promises/A for PHP",
|
781 |
+
"keywords": [
|
782 |
+
"promise",
|
783 |
+
"promises"
|
784 |
+
],
|
785 |
+
"time": "2017-03-25 12:08:31"
|
786 |
+
},
|
787 |
+
{
|
788 |
+
"name": "react/promise-timer",
|
789 |
+
"version": "v1.2.0",
|
790 |
+
"source": {
|
791 |
+
"type": "git",
|
792 |
+
"url": "https://github.com/reactphp/promise-timer.git",
|
793 |
+
"reference": "3bc527fbd1201a193ab41c19b9a770d71a3514af"
|
794 |
+
},
|
795 |
+
"dist": {
|
796 |
+
"type": "zip",
|
797 |
+
"url": "https://api.github.com/repos/reactphp/promise-timer/zipball/3bc527fbd1201a193ab41c19b9a770d71a3514af",
|
798 |
+
"reference": "3bc527fbd1201a193ab41c19b9a770d71a3514af",
|
799 |
+
"shasum": ""
|
800 |
+
},
|
801 |
+
"require": {
|
802 |
+
"php": ">=5.3",
|
803 |
+
"react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5",
|
804 |
+
"react/promise": "~2.1|~1.2"
|
805 |
+
},
|
806 |
+
"require-dev": {
|
807 |
+
"phpunit/phpunit": "^5.0 || ^4.8"
|
808 |
+
},
|
809 |
+
"type": "library",
|
810 |
+
"autoload": {
|
811 |
+
"psr-4": {
|
812 |
+
"React\\Promise\\Timer\\": "src/"
|
813 |
+
},
|
814 |
+
"files": [
|
815 |
+
"src/functions.php"
|
816 |
+
]
|
817 |
+
},
|
818 |
+
"notification-url": "https://packagist.org/downloads/",
|
819 |
+
"license": [
|
820 |
+
"MIT"
|
821 |
+
],
|
822 |
+
"authors": [
|
823 |
+
{
|
824 |
+
"name": "Christian Lück",
|
825 |
+
"email": "christian@lueck.tv"
|
826 |
+
}
|
827 |
+
],
|
828 |
+
"description": "Trivial timeout implementation for Promises",
|
829 |
+
"homepage": "https://github.com/react/promise-timer",
|
830 |
+
"keywords": [
|
831 |
+
"async",
|
832 |
+
"event-loop",
|
833 |
+
"promise",
|
834 |
+
"reactphp",
|
835 |
+
"timeout",
|
836 |
+
"timer"
|
837 |
+
],
|
838 |
+
"time": "2017-08-08 16:30:19"
|
839 |
+
},
|
840 |
+
{
|
841 |
+
"name": "react/socket",
|
842 |
+
"version": "v0.4.6",
|
843 |
+
"source": {
|
844 |
+
"type": "git",
|
845 |
+
"url": "https://github.com/reactphp/socket.git",
|
846 |
+
"reference": "cf074e53c974df52388ebd09710a9018894745d2"
|
847 |
+
},
|
848 |
+
"dist": {
|
849 |
+
"type": "zip",
|
850 |
+
"url": "https://api.github.com/repos/reactphp/socket/zipball/cf074e53c974df52388ebd09710a9018894745d2",
|
851 |
+
"reference": "cf074e53c974df52388ebd09710a9018894745d2",
|
852 |
+
"shasum": ""
|
853 |
+
},
|
854 |
+
"require": {
|
855 |
+
"evenement/evenement": "~2.0|~1.0",
|
856 |
+
"php": ">=5.3.0",
|
857 |
+
"react/event-loop": "0.4.*|0.3.*",
|
858 |
+
"react/promise": "^2.0 || ^1.1",
|
859 |
+
"react/stream": "^0.4.5"
|
860 |
+
},
|
861 |
+
"require-dev": {
|
862 |
+
"clue/block-react": "^1.1",
|
863 |
+
"phpunit/phpunit": "~4.8",
|
864 |
+
"react/socket-client": "^0.5.1"
|
865 |
+
},
|
866 |
+
"type": "library",
|
867 |
+
"autoload": {
|
868 |
+
"psr-4": {
|
869 |
+
"React\\Socket\\": "src"
|
870 |
+
}
|
871 |
+
},
|
872 |
+
"notification-url": "https://packagist.org/downloads/",
|
873 |
+
"license": [
|
874 |
+
"MIT"
|
875 |
+
],
|
876 |
+
"description": "Async, streaming plaintext TCP/IP and secure TLS socket server for React PHP",
|
877 |
+
"keywords": [
|
878 |
+
"Socket"
|
879 |
+
],
|
880 |
+
"time": "2017-01-26 09:23:38"
|
881 |
+
},
|
882 |
+
{
|
883 |
+
"name": "react/socket-client",
|
884 |
+
"version": "v0.5.3",
|
885 |
+
"source": {
|
886 |
+
"type": "git",
|
887 |
+
"url": "https://github.com/reactphp/socket-client.git",
|
888 |
+
"reference": "5570838d436f056695e9a5eaf01dd5f80386dd26"
|
889 |
+
},
|
890 |
+
"dist": {
|
891 |
+
"type": "zip",
|
892 |
+
"url": "https://api.github.com/repos/reactphp/socket-client/zipball/5570838d436f056695e9a5eaf01dd5f80386dd26",
|
893 |
+
"reference": "5570838d436f056695e9a5eaf01dd5f80386dd26",
|
894 |
+
"shasum": ""
|
895 |
+
},
|
896 |
+
"require": {
|
897 |
+
"php": ">=5.3.0",
|
898 |
+
"react/dns": "0.4.*|0.3.*",
|
899 |
+
"react/event-loop": "0.4.*|0.3.*",
|
900 |
+
"react/promise": "^2.1 || ^1.2",
|
901 |
+
"react/promise-timer": "~1.0",
|
902 |
+
"react/stream": "^0.4.5"
|
903 |
+
},
|
904 |
+
"require-dev": {
|
905 |
+
"clue/block-react": "^1.1"
|
906 |
+
},
|
907 |
+
"type": "library",
|
908 |
+
"autoload": {
|
909 |
+
"psr-4": {
|
910 |
+
"React\\SocketClient\\": "src"
|
911 |
+
}
|
912 |
+
},
|
913 |
+
"notification-url": "https://packagist.org/downloads/",
|
914 |
+
"license": [
|
915 |
+
"MIT"
|
916 |
+
],
|
917 |
+
"description": "Async connector to open TCP/IP and SSL/TLS based connections.",
|
918 |
+
"keywords": [
|
919 |
+
"Socket"
|
920 |
+
],
|
921 |
+
"time": "2016-12-24 11:19:15"
|
922 |
+
},
|
923 |
+
{
|
924 |
+
"name": "react/stream",
|
925 |
+
"version": "v0.4.6",
|
926 |
+
"source": {
|
927 |
+
"type": "git",
|
928 |
+
"url": "https://github.com/reactphp/stream.git",
|
929 |
+
"reference": "44dc7f51ea48624110136b535b9ba44fd7d0c1ee"
|
930 |
+
},
|
931 |
+
"dist": {
|
932 |
+
"type": "zip",
|
933 |
+
"url": "https://api.github.com/repos/reactphp/stream/zipball/44dc7f51ea48624110136b535b9ba44fd7d0c1ee",
|
934 |
+
"reference": "44dc7f51ea48624110136b535b9ba44fd7d0c1ee",
|
935 |
+
"shasum": ""
|
936 |
+
},
|
937 |
+
"require": {
|
938 |
+
"evenement/evenement": "^2.0|^1.0",
|
939 |
+
"php": ">=5.3.8"
|
940 |
+
},
|
941 |
+
"require-dev": {
|
942 |
+
"clue/stream-filter": "~1.2",
|
943 |
+
"react/event-loop": "^0.4|^0.3",
|
944 |
+
"react/promise": "^2.0|^1.0"
|
945 |
+
},
|
946 |
+
"suggest": {
|
947 |
+
"react/event-loop": "^0.4",
|
948 |
+
"react/promise": "^2.0"
|
949 |
+
},
|
950 |
+
"type": "library",
|
951 |
+
"autoload": {
|
952 |
+
"psr-4": {
|
953 |
+
"React\\Stream\\": "src"
|
954 |
+
}
|
955 |
+
},
|
956 |
+
"notification-url": "https://packagist.org/downloads/",
|
957 |
+
"license": [
|
958 |
+
"MIT"
|
959 |
+
],
|
960 |
+
"description": "Basic readable and writable stream interfaces that support piping.",
|
961 |
+
"keywords": [
|
962 |
+
"pipe",
|
963 |
+
"stream"
|
964 |
+
],
|
965 |
+
"time": "2017-01-25 14:44:14"
|
966 |
+
},
|
967 |
+
{
|
968 |
+
"name": "ringcentral/psr7",
|
969 |
+
"version": "1.2.1",
|
970 |
+
"source": {
|
971 |
+
"type": "git",
|
972 |
+
"url": "https://github.com/ringcentral/psr7.git",
|
973 |
+
"reference": "2594fb47cdc659f3fcf0aa1559b7355460555303"
|
974 |
+
},
|
975 |
+
"dist": {
|
976 |
+
"type": "zip",
|
977 |
+
"url": "https://api.github.com/repos/ringcentral/psr7/zipball/2594fb47cdc659f3fcf0aa1559b7355460555303",
|
978 |
+
"reference": "2594fb47cdc659f3fcf0aa1559b7355460555303",
|
979 |
+
"shasum": ""
|
980 |
+
},
|
981 |
+
"require": {
|
982 |
+
"php": ">=5.3",
|
983 |
+
"psr/http-message": "~1.0"
|
984 |
+
},
|
985 |
+
"provide": {
|
986 |
+
"psr/http-message-implementation": "1.0"
|
987 |
+
},
|
988 |
+
"require-dev": {
|
989 |
+
"phpunit/phpunit": "~4.0"
|
990 |
+
},
|
991 |
+
"type": "library",
|
992 |
+
"extra": {
|
993 |
+
"branch-alias": {
|
994 |
+
"dev-master": "1.0-dev"
|
995 |
+
}
|
996 |
+
},
|
997 |
+
"autoload": {
|
998 |
+
"psr-4": {
|
999 |
+
"RingCentral\\Psr7\\": "src/"
|
1000 |
+
},
|
1001 |
+
"files": [
|
1002 |
+
"src/functions_include.php"
|
1003 |
+
]
|
1004 |
+
},
|
1005 |
+
"notification-url": "https://packagist.org/downloads/",
|
1006 |
+
"license": [
|
1007 |
+
"MIT"
|
1008 |
+
],
|
1009 |
+
"authors": [
|
1010 |
+
{
|
1011 |
+
"name": "Michael Dowling",
|
1012 |
+
"email": "mtdowling@gmail.com",
|
1013 |
+
"homepage": "https://github.com/mtdowling"
|
1014 |
+
}
|
1015 |
+
],
|
1016 |
+
"description": "PSR-7 message implementation",
|
1017 |
+
"keywords": [
|
1018 |
+
"http",
|
1019 |
+
"message",
|
1020 |
+
"stream",
|
1021 |
+
"uri"
|
1022 |
+
],
|
1023 |
+
"time": "2016-03-25 17:36:49"
|
1024 |
+
},
|
1025 |
+
{
|
1026 |
+
"name": "wyrihaximus/react-guzzle-http-client",
|
1027 |
+
"version": "4.0.0",
|
1028 |
+
"source": {
|
1029 |
+
"type": "git",
|
1030 |
+
"url": "https://github.com/WyriHaximus/react-guzzle-http-client.git",
|
1031 |
+
"reference": "b487d7aaf3a7b928245b1d3719de4dff60af70a7"
|
1032 |
+
},
|
1033 |
+
"dist": {
|
1034 |
+
"type": "zip",
|
1035 |
+
"url": "https://api.github.com/repos/WyriHaximus/react-guzzle-http-client/zipball/b487d7aaf3a7b928245b1d3719de4dff60af70a7",
|
1036 |
+
"reference": "b487d7aaf3a7b928245b1d3719de4dff60af70a7",
|
1037 |
+
"shasum": ""
|
1038 |
+
},
|
1039 |
+
"require": {
|
1040 |
+
"clue/buzz-react": "^1.0",
|
1041 |
+
"clue/http-proxy-react": "^0.1.0",
|
1042 |
+
"clue/socks-react": "^0.4.0",
|
1043 |
+
"guzzlehttp/psr7": "^1.0",
|
1044 |
+
"php": "^5.4|^7.0",
|
1045 |
+
"psr/http-message": "^1.0",
|
1046 |
+
"react/dns": "^0.4.1",
|
1047 |
+
"react/http-client": "^0.4.9",
|
1048 |
+
"react/socket-client": "^0.5",
|
1049 |
+
"react/stream": "^0.4.2",
|
1050 |
+
"wyrihaximus/ticking-promise": "^1.6"
|
1051 |
+
},
|
1052 |
+
"require-dev": {
|
1053 |
+
"clue/block-react": "^1.1",
|
1054 |
+
"phake/phake": "~1.0.6",
|
1055 |
+
"phpunit/phpunit": "^5.0 || ^4.8",
|
1056 |
+
"squizlabs/php_codesniffer": "~1.5.0",
|
1057 |
+
"vectorface/dunit": "~2"
|
1058 |
+
},
|
1059 |
+
"type": "library",
|
1060 |
+
"autoload": {
|
1061 |
+
"psr-4": {
|
1062 |
+
"WyriHaximus\\React\\Guzzle\\HttpClient\\": "src/"
|
1063 |
+
}
|
1064 |
+
},
|
1065 |
+
"notification-url": "https://packagist.org/downloads/",
|
1066 |
+
"license": [
|
1067 |
+
"MIT"
|
1068 |
+
],
|
1069 |
+
"authors": [
|
1070 |
+
{
|
1071 |
+
"name": "Cees-Jan Kiewiet",
|
1072 |
+
"email": "ceesjank@gmail.com",
|
1073 |
+
"homepage": "http://wyrihaximus.net/"
|
1074 |
+
}
|
1075 |
+
],
|
1076 |
+
"description": "Asynchronous GuzzleRing adapter powered by react/http-client",
|
1077 |
+
"time": "2017-03-29 05:57:02"
|
1078 |
+
},
|
1079 |
+
{
|
1080 |
+
"name": "wyrihaximus/react-guzzle-psr7",
|
1081 |
+
"version": "2.0.0",
|
1082 |
+
"source": {
|
1083 |
+
"type": "git",
|
1084 |
+
"url": "https://github.com/WyriHaximus/react-guzzle-psr7.git",
|
1085 |
+
"reference": "9ed5d900558134b98897d9d9905b6d5c7ea79d7a"
|
1086 |
+
},
|
1087 |
+
"dist": {
|
1088 |
+
"type": "zip",
|
1089 |
+
"url": "https://api.github.com/repos/WyriHaximus/react-guzzle-psr7/zipball/9ed5d900558134b98897d9d9905b6d5c7ea79d7a",
|
1090 |
+
"reference": "9ed5d900558134b98897d9d9905b6d5c7ea79d7a",
|
1091 |
+
"shasum": ""
|
1092 |
+
},
|
1093 |
+
"require": {
|
1094 |
+
"guzzlehttp/guzzle": "^6.0",
|
1095 |
+
"php": "^5.5|^7.0",
|
1096 |
+
"wyrihaximus/react-guzzle-http-client": "^4.0"
|
1097 |
+
},
|
1098 |
+
"require-dev": {
|
1099 |
+
"phake/phake": "~1.0.6",
|
1100 |
+
"phpunit/phpunit": "^4.0|^5.0",
|
1101 |
+
"squizlabs/php_codesniffer": "~1.5.6",
|
1102 |
+
"vectorface/dunit": "^2.0"
|
1103 |
+
},
|
1104 |
+
"type": "library",
|
1105 |
+
"autoload": {
|
1106 |
+
"psr-4": {
|
1107 |
+
"WyriHaximus\\React\\GuzzlePsr7\\": "src/"
|
1108 |
+
}
|
1109 |
+
},
|
1110 |
+
"notification-url": "https://packagist.org/downloads/",
|
1111 |
+
"license": [
|
1112 |
+
"MIT"
|
1113 |
+
],
|
1114 |
+
"authors": [
|
1115 |
+
{
|
1116 |
+
"name": "Cees-Jan Kiewiet",
|
1117 |
+
"email": "ceesjank@gmail.com",
|
1118 |
+
"homepage": "http://wyrihaximus.net/"
|
1119 |
+
}
|
1120 |
+
],
|
1121 |
+
"description": "Asyncronous Guzzle (PSR7) adapter powered by react/http-client",
|
1122 |
+
"time": "2017-03-30 20:40:59"
|
1123 |
+
},
|
1124 |
+
{
|
1125 |
+
"name": "wyrihaximus/ticking-promise",
|
1126 |
+
"version": "1.6.1",
|
1127 |
+
"source": {
|
1128 |
+
"type": "git",
|
1129 |
+
"url": "https://github.com/WyriHaximus/TickingPromise.git",
|
1130 |
+
"reference": "8d26b1458e32c367ba6fb8ad5042046279acdb12"
|
1131 |
+
},
|
1132 |
+
"dist": {
|
1133 |
+
"type": "zip",
|
1134 |
+
"url": "https://api.github.com/repos/WyriHaximus/TickingPromise/zipball/8d26b1458e32c367ba6fb8ad5042046279acdb12",
|
1135 |
+
"reference": "8d26b1458e32c367ba6fb8ad5042046279acdb12",
|
1136 |
+
"shasum": ""
|
1137 |
+
},
|
1138 |
+
"require": {
|
1139 |
+
"react/event-loop": "^0.4",
|
1140 |
+
"react/promise": "~2.1"
|
1141 |
+
},
|
1142 |
+
"require-dev": {
|
1143 |
+
"phpunit/phpunit": "~4.4",
|
1144 |
+
"squizlabs/php_codesniffer": "^1.5.6",
|
1145 |
+
"vectorface/dunit": "~1.4"
|
1146 |
+
},
|
1147 |
+
"type": "library",
|
1148 |
+
"autoload": {
|
1149 |
+
"psr-4": {
|
1150 |
+
"WyriHaximus\\React\\": "src/"
|
1151 |
+
},
|
1152 |
+
"files": [
|
1153 |
+
"src/functions_include.php"
|
1154 |
+
]
|
1155 |
+
},
|
1156 |
+
"notification-url": "https://packagist.org/downloads/",
|
1157 |
+
"license": [
|
1158 |
+
"MIT"
|
1159 |
+
],
|
1160 |
+
"authors": [
|
1161 |
+
{
|
1162 |
+
"name": "Cees-Jan Kiewiet",
|
1163 |
+
"email": "ceesjank@gmail.com",
|
1164 |
+
"homepage": "http://wyrihaximus.net/"
|
1165 |
+
}
|
1166 |
+
],
|
1167 |
+
"description": "Wrapping ticks into a promise",
|
1168 |
+
"time": "2016-03-05 20:23:05"
|
1169 |
+
}
|
1170 |
+
],
|
1171 |
+
"packages-dev": [],
|
1172 |
+
"aliases": [],
|
1173 |
+
"minimum-stability": "stable",
|
1174 |
+
"stability-flags": {
|
1175 |
+
"aannnaa7/aws-sdk-php-minimized": 20
|
1176 |
+
},
|
1177 |
+
"prefer-stable": false,
|
1178 |
+
"prefer-lowest": false,
|
1179 |
+
"platform": [],
|
1180 |
+
"platform-dev": []
|
1181 |
+
}
|
includes/iowd-ajax.php
ADDED
@@ -0,0 +1,291 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
if (!defined('ABSPATH')) {
|
3 |
+
exit;
|
4 |
+
}
|
5 |
+
|
6 |
+
class IOWD_Ajax
|
7 |
+
{
|
8 |
+
|
9 |
+
/**
|
10 |
+
*
|
11 |
+
*/
|
12 |
+
|
13 |
+
public static function finish_bulk()
|
14 |
+
{
|
15 |
+
$abort = get_option("iowd_abort");
|
16 |
+
if (!$abort) {
|
17 |
+
$id = isset($_POST["postId"]) && $_POST["postId"] ? $_POST["postId"] : '';
|
18 |
+
$done = get_site_transient("iowd_done_" . $id);
|
19 |
+
|
20 |
+
$images_count_start = get_transient("iowd_images_count_start");
|
21 |
+
// get optimization data
|
22 |
+
$last_optimized_data = get_site_transient("iowd_last_optimized_data");
|
23 |
+
$last_optimized_data = $last_optimized_data ? json_decode($last_optimized_data, true) : array("image_size" => 0, "image_orig_size" => 0, "image_count" => 0);
|
24 |
+
|
25 |
+
if ($done) {
|
26 |
+
$response = array("status" => "ok");
|
27 |
+
if ($id) {
|
28 |
+
// get file type
|
29 |
+
$path = get_attached_file($id);
|
30 |
+
$type = strtolower(pathinfo($path, PATHINFO_EXTENSION));
|
31 |
+
global $wpdb;
|
32 |
+
$row = $wpdb->get_row("SELECT COUNT(*) AS image_count, SUM(image_orig_size) AS image_orig_size, SUM(image_size) AS image_size, post_id FROM " . $wpdb->prefix . "iowd_images WHERE post_id='" . $id."' GROUP BY post_id");
|
33 |
+
|
34 |
+
$reduced = $row->image_orig_size - $row->image_size;
|
35 |
+
$reduced_percent = $row->image_orig_size ? ($reduced / $row->image_orig_size) * 100 : 0;
|
36 |
+
$reduced_percent = number_format($reduced_percent, 2);
|
37 |
+
|
38 |
+
$sizes = IOWD_Helper::get_attachmnet_sizes($id);
|
39 |
+
$html = '<div class="iowd_' . $id . '">
|
40 |
+
<div><a href="#" onclick="iowdStatus(this);return false;" data-id="' . $id . '"><small>' . __("Stats", IOWD_PREFIX) . ' [+]</small></a></div>
|
41 |
+
<div>' . $row->image_count . " " . __("images optimized by ", IOWD_PREFIX) . IOWD_Util::format_bytes($reduced) . ' ( ' . number_format($reduced_percent, 2) . '% )</div>
|
42 |
+
<div>Size: ' . IOWD_Util::format_bytes($sizes["total"]) . '</div>';
|
43 |
+
if ($type != "webp" && get_option("wdd_user_hash")) {
|
44 |
+
$html .= '<a href="#" class="iowd-optimize" data-id="' . $id . '">
|
45 |
+
<span>' . __("Reoptimize", IOWD_PREFIX) . '</span>
|
46 |
+
<img src="' . IOWD_URL_IMG . '/spinner.gif" class="iowd-spinner" style="display:none; vertical-align:sub;" />
|
47 |
+
</a>';
|
48 |
+
}
|
49 |
+
$html .= '</div>';
|
50 |
+
$response["html"] = $html;
|
51 |
+
delete_site_transient("iowd_done_" . $id);
|
52 |
+
delete_transient("iowd_images_count_start");
|
53 |
+
}
|
54 |
+
} else {
|
55 |
+
$response = array("status" => "pending", "data" => array("all" => $images_count_start, "optimized" => $last_optimized_data["image_count"]));
|
56 |
+
}
|
57 |
+
} else {
|
58 |
+
delete_option("iowd_abort");
|
59 |
+
$response = array("status" => "abort", "data" => array("all" => 0, "optimized" => 0));
|
60 |
+
}
|
61 |
+
|
62 |
+
echo json_encode($response);
|
63 |
+
wp_die();
|
64 |
+
}
|
65 |
+
|
66 |
+
public static function abort()
|
67 |
+
{
|
68 |
+
delete_transient("iowd_images_count_start");
|
69 |
+
delete_transient("iowd_optimizing_post_ids");
|
70 |
+
global $wpdb;
|
71 |
+
$wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE '%iowd_done_%' OR option_name LIKE '%iowd_received_images_%'");
|
72 |
+
add_option("iowd_abort", 1);
|
73 |
+
wp_die();
|
74 |
+
}
|
75 |
+
|
76 |
+
public static function update_already_used()
|
77 |
+
{
|
78 |
+
$data = IOWD_Helper::limitation(true);
|
79 |
+
echo json_encode($data);
|
80 |
+
wp_die();
|
81 |
+
}
|
82 |
+
|
83 |
+
public static function get_attachment_data()
|
84 |
+
{
|
85 |
+
$ids = isset($_POST["ID"]) && $_POST["ID"] ? explode(",", $_POST["ID"]) : array();
|
86 |
+
$other = isset($_POST["other"]) && $_POST["other"] ? true : false;
|
87 |
+
$single = isset($_POST["bulk"]) ? false : true;
|
88 |
+
|
89 |
+
$optimize = new IOWD_Optimize($single);
|
90 |
+
$response = $optimize->get_temp_data($ids, $other, $single);
|
91 |
+
|
92 |
+
echo json_encode($response);
|
93 |
+
wp_die();
|
94 |
+
|
95 |
+
}
|
96 |
+
|
97 |
+
public static function optimize()
|
98 |
+
{
|
99 |
+
$single = isset($_POST["bulk"]) ? false : true;
|
100 |
+
$iteration = isset($_POST["iteration"]) ? $_POST["iteration"] : 0;
|
101 |
+
$id = isset($_POST["ID"]) && $_POST["ID"] ? $_POST["ID"] : '';
|
102 |
+
|
103 |
+
$optimize = new IOWD_Optimize($single);
|
104 |
+
$response = $optimize->optimize($iteration, $id);
|
105 |
+
|
106 |
+
echo json_encode($response);
|
107 |
+
wp_die();
|
108 |
+
|
109 |
+
}
|
110 |
+
|
111 |
+
public static function get_stats()
|
112 |
+
{
|
113 |
+
$optimized_data = array();
|
114 |
+
|
115 |
+
$post_id = isset($_POST["ID"]) ? (int)$_POST["ID"] : 0;
|
116 |
+
if ($post_id) {
|
117 |
+
global $wpdb;
|
118 |
+
$posts = $wpdb->get_results("SELECT * FROM " . $wpdb->prefix . "iowd_images WHERE post_id = '" . $post_id . "'");
|
119 |
+
if ($posts) {
|
120 |
+
$sizes = IOWD_Helper::get_attachmnet_sizes($post_id);
|
121 |
+
unset($sizes["total"]);
|
122 |
+
$optimized_data = array();
|
123 |
+
foreach ($posts as $post) {
|
124 |
+
$obj = new stdClass();
|
125 |
+
$obj->image_size = $post->image_size;
|
126 |
+
$obj->image_orig_size = $post->image_orig_size;
|
127 |
+
$obj->size = $post->size;
|
128 |
+
$optimized_data[$post->size] = $obj;
|
129 |
+
}
|
130 |
+
$all_sizes = array_keys($sizes);
|
131 |
+
$optimized_sizes = array_keys($optimized_data);
|
132 |
+
$not_optimized_sizes = array_diff($all_sizes, $optimized_sizes);
|
133 |
+
|
134 |
+
if (empty($not_optimized_sizes) === false) {
|
135 |
+
foreach ($not_optimized_sizes as $not_optimized_size) {
|
136 |
+
$obj = new stdClass();
|
137 |
+
$obj->image_size = $obj->image_orig_size = $sizes[$not_optimized_size];
|
138 |
+
$obj->size = $not_optimized_size;
|
139 |
+
$optimized_data[$not_optimized_size] = $obj;
|
140 |
+
}
|
141 |
+
}
|
142 |
+
}
|
143 |
+
}
|
144 |
+
$response = '';
|
145 |
+
if ($optimized_data) {
|
146 |
+
$response =
|
147 |
+
'<table class="iowd_stat_table">
|
148 |
+
<tr>
|
149 |
+
<th></th>
|
150 |
+
<th>' . __("Original size", IOWD_PREFIX) . '</th>
|
151 |
+
<th>' . __("Size", IOWD_PREFIX) . '</th>
|
152 |
+
<th>' . __("Reduced By", IOWD_PREFIX) . '</th>
|
153 |
+
</tr>';
|
154 |
+
$total = 0;
|
155 |
+
foreach ($optimized_data as $post) {
|
156 |
+
$reduse = $post->image_orig_size - $post->image_size;
|
157 |
+
$redused_persent = ($reduse / $post->image_orig_size) * 100;
|
158 |
+
$response .=
|
159 |
+
'<tr>
|
160 |
+
<td>' . ucfirst($post->size) . '</td>
|
161 |
+
<td>' . IOWD_Util::format_bytes($post->image_orig_size) . '</td>
|
162 |
+
<td>' . IOWD_Util::format_bytes($post->image_size) . '</td>';
|
163 |
+
|
164 |
+
if ($post->image_orig_size == $post->image_size) {
|
165 |
+
$response .= '<td>' . __("Skipped", IOWD_PREFIX) . '</td>';
|
166 |
+
} else {
|
167 |
+
$response .=
|
168 |
+
'<td>' . IOWD_Util::format_bytes($reduse) . '( ' . number_format($redused_persent, 2) . '% ) </td>';
|
169 |
+
}
|
170 |
+
|
171 |
+
$response .= '</tr>';
|
172 |
+
$total += $post->image_size;
|
173 |
+
}
|
174 |
+
|
175 |
+
|
176 |
+
$response .= '</table>';
|
177 |
+
$response .= '
|
178 |
+
<br>
|
179 |
+
<div>
|
180 |
+
<b>' . __("Total size", IOWD_PREFIX) . ':
|
181 |
+
' . IOWD_Util::format_bytes($total) . ' </b>
|
182 |
+
</div>';
|
183 |
+
}
|
184 |
+
|
185 |
+
echo $response;
|
186 |
+
}
|
187 |
+
|
188 |
+
public static function choose_dirs()
|
189 |
+
{
|
190 |
+
$dirs = isset($_POST["dir"]) ? json_decode(stripslashes($_POST["dir"])) : array();
|
191 |
+
$template = "";
|
192 |
+
if ($dirs) {
|
193 |
+
foreach ($dirs as $dir => $images) {
|
194 |
+
if (!$images) {
|
195 |
+
$images = IOWD_Helper::get_images_from_dir_recursiv(trim($dir));
|
196 |
+
}
|
197 |
+
|
198 |
+
$show = $images ? '<span class="iowd-show-images">' . count($images) . ' images</span>' : '<span style="color:red; margin-left: 13px;">' . __("There are no images in this folder", IOWD_PREFIX) . '<span>';
|
199 |
+
$images_tmpl = "";
|
200 |
+
if ($images) {
|
201 |
+
$images_tmpl = "<div class='folder-images' style='display:none;'>";
|
202 |
+
foreach ($images as $image) {
|
203 |
+
$images_tmpl .= '<div class="iowd_other_img_path"><span class="iowd_image_path">' . $image . '</span> <span class="iowd_remove_img"> × </span> </div>';
|
204 |
+
}
|
205 |
+
$images_tmpl .= '</div>';
|
206 |
+
}
|
207 |
+
$dir_name = str_replace(get_home_path(), "", $dir);
|
208 |
+
$template .= '<div class="iowd_other_folders_row">' .
|
209 |
+
'<div class="other_folders" >' .
|
210 |
+
'<span class="iowd_other_path" title="' . $dir . '" data-name="' . $dir . '">' . $dir_name . ' </span> ' . $show .
|
211 |
+
'<span class="iowd_remove"> × </span>' .
|
212 |
+
'</div>' . $images_tmpl .
|
213 |
+
|
214 |
+
'</div>';
|
215 |
+
}
|
216 |
+
|
217 |
+
}
|
218 |
+
|
219 |
+
echo $template;
|
220 |
+
wp_die();
|
221 |
+
}
|
222 |
+
|
223 |
+
public static function filter_report()
|
224 |
+
{
|
225 |
+
$report_class = new IOWD_Report();
|
226 |
+
$data = $report_class->report_data();
|
227 |
+
$report_data = $data["rows"];
|
228 |
+
$total_count = $data["total_count"];
|
229 |
+
$total_orig_size = $data["total_image_orig_size"];
|
230 |
+
$total_size = $data["total_image_size"];
|
231 |
+
$limit = $data["limit"];
|
232 |
+
|
233 |
+
require_once IOWD_DIR_VIEWS . '/iowd_report_tbody_display.php';
|
234 |
+
wp_die();
|
235 |
+
}
|
236 |
+
|
237 |
+
public static function clear_report()
|
238 |
+
{
|
239 |
+
global $wpdb;
|
240 |
+
$post_id = isset($_POST["post_id"]) ? $_POST["post_id"] : 0;
|
241 |
+
$where = $post_id ? " WHERE post_id='" . $post_id . "'" : "";
|
242 |
+
|
243 |
+
$wpdb->query("UPDATE " . $wpdb->prefix . "iowd_images SET deleted=1 " . $where);
|
244 |
+
wp_die();
|
245 |
+
}
|
246 |
+
|
247 |
+
public static function quick_settings()
|
248 |
+
{
|
249 |
+
$name = isset($_POST["name"]) ? $_POST["name"] : false;
|
250 |
+
$value = isset($_POST["value"]) ? (int)$_POST["value"] : false;
|
251 |
+
|
252 |
+
if ($name !== false && $value !== false) {
|
253 |
+
$settings = json_decode(get_option(IOWD_PREFIX . "_options"), true);
|
254 |
+
if (isset($settings[$name])) {
|
255 |
+
$settings[$name] = $value;
|
256 |
+
update_option(IOWD_PREFIX . "_options", json_encode($settings));
|
257 |
+
}
|
258 |
+
|
259 |
+
}
|
260 |
+
wp_die();
|
261 |
+
|
262 |
+
}
|
263 |
+
|
264 |
+
public static function get_subdirs()
|
265 |
+
{
|
266 |
+
$dir = isset($_POST["dir"]) ? $_POST["dir"] : '';
|
267 |
+
$html = '';
|
268 |
+
|
269 |
+
if (is_dir($dir)) {
|
270 |
+
foreach (scandir($dir) as $file) {
|
271 |
+
if ('.' === $file || '..' === $file || !is_dir($dir . "/" . $file)) {
|
272 |
+
continue;
|
273 |
+
}
|
274 |
+
|
275 |
+
$html .= '<li class="iowd-dir-tree-title" data-path="' . str_replace("\\", "/", $dir) . "/" . $file . '" ><a href="#" ><img src="' . IOWD_URL_IMG . '/folder.png" class="iowd-dir-tree-icon">' . $file . '</a>';
|
276 |
+
|
277 |
+
}
|
278 |
+
|
279 |
+
if ($html) {
|
280 |
+
$html = "<ul>" . $html . "</ul>";
|
281 |
+
}
|
282 |
+
}
|
283 |
+
|
284 |
+
echo $html;
|
285 |
+
//wp_die();
|
286 |
+
}
|
287 |
+
|
288 |
+
}
|
289 |
+
|
290 |
+
|
291 |
+
?>
|
includes/iowd-amazon-s3.php
ADDED
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if (!defined('ABSPATH')) {
|
4 |
+
exit;
|
5 |
+
}
|
6 |
+
|
7 |
+
use Aws\S3\Exception\S3Exception;
|
8 |
+
use Aws\S3\S3Client;
|
9 |
+
|
10 |
+
class IOWD_Amazon_S3
|
11 |
+
{
|
12 |
+
const CACERT_PATH = IOWD_DIR . '/cacert-2017-06-07.pem';
|
13 |
+
const S3_CREDENTIALS_PATH = IOWD_API_URL . '/s3credentials';
|
14 |
+
|
15 |
+
public $errors = array();
|
16 |
+
public $sub_folder_name = null;
|
17 |
+
public $folder_name = null;
|
18 |
+
public $credentials = null;
|
19 |
+
public $s3_client = null;
|
20 |
+
private $region = 'us-west-2';
|
21 |
+
private $bucket = 'iotwbucket';
|
22 |
+
|
23 |
+
public function __construct($id = '')
|
24 |
+
{
|
25 |
+
$this->sub_folder_name = md5("TWlop45&&Kn1)@" . time());
|
26 |
+
$this->folder_name = md5(site_url());
|
27 |
+
|
28 |
+
$credentials = get_option("iowd_crd_" . $id);
|
29 |
+
$config = array(
|
30 |
+
'version' => 'latest',
|
31 |
+
'region' => $this->region,
|
32 |
+
'credentials' => $credentials,
|
33 |
+
'http' => array(
|
34 |
+
'verify' => self::CACERT_PATH,
|
35 |
+
),
|
36 |
+
);
|
37 |
+
$this->credentials = $credentials;
|
38 |
+
|
39 |
+
$this->s3_client = new S3Client($config);
|
40 |
+
}
|
41 |
+
|
42 |
+
public function upload($file_key)
|
43 |
+
{
|
44 |
+
try {
|
45 |
+
@ini_set('max_execution_time', 3600);
|
46 |
+
clearstatcache();
|
47 |
+
$arg = array(
|
48 |
+
'Bucket' => $this->bucket,
|
49 |
+
'Key' => $this->folder_name . "/" . $this->sub_folder_name . "/" . basename($file_key),
|
50 |
+
'SourceFile' => $file_key,
|
51 |
+
);
|
52 |
+
|
53 |
+
$response = $this->s3_client->putObjectAsync($arg);
|
54 |
+
|
55 |
+
return $response;
|
56 |
+
|
57 |
+
} catch (S3Exception $e) {
|
58 |
+
IOWD_Log::error_log($e->getMessage());
|
59 |
+
}
|
60 |
+
|
61 |
+
}
|
62 |
+
|
63 |
+
|
64 |
+
}
|
includes/iowd-api.php
ADDED
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
if (!defined('ABSPATH')) {
|
3 |
+
exit;
|
4 |
+
}
|
5 |
+
|
6 |
+
class IOWD_Api
|
7 |
+
{
|
8 |
+
private static $api_url = null;
|
9 |
+
private static $post_data = null;
|
10 |
+
private static $post_headers_data = array(
|
11 |
+
"Accept" => "application/x.optimizer.v1+json"
|
12 |
+
);
|
13 |
+
|
14 |
+
|
15 |
+
public static function api_request()
|
16 |
+
{
|
17 |
+
|
18 |
+
$data = self::$post_data;
|
19 |
+
$hedares = self::$post_headers_data;
|
20 |
+
|
21 |
+
$request = wp_remote_post(self::$api_url, array(
|
22 |
+
'method' => 'POST',
|
23 |
+
'headers' => $hedares,
|
24 |
+
'body' => $data,
|
25 |
+
)
|
26 |
+
);
|
27 |
+
|
28 |
+
if (!is_wp_error($request) || wp_remote_retrieve_response_code($request) === 200) {
|
29 |
+
if (isset($request["body"])) {
|
30 |
+
return json_decode($request['body'], true);
|
31 |
+
}
|
32 |
+
}
|
33 |
+
|
34 |
+
return false;
|
35 |
+
}
|
36 |
+
|
37 |
+
public static function set_post_data($data)
|
38 |
+
{
|
39 |
+
self::$post_data = $data;
|
40 |
+
}
|
41 |
+
|
42 |
+
public static function set_post_headers_data($data)
|
43 |
+
{
|
44 |
+
self::$post_headers_data = array_merge(self::$post_headers_data, $data);
|
45 |
+
}
|
46 |
+
|
47 |
+
|
48 |
+
|
49 |
+
public static function set_api_action($api_action)
|
50 |
+
{
|
51 |
+
self::$api_url = IOWD_API_URL . $api_action;
|
52 |
+
}
|
53 |
+
|
54 |
+
|
55 |
+
}
|
includes/iowd-helper.php
ADDED
@@ -0,0 +1,243 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
if (!defined('ABSPATH')) {
|
3 |
+
exit;
|
4 |
+
}
|
5 |
+
|
6 |
+
class IOWD_Helper
|
7 |
+
{
|
8 |
+
|
9 |
+
|
10 |
+
public static function message($message, $type)
|
11 |
+
{
|
12 |
+
return '<div class="iowd-messages">
|
13 |
+
<div class="' . $type . '">
|
14 |
+
<p><strong>' . $message . '</strong></p>
|
15 |
+
</div>
|
16 |
+
</div>';
|
17 |
+
}
|
18 |
+
|
19 |
+
public static function redirect(array $url, $page = "admin.php")
|
20 |
+
{
|
21 |
+
return wp_safe_redirect(add_query_arg($url, admin_url($page)));
|
22 |
+
}
|
23 |
+
|
24 |
+
public static function dir_tree($dir_path, $only_dirs = true)
|
25 |
+
{
|
26 |
+
|
27 |
+
if (file_exists($dir_path)) {
|
28 |
+
echo "<ul>";
|
29 |
+
$dir = scandir($dir_path);
|
30 |
+
|
31 |
+
foreach ($dir as $file) {
|
32 |
+
|
33 |
+
if ($file == "." || $file == ".." || strpos($file, ".") !== false) {
|
34 |
+
continue;
|
35 |
+
}
|
36 |
+
|
37 |
+
if (is_dir($dir_path . "/" . $file) || $only_dirs === false) {
|
38 |
+
|
39 |
+
echo '<li class="iowd-dir-tree-title" data-path="' . str_replace("\\", "/", $dir_path) . "/" . $file . '" ><a href="#" ><img src="' . IOWD_URL_IMG . '/folder.png" class="iowd-dir-tree-icon">' . $file . '</a>';
|
40 |
+
}
|
41 |
+
|
42 |
+
if (is_dir($dir_path . "/" . $file) === true) {
|
43 |
+
self::dir_tree($dir_path . "/" . $file, $only_dirs);
|
44 |
+
}
|
45 |
+
|
46 |
+
}
|
47 |
+
echo "</li></ul>";
|
48 |
+
}
|
49 |
+
|
50 |
+
|
51 |
+
}
|
52 |
+
|
53 |
+
public static function get_images_from_dir_recursiv($dir_path, &$image_paths = array())
|
54 |
+
{
|
55 |
+
|
56 |
+
if (file_exists($dir_path)) {
|
57 |
+
$dir = scandir($dir_path);
|
58 |
+
$images = glob($dir_path . '/*.{jpg,png,gif,jpeg,pdf}', GLOB_BRACE);
|
59 |
+
|
60 |
+
$images = $images ? $images : array();
|
61 |
+
if ($images) {
|
62 |
+
$protocaol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http';
|
63 |
+
array_walk($images, create_function('&$value', '$value = str_replace( "' . $_SERVER['DOCUMENT_ROOT'] . '", "' . $protocaol . '://' . $_SERVER['SERVER_NAME'] . '", $value );'));
|
64 |
+
}
|
65 |
+
$image_paths = array_merge($image_paths, $images);
|
66 |
+
foreach ($dir as $file) {
|
67 |
+
if ($file == "." || $file == ".." || substr($file, 0, 1) == ".") {
|
68 |
+
continue;
|
69 |
+
}
|
70 |
+
|
71 |
+
if (is_dir($dir_path . "/" . $file)) {
|
72 |
+
self::get_images_from_dir_recursiv($dir_path . "/" . $file, $image_paths);
|
73 |
+
}
|
74 |
+
|
75 |
+
}
|
76 |
+
}
|
77 |
+
|
78 |
+
return $image_paths;
|
79 |
+
|
80 |
+
}
|
81 |
+
|
82 |
+
public static function get_images_from_dir($dir_path)
|
83 |
+
{
|
84 |
+
if (file_exists($dir_path)) {
|
85 |
+
$images = glob($dir_path . '/*.{jpg,png,gif,jpeg,pdf}', GLOB_BRACE);
|
86 |
+
|
87 |
+
$images = $images ? $images : array();
|
88 |
+
if ($images) {
|
89 |
+
$protocaol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http';
|
90 |
+
array_walk($images, create_function('&$value', '$value = str_replace( "' . $_SERVER['DOCUMENT_ROOT'] . '", "' . $protocaol . '://' . $_SERVER['SERVER_NAME'] . '", $value );'));
|
91 |
+
}
|
92 |
+
}
|
93 |
+
|
94 |
+
return $images;
|
95 |
+
|
96 |
+
}
|
97 |
+
|
98 |
+
public static function get_attachment_ids()
|
99 |
+
{
|
100 |
+
$args = array(
|
101 |
+
'post_type' => 'attachment',
|
102 |
+
'numberposts' => -1
|
103 |
+
);
|
104 |
+
$attachments = get_posts($args);
|
105 |
+
$images = array();
|
106 |
+
|
107 |
+
foreach ($attachments as $attachment) {
|
108 |
+
$images[] = $attachment->ID;
|
109 |
+
}
|
110 |
+
|
111 |
+
return $images;
|
112 |
+
}
|
113 |
+
|
114 |
+
public static function wp_get_image_sizes()
|
115 |
+
{
|
116 |
+
$iowd_sizes = array();
|
117 |
+
$sizes = get_intermediate_image_sizes();
|
118 |
+
global $_wp_additional_image_sizes;
|
119 |
+
foreach ($sizes as $size) {
|
120 |
+
if ($size == 'thumbnail' || $size == 'medium' || $size == 'medium_large' || $size == 'large') {
|
121 |
+
$iowd_sizes[$size]["width"] = get_option($size . '_size_w');
|
122 |
+
$iowd_sizes[$size]["height"] = get_option($size . '_size_h');
|
123 |
+
} elseif (isset($_wp_additional_image_sizes[$size])) {
|
124 |
+
$iowd_sizes[$size] = array(
|
125 |
+
'width' => $_wp_additional_image_sizes[$size]['width'],
|
126 |
+
'height' => $_wp_additional_image_sizes[$size]['height'],
|
127 |
+
);
|
128 |
+
}
|
129 |
+
}
|
130 |
+
if ($iowd_sizes['medium_large']['width'] == 0) {
|
131 |
+
$iowd_sizes['medium_large']['width'] = '768';
|
132 |
+
}
|
133 |
+
if ($iowd_sizes['medium_large']['height'] == 0) {
|
134 |
+
$iowd_sizes['medium_large']['height'] = '9999';
|
135 |
+
}
|
136 |
+
|
137 |
+
return $iowd_sizes;
|
138 |
+
}
|
139 |
+
|
140 |
+
public static function pn_get_attachment_id_from_url($attachment_url = '')
|
141 |
+
{
|
142 |
+
|
143 |
+
global $wpdb;
|
144 |
+
$attachment_id = false;
|
145 |
+
|
146 |
+
// If there is no url, return.
|
147 |
+
if ('' == $attachment_url)
|
148 |
+
return;
|
149 |
+
|
150 |
+
// Get the upload directory paths
|
151 |
+
$upload_dir_paths = wp_upload_dir();
|
152 |
+
|
153 |
+
// Make sure the upload path base directory exists in the attachment URL, to verify that we're working with a media library image
|
154 |
+
if (false !== strpos($attachment_url, $upload_dir_paths['baseurl'])) {
|
155 |
+
|
156 |
+
// If this is the URL of an auto-generated thumbnail, get the URL of the original image
|
157 |
+
$attachment_url = preg_replace('/-\d+x\d+(?=\.(jpg|jpeg|png|gif)$)/i', '', $attachment_url);
|
158 |
+
|
159 |
+
// Remove the upload path base directory from the attachment URL
|
160 |
+
$attachment_url = str_replace($upload_dir_paths['baseurl'] . '/', '', $attachment_url);
|
161 |
+
|
162 |
+
// Finally, run a custom database query to get the attachment ID from the modified attachment URL
|
163 |
+
$attachment_id = $wpdb->get_var($wpdb->prepare("SELECT wposts.ID FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = '_wp_attached_file' AND wpostmeta.meta_value = '%s' AND wposts.post_type = 'attachment'", $attachment_url));
|
164 |
+
|
165 |
+
}
|
166 |
+
|
167 |
+
return $attachment_id;
|
168 |
+
}
|
169 |
+
|
170 |
+
public static function iowd_is_url_exists($url)
|
171 |
+
{
|
172 |
+
|
173 |
+
$ch = curl_init($url);
|
174 |
+
curl_setopt($ch, CURLOPT_NOBODY, true);
|
175 |
+
curl_exec($ch);
|
176 |
+
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
177 |
+
|
178 |
+
if ($code == 200) {
|
179 |
+
$status = true;
|
180 |
+
} else {
|
181 |
+
$status = false;
|
182 |
+
}
|
183 |
+
curl_close($ch);
|
184 |
+
|
185 |
+
return $status;
|
186 |
+
}
|
187 |
+
|
188 |
+
public static function get_attachmnet_sizes($id)
|
189 |
+
{
|
190 |
+
$attachmnet_sizes = array();
|
191 |
+
$full_file = get_attached_file($id);
|
192 |
+
$full_file_size = file_exists($full_file) ? filesize($full_file) : 0;
|
193 |
+
|
194 |
+
$meta = wp_get_attachment_metadata($id);
|
195 |
+
$sizes = isset($meta["sizes"]) ? $meta["sizes"] : array();
|
196 |
+
$attachmnet_sizes["full"] = $full_file_size;
|
197 |
+
$attachment_root_dir = str_replace(basename($full_file), "", $full_file);
|
198 |
+
$total = $full_file_size;
|
199 |
+
foreach ($sizes as $size => $file) {
|
200 |
+
$image_size = file_exists($attachment_root_dir . $file["file"]) ? filesize($attachment_root_dir . $file["file"]) : 0;
|
201 |
+
$attachmnet_sizes[$size] = $image_size;
|
202 |
+
$total += $image_size;
|
203 |
+
|
204 |
+
}
|
205 |
+
$attachmnet_sizes["total"] = $total;
|
206 |
+
|
207 |
+
return $attachmnet_sizes;
|
208 |
+
|
209 |
+
}
|
210 |
+
|
211 |
+
public static function limitation($refresh = false)
|
212 |
+
{
|
213 |
+
$already_optimized = get_site_transient("iowd_already_optimized");
|
214 |
+
if(is_null($already_optimized) || $already_optimized === false || $refresh == true){
|
215 |
+
$already_optimized = self::update_already_used();
|
216 |
+
}
|
217 |
+
|
218 |
+
return array(
|
219 |
+
"limit" => 1000,
|
220 |
+
"period" => "1 month",
|
221 |
+
"already_optimized" => $already_optimized,
|
222 |
+
);
|
223 |
+
}
|
224 |
+
|
225 |
+
public static function update_already_used()
|
226 |
+
{
|
227 |
+
require_once IOWD_DIR_INCLUDES . "/iowd-api.php";
|
228 |
+
$request_data = array(
|
229 |
+
"domain" => site_url(),
|
230 |
+
"uhash" => "",
|
231 |
+
);
|
232 |
+
IOWD_Api::set_post_data($request_data);
|
233 |
+
IOWD_Api::set_api_action("used");
|
234 |
+
$response = IOWD_Api::api_request();
|
235 |
+
$already_optimized = isset($response["already_optimized"]) ? $response["already_optimized"] : 0;
|
236 |
+
|
237 |
+
set_site_transient("iowd_already_optimized", $already_optimized, 43200);
|
238 |
+
|
239 |
+
return $already_optimized;
|
240 |
+
}
|
241 |
+
|
242 |
+
|
243 |
+
}
|
includes/iowd-log.php
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
if (!defined('ABSPATH')) {
|
3 |
+
exit;
|
4 |
+
}
|
5 |
+
|
6 |
+
class IOWD_Log
|
7 |
+
{
|
8 |
+
|
9 |
+
private static $log_path = IOWD_DIR . "/log/";
|
10 |
+
|
11 |
+
public static function error_log($log_content)
|
12 |
+
{
|
13 |
+
self::write_log($log_content, "ERROR");
|
14 |
+
}
|
15 |
+
|
16 |
+
|
17 |
+
private static function write_log($log, $type)
|
18 |
+
{
|
19 |
+
$log_content = "[" . date("Y-m-d H:i:s") . "] " ;
|
20 |
+
if($type){
|
21 |
+
$log_content .= "[" . $type . "] ";
|
22 |
+
}
|
23 |
+
$log_content .= $log . '/n';
|
24 |
+
file_put_contents(self::$log_path . date("Ymd") . '.txt', $log_content);
|
25 |
+
}
|
26 |
+
|
27 |
+
|
28 |
+
}
|
includes/iowd-media-library.php
ADDED
@@ -0,0 +1,279 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
if (!defined('ABSPATH')) {
|
3 |
+
exit;
|
4 |
+
}
|
5 |
+
|
6 |
+
class IOWD_MediaLibrary
|
7 |
+
{
|
8 |
+
|
9 |
+
public function __construct()
|
10 |
+
{
|
11 |
+
// add bulc action for wd optimize
|
12 |
+
add_action('admin_footer', array($this, 'custom_bulk_admin_footer'));
|
13 |
+
add_action('admin_action_wd_optimize', array($this, 'wd_optimize_bulk_handler'));
|
14 |
+
|
15 |
+
//wd optimize button to grid view, modal
|
16 |
+
add_filter('attachment_fields_to_edit', array($this, 'add_wd_optimize_button'), 10, 2);
|
17 |
+
add_filter('manage_media_columns', array($this, 'manage_columns'));
|
18 |
+
add_action('manage_media_custom_column', array($this, 'media_wd_optimize_column'), 10, 2);
|
19 |
+
|
20 |
+
add_action('restrict_manage_posts', array($this, 'size_filter'));
|
21 |
+
|
22 |
+
add_filter('posts_where', array($this, 'where_size'));
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Adds wd optimize bulk action to media library page
|
27 |
+
*
|
28 |
+
*/
|
29 |
+
public function wd_optimize_bulk_handler()
|
30 |
+
{
|
31 |
+
|
32 |
+
if ((empty($_REQUEST['action']) || 'wd_optimize' != $_REQUEST['action'])) {
|
33 |
+
return false;
|
34 |
+
}
|
35 |
+
if (empty($_REQUEST['media']) || !is_array($_REQUEST['media'])) {
|
36 |
+
return false;
|
37 |
+
}
|
38 |
+
check_admin_referer('bulk-media');
|
39 |
+
|
40 |
+
$ids = implode(",", array_map('intval', $_REQUEST['media']));
|
41 |
+
|
42 |
+
IOWD_Helper::redirect(array("page" => IOWD_PREFIX . "_settings", "ids" => $ids));
|
43 |
+
exit();
|
44 |
+
|
45 |
+
}
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Adds wd optimize button to attachement modal and media grid view
|
49 |
+
*
|
50 |
+
*/
|
51 |
+
public function add_wd_optimize_button($form_fields, $post)
|
52 |
+
{
|
53 |
+
if (!wp_attachment_is_image($post->ID)) {
|
54 |
+
return $form_fields;
|
55 |
+
}
|
56 |
+
|
57 |
+
$form_fields['wd_optimize'] = array(
|
58 |
+
'label' => __('Optimize', IOWD_PREFIX),
|
59 |
+
'input' => 'html',
|
60 |
+
'html' => $this->wd_optimize_html($post->ID),
|
61 |
+
'show_in_edit' => true,
|
62 |
+
'show_in_modal' => true,
|
63 |
+
);
|
64 |
+
|
65 |
+
|
66 |
+
return $form_fields;
|
67 |
+
}
|
68 |
+
|
69 |
+
public function wd_optimize_html($id)
|
70 |
+
{
|
71 |
+
$db = new IOWDDB();
|
72 |
+
$db->set_table_name("iowd_images");
|
73 |
+
$limitation = IOWD_Helper::limitation();
|
74 |
+
global $wpdb;
|
75 |
+
$row = $wpdb->get_row("SELECT COUNT(case when image_orig_size = image_size then null else 1 end) AS images_count, SUM(image_orig_size) AS image_orig_size, SUM(image_size) AS image_size, path FROM " . $wpdb->prefix . "iowd_images WHERE post_id='" . $id . "' GROUP BY post_id");
|
76 |
+
|
77 |
+
$path = get_attached_file($id);
|
78 |
+
$options = json_decode(get_option(IOWD_PREFIX . "_options"), true);
|
79 |
+
$type = strtolower(pathinfo($path, PATHINFO_EXTENSION));
|
80 |
+
$db_post_ids = get_transient("iowd_optimizing_post_ids") ? get_transient("iowd_optimizing_post_ids") : array();
|
81 |
+
if ($row) {
|
82 |
+
$reduse = $row->image_orig_size - $row->image_size;
|
83 |
+
$redused_persent = $row->image_orig_size ? ($reduse / $row->image_orig_size) * 100 : 0;
|
84 |
+
$sizes = IOWD_Helper::get_attachmnet_sizes($id);
|
85 |
+
$html = '<div class="iowd_' . $id . '">
|
86 |
+
<div><a href="#" onclick="iowdStatus(this);return false;" data-id="' . $id . '"><small>' . __("Stats", IOWD_PREFIX) . ' [+]</small></a></div>
|
87 |
+
<div>' . $row->images_count . " " . __("images optimized by ", IOWD_PREFIX) . IOWD_Util::format_bytes($reduse) . ' ( ' . number_format($redused_persent, 2) . '% )</div>
|
88 |
+
<div>Size: ' . IOWD_Util::format_bytes($sizes["total"]) . '</div>';
|
89 |
+
if ($type != "webp" && $limitation["already_optimized"] < $limitation["limit"]) {
|
90 |
+
$html .= '<a href="#" class="iowd-optimize" data-id="' . $id . '">
|
91 |
+
<span>' . __("Reoptimize", IOWD_PREFIX) . '</span>
|
92 |
+
<img src="' . IOWD_URL_IMG . '/spinner.gif" class="iowd-spinner" style="display:none; vertical-align:sub;" />
|
93 |
+
</a>';
|
94 |
+
}
|
95 |
+
$html .= '</div>';
|
96 |
+
} else {
|
97 |
+
if ($limitation["already_optimized"] > $limitation["limit"]) {
|
98 |
+
$html = sprintf(__("Your subscription plan allows optimizing %s images per month. This limitation has expired for current month.", IOWD_PREFIX), $limitation["limit"]);
|
99 |
+
} else if (($type == "png" && $options["png_optimization_levels"] == "0") || (($type == "jpg" || $type == "jpeg") && $options["jpg_optimization_levels"] == "0") || ($type == "gif" && $options["gif_optimization_levels"] == "0") ) {
|
100 |
+
$html = sprintf(__("Please select %s optimization level from ", IOWD_PREFIX), $type);
|
101 |
+
$html .= '<a href="upload.php?page=iowd_settings">' . __("Settings", IOWD_PREFIX) . '</a>.';
|
102 |
+
} else if (in_array($id, $db_post_ids)) {
|
103 |
+
$html = __("Processing optimize", IOWD_PREFIX);
|
104 |
+
} else if ($type == "png" || $type == "jpg" || $type == "jpeg" || $type == "gif") {
|
105 |
+
$html = '<div class="iowd_' . $id . '"><button class="button button-secondary iowd-optimize" data-id="' . $id . '">
|
106 |
+
<span>' . __("Optimize", IOWD_PREFIX) . '</span>
|
107 |
+
<img src="' . IOWD_URL_IMG . '/spinner.gif" class="iowd-spinner" style="display:none; vertical-align:sub;" />
|
108 |
+
</button>';
|
109 |
+
|
110 |
+
$html .= '</div>';
|
111 |
+
} else {
|
112 |
+
$html = '';
|
113 |
+
}
|
114 |
+
}
|
115 |
+
|
116 |
+
return $html;
|
117 |
+
}
|
118 |
+
|
119 |
+
|
120 |
+
public function size_filter()
|
121 |
+
{
|
122 |
+
global $pagenow;
|
123 |
+
if ($pagenow == 'upload.php') {
|
124 |
+
|
125 |
+
$file_size = filter_input(INPUT_GET, 'size', FILTER_SANITIZE_STRING);
|
126 |
+
$file_size = trim($file_size);
|
127 |
+
$file_size = !empty($file_size) ? $file_size : false;
|
128 |
+
|
129 |
+
$sizes = array(
|
130 |
+
"" => __("Larger than", IOWD_PREFIX),
|
131 |
+
"500000" => "0.5MB",
|
132 |
+
"1000000" => "1MB",
|
133 |
+
"2000000" => "2MB",
|
134 |
+
"4000000" => "4MB",
|
135 |
+
"8000000" => "8MB",
|
136 |
+
"14000000" => "14MB",
|
137 |
+
);
|
138 |
+
$html = '<select name="size" class="postform">';
|
139 |
+
foreach ($sizes as $key => $value) {
|
140 |
+
$html .= '<option value="' . $key . '" ' . selected($file_size, $key, false) . '>' . $value . '</option>';
|
141 |
+
}
|
142 |
+
$html .= '</select>';
|
143 |
+
|
144 |
+
|
145 |
+
echo $html;
|
146 |
+
}
|
147 |
+
}
|
148 |
+
|
149 |
+
|
150 |
+
public function where_size($sql)
|
151 |
+
{
|
152 |
+
global $pagenow, $wpdb;
|
153 |
+
if ($pagenow == 'upload.php') {
|
154 |
+
$file_size = filter_input(INPUT_GET, 'size', FILTER_SANITIZE_STRING);
|
155 |
+
$file_size = trim($file_size);
|
156 |
+
$file_size = !empty($file_size) ? $file_size : false;
|
157 |
+
|
158 |
+
// get all attachments
|
159 |
+
if ($file_size) {
|
160 |
+
$file_size = $file_size * 1000;
|
161 |
+
$attachments = get_posts(array(
|
162 |
+
'post_type' => 'attachment',
|
163 |
+
'post__in' => array(),
|
164 |
+
'numberposts' => -1
|
165 |
+
));
|
166 |
+
$ids = array();
|
167 |
+
foreach ($attachments as $attachment) {
|
168 |
+
$size = filesize(get_attached_file($attachment->ID));
|
169 |
+
if ($size > $file_size) {
|
170 |
+
$ids[] = $attachment->ID;
|
171 |
+
}
|
172 |
+
|
173 |
+
}
|
174 |
+
|
175 |
+
$sql .= count($ids) > 0 ? " AND $wpdb->posts.id IN (" . implode(",", $ids) . ") " : " AND 0 ";
|
176 |
+
|
177 |
+
}
|
178 |
+
|
179 |
+
}
|
180 |
+
|
181 |
+
return $sql;
|
182 |
+
}
|
183 |
+
|
184 |
+
|
185 |
+
public function custom_bulk_admin_footer()
|
186 |
+
{
|
187 |
+
global $pagenow;
|
188 |
+
|
189 |
+
if ($pagenow == 'upload.php' || $pagenow == 'post.php') {
|
190 |
+
?>
|
191 |
+
<div
|
192 |
+
class="iowd_opacity"></div>
|
193 |
+
<div
|
194 |
+
class="iowd_stats">
|
195 |
+
<div
|
196 |
+
class="iowd_close">
|
197 |
+
×
|
198 |
+
</div>
|
199 |
+
<div
|
200 |
+
class="iowd_stats_body"></div>
|
201 |
+
</div>
|
202 |
+
|
203 |
+
<script
|
204 |
+
type="text/javascript">
|
205 |
+
jQuery(document).ready(function () {
|
206 |
+
jQuery('<option>').val('wd_optimize').text('<?php _e('Optimize', IOWD_PREFIX)?>').appendTo("select[name='action']");
|
207 |
+
});
|
208 |
+
</script>
|
209 |
+
<style>
|
210 |
+
.iowd_opacity, .iowd_stats {
|
211 |
+
position: fixed;
|
212 |
+
top: 0px;
|
213 |
+
left: 0px;
|
214 |
+
bottom: 0px;
|
215 |
+
right: 0px;
|
216 |
+
padding: 23px;
|
217 |
+
}
|
218 |
+
|
219 |
+
.iowd_opacity {
|
220 |
+
background: #000;
|
221 |
+
opacity: 0.6;
|
222 |
+
z-index: 9999999;
|
223 |
+
display: none;
|
224 |
+
}
|
225 |
+
|
226 |
+
.iowd_stats {
|
227 |
+
margin: auto;
|
228 |
+
z-index: 9999999;
|
229 |
+
background: #fff;
|
230 |
+
width: 570px;
|
231 |
+
height: 300px;
|
232 |
+
opacity: 1;
|
233 |
+
display: none;
|
234 |
+
overflow: auto;
|
235 |
+
max-height: 60%;
|
236 |
+
box-shadow: -1px -1px 13px #32373c;
|
237 |
+
border-radius: 4px;
|
238 |
+
}
|
239 |
+
|
240 |
+
.iowd_close {
|
241 |
+
font-size: 18px;
|
242 |
+
cursor: pointer;
|
243 |
+
text-align: right;
|
244 |
+
}
|
245 |
+
|
246 |
+
.iowd_stat_table {
|
247 |
+
width: 100%;
|
248 |
+
border-collapse: collapse;
|
249 |
+
}
|
250 |
+
|
251 |
+
.iowd_stat_table th, .iowd_stat_table td {
|
252 |
+
text-align: left;
|
253 |
+
padding: 10px;
|
254 |
+
border-bottom: 1px solid #ddd;
|
255 |
+
}
|
256 |
+
</style>
|
257 |
+
<?php
|
258 |
+
}
|
259 |
+
}
|
260 |
+
|
261 |
+
public function manage_columns($defaults)
|
262 |
+
{
|
263 |
+
$defaults['wd_optimize'] = __('Optimize', IOWD_PREFIX);
|
264 |
+
|
265 |
+
return $defaults;
|
266 |
+
}
|
267 |
+
|
268 |
+
public function media_wd_optimize_column($column_name, $id)
|
269 |
+
{
|
270 |
+
if ('wd_optimize' == $column_name) {
|
271 |
+
echo $this->wd_optimize_html($id);
|
272 |
+
}
|
273 |
+
|
274 |
+
}
|
275 |
+
|
276 |
+
|
277 |
+
}
|
278 |
+
|
279 |
+
new IOWD_MediaLibrary();
|
includes/iowd-optimize.php
ADDED
@@ -0,0 +1,743 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
if (!defined('ABSPATH')) {
|
3 |
+
exit;
|
4 |
+
}
|
5 |
+
|
6 |
+
|
7 |
+
class IOWD_Optimize
|
8 |
+
{
|
9 |
+
private $options;
|
10 |
+
private $is_single = false;
|
11 |
+
private $allowed_types = array("jpg", "jpeg", "png", "gif");
|
12 |
+
private $images_count = 10;
|
13 |
+
|
14 |
+
|
15 |
+
public function __construct($single = false)
|
16 |
+
{
|
17 |
+
$this->is_single = $single;
|
18 |
+
$this->options = json_decode(get_option(IOWD_PREFIX . "_options"), true);
|
19 |
+
if ($single == true) {
|
20 |
+
$this->images_count = count(IOWD_Helper::wp_get_image_sizes()) + 1;
|
21 |
+
}
|
22 |
+
|
23 |
+
}
|
24 |
+
|
25 |
+
public function get_temp_data($ids = array(), $other = false, $single = false, $meta = array())
|
26 |
+
{
|
27 |
+
$id = $single == true ? ($meta ? "auto_" . $ids[0] : $ids[0]) : '';
|
28 |
+
// delete all remained data
|
29 |
+
delete_option("iowd_image_temp_data_" . $id);
|
30 |
+
delete_option("iowd_data_count_" . $id);
|
31 |
+
delete_site_transient("iowd_last_optimized_data");
|
32 |
+
delete_transient("iowd_images_count_start");
|
33 |
+
delete_site_transient("iowd_done_" . $id);
|
34 |
+
delete_option("iowd_crd_" . $id);
|
35 |
+
delete_option("iowd_abort");
|
36 |
+
delete_site_transient("iowd_received_images_". $id);
|
37 |
+
|
38 |
+
//check
|
39 |
+
$folder_name = md5(site_url());
|
40 |
+
$request_data = array(
|
41 |
+
"domain" => site_url(),
|
42 |
+
"folder" => $folder_name,
|
43 |
+
);
|
44 |
+
|
45 |
+
IOWD_Api::set_post_data($request_data);
|
46 |
+
IOWD_Api::set_api_action("validate");
|
47 |
+
$response = IOWD_Api::api_request();
|
48 |
+
|
49 |
+
if ($response["status"] == "error") {
|
50 |
+
set_transient("iowd_response_error", $response["error"]);
|
51 |
+
IOWD_Helper::update_already_used();
|
52 |
+
return $response;
|
53 |
+
}
|
54 |
+
|
55 |
+
if (!empty($response["credentials"])) {
|
56 |
+
$credentials = array(
|
57 |
+
'key' => $response["credentials"]["AccessKeyId"],
|
58 |
+
'secret' => $response["credentials"]["SecretAccessKey"],
|
59 |
+
'token' => $response["credentials"]["SessionToken"]
|
60 |
+
);
|
61 |
+
add_option("iowd_crd_" . $id, $credentials);
|
62 |
+
} else {
|
63 |
+
set_transient("iowd_response_error", 'empty_credentials');
|
64 |
+
|
65 |
+
return array("status" => "error", "error" => __("Empty credentials, please try again.", IOWD_PREFIX));
|
66 |
+
}
|
67 |
+
|
68 |
+
if (empty($ids) === false) {
|
69 |
+
$images_data = $this->get_attachments($ids, false, $meta, $response["remained"]);
|
70 |
+
} else {
|
71 |
+
$images_data = $this->scan($ids, $other, $response["remained"]);
|
72 |
+
$images_data = $images_data["attachments_data"];
|
73 |
+
}
|
74 |
+
|
75 |
+
$data_count = count($images_data);
|
76 |
+
// add temp data
|
77 |
+
add_option("iowd_image_temp_data_" . $id, $images_data);
|
78 |
+
add_option("iowd_data_count_" . $id, $data_count);
|
79 |
+
|
80 |
+
return array("status" => "ok", "data_count" => $data_count);
|
81 |
+
}
|
82 |
+
|
83 |
+
public function get_attachments($ids = array(), $include_others = false, $meta = array(), $remained = null)
|
84 |
+
{
|
85 |
+
ini_set('memory_limit', '-1');
|
86 |
+
clearstatcache();
|
87 |
+
$options = $this->options;
|
88 |
+
$image_data = array();
|
89 |
+
|
90 |
+
|
91 |
+
$optimize_thumbs = explode(",", $options["optimize_thumbs"]);
|
92 |
+
// if isset ids, get attachments
|
93 |
+
|
94 |
+
$args = array(
|
95 |
+
'post_type' => 'attachment',
|
96 |
+
'post__in' => $ids,
|
97 |
+
'numberposts' => -1
|
98 |
+
);
|
99 |
+
$attachments = get_posts($args);
|
100 |
+
|
101 |
+
if (empty($attachments) === false) {
|
102 |
+
foreach ($attachments as $attachment) {
|
103 |
+
if (!file_exists(get_attached_file($attachment->ID))) {
|
104 |
+
continue;
|
105 |
+
}
|
106 |
+
$file_name = get_attached_file($attachment->ID);
|
107 |
+
$type = pathinfo($file_name, PATHINFO_EXTENSION);
|
108 |
+
$size = filesize($file_name);
|
109 |
+
$path = wp_get_attachment_url($attachment->ID);
|
110 |
+
// check type
|
111 |
+
if (!in_array(strtolower($type), $this->allowed_types) || $this->check_optimization_level($type) === false) {
|
112 |
+
continue;
|
113 |
+
}
|
114 |
+
|
115 |
+
if (($this->skip_small_images($size) === true && $this->skip_large_images($size) === true && $options["exclude_full_size"] == 0) || $this->is_single == true) {
|
116 |
+
|
117 |
+
$image = array();
|
118 |
+
$image["path"] = $path;
|
119 |
+
$image["file"] = $file_name;
|
120 |
+
$image["post_id"] = $attachment->ID;
|
121 |
+
$image["size"] = "full";
|
122 |
+
$image["image_size"] = $size;
|
123 |
+
$image["media"] = 1;
|
124 |
+
$image["converted"] = 0;
|
125 |
+
$image["resized"] = 0;
|
126 |
+
$image["single"] = $this->is_single;
|
127 |
+
$image["transparent"] = $type == "png" && IOWD_Util::is_transparent_png($file_name) ? 1 : 0;
|
128 |
+
|
129 |
+
$image_data[] = $image;
|
130 |
+
}
|
131 |
+
$attachment_root_url = str_replace(basename($path), "", $path);
|
132 |
+
$attachment_root_dir = str_replace(basename(get_attached_file($attachment->ID)), "", get_attached_file($attachment->ID));
|
133 |
+
|
134 |
+
$meta = wp_get_attachment_metadata($attachment->ID) ? wp_get_attachment_metadata($attachment->ID) : $meta;
|
135 |
+
$sizes = isset($meta["sizes"]) ? $meta["sizes"] : array();
|
136 |
+
|
137 |
+
foreach ($sizes as $size => $file) {
|
138 |
+
if (in_array($size, $optimize_thumbs)) {
|
139 |
+
$image_size = filesize($attachment_root_dir . $file["file"]);
|
140 |
+
if (($this->skip_small_images($image_size) === true && $this->skip_large_images($image_size) === true) || $this->is_single == true) {
|
141 |
+
$image = array();
|
142 |
+
$image["path"] = $attachment_root_url . $file["file"];
|
143 |
+
$image["file"] = $attachment_root_dir . $file["file"];
|
144 |
+
$image["post_id"] = $attachment->ID;
|
145 |
+
$image["size"] = $size;
|
146 |
+
$image["image_size"] = $image_size;
|
147 |
+
$image["media"] = 1;
|
148 |
+
$image["converted"] = 0;
|
149 |
+
$image["resized"] = 0;
|
150 |
+
$image["single"] = $this->is_single;
|
151 |
+
$image["transparent"] = $type == "png" && IOWD_Util::is_transparent_png($attachment_root_dir . $file["file"]) ? 1 : 0;
|
152 |
+
|
153 |
+
|
154 |
+
$image_data[] = $image;
|
155 |
+
}
|
156 |
+
}
|
157 |
+
}
|
158 |
+
}
|
159 |
+
}
|
160 |
+
|
161 |
+
if ($include_others == true) {
|
162 |
+
|
163 |
+
$protocaol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http';
|
164 |
+
|
165 |
+
$all_dirs = $options["other_folders"] ? json_decode(htmlspecialchars_decode(stripslashes($options["other_folders"])), true) : array();
|
166 |
+
|
167 |
+
$other_images = array();
|
168 |
+
if (empty($all_dirs) === false) {
|
169 |
+
foreach ($all_dirs as $dir => $image_path) {
|
170 |
+
foreach ($image_path as $path) {
|
171 |
+
$other_images[] = $path;
|
172 |
+
}
|
173 |
+
}
|
174 |
+
}
|
175 |
+
|
176 |
+
$other_images = array_unique($other_images);
|
177 |
+
|
178 |
+
$i = 1;
|
179 |
+
if (empty($other_images) === false) {
|
180 |
+
global $wpdb;
|
181 |
+
$max_iowd_post = $wpdb->get_row("SELECT post_id, id FROM " . $wpdb->prefix . "iowd_images WHERE post_id LIKE '%iowd_%' ORDER BY id DESC LIMIT 0,1");
|
182 |
+
|
183 |
+
$max_iowd_post = $max_iowd_post ? substr($max_iowd_post->post_id, 5) + 1 : 1;
|
184 |
+
|
185 |
+
foreach ($other_images as $other_image) {
|
186 |
+
$other_path = str_replace($protocaol . '://' . $_SERVER['SERVER_NAME'], $_SERVER['DOCUMENT_ROOT'], $other_image);
|
187 |
+
|
188 |
+
if (!file_exists($other_path)) {
|
189 |
+
continue;
|
190 |
+
}
|
191 |
+
$size = filesize($other_path);
|
192 |
+
$type = pathinfo($other_image, PATHINFO_EXTENSION);
|
193 |
+
|
194 |
+
if ($this->check_optimization_level($type) === false || $this->skip_small_images($size) === false || $this->skip_large_images($size) === false || !in_array(strtolower($type), $this->allowed_types)) {
|
195 |
+
continue;
|
196 |
+
}
|
197 |
+
|
198 |
+
$image = array();
|
199 |
+
$image["path"] = $other_image;
|
200 |
+
$image["file"] = str_replace($protocaol . '://' . $_SERVER['SERVER_NAME'], $_SERVER['DOCUMENT_ROOT'], $other_image);
|
201 |
+
$image["post_id"] = "iowd_" . $max_iowd_post;
|
202 |
+
$image["size"] = "full";
|
203 |
+
|
204 |
+
$image["image_size"] = $size;
|
205 |
+
$image["media"] = 0;
|
206 |
+
$image["converted"] = 0;
|
207 |
+
$image["resized"] = 0;
|
208 |
+
$image["single"] = $this->is_single;
|
209 |
+
$image["transparent"] = $type == "png" && IOWD_Util::is_transparent_png($image["file"]) ? 1 : 0;
|
210 |
+
|
211 |
+
$image_data[] = $image;
|
212 |
+
$i++;
|
213 |
+
$max_iowd_post++;
|
214 |
+
}
|
215 |
+
}
|
216 |
+
}
|
217 |
+
|
218 |
+
if (!is_null($remained)) {
|
219 |
+
$image_data = array_slice($image_data, 0, $remained);
|
220 |
+
}
|
221 |
+
|
222 |
+
$images_count = count($image_data);
|
223 |
+
$attachments_data = array();
|
224 |
+
if ($images_count > $this->images_count) {
|
225 |
+
for ($i = 0; $i < ceil($images_count / $this->images_count); $i++) {
|
226 |
+
$attachments_data[$i] = array_slice($image_data, $i * $this->images_count, $this->images_count);
|
227 |
+
}
|
228 |
+
} else {
|
229 |
+
$attachments_data[0] = $image_data;
|
230 |
+
}
|
231 |
+
|
232 |
+
return $attachments_data;
|
233 |
+
|
234 |
+
}
|
235 |
+
|
236 |
+
private function check_optimization_level($mime_type)
|
237 |
+
{
|
238 |
+
$options = $this->options;
|
239 |
+
|
240 |
+
switch (strtolower($mime_type)) {
|
241 |
+
case "jpg":
|
242 |
+
case "jpeg":
|
243 |
+
if (!$options["jpg_optimization_levels"]) {
|
244 |
+
return false;
|
245 |
+
}
|
246 |
+
break;
|
247 |
+
|
248 |
+
case "png":
|
249 |
+
if (!$options["png_optimization_levels"]) {
|
250 |
+
return false;
|
251 |
+
}
|
252 |
+
break;
|
253 |
+
|
254 |
+
case "gif":
|
255 |
+
if (!$options["gif_optimization_levels"]) {
|
256 |
+
return false;
|
257 |
+
}
|
258 |
+
break;
|
259 |
+
|
260 |
+
case "pdf":
|
261 |
+
if (!$options["pdf_optimization_levels"]) {
|
262 |
+
return false;
|
263 |
+
}
|
264 |
+
break;
|
265 |
+
}
|
266 |
+
|
267 |
+
return true;
|
268 |
+
}
|
269 |
+
|
270 |
+
private function skip_small_images($size)
|
271 |
+
{
|
272 |
+
$options = $this->options;
|
273 |
+
if ($size < (int)$options["skip_small_images"] * 1048576 && $options["skip_small_images"]) {
|
274 |
+
return false;
|
275 |
+
}
|
276 |
+
|
277 |
+
return true;
|
278 |
+
}
|
279 |
+
|
280 |
+
private function skip_large_images($size)
|
281 |
+
{
|
282 |
+
$options = $this->options;
|
283 |
+
if ($size > (int)$options["skip_large_images"] * 1048576 && $options["skip_large_images"]) {
|
284 |
+
return false;
|
285 |
+
}
|
286 |
+
|
287 |
+
return true;
|
288 |
+
}
|
289 |
+
|
290 |
+
public function scan($ids = array(), $include_others = false, $remained = null)
|
291 |
+
{
|
292 |
+
$options = $this->options;
|
293 |
+
$attachments = $this->get_attachments($ids, $include_others);
|
294 |
+
|
295 |
+
global $wpdb;
|
296 |
+
$where = "";
|
297 |
+
$rows = $wpdb->get_results("SELECT * FROM " . $wpdb->prefix . "iowd_images " . $where);
|
298 |
+
$optimized_data = array();
|
299 |
+
|
300 |
+
$all_data_count = array();
|
301 |
+
$optimized_data_count = array();
|
302 |
+
$all_data = array();
|
303 |
+
|
304 |
+
$for_checking = array();
|
305 |
+
for ($i = 0; $i < count($attachments); $i++) {
|
306 |
+
foreach ($attachments[$i] as $attachment) {
|
307 |
+
if (!in_array($attachment["path"], $for_checking)) {
|
308 |
+
if ($attachment["media"] == 1) {
|
309 |
+
$all_data[$attachment["post_id"] . ":" . $attachment["size"]] = $attachment["post_id"] . ":" . $attachment["size"];
|
310 |
+
$all_data_count[$attachment["post_id"]] = $attachment["post_id"];
|
311 |
+
} else {
|
312 |
+
$all_data["iowd_" . $attachment["path"]] = "iowd_" . $attachment["path"];
|
313 |
+
$all_data_count[$attachment["path"]] = $attachment["path"];
|
314 |
+
}
|
315 |
+
}
|
316 |
+
$for_checking[] = $attachment["path"];
|
317 |
+
}
|
318 |
+
}
|
319 |
+
|
320 |
+
foreach ($rows as $row) {
|
321 |
+
$optimization_type = $this->get_current_opt_level($row->path);
|
322 |
+
$already_optimized = explode(",", $row->already_optimized);
|
323 |
+
$already_optimized = array_unique($already_optimized);
|
324 |
+
|
325 |
+
if ($options["optimize_once_more"] == "1" && (($optimization_type == "losselss" && empty($already_optimized) == true) || ($optimization_type == "lossy40" && ($already_optimized == array("lossless") || empty($already_optimized) == true)) || ($optimization_type == "lossy" && !in_array("lossy", $already_optimized)))) {
|
326 |
+
continue;
|
327 |
+
}
|
328 |
+
|
329 |
+
if ($row->media == 1) {
|
330 |
+
$optimized_data[$row->post_id . ":" . $row->size] = $row->post_id . ":" . $row->size;
|
331 |
+
$optimized_data_count[$row->post_id] = $row->post_id;
|
332 |
+
} else {
|
333 |
+
$optimized_data["iowd_" . $row->path] = "iowd_" . $row->path;
|
334 |
+
$optimized_data_count[$row->path] = $row->path;
|
335 |
+
}
|
336 |
+
}
|
337 |
+
|
338 |
+
$optimize_all_diff = array_diff($optimized_data, $all_data);
|
339 |
+
$not_optimized_data = array_diff($all_data, $optimized_data);
|
340 |
+
$all_data = $all_data + $optimize_all_diff;
|
341 |
+
|
342 |
+
|
343 |
+
$optimize_all_diff_count = array_diff($optimized_data_count, $all_data_count);
|
344 |
+
$not_optimized_data_count = array_diff($all_data_count, $optimized_data_count);
|
345 |
+
$all_data_count = $all_data_count + $optimize_all_diff_count;
|
346 |
+
|
347 |
+
|
348 |
+
$not_optimized_data_other = array_filter($not_optimized_data, function ($elem) {
|
349 |
+
if (strpos($elem, "iowd_") !== false) {
|
350 |
+
return $elem;
|
351 |
+
}
|
352 |
+
});
|
353 |
+
|
354 |
+
$not_optimized_data_media_count = count($not_optimized_data_count) - count($not_optimized_data_other);
|
355 |
+
$not_optimized_data_media = count($not_optimized_data) - count($not_optimized_data_other);
|
356 |
+
|
357 |
+
$image_data = array();
|
358 |
+
|
359 |
+
for ($i = 0; $i < count($attachments); $i++) {
|
360 |
+
foreach ($attachments[$i] as $attachment) {
|
361 |
+
if (in_array($attachment["post_id"] . ":" . $attachment["size"], $not_optimized_data) || in_array("iowd_" . $attachment["path"], $not_optimized_data)) {
|
362 |
+
$image_data[] = $attachment;
|
363 |
+
}
|
364 |
+
}
|
365 |
+
}
|
366 |
+
|
367 |
+
if (!is_null($remained)) {
|
368 |
+
$image_data = array_slice($image_data, 0, $remained);
|
369 |
+
}
|
370 |
+
|
371 |
+
$images_count = count($image_data);
|
372 |
+
$attachments_data = array();
|
373 |
+
if ($images_count > $this->images_count) {
|
374 |
+
for ($i = 0; $i < ceil($images_count / $this->images_count); $i++) {
|
375 |
+
$attachments_data[$i] = array_slice($image_data, $i * $this->images_count, $this->images_count);
|
376 |
+
}
|
377 |
+
} else {
|
378 |
+
$attachments_data[0] = $image_data;
|
379 |
+
}
|
380 |
+
|
381 |
+
|
382 |
+
return array(
|
383 |
+
"optimized_data" => count($optimized_data_count),
|
384 |
+
"optimized_data_sizes" => count($optimized_data),
|
385 |
+
"not_optimized_data" => count($not_optimized_data_count),
|
386 |
+
"not_optimized_data_sizes" => count($not_optimized_data),
|
387 |
+
"not_optimized_data_media" => $not_optimized_data_media_count,
|
388 |
+
"not_optimized_data_media_sizes" => $not_optimized_data_media,
|
389 |
+
"not_optimized_data_other" => count($not_optimized_data_other),
|
390 |
+
"all_data" => count($all_data_count),
|
391 |
+
"all_data_sizes" => count($all_data),
|
392 |
+
"attachments_data" => $attachments_data
|
393 |
+
);
|
394 |
+
}
|
395 |
+
|
396 |
+
private function get_current_opt_level($path)
|
397 |
+
{
|
398 |
+
$options = $this->options;
|
399 |
+
$mime_type = strtolower(pathinfo($path, PATHINFO_EXTENSION));
|
400 |
+
$mime_type = $mime_type == "jpeg" ? "jpg" : $mime_type;
|
401 |
+
$optimization_type = isset($options[$mime_type . "_optimization_levels"]) ? $options[$mime_type . "_optimization_levels"] : "0";
|
402 |
+
|
403 |
+
return $optimization_type;
|
404 |
+
}
|
405 |
+
|
406 |
+
public function optimize($iteration, $id = '', $auto = 0, $meta = array())
|
407 |
+
{
|
408 |
+
$abort = get_option("iowd_abort");
|
409 |
+
if (!$abort) {
|
410 |
+
$images_data = get_option("iowd_image_temp_data_" . $id);
|
411 |
+
if ($this->is_single == true) {
|
412 |
+
$images_data = $images_data[0];
|
413 |
+
} else {
|
414 |
+
$images_data = $images_data[$iteration];
|
415 |
+
}
|
416 |
+
|
417 |
+
if (empty($images_data) === false) {
|
418 |
+
|
419 |
+
$options = json_decode(get_option(IOWD_PREFIX . "_options"), true);
|
420 |
+
$s3 = new IOWD_Amazon_S3($id);
|
421 |
+
|
422 |
+
$data = array();
|
423 |
+
$response = array();
|
424 |
+
$post_ids = array();
|
425 |
+
for ($i = 0; $i < count($images_data); $i++) {
|
426 |
+
$image_data = $images_data[$i];
|
427 |
+
// if enable resizing
|
428 |
+
if ($options["enable_resizing"] == 1 || $options["enable_resizing_other"] == 1) {
|
429 |
+
$resize_data = $this->resize($image_data, $meta);
|
430 |
+
$image_data = $resize_data[0];
|
431 |
+
$meta = $resize_data[1];
|
432 |
+
}
|
433 |
+
|
434 |
+
// upload files to s3
|
435 |
+
$response[] = $s3->upload($image_data["file"]);
|
436 |
+
|
437 |
+
$data[$i] = array(
|
438 |
+
"path" => $image_data["path"],
|
439 |
+
"file" => $image_data["file"],
|
440 |
+
"transparent" => $image_data["transparent"],
|
441 |
+
"post_id" => $image_data["post_id"],
|
442 |
+
"size" => $image_data["size"],
|
443 |
+
"image_size" => $image_data["image_size"],
|
444 |
+
);
|
445 |
+
$post_ids[] = $image_data["post_id"];
|
446 |
+
}
|
447 |
+
|
448 |
+
//update image count data
|
449 |
+
$iowd_images_count_start = (int)get_transient("iowd_images_count_start");
|
450 |
+
$iowd_images_count_start += count($images_data);
|
451 |
+
set_transient("iowd_images_count_start", $iowd_images_count_start);
|
452 |
+
|
453 |
+
//update post ids data
|
454 |
+
$db_post_ids = get_transient("iowd_optimizing_post_ids") ? get_transient("iowd_optimizing_post_ids") : array();
|
455 |
+
$db_post_ids = array_merge($db_post_ids, $post_ids);
|
456 |
+
$db_post_ids = array_unique($db_post_ids);
|
457 |
+
set_transient("iowd_optimizing_post_ids", $db_post_ids);
|
458 |
+
|
459 |
+
GuzzleHttp\Promise\unwrap($response);
|
460 |
+
$response = $this->api_call_ajax($data, $s3->folder_name, $s3->sub_folder_name, $s3->credentials, $iteration, $id);
|
461 |
+
if (isset($response["status"]) && $response["status"] == "error") {
|
462 |
+
set_transient("iowd_response_error", $response["error"]);
|
463 |
+
delete_transient("iowd_images_count_start");
|
464 |
+
delete_transient("iowd_optimizing_post_ids");
|
465 |
+
}
|
466 |
+
if ($auto == 0) {
|
467 |
+
return array("iowd_images_count_start" => $iowd_images_count_start, "response" => $response);
|
468 |
+
}
|
469 |
+
}
|
470 |
+
} else {
|
471 |
+
delete_option("iowd_abort");
|
472 |
+
if ($auto == 0) {
|
473 |
+
return array("iowd_images_count_start" => 0, "response" => array("status" => "abort"));
|
474 |
+
}
|
475 |
+
}
|
476 |
+
|
477 |
+
return $meta;
|
478 |
+
|
479 |
+
}
|
480 |
+
|
481 |
+
public function resize($item, $meta = array())
|
482 |
+
{
|
483 |
+
$db = new IOWDDB_Class();
|
484 |
+
$db->set_table_name("iowd_images");
|
485 |
+
$options = json_decode(get_option(IOWD_PREFIX . "_options"), true);
|
486 |
+
// do optional resizing and coversions
|
487 |
+
if ($item) {
|
488 |
+
$iowd_image = new IOWDImage();
|
489 |
+
$row = $db->get_row_by_field(array("path" => $item["path"]));
|
490 |
+
$resized = $row && $row->resized ? 1 : 0;
|
491 |
+
$item["resized"] = $resized;
|
492 |
+
|
493 |
+
if ($resized == 0) {
|
494 |
+
$iowd_image->load_image($item["file"]);
|
495 |
+
if ($options["keep_originals"] == 1) {
|
496 |
+
$this->keep_originals($item["file"]);
|
497 |
+
}
|
498 |
+
$flag = false;
|
499 |
+
list($width) = @getimagesize($item["file"]);
|
500 |
+
if ($item["media"] == 1 && $options["resize_media_images_width"] && $options["resize_media_images_height"] && $width > $options["resize_media_images_width"] && $options["enable_resizing"] == 1 && $item["size"] == "full") {
|
501 |
+
$iowd_image->resize($options["resize_media_images_width"], $options["resize_media_images_height"]);
|
502 |
+
$flag = true;
|
503 |
+
} else if ($item["media"] == 0 && $options["resize_other_images_width"] && $options["resize_other_images_height"] && $width > $options["resize_other_images_width"] && $options["enable_resizing_other"] == 1) {
|
504 |
+
$iowd_image->resize($options["resize_other_images_width"], $options["resize_other_images_height"]);
|
505 |
+
$flag = true;
|
506 |
+
}
|
507 |
+
|
508 |
+
if ($flag == true) {
|
509 |
+
$item["resized"] = 1;
|
510 |
+
list($width, $height) = @getimagesize($item["file"]);
|
511 |
+
if (!$meta) {
|
512 |
+
$_wp_attachment_metadata = get_post_meta($item["post_id"], "_wp_attachment_metadata");
|
513 |
+
$_wp_attachment_metadata = $_wp_attachment_metadata[0];
|
514 |
+
$_wp_attachment_metadata["width"] = $width;
|
515 |
+
$_wp_attachment_metadata["height"] = $height;
|
516 |
+
update_post_meta($item["post_id"], "_wp_attachment_metadata", $_wp_attachment_metadata);
|
517 |
+
} else {
|
518 |
+
$meta["width"] = $width;
|
519 |
+
$meta["height"] = $height;
|
520 |
+
}
|
521 |
+
}
|
522 |
+
|
523 |
+
}
|
524 |
+
|
525 |
+
}
|
526 |
+
|
527 |
+
return array($item, $meta);
|
528 |
+
}
|
529 |
+
|
530 |
+
public function keep_originals($file)
|
531 |
+
{
|
532 |
+
$filename = basename($file);
|
533 |
+
$dest = str_replace($filename, "", $file);
|
534 |
+
$copy = true;
|
535 |
+
if (!file_exists($dest . "/.iowd_orig")) {
|
536 |
+
mkdir($dest . "/.iowd_orig");
|
537 |
+
} else {
|
538 |
+
if (file_exists($dest . "/.iowd_orig/" . $filename)) {
|
539 |
+
$copy = false;
|
540 |
+
}
|
541 |
+
}
|
542 |
+
if ($copy) {
|
543 |
+
copy($dest . $filename, $dest . "/.iowd_orig/" . $filename);
|
544 |
+
}
|
545 |
+
|
546 |
+
}
|
547 |
+
|
548 |
+
public function api_call_ajax($data, $folder_name, $sub_folder_name, $credentials, $iteration, $id)
|
549 |
+
{
|
550 |
+
|
551 |
+
if ($data) {
|
552 |
+
// make api call
|
553 |
+
$wd_options = json_decode(get_option(IOWD_PREFIX . "_options"), true);
|
554 |
+
$options = array(
|
555 |
+
"keep_exif_data" => $wd_options["keep_exif_data"],
|
556 |
+
"exclude_full_size_metadata_removal" => $wd_options["exclude_full_size_metadata_removal"],
|
557 |
+
"jpg_optimization_levels" => $wd_options["jpg_optimization_levels"],
|
558 |
+
"png_optimization_levels" => $wd_options["png_optimization_levels"],
|
559 |
+
"gif_optimization_levels" => $wd_options["gif_optimization_levels"],
|
560 |
+
);
|
561 |
+
|
562 |
+
$request_data = array(
|
563 |
+
"domain" => site_url(),
|
564 |
+
"folder_name" => $folder_name,
|
565 |
+
"sub_folder_name" => $sub_folder_name,
|
566 |
+
"options" => $options,
|
567 |
+
"images_data" => $data,
|
568 |
+
"credentials" => $credentials,
|
569 |
+
"iteration" => $iteration,
|
570 |
+
"id" => $id,
|
571 |
+
);
|
572 |
+
$headers = array(
|
573 |
+
//'accept' => 'application/json',
|
574 |
+
//'content-type' => 'application/json',
|
575 |
+
);
|
576 |
+
|
577 |
+
IOWD_Api::set_post_headers_data($headers);
|
578 |
+
IOWD_Api::set_post_data($request_data);
|
579 |
+
IOWD_Api::set_api_action("compress");
|
580 |
+
$response = IOWD_Api::api_request();
|
581 |
+
|
582 |
+
return $response;
|
583 |
+
}
|
584 |
+
|
585 |
+
return false;
|
586 |
+
}
|
587 |
+
|
588 |
+
|
589 |
+
public function save_data_to_db($body, $iterator, $post_id = '')
|
590 |
+
{
|
591 |
+
global $wpdb;
|
592 |
+
$options = json_decode(get_option(IOWD_PREFIX . "_options"), true);
|
593 |
+
|
594 |
+
$request = get_option("iowd_image_temp_data_" . $post_id);
|
595 |
+
$request = isset($request[$iterator]) ? $request[$iterator] : array();
|
596 |
+
$_image_size = 0;
|
597 |
+
$_image_orig_size = 0;
|
598 |
+
$_image_count = 0;
|
599 |
+
for ($i = 0; $i < count($request); $i++) {
|
600 |
+
$request_row = $request[$i];
|
601 |
+
$response_row = isset($body[$request_row["post_id"] . ":" . $request_row["size"]]) ? $body[$request_row["post_id"] . ":" . $request_row["size"]] : false;
|
602 |
+
|
603 |
+
if ($response_row === false) {
|
604 |
+
continue;
|
605 |
+
}
|
606 |
+
$existing_row = $wpdb->get_row("SELECT id, image_orig_size, image_size,already_optimized FROM " . $wpdb->prefix . "iowd_images WHERE path='" . $request_row["path"] . "' AND post_id='" . $request_row["post_id"] . "'");
|
607 |
+
|
608 |
+
$type = strtolower(pathinfo($request_row["path"], PATHINFO_EXTENSION));
|
609 |
+
if ($existing_row && $existing_row->image_size == $response_row["image_size"] && $type != "webp") {
|
610 |
+
continue;
|
611 |
+
}
|
612 |
+
|
613 |
+
if ($options["enable_conversion"] == 1) {
|
614 |
+
$request_row = $this->convert($request_row);
|
615 |
+
}
|
616 |
+
|
617 |
+
$image_size = isset($request_row["converted_image_size"]) ? $request_row["converted_image_size"] : ((int)$response_row["image_size"] > (int)$request_row["image_size"] ? $request_row["image_size"] : $response_row["image_size"]);
|
618 |
+
|
619 |
+
$row_data = array(
|
620 |
+
"post_id" => $request_row["post_id"],
|
621 |
+
"size" => $request_row["size"],
|
622 |
+
"path" => $request_row["path"],
|
623 |
+
"image_size" => $image_size,
|
624 |
+
"status" => $response_row["status"],
|
625 |
+
"updated_date" => date("Y-m-d H:i:s"),
|
626 |
+
"media" => $request_row["media"],
|
627 |
+
"resized" => $request_row["resized"],
|
628 |
+
"converted" => $request_row["converted"],
|
629 |
+
);
|
630 |
+
$types = array("%s", "%s", "%s", "%d", "%s", "%s", "%d", "%d", "%d");
|
631 |
+
$optimization_type = $this->get_current_opt_level($request_row["path"]);
|
632 |
+
if (!$existing_row) {
|
633 |
+
$row_data["already_optimized"] = $optimization_type;
|
634 |
+
$row_data["image_orig_size"] = $request_row["image_size"];
|
635 |
+
|
636 |
+
$img_orig_size = $request_row["image_size"];
|
637 |
+
array_push($types, "%s", "%d");
|
638 |
+
// insert to db
|
639 |
+
$wpdb->insert($wpdb->prefix . "iowd_images", $row_data, $types);
|
640 |
+
} else {
|
641 |
+
$row_data["already_optimized"] = $existing_row->already_optimized . "," . $optimization_type;
|
642 |
+
array_push($types, "%s");
|
643 |
+
$img_orig_size = $existing_row->image_orig_size;
|
644 |
+
// update db
|
645 |
+
$wpdb->update($wpdb->prefix . "iowd_images", $row_data, array("id" => $existing_row->id), $types);
|
646 |
+
}
|
647 |
+
$_image_size += $row_data["image_size"];
|
648 |
+
$_image_orig_size += $img_orig_size;
|
649 |
+
$_image_count += 1;
|
650 |
+
}
|
651 |
+
|
652 |
+
$last_optimized_data = get_site_transient("iowd_last_optimized_data");
|
653 |
+
$last_optimized_data = $last_optimized_data ? json_decode($last_optimized_data, true) : array("image_size" => 0, "image_orig_size" => 0, "image_count" => 0);
|
654 |
+
|
655 |
+
$last_optimized_data["image_size"] = $last_optimized_data["image_size"] + $_image_size;
|
656 |
+
$last_optimized_data["image_orig_size"] = $last_optimized_data["image_orig_size"] + $_image_orig_size;
|
657 |
+
$last_optimized_data["image_count"] = $last_optimized_data["image_count"] + $_image_count;
|
658 |
+
|
659 |
+
$already_optimized = get_site_transient("iowd_already_optimized");
|
660 |
+
set_site_transient("iowd_already_optimized", ($already_optimized + $_image_count), 43200);
|
661 |
+
|
662 |
+
set_site_transient("iowd_last_optimized_data", json_encode($last_optimized_data));
|
663 |
+
|
664 |
+
}
|
665 |
+
|
666 |
+
|
667 |
+
public function convert(&$item)
|
668 |
+
{
|
669 |
+
require_once IOWD_DIR_CLASSES . "/iowdimage.php";
|
670 |
+
require_once IOWD_DIR_INCLUDES . "/iowd-util.php";
|
671 |
+
$options = json_decode(get_option(IOWD_PREFIX . "_options"), true);
|
672 |
+
|
673 |
+
$iowd_image = new IOWDImage();
|
674 |
+
$original_file = $item["file"];
|
675 |
+
|
676 |
+
$mime_type = strtolower(pathinfo($item["file"], PATHINFO_EXTENSION));
|
677 |
+
$flag = false;
|
678 |
+
$iowd_image->load_image($original_file);
|
679 |
+
if (($options["jpg_to_png"] == 1 && ($mime_type == "jpg" || $mime_type == "jpeg")) || ($options["gif_to_png"] == 1 && $mime_type == "gif")) {
|
680 |
+
$iowd_image->convert_to_png();
|
681 |
+
$flag = "png";
|
682 |
+
|
683 |
+
} else if ($options["png_to_jpg"] == 1 && $mime_type == "png") {
|
684 |
+
$iowd_image->convert_to_jpg();
|
685 |
+
$flag = "jpg";
|
686 |
+
} else if (($options["jpg_to_webp"] == 1 && ($mime_type == "jpg" || $mime_type == "jpeg")) || ($options["png_to_webp"] == 1 && $mime_type == "png")) {
|
687 |
+
$iowd_image->convert_to_webp();
|
688 |
+
$flag = "webp";
|
689 |
+
|
690 |
+
}
|
691 |
+
|
692 |
+
if ($flag) {
|
693 |
+
$item["converted"] = 1;
|
694 |
+
if ($item["media"] == 1) {
|
695 |
+
if ($item["size"] == "full") {
|
696 |
+
global $wpdb;
|
697 |
+
// Update the post into the database
|
698 |
+
$wpdb->query("UPDATE wp_posts SET guid = CONCAT(TRIM(TRAILING '" . $mime_type . "' FROM guid), '" . $flag . "'),
|
699 |
+
|
700 |
+
post_mime_type = 'image/" . $flag . "' WHERE ID='" . $item["post_id"] . "'");
|
701 |
+
|
702 |
+
|
703 |
+
// Update the post meta into the database
|
704 |
+
$_wp_attached_file = get_post_meta($item["post_id"], "_wp_attached_file");
|
705 |
+
$_wp_attached_file = $_wp_attached_file[0];
|
706 |
+
$updated__wp_attached_file = IOWD_Util::str_lreplace($mime_type, $flag, $_wp_attached_file);
|
707 |
+
update_post_meta($item["post_id"], "_wp_attached_file", $updated__wp_attached_file);
|
708 |
+
|
709 |
+
$_wp_attachment_metadata = get_post_meta($item["post_id"], "_wp_attachment_metadata");
|
710 |
+
$_wp_attachment_metadata = $_wp_attachment_metadata[0];
|
711 |
+
$_wp_attachment_metadata["file"] = IOWD_Util::str_lreplace($mime_type, $flag, $_wp_attachment_metadata["file"]);
|
712 |
+
update_post_meta($item["post_id"], "_wp_attachment_metadata", $_wp_attachment_metadata);
|
713 |
+
|
714 |
+
} else {
|
715 |
+
$_wp_attachment_metadata = get_post_meta($item["post_id"], "_wp_attachment_metadata");
|
716 |
+
$_wp_attachment_metadata = $_wp_attachment_metadata[0];
|
717 |
+
$_wp_attachment_metadata["sizes"][$item["size"]]["file"] = IOWD_Util::str_lreplace($mime_type, $flag, $_wp_attachment_metadata["sizes"][$item["size"]]["file"]);
|
718 |
+
$_wp_attachment_metadata["sizes"][$item["size"]]["mime-type"] = "image/" . $flag;
|
719 |
+
update_post_meta($item["post_id"], "_wp_attachment_metadata", $_wp_attachment_metadata);
|
720 |
+
|
721 |
+
}
|
722 |
+
}
|
723 |
+
|
724 |
+
$image_name = str_replace("." . $mime_type, "", basename($item["file"]));
|
725 |
+
$converted_path = str_replace(basename($item["path"]), "", $item["path"]) . $image_name . "." . $flag;
|
726 |
+
|
727 |
+
$converted_file = str_replace(basename($item["file"]), "", $item["file"]) . $image_name . "." . $flag;
|
728 |
+
|
729 |
+
$converted_image_size = filesize($converted_file);
|
730 |
+
|
731 |
+
$item["converted_image_size"] = $converted_image_size;
|
732 |
+
$item["path"] = $converted_path;
|
733 |
+
|
734 |
+
|
735 |
+
unlink($original_file);
|
736 |
+
}
|
737 |
+
|
738 |
+
return $item;
|
739 |
+
|
740 |
+
}
|
741 |
+
|
742 |
+
|
743 |
+
}
|
includes/iowd-report.php
ADDED
@@ -0,0 +1,125 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
if (!defined('ABSPATH')) {
|
3 |
+
exit;
|
4 |
+
}
|
5 |
+
|
6 |
+
class IOWD_Report
|
7 |
+
{
|
8 |
+
private $filter_path = "";
|
9 |
+
private $filter_start_date = "";
|
10 |
+
private $filter_end_date = "";
|
11 |
+
private $filter_size_from = "";
|
12 |
+
private $filter_size_to = "";
|
13 |
+
private $filter_type = "";
|
14 |
+
private $limit = 10;
|
15 |
+
|
16 |
+
public function __construct()
|
17 |
+
{
|
18 |
+
if (isset($_POST["path"]) && $_POST["path"] != "") {
|
19 |
+
$this->filter_path = $_POST["path"];
|
20 |
+
}
|
21 |
+
if (isset($_POST["start_date"]) && $_POST["start_date"] != "") {
|
22 |
+
$this->filter_start_date = $_POST["start_date"];
|
23 |
+
}
|
24 |
+
if (isset($_POST["end_date"]) && $_POST["end_date"] != "") {
|
25 |
+
$this->filter_end_date = $_POST["end_date"];
|
26 |
+
}
|
27 |
+
if (isset($_POST["size_from"]) && $_POST["size_from"] != "") {
|
28 |
+
$this->filter_size_from = $_POST["size_from"];
|
29 |
+
}
|
30 |
+
if (isset($_POST["size_to"]) && $_POST["size_to"] != "") {
|
31 |
+
$this->filter_size_to = $_POST["size_to"];
|
32 |
+
}
|
33 |
+
if (isset($_POST["type"]) && $_POST["type"] != "") {
|
34 |
+
$this->filter_type = $_POST["type"];
|
35 |
+
}
|
36 |
+
|
37 |
+
if (isset($_POST["limit"]) && $_POST["limit"] != "") {
|
38 |
+
$this->limit = $_POST["limit"];
|
39 |
+
}
|
40 |
+
}
|
41 |
+
|
42 |
+
public function display()
|
43 |
+
{
|
44 |
+
// get options
|
45 |
+
$options = json_decode(get_option(IOWD_PREFIX . "_options"), true);
|
46 |
+
|
47 |
+
// report data
|
48 |
+
$data = $this->report_data();
|
49 |
+
$report_data = $data["rows"];
|
50 |
+
$total_count = $data["total_count"];
|
51 |
+
$total_orig_size = $data["total_image_orig_size"];
|
52 |
+
$total_size = $data["total_image_size"];
|
53 |
+
|
54 |
+
$limit = $data["limit"];
|
55 |
+
|
56 |
+
$file_types = array("" => "-" . __("Select", IOWD_PREFIX) . "-", "jpg" => "jpg", "png" => "png", "gif" => "gif", "pdf" => "pdf");
|
57 |
+
|
58 |
+
// require view template
|
59 |
+
require_once(IOWD_DIR_VIEWS . '/iowd_report_display.php');
|
60 |
+
}
|
61 |
+
|
62 |
+
|
63 |
+
public function report_data()
|
64 |
+
{
|
65 |
+
global $wpdb;
|
66 |
+
$where = array();
|
67 |
+
if ($this->filter_path) {
|
68 |
+
$where[] = " path LIKE '%" . $this->filter_path . "%' ";
|
69 |
+
}
|
70 |
+
if ($this->filter_start_date) {
|
71 |
+
$where[] = " updated_date >= '" . $this->filter_start_date . "' ";
|
72 |
+
}
|
73 |
+
if ($this->filter_end_date) {
|
74 |
+
$where[] = " updated_date <= '" . $this->filter_end_date . "' ";
|
75 |
+
}
|
76 |
+
if ($this->filter_size_from) {
|
77 |
+
$where[] = " image_size >= " . (int)$this->filter_size_from . " ";
|
78 |
+
}
|
79 |
+
if ($this->filter_size_to) {
|
80 |
+
$where[] = " image_size <= " . (int)$this->filter_size_to . " ";
|
81 |
+
}
|
82 |
+
if ($this->filter_type) {
|
83 |
+
if ($this->filter_type == "jpg") {
|
84 |
+
$where[] = " ( LOWER(SUBSTRING_INDEX(path,'.',-1)) = 'jpg' OR LOWER(SUBSTRING_INDEX(path,'.',-1)) = 'jpeg' )";
|
85 |
+
} else {
|
86 |
+
$where[] = " LOWER(SUBSTRING_INDEX(path,'.',-1)) = '" . $this->filter_type . "' ";
|
87 |
+
}
|
88 |
+
|
89 |
+
}
|
90 |
+
$where = count($where) > 0 ? " AND " . implode(" AND ", $where) : "";
|
91 |
+
|
92 |
+
$rows = $wpdb->get_results("SELECT id, image_orig_size, image_size, path, post_id, DATE(updated_date) AS date FROM " . $wpdb->prefix . "iowd_images WHERE deleted=0 " . $where . " ORDER BY id DESC LIMIT 0, " . $this->limit);
|
93 |
+
|
94 |
+
$total_data = $wpdb->get_row("SELECT COUNT(id) AS count, SUM(image_orig_size) AS total_image_orig_size, SUM(image_size) AS total_image_size FROM " . $wpdb->prefix . "iowd_images WHERE deleted=0 " . $where);
|
95 |
+
|
96 |
+
$count = $total_data ? $total_data->count : 0;
|
97 |
+
$total_image_orig_size = $total_data ? $total_data->total_image_orig_size : 0;
|
98 |
+
$total_image_size = $total_data ? $total_data->total_image_size : 0;
|
99 |
+
|
100 |
+
$sizes = array(
|
101 |
+
"500000" => "0.5MB",
|
102 |
+
"1000000" => "1MB",
|
103 |
+
"2000000" => "2MB",
|
104 |
+
"4000000" => "4MB",
|
105 |
+
"8000000" => "8MB",
|
106 |
+
"14000000" => "14MB",
|
107 |
+
);
|
108 |
+
|
109 |
+
$data = array(
|
110 |
+
"rows" => $rows,
|
111 |
+
"total_count" => $count,
|
112 |
+
"total_image_orig_size" => $total_image_orig_size,
|
113 |
+
"total_image_size" => $total_image_size,
|
114 |
+
"limit" => $this->limit,
|
115 |
+
"sizes" => $sizes,
|
116 |
+
);
|
117 |
+
|
118 |
+
return $data;
|
119 |
+
|
120 |
+
}
|
121 |
+
|
122 |
+
|
123 |
+
}
|
124 |
+
|
125 |
+
|
includes/iowd-settings.php
ADDED
@@ -0,0 +1,691 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
if (!defined('ABSPATH')) {
|
3 |
+
exit;
|
4 |
+
}
|
5 |
+
|
6 |
+
class IOWD_Settings
|
7 |
+
{
|
8 |
+
|
9 |
+
private $tabs = array();
|
10 |
+
|
11 |
+
|
12 |
+
public function __construct()
|
13 |
+
{
|
14 |
+
|
15 |
+
$fields = $this->get_fields();
|
16 |
+
|
17 |
+
$this->tabs = array(
|
18 |
+
'general' => array(
|
19 |
+
'name' => __("General", IOWD_PREFIX),
|
20 |
+
'fields' => $fields["general_fields"],
|
21 |
+
),
|
22 |
+
'conversion' => array(
|
23 |
+
'name' => __("Conversion", IOWD_PREFIX),
|
24 |
+
'fields' => $fields["conversion_fields"],
|
25 |
+
),
|
26 |
+
'advanced' => array(
|
27 |
+
'name' => __("Other", IOWD_PREFIX),
|
28 |
+
'fields' => $fields["advanced_fields"],
|
29 |
+
),
|
30 |
+
|
31 |
+
);
|
32 |
+
}
|
33 |
+
|
34 |
+
private function get_fields()
|
35 |
+
{
|
36 |
+
$fields = array();
|
37 |
+
// general
|
38 |
+
$fields["general_fields"] = array(
|
39 |
+
"keep_exif_data" => array(
|
40 |
+
"type" => "radio",
|
41 |
+
"choices" => array(
|
42 |
+
0 => array(
|
43 |
+
"label" => __("No", IOWD_PREFIX),
|
44 |
+
"value" => 0,
|
45 |
+
"classes" => "",
|
46 |
+
"attr" => "",
|
47 |
+
),
|
48 |
+
1 => array(
|
49 |
+
"label" => __("Yes", IOWD_PREFIX),
|
50 |
+
"value" => 1,
|
51 |
+
"classes" => "",
|
52 |
+
"attr" => "",
|
53 |
+
),
|
54 |
+
|
55 |
+
),
|
56 |
+
"label" => __("Keep EXIF data", IOWD_PREFIX),
|
57 |
+
"help_text" => "",
|
58 |
+
"tooltip" => __("Keep such interchange information as date and time the image was taken, if a flash was used,shutter speed, exposure compensation, F number, etc. EXIF data makes image files larger but if you are a photographer you may want to preserve this information.", IOWD_PREFIX),
|
59 |
+
),
|
60 |
+
"exclude_full_size_metadata_removal" => array(
|
61 |
+
"type" => "radio",
|
62 |
+
"choices" => array(
|
63 |
+
0 => array(
|
64 |
+
"label" => __("No", IOWD_PREFIX),
|
65 |
+
"value" => 0,
|
66 |
+
"classes" => "",
|
67 |
+
"attr" => "",
|
68 |
+
),
|
69 |
+
1 => array(
|
70 |
+
"label" => __("Yes", IOWD_PREFIX),
|
71 |
+
"value" => 1,
|
72 |
+
"classes" => "",
|
73 |
+
"attr" => "",
|
74 |
+
),
|
75 |
+
|
76 |
+
),
|
77 |
+
"label" => __("Exclude full-size images from exif data removal", IOWD_PREFIX),
|
78 |
+
"help_text" => "",
|
79 |
+
"tooltip" => __("Do not remove the descriptive information on full-size images.", IOWD_PREFIX),
|
80 |
+
),
|
81 |
+
"keep_originals" => array(
|
82 |
+
"type" => "radio",
|
83 |
+
"choices" => array(
|
84 |
+
0 => array(
|
85 |
+
"label" => __("No", IOWD_PREFIX),
|
86 |
+
"value" => 0,
|
87 |
+
"classes" => "",
|
88 |
+
"attr" => "",
|
89 |
+
),
|
90 |
+
1 => array(
|
91 |
+
"label" => __("Yes", IOWD_PREFIX),
|
92 |
+
"value" => 1,
|
93 |
+
"classes" => "",
|
94 |
+
"attr" => "",
|
95 |
+
),
|
96 |
+
|
97 |
+
),
|
98 |
+
"label" => __("Keep originals", IOWD_PREFIX),
|
99 |
+
"help_text" => "",
|
100 |
+
"tooltip" => "",
|
101 |
+
),
|
102 |
+
"jpg_optimization_levels" => array(
|
103 |
+
"type" => "select",
|
104 |
+
"choices" => array(
|
105 |
+
0 => array(
|
106 |
+
"label" => __("No Compression", IOWD_PREFIX),
|
107 |
+
"value" => 0
|
108 |
+
),
|
109 |
+
1 => array(
|
110 |
+
"label" => __("Lossless Compression", IOWD_PREFIX),
|
111 |
+
"value" => "lossless"
|
112 |
+
|
113 |
+
),
|
114 |
+
2 => array(
|
115 |
+
"label" => __("Lossy Compression ", IOWD_PREFIX),
|
116 |
+
"value" => "lossy40"
|
117 |
+
),
|
118 |
+
3 => array(
|
119 |
+
"label" => __("Maximum Lossy Compression (disabled in free version)", IOWD_PREFIX),
|
120 |
+
"value" => "",
|
121 |
+
"attr" => "disabled",
|
122 |
+
),
|
123 |
+
|
124 |
+
),
|
125 |
+
"label" => __("JPG Optimization Level", IOWD_PREFIX),
|
126 |
+
"classes" => "iowd-elem-250",
|
127 |
+
"attr" => "",
|
128 |
+
"help_text" => "",
|
129 |
+
"tooltip" => __("Lossy: while the size reduction is greater,perceptible loss of quality of the image is possible. Lossless: there will be no loss of the full information contained in the original file.", IOWD_PREFIX),
|
130 |
+
),
|
131 |
+
"png_optimization_levels" => array(
|
132 |
+
"type" => "select",
|
133 |
+
"choices" => array(
|
134 |
+
0 => array(
|
135 |
+
"label" => __("No Compression", IOWD_PREFIX),
|
136 |
+
"value" => 0
|
137 |
+
),
|
138 |
+
1 => array(
|
139 |
+
"label" => __("Lossless Compression", IOWD_PREFIX),
|
140 |
+
"value" => "lossless"
|
141 |
+
|
142 |
+
),
|
143 |
+
2 => array(
|
144 |
+
"label" => __("Lossy Compression ", IOWD_PREFIX),
|
145 |
+
"value" => "lossy40"
|
146 |
+
),
|
147 |
+
3 => array(
|
148 |
+
"label" => __("Maximum Lossy Compression (disabled in free version)", IOWD_PREFIX),
|
149 |
+
"value" => "",
|
150 |
+
"attr" => "disabled",
|
151 |
+
),
|
152 |
+
|
153 |
+
),
|
154 |
+
"label" => __("PNG Optimization Level", IOWD_PREFIX),
|
155 |
+
"classes" => "iowd-elem-250",
|
156 |
+
"attr" => "",
|
157 |
+
"help_text" => "",
|
158 |
+
"tooltip" => __("Lossy: while the size reduction is greater,perceptible loss of quality of the image is possible. Lossless: there will be no loss of the full information contained in the original file.", IOWD_PREFIX),
|
159 |
+
),
|
160 |
+
"gif_optimization_levels" => array(
|
161 |
+
"type" => "select",
|
162 |
+
"choices" => array(
|
163 |
+
0 => array(
|
164 |
+
"label" => __("No Compression", IOWD_PREFIX),
|
165 |
+
"value" => 0
|
166 |
+
),
|
167 |
+
1 => array(
|
168 |
+
"label" => __("Lossless Compression", IOWD_PREFIX),
|
169 |
+
"value" => "lossless"
|
170 |
+
|
171 |
+
)
|
172 |
+
),
|
173 |
+
"label" => __("GIF Optimization Level", IOWD_PREFIX),
|
174 |
+
"classes" => "iowd-elem-250",
|
175 |
+
"attr" => "",
|
176 |
+
"help_text" => "",
|
177 |
+
"tooltip" => __("Lossless: there will be no loss of the full information contained in the original file.", IOWD_PREFIX),
|
178 |
+
),
|
179 |
+
"pdf_optimization_levels" => array(
|
180 |
+
"type" => "select",
|
181 |
+
"choices" => array(
|
182 |
+
0 => array(
|
183 |
+
"label" => __("No Compression", IOWD_PREFIX),
|
184 |
+
"value" => 0
|
185 |
+
)
|
186 |
+
),
|
187 |
+
"label" => __("PDF Optimization Level", IOWD_PREFIX),
|
188 |
+
"classes" => "iowd-elem-250 iowd-disable",
|
189 |
+
"attr" => "disabled",
|
190 |
+
"help_text" => "",
|
191 |
+
"pro_text" => __("This option is disabled in free version.", IOWD_PREFIX),
|
192 |
+
"tooltip" => __("Lossless: there will be no loss of the full information contained in the original file.", IOWD_PREFIX),
|
193 |
+
)
|
194 |
+
);
|
195 |
+
// advanced
|
196 |
+
|
197 |
+
|
198 |
+
$fields["advanced_fields"] = array(
|
199 |
+
"scheduled_optimization" => array(
|
200 |
+
"type" => "radio",
|
201 |
+
"choices" => array(
|
202 |
+
0 => array(
|
203 |
+
"label" => __("No", IOWD_PREFIX),
|
204 |
+
"value" => 0,
|
205 |
+
"classes" => "iowd-disable",
|
206 |
+
"attr" => "disabled",
|
207 |
+
),
|
208 |
+
1 => array(
|
209 |
+
"label" => __("Yes", IOWD_PREFIX),
|
210 |
+
"value" => 1,
|
211 |
+
"classes" => "iowd-disable",
|
212 |
+
"attr" => "disabled",
|
213 |
+
),
|
214 |
+
|
215 |
+
),
|
216 |
+
"label" => __("Scheduled optimization", IOWD_PREFIX),
|
217 |
+
"help_text" => "",
|
218 |
+
"pro_text" => __("This option is disabled in free version.", IOWD_PREFIX),
|
219 |
+
"tooltip" => __("The images will be automatically optimized with the chosen frequency.", IOWD_PREFIX),
|
220 |
+
),
|
221 |
+
|
222 |
+
"exclude_full_size" => array(
|
223 |
+
"type" => "radio",
|
224 |
+
"choices" => array(
|
225 |
+
0 => array(
|
226 |
+
"label" => __("No", IOWD_PREFIX),
|
227 |
+
"value" => 0,
|
228 |
+
"classes" => "",
|
229 |
+
"attr" => "",
|
230 |
+
),
|
231 |
+
1 => array(
|
232 |
+
"label" => __("Yes", IOWD_PREFIX),
|
233 |
+
"value" => 1,
|
234 |
+
"classes" => "",
|
235 |
+
"attr" => "",
|
236 |
+
),
|
237 |
+
|
238 |
+
),
|
239 |
+
"label" => __("Exclude full-size images from optimization", IOWD_PREFIX),
|
240 |
+
"help_text" => "",
|
241 |
+
"tooltip" => __("Do not optimize full size images.", IOWD_PREFIX),
|
242 |
+
),
|
243 |
+
|
244 |
+
"enable_resizing" => array(
|
245 |
+
"type" => "radio",
|
246 |
+
"choices" => array(
|
247 |
+
0 => array(
|
248 |
+
"label" => __("No", IOWD_PREFIX),
|
249 |
+
"value" => 0,
|
250 |
+
"classes" => "",
|
251 |
+
"attr" => "",
|
252 |
+
),
|
253 |
+
1 => array(
|
254 |
+
"label" => __("Yes", IOWD_PREFIX),
|
255 |
+
"value" => 1,
|
256 |
+
"classes" => "",
|
257 |
+
"attr" => "",
|
258 |
+
),
|
259 |
+
|
260 |
+
),
|
261 |
+
"label" => __("Resize media full-size images", IOWD_PREFIX),
|
262 |
+
"help_text" => "",
|
263 |
+
"tooltip" => "",
|
264 |
+
),
|
265 |
+
"resize_media_images" => array(
|
266 |
+
"type" => "custom",
|
267 |
+
"label" => __("Media images dimensions", IOWD_PREFIX),
|
268 |
+
"help_text" => "",
|
269 |
+
"tooltip" => __("Change the original size of the full-size images.", IOWD_PREFIX),
|
270 |
+
),
|
271 |
+
|
272 |
+
"enable_resizing_other" => array(
|
273 |
+
"type" => "radio",
|
274 |
+
"choices" => array(
|
275 |
+
0 => array(
|
276 |
+
"label" => __("No", IOWD_PREFIX),
|
277 |
+
"value" => 0,
|
278 |
+
"classes" => "",
|
279 |
+
"attr" => "",
|
280 |
+
),
|
281 |
+
1 => array(
|
282 |
+
"label" => __("Yes", IOWD_PREFIX),
|
283 |
+
"value" => 1,
|
284 |
+
"classes" => "",
|
285 |
+
"attr" => "",
|
286 |
+
),
|
287 |
+
|
288 |
+
),
|
289 |
+
"label" => __("Resize other directory images", IOWD_PREFIX),
|
290 |
+
"help_text" => "",
|
291 |
+
"tooltip" => "",
|
292 |
+
),
|
293 |
+
"resize_other_images" => array(
|
294 |
+
"type" => "custom",
|
295 |
+
"label" => __("Other directory images dimensions", IOWD_PREFIX),
|
296 |
+
"help_text" => "",
|
297 |
+
"tooltip" => "",
|
298 |
+
),
|
299 |
+
"optimize_thumbs" => array(
|
300 |
+
"type" => "custom",
|
301 |
+
"label" => __("Optimize these sizes", IOWD_PREFIX),
|
302 |
+
"help_text" => "",
|
303 |
+
"tooltip" => __("Only optimize images of the selected size", IOWD_PREFIX),
|
304 |
+
),
|
305 |
+
"skip_small_images" => array(
|
306 |
+
"type" => "text",
|
307 |
+
"label" => __("Don't optimize images smaller than", IOWD_PREFIX),
|
308 |
+
"classes" => "iowd-elem-80",
|
309 |
+
"attr" => "",
|
310 |
+
"help_text" => __("In megabytes", IOWD_PREFIX),
|
311 |
+
"tooltip" => "",
|
312 |
+
),
|
313 |
+
"skip_large_images" => array(
|
314 |
+
"type" => "text",
|
315 |
+
"label" => __("Don't optimize images larger than", IOWD_PREFIX),
|
316 |
+
"classes" => "iowd-elem-80",
|
317 |
+
"attr" => "",
|
318 |
+
"help_text" => __("In megabytes", IOWD_PREFIX),
|
319 |
+
"tooltip" => "",
|
320 |
+
),
|
321 |
+
|
322 |
+
"optimize_once_more" => array(
|
323 |
+
"type" => "radio",
|
324 |
+
"choices" => array(
|
325 |
+
0 => array(
|
326 |
+
"label" => __("No", IOWD_PREFIX),
|
327 |
+
"value" => 0,
|
328 |
+
"classes" => "",
|
329 |
+
"attr" => "",
|
330 |
+
),
|
331 |
+
1 => array(
|
332 |
+
"label" => __("Yes", IOWD_PREFIX),
|
333 |
+
"value" => 1,
|
334 |
+
"classes" => "",
|
335 |
+
"attr" => "",
|
336 |
+
),
|
337 |
+
|
338 |
+
),
|
339 |
+
"label" => __("In other optimize once more, if optimization level has changed", IOWD_PREFIX),
|
340 |
+
"help_text" => "",
|
341 |
+
"tooltip" => "",
|
342 |
+
),
|
343 |
+
);
|
344 |
+
// conversion
|
345 |
+
$fields["conversion_fields"] = array(
|
346 |
+
"enable_conversion" => array(
|
347 |
+
"type" => "radio",
|
348 |
+
"choices" => array(
|
349 |
+
0 => array(
|
350 |
+
"label" => __("No", IOWD_PREFIX),
|
351 |
+
"value" => 0,
|
352 |
+
"classes" => "",
|
353 |
+
"attr" => "",
|
354 |
+
),
|
355 |
+
1 => array(
|
356 |
+
"label" => __("Yes", IOWD_PREFIX),
|
357 |
+
"value" => 1,
|
358 |
+
"classes" => "",
|
359 |
+
"attr" => "",
|
360 |
+
),
|
361 |
+
|
362 |
+
),
|
363 |
+
"label" => __("Enable conversion", IOWD_PREFIX),
|
364 |
+
"help_text" => "",
|
365 |
+
"tooltip" => "",
|
366 |
+
),
|
367 |
+
"jpg_to_png" => array(
|
368 |
+
"type" => "radio",
|
369 |
+
"choices" => array(
|
370 |
+
0 => array(
|
371 |
+
"label" => __("No", IOWD_PREFIX),
|
372 |
+
"value" => 0,
|
373 |
+
"classes" => "",
|
374 |
+
"attr" => "",
|
375 |
+
),
|
376 |
+
1 => array(
|
377 |
+
"label" => __("Yes", IOWD_PREFIX),
|
378 |
+
"value" => 1,
|
379 |
+
"classes" => "",
|
380 |
+
"attr" => "",
|
381 |
+
),
|
382 |
+
|
383 |
+
),
|
384 |
+
"label" => __("Enable jpg to png conversion", IOWD_PREFIX),
|
385 |
+
"help_text" => __("PNG uses lossless compression. It is recommended to use for logos, and other pictures with transparent backgrounds. This option removes image metadata and increases CPU usage.", IOWD_PREFIX),
|
386 |
+
"tooltip" => __("Removes metadata and increases cpu usage dramatically", IOWD_PREFIX),
|
387 |
+
),
|
388 |
+
"jpg_to_webp" => array(
|
389 |
+
"type" => "radio",
|
390 |
+
"choices" => array(
|
391 |
+
0 => array(
|
392 |
+
"label" => __("No", IOWD_PREFIX),
|
393 |
+
"value" => 0,
|
394 |
+
"classes" => "",
|
395 |
+
"attr" => "",
|
396 |
+
),
|
397 |
+
1 => array(
|
398 |
+
"label" => __("Yes", IOWD_PREFIX),
|
399 |
+
"value" => 1,
|
400 |
+
"classes" => "",
|
401 |
+
"attr" => "",
|
402 |
+
),
|
403 |
+
|
404 |
+
),
|
405 |
+
"label" => __("Enable jpg to webP conversion", IOWD_PREFIX),
|
406 |
+
"help_text" => __("WebP lets you have 25-34% smaller images and speed up your website. JPG to WebP conversion is lossy, but it will not affect the image quality significantly.", IOWD_PREFIX),
|
407 |
+
"tooltip" => __("JPG to WebP conversion is lossy, but quality loss is minimal", IOWD_PREFIX),
|
408 |
+
),
|
409 |
+
"png_to_jpg" => array(
|
410 |
+
"type" => "radio",
|
411 |
+
"choices" => array(
|
412 |
+
0 => array(
|
413 |
+
"label" => __("No", IOWD_PREFIX),
|
414 |
+
"value" => 0,
|
415 |
+
"classes" => "",
|
416 |
+
"attr" => "",
|
417 |
+
),
|
418 |
+
1 => array(
|
419 |
+
"label" => __("Yes", IOWD_PREFIX),
|
420 |
+
"value" => 1,
|
421 |
+
"classes" => "",
|
422 |
+
"attr" => "",
|
423 |
+
),
|
424 |
+
|
425 |
+
),
|
426 |
+
"label" => __("Enable png to jpg conversion", IOWD_PREFIX),
|
427 |
+
"help_text" => __("JPG format is recommended to use for photographs and similar high-resolution images. Since it uses lossy compression, some of the image data is lost when the image is compressed.", IOWD_PREFIX),
|
428 |
+
"tooltip" => __("This is not a lossless conversion", IOWD_PREFIX),
|
429 |
+
),
|
430 |
+
"png_to_webp" => array(
|
431 |
+
"type" => "radio",
|
432 |
+
"choices" => array(
|
433 |
+
0 => array(
|
434 |
+
"label" => __("No", IOWD_PREFIX),
|
435 |
+
"value" => 0,
|
436 |
+
"classes" => "",
|
437 |
+
"attr" => "",
|
438 |
+
),
|
439 |
+
1 => array(
|
440 |
+
"label" => __("Yes", IOWD_PREFIX),
|
441 |
+
"value" => 1,
|
442 |
+
"classes" => "",
|
443 |
+
"attr" => "",
|
444 |
+
),
|
445 |
+
|
446 |
+
),
|
447 |
+
"label" => __("Enable png to webP conversion", IOWD_PREFIX),
|
448 |
+
"help_text" => __("PNG to WebP conversion is lossless. WebP images are 26% smaller in size, than their PNGs. This lets you make your website faster.", IOWD_PREFIX),
|
449 |
+
"tooltip" => __("PNG to WebP conversion is lossless.", IOWD_PREFIX),
|
450 |
+
),
|
451 |
+
"gif_to_png" => array(
|
452 |
+
"type" => "radio",
|
453 |
+
"choices" => array(
|
454 |
+
0 => array(
|
455 |
+
"label" => __("No", IOWD_PREFIX),
|
456 |
+
"value" => 0,
|
457 |
+
"classes" => "",
|
458 |
+
"attr" => "",
|
459 |
+
),
|
460 |
+
1 => array(
|
461 |
+
"label" => __("Yes", IOWD_PREFIX),
|
462 |
+
"value" => 1,
|
463 |
+
"classes" => "",
|
464 |
+
"attr" => "",
|
465 |
+
),
|
466 |
+
|
467 |
+
),
|
468 |
+
"label" => __("Enable gif to png conversion", IOWD_PREFIX),
|
469 |
+
"help_text" => __("PNG uses lossless compression. It is recommended for logos and pictures with transparent backgrounds. Note, that animated GIFs cannot be converted.", IOWD_PREFIX),
|
470 |
+
"tooltip" => __("Gif to png conversion has no wornings.", IOWD_PREFIX),
|
471 |
+
),
|
472 |
+
|
473 |
+
);
|
474 |
+
|
475 |
+
|
476 |
+
return $fields;
|
477 |
+
|
478 |
+
}
|
479 |
+
|
480 |
+
public static function save_settings()
|
481 |
+
{
|
482 |
+
check_admin_referer('nonce_' . IOWD_PREFIX, 'nonce_' . IOWD_PREFIX);
|
483 |
+
if (isset($_POST["standard_setting"]) && $_POST["standard_setting"]) {
|
484 |
+
self::save_standard_settings();
|
485 |
+
} else {
|
486 |
+
$old_settings = json_decode(get_option(IOWD_PREFIX . "_options"), true);
|
487 |
+
$new_settings = array();
|
488 |
+
foreach ($old_settings as $setting_key => $setting) {
|
489 |
+
$new_settings[$setting_key] = isset($_POST[$setting_key]) ? esc_html($_POST[$setting_key]) : $setting;
|
490 |
+
}
|
491 |
+
if ($new_settings["scheduled_optimization"] == "0") {
|
492 |
+
wp_clear_scheduled_hook('iowd_optimize');
|
493 |
+
}
|
494 |
+
|
495 |
+
update_option(IOWD_PREFIX . "_options", json_encode($new_settings));
|
496 |
+
}
|
497 |
+
$iowd_tabs_active = isset($_POST["iowd_tabs_active"]) ? $_POST["iowd_tabs_active"] : "general";
|
498 |
+
$ids = isset($_POST["ids"]) ? $_POST["ids"] : "";
|
499 |
+
IOWD_Helper::redirect(array("page" => "iowd_settings", "msg" => "1", "iowd_tabs_active" => $iowd_tabs_active, "ids" => $ids));
|
500 |
+
}
|
501 |
+
|
502 |
+
public static function save_standard_settings()
|
503 |
+
{
|
504 |
+
if (isset($_POST["standard_setting"])) {
|
505 |
+
$value = $_POST["standard_setting"] == "conservative" || $_POST["standard_setting"] == "balanced" || $_POST["standard_setting"] == "extreme" ? $_POST["standard_setting"] : "conservative";
|
506 |
+
|
507 |
+
if (get_option(IOWD_PREFIX . "_standart_setting")) {
|
508 |
+
update_option(IOWD_PREFIX . "_standart_setting", $value);
|
509 |
+
} else {
|
510 |
+
add_option(IOWD_PREFIX . "_standart_setting", $value, '', 'no');
|
511 |
+
}
|
512 |
+
|
513 |
+
$settings = json_decode(get_option(IOWD_PREFIX . "_options"), true);
|
514 |
+
|
515 |
+
if ($value == "conservative") {
|
516 |
+
$settings["keep_exif_data"] = 1;
|
517 |
+
$settings["exclude_full_size_metadata_removal"] = 1;
|
518 |
+
$settings["exclude_full_size"] = 1;
|
519 |
+
$settings["jpg_optimization_levels"] = "lossless";
|
520 |
+
$settings["png_optimization_levels"] = "lossless";
|
521 |
+
$settings["gif_optimization_levels"] = "lossless";
|
522 |
+
$settings["pdf_optimization_levels"] = "lossless";
|
523 |
+
|
524 |
+
update_option(IOWD_PREFIX . "_options", json_encode($settings));
|
525 |
+
} else if ($value == "balanced") {
|
526 |
+
$settings["keep_exif_data"] = 0;
|
527 |
+
$settings["exclude_full_size_metadata_removal"] = 0;
|
528 |
+
$settings["exclude_full_size"] = 1;
|
529 |
+
$settings["jpg_optimization_levels"] = "lossy40";
|
530 |
+
$settings["png_optimization_levels"] = "lossy40";
|
531 |
+
$settings["gif_optimization_levels"] = "lossless";
|
532 |
+
$settings["pdf_optimization_levels"] = "lossless";
|
533 |
+
update_option(IOWD_PREFIX . "_options", json_encode($settings));
|
534 |
+
}
|
535 |
+
}
|
536 |
+
}
|
537 |
+
|
538 |
+
public function display()
|
539 |
+
{
|
540 |
+
// get options
|
541 |
+
$options = json_decode(get_option(IOWD_PREFIX . "_options"), true);
|
542 |
+
// get mode
|
543 |
+
$mode = get_option(IOWD_PREFIX . "_mode");
|
544 |
+
$mode = $mode ? $mode : "standart";
|
545 |
+
|
546 |
+
// get standart setting
|
547 |
+
$standart_setting = get_option(IOWD_PREFIX . "_standart_setting");
|
548 |
+
$standart_setting = $standart_setting ? $standart_setting : "conservative";
|
549 |
+
|
550 |
+
// statistics data
|
551 |
+
$stat = $this->get_statistics();
|
552 |
+
|
553 |
+
// scan
|
554 |
+
$optimize = new IOWD_Optimize();
|
555 |
+
$other_folders = json_decode(htmlspecialchars_decode(stripslashes($options["other_folders"])), true);
|
556 |
+
|
557 |
+
$other = empty($other_folders) === false && is_array($other_folders) ? true : false;
|
558 |
+
|
559 |
+
$scan = $optimize->scan(array(), $other);
|
560 |
+
|
561 |
+
$iowd_tabs_active = isset($_REQUEST["iowd_tabs_active"]) ? $_REQUEST["iowd_tabs_active"] : "general";
|
562 |
+
$iowd_sizes = IOWD_Helper::wp_get_image_sizes();
|
563 |
+
|
564 |
+
// if from bilk optimaze
|
565 |
+
$attachments = array();
|
566 |
+
$ids = isset($_GET["ids"]) && $_GET["ids"] ? explode(",", $_GET["ids"]) : array();
|
567 |
+
if ($ids) {
|
568 |
+
$optimize = new IOWD_Optimize(true);
|
569 |
+
$attachments = $optimize->get_attachments($ids);
|
570 |
+
}
|
571 |
+
$last_optimized_data = get_site_transient("iowd_last_optimized_data");
|
572 |
+
$last_optimized_data = $last_optimized_data ? json_decode($last_optimized_data, true) : array("image_size" => 0, "image_orig_size" => 0, "image_count" => 0);
|
573 |
+
|
574 |
+
$last_optimized_data_reduced = $last_optimized_data["image_orig_size"] - $last_optimized_data["image_size"];
|
575 |
+
$last_optimized_data_reduced_percent = $last_optimized_data["image_orig_size"] ? ($last_optimized_data_reduced / $last_optimized_data["image_orig_size"]) * 100 : 0;
|
576 |
+
$last_optimized_data_reduced_percent = number_format($last_optimized_data_reduced_percent, 2);
|
577 |
+
|
578 |
+
$msg = "";
|
579 |
+
$msg_style = "";
|
580 |
+
$msg_class = "";
|
581 |
+
|
582 |
+
if ($options["jpg_optimization_levels"] == "0" && $options["png_optimization_levels"] == "0" && $options["gif_optimization_levels"] == "0" && $options["pdf_optimization_levels"] == "0") {
|
583 |
+
|
584 |
+
$msg = __("Please select at least one optimization level for image types you want to optimize.", IOWD_PREFIX);
|
585 |
+
$msg_style = 'style="display: block;"';
|
586 |
+
$msg_class = "iowd_msg_div_error";
|
587 |
+
} else if (get_site_transient("iowd_done_") == "1") {
|
588 |
+
$images_count = get_transient("iowd_images_count_start") ? get_transient("iowd_images_count_start") : 0;
|
589 |
+
$images_count = $images_count ? $images_count : "No";
|
590 |
+
$skipped = $images_count - $last_optimized_data["image_count"];
|
591 |
+
$msg = $last_optimized_data["image_count"] . " " . __("images have been optimized.", IOWD_PREFIX);
|
592 |
+
if ($skipped) {
|
593 |
+
$msg .= " " . $skipped . " " . __("images were skipped.", IOWD_PREFIX);
|
594 |
+
}
|
595 |
+
$msg_style = 'style="display: block;"';
|
596 |
+
$msg_class = "iowd_msg_div_msg";
|
597 |
+
delete_site_transient("iowd_done_");
|
598 |
+
delete_transient("iowd_images_count_start");
|
599 |
+
delete_transient("iowd_optimizing_post_ids");
|
600 |
+
} else if (get_transient("iowd_response_error")) {
|
601 |
+
$error = get_transient("iowd_response_error");
|
602 |
+
|
603 |
+
if ($error == "no_job") {
|
604 |
+
$msg = __("Something went wrong. Please try after few minutes.", IOWD_PREFIX);
|
605 |
+
} elseif ($error == "no_agreement") {
|
606 |
+
$msg = __("No agreement found.", IOWD_PREFIX);
|
607 |
+
} else if ($error == "empty_credentials") {
|
608 |
+
$msg = __("Empty credentials, please try again.", IOWD_PREFIX);
|
609 |
+
}
|
610 |
+
|
611 |
+
if ($msg) {
|
612 |
+
$msg_style = 'style="display: block;"';
|
613 |
+
$msg_class = "iowd_msg_div_error";
|
614 |
+
}
|
615 |
+
delete_transient("iowd_response_error");
|
616 |
+
}
|
617 |
+
|
618 |
+
|
619 |
+
$limitation = IOWD_Helper::limitation();
|
620 |
+
// require view template
|
621 |
+
|
622 |
+
require_once(IOWD_DIR_VIEWS . '/iowd_settings_display.php');
|
623 |
+
}
|
624 |
+
|
625 |
+
public function get_statistics()
|
626 |
+
{
|
627 |
+
global $wpdb;
|
628 |
+
$rows = $wpdb->get_results("SELECT * FROM " . $wpdb->prefix . "iowd_images");
|
629 |
+
|
630 |
+
$total_size = 0;
|
631 |
+
$total_orig_size = 0;
|
632 |
+
$total_size_other = 0;
|
633 |
+
$total_orig_size_other = 0;
|
634 |
+
|
635 |
+
|
636 |
+
$protocaol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http';
|
637 |
+
foreach ($rows as $row) {
|
638 |
+
/* $file = str_replace( $protocaol . '://' . $_SERVER['SERVER_NAME'], $_SERVER['DOCUMENT_ROOT'], $row->path ) ;
|
639 |
+
if( !file_exists( $file ) ){
|
640 |
+
continue;
|
641 |
+
}
|
642 |
+
else {
|
643 |
+
if( $row->media == 1 ){
|
644 |
+
if( get_post_status ( $row->post_id ) == false ){
|
645 |
+
continue;
|
646 |
+
}
|
647 |
+
}
|
648 |
+
else{
|
649 |
+
//to do
|
650 |
+
}
|
651 |
+
|
652 |
+
}*/
|
653 |
+
|
654 |
+
if ($row->media == 0) {
|
655 |
+
$total_size_other += $row->image_size;
|
656 |
+
$total_orig_size_other += $row->image_orig_size;
|
657 |
+
} else {
|
658 |
+
$total_size += $row->image_size;
|
659 |
+
$total_orig_size += $row->image_orig_size;
|
660 |
+
}
|
661 |
+
|
662 |
+
|
663 |
+
}
|
664 |
+
|
665 |
+
$total_reduced = $total_orig_size - $total_size;
|
666 |
+
$total_reduced_persent = $total_orig_size ? ($total_reduced / $total_orig_size) * 100 : 0;
|
667 |
+
|
668 |
+
$total_reduced_other = $total_orig_size_other - $total_size_other;
|
669 |
+
$total_reduced_persent_other = $total_orig_size_other ? ($total_reduced_other / $total_orig_size_other) * 100 : 0;
|
670 |
+
|
671 |
+
$total = $total_reduced + $total_reduced_other;
|
672 |
+
$total_persent = ($total_orig_size + $total_orig_size_other) ? ($total / ($total_orig_size + $total_orig_size_other)) * 100 : 0;
|
673 |
+
|
674 |
+
$total_reduced_persent = number_format($total_reduced_persent, 2);
|
675 |
+
$total_reduced_persent_other = number_format($total_reduced_persent_other, 2);
|
676 |
+
$total_persent = number_format($total_persent, 2);
|
677 |
+
|
678 |
+
return array(
|
679 |
+
"total_reduced" => $total_reduced,
|
680 |
+
"total_reduced_persent" => $total_reduced_persent,
|
681 |
+
"total_reduced_other" => $total_reduced_other,
|
682 |
+
"total_reduced_persent_other" => $total_reduced_persent_other,
|
683 |
+
"total" => $total,
|
684 |
+
"total_persent" => $total_persent,
|
685 |
+
);
|
686 |
+
}
|
687 |
+
|
688 |
+
|
689 |
+
}
|
690 |
+
|
691 |
+
|
includes/iowd-uninstall.php
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
if (!defined('ABSPATH')) {
|
3 |
+
exit;
|
4 |
+
}
|
5 |
+
|
6 |
+
class IOWD_Uninstall
|
7 |
+
{
|
8 |
+
|
9 |
+
public function display()
|
10 |
+
{
|
11 |
+
require_once(IOWD_DIR_VIEWS . '/iowd_uninstall_display.php');
|
12 |
+
|
13 |
+
}
|
14 |
+
|
15 |
+
}
|
16 |
+
|
17 |
+
|
includes/iowd-util.php
ADDED
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
if (!defined('ABSPATH')) {
|
3 |
+
exit;
|
4 |
+
}
|
5 |
+
|
6 |
+
class IOWD_Util
|
7 |
+
{
|
8 |
+
|
9 |
+
|
10 |
+
public static function format_bytes($bytes, $precision = 2)
|
11 |
+
{
|
12 |
+
$units = array('B', 'KB', 'MB', 'GB', 'TB');
|
13 |
+
if ($bytes == 0) {
|
14 |
+
return '0 B';
|
15 |
+
}
|
16 |
+
|
17 |
+
$bytes = max($bytes, 0);
|
18 |
+
$pow = floor(($bytes ? log($bytes) : 0) / log(1024));
|
19 |
+
|
20 |
+
$pow = min($pow, count($units) - 1);
|
21 |
+
|
22 |
+
$bytes /= pow(1024, $pow);
|
23 |
+
|
24 |
+
|
25 |
+
return round($bytes, $precision) . ' ' . $units[$pow];
|
26 |
+
}
|
27 |
+
|
28 |
+
public static function str_lreplace($search, $replace, $subject)
|
29 |
+
{
|
30 |
+
$pos = strrpos($subject, $search);
|
31 |
+
if ($pos !== false) {
|
32 |
+
$subject = substr_replace($subject, $replace, $pos, strlen($search));
|
33 |
+
}
|
34 |
+
|
35 |
+
return $subject;
|
36 |
+
}
|
37 |
+
|
38 |
+
public static function is_transparent_png($file)
|
39 |
+
{
|
40 |
+
//4 checks for greyscale + alpha and RGB + alpha
|
41 |
+
if ((ord(file_get_contents($file, false, null, 25, 1)) & 4)) {
|
42 |
+
return true;
|
43 |
+
}
|
44 |
+
$contents = file_get_contents( $file );
|
45 |
+
|
46 |
+
if ( stripos( $contents, 'PLTE' ) !== false && stripos( $contents, 'tRNS' ) !== false ) {
|
47 |
+
return true;
|
48 |
+
}
|
49 |
+
return false;
|
50 |
+
|
51 |
+
}
|
52 |
+
|
53 |
+
}
|
io-wd.php
ADDED
@@ -0,0 +1,82 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Plugin Name: Image Optimizer WD
|
5 |
+
* Plugin URI: https://web-dorado.com/products/wordpress-image-optimizer.html
|
6 |
+
* Description: Image Optimizer WordPress plugin enables you to resize, compress and optimize PNG, JPG, GIF files while maintaining image quality.
|
7 |
+
* Version: 1.0.0
|
8 |
+
* Author: WebDorado
|
9 |
+
* Author URI: https://web-dorado.com/
|
10 |
+
* License: GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
|
11 |
+
*/
|
12 |
+
|
13 |
+
define('IOWD_DIR', WP_PLUGIN_DIR . "/" . plugin_basename(dirname(__FILE__)));
|
14 |
+
define('IOWD_URL', plugins_url(plugin_basename(dirname(__FILE__))));
|
15 |
+
define('IOWD_DIR_INCLUDES', IOWD_DIR . '/includes');
|
16 |
+
define('IOWD_DIR_CLASSES', IOWD_DIR . '/classes');
|
17 |
+
define('IOWD_DIR_VIEWS', IOWD_DIR . '/views');
|
18 |
+
define('IOWD_URL_CSS', IOWD_URL . '/assets/css');
|
19 |
+
define('IOWD_URL_JS', IOWD_URL . '/assets/js');
|
20 |
+
define('IOWD_URL_IMG', IOWD_URL . '/assets/img');
|
21 |
+
|
22 |
+
|
23 |
+
define('IOWD_NAME', plugin_basename(dirname(__FILE__)));
|
24 |
+
define('IOWD_MAIN_FILE', plugin_basename(__FILE__));
|
25 |
+
define('IOWD_PREFIX', "iowd");
|
26 |
+
//define( 'IOWD_API_URL', "http://local.web-dorado.info/IO_api/v1/" );
|
27 |
+
define('IOWD_API_URL', "https://optimizer.web-dorado.com/api/");
|
28 |
+
|
29 |
+
setlocale(LC_ALL, 'en_US.UTF-8');
|
30 |
+
|
31 |
+
require_once('vendor/autoload.php');
|
32 |
+
|
33 |
+
if (class_exists("WP_REST_Controller")) {
|
34 |
+
require_once('iowd-rest.php');
|
35 |
+
add_action('rest_api_init', function () {
|
36 |
+
$rest = new IOWD_Rest();
|
37 |
+
$rest->register_routes();
|
38 |
+
});
|
39 |
+
}
|
40 |
+
|
41 |
+
if (is_admin() || (defined('DOING_CRON') && DOING_CRON)) {
|
42 |
+
require_once('iowd_class.php');
|
43 |
+
require_once(IOWD_DIR_INCLUDES . '/iowd-media-library.php');
|
44 |
+
register_activation_hook(__FILE__, array('IOWD', 'activate'));
|
45 |
+
add_action('plugins_loaded', array('IOWD', 'get_instance'));
|
46 |
+
|
47 |
+
register_deactivation_hook(__FILE__, array('IOWD', 'deactivate'));
|
48 |
+
|
49 |
+
}
|
50 |
+
|
51 |
+
if (!class_exists("DoradoWeb")) {
|
52 |
+
require_once(IOWD_DIR . '/wd/start.php');
|
53 |
+
}
|
54 |
+
|
55 |
+
global $iowd_plugin_options;
|
56 |
+
|
57 |
+
$iowd_plugin_options = array(
|
58 |
+
"prefix" => IOWD_PREFIX,
|
59 |
+
"wd_plugin_id" => 181,
|
60 |
+
"plugin_title" => "Image Optimizer WD",
|
61 |
+
"plugin_wordpress_slug" => "image-optimizer-wd",
|
62 |
+
"plugin_dir" => IOWD_DIR,
|
63 |
+
"plugin_main_file" => __FILE__,
|
64 |
+
"description" => '',
|
65 |
+
"plugin_features" => array(),
|
66 |
+
"user_guide" => array(),
|
67 |
+
"overview_welcome_image" => null,
|
68 |
+
"video_youtube_id" => "",
|
69 |
+
"plugin_wd_url" => "",
|
70 |
+
"plugin_wd_demo_link" => "",
|
71 |
+
"plugin_wd_addons_link" => "",
|
72 |
+
"after_subscribe" => "admin.php?page=iowd_settings",
|
73 |
+
"plugin_wizard_link" => "",
|
74 |
+
"plugin_menu_title" => __('Image optimizer', IOWD_PREFIX),
|
75 |
+
"plugin_menu_icon" => IOWD_URL_IMG . "/icon.png",
|
76 |
+
"deactivate" => true,
|
77 |
+
"subscribe" => true,
|
78 |
+
"custom_post" => false,
|
79 |
+
"menu_capability" => "manage_options",
|
80 |
+
"menu_position" => null,
|
81 |
+
);
|
82 |
+
dorado_web_init($iowd_plugin_options);
|
iowd-rest.php
ADDED
@@ -0,0 +1,147 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Created by PhpStorm.
|
5 |
+
* User: Araqel
|
6 |
+
* Date: 08/04/2017
|
7 |
+
* Time: 1:38 PM
|
8 |
+
*/
|
9 |
+
|
10 |
+
use Aws\CommandPool;
|
11 |
+
use Aws\S3\Exception\S3Exception;
|
12 |
+
use Aws\S3\S3Client;
|
13 |
+
|
14 |
+
require_once IOWD_DIR_INCLUDES . "/iowd-optimize.php";
|
15 |
+
|
16 |
+
class IOWD_Rest extends WP_REST_Controller
|
17 |
+
{
|
18 |
+
private $version = '1';
|
19 |
+
private $route = 'iowd';
|
20 |
+
private $region = 'us-west-2';
|
21 |
+
|
22 |
+
public function register_routes()
|
23 |
+
{
|
24 |
+
$namespace = $this->route . '/v' . $this->version;
|
25 |
+
register_rest_route($namespace, '/images/download', array(
|
26 |
+
array(
|
27 |
+
'methods' => WP_REST_Server::CREATABLE,
|
28 |
+
'callback' => array($this, 'download_images'),
|
29 |
+
'args' => array(
|
30 |
+
'bucket' => array(
|
31 |
+
'required' => true,
|
32 |
+
'type' => 'string',
|
33 |
+
),
|
34 |
+
'post_id' => array(
|
35 |
+
'required' => true,
|
36 |
+
),
|
37 |
+
'iteration' => array(
|
38 |
+
'required' => true,
|
39 |
+
),
|
40 |
+
'images_data' => array(
|
41 |
+
'required' => true
|
42 |
+
),
|
43 |
+
),
|
44 |
+
)
|
45 |
+
));
|
46 |
+
|
47 |
+
}
|
48 |
+
|
49 |
+
//TODO optimize async download
|
50 |
+
//TODO check which way is faster ( i think $promies->wait())
|
51 |
+
public function download_images(WP_REST_Request $request)
|
52 |
+
{
|
53 |
+
clearstatcache();
|
54 |
+
@ini_set('max_execution_time',1300);
|
55 |
+
$bucket = $request->get_param('bucket');
|
56 |
+
$images_data = $request->get_param('images_data');
|
57 |
+
$post_id = $request->get_param('post_id');
|
58 |
+
$iteration = $request->get_param('iteration');
|
59 |
+
$credentials = get_option("iowd_crd_" . $post_id);
|
60 |
+
|
61 |
+
$s3args = array(
|
62 |
+
'version' => 'latest',
|
63 |
+
'region' => $this->region,
|
64 |
+
'credentials' => $credentials,
|
65 |
+
);
|
66 |
+
|
67 |
+
$s3client = new S3Client($s3args);
|
68 |
+
|
69 |
+
try {
|
70 |
+
$commands = array();
|
71 |
+
foreach ($images_data as $image_data) {
|
72 |
+
if ($s3client->doesObjectExist($bucket, $image_data["path"])) {
|
73 |
+
$commands[] = $s3client->getCommand('getObject', array(
|
74 |
+
'Bucket' => $bucket,
|
75 |
+
'Key' => $image_data["path"],
|
76 |
+
'SaveAs' => $image_data["wp_path"],
|
77 |
+
));
|
78 |
+
}
|
79 |
+
}
|
80 |
+
if (empty($commands) === false) {
|
81 |
+
$pool = new CommandPool($s3client, $commands);
|
82 |
+
$promise = $pool->promise();
|
83 |
+
$promise->wait();
|
84 |
+
}
|
85 |
+
$optimizer = new IOWD_Optimize();
|
86 |
+
$optimizer->save_data_to_db($images_data, $iteration, $post_id);
|
87 |
+
|
88 |
+
$received_images = get_site_transient("iowd_received_images_" . $post_id);
|
89 |
+
if (!$received_images) {
|
90 |
+
$data_count = get_option("iowd_data_count_" . $post_id);
|
91 |
+
$received_images = range(0, $data_count-1);
|
92 |
+
}
|
93 |
+
unset($received_images[$iteration]);
|
94 |
+
|
95 |
+
if (empty($received_images) === true) {
|
96 |
+
delete_site_transient("iowd_received_images_" . $post_id);
|
97 |
+
$post_ids = get_transient("iowd_optimizing_post_ids");
|
98 |
+
if (($key = array_search($post_id, $post_ids)) !== false) {
|
99 |
+
unset($post_ids[$key]);
|
100 |
+
set_transient("iowd_optimizing_post_ids", $post_ids);
|
101 |
+
} else {
|
102 |
+
delete_transient("iowd_optimizing_post_ids");
|
103 |
+
}
|
104 |
+
delete_option("iowd_crd_" . $post_id);
|
105 |
+
delete_option("iowd_image_temp_data_" . $post_id);
|
106 |
+
delete_option("iowd_data_count_" . $post_id);
|
107 |
+
if (strpos($post_id, "auto") === false) {
|
108 |
+
set_site_transient("iowd_done_" . $post_id, 1);
|
109 |
+
}
|
110 |
+
} else {
|
111 |
+
set_site_transient("iowd_received_images_" . $post_id, $received_images);
|
112 |
+
}
|
113 |
+
|
114 |
+
|
115 |
+
} catch (S3Exception $e) {
|
116 |
+
IOWD_Log::error_log($e->getMessage());
|
117 |
+
|
118 |
+
return new WP_Error($e->getCode() == 0 ? 'amazon' : $e->getCode(), $e->getMessage());
|
119 |
+
}
|
120 |
+
|
121 |
+
return new WP_REST_Response(array('status' => 'ok', 'message' => 'success'), 200);
|
122 |
+
}
|
123 |
+
|
124 |
+
/* public function validate_credentials($param)
|
125 |
+
{
|
126 |
+
if (!$this->is_array($param)) {
|
127 |
+
return false;
|
128 |
+
}
|
129 |
+
|
130 |
+
$haystack = array('AccessKeyId', 'SecretAccessKey', 'SessionToken', 'Expiration');
|
131 |
+
$niddle = array_keys($param);
|
132 |
+
|
133 |
+
if (!array_diff($niddle, $haystack)) {
|
134 |
+
return true;
|
135 |
+
}
|
136 |
+
|
137 |
+
return false;
|
138 |
+
|
139 |
+
}
|
140 |
+
|
141 |
+
public function is_array($param)
|
142 |
+
{
|
143 |
+
return is_array($param);
|
144 |
+
}*/
|
145 |
+
|
146 |
+
|
147 |
+
}
|
iowd_class.php
ADDED
@@ -0,0 +1,490 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if (!defined('ABSPATH')) {
|
4 |
+
exit;
|
5 |
+
}
|
6 |
+
|
7 |
+
class IOWD
|
8 |
+
{
|
9 |
+
|
10 |
+
protected static $instance = null;
|
11 |
+
private static $version = '1.0.0';
|
12 |
+
private static $page;
|
13 |
+
private $reg_autoloader = false;
|
14 |
+
private $options = array();
|
15 |
+
|
16 |
+
private function __construct()
|
17 |
+
{
|
18 |
+
|
19 |
+
self::$page = isset($_GET["page"]) ? $_GET["page"] : 'iowd';
|
20 |
+
$this->options = json_decode(get_option(IOWD_PREFIX . "_options"), true);
|
21 |
+
|
22 |
+
add_action('admin_post_save_settings', array('IOWD_Settings', 'save_settings'));
|
23 |
+
add_action('admin_post_nopriv_save_settings', array('IOWD_Settings', 'save_settings'));
|
24 |
+
|
25 |
+
// ajax
|
26 |
+
add_action('wp_ajax_choose_dirs', array($this, 'ajax'));
|
27 |
+
add_action('wp_ajax_optimize', array($this, 'ajax'));
|
28 |
+
add_action('wp_ajax_get_attachment_data', array($this, 'ajax'));
|
29 |
+
add_action('wp_ajax_finish_bulk', array($this, 'ajax'));
|
30 |
+
add_action('wp_ajax_abort', array($this, 'ajax'));
|
31 |
+
|
32 |
+
add_action('wp_ajax_filter_report', array($this, 'ajax'));
|
33 |
+
add_action('wp_ajax_get_stats', array($this, 'ajax'));
|
34 |
+
add_action('wp_ajax_clear_report', array($this, 'ajax'));
|
35 |
+
add_action('wp_ajax_quick_settings', array($this, 'ajax'));
|
36 |
+
add_action('wp_ajax_update_already_used', array($this, 'ajax'));
|
37 |
+
|
38 |
+
add_action('admin_notices', array($this, 'notice'));
|
39 |
+
|
40 |
+
add_action('wp_ajax_get_subdirs', array($this, 'ajax'));
|
41 |
+
|
42 |
+
// autoloder
|
43 |
+
add_action('init', array($this, 'register_autoloader'));
|
44 |
+
|
45 |
+
require_once IOWD_DIR_INCLUDES . "/iowd-helper.php";
|
46 |
+
$limitation = IOWD_Helper::limitation();
|
47 |
+
if ($limitation["already_optimized"] < $limitation["limit"]) {
|
48 |
+
add_filter('wp_update_attachment_metadata', array($this, 'auto_optimize'), 15, 2);
|
49 |
+
}
|
50 |
+
|
51 |
+
add_action('admin_init', array($this, 'actions'));
|
52 |
+
|
53 |
+
// Add menu
|
54 |
+
add_action('admin_menu', array($this, 'admin_menu'));
|
55 |
+
|
56 |
+
// Add admin styles and scripts
|
57 |
+
add_action('admin_enqueue_scripts', array($this, 'styles'));
|
58 |
+
add_action('admin_enqueue_scripts', array($this, 'scripts'));
|
59 |
+
|
60 |
+
add_action('admin_init', array($this, 'includes'));
|
61 |
+
|
62 |
+
if (!get_option(IOWD_PREFIX . "_options")) {
|
63 |
+
self::add_options_to_db(true);
|
64 |
+
}
|
65 |
+
|
66 |
+
}
|
67 |
+
|
68 |
+
public static function activate()
|
69 |
+
{
|
70 |
+
|
71 |
+
//delete_transient('iowd_update_check');
|
72 |
+
require_once IOWD_DIR_INCLUDES . "/iowd-helper.php";
|
73 |
+
IOWD_Helper::update_already_used();
|
74 |
+
$version = get_option(IOWD_PREFIX . "_version");
|
75 |
+
if (get_option(IOWD_PREFIX . "_pro")) {
|
76 |
+
update_option(IOWD_PREFIX . "_pro", "yes");
|
77 |
+
} else {
|
78 |
+
add_option(IOWD_PREFIX . "_pro", "yes", '', 'no');
|
79 |
+
}
|
80 |
+
|
81 |
+
if ($version && version_compare($version, self::$version, '<')) {
|
82 |
+
update_option(IOWD_PREFIX . "_version", self::$version);
|
83 |
+
|
84 |
+
} else {
|
85 |
+
add_option(IOWD_PREFIX . "_version", self::$version, '', 'no');
|
86 |
+
|
87 |
+
if (!get_option(IOWD_PREFIX . "_mode")) {
|
88 |
+
add_option(IOWD_PREFIX . '_mode', "standart", '', 'no');
|
89 |
+
}
|
90 |
+
|
91 |
+
if (!get_option(IOWD_PREFIX . "_standart_setting")) {
|
92 |
+
add_option(IOWD_PREFIX . '_standart_setting', "conservative", '', 'no');
|
93 |
+
}
|
94 |
+
|
95 |
+
self::add_options_to_db();
|
96 |
+
require_once IOWD_DIR_CLASSES . "/iowddb.php";
|
97 |
+
$db = new IOWDDB();
|
98 |
+
$db->create_iowd_images_table();
|
99 |
+
}
|
100 |
+
|
101 |
+
}
|
102 |
+
|
103 |
+
private static function add_options_to_db($delete = false)
|
104 |
+
{
|
105 |
+
if ($delete == true) {
|
106 |
+
delete_option(IOWD_PREFIX . "_options");
|
107 |
+
}
|
108 |
+
require_once IOWD_DIR_INCLUDES . "/iowd-helper.php";
|
109 |
+
$sizes = IOWD_Helper::wp_get_image_sizes();
|
110 |
+
$sizes = is_array($sizes) && empty($sizes) === false ? implode(",", array_keys($sizes)) : "";
|
111 |
+
|
112 |
+
$options = array(
|
113 |
+
"api_key" => "",
|
114 |
+
"automatically_optimize" => "0",
|
115 |
+
"keep_exif_data" => "1",
|
116 |
+
"keep_originals" => "0",
|
117 |
+
"jpg_optimization_levels" => "lossy40",
|
118 |
+
"png_optimization_levels" => "lossy40",
|
119 |
+
"gif_optimization_levels" => "lossless",
|
120 |
+
"pdf_optimization_levels" => "0",
|
121 |
+
"scheduled_optimization" => "0",
|
122 |
+
"scheduled_optimization_recurrence" => "",
|
123 |
+
"other_folders" => "",
|
124 |
+
"resize_media_images_width" => "",
|
125 |
+
"resize_media_images_height" => "",
|
126 |
+
"enable_resizing" => "",
|
127 |
+
"enable_resizing_other" => "",
|
128 |
+
"resize_other_images_width" => "",
|
129 |
+
"resize_other_images_height" => "",
|
130 |
+
"optimize_thumbs" => $sizes,
|
131 |
+
"skip_small_images" => "",
|
132 |
+
"skip_large_images" => "",
|
133 |
+
"exclude_full_size" => "1",
|
134 |
+
"exclude_full_size_metadata_removal" => "0",
|
135 |
+
"optimize_once_more" => "1",
|
136 |
+
"enable_conversion" => "0",
|
137 |
+
"jpg_to_png" => "0",
|
138 |
+
"png_to_jpg" => "0",
|
139 |
+
"gif_to_png" => "0",
|
140 |
+
"jpg_to_webp" => "0",
|
141 |
+
"png_to_webp" => "0",
|
142 |
+
);
|
143 |
+
add_option(IOWD_PREFIX . "_options", json_encode($options), '', 'no');
|
144 |
+
}
|
145 |
+
|
146 |
+
public static function deactivate()
|
147 |
+
{
|
148 |
+
wp_clear_scheduled_hook('iowd_optimize');
|
149 |
+
}
|
150 |
+
|
151 |
+
public static function get_instance()
|
152 |
+
{
|
153 |
+
if (null == self::$instance) {
|
154 |
+
self::$instance = new self;
|
155 |
+
}
|
156 |
+
|
157 |
+
return self::$instance;
|
158 |
+
}
|
159 |
+
|
160 |
+
public static function autoload($class)
|
161 |
+
{
|
162 |
+
$class = str_replace("_", "-", strtolower($class));
|
163 |
+
$include_file = IOWD_DIR_INCLUDES . "/" . $class . ".php";
|
164 |
+
if (file_exists($include_file)) {
|
165 |
+
include_once $include_file;
|
166 |
+
}
|
167 |
+
}
|
168 |
+
|
169 |
+
public static function autoloadProxy($class)
|
170 |
+
{
|
171 |
+
__autoload($class);
|
172 |
+
}
|
173 |
+
|
174 |
+
// Return an instance of this class.
|
175 |
+
|
176 |
+
public function notice()
|
177 |
+
{
|
178 |
+
if($this->is_iowd_page()) {
|
179 |
+
$limitation = IOWD_Helper::limitation();
|
180 |
+
$whitelist = array(
|
181 |
+
'127.0.0.1',
|
182 |
+
'::1'
|
183 |
+
);
|
184 |
+
if(in_array($_SERVER['REMOTE_ADDR'], $whitelist)){
|
185 |
+
echo "<div class='error'><p>" . __("Image optimizing is disabled on Localhost. Please install the plugin on a live server to optimize images.", IOWD_PREFIX) . "</p></div>";
|
186 |
+
}
|
187 |
+
if ($limitation["already_optimized"] >= $limitation["limit"]) {
|
188 |
+
echo "<div class='error'><p>" . sprintf(__("Your subscription plan allows optimizing %s images per month. This limitation has expired for current month.", IOWD_PREFIX), $limitation["limit"]) . "</p></div>";
|
189 |
+
}
|
190 |
+
if (!class_exists("WP_REST_Controller")) {
|
191 |
+
echo "<div class='error'><p>" . __("Image Optimizer plugin requires WordPress 4.7 or higher.", IOWD_PREFIX) . "</p></div>";
|
192 |
+
}
|
193 |
+
}
|
194 |
+
|
195 |
+
|
196 |
+
}
|
197 |
+
|
198 |
+
// Admin menu
|
199 |
+
|
200 |
+
public function actions()
|
201 |
+
{
|
202 |
+
|
203 |
+
if (isset($_GET["iowd_mode"])) {
|
204 |
+
$mode = ($_GET["iowd_mode"] == "standart" || $_GET["iowd_mode"] == "advanced") ? $_GET["iowd_mode"] : "standart";
|
205 |
+
|
206 |
+
if (get_option(IOWD_PREFIX . "_mode")) {
|
207 |
+
update_option(IOWD_PREFIX . "_mode", $mode);
|
208 |
+
} else {
|
209 |
+
add_option(IOWD_PREFIX . '_mode', $mode, '', 'no');
|
210 |
+
}
|
211 |
+
if ($mode == "standart") {
|
212 |
+
$standart_setting = get_option(IOWD_PREFIX . "_standart_setting");
|
213 |
+
$settings = json_decode(get_option(IOWD_PREFIX . "_options"), true);
|
214 |
+
if ($standart_setting == "conservative") {
|
215 |
+
$settings["keep_exif_data"] = 1;
|
216 |
+
$settings["exclude_full_size_metadata_removal"] = 1;
|
217 |
+
$settings["exclude_full_size"] = 1;
|
218 |
+
$settings["jpg_optimization_levels"] = "lossless";
|
219 |
+
$settings["png_optimization_levels"] = "lossless";
|
220 |
+
$settings["gif_optimization_levels"] = "lossless";
|
221 |
+
$settings["pdf_optimization_levels"] = "lossless";
|
222 |
+
|
223 |
+
update_option(IOWD_PREFIX . "_options", json_encode($settings));
|
224 |
+
} else if ($standart_setting == "balanced") {
|
225 |
+
$settings["keep_exif_data"] = 1;
|
226 |
+
$settings["exclude_full_size_metadata_removal"] = 1;
|
227 |
+
$settings["exclude_full_size"] = 1;
|
228 |
+
$settings["jpg_optimization_levels"] = "lossy40";
|
229 |
+
$settings["png_optimization_levels"] = "lossy40";
|
230 |
+
$settings["gif_optimization_levels"] = "lossless";
|
231 |
+
$settings["pdf_optimization_levels"] = "lossless";
|
232 |
+
|
233 |
+
update_option(IOWD_PREFIX . "_options", json_encode($settings));
|
234 |
+
} else if ($standart_setting == "extreme") {
|
235 |
+
$settings["keep_exif_data"] = 0;
|
236 |
+
$settings["exclude_full_size_metadata_removal"] = 0;
|
237 |
+
$settings["exclude_full_size"] = 0;
|
238 |
+
$settings["jpg_optimization_levels"] = "lossy";
|
239 |
+
$settings["png_optimization_levels"] = "lossy";
|
240 |
+
$settings["gif_optimization_levels"] = "lossless";
|
241 |
+
$settings["pdf_optimization_levels"] = "lossless";
|
242 |
+
|
243 |
+
update_option(IOWD_PREFIX . "_options", json_encode($settings));
|
244 |
+
}
|
245 |
+
|
246 |
+
}
|
247 |
+
|
248 |
+
IOWD_Helper::redirect(array("page" => "iowd_settings"));
|
249 |
+
}
|
250 |
+
|
251 |
+
}
|
252 |
+
|
253 |
+
|
254 |
+
// Admin main function
|
255 |
+
|
256 |
+
public function auto_optimize($meta, $id)
|
257 |
+
{
|
258 |
+
$options = $this->options;
|
259 |
+
if ($options["automatically_optimize"] == 0) {
|
260 |
+
return $meta;
|
261 |
+
}
|
262 |
+
$optimize = new IOWD_Optimize(true);
|
263 |
+
$ids = is_array($id) ? $id : array($id);
|
264 |
+
|
265 |
+
$optimize->get_temp_data($ids, false, true, $meta);
|
266 |
+
$meta = $optimize->optimize(0, "auto_" . $id, 1, $meta);
|
267 |
+
|
268 |
+
return $meta;
|
269 |
+
}
|
270 |
+
|
271 |
+
public function scheduled_optimization()
|
272 |
+
{
|
273 |
+
$options = $this->options;
|
274 |
+
|
275 |
+
if ($options["scheduled_optimization"] == 0) {
|
276 |
+
return;
|
277 |
+
}
|
278 |
+
$optimize = new IOWD_Optimize();
|
279 |
+
$data_count = $optimize->get_temp_data();
|
280 |
+
for ($i = 0; $i < $data_count; $i++) {
|
281 |
+
$optimize->optimize($i);
|
282 |
+
}
|
283 |
+
|
284 |
+
}
|
285 |
+
|
286 |
+
// Register autoloader
|
287 |
+
|
288 |
+
public function admin_menu()
|
289 |
+
{
|
290 |
+
$parent_slug = null;
|
291 |
+
if( get_option( "iowd_subscribe_done" ) == 1 ){
|
292 |
+
$parent_slug = "iowd_settings";
|
293 |
+
add_menu_page("Image Optimizer", "Image Optimizer", 'manage_options', 'iowd_settings', array($this, 'iowd_admin'), IOWD_URL_IMG . "/icon.png");
|
294 |
+
}
|
295 |
+
add_submenu_page($parent_slug, "Image Optimizer", "Image Optimizer", 'manage_options', 'iowd_settings', array($this, 'iowd_admin'));
|
296 |
+
|
297 |
+
add_submenu_page($parent_slug, 'Image Optimizer', 'Report', 'manage_options', 'iowd_report', array($this, 'iowd_admin'));
|
298 |
+
}
|
299 |
+
|
300 |
+
public function iowd_admin()
|
301 |
+
{
|
302 |
+
if ($this->is_iowd_page() == true) {
|
303 |
+
$this->upgrade_pro();
|
304 |
+
$view_class = ucfirst(strtolower(self::$page));
|
305 |
+
$view = new $view_class();
|
306 |
+
$view->display();
|
307 |
+
}
|
308 |
+
}
|
309 |
+
|
310 |
+
private function is_iowd_page()
|
311 |
+
{
|
312 |
+
$iowd_pages = array(
|
313 |
+
IOWD_PREFIX . "_settings",
|
314 |
+
IOWD_PREFIX . "_report",
|
315 |
+
);
|
316 |
+
|
317 |
+
if (in_array(self::$page, $iowd_pages) == true) {
|
318 |
+
return true;
|
319 |
+
}
|
320 |
+
|
321 |
+
return false;
|
322 |
+
|
323 |
+
}
|
324 |
+
|
325 |
+
public function ajax()
|
326 |
+
{
|
327 |
+
check_ajax_referer('nonce_' . IOWD_PREFIX, 'nonce_' . IOWD_PREFIX);
|
328 |
+
$action = isset($_REQUEST["action"]) ? $_REQUEST["action"] : '';
|
329 |
+
|
330 |
+
if ($action) {
|
331 |
+
if (method_exists('IOWD_Ajax', $action)) {
|
332 |
+
IOWD_Ajax::$action();
|
333 |
+
}
|
334 |
+
}
|
335 |
+
wp_die();
|
336 |
+
|
337 |
+
}
|
338 |
+
|
339 |
+
// Admin styles
|
340 |
+
|
341 |
+
public function register_autoloader()
|
342 |
+
{
|
343 |
+
if ($this->reg_autoloader) {
|
344 |
+
return;
|
345 |
+
}
|
346 |
+
spl_autoload_register(array(__CLASS__, "autoload"));
|
347 |
+
|
348 |
+
if (function_exists("__autoload")) {
|
349 |
+
spl_autoload_register(array(__CLASS__, "autoloadProxy"));
|
350 |
+
}
|
351 |
+
|
352 |
+
$this->reg_autoloader = true;
|
353 |
+
}
|
354 |
+
|
355 |
+
// Admin scripts
|
356 |
+
|
357 |
+
public function includes()
|
358 |
+
{
|
359 |
+
require_once IOWD_DIR_CLASSES . "/iowddb.php";
|
360 |
+
require_once IOWD_DIR_CLASSES . "/iowdimage.php";
|
361 |
+
}
|
362 |
+
|
363 |
+
public function styles()
|
364 |
+
{
|
365 |
+
wp_admin_css('thickbox');
|
366 |
+
if ($this->is_iowd_page() == true) {
|
367 |
+
wp_enqueue_style(IOWD_PREFIX . '_admin_main-css', IOWD_URL_CSS . '/admin_main.css', array(), self::$version);
|
368 |
+
wp_enqueue_style(IOWD_PREFIX . '_calendar-css', IOWD_URL_CSS . '/calendar-jos.css');
|
369 |
+
}
|
370 |
+
|
371 |
+
}
|
372 |
+
|
373 |
+
public function scripts()
|
374 |
+
{
|
375 |
+
$options = $this->options;
|
376 |
+
wp_enqueue_script('jquery');
|
377 |
+
wp_enqueue_script('jquery-ui');
|
378 |
+
wp_enqueue_script('jquery-ui-tooltip');
|
379 |
+
|
380 |
+
// api js
|
381 |
+
wp_enqueue_script(IOWD_PREFIX . '_api-js', IOWD_URL_JS . '/api.js', array(), self::$version);
|
382 |
+
wp_localize_script(IOWD_PREFIX . '_api-js', 'apiText', array(
|
383 |
+
"error_1" => __("Invalid Api key, or Api key not found.", IOWD_PREFIX),
|
384 |
+
|
385 |
+
));
|
386 |
+
|
387 |
+
// admin main js
|
388 |
+
wp_enqueue_script(IOWD_PREFIX . '_admin_main-js', IOWD_URL_JS . '/admin_main.js', array(), self::$version);
|
389 |
+
|
390 |
+
global $pagenow;
|
391 |
+
$is_media_page = ($pagenow == 'upload.php' || $pagenow == 'post.php') && !(isset($_GET["page"]) && $_GET["page"] == "iowd_settings") ? 1 : 0;
|
392 |
+
|
393 |
+
wp_localize_script(IOWD_PREFIX . '_admin_main-js', 'iowd', array(
|
394 |
+
"options" => get_option(IOWD_PREFIX . "_options", array()),
|
395 |
+
"finishUploadingBulk" => __(" images are ready to be optimized.", IOWD_PREFIX),
|
396 |
+
"finishUploadingSingle" => __("Processing optimize", IOWD_PREFIX),
|
397 |
+
"ajaxURL" => admin_url('admin-ajax.php'),
|
398 |
+
"nonce" => wp_create_nonce('nonce_' . IOWD_PREFIX),
|
399 |
+
"page" => self::$page,
|
400 |
+
"iowd_active_tab" => (isset($_REQUEST["iowd_tabs_active"]) ? $_REQUEST["iowd_tabs_active"] : ""),
|
401 |
+
"is_media_page" => $is_media_page,
|
402 |
+
"iowd_image_url" => IOWD_URL_IMG,
|
403 |
+
"enable_resizing" => $options["enable_resizing"],
|
404 |
+
"enable_resizing_other" => $options["enable_resizing_other"],
|
405 |
+
"iowd_optimizing" => (isset($_GET["iowd_optimizing"]) ? $_GET["iowd_optimizing"] : 0),
|
406 |
+
|
407 |
+
));
|
408 |
+
|
409 |
+
|
410 |
+
if ($this->is_iowd_page() == true) {
|
411 |
+
|
412 |
+
wp_enqueue_script(IOWD_PREFIX . '_settings-js', IOWD_URL_JS . '/settings.js', array(), self::$version);
|
413 |
+
|
414 |
+
|
415 |
+
wp_localize_script(IOWD_PREFIX . '_settings-js', 'iowdSettingsGlobal', array(
|
416 |
+
"image_url" => IOWD_URL_IMG,
|
417 |
+
"ajaxURL" => admin_url('admin-ajax.php'),
|
418 |
+
"nonce" => wp_create_nonce('nonce_' . IOWD_PREFIX),
|
419 |
+
"page" => (isset($_GET["page"]) ? $_GET["page"] : IOWD_PREFIX . "_settings"),
|
420 |
+
"save_dirs_txt" => __("Save directories", IOWD_PREFIX),
|
421 |
+
));
|
422 |
+
|
423 |
+
wp_enqueue_script(IOWD_PREFIX . '_calendar-js', IOWD_URL_JS . '/calendar.js', array(), self::$version, true);
|
424 |
+
wp_enqueue_script(IOWD_PREFIX . '_calendar_function-js', IOWD_URL_JS . '/calendar_function.js', array(), self::$version, true);
|
425 |
+
|
426 |
+
}
|
427 |
+
|
428 |
+
}
|
429 |
+
|
430 |
+
public function upgrade_pro()
|
431 |
+
{
|
432 |
+
$page = isset($_GET["page"]) ? $_GET["page"] : "";
|
433 |
+
?>
|
434 |
+
<div class="iowd_upgrade wd-clear">
|
435 |
+
<div class="wd-left">
|
436 |
+
<?php
|
437 |
+
switch ($page) {
|
438 |
+
case "iowd_settings": ?>
|
439 |
+
<div style="font-size: 14px;margin-top: 6px;">
|
440 |
+
<?php
|
441 |
+
if (get_option(IOWD_PREFIX . '_mode') == "standart") {
|
442 |
+
_e("This section allows you quickly optimize the pictures, without going through advanced settings.", IOWD_PREFIX); ?>
|
443 |
+
<a style="color: #5CAEBD; text-decoration: none;border-bottom: 1px dotted;"
|
444 |
+
target="_blank"
|
445 |
+
href="https://web-dorado.com/wordpress-image-optimizer-guide/easy-optimization.html"><?php _e("Read More in User Manual.", IOWD_PREFIX); ?></a>
|
446 |
+
<?php
|
447 |
+
} else {
|
448 |
+
_e("This section allows you configure image optimization and set up what best fits your website.", IOWD_PREFIX); ?>
|
449 |
+
<a style="color: #5CAEBD; text-decoration: none;border-bottom: 1px dotted;"
|
450 |
+
target="_blank"
|
451 |
+
href="https://web-dorado.com/wordpress-image-optimizer-guide/advanced-optimization.html"><?php _e("Read More in User Manual.", IOWD_PREFIX); ?></a>
|
452 |
+
<?php
|
453 |
+
}
|
454 |
+
?>
|
455 |
+
</div>
|
456 |
+
<?php
|
457 |
+
break;
|
458 |
+
case "iowd_report":
|
459 |
+
?>
|
460 |
+
<div style="font-size: 14px;margin-top: 6px;">
|
461 |
+
<?php _e("This section allows you to check the optimization results.", IOWD_PREFIX); ?>
|
462 |
+
<a style="color: #5CAEBD; text-decoration: none;border-bottom: 1px dotted;" target="_blank"
|
463 |
+
href="https://web-dorado.com/wordpress-image-optimizer-guide/statistics-report.html"><?php _e("Read More in User Manual.", IOWD_PREFIX); ?></a>
|
464 |
+
</div>
|
465 |
+
<?php
|
466 |
+
break;
|
467 |
+
}
|
468 |
+
?>
|
469 |
+
</div>
|
470 |
+
<div class="wd-right">
|
471 |
+
<a href="https://web-dorado.com/products/wordpress-image-optimizer.html" target="_blank">
|
472 |
+
<div class="wd-table">
|
473 |
+
<div class="wd-cell wd-cell-valign-middle">
|
474 |
+
<img src="<?php echo IOWD_URL_IMG; ?>/web-dorado.png" width="42px">
|
475 |
+
</div>
|
476 |
+
<div class="wd-cell wd-cell-valign-middle">
|
477 |
+
<?php _e("UPGRADE TO PAID VERSION", IOWD_PREFIX); ?>
|
478 |
+
</div>
|
479 |
+
</div>
|
480 |
+
</a>
|
481 |
+
|
482 |
+
</div>
|
483 |
+
</div>
|
484 |
+
<?php
|
485 |
+
}
|
486 |
+
|
487 |
+
}
|
488 |
+
|
489 |
+
|
490 |
+
|
log/index.php
ADDED
File without changes
|
readme.txt
ADDED
@@ -0,0 +1,226 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=== Image Optimizer WD – WordPress Image Optimizer ===
|
2 |
+
Contributors: webdorado
|
3 |
+
Donate link: https://web-dorado.com/products/wordpress-image-optimizer.html
|
4 |
+
Tags: : compress, image, images optimization, performance, photos, lossless, optimize
|
5 |
+
Requires at least: 3.9
|
6 |
+
Tested up to: 4.8
|
7 |
+
Stable tag: 1.0.0
|
8 |
+
License: GPLv2 or later
|
9 |
+
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
+
|
11 |
+
Image Optimizer WD enables you to resize, compress and optimize PNG, JPG, GIF files while maintaining image quality.
|
12 |
+
|
13 |
+
== Description ==
|
14 |
+
|
15 |
+
[Image Optimizer WD](https://web-dorado.com/products/wordpress-image-optimizer.html)
|
16 |
+
[User Manual](https://web-dorado.com/wordpress-image-optimizer-guide/introduction.html)
|
17 |
+
|
18 |
+
Do you have a lot of high resolution images on your website? Images on your website can significantly increase your page load time and be frustrating for your site visitors. The optimization of images will accelerate your website, as well as help you save bandwidth and storage space on your website.
|
19 |
+
|
20 |
+
Image Optimizer WordPress plugin enables you to resize, compress and optimize PNG, JPG, GIF and PDF (paid version only) files while maintaining image quality. Lossless, Lossy and Maximum Lossy (paid version only) Compression methods are available to choose from. Lossless Compression allows you to resize images without notably impacting image quality. With Lossy Compression method you’ll be able to compress images with minimal loss of quality. Overall, the image compression plugin will enable you to resize the image files up to 80%, depending on image and compression type.
|
21 |
+
|
22 |
+
The image optimizer plugin can optimize the new images you upload, but you can also optimize existing images on your website. The WordPress plugin comes with a bulk optimization option, which allows to optimize multiple images at once with a single click. The number of images you can optimize in bulk is limited in the free version of the plugin.
|
23 |
+
|
24 |
+
Choose from 3 modes of compression available in the easy mode, including conservative, balanced, extreme. You can also choose to optimize images from the Advanced mode of the plugin.
|
25 |
+
|
26 |
+
The advanced setting of the plugin allow you to convert your images to the file format that works best for you, optimize the image sizes that you want, including thumbnails.
|
27 |
+
|
28 |
+
The plugin provides statistics, so you can always know how many images were optimized, when the last optimization occurred and how much space you’ve saved in the result.
|
29 |
+
|
30 |
+
|
31 |
+
|
32 |
+
### Features of Image Optimizer WD plugin:
|
33 |
+
|
34 |
+
* SEO friendly Image Optimization
|
35 |
+
* Easy to setup and use
|
36 |
+
* Shrink JPEG, PNG, GIF files
|
37 |
+
* Optimize 1000 images every month
|
38 |
+
* Convert from one image type to another
|
39 |
+
* 3 Modes - conservative, balanced, extreme
|
40 |
+
* Lossless and Lossy Conversions without losing image quality or minimal quality loss
|
41 |
+
* Pick exactly which sizes you want to compress (i.e. thumbnail, medium, etc.)
|
42 |
+
* Automatic optimization options
|
43 |
+
* Bulk optimization to optimize more than one image at once
|
44 |
+
* Improve your website’s load times
|
45 |
+
|
46 |
+
Upgrade to [Image Optimizer WD Pro](https://web-dorado.com/products/wordpress-image-optimizer.html) to add features:
|
47 |
+
|
48 |
+
* Optimize PDF files
|
49 |
+
* Schedule optimization to automatically compress images hourly, twice daily or daily
|
50 |
+
* Optimize up to 40000 images every month
|
51 |
+
* Maximum lossy compression
|
52 |
+
|
53 |
+
|
54 |
+
|
55 |
+
== Changelog ==
|
56 |
+
|
57 |
+
= 1.0.0 =
|
58 |
+
* Initial version
|
59 |
+
|
60 |
+
|
61 |
+
|
62 |
+
== Installation ==
|
63 |
+
|
64 |
+
#### Thank you for your interest in Image Optimizer WD.
|
65 |
+
|
66 |
+
### Minimum requirements.
|
67 |
+
* Wordpress 3.9+
|
68 |
+
* PHP 5.4+
|
69 |
+
* MySQL 5.x
|
70 |
+
|
71 |
+
### Perform a new installation
|
72 |
+
|
73 |
+
After downloading the ZIP file of the Image Optimizer WD plugin,
|
74 |
+
|
75 |
+
1. Log in to the administrator panel.
|
76 |
+
2. Go to Plugins Add > New > Upload.
|
77 |
+
3. Click "Choose file" ("Browse") and select the downloaded zip file of the Image Optimizer WD plugin.
|
78 |
+
*For Mac Users*
|
79 |
+
*Go to your Downloads folder and locate the folder with the Image Optimizer WD. Right-click on the folder and select Compress. Now you have a newly created .zip file which can be installed as described here.*
|
80 |
+
4. Click "Install Now" button.
|
81 |
+
5. Click "Activate Plugin" button for activating the Image Optimizer WD.
|
82 |
+
6. If the installation does not succeed, please contact us at [support@web-dorado.com](mailto:support@web-dorado.com).
|
83 |
+
|
84 |
+
== Image Optimizer WD User Manual ==
|
85 |
+
|
86 |
+
= Introduction =
|
87 |
+
|
88 |
+
Image Optimizer plugin is created to compress, convert, and reduce the size of large images throughout your website. With just a few steps, you are able to configure and perform optimization for all images. This lets you quickly decrease the amount of used storage space on the hosting of your website and speed up its performance.
|
89 |
+
|
90 |
+
The plugin lets you optimize images from directories other than WordPress Media Library. This feature lets you optimize the images by simply providing the URL of the folder containing your pictures.
|
91 |
+
|
92 |
+
Image Optimizer plugin is simple and straightforward, however, it provides all necessary options to control the optimization process, set up automatic optimization and much more. This user guide will help you configure the plugin and assemble the specific optimization type, which fits your site.
|
93 |
+
|
94 |
+
|
95 |
+
= Easy Mode of Optimization =
|
96 |
+
|
97 |
+
Click on Image Optimizer menu item from WordPress left menu to start its configuration. To quickly optimize the pictures, without going through advanced settings, you can use Easy Mode of Image Optimizer plugin. Click Image Optimizer menu item to navigate to the plugin’s Settings page.
|
98 |
+
|
99 |
+
Easy Mode of image optimization consist of three optimization types:
|
100 |
+
Conservative
|
101 |
+
Reduces image size up to 20%.
|
102 |
+
Keeps EXIF data of the pictures.
|
103 |
+
Keeps full-sized images.
|
104 |
+
|
105 |
+
Balanced
|
106 |
+
Reduces image size up to 40% (lossy reduction).
|
107 |
+
Keeps EXIF data of the pictures.
|
108 |
+
Keeps full-sized images.
|
109 |
+
|
110 |
+
Extreme
|
111 |
+
Reduces image size up to 90% (extreme reduction).
|
112 |
+
Doesn’t keep EXIF data of the pictures.
|
113 |
+
Doesn’t keep full-sized images.
|
114 |
+
|
115 |
+
How it works? link will help you compare optimized versions of images with all three types, and choose the best one for your photos. Once you have selected the type, press Optimize Now (Bulk Optimizing) button, and the plugin will start the image compression.
|
116 |
+
|
117 |
+
In case you wish to automatically optimize uploaded images, turn on Auto Optimize setting.
|
118 |
+
|
119 |
+
|
120 |
+
= Optimizing from WordPress Media Library =
|
121 |
+
|
122 |
+
You are also able to optimize individual images from WordPress Media Library. Press Media Library link to navigate there, then open the image you need to optimize. You will find Optimize button at the bottom of right pane.
|
123 |
+
|
124 |
+
After clicking Optimize, you can Reoptimize individual images later.
|
125 |
+
|
126 |
+
Furthermore, you can optimize several images at once. Fistly, make sure to select List View of WordPress Media library, then choose the images you need to optimize. Select Optimize option from Bulk Actions dropdown box, then press Apply.
|
127 |
+
|
128 |
+
Advanced Mode of Optimization
|
129 |
+
|
130 |
+
With its Advanced optimization settings, the plugin lets you configure image optimization and set up what best fits your website. Press Image Optimizer link from left menu, then click on Advanced tab to access its option.
|
131 |
+
|
132 |
+
As with Easy Mode, the plugin lets you activate Auto Optimize option for newly uploaded images. Don’t forget to hit Save Settings after you make changes in the plugin configuration.
|
133 |
+
|
134 |
+
= General =
|
135 |
+
|
136 |
+
Keep EXIF data
|
137 |
+
This setting lets you keep or remove EXIF data of the images. This information is the date photo was taken, exposure, camera lense, shutter speed, etc. It makes the images larger, but in case you are a photographer, it would be best to keep it.
|
138 |
+
|
139 |
+
Exclude full-size images from EXIF data removal
|
140 |
+
In case Keep EXIF data option is set to No, you are able to enable this option to prevent EXIF data removal from full-size images.
|
141 |
+
|
142 |
+
Keep originals
|
143 |
+
In case this option is enabled, Image Optimizer plugin will create a directory titled /.iowd_orig, where it will store the original versions of optimized images.
|
144 |
+
|
145 |
+
JPG Optimization Level and PNG Optimization Level
|
146 |
+
Select the optimization level for JPG and PNG images. You can choose one of the following:
|
147 |
+
No Compression
|
148 |
+
Lossless Compression
|
149 |
+
Lossy Compression
|
150 |
+
Maximum Lossy Compression
|
151 |
+
|
152 |
+
GIF Optimization Level and PDF Optimization Level
|
153 |
+
Select the optimization level for GIF images and PDF files. You can choose one of the following:
|
154 |
+
No Compression
|
155 |
+
Lossless Compression
|
156 |
+
|
157 |
+
= Conversion =
|
158 |
+
|
159 |
+
Warning! In case the images are used in other plugins, problems may occur after converting them, if these plugins use the absolute URLs of the images. There will be no issues in case they use the media IDs of the pictures.
|
160 |
+
|
161 |
+
Enable conversion
|
162 |
+
Turn on this setting in case you wish to convert the format of your website images, to make the site faster.
|
163 |
+
|
164 |
+
JPG to PNG conversion
|
165 |
+
PNG uses lossless compression. It is recommended to use for logos, and other pictures with transparent backgrounds. This option removes image metadata and increases CPU usage.
|
166 |
+
|
167 |
+
JPG to WebP conversion
|
168 |
+
WebP lets you have 25-34% smaller images and speed up your website. JPG to WebP conversion is lossy, but it will not affect the image quality significantly.
|
169 |
+
|
170 |
+
PNG to JPG conversion
|
171 |
+
JPG format is recommended to use for photographs and similar high-resolution images. Since it uses lossy compression, some of the image data is lost when the image is compressed.
|
172 |
+
|
173 |
+
PNG to WebP conversion
|
174 |
+
PNG to WebP conversion is lossless. WebP images are 26% smaller in size, than their PNGs. This lets you make your website faster.
|
175 |
+
|
176 |
+
GIF to PNG conversion
|
177 |
+
PNG uses lossless compression. It is recommended for logos and pictures with transparent backgrounds. Note, that animated GIFs cannot be converted.
|
178 |
+
|
179 |
+
Other
|
180 |
+
|
181 |
+
Scheduled optimization
|
182 |
+
Enable this setting to automatically optimize new images based on the value of How often the optimization should reoccur setting. It can be set to one of the following options:
|
183 |
+
Hourly
|
184 |
+
Twice daily
|
185 |
+
Daily
|
186 |
+
|
187 |
+
Exclude full-size images from optimization
|
188 |
+
Enable this setting, in case you don’t want to optimize full-size images of your website.
|
189 |
+
|
190 |
+
Resize media full-size images
|
191 |
+
If Exclude full-size images from optimization is disabled, you are able to activate resizing for full-size images in WordPress Media Library.
|
192 |
+
|
193 |
+
Resize other directory images
|
194 |
+
Activate this option to resize the images of other directories, when optimizing them.
|
195 |
+
|
196 |
+
Other directory images dimensions
|
197 |
+
In case you choose to resize the image of other directories, use this setting to provide the dimensions, to which they are going to be resized to.
|
198 |
+
|
199 |
+
Optimize these sizes
|
200 |
+
This setting lets you select which image sizes to optimize, for instance, medium or large pictures.
|
201 |
+
|
202 |
+
Don't optimize images smaller than
|
203 |
+
Use this option to define the lower limit of image size, which will be optimized with Image Optimizer plugin.
|
204 |
+
|
205 |
+
Don't optimize images larger than
|
206 |
+
Use this option to define the upper limit of image size, which will be optimized with Image Optimizer plugin.
|
207 |
+
|
208 |
+
In other has optimize once more, if optimization level has chahged
|
209 |
+
If this option is enabled, the plugin will optimize the images again, in case optimization level has been changed in Image Optimizer settings.
|
210 |
+
|
211 |
+
Optimizing Other Directories
|
212 |
+
|
213 |
+
Image Optimizer plugin lets you optimize images of other directories of your domain with just a few clicks. You will only need to provide Directory Path after pressing Select Directory button. Make sure to press Save Directories button after adding the path.
|
214 |
+
|
215 |
+
In case you have uploaded new images to the selected directory after adding it to Image Optimizer settings, you need to press Refresh button to add the new pictures to optimization queue.
|
216 |
+
|
217 |
+
= Statistics and Report =
|
218 |
+
|
219 |
+
Statistics
|
220 |
+
|
221 |
+
To let you quickly check the optimization results and be posted about latest optimization process, the plugin adds Statistics section to Image Optimizer settings. You can check the reduction size in WordPress Media Library or other directories, see how many images were optimized, and more.
|
222 |
+
|
223 |
+
Report
|
224 |
+
|
225 |
+
To see long-term results and the list of optimized images, you can use Report dashboard. Go to Image Optimizer > Report page to access the list. This dashboard lets you filter the images by name, date, size or type. You can also clear the optimization history of each individual image, or reset the report by pressing Clear History button.
|
226 |
+
|
vendor/aannnaa7/aws-sdk-php-minimized/LICENSE.md
ADDED
@@ -0,0 +1,141 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Apache License
|
2 |
+
Version 2.0, January 2004
|
3 |
+
|
4 |
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
5 |
+
|
6 |
+
## 1. Definitions.
|
7 |
+
|
8 |
+
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1
|
9 |
+
through 9 of this document.
|
10 |
+
|
11 |
+
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the
|
12 |
+
License.
|
13 |
+
|
14 |
+
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled
|
15 |
+
by, or are under common control with that entity. For the purposes of this definition, "control" means
|
16 |
+
(i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract
|
17 |
+
or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial
|
18 |
+
ownership of such entity.
|
19 |
+
|
20 |
+
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
|
21 |
+
|
22 |
+
"Source" form shall mean the preferred form for making modifications, including but not limited to software
|
23 |
+
source code, documentation source, and configuration files.
|
24 |
+
|
25 |
+
"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form,
|
26 |
+
including but not limited to compiled object code, generated documentation, and conversions to other media
|
27 |
+
types.
|
28 |
+
|
29 |
+
"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License,
|
30 |
+
as indicated by a copyright notice that is included in or attached to the work (an example is provided in the
|
31 |
+
Appendix below).
|
32 |
+
|
33 |
+
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from)
|
34 |
+
the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent,
|
35 |
+
as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not
|
36 |
+
include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work
|
37 |
+
and Derivative Works thereof.
|
38 |
+
|
39 |
+
"Contribution" shall mean any work of authorship, including the original version of the Work and any
|
40 |
+
modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to
|
41 |
+
Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to
|
42 |
+
submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of
|
43 |
+
electronic, verbal, or written communication sent to the Licensor or its representatives, including but not
|
44 |
+
limited to communication on electronic mailing lists, source code control systems, and issue tracking systems
|
45 |
+
that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but
|
46 |
+
excluding communication that is conspicuously marked or otherwise designated in writing by the copyright
|
47 |
+
owner as "Not a Contribution."
|
48 |
+
|
49 |
+
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been
|
50 |
+
received by Licensor and subsequently incorporated within the Work.
|
51 |
+
|
52 |
+
## 2. Grant of Copyright License.
|
53 |
+
|
54 |
+
Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual,
|
55 |
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare
|
56 |
+
Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such
|
57 |
+
Derivative Works in Source or Object form.
|
58 |
+
|
59 |
+
## 3. Grant of Patent License.
|
60 |
+
|
61 |
+
Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual,
|
62 |
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent
|
63 |
+
license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such
|
64 |
+
license applies only to those patent claims licensable by such Contributor that are necessarily infringed by
|
65 |
+
their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such
|
66 |
+
Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim
|
67 |
+
or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work
|
68 |
+
constitutes direct or contributory patent infringement, then any patent licenses granted to You under this
|
69 |
+
License for that Work shall terminate as of the date such litigation is filed.
|
70 |
+
|
71 |
+
## 4. Redistribution.
|
72 |
+
|
73 |
+
You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without
|
74 |
+
modifications, and in Source or Object form, provided that You meet the following conditions:
|
75 |
+
|
76 |
+
1. You must give any other recipients of the Work or Derivative Works a copy of this License; and
|
77 |
+
|
78 |
+
2. You must cause any modified files to carry prominent notices stating that You changed the files; and
|
79 |
+
|
80 |
+
3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent,
|
81 |
+
trademark, and attribution notices from the Source form of the Work, excluding those notices that do
|
82 |
+
not pertain to any part of the Derivative Works; and
|
83 |
+
|
84 |
+
4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that
|
85 |
+
You distribute must include a readable copy of the attribution notices contained within such NOTICE
|
86 |
+
file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one
|
87 |
+
of the following places: within a NOTICE text file distributed as part of the Derivative Works; within
|
88 |
+
the Source form or documentation, if provided along with the Derivative Works; or, within a display
|
89 |
+
generated by the Derivative Works, if and wherever such third-party notices normally appear. The
|
90 |
+
contents of the NOTICE file are for informational purposes only and do not modify the License. You may
|
91 |
+
add Your own attribution notices within Derivative Works that You distribute, alongside or as an
|
92 |
+
addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be
|
93 |
+
construed as modifying the License.
|
94 |
+
|
95 |
+
You may add Your own copyright statement to Your modifications and may provide additional or different license
|
96 |
+
terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative
|
97 |
+
Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the
|
98 |
+
conditions stated in this License.
|
99 |
+
|
100 |
+
## 5. Submission of Contributions.
|
101 |
+
|
102 |
+
Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by
|
103 |
+
You to the Licensor shall be under the terms and conditions of this License, without any additional terms or
|
104 |
+
conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate
|
105 |
+
license agreement you may have executed with Licensor regarding such Contributions.
|
106 |
+
|
107 |
+
## 6. Trademarks.
|
108 |
+
|
109 |
+
This License does not grant permission to use the trade names, trademarks, service marks, or product names of
|
110 |
+
the Licensor, except as required for reasonable and customary use in describing the origin of the Work and
|
111 |
+
reproducing the content of the NOTICE file.
|
112 |
+
|
113 |
+
## 7. Disclaimer of Warranty.
|
114 |
+
|
115 |
+
Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor
|
116 |
+
provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
117 |
+
or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT,
|
118 |
+
MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the
|
119 |
+
appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of
|
120 |
+
permissions under this License.
|
121 |
+
|
122 |
+
## 8. Limitation of Liability.
|
123 |
+
|
124 |
+
In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless
|
125 |
+
required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any
|
126 |
+
Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential
|
127 |
+
damages of any character arising as a result of this License or out of the use or inability to use the Work
|
128 |
+
(including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or
|
129 |
+
any and all other commercial damages or losses), even if such Contributor has been advised of the possibility
|
130 |
+
of such damages.
|
131 |
+
|
132 |
+
## 9. Accepting Warranty or Additional Liability.
|
133 |
+
|
134 |
+
While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for,
|
135 |
+
acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this
|
136 |
+
License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole
|
137 |
+
responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold
|
138 |
+
each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason
|
139 |
+
of your accepting any such warranty or additional liability.
|
140 |
+
|
141 |
+
END OF TERMS AND CONDITIONS
|
vendor/aannnaa7/aws-sdk-php-minimized/NOTICE.md
ADDED
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# AWS SDK for PHP
|
2 |
+
|
3 |
+
<http://aws.amazon.com/php>
|
4 |
+
|
5 |
+
Copyright 2010-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
6 |
+
|
7 |
+
Licensed under the Apache License, Version 2.0 (the "License").
|
8 |
+
You may not use this file except in compliance with the License.
|
9 |
+
A copy of the License is located at
|
10 |
+
|
11 |
+
<http://aws.amazon.com/apache2.0>
|
12 |
+
|
13 |
+
or in the "license" file accompanying this file. This file is distributed
|
14 |
+
on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
|
15 |
+
express or implied. See the License for the specific language governing
|
16 |
+
permissions and limitations under the License.
|
17 |
+
|
18 |
+
# Guzzle
|
19 |
+
|
20 |
+
<https://github.com/guzzle/guzzle>
|
21 |
+
|
22 |
+
Copyright (c) 2014 Michael Dowling, https://github.com/mtdowling
|
23 |
+
|
24 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
25 |
+
of this software and associated documentation files (the "Software"), to deal
|
26 |
+
in the Software without restriction, including without limitation the rights
|
27 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
28 |
+
copies of the Software, and to permit persons to whom the Software is
|
29 |
+
furnished to do so, subject to the following conditions:
|
30 |
+
|
31 |
+
The above copyright notice and this permission notice shall be included in
|
32 |
+
all copies or substantial portions of the Software.
|
33 |
+
|
34 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
35 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
36 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
37 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
38 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
39 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
40 |
+
THE SOFTWARE.
|
41 |
+
|
42 |
+
# jmespath.php
|
43 |
+
|
44 |
+
<https://github.com/mtdowling/jmespath.php>
|
45 |
+
|
46 |
+
Copyright (c) 2014 Michael Dowling, https://github.com/mtdowling
|
47 |
+
|
48 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
49 |
+
of this software and associated documentation files (the "Software"), to deal
|
50 |
+
in the Software without restriction, including without limitation the rights
|
51 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
52 |
+
copies of the Software, and to permit persons to whom the Software is
|
53 |
+
furnished to do so, subject to the following conditions:
|
54 |
+
|
55 |
+
The above copyright notice and this permission notice shall be included in
|
56 |
+
all copies or substantial portions of the Software.
|
57 |
+
|
58 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
59 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
60 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
61 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
62 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
63 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
64 |
+
THE SOFTWARE.
|
vendor/aannnaa7/aws-sdk-php-minimized/README.md
ADDED
@@ -0,0 +1,176 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# AWS SDK for PHP - Version 3
|
2 |
+
|
3 |
+
[![@awsforphp on Twitter](http://img.shields.io/badge/twitter-%40awsforphp-blue.svg?style=flat)](https://twitter.com/awsforphp)
|
4 |
+
[![Total Downloads](https://img.shields.io/packagist/dt/aws/aws-sdk-php.svg?style=flat)](https://packagist.org/packages/aws/aws-sdk-php)
|
5 |
+
[![Build Status](https://img.shields.io/travis/aws/aws-sdk-php.svg?style=flat)](https://travis-ci.org/aws/aws-sdk-php)
|
6 |
+
[![Apache 2 License](https://img.shields.io/packagist/l/aws/aws-sdk-php.svg?style=flat)](http://aws.amazon.com/apache-2-0/)
|
7 |
+
[![Gitter](https://badges.gitter.im/aws/aws-sdk-php.svg)](https://gitter.im/aws/aws-sdk-php?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
|
8 |
+
[![codecov](https://codecov.io/gh/aws/aws-sdk-php/branch/master/graph/badge.svg)](https://codecov.io/gh/aws/aws-sdk-php)
|
9 |
+
|
10 |
+
The **AWS SDK for PHP** makes it easy for developers to access [Amazon Web
|
11 |
+
Services][aws] in their PHP code, and build robust applications and software
|
12 |
+
using services like Amazon S3, Amazon DynamoDB, Amazon Glacier, etc. You can
|
13 |
+
get started in minutes by [installing the SDK through Composer][docs-installation]
|
14 |
+
or by downloading a single zip or phar file from our [latest release][latest-release].
|
15 |
+
|
16 |
+
## Resources
|
17 |
+
|
18 |
+
* [User Guide][docs-guide] – For both getting started and in-depth SDK usage information
|
19 |
+
* [API Docs][docs-api] – For details about operations, parameters, and responses
|
20 |
+
* [Blog][sdk-blog] – Tips & tricks, articles, and announcements
|
21 |
+
* [Sample Project][sdk-sample] - A quick, sample project to help get you started
|
22 |
+
* [Forum][sdk-forum] – Ask questions, get help, and give feedback
|
23 |
+
* [Issues][sdk-issues] – Report issues, submit pull requests, and get involved
|
24 |
+
(see [Apache 2.0 License][sdk-license])
|
25 |
+
* [@awsforphp][sdk-twitter] – Follow us on Twitter
|
26 |
+
* For Version 2 of the SDK:
|
27 |
+
* [User Guide][docs-guide-v2]
|
28 |
+
* [API Docs][docs-api-v2]
|
29 |
+
|
30 |
+
## Getting Help
|
31 |
+
|
32 |
+
Please use these community resources for getting help. We use the GitHub issues for tracking bugs and feature requests and have limited bandwidth to address them.
|
33 |
+
|
34 |
+
* Ask a question on [StackOverflow](https://stackoverflow.com/) and tag it with [`aws-php-sdk`](http://stackoverflow.com/questions/tagged/aws-php-sdk)
|
35 |
+
* Come join the AWS SDK for PHP [gitter](https://gitter.im/aws/aws-sdk-php)
|
36 |
+
* Open a support ticket with [AWS Support](https://console.aws.amazon.com/support/home/)
|
37 |
+
* If it turns out that you may have found a bug, please [open an issue](https://github.com/aws/aws-sdk-php/issues/new)
|
38 |
+
|
39 |
+
## Opening Issues
|
40 |
+
|
41 |
+
If you encounter a bug with `aws-sdk-php` we would like to hear about it. Search the existing issues and try to make sure your problem doesn’t already exist before opening a new issue. It’s helpful if you include the version of `aws-sdk-php`, PHP version and OS you’re using. Please include a stack trace and reduced repro case when appropriate, too.
|
42 |
+
|
43 |
+
The GitHub issues are intended for bug reports and feature requests. For help and questions with using `aws-sdk-php` please make use of the resources listed in the Getting Help section. There are limited resources available for handling issues and by keeping the list of open issues lean we can respond in a timely manner.
|
44 |
+
|
45 |
+
## Features
|
46 |
+
|
47 |
+
* Provides easy-to-use HTTP clients for all supported AWS
|
48 |
+
[services][docs-services], [regions][docs-rande], and authentication
|
49 |
+
protocols.
|
50 |
+
* Is built on [Guzzle][guzzle-docs], and utilizes many of its features,
|
51 |
+
including persistent connections, asynchronous requests, middlewares, etc.
|
52 |
+
* Provides convenience features including easy result pagination via
|
53 |
+
[Paginators][docs-paginators], [Waiters][docs-waiters], and simple
|
54 |
+
[Result objects][docs-results].
|
55 |
+
* Provides a [multipart uploader tool][docs-s3-multipart] for Amazon S3 and
|
56 |
+
Amazon Glacier that can be paused and resumed.
|
57 |
+
* Provides an [Amazon S3 Stream Wrapper][docs-streamwrapper], so that you can
|
58 |
+
use PHP's native file handling functions to interact with your S3 buckets and
|
59 |
+
objects like a local filesystem.
|
60 |
+
* Provides the [Amazon DynamoDB Session Handler][docs-ddbsh] for easily scaling
|
61 |
+
sessions on a fast, NoSQL database.
|
62 |
+
* Automatically uses [IAM Instance Profile Credentials][aws-iam-credentials] on
|
63 |
+
configured Amazon EC2 instances.
|
64 |
+
|
65 |
+
## Getting Started
|
66 |
+
|
67 |
+
1. **Sign up for AWS** – Before you begin, you need to
|
68 |
+
sign up for an AWS account and retrieve your [AWS credentials][docs-signup].
|
69 |
+
1. **Minimum requirements** – To run the SDK, your system will need to meet the
|
70 |
+
[minimum requirements][docs-requirements], including having **PHP >= 5.5**
|
71 |
+
compiled with the cURL extension and cURL 7.16.2+ compiled with a TLS
|
72 |
+
backend (e.g., NSS or OpenSSL).
|
73 |
+
1. **Install the SDK** – Using [Composer] is the recommended way to install the
|
74 |
+
AWS SDK for PHP. The SDK is available via [Packagist] under the
|
75 |
+
[`aws/aws-sdk-php`][install-packagist] package. Please see the
|
76 |
+
[Installation section of the User Guide][docs-installation] for more
|
77 |
+
detailed information about installing the SDK through Composer and other
|
78 |
+
means.
|
79 |
+
1. **Using the SDK** – The best way to become familiar with how to use the SDK
|
80 |
+
is to read the [User Guide][docs-guide]. The
|
81 |
+
[Getting Started Guide][docs-quickstart] will help you become familiar with
|
82 |
+
the basic concepts.
|
83 |
+
|
84 |
+
## Quick Examples
|
85 |
+
|
86 |
+
### Create an Amazon S3 client
|
87 |
+
|
88 |
+
```php
|
89 |
+
<?php
|
90 |
+
// Require the Composer autoloader.
|
91 |
+
require 'vendor/autoload.php';
|
92 |
+
|
93 |
+
use Aws\S3\S3Client;
|
94 |
+
|
95 |
+
// Instantiate an Amazon S3 client.
|
96 |
+
$s3 = new S3Client([
|
97 |
+
'version' => 'latest',
|
98 |
+
'region' => 'us-west-2'
|
99 |
+
]);
|
100 |
+
```
|
101 |
+
|
102 |
+
### Upload a file to Amazon S3
|
103 |
+
|
104 |
+
```php
|
105 |
+
<?php
|
106 |
+
// Upload a publicly accessible file. The file size and type are determined by the SDK.
|
107 |
+
try {
|
108 |
+
$s3->putObject([
|
109 |
+
'Bucket' => 'my-bucket',
|
110 |
+
'Key' => 'my-object',
|
111 |
+
'Body' => fopen('/path/to/file', 'r'),
|
112 |
+
'ACL' => 'public-read',
|
113 |
+
]);
|
114 |
+
} catch (Aws\S3\Exception\S3Exception $e) {
|
115 |
+
echo "There was an error uploading the file.\n";
|
116 |
+
}
|
117 |
+
```
|
118 |
+
|
119 |
+
### Related AWS Projects
|
120 |
+
|
121 |
+
* [AWS Service Provider for Laravel][mod-laravel]
|
122 |
+
* [AWS SDK ZF2 Module][mod-zf2]
|
123 |
+
* [AWS Service Provider for Silex][mod-silex]
|
124 |
+
* [AWS SDK Bundle for Symfony][mod-symfony]
|
125 |
+
* [Amazon SNS Message Validator for PHP][sns-validator] - SNS validator without requiring SDK
|
126 |
+
* [Guzzle Version 6][guzzle-docs] – PHP HTTP client and framework
|
127 |
+
* Other [AWS SDKs & Tools][aws-tools] (e.g., js, cli, ruby, python, java, etc.)
|
128 |
+
|
129 |
+
[sdk-website]: http://aws.amazon.com/sdkforphp
|
130 |
+
[sdk-forum]: https://forums.aws.amazon.com/forum.jspa?forumID=80
|
131 |
+
[sdk-issues]: https://github.com/aws/aws-sdk-php/issues
|
132 |
+
[sdk-license]: http://aws.amazon.com/apache2.0/
|
133 |
+
[sdk-blog]: http://blogs.aws.amazon.com/php
|
134 |
+
[sdk-twitter]: https://twitter.com/awsforphp
|
135 |
+
[sdk-sample]: http://aws.amazon.com/developers/getting-started/php
|
136 |
+
|
137 |
+
[install-packagist]: https://packagist.org/packages/aws/aws-sdk-php
|
138 |
+
[latest-release]: https://github.com/aws/aws-sdk-php/releases
|
139 |
+
|
140 |
+
[docs-api]: http://docs.aws.amazon.com/aws-sdk-php/v3/api/index.html
|
141 |
+
[docs-guide]: http://docs.aws.amazon.com/aws-sdk-php/v3/guide/index.html
|
142 |
+
[docs-api-v2]: http://docs.aws.amazon.com/aws-sdk-php/v2/api/index.html
|
143 |
+
[docs-guide-v2]: http://docs.aws.amazon.com/aws-sdk-php/v2/guide/index.html
|
144 |
+
[docs-contribution]: https://github.com/aws/aws-sdk-php/blob/master/CONTRIBUTING.md
|
145 |
+
[docs-migration]: http://docs.aws.amazon.com/aws-sdk-php/v3/guide/guide/migration.html
|
146 |
+
[docs-signup]: http://aws.amazon.com/developers/access-keys/
|
147 |
+
[docs-requirements]: http://docs.aws.amazon.com/aws-sdk-php/v3/guide/getting-started/requirements.html
|
148 |
+
[docs-installation]: http://docs.aws.amazon.com/aws-sdk-php/v3/guide/getting-started/installation.html
|
149 |
+
[docs-quickstart]: http://docs.aws.amazon.com/aws-sdk-php/v3/guide/#getting-started
|
150 |
+
[docs-paginators]: http://docs.aws.amazon.com/aws-sdk-php/v3/guide/guide/paginators.html
|
151 |
+
[docs-waiters]: http://docs.aws.amazon.com/aws-sdk-php/v3/guide/guide/waiters.html
|
152 |
+
[docs-results]: http://docs.aws.amazon.com/aws-sdk-php/v3/guide/getting-started/basic-usage.html#result-objects
|
153 |
+
[docs-exceptions]: http://docs.aws.amazon.com/aws-sdk-php/v3/guide/quick-start.html#error-handling
|
154 |
+
[docs-wire-logging]: http://docs.aws.amazon.com/aws-sdk-php/v3/guide/faq.html#how-can-i-see-what-data-is-sent-over-the-wire
|
155 |
+
[docs-ddbsh]: http://docs.aws.amazon.com/aws-sdk-php/v3/guide/service/dynamodb-session-handler.html
|
156 |
+
[docs-rande]: http://docs.aws.amazon.com/general/latest/gr/rande.html
|
157 |
+
[docs-streamwrapper]: http://docs.aws.amazon.com/aws-sdk-php/v3/guide/service/s3-stream-wrapper.html
|
158 |
+
[docs-s3-transfer]: http://docs.aws.amazon.com/aws-sdk-php/v3/guide/service/s3-transfer.html
|
159 |
+
[docs-s3-multipart]: http://docs.aws.amazon.com/aws-sdk-php/v3/guide/service/s3-multipart-upload.html
|
160 |
+
|
161 |
+
[aws]: http://aws.amazon.com
|
162 |
+
[aws-iam-credentials]: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UsingIAM.html#UsingIAMrolesWithAmazonEC2Instances
|
163 |
+
[aws-tools]: http://aws.amazon.com/tools
|
164 |
+
[guzzle-docs]: http://guzzlephp.org
|
165 |
+
[composer]: http://getcomposer.org
|
166 |
+
[packagist]: http://packagist.org
|
167 |
+
[psr-7]: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-7-http-message.md
|
168 |
+
[psr-4]: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader.md
|
169 |
+
[psr-1]: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-1-basic-coding-standard.md
|
170 |
+
[psr-2]: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md
|
171 |
+
|
172 |
+
[mod-laravel]: https://github.com/aws/aws-sdk-php-laravel
|
173 |
+
[mod-zf2]: https://github.com/aws/aws-sdk-php-zf2
|
174 |
+
[mod-silex]: https://github.com/aws/aws-sdk-php-silex
|
175 |
+
[mod-symfony]: https://github.com/aws/aws-sdk-php-symfony
|
176 |
+
[sns-validator]: https://github.com/aws/aws-php-sns-message-validator
|
vendor/aannnaa7/aws-sdk-php-minimized/composer.json
ADDED
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"name": "aannnaa7/aws-sdk-php-minimized",
|
3 |
+
"homepage": "http://aws.amazon.com/sdkforphp",
|
4 |
+
"description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project private use only",
|
5 |
+
"keywords": ["aws","amazon","sdk","s3","ec2","dynamodb","cloud","glacier"],
|
6 |
+
"type": "library",
|
7 |
+
"license": "Apache-2.0",
|
8 |
+
"support": {
|
9 |
+
"forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
|
10 |
+
"issues": "https://github.com/aws/aws-sdk-php/issues"
|
11 |
+
},
|
12 |
+
"require": {
|
13 |
+
"php": ">=5.5",
|
14 |
+
"guzzlehttp/guzzle": "~5.3|~6.0.1|~6.1",
|
15 |
+
"guzzlehttp/psr7": "~1.0",
|
16 |
+
"guzzlehttp/promises": "~1.0",
|
17 |
+
"mtdowling/jmespath.php": "~2.2"
|
18 |
+
},
|
19 |
+
"require-dev": {
|
20 |
+
"ext-openssl": "*",
|
21 |
+
"ext-pcre": "*",
|
22 |
+
"ext-spl": "*",
|
23 |
+
"ext-json": "*",
|
24 |
+
"ext-dom": "*",
|
25 |
+
"ext-simplexml": "*",
|
26 |
+
"phpunit/phpunit": "~4.0",
|
27 |
+
"behat/behat": "~3.0",
|
28 |
+
"doctrine/cache": "~1.4",
|
29 |
+
"aws/aws-php-sns-message-validator": "~1.0",
|
30 |
+
"nette/neon": "^2.3",
|
31 |
+
"andrewsville/php-token-reflection": "^1.4"
|
32 |
+
},
|
33 |
+
"suggest": {
|
34 |
+
"ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages",
|
35 |
+
"ext-curl": "To send requests using cURL",
|
36 |
+
"doctrine/cache": "To use the DoctrineCacheAdapter"
|
37 |
+
},
|
38 |
+
"autoload": {
|
39 |
+
"psr-4": {
|
40 |
+
"Aws\\": "src/"
|
41 |
+
},
|
42 |
+
"files": ["src/functions.php"]
|
43 |
+
},
|
44 |
+
"autoload-dev": {
|
45 |
+
"psr-4": {
|
46 |
+
"Aws\\Test\\": "tests/"
|
47 |
+
},
|
48 |
+
"classmap": ["build/"]
|
49 |
+
},
|
50 |
+
"extra": {
|
51 |
+
"branch-alias": {
|
52 |
+
"dev-master": "3.0-dev"
|
53 |
+
}
|
54 |
+
},
|
55 |
+
"scripts": {
|
56 |
+
"post-autoload-dump": [
|
57 |
+
"make compile-json"
|
58 |
+
]
|
59 |
+
}
|
60 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/AbstractModel.php
ADDED
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Base class that is used by most API shapes
|
6 |
+
*/
|
7 |
+
abstract class AbstractModel implements \ArrayAccess
|
8 |
+
{
|
9 |
+
/** @var array */
|
10 |
+
protected $definition;
|
11 |
+
|
12 |
+
/** @var ShapeMap */
|
13 |
+
protected $shapeMap;
|
14 |
+
|
15 |
+
/**
|
16 |
+
* @param array $definition Service description
|
17 |
+
* @param ShapeMap $shapeMap Shapemap used for creating shapes
|
18 |
+
*/
|
19 |
+
public function __construct(array $definition, ShapeMap $shapeMap)
|
20 |
+
{
|
21 |
+
$this->definition = $definition;
|
22 |
+
$this->shapeMap = $shapeMap;
|
23 |
+
}
|
24 |
+
|
25 |
+
public function toArray()
|
26 |
+
{
|
27 |
+
return $this->definition;
|
28 |
+
}
|
29 |
+
|
30 |
+
public function offsetGet($offset)
|
31 |
+
{
|
32 |
+
return isset($this->definition[$offset])
|
33 |
+
? $this->definition[$offset] : null;
|
34 |
+
}
|
35 |
+
|
36 |
+
public function offsetSet($offset, $value)
|
37 |
+
{
|
38 |
+
$this->definition[$offset] = $value;
|
39 |
+
}
|
40 |
+
|
41 |
+
public function offsetExists($offset)
|
42 |
+
{
|
43 |
+
return isset($this->definition[$offset]);
|
44 |
+
}
|
45 |
+
|
46 |
+
public function offsetUnset($offset)
|
47 |
+
{
|
48 |
+
unset($this->definition[$offset]);
|
49 |
+
}
|
50 |
+
|
51 |
+
protected function shapeAt($key)
|
52 |
+
{
|
53 |
+
if (!isset($this->definition[$key])) {
|
54 |
+
throw new \InvalidArgumentException('Expected shape definition at '
|
55 |
+
. $key);
|
56 |
+
}
|
57 |
+
|
58 |
+
return $this->shapeFor($this->definition[$key]);
|
59 |
+
}
|
60 |
+
|
61 |
+
protected function shapeFor(array $definition)
|
62 |
+
{
|
63 |
+
return isset($definition['shape'])
|
64 |
+
? $this->shapeMap->resolve($definition)
|
65 |
+
: Shape::create($definition, $this->shapeMap);
|
66 |
+
}
|
67 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/ApiProvider.php
ADDED
@@ -0,0 +1,241 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api;
|
3 |
+
|
4 |
+
use Aws\Exception\UnresolvedApiException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* API providers.
|
8 |
+
*
|
9 |
+
* An API provider is a function that accepts a type, service, and version and
|
10 |
+
* returns an array of API data on success or NULL if no API data can be created
|
11 |
+
* for the provided arguments.
|
12 |
+
*
|
13 |
+
* You can wrap your calls to an API provider with the
|
14 |
+
* {@see ApiProvider::resolve} method to ensure that API data is created. If the
|
15 |
+
* API data is not created, then the resolve() method will throw a
|
16 |
+
* {@see Aws\Exception\UnresolvedApiException}.
|
17 |
+
*
|
18 |
+
* use Aws\Api\ApiProvider;
|
19 |
+
* $provider = ApiProvider::defaultProvider();
|
20 |
+
* // Returns an array or NULL.
|
21 |
+
* $data = $provider('api', 's3', '2006-03-01');
|
22 |
+
* // Returns an array or throws.
|
23 |
+
* $data = ApiProvider::resolve($provider, 'api', 'elasticfood', '2020-01-01');
|
24 |
+
*
|
25 |
+
* You can compose multiple providers into a single provider using
|
26 |
+
* {@see Aws\or_chain}. This method accepts providers as arguments and
|
27 |
+
* returns a new function that will invoke each provider until a non-null value
|
28 |
+
* is returned.
|
29 |
+
*
|
30 |
+
* $a = ApiProvider::filesystem(sys_get_temp_dir() . '/aws-beta-models');
|
31 |
+
* $b = ApiProvider::manifest();
|
32 |
+
*
|
33 |
+
* $c = \Aws\or_chain($a, $b);
|
34 |
+
* $data = $c('api', 'betaservice', '2015-08-08'); // $a handles this.
|
35 |
+
* $data = $c('api', 's3', '2006-03-01'); // $b handles this.
|
36 |
+
* $data = $c('api', 'invalid', '2014-12-15'); // Neither handles this.
|
37 |
+
*/
|
38 |
+
class ApiProvider
|
39 |
+
{
|
40 |
+
/** @var array A map of public API type names to their file suffix. */
|
41 |
+
private static $typeMap = [
|
42 |
+
'api' => 'api-2',
|
43 |
+
'paginator' => 'paginators-1',
|
44 |
+
'waiter' => 'waiters-2',
|
45 |
+
'docs' => 'docs-2',
|
46 |
+
];
|
47 |
+
|
48 |
+
/** @var array API manifest */
|
49 |
+
private $manifest;
|
50 |
+
|
51 |
+
/** @var string The directory containing service models. */
|
52 |
+
private $modelsDir;
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Resolves an API provider and ensures a non-null return value.
|
56 |
+
*
|
57 |
+
* @param callable $provider Provider function to invoke.
|
58 |
+
* @param string $type Type of data ('api', 'waiter', 'paginator').
|
59 |
+
* @param string $service Service name.
|
60 |
+
* @param string $version API version.
|
61 |
+
*
|
62 |
+
* @return array
|
63 |
+
* @throws UnresolvedApiException
|
64 |
+
*/
|
65 |
+
public static function resolve(callable $provider, $type, $service, $version)
|
66 |
+
{
|
67 |
+
// Execute the provider and return the result, if there is one.
|
68 |
+
$result = $provider($type, $service, $version);
|
69 |
+
if (is_array($result)) {
|
70 |
+
return $result;
|
71 |
+
}
|
72 |
+
|
73 |
+
// Throw an exception with a message depending on the inputs.
|
74 |
+
if (!isset(self::$typeMap[$type])) {
|
75 |
+
$msg = "The type must be one of: " . implode(', ', self::$typeMap);
|
76 |
+
} elseif ($service) {
|
77 |
+
$msg = "The {$service} service does not have version: {$version}.";
|
78 |
+
} else {
|
79 |
+
$msg = "You must specify a service name to retrieve its API data.";
|
80 |
+
}
|
81 |
+
|
82 |
+
throw new UnresolvedApiException($msg);
|
83 |
+
}
|
84 |
+
|
85 |
+
/**
|
86 |
+
* Default SDK API provider.
|
87 |
+
*
|
88 |
+
* This provider loads pre-built manifest data from the `data` directory.
|
89 |
+
*
|
90 |
+
* @return self
|
91 |
+
*/
|
92 |
+
public static function defaultProvider()
|
93 |
+
{
|
94 |
+
return new self(__DIR__ . '/../data', \Aws\manifest());
|
95 |
+
}
|
96 |
+
|
97 |
+
/**
|
98 |
+
* Loads API data after resolving the version to the latest, compatible,
|
99 |
+
* available version based on the provided manifest data.
|
100 |
+
*
|
101 |
+
* Manifest data is essentially an associative array of service names to
|
102 |
+
* associative arrays of API version aliases.
|
103 |
+
*
|
104 |
+
* [
|
105 |
+
* ...
|
106 |
+
* 'ec2' => [
|
107 |
+
* 'latest' => '2014-10-01',
|
108 |
+
* '2014-10-01' => '2014-10-01',
|
109 |
+
* '2014-09-01' => '2014-10-01',
|
110 |
+
* '2014-06-15' => '2014-10-01',
|
111 |
+
* ...
|
112 |
+
* ],
|
113 |
+
* 'ecs' => [...],
|
114 |
+
* 'elasticache' => [...],
|
115 |
+
* ...
|
116 |
+
* ]
|
117 |
+
*
|
118 |
+
* @param string $dir Directory containing service models.
|
119 |
+
* @param array $manifest The API version manifest data.
|
120 |
+
*
|
121 |
+
* @return self
|
122 |
+
*/
|
123 |
+
public static function manifest($dir, array $manifest)
|
124 |
+
{
|
125 |
+
return new self($dir, $manifest);
|
126 |
+
}
|
127 |
+
|
128 |
+
/**
|
129 |
+
* Loads API data from the specified directory.
|
130 |
+
*
|
131 |
+
* If "latest" is specified as the version, this provider must glob the
|
132 |
+
* directory to find which is the latest available version.
|
133 |
+
*
|
134 |
+
* @param string $dir Directory containing service models.
|
135 |
+
*
|
136 |
+
* @return self
|
137 |
+
* @throws \InvalidArgumentException if the provided `$dir` is invalid.
|
138 |
+
*/
|
139 |
+
public static function filesystem($dir)
|
140 |
+
{
|
141 |
+
return new self($dir);
|
142 |
+
}
|
143 |
+
|
144 |
+
/**
|
145 |
+
* Retrieves a list of valid versions for the specified service.
|
146 |
+
*
|
147 |
+
* @param string $service Service name
|
148 |
+
*
|
149 |
+
* @return array
|
150 |
+
*/
|
151 |
+
public function getVersions($service)
|
152 |
+
{
|
153 |
+
if (!isset($this->manifest)) {
|
154 |
+
$this->buildVersionsList($service);
|
155 |
+
}
|
156 |
+
|
157 |
+
if (!isset($this->manifest[$service]['versions'])) {
|
158 |
+
return [];
|
159 |
+
}
|
160 |
+
|
161 |
+
return array_values(array_unique($this->manifest[$service]['versions']));
|
162 |
+
}
|
163 |
+
|
164 |
+
/**
|
165 |
+
* Execute the the provider.
|
166 |
+
*
|
167 |
+
* @param string $type Type of data ('api', 'waiter', 'paginator').
|
168 |
+
* @param string $service Service name.
|
169 |
+
* @param string $version API version.
|
170 |
+
*
|
171 |
+
* @return array|null
|
172 |
+
*/
|
173 |
+
public function __invoke($type, $service, $version)
|
174 |
+
{
|
175 |
+
// Resolve the type or return null.
|
176 |
+
if (isset(self::$typeMap[$type])) {
|
177 |
+
$type = self::$typeMap[$type];
|
178 |
+
} else {
|
179 |
+
return null;
|
180 |
+
}
|
181 |
+
|
182 |
+
// Resolve the version or return null.
|
183 |
+
if (!isset($this->manifest)) {
|
184 |
+
$this->buildVersionsList($service);
|
185 |
+
}
|
186 |
+
|
187 |
+
if (!isset($this->manifest[$service]['versions'][$version])) {
|
188 |
+
return null;
|
189 |
+
}
|
190 |
+
|
191 |
+
$version = $this->manifest[$service]['versions'][$version];
|
192 |
+
$path = "{$this->modelsDir}/{$service}/{$version}/{$type}.json";
|
193 |
+
|
194 |
+
try {
|
195 |
+
return \Aws\load_compiled_json($path);
|
196 |
+
} catch (\InvalidArgumentException $e) {
|
197 |
+
return null;
|
198 |
+
}
|
199 |
+
}
|
200 |
+
|
201 |
+
/**
|
202 |
+
* @param string $modelsDir Directory containing service models.
|
203 |
+
* @param array $manifest The API version manifest data.
|
204 |
+
*/
|
205 |
+
private function __construct($modelsDir, array $manifest = null)
|
206 |
+
{
|
207 |
+
$this->manifest = $manifest;
|
208 |
+
$this->modelsDir = rtrim($modelsDir, '/');
|
209 |
+
if (!is_dir($this->modelsDir)) {
|
210 |
+
throw new \InvalidArgumentException(
|
211 |
+
"The specified models directory, {$modelsDir}, was not found."
|
212 |
+
);
|
213 |
+
}
|
214 |
+
}
|
215 |
+
|
216 |
+
/**
|
217 |
+
* Build the versions list for the specified service by globbing the dir.
|
218 |
+
*/
|
219 |
+
private function buildVersionsList($service)
|
220 |
+
{
|
221 |
+
$dir = "{$this->modelsDir}/{$service}/";
|
222 |
+
|
223 |
+
if (!is_dir($dir)) {
|
224 |
+
return;
|
225 |
+
}
|
226 |
+
|
227 |
+
// Get versions, remove . and .., and sort in descending order.
|
228 |
+
$results = array_diff(scandir($dir, SCANDIR_SORT_DESCENDING), ['..', '.']);
|
229 |
+
|
230 |
+
if (!$results) {
|
231 |
+
$this->manifest[$service] = ['versions' => []];
|
232 |
+
} else {
|
233 |
+
$this->manifest[$service] = [
|
234 |
+
'versions' => [
|
235 |
+
'latest' => $results[0]
|
236 |
+
]
|
237 |
+
];
|
238 |
+
$this->manifest[$service]['versions'] += array_combine($results, $results);
|
239 |
+
}
|
240 |
+
}
|
241 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/DateTimeResult.php
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* DateTime overrides that make DateTime work more seamlessly as a string,
|
6 |
+
* with JSON documents, and with JMESPath.
|
7 |
+
*/
|
8 |
+
class DateTimeResult extends \DateTime implements \JsonSerializable
|
9 |
+
{
|
10 |
+
/**
|
11 |
+
* Create a new DateTimeResult from a unix timestamp.
|
12 |
+
*
|
13 |
+
* @param $unixTimestamp
|
14 |
+
*
|
15 |
+
* @return DateTimeResult
|
16 |
+
*/
|
17 |
+
public static function fromEpoch($unixTimestamp)
|
18 |
+
{
|
19 |
+
return new self(gmdate('c', $unixTimestamp));
|
20 |
+
}
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Serialize the DateTimeResult as an ISO 8601 date string.
|
24 |
+
*
|
25 |
+
* @return string
|
26 |
+
*/
|
27 |
+
public function __toString()
|
28 |
+
{
|
29 |
+
return $this->format('c');
|
30 |
+
}
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Serialize the date as an ISO 8601 date when serializing as JSON.
|
34 |
+
*
|
35 |
+
* @return mixed|string
|
36 |
+
*/
|
37 |
+
public function jsonSerialize()
|
38 |
+
{
|
39 |
+
return (string) $this;
|
40 |
+
}
|
41 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/DocModel.php
ADDED
@@ -0,0 +1,128 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Encapsulates the documentation strings for a given service-version and
|
6 |
+
* provides methods for extracting the desired parts related to a service,
|
7 |
+
* operation, error, or shape (i.e., parameter).
|
8 |
+
*/
|
9 |
+
class DocModel
|
10 |
+
{
|
11 |
+
/** @var array */
|
12 |
+
private $docs;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* @param array $docs
|
16 |
+
*
|
17 |
+
* @throws \RuntimeException
|
18 |
+
*/
|
19 |
+
public function __construct(array $docs)
|
20 |
+
{
|
21 |
+
if (!extension_loaded('tidy')) {
|
22 |
+
throw new \RuntimeException('The "tidy" PHP extension is required.');
|
23 |
+
}
|
24 |
+
|
25 |
+
$this->docs = $docs;
|
26 |
+
}
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Convert the doc model to an array.
|
30 |
+
*
|
31 |
+
* @return array
|
32 |
+
*/
|
33 |
+
public function toArray()
|
34 |
+
{
|
35 |
+
return $this->docs;
|
36 |
+
}
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Retrieves documentation about the service.
|
40 |
+
*
|
41 |
+
* @return null|string
|
42 |
+
*/
|
43 |
+
public function getServiceDocs()
|
44 |
+
{
|
45 |
+
return isset($this->docs['service']) ? $this->docs['service'] : null;
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Retrieves documentation about an operation.
|
50 |
+
*
|
51 |
+
* @param string $operation Name of the operation
|
52 |
+
*
|
53 |
+
* @return null|string
|
54 |
+
*/
|
55 |
+
public function getOperationDocs($operation)
|
56 |
+
{
|
57 |
+
return isset($this->docs['operations'][$operation])
|
58 |
+
? $this->docs['operations'][$operation]
|
59 |
+
: null;
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Retrieves documentation about an error.
|
64 |
+
*
|
65 |
+
* @param string $error Name of the error
|
66 |
+
*
|
67 |
+
* @return null|string
|
68 |
+
*/
|
69 |
+
public function getErrorDocs($error)
|
70 |
+
{
|
71 |
+
return isset($this->docs['shapes'][$error]['base'])
|
72 |
+
? $this->docs['shapes'][$error]['base']
|
73 |
+
: null;
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Retrieves documentation about a shape, specific to the context.
|
78 |
+
*
|
79 |
+
* @param string $shapeName Name of the shape.
|
80 |
+
* @param string $parentName Name of the parent/context shape.
|
81 |
+
* @param string $ref Name used by the context to reference the shape.
|
82 |
+
*
|
83 |
+
* @return null|string
|
84 |
+
*/
|
85 |
+
public function getShapeDocs($shapeName, $parentName, $ref)
|
86 |
+
{
|
87 |
+
if (!isset($this->docs['shapes'][$shapeName])) {
|
88 |
+
return '';
|
89 |
+
}
|
90 |
+
|
91 |
+
$result = '';
|
92 |
+
$d = $this->docs['shapes'][$shapeName];
|
93 |
+
if (isset($d['refs']["{$parentName}\$${ref}"])) {
|
94 |
+
$result = $d['refs']["{$parentName}\$${ref}"];
|
95 |
+
} elseif (isset($d['base'])) {
|
96 |
+
$result = $d['base'];
|
97 |
+
}
|
98 |
+
|
99 |
+
if (isset($d['append'])) {
|
100 |
+
$result .= $d['append'];
|
101 |
+
}
|
102 |
+
|
103 |
+
return $this->clean($result);
|
104 |
+
}
|
105 |
+
|
106 |
+
private function clean($content)
|
107 |
+
{
|
108 |
+
if (!$content) {
|
109 |
+
return '';
|
110 |
+
}
|
111 |
+
|
112 |
+
$tidy = new \Tidy();
|
113 |
+
$tidy->parseString($content, [
|
114 |
+
'indent' => true,
|
115 |
+
'doctype' => 'omit',
|
116 |
+
'output-html' => true,
|
117 |
+
'show-body-only' => true,
|
118 |
+
'drop-empty-paras' => true,
|
119 |
+
'drop-font-tags' => true,
|
120 |
+
'drop-proprietary-attributes' => true,
|
121 |
+
'hide-comments' => true,
|
122 |
+
'logical-emphasis' => true
|
123 |
+
]);
|
124 |
+
$tidy->cleanRepair();
|
125 |
+
|
126 |
+
return (string) $content;
|
127 |
+
}
|
128 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/ErrorParser/JsonParserTrait.php
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api\ErrorParser;
|
3 |
+
|
4 |
+
use Psr\Http\Message\ResponseInterface;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Provides basic JSON error parsing functionality.
|
8 |
+
*/
|
9 |
+
trait JsonParserTrait
|
10 |
+
{
|
11 |
+
private function genericHandler(ResponseInterface $response)
|
12 |
+
{
|
13 |
+
$code = (string) $response->getStatusCode();
|
14 |
+
|
15 |
+
return [
|
16 |
+
'request_id' => (string) $response->getHeaderLine('x-amzn-requestid'),
|
17 |
+
'code' => null,
|
18 |
+
'message' => null,
|
19 |
+
'type' => $code[0] == '4' ? 'client' : 'server',
|
20 |
+
'parsed' => json_decode($response->getBody(), true)
|
21 |
+
];
|
22 |
+
}
|
23 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/ErrorParser/JsonRpcErrorParser.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api\ErrorParser;
|
3 |
+
|
4 |
+
use Psr\Http\Message\ResponseInterface;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Parsers JSON-RPC errors.
|
8 |
+
*/
|
9 |
+
class JsonRpcErrorParser
|
10 |
+
{
|
11 |
+
use JsonParserTrait;
|
12 |
+
|
13 |
+
public function __invoke(ResponseInterface $response)
|
14 |
+
{
|
15 |
+
$data = $this->genericHandler($response);
|
16 |
+
// Make the casing consistent across services.
|
17 |
+
if ($data['parsed']) {
|
18 |
+
$data['parsed'] = array_change_key_case($data['parsed']);
|
19 |
+
}
|
20 |
+
|
21 |
+
if (isset($data['parsed']['__type'])) {
|
22 |
+
$parts = explode('#', $data['parsed']['__type']);
|
23 |
+
$data['code'] = isset($parts[1]) ? $parts[1] : $parts[0];
|
24 |
+
$data['message'] = isset($data['parsed']['message'])
|
25 |
+
? $data['parsed']['message']
|
26 |
+
: null;
|
27 |
+
}
|
28 |
+
|
29 |
+
return $data;
|
30 |
+
}
|
31 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/ErrorParser/RestJsonErrorParser.php
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api\ErrorParser;
|
3 |
+
|
4 |
+
use Psr\Http\Message\ResponseInterface;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Parses JSON-REST errors.
|
8 |
+
*/
|
9 |
+
class RestJsonErrorParser
|
10 |
+
{
|
11 |
+
use JsonParserTrait;
|
12 |
+
|
13 |
+
public function __invoke(ResponseInterface $response)
|
14 |
+
{
|
15 |
+
$data = $this->genericHandler($response);
|
16 |
+
|
17 |
+
// Merge in error data from the JSON body
|
18 |
+
if ($json = $data['parsed']) {
|
19 |
+
$data = array_replace($data, $json);
|
20 |
+
}
|
21 |
+
|
22 |
+
// Correct error type from services like Amazon Glacier
|
23 |
+
if (!empty($data['type'])) {
|
24 |
+
$data['type'] = strtolower($data['type']);
|
25 |
+
}
|
26 |
+
|
27 |
+
// Retrieve the error code from services like Amazon Elastic Transcoder
|
28 |
+
if ($code = $response->getHeaderLine('x-amzn-errortype')) {
|
29 |
+
$colon = strpos($code, ':');
|
30 |
+
$data['code'] = $colon ? substr($code, 0, $colon) : $code;
|
31 |
+
}
|
32 |
+
|
33 |
+
return $data;
|
34 |
+
}
|
35 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/ErrorParser/XmlErrorParser.php
ADDED
@@ -0,0 +1,79 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api\ErrorParser;
|
3 |
+
|
4 |
+
use Psr\Http\Message\ResponseInterface;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Parses XML errors.
|
8 |
+
*/
|
9 |
+
class XmlErrorParser
|
10 |
+
{
|
11 |
+
public function __invoke(ResponseInterface $response)
|
12 |
+
{
|
13 |
+
$code = (string) $response->getStatusCode();
|
14 |
+
|
15 |
+
$data = [
|
16 |
+
'type' => $code[0] == '4' ? 'client' : 'server',
|
17 |
+
'request_id' => null,
|
18 |
+
'code' => null,
|
19 |
+
'message' => null,
|
20 |
+
'parsed' => null
|
21 |
+
];
|
22 |
+
|
23 |
+
$body = $response->getBody();
|
24 |
+
if ($body->getSize() > 0) {
|
25 |
+
$this->parseBody(new \SimpleXMLElement($body), $data);
|
26 |
+
} else {
|
27 |
+
$this->parseHeaders($response, $data);
|
28 |
+
}
|
29 |
+
|
30 |
+
return $data;
|
31 |
+
}
|
32 |
+
|
33 |
+
private function parseHeaders(ResponseInterface $response, array &$data)
|
34 |
+
{
|
35 |
+
if ($response->getStatusCode() == '404') {
|
36 |
+
$data['code'] = 'NotFound';
|
37 |
+
}
|
38 |
+
|
39 |
+
$data['message'] = $response->getStatusCode() . ' '
|
40 |
+
. $response->getReasonPhrase();
|
41 |
+
|
42 |
+
if ($requestId = $response->getHeaderLine('x-amz-request-id')) {
|
43 |
+
$data['request_id'] = $requestId;
|
44 |
+
$data['message'] .= " (Request-ID: $requestId)";
|
45 |
+
}
|
46 |
+
}
|
47 |
+
|
48 |
+
private function parseBody(\SimpleXMLElement $body, array &$data)
|
49 |
+
{
|
50 |
+
$data['parsed'] = $body;
|
51 |
+
|
52 |
+
$namespaces = $body->getDocNamespaces();
|
53 |
+
if (!isset($namespaces[''])) {
|
54 |
+
$prefix = '';
|
55 |
+
} else {
|
56 |
+
// Account for the default namespace being defined and PHP not
|
57 |
+
// being able to handle it :(.
|
58 |
+
$body->registerXPathNamespace('ns', $namespaces['']);
|
59 |
+
$prefix = 'ns:';
|
60 |
+
}
|
61 |
+
|
62 |
+
if ($tempXml = $body->xpath("//{$prefix}Code[1]")) {
|
63 |
+
$data['code'] = (string) $tempXml[0];
|
64 |
+
}
|
65 |
+
|
66 |
+
if ($tempXml = $body->xpath("//{$prefix}Message[1]")) {
|
67 |
+
$data['message'] = (string) $tempXml[0];
|
68 |
+
}
|
69 |
+
|
70 |
+
$tempXml = $body->xpath("//{$prefix}RequestId[1]");
|
71 |
+
if (empty($tempXml)) {
|
72 |
+
$tempXml = $body->xpath("//{$prefix}RequestID[1]");
|
73 |
+
}
|
74 |
+
|
75 |
+
if (isset($tempXml[0])) {
|
76 |
+
$data['request_id'] = (string) $tempXml[0];
|
77 |
+
}
|
78 |
+
}
|
79 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/ListShape.php
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Represents a list shape.
|
6 |
+
*/
|
7 |
+
class ListShape extends Shape
|
8 |
+
{
|
9 |
+
private $member;
|
10 |
+
|
11 |
+
public function __construct(array $definition, ShapeMap $shapeMap)
|
12 |
+
{
|
13 |
+
$definition['type'] = 'list';
|
14 |
+
parent::__construct($definition, $shapeMap);
|
15 |
+
}
|
16 |
+
|
17 |
+
/**
|
18 |
+
* @return Shape
|
19 |
+
* @throws \RuntimeException if no member is specified
|
20 |
+
*/
|
21 |
+
public function getMember()
|
22 |
+
{
|
23 |
+
if (!$this->member) {
|
24 |
+
if (!isset($this->definition['member'])) {
|
25 |
+
throw new \RuntimeException('No member attribute specified');
|
26 |
+
}
|
27 |
+
$this->member = Shape::create(
|
28 |
+
$this->definition['member'],
|
29 |
+
$this->shapeMap
|
30 |
+
);
|
31 |
+
}
|
32 |
+
|
33 |
+
return $this->member;
|
34 |
+
}
|
35 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/MapShape.php
ADDED
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Represents a map shape.
|
6 |
+
*/
|
7 |
+
class MapShape extends Shape
|
8 |
+
{
|
9 |
+
/** @var Shape */
|
10 |
+
private $value;
|
11 |
+
|
12 |
+
/** @var Shape */
|
13 |
+
private $key;
|
14 |
+
|
15 |
+
public function __construct(array $definition, ShapeMap $shapeMap)
|
16 |
+
{
|
17 |
+
$definition['type'] = 'map';
|
18 |
+
parent::__construct($definition, $shapeMap);
|
19 |
+
}
|
20 |
+
|
21 |
+
/**
|
22 |
+
* @return Shape
|
23 |
+
* @throws \RuntimeException if no value is specified
|
24 |
+
*/
|
25 |
+
public function getValue()
|
26 |
+
{
|
27 |
+
if (!$this->value) {
|
28 |
+
if (!isset($this->definition['value'])) {
|
29 |
+
throw new \RuntimeException('No value specified');
|
30 |
+
}
|
31 |
+
|
32 |
+
$this->value = Shape::create(
|
33 |
+
$this->definition['value'],
|
34 |
+
$this->shapeMap
|
35 |
+
);
|
36 |
+
}
|
37 |
+
|
38 |
+
return $this->value;
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* @return Shape
|
43 |
+
*/
|
44 |
+
public function getKey()
|
45 |
+
{
|
46 |
+
if (!$this->key) {
|
47 |
+
$this->key = isset($this->definition['key'])
|
48 |
+
? Shape::create($this->definition['key'], $this->shapeMap)
|
49 |
+
: new Shape(['type' => 'string'], $this->shapeMap);
|
50 |
+
}
|
51 |
+
|
52 |
+
return $this->key;
|
53 |
+
}
|
54 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Operation.php
ADDED
@@ -0,0 +1,97 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Represents an API operation.
|
6 |
+
*/
|
7 |
+
class Operation extends AbstractModel
|
8 |
+
{
|
9 |
+
private $input;
|
10 |
+
private $output;
|
11 |
+
private $errors;
|
12 |
+
|
13 |
+
public function __construct(array $definition, ShapeMap $shapeMap)
|
14 |
+
{
|
15 |
+
$definition['type'] = 'structure';
|
16 |
+
|
17 |
+
if (!isset($definition['http']['method'])) {
|
18 |
+
$definition['http']['method'] = 'POST';
|
19 |
+
}
|
20 |
+
|
21 |
+
if (!isset($definition['http']['requestUri'])) {
|
22 |
+
$definition['http']['requestUri'] = '/';
|
23 |
+
}
|
24 |
+
|
25 |
+
parent::__construct($definition, $shapeMap);
|
26 |
+
}
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Returns an associative array of the HTTP attribute of the operation:
|
30 |
+
*
|
31 |
+
* - method: HTTP method of the operation
|
32 |
+
* - requestUri: URI of the request (can include URI template placeholders)
|
33 |
+
*
|
34 |
+
* @return array
|
35 |
+
*/
|
36 |
+
public function getHttp()
|
37 |
+
{
|
38 |
+
return $this->definition['http'];
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Get the input shape of the operation.
|
43 |
+
*
|
44 |
+
* @return StructureShape
|
45 |
+
*/
|
46 |
+
public function getInput()
|
47 |
+
{
|
48 |
+
if (!$this->input) {
|
49 |
+
if ($input = $this['input']) {
|
50 |
+
$this->input = $this->shapeFor($input);
|
51 |
+
} else {
|
52 |
+
$this->input = new StructureShape([], $this->shapeMap);
|
53 |
+
}
|
54 |
+
}
|
55 |
+
|
56 |
+
return $this->input;
|
57 |
+
}
|
58 |
+
|
59 |
+
/**
|
60 |
+
* Get the output shape of the operation.
|
61 |
+
*
|
62 |
+
* @return StructureShape
|
63 |
+
*/
|
64 |
+
public function getOutput()
|
65 |
+
{
|
66 |
+
if (!$this->output) {
|
67 |
+
if ($output = $this['output']) {
|
68 |
+
$this->output = $this->shapeFor($output);
|
69 |
+
} else {
|
70 |
+
$this->output = new StructureShape([], $this->shapeMap);
|
71 |
+
}
|
72 |
+
}
|
73 |
+
|
74 |
+
return $this->output;
|
75 |
+
}
|
76 |
+
|
77 |
+
/**
|
78 |
+
* Get an array of operation error shapes.
|
79 |
+
*
|
80 |
+
* @return Shape[]
|
81 |
+
*/
|
82 |
+
public function getErrors()
|
83 |
+
{
|
84 |
+
if ($this->errors === null) {
|
85 |
+
if ($errors = $this['errors']) {
|
86 |
+
foreach ($errors as &$error) {
|
87 |
+
$error = $this->shapeFor($error);
|
88 |
+
}
|
89 |
+
$this->errors = $errors;
|
90 |
+
} else {
|
91 |
+
$this->errors = [];
|
92 |
+
}
|
93 |
+
}
|
94 |
+
|
95 |
+
return $this->errors;
|
96 |
+
}
|
97 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Parser/AbstractParser.php
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api\Parser;
|
3 |
+
|
4 |
+
use Aws\Api\Service;
|
5 |
+
use Aws\CommandInterface;
|
6 |
+
use Aws\ResultInterface;
|
7 |
+
use Psr\Http\Message\ResponseInterface;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* @internal
|
11 |
+
*/
|
12 |
+
abstract class AbstractParser
|
13 |
+
{
|
14 |
+
/** @var \Aws\Api\Service Representation of the service API*/
|
15 |
+
protected $api;
|
16 |
+
|
17 |
+
/**
|
18 |
+
* @param Service $api Service description.
|
19 |
+
*/
|
20 |
+
public function __construct(Service $api)
|
21 |
+
{
|
22 |
+
$this->api = $api;
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* @param CommandInterface $command Command that was executed.
|
27 |
+
* @param ResponseInterface $response Response that was received.
|
28 |
+
*
|
29 |
+
* @return ResultInterface
|
30 |
+
*/
|
31 |
+
abstract public function __invoke(
|
32 |
+
CommandInterface $command,
|
33 |
+
ResponseInterface $response
|
34 |
+
);
|
35 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Parser/AbstractRestParser.php
ADDED
@@ -0,0 +1,154 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api\Parser;
|
3 |
+
|
4 |
+
use Aws\Api\DateTimeResult;
|
5 |
+
use Aws\Api\Shape;
|
6 |
+
use Aws\Api\StructureShape;
|
7 |
+
use Aws\Result;
|
8 |
+
use Aws\CommandInterface;
|
9 |
+
use Psr\Http\Message\ResponseInterface;
|
10 |
+
|
11 |
+
/**
|
12 |
+
* @internal
|
13 |
+
*/
|
14 |
+
abstract class AbstractRestParser extends AbstractParser
|
15 |
+
{
|
16 |
+
/**
|
17 |
+
* Parses a payload from a response.
|
18 |
+
*
|
19 |
+
* @param ResponseInterface $response Response to parse.
|
20 |
+
* @param StructureShape $member Member to parse
|
21 |
+
* @param array $result Result value
|
22 |
+
*
|
23 |
+
* @return mixed
|
24 |
+
*/
|
25 |
+
abstract protected function payload(
|
26 |
+
ResponseInterface $response,
|
27 |
+
StructureShape $member,
|
28 |
+
array &$result
|
29 |
+
);
|
30 |
+
|
31 |
+
public function __invoke(
|
32 |
+
CommandInterface $command,
|
33 |
+
ResponseInterface $response
|
34 |
+
) {
|
35 |
+
$output = $this->api->getOperation($command->getName())->getOutput();
|
36 |
+
$result = [];
|
37 |
+
|
38 |
+
if ($payload = $output['payload']) {
|
39 |
+
$this->extractPayload($payload, $output, $response, $result);
|
40 |
+
}
|
41 |
+
|
42 |
+
foreach ($output->getMembers() as $name => $member) {
|
43 |
+
switch ($member['location']) {
|
44 |
+
case 'header':
|
45 |
+
$this->extractHeader($name, $member, $response, $result);
|
46 |
+
break;
|
47 |
+
case 'headers':
|
48 |
+
$this->extractHeaders($name, $member, $response, $result);
|
49 |
+
break;
|
50 |
+
case 'statusCode':
|
51 |
+
$this->extractStatus($name, $response, $result);
|
52 |
+
break;
|
53 |
+
}
|
54 |
+
}
|
55 |
+
|
56 |
+
if (!$payload && $response->getBody()->getSize() > 0) {
|
57 |
+
// if no payload was found, then parse the contents of the body
|
58 |
+
$this->payload($response, $output, $result);
|
59 |
+
}
|
60 |
+
|
61 |
+
return new Result($result);
|
62 |
+
}
|
63 |
+
|
64 |
+
private function extractPayload(
|
65 |
+
$payload,
|
66 |
+
StructureShape $output,
|
67 |
+
ResponseInterface $response,
|
68 |
+
array &$result
|
69 |
+
) {
|
70 |
+
$member = $output->getMember($payload);
|
71 |
+
|
72 |
+
if ($member instanceof StructureShape) {
|
73 |
+
// Structure members parse top-level data into a specific key.
|
74 |
+
$result[$payload] = [];
|
75 |
+
$this->payload($response, $member, $result[$payload]);
|
76 |
+
} else {
|
77 |
+
// Streaming data is just the stream from the response body.
|
78 |
+
$result[$payload] = $response->getBody();
|
79 |
+
}
|
80 |
+
}
|
81 |
+
|
82 |
+
/**
|
83 |
+
* Extract a single header from the response into the result.
|
84 |
+
*/
|
85 |
+
private function extractHeader(
|
86 |
+
$name,
|
87 |
+
Shape $shape,
|
88 |
+
ResponseInterface $response,
|
89 |
+
&$result
|
90 |
+
) {
|
91 |
+
$value = $response->getHeaderLine($shape['locationName'] ?: $name);
|
92 |
+
|
93 |
+
switch ($shape->getType()) {
|
94 |
+
case 'float':
|
95 |
+
case 'double':
|
96 |
+
$value = (float) $value;
|
97 |
+
break;
|
98 |
+
case 'long':
|
99 |
+
$value = (int) $value;
|
100 |
+
break;
|
101 |
+
case 'boolean':
|
102 |
+
$value = filter_var($value, FILTER_VALIDATE_BOOLEAN);
|
103 |
+
break;
|
104 |
+
case 'blob':
|
105 |
+
$value = base64_decode($value);
|
106 |
+
break;
|
107 |
+
case 'timestamp':
|
108 |
+
try {
|
109 |
+
$value = new DateTimeResult($value);
|
110 |
+
break;
|
111 |
+
} catch (\Exception $e) {
|
112 |
+
// If the value cannot be parsed, then do not add it to the
|
113 |
+
// output structure.
|
114 |
+
return;
|
115 |
+
}
|
116 |
+
}
|
117 |
+
|
118 |
+
$result[$name] = $value;
|
119 |
+
}
|
120 |
+
|
121 |
+
/**
|
122 |
+
* Extract a map of headers with an optional prefix from the response.
|
123 |
+
*/
|
124 |
+
private function extractHeaders(
|
125 |
+
$name,
|
126 |
+
Shape $shape,
|
127 |
+
ResponseInterface $response,
|
128 |
+
&$result
|
129 |
+
) {
|
130 |
+
// Check if the headers are prefixed by a location name
|
131 |
+
$result[$name] = [];
|
132 |
+
$prefix = $shape['locationName'];
|
133 |
+
$prefixLen = strlen($prefix);
|
134 |
+
|
135 |
+
foreach ($response->getHeaders() as $k => $values) {
|
136 |
+
if (!$prefixLen) {
|
137 |
+
$result[$name][$k] = implode(', ', $values);
|
138 |
+
} elseif (stripos($k, $prefix) === 0) {
|
139 |
+
$result[$name][substr($k, $prefixLen)] = implode(', ', $values);
|
140 |
+
}
|
141 |
+
}
|
142 |
+
}
|
143 |
+
|
144 |
+
/**
|
145 |
+
* Places the status code of the response into the result array.
|
146 |
+
*/
|
147 |
+
private function extractStatus(
|
148 |
+
$name,
|
149 |
+
ResponseInterface $response,
|
150 |
+
array &$result
|
151 |
+
) {
|
152 |
+
$result[$name] = (int) $response->getStatusCode();
|
153 |
+
}
|
154 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Parser/Crc32ValidatingParser.php
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api\Parser;
|
3 |
+
|
4 |
+
use Aws\CommandInterface;
|
5 |
+
use Aws\Exception\AwsException;
|
6 |
+
use Psr\Http\Message\ResponseInterface;
|
7 |
+
use GuzzleHttp\Psr7;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* @internal Decorates a parser and validates the x-amz-crc32 header.
|
11 |
+
*/
|
12 |
+
class Crc32ValidatingParser extends AbstractParser
|
13 |
+
{
|
14 |
+
/** @var callable */
|
15 |
+
private $parser;
|
16 |
+
|
17 |
+
/**
|
18 |
+
* @param callable $parser Parser to wrap.
|
19 |
+
*/
|
20 |
+
public function __construct(callable $parser)
|
21 |
+
{
|
22 |
+
$this->parser = $parser;
|
23 |
+
}
|
24 |
+
|
25 |
+
public function __invoke(
|
26 |
+
CommandInterface $command,
|
27 |
+
ResponseInterface $response
|
28 |
+
) {
|
29 |
+
if ($expected = $response->getHeaderLine('x-amz-crc32')) {
|
30 |
+
$hash = hexdec(Psr7\hash($response->getBody(), 'crc32b'));
|
31 |
+
if ($expected != $hash) {
|
32 |
+
throw new AwsException(
|
33 |
+
"crc32 mismatch. Expected {$expected}, found {$hash}.",
|
34 |
+
$command,
|
35 |
+
[
|
36 |
+
'code' => 'ClientChecksumMismatch',
|
37 |
+
'connection_error' => true,
|
38 |
+
'response' => $response
|
39 |
+
]
|
40 |
+
);
|
41 |
+
}
|
42 |
+
}
|
43 |
+
|
44 |
+
$fn = $this->parser;
|
45 |
+
return $fn($command, $response);
|
46 |
+
}
|
47 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Parser/Exception/ParserException.php
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api\Parser\Exception;
|
3 |
+
|
4 |
+
class ParserException extends \RuntimeException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Parser/JsonParser.php
ADDED
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api\Parser;
|
3 |
+
|
4 |
+
use Aws\Api\DateTimeResult;
|
5 |
+
use Aws\Api\Shape;
|
6 |
+
|
7 |
+
/**
|
8 |
+
* @internal Implements standard JSON parsing.
|
9 |
+
*/
|
10 |
+
class JsonParser
|
11 |
+
{
|
12 |
+
public function parse(Shape $shape, $value)
|
13 |
+
{
|
14 |
+
if ($value === null) {
|
15 |
+
return $value;
|
16 |
+
}
|
17 |
+
|
18 |
+
switch ($shape['type']) {
|
19 |
+
case 'structure':
|
20 |
+
$target = [];
|
21 |
+
foreach ($shape->getMembers() as $name => $member) {
|
22 |
+
$locationName = $member['locationName'] ?: $name;
|
23 |
+
if (isset($value[$locationName])) {
|
24 |
+
$target[$name] = $this->parse($member, $value[$locationName]);
|
25 |
+
}
|
26 |
+
}
|
27 |
+
return $target;
|
28 |
+
|
29 |
+
case 'list':
|
30 |
+
$member = $shape->getMember();
|
31 |
+
$target = [];
|
32 |
+
foreach ($value as $v) {
|
33 |
+
$target[] = $this->parse($member, $v);
|
34 |
+
}
|
35 |
+
return $target;
|
36 |
+
|
37 |
+
case 'map':
|
38 |
+
$values = $shape->getValue();
|
39 |
+
$target = [];
|
40 |
+
foreach ($value as $k => $v) {
|
41 |
+
$target[$k] = $this->parse($values, $v);
|
42 |
+
}
|
43 |
+
return $target;
|
44 |
+
|
45 |
+
case 'timestamp':
|
46 |
+
// The Unix epoch (or Unix time or POSIX time or Unix
|
47 |
+
// timestamp) is the number of seconds that have elapsed since
|
48 |
+
// January 1, 1970 (midnight UTC/GMT).
|
49 |
+
return DateTimeResult::fromEpoch($value);
|
50 |
+
|
51 |
+
case 'blob':
|
52 |
+
return base64_decode($value);
|
53 |
+
|
54 |
+
default:
|
55 |
+
return $value;
|
56 |
+
}
|
57 |
+
}
|
58 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Parser/JsonRpcParser.php
ADDED
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api\Parser;
|
3 |
+
|
4 |
+
use Aws\Api\Service;
|
5 |
+
use Aws\Result;
|
6 |
+
use Aws\CommandInterface;
|
7 |
+
use Psr\Http\Message\ResponseInterface;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* @internal Implements JSON-RPC parsing (e.g., DynamoDB)
|
11 |
+
*/
|
12 |
+
class JsonRpcParser extends AbstractParser
|
13 |
+
{
|
14 |
+
use PayloadParserTrait;
|
15 |
+
|
16 |
+
private $parser;
|
17 |
+
|
18 |
+
/**
|
19 |
+
* @param Service $api Service description
|
20 |
+
* @param JsonParser $parser JSON body builder
|
21 |
+
*/
|
22 |
+
public function __construct(Service $api, JsonParser $parser = null)
|
23 |
+
{
|
24 |
+
parent::__construct($api);
|
25 |
+
$this->parser = $parser ?: new JsonParser();
|
26 |
+
}
|
27 |
+
|
28 |
+
public function __invoke(
|
29 |
+
CommandInterface $command,
|
30 |
+
ResponseInterface $response
|
31 |
+
) {
|
32 |
+
$operation = $this->api->getOperation($command->getName());
|
33 |
+
|
34 |
+
return new Result($this->parser->parse(
|
35 |
+
$operation->getOutput(),
|
36 |
+
$this->parseJson($response->getBody())
|
37 |
+
));
|
38 |
+
}
|
39 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Parser/PayloadParserTrait.php
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api\Parser;
|
3 |
+
|
4 |
+
use Aws\Api\Parser\Exception\ParserException;
|
5 |
+
|
6 |
+
trait PayloadParserTrait
|
7 |
+
{
|
8 |
+
/**
|
9 |
+
* @param string $json
|
10 |
+
*
|
11 |
+
* @throws ParserException
|
12 |
+
*
|
13 |
+
* @return array
|
14 |
+
*/
|
15 |
+
private function parseJson($json)
|
16 |
+
{
|
17 |
+
$jsonPayload = json_decode($json, true);
|
18 |
+
|
19 |
+
if (JSON_ERROR_NONE !== json_last_error()) {
|
20 |
+
throw new ParserException('Error parsing JSON: '
|
21 |
+
. json_last_error_msg());
|
22 |
+
}
|
23 |
+
|
24 |
+
return $jsonPayload;
|
25 |
+
}
|
26 |
+
|
27 |
+
/**
|
28 |
+
* @param string $xml
|
29 |
+
*
|
30 |
+
* @throws ParserException
|
31 |
+
*
|
32 |
+
* @return \SimpleXMLElement
|
33 |
+
*/
|
34 |
+
private function parseXml($xml)
|
35 |
+
{
|
36 |
+
$priorSetting = libxml_use_internal_errors(true);
|
37 |
+
try {
|
38 |
+
libxml_clear_errors();
|
39 |
+
$xmlPayload = new \SimpleXMLElement($xml);
|
40 |
+
if ($error = libxml_get_last_error()) {
|
41 |
+
throw new \RuntimeException($error->message);
|
42 |
+
}
|
43 |
+
} catch (\Exception $e) {
|
44 |
+
throw new ParserException("Error parsing XML: {$e->getMessage()}", 0, $e);
|
45 |
+
} finally {
|
46 |
+
libxml_use_internal_errors($priorSetting);
|
47 |
+
}
|
48 |
+
|
49 |
+
return $xmlPayload;
|
50 |
+
}
|
51 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Parser/QueryParser.php
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api\Parser;
|
3 |
+
|
4 |
+
use Aws\Api\Service;
|
5 |
+
use Aws\Result;
|
6 |
+
use Aws\CommandInterface;
|
7 |
+
use Psr\Http\Message\ResponseInterface;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* @internal Parses query (XML) responses (e.g., EC2, SQS, and many others)
|
11 |
+
*/
|
12 |
+
class QueryParser extends AbstractParser
|
13 |
+
{
|
14 |
+
use PayloadParserTrait;
|
15 |
+
|
16 |
+
/** @var XmlParser */
|
17 |
+
private $xmlParser;
|
18 |
+
|
19 |
+
/** @var bool */
|
20 |
+
private $honorResultWrapper;
|
21 |
+
|
22 |
+
/**
|
23 |
+
* @param Service $api Service description
|
24 |
+
* @param XmlParser $xmlParser Optional XML parser
|
25 |
+
* @param bool $honorResultWrapper Set to false to disable the peeling
|
26 |
+
* back of result wrappers from the
|
27 |
+
* output strucutre.
|
28 |
+
*/
|
29 |
+
public function __construct(
|
30 |
+
Service $api,
|
31 |
+
XmlParser $xmlParser = null,
|
32 |
+
$honorResultWrapper = true
|
33 |
+
) {
|
34 |
+
parent::__construct($api);
|
35 |
+
$this->xmlParser = $xmlParser ?: new XmlParser();
|
36 |
+
$this->honorResultWrapper = $honorResultWrapper;
|
37 |
+
}
|
38 |
+
|
39 |
+
public function __invoke(
|
40 |
+
CommandInterface $command,
|
41 |
+
ResponseInterface $response
|
42 |
+
) {
|
43 |
+
$output = $this->api->getOperation($command->getName())->getOutput();
|
44 |
+
$xml = $this->parseXml($response->getBody());
|
45 |
+
|
46 |
+
if ($this->honorResultWrapper && $output['resultWrapper']) {
|
47 |
+
$xml = $xml->{$output['resultWrapper']};
|
48 |
+
}
|
49 |
+
|
50 |
+
return new Result($this->xmlParser->parse($output, $xml));
|
51 |
+
}
|
52 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Parser/RestJsonParser.php
ADDED
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api\Parser;
|
3 |
+
|
4 |
+
use Aws\Api\Service;
|
5 |
+
use Aws\Api\StructureShape;
|
6 |
+
use Psr\Http\Message\ResponseInterface;
|
7 |
+
|
8 |
+
/**
|
9 |
+
* @internal Implements REST-JSON parsing (e.g., Glacier, Elastic Transcoder)
|
10 |
+
*/
|
11 |
+
class RestJsonParser extends AbstractRestParser
|
12 |
+
{
|
13 |
+
use PayloadParserTrait;
|
14 |
+
|
15 |
+
/** @var JsonParser */
|
16 |
+
private $parser;
|
17 |
+
|
18 |
+
/**
|
19 |
+
* @param Service $api Service description
|
20 |
+
* @param JsonParser $parser JSON body builder
|
21 |
+
*/
|
22 |
+
public function __construct(Service $api, JsonParser $parser = null)
|
23 |
+
{
|
24 |
+
parent::__construct($api);
|
25 |
+
$this->parser = $parser ?: new JsonParser();
|
26 |
+
}
|
27 |
+
|
28 |
+
protected function payload(
|
29 |
+
ResponseInterface $response,
|
30 |
+
StructureShape $member,
|
31 |
+
array &$result
|
32 |
+
) {
|
33 |
+
$jsonBody = $this->parseJson($response->getBody());
|
34 |
+
|
35 |
+
if ($jsonBody) {
|
36 |
+
$result += $this->parser->parse($member, $jsonBody);
|
37 |
+
}
|
38 |
+
}
|
39 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Parser/RestXmlParser.php
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api\Parser;
|
3 |
+
|
4 |
+
use Aws\Api\StructureShape;
|
5 |
+
use Aws\Api\Service;
|
6 |
+
use Psr\Http\Message\ResponseInterface;
|
7 |
+
|
8 |
+
/**
|
9 |
+
* @internal Implements REST-XML parsing (e.g., S3, CloudFront, etc...)
|
10 |
+
*/
|
11 |
+
class RestXmlParser extends AbstractRestParser
|
12 |
+
{
|
13 |
+
use PayloadParserTrait;
|
14 |
+
|
15 |
+
/** @var XmlParser */
|
16 |
+
private $parser;
|
17 |
+
|
18 |
+
/**
|
19 |
+
* @param Service $api Service description
|
20 |
+
* @param XmlParser $parser XML body parser
|
21 |
+
*/
|
22 |
+
public function __construct(Service $api, XmlParser $parser = null)
|
23 |
+
{
|
24 |
+
parent::__construct($api);
|
25 |
+
$this->parser = $parser ?: new XmlParser();
|
26 |
+
}
|
27 |
+
|
28 |
+
protected function payload(
|
29 |
+
ResponseInterface $response,
|
30 |
+
StructureShape $member,
|
31 |
+
array &$result
|
32 |
+
) {
|
33 |
+
$xml = $this->parseXml($response->getBody());
|
34 |
+
$result += $this->parser->parse($member, $xml);
|
35 |
+
}
|
36 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Parser/XmlParser.php
ADDED
@@ -0,0 +1,134 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api\Parser;
|
3 |
+
|
4 |
+
use Aws\Api\DateTimeResult;
|
5 |
+
use Aws\Api\ListShape;
|
6 |
+
use Aws\Api\MapShape;
|
7 |
+
use Aws\Api\Shape;
|
8 |
+
use Aws\Api\StructureShape;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* @internal Implements standard XML parsing for REST-XML and Query protocols.
|
12 |
+
*/
|
13 |
+
class XmlParser
|
14 |
+
{
|
15 |
+
public function parse(StructureShape $shape, \SimpleXMLElement $value)
|
16 |
+
{
|
17 |
+
return $this->dispatch($shape, $value);
|
18 |
+
}
|
19 |
+
|
20 |
+
private function dispatch($shape, \SimpleXMLElement $value)
|
21 |
+
{
|
22 |
+
static $methods = [
|
23 |
+
'structure' => 'parse_structure',
|
24 |
+
'list' => 'parse_list',
|
25 |
+
'map' => 'parse_map',
|
26 |
+
'blob' => 'parse_blob',
|
27 |
+
'boolean' => 'parse_boolean',
|
28 |
+
'integer' => 'parse_integer',
|
29 |
+
'float' => 'parse_float',
|
30 |
+
'double' => 'parse_float',
|
31 |
+
'timestamp' => 'parse_timestamp',
|
32 |
+
];
|
33 |
+
|
34 |
+
$type = $shape['type'];
|
35 |
+
if (isset($methods[$type])) {
|
36 |
+
return $this->{$methods[$type]}($shape, $value);
|
37 |
+
}
|
38 |
+
|
39 |
+
return (string) $value;
|
40 |
+
}
|
41 |
+
|
42 |
+
private function parse_structure(
|
43 |
+
StructureShape $shape,
|
44 |
+
\SimpleXMLElement $value
|
45 |
+
) {
|
46 |
+
$target = [];
|
47 |
+
|
48 |
+
foreach ($shape->getMembers() as $name => $member) {
|
49 |
+
// Extract the name of the XML node
|
50 |
+
$node = $this->memberKey($member, $name);
|
51 |
+
if (isset($value->{$node})) {
|
52 |
+
$target[$name] = $this->dispatch($member, $value->{$node});
|
53 |
+
}
|
54 |
+
}
|
55 |
+
|
56 |
+
return $target;
|
57 |
+
}
|
58 |
+
|
59 |
+
private function memberKey(Shape $shape, $name)
|
60 |
+
{
|
61 |
+
if (null !== $shape['locationName']) {
|
62 |
+
return $shape['locationName'];
|
63 |
+
}
|
64 |
+
|
65 |
+
if ($shape instanceof ListShape && $shape['flattened']) {
|
66 |
+
return $shape->getMember()['locationName'] ?: $name;
|
67 |
+
}
|
68 |
+
|
69 |
+
return $name;
|
70 |
+
}
|
71 |
+
|
72 |
+
private function parse_list(ListShape $shape, \SimpleXMLElement $value)
|
73 |
+
{
|
74 |
+
$target = [];
|
75 |
+
$member = $shape->getMember();
|
76 |
+
|
77 |
+
if (!$shape['flattened']) {
|
78 |
+
$value = $value->{$member['locationName'] ?: 'member'};
|
79 |
+
}
|
80 |
+
|
81 |
+
foreach ($value as $v) {
|
82 |
+
$target[] = $this->dispatch($member, $v);
|
83 |
+
}
|
84 |
+
|
85 |
+
return $target;
|
86 |
+
}
|
87 |
+
|
88 |
+
private function parse_map(MapShape $shape, \SimpleXMLElement $value)
|
89 |
+
{
|
90 |
+
$target = [];
|
91 |
+
|
92 |
+
if (!$shape['flattened']) {
|
93 |
+
$value = $value->entry;
|
94 |
+
}
|
95 |
+
|
96 |
+
$mapKey = $shape->getKey();
|
97 |
+
$mapValue = $shape->getValue();
|
98 |
+
$keyName = $shape->getKey()['locationName'] ?: 'key';
|
99 |
+
$valueName = $shape->getValue()['locationName'] ?: 'value';
|
100 |
+
|
101 |
+
foreach ($value as $node) {
|
102 |
+
$key = $this->dispatch($mapKey, $node->{$keyName});
|
103 |
+
$value = $this->dispatch($mapValue, $node->{$valueName});
|
104 |
+
$target[$key] = $value;
|
105 |
+
}
|
106 |
+
|
107 |
+
return $target;
|
108 |
+
}
|
109 |
+
|
110 |
+
private function parse_blob(Shape $shape, $value)
|
111 |
+
{
|
112 |
+
return base64_decode((string) $value);
|
113 |
+
}
|
114 |
+
|
115 |
+
private function parse_float(Shape $shape, $value)
|
116 |
+
{
|
117 |
+
return (float) (string) $value;
|
118 |
+
}
|
119 |
+
|
120 |
+
private function parse_integer(Shape $shape, $value)
|
121 |
+
{
|
122 |
+
return (int) (string) $value;
|
123 |
+
}
|
124 |
+
|
125 |
+
private function parse_boolean(Shape $shape, $value)
|
126 |
+
{
|
127 |
+
return $value == 'true' ? true : false;
|
128 |
+
}
|
129 |
+
|
130 |
+
private function parse_timestamp(Shape $shape, $value)
|
131 |
+
{
|
132 |
+
return new DateTimeResult($value);
|
133 |
+
}
|
134 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Serializer/Ec2ParamBuilder.php
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api\Serializer;
|
3 |
+
|
4 |
+
use Aws\Api\Shape;
|
5 |
+
use Aws\Api\ListShape;
|
6 |
+
|
7 |
+
/**
|
8 |
+
* @internal
|
9 |
+
*/
|
10 |
+
class Ec2ParamBuilder extends QueryParamBuilder
|
11 |
+
{
|
12 |
+
protected function queryName(Shape $shape, $default = null)
|
13 |
+
{
|
14 |
+
return ($shape['queryName']
|
15 |
+
?: ucfirst($shape['locationName']))
|
16 |
+
?: $default;
|
17 |
+
}
|
18 |
+
|
19 |
+
protected function isFlat(Shape $shape)
|
20 |
+
{
|
21 |
+
return false;
|
22 |
+
}
|
23 |
+
|
24 |
+
protected function format_list(
|
25 |
+
ListShape $shape,
|
26 |
+
array $value,
|
27 |
+
$prefix,
|
28 |
+
&$query
|
29 |
+
) {
|
30 |
+
// Handle empty list serialization
|
31 |
+
if (!$value) {
|
32 |
+
$query[$prefix] = false;
|
33 |
+
} else {
|
34 |
+
$items = $shape->getMember();
|
35 |
+
foreach ($value as $k => $v) {
|
36 |
+
$this->format($items, $v, $prefix . '.' . ($k + 1), $query);
|
37 |
+
}
|
38 |
+
}
|
39 |
+
}
|
40 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Serializer/JsonBody.php
ADDED
@@ -0,0 +1,90 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api\Serializer;
|
3 |
+
|
4 |
+
use Aws\Api\Service;
|
5 |
+
use Aws\Api\Shape;
|
6 |
+
use Aws\Api\TimestampShape;
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Formats the JSON body of a JSON-REST or JSON-RPC operation.
|
10 |
+
* @internal
|
11 |
+
*/
|
12 |
+
class JsonBody
|
13 |
+
{
|
14 |
+
private $api;
|
15 |
+
|
16 |
+
public function __construct(Service $api)
|
17 |
+
{
|
18 |
+
$this->api = $api;
|
19 |
+
}
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Gets the JSON Content-Type header for a service API
|
23 |
+
*
|
24 |
+
* @param Service $service
|
25 |
+
*
|
26 |
+
* @return string
|
27 |
+
*/
|
28 |
+
public static function getContentType(Service $service)
|
29 |
+
{
|
30 |
+
return 'application/x-amz-json-'
|
31 |
+
. number_format($service->getMetadata('jsonVersion'), 1);
|
32 |
+
}
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Builds the JSON body based on an array of arguments.
|
36 |
+
*
|
37 |
+
* @param Shape $shape Operation being constructed
|
38 |
+
* @param array $args Associative array of arguments
|
39 |
+
*
|
40 |
+
* @return string
|
41 |
+
*/
|
42 |
+
public function build(Shape $shape, array $args)
|
43 |
+
{
|
44 |
+
$result = json_encode($this->format($shape, $args));
|
45 |
+
|
46 |
+
return $result == '[]' ? '{}' : $result;
|
47 |
+
}
|
48 |
+
|
49 |
+
private function format(Shape $shape, $value)
|
50 |
+
{
|
51 |
+
switch ($shape['type']) {
|
52 |
+
case 'structure':
|
53 |
+
$data = [];
|
54 |
+
foreach ($value as $k => $v) {
|
55 |
+
if ($v !== null && $shape->hasMember($k)) {
|
56 |
+
$valueShape = $shape->getMember($k);
|
57 |
+
$data[$valueShape['locationName'] ?: $k]
|
58 |
+
= $this->format($valueShape, $v);
|
59 |
+
}
|
60 |
+
}
|
61 |
+
return $data;
|
62 |
+
|
63 |
+
case 'list':
|
64 |
+
$items = $shape->getMember();
|
65 |
+
foreach ($value as &$v) {
|
66 |
+
$v = $this->format($items, $v);
|
67 |
+
}
|
68 |
+
return $value;
|
69 |
+
|
70 |
+
case 'map':
|
71 |
+
if (empty($value)) {
|
72 |
+
return new \stdClass;
|
73 |
+
}
|
74 |
+
$values = $shape->getValue();
|
75 |
+
foreach ($value as &$v) {
|
76 |
+
$v = $this->format($values, $v);
|
77 |
+
}
|
78 |
+
return $value;
|
79 |
+
|
80 |
+
case 'blob':
|
81 |
+
return base64_encode($value);
|
82 |
+
|
83 |
+
case 'timestamp':
|
84 |
+
return TimestampShape::format($value, 'unixTimestamp');
|
85 |
+
|
86 |
+
default:
|
87 |
+
return $value;
|
88 |
+
}
|
89 |
+
}
|
90 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Serializer/JsonRpcSerializer.php
ADDED
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api\Serializer;
|
3 |
+
|
4 |
+
use Aws\Api\Service;
|
5 |
+
use Aws\CommandInterface;
|
6 |
+
use GuzzleHttp\Psr7\Request;
|
7 |
+
use Psr\Http\Message\RequestInterface;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Prepares a JSON-RPC request for transfer.
|
11 |
+
* @internal
|
12 |
+
*/
|
13 |
+
class JsonRpcSerializer
|
14 |
+
{
|
15 |
+
/** @var JsonBody */
|
16 |
+
private $jsonFormatter;
|
17 |
+
|
18 |
+
/** @var string */
|
19 |
+
private $endpoint;
|
20 |
+
|
21 |
+
/** @var Service */
|
22 |
+
private $api;
|
23 |
+
|
24 |
+
/** @var string */
|
25 |
+
private $contentType;
|
26 |
+
|
27 |
+
/**
|
28 |
+
* @param Service $api Service description
|
29 |
+
* @param string $endpoint Endpoint to connect to
|
30 |
+
* @param JsonBody $jsonFormatter Optional JSON formatter to use
|
31 |
+
*/
|
32 |
+
public function __construct(
|
33 |
+
Service $api,
|
34 |
+
$endpoint,
|
35 |
+
JsonBody $jsonFormatter = null
|
36 |
+
) {
|
37 |
+
$this->endpoint = $endpoint;
|
38 |
+
$this->api = $api;
|
39 |
+
$this->jsonFormatter = $jsonFormatter ?: new JsonBody($this->api);
|
40 |
+
$this->contentType = JsonBody::getContentType($api);
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* When invoked with an AWS command, returns a serialization array
|
45 |
+
* containing "method", "uri", "headers", and "body" key value pairs.
|
46 |
+
*
|
47 |
+
* @param CommandInterface $command
|
48 |
+
*
|
49 |
+
* @return RequestInterface
|
50 |
+
*/
|
51 |
+
public function __invoke(CommandInterface $command)
|
52 |
+
{
|
53 |
+
$name = $command->getName();
|
54 |
+
$operation = $this->api->getOperation($name);
|
55 |
+
|
56 |
+
return new Request(
|
57 |
+
$operation['http']['method'],
|
58 |
+
$this->endpoint,
|
59 |
+
[
|
60 |
+
'X-Amz-Target' => $this->api->getMetadata('targetPrefix') . '.' . $name,
|
61 |
+
'Content-Type' => $this->contentType
|
62 |
+
],
|
63 |
+
$this->jsonFormatter->build(
|
64 |
+
$operation->getInput(),
|
65 |
+
$command->toArray()
|
66 |
+
)
|
67 |
+
);
|
68 |
+
}
|
69 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Serializer/QueryParamBuilder.php
ADDED
@@ -0,0 +1,154 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api\Serializer;
|
3 |
+
|
4 |
+
use Aws\Api\StructureShape;
|
5 |
+
use Aws\Api\ListShape;
|
6 |
+
use Aws\Api\MapShape;
|
7 |
+
use Aws\Api\Shape;
|
8 |
+
use Aws\Api\TimestampShape;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* @internal
|
12 |
+
*/
|
13 |
+
class QueryParamBuilder
|
14 |
+
{
|
15 |
+
private $methods;
|
16 |
+
|
17 |
+
protected function queryName(Shape $shape, $default = null)
|
18 |
+
{
|
19 |
+
if (null !== $shape['queryName']) {
|
20 |
+
return $shape['queryName'];
|
21 |
+
}
|
22 |
+
|
23 |
+
if (null !== $shape['locationName']) {
|
24 |
+
return $shape['locationName'];
|
25 |
+
}
|
26 |
+
|
27 |
+
if ($this->isFlat($shape) && !empty($shape['member']['locationName'])) {
|
28 |
+
return $shape['member']['locationName'];
|
29 |
+
}
|
30 |
+
|
31 |
+
return $default;
|
32 |
+
}
|
33 |
+
|
34 |
+
protected function isFlat(Shape $shape)
|
35 |
+
{
|
36 |
+
return $shape['flattened'] === true;
|
37 |
+
}
|
38 |
+
|
39 |
+
public function __invoke(StructureShape $shape, array $params)
|
40 |
+
{
|
41 |
+
if (!$this->methods) {
|
42 |
+
$this->methods = array_fill_keys(get_class_methods($this), true);
|
43 |
+
}
|
44 |
+
|
45 |
+
$query = [];
|
46 |
+
$this->format_structure($shape, $params, '', $query);
|
47 |
+
|
48 |
+
return $query;
|
49 |
+
}
|
50 |
+
|
51 |
+
protected function format(Shape $shape, $value, $prefix, array &$query)
|
52 |
+
{
|
53 |
+
$type = 'format_' . $shape['type'];
|
54 |
+
if (isset($this->methods[$type])) {
|
55 |
+
$this->{$type}($shape, $value, $prefix, $query);
|
56 |
+
} else {
|
57 |
+
$query[$prefix] = (string) $value;
|
58 |
+
}
|
59 |
+
}
|
60 |
+
|
61 |
+
protected function format_structure(
|
62 |
+
StructureShape $shape,
|
63 |
+
array $value,
|
64 |
+
$prefix,
|
65 |
+
&$query
|
66 |
+
) {
|
67 |
+
if ($prefix) {
|
68 |
+
$prefix .= '.';
|
69 |
+
}
|
70 |
+
|
71 |
+
foreach ($value as $k => $v) {
|
72 |
+
if ($shape->hasMember($k)) {
|
73 |
+
$member = $shape->getMember($k);
|
74 |
+
$this->format(
|
75 |
+
$member,
|
76 |
+
$v,
|
77 |
+
$prefix . $this->queryName($member, $k),
|
78 |
+
$query
|
79 |
+
);
|
80 |
+
}
|
81 |
+
}
|
82 |
+
}
|
83 |
+
|
84 |
+
protected function format_list(
|
85 |
+
ListShape $shape,
|
86 |
+
array $value,
|
87 |
+
$prefix,
|
88 |
+
&$query
|
89 |
+
) {
|
90 |
+
// Handle empty list serialization
|
91 |
+
if (!$value) {
|
92 |
+
$query[$prefix] = '';
|
93 |
+
return;
|
94 |
+
}
|
95 |
+
|
96 |
+
$items = $shape->getMember();
|
97 |
+
|
98 |
+
if (!$this->isFlat($shape)) {
|
99 |
+
$locationName = $shape->getMember()['locationName'] ?: 'member';
|
100 |
+
$prefix .= ".$locationName";
|
101 |
+
} elseif ($name = $this->queryName($items)) {
|
102 |
+
$parts = explode('.', $prefix);
|
103 |
+
$parts[count($parts) - 1] = $name;
|
104 |
+
$prefix = implode('.', $parts);
|
105 |
+
}
|
106 |
+
|
107 |
+
foreach ($value as $k => $v) {
|
108 |
+
$this->format($items, $v, $prefix . '.' . ($k + 1), $query);
|
109 |
+
}
|
110 |
+
}
|
111 |
+
|
112 |
+
protected function format_map(
|
113 |
+
MapShape $shape,
|
114 |
+
array $value,
|
115 |
+
$prefix,
|
116 |
+
array &$query
|
117 |
+
) {
|
118 |
+
$vals = $shape->getValue();
|
119 |
+
$keys = $shape->getKey();
|
120 |
+
|
121 |
+
if (!$this->isFlat($shape)) {
|
122 |
+
$prefix .= '.entry';
|
123 |
+
}
|
124 |
+
|
125 |
+
$i = 0;
|
126 |
+
$keyName = '%s.%d.' . $this->queryName($keys, 'key');
|
127 |
+
$valueName = '%s.%s.' . $this->queryName($vals, 'value');
|
128 |
+
|
129 |
+
foreach ($value as $k => $v) {
|
130 |
+
$i++;
|
131 |
+
$this->format($keys, $k, sprintf($keyName, $prefix, $i), $query);
|
132 |
+
$this->format($vals, $v, sprintf($valueName, $prefix, $i), $query);
|
133 |
+
}
|
134 |
+
}
|
135 |
+
|
136 |
+
protected function format_blob(Shape $shape, $value, $prefix, array &$query)
|
137 |
+
{
|
138 |
+
$query[$prefix] = base64_encode($value);
|
139 |
+
}
|
140 |
+
|
141 |
+
protected function format_timestamp(
|
142 |
+
TimestampShape $shape,
|
143 |
+
$value,
|
144 |
+
$prefix,
|
145 |
+
array &$query
|
146 |
+
) {
|
147 |
+
$query[$prefix] = TimestampShape::format($value, 'iso8601');
|
148 |
+
}
|
149 |
+
|
150 |
+
protected function format_boolean(Shape $shape, $value, $prefix, array &$query)
|
151 |
+
{
|
152 |
+
$query[$prefix] = ($value) ? 'true' : 'false';
|
153 |
+
}
|
154 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Serializer/QuerySerializer.php
ADDED
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api\Serializer;
|
3 |
+
|
4 |
+
use Aws\Api\Service;
|
5 |
+
use Aws\CommandInterface;
|
6 |
+
use GuzzleHttp\Psr7\Request;
|
7 |
+
use Psr\Http\Message\RequestInterface;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Serializes a query protocol request.
|
11 |
+
* @internal
|
12 |
+
*/
|
13 |
+
class QuerySerializer
|
14 |
+
{
|
15 |
+
private $endpoint;
|
16 |
+
private $api;
|
17 |
+
private $paramBuilder;
|
18 |
+
|
19 |
+
public function __construct(
|
20 |
+
Service $api,
|
21 |
+
$endpoint,
|
22 |
+
callable $paramBuilder = null
|
23 |
+
) {
|
24 |
+
$this->api = $api;
|
25 |
+
$this->endpoint = $endpoint;
|
26 |
+
$this->paramBuilder = $paramBuilder ?: new QueryParamBuilder();
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* When invoked with an AWS command, returns a serialization array
|
31 |
+
* containing "method", "uri", "headers", and "body" key value pairs.
|
32 |
+
*
|
33 |
+
* @param CommandInterface $command
|
34 |
+
*
|
35 |
+
* @return RequestInterface
|
36 |
+
*/
|
37 |
+
public function __invoke(CommandInterface $command)
|
38 |
+
{
|
39 |
+
$operation = $this->api->getOperation($command->getName());
|
40 |
+
|
41 |
+
$body = [
|
42 |
+
'Action' => $command->getName(),
|
43 |
+
'Version' => $this->api->getMetadata('apiVersion')
|
44 |
+
];
|
45 |
+
|
46 |
+
$params = $command->toArray();
|
47 |
+
|
48 |
+
// Only build up the parameters when there are parameters to build
|
49 |
+
if ($params) {
|
50 |
+
$body += call_user_func(
|
51 |
+
$this->paramBuilder,
|
52 |
+
$operation->getInput(),
|
53 |
+
$params
|
54 |
+
);
|
55 |
+
}
|
56 |
+
|
57 |
+
$body = http_build_query($body, null, '&', PHP_QUERY_RFC3986);
|
58 |
+
|
59 |
+
return new Request(
|
60 |
+
'POST',
|
61 |
+
$this->endpoint,
|
62 |
+
[
|
63 |
+
'Content-Length' => strlen($body),
|
64 |
+
'Content-Type' => 'application/x-www-form-urlencoded'
|
65 |
+
],
|
66 |
+
$body
|
67 |
+
);
|
68 |
+
}
|
69 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Serializer/RestJsonSerializer.php
ADDED
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api\Serializer;
|
3 |
+
|
4 |
+
use Aws\Api\Service;
|
5 |
+
use Aws\Api\StructureShape;
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Serializes requests for the REST-JSON protocol.
|
9 |
+
* @internal
|
10 |
+
*/
|
11 |
+
class RestJsonSerializer extends RestSerializer
|
12 |
+
{
|
13 |
+
/** @var JsonBody */
|
14 |
+
private $jsonFormatter;
|
15 |
+
|
16 |
+
/** @var string */
|
17 |
+
private $contentType;
|
18 |
+
|
19 |
+
/**
|
20 |
+
* @param Service $api Service API description
|
21 |
+
* @param string $endpoint Endpoint to connect to
|
22 |
+
* @param JsonBody $jsonFormatter Optional JSON formatter to use
|
23 |
+
*/
|
24 |
+
public function __construct(
|
25 |
+
Service $api,
|
26 |
+
$endpoint,
|
27 |
+
JsonBody $jsonFormatter = null
|
28 |
+
) {
|
29 |
+
parent::__construct($api, $endpoint);
|
30 |
+
$this->contentType = JsonBody::getContentType($api);
|
31 |
+
$this->jsonFormatter = $jsonFormatter ?: new JsonBody($api);
|
32 |
+
}
|
33 |
+
|
34 |
+
protected function payload(StructureShape $member, array $value, array &$opts)
|
35 |
+
{
|
36 |
+
$opts['headers']['Content-Type'] = $this->contentType;
|
37 |
+
$opts['body'] = (string) $this->jsonFormatter->build($member, $value);
|
38 |
+
}
|
39 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Serializer/RestSerializer.php
ADDED
@@ -0,0 +1,193 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api\Serializer;
|
3 |
+
|
4 |
+
use Aws\Api\MapShape;
|
5 |
+
use Aws\Api\Service;
|
6 |
+
use Aws\Api\Operation;
|
7 |
+
use Aws\Api\Shape;
|
8 |
+
use Aws\Api\StructureShape;
|
9 |
+
use Aws\Api\TimestampShape;
|
10 |
+
use Aws\CommandInterface;
|
11 |
+
use GuzzleHttp\Psr7;
|
12 |
+
use Psr\Http\Message\RequestInterface;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Serializes HTTP locations like header, uri, payload, etc...
|
16 |
+
* @internal
|
17 |
+
*/
|
18 |
+
abstract class RestSerializer
|
19 |
+
{
|
20 |
+
/** @var Service */
|
21 |
+
private $api;
|
22 |
+
|
23 |
+
/** @var Psr7\Uri */
|
24 |
+
private $endpoint;
|
25 |
+
|
26 |
+
/**
|
27 |
+
* @param Service $api Service API description
|
28 |
+
* @param string $endpoint Endpoint to connect to
|
29 |
+
*/
|
30 |
+
public function __construct(Service $api, $endpoint)
|
31 |
+
{
|
32 |
+
$this->api = $api;
|
33 |
+
$this->endpoint = Psr7\uri_for($endpoint);
|
34 |
+
}
|
35 |
+
|
36 |
+
/**
|
37 |
+
* @param CommandInterface $command Command to serialized
|
38 |
+
*
|
39 |
+
* @return RequestInterface
|
40 |
+
*/
|
41 |
+
public function __invoke(CommandInterface $command)
|
42 |
+
{
|
43 |
+
$operation = $this->api->getOperation($command->getName());
|
44 |
+
$args = $command->toArray();
|
45 |
+
$opts = $this->serialize($operation, $args);
|
46 |
+
$uri = $this->buildEndpoint($operation, $args, $opts);
|
47 |
+
|
48 |
+
return new Psr7\Request(
|
49 |
+
$operation['http']['method'],
|
50 |
+
$uri,
|
51 |
+
isset($opts['headers']) ? $opts['headers'] : [],
|
52 |
+
isset($opts['body']) ? $opts['body'] : null
|
53 |
+
);
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Modifies a hash of request options for a payload body.
|
58 |
+
*
|
59 |
+
* @param StructureShape $member Member to serialize
|
60 |
+
* @param array $value Value to serialize
|
61 |
+
* @param array $opts Request options to modify.
|
62 |
+
*/
|
63 |
+
abstract protected function payload(
|
64 |
+
StructureShape $member,
|
65 |
+
array $value,
|
66 |
+
array &$opts
|
67 |
+
);
|
68 |
+
|
69 |
+
private function serialize(Operation $operation, array $args)
|
70 |
+
{
|
71 |
+
$opts = [];
|
72 |
+
$input = $operation->getInput();
|
73 |
+
|
74 |
+
// Apply the payload trait if present
|
75 |
+
if ($payload = $input['payload']) {
|
76 |
+
$this->applyPayload($input, $payload, $args, $opts);
|
77 |
+
}
|
78 |
+
|
79 |
+
foreach ($args as $name => $value) {
|
80 |
+
if ($input->hasMember($name)) {
|
81 |
+
$member = $input->getMember($name);
|
82 |
+
$location = $member['location'];
|
83 |
+
if (!$payload && !$location) {
|
84 |
+
$bodyMembers[$name] = $value;
|
85 |
+
} elseif ($location == 'header') {
|
86 |
+
$this->applyHeader($name, $member, $value, $opts);
|
87 |
+
} elseif ($location == 'querystring') {
|
88 |
+
$this->applyQuery($name, $member, $value, $opts);
|
89 |
+
} elseif ($location == 'headers') {
|
90 |
+
$this->applyHeaderMap($name, $member, $value, $opts);
|
91 |
+
}
|
92 |
+
}
|
93 |
+
}
|
94 |
+
|
95 |
+
if (isset($bodyMembers)) {
|
96 |
+
$this->payload($operation->getInput(), $bodyMembers, $opts);
|
97 |
+
}
|
98 |
+
|
99 |
+
return $opts;
|
100 |
+
}
|
101 |
+
|
102 |
+
private function applyPayload(StructureShape $input, $name, array $args, array &$opts)
|
103 |
+
{
|
104 |
+
if (!isset($args[$name])) {
|
105 |
+
return;
|
106 |
+
}
|
107 |
+
|
108 |
+
$m = $input->getMember($name);
|
109 |
+
|
110 |
+
if ($m['streaming'] ||
|
111 |
+
($m['type'] == 'string' || $m['type'] == 'blob')
|
112 |
+
) {
|
113 |
+
// Streaming bodies or payloads that are strings are
|
114 |
+
// always just a stream of data.
|
115 |
+
$opts['body'] = Psr7\stream_for($args[$name]);
|
116 |
+
return;
|
117 |
+
}
|
118 |
+
|
119 |
+
$this->payload($m, $args[$name], $opts);
|
120 |
+
}
|
121 |
+
|
122 |
+
private function applyHeader($name, Shape $member, $value, array &$opts)
|
123 |
+
{
|
124 |
+
if ($member->getType() == 'timestamp') {
|
125 |
+
$value = TimestampShape::format($value, 'rfc822');
|
126 |
+
}
|
127 |
+
|
128 |
+
$opts['headers'][$member['locationName'] ?: $name] = $value;
|
129 |
+
}
|
130 |
+
|
131 |
+
/**
|
132 |
+
* Note: This is currently only present in the Amazon S3 model.
|
133 |
+
*/
|
134 |
+
private function applyHeaderMap($name, Shape $member, array $value, array &$opts)
|
135 |
+
{
|
136 |
+
$prefix = $member['locationName'];
|
137 |
+
foreach ($value as $k => $v) {
|
138 |
+
$opts['headers'][$prefix . $k] = $v;
|
139 |
+
}
|
140 |
+
}
|
141 |
+
|
142 |
+
private function applyQuery($name, Shape $member, $value, array &$opts)
|
143 |
+
{
|
144 |
+
if ($member instanceof MapShape) {
|
145 |
+
$opts['query'] = isset($opts['query']) && is_array($opts['query'])
|
146 |
+
? $opts['query'] + $value
|
147 |
+
: $value;
|
148 |
+
} elseif ($value !== null) {
|
149 |
+
$opts['query'][$member['locationName'] ?: $name] = $value;
|
150 |
+
}
|
151 |
+
}
|
152 |
+
|
153 |
+
private function buildEndpoint(Operation $operation, array $args, array $opts)
|
154 |
+
{
|
155 |
+
$varspecs = [];
|
156 |
+
|
157 |
+
// Create an associative array of varspecs used in expansions
|
158 |
+
foreach ($operation->getInput()->getMembers() as $name => $member) {
|
159 |
+
if ($member['location'] == 'uri') {
|
160 |
+
$varspecs[$member['locationName'] ?: $name] =
|
161 |
+
isset($args[$name])
|
162 |
+
? $args[$name]
|
163 |
+
: null;
|
164 |
+
}
|
165 |
+
}
|
166 |
+
|
167 |
+
$relative = preg_replace_callback(
|
168 |
+
'/\{([^\}]+)\}/',
|
169 |
+
function (array $matches) use ($varspecs) {
|
170 |
+
$isGreedy = substr($matches[1], -1, 1) == '+';
|
171 |
+
$k = $isGreedy ? substr($matches[1], 0, -1) : $matches[1];
|
172 |
+
if (!isset($varspecs[$k])) {
|
173 |
+
return '';
|
174 |
+
} elseif ($isGreedy) {
|
175 |
+
return str_replace('%2F', '/', rawurlencode($varspecs[$k]));
|
176 |
+
} else {
|
177 |
+
return rawurlencode($varspecs[$k]);
|
178 |
+
}
|
179 |
+
},
|
180 |
+
$operation['http']['requestUri']
|
181 |
+
);
|
182 |
+
|
183 |
+
// Add the query string variables or appending to one if needed.
|
184 |
+
if (!empty($opts['query'])) {
|
185 |
+
$append = Psr7\build_query($opts['query']);
|
186 |
+
$relative .= strpos($relative, '?') ? "&{$append}" : "?$append";
|
187 |
+
}
|
188 |
+
|
189 |
+
// Expand path place holders using Amazon's slightly different URI
|
190 |
+
// template syntax.
|
191 |
+
return Psr7\Uri::resolve($this->endpoint, $relative);
|
192 |
+
}
|
193 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Serializer/RestXmlSerializer.php
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api\Serializer;
|
3 |
+
|
4 |
+
use Aws\Api\StructureShape;
|
5 |
+
use Aws\Api\Service;
|
6 |
+
|
7 |
+
/**
|
8 |
+
* @internal
|
9 |
+
*/
|
10 |
+
class RestXmlSerializer extends RestSerializer
|
11 |
+
{
|
12 |
+
/** @var XmlBody */
|
13 |
+
private $xmlBody;
|
14 |
+
|
15 |
+
/**
|
16 |
+
* @param Service $api Service API description
|
17 |
+
* @param string $endpoint Endpoint to connect to
|
18 |
+
* @param XmlBody $xmlBody Optional XML formatter to use
|
19 |
+
*/
|
20 |
+
public function __construct(
|
21 |
+
Service $api,
|
22 |
+
$endpoint,
|
23 |
+
XmlBody $xmlBody = null
|
24 |
+
) {
|
25 |
+
parent::__construct($api, $endpoint);
|
26 |
+
$this->xmlBody = $xmlBody ?: new XmlBody($api);
|
27 |
+
}
|
28 |
+
|
29 |
+
protected function payload(StructureShape $member, array $value, array &$opts)
|
30 |
+
{
|
31 |
+
$opts['headers']['Content-Type'] = 'application/xml';
|
32 |
+
$opts['body'] = (string) $this->xmlBody->build($member, $value);
|
33 |
+
}
|
34 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Serializer/XmlBody.php
ADDED
@@ -0,0 +1,217 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api\Serializer;
|
3 |
+
|
4 |
+
use Aws\Api\MapShape;
|
5 |
+
use Aws\Api\Service;
|
6 |
+
use Aws\Api\Shape;
|
7 |
+
use Aws\Api\StructureShape;
|
8 |
+
use Aws\Api\ListShape;
|
9 |
+
use Aws\Api\TimestampShape;
|
10 |
+
use XMLWriter;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* @internal Formats the XML body of a REST-XML services.
|
14 |
+
*/
|
15 |
+
class XmlBody
|
16 |
+
{
|
17 |
+
/** @var \Aws\Api\Service */
|
18 |
+
private $api;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* @param Service $api API being used to create the XML body.
|
22 |
+
*/
|
23 |
+
public function __construct(Service $api)
|
24 |
+
{
|
25 |
+
$this->api = $api;
|
26 |
+
}
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Builds the XML body based on an array of arguments.
|
30 |
+
*
|
31 |
+
* @param Shape $shape Operation being constructed
|
32 |
+
* @param array $args Associative array of arguments
|
33 |
+
*
|
34 |
+
* @return string
|
35 |
+
*/
|
36 |
+
public function build(Shape $shape, array $args)
|
37 |
+
{
|
38 |
+
$xml = new XMLWriter();
|
39 |
+
$xml->openMemory();
|
40 |
+
$xml->startDocument('1.0', 'UTF-8');
|
41 |
+
$this->format($shape, $shape['locationName'], $args, $xml);
|
42 |
+
$xml->endDocument();
|
43 |
+
|
44 |
+
return $xml->outputMemory();
|
45 |
+
}
|
46 |
+
|
47 |
+
private function startElement(Shape $shape, $name, XMLWriter $xml)
|
48 |
+
{
|
49 |
+
$xml->startElement($name);
|
50 |
+
|
51 |
+
if ($ns = $shape['xmlNamespace']) {
|
52 |
+
$xml->writeAttribute(
|
53 |
+
isset($ns['prefix']) ? "xmlns:{$ns['prefix']}" : 'xmlns',
|
54 |
+
$shape['xmlNamespace']['uri']
|
55 |
+
);
|
56 |
+
}
|
57 |
+
}
|
58 |
+
|
59 |
+
private function format(Shape $shape, $name, $value, XMLWriter $xml)
|
60 |
+
{
|
61 |
+
// Any method mentioned here has a custom serialization handler.
|
62 |
+
static $methods = [
|
63 |
+
'add_structure' => true,
|
64 |
+
'add_list' => true,
|
65 |
+
'add_blob' => true,
|
66 |
+
'add_timestamp' => true,
|
67 |
+
'add_boolean' => true,
|
68 |
+
'add_map' => true,
|
69 |
+
'add_string' => true
|
70 |
+
];
|
71 |
+
|
72 |
+
$type = 'add_' . $shape['type'];
|
73 |
+
if (isset($methods[$type])) {
|
74 |
+
$this->{$type}($shape, $name, $value, $xml);
|
75 |
+
} else {
|
76 |
+
$this->defaultShape($shape, $name, $value, $xml);
|
77 |
+
}
|
78 |
+
}
|
79 |
+
|
80 |
+
private function defaultShape(Shape $shape, $name, $value, XMLWriter $xml)
|
81 |
+
{
|
82 |
+
$this->startElement($shape, $name, $xml);
|
83 |
+
$xml->writeRaw($value);
|
84 |
+
$xml->endElement();
|
85 |
+
}
|
86 |
+
|
87 |
+
private function add_structure(
|
88 |
+
StructureShape $shape,
|
89 |
+
$name,
|
90 |
+
array $value,
|
91 |
+
\XMLWriter $xml
|
92 |
+
) {
|
93 |
+
$this->startElement($shape, $name, $xml);
|
94 |
+
|
95 |
+
foreach ($this->getStructureMembers($shape, $value) as $k => $definition) {
|
96 |
+
$this->format(
|
97 |
+
$definition['member'],
|
98 |
+
$definition['member']['locationName'] ?: $k,
|
99 |
+
$definition['value'],
|
100 |
+
$xml
|
101 |
+
);
|
102 |
+
}
|
103 |
+
|
104 |
+
$xml->endElement();
|
105 |
+
}
|
106 |
+
|
107 |
+
private function getStructureMembers(StructureShape $shape, array $value)
|
108 |
+
{
|
109 |
+
$members = [];
|
110 |
+
|
111 |
+
foreach ($value as $k => $v) {
|
112 |
+
if ($v !== null && $shape->hasMember($k)) {
|
113 |
+
$definition = [
|
114 |
+
'member' => $shape->getMember($k),
|
115 |
+
'value' => $v,
|
116 |
+
];
|
117 |
+
|
118 |
+
if ($definition['member']['xmlAttribute']) {
|
119 |
+
// array_unshift_associative
|
120 |
+
$members = [$k => $definition] + $members;
|
121 |
+
} else {
|
122 |
+
$members[$k] = $definition;
|
123 |
+
}
|
124 |
+
}
|
125 |
+
}
|
126 |
+
|
127 |
+
return $members;
|
128 |
+
}
|
129 |
+
|
130 |
+
private function add_list(
|
131 |
+
ListShape $shape,
|
132 |
+
$name,
|
133 |
+
array $value,
|
134 |
+
XMLWriter $xml
|
135 |
+
) {
|
136 |
+
$items = $shape->getMember();
|
137 |
+
|
138 |
+
if ($shape['flattened']) {
|
139 |
+
$elementName = $name;
|
140 |
+
} else {
|
141 |
+
$this->startElement($shape, $name, $xml);
|
142 |
+
$elementName = $items['locationName'] ?: 'member';
|
143 |
+
}
|
144 |
+
|
145 |
+
foreach ($value as &$v) {
|
146 |
+
$this->format($items, $elementName, $v, $xml);
|
147 |
+
}
|
148 |
+
|
149 |
+
if (!$shape['flattened']) {
|
150 |
+
$xml->endElement();
|
151 |
+
}
|
152 |
+
}
|
153 |
+
|
154 |
+
private function add_map(
|
155 |
+
MapShape $shape,
|
156 |
+
$name,
|
157 |
+
array $value,
|
158 |
+
XMLWriter $xml
|
159 |
+
) {
|
160 |
+
$xmlEntry = $shape['flattened'] ? $shape['locationName'] : 'entry';
|
161 |
+
$xmlKey = $shape->getKey()['locationName'] ?: 'key';
|
162 |
+
$xmlValue = $shape->getValue()['locationName'] ?: 'value';
|
163 |
+
|
164 |
+
$this->startElement($shape, $name, $xml);
|
165 |
+
|
166 |
+
foreach ($value as $key => $v) {
|
167 |
+
$this->startElement($shape, $xmlEntry, $xml);
|
168 |
+
$this->format($shape->getKey(), $xmlKey, $key, $xml);
|
169 |
+
$this->format($shape->getValue(), $xmlValue, $v, $xml);
|
170 |
+
$xml->endElement();
|
171 |
+
}
|
172 |
+
|
173 |
+
$xml->endElement();
|
174 |
+
}
|
175 |
+
|
176 |
+
private function add_blob(Shape $shape, $name, $value, XMLWriter $xml)
|
177 |
+
{
|
178 |
+
$this->startElement($shape, $name, $xml);
|
179 |
+
$xml->writeRaw(base64_encode($value));
|
180 |
+
$xml->endElement();
|
181 |
+
}
|
182 |
+
|
183 |
+
private function add_timestamp(
|
184 |
+
TimestampShape $shape,
|
185 |
+
$name,
|
186 |
+
$value,
|
187 |
+
XMLWriter $xml
|
188 |
+
) {
|
189 |
+
$this->startElement($shape, $name, $xml);
|
190 |
+
$xml->writeRaw(TimestampShape::format($value, 'iso8601'));
|
191 |
+
$xml->endElement();
|
192 |
+
}
|
193 |
+
|
194 |
+
private function add_boolean(
|
195 |
+
Shape $shape,
|
196 |
+
$name,
|
197 |
+
$value,
|
198 |
+
XMLWriter $xml
|
199 |
+
) {
|
200 |
+
$this->startElement($shape, $name, $xml);
|
201 |
+
$xml->writeRaw($value ? 'true' : 'false');
|
202 |
+
$xml->endElement();
|
203 |
+
}
|
204 |
+
|
205 |
+
private function add_string(
|
206 |
+
Shape $shape,
|
207 |
+
$name,
|
208 |
+
$value,
|
209 |
+
XMLWriter $xml
|
210 |
+
) {
|
211 |
+
if ($shape['xmlAttribute']) {
|
212 |
+
$xml->writeAttribute($shape['locationName'] ?: $name, $value);
|
213 |
+
} else {
|
214 |
+
$this->defaultShape($shape, $name, $value, $xml);
|
215 |
+
}
|
216 |
+
}
|
217 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Service.php
ADDED
@@ -0,0 +1,404 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api;
|
3 |
+
|
4 |
+
use Aws\Api\Serializer\QuerySerializer;
|
5 |
+
use Aws\Api\Serializer\Ec2ParamBuilder;
|
6 |
+
use Aws\Api\Parser\QueryParser;
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Represents a web service API model.
|
10 |
+
*/
|
11 |
+
class Service extends AbstractModel
|
12 |
+
{
|
13 |
+
/** @var callable */
|
14 |
+
private $apiProvider;
|
15 |
+
|
16 |
+
/** @var string */
|
17 |
+
private $serviceName;
|
18 |
+
|
19 |
+
/** @var string */
|
20 |
+
private $apiVersion;
|
21 |
+
|
22 |
+
/** @var Operation[] */
|
23 |
+
private $operations = [];
|
24 |
+
|
25 |
+
/** @var array */
|
26 |
+
private $paginators = null;
|
27 |
+
|
28 |
+
/** @var array */
|
29 |
+
private $waiters = null;
|
30 |
+
|
31 |
+
/**
|
32 |
+
* @param array $definition
|
33 |
+
* @param callable $provider
|
34 |
+
*
|
35 |
+
* @internal param array $definition Service description
|
36 |
+
*/
|
37 |
+
public function __construct(array $definition, callable $provider)
|
38 |
+
{
|
39 |
+
static $defaults = [
|
40 |
+
'operations' => [],
|
41 |
+
'shapes' => [],
|
42 |
+
'metadata' => []
|
43 |
+
], $defaultMeta = [
|
44 |
+
'apiVersion' => null,
|
45 |
+
'serviceFullName' => null,
|
46 |
+
'endpointPrefix' => null,
|
47 |
+
'signingName' => null,
|
48 |
+
'signatureVersion' => null,
|
49 |
+
'protocol' => null
|
50 |
+
];
|
51 |
+
|
52 |
+
$definition += $defaults;
|
53 |
+
$definition['metadata'] += $defaultMeta;
|
54 |
+
$this->definition = $definition;
|
55 |
+
$this->apiProvider = $provider;
|
56 |
+
parent::__construct($definition, new ShapeMap($definition['shapes']));
|
57 |
+
$this->serviceName = $this->getEndpointPrefix();
|
58 |
+
$this->apiVersion = $this->getApiVersion();
|
59 |
+
}
|
60 |
+
|
61 |
+
/**
|
62 |
+
* Creates a request serializer for the provided API object.
|
63 |
+
*
|
64 |
+
* @param Service $api API that contains a protocol.
|
65 |
+
* @param string $endpoint Endpoint to send requests to.
|
66 |
+
*
|
67 |
+
* @return callable
|
68 |
+
* @throws \UnexpectedValueException
|
69 |
+
*/
|
70 |
+
public static function createSerializer(Service $api, $endpoint)
|
71 |
+
{
|
72 |
+
static $mapping = [
|
73 |
+
'json' => 'Aws\Api\Serializer\JsonRpcSerializer',
|
74 |
+
'query' => 'Aws\Api\Serializer\QuerySerializer',
|
75 |
+
'rest-json' => 'Aws\Api\Serializer\RestJsonSerializer',
|
76 |
+
'rest-xml' => 'Aws\Api\Serializer\RestXmlSerializer'
|
77 |
+
];
|
78 |
+
|
79 |
+
$proto = $api->getProtocol();
|
80 |
+
|
81 |
+
if (isset($mapping[$proto])) {
|
82 |
+
return new $mapping[$proto]($api, $endpoint);
|
83 |
+
} elseif ($proto == 'ec2') {
|
84 |
+
return new QuerySerializer($api, $endpoint, new Ec2ParamBuilder());
|
85 |
+
}
|
86 |
+
|
87 |
+
throw new \UnexpectedValueException(
|
88 |
+
'Unknown protocol: ' . $api->getProtocol()
|
89 |
+
);
|
90 |
+
}
|
91 |
+
|
92 |
+
/**
|
93 |
+
* Creates an error parser for the given protocol.
|
94 |
+
*
|
95 |
+
* @param string $protocol Protocol to parse (e.g., query, json, etc.)
|
96 |
+
*
|
97 |
+
* @return callable
|
98 |
+
* @throws \UnexpectedValueException
|
99 |
+
*/
|
100 |
+
public static function createErrorParser($protocol)
|
101 |
+
{
|
102 |
+
static $mapping = [
|
103 |
+
'json' => 'Aws\Api\ErrorParser\JsonRpcErrorParser',
|
104 |
+
'query' => 'Aws\Api\ErrorParser\XmlErrorParser',
|
105 |
+
'rest-json' => 'Aws\Api\ErrorParser\RestJsonErrorParser',
|
106 |
+
'rest-xml' => 'Aws\Api\ErrorParser\XmlErrorParser',
|
107 |
+
'ec2' => 'Aws\Api\ErrorParser\XmlErrorParser'
|
108 |
+
];
|
109 |
+
|
110 |
+
if (isset($mapping[$protocol])) {
|
111 |
+
return new $mapping[$protocol]();
|
112 |
+
}
|
113 |
+
|
114 |
+
throw new \UnexpectedValueException("Unknown protocol: $protocol");
|
115 |
+
}
|
116 |
+
|
117 |
+
/**
|
118 |
+
* Applies the listeners needed to parse client models.
|
119 |
+
*
|
120 |
+
* @param Service $api API to create a parser for
|
121 |
+
* @return callable
|
122 |
+
* @throws \UnexpectedValueException
|
123 |
+
*/
|
124 |
+
public static function createParser(Service $api)
|
125 |
+
{
|
126 |
+
static $mapping = [
|
127 |
+
'json' => 'Aws\Api\Parser\JsonRpcParser',
|
128 |
+
'query' => 'Aws\Api\Parser\QueryParser',
|
129 |
+
'rest-json' => 'Aws\Api\Parser\RestJsonParser',
|
130 |
+
'rest-xml' => 'Aws\Api\Parser\RestXmlParser'
|
131 |
+
];
|
132 |
+
|
133 |
+
$proto = $api->getProtocol();
|
134 |
+
if (isset($mapping[$proto])) {
|
135 |
+
return new $mapping[$proto]($api);
|
136 |
+
} elseif ($proto == 'ec2') {
|
137 |
+
return new QueryParser($api, null, false);
|
138 |
+
}
|
139 |
+
|
140 |
+
throw new \UnexpectedValueException(
|
141 |
+
'Unknown protocol: ' . $api->getProtocol()
|
142 |
+
);
|
143 |
+
}
|
144 |
+
|
145 |
+
/**
|
146 |
+
* Get the full name of the service
|
147 |
+
*
|
148 |
+
* @return string
|
149 |
+
*/
|
150 |
+
public function getServiceFullName()
|
151 |
+
{
|
152 |
+
return $this->definition['metadata']['serviceFullName'];
|
153 |
+
}
|
154 |
+
|
155 |
+
/**
|
156 |
+
* Get the API version of the service
|
157 |
+
*
|
158 |
+
* @return string
|
159 |
+
*/
|
160 |
+
public function getApiVersion()
|
161 |
+
{
|
162 |
+
return $this->definition['metadata']['apiVersion'];
|
163 |
+
}
|
164 |
+
|
165 |
+
/**
|
166 |
+
* Get the API version of the service
|
167 |
+
*
|
168 |
+
* @return string
|
169 |
+
*/
|
170 |
+
public function getEndpointPrefix()
|
171 |
+
{
|
172 |
+
return $this->definition['metadata']['endpointPrefix'];
|
173 |
+
}
|
174 |
+
|
175 |
+
/**
|
176 |
+
* Get the signing name used by the service.
|
177 |
+
*
|
178 |
+
* @return string
|
179 |
+
*/
|
180 |
+
public function getSigningName()
|
181 |
+
{
|
182 |
+
return $this->definition['metadata']['signingName']
|
183 |
+
?: $this->definition['metadata']['endpointPrefix'];
|
184 |
+
}
|
185 |
+
|
186 |
+
/**
|
187 |
+
* Get the default signature version of the service.
|
188 |
+
*
|
189 |
+
* Note: this method assumes "v4" when not specified in the model.
|
190 |
+
*
|
191 |
+
* @return string
|
192 |
+
*/
|
193 |
+
public function getSignatureVersion()
|
194 |
+
{
|
195 |
+
return $this->definition['metadata']['signatureVersion'] ?: 'v4';
|
196 |
+
}
|
197 |
+
|
198 |
+
/**
|
199 |
+
* Get the protocol used by the service.
|
200 |
+
*
|
201 |
+
* @return string
|
202 |
+
*/
|
203 |
+
public function getProtocol()
|
204 |
+
{
|
205 |
+
return $this->definition['metadata']['protocol'];
|
206 |
+
}
|
207 |
+
|
208 |
+
/**
|
209 |
+
* Check if the description has a specific operation by name.
|
210 |
+
*
|
211 |
+
* @param string $name Operation to check by name
|
212 |
+
*
|
213 |
+
* @return bool
|
214 |
+
*/
|
215 |
+
public function hasOperation($name)
|
216 |
+
{
|
217 |
+
return isset($this['operations'][$name]);
|
218 |
+
}
|
219 |
+
|
220 |
+
/**
|
221 |
+
* Get an operation by name.
|
222 |
+
*
|
223 |
+
* @param string $name Operation to retrieve by name
|
224 |
+
*
|
225 |
+
* @return Operation
|
226 |
+
* @throws \InvalidArgumentException If the operation is not found
|
227 |
+
*/
|
228 |
+
public function getOperation($name)
|
229 |
+
{
|
230 |
+
if (!isset($this->operations[$name])) {
|
231 |
+
if (!isset($this->definition['operations'][$name])) {
|
232 |
+
throw new \InvalidArgumentException("Unknown operation: $name");
|
233 |
+
}
|
234 |
+
$this->operations[$name] = new Operation(
|
235 |
+
$this->definition['operations'][$name],
|
236 |
+
$this->shapeMap
|
237 |
+
);
|
238 |
+
}
|
239 |
+
|
240 |
+
return $this->operations[$name];
|
241 |
+
}
|
242 |
+
|
243 |
+
/**
|
244 |
+
* Get all of the operations of the description.
|
245 |
+
*
|
246 |
+
* @return Operation[]
|
247 |
+
*/
|
248 |
+
public function getOperations()
|
249 |
+
{
|
250 |
+
$result = [];
|
251 |
+
foreach ($this->definition['operations'] as $name => $definition) {
|
252 |
+
$result[$name] = $this->getOperation($name);
|
253 |
+
}
|
254 |
+
|
255 |
+
return $result;
|
256 |
+
}
|
257 |
+
|
258 |
+
/**
|
259 |
+
* Get all of the service metadata or a specific metadata key value.
|
260 |
+
*
|
261 |
+
* @param string|null $key Key to retrieve or null to retrieve all metadata
|
262 |
+
*
|
263 |
+
* @return mixed Returns the result or null if the key is not found
|
264 |
+
*/
|
265 |
+
public function getMetadata($key = null)
|
266 |
+
{
|
267 |
+
if (!$key) {
|
268 |
+
return $this['metadata'];
|
269 |
+
} elseif (isset($this->definition['metadata'][$key])) {
|
270 |
+
return $this->definition['metadata'][$key];
|
271 |
+
}
|
272 |
+
|
273 |
+
return null;
|
274 |
+
}
|
275 |
+
|
276 |
+
/**
|
277 |
+
* Gets an associative array of available paginator configurations where
|
278 |
+
* the key is the name of the paginator, and the value is the paginator
|
279 |
+
* configuration.
|
280 |
+
*
|
281 |
+
* @return array
|
282 |
+
* @unstable The configuration format of paginators may change in the future
|
283 |
+
*/
|
284 |
+
public function getPaginators()
|
285 |
+
{
|
286 |
+
if (!isset($this->paginators)) {
|
287 |
+
$res = call_user_func(
|
288 |
+
$this->apiProvider,
|
289 |
+
'paginator',
|
290 |
+
$this->serviceName,
|
291 |
+
$this->apiVersion
|
292 |
+
);
|
293 |
+
$this->paginators = isset($res['pagination'])
|
294 |
+
? $res['pagination']
|
295 |
+
: [];
|
296 |
+
}
|
297 |
+
|
298 |
+
return $this->paginators;
|
299 |
+
}
|
300 |
+
|
301 |
+
/**
|
302 |
+
* Determines if the service has a paginator by name.
|
303 |
+
*
|
304 |
+
* @param string $name Name of the paginator.
|
305 |
+
*
|
306 |
+
* @return bool
|
307 |
+
*/
|
308 |
+
public function hasPaginator($name)
|
309 |
+
{
|
310 |
+
return isset($this->getPaginators()[$name]);
|
311 |
+
}
|
312 |
+
|
313 |
+
/**
|
314 |
+
* Retrieve a paginator by name.
|
315 |
+
*
|
316 |
+
* @param string $name Paginator to retrieve by name. This argument is
|
317 |
+
* typically the operation name.
|
318 |
+
* @return array
|
319 |
+
* @throws \UnexpectedValueException if the paginator does not exist.
|
320 |
+
* @unstable The configuration format of paginators may change in the future
|
321 |
+
*/
|
322 |
+
public function getPaginatorConfig($name)
|
323 |
+
{
|
324 |
+
static $defaults = [
|
325 |
+
'input_token' => null,
|
326 |
+
'output_token' => null,
|
327 |
+
'limit_key' => null,
|
328 |
+
'result_key' => null,
|
329 |
+
'more_results' => null,
|
330 |
+
];
|
331 |
+
|
332 |
+
if ($this->hasPaginator($name)) {
|
333 |
+
return $this->paginators[$name] + $defaults;
|
334 |
+
}
|
335 |
+
|
336 |
+
throw new \UnexpectedValueException("There is no {$name} "
|
337 |
+
. "paginator defined for the {$this->serviceName} service.");
|
338 |
+
}
|
339 |
+
|
340 |
+
/**
|
341 |
+
* Gets an associative array of available waiter configurations where the
|
342 |
+
* key is the name of the waiter, and the value is the waiter
|
343 |
+
* configuration.
|
344 |
+
*
|
345 |
+
* @return array
|
346 |
+
*/
|
347 |
+
public function getWaiters()
|
348 |
+
{
|
349 |
+
if (!isset($this->waiters)) {
|
350 |
+
$res = call_user_func(
|
351 |
+
$this->apiProvider,
|
352 |
+
'waiter',
|
353 |
+
$this->serviceName,
|
354 |
+
$this->apiVersion
|
355 |
+
);
|
356 |
+
$this->waiters = isset($res['waiters'])
|
357 |
+
? $res['waiters']
|
358 |
+
: [];
|
359 |
+
}
|
360 |
+
|
361 |
+
return $this->waiters;
|
362 |
+
}
|
363 |
+
|
364 |
+
/**
|
365 |
+
* Determines if the service has a waiter by name.
|
366 |
+
*
|
367 |
+
* @param string $name Name of the waiter.
|
368 |
+
*
|
369 |
+
* @return bool
|
370 |
+
*/
|
371 |
+
public function hasWaiter($name)
|
372 |
+
{
|
373 |
+
return isset($this->getWaiters()[$name]);
|
374 |
+
}
|
375 |
+
|
376 |
+
/**
|
377 |
+
* Get a waiter configuration by name.
|
378 |
+
*
|
379 |
+
* @param string $name Name of the waiter by name.
|
380 |
+
*
|
381 |
+
* @return array
|
382 |
+
* @throws \UnexpectedValueException if the waiter does not exist.
|
383 |
+
*/
|
384 |
+
public function getWaiterConfig($name)
|
385 |
+
{
|
386 |
+
// Error if the waiter is not defined
|
387 |
+
if ($this->hasWaiter($name)) {
|
388 |
+
return $this->waiters[$name];
|
389 |
+
}
|
390 |
+
|
391 |
+
throw new \UnexpectedValueException("There is no {$name} waiter "
|
392 |
+
. "defined for the {$this->serviceName} service.");
|
393 |
+
}
|
394 |
+
|
395 |
+
/**
|
396 |
+
* Get the shape map used by the API.
|
397 |
+
*
|
398 |
+
* @return ShapeMap
|
399 |
+
*/
|
400 |
+
public function getShapeMap()
|
401 |
+
{
|
402 |
+
return $this->shapeMap;
|
403 |
+
}
|
404 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Shape.php
ADDED
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Base class representing a modeled shape.
|
6 |
+
*/
|
7 |
+
class Shape extends AbstractModel
|
8 |
+
{
|
9 |
+
/**
|
10 |
+
* Get a concrete shape for the given definition.
|
11 |
+
*
|
12 |
+
* @param array $definition
|
13 |
+
* @param ShapeMap $shapeMap
|
14 |
+
*
|
15 |
+
* @return mixed
|
16 |
+
* @throws \RuntimeException if the type is invalid
|
17 |
+
*/
|
18 |
+
public static function create(array $definition, ShapeMap $shapeMap)
|
19 |
+
{
|
20 |
+
static $map = [
|
21 |
+
'structure' => 'Aws\Api\StructureShape',
|
22 |
+
'map' => 'Aws\Api\MapShape',
|
23 |
+
'list' => 'Aws\Api\ListShape',
|
24 |
+
'timestamp' => 'Aws\Api\TimestampShape',
|
25 |
+
'integer' => 'Aws\Api\Shape',
|
26 |
+
'double' => 'Aws\Api\Shape',
|
27 |
+
'float' => 'Aws\Api\Shape',
|
28 |
+
'long' => 'Aws\Api\Shape',
|
29 |
+
'string' => 'Aws\Api\Shape',
|
30 |
+
'byte' => 'Aws\Api\Shape',
|
31 |
+
'character' => 'Aws\Api\Shape',
|
32 |
+
'blob' => 'Aws\Api\Shape',
|
33 |
+
'boolean' => 'Aws\Api\Shape'
|
34 |
+
];
|
35 |
+
|
36 |
+
if (isset($definition['shape'])) {
|
37 |
+
return $shapeMap->resolve($definition);
|
38 |
+
}
|
39 |
+
|
40 |
+
if (!isset($map[$definition['type']])) {
|
41 |
+
throw new \RuntimeException('Invalid type: '
|
42 |
+
. print_r($definition, true));
|
43 |
+
}
|
44 |
+
|
45 |
+
$type = $map[$definition['type']];
|
46 |
+
|
47 |
+
return new $type($definition, $shapeMap);
|
48 |
+
}
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Get the type of the shape
|
52 |
+
*
|
53 |
+
* @return string
|
54 |
+
*/
|
55 |
+
public function getType()
|
56 |
+
{
|
57 |
+
return $this->definition['type'];
|
58 |
+
}
|
59 |
+
|
60 |
+
/**
|
61 |
+
* Get the name of the shape
|
62 |
+
*
|
63 |
+
* @return string
|
64 |
+
*/
|
65 |
+
public function getName()
|
66 |
+
{
|
67 |
+
return $this->definition['name'];
|
68 |
+
}
|
69 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/ShapeMap.php
ADDED
@@ -0,0 +1,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Builds shape based on shape references.
|
6 |
+
*/
|
7 |
+
class ShapeMap
|
8 |
+
{
|
9 |
+
/** @var array */
|
10 |
+
private $definitions;
|
11 |
+
|
12 |
+
/** @var Shape[] */
|
13 |
+
private $simple;
|
14 |
+
|
15 |
+
/**
|
16 |
+
* @param array $shapeModels Associative array of shape definitions.
|
17 |
+
*/
|
18 |
+
public function __construct(array $shapeModels)
|
19 |
+
{
|
20 |
+
$this->definitions = $shapeModels;
|
21 |
+
}
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Get an array of shape names.
|
25 |
+
*
|
26 |
+
* @return array
|
27 |
+
*/
|
28 |
+
public function getShapeNames()
|
29 |
+
{
|
30 |
+
return array_keys($this->definitions);
|
31 |
+
}
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Resolve a shape reference
|
35 |
+
*
|
36 |
+
* @param array $shapeRef Shape reference shape
|
37 |
+
*
|
38 |
+
* @return Shape
|
39 |
+
* @throws \InvalidArgumentException
|
40 |
+
*/
|
41 |
+
public function resolve(array $shapeRef)
|
42 |
+
{
|
43 |
+
$shape = $shapeRef['shape'];
|
44 |
+
|
45 |
+
if (!isset($this->definitions[$shape])) {
|
46 |
+
throw new \InvalidArgumentException('Shape not found: ' . $shape);
|
47 |
+
}
|
48 |
+
|
49 |
+
$isSimple = count($shapeRef) == 1;
|
50 |
+
if ($isSimple && isset($this->simple[$shape])) {
|
51 |
+
return $this->simple[$shape];
|
52 |
+
}
|
53 |
+
|
54 |
+
$definition = $shapeRef + $this->definitions[$shape];
|
55 |
+
$definition['name'] = $definition['shape'];
|
56 |
+
unset($definition['shape']);
|
57 |
+
|
58 |
+
$result = Shape::create($definition, $this);
|
59 |
+
|
60 |
+
if ($isSimple) {
|
61 |
+
$this->simple[$shape] = $result;
|
62 |
+
}
|
63 |
+
|
64 |
+
return $result;
|
65 |
+
}
|
66 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/StructureShape.php
ADDED
@@ -0,0 +1,79 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Represents a structure shape and resolve member shape references.
|
6 |
+
*/
|
7 |
+
class StructureShape extends Shape
|
8 |
+
{
|
9 |
+
/**
|
10 |
+
* @var Shape[]
|
11 |
+
*/
|
12 |
+
private $members;
|
13 |
+
|
14 |
+
public function __construct(array $definition, ShapeMap $shapeMap)
|
15 |
+
{
|
16 |
+
$definition['type'] = 'structure';
|
17 |
+
|
18 |
+
if (!isset($definition['members'])) {
|
19 |
+
$definition['members'] = [];
|
20 |
+
}
|
21 |
+
|
22 |
+
parent::__construct($definition, $shapeMap);
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Gets a list of all members
|
27 |
+
*
|
28 |
+
* @return Shape[]
|
29 |
+
*/
|
30 |
+
public function getMembers()
|
31 |
+
{
|
32 |
+
if (empty($this->members)) {
|
33 |
+
$this->generateMembersHash();
|
34 |
+
}
|
35 |
+
|
36 |
+
return $this->members;
|
37 |
+
}
|
38 |
+
|
39 |
+
/**
|
40 |
+
* Check if a specific member exists by name.
|
41 |
+
*
|
42 |
+
* @param string $name Name of the member to check
|
43 |
+
*
|
44 |
+
* @return bool
|
45 |
+
*/
|
46 |
+
public function hasMember($name)
|
47 |
+
{
|
48 |
+
return isset($this->definition['members'][$name]);
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Retrieve a member by name.
|
53 |
+
*
|
54 |
+
* @param string $name Name of the member to retrieve
|
55 |
+
*
|
56 |
+
* @return Shape
|
57 |
+
* @throws \InvalidArgumentException if the member is not found.
|
58 |
+
*/
|
59 |
+
public function getMember($name)
|
60 |
+
{
|
61 |
+
$members = $this->getMembers();
|
62 |
+
|
63 |
+
if (!isset($members[$name])) {
|
64 |
+
throw new \InvalidArgumentException('Unknown member ' . $name);
|
65 |
+
}
|
66 |
+
|
67 |
+
return $members[$name];
|
68 |
+
}
|
69 |
+
|
70 |
+
|
71 |
+
private function generateMembersHash()
|
72 |
+
{
|
73 |
+
$this->members = [];
|
74 |
+
|
75 |
+
foreach ($this->definition['members'] as $name => $definition) {
|
76 |
+
$this->members[$name] = $this->shapeFor($definition);
|
77 |
+
}
|
78 |
+
}
|
79 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/TimestampShape.php
ADDED
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Represents a timestamp shape.
|
6 |
+
*/
|
7 |
+
class TimestampShape extends Shape
|
8 |
+
{
|
9 |
+
public function __construct(array $definition, ShapeMap $shapeMap)
|
10 |
+
{
|
11 |
+
$definition['type'] = 'timestamp';
|
12 |
+
parent::__construct($definition, $shapeMap);
|
13 |
+
}
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Formats a timestamp value for a service.
|
17 |
+
*
|
18 |
+
* @param mixed $value Value to format
|
19 |
+
* @param string $format Format used to serialize the value
|
20 |
+
*
|
21 |
+
* @return int|string
|
22 |
+
* @throws \UnexpectedValueException if the format is unknown.
|
23 |
+
* @throws \InvalidArgumentException if the value is an unsupported type.
|
24 |
+
*/
|
25 |
+
public static function format($value, $format)
|
26 |
+
{
|
27 |
+
if ($value instanceof \DateTime) {
|
28 |
+
$value = $value->getTimestamp();
|
29 |
+
} elseif (is_string($value)) {
|
30 |
+
$value = strtotime($value);
|
31 |
+
} elseif (!is_int($value)) {
|
32 |
+
throw new \InvalidArgumentException('Unable to handle the provided'
|
33 |
+
. ' timestamp type: ' . gettype($value));
|
34 |
+
}
|
35 |
+
|
36 |
+
switch ($format) {
|
37 |
+
case 'iso8601':
|
38 |
+
return gmdate('Y-m-d\TH:i:s\Z', $value);
|
39 |
+
case 'rfc822':
|
40 |
+
return gmdate('D, d M Y H:i:s \G\M\T', $value);
|
41 |
+
case 'unixTimestamp':
|
42 |
+
return $value;
|
43 |
+
default:
|
44 |
+
throw new \UnexpectedValueException('Unknown timestamp format: '
|
45 |
+
. $format);
|
46 |
+
}
|
47 |
+
}
|
48 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Api/Validator.php
ADDED
@@ -0,0 +1,236 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Api;
|
3 |
+
|
4 |
+
use Aws;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Validates a schema against a hash of input.
|
8 |
+
*/
|
9 |
+
class Validator
|
10 |
+
{
|
11 |
+
private $path = [];
|
12 |
+
private $errors = [];
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Validates the given input against the schema.
|
16 |
+
*
|
17 |
+
* @param string $name Operation name
|
18 |
+
* @param Shape $shape Shape to validate
|
19 |
+
* @param array $input Input to validate
|
20 |
+
*
|
21 |
+
* @throws \InvalidArgumentException if the input is invalid.
|
22 |
+
*/
|
23 |
+
public function validate($name, Shape $shape, array $input)
|
24 |
+
{
|
25 |
+
$this->dispatch($shape, $input);
|
26 |
+
|
27 |
+
if ($this->errors) {
|
28 |
+
$message = sprintf(
|
29 |
+
"Found %d error%s while validating the input provided for the "
|
30 |
+
. "%s operation:\n%s",
|
31 |
+
count($this->errors),
|
32 |
+
count($this->errors) > 1 ? 's' : '',
|
33 |
+
$name,
|
34 |
+
implode("\n", $this->errors)
|
35 |
+
);
|
36 |
+
$this->errors = [];
|
37 |
+
|
38 |
+
throw new \InvalidArgumentException($message);
|
39 |
+
}
|
40 |
+
}
|
41 |
+
|
42 |
+
private function dispatch(Shape $shape, $value)
|
43 |
+
{
|
44 |
+
static $methods = [
|
45 |
+
'structure' => 'check_structure',
|
46 |
+
'list' => 'check_list',
|
47 |
+
'map' => 'check_map',
|
48 |
+
'blob' => 'check_blob',
|
49 |
+
'boolean' => 'check_boolean',
|
50 |
+
'integer' => 'check_numeric',
|
51 |
+
'float' => 'check_numeric',
|
52 |
+
'long' => 'check_numeric',
|
53 |
+
'string' => 'check_string',
|
54 |
+
'byte' => 'check_string',
|
55 |
+
'char' => 'check_string'
|
56 |
+
];
|
57 |
+
|
58 |
+
$type = $shape->getType();
|
59 |
+
if (isset($methods[$type])) {
|
60 |
+
$this->{$methods[$type]}($shape, $value);
|
61 |
+
}
|
62 |
+
}
|
63 |
+
|
64 |
+
private function check_structure(StructureShape $shape, $value)
|
65 |
+
{
|
66 |
+
if (!$this->checkAssociativeArray($value)) {
|
67 |
+
return;
|
68 |
+
}
|
69 |
+
|
70 |
+
if ($shape['required']) {
|
71 |
+
foreach ($shape['required'] as $req) {
|
72 |
+
if (!isset($value[$req])) {
|
73 |
+
$this->path[] = $req;
|
74 |
+
$this->addError('is missing and is a required parameter');
|
75 |
+
array_pop($this->path);
|
76 |
+
}
|
77 |
+
}
|
78 |
+
}
|
79 |
+
|
80 |
+
foreach ($value as $name => $v) {
|
81 |
+
if ($shape->hasMember($name)) {
|
82 |
+
$this->path[] = $name;
|
83 |
+
$this->dispatch(
|
84 |
+
$shape->getMember($name),
|
85 |
+
isset($value[$name]) ? $value[$name] : null
|
86 |
+
);
|
87 |
+
array_pop($this->path);
|
88 |
+
}
|
89 |
+
}
|
90 |
+
}
|
91 |
+
|
92 |
+
private function check_list(ListShape $shape, $value)
|
93 |
+
{
|
94 |
+
if (!is_array($value)) {
|
95 |
+
$this->addError('must be an array. Found '
|
96 |
+
. Aws\describe_type($value));
|
97 |
+
return;
|
98 |
+
}
|
99 |
+
|
100 |
+
list($min, $max, $count) = [$shape['min'], $shape['max'], count($value)];
|
101 |
+
|
102 |
+
if ($min && $count < $min) {
|
103 |
+
$this->addError("must have at least $min members."
|
104 |
+
. " Value provided has $count.");
|
105 |
+
}
|
106 |
+
|
107 |
+
if ($max && $count > $max) {
|
108 |
+
$this->addError("must have no more than $max members."
|
109 |
+
. " Value provided has $count.");
|
110 |
+
}
|
111 |
+
|
112 |
+
$items = $shape->getMember();
|
113 |
+
foreach ($value as $index => $v) {
|
114 |
+
$this->path[] = $index;
|
115 |
+
$this->dispatch($items, $v);
|
116 |
+
array_pop($this->path);
|
117 |
+
}
|
118 |
+
}
|
119 |
+
|
120 |
+
private function check_map(MapShape $shape, $value)
|
121 |
+
{
|
122 |
+
if (!$this->checkAssociativeArray($value)) {
|
123 |
+
return;
|
124 |
+
}
|
125 |
+
|
126 |
+
$values = $shape->getValue();
|
127 |
+
foreach ($value as $key => $v) {
|
128 |
+
$this->path[] = $key;
|
129 |
+
$this->dispatch($values, $v);
|
130 |
+
array_pop($this->path);
|
131 |
+
}
|
132 |
+
}
|
133 |
+
|
134 |
+
private function check_blob(Shape $shape, $value)
|
135 |
+
{
|
136 |
+
static $valid = [
|
137 |
+
'string' => true,
|
138 |
+
'integer' => true,
|
139 |
+
'double' => true,
|
140 |
+
'resource' => true
|
141 |
+
];
|
142 |
+
|
143 |
+
$type = gettype($value);
|
144 |
+
if (!isset($valid[$type])) {
|
145 |
+
if ($type != 'object' || !method_exists($value, '__toString')) {
|
146 |
+
$this->addError('must be an fopen resource, a '
|
147 |
+
. 'GuzzleHttp\Stream\StreamInterface object, or something '
|
148 |
+
. 'that can be cast to a string. Found '
|
149 |
+
. Aws\describe_type($value));
|
150 |
+
}
|
151 |
+
}
|
152 |
+
}
|
153 |
+
|
154 |
+
private function check_numeric(Shape $shape, $value)
|
155 |
+
{
|
156 |
+
if (!is_numeric($value)) {
|
157 |
+
$this->addError('must be numeric. Found '
|
158 |
+
. Aws\describe_type($value));
|
159 |
+
return;
|
160 |
+
}
|
161 |
+
|
162 |
+
list($min, $max) = [$shape['min'], $shape['max']];
|
163 |
+
|
164 |
+
if ($min && $value < $min) {
|
165 |
+
$this->addError("must be at least $min. Value provided is $value.");
|
166 |
+
}
|
167 |
+
|
168 |
+
if ($max && $value > $max) {
|
169 |
+
$this->addError("must be no more than $max."
|
170 |
+
. " Value provided is $value.");
|
171 |
+
}
|
172 |
+
}
|
173 |
+
|
174 |
+
private function check_boolean(Shape $shape, $value)
|
175 |
+
{
|
176 |
+
if (!is_bool($value)) {
|
177 |
+
$this->addError('must be a boolean. Found '
|
178 |
+
. Aws\describe_type($value));
|
179 |
+
}
|
180 |
+
}
|
181 |
+
|
182 |
+
private function check_string(Shape $shape, $value)
|
183 |
+
{
|
184 |
+
if (!$this->checkCanString($value)) {
|
185 |
+
$this->addError('must be a string or an object that implements '
|
186 |
+
. '__toString(). Found ' . Aws\describe_type($value));
|
187 |
+
return;
|
188 |
+
}
|
189 |
+
|
190 |
+
list($min, $max, $len) = [$shape['min'], $shape['max'], strlen($value)];
|
191 |
+
|
192 |
+
if ($min && $len < $min) {
|
193 |
+
$this->addError("must be at least $min characters long."
|
194 |
+
. " Value provided is $len characters long.");
|
195 |
+
}
|
196 |
+
|
197 |
+
if ($max && $len > $max) {
|
198 |
+
$this->addError("must be no more than $max characters long."
|
199 |
+
. " Value provided is $len characters long.");
|
200 |
+
}
|
201 |
+
}
|
202 |
+
|
203 |
+
private function checkCanString($value)
|
204 |
+
{
|
205 |
+
static $valid = [
|
206 |
+
'string' => true,
|
207 |
+
'integer' => true,
|
208 |
+
'double' => true,
|
209 |
+
'NULL' => true,
|
210 |
+
];
|
211 |
+
|
212 |
+
$type = gettype($value);
|
213 |
+
|
214 |
+
return isset($valid[$type]) ||
|
215 |
+
($type == 'object' && method_exists($value, '__toString'));
|
216 |
+
}
|
217 |
+
|
218 |
+
private function checkAssociativeArray($value)
|
219 |
+
{
|
220 |
+
if (!is_array($value) || isset($value[0])) {
|
221 |
+
$this->addError('must be an associative array. Found '
|
222 |
+
. Aws\describe_type($value));
|
223 |
+
return false;
|
224 |
+
}
|
225 |
+
|
226 |
+
return true;
|
227 |
+
}
|
228 |
+
|
229 |
+
private function addError($message)
|
230 |
+
{
|
231 |
+
$this->errors[] =
|
232 |
+
implode('', array_map(function ($s) { return "[{$s}]"; }, $this->path))
|
233 |
+
. ' '
|
234 |
+
. $message;
|
235 |
+
}
|
236 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/ApiGateway/ApiGatewayClient.php
ADDED
@@ -0,0 +1,166 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\ApiGateway;
|
3 |
+
|
4 |
+
use Aws\AwsClient;
|
5 |
+
use Aws\CommandInterface;
|
6 |
+
use Psr\Http\Message\RequestInterface;
|
7 |
+
|
8 |
+
/**
|
9 |
+
* This client is used to interact with the **AWS API Gateway** service.
|
10 |
+
*
|
11 |
+
* @method \Aws\Result createApiKey(array $args = [])
|
12 |
+
* @method \GuzzleHttp\Promise\Promise createApiKeyAsync(array $args = [])
|
13 |
+
* @method \Aws\Result createBasePathMapping(array $args = [])
|
14 |
+
* @method \GuzzleHttp\Promise\Promise createBasePathMappingAsync(array $args = [])
|
15 |
+
* @method \Aws\Result createDeployment(array $args = [])
|
16 |
+
* @method \GuzzleHttp\Promise\Promise createDeploymentAsync(array $args = [])
|
17 |
+
* @method \Aws\Result createDomainName(array $args = [])
|
18 |
+
* @method \GuzzleHttp\Promise\Promise createDomainNameAsync(array $args = [])
|
19 |
+
* @method \Aws\Result createModel(array $args = [])
|
20 |
+
* @method \GuzzleHttp\Promise\Promise createModelAsync(array $args = [])
|
21 |
+
* @method \Aws\Result createResource(array $args = [])
|
22 |
+
* @method \GuzzleHttp\Promise\Promise createResourceAsync(array $args = [])
|
23 |
+
* @method \Aws\Result createRestApi(array $args = [])
|
24 |
+
* @method \GuzzleHttp\Promise\Promise createRestApiAsync(array $args = [])
|
25 |
+
* @method \Aws\Result createStage(array $args = [])
|
26 |
+
* @method \GuzzleHttp\Promise\Promise createStageAsync(array $args = [])
|
27 |
+
* @method \Aws\Result deleteApiKey(array $args = [])
|
28 |
+
* @method \GuzzleHttp\Promise\Promise deleteApiKeyAsync(array $args = [])
|
29 |
+
* @method \Aws\Result deleteBasePathMapping(array $args = [])
|
30 |
+
* @method \GuzzleHttp\Promise\Promise deleteBasePathMappingAsync(array $args = [])
|
31 |
+
* @method \Aws\Result deleteClientCertificate(array $args = [])
|
32 |
+
* @method \GuzzleHttp\Promise\Promise deleteClientCertificateAsync(array $args = [])
|
33 |
+
* @method \Aws\Result deleteDeployment(array $args = [])
|
34 |
+
* @method \GuzzleHttp\Promise\Promise deleteDeploymentAsync(array $args = [])
|
35 |
+
* @method \Aws\Result deleteDomainName(array $args = [])
|
36 |
+
* @method \GuzzleHttp\Promise\Promise deleteDomainNameAsync(array $args = [])
|
37 |
+
* @method \Aws\Result deleteIntegration(array $args = [])
|
38 |
+
* @method \GuzzleHttp\Promise\Promise deleteIntegrationAsync(array $args = [])
|
39 |
+
* @method \Aws\Result deleteIntegrationResponse(array $args = [])
|
40 |
+
* @method \GuzzleHttp\Promise\Promise deleteIntegrationResponseAsync(array $args = [])
|
41 |
+
* @method \Aws\Result deleteMethod(array $args = [])
|
42 |
+
* @method \GuzzleHttp\Promise\Promise deleteMethodAsync(array $args = [])
|
43 |
+
* @method \Aws\Result deleteMethodResponse(array $args = [])
|
44 |
+
* @method \GuzzleHttp\Promise\Promise deleteMethodResponseAsync(array $args = [])
|
45 |
+
* @method \Aws\Result deleteModel(array $args = [])
|
46 |
+
* @method \GuzzleHttp\Promise\Promise deleteModelAsync(array $args = [])
|
47 |
+
* @method \Aws\Result deleteResource(array $args = [])
|
48 |
+
* @method \GuzzleHttp\Promise\Promise deleteResourceAsync(array $args = [])
|
49 |
+
* @method \Aws\Result deleteRestApi(array $args = [])
|
50 |
+
* @method \GuzzleHttp\Promise\Promise deleteRestApiAsync(array $args = [])
|
51 |
+
* @method \Aws\Result deleteStage(array $args = [])
|
52 |
+
* @method \GuzzleHttp\Promise\Promise deleteStageAsync(array $args = [])
|
53 |
+
* @method \Aws\Result flushStageCache(array $args = [])
|
54 |
+
* @method \GuzzleHttp\Promise\Promise flushStageCacheAsync(array $args = [])
|
55 |
+
* @method \Aws\Result generateClientCertificate(array $args = [])
|
56 |
+
* @method \GuzzleHttp\Promise\Promise generateClientCertificateAsync(array $args = [])
|
57 |
+
* @method \Aws\Result getAccount(array $args = [])
|
58 |
+
* @method \GuzzleHttp\Promise\Promise getAccountAsync(array $args = [])
|
59 |
+
* @method \Aws\Result getApiKey(array $args = [])
|
60 |
+
* @method \GuzzleHttp\Promise\Promise getApiKeyAsync(array $args = [])
|
61 |
+
* @method \Aws\Result getApiKeys(array $args = [])
|
62 |
+
* @method \GuzzleHttp\Promise\Promise getApiKeysAsync(array $args = [])
|
63 |
+
* @method \Aws\Result getBasePathMapping(array $args = [])
|
64 |
+
* @method \GuzzleHttp\Promise\Promise getBasePathMappingAsync(array $args = [])
|
65 |
+
* @method \Aws\Result getBasePathMappings(array $args = [])
|
66 |
+
* @method \GuzzleHttp\Promise\Promise getBasePathMappingsAsync(array $args = [])
|
67 |
+
* @method \Aws\Result getClientCertificate(array $args = [])
|
68 |
+
* @method \GuzzleHttp\Promise\Promise getClientCertificateAsync(array $args = [])
|
69 |
+
* @method \Aws\Result getClientCertificates(array $args = [])
|
70 |
+
* @method \GuzzleHttp\Promise\Promise getClientCertificatesAsync(array $args = [])
|
71 |
+
* @method \Aws\Result getDeployment(array $args = [])
|
72 |
+
* @method \GuzzleHttp\Promise\Promise getDeploymentAsync(array $args = [])
|
73 |
+
* @method \Aws\Result getDeployments(array $args = [])
|
74 |
+
* @method \GuzzleHttp\Promise\Promise getDeploymentsAsync(array $args = [])
|
75 |
+
* @method \Aws\Result getDomainName(array $args = [])
|
76 |
+
* @method \GuzzleHttp\Promise\Promise getDomainNameAsync(array $args = [])
|
77 |
+
* @method \Aws\Result getDomainNames(array $args = [])
|
78 |
+
* @method \GuzzleHttp\Promise\Promise getDomainNamesAsync(array $args = [])
|
79 |
+
* @method \Aws\Result getIntegration(array $args = [])
|
80 |
+
* @method \GuzzleHttp\Promise\Promise getIntegrationAsync(array $args = [])
|
81 |
+
* @method \Aws\Result getIntegrationResponse(array $args = [])
|
82 |
+
* @method \GuzzleHttp\Promise\Promise getIntegrationResponseAsync(array $args = [])
|
83 |
+
* @method \Aws\Result getMethod(array $args = [])
|
84 |
+
* @method \GuzzleHttp\Promise\Promise getMethodAsync(array $args = [])
|
85 |
+
* @method \Aws\Result getMethodResponse(array $args = [])
|
86 |
+
* @method \GuzzleHttp\Promise\Promise getMethodResponseAsync(array $args = [])
|
87 |
+
* @method \Aws\Result getModel(array $args = [])
|
88 |
+
* @method \GuzzleHttp\Promise\Promise getModelAsync(array $args = [])
|
89 |
+
* @method \Aws\Result getModelTemplate(array $args = [])
|
90 |
+
* @method \GuzzleHttp\Promise\Promise getModelTemplateAsync(array $args = [])
|
91 |
+
* @method \Aws\Result getModels(array $args = [])
|
92 |
+
* @method \GuzzleHttp\Promise\Promise getModelsAsync(array $args = [])
|
93 |
+
* @method \Aws\Result getResource(array $args = [])
|
94 |
+
* @method \GuzzleHttp\Promise\Promise getResourceAsync(array $args = [])
|
95 |
+
* @method \Aws\Result getResources(array $args = [])
|
96 |
+
* @method \GuzzleHttp\Promise\Promise getResourcesAsync(array $args = [])
|
97 |
+
* @method \Aws\Result getRestApi(array $args = [])
|
98 |
+
* @method \GuzzleHttp\Promise\Promise getRestApiAsync(array $args = [])
|
99 |
+
* @method \Aws\Result getRestApis(array $args = [])
|
100 |
+
* @method \GuzzleHttp\Promise\Promise getRestApisAsync(array $args = [])
|
101 |
+
* @method \Aws\Result getSdk(array $args = [])
|
102 |
+
* @method \GuzzleHttp\Promise\Promise getSdkAsync(array $args = [])
|
103 |
+
* @method \Aws\Result getStage(array $args = [])
|
104 |
+
* @method \GuzzleHttp\Promise\Promise getStageAsync(array $args = [])
|
105 |
+
* @method \Aws\Result getStages(array $args = [])
|
106 |
+
* @method \GuzzleHttp\Promise\Promise getStagesAsync(array $args = [])
|
107 |
+
* @method \Aws\Result putIntegration(array $args = [])
|
108 |
+
* @method \GuzzleHttp\Promise\Promise putIntegrationAsync(array $args = [])
|
109 |
+
* @method \Aws\Result putIntegrationResponse(array $args = [])
|
110 |
+
* @method \GuzzleHttp\Promise\Promise putIntegrationResponseAsync(array $args = [])
|
111 |
+
* @method \Aws\Result putMethod(array $args = [])
|
112 |
+
* @method \GuzzleHttp\Promise\Promise putMethodAsync(array $args = [])
|
113 |
+
* @method \Aws\Result putMethodResponse(array $args = [])
|
114 |
+
* @method \GuzzleHttp\Promise\Promise putMethodResponseAsync(array $args = [])
|
115 |
+
* @method \Aws\Result testInvokeMethod(array $args = [])
|
116 |
+
* @method \GuzzleHttp\Promise\Promise testInvokeMethodAsync(array $args = [])
|
117 |
+
* @method \Aws\Result updateAccount(array $args = [])
|
118 |
+
* @method \GuzzleHttp\Promise\Promise updateAccountAsync(array $args = [])
|
119 |
+
* @method \Aws\Result updateApiKey(array $args = [])
|
120 |
+
* @method \GuzzleHttp\Promise\Promise updateApiKeyAsync(array $args = [])
|
121 |
+
* @method \Aws\Result updateBasePathMapping(array $args = [])
|
122 |
+
* @method \GuzzleHttp\Promise\Promise updateBasePathMappingAsync(array $args = [])
|
123 |
+
* @method \Aws\Result updateClientCertificate(array $args = [])
|
124 |
+
* @method \GuzzleHttp\Promise\Promise updateClientCertificateAsync(array $args = [])
|
125 |
+
* @method \Aws\Result updateDeployment(array $args = [])
|
126 |
+
* @method \GuzzleHttp\Promise\Promise updateDeploymentAsync(array $args = [])
|
127 |
+
* @method \Aws\Result updateDomainName(array $args = [])
|
128 |
+
* @method \GuzzleHttp\Promise\Promise updateDomainNameAsync(array $args = [])
|
129 |
+
* @method \Aws\Result updateIntegration(array $args = [])
|
130 |
+
* @method \GuzzleHttp\Promise\Promise updateIntegrationAsync(array $args = [])
|
131 |
+
* @method \Aws\Result updateIntegrationResponse(array $args = [])
|
132 |
+
* @method \GuzzleHttp\Promise\Promise updateIntegrationResponseAsync(array $args = [])
|
133 |
+
* @method \Aws\Result updateMethod(array $args = [])
|
134 |
+
* @method \GuzzleHttp\Promise\Promise updateMethodAsync(array $args = [])
|
135 |
+
* @method \Aws\Result updateMethodResponse(array $args = [])
|
136 |
+
* @method \GuzzleHttp\Promise\Promise updateMethodResponseAsync(array $args = [])
|
137 |
+
* @method \Aws\Result updateModel(array $args = [])
|
138 |
+
* @method \GuzzleHttp\Promise\Promise updateModelAsync(array $args = [])
|
139 |
+
* @method \Aws\Result updateResource(array $args = [])
|
140 |
+
* @method \GuzzleHttp\Promise\Promise updateResourceAsync(array $args = [])
|
141 |
+
* @method \Aws\Result updateRestApi(array $args = [])
|
142 |
+
* @method \GuzzleHttp\Promise\Promise updateRestApiAsync(array $args = [])
|
143 |
+
* @method \Aws\Result updateStage(array $args = [])
|
144 |
+
* @method \GuzzleHttp\Promise\Promise updateStageAsync(array $args = [])
|
145 |
+
*/
|
146 |
+
class ApiGatewayClient extends AwsClient
|
147 |
+
{
|
148 |
+
public function __construct(array $args)
|
149 |
+
{
|
150 |
+
parent::__construct($args);
|
151 |
+
$stack = $this->getHandlerList();
|
152 |
+
$stack->appendBuild([__CLASS__, '_add_accept_header']);
|
153 |
+
}
|
154 |
+
|
155 |
+
public static function _add_accept_header(callable $handler)
|
156 |
+
{
|
157 |
+
return function (
|
158 |
+
CommandInterface $command,
|
159 |
+
RequestInterface $request
|
160 |
+
) use ($handler) {
|
161 |
+
$request = $request->withHeader('Accept', 'application/json');
|
162 |
+
|
163 |
+
return $handler($command, $request);
|
164 |
+
};
|
165 |
+
}
|
166 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/ApiGateway/Exception/ApiGatewayException.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\ApiGateway\Exception;
|
3 |
+
|
4 |
+
use Aws\Exception\AwsException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Represents an error interacting with the **AWS API Gateway** service.
|
8 |
+
*/
|
9 |
+
class ApiGatewayException extends AwsException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/AwsClient.php
ADDED
@@ -0,0 +1,351 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws;
|
3 |
+
|
4 |
+
use Aws\Api\ApiProvider;
|
5 |
+
use Aws\Api\DocModel;
|
6 |
+
use Aws\Api\Service;
|
7 |
+
use Aws\Signature\SignatureProvider;
|
8 |
+
use GuzzleHttp\Psr7\Uri;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Default AWS client implementation
|
12 |
+
*/
|
13 |
+
class AwsClient implements AwsClientInterface
|
14 |
+
{
|
15 |
+
/** @var string */
|
16 |
+
private $region;
|
17 |
+
|
18 |
+
/** @var string */
|
19 |
+
private $endpoint;
|
20 |
+
|
21 |
+
/** @var Service */
|
22 |
+
private $api;
|
23 |
+
|
24 |
+
/** @var callable */
|
25 |
+
private $signatureProvider;
|
26 |
+
|
27 |
+
/** @var callable */
|
28 |
+
private $credentialProvider;
|
29 |
+
|
30 |
+
/** @var HandlerList */
|
31 |
+
private $handlerList;
|
32 |
+
|
33 |
+
/** @var array*/
|
34 |
+
private $defaultRequestOptions;
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Get an array of client constructor arguments used by the client.
|
38 |
+
*
|
39 |
+
* @return array
|
40 |
+
*/
|
41 |
+
public static function getArguments()
|
42 |
+
{
|
43 |
+
return ClientResolver::getDefaultArguments();
|
44 |
+
}
|
45 |
+
|
46 |
+
/**
|
47 |
+
* The client constructor accepts the following options:
|
48 |
+
*
|
49 |
+
* - api_provider: (callable) An optional PHP callable that accepts a
|
50 |
+
* type, service, and version argument, and returns an array of
|
51 |
+
* corresponding configuration data. The type value can be one of api,
|
52 |
+
* waiter, or paginator.
|
53 |
+
* - credentials:
|
54 |
+
* (Aws\Credentials\CredentialsInterface|array|bool|callable) Specifies
|
55 |
+
* the credentials used to sign requests. Provide an
|
56 |
+
* Aws\Credentials\CredentialsInterface object, an associative array of
|
57 |
+
* "key", "secret", and an optional "token" key, `false` to use null
|
58 |
+
* credentials, or a callable credentials provider used to create
|
59 |
+
* credentials or return null. See Aws\Credentials\CredentialProvider for
|
60 |
+
* a list of built-in credentials providers. If no credentials are
|
61 |
+
* provided, the SDK will attempt to load them from the environment.
|
62 |
+
* - debug: (bool|array) Set to true to display debug information when
|
63 |
+
* sending requests. Alternatively, you can provide an associative array
|
64 |
+
* with the following keys: logfn: (callable) Function that is invoked
|
65 |
+
* with log messages; stream_size: (int) When the size of a stream is
|
66 |
+
* greater than this number, the stream data will not be logged (set to
|
67 |
+
* "0" to not log any stream data); scrub_auth: (bool) Set to false to
|
68 |
+
* disable the scrubbing of auth data from the logged messages; http:
|
69 |
+
* (bool) Set to false to disable the "debug" feature of lower level HTTP
|
70 |
+
* adapters (e.g., verbose curl output).
|
71 |
+
* - endpoint: (string) The full URI of the webservice. This is only
|
72 |
+
* required when connecting to a custom endpoint (e.g., a local version
|
73 |
+
* of S3).
|
74 |
+
* - endpoint_provider: (callable) An optional PHP callable that
|
75 |
+
* accepts a hash of options including a "service" and "region" key and
|
76 |
+
* returns NULL or a hash of endpoint data, of which the "endpoint" key
|
77 |
+
* is required. See Aws\Endpoint\EndpointProvider for a list of built-in
|
78 |
+
* providers.
|
79 |
+
* - handler: (callable) A handler that accepts a command object,
|
80 |
+
* request object and returns a promise that is fulfilled with an
|
81 |
+
* Aws\ResultInterface object or rejected with an
|
82 |
+
* Aws\Exception\AwsException. A handler does not accept a next handler
|
83 |
+
* as it is terminal and expected to fulfill a command. If no handler is
|
84 |
+
* provided, a default Guzzle handler will be utilized.
|
85 |
+
* - http: (array, default=array(0)) Set to an array of SDK request
|
86 |
+
* options to apply to each request (e.g., proxy, verify, etc.).
|
87 |
+
* - http_handler: (callable) An HTTP handler is a function that
|
88 |
+
* accepts a PSR-7 request object and returns a promise that is fulfilled
|
89 |
+
* with a PSR-7 response object or rejected with an array of exception
|
90 |
+
* data. NOTE: This option supersedes any provided "handler" option.
|
91 |
+
* - profile: (string) Allows you to specify which profile to use when
|
92 |
+
* credentials are created from the AWS credentials file in your HOME
|
93 |
+
* directory. This setting overrides the AWS_PROFILE environment
|
94 |
+
* variable. Note: Specifying "profile" will cause the "credentials" key
|
95 |
+
* to be ignored.
|
96 |
+
* - region: (string, required) Region to connect to. See
|
97 |
+
* http://docs.aws.amazon.com/general/latest/gr/rande.html for a list of
|
98 |
+
* available regions.
|
99 |
+
* - retries: (int, default=int(3)) Configures the maximum number of
|
100 |
+
* allowed retries for a client (pass 0 to disable retries).
|
101 |
+
* - scheme: (string, default=string(5) "https") URI scheme to use when
|
102 |
+
* connecting connect. The SDK will utilize "https" endpoints (i.e.,
|
103 |
+
* utilize SSL/TLS connections) by default. You can attempt to connect to
|
104 |
+
* a service over an unencrypted "http" endpoint by setting ``scheme`` to
|
105 |
+
* "http".
|
106 |
+
* - signature_provider: (callable) A callable that accepts a signature
|
107 |
+
* version name (e.g., "v4"), a service name, and region, and
|
108 |
+
* returns a SignatureInterface object or null. This provider is used to
|
109 |
+
* create signers utilized by the client. See
|
110 |
+
* Aws\Signature\SignatureProvider for a list of built-in providers
|
111 |
+
* - signature_version: (string) A string representing a custom
|
112 |
+
* signature version to use with a service (e.g., v4). Note that
|
113 |
+
* per/operation signature version MAY override this requested signature
|
114 |
+
* version.
|
115 |
+
* - validate: (bool, default=bool(true)) Set to false to disable
|
116 |
+
* client-side parameter validation.
|
117 |
+
* - version: (string, required) The version of the webservice to
|
118 |
+
* utilize (e.g., 2006-03-01).
|
119 |
+
*
|
120 |
+
* @param array $args Client configuration arguments.
|
121 |
+
*
|
122 |
+
* @throws \InvalidArgumentException if any required options are missing or
|
123 |
+
* the service is not supported.
|
124 |
+
*/
|
125 |
+
public function __construct(array $args)
|
126 |
+
{
|
127 |
+
list($service, $exceptionClass) = $this->parseClass();
|
128 |
+
if (!isset($args['service'])) {
|
129 |
+
$args['service'] = manifest($service)['endpoint'];
|
130 |
+
}
|
131 |
+
if (!isset($args['exception_class'])) {
|
132 |
+
$args['exception_class'] = $exceptionClass;
|
133 |
+
}
|
134 |
+
|
135 |
+
$this->handlerList = new HandlerList();
|
136 |
+
$resolver = new ClientResolver(static::getArguments());
|
137 |
+
$config = $resolver->resolve($args, $this->handlerList);
|
138 |
+
$this->api = $config['api'];
|
139 |
+
$this->signatureProvider = $config['signature_provider'];
|
140 |
+
$this->endpoint = new Uri($config['endpoint']);
|
141 |
+
$this->credentialProvider = $config['credentials'];
|
142 |
+
$this->region = isset($config['region']) ? $config['region'] : null;
|
143 |
+
$this->config = $config['config'];
|
144 |
+
$this->defaultRequestOptions = $config['http'];
|
145 |
+
$this->addSignatureMiddleware();
|
146 |
+
|
147 |
+
if (isset($args['with_resolved'])) {
|
148 |
+
$args['with_resolved']($config);
|
149 |
+
}
|
150 |
+
}
|
151 |
+
|
152 |
+
public function getHandlerList()
|
153 |
+
{
|
154 |
+
return $this->handlerList;
|
155 |
+
}
|
156 |
+
|
157 |
+
public function __call($name, array $args)
|
158 |
+
{
|
159 |
+
$params = isset($args[0]) ? $args[0] : [];
|
160 |
+
|
161 |
+
if (substr($name, -5) === 'Async') {
|
162 |
+
return $this->executeAsync(
|
163 |
+
$this->getCommand(substr($name, 0, -5), $params)
|
164 |
+
);
|
165 |
+
}
|
166 |
+
|
167 |
+
return $this->execute($this->getCommand($name, $params));
|
168 |
+
}
|
169 |
+
|
170 |
+
public function getConfig($option = null)
|
171 |
+
{
|
172 |
+
return $option === null
|
173 |
+
? $this->config
|
174 |
+
: (isset($this->config[$option])
|
175 |
+
? $this->config[$option]
|
176 |
+
: null);
|
177 |
+
}
|
178 |
+
|
179 |
+
public function getCredentials()
|
180 |
+
{
|
181 |
+
$fn = $this->credentialProvider;
|
182 |
+
return $fn();
|
183 |
+
}
|
184 |
+
|
185 |
+
public function getEndpoint()
|
186 |
+
{
|
187 |
+
return $this->endpoint;
|
188 |
+
}
|
189 |
+
|
190 |
+
public function getRegion()
|
191 |
+
{
|
192 |
+
return $this->region;
|
193 |
+
}
|
194 |
+
|
195 |
+
public function getApi()
|
196 |
+
{
|
197 |
+
return $this->api;
|
198 |
+
}
|
199 |
+
|
200 |
+
public function execute(CommandInterface $command)
|
201 |
+
{
|
202 |
+
return $this->executeAsync($command)->wait();
|
203 |
+
}
|
204 |
+
|
205 |
+
public function executeAsync(CommandInterface $command)
|
206 |
+
{
|
207 |
+
$handler = $command->getHandlerList()->resolve();
|
208 |
+
return $handler($command);
|
209 |
+
}
|
210 |
+
|
211 |
+
public function getCommand($name, array $args = [])
|
212 |
+
{
|
213 |
+
// Fail fast if the command cannot be found in the description.
|
214 |
+
if (!isset($this->api['operations'][$name])) {
|
215 |
+
$name = ucfirst($name);
|
216 |
+
if (!isset($this->api['operations'][$name])) {
|
217 |
+
throw new \InvalidArgumentException("Operation not found: $name");
|
218 |
+
}
|
219 |
+
}
|
220 |
+
|
221 |
+
if (!isset($args['@http'])) {
|
222 |
+
$args['@http'] = $this->defaultRequestOptions;
|
223 |
+
} else {
|
224 |
+
$args['@http'] += $this->defaultRequestOptions;
|
225 |
+
}
|
226 |
+
|
227 |
+
return new Command($name, $args, clone $this->getHandlerList());
|
228 |
+
}
|
229 |
+
|
230 |
+
public function getIterator($name, array $args = [])
|
231 |
+
{
|
232 |
+
$config = $this->api->getPaginatorConfig($name);
|
233 |
+
if (!$config['result_key']) {
|
234 |
+
throw new \UnexpectedValueException(sprintf(
|
235 |
+
'There are no resources to iterate for the %s operation of %s',
|
236 |
+
$name, $this->api['serviceFullName']
|
237 |
+
));
|
238 |
+
}
|
239 |
+
|
240 |
+
$key = is_array($config['result_key'])
|
241 |
+
? $config['result_key'][0]
|
242 |
+
: $config['result_key'];
|
243 |
+
|
244 |
+
if ($config['output_token'] && $config['input_token']) {
|
245 |
+
return $this->getPaginator($name, $args)->search($key);
|
246 |
+
}
|
247 |
+
|
248 |
+
$result = $this->execute($this->getCommand($name, $args))->search($key);
|
249 |
+
|
250 |
+
return new \ArrayIterator((array) $result);
|
251 |
+
}
|
252 |
+
|
253 |
+
public function getPaginator($name, array $args = [])
|
254 |
+
{
|
255 |
+
$config = $this->api->getPaginatorConfig($name);
|
256 |
+
|
257 |
+
return new ResultPaginator($this, $name, $args, $config);
|
258 |
+
}
|
259 |
+
|
260 |
+
public function waitUntil($name, array $args = [])
|
261 |
+
{
|
262 |
+
return $this->getWaiter($name, $args)->promise()->wait();
|
263 |
+
}
|
264 |
+
|
265 |
+
public function getWaiter($name, array $args = [])
|
266 |
+
{
|
267 |
+
$config = isset($args['@waiter']) ? $args['@waiter'] : [];
|
268 |
+
$config += $this->api->getWaiterConfig($name);
|
269 |
+
|
270 |
+
return new Waiter($this, $name, $args, $config);
|
271 |
+
}
|
272 |
+
|
273 |
+
/**
|
274 |
+
* Get the signature_provider function of the client.
|
275 |
+
*
|
276 |
+
* @return callable
|
277 |
+
*/
|
278 |
+
final protected function getSignatureProvider()
|
279 |
+
{
|
280 |
+
return $this->signatureProvider;
|
281 |
+
}
|
282 |
+
|
283 |
+
/**
|
284 |
+
* Parse the class name and setup the custom exception class of the client
|
285 |
+
* and return the "service" name of the client and "exception_class".
|
286 |
+
*
|
287 |
+
* @return array
|
288 |
+
*/
|
289 |
+
private function parseClass()
|
290 |
+
{
|
291 |
+
$klass = get_class($this);
|
292 |
+
|
293 |
+
if ($klass === __CLASS__) {
|
294 |
+
return ['', 'Aws\Exception\AwsException'];
|
295 |
+
}
|
296 |
+
|
297 |
+
$service = substr($klass, strrpos($klass, '\\') + 1, -6);
|
298 |
+
|
299 |
+
return [
|
300 |
+
strtolower($service),
|
301 |
+
"Aws\\{$service}\\Exception\\{$service}Exception"
|
302 |
+
];
|
303 |
+
}
|
304 |
+
|
305 |
+
private function addSignatureMiddleware()
|
306 |
+
{
|
307 |
+
// Sign requests. This may need to be modified later to support
|
308 |
+
// variable signatures per/operation.
|
309 |
+
$this->handlerList->appendSign(
|
310 |
+
Middleware::signer(
|
311 |
+
$this->credentialProvider,
|
312 |
+
constantly(SignatureProvider::resolve(
|
313 |
+
$this->signatureProvider,
|
314 |
+
$this->config['signature_version'],
|
315 |
+
$this->api->getSigningName(),
|
316 |
+
$this->region
|
317 |
+
))
|
318 |
+
),
|
319 |
+
'signer'
|
320 |
+
);
|
321 |
+
}
|
322 |
+
|
323 |
+
/**
|
324 |
+
* Returns a service model and doc model with any necessary changes
|
325 |
+
* applied.
|
326 |
+
*
|
327 |
+
* @param array $api Array of service data being documented.
|
328 |
+
* @param array $docs Array of doc model data.
|
329 |
+
*
|
330 |
+
* @return array Tuple containing a [Service, DocModel]
|
331 |
+
*
|
332 |
+
* @internal This should only used to document the service API.
|
333 |
+
* @codeCoverageIgnore
|
334 |
+
*/
|
335 |
+
public static function applyDocFilters(array $api, array $docs)
|
336 |
+
{
|
337 |
+
return [
|
338 |
+
new Service($api, ApiProvider::defaultProvider()),
|
339 |
+
new DocModel($docs)
|
340 |
+
];
|
341 |
+
}
|
342 |
+
|
343 |
+
/**
|
344 |
+
* @deprecated
|
345 |
+
* @return static
|
346 |
+
*/
|
347 |
+
public static function factory(array $config = [])
|
348 |
+
{
|
349 |
+
return new static($config);
|
350 |
+
}
|
351 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/AwsClientInterface.php
ADDED
@@ -0,0 +1,169 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws;
|
3 |
+
|
4 |
+
use Psr\Http\Message\UriInterface;
|
5 |
+
use GuzzleHttp\Promise\PromiseInterface;
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Represents an AWS client.
|
9 |
+
*/
|
10 |
+
interface AwsClientInterface
|
11 |
+
{
|
12 |
+
/**
|
13 |
+
* Creates and executes a command for an operation by name.
|
14 |
+
*
|
15 |
+
* Suffixing an operation name with "Async" will return a
|
16 |
+
* promise that can be used to execute commands asynchronously.
|
17 |
+
*
|
18 |
+
* @param string $name Name of the command to execute.
|
19 |
+
* @param array $arguments Arguments to pass to the getCommand method.
|
20 |
+
*
|
21 |
+
* @return ResultInterface
|
22 |
+
* @throws \Exception
|
23 |
+
*/
|
24 |
+
public function __call($name, array $arguments);
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Create a command for an operation name.
|
28 |
+
*
|
29 |
+
* Special keys may be set on the command to control how it behaves,
|
30 |
+
* including:
|
31 |
+
*
|
32 |
+
* - @http: Associative array of transfer specific options to apply to the
|
33 |
+
* request that is serialized for this command. Available keys include
|
34 |
+
* "proxy", "verify", "timeout", "connect_timeout", "debug", "delay", and
|
35 |
+
* "headers".
|
36 |
+
*
|
37 |
+
* @param string $name Name of the operation to use in the command
|
38 |
+
* @param array $args Arguments to pass to the command
|
39 |
+
*
|
40 |
+
* @return CommandInterface
|
41 |
+
* @throws \InvalidArgumentException if no command can be found by name
|
42 |
+
*/
|
43 |
+
public function getCommand($name, array $args = []);
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Execute a single command.
|
47 |
+
*
|
48 |
+
* @param CommandInterface $command Command to execute
|
49 |
+
*
|
50 |
+
* @return ResultInterface
|
51 |
+
* @throws \Exception
|
52 |
+
*/
|
53 |
+
public function execute(CommandInterface $command);
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Execute a command asynchronously.
|
57 |
+
*
|
58 |
+
* @param CommandInterface $command Command to execute
|
59 |
+
*
|
60 |
+
* @return \GuzzleHttp\Promise\PromiseInterface
|
61 |
+
*/
|
62 |
+
public function executeAsync(CommandInterface $command);
|
63 |
+
|
64 |
+
/**
|
65 |
+
* Returns a promise that is fulfilled with an
|
66 |
+
* {@see \Aws\Credentials\CredentialsInterface} object.
|
67 |
+
*
|
68 |
+
* If you need the credentials synchronously, then call the wait() method
|
69 |
+
* on the returned promise.
|
70 |
+
*
|
71 |
+
* @return PromiseInterface
|
72 |
+
*/
|
73 |
+
public function getCredentials();
|
74 |
+
|
75 |
+
/**
|
76 |
+
* Get the region to which the client is configured to send requests.
|
77 |
+
*
|
78 |
+
* @return string
|
79 |
+
*/
|
80 |
+
public function getRegion();
|
81 |
+
|
82 |
+
/**
|
83 |
+
* Gets the default endpoint, or base URL, used by the client.
|
84 |
+
*
|
85 |
+
* @return UriInterface
|
86 |
+
*/
|
87 |
+
public function getEndpoint();
|
88 |
+
|
89 |
+
/**
|
90 |
+
* Get the service description associated with the client.
|
91 |
+
*
|
92 |
+
* @return \Aws\Api\Service
|
93 |
+
*/
|
94 |
+
public function getApi();
|
95 |
+
|
96 |
+
/**
|
97 |
+
* Get a client configuration value.
|
98 |
+
*
|
99 |
+
* @param string|null $option The option to retrieve. Pass null to retrieve
|
100 |
+
* all options.
|
101 |
+
* @return mixed|null
|
102 |
+
*/
|
103 |
+
public function getConfig($option = null);
|
104 |
+
|
105 |
+
/**
|
106 |
+
* Get the handler list used to transfer commands.
|
107 |
+
*
|
108 |
+
* This list can be modified to add middleware or to change the underlying
|
109 |
+
* handler used to send HTTP requests.
|
110 |
+
*
|
111 |
+
* @return HandlerList
|
112 |
+
*/
|
113 |
+
public function getHandlerList();
|
114 |
+
|
115 |
+
/**
|
116 |
+
* Get a resource iterator for the specified operation.
|
117 |
+
*
|
118 |
+
* @param string $name Name of the iterator to retrieve.
|
119 |
+
* @param array $args Command arguments to use with each command.
|
120 |
+
*
|
121 |
+
* @return \Iterator
|
122 |
+
* @throws \UnexpectedValueException if the iterator config is invalid.
|
123 |
+
*/
|
124 |
+
public function getIterator($name, array $args = []);
|
125 |
+
|
126 |
+
/**
|
127 |
+
* Get a result paginator for the specified operation.
|
128 |
+
*
|
129 |
+
* @param string $name Name of the operation used for iterator
|
130 |
+
* @param array $args Command args to be used with each command
|
131 |
+
*
|
132 |
+
* @return \Aws\ResultPaginator
|
133 |
+
* @throws \UnexpectedValueException if the iterator config is invalid.
|
134 |
+
*/
|
135 |
+
public function getPaginator($name, array $args = []);
|
136 |
+
|
137 |
+
/**
|
138 |
+
* Wait until a resource is in a particular state.
|
139 |
+
*
|
140 |
+
* @param string|callable $name Name of the waiter that defines the wait
|
141 |
+
* configuration and conditions.
|
142 |
+
* @param array $args Args to be used with each command executed
|
143 |
+
* by the waiter. Waiter configuration options
|
144 |
+
* can be provided in an associative array in
|
145 |
+
* the @waiter key.
|
146 |
+
* @return void
|
147 |
+
* @throws \UnexpectedValueException if the waiter is invalid.
|
148 |
+
*/
|
149 |
+
public function waitUntil($name, array $args = []);
|
150 |
+
|
151 |
+
/**
|
152 |
+
* Get a waiter that waits until a resource is in a particular state.
|
153 |
+
*
|
154 |
+
* Retrieving a waiter can be useful when you wish to wait asynchronously:
|
155 |
+
*
|
156 |
+
* $waiter = $client->getWaiter('foo', ['bar' => 'baz']);
|
157 |
+
* $waiter->promise()->then(function () { echo 'Done!'; });
|
158 |
+
*
|
159 |
+
* @param string|callable $name Name of the waiter that defines the wait
|
160 |
+
* configuration and conditions.
|
161 |
+
* @param array $args Args to be used with each command executed
|
162 |
+
* by the waiter. Waiter configuration options
|
163 |
+
* can be provided in an associative array in
|
164 |
+
* the @waiter key.
|
165 |
+
* @return \Aws\Waiter
|
166 |
+
* @throws \UnexpectedValueException if the waiter is invalid.
|
167 |
+
*/
|
168 |
+
public function getWaiter($name, array $args = []);
|
169 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/CacheInterface.php
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Represents a simple cache interface.
|
6 |
+
*/
|
7 |
+
interface CacheInterface
|
8 |
+
{
|
9 |
+
/**
|
10 |
+
* Get a cache item by key.
|
11 |
+
*
|
12 |
+
* @param string $key Key to retrieve.
|
13 |
+
*
|
14 |
+
* @return mixed|null Returns the value or null if not found.
|
15 |
+
*/
|
16 |
+
public function get($key);
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Set a cache key value.
|
20 |
+
*
|
21 |
+
* @param string $key Key to set
|
22 |
+
* @param mixed $value Value to set.
|
23 |
+
* @param int $ttl Number of seconds the item is allowed to live. Set
|
24 |
+
* to 0 to allow an unlimited lifetime.
|
25 |
+
*/
|
26 |
+
public function set($key, $value, $ttl = 0);
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Remove a cache key.
|
30 |
+
*
|
31 |
+
* @param string $key Key to remove.
|
32 |
+
*/
|
33 |
+
public function remove($key);
|
34 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/ClientResolver.php
ADDED
@@ -0,0 +1,548 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws;
|
3 |
+
|
4 |
+
use Aws\Api\Validator;
|
5 |
+
use Aws\Api\ApiProvider;
|
6 |
+
use Aws\Api\Service;
|
7 |
+
use Aws\Credentials\Credentials;
|
8 |
+
use Aws\Credentials\CredentialsInterface;
|
9 |
+
use Aws\Signature\SignatureProvider;
|
10 |
+
use Aws\Endpoint\EndpointProvider;
|
11 |
+
use Aws\Credentials\CredentialProvider;
|
12 |
+
use GuzzleHttp\Promise;
|
13 |
+
use InvalidArgumentException as IAE;
|
14 |
+
use Psr\Http\Message\RequestInterface;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* @internal Resolves a hash of client arguments to construct a client.
|
18 |
+
*/
|
19 |
+
class ClientResolver
|
20 |
+
{
|
21 |
+
/** @var array */
|
22 |
+
private $argDefinitions;
|
23 |
+
|
24 |
+
/** @var array Map of types to a corresponding function */
|
25 |
+
private static $typeMap = [
|
26 |
+
'resource' => 'is_resource',
|
27 |
+
'callable' => 'is_callable',
|
28 |
+
'int' => 'is_int',
|
29 |
+
'bool' => 'is_bool',
|
30 |
+
'string' => 'is_string',
|
31 |
+
'object' => 'is_object',
|
32 |
+
'array' => 'is_array',
|
33 |
+
];
|
34 |
+
|
35 |
+
private static $defaultArgs = [
|
36 |
+
'service' => [
|
37 |
+
'type' => 'value',
|
38 |
+
'valid' => ['string'],
|
39 |
+
'doc' => 'Name of the service to utilize. This value will be supplied by default when using one of the SDK clients (e.g., Aws\\S3\\S3Client).',
|
40 |
+
'required' => true,
|
41 |
+
'internal' => true
|
42 |
+
],
|
43 |
+
'exception_class' => [
|
44 |
+
'type' => 'value',
|
45 |
+
'valid' => ['string'],
|
46 |
+
'doc' => 'Exception class to create when an error occurs.',
|
47 |
+
'default' => 'Aws\Exception\AwsException',
|
48 |
+
'internal' => true
|
49 |
+
],
|
50 |
+
'scheme' => [
|
51 |
+
'type' => 'value',
|
52 |
+
'valid' => ['string'],
|
53 |
+
'default' => 'https',
|
54 |
+
'doc' => 'URI scheme to use when connecting connect. The SDK will utilize "https" endpoints (i.e., utilize SSL/TLS connections) by default. You can attempt to connect to a service over an unencrypted "http" endpoint by setting ``scheme`` to "http".',
|
55 |
+
],
|
56 |
+
'endpoint' => [
|
57 |
+
'type' => 'value',
|
58 |
+
'valid' => ['string'],
|
59 |
+
'doc' => 'The full URI of the webservice. This is only required when connecting to a custom endpoint (e.g., a local version of S3).',
|
60 |
+
'fn' => [__CLASS__, '_apply_endpoint'],
|
61 |
+
],
|
62 |
+
'region' => [
|
63 |
+
'type' => 'value',
|
64 |
+
'valid' => ['string'],
|
65 |
+
'required' => [__CLASS__, '_missing_region'],
|
66 |
+
'doc' => 'Region to connect to. See http://docs.aws.amazon.com/general/latest/gr/rande.html for a list of available regions.',
|
67 |
+
],
|
68 |
+
'version' => [
|
69 |
+
'type' => 'value',
|
70 |
+
'valid' => ['string'],
|
71 |
+
'required' => [__CLASS__, '_missing_version'],
|
72 |
+
'doc' => 'The version of the webservice to utilize (e.g., 2006-03-01).',
|
73 |
+
],
|
74 |
+
'signature_provider' => [
|
75 |
+
'type' => 'value',
|
76 |
+
'valid' => ['callable'],
|
77 |
+
'doc' => 'A callable that accepts a signature version name (e.g., "v4"), a service name, and region, and returns a SignatureInterface object or null. This provider is used to create signers utilized by the client. See Aws\\Signature\\SignatureProvider for a list of built-in providers',
|
78 |
+
'default' => [__CLASS__, '_default_signature_provider'],
|
79 |
+
],
|
80 |
+
'endpoint_provider' => [
|
81 |
+
'type' => 'value',
|
82 |
+
'valid' => ['callable'],
|
83 |
+
'fn' => [__CLASS__, '_apply_endpoint_provider'],
|
84 |
+
'doc' => 'An optional PHP callable that accepts a hash of options including a "service" and "region" key and returns NULL or a hash of endpoint data, of which the "endpoint" key is required. See Aws\\Endpoint\\EndpointProvider for a list of built-in providers.',
|
85 |
+
'default' => [__CLASS__, '_default_endpoint_provider'],
|
86 |
+
],
|
87 |
+
'api_provider' => [
|
88 |
+
'type' => 'value',
|
89 |
+
'valid' => ['callable'],
|
90 |
+
'doc' => 'An optional PHP callable that accepts a type, service, and version argument, and returns an array of corresponding configuration data. The type value can be one of api, waiter, or paginator.',
|
91 |
+
'fn' => [__CLASS__, '_apply_api_provider'],
|
92 |
+
'default' => [ApiProvider::class, 'defaultProvider'],
|
93 |
+
],
|
94 |
+
'signature_version' => [
|
95 |
+
'type' => 'config',
|
96 |
+
'valid' => ['string'],
|
97 |
+
'doc' => 'A string representing a custom signature version to use with a service (e.g., v4). Note that per/operation signature version MAY override this requested signature version.',
|
98 |
+
'default' => [__CLASS__, '_default_signature_version'],
|
99 |
+
],
|
100 |
+
'profile' => [
|
101 |
+
'type' => 'config',
|
102 |
+
'valid' => ['string'],
|
103 |
+
'doc' => 'Allows you to specify which profile to use when credentials are created from the AWS credentials file in your HOME directory. This setting overrides the AWS_PROFILE environment variable. Note: Specifying "profile" will cause the "credentials" key to be ignored.',
|
104 |
+
'fn' => [__CLASS__, '_apply_profile'],
|
105 |
+
],
|
106 |
+
'credentials' => [
|
107 |
+
'type' => 'value',
|
108 |
+
'valid' => [CredentialsInterface::class, CacheInterface::class, 'array', 'bool', 'callable'],
|
109 |
+
'doc' => 'Specifies the credentials used to sign requests. Provide an Aws\Credentials\CredentialsInterface object, an associative array of "key", "secret", and an optional "token" key, `false` to use null credentials, or a callable credentials provider used to create credentials or return null. See Aws\\Credentials\\CredentialProvider for a list of built-in credentials providers. If no credentials are provided, the SDK will attempt to load them from the environment.',
|
110 |
+
'fn' => [__CLASS__, '_apply_credentials'],
|
111 |
+
'default' => [CredentialProvider::class, 'defaultProvider'],
|
112 |
+
],
|
113 |
+
'retries' => [
|
114 |
+
'type' => 'value',
|
115 |
+
'valid' => ['int'],
|
116 |
+
'doc' => 'Configures the maximum number of allowed retries for a client (pass 0 to disable retries). ',
|
117 |
+
'fn' => [__CLASS__, '_apply_retries'],
|
118 |
+
'default' => 3,
|
119 |
+
],
|
120 |
+
'validate' => [
|
121 |
+
'type' => 'value',
|
122 |
+
'valid' => ['bool'],
|
123 |
+
'default' => true,
|
124 |
+
'doc' => 'Set to false to disable client-side parameter validation.',
|
125 |
+
'fn' => [__CLASS__, '_apply_validate'],
|
126 |
+
],
|
127 |
+
'debug' => [
|
128 |
+
'type' => 'value',
|
129 |
+
'valid' => ['bool', 'array'],
|
130 |
+
'doc' => 'Set to true to display debug information when sending requests. Alternatively, you can provide an associative array with the following keys: logfn: (callable) Function that is invoked with log messages; stream_size: (int) When the size of a stream is greater than this number, the stream data will not be logged (set to "0" to not log any stream data); scrub_auth: (bool) Set to false to disable the scrubbing of auth data from the logged messages; http: (bool) Set to false to disable the "debug" feature of lower level HTTP adapters (e.g., verbose curl output).',
|
131 |
+
'fn' => [__CLASS__, '_apply_debug'],
|
132 |
+
],
|
133 |
+
'http' => [
|
134 |
+
'type' => 'value',
|
135 |
+
'valid' => ['array'],
|
136 |
+
'default' => [],
|
137 |
+
'doc' => 'Set to an array of SDK request options to apply to each request (e.g., proxy, verify, etc.).',
|
138 |
+
],
|
139 |
+
'http_handler' => [
|
140 |
+
'type' => 'value',
|
141 |
+
'valid' => ['callable'],
|
142 |
+
'doc' => 'An HTTP handler is a function that accepts a PSR-7 request object and returns a promise that is fulfilled with a PSR-7 response object or rejected with an array of exception data. NOTE: This option supersedes any provided "handler" option.',
|
143 |
+
'fn' => [__CLASS__, '_apply_http_handler']
|
144 |
+
],
|
145 |
+
'handler' => [
|
146 |
+
'type' => 'value',
|
147 |
+
'valid' => ['callable'],
|
148 |
+
'doc' => 'A handler that accepts a command object, request object and returns a promise that is fulfilled with an Aws\ResultInterface object or rejected with an Aws\Exception\AwsException. A handler does not accept a next handler as it is terminal and expected to fulfill a command. If no handler is provided, a default Guzzle handler will be utilized.',
|
149 |
+
'fn' => [__CLASS__, '_apply_handler'],
|
150 |
+
'default' => [__CLASS__, '_default_handler']
|
151 |
+
],
|
152 |
+
'ua_append' => [
|
153 |
+
'type' => 'value',
|
154 |
+
'valid' => ['string', 'array'],
|
155 |
+
'doc' => 'Provide a string or array of strings to send in the User-Agent header.',
|
156 |
+
'fn' => [__CLASS__, '_apply_user_agent'],
|
157 |
+
'default' => [],
|
158 |
+
],
|
159 |
+
];
|
160 |
+
|
161 |
+
/**
|
162 |
+
* Gets an array of default client arguments, each argument containing a
|
163 |
+
* hash of the following:
|
164 |
+
*
|
165 |
+
* - type: (string, required) option type described as follows:
|
166 |
+
* - value: The default option type.
|
167 |
+
* - config: The provided value is made available in the client's
|
168 |
+
* getConfig() method.
|
169 |
+
* - valid: (array, required) Valid PHP types or class names. Note: null
|
170 |
+
* is not an allowed type.
|
171 |
+
* - required: (bool, callable) Whether or not the argument is required.
|
172 |
+
* Provide a function that accepts an array of arguments and returns a
|
173 |
+
* string to provide a custom error message.
|
174 |
+
* - default: (mixed) The default value of the argument if not provided. If
|
175 |
+
* a function is provided, then it will be invoked to provide a default
|
176 |
+
* value. The function is provided the array of options and is expected
|
177 |
+
* to return the default value of the option.
|
178 |
+
* - doc: (string) The argument documentation string.
|
179 |
+
* - fn: (callable) Function used to apply the argument. The function
|
180 |
+
* accepts the provided value, array of arguments by reference, and an
|
181 |
+
* event emitter.
|
182 |
+
*
|
183 |
+
* Note: Order is honored and important when applying arguments.
|
184 |
+
*
|
185 |
+
* @return array
|
186 |
+
*/
|
187 |
+
public static function getDefaultArguments()
|
188 |
+
{
|
189 |
+
return self::$defaultArgs;
|
190 |
+
}
|
191 |
+
|
192 |
+
/**
|
193 |
+
* @param array $argDefinitions Client arguments.
|
194 |
+
*/
|
195 |
+
public function __construct(array $argDefinitions)
|
196 |
+
{
|
197 |
+
$this->argDefinitions = $argDefinitions;
|
198 |
+
}
|
199 |
+
|
200 |
+
/**
|
201 |
+
* Resolves client configuration options and attached event listeners.
|
202 |
+
*
|
203 |
+
* @param array $args Provided constructor arguments.
|
204 |
+
* @param HandlerList $list Handler list to augment.
|
205 |
+
*
|
206 |
+
* @return array Returns the array of provided options.
|
207 |
+
* @throws \InvalidArgumentException
|
208 |
+
* @see Aws\AwsClient::__construct for a list of available options.
|
209 |
+
*/
|
210 |
+
public function resolve(array $args, HandlerList $list)
|
211 |
+
{
|
212 |
+
$args['config'] = [];
|
213 |
+
foreach ($this->argDefinitions as $key => $a) {
|
214 |
+
// Add defaults, validate required values, and skip if not set.
|
215 |
+
if (!isset($args[$key])) {
|
216 |
+
if (isset($a['default'])) {
|
217 |
+
// Merge defaults in when not present.
|
218 |
+
$args[$key] = is_callable($a['default'])
|
219 |
+
? $a['default']($args)
|
220 |
+
: $a['default'];
|
221 |
+
} elseif (empty($a['required'])) {
|
222 |
+
continue;
|
223 |
+
} else {
|
224 |
+
$this->throwRequired($args);
|
225 |
+
}
|
226 |
+
}
|
227 |
+
|
228 |
+
// Validate the types against the provided value.
|
229 |
+
foreach ($a['valid'] as $check) {
|
230 |
+
if (isset(self::$typeMap[$check])) {
|
231 |
+
$fn = self::$typeMap[$check];
|
232 |
+
if ($fn($args[$key])) {
|
233 |
+
goto is_valid;
|
234 |
+
}
|
235 |
+
} elseif ($args[$key] instanceof $check) {
|
236 |
+
goto is_valid;
|
237 |
+
}
|
238 |
+
}
|
239 |
+
|
240 |
+
$this->invalidType($key, $args[$key]);
|
241 |
+
|
242 |
+
// Apply the value
|
243 |
+
is_valid:
|
244 |
+
if (isset($a['fn'])) {
|
245 |
+
$a['fn']($args[$key], $args, $list);
|
246 |
+
}
|
247 |
+
|
248 |
+
if ($a['type'] === 'config') {
|
249 |
+
$args['config'][$key] = $args[$key];
|
250 |
+
}
|
251 |
+
}
|
252 |
+
|
253 |
+
return $args;
|
254 |
+
}
|
255 |
+
|
256 |
+
/**
|
257 |
+
* Creates a verbose error message for an invalid argument.
|
258 |
+
*
|
259 |
+
* @param string $name Name of the argument that is missing.
|
260 |
+
* @param array $args Provided arguments
|
261 |
+
* @param bool $useRequired Set to true to show the required fn text if
|
262 |
+
* available instead of the documentation.
|
263 |
+
* @return string
|
264 |
+
*/
|
265 |
+
private function getArgMessage($name, $args = [], $useRequired = false)
|
266 |
+
{
|
267 |
+
$arg = $this->argDefinitions[$name];
|
268 |
+
$msg = '';
|
269 |
+
$modifiers = [];
|
270 |
+
if (isset($arg['valid'])) {
|
271 |
+
$modifiers[] = implode('|', $arg['valid']);
|
272 |
+
}
|
273 |
+
if (isset($arg['choice'])) {
|
274 |
+
$modifiers[] = 'One of ' . implode(', ', $arg['choice']);
|
275 |
+
}
|
276 |
+
if ($modifiers) {
|
277 |
+
$msg .= '(' . implode('; ', $modifiers) . ')';
|
278 |
+
}
|
279 |
+
$msg = wordwrap("{$name}: {$msg}", 75, "\n ");
|
280 |
+
|
281 |
+
if ($useRequired && is_callable($arg['required'])) {
|
282 |
+
$msg .= "\n\n ";
|
283 |
+
$msg .= str_replace("\n", "\n ", call_user_func($arg['required'], $args));
|
284 |
+
} elseif (isset($arg['doc'])) {
|
285 |
+
$msg .= wordwrap("\n\n {$arg['doc']}", 75, "\n ");
|
286 |
+
}
|
287 |
+
|
288 |
+
return $msg;
|
289 |
+
}
|
290 |
+
|
291 |
+
/**
|
292 |
+
* Throw when an invalid type is encountered.
|
293 |
+
*
|
294 |
+
* @param string $name Name of the value being validated.
|
295 |
+
* @param mixed $provided The provided value.
|
296 |
+
* @throws \InvalidArgumentException
|
297 |
+
*/
|
298 |
+
private function invalidType($name, $provided)
|
299 |
+
{
|
300 |
+
$expected = implode('|', $this->argDefinitions[$name]['valid']);
|
301 |
+
$msg = "Invalid configuration value "
|
302 |
+
. "provided for \"{$name}\". Expected {$expected}, but got "
|
303 |
+
. describe_type($provided) . "\n\n"
|
304 |
+
. $this->getArgMessage($name);
|
305 |
+
throw new IAE($msg);
|
306 |
+
}
|
307 |
+
|
308 |
+
/**
|
309 |
+
* Throws an exception for missing required arguments.
|
310 |
+
*
|
311 |
+
* @param array $args Passed in arguments.
|
312 |
+
* @throws \InvalidArgumentException
|
313 |
+
*/
|
314 |
+
private function throwRequired(array $args)
|
315 |
+
{
|
316 |
+
$missing = [];
|
317 |
+
foreach ($this->argDefinitions as $k => $a) {
|
318 |
+
if (empty($a['required'])
|
319 |
+
|| isset($a['default'])
|
320 |
+
|| array_key_exists($k, $args)
|
321 |
+
) {
|
322 |
+
continue;
|
323 |
+
}
|
324 |
+
$missing[] = $this->getArgMessage($k, $args, true);
|
325 |
+
}
|
326 |
+
$msg = "Missing required client configuration options: \n\n";
|
327 |
+
$msg .= implode("\n\n", $missing);
|
328 |
+
throw new IAE($msg);
|
329 |
+
}
|
330 |
+
|
331 |
+
public static function _apply_retries($value, array &$args, HandlerList $list)
|
332 |
+
{
|
333 |
+
if ($value) {
|
334 |
+
$decider = RetryMiddleware::createDefaultDecider($value);
|
335 |
+
$list->appendSign(Middleware::retry($decider), 'retry');
|
336 |
+
}
|
337 |
+
}
|
338 |
+
|
339 |
+
public static function _apply_credentials($value, array &$args)
|
340 |
+
{
|
341 |
+
if (is_callable($value)) {
|
342 |
+
return;
|
343 |
+
} elseif ($value instanceof CredentialsInterface) {
|
344 |
+
$args['credentials'] = CredentialProvider::fromCredentials($value);
|
345 |
+
} elseif (is_array($value)
|
346 |
+
&& isset($value['key'])
|
347 |
+
&& isset($value['secret'])
|
348 |
+
) {
|
349 |
+
$args['credentials'] = CredentialProvider::fromCredentials(
|
350 |
+
new Credentials(
|
351 |
+
$value['key'],
|
352 |
+
$value['secret'],
|
353 |
+
isset($value['token']) ? $value['token'] : null,
|
354 |
+
isset($value['expires']) ? $value['expires'] : null
|
355 |
+
)
|
356 |
+
);
|
357 |
+
} elseif ($value === false) {
|
358 |
+
$args['credentials'] = CredentialProvider::fromCredentials(
|
359 |
+
new Credentials('', '')
|
360 |
+
);
|
361 |
+
$args['config']['signature_version'] = 'anonymous';
|
362 |
+
} elseif ($value instanceof CacheInterface) {
|
363 |
+
$args['credentials'] = CredentialProvider::defaultProvider($args);
|
364 |
+
} else {
|
365 |
+
throw new IAE('Credentials must be an instance of '
|
366 |
+
. 'Aws\Credentials\CredentialsInterface, an associative '
|
367 |
+
. 'array that contains "key", "secret", and an optional "token" '
|
368 |
+
. 'key-value pairs, a credentials provider function, or false.');
|
369 |
+
}
|
370 |
+
}
|
371 |
+
|
372 |
+
public static function _apply_api_provider(callable $value, array &$args, HandlerList $list)
|
373 |
+
{
|
374 |
+
$api = new Service(
|
375 |
+
ApiProvider::resolve(
|
376 |
+
$value,
|
377 |
+
'api',
|
378 |
+
$args['service'],
|
379 |
+
$args['version']
|
380 |
+
),
|
381 |
+
$value
|
382 |
+
);
|
383 |
+
$args['api'] = $api;
|
384 |
+
$args['serializer'] = Service::createSerializer($api, $args['endpoint']);
|
385 |
+
$args['parser'] = Service::createParser($api);
|
386 |
+
$args['error_parser'] = Service::createErrorParser($api->getProtocol());
|
387 |
+
$list->prependBuild(Middleware::requestBuilder($args['serializer']), 'builder');
|
388 |
+
}
|
389 |
+
|
390 |
+
public static function _apply_endpoint_provider(callable $value, array &$args)
|
391 |
+
{
|
392 |
+
if (!isset($args['endpoint'])) {
|
393 |
+
// Invoke the endpoint provider and throw if it does not resolve.
|
394 |
+
$result = EndpointProvider::resolve($value, [
|
395 |
+
'service' => $args['service'],
|
396 |
+
'region' => $args['region'],
|
397 |
+
'scheme' => $args['scheme']
|
398 |
+
]);
|
399 |
+
|
400 |
+
$args['endpoint'] = $result['endpoint'];
|
401 |
+
|
402 |
+
if (isset($result['signatureVersion'])) {
|
403 |
+
$args['config']['signature_version'] = $result['signatureVersion'];
|
404 |
+
}
|
405 |
+
}
|
406 |
+
}
|
407 |
+
|
408 |
+
public static function _apply_debug($value, array &$args, HandlerList $list)
|
409 |
+
{
|
410 |
+
if ($value !== false) {
|
411 |
+
$list->interpose(new TraceMiddleware($value === true ? [] : $value));
|
412 |
+
}
|
413 |
+
}
|
414 |
+
|
415 |
+
public static function _apply_profile($_, array &$args)
|
416 |
+
{
|
417 |
+
$args['credentials'] = CredentialProvider::ini($args['profile']);
|
418 |
+
}
|
419 |
+
|
420 |
+
public static function _apply_validate($value, array &$args, HandlerList $list)
|
421 |
+
{
|
422 |
+
if ($value === true) {
|
423 |
+
$list->appendValidate(
|
424 |
+
Middleware::validation($args['api'], new Validator()),
|
425 |
+
'validation'
|
426 |
+
);
|
427 |
+
}
|
428 |
+
}
|
429 |
+
|
430 |
+
public static function _apply_handler($value, array &$args, HandlerList $list)
|
431 |
+
{
|
432 |
+
$list->setHandler($value);
|
433 |
+
}
|
434 |
+
|
435 |
+
public static function _default_handler(array &$args)
|
436 |
+
{
|
437 |
+
return new WrappedHttpHandler(
|
438 |
+
default_http_handler(),
|
439 |
+
$args['parser'],
|
440 |
+
$args['error_parser'],
|
441 |
+
$args['exception_class']
|
442 |
+
);
|
443 |
+
}
|
444 |
+
|
445 |
+
public static function _apply_http_handler($value, array &$args, HandlerList $list)
|
446 |
+
{
|
447 |
+
$args['handler'] = new WrappedHttpHandler(
|
448 |
+
$value,
|
449 |
+
$args['parser'],
|
450 |
+
$args['error_parser'],
|
451 |
+
$args['exception_class']
|
452 |
+
);
|
453 |
+
}
|
454 |
+
|
455 |
+
public static function _apply_user_agent($value, array &$args, HandlerList $list)
|
456 |
+
{
|
457 |
+
if (!is_array($value)) {
|
458 |
+
$value = [$value];
|
459 |
+
}
|
460 |
+
|
461 |
+
$value = array_map('strval', $value);
|
462 |
+
|
463 |
+
array_unshift($value, 'aws-sdk-php/' . Sdk::VERSION);
|
464 |
+
$args['ua_append'] = $value;
|
465 |
+
|
466 |
+
$list->appendBuild(static function (callable $handler) use ($value) {
|
467 |
+
return function (
|
468 |
+
CommandInterface $command,
|
469 |
+
RequestInterface $request
|
470 |
+
) use ($handler, $value) {
|
471 |
+
return $handler($command, $request->withHeader(
|
472 |
+
'User-Agent',
|
473 |
+
implode(' ', array_merge(
|
474 |
+
$value,
|
475 |
+
$request->getHeader('User-Agent')
|
476 |
+
))
|
477 |
+
));
|
478 |
+
};
|
479 |
+
});
|
480 |
+
}
|
481 |
+
|
482 |
+
public static function _apply_endpoint($value, array &$args, HandlerList $list)
|
483 |
+
{
|
484 |
+
$parts = parse_url($value);
|
485 |
+
if (empty($parts['scheme']) || empty($parts['host'])) {
|
486 |
+
throw new IAE(
|
487 |
+
'Endpoints must be full URIs and include a scheme and host'
|
488 |
+
);
|
489 |
+
}
|
490 |
+
|
491 |
+
$args['endpoint'] = $value;
|
492 |
+
}
|
493 |
+
|
494 |
+
public static function _default_endpoint_provider()
|
495 |
+
{
|
496 |
+
return EndpointProvider::defaultProvider();
|
497 |
+
}
|
498 |
+
|
499 |
+
public static function _default_signature_provider()
|
500 |
+
{
|
501 |
+
return SignatureProvider::defaultProvider();
|
502 |
+
}
|
503 |
+
|
504 |
+
public static function _default_signature_version(array &$args)
|
505 |
+
{
|
506 |
+
return isset($args['config']['signature_version'])
|
507 |
+
? $args['config']['signature_version']
|
508 |
+
: $args['api']->getSignatureVersion();
|
509 |
+
}
|
510 |
+
|
511 |
+
public static function _missing_version(array $args)
|
512 |
+
{
|
513 |
+
$service = isset($args['service']) ? $args['service'] : '';
|
514 |
+
$versions = ApiProvider::defaultProvider()->getVersions($service);
|
515 |
+
$versions = implode("\n", array_map(function ($v) {
|
516 |
+
return "* \"$v\"";
|
517 |
+
}, $versions)) ?: '* (none found)';
|
518 |
+
|
519 |
+
return <<<EOT
|
520 |
+
A "version" configuration value is required. Specifying a version constraint
|
521 |
+
ensures that your code will not be affected by a breaking change made to the
|
522 |
+
service. For example, when using Amazon S3, you can lock your API version to
|
523 |
+
"2006-03-01".
|
524 |
+
|
525 |
+
Your build of the SDK has the following version(s) of "{$service}": {$versions}
|
526 |
+
|
527 |
+
You may provide "latest" to the "version" configuration value to utilize the
|
528 |
+
most recent available API version that your client's API provider can find.
|
529 |
+
Note: Using 'latest' in a production application is not recommended.
|
530 |
+
|
531 |
+
A list of available API versions can be found on each client's API documentation
|
532 |
+
page: http://docs.aws.amazon.com/aws-sdk-php/v3/api/index.html. If you are
|
533 |
+
unable to load a specific API version, then you may need to update your copy of
|
534 |
+
the SDK.
|
535 |
+
EOT;
|
536 |
+
}
|
537 |
+
|
538 |
+
public static function _missing_region(array $args)
|
539 |
+
{
|
540 |
+
$service = isset($args['service']) ? $args['service'] : '';
|
541 |
+
|
542 |
+
return <<<EOT
|
543 |
+
A "region" configuration value is required for the "{$service}" service
|
544 |
+
(e.g., "us-west-2"). A list of available public regions and endpoints can be
|
545 |
+
found at http://docs.aws.amazon.com/general/latest/gr/rande.html.
|
546 |
+
EOT;
|
547 |
+
}
|
548 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/CodeCommit/CodeCommitClient.php
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\CodeCommit;
|
3 |
+
|
4 |
+
use Aws\AwsClient;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* This client is used to interact with the **AWS CodeCommit** service.
|
8 |
+
*
|
9 |
+
* @method \Aws\Result batchGetRepositories(array $args = [])
|
10 |
+
* @method \GuzzleHttp\Promise\Promise batchGetRepositoriesAsync(array $args = [])
|
11 |
+
* @method \Aws\Result createBranch(array $args = [])
|
12 |
+
* @method \GuzzleHttp\Promise\Promise createBranchAsync(array $args = [])
|
13 |
+
* @method \Aws\Result createRepository(array $args = [])
|
14 |
+
* @method \GuzzleHttp\Promise\Promise createRepositoryAsync(array $args = [])
|
15 |
+
* @method \Aws\Result deleteRepository(array $args = [])
|
16 |
+
* @method \GuzzleHttp\Promise\Promise deleteRepositoryAsync(array $args = [])
|
17 |
+
* @method \Aws\Result getBranch(array $args = [])
|
18 |
+
* @method \GuzzleHttp\Promise\Promise getBranchAsync(array $args = [])
|
19 |
+
* @method \Aws\Result getRepository(array $args = [])
|
20 |
+
* @method \GuzzleHttp\Promise\Promise getRepositoryAsync(array $args = [])
|
21 |
+
* @method \Aws\Result listBranches(array $args = [])
|
22 |
+
* @method \GuzzleHttp\Promise\Promise listBranchesAsync(array $args = [])
|
23 |
+
* @method \Aws\Result listRepositories(array $args = [])
|
24 |
+
* @method \GuzzleHttp\Promise\Promise listRepositoriesAsync(array $args = [])
|
25 |
+
* @method \Aws\Result updateDefaultBranch(array $args = [])
|
26 |
+
* @method \GuzzleHttp\Promise\Promise updateDefaultBranchAsync(array $args = [])
|
27 |
+
* @method \Aws\Result updateRepositoryDescription(array $args = [])
|
28 |
+
* @method \GuzzleHttp\Promise\Promise updateRepositoryDescriptionAsync(array $args = [])
|
29 |
+
* @method \Aws\Result updateRepositoryName(array $args = [])
|
30 |
+
* @method \GuzzleHttp\Promise\Promise updateRepositoryNameAsync(array $args = [])
|
31 |
+
*/
|
32 |
+
class CodeCommitClient extends AwsClient {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/CodeCommit/Exception/CodeCommitException.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\CodeCommit\Exception;
|
3 |
+
|
4 |
+
use Aws\Exception\AwsException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Represents an error interacting with the **AWS CodeCommit** service.
|
8 |
+
*/
|
9 |
+
class CodeCommitException extends AwsException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/CodeDeploy/CodeDeployClient.php
ADDED
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\CodeDeploy;
|
3 |
+
|
4 |
+
use Aws\AwsClient;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* This client is used to interact with AWS CodeDeploy
|
8 |
+
*
|
9 |
+
* @method \Aws\Result addTagsToOnPremisesInstances(array $args = [])
|
10 |
+
* @method \GuzzleHttp\Promise\Promise addTagsToOnPremisesInstancesAsync(array $args = [])
|
11 |
+
* @method \Aws\Result batchGetApplications(array $args = [])
|
12 |
+
* @method \GuzzleHttp\Promise\Promise batchGetApplicationsAsync(array $args = [])
|
13 |
+
* @method \Aws\Result batchGetDeployments(array $args = [])
|
14 |
+
* @method \GuzzleHttp\Promise\Promise batchGetDeploymentsAsync(array $args = [])
|
15 |
+
* @method \Aws\Result batchGetOnPremisesInstances(array $args = [])
|
16 |
+
* @method \GuzzleHttp\Promise\Promise batchGetOnPremisesInstancesAsync(array $args = [])
|
17 |
+
* @method \Aws\Result createApplication(array $args = [])
|
18 |
+
* @method \GuzzleHttp\Promise\Promise createApplicationAsync(array $args = [])
|
19 |
+
* @method \Aws\Result createDeployment(array $args = [])
|
20 |
+
* @method \GuzzleHttp\Promise\Promise createDeploymentAsync(array $args = [])
|
21 |
+
* @method \Aws\Result createDeploymentConfig(array $args = [])
|
22 |
+
* @method \GuzzleHttp\Promise\Promise createDeploymentConfigAsync(array $args = [])
|
23 |
+
* @method \Aws\Result createDeploymentGroup(array $args = [])
|
24 |
+
* @method \GuzzleHttp\Promise\Promise createDeploymentGroupAsync(array $args = [])
|
25 |
+
* @method \Aws\Result deleteApplication(array $args = [])
|
26 |
+
* @method \GuzzleHttp\Promise\Promise deleteApplicationAsync(array $args = [])
|
27 |
+
* @method \Aws\Result deleteDeploymentConfig(array $args = [])
|
28 |
+
* @method \GuzzleHttp\Promise\Promise deleteDeploymentConfigAsync(array $args = [])
|
29 |
+
* @method \Aws\Result deleteDeploymentGroup(array $args = [])
|
30 |
+
* @method \GuzzleHttp\Promise\Promise deleteDeploymentGroupAsync(array $args = [])
|
31 |
+
* @method \Aws\Result deregisterOnPremisesInstance(array $args = [])
|
32 |
+
* @method \GuzzleHttp\Promise\Promise deregisterOnPremisesInstanceAsync(array $args = [])
|
33 |
+
* @method \Aws\Result getApplication(array $args = [])
|
34 |
+
* @method \GuzzleHttp\Promise\Promise getApplicationAsync(array $args = [])
|
35 |
+
* @method \Aws\Result getApplicationRevision(array $args = [])
|
36 |
+
* @method \GuzzleHttp\Promise\Promise getApplicationRevisionAsync(array $args = [])
|
37 |
+
* @method \Aws\Result getDeployment(array $args = [])
|
38 |
+
* @method \GuzzleHttp\Promise\Promise getDeploymentAsync(array $args = [])
|
39 |
+
* @method \Aws\Result getDeploymentConfig(array $args = [])
|
40 |
+
* @method \GuzzleHttp\Promise\Promise getDeploymentConfigAsync(array $args = [])
|
41 |
+
* @method \Aws\Result getDeploymentGroup(array $args = [])
|
42 |
+
* @method \GuzzleHttp\Promise\Promise getDeploymentGroupAsync(array $args = [])
|
43 |
+
* @method \Aws\Result getDeploymentInstance(array $args = [])
|
44 |
+
* @method \GuzzleHttp\Promise\Promise getDeploymentInstanceAsync(array $args = [])
|
45 |
+
* @method \Aws\Result getOnPremisesInstance(array $args = [])
|
46 |
+
* @method \GuzzleHttp\Promise\Promise getOnPremisesInstanceAsync(array $args = [])
|
47 |
+
* @method \Aws\Result listApplicationRevisions(array $args = [])
|
48 |
+
* @method \GuzzleHttp\Promise\Promise listApplicationRevisionsAsync(array $args = [])
|
49 |
+
* @method \Aws\Result listApplications(array $args = [])
|
50 |
+
* @method \GuzzleHttp\Promise\Promise listApplicationsAsync(array $args = [])
|
51 |
+
* @method \Aws\Result listDeploymentConfigs(array $args = [])
|
52 |
+
* @method \GuzzleHttp\Promise\Promise listDeploymentConfigsAsync(array $args = [])
|
53 |
+
* @method \Aws\Result listDeploymentGroups(array $args = [])
|
54 |
+
* @method \GuzzleHttp\Promise\Promise listDeploymentGroupsAsync(array $args = [])
|
55 |
+
* @method \Aws\Result listDeploymentInstances(array $args = [])
|
56 |
+
* @method \GuzzleHttp\Promise\Promise listDeploymentInstancesAsync(array $args = [])
|
57 |
+
* @method \Aws\Result listDeployments(array $args = [])
|
58 |
+
* @method \GuzzleHttp\Promise\Promise listDeploymentsAsync(array $args = [])
|
59 |
+
* @method \Aws\Result listOnPremisesInstances(array $args = [])
|
60 |
+
* @method \GuzzleHttp\Promise\Promise listOnPremisesInstancesAsync(array $args = [])
|
61 |
+
* @method \Aws\Result registerApplicationRevision(array $args = [])
|
62 |
+
* @method \GuzzleHttp\Promise\Promise registerApplicationRevisionAsync(array $args = [])
|
63 |
+
* @method \Aws\Result registerOnPremisesInstance(array $args = [])
|
64 |
+
* @method \GuzzleHttp\Promise\Promise registerOnPremisesInstanceAsync(array $args = [])
|
65 |
+
* @method \Aws\Result removeTagsFromOnPremisesInstances(array $args = [])
|
66 |
+
* @method \GuzzleHttp\Promise\Promise removeTagsFromOnPremisesInstancesAsync(array $args = [])
|
67 |
+
* @method \Aws\Result stopDeployment(array $args = [])
|
68 |
+
* @method \GuzzleHttp\Promise\Promise stopDeploymentAsync(array $args = [])
|
69 |
+
* @method \Aws\Result updateApplication(array $args = [])
|
70 |
+
* @method \GuzzleHttp\Promise\Promise updateApplicationAsync(array $args = [])
|
71 |
+
* @method \Aws\Result updateDeploymentGroup(array $args = [])
|
72 |
+
* @method \GuzzleHttp\Promise\Promise updateDeploymentGroupAsync(array $args = [])
|
73 |
+
*/
|
74 |
+
class CodeDeployClient extends AwsClient {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/CodeDeploy/Exception/CodeDeployException.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\CodeDeploy\Exception;
|
3 |
+
|
4 |
+
use Aws\Exception\AwsException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Represents an error interacting with AWS CodeDeploy.
|
8 |
+
*/
|
9 |
+
class CodeDeployException extends AwsException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/CodePipeline/CodePipelineClient.php
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\CodePipeline;
|
3 |
+
|
4 |
+
use Aws\AwsClient;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* This client is used to interact with the **Amazon CodePipeline** service.
|
8 |
+
*
|
9 |
+
* @method \Aws\Result acknowledgeJob(array $args = [])
|
10 |
+
* @method \GuzzleHttp\Promise\Promise acknowledgeJobAsync(array $args = [])
|
11 |
+
* @method \Aws\Result acknowledgeThirdPartyJob(array $args = [])
|
12 |
+
* @method \GuzzleHttp\Promise\Promise acknowledgeThirdPartyJobAsync(array $args = [])
|
13 |
+
* @method \Aws\Result createCustomActionType(array $args = [])
|
14 |
+
* @method \GuzzleHttp\Promise\Promise createCustomActionTypeAsync(array $args = [])
|
15 |
+
* @method \Aws\Result createPipeline(array $args = [])
|
16 |
+
* @method \GuzzleHttp\Promise\Promise createPipelineAsync(array $args = [])
|
17 |
+
* @method \Aws\Result deleteCustomActionType(array $args = [])
|
18 |
+
* @method \GuzzleHttp\Promise\Promise deleteCustomActionTypeAsync(array $args = [])
|
19 |
+
* @method \Aws\Result deletePipeline(array $args = [])
|
20 |
+
* @method \GuzzleHttp\Promise\Promise deletePipelineAsync(array $args = [])
|
21 |
+
* @method \Aws\Result disableStageTransition(array $args = [])
|
22 |
+
* @method \GuzzleHttp\Promise\Promise disableStageTransitionAsync(array $args = [])
|
23 |
+
* @method \Aws\Result enableStageTransition(array $args = [])
|
24 |
+
* @method \GuzzleHttp\Promise\Promise enableStageTransitionAsync(array $args = [])
|
25 |
+
* @method \Aws\Result getJobDetails(array $args = [])
|
26 |
+
* @method \GuzzleHttp\Promise\Promise getJobDetailsAsync(array $args = [])
|
27 |
+
* @method \Aws\Result getPipeline(array $args = [])
|
28 |
+
* @method \GuzzleHttp\Promise\Promise getPipelineAsync(array $args = [])
|
29 |
+
* @method \Aws\Result getPipelineState(array $args = [])
|
30 |
+
* @method \GuzzleHttp\Promise\Promise getPipelineStateAsync(array $args = [])
|
31 |
+
* @method \Aws\Result getThirdPartyJobDetails(array $args = [])
|
32 |
+
* @method \GuzzleHttp\Promise\Promise getThirdPartyJobDetailsAsync(array $args = [])
|
33 |
+
* @method \Aws\Result listActionTypes(array $args = [])
|
34 |
+
* @method \GuzzleHttp\Promise\Promise listActionTypesAsync(array $args = [])
|
35 |
+
* @method \Aws\Result listPipelines(array $args = [])
|
36 |
+
* @method \GuzzleHttp\Promise\Promise listPipelinesAsync(array $args = [])
|
37 |
+
* @method \Aws\Result pollForJobs(array $args = [])
|
38 |
+
* @method \GuzzleHttp\Promise\Promise pollForJobsAsync(array $args = [])
|
39 |
+
* @method \Aws\Result pollForThirdPartyJobs(array $args = [])
|
40 |
+
* @method \GuzzleHttp\Promise\Promise pollForThirdPartyJobsAsync(array $args = [])
|
41 |
+
* @method \Aws\Result putActionRevision(array $args = [])
|
42 |
+
* @method \GuzzleHttp\Promise\Promise putActionRevisionAsync(array $args = [])
|
43 |
+
* @method \Aws\Result putJobFailureResult(array $args = [])
|
44 |
+
* @method \GuzzleHttp\Promise\Promise putJobFailureResultAsync(array $args = [])
|
45 |
+
* @method \Aws\Result putJobSuccessResult(array $args = [])
|
46 |
+
* @method \GuzzleHttp\Promise\Promise putJobSuccessResultAsync(array $args = [])
|
47 |
+
* @method \Aws\Result putThirdPartyJobFailureResult(array $args = [])
|
48 |
+
* @method \GuzzleHttp\Promise\Promise putThirdPartyJobFailureResultAsync(array $args = [])
|
49 |
+
* @method \Aws\Result putThirdPartyJobSuccessResult(array $args = [])
|
50 |
+
* @method \GuzzleHttp\Promise\Promise putThirdPartyJobSuccessResultAsync(array $args = [])
|
51 |
+
* @method \Aws\Result startPipelineExecution(array $args = [])
|
52 |
+
* @method \GuzzleHttp\Promise\Promise startPipelineExecutionAsync(array $args = [])
|
53 |
+
* @method \Aws\Result updatePipeline(array $args = [])
|
54 |
+
* @method \GuzzleHttp\Promise\Promise updatePipelineAsync(array $args = [])
|
55 |
+
*/
|
56 |
+
class CodePipelineClient extends AwsClient {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/CodePipeline/Exception/CodePipelineException.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\CodePipeline\Exception;
|
3 |
+
|
4 |
+
use Aws\Exception\AwsException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Represents an error interacting with the Amazon CodePipeline service.
|
8 |
+
*/
|
9 |
+
class CodePipelineException extends AwsException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/CognitoIdentity/CognitoIdentityClient.php
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\CognitoIdentity;
|
3 |
+
|
4 |
+
use Aws\AwsClient;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* This client is used to interact with the **Amazon Cognito Identity** service.
|
8 |
+
*
|
9 |
+
* @method \Aws\Result createIdentityPool(array $args = [])
|
10 |
+
* @method \GuzzleHttp\Promise\Promise createIdentityPoolAsync(array $args = [])
|
11 |
+
* @method \Aws\Result deleteIdentities(array $args = [])
|
12 |
+
* @method \GuzzleHttp\Promise\Promise deleteIdentitiesAsync(array $args = [])
|
13 |
+
* @method \Aws\Result deleteIdentityPool(array $args = [])
|
14 |
+
* @method \GuzzleHttp\Promise\Promise deleteIdentityPoolAsync(array $args = [])
|
15 |
+
* @method \Aws\Result describeIdentity(array $args = [])
|
16 |
+
* @method \GuzzleHttp\Promise\Promise describeIdentityAsync(array $args = [])
|
17 |
+
* @method \Aws\Result describeIdentityPool(array $args = [])
|
18 |
+
* @method \GuzzleHttp\Promise\Promise describeIdentityPoolAsync(array $args = [])
|
19 |
+
* @method \Aws\Result getCredentialsForIdentity(array $args = [])
|
20 |
+
* @method \GuzzleHttp\Promise\Promise getCredentialsForIdentityAsync(array $args = [])
|
21 |
+
* @method \Aws\Result getId(array $args = [])
|
22 |
+
* @method \GuzzleHttp\Promise\Promise getIdAsync(array $args = [])
|
23 |
+
* @method \Aws\Result getIdentityPoolRoles(array $args = [])
|
24 |
+
* @method \GuzzleHttp\Promise\Promise getIdentityPoolRolesAsync(array $args = [])
|
25 |
+
* @method \Aws\Result getOpenIdToken(array $args = [])
|
26 |
+
* @method \GuzzleHttp\Promise\Promise getOpenIdTokenAsync(array $args = [])
|
27 |
+
* @method \Aws\Result getOpenIdTokenForDeveloperIdentity(array $args = [])
|
28 |
+
* @method \GuzzleHttp\Promise\Promise getOpenIdTokenForDeveloperIdentityAsync(array $args = [])
|
29 |
+
* @method \Aws\Result listIdentities(array $args = [])
|
30 |
+
* @method \GuzzleHttp\Promise\Promise listIdentitiesAsync(array $args = [])
|
31 |
+
* @method \Aws\Result listIdentityPools(array $args = [])
|
32 |
+
* @method \GuzzleHttp\Promise\Promise listIdentityPoolsAsync(array $args = [])
|
33 |
+
* @method \Aws\Result lookupDeveloperIdentity(array $args = [])
|
34 |
+
* @method \GuzzleHttp\Promise\Promise lookupDeveloperIdentityAsync(array $args = [])
|
35 |
+
* @method \Aws\Result mergeDeveloperIdentities(array $args = [])
|
36 |
+
* @method \GuzzleHttp\Promise\Promise mergeDeveloperIdentitiesAsync(array $args = [])
|
37 |
+
* @method \Aws\Result setIdentityPoolRoles(array $args = [])
|
38 |
+
* @method \GuzzleHttp\Promise\Promise setIdentityPoolRolesAsync(array $args = [])
|
39 |
+
* @method \Aws\Result unlinkDeveloperIdentity(array $args = [])
|
40 |
+
* @method \GuzzleHttp\Promise\Promise unlinkDeveloperIdentityAsync(array $args = [])
|
41 |
+
* @method \Aws\Result unlinkIdentity(array $args = [])
|
42 |
+
* @method \GuzzleHttp\Promise\Promise unlinkIdentityAsync(array $args = [])
|
43 |
+
* @method \Aws\Result updateIdentityPool(array $args = [])
|
44 |
+
* @method \GuzzleHttp\Promise\Promise updateIdentityPoolAsync(array $args = [])
|
45 |
+
*/
|
46 |
+
class CognitoIdentityClient extends AwsClient {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/CognitoIdentity/Exception/CognitoIdentityException.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\CognitoIdentity\Exception;
|
3 |
+
|
4 |
+
use Aws\Exception\AwsException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Represents an error interacting with the Amazon Cognito Identity Logs service.
|
8 |
+
*/
|
9 |
+
class CognitoIdentityException extends AwsException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/CognitoSync/CognitoSyncClient.php
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\CognitoSync;
|
3 |
+
|
4 |
+
use Aws\AwsClient;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* This client is used to interact with the **Amazon Cognito Sync** service.
|
8 |
+
*
|
9 |
+
* @method \Aws\Result bulkPublish(array $args = [])
|
10 |
+
* @method \GuzzleHttp\Promise\Promise bulkPublishAsync(array $args = [])
|
11 |
+
* @method \Aws\Result deleteDataset(array $args = [])
|
12 |
+
* @method \GuzzleHttp\Promise\Promise deleteDatasetAsync(array $args = [])
|
13 |
+
* @method \Aws\Result describeDataset(array $args = [])
|
14 |
+
* @method \GuzzleHttp\Promise\Promise describeDatasetAsync(array $args = [])
|
15 |
+
* @method \Aws\Result describeIdentityPoolUsage(array $args = [])
|
16 |
+
* @method \GuzzleHttp\Promise\Promise describeIdentityPoolUsageAsync(array $args = [])
|
17 |
+
* @method \Aws\Result describeIdentityUsage(array $args = [])
|
18 |
+
* @method \GuzzleHttp\Promise\Promise describeIdentityUsageAsync(array $args = [])
|
19 |
+
* @method \Aws\Result getBulkPublishDetails(array $args = [])
|
20 |
+
* @method \GuzzleHttp\Promise\Promise getBulkPublishDetailsAsync(array $args = [])
|
21 |
+
* @method \Aws\Result getCognitoEvents(array $args = [])
|
22 |
+
* @method \GuzzleHttp\Promise\Promise getCognitoEventsAsync(array $args = [])
|
23 |
+
* @method \Aws\Result getIdentityPoolConfiguration(array $args = [])
|
24 |
+
* @method \GuzzleHttp\Promise\Promise getIdentityPoolConfigurationAsync(array $args = [])
|
25 |
+
* @method \Aws\Result listDatasets(array $args = [])
|
26 |
+
* @method \GuzzleHttp\Promise\Promise listDatasetsAsync(array $args = [])
|
27 |
+
* @method \Aws\Result listIdentityPoolUsage(array $args = [])
|
28 |
+
* @method \GuzzleHttp\Promise\Promise listIdentityPoolUsageAsync(array $args = [])
|
29 |
+
* @method \Aws\Result listRecords(array $args = [])
|
30 |
+
* @method \GuzzleHttp\Promise\Promise listRecordsAsync(array $args = [])
|
31 |
+
* @method \Aws\Result registerDevice(array $args = [])
|
32 |
+
* @method \GuzzleHttp\Promise\Promise registerDeviceAsync(array $args = [])
|
33 |
+
* @method \Aws\Result setCognitoEvents(array $args = [])
|
34 |
+
* @method \GuzzleHttp\Promise\Promise setCognitoEventsAsync(array $args = [])
|
35 |
+
* @method \Aws\Result setIdentityPoolConfiguration(array $args = [])
|
36 |
+
* @method \GuzzleHttp\Promise\Promise setIdentityPoolConfigurationAsync(array $args = [])
|
37 |
+
* @method \Aws\Result subscribeToDataset(array $args = [])
|
38 |
+
* @method \GuzzleHttp\Promise\Promise subscribeToDatasetAsync(array $args = [])
|
39 |
+
* @method \Aws\Result unsubscribeFromDataset(array $args = [])
|
40 |
+
* @method \GuzzleHttp\Promise\Promise unsubscribeFromDatasetAsync(array $args = [])
|
41 |
+
* @method \Aws\Result updateRecords(array $args = [])
|
42 |
+
* @method \GuzzleHttp\Promise\Promise updateRecordsAsync(array $args = [])
|
43 |
+
*/
|
44 |
+
class CognitoSyncClient extends AwsClient {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/CognitoSync/Exception/CognitoSyncException.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\CognitoSync\Exception;
|
3 |
+
|
4 |
+
use Aws\Exception\AwsException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Represents an error interacting with the Amazon Cognito Sync service.
|
8 |
+
*/
|
9 |
+
class CognitoSyncException extends AwsException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Command.php
ADDED
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* AWS command object.
|
6 |
+
*/
|
7 |
+
class Command implements CommandInterface
|
8 |
+
{
|
9 |
+
use HasDataTrait;
|
10 |
+
|
11 |
+
/** @var string */
|
12 |
+
private $name;
|
13 |
+
|
14 |
+
/** @var HandlerList */
|
15 |
+
private $handlerList;
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Accepts an associative array of command options, including:
|
19 |
+
*
|
20 |
+
* - @http: (array) Associative array of transfer options.
|
21 |
+
*
|
22 |
+
* @param string $name Name of the command
|
23 |
+
* @param array $args Arguments to pass to the command
|
24 |
+
* @param HandlerList $list Handler list
|
25 |
+
*/
|
26 |
+
public function __construct($name, array $args = [], HandlerList $list = null)
|
27 |
+
{
|
28 |
+
$this->name = $name;
|
29 |
+
$this->data = $args;
|
30 |
+
$this->handlerList = $list ?: new HandlerList();
|
31 |
+
|
32 |
+
if (!isset($this->data['@http'])) {
|
33 |
+
$this->data['@http'] = [];
|
34 |
+
}
|
35 |
+
}
|
36 |
+
|
37 |
+
public function getName()
|
38 |
+
{
|
39 |
+
return $this->name;
|
40 |
+
}
|
41 |
+
|
42 |
+
public function hasParam($name)
|
43 |
+
{
|
44 |
+
return array_key_exists($name, $this->data);
|
45 |
+
}
|
46 |
+
|
47 |
+
public function getHandlerList()
|
48 |
+
{
|
49 |
+
return $this->handlerList;
|
50 |
+
}
|
51 |
+
|
52 |
+
/** @deprecated */
|
53 |
+
public function get($name)
|
54 |
+
{
|
55 |
+
return $this[$name];
|
56 |
+
}
|
57 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/CommandInterface.php
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* A command object encapsulates the input parameters used to control the
|
6 |
+
* creation of a HTTP request and processing of a HTTP response.
|
7 |
+
*
|
8 |
+
* Using the toArray() method will return the input parameters of the command
|
9 |
+
* as an associative array.
|
10 |
+
*/
|
11 |
+
interface CommandInterface extends \ArrayAccess, \Countable, \IteratorAggregate
|
12 |
+
{
|
13 |
+
/**
|
14 |
+
* Converts the command parameters to an array
|
15 |
+
*
|
16 |
+
* @return array
|
17 |
+
*/
|
18 |
+
public function toArray();
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Get the name of the command
|
22 |
+
*
|
23 |
+
* @return string
|
24 |
+
*/
|
25 |
+
public function getName();
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Check if the command has a parameter by name.
|
29 |
+
*
|
30 |
+
* @param string $name Name of the parameter to check
|
31 |
+
*
|
32 |
+
* @return bool
|
33 |
+
*/
|
34 |
+
public function hasParam($name);
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Get the handler list used to transfer the command.
|
38 |
+
*
|
39 |
+
* @return HandlerList
|
40 |
+
*/
|
41 |
+
public function getHandlerList();
|
42 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/CommandPool.php
ADDED
@@ -0,0 +1,144 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws;
|
3 |
+
|
4 |
+
use GuzzleHttp\Promise\PromisorInterface;
|
5 |
+
use GuzzleHttp\Promise\EachPromise;
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Sends and iterator of commands concurrently using a capped pool size.
|
9 |
+
*
|
10 |
+
* The pool will read command objects from an iterator until it is cancelled or
|
11 |
+
* until the iterator is consumed.
|
12 |
+
*/
|
13 |
+
class CommandPool implements PromisorInterface
|
14 |
+
{
|
15 |
+
/** @var EachPromise */
|
16 |
+
private $each;
|
17 |
+
|
18 |
+
/**
|
19 |
+
* The CommandPool constructor accepts a hash of configuration options:
|
20 |
+
*
|
21 |
+
* - concurrency: (callable|int) Maximum number of commands to execute
|
22 |
+
* concurrently. Provide a function to resize the pool dynamically. The
|
23 |
+
* function will be provided the current number of pending requests and
|
24 |
+
* is expected to return an integer representing the new pool size limit.
|
25 |
+
* - before: (callable) function to invoke before sending each command. The
|
26 |
+
* before function accepts the command and the key of the iterator of the
|
27 |
+
* command. You can mutate the command as needed in the before function
|
28 |
+
* before sending the command.
|
29 |
+
* - fulfilled: (callable) Function to invoke when a promise is fulfilled.
|
30 |
+
* The function is provided the result object, id of the iterator that the
|
31 |
+
* result came from, and the aggregate promise that can be resolved/rejected
|
32 |
+
* if you need to short-circuit the pool.
|
33 |
+
* - rejected: (callable) Function to invoke when a promise is rejected.
|
34 |
+
* The function is provided an AwsException object, id of the iterator that
|
35 |
+
* the exception came from, and the aggregate promise that can be
|
36 |
+
* resolved/rejected if you need to short-circuit the pool.
|
37 |
+
*
|
38 |
+
* @param AwsClientInterface $client Client used to execute commands.
|
39 |
+
* @param array|\Iterator $commands Iterable that yields commands.
|
40 |
+
* @param array $config Associative array of options.
|
41 |
+
*/
|
42 |
+
public function __construct(
|
43 |
+
AwsClientInterface $client,
|
44 |
+
$commands,
|
45 |
+
array $config = []
|
46 |
+
) {
|
47 |
+
if (!isset($config['concurrency'])) {
|
48 |
+
$config['concurrency'] = 25;
|
49 |
+
}
|
50 |
+
|
51 |
+
$before = $this->getBefore($config);
|
52 |
+
$mapFn = function ($commands) use ($client, $before) {
|
53 |
+
foreach ($commands as $key => $command) {
|
54 |
+
if (!($command instanceof CommandInterface)) {
|
55 |
+
throw new \InvalidArgumentException('Each value yielded by '
|
56 |
+
. 'the iterator must be an Aws\CommandInterface.');
|
57 |
+
}
|
58 |
+
if ($before) {
|
59 |
+
$before($command, $key);
|
60 |
+
}
|
61 |
+
yield $client->executeAsync($command);
|
62 |
+
}
|
63 |
+
};
|
64 |
+
|
65 |
+
$this->each = new EachPromise($mapFn($commands), $config);
|
66 |
+
}
|
67 |
+
|
68 |
+
/**
|
69 |
+
* @return \GuzzleHttp\Promise\PromiseInterface
|
70 |
+
*/
|
71 |
+
public function promise()
|
72 |
+
{
|
73 |
+
return $this->each->promise();
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Executes a pool synchronously and aggregates the results of the pool
|
78 |
+
* into an indexed array in the same order as the passed in array.
|
79 |
+
*
|
80 |
+
* @param AwsClientInterface $client Client used to execute commands.
|
81 |
+
* @param mixed $commands Iterable that yields commands.
|
82 |
+
* @param array $config Configuration options.
|
83 |
+
*
|
84 |
+
* @return array
|
85 |
+
* @see \Aws\CommandPool::__construct for available configuration options.
|
86 |
+
*/
|
87 |
+
public static function batch(
|
88 |
+
AwsClientInterface $client,
|
89 |
+
$commands,
|
90 |
+
array $config = []
|
91 |
+
) {
|
92 |
+
$results = [];
|
93 |
+
self::cmpCallback($config, 'fulfilled', $results);
|
94 |
+
self::cmpCallback($config, 'rejected', $results);
|
95 |
+
|
96 |
+
return (new self($client, $commands, $config))
|
97 |
+
->promise()
|
98 |
+
->then(static function () use (&$results) {
|
99 |
+
ksort($results);
|
100 |
+
return $results;
|
101 |
+
})
|
102 |
+
->wait();
|
103 |
+
}
|
104 |
+
|
105 |
+
/**
|
106 |
+
* @return callable
|
107 |
+
*/
|
108 |
+
private function getBefore(array $config)
|
109 |
+
{
|
110 |
+
if (!isset($config['before'])) {
|
111 |
+
return null;
|
112 |
+
}
|
113 |
+
|
114 |
+
if (is_callable($config['before'])) {
|
115 |
+
return $config['before'];
|
116 |
+
}
|
117 |
+
|
118 |
+
throw new \InvalidArgumentException('before must be callable');
|
119 |
+
}
|
120 |
+
|
121 |
+
/**
|
122 |
+
* Adds an onFulfilled or onRejected callback that aggregates results into
|
123 |
+
* an array. If a callback is already present, it is replaced with the
|
124 |
+
* composed function.
|
125 |
+
*
|
126 |
+
* @param array $config
|
127 |
+
* @param $name
|
128 |
+
* @param array $results
|
129 |
+
*/
|
130 |
+
private static function cmpCallback(array &$config, $name, array &$results)
|
131 |
+
{
|
132 |
+
if (!isset($config[$name])) {
|
133 |
+
$config[$name] = function ($v, $k) use (&$results) {
|
134 |
+
$results[$k] = $v;
|
135 |
+
};
|
136 |
+
} else {
|
137 |
+
$currentFn = $config[$name];
|
138 |
+
$config[$name] = function ($v, $k) use (&$results, $currentFn) {
|
139 |
+
$currentFn($v, $k);
|
140 |
+
$results[$k] = $v;
|
141 |
+
};
|
142 |
+
}
|
143 |
+
}
|
144 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/ConfigService/ConfigServiceClient.php
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\ConfigService;
|
3 |
+
|
4 |
+
use Aws\AwsClient;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* This client is used to interact with AWS Config.
|
8 |
+
*
|
9 |
+
* @method \Aws\Result deleteConfigRule(array $args = [])
|
10 |
+
* @method \GuzzleHttp\Promise\Promise deleteConfigRuleAsync(array $args = [])
|
11 |
+
* @method \Aws\Result deleteDeliveryChannel(array $args = [])
|
12 |
+
* @method \GuzzleHttp\Promise\Promise deleteDeliveryChannelAsync(array $args = [])
|
13 |
+
* @method \Aws\Result deliverConfigSnapshot(array $args = [])
|
14 |
+
* @method \GuzzleHttp\Promise\Promise deliverConfigSnapshotAsync(array $args = [])
|
15 |
+
* @method \Aws\Result describeComplianceByConfigRule(array $args = [])
|
16 |
+
* @method \GuzzleHttp\Promise\Promise describeComplianceByConfigRuleAsync(array $args = [])
|
17 |
+
* @method \Aws\Result describeComplianceByResource(array $args = [])
|
18 |
+
* @method \GuzzleHttp\Promise\Promise describeComplianceByResourceAsync(array $args = [])
|
19 |
+
* @method \Aws\Result describeConfigRuleEvaluationStatus(array $args = [])
|
20 |
+
* @method \GuzzleHttp\Promise\Promise describeConfigRuleEvaluationStatusAsync(array $args = [])
|
21 |
+
* @method \Aws\Result describeConfigRules(array $args = [])
|
22 |
+
* @method \GuzzleHttp\Promise\Promise describeConfigRulesAsync(array $args = [])
|
23 |
+
* @method \Aws\Result describeConfigurationRecorderStatus(array $args = [])
|
24 |
+
* @method \GuzzleHttp\Promise\Promise describeConfigurationRecorderStatusAsync(array $args = [])
|
25 |
+
* @method \Aws\Result describeConfigurationRecorders(array $args = [])
|
26 |
+
* @method \GuzzleHttp\Promise\Promise describeConfigurationRecordersAsync(array $args = [])
|
27 |
+
* @method \Aws\Result describeDeliveryChannelStatus(array $args = [])
|
28 |
+
* @method \GuzzleHttp\Promise\Promise describeDeliveryChannelStatusAsync(array $args = [])
|
29 |
+
* @method \Aws\Result describeDeliveryChannels(array $args = [])
|
30 |
+
* @method \GuzzleHttp\Promise\Promise describeDeliveryChannelsAsync(array $args = [])
|
31 |
+
* @method \Aws\Result getComplianceDetailsByConfigRule(array $args = [])
|
32 |
+
* @method \GuzzleHttp\Promise\Promise getComplianceDetailsByConfigRuleAsync(array $args = [])
|
33 |
+
* @method \Aws\Result getComplianceDetailsByResource(array $args = [])
|
34 |
+
* @method \GuzzleHttp\Promise\Promise getComplianceDetailsByResourceAsync(array $args = [])
|
35 |
+
* @method \Aws\Result getComplianceSummaryByConfigRule(array $args = [])
|
36 |
+
* @method \GuzzleHttp\Promise\Promise getComplianceSummaryByConfigRuleAsync(array $args = [])
|
37 |
+
* @method \Aws\Result getComplianceSummaryByResourceType(array $args = [])
|
38 |
+
* @method \GuzzleHttp\Promise\Promise getComplianceSummaryByResourceTypeAsync(array $args = [])
|
39 |
+
* @method \Aws\Result getResourceConfigHistory(array $args = [])
|
40 |
+
* @method \GuzzleHttp\Promise\Promise getResourceConfigHistoryAsync(array $args = [])
|
41 |
+
* @method \Aws\Result listDiscoveredResources(array $args = [])
|
42 |
+
* @method \GuzzleHttp\Promise\Promise listDiscoveredResourcesAsync(array $args = [])
|
43 |
+
* @method \Aws\Result putConfigRule(array $args = [])
|
44 |
+
* @method \GuzzleHttp\Promise\Promise putConfigRuleAsync(array $args = [])
|
45 |
+
* @method \Aws\Result putConfigurationRecorder(array $args = [])
|
46 |
+
* @method \GuzzleHttp\Promise\Promise putConfigurationRecorderAsync(array $args = [])
|
47 |
+
* @method \Aws\Result putDeliveryChannel(array $args = [])
|
48 |
+
* @method \GuzzleHttp\Promise\Promise putDeliveryChannelAsync(array $args = [])
|
49 |
+
* @method \Aws\Result putEvaluations(array $args = [])
|
50 |
+
* @method \GuzzleHttp\Promise\Promise putEvaluationsAsync(array $args = [])
|
51 |
+
* @method \Aws\Result startConfigurationRecorder(array $args = [])
|
52 |
+
* @method \GuzzleHttp\Promise\Promise startConfigurationRecorderAsync(array $args = [])
|
53 |
+
* @method \Aws\Result stopConfigurationRecorder(array $args = [])
|
54 |
+
* @method \GuzzleHttp\Promise\Promise stopConfigurationRecorderAsync(array $args = [])
|
55 |
+
*/
|
56 |
+
class ConfigServiceClient extends AwsClient {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/ConfigService/Exception/ConfigServiceException.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\ConfigService\Exception;
|
3 |
+
|
4 |
+
use Aws\Exception\AwsException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Represents an error interacting with the AWS Config service.
|
8 |
+
*/
|
9 |
+
class ConfigServiceException extends AwsException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Credentials/CredentialProvider.php
ADDED
@@ -0,0 +1,324 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Credentials;
|
3 |
+
|
4 |
+
use Aws;
|
5 |
+
use Aws\CacheInterface;
|
6 |
+
use Aws\Exception\CredentialsException;
|
7 |
+
use GuzzleHttp\Promise;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Credential providers are functions that accept no arguments and return a
|
11 |
+
* promise that is fulfilled with an {@see \Aws\Credentials\CredentialsInterface}
|
12 |
+
* or rejected with an {@see \Aws\Exception\CredentialsException}.
|
13 |
+
*
|
14 |
+
* <code>
|
15 |
+
* use Aws\Credentials\CredentialProvider;
|
16 |
+
* $provider = CredentialProvider::defaultProvider();
|
17 |
+
* // Returns a CredentialsInterface or throws.
|
18 |
+
* $creds = $provider()->wait();
|
19 |
+
* </code>
|
20 |
+
*
|
21 |
+
* Credential providers can be composed to create credentials using conditional
|
22 |
+
* logic that can create different credentials in different environments. You
|
23 |
+
* can compose multiple providers into a single provider using
|
24 |
+
* {@see Aws\Credentials\CredentialProvider::chain}. This function accepts
|
25 |
+
* providers as variadic arguments and returns a new function that will invoke
|
26 |
+
* each provider until a successful set of credentials is returned.
|
27 |
+
*
|
28 |
+
* <code>
|
29 |
+
* // First try an INI file at this location.
|
30 |
+
* $a = CredentialProvider::ini(null, '/path/to/file.ini');
|
31 |
+
* // Then try an INI file at this location.
|
32 |
+
* $b = CredentialProvider::ini(null, '/path/to/other-file.ini');
|
33 |
+
* // Then try loading from envrionment variables.
|
34 |
+
* $c = CredentialProvider::env();
|
35 |
+
* // Combine the three providers together.
|
36 |
+
* $composed = CredentialProvider::chain($a, $b, $c);
|
37 |
+
* // Returns a promise that is fulfilled with credentials or throws.
|
38 |
+
* $promise = $composed();
|
39 |
+
* // Wait on the credentials to resolve.
|
40 |
+
* $creds = $promise->wait();
|
41 |
+
* </code>
|
42 |
+
*/
|
43 |
+
class CredentialProvider
|
44 |
+
{
|
45 |
+
const ENV_KEY = 'AWS_ACCESS_KEY_ID';
|
46 |
+
const ENV_SECRET = 'AWS_SECRET_ACCESS_KEY';
|
47 |
+
const ENV_SESSION = 'AWS_SESSION_TOKEN';
|
48 |
+
const ENV_PROFILE = 'AWS_PROFILE';
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Create a default credential provider that first checks for environment
|
52 |
+
* variables, then checks for the "default" profile in ~/.aws/credentials,
|
53 |
+
* and finally checks for credentials using EC2 instance profile
|
54 |
+
* credentials.
|
55 |
+
*
|
56 |
+
* This provider is automatically wrapped in a memoize function that caches
|
57 |
+
* previously provided credentials.
|
58 |
+
*
|
59 |
+
* @param array $config Optional array of instance profile credentials
|
60 |
+
* provider options.
|
61 |
+
* @return callable
|
62 |
+
*/
|
63 |
+
public static function defaultProvider(array $config = [])
|
64 |
+
{
|
65 |
+
$instanceProfileProvider = self::instanceProfile($config);
|
66 |
+
if (isset($config['credentials'])
|
67 |
+
&& $config['credentials'] instanceof CacheInterface
|
68 |
+
) {
|
69 |
+
$instanceProfileProvider = self::cache(
|
70 |
+
$instanceProfileProvider,
|
71 |
+
$config['credentials']
|
72 |
+
);
|
73 |
+
}
|
74 |
+
|
75 |
+
return self::memoize(
|
76 |
+
self::chain(
|
77 |
+
self::env(),
|
78 |
+
self::ini(),
|
79 |
+
$instanceProfileProvider
|
80 |
+
)
|
81 |
+
);
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* Create a credential provider function from a set of static credentials.
|
86 |
+
*
|
87 |
+
* @param CredentialsInterface $creds
|
88 |
+
*
|
89 |
+
* @return callable
|
90 |
+
*/
|
91 |
+
public static function fromCredentials(CredentialsInterface $creds)
|
92 |
+
{
|
93 |
+
$promise = Promise\promise_for($creds);
|
94 |
+
|
95 |
+
return function () use ($promise) {
|
96 |
+
return $promise;
|
97 |
+
};
|
98 |
+
}
|
99 |
+
|
100 |
+
/**
|
101 |
+
* Creates an aggregate credentials provider that invokes the provided
|
102 |
+
* variadic providers one after the other until a provider returns
|
103 |
+
* credentials.
|
104 |
+
*
|
105 |
+
* @return callable
|
106 |
+
*/
|
107 |
+
public static function chain()
|
108 |
+
{
|
109 |
+
$links = func_get_args();
|
110 |
+
if (empty($links)) {
|
111 |
+
throw new \InvalidArgumentException('No providers in chain');
|
112 |
+
}
|
113 |
+
|
114 |
+
return function () use ($links) {
|
115 |
+
/** @var callable $parent */
|
116 |
+
$parent = array_shift($links);
|
117 |
+
$promise = $parent();
|
118 |
+
while ($next = array_shift($links)) {
|
119 |
+
$promise = $promise->otherwise($next);
|
120 |
+
}
|
121 |
+
return $promise;
|
122 |
+
};
|
123 |
+
}
|
124 |
+
|
125 |
+
/**
|
126 |
+
* Wraps a credential provider and caches previously provided credentials.
|
127 |
+
*
|
128 |
+
* Ensures that cached credentials are refreshed when they expire.
|
129 |
+
*
|
130 |
+
* @param callable $provider Credentials provider function to wrap.
|
131 |
+
*
|
132 |
+
* @return callable
|
133 |
+
*/
|
134 |
+
public static function memoize(callable $provider)
|
135 |
+
{
|
136 |
+
return function () use ($provider) {
|
137 |
+
static $result;
|
138 |
+
static $isConstant;
|
139 |
+
|
140 |
+
// Constant credentials will be returned constantly.
|
141 |
+
if ($isConstant) {
|
142 |
+
return $result;
|
143 |
+
}
|
144 |
+
|
145 |
+
// Create the initial promise that will be used as the cached value
|
146 |
+
// until it expires.
|
147 |
+
if (null === $result) {
|
148 |
+
$result = $provider();
|
149 |
+
}
|
150 |
+
|
151 |
+
// Return credentials that could expire and refresh when needed.
|
152 |
+
return $result
|
153 |
+
->then(function (CredentialsInterface $creds) use ($provider, &$isConstant, &$result) {
|
154 |
+
// Determine if these are constant credentials.
|
155 |
+
if (!$creds->getExpiration()) {
|
156 |
+
$isConstant = true;
|
157 |
+
return $creds;
|
158 |
+
}
|
159 |
+
|
160 |
+
// Refresh expired credentials.
|
161 |
+
if (!$creds->isExpired()) {
|
162 |
+
return $creds;
|
163 |
+
}
|
164 |
+
// Refresh the result and forward the promise.
|
165 |
+
return $result = $provider();
|
166 |
+
});
|
167 |
+
};
|
168 |
+
}
|
169 |
+
|
170 |
+
/**
|
171 |
+
* Wraps a credential provider and saves provided credentials in an
|
172 |
+
* instance of Aws\CacheInterface. Forwards calls when no credentials found
|
173 |
+
* in cache and updates cache with the results.
|
174 |
+
*
|
175 |
+
* Defaults to using a simple file-based cache when none provided.
|
176 |
+
*
|
177 |
+
* @param callable $provider Credentials provider function to wrap
|
178 |
+
* @param CacheInterface $cache (optional) Cache to store credentials
|
179 |
+
* @param string|null $cacheKey (optional) Cache key to use
|
180 |
+
*
|
181 |
+
* @return callable
|
182 |
+
*/
|
183 |
+
public static function cache(
|
184 |
+
callable $provider,
|
185 |
+
CacheInterface $cache,
|
186 |
+
$cacheKey = null
|
187 |
+
) {
|
188 |
+
$cacheKey = $cacheKey ?: 'aws_cached_credentials';
|
189 |
+
|
190 |
+
return function () use ($provider, $cache, $cacheKey) {
|
191 |
+
$found = $cache->get($cacheKey);
|
192 |
+
if ($found instanceof CredentialsInterface && !$found->isExpired()) {
|
193 |
+
return Promise\promise_for($found);
|
194 |
+
}
|
195 |
+
|
196 |
+
return $provider()
|
197 |
+
->then(function (CredentialsInterface $creds) use (
|
198 |
+
$cache,
|
199 |
+
$cacheKey
|
200 |
+
) {
|
201 |
+
$cache->set(
|
202 |
+
$cacheKey,
|
203 |
+
$creds,
|
204 |
+
null === $creds->getExpiration() ?
|
205 |
+
0 : $creds->getExpiration() - time()
|
206 |
+
);
|
207 |
+
|
208 |
+
return $creds;
|
209 |
+
});
|
210 |
+
};
|
211 |
+
}
|
212 |
+
|
213 |
+
/**
|
214 |
+
* Provider that creates credentials from environment variables
|
215 |
+
* AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, and AWS_SESSION_TOKEN.
|
216 |
+
*
|
217 |
+
* @return callable
|
218 |
+
*/
|
219 |
+
public static function env()
|
220 |
+
{
|
221 |
+
return function () {
|
222 |
+
// Use credentials from environment variables, if available
|
223 |
+
$key = getenv(self::ENV_KEY);
|
224 |
+
$secret = getenv(self::ENV_SECRET);
|
225 |
+
if ($key && $secret) {
|
226 |
+
return Promise\promise_for(
|
227 |
+
new Credentials($key, $secret, getenv(self::ENV_SESSION))
|
228 |
+
);
|
229 |
+
}
|
230 |
+
|
231 |
+
return self::reject('Could not find environment variable '
|
232 |
+
. 'credentials in ' . self::ENV_KEY . '/' . self::ENV_SECRET);
|
233 |
+
};
|
234 |
+
}
|
235 |
+
|
236 |
+
/**
|
237 |
+
* Credential provider that creates credentials using instance profile
|
238 |
+
* credentials.
|
239 |
+
*
|
240 |
+
* @param array $config Array of configuration data.
|
241 |
+
*
|
242 |
+
* @return InstanceProfileProvider
|
243 |
+
* @see Aws\Credentials\InstanceProfileProvider for $config details.
|
244 |
+
*/
|
245 |
+
public static function instanceProfile(array $config = [])
|
246 |
+
{
|
247 |
+
return new InstanceProfileProvider($config);
|
248 |
+
}
|
249 |
+
|
250 |
+
/**
|
251 |
+
* Credentials provider that creates credentials using an ini file stored
|
252 |
+
* in the current user's home directory.
|
253 |
+
*
|
254 |
+
* @param string|null $profile Profile to use. If not specified will use
|
255 |
+
* the "default" profile.
|
256 |
+
* @param string|null $filename If provided, uses a custom filename rather
|
257 |
+
* than looking in the home directory for the
|
258 |
+
*
|
259 |
+
* @return callable
|
260 |
+
*/
|
261 |
+
public static function ini($profile = null, $filename = null)
|
262 |
+
{
|
263 |
+
$filename = $filename ?: (self::getHomeDir() . '/.aws/credentials');
|
264 |
+
$profile = $profile ?: (getenv(self::ENV_PROFILE) ?: 'default');
|
265 |
+
|
266 |
+
return function () use ($profile, $filename) {
|
267 |
+
if (!is_readable($filename)) {
|
268 |
+
return self::reject("Cannot read credentials from $filename");
|
269 |
+
}
|
270 |
+
$data = parse_ini_file($filename, true);
|
271 |
+
if ($data === false) {
|
272 |
+
return self::reject("Invalid credentials file: $filename");
|
273 |
+
}
|
274 |
+
if (!isset($data[$profile])) {
|
275 |
+
return self::reject("'$profile' not found in credentials file");
|
276 |
+
}
|
277 |
+
if (!isset($data[$profile]['aws_access_key_id'])
|
278 |
+
|| !isset($data[$profile]['aws_secret_access_key'])
|
279 |
+
) {
|
280 |
+
return self::reject("No credentials present in INI profile "
|
281 |
+
. "'$profile' ($filename)");
|
282 |
+
}
|
283 |
+
|
284 |
+
if (empty($data[$profile]['aws_session_token'])) {
|
285 |
+
$data[$profile]['aws_session_token']
|
286 |
+
= isset($data[$profile]['aws_security_token'])
|
287 |
+
? $data[$profile]['aws_security_token']
|
288 |
+
: null;
|
289 |
+
}
|
290 |
+
|
291 |
+
return Promise\promise_for(
|
292 |
+
new Credentials(
|
293 |
+
$data[$profile]['aws_access_key_id'],
|
294 |
+
$data[$profile]['aws_secret_access_key'],
|
295 |
+
$data[$profile]['aws_session_token']
|
296 |
+
)
|
297 |
+
);
|
298 |
+
};
|
299 |
+
}
|
300 |
+
|
301 |
+
/**
|
302 |
+
* Gets the environment's HOME directory if available.
|
303 |
+
*
|
304 |
+
* @return null|string
|
305 |
+
*/
|
306 |
+
private static function getHomeDir()
|
307 |
+
{
|
308 |
+
// On Linux/Unix-like systems, use the HOME environment variable
|
309 |
+
if ($homeDir = getenv('HOME')) {
|
310 |
+
return $homeDir;
|
311 |
+
}
|
312 |
+
|
313 |
+
// Get the HOMEDRIVE and HOMEPATH values for Windows hosts
|
314 |
+
$homeDrive = getenv('HOMEDRIVE');
|
315 |
+
$homePath = getenv('HOMEPATH');
|
316 |
+
|
317 |
+
return ($homeDrive && $homePath) ? $homeDrive . $homePath : null;
|
318 |
+
}
|
319 |
+
|
320 |
+
private static function reject($msg)
|
321 |
+
{
|
322 |
+
return new Promise\RejectedPromise(new CredentialsException($msg));
|
323 |
+
}
|
324 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Credentials/Credentials.php
ADDED
@@ -0,0 +1,91 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Credentials;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Basic implementation of the AWS Credentials interface that allows callers to
|
6 |
+
* pass in the AWS Access Key and AWS Secret Access Key in the constructor.
|
7 |
+
*/
|
8 |
+
class Credentials implements CredentialsInterface, \Serializable
|
9 |
+
{
|
10 |
+
private $key;
|
11 |
+
private $secret;
|
12 |
+
private $token;
|
13 |
+
private $expires;
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Constructs a new BasicAWSCredentials object, with the specified AWS
|
17 |
+
* access key and AWS secret key
|
18 |
+
*
|
19 |
+
* @param string $key AWS access key ID
|
20 |
+
* @param string $secret AWS secret access key
|
21 |
+
* @param string $token Security token to use
|
22 |
+
* @param int $expires UNIX timestamp for when credentials expire
|
23 |
+
*/
|
24 |
+
public function __construct($key, $secret, $token = null, $expires = null)
|
25 |
+
{
|
26 |
+
$this->key = trim($key);
|
27 |
+
$this->secret = trim($secret);
|
28 |
+
$this->token = $token;
|
29 |
+
$this->expires = $expires;
|
30 |
+
}
|
31 |
+
|
32 |
+
public static function __set_state(array $state)
|
33 |
+
{
|
34 |
+
return new self(
|
35 |
+
$state['key'],
|
36 |
+
$state['secret'],
|
37 |
+
$state['token'],
|
38 |
+
$state['expires']
|
39 |
+
);
|
40 |
+
}
|
41 |
+
|
42 |
+
public function getAccessKeyId()
|
43 |
+
{
|
44 |
+
return $this->key;
|
45 |
+
}
|
46 |
+
|
47 |
+
public function getSecretKey()
|
48 |
+
{
|
49 |
+
return $this->secret;
|
50 |
+
}
|
51 |
+
|
52 |
+
public function getSecurityToken()
|
53 |
+
{
|
54 |
+
return $this->token;
|
55 |
+
}
|
56 |
+
|
57 |
+
public function getExpiration()
|
58 |
+
{
|
59 |
+
return $this->expires;
|
60 |
+
}
|
61 |
+
|
62 |
+
public function isExpired()
|
63 |
+
{
|
64 |
+
return $this->expires !== null && time() >= $this->expires;
|
65 |
+
}
|
66 |
+
|
67 |
+
public function toArray()
|
68 |
+
{
|
69 |
+
return [
|
70 |
+
'key' => $this->key,
|
71 |
+
'secret' => $this->secret,
|
72 |
+
'token' => $this->token,
|
73 |
+
'expires' => $this->expires
|
74 |
+
];
|
75 |
+
}
|
76 |
+
|
77 |
+
public function serialize()
|
78 |
+
{
|
79 |
+
return json_encode($this->toArray());
|
80 |
+
}
|
81 |
+
|
82 |
+
public function unserialize($serialized)
|
83 |
+
{
|
84 |
+
$data = json_decode($serialized, true);
|
85 |
+
|
86 |
+
$this->key = $data['key'];
|
87 |
+
$this->secret = $data['secret'];
|
88 |
+
$this->token = $data['token'];
|
89 |
+
$this->expires = $data['expires'];
|
90 |
+
}
|
91 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Credentials/CredentialsInterface.php
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Credentials;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Provides access to the AWS credentials used for accessing AWS services: AWS
|
6 |
+
* access key ID, secret access key, and security token. These credentials are
|
7 |
+
* used to securely sign requests to AWS services.
|
8 |
+
*/
|
9 |
+
interface CredentialsInterface
|
10 |
+
{
|
11 |
+
/**
|
12 |
+
* Returns the AWS access key ID for this credentials object.
|
13 |
+
*
|
14 |
+
* @return string
|
15 |
+
*/
|
16 |
+
public function getAccessKeyId();
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Returns the AWS secret access key for this credentials object.
|
20 |
+
*
|
21 |
+
* @return string
|
22 |
+
*/
|
23 |
+
public function getSecretKey();
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Get the associated security token if available
|
27 |
+
*
|
28 |
+
* @return string|null
|
29 |
+
*/
|
30 |
+
public function getSecurityToken();
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Get the UNIX timestamp in which the credentials will expire
|
34 |
+
*
|
35 |
+
* @return int|null
|
36 |
+
*/
|
37 |
+
public function getExpiration();
|
38 |
+
|
39 |
+
/**
|
40 |
+
* Check if the credentials are expired
|
41 |
+
*
|
42 |
+
* @return bool
|
43 |
+
*/
|
44 |
+
public function isExpired();
|
45 |
+
|
46 |
+
/**
|
47 |
+
* Converts the credentials to an associative array.
|
48 |
+
*
|
49 |
+
* @return array
|
50 |
+
*/
|
51 |
+
public function toArray();
|
52 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Credentials/InstanceProfileProvider.php
ADDED
@@ -0,0 +1,102 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Credentials;
|
3 |
+
|
4 |
+
use Aws\Exception\CredentialsException;
|
5 |
+
use GuzzleHttp\Promise;
|
6 |
+
use GuzzleHttp\Psr7\Request;
|
7 |
+
use GuzzleHttp\Promise\PromiseInterface;
|
8 |
+
use Psr\Http\Message\ResponseInterface;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Credential provider that provides credentials from the EC2 metadata server.
|
12 |
+
*/
|
13 |
+
class InstanceProfileProvider
|
14 |
+
{
|
15 |
+
const SERVER_URI = 'http://169.254.169.254/latest/';
|
16 |
+
const CRED_PATH = 'meta-data/iam/security-credentials/';
|
17 |
+
|
18 |
+
/** @var string */
|
19 |
+
private $profile;
|
20 |
+
|
21 |
+
/** @var callable */
|
22 |
+
private $client;
|
23 |
+
|
24 |
+
/**
|
25 |
+
* The constructor accepts the following options:
|
26 |
+
*
|
27 |
+
* - timeout: Connection timeout, in seconds.
|
28 |
+
* - profile: Optional EC2 profile name, if known.
|
29 |
+
*
|
30 |
+
* @param array $config Configuration options.
|
31 |
+
*/
|
32 |
+
public function __construct(array $config = [])
|
33 |
+
{
|
34 |
+
$this->timeout = isset($config['timeout']) ? $config['timeout'] : 1.0;
|
35 |
+
$this->profile = isset($config['profile']) ? $config['profile'] : null;
|
36 |
+
$this->client = isset($config['client'])
|
37 |
+
? $config['client'] // internal use only
|
38 |
+
: \Aws\default_http_handler();
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Loads instance profile credentials.
|
43 |
+
*
|
44 |
+
* @return PromiseInterface
|
45 |
+
*/
|
46 |
+
public function __invoke()
|
47 |
+
{
|
48 |
+
return Promise\coroutine(function () {
|
49 |
+
if (!$this->profile) {
|
50 |
+
$this->profile = (yield $this->request(self::CRED_PATH));
|
51 |
+
}
|
52 |
+
$json = (yield $this->request(self::CRED_PATH . $this->profile));
|
53 |
+
$result = $this->decodeResult($json);
|
54 |
+
yield new Credentials(
|
55 |
+
$result['AccessKeyId'],
|
56 |
+
$result['SecretAccessKey'],
|
57 |
+
$result['Token'],
|
58 |
+
strtotime($result['Expiration'])
|
59 |
+
);
|
60 |
+
});
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* @param string $url
|
65 |
+
* @return PromiseInterface Returns a promise that is fulfilled with the
|
66 |
+
* body of the response as a string.
|
67 |
+
*/
|
68 |
+
private function request($url)
|
69 |
+
{
|
70 |
+
$fn = $this->client;
|
71 |
+
$request = new Request('GET', self::SERVER_URI . $url);
|
72 |
+
|
73 |
+
return $fn($request, ['timeout' => $this->timeout])
|
74 |
+
->then(function (ResponseInterface $response) {
|
75 |
+
return (string) $response->getBody();
|
76 |
+
})->otherwise(function (array $reason) {
|
77 |
+
$reason = $reason['exception'];
|
78 |
+
$msg = $reason->getMessage();
|
79 |
+
throw new CredentialsException(
|
80 |
+
$this->createErrorMessage($msg, 0, $reason)
|
81 |
+
);
|
82 |
+
});
|
83 |
+
}
|
84 |
+
|
85 |
+
private function createErrorMessage($previous)
|
86 |
+
{
|
87 |
+
return "Error retrieving credentials from the instance profile "
|
88 |
+
. "metadata server. ({$previous})";
|
89 |
+
}
|
90 |
+
|
91 |
+
private function decodeResult($response)
|
92 |
+
{
|
93 |
+
$result = json_decode($response, true);
|
94 |
+
|
95 |
+
if ($result['Code'] !== 'Success') {
|
96 |
+
throw new CredentialsException('Unexpected instance profile '
|
97 |
+
. 'response code: ' . $result['Code']);
|
98 |
+
}
|
99 |
+
|
100 |
+
return $result;
|
101 |
+
}
|
102 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/DeviceFarm/DeviceFarmClient.php
ADDED
@@ -0,0 +1,72 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\DeviceFarm;
|
3 |
+
|
4 |
+
use Aws\AwsClient;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* This client is used to interact with the **Amazon DeviceFarm** service.
|
8 |
+
*
|
9 |
+
* @method \Aws\Result createDevicePool(array $args = [])
|
10 |
+
* @method \GuzzleHttp\Promise\Promise createDevicePoolAsync(array $args = [])
|
11 |
+
* @method \Aws\Result createProject(array $args = [])
|
12 |
+
* @method \GuzzleHttp\Promise\Promise createProjectAsync(array $args = [])
|
13 |
+
* @method \Aws\Result createUpload(array $args = [])
|
14 |
+
* @method \GuzzleHttp\Promise\Promise createUploadAsync(array $args = [])
|
15 |
+
* @method \Aws\Result deleteDevicePool(array $args = [])
|
16 |
+
* @method \GuzzleHttp\Promise\Promise deleteDevicePoolAsync(array $args = [])
|
17 |
+
* @method \Aws\Result deleteProject(array $args = [])
|
18 |
+
* @method \GuzzleHttp\Promise\Promise deleteProjectAsync(array $args = [])
|
19 |
+
* @method \Aws\Result deleteRun(array $args = [])
|
20 |
+
* @method \GuzzleHttp\Promise\Promise deleteRunAsync(array $args = [])
|
21 |
+
* @method \Aws\Result deleteUpload(array $args = [])
|
22 |
+
* @method \GuzzleHttp\Promise\Promise deleteUploadAsync(array $args = [])
|
23 |
+
* @method \Aws\Result getAccountSettings(array $args = [])
|
24 |
+
* @method \GuzzleHttp\Promise\Promise getAccountSettingsAsync(array $args = [])
|
25 |
+
* @method \Aws\Result getDevice(array $args = [])
|
26 |
+
* @method \GuzzleHttp\Promise\Promise getDeviceAsync(array $args = [])
|
27 |
+
* @method \Aws\Result getDevicePool(array $args = [])
|
28 |
+
* @method \GuzzleHttp\Promise\Promise getDevicePoolAsync(array $args = [])
|
29 |
+
* @method \Aws\Result getDevicePoolCompatibility(array $args = [])
|
30 |
+
* @method \GuzzleHttp\Promise\Promise getDevicePoolCompatibilityAsync(array $args = [])
|
31 |
+
* @method \Aws\Result getJob(array $args = [])
|
32 |
+
* @method \GuzzleHttp\Promise\Promise getJobAsync(array $args = [])
|
33 |
+
* @method \Aws\Result getProject(array $args = [])
|
34 |
+
* @method \GuzzleHttp\Promise\Promise getProjectAsync(array $args = [])
|
35 |
+
* @method \Aws\Result getRun(array $args = [])
|
36 |
+
* @method \GuzzleHttp\Promise\Promise getRunAsync(array $args = [])
|
37 |
+
* @method \Aws\Result getSuite(array $args = [])
|
38 |
+
* @method \GuzzleHttp\Promise\Promise getSuiteAsync(array $args = [])
|
39 |
+
* @method \Aws\Result getTest(array $args = [])
|
40 |
+
* @method \GuzzleHttp\Promise\Promise getTestAsync(array $args = [])
|
41 |
+
* @method \Aws\Result getUpload(array $args = [])
|
42 |
+
* @method \GuzzleHttp\Promise\Promise getUploadAsync(array $args = [])
|
43 |
+
* @method \Aws\Result listArtifacts(array $args = [])
|
44 |
+
* @method \GuzzleHttp\Promise\Promise listArtifactsAsync(array $args = [])
|
45 |
+
* @method \Aws\Result listDevicePools(array $args = [])
|
46 |
+
* @method \GuzzleHttp\Promise\Promise listDevicePoolsAsync(array $args = [])
|
47 |
+
* @method \Aws\Result listDevices(array $args = [])
|
48 |
+
* @method \GuzzleHttp\Promise\Promise listDevicesAsync(array $args = [])
|
49 |
+
* @method \Aws\Result listJobs(array $args = [])
|
50 |
+
* @method \GuzzleHttp\Promise\Promise listJobsAsync(array $args = [])
|
51 |
+
* @method \Aws\Result listProjects(array $args = [])
|
52 |
+
* @method \GuzzleHttp\Promise\Promise listProjectsAsync(array $args = [])
|
53 |
+
* @method \Aws\Result listRuns(array $args = [])
|
54 |
+
* @method \GuzzleHttp\Promise\Promise listRunsAsync(array $args = [])
|
55 |
+
* @method \Aws\Result listSamples(array $args = [])
|
56 |
+
* @method \GuzzleHttp\Promise\Promise listSamplesAsync(array $args = [])
|
57 |
+
* @method \Aws\Result listSuites(array $args = [])
|
58 |
+
* @method \GuzzleHttp\Promise\Promise listSuitesAsync(array $args = [])
|
59 |
+
* @method \Aws\Result listTests(array $args = [])
|
60 |
+
* @method \GuzzleHttp\Promise\Promise listTestsAsync(array $args = [])
|
61 |
+
* @method \Aws\Result listUniqueProblems(array $args = [])
|
62 |
+
* @method \GuzzleHttp\Promise\Promise listUniqueProblemsAsync(array $args = [])
|
63 |
+
* @method \Aws\Result listUploads(array $args = [])
|
64 |
+
* @method \GuzzleHttp\Promise\Promise listUploadsAsync(array $args = [])
|
65 |
+
* @method \Aws\Result scheduleRun(array $args = [])
|
66 |
+
* @method \GuzzleHttp\Promise\Promise scheduleRunAsync(array $args = [])
|
67 |
+
* @method \Aws\Result updateDevicePool(array $args = [])
|
68 |
+
* @method \GuzzleHttp\Promise\Promise updateDevicePoolAsync(array $args = [])
|
69 |
+
* @method \Aws\Result updateProject(array $args = [])
|
70 |
+
* @method \GuzzleHttp\Promise\Promise updateProjectAsync(array $args = [])
|
71 |
+
*/
|
72 |
+
class DeviceFarmClient extends AwsClient {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/DeviceFarm/Exception/DeviceFarmException.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\DeviceFarm\Exception;
|
3 |
+
|
4 |
+
use Aws\Exception\AwsException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Represents an error interacting with the Amazon DeviceFarm service.
|
8 |
+
*/
|
9 |
+
class DeviceFarmException extends AwsException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/DirectConnect/DirectConnectClient.php
ADDED
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\DirectConnect;
|
3 |
+
|
4 |
+
use Aws\AwsClient;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* This client is used to interact with the **AWS Direct Connect** service.
|
8 |
+
*
|
9 |
+
* @method \Aws\Result allocateConnectionOnInterconnect(array $args = [])
|
10 |
+
* @method \GuzzleHttp\Promise\Promise allocateConnectionOnInterconnectAsync(array $args = [])
|
11 |
+
* @method \Aws\Result allocatePrivateVirtualInterface(array $args = [])
|
12 |
+
* @method \GuzzleHttp\Promise\Promise allocatePrivateVirtualInterfaceAsync(array $args = [])
|
13 |
+
* @method \Aws\Result allocatePublicVirtualInterface(array $args = [])
|
14 |
+
* @method \GuzzleHttp\Promise\Promise allocatePublicVirtualInterfaceAsync(array $args = [])
|
15 |
+
* @method \Aws\Result confirmConnection(array $args = [])
|
16 |
+
* @method \GuzzleHttp\Promise\Promise confirmConnectionAsync(array $args = [])
|
17 |
+
* @method \Aws\Result confirmPrivateVirtualInterface(array $args = [])
|
18 |
+
* @method \GuzzleHttp\Promise\Promise confirmPrivateVirtualInterfaceAsync(array $args = [])
|
19 |
+
* @method \Aws\Result confirmPublicVirtualInterface(array $args = [])
|
20 |
+
* @method \GuzzleHttp\Promise\Promise confirmPublicVirtualInterfaceAsync(array $args = [])
|
21 |
+
* @method \Aws\Result createConnection(array $args = [])
|
22 |
+
* @method \GuzzleHttp\Promise\Promise createConnectionAsync(array $args = [])
|
23 |
+
* @method \Aws\Result createInterconnect(array $args = [])
|
24 |
+
* @method \GuzzleHttp\Promise\Promise createInterconnectAsync(array $args = [])
|
25 |
+
* @method \Aws\Result createPrivateVirtualInterface(array $args = [])
|
26 |
+
* @method \GuzzleHttp\Promise\Promise createPrivateVirtualInterfaceAsync(array $args = [])
|
27 |
+
* @method \Aws\Result createPublicVirtualInterface(array $args = [])
|
28 |
+
* @method \GuzzleHttp\Promise\Promise createPublicVirtualInterfaceAsync(array $args = [])
|
29 |
+
* @method \Aws\Result deleteConnection(array $args = [])
|
30 |
+
* @method \GuzzleHttp\Promise\Promise deleteConnectionAsync(array $args = [])
|
31 |
+
* @method \Aws\Result deleteInterconnect(array $args = [])
|
32 |
+
* @method \GuzzleHttp\Promise\Promise deleteInterconnectAsync(array $args = [])
|
33 |
+
* @method \Aws\Result deleteVirtualInterface(array $args = [])
|
34 |
+
* @method \GuzzleHttp\Promise\Promise deleteVirtualInterfaceAsync(array $args = [])
|
35 |
+
* @method \Aws\Result describeConnections(array $args = [])
|
36 |
+
* @method \GuzzleHttp\Promise\Promise describeConnectionsAsync(array $args = [])
|
37 |
+
* @method \Aws\Result describeConnectionsOnInterconnect(array $args = [])
|
38 |
+
* @method \GuzzleHttp\Promise\Promise describeConnectionsOnInterconnectAsync(array $args = [])
|
39 |
+
* @method \Aws\Result describeInterconnects(array $args = [])
|
40 |
+
* @method \GuzzleHttp\Promise\Promise describeInterconnectsAsync(array $args = [])
|
41 |
+
* @method \Aws\Result describeLocations(array $args = [])
|
42 |
+
* @method \GuzzleHttp\Promise\Promise describeLocationsAsync(array $args = [])
|
43 |
+
* @method \Aws\Result describeVirtualGateways(array $args = [])
|
44 |
+
* @method \GuzzleHttp\Promise\Promise describeVirtualGatewaysAsync(array $args = [])
|
45 |
+
* @method \Aws\Result describeVirtualInterfaces(array $args = [])
|
46 |
+
* @method \GuzzleHttp\Promise\Promise describeVirtualInterfacesAsync(array $args = [])
|
47 |
+
*/
|
48 |
+
class DirectConnectClient extends AwsClient {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/DirectConnect/Exception/DirectConnectException.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\DirectConnect\Exception;
|
3 |
+
|
4 |
+
use Aws\Exception\AwsException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Represents an error interacting with the AWS Direct Connect service.
|
8 |
+
*/
|
9 |
+
class DirectConnectException extends AwsException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/DirectoryService/DirectoryServiceClient.php
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\DirectoryService;
|
3 |
+
|
4 |
+
use Aws\AwsClient;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* AWS Directory Service client
|
8 |
+
*
|
9 |
+
* @method \Aws\Result connectDirectory(array $args = [])
|
10 |
+
* @method \GuzzleHttp\Promise\Promise connectDirectoryAsync(array $args = [])
|
11 |
+
* @method \Aws\Result createAlias(array $args = [])
|
12 |
+
* @method \GuzzleHttp\Promise\Promise createAliasAsync(array $args = [])
|
13 |
+
* @method \Aws\Result createComputer(array $args = [])
|
14 |
+
* @method \GuzzleHttp\Promise\Promise createComputerAsync(array $args = [])
|
15 |
+
* @method \Aws\Result createDirectory(array $args = [])
|
16 |
+
* @method \GuzzleHttp\Promise\Promise createDirectoryAsync(array $args = [])
|
17 |
+
* @method \Aws\Result createSnapshot(array $args = [])
|
18 |
+
* @method \GuzzleHttp\Promise\Promise createSnapshotAsync(array $args = [])
|
19 |
+
* @method \Aws\Result deleteDirectory(array $args = [])
|
20 |
+
* @method \GuzzleHttp\Promise\Promise deleteDirectoryAsync(array $args = [])
|
21 |
+
* @method \Aws\Result deleteSnapshot(array $args = [])
|
22 |
+
* @method \GuzzleHttp\Promise\Promise deleteSnapshotAsync(array $args = [])
|
23 |
+
* @method \Aws\Result describeDirectories(array $args = [])
|
24 |
+
* @method \GuzzleHttp\Promise\Promise describeDirectoriesAsync(array $args = [])
|
25 |
+
* @method \Aws\Result describeSnapshots(array $args = [])
|
26 |
+
* @method \GuzzleHttp\Promise\Promise describeSnapshotsAsync(array $args = [])
|
27 |
+
* @method \Aws\Result disableRadius(array $args = [])
|
28 |
+
* @method \GuzzleHttp\Promise\Promise disableRadiusAsync(array $args = [])
|
29 |
+
* @method \Aws\Result disableSso(array $args = [])
|
30 |
+
* @method \GuzzleHttp\Promise\Promise disableSsoAsync(array $args = [])
|
31 |
+
* @method \Aws\Result enableRadius(array $args = [])
|
32 |
+
* @method \GuzzleHttp\Promise\Promise enableRadiusAsync(array $args = [])
|
33 |
+
* @method \Aws\Result enableSso(array $args = [])
|
34 |
+
* @method \GuzzleHttp\Promise\Promise enableSsoAsync(array $args = [])
|
35 |
+
* @method \Aws\Result getDirectoryLimits(array $args = [])
|
36 |
+
* @method \GuzzleHttp\Promise\Promise getDirectoryLimitsAsync(array $args = [])
|
37 |
+
* @method \Aws\Result getSnapshotLimits(array $args = [])
|
38 |
+
* @method \GuzzleHttp\Promise\Promise getSnapshotLimitsAsync(array $args = [])
|
39 |
+
* @method \Aws\Result restoreFromSnapshot(array $args = [])
|
40 |
+
* @method \GuzzleHttp\Promise\Promise restoreFromSnapshotAsync(array $args = [])
|
41 |
+
* @method \Aws\Result updateRadius(array $args = [])
|
42 |
+
* @method \GuzzleHttp\Promise\Promise updateRadiusAsync(array $args = [])
|
43 |
+
*/
|
44 |
+
class DirectoryServiceClient extends AwsClient {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/DirectoryService/Exception/DirectoryServiceException.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\DirectoryService\Exception;
|
3 |
+
|
4 |
+
use Aws\Exception\AwsException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* AWS Directory Service Exception
|
8 |
+
*/
|
9 |
+
class DirectoryServiceException extends AwsException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/DoctrineCacheAdapter.php
ADDED
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws;
|
3 |
+
|
4 |
+
use Doctrine\Common\Cache\Cache;
|
5 |
+
|
6 |
+
class DoctrineCacheAdapter implements CacheInterface, Cache
|
7 |
+
{
|
8 |
+
/** @var Cache */
|
9 |
+
private $cache;
|
10 |
+
|
11 |
+
public function __construct(Cache $cache)
|
12 |
+
{
|
13 |
+
$this->cache = $cache;
|
14 |
+
}
|
15 |
+
|
16 |
+
public function get($key)
|
17 |
+
{
|
18 |
+
return $this->cache->fetch($key);
|
19 |
+
}
|
20 |
+
|
21 |
+
public function fetch($key)
|
22 |
+
{
|
23 |
+
return $this->get($key);
|
24 |
+
}
|
25 |
+
|
26 |
+
public function set($key, $value, $ttl = 0)
|
27 |
+
{
|
28 |
+
return $this->cache->save($key, $value, $ttl);
|
29 |
+
}
|
30 |
+
|
31 |
+
public function save($key, $value, $ttl = 0)
|
32 |
+
{
|
33 |
+
return $this->set($key, $value, $ttl);
|
34 |
+
}
|
35 |
+
|
36 |
+
public function remove($key)
|
37 |
+
{
|
38 |
+
return $this->cache->delete($key);
|
39 |
+
}
|
40 |
+
|
41 |
+
public function delete($key)
|
42 |
+
{
|
43 |
+
return $this->remove($key);
|
44 |
+
}
|
45 |
+
|
46 |
+
public function contains($key)
|
47 |
+
{
|
48 |
+
return $this->cache->contains($key);
|
49 |
+
}
|
50 |
+
|
51 |
+
public function getStats()
|
52 |
+
{
|
53 |
+
return $this->cache->getStats();
|
54 |
+
}
|
55 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/DynamoDb/BinaryValue.php
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\DynamoDb;
|
3 |
+
|
4 |
+
use GuzzleHttp\Psr7;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Special object to represent a DynamoDB binary (B) value.
|
8 |
+
*/
|
9 |
+
class BinaryValue implements \JsonSerializable
|
10 |
+
{
|
11 |
+
/** @var string Binary value. */
|
12 |
+
private $value;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* @param mixed $value A binary value compatible with Guzzle streams.
|
16 |
+
*
|
17 |
+
* @see GuzzleHttp\Stream\Stream::factory
|
18 |
+
*/
|
19 |
+
public function __construct($value)
|
20 |
+
{
|
21 |
+
if (!is_string($value)) {
|
22 |
+
$value = Psr7\stream_for($value);
|
23 |
+
}
|
24 |
+
$this->value = (string) $value;
|
25 |
+
}
|
26 |
+
|
27 |
+
public function jsonSerialize()
|
28 |
+
{
|
29 |
+
return $this->value;
|
30 |
+
}
|
31 |
+
|
32 |
+
public function __toString()
|
33 |
+
{
|
34 |
+
return $this->value;
|
35 |
+
}
|
36 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/DynamoDb/DynamoDbClient.php
ADDED
@@ -0,0 +1,95 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\DynamoDb;
|
3 |
+
|
4 |
+
use Aws\Api\Parser\Crc32ValidatingParser;
|
5 |
+
use Aws\AwsClient;
|
6 |
+
use Aws\ClientResolver;
|
7 |
+
use Aws\HandlerList;
|
8 |
+
use Aws\Middleware;
|
9 |
+
use Aws\RetryMiddleware;
|
10 |
+
|
11 |
+
/**
|
12 |
+
* This client is used to interact with the **Amazon DynamoDB** service.
|
13 |
+
*
|
14 |
+
* @method \Aws\Result batchGetItem(array $args = [])
|
15 |
+
* @method \GuzzleHttp\Promise\Promise batchGetItemAsync(array $args = [])
|
16 |
+
* @method \Aws\Result batchWriteItem(array $args = [])
|
17 |
+
* @method \GuzzleHttp\Promise\Promise batchWriteItemAsync(array $args = [])
|
18 |
+
* @method \Aws\Result createTable(array $args = [])
|
19 |
+
* @method \GuzzleHttp\Promise\Promise createTableAsync(array $args = [])
|
20 |
+
* @method \Aws\Result deleteItem(array $args = [])
|
21 |
+
* @method \GuzzleHttp\Promise\Promise deleteItemAsync(array $args = [])
|
22 |
+
* @method \Aws\Result deleteTable(array $args = [])
|
23 |
+
* @method \GuzzleHttp\Promise\Promise deleteTableAsync(array $args = [])
|
24 |
+
* @method \Aws\Result describeTable(array $args = [])
|
25 |
+
* @method \GuzzleHttp\Promise\Promise describeTableAsync(array $args = [])
|
26 |
+
* @method \Aws\Result getItem(array $args = [])
|
27 |
+
* @method \GuzzleHttp\Promise\Promise getItemAsync(array $args = [])
|
28 |
+
* @method \Aws\Result listTables(array $args = [])
|
29 |
+
* @method \GuzzleHttp\Promise\Promise listTablesAsync(array $args = [])
|
30 |
+
* @method \Aws\Result putItem(array $args = [])
|
31 |
+
* @method \GuzzleHttp\Promise\Promise putItemAsync(array $args = [])
|
32 |
+
* @method \Aws\Result query(array $args = [])
|
33 |
+
* @method \GuzzleHttp\Promise\Promise queryAsync(array $args = [])
|
34 |
+
* @method \Aws\Result scan(array $args = [])
|
35 |
+
* @method \GuzzleHttp\Promise\Promise scanAsync(array $args = [])
|
36 |
+
* @method \Aws\Result updateItem(array $args = [])
|
37 |
+
* @method \GuzzleHttp\Promise\Promise updateItemAsync(array $args = [])
|
38 |
+
* @method \Aws\Result updateTable(array $args = [])
|
39 |
+
* @method \GuzzleHttp\Promise\Promise updateTableAsync(array $args = [])
|
40 |
+
*/
|
41 |
+
class DynamoDbClient extends AwsClient
|
42 |
+
{
|
43 |
+
public static function getArguments()
|
44 |
+
{
|
45 |
+
$args = parent::getArguments();
|
46 |
+
$args['retries']['default'] = 11;
|
47 |
+
$args['retries']['fn'] = [__CLASS__, '_applyRetryConfig'];
|
48 |
+
$args['api_provider']['fn'] = [__CLASS__, '_applyApiProvider'];
|
49 |
+
|
50 |
+
return $args;
|
51 |
+
}
|
52 |
+
|
53 |
+
/**
|
54 |
+
* Convenience method for instantiating and registering the DynamoDB
|
55 |
+
* Session handler with this DynamoDB client object.
|
56 |
+
*
|
57 |
+
* @param array $config Array of options for the session handler factory
|
58 |
+
*
|
59 |
+
* @return SessionHandler
|
60 |
+
*/
|
61 |
+
public function registerSessionHandler(array $config = [])
|
62 |
+
{
|
63 |
+
$handler = SessionHandler::fromClient($this, $config);
|
64 |
+
$handler->register();
|
65 |
+
|
66 |
+
return $handler;
|
67 |
+
}
|
68 |
+
|
69 |
+
/** @internal */
|
70 |
+
public static function _applyRetryConfig($value, array &$args, HandlerList $list)
|
71 |
+
{
|
72 |
+
if (!$value) {
|
73 |
+
return;
|
74 |
+
}
|
75 |
+
|
76 |
+
$list->appendSign(
|
77 |
+
Middleware::retry(
|
78 |
+
RetryMiddleware::createDefaultDecider($value),
|
79 |
+
function ($retries) {
|
80 |
+
return $retries
|
81 |
+
? (50 * (int) pow(2, $retries - 1)) / 1000
|
82 |
+
: 0;
|
83 |
+
}
|
84 |
+
),
|
85 |
+
'retry'
|
86 |
+
);
|
87 |
+
}
|
88 |
+
|
89 |
+
/** @internal */
|
90 |
+
public static function _applyApiProvider($value, array &$args, HandlerList $list)
|
91 |
+
{
|
92 |
+
ClientResolver::_apply_api_provider($value, $args, $list);
|
93 |
+
$args['parser'] = new Crc32ValidatingParser($args['parser']);
|
94 |
+
}
|
95 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/DynamoDb/Exception/DynamoDbException.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\DynamoDb\Exception;
|
3 |
+
|
4 |
+
use Aws\Exception\AwsException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Represents an error interacting with the Amazon DynamoDB service.
|
8 |
+
*/
|
9 |
+
class DynamoDbException extends AwsException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/DynamoDb/LockingSessionConnection.php
ADDED
@@ -0,0 +1,62 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\DynamoDb;
|
3 |
+
|
4 |
+
use Aws\DynamoDb\Exception\DynamoDbException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* The locking connection adds locking logic to the read operation.
|
8 |
+
*/
|
9 |
+
class LockingSessionConnection extends StandardSessionConnection
|
10 |
+
{
|
11 |
+
public function __construct(DynamoDbClient $client, array $config = [])
|
12 |
+
{
|
13 |
+
parent::__construct($client, $config + [
|
14 |
+
'max_lock_wait_time' => 10,
|
15 |
+
'min_lock_retry_microtime' => 10000,
|
16 |
+
'max_lock_retry_microtime' => 50000,
|
17 |
+
]);
|
18 |
+
}
|
19 |
+
|
20 |
+
/**
|
21 |
+
* {@inheritdoc}
|
22 |
+
* Retries the request until the lock can be acquired
|
23 |
+
*/
|
24 |
+
public function read($id)
|
25 |
+
{
|
26 |
+
// Create the params for the UpdateItem operation so that a lock can be
|
27 |
+
// set and item returned (via ReturnValues) in a one, atomic operation.
|
28 |
+
$params = [
|
29 |
+
'TableName' => $this->config['table_name'],
|
30 |
+
'Key' => $this->formatKey($id),
|
31 |
+
'Expected' => ['lock' => ['Exists' => false]],
|
32 |
+
'AttributeUpdates' => ['lock' => ['Value' => ['N' => '1']]],
|
33 |
+
'ReturnValues' => 'ALL_NEW',
|
34 |
+
];
|
35 |
+
|
36 |
+
// Acquire the lock and fetch the item data.
|
37 |
+
$timeout = time() + $this->config['max_lock_wait_time'];
|
38 |
+
while (true) {
|
39 |
+
try {
|
40 |
+
$item = [];
|
41 |
+
$result = $this->client->updateItem($params);
|
42 |
+
if (isset($result['Attributes'])) {
|
43 |
+
foreach ($result['Attributes'] as $key => $value) {
|
44 |
+
$item[$key] = current($value);
|
45 |
+
}
|
46 |
+
}
|
47 |
+
return $item;
|
48 |
+
} catch (DynamoDbException $e) {
|
49 |
+
if ($e->getAwsErrorCode() === 'ConditionalCheckFailedException'
|
50 |
+
&& time() < $timeout
|
51 |
+
) {
|
52 |
+
usleep(pow(10, -6) * rand(
|
53 |
+
$this->config['min_lock_retry_microtime'],
|
54 |
+
$this->config['max_lock_retry_microtime']
|
55 |
+
));
|
56 |
+
} else {
|
57 |
+
break;
|
58 |
+
}
|
59 |
+
}
|
60 |
+
}
|
61 |
+
}
|
62 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/DynamoDb/Marshaler.php
ADDED
@@ -0,0 +1,320 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\DynamoDb;
|
3 |
+
|
4 |
+
use Psr\Http\Message\StreamInterface;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Marshals and unmarshals JSON documents and PHP arrays into DynamoDB items.
|
8 |
+
*/
|
9 |
+
class Marshaler
|
10 |
+
{
|
11 |
+
/** @var array Default options to merge into provided options. */
|
12 |
+
private static $defaultOptions = [
|
13 |
+
'ignore_invalid' => false,
|
14 |
+
'nullify_invalid' => false,
|
15 |
+
'wrap_numbers' => false,
|
16 |
+
];
|
17 |
+
|
18 |
+
/** @var array Marshaler options. */
|
19 |
+
private $options;
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Instantiates a DynamoDB Marshaler.
|
23 |
+
*
|
24 |
+
* The following options are valid.
|
25 |
+
*
|
26 |
+
* - ignore_invalid: (bool) Set to `true` if invalid values should be
|
27 |
+
* ignored (i.e., not included) during marshaling.
|
28 |
+
* - nullify_invalid: (bool) Set to `true` if invalid values should be set
|
29 |
+
* to null.
|
30 |
+
* - wrap_numbers: (bool) Set to `true` to wrap numbers with `NumberValue`
|
31 |
+
* objects during unmarshaling to preserve the precision.
|
32 |
+
*
|
33 |
+
* @param array $options Marshaler options
|
34 |
+
*/
|
35 |
+
public function __construct(array $options = [])
|
36 |
+
{
|
37 |
+
$this->options = $options + self::$defaultOptions;
|
38 |
+
}
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Creates a special object to represent a DynamoDB binary (B) value.
|
42 |
+
*
|
43 |
+
* This helps disambiguate binary values from string (S) values.
|
44 |
+
*
|
45 |
+
* @param mixed $value A binary value compatible with Guzzle streams.
|
46 |
+
*
|
47 |
+
* @return BinaryValue
|
48 |
+
* @see GuzzleHttp\Stream\Stream::factory
|
49 |
+
*/
|
50 |
+
public function binary($value)
|
51 |
+
{
|
52 |
+
return new BinaryValue($value);
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Creates a special object to represent a DynamoDB number (N) value.
|
57 |
+
*
|
58 |
+
* This helps maintain the precision of large integer/float in PHP.
|
59 |
+
*
|
60 |
+
* @param string|int|float $value A number value.
|
61 |
+
*
|
62 |
+
* @return NumberValue
|
63 |
+
*/
|
64 |
+
public function number($value)
|
65 |
+
{
|
66 |
+
return new NumberValue($value);
|
67 |
+
}
|
68 |
+
|
69 |
+
/**
|
70 |
+
* Creates a special object to represent a DynamoDB set (SS/NS/BS) value.
|
71 |
+
*
|
72 |
+
* This helps disambiguate set values from list (L) values.
|
73 |
+
*
|
74 |
+
* @param array $values The values of the set.
|
75 |
+
*
|
76 |
+
* @return SetValue
|
77 |
+
*
|
78 |
+
*/
|
79 |
+
public function set(array $values)
|
80 |
+
{
|
81 |
+
return new SetValue($values);
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* Marshal a JSON document from a string to a DynamoDB item.
|
86 |
+
*
|
87 |
+
* The result is an array formatted in the proper parameter structure
|
88 |
+
* required by the DynamoDB API for items.
|
89 |
+
*
|
90 |
+
* @param string $json A valid JSON document.
|
91 |
+
*
|
92 |
+
* @return array Item formatted for DynamoDB.
|
93 |
+
* @throws \InvalidArgumentException if the JSON is invalid.
|
94 |
+
*/
|
95 |
+
public function marshalJson($json)
|
96 |
+
{
|
97 |
+
$data = json_decode($json);
|
98 |
+
if (!($data instanceof \stdClass)) {
|
99 |
+
throw new \InvalidArgumentException(
|
100 |
+
'The JSON document must be valid and be an object at its root.'
|
101 |
+
);
|
102 |
+
}
|
103 |
+
|
104 |
+
return current($this->marshalValue($data));
|
105 |
+
}
|
106 |
+
|
107 |
+
/**
|
108 |
+
* Marshal a native PHP array of data to a DynamoDB item.
|
109 |
+
*
|
110 |
+
* The result is an array formatted in the proper parameter structure
|
111 |
+
* required by the DynamoDB API for items.
|
112 |
+
*
|
113 |
+
* @param array|\stdClass $item An associative array of data.
|
114 |
+
*
|
115 |
+
* @return array Item formatted for DynamoDB.
|
116 |
+
*/
|
117 |
+
public function marshalItem($item)
|
118 |
+
{
|
119 |
+
return current($this->marshalValue($item));
|
120 |
+
}
|
121 |
+
|
122 |
+
/**
|
123 |
+
* Marshal a native PHP value into a DynamoDB attribute value.
|
124 |
+
*
|
125 |
+
* The result is an associative array that is formatted in the proper
|
126 |
+
* `[TYPE => VALUE]` parameter structure required by the DynamoDB API.
|
127 |
+
*
|
128 |
+
* @param mixed $value A scalar, array, or `stdClass` value.
|
129 |
+
*
|
130 |
+
* @return array Attribute formatted for DynamoDB.
|
131 |
+
* @throws \UnexpectedValueException if the value cannot be marshaled.
|
132 |
+
*/
|
133 |
+
public function marshalValue($value)
|
134 |
+
{
|
135 |
+
$type = gettype($value);
|
136 |
+
|
137 |
+
// Handle string values.
|
138 |
+
if ($type === 'string') {
|
139 |
+
if ($value === '') {
|
140 |
+
return $this->handleInvalid('empty strings are invalid');
|
141 |
+
}
|
142 |
+
|
143 |
+
return ['S' => $value];
|
144 |
+
}
|
145 |
+
|
146 |
+
// Handle number values.
|
147 |
+
if ($type === 'integer'
|
148 |
+
|| $type === 'double'
|
149 |
+
|| $value instanceof NumberValue
|
150 |
+
) {
|
151 |
+
return ['N' => (string) $value];
|
152 |
+
}
|
153 |
+
|
154 |
+
// Handle boolean values.
|
155 |
+
if ($type === 'boolean') {
|
156 |
+
return ['BOOL' => $value];
|
157 |
+
}
|
158 |
+
|
159 |
+
// Handle null values.
|
160 |
+
if ($type === 'NULL') {
|
161 |
+
return ['NULL' => true];
|
162 |
+
}
|
163 |
+
|
164 |
+
// Handle set values.
|
165 |
+
if ($value instanceof SetValue) {
|
166 |
+
if (count($value) === 0) {
|
167 |
+
return $this->handleInvalid('empty sets are invalid');
|
168 |
+
}
|
169 |
+
$previousType = null;
|
170 |
+
$data = [];
|
171 |
+
foreach ($value as $v) {
|
172 |
+
$marshaled = $this->marshalValue($v);
|
173 |
+
$setType = key($marshaled);
|
174 |
+
if (!$previousType) {
|
175 |
+
$previousType = $setType;
|
176 |
+
} elseif ($setType !== $previousType) {
|
177 |
+
return $this->handleInvalid('sets must be uniform in type');
|
178 |
+
}
|
179 |
+
$data[] = current($marshaled);
|
180 |
+
}
|
181 |
+
|
182 |
+
return [$previousType . 'S' => array_unique($data)];
|
183 |
+
}
|
184 |
+
|
185 |
+
// Handle list and map values.
|
186 |
+
$dbType = 'L';
|
187 |
+
if ($value instanceof \stdClass) {
|
188 |
+
$type = 'array';
|
189 |
+
$dbType = 'M';
|
190 |
+
}
|
191 |
+
if ($type === 'array' || $value instanceof \Traversable) {
|
192 |
+
$data = [];
|
193 |
+
$index = 0;
|
194 |
+
foreach ($value as $k => $v) {
|
195 |
+
if ($v = $this->marshalValue($v)) {
|
196 |
+
$data[$k] = $v;
|
197 |
+
if ($dbType === 'L' && (!is_int($k) || $k != $index++)) {
|
198 |
+
$dbType = 'M';
|
199 |
+
}
|
200 |
+
}
|
201 |
+
}
|
202 |
+
return [$dbType => $data];
|
203 |
+
}
|
204 |
+
|
205 |
+
// Handle binary values.
|
206 |
+
if (is_resource($value) || $value instanceof StreamInterface) {
|
207 |
+
$value = $this->binary($value);
|
208 |
+
}
|
209 |
+
if ($value instanceof BinaryValue) {
|
210 |
+
return ['B' => (string) $value];
|
211 |
+
}
|
212 |
+
|
213 |
+
// Handle invalid values.
|
214 |
+
return $this->handleInvalid('encountered unexpected value');
|
215 |
+
}
|
216 |
+
|
217 |
+
/**
|
218 |
+
* Unmarshal a document (item) from a DynamoDB operation result into a JSON
|
219 |
+
* document string.
|
220 |
+
*
|
221 |
+
* @param array $data Item/document from a DynamoDB result.
|
222 |
+
* @param int $jsonEncodeFlags Flags to use with `json_encode()`.
|
223 |
+
*
|
224 |
+
* @return string
|
225 |
+
*/
|
226 |
+
public function unmarshalJson(array $data, $jsonEncodeFlags = 0)
|
227 |
+
{
|
228 |
+
return json_encode(
|
229 |
+
$this->unmarshalValue(['M' => $data], true),
|
230 |
+
$jsonEncodeFlags
|
231 |
+
);
|
232 |
+
}
|
233 |
+
|
234 |
+
/**
|
235 |
+
* Unmarshal an item from a DynamoDB operation result into a native PHP
|
236 |
+
* array. If you set $mapAsObject to true, then a stdClass value will be
|
237 |
+
* returned instead.
|
238 |
+
*
|
239 |
+
* @param array $data Item from a DynamoDB result.
|
240 |
+
*
|
241 |
+
* @return array|\stdClass
|
242 |
+
*/
|
243 |
+
public function unmarshalItem(array $data)
|
244 |
+
{
|
245 |
+
return $this->unmarshalValue(['M' => $data]);
|
246 |
+
}
|
247 |
+
|
248 |
+
/**
|
249 |
+
* Unmarshal a value from a DynamoDB operation result into a native PHP
|
250 |
+
* value. Will return a scalar, array, or (if you set $mapAsObject to true)
|
251 |
+
* stdClass value.
|
252 |
+
*
|
253 |
+
* @param array $value Value from a DynamoDB result.
|
254 |
+
* @param bool $mapAsObject Whether maps should be represented as stdClass.
|
255 |
+
*
|
256 |
+
* @return mixed
|
257 |
+
* @throws \UnexpectedValueException
|
258 |
+
*/
|
259 |
+
public function unmarshalValue(array $value, $mapAsObject = false)
|
260 |
+
{
|
261 |
+
list($type, $value) = each($value);
|
262 |
+
switch ($type) {
|
263 |
+
case 'S':
|
264 |
+
case 'BOOL':
|
265 |
+
return $value;
|
266 |
+
case 'NULL':
|
267 |
+
return null;
|
268 |
+
case 'N':
|
269 |
+
if ($this->options['wrap_numbers']) {
|
270 |
+
return new NumberValue($value);
|
271 |
+
} else {
|
272 |
+
// Use type coercion to unmarshal numbers to int/float.
|
273 |
+
return $value + 0;
|
274 |
+
}
|
275 |
+
case 'M':
|
276 |
+
if ($mapAsObject) {
|
277 |
+
$data = new \stdClass;
|
278 |
+
foreach ($value as $k => $v) {
|
279 |
+
$data->$k = $this->unmarshalValue($v, $mapAsObject);
|
280 |
+
}
|
281 |
+
return $data;
|
282 |
+
}
|
283 |
+
// NOBREAK: Unmarshal M the same way as L, for arrays.
|
284 |
+
case 'L':
|
285 |
+
foreach ($value as &$v) {
|
286 |
+
$v = $this->unmarshalValue($v, $mapAsObject);
|
287 |
+
}
|
288 |
+
return $value;
|
289 |
+
case 'B':
|
290 |
+
return new BinaryValue($value);
|
291 |
+
case 'SS':
|
292 |
+
case 'NS':
|
293 |
+
case 'BS':
|
294 |
+
foreach ($value as &$v) {
|
295 |
+
$v = $this->unmarshalValue([$type[0] => $v]);
|
296 |
+
}
|
297 |
+
return new SetValue($value);
|
298 |
+
}
|
299 |
+
|
300 |
+
throw new \UnexpectedValueException("Unexpected type: {$type}.");
|
301 |
+
}
|
302 |
+
|
303 |
+
/**
|
304 |
+
* Handle invalid value based on marshaler configuration.
|
305 |
+
*
|
306 |
+
* @param string $message Error message
|
307 |
+
*
|
308 |
+
* @return array|null
|
309 |
+
*/
|
310 |
+
private function handleInvalid($message)
|
311 |
+
{
|
312 |
+
if ($this->options['ignore_invalid']) {
|
313 |
+
return null;
|
314 |
+
} elseif ($this->options['nullify_invalid']) {
|
315 |
+
return ['NULL' => true];
|
316 |
+
}
|
317 |
+
|
318 |
+
throw new \UnexpectedValueException("Marshaling error: {$message}.");
|
319 |
+
}
|
320 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/DynamoDb/NumberValue.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\DynamoDb;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Special object to represent a DynamoDB Number (N) value.
|
6 |
+
*/
|
7 |
+
class NumberValue implements \JsonSerializable
|
8 |
+
{
|
9 |
+
/** @var string Number value. */
|
10 |
+
private $value;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* @param string|int|float $value A number value.
|
14 |
+
*/
|
15 |
+
public function __construct($value)
|
16 |
+
{
|
17 |
+
$this->value = (string) $value;
|
18 |
+
}
|
19 |
+
|
20 |
+
public function jsonSerialize()
|
21 |
+
{
|
22 |
+
return $this->value;
|
23 |
+
}
|
24 |
+
|
25 |
+
public function __toString()
|
26 |
+
{
|
27 |
+
return $this->value;
|
28 |
+
}
|
29 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/DynamoDb/SessionConnectionInterface.php
ADDED
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\DynamoDb;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* The session connection provides the underlying logic for interacting with
|
6 |
+
* Amazon DynamoDB and performs all of the reading and writing operations.
|
7 |
+
*/
|
8 |
+
interface SessionConnectionInterface
|
9 |
+
{
|
10 |
+
/**
|
11 |
+
* Reads session data from DynamoDB
|
12 |
+
*
|
13 |
+
* @param string $id Session ID
|
14 |
+
*
|
15 |
+
* @return array
|
16 |
+
*/
|
17 |
+
public function read($id);
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Writes session data to DynamoDB
|
21 |
+
*
|
22 |
+
* @param string $id Session ID
|
23 |
+
* @param string $data Serialized session data
|
24 |
+
* @param bool $isChanged Whether or not the data has changed
|
25 |
+
*
|
26 |
+
* @return bool
|
27 |
+
*/
|
28 |
+
public function write($id, $data, $isChanged);
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Deletes session record from DynamoDB
|
32 |
+
*
|
33 |
+
* @param string $id Session ID
|
34 |
+
*
|
35 |
+
* @return bool
|
36 |
+
*/
|
37 |
+
public function delete($id);
|
38 |
+
|
39 |
+
/**
|
40 |
+
* Performs garbage collection on the sessions stored in the DynamoDB
|
41 |
+
*
|
42 |
+
* @return bool
|
43 |
+
*/
|
44 |
+
public function deleteExpired();
|
45 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/DynamoDb/SessionHandler.php
ADDED
@@ -0,0 +1,226 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\DynamoDb;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Provides an interface for using Amazon DynamoDB as a session store by hooking
|
6 |
+
* into PHP's session handler hooks. Once registered, You may use the native
|
7 |
+
* `$_SESSION` superglobal and session functions, and the sessions will be
|
8 |
+
* stored automatically in DynamoDB. DynamoDB is a great session storage
|
9 |
+
* solution due to its speed, scalability, and fault tolerance.
|
10 |
+
*
|
11 |
+
* For maximum performance, we recommend that you keep the size of your sessions
|
12 |
+
* small. Locking is disabled by default, since it can drive up latencies and
|
13 |
+
* costs under high traffic. Only turn it on if you need it.
|
14 |
+
*
|
15 |
+
* By far, the most expensive operation is garbage collection. Therefore, we
|
16 |
+
* encourage you to carefully consider your session garbage collection strategy.
|
17 |
+
* Note: the DynamoDB Session Handler does not allow garbage collection to be
|
18 |
+
* triggered randomly. You must run garbage collection manually or through other
|
19 |
+
* automated means using a cron job or similar scheduling technique.
|
20 |
+
*/
|
21 |
+
class SessionHandler implements \SessionHandlerInterface
|
22 |
+
{
|
23 |
+
/** @var SessionConnectionInterface Session save logic.*/
|
24 |
+
private $connection;
|
25 |
+
|
26 |
+
/** @var string Session save path. */
|
27 |
+
private $savePath;
|
28 |
+
|
29 |
+
/** @var string Session name. */
|
30 |
+
private $sessionName;
|
31 |
+
|
32 |
+
/** @var string Stores serialized data for tracking changes. */
|
33 |
+
private $dataRead;
|
34 |
+
|
35 |
+
/** @var string Keeps track of the open session's ID. */
|
36 |
+
private $openSessionId;
|
37 |
+
|
38 |
+
/** @var bool Keeps track of whether the session has been written. */
|
39 |
+
private $sessionWritten;
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Creates a new DynamoDB Session Handler.
|
43 |
+
*
|
44 |
+
* The configuration array accepts the following array keys and values:
|
45 |
+
* - table_name: Name of table to store the sessions.
|
46 |
+
* - hash_key: Name of hash key in table. Default: "id".
|
47 |
+
* - session_lifetime: Lifetime of inactive sessions expiration.
|
48 |
+
* - consistent_read: Whether or not to use consistent reads.
|
49 |
+
* - batch_config: Batch options used for garbage collection.
|
50 |
+
* - locking: Whether or not to use session locking.
|
51 |
+
* - max_lock_wait_time: Max time (s) to wait for lock acquisition.
|
52 |
+
* - min_lock_retry_microtime: Min time (µs) to wait between lock attempts.
|
53 |
+
* - max_lock_retry_microtime: Max time (µs) to wait between lock attempts.
|
54 |
+
*
|
55 |
+
* @param DynamoDbClient $client Client for doing DynamoDB operations
|
56 |
+
* @param array $config Configuration for the Session Handler
|
57 |
+
*
|
58 |
+
* @return SessionHandler
|
59 |
+
*/
|
60 |
+
public static function fromClient(DynamoDbClient $client, array $config = [])
|
61 |
+
{
|
62 |
+
$config += ['locking' => false];
|
63 |
+
if ($config['locking']) {
|
64 |
+
$connection = new LockingSessionConnection($client, $config);
|
65 |
+
} else {
|
66 |
+
$connection = new StandardSessionConnection($client, $config);
|
67 |
+
}
|
68 |
+
|
69 |
+
return new static($connection);
|
70 |
+
}
|
71 |
+
|
72 |
+
/**
|
73 |
+
* @param SessionConnectionInterface $connection
|
74 |
+
*/
|
75 |
+
public function __construct(SessionConnectionInterface $connection)
|
76 |
+
{
|
77 |
+
$this->connection = $connection;
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* Register the DynamoDB session handler.
|
82 |
+
*
|
83 |
+
* @return bool Whether or not the handler was registered.
|
84 |
+
* @codeCoverageIgnore
|
85 |
+
*/
|
86 |
+
public function register()
|
87 |
+
{
|
88 |
+
return session_set_save_handler($this, true);
|
89 |
+
}
|
90 |
+
|
91 |
+
/**
|
92 |
+
* Open a session for writing. Triggered by session_start().
|
93 |
+
*
|
94 |
+
* @param string $savePath Session save path.
|
95 |
+
* @param string $sessionName Session name.
|
96 |
+
*
|
97 |
+
* @return bool Whether or not the operation succeeded.
|
98 |
+
*/
|
99 |
+
public function open($savePath, $sessionName)
|
100 |
+
{
|
101 |
+
$this->savePath = $savePath;
|
102 |
+
$this->sessionName = $sessionName;
|
103 |
+
$this->openSessionId = session_id();
|
104 |
+
|
105 |
+
return (bool) $this->openSessionId;
|
106 |
+
}
|
107 |
+
|
108 |
+
/**
|
109 |
+
* Close a session from writing.
|
110 |
+
*
|
111 |
+
* @return bool Success
|
112 |
+
*/
|
113 |
+
public function close()
|
114 |
+
{
|
115 |
+
// Make sure the session is unlocked and the expiration time is updated,
|
116 |
+
// even if the write did not occur
|
117 |
+
if (!$this->sessionWritten) {
|
118 |
+
$id = $this->formatId($this->openSessionId);
|
119 |
+
$result = $this->connection->write($id, '', false);
|
120 |
+
$this->sessionWritten = (bool) $result;
|
121 |
+
}
|
122 |
+
|
123 |
+
$this->openSessionId = null;
|
124 |
+
|
125 |
+
return $this->sessionWritten;
|
126 |
+
}
|
127 |
+
|
128 |
+
/**
|
129 |
+
* Read a session stored in DynamoDB.
|
130 |
+
*
|
131 |
+
* @param string $id Session ID.
|
132 |
+
*
|
133 |
+
* @return string Session data.
|
134 |
+
*/
|
135 |
+
public function read($id)
|
136 |
+
{
|
137 |
+
// PHP expects an empty string to be returned from this method if no
|
138 |
+
// data is retrieved
|
139 |
+
$this->dataRead = '';
|
140 |
+
|
141 |
+
// Get session data using the selected locking strategy
|
142 |
+
$item = $this->connection->read($this->formatId($id));
|
143 |
+
|
144 |
+
// Return the data if it is not expired. If it is expired, remove it
|
145 |
+
if (isset($item['expires']) && isset($item['data'])) {
|
146 |
+
$this->dataRead = $item['data'];
|
147 |
+
if ($item['expires'] <= time()) {
|
148 |
+
$this->dataRead = '';
|
149 |
+
$this->destroy($id);
|
150 |
+
}
|
151 |
+
}
|
152 |
+
|
153 |
+
return $this->dataRead;
|
154 |
+
}
|
155 |
+
|
156 |
+
/**
|
157 |
+
* Write a session to DynamoDB.
|
158 |
+
*
|
159 |
+
* @param string $id Session ID.
|
160 |
+
* @param string $data Serialized session data to write.
|
161 |
+
*
|
162 |
+
* @return bool Whether or not the operation succeeded.
|
163 |
+
*/
|
164 |
+
public function write($id, $data)
|
165 |
+
{
|
166 |
+
// Write the session data using the selected locking strategy
|
167 |
+
$this->sessionWritten = $this->connection->write(
|
168 |
+
$this->formatId($id),
|
169 |
+
$data,
|
170 |
+
($data !== $this->dataRead)
|
171 |
+
);
|
172 |
+
|
173 |
+
return $this->sessionWritten;
|
174 |
+
}
|
175 |
+
|
176 |
+
/**
|
177 |
+
* Delete a session stored in DynamoDB.
|
178 |
+
*
|
179 |
+
* @param string $id Session ID.
|
180 |
+
*
|
181 |
+
* @return bool Whether or not the operation succeeded.
|
182 |
+
*/
|
183 |
+
public function destroy($id)
|
184 |
+
{
|
185 |
+
// Delete the session data using the selected locking strategy
|
186 |
+
$this->sessionWritten = $this->connection->delete($this->formatId($id));
|
187 |
+
|
188 |
+
return $this->sessionWritten;
|
189 |
+
}
|
190 |
+
|
191 |
+
/**
|
192 |
+
* Satisfies the session handler interface, but does nothing. To do garbage
|
193 |
+
* collection, you must manually call the garbageCollect() method.
|
194 |
+
*
|
195 |
+
* @param int $maxLifetime Ignored.
|
196 |
+
*
|
197 |
+
* @return bool Whether or not the operation succeeded.
|
198 |
+
* @codeCoverageIgnore
|
199 |
+
*/
|
200 |
+
public function gc($maxLifetime)
|
201 |
+
{
|
202 |
+
// Garbage collection for a DynamoDB table must be triggered manually.
|
203 |
+
return true;
|
204 |
+
}
|
205 |
+
|
206 |
+
/**
|
207 |
+
* Triggers garbage collection on expired sessions.
|
208 |
+
* @codeCoverageIgnore
|
209 |
+
*/
|
210 |
+
public function garbageCollect()
|
211 |
+
{
|
212 |
+
$this->connection->deleteExpired();
|
213 |
+
}
|
214 |
+
|
215 |
+
/**
|
216 |
+
* Prepend the session ID with the session name.
|
217 |
+
*
|
218 |
+
* @param string $id The session ID.
|
219 |
+
*
|
220 |
+
* @return string Prepared session ID.
|
221 |
+
*/
|
222 |
+
private function formatId($id)
|
223 |
+
{
|
224 |
+
return trim($this->sessionName . '_' . $id, '_');
|
225 |
+
}
|
226 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/DynamoDb/SetValue.php
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\DynamoDb;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Special object to represent a DynamoDB set (SS/NS/BS) value.
|
6 |
+
*/
|
7 |
+
class SetValue implements \JsonSerializable, \Countable, \IteratorAggregate
|
8 |
+
{
|
9 |
+
/** @var array Values in the set as provided. */
|
10 |
+
private $values;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* @param array $values Values in the set.
|
14 |
+
*/
|
15 |
+
public function __construct(array $values)
|
16 |
+
{
|
17 |
+
$this->values = $values;
|
18 |
+
}
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Get the values formatted for PHP and JSON.
|
22 |
+
*
|
23 |
+
* @return array
|
24 |
+
*/
|
25 |
+
public function toArray()
|
26 |
+
{
|
27 |
+
return $this->values;
|
28 |
+
}
|
29 |
+
|
30 |
+
public function count()
|
31 |
+
{
|
32 |
+
return count($this->values);
|
33 |
+
}
|
34 |
+
|
35 |
+
public function getIterator()
|
36 |
+
{
|
37 |
+
return new \ArrayIterator($this->values);
|
38 |
+
}
|
39 |
+
|
40 |
+
public function jsonSerialize()
|
41 |
+
{
|
42 |
+
return $this->toArray();
|
43 |
+
}
|
44 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/DynamoDb/StandardSessionConnection.php
ADDED
@@ -0,0 +1,137 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\DynamoDb;
|
3 |
+
|
4 |
+
use Aws\DynamoDb\Exception\DynamoDbException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* The standard connection performs the read and write operations to DynamoDB.
|
8 |
+
*/
|
9 |
+
class StandardSessionConnection implements SessionConnectionInterface
|
10 |
+
{
|
11 |
+
/** @var DynamoDbClient The DynamoDB client */
|
12 |
+
protected $client;
|
13 |
+
|
14 |
+
/** @var array The session handler config options */
|
15 |
+
protected $config;
|
16 |
+
|
17 |
+
/**
|
18 |
+
* @param DynamoDbClient $client DynamoDB client
|
19 |
+
* @param array $config Session handler config
|
20 |
+
*/
|
21 |
+
public function __construct(DynamoDbClient $client, array $config = [])
|
22 |
+
{
|
23 |
+
$this->client = $client;
|
24 |
+
$this->config = $config + [
|
25 |
+
'table_name' => 'sessions',
|
26 |
+
'hash_key' => 'id',
|
27 |
+
'session_lifetime' => (int) ini_get('session.gc_maxlifetime'),
|
28 |
+
'consistent_read' => true,
|
29 |
+
'batch_config' => [],
|
30 |
+
];
|
31 |
+
}
|
32 |
+
|
33 |
+
public function read($id)
|
34 |
+
{
|
35 |
+
$item = [];
|
36 |
+
try {
|
37 |
+
// Execute a GetItem command to retrieve the item.
|
38 |
+
$result = $this->client->getItem([
|
39 |
+
'TableName' => $this->config['table_name'],
|
40 |
+
'Key' => $this->formatKey($id),
|
41 |
+
'ConsistentRead' => (bool) $this->config['consistent_read'],
|
42 |
+
]);
|
43 |
+
|
44 |
+
// Get the item values
|
45 |
+
$result = isset($result['Item']) ? $result['Item'] : [];
|
46 |
+
foreach ($result as $key => $value) {
|
47 |
+
$item[$key] = current($value);
|
48 |
+
}
|
49 |
+
} catch (DynamoDbException $e) {
|
50 |
+
// Could not retrieve item, so return nothing.
|
51 |
+
}
|
52 |
+
|
53 |
+
return $item;
|
54 |
+
}
|
55 |
+
|
56 |
+
public function write($id, $data, $isChanged)
|
57 |
+
{
|
58 |
+
// Prepare the attributes
|
59 |
+
$expires = time() + $this->config['session_lifetime'];
|
60 |
+
$attributes = [
|
61 |
+
'expires' => ['Value' => ['N' => (string) $expires]],
|
62 |
+
'lock' => ['Action' => 'DELETE'],
|
63 |
+
];
|
64 |
+
if ($isChanged) {
|
65 |
+
if ($data != '') {
|
66 |
+
$attributes['data'] = ['Value' => ['S' => $data]];
|
67 |
+
} else {
|
68 |
+
$attributes['data'] = ['Action' => 'DELETE'];
|
69 |
+
}
|
70 |
+
}
|
71 |
+
|
72 |
+
// Perform the UpdateItem command
|
73 |
+
try {
|
74 |
+
return (bool) $this->client->updateItem([
|
75 |
+
'TableName' => $this->config['table_name'],
|
76 |
+
'Key' => $this->formatKey($id),
|
77 |
+
'AttributeUpdates' => $attributes,
|
78 |
+
]);
|
79 |
+
} catch (DynamoDbException $e) {
|
80 |
+
return false;
|
81 |
+
}
|
82 |
+
}
|
83 |
+
|
84 |
+
public function delete($id)
|
85 |
+
{
|
86 |
+
try {
|
87 |
+
return (bool) $this->client->deleteItem([
|
88 |
+
'TableName' => $this->config['table_name'],
|
89 |
+
'Key' => $this->formatKey($id),
|
90 |
+
]);
|
91 |
+
} catch (DynamoDbException $e) {
|
92 |
+
return false;
|
93 |
+
}
|
94 |
+
}
|
95 |
+
|
96 |
+
public function deleteExpired()
|
97 |
+
{
|
98 |
+
// Create a Scan iterator for finding expired session items
|
99 |
+
$scan = $this->client->getPaginator('Scan', [
|
100 |
+
'TableName' => $this->config['table_name'],
|
101 |
+
'AttributesToGet' => [$this->config['hash_key']],
|
102 |
+
'ScanFilter' => [
|
103 |
+
'expires' => [
|
104 |
+
'ComparisonOperator' => 'LT',
|
105 |
+
'AttributeValueList' => [['N' => (string) time()]],
|
106 |
+
],
|
107 |
+
'lock' => [
|
108 |
+
'ComparisonOperator' => 'NULL',
|
109 |
+
]
|
110 |
+
],
|
111 |
+
]);
|
112 |
+
|
113 |
+
// Create a WriteRequestBatch for deleting the expired items
|
114 |
+
$batch = new WriteRequestBatch($this->client, $this->config['batch_config']);
|
115 |
+
|
116 |
+
// Perform Scan and BatchWriteItem (delete) operations as needed
|
117 |
+
foreach ($scan->search('Items') as $item) {
|
118 |
+
$batch->delete(
|
119 |
+
[$this->config['hash_key'] => $item[$this->config['hash_key']]],
|
120 |
+
$this->config['table_name']
|
121 |
+
);
|
122 |
+
}
|
123 |
+
|
124 |
+
// Delete any remaining items that were not auto-flushed
|
125 |
+
$batch->flush();
|
126 |
+
}
|
127 |
+
|
128 |
+
/**
|
129 |
+
* @param string $key
|
130 |
+
*
|
131 |
+
* @return array
|
132 |
+
*/
|
133 |
+
protected function formatKey($key)
|
134 |
+
{
|
135 |
+
return [$this->config['hash_key'] => ['S' => $key]];
|
136 |
+
}
|
137 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/DynamoDb/WriteRequestBatch.php
ADDED
@@ -0,0 +1,269 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\DynamoDb;
|
3 |
+
|
4 |
+
use Aws\AwsClientInterface;
|
5 |
+
use Aws\CommandInterface;
|
6 |
+
use Aws\CommandPool;
|
7 |
+
use Aws\Exception\AwsException;
|
8 |
+
use Aws\ResultInterface;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* The WriteRequestBatch is an object that is capable of efficiently sending
|
12 |
+
* DynamoDB BatchWriteItem requests from queued up put and delete item requests.
|
13 |
+
* requests. The batch attempts to send the requests with the fewest requests
|
14 |
+
* to DynamoDB as possible and also re-queues any unprocessed items to ensure
|
15 |
+
* that all items are sent.
|
16 |
+
*/
|
17 |
+
class WriteRequestBatch
|
18 |
+
{
|
19 |
+
/** @var DynamoDbClient DynamoDB client used to perform write operations. */
|
20 |
+
private $client;
|
21 |
+
|
22 |
+
/** @var array Configuration options for the batch. */
|
23 |
+
private $config;
|
24 |
+
|
25 |
+
/** @var array Queue of pending put/delete requests in the batch. */
|
26 |
+
private $queue;
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Creates a WriteRequestBatch object that is capable of efficiently sending
|
30 |
+
* DynamoDB BatchWriteItem requests from queued up Put and Delete requests.
|
31 |
+
*
|
32 |
+
* @param DynamoDbClient $client DynamoDB client used to send batches.
|
33 |
+
* @param array $config Batch configuration options.
|
34 |
+
* - table: (string) DynamoDB table used by the batch, this can be
|
35 |
+
* overridden for each individual put() or delete() call.
|
36 |
+
* - batch_size: (int) The size of each batch (default: 25). The batch
|
37 |
+
* size must be between 2 and 25. If you are sending batches of large
|
38 |
+
* items, you may consider lowering the batch size, otherwise, you
|
39 |
+
* should use 25.
|
40 |
+
* - pool_size: (int) This number dictates how many BatchWriteItem
|
41 |
+
* requests you would like to do in parallel. For example, if the
|
42 |
+
* "batch_size" is 25, and "pool_size" is 3, then you would send 3
|
43 |
+
* BatchWriteItem requests at a time, each with 25 items. Please keep
|
44 |
+
* your throughput in mind when choosing the "pool_size" option.
|
45 |
+
* - autoflush: (bool) This option allows the batch to automatically
|
46 |
+
* flush once there are enough items (i.e., "batch_size" * "pool_size")
|
47 |
+
* in the queue. This defaults to true, so you must set this to false
|
48 |
+
* to stop autoflush.
|
49 |
+
* - before: (callable) Executed before every BatchWriteItem operation.
|
50 |
+
* It should accept an \Aws\CommandInterface object as its argument.
|
51 |
+
* - error: Executed if an error was encountered executing a,
|
52 |
+
* BatchWriteItem operation, otherwise errors are ignored. It should
|
53 |
+
* accept an \Aws\Exception\AwsException as its argument.
|
54 |
+
*
|
55 |
+
* @throws \InvalidArgumentException if the batch size is not between 2 and 25.
|
56 |
+
*/
|
57 |
+
public function __construct(DynamoDbClient $client, array $config = [])
|
58 |
+
{
|
59 |
+
// Apply defaults
|
60 |
+
$config += [
|
61 |
+
'table' => null,
|
62 |
+
'batch_size' => 25,
|
63 |
+
'pool_size' => 1,
|
64 |
+
'autoflush' => true,
|
65 |
+
'before' => null,
|
66 |
+
'error' => null
|
67 |
+
];
|
68 |
+
|
69 |
+
// Ensure the batch size is valid
|
70 |
+
if ($config['batch_size'] > 25 || $config['batch_size'] < 2) {
|
71 |
+
throw new \InvalidArgumentException('"batch_size" must be between 2 and 25.');
|
72 |
+
}
|
73 |
+
|
74 |
+
// Ensure the callbacks are valid
|
75 |
+
if ($config['before'] && !is_callable($config['before'])) {
|
76 |
+
throw new \InvalidArgumentException('"before" must be callable.');
|
77 |
+
}
|
78 |
+
if ($config['error'] && !is_callable($config['error'])) {
|
79 |
+
throw new \InvalidArgumentException('"error" must be callable.');
|
80 |
+
}
|
81 |
+
|
82 |
+
// If autoflush is enabled, set the threshold
|
83 |
+
if ($config['autoflush']) {
|
84 |
+
$config['threshold'] = $config['batch_size'] * $config['pool_size'];
|
85 |
+
}
|
86 |
+
|
87 |
+
$this->client = $client;
|
88 |
+
$this->config = $config;
|
89 |
+
$this->queue = [];
|
90 |
+
}
|
91 |
+
|
92 |
+
/**
|
93 |
+
* Adds a put item request to the batch.
|
94 |
+
*
|
95 |
+
* @param array $item Data for an item to put. Format:
|
96 |
+
* [
|
97 |
+
* 'attribute1' => ['type' => 'value'],
|
98 |
+
* 'attribute2' => ['type' => 'value'],
|
99 |
+
* ...
|
100 |
+
* ]
|
101 |
+
* @param string|null $table The name of the table. This must be specified
|
102 |
+
* unless the "table" option was provided in the
|
103 |
+
* config of the WriteRequestBatch.
|
104 |
+
*
|
105 |
+
* @return $this
|
106 |
+
*/
|
107 |
+
public function put(array $item, $table = null)
|
108 |
+
{
|
109 |
+
$this->queue[] = [
|
110 |
+
'table' => $this->determineTable($table),
|
111 |
+
'data' => ['PutRequest' => ['Item' => $item]],
|
112 |
+
];
|
113 |
+
|
114 |
+
$this->autoFlush();
|
115 |
+
|
116 |
+
return $this;
|
117 |
+
}
|
118 |
+
|
119 |
+
/**
|
120 |
+
* Adds a delete item request to the batch.
|
121 |
+
*
|
122 |
+
* @param array $key Key of an item to delete. Format:
|
123 |
+
* [
|
124 |
+
* 'key1' => ['type' => 'value'],
|
125 |
+
* ...
|
126 |
+
* ]
|
127 |
+
* @param string|null $table The name of the table. This must be specified
|
128 |
+
* unless the "table" option was provided in the
|
129 |
+
* config of the WriteRequestBatch.
|
130 |
+
*
|
131 |
+
* @return $this
|
132 |
+
*/
|
133 |
+
public function delete(array $key, $table = null)
|
134 |
+
{
|
135 |
+
$this->queue[] = [
|
136 |
+
'table' => $this->determineTable($table),
|
137 |
+
'data' => ['DeleteRequest' => ['Key' => $key]],
|
138 |
+
];
|
139 |
+
|
140 |
+
$this->autoFlush();
|
141 |
+
|
142 |
+
return $this;
|
143 |
+
}
|
144 |
+
|
145 |
+
/**
|
146 |
+
* Flushes the batch by combining all the queued put and delete requests
|
147 |
+
* into BatchWriteItem commands and executing them. Unprocessed items are
|
148 |
+
* automatically re-queued.
|
149 |
+
*
|
150 |
+
* @param bool $untilEmpty If true, flushing will continue until the queue
|
151 |
+
* is completely empty. This will make sure that
|
152 |
+
* unprocessed items are all eventually sent.
|
153 |
+
*
|
154 |
+
* @return $this
|
155 |
+
*/
|
156 |
+
public function flush($untilEmpty = true)
|
157 |
+
{
|
158 |
+
// Send BatchWriteItem requests until the queue is empty
|
159 |
+
$keepFlushing = true;
|
160 |
+
while ($this->queue && $keepFlushing) {
|
161 |
+
$commands = $this->prepareCommands();
|
162 |
+
$pool = new CommandPool($this->client, $commands, [
|
163 |
+
'before' => $this->config['before'],
|
164 |
+
'concurrency' => $this->config['pool_size'],
|
165 |
+
'fulfilled' => function (ResultInterface $result) {
|
166 |
+
// Re-queue any unprocessed items
|
167 |
+
if ($result->hasKey('UnprocessedItems')) {
|
168 |
+
$this->retryUnprocessed($result['UnprocessedItems']);
|
169 |
+
}
|
170 |
+
},
|
171 |
+
'rejected' => function ($reason) {
|
172 |
+
if ($reason instanceof AwsException) {
|
173 |
+
$code = $reason->getAwsErrorCode();
|
174 |
+
if ($code === 'ProvisionedThroughputExceededException') {
|
175 |
+
$this->retryUnprocessed($reason->getCommand()['RequestItems']);
|
176 |
+
} elseif (is_callable($this->config['error'])) {
|
177 |
+
$this->config['error']($reason);
|
178 |
+
}
|
179 |
+
}
|
180 |
+
}
|
181 |
+
]);
|
182 |
+
$pool->promise()->wait();
|
183 |
+
$keepFlushing = (bool) $untilEmpty;
|
184 |
+
}
|
185 |
+
|
186 |
+
return $this;
|
187 |
+
}
|
188 |
+
|
189 |
+
/**
|
190 |
+
* Creates BatchWriteItem commands from the items in the queue.
|
191 |
+
*
|
192 |
+
* @return CommandInterface[]
|
193 |
+
*/
|
194 |
+
private function prepareCommands()
|
195 |
+
{
|
196 |
+
// Chunk the queue into batches
|
197 |
+
$batches = array_chunk($this->queue, $this->config['batch_size']);
|
198 |
+
$this->queue = [];
|
199 |
+
|
200 |
+
// Create BatchWriteItem commands for each batch
|
201 |
+
$commands = [];
|
202 |
+
foreach ($batches as $batch) {
|
203 |
+
$requests = [];
|
204 |
+
foreach ($batch as $item) {
|
205 |
+
if (!isset($requests[$item['table']])) {
|
206 |
+
$requests[$item['table']] = [];
|
207 |
+
}
|
208 |
+
$requests[$item['table']][] = $item['data'];
|
209 |
+
}
|
210 |
+
$commands[] = $this->client->getCommand(
|
211 |
+
'BatchWriteItem',
|
212 |
+
['RequestItems' => $requests]
|
213 |
+
);
|
214 |
+
}
|
215 |
+
|
216 |
+
return $commands;
|
217 |
+
}
|
218 |
+
|
219 |
+
/**
|
220 |
+
* Re-queues unprocessed results with the correct data.
|
221 |
+
*
|
222 |
+
* @param array $unprocessed Unprocessed items from a result.
|
223 |
+
*/
|
224 |
+
private function retryUnprocessed(array $unprocessed)
|
225 |
+
{
|
226 |
+
foreach ($unprocessed as $table => $requests) {
|
227 |
+
foreach ($requests as $request) {
|
228 |
+
$this->queue[] = [
|
229 |
+
'table' => $table,
|
230 |
+
'data' => isset($request['PutRequest'])
|
231 |
+
? $request['PutRequest']
|
232 |
+
: $request['DeleteRequest']
|
233 |
+
];
|
234 |
+
}
|
235 |
+
}
|
236 |
+
}
|
237 |
+
|
238 |
+
/**
|
239 |
+
* If autoflush is enabled and the threshold is met, flush the batch
|
240 |
+
*/
|
241 |
+
private function autoFlush()
|
242 |
+
{
|
243 |
+
if ($this->config['autoflush']
|
244 |
+
&& count($this->queue) >= $this->config['threshold']
|
245 |
+
) {
|
246 |
+
// Flush only once. Unprocessed items are handled in a later flush.
|
247 |
+
$this->flush(false);
|
248 |
+
}
|
249 |
+
}
|
250 |
+
|
251 |
+
/**
|
252 |
+
* Determine the table name by looking at what was provided and what the
|
253 |
+
* WriteRequestBatch was originally configured with.
|
254 |
+
*
|
255 |
+
* @param string|null $table The table name.
|
256 |
+
*
|
257 |
+
* @return string
|
258 |
+
* @throws \RuntimeException if there was no table specified.
|
259 |
+
*/
|
260 |
+
private function determineTable($table)
|
261 |
+
{
|
262 |
+
$table = $table ?: $this->config['table'];
|
263 |
+
if (!$table) {
|
264 |
+
throw new \RuntimeException('There was no table specified.');
|
265 |
+
}
|
266 |
+
|
267 |
+
return $table;
|
268 |
+
}
|
269 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/DynamoDbStreams/DynamoDbStreamsClient.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\DynamoDbStreams;
|
3 |
+
|
4 |
+
use Aws\AwsClient;
|
5 |
+
use Aws\DynamoDb\DynamoDbClient;
|
6 |
+
|
7 |
+
/**
|
8 |
+
* This client is used to interact with the **Amazon DynamoDb Streams** service.
|
9 |
+
*
|
10 |
+
* @method \Aws\Result describeStream(array $args = [])
|
11 |
+
* @method \GuzzleHttp\Promise\Promise describeStreamAsync(array $args = [])
|
12 |
+
* @method \Aws\Result getRecords(array $args = [])
|
13 |
+
* @method \GuzzleHttp\Promise\Promise getRecordsAsync(array $args = [])
|
14 |
+
* @method \Aws\Result getShardIterator(array $args = [])
|
15 |
+
* @method \GuzzleHttp\Promise\Promise getShardIteratorAsync(array $args = [])
|
16 |
+
* @method \Aws\Result listStreams(array $args = [])
|
17 |
+
* @method \GuzzleHttp\Promise\Promise listStreamsAsync(array $args = [])
|
18 |
+
*/
|
19 |
+
class DynamoDbStreamsClient extends AwsClient
|
20 |
+
{
|
21 |
+
public static function getArguments()
|
22 |
+
{
|
23 |
+
$args = parent::getArguments();
|
24 |
+
$args['retries']['default'] = 11;
|
25 |
+
$args['retries']['fn'] = [DynamoDbClient::class, '_applyRetryConfig'];
|
26 |
+
|
27 |
+
return $args;
|
28 |
+
}
|
29 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/DynamoDbStreams/Exception/DynamoDbStreamsException.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\DynamoDbStreams\Exception;
|
3 |
+
|
4 |
+
use Aws\Exception\AwsException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Represents an error interacting with the Amazon DynamoDB Streams service.
|
8 |
+
*/
|
9 |
+
class DynamoDbStreamsException extends AwsException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Ec2/CopySnapshotMiddleware.php
ADDED
@@ -0,0 +1,78 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Ec2;
|
3 |
+
|
4 |
+
use Aws\AwsClientInterface;
|
5 |
+
use Aws\Signature\SignatureV4;
|
6 |
+
use Aws\Endpoint\EndpointProvider;
|
7 |
+
use Aws\CommandInterface;
|
8 |
+
use GuzzleHttp\Psr7\Uri;
|
9 |
+
use Psr\Http\Message\RequestInterface;
|
10 |
+
|
11 |
+
/**
|
12 |
+
* @internal Adds computed values to the CopySnapshot operation.
|
13 |
+
*/
|
14 |
+
class CopySnapshotMiddleware
|
15 |
+
{
|
16 |
+
private $client;
|
17 |
+
private $endpointProvider;
|
18 |
+
private $nextHandler;
|
19 |
+
|
20 |
+
public static function wrap(AwsClientInterface $client, callable $endpointProvider)
|
21 |
+
{
|
22 |
+
return function (callable $handler) use ($endpointProvider, $client) {
|
23 |
+
$f = new CopySnapshotMiddleware($endpointProvider, $client, $handler);
|
24 |
+
return $f;
|
25 |
+
};
|
26 |
+
}
|
27 |
+
|
28 |
+
public function __construct(
|
29 |
+
callable $endpointProvider,
|
30 |
+
AwsClientInterface $client,
|
31 |
+
callable $nextHandler
|
32 |
+
) {
|
33 |
+
$this->endpointProvider = $endpointProvider;
|
34 |
+
$this->client = $client;
|
35 |
+
$this->nextHandler = $nextHandler;
|
36 |
+
}
|
37 |
+
|
38 |
+
public function __invoke(CommandInterface $cmd, RequestInterface $request = null)
|
39 |
+
{
|
40 |
+
if ($cmd->getName() == 'CopySnapshot'
|
41 |
+
&& (!isset($cmd->__skipCopySnapshot))
|
42 |
+
) {
|
43 |
+
$cmd['PresignedUrl'] = $this->createPresignedUrl($this->client, $cmd);
|
44 |
+
$cmd['DestinationRegion'] = $this->client->getRegion();
|
45 |
+
}
|
46 |
+
|
47 |
+
$f = $this->nextHandler;
|
48 |
+
return $f($cmd, $request);
|
49 |
+
}
|
50 |
+
|
51 |
+
private function createPresignedUrl(
|
52 |
+
AwsClientInterface $client,
|
53 |
+
CommandInterface $cmd
|
54 |
+
) {
|
55 |
+
$newCmd = $client->getCommand('CopySnapshot', $cmd->toArray());
|
56 |
+
// Avoid infinite recursion by flagging the new command.
|
57 |
+
$newCmd->__skipCopySnapshot = true;
|
58 |
+
// Serialize a request for the CopySnapshot operation.
|
59 |
+
$request = \Aws\serialize($newCmd);
|
60 |
+
// Create the new endpoint for the target endpoint.
|
61 |
+
$endpoint = EndpointProvider::resolve($this->endpointProvider, [
|
62 |
+
'region' => $cmd['SourceRegion'],
|
63 |
+
'service' => 'ec2'
|
64 |
+
])['endpoint'];
|
65 |
+
|
66 |
+
// Set the request to hit the target endpoint.
|
67 |
+
$uri = $request->getUri()->withHost((new Uri($endpoint))->getHost());
|
68 |
+
$request = $request->withUri($uri);
|
69 |
+
// Create a presigned URL for our generated request.
|
70 |
+
$signer = new SignatureV4('ec2', $cmd['SourceRegion']);
|
71 |
+
|
72 |
+
return (string) $signer->presign(
|
73 |
+
SignatureV4::convertPostToGet($request),
|
74 |
+
$client->getCredentials()->wait(),
|
75 |
+
'+1 hour'
|
76 |
+
)->getUri();
|
77 |
+
}
|
78 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Ec2/Ec2Client.php
ADDED
@@ -0,0 +1,416 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Ec2;
|
3 |
+
|
4 |
+
use Aws\AwsClient;
|
5 |
+
use Aws\Api\Service;
|
6 |
+
use Aws\Api\DocModel;
|
7 |
+
use Aws\Api\ApiProvider;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Client used to interact with Amazon EC2.
|
11 |
+
*
|
12 |
+
* @method \Aws\Result acceptVpcPeeringConnection(array $args = [])
|
13 |
+
* @method \GuzzleHttp\Promise\Promise acceptVpcPeeringConnectionAsync(array $args = [])
|
14 |
+
* @method \Aws\Result allocateAddress(array $args = [])
|
15 |
+
* @method \GuzzleHttp\Promise\Promise allocateAddressAsync(array $args = [])
|
16 |
+
* @method \Aws\Result assignPrivateIpAddresses(array $args = [])
|
17 |
+
* @method \GuzzleHttp\Promise\Promise assignPrivateIpAddressesAsync(array $args = [])
|
18 |
+
* @method \Aws\Result associateAddress(array $args = [])
|
19 |
+
* @method \GuzzleHttp\Promise\Promise associateAddressAsync(array $args = [])
|
20 |
+
* @method \Aws\Result associateDhcpOptions(array $args = [])
|
21 |
+
* @method \GuzzleHttp\Promise\Promise associateDhcpOptionsAsync(array $args = [])
|
22 |
+
* @method \Aws\Result associateRouteTable(array $args = [])
|
23 |
+
* @method \GuzzleHttp\Promise\Promise associateRouteTableAsync(array $args = [])
|
24 |
+
* @method \Aws\Result attachClassicLinkVpc(array $args = [])
|
25 |
+
* @method \GuzzleHttp\Promise\Promise attachClassicLinkVpcAsync(array $args = [])
|
26 |
+
* @method \Aws\Result attachInternetGateway(array $args = [])
|
27 |
+
* @method \GuzzleHttp\Promise\Promise attachInternetGatewayAsync(array $args = [])
|
28 |
+
* @method \Aws\Result attachNetworkInterface(array $args = [])
|
29 |
+
* @method \GuzzleHttp\Promise\Promise attachNetworkInterfaceAsync(array $args = [])
|
30 |
+
* @method \Aws\Result attachVolume(array $args = [])
|
31 |
+
* @method \GuzzleHttp\Promise\Promise attachVolumeAsync(array $args = [])
|
32 |
+
* @method \Aws\Result attachVpnGateway(array $args = [])
|
33 |
+
* @method \GuzzleHttp\Promise\Promise attachVpnGatewayAsync(array $args = [])
|
34 |
+
* @method \Aws\Result authorizeSecurityGroupEgress(array $args = [])
|
35 |
+
* @method \GuzzleHttp\Promise\Promise authorizeSecurityGroupEgressAsync(array $args = [])
|
36 |
+
* @method \Aws\Result authorizeSecurityGroupIngress(array $args = [])
|
37 |
+
* @method \GuzzleHttp\Promise\Promise authorizeSecurityGroupIngressAsync(array $args = [])
|
38 |
+
* @method \Aws\Result bundleInstance(array $args = [])
|
39 |
+
* @method \GuzzleHttp\Promise\Promise bundleInstanceAsync(array $args = [])
|
40 |
+
* @method \Aws\Result cancelBundleTask(array $args = [])
|
41 |
+
* @method \GuzzleHttp\Promise\Promise cancelBundleTaskAsync(array $args = [])
|
42 |
+
* @method \Aws\Result cancelConversionTask(array $args = [])
|
43 |
+
* @method \GuzzleHttp\Promise\Promise cancelConversionTaskAsync(array $args = [])
|
44 |
+
* @method \Aws\Result cancelExportTask(array $args = [])
|
45 |
+
* @method \GuzzleHttp\Promise\Promise cancelExportTaskAsync(array $args = [])
|
46 |
+
* @method \Aws\Result cancelImportTask(array $args = [])
|
47 |
+
* @method \GuzzleHttp\Promise\Promise cancelImportTaskAsync(array $args = [])
|
48 |
+
* @method \Aws\Result cancelReservedInstancesListing(array $args = [])
|
49 |
+
* @method \GuzzleHttp\Promise\Promise cancelReservedInstancesListingAsync(array $args = [])
|
50 |
+
* @method \Aws\Result cancelSpotFleetRequests(array $args = [])
|
51 |
+
* @method \GuzzleHttp\Promise\Promise cancelSpotFleetRequestsAsync(array $args = [])
|
52 |
+
* @method \Aws\Result cancelSpotInstanceRequests(array $args = [])
|
53 |
+
* @method \GuzzleHttp\Promise\Promise cancelSpotInstanceRequestsAsync(array $args = [])
|
54 |
+
* @method \Aws\Result confirmProductInstance(array $args = [])
|
55 |
+
* @method \GuzzleHttp\Promise\Promise confirmProductInstanceAsync(array $args = [])
|
56 |
+
* @method \Aws\Result copyImage(array $args = [])
|
57 |
+
* @method \GuzzleHttp\Promise\Promise copyImageAsync(array $args = [])
|
58 |
+
* @method \Aws\Result copySnapshot(array $args = [])
|
59 |
+
* @method \GuzzleHttp\Promise\Promise copySnapshotAsync(array $args = [])
|
60 |
+
* @method \Aws\Result createCustomerGateway(array $args = [])
|
61 |
+
* @method \GuzzleHttp\Promise\Promise createCustomerGatewayAsync(array $args = [])
|
62 |
+
* @method \Aws\Result createDhcpOptions(array $args = [])
|
63 |
+
* @method \GuzzleHttp\Promise\Promise createDhcpOptionsAsync(array $args = [])
|
64 |
+
* @method \Aws\Result createFlowLogs(array $args = [])
|
65 |
+
* @method \GuzzleHttp\Promise\Promise createFlowLogsAsync(array $args = [])
|
66 |
+
* @method \Aws\Result createImage(array $args = [])
|
67 |
+
* @method \GuzzleHttp\Promise\Promise createImageAsync(array $args = [])
|
68 |
+
* @method \Aws\Result createInstanceExportTask(array $args = [])
|
69 |
+
* @method \GuzzleHttp\Promise\Promise createInstanceExportTaskAsync(array $args = [])
|
70 |
+
* @method \Aws\Result createInternetGateway(array $args = [])
|
71 |
+
* @method \GuzzleHttp\Promise\Promise createInternetGatewayAsync(array $args = [])
|
72 |
+
* @method \Aws\Result createKeyPair(array $args = [])
|
73 |
+
* @method \GuzzleHttp\Promise\Promise createKeyPairAsync(array $args = [])
|
74 |
+
* @method \Aws\Result createNetworkAcl(array $args = [])
|
75 |
+
* @method \GuzzleHttp\Promise\Promise createNetworkAclAsync(array $args = [])
|
76 |
+
* @method \Aws\Result createNetworkAclEntry(array $args = [])
|
77 |
+
* @method \GuzzleHttp\Promise\Promise createNetworkAclEntryAsync(array $args = [])
|
78 |
+
* @method \Aws\Result createNetworkInterface(array $args = [])
|
79 |
+
* @method \GuzzleHttp\Promise\Promise createNetworkInterfaceAsync(array $args = [])
|
80 |
+
* @method \Aws\Result createPlacementGroup(array $args = [])
|
81 |
+
* @method \GuzzleHttp\Promise\Promise createPlacementGroupAsync(array $args = [])
|
82 |
+
* @method \Aws\Result createReservedInstancesListing(array $args = [])
|
83 |
+
* @method \GuzzleHttp\Promise\Promise createReservedInstancesListingAsync(array $args = [])
|
84 |
+
* @method \Aws\Result createRoute(array $args = [])
|
85 |
+
* @method \GuzzleHttp\Promise\Promise createRouteAsync(array $args = [])
|
86 |
+
* @method \Aws\Result createRouteTable(array $args = [])
|
87 |
+
* @method \GuzzleHttp\Promise\Promise createRouteTableAsync(array $args = [])
|
88 |
+
* @method \Aws\Result createSecurityGroup(array $args = [])
|
89 |
+
* @method \GuzzleHttp\Promise\Promise createSecurityGroupAsync(array $args = [])
|
90 |
+
* @method \Aws\Result createSnapshot(array $args = [])
|
91 |
+
* @method \GuzzleHttp\Promise\Promise createSnapshotAsync(array $args = [])
|
92 |
+
* @method \Aws\Result createSpotDatafeedSubscription(array $args = [])
|
93 |
+
* @method \GuzzleHttp\Promise\Promise createSpotDatafeedSubscriptionAsync(array $args = [])
|
94 |
+
* @method \Aws\Result createSubnet(array $args = [])
|
95 |
+
* @method \GuzzleHttp\Promise\Promise createSubnetAsync(array $args = [])
|
96 |
+
* @method \Aws\Result createTags(array $args = [])
|
97 |
+
* @method \GuzzleHttp\Promise\Promise createTagsAsync(array $args = [])
|
98 |
+
* @method \Aws\Result createVolume(array $args = [])
|
99 |
+
* @method \GuzzleHttp\Promise\Promise createVolumeAsync(array $args = [])
|
100 |
+
* @method \Aws\Result createVpc(array $args = [])
|
101 |
+
* @method \GuzzleHttp\Promise\Promise createVpcAsync(array $args = [])
|
102 |
+
* @method \Aws\Result createVpcEndpoint(array $args = [])
|
103 |
+
* @method \GuzzleHttp\Promise\Promise createVpcEndpointAsync(array $args = [])
|
104 |
+
* @method \Aws\Result createVpcPeeringConnection(array $args = [])
|
105 |
+
* @method \GuzzleHttp\Promise\Promise createVpcPeeringConnectionAsync(array $args = [])
|
106 |
+
* @method \Aws\Result createVpnConnection(array $args = [])
|
107 |
+
* @method \GuzzleHttp\Promise\Promise createVpnConnectionAsync(array $args = [])
|
108 |
+
* @method \Aws\Result createVpnConnectionRoute(array $args = [])
|
109 |
+
* @method \GuzzleHttp\Promise\Promise createVpnConnectionRouteAsync(array $args = [])
|
110 |
+
* @method \Aws\Result createVpnGateway(array $args = [])
|
111 |
+
* @method \GuzzleHttp\Promise\Promise createVpnGatewayAsync(array $args = [])
|
112 |
+
* @method \Aws\Result deleteCustomerGateway(array $args = [])
|
113 |
+
* @method \GuzzleHttp\Promise\Promise deleteCustomerGatewayAsync(array $args = [])
|
114 |
+
* @method \Aws\Result deleteDhcpOptions(array $args = [])
|
115 |
+
* @method \GuzzleHttp\Promise\Promise deleteDhcpOptionsAsync(array $args = [])
|
116 |
+
* @method \Aws\Result deleteFlowLogs(array $args = [])
|
117 |
+
* @method \GuzzleHttp\Promise\Promise deleteFlowLogsAsync(array $args = [])
|
118 |
+
* @method \Aws\Result deleteInternetGateway(array $args = [])
|
119 |
+
* @method \GuzzleHttp\Promise\Promise deleteInternetGatewayAsync(array $args = [])
|
120 |
+
* @method \Aws\Result deleteKeyPair(array $args = [])
|
121 |
+
* @method \GuzzleHttp\Promise\Promise deleteKeyPairAsync(array $args = [])
|
122 |
+
* @method \Aws\Result deleteNetworkAcl(array $args = [])
|
123 |
+
* @method \GuzzleHttp\Promise\Promise deleteNetworkAclAsync(array $args = [])
|
124 |
+
* @method \Aws\Result deleteNetworkAclEntry(array $args = [])
|
125 |
+
* @method \GuzzleHttp\Promise\Promise deleteNetworkAclEntryAsync(array $args = [])
|
126 |
+
* @method \Aws\Result deleteNetworkInterface(array $args = [])
|
127 |
+
* @method \GuzzleHttp\Promise\Promise deleteNetworkInterfaceAsync(array $args = [])
|
128 |
+
* @method \Aws\Result deletePlacementGroup(array $args = [])
|
129 |
+
* @method \GuzzleHttp\Promise\Promise deletePlacementGroupAsync(array $args = [])
|
130 |
+
* @method \Aws\Result deleteRoute(array $args = [])
|
131 |
+
* @method \GuzzleHttp\Promise\Promise deleteRouteAsync(array $args = [])
|
132 |
+
* @method \Aws\Result deleteRouteTable(array $args = [])
|
133 |
+
* @method \GuzzleHttp\Promise\Promise deleteRouteTableAsync(array $args = [])
|
134 |
+
* @method \Aws\Result deleteSecurityGroup(array $args = [])
|
135 |
+
* @method \GuzzleHttp\Promise\Promise deleteSecurityGroupAsync(array $args = [])
|
136 |
+
* @method \Aws\Result deleteSnapshot(array $args = [])
|
137 |
+
* @method \GuzzleHttp\Promise\Promise deleteSnapshotAsync(array $args = [])
|
138 |
+
* @method \Aws\Result deleteSpotDatafeedSubscription(array $args = [])
|
139 |
+
* @method \GuzzleHttp\Promise\Promise deleteSpotDatafeedSubscriptionAsync(array $args = [])
|
140 |
+
* @method \Aws\Result deleteSubnet(array $args = [])
|
141 |
+
* @method \GuzzleHttp\Promise\Promise deleteSubnetAsync(array $args = [])
|
142 |
+
* @method \Aws\Result deleteTags(array $args = [])
|
143 |
+
* @method \GuzzleHttp\Promise\Promise deleteTagsAsync(array $args = [])
|
144 |
+
* @method \Aws\Result deleteVolume(array $args = [])
|
145 |
+
* @method \GuzzleHttp\Promise\Promise deleteVolumeAsync(array $args = [])
|
146 |
+
* @method \Aws\Result deleteVpc(array $args = [])
|
147 |
+
* @method \GuzzleHttp\Promise\Promise deleteVpcAsync(array $args = [])
|
148 |
+
* @method \Aws\Result deleteVpcEndpoints(array $args = [])
|
149 |
+
* @method \GuzzleHttp\Promise\Promise deleteVpcEndpointsAsync(array $args = [])
|
150 |
+
* @method \Aws\Result deleteVpcPeeringConnection(array $args = [])
|
151 |
+
* @method \GuzzleHttp\Promise\Promise deleteVpcPeeringConnectionAsync(array $args = [])
|
152 |
+
* @method \Aws\Result deleteVpnConnection(array $args = [])
|
153 |
+
* @method \GuzzleHttp\Promise\Promise deleteVpnConnectionAsync(array $args = [])
|
154 |
+
* @method \Aws\Result deleteVpnConnectionRoute(array $args = [])
|
155 |
+
* @method \GuzzleHttp\Promise\Promise deleteVpnConnectionRouteAsync(array $args = [])
|
156 |
+
* @method \Aws\Result deleteVpnGateway(array $args = [])
|
157 |
+
* @method \GuzzleHttp\Promise\Promise deleteVpnGatewayAsync(array $args = [])
|
158 |
+
* @method \Aws\Result deregisterImage(array $args = [])
|
159 |
+
* @method \GuzzleHttp\Promise\Promise deregisterImageAsync(array $args = [])
|
160 |
+
* @method \Aws\Result describeAccountAttributes(array $args = [])
|
161 |
+
* @method \GuzzleHttp\Promise\Promise describeAccountAttributesAsync(array $args = [])
|
162 |
+
* @method \Aws\Result describeAddresses(array $args = [])
|
163 |
+
* @method \GuzzleHttp\Promise\Promise describeAddressesAsync(array $args = [])
|
164 |
+
* @method \Aws\Result describeAvailabilityZones(array $args = [])
|
165 |
+
* @method \GuzzleHttp\Promise\Promise describeAvailabilityZonesAsync(array $args = [])
|
166 |
+
* @method \Aws\Result describeBundleTasks(array $args = [])
|
167 |
+
* @method \GuzzleHttp\Promise\Promise describeBundleTasksAsync(array $args = [])
|
168 |
+
* @method \Aws\Result describeClassicLinkInstances(array $args = [])
|
169 |
+
* @method \GuzzleHttp\Promise\Promise describeClassicLinkInstancesAsync(array $args = [])
|
170 |
+
* @method \Aws\Result describeConversionTasks(array $args = [])
|
171 |
+
* @method \GuzzleHttp\Promise\Promise describeConversionTasksAsync(array $args = [])
|
172 |
+
* @method \Aws\Result describeCustomerGateways(array $args = [])
|
173 |
+
* @method \GuzzleHttp\Promise\Promise describeCustomerGatewaysAsync(array $args = [])
|
174 |
+
* @method \Aws\Result describeDhcpOptions(array $args = [])
|
175 |
+
* @method \GuzzleHttp\Promise\Promise describeDhcpOptionsAsync(array $args = [])
|
176 |
+
* @method \Aws\Result describeExportTasks(array $args = [])
|
177 |
+
* @method \GuzzleHttp\Promise\Promise describeExportTasksAsync(array $args = [])
|
178 |
+
* @method \Aws\Result describeFlowLogs(array $args = [])
|
179 |
+
* @method \GuzzleHttp\Promise\Promise describeFlowLogsAsync(array $args = [])
|
180 |
+
* @method \Aws\Result describeImageAttribute(array $args = [])
|
181 |
+
* @method \GuzzleHttp\Promise\Promise describeImageAttributeAsync(array $args = [])
|
182 |
+
* @method \Aws\Result describeImages(array $args = [])
|
183 |
+
* @method \GuzzleHttp\Promise\Promise describeImagesAsync(array $args = [])
|
184 |
+
* @method \Aws\Result describeImportImageTasks(array $args = [])
|
185 |
+
* @method \GuzzleHttp\Promise\Promise describeImportImageTasksAsync(array $args = [])
|
186 |
+
* @method \Aws\Result describeImportSnapshotTasks(array $args = [])
|
187 |
+
* @method \GuzzleHttp\Promise\Promise describeImportSnapshotTasksAsync(array $args = [])
|
188 |
+
* @method \Aws\Result describeInstanceAttribute(array $args = [])
|
189 |
+
* @method \GuzzleHttp\Promise\Promise describeInstanceAttributeAsync(array $args = [])
|
190 |
+
* @method \Aws\Result describeInstanceStatus(array $args = [])
|
191 |
+
* @method \GuzzleHttp\Promise\Promise describeInstanceStatusAsync(array $args = [])
|
192 |
+
* @method \Aws\Result describeInstances(array $args = [])
|
193 |
+
* @method \GuzzleHttp\Promise\Promise describeInstancesAsync(array $args = [])
|
194 |
+
* @method \Aws\Result describeInternetGateways(array $args = [])
|
195 |
+
* @method \GuzzleHttp\Promise\Promise describeInternetGatewaysAsync(array $args = [])
|
196 |
+
* @method \Aws\Result describeKeyPairs(array $args = [])
|
197 |
+
* @method \GuzzleHttp\Promise\Promise describeKeyPairsAsync(array $args = [])
|
198 |
+
* @method \Aws\Result describeMovingAddresses(array $args = [])
|
199 |
+
* @method \GuzzleHttp\Promise\Promise describeMovingAddressesAsync(array $args = [])
|
200 |
+
* @method \Aws\Result describeNetworkAcls(array $args = [])
|
201 |
+
* @method \GuzzleHttp\Promise\Promise describeNetworkAclsAsync(array $args = [])
|
202 |
+
* @method \Aws\Result describeNetworkInterfaceAttribute(array $args = [])
|
203 |
+
* @method \GuzzleHttp\Promise\Promise describeNetworkInterfaceAttributeAsync(array $args = [])
|
204 |
+
* @method \Aws\Result describeNetworkInterfaces(array $args = [])
|
205 |
+
* @method \GuzzleHttp\Promise\Promise describeNetworkInterfacesAsync(array $args = [])
|
206 |
+
* @method \Aws\Result describePlacementGroups(array $args = [])
|
207 |
+
* @method \GuzzleHttp\Promise\Promise describePlacementGroupsAsync(array $args = [])
|
208 |
+
* @method \Aws\Result describePrefixLists(array $args = [])
|
209 |
+
* @method \GuzzleHttp\Promise\Promise describePrefixListsAsync(array $args = [])
|
210 |
+
* @method \Aws\Result describeRegions(array $args = [])
|
211 |
+
* @method \GuzzleHttp\Promise\Promise describeRegionsAsync(array $args = [])
|
212 |
+
* @method \Aws\Result describeReservedInstances(array $args = [])
|
213 |
+
* @method \GuzzleHttp\Promise\Promise describeReservedInstancesAsync(array $args = [])
|
214 |
+
* @method \Aws\Result describeReservedInstancesListings(array $args = [])
|
215 |
+
* @method \GuzzleHttp\Promise\Promise describeReservedInstancesListingsAsync(array $args = [])
|
216 |
+
* @method \Aws\Result describeReservedInstancesModifications(array $args = [])
|
217 |
+
* @method \GuzzleHttp\Promise\Promise describeReservedInstancesModificationsAsync(array $args = [])
|
218 |
+
* @method \Aws\Result describeReservedInstancesOfferings(array $args = [])
|
219 |
+
* @method \GuzzleHttp\Promise\Promise describeReservedInstancesOfferingsAsync(array $args = [])
|
220 |
+
* @method \Aws\Result describeRouteTables(array $args = [])
|
221 |
+
* @method \GuzzleHttp\Promise\Promise describeRouteTablesAsync(array $args = [])
|
222 |
+
* @method \Aws\Result describeSecurityGroups(array $args = [])
|
223 |
+
* @method \GuzzleHttp\Promise\Promise describeSecurityGroupsAsync(array $args = [])
|
224 |
+
* @method \Aws\Result describeSnapshotAttribute(array $args = [])
|
225 |
+
* @method \GuzzleHttp\Promise\Promise describeSnapshotAttributeAsync(array $args = [])
|
226 |
+
* @method \Aws\Result describeSnapshots(array $args = [])
|
227 |
+
* @method \GuzzleHttp\Promise\Promise describeSnapshotsAsync(array $args = [])
|
228 |
+
* @method \Aws\Result describeSpotDatafeedSubscription(array $args = [])
|
229 |
+
* @method \GuzzleHttp\Promise\Promise describeSpotDatafeedSubscriptionAsync(array $args = [])
|
230 |
+
* @method \Aws\Result describeSpotFleetInstances(array $args = [])
|
231 |
+
* @method \GuzzleHttp\Promise\Promise describeSpotFleetInstancesAsync(array $args = [])
|
232 |
+
* @method \Aws\Result describeSpotFleetRequestHistory(array $args = [])
|
233 |
+
* @method \GuzzleHttp\Promise\Promise describeSpotFleetRequestHistoryAsync(array $args = [])
|
234 |
+
* @method \Aws\Result describeSpotFleetRequests(array $args = [])
|
235 |
+
* @method \GuzzleHttp\Promise\Promise describeSpotFleetRequestsAsync(array $args = [])
|
236 |
+
* @method \Aws\Result describeSpotInstanceRequests(array $args = [])
|
237 |
+
* @method \GuzzleHttp\Promise\Promise describeSpotInstanceRequestsAsync(array $args = [])
|
238 |
+
* @method \Aws\Result describeSpotPriceHistory(array $args = [])
|
239 |
+
* @method \GuzzleHttp\Promise\Promise describeSpotPriceHistoryAsync(array $args = [])
|
240 |
+
* @method \Aws\Result describeSubnets(array $args = [])
|
241 |
+
* @method \GuzzleHttp\Promise\Promise describeSubnetsAsync(array $args = [])
|
242 |
+
* @method \Aws\Result describeTags(array $args = [])
|
243 |
+
* @method \GuzzleHttp\Promise\Promise describeTagsAsync(array $args = [])
|
244 |
+
* @method \Aws\Result describeVolumeAttribute(array $args = [])
|
245 |
+
* @method \GuzzleHttp\Promise\Promise describeVolumeAttributeAsync(array $args = [])
|
246 |
+
* @method \Aws\Result describeVolumeStatus(array $args = [])
|
247 |
+
* @method \GuzzleHttp\Promise\Promise describeVolumeStatusAsync(array $args = [])
|
248 |
+
* @method \Aws\Result describeVolumes(array $args = [])
|
249 |
+
* @method \GuzzleHttp\Promise\Promise describeVolumesAsync(array $args = [])
|
250 |
+
* @method \Aws\Result describeVpcAttribute(array $args = [])
|
251 |
+
* @method \GuzzleHttp\Promise\Promise describeVpcAttributeAsync(array $args = [])
|
252 |
+
* @method \Aws\Result describeVpcClassicLink(array $args = [])
|
253 |
+
* @method \GuzzleHttp\Promise\Promise describeVpcClassicLinkAsync(array $args = [])
|
254 |
+
* @method \Aws\Result describeVpcEndpointServices(array $args = [])
|
255 |
+
* @method \GuzzleHttp\Promise\Promise describeVpcEndpointServicesAsync(array $args = [])
|
256 |
+
* @method \Aws\Result describeVpcEndpoints(array $args = [])
|
257 |
+
* @method \GuzzleHttp\Promise\Promise describeVpcEndpointsAsync(array $args = [])
|
258 |
+
* @method \Aws\Result describeVpcPeeringConnections(array $args = [])
|
259 |
+
* @method \GuzzleHttp\Promise\Promise describeVpcPeeringConnectionsAsync(array $args = [])
|
260 |
+
* @method \Aws\Result describeVpcs(array $args = [])
|
261 |
+
* @method \GuzzleHttp\Promise\Promise describeVpcsAsync(array $args = [])
|
262 |
+
* @method \Aws\Result describeVpnConnections(array $args = [])
|
263 |
+
* @method \GuzzleHttp\Promise\Promise describeVpnConnectionsAsync(array $args = [])
|
264 |
+
* @method \Aws\Result describeVpnGateways(array $args = [])
|
265 |
+
* @method \GuzzleHttp\Promise\Promise describeVpnGatewaysAsync(array $args = [])
|
266 |
+
* @method \Aws\Result detachClassicLinkVpc(array $args = [])
|
267 |
+
* @method \GuzzleHttp\Promise\Promise detachClassicLinkVpcAsync(array $args = [])
|
268 |
+
* @method \Aws\Result detachInternetGateway(array $args = [])
|
269 |
+
* @method \GuzzleHttp\Promise\Promise detachInternetGatewayAsync(array $args = [])
|
270 |
+
* @method \Aws\Result detachNetworkInterface(array $args = [])
|
271 |
+
* @method \GuzzleHttp\Promise\Promise detachNetworkInterfaceAsync(array $args = [])
|
272 |
+
* @method \Aws\Result detachVolume(array $args = [])
|
273 |
+
* @method \GuzzleHttp\Promise\Promise detachVolumeAsync(array $args = [])
|
274 |
+
* @method \Aws\Result detachVpnGateway(array $args = [])
|
275 |
+
* @method \GuzzleHttp\Promise\Promise detachVpnGatewayAsync(array $args = [])
|
276 |
+
* @method \Aws\Result disableVgwRoutePropagation(array $args = [])
|
277 |
+
* @method \GuzzleHttp\Promise\Promise disableVgwRoutePropagationAsync(array $args = [])
|
278 |
+
* @method \Aws\Result disableVpcClassicLink(array $args = [])
|
279 |
+
* @method \GuzzleHttp\Promise\Promise disableVpcClassicLinkAsync(array $args = [])
|
280 |
+
* @method \Aws\Result disassociateAddress(array $args = [])
|
281 |
+
* @method \GuzzleHttp\Promise\Promise disassociateAddressAsync(array $args = [])
|
282 |
+
* @method \Aws\Result disassociateRouteTable(array $args = [])
|
283 |
+
* @method \GuzzleHttp\Promise\Promise disassociateRouteTableAsync(array $args = [])
|
284 |
+
* @method \Aws\Result enableVgwRoutePropagation(array $args = [])
|
285 |
+
* @method \GuzzleHttp\Promise\Promise enableVgwRoutePropagationAsync(array $args = [])
|
286 |
+
* @method \Aws\Result enableVolumeIO(array $args = [])
|
287 |
+
* @method \GuzzleHttp\Promise\Promise enableVolumeIOAsync(array $args = [])
|
288 |
+
* @method \Aws\Result enableVpcClassicLink(array $args = [])
|
289 |
+
* @method \GuzzleHttp\Promise\Promise enableVpcClassicLinkAsync(array $args = [])
|
290 |
+
* @method \Aws\Result getConsoleOutput(array $args = [])
|
291 |
+
* @method \GuzzleHttp\Promise\Promise getConsoleOutputAsync(array $args = [])
|
292 |
+
* @method \Aws\Result getPasswordData(array $args = [])
|
293 |
+
* @method \GuzzleHttp\Promise\Promise getPasswordDataAsync(array $args = [])
|
294 |
+
* @method \Aws\Result importImage(array $args = [])
|
295 |
+
* @method \GuzzleHttp\Promise\Promise importImageAsync(array $args = [])
|
296 |
+
* @method \Aws\Result importInstance(array $args = [])
|
297 |
+
* @method \GuzzleHttp\Promise\Promise importInstanceAsync(array $args = [])
|
298 |
+
* @method \Aws\Result importKeyPair(array $args = [])
|
299 |
+
* @method \GuzzleHttp\Promise\Promise importKeyPairAsync(array $args = [])
|
300 |
+
* @method \Aws\Result importSnapshot(array $args = [])
|
301 |
+
* @method \GuzzleHttp\Promise\Promise importSnapshotAsync(array $args = [])
|
302 |
+
* @method \Aws\Result importVolume(array $args = [])
|
303 |
+
* @method \GuzzleHttp\Promise\Promise importVolumeAsync(array $args = [])
|
304 |
+
* @method \Aws\Result modifyImageAttribute(array $args = [])
|
305 |
+
* @method \GuzzleHttp\Promise\Promise modifyImageAttributeAsync(array $args = [])
|
306 |
+
* @method \Aws\Result modifyInstanceAttribute(array $args = [])
|
307 |
+
* @method \GuzzleHttp\Promise\Promise modifyInstanceAttributeAsync(array $args = [])
|
308 |
+
* @method \Aws\Result modifyNetworkInterfaceAttribute(array $args = [])
|
309 |
+
* @method \GuzzleHttp\Promise\Promise modifyNetworkInterfaceAttributeAsync(array $args = [])
|
310 |
+
* @method \Aws\Result modifyReservedInstances(array $args = [])
|
311 |
+
* @method \GuzzleHttp\Promise\Promise modifyReservedInstancesAsync(array $args = [])
|
312 |
+
* @method \Aws\Result modifySnapshotAttribute(array $args = [])
|
313 |
+
* @method \GuzzleHttp\Promise\Promise modifySnapshotAttributeAsync(array $args = [])
|
314 |
+
* @method \Aws\Result modifySpotFleetRequest(array $args = [])
|
315 |
+
* @method \GuzzleHttp\Promise\Promise modifySpotFleetRequestAsync(array $args = [])
|
316 |
+
* @method \Aws\Result modifySubnetAttribute(array $args = [])
|
317 |
+
* @method \GuzzleHttp\Promise\Promise modifySubnetAttributeAsync(array $args = [])
|
318 |
+
* @method \Aws\Result modifyVolumeAttribute(array $args = [])
|
319 |
+
* @method \GuzzleHttp\Promise\Promise modifyVolumeAttributeAsync(array $args = [])
|
320 |
+
* @method \Aws\Result modifyVpcAttribute(array $args = [])
|
321 |
+
* @method \GuzzleHttp\Promise\Promise modifyVpcAttributeAsync(array $args = [])
|
322 |
+
* @method \Aws\Result modifyVpcEndpoint(array $args = [])
|
323 |
+
* @method \GuzzleHttp\Promise\Promise modifyVpcEndpointAsync(array $args = [])
|
324 |
+
* @method \Aws\Result monitorInstances(array $args = [])
|
325 |
+
* @method \GuzzleHttp\Promise\Promise monitorInstancesAsync(array $args = [])
|
326 |
+
* @method \Aws\Result moveAddressToVpc(array $args = [])
|
327 |
+
* @method \GuzzleHttp\Promise\Promise moveAddressToVpcAsync(array $args = [])
|
328 |
+
* @method \Aws\Result purchaseReservedInstancesOffering(array $args = [])
|
329 |
+
* @method \GuzzleHttp\Promise\Promise purchaseReservedInstancesOfferingAsync(array $args = [])
|
330 |
+
* @method \Aws\Result rebootInstances(array $args = [])
|
331 |
+
* @method \GuzzleHttp\Promise\Promise rebootInstancesAsync(array $args = [])
|
332 |
+
* @method \Aws\Result registerImage(array $args = [])
|
333 |
+
* @method \GuzzleHttp\Promise\Promise registerImageAsync(array $args = [])
|
334 |
+
* @method \Aws\Result rejectVpcPeeringConnection(array $args = [])
|
335 |
+
* @method \GuzzleHttp\Promise\Promise rejectVpcPeeringConnectionAsync(array $args = [])
|
336 |
+
* @method \Aws\Result releaseAddress(array $args = [])
|
337 |
+
* @method \GuzzleHttp\Promise\Promise releaseAddressAsync(array $args = [])
|
338 |
+
* @method \Aws\Result replaceNetworkAclAssociation(array $args = [])
|
339 |
+
* @method \GuzzleHttp\Promise\Promise replaceNetworkAclAssociationAsync(array $args = [])
|
340 |
+
* @method \Aws\Result replaceNetworkAclEntry(array $args = [])
|
341 |
+
* @method \GuzzleHttp\Promise\Promise replaceNetworkAclEntryAsync(array $args = [])
|
342 |
+
* @method \Aws\Result replaceRoute(array $args = [])
|
343 |
+
* @method \GuzzleHttp\Promise\Promise replaceRouteAsync(array $args = [])
|
344 |
+
* @method \Aws\Result replaceRouteTableAssociation(array $args = [])
|
345 |
+
* @method \GuzzleHttp\Promise\Promise replaceRouteTableAssociationAsync(array $args = [])
|
346 |
+
* @method \Aws\Result reportInstanceStatus(array $args = [])
|
347 |
+
* @method \GuzzleHttp\Promise\Promise reportInstanceStatusAsync(array $args = [])
|
348 |
+
* @method \Aws\Result requestSpotFleet(array $args = [])
|
349 |
+
* @method \GuzzleHttp\Promise\Promise requestSpotFleetAsync(array $args = [])
|
350 |
+
* @method \Aws\Result requestSpotInstances(array $args = [])
|
351 |
+
* @method \GuzzleHttp\Promise\Promise requestSpotInstancesAsync(array $args = [])
|
352 |
+
* @method \Aws\Result resetImageAttribute(array $args = [])
|
353 |
+
* @method \GuzzleHttp\Promise\Promise resetImageAttributeAsync(array $args = [])
|
354 |
+
* @method \Aws\Result resetInstanceAttribute(array $args = [])
|
355 |
+
* @method \GuzzleHttp\Promise\Promise resetInstanceAttributeAsync(array $args = [])
|
356 |
+
* @method \Aws\Result resetNetworkInterfaceAttribute(array $args = [])
|
357 |
+
* @method \GuzzleHttp\Promise\Promise resetNetworkInterfaceAttributeAsync(array $args = [])
|
358 |
+
* @method \Aws\Result resetSnapshotAttribute(array $args = [])
|
359 |
+
* @method \GuzzleHttp\Promise\Promise resetSnapshotAttributeAsync(array $args = [])
|
360 |
+
* @method \Aws\Result restoreAddressToClassic(array $args = [])
|
361 |
+
* @method \GuzzleHttp\Promise\Promise restoreAddressToClassicAsync(array $args = [])
|
362 |
+
* @method \Aws\Result revokeSecurityGroupEgress(array $args = [])
|
363 |
+
* @method \GuzzleHttp\Promise\Promise revokeSecurityGroupEgressAsync(array $args = [])
|
364 |
+
* @method \Aws\Result revokeSecurityGroupIngress(array $args = [])
|
365 |
+
* @method \GuzzleHttp\Promise\Promise revokeSecurityGroupIngressAsync(array $args = [])
|
366 |
+
* @method \Aws\Result runInstances(array $args = [])
|
367 |
+
* @method \GuzzleHttp\Promise\Promise runInstancesAsync(array $args = [])
|
368 |
+
* @method \Aws\Result startInstances(array $args = [])
|
369 |
+
* @method \GuzzleHttp\Promise\Promise startInstancesAsync(array $args = [])
|
370 |
+
* @method \Aws\Result stopInstances(array $args = [])
|
371 |
+
* @method \GuzzleHttp\Promise\Promise stopInstancesAsync(array $args = [])
|
372 |
+
* @method \Aws\Result terminateInstances(array $args = [])
|
373 |
+
* @method \GuzzleHttp\Promise\Promise terminateInstancesAsync(array $args = [])
|
374 |
+
* @method \Aws\Result unassignPrivateIpAddresses(array $args = [])
|
375 |
+
* @method \GuzzleHttp\Promise\Promise unassignPrivateIpAddressesAsync(array $args = [])
|
376 |
+
* @method \Aws\Result unmonitorInstances(array $args = [])
|
377 |
+
* @method \GuzzleHttp\Promise\Promise unmonitorInstancesAsync(array $args = [])
|
378 |
+
*/
|
379 |
+
class Ec2Client extends AwsClient
|
380 |
+
{
|
381 |
+
public function __construct(array $args)
|
382 |
+
{
|
383 |
+
$args['with_resolved'] = function (array $args) {
|
384 |
+
$this->getHandlerList()->appendInit(
|
385 |
+
CopySnapshotMiddleware::wrap(
|
386 |
+
$this,
|
387 |
+
$args['endpoint_provider']
|
388 |
+
),
|
389 |
+
'ec2.copy_snapshot'
|
390 |
+
);
|
391 |
+
};
|
392 |
+
|
393 |
+
parent::__construct($args);
|
394 |
+
}
|
395 |
+
|
396 |
+
/**
|
397 |
+
* @internal
|
398 |
+
* @codeCoverageIgnore
|
399 |
+
*/
|
400 |
+
public static function applyDocFilters(array $api, array $docs)
|
401 |
+
{
|
402 |
+
// Several copy snapshot parameters are optional.
|
403 |
+
$docs['shapes']['String']['refs']['CopySnapshotRequest$PresignedUrl']
|
404 |
+
= '<div class="alert alert-info">The SDK will compute this value '
|
405 |
+
. 'for you on your behalf.</div>';
|
406 |
+
$docs['shapes']['String']['refs']['CopySnapshotRequest$DestinationRegion']
|
407 |
+
= '<div class="alert alert-info">The SDK will populate this '
|
408 |
+
. 'parameter on your behalf using the configured region value of '
|
409 |
+
. 'the client.</div>';
|
410 |
+
|
411 |
+
return [
|
412 |
+
new Service($api, ApiProvider::defaultProvider()),
|
413 |
+
new DocModel($docs)
|
414 |
+
];
|
415 |
+
}
|
416 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Ec2/Exception/Ec2Exception.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Ec2\Exception;
|
3 |
+
|
4 |
+
use Aws\Exception\AwsException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Represents an error interacting with the Amazon Elastic Compute Cloud service.
|
8 |
+
*/
|
9 |
+
class Ec2Exception extends AwsException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Ecs/EcsClient.php
ADDED
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Ecs;
|
3 |
+
|
4 |
+
use Aws\AwsClient;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* This client is used to interact with **Amazon ECS**.
|
8 |
+
*
|
9 |
+
* @method \Aws\Result createCluster(array $args = [])
|
10 |
+
* @method \GuzzleHttp\Promise\Promise createClusterAsync(array $args = [])
|
11 |
+
* @method \Aws\Result createService(array $args = [])
|
12 |
+
* @method \GuzzleHttp\Promise\Promise createServiceAsync(array $args = [])
|
13 |
+
* @method \Aws\Result deleteCluster(array $args = [])
|
14 |
+
* @method \GuzzleHttp\Promise\Promise deleteClusterAsync(array $args = [])
|
15 |
+
* @method \Aws\Result deleteService(array $args = [])
|
16 |
+
* @method \GuzzleHttp\Promise\Promise deleteServiceAsync(array $args = [])
|
17 |
+
* @method \Aws\Result deregisterContainerInstance(array $args = [])
|
18 |
+
* @method \GuzzleHttp\Promise\Promise deregisterContainerInstanceAsync(array $args = [])
|
19 |
+
* @method \Aws\Result deregisterTaskDefinition(array $args = [])
|
20 |
+
* @method \GuzzleHttp\Promise\Promise deregisterTaskDefinitionAsync(array $args = [])
|
21 |
+
* @method \Aws\Result describeClusters(array $args = [])
|
22 |
+
* @method \GuzzleHttp\Promise\Promise describeClustersAsync(array $args = [])
|
23 |
+
* @method \Aws\Result describeContainerInstances(array $args = [])
|
24 |
+
* @method \GuzzleHttp\Promise\Promise describeContainerInstancesAsync(array $args = [])
|
25 |
+
* @method \Aws\Result describeServices(array $args = [])
|
26 |
+
* @method \GuzzleHttp\Promise\Promise describeServicesAsync(array $args = [])
|
27 |
+
* @method \Aws\Result describeTaskDefinition(array $args = [])
|
28 |
+
* @method \GuzzleHttp\Promise\Promise describeTaskDefinitionAsync(array $args = [])
|
29 |
+
* @method \Aws\Result describeTasks(array $args = [])
|
30 |
+
* @method \GuzzleHttp\Promise\Promise describeTasksAsync(array $args = [])
|
31 |
+
* @method \Aws\Result discoverPollEndpoint(array $args = [])
|
32 |
+
* @method \GuzzleHttp\Promise\Promise discoverPollEndpointAsync(array $args = [])
|
33 |
+
* @method \Aws\Result listClusters(array $args = [])
|
34 |
+
* @method \GuzzleHttp\Promise\Promise listClustersAsync(array $args = [])
|
35 |
+
* @method \Aws\Result listContainerInstances(array $args = [])
|
36 |
+
* @method \GuzzleHttp\Promise\Promise listContainerInstancesAsync(array $args = [])
|
37 |
+
* @method \Aws\Result listServices(array $args = [])
|
38 |
+
* @method \GuzzleHttp\Promise\Promise listServicesAsync(array $args = [])
|
39 |
+
* @method \Aws\Result listTaskDefinitionFamilies(array $args = [])
|
40 |
+
* @method \GuzzleHttp\Promise\Promise listTaskDefinitionFamiliesAsync(array $args = [])
|
41 |
+
* @method \Aws\Result listTaskDefinitions(array $args = [])
|
42 |
+
* @method \GuzzleHttp\Promise\Promise listTaskDefinitionsAsync(array $args = [])
|
43 |
+
* @method \Aws\Result listTasks(array $args = [])
|
44 |
+
* @method \GuzzleHttp\Promise\Promise listTasksAsync(array $args = [])
|
45 |
+
* @method \Aws\Result registerContainerInstance(array $args = [])
|
46 |
+
* @method \GuzzleHttp\Promise\Promise registerContainerInstanceAsync(array $args = [])
|
47 |
+
* @method \Aws\Result registerTaskDefinition(array $args = [])
|
48 |
+
* @method \GuzzleHttp\Promise\Promise registerTaskDefinitionAsync(array $args = [])
|
49 |
+
* @method \Aws\Result runTask(array $args = [])
|
50 |
+
* @method \GuzzleHttp\Promise\Promise runTaskAsync(array $args = [])
|
51 |
+
* @method \Aws\Result startTask(array $args = [])
|
52 |
+
* @method \GuzzleHttp\Promise\Promise startTaskAsync(array $args = [])
|
53 |
+
* @method \Aws\Result stopTask(array $args = [])
|
54 |
+
* @method \GuzzleHttp\Promise\Promise stopTaskAsync(array $args = [])
|
55 |
+
* @method \Aws\Result submitContainerStateChange(array $args = [])
|
56 |
+
* @method \GuzzleHttp\Promise\Promise submitContainerStateChangeAsync(array $args = [])
|
57 |
+
* @method \Aws\Result submitTaskStateChange(array $args = [])
|
58 |
+
* @method \GuzzleHttp\Promise\Promise submitTaskStateChangeAsync(array $args = [])
|
59 |
+
* @method \Aws\Result updateContainerAgent(array $args = [])
|
60 |
+
* @method \GuzzleHttp\Promise\Promise updateContainerAgentAsync(array $args = [])
|
61 |
+
* @method \Aws\Result updateService(array $args = [])
|
62 |
+
* @method \GuzzleHttp\Promise\Promise updateServiceAsync(array $args = [])
|
63 |
+
*/
|
64 |
+
class EcsClient extends AwsClient {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Ecs/Exception/EcsException.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Ecs\Exception;
|
3 |
+
|
4 |
+
use Aws\Exception\AwsException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Amazon ECS exception.
|
8 |
+
*/
|
9 |
+
class EcsException extends AwsException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Efs/EfsClient.php
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Efs;
|
3 |
+
|
4 |
+
use Aws\AwsClient;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* This client is used to interact with **Amazon EFS**.
|
8 |
+
*
|
9 |
+
* @method \Aws\Result createFileSystem(array $args = [])
|
10 |
+
* @method \GuzzleHttp\Promise\Promise createFileSystemAsync(array $args = [])
|
11 |
+
* @method \Aws\Result createMountTarget(array $args = [])
|
12 |
+
* @method \GuzzleHttp\Promise\Promise createMountTargetAsync(array $args = [])
|
13 |
+
* @method \Aws\Result createTags(array $args = [])
|
14 |
+
* @method \GuzzleHttp\Promise\Promise createTagsAsync(array $args = [])
|
15 |
+
* @method \Aws\Result deleteFileSystem(array $args = [])
|
16 |
+
* @method \GuzzleHttp\Promise\Promise deleteFileSystemAsync(array $args = [])
|
17 |
+
* @method \Aws\Result deleteMountTarget(array $args = [])
|
18 |
+
* @method \GuzzleHttp\Promise\Promise deleteMountTargetAsync(array $args = [])
|
19 |
+
* @method \Aws\Result deleteTags(array $args = [])
|
20 |
+
* @method \GuzzleHttp\Promise\Promise deleteTagsAsync(array $args = [])
|
21 |
+
* @method \Aws\Result describeFileSystems(array $args = [])
|
22 |
+
* @method \GuzzleHttp\Promise\Promise describeFileSystemsAsync(array $args = [])
|
23 |
+
* @method \Aws\Result describeMountTargetSecurityGroups(array $args = [])
|
24 |
+
* @method \GuzzleHttp\Promise\Promise describeMountTargetSecurityGroupsAsync(array $args = [])
|
25 |
+
* @method \Aws\Result describeMountTargets(array $args = [])
|
26 |
+
* @method \GuzzleHttp\Promise\Promise describeMountTargetsAsync(array $args = [])
|
27 |
+
* @method \Aws\Result describeTags(array $args = [])
|
28 |
+
* @method \GuzzleHttp\Promise\Promise describeTagsAsync(array $args = [])
|
29 |
+
* @method \Aws\Result modifyMountTargetSecurityGroups(array $args = [])
|
30 |
+
* @method \GuzzleHttp\Promise\Promise modifyMountTargetSecurityGroupsAsync(array $args = [])
|
31 |
+
*/
|
32 |
+
class EfsClient extends AwsClient {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Efs/Exception/EfsException.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Efs\Exception;
|
3 |
+
|
4 |
+
use Aws\Exception\AwsException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Amazon EFS exception.
|
8 |
+
*/
|
9 |
+
class EfsException extends AwsException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/ElastiCache/ElastiCacheClient.php
ADDED
@@ -0,0 +1,84 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\ElastiCache;
|
3 |
+
|
4 |
+
use Aws\AwsClient;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* This client is used to interact with the **Amazon ElastiCache** service.
|
8 |
+
*
|
9 |
+
* @method \Aws\Result addTagsToResource(array $args = [])
|
10 |
+
* @method \GuzzleHttp\Promise\Promise addTagsToResourceAsync(array $args = [])
|
11 |
+
* @method \Aws\Result authorizeCacheSecurityGroupIngress(array $args = [])
|
12 |
+
* @method \GuzzleHttp\Promise\Promise authorizeCacheSecurityGroupIngressAsync(array $args = [])
|
13 |
+
* @method \Aws\Result copySnapshot(array $args = [])
|
14 |
+
* @method \GuzzleHttp\Promise\Promise copySnapshotAsync(array $args = [])
|
15 |
+
* @method \Aws\Result createCacheCluster(array $args = [])
|
16 |
+
* @method \GuzzleHttp\Promise\Promise createCacheClusterAsync(array $args = [])
|
17 |
+
* @method \Aws\Result createCacheParameterGroup(array $args = [])
|
18 |
+
* @method \GuzzleHttp\Promise\Promise createCacheParameterGroupAsync(array $args = [])
|
19 |
+
* @method \Aws\Result createCacheSecurityGroup(array $args = [])
|
20 |
+
* @method \GuzzleHttp\Promise\Promise createCacheSecurityGroupAsync(array $args = [])
|
21 |
+
* @method \Aws\Result createCacheSubnetGroup(array $args = [])
|
22 |
+
* @method \GuzzleHttp\Promise\Promise createCacheSubnetGroupAsync(array $args = [])
|
23 |
+
* @method \Aws\Result createReplicationGroup(array $args = [])
|
24 |
+
* @method \GuzzleHttp\Promise\Promise createReplicationGroupAsync(array $args = [])
|
25 |
+
* @method \Aws\Result createSnapshot(array $args = [])
|
26 |
+
* @method \GuzzleHttp\Promise\Promise createSnapshotAsync(array $args = [])
|
27 |
+
* @method \Aws\Result deleteCacheCluster(array $args = [])
|
28 |
+
* @method \GuzzleHttp\Promise\Promise deleteCacheClusterAsync(array $args = [])
|
29 |
+
* @method \Aws\Result deleteCacheParameterGroup(array $args = [])
|
30 |
+
* @method \GuzzleHttp\Promise\Promise deleteCacheParameterGroupAsync(array $args = [])
|
31 |
+
* @method \Aws\Result deleteCacheSecurityGroup(array $args = [])
|
32 |
+
* @method \GuzzleHttp\Promise\Promise deleteCacheSecurityGroupAsync(array $args = [])
|
33 |
+
* @method \Aws\Result deleteCacheSubnetGroup(array $args = [])
|
34 |
+
* @method \GuzzleHttp\Promise\Promise deleteCacheSubnetGroupAsync(array $args = [])
|
35 |
+
* @method \Aws\Result deleteReplicationGroup(array $args = [])
|
36 |
+
* @method \GuzzleHttp\Promise\Promise deleteReplicationGroupAsync(array $args = [])
|
37 |
+
* @method \Aws\Result deleteSnapshot(array $args = [])
|
38 |
+
* @method \GuzzleHttp\Promise\Promise deleteSnapshotAsync(array $args = [])
|
39 |
+
* @method \Aws\Result describeCacheClusters(array $args = [])
|
40 |
+
* @method \GuzzleHttp\Promise\Promise describeCacheClustersAsync(array $args = [])
|
41 |
+
* @method \Aws\Result describeCacheEngineVersions(array $args = [])
|
42 |
+
* @method \GuzzleHttp\Promise\Promise describeCacheEngineVersionsAsync(array $args = [])
|
43 |
+
* @method \Aws\Result describeCacheParameterGroups(array $args = [])
|
44 |
+
* @method \GuzzleHttp\Promise\Promise describeCacheParameterGroupsAsync(array $args = [])
|
45 |
+
* @method \Aws\Result describeCacheParameters(array $args = [])
|
46 |
+
* @method \GuzzleHttp\Promise\Promise describeCacheParametersAsync(array $args = [])
|
47 |
+
* @method \Aws\Result describeCacheSecurityGroups(array $args = [])
|
48 |
+
* @method \GuzzleHttp\Promise\Promise describeCacheSecurityGroupsAsync(array $args = [])
|
49 |
+
* @method \Aws\Result describeCacheSubnetGroups(array $args = [])
|
50 |
+
* @method \GuzzleHttp\Promise\Promise describeCacheSubnetGroupsAsync(array $args = [])
|
51 |
+
* @method \Aws\Result describeEngineDefaultParameters(array $args = [])
|
52 |
+
* @method \GuzzleHttp\Promise\Promise describeEngineDefaultParametersAsync(array $args = [])
|
53 |
+
* @method \Aws\Result describeEvents(array $args = [])
|
54 |
+
* @method \GuzzleHttp\Promise\Promise describeEventsAsync(array $args = [])
|
55 |
+
* @method \Aws\Result describeReplicationGroups(array $args = [])
|
56 |
+
* @method \GuzzleHttp\Promise\Promise describeReplicationGroupsAsync(array $args = [])
|
57 |
+
* @method \Aws\Result describeReservedCacheNodes(array $args = [])
|
58 |
+
* @method \GuzzleHttp\Promise\Promise describeReservedCacheNodesAsync(array $args = [])
|
59 |
+
* @method \Aws\Result describeReservedCacheNodesOfferings(array $args = [])
|
60 |
+
* @method \GuzzleHttp\Promise\Promise describeReservedCacheNodesOfferingsAsync(array $args = [])
|
61 |
+
* @method \Aws\Result describeSnapshots(array $args = [])
|
62 |
+
* @method \GuzzleHttp\Promise\Promise describeSnapshotsAsync(array $args = [])
|
63 |
+
* @method \Aws\Result listTagsForResource(array $args = [])
|
64 |
+
* @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
|
65 |
+
* @method \Aws\Result modifyCacheCluster(array $args = [])
|
66 |
+
* @method \GuzzleHttp\Promise\Promise modifyCacheClusterAsync(array $args = [])
|
67 |
+
* @method \Aws\Result modifyCacheParameterGroup(array $args = [])
|
68 |
+
* @method \GuzzleHttp\Promise\Promise modifyCacheParameterGroupAsync(array $args = [])
|
69 |
+
* @method \Aws\Result modifyCacheSubnetGroup(array $args = [])
|
70 |
+
* @method \GuzzleHttp\Promise\Promise modifyCacheSubnetGroupAsync(array $args = [])
|
71 |
+
* @method \Aws\Result modifyReplicationGroup(array $args = [])
|
72 |
+
* @method \GuzzleHttp\Promise\Promise modifyReplicationGroupAsync(array $args = [])
|
73 |
+
* @method \Aws\Result purchaseReservedCacheNodesOffering(array $args = [])
|
74 |
+
* @method \GuzzleHttp\Promise\Promise purchaseReservedCacheNodesOfferingAsync(array $args = [])
|
75 |
+
* @method \Aws\Result rebootCacheCluster(array $args = [])
|
76 |
+
* @method \GuzzleHttp\Promise\Promise rebootCacheClusterAsync(array $args = [])
|
77 |
+
* @method \Aws\Result removeTagsFromResource(array $args = [])
|
78 |
+
* @method \GuzzleHttp\Promise\Promise removeTagsFromResourceAsync(array $args = [])
|
79 |
+
* @method \Aws\Result resetCacheParameterGroup(array $args = [])
|
80 |
+
* @method \GuzzleHttp\Promise\Promise resetCacheParameterGroupAsync(array $args = [])
|
81 |
+
* @method \Aws\Result revokeCacheSecurityGroupIngress(array $args = [])
|
82 |
+
* @method \GuzzleHttp\Promise\Promise revokeCacheSecurityGroupIngressAsync(array $args = [])
|
83 |
+
*/
|
84 |
+
class ElastiCacheClient extends AwsClient {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/ElastiCache/Exception/ElastiCacheException.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\ElastiCache\Exception;
|
3 |
+
|
4 |
+
use Aws\Exception\AwsException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Represents an error interacting with the Amazon ElastiCache service.
|
8 |
+
*/
|
9 |
+
class ElastiCacheException extends AwsException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/ElasticBeanstalk/ElasticBeanstalkClient.php
ADDED
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\ElasticBeanstalk;
|
3 |
+
|
4 |
+
use Aws\AwsClient;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* This client is used to interact with the **AWS Elastic Beanstalk** service.
|
8 |
+
*
|
9 |
+
* @method \Aws\Result abortEnvironmentUpdate(array $args = [])
|
10 |
+
* @method \GuzzleHttp\Promise\Promise abortEnvironmentUpdateAsync(array $args = [])
|
11 |
+
* @method \Aws\Result checkDNSAvailability(array $args = [])
|
12 |
+
* @method \GuzzleHttp\Promise\Promise checkDNSAvailabilityAsync(array $args = [])
|
13 |
+
* @method \Aws\Result createApplication(array $args = [])
|
14 |
+
* @method \GuzzleHttp\Promise\Promise createApplicationAsync(array $args = [])
|
15 |
+
* @method \Aws\Result createApplicationVersion(array $args = [])
|
16 |
+
* @method \GuzzleHttp\Promise\Promise createApplicationVersionAsync(array $args = [])
|
17 |
+
* @method \Aws\Result createConfigurationTemplate(array $args = [])
|
18 |
+
* @method \GuzzleHttp\Promise\Promise createConfigurationTemplateAsync(array $args = [])
|
19 |
+
* @method \Aws\Result createEnvironment(array $args = [])
|
20 |
+
* @method \GuzzleHttp\Promise\Promise createEnvironmentAsync(array $args = [])
|
21 |
+
* @method \Aws\Result createStorageLocation(array $args = [])
|
22 |
+
* @method \GuzzleHttp\Promise\Promise createStorageLocationAsync(array $args = [])
|
23 |
+
* @method \Aws\Result deleteApplication(array $args = [])
|
24 |
+
* @method \GuzzleHttp\Promise\Promise deleteApplicationAsync(array $args = [])
|
25 |
+
* @method \Aws\Result deleteApplicationVersion(array $args = [])
|
26 |
+
* @method \GuzzleHttp\Promise\Promise deleteApplicationVersionAsync(array $args = [])
|
27 |
+
* @method \Aws\Result deleteConfigurationTemplate(array $args = [])
|
28 |
+
* @method \GuzzleHttp\Promise\Promise deleteConfigurationTemplateAsync(array $args = [])
|
29 |
+
* @method \Aws\Result deleteEnvironmentConfiguration(array $args = [])
|
30 |
+
* @method \GuzzleHttp\Promise\Promise deleteEnvironmentConfigurationAsync(array $args = [])
|
31 |
+
* @method \Aws\Result describeApplicationVersions(array $args = [])
|
32 |
+
* @method \GuzzleHttp\Promise\Promise describeApplicationVersionsAsync(array $args = [])
|
33 |
+
* @method \Aws\Result describeApplications(array $args = [])
|
34 |
+
* @method \GuzzleHttp\Promise\Promise describeApplicationsAsync(array $args = [])
|
35 |
+
* @method \Aws\Result describeConfigurationOptions(array $args = [])
|
36 |
+
* @method \GuzzleHttp\Promise\Promise describeConfigurationOptionsAsync(array $args = [])
|
37 |
+
* @method \Aws\Result describeConfigurationSettings(array $args = [])
|
38 |
+
* @method \GuzzleHttp\Promise\Promise describeConfigurationSettingsAsync(array $args = [])
|
39 |
+
* @method \Aws\Result describeEnvironmentHealth(array $args = [])
|
40 |
+
* @method \GuzzleHttp\Promise\Promise describeEnvironmentHealthAsync(array $args = [])
|
41 |
+
* @method \Aws\Result describeEnvironmentResources(array $args = [])
|
42 |
+
* @method \GuzzleHttp\Promise\Promise describeEnvironmentResourcesAsync(array $args = [])
|
43 |
+
* @method \Aws\Result describeEnvironments(array $args = [])
|
44 |
+
* @method \GuzzleHttp\Promise\Promise describeEnvironmentsAsync(array $args = [])
|
45 |
+
* @method \Aws\Result describeEvents(array $args = [])
|
46 |
+
* @method \GuzzleHttp\Promise\Promise describeEventsAsync(array $args = [])
|
47 |
+
* @method \Aws\Result describeInstancesHealth(array $args = [])
|
48 |
+
* @method \GuzzleHttp\Promise\Promise describeInstancesHealthAsync(array $args = [])
|
49 |
+
* @method \Aws\Result listAvailableSolutionStacks(array $args = [])
|
50 |
+
* @method \GuzzleHttp\Promise\Promise listAvailableSolutionStacksAsync(array $args = [])
|
51 |
+
* @method \Aws\Result rebuildEnvironment(array $args = [])
|
52 |
+
* @method \GuzzleHttp\Promise\Promise rebuildEnvironmentAsync(array $args = [])
|
53 |
+
* @method \Aws\Result requestEnvironmentInfo(array $args = [])
|
54 |
+
* @method \GuzzleHttp\Promise\Promise requestEnvironmentInfoAsync(array $args = [])
|
55 |
+
* @method \Aws\Result restartAppServer(array $args = [])
|
56 |
+
* @method \GuzzleHttp\Promise\Promise restartAppServerAsync(array $args = [])
|
57 |
+
* @method \Aws\Result retrieveEnvironmentInfo(array $args = [])
|
58 |
+
* @method \GuzzleHttp\Promise\Promise retrieveEnvironmentInfoAsync(array $args = [])
|
59 |
+
* @method \Aws\Result swapEnvironmentCNAMEs(array $args = [])
|
60 |
+
* @method \GuzzleHttp\Promise\Promise swapEnvironmentCNAMEsAsync(array $args = [])
|
61 |
+
* @method \Aws\Result terminateEnvironment(array $args = [])
|
62 |
+
* @method \GuzzleHttp\Promise\Promise terminateEnvironmentAsync(array $args = [])
|
63 |
+
* @method \Aws\Result updateApplication(array $args = [])
|
64 |
+
* @method \GuzzleHttp\Promise\Promise updateApplicationAsync(array $args = [])
|
65 |
+
* @method \Aws\Result updateApplicationVersion(array $args = [])
|
66 |
+
* @method \GuzzleHttp\Promise\Promise updateApplicationVersionAsync(array $args = [])
|
67 |
+
* @method \Aws\Result updateConfigurationTemplate(array $args = [])
|
68 |
+
* @method \GuzzleHttp\Promise\Promise updateConfigurationTemplateAsync(array $args = [])
|
69 |
+
* @method \Aws\Result updateEnvironment(array $args = [])
|
70 |
+
* @method \GuzzleHttp\Promise\Promise updateEnvironmentAsync(array $args = [])
|
71 |
+
* @method \Aws\Result validateConfigurationSettings(array $args = [])
|
72 |
+
* @method \GuzzleHttp\Promise\Promise validateConfigurationSettingsAsync(array $args = [])
|
73 |
+
*/
|
74 |
+
class ElasticBeanstalkClient extends AwsClient {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/ElasticBeanstalk/Exception/ElasticBeanstalkException.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\ElasticBeanstalk\Exception;
|
3 |
+
|
4 |
+
use Aws\Exception\AwsException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Represents an error interacting with the AWS Elastic Beanstalk service.
|
8 |
+
*/
|
9 |
+
class ElasticBeanstalkException extends AwsException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/ElasticLoadBalancing/ElasticLoadBalancingClient.php
ADDED
@@ -0,0 +1,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\ElasticLoadBalancing;
|
3 |
+
|
4 |
+
use Aws\AwsClient;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* This client is used to interact with the **Elastic Load Balancing** service.
|
8 |
+
*
|
9 |
+
* @method \Aws\Result addTags(array $args = [])
|
10 |
+
* @method \GuzzleHttp\Promise\Promise addTagsAsync(array $args = [])
|
11 |
+
* @method \Aws\Result applySecurityGroupsToLoadBalancer(array $args = [])
|
12 |
+
* @method \GuzzleHttp\Promise\Promise applySecurityGroupsToLoadBalancerAsync(array $args = [])
|
13 |
+
* @method \Aws\Result attachLoadBalancerToSubnets(array $args = [])
|
14 |
+
* @method \GuzzleHttp\Promise\Promise attachLoadBalancerToSubnetsAsync(array $args = [])
|
15 |
+
* @method \Aws\Result configureHealthCheck(array $args = [])
|
16 |
+
* @method \GuzzleHttp\Promise\Promise configureHealthCheckAsync(array $args = [])
|
17 |
+
* @method \Aws\Result createAppCookieStickinessPolicy(array $args = [])
|
18 |
+
* @method \GuzzleHttp\Promise\Promise createAppCookieStickinessPolicyAsync(array $args = [])
|
19 |
+
* @method \Aws\Result createLBCookieStickinessPolicy(array $args = [])
|
20 |
+
* @method \GuzzleHttp\Promise\Promise createLBCookieStickinessPolicyAsync(array $args = [])
|
21 |
+
* @method \Aws\Result createLoadBalancer(array $args = [])
|
22 |
+
* @method \GuzzleHttp\Promise\Promise createLoadBalancerAsync(array $args = [])
|
23 |
+
* @method \Aws\Result createLoadBalancerListeners(array $args = [])
|
24 |
+
* @method \GuzzleHttp\Promise\Promise createLoadBalancerListenersAsync(array $args = [])
|
25 |
+
* @method \Aws\Result createLoadBalancerPolicy(array $args = [])
|
26 |
+
* @method \GuzzleHttp\Promise\Promise createLoadBalancerPolicyAsync(array $args = [])
|
27 |
+
* @method \Aws\Result deleteLoadBalancer(array $args = [])
|
28 |
+
* @method \GuzzleHttp\Promise\Promise deleteLoadBalancerAsync(array $args = [])
|
29 |
+
* @method \Aws\Result deleteLoadBalancerListeners(array $args = [])
|
30 |
+
* @method \GuzzleHttp\Promise\Promise deleteLoadBalancerListenersAsync(array $args = [])
|
31 |
+
* @method \Aws\Result deleteLoadBalancerPolicy(array $args = [])
|
32 |
+
* @method \GuzzleHttp\Promise\Promise deleteLoadBalancerPolicyAsync(array $args = [])
|
33 |
+
* @method \Aws\Result deregisterInstancesFromLoadBalancer(array $args = [])
|
34 |
+
* @method \GuzzleHttp\Promise\Promise deregisterInstancesFromLoadBalancerAsync(array $args = [])
|
35 |
+
* @method \Aws\Result describeInstanceHealth(array $args = [])
|
36 |
+
* @method \GuzzleHttp\Promise\Promise describeInstanceHealthAsync(array $args = [])
|
37 |
+
* @method \Aws\Result describeLoadBalancerAttributes(array $args = [])
|
38 |
+
* @method \GuzzleHttp\Promise\Promise describeLoadBalancerAttributesAsync(array $args = [])
|
39 |
+
* @method \Aws\Result describeLoadBalancerPolicies(array $args = [])
|
40 |
+
* @method \GuzzleHttp\Promise\Promise describeLoadBalancerPoliciesAsync(array $args = [])
|
41 |
+
* @method \Aws\Result describeLoadBalancerPolicyTypes(array $args = [])
|
42 |
+
* @method \GuzzleHttp\Promise\Promise describeLoadBalancerPolicyTypesAsync(array $args = [])
|
43 |
+
* @method \Aws\Result describeLoadBalancers(array $args = [])
|
44 |
+
* @method \GuzzleHttp\Promise\Promise describeLoadBalancersAsync(array $args = [])
|
45 |
+
* @method \Aws\Result describeTags(array $args = [])
|
46 |
+
* @method \GuzzleHttp\Promise\Promise describeTagsAsync(array $args = [])
|
47 |
+
* @method \Aws\Result detachLoadBalancerFromSubnets(array $args = [])
|
48 |
+
* @method \GuzzleHttp\Promise\Promise detachLoadBalancerFromSubnetsAsync(array $args = [])
|
49 |
+
* @method \Aws\Result disableAvailabilityZonesForLoadBalancer(array $args = [])
|
50 |
+
* @method \GuzzleHttp\Promise\Promise disableAvailabilityZonesForLoadBalancerAsync(array $args = [])
|
51 |
+
* @method \Aws\Result enableAvailabilityZonesForLoadBalancer(array $args = [])
|
52 |
+
* @method \GuzzleHttp\Promise\Promise enableAvailabilityZonesForLoadBalancerAsync(array $args = [])
|
53 |
+
* @method \Aws\Result modifyLoadBalancerAttributes(array $args = [])
|
54 |
+
* @method \GuzzleHttp\Promise\Promise modifyLoadBalancerAttributesAsync(array $args = [])
|
55 |
+
* @method \Aws\Result registerInstancesWithLoadBalancer(array $args = [])
|
56 |
+
* @method \GuzzleHttp\Promise\Promise registerInstancesWithLoadBalancerAsync(array $args = [])
|
57 |
+
* @method \Aws\Result removeTags(array $args = [])
|
58 |
+
* @method \GuzzleHttp\Promise\Promise removeTagsAsync(array $args = [])
|
59 |
+
* @method \Aws\Result setLoadBalancerListenerSSLCertificate(array $args = [])
|
60 |
+
* @method \GuzzleHttp\Promise\Promise setLoadBalancerListenerSSLCertificateAsync(array $args = [])
|
61 |
+
* @method \Aws\Result setLoadBalancerPoliciesForBackendServer(array $args = [])
|
62 |
+
* @method \GuzzleHttp\Promise\Promise setLoadBalancerPoliciesForBackendServerAsync(array $args = [])
|
63 |
+
* @method \Aws\Result setLoadBalancerPoliciesOfListener(array $args = [])
|
64 |
+
* @method \GuzzleHttp\Promise\Promise setLoadBalancerPoliciesOfListenerAsync(array $args = [])
|
65 |
+
*/
|
66 |
+
class ElasticLoadBalancingClient extends AwsClient {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/ElasticLoadBalancing/Exception/ElasticLoadBalancingException.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\ElasticLoadBalancing\Exception;
|
3 |
+
|
4 |
+
use Aws\Exception\AwsException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Represents an error interacting with the Elastic Load Balancing service.
|
8 |
+
*/
|
9 |
+
class ElasticLoadBalancingException extends AwsException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/ElasticTranscoder/ElasticTranscoderClient.php
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\ElasticTranscoder;
|
3 |
+
|
4 |
+
use Aws\AwsClient;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* This client is used to interact with the **Amazon Elastic Transcoder** service.
|
8 |
+
*
|
9 |
+
* @method \Aws\Result cancelJob(array $args = [])
|
10 |
+
* @method \GuzzleHttp\Promise\Promise cancelJobAsync(array $args = [])
|
11 |
+
* @method \Aws\Result createJob(array $args = [])
|
12 |
+
* @method \GuzzleHttp\Promise\Promise createJobAsync(array $args = [])
|
13 |
+
* @method \Aws\Result createPipeline(array $args = [])
|
14 |
+
* @method \GuzzleHttp\Promise\Promise createPipelineAsync(array $args = [])
|
15 |
+
* @method \Aws\Result createPreset(array $args = [])
|
16 |
+
* @method \GuzzleHttp\Promise\Promise createPresetAsync(array $args = [])
|
17 |
+
* @method \Aws\Result deletePipeline(array $args = [])
|
18 |
+
* @method \GuzzleHttp\Promise\Promise deletePipelineAsync(array $args = [])
|
19 |
+
* @method \Aws\Result deletePreset(array $args = [])
|
20 |
+
* @method \GuzzleHttp\Promise\Promise deletePresetAsync(array $args = [])
|
21 |
+
* @method \Aws\Result listJobsByPipeline(array $args = [])
|
22 |
+
* @method \GuzzleHttp\Promise\Promise listJobsByPipelineAsync(array $args = [])
|
23 |
+
* @method \Aws\Result listJobsByStatus(array $args = [])
|
24 |
+
* @method \GuzzleHttp\Promise\Promise listJobsByStatusAsync(array $args = [])
|
25 |
+
* @method \Aws\Result listPipelines(array $args = [])
|
26 |
+
* @method \GuzzleHttp\Promise\Promise listPipelinesAsync(array $args = [])
|
27 |
+
* @method \Aws\Result listPresets(array $args = [])
|
28 |
+
* @method \GuzzleHttp\Promise\Promise listPresetsAsync(array $args = [])
|
29 |
+
* @method \Aws\Result readJob(array $args = [])
|
30 |
+
* @method \GuzzleHttp\Promise\Promise readJobAsync(array $args = [])
|
31 |
+
* @method \Aws\Result readPipeline(array $args = [])
|
32 |
+
* @method \GuzzleHttp\Promise\Promise readPipelineAsync(array $args = [])
|
33 |
+
* @method \Aws\Result readPreset(array $args = [])
|
34 |
+
* @method \GuzzleHttp\Promise\Promise readPresetAsync(array $args = [])
|
35 |
+
* @method \Aws\Result testRole(array $args = [])
|
36 |
+
* @method \GuzzleHttp\Promise\Promise testRoleAsync(array $args = [])
|
37 |
+
* @method \Aws\Result updatePipeline(array $args = [])
|
38 |
+
* @method \GuzzleHttp\Promise\Promise updatePipelineAsync(array $args = [])
|
39 |
+
* @method \Aws\Result updatePipelineNotifications(array $args = [])
|
40 |
+
* @method \GuzzleHttp\Promise\Promise updatePipelineNotificationsAsync(array $args = [])
|
41 |
+
* @method \Aws\Result updatePipelineStatus(array $args = [])
|
42 |
+
* @method \GuzzleHttp\Promise\Promise updatePipelineStatusAsync(array $args = [])
|
43 |
+
*/
|
44 |
+
class ElasticTranscoderClient extends AwsClient {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/ElasticTranscoder/Exception/ElasticTranscoderException.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\ElasticTranscoder\Exception;
|
3 |
+
|
4 |
+
use Aws\Exception\AwsException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Represents an error interacting with the Amazon Elastic Transcoder service.
|
8 |
+
*/
|
9 |
+
class ElasticTranscoderException extends AwsException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/ElasticsearchService/ElasticsearchServiceClient.php
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\ElasticsearchService;
|
3 |
+
|
4 |
+
use Aws\AwsClient;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* This client is used to interact with the **Amazon Elasticsearch Service** service.
|
8 |
+
*
|
9 |
+
* @method \Aws\Result addTags(array $args = [])
|
10 |
+
* @method \GuzzleHttp\Promise\Promise addTagsAsync(array $args = [])
|
11 |
+
* @method \Aws\Result createElasticsearchDomain(array $args = [])
|
12 |
+
* @method \GuzzleHttp\Promise\Promise createElasticsearchDomainAsync(array $args = [])
|
13 |
+
* @method \Aws\Result deleteElasticsearchDomain(array $args = [])
|
14 |
+
* @method \GuzzleHttp\Promise\Promise deleteElasticsearchDomainAsync(array $args = [])
|
15 |
+
* @method \Aws\Result describeElasticsearchDomain(array $args = [])
|
16 |
+
* @method \GuzzleHttp\Promise\Promise describeElasticsearchDomainAsync(array $args = [])
|
17 |
+
* @method \Aws\Result describeElasticsearchDomainConfig(array $args = [])
|
18 |
+
* @method \GuzzleHttp\Promise\Promise describeElasticsearchDomainConfigAsync(array $args = [])
|
19 |
+
* @method \Aws\Result describeElasticsearchDomains(array $args = [])
|
20 |
+
* @method \GuzzleHttp\Promise\Promise describeElasticsearchDomainsAsync(array $args = [])
|
21 |
+
* @method \Aws\Result listDomainNames(array $args = [])
|
22 |
+
* @method \GuzzleHttp\Promise\Promise listDomainNamesAsync(array $args = [])
|
23 |
+
* @method \Aws\Result listTags(array $args = [])
|
24 |
+
* @method \GuzzleHttp\Promise\Promise listTagsAsync(array $args = [])
|
25 |
+
* @method \Aws\Result removeTags(array $args = [])
|
26 |
+
* @method \GuzzleHttp\Promise\Promise removeTagsAsync(array $args = [])
|
27 |
+
* @method \Aws\Result updateElasticsearchDomainConfig(array $args = [])
|
28 |
+
* @method \GuzzleHttp\Promise\Promise updateElasticsearchDomainConfigAsync(array $args = [])
|
29 |
+
*/
|
30 |
+
class ElasticsearchServiceClient extends AwsClient {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/ElasticsearchService/Exception/ElasticsearchServiceException.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\ElasticsearchService\Exception;
|
3 |
+
|
4 |
+
use Aws\Exception\AwsException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Represents an error interacting with the **Amazon Elasticsearch Service** service.
|
8 |
+
*/
|
9 |
+
class ElasticsearchServiceException extends AwsException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Emr/EmrClient.php
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Emr;
|
3 |
+
|
4 |
+
use Aws\AwsClient;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* This client is used to interact with the **Amazon Elastic MapReduce (Amazon EMR)** service.
|
8 |
+
*
|
9 |
+
* @method \Aws\Result addInstanceGroups(array $args = [])
|
10 |
+
* @method \GuzzleHttp\Promise\Promise addInstanceGroupsAsync(array $args = [])
|
11 |
+
* @method \Aws\Result addJobFlowSteps(array $args = [])
|
12 |
+
* @method \GuzzleHttp\Promise\Promise addJobFlowStepsAsync(array $args = [])
|
13 |
+
* @method \Aws\Result addTags(array $args = [])
|
14 |
+
* @method \GuzzleHttp\Promise\Promise addTagsAsync(array $args = [])
|
15 |
+
* @method \Aws\Result describeCluster(array $args = [])
|
16 |
+
* @method \GuzzleHttp\Promise\Promise describeClusterAsync(array $args = [])
|
17 |
+
* @method \Aws\Result describeJobFlows(array $args = [])
|
18 |
+
* @method \GuzzleHttp\Promise\Promise describeJobFlowsAsync(array $args = [])
|
19 |
+
* @method \Aws\Result describeStep(array $args = [])
|
20 |
+
* @method \GuzzleHttp\Promise\Promise describeStepAsync(array $args = [])
|
21 |
+
* @method \Aws\Result listBootstrapActions(array $args = [])
|
22 |
+
* @method \GuzzleHttp\Promise\Promise listBootstrapActionsAsync(array $args = [])
|
23 |
+
* @method \Aws\Result listClusters(array $args = [])
|
24 |
+
* @method \GuzzleHttp\Promise\Promise listClustersAsync(array $args = [])
|
25 |
+
* @method \Aws\Result listInstanceGroups(array $args = [])
|
26 |
+
* @method \GuzzleHttp\Promise\Promise listInstanceGroupsAsync(array $args = [])
|
27 |
+
* @method \Aws\Result listInstances(array $args = [])
|
28 |
+
* @method \GuzzleHttp\Promise\Promise listInstancesAsync(array $args = [])
|
29 |
+
* @method \Aws\Result listSteps(array $args = [])
|
30 |
+
* @method \GuzzleHttp\Promise\Promise listStepsAsync(array $args = [])
|
31 |
+
* @method \Aws\Result modifyInstanceGroups(array $args = [])
|
32 |
+
* @method \GuzzleHttp\Promise\Promise modifyInstanceGroupsAsync(array $args = [])
|
33 |
+
* @method \Aws\Result removeTags(array $args = [])
|
34 |
+
* @method \GuzzleHttp\Promise\Promise removeTagsAsync(array $args = [])
|
35 |
+
* @method \Aws\Result runJobFlow(array $args = [])
|
36 |
+
* @method \GuzzleHttp\Promise\Promise runJobFlowAsync(array $args = [])
|
37 |
+
* @method \Aws\Result setTerminationProtection(array $args = [])
|
38 |
+
* @method \GuzzleHttp\Promise\Promise setTerminationProtectionAsync(array $args = [])
|
39 |
+
* @method \Aws\Result setVisibleToAllUsers(array $args = [])
|
40 |
+
* @method \GuzzleHttp\Promise\Promise setVisibleToAllUsersAsync(array $args = [])
|
41 |
+
* @method \Aws\Result terminateJobFlows(array $args = [])
|
42 |
+
* @method \GuzzleHttp\Promise\Promise terminateJobFlowsAsync(array $args = [])
|
43 |
+
*/
|
44 |
+
class EmrClient extends AwsClient {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Emr/Exception/EmrException.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Emr\Exception;
|
3 |
+
|
4 |
+
use Aws\Exception\AwsException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Represents an error interacting with the Amazon Elastic MapReduce service.
|
8 |
+
*/
|
9 |
+
class EmrException extends AwsException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Endpoint/EndpointProvider.php
ADDED
@@ -0,0 +1,96 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Endpoint;
|
3 |
+
|
4 |
+
use Aws\Exception\UnresolvedEndpointException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Endpoint providers.
|
8 |
+
*
|
9 |
+
* An endpoint provider is a function that accepts a hash of endpoint options,
|
10 |
+
* including but not limited to "service" and "region" key value pairs. The
|
11 |
+
* endpoint provider function returns a hash of endpoint data, which MUST
|
12 |
+
* include an "endpoint" key value pair that represents the resolved endpoint
|
13 |
+
* or NULL if an endpoint cannot be determined.
|
14 |
+
*
|
15 |
+
* You can wrap your calls to an endpoint provider with the
|
16 |
+
* {@see EndpointProvider::resolve} function to ensure that an endpoint hash is
|
17 |
+
* created. If an endpoint hash is not created, then the resolve() function
|
18 |
+
* will throw an {@see Aws\Exception\UnresolvedEndpointException}.
|
19 |
+
*
|
20 |
+
* use Aws\Endpoint\EndpointProvider;
|
21 |
+
* $provider = EndpointProvider::defaultProvider();
|
22 |
+
* // Returns an array or NULL.
|
23 |
+
* $endpoint = $provider(['service' => 'ec2', 'region' => 'us-west-2']);
|
24 |
+
* // Returns an endpoint array or throws.
|
25 |
+
* $endpoint = EndpointProvider::resolve($provider, [
|
26 |
+
* 'service' => 'ec2',
|
27 |
+
* 'region' => 'us-west-2'
|
28 |
+
* ]);
|
29 |
+
*
|
30 |
+
* You can compose multiple providers into a single provider using
|
31 |
+
* {@see Aws\or_chain}. This function accepts providers as arguments and
|
32 |
+
* returns a new function that will invoke each provider until a non-null value
|
33 |
+
* is returned.
|
34 |
+
*
|
35 |
+
* $a = function (array $args) {
|
36 |
+
* if ($args['region'] === 'my-test-region') {
|
37 |
+
* return ['endpoint' => 'http://localhost:123/api'];
|
38 |
+
* }
|
39 |
+
* };
|
40 |
+
* $b = EndpointProvider::defaultProvider();
|
41 |
+
* $c = \Aws\or_chain($a, $b);
|
42 |
+
* $config = ['service' => 'ec2', 'region' => 'my-test-region'];
|
43 |
+
* $res = $c($config); // $a handles this.
|
44 |
+
* $config['region'] = 'us-west-2';
|
45 |
+
* $res = $c($config); // $b handles this.
|
46 |
+
*/
|
47 |
+
class EndpointProvider
|
48 |
+
{
|
49 |
+
/**
|
50 |
+
* Resolves and endpoint provider and ensures a non-null return value.
|
51 |
+
*
|
52 |
+
* @param callable $provider Provider function to invoke.
|
53 |
+
* @param array $args Endpoint arguments to pass to the provider.
|
54 |
+
*
|
55 |
+
* @return array
|
56 |
+
* @throws UnresolvedEndpointException
|
57 |
+
*/
|
58 |
+
public static function resolve(callable $provider, array $args = [])
|
59 |
+
{
|
60 |
+
$result = $provider($args);
|
61 |
+
if (is_array($result)) {
|
62 |
+
return $result;
|
63 |
+
}
|
64 |
+
|
65 |
+
throw new UnresolvedEndpointException(
|
66 |
+
'Unable to resolve an endpoint using the provider arguments: '
|
67 |
+
. json_encode($args) . '. Note: you can provide an "endpoint" '
|
68 |
+
. 'option to a client constructor to bypass invoking an endpoint '
|
69 |
+
. 'provider.');
|
70 |
+
}
|
71 |
+
|
72 |
+
/**
|
73 |
+
* Creates and returns the default SDK endpoint provider.
|
74 |
+
*
|
75 |
+
* @return callable
|
76 |
+
*/
|
77 |
+
public static function defaultProvider()
|
78 |
+
{
|
79 |
+
$data = \Aws\load_compiled_json(__DIR__ . '/../data/endpoints.json');
|
80 |
+
|
81 |
+
return new PatternEndpointProvider($data['endpoints']);
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* Creates and returns an endpoint provider that uses patterns from an
|
86 |
+
* array.
|
87 |
+
*
|
88 |
+
* @param array $patterns Endpoint patterns
|
89 |
+
*
|
90 |
+
* @return callable
|
91 |
+
*/
|
92 |
+
public static function patterns(array $patterns)
|
93 |
+
{
|
94 |
+
return new PatternEndpointProvider($patterns);
|
95 |
+
}
|
96 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Endpoint/PatternEndpointProvider.php
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Endpoint;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Provides endpoints based on an endpoint pattern configuration array.
|
6 |
+
*/
|
7 |
+
class PatternEndpointProvider
|
8 |
+
{
|
9 |
+
/** @var array */
|
10 |
+
private $patterns;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* @param array $patterns Hash of endpoint patterns mapping to endpoint
|
14 |
+
* configurations.
|
15 |
+
*/
|
16 |
+
public function __construct(array $patterns)
|
17 |
+
{
|
18 |
+
$this->patterns = $patterns;
|
19 |
+
}
|
20 |
+
|
21 |
+
public function __invoke(array $args = [])
|
22 |
+
{
|
23 |
+
$service = isset($args['service']) ? $args['service'] : '';
|
24 |
+
$region = isset($args['region']) ? $args['region'] : '';
|
25 |
+
$keys = ["{$region}/{$service}", "{$region}/*", "*/{$service}", "*/*"];
|
26 |
+
|
27 |
+
foreach ($keys as $key) {
|
28 |
+
if (isset($this->patterns[$key])) {
|
29 |
+
return $this->expand(
|
30 |
+
$this->patterns[$key],
|
31 |
+
isset($args['scheme']) ? $args['scheme'] : 'https',
|
32 |
+
$service,
|
33 |
+
$region
|
34 |
+
);
|
35 |
+
}
|
36 |
+
}
|
37 |
+
|
38 |
+
return null;
|
39 |
+
}
|
40 |
+
|
41 |
+
private function expand(array $config, $scheme, $service, $region)
|
42 |
+
{
|
43 |
+
$config['endpoint'] = $scheme . '://'
|
44 |
+
. strtr($config['endpoint'], [
|
45 |
+
'{service}' => $service,
|
46 |
+
'{region}' => $region
|
47 |
+
]);
|
48 |
+
|
49 |
+
return $config;
|
50 |
+
}
|
51 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Exception/AwsException.php
ADDED
@@ -0,0 +1,160 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Exception;
|
3 |
+
|
4 |
+
use Psr\Http\Message\ResponseInterface;
|
5 |
+
use Psr\Http\Message\RequestInterface;
|
6 |
+
use Aws\CommandInterface;
|
7 |
+
use Aws\ResultInterface;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Represents an AWS exception that is thrown when a command fails.
|
11 |
+
*/
|
12 |
+
class AwsException extends \RuntimeException
|
13 |
+
{
|
14 |
+
/** @var ResponseInterface */
|
15 |
+
private $response;
|
16 |
+
private $request;
|
17 |
+
private $result;
|
18 |
+
private $command;
|
19 |
+
private $requestId;
|
20 |
+
private $errorType;
|
21 |
+
private $errorCode;
|
22 |
+
private $connectionError;
|
23 |
+
|
24 |
+
/**
|
25 |
+
* @param string $message Exception message
|
26 |
+
* @param CommandInterface $command
|
27 |
+
* @param array $context Exception context
|
28 |
+
* @param \Exception $previous Previous exception (if any)
|
29 |
+
*/
|
30 |
+
public function __construct(
|
31 |
+
$message,
|
32 |
+
CommandInterface $command,
|
33 |
+
array $context = [],
|
34 |
+
\Exception $previous = null
|
35 |
+
) {
|
36 |
+
$this->command = $command;
|
37 |
+
$this->response = isset($context['response']) ? $context['response'] : null;
|
38 |
+
$this->request = isset($context['request']) ? $context['request'] : null;
|
39 |
+
$this->requestId = isset($context['request_id'])
|
40 |
+
? $context['request_id']
|
41 |
+
: null;
|
42 |
+
$this->errorType = isset($context['type']) ? $context['type'] : null;
|
43 |
+
$this->errorCode = isset($context['code']) ? $context['code'] : null;
|
44 |
+
$this->connectionError = !empty($context['connection_error']);
|
45 |
+
$this->result = isset($context['result']) ? $context['result'] : null;
|
46 |
+
parent::__construct($message, 0, $previous);
|
47 |
+
}
|
48 |
+
|
49 |
+
public function __toString()
|
50 |
+
{
|
51 |
+
if (!$this->getPrevious()) {
|
52 |
+
return parent::__toString();
|
53 |
+
}
|
54 |
+
|
55 |
+
// PHP strangely shows the innermost exception first before the outer
|
56 |
+
// exception message. It also has a default character limit for
|
57 |
+
// exception message strings such that the "next" exception (this one)
|
58 |
+
// might not even get shown, causing developers to attempt to catch
|
59 |
+
// the inner exception instead of the actual exception because they
|
60 |
+
// can't see the outer exception's __toString output.
|
61 |
+
return sprintf(
|
62 |
+
"exception '%s' with message '%s'\n\n%s",
|
63 |
+
get_class($this),
|
64 |
+
$this->getMessage(),
|
65 |
+
parent::__toString()
|
66 |
+
);
|
67 |
+
}
|
68 |
+
|
69 |
+
/**
|
70 |
+
* Get the command that was executed.
|
71 |
+
*
|
72 |
+
* @return CommandInterface
|
73 |
+
*/
|
74 |
+
public function getCommand()
|
75 |
+
{
|
76 |
+
return $this->command;
|
77 |
+
}
|
78 |
+
|
79 |
+
/**
|
80 |
+
* Get the sent HTTP request if any.
|
81 |
+
*
|
82 |
+
* @return RequestInterface|null
|
83 |
+
*/
|
84 |
+
public function getRequest()
|
85 |
+
{
|
86 |
+
return $this->request;
|
87 |
+
}
|
88 |
+
|
89 |
+
/**
|
90 |
+
* Get the received HTTP response if any.
|
91 |
+
*
|
92 |
+
* @return ResponseInterface|null
|
93 |
+
*/
|
94 |
+
public function getResponse()
|
95 |
+
{
|
96 |
+
return $this->response;
|
97 |
+
}
|
98 |
+
|
99 |
+
/**
|
100 |
+
* Get the result of the exception if available
|
101 |
+
*
|
102 |
+
* @return ResultInterface|null
|
103 |
+
*/
|
104 |
+
public function getResult()
|
105 |
+
{
|
106 |
+
return $this->result;
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* Returns true if this is a connection error.
|
111 |
+
*
|
112 |
+
* @return bool
|
113 |
+
*/
|
114 |
+
public function isConnectionError()
|
115 |
+
{
|
116 |
+
return $this->connectionError;
|
117 |
+
}
|
118 |
+
|
119 |
+
/**
|
120 |
+
* If available, gets the HTTP status code of the corresponding response
|
121 |
+
*
|
122 |
+
* @return int|null
|
123 |
+
*/
|
124 |
+
public function getStatusCode()
|
125 |
+
{
|
126 |
+
return $this->response ? $this->response->getStatusCode() : null;
|
127 |
+
}
|
128 |
+
|
129 |
+
/**
|
130 |
+
* Get the request ID of the error. This value is only present if a
|
131 |
+
* response was received and is not present in the event of a networking
|
132 |
+
* error.
|
133 |
+
*
|
134 |
+
* @return string|null Returns null if no response was received
|
135 |
+
*/
|
136 |
+
public function getAwsRequestId()
|
137 |
+
{
|
138 |
+
return $this->requestId;
|
139 |
+
}
|
140 |
+
|
141 |
+
/**
|
142 |
+
* Get the AWS error type.
|
143 |
+
*
|
144 |
+
* @return string|null Returns null if no response was received
|
145 |
+
*/
|
146 |
+
public function getAwsErrorType()
|
147 |
+
{
|
148 |
+
return $this->errorType;
|
149 |
+
}
|
150 |
+
|
151 |
+
/**
|
152 |
+
* Get the AWS error code.
|
153 |
+
*
|
154 |
+
* @return string|null Returns null if no response was received
|
155 |
+
*/
|
156 |
+
public function getAwsErrorCode()
|
157 |
+
{
|
158 |
+
return $this->errorCode;
|
159 |
+
}
|
160 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Exception/CouldNotCreateChecksumException.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Exception;
|
3 |
+
|
4 |
+
class CouldNotCreateChecksumException extends \RuntimeException
|
5 |
+
{
|
6 |
+
public function __construct($algorithm, \Exception $previous = null)
|
7 |
+
{
|
8 |
+
$prefix = $algorithm === 'md5' ? "An" : "A";
|
9 |
+
parent::__construct("{$prefix} {$algorithm} checksum could not be "
|
10 |
+
. "calculated for the provided upload body, because it was not "
|
11 |
+
. "seekable. To prevent this error you can either 1) include the "
|
12 |
+
. "ContentMD5 or ContentSHA256 parameters with your request, 2) "
|
13 |
+
. "use a seekable stream for the body, or 3) wrap the non-seekable "
|
14 |
+
. "stream in a GuzzleHttp\\Psr7\\CachingStream object. You "
|
15 |
+
. "should be careful though and remember that the CachingStream "
|
16 |
+
. "utilizes PHP temp streams. This means that the stream will be "
|
17 |
+
. "temporarily stored on the local disk.", 0, $previous);
|
18 |
+
}
|
19 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Exception/CredentialsException.php
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Exception;
|
3 |
+
|
4 |
+
class CredentialsException extends \RuntimeException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Exception/MultipartUploadException.php
ADDED
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Exception;
|
3 |
+
|
4 |
+
use Aws\Multipart\UploadState;
|
5 |
+
|
6 |
+
class MultipartUploadException extends \RuntimeException
|
7 |
+
{
|
8 |
+
/** @var UploadState State of the erroneous transfer */
|
9 |
+
private $state;
|
10 |
+
|
11 |
+
/**
|
12 |
+
* @param UploadState $state Upload state at time of the exception.
|
13 |
+
* @param \Exception|array $prev Exception being thrown.
|
14 |
+
*/
|
15 |
+
public function __construct(UploadState $state, $prev = null) {
|
16 |
+
$msg = 'An exception occurred while performing a multipart upload.';
|
17 |
+
|
18 |
+
if (is_array($prev)) {
|
19 |
+
$msg = strtr($msg, ['performing' => 'uploading parts to']);
|
20 |
+
$msg .= " The following parts had errors:\n";
|
21 |
+
/** @var $error AwsException */
|
22 |
+
foreach ($prev as $part => $error) {
|
23 |
+
$msg .= "- Part {$part}: " . $error->getMessage(). "\n";
|
24 |
+
}
|
25 |
+
} elseif ($prev instanceof AwsException) {
|
26 |
+
switch ($prev->getCommand()->getName()) {
|
27 |
+
case 'CreateMultipartUpload':
|
28 |
+
case 'InitiateMultipartUpload':
|
29 |
+
$action = 'initiating';
|
30 |
+
break;
|
31 |
+
case 'CompleteMultipartUpload':
|
32 |
+
$action = 'completing';
|
33 |
+
break;
|
34 |
+
}
|
35 |
+
if (isset($action)) {
|
36 |
+
$msg = strtr($msg, ['performing' => $action]);
|
37 |
+
}
|
38 |
+
}
|
39 |
+
|
40 |
+
if (!$prev instanceof \Exception) {
|
41 |
+
$prev = null;
|
42 |
+
}
|
43 |
+
|
44 |
+
parent::__construct($msg, 0, $prev);
|
45 |
+
$this->state = $state;
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Get the state of the transfer
|
50 |
+
*
|
51 |
+
* @return UploadState
|
52 |
+
*/
|
53 |
+
public function getState()
|
54 |
+
{
|
55 |
+
return $this->state;
|
56 |
+
}
|
57 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Exception/UnresolvedApiException.php
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Exception;
|
3 |
+
|
4 |
+
class UnresolvedApiException extends \RuntimeException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Exception/UnresolvedEndpointException.php
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Exception;
|
3 |
+
|
4 |
+
class UnresolvedEndpointException extends \RuntimeException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Exception/UnresolvedSignatureException.php
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Exception;
|
3 |
+
|
4 |
+
class UnresolvedSignatureException extends \RuntimeException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Firehose/Exception/FirehoseException.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Firehose\Exception;
|
3 |
+
|
4 |
+
use Aws\Exception\AwsException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Represents an error interacting with the **Amazon Kinesis Firehose** service.
|
8 |
+
*/
|
9 |
+
class FirehoseException extends AwsException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Firehose/FirehoseClient.php
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Firehose;
|
3 |
+
|
4 |
+
use Aws\AwsClient;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* This client is used to interact with the **Amazon Kinesis Firehose** service.
|
8 |
+
*
|
9 |
+
* @method \Aws\Result createDeliveryStream(array $args = [])
|
10 |
+
* @method \GuzzleHttp\Promise\Promise createDeliveryStreamAsync(array $args = [])
|
11 |
+
* @method \Aws\Result deleteDeliveryStream(array $args = [])
|
12 |
+
* @method \GuzzleHttp\Promise\Promise deleteDeliveryStreamAsync(array $args = [])
|
13 |
+
* @method \Aws\Result describeDeliveryStream(array $args = [])
|
14 |
+
* @method \GuzzleHttp\Promise\Promise describeDeliveryStreamAsync(array $args = [])
|
15 |
+
* @method \Aws\Result listDeliveryStreams(array $args = [])
|
16 |
+
* @method \GuzzleHttp\Promise\Promise listDeliveryStreamsAsync(array $args = [])
|
17 |
+
* @method \Aws\Result putRecord(array $args = [])
|
18 |
+
* @method \GuzzleHttp\Promise\Promise putRecordAsync(array $args = [])
|
19 |
+
* @method \Aws\Result putRecordBatch(array $args = [])
|
20 |
+
* @method \GuzzleHttp\Promise\Promise putRecordBatchAsync(array $args = [])
|
21 |
+
* @method \Aws\Result updateDestination(array $args = [])
|
22 |
+
* @method \GuzzleHttp\Promise\Promise updateDestinationAsync(array $args = [])
|
23 |
+
*/
|
24 |
+
class FirehoseClient extends AwsClient {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Glacier/Exception/GlacierException.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Glacier\Exception;
|
3 |
+
|
4 |
+
use Aws\Exception\AwsException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Represents an error interacting with the Amazon Glacier service.
|
8 |
+
*/
|
9 |
+
class GlacierException extends AwsException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Glacier/GlacierClient.php
ADDED
@@ -0,0 +1,247 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Glacier;
|
3 |
+
|
4 |
+
use Aws\Api\ApiProvider;
|
5 |
+
use Aws\Api\DocModel;
|
6 |
+
use Aws\Api\Service;
|
7 |
+
use Aws\AwsClient;
|
8 |
+
use Aws\CommandInterface;
|
9 |
+
use Aws\Exception\CouldNotCreateChecksumException;
|
10 |
+
use Aws\HashingStream;
|
11 |
+
use Aws\Middleware;
|
12 |
+
use Aws\PhpHash;
|
13 |
+
use Psr\Http\Message\RequestInterface;
|
14 |
+
|
15 |
+
/**
|
16 |
+
* This client is used to interact with the **Amazon Glacier** service.
|
17 |
+
*
|
18 |
+
* @method \Aws\Result abortMultipartUpload(array $args = [])
|
19 |
+
* @method \GuzzleHttp\Promise\Promise abortMultipartUploadAsync(array $args = [])
|
20 |
+
* @method \Aws\Result abortVaultLock(array $args = [])
|
21 |
+
* @method \GuzzleHttp\Promise\Promise abortVaultLockAsync(array $args = [])
|
22 |
+
* @method \Aws\Result addTagsToVault(array $args = [])
|
23 |
+
* @method \GuzzleHttp\Promise\Promise addTagsToVaultAsync(array $args = [])
|
24 |
+
* @method \Aws\Result completeMultipartUpload(array $args = [])
|
25 |
+
* @method \GuzzleHttp\Promise\Promise completeMultipartUploadAsync(array $args = [])
|
26 |
+
* @method \Aws\Result completeVaultLock(array $args = [])
|
27 |
+
* @method \GuzzleHttp\Promise\Promise completeVaultLockAsync(array $args = [])
|
28 |
+
* @method \Aws\Result createVault(array $args = [])
|
29 |
+
* @method \GuzzleHttp\Promise\Promise createVaultAsync(array $args = [])
|
30 |
+
* @method \Aws\Result deleteArchive(array $args = [])
|
31 |
+
* @method \GuzzleHttp\Promise\Promise deleteArchiveAsync(array $args = [])
|
32 |
+
* @method \Aws\Result deleteVault(array $args = [])
|
33 |
+
* @method \GuzzleHttp\Promise\Promise deleteVaultAsync(array $args = [])
|
34 |
+
* @method \Aws\Result deleteVaultAccessPolicy(array $args = [])
|
35 |
+
* @method \GuzzleHttp\Promise\Promise deleteVaultAccessPolicyAsync(array $args = [])
|
36 |
+
* @method \Aws\Result deleteVaultNotifications(array $args = [])
|
37 |
+
* @method \GuzzleHttp\Promise\Promise deleteVaultNotificationsAsync(array $args = [])
|
38 |
+
* @method \Aws\Result describeJob(array $args = [])
|
39 |
+
* @method \GuzzleHttp\Promise\Promise describeJobAsync(array $args = [])
|
40 |
+
* @method \Aws\Result describeVault(array $args = [])
|
41 |
+
* @method \GuzzleHttp\Promise\Promise describeVaultAsync(array $args = [])
|
42 |
+
* @method \Aws\Result getDataRetrievalPolicy(array $args = [])
|
43 |
+
* @method \GuzzleHttp\Promise\Promise getDataRetrievalPolicyAsync(array $args = [])
|
44 |
+
* @method \Aws\Result getJobOutput(array $args = [])
|
45 |
+
* @method \GuzzleHttp\Promise\Promise getJobOutputAsync(array $args = [])
|
46 |
+
* @method \Aws\Result getVaultAccessPolicy(array $args = [])
|
47 |
+
* @method \GuzzleHttp\Promise\Promise getVaultAccessPolicyAsync(array $args = [])
|
48 |
+
* @method \Aws\Result getVaultLock(array $args = [])
|
49 |
+
* @method \GuzzleHttp\Promise\Promise getVaultLockAsync(array $args = [])
|
50 |
+
* @method \Aws\Result getVaultNotifications(array $args = [])
|
51 |
+
* @method \GuzzleHttp\Promise\Promise getVaultNotificationsAsync(array $args = [])
|
52 |
+
* @method \Aws\Result initiateJob(array $args = [])
|
53 |
+
* @method \GuzzleHttp\Promise\Promise initiateJobAsync(array $args = [])
|
54 |
+
* @method \Aws\Result initiateMultipartUpload(array $args = [])
|
55 |
+
* @method \GuzzleHttp\Promise\Promise initiateMultipartUploadAsync(array $args = [])
|
56 |
+
* @method \Aws\Result initiateVaultLock(array $args = [])
|
57 |
+
* @method \GuzzleHttp\Promise\Promise initiateVaultLockAsync(array $args = [])
|
58 |
+
* @method \Aws\Result listJobs(array $args = [])
|
59 |
+
* @method \GuzzleHttp\Promise\Promise listJobsAsync(array $args = [])
|
60 |
+
* @method \Aws\Result listMultipartUploads(array $args = [])
|
61 |
+
* @method \GuzzleHttp\Promise\Promise listMultipartUploadsAsync(array $args = [])
|
62 |
+
* @method \Aws\Result listParts(array $args = [])
|
63 |
+
* @method \GuzzleHttp\Promise\Promise listPartsAsync(array $args = [])
|
64 |
+
* @method \Aws\Result listTagsForVault(array $args = [])
|
65 |
+
* @method \GuzzleHttp\Promise\Promise listTagsForVaultAsync(array $args = [])
|
66 |
+
* @method \Aws\Result listVaults(array $args = [])
|
67 |
+
* @method \GuzzleHttp\Promise\Promise listVaultsAsync(array $args = [])
|
68 |
+
* @method \Aws\Result removeTagsFromVault(array $args = [])
|
69 |
+
* @method \GuzzleHttp\Promise\Promise removeTagsFromVaultAsync(array $args = [])
|
70 |
+
* @method \Aws\Result setDataRetrievalPolicy(array $args = [])
|
71 |
+
* @method \GuzzleHttp\Promise\Promise setDataRetrievalPolicyAsync(array $args = [])
|
72 |
+
* @method \Aws\Result setVaultAccessPolicy(array $args = [])
|
73 |
+
* @method \GuzzleHttp\Promise\Promise setVaultAccessPolicyAsync(array $args = [])
|
74 |
+
* @method \Aws\Result setVaultNotifications(array $args = [])
|
75 |
+
* @method \GuzzleHttp\Promise\Promise setVaultNotificationsAsync(array $args = [])
|
76 |
+
* @method \Aws\Result uploadArchive(array $args = [])
|
77 |
+
* @method \GuzzleHttp\Promise\Promise uploadArchiveAsync(array $args = [])
|
78 |
+
* @method \Aws\Result uploadMultipartPart(array $args = [])
|
79 |
+
* @method \GuzzleHttp\Promise\Promise uploadMultipartPartAsync(array $args = [])
|
80 |
+
*/
|
81 |
+
class GlacierClient extends AwsClient
|
82 |
+
{
|
83 |
+
public function __construct(array $args)
|
84 |
+
{
|
85 |
+
parent::__construct($args);
|
86 |
+
|
87 |
+
// Setup middleware.
|
88 |
+
$stack = $this->getHandlerList();
|
89 |
+
$stack->appendBuild($this->getApiVersionMiddleware(), 'glacier.api_version');
|
90 |
+
$stack->appendBuild($this->getChecksumsMiddleware(), 'glacier.checksum');
|
91 |
+
$stack->appendBuild(
|
92 |
+
Middleware::contentType(['UploadArchive', 'UploadPart']),
|
93 |
+
'glacier.content_type'
|
94 |
+
);
|
95 |
+
$stack->appendInit(
|
96 |
+
Middleware::sourceFile($this->getApi(), 'body', 'sourceFile'),
|
97 |
+
'glacier.source_file'
|
98 |
+
);
|
99 |
+
}
|
100 |
+
|
101 |
+
/**
|
102 |
+
* {@inheritdoc}
|
103 |
+
*
|
104 |
+
* Sets the default accountId to "-" for all operations.
|
105 |
+
*/
|
106 |
+
public function getCommand($name, array $args = [])
|
107 |
+
{
|
108 |
+
return parent::getCommand($name, $args + ['accountId' => '-']);
|
109 |
+
}
|
110 |
+
|
111 |
+
/**
|
112 |
+
* Creates a middleware that updates a command with the content and tree
|
113 |
+
* hash headers for upload operations.
|
114 |
+
*
|
115 |
+
* @return callable
|
116 |
+
* @throws CouldNotCreateChecksumException if the body is not seekable.
|
117 |
+
*/
|
118 |
+
private function getChecksumsMiddleware()
|
119 |
+
{
|
120 |
+
return function (callable $handler) {
|
121 |
+
return function (
|
122 |
+
CommandInterface $command,
|
123 |
+
RequestInterface $request = null
|
124 |
+
) use ($handler) {
|
125 |
+
// Accept "ContentSHA256" with a lowercase "c" to match other Glacier params.
|
126 |
+
if (!$command['ContentSHA256'] && $command['contentSHA256']) {
|
127 |
+
$command['ContentSHA256'] = $command['contentSHA256'];
|
128 |
+
unset($command['contentSHA256']);
|
129 |
+
}
|
130 |
+
|
131 |
+
// If uploading, then make sure checksums are added.
|
132 |
+
$name = $command->getName();
|
133 |
+
if (($name === 'UploadArchive' || $name === 'UploadMultipartPart')
|
134 |
+
&& (!$command['checksum'] || !$command['ContentSHA256'])
|
135 |
+
) {
|
136 |
+
$body = $request->getBody();
|
137 |
+
if (!$body->isSeekable()) {
|
138 |
+
throw new CouldNotCreateChecksumException('sha256');
|
139 |
+
}
|
140 |
+
|
141 |
+
// Add a tree hash if not provided.
|
142 |
+
if (!$command['checksum']) {
|
143 |
+
$body = new HashingStream(
|
144 |
+
$body, new TreeHash(),
|
145 |
+
function ($result) use ($command, &$request) {
|
146 |
+
$request = $request->withHeader(
|
147 |
+
'x-amz-sha256-tree-hash',
|
148 |
+
bin2hex($result)
|
149 |
+
);
|
150 |
+
}
|
151 |
+
);
|
152 |
+
}
|
153 |
+
|
154 |
+
// Add a linear content hash if not provided.
|
155 |
+
if (!$command['ContentSHA256']) {
|
156 |
+
$body = new HashingStream(
|
157 |
+
$body, new PhpHash('sha256'),
|
158 |
+
function ($result) use ($command) {
|
159 |
+
$command['ContentSHA256'] = bin2hex($result);
|
160 |
+
}
|
161 |
+
);
|
162 |
+
}
|
163 |
+
|
164 |
+
// Read the stream in order to calculate the hashes.
|
165 |
+
while (!$body->eof()) {
|
166 |
+
$body->read(1048576);
|
167 |
+
}
|
168 |
+
$body->seek(0);
|
169 |
+
}
|
170 |
+
|
171 |
+
// Set the content hash header if a value is in the command.
|
172 |
+
if ($command['ContentSHA256']) {
|
173 |
+
$request = $request->withHeader(
|
174 |
+
'x-amz-content-sha256',
|
175 |
+
$command['ContentSHA256']
|
176 |
+
);
|
177 |
+
}
|
178 |
+
|
179 |
+
return $handler($command, $request);
|
180 |
+
};
|
181 |
+
};
|
182 |
+
}
|
183 |
+
|
184 |
+
/**
|
185 |
+
* Creates a middleware that adds the API version header for all requests.
|
186 |
+
*
|
187 |
+
* @return callable
|
188 |
+
*/
|
189 |
+
private function getApiVersionMiddleware()
|
190 |
+
{
|
191 |
+
return function (callable $handler) {
|
192 |
+
return function (
|
193 |
+
CommandInterface $command,
|
194 |
+
RequestInterface $request = null
|
195 |
+
) use ($handler) {
|
196 |
+
return $handler($command, $request->withHeader(
|
197 |
+
'x-amz-glacier-version',
|
198 |
+
$this->getApi()->getMetadata('apiVersion')
|
199 |
+
));
|
200 |
+
};
|
201 |
+
};
|
202 |
+
}
|
203 |
+
|
204 |
+
/**
|
205 |
+
* @internal
|
206 |
+
* @codeCoverageIgnore
|
207 |
+
*/
|
208 |
+
public static function applyDocFilters(array $api, array $docs)
|
209 |
+
{
|
210 |
+
// Add the SourceFile parameter.
|
211 |
+
$docs['shapes']['SourceFile']['base'] = 'The path to a file on disk to use instead of the body parameter.';
|
212 |
+
$api['shapes']['SourceFile'] = ['type' => 'string'];
|
213 |
+
$api['shapes']['UploadArchiveInput']['members']['sourceFile'] = ['shape' => 'SourceFile'];
|
214 |
+
$api['shapes']['UploadMultipartPartInput']['members']['sourceFile'] = ['shape' => 'SourceFile'];
|
215 |
+
|
216 |
+
// Add the ContentSHA256 parameter.
|
217 |
+
$docs['shapes']['ContentSHA256']['base'] = 'A SHA256 hash of the content of the request body';
|
218 |
+
$api['shapes']['ContentSHA256'] = ['type' => 'string'];
|
219 |
+
$api['shapes']['UploadArchiveInput']['members']['contentSHA256'] = ['shape' => 'ContentSHA256'];
|
220 |
+
$api['shapes']['UploadMultipartPartInput']['members']['contentSHA256'] = ['shape' => 'ContentSHA256'];
|
221 |
+
|
222 |
+
// Add information about "checksum" and "ContentSHA256" being optional.
|
223 |
+
$optional = '<div class="alert alert-info">The SDK will compute this value '
|
224 |
+
. 'for you on your behalf if it is not supplied.</div>';
|
225 |
+
$docs['shapes']['checksum']['append'] = $optional;
|
226 |
+
$docs['shapes']['ContentSHA256']['append'] = $optional;
|
227 |
+
|
228 |
+
// Make "accountId" optional for all operations.
|
229 |
+
foreach ($api['operations'] as $operation) {
|
230 |
+
$inputShape =& $api['shapes'][$operation['input']['shape']];
|
231 |
+
$accountIdIndex = array_search('accountId', $inputShape['required']);
|
232 |
+
unset($inputShape['required'][$accountIdIndex]);
|
233 |
+
}
|
234 |
+
// Add information about the default value for "accountId".
|
235 |
+
$optional = '<div class="alert alert-info">The SDK will set this value to "-" by default.</div>';
|
236 |
+
foreach ($docs['shapes']['string']['refs'] as $name => &$ref) {
|
237 |
+
if (strpos($name, 'accountId')) {
|
238 |
+
$ref .= $optional;
|
239 |
+
}
|
240 |
+
}
|
241 |
+
|
242 |
+
return [
|
243 |
+
new Service($api, ApiProvider::defaultProvider()),
|
244 |
+
new DocModel($docs)
|
245 |
+
];
|
246 |
+
}
|
247 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Glacier/MultipartUploader.php
ADDED
@@ -0,0 +1,281 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Glacier;
|
3 |
+
|
4 |
+
use Aws\CommandInterface;
|
5 |
+
use Aws\HashingStream;
|
6 |
+
use Aws\Multipart\AbstractUploader;
|
7 |
+
use Aws\Multipart\UploadState;
|
8 |
+
use Aws\PhpHash;
|
9 |
+
use Aws\ResultInterface;
|
10 |
+
use GuzzleHttp\Psr7;
|
11 |
+
use Psr\Http\Message\StreamInterface as Stream;
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Encapsulates the execution of a multipart upload to Glacier.
|
15 |
+
*/
|
16 |
+
class MultipartUploader extends AbstractUploader
|
17 |
+
{
|
18 |
+
const PART_MIN_SIZE = 1048576;
|
19 |
+
|
20 |
+
private static $validPartSizes = [
|
21 |
+
1048576, // 1 MB
|
22 |
+
2097152, // 2 MB
|
23 |
+
4194304, // 4 MB
|
24 |
+
8388608, // 8 MB
|
25 |
+
16777216, // 16 MB
|
26 |
+
33554432, // 32 MB
|
27 |
+
67108864, // 64 MB
|
28 |
+
134217728, // 128 MB
|
29 |
+
268435456, // 256 MB
|
30 |
+
536870912, // 512 MB
|
31 |
+
1073741824, // 1 GB
|
32 |
+
2147483648, // 2 GB
|
33 |
+
4294967296, // 4 GB
|
34 |
+
];
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Creates an UploadState object for a multipart upload by querying the
|
38 |
+
* service for the specified upload's information.
|
39 |
+
*
|
40 |
+
* @param GlacierClient $client GlacierClient object to use.
|
41 |
+
* @param string $vaultName Vault name for the multipart upload.
|
42 |
+
* @param string $uploadId Upload ID for the multipart upload.
|
43 |
+
* @param string $accountId Account ID for the multipart upload.
|
44 |
+
*
|
45 |
+
* @return UploadState
|
46 |
+
*/
|
47 |
+
public static function getStateFromService(
|
48 |
+
GlacierClient $client,
|
49 |
+
$vaultName,
|
50 |
+
$uploadId,
|
51 |
+
$accountId = '-'
|
52 |
+
) {
|
53 |
+
$state = new UploadState([
|
54 |
+
'accountId' => $accountId,
|
55 |
+
'vaultName' => $vaultName,
|
56 |
+
'uploadId' => $uploadId,
|
57 |
+
]);
|
58 |
+
|
59 |
+
foreach ($client->getPaginator('ListParts', $state->getId()) as $result) {
|
60 |
+
// Get the part size from the first part in the first result.
|
61 |
+
if (!$state->getPartSize()) {
|
62 |
+
$state->setPartSize($result['PartSizeInBytes']);
|
63 |
+
}
|
64 |
+
// Mark all the parts returned by ListParts as uploaded.
|
65 |
+
foreach ($result['Parts'] as $part) {
|
66 |
+
list($rangeIndex, $rangeSize) = self::parseRange(
|
67 |
+
$part['RangeInBytes'],
|
68 |
+
$state->getPartSize()
|
69 |
+
);
|
70 |
+
$state->markPartAsUploaded($rangeIndex, [
|
71 |
+
'size' => $rangeSize,
|
72 |
+
'checksum' => $part['SHA256TreeHash'],
|
73 |
+
]);
|
74 |
+
}
|
75 |
+
}
|
76 |
+
|
77 |
+
$state->setStatus(UploadState::INITIATED);
|
78 |
+
|
79 |
+
return $state;
|
80 |
+
}
|
81 |
+
|
82 |
+
/**
|
83 |
+
* Creates a multipart upload for a Glacier archive.
|
84 |
+
*
|
85 |
+
* The valid configuration options are as follows:
|
86 |
+
*
|
87 |
+
* - account_id: (string, default=string('-')) Account ID for the archive
|
88 |
+
* being uploaded, if different from the account making the request.
|
89 |
+
* - archive_description: (string) Description of the archive.
|
90 |
+
* - before_complete: (callable) Callback to invoke before the
|
91 |
+
* `CompleteMultipartUpload` operation. The callback should have a
|
92 |
+
* function signature like `function (Aws\Command $command) {...}`.
|
93 |
+
* - before_initiate: (callable) Callback to invoke before the
|
94 |
+
* `InitiateMultipartUpload` operation. The callback should have a
|
95 |
+
* function signature like `function (Aws\Command $command) {...}`.
|
96 |
+
* - before_upload: (callable) Callback to invoke before any
|
97 |
+
* `UploadMultipartPart` operations. The callback should have a function
|
98 |
+
* signature like `function (Aws\Command $command) {...}`.
|
99 |
+
* - concurrency: (int, default=int(3)) Maximum number of concurrent
|
100 |
+
* `UploadMultipartPart` operations allowed during the multipart upload.
|
101 |
+
* - part_size: (int, default=int(1048576)) Part size, in bytes, to use when
|
102 |
+
* doing a multipart upload. This must between 1 MB and 4 GB, and must be
|
103 |
+
* a power of 2 (in megabytes).
|
104 |
+
* - state: (Aws\Multipart\UploadState) An object that represents the state
|
105 |
+
* of the multipart upload and that is used to resume a previous upload.
|
106 |
+
* When this options is provided, the `account_id`, `key`, and `part_size`
|
107 |
+
* options are ignored.
|
108 |
+
* - vault_name: (string, required) Vault name to use for the archive being
|
109 |
+
* uploaded.
|
110 |
+
*
|
111 |
+
* @param GlacierClient $client Client used for the upload.
|
112 |
+
* @param mixed $source Source of the data to upload.
|
113 |
+
* @param array $config Configuration used to perform the upload.
|
114 |
+
*/
|
115 |
+
public function __construct(GlacierClient $client, $source, array $config = [])
|
116 |
+
{
|
117 |
+
parent::__construct($client, $source, $config + [
|
118 |
+
'account_id' => '-',
|
119 |
+
'vault_name' => null,
|
120 |
+
]);
|
121 |
+
}
|
122 |
+
|
123 |
+
protected function loadUploadWorkflowInfo()
|
124 |
+
{
|
125 |
+
return [
|
126 |
+
'command' => [
|
127 |
+
'initiate' => 'InitiateMultipartUpload',
|
128 |
+
'upload' => 'UploadMultipartPart',
|
129 |
+
'complete' => 'CompleteMultipartUpload',
|
130 |
+
],
|
131 |
+
'id' => [
|
132 |
+
'account_id' => 'accountId',
|
133 |
+
'vault_name' => 'vaultName',
|
134 |
+
'upload_id' => 'uploadId',
|
135 |
+
],
|
136 |
+
'part_num' => 'range',
|
137 |
+
];
|
138 |
+
}
|
139 |
+
|
140 |
+
protected function determinePartSize()
|
141 |
+
{
|
142 |
+
// Make sure the part size is set.
|
143 |
+
$partSize = $this->config['part_size'] ?: self::PART_MIN_SIZE;
|
144 |
+
|
145 |
+
// Ensure that the part size is valid.
|
146 |
+
if (!in_array($partSize, self::$validPartSizes)) {
|
147 |
+
throw new \InvalidArgumentException('The part_size must be a power '
|
148 |
+
. 'of 2, in megabytes, such that 1 MB <= PART_SIZE <= 4 GB.');
|
149 |
+
}
|
150 |
+
|
151 |
+
return $partSize;
|
152 |
+
}
|
153 |
+
|
154 |
+
protected function createPart($seekable, $number)
|
155 |
+
{
|
156 |
+
$data = [];
|
157 |
+
$firstByte = $this->source->tell();
|
158 |
+
|
159 |
+
// Read from the source to create the body stream. This also
|
160 |
+
// calculates the linear and tree hashes as the data is read.
|
161 |
+
if ($seekable) {
|
162 |
+
// Case 1: Stream is seekable, can make stream from new handle.
|
163 |
+
$body = Psr7\try_fopen($this->source->getMetadata('uri'), 'r');
|
164 |
+
$body = $this->limitPartStream(Psr7\stream_for($body));
|
165 |
+
// Create another stream decorated with hashing streams and read
|
166 |
+
// through it, so we can get the hash values for the part.
|
167 |
+
$decoratedBody = $this->decorateWithHashes($body, $data);
|
168 |
+
while (!$decoratedBody->eof()) $decoratedBody->read(1048576);
|
169 |
+
// Seek the original source forward to the end of the range.
|
170 |
+
$this->source->seek($this->source->tell() + $body->getSize());
|
171 |
+
} else {
|
172 |
+
// Case 2: Stream is not seekable, must store part in temp stream.
|
173 |
+
$source = $this->limitPartStream($this->source);
|
174 |
+
$source = $this->decorateWithHashes($source, $data);
|
175 |
+
$body = Psr7\stream_for();
|
176 |
+
Psr7\copy_to_stream($source, $body);
|
177 |
+
}
|
178 |
+
|
179 |
+
// Do not create a part if the body size is zero.
|
180 |
+
if ($body->getSize() === 0) {
|
181 |
+
return false;
|
182 |
+
}
|
183 |
+
|
184 |
+
$body->seek(0);
|
185 |
+
$data['body'] = $body;
|
186 |
+
$lastByte = $this->source->tell() - 1;
|
187 |
+
$data['range'] = "bytes {$firstByte}-{$lastByte}/*";
|
188 |
+
|
189 |
+
return $data;
|
190 |
+
}
|
191 |
+
|
192 |
+
protected function handleResult(CommandInterface $command, ResultInterface $result)
|
193 |
+
{
|
194 |
+
list($rangeIndex, $rangeSize) = $this->parseRange(
|
195 |
+
$command['range'],
|
196 |
+
$this->state->getPartSize()
|
197 |
+
);
|
198 |
+
|
199 |
+
$this->state->markPartAsUploaded($rangeIndex, [
|
200 |
+
'size' => $rangeSize,
|
201 |
+
'checksum' => $command['checksum']
|
202 |
+
]);
|
203 |
+
}
|
204 |
+
|
205 |
+
protected function getInitiateParams()
|
206 |
+
{
|
207 |
+
$params = ['partSize' => $this->state->getPartSize()];
|
208 |
+
if (isset($this->config['archive_description'])) {
|
209 |
+
$params['archiveDescription'] = $this->config['archive_description'];
|
210 |
+
}
|
211 |
+
|
212 |
+
return $params;
|
213 |
+
}
|
214 |
+
|
215 |
+
protected function getCompleteParams()
|
216 |
+
{
|
217 |
+
$treeHash = new TreeHash();
|
218 |
+
$archiveSize = 0;
|
219 |
+
foreach ($this->state->getUploadedParts() as $part) {
|
220 |
+
$archiveSize += $part['size'];
|
221 |
+
$treeHash->addChecksum($part['checksum']);
|
222 |
+
}
|
223 |
+
|
224 |
+
return [
|
225 |
+
'archiveSize' => $archiveSize,
|
226 |
+
'checksum' => bin2hex($treeHash->complete()),
|
227 |
+
];
|
228 |
+
}
|
229 |
+
|
230 |
+
/**
|
231 |
+
* Decorates a stream with a tree AND linear sha256 hashing stream.
|
232 |
+
*
|
233 |
+
* @param Stream $stream Stream to decorate.
|
234 |
+
* @param array $data Data bag that results are injected into.
|
235 |
+
*
|
236 |
+
* @return Stream
|
237 |
+
*/
|
238 |
+
private function decorateWithHashes(Stream $stream, array &$data)
|
239 |
+
{
|
240 |
+
// Make sure that a tree hash is calculated.
|
241 |
+
$stream = new HashingStream($stream, new TreeHash(),
|
242 |
+
function ($result) use (&$data) {
|
243 |
+
$data['checksum'] = bin2hex($result);
|
244 |
+
}
|
245 |
+
);
|
246 |
+
|
247 |
+
// Make sure that a linear SHA256 hash is calculated.
|
248 |
+
$stream = new HashingStream($stream, new PhpHash('sha256'),
|
249 |
+
function ($result) use (&$data) {
|
250 |
+
$data['ContentSHA256'] = bin2hex($result);
|
251 |
+
}
|
252 |
+
);
|
253 |
+
|
254 |
+
return $stream;
|
255 |
+
}
|
256 |
+
|
257 |
+
/**
|
258 |
+
* Parses a Glacier range string into a size and part number.
|
259 |
+
*
|
260 |
+
* @param string $range Glacier range string (e.g., "bytes 5-5000/*")
|
261 |
+
* @param int $partSize The chosen part size
|
262 |
+
*
|
263 |
+
* @return array
|
264 |
+
*/
|
265 |
+
private static function parseRange($range, $partSize)
|
266 |
+
{
|
267 |
+
// Strip away the prefix and suffix.
|
268 |
+
if (strpos($range, 'bytes') !== false) {
|
269 |
+
$range = substr($range, 6, -2);
|
270 |
+
}
|
271 |
+
|
272 |
+
// Split that range into it's parts.
|
273 |
+
list($firstByte, $lastByte) = explode('-', $range);
|
274 |
+
|
275 |
+
// Calculate and return range index and range size
|
276 |
+
return [
|
277 |
+
intval($firstByte / $partSize) + 1,
|
278 |
+
$lastByte - $firstByte + 1,
|
279 |
+
];
|
280 |
+
}
|
281 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Glacier/TreeHash.php
ADDED
@@ -0,0 +1,118 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Glacier;
|
3 |
+
|
4 |
+
use Aws\HashInterface;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Encapsulates the creation of a tree hash from streamed data
|
8 |
+
*/
|
9 |
+
class TreeHash implements HashInterface
|
10 |
+
{
|
11 |
+
const MB = 1048576;
|
12 |
+
const EMPTY_HASH = 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855';
|
13 |
+
|
14 |
+
/** @var string Algorithm used for hashing. */
|
15 |
+
private $algorithm;
|
16 |
+
|
17 |
+
/** @var string Buffered data that has not yet been hashed. */
|
18 |
+
private $buffer;
|
19 |
+
|
20 |
+
/** @var array Binary checksums from which the tree hash is derived. */
|
21 |
+
private $checksums = [];
|
22 |
+
|
23 |
+
/** @var string Resulting hash in binary form. */
|
24 |
+
private $hash;
|
25 |
+
|
26 |
+
public function __construct($algorithm = 'sha256')
|
27 |
+
{
|
28 |
+
$this->algorithm = $algorithm;
|
29 |
+
$this->reset();
|
30 |
+
}
|
31 |
+
|
32 |
+
/**
|
33 |
+
* {@inheritdoc}
|
34 |
+
* @throws \LogicException if the root tree hash is already calculated
|
35 |
+
*/
|
36 |
+
public function update($data)
|
37 |
+
{
|
38 |
+
// Error if hash is already calculated.
|
39 |
+
if ($this->hash) {
|
40 |
+
throw new \LogicException('You may not add more data to a '
|
41 |
+
. 'complete tree hash.');
|
42 |
+
}
|
43 |
+
|
44 |
+
// Buffer incoming data.
|
45 |
+
$this->buffer .= $data;
|
46 |
+
|
47 |
+
// When there is more than a MB of data, create a checksum.
|
48 |
+
while (strlen($this->buffer) >= self::MB) {
|
49 |
+
$data = substr($this->buffer, 0, self::MB);
|
50 |
+
$this->buffer = substr($this->buffer, self::MB) ?: '';
|
51 |
+
$this->checksums[] = hash($this->algorithm, $data, true);
|
52 |
+
}
|
53 |
+
|
54 |
+
return $this;
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Add a checksum to the tree hash directly
|
59 |
+
*
|
60 |
+
* @param string $checksum The checksum to add
|
61 |
+
* @param bool $inBinaryForm TRUE if checksum is in binary form
|
62 |
+
*
|
63 |
+
* @return self
|
64 |
+
* @throws \LogicException if the root tree hash is already calculated
|
65 |
+
*/
|
66 |
+
public function addChecksum($checksum, $inBinaryForm = false)
|
67 |
+
{
|
68 |
+
// Error if hash is already calculated
|
69 |
+
if ($this->hash) {
|
70 |
+
throw new \LogicException('You may not add more checksums to a '
|
71 |
+
. 'complete tree hash.');
|
72 |
+
}
|
73 |
+
|
74 |
+
// Convert the checksum to binary form if necessary
|
75 |
+
$this->checksums[] = $inBinaryForm ? $checksum : hex2bin($checksum);
|
76 |
+
|
77 |
+
return $this;
|
78 |
+
}
|
79 |
+
|
80 |
+
public function complete()
|
81 |
+
{
|
82 |
+
if (!$this->hash) {
|
83 |
+
// Clear out the remaining buffer.
|
84 |
+
if ($this->buffer) {
|
85 |
+
$this->checksums[] = hash($this->algorithm, $this->buffer, true);
|
86 |
+
$this->buffer = '';
|
87 |
+
}
|
88 |
+
|
89 |
+
// If no hashes, add the EMPTY_HASH.
|
90 |
+
if (!$this->checksums) {
|
91 |
+
$this->checksums[] = hex2bin(self::EMPTY_HASH);
|
92 |
+
}
|
93 |
+
|
94 |
+
// Perform hashes up the tree to arrive at the root checksum.
|
95 |
+
$hashes = $this->checksums;
|
96 |
+
while (count($hashes) > 1) {
|
97 |
+
$sets = array_chunk($hashes, 2);
|
98 |
+
$hashes = array();
|
99 |
+
foreach ($sets as $set) {
|
100 |
+
$hashes[] = (count($set) === 1)
|
101 |
+
? $set[0]
|
102 |
+
: hash($this->algorithm, $set[0] . $set[1], true);
|
103 |
+
}
|
104 |
+
}
|
105 |
+
|
106 |
+
$this->hash = $hashes[0];
|
107 |
+
}
|
108 |
+
|
109 |
+
return $this->hash;
|
110 |
+
}
|
111 |
+
|
112 |
+
public function reset()
|
113 |
+
{
|
114 |
+
$this->hash = null;
|
115 |
+
$this->checksums = [];
|
116 |
+
$this->buffer = '';
|
117 |
+
}
|
118 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Handler/GuzzleV5/GuzzleHandler.php
ADDED
@@ -0,0 +1,181 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Handler\GuzzleV5;
|
3 |
+
|
4 |
+
use Aws\Sdk;
|
5 |
+
use Exception;
|
6 |
+
use GuzzleHttp\Client;
|
7 |
+
use GuzzleHttp\ClientInterface;
|
8 |
+
use GuzzleHttp\Exception\ConnectException;
|
9 |
+
use GuzzleHttp\Exception\RequestException;
|
10 |
+
use GuzzleHttp\Message\ResponseInterface as GuzzleResponse;
|
11 |
+
use GuzzleHttp\Promise;
|
12 |
+
use GuzzleHttp\Psr7\Response as Psr7Response;
|
13 |
+
use Psr\Http\Message\RequestInterface as Psr7Request;
|
14 |
+
use Psr\Http\Message\StreamInterface as Psr7StreamInterface;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* A request handler that sends PSR-7-compatible requests with Guzzle 5.
|
18 |
+
*
|
19 |
+
* The handler accepts a PSR-7 Request object and an array of transfer options
|
20 |
+
* and returns a Guzzle 6 Promise. The promise is either resolved with a
|
21 |
+
* PSR-7 Response object or rejected with an array of error data.
|
22 |
+
*
|
23 |
+
* @codeCoverageIgnore
|
24 |
+
*/
|
25 |
+
class GuzzleHandler
|
26 |
+
{
|
27 |
+
private static $validOptions = [
|
28 |
+
'proxy' => true,
|
29 |
+
'verify' => true,
|
30 |
+
'timeout' => true,
|
31 |
+
'debug' => true,
|
32 |
+
'connect_timeout' => true,
|
33 |
+
'stream' => true,
|
34 |
+
'delay' => true,
|
35 |
+
'sink' => true,
|
36 |
+
];
|
37 |
+
|
38 |
+
/** @var ClientInterface */
|
39 |
+
private $client;
|
40 |
+
|
41 |
+
/**
|
42 |
+
* @param ClientInterface $client
|
43 |
+
*/
|
44 |
+
public function __construct(ClientInterface $client = null)
|
45 |
+
{
|
46 |
+
$this->client = $client ?: new Client();
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* @param Psr7Request $request
|
51 |
+
* @param array $options
|
52 |
+
*
|
53 |
+
* @return Promise\Promise
|
54 |
+
*/
|
55 |
+
public function __invoke(Psr7Request $request, array $options = [])
|
56 |
+
{
|
57 |
+
// Create and send a Guzzle 5 request
|
58 |
+
$guzzlePromise = $this->client->send(
|
59 |
+
$this->createGuzzleRequest($request, $options)
|
60 |
+
);
|
61 |
+
|
62 |
+
$promise = new Promise\Promise(
|
63 |
+
function () use ($guzzlePromise) {
|
64 |
+
try {
|
65 |
+
$guzzlePromise->wait();
|
66 |
+
} catch (\Exception $e) {
|
67 |
+
// The promise is already delivered when the exception is
|
68 |
+
// thrown, so don't rethrow it.
|
69 |
+
}
|
70 |
+
},
|
71 |
+
[$guzzlePromise, 'cancel']
|
72 |
+
);
|
73 |
+
|
74 |
+
$guzzlePromise->then([$promise, 'resolve'], [$promise, 'reject']);
|
75 |
+
|
76 |
+
return $promise->then(
|
77 |
+
function (GuzzleResponse $response) {
|
78 |
+
// Adapt the Guzzle 5 Future to a Guzzle 6 ResponsePromise.
|
79 |
+
return $this->createPsr7Response($response);
|
80 |
+
},
|
81 |
+
function (Exception $exception) {
|
82 |
+
// Reject with information about the error.
|
83 |
+
return new Promise\RejectedPromise($this->prepareErrorData($exception));
|
84 |
+
}
|
85 |
+
);
|
86 |
+
}
|
87 |
+
|
88 |
+
private function createGuzzleRequest(Psr7Request $psrRequest, array $options)
|
89 |
+
{
|
90 |
+
$ringConfig = [];
|
91 |
+
|
92 |
+
// Remove unsupported options.
|
93 |
+
foreach (array_keys($options) as $key) {
|
94 |
+
if (!isset(self::$validOptions[$key])) {
|
95 |
+
unset($options[$key]);
|
96 |
+
}
|
97 |
+
}
|
98 |
+
|
99 |
+
// Handle delay option.
|
100 |
+
if (isset($options['delay'])) {
|
101 |
+
$ringConfig['delay'] = $options['delay'];
|
102 |
+
unset($options['delay']);
|
103 |
+
}
|
104 |
+
|
105 |
+
// Prepare sink option.
|
106 |
+
if (isset($options['sink'])) {
|
107 |
+
$ringConfig['save_to'] = ($options['sink'] instanceof Psr7StreamInterface)
|
108 |
+
? new GuzzleStream($options['sink'])
|
109 |
+
: $options['sink'];
|
110 |
+
unset($options['sink']);
|
111 |
+
}
|
112 |
+
|
113 |
+
// Ensure that all requests are async and lazy like Guzzle 6.
|
114 |
+
$options['future'] = 'lazy';
|
115 |
+
|
116 |
+
// Create the Guzzle 5 request from the provided PSR7 request.
|
117 |
+
$request = $this->client->createRequest(
|
118 |
+
$psrRequest->getMethod(),
|
119 |
+
$psrRequest->getUri(),
|
120 |
+
$options
|
121 |
+
);
|
122 |
+
|
123 |
+
// For the request body, adapt the PSR stream to a Guzzle stream.
|
124 |
+
$body = $psrRequest->getBody();
|
125 |
+
if ($body->getSize() === 0) {
|
126 |
+
$request->setBody(null);
|
127 |
+
} else {
|
128 |
+
$request->setBody(new GuzzleStream($body));
|
129 |
+
}
|
130 |
+
|
131 |
+
$request->setHeaders($psrRequest->getHeaders());
|
132 |
+
|
133 |
+
$request->setHeader(
|
134 |
+
'User-Agent',
|
135 |
+
$request->getHeader('User-Agent')
|
136 |
+
. ' ' . Client::getDefaultUserAgent()
|
137 |
+
);
|
138 |
+
|
139 |
+
// Make sure the delay is configured, if provided.
|
140 |
+
if ($ringConfig) {
|
141 |
+
foreach ($ringConfig as $k => $v) {
|
142 |
+
$request->getConfig()->set($k, $v);
|
143 |
+
}
|
144 |
+
}
|
145 |
+
|
146 |
+
return $request;
|
147 |
+
}
|
148 |
+
|
149 |
+
private function createPsr7Response(GuzzleResponse $response)
|
150 |
+
{
|
151 |
+
if ($body = $response->getBody()) {
|
152 |
+
$body = new PsrStream($body);
|
153 |
+
}
|
154 |
+
|
155 |
+
return new Psr7Response(
|
156 |
+
$response->getStatusCode(),
|
157 |
+
$response->getHeaders(),
|
158 |
+
$body,
|
159 |
+
$response->getReasonPhrase()
|
160 |
+
);
|
161 |
+
}
|
162 |
+
|
163 |
+
private function prepareErrorData(Exception $e)
|
164 |
+
{
|
165 |
+
$error = [
|
166 |
+
'exception' => $e,
|
167 |
+
'connection_error' => false,
|
168 |
+
'response' => null,
|
169 |
+
];
|
170 |
+
|
171 |
+
if ($e instanceof ConnectException) {
|
172 |
+
$error['connection_error'] = true;
|
173 |
+
}
|
174 |
+
|
175 |
+
if ($e instanceof RequestException && $e->getResponse()) {
|
176 |
+
$error['response'] = $this->createPsr7Response($e->getResponse());
|
177 |
+
}
|
178 |
+
|
179 |
+
return $error;
|
180 |
+
}
|
181 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Handler/GuzzleV5/GuzzleStream.php
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Handler\GuzzleV5;
|
3 |
+
|
4 |
+
use GuzzleHttp\Stream\StreamDecoratorTrait;
|
5 |
+
use GuzzleHttp\Stream\StreamInterface as GuzzleStreamInterface;
|
6 |
+
use Psr\Http\Message\StreamInterface as Psr7StreamInterface;
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Adapts a PSR-7 Stream to a Guzzle 5 Stream.
|
10 |
+
*
|
11 |
+
* @codeCoverageIgnore
|
12 |
+
*/
|
13 |
+
class GuzzleStream implements GuzzleStreamInterface
|
14 |
+
{
|
15 |
+
use StreamDecoratorTrait;
|
16 |
+
|
17 |
+
/** @var Psr7StreamInterface */
|
18 |
+
private $stream;
|
19 |
+
|
20 |
+
public function __construct(Psr7StreamInterface $stream)
|
21 |
+
{
|
22 |
+
$this->stream = $stream;
|
23 |
+
}
|
24 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Handler/GuzzleV5/PsrStream.php
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Handler\GuzzleV5;
|
3 |
+
|
4 |
+
use GuzzleHttp\Stream\StreamDecoratorTrait;
|
5 |
+
use GuzzleHttp\Stream\StreamInterface as GuzzleStreamInterface;
|
6 |
+
use Psr\Http\Message\StreamInterface as Psr7StreamInterface;
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Adapts a Guzzle 5 Stream to a PSR-7 Stream.
|
10 |
+
*
|
11 |
+
* @codeCoverageIgnore
|
12 |
+
*/
|
13 |
+
class PsrStream implements Psr7StreamInterface
|
14 |
+
{
|
15 |
+
use StreamDecoratorTrait;
|
16 |
+
|
17 |
+
/** @var GuzzleStreamInterface */
|
18 |
+
private $stream;
|
19 |
+
|
20 |
+
public function __construct(GuzzleStreamInterface $stream)
|
21 |
+
{
|
22 |
+
$this->stream = $stream;
|
23 |
+
}
|
24 |
+
|
25 |
+
public function rewind()
|
26 |
+
{
|
27 |
+
$this->stream->seek(0);
|
28 |
+
}
|
29 |
+
|
30 |
+
public function getContents()
|
31 |
+
{
|
32 |
+
return $this->stream->getContents();
|
33 |
+
}
|
34 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Handler/GuzzleV6/GuzzleHandler.php
ADDED
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Handler\GuzzleV6;
|
3 |
+
|
4 |
+
use Aws\Sdk;
|
5 |
+
use Exception;
|
6 |
+
use GuzzleHttp\Exception\ConnectException;
|
7 |
+
use GuzzleHttp\Exception\RequestException;
|
8 |
+
use GuzzleHttp\Promise;
|
9 |
+
use GuzzleHttp\Client;
|
10 |
+
use GuzzleHttp\ClientInterface;
|
11 |
+
use Psr\Http\Message\RequestInterface as Psr7Request;
|
12 |
+
|
13 |
+
/**
|
14 |
+
* A request handler that sends PSR-7-compatible requests with Guzzle 6.
|
15 |
+
*/
|
16 |
+
class GuzzleHandler
|
17 |
+
{
|
18 |
+
/** @var ClientInterface */
|
19 |
+
private $client;
|
20 |
+
|
21 |
+
/**
|
22 |
+
* @param ClientInterface $client
|
23 |
+
*/
|
24 |
+
public function __construct(ClientInterface $client = null)
|
25 |
+
{
|
26 |
+
$this->client = $client ?: new Client();
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* @param Psr7Request $request
|
31 |
+
* @param array $options
|
32 |
+
*
|
33 |
+
* @return Promise\Promise
|
34 |
+
*/
|
35 |
+
public function __invoke(Psr7Request $request, array $options = [])
|
36 |
+
{
|
37 |
+
$request = $request->withHeader(
|
38 |
+
'User-Agent',
|
39 |
+
$request->getHeaderLine('User-Agent')
|
40 |
+
. ' ' . \GuzzleHttp\default_user_agent()
|
41 |
+
);
|
42 |
+
|
43 |
+
return $this->client->sendAsync($request, $options)->otherwise(
|
44 |
+
static function (\Exception $e) {
|
45 |
+
$error = [
|
46 |
+
'exception' => $e,
|
47 |
+
'connection_error' => $e instanceof ConnectException,
|
48 |
+
'response' => null,
|
49 |
+
];
|
50 |
+
|
51 |
+
if ($e instanceof RequestException && $e->getResponse()) {
|
52 |
+
$error['response'] = $e->getResponse();
|
53 |
+
}
|
54 |
+
|
55 |
+
return new Promise\RejectedPromise($error);
|
56 |
+
}
|
57 |
+
);
|
58 |
+
}
|
59 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/HandlerList.php
ADDED
@@ -0,0 +1,424 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Builds a single handler function from zero or more middleware functions and
|
6 |
+
* a handler. The handler function is then used to send command objects and
|
7 |
+
* return a promise that is resolved with an AWS result object.
|
8 |
+
*
|
9 |
+
* The "front" of the list is invoked before the "end" of the list. You can add
|
10 |
+
* middleware to the front of the list using one of the "prepend" method, and
|
11 |
+
* the end of the list using one of the "append" method. The last function
|
12 |
+
* invoked in a handler list is the handler (a function that does not accept a
|
13 |
+
* next handler but rather is responsible for returning a promise that is
|
14 |
+
* fulfilled with an Aws\ResultInterface object).
|
15 |
+
*
|
16 |
+
* Handlers are ordered using a "step" that describes the step at which the
|
17 |
+
* SDK is when sending a command. The available steps are:
|
18 |
+
*
|
19 |
+
* - init: The command is being initialized, allowing you to do things like add
|
20 |
+
* default options.
|
21 |
+
* - validate: The command is being validated before it is serialized
|
22 |
+
* - build: The command is being serialized into an HTTP request. A middleware
|
23 |
+
* in this step MUST serialize an HTTP request and populate the "@request"
|
24 |
+
* parameter of a command with the request such that it is available to
|
25 |
+
* subsequent middleware.
|
26 |
+
* - sign: The request is being signed and prepared to be sent over the wire.
|
27 |
+
*
|
28 |
+
* Middleware can be registered with a name to allow you to easily add a
|
29 |
+
* middleware before or after another middleware by name. This also allows you
|
30 |
+
* to remove a middleware by name (in addition to removing by instance).
|
31 |
+
*/
|
32 |
+
class HandlerList implements \Countable
|
33 |
+
{
|
34 |
+
const INIT = 'init';
|
35 |
+
const VALIDATE = 'validate';
|
36 |
+
const BUILD = 'build';
|
37 |
+
const SIGN = 'sign';
|
38 |
+
|
39 |
+
/** @var callable */
|
40 |
+
private $handler;
|
41 |
+
|
42 |
+
/** @var array */
|
43 |
+
private $named = [];
|
44 |
+
|
45 |
+
/** @var array */
|
46 |
+
private $sorted;
|
47 |
+
|
48 |
+
/** @var callable|null */
|
49 |
+
private $interposeFn;
|
50 |
+
|
51 |
+
/** @var array Steps (in reverse order) */
|
52 |
+
private $steps = [
|
53 |
+
self::SIGN => [],
|
54 |
+
self::BUILD => [],
|
55 |
+
self::VALIDATE => [],
|
56 |
+
self::INIT => [],
|
57 |
+
];
|
58 |
+
|
59 |
+
/**
|
60 |
+
* @param callable $handler HTTP handler.
|
61 |
+
*/
|
62 |
+
public function __construct(callable $handler = null)
|
63 |
+
{
|
64 |
+
$this->handler = $handler;
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
+
* Dumps a string representation of the list.
|
69 |
+
*
|
70 |
+
* @return string
|
71 |
+
*/
|
72 |
+
public function __toString()
|
73 |
+
{
|
74 |
+
$str = '';
|
75 |
+
$i = 0;
|
76 |
+
|
77 |
+
foreach (array_reverse($this->steps) as $k => $step) {
|
78 |
+
foreach (array_reverse($step) as $j => $tuple) {
|
79 |
+
$str .= "{$i}) Step: {$k}, ";
|
80 |
+
if ($tuple[1]) {
|
81 |
+
$str .= "Name: {$tuple[1]}, ";
|
82 |
+
}
|
83 |
+
$str .= "Function: " . $this->debugCallable($tuple[0]) . "\n";
|
84 |
+
$i++;
|
85 |
+
}
|
86 |
+
}
|
87 |
+
|
88 |
+
if ($this->handler) {
|
89 |
+
$str .= "{$i}) Handler: " . $this->debugCallable($this->handler) . "\n";
|
90 |
+
}
|
91 |
+
|
92 |
+
return $str;
|
93 |
+
}
|
94 |
+
|
95 |
+
/**
|
96 |
+
* Set the HTTP handler that actually returns a response.
|
97 |
+
*
|
98 |
+
* @param callable $handler Function that accepts a request and array of
|
99 |
+
* options and returns a Promise.
|
100 |
+
*/
|
101 |
+
public function setHandler(callable $handler)
|
102 |
+
{
|
103 |
+
$this->handler = $handler;
|
104 |
+
}
|
105 |
+
|
106 |
+
/**
|
107 |
+
* Returns true if the builder has a handler.
|
108 |
+
*
|
109 |
+
* @return bool
|
110 |
+
*/
|
111 |
+
public function hasHandler()
|
112 |
+
{
|
113 |
+
return (bool) $this->handler;
|
114 |
+
}
|
115 |
+
|
116 |
+
/**
|
117 |
+
* Append a middleware to the init step.
|
118 |
+
*
|
119 |
+
* @param callable $middleware Middleware function to add.
|
120 |
+
* @param string $name Name of the middleware.
|
121 |
+
*/
|
122 |
+
public function appendInit(callable $middleware, $name = null)
|
123 |
+
{
|
124 |
+
$this->add(self::INIT, $name, $middleware);
|
125 |
+
}
|
126 |
+
|
127 |
+
/**
|
128 |
+
* Prepend a middleware to the init step.
|
129 |
+
*
|
130 |
+
* @param callable $middleware Middleware function to add.
|
131 |
+
* @param string $name Name of the middleware.
|
132 |
+
*/
|
133 |
+
public function prependInit(callable $middleware, $name = null)
|
134 |
+
{
|
135 |
+
$this->add(self::INIT, $name, $middleware, true);
|
136 |
+
}
|
137 |
+
|
138 |
+
/**
|
139 |
+
* Append a middleware to the validate step.
|
140 |
+
*
|
141 |
+
* @param callable $middleware Middleware function to add.
|
142 |
+
* @param string $name Name of the middleware.
|
143 |
+
*/
|
144 |
+
public function appendValidate(callable $middleware, $name = null)
|
145 |
+
{
|
146 |
+
$this->add(self::VALIDATE, $name, $middleware);
|
147 |
+
}
|
148 |
+
|
149 |
+
/**
|
150 |
+
* Prepend a middleware to the validate step.
|
151 |
+
*
|
152 |
+
* @param callable $middleware Middleware function to add.
|
153 |
+
* @param string $name Name of the middleware.
|
154 |
+
*/
|
155 |
+
public function prependValidate(callable $middleware, $name = null)
|
156 |
+
{
|
157 |
+
$this->add(self::VALIDATE, $name, $middleware, true);
|
158 |
+
}
|
159 |
+
|
160 |
+
/**
|
161 |
+
* Append a middleware to the build step.
|
162 |
+
*
|
163 |
+
* @param callable $middleware Middleware function to add.
|
164 |
+
* @param string $name Name of the middleware.
|
165 |
+
*/
|
166 |
+
public function appendBuild(callable $middleware, $name = null)
|
167 |
+
{
|
168 |
+
$this->add(self::BUILD, $name, $middleware);
|
169 |
+
}
|
170 |
+
|
171 |
+
/**
|
172 |
+
* Prepend a middleware to the build step.
|
173 |
+
*
|
174 |
+
* @param callable $middleware Middleware function to add.
|
175 |
+
* @param string $name Name of the middleware.
|
176 |
+
*/
|
177 |
+
public function prependBuild(callable $middleware, $name = null)
|
178 |
+
{
|
179 |
+
$this->add(self::BUILD, $name, $middleware, true);
|
180 |
+
}
|
181 |
+
|
182 |
+
/**
|
183 |
+
* Append a middleware to the sign step.
|
184 |
+
*
|
185 |
+
* @param callable $middleware Middleware function to add.
|
186 |
+
* @param string $name Name of the middleware.
|
187 |
+
*/
|
188 |
+
public function appendSign(callable $middleware, $name = null)
|
189 |
+
{
|
190 |
+
$this->add(self::SIGN, $name, $middleware);
|
191 |
+
}
|
192 |
+
|
193 |
+
/**
|
194 |
+
* Prepend a middleware to the sign step.
|
195 |
+
*
|
196 |
+
* @param callable $middleware Middleware function to add.
|
197 |
+
* @param string $name Name of the middleware.
|
198 |
+
*/
|
199 |
+
public function prependSign(callable $middleware, $name = null)
|
200 |
+
{
|
201 |
+
$this->add(self::SIGN, $name, $middleware, true);
|
202 |
+
}
|
203 |
+
|
204 |
+
/**
|
205 |
+
* Add a middleware before the given middleware by name.
|
206 |
+
*
|
207 |
+
* @param string|callable $findName Add before this
|
208 |
+
* @param string $withName Optional name to give the middleware
|
209 |
+
* @param callable $middleware Middleware to add.
|
210 |
+
*/
|
211 |
+
public function before($findName, $withName, callable $middleware)
|
212 |
+
{
|
213 |
+
$this->splice($findName, $withName, $middleware, true);
|
214 |
+
}
|
215 |
+
|
216 |
+
/**
|
217 |
+
* Add a middleware after the given middleware by name.
|
218 |
+
*
|
219 |
+
* @param string|callable $findName Add after this
|
220 |
+
* @param string $withName Optional name to give the middleware
|
221 |
+
* @param callable $middleware Middleware to add.
|
222 |
+
*/
|
223 |
+
public function after($findName, $withName, callable $middleware)
|
224 |
+
{
|
225 |
+
$this->splice($findName, $withName, $middleware, false);
|
226 |
+
}
|
227 |
+
|
228 |
+
/**
|
229 |
+
* Remove a middleware by name or by instance from the list.
|
230 |
+
*
|
231 |
+
* @param string|callable $nameOrInstance Middleware to remove.
|
232 |
+
*/
|
233 |
+
public function remove($nameOrInstance)
|
234 |
+
{
|
235 |
+
if (is_callable($nameOrInstance)) {
|
236 |
+
$this->removeByInstance($nameOrInstance);
|
237 |
+
} elseif (is_string($nameOrInstance)) {
|
238 |
+
$this->removeByName($nameOrInstance);
|
239 |
+
}
|
240 |
+
}
|
241 |
+
|
242 |
+
/**
|
243 |
+
* Interpose a function between each middleware (e.g., allowing for a trace
|
244 |
+
* through the middleware layers).
|
245 |
+
*
|
246 |
+
* The interpose function is a function that accepts a "step" argument as a
|
247 |
+
* string and a "name" argument string. This function must then return a
|
248 |
+
* function that accepts the next handler in the list. This function must
|
249 |
+
* then return a function that accepts a CommandInterface and optional
|
250 |
+
* RequestInterface and returns a promise that is fulfilled with an
|
251 |
+
* Aws\ResultInterface or rejected with an Aws\Exception\AwsException
|
252 |
+
* object.
|
253 |
+
*
|
254 |
+
* @param callable|null $fn Pass null to remove any previously set function
|
255 |
+
*/
|
256 |
+
public function interpose(callable $fn = null)
|
257 |
+
{
|
258 |
+
$this->sorted = null;
|
259 |
+
$this->interposeFn = $fn;
|
260 |
+
}
|
261 |
+
|
262 |
+
/**
|
263 |
+
* Compose the middleware and handler into a single callable function.
|
264 |
+
*
|
265 |
+
* @return callable
|
266 |
+
*/
|
267 |
+
public function resolve()
|
268 |
+
{
|
269 |
+
if (!($prev = $this->handler)) {
|
270 |
+
throw new \LogicException('No handler has been specified');
|
271 |
+
}
|
272 |
+
|
273 |
+
if ($this->sorted === null) {
|
274 |
+
$this->sortMiddleware();
|
275 |
+
}
|
276 |
+
|
277 |
+
foreach ($this->sorted as $fn) {
|
278 |
+
$prev = $fn($prev);
|
279 |
+
}
|
280 |
+
|
281 |
+
return $prev;
|
282 |
+
}
|
283 |
+
|
284 |
+
public function count()
|
285 |
+
{
|
286 |
+
return count($this->steps[self::INIT])
|
287 |
+
+ count($this->steps[self::VALIDATE])
|
288 |
+
+ count($this->steps[self::BUILD])
|
289 |
+
+ count($this->steps[self::SIGN]);
|
290 |
+
}
|
291 |
+
|
292 |
+
/**
|
293 |
+
* Splices a function into the middleware list at a specific position.
|
294 |
+
*
|
295 |
+
* @param $findName
|
296 |
+
* @param $withName
|
297 |
+
* @param callable $middleware
|
298 |
+
* @param $before
|
299 |
+
*/
|
300 |
+
private function splice($findName, $withName, callable $middleware, $before)
|
301 |
+
{
|
302 |
+
if (!isset($this->named[$findName])) {
|
303 |
+
throw new \InvalidArgumentException("$findName not found");
|
304 |
+
}
|
305 |
+
|
306 |
+
$idx = $this->sorted = null;
|
307 |
+
$step = $this->named[$findName];
|
308 |
+
|
309 |
+
if ($withName) {
|
310 |
+
$this->named[$withName] = $step;
|
311 |
+
}
|
312 |
+
|
313 |
+
foreach ($this->steps[$step] as $i => $tuple) {
|
314 |
+
if ($tuple[1] === $findName) {
|
315 |
+
$idx = $i;
|
316 |
+
break;
|
317 |
+
}
|
318 |
+
}
|
319 |
+
|
320 |
+
$replacement = $before
|
321 |
+
? [$this->steps[$step][$idx], [$middleware, $withName]]
|
322 |
+
: [[$middleware, $withName], $this->steps[$step][$idx]];
|
323 |
+
array_splice($this->steps[$step], $idx, 1, $replacement);
|
324 |
+
}
|
325 |
+
|
326 |
+
/**
|
327 |
+
* Provides a debug string for a given callable.
|
328 |
+
*
|
329 |
+
* @param array|callable $fn Function to write as a string.
|
330 |
+
*
|
331 |
+
* @return string
|
332 |
+
*/
|
333 |
+
private function debugCallable($fn)
|
334 |
+
{
|
335 |
+
if (is_string($fn)) {
|
336 |
+
return "callable({$fn})";
|
337 |
+
} elseif (is_array($fn)) {
|
338 |
+
$ele = is_string($fn[0]) ? $fn[0] : get_class($fn[0]);
|
339 |
+
return "callable(['{$ele}', '{$fn[1]}'])";
|
340 |
+
} else {
|
341 |
+
return 'callable(' . spl_object_hash($fn) . ')';
|
342 |
+
}
|
343 |
+
}
|
344 |
+
|
345 |
+
/**
|
346 |
+
* Sort the middleware, and interpose if needed in the sorted list.
|
347 |
+
*/
|
348 |
+
private function sortMiddleware()
|
349 |
+
{
|
350 |
+
$this->sorted = [];
|
351 |
+
|
352 |
+
if (!$this->interposeFn) {
|
353 |
+
foreach ($this->steps as $step) {
|
354 |
+
foreach ($step as $fn) {
|
355 |
+
$this->sorted[] = $fn[0];
|
356 |
+
}
|
357 |
+
}
|
358 |
+
return;
|
359 |
+
}
|
360 |
+
|
361 |
+
$ifn = $this->interposeFn;
|
362 |
+
// Interpose the interposeFn into the handler stack.
|
363 |
+
foreach ($this->steps as $stepName => $step) {
|
364 |
+
foreach ($step as $fn) {
|
365 |
+
$this->sorted[] = $ifn($stepName, $fn[1]);
|
366 |
+
$this->sorted[] = $fn[0];
|
367 |
+
}
|
368 |
+
}
|
369 |
+
}
|
370 |
+
|
371 |
+
private function removeByName($name)
|
372 |
+
{
|
373 |
+
if (!isset($this->named[$name])) {
|
374 |
+
return;
|
375 |
+
}
|
376 |
+
|
377 |
+
$this->sorted = null;
|
378 |
+
$step = $this->named[$name];
|
379 |
+
$this->steps[$step] = array_values(
|
380 |
+
array_filter(
|
381 |
+
$this->steps[$step],
|
382 |
+
function ($tuple) use ($name) {
|
383 |
+
return $tuple[1] !== $name;
|
384 |
+
}
|
385 |
+
)
|
386 |
+
);
|
387 |
+
}
|
388 |
+
|
389 |
+
private function removeByInstance(callable $fn)
|
390 |
+
{
|
391 |
+
foreach ($this->steps as $k => $step) {
|
392 |
+
foreach ($step as $j => $tuple) {
|
393 |
+
if ($tuple[0] === $fn) {
|
394 |
+
$this->sorted = null;
|
395 |
+
unset($this->named[$this->steps[$k][$j][1]]);
|
396 |
+
unset($this->steps[$k][$j]);
|
397 |
+
}
|
398 |
+
}
|
399 |
+
}
|
400 |
+
}
|
401 |
+
|
402 |
+
/**
|
403 |
+
* Add a middleware to a step.
|
404 |
+
*
|
405 |
+
* @param string $step Middleware step.
|
406 |
+
* @param string $name Middleware name.
|
407 |
+
* @param callable $middleware Middleware function to add.
|
408 |
+
* @param bool $prepend Prepend instead of append.
|
409 |
+
*/
|
410 |
+
private function add($step, $name, callable $middleware, $prepend = false)
|
411 |
+
{
|
412 |
+
$this->sorted = null;
|
413 |
+
|
414 |
+
if ($prepend) {
|
415 |
+
$this->steps[$step][] = [$middleware, $name];
|
416 |
+
} else {
|
417 |
+
array_unshift($this->steps[$step], [$middleware, $name]);
|
418 |
+
}
|
419 |
+
|
420 |
+
if ($name) {
|
421 |
+
$this->named[$name] = $step;
|
422 |
+
}
|
423 |
+
}
|
424 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/HasDataTrait.php
ADDED
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Trait implementing ToArrayInterface, \ArrayAccess, \Countable, and
|
6 |
+
* \IteratorAggregate
|
7 |
+
*/
|
8 |
+
trait HasDataTrait
|
9 |
+
{
|
10 |
+
/** @var array */
|
11 |
+
private $data = [];
|
12 |
+
|
13 |
+
public function getIterator()
|
14 |
+
{
|
15 |
+
return new \ArrayIterator($this->data);
|
16 |
+
}
|
17 |
+
|
18 |
+
/**
|
19 |
+
* This method returns a reference to the variable to allow for indirect
|
20 |
+
* array modification (e.g., $foo['bar']['baz'] = 'qux').
|
21 |
+
*
|
22 |
+
* @param $offset
|
23 |
+
*
|
24 |
+
* @return mixed|null
|
25 |
+
*/
|
26 |
+
public function & offsetGet($offset)
|
27 |
+
{
|
28 |
+
if (isset($this->data[$offset])) {
|
29 |
+
return $this->data[$offset];
|
30 |
+
}
|
31 |
+
|
32 |
+
$value = null;
|
33 |
+
return $value;
|
34 |
+
}
|
35 |
+
|
36 |
+
public function offsetSet($offset, $value)
|
37 |
+
{
|
38 |
+
$this->data[$offset] = $value;
|
39 |
+
}
|
40 |
+
|
41 |
+
public function offsetExists($offset)
|
42 |
+
{
|
43 |
+
return isset($this->data[$offset]);
|
44 |
+
}
|
45 |
+
|
46 |
+
public function offsetUnset($offset)
|
47 |
+
{
|
48 |
+
unset($this->data[$offset]);
|
49 |
+
}
|
50 |
+
|
51 |
+
public function toArray()
|
52 |
+
{
|
53 |
+
return $this->data;
|
54 |
+
}
|
55 |
+
|
56 |
+
public function count()
|
57 |
+
{
|
58 |
+
return count($this->data);
|
59 |
+
}
|
60 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/HashInterface.php
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Interface that allows implementing various incremental hashes.
|
6 |
+
*/
|
7 |
+
interface HashInterface
|
8 |
+
{
|
9 |
+
/**
|
10 |
+
* Adds data to the hash.
|
11 |
+
*
|
12 |
+
* @param string $data Data to add to the hash
|
13 |
+
*/
|
14 |
+
public function update($data);
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Finalizes the incremental hash and returns the resulting digest.
|
18 |
+
*
|
19 |
+
* @return string
|
20 |
+
*/
|
21 |
+
public function complete();
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Removes all data from the hash, effectively starting a new hash.
|
25 |
+
*/
|
26 |
+
public function reset();
|
27 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/HashingStream.php
ADDED
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws;
|
3 |
+
|
4 |
+
use GuzzleHttp\Psr7\StreamDecoratorTrait;
|
5 |
+
use Psr\Http\Message\StreamInterface;
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Stream decorator that calculates a rolling hash of the stream as it is read.
|
9 |
+
*/
|
10 |
+
class HashingStream implements StreamInterface
|
11 |
+
{
|
12 |
+
use StreamDecoratorTrait;
|
13 |
+
|
14 |
+
/** @var HashInterface */
|
15 |
+
private $hash;
|
16 |
+
|
17 |
+
/** @var callable|null */
|
18 |
+
private $callback;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* @param StreamInterface $stream Stream that is being read.
|
22 |
+
* @param HashInterface $hash Hash used to calculate checksum.
|
23 |
+
* @param callable $onComplete Optional function invoked when the
|
24 |
+
* hash calculation is completed.
|
25 |
+
*/
|
26 |
+
public function __construct(
|
27 |
+
StreamInterface $stream,
|
28 |
+
HashInterface $hash,
|
29 |
+
callable $onComplete = null
|
30 |
+
) {
|
31 |
+
$this->stream = $stream;
|
32 |
+
$this->hash = $hash;
|
33 |
+
$this->callback = $onComplete;
|
34 |
+
}
|
35 |
+
|
36 |
+
public function read($length)
|
37 |
+
{
|
38 |
+
$data = $this->stream->read($length);
|
39 |
+
$this->hash->update($data);
|
40 |
+
if ($this->eof()) {
|
41 |
+
$result = $this->hash->complete();
|
42 |
+
if ($this->callback) {
|
43 |
+
call_user_func($this->callback, $result);
|
44 |
+
}
|
45 |
+
}
|
46 |
+
|
47 |
+
return $data;
|
48 |
+
}
|
49 |
+
|
50 |
+
public function seek($offset, $whence = SEEK_SET)
|
51 |
+
{
|
52 |
+
if ($offset === 0) {
|
53 |
+
$this->hash->reset();
|
54 |
+
return $this->stream->seek($offset);
|
55 |
+
} else {
|
56 |
+
// Seeking arbitrarily is not supported.
|
57 |
+
return false;
|
58 |
+
}
|
59 |
+
}
|
60 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/History.php
ADDED
@@ -0,0 +1,152 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws;
|
3 |
+
|
4 |
+
use Psr\Http\Message\RequestInterface;
|
5 |
+
use Aws\Exception\AwsException;
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Represents a history container that is required when using the history
|
9 |
+
* middleware.
|
10 |
+
*/
|
11 |
+
class History implements \Countable, \IteratorAggregate
|
12 |
+
{
|
13 |
+
private $maxEntries;
|
14 |
+
private $entries;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* @param int $maxEntries Maximum number of entries to store.
|
18 |
+
*/
|
19 |
+
public function __construct($maxEntries = 10)
|
20 |
+
{
|
21 |
+
$this->maxEntries = $maxEntries;
|
22 |
+
}
|
23 |
+
|
24 |
+
public function count()
|
25 |
+
{
|
26 |
+
return count($this->entries);
|
27 |
+
}
|
28 |
+
|
29 |
+
public function getIterator()
|
30 |
+
{
|
31 |
+
return new \ArrayIterator(array_values($this->entries));
|
32 |
+
}
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Get the last finished command seen by the history container.
|
36 |
+
*
|
37 |
+
* @return CommandInterface
|
38 |
+
* @throws \LogicException if no commands have been seen.
|
39 |
+
*/
|
40 |
+
public function getLastCommand()
|
41 |
+
{
|
42 |
+
if (!$this->entries) {
|
43 |
+
throw new \LogicException('No commands received');
|
44 |
+
}
|
45 |
+
|
46 |
+
return end($this->entries)['command'];
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Get the last finished request seen by the history container.
|
51 |
+
*
|
52 |
+
* @return RequestInterface
|
53 |
+
* @throws \LogicException if no requests have been seen.
|
54 |
+
*/
|
55 |
+
public function getLastRequest()
|
56 |
+
{
|
57 |
+
if (!$this->entries) {
|
58 |
+
throw new \LogicException('No requests received');
|
59 |
+
}
|
60 |
+
|
61 |
+
return end($this->entries)['request'];
|
62 |
+
}
|
63 |
+
|
64 |
+
/**
|
65 |
+
* Get the last received result or exception.
|
66 |
+
*
|
67 |
+
* @return ResultInterface|AwsException
|
68 |
+
* @throws \LogicException if no return values have been received.
|
69 |
+
*/
|
70 |
+
public function getLastReturn()
|
71 |
+
{
|
72 |
+
if (!$this->entries) {
|
73 |
+
throw new \LogicException('No entries');
|
74 |
+
}
|
75 |
+
|
76 |
+
$last = end($this->entries);
|
77 |
+
|
78 |
+
if (isset($last['result'])) {
|
79 |
+
return $last['result'];
|
80 |
+
} elseif (isset($last['exception'])) {
|
81 |
+
return $last['exception'];
|
82 |
+
} else {
|
83 |
+
throw new \LogicException('No return value for last entry.');
|
84 |
+
}
|
85 |
+
}
|
86 |
+
|
87 |
+
/**
|
88 |
+
* Initiate an entry being added to the history.
|
89 |
+
*
|
90 |
+
* @param CommandInterface $cmd Command be executed.
|
91 |
+
* @param RequestInterface $req Request being sent.
|
92 |
+
*
|
93 |
+
* @return string Returns the ticket used to finish the entry.
|
94 |
+
*/
|
95 |
+
public function start(CommandInterface $cmd, RequestInterface $req)
|
96 |
+
{
|
97 |
+
$ticket = uniqid();
|
98 |
+
$this->entries[$ticket] = [
|
99 |
+
'command' => $cmd,
|
100 |
+
'request' => $req,
|
101 |
+
'result' => null,
|
102 |
+
'exception' => null,
|
103 |
+
];
|
104 |
+
|
105 |
+
return $ticket;
|
106 |
+
}
|
107 |
+
|
108 |
+
/**
|
109 |
+
* Finish adding an entry to the history container.
|
110 |
+
*
|
111 |
+
* @param string $ticket Ticket returned from the start call.
|
112 |
+
* @param mixed $result The result (an exception or AwsResult).
|
113 |
+
*/
|
114 |
+
public function finish($ticket, $result)
|
115 |
+
{
|
116 |
+
if (!isset($this->entries[$ticket])) {
|
117 |
+
throw new \InvalidArgumentException('Invalid history ticket');
|
118 |
+
} elseif (isset($this->entries[$ticket]['result'])
|
119 |
+
|| isset($this->entries[$ticket]['exception'])
|
120 |
+
) {
|
121 |
+
throw new \LogicException('History entry is already finished');
|
122 |
+
}
|
123 |
+
|
124 |
+
if ($result instanceof \Exception) {
|
125 |
+
$this->entries[$ticket]['exception'] = $result;
|
126 |
+
} else {
|
127 |
+
$this->entries[$ticket]['result'] = $result;
|
128 |
+
}
|
129 |
+
|
130 |
+
if (count($this->entries) >= $this->maxEntries) {
|
131 |
+
$this->entries = array_slice($this->entries, -$this->maxEntries, null, true);
|
132 |
+
}
|
133 |
+
}
|
134 |
+
|
135 |
+
/**
|
136 |
+
* Flush the history
|
137 |
+
*/
|
138 |
+
public function clear()
|
139 |
+
{
|
140 |
+
$this->entries = [];
|
141 |
+
}
|
142 |
+
|
143 |
+
/**
|
144 |
+
* Converts the history to an array.
|
145 |
+
*
|
146 |
+
* @return array
|
147 |
+
*/
|
148 |
+
public function toArray()
|
149 |
+
{
|
150 |
+
return array_values($this->entries);
|
151 |
+
}
|
152 |
+
}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Iam/Exception/IamException.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Iam\Exception;
|
3 |
+
|
4 |
+
use Aws\Exception\AwsException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Represents an error interacting with the AWS Identity and Access Management service.
|
8 |
+
*/
|
9 |
+
class IamException extends AwsException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Iam/IamClient.php
ADDED
@@ -0,0 +1,236 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Iam;
|
3 |
+
|
4 |
+
use Aws\AwsClient;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* This client is used to interact with the **AWS Identity and Access Management (AWS IAM)** service.
|
8 |
+
*
|
9 |
+
* @method \Aws\Result addClientIDToOpenIDConnectProvider(array $args = [])
|
10 |
+
* @method \GuzzleHttp\Promise\Promise addClientIDToOpenIDConnectProviderAsync(array $args = [])
|
11 |
+
* @method \Aws\Result addRoleToInstanceProfile(array $args = [])
|
12 |
+
* @method \GuzzleHttp\Promise\Promise addRoleToInstanceProfileAsync(array $args = [])
|
13 |
+
* @method \Aws\Result addUserToGroup(array $args = [])
|
14 |
+
* @method \GuzzleHttp\Promise\Promise addUserToGroupAsync(array $args = [])
|
15 |
+
* @method \Aws\Result attachGroupPolicy(array $args = [])
|
16 |
+
* @method \GuzzleHttp\Promise\Promise attachGroupPolicyAsync(array $args = [])
|
17 |
+
* @method \Aws\Result attachRolePolicy(array $args = [])
|
18 |
+
* @method \GuzzleHttp\Promise\Promise attachRolePolicyAsync(array $args = [])
|
19 |
+
* @method \Aws\Result attachUserPolicy(array $args = [])
|
20 |
+
* @method \GuzzleHttp\Promise\Promise attachUserPolicyAsync(array $args = [])
|
21 |
+
* @method \Aws\Result changePassword(array $args = [])
|
22 |
+
* @method \GuzzleHttp\Promise\Promise changePasswordAsync(array $args = [])
|
23 |
+
* @method \Aws\Result createAccessKey(array $args = [])
|
24 |
+
* @method \GuzzleHttp\Promise\Promise createAccessKeyAsync(array $args = [])
|
25 |
+
* @method \Aws\Result createAccountAlias(array $args = [])
|
26 |
+
* @method \GuzzleHttp\Promise\Promise createAccountAliasAsync(array $args = [])
|
27 |
+
* @method \Aws\Result createGroup(array $args = [])
|
28 |
+
* @method \GuzzleHttp\Promise\Promise createGroupAsync(array $args = [])
|
29 |
+
* @method \Aws\Result createInstanceProfile(array $args = [])
|
30 |
+
* @method \GuzzleHttp\Promise\Promise createInstanceProfileAsync(array $args = [])
|
31 |
+
* @method \Aws\Result createLoginProfile(array $args = [])
|
32 |
+
* @method \GuzzleHttp\Promise\Promise createLoginProfileAsync(array $args = [])
|
33 |
+
* @method \Aws\Result createOpenIDConnectProvider(array $args = [])
|
34 |
+
* @method \GuzzleHttp\Promise\Promise createOpenIDConnectProviderAsync(array $args = [])
|
35 |
+
* @method \Aws\Result createPolicy(array $args = [])
|
36 |
+
* @method \GuzzleHttp\Promise\Promise createPolicyAsync(array $args = [])
|
37 |
+
* @method \Aws\Result createPolicyVersion(array $args = [])
|
38 |
+
* @method \GuzzleHttp\Promise\Promise createPolicyVersionAsync(array $args = [])
|
39 |
+
* @method \Aws\Result createRole(array $args = [])
|
40 |
+
* @method \GuzzleHttp\Promise\Promise createRoleAsync(array $args = [])
|
41 |
+
* @method \Aws\Result createSAMLProvider(array $args = [])
|
42 |
+
* @method \GuzzleHttp\Promise\Promise createSAMLProviderAsync(array $args = [])
|
43 |
+
* @method \Aws\Result createUser(array $args = [])
|
44 |
+
* @method \GuzzleHttp\Promise\Promise createUserAsync(array $args = [])
|
45 |
+
* @method \Aws\Result createVirtualMFADevice(array $args = [])
|
46 |
+
* @method \GuzzleHttp\Promise\Promise createVirtualMFADeviceAsync(array $args = [])
|
47 |
+
* @method \Aws\Result deactivateMFADevice(array $args = [])
|
48 |
+
* @method \GuzzleHttp\Promise\Promise deactivateMFADeviceAsync(array $args = [])
|
49 |
+
* @method \Aws\Result deleteAccessKey(array $args = [])
|
50 |
+
* @method \GuzzleHttp\Promise\Promise deleteAccessKeyAsync(array $args = [])
|
51 |
+
* @method \Aws\Result deleteAccountAlias(array $args = [])
|
52 |
+
* @method \GuzzleHttp\Promise\Promise deleteAccountAliasAsync(array $args = [])
|
53 |
+
* @method \Aws\Result deleteAccountPasswordPolicy(array $args = [])
|
54 |
+
* @method \GuzzleHttp\Promise\Promise deleteAccountPasswordPolicyAsync(array $args = [])
|
55 |
+
* @method \Aws\Result deleteGroup(array $args = [])
|
56 |
+
* @method \GuzzleHttp\Promise\Promise deleteGroupAsync(array $args = [])
|
57 |
+
* @method \Aws\Result deleteGroupPolicy(array $args = [])
|
58 |
+
* @method \GuzzleHttp\Promise\Promise deleteGroupPolicyAsync(array $args = [])
|
59 |
+
* @method \Aws\Result deleteInstanceProfile(array $args = [])
|
60 |
+
* @method \GuzzleHttp\Promise\Promise deleteInstanceProfileAsync(array $args = [])
|
61 |
+
* @method \Aws\Result deleteLoginProfile(array $args = [])
|
62 |
+
* @method \GuzzleHttp\Promise\Promise deleteLoginProfileAsync(array $args = [])
|
63 |
+
* @method \Aws\Result deleteOpenIDConnectProvider(array $args = [])
|
64 |
+
* @method \GuzzleHttp\Promise\Promise deleteOpenIDConnectProviderAsync(array $args = [])
|
65 |
+
* @method \Aws\Result deletePolicy(array $args = [])
|
66 |
+
* @method \GuzzleHttp\Promise\Promise deletePolicyAsync(array $args = [])
|
67 |
+
* @method \Aws\Result deletePolicyVersion(array $args = [])
|
68 |
+
* @method \GuzzleHttp\Promise\Promise deletePolicyVersionAsync(array $args = [])
|
69 |
+
* @method \Aws\Result deleteRole(array $args = [])
|
70 |
+
* @method \GuzzleHttp\Promise\Promise deleteRoleAsync(array $args = [])
|
71 |
+
* @method \Aws\Result deleteRolePolicy(array $args = [])
|
72 |
+
* @method \GuzzleHttp\Promise\Promise deleteRolePolicyAsync(array $args = [])
|
73 |
+
* @method \Aws\Result deleteSAMLProvider(array $args = [])
|
74 |
+
* @method \GuzzleHttp\Promise\Promise deleteSAMLProviderAsync(array $args = [])
|
75 |
+
* @method \Aws\Result deleteSSHPublicKey(array $args = [])
|
76 |
+
* @method \GuzzleHttp\Promise\Promise deleteSSHPublicKeyAsync(array $args = [])
|
77 |
+
* @method \Aws\Result deleteServerCertificate(array $args = [])
|
78 |
+
* @method \GuzzleHttp\Promise\Promise deleteServerCertificateAsync(array $args = [])
|
79 |
+
* @method \Aws\Result deleteSigningCertificate(array $args = [])
|
80 |
+
* @method \GuzzleHttp\Promise\Promise deleteSigningCertificateAsync(array $args = [])
|
81 |
+
* @method \Aws\Result deleteUser(array $args = [])
|
82 |
+
* @method \GuzzleHttp\Promise\Promise deleteUserAsync(array $args = [])
|
83 |
+
* @method \Aws\Result deleteUserPolicy(array $args = [])
|
84 |
+
* @method \GuzzleHttp\Promise\Promise deleteUserPolicyAsync(array $args = [])
|
85 |
+
* @method \Aws\Result deleteVirtualMFADevice(array $args = [])
|
86 |
+
* @method \GuzzleHttp\Promise\Promise deleteVirtualMFADeviceAsync(array $args = [])
|
87 |
+
* @method \Aws\Result detachGroupPolicy(array $args = [])
|
88 |
+
* @method \GuzzleHttp\Promise\Promise detachGroupPolicyAsync(array $args = [])
|
89 |
+
* @method \Aws\Result detachRolePolicy(array $args = [])
|
90 |
+
* @method \GuzzleHttp\Promise\Promise detachRolePolicyAsync(array $args = [])
|
91 |
+
* @method \Aws\Result detachUserPolicy(array $args = [])
|
92 |
+
* @method \GuzzleHttp\Promise\Promise detachUserPolicyAsync(array $args = [])
|
93 |
+
* @method \Aws\Result enableMFADevice(array $args = [])
|
94 |
+
* @method \GuzzleHttp\Promise\Promise enableMFADeviceAsync(array $args = [])
|
95 |
+
* @method \Aws\Result generateCredentialReport(array $args = [])
|
96 |
+
* @method \GuzzleHttp\Promise\Promise generateCredentialReportAsync(array $args = [])
|
97 |
+
* @method \Aws\Result getAccessKeyLastUsed(array $args = [])
|
98 |
+
* @method \GuzzleHttp\Promise\Promise getAccessKeyLastUsedAsync(array $args = [])
|
99 |
+
* @method \Aws\Result getAccountAuthorizationDetails(array $args = [])
|
100 |
+
* @method \GuzzleHttp\Promise\Promise getAccountAuthorizationDetailsAsync(array $args = [])
|
101 |
+
* @method \Aws\Result getAccountPasswordPolicy(array $args = [])
|
102 |
+
* @method \GuzzleHttp\Promise\Promise getAccountPasswordPolicyAsync(array $args = [])
|
103 |
+
* @method \Aws\Result getAccountSummary(array $args = [])
|
104 |
+
* @method \GuzzleHttp\Promise\Promise getAccountSummaryAsync(array $args = [])
|
105 |
+
* @method \Aws\Result getContextKeysForCustomPolicy(array $args = [])
|
106 |
+
* @method \GuzzleHttp\Promise\Promise getContextKeysForCustomPolicyAsync(array $args = [])
|
107 |
+
* @method \Aws\Result getContextKeysForPrincipalPolicy(array $args = [])
|
108 |
+
* @method \GuzzleHttp\Promise\Promise getContextKeysForPrincipalPolicyAsync(array $args = [])
|
109 |
+
* @method \Aws\Result getCredentialReport(array $args = [])
|
110 |
+
* @method \GuzzleHttp\Promise\Promise getCredentialReportAsync(array $args = [])
|
111 |
+
* @method \Aws\Result getGroup(array $args = [])
|
112 |
+
* @method \GuzzleHttp\Promise\Promise getGroupAsync(array $args = [])
|
113 |
+
* @method \Aws\Result getGroupPolicy(array $args = [])
|
114 |
+
* @method \GuzzleHttp\Promise\Promise getGroupPolicyAsync(array $args = [])
|
115 |
+
* @method \Aws\Result getInstanceProfile(array $args = [])
|
116 |
+
* @method \GuzzleHttp\Promise\Promise getInstanceProfileAsync(array $args = [])
|
117 |
+
* @method \Aws\Result getLoginProfile(array $args = [])
|
118 |
+
* @method \GuzzleHttp\Promise\Promise getLoginProfileAsync(array $args = [])
|
119 |
+
* @method \Aws\Result getOpenIDConnectProvider(array $args = [])
|
120 |
+
* @method \GuzzleHttp\Promise\Promise getOpenIDConnectProviderAsync(array $args = [])
|
121 |
+
* @method \Aws\Result getPolicy(array $args = [])
|
122 |
+
* @method \GuzzleHttp\Promise\Promise getPolicyAsync(array $args = [])
|
123 |
+
* @method \Aws\Result getPolicyVersion(array $args = [])
|
124 |
+
* @method \GuzzleHttp\Promise\Promise getPolicyVersionAsync(array $args = [])
|
125 |
+
* @method \Aws\Result getRole(array $args = [])
|
126 |
+
* @method \GuzzleHttp\Promise\Promise getRoleAsync(array $args = [])
|
127 |
+
* @method \Aws\Result getRolePolicy(array $args = [])
|
128 |
+
* @method \GuzzleHttp\Promise\Promise getRolePolicyAsync(array $args = [])
|
129 |
+
* @method \Aws\Result getSAMLProvider(array $args = [])
|
130 |
+
* @method \GuzzleHttp\Promise\Promise getSAMLProviderAsync(array $args = [])
|
131 |
+
* @method \Aws\Result getSSHPublicKey(array $args = [])
|
132 |
+
* @method \GuzzleHttp\Promise\Promise getSSHPublicKeyAsync(array $args = [])
|
133 |
+
* @method \Aws\Result getServerCertificate(array $args = [])
|
134 |
+
* @method \GuzzleHttp\Promise\Promise getServerCertificateAsync(array $args = [])
|
135 |
+
* @method \Aws\Result getUser(array $args = [])
|
136 |
+
* @method \GuzzleHttp\Promise\Promise getUserAsync(array $args = [])
|
137 |
+
* @method \Aws\Result getUserPolicy(array $args = [])
|
138 |
+
* @method \GuzzleHttp\Promise\Promise getUserPolicyAsync(array $args = [])
|
139 |
+
* @method \Aws\Result listAccessKeys(array $args = [])
|
140 |
+
* @method \GuzzleHttp\Promise\Promise listAccessKeysAsync(array $args = [])
|
141 |
+
* @method \Aws\Result listAccountAliases(array $args = [])
|
142 |
+
* @method \GuzzleHttp\Promise\Promise listAccountAliasesAsync(array $args = [])
|
143 |
+
* @method \Aws\Result listAttachedGroupPolicies(array $args = [])
|
144 |
+
* @method \GuzzleHttp\Promise\Promise listAttachedGroupPoliciesAsync(array $args = [])
|
145 |
+
* @method \Aws\Result listAttachedRolePolicies(array $args = [])
|
146 |
+
* @method \GuzzleHttp\Promise\Promise listAttachedRolePoliciesAsync(array $args = [])
|
147 |
+
* @method \Aws\Result listAttachedUserPolicies(array $args = [])
|
148 |
+
* @method \GuzzleHttp\Promise\Promise listAttachedUserPoliciesAsync(array $args = [])
|
149 |
+
* @method \Aws\Result listEntitiesForPolicy(array $args = [])
|
150 |
+
* @method \GuzzleHttp\Promise\Promise listEntitiesForPolicyAsync(array $args = [])
|
151 |
+
* @method \Aws\Result listGroupPolicies(array $args = [])
|
152 |
+
* @method \GuzzleHttp\Promise\Promise listGroupPoliciesAsync(array $args = [])
|
153 |
+
* @method \Aws\Result listGroups(array $args = [])
|
154 |
+
* @method \GuzzleHttp\Promise\Promise listGroupsAsync(array $args = [])
|
155 |
+
* @method \Aws\Result listGroupsForUser(array $args = [])
|
156 |
+
* @method \GuzzleHttp\Promise\Promise listGroupsForUserAsync(array $args = [])
|
157 |
+
* @method \Aws\Result listInstanceProfiles(array $args = [])
|
158 |
+
* @method \GuzzleHttp\Promise\Promise listInstanceProfilesAsync(array $args = [])
|
159 |
+
* @method \Aws\Result listInstanceProfilesForRole(array $args = [])
|
160 |
+
* @method \GuzzleHttp\Promise\Promise listInstanceProfilesForRoleAsync(array $args = [])
|
161 |
+
* @method \Aws\Result listMFADevices(array $args = [])
|
162 |
+
* @method \GuzzleHttp\Promise\Promise listMFADevicesAsync(array $args = [])
|
163 |
+
* @method \Aws\Result listOpenIDConnectProviders(array $args = [])
|
164 |
+
* @method \GuzzleHttp\Promise\Promise listOpenIDConnectProvidersAsync(array $args = [])
|
165 |
+
* @method \Aws\Result listPolicies(array $args = [])
|
166 |
+
* @method \GuzzleHttp\Promise\Promise listPoliciesAsync(array $args = [])
|
167 |
+
* @method \Aws\Result listPolicyVersions(array $args = [])
|
168 |
+
* @method \GuzzleHttp\Promise\Promise listPolicyVersionsAsync(array $args = [])
|
169 |
+
* @method \Aws\Result listRolePolicies(array $args = [])
|
170 |
+
* @method \GuzzleHttp\Promise\Promise listRolePoliciesAsync(array $args = [])
|
171 |
+
* @method \Aws\Result listRoles(array $args = [])
|
172 |
+
* @method \GuzzleHttp\Promise\Promise listRolesAsync(array $args = [])
|
173 |
+
* @method \Aws\Result listSAMLProviders(array $args = [])
|
174 |
+
* @method \GuzzleHttp\Promise\Promise listSAMLProvidersAsync(array $args = [])
|
175 |
+
* @method \Aws\Result listSSHPublicKeys(array $args = [])
|
176 |
+
* @method \GuzzleHttp\Promise\Promise listSSHPublicKeysAsync(array $args = [])
|
177 |
+
* @method \Aws\Result listServerCertificates(array $args = [])
|
178 |
+
* @method \GuzzleHttp\Promise\Promise listServerCertificatesAsync(array $args = [])
|
179 |
+
* @method \Aws\Result listSigningCertificates(array $args = [])
|
180 |
+
* @method \GuzzleHttp\Promise\Promise listSigningCertificatesAsync(array $args = [])
|
181 |
+
* @method \Aws\Result listUserPolicies(array $args = [])
|
182 |
+
* @method \GuzzleHttp\Promise\Promise listUserPoliciesAsync(array $args = [])
|
183 |
+
* @method \Aws\Result listUsers(array $args = [])
|
184 |
+
* @method \GuzzleHttp\Promise\Promise listUsersAsync(array $args = [])
|
185 |
+
* @method \Aws\Result listVirtualMFADevices(array $args = [])
|
186 |
+
* @method \GuzzleHttp\Promise\Promise listVirtualMFADevicesAsync(array $args = [])
|
187 |
+
* @method \Aws\Result putGroupPolicy(array $args = [])
|
188 |
+
* @method \GuzzleHttp\Promise\Promise putGroupPolicyAsync(array $args = [])
|
189 |
+
* @method \Aws\Result putRolePolicy(array $args = [])
|
190 |
+
* @method \GuzzleHttp\Promise\Promise putRolePolicyAsync(array $args = [])
|
191 |
+
* @method \Aws\Result putUserPolicy(array $args = [])
|
192 |
+
* @method \GuzzleHttp\Promise\Promise putUserPolicyAsync(array $args = [])
|
193 |
+
* @method \Aws\Result removeClientIDFromOpenIDConnectProvider(array $args = [])
|
194 |
+
* @method \GuzzleHttp\Promise\Promise removeClientIDFromOpenIDConnectProviderAsync(array $args = [])
|
195 |
+
* @method \Aws\Result removeRoleFromInstanceProfile(array $args = [])
|
196 |
+
* @method \GuzzleHttp\Promise\Promise removeRoleFromInstanceProfileAsync(array $args = [])
|
197 |
+
* @method \Aws\Result removeUserFromGroup(array $args = [])
|
198 |
+
* @method \GuzzleHttp\Promise\Promise removeUserFromGroupAsync(array $args = [])
|
199 |
+
* @method \Aws\Result resyncMFADevice(array $args = [])
|
200 |
+
* @method \GuzzleHttp\Promise\Promise resyncMFADeviceAsync(array $args = [])
|
201 |
+
* @method \Aws\Result setDefaultPolicyVersion(array $args = [])
|
202 |
+
* @method \GuzzleHttp\Promise\Promise setDefaultPolicyVersionAsync(array $args = [])
|
203 |
+
* @method \Aws\Result simulateCustomPolicy(array $args = [])
|
204 |
+
* @method \GuzzleHttp\Promise\Promise simulateCustomPolicyAsync(array $args = [])
|
205 |
+
* @method \Aws\Result simulatePrincipalPolicy(array $args = [])
|
206 |
+
* @method \GuzzleHttp\Promise\Promise simulatePrincipalPolicyAsync(array $args = [])
|
207 |
+
* @method \Aws\Result updateAccessKey(array $args = [])
|
208 |
+
* @method \GuzzleHttp\Promise\Promise updateAccessKeyAsync(array $args = [])
|
209 |
+
* @method \Aws\Result updateAccountPasswordPolicy(array $args = [])
|
210 |
+
* @method \GuzzleHttp\Promise\Promise updateAccountPasswordPolicyAsync(array $args = [])
|
211 |
+
* @method \Aws\Result updateAssumeRolePolicy(array $args = [])
|
212 |
+
* @method \GuzzleHttp\Promise\Promise updateAssumeRolePolicyAsync(array $args = [])
|
213 |
+
* @method \Aws\Result updateGroup(array $args = [])
|
214 |
+
* @method \GuzzleHttp\Promise\Promise updateGroupAsync(array $args = [])
|
215 |
+
* @method \Aws\Result updateLoginProfile(array $args = [])
|
216 |
+
* @method \GuzzleHttp\Promise\Promise updateLoginProfileAsync(array $args = [])
|
217 |
+
* @method \Aws\Result updateOpenIDConnectProviderThumbprint(array $args = [])
|
218 |
+
* @method \GuzzleHttp\Promise\Promise updateOpenIDConnectProviderThumbprintAsync(array $args = [])
|
219 |
+
* @method \Aws\Result updateSAMLProvider(array $args = [])
|
220 |
+
* @method \GuzzleHttp\Promise\Promise updateSAMLProviderAsync(array $args = [])
|
221 |
+
* @method \Aws\Result updateSSHPublicKey(array $args = [])
|
222 |
+
* @method \GuzzleHttp\Promise\Promise updateSSHPublicKeyAsync(array $args = [])
|
223 |
+
* @method \Aws\Result updateServerCertificate(array $args = [])
|
224 |
+
* @method \GuzzleHttp\Promise\Promise updateServerCertificateAsync(array $args = [])
|
225 |
+
* @method \Aws\Result updateSigningCertificate(array $args = [])
|
226 |
+
* @method \GuzzleHttp\Promise\Promise updateSigningCertificateAsync(array $args = [])
|
227 |
+
* @method \Aws\Result updateUser(array $args = [])
|
228 |
+
* @method \GuzzleHttp\Promise\Promise updateUserAsync(array $args = [])
|
229 |
+
* @method \Aws\Result uploadSSHPublicKey(array $args = [])
|
230 |
+
* @method \GuzzleHttp\Promise\Promise uploadSSHPublicKeyAsync(array $args = [])
|
231 |
+
* @method \Aws\Result uploadServerCertificate(array $args = [])
|
232 |
+
* @method \GuzzleHttp\Promise\Promise uploadServerCertificateAsync(array $args = [])
|
233 |
+
* @method \Aws\Result uploadSigningCertificate(array $args = [])
|
234 |
+
* @method \GuzzleHttp\Promise\Promise uploadSigningCertificateAsync(array $args = [])
|
235 |
+
*/
|
236 |
+
class IamClient extends AwsClient {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Inspector/Exception/InspectorException.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Inspector\Exception;
|
3 |
+
|
4 |
+
use Aws\Exception\AwsException;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Represents an error interacting with the **Amazon Inspector** service.
|
8 |
+
*/
|
9 |
+
class InspectorException extends AwsException {}
|
vendor/aannnaa7/aws-sdk-php-minimized/src/Inspector/InspectorClient.php
ADDED
@@ -0,0 +1,82 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Aws\Inspector;
|
3 |
+
|
4 |
+
use Aws\AwsClient;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* This client is used to interact with the **Amazon Inspector** service.
|
8 |
+
*
|
9 |
+
* @method \Aws\Result addAttributesToFindings(array $args = [])
|
10 |
+
* @method \GuzzleHttp\Promise\Promise addAttributesToFindingsAsync(array $args = [])
|
11 |
+
* @method \Aws\Result attachAssessmentAndRulesPackage(array $args = [])
|
12 |
+
* @method \GuzzleHttp\Promise\Promise attachAssessmentAndRulesPackageAsync(array $args = [])
|
13 |
+
* @method \Aws\Result createApplication(array $args = [])
|
14 |
+
* @method \GuzzleHttp\Promise\Promise createApplicationAsync(array $args = [])
|
15 |
+
* @method \Aws\Result createAssessment(array $args = [])
|
16 |
+
* @method \GuzzleHttp\Promise\Promise createAssessmentAsync(array $args = [])
|
17 |
+
* @method \Aws\Result createResourceGroup(array $args = [])
|
18 |
+
* @method \GuzzleHttp\Promise\Promise createResourceGroupAsync(array $args = [])
|
19 |
+
* @method \Aws\Result deleteApplication(array $args = [])
|
20 |
+
* @method \GuzzleHttp\Promise\Promise deleteApplicationAsync(array $args = [])
|
21 |
+
* @method \Aws\Result deleteAssessment(array $args = [])
|
22 |
+
* @method \GuzzleHttp\Promise\Promise deleteAssessmentAsync(array $args = [])
|
23 |
+
* @method \Aws\Result deleteRun(array $args = [])
|
24 |
+
* @method \GuzzleHttp\Promise\Promise deleteRunAsync(array $args = [])
|
25 |
+
* @method \Aws\Result describeApplication(array $args = [])
|
26 |
+
* @method \GuzzleHttp\Promise\Promise describeApplicationAsync(array $args = [])
|
27 |
+
* @method \Aws\Result describeAssessment(array $args = [])
|
28 |
+
* @method \GuzzleHttp\Promise\Promise describeAssessmentAsync(array $args = [])
|
29 |
+
* @method \Aws\Result describeCrossAccountAccessRole(array $args = [])
|
30 |
+
* @method \GuzzleHttp\Promise\Promise describeCrossAccountAccessRoleAsync(array $args = [])
|
31 |
+
* @method \Aws\Result describeFinding(array $args = [])
|
32 |
+
* @method \GuzzleHttp\Promise\Promise describeFindingAsync(array $args = [])
|
33 |
+
* @method \Aws\Result describeResourceGroup(array $args = [])
|
34 |
+
* @method \GuzzleHttp\Promise\Promise describeResourceGroupAsync(array $args = [])
|
35 |
+
* @method \Aws\Result describeRulesPackage(array $args = [])
|
36 |
+
* @method \GuzzleHttp\Promise\Promise describeRulesPackageAsync(array $args = [])
|
37 |
+
* @method \Aws\Result describeRun(array $args = [])
|
38 |
+
* @method \GuzzleHttp\Promise\Promise describeRunAsync(array $args = [])
|
39 |
+
* @method \Aws\Result detachAssessmentAndRulesPackage(array $args = [])
|
40 |
+
* @method \GuzzleHttp\Promise\Promise detachAssessmentAndRulesPackageAsync(array $args = [])
|
41 |
+
* @method \Aws\Result getAssessmentTelemetry(array $args = [])
|
42 |
+
* @method \GuzzleHttp\Promise\Promise getAssessmentTelemetryAsync(array $args = [])
|
43 |
+
* @method \Aws\Result listApplications(array $args = [])
|
44 |
+
* @method \GuzzleHttp\Promise\Promise listApplicationsAsync(array $args = [])
|
45 |
+
* @method \Aws\Result listAssessmentAgents(array $args = [])
|
46 |
+
* @method \GuzzleHttp\Promise\Promise listAssessmentAgentsAsync(array $args = [])
|
47 |
+
* @method \Aws\Result listAssessments(array $args = [])
|
48 |
+
* @method \GuzzleHttp\Promise\Promise listAssessmentsAsync(array $args = [])
|
49 |
+
* @method \Aws\Result listAttachedAssessments(array $args = [])
|
50 |
+
* @method \GuzzleHttp\Promise\Promise listAttachedAssessmentsAsync(array $args = [])
|
51 |
+
* @method \Aws\Result listAttachedRulesPackages(array $args = [])
|
52 |
+
* @method \GuzzleHttp\Promise\Promise listAttachedRulesPackagesAsync(array $args = [])
|
53 |
+
* @method \Aws\Result listFindings(array $args = [])
|
54 |
+
* @method \GuzzleHttp\Promise\Promise listFindingsAsync(array $args = [])
|
55 |
+
* @method \Aws\Result listRulesPackages(array $args = [])
|
56 |
+
* @method \GuzzleHttp\Promise\Promise listRulesPackagesAsync(array $args = [])
|
57 |
+
* @method \Aws\Result listRuns(array $args = [])
|
58 |
+
* @method \GuzzleHttp\Promise\Promise listRunsAsync(array $args = [])
|
59 |
+
* @method \Aws\Result listTagsForResource(array $args = [])
|
60 |
+
* @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
|
61 |
+
* @method \Aws\Result localizeText(array $args = [])
|
62 |
+
* @method \GuzzleHttp\Promise\Promise localizeTextAsync(array $args = [])
|
63 |
+
* @method \Aws\Result previewAgentsForResourceGroup(array $args = [])
|
64 |
+
* @method \GuzzleHttp\Promise\Promise previewAgentsForResourceGroupAsync(array $args = [])
|
65 |
+
* @method \Aws\Result registerCrossAccountAccessRole(array $args = [])
|
66 |
+
* @method \GuzzleHttp\Promise\Promise registerCrossAccountAccessRoleAsync(array $args = [])
|
67 |
+
* @method \Aws\Result removeAttributesF
|