Coverage for fastapi / applications.py: 100%
171 statements
« prev ^ index » next coverage.py v7.13.3, created at 2026-04-06 01:24 +0000
« prev ^ index » next coverage.py v7.13.3, created at 2026-04-06 01:24 +0000
1from collections.abc import Awaitable, Callable, Coroutine, Sequence 1abcd
2from enum import Enum 1abcd
3from typing import ( 1abcd
4 Annotated,
5 Any,
6 TypeVar,
7)
9from annotated_doc import Doc 1abcd
10from fastapi import routing 1abcd
11from fastapi.datastructures import Default, DefaultPlaceholder 1abcd
12from fastapi.exception_handlers import ( 1abcd
13 http_exception_handler,
14 request_validation_exception_handler,
15 websocket_request_validation_exception_handler,
16)
17from fastapi.exceptions import RequestValidationError, WebSocketRequestValidationError 1abcd
18from fastapi.logger import logger 1abcd
19from fastapi.middleware.asyncexitstack import AsyncExitStackMiddleware 1abcd
20from fastapi.openapi.docs import ( 1abcd
21 get_redoc_html,
22 get_swagger_ui_html,
23 get_swagger_ui_oauth2_redirect_html,
24)
25from fastapi.openapi.utils import get_openapi 1abcd
26from fastapi.params import Depends 1abcd
27from fastapi.types import DecoratedCallable, IncEx 1abcd
28from fastapi.utils import generate_unique_id 1abcd
29from starlette.applications import Starlette 1abcd
30from starlette.datastructures import State 1abcd
31from starlette.exceptions import HTTPException 1abcd
32from starlette.middleware import Middleware 1abcd
33from starlette.middleware.base import BaseHTTPMiddleware 1abcd
34from starlette.middleware.errors import ServerErrorMiddleware 1abcd
35from starlette.middleware.exceptions import ExceptionMiddleware 1abcd
36from starlette.requests import Request 1abcd
37from starlette.responses import HTMLResponse, JSONResponse, Response 1abcd
38from starlette.routing import BaseRoute 1abcd
39from starlette.types import ASGIApp, ExceptionHandler, Lifespan, Receive, Scope, Send 1abcd
40from typing_extensions import deprecated 1abcd
42AppType = TypeVar("AppType", bound="FastAPI") 1abcd
45class FastAPI(Starlette): 1abcd
46 """
47 `FastAPI` app class, the main entrypoint to use FastAPI.
49 Read more in the
50 [FastAPI docs for First Steps](https://fastapi.tiangolo.com/tutorial/first-steps/).
52 ## Example
54 ```python
55 from fastapi import FastAPI
57 app = FastAPI()
58 ```
59 """
61 def __init__( 1abcd
62 self: AppType,
63 *,
64 debug: Annotated[
65 bool,
66 Doc(
67 """
68 Boolean indicating if debug tracebacks should be returned on server
69 errors.
71 Read more in the
72 [Starlette docs for Applications](https://www.starlette.dev/applications/#instantiating-the-application).
73 """
74 ),
75 ] = False,
76 routes: Annotated[
77 list[BaseRoute] | None,
78 Doc(
79 """
80 **Note**: you probably shouldn't use this parameter, it is inherited
81 from Starlette and supported for compatibility.
83 ---
85 A list of routes to serve incoming HTTP and WebSocket requests.
86 """
87 ),
88 deprecated(
89 """
90 You normally wouldn't use this parameter with FastAPI, it is inherited
91 from Starlette and supported for compatibility.
93 In FastAPI, you normally would use the *path operation methods*,
94 like `app.get()`, `app.post()`, etc.
95 """
96 ),
97 ] = None,
98 title: Annotated[
99 str,
100 Doc(
101 """
102 The title of the API.
104 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
106 Read more in the
107 [FastAPI docs for Metadata and Docs URLs](https://fastapi.tiangolo.com/tutorial/metadata/#metadata-for-api).
109 **Example**
111 ```python
112 from fastapi import FastAPI
114 app = FastAPI(title="ChimichangApp")
115 ```
116 """
117 ),
118 ] = "FastAPI",
119 summary: Annotated[
120 str | None,
121 Doc(
122 """
123 A short summary of the API.
125 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
127 Read more in the
128 [FastAPI docs for Metadata and Docs URLs](https://fastapi.tiangolo.com/tutorial/metadata/#metadata-for-api).
130 **Example**
132 ```python
133 from fastapi import FastAPI
135 app = FastAPI(summary="Deadpond's favorite app. Nuff said.")
136 ```
137 """
138 ),
139 ] = None,
140 description: Annotated[
141 str,
142 Doc(
143 '''
144 A description of the API. Supports Markdown (using
145 [CommonMark syntax](https://commonmark.org/)).
147 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
149 Read more in the
150 [FastAPI docs for Metadata and Docs URLs](https://fastapi.tiangolo.com/tutorial/metadata/#metadata-for-api).
152 **Example**
154 ```python
155 from fastapi import FastAPI
157 app = FastAPI(
158 description="""
159 ChimichangApp API helps you do awesome stuff. 🚀
161 ## Items
163 You can **read items**.
165 ## Users
167 You will be able to:
169 * **Create users** (_not implemented_).
170 * **Read users** (_not implemented_).
172 """
173 )
174 ```
175 '''
176 ),
177 ] = "",
178 version: Annotated[
179 str,
180 Doc(
181 """
182 The version of the API.
184 **Note** This is the version of your application, not the version of
185 the OpenAPI specification nor the version of FastAPI being used.
187 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
189 Read more in the
190 [FastAPI docs for Metadata and Docs URLs](https://fastapi.tiangolo.com/tutorial/metadata/#metadata-for-api).
192 **Example**
194 ```python
195 from fastapi import FastAPI
197 app = FastAPI(version="0.0.1")
198 ```
199 """
200 ),
201 ] = "0.1.0",
202 openapi_url: Annotated[
203 str | None,
204 Doc(
205 """
206 The URL where the OpenAPI schema will be served from.
208 If you set it to `None`, no OpenAPI schema will be served publicly, and
209 the default automatic endpoints `/docs` and `/redoc` will also be
210 disabled.
212 Read more in the
213 [FastAPI docs for Metadata and Docs URLs](https://fastapi.tiangolo.com/tutorial/metadata/#openapi-url).
215 **Example**
217 ```python
218 from fastapi import FastAPI
220 app = FastAPI(openapi_url="/api/v1/openapi.json")
221 ```
222 """
223 ),
224 ] = "/openapi.json",
225 openapi_tags: Annotated[
226 list[dict[str, Any]] | None,
227 Doc(
228 """
229 A list of tags used by OpenAPI, these are the same `tags` you can set
230 in the *path operations*, like:
232 * `@app.get("/users/", tags=["users"])`
233 * `@app.get("/items/", tags=["items"])`
235 The order of the tags can be used to specify the order shown in
236 tools like Swagger UI, used in the automatic path `/docs`.
238 It's not required to specify all the tags used.
240 The tags that are not declared MAY be organized randomly or based
241 on the tools' logic. Each tag name in the list MUST be unique.
243 The value of each item is a `dict` containing:
245 * `name`: The name of the tag.
246 * `description`: A short description of the tag.
247 [CommonMark syntax](https://commonmark.org/) MAY be used for rich
248 text representation.
249 * `externalDocs`: Additional external documentation for this tag. If
250 provided, it would contain a `dict` with:
251 * `description`: A short description of the target documentation.
252 [CommonMark syntax](https://commonmark.org/) MAY be used for
253 rich text representation.
254 * `url`: The URL for the target documentation. Value MUST be in
255 the form of a URL.
257 Read more in the
258 [FastAPI docs for Metadata and Docs URLs](https://fastapi.tiangolo.com/tutorial/metadata/#metadata-for-tags).
260 **Example**
262 ```python
263 from fastapi import FastAPI
265 tags_metadata = [
266 {
267 "name": "users",
268 "description": "Operations with users. The **login** logic is also here.",
269 },
270 {
271 "name": "items",
272 "description": "Manage items. So _fancy_ they have their own docs.",
273 "externalDocs": {
274 "description": "Items external docs",
275 "url": "https://fastapi.tiangolo.com/",
276 },
277 },
278 ]
280 app = FastAPI(openapi_tags=tags_metadata)
281 ```
282 """
283 ),
284 ] = None,
285 servers: Annotated[
286 list[dict[str, str | Any]] | None,
287 Doc(
288 """
289 A `list` of `dict`s with connectivity information to a target server.
291 You would use it, for example, if your application is served from
292 different domains and you want to use the same Swagger UI in the
293 browser to interact with each of them (instead of having multiple
294 browser tabs open). Or if you want to leave fixed the possible URLs.
296 If the servers `list` is not provided, or is an empty `list`, the
297 `servers` property in the generated OpenAPI will be:
299 * a `dict` with a `url` value of the application's mounting point
300 (`root_path`) if it's different from `/`.
301 * otherwise, the `servers` property will be omitted from the OpenAPI
302 schema.
304 Each item in the `list` is a `dict` containing:
306 * `url`: A URL to the target host. This URL supports Server Variables
307 and MAY be relative, to indicate that the host location is relative
308 to the location where the OpenAPI document is being served. Variable
309 substitutions will be made when a variable is named in `{`brackets`}`.
310 * `description`: An optional string describing the host designated by
311 the URL. [CommonMark syntax](https://commonmark.org/) MAY be used for
312 rich text representation.
313 * `variables`: A `dict` between a variable name and its value. The value
314 is used for substitution in the server's URL template.
316 Read more in the
317 [FastAPI docs for Behind a Proxy](https://fastapi.tiangolo.com/advanced/behind-a-proxy/#additional-servers).
319 **Example**
321 ```python
322 from fastapi import FastAPI
324 app = FastAPI(
325 servers=[
326 {"url": "https://stag.example.com", "description": "Staging environment"},
327 {"url": "https://prod.example.com", "description": "Production environment"},
328 ]
329 )
330 ```
331 """
332 ),
333 ] = None,
334 dependencies: Annotated[
335 Sequence[Depends] | None,
336 Doc(
337 """
338 A list of global dependencies, they will be applied to each
339 *path operation*, including in sub-routers.
341 Read more about it in the
342 [FastAPI docs for Global Dependencies](https://fastapi.tiangolo.com/tutorial/dependencies/global-dependencies/).
344 **Example**
346 ```python
347 from fastapi import Depends, FastAPI
349 from .dependencies import func_dep_1, func_dep_2
351 app = FastAPI(dependencies=[Depends(func_dep_1), Depends(func_dep_2)])
352 ```
353 """
354 ),
355 ] = None,
356 default_response_class: Annotated[
357 type[Response],
358 Doc(
359 """
360 The default response class to be used.
362 Read more in the
363 [FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.tiangolo.com/advanced/custom-response/#default-response-class).
365 **Example**
367 ```python
368 from fastapi import FastAPI
369 from fastapi.responses import ORJSONResponse
371 app = FastAPI(default_response_class=ORJSONResponse)
372 ```
373 """
374 ),
375 ] = Default(JSONResponse),
376 redirect_slashes: Annotated[
377 bool,
378 Doc(
379 """
380 Whether to detect and redirect slashes in URLs when the client doesn't
381 use the same format.
383 **Example**
385 ```python
386 from fastapi import FastAPI
388 app = FastAPI(redirect_slashes=True) # the default
390 @app.get("/items/")
391 async def read_items():
392 return [{"item_id": "Foo"}]
393 ```
395 With this app, if a client goes to `/items` (without a trailing slash),
396 they will be automatically redirected with an HTTP status code of 307
397 to `/items/`.
398 """
399 ),
400 ] = True,
401 docs_url: Annotated[
402 str | None,
403 Doc(
404 """
405 The path to the automatic interactive API documentation.
406 It is handled in the browser by Swagger UI.
408 The default URL is `/docs`. You can disable it by setting it to `None`.
410 If `openapi_url` is set to `None`, this will be automatically disabled.
412 Read more in the
413 [FastAPI docs for Metadata and Docs URLs](https://fastapi.tiangolo.com/tutorial/metadata/#docs-urls).
415 **Example**
417 ```python
418 from fastapi import FastAPI
420 app = FastAPI(docs_url="/documentation", redoc_url=None)
421 ```
422 """
423 ),
424 ] = "/docs",
425 redoc_url: Annotated[
426 str | None,
427 Doc(
428 """
429 The path to the alternative automatic interactive API documentation
430 provided by ReDoc.
432 The default URL is `/redoc`. You can disable it by setting it to `None`.
434 If `openapi_url` is set to `None`, this will be automatically disabled.
436 Read more in the
437 [FastAPI docs for Metadata and Docs URLs](https://fastapi.tiangolo.com/tutorial/metadata/#docs-urls).
439 **Example**
441 ```python
442 from fastapi import FastAPI
444 app = FastAPI(docs_url="/documentation", redoc_url="redocumentation")
445 ```
446 """
447 ),
448 ] = "/redoc",
449 swagger_ui_oauth2_redirect_url: Annotated[
450 str | None,
451 Doc(
452 """
453 The OAuth2 redirect endpoint for the Swagger UI.
455 By default it is `/docs/oauth2-redirect`.
457 This is only used if you use OAuth2 (with the "Authorize" button)
458 with Swagger UI.
459 """
460 ),
461 ] = "/docs/oauth2-redirect",
462 swagger_ui_init_oauth: Annotated[
463 dict[str, Any] | None,
464 Doc(
465 """
466 OAuth2 configuration for the Swagger UI, by default shown at `/docs`.
468 Read more about the available configuration options in the
469 [Swagger UI docs](https://swagger.io/docs/open-source-tools/swagger-ui/usage/oauth2/).
470 """
471 ),
472 ] = None,
473 middleware: Annotated[
474 Sequence[Middleware] | None,
475 Doc(
476 """
477 List of middleware to be added when creating the application.
479 In FastAPI you would normally do this with `app.add_middleware()`
480 instead.
482 Read more in the
483 [FastAPI docs for Middleware](https://fastapi.tiangolo.com/tutorial/middleware/).
484 """
485 ),
486 ] = None,
487 exception_handlers: Annotated[
488 dict[
489 int | type[Exception],
490 Callable[[Request, Any], Coroutine[Any, Any, Response]],
491 ]
492 | None,
493 Doc(
494 """
495 A dictionary with handlers for exceptions.
497 In FastAPI, you would normally use the decorator
498 `@app.exception_handler()`.
500 Read more in the
501 [FastAPI docs for Handling Errors](https://fastapi.tiangolo.com/tutorial/handling-errors/).
502 """
503 ),
504 ] = None,
505 on_startup: Annotated[
506 Sequence[Callable[[], Any]] | None,
507 Doc(
508 """
509 A list of startup event handler functions.
511 You should instead use the `lifespan` handlers.
513 Read more in the [FastAPI docs for `lifespan`](https://fastapi.tiangolo.com/advanced/events/).
514 """
515 ),
516 ] = None,
517 on_shutdown: Annotated[
518 Sequence[Callable[[], Any]] | None,
519 Doc(
520 """
521 A list of shutdown event handler functions.
523 You should instead use the `lifespan` handlers.
525 Read more in the
526 [FastAPI docs for `lifespan`](https://fastapi.tiangolo.com/advanced/events/).
527 """
528 ),
529 ] = None,
530 lifespan: Annotated[
531 Lifespan[AppType] | None,
532 Doc(
533 """
534 A `Lifespan` context manager handler. This replaces `startup` and
535 `shutdown` functions with a single context manager.
537 Read more in the
538 [FastAPI docs for `lifespan`](https://fastapi.tiangolo.com/advanced/events/).
539 """
540 ),
541 ] = None,
542 terms_of_service: Annotated[
543 str | None,
544 Doc(
545 """
546 A URL to the Terms of Service for your API.
548 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
550 Read more at the
551 [FastAPI docs for Metadata and Docs URLs](https://fastapi.tiangolo.com/tutorial/metadata/#metadata-for-api).
553 **Example**
555 ```python
556 app = FastAPI(terms_of_service="http://example.com/terms/")
557 ```
558 """
559 ),
560 ] = None,
561 contact: Annotated[
562 dict[str, str | Any] | None,
563 Doc(
564 """
565 A dictionary with the contact information for the exposed API.
567 It can contain several fields.
569 * `name`: (`str`) The name of the contact person/organization.
570 * `url`: (`str`) A URL pointing to the contact information. MUST be in
571 the format of a URL.
572 * `email`: (`str`) The email address of the contact person/organization.
573 MUST be in the format of an email address.
575 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
577 Read more at the
578 [FastAPI docs for Metadata and Docs URLs](https://fastapi.tiangolo.com/tutorial/metadata/#metadata-for-api).
580 **Example**
582 ```python
583 app = FastAPI(
584 contact={
585 "name": "Deadpoolio the Amazing",
586 "url": "http://x-force.example.com/contact/",
587 "email": "[email protected]",
588 }
589 )
590 ```
591 """
592 ),
593 ] = None,
594 license_info: Annotated[
595 dict[str, str | Any] | None,
596 Doc(
597 """
598 A dictionary with the license information for the exposed API.
600 It can contain several fields.
602 * `name`: (`str`) **REQUIRED** (if a `license_info` is set). The
603 license name used for the API.
604 * `identifier`: (`str`) An [SPDX](https://spdx.dev/) license expression
605 for the API. The `identifier` field is mutually exclusive of the `url`
606 field. Available since OpenAPI 3.1.0, FastAPI 0.99.0.
607 * `url`: (`str`) A URL to the license used for the API. This MUST be
608 the format of a URL.
610 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
612 Read more at the
613 [FastAPI docs for Metadata and Docs URLs](https://fastapi.tiangolo.com/tutorial/metadata/#metadata-for-api).
615 **Example**
617 ```python
618 app = FastAPI(
619 license_info={
620 "name": "Apache 2.0",
621 "url": "https://www.apache.org/licenses/LICENSE-2.0.html",
622 }
623 )
624 ```
625 """
626 ),
627 ] = None,
628 openapi_prefix: Annotated[
629 str,
630 Doc(
631 """
632 A URL prefix for the OpenAPI URL.
633 """
634 ),
635 deprecated(
636 """
637 "openapi_prefix" has been deprecated in favor of "root_path", which
638 follows more closely the ASGI standard, is simpler, and more
639 automatic.
640 """
641 ),
642 ] = "",
643 root_path: Annotated[
644 str,
645 Doc(
646 """
647 A path prefix handled by a proxy that is not seen by the application
648 but is seen by external clients, which affects things like Swagger UI.
650 Read more about it at the
651 [FastAPI docs for Behind a Proxy](https://fastapi.tiangolo.com/advanced/behind-a-proxy/).
653 **Example**
655 ```python
656 from fastapi import FastAPI
658 app = FastAPI(root_path="/api/v1")
659 ```
660 """
661 ),
662 ] = "",
663 root_path_in_servers: Annotated[
664 bool,
665 Doc(
666 """
667 To disable automatically generating the URLs in the `servers` field
668 in the autogenerated OpenAPI using the `root_path`.
670 Read more about it in the
671 [FastAPI docs for Behind a Proxy](https://fastapi.tiangolo.com/advanced/behind-a-proxy/#disable-automatic-server-from-root-path).
673 **Example**
675 ```python
676 from fastapi import FastAPI
678 app = FastAPI(root_path_in_servers=False)
679 ```
680 """
681 ),
682 ] = True,
683 responses: Annotated[
684 dict[int | str, dict[str, Any]] | None,
685 Doc(
686 """
687 Additional responses to be shown in OpenAPI.
689 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
691 Read more about it in the
692 [FastAPI docs for Additional Responses in OpenAPI](https://fastapi.tiangolo.com/advanced/additional-responses/).
694 And in the
695 [FastAPI docs for Bigger Applications](https://fastapi.tiangolo.com/tutorial/bigger-applications/#include-an-apirouter-with-a-custom-prefix-tags-responses-and-dependencies).
696 """
697 ),
698 ] = None,
699 callbacks: Annotated[
700 list[BaseRoute] | None,
701 Doc(
702 """
703 OpenAPI callbacks that should apply to all *path operations*.
705 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
707 Read more about it in the
708 [FastAPI docs for OpenAPI Callbacks](https://fastapi.tiangolo.com/advanced/openapi-callbacks/).
709 """
710 ),
711 ] = None,
712 webhooks: Annotated[
713 routing.APIRouter | None,
714 Doc(
715 """
716 Add OpenAPI webhooks. This is similar to `callbacks` but it doesn't
717 depend on specific *path operations*.
719 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
721 **Note**: This is available since OpenAPI 3.1.0, FastAPI 0.99.0.
723 Read more about it in the
724 [FastAPI docs for OpenAPI Webhooks](https://fastapi.tiangolo.com/advanced/openapi-webhooks/).
725 """
726 ),
727 ] = None,
728 deprecated: Annotated[
729 bool | None,
730 Doc(
731 """
732 Mark all *path operations* as deprecated. You probably don't need it,
733 but it's available.
735 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
737 Read more about it in the
738 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/#deprecate-a-path-operation).
739 """
740 ),
741 ] = None,
742 include_in_schema: Annotated[
743 bool,
744 Doc(
745 """
746 To include (or not) all the *path operations* in the generated OpenAPI.
747 You probably don't need it, but it's available.
749 This affects the generated OpenAPI (e.g. visible at `/docs`).
751 Read more about it in the
752 [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi).
753 """
754 ),
755 ] = True,
756 swagger_ui_parameters: Annotated[
757 dict[str, Any] | None,
758 Doc(
759 """
760 Parameters to configure Swagger UI, the autogenerated interactive API
761 documentation (by default at `/docs`).
763 Read more about it in the
764 [FastAPI docs about how to Configure Swagger UI](https://fastapi.tiangolo.com/how-to/configure-swagger-ui/).
765 """
766 ),
767 ] = None,
768 generate_unique_id_function: Annotated[
769 Callable[[routing.APIRoute], str],
770 Doc(
771 """
772 Customize the function used to generate unique IDs for the *path
773 operations* shown in the generated OpenAPI.
775 This is particularly useful when automatically generating clients or
776 SDKs for your API.
778 Read more about it in the
779 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function).
780 """
781 ),
782 ] = Default(generate_unique_id),
783 separate_input_output_schemas: Annotated[
784 bool,
785 Doc(
786 """
787 Whether to generate separate OpenAPI schemas for request body and
788 response body when the results would be more precise.
790 This is particularly useful when automatically generating clients.
792 For example, if you have a model like:
794 ```python
795 from pydantic import BaseModel
797 class Item(BaseModel):
798 name: str
799 tags: list[str] = []
800 ```
802 When `Item` is used for input, a request body, `tags` is not required,
803 the client doesn't have to provide it.
805 But when using `Item` for output, for a response body, `tags` is always
806 available because it has a default value, even if it's just an empty
807 list. So, the client should be able to always expect it.
809 In this case, there would be two different schemas, one for input and
810 another one for output.
812 Read more about it in the
813 [FastAPI docs about how to separate schemas for input and output](https://fastapi.tiangolo.com/how-to/separate-openapi-schemas)
814 """
815 ),
816 ] = True,
817 openapi_external_docs: Annotated[
818 dict[str, Any] | None,
819 Doc(
820 """
821 This field allows you to provide additional external documentation links.
822 If provided, it must be a dictionary containing:
824 * `description`: A brief description of the external documentation.
825 * `url`: The URL pointing to the external documentation. The value **MUST**
826 be a valid URL format.
828 **Example**:
830 ```python
831 from fastapi import FastAPI
833 external_docs = {
834 "description": "Detailed API Reference",
835 "url": "https://example.com/api-docs",
836 }
838 app = FastAPI(openapi_external_docs=external_docs)
839 ```
840 """
841 ),
842 ] = None,
843 strict_content_type: Annotated[
844 bool,
845 Doc(
846 """
847 Enable strict checking for request Content-Type headers.
849 When `True` (the default), requests with a body that do not include
850 a `Content-Type` header will **not** be parsed as JSON.
852 This prevents potential cross-site request forgery (CSRF) attacks
853 that exploit the browser's ability to send requests without a
854 Content-Type header, bypassing CORS preflight checks. In particular
855 applicable for apps that need to be run locally (in localhost).
857 When `False`, requests without a `Content-Type` header will have
858 their body parsed as JSON, which maintains compatibility with
859 certain clients that don't send `Content-Type` headers.
861 Read more about it in the
862 [FastAPI docs for Strict Content-Type](https://fastapi.tiangolo.com/advanced/strict-content-type/).
863 """
864 ),
865 ] = True,
866 **extra: Annotated[
867 Any,
868 Doc(
869 """
870 Extra keyword arguments to be stored in the app, not used by FastAPI
871 anywhere.
872 """
873 ),
874 ],
875 ) -> None:
876 self.debug = debug 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
877 self.title = title 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
878 self.summary = summary 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
879 self.description = description 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
880 self.version = version 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
881 self.terms_of_service = terms_of_service 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
882 self.contact = contact 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
883 self.license_info = license_info 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
884 self.openapi_url = openapi_url 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
885 self.openapi_tags = openapi_tags 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
886 self.root_path_in_servers = root_path_in_servers 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
887 self.docs_url = docs_url 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
888 self.redoc_url = redoc_url 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
889 self.swagger_ui_oauth2_redirect_url = swagger_ui_oauth2_redirect_url 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
890 self.swagger_ui_init_oauth = swagger_ui_init_oauth 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
891 self.swagger_ui_parameters = swagger_ui_parameters 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
892 self.servers = servers or [] 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
893 self.separate_input_output_schemas = separate_input_output_schemas 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
894 self.openapi_external_docs = openapi_external_docs 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
895 self.extra = extra 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
896 self.openapi_version: Annotated[ 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
897 str,
898 Doc(
899 """
900 The version string of OpenAPI.
902 FastAPI will generate OpenAPI version 3.1.0, and will output that as
903 the OpenAPI version. But some tools, even though they might be
904 compatible with OpenAPI 3.1.0, might not recognize it as a valid.
906 So you could override this value to trick those tools into using
907 the generated OpenAPI. Have in mind that this is a hack. But if you
908 avoid using features added in OpenAPI 3.1.0, it might work for your
909 use case.
911 This is not passed as a parameter to the `FastAPI` class to avoid
912 giving the false idea that FastAPI would generate a different OpenAPI
913 schema. It is only available as an attribute.
915 **Example**
917 ```python
918 from fastapi import FastAPI
920 app = FastAPI()
922 app.openapi_version = "3.0.2"
923 ```
924 """
925 ),
926 ] = "3.1.0"
927 self.openapi_schema: dict[str, Any] | None = None 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
928 if self.openapi_url: 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
929 assert self.title, "A title must be provided for OpenAPI, e.g.: 'My API'" 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde 'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df xc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg *cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
930 assert self.version, "A version must be provided for OpenAPI, e.g.: '2.1.0'" 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde 'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df xc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg *cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
931 # TODO: remove when discarding the openapi_prefix parameter
932 if openapi_prefix: 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
933 logger.warning( 1abcd
934 '"openapi_prefix" has been deprecated in favor of "root_path", which '
935 "follows more closely the ASGI standard, is simpler, and more "
936 "automatic. Check the docs at "
937 "https://fastapi.tiangolo.com/advanced/sub-applications/"
938 )
939 self.webhooks: Annotated[ 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
940 routing.APIRouter,
941 Doc(
942 """
943 The `app.webhooks` attribute is an `APIRouter` with the *path
944 operations* that will be used just for documentation of webhooks.
946 Read more about it in the
947 [FastAPI docs for OpenAPI Webhooks](https://fastapi.tiangolo.com/advanced/openapi-webhooks/).
948 """
949 ),
950 ] = webhooks or routing.APIRouter()
951 self.root_path = root_path or openapi_prefix 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
952 self.state: Annotated[ 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
953 State,
954 Doc(
955 """
956 A state object for the application. This is the same object for the
957 entire application, it doesn't change from request to request.
959 You normally wouldn't use this in FastAPI, for most of the cases you
960 would instead use FastAPI dependencies.
962 This is simply inherited from Starlette.
964 Read more about it in the
965 [Starlette docs for Applications](https://www.starlette.dev/applications/#storing-state-on-the-app-instance).
966 """
967 ),
968 ] = State()
969 self.dependency_overrides: Annotated[ 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
970 dict[Callable[..., Any], Callable[..., Any]],
971 Doc(
972 """
973 A dictionary with overrides for the dependencies.
975 Each key is the original dependency callable, and the value is the
976 actual dependency that should be called.
978 This is for testing, to replace expensive dependencies with testing
979 versions.
981 Read more about it in the
982 [FastAPI docs for Testing Dependencies with Overrides](https://fastapi.tiangolo.com/advanced/testing-dependencies/).
983 """
984 ),
985 ] = {}
986 self.router: routing.APIRouter = routing.APIRouter( 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
987 routes=routes,
988 redirect_slashes=redirect_slashes,
989 dependency_overrides_provider=self,
990 on_startup=on_startup,
991 on_shutdown=on_shutdown,
992 lifespan=lifespan,
993 default_response_class=default_response_class,
994 dependencies=dependencies,
995 callbacks=callbacks,
996 deprecated=deprecated,
997 include_in_schema=include_in_schema,
998 responses=responses,
999 generate_unique_id_function=generate_unique_id_function,
1000 strict_content_type=strict_content_type,
1001 )
1002 self.exception_handlers: dict[ 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
1003 Any, Callable[[Request, Any], Response | Awaitable[Response]]
1004 ] = {} if exception_handlers is None else dict(exception_handlers)
1005 self.exception_handlers.setdefault(HTTPException, http_exception_handler) 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
1006 self.exception_handlers.setdefault( 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
1007 RequestValidationError, request_validation_exception_handler
1008 )
1009 self.exception_handlers.setdefault( 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
1010 WebSocketRequestValidationError,
1011 # Starlette still has incorrect type specification for the handlers
1012 websocket_request_validation_exception_handler, # type: ignore
1013 )
1015 self.user_middleware: list[Middleware] = ( 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
1016 [] if middleware is None else list(middleware)
1017 )
1018 self.middleware_stack: ASGIApp | None = None 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
1019 self.setup() 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
1021 def build_middleware_stack(self) -> ASGIApp: 1abcd
1022 # Duplicate/override from Starlette to add AsyncExitStackMiddleware
1023 # inside of ExceptionMiddleware, inside of custom user middlewares
1024 debug = self.debug 2mwnwow*v/s:s;s=spwqw?srwsw.vtwuwDbEbvwwwxw@sywFbGbzwAwBwCw[s]sDwEwFwGw^s/vZvHbIbHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w4w5wJb6w7w8w9w!w#wKbLb$w%w'w(w:v$sMbNb)w*w_s+w,w;v=v-w.w/w:w;w`s=w?w@w[w]wt U u v w x y V ^w_w{s`w{w|w}w~waxObbxPbcxdxexfx|sgx}shx'vh i j k ix~sjxatkx~ abbbz A cbdblxbtmxnxoxpxqxctrxsxtxuxvxwxxxyxQbRbW SbTbX UbVbWbzxAxBxdtCxetftDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-x.x/x:x;x=x?x@x[x]xgt^xhtXbYbZb0b1b2b3b_x`x{x|x}x~xaybyitcy4bdyey5b6b7b8beb{ 9bfb!bgbfy#b$bgyjthbB hyktiyjykylymynyoypyqyrysytyltuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4ymt5y6y7y8y9y!y#y$y%y'y(y)y*y+y,y-y.y/y:y;y=y?y@y[y]y^y_y`y{y|y}y~yazbzczdzezfzgzhzizjzkzlzmznzozpzqzrznt%bszot0vtzuzvzwzxzyzptzzAzBzqtCzDzEzFzGzHzIzJzKzLzMzNzOzPzQz+sRzSz?v@v%s[v-sTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!z#z$z%z'z(z)z*z+z,z-z.z/z:z;z=z?z@z[z]z^z_z`z{z|z}z~zaAbArtcAdAeAfAgAe pd'b1v2v3vhAiAjAkAlAmAnAoApAqArAsAtA]c^cuAvAwAxAyAzAAABACADAEAFAGAHAIAJAKALAMANAOAPAQAstRASATAttUAVAWAutXAYAZA0A1A2A3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A(b/A:A;A=A?A@A[A]A^A_A`A)b{A|A}A~AaBbBcBdBeBfBgBvthBiBwtjBkBlBmBnBoBpBqBxtrBytsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBztAtUBVBWBXBYBZB0B1B2BBt3B4B5B6B7B8B9BCt!B#BDt$B%B'BEt(BFt)B*BGt+BHt,BItJt-B.BKtLt/B:B;BMt=B?B@B[B]BNt^B_B`B{B|B}B~BaCbCcCOtdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCPtWCXCYCZC0C1C2C3C4C5C6C7C8C9C!C#C$C%C'C(C)C*C+C,C-C.C/C:C;C=C?C@C[C]C^C_C`C{C|C}C~CaDbDcDdDeDfDgDhDiDjDkDlDmDQtnDoDpDqDrDsDtDuDvDRtwDxDyDzDADBDCDDDEDFDGDHDIDJDStKDLDMDNDODPDQDRDSDTDUDVDTtWDXDUtYDZD0D1DVt2DWt3D4D5D6D7D8D9D!DXtYt#DZt$D0t%D'D1t2t(D)D3t4t*D+D,D-D.D/D:D;D=D?D@D[D]D^D_D`D{D|D}D~DaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpE5tqErEsE6ttEuE7tvEwExEyEzE. / : ; 9 ! # $ ?cAEBECEDEEEFEGEHE*bIEJEKELEMENEOEPEibQERESETE8tUEVEWEXEYEZE0E1E2E3E+b9t4EY !t5E6E7E8E9E!E#E$E%E'E(E)E*E#t,b+E,E-E-b.b/b.E/E:E;E$t=E?E%t@E+v't(t)t*t[E]E+t^E_E]v`E{E:b;b|E}E~E,taF=b?bbFcFdFeF-t.tfFgFhFiF/t^v4v@b[bjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzFAFBFCFDFEFFFGFHF]bIFJFKFLFMFNF^b_bOFPFQFRF_v's`b{bSFTFUF:tVFWF;t`v{vXFYFZF0F1F=t2F3F4F5F6FC Z D E F G H 0 7F8F?t9F!F#F$F%F|b'F}b(F)F*F+F(vl m n o ,[email protected] J mbnb/F:F;F=F?F@F[F]F^F_F`F~bac1 bccc2 dcecfc{F[t|F}F]t~F^t_taGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzGAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG0G`t1Ggchcicjckclcmc2G3G4G5G6G7G8G9G!G{t#Gnc$G%Gocpcqcrcob| scpbtcqb'Gucvc(G|trbK )G}t~t*Gau+G,G-G.G/G:G;G=G?G@G[G]G^G_G`G{G|G}G~GaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHbuzHAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH0H1H2H3H4H5H6H7H8H9H!H#H$H%H'Hcuwc(H5v)H*H+H,H-H.H/H:H;H=H?H@H[H]H^H_H`H{H|H}H~HaIbIcIdI|v(s}v)s~v.seIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIduyIzIAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZIf qdxc0I6v1I7v2I8v3I4I5I6I7I8I9I!I#I$I%I_c`c'I(I)I*I+I,I-I.Ieu/Ifu:I;I=Iguhuiu?Iju@Iku[Ilu]I^I_I`I{I|I}Imu~IaJbJnucJdJeJoufJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJAJBJCJDJpuycEJFJGJHJIJJJKJLJMJNJzcOJPJQJRJSJTJUJVJWJXJYJquZJ0Jru,v1J2J3Jsutu4J5J6J7J8Juu9Jvu!J#J$J%J'J(J)J*J+J,Jwu-J.J/J:J;J=J?J@J[J]J^J_J`J{J|J}J~JaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxuxKyuyKzKzuAuAKBuCuBKCKDuDKEKEuFKFuGKHKGuHuIKJKKKLKMKNKOKPKQKIuRKSKTKUKJuVKKuWKXKYKZK0K1K2K3K4K5K6K7K8K9K!K#K$K%K'K(K)K*K+K,K-K.K/K:K;K=K?K@K[K]K^KLu_K`K{K|K}K~KaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzLALBLCLDLMuELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL0L1L2L3L4L5L6L7L8L9L!L#L$L%L'L(L)L*L+L,L-L.L/L:L;LNu=LOu?L@L[L]L^L_L`LPu{LQu|LRu}L~LaMbMcMdMeMfMgMhMiMjMkMlMSumMTunMoMpMUuqMrMsMtMuMvMwMxMyMzMAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMVuWMWuXMYMZMXu0M1MYu2M3M4M5M6M= ? @ [ % ' ( ) @c7M8M9M!M#M$M%M'M(M)MAc*M+M,M-M.M/M:M;Msb=M?M@M[M]M^MZu_M`M{M|M}M~MaNbNcNBcdNeN3 0ufNgNhNiNjNkNlNmNnNoNpNqNrNsNtN1uCcuNvNDcEcFcwNxN2uyNzN3u4uAN-v5u6u7u8uBNCNDN9uENFNGNawHNINJNGcHcKNLNMNNN!uONIcJcPNQNRNSN#u$uTNUNVNWNXN%uYNbw9vKcLcZN0N1N2N3N4N5N6N7N8N9N!N#N$N%N'N(N)N*N+N,N-N.N/N:N;N=N?N@N[N]N^N_N`N{N|NMc}N~NaObOcOdOeONcOcfOgOhOiOjOkOcw*sPcQclOmOnO'uoOpOqOdwewfwrOsOtOuOvOwOxO(uyOzOAOBOCODOEO)uFOL 4 M N O P Q 5 GO*uHO+uIO,uJOKOLOMONOOORcPOQOScROSOTOUOVOWOXO)vp q r s YO-uZO.u0OtbubvbR S wbxb1O/u2O3O4O5O6O:u7O8O9O!O#O$O%O'O(OTcUc6 VcWc7 XcYcZc)O;u*O+O=u,[email protected]/O:O;O=O?O@O[O]O^O_O`O{O|O}O~OaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzPAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP0P1P2P3P4P5P6P7P8P9P[u!P]u0c1c2c3c4c5c6c#P$P%P'P(P)P*P+P,P-P.P/P:P^u;P7c=P?P@P8c9c!c#cyb} $czb%cAb[P'c(c]P_uBbT ^P`u_P`P{u{P|P}P~PaQ|ubQcQdQeQ}ufQgQ~uhQiQavjQkQlQmQnQbvoQpQcvqQrQsQtQuQvQwQxQyQzQAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQdvQQRQSQTQUQVQWQXQYQZQ0Q1Q2Q3Qev4Q5Q6Q7Q8Q9Q!Q#Qfv$Q%Qgv'Q(Q)Q*Q+Q,Q-Q.Q/Q:Q;Q=Q?Q@Q[Q]Q^Q_Q`Q{Q|Q}Q~QaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRhv)cuR!vvRwRxRyRzRARBRCRDRERFRGRHRIRJRKRLRMRgwhwiwNRORPRQRRRSRTRURVRWRXRYRZR0R1R2R3R4R5R6R7R8R9R!R#R$R%Rg rd*c#v$v%v'R(R)R*R+R,R-R{c|c.R/R:R;R=R?R@R[R]R^R_R`R{R|R}R~RaSbScSdSeSfSgShSiviSjSkSlSmSnSoSpSqSrSsStSjvuSvS+cwSxSySzSASBSCSDS,cESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS0S1S2S3S4S5S6S7S8S9S!S#S$S%S'S(S)S*S+S,S-S.S/S:Skv;S=S?S@S[S]S^S_S`S{S|S}S~SaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxTyTzTATBTCTDTETFTGTHTITJTKTLTMTNTlvOTPTQTRTSTTTUTVTWTXTYTZT0T1T2T3T4T5T6T7T8T9T!T#T$T%T'T(T)T*Tmv+T,T-T.T/T:T;T=T?T@T[T]T^T_T`T{T|T}Tnvov~TaUpvbUcUdUeUqvfUgUhUiUjUkUlUmUnUoUpUqUrUrvsvsUtUuUvUwUxUyUzUAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU0U1U2U3U4U5U6Utv7Uuv8U9U!U#U$U%U'U(U)Uvv*Uwv+Uxv,U-U.Uyv/Uzv:U;UAv=U?U@UBv[U]UCv^U_U`U{UDvEv|UFv}UGvHv~UaVIvJvbVcVKvLvdVeVfVgVhViVjVkVlVmVMvnVoVpVqVrVsVtVuVvVwVNvxVyVzVAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVOvQVRVPvSVTVUVVVQvWVRvXVYVZV0VSv1V2VTv3V4V5V6V7V] ^ _ ` * + , - [c8V9V!VUv#V$V%V'V(V)V*V+VVv,s,V-c-V.V/V:V;V=V?V@V[VCb]V^V_V`V{V|V}V~VWvaWbWcWdWeWfWgWhWiWjWkWlWmW.cnWoW8 XvpWqWrWsWtWuWvWwWxWyWzWAWBWCWDWEWFWGWHWYv/cIWJWKW:c;c=cLWMW
1025 error_handler = None 2mwnwow*v/s:s;s=spwqw?srwsw.vtwuwDbEbvwwwxw@sywFbGbzwAwBwCw[s]sDwEwFwGw^s/vZvHbIbHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w4w5wJb6w7w8w9w!w#wKbLb$w%w'w(w:v$sMbNb)w*w_s+w,w;v=v-w.w/w:w;w`s=w?w@w[w]wt U u v w x y V ^w_w{s`w{w|w}w~waxObbxPbcxdxexfx|sgx}shx'vh i j k ix~sjxatkx~ abbbz A cbdblxbtmxnxoxpxqxctrxsxtxuxvxwxxxyxQbRbW SbTbX UbVbWbzxAxBxdtCxetftDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-x.x/x:x;x=x?x@x[x]xgt^xhtXbYbZb0b1b2b3b_x`x{x|x}x~xaybyitcy4bdyey5b6b7b8beb{ 9bfb!bgbfy#b$bgyjthbB hyktiyjykylymynyoypyqyrysytyltuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4ymt5y6y7y8y9y!y#y$y%y'y(y)y*y+y,y-y.y/y:y;y=y?y@y[y]y^y_y`y{y|y}y~yazbzczdzezfzgzhzizjzkzlzmznzozpzqzrznt%bszot0vtzuzvzwzxzyzptzzAzBzqtCzDzEzFzGzHzIzJzKzLzMzNzOzPzQz+sRzSz?v@v%s[v-sTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!z#z$z%z'z(z)z*z+z,z-z.z/z:z;z=z?z@z[z]z^z_z`z{z|z}z~zaAbArtcAdAeAfAgAe pd'b1v2v3vhAiAjAkAlAmAnAoApAqArAsAtA]c^cuAvAwAxAyAzAAABACADAEAFAGAHAIAJAKALAMANAOAPAQAstRASATAttUAVAWAutXAYAZA0A1A2A3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A(b/A:A;A=A?A@A[A]A^A_A`A)b{A|A}A~AaBbBcBdBeBfBgBvthBiBwtjBkBlBmBnBoBpBqBxtrBytsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBztAtUBVBWBXBYBZB0B1B2BBt3B4B5B6B7B8B9BCt!B#BDt$B%B'BEt(BFt)B*BGt+BHt,BItJt-B.BKtLt/B:B;BMt=B?B@B[B]BNt^B_B`B{B|B}B~BaCbCcCOtdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCPtWCXCYCZC0C1C2C3C4C5C6C7C8C9C!C#C$C%C'C(C)C*C+C,C-C.C/C:C;C=C?C@C[C]C^C_C`C{C|C}C~CaDbDcDdDeDfDgDhDiDjDkDlDmDQtnDoDpDqDrDsDtDuDvDRtwDxDyDzDADBDCDDDEDFDGDHDIDJDStKDLDMDNDODPDQDRDSDTDUDVDTtWDXDUtYDZD0D1DVt2DWt3D4D5D6D7D8D9D!DXtYt#DZt$D0t%D'D1t2t(D)D3t4t*D+D,D-D.D/D:D;D=D?D@D[D]D^D_D`D{D|D}D~DaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpE5tqErEsE6ttEuE7tvEwExEyEzE. / : ; 9 ! # $ ?cAEBECEDEEEFEGEHE*bIEJEKELEMENEOEPEibQERESETE8tUEVEWEXEYEZE0E1E2E3E+b9t4EY !t5E6E7E8E9E!E#E$E%E'E(E)E*E#t,b+E,E-E-b.b/b.E/E:E;E$t=E?E%t@E+v't(t)t*t[E]E+t^E_E]v`E{E:b;b|E}E~E,taF=b?bbFcFdFeF-t.tfFgFhFiF/t^v4v@b[bjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzFAFBFCFDFEFFFGFHF]bIFJFKFLFMFNF^b_bOFPFQFRF_v's`b{bSFTFUF:tVFWF;t`v{vXFYFZF0F1F=t2F3F4F5F6FC Z D E F G H 0 7F8F?t9F!F#F$F%F|b'F}b(F)F*F+F(vl m n o ,[email protected] J mbnb/F:F;F=F?F@F[F]F^F_F`F~bac1 bccc2 dcecfc{F[t|F}F]t~F^t_taGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzGAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG0G`t1Ggchcicjckclcmc2G3G4G5G6G7G8G9G!G{t#Gnc$G%Gocpcqcrcob| scpbtcqb'Gucvc(G|trbK )G}t~t*Gau+G,G-G.G/G:G;G=G?G@G[G]G^G_G`G{G|G}G~GaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHbuzHAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH0H1H2H3H4H5H6H7H8H9H!H#H$H%H'Hcuwc(H5v)H*H+H,H-H.H/H:H;H=H?H@H[H]H^H_H`H{H|H}H~HaIbIcIdI|v(s}v)s~v.seIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIduyIzIAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZIf qdxc0I6v1I7v2I8v3I4I5I6I7I8I9I!I#I$I%I_c`c'I(I)I*I+I,I-I.Ieu/Ifu:I;I=Iguhuiu?Iju@Iku[Ilu]I^I_I`I{I|I}Imu~IaJbJnucJdJeJoufJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJAJBJCJDJpuycEJFJGJHJIJJJKJLJMJNJzcOJPJQJRJSJTJUJVJWJXJYJquZJ0Jru,v1J2J3Jsutu4J5J6J7J8Juu9Jvu!J#J$J%J'J(J)J*J+J,Jwu-J.J/J:J;J=J?J@J[J]J^J_J`J{J|J}J~JaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxuxKyuyKzKzuAuAKBuCuBKCKDuDKEKEuFKFuGKHKGuHuIKJKKKLKMKNKOKPKQKIuRKSKTKUKJuVKKuWKXKYKZK0K1K2K3K4K5K6K7K8K9K!K#K$K%K'K(K)K*K+K,K-K.K/K:K;K=K?K@K[K]K^KLu_K`K{K|K}K~KaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzLALBLCLDLMuELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL0L1L2L3L4L5L6L7L8L9L!L#L$L%L'L(L)L*L+L,L-L.L/L:L;LNu=LOu?L@L[L]L^L_L`LPu{LQu|LRu}L~LaMbMcMdMeMfMgMhMiMjMkMlMSumMTunMoMpMUuqMrMsMtMuMvMwMxMyMzMAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMVuWMWuXMYMZMXu0M1MYu2M3M4M5M6M= ? @ [ % ' ( ) @c7M8M9M!M#M$M%M'M(M)MAc*M+M,M-M.M/M:M;Msb=M?M@M[M]M^MZu_M`M{M|M}M~MaNbNcNBcdNeN3 0ufNgNhNiNjNkNlNmNnNoNpNqNrNsNtN1uCcuNvNDcEcFcwNxN2uyNzN3u4uAN-v5u6u7u8uBNCNDN9uENFNGNawHNINJNGcHcKNLNMNNN!uONIcJcPNQNRNSN#u$uTNUNVNWNXN%uYNbw9vKcLcZN0N1N2N3N4N5N6N7N8N9N!N#N$N%N'N(N)N*N+N,N-N.N/N:N;N=N?N@N[N]N^N_N`N{N|NMc}N~NaObOcOdOeONcOcfOgOhOiOjOkOcw*sPcQclOmOnO'uoOpOqOdwewfwrOsOtOuOvOwOxO(uyOzOAOBOCODOEO)uFOL 4 M N O P Q 5 GO*uHO+uIO,uJOKOLOMONOOORcPOQOScROSOTOUOVOWOXO)vp q r s YO-uZO.u0OtbubvbR S wbxb1O/u2O3O4O5O6O:u7O8O9O!O#O$O%O'O(OTcUc6 VcWc7 XcYcZc)O;u*O+O=u,[email protected]/O:O;O=O?O@O[O]O^O_O`O{O|O}O~OaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzPAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP0P1P2P3P4P5P6P7P8P9P[u!P]u0c1c2c3c4c5c6c#P$P%P'P(P)P*P+P,P-P.P/P:P^u;P7c=P?P@P8c9c!c#cyb} $czb%cAb[P'c(c]P_uBbT ^P`u_P`P{u{P|P}P~PaQ|ubQcQdQeQ}ufQgQ~uhQiQavjQkQlQmQnQbvoQpQcvqQrQsQtQuQvQwQxQyQzQAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQdvQQRQSQTQUQVQWQXQYQZQ0Q1Q2Q3Qev4Q5Q6Q7Q8Q9Q!Q#Qfv$Q%Qgv'Q(Q)Q*Q+Q,Q-Q.Q/Q:Q;Q=Q?Q@Q[Q]Q^Q_Q`Q{Q|Q}Q~QaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRhv)cuR!vvRwRxRyRzRARBRCRDRERFRGRHRIRJRKRLRMRgwhwiwNRORPRQRRRSRTRURVRWRXRYRZR0R1R2R3R4R5R6R7R8R9R!R#R$R%Rg rd*c#v$v%v'R(R)R*R+R,R-R{c|c.R/R:R;R=R?R@R[R]R^R_R`R{R|R}R~RaSbScSdSeSfSgShSiviSjSkSlSmSnSoSpSqSrSsStSjvuSvS+cwSxSySzSASBSCSDS,cESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS0S1S2S3S4S5S6S7S8S9S!S#S$S%S'S(S)S*S+S,S-S.S/S:Skv;S=S?S@S[S]S^S_S`S{S|S}S~SaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxTyTzTATBTCTDTETFTGTHTITJTKTLTMTNTlvOTPTQTRTSTTTUTVTWTXTYTZT0T1T2T3T4T5T6T7T8T9T!T#T$T%T'T(T)T*Tmv+T,T-T.T/T:T;T=T?T@T[T]T^T_T`T{T|T}Tnvov~TaUpvbUcUdUeUqvfUgUhUiUjUkUlUmUnUoUpUqUrUrvsvsUtUuUvUwUxUyUzUAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU0U1U2U3U4U5U6Utv7Uuv8U9U!U#U$U%U'U(U)Uvv*Uwv+Uxv,U-U.Uyv/Uzv:U;UAv=U?U@UBv[U]UCv^U_U`U{UDvEv|UFv}UGvHv~UaVIvJvbVcVKvLvdVeVfVgVhViVjVkVlVmVMvnVoVpVqVrVsVtVuVvVwVNvxVyVzVAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVOvQVRVPvSVTVUVVVQvWVRvXVYVZV0VSv1V2VTv3V4V5V6V7V] ^ _ ` * + , - [c8V9V!VUv#V$V%V'V(V)V*V+VVv,s,V-c-V.V/V:V;V=V?V@V[VCb]V^V_V`V{V|V}V~VWvaWbWcWdWeWfWgWhWiWjWkWlWmW.cnWoW8 XvpWqWrWsWtWuWvWwWxWyWzWAWBWCWDWEWFWGWHWYv/cIWJWKW:c;c=cLWMW
1026 exception_handlers: dict[Any, ExceptionHandler] = {} 2mwnwow*v/s:s;s=spwqw?srwsw.vtwuwDbEbvwwwxw@sywFbGbzwAwBwCw[s]sDwEwFwGw^s/vZvHbIbHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w4w5wJb6w7w8w9w!w#wKbLb$w%w'w(w:v$sMbNb)w*w_s+w,w;v=v-w.w/w:w;w`s=w?w@w[w]wt U u v w x y V ^w_w{s`w{w|w}w~waxObbxPbcxdxexfx|sgx}shx'vh i j k ix~sjxatkx~ abbbz A cbdblxbtmxnxoxpxqxctrxsxtxuxvxwxxxyxQbRbW SbTbX UbVbWbzxAxBxdtCxetftDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-x.x/x:x;x=x?x@x[x]xgt^xhtXbYbZb0b1b2b3b_x`x{x|x}x~xaybyitcy4bdyey5b6b7b8beb{ 9bfb!bgbfy#b$bgyjthbB hyktiyjykylymynyoypyqyrysytyltuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4ymt5y6y7y8y9y!y#y$y%y'y(y)y*y+y,y-y.y/y:y;y=y?y@y[y]y^y_y`y{y|y}y~yazbzczdzezfzgzhzizjzkzlzmznzozpzqzrznt%bszot0vtzuzvzwzxzyzptzzAzBzqtCzDzEzFzGzHzIzJzKzLzMzNzOzPzQz+sRzSz?v@v%s[v-sTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!z#z$z%z'z(z)z*z+z,z-z.z/z:z;z=z?z@z[z]z^z_z`z{z|z}z~zaAbArtcAdAeAfAgAe pd'b1v2v3vhAiAjAkAlAmAnAoApAqArAsAtA]c^cuAvAwAxAyAzAAABACADAEAFAGAHAIAJAKALAMANAOAPAQAstRASATAttUAVAWAutXAYAZA0A1A2A3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A(b/A:A;A=A?A@A[A]A^A_A`A)b{A|A}A~AaBbBcBdBeBfBgBvthBiBwtjBkBlBmBnBoBpBqBxtrBytsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBztAtUBVBWBXBYBZB0B1B2BBt3B4B5B6B7B8B9BCt!B#BDt$B%B'BEt(BFt)B*BGt+BHt,BItJt-B.BKtLt/B:B;BMt=B?B@B[B]BNt^B_B`B{B|B}B~BaCbCcCOtdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCPtWCXCYCZC0C1C2C3C4C5C6C7C8C9C!C#C$C%C'C(C)C*C+C,C-C.C/C:C;C=C?C@C[C]C^C_C`C{C|C}C~CaDbDcDdDeDfDgDhDiDjDkDlDmDQtnDoDpDqDrDsDtDuDvDRtwDxDyDzDADBDCDDDEDFDGDHDIDJDStKDLDMDNDODPDQDRDSDTDUDVDTtWDXDUtYDZD0D1DVt2DWt3D4D5D6D7D8D9D!DXtYt#DZt$D0t%D'D1t2t(D)D3t4t*D+D,D-D.D/D:D;D=D?D@D[D]D^D_D`D{D|D}D~DaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpE5tqErEsE6ttEuE7tvEwExEyEzE. / : ; 9 ! # $ ?cAEBECEDEEEFEGEHE*bIEJEKELEMENEOEPEibQERESETE8tUEVEWEXEYEZE0E1E2E3E+b9t4EY !t5E6E7E8E9E!E#E$E%E'E(E)E*E#t,b+E,E-E-b.b/b.E/E:E;E$t=E?E%t@E+v't(t)t*t[E]E+t^E_E]v`E{E:b;b|E}E~E,taF=b?bbFcFdFeF-t.tfFgFhFiF/t^v4v@b[bjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzFAFBFCFDFEFFFGFHF]bIFJFKFLFMFNF^b_bOFPFQFRF_v's`b{bSFTFUF:tVFWF;t`v{vXFYFZF0F1F=t2F3F4F5F6FC Z D E F G H 0 7F8F?t9F!F#F$F%F|b'F}b(F)F*F+F(vl m n o ,[email protected] J mbnb/F:F;F=F?F@F[F]F^F_F`F~bac1 bccc2 dcecfc{F[t|F}F]t~F^t_taGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzGAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG0G`t1Ggchcicjckclcmc2G3G4G5G6G7G8G9G!G{t#Gnc$G%Gocpcqcrcob| scpbtcqb'Gucvc(G|trbK )G}t~t*Gau+G,G-G.G/G:G;G=G?G@G[G]G^G_G`G{G|G}G~GaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHbuzHAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH0H1H2H3H4H5H6H7H8H9H!H#H$H%H'Hcuwc(H5v)H*H+H,H-H.H/H:H;H=H?H@H[H]H^H_H`H{H|H}H~HaIbIcIdI|v(s}v)s~v.seIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIduyIzIAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZIf qdxc0I6v1I7v2I8v3I4I5I6I7I8I9I!I#I$I%I_c`c'I(I)I*I+I,I-I.Ieu/Ifu:I;I=Iguhuiu?Iju@Iku[Ilu]I^I_I`I{I|I}Imu~IaJbJnucJdJeJoufJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJAJBJCJDJpuycEJFJGJHJIJJJKJLJMJNJzcOJPJQJRJSJTJUJVJWJXJYJquZJ0Jru,v1J2J3Jsutu4J5J6J7J8Juu9Jvu!J#J$J%J'J(J)J*J+J,Jwu-J.J/J:J;J=J?J@J[J]J^J_J`J{J|J}J~JaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxuxKyuyKzKzuAuAKBuCuBKCKDuDKEKEuFKFuGKHKGuHuIKJKKKLKMKNKOKPKQKIuRKSKTKUKJuVKKuWKXKYKZK0K1K2K3K4K5K6K7K8K9K!K#K$K%K'K(K)K*K+K,K-K.K/K:K;K=K?K@K[K]K^KLu_K`K{K|K}K~KaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzLALBLCLDLMuELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL0L1L2L3L4L5L6L7L8L9L!L#L$L%L'L(L)L*L+L,L-L.L/L:L;LNu=LOu?L@L[L]L^L_L`LPu{LQu|LRu}L~LaMbMcMdMeMfMgMhMiMjMkMlMSumMTunMoMpMUuqMrMsMtMuMvMwMxMyMzMAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMVuWMWuXMYMZMXu0M1MYu2M3M4M5M6M= ? @ [ % ' ( ) @c7M8M9M!M#M$M%M'M(M)MAc*M+M,M-M.M/M:M;Msb=M?M@M[M]M^MZu_M`M{M|M}M~MaNbNcNBcdNeN3 0ufNgNhNiNjNkNlNmNnNoNpNqNrNsNtN1uCcuNvNDcEcFcwNxN2uyNzN3u4uAN-v5u6u7u8uBNCNDN9uENFNGNawHNINJNGcHcKNLNMNNN!uONIcJcPNQNRNSN#u$uTNUNVNWNXN%uYNbw9vKcLcZN0N1N2N3N4N5N6N7N8N9N!N#N$N%N'N(N)N*N+N,N-N.N/N:N;N=N?N@N[N]N^N_N`N{N|NMc}N~NaObOcOdOeONcOcfOgOhOiOjOkOcw*sPcQclOmOnO'uoOpOqOdwewfwrOsOtOuOvOwOxO(uyOzOAOBOCODOEO)uFOL 4 M N O P Q 5 GO*uHO+uIO,uJOKOLOMONOOORcPOQOScROSOTOUOVOWOXO)vp q r s YO-uZO.u0OtbubvbR S wbxb1O/u2O3O4O5O6O:u7O8O9O!O#O$O%O'O(OTcUc6 VcWc7 XcYcZc)O;u*O+O=u,[email protected]/O:O;O=O?O@O[O]O^O_O`O{O|O}O~OaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzPAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP0P1P2P3P4P5P6P7P8P9P[u!P]u0c1c2c3c4c5c6c#P$P%P'P(P)P*P+P,P-P.P/P:P^u;P7c=P?P@P8c9c!c#cyb} $czb%cAb[P'c(c]P_uBbT ^P`u_P`P{u{P|P}P~PaQ|ubQcQdQeQ}ufQgQ~uhQiQavjQkQlQmQnQbvoQpQcvqQrQsQtQuQvQwQxQyQzQAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQdvQQRQSQTQUQVQWQXQYQZQ0Q1Q2Q3Qev4Q5Q6Q7Q8Q9Q!Q#Qfv$Q%Qgv'Q(Q)Q*Q+Q,Q-Q.Q/Q:Q;Q=Q?Q@Q[Q]Q^Q_Q`Q{Q|Q}Q~QaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRhv)cuR!vvRwRxRyRzRARBRCRDRERFRGRHRIRJRKRLRMRgwhwiwNRORPRQRRRSRTRURVRWRXRYRZR0R1R2R3R4R5R6R7R8R9R!R#R$R%Rg rd*c#v$v%v'R(R)R*R+R,R-R{c|c.R/R:R;R=R?R@R[R]R^R_R`R{R|R}R~RaSbScSdSeSfSgShSiviSjSkSlSmSnSoSpSqSrSsStSjvuSvS+cwSxSySzSASBSCSDS,cESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS0S1S2S3S4S5S6S7S8S9S!S#S$S%S'S(S)S*S+S,S-S.S/S:Skv;S=S?S@S[S]S^S_S`S{S|S}S~SaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxTyTzTATBTCTDTETFTGTHTITJTKTLTMTNTlvOTPTQTRTSTTTUTVTWTXTYTZT0T1T2T3T4T5T6T7T8T9T!T#T$T%T'T(T)T*Tmv+T,T-T.T/T:T;T=T?T@T[T]T^T_T`T{T|T}Tnvov~TaUpvbUcUdUeUqvfUgUhUiUjUkUlUmUnUoUpUqUrUrvsvsUtUuUvUwUxUyUzUAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU0U1U2U3U4U5U6Utv7Uuv8U9U!U#U$U%U'U(U)Uvv*Uwv+Uxv,U-U.Uyv/Uzv:U;UAv=U?U@UBv[U]UCv^U_U`U{UDvEv|UFv}UGvHv~UaVIvJvbVcVKvLvdVeVfVgVhViVjVkVlVmVMvnVoVpVqVrVsVtVuVvVwVNvxVyVzVAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVOvQVRVPvSVTVUVVVQvWVRvXVYVZV0VSv1V2VTv3V4V5V6V7V] ^ _ ` * + , - [c8V9V!VUv#V$V%V'V(V)V*V+VVv,s,V-c-V.V/V:V;V=V?V@V[VCb]V^V_V`V{V|V}V~VWvaWbWcWdWeWfWgWhWiWjWkWlWmW.cnWoW8 XvpWqWrWsWtWuWvWwWxWyWzWAWBWCWDWEWFWGWHWYv/cIWJWKW:c;c=cLWMW
1028 for key, value in self.exception_handlers.items(): 2mwnwow*v/s:s;s=spwqw?srwsw.vtwuwDbEbvwwwxw@sywFbGbzwAwBwCw[s]sDwEwFwGw^s/vZvHbIbHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w4w5wJb6w7w8w9w!w#wKbLb$w%w'w(w:v$sMbNb)w*w_s+w,w;v=v-w.w/w:w;w`s=w?w@w[w]wt U u v w x y V ^w_w{s`w{w|w}w~waxObbxPbcxdxexfx|sgx}shx'vh i j k ix~sjxatkx~ abbbz A cbdblxbtmxnxoxpxqxctrxsxtxuxvxwxxxyxQbRbW SbTbX UbVbWbzxAxBxdtCxetftDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-x.x/x:x;x=x?x@x[x]xgt^xhtXbYbZb0b1b2b3b_x`x{x|x}x~xaybyitcy4bdyey5b6b7b8beb{ 9bfb!bgbfy#b$bgyjthbB hyktiyjykylymynyoypyqyrysytyltuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4ymt5y6y7y8y9y!y#y$y%y'y(y)y*y+y,y-y.y/y:y;y=y?y@y[y]y^y_y`y{y|y}y~yazbzczdzezfzgzhzizjzkzlzmznzozpzqzrznt%bszot0vtzuzvzwzxzyzptzzAzBzqtCzDzEzFzGzHzIzJzKzLzMzNzOzPzQz+sRzSz?v@v%s[v-sTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!z#z$z%z'z(z)z*z+z,z-z.z/z:z;z=z?z@z[z]z^z_z`z{z|z}z~zaAbArtcAdAeAfAgAe pd'b1v2v3vhAiAjAkAlAmAnAoApAqArAsAtA]c^cuAvAwAxAyAzAAABACADAEAFAGAHAIAJAKALAMANAOAPAQAstRASATAttUAVAWAutXAYAZA0A1A2A3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A(b/A:A;A=A?A@A[A]A^A_A`A)b{A|A}A~AaBbBcBdBeBfBgBvthBiBwtjBkBlBmBnBoBpBqBxtrBytsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBztAtUBVBWBXBYBZB0B1B2BBt3B4B5B6B7B8B9BCt!B#BDt$B%B'BEt(BFt)B*BGt+BHt,BItJt-B.BKtLt/B:B;BMt=B?B@B[B]BNt^B_B`B{B|B}B~BaCbCcCOtdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCPtWCXCYCZC0C1C2C3C4C5C6C7C8C9C!C#C$C%C'C(C)C*C+C,C-C.C/C:C;C=C?C@C[C]C^C_C`C{C|C}C~CaDbDcDdDeDfDgDhDiDjDkDlDmDQtnDoDpDqDrDsDtDuDvDRtwDxDyDzDADBDCDDDEDFDGDHDIDJDStKDLDMDNDODPDQDRDSDTDUDVDTtWDXDUtYDZD0D1DVt2DWt3D4D5D6D7D8D9D!DXtYt#DZt$D0t%D'D1t2t(D)D3t4t*D+D,D-D.D/D:D;D=D?D@D[D]D^D_D`D{D|D}D~DaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpE5tqErEsE6ttEuE7tvEwExEyEzE. / : ; 9 ! # $ ?cAEBECEDEEEFEGEHE*bIEJEKELEMENEOEPEibQERESETE8tUEVEWEXEYEZE0E1E2E3E+b9t4EY !t5E6E7E8E9E!E#E$E%E'E(E)E*E#t,b+E,E-E-b.b/b.E/E:E;E$t=E?E%t@E+v't(t)t*t[E]E+t^E_E]v`E{E:b;b|E}E~E,taF=b?bbFcFdFeF-t.tfFgFhFiF/t^v4v@b[bjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzFAFBFCFDFEFFFGFHF]bIFJFKFLFMFNF^b_bOFPFQFRF_v's`b{bSFTFUF:tVFWF;t`v{vXFYFZF0F1F=t2F3F4F5F6FC Z D E F G H 0 7F8F?t9F!F#F$F%F|b'F}b(F)F*F+F(vl m n o ,[email protected] J mbnb/F:F;F=F?F@F[F]F^F_F`F~bac1 bccc2 dcecfc{F[t|F}F]t~F^t_taGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzGAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG0G`t1Ggchcicjckclcmc2G3G4G5G6G7G8G9G!G{t#Gnc$G%Gocpcqcrcob| scpbtcqb'Gucvc(G|trbK )G}t~t*Gau+G,G-G.G/G:G;G=G?G@G[G]G^G_G`G{G|G}G~GaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHbuzHAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH0H1H2H3H4H5H6H7H8H9H!H#H$H%H'Hcuwc(H5v)H*H+H,H-H.H/H:H;H=H?H@H[H]H^H_H`H{H|H}H~HaIbIcIdI|v(s}v)s~v.seIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIduyIzIAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZIf qdxc0I6v1I7v2I8v3I4I5I6I7I8I9I!I#I$I%I_c`c'I(I)I*I+I,I-I.Ieu/Ifu:I;I=Iguhuiu?Iju@Iku[Ilu]I^I_I`I{I|I}Imu~IaJbJnucJdJeJoufJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJAJBJCJDJpuycEJFJGJHJIJJJKJLJMJNJzcOJPJQJRJSJTJUJVJWJXJYJquZJ0Jru,v1J2J3Jsutu4J5J6J7J8Juu9Jvu!J#J$J%J'J(J)J*J+J,Jwu-J.J/J:J;J=J?J@J[J]J^J_J`J{J|J}J~JaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxuxKyuyKzKzuAuAKBuCuBKCKDuDKEKEuFKFuGKHKGuHuIKJKKKLKMKNKOKPKQKIuRKSKTKUKJuVKKuWKXKYKZK0K1K2K3K4K5K6K7K8K9K!K#K$K%K'K(K)K*K+K,K-K.K/K:K;K=K?K@K[K]K^KLu_K`K{K|K}K~KaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzLALBLCLDLMuELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL0L1L2L3L4L5L6L7L8L9L!L#L$L%L'L(L)L*L+L,L-L.L/L:L;LNu=LOu?L@L[L]L^L_L`LPu{LQu|LRu}L~LaMbMcMdMeMfMgMhMiMjMkMlMSumMTunMoMpMUuqMrMsMtMuMvMwMxMyMzMAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMVuWMWuXMYMZMXu0M1MYu2M3M4M5M6M= ? @ [ % ' ( ) @c7M8M9M!M#M$M%M'M(M)MAc*M+M,M-M.M/M:M;Msb=M?M@M[M]M^MZu_M`M{M|M}M~MaNbNcNBcdNeN3 0ufNgNhNiNjNkNlNmNnNoNpNqNrNsNtN1uCcuNvNDcEcFcwNxN2uyNzN3u4uAN-v5u6u7u8uBNCNDN9uENFNGNawHNINJNGcHcKNLNMNNN!uONIcJcPNQNRNSN#u$uTNUNVNWNXN%uYNbw9vKcLcZN0N1N2N3N4N5N6N7N8N9N!N#N$N%N'N(N)N*N+N,N-N.N/N:N;N=N?N@N[N]N^N_N`N{N|NMc}N~NaObOcOdOeONcOcfOgOhOiOjOkOcw*sPcQclOmOnO'uoOpOqOdwewfwrOsOtOuOvOwOxO(uyOzOAOBOCODOEO)uFOL 4 M N O P Q 5 GO*uHO+uIO,uJOKOLOMONOOORcPOQOScROSOTOUOVOWOXO)vp q r s YO-uZO.u0OtbubvbR S wbxb1O/u2O3O4O5O6O:u7O8O9O!O#O$O%O'O(OTcUc6 VcWc7 XcYcZc)O;u*O+O=u,[email protected]/O:O;O=O?O@O[O]O^O_O`O{O|O}O~OaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzPAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP0P1P2P3P4P5P6P7P8P9P[u!P]u0c1c2c3c4c5c6c#P$P%P'P(P)P*P+P,P-P.P/P:P^u;P7c=P?P@P8c9c!c#cyb} $czb%cAb[P'c(c]P_uBbT ^P`u_P`P{u{P|P}P~PaQ|ubQcQdQeQ}ufQgQ~uhQiQavjQkQlQmQnQbvoQpQcvqQrQsQtQuQvQwQxQyQzQAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQdvQQRQSQTQUQVQWQXQYQZQ0Q1Q2Q3Qev4Q5Q6Q7Q8Q9Q!Q#Qfv$Q%Qgv'Q(Q)Q*Q+Q,Q-Q.Q/Q:Q;Q=Q?Q@Q[Q]Q^Q_Q`Q{Q|Q}Q~QaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRhv)cuR!vvRwRxRyRzRARBRCRDRERFRGRHRIRJRKRLRMRgwhwiwNRORPRQRRRSRTRURVRWRXRYRZR0R1R2R3R4R5R6R7R8R9R!R#R$R%Rg rd*c#v$v%v'R(R)R*R+R,R-R{c|c.R/R:R;R=R?R@R[R]R^R_R`R{R|R}R~RaSbScSdSeSfSgShSiviSjSkSlSmSnSoSpSqSrSsStSjvuSvS+cwSxSySzSASBSCSDS,cESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS0S1S2S3S4S5S6S7S8S9S!S#S$S%S'S(S)S*S+S,S-S.S/S:Skv;S=S?S@S[S]S^S_S`S{S|S}S~SaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxTyTzTATBTCTDTETFTGTHTITJTKTLTMTNTlvOTPTQTRTSTTTUTVTWTXTYTZT0T1T2T3T4T5T6T7T8T9T!T#T$T%T'T(T)T*Tmv+T,T-T.T/T:T;T=T?T@T[T]T^T_T`T{T|T}Tnvov~TaUpvbUcUdUeUqvfUgUhUiUjUkUlUmUnUoUpUqUrUrvsvsUtUuUvUwUxUyUzUAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU0U1U2U3U4U5U6Utv7Uuv8U9U!U#U$U%U'U(U)Uvv*Uwv+Uxv,U-U.Uyv/Uzv:U;UAv=U?U@UBv[U]UCv^U_U`U{UDvEv|UFv}UGvHv~UaVIvJvbVcVKvLvdVeVfVgVhViVjVkVlVmVMvnVoVpVqVrVsVtVuVvVwVNvxVyVzVAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVOvQVRVPvSVTVUVVVQvWVRvXVYVZV0VSv1V2VTv3V4V5V6V7V] ^ _ ` * + , - [c8V9V!VUv#V$V%V'V(V)V*V+VVv,s,V-c-V.V/V:V;V=V?V@V[VCb]V^V_V`V{V|V}V~VWvaWbWcWdWeWfWgWhWiWjWkWlWmW.cnWoW8 XvpWqWrWsWtWuWvWwWxWyWzWAWBWCWDWEWFWGWHWYv/cIWJWKW:c;c=cLWMW
1029 if key in (500, Exception): 2mwnwow*v/s:s;s=spwqw?srwsw.vtwuwDbEbvwwwxw@sywFbGbzwAwBwCw[s]sDwEwFwGw^s/vZvHbIbHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w4w5wJb6w7w8w9w!w#wKbLb$w%w'w(w:v$sMbNb)w*w_s+w,w;v=v-w.w/w:w;w`s=w?w@w[w]wt U u v w x y V ^w_w{s`w{w|w}w~waxObbxPbcxdxexfx|sgx}shx'vh i j k ix~sjxatkx~ abbbz A cbdblxbtmxnxoxpxqxctrxsxtxuxvxwxxxyxQbRbW SbTbX UbVbWbzxAxBxdtCxetftDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-x.x/x:x;x=x?x@x[x]xgt^xhtXbYbZb0b1b2b3b_x`x{x|x}x~xaybyitcy4bdyey5b6b7b8beb{ 9bfb!bgbfy#b$bgyjthbB hyktiyjykylymynyoypyqyrysytyltuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4ymt5y6y7y8y9y!y#y$y%y'y(y)y*y+y,y-y.y/y:y;y=y?y@y[y]y^y_y`y{y|y}y~yazbzczdzezfzgzhzizjzkzlzmznzozpzqzrznt%bszot0vtzuzvzwzxzyzptzzAzBzqtCzDzEzFzGzHzIzJzKzLzMzNzOzPzQz+sRzSz?v@v%s[v-sTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!z#z$z%z'z(z)z*z+z,z-z.z/z:z;z=z?z@z[z]z^z_z`z{z|z}z~zaAbArtcAdAeAfAgAe pd'b1v2v3vhAiAjAkAlAmAnAoApAqArAsAtA]c^cuAvAwAxAyAzAAABACADAEAFAGAHAIAJAKALAMANAOAPAQAstRASATAttUAVAWAutXAYAZA0A1A2A3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A(b/A:A;A=A?A@A[A]A^A_A`A)b{A|A}A~AaBbBcBdBeBfBgBvthBiBwtjBkBlBmBnBoBpBqBxtrBytsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBztAtUBVBWBXBYBZB0B1B2BBt3B4B5B6B7B8B9BCt!B#BDt$B%B'BEt(BFt)B*BGt+BHt,BItJt-B.BKtLt/B:B;BMt=B?B@B[B]BNt^B_B`B{B|B}B~BaCbCcCOtdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCPtWCXCYCZC0C1C2C3C4C5C6C7C8C9C!C#C$C%C'C(C)C*C+C,C-C.C/C:C;C=C?C@C[C]C^C_C`C{C|C}C~CaDbDcDdDeDfDgDhDiDjDkDlDmDQtnDoDpDqDrDsDtDuDvDRtwDxDyDzDADBDCDDDEDFDGDHDIDJDStKDLDMDNDODPDQDRDSDTDUDVDTtWDXDUtYDZD0D1DVt2DWt3D4D5D6D7D8D9D!DXtYt#DZt$D0t%D'D1t2t(D)D3t4t*D+D,D-D.D/D:D;D=D?D@D[D]D^D_D`D{D|D}D~DaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpE5tqErEsE6ttEuE7tvEwExEyEzE. / : ; 9 ! # $ ?cAEBECEDEEEFEGEHE*bIEJEKELEMENEOEPEibQERESETE8tUEVEWEXEYEZE0E1E2E3E+b9t4EY !t5E6E7E8E9E!E#E$E%E'E(E)E*E#t,b+E,E-E-b.b/b.E/E:E;E$t=E?E%t@E+v't(t)t*t[E]E+t^E_E]v`E{E:b;b|E}E~E,taF=b?bbFcFdFeF-t.tfFgFhFiF/t^v4v@b[bjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzFAFBFCFDFEFFFGFHF]bIFJFKFLFMFNF^b_bOFPFQFRF_v's`b{bSFTFUF:tVFWF;t`v{vXFYFZF0F1F=t2F3F4F5F6FC Z D E F G H 0 7F8F?t9F!F#F$F%F|b'F}b(F)F*F+F(vl m n o ,[email protected] J mbnb/F:F;F=F?F@F[F]F^F_F`F~bac1 bccc2 dcecfc{F[t|F}F]t~F^t_taGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzGAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG0G`t1Ggchcicjckclcmc2G3G4G5G6G7G8G9G!G{t#Gnc$G%Gocpcqcrcob| scpbtcqb'Gucvc(G|trbK )G}t~t*Gau+G,G-G.G/G:G;G=G?G@G[G]G^G_G`G{G|G}G~GaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHbuzHAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH0H1H2H3H4H5H6H7H8H9H!H#H$H%H'Hcuwc(H5v)H*H+H,H-H.H/H:H;H=H?H@H[H]H^H_H`H{H|H}H~HaIbIcIdI|v(s}v)s~v.seIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIduyIzIAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZIf qdxc0I6v1I7v2I8v3I4I5I6I7I8I9I!I#I$I%I_c`c'I(I)I*I+I,I-I.Ieu/Ifu:I;I=Iguhuiu?Iju@Iku[Ilu]I^I_I`I{I|I}Imu~IaJbJnucJdJeJoufJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJAJBJCJDJpuycEJFJGJHJIJJJKJLJMJNJzcOJPJQJRJSJTJUJVJWJXJYJquZJ0Jru,v1J2J3Jsutu4J5J6J7J8Juu9Jvu!J#J$J%J'J(J)J*J+J,Jwu-J.J/J:J;J=J?J@J[J]J^J_J`J{J|J}J~JaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxuxKyuyKzKzuAuAKBuCuBKCKDuDKEKEuFKFuGKHKGuHuIKJKKKLKMKNKOKPKQKIuRKSKTKUKJuVKKuWKXKYKZK0K1K2K3K4K5K6K7K8K9K!K#K$K%K'K(K)K*K+K,K-K.K/K:K;K=K?K@K[K]K^KLu_K`K{K|K}K~KaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzLALBLCLDLMuELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL0L1L2L3L4L5L6L7L8L9L!L#L$L%L'L(L)L*L+L,L-L.L/L:L;LNu=LOu?L@L[L]L^L_L`LPu{LQu|LRu}L~LaMbMcMdMeMfMgMhMiMjMkMlMSumMTunMoMpMUuqMrMsMtMuMvMwMxMyMzMAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMVuWMWuXMYMZMXu0M1MYu2M3M4M5M6M= ? @ [ % ' ( ) @c7M8M9M!M#M$M%M'M(M)MAc*M+M,M-M.M/M:M;Msb=M?M@M[M]M^MZu_M`M{M|M}M~MaNbNcNBcdNeN3 0ufNgNhNiNjNkNlNmNnNoNpNqNrNsNtN1uCcuNvNDcEcFcwNxN2uyNzN3u4uAN-v5u6u7u8uBNCNDN9uENFNGNawHNINJNGcHcKNLNMNNN!uONIcJcPNQNRNSN#u$uTNUNVNWNXN%uYNbw9vKcLcZN0N1N2N3N4N5N6N7N8N9N!N#N$N%N'N(N)N*N+N,N-N.N/N:N;N=N?N@N[N]N^N_N`N{N|NMc}N~NaObOcOdOeONcOcfOgOhOiOjOkOcw*sPcQclOmOnO'uoOpOqOdwewfwrOsOtOuOvOwOxO(uyOzOAOBOCODOEO)uFOL 4 M N O P Q 5 GO*uHO+uIO,uJOKOLOMONOOORcPOQOScROSOTOUOVOWOXO)vp q r s YO-uZO.u0OtbubvbR S wbxb1O/u2O3O4O5O6O:u7O8O9O!O#O$O%O'O(OTcUc6 VcWc7 XcYcZc)O;u*O+O=u,[email protected]/O:O;O=O?O@O[O]O^O_O`O{O|O}O~OaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzPAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP0P1P2P3P4P5P6P7P8P9P[u!P]u0c1c2c3c4c5c6c#P$P%P'P(P)P*P+P,P-P.P/P:P^u;P7c=P?P@P8c9c!c#cyb} $czb%cAb[P'c(c]P_uBbT ^P`u_P`P{u{P|P}P~PaQ|ubQcQdQeQ}ufQgQ~uhQiQavjQkQlQmQnQbvoQpQcvqQrQsQtQuQvQwQxQyQzQAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQdvQQRQSQTQUQVQWQXQYQZQ0Q1Q2Q3Qev4Q5Q6Q7Q8Q9Q!Q#Qfv$Q%Qgv'Q(Q)Q*Q+Q,Q-Q.Q/Q:Q;Q=Q?Q@Q[Q]Q^Q_Q`Q{Q|Q}Q~QaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRhv)cuR!vvRwRxRyRzRARBRCRDRERFRGRHRIRJRKRLRMRgwhwiwNRORPRQRRRSRTRURVRWRXRYRZR0R1R2R3R4R5R6R7R8R9R!R#R$R%Rg rd*c#v$v%v'R(R)R*R+R,R-R{c|c.R/R:R;R=R?R@R[R]R^R_R`R{R|R}R~RaSbScSdSeSfSgShSiviSjSkSlSmSnSoSpSqSrSsStSjvuSvS+cwSxSySzSASBSCSDS,cESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS0S1S2S3S4S5S6S7S8S9S!S#S$S%S'S(S)S*S+S,S-S.S/S:Skv;S=S?S@S[S]S^S_S`S{S|S}S~SaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxTyTzTATBTCTDTETFTGTHTITJTKTLTMTNTlvOTPTQTRTSTTTUTVTWTXTYTZT0T1T2T3T4T5T6T7T8T9T!T#T$T%T'T(T)T*Tmv+T,T-T.T/T:T;T=T?T@T[T]T^T_T`T{T|T}Tnvov~TaUpvbUcUdUeUqvfUgUhUiUjUkUlUmUnUoUpUqUrUrvsvsUtUuUvUwUxUyUzUAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU0U1U2U3U4U5U6Utv7Uuv8U9U!U#U$U%U'U(U)Uvv*Uwv+Uxv,U-U.Uyv/Uzv:U;UAv=U?U@UBv[U]UCv^U_U`U{UDvEv|UFv}UGvHv~UaVIvJvbVcVKvLvdVeVfVgVhViVjVkVlVmVMvnVoVpVqVrVsVtVuVvVwVNvxVyVzVAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVOvQVRVPvSVTVUVVVQvWVRvXVYVZV0VSv1V2VTv3V4V5V6V7V] ^ _ ` * + , - [c8V9V!VUv#V$V%V'V(V)V*V+VVv,s,V-c-V.V/V:V;V=V?V@V[VCb]V^V_V`V{V|V}V~VWvaWbWcWdWeWfWgWhWiWjWkWlWmW.cnWoW8 XvpWqWrWsWtWuWvWwWxWyWzWAWBWCWDWEWFWGWHWYv/cIWJWKW:c;c=cLWMW
1030 error_handler = value 3;v =v (Bb)Bb`v {v dw ew fw
1031 else:
1032 exception_handlers[key] = value 2mwnwow*v/s:s;s=spwqw?srwsw.vtwuwDbEbvwwwxw@sywFbGbzwAwBwCw[s]sDwEwFwGw^s/vZvHbIbHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w4w5wJb6w7w8w9w!w#wKbLb$w%w'w(w:v$sMbNb)w*w_s+w,w;v=v-w.w/w:w;w`s=w?w@w[w]wt U u v w x y V ^w_w{s`w{w|w}w~waxObbxPbcxdxexfx|sgx}shx'vh i j k ix~sjxatkx~ abbbz A cbdblxbtmxnxoxpxqxctrxsxtxuxvxwxxxyxQbRbW SbTbX UbVbWbzxAxBxdtCxetftDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-x.x/x:x;x=x?x@x[x]xgt^xhtXbYbZb0b1b2b3b_x`x{x|x}x~xaybyitcy4bdyey5b6b7b8beb{ 9bfb!bgbfy#b$bgyjthbB hyktiyjykylymynyoypyqyrysytyltuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4ymt5y6y7y8y9y!y#y$y%y'y(y)y*y+y,y-y.y/y:y;y=y?y@y[y]y^y_y`y{y|y}y~yazbzczdzezfzgzhzizjzkzlzmznzozpzqzrznt%bszot0vtzuzvzwzxzyzptzzAzBzqtCzDzEzFzGzHzIzJzKzLzMzNzOzPzQz+sRzSz?v@v%s[v-sTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!z#z$z%z'z(z)z*z+z,z-z.z/z:z;z=z?z@z[z]z^z_z`z{z|z}z~zaAbArtcAdAeAfAgAe pd'b1v2v3vhAiAjAkAlAmAnAoApAqArAsAtA]c^cuAvAwAxAyAzAAABACADAEAFAGAHAIAJAKALAMANAOAPAQAstRASATAttUAVAWAutXAYAZA0A1A2A3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A(b/A:A;A=A?A@A[A]A^A_A`A)b{A|A}A~AaBbBcBdBeBfBgBvthBiBwtjBkBlBmBnBoBpBqBxtrBytsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBztAtUBVBWBXBYBZB0B1B2BBt3B4B5B6B7B8B9BCt!B#BDt$B%B'BEt(BFt)B*BGt+BHt,BItJt-B.BKtLt/B:B;BMt=B?B@B[B]BNt^B_B`B{B|B}B~BaCbCcCOtdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCPtWCXCYCZC0C1C2C3C4C5C6C7C8C9C!C#C$C%C'C(C)C*C+C,C-C.C/C:C;C=C?C@C[C]C^C_C`C{C|C}C~CaDbDcDdDeDfDgDhDiDjDkDlDmDQtnDoDpDqDrDsDtDuDvDRtwDxDyDzDADBDCDDDEDFDGDHDIDJDStKDLDMDNDODPDQDRDSDTDUDVDTtWDXDUtYDZD0D1DVt2DWt3D4D5D6D7D8D9D!DXtYt#DZt$D0t%D'D1t2t(D)D3t4t*D+D,D-D.D/D:D;D=D?D@D[D]D^D_D`D{D|D}D~DaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpE5tqErEsE6ttEuE7tvEwExEyEzE. / : ; 9 ! # $ ?cAEBECEDEEEFEGEHE*bIEJEKELEMENEOEPEibQERESETE8tUEVEWEXEYEZE0E1E2E3E+b9t4EY !t5E6E7E8E9E!E#E$E%E'E(E)E*E#t,b+E,E-E-b.b/b.E/E:E;E$t=E?E%t@E+v't(t)t*t[E]E+t^E_E]v`E{E:b;b|E}E~E,taF=b?bbFcFdFeF-t.tfFgFhFiF/t^v4v@b[bjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzFAFBFCFDFEFFFGFHF]bIFJFKFLFMFNF^b_bOFPFQFRF_v's`b{bSFTFUF:tVFWF;t`v{vXFYFZF0F1F=t2F3F4F5F6FC Z D E F G H 0 7F8F?t9F!F#F$F%F|b'F}b(F)F*F+F(vl m n o ,[email protected] J mbnb/F:F;F=F?F@F[F]F^F_F`F~bac1 bccc2 dcecfc{F[t|F}F]t~F^t_taGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzGAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG0G`t1Ggchcicjckclcmc2G3G4G5G6G7G8G9G!G{t#Gnc$G%Gocpcqcrcob| scpbtcqb'Gucvc(G|trbK )G}t~t*Gau+G,G-G.G/G:G;G=G?G@G[G]G^G_G`G{G|G}G~GaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHbuzHAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH0H1H2H3H4H5H6H7H8H9H!H#H$H%H'Hcuwc(H5v)H*H+H,H-H.H/H:H;H=H?H@H[H]H^H_H`H{H|H}H~HaIbIcIdI|v(s}v)s~v.seIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIduyIzIAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZIf qdxc0I6v1I7v2I8v3I4I5I6I7I8I9I!I#I$I%I_c`c'I(I)I*I+I,I-I.Ieu/Ifu:I;I=Iguhuiu?Iju@Iku[Ilu]I^I_I`I{I|I}Imu~IaJbJnucJdJeJoufJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJAJBJCJDJpuycEJFJGJHJIJJJKJLJMJNJzcOJPJQJRJSJTJUJVJWJXJYJquZJ0Jru,v1J2J3Jsutu4J5J6J7J8Juu9Jvu!J#J$J%J'J(J)J*J+J,Jwu-J.J/J:J;J=J?J@J[J]J^J_J`J{J|J}J~JaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxuxKyuyKzKzuAuAKBuCuBKCKDuDKEKEuFKFuGKHKGuHuIKJKKKLKMKNKOKPKQKIuRKSKTKUKJuVKKuWKXKYKZK0K1K2K3K4K5K6K7K8K9K!K#K$K%K'K(K)K*K+K,K-K.K/K:K;K=K?K@K[K]K^KLu_K`K{K|K}K~KaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzLALBLCLDLMuELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL0L1L2L3L4L5L6L7L8L9L!L#L$L%L'L(L)L*L+L,L-L.L/L:L;LNu=LOu?L@L[L]L^L_L`LPu{LQu|LRu}L~LaMbMcMdMeMfMgMhMiMjMkMlMSumMTunMoMpMUuqMrMsMtMuMvMwMxMyMzMAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMVuWMWuXMYMZMXu0M1MYu2M3M4M5M6M= ? @ [ % ' ( ) @c7M8M9M!M#M$M%M'M(M)MAc*M+M,M-M.M/M:M;Msb=M?M@M[M]M^MZu_M`M{M|M}M~MaNbNcNBcdNeN3 0ufNgNhNiNjNkNlNmNnNoNpNqNrNsNtN1uCcuNvNDcEcFcwNxN2uyNzN3u4uAN-v5u6u7u8uBNCNDN9uENFNGNawHNINJNGcHcKNLNMNNN!uONIcJcPNQNRNSN#u$uTNUNVNWNXN%uYNbw9vKcLcZN0N1N2N3N4N5N6N7N8N9N!N#N$N%N'N(N)N*N+N,N-N.N/N:N;N=N?N@N[N]N^N_N`N{N|NMc}N~NaObOcOdOeONcOcfOgOhOiOjOkOcw*sPcQclOmOnO'uoOpOqOdwewfwrOsOtOuOvOwOxO(uyOzOAOBOCODOEO)uFOL 4 M N O P Q 5 GO*uHO+uIO,uJOKOLOMONOOORcPOQOScROSOTOUOVOWOXO)vp q r s YO-uZO.u0OtbubvbR S wbxb1O/u2O3O4O5O6O:u7O8O9O!O#O$O%O'O(OTcUc6 VcWc7 XcYcZc)O;u*O+O=u,[email protected]/O:O;O=O?O@O[O]O^O_O`O{O|O}O~OaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzPAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP0P1P2P3P4P5P6P7P8P9P[u!P]u0c1c2c3c4c5c6c#P$P%P'P(P)P*P+P,P-P.P/P:P^u;P7c=P?P@P8c9c!c#cyb} $czb%cAb[P'c(c]P_uBbT ^P`u_P`P{u{P|P}P~PaQ|ubQcQdQeQ}ufQgQ~uhQiQavjQkQlQmQnQbvoQpQcvqQrQsQtQuQvQwQxQyQzQAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQdvQQRQSQTQUQVQWQXQYQZQ0Q1Q2Q3Qev4Q5Q6Q7Q8Q9Q!Q#Qfv$Q%Qgv'Q(Q)Q*Q+Q,Q-Q.Q/Q:Q;Q=Q?Q@Q[Q]Q^Q_Q`Q{Q|Q}Q~QaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRhv)cuR!vvRwRxRyRzRARBRCRDRERFRGRHRIRJRKRLRMRgwhwiwNRORPRQRRRSRTRURVRWRXRYRZR0R1R2R3R4R5R6R7R8R9R!R#R$R%Rg rd*c#v$v%v'R(R)R*R+R,R-R{c|c.R/R:R;R=R?R@R[R]R^R_R`R{R|R}R~RaSbScSdSeSfSgShSiviSjSkSlSmSnSoSpSqSrSsStSjvuSvS+cwSxSySzSASBSCSDS,cESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS0S1S2S3S4S5S6S7S8S9S!S#S$S%S'S(S)S*S+S,S-S.S/S:Skv;S=S?S@S[S]S^S_S`S{S|S}S~SaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxTyTzTATBTCTDTETFTGTHTITJTKTLTMTNTlvOTPTQTRTSTTTUTVTWTXTYTZT0T1T2T3T4T5T6T7T8T9T!T#T$T%T'T(T)T*Tmv+T,T-T.T/T:T;T=T?T@T[T]T^T_T`T{T|T}Tnvov~TaUpvbUcUdUeUqvfUgUhUiUjUkUlUmUnUoUpUqUrUrvsvsUtUuUvUwUxUyUzUAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU0U1U2U3U4U5U6Utv7Uuv8U9U!U#U$U%U'U(U)Uvv*Uwv+Uxv,U-U.Uyv/Uzv:U;UAv=U?U@UBv[U]UCv^U_U`U{UDvEv|UFv}UGvHv~UaVIvJvbVcVKvLvdVeVfVgVhViVjVkVlVmVMvnVoVpVqVrVsVtVuVvVwVNvxVyVzVAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVOvQVRVPvSVTVUVVVQvWVRvXVYVZV0VSv1V2VTv3V4V5V6V7V] ^ _ ` * + , - [c8V9V!VUv#V$V%V'V(V)V*V+VVv,s,V-c-V.V/V:V;V=V?V@V[VCb]V^V_V`V{V|V}V~VWvaWbWcWdWeWfWgWhWiWjWkWlWmW.cnWoW8 XvpWqWrWsWtWuWvWwWxWyWzWAWBWCWDWEWFWGWHWYv/cIWJWKW:c;c=cLWMW
1034 middleware = ( 2mwnwow*v/s:s;s=spwqw?srwsw.vtwuwDbEbvwwwxw@sywFbGbzwAwBwCw[s]sDwEwFwGw^s/vZvHbIbHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w4w5wJb6w7w8w9w!w#wKbLb$w%w'w(w:v$sMbNb)w*w_s+w,w;v=v-w.w/w:w;w`s=w?w@w[w]wt U u v w x y V ^w_w{s`w{w|w}w~waxObbxPbcxdxexfx|sgx}shx'vh i j k ix~sjxatkx~ abbbz A cbdblxbtmxnxoxpxqxctrxsxtxuxvxwxxxyxQbRbW SbTbX UbVbWbzxAxBxdtCxetftDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-x.x/x:x;x=x?x@x[x]xgt^xhtXbYbZb0b1b2b3b_x`x{x|x}x~xaybyitcy4bdyey5b6b7b8beb{ 9bfb!bgbfy#b$bgyjthbB hyktiyjykylymynyoypyqyrysytyltuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4ymt5y6y7y8y9y!y#y$y%y'y(y)y*y+y,y-y.y/y:y;y=y?y@y[y]y^y_y`y{y|y}y~yazbzczdzezfzgzhzizjzkzlzmznzozpzqzrznt%bszot0vtzuzvzwzxzyzptzzAzBzqtCzDzEzFzGzHzIzJzKzLzMzNzOzPzQz+sRzSz?v@v%s[v-sTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!z#z$z%z'z(z)z*z+z,z-z.z/z:z;z=z?z@z[z]z^z_z`z{z|z}z~zaAbArtcAdAeAfAgAe pd'b1v2v3vhAiAjAkAlAmAnAoApAqArAsAtA]c^cuAvAwAxAyAzAAABACADAEAFAGAHAIAJAKALAMANAOAPAQAstRASATAttUAVAWAutXAYAZA0A1A2A3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A(b/A:A;A=A?A@A[A]A^A_A`A)b{A|A}A~AaBbBcBdBeBfBgBvthBiBwtjBkBlBmBnBoBpBqBxtrBytsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBztAtUBVBWBXBYBZB0B1B2BBt3B4B5B6B7B8B9BCt!B#BDt$B%B'BEt(BFt)B*BGt+BHt,BItJt-B.BKtLt/B:B;BMt=B?B@B[B]BNt^B_B`B{B|B}B~BaCbCcCOtdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCPtWCXCYCZC0C1C2C3C4C5C6C7C8C9C!C#C$C%C'C(C)C*C+C,C-C.C/C:C;C=C?C@C[C]C^C_C`C{C|C}C~CaDbDcDdDeDfDgDhDiDjDkDlDmDQtnDoDpDqDrDsDtDuDvDRtwDxDyDzDADBDCDDDEDFDGDHDIDJDStKDLDMDNDODPDQDRDSDTDUDVDTtWDXDUtYDZD0D1DVt2DWt3D4D5D6D7D8D9D!DXtYt#DZt$D0t%D'D1t2t(D)D3t4t*D+D,D-D.D/D:D;D=D?D@D[D]D^D_D`D{D|D}D~DaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpE5tqErEsE6ttEuE7tvEwExEyEzE. / : ; 9 ! # $ ?cAEBECEDEEEFEGEHE*bIEJEKELEMENEOEPEibQERESETE8tUEVEWEXEYEZE0E1E2E3E+b9t4EY !t5E6E7E8E9E!E#E$E%E'E(E)E*E#t,b+E,E-E-b.b/b.E/E:E;E$t=E?E%t@E+v't(t)t*t[E]E+t^E_E]v`E{E:b;b|E}E~E,taF=b?bbFcFdFeF-t.tfFgFhFiF/t^v4v@b[bjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzFAFBFCFDFEFFFGFHF]bIFJFKFLFMFNF^b_bOFPFQFRF_v's`b{bSFTFUF:tVFWF;t`v{vXFYFZF0F1F=t2F3F4F5F6FC Z D E F G H 0 7F8F?t9F!F#F$F%F|b'F}b(F)F*F+F(vl m n o ,[email protected] J mbnb/F:F;F=F?F@F[F]F^F_F`F~bac1 bccc2 dcecfc{F[t|F}F]t~F^t_taGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzGAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG0G`t1Ggchcicjckclcmc2G3G4G5G6G7G8G9G!G{t#Gnc$G%Gocpcqcrcob| scpbtcqb'Gucvc(G|trbK )G}t~t*Gau+G,G-G.G/G:G;G=G?G@G[G]G^G_G`G{G|G}G~GaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHbuzHAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH0H1H2H3H4H5H6H7H8H9H!H#H$H%H'Hcuwc(H5v)H*H+H,H-H.H/H:H;H=H?H@H[H]H^H_H`H{H|H}H~HaIbIcIdI|v(s}v)s~v.seIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIduyIzIAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZIf qdxc0I6v1I7v2I8v3I4I5I6I7I8I9I!I#I$I%I_c`c'I(I)I*I+I,I-I.Ieu/Ifu:I;I=Iguhuiu?Iju@Iku[Ilu]I^I_I`I{I|I}Imu~IaJbJnucJdJeJoufJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJAJBJCJDJpuycEJFJGJHJIJJJKJLJMJNJzcOJPJQJRJSJTJUJVJWJXJYJquZJ0Jru,v1J2J3Jsutu4J5J6J7J8Juu9Jvu!J#J$J%J'J(J)J*J+J,Jwu-J.J/J:J;J=J?J@J[J]J^J_J`J{J|J}J~JaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxuxKyuyKzKzuAuAKBuCuBKCKDuDKEKEuFKFuGKHKGuHuIKJKKKLKMKNKOKPKQKIuRKSKTKUKJuVKKuWKXKYKZK0K1K2K3K4K5K6K7K8K9K!K#K$K%K'K(K)K*K+K,K-K.K/K:K;K=K?K@K[K]K^KLu_K`K{K|K}K~KaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzLALBLCLDLMuELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL0L1L2L3L4L5L6L7L8L9L!L#L$L%L'L(L)L*L+L,L-L.L/L:L;LNu=LOu?L@L[L]L^L_L`LPu{LQu|LRu}L~LaMbMcMdMeMfMgMhMiMjMkMlMSumMTunMoMpMUuqMrMsMtMuMvMwMxMyMzMAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMVuWMWuXMYMZMXu0M1MYu2M3M4M5M6M= ? @ [ % ' ( ) @c7M8M9M!M#M$M%M'M(M)MAc*M+M,M-M.M/M:M;Msb=M?M@M[M]M^MZu_M`M{M|M}M~MaNbNcNBcdNeN3 0ufNgNhNiNjNkNlNmNnNoNpNqNrNsNtN1uCcuNvNDcEcFcwNxN2uyNzN3u4uAN-v5u6u7u8uBNCNDN9uENFNGNawHNINJNGcHcKNLNMNNN!uONIcJcPNQNRNSN#u$uTNUNVNWNXN%uYNbw9vKcLcZN0N1N2N3N4N5N6N7N8N9N!N#N$N%N'N(N)N*N+N,N-N.N/N:N;N=N?N@N[N]N^N_N`N{N|NMc}N~NaObOcOdOeONcOcfOgOhOiOjOkOcw*sPcQclOmOnO'uoOpOqOdwewfwrOsOtOuOvOwOxO(uyOzOAOBOCODOEO)uFOL 4 M N O P Q 5 GO*uHO+uIO,uJOKOLOMONOOORcPOQOScROSOTOUOVOWOXO)vp q r s YO-uZO.u0OtbubvbR S wbxb1O/u2O3O4O5O6O:u7O8O9O!O#O$O%O'O(OTcUc6 VcWc7 XcYcZc)O;u*O+O=u,[email protected]/O:O;O=O?O@O[O]O^O_O`O{O|O}O~OaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzPAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP0P1P2P3P4P5P6P7P8P9P[u!P]u0c1c2c3c4c5c6c#P$P%P'P(P)P*P+P,P-P.P/P:P^u;P7c=P?P@P8c9c!c#cyb} $czb%cAb[P'c(c]P_uBbT ^P`u_P`P{u{P|P}P~PaQ|ubQcQdQeQ}ufQgQ~uhQiQavjQkQlQmQnQbvoQpQcvqQrQsQtQuQvQwQxQyQzQAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQdvQQRQSQTQUQVQWQXQYQZQ0Q1Q2Q3Qev4Q5Q6Q7Q8Q9Q!Q#Qfv$Q%Qgv'Q(Q)Q*Q+Q,Q-Q.Q/Q:Q;Q=Q?Q@Q[Q]Q^Q_Q`Q{Q|Q}Q~QaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRhv)cuR!vvRwRxRyRzRARBRCRDRERFRGRHRIRJRKRLRMRgwhwiwNRORPRQRRRSRTRURVRWRXRYRZR0R1R2R3R4R5R6R7R8R9R!R#R$R%Rg rd*c#v$v%v'R(R)R*R+R,R-R{c|c.R/R:R;R=R?R@R[R]R^R_R`R{R|R}R~RaSbScSdSeSfSgShSiviSjSkSlSmSnSoSpSqSrSsStSjvuSvS+cwSxSySzSASBSCSDS,cESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS0S1S2S3S4S5S6S7S8S9S!S#S$S%S'S(S)S*S+S,S-S.S/S:Skv;S=S?S@S[S]S^S_S`S{S|S}S~SaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxTyTzTATBTCTDTETFTGTHTITJTKTLTMTNTlvOTPTQTRTSTTTUTVTWTXTYTZT0T1T2T3T4T5T6T7T8T9T!T#T$T%T'T(T)T*Tmv+T,T-T.T/T:T;T=T?T@T[T]T^T_T`T{T|T}Tnvov~TaUpvbUcUdUeUqvfUgUhUiUjUkUlUmUnUoUpUqUrUrvsvsUtUuUvUwUxUyUzUAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU0U1U2U3U4U5U6Utv7Uuv8U9U!U#U$U%U'U(U)Uvv*Uwv+Uxv,U-U.Uyv/Uzv:U;UAv=U?U@UBv[U]UCv^U_U`U{UDvEv|UFv}UGvHv~UaVIvJvbVcVKvLvdVeVfVgVhViVjVkVlVmVMvnVoVpVqVrVsVtVuVvVwVNvxVyVzVAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVOvQVRVPvSVTVUVVVQvWVRvXVYVZV0VSv1V2VTv3V4V5V6V7V] ^ _ ` * + , - [c8V9V!VUv#V$V%V'V(V)V*V+VVv,s,V-c-V.V/V:V;V=V?V@V[VCb]V^V_V`V{V|V}V~VWvaWbWcWdWeWfWgWhWiWjWkWlWmW.cnWoW8 XvpWqWrWsWtWuWvWwWxWyWzWAWBWCWDWEWFWGWHWYv/cIWJWKW:c;c=cLWMW
1035 [Middleware(ServerErrorMiddleware, handler=error_handler, debug=debug)]
1036 + self.user_middleware
1037 + [
1038 Middleware(
1039 ExceptionMiddleware, handlers=exception_handlers, debug=debug
1040 ),
1041 # Add FastAPI-specific AsyncExitStackMiddleware for closing files.
1042 # Before this was also used for closing dependencies with yield but
1043 # those now have their own AsyncExitStack, to properly support
1044 # streaming responses while keeping compatibility with the previous
1045 # versions (as of writing 0.117.1) that allowed doing
1046 # except HTTPException inside a dependency with yield.
1047 # This needs to happen after user middlewares because those create a
1048 # new contextvars context copy by using a new AnyIO task group.
1049 # This AsyncExitStack preserves the context for contextvars, not
1050 # strictly necessary for closing files but it was one of the original
1051 # intentions.
1052 # If the AsyncExitStack lived outside of the custom middlewares and
1053 # contextvars were set, for example in a dependency with 'yield'
1054 # in that internal contextvars context, the values would not be
1055 # available in the outer context of the AsyncExitStack.
1056 # By placing the middleware and the AsyncExitStack here, inside all
1057 # user middlewares, the same context is used.
1058 # This is currently not needed, only for closing files, but used to be
1059 # important when dependencies with yield were closed here.
1060 Middleware(AsyncExitStackMiddleware),
1061 ]
1062 )
1064 app = self.router 2mwnwow*v/s:s;s=spwqw?srwsw.vtwuwDbEbvwwwxw@sywFbGbzwAwBwCw[s]sDwEwFwGw^s/vZvHbIbHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w4w5wJb6w7w8w9w!w#wKbLb$w%w'w(w:v$sMbNb)w*w_s+w,w;v=v-w.w/w:w;w`s=w?w@w[w]wt U u v w x y V ^w_w{s`w{w|w}w~waxObbxPbcxdxexfx|sgx}shx'vh i j k ix~sjxatkx~ abbbz A cbdblxbtmxnxoxpxqxctrxsxtxuxvxwxxxyxQbRbW SbTbX UbVbWbzxAxBxdtCxetftDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-x.x/x:x;x=x?x@x[x]xgt^xhtXbYbZb0b1b2b3b_x`x{x|x}x~xaybyitcy4bdyey5b6b7b8beb{ 9bfb!bgbfy#b$bgyjthbB hyktiyjykylymynyoypyqyrysytyltuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4ymt5y6y7y8y9y!y#y$y%y'y(y)y*y+y,y-y.y/y:y;y=y?y@y[y]y^y_y`y{y|y}y~yazbzczdzezfzgzhzizjzkzlzmznzozpzqzrznt%bszot0vtzuzvzwzxzyzptzzAzBzqtCzDzEzFzGzHzIzJzKzLzMzNzOzPzQz+sRzSz?v@v%s[v-sTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!z#z$z%z'z(z)z*z+z,z-z.z/z:z;z=z?z@z[z]z^z_z`z{z|z}z~zaAbArtcAdAeAfAgAe pd'b1v2v3vhAiAjAkAlAmAnAoApAqArAsAtA]c^cuAvAwAxAyAzAAABACADAEAFAGAHAIAJAKALAMANAOAPAQAstRASATAttUAVAWAutXAYAZA0A1A2A3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A(b/A:A;A=A?A@A[A]A^A_A`A)b{A|A}A~AaBbBcBdBeBfBgBvthBiBwtjBkBlBmBnBoBpBqBxtrBytsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBztAtUBVBWBXBYBZB0B1B2BBt3B4B5B6B7B8B9BCt!B#BDt$B%B'BEt(BFt)B*BGt+BHt,BItJt-B.BKtLt/B:B;BMt=B?B@B[B]BNt^B_B`B{B|B}B~BaCbCcCOtdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCPtWCXCYCZC0C1C2C3C4C5C6C7C8C9C!C#C$C%C'C(C)C*C+C,C-C.C/C:C;C=C?C@C[C]C^C_C`C{C|C}C~CaDbDcDdDeDfDgDhDiDjDkDlDmDQtnDoDpDqDrDsDtDuDvDRtwDxDyDzDADBDCDDDEDFDGDHDIDJDStKDLDMDNDODPDQDRDSDTDUDVDTtWDXDUtYDZD0D1DVt2DWt3D4D5D6D7D8D9D!DXtYt#DZt$D0t%D'D1t2t(D)D3t4t*D+D,D-D.D/D:D;D=D?D@D[D]D^D_D`D{D|D}D~DaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpE5tqErEsE6ttEuE7tvEwExEyEzE. / : ; 9 ! # $ ?cAEBECEDEEEFEGEHE*bIEJEKELEMENEOEPEibQERESETE8tUEVEWEXEYEZE0E1E2E3E+b9t4EY !t5E6E7E8E9E!E#E$E%E'E(E)E*E#t,b+E,E-E-b.b/b.E/E:E;E$t=E?E%t@E+v't(t)t*t[E]E+t^E_E]v`E{E:b;b|E}E~E,taF=b?bbFcFdFeF-t.tfFgFhFiF/t^v4v@b[bjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzFAFBFCFDFEFFFGFHF]bIFJFKFLFMFNF^b_bOFPFQFRF_v's`b{bSFTFUF:tVFWF;t`v{vXFYFZF0F1F=t2F3F4F5F6FC Z D E F G H 0 7F8F?t9F!F#F$F%F|b'F}b(F)F*F+F(vl m n o ,[email protected] J mbnb/F:F;F=F?F@F[F]F^F_F`F~bac1 bccc2 dcecfc{F[t|F}F]t~F^t_taGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzGAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG0G`t1Ggchcicjckclcmc2G3G4G5G6G7G8G9G!G{t#Gnc$G%Gocpcqcrcob| scpbtcqb'Gucvc(G|trbK )G}t~t*Gau+G,G-G.G/G:G;G=G?G@G[G]G^G_G`G{G|G}G~GaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHbuzHAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH0H1H2H3H4H5H6H7H8H9H!H#H$H%H'Hcuwc(H5v)H*H+H,H-H.H/H:H;H=H?H@H[H]H^H_H`H{H|H}H~HaIbIcIdI|v(s}v)s~v.seIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIduyIzIAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZIf qdxc0I6v1I7v2I8v3I4I5I6I7I8I9I!I#I$I%I_c`c'I(I)I*I+I,I-I.Ieu/Ifu:I;I=Iguhuiu?Iju@Iku[Ilu]I^I_I`I{I|I}Imu~IaJbJnucJdJeJoufJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJAJBJCJDJpuycEJFJGJHJIJJJKJLJMJNJzcOJPJQJRJSJTJUJVJWJXJYJquZJ0Jru,v1J2J3Jsutu4J5J6J7J8Juu9Jvu!J#J$J%J'J(J)J*J+J,Jwu-J.J/J:J;J=J?J@J[J]J^J_J`J{J|J}J~JaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxuxKyuyKzKzuAuAKBuCuBKCKDuDKEKEuFKFuGKHKGuHuIKJKKKLKMKNKOKPKQKIuRKSKTKUKJuVKKuWKXKYKZK0K1K2K3K4K5K6K7K8K9K!K#K$K%K'K(K)K*K+K,K-K.K/K:K;K=K?K@K[K]K^KLu_K`K{K|K}K~KaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzLALBLCLDLMuELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL0L1L2L3L4L5L6L7L8L9L!L#L$L%L'L(L)L*L+L,L-L.L/L:L;LNu=LOu?L@L[L]L^L_L`LPu{LQu|LRu}L~LaMbMcMdMeMfMgMhMiMjMkMlMSumMTunMoMpMUuqMrMsMtMuMvMwMxMyMzMAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMVuWMWuXMYMZMXu0M1MYu2M3M4M5M6M= ? @ [ % ' ( ) @c7M8M9M!M#M$M%M'M(M)MAc*M+M,M-M.M/M:M;Msb=M?M@M[M]M^MZu_M`M{M|M}M~MaNbNcNBcdNeN3 0ufNgNhNiNjNkNlNmNnNoNpNqNrNsNtN1uCcuNvNDcEcFcwNxN2uyNzN3u4uAN-v5u6u7u8uBNCNDN9uENFNGNawHNINJNGcHcKNLNMNNN!uONIcJcPNQNRNSN#u$uTNUNVNWNXN%uYNbw9vKcLcZN0N1N2N3N4N5N6N7N8N9N!N#N$N%N'N(N)N*N+N,N-N.N/N:N;N=N?N@N[N]N^N_N`N{N|NMc}N~NaObOcOdOeONcOcfOgOhOiOjOkOcw*sPcQclOmOnO'uoOpOqOdwewfwrOsOtOuOvOwOxO(uyOzOAOBOCODOEO)uFOL 4 M N O P Q 5 GO*uHO+uIO,uJOKOLOMONOOORcPOQOScROSOTOUOVOWOXO)vp q r s YO-uZO.u0OtbubvbR S wbxb1O/u2O3O4O5O6O:u7O8O9O!O#O$O%O'O(OTcUc6 VcWc7 XcYcZc)O;u*O+O=u,[email protected]/O:O;O=O?O@O[O]O^O_O`O{O|O}O~OaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzPAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP0P1P2P3P4P5P6P7P8P9P[u!P]u0c1c2c3c4c5c6c#P$P%P'P(P)P*P+P,P-P.P/P:P^u;P7c=P?P@P8c9c!c#cyb} $czb%cAb[P'c(c]P_uBbT ^P`u_P`P{u{P|P}P~PaQ|ubQcQdQeQ}ufQgQ~uhQiQavjQkQlQmQnQbvoQpQcvqQrQsQtQuQvQwQxQyQzQAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQdvQQRQSQTQUQVQWQXQYQZQ0Q1Q2Q3Qev4Q5Q6Q7Q8Q9Q!Q#Qfv$Q%Qgv'Q(Q)Q*Q+Q,Q-Q.Q/Q:Q;Q=Q?Q@Q[Q]Q^Q_Q`Q{Q|Q}Q~QaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRhv)cuR!vvRwRxRyRzRARBRCRDRERFRGRHRIRJRKRLRMRgwhwiwNRORPRQRRRSRTRURVRWRXRYRZR0R1R2R3R4R5R6R7R8R9R!R#R$R%Rg rd*c#v$v%v'R(R)R*R+R,R-R{c|c.R/R:R;R=R?R@R[R]R^R_R`R{R|R}R~RaSbScSdSeSfSgShSiviSjSkSlSmSnSoSpSqSrSsStSjvuSvS+cwSxSySzSASBSCSDS,cESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS0S1S2S3S4S5S6S7S8S9S!S#S$S%S'S(S)S*S+S,S-S.S/S:Skv;S=S?S@S[S]S^S_S`S{S|S}S~SaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxTyTzTATBTCTDTETFTGTHTITJTKTLTMTNTlvOTPTQTRTSTTTUTVTWTXTYTZT0T1T2T3T4T5T6T7T8T9T!T#T$T%T'T(T)T*Tmv+T,T-T.T/T:T;T=T?T@T[T]T^T_T`T{T|T}Tnvov~TaUpvbUcUdUeUqvfUgUhUiUjUkUlUmUnUoUpUqUrUrvsvsUtUuUvUwUxUyUzUAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU0U1U2U3U4U5U6Utv7Uuv8U9U!U#U$U%U'U(U)Uvv*Uwv+Uxv,U-U.Uyv/Uzv:U;UAv=U?U@UBv[U]UCv^U_U`U{UDvEv|UFv}UGvHv~UaVIvJvbVcVKvLvdVeVfVgVhViVjVkVlVmVMvnVoVpVqVrVsVtVuVvVwVNvxVyVzVAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVOvQVRVPvSVTVUVVVQvWVRvXVYVZV0VSv1V2VTv3V4V5V6V7V] ^ _ ` * + , - [c8V9V!VUv#V$V%V'V(V)V*V+VVv,s,V-c-V.V/V:V;V=V?V@V[VCb]V^V_V`V{V|V}V~VWvaWbWcWdWeWfWgWhWiWjWkWlWmW.cnWoW8 XvpWqWrWsWtWuWvWwWxWyWzWAWBWCWDWEWFWGWHWYv/cIWJWKW:c;c=cLWMW
1065 for cls, args, kwargs in reversed(middleware): 2mwnwow*v/s:s;s=spwqw?srwsw.vtwuwDbEbvwwwxw@sywFbGbzwAwBwCw[s]sDwEwFwGw^s/vZvHbIbHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w4w5wJb6w7w8w9w!w#wKbLb$w%w'w(w:v$sMbNb)w*w_s+w,w;v=v-w.w/w:w;w`s=w?w@w[w]wt U u v w x y V ^w_w{s`w{w|w}w~waxObbxPbcxdxexfx|sgx}shx'vh i j k ix~sjxatkx~ abbbz A cbdblxbtmxnxoxpxqxctrxsxtxuxvxwxxxyxQbRbW SbTbX UbVbWbzxAxBxdtCxetftDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-x.x/x:x;x=x?x@x[x]xgt^xhtXbYbZb0b1b2b3b_x`x{x|x}x~xaybyitcy4bdyey5b6b7b8beb{ 9bfb!bgbfy#b$bgyjthbB hyktiyjykylymynyoypyqyrysytyltuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4ymt5y6y7y8y9y!y#y$y%y'y(y)y*y+y,y-y.y/y:y;y=y?y@y[y]y^y_y`y{y|y}y~yazbzczdzezfzgzhzizjzkzlzmznzozpzqzrznt%bszot0vtzuzvzwzxzyzptzzAzBzqtCzDzEzFzGzHzIzJzKzLzMzNzOzPzQz+sRzSz?v@v%s[v-sTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!z#z$z%z'z(z)z*z+z,z-z.z/z:z;z=z?z@z[z]z^z_z`z{z|z}z~zaAbArtcAdAeAfAgAe pd'b1v2v3vhAiAjAkAlAmAnAoApAqArAsAtA]c^cuAvAwAxAyAzAAABACADAEAFAGAHAIAJAKALAMANAOAPAQAstRASATAttUAVAWAutXAYAZA0A1A2A3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A(b/A:A;A=A?A@A[A]A^A_A`A)b{A|A}A~AaBbBcBdBeBfBgBvthBiBwtjBkBlBmBnBoBpBqBxtrBytsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBztAtUBVBWBXBYBZB0B1B2BBt3B4B5B6B7B8B9BCt!B#BDt$B%B'BEt(BFt)B*BGt+BHt,BItJt-B.BKtLt/B:B;BMt=B?B@B[B]BNt^B_B`B{B|B}B~BaCbCcCOtdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCPtWCXCYCZC0C1C2C3C4C5C6C7C8C9C!C#C$C%C'C(C)C*C+C,C-C.C/C:C;C=C?C@C[C]C^C_C`C{C|C}C~CaDbDcDdDeDfDgDhDiDjDkDlDmDQtnDoDpDqDrDsDtDuDvDRtwDxDyDzDADBDCDDDEDFDGDHDIDJDStKDLDMDNDODPDQDRDSDTDUDVDTtWDXDUtYDZD0D1DVt2DWt3D4D5D6D7D8D9D!DXtYt#DZt$D0t%D'D1t2t(D)D3t4t*D+D,D-D.D/D:D;D=D?D@D[D]D^D_D`D{D|D}D~DaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpE5tqErEsE6ttEuE7tvEwExEyEzE. / : ; 9 ! # $ ?cAEBECEDEEEFEGEHE*bIEJEKELEMENEOEPEibQERESETE8tUEVEWEXEYEZE0E1E2E3E+b9t4EY !t5E6E7E8E9E!E#E$E%E'E(E)E*E#t,b+E,E-E-b.b/b.E/E:E;E$t=E?E%t@E+v't(t)t*t[E]E+t^E_E]v`E{E:b;b|E}E~E,taF=b?bbFcFdFeF-t.tfFgFhFiF/t^v4v@b[bjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzFAFBFCFDFEFFFGFHF]bIFJFKFLFMFNF^b_bOFPFQFRF_v's`b{bSFTFUF:tVFWF;t`v{vXFYFZF0F1F=t2F3F4F5F6FC Z D E F G H 0 7F8F?t9F!F#F$F%F|b'F}b(F)F*F+F(vl m n o ,[email protected] J mbnb/F:F;F=F?F@F[F]F^F_F`F~bac1 bccc2 dcecfc{F[t|F}F]t~F^t_taGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzGAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG0G`t1Ggchcicjckclcmc2G3G4G5G6G7G8G9G!G{t#Gnc$G%Gocpcqcrcob| scpbtcqb'Gucvc(G|trbK )G}t~t*Gau+G,G-G.G/G:G;G=G?G@G[G]G^G_G`G{G|G}G~GaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHbuzHAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH0H1H2H3H4H5H6H7H8H9H!H#H$H%H'Hcuwc(H5v)H*H+H,H-H.H/H:H;H=H?H@H[H]H^H_H`H{H|H}H~HaIbIcIdI|v(s}v)s~v.seIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIduyIzIAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZIf qdxc0I6v1I7v2I8v3I4I5I6I7I8I9I!I#I$I%I_c`c'I(I)I*I+I,I-I.Ieu/Ifu:I;I=Iguhuiu?Iju@Iku[Ilu]I^I_I`I{I|I}Imu~IaJbJnucJdJeJoufJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJAJBJCJDJpuycEJFJGJHJIJJJKJLJMJNJzcOJPJQJRJSJTJUJVJWJXJYJquZJ0Jru,v1J2J3Jsutu4J5J6J7J8Juu9Jvu!J#J$J%J'J(J)J*J+J,Jwu-J.J/J:J;J=J?J@J[J]J^J_J`J{J|J}J~JaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxuxKyuyKzKzuAuAKBuCuBKCKDuDKEKEuFKFuGKHKGuHuIKJKKKLKMKNKOKPKQKIuRKSKTKUKJuVKKuWKXKYKZK0K1K2K3K4K5K6K7K8K9K!K#K$K%K'K(K)K*K+K,K-K.K/K:K;K=K?K@K[K]K^KLu_K`K{K|K}K~KaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzLALBLCLDLMuELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL0L1L2L3L4L5L6L7L8L9L!L#L$L%L'L(L)L*L+L,L-L.L/L:L;LNu=LOu?L@L[L]L^L_L`LPu{LQu|LRu}L~LaMbMcMdMeMfMgMhMiMjMkMlMSumMTunMoMpMUuqMrMsMtMuMvMwMxMyMzMAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMVuWMWuXMYMZMXu0M1MYu2M3M4M5M6M= ? @ [ % ' ( ) @c7M8M9M!M#M$M%M'M(M)MAc*M+M,M-M.M/M:M;Msb=M?M@M[M]M^MZu_M`M{M|M}M~MaNbNcNBcdNeN3 0ufNgNhNiNjNkNlNmNnNoNpNqNrNsNtN1uCcuNvNDcEcFcwNxN2uyNzN3u4uAN-v5u6u7u8uBNCNDN9uENFNGNawHNINJNGcHcKNLNMNNN!uONIcJcPNQNRNSN#u$uTNUNVNWNXN%uYNbw9vKcLcZN0N1N2N3N4N5N6N7N8N9N!N#N$N%N'N(N)N*N+N,N-N.N/N:N;N=N?N@N[N]N^N_N`N{N|NMc}N~NaObOcOdOeONcOcfOgOhOiOjOkOcw*sPcQclOmOnO'uoOpOqOdwewfwrOsOtOuOvOwOxO(uyOzOAOBOCODOEO)uFOL 4 M N O P Q 5 GO*uHO+uIO,uJOKOLOMONOOORcPOQOScROSOTOUOVOWOXO)vp q r s YO-uZO.u0OtbubvbR S wbxb1O/u2O3O4O5O6O:u7O8O9O!O#O$O%O'O(OTcUc6 VcWc7 XcYcZc)O;u*O+O=u,[email protected]/O:O;O=O?O@O[O]O^O_O`O{O|O}O~OaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzPAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP0P1P2P3P4P5P6P7P8P9P[u!P]u0c1c2c3c4c5c6c#P$P%P'P(P)P*P+P,P-P.P/P:P^u;P7c=P?P@P8c9c!c#cyb} $czb%cAb[P'c(c]P_uBbT ^P`u_P`P{u{P|P}P~PaQ|ubQcQdQeQ}ufQgQ~uhQiQavjQkQlQmQnQbvoQpQcvqQrQsQtQuQvQwQxQyQzQAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQdvQQRQSQTQUQVQWQXQYQZQ0Q1Q2Q3Qev4Q5Q6Q7Q8Q9Q!Q#Qfv$Q%Qgv'Q(Q)Q*Q+Q,Q-Q.Q/Q:Q;Q=Q?Q@Q[Q]Q^Q_Q`Q{Q|Q}Q~QaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRhv)cuR!vvRwRxRyRzRARBRCRDRERFRGRHRIRJRKRLRMRgwhwiwNRORPRQRRRSRTRURVRWRXRYRZR0R1R2R3R4R5R6R7R8R9R!R#R$R%Rg rd*c#v$v%v'R(R)R*R+R,R-R{c|c.R/R:R;R=R?R@R[R]R^R_R`R{R|R}R~RaSbScSdSeSfSgShSiviSjSkSlSmSnSoSpSqSrSsStSjvuSvS+cwSxSySzSASBSCSDS,cESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS0S1S2S3S4S5S6S7S8S9S!S#S$S%S'S(S)S*S+S,S-S.S/S:Skv;S=S?S@S[S]S^S_S`S{S|S}S~SaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxTyTzTATBTCTDTETFTGTHTITJTKTLTMTNTlvOTPTQTRTSTTTUTVTWTXTYTZT0T1T2T3T4T5T6T7T8T9T!T#T$T%T'T(T)T*Tmv+T,T-T.T/T:T;T=T?T@T[T]T^T_T`T{T|T}Tnvov~TaUpvbUcUdUeUqvfUgUhUiUjUkUlUmUnUoUpUqUrUrvsvsUtUuUvUwUxUyUzUAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU0U1U2U3U4U5U6Utv7Uuv8U9U!U#U$U%U'U(U)Uvv*Uwv+Uxv,U-U.Uyv/Uzv:U;UAv=U?U@UBv[U]UCv^U_U`U{UDvEv|UFv}UGvHv~UaVIvJvbVcVKvLvdVeVfVgVhViVjVkVlVmVMvnVoVpVqVrVsVtVuVvVwVNvxVyVzVAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVOvQVRVPvSVTVUVVVQvWVRvXVYVZV0VSv1V2VTv3V4V5V6V7V] ^ _ ` * + , - [c8V9V!VUv#V$V%V'V(V)V*V+VVv,s,V-c-V.V/V:V;V=V?V@V[VCb]V^V_V`V{V|V}V~VWvaWbWcWdWeWfWgWhWiWjWkWlWmW.cnWoW8 XvpWqWrWsWtWuWvWwWxWyWzWAWBWCWDWEWFWGWHWYv/cIWJWKW:c;c=cLWMW
1066 app = cls(app, *args, **kwargs) 2mwnwow*v/s:s;s=spwqw?srwsw.vtwuwDbEbvwwwxw@sywFbGbzwAwBwCw[s]sDwEwFwGw^s/vZvHbIbHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w4w5wJb6w7w8w9w!w#wKbLb$w%w'w(w:v$sMbNb)w*w_s+w,w;v=v-w.w/w:w;w`s=w?w@w[w]wt U u v w x y V ^w_w{s`w{w|w}w~waxObbxPbcxdxexfx|sgx}shx'vh i j k ix~sjxatkx~ abbbz A cbdblxbtmxnxoxpxqxctrxsxtxuxvxwxxxyxQbRbW SbTbX UbVbWbzxAxBxdtCxetftDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-x.x/x:x;x=x?x@x[x]xgt^xhtXbYbZb0b1b2b3b_x`x{x|x}x~xaybyitcy4bdyey5b6b7b8beb{ 9bfb!bgbfy#b$bgyjthbB hyktiyjykylymynyoypyqyrysytyltuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4ymt5y6y7y8y9y!y#y$y%y'y(y)y*y+y,y-y.y/y:y;y=y?y@y[y]y^y_y`y{y|y}y~yazbzczdzezfzgzhzizjzkzlzmznzozpzqzrznt%bszot0vtzuzvzwzxzyzptzzAzBzqtCzDzEzFzGzHzIzJzKzLzMzNzOzPzQz+sRzSz?v@v%s[v-sTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!z#z$z%z'z(z)z*z+z,z-z.z/z:z;z=z?z@z[z]z^z_z`z{z|z}z~zaAbArtcAdAeAfAgAe pd'b1v2v3vhAiAjAkAlAmAnAoApAqArAsAtA]c^cuAvAwAxAyAzAAABACADAEAFAGAHAIAJAKALAMANAOAPAQAstRASATAttUAVAWAutXAYAZA0A1A2A3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A(b/A:A;A=A?A@A[A]A^A_A`A)b{A|A}A~AaBbBcBdBeBfBgBvthBiBwtjBkBlBmBnBoBpBqBxtrBytsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBztAtUBVBWBXBYBZB0B1B2BBt3B4B5B6B7B8B9BCt!B#BDt$B%B'BEt(BFt)B*BGt+BHt,BItJt-B.BKtLt/B:B;BMt=B?B@B[B]BNt^B_B`B{B|B}B~BaCbCcCOtdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCPtWCXCYCZC0C1C2C3C4C5C6C7C8C9C!C#C$C%C'C(C)C*C+C,C-C.C/C:C;C=C?C@C[C]C^C_C`C{C|C}C~CaDbDcDdDeDfDgDhDiDjDkDlDmDQtnDoDpDqDrDsDtDuDvDRtwDxDyDzDADBDCDDDEDFDGDHDIDJDStKDLDMDNDODPDQDRDSDTDUDVDTtWDXDUtYDZD0D1DVt2DWt3D4D5D6D7D8D9D!DXtYt#DZt$D0t%D'D1t2t(D)D3t4t*D+D,D-D.D/D:D;D=D?D@D[D]D^D_D`D{D|D}D~DaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpE5tqErEsE6ttEuE7tvEwExEyEzE. / : ; 9 ! # $ ?cAEBECEDEEEFEGEHE*bIEJEKELEMENEOEPEibQERESETE8tUEVEWEXEYEZE0E1E2E3E+b9t4EY !t5E6E7E8E9E!E#E$E%E'E(E)E*E#t,b+E,E-E-b.b/b.E/E:E;E$t=E?E%t@E+v't(t)t*t[E]E+t^E_E]v`E{E:b;b|E}E~E,taF=b?bbFcFdFeF-t.tfFgFhFiF/t^v4v@b[bjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzFAFBFCFDFEFFFGFHF]bIFJFKFLFMFNF^b_bOFPFQFRF_v's`b{bSFTFUF:tVFWF;t`v{vXFYFZF0F1F=t2F3F4F5F6FC Z D E F G H 0 7F8F?t9F!F#F$F%F|b'F}b(F)F*F+F(vl m n o ,[email protected] J mbnb/F:F;F=F?F@F[F]F^F_F`F~bac1 bccc2 dcecfc{F[t|F}F]t~F^t_taGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzGAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG0G`t1Ggchcicjckclcmc2G3G4G5G6G7G8G9G!G{t#Gnc$G%Gocpcqcrcob| scpbtcqb'Gucvc(G|trbK )G}t~t*Gau+G,G-G.G/G:G;G=G?G@G[G]G^G_G`G{G|G}G~GaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHbuzHAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH0H1H2H3H4H5H6H7H8H9H!H#H$H%H'Hcuwc(H5v)H*H+H,H-H.H/H:H;H=H?H@H[H]H^H_H`H{H|H}H~HaIbIcIdI|v(s}v)s~v.seIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIduyIzIAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZIf qdxc0I6v1I7v2I8v3I4I5I6I7I8I9I!I#I$I%I_c`c'I(I)I*I+I,I-I.Ieu/Ifu:I;I=Iguhuiu?Iju@Iku[Ilu]I^I_I`I{I|I}Imu~IaJbJnucJdJeJoufJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJAJBJCJDJpuycEJFJGJHJIJJJKJLJMJNJzcOJPJQJRJSJTJUJVJWJXJYJquZJ0Jru,v1J2J3Jsutu4J5J6J7J8Juu9Jvu!J#J$J%J'J(J)J*J+J,Jwu-J.J/J:J;J=J?J@J[J]J^J_J`J{J|J}J~JaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxuxKyuyKzKzuAuAKBuCuBKCKDuDKEKEuFKFuGKHKGuHuIKJKKKLKMKNKOKPKQKIuRKSKTKUKJuVKKuWKXKYKZK0K1K2K3K4K5K6K7K8K9K!K#K$K%K'K(K)K*K+K,K-K.K/K:K;K=K?K@K[K]K^KLu_K`K{K|K}K~KaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzLALBLCLDLMuELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL0L1L2L3L4L5L6L7L8L9L!L#L$L%L'L(L)L*L+L,L-L.L/L:L;LNu=LOu?L@L[L]L^L_L`LPu{LQu|LRu}L~LaMbMcMdMeMfMgMhMiMjMkMlMSumMTunMoMpMUuqMrMsMtMuMvMwMxMyMzMAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMVuWMWuXMYMZMXu0M1MYu2M3M4M5M6M= ? @ [ % ' ( ) @c7M8M9M!M#M$M%M'M(M)MAc*M+M,M-M.M/M:M;Msb=M?M@M[M]M^MZu_M`M{M|M}M~MaNbNcNBcdNeN3 0ufNgNhNiNjNkNlNmNnNoNpNqNrNsNtN1uCcuNvNDcEcFcwNxN2uyNzN3u4uAN-v5u6u7u8uBNCNDN9uENFNGNawHNINJNGcHcKNLNMNNN!uONIcJcPNQNRNSN#u$uTNUNVNWNXN%uYNbw9vKcLcZN0N1N2N3N4N5N6N7N8N9N!N#N$N%N'N(N)N*N+N,N-N.N/N:N;N=N?N@N[N]N^N_N`N{N|NMc}N~NaObOcOdOeONcOcfOgOhOiOjOkOcw*sPcQclOmOnO'uoOpOqOdwewfwrOsOtOuOvOwOxO(uyOzOAOBOCODOEO)uFOL 4 M N O P Q 5 GO*uHO+uIO,uJOKOLOMONOOORcPOQOScROSOTOUOVOWOXO)vp q r s YO-uZO.u0OtbubvbR S wbxb1O/u2O3O4O5O6O:u7O8O9O!O#O$O%O'O(OTcUc6 VcWc7 XcYcZc)O;u*O+O=u,[email protected]/O:O;O=O?O@O[O]O^O_O`O{O|O}O~OaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzPAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP0P1P2P3P4P5P6P7P8P9P[u!P]u0c1c2c3c4c5c6c#P$P%P'P(P)P*P+P,P-P.P/P:P^u;P7c=P?P@P8c9c!c#cyb} $czb%cAb[P'c(c]P_uBbT ^P`u_P`P{u{P|P}P~PaQ|ubQcQdQeQ}ufQgQ~uhQiQavjQkQlQmQnQbvoQpQcvqQrQsQtQuQvQwQxQyQzQAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQdvQQRQSQTQUQVQWQXQYQZQ0Q1Q2Q3Qev4Q5Q6Q7Q8Q9Q!Q#Qfv$Q%Qgv'Q(Q)Q*Q+Q,Q-Q.Q/Q:Q;Q=Q?Q@Q[Q]Q^Q_Q`Q{Q|Q}Q~QaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRhv)cuR!vvRwRxRyRzRARBRCRDRERFRGRHRIRJRKRLRMRgwhwiwNRORPRQRRRSRTRURVRWRXRYRZR0R1R2R3R4R5R6R7R8R9R!R#R$R%Rg rd*c#v$v%v'R(R)R*R+R,R-R{c|c.R/R:R;R=R?R@R[R]R^R_R`R{R|R}R~RaSbScSdSeSfSgShSiviSjSkSlSmSnSoSpSqSrSsStSjvuSvS+cwSxSySzSASBSCSDS,cESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS0S1S2S3S4S5S6S7S8S9S!S#S$S%S'S(S)S*S+S,S-S.S/S:Skv;S=S?S@S[S]S^S_S`S{S|S}S~SaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxTyTzTATBTCTDTETFTGTHTITJTKTLTMTNTlvOTPTQTRTSTTTUTVTWTXTYTZT0T1T2T3T4T5T6T7T8T9T!T#T$T%T'T(T)T*Tmv+T,T-T.T/T:T;T=T?T@T[T]T^T_T`T{T|T}Tnvov~TaUpvbUcUdUeUqvfUgUhUiUjUkUlUmUnUoUpUqUrUrvsvsUtUuUvUwUxUyUzUAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU0U1U2U3U4U5U6Utv7Uuv8U9U!U#U$U%U'U(U)Uvv*Uwv+Uxv,U-U.Uyv/Uzv:U;UAv=U?U@UBv[U]UCv^U_U`U{UDvEv|UFv}UGvHv~UaVIvJvbVcVKvLvdVeVfVgVhViVjVkVlVmVMvnVoVpVqVrVsVtVuVvVwVNvxVyVzVAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVOvQVRVPvSVTVUVVVQvWVRvXVYVZV0VSv1V2VTv3V4V5V6V7V] ^ _ ` * + , - [c8V9V!VUv#V$V%V'V(V)V*V+VVv,s,V-c-V.V/V:V;V=V?V@V[VCb]V^V_V`V{V|V}V~VWvaWbWcWdWeWfWgWhWiWjWkWlWmW.cnWoW8 XvpWqWrWsWtWuWvWwWxWyWzWAWBWCWDWEWFWGWHWYv/cIWJWKW:c;c=cLWMW
1067 return app 2mwnwow*v/s:s;s=spwqw?srwsw.vtwuwDbEbvwwwxw@sywFbGbzwAwBwCw[s]sDwEwFwGw^s/vZvHbIbHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w4w5wJb6w7w8w9w!w#wKbLb$w%w'w(w:v$sMbNb)w*w_s+w,w;v=v-w.w/w:w;w`s=w?w@w[w]wt U u v w x y V ^w_w{s`w{w|w}w~waxObbxPbcxdxexfx|sgx}shx'vh i j k ix~sjxatkx~ abbbz A cbdblxbtmxnxoxpxqxctrxsxtxuxvxwxxxyxQbRbW SbTbX UbVbWbzxAxBxdtCxetftDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-x.x/x:x;x=x?x@x[x]xgt^xhtXbYbZb0b1b2b3b_x`x{x|x}x~xaybyitcy4bdyey5b6b7b8beb{ 9bfb!bgbfy#b$bgyjthbB hyktiyjykylymynyoypyqyrysytyltuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4ymt5y6y7y8y9y!y#y$y%y'y(y)y*y+y,y-y.y/y:y;y=y?y@y[y]y^y_y`y{y|y}y~yazbzczdzezfzgzhzizjzkzlzmznzozpzqzrznt%bszot0vtzuzvzwzxzyzptzzAzBzqtCzDzEzFzGzHzIzJzKzLzMzNzOzPzQz+sRzSz?v@v%s[v-sTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!z#z$z%z'z(z)z*z+z,z-z.z/z:z;z=z?z@z[z]z^z_z`z{z|z}z~zaAbArtcAdAeAfAgAe pd'b1v2v3vhAiAjAkAlAmAnAoApAqArAsAtA]c^cuAvAwAxAyAzAAABACADAEAFAGAHAIAJAKALAMANAOAPAQAstRASATAttUAVAWAutXAYAZA0A1A2A3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A(b/A:A;A=A?A@A[A]A^A_A`A)b{A|A}A~AaBbBcBdBeBfBgBvthBiBwtjBkBlBmBnBoBpBqBxtrBytsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBztAtUBVBWBXBYBZB0B1B2BBt3B4B5B6B7B8B9BCt!B#BDt$B%B'BEt(BFt)B*BGt+BHt,BItJt-B.BKtLt/B:B;BMt=B?B@B[B]BNt^B_B`B{B|B}B~BaCbCcCOtdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCPtWCXCYCZC0C1C2C3C4C5C6C7C8C9C!C#C$C%C'C(C)C*C+C,C-C.C/C:C;C=C?C@C[C]C^C_C`C{C|C}C~CaDbDcDdDeDfDgDhDiDjDkDlDmDQtnDoDpDqDrDsDtDuDvDRtwDxDyDzDADBDCDDDEDFDGDHDIDJDStKDLDMDNDODPDQDRDSDTDUDVDTtWDXDUtYDZD0D1DVt2DWt3D4D5D6D7D8D9D!DXtYt#DZt$D0t%D'D1t2t(D)D3t4t*D+D,D-D.D/D:D;D=D?D@D[D]D^D_D`D{D|D}D~DaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpE5tqErEsE6ttEuE7tvEwExEyEzE. / : ; 9 ! # $ ?cAEBECEDEEEFEGEHE*bIEJEKELEMENEOEPEibQERESETE8tUEVEWEXEYEZE0E1E2E3E+b9t4EY !t5E6E7E8E9E!E#E$E%E'E(E)E*E#t,b+E,E-E-b.b/b.E/E:E;E$t=E?E%t@E+v't(t)t*t[E]E+t^E_E]v`E{E:b;b|E}E~E,taF=b?bbFcFdFeF-t.tfFgFhFiF/t^v4v@b[bjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzFAFBFCFDFEFFFGFHF]bIFJFKFLFMFNF^b_bOFPFQFRF_v's`b{bSFTFUF:tVFWF;t`v{vXFYFZF0F1F=t2F3F4F5F6FC Z D E F G H 0 7F8F?t9F!F#F$F%F|b'F}b(F)F*F+F(vl m n o ,[email protected] J mbnb/F:F;F=F?F@F[F]F^F_F`F~bac1 bccc2 dcecfc{F[t|F}F]t~F^t_taGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzGAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG0G`t1Ggchcicjckclcmc2G3G4G5G6G7G8G9G!G{t#Gnc$G%Gocpcqcrcob| scpbtcqb'Gucvc(G|trbK )G}t~t*Gau+G,G-G.G/G:G;G=G?G@G[G]G^G_G`G{G|G}G~GaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHbuzHAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH0H1H2H3H4H5H6H7H8H9H!H#H$H%H'Hcuwc(H5v)H*H+H,H-H.H/H:H;H=H?H@H[H]H^H_H`H{H|H}H~HaIbIcIdI|v(s}v)s~v.seIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIduyIzIAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZIf qdxc0I6v1I7v2I8v3I4I5I6I7I8I9I!I#I$I%I_c`c'I(I)I*I+I,I-I.Ieu/Ifu:I;I=Iguhuiu?Iju@Iku[Ilu]I^I_I`I{I|I}Imu~IaJbJnucJdJeJoufJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJAJBJCJDJpuycEJFJGJHJIJJJKJLJMJNJzcOJPJQJRJSJTJUJVJWJXJYJquZJ0Jru,v1J2J3Jsutu4J5J6J7J8Juu9Jvu!J#J$J%J'J(J)J*J+J,Jwu-J.J/J:J;J=J?J@J[J]J^J_J`J{J|J}J~JaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxuxKyuyKzKzuAuAKBuCuBKCKDuDKEKEuFKFuGKHKGuHuIKJKKKLKMKNKOKPKQKIuRKSKTKUKJuVKKuWKXKYKZK0K1K2K3K4K5K6K7K8K9K!K#K$K%K'K(K)K*K+K,K-K.K/K:K;K=K?K@K[K]K^KLu_K`K{K|K}K~KaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzLALBLCLDLMuELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL0L1L2L3L4L5L6L7L8L9L!L#L$L%L'L(L)L*L+L,L-L.L/L:L;LNu=LOu?L@L[L]L^L_L`LPu{LQu|LRu}L~LaMbMcMdMeMfMgMhMiMjMkMlMSumMTunMoMpMUuqMrMsMtMuMvMwMxMyMzMAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMVuWMWuXMYMZMXu0M1MYu2M3M4M5M6M= ? @ [ % ' ( ) @c7M8M9M!M#M$M%M'M(M)MAc*M+M,M-M.M/M:M;Msb=M?M@M[M]M^MZu_M`M{M|M}M~MaNbNcNBcdNeN3 0ufNgNhNiNjNkNlNmNnNoNpNqNrNsNtN1uCcuNvNDcEcFcwNxN2uyNzN3u4uAN-v5u6u7u8uBNCNDN9uENFNGNawHNINJNGcHcKNLNMNNN!uONIcJcPNQNRNSN#u$uTNUNVNWNXN%uYNbw9vKcLcZN0N1N2N3N4N5N6N7N8N9N!N#N$N%N'N(N)N*N+N,N-N.N/N:N;N=N?N@N[N]N^N_N`N{N|NMc}N~NaObOcOdOeONcOcfOgOhOiOjOkOcw*sPcQclOmOnO'uoOpOqOdwewfwrOsOtOuOvOwOxO(uyOzOAOBOCODOEO)uFOL 4 M N O P Q 5 GO*uHO+uIO,uJOKOLOMONOOORcPOQOScROSOTOUOVOWOXO)vp q r s YO-uZO.u0OtbubvbR S wbxb1O/u2O3O4O5O6O:u7O8O9O!O#O$O%O'O(OTcUc6 VcWc7 XcYcZc)O;u*O+O=u,[email protected]/O:O;O=O?O@O[O]O^O_O`O{O|O}O~OaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzPAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP0P1P2P3P4P5P6P7P8P9P[u!P]u0c1c2c3c4c5c6c#P$P%P'P(P)P*P+P,P-P.P/P:P^u;P7c=P?P@P8c9c!c#cyb} $czb%cAb[P'c(c]P_uBbT ^P`u_P`P{u{P|P}P~PaQ|ubQcQdQeQ}ufQgQ~uhQiQavjQkQlQmQnQbvoQpQcvqQrQsQtQuQvQwQxQyQzQAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQdvQQRQSQTQUQVQWQXQYQZQ0Q1Q2Q3Qev4Q5Q6Q7Q8Q9Q!Q#Qfv$Q%Qgv'Q(Q)Q*Q+Q,Q-Q.Q/Q:Q;Q=Q?Q@Q[Q]Q^Q_Q`Q{Q|Q}Q~QaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRhv)cuR!vvRwRxRyRzRARBRCRDRERFRGRHRIRJRKRLRMRgwhwiwNRORPRQRRRSRTRURVRWRXRYRZR0R1R2R3R4R5R6R7R8R9R!R#R$R%Rg rd*c#v$v%v'R(R)R*R+R,R-R{c|c.R/R:R;R=R?R@R[R]R^R_R`R{R|R}R~RaSbScSdSeSfSgShSiviSjSkSlSmSnSoSpSqSrSsStSjvuSvS+cwSxSySzSASBSCSDS,cESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS0S1S2S3S4S5S6S7S8S9S!S#S$S%S'S(S)S*S+S,S-S.S/S:Skv;S=S?S@S[S]S^S_S`S{S|S}S~SaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxTyTzTATBTCTDTETFTGTHTITJTKTLTMTNTlvOTPTQTRTSTTTUTVTWTXTYTZT0T1T2T3T4T5T6T7T8T9T!T#T$T%T'T(T)T*Tmv+T,T-T.T/T:T;T=T?T@T[T]T^T_T`T{T|T}Tnvov~TaUpvbUcUdUeUqvfUgUhUiUjUkUlUmUnUoUpUqUrUrvsvsUtUuUvUwUxUyUzUAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU0U1U2U3U4U5U6Utv7Uuv8U9U!U#U$U%U'U(U)Uvv*Uwv+Uxv,U-U.Uyv/Uzv:U;UAv=U?U@UBv[U]UCv^U_U`U{UDvEv|UFv}UGvHv~UaVIvJvbVcVKvLvdVeVfVgVhViVjVkVlVmVMvnVoVpVqVrVsVtVuVvVwVNvxVyVzVAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVOvQVRVPvSVTVUVVVQvWVRvXVYVZV0VSv1V2VTv3V4V5V6V7V] ^ _ ` * + , - [c8V9V!VUv#V$V%V'V(V)V*V+VVv,s,V-c-V.V/V:V;V=V?V@V[VCb]V^V_V`V{V|V}V~VWvaWbWcWdWeWfWgWhWiWjWkWlWmW.cnWoW8 XvpWqWrWsWtWuWvWwWxWyWzWAWBWCWDWEWFWGWHWYv/cIWJWKW:c;c=cLWMW
1069 def openapi(self) -> dict[str, Any]: 1abcd
1070 """
1071 Generate the OpenAPI schema of the application. This is called by FastAPI
1072 internally.
1074 The first time it is called it stores the result in the attribute
1075 `app.openapi_schema`, and next times it is called, it just returns that same
1076 result. To avoid the cost of generating the schema every time.
1078 If you need to modify the generated OpenAPI schema, you could modify it.
1080 Read more in the
1081 [FastAPI docs for OpenAPI](https://fastapi.tiangolo.com/how-to/extending-openapi/).
1082 """
1083 if not self.openapi_schema: 2SWTWUW*v/s:s;s=sVW?sWWXW@s[s]sYW^sZW$s_s0W1W`s2Wt U u v w x y V 3W{s4W5W6W7W8W|s}sh i j k 9W~sat!Wz A btct#W$WW X %Wdtetft+7,7-7.7]5^5/7:7;7=7?7@7_5`5[7]7^7_7`7{7{5|5|7}7~7a8b8c8}5~5d8e8f8g8h8i8a6b6j8k8l8m8n8o8c6d6p8q8r8s8t8u8e6f6v8w8x8y8z8A8g6h6B8C8D8E8F8G8i6j6H8I8J8K8L8M8k6l6N8O8P8Q8R8S8m6n6T8U8V8W8X8o6Y8p6Z80818283848q6r65868788898!8s6t6#8$8%8'8(8)8u6v6*8+8,8-8.8/8w6x6:8;8=8?8@8[8y6z6]8^8_8`8{8|8A6B6}8~8a9C6D6b9c9d9e9f9E6F6g9h9i9j9k9l9G6H6m9n9o9p9q9r9I6J6s9t9u9v9w9x9K6L6y9z9'Wgtht(WitjtB kt)W*W+W,W-W.Wlt/W:W;W=W?W@W[W]W^W_W`W{W|W}W~WaXbXcXmtdXeXfXgXhXiXjXkXntotlXmXnXptoXqtpX+sjw%s-sqXrXsXtXuXvXwXxXyXzXAXBXCXDXEXFXGXHXIXJXKXLXMXNXrtOXPXe QXRXSXTXUXVXWXXXYXZX0X1X2X3X4Xst5Xtt6Xut7X8X9X!X#X$X%X'X(X)X*X+X,X-X.X/X:X;Xvt=Xwt?X@X[X]X^Xxtyt_X`X{X|X}XA9~XaYbYcYdYeYfYgYhYztAtiYjYkYlYmYBtnYoYpYCtqYDtrYsY75EtFttYGtHtItJtKtLtuYMtvYwYNtxYyYzYAYBYOtCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZYPt0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y!Y#Y$Y%Y'Y(Y)Y*Y+Y,Y-Y.Y/Y:Y;Y=Y?Y@Y[Y]Y^Y_Y`YQt{Y|Y}Y~YRtaZbZcZdZeZfZgZhZStiZjZkZlZTtmZUtnZVtWtoZpZqZXtrZYtZt0tsZ1t2t3t4ttZuZvZwZxZyZzZAZBZCZDZEZFZGZHZIZJZKZ5tLZ6t7tMZNZOZPZQZRZSZTZUZNWVZWZ8t9tY !tXZYZ#t(5)5$tZZ%t+v't(t)t*t0Z+t1Z2Z,t-t.t3Z/t4Z's:t;t5Z=t6ZC Z D E F G H 0 7Z?t8Z9Z!Z#Z$Z%Z'Zl m n o (Z@t)Z*ZI J +Z,Z-Z.Z1 2 [t]t^t_tB9C9D9E9M6N6F9G9H9I9J9K9O6P6L9M9N9O9P9Q9Q6R6R9S9T9U9V9W9S6T6X9Y9Z9091929U6V6394959697989W6X699!9#9$9%9'9Y6Z6(9)9*9+9,9-90616.9/9:9;9=9?92636@9[9]9^9_9`94656{9|9}9~9a!b!6676c!d!e!f!g!h!8696i!j!k!l!m!n!!6#6o!p!q!r!s!t!$6%6u!v!w!x!y!z!'6(6A!B!C!D!E!F!)6*6G!H!I!J!K!L!+6,6M!N!O!P!Q!R!-6.6S!T!U!/6:6V!W!X!Y!Z!;6=60!1!2!3!4!5!?6@66!7!8!9!!!#![6]6$!%!'!(!)!*!^6_6+!,!/Z`t:Z;Z{t|tK }t~tau=Z?Z@Z[Z]Z^Z_Z`Z{Z|Z}Z~Za0b0c0d0e0f0g0h0i0j0k0bul0m0n0o0p0q0r0s0cut0u0v0w0x0y0z0A0OW(s)s.sB0C0D0E0F0G0H0I0J0K0L0duM0N0O0P0Q0R0S0T0U0V0W0X0Y0Z000f 102030405060eufuguhuiujuku70lumu80nu90ou!0#0$0%0'0(0)0*0+0,0-0.0pu/0:0;0=0?0qu@0rusutu[0]0^0uuvu_0`0{0|0}0`6wu~0a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1xuyus1zuAuBuCut1Duu1Euv1FuGuHuw1x1y1z1A1B1IuC1JuKuD1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1LuW1X1Y1Z101112131415161718191!1#1$1%1'1(1)1*1+1Mu,1-1.1/1:1;1=1?1@1[1]1^1_1`1{1|1}1~1a2b2c2d2e2f2g2h2i2j2k2l2NuOum2n2PuQuRuo2p2q2r2s2t2u2v2SuTuw2x2y2Uuz2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2VuWuS2XuYuT2U2V2W2X2Y2Z20212PW2232Zu423 0u52621u2u3u4u-v5u6u7u8u729u8292!u#u$u!2%u#2*s'u$2%2(u)uL 4 M N O P Q 5 *u+u,u'2(2)2*2+2,2p q r s -2-u.u.2R S /u:u/2:26 7 ;u=u?u@u-!.!{6/!|6}6:!;!=!?!~6@!a7b7[!]!^!_!`!c7d7e7{!|!}!~!f7a#g7h7b#c#d#e#f#g#i7j7k7h#i#j#l7k#m7n7l#m#n#o#o7p#p7q7q#r#s#t#r7u#s7t7v#w#x#y#u7z#v7w7A#B#C#D#x7E#y7z7F#G#H#I#J#A7B7C7K#L#M#N#O#D7E7F7P#Q#R#S#T#G7H7I7U#V#W#X#J7Y#K7L7Z#0#1#2#3#4#M7N7O75#6#7#8#P7Q7R79#!###$#S7%#T7U7'#(#)#*#V7+#W7X7,#-#.#Y7Z707/#:#;#=#172737?#@#[#47]#5767^#_#`#{#|#778797}#~#a$b$c$d$!7#7e$$7;2[u]u=2^u_uT `u?2{u@2[2|u]2}u~uav^2bvcv_2`2{2|2}2~2a3b3dvc3d3e3f3evg3h3fvgvi3j3k3l3hvm3n3o3p3q3r3s3t3QWkwlwRWu3v3w3x3y3z3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3g V3W3X3Y3Z303132333435363738393!3#3$3%3iv'3(3)3*3+3,3-3.3/3:3jv;3=3?3@3[3]3^3_3`3{3|3}3~3a4b4c4d4e4f4g4h4i4f$j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4A4B4C4D4E4F4G4H485kvI4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z404142434445464748494!4#4$4%4'4(4)4*4+4,4-4.4/4:4;4=4?4@4lv[4]4^4_4`4{4|4}4~4a5b5c5d5e5f5mvg5h5i5j5nvovpvk5qvl5m5n5o5p5q5rvsvr5s5t5u5v5w5x5y5z5A5B5C5tvuvD5E5vvwvxvyvzvAvF5BvCvG5DvEvFvGvHvIvJvKvLvH5I5J5MvK5L5M5NvN5O5P5Q5R5S5OvPvT5QvRvU5SvTvV5W5X5Y5Z505Uv15Vv,s2535Wv458 Xv5565Yv
1084 self.openapi_schema = get_openapi( 2SWTWUW*v/s:s;s=sVW?sWWXW@s[s]sYW^sZW$s_s0W1W`s2Wt U u v w x y V 3W{s4W5W6W7W8W|s}sh i j k 9W~sat!Wz A btct#W$WW X %Wdtetft]5^5_5`5{5|5}5~5a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6w6x6y6z6A6B6C6D6E6F6G6H6I6J6K6L6'Wgtht(WitjtB kt)W*W+W,W-W.Wlt/W:W;W=W?W@W[W]W^W_W`W{W|W}W~WaXbXcXmtdXeXfXgXhXiXjXkXntotlXmXnXptoXqtpX+sjw%s-sqXrXsXtXuXvXwXxXyXzXAXBXCXDXEXFXGXHXIXJXKXLXMXNXrtOXPXe QXRXSXTXUXVXWXXXYXZX0X1X2X3X4Xst5Xtt6Xut7X8X9X!X#X$X%X'X(X)X*X+X,X-X.X/X:X;Xvt=Xwt?X@X[X]X^Xxtyt_X`X{X|X}X~XaYbYcYdYeYfYgYhYztAtiYjYkYlYmYBtnYoYpYCtqYDtrYsYEtFttYGtHtItJtKtLtuYMtvYwYNtxYyYzYAYBYOtCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZYPt0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y!Y#Y$Y%Y'Y(Y)Y*Y+Y,Y-Y.Y/Y:Y;Y=Y?Y@Y[Y]Y^Y_Y`YQt{Y|Y}Y~YRtaZbZcZdZeZfZgZhZStiZjZkZlZTtmZUtnZVtWtoZpZqZXtrZYtZt0tsZ1t2t3t4ttZuZvZwZxZyZzZAZBZCZDZEZFZGZHZIZJZKZ5tLZ6t7tMZNZOZPZQZRZSZTZUZNWVZWZ8t9tY !tXZYZ#t(5)5$tZZ%t+v't(t)t*t0Z+t1Z2Z,t-t.t3Z/t4Z's:t;t5Z=t6ZC Z D E F G H 0 7Z?t8Z9Z!Z#Z$Z%Z'Zl m n o (Z@t)Z*ZI J +Z,Z-Z.Z1 2 [t]t^t_tM6N6O6P6Q6R6S6T6U6V6W6X6Y6Z606162636465666768696!6#6$6%6'6(6)6*6+6,6-6.6/6:6;6=6?6@6[6]6^6_6/Z`t:Z;Z{t|tK }t~tau=Z?Z@Z[Z]Z^Z_Z`Z{Z|Z}Z~Za0b0c0d0e0f0g0h0i0j0k0bul0m0n0o0p0q0r0s0cut0u0v0w0x0y0z0A0OW(s)s.sB0C0D0E0F0G0H0I0J0K0L0duM0N0O0P0Q0R0S0T0U0V0W0X0Y0Z000f 102030405060eufuguhuiujuku70lumu80nu90ou!0#0$0%0'0(0)0*0+0,0-0.0pu/0:0;0=0?0qu@0rusutu[0]0^0uuvu_0`0{0|0}0`6wu~0a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1xuyus1zuAuBuCut1Duu1Euv1FuGuHuw1x1y1z1A1B1IuC1JuKuD1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1LuW1X1Y1Z101112131415161718191!1#1$1%1'1(1)1*1+1Mu,1-1.1/1:1;1=1?1@1[1]1^1_1`1{1|1}1~1a2b2c2d2e2f2g2h2i2j2k2l2NuOum2n2PuQuRuo2p2q2r2s2t2u2v2SuTuw2x2y2Uuz2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2VuWuS2XuYuT2U2V2W2X2Y2Z20212PW2232Zu423 0u52621u2u3u4u-v5u6u7u8u729u8292!u#u$u!2%u#2*s'u$2%2(u)uL 4 M N O P Q 5 *u+u,u'2(2)2*2+2,2p q r s -2-u.u.2R S /u:u/2:26 7 ;u=u?u@u{6|6}6~6a7b7c7d7e7f7g7h7i7j7k7l7m7n7o7p7q7r7s7t7u7v7w7x7y7z7A7B7C7D7E7F7G7H7I7J7K7L7M7N7O7P7Q7R7S7T7U7V7W7X7Y7Z707172737475767778797!7#7$7;2[u]u=2^u_uT `u?2{u@2[2|u]2}u~uav^2bvcv_2`2{2|2}2~2a3b3dvc3d3e3f3evg3h3fvgvi3j3k3l3hvm3n3o3p3q3r3s3t3QWkwlwRWu3v3w3x3y3z3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3g V3W3X3Y3Z303132333435363738393!3#3$3%3iv'3(3)3*3+3,3-3.3/3:3jv;3=3?3@3[3]3^3_3`3{3|3}3~3a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4A4B4C4D4E4F4G4H4kvI4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z404142434445464748494!4#4$4%4'4(4)4*4+4,4-4.4/4:4;4=4?4@4lv[4]4^4_4`4{4|4}4~4a5b5c5d5e5f5mvg5h5i5j5nvovpvk5qvl5m5n5o5p5q5rvsvr5s5t5u5v5w5x5y5z5A5B5C5tvuvD5E5vvwvxvyvzvAvF5BvCvG5DvEvFvGvHvIvJvKvLvH5I5J5MvK5L5M5NvN5O5P5Q5R5S5OvPvT5QvRvU5SvTvV5W5X5Y5Z505Uv15Vv,s2535Wv458 Xv5565Yv
1085 title=self.title,
1086 version=self.version,
1087 openapi_version=self.openapi_version,
1088 summary=self.summary,
1089 description=self.description,
1090 terms_of_service=self.terms_of_service,
1091 contact=self.contact,
1092 license_info=self.license_info,
1093 routes=self.routes,
1094 webhooks=self.webhooks.routes,
1095 tags=self.openapi_tags,
1096 servers=self.servers,
1097 separate_input_output_schemas=self.separate_input_output_schemas,
1098 external_docs=self.openapi_external_docs,
1099 )
1100 return self.openapi_schema 2SWTWUW/s:s;s=sVW?sWWXW@s[s]sYW^sZW$s_s0W1W`s2Wt U u v w x y V 3W{s4W5W6W7W8W|s}sh i j k 9W~sat!Wz A btct#W$WW X %Wdtetft+7,7-7.7]5^5/7:7;7=7?7@7_5`5[7]7^7_7`7{7{5|5|7}7~7a8b8c8}5~5d8e8f8g8h8i8a6b6j8k8l8m8n8o8c6d6p8q8r8s8t8u8e6f6v8w8x8y8z8A8g6h6B8C8D8E8F8G8i6j6H8I8J8K8L8M8k6l6N8O8P8Q8R8S8m6n6T8U8V8W8X8o6Y8p6Z80818283848q6r65868788898!8s6t6#8$8%8'8(8)8u6v6*8+8,8-8.8/8w6x6:8;8=8?8@8[8y6z6]8^8_8`8{8|8A6B6}8~8a9C6D6b9c9d9e9f9E6F6g9h9i9j9k9l9G6H6m9n9o9p9q9r9I6J6s9t9u9v9w9x9K6L6y9z9'Wgtht(WitjtB kt)W*W+W,W-W.Wlt/W:W;W=W?W@W[W]W^W_W`W{W|W}W~WaXbXcXmtdXeXfXgXhXiXjXkXntotlXmXnXptoXqtpX+sjw%s-sqXrXsXtXuXvXwXxXyXzXAXBXCXDXEXFXGXHXIXJXKXLXMXNXrtOXPXe QXRXSXTXUXVXWXXXYXZX0X1X2X3X4Xst5Xtt6Xut7X8X9X!X#X$X%X'X(X)X*X+X,X-X.X/X:X;Xvt=Xwt?X@X[X]X^Xxtyt_X`X{X|X}XA9~XaYbYcYdYeYfYgYhYztAtiYjYkYlYmYBtnYoYpYCtqYDtrYsY75EtFttYGtHtItJtKtLtuYMtvYwYNtxYyYzYAYBYOtCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZYPt0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y!Y#Y$Y%Y'Y(Y)Y*Y+Y,Y-Y.Y/Y:Y;Y=Y?Y@Y[Y]Y^Y_Y`YQt{Y|Y}Y~YRtaZbZcZdZeZfZgZhZStiZjZkZlZTtmZUtnZVtWtoZpZqZXtrZYtZt0tsZ1t2t3t4ttZuZvZwZxZyZzZAZBZCZDZEZFZGZHZIZJZKZ5tLZ6t7tMZNZOZPZQZRZSZTZUZNWVZWZ8t9tY !tXZYZ#t(5)5$tZZ%t't(t)t*t0Z+t1Z2Z,t-t.t3Z/t4Z's:t;t5Z=t6ZC Z D E F G H 0 7Z?t8Z9Z!Z#Z$Z%Z'Zl m n o (Z@t)Z*ZI J +Z,Z-Z.Z1 2 [t]t^t_tB9C9D9E9M6N6F9G9H9I9J9K9O6P6L9M9N9O9P9Q9Q6R6R9S9T9U9V9W9S6T6X9Y9Z9091929U6V6394959697989W6X699!9#9$9%9'9Y6Z6(9)9*9+9,9-90616.9/9:9;9=9?92636@9[9]9^9_9`94656{9|9}9~9a!b!6676c!d!e!f!g!h!8696i!j!k!l!m!n!!6#6o!p!q!r!s!t!$6%6u!v!w!x!y!z!'6(6A!B!C!D!E!F!)6*6G!H!I!J!K!L!+6,6M!N!O!P!Q!R!-6.6S!T!U!/6:6V!W!X!Y!Z!;6=60!1!2!3!4!5!?6@66!7!8!9!!!#![6]6$!%!'!(!)!*!^6_6+!,!/Z`t:Z;Z{t|tK }t~tau=Z?Z@Z[Z]Z^Z_Z`Z{Z|Z}Z~Za0b0c0d0e0f0g0h0i0j0k0bul0m0n0o0p0q0r0s0cut0u0v0w0x0y0z0A0OW(s)s.sB0C0D0E0F0G0H0I0J0K0L0duM0N0O0P0Q0R0S0T0U0V0W0X0Y0Z000f 102030405060eufuguhuiujuku70lumu80nu90ou!0#0$0%0'0(0)0*0+0,0-0.0pu/0:0;0=0?0qu@0rusutu[0]0^0uuvu_0`0{0|0}0`6wu~0a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1xuyus1zuAuBuCut1Duu1Euv1FuGuHuw1x1y1z1A1B1IuC1JuKuD1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1LuW1X1Y1Z101112131415161718191!1#1$1%1'1(1)1*1+1Mu,1-1.1/1:1;1=1?1@1[1]1^1_1`1{1|1}1~1a2b2c2d2e2f2g2h2i2j2k2l2NuOum2n2PuQuRuo2p2q2r2s2t2u2v2SuTuw2x2y2Uuz2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2VuWuS2XuYuT2U2V2W2X2Y2Z20212PW2232Zu423 0u52621u2u3u4u5u6u7u8u729u8292!u#u$u!2%u#2*s'u$2%2(u)uL 4 M N O P Q 5 *u+u,u'2(2)2*2+2,2p q r s -2-u.u.2R S /u:u/2:26 7 ;u=u?u@u-!.!{6/!|6}6:!;!=!?!~6@!a7b7[!]!^!_!`!c7d7e7{!|!}!~!f7a#g7h7b#c#d#e#f#g#i7j7k7h#i#j#l7k#m7n7l#m#n#o#o7p#p7q7q#r#s#t#r7u#s7t7v#w#x#y#u7z#v7w7A#B#C#D#x7E#y7z7F#G#H#I#J#A7B7C7K#L#M#N#O#D7E7F7P#Q#R#S#T#G7H7I7U#V#W#X#J7Y#K7L7Z#0#1#2#3#4#M7N7O75#6#7#8#P7Q7R79#!###$#S7%#T7U7'#(#)#*#V7+#W7X7,#-#.#Y7Z707/#:#;#=#172737?#@#[#47]#5767^#_#`#{#|#778797}#~#a$b$c$d$!7#7e$$7;2[u]u=2^u_uT `u?2{u@2[2|u]2}u~uav^2bvcv_2`2{2|2}2~2a3b3dvc3d3e3f3evg3h3fvgvi3j3k3l3hvm3n3o3p3q3r3s3t3QWkwlwRWu3v3w3x3y3z3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3g V3W3X3Y3Z303132333435363738393!3#3$3%3iv'3(3)3*3+3,3-3.3/3:3jv;3=3?3@3[3]3^3_3`3{3|3}3~3a4b4c4d4e4f4g4h4i4f$j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4A4B4C4D4E4F4G4H485kvI4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z404142434445464748494!4#4$4%4'4(4)4*4+4,4-4.4/4:4;4=4?4@4lv[4]4^4_4`4{4|4}4~4a5b5c5d5e5f5mvg5h5i5j5nvovpvk5qvl5m5n5o5p5q5rvsvr5s5t5u5v5w5x5y5z5A5B5C5tvuvD5E5vvwvxvyvzvAvF5BvCvG5DvEvFvGvHvIvJvKvLvH5I5J5MvK5L5M5NvN5O5P5Q5R5S5OvPvT5QvRvU5SvTvV5W5X5Y5Z505Uv15Vv,s2535Wv458 Xv5565Yv
1102 def setup(self) -> None: 1abcd
1103 if self.openapi_url: 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
1105 async def openapi(req: Request) -> JSONResponse: 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde 'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df xc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg *cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
1106 root_path = req.scope.get("root_path", "").rstrip("/") 2SWTWUW*v/s:s;s=sVW?sWWXW@s[s]sYW^sZW$s_s0W1W`s2Wt U u v w x y V 3W{s4W5W6W7W8W|s}sh i j k 9W~sat!Wz A btct#W$WW X %Wdtetft'Wgtht(WitjtB kt)W*W+W,W-W.Wlt/W:W;W=W?W@W[W]W^W_W`W{W|W}W~WaXbXcXmtdXeXfXgXhXiXjXkXntotlXmXnXptoXqtpX+sjw%s-sqXrXsXtXuXvXwXxXyXzXAXBXCXDXEXFXGXHXIXJXKXLXMXNXrtOXPXe QXRXSXTXUXVXWXXXYXZX0X1X2X3X4Xst5Xtt6Xut7X8X9X!X#X$X%X'X(X)X*X+X,X-X.X/X:X;Xvt=Xwt*5?X@X[X]X^Xxtyt_X`X{X|X}X~XaYbYcYdYeYfYgYhYztAtiYjYkYlYmYBtnYoYpYCtqYDtrYsY75EtFttYGtHtItJtKtLtuYMtvYwYNtxYyYzYAYBYOtCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZYPt0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y!Y#Y$Y%Y'Y(Y)Y*Y+Y,Y-Y.Y/Y:Y;Y=Y?Y@Y[Y]Y^Y_Y`YQt{Y|Y}Y~YRtaZbZcZdZeZfZgZhZStiZjZkZlZTtmZUtnZVtWtoZpZqZXtrZYtZt0tsZ1t2t3t4ttZuZvZwZxZyZzZAZBZCZDZEZFZGZHZIZJZKZ5tLZ6t7tMZNZOZPZQZRZSZTZUZNWVZWZ8t9tY !tXZYZ#t(5)5$tZZ%t+v't(t)t*t0Z+t1Z2Z,t-t.t3Z/t4Z's:t;t5Z=t6ZC Z D E F G H 0 7Z?t8Z9Z!Z#Z$Z%Z'Zl m n o (Z@t)Z*ZI J +Z,Z-Z.Z1 2 [t]t^t_t/Z`t:Z;Z{t|tK }t~tau=Z?Z@Z[Z]Z^Z_Z`Z{Z|Z}Z~Za0b0c0d0e0f0g0h0i0j0k0bul0m0n0o0p0q0r0s0cut0u0v0w0x0y0z0A0OW(s)s.sB0C0D0E0F0G0H0I0J0K0L0duM0N0O0P0Q0R0S0T0U0V0W0X0Y0Z000f 102030405060eufuguhuiujuku70lumu80nu90ou!0#0$0%0'0(0)0*0+0,0-0.0pu/0:0;0=0?0qu@0ru,vsutu[0]0^0uuvu_0`0{0|0}0wu~0a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1xuyus1zuAuBuCut1Duu1Euv1FuGuHuw1x1y1z1A1B1IuC1JuKuD1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1LuW1X1Y1Z101112131415161718191!1#1$1%1'1(1)1*1+1Mu,1-1.1/1:1;1=1?1@1[1]1^1_1`1{1|1}1~1a2b2c2d2e2f2g2h2i2j2k2l2NuOum2n2PuQuRuo2p2q2r2s2t2u2v2SuTuw2x2y2Uuz2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2VuWuS2XuYuT2U2V2W2X2Y2Z20212PW2232Zu423 0u52621u2u3u4u-v5u6u7u8u729u8292!u#u$u!2%u#2*s'u$2%2(u)uL 4 M N O P Q 5 *u+u,u'2(2)2*2+2,2p q r s -2-u.u.2R S /u:u/2:26 7 ;u=u?u@u;2[u]u=2^u_uT `u?2{u@2[2|u]2}u~uav^2bvcv_2`2{2|2}2~2a3b3dvc3d3e3f3evg3h3fvgvi3j3k3l3hvm3n3o3p3q3r3s3t3QWkwlwRWu3v3w3x3y3z3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3g V3W3X3Y3Z303132333435363738393!3#3$3%3iv'3(3)3*3+3,3-3.3/3:3jv;3=3?3@3[3]3^3_3`3{3+5|3}3~3a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4A4B4C4D4E4F4G4H485kvI4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z404142434445464748494!4#4$4%4'4(4)4*4+4,4-4.4/4:4;4=4?4@4lv[4]4^4_4`4{4|4}4~4a5b5c5d5e5f5mvg5h5i5j5nvovpvk5qvl5m5n5o5p5q5rvsvr5s5t5u5v5w5x5y5z5A5B5C5tvuvD5E5vvwvxvyvzvAvF5BvCvG5DvEvFvGvHvIvJvKvLvH5I5J5MvK5L5M5NvN5O5P5Q5R5S5OvPvT5QvRvU5SvTvV5W5X5Y5Z505Uv15Vv,s2535Wv458 Xv5565Yv
1107 schema = self.openapi() 2SWTWUW*v/s:s;s=sVW?sWWXW@s[s]sYW^sZW$s_s0W1W`s2Wt U u v w x y V 3W{s4W5W6W7W8W|s}sh i j k 9W~sat!Wz A btct#W$WW X %Wdtetft'Wgtht(WitjtB kt)W*W+W,W-W.Wlt/W:W;W=W?W@W[W]W^W_W`W{W|W}W~WaXbXcXmtdXeXfXgXhXiXjXkXntotlXmXnXptoXqtpX+sjw%s-sqXrXsXtXuXvXwXxXyXzXAXBXCXDXEXFXGXHXIXJXKXLXMXNXrtOXPXe QXRXSXTXUXVXWXXXYXZX0X1X2X3X4Xst5Xtt6Xut7X8X9X!X#X$X%X'X(X)X*X+X,X-X.X/X:X;Xvt=Xwt*5?X@X[X]X^Xxtyt_X`X{X|X}X~XaYbYcYdYeYfYgYhYztAtiYjYkYlYmYBtnYoYpYCtqYDtrYsY75EtFttYGtHtItJtKtLtuYMtvYwYNtxYyYzYAYBYOtCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZYPt0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y!Y#Y$Y%Y'Y(Y)Y*Y+Y,Y-Y.Y/Y:Y;Y=Y?Y@Y[Y]Y^Y_Y`YQt{Y|Y}Y~YRtaZbZcZdZeZfZgZhZStiZjZkZlZTtmZUtnZVtWtoZpZqZXtrZYtZt0tsZ1t2t3t4ttZuZvZwZxZyZzZAZBZCZDZEZFZGZHZIZJZKZ5tLZ6t7tMZNZOZPZQZRZSZTZUZNWVZWZ8t9tY !tXZYZ#t(5)5$tZZ%t+v't(t)t*t0Z+t1Z2Z,t-t.t3Z/t4Z's:t;t5Z=t6ZC Z D E F G H 0 7Z?t8Z9Z!Z#Z$Z%Z'Zl m n o (Z@t)Z*ZI J +Z,Z-Z.Z1 2 [t]t^t_t/Z`t:Z;Z{t|tK }t~tau=Z?Z@Z[Z]Z^Z_Z`Z{Z|Z}Z~Za0b0c0d0e0f0g0h0i0j0k0bul0m0n0o0p0q0r0s0cut0u0v0w0x0y0z0A0OW(s)s.sB0C0D0E0F0G0H0I0J0K0L0duM0N0O0P0Q0R0S0T0U0V0W0X0Y0Z000f 102030405060eufuguhuiujuku70lumu80nu90ou!0#0$0%0'0(0)0*0+0,0-0.0pu/0:0;0=0?0qu@0ru,vsutu[0]0^0uuvu_0`0{0|0}0wu~0a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1xuyus1zuAuBuCut1Duu1Euv1FuGuHuw1x1y1z1A1B1IuC1JuKuD1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1LuW1X1Y1Z101112131415161718191!1#1$1%1'1(1)1*1+1Mu,1-1.1/1:1;1=1?1@1[1]1^1_1`1{1|1}1~1a2b2c2d2e2f2g2h2i2j2k2l2NuOum2n2PuQuRuo2p2q2r2s2t2u2v2SuTuw2x2y2Uuz2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2VuWuS2XuYuT2U2V2W2X2Y2Z20212PW2232Zu423 0u52621u2u3u4u-v5u6u7u8u729u8292!u#u$u!2%u#2*s'u$2%2(u)uL 4 M N O P Q 5 *u+u,u'2(2)2*2+2,2p q r s -2-u.u.2R S /u:u/2:26 7 ;u=u?u@u;2[u]u=2^u_uT `u?2{u@2[2|u]2}u~uav^2bvcv_2`2{2|2}2~2a3b3dvc3d3e3f3evg3h3fvgvi3j3k3l3hvm3n3o3p3q3r3s3t3QWkwlwRWu3v3w3x3y3z3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3g V3W3X3Y3Z303132333435363738393!3#3$3%3iv'3(3)3*3+3,3-3.3/3:3jv;3=3?3@3[3]3^3_3`3{3+5|3}3~3a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4A4B4C4D4E4F4G4H485kvI4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z404142434445464748494!4#4$4%4'4(4)4*4+4,4-4.4/4:4;4=4?4@4lv[4]4^4_4`4{4|4}4~4a5b5c5d5e5f5mvg5h5i5j5nvovpvk5qvl5m5n5o5p5q5rvsvr5s5t5u5v5w5x5y5z5A5B5C5tvuvD5E5vvwvxvyvzvAvF5BvCvG5DvEvFvGvHvIvJvKvLvH5I5J5MvK5L5M5NvN5O5P5Q5R5S5OvPvT5QvRvU5SvTvV5W5X5Y5Z505Uv15Vv,s2535Wv458 Xv5565Yv
1108 if root_path and self.root_path_in_servers: 2SWTWUW/s:s;s=sVW?sWWXW@s[s]sYW^sZW$s_s0W1W`s2Wt U u v w x y V 3W{s4W5W6W7W8W|s}sh i j k 9W~sat!Wz A btct#W$WW X %Wdtetft'Wgtht(WitjtB kt)W*W+W,W-W.Wlt/W:W;W=W?W@W[W]W^W_W`W{W|W}W~WaXbXcXmtdXeXfXgXhXiXjXkXntotlXmXnXptoXqtpX+sjw%s-sqXrXsXtXuXvXwXxXyXzXAXBXCXDXEXFXGXHXIXJXKXLXMXNXrtOXPXe QXRXSXTXUXVXWXXXYXZX0X1X2X3X4Xst5Xtt6Xut7X8X9X!X#X$X%X'X(X)X*X+X,X-X.X/X:X;Xvt=Xwt*5?X@X[X]X^Xxtyt_X`X{X|X}X~XaYbYcYdYeYfYgYhYztAtiYjYkYlYmYBtnYoYpYCtqYDtrYsY75EtFttYGtHtItJtKtLtuYMtvYwYNtxYyYzYAYBYOtCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZYPt0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y!Y#Y$Y%Y'Y(Y)Y*Y+Y,Y-Y.Y/Y:Y;Y=Y?Y@Y[Y]Y^Y_Y`YQt{Y|Y}Y~YRtaZbZcZdZeZfZgZhZStiZjZkZlZTtmZUtnZVtWtoZpZqZXtrZYtZt0tsZ1t2t3t4ttZuZvZwZxZyZzZAZBZCZDZEZFZGZHZIZJZKZ5tLZ6t7tMZNZOZPZQZRZSZTZUZNWVZWZ8t9tY !tXZYZ#t(5)5$tZZ%t't(t)t*t0Z+t1Z2Z,t-t.t3Z/t4Z's:t;t5Z=t6ZC Z D E F G H 0 7Z?t8Z9Z!Z#Z$Z%Z'Zl m n o (Z@t)Z*ZI J +Z,Z-Z.Z1 2 [t]t^t_t/Z`t:Z;Z{t|tK }t~tau=Z?Z@Z[Z]Z^Z_Z`Z{Z|Z}Z~Za0b0c0d0e0f0g0h0i0j0k0bul0m0n0o0p0q0r0s0cut0u0v0w0x0y0z0A0OW(s)s.sB0C0D0E0F0G0H0I0J0K0L0duM0N0O0P0Q0R0S0T0U0V0W0X0Y0Z000f 102030405060eufuguhuiujuku70lumu80nu90ou!0#0$0%0'0(0)0*0+0,0-0.0pu/0:0;0=0?0qu@0ru,vsutu[0]0^0uuvu_0`0{0|0}0wu~0a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1xuyus1zuAuBuCut1Duu1Euv1FuGuHuw1x1y1z1A1B1IuC1JuKuD1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1LuW1X1Y1Z101112131415161718191!1#1$1%1'1(1)1*1+1Mu,1-1.1/1:1;1=1?1@1[1]1^1_1`1{1|1}1~1a2b2c2d2e2f2g2h2i2j2k2l2NuOum2n2PuQuRuo2p2q2r2s2t2u2v2SuTuw2x2y2Uuz2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2VuWuS2XuYuT2U2V2W2X2Y2Z20212PW2232Zu423 0u52621u2u3u4u5u6u7u8u729u8292!u#u$u!2%u#2*s'u$2%2(u)uL 4 M N O P Q 5 *u+u,u'2(2)2*2+2,2p q r s -2-u.u.2R S /u:u/2:26 7 ;u=u?u@u;2[u]u=2^u_uT `u?2{u@2[2|u]2}u~uav^2bvcv_2`2{2|2}2~2a3b3dvc3d3e3f3evg3h3fvgvi3j3k3l3hvm3n3o3p3q3r3s3t3QWkwlwRWu3v3w3x3y3z3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3g V3W3X3Y3Z303132333435363738393!3#3$3%3iv'3(3)3*3+3,3-3.3/3:3jv;3=3?3@3[3]3^3_3`3{3+5|3}3~3a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4A4B4C4D4E4F4G4H485kvI4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z404142434445464748494!4#4$4%4'4(4)4*4+4,4-4.4/4:4;4=4?4@4lv[4]4^4_4`4{4|4}4~4a5b5c5d5e5f5mvg5h5i5j5nvovpvk5qvl5m5n5o5p5q5rvsvr5s5t5u5v5w5x5y5z5A5B5C5tvuvD5E5vvwvxvyvzvAvF5BvCvG5DvEvFvGvHvIvJvKvLvH5I5J5MvK5L5M5NvN5O5P5Q5R5S5OvPvT5QvRvU5SvTvV5W5X5Y5Z505Uv15Vv,s2535Wv458 Xv5565Yv
1109 server_urls = {s.get("url") for s in schema.get("servers", [])} 2$sh i j k +sjw%sNW.5=5'sl m n o OW(s)sPW*sp q r s QWkwlw,s
1110 if root_path not in server_urls: 2$sh i j k +sjw%sNW.5=5'sl m n o OW(s)sPW*sp q r s QWkwlw,s
1111 schema = dict(schema) 2$sh i j k +sjw%sNW.5=5'sl m n o OW(s)sPW*sp q r s QWkwlw,s
1112 schema["servers"] = [{"url": root_path}] + schema.get( 2$sh i j k +sjw%sNW.5=5'sl m n o OW(s)sPW*sp q r s QWkwlw,s
1113 "servers", []
1114 )
1115 return JSONResponse(schema) 2SWTWUW/s:s;s=sVW?sWWXW@s[s]sYW^sZW$s_s0W1W`s2Wt U u v w x y V 3W{s4W5W6W7W8W|s}sh i j k 9W~sat!Wz A btct#W$WW X %Wdtetft'Wgtht(WitjtB kt)W*W+W,W-W.Wlt/W:W;W=W?W@W[W]W^W_W`W{W|W}W~WaXbXcXmtdXeXfXgXhXiXjXkXntotlXmXnXptoXqtpX+sjw%s-sqXrXsXtXuXvXwXxXyXzXAXBXCXDXEXFXGXHXIXJXKXLXMXNXrtOXPXe QXRXSXTXUXVXWXXXYXZX0X1X2X3X4Xst5Xtt6Xut7X8X9X!X#X$X%X'X(X)X*X+X,X-X.X/X:X;Xvt=Xwt*5?X@X[X]X^Xxtyt_X`X{X|X}X~XaYbYcYdYeYfYgYhYztAtiYjYkYlYmYBtnYoYpYCtqYDtrYsY75EtFttYGtHtItJtKtLtuYMtvYwYNtxYyYzYAYBYOtCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZYPt0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y!Y#Y$Y%Y'Y(Y)Y*Y+Y,Y-Y.Y/Y:Y;Y=Y?Y@Y[Y]Y^Y_Y`YQt{Y|Y}Y~YRtaZbZcZdZeZfZgZhZStiZjZkZlZTtmZUtnZVtWtoZpZqZXtrZYtZt0tsZ1t2t3t4ttZuZvZwZxZyZzZAZBZCZDZEZFZGZHZIZJZKZ5tLZ6t7tMZNZOZPZQZRZSZTZUZNWVZWZ8t9tY !tXZYZ#t(5)5$tZZ%t't(t)t*t0Z+t1Z2Z,t-t.t3Z/t4Z's:t;t5Z=t6ZC Z D E F G H 0 7Z?t8Z9Z!Z#Z$Z%Z'Zl m n o (Z@t)Z*ZI J +Z,Z-Z.Z1 2 [t]t^t_t/Z`t:Z;Z{t|tK }t~tau=Z?Z@Z[Z]Z^Z_Z`Z{Z|Z}Z~Za0b0c0d0e0f0g0h0i0j0k0bul0m0n0o0p0q0r0s0cut0u0v0w0x0y0z0A0OW(s)s.sB0C0D0E0F0G0H0I0J0K0L0duM0N0O0P0Q0R0S0T0U0V0W0X0Y0Z000f 102030405060eufuguhuiujuku70lumu80nu90ou!0#0$0%0'0(0)0*0+0,0-0.0pu/0:0;0=0?0qu@0ru,vsutu[0]0^0uuvu_0`0{0|0}0wu~0a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1xuyus1zuAuBuCut1Duu1Euv1FuGuHuw1x1y1z1A1B1IuC1JuKuD1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1LuW1X1Y1Z101112131415161718191!1#1$1%1'1(1)1*1+1Mu,1-1.1/1:1;1=1?1@1[1]1^1_1`1{1|1}1~1a2b2c2d2e2f2g2h2i2j2k2l2NuOum2n2PuQuRuo2p2q2r2s2t2u2v2SuTuw2x2y2Uuz2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2VuWuS2XuYuT2U2V2W2X2Y2Z20212PW2232Zu423 0u52621u2u3u4u5u6u7u8u729u8292!u#u$u!2%u#2*s'u$2%2(u)uL 4 M N O P Q 5 *u+u,u'2(2)2*2+2,2p q r s -2-u.u.2R S /u:u/2:26 7 ;u=u?u@u;2[u]u=2^u_uT `u?2{u@2[2|u]2}u~uav^2bvcv_2`2{2|2}2~2a3b3dvc3d3e3f3evg3h3fvgvi3j3k3l3hvm3n3o3p3q3r3s3t3QWkwlwRWu3v3w3x3y3z3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3g V3W3X3Y3Z303132333435363738393!3#3$3%3iv'3(3)3*3+3,3-3.3/3:3jv;3=3?3@3[3]3^3_3`3{3+5|3}3~3a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4A4B4C4D4E4F4G4H485kvI4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z404142434445464748494!4#4$4%4'4(4)4*4+4,4-4.4/4:4;4=4?4@4lv[4]4^4_4`4{4|4}4~4a5b5c5d5e5f5mvg5h5i5j5nvovpvk5qvl5m5n5o5p5q5rvsvr5s5t5u5v5w5x5y5z5A5B5C5tvuvD5E5vvwvxvyvzvAvF5BvCvG5DvEvFvGvHvIvJvKvLvH5I5J5MvK5L5M5NvN5O5P5Q5R5S5OvPvT5QvRvU5SvTvV5W5X5Y5Z505Uv15Vv,s2535Wv458 Xv5565Yv
1117 self.add_route(self.openapi_url, openapi, include_in_schema=False) 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde 'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df xc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg *cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
1118 if self.openapi_url and self.docs_url: 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
1120 async def swagger_ui_html(req: Request) -> HTMLResponse: 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde 'bkglgmgngogpgqgrgsgtgugvgydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df xc:k;k=k?k@k[k]k^k_k`k,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg *cwpxpypzpApBpzeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
1121 root_path = req.scope.get("root_path", "").rstrip("/") 295Zv'v0ve 1v2v3v!5,5-5#54v(v5vf 6v7v8v$5%59v)v!vg #v$v%v'5
1122 openapi_url = root_path + self.openapi_url 295Zv'v0ve 1v2v3v!5,5-5#54v(v5vf 6v7v8v$5%59v)v!vg #v$v%v'5
1123 oauth2_redirect_url = self.swagger_ui_oauth2_redirect_url 295Zv'v0ve 1v2v3v!5,5-5#54v(v5vf 6v7v8v$5%59v)v!vg #v$v%v'5
1124 if oauth2_redirect_url: 295Zv'v0ve 1v2v3v!5,5-5#54v(v5vf 6v7v8v$5%59v)v!vg #v$v%v'5
1125 oauth2_redirect_url = root_path + oauth2_redirect_url 295Zv0ve 1v2v3v!5,5-5#54v5vf 6v7v8v$5%59v!vg #v$v%v'5
1126 return get_swagger_ui_html( 295Zv'v0ve 1v2v3v!5,5-5#54v(v5vf 6v7v8v$5%59v)v!vg #v$v%v'5
1127 openapi_url=openapi_url,
1128 title=f"{self.title} - Swagger UI",
1129 oauth2_redirect_url=oauth2_redirect_url,
1130 init_oauth=self.swagger_ui_init_oauth,
1131 swagger_ui_parameters=self.swagger_ui_parameters,
1132 )
1134 self.add_route(self.docs_url, swagger_ui_html, include_in_schema=False) 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde 'bkglgmgngogpgqgrgsgtgugvgydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df xc:k;k=k?k@k[k]k^k_k`k,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg *cwpxpypzpApBpzeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
1136 if self.swagger_ui_oauth2_redirect_url: 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde 'bkglgmgngogpgqgrgsgtgugvgydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df xc:k;k=k?k@k[k]k^k_k`k,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg *cwpxpypzpApBpzeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
1138 async def swagger_ui_redirect(req: Request) -> HTMLResponse: 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde 'bkglgmgngogpgqgrgsgtgugvgydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df xc:k;k=k?k@k[k]k^k_k`k,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg *cwpxpypzpApBpzeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
1139 return get_swagger_ui_oauth2_redirect_html() 3%7 /v *Bb+Bb'7 ^v (7 bw
1141 self.add_route( 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde 'bkglgmgngogpgqgrgsgtgugvgydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df xc:k;k=k?k@k[k]k^k_k`k,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg *cwpxpypzpApBpzeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
1142 self.swagger_ui_oauth2_redirect_url,
1143 swagger_ui_redirect,
1144 include_in_schema=False,
1145 )
1146 if self.openapi_url and self.redoc_url: 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
1148 async def redoc_html(req: Request) -> HTMLResponse: 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde 'bkglgmgngogpgqgrgsgtgugvgydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df xc:k;k=k?k@k[k]k^k_k`k,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg *cwpxpypzpApBpzeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
1149 root_path = req.scope.get("root_path", "").rstrip("/") 2/5e )7*7:5f ;5g
1150 openapi_url = root_path + self.openapi_url 2/5e )7*7:5f ;5g
1151 return get_redoc_html( 2/5e )7*7:5f ;5g
1152 openapi_url=openapi_url, title=f"{self.title} - ReDoc"
1153 )
1155 self.add_route(self.redoc_url, redoc_html, include_in_schema=False) 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde 'bkglgmgngogpgqgrgsgtgugvgydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df xc:k;k=k?k@k[k]k^k_k`k,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg *cwpxpypzpApBpzeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c
1157 async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None: 1abcd
1158 if self.root_path: 3mw SW nw g$ TW UW ow *v /s :s ;s =s pw h$ qw i$ VW ?s j$ k$ l$ m$ n$ o$ p$ q$ r$ s$ t$ u$ v$ w$ x$ y$ z$ A$ B$ C$ rw D$ sw E$ .v tw uw F$ G$ H$ I$ J$ K$ L$ M$ Db Eb WW N$ vw O$ ww XW /5 %7 95 xw @s yw Fb Gb zw Aw Bw Cw [s ]s Dw Ew Fw Gw P$ YW ^s Q$ R$ /v Zv Hb Ib Hw Iw S$ T$ U$ V$ W$ X$ Y$ Z$ 0$ 1$ 2$ 3$ Jw Kw 4$ 5$ 6$ 7$ 8$ 9$ !$ #$ $$ %$ '$ ($ Lw )$ *$ Mw +$ ,$ -$ .$ Nw /$ Ow Pw Qw Rw :$ ;$ Sw =$ ?$ @$ [$ ]$ ^$ Tw _$ Uw `$ {$ |$ }$ ~$ a% Vw b% c% d% e% f% g% h% i% j% k% l% m% n% Ww o% p% q% r% Xw s% Yw Zw ZW t% u% v% w% x% 0w 1w y% z% A% B% C% D% E% F% G% H% I% J% K% L% M% N% O% P% Q% R% S% T% U% V% W% X% 2w 3w Y% Z% 0% 4w 1% 2% 3% 4% 5% 5w 6% 7% 8% Jb 6w 7w 9% !% #% $% %% '% (% )% *% +% ,% -% .% /% :% ;% =% ?% @% [% ]% ^% _% `% 8w {% |% }% 9w !w #w Kb Lb $w ~% a' b' c' d' e' %w 'w f' g' (w h' i' :v $s Mb Nb )w j' *w _s +w ,w k' 0W ;v =v l' m' n' o' -w .w p' 1W q' r' s' /w :w t' u' ;w `s =w v' ?w @w w' x' y' z' A' B' C' [w 2W ]w t U u v w x y V ^w 3W _w {s `w 4W {w D' |w E' }w 5W F' G' H' I' J' K' L' M' N' O' P' Q' R' S' T' U' V' W' X' Y' Z' 0' 1' 2' 3' 4' 5' 6' 7' 8' 9' !' #' $' %' '' (' )' *' +' ,' -' ~w .' /' :' ax ;' 6W Ob =' bx ?' @' Pb 7W [' cx ]' ^' _' `' {' |' dx 8W ex }' ~' fx |s gx }s a( hx 'v h i j k ix 9W ~s jx at kx !W ~ ab bb z A cb db lx bt mx nx ox px qx ct rx sx tx b( c( d( e( f( #W g( h( i( j( k( l( m( n( o( p( q( r( s( t( u( v( w( x( y( z( A( B( C( D( E( F( G( H( I( J( K( L( M( N( O( P( Q( R( S( T( U( V( W( X( Y( Z( 0( 1( 2( 3( 4( 5( 6( 7( 8( 9( !( #( $( %( '( (( )( *( +( ,( -( .( /( :( ;( =( ?( @( [( $W ux vx wx ]( ^( _( `( {( |( }( ~( a) b) c) d) e) f) g) h) i) j) k) l) m) n) o) p) q) r) s) t) u) v) w) x) xx yx Qb Rb W Sb Tb X Ub Vb Wb zx %W Ax Bx dt Cx et ft y) Dx z) A) B) Ex C) D) E) F) G) H) I) J) K) L) M) N) O) P) Q) R) S) T) U) V) W) X) Fx Gx Y) Z) 0) 1) 2) 3) 4) 5) 6) 7) 8) 9) !) #) $) %) ') () )) *) +) ,) -) .) /) :) ;) =) ?) @) [) Hx Ix ]) ^) _) `) {) |) }) ~) a* b* c* d* e* Jx f* g* h* i* j* k* l* m* n* o* p* q* r* s* t* u* v* w* x* Kx y* z* A* B* C* D* E* F* G* H* I* J* K* L* M* N* O* P* Q* R* S* T* U* V* W* X* Y* Lx Mx Z* 0* 1* 2* 3* 4* 5* 6* 7* 8* 9* !* #* $* %* '* (* )* ** +* ,* -* .* /* Nx Ox :* ;* =* ?* @* [* ]* ^* _* `* {* |* }* ~* a+ b+ c+ d+ e+ f+ g+ h+ Px Qx i+ j+ k+ l+ m+ n+ o+ p+ q+ r+ s+ t+ u+ v+ w+ x+ y+ z+ A+ B+ C+ D+ Rx Sx E+ F+ G+ H+ I+ J+ K+ L+ M+ N+ O+ P+ Q+ R+ S+ T+ U+ V+ W+ X+ Y+ Z+ Tx Ux 0+ 1+ 2+ 3+ 4+ 5+ 6+ 7+ 8+ 9+ !+ #+ $+ %+ '+ (+ )+ *+ ++ ,+ -+ .+ Vx Wx /+ :+ ;+ =+ ?+ @+ [+ ]+ ^+ _+ `+ {+ |+ }+ ~+ a, b, c, d, e, f, g, Xx Yx h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, Zx 0x D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, 1x 2x Z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, !, #, $, %, ', (, ), *, +, ,, -, 3x 4x ., /, :, ;, =, ?, @, [, ], ^, _, `, {, |, }, ~, a- b- c- d- e- f- 5x 6x g- h- i- j- k- l- m- n- o- p- q- r- s- t- u- v- w- x- y- z- A- B- 7x 8x C- D- E- F- G- H- I- J- K- L- M- N- O- P- Q- R- S- T- U- V- W- X- 9x !x Y- Z- 0- 1- 2- 3- 4- 5- 6- 7- 8- 9- !- #- $- %- '- (- )- *- +- ,- #x $x -- .- /- :- ;- =- ?- @- [- ]- ^- _- `- {- |- }- ~- a. b. c. d. e. %x 'x f. g. h. i. j. k. l. (x )x m. n. o. p. q. r. s. t. u. v. w. x. y. z. A. B. C. *x +x D. E. F. G. H. I. J. K. L. M. N. O. P. Q. R. S. T. U. V. W. X. Y. ,x -x Z. 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. !. #. $. %. '. (. ). *. +. ,. -. .x /x .. /. :. ;. =. ?. @. [. ]. ^. _. `. {. |. }. ~. a/ b/ c/ d/ e/ f/ :x ;x g/ h/ i/ j/ k/ l/ m/ n/ o/ p/ =x q/ ?x 'W r/ s/ @x t/ u/ v/ w/ x/ [x ]x gt ^x ht Xb Yb Zb 0b 1b 2b 3b y/ z/ A/ B/ C/ D/ E/ F/ G/ H/ I/ J/ _x `x (W K/ L/ M/ N/ O/ P/ Q/ R/ S/ T/ U/ V/ W/ X/ Y/ Z/ 0/ 1/ 2/ 3/ 4/ 5/ {x |x 6/ }x ~x 7/ ay 8/ 9/ !/ #/ $/ %/ by it cy 4b dy '/ ey (/ )/ 5b 6b 7b 8b eb { 9b fb !b gb fy #b $b gy jt hb B hy kt )W iy jy *W ky ly +W my ny ,W oy py -W qy ry .W sy ty lt */ uy /W vy wy :W xy yy ;W +/ zy Ay =W By Cy ?W Dy Ey @W ,/ Fy -/ Gy [W ./ Hy // Iy ]W :/ Jy ;/ Ky ^W =/ Ly My _W Ny ?/ Oy `W @/ Py Qy {W [/ Ry Sy |W ]/ Ty Uy }W ^/ Vy Wy ~W _/ Xy Yy `/ {/ |/ }/ ~/ a: Zy 0y aX b: c: 1y 2y bX d: e: cX f: g: 3y 4y mt 5y dX h: 6y 7y i: j: k: l: m: n: eX o: 8y 9y p: q: r: s: t: u: v: !y fX #y $y %y gX w: hX x: 'y (y iX )y y: *y jX z: +y ,y -y .y /y :y A: ;y =y B: C: D: E: F: ?y G: @y H: I: J: K: L: [y ]y M: N: O: ^y P: Q: R: _y S: T: `y {y U: V: W: X: Y: Z: 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: !: |y }y ~y #: $: %: ': kX az bz (: ): cz *: dz +: ez ,: fz gz hz iz jz kz -: lz .: mz /: nz :: oz ;: pz =: qz ?: @: rz nt %b sz ot [: 0v tz uz lX vz wz mX ]: ^: _: `: nX xz yz pt {: zz oX Az Bz qt |: Cz Dz }: Ez Fz Gz Hz Iz Jz ~: Kz a; Lz Mz pX Nz Oz Pz Qz +s Rz Sz ?v jw @v %s [v -s b; c; d; e; f; g; h; i; j; k; l; qX m; n; o; p; q; r; Tz s; t; u; Uz v; w; Vz x; y; z; rX A; B; C; D; E; F; G; H; Wz I; J; sX K; Xz L; Yz M; tX Zz 0z N; uX 1z 2z O; 3z P; 4z 5z Q; R; vX wX xX yX 6z 7z S; T; U; V; 8z 9z zX !z W; X; Y; Z; 0; 1; #z AX BX 2; 3; $z %z 'z (z CX DX )z *z 4; 5; 6; 7; 8; 9; +z ,z EX FX -z .z !; #; $; %; '; (; /z ); GX HX IX :z ;z =z *; +; ,; ?z @z -; .; /; [z JX ]z ^z :; ;; =; KX _z ?; @; [; `z ]; LX {z |z ^; _; MX }z `; {; |; ~z NX aA bA }; rt cA ~; dA OX eA fA PX gA a= e pd 'b b= 1v c= 2v d= 3v hA iA e= f= g= jA kA h= QX RX lA mA nA oA i= j= k= l= SX TX pA qA m= n= rA sA o= p= UX VX tA q= r= s= ]c t= u= v= w= ^c x= uA vA wA xA y= z= yA zA A= B= AA BA CA WX DA XX EA FA GA YX ZX 0X HA 1X IA 2X 3X JA 4X KA LA MA NA OA PA QA st 5X RA SA TA tt UA 6X VA WA ut XA C= YA D= E= ZA F= G= 0A H= 1A I= J= 2A K= 7X 8X 9X 3A L= M= N= O= 4A 5A P= Q= R= 6A S= 7A T= U= V= W= 8A 9A X= Y= Z= 0= !A #A 1= 2= 3= 4= $A %A 5= 6= 7= 8= 'A !X #X $X %X 'X (X 9= (A )A != *A +A )X *X #= ,A $= %= -A .A '= (= +X ,X (b )= *= /A :A ;A =A += ,= -= .= ?A @A /= := ;= == [A ]A ?= ^A @= [= _A `A )b {A ]= |A }A ^= ~A -X .X _= `= {= |= }= ~= a? b? aB bB cB dB c? d? e? f? /X :X ;X eB fB gB vt hB =X iB wt *5 jB kB lB ?X @X [X ]X mB nB oB pB ^X qB xt rB yt sB g? tB uB _X `X vB {X wB xB |X yB h? zB }X AB i? ~X BB CB DB aY EB FB bY GB HB cY IB JB j? dY eY KB LB MB NB k? fY OB PB QB RB l? m? n? o? gY hY SB TB p? q? r? s? t? u? zt At UB VB v? w? x? y? z? A? WB XB iY jY YB B? C? ZB D? E? kY lY 0B 1B F? G? 2B H? I? J? mY Bt 3B 4B K? 5B 6B L? nY oY 7B pY 8B M? 9B Ct !B qY N? #B Dt $B rY O? !5 %B sY 'B 75 Et (B Ft )B tY *B Gt +B Ht ,B It Jt -B .B Kt Lt /B uY :B P? ;B Mt =B ?B Q? vY @B [B ]B wY Nt xY ^B _B yY `B zY {B |B R? }B ~B AY aC bC BY S? cC Ot dC CY eC DY fC gC T? hC U? EY FY GY iC jC kC lC V? W? HY IY JY KY mC nC oC X? pC qC rC sC Y? Z? 0? 1? 2? 3? 4? 5? LY MY tC uC vC wC 6? 7? 8? 9? !? #? NY OY xC yC zC AC $? %? '? (? )? *? +? ,? PY QY BC CC DC EC -? .? /? :? ;? =? ?? @? RY SY FC GC [? ]? ^? _? `? {? TY UY HC IC JC |? }? ~? a@ KC VY LC b@ MC WY NC OC XY PC c@ QC YY RC d@ SC TC UC ZY VC e@ Pt 0Y WC XC f@ 1Y 2Y YC ZC 0C g@ h@ i@ j@ k@ 3Y 4Y 1C 2C l@ 3C m@ n@ o@ p@ 5Y 6Y 4C 5C 6C 7C q@ r@ 7Y 8Y 8C 9C !C s@ t@ #C 9Y !Y $C %C 'C (C u@ v@ #Y $Y )C *C +C ,C w@ x@ y@ z@ %Y 'Y -C .C A@ /C :C B@ (Y )Y ;C =C ?C C@ D@ @C *Y +Y [C ]C ^C _C E@ F@ ,Y -Y `C G@ H@ I@ {C |C J@ }C ~C aD .Y /Y bD cD dD eD K@ L@ :Y ;Y fD gD =Y ?Y M@ N@ hD iD O@ P@ @Y [Y Q@ jD R@ kD ]Y ^Y _Y S@ T@ U@ V@ lD mD W@ X@ Y@ Z@ `Y Qt 0@ 1@ nD oD pD 2@ 3@ 4@ {Y |Y qD rD sD tD 5@ 6@ }Y ~Y 7@ 8@ 9@ !@ uD vD #@ $@ %@ '@ Rt aZ wD xD (@ yD bZ cZ zD AD )@ BD CD *@ +@ ,@ -@ .@ dZ eZ DD /@ ED FD :@ ;@ =@ ?@ @@ [@ ]@ ^@ fZ gZ GD HD _@ `@ ID JD {@ |@ }@ ~@ hZ St a[ b[ c[ d[ KD e[ LD MD f[ g[ ND OD PD iZ QD jZ RD SD TD h[ i[ j[ k[ kZ lZ UD VD Tt WD mZ XD Ut YD ZD 0D nZ 1D Vt 2D l[ Wt 3D m[ 4D oZ pZ 5D 6D qZ 7D 8D 9D !D Xt rZ Yt #D Zt $D 0t sZ %D 'D 1t 2t (D )D 3t 4t *D +D n[ o[ ,D -D tZ uZ .D /D :D ;D vZ wZ =D ?D @D p[ q[ r[ s[ t[ [D ]D u[ v[ w[ x[ y[ z[ xZ yZ A[ B[ C[ D[ ^D E[ _D `D F[ G[ H[ I[ J[ K[ zZ AZ L[ M[ N[ O[ P[ Q[ R[ S[ T[ {D U[ V[ W[ X[ Y[ Z[ |D }D 0[ 1[ ~D aE 2[ 3[ BZ CZ 4[ 5[ 6[ 7[ 8[ 9[ ![ #[ $[ %[ '[ ([ )[ *[ +[ ,[ -[ .[ DZ EZ bE cE /[ dE eE :[ ;[ =[ FZ GZ fE gE ?[ @[ [[ ][ ^[ _[ hE iE `[ {[ jE HZ kE lE IZ mE JZ nE |[ }[ oE KZ pE 5t qE LZ rE ~[ sE 6t tE uE 7t vE wE xE yE zE a] . b] / MZ : NZ ; c] 9 d] ! OZ # PZ $ QZ e] ?c f] RZ g] h] i] j] k] l] AE BE SZ m] n] o] p] CE TZ q] r] s] DE EE t] FE GE UZ NW HE *b IE VZ JE KE LE ME WZ NE OE PE u] v] ib QE RE w] x] SE TE y] z] A] B] C] D] E] F] G] H] 8t UE VE WE XE YE I] J] K] L] ZE M] N] O] P] Q] 0E 1E 2E 3E +b 9t R] 4E Y !t 5E 6E S] T] XZ U] 7E YZ 8E 9E V] W] !E #E X] Y] $E Z] %E 'E (E 0] )E 1] *E #t ,b +E ,E 2] -E -b .b /b 3] 4] 5] 6] 7] 8] .E 9] /E :E ;E $t =E ?E ZZ %t @E +v 't (t )t *t [E ]E !] #] 0Z +t $] %] '] (] )] *] +] ,] -] .] /] :] ;] =] ?] @] [] ]] ^] _] ^E `] _E {] ]v `E |] }] ~] a^ b^ c^ {E d^ e^ :b ;b 1Z f^ |E g^ }E 2Z :5 '7 #5 ~E ,t aF =b ?b bF cF dF eF -t .t fF gF hF iF h^ 3Z /t i^ j^ ^v 4v @b [b jF kF k^ l^ m^ n^ o^ p^ q^ r^ s^ t^ u^ v^ lF mF w^ x^ y^ z^ A^ B^ C^ D^ E^ F^ G^ H^ I^ nF J^ oF K^ L^ M^ N^ pF O^ qF rF sF tF P^ Q^ uF R^ S^ T^ U^ V^ W^ vF X^ wF Y^ Z^ 0^ 1^ 2^ 3^ xF 4^ 5^ 6^ 7^ 8^ 9^ !^ #^ $^ %^ '^ (^ )^ yF *^ +^ ,^ -^ zF .^ AF BF 4Z /^ :^ ;^ =^ ?^ CF DF @^ [^ ]^ ^^ _^ `^ {^ |^ }^ ~^ a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ EF FF q_ r_ s_ GF t_ u_ v_ w_ x_ HF y_ z_ A_ ]b IF JF B_ C_ D_ E_ F_ G_ H_ I_ J_ K_ L_ M_ N_ O_ P_ Q_ R_ S_ T_ U_ V_ W_ X_ Y_ KF Z_ 0_ 1_ LF MF NF ^b _b OF 2_ 3_ PF 4_ 5_ 6_ 7_ QF 8_ 9_ RF !_ #_ _v 's `b {b SF TF UF :t VF WF $_ ;t `v {v %_ '_ (_ )_ XF YF *_ 5Z +_ ,_ -_ ZF 0F ._ /_ 1F =t 2F :_ 3F 4F ;_ =_ ?_ @_ [_ ]_ ^_ 5F 6Z 6F C Z D E F G H 0 7F 7Z 8F ?t 9F 8Z !F __ #F `_ $F 9Z {_ |_ }_ ~_ a` b` c` d` e` f` g` h` i` j` k` l` m` n` o` p` q` r` s` t` u` v` w` x` y` z` A` B` C` D` E` F` G` H` I` J` K` L` M` N` O` P` %F Q` !Z |b R` 'F S` T` }b #Z U` (F V` W` X` Y` Z` 0` 1` $Z )F 2` 3` *F %Z +F 'Z 4` 5` (v l m n o ,F (Z @t -F )Z .F *Z jb kb lb I J mb nb /F +Z 6` :F ;F =F 7` ,Z ?F @F 8` 9` !` #` $` %` -Z '` (` )` *` +` ,` -` .` /` :` ;` =` ?` @` [` ]` ^` _` `` {` |` }` ~` a{ b{ c{ d{ e{ f{ g{ h{ i{ j{ k{ l{ m{ n{ o{ p{ q{ r{ s{ t{ u{ v{ w{ x{ y{ z{ A{ B{ C{ D{ E{ F{ G{ H{ I{ J{ K{ L{ M{ N{ O{ P{ Q{ R{ S{ T{ U{ V{ W{ X{ Y{ Z{ .Z [F ]F ^F 0{ 1{ 2{ 3{ 4{ 5{ 6{ 7{ 8{ 9{ !{ #{ ${ %{ '{ ({ ){ *{ +{ ,{ -{ .{ /{ :{ ;{ ={ ?{ @{ [{ ]{ ^{ _{ _F `F ~b ac 1 bc cc 2 dc ec fc {F [t |F }F ]t ~F ^t _t `{ {{ |{ aG }{ bG ~{ a| b| c| d| e| f| g| h| i| j| k| l| m| n| o| p| q| r| s| t| u| cG dG v| w| x| y| z| A| B| C| D| E| eG F| G| H| I| J| K| L| M| N| O| P| Q| R| S| T| U| V| W| X| Y| Z| fG 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| !| #| $| gG %| '| (| )| *| +| ,| -| .| /| :| ;| =| ?| @| [| ]| ^| _| hG `| {| || }| ~| a} b} c} d} e} f} g} h} i} j} k} l} m} n} o} p} q} r} s} t} u} v} iG jG w} x} y} z} A} B} C} D} E} F} G} H} I} J} K} L} M} N} O} P} Q} R} S} T} kG lG U} V} W} X} Y} Z} 0} 1} 2} 3} 4} 5} 6} 7} 8} 9} !} #} $} %} '} (} mG nG )} *} +} ,} -} .} /} :} ;} =} ?} @} [} ]} ^} _} `} {} |} }} ~} a~ oG pG b~ c~ d~ e~ f~ g~ h~ i~ j~ k~ l~ m~ n~ o~ p~ q~ r~ s~ t~ u~ v~ w~ qG rG x~ y~ z~ A~ B~ C~ D~ E~ F~ G~ H~ I~ J~ K~ L~ M~ N~ O~ P~ Q~ R~ S~ sG tG T~ U~ V~ W~ X~ Y~ Z~ 0~ 1~ 2~ 3~ 4~ 5~ 6~ 7~ 8~ 9~ !~ #~ $~ %~ '~ uG vG (~ )~ *~ +~ ,~ -~ .~ /~ :~ ;~ =~ ?~ @~ [~ ]~ ^~ _~ `~ {~ |~ }~ ~~ wG xG aabbabcabdabeabfabgabhabiabjabkablabmabnaboabpabqabrabsabtabuabvabyG zG wabxabyabzabAabBabCabDabEabFabGabHabIabJabKabLabMabNabOabPabQabRabAG BG SabTabUabVabWabXabYabZab0ab1ab2ab3ab4ab5ab6ab7ab8ab9ab!ab#ab$ab%abCG DG 'ab(ab)ab*ab+ab,ab-ab.ab/ab:ab;ab=ab?ab@ab[ab]ab^ab_ab`ab{ab|ab}abEG FG ~ababbbbbcbbdbbebbfbbgbbhbbibbjbbkbblbbmbbnbbobbpbbqbbrbbsbbtbbubbGG HG vbbwbbxbbybbzbbAbbBbbCbbDbbEbbFbbGbbHbbIbbJbbKbbLbbMbbNbbObbPbbQbbIG JG RbbSbbTbbUbbVbbWbbXbbYbbZbb0bb1bb2bb3bb4bb5bb6bb7bb8bb9bb!bb#bb$bbKG LG %bb'bb(bb)bb*bb+bb,bb-bbMG NG .bb/bb:bb;bb=bb?bb@bb[bb]bb^bb_bb`bb{bb|bb}bb~bbOG PG acbbcbccbdcbecbfcbgcbhcbicbjcbkcblcbmcbncbocbpcbqcbrcbscbtcbucbvcbQG RG wcbxcbycbzcbAcbBcbCcbDcbEcbFcbGcbHcbIcbJcbKcbLcbMcbNcbOcbPcbQcbRcbSG TG ScbTcbUcbVcbWcbXcbYcbZcb0cb1cb2cb3cb4cb5cb6cb7cb8cb9cb!cb#cb$cb%cbUG VG 'cb(cb)cb*cb+cb,cb-cb.cb/cb:cbWG ;cbXG /Z =cb?cbYG @cb[cb]cb^cb_cbZG 0G `t 1G :Z gc hc ic jc kc lc mc `cb{cb|cb}cb~cbadbbdbcdbddbedbfdbgdb2G 3G ;Z hdbidbjdbkdbldbmdbndbodbpdbqdbrdbsdbtdbudbvdbwdbxdbydbzdbAdbBdbCdb4G 5G DdbEdb6G Fdb7G 8G GdbHdbIdbJdb9G !G {t #G nc $G Kdb%G LdbMdboc pc qc rc ob | sc pb tc qb 'G uc vc (G |t rb K )G }t ~t Ndb*G au Odb+G =Z ,G -G ?Z .G /G @Z :G ;G [Z =G ?G ]Z @G [G ^Z ]G ^G _Z _G `G `Z Pdb{G |G {Z Qdb}G |Z Rdb~G }Z SdbTdbUdbaH ~Z bH VdbWdbcH a0 XdbdH YdbeH b0 ZdbfH gH c0 0dbhH iH d0 1dbjH kH e0 2dblH mH f0 3dbnH oH g0 4dbpH qH h0 5dbrH sH 6db7db8db9db!db#dbtH uH i0 $db%dbvH wH j0 'db(dbk0 )db*dbxH yH bu zH l0 AH +dbBH ,db-db.db/db:db;dbm0 =dbCH DH ?db@db[db]db^db_db`dbEH n0 FH {dbGH o0 HH p0 |dbIH JH q0 }dbKH LH r0 ~dbMH NH OH PH QH aebRH SH bebcebdebeebTH febUH gebVH hebiebjebkeblebWH XH mebneboebYH pebqebrebZH sebteb0H uebvebwebxebyebzebAebBebCebDebEebFebGebHebIebJebKebLeb1H Meb2H NebOebPebQebs0 Reb3H SebTeb4H UebVebWeb5H 6H 7H 8H Xeb9H Yeb!H Zeb0eb1eb#H 2eb$H 3eb4eb5eb6eb7eb%H 8eb9eb'H cu wc (H t0 !eb5v #eb)H u0 $eb*H v0 +H %eb'eb(ebw0 ,H -H x0 .H /H y0 )eb:H z0 ;H =H *eb+eb?H @H [H ]H ^H ,eb-eb_H `H {H |H A0 }H ~H aI bI OW cI dI |v (s }v )s ~v .s .eb/eb:eb;eb=eb?eb@eb[eb]eb^eb_ebB0 `eb{eb|eb}eb~ebafbbfbcfbdfbefbeI ffbfI gI gfbhfbifbC0 jfbkfblfbmfbnfbofbpfbhI qfbrfbsfbD0 tfbiI jI ufbvfbE0 kI lI wfbF0 mI nI xfbyfboI pI qI rI zfbG0 H0 I0 J0 sI tI AfbBfbCfbDfbuI vI K0 wI EfbFfbGfbHfbIfbJfbxI L0 du yI KfbLfbMfbzI AI M0 N0 BI CI NfbOfbPfbQfbRfbSfbTfbUfbO0 P0 DI EI VfbWfbXfbYfbZfb0fb1fb2fbQ0 R0 S0 FI GI HI 3fb4fb5fb6fb7fb8fbII JI KI T0 LI 9fb!fb#fbMI U0 NI OI $fb%fb'fb(fbV0 PI QI )fb*fbW0 RI +fb,fb-fbSI X0 TI UI .fbY0 VI WI XI Z0 YI ZI 00 /fb:fbf qd xc 0I 6v 1I 7v 2I 8v 3I 4I ;fb=fb?fb@fb5I 6I 10 20 7I 8I [fb]fb^fb_fb`fb{fb30 40 9I |fb!I }fb#I $I ~fbagb50 60 %I bgbcgbdgb_c egbfgbggbhgb`c igb'I (I )I *I jgbkgb+I ,I lgbmgb-I ngb.I eu /I fu :I ;I =I gu hu iu ?I ju @I ku 70 [I lu ]I ^I _I `I {I |I }I mu 80 ~I aJ bJ nu cJ 90 dJ eJ ou fJ ogbpgbgJ qgbhJ rgbiJ sgbtgbjJ ugbvgbkJ wgb!0 #0 $0 lJ xgbygbzgbAgbmJ nJ BgbCgbDgbEgboJ pJ FgbGgbHgbIgbqJ rJ JgbKgbLgbMgbsJ tJ NgbOgbPgbQgbuJ vJ RgbSgbTgbUgbwJ %0 '0 (0 )0 *0 +0 VgbxJ yJ WgbzJ AJ ,0 -0 XgbYgbZgb0gbBJ CJ DJ 1gb.0 pu yc 2gb3gbEJ FJ 4gbGJ 5gb6gb7gb8gbHJ IJ 9gb!gb#gb$gbJJ KJ %gb'gb(gbLJ MJ NJ zc OJ )gbPJ QJ *gbRJ /0 :0 SJ TJ +gb,gb-gb.gb/gb:gbUJ VJ ;gb=gb?gb@gb[gb]gb;0 =0 ?0 WJ XJ YJ qu ZJ @0 0J ru ,v 1J 2J 3J su tu [0 ]0 4J 5J 6J 7J ^0 8J uu 9J vu !J #J $J %J _0 `0 'J {0 (J ^gb|0 )J *J +J }0 ,J _gbwu -J .J /J ~0 :J ;J a1 =J ?J b1 @J [J `gbc1 d1 ]J ^J _J `J {gbe1 {J |J }J ~J |gb}gb~gbahbf1 g1 aK bK bhbchbdhbehbcK dK h1 i1 eK fK fhbghbhhbihbjhbkhbgK hK j1 k1 iK jK lhbkK lK mhbl1 m1 mK nK nhbohboK pK phbqhbn1 o1 qK rK rhbsK tK shbp1 q1 uK r1 vK thbwK xu xK yu uhbyK s1 zK zu vhb$5 whbAu AK Bu Cu BK t1 CK Du DK u1 EK Eu FK v1 Fu GK HK Gu Hu IK w1 JK KK xhbx1 LK MK yhby1 NK OK zhbz1 A1 B1 PK QK Iu RK C1 AhbSK TK UK BhbJu ChbVK Ku WK XK D1 YK E1 ZK F1 0K 1K Dhb2K EhbG1 H1 I1 3K 4K 5K 6K FhbGhbJ1 K1 L1 M1 7K 8K 9K !K #K $K %K 'K HhbIhbJhbKhbLhbMhbNhbOhbN1 O1 (K )K *K +K PhbQhbRhbShbThbUhbP1 Q1 ,K -K .K /K VhbWhbXhbYhbZhb0hb1hb2hbR1 S1 :K ;K =K ?K 3hb4hb5hb6hb7hb8hb9hb!hbT1 U1 @K [K ]K ^K #hb$hb%hb'hbV1 Lu _K `K (hb)hb{K *hb+hb,hbW1 |K -hb}K X1 ~K aL Y1 bL .hbcL Z1 dL /hbeL fL gL 01 hL iL 11 21 jL kL :hb31 41 lL mL ;hb=hb?hb@hb[hb]hb51 61 nL oL ^hb_hb`hb{hb|hb}hb71 81 pL qL ~hbaibbibcib91 !1 rL sL dibeibfibgib#1 $1 tL uL hibiibjibkib%1 '1 vL wL xL yL libmibniboib(1 )1 zL AL pibqibribsib*1 +1 BL CL DL tibuibvibMu ,1 wibxibEL FL yibzib-1 .1 AibGL BibCibHL IL DibEibJL KL /1 :1 FibGibLL ML NL OL ;1 =1 PL QL ?1 @1 HibIibRL SL JibKib[1 ]1 LibTL MibUL ^1 _1 `1 NibOibVL WL XL YL PibQibRibSib{1 |1 TibUibZL 0L 1L 2L VibWib}1 ~1 3L 4L XibYibZib0iba2 b2 1ib2ib3ib4ib5L 6L 5ib6ib7ib8ibc2 d2 7L 8L 9ib!ibe2 f2 9L !L #ib#L $ib%ib'ib(ib)ib*ibg2 h2 +ib,ib$L %L -ib.ib/ib'L :ib;ib(L =ibi2 j2 )L *L +L ,L ?ib@ib[ib]ib^ib_ibk2 l2 `ib{ib|ib}ib~ibajb-L .L bjbcjb/L :L ;L Nu =L Ou ?L @L [L ]L ^L djbejbm2 n2 _L `L Pu {L Qu |L Ru }L ~L aM o2 bM p2 cM dM q2 eM fjbfM r2 s2 gM hM t2 iM jM kM lM u2 v2 Su mM Tu nM w2 x2 oM pM y2 Uu qM rM z2 A2 sM tM gjbhjbuM vM B2 C2 ijbjjbwM xM D2 E2 kjbljbmjbnjbojbpjbqjbrjbyM zM sjbtjbujbvjbwjbxjbF2 G2 yjbzjbAjbBjbCjbDjbAM BM CM EjbFjbDM GjbHjbH2 I2 IjbJjbKjbLjbMjbNjbOjbPjbQjbRjbSjbTjbUjbVjbWjbXjbEM FM YjbZjb0jb1jb2jb3jbJ2 K2 4jb5jb6jb7jb8jb9jb!jb#jb$jb%jb'jb(jb)jb*jbGM HM +jb,jbL2 M2 IM JM -jb.jbKM LM /jb:jbN2 O2 MM NM ;jb=jb?jb@jb[jb]jbOM PM ^jb_jbQM P2 RM SM Q2 TM R2 `jb{jbUM VM Vu WM Wu XM S2 YM |jbZM Xu 0M 1M Yu 2M 3M 4M 5M 6M }jb= ~jb? T2 @ U2 [ akb% bkb' V2 ( W2 ) X2 ckb@c dkbY2 ekbfkbgkbhkbikbjkb7M 8M Z2 kkb9M lkbmkb!M 02 nkbokb#M $M pkb%M 'M (M 12 PW )M Ac *M 22 +M ,M -M .M 32 /M qkb:M ;M rkbsb =M ?M skbtkb@M [M ukb]M ^M vkbwkbxkbykbzkbAkbBkbZu _M `M {M |M }M CkbDkbEkbFkbGkbHkbIkbJkbKkbLkb~M aN bN cN Bc 42 dN eN 3 0u fN gN hN Mkb52 NkbiN 62 jN kN OkbPkblN mN QkbRkbnN SkboN pN qN rN sN tN Tkb1u Cc uN UkbVkbvN Dc Ec Fc WkbXkbYkbZkb0kb1kbwN 2kbxN 2u yN zN 3u 4u AN -v 5u 6u 7u 8u BN CN 3kbDN 72 9u 4kb5kb6kb7kb8kb9kb!kb#kb$kb%kb'kb(kb)kb*kb+kb,kb-kb.kb/kb:kbEN FN GN ;kbaw HN IN =kb?kb@kb[kb]kbJN ^kb_kbGc Hc 82 `kbKN LN MN 92 ;5 (7 %5 NN !u ON Ic Jc PN QN RN SN #u $u TN UN VN WN XN !2 %u YN {kbbw 9v Kc Lc ZN 0N |kb}kb~kbalbblb1N clbdlbelbflbglbhlb2N 3N ilbjlbklbllbmlb4N nlbolbplbqlbrlbslb5N 6N tlb7N ulbvlbwlbxlb8N 9N !N #N $N %N 'N ylb(N )N zlbAlbBlbClbDlb*N Elb+N FlbGlbHlb,N IlbJlb-N KlbLlbMlbNlbOlbPlbQlbRlbSlbTlbUlbVlbWlb.N XlbYlbZlb0lb/N :N ;N =N #2 1lb2lb3lb4lb?N @N [N 5lb6lb7lb8lb9lb!lb#lb$lb%lb'lb(lb)lb*lb+lb,lb-lb.lb/lb:lb;lb=lb?lb@lb[lb]lb^lb]N ^N _N _lb`lb`N {N {lb|lb}lb~lb|N ambbmbcmbMc }N ~N dmbembaO fmbgmbhmbimbjmbkmblmbmmbnmbombpmbqmbrmbsmbtmbumbvmbwmbxmbymbzmbbO AmbBmbCmbcO dO eO Nc Oc fO DmbEmbgO FmbGmbHmbhO iO ImbJmbjO KmbkO cw *s Pc Qc lO mO nO 'u oO pO qO $2 dw ew Lmbfw MmbrO sO tO Nmb%2 OmbPmbQmbuO vO RmbwO xO (u yO zO AO BO SmbCO DO TmbUmbVmbWmbEO )u FO L 4 M N O P Q 5 GO *u HO +u IO ,u JO XmbKO LO MO '2 YmbZmb0mb1mb2mb3mb4mb5mb6mb7mb8mb9mb!mb#mb$mb%mb'mb(mb)mb*mb+mb,mb-mb.mb/mb:mb;mb=mb?mb@mb[mb]mb^mb_mb`mb{mb|mb}mb~mbanbbnbcnbdnbenbfnbgnbNO OO (2 Rc hnbPO inbQO Sc )2 jnbRO knblnbmnbnnbonbpnbqnb*2 SO TO UO VO +2 WO ,2 XO rnb)v p q r s YO -2 -u ZO .u 0O .2 tb ub vb R S wb xb 1O /u 2O 3O 4O 5O 6O :u 7O 8O 9O snbtnbunbvnbwnb/2 xnbynbznbAnbBnbCnbDnbEnbFnbGnbHnbInbJnbKnbLnbMnbNnbOnbPnbQnbRnbSnbTnbUnbVnbWnbXnbYnbZnb0nb1nb2nb3nb4nb5nb6nb7nb8nb9nb!nb#nb$nb%nb'nb(nb)nb*nb+nb,nb-nb.nb/nb:nb;nb=nb?nb@nb[nb]nb^nb_nb`nb{nb|nb}nb~nbaobbobcobdobeobfobgobhobiob:2 !O #O $O jobkoblobmobnoboobpobqobrobsobtobuobvobwobxobyobzobAobBobCobDobEobFobGobHobIobJobKobLobMob%O Nob'O (O Tc Uc 6 Vc Wc 7 Xc Yc Zc )O ;u *O +O =u ,O ?u @u Oob-O Pob.O Qob/O RobSobTobUobVobWobXobYobZob0ob1ob2ob3ob4ob5ob6ob7ob8ob9ob!ob:O #ob;O =O $ob%ob'ob(ob)ob*ob+ob,ob-ob.ob?O /ob:ob;ob=ob?ob@ob[ob]ob^ob_ob`ob{ob|ob}ob~obapbbpbcpbdpbepb@O [O fpbgpbhpbipbjpbkpblpbmpbnpbopbppbqpbrpb]O spbtpbupbvpbwpbxpbypbzpbApbBpbCpbDpbEpbFpbGpbHpbIpb^O Jpb_O KpbLpbMpbNpbOpbPpbQpbRpbSpbTpbUpbVpbWpbXpbYpbZpb0pb1pb2pb3pb4pb5pb6pb7pb8pb`O 9pb{O |O !pb#pb$pb%pb'pb(pb)pb*pb+pb,pb-pb.pb/pb:pb;pb=pb?pb@pb[pb]pb^pb_pb`pb}O ~O aP {pb|pb}pb~pbaqbbqbcqbdqbeqbfqbgqbhqbiqbjqbkqblqbmqbnqboqbpqbqqbbP cP dP rqbsqbtqbuqbvqbwqbxqbeP yqbzqbAqbBqbCqbDqbEqbFqbGqbHqbIqbJqbKqbLqbfP gP MqbNqbOqbPqbQqbRqbhP SqbTqbUqbVqbWqbXqbYqbZqb0qb1qb2qb3qb4qb5qb6qbiP jP 7qb8qb9qb!qb#qb$qbkP lP %qb'qb(qb)qb*qb+qb,qb-qb.qb/qb:qb;qb=qb?qbmP @qb[qb]qb^qb_qb`qb{qbnP |qb}qb~qbarbbrbcrbdrberbfrbgrbhrbirbjrbkrblrboP pP mrbnrborbprbqrbrrbsrbtrburbvrbwrbxrbyrbzrbArbBrbCrbDrbErbFrbGrbqP rP sP HrbIrbJrbKrbLrbMrbNrbOrbPrbQrbRrbSrbTrbUrbVrbWrbXrbYrbZrb0rb1rbtP uP vP 2rb3rb4rb5rb6rb7rb8rb9rb!rb#rb$rb%rb'rb(rb)rb*rb+rb,rb-rb.rb/rbwP xP yP :rb;rb=rb?rb@rb[rb]rb^rb_rb`rb{rb|rb}rb~rbasbbsbcsbdsbesbfsbgsbzP AP BP hsbisbjsbksblsbmsbnsbosbpsbqsbrsbssbtsbusbvsbwsbxsbysbzsbAsbBsbCP DP EP CsbDsbEsbFsbGsbHsbIsbJsbKsbLsbMsbNsbOsbPsbQsbRsbSsbTsbUsbVsbWsbFP GP HP XsbYsbZsb0sb1sb2sb3sb4sb5sb6sb7sb8sb9sb!sb#sb$sb%sb'sb(sb)sbIP *sbJP KP +sb,sb-sb.sb/sb:sb;sb=sb?sb@sb[sb]sb^sb_sb`sb{sb|sb}sb~sbatbLP btbMP NP ctbdtbetbftbgtbhtbitbOP PP QP jtbktbltbmtbntbotbptbqtbrtbstbttbutbvtbwtbxtbRP SP TP ytbztbAtbBtbCtbDtbEtbFtbGtbHtbItbJtbKtbLtbMtbNtbOtbPtbQtbRtbStbUP VP WP TtbUtbVtbWtbXtbYtbZtb0tb1tb2tb3tb4tb5tb6tb7tb8tb9tb!tb#tb$tb%tbXP YP ZP 'tb(tb)tb*tb+tb,tb-tb.tb/tb:tb;tb=tb?tb@tb[tb]tb^tb_tb`tb{tb|tb0P 1P 2P }tb~tbaubbubcubdubeubfub3P gub4P hub5P ;2 6P iub7P jubkublubmubnub8P 9P [u !P ]u 0c 1c 2c 3c 4c 5c 6c oubpubqubrubsubtubuubvubwubxubyubzub#P $P =2 AubBubCubDubEubFubGubHubIubJubKubLub%P MubNubOubPubQubRubSubTubUub'P (P )P *P +P Vub,P -P .P WubXubYub/P :P ^u ;P 7c =P ?P @P Zub0ub8c 9c !c #c yb } $c zb %c Ab [P 'c (c ]P _u Bb T ^P `u ?2 _P `P {u 1ub{P @2 |P }P [2 ~P aQ |u bQ cQ ]2 dQ eQ }u fQ gQ ~u hQ iQ av jQ kQ ^2 lQ mQ nQ bv oQ pQ cv qQ rQ _2 sQ tQ 2ubuQ `2 vQ wQ 3ubxQ {2 yQ zQ 4ubAQ |2 BQ CQ DQ }2 EQ FQ GQ ~2 HQ IQ JQ a3 KQ LQ MQ b3 NQ OQ PQ dv 5ubQQ RQ c3 SQ TQ UQ 6ub7ub8ub9ub!ub#ubVQ WQ d3 $ubXQ YQ ZQ e3 0Q %ubf3 'ub1Q 2Q 3Q ev 4Q g3 5Q 6Q 7Q (ub)ub*ub+ub,ub-ubh3 8Q 9Q !Q .ub/ub:ub;ub=ub?ub@ub#Q fv $Q [ub%Q gv 'Q i3 (Q )Q *Q j3 +Q ,Q -Q k3 .Q /Q :Q ;Q =Q ?Q @Q [Q ]Q ^Q ]ub^ub_ub_Q `ub`Q {ub{Q |ub}ub~ubavb|Q }Q ~Q bvbaR cvbbR dvbcR evbdR fvbgvbeR fR hvbivbjvbkvblvbmvbnvbovbpvbqvbrvbsvbtvbuvbvvbwvbxvbgR hR iR yvbzvbAvbBvbl3 CvbjR DvbEvbkR FvbGvbHvblR mR nR IvbJvboR KvbpR LvbMvbNvbqR OvbrR PvbQvbRvbSvbTvbsR UvbVvbtR hv )c uR m3 Wvb!v XvbvR n3 YvbwR o3 Zvb0vb1vb2vbp3 3vbxR q3 yR 4vbr3 5vbzR s3 6vbAR 7vb8vbBR CR DR ER FR 9vb!vbGR #vbHR $vbt3 IR JR KR LR QW %vbMR gw kw hw lw iw RW 'vb(vb)vb*vb+vb,vb-vb.vb/vb:vb;vbu3 =vb?vb@vb[vb]vb^vb_vb`vb{vb|vbNR }vb~vbOR awbbwbcwbv3 dwbewbfwbgwbhwbiwbjwbkwblwbmwbnwbw3 owbPR pwbqwbrwbx3 QR swbtwby3 RR uwbvwbwwbxwbSR TR ywbzwbz3 A3 B3 C3 UR VR AwbBwbCwbDwbEwbFwbD3 WR GwbHwbIwbJwbKwbLwbMwbE3 F3 NwbOwbPwbQwbXR YR G3 H3 ZR 0R RwbSwbTwbUwbVwbWwbXwbYwbI3 J3 1R 2R Zwb0wb1wb2wb3wb4wb5wb6wbK3 L3 M3 3R 4R 5R 7wb8wb9wb!wb#wb$wb%wb'wb(wbN3 6R )wb*wb+wb,wbO3 7R -wb.wb/wb:wb;wbP3 8R =wb?wb@wbQ3 9R [wb]wb^wb_wbR3 !R `wb{wbS3 #R |wb$R T3 }wb%R U3 ~wbaxbg rd *c bxb#v cxb$v dxb%v 'R (R exbfxbgxbhxbixbjxbV3 W3 )R *R kxblxbmxbnxboxbpxbX3 Y3 +R qxbrxbsxb,R txbuxbvxbZ3 03 -R wxbxxbyxb{c zxbAxbBxbCxb|c DxbExb.R Fxb/R GxbHxb:R ;R IxbJxb=R Kxb?R 13 @R 23 [R ]R ^R 33 43 53 _R 63 `R 73 83 {R 93 |R }R ~R aS bS cS dS !3 #3 LxbeS fS $3 Mxb%3 gS hS iv iS NxbOxbPxbQxbjS RxbSxbTxbUxbkS VxbWxbXxbYxb'3 (3 )3 lS Zxb0xb1xb2xb3xbmS 4xb5xb6xb7xb8xbnS 9xb!xb#xb$xb%xboS 'xbpS (xb)xb*xbqS +xb,xb-xb.xb/xbrS :xb;xb=xb?xb@xb*3 +3 ,3 -3 .3 /3 [xbsS ]xb^xbtS _xb:3 jv `xb{xb|xb}xbuS vS ~xbayb;3 =3 +c bybcybwS xS dybeybfybgybhybiybyS zS jybkyblybmybAS BS nyboybpybqybCS DS ,c ES rybsybFS tybuyb?3 @3 vybwybxybyybzybAybBybCybGS HS DybEybFybGybHybIyb[3 ]3 ^3 IS JybJS _3 KS `3 LS {3 +5 MS NS OS |3 }3 ~3 a4 PS QS RS Kybb4 SS c4 TS d4 US LybVS Mybe4 f4 Nybg4 WS Oybh4 XS PybQybi4 YS Rybj4 ZS Syb0S k4 1S Tybl4 Uyb2S m4 Vyb3S Wybn4 o4 4S XybYyb5S Zybp4 6S 7S 0yb1yb2yb3yb4yb5ybq4 r4 8S 9S 6yb7yb8yb9yb!yb#ybs4 t4 !S #S $yb%yb'yb(yb)yb*yb+yb,ybu4 v4 $S -yb.yb%S /yb:ybw4 x4 'S ;yb=yb?yb(S @yb[yb]yby4 z4 )S ^yb_yb*S `yb{ybA4 B4 |ybC4 +S }yb,S D4 -S E4 ~yb.S F4 /S G4 azb'5 bzbH4 :S 85 kv ;S I4 =S J4 ?S K4 @S L4 [S M4 N4 ]S ^S O4 P4 _S Q4 `S czbdzbR4 {S ezbfzbS4 |S }S gzbT4 U4 V4 ~S aT W4 bT X4 hzbcT izbdT jzbY4 kzbeT Z4 lzbfT 04 gT 14 hT 24 mzbiT nzbozbpzb34 44 54 jT qzbkT rzbszbtzb64 74 84 94 lT uzbmT vzbnT wzboT xzbyzbzzbAzbBzbCzbDzbEzbFzb!4 #4 GzbpT HzbqT IzbJzbKzbLzbMzbNzb$4 %4 rT OzbsT PzbQzbRzbSzbTzbUzbVzbWzbXzb'4 (4 tT YzbuT Zzb0zb1zb2zb3zb4zb5zb6zb7zb)4 *4 vT wT 8zb9zb!zb#zb$zb%zb+4 ,4 xT yT 'zb(zbzT )zb*zb+zb-4 AT ,zbBT .4 CT DT /4 ET -zbFT :4 .zbGT HT IT JT ;4 KT LT =4 ?4 MT NT /zb@4 lv OT PT :zb;zb=zb?zbQT @zb[4 ]4 RT ST [zb]zb^zb_zb`zb{zb^4 _4 TT UT VT WT |zb}zb`4 {4 XT YT ZT 0T 1T 2T |4 }4 3T 4T 5T 6T 7T 8T ~4 a5 9T !T #T $T ~zb%T aAbbAbb5 c5 'T (T cAbdAbeAbfAbd5 e5 )T *T gAbhAbiAbjAbf5 mv kAblAb+T ,T -T .T g5 h5 mAb/T :T ;T =T ?T @T nAb[T ]T i5 j5 ^T _T `T {T |T }T nv ov ~T aU pv k5 oAbbU cU dU pAbeU qv l5 qAbfU gU hU m5 n5 o5 iU jU kU lU mU nU rAbsAbtAbuAbp5 q5 vAbwAboU pU xAbyAbqU rU rv sv sU tU uU vU zAbAAbr5 s5 wU xU yU zU AU BU BAbCAbCU DU t5 u5 EU FU GU HU v5 w5 IU JU DAbEAbKU LU MU NU FAbGAbx5 y5 HAbOU PU QU IAbJAbRU KAbSU TU LAbMAbz5 A5 UU VU NAbOAbWU XU YU ZU PAbQAbB5 C5 0U RAbSAbTAbUAbVAb1U 2U WAb3U 4U 5U 6U tv 7U uv 8U 9U !U #U $U %U 'U D5 E5 (U )U vv *U wv +U xv ,U -U .U yv /U zv :U ;U Av =U ?U @U F5 Bv [U ]U Cv ^U _U `U {U G5 Dv Ev |U Fv }U Gv Hv ~U aV Iv Jv bV cV Kv Lv dV eV fV gV hV iV H5 I5 jV kV lV mV J5 Mv nV XAbYAbZAb0Ab1Ab2Ab3AboV pV qV 4Ab5AbrV sV 6AbK5 L5 7Ab8Ab9Ab!Ab#Ab$AbtV uV %Ab'Ab(AbvV wV )AbM5 Nv *Ab+Ab,Ab-Ab.Ab/AbxV :Ab;Ab=Ab?Ab@Ab[Ab]Ab^Ab_AbyV zV AV BV CV DV `Ab{AbN5 O5 |Ab}Ab~AbaBbbBbcBbdBbeBbfBbgBbhBbiBbjBbkBblBbmBbnBboBbP5 Q5 EV FV pBbqBbGV HV rBbIV R5 S5 JV KV LV sBbtBbuBbvBbwBbxBbMV NV OV PV Ov QV RV Pv SV T5 yBbTV UV VV Qv WV Rv XV U5 YV ZV 0V Sv 1V 2V Tv 3V 4V 5V 6V 7V zBb] ABb^ V5 _ W5 ` BBb* CBb+ X5 , Y5 - Z5 DBb[c EBb05 FBbGBbHBbIBbJBb8V 9V !V Uv KBbLBbMBb#V $V 15 NBbOBb%V 'V (V )V *V +V Vv ,s ,V -c -V 25 .V /V :V ;V 35 =V ?V @V [V PBbCb ]V ^V QBbRBb_V `V {V |V }V SBbTBb~V UBbVBbWBbXBbWv aW bW cW dW eW fW gW YBbZBbhW 0Bb1BbiW 2Bb3BbjW kW lW mW .c 45 nW oW 8 Xv pW qW 4BbrW 55 sW tW 65 uW vW 5Bb6BbwW xW yW 7BbzW AW BW CW DW EW FW GW HW Yv /c IW JW 8BbKW :c ;c =c 9BbLW !Bb#Bb$Bb%BbMW 'Bb
1159 scope["root_path"] = self.root_path 3:v $s ?v jw @v %s [v -s ,Bb.5 _v 's |v (s }v )s ~v .s cw *s gw kw hw lw iw RW
1160 await super().__call__(scope, receive, send) 3mw SW nw g$ TW UW ow *v /s :s ;s =s pw h$ qw i$ VW ?s j$ k$ l$ m$ n$ o$ p$ q$ r$ s$ t$ u$ v$ w$ x$ y$ z$ A$ B$ C$ rw D$ sw E$ .v tw uw F$ G$ H$ I$ J$ K$ L$ M$ Db Eb WW N$ vw O$ ww XW /5 %7 95 xw @s yw Fb Gb zw Aw Bw Cw [s ]s Dw Ew Fw Gw P$ YW ^s Q$ R$ /v Zv Hb Ib Hw Iw S$ T$ U$ V$ W$ X$ Y$ Z$ 0$ 1$ 2$ 3$ Jw Kw 4$ 5$ 6$ 7$ 8$ 9$ !$ #$ $$ %$ '$ ($ Lw )$ *$ Mw +$ ,$ -$ .$ Nw /$ Ow Pw Qw Rw :$ ;$ Sw =$ ?$ @$ [$ ]$ ^$ Tw _$ Uw `$ {$ |$ }$ ~$ a% Vw b% c% d% e% f% g% h% i% j% k% l% m% n% Ww o% p% q% r% Xw s% Yw Zw ZW t% u% v% w% x% 0w 1w y% z% A% B% C% D% E% F% G% H% I% J% K% L% M% N% O% P% Q% R% S% T% U% V% W% X% 2w 3w Y% Z% 0% 4w 1% 2% 3% 4% 5% 5w 6% 7% 8% Jb 6w 7w 9% !% #% $% %% '% (% )% *% +% ,% -% .% /% :% ;% =% ?% @% [% ]% ^% _% `% 8w {% |% }% 9w !w #w Kb Lb $w ~% a' b' c' d' e' %w 'w f' g' (w h' i' :v $s Mb Nb )w j' *w _s +w ,w k' 0W ;v =v l' m' n' o' -w .w p' 1W q' r' s' /w :w t' u' ;w `s =w v' ?w @w w' x' y' z' A' B' C' [w 2W ]w t U u v w x y V ^w 3W _w {s `w 4W {w D' |w E' }w 5W F' G' H' I' J' K' L' M' N' O' P' Q' R' S' T' U' V' W' X' Y' Z' 0' 1' 2' 3' 4' 5' 6' 7' 8' 9' !' #' $' %' '' (' )' *' +' ,' -' ~w .' /' :' ax ;' 6W Ob =' bx ?' @' Pb 7W [' cx ]' ^' _' `' {' |' dx 8W ex }' ~' fx |s gx }s a( hx 'v h i j k ix 9W ~s jx at kx !W ~ ab bb z A cb db lx bt mx nx ox px qx ct rx sx tx b( c( d( e( f( #W g( h( i( j( k( l( m( n( o( p( q( r( s( t( u( v( w( x( y( z( A( B( C( D( E( F( G( H( I( J( K( L( M( N( O( P( Q( R( S( T( U( V( W( X( Y( Z( 0( 1( 2( 3( 4( 5( 6( 7( 8( 9( !( #( $( %( '( (( )( *( +( ,( -( .( /( :( ;( =( ?( @( [( $W ux vx wx ]( ^( _( `( {( |( }( ~( a) b) c) d) e) f) g) h) i) j) k) l) m) n) o) p) q) r) s) t) u) v) w) x) xx yx Qb Rb W Sb Tb X Ub Vb Wb zx %W Ax Bx dt Cx et ft y) Dx z) A) B) Ex C) D) E) F) G) H) I) J) K) L) M) N) O) P) Q) R) S) T) U) V) W) X) Fx Gx Y) Z) 0) 1) 2) 3) 4) 5) 6) 7) 8) 9) !) #) $) %) ') () )) *) +) ,) -) .) /) :) ;) =) ?) @) [) Hx Ix ]) ^) _) `) {) |) }) ~) a* b* c* d* e* Jx f* g* h* i* j* k* l* m* n* o* p* q* r* s* t* u* v* w* x* Kx y* z* A* B* C* D* E* F* G* H* I* J* K* L* M* N* O* P* Q* R* S* T* U* V* W* X* Y* Lx Mx Z* 0* 1* 2* 3* 4* 5* 6* 7* 8* 9* !* #* $* %* '* (* )* ** +* ,* -* .* /* Nx Ox :* ;* =* ?* @* [* ]* ^* _* `* {* |* }* ~* a+ b+ c+ d+ e+ f+ g+ h+ Px Qx i+ j+ k+ l+ m+ n+ o+ p+ q+ r+ s+ t+ u+ v+ w+ x+ y+ z+ A+ B+ C+ D+ Rx Sx E+ F+ G+ H+ I+ J+ K+ L+ M+ N+ O+ P+ Q+ R+ S+ T+ U+ V+ W+ X+ Y+ Z+ Tx Ux 0+ 1+ 2+ 3+ 4+ 5+ 6+ 7+ 8+ 9+ !+ #+ $+ %+ '+ (+ )+ *+ ++ ,+ -+ .+ Vx Wx /+ :+ ;+ =+ ?+ @+ [+ ]+ ^+ _+ `+ {+ |+ }+ ~+ a, b, c, d, e, f, g, Xx Yx h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, Zx 0x D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, 1x 2x Z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, !, #, $, %, ', (, ), *, +, ,, -, 3x 4x ., /, :, ;, =, ?, @, [, ], ^, _, `, {, |, }, ~, a- b- c- d- e- f- 5x 6x g- h- i- j- k- l- m- n- o- p- q- r- s- t- u- v- w- x- y- z- A- B- 7x 8x C- D- E- F- G- H- I- J- K- L- M- N- O- P- Q- R- S- T- U- V- W- X- 9x !x Y- Z- 0- 1- 2- 3- 4- 5- 6- 7- 8- 9- !- #- $- %- '- (- )- *- +- ,- #x $x -- .- /- :- ;- =- ?- @- [- ]- ^- _- `- {- |- }- ~- a. b. c. d. e. %x 'x f. g. h. i. j. k. l. (x )x m. n. o. p. q. r. s. t. u. v. w. x. y. z. A. B. C. *x +x D. E. F. G. H. I. J. K. L. M. N. O. P. Q. R. S. T. U. V. W. X. Y. ,x -x Z. 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. !. #. $. %. '. (. ). *. +. ,. -. .x /x .. /. :. ;. =. ?. @. [. ]. ^. _. `. {. |. }. ~. a/ b/ c/ d/ e/ f/ :x ;x g/ h/ i/ j/ k/ l/ m/ n/ o/ p/ =x q/ ?x 'W r/ s/ @x t/ u/ v/ w/ x/ [x ]x gt ^x ht Xb Yb Zb 0b 1b 2b 3b y/ z/ A/ B/ C/ D/ E/ F/ G/ H/ I/ J/ _x `x (W K/ L/ M/ N/ O/ P/ Q/ R/ S/ T/ U/ V/ W/ X/ Y/ Z/ 0/ 1/ 2/ 3/ 4/ 5/ {x |x 6/ }x ~x 7/ ay 8/ 9/ !/ #/ $/ %/ by it cy 4b dy '/ ey (/ )/ 5b 6b 7b 8b eb { 9b fb !b gb fy #b $b gy jt hb B hy kt )W iy jy *W ky ly +W my ny ,W oy py -W qy ry .W sy ty lt */ uy /W vy wy :W xy yy ;W +/ zy Ay =W By Cy ?W Dy Ey @W ,/ Fy -/ Gy [W ./ Hy // Iy ]W :/ Jy ;/ Ky ^W =/ Ly My _W Ny ?/ Oy `W @/ Py Qy {W [/ Ry Sy |W ]/ Ty Uy }W ^/ Vy Wy ~W _/ Xy Yy `/ {/ |/ }/ ~/ a: Zy 0y aX b: c: 1y 2y bX d: e: cX f: g: 3y 4y mt 5y dX h: 6y 7y i: j: k: l: m: n: eX o: 8y 9y p: q: r: s: t: u: v: !y fX #y $y %y gX w: hX x: 'y (y iX )y y: *y jX z: +y ,y -y .y /y :y A: ;y =y B: C: D: E: F: ?y G: @y H: I: J: K: L: [y ]y M: N: O: ^y P: Q: R: _y S: T: `y {y U: V: W: X: Y: Z: 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: !: |y }y ~y #: $: %: ': kX az bz (: ): cz *: dz +: ez ,: fz gz hz iz jz kz -: lz .: mz /: nz :: oz ;: pz =: qz ?: @: rz nt %b sz ot [: 0v tz uz lX vz wz mX ]: ^: _: `: nX xz yz pt {: zz oX Az Bz qt |: Cz Dz }: Ez Fz Gz Hz Iz Jz ~: Kz a; Lz Mz pX Nz Oz Pz Qz +s Rz Sz ?v jw @v %s [v -s b; c; d; e; f; g; h; i; j; k; l; qX m; n; o; p; q; r; Tz s; t; u; Uz v; w; Vz x; y; z; rX A; B; C; D; E; F; G; H; Wz I; J; sX K; Xz L; Yz M; tX Zz 0z N; uX 1z 2z O; 3z P; 4z 5z Q; R; vX wX xX yX 6z 7z S; T; U; V; 8z 9z zX !z W; X; Y; Z; 0; 1; #z AX BX 2; 3; $z %z 'z (z CX DX )z *z 4; 5; 6; 7; 8; 9; +z ,z EX FX -z .z !; #; $; %; '; (; /z ); GX HX IX :z ;z =z *; +; ,; ?z @z -; .; /; [z JX ]z ^z :; ;; =; KX _z ?; @; [; `z ]; LX {z |z ^; _; MX }z `; {; |; ~z NX aA bA }; rt cA ~; dA OX eA fA PX gA a= e pd 'b b= 1v c= 2v d= 3v hA iA e= f= g= jA kA h= QX RX lA mA nA oA i= j= k= l= SX TX pA qA m= n= rA sA o= p= UX VX tA q= r= s= ]c t= u= v= w= ^c x= uA vA wA xA y= z= yA zA A= B= AA BA CA WX DA XX EA FA GA YX ZX 0X HA 1X IA 2X 3X JA 4X KA LA MA NA OA PA QA st 5X RA SA TA tt UA 6X VA WA ut XA C= YA D= E= ZA F= G= 0A H= 1A I= J= 2A K= 7X 8X 9X 3A L= M= N= O= 4A 5A P= Q= R= 6A S= 7A T= U= V= W= 8A 9A X= Y= Z= 0= !A #A 1= 2= 3= 4= $A %A 5= 6= 7= 8= 'A !X #X $X %X 'X (X 9= (A )A != *A +A )X *X #= ,A $= %= -A .A '= (= +X ,X (b )= *= /A :A ;A =A += ,= -= .= ?A @A /= := ;= == [A ]A ?= ^A @= [= _A `A )b {A ]= |A }A ^= ~A -X .X _= `= {= |= }= ~= a? b? aB bB cB dB c? d? e? f? /X :X ;X eB fB gB vt hB =X iB wt *5 jB kB lB ?X @X [X ]X mB nB oB pB ^X qB xt rB yt sB g? tB uB _X `X vB {X wB xB |X yB h? zB }X AB i? ~X BB CB DB aY EB FB bY GB HB cY IB JB j? dY eY KB LB MB NB k? fY OB PB QB RB l? m? n? o? gY hY SB TB p? q? r? s? t? u? zt At UB VB v? w? x? y? z? A? WB XB iY jY YB B? C? ZB D? E? kY lY 0B 1B F? G? 2B H? I? J? mY Bt 3B 4B K? 5B 6B L? nY oY 7B pY 8B M? 9B Ct !B qY N? #B Dt $B rY O? !5 %B sY 'B 75 Et (B Ft )B tY *B Gt +B Ht ,B It Jt -B .B Kt Lt /B uY :B P? ;B Mt =B ?B Q? vY @B [B ]B wY Nt xY ^B _B yY `B zY {B |B R? }B ~B AY aC bC BY S? cC Ot dC CY eC DY fC gC T? hC U? EY FY GY iC jC kC lC V? W? HY IY JY KY mC nC oC X? pC qC rC sC Y? Z? 0? 1? 2? 3? 4? 5? LY MY tC uC vC wC 6? 7? 8? 9? !? #? NY OY xC yC zC AC $? %? '? (? )? *? +? ,? PY QY BC CC DC EC -? .? /? :? ;? =? ?? @? RY SY FC GC [? ]? ^? _? `? {? TY UY HC IC JC |? }? ~? a@ KC VY LC b@ MC WY NC OC XY PC c@ QC YY RC d@ SC TC UC ZY VC e@ Pt 0Y WC XC f@ 1Y 2Y YC ZC 0C g@ h@ i@ j@ k@ 3Y 4Y 1C 2C l@ 3C m@ n@ o@ p@ 5Y 6Y 4C 5C 6C 7C q@ r@ 7Y 8Y 8C 9C !C s@ t@ #C 9Y !Y $C %C 'C (C u@ v@ #Y $Y )C *C +C ,C w@ x@ y@ z@ %Y 'Y -C .C A@ /C :C B@ (Y )Y ;C =C ?C C@ D@ @C *Y +Y [C ]C ^C _C E@ F@ ,Y -Y `C G@ H@ I@ {C |C J@ }C ~C aD .Y /Y bD cD dD eD K@ L@ :Y ;Y fD gD =Y ?Y M@ N@ hD iD O@ P@ @Y [Y Q@ jD R@ kD ]Y ^Y _Y S@ T@ U@ V@ lD mD W@ X@ Y@ Z@ `Y Qt 0@ 1@ nD oD pD 2@ 3@ 4@ {Y |Y qD rD sD tD 5@ 6@ }Y ~Y 7@ 8@ 9@ !@ uD vD #@ $@ %@ '@ Rt aZ wD xD (@ yD bZ cZ zD AD )@ BD CD *@ +@ ,@ -@ .@ dZ eZ DD /@ ED FD :@ ;@ =@ ?@ @@ [@ ]@ ^@ fZ gZ GD HD _@ `@ ID JD {@ |@ }@ ~@ hZ St a[ b[ c[ d[ KD e[ LD MD f[ g[ ND OD PD iZ QD jZ RD SD TD h[ i[ j[ k[ kZ lZ UD VD Tt WD mZ XD Ut YD ZD 0D nZ 1D Vt 2D l[ Wt 3D m[ 4D oZ pZ 5D 6D qZ 7D 8D 9D !D Xt rZ Yt #D Zt $D 0t sZ %D 'D 1t 2t (D )D 3t 4t *D +D n[ o[ ,D -D tZ uZ .D /D :D ;D vZ wZ =D ?D @D p[ q[ r[ s[ t[ [D ]D u[ v[ w[ x[ y[ z[ xZ yZ A[ B[ C[ D[ ^D E[ _D `D F[ G[ H[ I[ J[ K[ zZ AZ L[ M[ N[ O[ P[ Q[ R[ S[ T[ {D U[ V[ W[ X[ Y[ Z[ |D }D 0[ 1[ ~D aE 2[ 3[ BZ CZ 4[ 5[ 6[ 7[ 8[ 9[ ![ #[ $[ %[ '[ ([ )[ *[ +[ ,[ -[ .[ DZ EZ bE cE /[ dE eE :[ ;[ =[ FZ GZ fE gE ?[ @[ [[ ][ ^[ _[ hE iE `[ {[ jE HZ kE lE IZ mE JZ nE |[ }[ oE KZ pE 5t qE LZ rE ~[ sE 6t tE uE 7t vE wE xE yE zE a] . b] / MZ : NZ ; c] 9 d] ! OZ # PZ $ QZ e] ?c f] RZ g] h] i] j] k] l] AE BE SZ m] n] o] p] CE TZ q] r] s] DE EE t] FE GE UZ NW HE *b IE VZ JE KE LE ME WZ NE OE PE u] v] ib QE RE w] x] SE TE y] z] A] B] C] D] E] F] G] H] 8t UE VE WE XE YE I] J] K] L] ZE M] N] O] P] Q] 0E 1E 2E 3E +b 9t R] 4E Y !t 5E 6E S] T] XZ U] 7E YZ 8E 9E V] W] !E #E X] Y] $E Z] %E 'E (E 0] )E 1] *E #t ,b +E ,E 2] -E -b .b /b 3] 4] 5] 6] 7] 8] .E 9] /E -Bb.Bb:E ;E $t =E ?E ZZ %t @E +v 't (t )t *t [E ]E !] #] 0Z +t $] %] '] (] )] *] +] ,] -] .] /] :] ;] =] ?] @] [] ]] ^] _] ^E `] _E {] ]v `E |] }] ~] a^ b^ c^ {E d^ e^ :b ;b 1Z f^ |E g^ }E 2Z :5 '7 #5 ~E ,t aF =b ?b bF cF dF eF -t .t fF gF hF iF h^ 3Z /t i^ j^ ^v 4v @b [b jF kF k^ l^ m^ n^ o^ p^ q^ r^ s^ t^ u^ v^ lF mF w^ x^ y^ z^ A^ B^ C^ D^ E^ F^ G^ H^ I^ nF J^ oF K^ L^ M^ N^ pF O^ qF rF sF tF P^ Q^ uF R^ S^ T^ U^ V^ W^ vF X^ wF Y^ Z^ 0^ 1^ 2^ 3^ xF 4^ 5^ 6^ 7^ 8^ 9^ !^ #^ $^ %^ '^ (^ )^ yF *^ +^ ,^ -^ zF .^ AF BF 4Z /^ :^ ;^ =^ ?^ CF DF @^ [^ ]^ ^^ _^ `^ {^ |^ }^ ~^ a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ EF FF q_ r_ s_ GF t_ u_ v_ w_ x_ HF y_ z_ A_ ]b IF JF B_ C_ D_ E_ F_ G_ H_ I_ J_ K_ L_ M_ N_ O_ P_ Q_ R_ S_ T_ U_ V_ W_ X_ Y_ KF Z_ 0_ 1_ LF MF NF ^b _b OF 2_ 3_ PF 4_ 5_ 6_ 7_ QF 8_ 9_ RF !_ #_ _v 's `b {b SF TF UF :t VF WF $_ ;t `v {v %_ '_ (_ )_ XF YF *_ 5Z +_ ,_ -_ ZF 0F ._ /_ 1F =t 2F :_ 3F 4F ;_ =_ ?_ @_ [_ ]_ ^_ 5F 6Z 6F C Z D E F G H 0 7F 7Z 8F ?t 9F 8Z !F __ #F `_ $F 9Z {_ |_ }_ ~_ a` b` c` d` e` f` g` h` i` j` k` l` m` n` o` p` q` r` s` t` u` v` w` x` y` z` A` B` C` D` E` F` G` H` I` J` K` L` M` N` O` P` %F Q` !Z |b R` 'F S` T` }b #Z U` (F V` W` X` Y` Z` 0` 1` $Z )F 2` 3` *F %Z +F 'Z 4` 5` (v l m n o ,F (Z @t -F )Z .F *Z jb kb lb I J mb nb /F +Z 6` :F ;F =F 7` ,Z ?F @F 8` 9` !` #` $` %` -Z '` (` )` *` +` ,` -` .` /` :` ;` =` ?` @` [` ]` ^` _` `` {` |` }` ~` a{ b{ c{ d{ e{ f{ g{ h{ i{ j{ k{ l{ m{ n{ o{ p{ q{ r{ s{ t{ u{ v{ w{ x{ y{ z{ A{ B{ C{ D{ E{ F{ G{ H{ I{ J{ K{ L{ M{ N{ O{ P{ Q{ R{ S{ T{ U{ V{ W{ X{ Y{ Z{ .Z [F ]F ^F 0{ 1{ 2{ 3{ 4{ 5{ 6{ 7{ 8{ 9{ !{ #{ ${ %{ '{ ({ ){ *{ +{ ,{ -{ .{ /{ :{ ;{ ={ ?{ @{ [{ ]{ ^{ _{ _F `F ~b ac 1 bc cc 2 dc ec fc {F [t |F }F ]t ~F ^t _t `{ {{ |{ aG }{ bG ~{ a| b| c| d| e| f| g| h| i| j| k| l| m| n| o| p| q| r| s| t| u| cG dG v| w| x| y| z| A| B| C| D| E| eG F| G| H| I| J| K| L| M| N| O| P| Q| R| S| T| U| V| W| X| Y| Z| fG 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| !| #| $| gG %| '| (| )| *| +| ,| -| .| /| :| ;| =| ?| @| [| ]| ^| _| hG `| {| || }| ~| a} b} c} d} e} f} g} h} i} j} k} l} m} n} o} p} q} r} s} t} u} v} iG jG w} x} y} z} A} B} C} D} E} F} G} H} I} J} K} L} M} N} O} P} Q} R} S} T} kG lG U} V} W} X} Y} Z} 0} 1} 2} 3} 4} 5} 6} 7} 8} 9} !} #} $} %} '} (} mG nG )} *} +} ,} -} .} /} :} ;} =} ?} @} [} ]} ^} _} `} {} |} }} ~} a~ oG pG b~ c~ d~ e~ f~ g~ h~ i~ j~ k~ l~ m~ n~ o~ p~ q~ r~ s~ t~ u~ v~ w~ qG rG x~ y~ z~ A~ B~ C~ D~ E~ F~ G~ H~ I~ J~ K~ L~ M~ N~ O~ P~ Q~ R~ S~ sG tG T~ U~ V~ W~ X~ Y~ Z~ 0~ 1~ 2~ 3~ 4~ 5~ 6~ 7~ 8~ 9~ !~ #~ $~ %~ '~ uG vG (~ )~ *~ +~ ,~ -~ .~ /~ :~ ;~ =~ ?~ @~ [~ ]~ ^~ _~ `~ {~ |~ }~ ~~ wG xG aabbabcabdabeabfabgabhabiabjabkablabmabnaboabpabqabrabsabtabuabvabyG zG wabxabyabzabAabBabCabDabEabFabGabHabIabJabKabLabMabNabOabPabQabRabAG BG SabTabUabVabWabXabYabZab0ab1ab2ab3ab4ab5ab6ab7ab8ab9ab!ab#ab$ab%abCG DG 'ab(ab)ab*ab+ab,ab-ab.ab/ab:ab;ab=ab?ab@ab[ab]ab^ab_ab`ab{ab|ab}abEG FG ~ababbbbbcbbdbbebbfbbgbbhbbibbjbbkbblbbmbbnbbobbpbbqbbrbbsbbtbbubbGG HG vbbwbbxbbybbzbbAbbBbbCbbDbbEbbFbbGbbHbbIbbJbbKbbLbbMbbNbbObbPbbQbbIG JG RbbSbbTbbUbbVbbWbbXbbYbbZbb0bb1bb2bb3bb4bb5bb6bb7bb8bb9bb!bb#bb$bbKG LG %bb'bb(bb)bb*bb+bb,bb-bbMG NG .bb/bb:bb;bb=bb?bb@bb[bb]bb^bb_bb`bb{bb|bb}bb~bbOG PG acbbcbccbdcbecbfcbgcbhcbicbjcbkcblcbmcbncbocbpcbqcbrcbscbtcbucbvcbQG RG wcbxcbycbzcbAcbBcbCcbDcbEcbFcbGcbHcbIcbJcbKcbLcbMcbNcbOcbPcbQcbRcbSG TG ScbTcbUcbVcbWcbXcbYcbZcb0cb1cb2cb3cb4cb5cb6cb7cb8cb9cb!cb#cb$cb%cbUG VG 'cb(cb)cb*cb+cb,cb-cb.cb/cb:cbWG ;cbXG /Z =cb?cbYG @cb[cb]cb^cb_cbZG 0G `t 1G :Z gc hc ic jc kc lc mc `cb{cb|cb}cb~cbadbbdbcdbddbedbfdbgdb2G 3G ;Z hdbidbjdbkdbldbmdbndbodbpdbqdbrdbsdbtdbudbvdbwdbxdbydbzdbAdbBdbCdb4G 5G DdbEdb6G Fdb7G 8G GdbHdbIdbJdb9G !G {t #G nc $G Kdb%G LdbMdboc pc qc rc ob | sc pb tc qb 'G uc vc (G |t rb K )G }t ~t Ndb*G au Odb+G =Z ,G -G ?Z .G /G @Z :G ;G [Z =G ?G ]Z @G [G ^Z ]G ^G _Z _G `G `Z Pdb{G |G {Z Qdb}G |Z Rdb~G }Z SdbTdbUdbaH ~Z bH VdbWdbcH a0 XdbdH YdbeH b0 ZdbfH gH c0 0dbhH iH d0 1dbjH kH e0 2dblH mH f0 3dbnH oH g0 4dbpH qH h0 5dbrH sH 6db7db8db9db!db#dbtH uH i0 $db%dbvH wH j0 'db(dbk0 )db*dbxH yH bu zH l0 AH +dbBH ,db-db.db/db:db;dbm0 =dbCH DH ?db@db[db]db^db_db`dbEH n0 FH {dbGH o0 HH p0 |dbIH JH q0 }dbKH LH r0 ~dbMH NH OH PH QH aebRH SH bebcebdebeebTH febUH gebVH hebiebjebkeblebWH XH mebneboebYH pebqebrebZH sebteb0H uebvebwebxebyebzebAebBebCebDebEebFebGebHebIebJebKebLeb1H Meb2H NebOebPebQebs0 Reb3H SebTeb4H UebVebWeb5H 6H 7H 8H Xeb9H Yeb!H Zeb0eb1eb#H 2eb$H 3eb4eb5eb6eb7eb%H 8eb9eb'H cu wc (H t0 !eb5v #eb)H u0 $eb*H v0 +H %eb'eb(ebw0 ,H -H x0 .H /H y0 )eb:H z0 ;H =H *eb+eb?H @H [H ]H ^H ,eb-eb_H `H {H |H A0 }H ~H aI bI OW cI dI |v (s }v )s ~v .s .eb/eb:eb;eb=eb?eb@eb[eb]eb^eb_ebB0 `eb{eb|eb}eb~ebafbbfbcfbdfbefbeI ffbfI gI gfbhfbifbC0 jfbkfblfbmfbnfbofbpfbhI qfbrfbsfbD0 tfbiI jI ufbvfbE0 kI lI wfbF0 mI nI xfbyfboI pI qI rI zfbG0 H0 I0 J0 sI tI AfbBfbCfbDfbuI vI K0 wI EfbFfbGfbHfbIfbJfbxI L0 du yI KfbLfbMfbzI AI M0 N0 BI CI NfbOfbPfbQfbRfbSfbTfbUfbO0 P0 DI EI VfbWfbXfbYfbZfb0fb1fb2fbQ0 R0 S0 FI GI HI 3fb4fb5fb6fb7fb8fbII JI KI T0 LI 9fb!fb#fbMI U0 NI OI $fb%fb'fb(fbV0 PI QI )fb*fbW0 RI +fb,fb-fbSI X0 TI UI .fbY0 VI WI XI Z0 YI ZI 00 /fb:fbf qd xc 0I 6v 1I 7v 2I 8v 3I 4I ;fb=fb?fb@fb5I 6I 10 20 7I 8I [fb]fb^fb_fb`fb{fb30 40 9I |fb!I }fb#I $I ~fbagb50 60 %I bgbcgbdgb_c egbfgbggbhgb`c igb'I (I )I *I jgbkgb+I ,I lgbmgb-I ngb.I eu /I fu :I ;I =I gu hu iu ?I ju @I ku 70 [I lu ]I ^I _I `I {I |I }I mu 80 ~I aJ bJ nu cJ 90 dJ eJ ou fJ ogbpgbgJ qgbhJ rgbiJ sgbtgbjJ ugbvgbkJ wgb!0 #0 $0 lJ xgbygbzgbAgbmJ nJ BgbCgbDgbEgboJ pJ FgbGgbHgbIgbqJ rJ JgbKgbLgbMgbsJ tJ NgbOgbPgbQgbuJ vJ RgbSgbTgbUgbwJ %0 '0 (0 )0 *0 +0 VgbxJ yJ WgbzJ AJ ,0 -0 XgbYgbZgb0gbBJ CJ DJ 1gb.0 pu yc 2gb3gbEJ FJ 4gbGJ 5gb6gb7gb8gbHJ IJ 9gb!gb#gb$gbJJ KJ %gb'gb(gbLJ MJ NJ zc OJ )gbPJ QJ *gbRJ /0 :0 SJ TJ +gb,gb-gb.gb/gb:gbUJ VJ ;gb=gb?gb@gb[gb]gb;0 =0 ?0 WJ XJ YJ qu ZJ @0 0J ru ,v 1J 2J 3J su tu [0 ]0 4J 5J 6J 7J ^0 8J uu 9J vu !J #J $J %J _0 `0 'J {0 (J ^gb|0 )J *J +J }0 ,J _gbwu -J .J /J ~0 :J ;J a1 =J ?J b1 @J [J `gbc1 d1 ]J ^J _J `J {gbe1 {J |J }J ~J |gb}gb~gbahbf1 g1 aK bK bhbchbdhbehbcK dK h1 i1 eK fK fhbghbhhbihbjhbkhbgK hK j1 k1 iK jK lhbkK lK mhbl1 m1 mK nK nhbohboK pK phbqhbn1 o1 qK rK rhbsK tK shbp1 q1 uK r1 vK thbwK xu xK yu uhbyK s1 zK zu vhb$5 whbAu AK Bu Cu BK t1 CK Du DK u1 EK Eu FK v1 Fu GK HK Gu Hu IK w1 JK KK xhbx1 LK MK yhby1 NK OK zhbz1 A1 B1 PK QK Iu RK C1 AhbSK TK UK BhbJu ChbVK Ku WK XK D1 YK E1 ZK F1 0K 1K Dhb2K EhbG1 H1 I1 3K 4K 5K 6K FhbGhbJ1 K1 L1 M1 7K 8K 9K !K #K $K %K 'K HhbIhbJhbKhbLhbMhbNhbOhbN1 O1 (K )K *K +K PhbQhbRhbShbThbUhbP1 Q1 ,K -K .K /K VhbWhbXhbYhbZhb0hb1hb2hbR1 S1 :K ;K =K ?K 3hb4hb5hb6hb7hb8hb9hb!hbT1 U1 @K [K ]K ^K #hb$hb%hb'hbV1 Lu _K `K (hb)hb{K *hb+hb,hbW1 |K -hb}K X1 ~K aL Y1 bL .hbcL Z1 dL /hbeL fL gL 01 hL iL 11 21 jL kL :hb31 41 lL mL ;hb=hb?hb@hb[hb]hb51 61 nL oL ^hb_hb`hb{hb|hb}hb71 81 pL qL ~hbaibbibcib91 !1 rL sL dibeibfibgib#1 $1 tL uL hibiibjibkib%1 '1 vL wL xL yL libmibniboib(1 )1 zL AL pibqibribsib*1 +1 BL CL DL tibuibvibMu ,1 wibxibEL FL yibzib-1 .1 AibGL BibCibHL IL DibEibJL KL /1 :1 FibGibLL ML NL OL ;1 =1 PL QL ?1 @1 HibIibRL SL JibKib[1 ]1 LibTL MibUL ^1 _1 `1 NibOibVL WL XL YL PibQibRibSib{1 |1 TibUibZL 0L 1L 2L VibWib}1 ~1 3L 4L XibYibZib0iba2 b2 1ib2ib3ib4ib5L 6L 5ib6ib7ib8ibc2 d2 7L 8L 9ib!ibe2 f2 9L !L #ib#L $ib%ib'ib(ib)ib*ibg2 h2 +ib,ib$L %L -ib.ib/ib'L :ib;ib(L =ibi2 j2 )L *L +L ,L ?ib@ib[ib]ib^ib_ibk2 l2 `ib{ib|ib}ib~ibajb-L .L bjbcjb/L :L ;L Nu =L Ou ?L @L [L ]L ^L djbejbm2 n2 _L `L Pu {L Qu |L Ru }L ~L aM o2 bM p2 cM dM q2 eM fjbfM r2 s2 gM hM t2 iM jM kM lM u2 v2 Su mM Tu nM w2 x2 oM pM y2 Uu qM rM z2 A2 sM tM gjbhjbuM vM B2 C2 ijbjjbwM xM D2 E2 kjbljbmjbnjbojbpjbqjbrjbyM zM sjbtjbujbvjbwjbxjbF2 G2 yjbzjbAjbBjbCjbDjbAM BM CM EjbFjbDM GjbHjbH2 I2 IjbJjbKjbLjbMjbNjbOjbPjbQjbRjbSjbTjbUjbVjbWjbXjbEM FM YjbZjb0jb1jb2jb3jbJ2 K2 4jb5jb6jb7jb8jb9jb!jb#jb$jb%jb'jb(jb)jb*jbGM HM +jb,jbL2 M2 IM JM -jb.jbKM LM /jb:jbN2 O2 MM NM ;jb=jb?jb@jb[jb]jbOM PM ^jb_jbQM P2 RM SM Q2 TM R2 `jb{jbUM VM Vu WM Wu XM S2 YM |jbZM Xu 0M 1M Yu 2M 3M 4M 5M 6M }jb= ~jb? T2 @ U2 [ akb% bkb' V2 ( W2 ) X2 ckb@c dkbY2 ekbfkbgkbhkbikbjkb7M 8M Z2 kkb9M lkbmkb!M 02 nkbokb#M $M pkb%M 'M (M 12 PW )M Ac *M 22 +M ,M -M .M 32 /M qkb:M ;M rkbsb =M ?M skbtkb@M [M ukb]M ^M vkbwkbxkbykbzkbAkbBkbZu _M `M {M |M }M CkbDkbEkbFkbGkbHkbIkbJkbKkbLkb~M aN bN cN Bc 42 dN eN 3 0u fN gN hN Mkb52 NkbiN 62 jN kN OkbPkblN mN QkbRkbnN SkboN pN qN rN sN tN Tkb1u Cc uN UkbVkbvN Dc Ec Fc WkbXkbYkbZkb0kb1kbwN 2kbxN 2u yN zN 3u 4u AN -v 5u 6u 7u 8u BN CN 3kbDN 72 9u 4kb5kb6kb7kb8kb9kb!kb#kb$kb%kb'kb(kb)kb*kb+kb,kb-kb.kb/kb:kbEN FN GN ;kbaw HN IN =kb?kb@kb[kb]kbJN ^kb_kbGc Hc 82 `kbKN LN MN 92 ;5 (7 %5 NN !u ON Ic Jc PN QN RN SN #u $u TN UN VN WN XN !2 %u YN {kbbw 9v Kc Lc ZN 0N |kb}kb~kbalbblb1N clbdlbelbflbglbhlb2N 3N ilbjlbklbllbmlb4N nlbolbplbqlbrlbslb5N 6N tlb7N ulbvlbwlbxlb8N 9N !N #N $N %N 'N ylb(N )N zlbAlbBlbClbDlb*N Elb+N FlbGlbHlb,N IlbJlb-N KlbLlbMlbNlbOlbPlbQlbRlbSlbTlbUlbVlbWlb.N XlbYlbZlb0lb/N :N ;N =N #2 1lb2lb3lb4lb?N @N [N 5lb6lb7lb8lb9lb!lb#lb$lb%lb'lb(lb)lb*lb+lb,lb-lb.lb/lb:lb;lb=lb?lb@lb[lb]lb^lb]N ^N _N _lb`lb`N {N {lb|lb}lb~lb|N ambbmbcmbMc }N ~N dmbembaO fmbgmbhmbimbjmbkmblmbmmbnmbombpmbqmbrmbsmbtmbumbvmbwmbxmbymbzmbbO AmbBmbCmbcO dO eO Nc Oc fO DmbEmbgO FmbGmbHmbhO iO ImbJmbjO KmbkO cw *s Pc Qc lO mO nO 'u oO pO qO $2 dw ew Lmbfw MmbrO sO tO Nmb%2 OmbPmbQmbuO vO RmbwO xO (u yO zO AO BO SmbCO DO TmbUmbVmbWmbEO )u FO L 4 M N O P Q 5 GO *u HO +u IO ,u JO XmbKO LO MO '2 YmbZmb0mb1mb2mb3mb4mb5mb6mb7mb8mb9mb!mb#mb$mb%mb'mb(mb)mb*mb+mb,mb-mb.mb/mb:mb;mb=mb?mb@mb[mb]mb^mb_mb`mb{mb|mb}mb~mbanbbnbcnbdnbenbfnbgnbNO OO (2 Rc hnbPO inbQO Sc )2 jnbRO knblnbmnbnnbonbpnbqnb*2 SO TO UO VO +2 WO ,2 XO rnb)v p q r s YO -2 -u ZO .u 0O .2 tb ub vb R S wb xb 1O /u 2O 3O 4O 5O 6O :u 7O 8O 9O snbtnbunbvnbwnb/2 xnbynbznbAnbBnbCnbDnbEnbFnbGnbHnbInbJnbKnbLnbMnbNnbOnbPnbQnbRnbSnbTnbUnbVnbWnbXnbYnbZnb0nb1nb2nb3nb4nb5nb6nb7nb8nb9nb!nb#nb$nb%nb'nb(nb)nb*nb+nb,nb-nb.nb/nb:nb;nb=nb?nb@nb[nb]nb^nb_nb`nb{nb|nb}nb~nbaobbobcobdobeobfobgobhobiob:2 !O #O $O jobkoblobmobnoboobpobqobrobsobtobuobvobwobxobyobzobAobBobCobDobEobFobGobHobIobJobKobLobMob%O Nob'O (O Tc Uc 6 Vc Wc 7 Xc Yc Zc )O ;u *O +O =u ,O ?u @u Oob-O Pob.O Qob/O RobSobTobUobVobWobXobYobZob0ob1ob2ob3ob4ob5ob6ob7ob8ob9ob!ob:O #ob;O =O $ob%ob'ob(ob)ob*ob+ob,ob-ob.ob?O /ob:ob;ob=ob?ob@ob[ob]ob^ob_ob`ob{ob|ob}ob~obapbbpbcpbdpbepb@O [O fpbgpbhpbipbjpbkpblpbmpbnpbopbppbqpbrpb]O spbtpbupbvpbwpbxpbypbzpbApbBpbCpbDpbEpbFpbGpbHpbIpb^O Jpb_O KpbLpbMpbNpbOpbPpbQpbRpbSpbTpbUpbVpbWpbXpbYpbZpb0pb1pb2pb3pb4pb5pb6pb7pb8pb`O 9pb{O |O !pb#pb$pb%pb'pb(pb)pb*pb+pb,pb-pb.pb/pb:pb;pb=pb?pb@pb[pb]pb^pb_pb`pb}O ~O aP {pb|pb}pb~pbaqbbqbcqbdqbeqbfqbgqbhqbiqbjqbkqblqbmqbnqboqbpqbqqbbP cP dP rqbsqbtqbuqbvqbwqbxqbeP yqbzqbAqbBqbCqbDqbEqbFqbGqbHqbIqbJqbKqbLqbfP gP MqbNqbOqbPqbQqbRqbhP SqbTqbUqbVqbWqbXqbYqbZqb0qb1qb2qb3qb4qb5qb6qbiP jP 7qb8qb9qb!qb#qb$qbkP lP %qb'qb(qb)qb*qb+qb,qb-qb.qb/qb:qb;qb=qb?qbmP @qb[qb]qb^qb_qb`qb{qbnP |qb}qb~qbarbbrbcrbdrberbfrbgrbhrbirbjrbkrblrboP pP mrbnrborbprbqrbrrbsrbtrburbvrbwrbxrbyrbzrbArbBrbCrbDrbErbFrbGrbqP rP sP HrbIrbJrbKrbLrbMrbNrbOrbPrbQrbRrbSrbTrbUrbVrbWrbXrbYrbZrb0rb1rbtP uP vP 2rb3rb4rb5rb6rb7rb8rb9rb!rb#rb$rb%rb'rb(rb)rb*rb+rb,rb-rb.rb/rbwP xP yP :rb;rb=rb?rb@rb[rb]rb^rb_rb`rb{rb|rb}rb~rbasbbsbcsbdsbesbfsbgsbzP AP BP hsbisbjsbksblsbmsbnsbosbpsbqsbrsbssbtsbusbvsbwsbxsbysbzsbAsbBsbCP DP EP CsbDsbEsbFsbGsbHsbIsbJsbKsbLsbMsbNsbOsbPsbQsbRsbSsbTsbUsbVsbWsbFP GP HP XsbYsbZsb0sb1sb2sb3sb4sb5sb6sb7sb8sb9sb!sb#sb$sb%sb'sb(sb)sbIP *sbJP KP +sb,sb-sb.sb/sb:sb;sb=sb?sb@sb[sb]sb^sb_sb`sb{sb|sb}sb~sbatbLP btbMP NP ctbdtbetbftbgtbhtbitbOP PP QP jtbktbltbmtbntbotbptbqtbrtbstbttbutbvtbwtbxtbRP SP TP ytbztbAtbBtbCtbDtbEtbFtbGtbHtbItbJtbKtbLtbMtbNtbOtbPtbQtbRtbStbUP VP WP TtbUtbVtbWtbXtbYtbZtb0tb1tb2tb3tb4tb5tb6tb7tb8tb9tb!tb#tb$tb%tbXP YP ZP 'tb(tb)tb*tb+tb,tb-tb.tb/tb:tb;tb=tb?tb@tb[tb]tb^tb_tb`tb{tb|tb0P 1P 2P }tb~tbaubbubcubdubeubfub3P gub4P hub5P ;2 6P iub7P jubkublubmubnub8P 9P [u !P ]u 0c 1c 2c 3c 4c 5c 6c oubpubqubrubsubtubuubvubwubxubyubzub#P $P =2 AubBubCubDubEubFubGubHubIubJubKubLub%P MubNubOubPubQubRubSubTubUub'P (P )P *P +P Vub,P -P .P WubXubYub/P :P ^u ;P 7c =P ?P @P Zub0ub8c 9c !c #c yb } $c zb %c Ab [P 'c (c ]P _u Bb T ^P `u ?2 _P `P {u 1ub{P @2 |P }P [2 ~P aQ |u bQ cQ ]2 dQ eQ }u fQ gQ ~u hQ iQ av jQ kQ ^2 lQ mQ nQ bv oQ pQ cv qQ rQ _2 sQ tQ 2ubuQ `2 vQ wQ 3ubxQ {2 yQ zQ 4ubAQ |2 BQ CQ DQ }2 EQ FQ GQ ~2 HQ IQ JQ a3 KQ LQ MQ b3 NQ OQ PQ dv 5ubQQ RQ c3 SQ TQ UQ 6ub7ub8ub9ub!ub#ubVQ WQ d3 $ubXQ YQ ZQ e3 0Q %ubf3 'ub1Q 2Q 3Q ev 4Q g3 5Q 6Q 7Q (ub)ub*ub+ub,ub-ubh3 8Q 9Q !Q .ub/ub:ub;ub=ub?ub@ub#Q fv $Q [ub%Q gv 'Q i3 (Q )Q *Q j3 +Q ,Q -Q k3 .Q /Q :Q ;Q =Q ?Q @Q [Q ]Q ^Q ]ub^ub_ub_Q `ub`Q {ub{Q |ub}ub~ubavb|Q }Q ~Q bvbaR cvbbR dvbcR evbdR fvbgvbeR fR hvbivbjvbkvblvbmvbnvbovbpvbqvbrvbsvbtvbuvbvvbwvbxvbgR hR iR yvbzvbAvbBvbl3 CvbjR DvbEvbkR FvbGvbHvblR mR nR IvbJvboR KvbpR LvbMvbNvbqR OvbrR PvbQvbRvbSvbTvbsR UvbVvbtR hv )c uR m3 Wvb!v XvbvR n3 YvbwR o3 Zvb0vb1vb2vbp3 3vbxR q3 yR 4vbr3 5vbzR s3 6vbAR 7vb8vbBR CR DR ER FR 9vb!vbGR #vbHR $vbt3 IR JR KR LR QW %vbMR gw kw hw lw iw RW 'vb(vb)vb*vb+vb,vb-vb.vb/vb:vb;vbu3 =vb?vb@vb[vb]vb^vb_vb`vb{vb|vbNR }vb~vbOR awbbwbcwbv3 dwbewbfwbgwbhwbiwbjwbkwblwbmwbnwbw3 owbPR pwbqwbrwbx3 QR swbtwby3 RR uwbvwbwwbxwbSR TR ywbzwbz3 A3 B3 C3 UR VR AwbBwbCwbDwbEwbFwbD3 WR GwbHwbIwbJwbKwbLwbMwbE3 F3 NwbOwbPwbQwbXR YR G3 H3 ZR 0R RwbSwbTwbUwbVwbWwbXwbYwbI3 J3 1R 2R Zwb0wb1wb2wb3wb4wb5wb6wbK3 L3 M3 3R 4R 5R 7wb8wb9wb!wb#wb$wb%wb'wb(wbN3 6R )wb*wb+wb,wbO3 7R -wb.wb/wb:wb;wbP3 8R =wb?wb@wbQ3 9R [wb]wb^wb_wbR3 !R `wb{wbS3 #R |wb$R T3 }wb%R U3 ~wbaxbg rd *c bxb#v cxb$v dxb%v 'R (R exbfxbgxbhxbixbjxbV3 W3 )R *R kxblxbmxbnxboxbpxbX3 Y3 +R qxbrxbsxb,R txbuxbvxbZ3 03 -R wxbxxbyxb{c zxbAxbBxbCxb|c DxbExb.R Fxb/R GxbHxb:R ;R IxbJxb=R Kxb?R 13 @R 23 [R ]R ^R 33 43 53 _R 63 `R 73 83 {R 93 |R }R ~R aS bS cS dS !3 #3 LxbeS fS $3 Mxb%3 gS hS iv iS NxbOxbPxbQxbjS RxbSxbTxbUxbkS VxbWxbXxbYxb'3 (3 )3 lS Zxb0xb1xb2xb3xbmS 4xb5xb6xb7xb8xbnS 9xb!xb#xb$xb%xboS 'xbpS (xb)xb*xbqS +xb,xb-xb.xb/xbrS :xb;xb=xb?xb@xb*3 +3 ,3 -3 .3 /3 [xbsS ]xb^xbtS _xb:3 jv `xb{xb|xb}xbuS vS ~xbayb;3 =3 +c bybcybwS xS dybeybfybgybhybiybyS zS jybkyblybmybAS BS nyboybpybqybCS DS ,c ES rybsybFS tybuyb?3 @3 vybwybxybyybzybAybBybCybGS HS DybEybFybGybHybIyb[3 ]3 ^3 IS JybJS _3 KS `3 LS {3 +5 MS NS OS |3 }3 ~3 a4 PS QS RS Kybb4 SS c4 TS d4 US LybVS Mybe4 f4 Nybg4 WS Oybh4 XS PybQybi4 YS Rybj4 ZS Syb0S k4 1S Tybl4 Uyb2S m4 Vyb3S Wybn4 o4 4S XybYyb5S Zybp4 6S 7S 0yb1yb2yb3yb4yb5ybq4 r4 8S 9S 6yb7yb8yb9yb!yb#ybs4 t4 !S #S $yb%yb'yb(yb)yb*yb+yb,ybu4 v4 $S -yb.yb%S /yb:ybw4 x4 'S ;yb=yb?yb(S @yb[yb]yby4 z4 )S ^yb_yb*S `yb{ybA4 B4 |ybC4 +S }yb,S D4 -S E4 ~yb.S F4 /S G4 azb'5 bzbH4 :S 85 kv ;S I4 =S J4 ?S K4 @S L4 [S M4 N4 ]S ^S O4 P4 _S Q4 `S czbdzbR4 {S ezbfzbS4 |S }S gzbT4 U4 V4 ~S aT W4 bT X4 hzbcT izbdT jzbY4 kzbeT Z4 lzbfT 04 gT 14 hT 24 mzbiT nzbozbpzb34 44 54 jT qzbkT rzbszbtzb64 74 84 94 lT uzbmT vzbnT wzboT xzbyzbzzbAzbBzbCzbDzbEzbFzb!4 #4 GzbpT HzbqT IzbJzbKzbLzbMzbNzb$4 %4 rT OzbsT PzbQzbRzbSzbTzbUzbVzbWzbXzb'4 (4 tT YzbuT Zzb0zb1zb2zb3zb4zb5zb6zb7zb)4 *4 vT wT 8zb9zb!zb#zb$zb%zb+4 ,4 xT yT 'zb(zbzT )zb*zb+zb-4 AT ,zbBT .4 CT DT /4 ET -zbFT :4 .zbGT HT IT JT ;4 KT LT =4 ?4 MT NT /zb@4 lv OT PT :zb;zb=zb?zbQT @zb[4 ]4 RT ST [zb]zb^zb_zb`zb{zb^4 _4 TT UT VT WT |zb}zb`4 {4 XT YT ZT 0T 1T 2T |4 }4 3T 4T 5T 6T 7T 8T ~4 a5 9T !T #T $T ~zb%T aAbbAbb5 c5 'T (T cAbdAbeAbfAbd5 e5 )T *T gAbhAbiAbjAbf5 mv kAblAb+T ,T -T .T g5 h5 mAb/T :T ;T =T ?T @T nAb[T ]T i5 j5 ^T _T `T {T |T }T nv ov ~T aU pv k5 oAbbU cU dU pAbeU qv l5 qAbfU gU hU m5 n5 o5 iU jU kU lU mU nU rAbsAbtAbuAbp5 q5 vAbwAboU pU xAbyAbqU rU rv sv sU tU uU vU zAbAAbr5 s5 wU xU yU zU AU BU BAbCAbCU DU t5 u5 EU FU GU HU v5 w5 IU JU DAbEAbKU LU MU NU FAbGAbx5 y5 HAbOU PU QU IAbJAbRU KAbSU TU LAbMAbz5 A5 UU VU NAbOAbWU XU YU ZU PAbQAbB5 C5 0U RAbSAbTAbUAbVAb1U 2U WAb3U 4U 5U 6U tv 7U uv 8U 9U !U #U $U %U 'U D5 E5 (U )U vv *U wv +U xv ,U -U .U yv /U zv :U ;U Av =U ?U @U F5 Bv [U ]U Cv ^U _U `U {U G5 Dv Ev |U Fv }U Gv Hv ~U aV Iv Jv bV cV Kv Lv dV eV fV gV hV iV H5 I5 jV kV lV mV J5 Mv nV XAbYAbZAb0Ab1Ab2Ab3AboV pV qV 4Ab5AbrV sV 6AbK5 L5 7Ab8Ab9Ab!Ab#Ab$AbtV uV %Ab'Ab(AbvV wV )AbM5 Nv *Ab+Ab,Ab-Ab.Ab/AbxV :Ab;Ab=Ab?Ab@Ab[Ab]Ab^Ab_AbyV zV AV BV CV DV `Ab{AbN5 O5 |Ab}Ab~AbaBbbBbcBbdBbeBbfBbgBbhBbiBbjBbkBblBbmBbnBboBbP5 Q5 EV FV pBbqBbGV HV rBbIV R5 S5 JV KV LV sBbtBbuBbvBbwBbxBbMV NV OV PV Ov QV RV Pv SV T5 yBbTV UV VV Qv WV Rv XV U5 YV ZV 0V Sv 1V 2V Tv 3V 4V 5V 6V 7V zBb] ABb^ V5 _ W5 ` BBb* CBb+ X5 , Y5 - Z5 DBb[c EBb05 FBbGBbHBbIBbJBb8V 9V !V Uv KBbLBbMBb#V $V 15 NBbOBb%V 'V (V )V *V +V Vv ,s ,V -c -V 25 .V /V :V ;V 35 =V ?V @V [V PBbCb ]V ^V QBbRBb_V `V {V |V }V SBbTBb~V UBbVBbWBbXBbWv aW bW cW dW eW fW gW YBbZBbhW 0Bb1BbiW 2Bb3BbjW kW lW mW .c 45 nW oW 8 Xv pW qW 4BbrW 55 sW tW 65 uW vW 5Bb6BbwW xW yW 7BbzW AW BW CW DW EW FW GW HW Yv /c IW JW 8BbKW :c ;c =c 9BbLW !Bb#Bb$Bb%BbMW 'Bb
1162 def add_api_route( 1abcd
1163 self,
1164 path: str,
1165 endpoint: Callable[..., Any],
1166 *,
1167 response_model: Any = Default(None),
1168 status_code: int | None = None,
1169 tags: list[str | Enum] | None = None,
1170 dependencies: Sequence[Depends] | None = None,
1171 summary: str | None = None,
1172 description: str | None = None,
1173 response_description: str = "Successful Response",
1174 responses: dict[int | str, dict[str, Any]] | None = None,
1175 deprecated: bool | None = None,
1176 methods: list[str] | None = None,
1177 operation_id: str | None = None,
1178 response_model_include: IncEx | None = None,
1179 response_model_exclude: IncEx | None = None,
1180 response_model_by_alias: bool = True,
1181 response_model_exclude_unset: bool = False,
1182 response_model_exclude_defaults: bool = False,
1183 response_model_exclude_none: bool = False,
1184 include_in_schema: bool = True,
1185 response_class: type[Response] | DefaultPlaceholder = Default(JSONResponse),
1186 name: str | None = None,
1187 openapi_extra: dict[str, Any] | None = None,
1188 generate_unique_id_function: Callable[[routing.APIRoute], str] = Default(
1189 generate_unique_id
1190 ),
1191 ) -> None:
1192 self.router.add_api_route( 1abcd
1193 path,
1194 endpoint=endpoint,
1195 response_model=response_model,
1196 status_code=status_code,
1197 tags=tags,
1198 dependencies=dependencies,
1199 summary=summary,
1200 description=description,
1201 response_description=response_description,
1202 responses=responses,
1203 deprecated=deprecated,
1204 methods=methods,
1205 operation_id=operation_id,
1206 response_model_include=response_model_include,
1207 response_model_exclude=response_model_exclude,
1208 response_model_by_alias=response_model_by_alias,
1209 response_model_exclude_unset=response_model_exclude_unset,
1210 response_model_exclude_defaults=response_model_exclude_defaults,
1211 response_model_exclude_none=response_model_exclude_none,
1212 include_in_schema=include_in_schema,
1213 response_class=response_class,
1214 name=name,
1215 openapi_extra=openapi_extra,
1216 generate_unique_id_function=generate_unique_id_function,
1217 )
1219 def api_route( 1abcd
1220 self,
1221 path: str,
1222 *,
1223 response_model: Any = Default(None),
1224 status_code: int | None = None,
1225 tags: list[str | Enum] | None = None,
1226 dependencies: Sequence[Depends] | None = None,
1227 summary: str | None = None,
1228 description: str | None = None,
1229 response_description: str = "Successful Response",
1230 responses: dict[int | str, dict[str, Any]] | None = None,
1231 deprecated: bool | None = None,
1232 methods: list[str] | None = None,
1233 operation_id: str | None = None,
1234 response_model_include: IncEx | None = None,
1235 response_model_exclude: IncEx | None = None,
1236 response_model_by_alias: bool = True,
1237 response_model_exclude_unset: bool = False,
1238 response_model_exclude_defaults: bool = False,
1239 response_model_exclude_none: bool = False,
1240 include_in_schema: bool = True,
1241 response_class: type[Response] = Default(JSONResponse),
1242 name: str | None = None,
1243 openapi_extra: dict[str, Any] | None = None,
1244 generate_unique_id_function: Callable[[routing.APIRoute], str] = Default(
1245 generate_unique_id
1246 ),
1247 ) -> Callable[[DecoratedCallable], DecoratedCallable]:
1248 def decorator(func: DecoratedCallable) -> DecoratedCallable: 1abcd
1249 self.router.add_api_route( 1abcd
1250 path,
1251 func,
1252 response_model=response_model,
1253 status_code=status_code,
1254 tags=tags,
1255 dependencies=dependencies,
1256 summary=summary,
1257 description=description,
1258 response_description=response_description,
1259 responses=responses,
1260 deprecated=deprecated,
1261 methods=methods,
1262 operation_id=operation_id,
1263 response_model_include=response_model_include,
1264 response_model_exclude=response_model_exclude,
1265 response_model_by_alias=response_model_by_alias,
1266 response_model_exclude_unset=response_model_exclude_unset,
1267 response_model_exclude_defaults=response_model_exclude_defaults,
1268 response_model_exclude_none=response_model_exclude_none,
1269 include_in_schema=include_in_schema,
1270 response_class=response_class,
1271 name=name,
1272 openapi_extra=openapi_extra,
1273 generate_unique_id_function=generate_unique_id_function,
1274 )
1275 return func 1abcd
1277 return decorator 1abcd
1279 def add_api_websocket_route( 1abcd
1280 self,
1281 path: str,
1282 endpoint: Callable[..., Any],
1283 name: str | None = None,
1284 *,
1285 dependencies: Sequence[Depends] | None = None,
1286 ) -> None:
1287 self.router.add_api_websocket_route( 2a ?5}c~cadbdcdb c @5ddedfdgdd [5hdidjdkdldmdndod
1288 path,
1289 endpoint,
1290 name=name,
1291 dependencies=dependencies,
1292 )
1294 def websocket( 1abcd
1295 self,
1296 path: Annotated[
1297 str,
1298 Doc(
1299 """
1300 WebSocket path.
1301 """
1302 ),
1303 ],
1304 name: Annotated[
1305 str | None,
1306 Doc(
1307 """
1308 A name for the WebSocket. Only used internally.
1309 """
1310 ),
1311 ] = None,
1312 *,
1313 dependencies: Annotated[
1314 Sequence[Depends] | None,
1315 Doc(
1316 """
1317 A list of dependencies (using `Depends()`) to be used for this
1318 WebSocket.
1320 Read more about it in the
1321 [FastAPI docs for WebSockets](https://fastapi.tiangolo.com/advanced/websockets/).
1322 """
1323 ),
1324 ] = None,
1325 ) -> Callable[[DecoratedCallable], DecoratedCallable]:
1326 """
1327 Decorate a WebSocket function.
1329 Read more about it in the
1330 [FastAPI docs for WebSockets](https://fastapi.tiangolo.com/advanced/websockets/).
1332 **Example**
1334 ```python
1335 from fastapi import FastAPI, WebSocket
1337 app = FastAPI()
1339 @app.websocket("/ws")
1340 async def websocket_endpoint(websocket: WebSocket):
1341 await websocket.accept()
1342 while True:
1343 data = await websocket.receive_text()
1344 await websocket.send_text(f"Message text was: {data}")
1345 ```
1346 """
1348 def decorator(func: DecoratedCallable) -> DecoratedCallable: 2a ?5}c~cadbdcdb c @5ddedfdgdd [5hdidjdkdldmdndod
1349 self.add_api_websocket_route( 2a ?5}c~cadbdcdb c @5ddedfdgdd [5hdidjdkdldmdndod
1350 path,
1351 func,
1352 name=name,
1353 dependencies=dependencies,
1354 )
1355 return func 2a }c~cadbdcdb c ddedfdgdd hdidjdkdldmdndod
1357 return decorator 2a ?5}c~cadbdcdb c @5ddedfdgdd [5hdidjdkdldmdndod
1359 def include_router( 1abcd
1360 self,
1361 router: Annotated[routing.APIRouter, Doc("The `APIRouter` to include.")],
1362 *,
1363 prefix: Annotated[str, Doc("An optional path prefix for the router.")] = "",
1364 tags: Annotated[
1365 list[str | Enum] | None,
1366 Doc(
1367 """
1368 A list of tags to be applied to all the *path operations* in this
1369 router.
1371 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
1373 Read more about it in the
1374 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/).
1375 """
1376 ),
1377 ] = None,
1378 dependencies: Annotated[
1379 Sequence[Depends] | None,
1380 Doc(
1381 """
1382 A list of dependencies (using `Depends()`) to be applied to all the
1383 *path operations* in this router.
1385 Read more about it in the
1386 [FastAPI docs for Bigger Applications - Multiple Files](https://fastapi.tiangolo.com/tutorial/bigger-applications/#include-an-apirouter-with-a-custom-prefix-tags-responses-and-dependencies).
1388 **Example**
1390 ```python
1391 from fastapi import Depends, FastAPI
1393 from .dependencies import get_token_header
1394 from .internal import admin
1396 app = FastAPI()
1398 app.include_router(
1399 admin.router,
1400 dependencies=[Depends(get_token_header)],
1401 )
1402 ```
1403 """
1404 ),
1405 ] = None,
1406 responses: Annotated[
1407 dict[int | str, dict[str, Any]] | None,
1408 Doc(
1409 """
1410 Additional responses to be shown in OpenAPI.
1412 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
1414 Read more about it in the
1415 [FastAPI docs for Additional Responses in OpenAPI](https://fastapi.tiangolo.com/advanced/additional-responses/).
1417 And in the
1418 [FastAPI docs for Bigger Applications](https://fastapi.tiangolo.com/tutorial/bigger-applications/#include-an-apirouter-with-a-custom-prefix-tags-responses-and-dependencies).
1419 """
1420 ),
1421 ] = None,
1422 deprecated: Annotated[
1423 bool | None,
1424 Doc(
1425 """
1426 Mark all the *path operations* in this router as deprecated.
1428 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
1430 **Example**
1432 ```python
1433 from fastapi import FastAPI
1435 from .internal import old_api
1437 app = FastAPI()
1439 app.include_router(
1440 old_api.router,
1441 deprecated=True,
1442 )
1443 ```
1444 """
1445 ),
1446 ] = None,
1447 include_in_schema: Annotated[
1448 bool,
1449 Doc(
1450 """
1451 Include (or not) all the *path operations* in this router in the
1452 generated OpenAPI schema.
1454 This affects the generated OpenAPI (e.g. visible at `/docs`).
1456 **Example**
1458 ```python
1459 from fastapi import FastAPI
1461 from .internal import old_api
1463 app = FastAPI()
1465 app.include_router(
1466 old_api.router,
1467 include_in_schema=False,
1468 )
1469 ```
1470 """
1471 ),
1472 ] = True,
1473 default_response_class: Annotated[
1474 type[Response],
1475 Doc(
1476 """
1477 Default response class to be used for the *path operations* in this
1478 router.
1480 Read more in the
1481 [FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.tiangolo.com/advanced/custom-response/#default-response-class).
1483 **Example**
1485 ```python
1486 from fastapi import FastAPI
1487 from fastapi.responses import ORJSONResponse
1489 from .internal import old_api
1491 app = FastAPI()
1493 app.include_router(
1494 old_api.router,
1495 default_response_class=ORJSONResponse,
1496 )
1497 ```
1498 """
1499 ),
1500 ] = Default(JSONResponse),
1501 callbacks: Annotated[
1502 list[BaseRoute] | None,
1503 Doc(
1504 """
1505 List of *path operations* that will be used as OpenAPI callbacks.
1507 This is only for OpenAPI documentation, the callbacks won't be used
1508 directly.
1510 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
1512 Read more about it in the
1513 [FastAPI docs for OpenAPI Callbacks](https://fastapi.tiangolo.com/advanced/openapi-callbacks/).
1514 """
1515 ),
1516 ] = None,
1517 generate_unique_id_function: Annotated[
1518 Callable[[routing.APIRoute], str],
1519 Doc(
1520 """
1521 Customize the function used to generate unique IDs for the *path
1522 operations* shown in the generated OpenAPI.
1524 This is particularly useful when automatically generating clients or
1525 SDKs for your API.
1527 Read more about it in the
1528 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function).
1529 """
1530 ),
1531 ] = Default(generate_unique_id),
1532 ) -> None:
1533 """
1534 Include an `APIRouter` in the same app.
1536 Read more about it in the
1537 [FastAPI docs for Bigger Applications](https://fastapi.tiangolo.com/tutorial/bigger-applications/).
1539 ## Example
1541 ```python
1542 from fastapi import FastAPI
1544 from .users import users_router
1546 app = FastAPI()
1548 app.include_router(users_router)
1549 ```
1550 """
1551 self.router.include_router( 3a Eb /Bbt u v w x y 6b 7b { 9b fb gb #b $b sd td Cd Dd -b .b /b b c ;b :BbC D E F G H pc qc | sc pb qb uc vc 'd (d :d Dc Ec Fc d Hc ;BbL M N O P Q 9c !c } $c zb Ab 'c (c we Be :c ;c =c
1552 router,
1553 prefix=prefix,
1554 tags=tags,
1555 dependencies=dependencies,
1556 responses=responses,
1557 deprecated=deprecated,
1558 include_in_schema=include_in_schema,
1559 default_response_class=default_response_class,
1560 callbacks=callbacks,
1561 generate_unique_id_function=generate_unique_id_function,
1562 )
1564 def get( 1abcd
1565 self,
1566 path: Annotated[
1567 str,
1568 Doc(
1569 """
1570 The URL path to be used for this *path operation*.
1572 For example, in `http://example.com/items`, the path is `/items`.
1573 """
1574 ),
1575 ],
1576 *,
1577 response_model: Annotated[
1578 Any,
1579 Doc(
1580 """
1581 The type to use for the response.
1583 It could be any valid Pydantic *field* type. So, it doesn't have to
1584 be a Pydantic model, it could be other things, like a `list`, `dict`,
1585 etc.
1587 It will be used for:
1589 * Documentation: the generated OpenAPI (and the UI at `/docs`) will
1590 show it as the response (JSON Schema).
1591 * Serialization: you could return an arbitrary object and the
1592 `response_model` would be used to serialize that object into the
1593 corresponding JSON.
1594 * Filtering: the JSON sent to the client will only contain the data
1595 (fields) defined in the `response_model`. If you returned an object
1596 that contains an attribute `password` but the `response_model` does
1597 not include that field, the JSON sent to the client would not have
1598 that `password`.
1599 * Validation: whatever you return will be serialized with the
1600 `response_model`, converting any data as necessary to generate the
1601 corresponding JSON. But if the data in the object returned is not
1602 valid, that would mean a violation of the contract with the client,
1603 so it's an error from the API developer. So, FastAPI will raise an
1604 error and return a 500 error code (Internal Server Error).
1606 Read more about it in the
1607 [FastAPI docs for Response Model](https://fastapi.tiangolo.com/tutorial/response-model/).
1608 """
1609 ),
1610 ] = Default(None),
1611 status_code: Annotated[
1612 int | None,
1613 Doc(
1614 """
1615 The default status code to be used for the response.
1617 You could override the status code by returning a response directly.
1619 Read more about it in the
1620 [FastAPI docs for Response Status Code](https://fastapi.tiangolo.com/tutorial/response-status-code/).
1621 """
1622 ),
1623 ] = None,
1624 tags: Annotated[
1625 list[str | Enum] | None,
1626 Doc(
1627 """
1628 A list of tags to be applied to the *path operation*.
1630 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
1632 Read more about it in the
1633 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/#tags).
1634 """
1635 ),
1636 ] = None,
1637 dependencies: Annotated[
1638 Sequence[Depends] | None,
1639 Doc(
1640 """
1641 A list of dependencies (using `Depends()`) to be applied to the
1642 *path operation*.
1644 Read more about it in the
1645 [FastAPI docs for Dependencies in path operation decorators](https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-in-path-operation-decorators/).
1646 """
1647 ),
1648 ] = None,
1649 summary: Annotated[
1650 str | None,
1651 Doc(
1652 """
1653 A summary for the *path operation*.
1655 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
1657 Read more about it in the
1658 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/).
1659 """
1660 ),
1661 ] = None,
1662 description: Annotated[
1663 str | None,
1664 Doc(
1665 """
1666 A description for the *path operation*.
1668 If not provided, it will be extracted automatically from the docstring
1669 of the *path operation function*.
1671 It can contain Markdown.
1673 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
1675 Read more about it in the
1676 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/).
1677 """
1678 ),
1679 ] = None,
1680 response_description: Annotated[
1681 str,
1682 Doc(
1683 """
1684 The description for the default response.
1686 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
1687 """
1688 ),
1689 ] = "Successful Response",
1690 responses: Annotated[
1691 dict[int | str, dict[str, Any]] | None,
1692 Doc(
1693 """
1694 Additional responses that could be returned by this *path operation*.
1696 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
1697 """
1698 ),
1699 ] = None,
1700 deprecated: Annotated[
1701 bool | None,
1702 Doc(
1703 """
1704 Mark this *path operation* as deprecated.
1706 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
1707 """
1708 ),
1709 ] = None,
1710 operation_id: Annotated[
1711 str | None,
1712 Doc(
1713 """
1714 Custom operation ID to be used by this *path operation*.
1716 By default, it is generated automatically.
1718 If you provide a custom operation ID, you need to make sure it is
1719 unique for the whole API.
1721 You can customize the
1722 operation ID generation with the parameter
1723 `generate_unique_id_function` in the `FastAPI` class.
1725 Read more about it in the
1726 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function).
1727 """
1728 ),
1729 ] = None,
1730 response_model_include: Annotated[
1731 IncEx | None,
1732 Doc(
1733 """
1734 Configuration passed to Pydantic to include only certain fields in the
1735 response data.
1737 Read more about it in the
1738 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude).
1739 """
1740 ),
1741 ] = None,
1742 response_model_exclude: Annotated[
1743 IncEx | None,
1744 Doc(
1745 """
1746 Configuration passed to Pydantic to exclude certain fields in the
1747 response data.
1749 Read more about it in the
1750 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude).
1751 """
1752 ),
1753 ] = None,
1754 response_model_by_alias: Annotated[
1755 bool,
1756 Doc(
1757 """
1758 Configuration passed to Pydantic to define if the response model
1759 should be serialized by alias when an alias is used.
1761 Read more about it in the
1762 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude).
1763 """
1764 ),
1765 ] = True,
1766 response_model_exclude_unset: Annotated[
1767 bool,
1768 Doc(
1769 """
1770 Configuration passed to Pydantic to define if the response data
1771 should have all the fields, including the ones that were not set and
1772 have their default values. This is different from
1773 `response_model_exclude_defaults` in that if the fields are set,
1774 they will be included in the response, even if the value is the same
1775 as the default.
1777 When `True`, default values are omitted from the response.
1779 Read more about it in the
1780 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
1781 """
1782 ),
1783 ] = False,
1784 response_model_exclude_defaults: Annotated[
1785 bool,
1786 Doc(
1787 """
1788 Configuration passed to Pydantic to define if the response data
1789 should have all the fields, including the ones that have the same value
1790 as the default. This is different from `response_model_exclude_unset`
1791 in that if the fields are set but contain the same default values,
1792 they will be excluded from the response.
1794 When `True`, default values are omitted from the response.
1796 Read more about it in the
1797 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
1798 """
1799 ),
1800 ] = False,
1801 response_model_exclude_none: Annotated[
1802 bool,
1803 Doc(
1804 """
1805 Configuration passed to Pydantic to define if the response data should
1806 exclude fields set to `None`.
1808 This is much simpler (less smart) than `response_model_exclude_unset`
1809 and `response_model_exclude_defaults`. You probably want to use one of
1810 those two instead of this one, as those allow returning `None` values
1811 when it makes sense.
1813 Read more about it in the
1814 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_exclude_none).
1815 """
1816 ),
1817 ] = False,
1818 include_in_schema: Annotated[
1819 bool,
1820 Doc(
1821 """
1822 Include this *path operation* in the generated OpenAPI schema.
1824 This affects the generated OpenAPI (e.g. visible at `/docs`).
1826 Read more about it in the
1827 [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi).
1828 """
1829 ),
1830 ] = True,
1831 response_class: Annotated[
1832 type[Response],
1833 Doc(
1834 """
1835 Response class to be used for this *path operation*.
1837 This will not be used if you return a response directly.
1839 Read more about it in the
1840 [FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.tiangolo.com/advanced/custom-response/#redirectresponse).
1841 """
1842 ),
1843 ] = Default(JSONResponse),
1844 name: Annotated[
1845 str | None,
1846 Doc(
1847 """
1848 Name for this *path operation*. Only used internally.
1849 """
1850 ),
1851 ] = None,
1852 callbacks: Annotated[
1853 list[BaseRoute] | None,
1854 Doc(
1855 """
1856 List of *path operations* that will be used as OpenAPI callbacks.
1858 This is only for OpenAPI documentation, the callbacks won't be used
1859 directly.
1861 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
1863 Read more about it in the
1864 [FastAPI docs for OpenAPI Callbacks](https://fastapi.tiangolo.com/advanced/openapi-callbacks/).
1865 """
1866 ),
1867 ] = None,
1868 openapi_extra: Annotated[
1869 dict[str, Any] | None,
1870 Doc(
1871 """
1872 Extra metadata to be included in the OpenAPI schema for this *path
1873 operation*.
1875 Read more about it in the
1876 [FastAPI docs for Path Operation Advanced Configuration](https://fastapi.tiangolo.com/advanced/path-operation-advanced-configuration/#custom-openapi-path-operation-schema).
1877 """
1878 ),
1879 ] = None,
1880 generate_unique_id_function: Annotated[
1881 Callable[[routing.APIRoute], str],
1882 Doc(
1883 """
1884 Customize the function used to generate unique IDs for the *path
1885 operations* shown in the generated OpenAPI.
1887 This is particularly useful when automatically generating clients or
1888 SDKs for your API.
1890 Read more about it in the
1891 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function).
1892 """
1893 ),
1894 ] = Default(generate_unique_id),
1895 ) -> Callable[[DecoratedCallable], DecoratedCallable]:
1896 """
1897 Add a *path operation* using an HTTP GET operation.
1899 ## Example
1901 ```python
1902 from fastapi import FastAPI
1904 app = FastAPI()
1906 @app.get("/items/")
1907 def read_items():
1908 return [{"name": "Empanada"}, {"name": "Arepa"}]
1909 ```
1910 """
1911 return self.router.get( 3a .v =BbDb =e ?e @e [e ]e ^e _e `e Ib Jb Kb Lb ?BbMb Nb {e |e }e ~e af Ob bf cf df ef ff gf hf if jf kf lf h i j k ~ ab bb z A cb db xf zf Af X Ub Vb Wb Xb Yb Zb 0b 1b 2b 3b Df Ef Ff Gf Hf 4b 5b 8b eb { fb !b gb If Jf hb B Kf Lf Mf Nf Of Pf %b Qf Rf Sf Tf Xf Yf sd td ud vd wd xd e pd 'b kg lg mg ng og pg qg rg sg tg ug vg ]c ^c yd zd Ad Bd @Bb[BbCd Dd yg zg Ag Bg Cg Dg Gg Hg Ed Fd Ig Jg Kg Lg Mg Ng Og Pg Qg Rg Sg Tg Ug Vg Wg Xg Yg Zg 0g 1g 2g 3g 4g 5g 6g 7g 8g 9g (b !g #g $g %g 'g (g )g *g +g ,g -g )b .g /g :g ;g =g ?g @g [g Gd Hd Id }g ~g ah bh ch dh eh fh gh Jd Kd hh ih jh kh lh mh nh oh ph qh rh sh th uh vh wh xh yh zh Ah Bh Ch Ld Md Nd Od Ph Qh Rh Sh Th Uh Vh Wh Xh Yh Zh 0h 1h 2h 3h 4h 5h 6h 7h 8h 9h !h #h $h %h 'h (h )h *h +h ,h -h .h /h :h ;h =h ?h @h [h ]h ^h _h `h {h |h }h ~h ai bi ci di ei fi gi hi ii ji ki li mi ni oi pi qi ri si ti ui vi wi xi yi zi Ai Bi Ci Di Ei Fi Gi Hi Ii Ji Ki Li Mi Ni Oi Pi Qi Pd Qd Rd Sd Td Ud *i Vd Wd :i ;i =i ?i @i [i ]i ^i _i nj oj pj qj rj sj tj uj Xd Yd Zd 0d 1d 2d 3d 4d 5d 6d 7d vj wj xj yj zj Aj Bj Cj 8d 9d !d #d Dj Ej Fj Gj Hj Ij Jj Mj Nj Oj Pj Qj Rj Sj . / : ; 9 ! # $ Tj Uj Vj Wj *b $d %d ib Zj 0j }c ~c ad bd cd b c ]v ]Bb:b 4j 5j 6j 7j 8j 9j !j #j [b ]b ^b _b ^Bb`b {b $j %j 'j (j )j |b *j +j ,j -j .j /j :j ;j =j ?j @j l m n o jb kb lb I J mb nb ck ek fk 2 dc ec fc gc hc ic jc kc lc mc ik jk kk lk mk nc oc rc ob | pb tc qb nk ok rb K pk qk rk sk tk uk wc vk wk xk yk Bk Ck 'd (d )d *d +d f qd xc :k ;k =k ?k @k [k ]k ^k _k `k _c `c ,d -d .d /d _Bb`Bb:d }k ~k al bl cl dl el fl gl hl kl ll ;d =d ml nl ol pl ql rl sl tl ul vl wl xl yl zl Al Bl Cl Dl El Fl Gl Hl Il Jl Kl Ll Ml Nl Ol Pl yc Ql Rl Sl Tl Ul Vl Wl Xl Yl Zl zc 0l 1l 2l 3l 4l 5l 6l 7l ?d @d [d )l *l +l ,l -l .l /l :l ;l =l ]d ^d ?l @l [l ]l ^l _l `l {l |l }l ~l am bm cm dm em fm gm hm im jm km lm mm _d `d {d |d ym zm Am Bm Cm Dm Em Fm Gm Hm Im Jm Km Lm Mm Nm Om Pm Qm Rm Sm Tm Um Vm Wm Xm Ym Zm 0m 1m 2m 3m 4m 5m 6m 7m 8m 9m !m #m $m %m 'm (m )m *m +m ,m -m .m /m :m ;m =m ?m @m [m ]m ^m _m `m {m |m }m ~m an bn cn dn en fn gn hn in jn kn ln mn nn on pn }d ~d ae be Pn Qn ce de ee fe Xn Yn Zn 0n 1n 2n 3n 4n 5n ,n -n .n /n ge he ie je ke le me ne oe pe :n ;n =n ?n @n [n ]n ^n qe re se te _n `n {n |n }n ~n ao bo eo fo go ho io jo ko = ? @ [ % ' ( ) lo mo no oo po qo Ac ue ve sb to uo vo wo dd ed fd gd d aw {BbGc Ao Bo Co Do Eo Fo Go Ho Lc Mc Nc Oc |BbPc Qc Io Jo Ko Lo Mo Rc No Oo Po Qo Ro So To Uo Vo Wo Xo p q r s tb ub vb R S wb xb 9o #o $o 7 Xc Yc Zc 0c 1c 2c 3c 4c 5c 6c (o )o *o +o ,o 7c 8c #c yb } zb %c Ab -o .o Bb T /o :o ;o =o ?o @o )c [o ]o `o we xe ye g rd *c wp xp yp zp Ap Bp {c |c }Bbze ~BbAe aCbbCbBe Ep Fp Gp Hp Ip Kp Ce Lp Mp Np Op Pp Qp Rp Sp Tp Up Vp Wp Xp Yp Zp 0p 1p 2p +c 3p 4p 5p 6p 7p 8p 9p !p ,c #p $p %p 'p De Ee -p .p /p :p ;p Fe =p ?p @p [p ]p ^p _p `p {p |p }p ~p Ge He hq iq jq kq lq mq nq oq pq qq rq sq tq uq vq wq xq yq zq Aq Bq Cq Dq Eq Fq Gq Hq Iq Jq Kq Lq Mq Nq Oq Pq Qq Rq Sq Tq Uq Vq Wq Xq Yq Zq 0q 1q 2q 3q 4q 5q 6q 7q 8q 9q !q #q $q %q 'q (q )q *q +q ,q -q .q /q :q ;q =q ?q @q [q ]q ^q _q `q {q |q }q ~q ar br cr dr er fr gr hr ir jr Ie Je Ke Le Me Ne Oe Pe Qe Re Se Te Yr Zr Ue Ve We Xe Ye Ze 6r 7r 8r 9r !r #r $r %r 'r (r )r *r +r bs cs ds es fs gs hs is js ks 0e 1e 2e 3e 4e 5e 6e 7e 8e 9e !e #e $e %e 'e (e )e ls ms ns os ps qs rs ss ts us vs *e +e ,e -e .e /e ws xs ys zs As Bs Cs Ds Es Fs Is Js Ks Ls Ms Ns Os Ps Qs Rs ] ^ _ ` * + , - Ss Ts Us Vs Ws Xs Ys Zs -c :e ;e Cb 3s 4s 5s 6s 7s 8s hd id jd kd ld md nd od
1912 path,
1913 response_model=response_model,
1914 status_code=status_code,
1915 tags=tags,
1916 dependencies=dependencies,
1917 summary=summary,
1918 description=description,
1919 response_description=response_description,
1920 responses=responses,
1921 deprecated=deprecated,
1922 operation_id=operation_id,
1923 response_model_include=response_model_include,
1924 response_model_exclude=response_model_exclude,
1925 response_model_by_alias=response_model_by_alias,
1926 response_model_exclude_unset=response_model_exclude_unset,
1927 response_model_exclude_defaults=response_model_exclude_defaults,
1928 response_model_exclude_none=response_model_exclude_none,
1929 include_in_schema=include_in_schema,
1930 response_class=response_class,
1931 name=name,
1932 callbacks=callbacks,
1933 openapi_extra=openapi_extra,
1934 generate_unique_id_function=generate_unique_id_function,
1935 )
1937 def put( 1abcd
1938 self,
1939 path: Annotated[
1940 str,
1941 Doc(
1942 """
1943 The URL path to be used for this *path operation*.
1945 For example, in `http://example.com/items`, the path is `/items`.
1946 """
1947 ),
1948 ],
1949 *,
1950 response_model: Annotated[
1951 Any,
1952 Doc(
1953 """
1954 The type to use for the response.
1956 It could be any valid Pydantic *field* type. So, it doesn't have to
1957 be a Pydantic model, it could be other things, like a `list`, `dict`,
1958 etc.
1960 It will be used for:
1962 * Documentation: the generated OpenAPI (and the UI at `/docs`) will
1963 show it as the response (JSON Schema).
1964 * Serialization: you could return an arbitrary object and the
1965 `response_model` would be used to serialize that object into the
1966 corresponding JSON.
1967 * Filtering: the JSON sent to the client will only contain the data
1968 (fields) defined in the `response_model`. If you returned an object
1969 that contains an attribute `password` but the `response_model` does
1970 not include that field, the JSON sent to the client would not have
1971 that `password`.
1972 * Validation: whatever you return will be serialized with the
1973 `response_model`, converting any data as necessary to generate the
1974 corresponding JSON. But if the data in the object returned is not
1975 valid, that would mean a violation of the contract with the client,
1976 so it's an error from the API developer. So, FastAPI will raise an
1977 error and return a 500 error code (Internal Server Error).
1979 Read more about it in the
1980 [FastAPI docs for Response Model](https://fastapi.tiangolo.com/tutorial/response-model/).
1981 """
1982 ),
1983 ] = Default(None),
1984 status_code: Annotated[
1985 int | None,
1986 Doc(
1987 """
1988 The default status code to be used for the response.
1990 You could override the status code by returning a response directly.
1992 Read more about it in the
1993 [FastAPI docs for Response Status Code](https://fastapi.tiangolo.com/tutorial/response-status-code/).
1994 """
1995 ),
1996 ] = None,
1997 tags: Annotated[
1998 list[str | Enum] | None,
1999 Doc(
2000 """
2001 A list of tags to be applied to the *path operation*.
2003 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
2005 Read more about it in the
2006 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/#tags).
2007 """
2008 ),
2009 ] = None,
2010 dependencies: Annotated[
2011 Sequence[Depends] | None,
2012 Doc(
2013 """
2014 A list of dependencies (using `Depends()`) to be applied to the
2015 *path operation*.
2017 Read more about it in the
2018 [FastAPI docs for Dependencies in path operation decorators](https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-in-path-operation-decorators/).
2019 """
2020 ),
2021 ] = None,
2022 summary: Annotated[
2023 str | None,
2024 Doc(
2025 """
2026 A summary for the *path operation*.
2028 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
2030 Read more about it in the
2031 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/).
2032 """
2033 ),
2034 ] = None,
2035 description: Annotated[
2036 str | None,
2037 Doc(
2038 """
2039 A description for the *path operation*.
2041 If not provided, it will be extracted automatically from the docstring
2042 of the *path operation function*.
2044 It can contain Markdown.
2046 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
2048 Read more about it in the
2049 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/).
2050 """
2051 ),
2052 ] = None,
2053 response_description: Annotated[
2054 str,
2055 Doc(
2056 """
2057 The description for the default response.
2059 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
2060 """
2061 ),
2062 ] = "Successful Response",
2063 responses: Annotated[
2064 dict[int | str, dict[str, Any]] | None,
2065 Doc(
2066 """
2067 Additional responses that could be returned by this *path operation*.
2069 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
2070 """
2071 ),
2072 ] = None,
2073 deprecated: Annotated[
2074 bool | None,
2075 Doc(
2076 """
2077 Mark this *path operation* as deprecated.
2079 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
2080 """
2081 ),
2082 ] = None,
2083 operation_id: Annotated[
2084 str | None,
2085 Doc(
2086 """
2087 Custom operation ID to be used by this *path operation*.
2089 By default, it is generated automatically.
2091 If you provide a custom operation ID, you need to make sure it is
2092 unique for the whole API.
2094 You can customize the
2095 operation ID generation with the parameter
2096 `generate_unique_id_function` in the `FastAPI` class.
2098 Read more about it in the
2099 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function).
2100 """
2101 ),
2102 ] = None,
2103 response_model_include: Annotated[
2104 IncEx | None,
2105 Doc(
2106 """
2107 Configuration passed to Pydantic to include only certain fields in the
2108 response data.
2110 Read more about it in the
2111 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude).
2112 """
2113 ),
2114 ] = None,
2115 response_model_exclude: Annotated[
2116 IncEx | None,
2117 Doc(
2118 """
2119 Configuration passed to Pydantic to exclude certain fields in the
2120 response data.
2122 Read more about it in the
2123 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude).
2124 """
2125 ),
2126 ] = None,
2127 response_model_by_alias: Annotated[
2128 bool,
2129 Doc(
2130 """
2131 Configuration passed to Pydantic to define if the response model
2132 should be serialized by alias when an alias is used.
2134 Read more about it in the
2135 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude).
2136 """
2137 ),
2138 ] = True,
2139 response_model_exclude_unset: Annotated[
2140 bool,
2141 Doc(
2142 """
2143 Configuration passed to Pydantic to define if the response data
2144 should have all the fields, including the ones that were not set and
2145 have their default values. This is different from
2146 `response_model_exclude_defaults` in that if the fields are set,
2147 they will be included in the response, even if the value is the same
2148 as the default.
2150 When `True`, default values are omitted from the response.
2152 Read more about it in the
2153 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
2154 """
2155 ),
2156 ] = False,
2157 response_model_exclude_defaults: Annotated[
2158 bool,
2159 Doc(
2160 """
2161 Configuration passed to Pydantic to define if the response data
2162 should have all the fields, including the ones that have the same value
2163 as the default. This is different from `response_model_exclude_unset`
2164 in that if the fields are set but contain the same default values,
2165 they will be excluded from the response.
2167 When `True`, default values are omitted from the response.
2169 Read more about it in the
2170 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
2171 """
2172 ),
2173 ] = False,
2174 response_model_exclude_none: Annotated[
2175 bool,
2176 Doc(
2177 """
2178 Configuration passed to Pydantic to define if the response data should
2179 exclude fields set to `None`.
2181 This is much simpler (less smart) than `response_model_exclude_unset`
2182 and `response_model_exclude_defaults`. You probably want to use one of
2183 those two instead of this one, as those allow returning `None` values
2184 when it makes sense.
2186 Read more about it in the
2187 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_exclude_none).
2188 """
2189 ),
2190 ] = False,
2191 include_in_schema: Annotated[
2192 bool,
2193 Doc(
2194 """
2195 Include this *path operation* in the generated OpenAPI schema.
2197 This affects the generated OpenAPI (e.g. visible at `/docs`).
2199 Read more about it in the
2200 [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi).
2201 """
2202 ),
2203 ] = True,
2204 response_class: Annotated[
2205 type[Response],
2206 Doc(
2207 """
2208 Response class to be used for this *path operation*.
2210 This will not be used if you return a response directly.
2212 Read more about it in the
2213 [FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.tiangolo.com/advanced/custom-response/#redirectresponse).
2214 """
2215 ),
2216 ] = Default(JSONResponse),
2217 name: Annotated[
2218 str | None,
2219 Doc(
2220 """
2221 Name for this *path operation*. Only used internally.
2222 """
2223 ),
2224 ] = None,
2225 callbacks: Annotated[
2226 list[BaseRoute] | None,
2227 Doc(
2228 """
2229 List of *path operations* that will be used as OpenAPI callbacks.
2231 This is only for OpenAPI documentation, the callbacks won't be used
2232 directly.
2234 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
2236 Read more about it in the
2237 [FastAPI docs for OpenAPI Callbacks](https://fastapi.tiangolo.com/advanced/openapi-callbacks/).
2238 """
2239 ),
2240 ] = None,
2241 openapi_extra: Annotated[
2242 dict[str, Any] | None,
2243 Doc(
2244 """
2245 Extra metadata to be included in the OpenAPI schema for this *path
2246 operation*.
2248 Read more about it in the
2249 [FastAPI docs for Path Operation Advanced Configuration](https://fastapi.tiangolo.com/advanced/path-operation-advanced-configuration/#custom-openapi-path-operation-schema).
2250 """
2251 ),
2252 ] = None,
2253 generate_unique_id_function: Annotated[
2254 Callable[[routing.APIRoute], str],
2255 Doc(
2256 """
2257 Customize the function used to generate unique IDs for the *path
2258 operations* shown in the generated OpenAPI.
2260 This is particularly useful when automatically generating clients or
2261 SDKs for your API.
2263 Read more about it in the
2264 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function).
2265 """
2266 ),
2267 ] = Default(generate_unique_id),
2268 ) -> Callable[[DecoratedCallable], DecoratedCallable]:
2269 """
2270 Add a *path operation* using an HTTP PUT operation.
2272 ## Example
2274 ```python
2275 from fastapi import FastAPI
2276 from pydantic import BaseModel
2278 class Item(BaseModel):
2279 name: str
2280 description: str | None = None
2282 app = FastAPI()
2284 @app.put("/items/{item_id}")
2285 def replace_item(item_id: str, item: Item):
2286 return {"message": "Item replaced", "id": item_id}
2287 ```
2288 """
2289 return self.router.put( 2a UfVfWf5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgudvd]g^g_g`g)i}i~iajbjcjdjejfjgjhjijjjkjljmjb c zkAkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k)d*d8l9l!l#l$l%lNnOn8n9n!n#n$n%n'n(n)n*n+nd ^o_oapbpcpdpepfpgphpipjpkplpmpnpopppqprpspxe(p)p*pWrXr/r:r;r=r?r@r[r]r^r_r`r{r|r}r~ras
2290 path,
2291 response_model=response_model,
2292 status_code=status_code,
2293 tags=tags,
2294 dependencies=dependencies,
2295 summary=summary,
2296 description=description,
2297 response_description=response_description,
2298 responses=responses,
2299 deprecated=deprecated,
2300 operation_id=operation_id,
2301 response_model_include=response_model_include,
2302 response_model_exclude=response_model_exclude,
2303 response_model_by_alias=response_model_by_alias,
2304 response_model_exclude_unset=response_model_exclude_unset,
2305 response_model_exclude_defaults=response_model_exclude_defaults,
2306 response_model_exclude_none=response_model_exclude_none,
2307 include_in_schema=include_in_schema,
2308 response_class=response_class,
2309 name=name,
2310 callbacks=callbacks,
2311 openapi_extra=openapi_extra,
2312 generate_unique_id_function=generate_unique_id_function,
2313 )
2315 def post( 1abcd
2316 self,
2317 path: Annotated[
2318 str,
2319 Doc(
2320 """
2321 The URL path to be used for this *path operation*.
2323 For example, in `http://example.com/items`, the path is `/items`.
2324 """
2325 ),
2326 ],
2327 *,
2328 response_model: Annotated[
2329 Any,
2330 Doc(
2331 """
2332 The type to use for the response.
2334 It could be any valid Pydantic *field* type. So, it doesn't have to
2335 be a Pydantic model, it could be other things, like a `list`, `dict`,
2336 etc.
2338 It will be used for:
2340 * Documentation: the generated OpenAPI (and the UI at `/docs`) will
2341 show it as the response (JSON Schema).
2342 * Serialization: you could return an arbitrary object and the
2343 `response_model` would be used to serialize that object into the
2344 corresponding JSON.
2345 * Filtering: the JSON sent to the client will only contain the data
2346 (fields) defined in the `response_model`. If you returned an object
2347 that contains an attribute `password` but the `response_model` does
2348 not include that field, the JSON sent to the client would not have
2349 that `password`.
2350 * Validation: whatever you return will be serialized with the
2351 `response_model`, converting any data as necessary to generate the
2352 corresponding JSON. But if the data in the object returned is not
2353 valid, that would mean a violation of the contract with the client,
2354 so it's an error from the API developer. So, FastAPI will raise an
2355 error and return a 500 error code (Internal Server Error).
2357 Read more about it in the
2358 [FastAPI docs for Response Model](https://fastapi.tiangolo.com/tutorial/response-model/).
2359 """
2360 ),
2361 ] = Default(None),
2362 status_code: Annotated[
2363 int | None,
2364 Doc(
2365 """
2366 The default status code to be used for the response.
2368 You could override the status code by returning a response directly.
2370 Read more about it in the
2371 [FastAPI docs for Response Status Code](https://fastapi.tiangolo.com/tutorial/response-status-code/).
2372 """
2373 ),
2374 ] = None,
2375 tags: Annotated[
2376 list[str | Enum] | None,
2377 Doc(
2378 """
2379 A list of tags to be applied to the *path operation*.
2381 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
2383 Read more about it in the
2384 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/#tags).
2385 """
2386 ),
2387 ] = None,
2388 dependencies: Annotated[
2389 Sequence[Depends] | None,
2390 Doc(
2391 """
2392 A list of dependencies (using `Depends()`) to be applied to the
2393 *path operation*.
2395 Read more about it in the
2396 [FastAPI docs for Dependencies in path operation decorators](https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-in-path-operation-decorators/).
2397 """
2398 ),
2399 ] = None,
2400 summary: Annotated[
2401 str | None,
2402 Doc(
2403 """
2404 A summary for the *path operation*.
2406 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
2408 Read more about it in the
2409 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/).
2410 """
2411 ),
2412 ] = None,
2413 description: Annotated[
2414 str | None,
2415 Doc(
2416 """
2417 A description for the *path operation*.
2419 If not provided, it will be extracted automatically from the docstring
2420 of the *path operation function*.
2422 It can contain Markdown.
2424 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
2426 Read more about it in the
2427 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/).
2428 """
2429 ),
2430 ] = None,
2431 response_description: Annotated[
2432 str,
2433 Doc(
2434 """
2435 The description for the default response.
2437 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
2438 """
2439 ),
2440 ] = "Successful Response",
2441 responses: Annotated[
2442 dict[int | str, dict[str, Any]] | None,
2443 Doc(
2444 """
2445 Additional responses that could be returned by this *path operation*.
2447 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
2448 """
2449 ),
2450 ] = None,
2451 deprecated: Annotated[
2452 bool | None,
2453 Doc(
2454 """
2455 Mark this *path operation* as deprecated.
2457 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
2458 """
2459 ),
2460 ] = None,
2461 operation_id: Annotated[
2462 str | None,
2463 Doc(
2464 """
2465 Custom operation ID to be used by this *path operation*.
2467 By default, it is generated automatically.
2469 If you provide a custom operation ID, you need to make sure it is
2470 unique for the whole API.
2472 You can customize the
2473 operation ID generation with the parameter
2474 `generate_unique_id_function` in the `FastAPI` class.
2476 Read more about it in the
2477 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function).
2478 """
2479 ),
2480 ] = None,
2481 response_model_include: Annotated[
2482 IncEx | None,
2483 Doc(
2484 """
2485 Configuration passed to Pydantic to include only certain fields in the
2486 response data.
2488 Read more about it in the
2489 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude).
2490 """
2491 ),
2492 ] = None,
2493 response_model_exclude: Annotated[
2494 IncEx | None,
2495 Doc(
2496 """
2497 Configuration passed to Pydantic to exclude certain fields in the
2498 response data.
2500 Read more about it in the
2501 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude).
2502 """
2503 ),
2504 ] = None,
2505 response_model_by_alias: Annotated[
2506 bool,
2507 Doc(
2508 """
2509 Configuration passed to Pydantic to define if the response model
2510 should be serialized by alias when an alias is used.
2512 Read more about it in the
2513 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude).
2514 """
2515 ),
2516 ] = True,
2517 response_model_exclude_unset: Annotated[
2518 bool,
2519 Doc(
2520 """
2521 Configuration passed to Pydantic to define if the response data
2522 should have all the fields, including the ones that were not set and
2523 have their default values. This is different from
2524 `response_model_exclude_defaults` in that if the fields are set,
2525 they will be included in the response, even if the value is the same
2526 as the default.
2528 When `True`, default values are omitted from the response.
2530 Read more about it in the
2531 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
2532 """
2533 ),
2534 ] = False,
2535 response_model_exclude_defaults: Annotated[
2536 bool,
2537 Doc(
2538 """
2539 Configuration passed to Pydantic to define if the response data
2540 should have all the fields, including the ones that have the same value
2541 as the default. This is different from `response_model_exclude_unset`
2542 in that if the fields are set but contain the same default values,
2543 they will be excluded from the response.
2545 When `True`, default values are omitted from the response.
2547 Read more about it in the
2548 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
2549 """
2550 ),
2551 ] = False,
2552 response_model_exclude_none: Annotated[
2553 bool,
2554 Doc(
2555 """
2556 Configuration passed to Pydantic to define if the response data should
2557 exclude fields set to `None`.
2559 This is much simpler (less smart) than `response_model_exclude_unset`
2560 and `response_model_exclude_defaults`. You probably want to use one of
2561 those two instead of this one, as those allow returning `None` values
2562 when it makes sense.
2564 Read more about it in the
2565 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_exclude_none).
2566 """
2567 ),
2568 ] = False,
2569 include_in_schema: Annotated[
2570 bool,
2571 Doc(
2572 """
2573 Include this *path operation* in the generated OpenAPI schema.
2575 This affects the generated OpenAPI (e.g. visible at `/docs`).
2577 Read more about it in the
2578 [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi).
2579 """
2580 ),
2581 ] = True,
2582 response_class: Annotated[
2583 type[Response],
2584 Doc(
2585 """
2586 Response class to be used for this *path operation*.
2588 This will not be used if you return a response directly.
2590 Read more about it in the
2591 [FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.tiangolo.com/advanced/custom-response/#redirectresponse).
2592 """
2593 ),
2594 ] = Default(JSONResponse),
2595 name: Annotated[
2596 str | None,
2597 Doc(
2598 """
2599 Name for this *path operation*. Only used internally.
2600 """
2601 ),
2602 ] = None,
2603 callbacks: Annotated[
2604 list[BaseRoute] | None,
2605 Doc(
2606 """
2607 List of *path operations* that will be used as OpenAPI callbacks.
2609 This is only for OpenAPI documentation, the callbacks won't be used
2610 directly.
2612 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
2614 Read more about it in the
2615 [FastAPI docs for OpenAPI Callbacks](https://fastapi.tiangolo.com/advanced/openapi-callbacks/).
2616 """
2617 ),
2618 ] = None,
2619 openapi_extra: Annotated[
2620 dict[str, Any] | None,
2621 Doc(
2622 """
2623 Extra metadata to be included in the OpenAPI schema for this *path
2624 operation*.
2626 Read more about it in the
2627 [FastAPI docs for Path Operation Advanced Configuration](https://fastapi.tiangolo.com/advanced/path-operation-advanced-configuration/#custom-openapi-path-operation-schema).
2628 """
2629 ),
2630 ] = None,
2631 generate_unique_id_function: Annotated[
2632 Callable[[routing.APIRoute], str],
2633 Doc(
2634 """
2635 Customize the function used to generate unique IDs for the *path
2636 operations* shown in the generated OpenAPI.
2638 This is particularly useful when automatically generating clients or
2639 SDKs for your API.
2641 Read more about it in the
2642 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function).
2643 """
2644 ),
2645 ] = Default(generate_unique_id),
2646 ) -> Callable[[DecoratedCallable], DecoratedCallable]:
2647 """
2648 Add a *path operation* using an HTTP POST operation.
2650 ## Example
2652 ```python
2653 from fastapi import FastAPI
2654 from pydantic import BaseModel
2656 class Item(BaseModel):
2657 name: str
2658 description: str | None = None
2660 app = FastAPI()
2662 @app.post("/items/")
2663 def create_item(item: Item):
2664 return {"message": "Item created"}
2665 ```
2666 """
2667 return self.router.post( 2a FbGbHbt U u v w x y V Pbmfnfofpfqfrfsftfufvfwf~ abbbz A cbdbyfBfCfQbRbW SbTbhbB Zf0f1f2f3f4fegfggghgigjgydzdAdBdwgxgEgFgEdFd{g|gJdKdLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(iVdWd+i,i-i.i/i`i{i|iXdYdZd0d1d2d3d4d5d6d7d8d9d!d#dKjLj. / : ; 9 ! # $ XjYj$d%d+bY 1j2j3j,bb c =b?b@bC Z D E F G H 0 }b[j]j^j_j`j{j|j}j~jakbkjbkblbI J mbnbdkgkhk~bac1 bcccrbK DkEkFkGkHkIk*k+k,k-k.k/k,d-d.d/d{k|kiljl;d=d'l(l]d^d_d`dnmompmqmrmsmtm{d|dumvmwmxmqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMncedeeefeRnSnTnUnVnWn6n7ngeheiejekelemeneoepeqeresetecodo= ? @ [ % ' ( ) rosoueveBc3 xoyozoCcd IcJcKcL 4 M N O P Q 5 ScYoZo0o1o2o3o4o5o6o7o8otbubvbR S wbxb!o%o'oTcUc6 VcWcBbT {o|o}o~otpupvpzeAeCpDpJpCe+p,pFeGeaqbqcqdqHeeqfqgqkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrUeVeWeXeYeZe0r1r2r3r4r5r,r-r.r0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/eGsHs] ^ _ ` * + , - 0s1s2s:e;e.c8 9s!s#s/c
2668 path,
2669 response_model=response_model,
2670 status_code=status_code,
2671 tags=tags,
2672 dependencies=dependencies,
2673 summary=summary,
2674 description=description,
2675 response_description=response_description,
2676 responses=responses,
2677 deprecated=deprecated,
2678 operation_id=operation_id,
2679 response_model_include=response_model_include,
2680 response_model_exclude=response_model_exclude,
2681 response_model_by_alias=response_model_by_alias,
2682 response_model_exclude_unset=response_model_exclude_unset,
2683 response_model_exclude_defaults=response_model_exclude_defaults,
2684 response_model_exclude_none=response_model_exclude_none,
2685 include_in_schema=include_in_schema,
2686 response_class=response_class,
2687 name=name,
2688 callbacks=callbacks,
2689 openapi_extra=openapi_extra,
2690 generate_unique_id_function=generate_unique_id_function,
2691 )
2693 def delete( 1abcd
2694 self,
2695 path: Annotated[
2696 str,
2697 Doc(
2698 """
2699 The URL path to be used for this *path operation*.
2701 For example, in `http://example.com/items`, the path is `/items`.
2702 """
2703 ),
2704 ],
2705 *,
2706 response_model: Annotated[
2707 Any,
2708 Doc(
2709 """
2710 The type to use for the response.
2712 It could be any valid Pydantic *field* type. So, it doesn't have to
2713 be a Pydantic model, it could be other things, like a `list`, `dict`,
2714 etc.
2716 It will be used for:
2718 * Documentation: the generated OpenAPI (and the UI at `/docs`) will
2719 show it as the response (JSON Schema).
2720 * Serialization: you could return an arbitrary object and the
2721 `response_model` would be used to serialize that object into the
2722 corresponding JSON.
2723 * Filtering: the JSON sent to the client will only contain the data
2724 (fields) defined in the `response_model`. If you returned an object
2725 that contains an attribute `password` but the `response_model` does
2726 not include that field, the JSON sent to the client would not have
2727 that `password`.
2728 * Validation: whatever you return will be serialized with the
2729 `response_model`, converting any data as necessary to generate the
2730 corresponding JSON. But if the data in the object returned is not
2731 valid, that would mean a violation of the contract with the client,
2732 so it's an error from the API developer. So, FastAPI will raise an
2733 error and return a 500 error code (Internal Server Error).
2735 Read more about it in the
2736 [FastAPI docs for Response Model](https://fastapi.tiangolo.com/tutorial/response-model/).
2737 """
2738 ),
2739 ] = Default(None),
2740 status_code: Annotated[
2741 int | None,
2742 Doc(
2743 """
2744 The default status code to be used for the response.
2746 You could override the status code by returning a response directly.
2748 Read more about it in the
2749 [FastAPI docs for Response Status Code](https://fastapi.tiangolo.com/tutorial/response-status-code/).
2750 """
2751 ),
2752 ] = None,
2753 tags: Annotated[
2754 list[str | Enum] | None,
2755 Doc(
2756 """
2757 A list of tags to be applied to the *path operation*.
2759 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
2761 Read more about it in the
2762 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/#tags).
2763 """
2764 ),
2765 ] = None,
2766 dependencies: Annotated[
2767 Sequence[Depends] | None,
2768 Doc(
2769 """
2770 A list of dependencies (using `Depends()`) to be applied to the
2771 *path operation*.
2773 Read more about it in the
2774 [FastAPI docs for Dependencies in path operation decorators](https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-in-path-operation-decorators/).
2775 """
2776 ),
2777 ] = None,
2778 summary: Annotated[
2779 str | None,
2780 Doc(
2781 """
2782 A summary for the *path operation*.
2784 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
2786 Read more about it in the
2787 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/).
2788 """
2789 ),
2790 ] = None,
2791 description: Annotated[
2792 str | None,
2793 Doc(
2794 """
2795 A description for the *path operation*.
2797 If not provided, it will be extracted automatically from the docstring
2798 of the *path operation function*.
2800 It can contain Markdown.
2802 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
2804 Read more about it in the
2805 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/).
2806 """
2807 ),
2808 ] = None,
2809 response_description: Annotated[
2810 str,
2811 Doc(
2812 """
2813 The description for the default response.
2815 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
2816 """
2817 ),
2818 ] = "Successful Response",
2819 responses: Annotated[
2820 dict[int | str, dict[str, Any]] | None,
2821 Doc(
2822 """
2823 Additional responses that could be returned by this *path operation*.
2825 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
2826 """
2827 ),
2828 ] = None,
2829 deprecated: Annotated[
2830 bool | None,
2831 Doc(
2832 """
2833 Mark this *path operation* as deprecated.
2835 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
2836 """
2837 ),
2838 ] = None,
2839 operation_id: Annotated[
2840 str | None,
2841 Doc(
2842 """
2843 Custom operation ID to be used by this *path operation*.
2845 By default, it is generated automatically.
2847 If you provide a custom operation ID, you need to make sure it is
2848 unique for the whole API.
2850 You can customize the
2851 operation ID generation with the parameter
2852 `generate_unique_id_function` in the `FastAPI` class.
2854 Read more about it in the
2855 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function).
2856 """
2857 ),
2858 ] = None,
2859 response_model_include: Annotated[
2860 IncEx | None,
2861 Doc(
2862 """
2863 Configuration passed to Pydantic to include only certain fields in the
2864 response data.
2866 Read more about it in the
2867 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude).
2868 """
2869 ),
2870 ] = None,
2871 response_model_exclude: Annotated[
2872 IncEx | None,
2873 Doc(
2874 """
2875 Configuration passed to Pydantic to exclude certain fields in the
2876 response data.
2878 Read more about it in the
2879 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude).
2880 """
2881 ),
2882 ] = None,
2883 response_model_by_alias: Annotated[
2884 bool,
2885 Doc(
2886 """
2887 Configuration passed to Pydantic to define if the response model
2888 should be serialized by alias when an alias is used.
2890 Read more about it in the
2891 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude).
2892 """
2893 ),
2894 ] = True,
2895 response_model_exclude_unset: Annotated[
2896 bool,
2897 Doc(
2898 """
2899 Configuration passed to Pydantic to define if the response data
2900 should have all the fields, including the ones that were not set and
2901 have their default values. This is different from
2902 `response_model_exclude_defaults` in that if the fields are set,
2903 they will be included in the response, even if the value is the same
2904 as the default.
2906 When `True`, default values are omitted from the response.
2908 Read more about it in the
2909 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
2910 """
2911 ),
2912 ] = False,
2913 response_model_exclude_defaults: Annotated[
2914 bool,
2915 Doc(
2916 """
2917 Configuration passed to Pydantic to define if the response data
2918 should have all the fields, including the ones that have the same value
2919 as the default. This is different from `response_model_exclude_unset`
2920 in that if the fields are set but contain the same default values,
2921 they will be excluded from the response.
2923 When `True`, default values are omitted from the response.
2925 Read more about it in the
2926 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
2927 """
2928 ),
2929 ] = False,
2930 response_model_exclude_none: Annotated[
2931 bool,
2932 Doc(
2933 """
2934 Configuration passed to Pydantic to define if the response data should
2935 exclude fields set to `None`.
2937 This is much simpler (less smart) than `response_model_exclude_unset`
2938 and `response_model_exclude_defaults`. You probably want to use one of
2939 those two instead of this one, as those allow returning `None` values
2940 when it makes sense.
2942 Read more about it in the
2943 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_exclude_none).
2944 """
2945 ),
2946 ] = False,
2947 include_in_schema: Annotated[
2948 bool,
2949 Doc(
2950 """
2951 Include this *path operation* in the generated OpenAPI schema.
2953 This affects the generated OpenAPI (e.g. visible at `/docs`).
2955 Read more about it in the
2956 [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi).
2957 """
2958 ),
2959 ] = True,
2960 response_class: Annotated[
2961 type[Response],
2962 Doc(
2963 """
2964 Response class to be used for this *path operation*.
2966 This will not be used if you return a response directly.
2968 Read more about it in the
2969 [FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.tiangolo.com/advanced/custom-response/#redirectresponse).
2970 """
2971 ),
2972 ] = Default(JSONResponse),
2973 name: Annotated[
2974 str | None,
2975 Doc(
2976 """
2977 Name for this *path operation*. Only used internally.
2978 """
2979 ),
2980 ] = None,
2981 callbacks: Annotated[
2982 list[BaseRoute] | None,
2983 Doc(
2984 """
2985 List of *path operations* that will be used as OpenAPI callbacks.
2987 This is only for OpenAPI documentation, the callbacks won't be used
2988 directly.
2990 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
2992 Read more about it in the
2993 [FastAPI docs for OpenAPI Callbacks](https://fastapi.tiangolo.com/advanced/openapi-callbacks/).
2994 """
2995 ),
2996 ] = None,
2997 openapi_extra: Annotated[
2998 dict[str, Any] | None,
2999 Doc(
3000 """
3001 Extra metadata to be included in the OpenAPI schema for this *path
3002 operation*.
3004 Read more about it in the
3005 [FastAPI docs for Path Operation Advanced Configuration](https://fastapi.tiangolo.com/advanced/path-operation-advanced-configuration/#custom-openapi-path-operation-schema).
3006 """
3007 ),
3008 ] = None,
3009 generate_unique_id_function: Annotated[
3010 Callable[[routing.APIRoute], str],
3011 Doc(
3012 """
3013 Customize the function used to generate unique IDs for the *path
3014 operations* shown in the generated OpenAPI.
3016 This is particularly useful when automatically generating clients or
3017 SDKs for your API.
3019 Read more about it in the
3020 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function).
3021 """
3022 ),
3023 ] = Default(generate_unique_id),
3024 ) -> Callable[[DecoratedCallable], DecoratedCallable]:
3025 """
3026 Add a *path operation* using an HTTP DELETE operation.
3028 ## Example
3030 ```python
3031 from fastapi import FastAPI
3033 app = FastAPI()
3035 @app.delete("/items/{item_id}")
3036 def delete_item(item_id: str):
3037 return {"message": "Item deleted"}
3038 ```
3039 """
3040 return self.router.delete( 1a./:;9!#$bc=?@[%'()d]^_`*+,-
3041 path,
3042 response_model=response_model,
3043 status_code=status_code,
3044 tags=tags,
3045 dependencies=dependencies,
3046 summary=summary,
3047 description=description,
3048 response_description=response_description,
3049 responses=responses,
3050 deprecated=deprecated,
3051 operation_id=operation_id,
3052 response_model_include=response_model_include,
3053 response_model_exclude=response_model_exclude,
3054 response_model_by_alias=response_model_by_alias,
3055 response_model_exclude_unset=response_model_exclude_unset,
3056 response_model_exclude_defaults=response_model_exclude_defaults,
3057 response_model_exclude_none=response_model_exclude_none,
3058 include_in_schema=include_in_schema,
3059 response_class=response_class,
3060 name=name,
3061 callbacks=callbacks,
3062 openapi_extra=openapi_extra,
3063 generate_unique_id_function=generate_unique_id_function,
3064 )
3066 def options( 1abcd
3067 self,
3068 path: Annotated[
3069 str,
3070 Doc(
3071 """
3072 The URL path to be used for this *path operation*.
3074 For example, in `http://example.com/items`, the path is `/items`.
3075 """
3076 ),
3077 ],
3078 *,
3079 response_model: Annotated[
3080 Any,
3081 Doc(
3082 """
3083 The type to use for the response.
3085 It could be any valid Pydantic *field* type. So, it doesn't have to
3086 be a Pydantic model, it could be other things, like a `list`, `dict`,
3087 etc.
3089 It will be used for:
3091 * Documentation: the generated OpenAPI (and the UI at `/docs`) will
3092 show it as the response (JSON Schema).
3093 * Serialization: you could return an arbitrary object and the
3094 `response_model` would be used to serialize that object into the
3095 corresponding JSON.
3096 * Filtering: the JSON sent to the client will only contain the data
3097 (fields) defined in the `response_model`. If you returned an object
3098 that contains an attribute `password` but the `response_model` does
3099 not include that field, the JSON sent to the client would not have
3100 that `password`.
3101 * Validation: whatever you return will be serialized with the
3102 `response_model`, converting any data as necessary to generate the
3103 corresponding JSON. But if the data in the object returned is not
3104 valid, that would mean a violation of the contract with the client,
3105 so it's an error from the API developer. So, FastAPI will raise an
3106 error and return a 500 error code (Internal Server Error).
3108 Read more about it in the
3109 [FastAPI docs for Response Model](https://fastapi.tiangolo.com/tutorial/response-model/).
3110 """
3111 ),
3112 ] = Default(None),
3113 status_code: Annotated[
3114 int | None,
3115 Doc(
3116 """
3117 The default status code to be used for the response.
3119 You could override the status code by returning a response directly.
3121 Read more about it in the
3122 [FastAPI docs for Response Status Code](https://fastapi.tiangolo.com/tutorial/response-status-code/).
3123 """
3124 ),
3125 ] = None,
3126 tags: Annotated[
3127 list[str | Enum] | None,
3128 Doc(
3129 """
3130 A list of tags to be applied to the *path operation*.
3132 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
3134 Read more about it in the
3135 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/#tags).
3136 """
3137 ),
3138 ] = None,
3139 dependencies: Annotated[
3140 Sequence[Depends] | None,
3141 Doc(
3142 """
3143 A list of dependencies (using `Depends()`) to be applied to the
3144 *path operation*.
3146 Read more about it in the
3147 [FastAPI docs for Dependencies in path operation decorators](https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-in-path-operation-decorators/).
3148 """
3149 ),
3150 ] = None,
3151 summary: Annotated[
3152 str | None,
3153 Doc(
3154 """
3155 A summary for the *path operation*.
3157 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
3159 Read more about it in the
3160 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/).
3161 """
3162 ),
3163 ] = None,
3164 description: Annotated[
3165 str | None,
3166 Doc(
3167 """
3168 A description for the *path operation*.
3170 If not provided, it will be extracted automatically from the docstring
3171 of the *path operation function*.
3173 It can contain Markdown.
3175 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
3177 Read more about it in the
3178 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/).
3179 """
3180 ),
3181 ] = None,
3182 response_description: Annotated[
3183 str,
3184 Doc(
3185 """
3186 The description for the default response.
3188 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
3189 """
3190 ),
3191 ] = "Successful Response",
3192 responses: Annotated[
3193 dict[int | str, dict[str, Any]] | None,
3194 Doc(
3195 """
3196 Additional responses that could be returned by this *path operation*.
3198 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
3199 """
3200 ),
3201 ] = None,
3202 deprecated: Annotated[
3203 bool | None,
3204 Doc(
3205 """
3206 Mark this *path operation* as deprecated.
3208 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
3209 """
3210 ),
3211 ] = None,
3212 operation_id: Annotated[
3213 str | None,
3214 Doc(
3215 """
3216 Custom operation ID to be used by this *path operation*.
3218 By default, it is generated automatically.
3220 If you provide a custom operation ID, you need to make sure it is
3221 unique for the whole API.
3223 You can customize the
3224 operation ID generation with the parameter
3225 `generate_unique_id_function` in the `FastAPI` class.
3227 Read more about it in the
3228 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function).
3229 """
3230 ),
3231 ] = None,
3232 response_model_include: Annotated[
3233 IncEx | None,
3234 Doc(
3235 """
3236 Configuration passed to Pydantic to include only certain fields in the
3237 response data.
3239 Read more about it in the
3240 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude).
3241 """
3242 ),
3243 ] = None,
3244 response_model_exclude: Annotated[
3245 IncEx | None,
3246 Doc(
3247 """
3248 Configuration passed to Pydantic to exclude certain fields in the
3249 response data.
3251 Read more about it in the
3252 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude).
3253 """
3254 ),
3255 ] = None,
3256 response_model_by_alias: Annotated[
3257 bool,
3258 Doc(
3259 """
3260 Configuration passed to Pydantic to define if the response model
3261 should be serialized by alias when an alias is used.
3263 Read more about it in the
3264 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude).
3265 """
3266 ),
3267 ] = True,
3268 response_model_exclude_unset: Annotated[
3269 bool,
3270 Doc(
3271 """
3272 Configuration passed to Pydantic to define if the response data
3273 should have all the fields, including the ones that were not set and
3274 have their default values. This is different from
3275 `response_model_exclude_defaults` in that if the fields are set,
3276 they will be included in the response, even if the value is the same
3277 as the default.
3279 When `True`, default values are omitted from the response.
3281 Read more about it in the
3282 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
3283 """
3284 ),
3285 ] = False,
3286 response_model_exclude_defaults: Annotated[
3287 bool,
3288 Doc(
3289 """
3290 Configuration passed to Pydantic to define if the response data
3291 should have all the fields, including the ones that have the same value
3292 as the default. This is different from `response_model_exclude_unset`
3293 in that if the fields are set but contain the same default values,
3294 they will be excluded from the response.
3296 When `True`, default values are omitted from the response.
3298 Read more about it in the
3299 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
3300 """
3301 ),
3302 ] = False,
3303 response_model_exclude_none: Annotated[
3304 bool,
3305 Doc(
3306 """
3307 Configuration passed to Pydantic to define if the response data should
3308 exclude fields set to `None`.
3310 This is much simpler (less smart) than `response_model_exclude_unset`
3311 and `response_model_exclude_defaults`. You probably want to use one of
3312 those two instead of this one, as those allow returning `None` values
3313 when it makes sense.
3315 Read more about it in the
3316 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_exclude_none).
3317 """
3318 ),
3319 ] = False,
3320 include_in_schema: Annotated[
3321 bool,
3322 Doc(
3323 """
3324 Include this *path operation* in the generated OpenAPI schema.
3326 This affects the generated OpenAPI (e.g. visible at `/docs`).
3328 Read more about it in the
3329 [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi).
3330 """
3331 ),
3332 ] = True,
3333 response_class: Annotated[
3334 type[Response],
3335 Doc(
3336 """
3337 Response class to be used for this *path operation*.
3339 This will not be used if you return a response directly.
3341 Read more about it in the
3342 [FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.tiangolo.com/advanced/custom-response/#redirectresponse).
3343 """
3344 ),
3345 ] = Default(JSONResponse),
3346 name: Annotated[
3347 str | None,
3348 Doc(
3349 """
3350 Name for this *path operation*. Only used internally.
3351 """
3352 ),
3353 ] = None,
3354 callbacks: Annotated[
3355 list[BaseRoute] | None,
3356 Doc(
3357 """
3358 List of *path operations* that will be used as OpenAPI callbacks.
3360 This is only for OpenAPI documentation, the callbacks won't be used
3361 directly.
3363 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
3365 Read more about it in the
3366 [FastAPI docs for OpenAPI Callbacks](https://fastapi.tiangolo.com/advanced/openapi-callbacks/).
3367 """
3368 ),
3369 ] = None,
3370 openapi_extra: Annotated[
3371 dict[str, Any] | None,
3372 Doc(
3373 """
3374 Extra metadata to be included in the OpenAPI schema for this *path
3375 operation*.
3377 Read more about it in the
3378 [FastAPI docs for Path Operation Advanced Configuration](https://fastapi.tiangolo.com/advanced/path-operation-advanced-configuration/#custom-openapi-path-operation-schema).
3379 """
3380 ),
3381 ] = None,
3382 generate_unique_id_function: Annotated[
3383 Callable[[routing.APIRoute], str],
3384 Doc(
3385 """
3386 Customize the function used to generate unique IDs for the *path
3387 operations* shown in the generated OpenAPI.
3389 This is particularly useful when automatically generating clients or
3390 SDKs for your API.
3392 Read more about it in the
3393 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function).
3394 """
3395 ),
3396 ] = Default(generate_unique_id),
3397 ) -> Callable[[DecoratedCallable], DecoratedCallable]:
3398 """
3399 Add a *path operation* using an HTTP OPTIONS operation.
3401 ## Example
3403 ```python
3404 from fastapi import FastAPI
3406 app = FastAPI()
3408 @app.options("/items/")
3409 def get_item_options():
3410 return {"additions": ["Aji", "Guacamole"]}
3411 ```
3412 """
3413 return self.router.options( 1abcd
3414 path,
3415 response_model=response_model,
3416 status_code=status_code,
3417 tags=tags,
3418 dependencies=dependencies,
3419 summary=summary,
3420 description=description,
3421 response_description=response_description,
3422 responses=responses,
3423 deprecated=deprecated,
3424 operation_id=operation_id,
3425 response_model_include=response_model_include,
3426 response_model_exclude=response_model_exclude,
3427 response_model_by_alias=response_model_by_alias,
3428 response_model_exclude_unset=response_model_exclude_unset,
3429 response_model_exclude_defaults=response_model_exclude_defaults,
3430 response_model_exclude_none=response_model_exclude_none,
3431 include_in_schema=include_in_schema,
3432 response_class=response_class,
3433 name=name,
3434 callbacks=callbacks,
3435 openapi_extra=openapi_extra,
3436 generate_unique_id_function=generate_unique_id_function,
3437 )
3439 def head( 1abcd
3440 self,
3441 path: Annotated[
3442 str,
3443 Doc(
3444 """
3445 The URL path to be used for this *path operation*.
3447 For example, in `http://example.com/items`, the path is `/items`.
3448 """
3449 ),
3450 ],
3451 *,
3452 response_model: Annotated[
3453 Any,
3454 Doc(
3455 """
3456 The type to use for the response.
3458 It could be any valid Pydantic *field* type. So, it doesn't have to
3459 be a Pydantic model, it could be other things, like a `list`, `dict`,
3460 etc.
3462 It will be used for:
3464 * Documentation: the generated OpenAPI (and the UI at `/docs`) will
3465 show it as the response (JSON Schema).
3466 * Serialization: you could return an arbitrary object and the
3467 `response_model` would be used to serialize that object into the
3468 corresponding JSON.
3469 * Filtering: the JSON sent to the client will only contain the data
3470 (fields) defined in the `response_model`. If you returned an object
3471 that contains an attribute `password` but the `response_model` does
3472 not include that field, the JSON sent to the client would not have
3473 that `password`.
3474 * Validation: whatever you return will be serialized with the
3475 `response_model`, converting any data as necessary to generate the
3476 corresponding JSON. But if the data in the object returned is not
3477 valid, that would mean a violation of the contract with the client,
3478 so it's an error from the API developer. So, FastAPI will raise an
3479 error and return a 500 error code (Internal Server Error).
3481 Read more about it in the
3482 [FastAPI docs for Response Model](https://fastapi.tiangolo.com/tutorial/response-model/).
3483 """
3484 ),
3485 ] = Default(None),
3486 status_code: Annotated[
3487 int | None,
3488 Doc(
3489 """
3490 The default status code to be used for the response.
3492 You could override the status code by returning a response directly.
3494 Read more about it in the
3495 [FastAPI docs for Response Status Code](https://fastapi.tiangolo.com/tutorial/response-status-code/).
3496 """
3497 ),
3498 ] = None,
3499 tags: Annotated[
3500 list[str | Enum] | None,
3501 Doc(
3502 """
3503 A list of tags to be applied to the *path operation*.
3505 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
3507 Read more about it in the
3508 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/#tags).
3509 """
3510 ),
3511 ] = None,
3512 dependencies: Annotated[
3513 Sequence[Depends] | None,
3514 Doc(
3515 """
3516 A list of dependencies (using `Depends()`) to be applied to the
3517 *path operation*.
3519 Read more about it in the
3520 [FastAPI docs for Dependencies in path operation decorators](https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-in-path-operation-decorators/).
3521 """
3522 ),
3523 ] = None,
3524 summary: Annotated[
3525 str | None,
3526 Doc(
3527 """
3528 A summary for the *path operation*.
3530 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
3532 Read more about it in the
3533 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/).
3534 """
3535 ),
3536 ] = None,
3537 description: Annotated[
3538 str | None,
3539 Doc(
3540 """
3541 A description for the *path operation*.
3543 If not provided, it will be extracted automatically from the docstring
3544 of the *path operation function*.
3546 It can contain Markdown.
3548 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
3550 Read more about it in the
3551 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/).
3552 """
3553 ),
3554 ] = None,
3555 response_description: Annotated[
3556 str,
3557 Doc(
3558 """
3559 The description for the default response.
3561 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
3562 """
3563 ),
3564 ] = "Successful Response",
3565 responses: Annotated[
3566 dict[int | str, dict[str, Any]] | None,
3567 Doc(
3568 """
3569 Additional responses that could be returned by this *path operation*.
3571 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
3572 """
3573 ),
3574 ] = None,
3575 deprecated: Annotated[
3576 bool | None,
3577 Doc(
3578 """
3579 Mark this *path operation* as deprecated.
3581 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
3582 """
3583 ),
3584 ] = None,
3585 operation_id: Annotated[
3586 str | None,
3587 Doc(
3588 """
3589 Custom operation ID to be used by this *path operation*.
3591 By default, it is generated automatically.
3593 If you provide a custom operation ID, you need to make sure it is
3594 unique for the whole API.
3596 You can customize the
3597 operation ID generation with the parameter
3598 `generate_unique_id_function` in the `FastAPI` class.
3600 Read more about it in the
3601 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function).
3602 """
3603 ),
3604 ] = None,
3605 response_model_include: Annotated[
3606 IncEx | None,
3607 Doc(
3608 """
3609 Configuration passed to Pydantic to include only certain fields in the
3610 response data.
3612 Read more about it in the
3613 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude).
3614 """
3615 ),
3616 ] = None,
3617 response_model_exclude: Annotated[
3618 IncEx | None,
3619 Doc(
3620 """
3621 Configuration passed to Pydantic to exclude certain fields in the
3622 response data.
3624 Read more about it in the
3625 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude).
3626 """
3627 ),
3628 ] = None,
3629 response_model_by_alias: Annotated[
3630 bool,
3631 Doc(
3632 """
3633 Configuration passed to Pydantic to define if the response model
3634 should be serialized by alias when an alias is used.
3636 Read more about it in the
3637 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude).
3638 """
3639 ),
3640 ] = True,
3641 response_model_exclude_unset: Annotated[
3642 bool,
3643 Doc(
3644 """
3645 Configuration passed to Pydantic to define if the response data
3646 should have all the fields, including the ones that were not set and
3647 have their default values. This is different from
3648 `response_model_exclude_defaults` in that if the fields are set,
3649 they will be included in the response, even if the value is the same
3650 as the default.
3652 When `True`, default values are omitted from the response.
3654 Read more about it in the
3655 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
3656 """
3657 ),
3658 ] = False,
3659 response_model_exclude_defaults: Annotated[
3660 bool,
3661 Doc(
3662 """
3663 Configuration passed to Pydantic to define if the response data
3664 should have all the fields, including the ones that have the same value
3665 as the default. This is different from `response_model_exclude_unset`
3666 in that if the fields are set but contain the same default values,
3667 they will be excluded from the response.
3669 When `True`, default values are omitted from the response.
3671 Read more about it in the
3672 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
3673 """
3674 ),
3675 ] = False,
3676 response_model_exclude_none: Annotated[
3677 bool,
3678 Doc(
3679 """
3680 Configuration passed to Pydantic to define if the response data should
3681 exclude fields set to `None`.
3683 This is much simpler (less smart) than `response_model_exclude_unset`
3684 and `response_model_exclude_defaults`. You probably want to use one of
3685 those two instead of this one, as those allow returning `None` values
3686 when it makes sense.
3688 Read more about it in the
3689 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_exclude_none).
3690 """
3691 ),
3692 ] = False,
3693 include_in_schema: Annotated[
3694 bool,
3695 Doc(
3696 """
3697 Include this *path operation* in the generated OpenAPI schema.
3699 This affects the generated OpenAPI (e.g. visible at `/docs`).
3701 Read more about it in the
3702 [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi).
3703 """
3704 ),
3705 ] = True,
3706 response_class: Annotated[
3707 type[Response],
3708 Doc(
3709 """
3710 Response class to be used for this *path operation*.
3712 This will not be used if you return a response directly.
3714 Read more about it in the
3715 [FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.tiangolo.com/advanced/custom-response/#redirectresponse).
3716 """
3717 ),
3718 ] = Default(JSONResponse),
3719 name: Annotated[
3720 str | None,
3721 Doc(
3722 """
3723 Name for this *path operation*. Only used internally.
3724 """
3725 ),
3726 ] = None,
3727 callbacks: Annotated[
3728 list[BaseRoute] | None,
3729 Doc(
3730 """
3731 List of *path operations* that will be used as OpenAPI callbacks.
3733 This is only for OpenAPI documentation, the callbacks won't be used
3734 directly.
3736 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
3738 Read more about it in the
3739 [FastAPI docs for OpenAPI Callbacks](https://fastapi.tiangolo.com/advanced/openapi-callbacks/).
3740 """
3741 ),
3742 ] = None,
3743 openapi_extra: Annotated[
3744 dict[str, Any] | None,
3745 Doc(
3746 """
3747 Extra metadata to be included in the OpenAPI schema for this *path
3748 operation*.
3750 Read more about it in the
3751 [FastAPI docs for Path Operation Advanced Configuration](https://fastapi.tiangolo.com/advanced/path-operation-advanced-configuration/#custom-openapi-path-operation-schema).
3752 """
3753 ),
3754 ] = None,
3755 generate_unique_id_function: Annotated[
3756 Callable[[routing.APIRoute], str],
3757 Doc(
3758 """
3759 Customize the function used to generate unique IDs for the *path
3760 operations* shown in the generated OpenAPI.
3762 This is particularly useful when automatically generating clients or
3763 SDKs for your API.
3765 Read more about it in the
3766 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function).
3767 """
3768 ),
3769 ] = Default(generate_unique_id),
3770 ) -> Callable[[DecoratedCallable], DecoratedCallable]:
3771 """
3772 Add a *path operation* using an HTTP HEAD operation.
3774 ## Example
3776 ```python
3777 from fastapi import FastAPI, Response
3779 app = FastAPI()
3781 @app.head("/items/", status_code=204)
3782 def get_items_headers(response: Response):
3783 response.headers["X-Cat-Dog"] = "Alone in the world"
3784 ```
3785 """
3786 return self.router.head( 1abcd
3787 path,
3788 response_model=response_model,
3789 status_code=status_code,
3790 tags=tags,
3791 dependencies=dependencies,
3792 summary=summary,
3793 description=description,
3794 response_description=response_description,
3795 responses=responses,
3796 deprecated=deprecated,
3797 operation_id=operation_id,
3798 response_model_include=response_model_include,
3799 response_model_exclude=response_model_exclude,
3800 response_model_by_alias=response_model_by_alias,
3801 response_model_exclude_unset=response_model_exclude_unset,
3802 response_model_exclude_defaults=response_model_exclude_defaults,
3803 response_model_exclude_none=response_model_exclude_none,
3804 include_in_schema=include_in_schema,
3805 response_class=response_class,
3806 name=name,
3807 callbacks=callbacks,
3808 openapi_extra=openapi_extra,
3809 generate_unique_id_function=generate_unique_id_function,
3810 )
3812 def patch( 1abcd
3813 self,
3814 path: Annotated[
3815 str,
3816 Doc(
3817 """
3818 The URL path to be used for this *path operation*.
3820 For example, in `http://example.com/items`, the path is `/items`.
3821 """
3822 ),
3823 ],
3824 *,
3825 response_model: Annotated[
3826 Any,
3827 Doc(
3828 """
3829 The type to use for the response.
3831 It could be any valid Pydantic *field* type. So, it doesn't have to
3832 be a Pydantic model, it could be other things, like a `list`, `dict`,
3833 etc.
3835 It will be used for:
3837 * Documentation: the generated OpenAPI (and the UI at `/docs`) will
3838 show it as the response (JSON Schema).
3839 * Serialization: you could return an arbitrary object and the
3840 `response_model` would be used to serialize that object into the
3841 corresponding JSON.
3842 * Filtering: the JSON sent to the client will only contain the data
3843 (fields) defined in the `response_model`. If you returned an object
3844 that contains an attribute `password` but the `response_model` does
3845 not include that field, the JSON sent to the client would not have
3846 that `password`.
3847 * Validation: whatever you return will be serialized with the
3848 `response_model`, converting any data as necessary to generate the
3849 corresponding JSON. But if the data in the object returned is not
3850 valid, that would mean a violation of the contract with the client,
3851 so it's an error from the API developer. So, FastAPI will raise an
3852 error and return a 500 error code (Internal Server Error).
3854 Read more about it in the
3855 [FastAPI docs for Response Model](https://fastapi.tiangolo.com/tutorial/response-model/).
3856 """
3857 ),
3858 ] = Default(None),
3859 status_code: Annotated[
3860 int | None,
3861 Doc(
3862 """
3863 The default status code to be used for the response.
3865 You could override the status code by returning a response directly.
3867 Read more about it in the
3868 [FastAPI docs for Response Status Code](https://fastapi.tiangolo.com/tutorial/response-status-code/).
3869 """
3870 ),
3871 ] = None,
3872 tags: Annotated[
3873 list[str | Enum] | None,
3874 Doc(
3875 """
3876 A list of tags to be applied to the *path operation*.
3878 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
3880 Read more about it in the
3881 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/#tags).
3882 """
3883 ),
3884 ] = None,
3885 dependencies: Annotated[
3886 Sequence[Depends] | None,
3887 Doc(
3888 """
3889 A list of dependencies (using `Depends()`) to be applied to the
3890 *path operation*.
3892 Read more about it in the
3893 [FastAPI docs for Dependencies in path operation decorators](https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-in-path-operation-decorators/).
3894 """
3895 ),
3896 ] = None,
3897 summary: Annotated[
3898 str | None,
3899 Doc(
3900 """
3901 A summary for the *path operation*.
3903 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
3905 Read more about it in the
3906 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/).
3907 """
3908 ),
3909 ] = None,
3910 description: Annotated[
3911 str | None,
3912 Doc(
3913 """
3914 A description for the *path operation*.
3916 If not provided, it will be extracted automatically from the docstring
3917 of the *path operation function*.
3919 It can contain Markdown.
3921 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
3923 Read more about it in the
3924 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/).
3925 """
3926 ),
3927 ] = None,
3928 response_description: Annotated[
3929 str,
3930 Doc(
3931 """
3932 The description for the default response.
3934 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
3935 """
3936 ),
3937 ] = "Successful Response",
3938 responses: Annotated[
3939 dict[int | str, dict[str, Any]] | None,
3940 Doc(
3941 """
3942 Additional responses that could be returned by this *path operation*.
3944 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
3945 """
3946 ),
3947 ] = None,
3948 deprecated: Annotated[
3949 bool | None,
3950 Doc(
3951 """
3952 Mark this *path operation* as deprecated.
3954 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
3955 """
3956 ),
3957 ] = None,
3958 operation_id: Annotated[
3959 str | None,
3960 Doc(
3961 """
3962 Custom operation ID to be used by this *path operation*.
3964 By default, it is generated automatically.
3966 If you provide a custom operation ID, you need to make sure it is
3967 unique for the whole API.
3969 You can customize the
3970 operation ID generation with the parameter
3971 `generate_unique_id_function` in the `FastAPI` class.
3973 Read more about it in the
3974 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function).
3975 """
3976 ),
3977 ] = None,
3978 response_model_include: Annotated[
3979 IncEx | None,
3980 Doc(
3981 """
3982 Configuration passed to Pydantic to include only certain fields in the
3983 response data.
3985 Read more about it in the
3986 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude).
3987 """
3988 ),
3989 ] = None,
3990 response_model_exclude: Annotated[
3991 IncEx | None,
3992 Doc(
3993 """
3994 Configuration passed to Pydantic to exclude certain fields in the
3995 response data.
3997 Read more about it in the
3998 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude).
3999 """
4000 ),
4001 ] = None,
4002 response_model_by_alias: Annotated[
4003 bool,
4004 Doc(
4005 """
4006 Configuration passed to Pydantic to define if the response model
4007 should be serialized by alias when an alias is used.
4009 Read more about it in the
4010 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude).
4011 """
4012 ),
4013 ] = True,
4014 response_model_exclude_unset: Annotated[
4015 bool,
4016 Doc(
4017 """
4018 Configuration passed to Pydantic to define if the response data
4019 should have all the fields, including the ones that were not set and
4020 have their default values. This is different from
4021 `response_model_exclude_defaults` in that if the fields are set,
4022 they will be included in the response, even if the value is the same
4023 as the default.
4025 When `True`, default values are omitted from the response.
4027 Read more about it in the
4028 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
4029 """
4030 ),
4031 ] = False,
4032 response_model_exclude_defaults: Annotated[
4033 bool,
4034 Doc(
4035 """
4036 Configuration passed to Pydantic to define if the response data
4037 should have all the fields, including the ones that have the same value
4038 as the default. This is different from `response_model_exclude_unset`
4039 in that if the fields are set but contain the same default values,
4040 they will be excluded from the response.
4042 When `True`, default values are omitted from the response.
4044 Read more about it in the
4045 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
4046 """
4047 ),
4048 ] = False,
4049 response_model_exclude_none: Annotated[
4050 bool,
4051 Doc(
4052 """
4053 Configuration passed to Pydantic to define if the response data should
4054 exclude fields set to `None`.
4056 This is much simpler (less smart) than `response_model_exclude_unset`
4057 and `response_model_exclude_defaults`. You probably want to use one of
4058 those two instead of this one, as those allow returning `None` values
4059 when it makes sense.
4061 Read more about it in the
4062 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_exclude_none).
4063 """
4064 ),
4065 ] = False,
4066 include_in_schema: Annotated[
4067 bool,
4068 Doc(
4069 """
4070 Include this *path operation* in the generated OpenAPI schema.
4072 This affects the generated OpenAPI (e.g. visible at `/docs`).
4074 Read more about it in the
4075 [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi).
4076 """
4077 ),
4078 ] = True,
4079 response_class: Annotated[
4080 type[Response],
4081 Doc(
4082 """
4083 Response class to be used for this *path operation*.
4085 This will not be used if you return a response directly.
4087 Read more about it in the
4088 [FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.tiangolo.com/advanced/custom-response/#redirectresponse).
4089 """
4090 ),
4091 ] = Default(JSONResponse),
4092 name: Annotated[
4093 str | None,
4094 Doc(
4095 """
4096 Name for this *path operation*. Only used internally.
4097 """
4098 ),
4099 ] = None,
4100 callbacks: Annotated[
4101 list[BaseRoute] | None,
4102 Doc(
4103 """
4104 List of *path operations* that will be used as OpenAPI callbacks.
4106 This is only for OpenAPI documentation, the callbacks won't be used
4107 directly.
4109 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
4111 Read more about it in the
4112 [FastAPI docs for OpenAPI Callbacks](https://fastapi.tiangolo.com/advanced/openapi-callbacks/).
4113 """
4114 ),
4115 ] = None,
4116 openapi_extra: Annotated[
4117 dict[str, Any] | None,
4118 Doc(
4119 """
4120 Extra metadata to be included in the OpenAPI schema for this *path
4121 operation*.
4123 Read more about it in the
4124 [FastAPI docs for Path Operation Advanced Configuration](https://fastapi.tiangolo.com/advanced/path-operation-advanced-configuration/#custom-openapi-path-operation-schema).
4125 """
4126 ),
4127 ] = None,
4128 generate_unique_id_function: Annotated[
4129 Callable[[routing.APIRoute], str],
4130 Doc(
4131 """
4132 Customize the function used to generate unique IDs for the *path
4133 operations* shown in the generated OpenAPI.
4135 This is particularly useful when automatically generating clients or
4136 SDKs for your API.
4138 Read more about it in the
4139 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function).
4140 """
4141 ),
4142 ] = Default(generate_unique_id),
4143 ) -> Callable[[DecoratedCallable], DecoratedCallable]:
4144 """
4145 Add a *path operation* using an HTTP PATCH operation.
4147 ## Example
4149 ```python
4150 from fastapi import FastAPI
4151 from pydantic import BaseModel
4153 class Item(BaseModel):
4154 name: str
4155 description: str | None = None
4157 app = FastAPI()
4159 @app.patch("/items/")
4160 def update_item(item: Item):
4161 return {"message": "Item updated in place"}
4162 ```
4163 """
4164 return self.router.patch( 2a wdxd9 ! # $ b c +d% ' ( ) d ye* + , -
4165 path,
4166 response_model=response_model,
4167 status_code=status_code,
4168 tags=tags,
4169 dependencies=dependencies,
4170 summary=summary,
4171 description=description,
4172 response_description=response_description,
4173 responses=responses,
4174 deprecated=deprecated,
4175 operation_id=operation_id,
4176 response_model_include=response_model_include,
4177 response_model_exclude=response_model_exclude,
4178 response_model_by_alias=response_model_by_alias,
4179 response_model_exclude_unset=response_model_exclude_unset,
4180 response_model_exclude_defaults=response_model_exclude_defaults,
4181 response_model_exclude_none=response_model_exclude_none,
4182 include_in_schema=include_in_schema,
4183 response_class=response_class,
4184 name=name,
4185 callbacks=callbacks,
4186 openapi_extra=openapi_extra,
4187 generate_unique_id_function=generate_unique_id_function,
4188 )
4190 def trace( 1abcd
4191 self,
4192 path: Annotated[
4193 str,
4194 Doc(
4195 """
4196 The URL path to be used for this *path operation*.
4198 For example, in `http://example.com/items`, the path is `/items`.
4199 """
4200 ),
4201 ],
4202 *,
4203 response_model: Annotated[
4204 Any,
4205 Doc(
4206 """
4207 The type to use for the response.
4209 It could be any valid Pydantic *field* type. So, it doesn't have to
4210 be a Pydantic model, it could be other things, like a `list`, `dict`,
4211 etc.
4213 It will be used for:
4215 * Documentation: the generated OpenAPI (and the UI at `/docs`) will
4216 show it as the response (JSON Schema).
4217 * Serialization: you could return an arbitrary object and the
4218 `response_model` would be used to serialize that object into the
4219 corresponding JSON.
4220 * Filtering: the JSON sent to the client will only contain the data
4221 (fields) defined in the `response_model`. If you returned an object
4222 that contains an attribute `password` but the `response_model` does
4223 not include that field, the JSON sent to the client would not have
4224 that `password`.
4225 * Validation: whatever you return will be serialized with the
4226 `response_model`, converting any data as necessary to generate the
4227 corresponding JSON. But if the data in the object returned is not
4228 valid, that would mean a violation of the contract with the client,
4229 so it's an error from the API developer. So, FastAPI will raise an
4230 error and return a 500 error code (Internal Server Error).
4232 Read more about it in the
4233 [FastAPI docs for Response Model](https://fastapi.tiangolo.com/tutorial/response-model/).
4234 """
4235 ),
4236 ] = Default(None),
4237 status_code: Annotated[
4238 int | None,
4239 Doc(
4240 """
4241 The default status code to be used for the response.
4243 You could override the status code by returning a response directly.
4245 Read more about it in the
4246 [FastAPI docs for Response Status Code](https://fastapi.tiangolo.com/tutorial/response-status-code/).
4247 """
4248 ),
4249 ] = None,
4250 tags: Annotated[
4251 list[str | Enum] | None,
4252 Doc(
4253 """
4254 A list of tags to be applied to the *path operation*.
4256 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
4258 Read more about it in the
4259 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/#tags).
4260 """
4261 ),
4262 ] = None,
4263 dependencies: Annotated[
4264 Sequence[Depends] | None,
4265 Doc(
4266 """
4267 A list of dependencies (using `Depends()`) to be applied to the
4268 *path operation*.
4270 Read more about it in the
4271 [FastAPI docs for Dependencies in path operation decorators](https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-in-path-operation-decorators/).
4272 """
4273 ),
4274 ] = None,
4275 summary: Annotated[
4276 str | None,
4277 Doc(
4278 """
4279 A summary for the *path operation*.
4281 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
4283 Read more about it in the
4284 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/).
4285 """
4286 ),
4287 ] = None,
4288 description: Annotated[
4289 str | None,
4290 Doc(
4291 """
4292 A description for the *path operation*.
4294 If not provided, it will be extracted automatically from the docstring
4295 of the *path operation function*.
4297 It can contain Markdown.
4299 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
4301 Read more about it in the
4302 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/).
4303 """
4304 ),
4305 ] = None,
4306 response_description: Annotated[
4307 str,
4308 Doc(
4309 """
4310 The description for the default response.
4312 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
4313 """
4314 ),
4315 ] = "Successful Response",
4316 responses: Annotated[
4317 dict[int | str, dict[str, Any]] | None,
4318 Doc(
4319 """
4320 Additional responses that could be returned by this *path operation*.
4322 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
4323 """
4324 ),
4325 ] = None,
4326 deprecated: Annotated[
4327 bool | None,
4328 Doc(
4329 """
4330 Mark this *path operation* as deprecated.
4332 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
4333 """
4334 ),
4335 ] = None,
4336 operation_id: Annotated[
4337 str | None,
4338 Doc(
4339 """
4340 Custom operation ID to be used by this *path operation*.
4342 By default, it is generated automatically.
4344 If you provide a custom operation ID, you need to make sure it is
4345 unique for the whole API.
4347 You can customize the
4348 operation ID generation with the parameter
4349 `generate_unique_id_function` in the `FastAPI` class.
4351 Read more about it in the
4352 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function).
4353 """
4354 ),
4355 ] = None,
4356 response_model_include: Annotated[
4357 IncEx | None,
4358 Doc(
4359 """
4360 Configuration passed to Pydantic to include only certain fields in the
4361 response data.
4363 Read more about it in the
4364 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude).
4365 """
4366 ),
4367 ] = None,
4368 response_model_exclude: Annotated[
4369 IncEx | None,
4370 Doc(
4371 """
4372 Configuration passed to Pydantic to exclude certain fields in the
4373 response data.
4375 Read more about it in the
4376 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude).
4377 """
4378 ),
4379 ] = None,
4380 response_model_by_alias: Annotated[
4381 bool,
4382 Doc(
4383 """
4384 Configuration passed to Pydantic to define if the response model
4385 should be serialized by alias when an alias is used.
4387 Read more about it in the
4388 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude).
4389 """
4390 ),
4391 ] = True,
4392 response_model_exclude_unset: Annotated[
4393 bool,
4394 Doc(
4395 """
4396 Configuration passed to Pydantic to define if the response data
4397 should have all the fields, including the ones that were not set and
4398 have their default values. This is different from
4399 `response_model_exclude_defaults` in that if the fields are set,
4400 they will be included in the response, even if the value is the same
4401 as the default.
4403 When `True`, default values are omitted from the response.
4405 Read more about it in the
4406 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
4407 """
4408 ),
4409 ] = False,
4410 response_model_exclude_defaults: Annotated[
4411 bool,
4412 Doc(
4413 """
4414 Configuration passed to Pydantic to define if the response data
4415 should have all the fields, including the ones that have the same value
4416 as the default. This is different from `response_model_exclude_unset`
4417 in that if the fields are set but contain the same default values,
4418 they will be excluded from the response.
4420 When `True`, default values are omitted from the response.
4422 Read more about it in the
4423 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
4424 """
4425 ),
4426 ] = False,
4427 response_model_exclude_none: Annotated[
4428 bool,
4429 Doc(
4430 """
4431 Configuration passed to Pydantic to define if the response data should
4432 exclude fields set to `None`.
4434 This is much simpler (less smart) than `response_model_exclude_unset`
4435 and `response_model_exclude_defaults`. You probably want to use one of
4436 those two instead of this one, as those allow returning `None` values
4437 when it makes sense.
4439 Read more about it in the
4440 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_exclude_none).
4441 """
4442 ),
4443 ] = False,
4444 include_in_schema: Annotated[
4445 bool,
4446 Doc(
4447 """
4448 Include this *path operation* in the generated OpenAPI schema.
4450 This affects the generated OpenAPI (e.g. visible at `/docs`).
4452 Read more about it in the
4453 [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi).
4454 """
4455 ),
4456 ] = True,
4457 response_class: Annotated[
4458 type[Response],
4459 Doc(
4460 """
4461 Response class to be used for this *path operation*.
4463 This will not be used if you return a response directly.
4465 Read more about it in the
4466 [FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.tiangolo.com/advanced/custom-response/#redirectresponse).
4467 """
4468 ),
4469 ] = Default(JSONResponse),
4470 name: Annotated[
4471 str | None,
4472 Doc(
4473 """
4474 Name for this *path operation*. Only used internally.
4475 """
4476 ),
4477 ] = None,
4478 callbacks: Annotated[
4479 list[BaseRoute] | None,
4480 Doc(
4481 """
4482 List of *path operations* that will be used as OpenAPI callbacks.
4484 This is only for OpenAPI documentation, the callbacks won't be used
4485 directly.
4487 It will be added to the generated OpenAPI (e.g. visible at `/docs`).
4489 Read more about it in the
4490 [FastAPI docs for OpenAPI Callbacks](https://fastapi.tiangolo.com/advanced/openapi-callbacks/).
4491 """
4492 ),
4493 ] = None,
4494 openapi_extra: Annotated[
4495 dict[str, Any] | None,
4496 Doc(
4497 """
4498 Extra metadata to be included in the OpenAPI schema for this *path
4499 operation*.
4501 Read more about it in the
4502 [FastAPI docs for Path Operation Advanced Configuration](https://fastapi.tiangolo.com/advanced/path-operation-advanced-configuration/#custom-openapi-path-operation-schema).
4503 """
4504 ),
4505 ] = None,
4506 generate_unique_id_function: Annotated[
4507 Callable[[routing.APIRoute], str],
4508 Doc(
4509 """
4510 Customize the function used to generate unique IDs for the *path
4511 operations* shown in the generated OpenAPI.
4513 This is particularly useful when automatically generating clients or
4514 SDKs for your API.
4516 Read more about it in the
4517 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function).
4518 """
4519 ),
4520 ] = Default(generate_unique_id),
4521 ) -> Callable[[DecoratedCallable], DecoratedCallable]:
4522 """
4523 Add a *path operation* using an HTTP TRACE operation.
4525 ## Example
4527 ```python
4528 from fastapi import FastAPI
4530 app = FastAPI()
4532 @app.trace("/items/{item_id}")
4533 def trace_item(item_id: str):
4534 return None
4535 ```
4536 """
4537 return self.router.trace( 1abcd
4538 path,
4539 response_model=response_model,
4540 status_code=status_code,
4541 tags=tags,
4542 dependencies=dependencies,
4543 summary=summary,
4544 description=description,
4545 response_description=response_description,
4546 responses=responses,
4547 deprecated=deprecated,
4548 operation_id=operation_id,
4549 response_model_include=response_model_include,
4550 response_model_exclude=response_model_exclude,
4551 response_model_by_alias=response_model_by_alias,
4552 response_model_exclude_unset=response_model_exclude_unset,
4553 response_model_exclude_defaults=response_model_exclude_defaults,
4554 response_model_exclude_none=response_model_exclude_none,
4555 include_in_schema=include_in_schema,
4556 response_class=response_class,
4557 name=name,
4558 callbacks=callbacks,
4559 openapi_extra=openapi_extra,
4560 generate_unique_id_function=generate_unique_id_function,
4561 )
4563 def websocket_route( 1abcd
4564 self, path: str, name: str | None = None
4565 ) -> Callable[[DecoratedCallable], DecoratedCallable]:
4566 def decorator(func: DecoratedCallable) -> DecoratedCallable: 1abcd
4567 self.router.add_websocket_route(path, func, name=name) 1abcd
4568 return func 1abcd
4570 return decorator 1abcd
4572 @deprecated( 1abcd
4573 """
4574 on_event is deprecated, use lifespan event handlers instead.
4576 Read more about it in the
4577 [FastAPI docs for Lifespan Events](https://fastapi.tiangolo.com/advanced/events/).
4578 """
4579 )
4580 def on_event( 1abcd
4581 self,
4582 event_type: Annotated[
4583 str,
4584 Doc(
4585 """
4586 The type of event. `startup` or `shutdown`.
4587 """
4588 ),
4589 ],
4590 ) -> Callable[[DecoratedCallable], DecoratedCallable]:
4591 """
4592 Add an event handler for the application.
4594 `on_event` is deprecated, use `lifespan` event handlers instead.
4596 Read more about it in the
4597 [FastAPI docs for Lifespan Events](https://fastapi.tiangolo.com/advanced/events/#alternative-events-deprecated).
4598 """
4599 return self.router.on_event(event_type) 3eb { Gd Hd Id . / : ; 9 ! # $ ib cCbdCbob | ?d @d [d = ? @ [ % ' ( ) sb yb } De Ee ] ^ _ ` * + , - Cb
4601 def middleware( 1abcd
4602 self,
4603 middleware_type: Annotated[
4604 str,
4605 Doc(
4606 """
4607 The type of middleware. Currently only supports `http`.
4608 """
4609 ),
4610 ],
4611 ) -> Callable[[DecoratedCallable], DecoratedCallable]:
4612 """
4613 Add a middleware to the application.
4615 Read more about it in the
4616 [FastAPI docs for Middleware](https://fastapi.tiangolo.com/tutorial/middleware/).
4618 ## Example
4620 ```python
4621 import time
4622 from typing import Awaitable, Callable
4624 from fastapi import FastAPI, Request, Response
4626 app = FastAPI()
4629 @app.middleware("http")
4630 async def add_process_time_header(
4631 request: Request, call_next: Callable[[Request], Awaitable[Response]]
4632 ) -> Response:
4633 start_time = time.time()
4634 response = await call_next(request)
4635 process_time = time.time() - start_time
4636 response.headers["X-Process-Time"] = str(process_time)
4637 return response
4638 ```
4639 """
4641 def decorator(func: DecoratedCallable) -> DecoratedCallable: 1abcd
4642 self.add_middleware(BaseHTTPMiddleware, dispatch=func) 1abcd
4643 return func 1abcd
4645 return decorator 1abcd
4647 def exception_handler( 1abcd
4648 self,
4649 exc_class_or_status_code: Annotated[
4650 int | type[Exception],
4651 Doc(
4652 """
4653 The Exception class this would handle, or a status code.
4654 """
4655 ),
4656 ],
4657 ) -> Callable[[DecoratedCallable], DecoratedCallable]:
4658 """
4659 Add an exception handler to the app.
4661 Read more about it in the
4662 [FastAPI docs for Handling Errors](https://fastapi.tiangolo.com/tutorial/handling-errors/).
4664 ## Example
4666 ```python
4667 from fastapi import FastAPI, Request
4668 from fastapi.responses import JSONResponse
4671 class UnicornException(Exception):
4672 def __init__(self, name: str):
4673 self.name = name
4676 app = FastAPI()
4679 @app.exception_handler(UnicornException)
4680 async def unicorn_exception_handler(request: Request, exc: UnicornException):
4681 return JSONResponse(
4682 status_code=418,
4683 content={"message": f"Oops! {exc.name} did something. There goes a rainbow..."},
4684 )
4685 ```
4686 """
4688 def decorator(func: DecoratedCallable) -> DecoratedCallable: 1abcd
4689 self.add_exception_handler(exc_class_or_status_code, func) 1abcd
4690 return func 1abcd
4692 return decorator 1abcd