WHO Immunization Implementation Guide
1.0.0 - release
WHO Immunization Implementation Guide, published by WHO. This guide is not an authorized publication; it is the continuous build for version 1.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/WorldHealthOrganization/smart-immunizations/tree/132/merge and changes regularly. See the Directory of published versions
| Draft as of 2026-03-31 |
<Library xmlns="http://hl7.org/fhir">
<id value="IMMZD18SHPVSingleDoseLogic"/>
<meta>
<profile
value="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary"/>
<profile
value="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary"/>
<profile
value="http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library"/>
<profile
value="http://hl7.org/fhir/uv/cql/StructureDefinition/cql-module"/>
</meta>
<text>
<status value="extensions"/>
<div xmlns="http://www.w3.org/1999/xhtml">
<div>
<table class="grid dict">
<tr>
<th scope="row"><b>Title: </b></th>
<td style="padding-left: 4px;">IMMZD18SHPVSingleDoseLogic</td>
</tr>
<tr>
<th scope="row"><b>Id: </b></th>
<td style="padding-left: 4px;">IMMZD18SHPVSingleDoseLogic</td>
</tr>
<tr>
<th scope="row"><b>Version: </b></th>
<td style="padding-left: 4px;">1.0.0</td>
</tr>
<tr>
<th scope="row"><b>Url: </b></th>
<td style="padding-left: 4px;"><a href="Library-IMMZD18SHPVSingleDoseLogic.html">IMMZD18SHPVSingleDoseLogic</a></td>
</tr>
<tr>
<th scope="row"><b>Status: </b></th>
<td style="padding-left: 4px;">draft</td>
</tr>
<tr>
<th scope="row"><b>Type: </b></th>
<td style="padding-left: 4px;">
<p style="margin-bottom: 5px;">
<b>system: </b> <span><a href="http://terminology.hl7.org/7.1.0/CodeSystem-library-type.html">http://terminology.hl7.org/CodeSystem/library-type</a></span>
</p>
<p style="margin-bottom: 5px;">
<b>code: </b> <span>logic-library</span>
</p>
</td>
</tr>
<tr>
<th scope="row"><b>Date: </b></th>
<td style="padding-left: 4px;">2026-03-31 13:54:17+0000</td>
</tr>
<tr>
<th scope="row"><b>Publisher: </b></th>
<td style="padding-left: 4px;">WHO</td>
</tr>
<tr>
<th scope="row"><b>Description: </b></th>
<td style="padding-left: 4px;"><div><p>This library defines decision support logic for the IMMZ.D18.S.Single-dose schedule table in the Immunization CPG</p>
</div></td>
</tr>
<tr>
<th scope="row"><b>Related Artifacts: </b></th>
<td style="padding-left: 4px;">
<p><b>Dependencies</b></p>
<ul>
<li><a href="Library-WHOCommon.html">WHOCommon</a></li>
<li><a href="Library-IMMZCommon.html">IMMZCommon</a></li>
<li><a href="Library-IMMZConcepts.html">IMMZConcepts</a></li>
<li><a href="Library-IMMZEncounterElements.html">IMMZEncounterElements</a></li>
<li><a href="Library-IMMZD2DTHPVEncounterElements.html">IMMZD2DTHPVEncounterElements</a></li>
</ul>
</td>
</tr>
<tr>
<th scope="row"><b>Parameters: </b></th>
<td style="padding-left: 4px;">
<table class="grid-dict">
<tr><th><b>Name</b></th><th><b>Type</b></th><th><b>Min</b></th><th><b>Max</b></th><th><b>In/Out</b></th></tr>
<tr><th>Today</th><th>date</th><th>0</th><th>1</th><th>In</th></tr>
<tr><th>Patient</th><th>Patient</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>First HPV dose from the primary series was administered</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Human papillomavirus (HPV) dose 1</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Human papillomavirus (HPV) dose 1 Due Date</th><th>date</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Human papillomavirus (HPV) dose 1 Overdue</th><th>date</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Human papillomavirus (HPV) dose 1 Create</th><th>string</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Human papillomavirus (HPV) dose 1 Expiration</th><th>Resource</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Second HPV dose from the primary series was administered</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>HPV dose 2 (Immunocompromised or HIV-positive)</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>HPV dose 2 (Immunocompromised or HIV-positive) Due Date</th><th>date</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>HPV dose 2 (Immunocompromised or HIV-positive) Create</th><th>string</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>HPV dose 2 (Immunocompromised or HIV-positive) Overdue</th><th>Resource</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>HPV dose 2 (Immunocompromised or HIV-positive) Expiration</th><th>Resource</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Third HPV dose from the primary series was administered</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>HPV dose 3 (Immunocompromised or HIV-positive)</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>HPV dose 3 (Immunocompromised or HIV-positive) Due Date</th><th>date</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>HPV dose 3 (Immunocompromised or HIV-positive) Create</th><th>string</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>HPV dose 3 (Immunocompromised or HIV-positive) Overdue</th><th>Resource</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>HPV dose 3 (Immunocompromised or HIV-positive) Expiration</th><th>Resource</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Test Validation</th><th>Resource</th><th>0</th><th>1</th><th>Out</th></tr>
</table>
</td>
</tr>
<tr>
<td colspan="2">
<table>
<tr><th><a id="cql-content"><b>Content: </b></a> text/cql</th></tr>
<tr><td><pre><code class="language-cql">/*
* Library: IMMZD18SHPVSingleDoseLogic (IMMZ.D18.S.Single-dose schedule)
* Schedule Table: Alternative single-dose schedule
*/
library IMMZD18SHPVSingleDoseLogic
using FHIR version '4.0.1'
include FHIRHelpers version '4.0.1'
include WHOCommon called WC
include IMMZCommon called Common
include IMMZConcepts called Concepts
include IMMZEncounterElements called IE
include IMMZD2DTHPVEncounterElements called Encounter
parameter Today Date default Today()
context Patient
/*
@output: Human papillomavirus (HPV) dose 1
@description: Provision of the HPV dose 1
@trigger: Child's birth
@pseudo:
@triggerDate: "Date of birth"
*/
define "Human papillomavirus (HPV) dose 1":
Encounter."No HPV primary series doses were administered"
and not "First HPV dose from the primary series was administered"
/*
@output: Human papillomavirus (HPV) dose 1 Create
@create: HPV dose 1 should be provided if the client is older than 9 years of age.
*/
define "Human papillomavirus (HPV) dose 1 Create":
if "Human papillomavirus (HPV) dose 1"
then 'HPV dose 1 should be provided if the client is older than 9 years of age.' + '
Due Date: ' + ToString("Human papillomavirus (HPV) dose 1 Due Date") + '
Overdue: ' + ToString("Human papillomavirus (HPV) dose 1 Overdue")
else ''
/*
@dynamicValue: Human papillomavirus (HPV) dose 1 Due Date
@pseudocode: "Date of birth" + 9 years
*/
define "Human papillomavirus (HPV) dose 1 Due Date":
if "Human papillomavirus (HPV) dose 1" then Patient.birthDate + 9 years
else null
/*
@dynamicValue: Human papillomavirus (HPV) dose 1 Overdue
@pseudocode: "Date of birth" + 20 years
*/
define "Human papillomavirus (HPV) dose 1 Overdue":
if "Human papillomavirus (HPV) dose 1" then Patient.birthDate + 20 years
else null
/*
@dynamicValue: Human papillomavirus (HPV) dose 1 Expiration
@pseudocode: To be determined by Member States; however, there is no recommended expiration date.
*/
define "Human papillomavirus (HPV) dose 1 Expiration":
null
/*
@complete: First HPV dose from the primary series was administered
@pseudocode: Count of vaccines administered (where "Vaccine type" = "HPV vaccines") = 1
*/
define "First HPV dose from the primary series was administered":
Encounter."One HPV primary series dose was administered"
/*
@output: HPV dose 2 (Immunocompromised or HIV-positive)
@description: Provision of the HPV dose 2 for individuals immunocompromised or infected with HIV
@trigger: First HPV dose from the primary series was administered and client's HIV status is positive or client is immunocompromised
@pseudo: Count of vaccines administered (where "Vaccine type" = "HPV vaccines") = 1 AND ("HIV status" = "HIV-positive" OR "Immunocompromised" = TRUE)
@triggerDate: "Date and time of vaccination" (where "Vaccine type" = "HPV vaccines")
*/
define "HPV dose 2 (Immunocompromised or HIV-positive)":
"First HPV dose from the primary series was administered"
and (
Encounter."Client's HIV status is positive"
or Encounter."Client is immunocompromised"
)
and not "Second HPV dose from the primary series was administered"
/*
@output: HPV dose 2 (Immunocompromised or HIV-positive) Create
@create: Individuals known to be immunocompromised or infected with HIV should receive at least two HPV vaccine doses.
*/
define "HPV dose 2 (Immunocompromised or HIV-positive) Create":
if "HPV dose 2 (Immunocompromised or HIV-positive)"
then 'Individuals known to be immunocompromised or infected with HIV should receive at least two HPV vaccine doses.' + '
Due Date: ' + ToString("HPV dose 2 (Immunocompromised or HIV-positive) Due Date")
else ''
/*
@dynamicValue: HPV dose 2 (Immunocompromised or HIV-positive) Due Date
@pseudocode: "Date and time of vaccination" (where "Vaccine type" = "HPV vaccines") + 6 months
*/
define "HPV dose 2 (Immunocompromised or HIV-positive) Due Date":
if "HPV dose 2 (Immunocompromised or HIV-positive)" then Encounter."Date of Latest HPV Dose" + 6 months
else null
/*
@dynamicValue: HPV dose 2 (Immunocompromised or HIV-positive) Overdue
@pseudocode: To be determined by Member States; however, there is no recommended overdue date.
*/
define "HPV dose 2 (Immunocompromised or HIV-positive) Overdue":
null
/*
@dynamicValue: HPV dose 2 (Immunocompromised or HIV-positive) Expiration
@pseudocode: To be determined by Member States; however, there is no recommended expiration date.
*/
define "HPV dose 2 (Immunocompromised or HIV-positive) Expiration":
null
/*
@complete: Second HPV dose from the primary series was administered
@pseudocode: Count of vaccines administered (where "Vaccine type" = "HPV vaccines") = 2
*/
define "Second HPV dose from the primary series was administered":
Encounter."Two HPV primary series doses were administered"
/*
@output: HPV dose 3 (Immunocompromised or HIV-positive)
@description: Provision of the HPV dose 3 for individuals immunocompromised or infected with HIV
@trigger: Second HPV dose from the primary series was administered and client's HIV status is positive or client is immunocompromised
@pseudo: Count of vaccines administered (where "Vaccine type" = "HPV vaccines") = 2 AND ("HIV status" = "HIV-positive" OR "Immunocompromised" = TRUE)
@triggerDate: Latest "Date and time of vaccination" (where "Vaccine type" = "HPV vaccines")
*/
define "HPV dose 3 (Immunocompromised or HIV-positive)":
"Second HPV dose from the primary series was administered"
and (
Encounter."Client's HIV status is positive"
or Encounter."Client is immunocompromised"
)
and not "Third HPV dose from the primary series was administered"
/*
@output: HPV dose 3 (Immunocompromised or HIV-positive) Create
@create: Where possible, three HPV doses should be provided to individuals known to be immunocompromised or infected with HIV.
*/
define "HPV dose 3 (Immunocompromised or HIV-positive) Create":
if "HPV dose 3 (Immunocompromised or HIV-positive)"
then 'Where possible, three HPV doses should be provided to individuals known to be immunocompromised or infected with HIV.' + '
Due Date: ' + ToString("HPV dose 3 (Immunocompromised or HIV-positive) Due Date")
else ''
/*
@dynamicValue: HPV dose 3 (Immunocompromised or HIV-positive) Due Date
@pseudocode: Latest "Date and time of vaccination" (where "Vaccine type" = "HPV vaccines") + 6 months
*/
define "HPV dose 3 (Immunocompromised or HIV-positive) Due Date":
if "HPV dose 3 (Immunocompromised or HIV-positive)" then Encounter."Date of Latest HPV Dose" + 6 months
else null
/*
@dynamicValue: HPV dose 3 (Immunocompromised or HIV-positive) Overdue
@pseudocode: To be determined by Member States; however, there is no recommended overdue date.
*/
define "HPV dose 3 (Immunocompromised or HIV-positive) Overdue":
null
/*
@dynamicValue: HPV dose 3 (Immunocompromised or HIV-positive) Expiration
@pseudocode: To be determined by Member States; however, there is no recommended expiration date.
*/
define "HPV dose 3 (Immunocompromised or HIV-positive) Expiration":
null
/*
@complete: Third HPV dose from the primary series was administered
@pseudocode: Count of vaccines administered (where "Vaccine type" = "HPV vaccines") = 3
*/
define "Third HPV dose from the primary series was administered":
Encounter."Three HPV primary series doses were administered"
/*
@test: Test expected results based on example patients
*/
define "Test Validation":
case
when Patient.id = 'HPV27.1' then "Human papillomavirus (HPV) dose 1"
when Patient.id = 'HPV28.2' then "Human papillomavirus (HPV) dose 1"
when Patient.id = 'HPV29.2' then "Human papillomavirus (HPV) dose 1"
when Patient.id = 'HPV30.3' then "HPV dose 2 (Immunocompromised or HIV-positive)"
when Patient.id = 'HPV31.3' then "HPV dose 2 (Immunocompromised or HIV-positive)"
when Patient.id = 'HPV32.3' then "HPV dose 2 (Immunocompromised or HIV-positive)"
when Patient.id = 'HPV33.3' then "HPV dose 2 (Immunocompromised or HIV-positive)"
when Patient.id = 'HPV34.3' then "First HPV dose from the primary series was administered" and not "HPV dose 2 (Immunocompromised or HIV-positive)"
when Patient.id = 'HPV35.3' then "HPV dose 3 (Immunocompromised or HIV-positive)"
when Patient.id = 'HPV36.3' then "HPV dose 3 (Immunocompromised or HIV-positive)"
when Patient.id = 'HPV37.3' then "HPV dose 3 (Immunocompromised or HIV-positive)"
when Patient.id = 'HPV38.3' then "HPV dose 3 (Immunocompromised or HIV-positive)"
when Patient.id = 'HPV39.1' then "Third HPV dose from the primary series was administered"
else 'No test case set'
end
</code></pre></td></tr>
</table>
</td>
</tr>
</table>
</div>
</div>
</text>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability">
<valueCode value="computable"/>
</extension>
<url
value="http://smart.who.int/immunizations/Library/IMMZD18SHPVSingleDoseLogic"/>
<version value="1.0.0"/>
<name value="IMMZD18SHPVSingleDoseLogic"/>
<title value="IMMZD18SHPVSingleDoseLogic"/>
<status value="draft"/>
<experimental value="false"/>
<type>
<coding>
<system value="http://terminology.hl7.org/CodeSystem/library-type"/>
<code value="logic-library"/>
</coding>
</type>
<date value="2026-03-31T13:54:17+00:00"/>
<publisher value="WHO"/>
<contact>
<name value="WHO"/>
<telecom>
<system value="url"/>
<value value="http://who.int"/>
</telecom>
</contact>
<description
value="This library defines decision support logic for the IMMZ.D18.S.Single-dose schedule table in the Immunization CPG"/>
<relatedArtifact>
<type value="depends-on"/>
<display value="Library WC"/>
<resource value="http://smart.who.int/immunizations/Library/WHOCommon"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Library Common"/>
<resource value="http://smart.who.int/immunizations/Library/IMMZCommon"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Library Concepts"/>
<resource
value="http://smart.who.int/immunizations/Library/IMMZConcepts"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Library IE"/>
<resource
value="http://smart.who.int/immunizations/Library/IMMZEncounterElements"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Library Encounter"/>
<resource
value="http://smart.who.int/immunizations/Library/IMMZD2DTHPVEncounterElements"/>
</relatedArtifact>
<parameter>
<name value="Today"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<type value="date"/>
</parameter>
<parameter>
<name value="Patient"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="Patient"/>
</parameter>
<parameter>
<name value="First HPV dose from the primary series was administered"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Human papillomavirus (HPV) dose 1"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Human papillomavirus (HPV) dose 1 Due Date"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="date"/>
</parameter>
<parameter>
<name value="Human papillomavirus (HPV) dose 1 Overdue"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="date"/>
</parameter>
<parameter>
<name value="Human papillomavirus (HPV) dose 1 Create"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="string"/>
</parameter>
<parameter>
<name value="Human papillomavirus (HPV) dose 1 Expiration"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="Resource"/>
</parameter>
<parameter>
<name value="Second HPV dose from the primary series was administered"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="HPV dose 2 (Immunocompromised or HIV-positive)"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="HPV dose 2 (Immunocompromised or HIV-positive) Due Date"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="date"/>
</parameter>
<parameter>
<name value="HPV dose 2 (Immunocompromised or HIV-positive) Create"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="string"/>
</parameter>
<parameter>
<name value="HPV dose 2 (Immunocompromised or HIV-positive) Overdue"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="Resource"/>
</parameter>
<parameter>
<name value="HPV dose 2 (Immunocompromised or HIV-positive) Expiration"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="Resource"/>
</parameter>
<parameter>
<name value="Third HPV dose from the primary series was administered"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="HPV dose 3 (Immunocompromised or HIV-positive)"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="HPV dose 3 (Immunocompromised or HIV-positive) Due Date"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="date"/>
</parameter>
<parameter>
<name value="HPV dose 3 (Immunocompromised or HIV-positive) Create"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="string"/>
</parameter>
<parameter>
<name value="HPV dose 3 (Immunocompromised or HIV-positive) Overdue"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="Resource"/>
</parameter>
<parameter>
<name value="HPV dose 3 (Immunocompromised or HIV-positive) Expiration"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="Resource"/>
</parameter>
<parameter>
<name value="Test Validation"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="Resource"/>
</parameter>
<content>
<contentType value="text/cql"/>
<data
value="LyoKICogTGlicmFyeTogSU1NWkQxOFNIUFZTaW5nbGVEb3NlTG9naWMgKElNTVouRDE4LlMuU2luZ2xlLWRvc2Ugc2NoZWR1bGUpCiAqIFNjaGVkdWxlIFRhYmxlOiBBbHRlcm5hdGl2ZSBzaW5nbGUtZG9zZSBzY2hlZHVsZQogKi8KbGlicmFyeSBJTU1aRDE4U0hQVlNpbmdsZURvc2VMb2dpYwoKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKaW5jbHVkZSBGSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgV0hPQ29tbW9uIGNhbGxlZCBXQwoKaW5jbHVkZSBJTU1aQ29tbW9uIGNhbGxlZCBDb21tb24KaW5jbHVkZSBJTU1aQ29uY2VwdHMgY2FsbGVkIENvbmNlcHRzCgppbmNsdWRlIElNTVpFbmNvdW50ZXJFbGVtZW50cyBjYWxsZWQgSUUKaW5jbHVkZSBJTU1aRDJEVEhQVkVuY291bnRlckVsZW1lbnRzIGNhbGxlZCBFbmNvdW50ZXIKCnBhcmFtZXRlciBUb2RheSBEYXRlIGRlZmF1bHQgVG9kYXkoKQoKCmNvbnRleHQgUGF0aWVudAoKCi8qCkBvdXRwdXQ6IEh1bWFuIHBhcGlsbG9tYXZpcnVzIChIUFYpIGRvc2UgMQpAZGVzY3JpcHRpb246IFByb3Zpc2lvbiBvZiB0aGUgSFBWIGRvc2UgMQpAdHJpZ2dlcjogQ2hpbGQncyBiaXJ0aApAcHNldWRvOiAKQHRyaWdnZXJEYXRlOiAiRGF0ZSBvZiBiaXJ0aCIKKi8KZGVmaW5lICJIdW1hbiBwYXBpbGxvbWF2aXJ1cyAoSFBWKSBkb3NlIDEiOgogIEVuY291bnRlci4iTm8gSFBWIHByaW1hcnkgc2VyaWVzIGRvc2VzIHdlcmUgYWRtaW5pc3RlcmVkIgogIGFuZCBub3QgIkZpcnN0IEhQViBkb3NlIGZyb20gdGhlIHByaW1hcnkgc2VyaWVzIHdhcyBhZG1pbmlzdGVyZWQiCgoKLyoKQG91dHB1dDogSHVtYW4gcGFwaWxsb21hdmlydXMgKEhQVikgZG9zZSAxIENyZWF0ZQpAY3JlYXRlOiBIUFYgZG9zZSAxIHNob3VsZCBiZSBwcm92aWRlZCBpZiB0aGUgY2xpZW50IGlzIG9sZGVyIHRoYW4gOSB5ZWFycyBvZiBhZ2UuCiovCmRlZmluZSAiSHVtYW4gcGFwaWxsb21hdmlydXMgKEhQVikgZG9zZSAxIENyZWF0ZSI6CiAgaWYgIkh1bWFuIHBhcGlsbG9tYXZpcnVzIChIUFYpIGRvc2UgMSIKICB0aGVuICdIUFYgZG9zZSAxIHNob3VsZCBiZSBwcm92aWRlZCBpZiB0aGUgY2xpZW50IGlzIG9sZGVyIHRoYW4gOSB5ZWFycyBvZiBhZ2UuJyArICcKRHVlIERhdGU6ICcgKyBUb1N0cmluZygiSHVtYW4gcGFwaWxsb21hdmlydXMgKEhQVikgZG9zZSAxIER1ZSBEYXRlIikgKyAnCk92ZXJkdWU6ICcgKyBUb1N0cmluZygiSHVtYW4gcGFwaWxsb21hdmlydXMgKEhQVikgZG9zZSAxIE92ZXJkdWUiKQogIGVsc2UgJycKCgovKgpAZHluYW1pY1ZhbHVlOiBIdW1hbiBwYXBpbGxvbWF2aXJ1cyAoSFBWKSBkb3NlIDEgRHVlIERhdGUKQHBzZXVkb2NvZGU6ICJEYXRlIG9mIGJpcnRoIiArIDkgeWVhcnMKKi8KZGVmaW5lICJIdW1hbiBwYXBpbGxvbWF2aXJ1cyAoSFBWKSBkb3NlIDEgRHVlIERhdGUiOgogIGlmICJIdW1hbiBwYXBpbGxvbWF2aXJ1cyAoSFBWKSBkb3NlIDEiIHRoZW4gUGF0aWVudC5iaXJ0aERhdGUgKyA5IHllYXJzCiAgZWxzZSBudWxsCgoKLyoKQGR5bmFtaWNWYWx1ZTogSHVtYW4gcGFwaWxsb21hdmlydXMgKEhQVikgZG9zZSAxIE92ZXJkdWUKQHBzZXVkb2NvZGU6ICJEYXRlIG9mIGJpcnRoIiArIDIwIHllYXJzCiovCmRlZmluZSAiSHVtYW4gcGFwaWxsb21hdmlydXMgKEhQVikgZG9zZSAxIE92ZXJkdWUiOgogIGlmICJIdW1hbiBwYXBpbGxvbWF2aXJ1cyAoSFBWKSBkb3NlIDEiIHRoZW4gUGF0aWVudC5iaXJ0aERhdGUgKyAyMCB5ZWFycwogIGVsc2UgbnVsbAoKCi8qCkBkeW5hbWljVmFsdWU6IEh1bWFuIHBhcGlsbG9tYXZpcnVzIChIUFYpIGRvc2UgMSBFeHBpcmF0aW9uCkBwc2V1ZG9jb2RlOiBUbyBiZSBkZXRlcm1pbmVkIGJ5IE1lbWJlciBTdGF0ZXM7IGhvd2V2ZXIsIHRoZXJlIGlzIG5vIHJlY29tbWVuZGVkIGV4cGlyYXRpb24gZGF0ZS4KKi8KZGVmaW5lICJIdW1hbiBwYXBpbGxvbWF2aXJ1cyAoSFBWKSBkb3NlIDEgRXhwaXJhdGlvbiI6CiAgbnVsbAoKICAKLyoKQGNvbXBsZXRlOiBGaXJzdCBIUFYgZG9zZSBmcm9tIHRoZSBwcmltYXJ5IHNlcmllcyB3YXMgYWRtaW5pc3RlcmVkCkBwc2V1ZG9jb2RlOiBDb3VudCBvZiB2YWNjaW5lcyBhZG1pbmlzdGVyZWQgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIkhQViB2YWNjaW5lcyIpID0gMQoqLwpkZWZpbmUgIkZpcnN0IEhQViBkb3NlIGZyb20gdGhlIHByaW1hcnkgc2VyaWVzIHdhcyBhZG1pbmlzdGVyZWQiOgogIEVuY291bnRlci4iT25lIEhQViBwcmltYXJ5IHNlcmllcyBkb3NlIHdhcyBhZG1pbmlzdGVyZWQiCgoKCi8qCkBvdXRwdXQ6IEhQViBkb3NlIDIgKEltbXVub2NvbXByb21pc2VkIG9yIEhJVi1wb3NpdGl2ZSkKQGRlc2NyaXB0aW9uOiBQcm92aXNpb24gb2YgdGhlIEhQViBkb3NlIDIgZm9yIGluZGl2aWR1YWxzIGltbXVub2NvbXByb21pc2VkIG9yIGluZmVjdGVkIHdpdGggSElWCkB0cmlnZ2VyOiBGaXJzdCBIUFYgZG9zZSBmcm9tIHRoZSBwcmltYXJ5IHNlcmllcyB3YXMgYWRtaW5pc3RlcmVkIGFuZCBjbGllbnQncyBISVYgc3RhdHVzIGlzIHBvc2l0aXZlIG9yIGNsaWVudCBpcyBpbW11bm9jb21wcm9taXNlZApAcHNldWRvOiBDb3VudCBvZiB2YWNjaW5lcyBhZG1pbmlzdGVyZWQgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIkhQViB2YWNjaW5lcyIpID0gMSBBTkQgKCJISVYgc3RhdHVzIiA9ICJISVYtcG9zaXRpdmUiIE9SICJJbW11bm9jb21wcm9taXNlZCIgPSBUUlVFKQpAdHJpZ2dlckRhdGU6ICJEYXRlIGFuZCB0aW1lIG9mIHZhY2NpbmF0aW9uIiAod2hlcmUgIlZhY2NpbmUgdHlwZSIgPSAiSFBWIHZhY2NpbmVzIikKKi8KZGVmaW5lICJIUFYgZG9zZSAyIChJbW11bm9jb21wcm9taXNlZCBvciBISVYtcG9zaXRpdmUpIjoKICAiRmlyc3QgSFBWIGRvc2UgZnJvbSB0aGUgcHJpbWFyeSBzZXJpZXMgd2FzIGFkbWluaXN0ZXJlZCIKICBhbmQgKAogICAgRW5jb3VudGVyLiJDbGllbnQncyBISVYgc3RhdHVzIGlzIHBvc2l0aXZlIgogICAgb3IgRW5jb3VudGVyLiJDbGllbnQgaXMgaW1tdW5vY29tcHJvbWlzZWQiCiAgKQogIGFuZCBub3QgIlNlY29uZCBIUFYgZG9zZSBmcm9tIHRoZSBwcmltYXJ5IHNlcmllcyB3YXMgYWRtaW5pc3RlcmVkIgoKCi8qCkBvdXRwdXQ6IEhQViBkb3NlIDIgKEltbXVub2NvbXByb21pc2VkIG9yIEhJVi1wb3NpdGl2ZSkgQ3JlYXRlCkBjcmVhdGU6IEluZGl2aWR1YWxzIGtub3duIHRvIGJlIGltbXVub2NvbXByb21pc2VkIG9yIGluZmVjdGVkIHdpdGggSElWIHNob3VsZCByZWNlaXZlIGF0IGxlYXN0IHR3byBIUFYgdmFjY2luZSBkb3Nlcy4KKi8KZGVmaW5lICJIUFYgZG9zZSAyIChJbW11bm9jb21wcm9taXNlZCBvciBISVYtcG9zaXRpdmUpIENyZWF0ZSI6CiAgaWYgIkhQViBkb3NlIDIgKEltbXVub2NvbXByb21pc2VkIG9yIEhJVi1wb3NpdGl2ZSkiCiAgdGhlbiAnSW5kaXZpZHVhbHMga25vd24gdG8gYmUgaW1tdW5vY29tcHJvbWlzZWQgb3IgaW5mZWN0ZWQgd2l0aCBISVYgc2hvdWxkIHJlY2VpdmUgYXQgbGVhc3QgdHdvIEhQViB2YWNjaW5lIGRvc2VzLicgKyAnCkR1ZSBEYXRlOiAnICsgVG9TdHJpbmcoIkhQViBkb3NlIDIgKEltbXVub2NvbXByb21pc2VkIG9yIEhJVi1wb3NpdGl2ZSkgRHVlIERhdGUiKQogIGVsc2UgJycKCgovKgpAZHluYW1pY1ZhbHVlOiBIUFYgZG9zZSAyIChJbW11bm9jb21wcm9taXNlZCBvciBISVYtcG9zaXRpdmUpIER1ZSBEYXRlCkBwc2V1ZG9jb2RlOiAiRGF0ZSBhbmQgdGltZSBvZiB2YWNjaW5hdGlvbiIgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIkhQViB2YWNjaW5lcyIpICsgNiBtb250aHMKKi8KZGVmaW5lICJIUFYgZG9zZSAyIChJbW11bm9jb21wcm9taXNlZCBvciBISVYtcG9zaXRpdmUpIER1ZSBEYXRlIjoKICBpZiAiSFBWIGRvc2UgMiAoSW1tdW5vY29tcHJvbWlzZWQgb3IgSElWLXBvc2l0aXZlKSIgdGhlbiBFbmNvdW50ZXIuIkRhdGUgb2YgTGF0ZXN0IEhQViBEb3NlIiArIDYgbW9udGhzCiAgZWxzZSBudWxsCgoKLyoKQGR5bmFtaWNWYWx1ZTogSFBWIGRvc2UgMiAoSW1tdW5vY29tcHJvbWlzZWQgb3IgSElWLXBvc2l0aXZlKSBPdmVyZHVlCkBwc2V1ZG9jb2RlOiBUbyBiZSBkZXRlcm1pbmVkIGJ5IE1lbWJlciBTdGF0ZXM7IGhvd2V2ZXIsIHRoZXJlIGlzIG5vIHJlY29tbWVuZGVkIG92ZXJkdWUgZGF0ZS4KKi8KZGVmaW5lICJIUFYgZG9zZSAyIChJbW11bm9jb21wcm9taXNlZCBvciBISVYtcG9zaXRpdmUpIE92ZXJkdWUiOgogIG51bGwKCgovKgpAZHluYW1pY1ZhbHVlOiBIUFYgZG9zZSAyIChJbW11bm9jb21wcm9taXNlZCBvciBISVYtcG9zaXRpdmUpIEV4cGlyYXRpb24KQHBzZXVkb2NvZGU6IFRvIGJlIGRldGVybWluZWQgYnkgTWVtYmVyIFN0YXRlczsgaG93ZXZlciwgdGhlcmUgaXMgbm8gcmVjb21tZW5kZWQgZXhwaXJhdGlvbiBkYXRlLgoqLwpkZWZpbmUgIkhQViBkb3NlIDIgKEltbXVub2NvbXByb21pc2VkIG9yIEhJVi1wb3NpdGl2ZSkgRXhwaXJhdGlvbiI6CiAgbnVsbAoKICAKLyoKQGNvbXBsZXRlOiBTZWNvbmQgSFBWIGRvc2UgZnJvbSB0aGUgcHJpbWFyeSBzZXJpZXMgd2FzIGFkbWluaXN0ZXJlZApAcHNldWRvY29kZTogQ291bnQgb2YgdmFjY2luZXMgYWRtaW5pc3RlcmVkICh3aGVyZSAiVmFjY2luZSB0eXBlIiA9ICJIUFYgdmFjY2luZXMiKSA9IDIKKi8KZGVmaW5lICJTZWNvbmQgSFBWIGRvc2UgZnJvbSB0aGUgcHJpbWFyeSBzZXJpZXMgd2FzIGFkbWluaXN0ZXJlZCI6CiAgRW5jb3VudGVyLiJUd28gSFBWIHByaW1hcnkgc2VyaWVzIGRvc2VzIHdlcmUgYWRtaW5pc3RlcmVkIgoKCgovKgpAb3V0cHV0OiBIUFYgZG9zZSAzIChJbW11bm9jb21wcm9taXNlZCBvciBISVYtcG9zaXRpdmUpCkBkZXNjcmlwdGlvbjogUHJvdmlzaW9uIG9mIHRoZSBIUFYgZG9zZSAzIGZvciBpbmRpdmlkdWFscyBpbW11bm9jb21wcm9taXNlZCBvciBpbmZlY3RlZCB3aXRoIEhJVgpAdHJpZ2dlcjogU2Vjb25kIEhQViBkb3NlIGZyb20gdGhlIHByaW1hcnkgc2VyaWVzIHdhcyBhZG1pbmlzdGVyZWQgYW5kIGNsaWVudCdzIEhJViBzdGF0dXMgaXMgcG9zaXRpdmUgb3IgY2xpZW50IGlzIGltbXVub2NvbXByb21pc2VkCkBwc2V1ZG86IENvdW50IG9mIHZhY2NpbmVzIGFkbWluaXN0ZXJlZCAod2hlcmUgIlZhY2NpbmUgdHlwZSIgPSAiSFBWIHZhY2NpbmVzIikgPSAyIEFORCAoIkhJViBzdGF0dXMiID0gIkhJVi1wb3NpdGl2ZSIgT1IgIkltbXVub2NvbXByb21pc2VkIiA9IFRSVUUpCkB0cmlnZ2VyRGF0ZTogTGF0ZXN0ICJEYXRlIGFuZCB0aW1lIG9mIHZhY2NpbmF0aW9uIiAod2hlcmUgIlZhY2NpbmUgdHlwZSIgPSAiSFBWIHZhY2NpbmVzIikKKi8KZGVmaW5lICJIUFYgZG9zZSAzIChJbW11bm9jb21wcm9taXNlZCBvciBISVYtcG9zaXRpdmUpIjoKICAiU2Vjb25kIEhQViBkb3NlIGZyb20gdGhlIHByaW1hcnkgc2VyaWVzIHdhcyBhZG1pbmlzdGVyZWQiCiAgYW5kICgKICAgIEVuY291bnRlci4iQ2xpZW50J3MgSElWIHN0YXR1cyBpcyBwb3NpdGl2ZSIKICAgIG9yIEVuY291bnRlci4iQ2xpZW50IGlzIGltbXVub2NvbXByb21pc2VkIgogICkKICBhbmQgbm90ICJUaGlyZCBIUFYgZG9zZSBmcm9tIHRoZSBwcmltYXJ5IHNlcmllcyB3YXMgYWRtaW5pc3RlcmVkIgoKCi8qCkBvdXRwdXQ6IEhQViBkb3NlIDMgKEltbXVub2NvbXByb21pc2VkIG9yIEhJVi1wb3NpdGl2ZSkgQ3JlYXRlCkBjcmVhdGU6IFdoZXJlIHBvc3NpYmxlLCB0aHJlZSBIUFYgZG9zZXMgc2hvdWxkIGJlIHByb3ZpZGVkIHRvIGluZGl2aWR1YWxzIGtub3duIHRvIGJlIGltbXVub2NvbXByb21pc2VkIG9yIGluZmVjdGVkIHdpdGggSElWLgoqLwpkZWZpbmUgIkhQViBkb3NlIDMgKEltbXVub2NvbXByb21pc2VkIG9yIEhJVi1wb3NpdGl2ZSkgQ3JlYXRlIjoKICBpZiAiSFBWIGRvc2UgMyAoSW1tdW5vY29tcHJvbWlzZWQgb3IgSElWLXBvc2l0aXZlKSIKICB0aGVuICdXaGVyZSBwb3NzaWJsZSwgdGhyZWUgSFBWIGRvc2VzIHNob3VsZCBiZSBwcm92aWRlZCB0byBpbmRpdmlkdWFscyBrbm93biB0byBiZSBpbW11bm9jb21wcm9taXNlZCBvciBpbmZlY3RlZCB3aXRoIEhJVi4nICsgJwpEdWUgRGF0ZTogJyArIFRvU3RyaW5nKCJIUFYgZG9zZSAzIChJbW11bm9jb21wcm9taXNlZCBvciBISVYtcG9zaXRpdmUpIER1ZSBEYXRlIikKICBlbHNlICcnCgoKLyoKQGR5bmFtaWNWYWx1ZTogSFBWIGRvc2UgMyAoSW1tdW5vY29tcHJvbWlzZWQgb3IgSElWLXBvc2l0aXZlKSBEdWUgRGF0ZQpAcHNldWRvY29kZTogTGF0ZXN0ICJEYXRlIGFuZCB0aW1lIG9mIHZhY2NpbmF0aW9uIiAod2hlcmUgIlZhY2NpbmUgdHlwZSIgPSAiSFBWIHZhY2NpbmVzIikgKyA2IG1vbnRocwoqLwpkZWZpbmUgIkhQViBkb3NlIDMgKEltbXVub2NvbXByb21pc2VkIG9yIEhJVi1wb3NpdGl2ZSkgRHVlIERhdGUiOgogIGlmICJIUFYgZG9zZSAzIChJbW11bm9jb21wcm9taXNlZCBvciBISVYtcG9zaXRpdmUpIiB0aGVuIEVuY291bnRlci4iRGF0ZSBvZiBMYXRlc3QgSFBWIERvc2UiICsgNiBtb250aHMKICBlbHNlIG51bGwKCgovKgpAZHluYW1pY1ZhbHVlOiBIUFYgZG9zZSAzIChJbW11bm9jb21wcm9taXNlZCBvciBISVYtcG9zaXRpdmUpIE92ZXJkdWUKQHBzZXVkb2NvZGU6IFRvIGJlIGRldGVybWluZWQgYnkgTWVtYmVyIFN0YXRlczsgaG93ZXZlciwgdGhlcmUgaXMgbm8gcmVjb21tZW5kZWQgb3ZlcmR1ZSBkYXRlLgoqLwpkZWZpbmUgIkhQViBkb3NlIDMgKEltbXVub2NvbXByb21pc2VkIG9yIEhJVi1wb3NpdGl2ZSkgT3ZlcmR1ZSI6CiAgbnVsbAoKCi8qCkBkeW5hbWljVmFsdWU6IEhQViBkb3NlIDMgKEltbXVub2NvbXByb21pc2VkIG9yIEhJVi1wb3NpdGl2ZSkgRXhwaXJhdGlvbgpAcHNldWRvY29kZTogVG8gYmUgZGV0ZXJtaW5lZCBieSBNZW1iZXIgU3RhdGVzOyBob3dldmVyLCB0aGVyZSBpcyBubyByZWNvbW1lbmRlZCBleHBpcmF0aW9uIGRhdGUuCiovCmRlZmluZSAiSFBWIGRvc2UgMyAoSW1tdW5vY29tcHJvbWlzZWQgb3IgSElWLXBvc2l0aXZlKSBFeHBpcmF0aW9uIjoKICBudWxsCgogIAovKgpAY29tcGxldGU6IFRoaXJkIEhQViBkb3NlIGZyb20gdGhlIHByaW1hcnkgc2VyaWVzIHdhcyBhZG1pbmlzdGVyZWQKQHBzZXVkb2NvZGU6IENvdW50IG9mIHZhY2NpbmVzIGFkbWluaXN0ZXJlZCAod2hlcmUgIlZhY2NpbmUgdHlwZSIgPSAiSFBWIHZhY2NpbmVzIikgPSAzCiovCmRlZmluZSAiVGhpcmQgSFBWIGRvc2UgZnJvbSB0aGUgcHJpbWFyeSBzZXJpZXMgd2FzIGFkbWluaXN0ZXJlZCI6CiAgRW5jb3VudGVyLiJUaHJlZSBIUFYgcHJpbWFyeSBzZXJpZXMgZG9zZXMgd2VyZSBhZG1pbmlzdGVyZWQiCgoKCi8qCkB0ZXN0OiBUZXN0IGV4cGVjdGVkIHJlc3VsdHMgYmFzZWQgb24gZXhhbXBsZSBwYXRpZW50cwoqLwpkZWZpbmUgIlRlc3QgVmFsaWRhdGlvbiI6CiAgY2FzZQogICAgd2hlbiBQYXRpZW50LmlkID0gJ0hQVjI3LjEnIHRoZW4gIkh1bWFuIHBhcGlsbG9tYXZpcnVzIChIUFYpIGRvc2UgMSIKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdIUFYyOC4yJyB0aGVuICJIdW1hbiBwYXBpbGxvbWF2aXJ1cyAoSFBWKSBkb3NlIDEiCiAgICB3aGVuIFBhdGllbnQuaWQgPSAnSFBWMjkuMicgdGhlbiAiSHVtYW4gcGFwaWxsb21hdmlydXMgKEhQVikgZG9zZSAxIgogICAgd2hlbiBQYXRpZW50LmlkID0gJ0hQVjMwLjMnIHRoZW4gIkhQViBkb3NlIDIgKEltbXVub2NvbXByb21pc2VkIG9yIEhJVi1wb3NpdGl2ZSkiCiAgICB3aGVuIFBhdGllbnQuaWQgPSAnSFBWMzEuMycgdGhlbiAiSFBWIGRvc2UgMiAoSW1tdW5vY29tcHJvbWlzZWQgb3IgSElWLXBvc2l0aXZlKSIKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdIUFYzMi4zJyB0aGVuICJIUFYgZG9zZSAyIChJbW11bm9jb21wcm9taXNlZCBvciBISVYtcG9zaXRpdmUpIgogICAgd2hlbiBQYXRpZW50LmlkID0gJ0hQVjMzLjMnIHRoZW4gIkhQViBkb3NlIDIgKEltbXVub2NvbXByb21pc2VkIG9yIEhJVi1wb3NpdGl2ZSkiCiAgICB3aGVuIFBhdGllbnQuaWQgPSAnSFBWMzQuMycgdGhlbiAiRmlyc3QgSFBWIGRvc2UgZnJvbSB0aGUgcHJpbWFyeSBzZXJpZXMgd2FzIGFkbWluaXN0ZXJlZCIgYW5kIG5vdCAiSFBWIGRvc2UgMiAoSW1tdW5vY29tcHJvbWlzZWQgb3IgSElWLXBvc2l0aXZlKSIKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdIUFYzNS4zJyB0aGVuICJIUFYgZG9zZSAzIChJbW11bm9jb21wcm9taXNlZCBvciBISVYtcG9zaXRpdmUpIgogICAgd2hlbiBQYXRpZW50LmlkID0gJ0hQVjM2LjMnIHRoZW4gIkhQViBkb3NlIDMgKEltbXVub2NvbXByb21pc2VkIG9yIEhJVi1wb3NpdGl2ZSkiCiAgICB3aGVuIFBhdGllbnQuaWQgPSAnSFBWMzcuMycgdGhlbiAiSFBWIGRvc2UgMyAoSW1tdW5vY29tcHJvbWlzZWQgb3IgSElWLXBvc2l0aXZlKSIKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdIUFYzOC4zJyB0aGVuICJIUFYgZG9zZSAzIChJbW11bm9jb21wcm9taXNlZCBvciBISVYtcG9zaXRpdmUpIgogICAgd2hlbiBQYXRpZW50LmlkID0gJ0hQVjM5LjEnIHRoZW4gIlRoaXJkIEhQViBkb3NlIGZyb20gdGhlIHByaW1hcnkgc2VyaWVzIHdhcyBhZG1pbmlzdGVyZWQiCiAgICBlbHNlICdObyB0ZXN0IGNhc2Ugc2V0JwogIGVuZAo="/>
</content>
</Library>