001package org.hl7.fhir.dstu3.model.codesystems; 002 003/*- 004 * #%L 005 * org.hl7.fhir.dstu3 006 * %% 007 * Copyright (C) 2014 - 2019 Health Level 7 008 * %% 009 * Licensed under the Apache License, Version 2.0 (the "License"); 010 * you may not use this file except in compliance with the License. 011 * You may obtain a copy of the License at 012 * 013 * http://www.apache.org/licenses/LICENSE-2.0 014 * 015 * Unless required by applicable law or agreed to in writing, software 016 * distributed under the License is distributed on an "AS IS" BASIS, 017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 018 * See the License for the specific language governing permissions and 019 * limitations under the License. 020 * #L% 021 */ 022 023 024/* 025 Copyright (c) 2011+, HL7, Inc. 026 All rights reserved. 027 028 Redistribution and use in source and binary forms, with or without modification, 029 are permitted provided that the following conditions are met: 030 031 * Redistributions of source code must retain the above copyright notice, this 032 list of conditions and the following disclaimer. 033 * Redistributions in binary form must reproduce the above copyright notice, 034 this list of conditions and the following disclaimer in the documentation 035 and/or other materials provided with the distribution. 036 * Neither the name of HL7 nor the names of its contributors may be used to 037 endorse or promote products derived from this software without specific 038 prior written permission. 039 040 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 041 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 042 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 043 IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 044 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 045 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 046 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 047 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 048 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 049 POSSIBILITY OF SUCH DAMAGE. 050 051*/ 052 053// Generated on Sat, Mar 25, 2017 21:03-0400 for FHIR v3.0.0 054 055 056import org.hl7.fhir.exceptions.FHIRException; 057 058public enum OperationOutcome { 059 060 /** 061 * null 062 */ 063 MSGAUTHREQUIRED, 064 /** 065 * null 066 */ 067 MSGBADFORMAT, 068 /** 069 * null 070 */ 071 MSGBADSYNTAX, 072 /** 073 * null 074 */ 075 MSGCANTPARSECONTENT, 076 /** 077 * null 078 */ 079 MSGCANTPARSEROOT, 080 /** 081 * null 082 */ 083 MSGCREATED, 084 /** 085 * null 086 */ 087 MSGDATEFORMAT, 088 /** 089 * null 090 */ 091 MSGDELETED, 092 /** 093 * null 094 */ 095 MSGDELETEDDONE, 096 /** 097 * null 098 */ 099 MSGDELETEDID, 100 /** 101 * null 102 */ 103 MSGDUPLICATEID, 104 /** 105 * null 106 */ 107 MSGERRORPARSING, 108 /** 109 * null 110 */ 111 MSGIDINVALID, 112 /** 113 * null 114 */ 115 MSGIDTOOLONG, 116 /** 117 * null 118 */ 119 MSGINVALIDID, 120 /** 121 * null 122 */ 123 MSGJSONOBJECT, 124 /** 125 * null 126 */ 127 MSGLOCALFAIL, 128 /** 129 * null 130 */ 131 MSGNOMATCH, 132 /** 133 * null 134 */ 135 MSGNOEXIST, 136 /** 137 * null 138 */ 139 MSGNOMODULE, 140 /** 141 * null 142 */ 143 MSGNOSUMMARY, 144 /** 145 * null 146 */ 147 MSGOPNOTALLOWED, 148 /** 149 * null 150 */ 151 MSGPARAMCHAINED, 152 /** 153 * null 154 */ 155 MSGPARAMNOREPEAT, 156 /** 157 * null 158 */ 159 MSGPARAMUNKNOWN, 160 /** 161 * null 162 */ 163 MSGPARAMINVALID, 164 /** 165 * null 166 */ 167 MSGPARAMMODIFIERINVALID, 168 /** 169 * null 170 */ 171 MSGRESOURCEEXAMPLEPROTECTED, 172 /** 173 * null 174 */ 175 MSGRESOURCEIDFAIL, 176 /** 177 * null 178 */ 179 MSGRESOURCENOTALLOWED, 180 /** 181 * null 182 */ 183 MSGRESOURCEREQUIRED, 184 /** 185 * null 186 */ 187 MSGRESOURCEIDMISMATCH, 188 /** 189 * null 190 */ 191 MSGRESOURCEIDMISSING, 192 /** 193 * null 194 */ 195 MSGRESOURCETYPEMISMATCH, 196 /** 197 * null 198 */ 199 MSGSORTUNKNOWN, 200 /** 201 * null 202 */ 203 MSGTRANSACTIONDUPLICATEID, 204 /** 205 * null 206 */ 207 MSGTRANSACTIONMISSINGID, 208 /** 209 * null 210 */ 211 MSGUNHANDLEDNODETYPE, 212 /** 213 * null 214 */ 215 MSGUNKNOWNCONTENT, 216 /** 217 * null 218 */ 219 MSGUNKNOWNOPERATION, 220 /** 221 * null 222 */ 223 MSGUNKNOWNTYPE, 224 /** 225 * null 226 */ 227 MSGUPDATED, 228 /** 229 * null 230 */ 231 MSGVERSIONAWARE, 232 /** 233 * null 234 */ 235 MSGVERSIONAWARECONFLICT, 236 /** 237 * null 238 */ 239 MSGVERSIONAWAREURL, 240 /** 241 * null 242 */ 243 MSGWRONGNS, 244 /** 245 * null 246 */ 247 SEARCHMULTIPLE, 248 /** 249 * null 250 */ 251 UPDATEMULTIPLEMATCHES, 252 /** 253 * null 254 */ 255 DELETEMULTIPLEMATCHES, 256 /** 257 * null 258 */ 259 SEARCHNONE, 260 /** 261 * added to help the parsers 262 */ 263 NULL; 264 public static OperationOutcome fromCode(String codeString) throws FHIRException { 265 if (codeString == null || "".equals(codeString)) 266 return null; 267 if ("MSG_AUTH_REQUIRED".equals(codeString)) 268 return MSGAUTHREQUIRED; 269 if ("MSG_BAD_FORMAT".equals(codeString)) 270 return MSGBADFORMAT; 271 if ("MSG_BAD_SYNTAX".equals(codeString)) 272 return MSGBADSYNTAX; 273 if ("MSG_CANT_PARSE_CONTENT".equals(codeString)) 274 return MSGCANTPARSECONTENT; 275 if ("MSG_CANT_PARSE_ROOT".equals(codeString)) 276 return MSGCANTPARSEROOT; 277 if ("MSG_CREATED".equals(codeString)) 278 return MSGCREATED; 279 if ("MSG_DATE_FORMAT".equals(codeString)) 280 return MSGDATEFORMAT; 281 if ("MSG_DELETED".equals(codeString)) 282 return MSGDELETED; 283 if ("MSG_DELETED_DONE".equals(codeString)) 284 return MSGDELETEDDONE; 285 if ("MSG_DELETED_ID".equals(codeString)) 286 return MSGDELETEDID; 287 if ("MSG_DUPLICATE_ID".equals(codeString)) 288 return MSGDUPLICATEID; 289 if ("MSG_ERROR_PARSING".equals(codeString)) 290 return MSGERRORPARSING; 291 if ("MSG_ID_INVALID".equals(codeString)) 292 return MSGIDINVALID; 293 if ("MSG_ID_TOO_LONG".equals(codeString)) 294 return MSGIDTOOLONG; 295 if ("MSG_INVALID_ID".equals(codeString)) 296 return MSGINVALIDID; 297 if ("MSG_JSON_OBJECT".equals(codeString)) 298 return MSGJSONOBJECT; 299 if ("MSG_LOCAL_FAIL".equals(codeString)) 300 return MSGLOCALFAIL; 301 if ("MSG_NO_MATCH".equals(codeString)) 302 return MSGNOMATCH; 303 if ("MSG_NO_EXIST".equals(codeString)) 304 return MSGNOEXIST; 305 if ("MSG_NO_MODULE".equals(codeString)) 306 return MSGNOMODULE; 307 if ("MSG_NO_SUMMARY".equals(codeString)) 308 return MSGNOSUMMARY; 309 if ("MSG_OP_NOT_ALLOWED".equals(codeString)) 310 return MSGOPNOTALLOWED; 311 if ("MSG_PARAM_CHAINED".equals(codeString)) 312 return MSGPARAMCHAINED; 313 if ("MSG_PARAM_NO_REPEAT".equals(codeString)) 314 return MSGPARAMNOREPEAT; 315 if ("MSG_PARAM_UNKNOWN".equals(codeString)) 316 return MSGPARAMUNKNOWN; 317 if ("MSG_PARAM_INVALID".equals(codeString)) 318 return MSGPARAMINVALID; 319 if ("MSG_PARAM_MODIFIER_INVALID".equals(codeString)) 320 return MSGPARAMMODIFIERINVALID; 321 if ("MSG_RESOURCE_EXAMPLE_PROTECTED".equals(codeString)) 322 return MSGRESOURCEEXAMPLEPROTECTED; 323 if ("MSG_RESOURCE_ID_FAIL".equals(codeString)) 324 return MSGRESOURCEIDFAIL; 325 if ("MSG_RESOURCE_NOT_ALLOWED".equals(codeString)) 326 return MSGRESOURCENOTALLOWED; 327 if ("MSG_RESOURCE_REQUIRED".equals(codeString)) 328 return MSGRESOURCEREQUIRED; 329 if ("MSG_RESOURCE_ID_MISMATCH".equals(codeString)) 330 return MSGRESOURCEIDMISMATCH; 331 if ("MSG_RESOURCE_ID_MISSING".equals(codeString)) 332 return MSGRESOURCEIDMISSING; 333 if ("MSG_RESOURCE_TYPE_MISMATCH".equals(codeString)) 334 return MSGRESOURCETYPEMISMATCH; 335 if ("MSG_SORT_UNKNOWN".equals(codeString)) 336 return MSGSORTUNKNOWN; 337 if ("MSG_TRANSACTION_DUPLICATE_ID".equals(codeString)) 338 return MSGTRANSACTIONDUPLICATEID; 339 if ("MSG_TRANSACTION_MISSING_ID".equals(codeString)) 340 return MSGTRANSACTIONMISSINGID; 341 if ("MSG_UNHANDLED_NODE_TYPE".equals(codeString)) 342 return MSGUNHANDLEDNODETYPE; 343 if ("MSG_UNKNOWN_CONTENT".equals(codeString)) 344 return MSGUNKNOWNCONTENT; 345 if ("MSG_UNKNOWN_OPERATION".equals(codeString)) 346 return MSGUNKNOWNOPERATION; 347 if ("MSG_UNKNOWN_TYPE".equals(codeString)) 348 return MSGUNKNOWNTYPE; 349 if ("MSG_UPDATED".equals(codeString)) 350 return MSGUPDATED; 351 if ("MSG_VERSION_AWARE".equals(codeString)) 352 return MSGVERSIONAWARE; 353 if ("MSG_VERSION_AWARE_CONFLICT".equals(codeString)) 354 return MSGVERSIONAWARECONFLICT; 355 if ("MSG_VERSION_AWARE_URL".equals(codeString)) 356 return MSGVERSIONAWAREURL; 357 if ("MSG_WRONG_NS".equals(codeString)) 358 return MSGWRONGNS; 359 if ("SEARCH_MULTIPLE".equals(codeString)) 360 return SEARCHMULTIPLE; 361 if ("UPDATE_MULTIPLE_MATCHES".equals(codeString)) 362 return UPDATEMULTIPLEMATCHES; 363 if ("DELETE_MULTIPLE_MATCHES".equals(codeString)) 364 return DELETEMULTIPLEMATCHES; 365 if ("SEARCH_NONE".equals(codeString)) 366 return SEARCHNONE; 367 throw new FHIRException("Unknown OperationOutcome code '"+codeString+"'"); 368 } 369 public String toCode() { 370 switch (this) { 371 case MSGAUTHREQUIRED: return "MSG_AUTH_REQUIRED"; 372 case MSGBADFORMAT: return "MSG_BAD_FORMAT"; 373 case MSGBADSYNTAX: return "MSG_BAD_SYNTAX"; 374 case MSGCANTPARSECONTENT: return "MSG_CANT_PARSE_CONTENT"; 375 case MSGCANTPARSEROOT: return "MSG_CANT_PARSE_ROOT"; 376 case MSGCREATED: return "MSG_CREATED"; 377 case MSGDATEFORMAT: return "MSG_DATE_FORMAT"; 378 case MSGDELETED: return "MSG_DELETED"; 379 case MSGDELETEDDONE: return "MSG_DELETED_DONE"; 380 case MSGDELETEDID: return "MSG_DELETED_ID"; 381 case MSGDUPLICATEID: return "MSG_DUPLICATE_ID"; 382 case MSGERRORPARSING: return "MSG_ERROR_PARSING"; 383 case MSGIDINVALID: return "MSG_ID_INVALID"; 384 case MSGIDTOOLONG: return "MSG_ID_TOO_LONG"; 385 case MSGINVALIDID: return "MSG_INVALID_ID"; 386 case MSGJSONOBJECT: return "MSG_JSON_OBJECT"; 387 case MSGLOCALFAIL: return "MSG_LOCAL_FAIL"; 388 case MSGNOMATCH: return "MSG_NO_MATCH"; 389 case MSGNOEXIST: return "MSG_NO_EXIST"; 390 case MSGNOMODULE: return "MSG_NO_MODULE"; 391 case MSGNOSUMMARY: return "MSG_NO_SUMMARY"; 392 case MSGOPNOTALLOWED: return "MSG_OP_NOT_ALLOWED"; 393 case MSGPARAMCHAINED: return "MSG_PARAM_CHAINED"; 394 case MSGPARAMNOREPEAT: return "MSG_PARAM_NO_REPEAT"; 395 case MSGPARAMUNKNOWN: return "MSG_PARAM_UNKNOWN"; 396 case MSGPARAMINVALID: return "MSG_PARAM_INVALID"; 397 case MSGPARAMMODIFIERINVALID: return "MSG_PARAM_MODIFIER_INVALID"; 398 case MSGRESOURCEEXAMPLEPROTECTED: return "MSG_RESOURCE_EXAMPLE_PROTECTED"; 399 case MSGRESOURCEIDFAIL: return "MSG_RESOURCE_ID_FAIL"; 400 case MSGRESOURCENOTALLOWED: return "MSG_RESOURCE_NOT_ALLOWED"; 401 case MSGRESOURCEREQUIRED: return "MSG_RESOURCE_REQUIRED"; 402 case MSGRESOURCEIDMISMATCH: return "MSG_RESOURCE_ID_MISMATCH"; 403 case MSGRESOURCEIDMISSING: return "MSG_RESOURCE_ID_MISSING"; 404 case MSGRESOURCETYPEMISMATCH: return "MSG_RESOURCE_TYPE_MISMATCH"; 405 case MSGSORTUNKNOWN: return "MSG_SORT_UNKNOWN"; 406 case MSGTRANSACTIONDUPLICATEID: return "MSG_TRANSACTION_DUPLICATE_ID"; 407 case MSGTRANSACTIONMISSINGID: return "MSG_TRANSACTION_MISSING_ID"; 408 case MSGUNHANDLEDNODETYPE: return "MSG_UNHANDLED_NODE_TYPE"; 409 case MSGUNKNOWNCONTENT: return "MSG_UNKNOWN_CONTENT"; 410 case MSGUNKNOWNOPERATION: return "MSG_UNKNOWN_OPERATION"; 411 case MSGUNKNOWNTYPE: return "MSG_UNKNOWN_TYPE"; 412 case MSGUPDATED: return "MSG_UPDATED"; 413 case MSGVERSIONAWARE: return "MSG_VERSION_AWARE"; 414 case MSGVERSIONAWARECONFLICT: return "MSG_VERSION_AWARE_CONFLICT"; 415 case MSGVERSIONAWAREURL: return "MSG_VERSION_AWARE_URL"; 416 case MSGWRONGNS: return "MSG_WRONG_NS"; 417 case SEARCHMULTIPLE: return "SEARCH_MULTIPLE"; 418 case UPDATEMULTIPLEMATCHES: return "UPDATE_MULTIPLE_MATCHES"; 419 case DELETEMULTIPLEMATCHES: return "DELETE_MULTIPLE_MATCHES"; 420 case SEARCHNONE: return "SEARCH_NONE"; 421 default: return "?"; 422 } 423 } 424 public String getSystem() { 425 return "http://hl7.org/fhir/operation-outcome"; 426 } 427 public String getDefinition() { 428 switch (this) { 429 case MSGAUTHREQUIRED: return ""; 430 case MSGBADFORMAT: return ""; 431 case MSGBADSYNTAX: return ""; 432 case MSGCANTPARSECONTENT: return ""; 433 case MSGCANTPARSEROOT: return ""; 434 case MSGCREATED: return ""; 435 case MSGDATEFORMAT: return ""; 436 case MSGDELETED: return ""; 437 case MSGDELETEDDONE: return ""; 438 case MSGDELETEDID: return ""; 439 case MSGDUPLICATEID: return ""; 440 case MSGERRORPARSING: return ""; 441 case MSGIDINVALID: return ""; 442 case MSGIDTOOLONG: return ""; 443 case MSGINVALIDID: return ""; 444 case MSGJSONOBJECT: return ""; 445 case MSGLOCALFAIL: return ""; 446 case MSGNOMATCH: return ""; 447 case MSGNOEXIST: return ""; 448 case MSGNOMODULE: return ""; 449 case MSGNOSUMMARY: return ""; 450 case MSGOPNOTALLOWED: return ""; 451 case MSGPARAMCHAINED: return ""; 452 case MSGPARAMNOREPEAT: return ""; 453 case MSGPARAMUNKNOWN: return ""; 454 case MSGPARAMINVALID: return ""; 455 case MSGPARAMMODIFIERINVALID: return ""; 456 case MSGRESOURCEEXAMPLEPROTECTED: return ""; 457 case MSGRESOURCEIDFAIL: return ""; 458 case MSGRESOURCENOTALLOWED: return ""; 459 case MSGRESOURCEREQUIRED: return ""; 460 case MSGRESOURCEIDMISMATCH: return ""; 461 case MSGRESOURCEIDMISSING: return ""; 462 case MSGRESOURCETYPEMISMATCH: return ""; 463 case MSGSORTUNKNOWN: return ""; 464 case MSGTRANSACTIONDUPLICATEID: return ""; 465 case MSGTRANSACTIONMISSINGID: return ""; 466 case MSGUNHANDLEDNODETYPE: return ""; 467 case MSGUNKNOWNCONTENT: return ""; 468 case MSGUNKNOWNOPERATION: return ""; 469 case MSGUNKNOWNTYPE: return ""; 470 case MSGUPDATED: return ""; 471 case MSGVERSIONAWARE: return ""; 472 case MSGVERSIONAWARECONFLICT: return ""; 473 case MSGVERSIONAWAREURL: return ""; 474 case MSGWRONGNS: return ""; 475 case SEARCHMULTIPLE: return ""; 476 case UPDATEMULTIPLEMATCHES: return ""; 477 case DELETEMULTIPLEMATCHES: return ""; 478 case SEARCHNONE: return ""; 479 default: return "?"; 480 } 481 } 482 public String getDisplay() { 483 switch (this) { 484 case MSGAUTHREQUIRED: return "You must authenticate before you can use this service"; 485 case MSGBADFORMAT: return "Bad Syntax: \"%s\" must be a %s'"; 486 case MSGBADSYNTAX: return "Bad Syntax in %s"; 487 case MSGCANTPARSECONTENT: return "Unable to parse feed (entry content type = \"%s\")"; 488 case MSGCANTPARSEROOT: return "Unable to parse feed (root element name = \"%s\")"; 489 case MSGCREATED: return "New resource created"; 490 case MSGDATEFORMAT: return "The Date value %s is not in the correct format (Xml Date Format required)"; 491 case MSGDELETED: return "This resource has been deleted"; 492 case MSGDELETEDDONE: return "Resource deleted"; 493 case MSGDELETEDID: return "The resource \"%s\" has been deleted"; 494 case MSGDUPLICATEID: return "Duplicate Id %s for resource type %s"; 495 case MSGERRORPARSING: return "Error parsing resource Xml (%s)"; 496 case MSGIDINVALID: return "Id \"%s\" has an invalid character \"%s\""; 497 case MSGIDTOOLONG: return "Id \"%s\" too long (length limit 36)"; 498 case MSGINVALIDID: return "Id not accepted"; 499 case MSGJSONOBJECT: return "Json Source for a resource should start with an object"; 500 case MSGLOCALFAIL: return "Unable to resolve local reference to resource %s"; 501 case MSGNOMATCH: return "No Resource found matching the query \"%s\""; 502 case MSGNOEXIST: return "Resource Id \"%s\" does not exist"; 503 case MSGNOMODULE: return "No module could be found to handle the request \"%s\""; 504 case MSGNOSUMMARY: return "No Summary for this resource"; 505 case MSGOPNOTALLOWED: return "Operation %s not allowed for resource %s (due to local configuration)"; 506 case MSGPARAMCHAINED: return "Unknown chained parameter name \"%s\""; 507 case MSGPARAMNOREPEAT: return "Parameter \"%s\" is not allowed to repeat"; 508 case MSGPARAMUNKNOWN: return "Parameter \"%s\" not understood"; 509 case MSGPARAMINVALID: return "Parameter \"%s\" content is invalid"; 510 case MSGPARAMMODIFIERINVALID: return "Parameter \"%s\" modifier is invalid"; 511 case MSGRESOURCEEXAMPLEPROTECTED: return "Resources with identity \"example\" cannot be deleted (for testing/training purposes)"; 512 case MSGRESOURCEIDFAIL: return "unable to allocate resource id"; 513 case MSGRESOURCENOTALLOWED: return "Not allowed to submit a resource for this operation"; 514 case MSGRESOURCEREQUIRED: return "A resource is required"; 515 case MSGRESOURCEIDMISMATCH: return "Resource Id Mismatch"; 516 case MSGRESOURCEIDMISSING: return "Resource Id Missing"; 517 case MSGRESOURCETYPEMISMATCH: return "Resource Type Mismatch"; 518 case MSGSORTUNKNOWN: return "Unknown sort parameter name \"%s\""; 519 case MSGTRANSACTIONDUPLICATEID: return "Duplicate Identifier in transaction: %s"; 520 case MSGTRANSACTIONMISSINGID: return "Missing Identifier in transaction - an entry.id must be provided"; 521 case MSGUNHANDLEDNODETYPE: return "Unhandled xml node type \"%s\""; 522 case MSGUNKNOWNCONTENT: return "Unknown Content (%s) at %s"; 523 case MSGUNKNOWNOPERATION: return "unknown FHIR http operation"; 524 case MSGUNKNOWNTYPE: return "Resource Type \"%s\" not recognised"; 525 case MSGUPDATED: return "existing resource updated"; 526 case MSGVERSIONAWARE: return "Version aware updates are required for this resource"; 527 case MSGVERSIONAWARECONFLICT: return "Update Conflict (server current version = \"%s\", client version referenced = \"%s\")"; 528 case MSGVERSIONAWAREURL: return "Version specific URL not recognised"; 529 case MSGWRONGNS: return "This does not appear to be a FHIR element or resource (wrong namespace \"%s\")"; 530 case SEARCHMULTIPLE: return "Error: Multiple matches exist for %s search parameters \"%s\""; 531 case UPDATEMULTIPLEMATCHES: return "Error: Multiple matches exist for the conditional update"; 532 case DELETEMULTIPLEMATCHES: return "Error: Multiple matches exist for the conditional delete"; 533 case SEARCHNONE: return "Error: no processable search found for %s search parameters \"%s\""; 534 default: return "?"; 535 } 536 } 537 538 539} 540