Viewing docs for Defang GCP v2.4.1
published on Saturday, Jul 11, 2026 by Defang
published on Saturday, Jul 11, 2026 by Defang
Viewing docs for Defang GCP v2.4.1
published on Saturday, Jul 11, 2026 by Defang
published on Saturday, Jul 11, 2026 by Defang
Create Project Resource
Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.
Constructor syntax
new Project(name: string, args: ProjectArgs, opts?: ComponentResourceOptions);@overload
def Project(resource_name: str,
args: ProjectArgs,
opts: Optional[ResourceOptions] = None)
@overload
def Project(resource_name: str,
opts: Optional[ResourceOptions] = None,
services: Optional[Mapping[str, _compose.ServiceConfigArgs]] = None,
domain: Optional[str] = None,
etag: Optional[str] = None,
networks: Optional[Mapping[str, _compose.NetworkConfigArgs]] = None)func NewProject(ctx *Context, name string, args ProjectArgs, opts ...ResourceOption) (*Project, error)public Project(string name, ProjectArgs args, ComponentResourceOptions? opts = null)
public Project(String name, ProjectArgs args)
public Project(String name, ProjectArgs args, ComponentResourceOptions options)
type: defang-gcp:Project
properties: # The arguments to resource properties.
options: # Bag of options to control resource's behavior.
resource "defang-gcp_project" "name" {
# resource properties
}Parameters
- name string
- The unique name of the resource.
- args ProjectArgs
- The arguments to resource properties.
- opts ComponentResourceOptions
- Bag of options to control resource's behavior.
- resource_name str
- The unique name of the resource.
- args ProjectArgs
- The arguments to resource properties.
- opts ResourceOptions
- Bag of options to control resource's behavior.
- ctx Context
- Context object for the current deployment.
- name string
- The unique name of the resource.
- args ProjectArgs
- The arguments to resource properties.
- opts ResourceOption
- Bag of options to control resource's behavior.
- name string
- The unique name of the resource.
- args ProjectArgs
- The arguments to resource properties.
- opts ComponentResourceOptions
- Bag of options to control resource's behavior.
- name String
- The unique name of the resource.
- args ProjectArgs
- The arguments to resource properties.
- options ComponentResourceOptions
- Bag of options to control resource's behavior.
Constructor example
The following reference example uses placeholder values for all input properties.
var projectResource = new DefangGcp.Project("projectResource", new()
{
Services =
{
{ "string", new DefangGcp.Compose.Inputs.ServiceConfigArgs
{
Autoscaling = false,
Build = new DefangGcp.Compose.Inputs.BuildConfigArgs
{
Context = "string",
Args =
{
{ "string", "string" },
},
CacheFrom = new[]
{
"string",
},
CacheTo = new[]
{
"string",
},
Dockerfile = "string",
Platforms = new[]
{
"string",
},
ShmSize = "string",
Target = "string",
},
Command = new[]
{
"string",
},
ContainerName = "string",
DependsOn =
{
{ "string", new DefangGcp.Compose.Inputs.ServiceDependencyArgs
{
Condition = "string",
Required = false,
} },
},
Deploy = new DefangGcp.Compose.Inputs.DeployConfigArgs
{
Replicas = 0,
Resources = new DefangGcp.Compose.Inputs.ResourcesArgs
{
Reservations = new DefangGcp.Compose.Inputs.ResourceConfigArgs
{
Cpus = 0,
Memory = "string",
},
},
},
DomainName = "string",
Entrypoint = new[]
{
"string",
},
Environment =
{
{ "string", "string" },
},
HealthCheck = new DefangGcp.Compose.Inputs.HealthCheckConfigArgs
{
IntervalSeconds = 0,
Retries = 0,
StartPeriodSeconds = 0,
Test = new[]
{
"string",
},
TimeoutSeconds = 0,
},
Image = "string",
Llm = null,
NetworkMode = "string",
Networks =
{
{ "string", new DefangGcp.Compose.Inputs.ServiceNetworkConfigArgs
{
Aliases = new[]
{
"string",
},
} },
},
Platform = "string",
Policies = new[]
{
"string",
},
Ports = new[]
{
new DefangGcp.Compose.Inputs.ServicePortConfigArgs
{
Target = 0,
AppProtocol = "string",
Listener = "string",
Mode = "string",
Protocol = "string",
},
},
Postgres = new DefangGcp.Compose.Inputs.PostgresConfigArgs
{
AllowDowntime = false,
FromSnapshot = "string",
},
Redis = new DefangGcp.Compose.Inputs.RedisConfigArgs
{
AllowDowntime = false,
FromSnapshot = "string",
},
Restart = "string",
StopGracePeriod = "string",
Volumes = new[]
{
new DefangGcp.Compose.Inputs.ServiceVolumeConfigArgs
{
Source = "string",
Target = "string",
ReadOnly = false,
},
},
VolumesFrom = new[]
{
"string",
},
WorkingDir = "string",
} },
},
Domain = "string",
Etag = "string",
Networks =
{
{ "string", new DefangGcp.Compose.Inputs.NetworkConfigArgs
{
Internal = false,
} },
},
});
example, err := defanggcp.NewProject(ctx, "projectResource", &defanggcp.ProjectArgs{
Services: compose.ServiceConfigMap{
"string": &compose.ServiceConfigArgs{
Autoscaling: pulumi.Bool(false),
Build: &compose.BuildConfigArgs{
Context: pulumi.String("string"),
Args: pulumi.StringMap{
"string": pulumi.String("string"),
},
CacheFrom: pulumi.StringArray{
pulumi.String("string"),
},
CacheTo: pulumi.StringArray{
pulumi.String("string"),
},
Dockerfile: pulumi.String("string"),
Platforms: pulumi.StringArray{
pulumi.String("string"),
},
ShmSize: pulumi.String("string"),
Target: pulumi.String("string"),
},
Command: pulumi.StringArray{
pulumi.String("string"),
},
ContainerName: pulumi.String("string"),
DependsOn: compose.ServiceDependencyMap{
"string": &compose.ServiceDependencyArgs{
Condition: pulumi.String("string"),
Required: pulumi.Bool(false),
},
},
Deploy: &compose.DeployConfigArgs{
Replicas: pulumi.Int(0),
Resources: &compose.ResourcesArgs{
Reservations: &compose.ResourceConfigArgs{
Cpus: pulumi.Float64(0),
Memory: pulumi.String("string"),
},
},
},
DomainName: pulumi.String("string"),
Entrypoint: pulumi.StringArray{
pulumi.String("string"),
},
Environment: pulumi.StringMap{
"string": pulumi.String("string"),
},
HealthCheck: &compose.HealthCheckConfigArgs{
IntervalSeconds: pulumi.Int(0),
Retries: pulumi.Int(0),
StartPeriodSeconds: pulumi.Int(0),
Test: pulumi.StringArray{
pulumi.String("string"),
},
TimeoutSeconds: pulumi.Int(0),
},
Image: pulumi.String("string"),
Llm: &compose.LlmConfigArgs{},
NetworkMode: pulumi.String("string"),
Networks: compose.ServiceNetworkConfigMap{
"string": &compose.ServiceNetworkConfigArgs{
Aliases: pulumi.StringArray{
pulumi.String("string"),
},
},
},
Platform: pulumi.String("string"),
Policies: pulumi.StringArray{
pulumi.String("string"),
},
Ports: compose.ServicePortConfigArray{
&compose.ServicePortConfigArgs{
Target: pulumi.Int(0),
AppProtocol: pulumi.String("string"),
Listener: pulumi.String("string"),
Mode: pulumi.String("string"),
Protocol: pulumi.String("string"),
},
},
Postgres: &compose.PostgresConfigArgs{
AllowDowntime: pulumi.Bool(false),
FromSnapshot: pulumi.String("string"),
},
Redis: &compose.RedisConfigArgs{
AllowDowntime: pulumi.Bool(false),
FromSnapshot: pulumi.String("string"),
},
Restart: pulumi.String("string"),
StopGracePeriod: pulumi.String("string"),
Volumes: compose.ServiceVolumeConfigArray{
&compose.ServiceVolumeConfigArgs{
Source: pulumi.String("string"),
Target: pulumi.String("string"),
ReadOnly: pulumi.Bool(false),
},
},
VolumesFrom: pulumi.StringArray{
pulumi.String("string"),
},
WorkingDir: pulumi.String("string"),
},
},
Domain: "string",
Etag: "string",
Networks: compose.NetworkConfigMap{
"string": &compose.NetworkConfigArgs{
Internal: pulumi.Bool(false),
},
},
})
resource "defang-gcp_project" "projectResource" {
services = {
"string" = {
autoscaling = false
build = {
context = "string"
args = {
"string" = "string"
}
cache_from = ["string"]
cache_to = ["string"]
dockerfile = "string"
platforms = ["string"]
shm_size = "string"
target = "string"
}
command = ["string"]
container_name = "string"
depends_on = {
"string" = {
condition = "string"
required = false
}
}
deploy = {
replicas = 0
resources = {
reservations = {
cpus = 0
memory = "string"
}
}
}
domain_name = "string"
entrypoint = ["string"]
environment = {
"string" = "string"
}
health_check = {
interval_seconds = 0
retries = 0
start_period_seconds = 0
test = ["string"]
timeout_seconds = 0
}
image = "string"
llm = {}
network_mode = "string"
networks = {
"string" = {
aliases = ["string"]
}
}
platform = "string"
policies = ["string"]
ports = [{
"target" = 0
"appProtocol" = "string"
"listener" = "string"
"mode" = "string"
"protocol" = "string"
}]
postgres = {
allow_downtime = false
from_snapshot = "string"
}
redis = {
allow_downtime = false
from_snapshot = "string"
}
restart = "string"
stop_grace_period = "string"
volumes = [{
"source" = "string"
"target" = "string"
"readOnly" = false
}]
volumes_from = ["string"]
working_dir = "string"
}
}
domain = "string"
etag = "string"
networks = {
"string" = {
internal = false
}
}
}
var projectResource = new Project("projectResource", ProjectArgs.builder()
.services(Map.of("string", ServiceConfigArgs.builder()
.autoscaling(false)
.build(BuildConfigArgs.builder()
.context("string")
.args(Map.of("string", "string"))
.cacheFrom("string")
.cacheTo("string")
.dockerfile("string")
.platforms("string")
.shmSize("string")
.target("string")
.build())
.command("string")
.containerName("string")
.dependsOn(Map.of("string", ServiceDependencyArgs.builder()
.condition("string")
.required(false)
.build()))
.deploy(DeployConfigArgs.builder()
.replicas(0)
.resources(ResourcesArgs.builder()
.reservations(ResourceConfigArgs.builder()
.cpus(0.0)
.memory("string")
.build())
.build())
.build())
.domainName("string")
.entrypoint("string")
.environment(Map.of("string", "string"))
.healthCheck(HealthCheckConfigArgs.builder()
.intervalSeconds(0)
.retries(0)
.startPeriodSeconds(0)
.test("string")
.timeoutSeconds(0)
.build())
.image("string")
.llm(LlmConfigArgs.builder()
.build())
.networkMode("string")
.networks(Map.of("string", ServiceNetworkConfigArgs.builder()
.aliases("string")
.build()))
.platform("string")
.policies("string")
.ports(ServicePortConfigArgs.builder()
.target(0)
.appProtocol("string")
.listener("string")
.mode("string")
.protocol("string")
.build())
.postgres(PostgresConfigArgs.builder()
.allowDowntime(false)
.fromSnapshot("string")
.build())
.redis(RedisConfigArgs.builder()
.allowDowntime(false)
.fromSnapshot("string")
.build())
.restart("string")
.stopGracePeriod("string")
.volumes(ServiceVolumeConfigArgs.builder()
.source("string")
.target("string")
.readOnly(false)
.build())
.volumesFrom("string")
.workingDir("string")
.build()))
.domain("string")
.etag("string")
.networks(Map.of("string", NetworkConfigArgs.builder()
.internal(false)
.build()))
.build());
project_resource = defang_gcp.Project("projectResource",
services={
"string": {
"autoscaling": False,
"build": {
"context": "string",
"args": {
"string": "string",
},
"cache_from": ["string"],
"cache_to": ["string"],
"dockerfile": "string",
"platforms": ["string"],
"shm_size": "string",
"target": "string",
},
"command": ["string"],
"container_name": "string",
"depends_on": {
"string": {
"condition": "string",
"required": False,
},
},
"deploy": {
"replicas": 0,
"resources": {
"reservations": {
"cpus": float(0),
"memory": "string",
},
},
},
"domain_name": "string",
"entrypoint": ["string"],
"environment": {
"string": "string",
},
"health_check": {
"interval_seconds": 0,
"retries": 0,
"start_period_seconds": 0,
"test": ["string"],
"timeout_seconds": 0,
},
"image": "string",
"llm": {},
"network_mode": "string",
"networks": {
"string": {
"aliases": ["string"],
},
},
"platform": "string",
"policies": ["string"],
"ports": [{
"target": 0,
"app_protocol": "string",
"listener": "string",
"mode": "string",
"protocol": "string",
}],
"postgres": {
"allow_downtime": False,
"from_snapshot": "string",
},
"redis": {
"allow_downtime": False,
"from_snapshot": "string",
},
"restart": "string",
"stop_grace_period": "string",
"volumes": [{
"source": "string",
"target": "string",
"read_only": False,
}],
"volumes_from": ["string"],
"working_dir": "string",
},
},
domain="string",
etag="string",
networks={
"string": {
"internal": False,
},
})
const projectResource = new defang_gcp.Project("projectResource", {
services: {
string: {
autoscaling: false,
build: {
context: "string",
args: {
string: "string",
},
cacheFrom: ["string"],
cacheTo: ["string"],
dockerfile: "string",
platforms: ["string"],
shmSize: "string",
target: "string",
},
command: ["string"],
containerName: "string",
dependsOn: {
string: {
condition: "string",
required: false,
},
},
deploy: {
replicas: 0,
resources: {
reservations: {
cpus: 0,
memory: "string",
},
},
},
domainName: "string",
entrypoint: ["string"],
environment: {
string: "string",
},
healthCheck: {
intervalSeconds: 0,
retries: 0,
startPeriodSeconds: 0,
test: ["string"],
timeoutSeconds: 0,
},
image: "string",
llm: {},
networkMode: "string",
networks: {
string: {
aliases: ["string"],
},
},
platform: "string",
policies: ["string"],
ports: [{
target: 0,
appProtocol: "string",
listener: "string",
mode: "string",
protocol: "string",
}],
postgres: {
allowDowntime: false,
fromSnapshot: "string",
},
redis: {
allowDowntime: false,
fromSnapshot: "string",
},
restart: "string",
stopGracePeriod: "string",
volumes: [{
source: "string",
target: "string",
readOnly: false,
}],
volumesFrom: ["string"],
workingDir: "string",
},
},
domain: "string",
etag: "string",
networks: {
string: {
internal: false,
},
},
});
type: defang-gcp:Project
properties:
domain: string
etag: string
networks:
string:
internal: false
services:
string:
autoscaling: false
build:
args:
string: string
cacheFrom:
- string
cacheTo:
- string
context: string
dockerfile: string
platforms:
- string
shmSize: string
target: string
command:
- string
containerName: string
dependsOn:
string:
condition: string
required: false
deploy:
replicas: 0
resources:
reservations:
cpus: 0
memory: string
domainName: string
entrypoint:
- string
environment:
string: string
healthCheck:
intervalSeconds: 0
retries: 0
startPeriodSeconds: 0
test:
- string
timeoutSeconds: 0
image: string
llm: {}
networkMode: string
networks:
string:
aliases:
- string
platform: string
policies:
- string
ports:
- appProtocol: string
listener: string
mode: string
protocol: string
target: 0
postgres:
allowDowntime: false
fromSnapshot: string
redis:
allowDowntime: false
fromSnapshot: string
restart: string
stopGracePeriod: string
volumes:
- readOnly: false
source: string
target: string
volumesFrom:
- string
workingDir: string
Project Resource Properties
To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.
Inputs
In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.
The Project resource accepts the following input properties:
Outputs
All input properties are implicitly available as output properties. Additionally, the Project resource produces the following output properties:
- Endpoints Dictionary<string, string>
- Load
Balancer stringDns
- Endpoints map[string]string
- Load
Balancer stringDns
- endpoints map(string)
- load_
balancer_ stringdns
- endpoints Map<String,String>
- load
Balancer StringDns
- endpoints {[key: string]: string}
- load
Balancer stringDns
- endpoints Mapping[str, str]
- load_
balancer_ strdns
- endpoints Map<String>
- load
Balancer StringDns
Supporting Types
BuildConfig, BuildConfigArgs
- context string
- args map(string)
- cache_
from list(string) - cache_
to list(string) - dockerfile string
- platforms list(string)
- shm_
size string - target string
- context str
- args Mapping[str, str]
- cache_
from Sequence[str] - cache_
to Sequence[str] - dockerfile str
- platforms Sequence[str]
- shm_
size str - target str
DeployConfig, DeployConfigArgs
- replicas Number
- resources Property Map
HealthCheckConfig, HealthCheckConfigArgs
- Interval
Seconds int - Retries int
- Start
Period intSeconds - Test List<string>
- Timeout
Seconds int
- Interval
Seconds int - Retries int
- Start
Period intSeconds - Test []string
- Timeout
Seconds int
- interval_
seconds number - retries number
- start_
period_ numberseconds - test list(string)
- timeout_
seconds number
- interval
Seconds Integer - retries Integer
- start
Period IntegerSeconds - test List<String>
- timeout
Seconds Integer
- interval
Seconds number - retries number
- start
Period numberSeconds - test string[]
- timeout
Seconds number
- interval_
seconds int - retries int
- start_
period_ intseconds - test Sequence[str]
- timeout_
seconds int
- interval
Seconds Number - retries Number
- start
Period NumberSeconds - test List<String>
- timeout
Seconds Number
NetworkConfig, NetworkConfigArgs
- Internal bool
- Internal bool
- internal bool
- internal Boolean
- internal boolean
- internal bool
- internal Boolean
PostgresConfig, PostgresConfigArgs
- Allow
Downtime bool - From
Snapshot string
- Allow
Downtime bool - From
Snapshot string
- allow_
downtime bool - from_
snapshot string
- allow
Downtime Boolean - from
Snapshot String
- allow
Downtime boolean - from
Snapshot string
- allow_
downtime bool - from_
snapshot str
- allow
Downtime Boolean - from
Snapshot String
RedisConfig, RedisConfigArgs
- Allow
Downtime bool - From
Snapshot string
- Allow
Downtime bool - From
Snapshot string
- allow_
downtime bool - from_
snapshot string
- allow
Downtime Boolean - from
Snapshot String
- allow
Downtime boolean - from
Snapshot string
- allow_
downtime bool - from_
snapshot str
- allow
Downtime Boolean - from
Snapshot String
ResourceConfig, ResourceConfigArgs
Resources, ResourcesArgs
ServiceConfig, ServiceConfigArgs
- Autoscaling bool
- Build
Defang
Labs. Defang Gcp. Compose. Inputs. Build Config - Command List<string>
- Container
Name string - Depends
On Dictionary<string, DefangLabs. Defang Gcp. Compose. Inputs. Service Dependency> - Deploy
Defang
Labs. Defang Gcp. Compose. Inputs. Deploy Config - Domain
Name string - Entrypoint List<string>
- Environment Dictionary<string, string>
- Health
Check DefangLabs. Defang Gcp. Compose. Inputs. Health Check Config - Image string
- Llm
Defang
Labs. Defang Gcp. Compose. Inputs. Llm Config - Network
Mode string - Networks
Dictionary<string, Defang
Labs. Defang Gcp. Compose. Inputs. Service Network Config> - Platform string
- Policies List<string>
- Ports
List<Defang
Labs. Defang Gcp. Compose. Inputs. Service Port Config> - Postgres
Defang
Labs. Defang Gcp. Compose. Inputs. Postgres Config - Redis
Defang
Labs. Defang Gcp. Compose. Inputs. Redis Config - Restart string
- Stop
Grace stringPeriod - Volumes
List<Defang
Labs. Defang Gcp. Compose. Inputs. Service Volume Config> - Volumes
From List<string> - Working
Dir string
- Autoscaling bool
- Build
Build
Config - Command []string
- Container
Name string - Depends
On ServiceDependency - Deploy
Deploy
Config - Domain
Name string - Entrypoint []string
- Environment map[string]string
- Health
Check HealthCheck Config - Image string
- Llm
Llm
Config - Network
Mode string - Networks
Service
Network Config - Platform string
- Policies []string
- Ports
Service
Port Config - Postgres
Postgres
Config - Redis
Redis
Config - Restart string
- Stop
Grace stringPeriod - Volumes
Service
Volume Config - Volumes
From []string - Working
Dir string
- autoscaling bool
- build object
- command list(string)
- container_
name string - depends_
on map(object) - deploy object
- domain_
name string - entrypoint list(string)
- environment map(string)
- health_
check object - image string
- llm object
- network_
mode string - networks map(object)
- platform string
- policies list(string)
- ports list(object)
- postgres object
- redis object
- restart string
- stop_
grace_ stringperiod - volumes list(object)
- volumes_
from list(string) - working_
dir string
- autoscaling Boolean
- build
Build
Config - command List<String>
- container
Name String - depends
On Map<String,ServiceDependency> - deploy
Deploy
Config - domain
Name String - entrypoint List<String>
- environment Map<String,String>
- health
Check HealthCheck Config - image String
- llm
Llm
Config - network
Mode String - networks
Map<String,Service
Network Config> - platform String
- policies List<String>
- ports
List<Service
Port Config> - postgres
Postgres
Config - redis
Redis
Config - restart String
- stop
Grace StringPeriod - volumes
List<Service
Volume Config> - volumes
From List<String> - working
Dir String
- autoscaling boolean
- build
compose
Build Config - command string[]
- container
Name string - depends
On {[key: string]: composeService Dependency} - deploy
compose
Deploy Config - domain
Name string - entrypoint string[]
- environment {[key: string]: string}
- health
Check composeHealth Check Config - image string
- llm
compose
Llm Config - network
Mode string - networks
{[key: string]: compose
Service Network Config} - platform string
- policies string[]
- ports
compose
Service Port Config[] - postgres
compose
Postgres Config - redis
compose
Redis Config - restart string
- stop
Grace stringPeriod - volumes
compose
Service Volume Config[] - volumes
From string[] - working
Dir string
- autoscaling bool
- build
compose.
Build Config - command Sequence[str]
- container_
name str - depends_
on Mapping[str, compose.Service Dependency] - deploy
compose.
Deploy Config - domain_
name str - entrypoint Sequence[str]
- environment Mapping[str, str]
- health_
check compose.Health Check Config - image str
- llm
compose.
Llm Config - network_
mode str - networks
Mapping[str, compose.
Service Network Config] - platform str
- policies Sequence[str]
- ports
Sequence[compose.
Service Port Config] - postgres
compose.
Postgres Config - redis
compose.
Redis Config - restart str
- stop_
grace_ strperiod - volumes
Sequence[compose.
Service Volume Config] - volumes_
from Sequence[str] - working_
dir str
- autoscaling Boolean
- build Property Map
- command List<String>
- container
Name String - depends
On Map<Property Map> - deploy Property Map
- domain
Name String - entrypoint List<String>
- environment Map<String>
- health
Check Property Map - image String
- llm Property Map
- network
Mode String - networks Map<Property Map>
- platform String
- policies List<String>
- ports List<Property Map>
- postgres Property Map
- redis Property Map
- restart String
- stop
Grace StringPeriod - volumes List<Property Map>
- volumes
From List<String> - working
Dir String
ServiceDependency, ServiceDependencyArgs
ServiceNetworkConfig, ServiceNetworkConfigArgs
- Aliases List<string>
- Aliases []string
- aliases list(string)
- aliases List<String>
- aliases string[]
- aliases Sequence[str]
- aliases List<String>
ServicePortConfig, ServicePortConfigArgs
- Target int
- App
Protocol string - Listener string
- Mode string
- Protocol string
- Target int
- App
Protocol string - Listener string
- Mode string
- Protocol string
- target number
- app_
protocol string - listener string
- mode string
- protocol string
- target Integer
- app
Protocol String - listener String
- mode String
- protocol String
- target number
- app
Protocol string - listener string
- mode string
- protocol string
- target int
- app_
protocol str - listener str
- mode str
- protocol str
- target Number
- app
Protocol String - listener String
- mode String
- protocol String
ServiceVolumeConfig, ServiceVolumeConfigArgs
Package Details
- Repository
- defang-gcp DefangLabs/pulumi-defang
- License
- Apache-2.0
Viewing docs for Defang GCP v2.4.1
published on Saturday, Jul 11, 2026 by Defang
published on Saturday, Jul 11, 2026 by Defang