pandarus 0.6.12 → 0.7.0
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.
- checksums.yaml +4 -4
- data/lib/pandarus/lti_api.rb +481 -0
- data/lib/pandarus/model_base.rb +5 -4
- data/lib/pandarus/models.rb +4 -96
- data/lib/pandarus/models/account_notification.rb +1 -1
- data/lib/pandarus/models/admin.rb +1 -1
- data/lib/pandarus/models/answer.rb +2 -0
- data/lib/pandarus/models/assignment.rb +7 -0
- data/lib/pandarus/models/assignment_group.rb +2 -0
- data/lib/pandarus/models/{account_authorization_config.rb → authentication_provider.rb} +3 -4
- data/lib/pandarus/models/blueprint_migration.rb +21 -0
- data/lib/pandarus/models/blueprint_template.rb +16 -0
- data/lib/pandarus/models/bookmark.rb +16 -0
- data/lib/pandarus/models/calendar_event.rb +2 -0
- data/lib/pandarus/models/change_record.rb +18 -0
- data/lib/pandarus/models/collaboration.rb +25 -0
- data/lib/pandarus/models/comm_message.rb +1 -0
- data/lib/pandarus/models/conference.rb +1 -1
- data/lib/pandarus/models/conversation.rb +1 -1
- data/lib/pandarus/models/conversation_participant.rb +15 -0
- data/lib/pandarus/models/course.rb +10 -1
- data/lib/pandarus/models/course_epub_export.rb +14 -0
- data/lib/pandarus/models/course_nickname.rb +14 -0
- data/lib/pandarus/models/discussion_topic.rb +4 -1
- data/lib/pandarus/models/enrollment.rb +16 -1
- data/lib/pandarus/models/enrollment_term.rb +2 -0
- data/lib/pandarus/models/epub_export.rb +17 -0
- data/lib/pandarus/models/feature.rb +1 -0
- data/lib/pandarus/models/feature_flag.rb +0 -1
- data/lib/pandarus/models/federated_attributes_config.rb +22 -0
- data/lib/pandarus/models/file.rb +3 -0
- data/lib/pandarus/models/folder.rb +1 -0
- data/lib/pandarus/models/grade_change_event.rb +3 -0
- data/lib/pandarus/models/group.rb +1 -1
- data/lib/pandarus/models/{discovery_url.rb → j_w_t.rb} +2 -2
- data/lib/pandarus/models/lti_assignment.rb +17 -0
- data/lib/pandarus/models/module_item_sequence.rb +1 -1
- data/lib/pandarus/models/originality_report.rb +17 -0
- data/lib/pandarus/models/outcome.rb +1 -0
- data/lib/pandarus/models/outcome_link.rb +2 -0
- data/lib/pandarus/models/page_view.rb +1 -0
- data/lib/pandarus/models/peer_review.rb +20 -0
- data/lib/pandarus/models/planner_note.rb +22 -0
- data/lib/pandarus/models/planner_override.rb +21 -0
- data/lib/pandarus/models/profile.rb +1 -1
- data/lib/pandarus/models/provisional_grade.rb +18 -0
- data/lib/pandarus/models/quiz.rb +1 -0
- data/lib/pandarus/models/quiz_group.rb +18 -0
- data/lib/pandarus/models/quiz_submission_question.rb +1 -0
- data/lib/pandarus/models/report.rb +3 -1
- data/lib/pandarus/models/report_parameters.rb +1 -1
- data/lib/pandarus/models/role.rb +1 -1
- data/lib/pandarus/models/rubric.rb +21 -0
- data/lib/pandarus/models/rubric_assessment.rb +22 -0
- data/lib/pandarus/models/rubric_criteria.rb +2 -1
- data/lib/pandarus/models/rubric_rating.rb +1 -0
- data/lib/pandarus/models/s_s_o_settings.rb +15 -0
- data/lib/pandarus/models/section.rb +1 -0
- data/lib/pandarus/models/shared_brand_config.rb +17 -0
- data/lib/pandarus/models/sis_import.rb +5 -2
- data/lib/pandarus/models/sis_import_counts.rb +3 -0
- data/lib/pandarus/models/submission.rb +6 -0
- data/lib/pandarus/models/submission_comment.rb +1 -0
- data/lib/pandarus/models/submission_history.rb +1 -1
- data/lib/pandarus/models/tool_setting.rb +13 -0
- data/lib/pandarus/models/user.rb +1 -1
- data/lib/pandarus/sis_api.rb +123 -0
- data/lib/pandarus/v1_api.rb +14413 -6581
- data/lib/pandarus/version.rb +1 -1
- data/pandarus.gemspec +8 -8
- data/spec/client_spec.rb +1 -1
- metadata +61 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 94f9a04d724751d6ef2c03963a85cecc4d7fac21
|
4
|
+
data.tar.gz: cf384fc0e85f53264c58dbc8dc8b28910b81c34a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: faae70b6ca3c24f256d2e885ba028f685eca9fdd7e1b9d39dd2955a19260596da864478a594d1becbb35f53c297403794a1f2b00bf447945fb2a17718234c224
|
7
|
+
data.tar.gz: ce13e97743f792125f5970f299201eae9d6d84ebb29d58fc042776f95433b7d18e8dd6f5bf7a721dc2b3281545eb2488b202c7756d984d0e383a73eb75024aaa
|
@@ -0,0 +1,481 @@
|
|
1
|
+
require "pandarus/api_base"
|
2
|
+
require "pandarus/models"
|
3
|
+
|
4
|
+
# This is an autogenerated file. See readme.md
|
5
|
+
module Pandarus
|
6
|
+
class Lti < APIBase
|
7
|
+
|
8
|
+
self.prefix = "https://canvas.instructure.com/api"
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
# Create an Originality Report
|
13
|
+
def create_originality_report(assignment_id,submission_id,originality_report__file_id__,originality_report__originality_score__,opts={})
|
14
|
+
query_param_keys = [
|
15
|
+
|
16
|
+
|
17
|
+
]
|
18
|
+
|
19
|
+
form_param_keys = [
|
20
|
+
:originality_report__file_id__,
|
21
|
+
:originality_report__originality_score__,
|
22
|
+
:originality_report__originality_report_url__,
|
23
|
+
:originality_report__originality_report_file_id__,
|
24
|
+
:originality_report__tool_setting____resource_type_code__,
|
25
|
+
:originality_report__tool_setting____resource_url__,
|
26
|
+
:originality_report__workflow_state__,
|
27
|
+
|
28
|
+
|
29
|
+
]
|
30
|
+
|
31
|
+
# verify existence of params
|
32
|
+
raise "assignment_id is required" if assignment_id.nil?
|
33
|
+
raise "submission_id is required" if submission_id.nil?
|
34
|
+
raise "originality_report__file_id__ is required" if originality_report__file_id__.nil?
|
35
|
+
raise "originality_report__originality_score__ is required" if originality_report__originality_score__.nil?
|
36
|
+
# set default values and merge with input
|
37
|
+
options = underscored_merge_opts(opts,
|
38
|
+
:assignment_id => assignment_id,
|
39
|
+
:submission_id => submission_id,
|
40
|
+
:originality_report__file_id__ => originality_report__file_id__,
|
41
|
+
:originality_report__originality_score__ => originality_report__originality_score__
|
42
|
+
|
43
|
+
)
|
44
|
+
|
45
|
+
# resource path
|
46
|
+
path = path_replace("/lti/assignments/{assignment_id}/submissions/{submission_id}/originality_report",
|
47
|
+
:assignment_id => assignment_id,
|
48
|
+
:submission_id => submission_id)
|
49
|
+
headers = nil
|
50
|
+
form_params = select_params(options, form_param_keys)
|
51
|
+
query_params = select_query_params(options, query_param_keys)
|
52
|
+
|
53
|
+
response = mixed_request(:post, path, query_params, form_params, headers)
|
54
|
+
OriginalityReport.new(response)
|
55
|
+
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
|
60
|
+
# Edit an Originality Report
|
61
|
+
def edit_originality_report_submissions(assignment_id,submission_id,id,opts={})
|
62
|
+
query_param_keys = [
|
63
|
+
|
64
|
+
|
65
|
+
]
|
66
|
+
|
67
|
+
form_param_keys = [
|
68
|
+
:originality_report__originality_score__,
|
69
|
+
:originality_report__originality_report_url__,
|
70
|
+
:originality_report__originality_report_file_id__,
|
71
|
+
:originality_report__tool_setting____resource_type_code__,
|
72
|
+
:originality_report__tool_setting____resource_url__,
|
73
|
+
:originality_report__workflow_state__,
|
74
|
+
|
75
|
+
|
76
|
+
]
|
77
|
+
|
78
|
+
# verify existence of params
|
79
|
+
raise "assignment_id is required" if assignment_id.nil?
|
80
|
+
raise "submission_id is required" if submission_id.nil?
|
81
|
+
raise "id is required" if id.nil?
|
82
|
+
# set default values and merge with input
|
83
|
+
options = underscored_merge_opts(opts,
|
84
|
+
:assignment_id => assignment_id,
|
85
|
+
:submission_id => submission_id,
|
86
|
+
:id => id
|
87
|
+
|
88
|
+
)
|
89
|
+
|
90
|
+
# resource path
|
91
|
+
path = path_replace("/lti/assignments/{assignment_id}/submissions/{submission_id}/originality_report/{id}",
|
92
|
+
:assignment_id => assignment_id,
|
93
|
+
:submission_id => submission_id,
|
94
|
+
:id => id)
|
95
|
+
headers = nil
|
96
|
+
form_params = select_params(options, form_param_keys)
|
97
|
+
query_params = select_query_params(options, query_param_keys)
|
98
|
+
|
99
|
+
response = mixed_request(:put, path, query_params, form_params, headers)
|
100
|
+
OriginalityReport.new(response)
|
101
|
+
|
102
|
+
|
103
|
+
end
|
104
|
+
|
105
|
+
|
106
|
+
# Edit an Originality Report
|
107
|
+
def edit_originality_report_files(assignment_id,file_id,opts={})
|
108
|
+
query_param_keys = [
|
109
|
+
|
110
|
+
|
111
|
+
]
|
112
|
+
|
113
|
+
form_param_keys = [
|
114
|
+
:originality_report__originality_score__,
|
115
|
+
:originality_report__originality_report_url__,
|
116
|
+
:originality_report__originality_report_file_id__,
|
117
|
+
:originality_report__tool_setting____resource_type_code__,
|
118
|
+
:originality_report__tool_setting____resource_url__,
|
119
|
+
:originality_report__workflow_state__,
|
120
|
+
|
121
|
+
|
122
|
+
]
|
123
|
+
|
124
|
+
# verify existence of params
|
125
|
+
raise "assignment_id is required" if assignment_id.nil?
|
126
|
+
raise "file_id is required" if file_id.nil?
|
127
|
+
# set default values and merge with input
|
128
|
+
options = underscored_merge_opts(opts,
|
129
|
+
:assignment_id => assignment_id,
|
130
|
+
:file_id => file_id
|
131
|
+
|
132
|
+
)
|
133
|
+
|
134
|
+
# resource path
|
135
|
+
path = path_replace("/lti/assignments/{assignment_id}/files/{file_id}/originality_report",
|
136
|
+
:assignment_id => assignment_id,
|
137
|
+
:file_id => file_id)
|
138
|
+
headers = nil
|
139
|
+
form_params = select_params(options, form_param_keys)
|
140
|
+
query_params = select_query_params(options, query_param_keys)
|
141
|
+
|
142
|
+
response = mixed_request(:put, path, query_params, form_params, headers)
|
143
|
+
OriginalityReport.new(response)
|
144
|
+
|
145
|
+
|
146
|
+
end
|
147
|
+
|
148
|
+
|
149
|
+
# Show an Originality Report
|
150
|
+
def show_originality_report_submissions(assignment_id,submission_id,id,opts={})
|
151
|
+
query_param_keys = [
|
152
|
+
|
153
|
+
|
154
|
+
]
|
155
|
+
|
156
|
+
form_param_keys = [
|
157
|
+
|
158
|
+
|
159
|
+
]
|
160
|
+
|
161
|
+
# verify existence of params
|
162
|
+
raise "assignment_id is required" if assignment_id.nil?
|
163
|
+
raise "submission_id is required" if submission_id.nil?
|
164
|
+
raise "id is required" if id.nil?
|
165
|
+
# set default values and merge with input
|
166
|
+
options = underscored_merge_opts(opts,
|
167
|
+
:assignment_id => assignment_id,
|
168
|
+
:submission_id => submission_id,
|
169
|
+
:id => id
|
170
|
+
|
171
|
+
)
|
172
|
+
|
173
|
+
# resource path
|
174
|
+
path = path_replace("/lti/assignments/{assignment_id}/submissions/{submission_id}/originality_report/{id}",
|
175
|
+
:assignment_id => assignment_id,
|
176
|
+
:submission_id => submission_id,
|
177
|
+
:id => id)
|
178
|
+
headers = nil
|
179
|
+
form_params = select_params(options, form_param_keys)
|
180
|
+
query_params = select_query_params(options, query_param_keys)
|
181
|
+
|
182
|
+
response = mixed_request(:get, path, query_params, form_params, headers)
|
183
|
+
OriginalityReport.new(response)
|
184
|
+
|
185
|
+
|
186
|
+
end
|
187
|
+
|
188
|
+
|
189
|
+
# Show an Originality Report
|
190
|
+
def show_originality_report_files(assignment_id,file_id,opts={})
|
191
|
+
query_param_keys = [
|
192
|
+
|
193
|
+
|
194
|
+
]
|
195
|
+
|
196
|
+
form_param_keys = [
|
197
|
+
|
198
|
+
|
199
|
+
]
|
200
|
+
|
201
|
+
# verify existence of params
|
202
|
+
raise "assignment_id is required" if assignment_id.nil?
|
203
|
+
raise "file_id is required" if file_id.nil?
|
204
|
+
# set default values and merge with input
|
205
|
+
options = underscored_merge_opts(opts,
|
206
|
+
:assignment_id => assignment_id,
|
207
|
+
:file_id => file_id
|
208
|
+
|
209
|
+
)
|
210
|
+
|
211
|
+
# resource path
|
212
|
+
path = path_replace("/lti/assignments/{assignment_id}/files/{file_id}/originality_report",
|
213
|
+
:assignment_id => assignment_id,
|
214
|
+
:file_id => file_id)
|
215
|
+
headers = nil
|
216
|
+
form_params = select_params(options, form_param_keys)
|
217
|
+
query_params = select_query_params(options, query_param_keys)
|
218
|
+
|
219
|
+
response = mixed_request(:get, path, query_params, form_params, headers)
|
220
|
+
OriginalityReport.new(response)
|
221
|
+
|
222
|
+
|
223
|
+
end
|
224
|
+
|
225
|
+
|
226
|
+
# Get a single assignment (lti)
|
227
|
+
def get_single_assignment_lti(assignment_id,opts={})
|
228
|
+
query_param_keys = [
|
229
|
+
:user_id
|
230
|
+
|
231
|
+
]
|
232
|
+
|
233
|
+
form_param_keys = [
|
234
|
+
|
235
|
+
|
236
|
+
]
|
237
|
+
|
238
|
+
# verify existence of params
|
239
|
+
raise "assignment_id is required" if assignment_id.nil?
|
240
|
+
# set default values and merge with input
|
241
|
+
options = underscored_merge_opts(opts,
|
242
|
+
:assignment_id => assignment_id
|
243
|
+
|
244
|
+
)
|
245
|
+
|
246
|
+
# resource path
|
247
|
+
path = path_replace("/lti/assignments/{assignment_id}",
|
248
|
+
:assignment_id => assignment_id)
|
249
|
+
headers = nil
|
250
|
+
form_params = select_params(options, form_param_keys)
|
251
|
+
query_params = select_query_params(options, query_param_keys)
|
252
|
+
|
253
|
+
response = mixed_request(:get, path, query_params, form_params, headers)
|
254
|
+
LtiAssignment.new(response)
|
255
|
+
|
256
|
+
|
257
|
+
end
|
258
|
+
|
259
|
+
|
260
|
+
# Get a single user (lti)
|
261
|
+
def get_single_user_lti(id,opts={})
|
262
|
+
query_param_keys = [
|
263
|
+
|
264
|
+
|
265
|
+
]
|
266
|
+
|
267
|
+
form_param_keys = [
|
268
|
+
|
269
|
+
|
270
|
+
]
|
271
|
+
|
272
|
+
# verify existence of params
|
273
|
+
raise "id is required" if id.nil?
|
274
|
+
# set default values and merge with input
|
275
|
+
options = underscored_merge_opts(opts,
|
276
|
+
:id => id
|
277
|
+
|
278
|
+
)
|
279
|
+
|
280
|
+
# resource path
|
281
|
+
path = path_replace("/lti/users/{id}",
|
282
|
+
:id => id)
|
283
|
+
headers = nil
|
284
|
+
form_params = select_params(options, form_param_keys)
|
285
|
+
query_params = select_query_params(options, query_param_keys)
|
286
|
+
|
287
|
+
response = mixed_request(:get, path, query_params, form_params, headers)
|
288
|
+
User.new(response)
|
289
|
+
|
290
|
+
|
291
|
+
end
|
292
|
+
|
293
|
+
|
294
|
+
# Create a Webhook Subscription
|
295
|
+
def create_webhook_subscription(submission___context_id__,subscription___context_type__,subscription___event_types__,subscription___format__,subscription___transport_metadata__,subscription___transport_type__,opts={})
|
296
|
+
query_param_keys = [
|
297
|
+
|
298
|
+
|
299
|
+
]
|
300
|
+
|
301
|
+
form_param_keys = [
|
302
|
+
:submission___context_id__,
|
303
|
+
:subscription___context_type__,
|
304
|
+
:subscription___event_types__,
|
305
|
+
:subscription___format__,
|
306
|
+
:subscription___transport_metadata__,
|
307
|
+
:subscription___transport_type__,
|
308
|
+
|
309
|
+
|
310
|
+
]
|
311
|
+
|
312
|
+
# verify existence of params
|
313
|
+
raise "submission___context_id__ is required" if submission___context_id__.nil?
|
314
|
+
raise "subscription___context_type__ is required" if subscription___context_type__.nil?
|
315
|
+
raise "subscription___event_types__ is required" if subscription___event_types__.nil?
|
316
|
+
raise "subscription___format__ is required" if subscription___format__.nil?
|
317
|
+
raise "subscription___transport_metadata__ is required" if subscription___transport_metadata__.nil?
|
318
|
+
raise "subscription___transport_type__ is required" if subscription___transport_type__.nil?
|
319
|
+
# set default values and merge with input
|
320
|
+
options = underscored_merge_opts(opts,
|
321
|
+
:submission___context_id__ => submission___context_id__,
|
322
|
+
:subscription___context_type__ => subscription___context_type__,
|
323
|
+
:subscription___event_types__ => subscription___event_types__,
|
324
|
+
:subscription___format__ => subscription___format__,
|
325
|
+
:subscription___transport_metadata__ => subscription___transport_metadata__,
|
326
|
+
:subscription___transport_type__ => subscription___transport_type__
|
327
|
+
|
328
|
+
)
|
329
|
+
|
330
|
+
# resource path
|
331
|
+
path = path_replace("/lti/subscriptions",
|
332
|
+
)
|
333
|
+
headers = nil
|
334
|
+
form_params = select_params(options, form_param_keys)
|
335
|
+
query_params = select_query_params(options, query_param_keys)
|
336
|
+
|
337
|
+
response = mixed_request(:post, path, query_params, form_params, headers)
|
338
|
+
response
|
339
|
+
|
340
|
+
|
341
|
+
end
|
342
|
+
|
343
|
+
|
344
|
+
# Delete a Webhook Subscription
|
345
|
+
def delete_webhook_subscription(id,opts={})
|
346
|
+
query_param_keys = [
|
347
|
+
|
348
|
+
|
349
|
+
]
|
350
|
+
|
351
|
+
form_param_keys = [
|
352
|
+
|
353
|
+
|
354
|
+
]
|
355
|
+
|
356
|
+
# verify existence of params
|
357
|
+
raise "id is required" if id.nil?
|
358
|
+
# set default values and merge with input
|
359
|
+
options = underscored_merge_opts(opts,
|
360
|
+
:id => id
|
361
|
+
|
362
|
+
)
|
363
|
+
|
364
|
+
# resource path
|
365
|
+
path = path_replace("/lti/subscriptions/{id}",
|
366
|
+
:id => id)
|
367
|
+
headers = nil
|
368
|
+
form_params = select_params(options, form_param_keys)
|
369
|
+
query_params = select_query_params(options, query_param_keys)
|
370
|
+
|
371
|
+
response = mixed_request(:delete, path, query_params, form_params, headers)
|
372
|
+
response
|
373
|
+
|
374
|
+
|
375
|
+
end
|
376
|
+
|
377
|
+
|
378
|
+
# Show a single Webhook Subscription
|
379
|
+
def show_single_webhook_subscription(id,opts={})
|
380
|
+
query_param_keys = [
|
381
|
+
|
382
|
+
|
383
|
+
]
|
384
|
+
|
385
|
+
form_param_keys = [
|
386
|
+
|
387
|
+
|
388
|
+
]
|
389
|
+
|
390
|
+
# verify existence of params
|
391
|
+
raise "id is required" if id.nil?
|
392
|
+
# set default values and merge with input
|
393
|
+
options = underscored_merge_opts(opts,
|
394
|
+
:id => id
|
395
|
+
|
396
|
+
)
|
397
|
+
|
398
|
+
# resource path
|
399
|
+
path = path_replace("/lti/subscriptions/{id}",
|
400
|
+
:id => id)
|
401
|
+
headers = nil
|
402
|
+
form_params = select_params(options, form_param_keys)
|
403
|
+
query_params = select_query_params(options, query_param_keys)
|
404
|
+
|
405
|
+
response = mixed_request(:get, path, query_params, form_params, headers)
|
406
|
+
response
|
407
|
+
|
408
|
+
|
409
|
+
end
|
410
|
+
|
411
|
+
|
412
|
+
# Update a Webhook Subscription
|
413
|
+
def update_webhook_subscription(id,opts={})
|
414
|
+
query_param_keys = [
|
415
|
+
|
416
|
+
|
417
|
+
]
|
418
|
+
|
419
|
+
form_param_keys = [
|
420
|
+
|
421
|
+
|
422
|
+
]
|
423
|
+
|
424
|
+
# verify existence of params
|
425
|
+
raise "id is required" if id.nil?
|
426
|
+
# set default values and merge with input
|
427
|
+
options = underscored_merge_opts(opts,
|
428
|
+
:id => id
|
429
|
+
|
430
|
+
)
|
431
|
+
|
432
|
+
# resource path
|
433
|
+
path = path_replace("/lti/subscriptions/{id}",
|
434
|
+
:id => id)
|
435
|
+
headers = nil
|
436
|
+
form_params = select_params(options, form_param_keys)
|
437
|
+
query_params = select_query_params(options, query_param_keys)
|
438
|
+
|
439
|
+
response = mixed_request(:put, path, query_params, form_params, headers)
|
440
|
+
response
|
441
|
+
|
442
|
+
|
443
|
+
end
|
444
|
+
|
445
|
+
|
446
|
+
# List all Webhook Subscription for a tool proxy
|
447
|
+
def list_all_webhook_subscription_for_tool_proxy(opts={})
|
448
|
+
query_param_keys = [
|
449
|
+
|
450
|
+
|
451
|
+
]
|
452
|
+
|
453
|
+
form_param_keys = [
|
454
|
+
|
455
|
+
|
456
|
+
]
|
457
|
+
|
458
|
+
# set default values and merge with input
|
459
|
+
options = underscored_merge_opts(opts,
|
460
|
+
{}
|
461
|
+
|
462
|
+
|
463
|
+
)
|
464
|
+
|
465
|
+
# resource path
|
466
|
+
path = path_replace("/lti/subscriptions",
|
467
|
+
)
|
468
|
+
headers = nil
|
469
|
+
form_params = select_params(options, form_param_keys)
|
470
|
+
query_params = select_query_params(options, query_param_keys)
|
471
|
+
|
472
|
+
response = mixed_request(:get, path, query_params, form_params, headers)
|
473
|
+
response
|
474
|
+
|
475
|
+
|
476
|
+
end
|
477
|
+
|
478
|
+
|
479
|
+
end
|
480
|
+
end
|
481
|
+
|