### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

When performing a multipart upload, sending part number 10000, because [this check](https://github.com/localstack/localstack/blob/d23f0717cc66c0cc8a61b6b85e7531a6f4a03f96/localstack/services/s3/provider.py#L792C88-L792C88) in s3/provider.py is wrong.

### Expected Behavior

Part number 10000 is accepted

### How are you starting LocalStack?

With a docker-compose file

### Steps To Reproduce

#### How are you starting localstack (e.g., `bin/localstack` command, arguments, or `docker-compose.yml`)

    docker run localstack/localstack

#### Client commands (e.g., AWS SDK code snippet, or sequence of "awslocal" commands)

I'm using AWS .NET SDK:

        using var inputStream = new MemoryStream(buffer, 0, readBytes, false);

        var uploadRequest = new UploadPartRequest
        {
            BucketName = bucketName,
            InputStream = inputStream,
            Key = key,
            PartNumber = partNumber,
            PartSize = readBytes,
            UploadId = uploadId,
        };

        await _client.UploadPartAsync(uploadRequest);


### Environment

```markdown
- OS: Ubuntu 22.04
- LocalStack: 2.2
```


### Anything else?

As referenced above, the bug is in [this line](https://github.com/localstack/localstack/blob/d23f0717cc66c0cc8a61b6b85e7531a6f4a03f96/localstack/services/s3/provider.py#L792C88-L792C88). It should read

    elif (part_number := request.get("PartNumber", 0)) < 1 or part_number > 10000:
"""
    Validate the canned ACL value, or raise an Exception
    """
    if canned_acl and not is_canned_acl_bucket_valid(canned_acl):
        ex = _create_invalid_argument_exc(None, "x-amz-acl", canned_acl)
        raise ex
def validate_grantee_in_headers(grant: str, grantees: str) -> None:
    splitted_grantees = [grantee.strip() for grantee in grantees.split(",")]
    for grantee in splitted_grantees:
        grantee_type, grantee_id = grantee.split("=")
        grantee_id = grantee_id.strip('"')
        if grantee_type not in ("uri", "id", "emailAddress"):
            ex = _create_invalid_argument_exc(
                "Argument format not recognized", get_header_name(grant), grantee
            )
            raise ex
        elif grantee_type == "uri" and grantee_id not in s3_constants.VALID_ACL_PREDEFINED_GROUPS:
            ex = _create_invalid_argument_exc("Invalid group uri", "uri", grantee_id)
            raise ex
        elif grantee_type == "id" and not is_valid_canonical_id(grantee_id):
            ex = _create_invalid_argument_exc("Invalid id", "id", grantee_id)
            raise ex
        elif grantee_type == "emailAddress":
            
            continue
def validate_acl_acp(acp: AccessControlPolicy) -> None: