antchain-bot 1.11.3__tar.gz → 1.11.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: antchain_bot
3
- Version: 1.11.3
3
+ Version: 1.11.6
4
4
  Summary: Ant Chain BOT SDK Library for Python
5
5
  Home-page: https://github.com/alipay/antchain-openapi-prod-sdk
6
6
  Author: Ant Chain SDK
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: antchain-bot
3
- Version: 1.11.3
3
+ Version: 1.11.6
4
4
  Summary: Ant Chain BOT SDK Library for Python
5
5
  Home-page: https://github.com/alipay/antchain-openapi-prod-sdk
6
6
  Author: Ant Chain SDK
@@ -0,0 +1 @@
1
+ __version__ = '1.11.6'
@@ -135,7 +135,7 @@ class Client:
135
135
  'req_msg_id': AntchainUtils.get_nonce(),
136
136
  'access_key': self._access_key_id,
137
137
  'base_sdk_version': 'TeaSDK-2.0',
138
- 'sdk_version': '1.11.3',
138
+ 'sdk_version': '1.11.6',
139
139
  '_prod_code': 'BOT',
140
140
  '_prod_channel': 'undefined'
141
141
  }
@@ -239,7 +239,7 @@ class Client:
239
239
  'req_msg_id': AntchainUtils.get_nonce(),
240
240
  'access_key': self._access_key_id,
241
241
  'base_sdk_version': 'TeaSDK-2.0',
242
- 'sdk_version': '1.11.3',
242
+ 'sdk_version': '1.11.6',
243
243
  '_prod_code': 'BOT',
244
244
  '_prod_channel': 'undefined'
245
245
  }
@@ -5858,8 +5858,8 @@ class Client:
5858
5858
  request: bot_models.PayDigitalkeyWithholdRequest,
5859
5859
  ) -> bot_models.PayDigitalkeyWithholdResponse:
5860
5860
  """
5861
- Description: 代扣支付
5862
- Summary: 代扣支付
5861
+ Description: 网约车代扣支付
5862
+ Summary: 网约车代扣支付
5863
5863
  """
5864
5864
  runtime = util_models.RuntimeOptions()
5865
5865
  headers = {}
@@ -5870,8 +5870,8 @@ class Client:
5870
5870
  request: bot_models.PayDigitalkeyWithholdRequest,
5871
5871
  ) -> bot_models.PayDigitalkeyWithholdResponse:
5872
5872
  """
5873
- Description: 代扣支付
5874
- Summary: 代扣支付
5873
+ Description: 网约车代扣支付
5874
+ Summary: 网约车代扣支付
5875
5875
  """
5876
5876
  runtime = util_models.RuntimeOptions()
5877
5877
  headers = {}
@@ -5884,8 +5884,8 @@ class Client:
5884
5884
  runtime: util_models.RuntimeOptions,
5885
5885
  ) -> bot_models.PayDigitalkeyWithholdResponse:
5886
5886
  """
5887
- Description: 代扣支付
5888
- Summary: 代扣支付
5887
+ Description: 网约车代扣支付
5888
+ Summary: 网约车代扣支付
5889
5889
  """
5890
5890
  UtilClient.validate_model(request)
5891
5891
  return TeaCore.from_map(
@@ -5900,8 +5900,8 @@ class Client:
5900
5900
  runtime: util_models.RuntimeOptions,
5901
5901
  ) -> bot_models.PayDigitalkeyWithholdResponse:
5902
5902
  """
5903
- Description: 代扣支付
5904
- Summary: 代扣支付
5903
+ Description: 网约车代扣支付
5904
+ Summary: 网约车代扣支付
5905
5905
  """
5906
5906
  UtilClient.validate_model(request)
5907
5907
  return TeaCore.from_map(
@@ -6849,6 +6849,73 @@ class ProductKeyPageResponse(TeaModel):
6849
6849
  return self
6850
6850
 
6851
6851
 
6852
+ class AntdigitalWithHoldResponse(TeaModel):
6853
+ def __init__(
6854
+ self,
6855
+ code: str = None,
6856
+ msg: str = None,
6857
+ sub_code: str = None,
6858
+ sub_msg: str = None,
6859
+ data: str = None,
6860
+ signature: str = None,
6861
+ ):
6862
+ # 网关返回码
6863
+ self.code = code
6864
+ # 网关返回码描述
6865
+ self.msg = msg
6866
+ # 务返回码
6867
+ self.sub_code = sub_code
6868
+ # 业务返回码描述
6869
+ self.sub_msg = sub_msg
6870
+ # 结果返回内容
6871
+ self.data = data
6872
+ # 响应签名
6873
+ self.signature = signature
6874
+
6875
+ def validate(self):
6876
+ self.validate_required(self.code, 'code')
6877
+ self.validate_required(self.msg, 'msg')
6878
+ self.validate_required(self.sub_code, 'sub_code')
6879
+ self.validate_required(self.sub_msg, 'sub_msg')
6880
+ self.validate_required(self.signature, 'signature')
6881
+
6882
+ def to_map(self):
6883
+ _map = super().to_map()
6884
+ if _map is not None:
6885
+ return _map
6886
+
6887
+ result = dict()
6888
+ if self.code is not None:
6889
+ result['code'] = self.code
6890
+ if self.msg is not None:
6891
+ result['msg'] = self.msg
6892
+ if self.sub_code is not None:
6893
+ result['sub_code'] = self.sub_code
6894
+ if self.sub_msg is not None:
6895
+ result['sub_msg'] = self.sub_msg
6896
+ if self.data is not None:
6897
+ result['data'] = self.data
6898
+ if self.signature is not None:
6899
+ result['signature'] = self.signature
6900
+ return result
6901
+
6902
+ def from_map(self, m: dict = None):
6903
+ m = m or dict()
6904
+ if m.get('code') is not None:
6905
+ self.code = m.get('code')
6906
+ if m.get('msg') is not None:
6907
+ self.msg = m.get('msg')
6908
+ if m.get('sub_code') is not None:
6909
+ self.sub_code = m.get('sub_code')
6910
+ if m.get('sub_msg') is not None:
6911
+ self.sub_msg = m.get('sub_msg')
6912
+ if m.get('data') is not None:
6913
+ self.data = m.get('data')
6914
+ if m.get('signature') is not None:
6915
+ self.signature = m.get('signature')
6916
+ return self
6917
+
6918
+
6852
6919
  class SubMerchantParams(TeaModel):
6853
6920
  def __init__(
6854
6921
  self,
@@ -22271,9 +22338,12 @@ class PayDigitalkeyWithholdRequest(TeaModel):
22271
22338
  product_code: str = None,
22272
22339
  total_amount: int = None,
22273
22340
  deduct_permission: str = None,
22274
- agreement_no: str = None,
22341
+ external_agreement_no: str = None,
22275
22342
  timeout_express: str = None,
22276
22343
  async_type: str = None,
22344
+ discountable_amount: int = None,
22345
+ sub_merchant: SubMerchantParams = None,
22346
+ body: str = None,
22277
22347
  ):
22278
22348
  # OAuth模式下的授权token
22279
22349
  self.auth_token = auth_token
@@ -22290,12 +22360,18 @@ class PayDigitalkeyWithholdRequest(TeaModel):
22290
22360
  self.total_amount = total_amount
22291
22361
  # 商户代扣扣款许可
22292
22362
  self.deduct_permission = deduct_permission
22293
- # 代扣协议号, 对应于签约时,支付宝返回的协议
22294
- self.agreement_no = agreement_no
22363
+ # 代扣协议号, 对应于签约时外部商户传入的协议号
22364
+ self.external_agreement_no = external_agreement_no
22295
22365
  # 该笔订单允许的最晚付款时间,逾期将关闭交易,超时关闭交易无法继续付款。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天 该参数数值不接受小数点, 如:1.5 h,可转换为 90m。
22296
22366
  self.timeout_express = timeout_express
22297
22367
  # 异步支付类型
22298
22368
  self.async_type = async_type
22369
+ # 可打折金额。 参与优惠计算的金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]。 如果同时传入了【可打折金额】、【不可打折金额】和【订单总金额】,则必须满足如下条件:【订单总金额】=【可打折金额】+【不可打折金额】。 如果订单金额全部参与优惠计算,则【可打折金额】和【不可打折金额】都无需传入。
22370
+ self.discountable_amount = discountable_amount
22371
+ # 二级商户信息
22372
+ self.sub_merchant = sub_merchant
22373
+ # 订单附加信息。 如果请求时传递了该参数,将在异步通知、对账单中原样返回,同时会在商户和用户的pc账单详情中作为交易描述展示
22374
+ self.body = body
22299
22375
 
22300
22376
  def validate(self):
22301
22377
  self.validate_required(self.out_trade_no, 'out_trade_no')
@@ -22303,8 +22379,10 @@ class PayDigitalkeyWithholdRequest(TeaModel):
22303
22379
  self.validate_required(self.alipay_user_id, 'alipay_user_id')
22304
22380
  self.validate_required(self.product_code, 'product_code')
22305
22381
  self.validate_required(self.total_amount, 'total_amount')
22306
- self.validate_required(self.agreement_no, 'agreement_no')
22382
+ self.validate_required(self.external_agreement_no, 'external_agreement_no')
22307
22383
  self.validate_required(self.async_type, 'async_type')
22384
+ if self.sub_merchant:
22385
+ self.sub_merchant.validate()
22308
22386
 
22309
22387
  def to_map(self):
22310
22388
  _map = super().to_map()
@@ -22328,12 +22406,18 @@ class PayDigitalkeyWithholdRequest(TeaModel):
22328
22406
  result['total_amount'] = self.total_amount
22329
22407
  if self.deduct_permission is not None:
22330
22408
  result['deduct_permission'] = self.deduct_permission
22331
- if self.agreement_no is not None:
22332
- result['agreement_no'] = self.agreement_no
22409
+ if self.external_agreement_no is not None:
22410
+ result['external_agreement_no'] = self.external_agreement_no
22333
22411
  if self.timeout_express is not None:
22334
22412
  result['timeout_express'] = self.timeout_express
22335
22413
  if self.async_type is not None:
22336
22414
  result['async_type'] = self.async_type
22415
+ if self.discountable_amount is not None:
22416
+ result['discountable_amount'] = self.discountable_amount
22417
+ if self.sub_merchant is not None:
22418
+ result['sub_merchant'] = self.sub_merchant.to_map()
22419
+ if self.body is not None:
22420
+ result['body'] = self.body
22337
22421
  return result
22338
22422
 
22339
22423
  def from_map(self, m: dict = None):
@@ -22354,12 +22438,19 @@ class PayDigitalkeyWithholdRequest(TeaModel):
22354
22438
  self.total_amount = m.get('total_amount')
22355
22439
  if m.get('deduct_permission') is not None:
22356
22440
  self.deduct_permission = m.get('deduct_permission')
22357
- if m.get('agreement_no') is not None:
22358
- self.agreement_no = m.get('agreement_no')
22441
+ if m.get('external_agreement_no') is not None:
22442
+ self.external_agreement_no = m.get('external_agreement_no')
22359
22443
  if m.get('timeout_express') is not None:
22360
22444
  self.timeout_express = m.get('timeout_express')
22361
22445
  if m.get('async_type') is not None:
22362
22446
  self.async_type = m.get('async_type')
22447
+ if m.get('discountable_amount') is not None:
22448
+ self.discountable_amount = m.get('discountable_amount')
22449
+ if m.get('sub_merchant') is not None:
22450
+ temp_model = SubMerchantParams()
22451
+ self.sub_merchant = temp_model.from_map(m['sub_merchant'])
22452
+ if m.get('body') is not None:
22453
+ self.body = m.get('body')
22363
22454
  return self
22364
22455
 
22365
22456
 
@@ -22369,8 +22460,7 @@ class PayDigitalkeyWithholdResponse(TeaModel):
22369
22460
  req_msg_id: str = None,
22370
22461
  result_code: str = None,
22371
22462
  result_msg: str = None,
22372
- sub_msg: str = None,
22373
- sub_code: str = None,
22463
+ antdigital_withhold_response: AntdigitalWithHoldResponse = None,
22374
22464
  ):
22375
22465
  # 请求唯一ID,用于链路跟踪和问题排查
22376
22466
  self.req_msg_id = req_msg_id
@@ -22378,13 +22468,12 @@ class PayDigitalkeyWithholdResponse(TeaModel):
22378
22468
  self.result_code = result_code
22379
22469
  # 异常信息的文本描述
22380
22470
  self.result_msg = result_msg
22381
- # 明细返回码描述
22382
- self.sub_msg = sub_msg
22383
- # 明细返回码
22384
- self.sub_code = sub_code
22471
+ # 返回对象
22472
+ self.antdigital_withhold_response = antdigital_withhold_response
22385
22473
 
22386
22474
  def validate(self):
22387
- pass
22475
+ if self.antdigital_withhold_response:
22476
+ self.antdigital_withhold_response.validate()
22388
22477
 
22389
22478
  def to_map(self):
22390
22479
  _map = super().to_map()
@@ -22398,10 +22487,8 @@ class PayDigitalkeyWithholdResponse(TeaModel):
22398
22487
  result['result_code'] = self.result_code
22399
22488
  if self.result_msg is not None:
22400
22489
  result['result_msg'] = self.result_msg
22401
- if self.sub_msg is not None:
22402
- result['sub_msg'] = self.sub_msg
22403
- if self.sub_code is not None:
22404
- result['sub_code'] = self.sub_code
22490
+ if self.antdigital_withhold_response is not None:
22491
+ result['antdigital_withhold_response'] = self.antdigital_withhold_response.to_map()
22405
22492
  return result
22406
22493
 
22407
22494
  def from_map(self, m: dict = None):
@@ -22412,10 +22499,9 @@ class PayDigitalkeyWithholdResponse(TeaModel):
22412
22499
  self.result_code = m.get('result_code')
22413
22500
  if m.get('result_msg') is not None:
22414
22501
  self.result_msg = m.get('result_msg')
22415
- if m.get('sub_msg') is not None:
22416
- self.sub_msg = m.get('sub_msg')
22417
- if m.get('sub_code') is not None:
22418
- self.sub_code = m.get('sub_code')
22502
+ if m.get('antdigital_withhold_response') is not None:
22503
+ temp_model = AntdigitalWithHoldResponse()
22504
+ self.antdigital_withhold_response = temp_model.from_map(m['antdigital_withhold_response'])
22419
22505
  return self
22420
22506
 
22421
22507
 
@@ -22714,9 +22800,7 @@ class CancelDigitalkeyWithholdResponse(TeaModel):
22714
22800
  req_msg_id: str = None,
22715
22801
  result_code: str = None,
22716
22802
  result_msg: str = None,
22717
- sub_code: str = None,
22718
- sub_msg: str = None,
22719
- data: str = None,
22803
+ antdigital_withhold_response: AntdigitalWithHoldResponse = None,
22720
22804
  ):
22721
22805
  # 请求唯一ID,用于链路跟踪和问题排查
22722
22806
  self.req_msg_id = req_msg_id
@@ -22724,15 +22808,12 @@ class CancelDigitalkeyWithholdResponse(TeaModel):
22724
22808
  self.result_code = result_code
22725
22809
  # 异常信息的文本描述
22726
22810
  self.result_msg = result_msg
22727
- # 明细返回码
22728
- self.sub_code = sub_code
22729
- # 明细返回码描述
22730
- self.sub_msg = sub_msg
22731
- # 撤销返回信息
22732
- self.data = data
22811
+ # 返回对象
22812
+ self.antdigital_withhold_response = antdigital_withhold_response
22733
22813
 
22734
22814
  def validate(self):
22735
- pass
22815
+ if self.antdigital_withhold_response:
22816
+ self.antdigital_withhold_response.validate()
22736
22817
 
22737
22818
  def to_map(self):
22738
22819
  _map = super().to_map()
@@ -22746,12 +22827,8 @@ class CancelDigitalkeyWithholdResponse(TeaModel):
22746
22827
  result['result_code'] = self.result_code
22747
22828
  if self.result_msg is not None:
22748
22829
  result['result_msg'] = self.result_msg
22749
- if self.sub_code is not None:
22750
- result['sub_code'] = self.sub_code
22751
- if self.sub_msg is not None:
22752
- result['sub_msg'] = self.sub_msg
22753
- if self.data is not None:
22754
- result['data'] = self.data
22830
+ if self.antdigital_withhold_response is not None:
22831
+ result['antdigital_withhold_response'] = self.antdigital_withhold_response.to_map()
22755
22832
  return result
22756
22833
 
22757
22834
  def from_map(self, m: dict = None):
@@ -22762,12 +22839,9 @@ class CancelDigitalkeyWithholdResponse(TeaModel):
22762
22839
  self.result_code = m.get('result_code')
22763
22840
  if m.get('result_msg') is not None:
22764
22841
  self.result_msg = m.get('result_msg')
22765
- if m.get('sub_code') is not None:
22766
- self.sub_code = m.get('sub_code')
22767
- if m.get('sub_msg') is not None:
22768
- self.sub_msg = m.get('sub_msg')
22769
- if m.get('data') is not None:
22770
- self.data = m.get('data')
22842
+ if m.get('antdigital_withhold_response') is not None:
22843
+ temp_model = AntdigitalWithHoldResponse()
22844
+ self.antdigital_withhold_response = temp_model.from_map(m['antdigital_withhold_response'])
22771
22845
  return self
22772
22846
 
22773
22847
 
@@ -22834,9 +22908,7 @@ class NotifyDigitalkeyWithholdResponse(TeaModel):
22834
22908
  req_msg_id: str = None,
22835
22909
  result_code: str = None,
22836
22910
  result_msg: str = None,
22837
- sub_code: str = None,
22838
- sub_msg: str = None,
22839
- data: str = None,
22911
+ antdigital_withhold_response: AntdigitalWithHoldResponse = None,
22840
22912
  ):
22841
22913
  # 请求唯一ID,用于链路跟踪和问题排查
22842
22914
  self.req_msg_id = req_msg_id
@@ -22844,15 +22916,12 @@ class NotifyDigitalkeyWithholdResponse(TeaModel):
22844
22916
  self.result_code = result_code
22845
22917
  # 异常信息的文本描述
22846
22918
  self.result_msg = result_msg
22847
- # 明细返回码
22848
- self.sub_code = sub_code
22849
- # 明细返回码描述
22850
- self.sub_msg = sub_msg
22851
- # 预通知返回内容
22852
- self.data = data
22919
+ # 返回对象
22920
+ self.antdigital_withhold_response = antdigital_withhold_response
22853
22921
 
22854
22922
  def validate(self):
22855
- pass
22923
+ if self.antdigital_withhold_response:
22924
+ self.antdigital_withhold_response.validate()
22856
22925
 
22857
22926
  def to_map(self):
22858
22927
  _map = super().to_map()
@@ -22866,12 +22935,8 @@ class NotifyDigitalkeyWithholdResponse(TeaModel):
22866
22935
  result['result_code'] = self.result_code
22867
22936
  if self.result_msg is not None:
22868
22937
  result['result_msg'] = self.result_msg
22869
- if self.sub_code is not None:
22870
- result['sub_code'] = self.sub_code
22871
- if self.sub_msg is not None:
22872
- result['sub_msg'] = self.sub_msg
22873
- if self.data is not None:
22874
- result['data'] = self.data
22938
+ if self.antdigital_withhold_response is not None:
22939
+ result['antdigital_withhold_response'] = self.antdigital_withhold_response.to_map()
22875
22940
  return result
22876
22941
 
22877
22942
  def from_map(self, m: dict = None):
@@ -22882,12 +22947,9 @@ class NotifyDigitalkeyWithholdResponse(TeaModel):
22882
22947
  self.result_code = m.get('result_code')
22883
22948
  if m.get('result_msg') is not None:
22884
22949
  self.result_msg = m.get('result_msg')
22885
- if m.get('sub_code') is not None:
22886
- self.sub_code = m.get('sub_code')
22887
- if m.get('sub_msg') is not None:
22888
- self.sub_msg = m.get('sub_msg')
22889
- if m.get('data') is not None:
22890
- self.data = m.get('data')
22950
+ if m.get('antdigital_withhold_response') is not None:
22951
+ temp_model = AntdigitalWithHoldResponse()
22952
+ self.antdigital_withhold_response = temp_model.from_map(m['antdigital_withhold_response'])
22891
22953
  return self
22892
22954
 
22893
22955
 
@@ -36511,9 +36573,10 @@ class ExecThingServiceRequest(TeaModel):
36511
36573
  product_instance_id: str = None,
36512
36574
  scene: str = None,
36513
36575
  identifier: str = None,
36514
- trustiot_entity_id: int = None,
36515
- device_id: str = None,
36576
+ entity_id_list: List[str] = None,
36516
36577
  input_data: str = None,
36578
+ entity_type: str = None,
36579
+ use_trustiot_id: bool = None,
36517
36580
  ):
36518
36581
  # OAuth模式下的授权token
36519
36582
  self.auth_token = auth_token
@@ -36523,16 +36586,20 @@ class ExecThingServiceRequest(TeaModel):
36523
36586
  # 服务标识
36524
36587
  self.identifier = identifier
36525
36588
  # 可信设备唯一ID
36526
- self.trustiot_entity_id = trustiot_entity_id
36527
- # 设备编号/资产ID
36528
- self.device_id = device_id
36589
+ self.entity_id_list = entity_id_list
36529
36590
  # 物模型服务入参
36530
36591
  self.input_data = input_data
36592
+ # 实体类型
36593
+ self.entity_type = entity_type
36594
+ # 是否使用trustiotId
36595
+ self.use_trustiot_id = use_trustiot_id
36531
36596
 
36532
36597
  def validate(self):
36533
36598
  self.validate_required(self.scene, 'scene')
36534
36599
  self.validate_required(self.identifier, 'identifier')
36535
- self.validate_required(self.input_data, 'input_data')
36600
+ self.validate_required(self.entity_id_list, 'entity_id_list')
36601
+ self.validate_required(self.entity_type, 'entity_type')
36602
+ self.validate_required(self.use_trustiot_id, 'use_trustiot_id')
36536
36603
 
36537
36604
  def to_map(self):
36538
36605
  _map = super().to_map()
@@ -36548,12 +36615,14 @@ class ExecThingServiceRequest(TeaModel):
36548
36615
  result['scene'] = self.scene
36549
36616
  if self.identifier is not None:
36550
36617
  result['identifier'] = self.identifier
36551
- if self.trustiot_entity_id is not None:
36552
- result['trustiot_entity_id'] = self.trustiot_entity_id
36553
- if self.device_id is not None:
36554
- result['device_id'] = self.device_id
36618
+ if self.entity_id_list is not None:
36619
+ result['entity_id_list'] = self.entity_id_list
36555
36620
  if self.input_data is not None:
36556
36621
  result['input_data'] = self.input_data
36622
+ if self.entity_type is not None:
36623
+ result['entity_type'] = self.entity_type
36624
+ if self.use_trustiot_id is not None:
36625
+ result['use_trustiot_id'] = self.use_trustiot_id
36557
36626
  return result
36558
36627
 
36559
36628
  def from_map(self, m: dict = None):
@@ -36566,12 +36635,14 @@ class ExecThingServiceRequest(TeaModel):
36566
36635
  self.scene = m.get('scene')
36567
36636
  if m.get('identifier') is not None:
36568
36637
  self.identifier = m.get('identifier')
36569
- if m.get('trustiot_entity_id') is not None:
36570
- self.trustiot_entity_id = m.get('trustiot_entity_id')
36571
- if m.get('device_id') is not None:
36572
- self.device_id = m.get('device_id')
36638
+ if m.get('entity_id_list') is not None:
36639
+ self.entity_id_list = m.get('entity_id_list')
36573
36640
  if m.get('input_data') is not None:
36574
36641
  self.input_data = m.get('input_data')
36642
+ if m.get('entity_type') is not None:
36643
+ self.entity_type = m.get('entity_type')
36644
+ if m.get('use_trustiot_id') is not None:
36645
+ self.use_trustiot_id = m.get('use_trustiot_id')
36575
36646
  return self
36576
36647
 
36577
36648
 
@@ -24,7 +24,7 @@ from setuptools import setup, find_packages
24
24
  """
25
25
  setup module for antchain_bot.
26
26
 
27
- Created on 05/06/2024
27
+ Created on 13/06/2024
28
28
 
29
29
  @author: Ant Chain SDK
30
30
  """
@@ -1 +0,0 @@
1
- __version__ = '1.11.3'
File without changes
File without changes
File without changes
File without changes