From 75bbb5f4d52321eed41337cc463aa036748a1352 Mon Sep 17 00:00:00 2001 From: Jon Leech Date: Fri, 29 Apr 2016 14:53:46 +0200 Subject: [PATCH 1/4] Change log for April 29, 2016 Vulkan 1.0.12 spec update: * Bump API patch number and header version number to 12 for this update. Github Issues: * Change valid usage statements intended to be "sub-points" to be actual sub-points (public issue 66). * Replace double negation in description of slink:VkRenderPassBeginInfo::pname:pClearValues (based on public merge 142). * Cleanup minor typos in spec, ref pages and XML, including those proposed in public pull requests 144, 150, 151, 167, 168, 181, and 186. * Use *strict subset* in describing the partial order of memory property types for slink:VkMemoryType, and update the style guide accordingly (public issue 190). * Fix various "a image" -> "an image" typos (public issue 191). * Note in the <> and <> sections that structures defined by extensions which may be passed in structure chains using the ptext:pNext member must: include initial ptext:sType and ptext:pNext members (public issue 192). Internal Issues: * Remove duplicate language from the description of the pname:fence parameter to flink:vkQueueSubmit and improve validity language (internal issue 91). * Added documentation for "optional" attribute to XML readme.tex/pdf (internal issue 149). * Clarify the host-side data validity rules and behavior of flink:vkFlushMappedMemoryRanges and flink:vkInvalidateMappedMemoryRanges (internal issue 266). Other Commits: * Added clarification to flink:vkCmdFillBuffer regarding the use of ename:VK_WHOLE_SIZE. * Fixed and documented implementation of "validextensionstructs" attribute. in XML processing scripts and readme.tex/pdf. * Add missing validity statements to flink:vkResetEvent and flink:vkCmdResetEvent. * Fix validity for the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag. Correct all the draw/dispatch commands to mention optimally tiled images as well as linear tiled images, and say image VIEWS instead of images. Add validity statement to flink:vkCmdBlitImage * Replace the {apiname} macro with hardcoded "Vulkan", now that we've committed to that name. * Add the VK_AMD_rasterization_order extension to vk.xml. --- ChangeLog.txt | 54 + doc/specs/vulkan/Makefile | 7 +- .../VK_KHR_sampler_mirror_clamp_to_edge.txt | 2 +- doc/specs/vulkan/appendices/compressedtex.txt | 6 +- doc/specs/vulkan/appendices/extensions.txt | 86 +- doc/specs/vulkan/appendices/glossary.txt | 14 +- doc/specs/vulkan/appendices/invariance.txt | 36 +- doc/specs/vulkan/appendices/spirvenv.txt | 20 +- doc/specs/vulkan/chapters/clears.txt | 4 +- doc/specs/vulkan/chapters/cmdbuffers.txt | 35 +- doc/specs/vulkan/chapters/copies.txt | 2 +- doc/specs/vulkan/chapters/descriptorsets.txt | 4 +- doc/specs/vulkan/chapters/devsandqueues.txt | 22 +- doc/specs/vulkan/chapters/extensions.txt | 18 +- doc/specs/vulkan/chapters/features.txt | 23 +- doc/specs/vulkan/chapters/fragops.txt | 2 +- doc/specs/vulkan/chapters/framebuffer.txt | 2 +- doc/specs/vulkan/chapters/fundamentals.txt | 131 +- doc/specs/vulkan/chapters/fxvertex.txt | 2 +- doc/specs/vulkan/chapters/initialization.txt | 26 +- doc/specs/vulkan/chapters/interfaces.txt | 4 +- doc/specs/vulkan/chapters/introduction.txt | 34 +- doc/specs/vulkan/chapters/memory.txt | 113 +- doc/specs/vulkan/chapters/pipelines.txt | 10 +- doc/specs/vulkan/chapters/primsrast.txt | 4 +- doc/specs/vulkan/chapters/queries.txt | 8 +- doc/specs/vulkan/chapters/renderpass.txt | 4 +- doc/specs/vulkan/chapters/resources.txt | 6 +- doc/specs/vulkan/chapters/samplers.txt | 4 +- doc/specs/vulkan/chapters/shaders.txt | 2 +- doc/specs/vulkan/chapters/sparsemem.txt | 6 +- doc/specs/vulkan/chapters/synchronization.txt | 18 +- doc/specs/vulkan/copyright.txt | 2 +- .../vulkan/man/vkAllocateCommandBuffers.txt | 2 +- doc/specs/vulkan/man/vkCmdCopyBuffer.txt | 2 +- doc/specs/vulkan/man/vkCmdResolveImage.txt | 2 +- doc/specs/vulkan/man/vkCreateBuffer.txt | 2 +- .../vulkan/man/vkCreateComputePipelines.txt | 2 +- doc/specs/vulkan/man/vkCreateImageView.txt | 2 +- .../vulkan/man/vkCreatePipelineLayout.txt | 2 +- .../vulkan/man/vkEnumeratePhysicalDevices.txt | 2 +- .../man/vkGetImageSubresourceLayout.txt | 2 +- .../vulkan/man/vkGetInstanceProcAddr.txt | 2 +- ...GetPhysicalDeviceQueueFamilyProperties.txt | 4 +- doc/specs/vulkan/style/styleguide.txt | 9 +- .../vulkan/validity/protos/vkCmdBlitImage.txt | 1 + .../validity/protos/vkCmdClearColorImage.txt | 2 +- .../protos/vkCmdClearDepthStencilImage.txt | 2 +- .../vulkan/validity/protos/vkCmdDispatch.txt | 2 +- .../validity/protos/vkCmdDispatchIndirect.txt | 2 +- .../vulkan/validity/protos/vkCmdDraw.txt | 2 +- .../validity/protos/vkCmdDrawIndexed.txt | 2 +- .../protos/vkCmdDrawIndexedIndirect.txt | 2 +- .../validity/protos/vkCmdDrawIndirect.txt | 2 +- .../validity/protos/vkCmdResetEvent.txt | 1 + .../vulkan/validity/protos/vkQueueSubmit.txt | 4 +- .../vulkan/validity/protos/vkResetEvent.txt | 1 + .../validity/structs/VkBufferImageCopy.txt | 14 +- .../structs/VkBufferViewCreateInfo.txt | 8 +- .../vulkan/validity/structs/VkImageCopy.txt | 16 +- doc/specs/vulkan/vkapi.py | 5 +- doc/specs/vulkan/vkspec.txt | 2 +- src/spec/generator.py | 13 +- src/spec/readme.pdf | 2736 +++++++++++------ src/spec/readme.tex | 29 +- src/spec/registry.rnc | 2 +- src/spec/test.c | 2 +- src/spec/vk.xml | 104 +- src/vulkan/vulkan.h | 25 +- 69 files changed, 2270 insertions(+), 1453 deletions(-) diff --git a/ChangeLog.txt b/ChangeLog.txt index 1eeb5fc4..1280030b 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -526,3 +526,57 @@ Other Commits: on relevant script/XML/header files. This does not affect the specification source copyright. +----------------------------------------------------- + +Change log for April 29, 2016 Vulkan 1.0.12 spec update: + + * Bump API patch number and header version number to 12 for this + update. + +Github Issues: + + * Change valid usage statements intended to be "sub-points" to + be actual sub-points (public issue 66). + * Replace double negation in description of + slink:VkRenderPassBeginInfo::pname:pClearValues (based on public + merge 142). + * Cleanup minor typos in spec, ref pages and XML, including those + proposed in public pull requests 144, 150, 151, 167, 168, 181, and + 186. + * Use *strict subset* in describing the partial order of memory + property types for slink:VkMemoryType, and update the style guide + accordingly (public issue 190). + * Fix various "a image" -> "an image" typos (public issue 191). + * Note in the <> and + <> sections that + structures defined by extensions which may be passed in structure + chains using the ptext:pNext member must: include initial + ptext:sType and ptext:pNext members (public issue 192). + +Internal Issues: + + * Remove duplicate language from the description of the pname:fence + parameter to flink:vkQueueSubmit and improve validity language + (internal issue 91). + * Added documentation for "optional" attribute to XML readme.tex/pdf + (internal issue 149). + * Clarify the host-side data validity rules and behavior of + flink:vkFlushMappedMemoryRanges and + flink:vkInvalidateMappedMemoryRanges (internal issue 266). + +Other Commits: + + * Added clarification to flink:vkCmdFillBuffer regarding the use of + ename:VK_WHOLE_SIZE. + * Fixed and documented implementation of "validextensionstructs" + attribute. in XML processing scripts and readme.tex/pdf. + * Add missing validity statements to flink:vkResetEvent and + flink:vkCmdResetEvent. + * Fix validity for the + ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag. + Correct all the draw/dispatch commands to mention optimally tiled + images as well as linear tiled images, and say image VIEWS instead + of images. Add validity statement to flink:vkCmdBlitImage + * Replace the {apiname} macro with hardcoded "Vulkan", now that we've + committed to that name. + * Add the VK_AMD_rasterization_order extension to vk.xml. diff --git a/doc/specs/vulkan/Makefile b/doc/specs/vulkan/Makefile index b09702da..138084bf 100644 --- a/doc/specs/vulkan/Makefile +++ b/doc/specs/vulkan/Makefile @@ -26,7 +26,6 @@ allchecks: checkinc checklinks # Note that the := assignments below are immediate, not deferred, and # are therefore order-dependent in the Makefile -APINAME=Vulkan QUIET?=@ ASCIIDOC ?= asciidoc.py A2X ?= a2x.py @@ -64,14 +63,14 @@ KEEP = # asciidoc / a2x attributes to set. # XMLLINT normally unset - to detect problems with intermediate files # NOTEOPTS sets options controlling which NOTEs are generated -# ATTRIBOPTS sets {apiname} to "Vulkan" and enables MathJax generation +# ATTRIBOPTS sets the api revision and enables MathJax generation # VKCONF contains Vulkan-specific Asciidoc macros # ADOCOPTS options for asciidoc->HTML output # ADOCPDFOPTS options for asciidoc->PDF output via dblatex (not using a2x) # A2XOPTS options for a2x->{HTML,PDF} output XMLLINT = --no-xmllint NOTEOPTS = -a editing-notes -a implementation-guide -ATTRIBOPTS = -a apiname=$(APINAME)@ -a apirevision="$(SPECREVISION)" -a mathjax +ATTRIBOPTS = -a apirevision="$(SPECREVISION)" -a mathjax VKCONF = config/vkspec.conf ADOCOPTS = $(ATTRIBOPTS) $(NOTEOPTS) -f config/mathjax-asciidoc.conf \ -f $(VKCONF) $(VERBOSE) @@ -126,7 +125,7 @@ INCLUDES := $(wildcard protos/*.txt structs/*.txt flags/*.txt enums/*.txt funcpo COMMONDOCS := $(CHAPTERS) $(INCLUDES) # A generated included file with the spec version, date, and git commit SPECVERSION = specversion.txt -SPECREVISION = 1.0.11 +SPECREVISION = 1.0.12 SPECREMARK = # Spec targets diff --git a/doc/specs/vulkan/appendices/VK_KHR_sampler_mirror_clamp_to_edge.txt b/doc/specs/vulkan/appendices/VK_KHR_sampler_mirror_clamp_to_edge.txt index 054334ba..3bc18fed 100644 --- a/doc/specs/vulkan/appendices/VK_KHR_sampler_mirror_clamp_to_edge.txt +++ b/doc/specs/vulkan/appendices/VK_KHR_sampler_mirror_clamp_to_edge.txt @@ -7,7 +7,7 @@ *Last Modified Date*:: 16/02/2016 *Revision*:: 1 *Dependencies*:: - - This extension is written against version 1.0. of the {apiname} API. + - This extension is written against version 1.0. of the Vulkan API. *Contributors*:: - Tobias Hector, Imagination Technologies *Contacts*:: diff --git a/doc/specs/vulkan/appendices/compressedtex.txt b/doc/specs/vulkan/appendices/compressedtex.txt index f4c9d3eb..880fb9d2 100644 --- a/doc/specs/vulkan/appendices/compressedtex.txt +++ b/doc/specs/vulkan/appendices/compressedtex.txt @@ -26,7 +26,7 @@ Format Specification. [[appendix-compressedtex-bc]] == Block-Compressed Image Formats -.Mapping of {apiname} BC formats to descriptions +.Mapping of Vulkan BC formats to descriptions [width="90%",options="header",cols="5,4"] |============================== | VkFormat | Data Format Specification description @@ -59,7 +59,7 @@ Format Specification. The following formats are described in the ``ETC2 Compressed Texture Image Formats'' chapter of the Khronos Data Format Specification. -.Mapping of {apiname} ETC formats to descriptions +.Mapping of Vulkan ETC formats to descriptions [options="header",cols="1,1"] |============================== | VkFormat | Data Format Specification description @@ -83,7 +83,7 @@ Formats'' chapter of the Khronos Data Format Specification. ASTC formats are described in the ``ASTC Compressed Texture Image Formats'' chapter of the Khronos Data Format Specification. -.Mapping of {apiname} ASTC formats to descriptions +.Mapping of Vulkan ASTC formats to descriptions [width="75%",options="header",cols="63%,15%,22%"] |============================== | VkFormat ^| Compressed texel block dimensions ^| sRGB-encoded diff --git a/doc/specs/vulkan/appendices/extensions.txt b/doc/specs/vulkan/appendices/extensions.txt index f03c812c..f99c3f63 100644 --- a/doc/specs/vulkan/appendices/extensions.txt +++ b/doc/specs/vulkan/appendices/extensions.txt @@ -6,9 +6,9 @@ [[extensions]] = Layers & Extensions -Extensions to the {apiname} API can: be defined by authors, groups of -authors, and the Khronos {apiname} Working Group. In order not to compromise -the readability of the {apiname} Specification, the core Specification does +Extensions to the Vulkan API can: be defined by authors, groups of +authors, and the Khronos Vulkan Working Group. In order not to compromise +the readability of the Vulkan Specification, the core Specification does not incorporate most extensions. The online registry of extensions is available at URL @@ -41,7 +41,7 @@ several purposes: * Provides a central repository for documentation and header changes associated with extensions -{apiname}'s design and general software development trends introduces two +Vulkan's design and general software development trends introduces two new paradigms that require rethinking the existing mechanisms: * Layers, and with them a focus on a more open ecosystem where non-Khronos @@ -63,7 +63,7 @@ Some general rules to simplify the specific rules below: * All extensions must: be registered with Khronos. * Extensions must: be strictly additive and backwards-compatible. That is, extensions mustnot: remove existing functionality, or change existing - default behaviors. A {apiname} implementation may: support any + default behaviors. A Vulkan implementation may: support any combination of extensions, but applications written using only the core API, or a subset of the supported extensions, must: continue to work in such an implementation without changes in behavior. @@ -78,8 +78,8 @@ Both extensions and layer names include a +VK_+ prefix. In addition, layers add a +LAYER_+ prefix. Extension and layer names also contain an _author prefix_ identifying the author of the extension/layer. This prefix is a short, capitalized, registered string identifying an author, such as a -Khronos member developing {apiname} implementations for their devices, or a -non-Khronos developer creating {apiname} layers. +Khronos member developing Vulkan implementations for their devices, or a +non-Khronos developer creating Vulkan layers. Some authors have platform communities they wish to distinguish between, and can: register additional author prefixes for that purpose. For example, @@ -98,7 +98,7 @@ only for layers. will use the prefix +VK_KHR_+. ** The following author prefixes are reserved and mustnot: be used: *** +VK+ - To avoid confusion with the top-level +VK_+ prefix. - *** +VULKAN+ - To avoid confusion with the name of the {apiname} API. + *** +VULKAN+ - To avoid confusion with the name of the Vulkan API. *** +LAYER+ - To avoid confusion with the higher-level ``LAYER'' prefix. *** +KHRONOS+ - To avoid confusion with the Khronos organization. ** Multi-author extensions that have not been ratified by Khronos (those @@ -143,7 +143,7 @@ browser. == Extension Command, Type, and Token Naming Conventions Extensions may: add new commands, types, and tokens, or collectively -``objects'', to the {apiname} API. These objects are given globally unique +``objects'', to the Vulkan API. These objects are given globally unique names by appending the author prefix defined above for the extension name according to the following templates. @@ -184,10 +184,10 @@ enum VkSomeValuesGRPHX { [[extensions-api-registry]] -== The {apiname} Registry +== The Vulkan Registry -The canonical definition of the {apiname} APIs is kept in an XML file known -as the *{apiname} registry*. The registry is kept in +src/spec/vk.xml+ in +The canonical definition of the Vulkan APIs is kept in an XML file known +as the *Vulkan registry*. The registry is kept in +src/spec/vk.xml+ in the branch of the vulkan project containing the most recently released core API specification. The registry contains reserved author prefixes, core and extension interface definitions, definitions of individual commands and @@ -202,7 +202,7 @@ documentation used in generating the API specification and reference pages. == Registering an Author Prefix with Khronos Previous Khronos APIs could only officially be modified by Khronos members. -In an effort to build a more flexible platform, {apiname} allows non-Khronos +In an effort to build a more flexible platform, Vulkan allows non-Khronos developers to extend and modify the API via layers and extensions in the same manner as Khronos members. However, extensions must: still be registered with Khronos. A mechanism for non-members to register layers and @@ -222,7 +222,7 @@ contact email address, respectively. The author prefix will be reserved only once this merge request is accepted. Please do not try to reserve author names which clearly belong to another -existing company or software project which may: wish to develop {apiname} +existing company or software project which may: wish to develop Vulkan extensions or layers in the future, as a matter of courtesy and respect. Khronos may: decline to register author names that are not requested in good faith. @@ -231,7 +231,7 @@ faith. [[extensions-vendor-id]] == Registering a Vendor ID with Khronos -{apiname} implementers must report a valid vendor ID for their +Vulkan implementers must report a valid vendor ID for their implementation, as reported by <>. If there is no valid PCI vendor ID defined for the physical device, @@ -251,7 +251,7 @@ available ID in the list of ++ tags. The vendor ID will be reserved only once this merge request has been accepted. Please do not try to reserve vendor IDs unless you are making a good faith -effort to develop a {apiname} implementation and require one for that +effort to develop a Vulkan implementation and require one for that purpose. @@ -264,7 +264,7 @@ registration is strongly recommended. Registration means: * Adding the extension or layer name to the list in +vk.xml+ and appearing on the Khronos registry website, which will link to associated documentation hosted on Khronos. - * For extensions which add to the {apiname} API, including definitions of + * For extensions which add to the Vulkan API, including definitions of those additions to +vk.xml+. Registration for Khronos members is handled by filing a merge request in the @@ -298,7 +298,7 @@ extension number assignment prior to extension publication: * Develop and test the extension using the registered extension number. * Publish the extension to Khronos using the previously registered extension number, by creating a branch of the repository with - appropriate changes relative to the core {apiname} API branch. + appropriate changes relative to the core Vulkan API branch. * Mark the extension as enabled, by proposing a merge to master changing the +supported+ attribute value of the ++ to +supported="vulkan"+. This should: be completely automated and under the @@ -326,15 +326,15 @@ endif::editing-notes[] == Documenting Extensions -Extensions are documented as modifications to the {apiname} specification. +Extensions are documented as modifications to the Vulkan specification. These modifications will be on Git branches that are named with the following syntax: +-+ For example, the VK_KHR_surface extension will be documented relative -to version 1.0 of the {apiname} specification. As such, the branch name will +to version 1.0 of the Vulkan specification. As such, the branch name will be: +1.0-VK_KHR_surface+ -If the extension modifies an existing section of the {apiname} +If the extension modifies an existing section of the Vulkan specification, those modifications are made in-place. Since the changes are on a branch, the core-only specification can: be easily produced. A specification with an extension is created by merging in the extension's @@ -347,7 +347,7 @@ higher-numbered extension should: take care to deal with any conflicts. The WSI extensions were used to help pioneer what should: be done for extensions. This includes the following: - * All extensions should: add to the appendix of the {apiname} + * All extensions should: add to the appendix of the Vulkan specification. This should: be modeled after what was done for the +VK_KHR_surface+ extension, which contains some high-level information about the extension (as well as code examples, and revision history) in @@ -360,12 +360,12 @@ extensions. This includes the following: multiple extensions' branches are merged in order to create the ``full'' branch specification. * If there are any other places where 2 or more extensions will extend the - {apiname} specification, it is best to put that content in a file, and + Vulkan specification, it is best to put that content in a file, and use an +include+ statement to put that content into the spec. Again, this +include+ line should: be put on the master branch in order to avoid merge conflicts. - * If an extension is more of an addition to the {apiname} specification, - the extension should: add a chapter to the {apiname} specification. + * If an extension is more of an addition to the Vulkan specification, + the extension should: add a chapter to the Vulkan specification. == Assigning Extension Token Values @@ -443,7 +443,7 @@ all extensions must: define two additional tokens. extension specification, and is incremented when significant changes (bugfixes or added functionality) are made. Note that the revision of an extension defined in +vulkan.h+ and the revision supported by the - {apiname} implementation (the pname:specVersion field of the + Vulkan implementation (the pname:specVersion field of the slink:VkExtensionProperties structure corresponding to the extension and returned by one of the <>) may: differ. In such cases, only the functionality and @@ -472,7 +472,7 @@ be included in the +vulkan.h+ header supplied by Khronos. .Note ==== Application developers are encouraged to be careful when using +switch+ -statements with {apiname} API enums. This is because extensions can: add new +statements with Vulkan API enums. This is because extensions can: add new values to existing enums. The use of a +default:+ statement, within a +switch+, may: avoid future compilation issues. ==== @@ -481,23 +481,23 @@ values to existing enums. The use of a +default:+ statement, within a [[extension-function_prototypes]] == Extension Function Prototypes -Function pointer declarations and function prototypes for all core {apiname} +Function pointer declarations and function prototypes for all core Vulkan API commands are included in the +vulkan.h+ file. These come from the -official XML specification of the {apiname} API hosted by Khronos. +official XML specification of the Vulkan API hosted by Khronos. Function pointer declarations are also included in the +vulkan.h+ file for all commands defined by registered extensions. Function prototypes for extensions may: be included in +vulkan.h+. Extension commands that are part -of the {apiname} ABI must: be flagged in the XML. Function prototypes will +of the Vulkan ABI must: be flagged in the XML. Function prototypes will be included in +vulkan.h+ for all extension commands that are part of the -{apiname} ABI. +Vulkan ABI. An extension can: be considered platform specific, in which case its interfaces in +vulkan.h+ are protected by #ifdefs. This is orthogonal to -whether an extension command is considered to be part of the {apiname} ABI. +whether an extension command is considered to be part of the Vulkan ABI. The initial set of WSI extension commands are considered to be part of the -{apiname} ABI. Function prototypes for these WSI commands are included in +Vulkan ABI. Function prototypes for these WSI commands are included in the +vulkan.h+ provided by Khronos, though the platform-specific portions of +vulkan.h+ are protected by #ifdefs. @@ -505,7 +505,7 @@ the +vulkan.h+ provided by Khronos, though the platform-specific portions of .Note ==== Based on feedback from implementers, Khronos expects that the Android, -Linux, and Windows {apiname} SDKs will include our +vulkan.h+ and export +Linux, and Windows Vulkan SDKs will include our +vulkan.h+ and export the supported WSI functions for those platforms from their loader libraries. Other implementations can: make different choices for their headers and loader libraries, but are encouraged to be consistent with @@ -518,8 +518,8 @@ these implementations. flink:vkGetInstanceProcAddr and flink:vkGetDeviceProcAddr can: be used in order to obtain function pointer addresses for core and extension commands (per the description in <>). Different {apiname} API loaders can: choose to statically -export functions for some or all of the core {apiname} API commands, and +Pointers>>). Different Vulkan API loaders can: choose to statically +export functions for some or all of the core Vulkan API commands, and can: statically export functions for some or all extension commands. If a loader statically exports a function, an application can: link against that function without needing to call one of the ftext:vkGet*ProcAddr commands. @@ -527,8 +527,8 @@ function without needing to call one of the ftext:vkGet*ProcAddr commands. [NOTE] .Note ==== -The Khronos-provided {apiname} API loader for Android, Linux, and Windows -exports functions for all core {apiname} API and WSI extension commands. The +The Khronos-provided Vulkan API loader for Android, Linux, and Windows +exports functions for all core Vulkan API and WSI extension commands. The WSI functions are considered special, because they are required for many applications. ==== @@ -556,6 +556,7 @@ defined and locked down, it's safest to refer to the listed contact. ==== +[[extensions-interactions]] == Extension Interactions Extensions modifying the behavior of existing commands should: provide @@ -563,7 +564,14 @@ additional parameters by using the pname:pNext field of an existing structure, pointing to a new structure defined by the extension, as described in the <> section. Extension structures defined by multiple extensions affecting the same structure can -be chained together in this fashion. +be chained together in this fashion. Any structure which can: be chained +in this fashion must: begin with the following two members: + +["source","{basebackend@docbook:c++:cpp}",title=""] +------------------------------------------------------------------------------ +VkStructureType sType; +const void* pNext; +------------------------------------------------------------------------------ It is in principle possible for extensions to provide additional parameters through alternate means, such as passing a handle parameter to a structure diff --git a/doc/specs/vulkan/appendices/glossary.txt b/doc/specs/vulkan/appendices/glossary.txt index 9c2123e5..913630ab 100644 --- a/doc/specs/vulkan/appendices/glossary.txt +++ b/doc/specs/vulkan/appendices/glossary.txt @@ -216,7 +216,7 @@ Device-Local Memory:: Dispatchable Handle:: A handle of a pointer handle type which may: be used by layers as part - of intercepting API commands. The first argument to each {apiname} + of intercepting API commands. The first argument to each Vulkan command is a dispatchable handle type. Dispatching Commands:: @@ -229,7 +229,7 @@ Drawing Commands:: flink:vkCmdDrawIndexedIndirect. Duration (Command):: - The _duration_ of a {apiname} command refers to the interval between + The _duration_ of a Vulkan command refers to the interval between calling the command and its return to the caller. Dynamic Storage Buffer:: @@ -314,7 +314,7 @@ Global Workgroup:: A collection of local workgroups dispatched by a single dispatch command. Handle:: - An opaque integer or pointer value used to refer to a {apiname} object. + An opaque integer or pointer value used to refer to a Vulkan object. Each object type has a unique handle type. Happen-after:: @@ -378,7 +378,7 @@ Immutable Sampler:: the layout, and cannot be changed. Implicitly-Enabled Layer:: - A layer enabled by a loader-defined mechanism outside the {apiname} API, + A layer enabled by a loader-defined mechanism outside the Vulkan API, rather than explicitly by the application during instance or device creation. @@ -402,7 +402,7 @@ Input Attachment:: view. Instance:: - The top-level {apiname} object, which represents the application's + The top-level Vulkan object, which represents the application's connection to the implementation. Represented by a sname:VkInstance object. @@ -427,7 +427,7 @@ Local Workgroup:: Logical Device:: An object that represents the application's interface to the physical - device. The logical device is the parent of most {apiname} objects. + device. The logical device is the parent of most Vulkan objects. Represented by a sname:VkDevice object. Logical Operation:: @@ -802,7 +802,7 @@ A:: = Prefixes Prefixes are used in the API to denote specific semantic meaning of -{apiname} names, or as a label to avoid name clashes, and are explained +Vulkan names, or as a label to avoid name clashes, and are explained here: VK/Vk/vk:: diff --git a/doc/specs/vulkan/appendices/invariance.txt b/doc/specs/vulkan/appendices/invariance.txt index efcb0875..4656c409 100644 --- a/doc/specs/vulkan/appendices/invariance.txt +++ b/doc/specs/vulkan/appendices/invariance.txt @@ -4,8 +4,8 @@ [appendix] = Invariance -The {apiname} specification is not pixel exact. It therefore does not -guarantee an exact match between images produced by different {apiname} +The Vulkan specification is not pixel exact. It therefore does not +guarantee an exact match between images produced by different Vulkan implementations. However, the specification does specify exact matches, in some cases, for images produced by the same implementation. The purpose of this appendix is to identify and provide justification for those cases that @@ -14,10 +14,10 @@ require exact matches. == Repeatability The obvious and most fundamental case is repeated issuance of a series of -{apiname} commands. For any given {apiname} and framebuffer state vector, -and for any {apiname} command, the resulting {apiname} and framebuffer state +Vulkan commands. For any given Vulkan and framebuffer state vector, +and for any Vulkan command, the resulting Vulkan and framebuffer state must: be identical whenever the command is executed on that initial -{apiname} and framebuffer state. This repeatability requirement doesn't +Vulkan and framebuffer state. This repeatability requirement doesn't apply when using shaders containing side effects (image and buffer variable stores and atomic operations), because these memory operations are not guaranteed to be processed in a defined order. @@ -38,7 +38,7 @@ Additional invariance rules are desirable to ensure useful operation. == Multi-pass Algorithms Invariance is necessary for a whole set of useful multi-pass algorithms. -Such algorithms render multiple times, each time with a different {apiname} +Such algorithms render multiple times, each time with a different Vulkan mode vector, to eventually produce a result in the framebuffer. Examples of these algorithms include: @@ -49,11 +49,11 @@ these algorithms include: == Invariance Rules -For a given instantiation of an {apiname} rendering context: +For a given instantiation of an Vulkan rendering context: -*Rule 1* _For any given {apiname} and framebuffer state vector, and for any -given {apiname} command, the resulting {apiname} and framebuffer state must: -be identical each time the command is executed on that initial {apiname} and +*Rule 1* _For any given Vulkan and framebuffer state vector, and for any +given Vulkan command, the resulting Vulkan and framebuffer state must: +be identical each time the command is executed on that initial Vulkan and framebuffer state._ *Rule 2* _Changes to the following state values have no side effects (the @@ -89,7 +89,7 @@ sequence, are pixel identical._ when run multiple times with the same input. The wording ``the same shader'' means a program object that is populated with the same SPIR-V binary, which is used to create pipelines, possibly multiple times, and which program -object is then executed using the same {apiname} state vector. Invariance is +object is then executed using the same Vulkan state vector. Invariance is relaxed for shaders with side effects, such as performing stores or atomics._ @@ -98,19 +98,19 @@ assign_ code:FragCoord.z _to_ code:FragDepth _are depth-invariant with respect to each other, for those fragments where the assignment to_ code:FragDepth _actually is done._ -If a sequence of {apiname} commands specifies primitives to be rendered with +If a sequence of Vulkan commands specifies primitives to be rendered with shaders containing side effects (image and buffer variable stores and atomic operations), invariance rules are relaxed. In particular, rule 1, corollary 2, and rule 4 do not apply in the presence of shader side effects. -The following weaker versions of rules 1 and 4 apply to {apiname} commands +The following weaker versions of rules 1 and 4 apply to Vulkan commands involving shader side effects: -*Rule 6* _For any given {apiname} and framebuffer state vector, and for any -given {apiname} command, the contents of any framebuffer state not directly +*Rule 6* _For any given Vulkan and framebuffer state vector, and for any +given Vulkan command, the contents of any framebuffer state not directly or indirectly affected by results of shader image or buffer variable stores or atomic operations must: be identical each time the command is executed on -that initial {apiname} and framebuffer state._ +that initial Vulkan and framebuffer state._ *Rule 7* _The same vertex or fragment shader will produce the same result when run multiple times with the same input as long as:_ @@ -121,8 +121,8 @@ when run multiple times with the same input as long as:_ * _no shader invocation, or other operation performed to process the sequence of commands, reads memory written to by an image store._ -When any sequence of {apiname} commands triggers shader invocations that -perform image stores or atomic operations, and subsequent {apiname} commands +When any sequence of Vulkan commands triggers shader invocations that +perform image stores or atomic operations, and subsequent Vulkan commands read the memory written by those shader invocations, these operations must: be explicitly synchronized. diff --git a/doc/specs/vulkan/appendices/spirvenv.txt b/doc/specs/vulkan/appendices/spirvenv.txt index a931148d..01830247 100644 --- a/doc/specs/vulkan/appendices/spirvenv.txt +++ b/doc/specs/vulkan/appendices/spirvenv.txt @@ -3,16 +3,16 @@ [appendix] [[spirvenv]] -= {apiname} Environment for SPIR-V += Vulkan Environment for SPIR-V -Shaders for {apiname} are defined by the <> as +Shaders for Vulkan are defined by the <> as well as the <>. -This appendix defines additional SPIR-V requirements applying to {apiname} +This appendix defines additional SPIR-V requirements applying to Vulkan shaders. == Required Versions and Formats -A {apiname} 1.0 implementation must: support the 1.0 version of SPIR-V and +A Vulkan 1.0 implementation must: support the 1.0 version of SPIR-V and the 1.0 version of the SPIR-V Extended Instructions for GLSL. A SPIR-V module passed into flink:vkCreateShaderModule is interpreted as @@ -47,7 +47,7 @@ to that feature must: also be supported. .SPIR-V Capabilities which are not required:, and corresponding feature names [options="header"] |==== -| SPIR-V OpCapability | {apiname} feature name +| SPIR-V OpCapability | Vulkan feature name | code:Geometry | <> | code:Tessellation | <> | code:Float64 | <> @@ -81,7 +81,7 @@ following to flink:vkCreateShaderModule: - any OpCapability not listed above, - an unsupported capability, or - - a capability which corresponds to a {apiname} feature which has not been + - a capability which corresponds to a Vulkan feature which has not been enabled. @@ -198,18 +198,18 @@ negative the result is undefined. .Note ==== While the code:OpSRem and code:OpSMod instructions are supported by the -{apiname} environment, they require non-negative values and thus do not +Vulkan environment, they require non-negative values and thus do not enable additional functionality beyond what code:OpUMod provides. ==== [[spirvenv-image-formats]] -Compatibility Between SPIR-V Image Formats And {apiname} Formats ----------------------------------------------------------------- +Compatibility Between SPIR-V Image Formats And Vulkan Formats +------------------------------------------------------------- [cols="2*", options="header"] |=== -|SPIR-V Image Format |{apiname} Format +|SPIR-V Image Format |Vulkan Format |code:Rgba32f |ename:VK_FORMAT_R32G32B32A32_SFLOAT |code:Rgba16f |ename:VK_FORMAT_R16G16B16A16_SFLOAT |code:R32f |ename:VK_FORMAT_R32_SFLOAT diff --git a/doc/specs/vulkan/chapters/clears.txt b/doc/specs/vulkan/chapters/clears.txt index b946f5f1..39ff7d81 100644 --- a/doc/specs/vulkan/chapters/clears.txt +++ b/doc/specs/vulkan/chapters/clears.txt @@ -221,7 +221,9 @@ include::../protos/vkCmdFillBuffer.txt[] filling, and must: be a multiple of 4. * pname:size is the number of bytes to fill, and must: be either a multiple of 4, or ename:VK_WHOLE_SIZE to fill the range from - pname:offset to the end of the buffer. + pname:offset to the end of the buffer. If ename:VK_WHOLE_SIZE is used + and the remaining size of the buffer is not a multiple of 4, then the + nearest smaller multiple is used. * pname:data is the 4-byte word written repeatedly to the buffer to fill pname:size bytes of data. The data word is written to memory according to the host endianness. diff --git a/doc/specs/vulkan/chapters/cmdbuffers.txt b/doc/specs/vulkan/chapters/cmdbuffers.txt index cb4e7744..68189dbd 100644 --- a/doc/specs/vulkan/chapters/cmdbuffers.txt +++ b/doc/specs/vulkan/chapters/cmdbuffers.txt @@ -400,25 +400,13 @@ include::../protos/vkQueueSubmit.txt[] which describe the work to submit. All work described by pname:pSubmits must: be submitted to the queue before the command returns. * pname:fence is an optional handle to a fence. If pname:fence is not - code:VK_NULL_HANDLE, the fence is signaled when execution of all - sname:VkSubmitInfo::pname:pCommandBuffers members of pname:pSubmits is - completed. If pname:submitCount is zero but pname:fence is not - code:VK_NULL_HANDLE, the fence will still be submitted to the queue and - will become signaled when all work previously submitted to the queue has - completed. - -ifdef::editing-notes[] -[NOTE] -.editing-note -==== -(Jon) The description of pname:fence here was added from the ref page -because it was missing from the starting point of MR #1048, which is just -about cleaning up the markup of command parameters. It needs to be resolved -with the description far below of pname:fence, as noted by @jbolz, because -they're not very similar and because most of the second description belongs -in validity XML language. -==== -endif::editing-notes[] + code:VK_NULL_HANDLE, the fence is signaled when execution of all command + buffers specified in the sname:VkSubmitInfo::pname:pCommandBuffers + members of pname:pSubmits is complete, providing certain + <>. If + pname:submitCount is zero but pname:fence is not code:VK_NULL_HANDLE, + the fence will still be submitted to the queue and will become signaled + when all work previously submitted to the queue has completed. include::../validity/protos/vkQueueSubmit.txt[] @@ -444,7 +432,7 @@ signalled before executing any work, followed by a number of command buffers that will be executed, and finally, zero or more semaphores that will be signaled after command buffer execution completes. Each batch is represented as an instance of the slink:VkSubmitInfo structure stored in an array, the -address of which is passed in pname:pSubmitInfo. +address of which is passed in pname:pSubmits. The sname:VkSubmitInfo structure is defined as: @@ -473,13 +461,6 @@ include::../structs/VkSubmitInfo.txt[] include::../validity/structs/VkSubmitInfo.txt[] -If pname:fence is provided, it must: be in the unsignaled state (see -<>) and a fence must: only be associated with -a single submission until that submission completes, and the fence is -subsequently reset. When all command buffers in pname:pCommandBuffers have -completed execution, the status of pname:fence is set to signaled, providing -certain <>. - [[commandbuffers-submission-progress]] == Queue Forward Progress diff --git a/doc/specs/vulkan/chapters/copies.txt b/doc/specs/vulkan/chapters/copies.txt index 6fefdd6d..07a7506f 100644 --- a/doc/specs/vulkan/chapters/copies.txt +++ b/doc/specs/vulkan/chapters/copies.txt @@ -197,7 +197,7 @@ pname:extent.height is not a multiple of the compressed texel block height then (pname:extent.height + pname:srcOffset.y) must: equal the image subresource height and if pname:extent.depth is not a multiple of the compressed texel block depth then (pname:extent.depth + pname:srcOffset.z) -must: equal the image subresource depth. Similarily if the pname:dstImage is +must: equal the image subresource depth. Similarly, if the pname:dstImage is compressed and if pname:extent.width is not a multiple of the compressed texel block width then (pname:extent.width + pname:dstOffset.x) must: equal the image subresource width, if pname:extent.height is not a multiple of the diff --git a/doc/specs/vulkan/chapters/descriptorsets.txt b/doc/specs/vulkan/chapters/descriptorsets.txt index 65ecdd4a..9fa9970b 100644 --- a/doc/specs/vulkan/chapters/descriptorsets.txt +++ b/doc/specs/vulkan/chapters/descriptorsets.txt @@ -79,7 +79,7 @@ layout (set=m, binding=n) uniform sampler2D variableNameArray[L]; == Descriptor Types The following sections outline the various descriptor types supported by -{apiname}. Each section defines a descriptor type, and each descriptor type +Vulkan. Each section defines a descriptor type, and each descriptor type has a manifestation in the shading language and SPIR-V as well as in descriptor sets. There is mostly a one-to-one correspondence between descriptor types and classes of opaque types in the shading language, where @@ -1478,7 +1478,7 @@ include::../validity/protos/vkCmdBindDescriptorSets.txt[] As described above in section <>, the pipeline layout defines shader push constants which are -updated via {apiname} commands rather than via writes to memory or copy +updated via Vulkan commands rather than via writes to memory or copy commands. [NOTE] diff --git a/doc/specs/vulkan/chapters/devsandqueues.txt b/doc/specs/vulkan/chapters/devsandqueues.txt index 4d40bc51..563d508a 100644 --- a/doc/specs/vulkan/chapters/devsandqueues.txt +++ b/doc/specs/vulkan/chapters/devsandqueues.txt @@ -4,10 +4,10 @@ [[devsandqueues]] = Devices and Queues -Once {apiname} is initialized, devices and queues are the primary objects -used to interact with a {apiname} implementation. +Once Vulkan is initialized, devices and queues are the primary objects +used to interact with a Vulkan implementation. -{apiname} separates the concept of _physical_ and _logical_ devices. A +Vulkan separates the concept of _physical_ and _logical_ devices. A physical device usually represents a single device in a system (perhaps made up of several individual hardware devices working together), of which there are a finite number. A logical device represents an application's view of @@ -21,7 +21,7 @@ physical devices installed in the system, call: include::../protos/vkEnumeratePhysicalDevices.txt[] - * pname:instance is a handle to a {apiname} instance previously created + * pname:instance is a handle to a Vulkan instance previously created with fname:vkCreateInstance. * pname:pPhysicalDeviceCount is a pointer to an integer related to the number of physical devices available or queried, as described below. @@ -60,7 +60,7 @@ The sname:VkPhysicalDeviceProperties structure is defined as: include::../structs/VkPhysicalDeviceProperties.txt[] - * pname:apiVersion is the version of {apiname} supported by the device, + * pname:apiVersion is the version of Vulkan supported by the device, encoded as described in the <> section. * pname:driverVersion is the vendor-specified version of the driver. @@ -279,7 +279,7 @@ device exposes a number of _queue families_ each having one or more _queues_. All queues in a queue family support the same operations. As described in <>, a {apiname} application will first query for all physical devices +Devices>>, a Vulkan application will first query for all physical devices in a system. Each physical device can: then be queried for its capabilities, including its queue and queue family properties. Once an acceptable physical device is identified, an application will create a corresponding logical @@ -418,7 +418,7 @@ error is largely informational and intended only to inform the user that their hardware has probably developed a fault or become physically disconnected, and should: be investigated further. In many cases, physical device loss may: cause other more serious issues such as the operating -system crashing; in which case it may: not be reported via the {apiname} +system crashing; in which case it may: not be reported via the Vulkan API. ==== @@ -482,7 +482,7 @@ include::../validity/protos/vkDestroyDevice.txt[] To ensure that no work is active on the device, flink:vkDeviceWaitIdle can: be used to gate the destruction of the device. Prior to destroying a -device, an application is responsible for destroying/freeing any {apiname} +device, an application is responsible for destroying/freeing any Vulkan objects that were created using that device as the first parameter of the corresponding ftext:vkCreate* or ftext:vkAllocate* command. @@ -581,7 +581,7 @@ include::../validity/protos/vkGetDeviceQueue.txt[] [[devsandqueues-index]] === Queue Family Index -The queue family index is used in multiple places in {apiname} in order to +The queue family index is used in multiple places in Vulkan in order to tie operations to a specific family of queues. When retrieving a handle to the queue via fname:vkGetDeviceQueue, the queue @@ -647,7 +647,7 @@ binding operations in the queue have completed. include::../validity/protos/vkQueueWaitIdle.txt[] -Synchronization between queues is done using {apiname} semaphores as +Synchronization between queues is done using Vulkan semaphores as described in the <> chapter. @@ -655,7 +655,7 @@ chapter. [[devsandqueues-sparsebinding]] === Sparse Memory Binding -In {apiname} it is possible to sparsely bind memory to buffers and +In Vulkan it is possible to sparsely bind memory to buffers and images as described in the <> chapter. Sparse memory binding is a queue operation. A queue whose flags include the ename:VK_QUEUE_SPARSE_BINDING_BIT must: be able to support the diff --git a/doc/specs/vulkan/chapters/extensions.txt b/doc/specs/vulkan/chapters/extensions.txt index 9e564ab3..844ee097 100644 --- a/doc/specs/vulkan/chapters/extensions.txt +++ b/doc/specs/vulkan/chapters/extensions.txt @@ -5,7 +5,7 @@ = Extended Functionality Additional functionality may: be provided by layers or extensions. A layer -cannot: add or modify {apiname} commands, while an extension may: do so. +cannot: add or modify Vulkan commands, while an extension may: do so. There are two kinds of layers and extensions, instance and device. Instance layers and extensions are general purpose and do not depend on a specific @@ -24,10 +24,10 @@ extensions tend to be hardware-specific. Examples of these might be: [[extended-functionality-layers]] == Layers -When a layer is enabled, it inserts itself into the call chain for {apiname} +When a layer is enabled, it inserts itself into the call chain for Vulkan commands the layer is interested in. A common use of layers is to validate application behavior during development. For example, the implementation -will not check that {apiname} enums used by the application fall within +will not check that Vulkan enums used by the application fall within allowed ranges. Instead, a validation layer would do those checks and flag issues. This avoids a performance penalty during production use of the application because those layers would not be enabled in production. @@ -85,7 +85,7 @@ include::../structs/VkLayerProperties.txt[] in the slink:VkInstanceCreateInfo and slink:VkDeviceCreateInfo structures passed to flink:vkCreateInstance and flink:vkCreateDevice, respectively, to enable this layer for an instance or device. - * pname:specVersion is the {apiname} version the layer was written to, + * pname:specVersion is the Vulkan version the layer was written to, encoded as described in the <> section. * pname:implementationVersion is the version of this layer. It is an @@ -95,7 +95,7 @@ include::../structs/VkLayerProperties.txt[] include::../validity/structs/VkLayerProperties.txt[] -Loader implementations may: provide mechanisms outside the {apiname} API for +Loader implementations may: provide mechanisms outside the Vulkan API for enabling specific layers. Layers enabled through such a mechanism are _implicitly enabled_, while layers enabled by including the layer name in the pname:ppEnabledLayerNames member of slink:VkDeviceCreateInfo are @@ -108,7 +108,7 @@ effect. [[extended-functionality-extensions]] == Extensions -Extensions may: define new {apiname} commands, structures, and enumerants. +Extensions may: define new Vulkan commands, structures, and enumerants. For compilation purposes, the interfaces defined by registered extensions, including new structures and enumerants as well as function pointer types for new commands, are defined in the Khronos-supplied +vulkan.h+ together @@ -116,7 +116,7 @@ with the core API. However, commands defined by extensions may: not be available for static linking - in which case function pointers to these commands should: be queried at runtime as described in <>. Extensions may: be provided by layers -as well as by a {apiname} implementation. +as well as by a Vulkan implementation. To query the available instance extensions, call: @@ -131,7 +131,7 @@ include::../protos/vkEnumerateInstanceExtensionProperties.txt[] include::../validity/protos/vkEnumerateInstanceExtensionProperties.txt[] -When pLayerName parameter is NULL, only extensions provided by the {apiname} +When pLayerName parameter is NULL, only extensions provided by the Vulkan implementation or by implicitly enabled layers are returned. When pname:pLayerName is the name of a layer, the instance extensions provided by that layer are returned. @@ -154,7 +154,7 @@ include::../protos/vkEnumerateDeviceExtensionProperties.txt[] include::../validity/protos/vkEnumerateDeviceExtensionProperties.txt[] -When pLayerName parameter is NULL, only extensions provided by the {apiname} +When pLayerName parameter is NULL, only extensions provided by the Vulkan implementation or by implicitly enabled layers are returned. When pname:pLayerName is the name of a layer, the device extensions provided by that layer are returned. diff --git a/doc/specs/vulkan/chapters/features.txt b/doc/specs/vulkan/chapters/features.txt index 55e0968b..1f259769 100644 --- a/doc/specs/vulkan/chapters/features.txt +++ b/doc/specs/vulkan/chapters/features.txt @@ -4,7 +4,7 @@ [[features]] = Features, Limits, and Formats -{apiname} is designed to support a wide range of hardware and as such there +Vulkan is designed to support a wide range of hardware and as such there are a number of features, limits, and formats which are not supported on all hardware. Features describe functionality that is not required: and which must: be explicitly enabled. Limits describe implementation-dependent @@ -20,7 +20,7 @@ by the implementation. The features and limits are reported via basic structures (that is slink:VkPhysicalDeviceFeatures and slink:VkPhysicalDeviceLimits). It is expected that when new features or limits are added in a future -{apiname} version, new structure(s) and entry point(s) will be added as +Vulkan version, new structure(s) and entry point(s) will be added as necessary to query these. New functionality added by <> is not expected to modify the core feature and limit structures. @@ -30,7 +30,7 @@ modify the core feature and limit structures. == Features The Specification defines a set of fine-grained features that are not -required:, but may: be supported by a {apiname} implementation. Support for +required:, but may: be supported by a Vulkan implementation. Support for features is reported and enabled on a per-feature basis. Features are properties of the physical device. @@ -565,7 +565,7 @@ include::../validity/structs/VkPhysicalDeviceFeatures.txt[] [[features-features-requirements]] === Feature Requirements -All {apiname} graphics implementations must: support the following features: +All Vulkan graphics implementations must: support the following features: * robustBufferAccess. @@ -1233,7 +1233,7 @@ include::../validity/structs/VkPhysicalDeviceLimits.txt[] [[features-limits-minmax]] === Limit Requirements -The following table specifies the required minimum/maximum for all {apiname} +The following table specifies the required minimum/maximum for all Vulkan graphics implementations. Where a limit corresponds to a fine-grained device feature which is optional:, the feature name is listed with two required limits, one when the feature is supported and one when it is not @@ -3097,11 +3097,16 @@ ename:VK_FORMAT_FEATURE_BLIT_DST_BIT:: fname:vkCmdBlitImage command. ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT:: - sname:VkImage can: be used with a sampler that has either of + If ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT is also set, + sname:VkImageView can: be used with a sampler that has either of pname:magFilter or pname:minFilter set to ename:VK_FILTER_LINEAR, - or pname:mipmapMode set to ename:VK_SAMPLER_MIPMAP_MODE_LINEAR. This bit - must: only be exposed for formats that also support the - ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT. + or pname:mipmapMode set to ename:VK_SAMPLER_MIPMAP_MODE_LINEAR. + If ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT is also set, sname:VkImage + can be used as the pname:srcImage to flink:vkCmdBlitImage + with a pname:filter of ename:VK_FILTER_LINEAR. This bit must: only be + exposed for formats that also support the + ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT or + ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT. + If the format being queried is a depth/stencil format, this bit only indicates that the depth aspect (not the stencil aspect) supports linear filtering, diff --git a/doc/specs/vulkan/chapters/fragops.txt b/doc/specs/vulkan/chapters/fragops.txt index 2b833451..710be615 100644 --- a/doc/specs/vulkan/chapters/fragops.txt +++ b/doc/specs/vulkan/chapters/fragops.txt @@ -432,7 +432,7 @@ include::../enums/VkCompareOp.txt[] * ename:VK_COMPARE_OP_ALWAYS: the test always passes. As described earlier, the pname:failOp, pname:passOp, and pname:depthFailOp -members of pname:VkStencilOpState indicate what happens to the stored +members of slink:VkStencilOpState indicate what happens to the stored stencil value if this or certain subsequent tests fail or pass. Each enum is of type elink:VkStencilOp, which is defined as: diff --git a/doc/specs/vulkan/chapters/framebuffer.txt b/doc/specs/vulkan/chapters/framebuffer.txt index fd2713b9..1ad5a5a6 100644 --- a/doc/specs/vulkan/chapters/framebuffer.txt +++ b/doc/specs/vulkan/chapters/framebuffer.txt @@ -326,7 +326,7 @@ include::../enums/VkLogicOp.txt[] <<< -The logical operations supported by {apiname} are summarized in the +The logical operations supported by Vulkan are summarized in the following table in which * latexmath:[$\lnot$] is bitwise invert, diff --git a/doc/specs/vulkan/chapters/fundamentals.txt b/doc/specs/vulkan/chapters/fundamentals.txt index 5c7bf1f9..35f9ef7f 100644 --- a/doc/specs/vulkan/chapters/fundamentals.txt +++ b/doc/specs/vulkan/chapters/fundamentals.txt @@ -4,7 +4,7 @@ [[fundamentals]] = Fundamentals -This chapter introduces fundamental concepts including the {apiname} +This chapter introduces fundamental concepts including the Vulkan architecture and execution model, API syntax, queues, pipeline configurations, numeric representation, state and state queries, and the different types of objects and shaders. It provides a framework for @@ -55,9 +55,9 @@ external standards such as the Linux Standard Base. [[fundamentals-execmodel]] == Execution Model -This section outlines the execution model of a {apiname} system. +This section outlines the execution model of a Vulkan system. -{apiname} exposes one or more _devices_, +Vulkan exposes one or more _devices_, each of which exposes one or more _queues_ which may: process work asynchronously to one another. The set of queues supported by a device is partitioned into _families_. Each family supports one or more types of @@ -94,8 +94,8 @@ an implementation include: On other architectures, there may: only be a single heap that can: be used for any purpose. -A {apiname} application controls a set of devices through the submission of -command buffers which have recorded device commands issued via {apiname} +A Vulkan application controls a set of devices through the submission of +command buffers which have recorded device commands issued via Vulkan library calls. The content of command buffers is specific to the underlying hardware and is opaque to the application. Once constructed, a command buffer can: be submitted once or many times to a queue for execution. @@ -115,7 +115,7 @@ the responsibility of the application. [[fundamentals-queueoperation]] === Queue Operation -{apiname} queues provide an interface to the execution engines of a device. +Vulkan queues provide an interface to the execution engines of a device. Commands are recorded into command buffers ahead of execution time. These command buffers are then submitted to queues for execution. Command buffers submitted to a single queue are played back in the order they were @@ -128,7 +128,7 @@ specified. Therefore, the application must: explicitly synchronize work between queues when needed. In order to control relative order of execution of work both within a queue -and across multiple queues, {apiname} provides several synchronization +and across multiple queues, Vulkan provides several synchronization primitives, which include _semaphores_, _events_, _pipeline barriers_, and _fences_. These are covered in depth in <>. In broad terms, semaphores are used to synchronize work @@ -142,7 +142,7 @@ to synchronize work between the device and the host. ==== Implementations have significant freedom to overlap execution of work submitted to a queue, and this is common due to deep pipelining and -parallelism in {apiname} devices. +parallelism in Vulkan devices. ==== Work is submitted to queues using queue submission commands that typically @@ -246,8 +246,8 @@ command buffers to execute. This is covered in more detail in [[fundamentals-objectmodel-overview]] == Object Model -The devices, queues, and other entities in {apiname} are represented by -{apiname} objects. At the API level, all objects are referred to by handles. +The devices, queues, and other entities in Vulkan are represented by +Vulkan objects. At the API level, all objects are referred to by handles. There are two classes of handles, dispatchable and non-dispatchable. _Dispatchable_ handle types are a pointer to an opaque type. This pointer may: be used by layers as part of intercepting API commands, and thus each @@ -280,19 +280,19 @@ ftext:vkDestroy* and ftext:vkFree* commands, respectively. Objects that are allocated (rather than created) take resources from an existing pool object or memory heap, and when freed return resources to that pool or heap. While object creation and destruction are generally expected -to be low-frequency occurences during runtime, allocating and freeing +to be low-frequency occurrences during runtime, allocating and freeing objects can: occur at high frequency. Pool objects help accommodate improved performance of the allocations and frees. -It is an application's responsibility to track the lifetime of {apiname} +It is an application's responsibility to track the lifetime of Vulkan objects, and not to destroy them while they are still in use. -Application-owned memory is immediately consumed by any {apiname} command it +Application-owned memory is immediately consumed by any Vulkan command it is passed into. The application can: alter or free this memory as soon as the commands that consume it have returned. The following object types are consumed when they are passed into a -{apiname} command and not further accessed by the objects they are used to +Vulkan command and not further accessed by the objects they are used to create. They can: be destroyed at any time they are not in use by an API command: @@ -306,11 +306,11 @@ sets mustnot: be updated with flink:vkUpdateDescriptorSets after the descriptor set layout has been destroyed. Otherwise, descriptor set layouts can: be destroyed any time they are not in use by an API command. -The application mustnot: destroy any other type of {apiname} object until +The application mustnot: destroy any other type of Vulkan object until all uses of that object by the device (such as via command buffer execution) have completed. -The following {apiname} objects can: be destroyed when no command buffers +The following Vulkan objects can: be destroyed when no command buffers using the object are executing: * sname:VkEvent @@ -328,7 +328,7 @@ using the object are executing: * sname:VkDeviceMemory * sname:VkDescriptorSet -The following {apiname} objects can: be destroyed when work on the queue +The following Vulkan objects can: be destroyed when work on the queue that uses the object has been completed: * sname:VkFence @@ -354,7 +354,7 @@ sname:VkDescriptorPool objects are parents of sname:VkDescriptorSet objects. sname:VkDevice objects are parents of many object types (all that take a sname:VkDevice as a parameter to their creation). -The following {apiname} objects have specific restrictions for when they +The following Vulkan objects have specific restrictions for when they can: be destroyed: * sname:VkQueue objects cannot: be explicitly destroyed. Instead, they are @@ -399,32 +399,32 @@ can: be destroyed: [[fundamentals-commandsyntax]] == Command Syntax and Duration -The Specification describes {apiname} commands as functions or procedures +The Specification describes Vulkan commands as functions or procedures using C99 syntax. Language bindings for other languages such as C++ and Javascript may: allow for stricter parameter passing, or object-oriented interfaces. -With few exceptions, {apiname} uses the standard C types for parameters (int +With few exceptions, Vulkan uses the standard C types for parameters (int types from stdint.h, etc). Exceptions to this are using basetype:VkResult for return values, using basetype:VkBool32 for boolean values, basetype:VkDeviceSize for sizes and offsets pertaining to device address space, and basetype:VkFlags for passing bits or sets of bits of predefined values. -Commands that create {apiname} objects are of the form ftext:vkCreate* and +Commands that create Vulkan objects are of the form ftext:vkCreate* and take stext:Vk*CreateInfo structures with the parameters needed to create the -object. These {apiname} objects are destroyed with commands of the form +object. These Vulkan objects are destroyed with commands of the form ftext:vkDestroy*. -The last in-parameter to each command that creates or destroys a {apiname} +The last in-parameter to each command that creates or destroys a Vulkan object is pname:pAllocator. The pname:pAllocator parameter can: be set to a non-`NULL` value such that allocations for the given object are delegated to an application provided callback; refer to the <> chapter for further details. -Commands that allocate {apiname} objects owned by pool objects are of the +Commands that allocate Vulkan objects owned by pool objects are of the form ftext:vkAllocate*, and take stext:Vk*AllocateInfo structures. These -{apiname} objects are freed with commands of the form ftext:vkFree*. +Vulkan objects are freed with commands of the form ftext:vkFree*. These objects do not take allocators; if host memory is needed, they will use the allocator that was specified when their parent pool was created. @@ -438,21 +438,21 @@ and/or outside a render pass, and in one or more of the supported queue types. These restrictions are documented together with the definition of each such command. -The _duration_ of a {apiname} command refers to the interval between calling +The _duration_ of a Vulkan command refers to the interval between calling the command and its return to the caller. [[fundamentals-threadingbehavior]] == Threading Behavior -{apiname} is intended to provide scalable performance when used on multiple +Vulkan is intended to provide scalable performance when used on multiple host threads. All commands support being called concurrently from multiple threads, but certain parameters, or components of parameters are defined to be _externally synchronized_. This means that the caller must: guarantee that no more than one thread is using such a parameter at a given time. -More precisely, {apiname} commands use simple stores to update software -structures representing {apiname} objects. A parameter declared as +More precisely, Vulkan commands use simple stores to update software +structures representing Vulkan objects. A parameter declared as externally synchronized may: have its software structures updated at any time during the host execution of the command. If two commands operate on the same object and at least one of the commands @@ -468,7 +468,7 @@ Memory barriers are particularly relevant on the ARM CPU architecture which is more weakly ordered than many developers are accustomed to from x86/x64 programming. Fortunately, most higher-level synchronization primitives (like the pthread library) perform memory barriers as a part of -mutual exclusion, so mutexing {apiname} objects via these primitives will +mutual exclusion, so mutexing Vulkan objects via these primitives will have the desired effect. ==== @@ -513,11 +513,11 @@ include::../hostsynctable/implicit.txt[] [[fundamentals-errors]] == Errors -{apiname} is a layered API. The lowest layer is the core {apiname} layer, as +Vulkan is a layered API. The lowest layer is the core Vulkan layer, as defined by this Specification. The application can: use additional layers above the core for debugging, validation, and other purposes. -One of the core principles of {apiname} is that building and submitting +One of the core principles of Vulkan is that building and submitting command buffers should: be highly efficient. Thus error checking and validation of state in the core layer is minimal, although more rigorous validation can: be enabled through the use of layers. @@ -602,18 +602,21 @@ ename:VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO. The values ename:VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO and ename:VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO are reserved for internal -use by the loader, and don't have corresponding {apiname} structures in this +use by the loader, and don't have corresponding Vulkan structures in this specification. Any parameter that is a structure containing a basetype:void* ptext:pNext -member must: have a value of ptext:pNext that is either `NULL`, or points to a -valid structure defined by an extension. If that extension is supported by -the implementation, then it must: be enabled. -Any component of the implementation (the loader, any enabled layers, and -drivers) must: ignore extension structures with pname:sType values defined -by extensions not supported by that component. +member must: have a value of ptext:pNext that is either `NULL`, or points to +a valid structure defined by an extension, containing ptext:sType and +ptext:pNext members as described in the <> section. If that extension is supported by the +implementation, then it must: be enabled. Any component of the +implementation (the loader, any enabled layers, and drivers) must: skip +over, without processing (other than reading the pname:sType and pname:pNext +members) any chained structures with pname:sType values not defined by +extensions supported by that component. -Extension structures are not described in the base {apiname} specification, +Extension structures are not described in the base Vulkan specification, but either in layered specifications incorporating those extensions, or in separate vendor-provided documents. @@ -628,8 +631,8 @@ sections. [[fundamentals-returncodes]] === Return Codes -While the core {apiname} API is not designed to capture incorrect usage, -some circumstances still require return codes. Commands in {apiname} return +While the core Vulkan API is not designed to capture incorrect usage, +some circumstances still require return codes. Commands in Vulkan return their status via return codes that are in one of two categories: * Successful completion codes are returned when a command needs to @@ -639,7 +642,7 @@ their status via return codes that are in one of two categories: failure that could only be detected at run time. All run time error codes are negative values. -All return codes in {apiname} are reported via basetype:VkResult return +All return codes in Vulkan are reported via basetype:VkResult return values. The possible codes are: include::../enums/VkResult.txt[] @@ -680,7 +683,7 @@ include::../enums/VkResult.txt[] * ename:VK_ERROR_FEATURE_NOT_PRESENT A requested feature is not supported. * ename:VK_ERROR_INCOMPATIBLE_DRIVER - The requested version of {apiname} is not supported by the driver or + The requested version of Vulkan is not supported by the driver or is otherwise incompatible for implementation-specific reasons. * ename:VK_ERROR_TOO_MANY_OBJECTS Too many objects of the type have already been created. @@ -690,7 +693,7 @@ include::../enums/VkResult.txt[] If a command returns a run time error, it will leave any result pointers unmodified. -Out of memory errors do not damage any currently existing {apiname} objects. +Out of memory errors do not damage any currently existing Vulkan objects. Objects that have already been successfully created can: still be used by the application. @@ -707,7 +710,7 @@ Implementations normally perform computations in floating-point, and must: meet the range and precision requirements defined under ``Floating-Point Computation'' below. -These requirements only apply to computations performed in {apiname} +These requirements only apply to computations performed in Vulkan operations outside of shader execution, such as texture image specification and sampling, and per-fragment operations. Range and precision requirements during shader execution differ and are specified @@ -716,7 +719,7 @@ Instructions>> section. In some cases, the representation and/or precision of operations is implicitly limited by the specified format of vertex or texel -data consumed by {apiname}. Specific floating-point formats are +data consumed by Vulkan. Specific floating-point formats are described later in this section. @@ -765,12 +768,12 @@ arithmetic operations such as latexmath:[$0 / 0$]. Implementations may: support latexmath:[$Inf$]s and latexmath:[$NaN$]s in their floating-point computations. -Any representable floating-point value is legal as input to a {apiname} +Any representable floating-point value is legal as input to a Vulkan command that requires floating-point data. The result of providing a value that is not a floating-point number to such a command is unspecified, but -mustnot: lead to {apiname} interruption or termination. In <> +mustnot: lead to Vulkan interruption or termination. In <> arithmetic, for example, providing a negative zero or a denormalized number -to an {apiname} command must: yield deterministic results, while providing a +to an Vulkan command must: yield deterministic results, while providing a latexmath:[$NaN$] or latexmath:[$Inf$] yields unspecified results. @@ -782,11 +785,11 @@ latexmath:[$NaN$] or latexmath:[$Inf$] yields unspecified results. section of the Khronos Data Format Specification. Any representable 16-bit floating-point value is legal as input to a -{apiname} command that accepts 16-bit floating-point data. The result of +Vulkan command that accepts 16-bit floating-point data. The result of providing a value that is not a floating-point number (such as latexmath:[$Inf$] or latexmath:[$NaN$]) to such a command is -unspecified, but mustnot: lead to {apiname} interruption or termination. -Providing a denormalized number or negative zero to {apiname} must: yield +unspecified, but mustnot: lead to Vulkan interruption or termination. +Providing a denormalized number or negative zero to Vulkan must: yield deterministic results. @@ -810,11 +813,11 @@ converted to positive infinity; and both positive and negative latexmath:[$NaN$] are converted to positive latexmath:[$NaN$]. Any representable unsigned 11-bit floating-point value is legal as input -to a {apiname} command that accepts 11-bit floating-point data. The +to a Vulkan command that accepts 11-bit floating-point data. The result of providing a value that is not a floating-point number (such as latexmath:[$Inf$] or latexmath:[$NaN$]) to such a command is -unspecified, but mustnot: lead to {apiname} interruption or termination. -Providing a denormalized number to {apiname} must: yield deterministic +unspecified, but mustnot: lead to Vulkan interruption or termination. +Providing a denormalized number to Vulkan must: yield deterministic results. @@ -838,11 +841,11 @@ converted to positive infinity; and both positive and negative latexmath:[$NaN$] are converted to positive latexmath:[$NaN$]. Any representable unsigned 10-bit floating-point value is legal as input to -a {apiname} command that accepts 10-bit floating-point data. The result of +a Vulkan command that accepts 10-bit floating-point data. The result of providing a value that is not a floating-point number (such as latexmath:[$Inf$] or latexmath:[$NaN$]) to such a command is unspecified, -but mustnot: lead to {apiname} interruption or termination. Providing a -denormalized number to {apiname} must: yield deterministic results. +but mustnot: lead to Vulkan interruption or termination. Providing a +denormalized number to Vulkan must: yield deterministic results. [[fundamentals-general]] @@ -850,7 +853,7 @@ denormalized number to {apiname} must: yield deterministic results. Some calculations require division. In such cases (including implied divisions performed by vector normalization), division by zero produces an -unspecified result but mustnot: lead to {apiname} interruption or +unspecified result but mustnot: lead to Vulkan interruption or termination. @@ -907,7 +910,7 @@ representation, one value (latexmath:[$-128$] in the example) is outside the representable range, and must: be clamped before use. This equation is used everywhere that signed normalized fixed-point values are converted to floating-point, including for all signed normalized fixed-point parameters -in {apiname} commands, such as vertex attribute values, as well as for +in Vulkan commands, such as vertex attribute values, as well as for specifying texture or framebuffer values using signed normalized fixed-point. @@ -963,7 +966,7 @@ or framebuffer values using floating-point. [[fundamentals-versionnum]] == API Version Numbers and Semantics -The {apiname} version number is used in several places in the API. In each +The Vulkan version number is used in several places in the API. In each such use, the API _major version number_, _minor version number_, and _patch version number_ are packed into a 32-bit integer as follows: @@ -971,7 +974,7 @@ version number_ are packed into a 32-bit integer as follows: * The minor version number is a 10-bit integer packed into bits 21-12. * The patch version number is a 12-bit integer packed into bits 11-0. -Differences in any of the {apiname} version numbers indicates a change to +Differences in any of the Vulkan version numbers indicates a change to the API in some way, with each part of the version number indicating a different scope of changes. @@ -1001,7 +1004,7 @@ significant modification to an application in order for it to function. [[fundamentals-common-objects]] == Common Object Types -Some types of {apiname} objects are used in many different structures and +Some types of Vulkan objects are used in many different structures and command parameters, and are described here. These types include _offsets_, _extents_, and _rectangles_. diff --git a/doc/specs/vulkan/chapters/fxvertex.txt b/doc/specs/vulkan/chapters/fxvertex.txt index 651acab2..9fd3d8fb 100644 --- a/doc/specs/vulkan/chapters/fxvertex.txt +++ b/doc/specs/vulkan/chapters/fxvertex.txt @@ -6,7 +6,7 @@ Some implementations have specialized fixed-function hardware for fetching and format-converting vertex input data from buffers, rather than performing -the fetch as part of the vertex shader. {apiname} includes a vertex +the fetch as part of the vertex shader. Vulkan includes a vertex attribute fetch stage in the graphics pipeline in order to take advantage of this. diff --git a/doc/specs/vulkan/chapters/initialization.txt b/doc/specs/vulkan/chapters/initialization.txt index 100a64d1..c9f5d396 100644 --- a/doc/specs/vulkan/chapters/initialization.txt +++ b/doc/specs/vulkan/chapters/initialization.txt @@ -4,14 +4,14 @@ [[initialization]] = Initialization -Before using {apiname}, an application must: initialize it by loading the -{apiname} commands, and creating a sname:VkInstance object. +Before using Vulkan, an application must: initialize it by loading the +Vulkan commands, and creating a sname:VkInstance object. [[initialization-functionpointers]] == Command Function Pointers -{apiname} commands are not necessarily exposed statically on a platform. -Function pointers for all {apiname} commands can: be obtained with the +Vulkan commands are not necessarily exposed statically on a platform. +Function pointers for all Vulkan commands can: be obtained with the command: include::../protos/vkGetInstanceProcAddr.txt[] @@ -27,8 +27,8 @@ specific manner. Typically, the loader library will export this command as a function symbol, so applications can: link against the loader library, or load it dynamically and look up the symbol using platform-specific APIs. Loaders are encouraged to export function symbols for all other core -{apiname} commands as well; if this is done, then applications that use only -the core {apiname} commands have no need to use fname:vkGetInstanceProcAddr. +Vulkan commands as well; if this is done, then applications that use only +the core Vulkan commands have no need to use fname:vkGetInstanceProcAddr. Function pointers to commands that don't operate on a specific instance can: be obtained by using this command with pname:instance equal to `NULL`. The @@ -43,7 +43,7 @@ commands that operate on pname:instance or a child of pname:instance can: be obtained. The returned function pointer must: only be called with a dispatchable object (the first parameter) that is a child of pname:instance. -If pname:pName is not the name of a core {apiname} command, or is an +If pname:pName is not the name of a core Vulkan command, or is an extension command for any extension not supported by any available layer or implementation, then fname:vkGetInstanceProcAddr will return `NULL`. @@ -66,7 +66,7 @@ it. ==== endif::editing-notes[] -In order to support systems with multiple {apiname} implementations +In order to support systems with multiple Vulkan implementations comprising heterogeneous collections of hardware and software, the function pointers returned by fname:vkGetInstanceProcAddr may: point to dispatch code, which calls a different real implementation for different @@ -79,13 +79,13 @@ command: include::../protos/vkGetDeviceProcAddr.txt[] * pname:device is the logical device that provides the function pointer. - * pname:pName is the name of any {apiname} command whose first parameter + * pname:pName is the name of any Vulkan command whose first parameter is one of ** sname:VkDevice ** sname:VkQueue ** sname:VkCommandBuffer -If pname:pName is not the name of one of these {apiname} commands, and is +If pname:pName is not the name of one of these Vulkan commands, and is not the name of an extension command belonging to an extension enabled for pname:device, then fname:vkGetDeviceProcAddr will return `NULL`. @@ -94,9 +94,9 @@ include::../validity/protos/vkGetDeviceProcAddr.txt[] [[initialization-instances]] == Instances -There is no global state in {apiname} and all per-application state is +There is no global state in Vulkan and all per-application state is stored in a sname:VkInstance object. Creating a sname:VkInstance object -initializes the {apiname} library and allows the application to pass +initializes the Vulkan library and allows the application to pass information about itself to the implementation. To create an instance object, call: @@ -160,7 +160,7 @@ include::../structs/VkApplicationInfo.txt[] * pname:engineVersion is an unsigned integer variable containing the developer-supplied version number of the engine used to create the application. - * pname:apiVersion is the version of the {apiname} API against which the + * pname:apiVersion is the version of the Vulkan API against which the application expects to run, encoded as described in the <> section. If pname:apiVersion is 0 the implementation must: ignore it, otherwise diff --git a/doc/specs/vulkan/chapters/interfaces.txt b/doc/specs/vulkan/chapters/interfaces.txt index 1e09f03b..b283d564 100644 --- a/doc/specs/vulkan/chapters/interfaces.txt +++ b/doc/specs/vulkan/chapters/interfaces.txt @@ -889,9 +889,9 @@ within the local workgroup. The range of possible values for each component of LocalInvocationID range from zero through the size of the workgroup in that dimension minus one. If the size of the workgroup in a particular dimension is one, then LocalInvocationID in that dimension will be zero. That is, if the -workgroup is effectively two-dimensional, then pname:LocalInvocationID.z will +workgroup is effectively two-dimensional, then code:LocalInvocationID.z will be zero, and if the workgroup is one-dimensional, then both -pname:LocalInvocationID.y and pname:LocalInvocationID.z will be zero. +code:LocalInvocationID.y and code:LocalInvocationID.z will be zero. + The code:LocalInvocationID decoration is only supported in compute shaders. + diff --git a/doc/specs/vulkan/chapters/introduction.txt b/doc/specs/vulkan/chapters/introduction.txt index 3eb1031e..7fcac7cc 100644 --- a/doc/specs/vulkan/chapters/introduction.txt +++ b/doc/specs/vulkan/chapters/introduction.txt @@ -7,23 +7,23 @@ This chapter is Informative except for the sections on Terminology and Normative References. -This document, referred to as the ``{apiname} Specification'' or just the -``Specification'' hereafter, describes the {apiname} graphics system: what +This document, referred to as the ``Vulkan Specification'' or just the +``Specification'' hereafter, describes the Vulkan graphics system: what it is, how it acts, and what is required to implement it. We assume that the reader has at least a rudimentary understanding of computer graphics. This means familiarity with the essentials of computer graphics algorithms and terminology as well as with modern GPUs (Graphic Processing Units). The canonical version of the Specification is available in the official -{apiname} Registry, located at URL +Vulkan Registry, located at URL http://www.khronos.org/registry/vulkan/ [[introduction-whatis]] -== What is the {apiname} Graphics System? +== What is the Vulkan Graphics System? -{apiname} is an API (Application Programming Interface) for graphics and +Vulkan is an API (Application Programming Interface) for graphics and compute hardware. The API consists of many commands that allow a programmer to specify shader programs, compute kernels, objects, and operations involved in producing high-quality graphical images, specifically @@ -31,18 +31,18 @@ color images of three-dimensional objects. [[introduction-programmer]] -=== The Programmer's View of {apiname} +=== The Programmer's View of Vulkan -To the programmer, {apiname} is a set of commands that allow the +To the programmer, Vulkan is a set of commands that allow the specification of _shader programs_ or _shaders_, _kernels_, data used by -kernels or shaders, and state controlling aspects of {apiname} outside the +kernels or shaders, and state controlling aspects of Vulkan outside the scope of shaders. Typically, the data represents geometry in two or three dimensions and texture images, while the shaders and kernels control the processing of the data, rasterization of the geometry, and the lighting and shading of _fragments_ generated by rasterization, resulting in the rendering of geometry into the framebuffer. -A typical {apiname} program begins with platform-specific calls to open a +A typical Vulkan program begins with platform-specific calls to open a window or otherwise prepare a display device onto which the program will draw. Then, calls are made to open _queues_ to which _command buffers_ are submitted. The command buffers contain lists of commands which will be @@ -56,24 +56,24 @@ transfer the resulting image to a display device or window. [[introduction-implementor]] -=== The Implementor's View of {apiname} +=== The Implementor's View of Vulkan -To the implementor, {apiname} is a set of commands that allow the +To the implementor, Vulkan is a set of commands that allow the construction and submission of command buffers to a device. Modern devices -accelerate virtually all {apiname} operations, storing data and framebuffer +accelerate virtually all Vulkan operations, storing data and framebuffer images in high-speed memory and executing shaders in dedicated GPU processing resources. The implementor's task is to provide a software library on the host which -implements the {apiname} API, while mapping the work for each {apiname} +implements the Vulkan API, while mapping the work for each Vulkan command to the graphics hardware as appropriate for the capabilities of the device. [[introduction-ourview]] -=== Our View of {apiname} +=== Our View of Vulkan -We view {apiname} as a pipeline having some programmable stages and some +We view Vulkan as a pipeline having some programmable stages and some state-driven fixed-function stages that are invoked by a set of specific drawing operations. We expect this model to result in a specification that satisfies the needs of both programmers and implementors. It does not, @@ -86,7 +86,7 @@ efficient than the one specified. [[introduction-bugs]] == Filing Bug Reports -Issues with and bug reports on the {apiname} Specification and the API +Issues with and bug reports on the Vulkan Specification and the API Registry can: be filed in the Khronos Vulkan Github repository, located at URL @@ -173,7 +173,7 @@ endif::editing-notes[] == Normative References Normative references are references to external documents or resources to -which implementers of {apiname} must: comply. +which implementers of Vulkan must: comply. [[IEEE 754]]:: _IEEE Standard for Floating-Point Arithmetic_, IEEE Std 754-2008, diff --git a/doc/specs/vulkan/chapters/memory.txt b/doc/specs/vulkan/chapters/memory.txt index 0ba4c388..cc8f7505 100644 --- a/doc/specs/vulkan/chapters/memory.txt +++ b/doc/specs/vulkan/chapters/memory.txt @@ -4,20 +4,20 @@ [[memory]] = Memory Allocation -{apiname} memory is broken up into two categories, _host memory_ and +Vulkan memory is broken up into two categories, _host memory_ and _device memory_. [[memory-host]] == Host Memory -Host memory is memory needed by the {apiname} implementation for +Host memory is memory needed by the Vulkan implementation for non-device-visible storage. This storage may: be used for e.g. internal software structures. [[memory-allocation]] -{apiname} provides applications the opportunity to perform host memory -allocations on behalf of the {apiname} implementation. If this feature is +Vulkan provides applications the opportunity to perform host memory +allocations on behalf of the Vulkan implementation. If this feature is not used, the implementation will perform its own memory allocations. Since most memory allocations are off the critical path, this is not meant as a performance feature. Rather, this can: be useful for certain embedded @@ -31,7 +31,7 @@ include::../structs/VkAllocationCallbacks.txt[] * pname:pUserData is a value to be interpreted by the implementation of the callbacks. When any of the callbacks in sname:VkAllocationCallbacks - are called, the {apiname} implementation will pass this value as the + are called, the Vulkan implementation will pass this value as the first parameter to the callback. This value can: vary each time an allocator is passed into a command, even when the same object takes an allocator in multiple commands. @@ -190,17 +190,17 @@ parameter and takes a value of type elink:VkSystemAllocationScope: include::../enums/VkSystemAllocationScope.txt[] * ename:VK_SYSTEM_ALLOCATION_SCOPE_COMMAND - The allocation is scoped to - the duration of the {apiname} command. + the duration of the Vulkan command. * ename:VK_SYSTEM_ALLOCATION_SCOPE_OBJECT - The allocation is scoped to - the lifetime of the {apiname} object that is being created or used. + the lifetime of the Vulkan object that is being created or used. * ename:VK_SYSTEM_ALLOCATION_SCOPE_CACHE - The allocation is scoped to the lifetime of a sname:VkPipelineCache object. * ename:VK_SYSTEM_ALLOCATION_SCOPE_DEVICE - The allocation is scoped to - the lifetime of the {apiname} device. + the lifetime of the Vulkan device. * ename:VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE - The allocation is scoped to - the lifetime of the {apiname} instance. + the lifetime of the Vulkan instance. -Most {apiname} commands operate on a single object, or there is a sole +Most Vulkan commands operate on a single object, or there is a sole object that is being created or manipulated. When an allocation uses a scope of ename:VK_SYSTEM_ALLOCATION_SCOPE_OBJECT or ename:VK_SYSTEM_ALLOCATION_SCOPE_CACHE, the allocation is scoped to the @@ -292,7 +292,7 @@ If pname:pfnAllocation or pname:pfnReallocation fail, the implementation may: fail object creation and/or generate an ename:VK_ERROR_OUT_OF_HOST_MEMORY error, as appropriate. -Allocation callbacks must: not call any {apiname} commands. +Allocation callbacks must: not call any Vulkan commands. The following sets of rules define when an implementation is permitted to call the allocator callbacks. @@ -493,8 +493,8 @@ The memory types are sorted according to a preorder which serves to aid in easily selecting an appropriate memory type. Given two memory types X and Y, the preorder defines latexmath:[$X \leq Y$] if: - * the memory property bits set for X are a subset of the memory property - bits set for Y. Or, + * the memory property bits set for X are a strict subset of the memory + property bits set for Y. Or, * the memory property bits set for X are the same as the memory property bits set for Y, and X uses a memory heap with greater or equal performance (as determined in an implementation-specific manner). @@ -539,7 +539,7 @@ accesses, as appropriate for the intended usage, and if such a memory type is not present can: fallback to searching for a less optimal but guaranteed set of properties such as "0" or "host-visible and coherent". -A {apiname} device operates on data in device memory via memory objects that +A Vulkan device operates on data in device memory via memory objects that are represented in the API by a sname:VkDeviceMemory handle. Memory objects are allocated by calling fname:vkAllocateMemory: @@ -657,16 +657,6 @@ include::../validity/protos/vkMapMemory.txt[] It is an application error to call fname:vkMapMemory on a memory object that is already mapped. -ifdef::editing-notes[] -[NOTE] -.editing-note -==== -TODO (Tobias) - There's a circular section reference in this next section. -The information is all covered by both places, but it seems a bit weird to -have them reference each other. Not sure how to resolve it. -==== -endif::editing-notes[] - [[memory-device-hostaccess-hazards]] fname:vkMapMemory does not check whether the device memory is currently in use before returning the host-accessible pointer. The application @@ -696,35 +686,11 @@ familiar with all of the mechanisms described in the chapter on to maintaining memory access ordering. ==== -Host-visible memory types that advertise the -ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT property still require -<> between host and -device in order to be coherent, but do not require additional cache -management operations (fname:vkFlushMappedMemoryRanges or -fname:vkInvalidateMappedMemoryRanges) to achieve coherency. For host writes -to be seen by subsequent command buffer operations, a pipeline barrier from -a source of ename:VK_ACCESS_HOST_WRITE_BIT and -ename:VK_PIPELINE_STAGE_HOST_BIT to a destination of the relevant device -pipeline stages and access types must: be performed. Note that such a -barrier is performed -<> upon each -command buffer submission, so an explicit barrier is only rarely needed -(e.g. if a command buffer waits upon an event signaled by the host, where -the host wrote some data after submission). For device writes to be seen by -subsequent host reads, a pipeline barrier is required: to -<>. +Two commands are provided to enable applications to work with +non-coherent memory allocations: fname:vkFlushMappedMemoryRanges and +fname:vkInvalidateMappedMemoryRanges. -In order to enable applications to work with non-coherent memory -allocations, two entry points are provided. To flush host write caches, an -application must: use fname:vkFlushMappedMemoryRanges, while -fname:vkInvalidateMappedMemoryRanges allows invalidating host input caches -so that device writes become visible to the host. -fname:vkFlushMappedMemoryRanges must: be called after the host writes to -non-coherent memory have completed and before command buffers that will read -or write any of those memory locations are submitted to a queue. Similarly, -fname:vkInvalidateMappedMemoryRanges must: be called after command buffers -that execute and flush (via memory barriers) the device writes have -completed, and before the host will read or write any of those locations. +To flush ranges of non-coherent memory from the host caches, call: include::../protos/vkFlushMappedMemoryRanges.txt[] @@ -736,6 +702,13 @@ include::../protos/vkFlushMappedMemoryRanges.txt[] include::../validity/protos/vkFlushMappedMemoryRanges.txt[] +fname:vkFlushMappedMemoryRanges must: be used to guarantee that host writes to +non-coherent memory are visible to the device. It must: be called after the host +writes to non-coherent memory have completed and before command buffers that will +read or write any of those memory locations are submitted to a queue. + +To invalidate ranges of non-coherent memory from the host caches, call: + include::../protos/vkInvalidateMappedMemoryRanges.txt[] * pname:device is the logical device that owns the memory ranges. @@ -770,8 +743,42 @@ fname:vkFlushMappedMemoryRanges and fname:vkInvalidateMappedMemoryRanges are unnecessary and may: have performance cost. ==== +fname:vkInvalidateMappedMemoryRanges must: be used to guarantee that device writes to +non-coherent memory are visible to the host. It must: be called after command buffers +that execute and flush (via memory barriers) the device writes have completed, and +before the host will read or write any of those locations. If a range of non-coherent +memory is written by the host and then invalidated without first being flushed, its +contents are undefined. + +ifdef::editing-notes[] +[NOTE] +.editing-note +==== +TODO (Tobias) - There's a circular section reference between this next section +and the <>. The +information is all covered by both places, but it seems a bit weird to have them +reference each other. Not sure how to resolve it. +==== +endif::editing-notes[] + +Host-visible memory types that advertise the +ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT property still require +<> between host and device +in order to be coherent, but do not require additional cache management +operations to achieve coherency. For host writes to +be seen by subsequent command buffer operations, a pipeline barrier from +a source of ename:VK_ACCESS_HOST_WRITE_BIT and ename:VK_PIPELINE_STAGE_HOST_BIT +to a destination of the relevant device pipeline stages and access types must: +be performed. Note that such a barrier is performed +<> upon each +command buffer submission, so an explicit barrier is only rarely needed +(e.g. if a command buffer waits upon an event signaled by the host, where +the host wrote some data after submission). For device writes to be seen by +subsequent host reads, a pipeline barrier is required: to +<>. + Once host access to a memory object is no longer needed by the application, -it can: be unmapped by calling : +it can: be unmapped by calling: include::../protos/vkUnmapMemory.txt[] diff --git a/doc/specs/vulkan/chapters/pipelines.txt b/doc/specs/vulkan/chapters/pipelines.txt index f6908236..0c9382dd 100644 --- a/doc/specs/vulkan/chapters/pipelines.txt +++ b/doc/specs/vulkan/chapters/pipelines.txt @@ -5,7 +5,7 @@ = Pipelines The following <> shows a block diagram of -the {apiname} pipelines. Some {apiname} commands specify geometric objects +the Vulkan pipelines. Some Vulkan commands specify geometric objects to be drawn or computational work to be performed, while others specify state controlling how objects are handled by the various pipeline stages, or control data transfer between memory organized as images and buffers. @@ -46,8 +46,8 @@ The <> is a separate pipeline from the graphics pipeline, which operates on one-, two-, or three-dimensional workgroups which can: read from and write to buffer and image memory. -This ordering is meant only as a tool for describing {apiname}, not as a -strict rule of how {apiname} is implemented, and we present it only as a +This ordering is meant only as a tool for describing Vulkan, not as a +strict rule of how Vulkan is implemented, and we present it only as a means to organize the various operations of the pipelines. [[pipelines-block-diagram]] @@ -98,7 +98,7 @@ include::../protos/vkCreateComputePipelines.txt[] <> object, in which case use of that cache is enabled for the duration of the command. * pname:createInfoCount is the length of the pname:pCreateInfos and - pname:Pipelines arrays. + pname:pPipelines arrays. * pname:pCreateInfos is an array of sname:VkComputePipelineCreateInfo structures. * pname:pAllocator controls host memory allocation as described in the @@ -183,7 +183,7 @@ include::../protos/vkCreateGraphicsPipelines.txt[] <> object, in which case use of that cache is enabled for the duration of the command. * pname:createInfoCount is the length of the pname:pCreateInfos and - pname:Pipelines arrays. + pname:pPipelines arrays. * pname:pCreateInfos is an array of sname:VkGraphicsPipelineCreateInfo structures. * pname:pAllocator controls host memory allocation as described in the diff --git a/doc/specs/vulkan/chapters/primsrast.txt b/doc/specs/vulkan/chapters/primsrast.txt index 54a00b6a..36eb9d04 100644 --- a/doc/specs/vulkan/chapters/primsrast.txt +++ b/doc/specs/vulkan/chapters/primsrast.txt @@ -122,7 +122,7 @@ stage in the pipeline before rasterization. [[primsrast-multisampling]] == Multisampling -Multisampling is a mechanism to antialias all {apiname} primitives: points, +Multisampling is a mechanism to antialias all Vulkan primitives: points, lines, and polygons. The technique is to sample all primitives multiple times at each pixel. Each sample in each framebuffer attachment has storage for a color, depth, and/or stencil value, such that per-fragment operations @@ -131,7 +131,7 @@ _resolved_ to a single color (see <> and the <> chapter for more details on how to resolve multisample images to non-multisample images). -{apiname} defines rasterization rules for single-sample modes in a way that +Vulkan defines rasterization rules for single-sample modes in a way that is equivalent to a multisample mode with a single sample in the center of each pixel. diff --git a/doc/specs/vulkan/chapters/queries.txt b/doc/specs/vulkan/chapters/queries.txt index a831f1f0..8921c430 100644 --- a/doc/specs/vulkan/chapters/queries.txt +++ b/doc/specs/vulkan/chapters/queries.txt @@ -5,7 +5,7 @@ = Queries _Queries_ provide a mechanism to return information about the processing of -a sequence of {apiname} commands. Query operations are asynchronous, and as +a sequence of Vulkan commands. Query operations are asynchronous, and as such, their results are not returned immediately. Instead, their results, and their availability status, are stored in a <>. The state of these queries can: be read back on the host, or copied @@ -246,7 +246,7 @@ These bits have the following meanings: * ename:VK_QUERY_RESULT_64_BIT indicates the results will be written as an array of 64-bit unsigned integer values. If this bit is not set, the results will be written as an array of 32-bit unsigned integer values. - * ename:VK_QUERY_RESULT_WAIT_BIT indicates that {apiname} will wait for + * ename:VK_QUERY_RESULT_WAIT_BIT indicates that Vulkan will wait for each query's status to become available before retrieving its results. * ename:VK_QUERY_RESULT_WITH_AVAILABILITY_BIT indicates that the availability status accompanies the results. @@ -263,7 +263,7 @@ If ename:VK_QUERY_RESULT_64_BIT is not set and the result overflows a ename:VK_QUERY_RESULT_64_BIT is set and the result overflows a 64-bit value, the value may: either wrap or saturate. -If ename:VK_QUERY_RESULT_WAIT_BIT is set, {apiname} will wait for each +If ename:VK_QUERY_RESULT_WAIT_BIT is set, Vulkan will wait for each query to be in the available state before retrieving the numerical results for that query. In this case, fname:vkGetQueryPoolResults is guaranteed to succeed and return ename:VK_SUCCESS if the queries @@ -458,7 +458,7 @@ but still not be visible in a final image. == Pipeline Statistics Queries Pipeline statistics queries allow the application to sample a specified set -of sname:VkPipeline counters. These counters are accumulated by {apiname} +of sname:VkPipeline counters. These counters are accumulated by Vulkan for a set of either draw or dispatch commands while a pipeline statistics query is active. As such, pipeline statistics queries are available on queue families supporting either graphics or compute operations. Further, diff --git a/doc/specs/vulkan/chapters/renderpass.txt b/doc/specs/vulkan/chapters/renderpass.txt index 6d50f16c..cea83b21 100644 --- a/doc/specs/vulkan/chapters/renderpass.txt +++ b/doc/specs/vulkan/chapters/renderpass.txt @@ -758,8 +758,8 @@ include::../structs/VkRenderPassBeginInfo.txt[] * pname:pClearValues is an array of slink:VkClearValue structures that contains clear values for each attachment, if the attachment uses a pname:loadOp value of ename:VK_ATTACHMENT_LOAD_OP_CLEAR. The array is - indexed by attachment number, with elements corresponding to uncleared - attachments being unused. + indexed by attachment number. Only elements corresponding to cleared + attachments are used. Other elements of pname:pClearValues are ignored. include::../validity/structs/VkRenderPassBeginInfo.txt[] diff --git a/doc/specs/vulkan/chapters/resources.txt b/doc/specs/vulkan/chapters/resources.txt index 6c1a586f..2928fbac 100644 --- a/doc/specs/vulkan/chapters/resources.txt +++ b/doc/specs/vulkan/chapters/resources.txt @@ -4,7 +4,7 @@ [[resources]] = Resource Creation -{apiname} supports two primary resource types: _buffers_ and _images_. +Vulkan supports two primary resource types: _buffers_ and _images_. Resources are views of memory with associated formatting and dimensionality. Buffers are essentially unformatted arrays of bytes whereas images contain format information, can: be multidimensional and may: have associated @@ -449,7 +449,7 @@ pname:depthPitch is defined only for 3D images. For color formats, the pname:aspectMask member of sname:VkImageSubresource must: be ename:VK_IMAGE_ASPECT_COLOR_BIT. For depth/stencil formats, -pname:aspect must: be either ename:VK_IMAGE_ASPECT_DEPTH_BIT or +pname:aspectMask must: be either ename:VK_IMAGE_ASPECT_DEPTH_BIT or ename:VK_IMAGE_ASPECT_STENCIL_BIT. On implementations that store depth and stencil aspects separately, querying each of these image subresource layouts will return a different pname:offset and pname:size representing the region @@ -996,7 +996,7 @@ include::../protos/vkBindBufferMemory.txt[] include::../validity/protos/vkBindBufferMemory.txt[] -To attach memory to a image object, call: +To attach memory to an image object, call: include::../protos/vkBindImageMemory.txt[] diff --git a/doc/specs/vulkan/chapters/samplers.txt b/doc/specs/vulkan/chapters/samplers.txt index 3c7c1419..7dcc205a 100644 --- a/doc/specs/vulkan/chapters/samplers.txt +++ b/doc/specs/vulkan/chapters/samplers.txt @@ -109,7 +109,7 @@ include::../enums/VkBorderColor.txt[] ** The functions mustnot: use offsets. [NOTE] -.Mapping of OpenGL to {apiname} filter modes +.Mapping of OpenGL to Vulkan filter modes ================== pname:magFilter values of ename:VK_FILTER_NEAREST and ename:VK_FILTER_LINEAR directly correspond to code:GL_NEAREST and code:GL_LINEAR magnification @@ -120,7 +120,7 @@ ename:VK_FILTER_LINEAR and pname:mipmapMode of ename:VK_SAMPLER_MIPMAP_MODE_NEAREST correspond to code:GL_LINEAR_MIPMAP_NEAREST). -There are no {apiname} filter modes that directly correspond to OpenGL +There are no Vulkan filter modes that directly correspond to OpenGL minification filters of code:GL_LINEAR or code:GL_NEAREST, but they can: be emulated using ename:VK_SAMPLER_MIPMAP_MODE_NEAREST, pname:minLod = 0, and pname:maxLod = 0.25, and using pname:minFilter = ename:VK_FILTER_LINEAR or diff --git a/doc/specs/vulkan/chapters/shaders.txt b/doc/specs/vulkan/chapters/shaders.txt index 70e29756..dc59d5d5 100644 --- a/doc/specs/vulkan/chapters/shaders.txt +++ b/doc/specs/vulkan/chapters/shaders.txt @@ -40,7 +40,7 @@ _Shader modules_ contain _shader code_ and one or more entry points. Shaders are selected from a shader module by specifying an entry point as part of <> creation. The stages of a pipeline can: use shaders that come from different modules. The shader code defining a shader module -must: be in the SPIR-V format, as described by the <> appendix. A shader module is created by calling: diff --git a/doc/specs/vulkan/chapters/sparsemem.txt b/doc/specs/vulkan/chapters/sparsemem.txt index e8fa836b..39ef1bfc 100644 --- a/doc/specs/vulkan/chapters/sparsemem.txt +++ b/doc/specs/vulkan/chapters/sparsemem.txt @@ -5,7 +5,7 @@ = Sparse Resources As documented in <>, -sname:VkBuffer and sname:VkImage resources in {apiname} must: be bound +sname:VkBuffer and sname:VkImage resources in Vulkan must: be bound completely and contiguously to a single sname:VkDeviceMemory object. This binding must: be done before the resource is used, and the binding is immutable for the lifetime of the resource. @@ -1027,7 +1027,7 @@ arrayMipTailOffset = imageMipTailOffset + arrayLayer * imageMipTailStride; and the mip tail can: be bound with code:layerCount slink:VkSparseMemoryBind structures, each using pname:size = pname:imageMipTailSize and -pname:resourceOffset = pname:arrayMipTailOffset as defined above. +pname:resourceOffset = ptext:arrayMipTailOffset as defined above. Sparse memory binding is handled by the following APIs and related data structures. @@ -1167,7 +1167,7 @@ include::../structs/VkSparseImageMemoryBind.txt[] * pname:extent is the size in texels of the region within the image subresource to bind. The extent must: be a multiple of the sparse image block dimensions, except when binding sparse image blocks along the edge - of a image subresource it can: instead be such that any coordinate of + of an image subresource it can: instead be such that any coordinate of latexmath:[$\mathit{offset} + \mathit{extent}$] equals the corresponding dimensions of the image subresource. * pname:memory is the sname:VkDeviceMemory object that the sparse image diff --git a/doc/specs/vulkan/chapters/synchronization.txt b/doc/specs/vulkan/chapters/synchronization.txt index 6f8f43bb..8f74e2df 100644 --- a/doc/specs/vulkan/chapters/synchronization.txt +++ b/doc/specs/vulkan/chapters/synchronization.txt @@ -5,17 +5,17 @@ = Synchronization and Cache Control Synchronization of access to resources is primarily the responsibility of -the application. In {apiname}, there are four forms of concurrency during +the application. In Vulkan, there are four forms of concurrency during execution: between the host and device, between the queues, between queue submissions, and between commands within a command buffer. -{apiname} provides the application with a set of +Vulkan provides the application with a set of synchronization primitives for these purposes. Further, memory caches and other optimizations mean that the normal flow of command execution does not guarantee that all memory transactions from a command are immediately -visible to other agents with views into a given range of memory. {apiname} +visible to other agents with views into a given range of memory. Vulkan also provides barrier operations to ensure this type of synchronization. -Four synchronization primitive types are exposed by {apiname}. These are: +Four synchronization primitive types are exposed by Vulkan. These are: * <> * <> @@ -225,7 +225,7 @@ include::../protos/vkDestroySemaphore.txt[] include::../validity/protos/vkDestroySemaphore.txt[] To signal a semaphore from a queue, include it in an element of the array -of slink:VkSubmitInfo structures passed through the pname:pSubmitInfo +of slink:VkSubmitInfo structures passed through the pname:pSubmits parameter to a call to flink:vkQueueSubmit, or in an element of the array of slink:VkBindSparseInfo structures passed through the pname:pBindInfo parameter to a call to flink:vkQueueBindSparse. @@ -297,7 +297,7 @@ performed in between. (The primary use case for this example is with the presentation extensions, thus the etext:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR token is used even though it -is not defined in the core {apiname} specification.) +is not defined in the core Vulkan specification.) ==== When a queue signals or waits upon a semaphore, certain @@ -313,7 +313,7 @@ the host. Events represent a fine-grained synchronization primitive that can: be used to gauge progress through a sequence of commands executed on a queue by -{apiname}. An event is initially in the unsignaled state. It can: be +Vulkan. An event is initially in the unsignaled state. It can: be signaled by a device, using commands inserted into the command buffer, or by the host. It can: also be reset to the unsignaled state by a device or the host. The host can: query the state of an event. A device can: wait for one @@ -936,7 +936,7 @@ Enumeration>> and <>. _Memory barriers_ express the two halves of a memory dependency between an earlier set of memory accesses against a later set of memory accesses. -{apiname} provides three types of memory barriers: global memory, buffer +Vulkan provides three types of memory barriers: global memory, buffer memory, and image memory. @@ -1142,7 +1142,7 @@ include::../validity/structs/VkBufferMemoryBarrier.txt[] The image memory barrier type is specified with an instance of the sname:VkImageMemoryBarrier structure. This type of barrier only applies to memory accesses involving a specific image subresource range of the -specified image object. That is, a memory dependency formed from a image +specified image object. That is, a memory dependency formed from an image memory barrier is <> to the specified image subresources of the image. It is also used to perform a diff --git a/doc/specs/vulkan/copyright.txt b/doc/specs/vulkan/copyright.txt index 9d45fbb5..e2eea321 100644 --- a/doc/specs/vulkan/copyright.txt +++ b/doc/specs/vulkan/copyright.txt @@ -62,6 +62,6 @@ representatives be liable for any damages, whether direct, indirect, special or consequential damages for lost revenues, lost profits, or otherwise, arising from or in connection with these materials. -Khronos and {apiname} are trademarks of The Khronos Group Inc. OpenCL is a trademark of +Khronos and Vulkan are trademarks of The Khronos Group Inc. OpenCL is a trademark of Apple Inc. and OpenGL is a registered trademark of Silicon Graphics International, both used under license by Khronos. diff --git a/doc/specs/vulkan/man/vkAllocateCommandBuffers.txt b/doc/specs/vulkan/man/vkAllocateCommandBuffers.txt index 3af458c9..948b2386 100644 --- a/doc/specs/vulkan/man/vkAllocateCommandBuffers.txt +++ b/doc/specs/vulkan/man/vkAllocateCommandBuffers.txt @@ -25,7 +25,7 @@ pname:pCommandBuffers:: Description ----------- -fname::vkAllocateCommandBuffers allocates command buffers from an existing command pool. pname:pAllocateInfo +fname:vkAllocateCommandBuffers allocates command buffers from an existing command pool. pname:pAllocateInfo is a pointer to an instance of the slink:VkCommandBufferAllocateInfo structure which describes the command buffer allocation. The definition of slink:VkCommandBufferAllocateInfo is: diff --git a/doc/specs/vulkan/man/vkCmdCopyBuffer.txt b/doc/specs/vulkan/man/vkCmdCopyBuffer.txt index 626ada51..e8ca4bf1 100644 --- a/doc/specs/vulkan/man/vkCmdCopyBuffer.txt +++ b/doc/specs/vulkan/man/vkCmdCopyBuffer.txt @@ -39,7 +39,7 @@ the slink:VkBufferCopy structure, whose definition is: include::../structs/VkBufferCopy.txt[] If any two or more regions within pname:pRegions overlap, the resulting data will be -undefined. It is recomended, but not required, that the regions given in pname:pRegions +undefined. It is recommended, but not required, that the regions given in pname:pRegions start on multiples of four bytes and have a length which is a multiple of four bytes. include::../validity/protos/vkCmdCopyBuffer.txt[] diff --git a/doc/specs/vulkan/man/vkCmdResolveImage.txt b/doc/specs/vulkan/man/vkCmdResolveImage.txt index 8bff87d7..261c065b 100644 --- a/doc/specs/vulkan/man/vkCmdResolveImage.txt +++ b/doc/specs/vulkan/man/vkCmdResolveImage.txt @@ -14,7 +14,7 @@ Parameters ---------- pname:commandBuffer:: - Ths command buffer into which the command is to be placed. + The command buffer into which the command is to be placed. pname:srcImage:: The image that is the source of the resolve operation. diff --git a/doc/specs/vulkan/man/vkCreateBuffer.txt b/doc/specs/vulkan/man/vkCreateBuffer.txt index 3374be4e..dec66c0b 100644 --- a/doc/specs/vulkan/man/vkCreateBuffer.txt +++ b/doc/specs/vulkan/man/vkCreateBuffer.txt @@ -20,7 +20,7 @@ pname:pCreateInfo:: Pointer to data structure containing information about the object to be created. pname:pBuffer:: - Pointer to a variable to recieve a handle to the new buffer object. + Pointer to a variable to receive a handle to the new buffer object. Description ----------- diff --git a/doc/specs/vulkan/man/vkCreateComputePipelines.txt b/doc/specs/vulkan/man/vkCreateComputePipelines.txt index 4b914d3a..fa6fdb6a 100644 --- a/doc/specs/vulkan/man/vkCreateComputePipelines.txt +++ b/doc/specs/vulkan/man/vkCreateComputePipelines.txt @@ -66,7 +66,7 @@ to fname:vkCreateComputePipelines. The parameters pname:basePipelineHandle and pname:basePipelineIndex are ignored unless pname:flags has the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT bit set. If using the pname:basePipelineIndex parameter, the index must refer to a -pname:pCreateInfos parameter pased to vkCreateComputePipelines that appeared +pname:pCreateInfos parameter passed to vkCreateComputePipelines that appeared earlier than the current sname:VkComputePipelineCreateInfo in the list. The parameters pname:basePipelineHandle and pname:basePipelineIndex are mutually exclusive. If you specify a valid pname:basePipelineHandle, diff --git a/doc/specs/vulkan/man/vkCreateImageView.txt b/doc/specs/vulkan/man/vkCreateImageView.txt index 33731b6d..facd64b4 100644 --- a/doc/specs/vulkan/man/vkCreateImageView.txt +++ b/doc/specs/vulkan/man/vkCreateImageView.txt @@ -25,7 +25,7 @@ pname:pView:: Description ----------- -fname:vkCreateImageView creates a new view of a source image in a compatible format, alowing casting +fname:vkCreateImageView creates a new view of a source image in a compatible format, allowing casting of image data from one format to another. Image views may be bound into descriptor sets to allow them to be accessed in shaders, or be bound as color attachments. pname:device specifies the device that is to be used to create the new view. pname:pCreateInfo is a pointer to an instance of the diff --git a/doc/specs/vulkan/man/vkCreatePipelineLayout.txt b/doc/specs/vulkan/man/vkCreatePipelineLayout.txt index 3a6828f9..987e5380 100644 --- a/doc/specs/vulkan/man/vkCreatePipelineLayout.txt +++ b/doc/specs/vulkan/man/vkCreatePipelineLayout.txt @@ -20,7 +20,7 @@ pname:pCreateInfo:: A pointer to structure specifying the properties of the new pipeline layout. pname:pPipelineLayout:: - Pointer to a variable to recieve a handle to the new pipeline layout object. + Pointer to a variable to receive a handle to the new pipeline layout object. Description ----------- diff --git a/doc/specs/vulkan/man/vkEnumeratePhysicalDevices.txt b/doc/specs/vulkan/man/vkEnumeratePhysicalDevices.txt index f51f0136..17334512 100644 --- a/doc/specs/vulkan/man/vkEnumeratePhysicalDevices.txt +++ b/doc/specs/vulkan/man/vkEnumeratePhysicalDevices.txt @@ -41,7 +41,7 @@ If pname:pPhysicalDevices is not code:NULL, then pname:pPhysicalDeviceCount shou to a variable that has been initialized with the size of the array pointed to by pname:pPhysicalDevices. No more than this number of physical device handles will be written into the output array. The actual number of device handles written into pname:pPhysicalDevices is then written into -the variable pointed to pname:pPhysicalDevices. +the variable pointed to by pname:pPhysicalDeviceCount. include::../validity/protos/vkEnumeratePhysicalDevices.txt[] diff --git a/doc/specs/vulkan/man/vkGetImageSubresourceLayout.txt b/doc/specs/vulkan/man/vkGetImageSubresourceLayout.txt index 4e4e16ae..ad37fc16 100644 --- a/doc/specs/vulkan/man/vkGetImageSubresourceLayout.txt +++ b/doc/specs/vulkan/man/vkGetImageSubresourceLayout.txt @@ -30,7 +30,7 @@ Description ----------- fname:vkGetImageSubresourceLayout returns information about the memory -layout of a image subresource of an image. pname:device is a handle to the +layout of an image subresource of an image. pname:device is a handle to the device that owns pname:image, which is the image about which to retrieve information. A description of the image subresource is passsed to the command through an instance of the slink:VkImageSubresource structure, the diff --git a/doc/specs/vulkan/man/vkGetInstanceProcAddr.txt b/doc/specs/vulkan/man/vkGetInstanceProcAddr.txt index 8548f830..156e8cbe 100644 --- a/doc/specs/vulkan/man/vkGetInstanceProcAddr.txt +++ b/doc/specs/vulkan/man/vkGetInstanceProcAddr.txt @@ -30,7 +30,7 @@ different values of pname:instance. If pname:instance is code:NULL, fname:vkGetInstanceProcAddr will return non-code:NULL function pointers for the global commands -fname::vkEnumerateInstanceExtensionProperties, +fname:vkEnumerateInstanceExtensionProperties, fname:vkEnumerateInstanceLayerProperties, and fname:vkCreateInstance. It will return code:NULL for all other commands, since they may have different implementations in different instances. diff --git a/doc/specs/vulkan/man/vkGetPhysicalDeviceQueueFamilyProperties.txt b/doc/specs/vulkan/man/vkGetPhysicalDeviceQueueFamilyProperties.txt index ad7e2bd7..9ccfabfd 100644 --- a/doc/specs/vulkan/man/vkGetPhysicalDeviceQueueFamilyProperties.txt +++ b/doc/specs/vulkan/man/vkGetPhysicalDeviceQueueFamilyProperties.txt @@ -73,8 +73,8 @@ operations such as binding graphics state and graphics pipelines and executing d * If a queue's ptext:queueFlags member contains ename:VK_QUEUE_COMPUTE_BIT, then it supports compute operations such as binding compute pipelines and executing compute dispatches. -* If a queue's ptext:queueFlags member contains ename:VK_QUEUE_TRANSFER_BIT, then it supports transsfer -operations, which include copying data an images. +* If a queue's ptext:queueFlags member contains ename:VK_QUEUE_TRANSFER_BIT, then it supports transfer +operations, which include copying data and images. * If a queue's ptext:queueFlags member contains ename:VK_QUEUE_SPARSE_BINDING_BIT, then it supports binding memory to sparse buffer and image resources. diff --git a/doc/specs/vulkan/style/styleguide.txt b/doc/specs/vulkan/style/styleguide.txt index 770d18aa..245ea937 100644 --- a/doc/specs/vulkan/style/styleguide.txt +++ b/doc/specs/vulkan/style/styleguide.txt @@ -583,6 +583,13 @@ See Gitlab issue #61. ==== +=== Terms to Use With Caution + +The term _subset_ is sometimes used to refer to a _strict subset_, and +sometimes used to refer to a subset which may be equal to the entire set. +This is particularly likely to come up when describing bitmasks. Make sure +to use either _subset_ or _strict subset_ as appropriate. + === Terms to Avoid Don't describe anything in the documentation using vague or wishy-washy @@ -852,7 +859,7 @@ autogenerated from vk.xml, and included from the `../validity/` directories: include::../validity/protos/vkCreateCommandPool.txt[] ==== -The sname:VkCommandPoolCreateInfo structure is defined as follows: +The sname:VkCommandPoolCreateInfo structure is defined as: include::../structs/VkCommandPoolCreateInfo.txt[] diff --git a/doc/specs/vulkan/validity/protos/vkCmdBlitImage.txt b/doc/specs/vulkan/validity/protos/vkCmdBlitImage.txt index efdd9194..9726e9ce 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdBlitImage.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdBlitImage.txt @@ -35,6 +35,7 @@ endif::doctype-manpage[] * If either of pname:srcImage or pname:dstImage was created with an unsigned integer elink:VkFormat, the other must: also have been created with an unsigned integer elink:VkFormat * If either of pname:srcImage or pname:dstImage was created with a depth/stencil format, the other must: have exactly the same format * If pname:srcImage was created with a depth/stencil format, pname:filter must: be ename:VK_FILTER_NEAREST +* If pname:filter is ename:VK_FILTER_LINEAR, pname:srcImage must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkCmdClearColorImage.txt b/doc/specs/vulkan/validity/protos/vkCmdClearColorImage.txt index ba5d69e1..6baaf8fa 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdClearColorImage.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdClearColorImage.txt @@ -20,7 +20,7 @@ endif::doctype-manpage[] * pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag * pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice * pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL -* The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image +* The image range of any given element of pname:pRanges must: be an image subresource range that is contained within pname:image * pname:image mustnot: have a compressed or depth/stencil format ifndef::doctype-manpage[] ******************************************************************************** diff --git a/doc/specs/vulkan/validity/protos/vkCmdClearDepthStencilImage.txt b/doc/specs/vulkan/validity/protos/vkCmdClearDepthStencilImage.txt index 1d635617..f08d7358 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdClearDepthStencilImage.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdClearDepthStencilImage.txt @@ -20,7 +20,7 @@ endif::doctype-manpage[] * pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag * pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice * pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL -* The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image +* The image range of any given element of pname:pRanges must: be an image subresource range that is contained within pname:image * pname:image must: have a depth/stencil format ifndef::doctype-manpage[] ******************************************************************************** diff --git a/doc/specs/vulkan/validity/protos/vkCmdDispatch.txt b/doc/specs/vulkan/validity/protos/vkCmdDispatch.txt index d91b3f33..9f394a3b 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdDispatch.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdDispatch.txt @@ -23,7 +23,7 @@ endif::doctype-manpage[] * If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set -* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties +* Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkCmdDispatchIndirect.txt b/doc/specs/vulkan/validity/protos/vkCmdDispatchIndirect.txt index 9af07848..15f3975a 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdDispatchIndirect.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdDispatchIndirect.txt @@ -25,7 +25,7 @@ endif::doctype-manpage[] * If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set -* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties +* Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkCmdDraw.txt b/doc/specs/vulkan/validity/protos/vkCmdDraw.txt index b0e12e44..4a8848b6 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdDraw.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdDraw.txt @@ -24,7 +24,7 @@ endif::doctype-manpage[] * If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set -* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties +* Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkCmdDrawIndexed.txt b/doc/specs/vulkan/validity/protos/vkCmdDrawIndexed.txt index 94aa5840..60071f8f 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdDrawIndexed.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdDrawIndexed.txt @@ -25,7 +25,7 @@ endif::doctype-manpage[] * If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set -* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties +* Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkCmdDrawIndexedIndirect.txt b/doc/specs/vulkan/validity/protos/vkCmdDrawIndexedIndirect.txt index 54d65d2d..1efbd99d 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdDrawIndexedIndirect.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdDrawIndexedIndirect.txt @@ -32,7 +32,7 @@ endif::doctype-manpage[] * If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set -* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties +* Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkCmdDrawIndirect.txt b/doc/specs/vulkan/validity/protos/vkCmdDrawIndirect.txt index 52ee2b89..a41ad304 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdDrawIndirect.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdDrawIndirect.txt @@ -32,7 +32,7 @@ endif::doctype-manpage[] * If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set -* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties +* Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkCmdResetEvent.txt b/doc/specs/vulkan/validity/protos/vkCmdResetEvent.txt index 948aad98..711bf340 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdResetEvent.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdResetEvent.txt @@ -17,6 +17,7 @@ endif::doctype-manpage[] * Each of pname:commandBuffer and pname:event must: have been created, allocated or retrieved from the same sname:VkDevice * If the <> feature is not enabled, pname:stageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT * If the <> feature is not enabled, pname:stageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT +* When this command executes, pname:event mustnot: be waited on by a fname:vkCmdWaitEvents command that is currently executing ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkQueueSubmit.txt b/doc/specs/vulkan/validity/protos/vkQueueSubmit.txt index cae39038..d066a965 100644 --- a/doc/specs/vulkan/validity/protos/vkQueueSubmit.txt +++ b/doc/specs/vulkan/validity/protos/vkQueueSubmit.txt @@ -11,8 +11,8 @@ endif::doctype-manpage[] * If pname:submitCount is not `0`, pname:pSubmits must: be a pointer to an array of pname:submitCount valid sname:VkSubmitInfo structures * If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be a valid sname:VkFence handle * Each of pname:queue and pname:fence that are valid handles must: have been created, allocated or retrieved from the same sname:VkDevice -* pname:fence must: be unsignalled -* pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue +* If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be unsignalled +* If pname:fence is not sname:VK_NULL_HANDLE, pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkResetEvent.txt b/doc/specs/vulkan/validity/protos/vkResetEvent.txt index 856449b4..0a1bda1d 100644 --- a/doc/specs/vulkan/validity/protos/vkResetEvent.txt +++ b/doc/specs/vulkan/validity/protos/vkResetEvent.txt @@ -11,6 +11,7 @@ endif::doctype-manpage[] * pname:event must: be a valid sname:VkEvent handle * pname:event must: have been created, allocated or retrieved from pname:device * Each of pname:device and pname:event must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice +* pname:event mustnot: be waited on by a fname:vkCmdWaitEvents command that is currently executing ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/structs/VkBufferImageCopy.txt b/doc/specs/vulkan/validity/structs/VkBufferImageCopy.txt index 3a8df78b..bdfb59e4 100644 --- a/doc/specs/vulkan/validity/structs/VkBufferImageCopy.txt +++ b/doc/specs/vulkan/validity/structs/VkBufferImageCopy.txt @@ -16,13 +16,13 @@ endif::doctype-manpage[] * pname:imageOffset.y and (imageExtent.height + pname:imageOffset.y) must: both be greater than or equal to `0` and less than or equal to the image subresource height * pname:imageOffset.z and (imageExtent.depth + pname:imageOffset.z) must: both be greater than or equal to `0` and less than or equal to the image subresource depth * If the calling command's sname:VkImage parameter is a compressed format image: -* pname:bufferRowLength must: be a multiple of the compressed texel block width -* pname:bufferImageHeight must: be a multiple of the compressed texel block height -* all members of pname:imageOffset must: be a multiple of the corresponding dimensions of the compressed texel block -* pname:bufferOffset must: be a multiple of the compressed texel block size in bytes -* pname:imageExtent.width must: be a multiple of the compressed texel block width or (pname:imageExtent.width + pname:imageOffset.x) must: equal the image subresource width -* pname:imageExtent.height must: be a multiple of the compressed texel block height or (pname:imageExtent.height + pname:imageOffset.y) must: equal the image subresource height -* pname:imageExtent.depth must: be a multiple of the compressed texel block depth or (pname:imageExtent.depth + pname:imageOffset.z) must: equal the image subresource depth + ** pname:bufferRowLength must: be a multiple of the compressed texel block width + ** pname:bufferImageHeight must: be a multiple of the compressed texel block height + ** all members of pname:imageOffset must: be a multiple of the corresponding dimensions of the compressed texel block + ** pname:bufferOffset must: be a multiple of the compressed texel block size in bytes + ** pname:imageExtent.width must: be a multiple of the compressed texel block width or (pname:imageExtent.width + pname:imageOffset.x) must: equal the image subresource width + ** pname:imageExtent.height must: be a multiple of the compressed texel block height or (pname:imageExtent.height + pname:imageOffset.y) must: equal the image subresource height + ** pname:imageExtent.depth must: be a multiple of the compressed texel block depth or (pname:imageExtent.depth + pname:imageOffset.z) must: equal the image subresource depth * pname:bufferOffset, pname:bufferRowLength, pname:bufferImageHeight and all members of pname:imageOffset and pname:imageExtent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <> * The pname:aspectMask member of pname:imageSubresource must: specify aspects present in the calling command's sname:VkImage parameter * The pname:aspectMask member of pname:imageSubresource must: only have a single bit set diff --git a/doc/specs/vulkan/validity/structs/VkBufferViewCreateInfo.txt b/doc/specs/vulkan/validity/structs/VkBufferViewCreateInfo.txt index 9d9efb1d..adae18c6 100644 --- a/doc/specs/vulkan/validity/structs/VkBufferViewCreateInfo.txt +++ b/doc/specs/vulkan/validity/structs/VkBufferViewCreateInfo.txt @@ -15,10 +15,10 @@ endif::doctype-manpage[] * pname:offset must: be less than the size of pname:buffer * pname:offset must: be a multiple of sname:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment * If pname:range is not equal to ename:VK_WHOLE_SIZE: -* pname:range must: be greater than `0` -* pname:range must: be a multiple of the element size of pname:format -* pname:range divided by the size of an element of pname:format, must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxTexelBufferElements -* the sum of pname:offset and pname:range must: be less than or equal to the size of pname:buffer + ** pname:range must: be greater than `0` + ** pname:range must: be a multiple of the element size of pname:format + ** pname:range divided by the size of an element of pname:format, must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxTexelBufferElements + ** the sum of pname:offset and pname:range must: be less than or equal to the size of pname:buffer * pname:buffer must: have been created with a pname:usage value containing at least one of ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT or ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT * If pname:buffer was created with pname:usage containing ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT, pname:format must: be supported for uniform texel buffers, as specified by the ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT flag in sname:VkFormatProperties::pname:bufferFeatures returned by fname:vkGetPhysicalDeviceFormatProperties * If pname:buffer was created with pname:usage containing ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, pname:format must: be supported for storage texel buffers, as specified by the ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT flag in sname:VkFormatProperties::pname:bufferFeatures returned by fname:vkGetPhysicalDeviceFormatProperties diff --git a/doc/specs/vulkan/validity/structs/VkImageCopy.txt b/doc/specs/vulkan/validity/structs/VkImageCopy.txt index 0254a1d7..fca2cdf4 100644 --- a/doc/specs/vulkan/validity/structs/VkImageCopy.txt +++ b/doc/specs/vulkan/validity/structs/VkImageCopy.txt @@ -21,15 +21,15 @@ endif::doctype-manpage[] * pname:dstOffset.y and (pname:extent.height + pname:dstOffset.y) must: both be greater than or equal to `0` and less than or equal to the destination image subresource height * pname:dstOffset.z and (pname:extent.depth + pname:dstOffset.z) must: both be greater than or equal to `0` and less than or equal to the destination image subresource depth * If the calling command's pname:srcImage is a compressed format image: -* all members of pname:srcOffset must: be a multiple of the corresponding dimensions of the compressed texel block -* pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:srcOffset.x) must: equal the source image subresource width -* pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:srcOffset.y) must: equal the source image subresource height -* pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:srcOffset.z) must: equal the source image subresource depth + ** all members of pname:srcOffset must: be a multiple of the corresponding dimensions of the compressed texel block + ** pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:srcOffset.x) must: equal the source image subresource width + ** pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:srcOffset.y) must: equal the source image subresource height + ** pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:srcOffset.z) must: equal the source image subresource depth * If the calling command's pname:dstImage is a compressed format image: -* all members of pname:dstOffset must: be a multiple of the corresponding dimensions of the compressed texel block -* pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:dstOffset.x) must: equal the destination image subresource width -* pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:dstOffset.y) must: equal the destination image subresource height -* pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:dstOffset.z) must: equal the destination image subresource depth + ** all members of pname:dstOffset must: be a multiple of the corresponding dimensions of the compressed texel block + ** pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:dstOffset.x) must: equal the destination image subresource width + ** pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:dstOffset.y) must: equal the destination image subresource height + ** pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:dstOffset.z) must: equal the destination image subresource depth * pname:srcOffset, pname:dstOffset, and pname:extent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <> ifndef::doctype-manpage[] ******************************************************************************** diff --git a/doc/specs/vulkan/vkapi.py b/doc/specs/vulkan/vkapi.py index 6c0a5335..ee451ca5 100644 --- a/doc/specs/vulkan/vkapi.py +++ b/doc/specs/vulkan/vkapi.py @@ -113,7 +113,8 @@ consts['VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType' consts['VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType' consts['VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType' consts['VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT'] = 'VkStructureType' -enums['VkStructureType'] = ['VK_STRUCTURE_TYPE_APPLICATION_INFO', 'VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO', 'VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SUBMIT_INFO', 'VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE', 'VK_STRUCTURE_TYPE_BIND_SPARSE_INFO', 'VK_STRUCTURE_TYPE_FENCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO', 'VK_STRUCTURE_TYPE_EVENT_CREATE_INFO', 'VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO', 'VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO', 'VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO', 'VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO', 'VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO', 'VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET', 'VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET', 'VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO', 'VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO', 'VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO', 'VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_PRESENT_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR', 'VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT'] +consts['VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD'] = 'VkStructureType' +enums['VkStructureType'] = ['VK_STRUCTURE_TYPE_APPLICATION_INFO', 'VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO', 'VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SUBMIT_INFO', 'VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE', 'VK_STRUCTURE_TYPE_BIND_SPARSE_INFO', 'VK_STRUCTURE_TYPE_FENCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO', 'VK_STRUCTURE_TYPE_EVENT_CREATE_INFO', 'VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO', 'VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO', 'VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO', 'VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO', 'VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO', 'VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET', 'VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET', 'VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO', 'VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO', 'VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO', 'VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_PRESENT_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR', 'VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT', 'VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD'] # Unprocessed type: void # Unprocessed type: uint32_t # Unprocessed type: VkFlags category: basetype @@ -988,7 +989,7 @@ protos['vkCmdCopyBuffer'] = ['commandBuffer', 'srcBuffer', 'dstBuffer', 'region structs['VkImageSubresourceLayers'] = ['aspectMask', 'mipLevel', 'baseArrayLayer', 'layerCount'] structs['VkImageCopy'] = ['srcSubresource', 'srcOffset', 'dstSubresource', 'dstOffset', 'extent'] protos['vkCmdCopyImage'] = ['commandBuffer', 'srcImage', 'srcImageLayout', 'dstImage', 'dstImageLayout', 'regionCount', 'pRegions'] -structs['VkImageBlit'] = ['srcSubresource', 'srcOffsets[2]', 'dstSubresource', 'dstOffsets[2]'] +structs['VkImageBlit'] = ['srcSubresource', 'srcOffsets', 'dstSubresource', 'dstOffsets'] protos['vkCmdBlitImage'] = ['commandBuffer', 'srcImage', 'srcImageLayout', 'dstImage', 'dstImageLayout', 'regionCount', 'pRegions', 'filter'] structs['VkBufferImageCopy'] = ['bufferOffset', 'bufferRowLength', 'bufferImageHeight', 'imageSubresource', 'imageOffset', 'imageExtent'] protos['vkCmdCopyBufferToImage'] = ['commandBuffer', 'srcBuffer', 'dstImage', 'dstImageLayout', 'regionCount', 'pRegions'] diff --git a/doc/specs/vulkan/vkspec.txt b/doc/specs/vulkan/vkspec.txt index 70d7dbc8..f4de8be6 100644 --- a/doc/specs/vulkan/vkspec.txt +++ b/doc/specs/vulkan/vkspec.txt @@ -3,7 +3,7 @@ include::specversion.txt[] -= {apiname} {apirevision} - A Specification += Vulkan {apirevision} - A Specification The Khronos Vulkan Working Group :icons: :toc2: diff --git a/src/spec/generator.py b/src/spec/generator.py index 00a274be..c9b09b0a 100644 --- a/src/spec/generator.py +++ b/src/spec/generator.py @@ -1745,11 +1745,14 @@ class ValidityOutputGenerator(OutputGenerator): asciidoc += self.makeParameterName(paramname.text) validextensionstructs = param.attrib.get('validextensionstructs') - if validextensionstructs is None: - asciidoc += ' must: be `NULL`' - else: - extensionstructs = validextensionstructs.split(',') - asciidoc += ' must: point to one of ' + extensionstructs[:-1].join(', ') + ' or ' + extensionstructs[-1] + 'if the extension that introduced them is enabled ' + asciidoc += ' must: be `NULL`' + if validextensionstructs is not None: + extensionstructs = ['slink:' + x for x in validextensionstructs.split(',')] + asciidoc += ', or a pointer to a valid instance of ' + if len(extensionstructs) == 1: + asciidoc += validextensionstructs + else: + asciidoc += (', ').join(extensionstructs[:-1]) + ' or ' + extensionstructs[-1] asciidoc += '\n' diff --git a/src/spec/readme.pdf b/src/spec/readme.pdf index 1353273e..14f8f22e 100644 --- a/src/spec/readme.pdf +++ b/src/spec/readme.pdf @@ -640,14 +640,17 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 398 0 obj << -/Length 1388 +/Length 1387 /Filter /FlateDecode >> stream xMoF7p._ <b@0DG,\g4R=S~')ȍ~O>` ,$LZԪ_ѤVyu=\ԀIŒFQ!zƌGHr°WpMl&P0U\g"Щ>&n}H6)`GE y@[Lm:8ʺha`*-Sb$1!$WxQ. -V_e/j -]b!:LJdUqT .GOIFb4hSXǢe]eۇ5dҶVB4g&!Y"5m"+{ 'R6a-:h8$V sܶlf ˶(19x6Lw9NsXMM63$x ;Kqb_%4S2-|Ș̎Ls?ۘ qML*Į0ק'PhgnZYDZI8mNr@It("b 2Ou(TrB=+"F@n\.V7m)N_~y="CរdxH7F QPzDU' 1<,=l-҆` ʇ潕eUaCyWRZcwVv!B[_fNB-Lys=l}&<_r)F7=nlWAb>l~d]ׅl <6HcO@5#Mb^ey\Zn1Kij3'V:bobVĬv.!&$f5Pҋ}{:N +Z'Ŧ]dTPrIY\~FTNl.}4̼C.ч3Z^y/XdULEWpN20.Kgs͙q<_?~똝(F$._v'\e;H.~p}3PT&?^\qnX&9Q; "o3FMVa}۰-ؽ7K*&DdGyإ׌UqQ*KVY'Z AhGvaBhBcƗ2IYrS7uVc׸n>7p._ <b@0DG,\g4R=S~')ȍ~O>` ,$LZԪ_ѤVyu=\ԀIŒFQ!zƌGHr°WpMl~d]ׅl <6Hcǧe Ecͬ#Mb^ey^Zn1Ki&ȑsbs-!fKjb,}з_ʳ>%t+OJe58Ws=_lp/Q^A$h"4)Ӡ9ZLhXhe.EIg`Ⲹ3s qϴ|hU/_ +wu?^5>8Y{߁@'k~K{hBUu ,Q Sd˫{ endstream endobj 397 0 obj << @@ -711,7 +714,7 @@ endobj /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 572.334 478.476 581.34] +/Rect [466.521 572.414 478.476 581.34] /A << /S /GoTo /D (section*.4) >> >> endobj 362 0 obj << @@ -953,19 +956,14 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 425 0 obj << -/Length 1846 +/Length 1844 /Filter /FlateDecode >> stream -xYYs6~#9Itq'MǙz$})X"U>})J9Ic;/ ow!<vkNG$0eb4>zcwr[JSY\U 3 ą=qCGjT?(%:PA<*g#9{s08&2)Z9UEB.v(7=E@2lCRۀm5alH-Eh;#H {ܾh [Q0%Tص>`vBy |/Jmy^& Yɖ Xy[ 9aھ 2 ’Y,On2S!0W?cΟk -GHҢ@vsS;{r8̮t^q|"ٝ?dTҁu"9<1*RS'>쀑J<ڨ>C z^lS9{.8{(qf֛'Z{GSX,L'>^Ph^P|,rOL=? `&])mGERz%zn::{H6^£虸#{@ߙ`qb{BXZK&+KL-KUAFI js(Luet -8al2]})J9Ic;/ ow!<vkNG$0eb4>zcwr[JSY\U 3 ą=qCGjT?(%:PA<*g#9{s08&2)Z9UEB.v(7=E@2lCRۀm5alH-Eh;#H {ܾ!>& L)`JBk}xke,Bozf^6d%[z`m% _kڃ>,,C)d˓xTi|ȿ !csLAܢ" ڒv3o> =5mt3(|kӾ} \^ƉnDJDf5DnB"v^}@\ [ò0bnDI8)(7ED0"d>"6_L o哃W ^Ϊ:n'yPelN!>9ȑs䏃 @6|}mWC7UIZ]]njGxBzoTǑٕ2O7Ǒ J:?6xN$GG4f]ZuS.cS`u8 \=E`8漎/,8LݩKbWj<I/^y[`+ys^i1q!C,64 t%+Aq] &S:FoؤIThI镶H#Me< zqn[shvr>b֭?@xMv~ LM)fʺ~I[6;}vQUI.>[ptdxsԑzEwYOn~&TYنv+wS>1oa?t%܃GgPwieMȵqNmzX?׸e4Oƀgg5TO+jo{Bw.센p +4KCh jxƼK׮FNGcƚ,0k~tg̀sxX9t` UzF!S5x k-i +#F+(jq΢-u2otĸP4"6E1UvL##"#d #Nzq29[ endstream endobj 424 0 obj << @@ -987,7 +985,7 @@ endobj /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 644.145 478.476 653.071] +/Rect [466.521 644.065 478.476 653.071] /A << /S /GoTo /D (subsection.14.1) >> >> endobj 401 0 obj << @@ -1015,7 +1013,7 @@ endobj /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 586.281 478.476 595.288] +/Rect [466.521 586.361 478.476 595.288] /A << /S /GoTo /D (subsection.15.2) >> >> endobj 405 0 obj << @@ -1057,21 +1055,21 @@ endobj /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 494.844 478.476 503.701] +/Rect [466.521 494.78 478.476 503.701] /A << /S /GoTo /D (appendix.A) >> >> endobj 411 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 482.889 478.476 491.676] +/Rect [466.521 482.75 478.476 491.676] /A << /S /GoTo /D (subsection.A.1) >> >> endobj 412 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 470.934 478.476 479.721] +/Rect [466.521 470.795 478.476 479.721] /A << /S /GoTo /D (subsection.A.2) >> >> endobj 413 0 obj << @@ -1085,7 +1083,7 @@ endobj /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 446.805 478.476 455.811] +/Rect [466.521 446.884 478.476 455.811] /A << /S /GoTo /D (subsection.A.3) >> >> endobj 415 0 obj << @@ -1433,19 +1431,39 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 461 0 obj << -/Length 2192 +<<<<<<< HEAD +/Length 2179 /Filter /FlateDecode >> stream -xڥXmܸ b> vns״hhgs'ח巉&Y$IQCR|_Տ7<y+!Xf\=R,ʚIeVwջ5L7[9_6ula_E:g̚ /ѽ -t Q2.Ӂ]⫌eVZ$ -M۔h)a#:} via$eHUw=G1)!¼~#;6q}QɜLOׂ(Z+迍i* ˴{)Q8Fl-.l&%2i -9fw{? yI SR L$IRϐk:GҬ snag7Q65, nLfi4fB0=?$ }ݴt}QX?vA[%bfexŇ8}2ڹ.f"t %S>f#CSTI"f-K3x3)sEgk*CqEevQu~.L_wbNjI{nx\΁o%_Mߑbq#btH\x]D01w=pc?_D3pr͔ZymS7BSC! Qdע\WwQC'Ɛi|tXֻcz&ujD=X=Rr̂9B?.VbSUm{զJ۠V&}o g-֝HǰZ@?!KR9ǦLji -؈^ `-CRY2 -r6 _&1F7۹+MC_"l b -] ]w纈%;ESyF ]gncsvkt(5#:6u* z0]׼(.ǟ7Yp&$.ejSPL2o i)\i PDk F$NGmD[J, -"Z*d[yNF|]w`D0xt}YU͏XaKdYǓJ$,'xz:}7_B+?ˠ")rXڿKy ,~y;xe7j[fECxXXEÛ#߁wdes̉w|2^y˧B|/PKo?/[мi& +xڥXm6 +bzA6z@o8 ) +͵u%W~}g8ԛW,O(3> bnxly !Xf\/R,šIeŻ%tWk9_U_~?atE2k2־hG2ΛҖqv|,XfIk4i6{G +|XIbKv[wtUSWԶSy2$t*u9Ϩc8SBtmSXƱfF2#s2 :\hzNSaXMUMKv2i?ރͤdY&`2 ]!GLs?l:2Osl”T&xIRpt-K"JΩy ¦xE]1ɒ3qWoԫ6Ai&T +! I+ElWb Ak%Tn12H Nv3ez ~iɷԻ#Ǧ^ PlU&3HpK L\Y+&.F\QF(e:J0%xH W~ mf?,ޅi,z7.XK"Ԫ6GL%LLu9Uv_PHN+#=KeY*+ը,% P#7Z++k 0ݏ-ia+Ha5r-b?nir@2ʾ#cBFC\H˰Wƕ.}uX#t)\l4@ط=S8Ýk^cr3IHE:a*AV`6JqEl]|.9gܝ݊#Y^&T T0-dͦfYlJH*N[48,{с#I~SzsC2v|Y㲶˻/s<pLCp /HYw6PRpcc,M; R]vޏ33)Єɥ.p P,2mi読qĽVC7 ^8r~;蘖%Y򄻘B`0UJH.Mt^o0 у ]˂)(?OA"v\*:O E-*qA~DW5i|JC-Ͽ.VbSY[ +զ +V& dpJ1 +0Z_#?z_̵ȧ`. 54 ЌA )|,jFA ?!*ub/SM~sO>붮,E/wM/.po}5Ćw +P\H]{9%q +{sP~REo*6s)TYƎzԙ(3L*|S=51t4 @lM5`:qLC5W6~DGTQ)i|xYa.bPg_&zPo߼"L$C- >wVyHwE{P 9cS[weF/qըj.q'`bC +7# +K[ +_{]ҟ{zIXQŦ &ϴJw|p'`?e'NZc_`rIS-qښ~@Qm n#n\@|[e,#f]).L :.&S^ uq +======= +/Length 2224 +/Filter /FlateDecode +>> +stream +xڵX[~?B,z$@:iZӠdBNL\i3nIg7Y$H#{, 9% ~ex##}4عLOnD%槮iivuf>H)${3HNiNY+&ʐ.FPy]O%âsqb)H T)~ o#08?['bX(dH|\V *'h#_memWoЕ+fbеG*Z0bwbq@?qui8 2}; ;=rL[nfM1/X5}8hUv"pć h0Wp9)FZ;a7o`d7ojC>vAg y8ݠQP)=F.&PBJ&k\j| ,)i4ù+S>},$w&\~BG+cl(Z>iMRB1.H]]62[*v;`-U!H=oN7c;T=rJM BeD|M |?0qiuW;oNGvj0 mp3ZǐIدi|`R4t+`c7fd65NY@?`Mnhh ~7~zy)iGA,T"x ]OEoIe\G[xhQ8ؑ=)m~mogIx/F3)|CNTI6S8Om~.+1G.qpQ:U4*̷4I(0hjAI?b t9h턡X" ?J{6ak+Ѽ?h +>>>>>>> 1.0 endstream endobj 460 0 obj << @@ -1481,24 +1499,25 @@ endobj 90 0 obj << /D [460 0 R /XYZ 133.768 400.449 null] >> endobj -94 0 obj << -/D [460 0 R /XYZ 133.768 187.622 null] ->> endobj 459 0 obj << /Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> /ProcSet [ /PDF /Text ] >> endobj 465 0 obj << -/Length 2150 +/Length 2181 /Filter /FlateDecode >> stream -xڭX[۸~ϯ0/63ERRXl />m +K.9=ᐺ8cd$7ߐoN;~݇Od,Bo^H,FXm^?(>I b_’t)7a~-%)ݪ!?Bm3ٶסjf}@E y5]sUR6םPۼJZ'&c;6nj𴛽R,z")giZǂI?aS`])ؽ|0@ùct~@c7r *jǾ~ιhv`Y˵YTp$ݶGg>h/:7- cQS::VP9g;/vĿvJ{NI.;΄@zv,٫)0&Y/tZ;UQNXu(J"Ez'Z;K?tc1|r*\6ghʹUͯ鋮:bi0!YƓ>NL%e ' FT<`1nU/TƒdB9\l)Nu8-&h[<؛>Hj;-D|:Ep &}!Oorw.r|<gQ)h ʲE¢(~Isݔtk:]("];OTzֆe/S}O1Ygk>/5V"(0vf -?i@,hx -C8֙=bk&ZoBa*vr/O -ZQݛMU6vrp݌}F!L e}XG_뚲}jWp$#1!飌[;bX0)B,-0%{'vXu|&,;1%,ܽE)S|*ecebߑ=Af9VM@1.cS\[L.%J>`YԵ5WK296w(\.LfYO#x>T%LMSb]A5䊒×䋳^7C^"Ŋq؟!Ym(&Ȳ,}W,V04[)n`&q#ۺ&:MuISJhf*t$%>o #ӥζO+qE|ױ Q0C*񱻠o`k2] -)Z/,F7DaWxXZWFXhSuSw'zLM@ǽVkoqطǽrwE7Eb"g4[8U?fw%/5sG` -X4'?>77EХx+lNY?`d.UfH +xڵXͯ _`/ 0Ȳ%Š@wNtzpl%1ة?5K9ؔLGRrs͟?Hç_#IEjټ7A$cBy)6~i}۫86?^ +%2P}b/7R$&9ۤbrtrowǷdk+{g+¥Jppim_LfUg" *>DL1?`eupQ_a*kl꥞!g4-цzMފ>LW^Ȋ=onN%yLJܫrKg/Yݗ9/@c}54K@$!d/ >Px qdF]n)DAVZ^YjeֽY'2?ϹSʲ(-مP2"1m1ZJD*|Q,bZC!2ʺ(󬷨YO 4hv`ʵFk&-pl8Sb)p).U?au4ߒ7 }Cnsk CY%32ܝbeiہٿYHr2$J:Cx${m8?IwY#:pk9-Xp<1=O<$! c OF<ߖXf"27ۥeNHoRDɍ񫲿VT4/`\Xcf'OsvZ0ؖ.O\*vPI$ +"Y.^q`uÄ ptksZz%vk.ڊ(LZ(5&ScKP'PeJ|m| +KӮ8"Y%+Z@!2BBmXp?v\˰r^,5ǵ K v,-~hԬDz^(ĞK[P3]-b=caRJޞfvsh3~et SMo^&8Y1;Q87#&1ax{h"E?4|G>" _vQ)3i6a e7p6>au, +[)~ &zgF5=[vwYMcདk:"zg5kop܍Pn.В(M5=c;f}Z!'EcX:ߵz YUQ.|MP@d9T f`9C֖B# z?Kmq=Ml'sISj(8sz\0T ǁ \fFWo=6ĕEVJFE]e%** +ceѕy DvuKg U- Iaq]s͕K_B:<20Ps_" X)q35Xo= +lz0f) cL]A?jɺ'G~ + ؗNXdMaBzBlS +d\uǦȆ*]4JiMqm##6Z(6-qG+"n~^:@<8]=opO413IjyCe='Ӎ?Tfnn ᎾD" |6x枬}sX4wW4q?(vus͎DFp6{.Z3Ŋ+^Oz c*e=>:*J ϊ0zљ. nT"t M [@ endstream endobj 464 0 obj << @@ -1511,33 +1530,32 @@ endobj 466 0 obj << /D [464 0 R /XYZ 132.768 705.06 null] >> endobj +94 0 obj << +/D [464 0 R /XYZ 133.768 669.191 null] +>> endobj 98 0 obj << -/D [464 0 R /XYZ 133.768 563.96 null] +/D [464 0 R /XYZ 133.768 518.292 null] >> endobj 102 0 obj << -/D [464 0 R /XYZ 133.768 514.521 null] +/D [464 0 R /XYZ 133.768 468.871 null] >> endobj 106 0 obj << -/D [464 0 R /XYZ 133.768 452.015 null] +/D [464 0 R /XYZ 133.768 406.384 null] >> endobj 463 0 obj << -/Font << /F14 432 0 R /F40 351 0 R /F48 355 0 R /F42 352 0 R >> +/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> /ProcSet [ /PDF /Text ] >> endobj 469 0 obj << -/Length 1268 +/Length 1173 /Filter /FlateDecode >> stream -xڥW[6~_ -kKj&mmN@ -fQcl̐&}>|6~2~z1&УZ O>5Vyo7v&)1Xhy^2It],y-=a24#1zTqW"ʅdQ׌W y '6=cMYOEY:+~Ed;mQq%큖zV:tA4<i.x9 ’ǘڝ]Pm+3DYbR\U[:ņm̃vC]n3 KU\6 1#fcl.vLBVXzH׹9o.L r16dHM\ /xfĠ x޺e{Gդ d2NګL -ھڈ|*)X|iɫ#:ewB}Υ7YoPBS%4DMő<\MdwO \&Cd/I\âA\(OZ{UeVT2Ĥ'-l/hML{E[ $SYLܧ=Rr^CSnww/?~8uj :q귻/Љ#B_mSݽ$t) du3mL-4牚u3)7S#8Qr 0vCs,21H8c.rgl#Fp.fui9d3\.ӗ#5n CPHL󍒷W^Qo˹e2)Oztm@Ca>\3t%urT]Ϸ?}<՞ ﷛:G\( " baޖflJG}Ɏ4JimXRiKCsOYpУY[!Jpw6]}"s͸牖ycYKpG{{!hzNEƺ̓/owOzZQ[D9RI>Mz]gqb 4+LWa~02s =fy<6͊ml:ehuSKh70-Hח[kjhc_ԄakK=wVޣ=. zUtq8^03r(L|:=Hl"% {a endstream endobj 468 0 obj << @@ -1551,24 +1569,28 @@ endobj /D [468 0 R /XYZ 132.768 705.06 null] >> endobj 110 0 obj << -/D [468 0 R /XYZ 133.768 560.807 null] +/D [468 0 R /XYZ 133.768 520.957 null] >> endobj 467 0 obj << /Font << /F14 432 0 R /F48 355 0 R /F40 351 0 R /F42 352 0 R >> /ProcSet [ /PDF /Text ] >> endobj 474 0 obj << -/Length 1969 +/Length 2153 /Filter /FlateDecode >> stream -xڵXm6 _t_Qh u^-ulۯ)ʎzm}LɔD>C϶3>w_r&BXV3Kb=IV} 9.ci |liG|gЧ=}advV*gnsE˶R|41[H $ijgOkEuca̸G{íB겢b. /zSl?iXtrOH>37)E(0fG35=;+ sSz4LȄֳ,窱4Y28&Ǒ -J(P#ѫ$m]l4(\ҺiL{ܩiIF/& Va|0 e,Rt@#P 7mGw1KCK[zC({'؛EWTm(A۰-W?.*3lfG0Tx/  ˮh%]E@w'Mixv܀ jH_p|0,uDr0܎xr;1an`ׇl uǨ)P3 0P`zC}w{p? KSMSBJssYA`Y8 -nm̞ŽM}<0d,SuοQ>s.3E 3׽O8s@4 ?>N$11`= f*'Hed$hy;i> =&>00ajY9 `[t36FÂI,`Ir=pä{XKg~PRa"DQ٘CG!v6un릠XOJ+q_%,JNXՌEWfǻHג5 oBem5Z4 Co`P'T=C0KjP m+ah?`Xo!9Tlߐ\pԎ2%d!#{G^g4yz_l^!MH8GjST&<8 lBIR$G}8) ټ:C0Z&M 7a*Ccx#Bl"yj{SXaswLByVjKWj v.5SQEyc+bor}m_T!&{NS-f.me\,Ӛ;LϚ`.J\k+ - -) JUO{bDTs';?bcrzyPho0h>! {}Wo^]ջ˫ۋMӗo-WRHw?^x|A;c'LБa?v~ޘ%S-&bUȃGnr_dm{,%R6 O:;CLf>+ 9?^`~(ot֟tx@8]<lt@>|L'b -XdHTYLxgo.R&no:0$SJKMc,ۮM}ſsT"A +wB幽c{s(QO4ڪ9n>']a=l)yʔ,2Zׅ绢횇Ebq5_6lSДmM;+?:EE竅b^d +@MYΈBҶPML>[u{lnSѐD0mv[2y=+ |EpԊ[٦9&`b"01S,#b)8t:cfIDISg&HK1/@f0:k@j3'u48n5b!K# LXjtn>>3)6~lRס jU"&c2=.}O%)V\3"]WDi%ִA6Pk@O{ܳi ŀVzPT,QhV8Q8$턣;eх;K:7#gD*Xv(UжlǦn: bbQ)c w0D蒰ŀ 8܋܏ hP WT~wŌnw v; O@\PñfOcQovY K03>b3%Fu(&DŽbLN(Pϡnt|pqZ񌐄~\V6'8 +ijvpx]˿@y H`?V׳΀<@4UMH%I4S0@#rIJ̠^> =&c`Fg`0| 3DaDm_@7\ń3-PV_WސT^jbxPMg^V7t)6 n>[ +Ýq$B;|"]2SiU^y~<5GlLu8(a%\FSˤD2 +6Yk4/ +4-s> w 9L kZKjJ(e(M]_Cj`Y Cunal.{.0:wu}X4yOuYl=7Dާt!505H%=aaqq"bD(ID1i/:#EAmd%rА{ 8h}{joTܹ-Bj E|yvkS ӵv1 E-}Z?ePOٟ./-WM\ŒTC_CfsP-465y=ԓ^H|yUK~6ً<3_l7D +816oZq˸‹D)' 04Rt{2jM&/J|7,'G[^.rrr +]7nk6c+nn]PLhO/fM)uk]EAn E u"-1HTs +''?ʛF~G?ޣϼy eK"`?~t{i}uǛۛՇw?"ۀ?޾}ǛrROF_hH(]{gXB7Vomے"eXQ hOh+\?L۞|6 ơz=0t%_emOe_ Tc huϸ?mZ*V endstream endobj 473 0 obj << @@ -1583,50 +1605,44 @@ endobj /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [461.539 267.059 475.985 278.003] +/Rect [461.539 214.995 475.985 225.939] /A << /S /GoTo /D (subsection.7.3) >> >> endobj 475 0 obj << /D [473 0 R /XYZ 132.768 705.06 null] >> endobj 114 0 obj << -/D [473 0 R /XYZ 133.768 667.198 null] +/D [473 0 R /XYZ 133.768 615.902 null] >> endobj 118 0 obj << -/D [473 0 R /XYZ 133.768 594.331 null] +/D [473 0 R /XYZ 133.768 537.646 null] >> endobj 122 0 obj << -/D [473 0 R /XYZ 133.768 371.791 null] +/D [473 0 R /XYZ 133.768 319.303 null] >> endobj 126 0 obj << -/D [473 0 R /XYZ 133.768 300.683 null] +/D [473 0 R /XYZ 133.768 248.619 null] >> endobj 472 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> +/Font << /F40 351 0 R /F48 355 0 R /F42 352 0 R /F14 432 0 R >> /ProcSet [ /PDF /Text ] >> endobj 478 0 obj << -/Length 2210 +/Length 2136 /Filter /FlateDecode >> stream -xڵYKϯ-2- -LHd{s䠶21_*%nuw9&d_=W+;ÏZfJ[߯R,neMΤ2YyN-[ogn_C\r7r w0Dt}'HW+H3ldZXn31hn/g6[u#$N7e\-[0=[Z!~\`"F54Y%6Uߢmr!x).wIm\WںТM`PDaa<XcLwkp<.BOMZ$am (uW=~pWN$≍"zBN&A'fC\"+'1Z!,ie[~GmsZ -y9-޴73QAb#\r)%8sf)Sr2B\ݲ4TQytW -oYD_I&hf 0eMC<5uJ\i}DIC p> &2meHhgeF7{"u9 1D6 -. BXuxbH8-$B h-Q00 2˱:2} `mJrfܔf|̧ "ykY^Ut0g*c\jRjCp4uT[G^J( ecyrd`!`h1}9R{-_:%a.ڍ`;:N'D߭")r`\ÃD{?V[w?wLj!='=/~9٭0;5տw s׻2Iqes}nELp!X e0i@+FcSk4ڤq9>W I%'>'b L -c̈́Qԋ%ν.j( -%1>{ro*o^@3$IJb^lOJ̖?DoJD7x :o{8 -IWx+qq -wg>T?gyz8Do)Gyx -ԃPЦ4b0MRLܒ?^$P3 -1%freLIH -]JZn 9-]F|J#yCo]IJ ΒX1jkru -UN1'EX} -^8aX 717WIR5[\`5L ``/e<$hҙϩ UBU% +xڵYo~8y|4[l=t@X][rؽ z9JۢD1ofhxX_g}.RiۅP%.NTzqY#m-W藿}뛟}p\ kR?oWBT?sǿ]8KGoE +\Hd cFD08.ڃ+ykq53\iAjk(F>RJ,g%%l6Ö4eJ$}\.ѧ΋/DGsV Z(+΅4GS~^ + jjCH2-lP:AMSKɣ*Bfbø#koE<Ѿ4L'.C+਷lߺ9HҸJ|jM93LDmJ[ +#N,SyMS~_. -dņV*6܆ͱi >JJqdNuA\))/ț}Al@#QI.?^K."uy#b'՟ًQGs.ik="Sg™ vUvuAb}V)g|Nn!@n<=m. Ɓ%Glw5=qG!PRғpG]%~A&ߢo]04:d4e+$ȶ&ăk6 +\bRKy.ǬsGiDQc{"dÅg}ݹb.%RЗ(&GkzSo4CK`9?&dL\E^Ko7ѧgfAUlltVS>YUog`Y:l;C$s&,' d =0^[Oik(EmQU2+I*xbBL''I'Cl +*nr5!,:*k܆o0򠪳xN +[o| Qpr<O Ev@OEl$.#$6XV$L۾. qJZ3>*vb"KU$rU3k.c\nRn8[>Bo#Ou%T mc2i_n˓ I詗C%ӆ_z C1{wU6G٨*Y^tb)0iK*=y7@Rc{3T"y(T<(C2 1 + =Š)JywL-h`1 ]CFN;9Ra +qe#-~ z ]j&{dYƓv`'iwH'dZGa+>cvۮ9WtYSN ƇN:l5PS$7'ߜ&oŒoU^07I q֮{Gbp"VW{bJTRpǓTYC?X}z"+u=SbHn?>*4d]05s}濪/z endstream endobj 477 0 obj << @@ -1640,33 +1656,37 @@ endobj /D [477 0 R /XYZ 132.768 705.06 null] >> endobj 130 0 obj << -/D [477 0 R /XYZ 133.768 667.198 null] +/D [477 0 R /XYZ 133.768 628.339 null] >> endobj 134 0 obj << -/D [477 0 R /XYZ 133.768 618.242 null] +/D [477 0 R /XYZ 133.768 572.663 null] >> endobj 138 0 obj << -/D [477 0 R /XYZ 133.768 360.429 null] +/D [477 0 R /XYZ 133.768 314.85 null] >> endobj 142 0 obj << -/D [477 0 R /XYZ 133.768 311.517 null] +/D [477 0 R /XYZ 133.768 265.938 null] >> endobj 146 0 obj << -/D [477 0 R /XYZ 133.768 232.837 null] +/D [477 0 R /XYZ 133.768 187.258 null] >> endobj 476 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> +/Font << /F48 355 0 R /F42 352 0 R /F40 351 0 R /F14 432 0 R >> /ProcSet [ /PDF /Text ] >> endobj 483 0 obj << -/Length 1594 +/Length 1561 /Filter /FlateDecode >> stream -xXKF W>@<$)==,zizey-DW/g8Fl79IGriW՛L I41`2&VB#e_߽ cGf$`Κޜc;&%BvW4l}iI;hM v}[O8H0b)c$Q ;.Y1Q,FE1JicS`[TؗHE4Zj|MS">}ԭ\zǔ"M,&ڙkS]"ih.l2v+S7?|YjFkZh_<]DqpS>Y)&}hO=\M RݧEׅA[ofJ&q3FKq1+Ŕ(ўƗF0xU+12z﷜CP!m>I/R$R]";,ľRR\q=ݛ`[yIO6-TMt\^Ӭ4o5Xt~M{[D&Wqi D-H -/f&@\/"Kҭ[ykr=Q  ia~Q@g>Aoi x6O(r_RtXK*шDʒ ~8&\=(H~JXYȆCufs"XTj8q 5rgHr0J.f̸׌܈(+L $_1>j!5rIa¯ex:00.@*Lx^jHd],<72eYH@Fm*,[cVivH bB pϚ! 73ȋyq]LUF@ŠM~Z|%x0(!l7*]Ǟ< L+V26=[2!Q]'UCU*XMܕv˘k1LL@ݼ^38ȚfTXE,ﺬ9M> K2n:ƍ d+=IyJ9d 7Խ@ɱm΅و ]y,~"8}p(? "Nɣ}ۢ; ܑmra#$!!Ĺ{؎`HP7<93X%E)Mxx9\-P5mBpga-[7#:sך^$ h+Kcً &ٍ״f9:vx_ŗ5޿_-1qU,VHs״ CQ=U=Z–|4EyX` b?e u Ƃ(Q4ܫ[\w +>z;F$e +TΗ=RYJ<\C9 ql[nDR\q^Ey]αHgP5J뗨c 4Klelh7_ + rA +u7ׅ5a\\?=hȝрg1> \[7.= ]_B1kYYԜϠ?e8<1tñF:s"xTj$1ښDϽD9"̠,H@Վ{ۑzM83 + r ik4^DTA ~y: |Ckɀ"LU> endobj 150 0 obj << -/D [482 0 R /XYZ 133.768 640.508 null] +/D [482 0 R /XYZ 133.768 596.673 null] >> endobj 154 0 obj << -/D [482 0 R /XYZ 133.768 594.232 null] +/D [482 0 R /XYZ 133.768 550.396 null] >> endobj 158 0 obj << -/D [482 0 R /XYZ 133.768 527.507 null] +/D [482 0 R /XYZ 133.768 483.672 null] >> endobj 162 0 obj << -/D [482 0 R /XYZ 133.768 480.309 null] +/D [482 0 R /XYZ 133.768 436.474 null] >> endobj 166 0 obj << -/D [482 0 R /XYZ 133.768 406.038 null] +/D [482 0 R /XYZ 133.768 362.202 null] >> endobj 170 0 obj << -/D [482 0 R /XYZ 133.768 339.702 null] +/D [482 0 R /XYZ 133.768 295.866 null] >> endobj 481 0 obj << /Font << /F14 432 0 R /F48 355 0 R /F40 351 0 R /F42 352 0 R >> /ProcSet [ /PDF /Text ] >> endobj 488 0 obj << -/Length 1797 +/Length 1870 /Filter /FlateDecode >> stream -xڭX_6 OGhTId{( -k Aqīlۧ)ʎO)JG4K錩td;LkNSs/czzI 9 -RǭTv _D;u=6(!L>p.a QiDžfO[opF GNMG]p !!:+jcyck*_i@9t|:Zx/o̝Jt9 JG¤j|~M wؓB_ "o^/ǡ̌1@QAүD vsLͼO $ qfjG QI>L.lunGkvZo>_l8q]<ޟ -UO<@(Zx^끓^hM?Z%?ƫOU -$K'XGO\?MWV֕ gh@M?=nHư b)sw8[4*J†߬G$ oTn0 ;S5stপ!Y VMS]bnU\xjds5LyzdMQ)w&d̍0h@UEnmS^'RV\vަ[|EMӿ,d#1>q4=TemXhz0@a(p~pZ.ohLHe "/zH3$ +tr& B?,c`$;`BvB l'C"Pu@f׿IכNu_/y݈ ;ZČc|(jf#;$tAs r nmj\H.Fޛf\y Å˔9J誦/NN e0 y. `S~|&OpơJ#q)psDQ<]wyVlJXWe[pնҧE*gi"'~D -x3 .1r`_@5?> P2SBŅ5k -Pi_+|uԖfWi%T(Õ ͟P*h*]=R%y,-O'5q0ôZ;ntƆ=LݹaodQ:xz)}zL'ت -}T2k\Ύp{}D^E=)3W{[c51 ^z`q~@yڣk(|j4F8vt/L4+e֟o&rz@4((Ԟz䊔&IL6`JtL7suL(3CY:NLeu0w@Of +;>vnpo4Q 4Ig:՝w6Yzé +Ue7Ƣ!0*+q['L%"ktwj+>L톇_D򴞾[W]}k6 +2Hs }~xkv !*s8u-IH(Ӻ0۪9mO?DPD2kЛ8T1&ro=Ή"_ DqE3׺pzُ +g8s Vi1L/lu~GsV`>_lحu[tߝ +‰@<{:DW怔Z<9!ŗ;~cpED؅;(7^2M[tk)a髺޺>pO hiNPKr7$cXR.e\,1/(*J‚aIr<Ǔ3a"Sq9:pQ,+&Y5y@s]]7t3YLم5.R&d[;bȁNd̲2쀽M;)+4rVc!1>k0/-J n`LdFaq1!a+B=XISxԉ_S5BC{Ie qmxpCl }bXN;XЗxL~wu=-2 POȩ|2qt{N=fAsF'm`Ѝ f8@9]HGLw3I ,5]zoDpf* /9Jv&uK08C,]LC=lxQO^[h +pl,jmS"U,Kx?_"P|' y~S~a1TjkLA*֬j@*ur}N׻SW]EmLP+AHwj Z@E$StKq3.bWN~^;B[Mj<`ai/taֆ5\ݸ72a:x&)3&f +iHkbE xn=v</ӛ8uG < =XmUc].P% eyZj8e=ELfR>ҫ$P)\Lf"Pecǜ&bMY|I<{*+PrzK)` YdA 8Od닚biSs_ YU`J5c_7 endstream endobj 487 0 obj << @@ -1730,42 +1748,54 @@ endobj /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [336.998 327.93 363.898 338.874] +/Rect [336.998 272.14 363.898 283.083] /A << /S /GoTo /D (subsubsection.12.4.1) >> >> endobj 489 0 obj << /D [487 0 R /XYZ 132.768 705.06 null] >> endobj 174 0 obj << -/D [487 0 R /XYZ 133.768 640.508 null] +/D [487 0 R /XYZ 133.768 584.717 null] >> endobj 178 0 obj << -/D [487 0 R /XYZ 133.768 302.401 null] +/D [487 0 R /XYZ 133.768 246.61 null] >> endobj 182 0 obj << -/D [487 0 R /XYZ 133.768 255.203 null] ->> endobj -186 0 obj << -/D [487 0 R /XYZ 133.768 212.04 null] +/D [487 0 R /XYZ 133.768 199.413 null] >> endobj 486 0 obj << /Font << /F14 432 0 R /F48 355 0 R /F40 351 0 R /F42 352 0 R >> /ProcSet [ /PDF /Text ] >> endobj 492 0 obj << -/Length 2063 +<<<<<<< HEAD +/Length 2173 /Filter /FlateDecode >> stream -xYK6W4rp"%'dHr/u3D^xSR-uklû{"U,n6O‹˛'Ͼ&yFƙH$:*қrK:7{M>^hp-,|S+|nN l)ʄʵ_fNqP v'[umQ?šdkmQ* -J4 ̹jPX3 {kƁfuwSoonu֔i}FKI0 Al's@J&*t)ktpGSWQ2 -c7%ϴe}_Nk;]df);r$s`4$ɮ*J.CF X|C2tf@iS1.p=Z 6|.#B^ -3J*ow2ż?=`Q8|pOCtkHހ\ -#${rl=gkB Q&0(IDF9ߒ;pZ#Ѵ<@ffX¡USՅy7;Zd7ٛ~@OW8\㯅Gǃϱ%]p8L2"B>ۛ^X U;r>f.E$YLձy "ּCwMr*i:Ε頺 <Mkx&:@ǴLAdZw|wzn1x0ܳϠ9'kt/Ѡwn G@bC)tLA!(a9ĢAvKp"Js.38Jb(c]Mբ@Ѯr ;7`pٗ򼖱OyO~4C3{(d9@O^]T9lÖr=$u4zj ݉cP PsPJ!)z4t+n/+Rdiz-(ČT0l9}eƿϦkR&6amW{eGe֏…tɎ)ouES=RX^>KipgZ< rz;XJY`R* X0'%nnBxRJ\ p~p40)`]յ{lނjDTrBS]WB0 /cST:  -M[K d6 4S""CiD68}`nQ<Y2 Cw\qn\ 0y7>n;'@X*>T i[*մP1 ӆзs'ЯJ2i 7AEg5s{,Wd/mF w[!c8JF(9◧w챇ua#W+<(;n/s~(1\1Ogc 76ʳJpYC3"wmz5Vt%VSy7ci68(4G2 -E^rЩei\)[{O|Z%#ȥ=KrLy*> {p9r$=f͔>).󑌕.N}ZG71H@$]4c{pWh N;7Weu^YYn]W'ѭq0b^C -*0ƢX=5h.-0k4 !c}#$v8b\QS9 1A/9(V&TJfM1̅?t0&ii- qUZبȆ/s) (0 ,"[+Y4w'&Z\<~_<wI|0߻aB}cPu-go*|09cBNQybnSBstD=9Öd#%kV]S{rE!aT,R*[N?}*6x!|^N*d^q\V߾o^j`珵=o@FT|4^L~ Zg@gw]ͧ-O R$9UX;>NytZ'#h:|9(@X*LRLH)L {xhF*b1,^1 k|-:C.I/#W;<+@b~FOm.i ]u#%/(Ťo k +======= +/Length 2291 +/Filter /FlateDecode +>> +stream +xXKܶWL"N"A*Yc%*هM.QŝcBb ,W 4@яVbiy;W*3n$MUJvu[%JJ^o87}]F86)fJ N:ᅱuÌu&(٢M*ˡ-0FKonIsyNl(\Zf 5V *'8nvit_R5 + G] q So~ʦ&C}[wwF NqvǦd +(%KH K;R%уeb́.U\qPoT|\kZ6]BOT[A6b3R Mge27}0[;ݮVލ<ʇ^h7H6qpxɏu܇8֝paG0@?՞4Mӄ b<@+:Fo9Ս'Y /)t4^u^sCM`d@H Iqt[4x,*U,)k< tڅ>a4L{!lz?TǣY+;bs1q9?X9АtBOv$#S=T:3GF"%;-jhi!T5 H6༺P6[3Ej<*bOrXK[q2,a*GQxA bjLq4{wXpjn3`ņA~o϶XK۹T&]nh^DbO!_ń.ń.t/tfb1נN |۾oKpxI}{ +Op,>>>>>> 1.0 endstream endobj 491 0 obj << @@ -1778,30 +1808,62 @@ endobj 493 0 obj << /D [491 0 R /XYZ 132.768 705.06 null] >> endobj +186 0 obj << +/D [491 0 R /XYZ 133.768 667.198 null] +>> endobj 190 0 obj << -/D [491 0 R /XYZ 133.768 572.762 null] +/D [491 0 R /XYZ 133.768 508.254 null] >> endobj 194 0 obj << -/D [491 0 R /XYZ 133.768 513.609 null] +/D [491 0 R /XYZ 133.768 449.101 null] >> endobj 198 0 obj << -/D [491 0 R /XYZ 133.768 289.076 null] +<<<<<<< HEAD +/D [491 0 R /XYZ 133.768 224.568 null] +======= +/D [491 0 R /XYZ 133.768 176.748 null] +>>>>>>> 1.0 >> endobj 490 0 obj << -/Font << /F14 432 0 R /F40 351 0 R /F48 355 0 R /F42 352 0 R >> +/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> /ProcSet [ /PDF /Text ] >> endobj 497 0 obj << -/Length 1823 +<<<<<<< HEAD +/Length 1645 /Filter /FlateDecode >> stream -xڥXr4ߧ;<_(RZv*\J/3@xzZjc;JV>}=ts^а~yH.%\^oXTn. DnwR{qIWk,QNr ohSEPS?$,O~rQ-tFD 8K優`[[#`!A:[cUMD_^rkMiۭKUZ.<`X"*8h >)`> %)MRٱ̉Yp8NžX].Pzb-xly}UjBzcQHIX$gjcLF7fS{wu@r(:'Ds*{ZsA|"sܘoo?tm:DyРAp?"p&Y9jHXqbTO@ tT b,>C^'TLR@f_N|pUR)y0crҨ&yʟQN5JO)Q W5M ӻEdZxoU=\"Ij#46N~1h$YM#.a,u(~YE Α@%w]7]qOn2NFdTTm1QS&''HS?Sjp99DTť(k8j?YBw_sRv0ÛE`8ea X勿Bw +xڕXo6 _Βeނ]݀ +$F?fHQɎ˞,K4I?~9 +(U?]ڼQL \Z5F]αrR&zhe +Qʴ)rѠn?*Ru5:cH&Ƴxf7sDMRKJd_:lyo*'M5mk\48B}\2gCA߿ : "0)J8@I0!Εf1DQ%J2"\>Ylͳr݊csܣڕEޕs`g) r=O嘒{ZNIyZTa*“I6:Q :U/eCfXBލS 06:z) ʴ a@bGuC_#4Ϲa,8hIŎ5s%,d82V!odzd\s)B30rDW94<υ +D_N5XԸJC4#f  #lV"6[yc@N]L*5_ qbv4UAY}n c8BטK/b"JΞAQsqpaCG°;"Λkv[Euu\?d#A脆^%Y,@A+yRwo)A@OCJȆ E!X]JfGA;n-OsFئ$C@ +x(HyIIb`{l()Ţī>EҠ$^0$!_G"|= nittB9o4ͭ&[L[ۛߛ&Kdph?\i!;'zt ++.ohs|D\(Vڞ"{𢓰=BYmw}1,ȍg^#+O!]Y(;OwoH I"ռxO+ҤCTd"&Hn g_ϖǑK'?o;ma4Dc> +stream +xڭWKo8 WYd=,?A6h(݃b+#3eD#;N$(H4h.7gYHyE,Ixʌp!*,utcBCv&`1<:+J9zu$kc{Qsj*mӫq\"W{?wuQ8n½J7B%j|cRZ;;2wp@aѷkԺ"i~}ֵ}t\5yOXv4]ǜt4VUpea(NEr출@jqNwZUܚbJ3];+i%Bvx~w( _CiC8 -`%! 6H^6{0vtuK a! +-;9G/Ҧ[5TGhW̑3\rTq"7[F5~qZh;H&G\z؛kd7WM//ϯݥf '2 +E޵NK0PZ,IPonK14.𞬪)ԄeZ@ c A:1XˬeE̖jL}YQZK90tZ %k٩ĥk +rZ2lA` +Y>B[ ?<~7_l=`αK e{ +i}'J9f8Nŋ9oe O8*܅\WDܜ1V/ܭʌxd<^nP8STl^#lB$*o{[6"Nn\ B/'2IBV/Sz퓡$v޹>>>>>> 1.0 endstream endobj 496 0 obj << @@ -1816,138 +1878,181 @@ endobj /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [384.815 244.183 399.26 255.127] +<<<<<<< HEAD +/Rect [384.815 176.025 399.26 186.969] +======= +/Rect [384.815 140.16 399.26 151.104] +>>>>>>> 1.0 /A << /S /GoTo /D (subsection.3.2) >> >> endobj 498 0 obj << /D [496 0 R /XYZ 132.768 705.06 null] >> endobj 202 0 obj << -/D [496 0 R /XYZ 133.768 667.198 null] +<<<<<<< HEAD +/D [496 0 R /XYZ 133.768 608.628 null] >> endobj 206 0 obj << -/D [496 0 R /XYZ 133.768 489.163 null] +/D [496 0 R /XYZ 133.768 422.546 null] >> endobj 210 0 obj << -/D [496 0 R /XYZ 133.768 421.129 null] +/D [496 0 R /XYZ 133.768 353.998 null] >> endobj 214 0 obj << -/D [496 0 R /XYZ 133.768 355.974 null] +/D [496 0 R /XYZ 133.768 288.329 null] >> endobj 218 0 obj << -/D [496 0 R /XYZ 133.768 277.807 null] +/D [496 0 R /XYZ 133.768 209.649 null] >> endobj 495 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R /F11 499 0 R >> +/Font << /F40 351 0 R /F48 355 0 R /F14 432 0 R /F42 352 0 R >> /ProcSet [ /PDF /Text ] >> endobj -503 0 obj << -/Length 1351 +502 0 obj << +/Length 1506 /Filter /FlateDecode >> stream -xڝW_s8ϧ` $KgisMlOkn<ؖc&6KLVO]-x0|߅' Œr#\#இjcYoɕyn6")$?cqXg[6un8M5l`s"g}Y<=v.b+J K2bG.! jclIeoWyRD.oqlZDyǭm)">x_"K5L7i&2 {vq nsbHX%mC: m[AmLy)s 7)dH=zqo!G%9fhMQu,5Ue1vjWGHb!yτ/ef(1 [ZhyA**T\R2o-p")ՉJBAS T:5&BZbͩnߥX%&K]TR-v&֩t"WNYv-t\%a#8ʨX6om|{ڭ)IgOӻx4%S\63=AҎuUCZVg"SYE]Gh*:S]rj~z~5LG'nx}tϗiֵu,QU s\-șP$w IvqZs${J*JO?  5"U%K&TH d6KqP0.2WaEF9\*#mBJDqi +MVzqdbh&޲O}[?knuZ'tv&O~Y$nڱS}YOxXpGC&ww˳z%3NU~1 IN瓗볓d4x;n|r2 ;##—!ܙ";1#:FtVN +@>~;rsPCsP}G+f-!?w^(}{ +-zQaiiTY:fzk3p@6t]cO2HGV`S{\aOa_\go\eɂд$B$qzdmn3F-MZto6)xbV`,ɧkz#B_0wrΛ_?\u911$#Ӹ dII 1A+&c56ZD+xbX$ U 3['tx[fu6K!8{R;Pac4(DZ{_D-x[d' +======= +/D [496 0 R /XYZ 133.768 572.762 null] +>> endobj +206 0 obj << +/D [496 0 R /XYZ 133.768 386.68 null] +>> endobj +210 0 obj << +/D [496 0 R /XYZ 133.768 318.132 null] +>> endobj +214 0 obj << +/D [496 0 R /XYZ 133.768 252.464 null] +>> endobj +218 0 obj << +/D [496 0 R /XYZ 133.768 173.784 null] +>> endobj +495 0 obj << +/Font << /F14 432 0 R /F40 351 0 R /F48 355 0 R /F42 352 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +502 0 obj << +/Length 1665 +/Filter /FlateDecode +>> +stream +xڥXmW6ίȡ!ɒlwd484c(ؙv~Wrb2Ituu_&wݣ;5lX4^j# 2& "V F^^'@3<IQQ =Ÿ0++o4.*Ϧ(WϨu:nM21fβc$cTM#Ϥ臾4&i}( Qii5}IZWr('t67F_ .H0U4/NprttJ@nGZync,S="GOzy)o"C@j gG:.&Ȣv0BR:^,xBE'5~flL1VYֈ2?8N!_p evmwFte^(M]Jq4 BIL:w!_glUB2Lq9yʰR2L]5f 6>1ΞF"gJyj +_+ + fP +r3j;Y68R"UGl3 +Jeq`G`Eus69sAD6=&t,8Jyږ(tS6+<]r\uWmf/ˬi 4utL6jO/ClCE`Sa~yݪS-b]{8ƫp  c.&C;̠.eᮞo0UU^jeu* r[Xz',4FHVw|.0.\w@ܴ +[pHxqHRh*d:ARܯi[fw陵'Gc"=xdj ǢI273m1& YJU oÏ.yre…e>o0S[}0DS0pN#XPfCxͳ^_˛amgqQs<ҋ̘\Ȥ(; +orxӘHecJD7bSXݻ6Nwq]jWe;]K8g\:}cū,Y@K]WS~]Mws鞏9IF ϏԼ;e 4w7O&FLJݨ2~_٫tw-&͌?/V4Mkd0`.-7A To7V.b-qqȳe?Ž+ ~珣Z-}GdT#q.@6Iu]c]n2H}NYA(L!qs C֍ңḳOn^>>>>>> 1.0 endstream endobj -502 0 obj << +501 0 obj << /Type /Page -/Contents 503 0 R -/Resources 501 0 R +/Contents 502 0 R +/Resources 500 0 R /MediaBox [0 0 612 792] /Parent 480 0 R -/Annots [ 500 0 R ] +/Annots [ 499 0 R ] >> endobj -500 0 obj << +499 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [385.801 606.884 397.756 617.828] +<<<<<<< HEAD +/Rect [385.801 519.213 397.756 530.157] +======= +/Rect [385.801 478.469 397.756 489.413] +>>>>>>> 1.0 /A << /S /GoTo /D (section.16) >> >> endobj -504 0 obj << -/D [502 0 R /XYZ 132.768 705.06 null] +503 0 obj << +/D [501 0 R /XYZ 132.768 705.06 null] >> endobj 222 0 obj << -/D [502 0 R /XYZ 133.768 640.508 null] +<<<<<<< HEAD +/D [501 0 R /XYZ 133.768 552.837 null] >> endobj 226 0 obj << -/D [502 0 R /XYZ 133.768 570.152 null] +/D [501 0 R /XYZ 133.768 482.481 null] +======= +/D [501 0 R /XYZ 133.768 512.093 null] >> endobj -230 0 obj << -/D [502 0 R /XYZ 133.768 227.094 null] +226 0 obj << +/D [501 0 R /XYZ 133.768 442.14 null] +>>>>>>> 1.0 >> endobj -234 0 obj << -/D [502 0 R /XYZ 133.768 161.505 null] ->> endobj -501 0 obj << -/Font << /F14 432 0 R /F48 355 0 R /F40 351 0 R /F42 352 0 R >> +500 0 obj << +/Font << /F14 432 0 R /F48 355 0 R /F40 351 0 R /F11 504 0 R /F42 352 0 R >> /ProcSet [ /PDF /Text ] >> endobj -508 0 obj << -/Length 2379 +507 0 obj << +/Length 1975 /Filter /FlateDecode >> stream -xڵYY#~_!yh#G`c`7q,xni:nu}xSb_7yQ(EVW):wo﮾.+!X\WB)G*1JO\oq -ajIT7=MY\~I^[2F@-%Yοn{r84T3\}H(O{l0QAK< -LF1ɓri<'T0(ؙ)XEsZUV%[n2_ E:]ބ`7GKS-NNdr$y>!7=ty_ ]R_\Vn1m6T=]_]DJa_{wN3&I6ai=GbA\=-+:8~ /g=pTTp4 JEǂ*JKhX=>7oLA,Q]K-ARŚE>xK#6x2b<3缱ƻ+L28DHE0hD@Rl 2?BrLaL11dd@g&|^9"`\gyA$muAFw"\(f)|">ti4g1,6F~ ȫ SN { y벬l^kE:.eV (3X}#VeN -*Ӡ 8'KT_}|_>O+ϩXWtOFp97ئ?n -]`ƉWuHIj !B%&.°&Ch" CQ}U$ E6$z!3* -S$Jy,(FLL '6Ӓ=ۖ#E.l*[S~S Uh5^M5@2=p_!=h62+re hvLe$"*@-OӻpF~i ~.@ FM|yݺ.36=䵿M|o$3?Wq8(%f2-u]}<ܫ'8{H AZ b qQ1԰yGA. Lv~H8nȇVJZ /yD"z[b kϚ]ipŦo~ 0=>D s_f-&/yN<|m } <:߸&k;% 8{a> -a>0crlv{ H87CC_Kpd.Wu#~mss,nr Jd*- B pMn_Tr-x~!'{P ВZb@ã!d־=dXB -B -;ʶ9[KG䰔MQ [> 4퉼a0D53TF0=6R0A$;oE$a v|@锅I">IċOv[eA -z֊R`oi~坍, xV*3Y<6op^`V} -yz;+~(.,ȅO?1 Sb?qW'h3l2i7fD#yNXcW"_5޿ZdDpNZXHp{&Hִ&g8?O(T!~j+Gl -wѨ*0qC 1 5u3gd\/iځN'Xޘ֑> kF,)KHHBwWuY +xڭXٮ6}WEd fh!@RܴiHoMж%WKۯ %[719$9#x7Oc1Sq*Pe^IƤJ_+9nmqU\ɄGOjW<˿o dX0z[4(q)}@YRmmWҵ T;f?iA)?/EUyd Wbe"^`& [2過ǿ=c'uޮY"tQ&OmKɣ̓3A=$ !97 +74Kvϫ22pO^߀gUא/\MԿBXk0a2`\$!=a$gS\>wxjb|cbTjHX-Al \ l +c<@pDE ڵhMUofal͞&1a~eNmlQW[խWOySuia |?a;ذ֮];46~o*Ih9d&~wO5L\ҰL<)gN߲4 +\yWnRܶ\s~mBIѰ*z\Ψ4 T:HI}!yzPW +ozM Ub-XÖ^lٹR86sDGMfTJ(0_9՛ :AA%pZ3qDտ/_޼ٯ_87fFBpaP&"tҌX%xG +{g c&PVPgE{ }q,q++?]NlCjM2:KW8=GŌ3A\L8hzC]Ž XMRvOӞ4*,q\0)˲^IgtWd>0 6YzH'h:i܇<6@l;8\ħK\Ppu߆sޜğl`)K8Rv@+/8 +#b-|J0l[Gmi+_E] 藐"_ DDiʠqt+?5۲H%xΩxOxKC \m!dHwܸz֖'Mrz$@h)~ާPm4/Mz4C5)i+~;7)j)OtA?[Lk=s8O`\x@Fb@@@Cv]ŲMu8#—C8َփC#&fFX>8ů߉EOQy`!pxWW0AD.5lvMmC$(ʆHX4XJL(<\,2HZqOjfg΄KO.}\ hYqZ)' +^YU[4y-K;Dн.8e}^q;CLubRom +;&mpRh > endobj -505 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [385.801 140.01 397.756 150.954] -/A << /S /GoTo /D (section.16) >> +508 0 obj << +/D [506 0 R /XYZ 132.768 705.06 null] >> endobj -509 0 obj << -/D [507 0 R /XYZ 132.768 705.06 null] +230 0 obj << +/D [506 0 R /XYZ 133.768 667.198 null] +>> endobj +234 0 obj << +/D [506 0 R /XYZ 133.768 608.329 null] >> endobj 238 0 obj << -/D [507 0 R /XYZ 133.768 667.198 null] +/D [506 0 R /XYZ 133.768 561.131 null] >> endobj 242 0 obj << -/D [507 0 R /XYZ 133.768 597.627 null] +/D [506 0 R /XYZ 133.768 486.86 null] >> endobj 246 0 obj << -/D [507 0 R /XYZ 133.768 483.911 null] +/D [506 0 R /XYZ 133.768 372.314 null] >> endobj -250 0 obj << -/D [507 0 R /XYZ 133.768 173.634 null] ->> endobj -506 0 obj << +505 0 obj << /Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> /ProcSet [ /PDF /Text ] >> endobj 513 0 obj << -/Length 1261 +/Length 1716 /Filter /FlateDecode >> stream -xڵVmo6_! 1#^k1l-mbӱ`YR6w)Gre'Oso4CPwt$ehRÔ"r4وPy O3D=l>ow{zu~(e4 o9 JqaYt?Z*qkK\aAsVgWSg͑gldI?Ͳ~2_AQB枧gSgEig"\QZ#r0_ 5 vq9_?ͦh6dzy;H|%luÏp$g?n·W}񔧝2@Nx3l5,eY i8h}Əu ~Χ+?iSVC^+INoԘM&\+X[ma$(N4md]Iy]bE^֯gS&l=_Ww1ӟ IlJz?@iӝ b EP4WB.N|6-E¡|jIVFaxJmaœg0R%cye <ߥc#oO ƹۆ "B ~HQ h38$טgb `-eFp9I-WTr\tj%.+6!]=.u&ʴTQco^vǭ$y.aOմ -"*Ǜk_^7h%FH@уH} Qvnݮ/n]aKVMTzhri1ϕv.;HWlY )qPPc.m1o ]Yj4(}Jd9,ɲ]Vibd (MR+H+l%2B#sn&c0:N^h R cPX9$9 }f0KYY, ()BR'flEACChvøJ̮Yub h+!–K])T/(hE2CBs0cwrjg6gPʪ2)iWa0p'YC0rl}w,=Gpmi!@66{vF=Mr.;[Ҡ wADUwY&#A_JDCnNh,naG1%%:A +A) +u04PD+{48:*|GAf2qJn'OsmƂn&Q_ r +$$GBRhP(f ~@9aV%S!tO*:@9*a^vR A@7 5E, ,DLB pZ4u* O"dݳ ,ȂZ!$n+A[vс2VaT~Xءn"hKu#6g.T0V2;"o oX[ h`z:uCҧz,Y,'lM)REUaSCja \d,0CY4_#p=4G;X,P5^\e9}u2Ӈ)??ҀJ>=5=똰t"@3F}"DDhbAu*k|;xN<,Z˛ Ť.XU'3No\+oL! znd͡X| tmΡ# d9Ņ}SYڦMe(.ohW"o1'A(T3wGg':!koangO'OT\LΦ*;^nmW6Mx&5 'Z6[n%0RQ]u; p endstream endobj 512 0 obj << @@ -1955,33 +2060,38 @@ endobj /Contents 513 0 R /Resources 511 0 R /MediaBox [0 0 612 792] -/Parent 510 0 R +/Parent 509 0 R +/Annots [ 510 0 R ] +>> endobj +510 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [385.801 539.714 397.756 550.658] +/A << /S /GoTo /D (section.16) >> >> endobj 514 0 obj << /D [512 0 R /XYZ 132.768 705.06 null] >> endobj +250 0 obj << +/D [512 0 R /XYZ 133.768 573.338 null] +>> endobj 254 0 obj << -/D [512 0 R /XYZ 133.768 667.198 null] +/D [512 0 R /XYZ 133.768 503.161 null] >> endobj 511 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R >> +/Font << /F14 432 0 R /F48 355 0 R /F40 351 0 R /F42 352 0 R >> /ProcSet [ /PDF /Text ] >> endobj 518 0 obj << -/Length 2003 +/Length 1913 /Filter /FlateDecode >> stream -xYM6W֌!J -" CQ{j֦҃Bmɕ;!%Ѧ7mbQ$5̼73"]{/^UbJfd.:˙vp}i&ǺEbUIոox|?LVOi^v#ZWJ4)ήcss)eKQ*ej9+q` -d8Cuf.JVjhr5:n]L3yT]Rj.ϼ۵߯R|JSѠ(hPGm팖'[zx8U7] nz?^=.:iД2&C/TI^C6Վ?_,v5>PO?T\TUsҫ]W]{ #JCע w}&SǗmR߾rW۶ u-aI8p#uYqaΐX/햴N:k h=.idN9oPDz{z ' 3aXɛHm{ܭ]&Ai$5Pk= ~KS29սf햬vBH<ݲEjk?A%2E:uQ,ƝVWHPg*M0NoW-F!8(D\>%m,ܳH2y(2<:*xkР^U;6Q{h'I&-[5lΩT+bicI9)F*q1Q q*>*qo ӓs2#A?TuV߄D~&Y"gB'fHLq*dfΖ챭YB{J #I Cdy@=5x,X9݉tk+x./R! K?fF .LYY`kΘ!S 뚑N.~=>=Þ=-#b($cC9n/X"1lB%ӫH]Ral R:(sDO%`Ѣmh8s걀f,Ŝ}_OeM(G?^37AXKA-˯S" .AA"3 d~`vu T{kb+"D,yNUMDՂϣؓX>;'P`*B -W4 -Lzs/KL +xڽX[o6~ϯyY(i+dYe-"1lP( %OR[΂ ؋~BޝxoiqMx)KPb(f*N=_!#o{eU6lͷl\gEyYWzůS&E9CIw(zsnyʙH 1ͦZfmQfs-6D^q&c5blTcKt%D=Mr9OYzB*+޻/?,>,~\ P +՗Z7ٽx_7y/B/z6fv>e+ŗm:hT,(Cs[? '$dJ#DQ0(xͺor~i'\ypJwk:Z/4 *t#> ޮ5 Zo3LCRZ4ɶvr) n: $BSjJADK`Sܝ=YF$e&9B +.V4(نu԰ Ń' "qB\m]ܢvP:HHSПŊQS20ؠnp{|Ñ$ĸ”@F><>4:b'FN9)`+h߀E;ڲ pnR.t^:, C.pa@-H)YFЫJ̲2|묜f؋8JLnsXїx eARjRw9s,v2{-sR8sJ΄R}A" Rҧh()?C=\AN ߾a`뢾-:mk,֜!}W" +Hczٮ@@+.QxQx@(ibD m'^=#f<\=>CF S8q(qJ…p$WxĄ Hf %.Pt( %]ĝ1hC_D0QFDAtHmQӗ(tT%t!i"j2X-{nWխ{s <UMU t {?4Eb O)#*ZgralpXvD:a;ˮW:#+_-B‘%!&<5ھ 0qKwlu XuG5%cv&?]ye2l5Y}hE_A;Y7,S8ufO"jO_$4c,P7Om[5&`Y֯ɷN¿Fg%@3 xJ>:zq endstream endobj 517 0 obj << @@ -1989,96 +2099,99 @@ endobj /Contents 518 0 R /Resources 516 0 R /MediaBox [0 0 612 792] -/Parent 510 0 R +/Parent 509 0 R /Annots [ 515 0 R ] >> endobj 515 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [335.813 419.424 350.258 430.368] +/Rect [335.813 254.107 350.258 265.051] /A << /S /GoTo /D (subsection.3.2) >> >> endobj 519 0 obj << /D [517 0 R /XYZ 132.768 705.06 null] >> endobj 258 0 obj << -/D [517 0 R /XYZ 133.768 667.198 null] +/D [517 0 R /XYZ 133.768 509.719 null] >> endobj 262 0 obj << -/D [517 0 R /XYZ 133.768 516.657 null] +/D [517 0 R /XYZ 133.768 351.492 null] >> endobj 266 0 obj << -/D [517 0 R /XYZ 133.768 354.117 null] +/D [517 0 R /XYZ 133.768 188.728 null] >> endobj 516 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F44 353 0 R /F14 432 0 R >> +/Font << /F48 355 0 R /F42 352 0 R /F40 351 0 R /F44 353 0 R /F14 432 0 R >> /ProcSet [ /PDF /Text ] >> endobj -526 0 obj << -/Length 2383 +525 0 obj << +/Length 2356 /Filter /FlateDecode >> stream -xYKϯ0dc.I` ^69ȶl cK$OOTHJrݝN=)XS|qXo?erQBKx/Dn6BI/v_UmZ/zW|3|'r`Ѯ粩;_V2_{jUW6 T#&nnU J2KX ?ssjjzp:We@,u/+/{H?”.嗪́v c=#wz!CyiSnUk$4xE1ʐ%g: Ior{QtCWoV/C'{~'\VîlOy{矞`$7 oKi9𖒚- `ppRs"" -['z(@}y2J({ߦ i 4d,Sy VY.gG'qeLM ?( ;,>,~uzs^!Ȕ -3^)>LDɦ.mfq[@`3Gz%ù?x:@vy+nL`{D6dGU9Xq3GeF;.C=%N96+5Ca`d)bs] ^U\2Ż6b]& -T*tA9tG4`- \|^nH5O0nM(PSZg1Qo vLor B/0}Kb@T'MƛZ&Gb77!0+9@-5.`K" :84p*w\&b)QmϗT:V& -1qKՐ k/gA2Jn9(>4 NUN`A:g o\UQx R{SR4&/РvbrOQ1Y +d~92+J`ʟ;^Xok0-(i#-:&_v+əb\zV[ʟ"`"Zo8%Åilɻt|KTu=m)FgGj!f +(Y2Gee9=@(K%vdNI2[҂!S9or.1",_݀O 1 o܉hHb?-O먘%/mBbiHuoqpXC=&&fh/!_XO$o??HOiLk }*P!&h `]2vԙÈ KvW>8AƧrBR2a)K2/xg~{v'5 [ȈU$͔ - }M0ܺB{ޏ &FU9.IK._׺sta"a;o`$Л(:ҡ˄Tߜ\_Ef.޻R}Нw^H^hzp212!|r, \ ,vLg^ʌq!b[R!e_.85$ynS96by| YG:@g^SMNX"scMA-LP$uYq'7XćJtÑGG}yW.#i\ \82P98ic؋GbK%qoOW~]* Yƣn`P c4C|>$ -R@*wJy5-k!9Zk,Ud&;&G''Bhq2$L D3 k4܇#YMc?)Ek138@>49q4t tީ<ҶKgoֽn%/Hz'[Qkq#44]Q$|uk&Qk ~Ql::;<_{Iqi~H OeWj;5Lʪr^xR$:UaeЛk΄PkU3'GObtoמ_/ Jb!)縝r.y/f^71b:p{7V8)6.My/{%EٞO f:V +xYK|/v7 ǀ l  oK +ITuu7fNEdwuWOӊ~zfo%VYiW+nXJ&2]=V 7zk o'amSa:QMVlmqH6[-4G?oN32ƤoNV-WIo)~|)ՌܗMW]ٷyB]ߖ߳]KWj +V+_#M2mݹؗEu^c+Tholmqj6<]zŋ6}Ie I2+&OްLs2O#tW5A UELlS7Sg܋MTU90A`K_t߾DOT__x@%Sf??:y7Kظc{4Jq`p1("I3TEIJG3-\cZ<|qhj$mx+4mb8T"I95]q=Eۼ/t[G>*MHþҩ*b̳i+EFŎ{6.)!>g/]Tom EjG +\&^?K냸N_Pިh,"TgPq>E9FLR?}Ɖ;[yuC"lEuU#:n]Q\Cل K|ޙMb'(;M. (8ڕ@pp脣#)<)[pY\š[ffL4&I:C^?r7 +! +K95C`eeby,F|RJ>tc D\?Oqt@1m}{Kf{:^g3Q$uEYbf`o%r2xs!>5\2R +۷$Ke#мH/QzgUٍ#_Bg#q^M÷8lq&"8nEy1eKDvOH$U:a7BgI4yWa9(XMC㹙J, V|gX;Dqb,M0w)eQ+JpE~0E`R^Ix*}y=rH@7[ǮXʱ$ k/gA2RZokp7zD풊g tR' ffwbSY恀+SSK@@ˆ @"64CBg ^<~Ff˭sgR0&)Ib*vaj57-hFXtL?umg2Si7#勪i(WDT \E"ެqJ @w!&h;kOP;tiKq?mƤK9#@( *Yp($˂!S3hrm8* Ed|uvq77"5GjIvݱT~i2S!ם)}4iD %d VIuЎT>i3z0LŬw1GOK?> endobj 520 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [450.329 597.572 457.303 608.515] +/Rect [450.329 441.567 457.303 452.51] /A << /S /GoTo /D (section.9) >> >> endobj 521 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [384.856 570.525 391.829 581.469] +/Rect [384.856 414.854 391.829 425.798] /A << /S /GoTo /D (section.9) >> >> endobj 522 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [175.671 338.678 195.098 347.604] +/Rect [175.671 184.68 195.098 193.606] /A << /S /GoTo /D (subsection.16.3) >> >> endobj -527 0 obj << -/D [525 0 R /XYZ 132.768 705.06 null] +526 0 obj << +/D [524 0 R /XYZ 132.768 705.06 null] >> endobj -524 0 obj << -/Font << /F42 352 0 R /F40 351 0 R /F48 355 0 R /F14 432 0 R >> +523 0 obj << +/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> /ProcSet [ /PDF /Text ] >> endobj 530 0 obj << -/Length 1101 +/Length 1594 /Filter /FlateDecode >> stream -xڥVm6 _!d_lH%2[wm -tEĈc~ ӛ8uKɇH/ѕG0 -`ׅ> >$.|0`5yvE+!YJ'5Ϫ$6kv0dI@T#F--7]JP5E5ۘZGRE78!.$D7-[yQ5: %6OsI|T -0$Br -ZNC ^cE'ʳE<+1u:wnH}3!my|58.!.z }A'm r bz$ }7PN20.dZ%09b#cOAJDӀV' ,ĸ0QHY7Eͫzgf&F_ĄAV#>6<ʪ'^GZ:!IاHj{}&_*^hlTbrIR0ֵl>N曆ի?'\w^ rOg |r;]\^ϯ'7M!SFqgm!zQAZqRy~b0X 30Os'8|LlLjPz<Ȉԅ!yxx}Փ -=O \o3Li{Ⱥe1I]V6-ͩ\3(UEFӻî'(AxZdu髖jhʔ8Ss8}j䑜U73QQ֊/ʼdGb]Mo?Kt0זY1D -gNJN+d >3 f4yP +xڵko6{~}!)&@k47(bюYrC<ʖkW,Bxw7MEho}9?8|r+$š/-S"Kx>gcs14c{ 3jBgZ*b-.KYC4OGB~BdgWf^::=+E&Cga?ŻO޾8/Y쵧#ӳ󳫗'W'߶*x!;3 +n1DʡTgЯ\I湳 6yo_EAyjH4]-:6X*,pSflVI7jč8f3b#]ץ*:2TEevZ~y6F{8ҍapuЇA7~L.|!?Q b<m1N('jŀi +{MmZ .\1ciMԇGkua^3iAbRD+Wn׳o1q +Sb#(b߿=58CRQ1/Ɖ^<Ng{oW&er;xhnd @)IXmVE^oU$kg̋Zmv1boo$x\}Cx;Hݯ endstream endobj 529 0 obj << @@ -2086,30 +2199,58 @@ endobj /Contents 530 0 R /Resources 528 0 R /MediaBox [0 0 612 792] -/Parent 510 0 R -/Annots [ 523 0 R ] +/Parent 509 0 R +/Annots [ 527 0 R ] >> endobj -523 0 obj << +527 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [225.315 613.524 231.292 624.013] +/Rect [225.315 449.532 231.292 460.02] /A << /S /GoTo /D (Hfootnote.1) >> >> endobj 531 0 obj << /D [529 0 R /XYZ 132.768 705.06 null] >> endobj 270 0 obj << -/D [529 0 R /XYZ 133.768 667.198 null] +/D [529 0 R /XYZ 133.768 505.422 null] >> endobj 532 0 obj << -/D [529 0 R /XYZ 148.115 138.196 null] +/D [529 0 R /XYZ 148.115 138.182 null] >> endobj 528 0 obj << -/Font << /F42 352 0 R /F40 351 0 R /F48 355 0 R >> +/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> /ProcSet [ /PDF /Text ] >> endobj +535 0 obj << +/Length 152 +/Filter /FlateDecode +>> +stream +x3PHW0Pp2N!\n& +zfFf +!i +zf +fzFƦ +!) +)iyfaA%yEQ#/zx4&e&gC * . efgankjjgi5Ekx5 +endstream +endobj +534 0 obj << +/Type /Page +/Contents 535 0 R +/Resources 533 0 R +/MediaBox [0 0 612 792] +/Parent 509 0 R +>> endobj 536 0 obj << +/D [534 0 R /XYZ 132.768 705.06 null] +>> endobj +533 0 obj << +/Font << /F48 355 0 R /F40 351 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +540 0 obj << /Length 2314 /Filter /FlateDecode >> @@ -2123,41 +2264,41 @@ veDns H%F|l8mvr9CB?sf?%H<Ep=+W-q`#*Rx8fiWdЄ2}ֳNrh$0j'"箢5 yY/rjC~ҷz7wXd\ܢmeֆ>κUChl\zòWe&؃3fQ+^X&K\9{|ik"\7k}o?H 3`} O^ |/ǘzk+.}S+8iv*o6]eOk+]<2ݯiK^ry; ̜{Io\wƐm޽޳Ķ Aʤ*ݩ}I#~oFoI|uMO:Ad?ۡثkp5Y QZKB}dOQ8I#6'X0k\%C̡kߴh> endobj -533 0 obj << +537 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [281.391 595.95 288.365 606.894] /A << /S /GoTo /D (section.2) >> >> endobj -537 0 obj << -/D [535 0 R /XYZ 132.768 705.06 null] +541 0 obj << +/D [539 0 R /XYZ 132.768 705.06 null] >> endobj 274 0 obj << -/D [535 0 R /XYZ 133.768 667.198 null] +/D [539 0 R /XYZ 133.768 667.198 null] >> endobj 278 0 obj << -/D [535 0 R /XYZ 133.768 558.643 null] +/D [539 0 R /XYZ 133.768 558.643 null] >> endobj 282 0 obj << -/D [535 0 R /XYZ 133.768 311.142 null] +/D [539 0 R /XYZ 133.768 311.142 null] >> endobj -534 0 obj << +538 0 obj << /Font << /F42 352 0 R /F40 351 0 R /F48 355 0 R /F14 432 0 R >> /ProcSet [ /PDF /Text ] >> endobj -540 0 obj << +545 0 obj << /Length 1925 /Filter /FlateDecode >> @@ -2169,39 +2310,7 @@ xڭXmo I,3+ӬҒhkBUݑ;uq޴PX9\H0M0h&WRRۣgZ*M|Z$>(G% ו#ɸ}Lў+d L@,G W֭Csc cJMVuuzI q1};ɥ"MY;2h㾣gB>SBLBnYNj/9vgi{L;,]3χ|E 2b{(hJg˪!ŲB7DCIgov]p7 ,?hB͓`h~ZQnBt£ZjUye~tM!ͮ]ZX.4ujeMGӆ˚LFnǼvcjRoҲ[ vtgzOuf-u>_a> endobj -541 0 obj << -/D [539 0 R /XYZ 132.768 705.06 null] ->> endobj -286 0 obj << -/D [539 0 R /XYZ 133.768 667.198 null] ->> endobj -538 0 obj << -/Font << /F42 352 0 R /F40 351 0 R /F48 355 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -545 0 obj << -/Length 1647 -/Filter /FlateDecode ->> -stream -xڕX[S6~_tl˗N` bvfdG!.,G;>YRs-x8?7Og׶7 Xe!uiA5GvbOO sqsagev1._w=+I9>ۑ`<]Lg$ۧ)QZ>!ďà C=y&r#0%F1Q!6"n䐳q -O1!nͤiEZ!DՅ -Jң0?ӫS1{Tf~zyKp}t*uAib-,6a%<zL5w[蒴y|y&!2ai >HeLM -U-mqmW$.|#[Sɸ6Vm o(oD;mIS}D̺0T -N^6-PU$&F# P&hq0[)B$bVJJ0>c!=\0p*,/ P &+ԍ!DkE*PQ԰|_ +/eGkc#ެ}=9LfXbiğ3>1^YY7] X}tң>rV砆x,Pck'Auȗ/ډDE,|E;DIX Qe]T'޲%^/l|9.]}vYfoOJ_nwH^=> endobj +286 0 obj << +/D [544 0 R /XYZ 133.768 667.198 null] +>> endobj 543 0 obj << -/Font << /F48 355 0 R /F40 351 0 R >> +/Font << /F42 352 0 R /F40 351 0 R /F48 355 0 R >> /ProcSet [ /PDF /Text ] >> endobj 549 0 obj << -/Length 1268 +/Length 1647 /Filter /FlateDecode >> stream -xڽW[o6~ϯۆ!68NqX :, tX]Hʒ G2).$4 N`ӁaM ʀXCʀBea(b -~"SI6rT0'Hp#$"o#7 MrFc {B8T=6 :LX -,MkXʍ"D7&3!iimFEq,&]ār,]0,?[ՁijGcd~J,+U-+7˖g0Kc o7Bp%%"+4}Xb]ea.VK?q>;| ȶfEf# KǎE~_āP 6YhD:z&3=Mߊ;Y|G,ULa2"bk/%$8 Dl08 -<ȭ⨨V=saųG/h H\lqR -]N}! = yIo@1<\f#-B&/:o|C%`q ouEtgsir f5Xl_ Xk1ߋ5 J9rSoYqZ֛%%pgu;HMMYР|G)DL( -E肽^ s_,P&%Xֱ3$( -yR`qoGھSX_Ob_δ6tW}{t2:pZgagGv[OMѴ+'u|:<MJgU|6r2ONx~rpŋ'_+9̳zQl+o|j@@Kk2snQ ԬW6=VΌxMf>j5<^.`%kϔlh:{VW|ҟstwcb2ITULfV0kC{oZ%כ +xڕX[S6~_tl˗N` bvfdG!.,G;>YRs-x8?7Og׶7 Xe!uiA5GvbOO sqsagev1._w=+I9>ۑ`<]Lg$ۧ)QZ>!ďà C=y&r#0%F1Q!6"n䐳q +O1!nͤiEZ!DՅ +Jң0?ӫS1{Tf~zyKp}t*uAib-,6a%<zL5w[蒴y|y&!2ai >HeLM +U-mqmW$.|#[Sɸ6Vm o(oD;mIS}D̺0T +N^6-PU$&F# P&hq0[)B$bVJJ0>c!=\0p*,/ P &+ԍ!DkE*PQ԰|_ +/eGkc#ެ}=9LfXbiğ3>1^YY7] X}tң>rV砆x,Pck'Auȗ/ډDE,|E;DIX Qe]T'޲%^/l|9.]}vYfoOJ_nwH^=> endobj 547 0 obj << -/Font << /F40 351 0 R /F48 355 0 R >> +/Font << /F48 355 0 R /F40 351 0 R >> /ProcSet [ /PDF /Text ] >> endobj 553 0 obj << -/Length 802 +/Length 1268 /Filter /FlateDecode >> stream -xڽVn@}WXKv뫢>0- 1XR0mU @3ggf G -.`&@WDEp&( -D, Lt,S":BB!È -[gw ?Voh~29&ԬYxaY2$A)R xc ytĆR΋n?$pL6W{yųD;5$ڬHsqntx+ -Ygۣkj4z5ȅ8I+J1I7ˌ{LgM߽M߰kY:['K6l<>KQ&V3n1]GiirUU(.`oq -;EgUi*@Lql+r(Z, $i̥$5Q*7b3zZV$SkB-iQ ^C;y[un̮{v7lb9X.a[*=8TYgsxr8(2Pe1jv9&2g.F@je<R,*Xw?+$Á~qůÂeHChu[,?m_t$a )BDe ,wd+:@V㡩ũsV>ysgIUUGI#҂{/E]G/W\{s($I8᪊ G=l'Ý_z*@M -SQ٘o_!&P +xڽW[o6~ϯۆ!68NqX :, tX]Hʒ G2).$4 N`ӁaM ʀXCʀBea(b +~"SI6rT0'Hp#$"o#7 MrFc {B8T=6 :LX +,MkXʍ"D7&3!iimFEq,&]ār,]0,?[ՁijGcd~J,+U-+7˖g0Kc o7Bp%%"+4}Xb]ea.VK?q>;| ȶfEf# KǎE~_āP 6YhD:z&3=Mߊ;Y|G,ULa2"bk/%$8 Dl08 +<ȭ⨨V=saųG/h H\lqR +]N}! = yIo@1<\f#-B&/:o|C%`q ouEtgsir f5Xl_ Xk1ߋ5 J9rSoYqZ֛%%pgu;HMMYР|G)DL( +E肽^ s_,P&%Xֱ3$( +yR`qoGھSX_Ob_δ6tW}{t2:pZgagGv[OMѴ+'u|:<MJgU|6r2ONx~rpŋ'_+9̳zQl+o|j@@Kk2snQ ԬW6=VΌxMf>j5<^.`%kϔlh:{VW|ҟstwcb2ITULfV0k 7Z6ל endstream endobj 552 0 obj << @@ -2273,18 +2386,21 @@ endobj /D [552 0 R /XYZ 132.768 705.06 null] >> endobj 551 0 obj << -/Font << /F48 355 0 R /F40 351 0 R >> +/Font << /F40 351 0 R /F48 355 0 R >> /ProcSet [ /PDF /Text ] >> endobj 557 0 obj << -/Length 1267 +/Length 802 /Filter /FlateDecode >> stream -xڝVQs6~ϯ`r/v'!\$': 9@皇]!ဃ;>0O+ʓ*NTN_b#xK&PxPHcfiY GTUk'Ip$"OWk02uMC֏\8XR/!k`mȀ84CLyTO2qM+avMZUPK &e 4۠5EldYV_*DI:n, iaeEM. !,$]fi=dU5/V0Cox9o[g>xh05XElL.|2vn!dSt+A~|r?uؾzh ?rY8?ZED9~ ^7p&x[9!]CIl߭7&-8gmR{`D||%Ɵ={ޗ;_!NhƸ+cĆtRTvA>{;F!-ɶOaǻv+ב  -k-xU4 UPlHVDQ\ACߤuU01o}b2N{"ׯ8`("T<ҋ^ʸek X :V҄[6x=Yc}k&hk H|R5z IK]qQguF e& mQS9={b)0Xr] /҆#CM;Q$56y7 ްff#BTF$V{ŤMȀcN6d{nVVp[s% p%ˬx ZRVVL\`-I` ҼlYw%AV@,O_53㑛f6㲅L)x "1pk2OWa,8ق)2cn7"ܽkw݇}y~dފR -UOm(b:Ҵݺ[kmDUW:^2DbnQE\gڋϑ$-`}b#o`~L-6jN-ɀLV$ 7!a8"} -WlEtD(K#ƛeʚoLHvP sl@i.y+3?jo?ůGE#7G#|m#0Y;wbwL\_u) +xڽVn@}WXKv뫢>0- 1XR0mU @3ggf G +.`&@WDEp&( +D, Lt,S":BB!È +[gw ?Voh~29&ԬYxaY2$A)R xc ytĆR΋n?$pL6W{yųD;5$ڬHsqntx+ +Ygۣkj4z5ȅ8I+J1I7ˌ{LgM߽M߰kY:['K6l<>KQ&V3n1]GiirUU(.`oq +;EgUi*@Lql+r(Z, $i̥$5Q*7b3zZV$SkB-iQ ^C;y[un̮{v7lb9X.a[*=8TYgsxr8(2Pe1jv9&2g.F@je<R,*Xw?+$Á~qůÂeHChu[,?m_t$a )BDe ,wd+:@V㡩ũsV>ysgIUUGI#҂{/E]G/W\{s($I8᪊ G=l'Ý_z*@M +SQ٘o_2&Q endstream endobj 556 0 obj << @@ -2297,23 +2413,19 @@ endobj 558 0 obj << /D [556 0 R /XYZ 132.768 705.06 null] >> endobj -290 0 obj << -/D [556 0 R /XYZ 133.768 367.532 null] ->> endobj 555 0 obj << -/Font << /F48 355 0 R /F40 351 0 R /F42 352 0 R >> +/Font << /F48 355 0 R /F40 351 0 R >> /ProcSet [ /PDF /Text ] >> endobj 561 0 obj << -/Length 1483 +/Length 1267 /Filter /FlateDecode >> stream -xڵW[o6~2yRuYvC7^_a%:bKH/-P0(\?~m@WϨ[>;c"qN4R`YW$YDR~- Q,h\qء|UNFqmvؚ%ᇽ\\AA4N4XNk "ԛF) ~_["JXJvK\uo-[_ÿ|Giܺ5SmURn[v^9Hu[a&. -uvR]c H]H ZML\/*9'ir?BF"lL*)i6" -f2vW8rc?sAFiE~ϽF,Zb41 ce[˶j3vIIeS[aF!>Y§1%y6a[8Mڌ9b `C|)$|՝b(\> [$p61iF:dJ}Ve29LV^ACq[/lz`{-l8cC"|#$ ~._;\`4rK79* jX5-ͫt XdCZ`{#qJlsJf!V-QF:xÝX%jN3'K =+io!Iq 9|w#:>ˍ44pܫ)9!i6:-[a;cpbYqJc"dp AYaD*#lܭdox|n^?cDGO(qx{߰GB-_DM4rMt>Rxۮ {I>3}>z] fcRR+_;}Xd&~cАE{D3S%\)Kَg"wb +xڝVQs6~ϯ`r/v'!\$': 9@皇]!ဃ;>0O+ʓ*NTN_b#xK&PxPHcfiY GTUk'Ip$"OWk02uMC֏\8XR/!k`mȀ84CLyTO2qM+avMZUPK &e 4۠5EldYV_*DI:n, iaeEM. !,$]fi=dU5/V0Cox9o[g>xh05XElL.|2vn!dSt+A~|r?uؾzh ?rY8?ZED9~ ^7p&x[9!]CIl߭7&-8gmR{`D||%Ɵ={ޗ;_!NhƸ+cĆtRTvA>{;F!-ɶOaǻv+ב  +k-xU4 UPlHVDQ\ACߤuU01o}b2N{"ׯ8`("T<ҋ^ʸek X :V҄[6x=Yc}k&hk H|R5z IK]qQguF e& mQS9={b)0Xr] /҆#CM;Q$56y7 ްff#BTF$V{ŤMȀcN6d{nVVp[s% p%ˬx ZRVVL\`-I` ҼlYw%AV@,O_53㑛f6㲅L)x "1pk2OWa,8ق)2cn7"ܽkw݇}y~dފR +UOm(b:Ҵݺ[kmDUW:^2DbnQE\gڋϑ$-`}b#o`~L-6jN-ɀLV$ 7!a8"} +WlEtD(K#ƛeʚoLHvP sl@i.y+3?jo?ůGE#7G#|m#0Y;wM호ɿt endstream endobj 560 0 obj << @@ -2326,27 +2438,23 @@ endobj 562 0 obj << /D [560 0 R /XYZ 132.768 705.06 null] >> endobj -294 0 obj << -/D [560 0 R /XYZ 133.768 667.198 null] +290 0 obj << +/D [560 0 R /XYZ 133.768 367.532 null] >> endobj 559 0 obj << -/Font << /F42 352 0 R /F40 351 0 R /F48 355 0 R >> +/Font << /F48 355 0 R /F40 351 0 R /F42 352 0 R >> /ProcSet [ /PDF /Text ] >> endobj 565 0 obj << -/Length 1915 +/Length 1483 /Filter /FlateDecode >> stream -xڝXs6_Q7! ?Z3i{好"dqLHtw ФL%b~'߼v^x&&D(ɤD*fB*ͫl/VWMQW7jfs~ӻ;}o,*wRig~Ĺ7o?zfjNb+8P/q2m/$R$?ƙDߒ~QewΤ݌gyjROk>m*y՗%q< .73?HU@yiQvqzY}h{-molj7EsZՀ:ˁiȽ3_pY=9v-C]˺ֹ!KphzϾHR]&`tӂZ~-'Δ Kd $5$3NJfw5:=lJyYSIe(?UnŊ3&CJQ{3 -kUs}n1f/b"| `Gb3RK!'%YR4ʭW:wqa=W kY"+ &L #B3ݾʄFz H!G7Y*4ew]]UfSu}8f_WyQۏv,CD#`XDL#z*&%䭄KTC>eI5 -;u>|XѼ\orf!yŻ?Woo+:_r ߯noWos_h=9h7ev]x#ع?^P?d"VT̄ fXLLrZ~]׻]V0('mC`H'XxAI&̸Hb:Α%QP0g`2UIKBoi{Y#bK/j e;]-; XܝbO WX!g{$|K6p=%#Eu،ՏEO+ryB&yj]\S Gl,D[yqH;;f4<](2Nx;ۙU&;ߏ $#JA63|ak8zz$8V3M:„fir.Ǿ,E;r'1yLYtWʭr:5q2M1sc;|ǭ>$at^H1M׍_ -`^H -BJ -퀈Afk #aQ5t9ݭCØMPEK jbB+C=ߒK}_w}[TYTn鲤c1ALб|8s( Xo\~L@.}f/&f]kE5G*4ViFX?pTAׂQL %B[;-n#l=BY뭶&gC.5'";I˜iCu]mʵ>3! ' hB^1e~TYsJ -lDH]MBf>ig_MRPȢ'_M]5%jzWy^9O)ՔOR>ݔN/?Dgf{AuF{_YS5xBDzdEc?òMhs"5 `6,X<.[VNn8bj=2 Xhv)KxW y4VǐIBn 4%oM߼Pmf&P[zi inSV@JNLԥBԌ7$"EPCeH_ +xڵW[o6~2yRuYvC7^_a%:bKH/-P0(\?~m@WϨ[>;c"qN4R`YW$YDR~- Q,h\qء|UNFqmvؚ%ᇽ\\AA4N4XNk "ԛF) ~_["JXJvK\uo-[_ÿ|Giܺ5SmURn[v^9Hu[a&. +uvR]c H]H ZML\/*9'ir?BF"lL*)i6" +f2vW8rc?sAFiE~ϽF,Zb41 ce[˶j3vIIeS[aF!>Y§1%y6a[8Mڌ9b `C|)$|՝b(\> [$p61iF:dJ}Ve29LV^ACq[/lz`{-l8cC"|#$ ~._;\`4rK79* jX5-ͫt XdCZ`{#qJlsJf!V-QF:xÝX%jN3'K =+io!Iq 9|w#:>ˍ44pܫ)9!i6:-[a;cpbYqJc"dp AYaD*#lܭdox|n^?cDGO(qx{߰GB-_DM4rMt>Rxۮ {I>3}>z] fcRR+_;}Xd&~cАE{D3S%\)Kَg"c endstream endobj 564 0 obj << @@ -2359,24 +2467,27 @@ endobj 566 0 obj << /D [564 0 R /XYZ 132.768 705.06 null] >> endobj -298 0 obj << -/D [564 0 R /XYZ 133.768 524.981 null] +294 0 obj << +/D [564 0 R /XYZ 133.768 667.198 null] >> endobj 563 0 obj << -/Font << /F48 355 0 R /F40 351 0 R /F42 352 0 R >> +/Font << /F42 352 0 R /F40 351 0 R /F48 355 0 R >> /ProcSet [ /PDF /Text ] >> endobj 570 0 obj << -/Length 1918 +/Length 1915 /Filter /FlateDecode >> stream -xڝX[sD~0yx][73`)NGY$_9{veIx~s8,7/\j."\l ,b^d(+ߍUdj)^e]/?m`{(lo-tm x]֦䯮+ ---vZ+uZ% [״4%wAUeASF 1 , T\ZuDHѴ(jͦr#rős[sFH@,bl.iW!g̱YUJu8Q+ghi}UM_Ҽ (h4)/QŁy0 R͜cX;;m[0RNj>|nɝΌ{ AYWMpҾ[<WdMLaL}0>Kjѥ%D,3|4c/fhaE.X!L:4T5tyQyn26]#%pmxV5Z.NjSEH3{A{7lU ܠu4cj*L#hj - ׭V3yS^ thc]{3`H1'DwA͇MGq?MX10RVϥMc׷Ǻǩ̎7֝ɚ];}ȘQW,@}xD߰p:ߖȷc17qcS3"t; XZ&NUnm zv'ʃ"9O;T0o~|ټ_B}sԿ{S˴Mda__${aK0A|$ d }I3nĂ$\ &K],L/ -E_3# O M@4)]C”`=hfֽ(1QPjj{j y!.`bdj9W@ޠS0#cd$`6KbDzF |j,UOs/G1}g1L i;]e=AxҸѿQn8pkfL 'L垀;ͱra$TI3%5dD/WiM~; +43RSZ>T_;-2Ka˘z7L{4ٜ3|)8aQ|E8 **,s5\Z_; Plx>L Vs%g({}Io>Ϯe ܋매i0fģh__|-UAOsgj Ec{ xW׆-ὝWsʭl]fs7y;|9 >Ig!<`7Lp,;BcO&WƂ`B& VN3L_89BwikT#]Ė D2e;B6!"H3"g "V?@m*y՗%q< .73?HU@yiQvqzY}h{-molj7EsZՀ:ˁiȽ3_pY=9v-C]˺ֹ!KphzϾHR]&`tӂZ~-'Δ Kd $5$3NJfw5:=lJyYSIe(?UnŊ3&CJQ{3 +kUs}n1f/b"| `Gb3RK!'%YR4ʭW:wqa=W kY"+ &L #B3ݾʄFz H!G7Y*4ew]]UfSu}8f_WyQۏv,CD#`XDL#z*&%䭄KTC>eI5 +;u>|XѼ\orf!yŻ?Woo+:_r ߯noWos_h=9h7ev]x#ع?^P?d"VT̄ fXLLrZ~]׻]V0('mC`H'XxAI&̸Hb:Α%QP0g`2UIKBoi{Y#bK/j e;]-; XܝbO WX!g{$|K6p=%#Eu،ՏEO+ryB&yj]\S Gl,D[yqH;;f4<](2Nx;ۙU&;ߏ $#JA63|ak8zz$8V3M:„fir.Ǿ,E;r'1yLYtWʭr:5q2M1sc;|ǭ>$at^H1M׍_ +`^H +BJ +퀈Afk #aQ5t9ݭCØMPEK jbB+C=ߒK}_w}[TYTn鲤c1ALб|8s( Xo\~L@.}f/&f]kE5G*4ViFX?pTAׂQL %B[;-n#l=BY뭶&gC.5'";I˜iCu]mʵ>3! ' hB^1e~TYsJ +lDH]MBf>ig_MRPȢ'_M]5%jzWy^9O)ՔOR>ݔN/?Dgf{AuF{_YS5xBDzdEc?òMhs"5 `6,X<.[VNn8bj=2 Xhv)KxW y4VǐIBn 4%oM߼Pmf&P[zi inSV@JNLԥBԌ7$"EPCeHb/+ endstream endobj 569 0 obj << @@ -2389,14 +2500,44 @@ endobj 571 0 obj << /D [569 0 R /XYZ 132.768 705.06 null] >> endobj -302 0 obj << -/D [569 0 R /XYZ 133.768 568.825 null] +298 0 obj << +/D [569 0 R /XYZ 133.768 524.981 null] >> endobj 568 0 obj << -/Font << /F40 351 0 R /F48 355 0 R /F8 572 0 R /F11 499 0 R /F42 352 0 R >> +/Font << /F48 355 0 R /F40 351 0 R /F42 352 0 R >> /ProcSet [ /PDF /Text ] >> endobj +574 0 obj << +/Length 1918 +/Filter /FlateDecode +>> +stream +xڝX[sD~0yx][73`)NGY$_9{veIx~s8,7/\j."\l ,b^d(+ߍUdj)^e]/?m`{(lo-tm x]֦䯮+ +--vZ+uZ% [״4%wAUeASF 1 , T\ZuDHѴ(jͦr#rős[sFH@,bl.iW!g̱YUJu8Q+ghi}UM_Ҽ (h4)/QŁy0 R͜cX;;m[0RNj>|nɝΌ{ AYWMpҾ[<WdMLaL}0>Kjѥ%D,3|4c/fhaE.X!L:4T5tyQyn26]#%pmxV5Z.NjSEH3{A{7lU ܠu4cj*L#hj + ׭V3yS^ thc]{3`H1'DwA͇MGq?MX10RVϥMc׷Ǻǩ̎7֝ɚ];}ȘQW,@}xD߰p:ߖȷc17qcS3"t; XZ&NUnm zv'ʃ"9O;T0o~|ټ_B}sԿ{S˴Mda__${aK0A|$ d }I3nĂ$\ &K],L/ +E_3# O M@4)]C”`=hfֽ(1QPjj{j y!.`bdj9W@ޠS0#cd$`6KbDzF |j,UOs/G1}g1L i;]e=AxҸѿQn8pkfL 'L垀;ͱra$TI3%5dD/WiM~; +43RSZ>T_;-2Ka˘z7L{4ٜ3|)8aQ|E8 **,s5\Z_; Plx>L Vs%g({}Io>Ϯe ܋매i0fģh__|-UAOsgj Ec{ xW׆-ὝWsʭl]fs7y;|9 >Ig!<`7Lp,;BcO&WƂ`B& VN3L_89BwikT#]Ė D2e;B6!"H3"g "V?@> endobj 575 0 obj << +/D [573 0 R /XYZ 132.768 705.06 null] +>> endobj +302 0 obj << +/D [573 0 R /XYZ 133.768 568.825 null] +>> endobj +572 0 obj << +/Font << /F40 351 0 R /F48 355 0 R /F8 576 0 R /F11 504 0 R /F42 352 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +579 0 obj << /Length 2050 /Filter /FlateDecode >> @@ -2410,33 +2551,33 @@ ct I:W{%+^A* &D'jJ*X상?Lʸ GP[awu$IbEm{&Q>PGAR=?!l⷗V(gwB^JK,"AVrGh&F80@{s@Hu1|mk>[T_7+%=7CjR0 ::$/;yC [ &Ivrsş 0GwjW;'*KhT;P $e#ɱ~>;Rv7}ZٟF0F\o~n{# c%e*)[CtqD2.aNOR (R [_ϒ< -W "EDCbG٭z,_4 _Ɂ*o8p'0$0a &_Y;h*0y SXioUWe~>/}( '4pҰc(Moj +W "EDCbG٭z,_4 _Ɂ*o8p'0$0a &_Y;h*0y SXioUWe~>/}( '4pҰc(nk endstream endobj -574 0 obj << +578 0 obj << /Type /Page -/Contents 575 0 R -/Resources 573 0 R +/Contents 579 0 R +/Resources 577 0 R /MediaBox [0 0 612 792] /Parent 567 0 R >> endobj -576 0 obj << -/D [574 0 R /XYZ 132.768 705.06 null] +580 0 obj << +/D [578 0 R /XYZ 132.768 705.06 null] >> endobj 306 0 obj << -/D [574 0 R /XYZ 133.768 546.859 null] +/D [578 0 R /XYZ 133.768 546.859 null] >> endobj 310 0 obj << -/D [574 0 R /XYZ 133.768 463.796 null] +/D [578 0 R /XYZ 133.768 463.796 null] >> endobj 314 0 obj << -/D [574 0 R /XYZ 133.768 273.136 null] +/D [578 0 R /XYZ 133.768 273.136 null] >> endobj -573 0 obj << +577 0 obj << /Font << /F48 355 0 R /F40 351 0 R /F42 352 0 R /F14 432 0 R >> /ProcSet [ /PDF /Text ] >> endobj -582 0 obj << +586 0 obj << /Length 2209 /Filter /FlateDecode >> @@ -2446,115 +2587,115 @@ xڽ] 34L6ɼ 4ژ<]&X9dJ}Yvʷs/s8psZ(­&:c%7]X Hn0}=J71t\mr4sȶǒ/Rz)SF!%mp5Ί-䡿xNhxbS]ݛs|÷!/uskX_ia0,-r/wNlBPŦٓUyjP0Ή"+rn}?sL&ɱz̓HgG /SɄs5 l;#W)HB+)}Y|Z'l&R^yҬBBO/6dNH^jN %gEU!" h^GuXͶ$(K|jQq&sDQd=HTނ9Rb'4x@Ո"{ԪCvi9lMP4}@(m&)[A7ˌG70jraTH)Ҷ_S!PuT߅v5/N7S,Wgak՟WvML;aLg]5w},'Ӻ>Z>pI5k۷M cQ;;_ɋnfRA!x<ݶOA,+,h9'Tc9%"6uR,Js=٧yd\@Ol>[Uyl3L+BP|X$=[=)fs}Nʎ*ɝQRPn\mE|YY:ۀĜ;eRȳK=NT!ʢS!Uw^;v7l3Ƴ٣Y8J$Kv5oz >H$+@ʒwzXqs?&3 +QwTWQojm)>l3Ƴ٣Y8J$Kv5oz >H$+@ʒw8=!74 endstream endobj -581 0 obj << +585 0 obj << /Type /Page -/Contents 582 0 R -/Resources 580 0 R +/Contents 586 0 R +/Resources 584 0 R /MediaBox [0 0 612 792] /Parent 567 0 R -/Annots [ 577 0 R ] +/Annots [ 581 0 R ] >> endobj -577 0 obj << +581 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [375.641 523.341 384.279 534.285] /A << /S /GoTo /D (appendix.B) >> >> endobj -583 0 obj << -/D [581 0 R /XYZ 132.768 705.06 null] +587 0 obj << +/D [585 0 R /XYZ 132.768 705.06 null] >> endobj 318 0 obj << -/D [581 0 R /XYZ 133.768 604.786 null] +/D [585 0 R /XYZ 133.768 604.786 null] >> endobj 322 0 obj << -/D [581 0 R /XYZ 133.768 496.834 null] +/D [585 0 R /XYZ 133.768 496.834 null] >> endobj -580 0 obj << -/Font << /F40 351 0 R /F42 352 0 R /F48 355 0 R /F14 432 0 R /F13 584 0 R /F11 499 0 R /F8 572 0 R >> +584 0 obj << +/Font << /F40 351 0 R /F42 352 0 R /F48 355 0 R /F14 432 0 R /F13 588 0 R /F11 504 0 R /F8 576 0 R >> /ProcSet [ /PDF /Text ] >> endobj -589 0 obj << -/Length 937 +593 0 obj << +/Length 938 /Filter /FlateDecode >> stream xVݏF G|0|HQ$JNUj}a,:0\6-HT/cE b'HhrueٟNO[8 2S/nіsxꀄno`B!/XXL/ ]pЩCc9S@YhD* ƙ0I”J30~0%<6E7"LPotDү/$-W}9l:Ș4@0)oύ?l)'6Fg-hO%=G+B2-sgHt +~t~5E=RC a%JÇ1o<;sJ%TBX!+pyLWI>Dү/$-W}9l:Ș4@0)oύ?l)'6Fg-hO%=G+B2-s gYu endstream endobj -588 0 obj << +592 0 obj << /Type /Page -/Contents 589 0 R -/Resources 587 0 R +/Contents 593 0 R +/Resources 591 0 R /MediaBox [0 0 612 792] /Parent 567 0 R -/Annots [ 578 0 R 579 0 R 585 0 R 586 0 R ] +/Annots [ 582 0 R 583 0 R 589 0 R 590 0 R ] >> endobj -578 0 obj << +582 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [446.732 642.127 458.687 653.071] /A << /S /GoTo /D (section.12) >> >> endobj -579 0 obj << +583 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [372.771 630.172 392.198 641.116] /A << /S /GoTo /D (subsection.12.4) >> >> endobj -585 0 obj << +589 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [196.692 554.456 205.878 565.4] /A << /S /GoTo /D (appendix.A) >> >> endobj -586 0 obj << +590 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [196.692 510.62 205.878 521.564] /A << /S /GoTo /D (appendix.A) >> >> endobj -590 0 obj << -/D [588 0 R /XYZ 132.768 705.06 null] +594 0 obj << +/D [592 0 R /XYZ 132.768 705.06 null] >> endobj -587 0 obj << +591 0 obj << /Font << /F14 432 0 R /F40 351 0 R /F48 355 0 R >> /ProcSet [ /PDF /Text ] >> endobj -591 0 obj +595 0 obj [329.4] endobj -592 0 obj +596 0 obj [500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8] endobj -593 0 obj +597 0 obj [277.8 277.8 777.8 500 777.8 500 530.9 750 758.5 714.7 827.9 738.2 643.1 786.3 831.3 439.6 554.5 849.3 680.6 970.1 803.5 762.8 642 790.6 759.3 613.2 584.4 682.8 583.3 944.4 828.5 580.6 682.6 388.9 388.9 388.9 1000 1000 416.7 528.6 429.2 432.8 520.5 465.6 489.6 477 576.2 344.5 411.8 520.6 298.4 878 600.2 484.7 503.1 446.4 451.2 468.8 361.1 572.5] endobj -594 0 obj +598 0 obj [500 777.8 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8] endobj -596 0 obj +600 0 obj [600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 0 600 600 600 600 600 600 600] endobj -597 0 obj +601 0 obj [250 278 500 500 500 500 500 500 500 500 500 500 333 333 675 675 675 500 920 611 611 667 722 611 611 722 722 333 444 667 556 833 667 722 611 722 611 500 556 722 611 833 611 556 556 389 278 389 422 500 333 500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 500 389 389 278 500 444] endobj -598 0 obj +602 0 obj [556 556 167 333 667 278 333 333 0 333 570 0 667 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 250 333 555 500 500 1000 833 333 333 333 500 570 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 570 570 570 500 930 722 667 722 722 667 611 778 778 389 500 778 667 944 722 778 611 778 722 556 667 722 722 1000 722 722 667 333 278 333 581 500 333 500 556 444 556 444 333 500 556 278 333 556 278 833 556 500 556 556 444 389 333 556 500 722 500 500 444 394 220 394 520 0 0 0 333 500 500 1000 500 500 333 1000 556 333 1000 0 0 0 0 0 0 500 500 350 500] endobj -599 0 obj +603 0 obj [556 556 167 333 611 278 333 333 0 333 564 0 611 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 180 250 333 408 500 500 833 778 333 333 333 500 564 250 333 250 278 500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444 921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 722 722 611 333 278 333 469 500 333 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 480 200 480 541 0 0 0 333 500 444 1000 500 500 333 1000 556 333 889 0 0 0 0 0 0 444 444] endobj -600 0 obj << +604 0 obj << /Length1 1615 /Length2 8425 /Length3 0 @@ -2594,7 +2735,7 @@ C hBŁAtn=oslnPTzns=7[·cpUZAowe^^1;VPL<`^l3|(NP[ڢ$weǏ{wha WҠӰI,Hb endstream endobj -601 0 obj << +605 0 obj << /Type /FontDescriptor /FontName /PVCURR+CMMI10 /Flags 4 @@ -2606,9 +2747,9 @@ endobj /StemV 72 /XHeight 431 /CharSet (/N/a/b/comma/d/e/i/j/m/n/o/period/r/u) -/FontFile 600 0 R +/FontFile 604 0 R >> endobj -602 0 obj << +606 0 obj << /Length1 1496 /Length2 8632 /Length3 0 @@ -2647,7 +2788,7 @@ J N0*# hݘ:)4]7ҩ9/UyaS(;!:(̶XL(Ǧ-ipX쵾dl  I\!?p9*~a[:J endstream endobj -609 0 obj << +613 0 obj << /Type /FontDescriptor /FontName /MLARYO+NimbusMonL-Regu /Flags 4 @@ -2866,9 +3007,9 @@ endobj /StemV 41 /XHeight 426 /CharSet (/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/ampersand/asterisk/b/backslash/bar/braceleft/braceright/bracketleft/bracketright/c/circumflex/colon/comma/d/dollar/e/eight/equal/exclam/f/five/four/g/greater/h/hyphen/i/j/k/l/less/m/n/nine/numbersign/o/one/p/parenleft/parenright/period/q/quotedbl/r/s/semicolon/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) -/FontFile 608 0 R +/FontFile 612 0 R >> endobj -610 0 obj << +614 0 obj << /Length1 1626 /Length2 16047 /Length3 0 @@ -2940,7 +3081,7 @@ w> WS@ȗ%0C> endobj -612 0 obj << +616 0 obj << /Length1 1630 /Length2 17718 /Length3 0 @@ -3040,7 +3181,7 @@ Z< I:Je_~X;VsFB9bVEL\ЯnB b g5 םZVILe2wҢ endstream endobj -613 0 obj << +617 0 obj << /Type /FontDescriptor /FontName /DJKLXJ+NimbusRomNo9L-Regu /Flags 4 @@ -3052,9 +3193,9 @@ endobj /StemV 85 /XHeight 450 /CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/b/bracketleft/bracketright/c/colon/comma/d/e/eight/equal/f/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/plus/q/quotedblleft/quotedblright/quoteright/r/s/semicolon/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) -/FontFile 612 0 R +/FontFile 616 0 R >> endobj -614 0 obj << +618 0 obj << /Length1 1647 /Length2 5603 /Length3 0 @@ -3088,7 +3229,7 @@ xڭTw8 |a{Zmsi`WM^~Zx,5{f6F 5r .U*ӏo_$-@ֈ/&e{Rjse1P=īlv_Sq|*wMղziWw,As󙖟>mE\mR7 qIt ^>_^-phԿ_DZWxIn,rі!,Tޤ^'R\[CN:p,2Nҽd endstream endobj -615 0 obj << +619 0 obj << /Type /FontDescriptor /FontName /LAOMOF+NimbusRomNo9L-ReguItal /Flags 4 @@ -3100,130 +3241,130 @@ endobj /StemV 78 /XHeight 441 /CharSet (/d/e/i/m/o/one/period/q/r/u/v/zero) -/FontFile 614 0 R +/FontFile 618 0 R >> endobj -595 0 obj << +599 0 obj << /Type /Encoding /Differences [2/fi/fl 33/exclam/quotedbl/numbersign/dollar 38/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question 65/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/bracketleft/backslash/bracketright 95/underscore 97/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/braceleft/bar/braceright 136/circumflex 147/quotedblleft/quotedblright 150/endash] >> endobj -499 0 obj << +504 0 obj << /Type /Font /Subtype /Type1 /BaseFont /PVCURR+CMMI10 -/FontDescriptor 601 0 R +/FontDescriptor 605 0 R /FirstChar 58 /LastChar 117 -/Widths 593 0 R +/Widths 597 0 R >> endobj -572 0 obj << +576 0 obj << /Type /Font /Subtype /Type1 /BaseFont /JHJBYF+CMR10 -/FontDescriptor 603 0 R +/FontDescriptor 607 0 R /FirstChar 48 /LastChar 93 -/Widths 592 0 R +/Widths 596 0 R >> endobj 432 0 obj << /Type /Font /Subtype /Type1 /BaseFont /ROGAYD+CMSY10 -/FontDescriptor 605 0 R +/FontDescriptor 609 0 R /FirstChar 3 /LastChar 20 -/Widths 594 0 R +/Widths 598 0 R >> endobj -584 0 obj << +588 0 obj << /Type /Font /Subtype /Type1 /BaseFont /NSJEOL+CMSY7 -/FontDescriptor 607 0 R +/FontDescriptor 611 0 R /FirstChar 48 /LastChar 48 -/Widths 591 0 R +/Widths 595 0 R >> endobj 355 0 obj << /Type /Font /Subtype /Type1 /BaseFont /MLARYO+NimbusMonL-Regu -/FontDescriptor 609 0 R +/FontDescriptor 613 0 R /FirstChar 33 /LastChar 136 -/Widths 596 0 R -/Encoding 595 0 R +/Widths 600 0 R +/Encoding 599 0 R >> endobj 352 0 obj << /Type /Font /Subtype /Type1 /BaseFont /DCFLXI+NimbusRomNo9L-Medi -/FontDescriptor 611 0 R +/FontDescriptor 615 0 R /FirstChar 2 /LastChar 150 -/Widths 598 0 R -/Encoding 595 0 R +/Widths 602 0 R +/Encoding 599 0 R >> endobj 351 0 obj << /Type /Font /Subtype /Type1 /BaseFont /DJKLXJ+NimbusRomNo9L-Regu -/FontDescriptor 613 0 R +/FontDescriptor 617 0 R /FirstChar 2 /LastChar 148 -/Widths 599 0 R -/Encoding 595 0 R +/Widths 603 0 R +/Encoding 599 0 R >> endobj 353 0 obj << /Type /Font /Subtype /Type1 /BaseFont /LAOMOF+NimbusRomNo9L-ReguItal -/FontDescriptor 615 0 R +/FontDescriptor 619 0 R /FirstChar 46 /LastChar 118 -/Widths 597 0 R -/Encoding 595 0 R +/Widths 601 0 R +/Encoding 599 0 R >> endobj 356 0 obj << /Type /Pages /Count 6 -/Parent 616 0 R +/Parent 620 0 R /Kids [326 0 R 397 0 R 424 0 R 429 0 R 435 0 R 439 0 R] >> endobj 453 0 obj << /Type /Pages /Count 6 -/Parent 616 0 R +/Parent 620 0 R /Kids [450 0 R 455 0 R 460 0 R 464 0 R 468 0 R 473 0 R] >> endobj 480 0 obj << /Type /Pages /Count 6 -/Parent 616 0 R -/Kids [477 0 R 482 0 R 487 0 R 491 0 R 496 0 R 502 0 R] +/Parent 620 0 R +/Kids [477 0 R 482 0 R 487 0 R 491 0 R 496 0 R 501 0 R] >> endobj -510 0 obj << +509 0 obj << /Type /Pages /Count 6 -/Parent 616 0 R -/Kids [507 0 R 512 0 R 517 0 R 525 0 R 529 0 R 535 0 R] +/Parent 620 0 R +/Kids [506 0 R 512 0 R 517 0 R 524 0 R 529 0 R 534 0 R] >> endobj 542 0 obj << /Type /Pages /Count 6 -/Parent 616 0 R +/Parent 620 0 R /Kids [539 0 R 544 0 R 548 0 R 552 0 R 556 0 R 560 0 R] >> endobj 567 0 obj << /Type /Pages -/Count 5 -/Parent 616 0 R -/Kids [564 0 R 569 0 R 574 0 R 581 0 R 588 0 R] +/Count 6 +/Parent 620 0 R +/Kids [564 0 R 569 0 R 573 0 R 578 0 R 585 0 R 592 0 R] >> endobj -616 0 obj << +620 0 obj << /Type /Pages -/Count 35 -/Kids [356 0 R 453 0 R 480 0 R 510 0 R 542 0 R 567 0 R] +/Count 36 +/Kids [356 0 R 453 0 R 480 0 R 509 0 R 542 0 R 567 0 R] >> endobj -617 0 obj << +621 0 obj << /Type /Outlines /First 3 0 R /Last 323 0 R @@ -3232,7 +3373,7 @@ endobj 323 0 obj << /Title 324 0 R /A 321 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 275 0 R >> endobj 319 0 obj << @@ -3314,7 +3455,7 @@ endobj 275 0 obj << /Title 276 0 R /A 273 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 259 0 R /Next 323 0 R /First 279 0 R @@ -3343,7 +3484,7 @@ endobj 259 0 obj << /Title 260 0 R /A 257 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 243 0 R /Next 275 0 R /First 263 0 R @@ -3372,7 +3513,7 @@ endobj 243 0 obj << /Title 244 0 R /A 241 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 231 0 R /Next 259 0 R /First 247 0 R @@ -3394,7 +3535,7 @@ endobj 231 0 obj << /Title 232 0 R /A 229 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 215 0 R /Next 243 0 R /First 235 0 R @@ -3423,7 +3564,7 @@ endobj 215 0 obj << /Title 216 0 R /A 213 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 167 0 R /Next 231 0 R /First 219 0 R @@ -3511,7 +3652,7 @@ endobj 167 0 obj << /Title 168 0 R /A 165 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 155 0 R /Next 215 0 R /First 171 0 R @@ -3533,7 +3674,7 @@ endobj 155 0 obj << /Title 156 0 R /A 153 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 143 0 R /Next 167 0 R /First 159 0 R @@ -3555,7 +3696,7 @@ endobj 143 0 obj << /Title 144 0 R /A 141 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 131 0 R /Next 155 0 R /First 147 0 R @@ -3577,7 +3718,7 @@ endobj 131 0 obj << /Title 132 0 R /A 129 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 115 0 R /Next 143 0 R /First 135 0 R @@ -3606,7 +3747,7 @@ endobj 115 0 obj << /Title 116 0 R /A 113 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 67 0 R /Next 131 0 R /First 119 0 R @@ -3693,7 +3834,7 @@ endobj 67 0 obj << /Title 68 0 R /A 65 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 59 0 R /Next 115 0 R /First 71 0 R @@ -3708,7 +3849,7 @@ endobj 59 0 obj << /Title 60 0 R /A 57 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 51 0 R /Next 67 0 R /First 63 0 R @@ -3723,7 +3864,7 @@ endobj 51 0 obj << /Title 52 0 R /A 49 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 39 0 R /Next 59 0 R /First 55 0 R @@ -3745,7 +3886,7 @@ endobj 39 0 obj << /Title 40 0 R /A 37 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 27 0 R /Next 51 0 R /First 43 0 R @@ -3767,7 +3908,7 @@ endobj 27 0 obj << /Title 28 0 R /A 25 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 11 0 R /Next 39 0 R /First 31 0 R @@ -3796,7 +3937,7 @@ endobj 11 0 obj << /Title 12 0 R /A 9 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 3 0 R /Next 27 0 R /First 15 0 R @@ -3811,456 +3952,785 @@ endobj 3 0 obj << /Title 4 0 R /A 1 0 R -/Parent 617 0 R +/Parent 621 0 R /Next 11 0 R /First 7 0 R /Last 7 0 R /Count -1 >> endobj -618 0 obj << +622 0 obj << /Names [(Doc-Start) 350 0 R (Hfootnote.1) 532 0 R (appendix.A) 274 0 R (appendix.B) 322 0 R (page.1) 349 0 R (page.10) 466 0 R] /Limits [(Doc-Start) (page.10)] >> endobj -619 0 obj << +623 0 obj << /Names [(page.11) 470 0 R (page.12) 475 0 R (page.13) 479 0 R (page.14) 484 0 R (page.15) 489 0 R (page.16) 493 0 R] /Limits [(page.11) (page.16)] >> endobj -620 0 obj << -/Names [(page.17) 498 0 R (page.18) 504 0 R (page.19) 509 0 R (page.2) 399 0 R (page.20) 514 0 R (page.21) 519 0 R] +624 0 obj << +/Names [(page.17) 498 0 R (page.18) 503 0 R (page.19) 508 0 R (page.2) 399 0 R (page.20) 514 0 R (page.21) 519 0 R] /Limits [(page.17) (page.21)] >> endobj -621 0 obj << -/Names [(page.22) 527 0 R (page.23) 531 0 R (page.24) 537 0 R (page.25) 541 0 R (page.26) 546 0 R (page.27) 550 0 R] +625 0 obj << +/Names [(page.22) 526 0 R (page.23) 531 0 R (page.24) 536 0 R (page.25) 541 0 R (page.26) 546 0 R (page.27) 550 0 R] /Limits [(page.22) (page.27)] >> endobj -622 0 obj << +626 0 obj << /Names [(page.28) 554 0 R (page.29) 558 0 R (page.3) 426 0 R (page.30) 562 0 R (page.31) 566 0 R (page.32) 571 0 R] /Limits [(page.28) (page.32)] >> endobj -623 0 obj << -/Names [(page.33) 576 0 R (page.34) 583 0 R (page.35) 590 0 R (page.4) 431 0 R (page.5) 437 0 R (page.6) 441 0 R] -/Limits [(page.33) (page.6)] ->> endobj -624 0 obj << -/Names [(page.7) 452 0 R (page.8) 457 0 R (page.9) 462 0 R (section*.1) 354 0 R (section*.2) 86 0 R (section*.3) 90 0 R] -/Limits [(page.7) (section*.3)] ->> endobj -625 0 obj << -/Names [(section*.4) 94 0 R (section*.5) 98 0 R (section*.6) 102 0 R (section*.7) 210 0 R (section.1) 2 0 R (section.10) 142 0 R] -/Limits [(section*.4) (section.10)] ->> endobj -626 0 obj << -/Names [(section.11) 154 0 R (section.12) 166 0 R (section.13) 214 0 R (section.14) 230 0 R (section.15) 242 0 R (section.16) 258 0 R] -/Limits [(section.11) (section.16)] ->> endobj 627 0 obj << -/Names [(section.2) 10 0 R (section.3) 26 0 R (section.4) 38 0 R (section.5) 50 0 R (section.6) 58 0 R (section.7) 66 0 R] -/Limits [(section.2) (section.7)] +/Names [(page.33) 575 0 R (page.34) 580 0 R (page.35) 587 0 R (page.36) 594 0 R (page.4) 431 0 R (page.5) 437 0 R] +/Limits [(page.33) (page.5)] >> endobj 628 0 obj << -/Names [(section.8) 114 0 R (section.9) 130 0 R (subsection.1.1) 6 0 R (subsection.10.1) 146 0 R (subsection.10.2) 150 0 R (subsection.11.1) 158 0 R] -/Limits [(section.8) (subsection.11.1)] +/Names [(page.6) 441 0 R (page.7) 452 0 R (page.8) 457 0 R (page.9) 462 0 R (section*.1) 354 0 R (section*.2) 86 0 R] +/Limits [(page.6) (section*.2)] >> endobj 629 0 obj << -/Names [(subsection.11.2) 162 0 R (subsection.12.1) 170 0 R (subsection.12.2) 174 0 R (subsection.12.3) 178 0 R (subsection.12.4) 190 0 R (subsection.12.5) 202 0 R] -/Limits [(subsection.11.2) (subsection.12.5)] +/Names [(section*.3) 90 0 R (section*.4) 94 0 R (section*.5) 98 0 R (section*.6) 102 0 R (section*.7) 210 0 R (section.1) 2 0 R] +/Limits [(section*.3) (section.1)] >> endobj 630 0 obj << -/Names [(subsection.12.6) 206 0 R (subsection.13.1) 218 0 R (subsection.13.2) 222 0 R (subsection.13.3) 226 0 R (subsection.14.1) 234 0 R (subsection.14.2) 238 0 R] -/Limits [(subsection.12.6) (subsection.14.2)] +/Names [(section.10) 142 0 R (section.11) 154 0 R (section.12) 166 0 R (section.13) 214 0 R (section.14) 230 0 R (section.15) 242 0 R] +/Limits [(section.10) (section.15)] >> endobj 631 0 obj << -/Names [(subsection.15.1) 246 0 R (subsection.15.2) 250 0 R (subsection.15.3) 254 0 R (subsection.16.1) 262 0 R (subsection.16.2) 266 0 R (subsection.16.3) 270 0 R] -/Limits [(subsection.15.1) (subsection.16.3)] +/Names [(section.16) 258 0 R (section.2) 10 0 R (section.3) 26 0 R (section.4) 38 0 R (section.5) 50 0 R (section.6) 58 0 R] +/Limits [(section.16) (section.6)] >> endobj 632 0 obj << -/Names [(subsection.2.1) 14 0 R (subsection.2.2) 18 0 R (subsection.2.3) 22 0 R (subsection.3.1) 30 0 R (subsection.3.2) 34 0 R (subsection.4.1) 42 0 R] -/Limits [(subsection.2.1) (subsection.4.1)] +/Names [(section.7) 66 0 R (section.8) 114 0 R (section.9) 130 0 R (subsection.1.1) 6 0 R (subsection.10.1) 146 0 R (subsection.10.2) 150 0 R] +/Limits [(section.7) (subsection.10.2)] >> endobj 633 0 obj << -/Names [(subsection.4.2) 46 0 R (subsection.5.1) 54 0 R (subsection.6.1) 62 0 R (subsection.7.1) 70 0 R (subsection.7.2) 74 0 R (subsection.7.3) 110 0 R] -/Limits [(subsection.4.2) (subsection.7.3)] +/Names [(subsection.11.1) 158 0 R (subsection.11.2) 162 0 R (subsection.12.1) 170 0 R (subsection.12.2) 174 0 R (subsection.12.3) 178 0 R (subsection.12.4) 190 0 R] +/Limits [(subsection.11.1) (subsection.12.4)] >> endobj 634 0 obj << -/Names [(subsection.8.1) 118 0 R (subsection.8.2) 122 0 R (subsection.8.3) 126 0 R (subsection.9.1) 134 0 R (subsection.9.2) 138 0 R (subsection.A.1) 278 0 R] -/Limits [(subsection.8.1) (subsection.A.1)] +/Names [(subsection.12.5) 202 0 R (subsection.12.6) 206 0 R (subsection.13.1) 218 0 R (subsection.13.2) 222 0 R (subsection.13.3) 226 0 R (subsection.14.1) 234 0 R] +/Limits [(subsection.12.5) (subsection.14.1)] >> endobj 635 0 obj << -/Names [(subsection.A.10) 318 0 R (subsection.A.2) 282 0 R (subsection.A.3) 290 0 R (subsection.A.4) 294 0 R (subsection.A.5) 298 0 R (subsection.A.6) 302 0 R] -/Limits [(subsection.A.10) (subsection.A.6)] +/Names [(subsection.14.2) 238 0 R (subsection.15.1) 246 0 R (subsection.15.2) 250 0 R (subsection.15.3) 254 0 R (subsection.16.1) 262 0 R (subsection.16.2) 266 0 R] +/Limits [(subsection.14.2) (subsection.16.2)] >> endobj 636 0 obj << -/Names [(subsection.A.7) 306 0 R (subsection.A.8) 310 0 R (subsection.A.9) 314 0 R (subsubsection.12.3.1) 182 0 R (subsubsection.12.3.2) 186 0 R (subsubsection.12.4.1) 194 0 R] -/Limits [(subsection.A.7) (subsubsection.12.4.1)] +/Names [(subsection.16.3) 270 0 R (subsection.2.1) 14 0 R (subsection.2.2) 18 0 R (subsection.2.3) 22 0 R (subsection.3.1) 30 0 R (subsection.3.2) 34 0 R] +/Limits [(subsection.16.3) (subsection.3.2)] >> endobj 637 0 obj << -/Names [(subsubsection.12.4.2) 198 0 R (subsubsection.7.2.1) 78 0 R (subsubsection.7.2.2) 82 0 R (subsubsection.7.2.3) 106 0 R (subsubsection.A.2.1) 286 0 R] -/Limits [(subsubsection.12.4.2) (subsubsection.A.2.1)] +/Names [(subsection.4.1) 42 0 R (subsection.4.2) 46 0 R (subsection.5.1) 54 0 R (subsection.6.1) 62 0 R (subsection.7.1) 70 0 R (subsection.7.2) 74 0 R] +/Limits [(subsection.4.1) (subsection.7.2)] >> endobj 638 0 obj << -/Kids [618 0 R 619 0 R 620 0 R 621 0 R 622 0 R 623 0 R] -/Limits [(Doc-Start) (page.6)] +/Names [(subsection.7.3) 110 0 R (subsection.8.1) 118 0 R (subsection.8.2) 122 0 R (subsection.8.3) 126 0 R (subsection.9.1) 134 0 R (subsection.9.2) 138 0 R] +/Limits [(subsection.7.3) (subsection.9.2)] >> endobj 639 0 obj << -/Kids [624 0 R 625 0 R 626 0 R 627 0 R 628 0 R 629 0 R] -/Limits [(page.7) (subsection.12.5)] +/Names [(subsection.A.1) 278 0 R (subsection.A.10) 318 0 R (subsection.A.2) 282 0 R (subsection.A.3) 290 0 R (subsection.A.4) 294 0 R (subsection.A.5) 298 0 R] +/Limits [(subsection.A.1) (subsection.A.5)] >> endobj 640 0 obj << -/Kids [630 0 R 631 0 R 632 0 R 633 0 R 634 0 R 635 0 R] -/Limits [(subsection.12.6) (subsection.A.6)] +/Names [(subsection.A.6) 302 0 R (subsection.A.7) 306 0 R (subsection.A.8) 310 0 R (subsection.A.9) 314 0 R (subsubsection.12.3.1) 182 0 R (subsubsection.12.3.2) 186 0 R] +/Limits [(subsection.A.6) (subsubsection.12.3.2)] >> endobj 641 0 obj << -/Kids [636 0 R 637 0 R] -/Limits [(subsection.A.7) (subsubsection.A.2.1)] +/Names [(subsubsection.12.4.1) 194 0 R (subsubsection.12.4.2) 198 0 R (subsubsection.7.2.1) 78 0 R (subsubsection.7.2.2) 82 0 R (subsubsection.7.2.3) 106 0 R (subsubsection.A.2.1) 286 0 R] +/Limits [(subsubsection.12.4.1) (subsubsection.A.2.1)] >> endobj 642 0 obj << -/Kids [638 0 R 639 0 R 640 0 R 641 0 R] -/Limits [(Doc-Start) (subsubsection.A.2.1)] +/Kids [622 0 R 623 0 R 624 0 R 625 0 R 626 0 R 627 0 R] +/Limits [(Doc-Start) (page.5)] >> endobj 643 0 obj << -/Dests 642 0 R +/Kids [628 0 R 629 0 R 630 0 R 631 0 R 632 0 R 633 0 R] +/Limits [(page.6) (subsection.12.4)] >> endobj 644 0 obj << +/Kids [634 0 R 635 0 R 636 0 R 637 0 R 638 0 R 639 0 R] +/Limits [(subsection.12.5) (subsection.A.5)] +>> endobj +645 0 obj << +/Kids [640 0 R 641 0 R] +/Limits [(subsection.A.6) (subsubsection.A.2.1)] +>> endobj +646 0 obj << +/Kids [642 0 R 643 0 R 644 0 R 645 0 R] +/Limits [(Doc-Start) (subsubsection.A.2.1)] +>> endobj +647 0 obj << +/Dests 646 0 R +>> endobj +648 0 obj << /Type /Catalog -/Pages 616 0 R -/Outlines 617 0 R -/Names 643 0 R +/Pages 620 0 R +/Outlines 621 0 R +/Names 647 0 R /PageMode/UseOutlines /OpenAction 325 0 R >> endobj -645 0 obj << +649 0 obj << /Author()/Title(The Khronos Vulkan API Registry)/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.13)/Keywords() -/CreationDate (D:20160322164457Z) -/ModDate (D:20160322164457Z) +<<<<<<< HEAD +/CreationDate (D:20160421144350+01'00') +/ModDate (D:20160421144350+01'00') +======= +/CreationDate (D:20160421121335+01'00') +/ModDate (D:20160421121335+01'00') +>>>>>>> 1.0 /Trapped /False /PTEX.Fullbanner (This is MiKTeX-pdfTeX 2.9.4535 (1.40.13)) >> endobj xref -0 646 +0 650 0000000000 65535 f 0000000015 00000 n -0000027701 00000 n -0000218236 00000 n +0000027696 00000 n +<<<<<<< HEAD +0000219341 00000 n 0000000060 00000 n 0000000092 00000 n -0000027761 00000 n -0000218179 00000 n +0000027756 00000 n +0000219284 00000 n 0000000142 00000 n 0000000178 00000 n -0000030553 00000 n -0000218056 00000 n +0000030548 00000 n +0000219161 00000 n 0000000223 00000 n 0000000259 00000 n -0000033853 00000 n -0000217982 00000 n +0000033848 00000 n +0000219087 00000 n 0000000310 00000 n 0000000368 00000 n -0000036163 00000 n -0000217895 00000 n +0000036158 00000 n +0000219000 00000 n 0000000419 00000 n 0000000477 00000 n -0000036224 00000 n -0000217821 00000 n +0000036219 00000 n +0000218926 00000 n 0000000528 00000 n 0000000589 00000 n -0000036285 00000 n -0000217696 00000 n +0000036280 00000 n +0000218801 00000 n 0000000635 00000 n 0000000678 00000 n -0000036346 00000 n -0000217622 00000 n +0000036341 00000 n +0000218727 00000 n 0000000729 00000 n 0000000760 00000 n -0000036407 00000 n -0000217548 00000 n +0000036402 00000 n +0000218653 00000 n 0000000811 00000 n 0000000843 00000 n -0000036468 00000 n -0000217423 00000 n +0000036463 00000 n +0000218528 00000 n 0000000889 00000 n 0000000942 00000 n -0000036529 00000 n -0000217349 00000 n +0000036524 00000 n +0000218454 00000 n 0000000993 00000 n 0000001045 00000 n -0000040001 00000 n -0000217275 00000 n +0000039996 00000 n +0000218380 00000 n 0000001096 00000 n 0000001146 00000 n -0000040062 00000 n -0000217150 00000 n +0000040057 00000 n +0000218255 00000 n 0000001192 00000 n 0000001243 00000 n -0000040122 00000 n -0000217089 00000 n +0000040117 00000 n +0000218194 00000 n 0000001294 00000 n 0000001346 00000 n -0000040183 00000 n -0000216964 00000 n +0000040178 00000 n +0000218069 00000 n 0000001392 00000 n 0000001443 00000 n -0000042757 00000 n -0000216903 00000 n +0000042752 00000 n +0000218008 00000 n 0000001494 00000 n 0000001541 00000 n -0000042818 00000 n -0000216776 00000 n +0000042813 00000 n +0000217881 00000 n 0000001587 00000 n 0000001633 00000 n -0000042879 00000 n -0000216702 00000 n +0000042874 00000 n +0000217807 00000 n 0000001684 00000 n 0000001732 00000 n -0000045668 00000 n -0000216576 00000 n +0000045650 00000 n +0000217681 00000 n 0000001783 00000 n 0000001829 00000 n -0000045729 00000 n -0000216502 00000 n +0000045711 00000 n +0000217607 00000 n 0000001885 00000 n 0000001944 00000 n -0000045790 00000 n -0000216376 00000 n +0000045772 00000 n +0000217481 00000 n 0000002000 00000 n 0000002071 00000 n -0000045851 00000 n -0000216302 00000 n +0000045833 00000 n +0000217407 00000 n 0000002118 00000 n 0000002171 00000 n -0000045912 00000 n -0000216215 00000 n +0000045894 00000 n +0000217320 00000 n 0000002218 00000 n 0000002264 00000 n -0000045973 00000 n -0000216128 00000 n +0000048501 00000 n +0000217233 00000 n 0000002311 00000 n 0000002355 00000 n -0000048549 00000 n -0000216039 00000 n +0000048562 00000 n +0000217144 00000 n 0000002402 00000 n 0000002452 00000 n -0000048609 00000 n -0000215962 00000 n +0000048623 00000 n +0000217067 00000 n 0000002500 00000 n 0000002547 00000 n -0000048671 00000 n -0000215885 00000 n +0000048685 00000 n +0000216990 00000 n 0000002604 00000 n 0000002645 00000 n -0000050366 00000 n -0000215808 00000 n +0000050285 00000 n +0000216913 00000 n 0000002697 00000 n 0000002745 00000 n -0000052939 00000 n -0000215677 00000 n +0000053042 00000 n +0000216782 00000 n 0000002792 00000 n 0000002846 00000 n -0000053001 00000 n -0000215598 00000 n +0000053104 00000 n +0000216703 00000 n 0000002898 00000 n 0000002948 00000 n -0000053063 00000 n -0000215505 00000 n +0000053166 00000 n +0000216610 00000 n 0000003000 00000 n 0000003048 00000 n -0000053125 00000 n -0000215426 00000 n +0000053228 00000 n +0000216531 00000 n 0000003100 00000 n 0000003147 00000 n -0000055762 00000 n -0000215294 00000 n +0000055791 00000 n +0000216399 00000 n 0000003194 00000 n 0000003241 00000 n -0000055824 00000 n -0000215215 00000 n +0000055853 00000 n +0000216320 00000 n 0000003293 00000 n 0000003342 00000 n -0000055886 00000 n -0000215136 00000 n +0000055915 00000 n +0000216241 00000 n 0000003394 00000 n 0000003441 00000 n -0000055948 00000 n -0000215004 00000 n +0000055976 00000 n +0000216109 00000 n 0000003489 00000 n 0000003546 00000 n -0000056010 00000 n -0000214925 00000 n +0000056038 00000 n +0000216030 00000 n 0000003599 00000 n 0000003651 00000 n -0000058031 00000 n -0000214846 00000 n +0000058026 00000 n +0000215951 00000 n 0000003704 00000 n 0000003754 00000 n -0000058093 00000 n -0000214714 00000 n +0000058088 00000 n +0000215819 00000 n 0000003802 00000 n 0000003858 00000 n -0000058155 00000 n -0000214635 00000 n +0000058150 00000 n +0000215740 00000 n 0000003911 00000 n 0000003965 00000 n -0000058217 00000 n -0000214556 00000 n +0000058212 00000 n +0000215661 00000 n 0000004018 00000 n 0000004070 00000 n -0000058279 00000 n -0000214424 00000 n +0000058274 00000 n +0000215529 00000 n 0000004118 00000 n 0000004167 00000 n -0000058341 00000 n -0000214345 00000 n +0000058336 00000 n +0000215450 00000 n 0000004220 00000 n 0000004273 00000 n -0000060747 00000 n -0000214252 00000 n +0000060815 00000 n +0000215357 00000 n 0000004326 00000 n 0000004377 00000 n -0000060809 00000 n -0000214120 00000 n +0000060877 00000 n +0000215225 00000 n 0000004430 00000 n 0000004489 00000 n -0000060871 00000 n -0000214041 00000 n +0000060938 00000 n +0000215146 00000 n 0000004547 00000 n 0000004600 00000 n -0000060933 00000 n -0000213962 00000 n +0000063538 00000 n +0000215067 00000 n 0000004658 00000 n 0000004709 00000 n -0000063422 00000 n -0000213830 00000 n +0000063600 00000 n +0000214935 00000 n 0000004762 00000 n 0000004821 00000 n -0000063484 00000 n -0000213751 00000 n +0000063662 00000 n +0000214856 00000 n 0000004879 00000 n 0000004932 00000 n -0000063546 00000 n -0000213672 00000 n +0000063724 00000 n +0000214777 00000 n 0000004990 00000 n 0000005041 00000 n 0000065972 00000 n -0000213579 00000 n +0000214684 00000 n 0000005094 00000 n 0000005146 00000 n 0000066034 00000 n -0000213461 00000 n +0000214566 00000 n 0000005199 00000 n 0000005264 00000 n 0000066096 00000 n -0000213396 00000 n +0000214501 00000 n 0000005312 00000 n 0000005359 00000 n 0000066158 00000 n -0000213264 00000 n +0000214369 00000 n 0000005407 00000 n 0000005471 00000 n 0000066220 00000 n -0000213185 00000 n +0000214290 00000 n 0000005524 00000 n 0000005577 00000 n -0000068184 00000 n -0000213092 00000 n +0000068326 00000 n +0000214197 00000 n 0000005630 00000 n 0000005681 00000 n -0000068246 00000 n -0000213013 00000 n +0000068388 00000 n +0000214118 00000 n 0000005734 00000 n 0000005785 00000 n -0000068308 00000 n -0000212881 00000 n +0000070803 00000 n +0000213986 00000 n 0000005833 00000 n 0000005893 00000 n -0000068370 00000 n -0000212802 00000 n +0000070865 00000 n +0000213907 00000 n 0000005946 00000 n 0000006002 00000 n -0000071348 00000 n -0000212723 00000 n +0000070927 00000 n +0000213828 00000 n 0000006055 00000 n 0000006109 00000 n -0000071410 00000 n -0000212591 00000 n +0000070989 00000 n +0000213696 00000 n 0000006157 00000 n 0000006214 00000 n -0000071472 00000 n -0000212512 00000 n +0000071050 00000 n +0000213617 00000 n 0000006267 00000 n 0000006322 00000 n -0000071534 00000 n -0000212419 00000 n +0000073366 00000 n +0000213524 00000 n 0000006375 00000 n 0000006428 00000 n -0000073222 00000 n -0000212340 00000 n +0000073428 00000 n +0000213445 00000 n 0000006481 00000 n 0000006536 00000 n -0000075816 00000 n -0000212208 00000 n +0000075945 00000 n +0000213313 00000 n 0000006584 00000 n 0000006670 00000 n -0000075878 00000 n -0000212129 00000 n +0000076007 00000 n +0000213234 00000 n 0000006723 00000 n 0000006789 00000 n -0000075940 00000 n -0000212036 00000 n +0000076069 00000 n +0000213141 00000 n 0000006842 00000 n 0000006906 00000 n -0000080901 00000 n -0000211957 00000 n +0000081493 00000 n +0000213062 00000 n 0000006959 00000 n 0000007016 00000 n -0000083862 00000 n -0000211824 00000 n +0000084958 00000 n +0000212929 00000 n 0000007064 00000 n 0000007112 00000 n -0000083924 00000 n -0000211745 00000 n +0000085020 00000 n +0000212850 00000 n 0000007164 00000 n 0000007204 00000 n -0000083986 00000 n -0000211613 00000 n +0000085082 00000 n +0000212718 00000 n 0000007256 00000 n 0000007304 00000 n -0000086338 00000 n -0000211548 00000 n +0000087434 00000 n +0000212653 00000 n 0000007361 00000 n 0000007410 00000 n -0000092753 00000 n -0000211455 00000 n +0000093849 00000 n +0000212560 00000 n 0000007462 00000 n 0000007520 00000 n -0000094650 00000 n -0000211362 00000 n +0000095746 00000 n +0000212467 00000 n 0000007572 00000 n 0000007629 00000 n -0000096979 00000 n -0000211269 00000 n +0000098075 00000 n +0000212374 00000 n 0000007681 00000 n 0000007734 00000 n -0000099311 00000 n -0000211176 00000 n +0000100407 00000 n +0000212281 00000 n 0000007786 00000 n 0000007830 00000 n -0000101800 00000 n -0000211083 00000 n +0000102896 00000 n +0000212188 00000 n 0000007882 00000 n 0000007942 00000 n -0000101862 00000 n -0000210990 00000 n +0000102958 00000 n +0000212095 00000 n 0000007994 00000 n 0000008069 00000 n -0000101924 00000 n -0000210897 00000 n +0000103020 00000 n +0000212002 00000 n 0000008121 00000 n 0000008172 00000 n -0000104733 00000 n -0000210818 00000 n +0000105829 00000 n +0000211923 00000 n 0000008225 00000 n 0000008290 00000 n -0000104795 00000 n -0000210739 00000 n +0000105891 00000 n +0000211844 00000 n +======= +0000219696 00000 n +0000000060 00000 n +0000000092 00000 n +0000027756 00000 n +0000219639 00000 n +0000000142 00000 n +0000000178 00000 n +0000030548 00000 n +0000219516 00000 n +0000000223 00000 n +0000000259 00000 n +0000033848 00000 n +0000219442 00000 n +0000000310 00000 n +0000000368 00000 n +0000036158 00000 n +0000219355 00000 n +0000000419 00000 n +0000000477 00000 n +0000036219 00000 n +0000219281 00000 n +0000000528 00000 n +0000000589 00000 n +0000036280 00000 n +0000219156 00000 n +0000000635 00000 n +0000000678 00000 n +0000036341 00000 n +0000219082 00000 n +0000000729 00000 n +0000000760 00000 n +0000036402 00000 n +0000219008 00000 n +0000000811 00000 n +0000000843 00000 n +0000036463 00000 n +0000218883 00000 n +0000000889 00000 n +0000000942 00000 n +0000036524 00000 n +0000218809 00000 n +0000000993 00000 n +0000001045 00000 n +0000039996 00000 n +0000218735 00000 n +0000001096 00000 n +0000001146 00000 n +0000040057 00000 n +0000218610 00000 n +0000001192 00000 n +0000001243 00000 n +0000040117 00000 n +0000218549 00000 n +0000001294 00000 n +0000001346 00000 n +0000040178 00000 n +0000218424 00000 n +0000001392 00000 n +0000001443 00000 n +0000042752 00000 n +0000218363 00000 n +0000001494 00000 n +0000001541 00000 n +0000042813 00000 n +0000218236 00000 n +0000001587 00000 n +0000001633 00000 n +0000042874 00000 n +0000218162 00000 n +0000001684 00000 n +0000001732 00000 n +0000045695 00000 n +0000218036 00000 n +0000001783 00000 n +0000001829 00000 n +0000045756 00000 n +0000217962 00000 n +0000001885 00000 n +0000001944 00000 n +0000045817 00000 n +0000217836 00000 n +0000002000 00000 n +0000002071 00000 n +0000045878 00000 n +0000217762 00000 n +0000002118 00000 n +0000002171 00000 n +0000045939 00000 n +0000217675 00000 n +0000002218 00000 n +0000002264 00000 n +0000048546 00000 n +0000217588 00000 n +0000002311 00000 n +0000002355 00000 n +0000048607 00000 n +0000217499 00000 n +0000002402 00000 n +0000002452 00000 n +0000048668 00000 n +0000217422 00000 n +0000002500 00000 n +0000002547 00000 n +0000048730 00000 n +0000217345 00000 n +0000002604 00000 n +0000002645 00000 n +0000050330 00000 n +0000217268 00000 n +0000002697 00000 n +0000002745 00000 n +0000053087 00000 n +0000217137 00000 n +0000002792 00000 n +0000002846 00000 n +0000053149 00000 n +0000217058 00000 n +0000002898 00000 n +0000002948 00000 n +0000053211 00000 n +0000216965 00000 n +0000003000 00000 n +0000003048 00000 n +0000053273 00000 n +0000216886 00000 n +0000003100 00000 n +0000003147 00000 n +0000055836 00000 n +0000216754 00000 n +0000003194 00000 n +0000003241 00000 n +0000055898 00000 n +0000216675 00000 n +0000003293 00000 n +0000003342 00000 n +0000055960 00000 n +0000216596 00000 n +0000003394 00000 n +0000003441 00000 n +0000056021 00000 n +0000216464 00000 n +0000003489 00000 n +0000003546 00000 n +0000056083 00000 n +0000216385 00000 n +0000003599 00000 n +0000003651 00000 n +0000058071 00000 n +0000216306 00000 n +0000003704 00000 n +0000003754 00000 n +0000058133 00000 n +0000216174 00000 n +0000003802 00000 n +0000003858 00000 n +0000058195 00000 n +0000216095 00000 n +0000003911 00000 n +0000003965 00000 n +0000058257 00000 n +0000216016 00000 n +0000004018 00000 n +0000004070 00000 n +0000058319 00000 n +0000215884 00000 n +0000004118 00000 n +0000004167 00000 n +0000058381 00000 n +0000215805 00000 n +0000004220 00000 n +0000004273 00000 n +0000060860 00000 n +0000215712 00000 n +0000004326 00000 n +0000004377 00000 n +0000060922 00000 n +0000215580 00000 n +0000004430 00000 n +0000004489 00000 n +0000060983 00000 n +0000215501 00000 n +0000004547 00000 n +0000004600 00000 n +0000063701 00000 n +0000215422 00000 n +0000004658 00000 n +0000004709 00000 n +0000063763 00000 n +0000215290 00000 n +0000004762 00000 n +0000004821 00000 n +0000063825 00000 n +0000215211 00000 n +0000004879 00000 n +0000004932 00000 n +0000063887 00000 n +0000215132 00000 n +0000004990 00000 n +0000005041 00000 n +0000066170 00000 n +0000215039 00000 n +0000005094 00000 n +0000005146 00000 n +0000066232 00000 n +0000214921 00000 n +0000005199 00000 n +0000005264 00000 n +0000066293 00000 n +0000214856 00000 n +0000005312 00000 n +0000005359 00000 n +0000066355 00000 n +0000214724 00000 n +0000005407 00000 n +0000005471 00000 n +0000066417 00000 n +0000214645 00000 n +0000005524 00000 n +0000005577 00000 n +0000068682 00000 n +0000214552 00000 n +0000005630 00000 n +0000005681 00000 n +0000068744 00000 n +0000214473 00000 n +0000005734 00000 n +0000005785 00000 n +0000071158 00000 n +0000214341 00000 n +0000005833 00000 n +0000005893 00000 n +0000071220 00000 n +0000214262 00000 n +0000005946 00000 n +0000006002 00000 n +0000071282 00000 n +0000214183 00000 n +0000006055 00000 n +0000006109 00000 n +0000071344 00000 n +0000214051 00000 n +0000006157 00000 n +0000006214 00000 n +0000071405 00000 n +0000213972 00000 n +0000006267 00000 n +0000006322 00000 n +0000073721 00000 n +0000213879 00000 n +0000006375 00000 n +0000006428 00000 n +0000073783 00000 n +0000213800 00000 n +0000006481 00000 n +0000006536 00000 n +0000076300 00000 n +0000213668 00000 n +0000006584 00000 n +0000006670 00000 n +0000076362 00000 n +0000213589 00000 n +0000006723 00000 n +0000006789 00000 n +0000076424 00000 n +0000213496 00000 n +0000006842 00000 n +0000006906 00000 n +0000081848 00000 n +0000213417 00000 n +0000006959 00000 n +0000007016 00000 n +0000085313 00000 n +0000213284 00000 n +0000007064 00000 n +0000007112 00000 n +0000085375 00000 n +0000213205 00000 n +0000007164 00000 n +0000007204 00000 n +0000085437 00000 n +0000213073 00000 n +0000007256 00000 n +0000007304 00000 n +0000087789 00000 n +0000213008 00000 n +0000007361 00000 n +0000007410 00000 n +0000094204 00000 n +0000212915 00000 n +0000007462 00000 n +0000007520 00000 n +0000096101 00000 n +0000212822 00000 n +0000007572 00000 n +0000007629 00000 n +0000098430 00000 n +0000212729 00000 n +0000007681 00000 n +0000007734 00000 n +0000100762 00000 n +0000212636 00000 n +0000007786 00000 n +0000007830 00000 n +0000103251 00000 n +0000212543 00000 n +0000007882 00000 n +0000007942 00000 n +0000103313 00000 n +0000212450 00000 n +0000007994 00000 n +0000008069 00000 n +0000103375 00000 n +0000212357 00000 n +0000008121 00000 n +0000008172 00000 n +0000106184 00000 n +0000212278 00000 n +0000008225 00000 n +0000008290 00000 n +0000106246 00000 n +0000212199 00000 n +>>>>>>> 1.0 0000008338 00000 n 0000008370 00000 n 0000009915 00000 n @@ -4281,313 +4751,535 @@ xref 0000012377 00000 n 0000012534 00000 n 0000012686 00000 n -0000015060 00000 n -0000015210 00000 n -0000015367 00000 n +0000015059 00000 n +0000015209 00000 n +0000015366 00000 n 0000013028 00000 n 0000008420 00000 n 0000012843 00000 n 0000012904 00000 n -0000209516 00000 n -0000209343 00000 n -0000209689 00000 n +<<<<<<< HEAD +0000210613 00000 n +0000210440 00000 n +0000210786 00000 n 0000012966 00000 n -0000209172 00000 n -0000209867 00000 n -0000015523 00000 n -0000015685 00000 n -0000015847 00000 n -0000015999 00000 n -0000016152 00000 n -0000016304 00000 n -0000016457 00000 n -0000016609 00000 n -0000016771 00000 n -0000016928 00000 n -0000017080 00000 n -0000017237 00000 n -0000017394 00000 n -0000017551 00000 n -0000017703 00000 n -0000017860 00000 n -0000018017 00000 n -0000018169 00000 n -0000018327 00000 n -0000018484 00000 n -0000018637 00000 n -0000018794 00000 n -0000018952 00000 n -0000019105 00000 n -0000019263 00000 n -0000019421 00000 n -0000019579 00000 n -0000019742 00000 n -0000019905 00000 n -0000020063 00000 n -0000020226 00000 n -0000020389 00000 n -0000020547 00000 n -0000020704 00000 n -0000020857 00000 n -0000021010 00000 n -0000021168 00000 n -0000021326 00000 n -0000023886 00000 n -0000021545 00000 n -0000014608 00000 n +0000210269 00000 n +0000210964 00000 n +======= +0000210968 00000 n +0000210795 00000 n +0000211141 00000 n +0000012966 00000 n +0000210624 00000 n +0000211319 00000 n +>>>>>>> 1.0 +0000015522 00000 n +0000015684 00000 n +0000015846 00000 n +0000015998 00000 n +0000016151 00000 n +0000016303 00000 n +0000016456 00000 n +0000016608 00000 n +0000016770 00000 n +0000016927 00000 n +0000017079 00000 n +0000017236 00000 n +0000017393 00000 n +0000017550 00000 n +0000017702 00000 n +0000017859 00000 n +0000018016 00000 n +0000018168 00000 n +0000018326 00000 n +0000018483 00000 n +0000018636 00000 n +0000018793 00000 n +0000018951 00000 n +0000019104 00000 n +0000019262 00000 n +0000019420 00000 n +0000019578 00000 n +0000019741 00000 n +0000019904 00000 n +0000020062 00000 n +0000020225 00000 n +0000020388 00000 n +0000020546 00000 n +0000020703 00000 n +0000020856 00000 n +0000021009 00000 n +0000021167 00000 n +0000021325 00000 n +0000023883 00000 n +0000021544 00000 n +0000014607 00000 n 0000013139 00000 n -0000021484 00000 n -0000024037 00000 n -0000024195 00000 n -0000024352 00000 n -0000024505 00000 n -0000024663 00000 n -0000024821 00000 n -0000024979 00000 n -0000025132 00000 n -0000025290 00000 n -0000025448 00000 n -0000025606 00000 n -0000025759 00000 n -0000025916 00000 n -0000026073 00000 n -0000026235 00000 n -0000026392 00000 n -0000026549 00000 n -0000026704 00000 n -0000026861 00000 n -0000027017 00000 n -0000027174 00000 n -0000027330 00000 n -0000027488 00000 n -0000027821 00000 n -0000023570 00000 n -0000021643 00000 n -0000027640 00000 n -0000030295 00000 n -0000030614 00000 n -0000030163 00000 n -0000027919 00000 n -0000030492 00000 n -0000208888 00000 n -0000033639 00000 n -0000033914 00000 n -0000033507 00000 n -0000030725 00000 n -0000033792 00000 n -0000036590 00000 n -0000035990 00000 n -0000034025 00000 n -0000036102 00000 n -0000038877 00000 n -0000039029 00000 n -0000039181 00000 n -0000039333 00000 n -0000039485 00000 n -0000039637 00000 n -0000039788 00000 n -0000040244 00000 n -0000038697 00000 n -0000036688 00000 n -0000039940 00000 n -0000209984 00000 n -0000042940 00000 n -0000042584 00000 n -0000040355 00000 n -0000042696 00000 n -0000045456 00000 n -0000046034 00000 n -0000045324 00000 n -0000043051 00000 n -0000045607 00000 n -0000048733 00000 n -0000048376 00000 n -0000046145 00000 n -0000048488 00000 n -0000050428 00000 n -0000050193 00000 n -0000048844 00000 n -0000050305 00000 n -0000052721 00000 n -0000053187 00000 n -0000052589 00000 n -0000050539 00000 n -0000052878 00000 n -0000056072 00000 n -0000055589 00000 n -0000053298 00000 n -0000055701 00000 n -0000210101 00000 n -0000058403 00000 n -0000057858 00000 n -0000056183 00000 n -0000057970 00000 n -0000060524 00000 n -0000060994 00000 n -0000060392 00000 n -0000058514 00000 n -0000060686 00000 n -0000063608 00000 n -0000063249 00000 n -0000061105 00000 n -0000063361 00000 n +0000021483 00000 n +0000024034 00000 n +0000024192 00000 n +0000024349 00000 n +0000024502 00000 n +0000024660 00000 n +0000024818 00000 n +0000024976 00000 n +0000025129 00000 n +0000025287 00000 n +0000025445 00000 n +0000025603 00000 n +0000025755 00000 n +0000025911 00000 n +0000026068 00000 n +0000026230 00000 n +0000026387 00000 n +0000026544 00000 n +0000026699 00000 n +0000026856 00000 n +0000027012 00000 n +0000027169 00000 n +0000027325 00000 n +0000027483 00000 n +0000027816 00000 n +0000023567 00000 n +0000021642 00000 n +0000027635 00000 n +0000030290 00000 n +0000030609 00000 n +0000030158 00000 n +0000027914 00000 n +0000030487 00000 n +<<<<<<< HEAD +0000209985 00000 n +======= +0000210340 00000 n +>>>>>>> 1.0 +0000033634 00000 n +0000033909 00000 n +0000033502 00000 n +0000030720 00000 n +0000033787 00000 n +0000036585 00000 n +0000035985 00000 n +0000034020 00000 n +0000036097 00000 n +0000038872 00000 n +0000039024 00000 n +0000039176 00000 n +0000039328 00000 n +0000039480 00000 n +0000039632 00000 n +0000039783 00000 n +0000040239 00000 n +0000038692 00000 n +0000036683 00000 n +0000039935 00000 n +<<<<<<< HEAD +0000211081 00000 n +======= +0000211436 00000 n +>>>>>>> 1.0 +0000042935 00000 n +0000042579 00000 n +0000040350 00000 n +0000042691 00000 n +<<<<<<< HEAD +0000045438 00000 n +0000045955 00000 n +0000045306 00000 n +0000043046 00000 n +0000045589 00000 n +0000048747 00000 n +0000048328 00000 n +0000046066 00000 n +0000048440 00000 n +0000050347 00000 n +0000050112 00000 n +0000048858 00000 n +0000050224 00000 n +0000052824 00000 n +0000053290 00000 n +0000052692 00000 n +0000050458 00000 n +0000052981 00000 n +0000056100 00000 n +0000055618 00000 n +0000053401 00000 n +0000055730 00000 n +0000211198 00000 n +0000058398 00000 n +0000057853 00000 n +0000056211 00000 n +0000057965 00000 n +0000060592 00000 n +0000061000 00000 n +0000060460 00000 n +0000058509 00000 n +0000060754 00000 n +0000063786 00000 n +0000063365 00000 n +0000061111 00000 n +0000063477 00000 n 0000065755 00000 n 0000066282 00000 n 0000065623 00000 n -0000063719 00000 n +0000063897 00000 n 0000065911 00000 n -0000208602 00000 n -0000067970 00000 n -0000068432 00000 n -0000067838 00000 n -0000066406 00000 n -0000068123 00000 n -0000071135 00000 n -0000071596 00000 n -0000071003 00000 n -0000068543 00000 n -0000071287 00000 n -0000210218 00000 n -0000073284 00000 n -0000073049 00000 n -0000071707 00000 n -0000073161 00000 n -0000075598 00000 n -0000076002 00000 n -0000075466 00000 n -0000073382 00000 n -0000075755 00000 n -0000078738 00000 n -0000078890 00000 n -0000079042 00000 n -0000080686 00000 n -0000079261 00000 n -0000078590 00000 n -0000076126 00000 n -0000079200 00000 n -0000081025 00000 n -0000080554 00000 n -0000079372 00000 n -0000080840 00000 n -0000080963 00000 n -0000083650 00000 n -0000084048 00000 n -0000083518 00000 n -0000081123 00000 n -0000083801 00000 n -0000086400 00000 n -0000086165 00000 n -0000084159 00000 n -0000086277 00000 n -0000210335 00000 n -0000088399 00000 n -0000088226 00000 n -0000086498 00000 n -0000088338 00000 n -0000090006 00000 n -0000089833 00000 n -0000088484 00000 n -0000089945 00000 n -0000091147 00000 n -0000090974 00000 n -0000090091 00000 n -0000091086 00000 n -0000092815 00000 n -0000092580 00000 n -0000091232 00000 n -0000092692 00000 n -0000094712 00000 n -0000094477 00000 n -0000092913 00000 n -0000094589 00000 n -0000097041 00000 n -0000096806 00000 n -0000094810 00000 n -0000096918 00000 n -0000210452 00000 n -0000099373 00000 n -0000099138 00000 n -0000097139 00000 n -0000099250 00000 n -0000208746 00000 n -0000101986 00000 n -0000101627 00000 n -0000099496 00000 n -0000101739 00000 n -0000104519 00000 n -0000106180 00000 n -0000106333 00000 n -0000104857 00000 n -0000104387 00000 n -0000102097 00000 n -0000104672 00000 n -0000209030 00000 n -0000106491 00000 n -0000106642 00000 n -0000106855 00000 n -0000106024 00000 n -0000105006 00000 n -0000106794 00000 n -0000106953 00000 n -0000106978 00000 n -0000107236 00000 n -0000107601 00000 n -0000208083 00000 n -0000107719 00000 n -0000108148 00000 n -0000108459 00000 n -0000109033 00000 n -0000109596 00000 n -0000119195 00000 n -0000119452 00000 n -0000129217 00000 n -0000129487 00000 n -0000136993 00000 n -0000137243 00000 n -0000144238 00000 n -0000144463 00000 n -0000163964 00000 n -0000164555 00000 n -0000181572 00000 n -0000182045 00000 n -0000200729 00000 n -0000201255 00000 n -0000207812 00000 n -0000210561 00000 n -0000210663 00000 n -0000218343 00000 n -0000218526 00000 n -0000218696 00000 n -0000218865 00000 n -0000219035 00000 n -0000219204 00000 n -0000219370 00000 n -0000219546 00000 n -0000219735 00000 n -0000219929 00000 n -0000220109 00000 n -0000220322 00000 n -0000220556 00000 n -0000220790 00000 n -0000221024 00000 n -0000221244 00000 n -0000221465 00000 n -0000221691 00000 n -0000221919 00000 n -0000222169 00000 n -0000222405 00000 n -0000222515 00000 n -0000222631 00000 n -0000222755 00000 n -0000222851 00000 n -0000222958 00000 n -0000222996 00000 n -0000223124 00000 n +0000068112 00000 n +0000068450 00000 n +0000067980 00000 n +0000066393 00000 n +0000068265 00000 n +0000209699 00000 n +0000071112 00000 n +0000070630 00000 n +0000068574 00000 n +0000070742 00000 n +0000211315 00000 n +0000073152 00000 n +0000073490 00000 n +0000073020 00000 n +0000071223 00000 n +0000073305 00000 n +0000075727 00000 n +0000076131 00000 n +0000075595 00000 n +0000073601 00000 n +0000075884 00000 n +0000078840 00000 n +0000078991 00000 n +0000079143 00000 n +0000079361 00000 n +0000078692 00000 n +0000076255 00000 n +0000079300 00000 n +0000081279 00000 n +0000081617 00000 n +0000081147 00000 n +0000079472 00000 n +0000081432 00000 n +0000081555 00000 n +0000082134 00000 n +0000081961 00000 n +0000081728 00000 n +0000082073 00000 n +0000084746 00000 n +0000085144 00000 n +0000084614 00000 n +0000082219 00000 n +0000084897 00000 n +0000211432 00000 n +0000087496 00000 n +0000087261 00000 n +0000085255 00000 n +0000087373 00000 n +0000089495 00000 n +0000089322 00000 n +0000087594 00000 n +0000089434 00000 n +0000091102 00000 n +0000090929 00000 n +0000089580 00000 n +0000091041 00000 n +0000092243 00000 n +0000092070 00000 n +0000091187 00000 n +0000092182 00000 n +0000093911 00000 n +0000093676 00000 n +0000092328 00000 n +0000093788 00000 n +0000095808 00000 n +0000095573 00000 n +0000094009 00000 n +0000095685 00000 n +0000211549 00000 n +0000098137 00000 n +0000097902 00000 n +0000095906 00000 n +0000098014 00000 n +0000100469 00000 n +0000100234 00000 n +0000098235 00000 n +0000100346 00000 n +0000209843 00000 n +0000103082 00000 n +0000102723 00000 n +0000100592 00000 n +0000102835 00000 n +0000105615 00000 n +0000107277 00000 n +0000107430 00000 n +0000105953 00000 n +0000105483 00000 n +0000103193 00000 n +0000105768 00000 n +0000210127 00000 n +0000107588 00000 n +0000107739 00000 n +0000107952 00000 n +0000107121 00000 n +0000106102 00000 n +0000107891 00000 n +0000108050 00000 n +0000108075 00000 n +0000108333 00000 n +0000108698 00000 n +0000209180 00000 n +0000108816 00000 n +0000109245 00000 n +0000109556 00000 n +0000110130 00000 n +0000110693 00000 n +0000120292 00000 n +0000120549 00000 n +0000130314 00000 n +0000130584 00000 n +0000138090 00000 n +0000138340 00000 n +0000145335 00000 n +0000145560 00000 n +0000165061 00000 n +0000165652 00000 n +0000182669 00000 n +0000183142 00000 n +0000201826 00000 n +0000202352 00000 n +0000208909 00000 n +0000211666 00000 n +0000211768 00000 n +0000219448 00000 n +0000219631 00000 n +0000219801 00000 n +0000219970 00000 n +0000220140 00000 n +0000220309 00000 n +0000220476 00000 n +0000220649 00000 n +0000220836 00000 n +0000221030 00000 n +0000221213 00000 n +0000221419 00000 n +0000221653 00000 n +0000221887 00000 n +0000222121 00000 n +0000222344 00000 n +0000222564 00000 n +0000222790 00000 n +0000223017 00000 n +0000223261 00000 n +0000223528 00000 n +0000223638 00000 n +0000223754 00000 n +0000223878 00000 n +0000223974 00000 n +0000224081 00000 n +0000224119 00000 n +0000224247 00000 n +======= +0000045483 00000 n +0000046000 00000 n +0000045351 00000 n +0000043046 00000 n +0000045634 00000 n +0000048792 00000 n +0000048373 00000 n +0000046111 00000 n +0000048485 00000 n +0000050392 00000 n +0000050157 00000 n +0000048903 00000 n +0000050269 00000 n +0000052869 00000 n +0000053335 00000 n +0000052737 00000 n +0000050503 00000 n +0000053026 00000 n +0000056145 00000 n +0000055663 00000 n +0000053446 00000 n +0000055775 00000 n +0000211553 00000 n +0000058443 00000 n +0000057898 00000 n +0000056256 00000 n +0000058010 00000 n +0000060637 00000 n +0000061045 00000 n +0000060505 00000 n +0000058554 00000 n +0000060799 00000 n +0000063949 00000 n +0000063528 00000 n +0000061156 00000 n +0000063640 00000 n +0000065954 00000 n +0000066479 00000 n +0000065822 00000 n +0000064060 00000 n +0000066109 00000 n +0000068468 00000 n +0000068805 00000 n +0000068336 00000 n +0000066590 00000 n +0000068621 00000 n +0000210054 00000 n +0000071467 00000 n +0000070985 00000 n +0000068929 00000 n +0000071097 00000 n +0000211670 00000 n +0000073507 00000 n +0000073845 00000 n +0000073375 00000 n +0000071578 00000 n +0000073660 00000 n +0000076082 00000 n +0000076486 00000 n +0000075950 00000 n +0000073956 00000 n +0000076239 00000 n +0000079195 00000 n +0000079346 00000 n +0000079498 00000 n +0000079716 00000 n +0000079047 00000 n +0000076610 00000 n +0000079655 00000 n +0000081634 00000 n +0000081972 00000 n +0000081502 00000 n +0000079827 00000 n +0000081787 00000 n +0000081910 00000 n +0000082489 00000 n +0000082316 00000 n +0000082083 00000 n +0000082428 00000 n +0000085101 00000 n +0000085499 00000 n +0000084969 00000 n +0000082574 00000 n +0000085252 00000 n +0000211787 00000 n +0000087851 00000 n +0000087616 00000 n +0000085610 00000 n +0000087728 00000 n +0000089850 00000 n +0000089677 00000 n +0000087949 00000 n +0000089789 00000 n +0000091457 00000 n +0000091284 00000 n +0000089935 00000 n +0000091396 00000 n +0000092598 00000 n +0000092425 00000 n +0000091542 00000 n +0000092537 00000 n +0000094266 00000 n +0000094031 00000 n +0000092683 00000 n +0000094143 00000 n +0000096163 00000 n +0000095928 00000 n +0000094364 00000 n +0000096040 00000 n +0000211904 00000 n +0000098492 00000 n +0000098257 00000 n +0000096261 00000 n +0000098369 00000 n +0000100824 00000 n +0000100589 00000 n +0000098590 00000 n +0000100701 00000 n +0000210198 00000 n +0000103437 00000 n +0000103078 00000 n +0000100947 00000 n +0000103190 00000 n +0000105970 00000 n +0000107632 00000 n +0000107785 00000 n +0000106308 00000 n +0000105838 00000 n +0000103548 00000 n +0000106123 00000 n +0000210482 00000 n +0000107943 00000 n +0000108094 00000 n +0000108307 00000 n +0000107476 00000 n +0000106457 00000 n +0000108246 00000 n +0000108405 00000 n +0000108430 00000 n +0000108688 00000 n +0000109053 00000 n +0000209535 00000 n +0000109171 00000 n +0000109600 00000 n +0000109911 00000 n +0000110485 00000 n +0000111048 00000 n +0000120647 00000 n +0000120904 00000 n +0000130669 00000 n +0000130939 00000 n +0000138445 00000 n +0000138695 00000 n +0000145690 00000 n +0000145915 00000 n +0000165416 00000 n +0000166007 00000 n +0000183024 00000 n +0000183497 00000 n +0000202181 00000 n +0000202707 00000 n +0000209264 00000 n +0000212021 00000 n +0000212123 00000 n +0000219803 00000 n +0000219986 00000 n +0000220156 00000 n +0000220325 00000 n +0000220495 00000 n +0000220664 00000 n +0000220831 00000 n +0000221004 00000 n +0000221191 00000 n +0000221385 00000 n +0000221568 00000 n +0000221774 00000 n +0000222008 00000 n +0000222242 00000 n +0000222476 00000 n +0000222699 00000 n +0000222919 00000 n +0000223145 00000 n +0000223372 00000 n +0000223616 00000 n +0000223883 00000 n +0000223993 00000 n +0000224109 00000 n +0000224233 00000 n +0000224329 00000 n +0000224436 00000 n +0000224474 00000 n +0000224602 00000 n +>>>>>>> 1.0 trailer -<< /Size 646 -/Root 644 0 R -/Info 645 0 R -/ID [<5C037A030D5E034C732ED870C431FD96> <5C037A030D5E034C732ED870C431FD96>] >> +<< /Size 650 +/Root 648 0 R +/Info 649 0 R +<<<<<<< HEAD +/ID [ ] >> startxref -223418 +224553 +======= +/ID [<761474DAF29E3B552170784BBD125F98> <761474DAF29E3B552170784BBD125F98>] >> +startxref +224908 +>>>>>>> 1.0 %%EOF diff --git a/src/spec/readme.tex b/src/spec/readme.tex index ded33a17..409efef6 100644 --- a/src/spec/readme.tex +++ b/src/spec/readme.tex @@ -411,6 +411,9 @@ member. \paragraph{Attributes of \tag{member} tags} \begin{itemize} +\item \attr{validextensionstructs} - only valid on the \code{pNext} member of a + struct. This is a comma-separated list of structures that may be + accepted by \code{pNext} instead of \code{NULL} \item \attr{len} - if the member is an array, len may be one or more of the following things, separated by commas (one for each array indirection): another member of that struct; ``null-terminated'' for a @@ -419,9 +422,13 @@ member. latexmath:[\$} and {\tt \$]}. \item \attr{externsync} - denotes that the member should be externally synchronized when accessed by Vulkan -\item \attr{optional} - whether this value can be omitted by providing - \code{NULL} (for pointers), \code{VK_NULL_HANDLE} (for handles) or 0 - (for bitmasks/values) +\item \attr{optional} - a value of 'true' or 'false' determines whether this + member can be omitted by providing \code{NULL} (for pointers), + \code{VK_NULL_HANDLE} (for handles) or 0 (for bitmasks/values). If the + member is a pointer to one of those types, multiple values may be + provided, separated by commas - one for each pointer indirection. + Note that this only affects automatic validity statements - explicit + statements remain unchanged. \item \attr{noautovalidity} - prevents automatic validity language being generated for the tagged item. Only suppresses item-specific validity - parenting issues etc. are still captured. @@ -795,9 +802,13 @@ members. string; ``1'' to indicate it's just a pointer (used for nested pointers); or an equation (a simple expression prefixed with ``math:'') -\item \attr{optional} - whether this value can be omitted by providing - \code{NULL} (for pointers), \code{VK_NULL_HANDLE} (for handles) or 0 - (for bitmasks/values) +\item \attr{optional} - a value of 'true' or 'false' determines whether this + member can be omitted by providing \code{NULL} (for pointers), + \code{VK_NULL_HANDLE} (for handles) or 0 (for bitmasks/values). If the + member is a pointer to one of those types, multiple values may be + provided, separated by commas - one for each pointer indirection. + Note that this only affects automatic validity statements - explicit + statements remain unchanged. \item \attr{noautovalidity} - prevents automatic validity language being generated for the tagged item. Only suppresses item-specific validity - parenting issues etc. are still captured. @@ -918,7 +929,7 @@ When processed into a C header for Vulkan, this results in: #define VK_MAX_EXTENSION_NAME 256 #define VK_LOD_CLAMP_NONE MAX_FLOAT typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance); -#ifdef VK_PROTOTYPES +#ifndef VK_NO_PROTOTYPES VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance( const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance); @@ -1033,7 +1044,7 @@ typedef VkResult (VKAPI_PTR *PFN_vkCreateSharedSwapchainsKHR)( const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains); -#ifdef VK_PROTOTYPES +#ifndef VK_NO_PROTOTYPES VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR( VkDevice device, uint32_t swapchainCount, @@ -1503,7 +1514,7 @@ VK_DEFINE_DISP_SUBCLASS_HANDLE(VkInstance, VkObject) #define VK_MAX_PHYSICAL_DEVICE_NAME 256 #define VK_MAX_EXTENSION_NAME 256 typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance); -#ifdef VK_PROTOTYPES +#ifndef VK_NO_PROTOTYPES VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance( const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance); diff --git a/src/spec/registry.rnc b/src/spec/registry.rnc index 1ac7d095..aeea0e24 100644 --- a/src/spec/registry.rnc +++ b/src/spec/registry.rnc @@ -298,7 +298,7 @@ Command = element command { # Each defines the interface of an API version (e.g. OpenGL 1.2) # api - API tag (e.g. 'gl', 'gles2', etc. - used internally, not -# neccessarily an actual API name +# necessarily an actual API name # name - version name (C preprocessor name, e.g. GL_VERSION_4_2) # number - version number, e.g. 4.2 # protect - additional #ifdef symbol to place around the feature diff --git a/src/spec/test.c b/src/spec/test.c index a72a20f8..3f7eaa4b 100644 --- a/src/spec/test.c +++ b/src/spec/test.c @@ -13,7 +13,7 @@ int main(int ac, const char **av) { VkStructureType sType; VkResult result; - // Supress warnings about unused variables + // Suppress warnings about unused variables (void)sType; (void)result; sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR; diff --git a/src/spec/vk.xml b/src/spec/vk.xml index 9d6d4d7c..b43bcfca 100644 --- a/src/spec/vk.xml +++ b/src/spec/vk.xml @@ -101,7 +101,7 @@ maintained in the master branch of the Khronos Vulkan Github project. // Vulkan 1.0 version number #define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0) // Version of this file -#define VK_HEADER_VERSION 11 +#define VK_HEADER_VERSION 12 #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; @@ -336,6 +336,7 @@ maintained in the master branch of the Khronos Vulkan Github project. + typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)( @@ -692,11 +693,11 @@ maintained in the master branch of the Khronos Vulkan Github project. pname:offset must: be less than the size of pname:buffer pname:offset must: be a multiple of sname:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment - If pname:range is not equal to ename:VK_WHOLE_SIZE: - pname:range must: be greater than `0` - pname:range must: be a multiple of the element size of pname:format - pname:range divided by the size of an element of pname:format, must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxTexelBufferElements - the sum of pname:offset and pname:range must: be less than or equal to the size of pname:buffer + If pname:range is not equal to ename:VK_WHOLE_SIZE: + ** pname:range must: be greater than `0` + ** pname:range must: be a multiple of the element size of pname:format + ** pname:range divided by the size of an element of pname:format, must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxTexelBufferElements + ** the sum of pname:offset and pname:range must: be less than or equal to the size of pname:buffer pname:buffer must: have been created with a pname:usage value containing at least one of ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT or ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT If pname:buffer was created with pname:usage containing ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT, pname:format must: be supported for uniform texel buffers, as specified by the ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT flag in sname:VkFormatProperties::pname:bufferFeatures returned by fname:vkGetPhysicalDeviceFormatProperties If pname:buffer was created with pname:usage containing ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, pname:format must: be supported for storage texel buffers, as specified by the ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT flag in sname:VkFormatProperties::pname:bufferFeatures returned by fname:vkGetPhysicalDeviceFormatProperties @@ -977,24 +978,24 @@ maintained in the master branch of the Khronos Vulkan Github project. pname:dstOffset.x and (pname:extent.width + pname:dstOffset.x) must: both be greater than or equal to `0` and less than or equal to the destination image subresource width pname:dstOffset.y and (pname:extent.height + pname:dstOffset.y) must: both be greater than or equal to `0` and less than or equal to the destination image subresource height pname:dstOffset.z and (pname:extent.depth + pname:dstOffset.z) must: both be greater than or equal to `0` and less than or equal to the destination image subresource depth - If the calling command's pname:srcImage is a compressed format image: - all members of pname:srcOffset must: be a multiple of the corresponding dimensions of the compressed texel block - pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:srcOffset.x) must: equal the source image subresource width - pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:srcOffset.y) must: equal the source image subresource height - pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:srcOffset.z) must: equal the source image subresource depth - If the calling command's pname:dstImage is a compressed format image: - all members of pname:dstOffset must: be a multiple of the corresponding dimensions of the compressed texel block - pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:dstOffset.x) must: equal the destination image subresource width - pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:dstOffset.y) must: equal the destination image subresource height - pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:dstOffset.z) must: equal the destination image subresource depth + If the calling command's pname:srcImage is a compressed format image: + ** all members of pname:srcOffset must: be a multiple of the corresponding dimensions of the compressed texel block + ** pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:srcOffset.x) must: equal the source image subresource width + ** pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:srcOffset.y) must: equal the source image subresource height + ** pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:srcOffset.z) must: equal the source image subresource depth + If the calling command's pname:dstImage is a compressed format image: + ** all members of pname:dstOffset must: be a multiple of the corresponding dimensions of the compressed texel block + ** pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:dstOffset.x) must: equal the destination image subresource width + ** pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:dstOffset.y) must: equal the destination image subresource height + ** pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:dstOffset.z) must: equal the destination image subresource depth pname:srcOffset, pname:dstOffset, and pname:extent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <<devsandqueues-physical-device-enumeration,Physical Device Enumeration>> VkImageSubresourceLayers srcSubresource - VkOffset3D srcOffsets[2] + VkOffset3D srcOffsets[2] VkImageSubresourceLayers dstSubresource - VkOffset3D dstOffsets[2] + VkOffset3D dstOffsets[2] The pname:aspectMask member of pname:srcSubresource and pname:dstSubresource must: match The pname:layerCount member of pname:srcSubresource and pname:dstSubresource must: match @@ -1024,14 +1025,14 @@ maintained in the master branch of the Khronos Vulkan Github project. pname:imageOffset.x and (pname:imageExtent.width + pname:imageOffset.x) must: both be greater than or equal to `0` and less than or equal to the image subresource width pname:imageOffset.y and (imageExtent.height + pname:imageOffset.y) must: both be greater than or equal to `0` and less than or equal to the image subresource height pname:imageOffset.z and (imageExtent.depth + pname:imageOffset.z) must: both be greater than or equal to `0` and less than or equal to the image subresource depth - If the calling command's sname:VkImage parameter is a compressed format image: - pname:bufferRowLength must: be a multiple of the compressed texel block width - pname:bufferImageHeight must: be a multiple of the compressed texel block height - all members of pname:imageOffset must: be a multiple of the corresponding dimensions of the compressed texel block - pname:bufferOffset must: be a multiple of the compressed texel block size in bytes - pname:imageExtent.width must: be a multiple of the compressed texel block width or (pname:imageExtent.width + pname:imageOffset.x) must: equal the image subresource width - pname:imageExtent.height must: be a multiple of the compressed texel block height or (pname:imageExtent.height + pname:imageOffset.y) must: equal the image subresource height - pname:imageExtent.depth must: be a multiple of the compressed texel block depth or (pname:imageExtent.depth + pname:imageOffset.z) must: equal the image subresource depth + If the calling command's sname:VkImage parameter is a compressed format image: + ** pname:bufferRowLength must: be a multiple of the compressed texel block width + ** pname:bufferImageHeight must: be a multiple of the compressed texel block height + ** all members of pname:imageOffset must: be a multiple of the corresponding dimensions of the compressed texel block + ** pname:bufferOffset must: be a multiple of the compressed texel block size in bytes + ** pname:imageExtent.width must: be a multiple of the compressed texel block width or (pname:imageExtent.width + pname:imageOffset.x) must: equal the image subresource width + ** pname:imageExtent.height must: be a multiple of the compressed texel block height or (pname:imageExtent.height + pname:imageOffset.y) must: equal the image subresource height + ** pname:imageExtent.depth must: be a multiple of the compressed texel block depth or (pname:imageExtent.depth + pname:imageOffset.z) must: equal the image subresource depth pname:bufferOffset, pname:bufferRowLength, pname:bufferImageHeight and all members of pname:imageOffset and pname:imageExtent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <<devsandqueues-physical-device-enumeration,Physical Device Enumeration>> The pname:aspectMask member of pname:imageSubresource must: specify aspects present in the calling command's sname:VkImage parameter The pname:aspectMask member of pname:imageSubresource must: only have a single bit set @@ -1251,7 +1252,7 @@ maintained in the master branch of the Khronos Vulkan Github project. VkStructureType sType - const void* pNext + const void* pNext VkPipelineRasterizationStateCreateFlags flags VkBool32 depthClampEnable VkBool32 rasterizerDiscardEnable @@ -2129,6 +2130,11 @@ maintained in the master branch of the Khronos Vulkan Github project. PFN_vkDebugReportCallbackEXT pfnCallback void* pUserData + + VkStructureType sType + const void* pNext + VkRasterizationOrderAMD rasterizationOrder + @@ -2630,12 +2636,12 @@ maintained in the master branch of the Khronos Vulkan Github project. - + - - + + @@ -2933,6 +2939,10 @@ maintained in the master branch of the Khronos Vulkan Github project. + + + + @@ -3077,8 +3087,8 @@ maintained in the master branch of the Khronos Vulkan Github project. const VkSubmitInfo* pSubmits VkFence fence - pname:fence must: be unsignalled - pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue + If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be unsignalled + If pname:fence is not sname:VK_NULL_HANDLE, pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue @@ -3327,6 +3337,9 @@ maintained in the master branch of the Khronos Vulkan Github project. VkResult vkResetEvent VkDevice device VkEvent event + + pname:event mustnot: be waited on by a fname:vkCmdWaitEvents command that is currently executing + VkResult vkCreateQueryPool @@ -3918,7 +3931,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set - Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties + Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties @@ -3944,7 +3957,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set - Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties + Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties @@ -3974,7 +3987,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set - Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties + Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties @@ -4004,7 +4017,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set - Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties + Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties @@ -4026,7 +4039,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set - Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties + Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties @@ -4047,7 +4060,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set - Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties + Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties @@ -4118,6 +4131,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If either of pname:srcImage or pname:dstImage was created with an unsigned integer elink:VkFormat, the other must: also have been created with an unsigned integer elink:VkFormat If either of pname:srcImage or pname:dstImage was created with a depth/stencil format, the other must: have exactly the same format If pname:srcImage was created with a depth/stencil format, pname:filter must: be ename:VK_FILTER_NEAREST + If pname:filter is ename:VK_FILTER_LINEAR, pname:srcImage must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties @@ -4203,7 +4217,7 @@ maintained in the master branch of the Khronos Vulkan Github project. pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL - The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image + The image range of any given element of pname:pRanges must: be an image subresource range that is contained within pname:image pname:image mustnot: have a compressed or depth/stencil format @@ -4219,7 +4233,7 @@ maintained in the master branch of the Khronos Vulkan Github project. pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL - The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image + The image range of any given element of pname:pRanges must: be an image subresource range that is contained within pname:image pname:image must: have a depth/stencil format @@ -4278,6 +4292,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:stageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:stageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT + When this command executes, pname:event mustnot: be waited on by a fname:vkCmdWaitEvents command that is currently executing @@ -5168,10 +5183,13 @@ maintained in the master branch of the Khronos Vulkan Github project. - + - - + + + + + diff --git a/src/vulkan/vulkan.h b/src/vulkan/vulkan.h index eb8343e2..206d5fe7 100644 --- a/src/vulkan/vulkan.h +++ b/src/vulkan/vulkan.h @@ -43,7 +43,7 @@ extern "C" { #define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff) #define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff) // Version of this file -#define VK_HEADER_VERSION 11 +#define VK_HEADER_VERSION 12 #define VK_NULL_HANDLE 0 @@ -210,6 +210,7 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000, VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000, VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000, + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000, VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO, VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO, VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1), @@ -3828,6 +3829,28 @@ VKAPI_ATTR void VKAPI_CALL vkDebugReportMessageEXT( #define VK_IMG_FILTER_CUBIC_EXTENSION_NAME "VK_IMG_filter_cubic" +#define VK_AMD_rasterization_order 1 +#define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1 +#define VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME "VK_AMD_rasterization_order" + + +typedef enum VkRasterizationOrderAMD { + VK_RASTERIZATION_ORDER_STRICT_AMD = 0, + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1, + VK_RASTERIZATION_ORDER_BEGIN_RANGE_AMD = VK_RASTERIZATION_ORDER_STRICT_AMD, + VK_RASTERIZATION_ORDER_END_RANGE_AMD = VK_RASTERIZATION_ORDER_RELAXED_AMD, + VK_RASTERIZATION_ORDER_RANGE_SIZE_AMD = (VK_RASTERIZATION_ORDER_RELAXED_AMD - VK_RASTERIZATION_ORDER_STRICT_AMD + 1), + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 0x7FFFFFFF +} VkRasterizationOrderAMD; + +typedef struct VkPipelineRasterizationStateRasterizationOrderAMD { + VkStructureType sType; + const void* pNext; + VkRasterizationOrderAMD rasterizationOrder; +} VkPipelineRasterizationStateRasterizationOrderAMD; + + + #ifdef __cplusplus } #endif From 041c5bbffdb67b97e69f98b59b8e6e01661a89b1 Mon Sep 17 00:00:00 2001 From: Jon Leech Date: Fri, 6 May 2016 17:05:15 -0700 Subject: [PATCH 2/4] Add VK_EXT_debug_marker extension to vk.xml. --- src/spec/vk.xml | 75 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/spec/vk.xml b/src/spec/vk.xml index b43bcfca..2f6424b1 100644 --- a/src/spec/vk.xml +++ b/src/spec/vk.xml @@ -2135,6 +2135,28 @@ maintained in the master branch of the Khronos Vulkan Github project. const void* pNext VkRasterizationOrderAMD rasterizationOrder + + VkStructureType sType + const void* pNext + VkDebugReportObjectTypeEXT objectType + uint64_t object + const char* pObjectName + + + VkStructureType sType + const void* pNext + VkDebugReportObjectTypeEXT objectType + uint64_t object + uint64_t tagName + size_t tagSize + const void* pTag + + + VkStructureType sType + const void* pNext + const char* pMarkerName + float color[4] + @@ -4744,6 +4766,42 @@ maintained in the master branch of the Khronos Vulkan Github project. pname:pMsg must: be a `NULL` terminated string. + + VkResult vkDebugMarkerSetObjectNameEXT + VkDevice device + VkDebugMarkerObjectNameInfoEXT* pNameInfo + + pname:pNameInfo.object must: be a Vulkan object + + + + VkResult vkDebugMarkerSetObjectTagEXT + VkDevice device + VkDebugMarkerObjectTagInfoEXT* pTagInfo + + pname:pTagInfo.object must: be a Vulkan object + pname:pTagInfo.tagName mustnot: be `0` + + + + void vkCmdDebugMarkerBeginEXT + VkCommandBuffer commandBuffer + VkDebugMarkerMarkerInfoEXT* pMarkerInfo + + + void vkCmdDebugMarkerEndEXT + VkCommandBuffer commandBuffer + + There must: be an outstanding flink:vkCmdDebugMarkerBeginEXT command prior to the fname:vkCmdDebugMarkerEndEXT on the queue that pname:commandBuffer is submitted to. + If the matching flink:vkCmdDebugMarkerBeginEXT command was in a secondary command buffer, the fname:vkCmdDebugMarkerEndEXT must be in the same pname:commandBuffer. + + + + + void vkCmdDebugMarkerInsertEXT + VkCommandBuffer commandBuffer + VkDebugMarkerMarkerInfoEXT* pMarkerInfo + @@ -5210,5 +5268,22 @@ maintained in the master branch of the Khronos Vulkan Github project. + + + + + + + + + + + + + + + + + From 648049f625c956068495192447e3ef99772c8947 Mon Sep 17 00:00:00 2001 From: Jon Leech Date: Fri, 6 May 2016 17:06:56 -0700 Subject: [PATCH 3/4] Add generated header including VK_EXT_debug_marker. --- doc/specs/vulkan/vkapi.py | 5 +++- src/vulkan/vulkan.h | 60 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) diff --git a/doc/specs/vulkan/vkapi.py b/doc/specs/vulkan/vkapi.py index ee451ca5..ba9bf0a8 100644 --- a/doc/specs/vulkan/vkapi.py +++ b/doc/specs/vulkan/vkapi.py @@ -114,7 +114,10 @@ consts['VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType' consts['VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType' consts['VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT'] = 'VkStructureType' consts['VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD'] = 'VkStructureType' -enums['VkStructureType'] = ['VK_STRUCTURE_TYPE_APPLICATION_INFO', 'VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO', 'VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SUBMIT_INFO', 'VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE', 'VK_STRUCTURE_TYPE_BIND_SPARSE_INFO', 'VK_STRUCTURE_TYPE_FENCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO', 'VK_STRUCTURE_TYPE_EVENT_CREATE_INFO', 'VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO', 'VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO', 'VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO', 'VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO', 'VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO', 'VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET', 'VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET', 'VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO', 'VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO', 'VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO', 'VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_PRESENT_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR', 'VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT', 'VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD'] +consts['VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT'] = 'VkStructureType' +enums['VkStructureType'] = ['VK_STRUCTURE_TYPE_APPLICATION_INFO', 'VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO', 'VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SUBMIT_INFO', 'VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE', 'VK_STRUCTURE_TYPE_BIND_SPARSE_INFO', 'VK_STRUCTURE_TYPE_FENCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO', 'VK_STRUCTURE_TYPE_EVENT_CREATE_INFO', 'VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO', 'VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO', 'VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO', 'VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO', 'VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO', 'VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET', 'VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET', 'VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO', 'VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO', 'VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO', 'VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_PRESENT_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR', 'VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT', 'VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD', 'VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT', 'VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT', 'VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT'] # Unprocessed type: void # Unprocessed type: uint32_t # Unprocessed type: VkFlags category: basetype diff --git a/src/vulkan/vulkan.h b/src/vulkan/vulkan.h index 206d5fe7..741da4ce 100644 --- a/src/vulkan/vulkan.h +++ b/src/vulkan/vulkan.h @@ -211,6 +211,9 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000, VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000, VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000, + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000, + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001, + VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002, VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO, VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO, VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1), @@ -3851,6 +3854,63 @@ typedef struct VkPipelineRasterizationStateRasterizationOrderAMD { +#define VK_EXT_debug_marker 1 +#define VK_EXT_DEBUG_MARKER_SPEC_VERSION 3 +#define VK_EXT_DEBUG_MARKER_EXTENSION_NAME "VK_EXT_debug_marker" + +typedef struct VkDebugMarkerObjectNameInfoEXT { + VkStructureType sType; + const void* pNext; + VkDebugReportObjectTypeEXT objectType; + uint64_t object; + const char* pObjectName; +} VkDebugMarkerObjectNameInfoEXT; + +typedef struct VkDebugMarkerObjectTagInfoEXT { + VkStructureType sType; + const void* pNext; + VkDebugReportObjectTypeEXT objectType; + uint64_t object; + uint64_t tagName; + size_t tagSize; + const void* pTag; +} VkDebugMarkerObjectTagInfoEXT; + +typedef struct VkDebugMarkerMarkerInfoEXT { + VkStructureType sType; + const void* pNext; + const char* pMarkerName; + float color[4]; +} VkDebugMarkerMarkerInfoEXT; + + +typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectTagEXT)(VkDevice device, VkDebugMarkerObjectTagInfoEXT* pTagInfo); +typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectNameEXT)(VkDevice device, VkDebugMarkerObjectNameInfoEXT* pNameInfo); +typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerBeginEXT)(VkCommandBuffer commandBuffer, VkDebugMarkerMarkerInfoEXT* pMarkerInfo); +typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerEndEXT)(VkCommandBuffer commandBuffer); +typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerInsertEXT)(VkCommandBuffer commandBuffer, VkDebugMarkerMarkerInfoEXT* pMarkerInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectTagEXT( + VkDevice device, + VkDebugMarkerObjectTagInfoEXT* pTagInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectNameEXT( + VkDevice device, + VkDebugMarkerObjectNameInfoEXT* pNameInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerBeginEXT( + VkCommandBuffer commandBuffer, + VkDebugMarkerMarkerInfoEXT* pMarkerInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerEndEXT( + VkCommandBuffer commandBuffer); + +VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerInsertEXT( + VkCommandBuffer commandBuffer, + VkDebugMarkerMarkerInfoEXT* pMarkerInfo); +#endif + #ifdef __cplusplus } #endif From 2656f459333b3a1dc63619a9ebd83490eea22e93 Mon Sep 17 00:00:00 2001 From: Jon Leech Date: Fri, 13 May 2016 17:01:59 -0700 Subject: [PATCH 4/4] Change log for May 13, 2016 Vulkan 1.0.13 spec update: * Bump API patch number and header version number to 13 for this update. Github Issues: * Improve the description of ename:VK_PRESENT_MODE_FIFO_RELAXED_KHR in the VK_KHR_surface extension (public issue 174). * Clarify use of etext:*_SIMULTANEOUS_USE_BIT for secondary command buffers (public issue 182). * Fix typos in VK_KHR_wayland_surface extension where code:wl_device was used instead of code:wl_display (public issue 193). * Replaced {apiname} with ``Vulkan'' in XML validity statements (public issue 199). * Fix dead links for WSI handle types (public issue 200). *** N.b. this needs to be done in WSI branches as well *** * Use "signaled" instead of "signalled" spelling everywhere (public issue 201). *** N.b. this needs to be done in WSI branches as well *** * Move readme.pdf target directory for XML schema documentation into the target generation directory, instead of leaving it checked into the spec source tree (public issue 203). *** N.b. need to add generated PDF to registry index/1.0 page * Fix duplicate 'which which' typo in description of elink:VkCommandPoolResetFlagBits (public issue 204). * Move the <> section up one level, out of the <> section (public issue 209). Internal Issues: * Clarify in the <> section that implementations should not manage the size of pipeline cache (internal issue 192). * Deprecate the concept of device layers and associated commands (internal issue 255). * Remove ename:VK_INCOMPLETE from the list of possible result codes of flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR (internal issue 314). * Add missing std140/std430 rule: the base alignment of a member following a structure is a multiple of the structure's base alignment (internal issue 321). * Fixes naming of the single elink:VkColorSpaceKHR enum from ename:VK_COLORSPACE_SRGB_NONLINEAR_KHR to ename:VK_COLOR_SPACE_SRGB_NONLINEAR_KHR in XML/header and the VK_KHR_swapchain and VK_KHR_surface extensions to match the style of the typename (space and color are two words, not one) (internal issue 322). * Make it clear that code:LocalInvocationID should only be applied to an input variable and normalize the language describing code:LocalInvocationID to the language for other compute shader variables in the <> section, and add normative language (internal issue 323). * Clarify in the <> section that the result pointer may be modified for specific commands, even if a runtime error is returned (internal issue 324). --- ChangeLog.txt | 60 + doc/specs/vulkan/Makefile | 4 +- doc/specs/vulkan/appendices/glossary.txt | 2 +- doc/specs/vulkan/buildRelease | 3 +- doc/specs/vulkan/chapters/cmdbuffers.txt | 7 +- doc/specs/vulkan/chapters/devsandqueues.txt | 8 +- doc/specs/vulkan/chapters/drawing.txt | 2 +- doc/specs/vulkan/chapters/extensions.txt | 149 +- doc/specs/vulkan/chapters/fundamentals.txt | 2 +- doc/specs/vulkan/chapters/interfaces.txt | 78 +- doc/specs/vulkan/chapters/pipelines.txt | 15 +- doc/specs/vulkan/genRelease | 35 +- doc/specs/vulkan/man/vkCmdWaitEvents.txt | 8 +- doc/specs/vulkan/style/styleguide.txt | 13 + .../vkEnumerateDeviceExtensionProperties.txt | 2 +- ...vkEnumerateInstanceExtensionProperties.txt | 2 +- .../validity/protos/vkQueueBindSparse.txt | 2 +- .../vulkan/validity/protos/vkQueueSubmit.txt | 2 +- .../validity/structs/VkDeviceCreateInfo.txt | 2 +- .../vulkan/validity/structs/VkSubmitInfo.txt | 2 +- out/index.html | 16 +- src/spec/Makefile | 9 +- src/spec/readme.pdf | 5285 ----------------- src/spec/vk.xml | 29 +- src/vulkan/vulkan.h | 11 +- 25 files changed, 311 insertions(+), 5437 deletions(-) delete mode 100644 src/spec/readme.pdf diff --git a/ChangeLog.txt b/ChangeLog.txt index 1280030b..7ebc08e0 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -580,3 +580,63 @@ Other Commits: * Replace the {apiname} macro with hardcoded "Vulkan", now that we've committed to that name. * Add the VK_AMD_rasterization_order extension to vk.xml. + +----------------------------------------------------- + +Change log for May 13, 2016 Vulkan 1.0.13 spec update: + + * Bump API patch number and header version number to 13 for this + update. + +Github Issues: + + * Improve the description of ename:VK_PRESENT_MODE_FIFO_RELAXED_KHR in the + VK_KHR_surface extension (public issue 174). + * Clarify use of etext:*_SIMULTANEOUS_USE_BIT for secondary command + buffers (public issue 182). + * Fix typos in VK_KHR_wayland_surface extension where code:wl_device was + used instead of code:wl_display (public issue 193). + * Replaced {apiname} with ``Vulkan'' in XML validity statements (public + issue 199). + * Fix dead links for WSI handle types (public issue 200). + * Use "signaled" instead of "signalled" spelling everywhere (public issue + 201). + * Move readme.pdf target directory for XML schema documentation into the + target generation directory, instead of leaving it checked into the spec + source tree (public issue 203). + * Fix duplicate 'which which' typo in description of + elink:VkCommandPoolResetFlagBits (public issue 204). + * Move the <> section up one level, out of + the <> section + (public issue 209). + +Internal Issues: + + * Clarify in the <> section that + implementations should not manage the size of pipeline cache (internal + issue 192). + * Deprecate the concept of device layers and associated commands (internal + issue 255). + * Remove ename:VK_INCOMPLETE from the list of possible result codes of + flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR (internal issue 314). + * Add missing std140/std430 rule: the base alignment of a member following + a structure is a multiple of the structure's base alignment (internal + issue 321). + * Fixes naming of the single elink:VkColorSpaceKHR enum from + ename:VK_COLORSPACE_SRGB_NONLINEAR_KHR to + ename:VK_COLOR_SPACE_SRGB_NONLINEAR_KHR in XML/header and the + VK_KHR_swapchain and VK_KHR_surface extensions to match the style of the + typename (space and color are two words, not one) (internal issue 322). + * Make it clear that code:LocalInvocationID should only be applied to an + input variable and normalize the language describing + code:LocalInvocationID to the language for other compute shader + variables in the <> + section, and add normative language (internal issue 323). + * Clarify in the <> section that + the result pointer may be modified for specific commands, even if a + runtime error is returned (internal issue 324). + + + + + diff --git a/doc/specs/vulkan/Makefile b/doc/specs/vulkan/Makefile index 138084bf..72358b13 100644 --- a/doc/specs/vulkan/Makefile +++ b/doc/specs/vulkan/Makefile @@ -43,7 +43,7 @@ ECHO:=echo # XHTMLDIR - 'xhtml' target # PDFDIR - 'pdf' target # CHECKDIR - 'allchecks' target -OUTDIR :=../../../out/1.0 +OUTDIR := ../../../out/1.0 HTMLDIR := $(OUTDIR)/html XHTMLDIR := $(OUTDIR)/xhtml PDFDIR := $(OUTDIR)/pdf @@ -125,7 +125,7 @@ INCLUDES := $(wildcard protos/*.txt structs/*.txt flags/*.txt enums/*.txt funcpo COMMONDOCS := $(CHAPTERS) $(INCLUDES) # A generated included file with the spec version, date, and git commit SPECVERSION = specversion.txt -SPECREVISION = 1.0.12 +SPECREVISION = 1.0.13 SPECREMARK = # Spec targets diff --git a/doc/specs/vulkan/appendices/glossary.txt b/doc/specs/vulkan/appendices/glossary.txt index 913630ab..63430b9f 100644 --- a/doc/specs/vulkan/appendices/glossary.txt +++ b/doc/specs/vulkan/appendices/glossary.txt @@ -245,7 +245,7 @@ Explicitly-Enabled Layer:: list in flink:vkCreateInstance or flink:vkCreateDevice. Event:: - A synchronization primitive that is signalled when execution of previous + A synchronization primitive that is signaled when execution of previous commands complete through a specified set of pipeline stages. Events can be waited on by the device and polled by the host. Represented by a sname:VkEvent object. diff --git a/doc/specs/vulkan/buildRelease b/doc/specs/vulkan/buildRelease index 9d62a8a0..33df0fed 100755 --- a/doc/specs/vulkan/buildRelease +++ b/doc/specs/vulkan/buildRelease @@ -33,8 +33,7 @@ git checkout master echo "**** AUTOGENERATING HEADERS AND SPEC INCLUDE FILES ****" cd $xml -make clobber -make full_install +make OUTDIR=$outdir clobber full_install echo "**** CLEANING SPEC ****" cd $spec diff --git a/doc/specs/vulkan/chapters/cmdbuffers.txt b/doc/specs/vulkan/chapters/cmdbuffers.txt index 68189dbd..7e463bca 100644 --- a/doc/specs/vulkan/chapters/cmdbuffers.txt +++ b/doc/specs/vulkan/chapters/cmdbuffers.txt @@ -136,7 +136,7 @@ command buffers allocated from the command pool back to the command pool. All command buffers that have been allocated from the command pool are put in the initial state. -pname:flags is a bitmask controlling the operation. Bits which which can: be +pname:flags is a bitmask controlling the operation. Bits which can: be set include: include::../enums/VkCommandPoolResetFlagBits.txt[] @@ -336,7 +336,8 @@ fname:vkCmdExecuteCommands) until the final time that primary buffer's submission to a queue completes. If, after the primary buffer completes, the secondary command buffer is recorded to execute on a different primary buffer, the first primary buffer mustnot: be resubmitted until after it is -reset with flink:vkResetCommandBuffer. +reset with flink:vkResetCommandBuffer unless the secondary command buffer +was recorded with ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT. If ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT is not set on a secondary command buffer, that command buffer mustnot: be used more than @@ -428,7 +429,7 @@ Each call to fname:vkQueueSubmit submits zero or more _batches_ of work to the queue for execution. pname:submitCount is used to specify the number of batches to submit. Each batch includes zero or more semaphores to wait upon, and a corresponding set of stages that will wait for the semaphore to be -signalled before executing any work, followed by a number of command buffers +signaled before executing any work, followed by a number of command buffers that will be executed, and finally, zero or more semaphores that will be signaled after command buffer execution completes. Each batch is represented as an instance of the slink:VkSubmitInfo structure stored in an array, the diff --git a/doc/specs/vulkan/chapters/devsandqueues.txt b/doc/specs/vulkan/chapters/devsandqueues.txt index 563d508a..c9782367 100644 --- a/doc/specs/vulkan/chapters/devsandqueues.txt +++ b/doc/specs/vulkan/chapters/devsandqueues.txt @@ -330,11 +330,9 @@ include::../structs/VkDeviceCreateInfo.txt[] requested to be created along with the logical device. Refer to the <> section below for further details. - * pname:enabledLayerCount is the number of device layers to enable. - * pname:ppEnabledLayerNames is a pointer to an array of - pname:enabledLayerCount null-terminated UTF-8 strings containing the - names of layers to enable for the created device. See the - <> section for further details. + * pname:enabledLayerCount is deprecated and ignored. + * pname:ppEnabledLayerNames is deprecated and ignored. See + <>. * pname:enabledExtensionCount is the number of device extensions to enable. * pname:ppEnabledExtensionNames is a pointer to an array of diff --git a/doc/specs/vulkan/chapters/drawing.txt b/doc/specs/vulkan/chapters/drawing.txt index 0abc6ea2..220b56e1 100644 --- a/doc/specs/vulkan/chapters/drawing.txt +++ b/doc/specs/vulkan/chapters/drawing.txt @@ -340,7 +340,7 @@ The order of vertices in such a primitive is significant during <>. -=== Programmable Primitive Shading +== Programmable Primitive Shading Once primitives are assembled, they proceed to the vertex shading stage of the pipeline. If the draw includes multiple instances, then the set of diff --git a/doc/specs/vulkan/chapters/extensions.txt b/doc/specs/vulkan/chapters/extensions.txt index 844ee097..41e526d8 100644 --- a/doc/specs/vulkan/chapters/extensions.txt +++ b/doc/specs/vulkan/chapters/extensions.txt @@ -7,17 +7,23 @@ Additional functionality may: be provided by layers or extensions. A layer cannot: add or modify Vulkan commands, while an extension may: do so. -There are two kinds of layers and extensions, instance and device. Instance -layers and extensions are general purpose and do not depend on a specific -device. Device layers and extensions operate on specific devices, and -require a valid sname:VkDevice to be used. Instance extensions usually -affect the operation of the API as a whole, whereas device layers and -extensions tend to be hardware-specific. Examples of these might be: +The set of layers to enable is specified when creating an instance, and those +layers are able to intercept any Vulkan command dispatched to that instance +or any of its child objects. - * Whole API validation is an example of a good instance layer. +Extensions can operate at either the instance or device scope. Enabled instance +extensions are able to affect the operation of the instance and any of its +child objects, while device extensions may: only be available on a subset of +physical devices, must be individually enabled per-device, and only affect the +operation of the devices where they are enabled. + +Examples of these might be: + + * Whole API validation is an example of a layer. * Debug capabilities might make a good instance extension. * A layer that provides hardware-specific performance telemetry and - analysis could be a device layer. + analysis could be a layer that is only active for devices created from + compatible physical devices. * Functions to allow an application to use additional hardware features beyond the core would be a good candidate for a device extension. @@ -32,7 +38,7 @@ allowed ranges. Instead, a validation layer would do those checks and flag issues. This avoids a performance penalty during production use of the application because those layers would not be enabled in production. -To query the available instance layers, call: +To query the available layers, call: include::../protos/vkEnumerateInstanceLayerProperties.txt[] @@ -43,38 +49,16 @@ include::../protos/vkEnumerateInstanceLayerProperties.txt[] include::../validity/protos/vkEnumerateInstanceLayerProperties.txt[] -To enable a instance layer, the name of the layer should be added to the -pname:ppEnabledLayerNames member of slink:VkInstanceCreateInfo when creating -a sname:VkInstance. - -To query the layers available to a given physical device, call: - -include::../protos/vkEnumerateDeviceLayerProperties.txt[] - - * pname:physicalDevice is the physical device that will be queried. - * pname:pPropertyCount is a pointer to an integer related to the number of - layer properties available or queried, as described below. - * pname:pProperties is either `NULL` or a pointer to an array of - slink:VkLayerProperties structures. - -include::../validity/protos/vkEnumerateDeviceLayerProperties.txt[] - -To enable a device layer, the name of the layer should be added to the -pname:ppEnabledLayerNames member of slink:VkDeviceCreateInfo when creating -a sname:VkDevice. - -For both flink:vkEnumerateInstanceLayerProperties and -flink:vkEnumerateDeviceLayerProperties, if pname:pProperties is `NULL`, then -the number of layer properties available is returned in pname:pPropertyCount. -Otherwise, pname:pPropertyCount must: point to a variable set by the user to -the number of elements in the pname:pProperties array, and on return the -variable is overwritten with the number of structures actually written to -pname:pProperties. If pname:pPropertyCount is less than the -number of layer properties available, at most pname:pPropertyCount -structures will be written. If pname:pPropertyCount is smaller than the -number of layers available, ename:VK_INCOMPLETE will be returned instead of -ename:VK_SUCCESS, to indicate that not all the available layer properties -were returned. +If pname:pProperties is `NULL`, then the number of layer properties available +is returned in pname:pPropertyCount. Otherwise, pname:pPropertyCount must: +point to a variable set by the user to the number of elements in the +pname:pProperties array, and on return the variable is overwritten with the +number of structures actually written to pname:pProperties. If +pname:pPropertyCount is less than the number of layer properties available, at +most pname:pPropertyCount structures will be written. If pname:pPropertyCount +is smaller than the number of layers available, ename:VK_INCOMPLETE will be +returned instead of ename:VK_SUCCESS, to indicate that not all the available +layer properties were returned. The sname:VkLayerProperties structure is defined as: @@ -82,9 +66,8 @@ include::../structs/VkLayerProperties.txt[] * pname:layerName is a null-terminated UTF-8 string specifying the name of the layer. Use this name in the pname:ppEnabledLayerNames array passed - in the slink:VkInstanceCreateInfo and slink:VkDeviceCreateInfo - structures passed to flink:vkCreateInstance and flink:vkCreateDevice, - respectively, to enable this layer for an instance or device. + in the slink:VkInstanceCreateInfo structure to enable this layer for an + instance. * pname:specVersion is the Vulkan version the layer was written to, encoded as described in the <> section. @@ -95,16 +78,82 @@ include::../structs/VkLayerProperties.txt[] include::../validity/structs/VkLayerProperties.txt[] +To enable a layer, the name of the layer should be added to the +pname:ppEnabledLayerNames member of slink:VkInstanceCreateInfo when creating +a sname:VkInstance. + Loader implementations may: provide mechanisms outside the Vulkan API for enabling specific layers. Layers enabled through such a mechanism are _implicitly enabled_, while layers enabled by including the layer name in -the pname:ppEnabledLayerNames member of slink:VkDeviceCreateInfo are +the pname:ppEnabledLayerNames member of slink:VkInstanceCreateInfo are _explicitly enabled_. Except where otherwise specified, implicitly enabled and explicitly enabled layers differ only in the way they are enabled. Explicitly enabling a layer that is implicitly enabled has no additional effect. +[[extended-functionality-device-layer-deprecation]] +=== Device Layer Deprecation + +Previous versions of this specification distinguished between instance and +device layers. Instance layers were only able to intercept commands that +operate on sname:VkInstance and sname:VkPhysicalDevice, except they were not +able to intercept flink:vkCreateDevice. Device layers were enabled for +individual devices when they were created, and could only intercept commands +operating on that device or its child objects. + +Device-only layers are now deprecated, and this specification no longer +distinguishes between instance and device layers. Layers are enabled during +instance creation, and are able to intercept all commands operating on that +instance or any of its child objects. At the time of deprecation there were no +known device-only layers and no compelling reason to create one. + +In order to maintain compatibility with implementations released prior to +device-layer deprecation, applications should: still enumerate and enable +device layers. The behavior of fname:vkEnumerateDeviceLayerProperties and +valid usage of the pname:ppEnabledLayerNames member of sname:VkDeviceCreateInfo +maximizes compatibility with applications written to work with the previous +requirements. + +Device layers can: be enumerated by calling: + +include::../protos/vkEnumerateDeviceLayerProperties.txt[] + + * pname:pPropertyCount is a pointer to an integer related to the number of + layer properties available or queried. + * pname:pProperties is either `NULL` or a pointer to an array of + slink:VkLayerProperties structures. + +include::../validity/protos/vkEnumerateDeviceLayerProperties.txt[] + +If pname:pProperties is `NULL`, then the number of layer properties available +is returned in pname:pPropertyCount. Otherwise, pname:pPropertyCount must: +point to a variable set by the user to the number of elements in the +pname:pProperties array, and on return the variable is overwritten with the +number of structures actually written to pname:pProperties. If +pname:pPropertyCount is less than the number of layer properties available, at +most pname:pPropertyCount structures will be written. If pname:pPropertyCount +is smaller than the number of layers available, ename:VK_INCOMPLETE will be +returned instead of ename:VK_SUCCESS, to indicate that not all the available +layer properties were returned. + +The list of layers enumerated by fname:vkEnumerateDeviceLayerProperties must: +be exactly the sequence of layers enabled for the instance. The members of +sname:VkLayerProperties for each enumerated layer must: be the same as the +properties when the layer was enumerated by +fname:vkEnumerateInstanceLayerProperties. + +The pname:ppEnabledLayerNames and pname:enabledLayerCount members of +sname:VkDeviceCreateInfo are deprecated and their values must: be ignored by +implementations. However, for compatibility, only an empty list of layers or a +list that exactly matches the sequence enabled at instance creation time are +valid, and validation layers should: issue diagnostics for other cases. + +Regardless of the enabled layer list provided in sname:VkDeviceCreateInfo, the +sequence of layers active for a device will be exactly the sequence of layers +enabled when the parent instance was created. + + [[extended-functionality-extensions]] == Extensions @@ -123,7 +172,7 @@ To query the available instance extensions, call: include::../protos/vkEnumerateInstanceExtensionProperties.txt[] * pname:pLayerName is either `NULL` or a pointer to a null-terminated - UTF-8 string naming the instance layer to retrieve extensions from. + UTF-8 string naming the layer to retrieve extensions from. * pname:pPropertyCount is a pointer to an integer related to the number of extension properties available or queried, as described below. * pname:pProperties is either `NULL` or a pointer to an array of @@ -136,7 +185,7 @@ implementation or by implicitly enabled layers are returned. When pname:pLayerName is the name of a layer, the instance extensions provided by that layer are returned. -To enable a instance extension, the name of the extension should be added to +To enable an instance extension, the name of the extension should be added to the pname:ppEnabledExtensionNames member of slink:VkInstanceCreateInfo when creating a sname:VkInstance. @@ -146,7 +195,7 @@ include::../protos/vkEnumerateDeviceExtensionProperties.txt[] * pname:physicalDevice is the physical device that will be queried. * pname:pLayerName is either `NULL` or a pointer to a null-terminated - UTF-8 string naming the device layer to retrieve extensions from. + UTF-8 string naming the layer to retrieve extensions from. * pname:pPropertyCount is a pointer to an integer related to the number of extension properties available or queried, as described below. * pname:pProperties is either `NULL` or a pointer to an array of @@ -159,10 +208,6 @@ implementation or by implicitly enabled layers are returned. When pname:pLayerName is the name of a layer, the device extensions provided by that layer are returned. -To enable a device layer, the name of the layer should be added to the -pname:ppEnabledExtensionNames member of slink:VkDeviceCreateInfo when -creating a sname:VkDevice. - For both flink:vkEnumerateInstanceExtensionProperties and flink:vkEnumerateDeviceExtensionProperties, if pname:pProperties is `NULL`, then the number of extensions properties available is returned in diff --git a/doc/specs/vulkan/chapters/fundamentals.txt b/doc/specs/vulkan/chapters/fundamentals.txt index 35f9ef7f..dcf9049d 100644 --- a/doc/specs/vulkan/chapters/fundamentals.txt +++ b/doc/specs/vulkan/chapters/fundamentals.txt @@ -691,7 +691,7 @@ include::../enums/VkResult.txt[] A requested format is not supported on this device. If a command returns a run time error, it will leave any result pointers -unmodified. +unmodified, unless other behavior is explicitly defined in the specification. Out of memory errors do not damage any currently existing Vulkan objects. Objects that have already been successfully created can: still be used by diff --git a/doc/specs/vulkan/chapters/interfaces.txt b/doc/specs/vulkan/chapters/interfaces.txt index b283d564..02fe23b0 100644 --- a/doc/specs/vulkan/chapters/interfaces.txt +++ b/doc/specs/vulkan/chapters/interfaces.txt @@ -643,6 +643,11 @@ out according to the following rules. + * Any code:ArrayStride or code:MatrixStride decoration must: be an integer multiple of the base alignment of the array or matrix from above. ++ + * The code:Offset Decoration of a member immediately following a structure or + an array must: be greater than or equal to the next multiple of the base + alignment of that structure or array. + [NOTE] .Note @@ -742,7 +747,7 @@ The z component of code:FragCoord is the interpolated depth value of the primitive, and the w component is the interpolated latexmath:[$\frac{1}{w}$]. + -The code:FragCoord decoration is only supported in fragment shaders. The +The code:FragCoord decoration must: be used only within fragment shaders. The code:Centroid interpolation decoration is ignored on code:FragCoord. + code:FragCoord must: be declared as a four-component vector of 32-bit @@ -760,7 +765,7 @@ is an execution path through the shader that does not set code:FragDepth, then the fragment's depth value is undefined for executions of the shader that take that path. + -The code:FragDepth decoration is only supported in fragment shaders. +The code:FragDepth decoration must: be used only within fragment shaders. + code:FragDepth must: be declared as a scalar 32-bit floating-point value. @@ -797,7 +802,8 @@ workgroup. The value in this variable is equal to the index of the local workgroup multiplied by the size of the local workgroup plus code:LocalInvocationID. + -The code:GlobalInvocationID decoration is only supported in compute shaders. +The code:GlobalInvocationID decoration must: be used only within compute +shaders. + code:GlobalInvocationID must: be declared as a three-component vector of 32-bit integers. @@ -810,7 +816,8 @@ the shader that is produced to satisfy internal requirements such as the generation of derivatives. + -- -The code:HelperInvocation decoration is only supported in fragment shaders. +The code:HelperInvocation decoration must: be used only within fragment +shaders. code:HelperInvocation must: be declared as a scalar 32-bit integer. @@ -877,26 +884,34 @@ vertices of a given primitive. When used in a fragment shader, an input variable decorated with code:Layer contains the layer index of the primitive that the fragment invocation belongs to. + -The code:Layer decoration is only supported in geometry and fragment +The code:Layer decoration must: be used only within geometry and fragment shaders. + code:Layer must: be declared as a scalar 32-bit integer. code:LocalInvocationID:: -This variable contains the location of the current compute shader invocation -within the local workgroup. The range of possible values for each component -of LocalInvocationID range from zero through the size of the workgroup in that -dimension minus one. If the size of the workgroup in a particular dimension is -one, then LocalInvocationID in that dimension will be zero. That is, if the -workgroup is effectively two-dimensional, then code:LocalInvocationID.z will -be zero, and if the workgroup is one-dimensional, then both +The code:LocalInvocationID decoration can: be applied to a code:uvec3 input +variable in a compute shader, in which case it will contain the location of the +current compute shader invocation within the local workgroup. The possible +values for each component of code:LocalInvocationID range from zero through to +the size of the workgroup in that dimension minus one. ++ +The code:LocalInvocationID decoration must: be used only within compute +shaders. ++ +code:LocalInvocationID must: be declared as a three-component vector of 32-bit +integers. + +[NOTE] +.Note +==== +If the size of the workgroup in a particular dimension is one, then the +code:LocalInvocationID in that dimension will be zero. If the workgroup is +effectively two-dimensional, then code:LocalInvocationID.z will be zero. +If the workgroup is effectively one-dimensional, then both code:LocalInvocationID.y and code:LocalInvocationID.z will be zero. -+ -The code:LocalInvocationID decoration is only supported in compute shaders. -+ -code:LocalInvocationID must: be declared as a three-component vector of -32-bit integers. +==== code:NumWorkGroups:: @@ -907,7 +922,7 @@ to. It reflects the values passed to a call to flink:vkCmdDispatch or through the structure consumed by the execution of flink:vkCmdDispatchIndirect. + -The code:NumWorkGroups decoration is only supported in compute shaders. +The code:NumWorkGroups decoration must: be used only within compute shaders. + code:NumWorkGroups must: be declared as a three-component vector of 32-bit integers. @@ -923,7 +938,7 @@ If a specialization constant or a constant is decorated with the code:WorkgroupSize decoration, this must: take precedence over any execution mode set for code:LocalSize. + -The code:WorkgroupSize decoration is only supported in compute shaders. +The code:WorkgroupSize decoration must: be used only within compute shaders. + code:WorkgroupSize must: be declared as a three-component vector of 32-bit integers. @@ -936,8 +951,8 @@ vertices in the input patch being processed by the shader. A single tessellation control or evaluation shader can: read patches of differing sizes, so the code:PatchVertices variable may: differ between patches. + -The code:PatchVertices decoration is only supported in tessellation control -and evaluation shaders. +The code:PatchVertices decoration must: be used only within tessellation +control and evaluation shaders. + code:PatchVertices must: be declared as scalar 32-bit integer. @@ -951,7 +966,7 @@ Point Rasterization>>. If the primitive the fragment shader invocation belongs to is not a point, then code:PointCoord is undefined. + -- -The code:PointCoord decoration is only supported in fragment shaders. +The code:PointCoord decoration must: be used only within fragment shaders. code:PointCoord must: be declared as two-component vector of 32-bit floating-point values. @@ -1076,7 +1091,7 @@ shader entry point's interface does not include an output variable decorated with code:SampleMask, the sample mask has no effect on the processing of a fragment. + -The code:SampleMask decoration is only supported in fragment shaders. +The code:SampleMask decoration must: be used only within fragment shaders. + code:SampleMask must: be declared as an array of 32-bit integers. @@ -1089,7 +1104,7 @@ fragment shader entry point's interface includes an input variable decorated with code:SamplePosition, per-sample shading is enabled for draws that use that fragment shader. + -The code:SamplePosition decoration is only supported in fragment shaders. +The code:SamplePosition decoration must: be used only within fragment shaders. + code:SamplePosition must: be declared as a two-component vector of floating-point values. @@ -1103,7 +1118,7 @@ and w are in the range latexmath:[$[0,1\]$] and vary linearly across the primitive being subdivided. For the tessellation modes of code:Quads or code:IsoLines, the third component is always zero. + -The code:TessellationCoord decoration is only available to tessellation +The code:TessellationCoord decoration must: be used only within tessellation evaluation shaders. + code:TessellationCoord must: be declared as three-component vector of 32-bit @@ -1119,7 +1134,7 @@ tessellation evaluation shaders. When applied to an input variable in a tessellation evaluation shader, the shader can: read the value written by the tessellation control shader. + -The code:TessellationLevelOuter decoration is not available outside +The code:TessellationLevelOuter decoration must: be used only within tessellation control and evaluation shaders. + code:TessellationLevelOuter must: be declared as an array of size two, @@ -1135,7 +1150,7 @@ tessellation evaluation shaders. When applied to an input variable in a tessellation evaluation shader, the shader can: read the value written by the tessellation control shader. + -The code:TessellationLevelInner decoration is not available outside +The code:TessellationLevelInner decoration must: be used only within tessellation control and evaluation shaders. + code:TessellationLevelInner must: be declared as an array of size four, @@ -1156,8 +1171,7 @@ consumed by flink:vkCmdDrawIndexedIndirect. + code:VertexIndex starts at the same starting value for each instance. + -The code:VertexIndex decoration mustnot: be used in any shader stage other -than vertex. +The code:VertexIndex decoration must: be used only within vertex shaders. + code:VertexIndex must: be declared as a 32-bit integer. @@ -1176,8 +1190,8 @@ in a fragment shader, an input variable decorated with code:ViewportIndex contains the viewport index of the primitive that the fragment invocation belongs to. + -The code:ViewportIndex decoration is only supported in geometry and fragment -shaders. +The code:ViewportIndex decoration must: be used only within geometry and +fragment shaders. + code:ViewportIndex must: be declared as a 32-bit integer. @@ -1190,7 +1204,7 @@ Each component ranges from zero to the values of the parameters passed into flink:vkCmdDispatch or read from the sname:VkDispatchIndirectCommand structure read through a call to flink:vkCmdDispatchIndirect. + -The code:WorkGroupID decoration is only supported in compute shaders. +The code:WorkGroupID decoration must: be used only within compute shaders. + code:WorkGroupID must: be declared as a three-component vector of 32-bit integers. diff --git a/doc/specs/vulkan/chapters/pipelines.txt b/doc/specs/vulkan/chapters/pipelines.txt index 0c9382dd..f2b4a0ba 100644 --- a/doc/specs/vulkan/chapters/pipelines.txt +++ b/doc/specs/vulkan/chapters/pipelines.txt @@ -493,8 +493,9 @@ pipelines is achieved by passing the same pipeline cache object when creating multiple related pipelines. Reuse across runs of an application is achieved by retrieving pipeline cache contents in one run of an application, saving the contents, and using them to preinitialize a pipeline cache on a -subsequent run. The contents and size of the pipeline cache objects are -managed by the implementation. Applications can: control the amount of data +subsequent run. The contents of the pipeline cache objects are +managed by the implementation. Applications can: manage the host memory +consumed by a pipeline cache object and control the amount of data retrieved from a pipeline cache object. Pipeline cache objects are created by calling: @@ -511,6 +512,16 @@ include::../protos/vkCreatePipelineCache.txt[] * pname:pPipelineCache is a pointer to a sname:VkPipelineCache handle in which the resulting pipeline cache object is returned. +[NOTE] +.Note +==== +Applications can: track and manage the total host memory size of a pipeline +cache object using the pname:pAllocator. Applications can: limit the amount +of data retrieved from a pipeline cache object in fname:vkGetPipeineCacheData. +Implementations shouldnot: internally limit the total number of entries added to a +pipeline cache object or the total host memory consumed. +==== + include::../validity/protos/vkCreatePipelineCache.txt[] The sname:VkPipelineCacheCreateInfo structure is defined as: diff --git a/doc/specs/vulkan/genRelease b/doc/specs/vulkan/genRelease index 6341e815..535da30d 100755 --- a/doc/specs/vulkan/genRelease +++ b/doc/specs/vulkan/genRelease @@ -18,7 +18,9 @@ from datetime import * # branch = branch or commit or tag name # label = textual label to apply # outdir = directory to generate specs in -def buildRelease(branch,label,outdir,targets): +# xmlTargets = targets to build in src/spec/ +# specTargets = targets to build in doc/specs/vulkan/ +def buildRelease(branch,label,outdir,xmlTargets,specTargets): global root, xml, spec print('echo Info: Generating branch=' + branch, @@ -26,10 +28,6 @@ def buildRelease(branch,label,outdir,targets): 'outdir=' + outdir) print('git checkout', branch) - print('echo Info: Generating headers and spec include files') - print('cd', xml) - print('make clobber full_install') - print('echo Info: Cleaning spec in', outdir) print('cd', spec) print('rm -rf', @@ -40,9 +38,15 @@ def buildRelease(branch,label,outdir,targets): outdir + '/vkspec.html', 'specversion.txt') + print('echo Info: Generating headers and spec include files') + print('cd', xml) + print('make OUTDIR=' + outdir, xmlTargets) + print('echo Info: Generating spec') + print('cd', spec) print('make specversion.txt') - print('make -j 4 OUTDIR=' + outdir, ' NOTEOPTS="-a implementation-guide"', targets) + print('make -j 4 OUTDIR=' + outdir, ' NOTEOPTS="-a implementation-guide"', + specTargets) print('rm', outdir + '/pdf/vkspec.xml') # Main @@ -68,11 +72,15 @@ wsibranch = '1.0-wsi_extensions' now = datetime.today().strftime('%Y%m%d') # Generate specs -coretargets='xhtml pdf styleguide manhtml manpdf manhtmlpages' -buildRelease(corebranch, corebranch, outdir + corebranch, coretargets) +coreXmlTargets='clobber full_install pdf_install' +coreSpecTargets='xhtml pdf styleguide manhtml manpdf manhtmlpages' +buildRelease(corebranch, corebranch, outdir + corebranch, + coreXmlTargets, coreSpecTargets) -wsitargets='xhtml pdf' -buildRelease(wsibranch, wsibranch, outdir + wsibranch, wsitargets) +wsiXmlTargets='clobber full_install' +wsiSpecTargets='xhtml pdf' +buildRelease(wsibranch, wsibranch, outdir + wsibranch, + wsiXmlTargets, wsiSpecTargets) print('echo Info: post-generation cleanup') @@ -80,8 +88,9 @@ print('git checkout ' + corebranch) print('echo To tag the spec branches, execute these commands:') print('echo git checkout', corebranch) -print('echo git tag -a -m \\"Tag core API specification for', now, 'release\\"', 'v1.0-core-' + now) +print('echo git tag -a -m \\"Tag core API specification for', now, + 'release\\"', 'v1.0-core-' + now) print('echo git checkout', wsibranch) -print('echo git tag -a -m \\"Tag core+WSI API specification for', now, 'release\\"', 'v1.0-core+wsi-' + now) -print('echo git push --tags') +print('echo git tag -a -m \\"Tag core+WSI API specification for', now, + 'release\\"', 'v1.0-core+wsi-' + now) diff --git a/doc/specs/vulkan/man/vkCmdWaitEvents.txt b/doc/specs/vulkan/man/vkCmdWaitEvents.txt index ca63b29c..827c78ba 100644 --- a/doc/specs/vulkan/man/vkCmdWaitEvents.txt +++ b/doc/specs/vulkan/man/vkCmdWaitEvents.txt @@ -43,13 +43,13 @@ Description ----------- fname:vkCmdWaitEvents waits for a number of event objects to become -signalled and inserts a set of memory barriers into the command buffer +signaled and inserts a set of memory barriers into the command buffer specified by pname:commandBuffer. fname:vkCmdWaitEvents waits for each of the pname:eventCount event object -specified by pname:pEvents to become signalled. The point at which each is -signalled must have been specified in the command that caused the object to -become signalled (either fname:vkSetEvent or fname:vkCmdSetEvent) and must +specified by pname:pEvents to become signaled. The point at which each is +signaled must have been specified in the command that caused the object to +become signaled (either fname:vkSetEvent or fname:vkCmdSetEvent) and must also have the corresponding bit set in pname:srcStageMask. The pname:ppMemoryBarriers parameter is a pointer to an array of pname:memoryBarrierCount diff --git a/doc/specs/vulkan/style/styleguide.txt b/doc/specs/vulkan/style/styleguide.txt index 245ea937..f4f324ee 100644 --- a/doc/specs/vulkan/style/styleguide.txt +++ b/doc/specs/vulkan/style/styleguide.txt @@ -641,6 +641,16 @@ write that it ``contains one or more bits''. A counter example is that it is oka to write ``For non-stereoscopic-3D applications, this value is 1.'' +=== Use American Spelling Conventions + +In case of conflict, use American rather than British spelling +conventions. For example: + +*Correct:* color, signaled. + +*Incorrect:* colour, signalled. + + [[writingstyle-describing]] == Describing Commands and Parameters @@ -963,6 +973,9 @@ for this structure: = Revision History +* May 1, 2016 - Include feedback from public Github issues 120 and 190. Use + consistent conventions for defining structures. Use American rather than + British spelling conventions. * March 12, 2016 - Recommend against "the value of". * February 26, 2016 - Replace use of the "maynot{cl}" macro with "may{cl} not". * February 16, 2016 - Place asciidoc conversion post-release. diff --git a/doc/specs/vulkan/validity/protos/vkEnumerateDeviceExtensionProperties.txt b/doc/specs/vulkan/validity/protos/vkEnumerateDeviceExtensionProperties.txt index f3ad2c1b..edb44cbc 100644 --- a/doc/specs/vulkan/validity/protos/vkEnumerateDeviceExtensionProperties.txt +++ b/doc/specs/vulkan/validity/protos/vkEnumerateDeviceExtensionProperties.txt @@ -11,7 +11,7 @@ endif::doctype-manpage[] * If pname:pLayerName is not `NULL`, pname:pLayerName must: be a null-terminated string * pname:pPropertyCount must: be a pointer to a basetype:uint32_t value * If the value referenced by pname:pPropertyCount is not `0`, and pname:pProperties is not `NULL`, pname:pProperties must: be a pointer to an array of pname:pPropertyCount sname:VkExtensionProperties structures -* If pname:pLayerName is not `NULL`, it must: be the name of a device layer returned by flink:vkEnumerateDeviceLayerProperties +* If pname:pLayerName is not `NULL`, it must: be the name of a layer returned by flink:vkEnumerateDeviceLayerProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkEnumerateInstanceExtensionProperties.txt b/doc/specs/vulkan/validity/protos/vkEnumerateInstanceExtensionProperties.txt index 7a202b76..0b21ed71 100644 --- a/doc/specs/vulkan/validity/protos/vkEnumerateInstanceExtensionProperties.txt +++ b/doc/specs/vulkan/validity/protos/vkEnumerateInstanceExtensionProperties.txt @@ -10,7 +10,7 @@ endif::doctype-manpage[] * If pname:pLayerName is not `NULL`, pname:pLayerName must: be a null-terminated string * pname:pPropertyCount must: be a pointer to a basetype:uint32_t value * If the value referenced by pname:pPropertyCount is not `0`, and pname:pProperties is not `NULL`, pname:pProperties must: be a pointer to an array of pname:pPropertyCount sname:VkExtensionProperties structures -* If pname:pLayerName is not `NULL`, it must: be the name of an instance layer returned by flink:vkEnumerateInstanceLayerProperties +* If pname:pLayerName is not `NULL`, it must: be the name of a layer returned by flink:vkEnumerateInstanceLayerProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkQueueBindSparse.txt b/doc/specs/vulkan/validity/protos/vkQueueBindSparse.txt index 6f820ecf..44672ff3 100644 --- a/doc/specs/vulkan/validity/protos/vkQueueBindSparse.txt +++ b/doc/specs/vulkan/validity/protos/vkQueueBindSparse.txt @@ -12,7 +12,7 @@ endif::doctype-manpage[] * If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be a valid sname:VkFence handle * The pname:queue must: support sparse binding operations * Each of pname:queue and pname:fence that are valid handles must: have been created, allocated or retrieved from the same sname:VkDevice -* pname:fence must: be unsignalled +* pname:fence must: be unsignaled * pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue ifndef::doctype-manpage[] ******************************************************************************** diff --git a/doc/specs/vulkan/validity/protos/vkQueueSubmit.txt b/doc/specs/vulkan/validity/protos/vkQueueSubmit.txt index d066a965..d29228fb 100644 --- a/doc/specs/vulkan/validity/protos/vkQueueSubmit.txt +++ b/doc/specs/vulkan/validity/protos/vkQueueSubmit.txt @@ -11,7 +11,7 @@ endif::doctype-manpage[] * If pname:submitCount is not `0`, pname:pSubmits must: be a pointer to an array of pname:submitCount valid sname:VkSubmitInfo structures * If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be a valid sname:VkFence handle * Each of pname:queue and pname:fence that are valid handles must: have been created, allocated or retrieved from the same sname:VkDevice -* If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be unsignalled +* If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be unsignaled * If pname:fence is not sname:VK_NULL_HANDLE, pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue ifndef::doctype-manpage[] ******************************************************************************** diff --git a/doc/specs/vulkan/validity/structs/VkDeviceCreateInfo.txt b/doc/specs/vulkan/validity/structs/VkDeviceCreateInfo.txt index 2578a59b..e2e546a3 100644 --- a/doc/specs/vulkan/validity/structs/VkDeviceCreateInfo.txt +++ b/doc/specs/vulkan/validity/structs/VkDeviceCreateInfo.txt @@ -15,7 +15,7 @@ endif::doctype-manpage[] * If pname:enabledExtensionCount is not `0`, pname:ppEnabledExtensionNames must: be a pointer to an array of pname:enabledExtensionCount null-terminated strings * If pname:pEnabledFeatures is not `NULL`, pname:pEnabledFeatures must: be a pointer to a valid sname:VkPhysicalDeviceFeatures structure * pname:queueCreateInfoCount must: be greater than `0` -* Any given element of pname:ppEnabledLayerNames must: be the name of a layer present on the system, exactly matching a string returned in the sname:VkLayerProperties structure by fname:vkEnumerateDeviceLayerProperties +* pname:ppEnabledLayerNames must: either be sname:NULL or contain the same sequence of layer names that was enabled when creating the parent instance * Any given element of pname:ppEnabledExtensionNames must: be the name of an extension present on the system, exactly matching a string returned in the sname:VkExtensionProperties structure by fname:vkEnumerateDeviceExtensionProperties * If an extension listed in pname:ppEnabledExtensionNames is provided as part of a layer, then both the layer and extension must: be enabled to enable that extension * The pname:queueFamilyIndex member of any given element of pname:pQueueCreateInfos must: be unique within pname:pQueueCreateInfos diff --git a/doc/specs/vulkan/validity/structs/VkSubmitInfo.txt b/doc/specs/vulkan/validity/structs/VkSubmitInfo.txt index 4a644444..39a81fa2 100644 --- a/doc/specs/vulkan/validity/structs/VkSubmitInfo.txt +++ b/doc/specs/vulkan/validity/structs/VkSubmitInfo.txt @@ -15,7 +15,7 @@ endif::doctype-manpage[] * If pname:commandBufferCount is not `0`, pname:pCommandBuffers must: be a pointer to an array of pname:commandBufferCount valid sname:VkCommandBuffer handles * If pname:signalSemaphoreCount is not `0`, pname:pSignalSemaphores must: be a pointer to an array of pname:signalSemaphoreCount valid sname:VkSemaphore handles * Each of the elements of pname:pWaitSemaphores, the elements of pname:pCommandBuffers and the elements of pname:pSignalSemaphores that are valid handles must: have been created, allocated or retrieved from the same sname:VkDevice -* Any given element of pname:pSignalSemaphores must: currently be unsignalled +* Any given element of pname:pSignalSemaphores must: currently be unsignaled * Any given element of pname:pCommandBuffers must: either have been recorded with the ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, or not currently be executing on the device * Any given element of pname:pCommandBuffers must: be in the executable state * If any given element of pname:pCommandBuffers contains commands that execute secondary command buffers, those secondary command buffers must: have been recorded with the ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, or not currently be executing on the device diff --git a/out/index.html b/out/index.html index cfc7ba88..8c155c73 100644 --- a/out/index.html +++ b/out/index.html @@ -9,9 +9,11 @@ related documents. It is updated by hand periodically by Jon Leech.

    -
  • The Vulkan Style Guide is a work - in progress (but significantly complete) document, useful when - writing and modifying Specification and reference page language. +
  • The Vulkan Style Guide is a work in + progress (but significantly complete) document, useful when writing + and modifying Specification and reference page language.
  • +
  • The XML Registry README describes the + schema and some use cases for vk.xml.
  • Core API Specifications
  • The following targets are for internal use only and are probably - not included in, or if included, not up to date in the sandbox -
  • + not included in, or if included, not up to date in the sandbox +
diff --git a/src/spec/Makefile b/src/spec/Makefile index b8f15fe4..8c999d14 100644 --- a/src/spec/Makefile +++ b/src/spec/Makefile @@ -19,6 +19,7 @@ PYTHON ?= python3 PYFILES = genheaders.py reg.py GENOPTS = GENHEADERS = genheaders.py $(GENOPTS) +OUTDIR = ../../out/1.0 # Generate all outputs for Vulkan, including headers and (soon) Asciidoc # frameworks. Targets: @@ -39,7 +40,7 @@ DOCROOT = ../../doc/specs/vulkan DOCPYSRC = $(DOCROOT)/vkapi.py DOCVALIDITY = validity DOCHOSTSYNCTABLE = hostsynctable -XMLDOC = readme.pdf +XMLDOC = $(OUTDIR)/readme.pdf # Could add $(XMLDOC) to default, but that requires a LaTeX install. # Could regenerate vk.json automatically but the generator script isn't @@ -50,6 +51,8 @@ default install: $(HEADERS) full_install: default $(DOCINCLUDES) $(DOCPYSRC) $(DOCVALIDITY) $(DOCHOSTSYNCTABLE) +pdf_install: $(OUTDIR)/readme.pdf + ################################################ # Python and XML files on which vulkan.h depends @@ -97,12 +100,13 @@ vk.json: tojson.py vk.xml ################################################ # Documentation targets -readme.pdf: readme.tex Makefile +$(OUTDIR)/readme.pdf: readme.tex Makefile touch readme.ind pdflatex readme.tex pdflatex readme.tex makeindex readme.idx pdflatex readme.tex + mv readme.pdf $@ ################################################ @@ -128,6 +132,7 @@ clean: # (installed header & asciidoc includes) clobber: clean -rm -f $(HEADERS) $(DOCINCLUDES) + -rm -f $(OUTDIR)/readme.pdf -rm -f $(DOCROOT)/vkapi.py -rm -f $(DOCROOT)/structs/*.txt $(DOCROOT)/protos/*.txt -rm -f $(DOCROOT)/enums/*.txt $(DOCROOT)/flags/*.txt diff --git a/src/spec/readme.pdf b/src/spec/readme.pdf deleted file mode 100644 index 14f8f22e..00000000 --- a/src/spec/readme.pdf +++ /dev/null @@ -1,5285 +0,0 @@ -%PDF-1.5 -% -1 0 obj -<< /S /GoTo /D (section.1) >> -endobj -4 0 obj -(1 Introduction) -endobj -5 0 obj -<< /S /GoTo /D (subsection.1.1) >> -endobj -8 0 obj -(1.1 Schema Choices) -endobj -9 0 obj -<< /S /GoTo /D (section.2) >> -endobj -12 0 obj -(2 Getting Started) -endobj -13 0 obj -<< /S /GoTo /D (subsection.2.1) >> -endobj -16 0 obj -(2.1 Header Generation Script - genvk.py) -endobj -17 0 obj -<< /S /GoTo /D (subsection.2.2) >> -endobj -20 0 obj -(2.2 Registry Processing Script - reg.py) -endobj -21 0 obj -<< /S /GoTo /D (subsection.2.3) >> -endobj -24 0 obj -(2.3 Output Generator Script - generator.py) -endobj -25 0 obj -<< /S /GoTo /D (section.3) >> -endobj -28 0 obj -(3 Vulkan Registry Schema) -endobj -29 0 obj -<< /S /GoTo /D (subsection.3.1) >> -endobj -32 0 obj -(3.1 Profiles) -endobj -33 0 obj -<< /S /GoTo /D (subsection.3.2) >> -endobj -36 0 obj -(3.2 API Names) -endobj -37 0 obj -<< /S /GoTo /D (section.4) >> -endobj -40 0 obj -(4 Registry Root \( tag\)) -endobj -41 0 obj -<< /S /GoTo /D (subsection.4.1) >> -endobj -44 0 obj -(4.1 Attributes of tags) -endobj -45 0 obj -<< /S /GoTo /D (subsection.4.2) >> -endobj -48 0 obj -(4.2 Contents of tags) -endobj -49 0 obj -<< /S /GoTo /D (section.5) >> -endobj -52 0 obj -(5 Vendor IDs \( tag\)) -endobj -53 0 obj -<< /S /GoTo /D (subsection.5.1) >> -endobj -56 0 obj -(5.1 Attributes of tags) -endobj -57 0 obj -<< /S /GoTo /D (section.6) >> -endobj -60 0 obj -(6 Author Prefixes \( tag\)) -endobj -61 0 obj -<< /S /GoTo /D (subsection.6.1) >> -endobj -64 0 obj -(6.1 Attributes of tags) -endobj -65 0 obj -<< /S /GoTo /D (section.7) >> -endobj -68 0 obj -(7 API types \( tag\)) -endobj -69 0 obj -<< /S /GoTo /D (subsection.7.1) >> -endobj -72 0 obj -(7.1 Attributes of tags) -endobj -73 0 obj -<< /S /GoTo /D (subsection.7.2) >> -endobj -76 0 obj -(7.2 Contents of tags) -endobj -77 0 obj -<< /S /GoTo /D (subsubsection.7.2.1) >> -endobj -80 0 obj -(7.2.1 Enumerated types - category "enum") -endobj -81 0 obj -<< /S /GoTo /D (subsubsection.7.2.2) >> -endobj -84 0 obj -(7.2.2 Structure types - category "struct" or "union") -endobj -85 0 obj -<< /S /GoTo /D (section*.2) >> -endobj -88 0 obj -(Structure member \(\) tags) -endobj -89 0 obj -<< /S /GoTo /D (section*.3) >> -endobj -92 0 obj -(Attributes of tags) -endobj -93 0 obj -<< /S /GoTo /D (section*.4) >> -endobj -96 0 obj -(Contents of tags) -endobj -97 0 obj -<< /S /GoTo /D (section*.5) >> -endobj -100 0 obj -(Validation \(\) tags) -endobj -101 0 obj -<< /S /GoTo /D (section*.6) >> -endobj -104 0 obj -(Contents of tags) -endobj -105 0 obj -<< /S /GoTo /D (subsubsection.7.2.3) >> -endobj -108 0 obj -(7.2.3 All other types) -endobj -109 0 obj -<< /S /GoTo /D (subsection.7.3) >> -endobj -112 0 obj -(7.3 Example of a tag) -endobj -113 0 obj -<< /S /GoTo /D (section.8) >> -endobj -116 0 obj -(8 Enumerant Blocks \( tag\)) -endobj -117 0 obj -<< /S /GoTo /D (subsection.8.1) >> -endobj -120 0 obj -(8.1 Attributes of tags) -endobj -121 0 obj -<< /S /GoTo /D (subsection.8.2) >> -endobj -124 0 obj -(8.2 Contents of tags) -endobj -125 0 obj -<< /S /GoTo /D (subsection.8.3) >> -endobj -128 0 obj -(8.3 Example of tags) -endobj -129 0 obj -<< /S /GoTo /D (section.9) >> -endobj -132 0 obj -(9 Enumerants \( tag\)) -endobj -133 0 obj -<< /S /GoTo /D (subsection.9.1) >> -endobj -136 0 obj -(9.1 Attributes of tags) -endobj -137 0 obj -<< /S /GoTo /D (subsection.9.2) >> -endobj -140 0 obj -(9.2 Contents of tags) -endobj -141 0 obj -<< /S /GoTo /D (section.10) >> -endobj -144 0 obj -(10 Unused Enumerants \( tag\)) -endobj -145 0 obj -<< /S /GoTo /D (subsection.10.1) >> -endobj -148 0 obj -(10.1 Attributes of tags) -endobj -149 0 obj -<< /S /GoTo /D (subsection.10.2) >> -endobj -152 0 obj -(10.2 Contents of tags) -endobj -153 0 obj -<< /S /GoTo /D (section.11) >> -endobj -156 0 obj -(11 Command Blocks \( tag\)) -endobj -157 0 obj -<< /S /GoTo /D (subsection.11.1) >> -endobj -160 0 obj -(11.1 Attributes of tags) -endobj -161 0 obj -<< /S /GoTo /D (subsection.11.2) >> -endobj -164 0 obj -(11.2 Contents of tags) -endobj -165 0 obj -<< /S /GoTo /D (section.12) >> -endobj -168 0 obj -(12 Commands \( tag\)) -endobj -169 0 obj -<< /S /GoTo /D (subsection.12.1) >> -endobj -172 0 obj -(12.1 Attributes of tags) -endobj -173 0 obj -<< /S /GoTo /D (subsection.12.2) >> -endobj -176 0 obj -(12.2 Contents of tags) -endobj -177 0 obj -<< /S /GoTo /D (subsection.12.3) >> -endobj -180 0 obj -(12.3 Command prototype \( tags\)) -endobj -181 0 obj -<< /S /GoTo /D (subsubsection.12.3.1) >> -endobj -184 0 obj -(12.3.1 Attributes of tags) -endobj -185 0 obj -<< /S /GoTo /D (subsubsection.12.3.2) >> -endobj -188 0 obj -(12.3.2 Contents of tags) -endobj -189 0 obj -<< /S /GoTo /D (subsection.12.4) >> -endobj -192 0 obj -(12.4 Command parameter \( tags\)) -endobj -193 0 obj -<< /S /GoTo /D (subsubsection.12.4.1) >> -endobj -196 0 obj -(12.4.1 Attributes of tags) -endobj -197 0 obj -<< /S /GoTo /D (subsubsection.12.4.2) >> -endobj -200 0 obj -(12.4.2 Contents of tags) -endobj -201 0 obj -<< /S /GoTo /D (subsection.12.5) >> -endobj -204 0 obj -(12.5 Example of a tag) -endobj -205 0 obj -<< /S /GoTo /D (subsection.12.6) >> -endobj -208 0 obj -(12.6 Parameter validation \(\) tags) -endobj -209 0 obj -<< /S /GoTo /D (section*.7) >> -endobj -212 0 obj -(Contents of tags) -endobj -213 0 obj -<< /S /GoTo /D (section.13) >> -endobj -216 0 obj -(13 API Features / Versions \( tag\)) -endobj -217 0 obj -<< /S /GoTo /D (subsection.13.1) >> -endobj -220 0 obj -(13.1 Attributes of tags) -endobj -221 0 obj -<< /S /GoTo /D (subsection.13.2) >> -endobj -224 0 obj -(13.2 Contents of tags) -endobj -225 0 obj -<< /S /GoTo /D (subsection.13.3) >> -endobj -228 0 obj -(13.3 Example of a tag) -endobj -229 0 obj -<< /S /GoTo /D (section.14) >> -endobj -232 0 obj -(14 Extension Blocks \( tag\)) -endobj -233 0 obj -<< /S /GoTo /D (subsection.14.1) >> -endobj -236 0 obj -(14.1 Attributes of tags) -endobj -237 0 obj -<< /S /GoTo /D (subsection.14.2) >> -endobj -240 0 obj -(14.2 Contents of tags) -endobj -241 0 obj -<< /S /GoTo /D (section.15) >> -endobj -244 0 obj -(15 API Extensions \( tag\)) -endobj -245 0 obj -<< /S /GoTo /D (subsection.15.1) >> -endobj -248 0 obj -(15.1 Attributes of tags) -endobj -249 0 obj -<< /S /GoTo /D (subsection.15.2) >> -endobj -252 0 obj -(15.2 Contents of tags) -endobj -253 0 obj -<< /S /GoTo /D (subsection.15.3) >> -endobj -256 0 obj -(15.3 Example of an tag) -endobj -257 0 obj -<< /S /GoTo /D (section.16) >> -endobj -260 0 obj -(16 Required and Removed Interfaces \( and tags\)) -endobj -261 0 obj -<< /S /GoTo /D (subsection.16.1) >> -endobj -264 0 obj -(16.1 Attributes of and tags) -endobj -265 0 obj -<< /S /GoTo /D (subsection.16.2) >> -endobj -268 0 obj -(16.2 Contents of and tags) -endobj -269 0 obj -<< /S /GoTo /D (subsection.16.3) >> -endobj -272 0 obj -(16.3 Examples of Extension Enumerants) -endobj -273 0 obj -<< /S /GoTo /D (appendix.A) >> -endobj -276 0 obj -(A Examples / FAQ / How Do I?) -endobj -277 0 obj -<< /S /GoTo /D (subsection.A.1) >> -endobj -280 0 obj -(A.1 General Strategy) -endobj -281 0 obj -<< /S /GoTo /D (subsection.A.2) >> -endobj -284 0 obj -(A.2 API Feature Dependencies) -endobj -285 0 obj -<< /S /GoTo /D (subsubsection.A.2.1) >> -endobj -288 0 obj -(A.2.1 API Feature Walkthrough) -endobj -289 0 obj -<< /S /GoTo /D (subsection.A.3) >> -endobj -292 0 obj -(A.3 How To Add A Compile-Time Constant) -endobj -293 0 obj -<< /S /GoTo /D (subsection.A.4) >> -endobj -296 0 obj -(A.4 How To Add A Struct or Union Type) -endobj -297 0 obj -<< /S /GoTo /D (subsection.A.5) >> -endobj -300 0 obj -(A.5 How To Add An Enumerated Type) -endobj -301 0 obj -<< /S /GoTo /D (subsection.A.6) >> -endobj -304 0 obj -(A.6 How to Add A Command) -endobj -305 0 obj -<< /S /GoTo /D (subsection.A.7) >> -endobj -308 0 obj -(A.7 More Complicated API Representations) -endobj -309 0 obj -<< /S /GoTo /D (subsection.A.8) >> -endobj -312 0 obj -(A.8 More Complicated Output Formats And Other Languages) -endobj -313 0 obj -<< /S /GoTo /D (subsection.A.9) >> -endobj -316 0 obj -(A.9 Additional Semantic Tagging) -endobj -317 0 obj -<< /S /GoTo /D (subsection.A.10) >> -endobj -320 0 obj -(A.10 Stability of the XML Database and Schema) -endobj -321 0 obj -<< /S /GoTo /D (appendix.B) >> -endobj -324 0 obj -(B Change Log) -endobj -325 0 obj -<< /S /GoTo /D [326 0 R /Fit] >> -endobj -348 0 obj << -/Length 1414 -/Filter /FlateDecode ->> -stream -xXmo6_20|)q(d閥Ͷ">(c %C(RyYЭGcoah\G"D ŕGPxp$_,oWUY0߬~; 5#_浮nUYN䜶Cq{Q,t+6/`:va2A1sL甚w #)Dk~HQe+ || $>:Lv3Y6UE%3UU~ܤna03LZab3LJmfO̎n2B ĝj7y֊үˍa?ɲ\eL^7ehbiGЩ53'!`V;KU -\jLB\[3@N"FhZ̢fLUvtmL6k?Nw#2oԷno֧y^R*0rᣩMx^^ضt6߭~UinNI#lTJUH)dj4 86{[Eflhַ։!vz͇_(3u6H>:Om4׫*;4{^{;NmΑ0 )㌕|i r3g$ҧlfZ˴Sc@#wĈDF*]٩k3v%q& bm8ЏLAV3pƻE,B٭"]!=a!)h8) DW;$L>pN 3p1Y-YnάΫGG]d~lيX޷Di!:YyjӚ&e@o2 w8$1ةT'^㱠~Tk87N핑wl?p1OE<\87h{ۇn!md_X"Gc訃.sJz(DLP1?$A o| #s0{UG#1D=b`5 -J$"' bwv0#&"c2Rzx+_,ǎIWoɦܚ_./Х~\ODgWD%LNp$9a$Ʊ?Cb;3 -B꾈=d[ s9/"A#B.$ _#)7p#.F1_Ywu9U_ѼiwY=s19NȦ9GQnvuVؔ{dpxp(h]lʔC&<'{ S(ZF?. xݦBAmɯ6TF񁿛WWg 8ZJ -endstream -endobj -326 0 obj << -/Type /Page -/Contents 348 0 R -/Resources 347 0 R -/MediaBox [0 0 612 792] -/Parent 356 0 R -/Annots [ 327 0 R 328 0 R 329 0 R 330 0 R 331 0 R 332 0 R 333 0 R 334 0 R 335 0 R 336 0 R 337 0 R 338 0 R 339 0 R 340 0 R 341 0 R 342 0 R 343 0 R ] ->> endobj -327 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [213.338 436.348 397.91 446.343] -/Subtype/Link/A<> ->> endobj -328 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 365.207 478.476 374.203] -/A << /S /GoTo /D (section.1) >> ->> endobj -329 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 353.252 478.476 362.178] -/A << /S /GoTo /D (subsection.1.1) >> ->> endobj -330 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 331.473 478.476 340.33] -/A << /S /GoTo /D (section.2) >> ->> endobj -331 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 319.379 478.476 328.305] -/A << /S /GoTo /D (subsection.2.1) >> ->> endobj -332 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 307.423 478.476 316.35] -/A << /S /GoTo /D (subsection.2.2) >> ->> endobj -333 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 295.468 478.476 304.395] -/A << /S /GoTo /D (subsection.2.3) >> ->> endobj -334 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 273.55 478.476 282.547] -/A << /S /GoTo /D (section.3) >> ->> endobj -335 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 261.595 478.476 270.522] -/A << /S /GoTo /D (subsection.3.1) >> ->> endobj -336 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 249.64 478.476 258.566] -/A << /S /GoTo /D (subsection.3.2) >> ->> endobj -337 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 227.722 478.476 236.718] -/A << /S /GoTo /D (section.4) >> ->> endobj -338 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 215.767 478.476 224.693] -/A << /S /GoTo /D (subsection.4.1) >> ->> endobj -339 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 203.877 478.476 212.599] -/A << /S /GoTo /D (subsection.4.2) >> ->> endobj -340 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 182.034 478.476 190.726] -/A << /S /GoTo /D (section.5) >> ->> endobj -341 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 170.004 478.476 178.726] -/A << /S /GoTo /D (subsection.5.1) >> ->> endobj -342 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 148.161 478.476 156.853] -/A << /S /GoTo /D (section.6) >> ->> endobj -343 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 136.066 478.476 144.992] -/A << /S /GoTo /D (subsection.6.1) >> ->> endobj -349 0 obj << -/D [326 0 R /XYZ 132.768 705.06 null] ->> endobj -350 0 obj << -/D [326 0 R /XYZ 133.768 667.198 null] ->> endobj -354 0 obj << -/D [326 0 R /XYZ 133.768 406.542 null] ->> endobj -347 0 obj << -/Font << /F40 351 0 R /F42 352 0 R /F44 353 0 R /F48 355 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -398 0 obj << -/Length 1387 -/Filter /FlateDecode ->> -stream -xMoF7p._ <b@0DG,\g4R=S~')ȍ~O>` ,$LZԪ_ѤVyu=\ԀIŒFQ!zƌGHr°WpMl~d]ׅl <6Hcǧe Ecͬ#Mb^ey^Zn1Ki&ȑsbs-!fKjb,}з_ʳ>%t+OJe58Ws=_lp/Q^A$h"4)Ӡ9ZLhXhe.EIg`Ⲹ3s qϴ|hU/_ -wu?^5>8Y{߁@'k~K{hBUu ,Q Sd˫{ -endstream -endobj -397 0 obj << -/Type /Page -/Contents 398 0 R -/Resources 396 0 R -/MediaBox [0 0 612 792] -/Parent 356 0 R -/Annots [ 344 0 R 345 0 R 346 0 R 357 0 R 358 0 R 359 0 R 360 0 R 361 0 R 362 0 R 363 0 R 364 0 R 365 0 R 366 0 R 367 0 R 368 0 R 369 0 R 370 0 R 371 0 R 372 0 R 373 0 R 374 0 R 375 0 R 376 0 R 377 0 R 378 0 R 379 0 R 380 0 R 381 0 R 382 0 R 383 0 R 384 0 R 385 0 R 386 0 R 387 0 R 388 0 R 389 0 R 390 0 R 391 0 R 392 0 R 393 0 R 394 0 R ] ->> endobj -344 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 656.1 478.476 665.096] -/A << /S /GoTo /D (section.7) >> ->> endobj -345 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 644.145 478.476 653.071] -/A << /S /GoTo /D (subsection.7.1) >> ->> endobj -346 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 632.11 478.476 641.116] -/A << /S /GoTo /D (subsection.7.2) >> ->> endobj -357 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 620.154 478.476 629.161] -/A << /S /GoTo /D (subsubsection.7.2.1) >> ->> endobj -358 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 608.199 478.476 617.205] -/A << /S /GoTo /D (subsubsection.7.2.2) >> ->> endobj -359 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 596.244 478.476 605.25] -/A << /S /GoTo /D (section*.2) >> ->> endobj -360 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 584.289 478.476 593.295] -/A << /S /GoTo /D (section*.3) >> ->> endobj -361 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 572.414 478.476 581.34] -/A << /S /GoTo /D (section*.4) >> ->> endobj -362 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 560.458 478.476 569.385] -/A << /S /GoTo /D (section*.5) >> ->> endobj -363 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 548.503 478.476 557.43] -/A << /S /GoTo /D (section*.6) >> ->> endobj -364 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 536.548 478.476 545.474] -/A << /S /GoTo /D (subsubsection.7.2.3) >> ->> endobj -365 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 524.732 478.476 533.519] -/A << /S /GoTo /D (subsection.7.3) >> ->> endobj -366 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 502.814 478.476 511.671] -/A << /S /GoTo /D (section.8) >> ->> endobj -367 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 490.859 478.476 499.646] -/A << /S /GoTo /D (subsection.8.1) >> ->> endobj -368 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 478.904 478.476 487.691] -/A << /S /GoTo /D (subsection.8.2) >> ->> endobj -369 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 466.949 478.476 475.736] -/A << /S /GoTo /D (subsection.8.3) >> ->> endobj -370 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 444.892 478.476 453.888] -/A << /S /GoTo /D (section.9) >> ->> endobj -371 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 432.937 478.476 441.863] -/A << /S /GoTo /D (subsection.9.1) >> ->> endobj -372 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 420.981 478.476 429.908] -/A << /S /GoTo /D (subsection.9.2) >> ->> endobj -373 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 399.064 478.476 408.06] -/A << /S /GoTo /D (section.10) >> ->> endobj -374 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 387.108 478.476 396.035] -/A << /S /GoTo /D (subsection.10.1) >> ->> endobj -375 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 375.293 478.476 384.08] -/A << /S /GoTo /D (subsection.10.2) >> ->> endobj -376 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 353.375 478.476 362.232] -/A << /S /GoTo /D (section.11) >> ->> endobj -377 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 341.42 478.476 350.207] -/A << /S /GoTo /D (subsection.11.1) >> ->> endobj -378 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 329.465 478.476 338.251] -/A << /S /GoTo /D (subsection.11.2) >> ->> endobj -379 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 307.547 478.476 316.403] -/A << /S /GoTo /D (section.12) >> ->> endobj -380 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 295.592 478.476 304.378] -/A << /S /GoTo /D (subsection.12.1) >> ->> endobj -381 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 283.497 478.476 292.423] -/A << /S /GoTo /D (subsection.12.2) >> ->> endobj -382 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 271.542 478.476 280.468] -/A << /S /GoTo /D (subsection.12.3) >> ->> endobj -383 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 259.587 478.476 268.513] -/A << /S /GoTo /D (subsubsection.12.3.1) >> ->> endobj -384 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 247.631 478.476 256.558] -/A << /S /GoTo /D (subsubsection.12.3.2) >> ->> endobj -385 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 235.676 478.476 244.603] -/A << /S /GoTo /D (subsection.12.4) >> ->> endobj -386 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 223.721 478.476 232.647] -/A << /S /GoTo /D (subsubsection.12.4.1) >> ->> endobj -387 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 211.766 478.476 220.692] -/A << /S /GoTo /D (subsubsection.12.4.2) >> ->> endobj -388 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 199.876 478.476 208.737] -/A << /S /GoTo /D (subsection.12.5) >> ->> endobj -389 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 187.92 478.476 196.782] -/A << /S /GoTo /D (subsection.12.6) >> ->> endobj -390 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 175.965 478.476 184.827] -/A << /S /GoTo /D (section*.7) >> ->> endobj -391 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 154.122 478.476 162.979] -/A << /S /GoTo /D (section.13) >> ->> endobj -392 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 142.092 478.476 150.954] -/A << /S /GoTo /D (subsection.13.1) >> ->> endobj -393 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 130.072 478.476 138.999] -/A << /S /GoTo /D (subsection.13.2) >> ->> endobj -394 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 118.117 478.476 127.043] -/A << /S /GoTo /D (subsection.13.3) >> ->> endobj -399 0 obj << -/D [397 0 R /XYZ 132.768 705.06 null] ->> endobj -396 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -425 0 obj << -/Length 1844 -/Filter /FlateDecode ->> -stream -xYYs6~#9Itq'MǙz$})X"U>})J9Ic;/ ow!<vkNG$0eb4>zcwr[JSY\U 3 ą=qCGjT?(%:PA<*g#9{s08&2)Z9UEB.v(7=E@2lCRۀm5alH-Eh;#H {ܾ!>& L)`JBk}xke,Bozf^6d%[z`m% _kڃ>,,C)d˓xTi|ȿ !csLAܢ" ڒv3o> =5mt3(|kӾ} \^ƉnDJDf5DnB"v^}@\ [ò0bnDI8)(7ED0"d>"6_L o哃W ^Ϊ:n'yPelN!>9ȑs䏃 @6|}mWC7UIZ]]njGxBzoTǑٕ2O7Ǒ J:?6xN$GG4f]ZuS.cS`u8 \=E`8漎/,8LݩKbWj<I/^y[`+ys^i1q!C,64 t%+Aq] &S:FoؤIThI镶H#Me< zqn[shvr>b֭?@xMv~ LM)fʺ~I[6;}vQUI.>[ptdxsԑzEwYOn~&TYنv+wS>1oa?t%܃GgPwieMȵqNmzX?׸e4Oƀgg5TO+jo{Bw.센p -4KCh jxƼK׮FNGcƚ,0k~tg̀sxX9t` UzF!S5x k-i -#F+(jq΢-u2otĸP4"6E1UvL##"#d #Nzq29[ -endstream -endobj -424 0 obj << -/Type /Page -/Contents 425 0 R -/Resources 423 0 R -/MediaBox [0 0 612 792] -/Parent 356 0 R -/Annots [ 395 0 R 400 0 R 401 0 R 402 0 R 403 0 R 404 0 R 405 0 R 406 0 R 407 0 R 408 0 R 409 0 R 410 0 R 411 0 R 412 0 R 413 0 R 414 0 R 415 0 R 416 0 R 417 0 R 418 0 R 419 0 R 420 0 R 421 0 R 422 0 R ] ->> endobj -395 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 656.1 478.476 665.096] -/A << /S /GoTo /D (section.14) >> ->> endobj -400 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 644.065 478.476 653.071] -/A << /S /GoTo /D (subsection.14.1) >> ->> endobj -401 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 632.11 478.476 641.116] -/A << /S /GoTo /D (subsection.14.2) >> ->> endobj -402 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 610.272 478.476 619.268] -/A << /S /GoTo /D (section.15) >> ->> endobj -403 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 598.237 478.476 607.243] -/A << /S /GoTo /D (subsection.15.1) >> ->> endobj -404 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 586.361 478.476 595.288] -/A << /S /GoTo /D (subsection.15.2) >> ->> endobj -405 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 574.406 478.476 583.332] -/A << /S /GoTo /D (subsection.15.3) >> ->> endobj -406 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 552.628 478.476 561.484] -/A << /S /GoTo /D (section.16) >> ->> endobj -407 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 540.672 478.476 549.459] -/A << /S /GoTo /D (subsection.16.1) >> ->> endobj -408 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 528.717 478.476 537.504] -/A << /S /GoTo /D (subsection.16.2) >> ->> endobj -409 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 516.623 478.476 525.549] -/A << /S /GoTo /D (subsection.16.3) >> ->> endobj -410 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 494.78 478.476 503.701] -/A << /S /GoTo /D (appendix.A) >> ->> endobj -411 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 482.75 478.476 491.676] -/A << /S /GoTo /D (subsection.A.1) >> ->> endobj -412 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 470.795 478.476 479.721] -/A << /S /GoTo /D (subsection.A.2) >> ->> endobj -413 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 458.839 478.476 467.766] -/A << /S /GoTo /D (subsubsection.A.2.1) >> ->> endobj -414 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 446.884 478.476 455.811] -/A << /S /GoTo /D (subsection.A.3) >> ->> endobj -415 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 434.929 478.476 443.855] -/A << /S /GoTo /D (subsection.A.4) >> ->> endobj -416 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 422.974 478.476 431.9] -/A << /S /GoTo /D (subsection.A.5) >> ->> endobj -417 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 411.019 478.476 419.945] -/A << /S /GoTo /D (subsection.A.6) >> ->> endobj -418 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 399.064 478.476 407.99] -/A << /S /GoTo /D (subsection.A.7) >> ->> endobj -419 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 387.108 478.476 396.035] -/A << /S /GoTo /D (subsection.A.8) >> ->> endobj -420 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 375.153 478.476 384.08] -/A << /S /GoTo /D (subsection.A.9) >> ->> endobj -421 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 363.198 478.476 372.124] -/A << /S /GoTo /D (subsection.A.10) >> ->> endobj -422 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 341.28 478.476 350.276] -/A << /S /GoTo /D (appendix.B) >> ->> endobj -426 0 obj << -/D [424 0 R /XYZ 132.768 705.06 null] ->> endobj -2 0 obj << -/D [424 0 R /XYZ 133.768 324.698 null] ->> endobj -6 0 obj << -/D [424 0 R /XYZ 133.768 163.562 null] ->> endobj -423 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -430 0 obj << -/Length 2163 -/Filter /FlateDecode ->> -stream -xڥXK6Wfʢ~lNٱ3卝f(C,o7IQz>4Ѝ~|ݠ:+{!V'Aۯ0t$[%qaV8jM![֛ DN%ʦ #UiAkjADuzYA{dWy3 -(D;޾dz܋$WwdMlyAÒIDF|RrǼ?w^q!0)Y*̝C/ -Ӝh z8-Q;a0m|쥙f@@bM1M;8"uQM{[d0a(%<ʦ!XQrsR\e3T6 hZ5ju%olY\\1M_jo/kĈ9Oyw=29qN2kRD3Rx<GY"X s:,pAV6wi.gN&v҂!Rp k ~!]X,ًX Пtqo-4G0TyV?zF.3_ʏ|7KQýtl6dK6Z4{m؂-v +b˒ ήQ e1TNڱLI $OaKL2;{: a@QhqY//ʅ|#_+?+m Ge 0r0RX'Ī5+0?ֽj~͘:go>;'0gT!o$4%5az ԦRE;}G|Q>Vcqqٳ6aZP^Iz{d0c_ tpA ;kJП1=)p(h6Qo`>vx'm:b>XH?B5 h={AzVXaފp837"ݳffjӰK{~tQ WgO_&T9OD|FgHtvg3Xp G77⯸hKuv˗{)X0ܦYn,:/0WMWR~4j|w4|ϰUP?j h鷫=Щ~WϰZ[`XX H.GYJXe[h:p5͉S(S!^B?Ky6YAYùz1 ڐNT?cAbៅO6t2]pj$R\dxf\)g~|T=o)d -jR-w߿nS; 6uٱwe_6`գ \W˒DQnt/ew_9vSY;A>؆f=(*;zN?C|\v`ر$@&EX0:s 4_C9qxt54ZGێy;zZxƾrR }sunOi@]pC=b٨8>U΅T1sxLAzbǻW(| -endstream -endobj -429 0 obj << -/Type /Page -/Contents 430 0 R -/Resources 428 0 R -/MediaBox [0 0 612 792] -/Parent 356 0 R -/Annots [ 427 0 R ] ->> endobj -427 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [189.63 488.832 421.617 499.716] -/Subtype/Link/A<> ->> endobj -431 0 obj << -/D [429 0 R /XYZ 132.768 705.06 null] ->> endobj -10 0 obj << -/D [429 0 R /XYZ 133.768 428.179 null] ->> endobj -428 0 obj << -/Font << /F40 351 0 R /F48 355 0 R /F42 352 0 R /F14 432 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -436 0 obj << -/Length 2701 -/Filter /FlateDecode ->> -stream -xڝY[۶~[ -4;iӉ;$b[ ,bBrw>x|@RF*=v~W(=^~/X8;t`~+JD؇DZb.7 }-7+~Ȫw+G)JDc@/X .t fI'jq0iGô0PY䡱ϋ}flj~skF~߱ԎUe -PeG-k8NݙΠ3>NUI0CϦB|@N tmaKϼRUiC|AXg^@˝ =:xH)MN#?!_~*݌1}_)r$KꖐNH8p t#6t,(?x9}!U{BH՜:sBIu\5no 0OOF5THuLcoDv+ð[c}]/U ,ftN%z&[X9~q4\;SNr|@fW:v݈ZbXn,CAKRJ'<weka낫"[zY)"@j}FK0nVH߾#-$ -BmtV<2_Y^uvYvM\vLv%m뒈< -Lm+YO{{=?H[~}?)8/\In]ګ `6˦^IMPz:S)%?D6COj^ŘG;ŝ y+2+nŝWry{0݉*hNYj/sDeګ+5LKK⪺=b+UF"ov佫؈pv$YԄlTލ;0` A9b:y|s8ǡG#>m +0nQ~W wfd* -47~~"'\-ײTYS\r2uHn2;x[\98a+~П^Ot0XQWwMەҖuKJE9?NHp//8w -endstream -endobj -435 0 obj << -/Type /Page -/Contents 436 0 R -/Resources 434 0 R -/MediaBox [0 0 612 792] -/Parent 356 0 R -/Annots [ 433 0 R ] ->> endobj -433 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [270.883 318.555 280.068 329.498] -/A << /S /GoTo /D (appendix.A) >> ->> endobj -437 0 obj << -/D [435 0 R /XYZ 132.768 705.06 null] ->> endobj -14 0 obj << -/D [435 0 R /XYZ 133.768 245.365 null] ->> endobj -434 0 obj << -/Font << /F40 351 0 R /F48 355 0 R /F14 432 0 R /F42 352 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -440 0 obj << -/Length 1884 -/Filter /FlateDecode ->> -stream -xڝXݏ6 _Gh4Ke8 }hŀu:GI:k)Ҏ}{I((~H97Ջy/ZmYa#H$&ݘ8*77_jaܱ~Sqm2 u]Qi}MOnopB8!BTH[w=3LdFۍ; -s :ɂATR*#Q,RcF(1 >DuۢmUme֖R9lٳOgug u*TWvS~ʀ(Ai /}k~STk[ !7qxCh'N]KsGW-{&R훓knv̂>3RM}gDaJAә7u/%Xt8hS6"eV];ZZ0h|z!HRtL7+27쳲h%c_Kgț*{ȌM;>qqbn _DQrk=*KDqC^ڎOۻa*g%(!yU -fK 3 =Q}Myl76Ш] #y _?&a&L> ڞ鬗PLi:95!aO㐞Tlk)bMpibEG(k;`>QGQJ5xˬ4> - -5ŗ(A}8y-[ˣ8;Am'[9(xqm_%&ݨQã}01#N9^'o&gB杍ï-JF]g IQ+KPH! -Qm=E"R'4X'xACF^ULD97Y[@xQh^j]|#NWő)C-tfA?GIS }&b_h*~}aK2Kۏ/nX'H/!QOzt7,!7lMMj<~W@p]"le6`p -endstream -endobj -439 0 obj << -/Type /Page -/Contents 440 0 R -/Resources 438 0 R -/MediaBox [0 0 612 792] -/Parent 356 0 R ->> endobj -441 0 obj << -/D [439 0 R /XYZ 132.768 705.06 null] ->> endobj -18 0 obj << -/D [439 0 R /XYZ 133.768 667.198 null] ->> endobj -22 0 obj << -/D [439 0 R /XYZ 133.768 585.963 null] ->> endobj -26 0 obj << -/D [439 0 R /XYZ 133.768 513.734 null] ->> endobj -30 0 obj << -/D [439 0 R /XYZ 133.768 399.188 null] ->> endobj -34 0 obj << -/D [439 0 R /XYZ 133.768 316.125 null] ->> endobj -38 0 obj << -/D [439 0 R /XYZ 133.768 222.028 null] ->> endobj -42 0 obj << -/D [439 0 R /XYZ 133.768 165.809 null] ->> endobj -438 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -451 0 obj << -/Length 1928 -/Filter /FlateDecode ->> -stream -xXK6WVX1$%Q4 H94ۃ֦m!Rf;álq-:)z#r8͓OV>yW/^D)%'WˉC$V \-&@pΧoU^HG)U0zU4ٽruIٓqD|,1"Yd0SKzi8 }78Ȗ]|hJ4XeYϤ~)_̂HӪ6,wD[TE_Іez πgTbrQ}7%hmmڼj8=w"CD,"88aYdqEr{}TjD*f2k. PyQ9hMnv4mL]{AӦC[>z;|3j޴y{x{8~{ouMh^'vӢ2:by[ԕ)Ĭ&4ɩ#\V_צnQx='DW37ō^BU\c݃C w4x{v v w{8KԴ+??z^9 -a5N)jD`'HQr(>A -3 Lxkޝգ5-{2g$NQV=^)%Y -fi0 -L-`-sxX>n@3 -YC3Dv[=(bacУF`9!F`gg<Ϧb:+p )E 2g3)2;Y-g 2g *$8ȝl)H7҅36]AwxePQ, -HA#;ZUO'V4GkZLμ6F¶DDB|n bvxy6pM0@fS>5vuJy3rs1u_9rYӞhen/"hW67eHmRJ!󣛳gPP&\.NHS+x2xرQEFDB* 3*ZAΔzUm(pQAz*6nٞ~3@{| L3d D"As`9RE~6쵳]@M1>]$}e]oUByM^M+o\zC0Bb&-Cx|dzCPTKlX{Sp-J}l[c6!r9*^-B(2nuN:Q)y -WUnݱ> endobj -442 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [273.718 587.508 280.692 598.063] -/A << /S /GoTo /D (section.5) >> ->> endobj -443 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [245.191 556.815 252.164 567.758] -/A << /S /GoTo /D (section.6) >> ->> endobj -444 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [251.257 514.555 258.231 525.499] -/A << /S /GoTo /D (section.7) >> ->> endobj -445 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [252.744 496.205 259.717 507.149] -/A << /S /GoTo /D (section.8) >> ->> endobj -446 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [272.057 441.99 284.012 452.934] -/A << /S /GoTo /D (section.11) >> ->> endobj -447 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [267.344 412.074 279.3 422.629] -/A << /S /GoTo /D (section.13) >> ->> endobj -448 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [283.54 381.381 295.495 392.325] -/A << /S /GoTo /D (section.14) >> ->> endobj -452 0 obj << -/D [450 0 R /XYZ 132.768 705.06 null] ->> endobj -46 0 obj << -/D [450 0 R /XYZ 133.768 667.198 null] ->> endobj -50 0 obj << -/D [450 0 R /XYZ 133.768 355.44 null] ->> endobj -54 0 obj << -/D [450 0 R /XYZ 133.768 277.469 null] ->> endobj -58 0 obj << -/D [450 0 R /XYZ 133.768 181.206 null] ->> endobj -449 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -456 0 obj << -/Length 2148 -/Filter /FlateDecode ->> -stream -xڵX[۸~ϯ 3DRP,`bQ}i KFT]pH]|t6Fp83CywpeJNDu*fav_fb0tq`L?id(U+Xlu^DIOT=RMQ]Rj>@A'a n2o^OqrMM耊3lB<_ KMۙO?`Ǭn4j QP65%yx]6o-!hR^#9^ )r_Mp6p3jNcUg2 A\~!28%dR- Õ!/{.v`G,,Z=-{Ǯ3`eۦcehD^M8+Z aB_ -nsch"cgq͢( :b")#HR ەr'v2(qn6W$ϑ~frb㇭uĒeb0 aB<ϴp^]$Og*TB+-Urɗr\uX2Re_>I1A-R 8CpIw.#%Ι5(|y>;-k@9^*GM^YVrln]r)gnh%=p o%ΜMml04ޟP2L@|`Gf[ke! 6*jZNaGb{r0amB.m(+ -{`Jiǹl]Dm\uۑ%(9Ppn -iR9 -qq9%a=ol6v$-!Ʒ=o#wSuAYa>[N:#qC AMg^9й;~V -„)wWjuԌE1"J(vBq`*\xiɟpytw9 Ƒ |&7ZєݎbK)=T~]0 ?S!(jsf-:ؒ:NWc 96 So!,{2-!#MSQZdE`hf3C - -oO&n3 )bzʣL_lav }k2_eM<C^|h$| -^ B -7^'a7,6t7g7Խf7\2 +TLQRd -qKiQ?ڪv ;3T9 >f>Z -B$PonoǺ*?3-cZarL91K P8lK|kBOqOPG}NpX{攃@itNcRFlJwHg|Y0hX:^^W+gO}_XqmY<AŕG!>`ޢ^QF[lLܕX2aj!ohAua%x45" {YvP [_5]Xn+dL&S:BbuWZ bڞ6N;`*dS1x -Kn/ ɇ%:wn?wz@a>71cTwA׹b yp7ad=g|@b{ġX~ˏh~nW9:E]ݖsi3֘^(4pfݶHDFa>vpeo(!I'S fc*#cr4qn ˯ +]kHe*,Qg_qDTxUVg7GmYih -^ɶu'en3kt;Jq#b߿ ֯ׄPH;5Y|x~ -endstream -endobj -455 0 obj << -/Type /Page -/Contents 456 0 R -/Resources 454 0 R -/MediaBox [0 0 612 792] -/Parent 453 0 R ->> endobj -457 0 obj << -/D [455 0 R /XYZ 132.768 705.06 null] ->> endobj -62 0 obj << -/D [455 0 R /XYZ 133.768 667.198 null] ->> endobj -66 0 obj << -/D [455 0 R /XYZ 133.768 533.788 null] ->> endobj -70 0 obj << -/D [455 0 R /XYZ 133.768 406.536 null] ->> endobj -454 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F14 432 0 R /F40 351 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -461 0 obj << -<<<<<<< HEAD -/Length 2179 -/Filter /FlateDecode ->> -stream -xڥXm6 -bzA6z@o8 ) -͵u%W~}g8ԛW,O(3> bnxly !Xf\/R,šIeŻ%tWk9_U_~?atE2k2־hG2ΛҖqv|,XfIk4i6{G -|XIbKv[wtUSWԶSy2$t*u9Ϩc8SBtmSXƱfF2#s2 :\hzNSaXMUMKv2i?ރͤdY&`2 ]!GLs?l:2Osl”T&xIRpt-K"JΩy ¦xE]1ɒ3qWoԫ6Ai&T -! I+ElWb Ak%Tn12H Nv3ez ~iɷԻ#Ǧ^ PlU&3HpK L\Y+&.F\QF(e:J0%xH W~ mf?,ޅi,z7.XK"Ԫ6GL%LLu9Uv_PHN+#=KeY*+ը,% P#7Z++k 0ݏ-ia+Ha5r-b?nir@2ʾ#cBFC\H˰Wƕ.}uX#t)\l4@ط=S8Ýk^cr3IHE:a*AV`6JqEl]|.9gܝ݊#Y^&T T0-dͦfYlJH*N[48,{с#I~SzsC2v|Y㲶˻/s<pLCp /HYw6PRpcc,M; R]vޏ33)Єɥ.p P,2mi読qĽVC7 ^8r~;蘖%Y򄻘B`0UJH.Mt^o0 у ]˂)(?OA"v\*:O E-*qA~DW5i|JC-Ͽ.VbSY[ -զ -V& dpJ1 -0Z_#?z_̵ȧ`. 54 ЌA )|,jFA ?!*ub/SM~sO>붮,E/wM/.po}5Ćw -P\H]{9%q -{sP~REo*6s)TYƎzԙ(3L*|S=51t4 @lM5`:qLC5W6~DGTQ)i|xYa.bPg_&zPo߼"L$C- >wVyHwE{P 9cS[weF/qըj.q'`bC -7# -K[ -_{]ҟ{zIXQŦ &ϴJw|p'`?e'NZc_`rIS-qښ~@Qm n#n\@|[e,#f]).L :.&S^ uq -======= -/Length 2224 -/Filter /FlateDecode ->> -stream -xڵX[~?B,z$@:iZӠdBNL\i3nIg7Y$H#{, 9% ~ex##}4عLOnD%槮iivuf>H)${3HNiNY+&ʐ.FPy]O%âsqb)H T)~ o#08?['bX(dH|\V *'h#_memWoЕ+fbеG*Z0bwbq@?qui8 2}; ;=rL[nfM1/X5}8hUv"pć h0Wp9)FZ;a7o`d7ojC>vAg y8ݠQP)=F.&PBJ&k\j| ,)i4ù+S>},$w&\~BG+cl(Z>iMRB1.H]]62[*v;`-U!H=oN7c;T=rJM BeD|M |?0qiuW;oNGvj0 mp3ZǐIدi|`R4t+`c7fd65NY@?`Mnhh ~7~zy)iGA,T"x ]OEoIe\G[xhQ8ؑ=)m~mogIx/F3)|CNTI6S8Om~.+1G.qpQ:U4*̷4I(0hjAI?b t9h턡X" ?J{6ak+Ѽ?h ->>>>>>> 1.0 -endstream -endobj -460 0 obj << -/Type /Page -/Contents 461 0 R -/Resources 459 0 R -/MediaBox [0 0 612 792] -/Parent 453 0 R -/Annots [ 458 0 R ] ->> endobj -458 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [370.623 566.287 377.597 577.23] -/A << /S /GoTo /D (section.8) >> ->> endobj -462 0 obj << -/D [460 0 R /XYZ 132.768 705.06 null] ->> endobj -74 0 obj << -/D [460 0 R /XYZ 133.768 667.198 null] ->> endobj -78 0 obj << -/D [460 0 R /XYZ 133.768 621.828 null] ->> endobj -82 0 obj << -/D [460 0 R /XYZ 133.768 540.757 null] ->> endobj -86 0 obj << -/D [460 0 R /XYZ 133.768 438.929 null] ->> endobj -90 0 obj << -/D [460 0 R /XYZ 133.768 400.449 null] ->> endobj -459 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -465 0 obj << -/Length 2181 -/Filter /FlateDecode ->> -stream -xڵXͯ _`/ 0Ȳ%Š@wNtzpl%1ة?5K9ؔLGRrs͟?Hç_#IEjټ7A$cBy)6~i}۫86?^ -%2P}b/7R$&9ۤbrtrowǷdk+{g+¥Jppim_LfUg" *>DL1?`eupQ_a*kl꥞!g4-цzMފ>LW^Ȋ=onN%yLJܫrKg/Yݗ9/@c}54K@$!d/ >Px qdF]n)DAVZ^YjeֽY'2?ϹSʲ(-مP2"1m1ZJD*|Q,bZC!2ʺ(󬷨YO 4hv`ʵFk&-pl8Sb)p).U?au4ߒ7 }Cnsk CY%32ܝbeiہٿYHr2$J:Cx${m8?IwY#:pk9-Xp<1=O<$! c OF<ߖXf"27ۥeNHoRDɍ񫲿VT4/`\Xcf'OsvZ0ؖ.O\*vPI$ -"Y.^q`uÄ ptksZz%vk.ڊ(LZ(5&ScKP'PeJ|m| -KӮ8"Y%+Z@!2BBmXp?v\˰r^,5ǵ K v,-~hԬDz^(ĞK[P3]-b=caRJޞfvsh3~et SMo^&8Y1;Q87#&1ax{h"E?4|G>" _vQ)3i6a e7p6>au, -[)~ &zgF5=[vwYMcདk:"zg5kop܍Pn.В(M5=c;f}Z!'EcX:ߵz YUQ.|MP@d9T f`9C֖B# z?Kmq=Ml'sISj(8sz\0T ǁ \fFWo=6ĕEVJFE]e%** -ceѕy DvuKg U- Iaq]s͕K_B:<20Ps_" X)q35Xo= -lz0f) cL]A?jɺ'G~ - ؗNXdMaBzBlS -d\uǦȆ*]4JiMqm##6Z(6-qG+"n~^:@<8]=opO413IjyCe='Ӎ?Tfnn ᎾD" |6x枬}sX4wW4q?(vus͎DFp6{.Z3Ŋ+^Oz c*e=>:*J ϊ0zљ. nT"t M [@ -endstream -endobj -464 0 obj << -/Type /Page -/Contents 465 0 R -/Resources 463 0 R -/MediaBox [0 0 612 792] -/Parent 453 0 R ->> endobj -466 0 obj << -/D [464 0 R /XYZ 132.768 705.06 null] ->> endobj -94 0 obj << -/D [464 0 R /XYZ 133.768 669.191 null] ->> endobj -98 0 obj << -/D [464 0 R /XYZ 133.768 518.292 null] ->> endobj -102 0 obj << -/D [464 0 R /XYZ 133.768 468.871 null] ->> endobj -106 0 obj << -/D [464 0 R /XYZ 133.768 406.384 null] ->> endobj -463 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -469 0 obj << -/Length 1173 -/Filter /FlateDecode ->> -stream -xڥW]o6}ϯ\&)fa[@h[,e,/}9t4Os=΁h~s1Bĉ@D1u6[;|g:No -fm~ͯH8$W^Qo˹e2)Oztm@Ca>\3t%urT]Ϸ?}<՞ ﷛:G\( " baޖflJG}Ɏ4JimXRiKCsOYpУY[!Jpw6]}"s͸牖ycYKpG{{!hzNEƺ̓/owOzZQ[D9RI>Mz]gqb 4+LWa~02s =fy<6͊ml:ehuSKh70-Hח[kjhc_ԄakK=wVޣ=. zUtq8^03r(L|:=Hl"% {a -endstream -endobj -468 0 obj << -/Type /Page -/Contents 469 0 R -/Resources 467 0 R -/MediaBox [0 0 612 792] -/Parent 453 0 R ->> endobj -470 0 obj << -/D [468 0 R /XYZ 132.768 705.06 null] ->> endobj -110 0 obj << -/D [468 0 R /XYZ 133.768 520.957 null] ->> endobj -467 0 obj << -/Font << /F14 432 0 R /F48 355 0 R /F40 351 0 R /F42 352 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -474 0 obj << -/Length 2153 -/Filter /FlateDecode ->> -stream -xڵXm6_a@E/pMdS]氠--T|_3Rl@?R3o݌~z">XdHTYLxgo.R&no:0$SJKMc,ۮM}ſsT"A -wB幽c{s(QO4ڪ9n>']a=l)yʔ,2Zׅ绢횇Ebq5_6lSДmM;+?:EE竅b^d -@MYΈBҶPML>[u{lnSѐD0mv[2y=+ |EpԊ[٦9&`b"01S,#b)8t:cfIDISg&HK1/@f0:k@j3'u48n5b!K# LXjtn>>3)6~lRס jU"&c2=.}O%)V\3"]WDi%ִA6Pk@O{ܳi ŀVzPT,QhV8Q8$턣;eх;K:7#gD*Xv(UжlǦn: bbQ)c w0D蒰ŀ 8܋܏ hP WT~wŌnw v; O@\PñfOcQovY K03>b3%Fu(&DŽbLN(Pϡnt|pqZ񌐄~\V6'8 -ijvpx]˿@y H`?V׳΀<@4UMH%I4S0@#rIJ̠^> =&c`Fg`0| 3DaDm_@7\ń3-PV_WސT^jbxPMg^V7t)6 n>[ -Ýq$B;|"]2SiU^y~<5GlLu8(a%\FSˤD2 -6Yk4/ -4-s> w 9L kZKjJ(e(M]_Cj`Y Cunal.{.0:wu}X4yOuYl=7Dާt!505H%=aaqq"bD(ID1i/:#EAmd%rА{ 8h}{joTܹ-Bj E|yvkS ӵv1 E-}Z?ePOٟ./-WM\ŒTC_CfsP-465y=ԓ^H|yUK~6ً<3_l7D -816oZq˸‹D)' 04Rt{2jM&/J|7,'G[^.rrr -]7nk6c+nn]PLhO/fM)uk]EAn E u"-1HTs -''?ʛF~G?ޣϼy eK"`?~t{i}uǛۛՇw?"ۀ?޾}ǛrROF_hH(]{gXB7Vomے"eXQ hOh+\?L۞|6 ơz=0t%_emOe_ Tc huϸ?mZ*V -endstream -endobj -473 0 obj << -/Type /Page -/Contents 474 0 R -/Resources 472 0 R -/MediaBox [0 0 612 792] -/Parent 453 0 R -/Annots [ 471 0 R ] ->> endobj -471 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [461.539 214.995 475.985 225.939] -/A << /S /GoTo /D (subsection.7.3) >> ->> endobj -475 0 obj << -/D [473 0 R /XYZ 132.768 705.06 null] ->> endobj -114 0 obj << -/D [473 0 R /XYZ 133.768 615.902 null] ->> endobj -118 0 obj << -/D [473 0 R /XYZ 133.768 537.646 null] ->> endobj -122 0 obj << -/D [473 0 R /XYZ 133.768 319.303 null] ->> endobj -126 0 obj << -/D [473 0 R /XYZ 133.768 248.619 null] ->> endobj -472 0 obj << -/Font << /F40 351 0 R /F48 355 0 R /F42 352 0 R /F14 432 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -478 0 obj << -/Length 2136 -/Filter /FlateDecode ->> -stream -xڵYo~8y|4[l=t@X][rؽ z9JۢD1ofhxX_g}.RiۅP%.NTzqY#m-W藿}뛟}p\ kR?oWBT?sǿ]8KGoE -\Hd cFD08.ڃ+ykq53\iAjk(F>RJ,g%%l6Ö4eJ$}\.ѧ΋/DGsV Z(+΅4GS~^ - jjCH2-lP:AMSKɣ*Bfbø#koE<Ѿ4L'.C+਷lߺ9HҸJ|jM93LDmJ[ -#N,SyMS~_. -dņV*6܆ͱi >JJqdNuA\))/ț}Al@#QI.?^K."uy#b'՟ًQGs.ik="Sg™ vUvuAb}V)g|Nn!@n<=m. Ɓ%Glw5=qG!PRғpG]%~A&ߢo]04:d4e+$ȶ&ăk6 -\bRKy.ǬsGiDQc{"dÅg}ݹb.%RЗ(&GkzSo4CK`9?&dL\E^Ko7ѧgfAUlltVS>YUog`Y:l;C$s&,' d =0^[Oik(EmQU2+I*xbBL''I'Cl -*nr5!,:*k܆o0򠪳xN -[o| Qpr<O Ev@OEl$.#$6XV$L۾. qJZ3>*vb"KU$rU3k.c\nRn8[>Bo#Ou%T mc2i_n˓ I詗C%ӆ_z C1{wU6G٨*Y^tb)0iK*=y7@Rc{3T"y(T<(C2 1 - =Š)JywL-h`1 ]CFN;9Ra -qe#-~ z ]j&{dYƓv`'iwH'dZGa+>cvۮ9WtYSN ƇN:l5PS$7'ߜ&oŒoU^07I q֮{Gbp"VW{bJTRpǓTYC?X}z"+u=SbHn?>*4d]05s}濪/z -endstream -endobj -477 0 obj << -/Type /Page -/Contents 478 0 R -/Resources 476 0 R -/MediaBox [0 0 612 792] -/Parent 480 0 R ->> endobj -479 0 obj << -/D [477 0 R /XYZ 132.768 705.06 null] ->> endobj -130 0 obj << -/D [477 0 R /XYZ 133.768 628.339 null] ->> endobj -134 0 obj << -/D [477 0 R /XYZ 133.768 572.663 null] ->> endobj -138 0 obj << -/D [477 0 R /XYZ 133.768 314.85 null] ->> endobj -142 0 obj << -/D [477 0 R /XYZ 133.768 265.938 null] ->> endobj -146 0 obj << -/D [477 0 R /XYZ 133.768 187.258 null] ->> endobj -476 0 obj << -/Font << /F48 355 0 R /F42 352 0 R /F40 351 0 R /F14 432 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -483 0 obj << -/Length 1561 -/Filter /FlateDecode ->> -stream -xXK6W{1÷$)=AYr))wȡdʕ7$DĹ{؎`HP7<93X%E)Mxx9\-P5mBpga-[7#:sך^$ h+Kcً &ٍ״f9:vx_ŗ5޿_-1qU,VHs״ CQ=U=Z–|4EyX` b?e u Ƃ(Q4ܫ[\w ->z;F$e -TΗ=RYJ<\C9 ql[nDR\q^Ey]αHgP5J뗨c 4Klelh7_ - rA -u7ׅ5a\\?=hȝрg1> \[7.= ]_B1kYYԜϠ?e8<1tñF:s"xTj$1ښDϽD9"̠,H@Վ{ۑzM83 - r ik4^DTA ~y: |Ckɀ"LU> endobj -484 0 obj << -/D [482 0 R /XYZ 132.768 705.06 null] ->> endobj -150 0 obj << -/D [482 0 R /XYZ 133.768 596.673 null] ->> endobj -154 0 obj << -/D [482 0 R /XYZ 133.768 550.396 null] ->> endobj -158 0 obj << -/D [482 0 R /XYZ 133.768 483.672 null] ->> endobj -162 0 obj << -/D [482 0 R /XYZ 133.768 436.474 null] ->> endobj -166 0 obj << -/D [482 0 R /XYZ 133.768 362.202 null] ->> endobj -170 0 obj << -/D [482 0 R /XYZ 133.768 295.866 null] ->> endobj -481 0 obj << -/Font << /F14 432 0 R /F48 355 0 R /F40 351 0 R /F42 352 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -488 0 obj << -/Length 1870 -/Filter /FlateDecode ->> -stream -xڥX_6 OU-bݺ0ܞ=ձ2Gb{LQ??⫻_}/\z'UJ-fYr!WZLju]}H~"_qc\]VL( \vd\|]hf}H'8Ԯ5 [oR͓k#zkۡ=NZ[K X*M"6AT 0{7/Ӥ2-Qom5Mc* diu5Mn=Lx<е6pwD8.z_J )ϒv>(|j4F8vt/L4+e֟o&rz@4((Ԟz䊔&IL6`JtL7suL(3CY:NLeu0w@Of -;>vnpo4Q 4Ig:՝w6Yzé -Ue7Ƣ!0*+q['L%"ktwj+>L톇_D򴞾[W]}k6 -2Hs }~xkv !*s8u-IH(Ӻ0۪9mO?DPD2kЛ8T1&ro=Ή"_ DqE3׺pzُ -g8s Vi1L/lu~GsV`>_lحu[tߝ -‰@<{:DW怔Z<9!ŗ;~cpED؅;(7^2M[tk)a髺޺>pO hiNPKr7$cXR.e\,1/(*J‚aIr<Ǔ3a"Sq9:pQ,+&Y5y@s]]7t3YLم5.R&d[;bȁNd̲2쀽M;)+4rVc!1>k0/-J n`LdFaq1!a+B=XISxԉ_S5BC{Ie qmxpCl }bXN;XЗxL~wu=-2 POȩ|2qt{N=fAsF'm`Ѝ f8@9]HGLw3I ,5]zoDpf* /9Jv&uK08C,]LC=lxQO^[h -pl,jmS"U,Kx?_"P|' y~S~a1TjkLA*֬j@*ur}N׻SW]EmLP+AHwj Z@E$StKq3.bWN~^;B[Mj<`ai/taֆ5\ݸ72a:x&)3&f -iHkbE xn=v</ӛ8uG < =XmUc].P% eyZj8e=ELfR>ҫ$P)\Lf"Pecǜ&bMY|I<{*+PrzK)` YdA 8Od닚biSs_ YU`J5c_7 -endstream -endobj -487 0 obj << -/Type /Page -/Contents 488 0 R -/Resources 486 0 R -/MediaBox [0 0 612 792] -/Parent 480 0 R -/Annots [ 485 0 R ] ->> endobj -485 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [336.998 272.14 363.898 283.083] -/A << /S /GoTo /D (subsubsection.12.4.1) >> ->> endobj -489 0 obj << -/D [487 0 R /XYZ 132.768 705.06 null] ->> endobj -174 0 obj << -/D [487 0 R /XYZ 133.768 584.717 null] ->> endobj -178 0 obj << -/D [487 0 R /XYZ 133.768 246.61 null] ->> endobj -182 0 obj << -/D [487 0 R /XYZ 133.768 199.413 null] ->> endobj -486 0 obj << -/Font << /F14 432 0 R /F48 355 0 R /F40 351 0 R /F42 352 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -492 0 obj << -<<<<<<< HEAD -/Length 2173 -/Filter /FlateDecode ->> -stream -xXKܶWLN"@*Yc%*'M.Qŝ8,WvC.CFě=ͳߤfS23nDYlLb77_#mTv8^ww;c㨻H1[TdsK7,Ma^~IlN'r -7G%j}K"wr cI L7Ov.C폼Ku:6?^“wMwעቴZX%oP8tjMUi:nmd6h eVgǭ=p[5"BӠk`sEoZ<jQ݉w9v&pS=Z_- ^?l538{^&tFshLzZ.$\1tJ'(֐ʔv:M*۝=ة:M`s-hV2+}8r?1Q"rВ+ L- %q -~p$z}G+W ʇVd7qQ݊;<]{aE %]@=4I~7w8:sz jOCe&?0k4 !c}#$v8b\QS9 1A/9(V&TJfM1̅?t0&ii- qUZبȆ/s) (0 ,"[+Y4w'&Z\<~_<wI|0߻aB}cPu-go*|09cBNQybnSBstD=9Öd#%kV]S{rE!aT,R*[N?}*6x!|^N*d^q\V߾o^j`珵=o@FT|4^L~ Zg@gw]ͧ-O R$9UX;>NytZ'#h:|9(@X*LRLH)L {xhF*b1,^1 k|-:C.I/#W;<+@b~FOm.i ]u#%/(Ťo k -======= -/Length 2291 -/Filter /FlateDecode ->> -stream -xXKܶWL"N"A*Yc%*هM.QŝcBb ,W 4@яVbiy;W*3n$MUJvu[%JJ^o87}]F86)fJ N:ᅱuÌu&(٢M*ˡ-0FKonIsyNl(\Zf 5V *'8nvit_R5 + G] q So~ʦ&C}[wwF NqvǦd -(%KH K;R%уeb́.U\qPoT|\kZ6]BOT[A6b3R Mge27}0[;ݮVލ<ʇ^h7H6qpxɏu܇8֝paG0@?՞4Mӄ b<@+:Fo9Ս'Y /)t4^u^sCM`d@H Iqt[4x,*U,)k< tڅ>a4L{!lz?TǣY+;bs1q9?X9АtBOv$#S=T:3GF"%;-jhi!T5 H6༺P6[3Ej<*bOrXK[q2,a*GQxA bjLq4{wXpjn3`ņA~o϶XK۹T&]nh^DbO!_ń.ń.t/tfb1נN |۾oKpxI}{ -Op,>>>>>> 1.0 -endstream -endobj -491 0 obj << -/Type /Page -/Contents 492 0 R -/Resources 490 0 R -/MediaBox [0 0 612 792] -/Parent 480 0 R ->> endobj -493 0 obj << -/D [491 0 R /XYZ 132.768 705.06 null] ->> endobj -186 0 obj << -/D [491 0 R /XYZ 133.768 667.198 null] ->> endobj -190 0 obj << -/D [491 0 R /XYZ 133.768 508.254 null] ->> endobj -194 0 obj << -/D [491 0 R /XYZ 133.768 449.101 null] ->> endobj -198 0 obj << -<<<<<<< HEAD -/D [491 0 R /XYZ 133.768 224.568 null] -======= -/D [491 0 R /XYZ 133.768 176.748 null] ->>>>>>> 1.0 ->> endobj -490 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -497 0 obj << -<<<<<<< HEAD -/Length 1645 -/Filter /FlateDecode ->> -stream -xڕXo6 _Βeނ]݀ -$F?fHQɎ˞,K4I?~9 -(U?]ڼQL \Z5F]αrR&zhe -Qʴ)rѠn?*Ru5:cH&Ƴxf7sDMRKJd_:lyo*'M5mk\48B}\2gCA߿ : "0)J8@I0!Εf1DQ%J2"\>Ylͳr݊csܣڕEޕs`g) r=O嘒{ZNIyZTa*“I6:Q :U/eCfXBލS 06:z) ʴ a@bGuC_#4Ϲa,8hIŎ5s%,d82V!odzd\s)B30rDW94<υ -D_N5XԸJC4#f  #lV"6[yc@N]L*5_ qbv4UAY}n c8BטK/b"JΞAQsqpaCG°;"Λkv[Euu\?d#A脆^%Y,@A+yRwo)A@OCJȆ E!X]JfGA;n-OsFئ$C@ -x(HyIIb`{l()Ţī>EҠ$^0$!_G"|= nittB9o4ͭ&[L[ۛߛ&Kdph?\i!;'zt -+.ohs|D\(Vڞ"{𢓰=BYmw}1,ȍg^#+O!]Y(;OwoH I"ռxO+ҤCTd"&Hn g_ϖǑK'?o;ma4Dc> -stream -xڭWKo8 WYd=,?A6h(݃b+#3eD#;N$(H4h.7gYHyE,Ixʌp!*,utcBCv&`1<:+J9zu$kc{Qsj*mӫq\"W{?wuQ8n½J7B%j|cRZ;;2wp@aѷkԺ"i~}ֵ}t\5yOXv4]ǜt4VUpea(NEr출@jqNwZUܚbJ3];+i%Bvx~w( _CiC8 -`%! 6H^6{0vtuK a! +-;9G/Ҧ[5TGhW̑3\rTq"7[F5~qZh;H&G\z؛kd7WM//ϯݥf '2 -E޵NK0PZ,IPonK14.𞬪)ԄeZ@ c A:1XˬeE̖jL}YQZK90tZ %k٩ĥk -rZ2lA` -Y>B[ ?<~7_l=`αK e{ -i}'J9f8Nŋ9oe O8*܅\WDܜ1V/ܭʌxd<^nP8STl^#lB$*o{[6"Nn\ B/'2IBV/Sz퓡$v޹>>>>>> 1.0 -endstream -endobj -496 0 obj << -/Type /Page -/Contents 497 0 R -/Resources 495 0 R -/MediaBox [0 0 612 792] -/Parent 480 0 R -/Annots [ 494 0 R ] ->> endobj -494 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -<<<<<<< HEAD -/Rect [384.815 176.025 399.26 186.969] -======= -/Rect [384.815 140.16 399.26 151.104] ->>>>>>> 1.0 -/A << /S /GoTo /D (subsection.3.2) >> ->> endobj -498 0 obj << -/D [496 0 R /XYZ 132.768 705.06 null] ->> endobj -202 0 obj << -<<<<<<< HEAD -/D [496 0 R /XYZ 133.768 608.628 null] ->> endobj -206 0 obj << -/D [496 0 R /XYZ 133.768 422.546 null] ->> endobj -210 0 obj << -/D [496 0 R /XYZ 133.768 353.998 null] ->> endobj -214 0 obj << -/D [496 0 R /XYZ 133.768 288.329 null] ->> endobj -218 0 obj << -/D [496 0 R /XYZ 133.768 209.649 null] ->> endobj -495 0 obj << -/Font << /F40 351 0 R /F48 355 0 R /F14 432 0 R /F42 352 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -502 0 obj << -/Length 1506 -/Filter /FlateDecode ->> -stream -xڥWr6}WpcdjgFuč#{Mv4٬%R%)'w%RS7}".wQ4;}tϗiֵu,QU s\-șP$w IvqZs${J*JO?  5"U%K&TH d6KqP0.2WaEF9\*#mBJDqi -MVzqdbh&޲O}[?knuZ'tv&O~Y$nڱS}YOxXpGC&ww˳z%3NU~1 IN瓗볓d4x;n|r2 ;##—!ܙ";1#:FtVN -@>~;rsPCsP}G+f-!?w^(}{ --zQaiiTY:fzk3p@6t]cO2HGV`S{\aOa_\go\eɂд$B$qzdmn3F-MZto6)xbV`,ɧkz#B_0wrΛ_?\u911$#Ӹ dII 1A+&c56ZD+xbX$ U 3['tx[fu6K!8{R;Pac4(DZ{_D-x[d' -======= -/D [496 0 R /XYZ 133.768 572.762 null] ->> endobj -206 0 obj << -/D [496 0 R /XYZ 133.768 386.68 null] ->> endobj -210 0 obj << -/D [496 0 R /XYZ 133.768 318.132 null] ->> endobj -214 0 obj << -/D [496 0 R /XYZ 133.768 252.464 null] ->> endobj -218 0 obj << -/D [496 0 R /XYZ 133.768 173.784 null] ->> endobj -495 0 obj << -/Font << /F14 432 0 R /F40 351 0 R /F48 355 0 R /F42 352 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -502 0 obj << -/Length 1665 -/Filter /FlateDecode ->> -stream -xڥXmW6ίȡ!ɒlwd484c(ؙv~Wrb2Ituu_&wݣ;5lX4^j# 2& "V F^^'@3<IQQ =Ÿ0++o4.*Ϧ(WϨu:nM21fβc$cTM#Ϥ臾4&i}( Qii5}IZWr('t67F_ .H0U4/NprttJ@nGZync,S="GOzy)o"C@j gG:.&Ȣv0BR:^,xBE'5~flL1VYֈ2?8N!_p evmwFte^(M]Jq4 BIL:w!_glUB2Lq9yʰR2L]5f 6>1ΞF"gJyj -_+ - fP -r3j;Y68R"UGl3 -Jeq`G`Eus69sAD6=&t,8Jyږ(tS6+<]r\uWmf/ˬi 4utL6jO/ClCE`Sa~yݪS-b]{8ƫp  c.&C;̠.eᮞo0UU^jeu* r[Xz',4FHVw|.0.\w@ܴ -[pHxqHRh*d:ARܯi[fw陵'Gc"=xdj ǢI273m1& YJU oÏ.yre…e>o0S[}0DS0pN#XPfCxͳ^_˛amgqQs<ҋ̘\Ȥ(; -orxӘHecJD7bSXݻ6Nwq]jWe;]K8g\:}cū,Y@K]WS~]Mws鞏9IF ϏԼ;e 4w7O&FLJݨ2~_٫tw-&͌?/V4Mkd0`.-7A To7V.b-qqȳe?Ž+ ~珣Z-}GdT#q.@6Iu]c]n2H}NYA(L!qs C֍ңḳOn^>>>>>> 1.0 -endstream -endobj -501 0 obj << -/Type /Page -/Contents 502 0 R -/Resources 500 0 R -/MediaBox [0 0 612 792] -/Parent 480 0 R -/Annots [ 499 0 R ] ->> endobj -499 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -<<<<<<< HEAD -/Rect [385.801 519.213 397.756 530.157] -======= -/Rect [385.801 478.469 397.756 489.413] ->>>>>>> 1.0 -/A << /S /GoTo /D (section.16) >> ->> endobj -503 0 obj << -/D [501 0 R /XYZ 132.768 705.06 null] ->> endobj -222 0 obj << -<<<<<<< HEAD -/D [501 0 R /XYZ 133.768 552.837 null] ->> endobj -226 0 obj << -/D [501 0 R /XYZ 133.768 482.481 null] -======= -/D [501 0 R /XYZ 133.768 512.093 null] ->> endobj -226 0 obj << -/D [501 0 R /XYZ 133.768 442.14 null] ->>>>>>> 1.0 ->> endobj -500 0 obj << -/Font << /F14 432 0 R /F48 355 0 R /F40 351 0 R /F11 504 0 R /F42 352 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -507 0 obj << -/Length 1975 -/Filter /FlateDecode ->> -stream -xڭXٮ6}WEd fh!@RܴiHoMж%WKۯ %[719$9#x7Oc1Sq*Pe^IƤJ_+9nmqU\ɄGOjW<˿o dX0z[4(q)}@YRmmWҵ T;f?iA)?/EUyd Wbe"^`& [2過ǿ=c'uޮY"tQ&OmKɣ̓3A=$ !97 -74Kvϫ22pO^߀gUא/\MԿBXk0a2`\$!=a$gS\>wxjb|cbTjHX-Al \ l -c<@pDE ڵhMUofal͞&1a~eNmlQW[խWOySuia |?a;ذ֮];46~o*Ih9d&~wO5L\ҰL<)gN߲4 -\yWnRܶ\s~mBIѰ*z\Ψ4 T:HI}!yzPW -ozM Ub-XÖ^lٹR86sDGMfTJ(0_9՛ :AA%pZ3qDտ/_޼ٯ_87fFBpaP&"tҌX%xG -{g c&PVPgE{ }q,q++?]NlCjM2:KW8=GŌ3A\L8hzC]Ž XMRvOӞ4*,q\0)˲^IgtWd>0 6YzH'h:i܇<6@l;8\ħK\Ppu߆sޜğl`)K8Rv@+/8 -#b-|J0l[Gmi+_E] 藐"_ DDiʠqt+?5۲H%xΩxOxKC \m!dHwܸz֖'Mrz$@h)~ާPm4/Mz4C5)i+~;7)j)OtA?[Lk=s8O`\x@Fb@@@Cv]ŲMu8#—C8َփC#&fFX>8ů߉EOQy`!pxWW0AD.5lvMmC$(ʆHX4XJL(<\,2HZqOjfg΄KO.}\ hYqZ)' -^YU[4y-K;Dн.8e}^q;CLubRom -;&mpRh > endobj -508 0 obj << -/D [506 0 R /XYZ 132.768 705.06 null] ->> endobj -230 0 obj << -/D [506 0 R /XYZ 133.768 667.198 null] ->> endobj -234 0 obj << -/D [506 0 R /XYZ 133.768 608.329 null] ->> endobj -238 0 obj << -/D [506 0 R /XYZ 133.768 561.131 null] ->> endobj -242 0 obj << -/D [506 0 R /XYZ 133.768 486.86 null] ->> endobj -246 0 obj << -/D [506 0 R /XYZ 133.768 372.314 null] ->> endobj -505 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -513 0 obj << -/Length 1716 -/Filter /FlateDecode ->> -stream -xڭXmo6_ax BQK M6kvCX-4wǣdaҠ'xba[ߗ㝽׎׋8Ao<9^d~hsgO愃ƿ^{!E^% -遌myNC7 yXŪʊ}Jd9,ɲ]Vibd (MR+H+l%2B#sn&c0:N^h R cPX9$9 }f0KYY, ()BR'flEACChvøJ̮Yub h+!–K])T/(hE2CBs0cwrjg6gPʪ2)iWa0p'YC0rl}w,=Gpmi!@66{vF=Mr.;[Ҡ wADUwY&#A_JDCnNh,naG1%%:A -A) -u04PD+{48:*|GAf2qJn'OsmƂn&Q_ r -$$GBRhP(f ~@9aV%S!tO*:@9*a^vR A@7 5E, ,DLB pZ4u* O"dݳ ,ȂZ!$n+A[vс2VaT~Xءn"hKu#6g.T0V2;"o oX[ h`z:uCҧz,Y,'lM)REUaSCja \d,0CY4_#p=4G;X,P5^\e9}u2Ӈ)??ҀJ>=5=똰t"@3F}"DDhbAu*k|;xN<,Z˛ Ť.XU'3No\+oL! znd͡X| tmΡ# d9Ņ}SYڦMe(.ohW"o1'A(T3wGg':!koangO'OT\LΦ*;^nmW6Mx&5 'Z6[n%0RQ]u; p -endstream -endobj -512 0 obj << -/Type /Page -/Contents 513 0 R -/Resources 511 0 R -/MediaBox [0 0 612 792] -/Parent 509 0 R -/Annots [ 510 0 R ] ->> endobj -510 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [385.801 539.714 397.756 550.658] -/A << /S /GoTo /D (section.16) >> ->> endobj -514 0 obj << -/D [512 0 R /XYZ 132.768 705.06 null] ->> endobj -250 0 obj << -/D [512 0 R /XYZ 133.768 573.338 null] ->> endobj -254 0 obj << -/D [512 0 R /XYZ 133.768 503.161 null] ->> endobj -511 0 obj << -/Font << /F14 432 0 R /F48 355 0 R /F40 351 0 R /F42 352 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -518 0 obj << -/Length 1913 -/Filter /FlateDecode ->> -stream -xڽX[o6~ϯyY(i+dYe-"1lP( %OR[΂ ؋~BޝxoiqMx)KPb(f*N=_!#o{eU6lͷl\gEyYWzůS&E9CIw(zsnyʙH 1ͦZfmQfs-6D^q&c5blTcKt%D=Mr9OYzB*+޻/?,>,~\ P -՗Z7ٽx_7y/B/z6fv>e+ŗm:hT,(Cs[? '$dJ#DQ0(xͺor~i'\ypJwk:Z/4 *t#> ޮ5 Zo3LCRZ4ɶvr) n: $BSjJADK`Sܝ=YF$e&9B -.V4(نu԰ Ń' "qB\m]ܢvP:HHSПŊQS20ؠnp{|Ñ$ĸ”@F><>4:b'FN9)`+h߀E;ڲ pnR.t^:, C.pa@-H)YFЫJ̲2|묜f؋8JLnsXїx eARjRw9s,v2{-sR8sJ΄R}A" Rҧh()?C=\AN ߾a`뢾-:mk,֜!}W" -Hczٮ@@+.QxQx@(ibD m'^=#f<\=>CF S8q(qJ…p$WxĄ Hf %.Pt( %]ĝ1hC_D0QFDAtHmQӗ(tT%t!i"j2X-{nWխ{s <UMU t {?4Eb O)#*ZgralpXvD:a;ˮW:#+_-B‘%!&<5ھ 0qKwlu XuG5%cv&?]ye2l5Y}hE_A;Y7,S8ufO"jO_$4c,P7Om[5&`Y֯ɷN¿Fg%@3 xJ>:zq -endstream -endobj -517 0 obj << -/Type /Page -/Contents 518 0 R -/Resources 516 0 R -/MediaBox [0 0 612 792] -/Parent 509 0 R -/Annots [ 515 0 R ] ->> endobj -515 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [335.813 254.107 350.258 265.051] -/A << /S /GoTo /D (subsection.3.2) >> ->> endobj -519 0 obj << -/D [517 0 R /XYZ 132.768 705.06 null] ->> endobj -258 0 obj << -/D [517 0 R /XYZ 133.768 509.719 null] ->> endobj -262 0 obj << -/D [517 0 R /XYZ 133.768 351.492 null] ->> endobj -266 0 obj << -/D [517 0 R /XYZ 133.768 188.728 null] ->> endobj -516 0 obj << -/Font << /F48 355 0 R /F42 352 0 R /F40 351 0 R /F44 353 0 R /F14 432 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -525 0 obj << -/Length 2356 -/Filter /FlateDecode ->> -stream -xYK|/v7 ǀ l  oK -ITuu7fNEdwuWOӊ~zfo%VYiW+nXJ&2]=V 7zk o'amSa:QMVlmqH6[-4G?oN32ƤoNV-WIo)~|)ՌܗMW]ٷyB]ߖ߳]KWj -V+_#M2mݹؗEu^c+Tholmqj6<]zŋ6}Ie I2+&OްLs2O#tW5A UELlS7Sg܋MTU90A`K_t߾DOT__x@%Sf??:y7Kظc{4Jq`p1("I3TEIJG3-\cZ<|qhj$mx+4mb8T"I95]q=Eۼ/t[G>*MHþҩ*b̳i+EFŎ{6.)!>g/]Tom EjG -\&^?K냸N_Pިh,"TgPq>E9FLR?}Ɖ;[yuC"lEuU#:n]Q\Cل K|ޙMb'(;M. (8ڕ@pp脣#)<)[pY\š[ffL4&I:C^?r7 -! -K95C`eeby,F|RJ>tc D\?Oqt@1m}{Kf{:^g3Q$uEYbf`o%r2xs!>5\2R -۷$Ke#мH/QzgUٍ#_Bg#q^M÷8lq&"8nEy1eKDvOH$U:a7BgI4yWa9(XMC㹙J, V|gX;Dqb,M0w)eQ+JpE~0E`R^Ix*}y=rH@7[ǮXʱ$ k/gA2RZokp7zD풊g tR' ffwbSY恀+SSK@@ˆ @"64CBg ^<~Ff˭sgR0&)Ib*vaj57-hFXtL?umg2Si7#勪i(WDT \E"ެqJ @w!&h;kOP;tiKq?mƤK9#@( *Yp($˂!S3hrm8* Ed|uvq77"5GjIvݱT~i2S!ם)}4iD %d VIuЎT>i3z0LŬw1GOK?> endobj -520 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [450.329 441.567 457.303 452.51] -/A << /S /GoTo /D (section.9) >> ->> endobj -521 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [384.856 414.854 391.829 425.798] -/A << /S /GoTo /D (section.9) >> ->> endobj -522 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [175.671 184.68 195.098 193.606] -/A << /S /GoTo /D (subsection.16.3) >> ->> endobj -526 0 obj << -/D [524 0 R /XYZ 132.768 705.06 null] ->> endobj -523 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -530 0 obj << -/Length 1594 -/Filter /FlateDecode ->> -stream -xڵko6{~}!)&@k47(bюYrC<ʖkW,Bxw7MEho}9?8|r+$š/-S"Kx>gcs14c{ 3jBgZ*b-.KYC4OGB~BdgWf^::=+E&Cga?ŻO޾8/Y쵧#ӳ󳫗'W'߶*x!;3 -n1DʡTgЯ\I湳 6yo_EAyjH4]-:6X*,pSflVI7jč8f3b#]ץ*:2TEevZ~y6F{8ҍapuЇA7~L.|!?Q b<m1N('jŀi -{MmZ .\1ciMԇGkua^3iAbRD+Wn׳o1q -Sb#(b߿=58CRQ1/Ɖ^<Ng{oW&er;xhnd @)IXmVE^oU$kg̋Zmv1boo$x\}Cx;Hݯ -endstream -endobj -529 0 obj << -/Type /Page -/Contents 530 0 R -/Resources 528 0 R -/MediaBox [0 0 612 792] -/Parent 509 0 R -/Annots [ 527 0 R ] ->> endobj -527 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [225.315 449.532 231.292 460.02] -/A << /S /GoTo /D (Hfootnote.1) >> ->> endobj -531 0 obj << -/D [529 0 R /XYZ 132.768 705.06 null] ->> endobj -270 0 obj << -/D [529 0 R /XYZ 133.768 505.422 null] ->> endobj -532 0 obj << -/D [529 0 R /XYZ 148.115 138.182 null] ->> endobj -528 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -535 0 obj << -/Length 152 -/Filter /FlateDecode ->> -stream -x3PHW0Pp2N!\n& -zfFf -!i -zf -fzFƦ -!) -)iyfaA%yEQ#/zx4&e&gC * . efgankjjgi5Ekx5 -endstream -endobj -534 0 obj << -/Type /Page -/Contents 535 0 R -/Resources 533 0 R -/MediaBox [0 0 612 792] -/Parent 509 0 R ->> endobj -536 0 obj << -/D [534 0 R /XYZ 132.768 705.06 null] ->> endobj -533 0 obj << -/Font << /F48 355 0 R /F40 351 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -540 0 obj << -/Length 2314 -/Filter /FlateDecode ->> -stream -xڥXmsܶ_q՗fL3r:ikj5n;ICpwH;ﻋ]Hr `7yswW/oC7"$N7qx26η[W%O궮|%}n3G~{bƕғqLnE9) ;"9H^ȣo;]ߞqv Ox|>(uveޫLsXꡣG=jh"Ų7yxE^ -%bSE_"lj);kET_:7;b] yO>UEND@C4MA%6zQ;ղ5@d f0~"E[P +, yoe` *k@ĴI  yeC_^{%B=lxjY'Ͱ $ez3=}U'ݕƋB7}^6;dOYSCUGSUi|}IaLdwoFi|>,زss:cwpB@q`DFq%+Da'[]HKtRW+K!tT -`]=4OOQɗ3O)$Q 2MT$]J9sH=Hf[5~Y9Qn.,ӌ#d:vۚ<M4,;3ML$>e4^bUEx:$IFzO$ dN9nCTY Q?"YR.X':̈́&ÉOeܾ4F!itU7s$gT(Zd jb-N( :Z}jKfȱ>,`7EStǨAtk0}Ɂ0 -*+'BYk2d燎/𥗀gީ}_6O`SbdAuc |A]6p.?̜nh*7 t'wmǺWԄ򃕭ʖȝ:fwKK %5DҖUG Npn@yp םuOyC,d)g -^6E*)& DN.fXಛ f2ǴҶ;Uc4 1U%8+%%xt撗ĩ P)[Jű` 5_! )D1j3Дŧn q乀9SjY=ӡuޗ -veDnsdabD }@ܟסAI-A.VZ9'SLK _ 5 /liOBKlcr DY_Ę3˕F&R(?l&<;WG0SԀ,Ҏ~ ed.- .Gs0@{`U&[HҐ/fO$_uXn}anEԐź'b 珮fHܞT& fc'=κUChl\zòWe&؃3fQ+^X&K\9{|ik"\7k}o?H 3`} -O^ |/ǘzk+.}S+8iv*o6]eOk+]<2ݯiK^ry; ̜{Io\wƐm޽޳Ķ Aʤ*ݩ}I#~oFoI|uMO:Ad?ۡثkp5Y QZKB}dOQ8I#6'X0k\%C̡kߴh> endobj -537 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [281.391 595.95 288.365 606.894] -/A << /S /GoTo /D (section.2) >> ->> endobj -541 0 obj << -/D [539 0 R /XYZ 132.768 705.06 null] ->> endobj -274 0 obj << -/D [539 0 R /XYZ 133.768 667.198 null] ->> endobj -278 0 obj << -/D [539 0 R /XYZ 133.768 558.643 null] ->> endobj -282 0 obj << -/D [539 0 R /XYZ 133.768 311.142 null] ->> endobj -538 0 obj << -/Font << /F42 352 0 R /F40 351 0 R /F48 355 0 R /F14 432 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -545 0 obj << -/Length 1925 -/Filter /FlateDecode ->> -stream -xڭXmo6_u2KmE`Uz?f8Ea!r8 g,_\-'|>y/ KB. XƋ06_9e˕9wNߞ-W"wK82mzƎ$auԪ-Cb Nҷ wEhrt92k QK3Iiir)Q[׮eN35- ԌGj0`qj5oo_1/g[m+eI`<ئWC*e9fNf;RHCW m҈mkTfxj\T^6p w2VS5z V4'`MLsY7svEIlݕשbspnȴ+! BÉנZaj٘Ƙr50^OC -9l߉$ƚ&"BwxQeBx,g mP^~}rs}{.zqFs~:󈢚6Um)դc޿:}~yw>M*͛wgz394l tISnI;u Q&ϴ3Ƃ)&0iK l>s/dm͟Fy(G% -ו#ɸ}Lў+d L@,G W֭Csc cJMVuuzI q1};ɥ"MY;2h㾣gB>SBLBnYNj/9vgi{L;,]3χ|E -2b{(hJg˪!ŲB7DCIgov]p7 ,?hB͓`h~ZQnBt£ZjUye~tM!ͮ]ZX.4ujeMGӆ˚LFnǼvcjRoҲ[ vtgzOuf-u>_a> endobj -546 0 obj << -/D [544 0 R /XYZ 132.768 705.06 null] ->> endobj -286 0 obj << -/D [544 0 R /XYZ 133.768 667.198 null] ->> endobj -543 0 obj << -/Font << /F42 352 0 R /F40 351 0 R /F48 355 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -549 0 obj << -/Length 1647 -/Filter /FlateDecode ->> -stream -xڕX[S6~_tl˗N` bvfdG!.,G;>YRs-x8?7Og׶7 Xe!uiA5GvbOO sqsagev1._w=+I9>ۑ`<]Lg$ۧ)QZ>!ďà C=y&r#0%F1Q!6"n䐳q -O1!nͤiEZ!DՅ -Jң0?ӫS1{Tf~zyKp}t*uAib-,6a%<zL5w[蒴y|y&!2ai >HeLM -U-mqmW$.|#[Sɸ6Vm o(oD;mIS}D̺0T -N^6-PU$&F# P&hq0[)B$bVJJ0>c!=\0p*,/ P &+ԍ!DkE*PQ԰|_ +/eGkc#ެ}=9LfXbiğ3>1^YY7] X}tң>rV砆x,Pck'Auȗ/ډDE,|E;DIX Qe]T'޲%^/l|9.]}vYfoOJ_nwH^=> endobj -550 0 obj << -/D [548 0 R /XYZ 132.768 705.06 null] ->> endobj -547 0 obj << -/Font << /F48 355 0 R /F40 351 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -553 0 obj << -/Length 1268 -/Filter /FlateDecode ->> -stream -xڽW[o6~ϯۆ!68NqX :, tX]Hʒ G2).$4 N`ӁaM ʀXCʀBea(b -~"SI6rT0'Hp#$"o#7 MrFc {B8T=6 :LX -,MkXʍ"D7&3!iimFEq,&]ār,]0,?[ՁijGcd~J,+U-+7˖g0Kc o7Bp%%"+4}Xb]ea.VK?q>;| ȶfEf# KǎE~_āP 6YhD:z&3=Mߊ;Y|G,ULa2"bk/%$8 Dl08 -<ȭ⨨V=saųG/h H\lqR -]N}! = yIo@1<\f#-B&/:o|C%`q ouEtgsir f5Xl_ Xk1ߋ5 J9rSoYqZ֛%%pgu;HMMYР|G)DL( -E肽^ s_,P&%Xֱ3$( -yR`qoGھSX_Ob_δ6tW}{t2:pZgagGv[OMѴ+'u|:<MJgU|6r2ONx~rpŋ'_+9̳zQl+o|j@@Kk2snQ ԬW6=VΌxMf>j5<^.`%kϔlh:{VW|ҟstwcb2ITULfV0k 7Z6ל -endstream -endobj -552 0 obj << -/Type /Page -/Contents 553 0 R -/Resources 551 0 R -/MediaBox [0 0 612 792] -/Parent 542 0 R ->> endobj -554 0 obj << -/D [552 0 R /XYZ 132.768 705.06 null] ->> endobj -551 0 obj << -/Font << /F40 351 0 R /F48 355 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -557 0 obj << -/Length 802 -/Filter /FlateDecode ->> -stream -xڽVn@}WXKv뫢>0- 1XR0mU @3ggf G -.`&@WDEp&( -D, Lt,S":BB!È -[gw ?Voh~29&ԬYxaY2$A)R xc ytĆR΋n?$pL6W{yųD;5$ڬHsqntx+ -Ygۣkj4z5ȅ8I+J1I7ˌ{LgM߽M߰kY:['K6l<>KQ&V3n1]GiirUU(.`oq -;EgUi*@Lql+r(Z, $i̥$5Q*7b3zZV$SkB-iQ ^C;y[un̮{v7lb9X.a[*=8TYgsxr8(2Pe1jv9&2g.F@je<R,*Xw?+$Á~qůÂeHChu[,?m_t$a )BDe ,wd+:@V㡩ũsV>ysgIUUGI#҂{/E]G/W\{s($I8᪊ G=l'Ý_z*@M -SQ٘o_2&Q -endstream -endobj -556 0 obj << -/Type /Page -/Contents 557 0 R -/Resources 555 0 R -/MediaBox [0 0 612 792] -/Parent 542 0 R ->> endobj -558 0 obj << -/D [556 0 R /XYZ 132.768 705.06 null] ->> endobj -555 0 obj << -/Font << /F48 355 0 R /F40 351 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -561 0 obj << -/Length 1267 -/Filter /FlateDecode ->> -stream -xڝVQs6~ϯ`r/v'!\$': 9@皇]!ဃ;>0O+ʓ*NTN_b#xK&PxPHcfiY GTUk'Ip$"OWk02uMC֏\8XR/!k`mȀ84CLyTO2qM+avMZUPK &e 4۠5EldYV_*DI:n, iaeEM. !,$]fi=dU5/V0Cox9o[g>xh05XElL.|2vn!dSt+A~|r?uؾzh ?rY8?ZED9~ ^7p&x[9!]CIl߭7&-8gmR{`D||%Ɵ={ޗ;_!NhƸ+cĆtRTvA>{;F!-ɶOaǻv+ב  -k-xU4 UPlHVDQ\ACߤuU01o}b2N{"ׯ8`("T<ҋ^ʸek X :V҄[6x=Yc}k&hk H|R5z IK]qQguF e& mQS9={b)0Xr] /҆#CM;Q$56y7 ްff#BTF$V{ŤMȀcN6d{nVVp[s% p%ˬx ZRVVL\`-I` ҼlYw%AV@,O_53㑛f6㲅L)x "1pk2OWa,8ق)2cn7"ܽkw݇}y~dފR -UOm(b:Ҵݺ[kmDUW:^2DbnQE\gڋϑ$-`}b#o`~L-6jN-ɀLV$ 7!a8"} -WlEtD(K#ƛeʚoLHvP sl@i.y+3?jo?ůGE#7G#|m#0Y;wM호ɿt -endstream -endobj -560 0 obj << -/Type /Page -/Contents 561 0 R -/Resources 559 0 R -/MediaBox [0 0 612 792] -/Parent 542 0 R ->> endobj -562 0 obj << -/D [560 0 R /XYZ 132.768 705.06 null] ->> endobj -290 0 obj << -/D [560 0 R /XYZ 133.768 367.532 null] ->> endobj -559 0 obj << -/Font << /F48 355 0 R /F40 351 0 R /F42 352 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -565 0 obj << -/Length 1483 -/Filter /FlateDecode ->> -stream -xڵW[o6~2yRuYvC7^_a%:bKH/-P0(\?~m@WϨ[>;c"qN4R`YW$YDR~- Q,h\qء|UNFqmvؚ%ᇽ\\AA4N4XNk "ԛF) ~_["JXJvK\uo-[_ÿ|Giܺ5SmURn[v^9Hu[a&. -uvR]c H]H ZML\/*9'ir?BF"lL*)i6" -f2vW8rc?sAFiE~ϽF,Zb41 ce[˶j3vIIeS[aF!>Y§1%y6a[8Mڌ9b `C|)$|՝b(\> [$p61iF:dJ}Ve29LV^ACq[/lz`{-l8cC"|#$ ~._;\`4rK79* jX5-ͫt XdCZ`{#qJlsJf!V-QF:xÝX%jN3'K =+io!Iq 9|w#:>ˍ44pܫ)9!i6:-[a;cpbYqJc"dp AYaD*#lܭdox|n^?cDGO(qx{߰GB-_DM4rMt>Rxۮ {I>3}>z] fcRR+_;}Xd&~cАE{D3S%\)Kَg"c -endstream -endobj -564 0 obj << -/Type /Page -/Contents 565 0 R -/Resources 563 0 R -/MediaBox [0 0 612 792] -/Parent 567 0 R ->> endobj -566 0 obj << -/D [564 0 R /XYZ 132.768 705.06 null] ->> endobj -294 0 obj << -/D [564 0 R /XYZ 133.768 667.198 null] ->> endobj -563 0 obj << -/Font << /F42 352 0 R /F40 351 0 R /F48 355 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -570 0 obj << -/Length 1915 -/Filter /FlateDecode ->> -stream -xڝXs6_Q7! ?Z3i{好"dqLHtw ФL%b~'߼v^x&&D(ɤD*fB*ͫl/VWMQW7jfs~ӻ;}o,*wRig~Ĺ7o?zfjNb+8P/q2m/$R$?ƙDߒ~QewΤ݌gyjROk>m*y՗%q< .73?HU@yiQvqzY}h{-molj7EsZՀ:ˁiȽ3_pY=9v-C]˺ֹ!KphzϾHR]&`tӂZ~-'Δ Kd $5$3NJfw5:=lJyYSIe(?UnŊ3&CJQ{3 -kUs}n1f/b"| `Gb3RK!'%YR4ʭW:wqa=W kY"+ &L #B3ݾʄFz H!G7Y*4ew]]UfSu}8f_WyQۏv,CD#`XDL#z*&%䭄KTC>eI5 -;u>|XѼ\orf!yŻ?Woo+:_r ߯noWos_h=9h7ev]x#ع?^P?d"VT̄ fXLLrZ~]׻]V0('mC`H'XxAI&̸Hb:Α%QP0g`2UIKBoi{Y#bK/j e;]-; XܝbO WX!g{$|K6p=%#Eu،ՏEO+ryB&yj]\S Gl,D[yqH;;f4<](2Nx;ۙU&;ߏ $#JA63|ak8zz$8V3M:„fir.Ǿ,E;r'1yLYtWʭr:5q2M1sc;|ǭ>$at^H1M׍_ -`^H -BJ -퀈Afk #aQ5t9ݭCØMPEK jbB+C=ߒK}_w}[TYTn鲤c1ALб|8s( Xo\~L@.}f/&f]kE5G*4ViFX?pTAׂQL %B[;-n#l=BY뭶&gC.5'";I˜iCu]mʵ>3! ' hB^1e~TYsJ -lDH]MBf>ig_MRPȢ'_M]5%jzWy^9O)ՔOR>ݔN/?Dgf{AuF{_YS5xBDzdEc?òMhs"5 `6,X<.[VNn8bj=2 Xhv)KxW y4VǐIBn 4%oM߼Pmf&P[zi inSV@JNLԥBԌ7$"EPCeHb/+ -endstream -endobj -569 0 obj << -/Type /Page -/Contents 570 0 R -/Resources 568 0 R -/MediaBox [0 0 612 792] -/Parent 567 0 R ->> endobj -571 0 obj << -/D [569 0 R /XYZ 132.768 705.06 null] ->> endobj -298 0 obj << -/D [569 0 R /XYZ 133.768 524.981 null] ->> endobj -568 0 obj << -/Font << /F48 355 0 R /F40 351 0 R /F42 352 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -574 0 obj << -/Length 1918 -/Filter /FlateDecode ->> -stream -xڝX[sD~0yx][73`)NGY$_9{veIx~s8,7/\j."\l ,b^d(+ߍUdj)^e]/?m`{(lo-tm x]֦䯮+ ---vZ+uZ% [״4%wAUeASF 1 , T\ZuDHѴ(jͦr#rős[sFH@,bl.iW!g̱YUJu8Q+ghi}UM_Ҽ (h4)/QŁy0 R͜cX;;m[0RNj>|nɝΌ{ AYWMpҾ[<WdMLaL}0>Kjѥ%D,3|4c/fhaE.X!L:4T5tyQyn26]#%pmxV5Z.NjSEH3{A{7lU ܠu4cj*L#hj - ׭V3yS^ thc]{3`H1'DwA͇MGq?MX10RVϥMc׷Ǻǩ̎7֝ɚ];}ȘQW,@}xD߰p:ߖȷc17qcS3"t; XZ&NUnm zv'ʃ"9O;T0o~|ټ_B}sԿ{S˴Mda__${aK0A|$ d }I3nĂ$\ &K],L/ -E_3# O M@4)]C”`=hfֽ(1QPjj{j y!.`bdj9W@ޠS0#cd$`6KbDzF |j,UOs/G1}g1L i;]e=AxҸѿQn8pkfL 'L垀;ͱra$TI3%5dD/WiM~; +43RSZ>T_;-2Ka˘z7L{4ٜ3|)8aQ|E8 **,s5\Z_; Plx>L Vs%g({}Io>Ϯe ܋매i0fģh__|-UAOsgj Ec{ xW׆-ὝWsʭl]fs7y;|9 >Ig!<`7Lp,;BcO&WƂ`B& VN3L_89BwikT#]Ė D2e;B6!"H3"g "V?@> endobj -575 0 obj << -/D [573 0 R /XYZ 132.768 705.06 null] ->> endobj -302 0 obj << -/D [573 0 R /XYZ 133.768 568.825 null] ->> endobj -572 0 obj << -/Font << /F40 351 0 R /F48 355 0 R /F8 576 0 R /F11 504 0 R /F42 352 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -579 0 obj << -/Length 2050 -/Filter /FlateDecode ->> -stream -xڝXKHϯ 9Ӓh:b hp(Ke@Ri5,YjXYY|~hsD߽wrS>o^$I,M64߼4zOE_nqFtmnEnvqVX}Ck0 i+\Y7ZRYXeqI;^ΒW.LNډYE׍_(饥w8q2=3/KףҼE>ޝJ]ePaW*sO5I&({ϪЈ$$ -m؝.Gixm4νU}F2r<ʟil,N۩Q=ھ. faO Zlպe?Z^(7i$)ВÀzưgص0fL5Ś$|NviּGa -pgk$yUɶ>B>,ِp 8JNgSXla&?jˀxЪZ?9B vEv4Lצ!$Yvfk|I)Z,hxtNX:~d=`$ g#lǯ:tUylNFѣGi7?}E!"R M2)a]/g\AT '0{=q#Ȗ Dӣ߷ELDp%Wնt4:Ж-B,@R6Y>˷qX󏨱&Nޯ EI18Y$.2}>@;g OŦA.!42 /y޵,-xUl(4l#,+* N4{#>v:XA W<=?XAJx􌞎OuO\ܭIъ2_.Ddd;= ֪C+iUiA|o9H!ʯ).%vêod>9u\EI`ąP%<@Q}ާ͵3些׀qi5@eN3gcZ_ǹgu7T0:on!m+(<~%:֖34dD,q[Hϸ7$/3I҈RYXU-kEU;22Ody{a/O ӪeA*%rq+0u;$LH@cN=_sdyVrBaָ8 - -ctip qfRQK,A\0 d;ô -JWa2rUNʚjEX_< 쿿ZډOVjuQP# F:SqM fކ6q_+1U tvhV5}DA^ڒw hKP5FMg;F -I:W{%+^A* -&D'jJ*X상?Lʸ GP[awu$IbEm{&Q>PGAR=?!l⷗V(gwB^JK,"AVrGh&F80@{s@Hu1|mk>[T_7+%=7CjR0 ::$/;yC [ &Ivrsş 0GwjW;'*KhT;P $e#ɱ~>;Rv7}ZٟF0F\o~n{# c%e*)[CtqD2.aNOR (R [_ϒ< -W "EDCbG٭z,_4 _Ɂ*o8p'0$0a &_Y;h*0y SXioUWe~>/}( '4pҰc(nk -endstream -endobj -578 0 obj << -/Type /Page -/Contents 579 0 R -/Resources 577 0 R -/MediaBox [0 0 612 792] -/Parent 567 0 R ->> endobj -580 0 obj << -/D [578 0 R /XYZ 132.768 705.06 null] ->> endobj -306 0 obj << -/D [578 0 R /XYZ 133.768 546.859 null] ->> endobj -310 0 obj << -/D [578 0 R /XYZ 133.768 463.796 null] ->> endobj -314 0 obj << -/D [578 0 R /XYZ 133.768 273.136 null] ->> endobj -577 0 obj << -/Font << /F48 355 0 R /F40 351 0 R /F42 352 0 R /F14 432 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -586 0 obj << -/Length 2209 -/Filter /FlateDecode ->> -stream -xڽ]6}*5@^ HIhk"K>RoCjM8 _~|qsuC%+3-nn")X."Ks&tqS/F7[mr%,i[~nK#4VmjKr4vtBVFviڦV7?-V"ae(XzƇ<+V_GGi7+#M[WW}=jٞ-WqF- 鯖)Z>pI5k۷M cQ;;_ɋnfRA!x<ݶOA,+,h9'Tc9%"6uR,Js=٧yd\@Ol>[Uyl3L+BP|X$=[=)fs}Nʎ*ɝQRPn\mE|YY:ۀĜ;eRȳK=NT!ʢS!Uw^;v7l3Ƴ٣Y8J$Kv5oz >H$+@ʒw8=!74 -endstream -endobj -585 0 obj << -/Type /Page -/Contents 586 0 R -/Resources 584 0 R -/MediaBox [0 0 612 792] -/Parent 567 0 R -/Annots [ 581 0 R ] ->> endobj -581 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [375.641 523.341 384.279 534.285] -/A << /S /GoTo /D (appendix.B) >> ->> endobj -587 0 obj << -/D [585 0 R /XYZ 132.768 705.06 null] ->> endobj -318 0 obj << -/D [585 0 R /XYZ 133.768 604.786 null] ->> endobj -322 0 obj << -/D [585 0 R /XYZ 133.768 496.834 null] ->> endobj -584 0 obj << -/Font << /F40 351 0 R /F42 352 0 R /F48 355 0 R /F14 432 0 R /F13 588 0 R /F11 504 0 R /F8 576 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -593 0 obj << -/Length 938 -/Filter /FlateDecode ->> -stream -xVݏF G|0|HQ$JNUj}a,:0\6-HT/cE b'HhrueٟNO[8 2S/nіsxꀄno`B!/XXL/ ]pЩCc9S@YhD* ƙ0I”J30~0%<6E7"LPotDү/$-W}9l:Ș4@0)oύ?l)'6Fg-hO%=G+B2-s gYu -endstream -endobj -592 0 obj << -/Type /Page -/Contents 593 0 R -/Resources 591 0 R -/MediaBox [0 0 612 792] -/Parent 567 0 R -/Annots [ 582 0 R 583 0 R 589 0 R 590 0 R ] ->> endobj -582 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [446.732 642.127 458.687 653.071] -/A << /S /GoTo /D (section.12) >> ->> endobj -583 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [372.771 630.172 392.198 641.116] -/A << /S /GoTo /D (subsection.12.4) >> ->> endobj -589 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [196.692 554.456 205.878 565.4] -/A << /S /GoTo /D (appendix.A) >> ->> endobj -590 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [196.692 510.62 205.878 521.564] -/A << /S /GoTo /D (appendix.A) >> ->> endobj -594 0 obj << -/D [592 0 R /XYZ 132.768 705.06 null] ->> endobj -591 0 obj << -/Font << /F14 432 0 R /F40 351 0 R /F48 355 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -595 0 obj -[329.4] -endobj -596 0 obj -[500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8] -endobj -597 0 obj -[277.8 277.8 777.8 500 777.8 500 530.9 750 758.5 714.7 827.9 738.2 643.1 786.3 831.3 439.6 554.5 849.3 680.6 970.1 803.5 762.8 642 790.6 759.3 613.2 584.4 682.8 583.3 944.4 828.5 580.6 682.6 388.9 388.9 388.9 1000 1000 416.7 528.6 429.2 432.8 520.5 465.6 489.6 477 576.2 344.5 411.8 520.6 298.4 878 600.2 484.7 503.1 446.4 451.2 468.8 361.1 572.5] -endobj -598 0 obj -[500 777.8 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8] -endobj -600 0 obj -[600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 0 600 600 600 600 600 600 600] -endobj -601 0 obj -[250 278 500 500 500 500 500 500 500 500 500 500 333 333 675 675 675 500 920 611 611 667 722 611 611 722 722 333 444 667 556 833 667 722 611 722 611 500 556 722 611 833 611 556 556 389 278 389 422 500 333 500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 500 389 389 278 500 444] -endobj -602 0 obj -[556 556 167 333 667 278 333 333 0 333 570 0 667 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 250 333 555 500 500 1000 833 333 333 333 500 570 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 570 570 570 500 930 722 667 722 722 667 611 778 778 389 500 778 667 944 722 778 611 778 722 556 667 722 722 1000 722 722 667 333 278 333 581 500 333 500 556 444 556 444 333 500 556 278 333 556 278 833 556 500 556 556 444 389 333 556 500 722 500 500 444 394 220 394 520 0 0 0 333 500 500 1000 500 500 333 1000 556 333 1000 0 0 0 0 0 0 500 500 350 500] -endobj -603 0 obj -[556 556 167 333 611 278 333 333 0 333 564 0 611 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 180 250 333 408 500 500 833 778 333 333 333 500 564 250 333 250 278 500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444 921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 722 722 611 333 278 333 469 500 333 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 480 200 480 541 0 0 0 333 500 444 1000 500 500 333 1000 556 333 889 0 0 0 0 0 0 444 444] -endobj -604 0 obj << -/Length1 1615 -/Length2 8425 -/Length3 0 -/Length 9479 -/Filter /FlateDecode ->> -stream -xڍT}7tR"H h%9` 6:$D:$$Tnysgl\߳+S=YT 55UA|>>^>>~BVV0 [NjuC.bwBPh6Ԅܝ HX $"{!M 4yjp(Uv٣y~[s@Opu!.Mh qaP`Gb@'/ wxP](nq/!+lCЃۢ t' ) }G=kGDٟ*?7WPtI~!a M |A嵁zyB=lnZD-=! ?H h/B _PtDstD]M!@Atz~=&[:ԅzlI짟'-r+@JZrg˟}7OxgnOL'1kxe* V֏>@Ʈ_$O62%6l *'߾ZBGԏ8 Y1LdV8'L&]Z$R"SSī6X, +$Rٳ‘zVu`qgĞ%bolsNOXKw/܊Yȍ`z;(t4̀,B=?;z实j2>έ(ySͿ=6qM*ن"U6ǮmHS {ش!h}XdIhk,JuGణCm޵:%:6FyįkLc^ƧYg1|3*45zߋcJx2GATmeA1{>{-BDNvƒDRsܷZӴeFufZ8)|; -Z7ȟ757eP,S $i]=jɋ昪~L2I#;ڇْ$&Vp? V.G `n4dBvϔ E6-1ZLH+_I7N!iP rxVbWF hVYvǖZ=4ٷ6asHYg!}fGHnO6 ?9grv u19v=\Tsb&x>Ȓ ׋[A -|mcgB4&h!KCx90v皘'sac0p:KjJ X!Sw(*uIA L']r1ZLDe0.415 q_xP>Vɹ8#3~(܇Hgjų_ -:`% UhS'e ~t b׶I⧃Uc2ő3iƓuOA(RG}U7RcrEWQΓՋ+RA !]̩51,h>! u{3h~jkި Y$j{E5Q.;e\"m޶Ju~Nkتt,0\7Z -櫯=TyBOΑ I.fc -:V(AG -7SG+Yv:u%_GjtCVdz1@wؔLأ KǨc0ZUMj.\/+s?[:Mu&VU }?Yvi gEY7A\Q>Q*)iǺ:&.W i5'Y -ݐwVT` -&`3cTell-iUP;R? Trl+庚OOMX_dXJqL2{}lrUXמe@5`;XqoB8j^HVsĖFSJ`WyikEU6;N)3=^B:7Fz`j+ Ԙ#7SI*hR>s[Pi9~%cDJ @N}K20Z1T&-8reN[@IIPB>ȯDH4>tʦG5=*Јm;ů<_7?[(Aεņ|u[Ưb8T4)~d;,ȧ=u[νIb -" L`TWf9cg@e1020(/5J0o}\5cۻ܁Tⵣw UK2E>w=k"fх8O+`EIk${-,3w5ۦCKy##w"vvF^$0Ic^M\ߊ8@0iFƳ7%´Mr[kI ûOcXXov<{Qa\eXUZt۫i@~qOqkCiJE~o!H x7L xUM۱;~f]tWj<~:׏ttsϚo,_{ ,J*+p*Q+,'>V/Gk ';_-x;hL|^C<,g~vñ:F j5p&4p|˛oZ42vl>_?a~}|pC+w8"K?vK )a6H+_^'PgMIq _˃$S/+;|Зֿ*E" %6rrbG+Tʗe^&))`C`ꑨny5v? Ϸ>Z%_YU#+mareb$ܣf|+p|1dv)Z)=B8i[fp|ç6FQ,h*DTMm~tծH뎧ʌi"Ǎt.lzʼn1E04+eV4*njͪW`HbD378˟j,%G7&5iݯ[uWH#i_ k3z:oϾ<׫iMQ;0B8̓+HZZڄTvAsl{;XyU싗1f~6tD~@MNr>xCMۋ9s~$%}Aʥl]r-(nK"עk(%',S(\߰-ufhAisԷIN"@cH(Y> лeT_Var6YaL]7.s6& R+jxRJǦ[h,_L`u\E y_@&!PQx-BWLsEFtjKioBհEkϻxj5HCdy?|0oi5.LQz5'Sչ+ٌ6y-<"Q@SJ(&ƺf{˷%tVT~Zn$>~>5 W/hBxzɞB_Tb*>Of (-:{+װi}^R.F+YDU*aUL@.O֠ږt?yX;3jɯUWW4?)1 9:5l:NSo뼚c{~-GF+;샅w4 2vE6R1xY2Li*zlS/̱1k:q9y-%L7NH|Syd1J^V{ݡLԼ0xܝKǧy dlg* ,6/¾m{OWȽRiL04+S$!zҐ`J͕j z|!eNKJeī7Fv]+.X7B{6E- M4] 亚XzeӼa2[%P4ڲ/|} -fΚtG%kٺ55vb[XyԻ$C]h( -IA # #Bt=4lv!McCy!1÷o&UATTC>9b%qWoηy֤=3[)(/< 1w: 5M`e_4xB~>>[nd0qe5Fc@d9k.do.ma -Ԕ0Μڗs+*,fL5]GOO'GE`H!\\{S!^upgHSBKډ:z CD;? 830~־ɗI'\\$w:Y/q1j(WDv˂tg&p3x}BjO(h -Ṟ_6y_+lxJfKv;ݸg~Ÿ_ GU~cg{DCMޞ?ܖ]g5uSESƀlCWl?nGS얻^f8zPL;ꨠ='l6}ɚ X%w$M 8L]PN;_xoxk ,hi1 vuէ8׀MmGtKs?㘚 ThȜYFR~׆9#dxE0?sA{E=߯$}W Cb*> -[-k O~,o TWVQeEz:\w) HĴ݁:KFk+7+BTRݝo5^  ڢxV[O=ؓy#{ACJ b4`&#F>UkPG0*17\J%a!a${Yڶ9yf2 lIs/p-෠&?վCI +)rF82^-7؇$lIMx%i/*#wNn4J RkuH%c -"p xqO_U 9/\beS9ߥY%tf9+%8i|3]j<%"f( ʥ\z'{2RG\9W%[ePMSQiFʗ--d3Wz4myc3>:YQ>crR@_xI{OcᄆkV4@P`)VAi7sܑ*gh^N'Uvx - B]$9A2D^rs ܮk:,ݺl3k͏Yתa#I?i"te:o#߰@\8VD1Wq9>棵1~EZx_ΏxIs -/T8NY`7߁K(-ylFqo|"Ə,Dh|88XF~MvBV^)~֊+RC*|acֶɔhIuDT#~Q45;m:T/R_z4x+b@.Rh=*Sɍ#IbCLAʏ:)q+6Vnpߋ-ȩ-%\ܐ޽j$|jXlR3! B0P-&-+D3[i eB &VVغ^er-Q|)!ׇi܋0V<$C"(ʗ+Ɨr9eucIQj*R AX10\GGTb*&'zbyl]ɍ yWItAgʬJd Lq ľԧ& K> endobj -606 0 obj << -/Length1 1496 -/Length2 8632 -/Length3 0 -/Length 9645 -/Filter /FlateDecode ->> -stream -xڍuT.R[P!$]KXq-Rxq(E(w)Ӟs}oVJffa疳w]n~>q?OO6c1`p+T` ăMt< ~ASq~q>>?@W8@lBAp,fW7 p?K;_LLO8@@6'Év6lN8/ (#z 8 & вqŌ`ewu@x@l"< p@   wmu9  wMÍ -v* y0aBD wΉwz7'o?7W7 P0Pv`ClA`(ֿ?A{fճwB| _^55yS _哗wq LaiU؀ʨ -upx{, ;?Or}eߣo'g-?!5}!m\x8 5%eM=忽yA!*#{u;f.< W8c~hgA? y\ae ]˽$_Sb;mxќ*^otkz˷]=4 d7oB6!VcuyG|խtn0rrCw:MwXW!Ǚl&(4DGgcD99b ̖^_M.)((hPψGY䷓ȧ L{7Irsl dTb ]՞3moO'V4XI+[bՂA4m F)Գb?qMv;~պ/|ᾈLioX0~/#Cϡd=?'AVBi7pzA =_-3EB>?~P^wնns-Iw\ʽ_l ik)Š]Mt=e7wixol u6^tUZ8٣#ٴbaeU,˳`OڗlH8 37P>7Q?7|軌5}hPw#@BU*$~j-8dIUCt㢡\,uu^#yFO|${*EBNlU,k7RpE3ɈRLK2Q?l<}[9OIz4:y2)~jKC<;t0CI(6a &Қ+I_͛c=bAlbEH{r[ks{Jp -9%^7&zDžQa^t/&dȟ -R,xRZU |1OQKTF-8RotqH ٶt^P.Q6v2UT$m^WdcԲ,pZxig+5(5 Xё5k|&/hPݍ(e(EybrB9Gk䗢k=ĥ"1:7 -JF;?w3& ]u>u1}bl3@f^+݃_k%zdp2-i"XJ ؛LƇ5^ _l7r8Dx}J_V?O}Q:6 ;ݶ[kZD3|jVySɩ6g+̸3=!7uVOS\Lй>"*;{u4>򊵦NLWv_uf~n^.v4 ©1e7:f5/BoQ4Ȱ1ْejrci,g.vB[kT?Ü)0Cn"\=Xo|'xʟD s?%rjʑ"Ur1?;r ƤWP#12;#b/ۺE8uR홸G-+3X4$>?"jć7fԊn_w's: {ѭXV ȉ<oDGqz6&^r+y =𱩬+NYc,Ozh`R(AҒyTåPJD. Z9eISbASᙓ ivZbn"j-'up^ԃzGoR].kĄ~ ZP8ogƔXvJL`umӾYCiqkBcRdЬ,"Iɾ/Vx]1OW߈% I]{{d}U]OX }JV˦3u#jg$>))H 7麣.MzntM -:h('tR㧺ݿȬnj+sSw҂Q?%k1a6u7x]ܴEoA]sӋ6*fMcB{NI _M@GV7(ˡTg޶+Tlܣ!%?3I>:d o\7RéԔ{#4Pvc# 1U.{KQ()YLpp(ef4vVWXCwkpRi|2&Odee޷)n JFɭ8vuouCo̻5U;$Y}d{քG O((qH0bͨTĦ\ǧuMx$ێ>-9^ݯEk %Ʉ[Qq:cۀFXK)f^zm{tVW1/jů5zՄ9emsGTԇm^9M`mP);Ӌmφ N&M89Q@V荀 oCz4 T>(^%DƬ$Qt>(K_/Cukium1su򻃅Rfϯ-_,-n^r$Nk:Dpε-g26/>kJ[Iv 94L4@aG妍zraGi5*( V^`bꡁ|;Ϗ[[`O#LWߐ2;bP cXMz_+N`C=bSM Тk M99n}9l/-cNM boccw}/TNZi02mΖ1pPhAȥCH5:Mq y6+^G>OzFP{TVvͪzĦپDkL$1}*[W>C{ز5ki{pP0sY3?aL$$DGZE.t#ՠ3'&N%4K_Lh3ENX F.+@"nwӁA,<̉TF|ԦdQCAU"aگ2nҝ^z8 r'W_> i.܉9.;'vY(p߸!u5^.:82 XWX;YiV0n\۪5JԷ`6o84^s76RciLDt"Bhm3m  Zr\G/c6 ZAӥHlhl9%|O7brb>E gDi/GR&ī%ޫf,?ʲ~hh>\=mBv$RQ$2'F, y#Ύ}=|+ېL͂Z:cw͚?ð&]l'U i{EG!ҔL&.lW 2t1J}m5qT~ ֔&iiJ%D/_HeB'xZ<' -JoFϨ5@շi&mezцGTxQT:Ku1(57;Fąa`Dgy$T<ܗP>q&V&3 47 -Dzj"Tʄ/nrb97W'ʙ^>=tM0Xq0S"A+-ӯ eZ&!>V@$z ]v{⊮n3ٵ4 |>m!.$!_rE߉zqS |qzeU;x0['ñ /jepF7ϰ}.d\D^(6\?RBaLc&RcђPL#xY7V&>w|-qb9ߙᅜ>3T -]#m;auymW.Mai';*,s1U)מnb7t3<z$VITΝ?ݏ"J[NAɻK2X`8y_;]hzK | -;&6ۈYr vq.zpcvEuh{n -2R;&bVOˤAԧu'u. ʼn3 &3O9-eW: D3^$|jp-WR?WFpZG ~G$_*瞡ҭgJԱ+9g[d*ڳ,|D(Wꁟ*M+ےYJGq u[5ZG_CjmX@nO~iRHr/ff] ?Sb,}{?ZUZn9hl # 37K-=8FZ Cܤ[d>H_[1 9VX! Pig|5\f81TX=m -.EJD -撋f*/;x-STse[WPf~OzkUm~hUHOWtdC+{d+"qiz$ -1e7tpKwUhW3.|r̓k>PSR9TAEwc6@zdI7ݛCc4khPVdT-*qլU[߇px*G鼾KnZN,νID*fҫ<ŶX*WoӛgV"vK쪋"UyIro3I%~Vb(EFٙ -N0*# hݘ:)4]7ҩ9/UyaS(;!:(̶XL(9nܐspqá{# Nc(H1ڎ}=WIօ?[t8 v5£nˬp%j=]Ndods1-ӕ?mؕ_K&]66REmD2bM$ڢ~<$@7#ԉ?<9q=iKTf( ;{])ctg.{b>J؉KoensDZ=^W81eiL Vh?a%'|cĊw§0y['6͗VΈWB<9&[!`Ɇ5NcBO^XƱDbJEވl šȩ -J!1ࠀaLG90Wbxyql@%^E֡ [|V^1MVPx7",?1B.S?ƻ׮ dc->W 筞bK2?unz/0KQ$4iyHӫ o\AyRGF6sՕ8K|X?g%|bUg[Dջ JZ_ c 1 8$E/v3/%v/!9]L4M ru4J޶i;=iJ o~b10^R{NMBiDYڸ|Q}5.%wexdyeϾڂ'n }FK @l˫=vq@p뽊{t[m5~O(ӒYn=L..`OWm$};;/TsD^ĹԀD-(7~;fS ".#9 (ȷi*&ħnqo~YS/i;1SxPg ઼7e (ӗQuH/yZ*"5V=ok@}8z+-'CkՄ1 Z7[_u]WX&q"HXƧPhERSiR 8ay-a0ȴpXg&};d[bp D񧫟INBh_kt8+Х.ܐk2Q^ G?lKȊ+C2?|Tt5>u-lɏ?v{O3shh#zl @vwrLZvC@B񼪢w;F)F&f(Wʱ_wf}lÚs{+#tdy,4c>#dKI&8dwX,럗$Tp8 ՞ [}r{s×0`MDT*Exs/L -JAEnUUo\W2 ϙXľLW~uWz&;s7v:n1S]շajU_W=g[8Nἵ {R_:rxVt$S9|LЊF6*կg;Q)[7ܭlvHR&U葍<ӓZ;2Q{O?m)W^|bhege^Astq蹁ӝ7O -N7:zYmGiw: [o_ӾRN礄ީyJ{wR_h?H[aqQ? SOSqgr3_F4?٦͔5>]Py~ϝJtiMHLC?.=LPIV.2Î\zꍇkxYrc=6'"rZ*!z7:$L h,%x?=s+@]`jl$^w2$S:> PM){HM!NmB;wcwsc[K{qj)^Kޮkpz\€]{<*cڲ *N)8#9204J;Hm)@~z$TkLv!#[˩:R~jo35T= Rpɶ *E-k/4b几wGE)G+)J^V\25rU mo+^{:aO~XG0zDZ|]UnWZtY*D~͸̀!; )1knYwNf!d\~$ -P.HE ~Z&˟EFmPZec֎qƭT[MFgRq jj}(zqKtr/!)x5W־@ V'-KZM"OojmKM!%B̿UtbZr8`*#1-{1,tt]F͓Gge9pS?'v9wo}"Mwk y~|"u#7#K(|̳kll~'j;d5lӔď,$J+&W|U%ha9HNzm%g>,H@PdK/jhxg3&M\Qͫ;Uv;2Sc|{h:뉼: -}bͰ$ҦoBS}Ǻfj#@џ|n[rNA/ͧ"檟mQ}leO -gt\ --oS7, EݨWrhuOܩލenyJY$7懮RH\v4RܳTH3>ٔRqgw)iHA2d+ଜImGx -o3 q;6wcad ->: f[lLxf;<l@K:F彍d?(9Ow\_Ws[4f݉,w%~ y*E` -$a4tSvGɋ(K*z׿X*:'o-a!Q1v ޟ|%d! }=¸ˍs 4.-J T 2dXjtQxEn3:мiש{?!-'*Kw I{;-d7]>WEhe_^#g۱IѴ4"EAP&It ?<>Ti1kbuɡb}KJ{2aBn'FCE\kkknw+42CʎHUjJaˮEܻ<+2qimj;[U֭#Jf-CoB%.Opƨ8ވnTCLϤ8#j$Ji;ͯ-8}ZJ5FM*F2uQ֙HS~ oQbp$6I45ྀb -"8Ɠ+0 0z˺}! -cāidwpS6D=hX|R"_̸2n804XqJ|mzøʹ1bn3 Ņgvvas=gցx;:5BzKU#UR]o_ -vhqVokX DX6_KshWR-xz!*ʦRbvz0ADUSέ=Qh`\x|ʙ;R6SrП. SUnЉFQq|W]_3u9p OǴ%=_(ۮ/}8UZji$ -OǂEvP]\Uϱ+4,Q -endstream -endobj -609 0 obj << -/Type /FontDescriptor -/FontName /ROGAYD+CMSY10 -/Flags 4 -/FontBBox [-29 -960 1116 775] -/Ascent 750 -/CapHeight 683 -/Descent -194 -/ItalicAngle -14 -/StemV 40 -/XHeight 431 -/CharSet (/asteriskmath/bullet/lessequal) -/FontFile 608 0 R ->> endobj -610 0 obj << -/Length1 1394 -/Length2 5926 -/Length3 0 -/Length 6875 -/Filter /FlateDecode ->> -stream -xڍtTk.(0 -! ҂030 HHHRҍ %?wZY^vV-]^KTGrF~~A>~~"vv=]t!+@ 6y0 -T] AHD$*w ),|UL.p@¬mP68!\Ç~dH Q6PtG(AŁ@777>3i-CtP+ 0@gscEXH(mApgt tUP`?_ٿ -࿓ V0{(@SQz-|+f@9( 9a AOYn)ppQD'CB!{lp{u-~tq>Ü\*MDج(0C!1 upv~|+4 -#rB( ;}"0 -`6CG&h~y{%nO5tU4x OV x - CTL2[.OE-8 4h.CPߔ_~;_U_ )vsn4]PhY#wա0hy ÜaPK- -bHj!a8,~UCU 킢E -pE`$Aď&0 %7@>8N1H_kEs舄D* qA"t߿ϿUC!Dȣ`ۊ27Ŧ8pa+/5t'疥wR f;t7m KVAa(t.~8n2["譇DS"㵙n?71h03DMpZUm;k2*F&i+ʈmkdJK4IuSy:t=mX6M띝LX8fRPU}pGOOWzI`,p(QߴtT:?: 6bˊ>ӷ)3gt|KC2ra5-α^6EZ,4: -;rw &ҕ1e/ 2p?PX7YT7TV? -ky\r̞7VB업gZ}ET?czm9r@Z-}$$.ʷ+kѤU5_X!-E,0߭!\iX^f6d4M[}g0<ϭׄ?4_P&S f0~aU'=Uzq#]ĹAA_[9?zds rA] 8jGdb"T Nos)xg*9^ՏNt0v/-U5]y0_6~E  P8ouឦ-lBVXˠ_ rk 'X{N -63]^/`n 5{{ΜPTʝp{g,+{&JVi^f͙2 8}$3"f}4fʻ!&f!|Gw.!8Z{i7lE1B) $7}rƤ?OEmYyzIG>e d 7VE#zɚ_D >f%Rɒ }E#L# 1OIN*\x,Z'6_z5 -? KKTxO8|Li'%:O eiB9ݛO?9}%J.N69g-5n5Pڨ0:[-ERHhcS=eW(_$ fdOtދdgn<(1al8+{lk|WbǖCQǕĿ/r®,{k" -'s>Fg>p$ZotUe‰qꕩ¼< TߙY0}}c蛷#S70Fcfi(Ksp ~`dlqIDP{L׳BiwK(uՏ -,N[y'nGfߑ҄HtmpnRD?Tq~zl'~)ti0kq)=ϛH' I%`Vإsӓ]\Z=4'>_0%x}6k< ]`7R ͎!L} {H1-%އhQe7A9{r -9S R'j疴}.!8/% t_ 07T,#h|H ȐQ<*\bg$h%3niS]'w[ 8u&}Jn.{x17+̕J%eLMvUőri9m&4{ŭ2|^ӕiPdbyȸY 2ºmH[;>ET@vFIqcP'wd - ,,3r_n齅Ws;իq$ ذ@]J'fcV<\~/S/X U$VaelwkZ|~~g] :OW$RvzPS޽x~︐ˉZ$U-a9~@ڼBZ,4Vg4F``(wé"Cқ4&a2\ b 9_צAw:wdr_=#)1 rlPoWG1_G}E.ߠW5JcK^Q}bc|u ~FD"+"xMj"r$u$ R$ܶ5jq[( I;LF{oA{:9]3Q$s܄/;qt#ر4?/쌚4Z%a!MuA3<Ä;[J7hPǠpQLp qB肳^!5Bx<|*<*󈰖fMIiv"0iݘ\,s c&1Ɇ5ƀ@eC5sDOw!LMOƖ*6]K-QiDR"}ͩž_z|sg_og] ;[֎kt^FTTGZoyG;C)QMS h lXI0Qt~^f>f?yJⰹhi(eLG~4J;F"&~}} և/6my %רz'^yqޣʩjw_q^_U Wh:ߐnw}{G޳-c9oSW~qD i9[`}a.b"tJYrS~Yz(^{g;^av<ʚdeW7GJ4RJ8qg 0q5_F tF}fI*6wիbaa ..V(}p1][h%);tCqzg t@8pdShhmoH^TfF͔k}|R~Ւ !Vo=vR4 T>Spk=aui8nwyMxu<$9#ȒJs>Nq5I=y5S򀟛r,]+SCG~S:&몘Murԋ{_x g HFT08z a|]us#z`7'=^J -fQD8}G&hy+>p_X:Q lE O4`'=hi;I%$fS n]~[NLhܟgÎ 5T[7xw12Զð=$G3ҭOjmy )o-)L3I 99ke' dovj"6Vy#y_!]/ uE)V>F_7N2yb 3n]A -t !vQwt~ -7h{rߵ9T 5Iw)}Izt B'/rcW $.6`!-Hʗ -Oz/N_Ys聫3 3 PRa$#h_O^rCVnlaWlO͔ZO~agejX//& Lt;"m_BZ@=.]\Yi?#Qp2l (~=ƿ,UcmI,j7M%/9~QBy֦λs0Dlaا/IO -?@TgxhDcsG *EeZ22>i)K ǟOo&5ws׻ ypST1ʵHO}ͦfܭd- o$ +(ʨ3b}ִiF4GVI.FcR#Df ?T3'׮2Fǜg -z~%ׇ"]6/-ɻN#,˦Ȼ4h;ƺrbLEE%~q瀳NQ -,h'Zw%ϜlfD̲l}۰ך]CЙ(`yЮw<2KqQ3^A 7Cr+hFQl"j]R+Ťh hr`psTOTXFb -&Uf+H%I'r=&Yl}^啅ѣ*hmΒ*Zw Ξ*Y}f_T,F(ZbPkWh'Aa`_?x)Hn|TUU5lݰN.浕X}*.)nb֡Z?3 RRxK@0wj^ήM^2Ęx3ₔsFƜLvq3=̽\˱r3|x{CA!f[,PH^8Qc$eŗ|MpV{)[Bw7R{"$]ORmNIu$2gwElA| 3nʯ TO '#8^G.wϽ7-ɴkz> endobj -612 0 obj << -/Length1 1612 -/Length2 18542 -/Length3 0 -/Length 19380 -/Filter /FlateDecode ->> -stream -xڬeT]]%&h~pwwwww,kpwww $;}qt{j͚U{) @tLyK[cg9{;Y:e ௑ L h5@S( `#;x8Y[jT44i'`;-_\6@;_*@ dY" -ZRJ y5ddPt14Z휁T3{'Ϳ{;SJs% 08;M,nqNs'#;v&6.k7!'}A&N ߬ 0`o7埒 2sr6Fssp gK;d@ p9;Y'_8X6fpLs6cgPL8Q33TIxLfp )w* -_5y.66F cs9l-m<k$p@F!dgWFz--݁  Nˮfg -tU_112?g hg__dh(ſڃT=ٛ?O'7!'!ۿ`s-grt-_?WzFYQٙemW_MMxR3@9c:{ JT }Sö* j'?†(8tM@=EZ=4vu$_-h2T>3'JYX4+V;$.T}*5 -՟z_yIP=o5d&sB kBx˗K8DSNUzc"OV -+NN,p}raLY{S\Z+ z($tK}Jq)-p*Q#  } -}LF%pz}jfjwKOUwMy-F Bmz@ -5hՕzKDhD9&Y[¡sD[MPwhp3 B|N)+;Vw7JZlLN50iFjNJ_?<ڟ!ȌH}Jߚ(Z%\Ӝfx0z]OAiYi{j~@db8!ַ%o5m>tLSTqDZk7`yJ=NPѴ=EoGdRSѴa#Mpb5aqVzSQ0>lunQޘ `zͥV \,9j^Xtl.@>!ao8zvD)aޚB8+fHND ȴ{32f'oNs^ht^nl8])%:aHթ#|{Pv1qN0΀b+٧ź?7\ -<Uƫ;]6]$cRG(L XfykGz:P[-ffuEq6q9lGqϢ}P])r:ɱj#Cj"xQn0dXE3ޕI 8;XoB+~cbpfK\8c֊c^"!gd7`[ -hee<dįre0䊈!xE{xmG|o0* IJAwHxNv&s^,|~7;.ٶ>[IRN9 -WDS1Lz,fD+?`/pԍu/N\4"I7[+ ]J:RaL23sbH)Zu-[GH>h݅O6@B Uۢ޷|aWtӤ. 6ZѠow65 -SwɊ*b fl=p\My)姷@ՊL:(`vz![x_ϋpg< -_VVWLP{:nB(ւ<<)^(c/co>ݝ/%8iN5kNRrVra!ma !oQ:@gN{8A*m*0HnֽIO,8*jc/NK_ZWd[lS'6ϱ[g9(id8 }y,yL7A8U3aˌ{6loib 'P£ٲja_Ʀ bbA'o_ - -fu(>K/EG7<ic/IkRȍ0v:>|Ek~03J"L1A|F{貥۔GY)OŒkʦSQ(lN=[K M ˫βرK`Kd^#`sQoS$.`oбǬ1QSŐ"1]Jف -%0,Pk|hZȪ[#7qS 8Ag{'L >K Bs8SB\d)[uw zR=&iJ"|֗0znH8rw)`߷<; !JD Zz/5=BQ,g^0@w?&2 (C!eFrݢp}$㉆(ԕgGvF3ECwiV~;Մ@ێ[Z0QNR;&/$UUH<#VO| -B+n`3v܆?.1%iU _לr4V&w51!O†_fN0wYr]L䈈+bDUDb̈9q DhikTpC8YIB]'+uf~~s RBKiNA E[2\(Z?Kc@&Pk -BD`|Z!'qIFVlߊz) ڪ -Qgf>R;D:@,HMrNDZd%:?te[#/0.}4iz8$F'-yBDXO~ic 8T߉*xN{8.j,mE^ s NgD58B:q@ ->V/ c\dX~G^,D֯h.&W(Yt{-"m +˺3Rg#1cV,#@"upqȧmHۄw9&90\vtfbSׁ{El]׊O9!x2t1eч)AL1.31BæQZv˔/ -^EҊ%awsz-=N KFj yj<&ta; -j8{ :Skm8"vpV){fbG!ySJB!Cuf6Z޾ X" -Ѭ -]fOT]QiV1pH LȅߺES5b.C}:ߛL~79-[Ƣ;jh0 r:#;쿈@`_isR߃NXM ,Vkt{(NNRYhP*MbVó"ƴ ?`erf47Yod^5n7\*{0ʓ[B3J1u2$eD ,i+O65+i$SM:jz2*FAX,Hհp6I!1:4N 9ٰXXsX+U+3/^Fܛ"p_Ma"1hUVZ(lF&{n2_~؅YQBO)zLmI$Um0o.cϷ|ŜZv>F`m֍?1L ->c0nѻC;ÆkjR@#4a)~hD`4-0z1[Ƞs Lm5mX;䯦䖣O -=/L&˟/βU^Eꗖf#u8هѺhSƒ6ܧ0?jn~PG{5yˮ/i/̩s-5Y:2Tˠ"P[/UĜm&lE3GݲzE~EAYֲ:S|˦g#[O Z -Π[ԁK5&{{zhv D5Suln`O 5.{4? BbѬ%o$hZ`wg1[wxۥ74 *(8sF3Ozhe9ԁeJ1<Ժy6fuȩE:m ! |PEPsɺ))v2z23R{hxm:n/< s{O=Jt7CI0?_Ps$^*'~~ݗ!J;aPjdW/w-{,H1*)&S.r>T 2KۈsHz8iĭ+}:(n"thyIQ_K:a`e[i__oɤ:39~"hYΝ}N431ݧ'Tr<4/,C%DR̶l2`e#SS L[S+gچv>ȟoK5W?bWU"1v2=avbY\Gn8}o.@F|b$(;%$?-tD WDa M M-˴94BGQѼx9f :57^dC厯ؒZ Fe`Ӵ!Wc`"t@2)<ǴO5QU̡4D;=xD j=|H!j/Ĺ輶Mw6VW(G(BGݦjW)l)[׫r<]xUqùp*!)³u>R]|պ`ȷ6I7_۝Vi/͐bdce{r(~ËԬ (= ;[dpTHk;A<5i8RoWWQJ1Z*/7<=3i`SEw֌Jg&ol642_%E`^%{ȖK"2YyfX%a7 a'ok-.,rrWntQb,*Wû= Wu3~ʴ~ǂ;`ji@?rB5nzfk/=-1TqEϟcWoׄ6/_Dǚ~ǬU>} ]-rGw,OUÂW5 RX Wpg3(P3z,U) "[dI~bfI@텙b׼]*Bڏ5Ynt^vhs+{UDP#MdsE[do{^dwiQnURqsbfv0+>m"q3ZYA' #rΤpd/SvqR38P7{K4=gA[^lB._[CΜ -|@j2\nNժYjзDdi8lqا -ʷ>Mχ0ds=Yeͭz"=1jz8QT>=m?F +ũ!ef'FMoh#o7gчL;OqFbmԟE egIsU:; oP++qLZi75}#Y.+r L - -mB( -MbV19ychB>.P5ш`b7HQm7&V\AYO S '㍄poKA4f'o/bdljxKބ ӇR(fY 965,3(X9!L0dGT& K.N9OM'_ILXsۣxM)D8Xj9(O -թ69$nƶ~p/Zi -_,d`a¿_gmѥsNL¸^nHq3yѥa W25"E/5?lQk#Ԍ/P~$W|CqڪlH484R*)lEsvJw6m*ŗ uӔA# |2 -{ @jC"t\&&s`̥鼓̑oWÌɡ Fc/&|)'‚7Jګ9pPe~@b8x RdU$A#@v}#iW;00z~x4z$ -P5A}S<;T)A -ӒфGYPk(fqY an$OiلCwTz47c֧e#lTų*wt`GPstS߰#p? 1% $vA:*T8eiD13@2LtfrU'm8`-KDL5bPqdʄ Pk ֎3*\U+<*Wˑ_ݫA9 !XQQ+P_@$6+}Bl]zqI_5eJ(Ď=M3߆1`Lug7z"UzLrsYtӫv̋)w)GM99C>%Yv؍]ٔғfo]Y!Ӵ\" uE ?G5X},u -`vjAp6~+U^`od&+1~^]oKuZջ(^_O|-}F}VVw}}< WT6V5L/AZw?7FЄMv')Ǽ:ul |$`?)r?eNJqoMUHCWn ﰒ)L л9ƮrW:#Y-˕Ԗ,v70Y{ܲTD@? !؀V=m/=6Kvvh6 T@B8p~Dȳ}بH>o׊:z+)C(CG889GM*[佐SNtoT.a(:&0j*d3_ wV bDwK̵~Z$ц\=U"l er@e#oC<y{g-%!yHZޱv6W|gFx1ta1I#<|%/ -?9־#yr{>lD[s, ֬5%θZ)W/V~z |{{W.[Ǹj(&BwZj+\CVLlPs}^-GȐzqrU@qjy|l9I~a3pWISwKHw5L<빂YBدR6fFI8F\"ޕu5lеu|IҰR1BorT)aȂ7Oя/HmUmV*)rw8Ο-,F\~|dC9k\®-kVўĂ+_HK"]ôP2zW;@1w?toTE}& -V:;ôQy̪Gfn$pTeV;e1x< N4Ym<$O0q1uz$e6\SG* jt8!>؅ ϓz$c?𥒗;uwfnK/4fNͥzDI eq_˶91&}~r=ڽsT{Tjr1@\HFH3xzjx=p] T,XC eJi<(`#fzWGvj lS! SYJM<&p։#qoԓQq5p]K.qy2e;f ޺&'m88- = c!8I<%v]vEO+F‡{9W72)$蛫s"#^2‰َ -9}^Q*A㞙M2 3z55cc2wsYiZ3N$A.J- E欀7'~KHVwt.î=47S4d$1OK-|63Gg!6sG5uǣy{~=@}kKoWX3h nK.T~{^&}u?97}[Y#|ίlޡgROge*zAp*#Wu$wssZJ]P֡#v"!й0"iBUU)쿝3)-YWZ-89Vlʚ-. k`Aڈ_5 :X28d,.7Mm\B ّH|#&߼p'8[ Aq-[!)o,a} A@z3NOEK)!(lD'l"Q,|fwwtduWk: |T^~]+1bڡF9mS$i,\CďPwI}f)1d9 ڹv#z.J `ŷk''W=$_0Į +~9]6*Luyb;p|.+#[ˁ+EvFv^SU -oR=FlCwLG<0 L-K 6nX -y8{!."˞#th m߫Wr³ mNU$&UPБ,[sl -Gx1fH(K;8ws:29_O_1GU}]mm YY2Є7 -l_ӊB7H~ x Ѝ>Z?>'XN D9\kۀ]a*Hr'nx% j*|䋢cMe4|1+"EͻG]x8"j:|Ӣ񈞞q:#^povIyܫVI֝tܻa-.BRGf>1b~vy=e.} {Ӝh'~p -dnh^5y;"q'ӞdWY}(Ǥ]8.eJMmJ#i3hzc^*Ym-T'\+߬њxR(O-ɑ@NINv6{?E6+O4Å}̅}oT& ?/G3KgǨdn~&T yY\sS.*GbfY㾞s2Cb0yoњls=U[G1z#p]+z$ F0[AdY:5N9Rό?9j6',Ze FSwr3|4#2g 0j;@&9 3/Aedv\3Idןzw`{Sx*6L_Ll˧HUՇW7+a_=lA8 lzv'X5t3f|"WVcwLINM?Պ}_ORbPӓ6eV%tRͣ|/];(R;Q8k@9I>8i1 ^Y&(VD!a$V "stO8.9\Q_)3wZ}ʄhtsS3!c 7[kr^J0ւ@O1 g˘%*Y]`aqTߟ &E~r+rAd]5Vyhɞ|_TߟL}̀v{02DY৴j-r-#4UzueC]h[O4-~,o;vT]O#Hf8z|%a]n0a'%q P ~"b&g~>Kx_~OBW0n!0^ J:*50 rTyym.zܑZby{kF`o30 4ynD>p/՞$ة )a3ˆ:$+h^ .3}*+R1I6B:mKu*jukn퀠rKHL@<9SkB~U>etZ ImP7Y7e0xNB13k+7j^mfUW(&:x=UN,:Om{ĕkqN65, 8b-v[D= FN\"okf&w.U/ ?~Vb^ok9ZZ 7j?_)|y`6q siFQB#Ql\M7۬pտeQT.t-.}i=:4ZxtJK,, `kꯂoqRൢ@J4 cY5D6+Hoh;2+ >@cgKW߰aee%o pN^6vy@V7 tp`Xd(D7ӛz66?P1 -Zn6=f I̾M0cV\Rg}8q(l9WLʜߙ?%71!U7mAp9~+|P`ͯI%#TpΈ,0uNd"7 -栗?G&2R*_Bea1rXАmE>9Z|'qW8F,_4n5+٣i\Ol|lҫ!Dܖ/;XDl~u9L(/3-'ObjQteo4zL#o 6Ϩ謯C)V攛=+hϲ1'L=ZYY~L?|dQzUp -P%9|C*o0YV`RtP͙BYs6w0Z{mG)tPz;yxN#@{t!J// >z9;ͦ" -ˣ-S+Lhq5v+HU>D1]Y1(||Jq4}ջ3?V[ӡc*Ml;|nH?S׋ L-rĸ94=ѵj=#[+ݟ|OЅW#D-D獚& :*鑏FX=ye+9kCÈ7ht".HZkq꥛~nP8H#ԑ6vŝtL2D?T9I]lR1I}XXvYA8RoWgYq]*d|Ѧj[iNY ڑ3oFRHˣi·#g"M"mE_mW(}%7}ÜwzDPͣX z걤%6NT[*?Y'd?У9Xy6YGGXt ?!4ha~DqW*tP'@qSY9Km\CIn#x|@;xaEO-V*3 OjuvƆmش4NjlD(7*g/lP5e8PT>6TȺ ZEdw< , -O~TyjQ՘zܓ^vy}U1dD[oLB 4Y8C?r6apM2͸+5w595bRtRNȢ"E8" -TDB )z=W--8JjQ՛xSFAYȦ~~Gȼ]Hоx<>|򱸖N^7^7yJ1UlI\1(WAFݔIR0}M --5DE/_߁s Nfngljs *c3&KǴ RǦ-ipX쵾dl  I\!?p9*~a[:J -endstream -endobj -613 0 obj << -/Type /FontDescriptor -/FontName /MLARYO+NimbusMonL-Regu -/Flags 4 -/FontBBox [-12 -237 650 811] -/Ascent 625 -/CapHeight 557 -/Descent -147 -/ItalicAngle 0 -/StemV 41 -/XHeight 426 -/CharSet (/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/ampersand/asterisk/b/backslash/bar/braceleft/braceright/bracketleft/bracketright/c/circumflex/colon/comma/d/dollar/e/eight/equal/exclam/f/five/four/g/greater/h/hyphen/i/j/k/l/less/m/n/nine/numbersign/o/one/p/parenleft/parenright/period/q/quotedbl/r/s/semicolon/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) -/FontFile 612 0 R ->> endobj -614 0 obj << -/Length1 1626 -/Length2 16047 -/Length3 0 -/Length 16896 -/Filter /FlateDecode ->> -stream -xڬce&iۮQi۶mUڶm۶*mۼ_ǹ}~511GP^VXƉ knm`k-k)M+cld+g!%r0w2w2 LLFNNNRBYA$ 毧 ׎'3c1@HN^]BV @!& 31vз;X m)&6FH7#@hglh ;`oNsC+g _ 뿺m  ?&-l )_ajmNnN20;Y7`8;ۘ0cӝUogg/oY/ NV&t0Ls:mjnCϬHؘ-7r:c5⟙ B`dlC/k7%e>(o!'G%{3]26{ g8[\ͭZhmS'%6iacQH `o_+;X_-220NX21Oxza!Qi5 r!pRr"ckux2qhY޽8)2NnͿu30I?ˆ36N6F' Q:;8%_o76v36Y[5HHse+iP*M kjs_:<:Ű"I6&G$`> )O;W^`cP9ܝS7uLGFdcRމR[pvNpD>862amu:mv^1hËj3u3o#@K4{]-3el& -JTdGuN.ܬ4ba0#:73 5IIl?;>+[ qP(׉pe@FSP[y`?rB 7:&w=͠# MU)_뎠|+i tX_9B3䣸T -$._6F{F-;P38jʊAug-4UO HY?+"w 7.d!–fP>@T~/06`']WGwx(_֧ku$7E#񗣞s[ a &*2@d1_?qIS58w/) H.7N~&(4pM>/?Tr(&hFa%YHH$Pؒ}iǑv0s* 453iLwt4~ۀmʕ9d·93BRq\+V4Є~7@E6X1/X;(f9畃!^"iFO.yx cSC<8{LOK1X+π+Ȇk)m&!v-Ar)+pR8"P8BW|]0o6U0"pp,rN1w>Yz'?5Y&G{Ч?0pӒPSrkP)=B8*pC&E}ٻŶUĻ{wo,4P-]}8zH6%S<;W|gt=Gd}m!0JEi[,O6WO27(WQD0JQƳ'㉟KQ2 i &`%9AIepbGNt2!!13*)OY$ӭRcLAn/}jB/jJ@D~2CC?i#]X%HF$#%:vdxhCv6=aB%:~Ki.ŏ@`F0۶~gߚs$%4BPBQS'em~*+{fϪTKfՏ[_vJPCx (MP1$)Ez%1T>Sfx>a,U&E,I>fc яK$ٴ9~?GqX"`DCsN&:-IU%몵YN`[X(-b¼,,Nxxɬ%L -_jL^fgZ,SL*#Wҕ5An1]AgY zTO"6*n:Y'iORzȒt#96C[[5/X 2[K)oD:(eI-娠1d|gEU5iGR+c -;O`G|SM)@lr=@[*1\7͏WK*K>\Fo\$&ȠQ違w#.MbQ( x`V$'w5|E6j! ӣ:@`Kmz4<FR7 Ƒ~9e]^c-fsol:,I͑%nΤYKO@qnLp[YcZ |";`̖!SƆfTZ(50y6VRZ*-N-aQ'3;I1I7$ -DŽ0޾Ϸwm,i9--ik?"wNz+XOϑd8D}NCfc׏P˛& mg 'PpYP-dp >´S]4{<5Tk k}wVJL|VIk~~y!'צ攍S"칰p݆hs1BLSOG96"Hmy:dٽWМ;y Y)y5˾{mgme;M\NsHDw}N>k$$[v28xW4 7P)عa'xVͼh >!Uk_=`o]+t?AFfi4Y ZGTHZ=U(#hTC -˓;~0h`ړZ|TDJjvbZQ138Ĝ|iei' u!6?֨ ̯חGbηpJ&s[ɸSzo -glek|.U :.RȱhoTn A"^ǜ#a}`:ѯ951JJ^,2޶ѽ-8B E~=#i0Q A"k~'K_7sP!*%z`m1:+)윲#uu T{L8X@VS Ċ -861n7ވf :^QavkgO&vou}B >ӵ_ YJ@Bw+,G -q$jYpUo0zۿ$KŌTdocPN|`Z6O9 -v??B Mh2BbiS505ڏe&7VlJW9U@͏])-'?ܔEQgZ:or+Z^b&*&a!  L]f5rh@AX\Ou3:A8#Ѕs~{օ ],\8%"CzbQrM* /a14Z?I3G?Cwڊg>\7!8*}zd(}OKomqb%ǘO1q<"9h%玉5"cڱA 7RV1K0{lVҍ&W珍F1%[ϑwKZ P!;s[Җ[:A2y3ZEt!-LXIG%bG{fQAXEa'!5k^#嶸al>l%|7i""tzBƑޅk{tथ!"Nhh}_T 6L=M6fpU1 -K!~^K1k[ ! O)EOԱC[ŨR)g\  .QxfE|8?ݭ.\c' -/HP:;W -۵k~MAQyf.'8l+ixqF} =̎v{Iۯ/x3e91RD;!&A?g]y„JkHhO%cdbJO= 졵RTM H! J^[)=OuĘx>hHE)]p y:] {zK2i:ʄ ΐ,[f1\Եu*ܩz0./TNKS &nɸ0SJČZɽlX!oDV= O4A$vz]keBso?>]Wُ8γz-{tBYڞpKSݟ]E7Qf*<+lQү- E<)c84Aё#_嗎<<ͫ"ftL\d!t_ciEb`*#$z= -u0:(D: q0mNg MhhWv,Ø8N.ZP: -nc1zyY;]JO;4;M1(`["ߒՆU"m,趃%ВRzGviT6te9KErN?C@"⭘UaBΟυƕ%?N96{ݓm_2kRP7vt.\Ā.yEpr9n .?y_aKcR77l4Q8t4MOWt{D0ggh03SbV0wq:gYjeC]~Hw -z9! -"3k{ -Ư{p"VOjPR?N'5 c}icY3~(^:Ik*e |Lt9nI8<SmI1.Vi`o_oNܮ f+"9Ч5mc\x$ɏj݊1հN1] -O7iHʬM D>ȑD~o*δthK1նy Am,'rMZJ+66 joHCj"^^;Wb:l_gS1[?38:S5} -I{ڸhgقHI`ZN'&խO%G,Z%uo`A&j}%kųoj]<z,ńhb]݇=w1"vDD0d]>ކ1QD~{n3Be[n-;aAPx@y4;Pp億[6mF 018?R:X{rx{SwO(̭k[ -xR~HX∪d^,߱\K<&]pXB%t @adgtjkTcl=:5 п Aӕd~ᗂ;9@1Ʊ?SWmpLz'|FDTZJYRgsrKO:¿b~Z)s[_e:Urx$8qk3v8V%c"P5Z> \XQN:>F1-;bTۦ6?]5 l<P7@$KUU!gF3϶͋y6rD$daӁ-t#@NDcPZT32ۍ^yȗR2فgZ%#[\Sr;aHKع9Q]~`2*{L5ӯ=€L,U$tfhPQ{6!;ԋ=ҥemwC|5C6E&o]O-s_Rvۍ6v Rm$R=)on`jIX R}v!&a*K#T_F14~BnUpy %?EJf9r_J>+3=R(TNenUBթtu뻛%c $ZE/[+u|pMHr~I((DfBrXzבrJ?֌i|mr(Iwb - > Q~}ĥ@[JP[Y0+VBA*6&3aƒǫ Q}?ǹÚ}o_X>v?"f+cS/tXwrge5]f2}tot+V_rll<99ZTj64,PxA4)Ű\? v(77UY[b D> Pg_jD /$pz.̹Gy%yK8(^vXC?rGQX1UvvýdL/'98b+6p?D394֎Ջ? Nϵ)_6|Z?3)EfL:lPA:Ə\Xe Hwa -oa\2Uc1{E$CPgg*5'=7^VcjC H2tR51<"0+l#r-SB] 2J"% -%^E˗cy+ԏ0 _QA18}, a!E28Cv5: FC%\9vcN{Yg746mH81aEUlB9=^"POqpԚz p"5a=EcHgrSWҗO);$3HT/dO Z>,`?q׉("bm)*<ϼâ+t-[xQТΨk ꩚)ogUgl(ݎ[L#k~ZOx_Cȹ;ZK?E4oڶ\ -n|`3doٖHEdx/~U$;eF &KCE+~Lݹ:3\;^piy瘸Z|M<)vRU*0Y |] -<:vihVԜL1;P -IU?Y*-P89sMjA&;]T#K%myӛgduěb 9>C_Z-3 fv,vۧ ;3GW_%IU}@a-c] =ӥȍQWk fi a8e^;GCVkct97Aй%7/V9]h]]+ۢkL[2dcI!yfAޟaWdA'm@ß_AL -jb\%o.)ʺ?G`h(wRƼzr0 QZCH+ґJlEa|IBF5 KfRҁTFsalL2 +,EQs"rx=iPK|Hlt*= !CSȓQ4KecP! 8%\8uLf2!ҏFnj7&cz#u/,. AB@wǟÌ~;պ]des RP,GǝH"eKjD^Z(ǖ5 =qN Q4"˳AGr25_uu -^dX~Zs'dʊr{VpGr.o&: mʛ]I_Ki~'^Fl v`waHƸ|XHf .0[עl4-N; -*m^*ΚA!)5]`<|"]Da7ڀ dPJH>tן+1I-d#xo;jQ⼇t!@EQ%mP\aߎZC Yum.r1gO P2=jKza۽Mh7fB]o01=3gi&:ܷl lND`O%A - 0V,hIYfMՠ43(2"}! ҆HF6tˉ{~NlWtØD (ZcVޓY̮vd'LJD5fӦ$e(*_uF`y,mhi 1@!pmaԵ%"uh1KnpWV^j1eD΢qX/F{ƫi?>(YEW@ t1uy`w(\bҧ{BĄ1>~.զ8.҉4J'%÷P,y֓$>k*K*6Եd _g &? 5 #Xg;OE\1b]/-]i{frPxϸL(V4EqK˰Ci+F6x+u[΁)ǚ'iElgp3z -eD3vT;saO뾣qgqEd|C;.0}L\\i GJ *D9c@xϬ+B8Qt՞] BK`&&VԕiWDu[Ը fasTO8!u[}Olڙ1MQHe)&Rty@ MUP"O4M}t0;&t:wh\SOQv`{^k|(|HÆ2xߍƝw:MYpv^*RP/p4n!grޗQގUMwE%~P!2D "`rRh1"y+* PFQJӟ5yvR5qpVQ8 ga -tn}؟Z4 -H$#DS0gpWi$8z vnWSPͺr87(֩Vfw!E<DkY4 d/&1ޮ>Hvutxl -JoRz-pwkKƺ"iSZb&C`Pm/;[9 զ7Ň_;b!/tWƔ 6cj^;ŪhbC븤InO -4hж&+$.Տ&<` A<xWXBC?ʼ[:J\0ni cgж,=zre{m~ǃ% 6߻qw𑳵?{r?$^4}ԟ>G } tL(o (3>mfW?H: 7 &=Eb srTHd KxOyWEs=Tv(7X6lɰs䴶Ό6nI?g6/*jXTt"Kvb5y.v/z%p[0<@Q,_OT؇W?t]XVsD=ȼ* -֙_J@b (4[ (fT&qV]/*S ~ u "ŝa7i]yyGXpiSH[#Ov}'*)"tΠV$s):=w|QՀz/'ϹвZX4tkS/\2 8}] -pٕt(o|XJ 'CHdĘ\*`mxM'B=ҁfc5'`bE7e]5%_) (Mif2T3XH XyWa™l,7Jdu$)W5bS}J:tE07>KHvǤw"o8 ;^8˅1)&*=UQ#_j< ''MqS$=͖t+`|oe039W Kk6`l$"lѧ#p BͶ߽u5`Ub"W~נ>`W+DwVVNX\ $Hh+ AYAeI`L'~ ŃVt+/ym#dQ6>4qԫkimƋԞސ8#0uPY۩e|?nyo}Lw6e8Bٺ$4&<6 d͠@/ġcˡ>~9#u$n:HW@J5Z8 ʹzf߈#ZS"afr|8whUU7hbZhqOhIy|'I###K<UݓH ;.9y|ź\`GQj4wg`>c8̛{ڜ]fS[`69X:ē݂DJ1[o՘EY\@fێ֩U8i։04Me^-0k%BCNyf\'C&|ފ8oN՛5Yifrg -m#]5jի.9fѤrz$ q0z4-eDm{s`<$HU`9i|4u/RH ΊZ]2o0ӈ2#yc|%#(J~~z/Jk\?~\6~7dy+o_=f}iFi1+n+^}YR<+L*@Ia˗}-G5d>4>4(WH]o n0MJw97oH@^4 ))mI -_< C[ -hRo:rcXb)iY\Eӳ"bTdEcQ=7NUf߉bq,A_%译JFy~.om] Co#XSs -JzU9Z#N"ڏVIxj!KeBNC39:|d~.6bHڼ:k3j5M" bT? +dzadï -Pl]ԌV9lQ=TXtZ]B>^?<*_ xDָwiv3ƍB##g(wV:Rq]S=Q"V6 -w>,ے`ɞa -WS@ȗ%0C> endobj -616 0 obj << -/Length1 1630 -/Length2 17718 -/Length3 0 -/Length 18563 -/Filter /FlateDecode ->> -stream -xڬUT]&w(NpkpwwNw}oxהg3׬(HDLL%XyF.N< .r - -1GS8ٔej75Xxxx(b GKs g I1y毧=/)`fic -SR֑QPK)jLL6e#Kc) `Ҝb8'_7SwcS?*z7 `sg{? +!_ ۿ`NNƎ gߨOl'˿j_K{cJ/_3 lO,#S7_0pq3 @GS'0 @6`djcƈ7vL̊=r\M fo@{;ߐ3ߑ'?totQ%3y?Zx߀8E/5̌Z:IZ([:[̀6{/_nV 3ө[X[CǿUv&t+&qY9ymYłApVT`o`DE^ ,VnoB<>bo,Hۛ3:j@;.I[5+|Vi589CzX B@ ·x ߪCx?Z=N@{#=6T)y>d4h\tLO.7t95'TT`.i\1@(ƩuqX_k -NN)F{)8'Iw/\N ZUhn.$[,l"‹Fqrna $cb2˜gui< QRid>43tCHk2sIWьbD-K.ow!TO:Ufda9psgֱ -=~}Q-eLJHh-ZJkDvإ`{ Cްm ፖɡMoٕ&<'d8} W Q?#uV"/˞{2oT=@-Ho M4%;s'(pɎC*2i2;X.; -~odls,[ _k׍fV)a g'6+ -T -{f,Tbv/4z%.է֧]a2R- -GR1';Ue Js\խ=X>De_ f4g9Tw^F egO7#v]? e?2}Al5r's=Y&o]ᤥZS@X_N܌U`bE~IoQݗz:,,Od`˿Zo{~{q:h$!qbbY[? 1aEH?6SAaL֚ p"P8(,S@ Kl  h6FJݙQYNtں|6J|_QOb M9ʏw#H,0f6/S).Oe\:H<_9(( R74yx&ƨH/7"r}P9iHl9c?""6ݓܣ1q+<ĕCD>BCpc@- 6"ّ`o4oE V>+T!-0 o7w[E0ul[z{07;OG}d}?uJb{U>bQÔv~[A,N"f\:utF{Z0mG(LmalUAJaa\TP(QĊL\, -xtX/o tQLT 5 Ar^ Ē+ ON{~mT+i;,GW`w>?٭!NUә~+c=e`%\ \b(ܩvq!Q+dWg{=30= 6 }FlJ *rO^Hlxޱ=:xGoo!JȢf~QnU'Ihǻg#SU92Q} [$ pjMBgwZVND_.3Wy!5(E+.;fȬ Y>ypժ,eCO@8vDr9tbǝ73 1 ԧʭUaXPA=cGp2F)' P[[v|?Id…ræEcWNZ$ {āż?IErsy~[W_eP$PQ近Z2O{vʢ:f_U^DI6(B. 8й+&&w%a"4 Pkw Tmn+MCz:%ZG0^1?;IbA{Ц5a#\'@"‚|mD $x('p 4 $%m2rFrT3g=_rZ9/l9=Іw -ྦzo _Xh?Bt0̄9%.B:cY7x]O + -%JG.R+T&\KB*eSo\\Sw?HνU]E,Xޟ+sz9 Bt_DQDŽm"2/ՀRm +m$R( -^;Xry -ZhPۈ҂MXjpKB߻0 )fdƹem/ Ԙ8ldǰ"j՟ˋW֖J<.T/5b;Æ_-B2 ,WFP\/Ÿ|,,iǽS{;n`Mzl=c[-mT%~!4L4|Z[ɧEGct/L7js;0@s7fx%"-& 6{^!둢 ҃J -@3I}pNRW}3+sZI-%,8v5HhȰE=^OMܜ - l>ѰM4nCh)Ogn"@XTwGه(;4҅ShfҧPrd[5瑤Y?&Z*~M?% {Q3<>< 7D7 -%Ia<OލwiuCn̲97~i3P7v!E"ԁT!NI&-oTFd}ڑ-rB =oўeCYƘoxϓ<]-JNج Fr'\weʱde&BRIyxôᣐ.P [ۅp_=z$/a'j2={>h n[PY8A.^xB.M{$neC}?\ކ6jR֒+3 gf!/ŋeZ\Z!U Y-4u nt0Xm҅I1r+@TQVm=/NS-;jNP"K}Tڥv8S!Fv[UC"<` eE~~K8c9.'Z+GIZKZ:%Xe֘d2=R"5^ l~-EoG!FڦlB1d'7d֛"{f2-awfz` YJ"A߮K`wF((čų鈷_wng&{Iρt#Q?} nSĄ2WNOG49UAM菻\ū8nX^Zb/EGO1 ^ -y3c$oJ&YǑ|څ:\]=ح-ۣO9gC7wI4 -aD4.guvYXBϾ|G5ܬ0_<̽)JE]|49$,$1W⡪ǩx|)a`+0{,]9#(Gx`&'pUN 4P.#76tN|IVpݔy2&,w&ǣ&_bk,]1iм~IAHW:}jƀDɿTBDh7N+4Mc@"d6bحxfvB/Pko?Y{Ϭ?Wt"zO`F amC(52>d~h_tpγ[sb75pX- - &pu blJGQOSk /;v&1(7IL\Q)D 8kr͜;/HOb]LHuzAE0Sz1]Yb؉1b{A0HqoaM%GQ6ܖ -vn'=~aVBLM` +~uU|hCL4J>r(w0R m.aL؏NRx\O?; -QA&!81?HC|:h>V2_~[AW5?)& -OT:{1-#~STCb*1M-j -<4Ɩ? {%qa&:mV7lш6Hm/wQvKWPl@`.kd h,rJ|禑\CcZ?0ܷ݇k{=҈A]ͅ\U1PRE(Yb1N@E[ ů̚3-w"B×1b$% -N{!ɡ8.\d6*ս3SI|NHE~XձQf4ýёS -j&!Iu0Wv/Yݒ=/^)&~~̽.jɊ$H֤m:Ԧ`v>y%Ef--%d U2#~Ew;ʹ:M5oh*4Q{&eFfyf:^2t/IuNjR!Oo+^blה 4tyF8w%W"qXTSIԣ]`mxCr3bN-)}ŻBFGUzDHzyYnvOjG97Ry<?f"əsB8kruV|X2#saO]3 7 r8xe"g\{8B=2svOXIlɂSx& -O :?^l`4/wb -]|ѫX".KFzY5= -ͽljKjBbG #e|U2F[OUyp;\ښMKCy1T _Ђl]Ey Y>5!*-A[b81,Jq ~} |W=Aτsx]0n8E)y,Y;1wt{vP*XqFO'*SpJguK-ϔh:Vƙzv Su;$',A]63f*;7\TÖEd /܄{9/y`F0b  *VF66ieHdy{`@&j hx@J#7bq=^OswOk|lNQ?3+b9DY5<|_tfOź -HrΛ( [ -!ZPU?yTn\=yduzBjW%7N/ z+ʇZ28W3:*,6hc|9|Snj!vfYfIMOԧQRw="B(nK}-V$$SLJWx)yQ@Yi`෣,yw|nۡnqcm6\\H -gܸ)n^~X櫝&ue$ѮM|Wq6ŗ-#$LGlѶkL-|ٖkP!ȃ1emZ1ʡ."rNh -̀H<<ؼLT ҍ-BN-oHí A&FH^ˍMC‰ HWZ.#lV 1xEe$6mK>d-HC)uH#/?mgZVŨH y8GC2giNm 5!mC.^FBLYm*H[+M`ɊhwݘhF:]9^ѓO@ ` 2`HA>3k74fh[`δ,0|5Z)j6\,6vە +w OR_ڿXvNpqNē W|*&☗fa%@bZ[La38c?޶& n\lʨ!Lbe4M‡H,IZ6J"&O!<"si.9>?= C>IHb_hx_^ (aϷ &|m@'tjAE{#,ǘlEGdU(\R(&Уp)\`&&\(zķl -yJ#=<:dMv\D@҄w oZ/Hѡ om„ְ`6V7քCDttb(Y%X;sppsRW{,]Nuqi0%8GǷJ46̮U=] uD?Ӧ&(jȦlsNS,$pX0>pGt?T:|˫ u "mlP.D1e-e:*Y.ac @-ɕ^{m`Z s~vpvIXDu*C"Gg{oʱk*Xс4(eItxإOYF!@ݑ}s{3$pglaUʹ֑iT+ѮŤ O]Idh+eUQ\jRaS9W$lQpR%h$:IoBIWZ$G+zxH3V{V['?B:՘9HnތPfKGv>]`905,cs>hw2.A7p!ѫ9) QꝚDneyA|:OE[IY. -A\c\ඵZe'*F3[D~P\7I`Je݀1˝hK_e _Hj쪶^79X5Er>OKhX)DX.FPGg7>VH怐TpҚkqvPA5Ɵ-ťmDǓ2T!PC%ƃ¤Ni!5Ԓ-!.рPG7P5`KIR LjCN -vѷv{{=p:OLp.Mܼ&}hNE6A$`jU?0i1ttSPkTĐ#k] #E9f,)f@ck7->r]ܜv@Q:?87n>|뎪m~:V&r$yQI,9~YkWl<mSc議^s*Ġ᥀|}fwĽYY'ww~}*¹H/skgG1#{qέbDtU,QsњX׭qL$_0#';IᮌT2rv C eal oV}X;<_p%\E* -1, .ƒ[4]*G;[1CJˡoj2ˮS})*HB XjחT򫱪G1+D-m>°eIj8Z!՜v]kQ3B 4 -#pi+z16EW7M> -Z'z]Xehna K+( ;16QRݟIFCdx ;Tx`zWP.\:7\b;jrwRtsFDH/<0cL5<Ý,"?q -ҀK}i4Inwitk`>۟&PaZ\OwGUtymLLOѓK'Q V^UfEW̿Hɢ>B. h -`Fh> X]~YRˊᱏMˆ7~Dd<rб >I{G0>&1`P~e#J026}1 -BxHA7-|rBΎ -S\#WvAH:srnKCVR) $A&ʜʞ_q7݌SQT~P)c(>(= -iT}Ebة -Jp*)3%9ҔH`f!ptί4i@ep --sV6W940'x/Qy8IK6ֆ**O {b0 ^A\|4b=1D^1E[Dwm{G 3J DYy[z/G@.iOS-&}-N$K>-TbXɰCkd  6{S?oA - )c3UTam([8_jfu 5RA^[>4"/H aZ܏FpaϝQhE-̛uhFF˸H:'JsF2{ǵW, [oq^s\)쇊ZwF &m|^eTLp B+pN^7S&=kP-ޡJ;׳m0K,ŏm"w&(ЩEO~%k'iZ -[k\?,k -I}40(>r,SF[I&1)u]}1# ->5xͦ\2(C̯=T'5>:ۅI,\Љ5gT%$6&ǙCRA/ttKr-.Y&l='^ea+%Qy򬓱p[XR@Wr k׹1@,^c"tEy -h1ji,Ǫ4{(0.q[qS{b`.4l|EI/TXR9uC|mg3R쥱qi&),(PnKkaaNavX5T8m m絥5ܥVvHBQR̃YhuH"mč($ /MYɕ*O{5`4.ߦ4S@pX%^=Ku$({+T{ޝܯuA䇸!} 'C2#*bq=$@OG.>I2ԠEzJ z+H+DyȴL?@ѕ\fodA"],VYX@*~vX1bА_,N5̔zh)'5ND<6#TZǍɹ_n|;3{E9\b85(`ܖٞpz=M_]K Q9,D=ҳ~]g@.ےGZd@ 6lv46 )H y,|A_ni9:/&)O]UalFCo: yGufPB7/<@YMt;8e-x -/Sg{6 KWn.}ocbvY.]sT󽄼Yx&ג鉾 -nkǚF̛+o0&49)G+d_2K]ҞP 2Xf.tSƌ*<&8t}f(tQ+"fEOܔXCqnٽuw%UD ߦmhP -e"ef~%mQ`da@J|%1}<ȼZ*zk5TB;XT_%B@f]߭m4iuR3W1#WT7޸" -RR,P@ŧ[ubVghTz2W۪Ӧ).*Ds'^V+(X?ً~.q-xo%a){ZW$wRt^iꪶC" oȃ[ݾ` KUt~)B[Uf"EB5½ʣ\E2?>QqN,E?dI#p8 Lf ,zSڜ,Yrg)&CzW7e-A-Ks}la\0X7gn+޲ݢ縄sqt/!)b_9|^Ʈ(jYaTe;3ؒ%}.y:~ӊl u[7  4;.]ޗ+/Ucxo 1I9C>{ {9>~۵|u]og ?@x"=į9]7_*SfA[r˻iXhz?Adm1DK?tl4f3eh%D `֦I[lr|ep n7wf&"q -ZLeDQ++]Jw*rXan ӟg24+ݘ:f/V&"br: ^xg۔$t=?%|p'a`W`bcgiOxA -WdJ}'+n}."hq&2Z+3i08Mr9Ngܩ,ie*akdU+0cg&-gΫ̑QKݳܹ&HfGYt0 OFTv*D[@uIݑ`)FZbqsiYVg#Ew?8BJC÷e'Qk--8SX]"a?`6_g}>8CS>_, /e%n/I-8yXYސSБζKsF 1ל[p)Y[ hK_`tLi>'9© 3C_"7Hxcf酘j)y 4x¡"S"8` .IDq7#=x@s-$4O`{o%0ط|UZ?`Ofߚ~n1i FEU~HO5F -?*Rp81҅)EۂLR"龻40O qwgp?4!LmgGJ2oWX٬e'wecyR&o_.xHʨ0p᫵lNт l47qNk¿tDMu;$Yi #sr%:0Hhi6^<61+#!1pj#>+_pޛ l-g4$8LA|* tF% %uYwW݇P#'5^xN [}[! =y}|xTyZt:ٻXB,n#aL:_G?4DZˬ[s˄Gg`^NZA]bAҋ+YŚб=Y:~a wr9STdf%BeA b4ݐZR-gt? $׌X+jhb'FUe8DZE.4dUn)m7!ŽK"6R0]+tĵR{(R]lG_y[qwIŹ9f037_o M3c&u\LI|<U-2%+SGBiT.UxH ^p |P>4JB4Lky \~gY_P{벺B{J]!WoC#y*j.]|lƨ.yyA`˜Iӎ&ܔ6qՍxK|DC4T!9:JJxn`ފG)ɥ Ɣ h:S]RdEXtFd(GJPha[19ufG_˶C)9ku-VnqC#'F"eJ  -zkcr"h ni@fn_ӕ}DJEN ߛML -I:Je_~X;VsFB9bVEL\ЯnB b g5 םZVILe2wҢ -endstream -endobj -617 0 obj << -/Type /FontDescriptor -/FontName /DJKLXJ+NimbusRomNo9L-Regu -/Flags 4 -/FontBBox [-168 -281 1000 924] -/Ascent 678 -/CapHeight 651 -/Descent -216 -/ItalicAngle 0 -/StemV 85 -/XHeight 450 -/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/b/bracketleft/bracketright/c/colon/comma/d/e/eight/equal/f/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/plus/q/quotedblleft/quotedblright/quoteright/r/s/semicolon/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) -/FontFile 616 0 R ->> endobj -618 0 obj << -/Length1 1647 -/Length2 5603 -/Length3 0 -/Length 6437 -/Filter /FlateDecode ->> -stream -xڭTw8mFt{^"z-c0Laf肈NNQ AtQ zw9|7LEUM$# -P@^h$)'jq`&Cǧ0P$B(, N  ) ˓ԑ~(+ hnb!$"r_.G H4}xC`H8QM!p uC#+-9@ pMy9 ` A!Bg$ -#N߭p\h0/P4 .( Ea^N ٝ -@!qp#3B1h0 -ihU' 3  GC1 ( @|1s9BNP ˍ#@Aᅆ"\U- -B9 h4v'tFg P s#Jr1.PyA8#@N^!?${fpE L.nRo*D7Ho"Oܿk_=Z 3qמ P  -o 8WwB@1P&dŀ] N Ds afP;2A{q=UC}CMeq6MLH~S!}@Yy1➣t_g}HIHu={L1 ni P(<&Bedgb{ktuFxԙ`QUb# -&w<~^` A>,]oY/b?Dh-+`{cKbΑV)PwaU86 M=]/϶Nz{:ERwn`P'u_D?(|(3z"35ƿK?UKGͺK<=qUxq%Y<:YZ#uQyVeȷ4MqA]#PRڵ朠SVH5>Y&;&&߫=+T*cQX^\aY$^~:kSc  - nlE 1/lXȭ9'LiTR +dfi9R| W95<(3-Wm& -]:i7X3)ڷEm[یmL6lit -GČ4;'b!~[/}(&/ G?5\ZY$A ;jsGF^O+ߎiTt*y%Voj`dMj/'=+}.P*IVuz@jMBV2U{T1eߵ̫nw%okU^Wvs5PJR`}'uY`MCdMukv:a_&!zJP;1%0tOh7ɗU- )%zoY L~WV w T3T~tE{Mv;H>Ǟ{qLjp9rDxQdh`c_>IʦpM,,Dޙ/x±!̒b?<,Q MFKwp{Nbih9.xZ:T VG"N0 *S'g4Kɇ4w֒J{(4$<i&~CN8_Jn}\*N^вIE@HG  !i]{x%#{ -}5]]q\~R+ gAf+n)IN>0i䧦Zّ4ª'LQȎIԭw/ s~ô˜Ccr9܊G:a>YEd:OXST(gޣWMN$mԧxR]fW~}'rm| ZHqz+QohUfH{􂊉RvBsuNWg^ݦIb7y8VeaB-wW/kYT05M\sH6< ? ?< ՄTF<,1r.I˙y@@ nCo"ߣˉ@^ Isfy%BYԘ"7LIk N=}CeL8*J(HƽS4n֖y8% -#uz홹w*N_h --YŗBD] 4Gm݂Ak7b*&fl2rH;-n3_,+!ɍɐߐϫ%NR*<1NǧpNʥ\"#Cn*=3O -iO0j%yFd8o |'kW[ zaęm}OD6e]SG,$瞲u)x_r=l1AlAdT`UdGoOV$u#S|k~Ԉ_l>&Ihٽtls0BhZNj1P©g -J~AiwONaOʮ=|J Yc%g9ٲ9`<{(:}!d bSНۇ+uwN{^ĭ.60nȻe)Cdts,D[ǿ8M\BY]i bhzQ?kz[9ARFZY&, d:/(_+2ZJA9fӶ>CW(_GK닋=nZ8KDg$u3&tj)s eB7l [OvHFl(.cπ萓!`B$nݗ X{biLXkTT"B]ĚfkQR's1>׸⡹Vxд*? odU1(g[~-4 -9HaY'xlӨ}_ePVpr(q6f}aSB ,u[tq%=e0Hϒz16TQeOf3Ǭ -~H]SׅcjB{=$G v.P4TձA$~Iah3&}~͛ÐAN PϬv.h^FM<&,vtyU츟MT@fs7.>p!HlMMPwl"ptRV'>ݦ*GKlIl/s N+$vlYQnE('il)_0Y_v"շ(=2.5U^$y>ƹ$H /\1Gtx`מ%i8>s@x! `:Q[`xLȷ{\wj݋4fh@Z[adjO^@U\sX%jgz,( 8JgSUH G.f 4@MAeY:f6V?$ˈ \K=li,{^?݀KV=U|1 aZ'XUHi-sok\Y,h:yz.UyI24M`rs+lzuՊAS$jSkmya= N{pʲmhL5J?\|n^-ܼb`d`wAM8QPP=ѐN;( '~RwlSw&eκ |쩟Ht5儔sO:1o>:"D8V ^hBaQ@o"qoYo{W<{udWҟ2kv=*r;9D'p|㽖qlGΕKz-!/ny!s1O2̮KgKw0jXdr(52Ҳd3Ϙ0kQP P?*vG@Sv>㈴On<,[UU~7T+'z,>Ƒ!i?F^,Μ^LyH}znmCgi%">^Tן}ڛ2ݭedzDku-줫UI\t')սccUa _E\"k~*kx_STJi[JG_tgmjaghBu(z]'"c]s$䷤ԮIyʆÏ榳b%mm- -GT0hR0WsR%ĢǼf2,Yo |:9pΆAմ秾lm#xcū$g -i/$TkQX_k{k -1W]d[ -0d&pl4QGg^|p=6nWL -|a{Zmsi`WM^~Zx,5{f6F 5r .U*ӏo_$-@ֈ/&e{Rjse1P=īlv_Sq|*wMղziWw,As󙖟>mE\mR7 qIt ^>_^-phԿ_DZWxIn,rі!,Tޤ^'R\[CN:p,2Nҽd -endstream -endobj -619 0 obj << -/Type /FontDescriptor -/FontName /LAOMOF+NimbusRomNo9L-ReguItal -/Flags 4 -/FontBBox [-169 -270 1010 924] -/Ascent 668 -/CapHeight 668 -/Descent -193 -/ItalicAngle -15 -/StemV 78 -/XHeight 441 -/CharSet (/d/e/i/m/o/one/period/q/r/u/v/zero) -/FontFile 618 0 R ->> endobj -599 0 obj << -/Type /Encoding -/Differences [2/fi/fl 33/exclam/quotedbl/numbersign/dollar 38/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question 65/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/bracketleft/backslash/bracketright 95/underscore 97/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/braceleft/bar/braceright 136/circumflex 147/quotedblleft/quotedblright 150/endash] ->> endobj -504 0 obj << -/Type /Font -/Subtype /Type1 -/BaseFont /PVCURR+CMMI10 -/FontDescriptor 605 0 R -/FirstChar 58 -/LastChar 117 -/Widths 597 0 R ->> endobj -576 0 obj << -/Type /Font -/Subtype /Type1 -/BaseFont /JHJBYF+CMR10 -/FontDescriptor 607 0 R -/FirstChar 48 -/LastChar 93 -/Widths 596 0 R ->> endobj -432 0 obj << -/Type /Font -/Subtype /Type1 -/BaseFont /ROGAYD+CMSY10 -/FontDescriptor 609 0 R -/FirstChar 3 -/LastChar 20 -/Widths 598 0 R ->> endobj -588 0 obj << -/Type /Font -/Subtype /Type1 -/BaseFont /NSJEOL+CMSY7 -/FontDescriptor 611 0 R -/FirstChar 48 -/LastChar 48 -/Widths 595 0 R ->> endobj -355 0 obj << -/Type /Font -/Subtype /Type1 -/BaseFont /MLARYO+NimbusMonL-Regu -/FontDescriptor 613 0 R -/FirstChar 33 -/LastChar 136 -/Widths 600 0 R -/Encoding 599 0 R ->> endobj -352 0 obj << -/Type /Font -/Subtype /Type1 -/BaseFont /DCFLXI+NimbusRomNo9L-Medi -/FontDescriptor 615 0 R -/FirstChar 2 -/LastChar 150 -/Widths 602 0 R -/Encoding 599 0 R ->> endobj -351 0 obj << -/Type /Font -/Subtype /Type1 -/BaseFont /DJKLXJ+NimbusRomNo9L-Regu -/FontDescriptor 617 0 R -/FirstChar 2 -/LastChar 148 -/Widths 603 0 R -/Encoding 599 0 R ->> endobj -353 0 obj << -/Type /Font -/Subtype /Type1 -/BaseFont /LAOMOF+NimbusRomNo9L-ReguItal -/FontDescriptor 619 0 R -/FirstChar 46 -/LastChar 118 -/Widths 601 0 R -/Encoding 599 0 R ->> endobj -356 0 obj << -/Type /Pages -/Count 6 -/Parent 620 0 R -/Kids [326 0 R 397 0 R 424 0 R 429 0 R 435 0 R 439 0 R] ->> endobj -453 0 obj << -/Type /Pages -/Count 6 -/Parent 620 0 R -/Kids [450 0 R 455 0 R 460 0 R 464 0 R 468 0 R 473 0 R] ->> endobj -480 0 obj << -/Type /Pages -/Count 6 -/Parent 620 0 R -/Kids [477 0 R 482 0 R 487 0 R 491 0 R 496 0 R 501 0 R] ->> endobj -509 0 obj << -/Type /Pages -/Count 6 -/Parent 620 0 R -/Kids [506 0 R 512 0 R 517 0 R 524 0 R 529 0 R 534 0 R] ->> endobj -542 0 obj << -/Type /Pages -/Count 6 -/Parent 620 0 R -/Kids [539 0 R 544 0 R 548 0 R 552 0 R 556 0 R 560 0 R] ->> endobj -567 0 obj << -/Type /Pages -/Count 6 -/Parent 620 0 R -/Kids [564 0 R 569 0 R 573 0 R 578 0 R 585 0 R 592 0 R] ->> endobj -620 0 obj << -/Type /Pages -/Count 36 -/Kids [356 0 R 453 0 R 480 0 R 509 0 R 542 0 R 567 0 R] ->> endobj -621 0 obj << -/Type /Outlines -/First 3 0 R -/Last 323 0 R -/Count 18 ->> endobj -323 0 obj << -/Title 324 0 R -/A 321 0 R -/Parent 621 0 R -/Prev 275 0 R ->> endobj -319 0 obj << -/Title 320 0 R -/A 317 0 R -/Parent 275 0 R -/Prev 315 0 R ->> endobj -315 0 obj << -/Title 316 0 R -/A 313 0 R -/Parent 275 0 R -/Prev 311 0 R -/Next 319 0 R ->> endobj -311 0 obj << -/Title 312 0 R -/A 309 0 R -/Parent 275 0 R -/Prev 307 0 R -/Next 315 0 R ->> endobj -307 0 obj << -/Title 308 0 R -/A 305 0 R -/Parent 275 0 R -/Prev 303 0 R -/Next 311 0 R ->> endobj -303 0 obj << -/Title 304 0 R -/A 301 0 R -/Parent 275 0 R -/Prev 299 0 R -/Next 307 0 R ->> endobj -299 0 obj << -/Title 300 0 R -/A 297 0 R -/Parent 275 0 R -/Prev 295 0 R -/Next 303 0 R ->> endobj -295 0 obj << -/Title 296 0 R -/A 293 0 R -/Parent 275 0 R -/Prev 291 0 R -/Next 299 0 R ->> endobj -291 0 obj << -/Title 292 0 R -/A 289 0 R -/Parent 275 0 R -/Prev 283 0 R -/Next 295 0 R ->> endobj -287 0 obj << -/Title 288 0 R -/A 285 0 R -/Parent 283 0 R ->> endobj -283 0 obj << -/Title 284 0 R -/A 281 0 R -/Parent 275 0 R -/Prev 279 0 R -/Next 291 0 R -/First 287 0 R -/Last 287 0 R -/Count -1 ->> endobj -279 0 obj << -/Title 280 0 R -/A 277 0 R -/Parent 275 0 R -/Next 283 0 R ->> endobj -275 0 obj << -/Title 276 0 R -/A 273 0 R -/Parent 621 0 R -/Prev 259 0 R -/Next 323 0 R -/First 279 0 R -/Last 319 0 R -/Count -10 ->> endobj -271 0 obj << -/Title 272 0 R -/A 269 0 R -/Parent 259 0 R -/Prev 267 0 R ->> endobj -267 0 obj << -/Title 268 0 R -/A 265 0 R -/Parent 259 0 R -/Prev 263 0 R -/Next 271 0 R ->> endobj -263 0 obj << -/Title 264 0 R -/A 261 0 R -/Parent 259 0 R -/Next 267 0 R ->> endobj -259 0 obj << -/Title 260 0 R -/A 257 0 R -/Parent 621 0 R -/Prev 243 0 R -/Next 275 0 R -/First 263 0 R -/Last 271 0 R -/Count -3 ->> endobj -255 0 obj << -/Title 256 0 R -/A 253 0 R -/Parent 243 0 R -/Prev 251 0 R ->> endobj -251 0 obj << -/Title 252 0 R -/A 249 0 R -/Parent 243 0 R -/Prev 247 0 R -/Next 255 0 R ->> endobj -247 0 obj << -/Title 248 0 R -/A 245 0 R -/Parent 243 0 R -/Next 251 0 R ->> endobj -243 0 obj << -/Title 244 0 R -/A 241 0 R -/Parent 621 0 R -/Prev 231 0 R -/Next 259 0 R -/First 247 0 R -/Last 255 0 R -/Count -3 ->> endobj -239 0 obj << -/Title 240 0 R -/A 237 0 R -/Parent 231 0 R -/Prev 235 0 R ->> endobj -235 0 obj << -/Title 236 0 R -/A 233 0 R -/Parent 231 0 R -/Next 239 0 R ->> endobj -231 0 obj << -/Title 232 0 R -/A 229 0 R -/Parent 621 0 R -/Prev 215 0 R -/Next 243 0 R -/First 235 0 R -/Last 239 0 R -/Count -2 ->> endobj -227 0 obj << -/Title 228 0 R -/A 225 0 R -/Parent 215 0 R -/Prev 223 0 R ->> endobj -223 0 obj << -/Title 224 0 R -/A 221 0 R -/Parent 215 0 R -/Prev 219 0 R -/Next 227 0 R ->> endobj -219 0 obj << -/Title 220 0 R -/A 217 0 R -/Parent 215 0 R -/Next 223 0 R ->> endobj -215 0 obj << -/Title 216 0 R -/A 213 0 R -/Parent 621 0 R -/Prev 167 0 R -/Next 231 0 R -/First 219 0 R -/Last 227 0 R -/Count -3 ->> endobj -211 0 obj << -/Title 212 0 R -/A 209 0 R -/Parent 207 0 R ->> endobj -207 0 obj << -/Title 208 0 R -/A 205 0 R -/Parent 167 0 R -/Prev 203 0 R -/First 211 0 R -/Last 211 0 R -/Count -1 ->> endobj -203 0 obj << -/Title 204 0 R -/A 201 0 R -/Parent 167 0 R -/Prev 191 0 R -/Next 207 0 R ->> endobj -199 0 obj << -/Title 200 0 R -/A 197 0 R -/Parent 191 0 R -/Prev 195 0 R ->> endobj -195 0 obj << -/Title 196 0 R -/A 193 0 R -/Parent 191 0 R -/Next 199 0 R ->> endobj -191 0 obj << -/Title 192 0 R -/A 189 0 R -/Parent 167 0 R -/Prev 179 0 R -/Next 203 0 R -/First 195 0 R -/Last 199 0 R -/Count -2 ->> endobj -187 0 obj << -/Title 188 0 R -/A 185 0 R -/Parent 179 0 R -/Prev 183 0 R ->> endobj -183 0 obj << -/Title 184 0 R -/A 181 0 R -/Parent 179 0 R -/Next 187 0 R ->> endobj -179 0 obj << -/Title 180 0 R -/A 177 0 R -/Parent 167 0 R -/Prev 175 0 R -/Next 191 0 R -/First 183 0 R -/Last 187 0 R -/Count -2 ->> endobj -175 0 obj << -/Title 176 0 R -/A 173 0 R -/Parent 167 0 R -/Prev 171 0 R -/Next 179 0 R ->> endobj -171 0 obj << -/Title 172 0 R -/A 169 0 R -/Parent 167 0 R -/Next 175 0 R ->> endobj -167 0 obj << -/Title 168 0 R -/A 165 0 R -/Parent 621 0 R -/Prev 155 0 R -/Next 215 0 R -/First 171 0 R -/Last 207 0 R -/Count -6 ->> endobj -163 0 obj << -/Title 164 0 R -/A 161 0 R -/Parent 155 0 R -/Prev 159 0 R ->> endobj -159 0 obj << -/Title 160 0 R -/A 157 0 R -/Parent 155 0 R -/Next 163 0 R ->> endobj -155 0 obj << -/Title 156 0 R -/A 153 0 R -/Parent 621 0 R -/Prev 143 0 R -/Next 167 0 R -/First 159 0 R -/Last 163 0 R -/Count -2 ->> endobj -151 0 obj << -/Title 152 0 R -/A 149 0 R -/Parent 143 0 R -/Prev 147 0 R ->> endobj -147 0 obj << -/Title 148 0 R -/A 145 0 R -/Parent 143 0 R -/Next 151 0 R ->> endobj -143 0 obj << -/Title 144 0 R -/A 141 0 R -/Parent 621 0 R -/Prev 131 0 R -/Next 155 0 R -/First 147 0 R -/Last 151 0 R -/Count -2 ->> endobj -139 0 obj << -/Title 140 0 R -/A 137 0 R -/Parent 131 0 R -/Prev 135 0 R ->> endobj -135 0 obj << -/Title 136 0 R -/A 133 0 R -/Parent 131 0 R -/Next 139 0 R ->> endobj -131 0 obj << -/Title 132 0 R -/A 129 0 R -/Parent 621 0 R -/Prev 115 0 R -/Next 143 0 R -/First 135 0 R -/Last 139 0 R -/Count -2 ->> endobj -127 0 obj << -/Title 128 0 R -/A 125 0 R -/Parent 115 0 R -/Prev 123 0 R ->> endobj -123 0 obj << -/Title 124 0 R -/A 121 0 R -/Parent 115 0 R -/Prev 119 0 R -/Next 127 0 R ->> endobj -119 0 obj << -/Title 120 0 R -/A 117 0 R -/Parent 115 0 R -/Next 123 0 R ->> endobj -115 0 obj << -/Title 116 0 R -/A 113 0 R -/Parent 621 0 R -/Prev 67 0 R -/Next 131 0 R -/First 119 0 R -/Last 127 0 R -/Count -3 ->> endobj -111 0 obj << -/Title 112 0 R -/A 109 0 R -/Parent 67 0 R -/Prev 75 0 R ->> endobj -107 0 obj << -/Title 108 0 R -/A 105 0 R -/Parent 75 0 R -/Prev 83 0 R ->> endobj -103 0 obj << -/Title 104 0 R -/A 101 0 R -/Parent 83 0 R -/Prev 99 0 R ->> endobj -99 0 obj << -/Title 100 0 R -/A 97 0 R -/Parent 83 0 R -/Prev 95 0 R -/Next 103 0 R ->> endobj -95 0 obj << -/Title 96 0 R -/A 93 0 R -/Parent 83 0 R -/Prev 91 0 R -/Next 99 0 R ->> endobj -91 0 obj << -/Title 92 0 R -/A 89 0 R -/Parent 83 0 R -/Prev 87 0 R -/Next 95 0 R ->> endobj -87 0 obj << -/Title 88 0 R -/A 85 0 R -/Parent 83 0 R -/Next 91 0 R ->> endobj -83 0 obj << -/Title 84 0 R -/A 81 0 R -/Parent 75 0 R -/Prev 79 0 R -/Next 107 0 R -/First 87 0 R -/Last 103 0 R -/Count -5 ->> endobj -79 0 obj << -/Title 80 0 R -/A 77 0 R -/Parent 75 0 R -/Next 83 0 R ->> endobj -75 0 obj << -/Title 76 0 R -/A 73 0 R -/Parent 67 0 R -/Prev 71 0 R -/Next 111 0 R -/First 79 0 R -/Last 107 0 R -/Count -3 ->> endobj -71 0 obj << -/Title 72 0 R -/A 69 0 R -/Parent 67 0 R -/Next 75 0 R ->> endobj -67 0 obj << -/Title 68 0 R -/A 65 0 R -/Parent 621 0 R -/Prev 59 0 R -/Next 115 0 R -/First 71 0 R -/Last 111 0 R -/Count -3 ->> endobj -63 0 obj << -/Title 64 0 R -/A 61 0 R -/Parent 59 0 R ->> endobj -59 0 obj << -/Title 60 0 R -/A 57 0 R -/Parent 621 0 R -/Prev 51 0 R -/Next 67 0 R -/First 63 0 R -/Last 63 0 R -/Count -1 ->> endobj -55 0 obj << -/Title 56 0 R -/A 53 0 R -/Parent 51 0 R ->> endobj -51 0 obj << -/Title 52 0 R -/A 49 0 R -/Parent 621 0 R -/Prev 39 0 R -/Next 59 0 R -/First 55 0 R -/Last 55 0 R -/Count -1 ->> endobj -47 0 obj << -/Title 48 0 R -/A 45 0 R -/Parent 39 0 R -/Prev 43 0 R ->> endobj -43 0 obj << -/Title 44 0 R -/A 41 0 R -/Parent 39 0 R -/Next 47 0 R ->> endobj -39 0 obj << -/Title 40 0 R -/A 37 0 R -/Parent 621 0 R -/Prev 27 0 R -/Next 51 0 R -/First 43 0 R -/Last 47 0 R -/Count -2 ->> endobj -35 0 obj << -/Title 36 0 R -/A 33 0 R -/Parent 27 0 R -/Prev 31 0 R ->> endobj -31 0 obj << -/Title 32 0 R -/A 29 0 R -/Parent 27 0 R -/Next 35 0 R ->> endobj -27 0 obj << -/Title 28 0 R -/A 25 0 R -/Parent 621 0 R -/Prev 11 0 R -/Next 39 0 R -/First 31 0 R -/Last 35 0 R -/Count -2 ->> endobj -23 0 obj << -/Title 24 0 R -/A 21 0 R -/Parent 11 0 R -/Prev 19 0 R ->> endobj -19 0 obj << -/Title 20 0 R -/A 17 0 R -/Parent 11 0 R -/Prev 15 0 R -/Next 23 0 R ->> endobj -15 0 obj << -/Title 16 0 R -/A 13 0 R -/Parent 11 0 R -/Next 19 0 R ->> endobj -11 0 obj << -/Title 12 0 R -/A 9 0 R -/Parent 621 0 R -/Prev 3 0 R -/Next 27 0 R -/First 15 0 R -/Last 23 0 R -/Count -3 ->> endobj -7 0 obj << -/Title 8 0 R -/A 5 0 R -/Parent 3 0 R ->> endobj -3 0 obj << -/Title 4 0 R -/A 1 0 R -/Parent 621 0 R -/Next 11 0 R -/First 7 0 R -/Last 7 0 R -/Count -1 ->> endobj -622 0 obj << -/Names [(Doc-Start) 350 0 R (Hfootnote.1) 532 0 R (appendix.A) 274 0 R (appendix.B) 322 0 R (page.1) 349 0 R (page.10) 466 0 R] -/Limits [(Doc-Start) (page.10)] ->> endobj -623 0 obj << -/Names [(page.11) 470 0 R (page.12) 475 0 R (page.13) 479 0 R (page.14) 484 0 R (page.15) 489 0 R (page.16) 493 0 R] -/Limits [(page.11) (page.16)] ->> endobj -624 0 obj << -/Names [(page.17) 498 0 R (page.18) 503 0 R (page.19) 508 0 R (page.2) 399 0 R (page.20) 514 0 R (page.21) 519 0 R] -/Limits [(page.17) (page.21)] ->> endobj -625 0 obj << -/Names [(page.22) 526 0 R (page.23) 531 0 R (page.24) 536 0 R (page.25) 541 0 R (page.26) 546 0 R (page.27) 550 0 R] -/Limits [(page.22) (page.27)] ->> endobj -626 0 obj << -/Names [(page.28) 554 0 R (page.29) 558 0 R (page.3) 426 0 R (page.30) 562 0 R (page.31) 566 0 R (page.32) 571 0 R] -/Limits [(page.28) (page.32)] ->> endobj -627 0 obj << -/Names [(page.33) 575 0 R (page.34) 580 0 R (page.35) 587 0 R (page.36) 594 0 R (page.4) 431 0 R (page.5) 437 0 R] -/Limits [(page.33) (page.5)] ->> endobj -628 0 obj << -/Names [(page.6) 441 0 R (page.7) 452 0 R (page.8) 457 0 R (page.9) 462 0 R (section*.1) 354 0 R (section*.2) 86 0 R] -/Limits [(page.6) (section*.2)] ->> endobj -629 0 obj << -/Names [(section*.3) 90 0 R (section*.4) 94 0 R (section*.5) 98 0 R (section*.6) 102 0 R (section*.7) 210 0 R (section.1) 2 0 R] -/Limits [(section*.3) (section.1)] ->> endobj -630 0 obj << -/Names [(section.10) 142 0 R (section.11) 154 0 R (section.12) 166 0 R (section.13) 214 0 R (section.14) 230 0 R (section.15) 242 0 R] -/Limits [(section.10) (section.15)] ->> endobj -631 0 obj << -/Names [(section.16) 258 0 R (section.2) 10 0 R (section.3) 26 0 R (section.4) 38 0 R (section.5) 50 0 R (section.6) 58 0 R] -/Limits [(section.16) (section.6)] ->> endobj -632 0 obj << -/Names [(section.7) 66 0 R (section.8) 114 0 R (section.9) 130 0 R (subsection.1.1) 6 0 R (subsection.10.1) 146 0 R (subsection.10.2) 150 0 R] -/Limits [(section.7) (subsection.10.2)] ->> endobj -633 0 obj << -/Names [(subsection.11.1) 158 0 R (subsection.11.2) 162 0 R (subsection.12.1) 170 0 R (subsection.12.2) 174 0 R (subsection.12.3) 178 0 R (subsection.12.4) 190 0 R] -/Limits [(subsection.11.1) (subsection.12.4)] ->> endobj -634 0 obj << -/Names [(subsection.12.5) 202 0 R (subsection.12.6) 206 0 R (subsection.13.1) 218 0 R (subsection.13.2) 222 0 R (subsection.13.3) 226 0 R (subsection.14.1) 234 0 R] -/Limits [(subsection.12.5) (subsection.14.1)] ->> endobj -635 0 obj << -/Names [(subsection.14.2) 238 0 R (subsection.15.1) 246 0 R (subsection.15.2) 250 0 R (subsection.15.3) 254 0 R (subsection.16.1) 262 0 R (subsection.16.2) 266 0 R] -/Limits [(subsection.14.2) (subsection.16.2)] ->> endobj -636 0 obj << -/Names [(subsection.16.3) 270 0 R (subsection.2.1) 14 0 R (subsection.2.2) 18 0 R (subsection.2.3) 22 0 R (subsection.3.1) 30 0 R (subsection.3.2) 34 0 R] -/Limits [(subsection.16.3) (subsection.3.2)] ->> endobj -637 0 obj << -/Names [(subsection.4.1) 42 0 R (subsection.4.2) 46 0 R (subsection.5.1) 54 0 R (subsection.6.1) 62 0 R (subsection.7.1) 70 0 R (subsection.7.2) 74 0 R] -/Limits [(subsection.4.1) (subsection.7.2)] ->> endobj -638 0 obj << -/Names [(subsection.7.3) 110 0 R (subsection.8.1) 118 0 R (subsection.8.2) 122 0 R (subsection.8.3) 126 0 R (subsection.9.1) 134 0 R (subsection.9.2) 138 0 R] -/Limits [(subsection.7.3) (subsection.9.2)] ->> endobj -639 0 obj << -/Names [(subsection.A.1) 278 0 R (subsection.A.10) 318 0 R (subsection.A.2) 282 0 R (subsection.A.3) 290 0 R (subsection.A.4) 294 0 R (subsection.A.5) 298 0 R] -/Limits [(subsection.A.1) (subsection.A.5)] ->> endobj -640 0 obj << -/Names [(subsection.A.6) 302 0 R (subsection.A.7) 306 0 R (subsection.A.8) 310 0 R (subsection.A.9) 314 0 R (subsubsection.12.3.1) 182 0 R (subsubsection.12.3.2) 186 0 R] -/Limits [(subsection.A.6) (subsubsection.12.3.2)] ->> endobj -641 0 obj << -/Names [(subsubsection.12.4.1) 194 0 R (subsubsection.12.4.2) 198 0 R (subsubsection.7.2.1) 78 0 R (subsubsection.7.2.2) 82 0 R (subsubsection.7.2.3) 106 0 R (subsubsection.A.2.1) 286 0 R] -/Limits [(subsubsection.12.4.1) (subsubsection.A.2.1)] ->> endobj -642 0 obj << -/Kids [622 0 R 623 0 R 624 0 R 625 0 R 626 0 R 627 0 R] -/Limits [(Doc-Start) (page.5)] ->> endobj -643 0 obj << -/Kids [628 0 R 629 0 R 630 0 R 631 0 R 632 0 R 633 0 R] -/Limits [(page.6) (subsection.12.4)] ->> endobj -644 0 obj << -/Kids [634 0 R 635 0 R 636 0 R 637 0 R 638 0 R 639 0 R] -/Limits [(subsection.12.5) (subsection.A.5)] ->> endobj -645 0 obj << -/Kids [640 0 R 641 0 R] -/Limits [(subsection.A.6) (subsubsection.A.2.1)] ->> endobj -646 0 obj << -/Kids [642 0 R 643 0 R 644 0 R 645 0 R] -/Limits [(Doc-Start) (subsubsection.A.2.1)] ->> endobj -647 0 obj << -/Dests 646 0 R ->> endobj -648 0 obj << -/Type /Catalog -/Pages 620 0 R -/Outlines 621 0 R -/Names 647 0 R -/PageMode/UseOutlines -/OpenAction 325 0 R ->> endobj -649 0 obj << -/Author()/Title(The Khronos Vulkan API Registry)/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.13)/Keywords() -<<<<<<< HEAD -/CreationDate (D:20160421144350+01'00') -/ModDate (D:20160421144350+01'00') -======= -/CreationDate (D:20160421121335+01'00') -/ModDate (D:20160421121335+01'00') ->>>>>>> 1.0 -/Trapped /False -/PTEX.Fullbanner (This is MiKTeX-pdfTeX 2.9.4535 (1.40.13)) ->> endobj -xref -0 650 -0000000000 65535 f -0000000015 00000 n -0000027696 00000 n -<<<<<<< HEAD -0000219341 00000 n -0000000060 00000 n -0000000092 00000 n -0000027756 00000 n -0000219284 00000 n -0000000142 00000 n -0000000178 00000 n -0000030548 00000 n -0000219161 00000 n -0000000223 00000 n -0000000259 00000 n -0000033848 00000 n -0000219087 00000 n -0000000310 00000 n -0000000368 00000 n -0000036158 00000 n -0000219000 00000 n -0000000419 00000 n -0000000477 00000 n -0000036219 00000 n -0000218926 00000 n -0000000528 00000 n -0000000589 00000 n -0000036280 00000 n -0000218801 00000 n -0000000635 00000 n -0000000678 00000 n -0000036341 00000 n -0000218727 00000 n -0000000729 00000 n -0000000760 00000 n -0000036402 00000 n -0000218653 00000 n -0000000811 00000 n -0000000843 00000 n -0000036463 00000 n -0000218528 00000 n -0000000889 00000 n -0000000942 00000 n -0000036524 00000 n -0000218454 00000 n -0000000993 00000 n -0000001045 00000 n -0000039996 00000 n -0000218380 00000 n -0000001096 00000 n -0000001146 00000 n -0000040057 00000 n -0000218255 00000 n -0000001192 00000 n -0000001243 00000 n -0000040117 00000 n -0000218194 00000 n -0000001294 00000 n -0000001346 00000 n -0000040178 00000 n -0000218069 00000 n -0000001392 00000 n -0000001443 00000 n -0000042752 00000 n -0000218008 00000 n -0000001494 00000 n -0000001541 00000 n -0000042813 00000 n -0000217881 00000 n -0000001587 00000 n -0000001633 00000 n -0000042874 00000 n -0000217807 00000 n -0000001684 00000 n -0000001732 00000 n -0000045650 00000 n -0000217681 00000 n -0000001783 00000 n -0000001829 00000 n -0000045711 00000 n -0000217607 00000 n -0000001885 00000 n -0000001944 00000 n -0000045772 00000 n -0000217481 00000 n -0000002000 00000 n -0000002071 00000 n -0000045833 00000 n -0000217407 00000 n -0000002118 00000 n -0000002171 00000 n -0000045894 00000 n -0000217320 00000 n -0000002218 00000 n -0000002264 00000 n -0000048501 00000 n -0000217233 00000 n -0000002311 00000 n -0000002355 00000 n -0000048562 00000 n -0000217144 00000 n -0000002402 00000 n -0000002452 00000 n -0000048623 00000 n -0000217067 00000 n -0000002500 00000 n -0000002547 00000 n -0000048685 00000 n -0000216990 00000 n -0000002604 00000 n -0000002645 00000 n -0000050285 00000 n -0000216913 00000 n -0000002697 00000 n -0000002745 00000 n -0000053042 00000 n -0000216782 00000 n -0000002792 00000 n -0000002846 00000 n -0000053104 00000 n -0000216703 00000 n -0000002898 00000 n -0000002948 00000 n -0000053166 00000 n -0000216610 00000 n -0000003000 00000 n -0000003048 00000 n -0000053228 00000 n -0000216531 00000 n -0000003100 00000 n -0000003147 00000 n -0000055791 00000 n -0000216399 00000 n -0000003194 00000 n -0000003241 00000 n -0000055853 00000 n -0000216320 00000 n -0000003293 00000 n -0000003342 00000 n -0000055915 00000 n -0000216241 00000 n -0000003394 00000 n -0000003441 00000 n -0000055976 00000 n -0000216109 00000 n -0000003489 00000 n -0000003546 00000 n -0000056038 00000 n -0000216030 00000 n -0000003599 00000 n -0000003651 00000 n -0000058026 00000 n -0000215951 00000 n -0000003704 00000 n -0000003754 00000 n -0000058088 00000 n -0000215819 00000 n -0000003802 00000 n -0000003858 00000 n -0000058150 00000 n -0000215740 00000 n -0000003911 00000 n -0000003965 00000 n -0000058212 00000 n -0000215661 00000 n -0000004018 00000 n -0000004070 00000 n -0000058274 00000 n -0000215529 00000 n -0000004118 00000 n -0000004167 00000 n -0000058336 00000 n -0000215450 00000 n -0000004220 00000 n -0000004273 00000 n -0000060815 00000 n -0000215357 00000 n -0000004326 00000 n -0000004377 00000 n -0000060877 00000 n -0000215225 00000 n -0000004430 00000 n -0000004489 00000 n -0000060938 00000 n -0000215146 00000 n -0000004547 00000 n -0000004600 00000 n -0000063538 00000 n -0000215067 00000 n -0000004658 00000 n -0000004709 00000 n -0000063600 00000 n -0000214935 00000 n -0000004762 00000 n -0000004821 00000 n -0000063662 00000 n -0000214856 00000 n -0000004879 00000 n -0000004932 00000 n -0000063724 00000 n -0000214777 00000 n -0000004990 00000 n -0000005041 00000 n -0000065972 00000 n -0000214684 00000 n -0000005094 00000 n -0000005146 00000 n -0000066034 00000 n -0000214566 00000 n -0000005199 00000 n -0000005264 00000 n -0000066096 00000 n -0000214501 00000 n -0000005312 00000 n -0000005359 00000 n -0000066158 00000 n -0000214369 00000 n -0000005407 00000 n -0000005471 00000 n -0000066220 00000 n -0000214290 00000 n -0000005524 00000 n -0000005577 00000 n -0000068326 00000 n -0000214197 00000 n -0000005630 00000 n -0000005681 00000 n -0000068388 00000 n -0000214118 00000 n -0000005734 00000 n -0000005785 00000 n -0000070803 00000 n -0000213986 00000 n -0000005833 00000 n -0000005893 00000 n -0000070865 00000 n -0000213907 00000 n -0000005946 00000 n -0000006002 00000 n -0000070927 00000 n -0000213828 00000 n -0000006055 00000 n -0000006109 00000 n -0000070989 00000 n -0000213696 00000 n -0000006157 00000 n -0000006214 00000 n -0000071050 00000 n -0000213617 00000 n -0000006267 00000 n -0000006322 00000 n -0000073366 00000 n -0000213524 00000 n -0000006375 00000 n -0000006428 00000 n -0000073428 00000 n -0000213445 00000 n -0000006481 00000 n -0000006536 00000 n -0000075945 00000 n -0000213313 00000 n -0000006584 00000 n -0000006670 00000 n -0000076007 00000 n -0000213234 00000 n -0000006723 00000 n -0000006789 00000 n -0000076069 00000 n -0000213141 00000 n -0000006842 00000 n -0000006906 00000 n -0000081493 00000 n -0000213062 00000 n -0000006959 00000 n -0000007016 00000 n -0000084958 00000 n -0000212929 00000 n -0000007064 00000 n -0000007112 00000 n -0000085020 00000 n -0000212850 00000 n -0000007164 00000 n -0000007204 00000 n -0000085082 00000 n -0000212718 00000 n -0000007256 00000 n -0000007304 00000 n -0000087434 00000 n -0000212653 00000 n -0000007361 00000 n -0000007410 00000 n -0000093849 00000 n -0000212560 00000 n -0000007462 00000 n -0000007520 00000 n -0000095746 00000 n -0000212467 00000 n -0000007572 00000 n -0000007629 00000 n -0000098075 00000 n -0000212374 00000 n -0000007681 00000 n -0000007734 00000 n -0000100407 00000 n -0000212281 00000 n -0000007786 00000 n -0000007830 00000 n -0000102896 00000 n -0000212188 00000 n -0000007882 00000 n -0000007942 00000 n -0000102958 00000 n -0000212095 00000 n -0000007994 00000 n -0000008069 00000 n -0000103020 00000 n -0000212002 00000 n -0000008121 00000 n -0000008172 00000 n -0000105829 00000 n -0000211923 00000 n -0000008225 00000 n -0000008290 00000 n -0000105891 00000 n -0000211844 00000 n -======= -0000219696 00000 n -0000000060 00000 n -0000000092 00000 n -0000027756 00000 n -0000219639 00000 n -0000000142 00000 n -0000000178 00000 n -0000030548 00000 n -0000219516 00000 n -0000000223 00000 n -0000000259 00000 n -0000033848 00000 n -0000219442 00000 n -0000000310 00000 n -0000000368 00000 n -0000036158 00000 n -0000219355 00000 n -0000000419 00000 n -0000000477 00000 n -0000036219 00000 n -0000219281 00000 n -0000000528 00000 n -0000000589 00000 n -0000036280 00000 n -0000219156 00000 n -0000000635 00000 n -0000000678 00000 n -0000036341 00000 n -0000219082 00000 n -0000000729 00000 n -0000000760 00000 n -0000036402 00000 n -0000219008 00000 n -0000000811 00000 n -0000000843 00000 n -0000036463 00000 n -0000218883 00000 n -0000000889 00000 n -0000000942 00000 n -0000036524 00000 n -0000218809 00000 n -0000000993 00000 n -0000001045 00000 n -0000039996 00000 n -0000218735 00000 n -0000001096 00000 n -0000001146 00000 n -0000040057 00000 n -0000218610 00000 n -0000001192 00000 n -0000001243 00000 n -0000040117 00000 n -0000218549 00000 n -0000001294 00000 n -0000001346 00000 n -0000040178 00000 n -0000218424 00000 n -0000001392 00000 n -0000001443 00000 n -0000042752 00000 n -0000218363 00000 n -0000001494 00000 n -0000001541 00000 n -0000042813 00000 n -0000218236 00000 n -0000001587 00000 n -0000001633 00000 n -0000042874 00000 n -0000218162 00000 n -0000001684 00000 n -0000001732 00000 n -0000045695 00000 n -0000218036 00000 n -0000001783 00000 n -0000001829 00000 n -0000045756 00000 n -0000217962 00000 n -0000001885 00000 n -0000001944 00000 n -0000045817 00000 n -0000217836 00000 n -0000002000 00000 n -0000002071 00000 n -0000045878 00000 n -0000217762 00000 n -0000002118 00000 n -0000002171 00000 n -0000045939 00000 n -0000217675 00000 n -0000002218 00000 n -0000002264 00000 n -0000048546 00000 n -0000217588 00000 n -0000002311 00000 n -0000002355 00000 n -0000048607 00000 n -0000217499 00000 n -0000002402 00000 n -0000002452 00000 n -0000048668 00000 n -0000217422 00000 n -0000002500 00000 n -0000002547 00000 n -0000048730 00000 n -0000217345 00000 n -0000002604 00000 n -0000002645 00000 n -0000050330 00000 n -0000217268 00000 n -0000002697 00000 n -0000002745 00000 n -0000053087 00000 n -0000217137 00000 n -0000002792 00000 n -0000002846 00000 n -0000053149 00000 n -0000217058 00000 n -0000002898 00000 n -0000002948 00000 n -0000053211 00000 n -0000216965 00000 n -0000003000 00000 n -0000003048 00000 n -0000053273 00000 n -0000216886 00000 n -0000003100 00000 n -0000003147 00000 n -0000055836 00000 n -0000216754 00000 n -0000003194 00000 n -0000003241 00000 n -0000055898 00000 n -0000216675 00000 n -0000003293 00000 n -0000003342 00000 n -0000055960 00000 n -0000216596 00000 n -0000003394 00000 n -0000003441 00000 n -0000056021 00000 n -0000216464 00000 n -0000003489 00000 n -0000003546 00000 n -0000056083 00000 n -0000216385 00000 n -0000003599 00000 n -0000003651 00000 n -0000058071 00000 n -0000216306 00000 n -0000003704 00000 n -0000003754 00000 n -0000058133 00000 n -0000216174 00000 n -0000003802 00000 n -0000003858 00000 n -0000058195 00000 n -0000216095 00000 n -0000003911 00000 n -0000003965 00000 n -0000058257 00000 n -0000216016 00000 n -0000004018 00000 n -0000004070 00000 n -0000058319 00000 n -0000215884 00000 n -0000004118 00000 n -0000004167 00000 n -0000058381 00000 n -0000215805 00000 n -0000004220 00000 n -0000004273 00000 n -0000060860 00000 n -0000215712 00000 n -0000004326 00000 n -0000004377 00000 n -0000060922 00000 n -0000215580 00000 n -0000004430 00000 n -0000004489 00000 n -0000060983 00000 n -0000215501 00000 n -0000004547 00000 n -0000004600 00000 n -0000063701 00000 n -0000215422 00000 n -0000004658 00000 n -0000004709 00000 n -0000063763 00000 n -0000215290 00000 n -0000004762 00000 n -0000004821 00000 n -0000063825 00000 n -0000215211 00000 n -0000004879 00000 n -0000004932 00000 n -0000063887 00000 n -0000215132 00000 n -0000004990 00000 n -0000005041 00000 n -0000066170 00000 n -0000215039 00000 n -0000005094 00000 n -0000005146 00000 n -0000066232 00000 n -0000214921 00000 n -0000005199 00000 n -0000005264 00000 n -0000066293 00000 n -0000214856 00000 n -0000005312 00000 n -0000005359 00000 n -0000066355 00000 n -0000214724 00000 n -0000005407 00000 n -0000005471 00000 n -0000066417 00000 n -0000214645 00000 n -0000005524 00000 n -0000005577 00000 n -0000068682 00000 n -0000214552 00000 n -0000005630 00000 n -0000005681 00000 n -0000068744 00000 n -0000214473 00000 n -0000005734 00000 n -0000005785 00000 n -0000071158 00000 n -0000214341 00000 n -0000005833 00000 n -0000005893 00000 n -0000071220 00000 n -0000214262 00000 n -0000005946 00000 n -0000006002 00000 n -0000071282 00000 n -0000214183 00000 n -0000006055 00000 n -0000006109 00000 n -0000071344 00000 n -0000214051 00000 n -0000006157 00000 n -0000006214 00000 n -0000071405 00000 n -0000213972 00000 n -0000006267 00000 n -0000006322 00000 n -0000073721 00000 n -0000213879 00000 n -0000006375 00000 n -0000006428 00000 n -0000073783 00000 n -0000213800 00000 n -0000006481 00000 n -0000006536 00000 n -0000076300 00000 n -0000213668 00000 n -0000006584 00000 n -0000006670 00000 n -0000076362 00000 n -0000213589 00000 n -0000006723 00000 n -0000006789 00000 n -0000076424 00000 n -0000213496 00000 n -0000006842 00000 n -0000006906 00000 n -0000081848 00000 n -0000213417 00000 n -0000006959 00000 n -0000007016 00000 n -0000085313 00000 n -0000213284 00000 n -0000007064 00000 n -0000007112 00000 n -0000085375 00000 n -0000213205 00000 n -0000007164 00000 n -0000007204 00000 n -0000085437 00000 n -0000213073 00000 n -0000007256 00000 n -0000007304 00000 n -0000087789 00000 n -0000213008 00000 n -0000007361 00000 n -0000007410 00000 n -0000094204 00000 n -0000212915 00000 n -0000007462 00000 n -0000007520 00000 n -0000096101 00000 n -0000212822 00000 n -0000007572 00000 n -0000007629 00000 n -0000098430 00000 n -0000212729 00000 n -0000007681 00000 n -0000007734 00000 n -0000100762 00000 n -0000212636 00000 n -0000007786 00000 n -0000007830 00000 n -0000103251 00000 n -0000212543 00000 n -0000007882 00000 n -0000007942 00000 n -0000103313 00000 n -0000212450 00000 n -0000007994 00000 n -0000008069 00000 n -0000103375 00000 n -0000212357 00000 n -0000008121 00000 n -0000008172 00000 n -0000106184 00000 n -0000212278 00000 n -0000008225 00000 n -0000008290 00000 n -0000106246 00000 n -0000212199 00000 n ->>>>>>> 1.0 -0000008338 00000 n -0000008370 00000 n -0000009915 00000 n -0000010175 00000 n -0000010365 00000 n -0000010517 00000 n -0000010674 00000 n -0000010825 00000 n -0000010982 00000 n -0000011138 00000 n -0000011295 00000 n -0000011446 00000 n -0000011603 00000 n -0000011759 00000 n -0000011911 00000 n -0000012068 00000 n -0000012225 00000 n -0000012377 00000 n -0000012534 00000 n -0000012686 00000 n -0000015059 00000 n -0000015209 00000 n -0000015366 00000 n -0000013028 00000 n -0000008420 00000 n -0000012843 00000 n -0000012904 00000 n -<<<<<<< HEAD -0000210613 00000 n -0000210440 00000 n -0000210786 00000 n -0000012966 00000 n -0000210269 00000 n -0000210964 00000 n -======= -0000210968 00000 n -0000210795 00000 n -0000211141 00000 n -0000012966 00000 n -0000210624 00000 n -0000211319 00000 n ->>>>>>> 1.0 -0000015522 00000 n -0000015684 00000 n -0000015846 00000 n -0000015998 00000 n -0000016151 00000 n -0000016303 00000 n -0000016456 00000 n -0000016608 00000 n -0000016770 00000 n -0000016927 00000 n -0000017079 00000 n -0000017236 00000 n -0000017393 00000 n -0000017550 00000 n -0000017702 00000 n -0000017859 00000 n -0000018016 00000 n -0000018168 00000 n -0000018326 00000 n -0000018483 00000 n -0000018636 00000 n -0000018793 00000 n -0000018951 00000 n -0000019104 00000 n -0000019262 00000 n -0000019420 00000 n -0000019578 00000 n -0000019741 00000 n -0000019904 00000 n -0000020062 00000 n -0000020225 00000 n -0000020388 00000 n -0000020546 00000 n -0000020703 00000 n -0000020856 00000 n -0000021009 00000 n -0000021167 00000 n -0000021325 00000 n -0000023883 00000 n -0000021544 00000 n -0000014607 00000 n -0000013139 00000 n -0000021483 00000 n -0000024034 00000 n -0000024192 00000 n -0000024349 00000 n -0000024502 00000 n -0000024660 00000 n -0000024818 00000 n -0000024976 00000 n -0000025129 00000 n -0000025287 00000 n -0000025445 00000 n -0000025603 00000 n -0000025755 00000 n -0000025911 00000 n -0000026068 00000 n -0000026230 00000 n -0000026387 00000 n -0000026544 00000 n -0000026699 00000 n -0000026856 00000 n -0000027012 00000 n -0000027169 00000 n -0000027325 00000 n -0000027483 00000 n -0000027816 00000 n -0000023567 00000 n -0000021642 00000 n -0000027635 00000 n -0000030290 00000 n -0000030609 00000 n -0000030158 00000 n -0000027914 00000 n -0000030487 00000 n -<<<<<<< HEAD -0000209985 00000 n -======= -0000210340 00000 n ->>>>>>> 1.0 -0000033634 00000 n -0000033909 00000 n -0000033502 00000 n -0000030720 00000 n -0000033787 00000 n -0000036585 00000 n -0000035985 00000 n -0000034020 00000 n -0000036097 00000 n -0000038872 00000 n -0000039024 00000 n -0000039176 00000 n -0000039328 00000 n -0000039480 00000 n -0000039632 00000 n -0000039783 00000 n -0000040239 00000 n -0000038692 00000 n -0000036683 00000 n -0000039935 00000 n -<<<<<<< HEAD -0000211081 00000 n -======= -0000211436 00000 n ->>>>>>> 1.0 -0000042935 00000 n -0000042579 00000 n -0000040350 00000 n -0000042691 00000 n -<<<<<<< HEAD -0000045438 00000 n -0000045955 00000 n -0000045306 00000 n -0000043046 00000 n -0000045589 00000 n -0000048747 00000 n -0000048328 00000 n -0000046066 00000 n -0000048440 00000 n -0000050347 00000 n -0000050112 00000 n -0000048858 00000 n -0000050224 00000 n -0000052824 00000 n -0000053290 00000 n -0000052692 00000 n -0000050458 00000 n -0000052981 00000 n -0000056100 00000 n -0000055618 00000 n -0000053401 00000 n -0000055730 00000 n -0000211198 00000 n -0000058398 00000 n -0000057853 00000 n -0000056211 00000 n -0000057965 00000 n -0000060592 00000 n -0000061000 00000 n -0000060460 00000 n -0000058509 00000 n -0000060754 00000 n -0000063786 00000 n -0000063365 00000 n -0000061111 00000 n -0000063477 00000 n -0000065755 00000 n -0000066282 00000 n -0000065623 00000 n -0000063897 00000 n -0000065911 00000 n -0000068112 00000 n -0000068450 00000 n -0000067980 00000 n -0000066393 00000 n -0000068265 00000 n -0000209699 00000 n -0000071112 00000 n -0000070630 00000 n -0000068574 00000 n -0000070742 00000 n -0000211315 00000 n -0000073152 00000 n -0000073490 00000 n -0000073020 00000 n -0000071223 00000 n -0000073305 00000 n -0000075727 00000 n -0000076131 00000 n -0000075595 00000 n -0000073601 00000 n -0000075884 00000 n -0000078840 00000 n -0000078991 00000 n -0000079143 00000 n -0000079361 00000 n -0000078692 00000 n -0000076255 00000 n -0000079300 00000 n -0000081279 00000 n -0000081617 00000 n -0000081147 00000 n -0000079472 00000 n -0000081432 00000 n -0000081555 00000 n -0000082134 00000 n -0000081961 00000 n -0000081728 00000 n -0000082073 00000 n -0000084746 00000 n -0000085144 00000 n -0000084614 00000 n -0000082219 00000 n -0000084897 00000 n -0000211432 00000 n -0000087496 00000 n -0000087261 00000 n -0000085255 00000 n -0000087373 00000 n -0000089495 00000 n -0000089322 00000 n -0000087594 00000 n -0000089434 00000 n -0000091102 00000 n -0000090929 00000 n -0000089580 00000 n -0000091041 00000 n -0000092243 00000 n -0000092070 00000 n -0000091187 00000 n -0000092182 00000 n -0000093911 00000 n -0000093676 00000 n -0000092328 00000 n -0000093788 00000 n -0000095808 00000 n -0000095573 00000 n -0000094009 00000 n -0000095685 00000 n -0000211549 00000 n -0000098137 00000 n -0000097902 00000 n -0000095906 00000 n -0000098014 00000 n -0000100469 00000 n -0000100234 00000 n -0000098235 00000 n -0000100346 00000 n -0000209843 00000 n -0000103082 00000 n -0000102723 00000 n -0000100592 00000 n -0000102835 00000 n -0000105615 00000 n -0000107277 00000 n -0000107430 00000 n -0000105953 00000 n -0000105483 00000 n -0000103193 00000 n -0000105768 00000 n -0000210127 00000 n -0000107588 00000 n -0000107739 00000 n -0000107952 00000 n -0000107121 00000 n -0000106102 00000 n -0000107891 00000 n -0000108050 00000 n -0000108075 00000 n -0000108333 00000 n -0000108698 00000 n -0000209180 00000 n -0000108816 00000 n -0000109245 00000 n -0000109556 00000 n -0000110130 00000 n -0000110693 00000 n -0000120292 00000 n -0000120549 00000 n -0000130314 00000 n -0000130584 00000 n -0000138090 00000 n -0000138340 00000 n -0000145335 00000 n -0000145560 00000 n -0000165061 00000 n -0000165652 00000 n -0000182669 00000 n -0000183142 00000 n -0000201826 00000 n -0000202352 00000 n -0000208909 00000 n -0000211666 00000 n -0000211768 00000 n -0000219448 00000 n -0000219631 00000 n -0000219801 00000 n -0000219970 00000 n -0000220140 00000 n -0000220309 00000 n -0000220476 00000 n -0000220649 00000 n -0000220836 00000 n -0000221030 00000 n -0000221213 00000 n -0000221419 00000 n -0000221653 00000 n -0000221887 00000 n -0000222121 00000 n -0000222344 00000 n -0000222564 00000 n -0000222790 00000 n -0000223017 00000 n -0000223261 00000 n -0000223528 00000 n -0000223638 00000 n -0000223754 00000 n -0000223878 00000 n -0000223974 00000 n -0000224081 00000 n -0000224119 00000 n -0000224247 00000 n -======= -0000045483 00000 n -0000046000 00000 n -0000045351 00000 n -0000043046 00000 n -0000045634 00000 n -0000048792 00000 n -0000048373 00000 n -0000046111 00000 n -0000048485 00000 n -0000050392 00000 n -0000050157 00000 n -0000048903 00000 n -0000050269 00000 n -0000052869 00000 n -0000053335 00000 n -0000052737 00000 n -0000050503 00000 n -0000053026 00000 n -0000056145 00000 n -0000055663 00000 n -0000053446 00000 n -0000055775 00000 n -0000211553 00000 n -0000058443 00000 n -0000057898 00000 n -0000056256 00000 n -0000058010 00000 n -0000060637 00000 n -0000061045 00000 n -0000060505 00000 n -0000058554 00000 n -0000060799 00000 n -0000063949 00000 n -0000063528 00000 n -0000061156 00000 n -0000063640 00000 n -0000065954 00000 n -0000066479 00000 n -0000065822 00000 n -0000064060 00000 n -0000066109 00000 n -0000068468 00000 n -0000068805 00000 n -0000068336 00000 n -0000066590 00000 n -0000068621 00000 n -0000210054 00000 n -0000071467 00000 n -0000070985 00000 n -0000068929 00000 n -0000071097 00000 n -0000211670 00000 n -0000073507 00000 n -0000073845 00000 n -0000073375 00000 n -0000071578 00000 n -0000073660 00000 n -0000076082 00000 n -0000076486 00000 n -0000075950 00000 n -0000073956 00000 n -0000076239 00000 n -0000079195 00000 n -0000079346 00000 n -0000079498 00000 n -0000079716 00000 n -0000079047 00000 n -0000076610 00000 n -0000079655 00000 n -0000081634 00000 n -0000081972 00000 n -0000081502 00000 n -0000079827 00000 n -0000081787 00000 n -0000081910 00000 n -0000082489 00000 n -0000082316 00000 n -0000082083 00000 n -0000082428 00000 n -0000085101 00000 n -0000085499 00000 n -0000084969 00000 n -0000082574 00000 n -0000085252 00000 n -0000211787 00000 n -0000087851 00000 n -0000087616 00000 n -0000085610 00000 n -0000087728 00000 n -0000089850 00000 n -0000089677 00000 n -0000087949 00000 n -0000089789 00000 n -0000091457 00000 n -0000091284 00000 n -0000089935 00000 n -0000091396 00000 n -0000092598 00000 n -0000092425 00000 n -0000091542 00000 n -0000092537 00000 n -0000094266 00000 n -0000094031 00000 n -0000092683 00000 n -0000094143 00000 n -0000096163 00000 n -0000095928 00000 n -0000094364 00000 n -0000096040 00000 n -0000211904 00000 n -0000098492 00000 n -0000098257 00000 n -0000096261 00000 n -0000098369 00000 n -0000100824 00000 n -0000100589 00000 n -0000098590 00000 n -0000100701 00000 n -0000210198 00000 n -0000103437 00000 n -0000103078 00000 n -0000100947 00000 n -0000103190 00000 n -0000105970 00000 n -0000107632 00000 n -0000107785 00000 n -0000106308 00000 n -0000105838 00000 n -0000103548 00000 n -0000106123 00000 n -0000210482 00000 n -0000107943 00000 n -0000108094 00000 n -0000108307 00000 n -0000107476 00000 n -0000106457 00000 n -0000108246 00000 n -0000108405 00000 n -0000108430 00000 n -0000108688 00000 n -0000109053 00000 n -0000209535 00000 n -0000109171 00000 n -0000109600 00000 n -0000109911 00000 n -0000110485 00000 n -0000111048 00000 n -0000120647 00000 n -0000120904 00000 n -0000130669 00000 n -0000130939 00000 n -0000138445 00000 n -0000138695 00000 n -0000145690 00000 n -0000145915 00000 n -0000165416 00000 n -0000166007 00000 n -0000183024 00000 n -0000183497 00000 n -0000202181 00000 n -0000202707 00000 n -0000209264 00000 n -0000212021 00000 n -0000212123 00000 n -0000219803 00000 n -0000219986 00000 n -0000220156 00000 n -0000220325 00000 n -0000220495 00000 n -0000220664 00000 n -0000220831 00000 n -0000221004 00000 n -0000221191 00000 n -0000221385 00000 n -0000221568 00000 n -0000221774 00000 n -0000222008 00000 n -0000222242 00000 n -0000222476 00000 n -0000222699 00000 n -0000222919 00000 n -0000223145 00000 n -0000223372 00000 n -0000223616 00000 n -0000223883 00000 n -0000223993 00000 n -0000224109 00000 n -0000224233 00000 n -0000224329 00000 n -0000224436 00000 n -0000224474 00000 n -0000224602 00000 n ->>>>>>> 1.0 -trailer -<< /Size 650 -/Root 648 0 R -/Info 649 0 R -<<<<<<< HEAD -/ID [ ] >> -startxref -224553 -======= -/ID [<761474DAF29E3B552170784BBD125F98> <761474DAF29E3B552170784BBD125F98>] >> -startxref -224908 ->>>>>>> 1.0 -%%EOF diff --git a/src/spec/vk.xml b/src/spec/vk.xml index 2f6424b1..b179211f 100644 --- a/src/spec/vk.xml +++ b/src/spec/vk.xml @@ -101,7 +101,7 @@ maintained in the master branch of the Khronos Vulkan Github project. // Vulkan 1.0 version number #define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0) // Version of this file -#define VK_HEADER_VERSION 12 +#define VK_HEADER_VERSION 13 #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; @@ -505,7 +505,7 @@ maintained in the master branch of the Khronos Vulkan Github project. const char* const* ppEnabledExtensionNames const VkPhysicalDeviceFeatures* pEnabledFeatures - Any given element of pname:ppEnabledLayerNames must: be the name of a layer present on the system, exactly matching a string returned in the sname:VkLayerProperties structure by fname:vkEnumerateDeviceLayerProperties + pname:ppEnabledLayerNames must: either be sname:NULL or contain the same sequence of layer names that was enabled when creating the parent instance Any given element of pname:ppEnabledExtensionNames must: be the name of an extension present on the system, exactly matching a string returned in the sname:VkExtensionProperties structure by fname:vkEnumerateDeviceExtensionProperties If an extension listed in pname:ppEnabledExtensionNames is provided as part of a layer, then both the layer and extension must: be enabled to enable that extension The pname:queueFamilyIndex member of any given element of pname:pQueueCreateInfos must: be unique within pname:pQueueCreateInfos @@ -1926,7 +1926,7 @@ maintained in the master branch of the Khronos Vulkan Github project. uint32_t signalSemaphoreCount const VkSemaphore* pSignalSemaphores - Any given element of pname:pSignalSemaphores must: currently be unsignalled + Any given element of pname:pSignalSemaphores must: currently be unsignaled Any given element of pname:pCommandBuffers must: either have been recorded with the ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, or not currently be executing on the device Any given element of pname:pCommandBuffers must: be in the executable state If any given element of pname:pCommandBuffers contains commands that execute secondary command buffers, those secondary command buffers must: have been recorded with the ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, or not currently be executing on the device @@ -2095,7 +2095,7 @@ maintained in the master branch of the Khronos Vulkan Github project. VkSwapchainKHR oldSwapchain pname:surface must: be a surface that is supported by the device as determined using fname:vkGetPhysicalDeviceSurfaceSupportKHR - The native window referred to by pname:surface mustnot: already be associated with a swapchain other than pname:oldSwapchain, or with a non-{apiname} graphics API surface + The native window referred to by pname:surface mustnot: already be associated with a swapchain other than pname:oldSwapchain, or with a non-Vulkan graphics API surface pname:minImageCount must: be greater than or equal to the value returned in the pname:minImageCount member of the sname:VkSurfaceCapabilitiesKHR structure returned by fname:vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface pname:minImageCount must: be less than or equal to the value returned in the pname:maxImageCount member of the sname:VkSurfaceCapabilitiesKHR structure returned by fname:vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface if the returned pname:maxImageCount is not zero pname:imageFormat and pname:imageColorspace must: match the pname:format and pname:colorSpace members, respectively, of one of the sname:VkSurfaceFormatKHR structures returned by fname:vkGetPhysicalDeviceSurfaceFormatsKHR for the surface @@ -2657,7 +2657,7 @@ maintained in the master branch of the Khronos Vulkan Github project. - + @@ -2894,7 +2894,7 @@ maintained in the master branch of the Khronos Vulkan Github project. - + @@ -3072,7 +3072,7 @@ maintained in the master branch of the Khronos Vulkan Github project. uint32_t* pPropertyCount VkExtensionProperties* pProperties - If pname:pLayerName is not `NULL`, it must: be the name of an instance layer returned by flink:vkEnumerateInstanceLayerProperties + If pname:pLayerName is not `NULL`, it must: be the name of a layer returned by flink:vkEnumerateInstanceLayerProperties @@ -3088,7 +3088,7 @@ maintained in the master branch of the Khronos Vulkan Github project. uint32_t* pPropertyCount VkExtensionProperties* pProperties - If pname:pLayerName is not `NULL`, it must: be the name of a device layer returned by flink:vkEnumerateDeviceLayerProperties + If pname:pLayerName is not `NULL`, it must: be the name of a layer returned by flink:vkEnumerateDeviceLayerProperties @@ -3109,7 +3109,7 @@ maintained in the master branch of the Khronos Vulkan Github project. const VkSubmitInfo* pSubmits VkFence fence - If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be unsignalled + If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be unsignaled If pname:fence is not sname:VK_NULL_HANDLE, pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue @@ -3265,7 +3265,7 @@ maintained in the master branch of the Khronos Vulkan Github project. const VkBindSparseInfo* pBindInfo VkFence fence - pname:fence must: be unsignalled + pname:fence must: be unsignaled pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue @@ -4599,7 +4599,7 @@ maintained in the master branch of the Khronos Vulkan Github project. pname:queueFamilyIndex must: be less than pname:pQueueFamilyPropertyCount returned by fname:vkGetPhysicalDeviceQueueFamilyProperties for the given pname:physicalDevice - + VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR VkPhysicalDevice physicalDevice VkSurfaceKHR surface @@ -4653,8 +4653,8 @@ maintained in the master branch of the Khronos Vulkan Github project. VkFence fence uint32_t* pImageIndex - If pname:semaphore is not sname:VK_NULL_HANDLE it must: be unsignalled - If pname:fence is not sname:VK_NULL_HANDLE it must: be unsignalled and mustnot: be associated with any other queue command that has not yet completed execution on that queue + If pname:semaphore is not sname:VK_NULL_HANDLE it must: be unsignaled + If pname:fence is not sname:VK_NULL_HANDLE it must: be unsignaled and mustnot: be associated with any other queue command that has not yet completed execution on that queue @@ -4761,7 +4761,7 @@ maintained in the master branch of the Khronos Vulkan Github project. pname:instance must: be a valid sname:VkInstance handle pname:flags must: be a combination of one or more of sname:VkDebugReportFlagBitsEXT pname:objType must: be one of sname:VkDebugReportObjectTypeEXT, ename:VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT if pname:object is `NULL` - pname:object may: be a {apiname} object + pname:object may: be a Vulkan object pname:pLayerPrefix must: be a `NULL` terminated string. pname:pMsg must: be a `NULL` terminated string. @@ -5043,6 +5043,7 @@ maintained in the master branch of the Khronos Vulkan Github project. + diff --git a/src/vulkan/vulkan.h b/src/vulkan/vulkan.h index 741da4ce..2f180768 100644 --- a/src/vulkan/vulkan.h +++ b/src/vulkan/vulkan.h @@ -43,7 +43,7 @@ extern "C" { #define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff) #define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff) // Version of this file -#define VK_HEADER_VERSION 12 +#define VK_HEADER_VERSION 13 #define VK_NULL_HANDLE 0 @@ -3172,13 +3172,14 @@ VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR) #define VK_KHR_SURFACE_SPEC_VERSION 25 #define VK_KHR_SURFACE_EXTENSION_NAME "VK_KHR_surface" +#define VK_COLORSPACE_SRGB_NONLINEAR_KHR VK_COLOR_SPACE_SRGB_NONLINEAR_KHR typedef enum VkColorSpaceKHR { - VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0, - VK_COLOR_SPACE_BEGIN_RANGE_KHR = VK_COLORSPACE_SRGB_NONLINEAR_KHR, - VK_COLOR_SPACE_END_RANGE_KHR = VK_COLORSPACE_SRGB_NONLINEAR_KHR, - VK_COLOR_SPACE_RANGE_SIZE_KHR = (VK_COLORSPACE_SRGB_NONLINEAR_KHR - VK_COLORSPACE_SRGB_NONLINEAR_KHR + 1), + VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0, + VK_COLOR_SPACE_BEGIN_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, + VK_COLOR_SPACE_END_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, + VK_COLOR_SPACE_RANGE_SIZE_KHR = (VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - VK_COLOR_SPACE_SRGB_NONLINEAR_KHR + 1), VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF } VkColorSpaceKHR;