samsara-api 4.2.0__py3-none-any.whl → 4.3.0__py3-none-any.whl
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.
- samsara/__init__.py +69 -9
- samsara/addresses/client.py +7 -14
- samsara/addresses/raw_client.py +7 -11
- samsara/alerts/client.py +2 -10
- samsara/alerts/raw_client.py +180 -180
- samsara/assets/__init__.py +3 -3
- samsara/assets/client.py +14 -45
- samsara/assets/raw_client.py +156 -160
- samsara/assets/types/__init__.py +3 -3
- samsara/assets/types/{assets_list_request_type.py → list_assets_request_type.py} +1 -1
- samsara/attributes/client.py +0 -4
- samsara/beta_ap_is/client.py +137 -187
- samsara/beta_ap_is/raw_client.py +2035 -1702
- samsara/carrier_proposed_assignments/client.py +2 -10
- samsara/client.py +5 -0
- samsara/coaching/client.py +2 -22
- samsara/coaching/raw_client.py +108 -108
- samsara/contacts/client.py +2 -8
- samsara/core/__init__.py +5 -0
- samsara/core/client_wrapper.py +18 -10
- samsara/core/custom_pagination.py +152 -0
- samsara/core/http_client.py +176 -90
- samsara/core/http_sse/__init__.py +42 -0
- samsara/core/http_sse/_api.py +112 -0
- samsara/core/http_sse/_decoders.py +61 -0
- samsara/core/http_sse/_exceptions.py +7 -0
- samsara/core/http_sse/_models.py +17 -0
- samsara/core/pagination.py +14 -14
- samsara/core/pydantic_utilities.py +3 -1
- samsara/documents/client.py +2 -12
- samsara/documents/raw_client.py +180 -180
- samsara/driver_qr_codes/raw_client.py +108 -108
- samsara/driver_vehicle_assignments/client.py +0 -12
- samsara/driver_vehicle_assignments/raw_client.py +144 -144
- samsara/drivers/__init__.py +3 -3
- samsara/drivers/client.py +12 -23
- samsara/drivers/raw_client.py +48 -52
- samsara/drivers/types/__init__.py +3 -3
- samsara/drivers/types/{drivers_list_request_driver_activation_status.py → list_drivers_request_driver_activation_status.py} +1 -1
- samsara/equipment/client.py +6 -22
- samsara/errors/bad_gateway_error.py +1 -1
- samsara/errors/gateway_timeout_error.py +1 -1
- samsara/errors/internal_server_error.py +1 -1
- samsara/errors/method_not_allowed_error.py +1 -1
- samsara/errors/not_found_error.py +1 -1
- samsara/errors/not_implemented_error.py +1 -1
- samsara/errors/service_unavailable_error.py +1 -1
- samsara/errors/too_many_requests_error.py +1 -1
- samsara/errors/unauthorized_error.py +1 -1
- samsara/forms/__init__.py +9 -3
- samsara/forms/client.py +17 -10
- samsara/forms/raw_client.py +265 -254
- samsara/forms/types/__init__.py +6 -2
- samsara/forms/types/form_submissions_post_form_submission_request_body_status.py +5 -0
- samsara/fuel_and_energy/client.py +0 -30
- samsara/fuel_and_energy/raw_client.py +180 -180
- samsara/gateways/client.py +2 -6
- samsara/gateways/raw_client.py +108 -108
- samsara/hours_of_service/__init__.py +6 -3
- samsara/hours_of_service/client.py +13 -52
- samsara/hours_of_service/raw_client.py +77 -76
- samsara/hours_of_service/types/__init__.py +4 -2
- samsara/hours_of_service/types/get_hos_daily_logs_request_expand.py +5 -0
- samsara/hubs/client.py +2 -94
- samsara/hubs/raw_client.py +216 -216
- samsara/idling/client.py +0 -18
- samsara/idling/raw_client.py +36 -36
- samsara/ifta/client.py +4 -34
- samsara/ifta/raw_client.py +144 -144
- samsara/industrial/client.py +12 -56
- samsara/industrial/raw_client.py +40 -48
- samsara/issues/client.py +0 -4
- samsara/issues/raw_client.py +108 -108
- samsara/legacy_ap_is/client.py +4 -56
- samsara/legacy_ap_is/raw_client.py +108 -108
- samsara/live_sharing_links/client.py +2 -10
- samsara/live_sharing_links/raw_client.py +144 -144
- samsara/location_and_speed/client.py +2 -20
- samsara/location_and_speed/raw_client.py +36 -36
- samsara/maintenance/__init__.py +3 -3
- samsara/maintenance/client.py +15 -30
- samsara/maintenance/raw_client.py +191 -182
- samsara/maintenance/types/__init__.py +6 -2
- samsara/maintenance/types/create_dvir_request_type.py +5 -0
- samsara/media/client.py +0 -4
- samsara/media/raw_client.py +108 -108
- samsara/messages/client.py +2 -8
- samsara/plans/client.py +0 -21
- samsara/plans/raw_client.py +72 -72
- samsara/preview_ap_is/client.py +0 -140
- samsara/preview_ap_is/raw_client.py +72 -430
- samsara/route_events/client.py +2 -12
- samsara/route_events/raw_client.py +36 -36
- samsara/routes/__init__.py +30 -0
- samsara/routes/client.py +7 -35
- samsara/routes/raw_client.py +257 -256
- samsara/routes/types/__init__.py +34 -0
- samsara/routes/types/get_routes_feed_request_expand.py +5 -0
- samsara/safety/client.py +2 -10
- samsara/safety/raw_client.py +36 -36
- samsara/settings/raw_client.py +180 -180
- samsara/speeding_intervals/raw_client.py +36 -36
- samsara/tachograph_eu_only/client.py +0 -6
- samsara/tags/client.py +2 -8
- samsara/trailer_assignments/client.py +2 -18
- samsara/trailers/client.py +2 -12
- samsara/trailers/raw_client.py +180 -180
- samsara/types/__init__.py +54 -0
- samsara/types/create_routes_stop_request_object_request_body.py +7 -0
- samsara/types/driver_assignment_object_response_body.py +2 -1
- samsara/types/driver_assignment_object_response_body_assignment_type.py +5 -0
- samsara/types/driver_external_ids.py +1 -1
- samsara/types/forms_approval_config_object_response_body.py +2 -1
- samsara/types/forms_approval_config_object_response_body_type.py +5 -0
- samsara/types/fuel_level_trigger_details_object_request_body.py +2 -1
- samsara/types/fuel_level_trigger_details_object_request_body_operation.py +5 -0
- samsara/types/fuel_level_trigger_details_object_response_body.py +4 -1
- samsara/types/fuel_level_trigger_details_object_response_body_operation.py +5 -0
- samsara/types/idling_event_object_v_20251023_response_body.py +4 -3
- samsara/types/idling_event_object_v_20251023_response_body_pto_state.py +5 -0
- samsara/types/patch_issue_request_body_assigned_to_request_body.py +2 -1
- samsara/types/patch_issue_request_body_assigned_to_request_body_type.py +5 -0
- samsara/types/reading_datapoint_request_body.py +5 -4
- samsara/types/reading_datapoint_request_body_entity_type.py +5 -0
- samsara/types/reading_history_response_body.py +1 -1
- samsara/types/reading_snapshot_response_body.py +1 -1
- samsara/types/resolved_by.py +2 -1
- samsara/types/resolved_by_type.py +5 -0
- samsara/types/route_feed_object_response_body.py +2 -1
- samsara/types/route_feed_object_response_body_type.py +5 -0
- samsara/types/route_settings_request_body.py +8 -0
- samsara/types/route_settings_request_body_sequencing_method.py +7 -0
- samsara/types/route_settings_response_body.py +8 -0
- samsara/types/route_settings_response_body_sequencing_method.py +7 -0
- samsara/types/route_stop_details_object_response_body.py +2 -1
- samsara/types/route_stop_details_object_response_body_type.py +5 -0
- samsara/types/routes_stop_response_object_response_body.py +7 -0
- samsara/types/training_learner_object_response_body.py +2 -1
- samsara/types/training_learner_object_response_body_type.py +5 -0
- samsara/types/update_routes_stop_request_object_request_body.py +7 -0
- samsara/types/vehicle_assignment_object_response_body.py +4 -3
- samsara/types/vehicle_assignment_object_response_body_assignment_type.py +5 -0
- samsara/types/vehicle_external_ids.py +1 -1
- samsara/types/work_order_money_object_request_body.py +2 -1
- samsara/types/work_order_money_object_request_body_currency.py +5 -0
- samsara/types/work_order_money_object_response_body.py +2 -1
- samsara/types/work_order_money_object_response_body_currency.py +5 -0
- samsara/users/client.py +4 -16
- samsara/vehicle_locations/client.py +4 -16
- samsara/vehicles/client.py +7 -22
- samsara/vehicles/raw_client.py +43 -47
- samsara/webhooks/client.py +2 -10
- samsara/webhooks/raw_client.py +180 -180
- samsara/work_orders/client.py +4 -18
- samsara/work_orders/raw_client.py +216 -216
- {samsara_api-4.2.0.dist-info → samsara_api-4.3.0.dist-info}/METADATA +2 -1
- {samsara_api-4.2.0.dist-info → samsara_api-4.3.0.dist-info}/RECORD +159 -132
- {samsara_api-4.2.0.dist-info → samsara_api-4.3.0.dist-info}/LICENSE +0 -0
- {samsara_api-4.2.0.dist-info → samsara_api-4.3.0.dist-info}/WHEEL +0 -0
samsara/idling/client.py
CHANGED
|
@@ -121,15 +121,6 @@ class IdlingClient:
|
|
|
121
121
|
client.idling.get_idling_events(
|
|
122
122
|
start_time="startTime",
|
|
123
123
|
end_time="endTime",
|
|
124
|
-
pto_state="active",
|
|
125
|
-
min_air_temperature_millicelsius=1,
|
|
126
|
-
max_air_temperature_millicelsius=1,
|
|
127
|
-
exclude_events_with_unknown_air_temperature=True,
|
|
128
|
-
min_duration_milliseconds=1,
|
|
129
|
-
max_duration_milliseconds=1,
|
|
130
|
-
include_external_ids=True,
|
|
131
|
-
after="after",
|
|
132
|
-
limit=1,
|
|
133
124
|
)
|
|
134
125
|
"""
|
|
135
126
|
_response = self._raw_client.get_idling_events(
|
|
@@ -270,15 +261,6 @@ class AsyncIdlingClient:
|
|
|
270
261
|
await client.idling.get_idling_events(
|
|
271
262
|
start_time="startTime",
|
|
272
263
|
end_time="endTime",
|
|
273
|
-
pto_state="active",
|
|
274
|
-
min_air_temperature_millicelsius=1,
|
|
275
|
-
max_air_temperature_millicelsius=1,
|
|
276
|
-
exclude_events_with_unknown_air_temperature=True,
|
|
277
|
-
min_duration_milliseconds=1,
|
|
278
|
-
max_duration_milliseconds=1,
|
|
279
|
-
include_external_ids=True,
|
|
280
|
-
after="after",
|
|
281
|
-
limit=1,
|
|
282
264
|
)
|
|
283
265
|
|
|
284
266
|
|
samsara/idling/raw_client.py
CHANGED
|
@@ -148,9 +148,9 @@ class RawIdlingClient:
|
|
|
148
148
|
raise UnauthorizedError(
|
|
149
149
|
headers=dict(_response.headers),
|
|
150
150
|
body=typing.cast(
|
|
151
|
-
typing.
|
|
151
|
+
typing.Any,
|
|
152
152
|
parse_obj_as(
|
|
153
|
-
type_=typing.
|
|
153
|
+
type_=typing.Any, # type: ignore
|
|
154
154
|
object_=_response.json(),
|
|
155
155
|
),
|
|
156
156
|
),
|
|
@@ -159,9 +159,9 @@ class RawIdlingClient:
|
|
|
159
159
|
raise NotFoundError(
|
|
160
160
|
headers=dict(_response.headers),
|
|
161
161
|
body=typing.cast(
|
|
162
|
-
typing.
|
|
162
|
+
typing.Any,
|
|
163
163
|
parse_obj_as(
|
|
164
|
-
type_=typing.
|
|
164
|
+
type_=typing.Any, # type: ignore
|
|
165
165
|
object_=_response.json(),
|
|
166
166
|
),
|
|
167
167
|
),
|
|
@@ -170,9 +170,9 @@ class RawIdlingClient:
|
|
|
170
170
|
raise MethodNotAllowedError(
|
|
171
171
|
headers=dict(_response.headers),
|
|
172
172
|
body=typing.cast(
|
|
173
|
-
typing.
|
|
173
|
+
typing.Any,
|
|
174
174
|
parse_obj_as(
|
|
175
|
-
type_=typing.
|
|
175
|
+
type_=typing.Any, # type: ignore
|
|
176
176
|
object_=_response.json(),
|
|
177
177
|
),
|
|
178
178
|
),
|
|
@@ -181,9 +181,9 @@ class RawIdlingClient:
|
|
|
181
181
|
raise TooManyRequestsError(
|
|
182
182
|
headers=dict(_response.headers),
|
|
183
183
|
body=typing.cast(
|
|
184
|
-
typing.
|
|
184
|
+
typing.Any,
|
|
185
185
|
parse_obj_as(
|
|
186
|
-
type_=typing.
|
|
186
|
+
type_=typing.Any, # type: ignore
|
|
187
187
|
object_=_response.json(),
|
|
188
188
|
),
|
|
189
189
|
),
|
|
@@ -192,9 +192,9 @@ class RawIdlingClient:
|
|
|
192
192
|
raise InternalServerError(
|
|
193
193
|
headers=dict(_response.headers),
|
|
194
194
|
body=typing.cast(
|
|
195
|
-
typing.
|
|
195
|
+
typing.Any,
|
|
196
196
|
parse_obj_as(
|
|
197
|
-
type_=typing.
|
|
197
|
+
type_=typing.Any, # type: ignore
|
|
198
198
|
object_=_response.json(),
|
|
199
199
|
),
|
|
200
200
|
),
|
|
@@ -203,9 +203,9 @@ class RawIdlingClient:
|
|
|
203
203
|
raise NotImplementedError(
|
|
204
204
|
headers=dict(_response.headers),
|
|
205
205
|
body=typing.cast(
|
|
206
|
-
typing.
|
|
206
|
+
typing.Any,
|
|
207
207
|
parse_obj_as(
|
|
208
|
-
type_=typing.
|
|
208
|
+
type_=typing.Any, # type: ignore
|
|
209
209
|
object_=_response.json(),
|
|
210
210
|
),
|
|
211
211
|
),
|
|
@@ -214,9 +214,9 @@ class RawIdlingClient:
|
|
|
214
214
|
raise BadGatewayError(
|
|
215
215
|
headers=dict(_response.headers),
|
|
216
216
|
body=typing.cast(
|
|
217
|
-
typing.
|
|
217
|
+
typing.Any,
|
|
218
218
|
parse_obj_as(
|
|
219
|
-
type_=typing.
|
|
219
|
+
type_=typing.Any, # type: ignore
|
|
220
220
|
object_=_response.json(),
|
|
221
221
|
),
|
|
222
222
|
),
|
|
@@ -225,9 +225,9 @@ class RawIdlingClient:
|
|
|
225
225
|
raise ServiceUnavailableError(
|
|
226
226
|
headers=dict(_response.headers),
|
|
227
227
|
body=typing.cast(
|
|
228
|
-
typing.
|
|
228
|
+
typing.Any,
|
|
229
229
|
parse_obj_as(
|
|
230
|
-
type_=typing.
|
|
230
|
+
type_=typing.Any, # type: ignore
|
|
231
231
|
object_=_response.json(),
|
|
232
232
|
),
|
|
233
233
|
),
|
|
@@ -236,9 +236,9 @@ class RawIdlingClient:
|
|
|
236
236
|
raise GatewayTimeoutError(
|
|
237
237
|
headers=dict(_response.headers),
|
|
238
238
|
body=typing.cast(
|
|
239
|
-
typing.
|
|
239
|
+
typing.Any,
|
|
240
240
|
parse_obj_as(
|
|
241
|
-
type_=typing.
|
|
241
|
+
type_=typing.Any, # type: ignore
|
|
242
242
|
object_=_response.json(),
|
|
243
243
|
),
|
|
244
244
|
),
|
|
@@ -376,9 +376,9 @@ class AsyncRawIdlingClient:
|
|
|
376
376
|
raise UnauthorizedError(
|
|
377
377
|
headers=dict(_response.headers),
|
|
378
378
|
body=typing.cast(
|
|
379
|
-
typing.
|
|
379
|
+
typing.Any,
|
|
380
380
|
parse_obj_as(
|
|
381
|
-
type_=typing.
|
|
381
|
+
type_=typing.Any, # type: ignore
|
|
382
382
|
object_=_response.json(),
|
|
383
383
|
),
|
|
384
384
|
),
|
|
@@ -387,9 +387,9 @@ class AsyncRawIdlingClient:
|
|
|
387
387
|
raise NotFoundError(
|
|
388
388
|
headers=dict(_response.headers),
|
|
389
389
|
body=typing.cast(
|
|
390
|
-
typing.
|
|
390
|
+
typing.Any,
|
|
391
391
|
parse_obj_as(
|
|
392
|
-
type_=typing.
|
|
392
|
+
type_=typing.Any, # type: ignore
|
|
393
393
|
object_=_response.json(),
|
|
394
394
|
),
|
|
395
395
|
),
|
|
@@ -398,9 +398,9 @@ class AsyncRawIdlingClient:
|
|
|
398
398
|
raise MethodNotAllowedError(
|
|
399
399
|
headers=dict(_response.headers),
|
|
400
400
|
body=typing.cast(
|
|
401
|
-
typing.
|
|
401
|
+
typing.Any,
|
|
402
402
|
parse_obj_as(
|
|
403
|
-
type_=typing.
|
|
403
|
+
type_=typing.Any, # type: ignore
|
|
404
404
|
object_=_response.json(),
|
|
405
405
|
),
|
|
406
406
|
),
|
|
@@ -409,9 +409,9 @@ class AsyncRawIdlingClient:
|
|
|
409
409
|
raise TooManyRequestsError(
|
|
410
410
|
headers=dict(_response.headers),
|
|
411
411
|
body=typing.cast(
|
|
412
|
-
typing.
|
|
412
|
+
typing.Any,
|
|
413
413
|
parse_obj_as(
|
|
414
|
-
type_=typing.
|
|
414
|
+
type_=typing.Any, # type: ignore
|
|
415
415
|
object_=_response.json(),
|
|
416
416
|
),
|
|
417
417
|
),
|
|
@@ -420,9 +420,9 @@ class AsyncRawIdlingClient:
|
|
|
420
420
|
raise InternalServerError(
|
|
421
421
|
headers=dict(_response.headers),
|
|
422
422
|
body=typing.cast(
|
|
423
|
-
typing.
|
|
423
|
+
typing.Any,
|
|
424
424
|
parse_obj_as(
|
|
425
|
-
type_=typing.
|
|
425
|
+
type_=typing.Any, # type: ignore
|
|
426
426
|
object_=_response.json(),
|
|
427
427
|
),
|
|
428
428
|
),
|
|
@@ -431,9 +431,9 @@ class AsyncRawIdlingClient:
|
|
|
431
431
|
raise NotImplementedError(
|
|
432
432
|
headers=dict(_response.headers),
|
|
433
433
|
body=typing.cast(
|
|
434
|
-
typing.
|
|
434
|
+
typing.Any,
|
|
435
435
|
parse_obj_as(
|
|
436
|
-
type_=typing.
|
|
436
|
+
type_=typing.Any, # type: ignore
|
|
437
437
|
object_=_response.json(),
|
|
438
438
|
),
|
|
439
439
|
),
|
|
@@ -442,9 +442,9 @@ class AsyncRawIdlingClient:
|
|
|
442
442
|
raise BadGatewayError(
|
|
443
443
|
headers=dict(_response.headers),
|
|
444
444
|
body=typing.cast(
|
|
445
|
-
typing.
|
|
445
|
+
typing.Any,
|
|
446
446
|
parse_obj_as(
|
|
447
|
-
type_=typing.
|
|
447
|
+
type_=typing.Any, # type: ignore
|
|
448
448
|
object_=_response.json(),
|
|
449
449
|
),
|
|
450
450
|
),
|
|
@@ -453,9 +453,9 @@ class AsyncRawIdlingClient:
|
|
|
453
453
|
raise ServiceUnavailableError(
|
|
454
454
|
headers=dict(_response.headers),
|
|
455
455
|
body=typing.cast(
|
|
456
|
-
typing.
|
|
456
|
+
typing.Any,
|
|
457
457
|
parse_obj_as(
|
|
458
|
-
type_=typing.
|
|
458
|
+
type_=typing.Any, # type: ignore
|
|
459
459
|
object_=_response.json(),
|
|
460
460
|
),
|
|
461
461
|
),
|
|
@@ -464,9 +464,9 @@ class AsyncRawIdlingClient:
|
|
|
464
464
|
raise GatewayTimeoutError(
|
|
465
465
|
headers=dict(_response.headers),
|
|
466
466
|
body=typing.cast(
|
|
467
|
-
typing.
|
|
467
|
+
typing.Any,
|
|
468
468
|
parse_obj_as(
|
|
469
|
-
type_=typing.
|
|
469
|
+
type_=typing.Any, # type: ignore
|
|
470
470
|
object_=_response.json(),
|
|
471
471
|
),
|
|
472
472
|
),
|
samsara/ifta/client.py
CHANGED
|
@@ -102,14 +102,7 @@ class IftaClient:
|
|
|
102
102
|
token="YOUR_TOKEN",
|
|
103
103
|
)
|
|
104
104
|
client.ifta.get_ifta_jurisdiction_reports(
|
|
105
|
-
year=
|
|
106
|
-
month="January",
|
|
107
|
-
quarter="Q1",
|
|
108
|
-
jurisdictions="jurisdictions",
|
|
109
|
-
fuel_type="Unspecified",
|
|
110
|
-
vehicle_ids="vehicleIds",
|
|
111
|
-
tag_ids="tagIds",
|
|
112
|
-
parent_tag_ids="parentTagIds",
|
|
105
|
+
year=1000000,
|
|
113
106
|
)
|
|
114
107
|
"""
|
|
115
108
|
_response = self._raw_client.get_ifta_jurisdiction_reports(
|
|
@@ -196,15 +189,7 @@ class IftaClient:
|
|
|
196
189
|
token="YOUR_TOKEN",
|
|
197
190
|
)
|
|
198
191
|
client.ifta.get_ifta_vehicle_reports(
|
|
199
|
-
year=
|
|
200
|
-
month="January",
|
|
201
|
-
quarter="Q1",
|
|
202
|
-
jurisdictions="jurisdictions",
|
|
203
|
-
fuel_type="Unspecified",
|
|
204
|
-
vehicle_ids="vehicleIds",
|
|
205
|
-
tag_ids="tagIds",
|
|
206
|
-
parent_tag_ids="parentTagIds",
|
|
207
|
-
after="after",
|
|
192
|
+
year=1000000,
|
|
208
193
|
)
|
|
209
194
|
"""
|
|
210
195
|
_response = self._raw_client.get_ifta_vehicle_reports(
|
|
@@ -416,14 +401,7 @@ class AsyncIftaClient:
|
|
|
416
401
|
|
|
417
402
|
async def main() -> None:
|
|
418
403
|
await client.ifta.get_ifta_jurisdiction_reports(
|
|
419
|
-
year=
|
|
420
|
-
month="January",
|
|
421
|
-
quarter="Q1",
|
|
422
|
-
jurisdictions="jurisdictions",
|
|
423
|
-
fuel_type="Unspecified",
|
|
424
|
-
vehicle_ids="vehicleIds",
|
|
425
|
-
tag_ids="tagIds",
|
|
426
|
-
parent_tag_ids="parentTagIds",
|
|
404
|
+
year=1000000,
|
|
427
405
|
)
|
|
428
406
|
|
|
429
407
|
|
|
@@ -518,15 +496,7 @@ class AsyncIftaClient:
|
|
|
518
496
|
|
|
519
497
|
async def main() -> None:
|
|
520
498
|
await client.ifta.get_ifta_vehicle_reports(
|
|
521
|
-
year=
|
|
522
|
-
month="January",
|
|
523
|
-
quarter="Q1",
|
|
524
|
-
jurisdictions="jurisdictions",
|
|
525
|
-
fuel_type="Unspecified",
|
|
526
|
-
vehicle_ids="vehicleIds",
|
|
527
|
-
tag_ids="tagIds",
|
|
528
|
-
parent_tag_ids="parentTagIds",
|
|
529
|
-
after="after",
|
|
499
|
+
year=1000000,
|
|
530
500
|
)
|
|
531
501
|
|
|
532
502
|
|