WHO SMART Guidelines - HIV
0.4.3 - ci-build
WHO SMART Guidelines - HIV - Local Development build (v0.4.3) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
Draft as of 2025-02-02 |
<Library xmlns="http://hl7.org/fhir">
<id value="HIVIND40Logic"/>
<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;">HIV.IND.40 Logic</td>
</tr>
<tr>
<th scope="row"><b>Id: </b></th>
<td style="padding-left: 4px;">HIVIND40Logic</td>
</tr>
<tr>
<th scope="row"><b>Version: </b></th>
<td style="padding-left: 4px;">0.4.3</td>
</tr>
<tr>
<th scope="row"><b>Url: </b></th>
<td style="padding-left: 4px;"><a href="Library-HIVIND40Logic.html">HIV.IND.40 Logic</a></td>
</tr>
<tr>
<th scope="row"><b>Status: </b></th>
<td style="padding-left: 4px;">draft</td>
</tr>
<tr>
<th scope="row"><b>Experimental: </b></th>
<td style="padding-left: 4px;">true</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/6.0.2/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;">2025-02-02 03:11:41+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>% of HIV-positive pregnant women who received ART during pregnancy and/or at labour and delivery</p>
</div></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: HIV.IND.40 Logic
* Ref No: VER.4
* Short Name: ART coverage in pregnant women
*
* Definition: % of HIV-positive pregnant women who received ART during pregnancy and/or at labour and delivery
*
* Numerator: Number of HIV-positive pregnant women who delivered during the reporting period and received ART during pregnancy and/or at labour and delivery
* Numerator Calculation: COUNT of women with "HIV status"='HIV-positive' AND "Delivery date" in the reporting period AND (("On ART"=True at labour and delivery) OR ("On ART"=True during pregnancy, for this pregnancy))
* Numerator Exclusions:
*
* Denominator: a) Programme-based/service delivery denominator | Number of HIV-positive pregnant women who delivered during the reporting period and attended ANC or had a facility-based delivery | b) Population-based denominator | Number of HIV-positive pregnant women who delivered during the reporting period
* Denominator Calculation: Programme-based/service delivery denominator: | COUNT of women with "HIV status"='HIV-positive' AND "Delivery date" in the reporting period AND (had an "ANC contact date" during reporting period OR "Place of delivery" was a 'Health facility') | | Population-based denominator: | *Number of HIV-positive pregnant women who delivered during the reporting period
* Denominator Exclusions:
*
* Disaggregations:
* Numerator:
* • Timing of ART initiation (1. already on ART at first ANC visit, 2. newly on ART during pregnancy, 3. newly on ART during labour and delivery, 4. on non-recommended ART regimen)
*
* The primary indicator calculation should include ART status categories 1, 2 and 3. Removing the women in category 1 "already on ART at first ANC visit" from the numerator and denominator gives a measure of ART coverage among HIV-positive pregnant women newly diagnosed during ANC. Dividing category 2 by the sum of categories 2 and 3 gives the proportion of new ART initiations occurring during pregnancy rather than at delivery. Calculating the indicator with those in category 4 (non-recommended ARV regimen) included in the numerator gives a broader measure, that is, coverage of HIV-positive pregnant women receiving any ARV drug.
*
* Disaggregation Elements: Timing of ART initiation
*
* Numerator and Denominator Elements:
* ANC contact date
* Delivery date
* HIV status
* On ART
* Place of delivery
*
* Reference: Consolidated guidelines on person-centred HIV strategic information: strengthening routine data for impact. Geneva: World Health Organization; 2022
*
* Data Concepts:
* HIV.B.DE115: HIV status | HIV status reported after applying the national HIV testing algorithm. No single HIV test can provide an HIV-positive diagnosis.
* HIV.B.DE116: HIV-positive | Client is HIV-positive
* HIV.B.DE117: HIV-negative | Client is HIV-negative
* HIV.B.DE118: Unknown | Client has unknown HIV status
* HIV.D.DE38: On ART | Client is currently taking ART
* HIV.E.DE41: Timing of ART initiation | When the pregnant woman or mother initiated ART, for women living with HIV.
* HIV.E.DE42: Already on ART at first antenatal care visit | The pregnant woman was already on antiretroviral therapy (ART) at first antenatal care visit
* HIV.E.DE43: Newly on ART during pregnancy | The pregnant woman started ART during her pregnancy
* HIV.E.DE44: Newly on ART during labour and delivery | The woman started ART during labour and delivery
* HIV.E.DE46: Delivery date | Date on which the woman delivered
* HIV.E.DE67: Place of delivery | The type of place where the woman delivered
* HIV.E.DE68: Health facility | The woman delivered at a health facility
* HIV.E.DE69: Home | The woman delivered at home
* HIV.E.DE70: Other | The woman delivered at another location that is not at home or at a health facility
* HIV.E.DE85: ANC contact date | The date and time of the client's ANC contact (in the ANC DAK this is called 'Contact date')
* HIV.H.DE47: On ART | Client is currently taking ART
* HIV.SRV.DE18: ANC contact date | The date and time of the client's ANC contact (in the ANC DAK this is called 'Contact date')
*
* Additional Context
* - what it measures: This indicator measures whether a recommended course of ART has been provided to HIV-positive pregnant women.
* - rationale: • Providing ART for HIV-positive pregnant women is a critical strategy for preventing vertical transmission of HIV. | • In an era of "Treat All", all HIV-positive pregnant women should be given a recommended regimen of ART as soon as possible after diagnosis, including during labour and delivery.
* - method: a) For the numerator and programme-based/service delivery denominator: Programme records (for example, PMTCT registers, ARV registers, labour and delivery registers) | | b) For the population-based denominator: Modelling-based estimates (for example, Spectrum AIM) | | The recommended reporting period is 12 months.
*
* Suggested Scoring Method: proportion | http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/proportion-measure-cqfm
*/
library HIVIND40Logic
// Included Libraries
using FHIR version '4.0.1'
include HIVCommon version '0.0.1' called HIC
include FHIRHelpers version '4.0.1'
include WHOCommon called WCom
include HIVElements called HE
include HIVIndicatorElements called HIE
// Indicator Definition
parameter "Measurement Period" Interval<Date> default Interval[@2023-01-01, @2023-01-30]
context Patient
/* Populations */
/*
*Initial Population
*/
define "Initial Population":
true
/**
* Numerator
*
* Definition: Number of HIV-positive pregnant women who delivered during the reporting period and received ART during pregnancy and/or at labour and delivery
* Calculation: COUNT of women with "HIV status"='HIV-positive' AND "Delivery date" in the reporting period AND (("On ART"=True at labour and delivery) OR ("On ART"=True during pregnancy, for this pregnancy))
*/
define "Numerator":
HIE."Has HIV-positive Status" and
exists(HIE."Live Birth Delivery" BirthDelivery
where BirthDelivery.effective.toInterval() during "Measurement Period"
) and
exists (
HE."On ART D.DE38" A
where A.effective.toInterval() during First(HIE."Live Birth Delivery" BirthDelivery
where BirthDelivery.effective.toInterval() during "Measurement Period").effective.toInterval()
or
A.effective.toInterval() during First(HE."Currently pregnant B.DE29" C
where C.prevalenceInterval() during "Measurement Period").prevalenceInterval()
)
/**
* Denominator
*
* Definition: a) Programme-based/service delivery denominator | Number of HIV-positive pregnant women who delivered during the reporting period and attended ANC or had a facility-based delivery | b) Population-based denominator | Number of HIV-positive pregnant women who delivered during the reporting period
* Calculation: Programme-based/service delivery denominator: | COUNT of women with "HIV status"='HIV-positive' AND "Delivery date" in the reporting period AND (had an "ANC contact date" during reporting period OR "Place of delivery" was a 'Health facility') | | Population-based denominator: | *Number of HIV-positive pregnant women who delivered during the reporting period
*/
define "Denominator":
HIE."Has HIV-positive Status" and
exists(HIE."Live Birth Delivery" BirthDelivery
where BirthDelivery.effective.toInterval() during "Measurement Period"
)and
(First(HIE."ANC within pregnancy").period.toInterval() during "Measurement Period"
or
HIE."Has Delivery in Health Facility")
/* end Populations */
/*
* Disaggregators
*/
define "Timing of ART initiation":
HIE."Timing of ART initiation"
define "Stratification":
HIE."Timing of ART initiation".code </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/hiv/Library/HIVIND40Logic"/>
<version value="0.4.3"/>
<name value="HIVIND40Logic"/>
<title value="HIV.IND.40 Logic"/>
<status value="draft"/>
<experimental value="true"/>
<type>
<coding>
<system value="http://terminology.hl7.org/CodeSystem/library-type"/>
<code value="logic-library"/>
</coding>
</type>
<date value="2025-02-02T03:11:41+00:00"/>
<publisher value="WHO"/>
<contact>
<name value="WHO"/>
<telecom>
<system value="url"/>
<value value="http://who.int"/>
</telecom>
</contact>
<description
value="% of HIV-positive pregnant women who received ART during pregnancy and/or at labour and delivery"/>
<content>
<contentType value="text/cql"/>
<data
value="LyoqCiAqIExpYnJhcnk6IEhJVi5JTkQuNDAgTG9naWMKICogUmVmIE5vOiBWRVIuNAogKiBTaG9ydCBOYW1lOiBBUlQgY292ZXJhZ2UgaW4gcHJlZ25hbnQgd29tZW4KICoKICogRGVmaW5pdGlvbjogJSBvZiBISVYtcG9zaXRpdmUgcHJlZ25hbnQgd29tZW4gd2hvIHJlY2VpdmVkIEFSVCBkdXJpbmcgcHJlZ25hbmN5IGFuZC9vciBhdCBsYWJvdXIgYW5kIGRlbGl2ZXJ5CiAqCiAqIE51bWVyYXRvcjogTnVtYmVyIG9mIEhJVi1wb3NpdGl2ZSBwcmVnbmFudCB3b21lbiB3aG8gZGVsaXZlcmVkIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZCBhbmQgcmVjZWl2ZWQgQVJUIGR1cmluZyBwcmVnbmFuY3kgYW5kL29yIGF0IGxhYm91ciBhbmQgZGVsaXZlcnkKICogTnVtZXJhdG9yIENhbGN1bGF0aW9uOiBDT1VOVCBvZiB3b21lbiB3aXRoICJISVYgc3RhdHVzIj0nSElWLXBvc2l0aXZlJyBBTkQgIkRlbGl2ZXJ5IGRhdGUiIGluIHRoZSByZXBvcnRpbmcgcGVyaW9kIEFORCAoKCJPbiBBUlQiPVRydWUgYXQgbGFib3VyIGFuZCBkZWxpdmVyeSkgT1IgKCJPbiBBUlQiPVRydWUgZHVyaW5nIHByZWduYW5jeSwgZm9yIHRoaXMgcHJlZ25hbmN5KSkKICogTnVtZXJhdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEZW5vbWluYXRvcjogYSkgUHJvZ3JhbW1lLWJhc2VkL3NlcnZpY2UgZGVsaXZlcnkgZGVub21pbmF0b3IgfCBOdW1iZXIgb2YgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIHdobyBkZWxpdmVyZWQgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kIGFuZCBhdHRlbmRlZCBBTkMgb3IgaGFkIGEgZmFjaWxpdHktYmFzZWQgZGVsaXZlcnkgfCBiKSBQb3B1bGF0aW9uLWJhc2VkIGRlbm9taW5hdG9yIHwgTnVtYmVyIG9mIEhJVi1wb3NpdGl2ZSBwcmVnbmFudCB3b21lbiB3aG8gZGVsaXZlcmVkIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKiBEZW5vbWluYXRvciBDYWxjdWxhdGlvbjogUHJvZ3JhbW1lLWJhc2VkL3NlcnZpY2UgZGVsaXZlcnkgZGVub21pbmF0b3I6IHwgQ09VTlQgb2Ygd29tZW4gd2l0aCAiSElWIHN0YXR1cyI9J0hJVi1wb3NpdGl2ZScgQU5EICJEZWxpdmVyeSBkYXRlIiBpbiB0aGUgcmVwb3J0aW5nIHBlcmlvZCBBTkQgKGhhZCBhbiAiQU5DIGNvbnRhY3QgZGF0ZSIgZHVyaW5nIHJlcG9ydGluZyBwZXJpb2QgT1IgIlBsYWNlIG9mIGRlbGl2ZXJ5IiB3YXMgYSAnSGVhbHRoIGZhY2lsaXR5JykgfCAgfCBQb3B1bGF0aW9uLWJhc2VkIGRlbm9taW5hdG9yOiB8ICpOdW1iZXIgb2YgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIHdobyBkZWxpdmVyZWQgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kCiAqIERlbm9taW5hdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEaXNhZ2dyZWdhdGlvbnM6CiAqIE51bWVyYXRvcjogCiAqICDigKLCoFRpbWluZyBvZiBBUlQgaW5pdGlhdGlvbiAoMS4gYWxyZWFkeSBvbiBBUlQgYXQgZmlyc3QgQU5DIHZpc2l0LCAyLiBuZXdseSBvbiBBUlQgZHVyaW5nIHByZWduYW5jeSwgMy4gbmV3bHkgb24gQVJUIGR1cmluZyBsYWJvdXIgYW5kIGRlbGl2ZXJ5LCA0LiBvbiBub24tcmVjb21tZW5kZWQgQVJUIHJlZ2ltZW4pIAogKiAgIAogKiAgVGhlIHByaW1hcnkgaW5kaWNhdG9yIGNhbGN1bGF0aW9uIHNob3VsZCBpbmNsdWRlIEFSVCBzdGF0dXMgY2F0ZWdvcmllcyAxLCAyIGFuZCAzLiBSZW1vdmluZyB0aGUgd29tZW4gaW4gY2F0ZWdvcnkgMSAiYWxyZWFkeSBvbiBBUlQgYXQgZmlyc3QgQU5DIHZpc2l0IiBmcm9tIHRoZSBudW1lcmF0b3IgYW5kIGRlbm9taW5hdG9yIGdpdmVzIGEgbWVhc3VyZSBvZiBBUlQgY292ZXJhZ2UgYW1vbmcgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIG5ld2x5IGRpYWdub3NlZCBkdXJpbmcgQU5DLiBEaXZpZGluZyBjYXRlZ29yeSAyIGJ5IHRoZSBzdW0gb2YgY2F0ZWdvcmllcyAyIGFuZCAzIGdpdmVzIHRoZSBwcm9wb3J0aW9uIG9mIG5ldyBBUlQgaW5pdGlhdGlvbnMgb2NjdXJyaW5nIGR1cmluZyBwcmVnbmFuY3kgcmF0aGVyIHRoYW4gYXQgZGVsaXZlcnkuIENhbGN1bGF0aW5nIHRoZSBpbmRpY2F0b3Igd2l0aCB0aG9zZSBpbiBjYXRlZ29yeSA0IChub24tcmVjb21tZW5kZWQgQVJWIHJlZ2ltZW4pIGluY2x1ZGVkIGluIHRoZSBudW1lcmF0b3IgZ2l2ZXMgYSBicm9hZGVyIG1lYXN1cmUsIHRoYXQgaXMsIGNvdmVyYWdlIG9mIEhJVi1wb3NpdGl2ZSBwcmVnbmFudCB3b21lbiByZWNlaXZpbmcgYW55IEFSViBkcnVnLgogKgogKiBEaXNhZ2dyZWdhdGlvbiBFbGVtZW50czogVGltaW5nIG9mIEFSVCBpbml0aWF0aW9uCiAqCiAqIE51bWVyYXRvciBhbmQgRGVub21pbmF0b3IgRWxlbWVudHM6CiAqIEFOQyBjb250YWN0IGRhdGUgCiAqICBEZWxpdmVyeSBkYXRlIAogKiAgSElWIHN0YXR1cyAKICogIE9uIEFSVCAKICogIFBsYWNlIG9mIGRlbGl2ZXJ5CiAqCiAqIFJlZmVyZW5jZTogQ29uc29saWRhdGVkIGd1aWRlbGluZXMgb24gcGVyc29uLWNlbnRyZWQgSElWIHN0cmF0ZWdpYyBpbmZvcm1hdGlvbjogc3RyZW5ndGhlbmluZyByb3V0aW5lIGRhdGEgZm9yIGltcGFjdC4gR2VuZXZhOiBXb3JsZCBIZWFsdGggT3JnYW5pemF0aW9uOyAyMDIyCiAqIAogKiBEYXRhIENvbmNlcHRzOgogKiBISVYuQi5ERTExNTogSElWIHN0YXR1cyB8IEhJViBzdGF0dXMgcmVwb3J0ZWQgYWZ0ZXIgYXBwbHlpbmcgdGhlIG5hdGlvbmFsIEhJViB0ZXN0aW5nIGFsZ29yaXRobS4gTm8gc2luZ2xlIEhJViB0ZXN0IGNhbiBwcm92aWRlIGFuIEhJVi1wb3NpdGl2ZSBkaWFnbm9zaXMuCiAqIEhJVi5CLkRFMTE2OiBISVYtcG9zaXRpdmUgfCBDbGllbnQgaXMgSElWLXBvc2l0aXZlCiAqIEhJVi5CLkRFMTE3OiBISVYtbmVnYXRpdmUgfCBDbGllbnQgaXMgSElWLW5lZ2F0aXZlCiAqIEhJVi5CLkRFMTE4OiBVbmtub3duIHwgQ2xpZW50IGhhcyB1bmtub3duIEhJViBzdGF0dXMKICogSElWLkQuREUzODogT24gQVJUIHwgQ2xpZW50IGlzIGN1cnJlbnRseSB0YWtpbmcgQVJUCiAqIEhJVi5FLkRFNDE6IFRpbWluZyBvZiBBUlQgaW5pdGlhdGlvbiB8IFdoZW4gdGhlIHByZWduYW50IHdvbWFuIG9yIG1vdGhlciBpbml0aWF0ZWQgQVJULCBmb3Igd29tZW4gbGl2aW5nIHdpdGggSElWLgogKiBISVYuRS5ERTQyOiBBbHJlYWR5IG9uIEFSVCBhdCBmaXJzdCBhbnRlbmF0YWwgY2FyZSB2aXNpdCB8IFRoZSBwcmVnbmFudCB3b21hbiB3YXMgYWxyZWFkeSBvbiBhbnRpcmV0cm92aXJhbCB0aGVyYXB5IChBUlQpIGF0IGZpcnN0IGFudGVuYXRhbCBjYXJlIHZpc2l0CiAqIEhJVi5FLkRFNDM6IE5ld2x5IG9uIEFSVCBkdXJpbmcgcHJlZ25hbmN5IHwgVGhlIHByZWduYW50IHdvbWFuIHN0YXJ0ZWQgQVJUIGR1cmluZyBoZXIgcHJlZ25hbmN5CiAqIEhJVi5FLkRFNDQ6IE5ld2x5IG9uIEFSVCBkdXJpbmcgbGFib3VyIGFuZCBkZWxpdmVyeSB8IFRoZSB3b21hbiBzdGFydGVkIEFSVCBkdXJpbmcgbGFib3VyIGFuZCBkZWxpdmVyeQogKiBISVYuRS5ERTQ2OiBEZWxpdmVyeSBkYXRlIHwgRGF0ZSBvbiB3aGljaCB0aGUgd29tYW4gZGVsaXZlcmVkCiAqIEhJVi5FLkRFNjc6IFBsYWNlIG9mIGRlbGl2ZXJ5IHwgVGhlIHR5cGUgb2YgcGxhY2Ugd2hlcmUgdGhlIHdvbWFuIGRlbGl2ZXJlZAogKiBISVYuRS5ERTY4OiBIZWFsdGggZmFjaWxpdHkgfCBUaGUgd29tYW4gZGVsaXZlcmVkIGF0IGEgaGVhbHRoIGZhY2lsaXR5CiAqIEhJVi5FLkRFNjk6IEhvbWUgfCBUaGUgd29tYW4gZGVsaXZlcmVkIGF0IGhvbWUKICogSElWLkUuREU3MDogT3RoZXIgfCBUaGUgd29tYW4gZGVsaXZlcmVkIGF0IGFub3RoZXIgbG9jYXRpb24gdGhhdCBpcyBub3QgYXQgaG9tZSBvciBhdCBhIGhlYWx0aCBmYWNpbGl0eQogKiBISVYuRS5ERTg1OiBBTkMgY29udGFjdCBkYXRlIHwgVGhlIGRhdGUgYW5kIHRpbWUgb2YgdGhlIGNsaWVudCdzIEFOQyBjb250YWN0IChpbiB0aGUgQU5DIERBSyB0aGlzIGlzIGNhbGxlZCAnQ29udGFjdCBkYXRlJykKICogSElWLkguREU0NzogT24gQVJUIHwgQ2xpZW50IGlzIGN1cnJlbnRseSB0YWtpbmcgQVJUIAogKiBISVYuU1JWLkRFMTg6IEFOQyBjb250YWN0IGRhdGUgfCBUaGUgZGF0ZSBhbmQgdGltZSBvZiB0aGUgY2xpZW50J3MgQU5DIGNvbnRhY3QgKGluIHRoZSBBTkMgREFLIHRoaXMgaXMgY2FsbGVkICdDb250YWN0IGRhdGUnKQogKgogKiBBZGRpdGlvbmFsIENvbnRleHQKICogLSB3aGF0IGl0IG1lYXN1cmVzOiBUaGlzIGluZGljYXRvciBtZWFzdXJlcyB3aGV0aGVyIGEgcmVjb21tZW5kZWQgY291cnNlIG9mIEFSVCBoYXMgYmVlbiBwcm92aWRlZCB0byBISVYtcG9zaXRpdmUgcHJlZ25hbnQgd29tZW4uCiAqIC0gcmF0aW9uYWxlOiDigKIgUHJvdmlkaW5nIEFSVCBmb3IgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIGlzIGEgY3JpdGljYWwgc3RyYXRlZ3kgZm9yIHByZXZlbnRpbmcgdmVydGljYWwgdHJhbnNtaXNzaW9uIG9mIEhJVi4gfCDigKIgSW4gYW4gZXJhIG9mICJUcmVhdCBBbGwiLCBhbGwgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIHNob3VsZCBiZSBnaXZlbiBhIHJlY29tbWVuZGVkIHJlZ2ltZW4gb2YgQVJUIGFzIHNvb24gYXMgcG9zc2libGUgYWZ0ZXIgZGlhZ25vc2lzLCBpbmNsdWRpbmcgZHVyaW5nIGxhYm91ciBhbmQgZGVsaXZlcnkuCiAqIC0gbWV0aG9kOiBhKSBGb3IgdGhlIG51bWVyYXRvciBhbmQgcHJvZ3JhbW1lLWJhc2VkL3NlcnZpY2UgZGVsaXZlcnkgZGVub21pbmF0b3I6IFByb2dyYW1tZSByZWNvcmRzIChmb3IgZXhhbXBsZSwgUE1UQ1QgcmVnaXN0ZXJzLCBBUlYgcmVnaXN0ZXJzLCBsYWJvdXIgYW5kIGRlbGl2ZXJ5IHJlZ2lzdGVycykgfCAgfCBiKSBGb3IgdGhlIHBvcHVsYXRpb24tYmFzZWQgZGVub21pbmF0b3I6IE1vZGVsbGluZy1iYXNlZCBlc3RpbWF0ZXMgKGZvciBleGFtcGxlLCBTcGVjdHJ1bSBBSU0pIHwgIHwgVGhlIHJlY29tbWVuZGVkIHJlcG9ydGluZyBwZXJpb2QgaXMgMTIgbW9udGhzLgogKiAKICogU3VnZ2VzdGVkIFNjb3JpbmcgTWV0aG9kOiBwcm9wb3J0aW9uIHwgaHR0cDovL2hsNy5vcmcvZmhpci91cy9jcWZtZWFzdXJlcy9TdHJ1Y3R1cmVEZWZpbml0aW9uL3Byb3BvcnRpb24tbWVhc3VyZS1jcWZtCiAqLwoKbGlicmFyeSBISVZJTkQ0MExvZ2ljCgovLyBJbmNsdWRlZCBMaWJyYXJpZXMKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgSElWQ29tbW9uIHZlcnNpb24gJzAuMC4xJyBjYWxsZWQgSElDCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIFdIT0NvbW1vbiBjYWxsZWQgV0NvbQoKaW5jbHVkZSBISVZFbGVtZW50cyBjYWxsZWQgSEUKaW5jbHVkZSBISVZJbmRpY2F0b3JFbGVtZW50cyBjYWxsZWQgSElFCgovLyBJbmRpY2F0b3IgRGVmaW5pdGlvbgpwYXJhbWV0ZXIgIk1lYXN1cmVtZW50IFBlcmlvZCIgSW50ZXJ2YWw8RGF0ZT4gZGVmYXVsdCBJbnRlcnZhbFtAMjAyMy0wMS0wMSwgQDIwMjMtMDEtMzBdCgpjb250ZXh0IFBhdGllbnQKLyogUG9wdWxhdGlvbnMgKi8KCi8qCiAqSW5pdGlhbCBQb3B1bGF0aW9uCiAqLwoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24iOgogIHRydWUKCi8qKgogKiBOdW1lcmF0b3IKICogCiAqIERlZmluaXRpb246IE51bWJlciBvZiBISVYtcG9zaXRpdmUgcHJlZ25hbnQgd29tZW4gd2hvIGRlbGl2ZXJlZCBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2QgYW5kIHJlY2VpdmVkIEFSVCBkdXJpbmcgcHJlZ25hbmN5IGFuZC9vciBhdCBsYWJvdXIgYW5kIGRlbGl2ZXJ5CiAqIENhbGN1bGF0aW9uOiBDT1VOVCBvZiB3b21lbiB3aXRoICJISVYgc3RhdHVzIj0nSElWLXBvc2l0aXZlJyBBTkQgIkRlbGl2ZXJ5IGRhdGUiIGluIHRoZSByZXBvcnRpbmcgcGVyaW9kIEFORCAoKCJPbiBBUlQiPVRydWUgYXQgbGFib3VyIGFuZCBkZWxpdmVyeSkgT1IgKCJPbiBBUlQiPVRydWUgZHVyaW5nIHByZWduYW5jeSwgZm9yIHRoaXMgcHJlZ25hbmN5KSkKICovCgoKZGVmaW5lICJOdW1lcmF0b3IiOgogIEhJRS4iSGFzIEhJVi1wb3NpdGl2ZSBTdGF0dXMiIGFuZAogIGV4aXN0cyhISUUuIkxpdmUgQmlydGggRGVsaXZlcnkiIEJpcnRoRGVsaXZlcnkKICAgIHdoZXJlIEJpcnRoRGVsaXZlcnkuZWZmZWN0aXZlLnRvSW50ZXJ2YWwoKSBkdXJpbmcgIk1lYXN1cmVtZW50IFBlcmlvZCIKICApIGFuZCAKICBleGlzdHMgKCAKICAgIEhFLiJPbiBBUlQgRC5ERTM4IiBBIAogICAgd2hlcmUgQS5lZmZlY3RpdmUudG9JbnRlcnZhbCgpIGR1cmluZyBGaXJzdChISUUuIkxpdmUgQmlydGggRGVsaXZlcnkiIEJpcnRoRGVsaXZlcnkKICAgIHdoZXJlIEJpcnRoRGVsaXZlcnkuZWZmZWN0aXZlLnRvSW50ZXJ2YWwoKSBkdXJpbmcgIk1lYXN1cmVtZW50IFBlcmlvZCIpLmVmZmVjdGl2ZS50b0ludGVydmFsKCkKICAgIG9yIAogICAgQS5lZmZlY3RpdmUudG9JbnRlcnZhbCgpIGR1cmluZyBGaXJzdChIRS4iQ3VycmVudGx5IHByZWduYW50IEIuREUyOSIgQyAKICAgIHdoZXJlIEMucHJldmFsZW5jZUludGVydmFsKCkgZHVyaW5nICJNZWFzdXJlbWVudCBQZXJpb2QiKS5wcmV2YWxlbmNlSW50ZXJ2YWwoKQogIAogICkKCgoKLyoqCiAqIERlbm9taW5hdG9yCiAqCiAqIERlZmluaXRpb246IGEpIFByb2dyYW1tZS1iYXNlZC9zZXJ2aWNlIGRlbGl2ZXJ5IGRlbm9taW5hdG9yIHwgTnVtYmVyIG9mIEhJVi1wb3NpdGl2ZSBwcmVnbmFudCB3b21lbiB3aG8gZGVsaXZlcmVkIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZCBhbmQgYXR0ZW5kZWQgQU5DIG9yIGhhZCBhIGZhY2lsaXR5LWJhc2VkIGRlbGl2ZXJ5IHwgYikgUG9wdWxhdGlvbi1iYXNlZCBkZW5vbWluYXRvciB8IE51bWJlciBvZiBISVYtcG9zaXRpdmUgcHJlZ25hbnQgd29tZW4gd2hvIGRlbGl2ZXJlZCBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2QKICogQ2FsY3VsYXRpb246IFByb2dyYW1tZS1iYXNlZC9zZXJ2aWNlIGRlbGl2ZXJ5IGRlbm9taW5hdG9yOiB8IENPVU5UIG9mIHdvbWVuIHdpdGggIkhJViBzdGF0dXMiPSdISVYtcG9zaXRpdmUnIEFORCAiRGVsaXZlcnkgZGF0ZSIgaW4gdGhlIHJlcG9ydGluZyBwZXJpb2QgQU5EIChoYWQgYW4gIkFOQyBjb250YWN0IGRhdGUiIGR1cmluZyByZXBvcnRpbmcgcGVyaW9kIE9SICJQbGFjZSBvZiBkZWxpdmVyeSIgd2FzIGEgJ0hlYWx0aCBmYWNpbGl0eScpIHwgIHwgUG9wdWxhdGlvbi1iYXNlZCBkZW5vbWluYXRvcjogfCAqTnVtYmVyIG9mIEhJVi1wb3NpdGl2ZSBwcmVnbmFudCB3b21lbiB3aG8gZGVsaXZlcmVkIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKi8KCmRlZmluZSAiRGVub21pbmF0b3IiOgogIEhJRS4iSGFzIEhJVi1wb3NpdGl2ZSBTdGF0dXMiIGFuZAogIGV4aXN0cyhISUUuIkxpdmUgQmlydGggRGVsaXZlcnkiIEJpcnRoRGVsaXZlcnkKICAgIHdoZXJlIEJpcnRoRGVsaXZlcnkuZWZmZWN0aXZlLnRvSW50ZXJ2YWwoKSBkdXJpbmcgIk1lYXN1cmVtZW50IFBlcmlvZCIKICApYW5kIAogIChGaXJzdChISUUuIkFOQyB3aXRoaW4gcHJlZ25hbmN5IikucGVyaW9kLnRvSW50ZXJ2YWwoKSBkdXJpbmcgIk1lYXN1cmVtZW50IFBlcmlvZCIKICBvcgogICAgSElFLiJIYXMgRGVsaXZlcnkgaW4gSGVhbHRoIEZhY2lsaXR5IikKICAgIAoKLyogZW5kIFBvcHVsYXRpb25zICovCgovKgogKiBEaXNhZ2dyZWdhdG9ycwogKi8KCgpkZWZpbmUgIlRpbWluZyBvZiBBUlQgaW5pdGlhdGlvbiI6CiAgSElFLiJUaW1pbmcgb2YgQVJUIGluaXRpYXRpb24iCgpkZWZpbmUgIlN0cmF0aWZpY2F0aW9uIjoKICBISUUuIlRpbWluZyBvZiBBUlQgaW5pdGlhdGlvbiIuY29kZSA="/>
</content>
</Library>