Draft dQM CMS Content Implementation Guide
2025.1.0 - CI Build
Draft dQM CMS Content Implementation Guide, published by cqframework. This guide is not an authorized publication; it is the continuous build for version 2025.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/cqframework/dqm-content-cms-2025/ and changes regularly. See the Directory of published versions
| Draft as of 2026-09-19 |
{
"resourceType" : "Library",
"id" : "CMS136FHIRChildADHDMedFollowUp",
"text" : {
"status" : "extensions",
"div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\">\n <table class=\"narrative-table\">\n <tbody>\n<tr>\n\n\n<th colspan=\"2\" scope=\"row\" class=\"row-header\"><a name=\"metadata\"> </a>Metadata</th>\n\n\n</tr>\n\n\n\n\n\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Version</th>\n\n\n\n<td class=\"content-container\">1.1.000</td>\n\n\n</tr>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Status</th>\n\n\n\n<td class=\"content-container\">Draft</td>\n\n\n</tr>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Type</th>\n\n\n\n<td class=\"content-container\">\n <a href=\"http://terminology.hl7.org/7.1.0/CodeSystem-library-type.html\">http://terminology.hl7.org/CodeSystem/library-type</a>#logic-library\n\n\n</td>\n\n\n</tr>\n\n\n\n\n\n\n\n\n\n\n\n\n\n<tr>\n\n\n<th colspan=\"2\" scope=\"row\" class=\"row-header\"><a name=\"parameters\"> </a>Parameters</th>\n\n\n</tr>\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Parameter</th>\n\n\n\n<td class=\"content-container\">None</td>\n\n\n</tr>\n\n\n\n\n\n\n\n\n <tr>\n\n\n<th colspan=\"2\" scope=\"row\" class=\"row-header\">Library Content</th>\n\n\n</tr>\n \n \n <tr>\n <th scope=\"row\" class=\"row-header\">CQL Content</th>\n <td>\n <a name=\"cql-content\"> </a>\n <pre style=\"border: none;\" class=\"content-container highlight language-cql\"><code class=\"language-cql\">/*\nNOTE: For use by March 2026 US Realm Connectathon participants for internal use only. Not for use or distribution in commercial products.\n*/\nlibrary CMS136FHIRChildADHDMedFollowUp version '1.1.000'\n\nusing USQualityCore version '0.1.0-cibuild'\nusing USCore version '6.1.0-derived'\nusing FHIR version '4.0.1'\n\ninclude hl7.fhir.uv.cql.FHIRHelpers version '4.0.1' called FHIRHelpers\ninclude hl7.fhir.uv.cql.FHIRCommon version '2.0.0' called FHIRCommon\ninclude hl7.fhir.us.cql.CumulativeMedicationDuration version '2.0.0-ballot' called CMD\ninclude hl7.fhir.us.cql.USCoreCommon version '2.0.0-ballot' called USCoreCommon\ninclude hl7.fhir.us.cql.USCoreElements version '2.0.0-ballot' called USCoreElements\n\ninclude Hospice version '7.1.000' called Hospice\ninclude CQMCommon version '5.1.000' called CQMCommon\ninclude USQualityCoreCommon version '0.1.0-cibuild' called USQualityCoreCommon\ninclude SupplementalDataElements version '6.1.000' called SDE\ninclude Status version '2.1.000' called Status\n\ncodesystem "RXNORM": 'http://www.nlm.nih.gov/research/umls/rxnorm'\n\nvalueset "Ambulatory": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.122.12.1003'\nvalueset "Atomoxetine": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1170'\nvalueset "Behavioral Health Follow up Visit": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1054'\nvalueset "Clonidine": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1171'\nvalueset "Dexmethylphenidate": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1172'\nvalueset "Dextroamphetamine": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1173'\nvalueset "Encounter Inpatient": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307'\nvalueset "Guanfacine Medications": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.11.1252'\nvalueset "Home Healthcare Services": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016'\nvalueset "Lisdexamfetamine": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1174'\nvalueset "Mental Behavioral and Neurodevelopmental Disorders": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.105.12.1203'\nvalueset "Methylphenidate": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1176'\nvalueset "Narcolepsy": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.114.12.1011'\nvalueset "Office Visit": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001'\nvalueset "Outpatient Consultation": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1008'\nvalueset "Preventive Care Services Group Counseling": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1027'\nvalueset "Preventive Care Services Individual Counseling": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1026'\nvalueset "Preventive Care Services, Initial Office Visit, 0 to 17": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1022'\nvalueset "Preventive Care, Established Office Visit, 0 to 17": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1024'\nvalueset "Psych Visit Diagnostic Evaluation": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1492'\nvalueset "Psych Visit Psychotherapy": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1496'\nvalueset "Psychotherapy and Pharmacologic Management": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1055'\nvalueset "Telephone Visits": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080'\nvalueset "Viloxazine": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1260'\nvalueset "Virtual Encounter": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089'\n\ncode "methamphetamine hydrochloride 5 MG Oral Tablet": '977860' from "RXNORM" display 'methamphetamine hydrochloride 5 MG Oral Tablet'\n\nparameter "Measurement Period" Interval<DateTime>\n default Interval[@2026-01-01T00:00:00.000Z, @2027-01-01T00:00:00.000Z)\n\ncontext Patient\n\ndefine "Initial Population 1":\n AgeInYearsAt(date from start of "Intake Period") >= 6\n and AgeInYearsAt(date from \n end of "Intake Period"\n ) <= 12\n and exists "Qualifying Encounter"\n and "First ADHD Medication Prescribed During Intake Period" is not null\n and not exists "Inpatient Stay with Qualifying Diagnosis During Initiation Phase"\n\ndefine "Intake Period":\n Interval["March 1 of Year Prior to Measurement Period", "Last Calendar Day of February of Measurement Period"]\n\ndefine "Last Calendar Day of February of Measurement Period":\n ( DateTime(year from start of "Measurement Period", 3, 1, 23, 59, 59, 0, 0) ) - 1 day\n\ndefine "March 1 of Year Prior to Measurement Period":\n DateTime((year from start of "Measurement Period" - 1), 3, 1, 0, 0, 0, 0, 0)\n\ndefine "Qualifying Encounter":\n ( ( [Encounter: "Office Visit"]\n union [Encounter: "Home Healthcare Services"]\n union [Encounter: "Preventive Care, Established Office Visit, 0 to 17"]\n union [Encounter: "Preventive Care Services, Initial Office Visit, 0 to 17"]\n ).isEncounterPerformed ( ) ) ValidEncounters\n where CQMCommon."ToDateInterval" ( ValidEncounters.period ) during day of Interval["IPSD" - 6 months, "IPSD"]\n\n /*Index Prescription Start Date (IPSD)*/\n\n\ndefine "IPSD":\n "First ADHD Medication Prescribed During Intake Period"\n\ndefine "First ADHD Medication Prescribed During Intake Period":\n First("ADHD Medication Prescribed During Intake Period and Not Previously on ADHD Medication".startDate)\n\ndefine "ADHD Medication Prescribed During Intake Period and Not Previously on ADHD Medication":\n ( ( ( ( [MedicationRequest: "Atomoxetine"]\n union [MedicationRequest: "Clonidine"]\n union [MedicationRequest: "Dexmethylphenidate"]\n union [MedicationRequest: "Dextroamphetamine"]\n union [MedicationRequest: "Lisdexamfetamine"]\n union [MedicationRequest: "methamphetamine hydrochloride 5 MG Oral Tablet"]\n union [MedicationRequest: "Methylphenidate"]\n union [MedicationRequest: "Guanfacine Medications"]\n union [MedicationRequest: "Viloxazine"]\n ).isMedicationOrder ( ) ) ADHDMedications\n where ADHDMedications.medicationRequestPeriod ( ) starts during "Intake Period" ) ADHDMedicationOrder\n without ( ( [MedicationRequest: "Atomoxetine"]\n union [MedicationRequest: "Clonidine"]\n union [MedicationRequest: "Dexmethylphenidate"]\n union [MedicationRequest: "Dextroamphetamine"]\n union [MedicationRequest: "Lisdexamfetamine"]\n union [MedicationRequest: "methamphetamine hydrochloride 5 MG Oral Tablet"]\n union [MedicationRequest: "Methylphenidate"]\n union [MedicationRequest: "Guanfacine Medications"]\n union [MedicationRequest: "Viloxazine"]\n ).isMedicationActive ( ) ) ActiveADHDMedication\n such that ActiveADHDMedication.medicationRequestPeriod ( ) overlaps Interval[date from start of ADHDMedicationOrder.medicationRequestPeriod ( ) - 120 days, date from start of ADHDMedicationOrder.medicationRequestPeriod ( ) ) ) QualifyingMed\n return all {\n startDate: start of QualifyingMed.medicationRequestPeriod ( )\n }\n sort by startDate asc\n\ndefine "Inpatient Stay with Qualifying Diagnosis During Initiation Phase":\n "Inpatient Stay with Qualifying Diagnosis" InpatientStay\n where CQMCommon."ToDateInterval" ( InpatientStay.period ) starts 30 days or less after day of "IPSD"\n\ndefine "Inpatient Stay with Qualifying Diagnosis":\n ( ( [Encounter: "Encounter Inpatient"] ).isEncounterPerformed ( ) ) InpatientStay\n where InpatientStay.hasPrincipalDiagnosisOf ( "Mental Behavioral and Neurodevelopmental Disorders" )\n\ndefine "Denominator 1":\n "Initial Population 1"\n\ndefine "Denominator Exclusions":\n Hospice."Has Hospice Services"\n or exists "Narcolepsy Exclusion"\n\ndefine "Narcolepsy Exclusion":\n // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)\n // Original:\n // [ConditionProblemsHealthConcerns: "Narcolepsy"]\n // union [ConditionEncounterDiagnosis: "Narcolepsy"]\n ( ( [FHIR.Condition: "Narcolepsy"] ).verified ( ) ) NarcolepsyDx\n where NarcolepsyDx.prevalenceInterval ( ) starts on or before end of "Measurement Period"\n\ndefine "Numerator 1":\n exists "Encounter During Initiation Phase"\n\ndefine "Encounter During Initiation Phase":\n ( "Qualifying Numerator Encounter".isEncounterPerformed ( ) ) ValidNumeratorEncounter\n where CQMCommon."ToDateInterval" ( ValidNumeratorEncounter.period ) starts 30 days or less after day of "IPSD"\n\ndefine "Qualifying Numerator Encounter":\n [Encounter: "Office Visit"]\n union [Encounter: "Preventive Care Services Group Counseling"]\n union [Encounter: "Behavioral Health Follow up Visit"]\n union [Encounter: "Preventive Care Services Individual Counseling"]\n union ( [Encounter: "Psychotherapy and Pharmacologic Management"] PsychPharmManagement\n where exists ( PsychPharmManagement.location Location\n where CQMCommon."GetLocation" ( Location.location ).type in "Ambulatory"\n )\n )\n union [Encounter: "Outpatient Consultation"]\n union [Encounter: "Home Healthcare Services"]\n union [Encounter: "Preventive Care Services, Initial Office Visit, 0 to 17"]\n union [Encounter: "Preventive Care, Established Office Visit, 0 to 17"]\n union [Encounter: "Psych Visit Diagnostic Evaluation"]\n union [Encounter: "Psych Visit Psychotherapy"]\n union [Encounter: "Telephone Visits"]\n\ndefine "Initial Population 2":\n AgeInYearsAt(date from start of "Intake Period") >= 6\n and AgeInYearsAt(date from \n end of "Intake Period"\n ) <= 12\n and exists "Qualifying Encounter"\n and "First ADHD Medication Prescribed During Intake Period" is not null\n and "Has ADHD Cumulative Medication Duration Greater Than or Equal to 210 Days"\n and not exists "Inpatient Stay with Qualifying Diagnosis During Continuation and Maintenance Phase"\n\ndefine "Has ADHD Cumulative Medication Duration Greater Than or Equal to 210 Days":\n "ADHD Cumulative Medication Duration" >= 210\n\ndefine "ADHD Cumulative Medication Duration":\n ( "ADHD Medications Taken on IPSD or During Continuation and Maintenance Phase" ).cumulativeDuration ( )\n\ndefine "Inpatient Stay with Qualifying Diagnosis During Continuation and Maintenance Phase":\n "Inpatient Stay with Qualifying Diagnosis" InpatientStay\n where CQMCommon."ToDateInterval" ( InpatientStay.period ) starts 300 days or less after day of "IPSD"\n\ndefine "ADHD Medications Taken on IPSD or During Continuation and Maintenance Phase":\n ( ( ( ( ( ( [MedicationRequest: "Atomoxetine"] ).isMedicationOrder ( ) ) AtomoxetineMed\n return all {\n period: AtomoxetineMed.medicationRequestPeriod ( ),\n periodStart: start of AtomoxetineMed.medicationRequestPeriod ( )\n }\n sort by periodStart\n ).period\n ).rolloutIntervals ( )\n )\n union ( ( ( ( ( [MedicationRequest: "Clonidine"] ).isMedicationOrder ( ) ) ClonidineMed\n return all {\n period: ClonidineMed.medicationRequestPeriod ( ),\n periodStart: start of ClonidineMed.medicationRequestPeriod ( )\n }\n sort by periodStart\n ).period\n ).rolloutIntervals ( )\n )\n union ( ( ( ( ( [MedicationRequest: "Dexmethylphenidate"] ).isMedicationOrder ( ) ) DexmethylphenidateMed\n return all {\n period: DexmethylphenidateMed.medicationRequestPeriod ( ),\n periodStart: start of DexmethylphenidateMed.medicationRequestPeriod ( )\n }\n sort by periodStart\n ).period\n ).rolloutIntervals ( )\n )\n union ( ( ( ( ( [MedicationRequest: "Dextroamphetamine"] ).isMedicationOrder ( ) ) DextroamphetamineMed\n return all {\n period: DextroamphetamineMed.medicationRequestPeriod ( ),\n periodStart: start of DextroamphetamineMed.medicationRequestPeriod ( )\n }\n sort by periodStart\n ).period\n ).rolloutIntervals ( )\n )\n union ( ( ( ( ( [MedicationRequest: "Lisdexamfetamine"] ).isMedicationOrder ( ) ) LisdexamfetamineMed\n return all {\n period: LisdexamfetamineMed.medicationRequestPeriod ( ),\n periodStart: start of LisdexamfetamineMed.medicationRequestPeriod ( )\n }\n sort by periodStart\n ).period\n ).rolloutIntervals ( )\n )\n union ( ( ( ( ( [MedicationRequest: "Methylphenidate"] ).isMedicationOrder ( ) ) MethylphenidateMed\n return all {\n period: MethylphenidateMed.medicationRequestPeriod ( ),\n periodStart: start of MethylphenidateMed.medicationRequestPeriod ( )\n }\n sort by periodStart\n ).period\n ).rolloutIntervals ( )\n )\n union ( ( ( ( ( [MedicationRequest: "Guanfacine Medications"] ).isMedicationOrder ( ) ) GuanfacineMed\n return all {\n period: GuanfacineMed.medicationRequestPeriod ( ),\n periodStart: start of GuanfacineMed.medicationRequestPeriod ( )\n }\n sort by periodStart\n ).period\n ).rolloutIntervals ( )\n )\n union ( ( ( ( ( [MedicationRequest: "methamphetamine hydrochloride 5 MG Oral Tablet"] ).isMedicationOrder ( ) ) MethamphetamineMed\n return all {\n period: MethamphetamineMed.medicationRequestPeriod ( ),\n periodStart: start of MethamphetamineMed.medicationRequestPeriod ( )\n }\n sort by periodStart\n ).period\n ).rolloutIntervals ( )\n )\n union ( ( ( ( ( [MedicationRequest: "Viloxazine"] ).isMedicationOrder ( ) ) ViloxazineMed\n return all {\n period: ViloxazineMed.medicationRequestPeriod ( ),\n periodStart: start of ViloxazineMed.medicationRequestPeriod ( )\n }\n sort by periodStart\n ).period\n ).rolloutIntervals ( )\n ) ) ADHDMedication\n let IPSDAndContinuationMaintenancePhase: Interval["IPSD", "IPSD" + 300 days]\n return all ADHDMedication\n intersect IPSDAndContinuationMaintenancePhase\n\ndefine "Denominator 2":\n "Initial Population 2"\n\ndefine "Numerator 2":\n exists "Encounter During Initiation Phase"\n and ( "Two or More Encounters 31 to 300 Days into Continuation and Maintenance Phase"\n or ( exists "Encounter 31 to 300 Days into Continuation and Maintenance Phase" Encounter1\n with "Virtual Encounter 31 to 300 Days into Continuation and Maintenance Phase" Encounter2\n such that Encounter1 is not null\n and Encounter2 is not null\n and Encounter1 !~ Encounter2\n )\n )\n\ndefine "Two or More Encounters 31 to 300 Days into Continuation and Maintenance Phase":\n Count("Encounter 31 to 300 Days into Continuation and Maintenance Phase") >= 2\n\ndefine "Encounter 31 to 300 Days into Continuation and Maintenance Phase":\n ( "Qualifying Numerator Encounter".isEncounterPerformed ( ) ) ValidNumeratorEncounter\n where CQMCommon."ToDateInterval" ( ValidNumeratorEncounter.period ) starts during day of Interval["IPSD" + 31 days, "IPSD" + 300 days]\n return date from start of ValidNumeratorEncounter.period\n\ndefine "Virtual Encounter 31 to 300 Days into Continuation and Maintenance Phase":\n ( ( [Encounter: "Virtual Encounter"] ).isEncounterPerformed ( ) ) VirtualEnc\n where CQMCommon."ToDateInterval" ( VirtualEnc.period ) starts during day of Interval["IPSD" + 31 days, "IPSD" + 300 days]\n return date from start of VirtualEnc.period\n\ndefine "SDE Ethnicity":\n SDE."SDE Ethnicity"\n\ndefine "SDE Payer":\n SDE."SDE Payer"\n\ndefine "SDE Race":\n SDE."SDE Race"\n\ndefine "SDE Sex":\n SDE."SDE Sex"</code></pre>\n </td>\n </tr>\n \n \n\n\n\n<tr>\n <th colspan=\"2\" scope=\"row\" class=\"row-header\">Generated using version 0.5.6 of the sample-content-ig Liquid templates</th>\n</tr>\n\n </tbody>\n </table>\n</div>"
},
"extension" : [
{
"url" : "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-softwaresystem",
"valueReference" : {
"reference" : "Device/cqf-tooling"
}
}
],
"url" : "https://madie.cms.gov/Library/CMS136FHIRChildADHDMedFollowUp",
"version" : "1.1.000",
"name" : "CMS136FHIRChildADHDMedFollowUp",
"status" : "draft",
"type" : {
"coding" : [
{
"system" : "http://terminology.hl7.org/CodeSystem/library-type",
"code" : "logic-library"
}
]
},
"date" : "2026-09-19T16:31:14+00:00",
"content" : [
{
"contentType" : "text/cql",
"data" : "LyoKTk9URTogRm9yIHVzZSBieSBNYXJjaCAyMDI2IFVTIFJlYWxtIENvbm5lY3RhdGhvbiBwYXJ0aWNpcGFudHMgZm9yIGludGVybmFsIHVzZSBvbmx5LiBOb3QgZm9yIHVzZSBvciBkaXN0cmlidXRpb24gaW4gY29tbWVyY2lhbCBwcm9kdWN0cy4KKi8KbGlicmFyeSBDTVMxMzZGSElSQ2hpbGRBREhETWVkRm9sbG93VXAgdmVyc2lvbiAnMS4xLjAwMCcKCnVzaW5nIFVTUXVhbGl0eUNvcmUgdmVyc2lvbiAnMC4xLjAtY2lidWlsZCcKdXNpbmcgVVNDb3JlIHZlcnNpb24gJzYuMS4wLWRlcml2ZWQnCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIGhsNy5maGlyLnV2LmNxbC5GSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMScgY2FsbGVkIEZISVJIZWxwZXJzCmluY2x1ZGUgaGw3LmZoaXIudXYuY3FsLkZISVJDb21tb24gdmVyc2lvbiAnMi4wLjAnIGNhbGxlZCBGSElSQ29tbW9uCmluY2x1ZGUgaGw3LmZoaXIudXMuY3FsLkN1bXVsYXRpdmVNZWRpY2F0aW9uRHVyYXRpb24gdmVyc2lvbiAnMi4wLjAtYmFsbG90JyBjYWxsZWQgQ01ECmluY2x1ZGUgaGw3LmZoaXIudXMuY3FsLlVTQ29yZUNvbW1vbiB2ZXJzaW9uICcyLjAuMC1iYWxsb3QnIGNhbGxlZCBVU0NvcmVDb21tb24KaW5jbHVkZSBobDcuZmhpci51cy5jcWwuVVNDb3JlRWxlbWVudHMgdmVyc2lvbiAnMi4wLjAtYmFsbG90JyBjYWxsZWQgVVNDb3JlRWxlbWVudHMKCmluY2x1ZGUgSG9zcGljZSB2ZXJzaW9uICc3LjEuMDAwJyBjYWxsZWQgSG9zcGljZQppbmNsdWRlIENRTUNvbW1vbiB2ZXJzaW9uICc1LjEuMDAwJyBjYWxsZWQgQ1FNQ29tbW9uCmluY2x1ZGUgVVNRdWFsaXR5Q29yZUNvbW1vbiB2ZXJzaW9uICcwLjEuMC1jaWJ1aWxkJyBjYWxsZWQgVVNRdWFsaXR5Q29yZUNvbW1vbgppbmNsdWRlIFN1cHBsZW1lbnRhbERhdGFFbGVtZW50cyB2ZXJzaW9uICc2LjEuMDAwJyBjYWxsZWQgU0RFCmluY2x1ZGUgU3RhdHVzIHZlcnNpb24gJzIuMS4wMDAnIGNhbGxlZCBTdGF0dXMKCmNvZGVzeXN0ZW0gIlJYTk9STSI6ICdodHRwOi8vd3d3Lm5sbS5uaWguZ292L3Jlc2VhcmNoL3VtbHMvcnhub3JtJwoKdmFsdWVzZXQgIkFtYnVsYXRvcnkiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTIyLjEyLjEwMDMnCnZhbHVlc2V0ICJBdG9tb3hldGluZSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMTcwJwp2YWx1ZXNldCAiQmVoYXZpb3JhbCBIZWFsdGggRm9sbG93IHVwIFZpc2l0IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDU0Jwp2YWx1ZXNldCAiQ2xvbmlkaW5lIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjExNzEnCnZhbHVlc2V0ICJEZXhtZXRoeWxwaGVuaWRhdGUiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTE3MicKdmFsdWVzZXQgIkRleHRyb2FtcGhldGFtaW5lIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjExNzMnCnZhbHVlc2V0ICJFbmNvdW50ZXIgSW5wYXRpZW50IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjY2Ni41LjMwNycKdmFsdWVzZXQgIkd1YW5mYWNpbmUgTWVkaWNhdGlvbnMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTk2LjExLjEyNTInCnZhbHVlc2V0ICJIb21lIEhlYWx0aGNhcmUgU2VydmljZXMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwMTYnCnZhbHVlc2V0ICJMaXNkZXhhbWZldGFtaW5lIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjExNzQnCnZhbHVlc2V0ICJNZW50YWwgQmVoYXZpb3JhbCBhbmQgTmV1cm9kZXZlbG9wbWVudGFsIERpc29yZGVycyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDUuMTIuMTIwMycKdmFsdWVzZXQgIk1ldGh5bHBoZW5pZGF0ZSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMTc2Jwp2YWx1ZXNldCAiTmFyY29sZXBzeSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMTQuMTIuMTAxMScKdmFsdWVzZXQgIk9mZmljZSBWaXNpdCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTAwMScKdmFsdWVzZXQgIk91dHBhdGllbnQgQ29uc3VsdGF0aW9uIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDA4Jwp2YWx1ZXNldCAiUHJldmVudGl2ZSBDYXJlIFNlcnZpY2VzIEdyb3VwIENvdW5zZWxpbmciOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwMjcnCnZhbHVlc2V0ICJQcmV2ZW50aXZlIENhcmUgU2VydmljZXMgSW5kaXZpZHVhbCBDb3Vuc2VsaW5nIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDI2Jwp2YWx1ZXNldCAiUHJldmVudGl2ZSBDYXJlIFNlcnZpY2VzLCBJbml0aWFsIE9mZmljZSBWaXNpdCwgMCB0byAxNyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTAyMicKdmFsdWVzZXQgIlByZXZlbnRpdmUgQ2FyZSwgRXN0YWJsaXNoZWQgT2ZmaWNlIFZpc2l0LCAwIHRvIDE3IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDI0Jwp2YWx1ZXNldCAiUHN5Y2ggVmlzaXQgRGlhZ25vc3RpYyBFdmFsdWF0aW9uIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjE0OTInCnZhbHVlc2V0ICJQc3ljaCBWaXNpdCBQc3ljaG90aGVyYXB5IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjE0OTYnCnZhbHVlc2V0ICJQc3ljaG90aGVyYXB5IGFuZCBQaGFybWFjb2xvZ2ljIE1hbmFnZW1lbnQiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwNTUnCnZhbHVlc2V0ICJUZWxlcGhvbmUgVmlzaXRzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDgwJwp2YWx1ZXNldCAiVmlsb3hhemluZSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMjYwJwp2YWx1ZXNldCAiVmlydHVhbCBFbmNvdW50ZXIiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwODknCgpjb2RlICJtZXRoYW1waGV0YW1pbmUgaHlkcm9jaGxvcmlkZSA1IE1HIE9yYWwgVGFibGV0IjogJzk3Nzg2MCcgZnJvbSAiUlhOT1JNIiBkaXNwbGF5ICdtZXRoYW1waGV0YW1pbmUgaHlkcm9jaGxvcmlkZSA1IE1HIE9yYWwgVGFibGV0JwoKcGFyYW1ldGVyICJNZWFzdXJlbWVudCBQZXJpb2QiIEludGVydmFsPERhdGVUaW1lPgogIGRlZmF1bHQgSW50ZXJ2YWxbQDIwMjYtMDEtMDFUMDA6MDA6MDAuMDAwWiwgQDIwMjctMDEtMDFUMDA6MDA6MDAuMDAwWikKCmNvbnRleHQgUGF0aWVudAoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24gMSI6CiAgQWdlSW5ZZWFyc0F0KGRhdGUgZnJvbSBzdGFydCBvZiAiSW50YWtlIFBlcmlvZCIpID49IDYKICAgIGFuZCBBZ2VJblllYXJzQXQoZGF0ZSBmcm9tIAogICAgICBlbmQgb2YgIkludGFrZSBQZXJpb2QiCiAgICApIDw9IDEyCiAgICBhbmQgZXhpc3RzICJRdWFsaWZ5aW5nIEVuY291bnRlciIKICAgIGFuZCAiRmlyc3QgQURIRCBNZWRpY2F0aW9uIFByZXNjcmliZWQgRHVyaW5nIEludGFrZSBQZXJpb2QiIGlzIG5vdCBudWxsCiAgICBhbmQgbm90IGV4aXN0cyAiSW5wYXRpZW50IFN0YXkgd2l0aCBRdWFsaWZ5aW5nIERpYWdub3NpcyBEdXJpbmcgSW5pdGlhdGlvbiBQaGFzZSIKCmRlZmluZSAiSW50YWtlIFBlcmlvZCI6CiAgSW50ZXJ2YWxbIk1hcmNoIDEgb2YgWWVhciBQcmlvciB0byBNZWFzdXJlbWVudCBQZXJpb2QiLCAiTGFzdCBDYWxlbmRhciBEYXkgb2YgRmVicnVhcnkgb2YgTWVhc3VyZW1lbnQgUGVyaW9kIl0KCmRlZmluZSAiTGFzdCBDYWxlbmRhciBEYXkgb2YgRmVicnVhcnkgb2YgTWVhc3VyZW1lbnQgUGVyaW9kIjoKICAoIERhdGVUaW1lKHllYXIgZnJvbSBzdGFydCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIiwgMywgMSwgMjMsIDU5LCA1OSwgMCwgMCkgKSAtIDEgZGF5CgpkZWZpbmUgIk1hcmNoIDEgb2YgWWVhciBQcmlvciB0byBNZWFzdXJlbWVudCBQZXJpb2QiOgogIERhdGVUaW1lKCh5ZWFyIGZyb20gc3RhcnQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIgLSAxKSwgMywgMSwgMCwgMCwgMCwgMCwgMCkKCmRlZmluZSAiUXVhbGlmeWluZyBFbmNvdW50ZXIiOgogICggKCBbRW5jb3VudGVyOiAiT2ZmaWNlIFZpc2l0Il0KICAgICAgdW5pb24gW0VuY291bnRlcjogIkhvbWUgSGVhbHRoY2FyZSBTZXJ2aWNlcyJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJQcmV2ZW50aXZlIENhcmUsIEVzdGFibGlzaGVkIE9mZmljZSBWaXNpdCwgMCB0byAxNyJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJQcmV2ZW50aXZlIENhcmUgU2VydmljZXMsIEluaXRpYWwgT2ZmaWNlIFZpc2l0LCAwIHRvIDE3Il0KICApLmlzRW5jb3VudGVyUGVyZm9ybWVkICggKSApIFZhbGlkRW5jb3VudGVycwogICAgd2hlcmUgQ1FNQ29tbW9uLiJUb0RhdGVJbnRlcnZhbCIgKCBWYWxpZEVuY291bnRlcnMucGVyaW9kICkgZHVyaW5nIGRheSBvZiBJbnRlcnZhbFsiSVBTRCIgLSA2IG1vbnRocywgIklQU0QiXQoKICAgIC8qSW5kZXggUHJlc2NyaXB0aW9uIFN0YXJ0IERhdGUgKElQU0QpKi8KCgpkZWZpbmUgIklQU0QiOgogICJGaXJzdCBBREhEIE1lZGljYXRpb24gUHJlc2NyaWJlZCBEdXJpbmcgSW50YWtlIFBlcmlvZCIKCmRlZmluZSAiRmlyc3QgQURIRCBNZWRpY2F0aW9uIFByZXNjcmliZWQgRHVyaW5nIEludGFrZSBQZXJpb2QiOgogIEZpcnN0KCJBREhEIE1lZGljYXRpb24gUHJlc2NyaWJlZCBEdXJpbmcgSW50YWtlIFBlcmlvZCBhbmQgTm90IFByZXZpb3VzbHkgb24gQURIRCBNZWRpY2F0aW9uIi5zdGFydERhdGUpCgpkZWZpbmUgIkFESEQgTWVkaWNhdGlvbiBQcmVzY3JpYmVkIER1cmluZyBJbnRha2UgUGVyaW9kIGFuZCBOb3QgUHJldmlvdXNseSBvbiBBREhEIE1lZGljYXRpb24iOgogICggKCAoICggW01lZGljYXRpb25SZXF1ZXN0OiAiQXRvbW94ZXRpbmUiXQogICAgICB1bmlvbiBbTWVkaWNhdGlvblJlcXVlc3Q6ICJDbG9uaWRpbmUiXQogICAgICB1bmlvbiBbTWVkaWNhdGlvblJlcXVlc3Q6ICJEZXhtZXRoeWxwaGVuaWRhdGUiXQogICAgICB1bmlvbiBbTWVkaWNhdGlvblJlcXVlc3Q6ICJEZXh0cm9hbXBoZXRhbWluZSJdCiAgICAgIHVuaW9uIFtNZWRpY2F0aW9uUmVxdWVzdDogIkxpc2RleGFtZmV0YW1pbmUiXQogICAgICB1bmlvbiBbTWVkaWNhdGlvblJlcXVlc3Q6ICJtZXRoYW1waGV0YW1pbmUgaHlkcm9jaGxvcmlkZSA1IE1HIE9yYWwgVGFibGV0Il0KICAgICAgdW5pb24gW01lZGljYXRpb25SZXF1ZXN0OiAiTWV0aHlscGhlbmlkYXRlIl0KICAgICAgdW5pb24gW01lZGljYXRpb25SZXF1ZXN0OiAiR3VhbmZhY2luZSBNZWRpY2F0aW9ucyJdCiAgICAgIHVuaW9uIFtNZWRpY2F0aW9uUmVxdWVzdDogIlZpbG94YXppbmUiXQogICkuaXNNZWRpY2F0aW9uT3JkZXIgKCApICkgQURIRE1lZGljYXRpb25zCiAgICB3aGVyZSBBREhETWVkaWNhdGlvbnMubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApIHN0YXJ0cyBkdXJpbmcgIkludGFrZSBQZXJpb2QiICkgQURIRE1lZGljYXRpb25PcmRlcgogICAgd2l0aG91dCAoICggW01lZGljYXRpb25SZXF1ZXN0OiAiQXRvbW94ZXRpbmUiXQogICAgICAgIHVuaW9uIFtNZWRpY2F0aW9uUmVxdWVzdDogIkNsb25pZGluZSJdCiAgICAgICAgdW5pb24gW01lZGljYXRpb25SZXF1ZXN0OiAiRGV4bWV0aHlscGhlbmlkYXRlIl0KICAgICAgICB1bmlvbiBbTWVkaWNhdGlvblJlcXVlc3Q6ICJEZXh0cm9hbXBoZXRhbWluZSJdCiAgICAgICAgdW5pb24gW01lZGljYXRpb25SZXF1ZXN0OiAiTGlzZGV4YW1mZXRhbWluZSJdCiAgICAgICAgdW5pb24gW01lZGljYXRpb25SZXF1ZXN0OiAibWV0aGFtcGhldGFtaW5lIGh5ZHJvY2hsb3JpZGUgNSBNRyBPcmFsIFRhYmxldCJdCiAgICAgICAgdW5pb24gW01lZGljYXRpb25SZXF1ZXN0OiAiTWV0aHlscGhlbmlkYXRlIl0KICAgICAgICB1bmlvbiBbTWVkaWNhdGlvblJlcXVlc3Q6ICJHdWFuZmFjaW5lIE1lZGljYXRpb25zIl0KICAgICAgICB1bmlvbiBbTWVkaWNhdGlvblJlcXVlc3Q6ICJWaWxveGF6aW5lIl0KICAgICkuaXNNZWRpY2F0aW9uQWN0aXZlICggKSApIEFjdGl2ZUFESERNZWRpY2F0aW9uCiAgICAgIHN1Y2ggdGhhdCBBY3RpdmVBREhETWVkaWNhdGlvbi5tZWRpY2F0aW9uUmVxdWVzdFBlcmlvZCAoICkgb3ZlcmxhcHMgSW50ZXJ2YWxbZGF0ZSBmcm9tIHN0YXJ0IG9mIEFESERNZWRpY2F0aW9uT3JkZXIubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApIC0gMTIwIGRheXMsIGRhdGUgZnJvbSBzdGFydCBvZiBBREhETWVkaWNhdGlvbk9yZGVyLm1lZGljYXRpb25SZXF1ZXN0UGVyaW9kICggKSApICkgUXVhbGlmeWluZ01lZAogICAgcmV0dXJuIGFsbCB7CiAgICAgIHN0YXJ0RGF0ZTogc3RhcnQgb2YgUXVhbGlmeWluZ01lZC5tZWRpY2F0aW9uUmVxdWVzdFBlcmlvZCAoICkKICAgIH0KICAgIHNvcnQgYnkgc3RhcnREYXRlIGFzYwoKZGVmaW5lICJJbnBhdGllbnQgU3RheSB3aXRoIFF1YWxpZnlpbmcgRGlhZ25vc2lzIER1cmluZyBJbml0aWF0aW9uIFBoYXNlIjoKICAiSW5wYXRpZW50IFN0YXkgd2l0aCBRdWFsaWZ5aW5nIERpYWdub3NpcyIgSW5wYXRpZW50U3RheQogICAgd2hlcmUgQ1FNQ29tbW9uLiJUb0RhdGVJbnRlcnZhbCIgKCBJbnBhdGllbnRTdGF5LnBlcmlvZCApIHN0YXJ0cyAzMCBkYXlzIG9yIGxlc3MgYWZ0ZXIgZGF5IG9mICJJUFNEIgoKZGVmaW5lICJJbnBhdGllbnQgU3RheSB3aXRoIFF1YWxpZnlpbmcgRGlhZ25vc2lzIjoKICAoICggW0VuY291bnRlcjogIkVuY291bnRlciBJbnBhdGllbnQiXSApLmlzRW5jb3VudGVyUGVyZm9ybWVkICggKSApIElucGF0aWVudFN0YXkKICAgIHdoZXJlIElucGF0aWVudFN0YXkuaGFzUHJpbmNpcGFsRGlhZ25vc2lzT2YgKCAiTWVudGFsIEJlaGF2aW9yYWwgYW5kIE5ldXJvZGV2ZWxvcG1lbnRhbCBEaXNvcmRlcnMiICkKCmRlZmluZSAiRGVub21pbmF0b3IgMSI6CiAgIkluaXRpYWwgUG9wdWxhdGlvbiAxIgoKZGVmaW5lICJEZW5vbWluYXRvciBFeGNsdXNpb25zIjoKICBIb3NwaWNlLiJIYXMgSG9zcGljZSBTZXJ2aWNlcyIKICAgIG9yIGV4aXN0cyAiTmFyY29sZXBzeSBFeGNsdXNpb24iCgpkZWZpbmUgIk5hcmNvbGVwc3kgRXhjbHVzaW9uIjoKICAvLyBbRS0xM10gYmFzZSBGSElSLkNvbmRpdGlvbiByZXRyaWV2ZSAoZGVmZWN0LXRyYWNraW5nL2VuZ2luZS1pc3N1ZXMubWQgRS0xMykKICAvLyBPcmlnaW5hbDoKICAvLyAgIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiTmFyY29sZXBzeSJdCiAgLy8gICAgIHVuaW9uIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJOYXJjb2xlcHN5Il0KICAoICggW0ZISVIuQ29uZGl0aW9uOiAiTmFyY29sZXBzeSJdICkudmVyaWZpZWQgKCApICkgTmFyY29sZXBzeUR4CiAgICB3aGVyZSBOYXJjb2xlcHN5RHgucHJldmFsZW5jZUludGVydmFsICggKSBzdGFydHMgb24gb3IgYmVmb3JlIGVuZCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJOdW1lcmF0b3IgMSI6CiAgZXhpc3RzICJFbmNvdW50ZXIgRHVyaW5nIEluaXRpYXRpb24gUGhhc2UiCgpkZWZpbmUgIkVuY291bnRlciBEdXJpbmcgSW5pdGlhdGlvbiBQaGFzZSI6CiAgKCAiUXVhbGlmeWluZyBOdW1lcmF0b3IgRW5jb3VudGVyIi5pc0VuY291bnRlclBlcmZvcm1lZCAoICkgKSBWYWxpZE51bWVyYXRvckVuY291bnRlcgogICAgd2hlcmUgQ1FNQ29tbW9uLiJUb0RhdGVJbnRlcnZhbCIgKCBWYWxpZE51bWVyYXRvckVuY291bnRlci5wZXJpb2QgKSBzdGFydHMgMzAgZGF5cyBvciBsZXNzIGFmdGVyIGRheSBvZiAiSVBTRCIKCmRlZmluZSAiUXVhbGlmeWluZyBOdW1lcmF0b3IgRW5jb3VudGVyIjoKICBbRW5jb3VudGVyOiAiT2ZmaWNlIFZpc2l0Il0KICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJQcmV2ZW50aXZlIENhcmUgU2VydmljZXMgR3JvdXAgQ291bnNlbGluZyJdCiAgICB1bmlvbiBbRW5jb3VudGVyOiAiQmVoYXZpb3JhbCBIZWFsdGggRm9sbG93IHVwIFZpc2l0Il0KICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJQcmV2ZW50aXZlIENhcmUgU2VydmljZXMgSW5kaXZpZHVhbCBDb3Vuc2VsaW5nIl0KICAgIHVuaW9uICggW0VuY291bnRlcjogIlBzeWNob3RoZXJhcHkgYW5kIFBoYXJtYWNvbG9naWMgTWFuYWdlbWVudCJdIFBzeWNoUGhhcm1NYW5hZ2VtZW50CiAgICAgICAgd2hlcmUgZXhpc3RzICggUHN5Y2hQaGFybU1hbmFnZW1lbnQubG9jYXRpb24gTG9jYXRpb24KICAgICAgICAgICAgd2hlcmUgQ1FNQ29tbW9uLiJHZXRMb2NhdGlvbiIgKCBMb2NhdGlvbi5sb2NhdGlvbiApLnR5cGUgaW4gIkFtYnVsYXRvcnkiCiAgICAgICAgKQogICAgKQogICAgdW5pb24gW0VuY291bnRlcjogIk91dHBhdGllbnQgQ29uc3VsdGF0aW9uIl0KICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJIb21lIEhlYWx0aGNhcmUgU2VydmljZXMiXQogICAgdW5pb24gW0VuY291bnRlcjogIlByZXZlbnRpdmUgQ2FyZSBTZXJ2aWNlcywgSW5pdGlhbCBPZmZpY2UgVmlzaXQsIDAgdG8gMTciXQogICAgdW5pb24gW0VuY291bnRlcjogIlByZXZlbnRpdmUgQ2FyZSwgRXN0YWJsaXNoZWQgT2ZmaWNlIFZpc2l0LCAwIHRvIDE3Il0KICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJQc3ljaCBWaXNpdCBEaWFnbm9zdGljIEV2YWx1YXRpb24iXQogICAgdW5pb24gW0VuY291bnRlcjogIlBzeWNoIFZpc2l0IFBzeWNob3RoZXJhcHkiXQogICAgdW5pb24gW0VuY291bnRlcjogIlRlbGVwaG9uZSBWaXNpdHMiXQoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24gMiI6CiAgQWdlSW5ZZWFyc0F0KGRhdGUgZnJvbSBzdGFydCBvZiAiSW50YWtlIFBlcmlvZCIpID49IDYKICAgIGFuZCBBZ2VJblllYXJzQXQoZGF0ZSBmcm9tIAogICAgICBlbmQgb2YgIkludGFrZSBQZXJpb2QiCiAgICApIDw9IDEyCiAgICBhbmQgZXhpc3RzICJRdWFsaWZ5aW5nIEVuY291bnRlciIKICAgIGFuZCAiRmlyc3QgQURIRCBNZWRpY2F0aW9uIFByZXNjcmliZWQgRHVyaW5nIEludGFrZSBQZXJpb2QiIGlzIG5vdCBudWxsCiAgICBhbmQgIkhhcyBBREhEIEN1bXVsYXRpdmUgTWVkaWNhdGlvbiBEdXJhdGlvbiBHcmVhdGVyIFRoYW4gb3IgRXF1YWwgdG8gMjEwIERheXMiCiAgICBhbmQgbm90IGV4aXN0cyAiSW5wYXRpZW50IFN0YXkgd2l0aCBRdWFsaWZ5aW5nIERpYWdub3NpcyBEdXJpbmcgQ29udGludWF0aW9uIGFuZCBNYWludGVuYW5jZSBQaGFzZSIKCmRlZmluZSAiSGFzIEFESEQgQ3VtdWxhdGl2ZSBNZWRpY2F0aW9uIER1cmF0aW9uIEdyZWF0ZXIgVGhhbiBvciBFcXVhbCB0byAyMTAgRGF5cyI6CiAgIkFESEQgQ3VtdWxhdGl2ZSBNZWRpY2F0aW9uIER1cmF0aW9uIiA+PSAyMTAKCmRlZmluZSAiQURIRCBDdW11bGF0aXZlIE1lZGljYXRpb24gRHVyYXRpb24iOgogICggIkFESEQgTWVkaWNhdGlvbnMgVGFrZW4gb24gSVBTRCBvciBEdXJpbmcgQ29udGludWF0aW9uIGFuZCBNYWludGVuYW5jZSBQaGFzZSIgKS5jdW11bGF0aXZlRHVyYXRpb24gKCApCgpkZWZpbmUgIklucGF0aWVudCBTdGF5IHdpdGggUXVhbGlmeWluZyBEaWFnbm9zaXMgRHVyaW5nIENvbnRpbnVhdGlvbiBhbmQgTWFpbnRlbmFuY2UgUGhhc2UiOgogICJJbnBhdGllbnQgU3RheSB3aXRoIFF1YWxpZnlpbmcgRGlhZ25vc2lzIiBJbnBhdGllbnRTdGF5CiAgICB3aGVyZSBDUU1Db21tb24uIlRvRGF0ZUludGVydmFsIiAoIElucGF0aWVudFN0YXkucGVyaW9kICkgc3RhcnRzIDMwMCBkYXlzIG9yIGxlc3MgYWZ0ZXIgZGF5IG9mICJJUFNEIgoKZGVmaW5lICJBREhEIE1lZGljYXRpb25zIFRha2VuIG9uIElQU0Qgb3IgRHVyaW5nIENvbnRpbnVhdGlvbiBhbmQgTWFpbnRlbmFuY2UgUGhhc2UiOgogICggKCAoICggKCAoIFtNZWRpY2F0aW9uUmVxdWVzdDogIkF0b21veGV0aW5lIl0gKS5pc01lZGljYXRpb25PcmRlciAoICkgKSBBdG9tb3hldGluZU1lZAogICAgICAgICAgcmV0dXJuIGFsbCB7CiAgICAgICAgICAgIHBlcmlvZDogQXRvbW94ZXRpbmVNZWQubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApLAogICAgICAgICAgICBwZXJpb2RTdGFydDogc3RhcnQgb2YgQXRvbW94ZXRpbmVNZWQubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApCiAgICAgICAgICB9CiAgICAgICAgICBzb3J0IGJ5IHBlcmlvZFN0YXJ0CiAgICAgICkucGVyaW9kCiAgICApLnJvbGxvdXRJbnRlcnZhbHMgKCApCiAgKQogICAgdW5pb24gKCAoICggKCAoIFtNZWRpY2F0aW9uUmVxdWVzdDogIkNsb25pZGluZSJdICkuaXNNZWRpY2F0aW9uT3JkZXIgKCApICkgQ2xvbmlkaW5lTWVkCiAgICAgICAgICAgIHJldHVybiBhbGwgewogICAgICAgICAgICAgIHBlcmlvZDogQ2xvbmlkaW5lTWVkLm1lZGljYXRpb25SZXF1ZXN0UGVyaW9kICggKSwKICAgICAgICAgICAgICBwZXJpb2RTdGFydDogc3RhcnQgb2YgQ2xvbmlkaW5lTWVkLm1lZGljYXRpb25SZXF1ZXN0UGVyaW9kICggKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHNvcnQgYnkgcGVyaW9kU3RhcnQKICAgICAgICApLnBlcmlvZAogICAgICApLnJvbGxvdXRJbnRlcnZhbHMgKCApCiAgICApCiAgICB1bmlvbiAoICggKCAoICggW01lZGljYXRpb25SZXF1ZXN0OiAiRGV4bWV0aHlscGhlbmlkYXRlIl0gKS5pc01lZGljYXRpb25PcmRlciAoICkgKSBEZXhtZXRoeWxwaGVuaWRhdGVNZWQKICAgICAgICAgICAgcmV0dXJuIGFsbCB7CiAgICAgICAgICAgICAgcGVyaW9kOiBEZXhtZXRoeWxwaGVuaWRhdGVNZWQubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApLAogICAgICAgICAgICAgIHBlcmlvZFN0YXJ0OiBzdGFydCBvZiBEZXhtZXRoeWxwaGVuaWRhdGVNZWQubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc29ydCBieSBwZXJpb2RTdGFydAogICAgICAgICkucGVyaW9kCiAgICAgICkucm9sbG91dEludGVydmFscyAoICkKICAgICkKICAgIHVuaW9uICggKCAoICggKCBbTWVkaWNhdGlvblJlcXVlc3Q6ICJEZXh0cm9hbXBoZXRhbWluZSJdICkuaXNNZWRpY2F0aW9uT3JkZXIgKCApICkgRGV4dHJvYW1waGV0YW1pbmVNZWQKICAgICAgICAgICAgcmV0dXJuIGFsbCB7CiAgICAgICAgICAgICAgcGVyaW9kOiBEZXh0cm9hbXBoZXRhbWluZU1lZC5tZWRpY2F0aW9uUmVxdWVzdFBlcmlvZCAoICksCiAgICAgICAgICAgICAgcGVyaW9kU3RhcnQ6IHN0YXJ0IG9mIERleHRyb2FtcGhldGFtaW5lTWVkLm1lZGljYXRpb25SZXF1ZXN0UGVyaW9kICggKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHNvcnQgYnkgcGVyaW9kU3RhcnQKICAgICAgICApLnBlcmlvZAogICAgICApLnJvbGxvdXRJbnRlcnZhbHMgKCApCiAgICApCiAgICB1bmlvbiAoICggKCAoICggW01lZGljYXRpb25SZXF1ZXN0OiAiTGlzZGV4YW1mZXRhbWluZSJdICkuaXNNZWRpY2F0aW9uT3JkZXIgKCApICkgTGlzZGV4YW1mZXRhbWluZU1lZAogICAgICAgICAgICByZXR1cm4gYWxsIHsKICAgICAgICAgICAgICBwZXJpb2Q6IExpc2RleGFtZmV0YW1pbmVNZWQubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApLAogICAgICAgICAgICAgIHBlcmlvZFN0YXJ0OiBzdGFydCBvZiBMaXNkZXhhbWZldGFtaW5lTWVkLm1lZGljYXRpb25SZXF1ZXN0UGVyaW9kICggKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHNvcnQgYnkgcGVyaW9kU3RhcnQKICAgICAgICApLnBlcmlvZAogICAgICApLnJvbGxvdXRJbnRlcnZhbHMgKCApCiAgICApCiAgICB1bmlvbiAoICggKCAoICggW01lZGljYXRpb25SZXF1ZXN0OiAiTWV0aHlscGhlbmlkYXRlIl0gKS5pc01lZGljYXRpb25PcmRlciAoICkgKSBNZXRoeWxwaGVuaWRhdGVNZWQKICAgICAgICAgICAgcmV0dXJuIGFsbCB7CiAgICAgICAgICAgICAgcGVyaW9kOiBNZXRoeWxwaGVuaWRhdGVNZWQubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApLAogICAgICAgICAgICAgIHBlcmlvZFN0YXJ0OiBzdGFydCBvZiBNZXRoeWxwaGVuaWRhdGVNZWQubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc29ydCBieSBwZXJpb2RTdGFydAogICAgICAgICkucGVyaW9kCiAgICAgICkucm9sbG91dEludGVydmFscyAoICkKICAgICkKICAgIHVuaW9uICggKCAoICggKCBbTWVkaWNhdGlvblJlcXVlc3Q6ICJHdWFuZmFjaW5lIE1lZGljYXRpb25zIl0gKS5pc01lZGljYXRpb25PcmRlciAoICkgKSBHdWFuZmFjaW5lTWVkCiAgICAgICAgICAgIHJldHVybiBhbGwgewogICAgICAgICAgICAgIHBlcmlvZDogR3VhbmZhY2luZU1lZC5tZWRpY2F0aW9uUmVxdWVzdFBlcmlvZCAoICksCiAgICAgICAgICAgICAgcGVyaW9kU3RhcnQ6IHN0YXJ0IG9mIEd1YW5mYWNpbmVNZWQubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc29ydCBieSBwZXJpb2RTdGFydAogICAgICAgICkucGVyaW9kCiAgICAgICkucm9sbG91dEludGVydmFscyAoICkKICAgICkKICAgIHVuaW9uICggKCAoICggKCBbTWVkaWNhdGlvblJlcXVlc3Q6ICJtZXRoYW1waGV0YW1pbmUgaHlkcm9jaGxvcmlkZSA1IE1HIE9yYWwgVGFibGV0Il0gKS5pc01lZGljYXRpb25PcmRlciAoICkgKSBNZXRoYW1waGV0YW1pbmVNZWQKICAgICAgICAgICAgcmV0dXJuIGFsbCB7CiAgICAgICAgICAgICAgcGVyaW9kOiBNZXRoYW1waGV0YW1pbmVNZWQubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApLAogICAgICAgICAgICAgIHBlcmlvZFN0YXJ0OiBzdGFydCBvZiBNZXRoYW1waGV0YW1pbmVNZWQubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc29ydCBieSBwZXJpb2RTdGFydAogICAgICAgICkucGVyaW9kCiAgICAgICkucm9sbG91dEludGVydmFscyAoICkKICAgICkKICAgIHVuaW9uICggKCAoICggKCBbTWVkaWNhdGlvblJlcXVlc3Q6ICJWaWxveGF6aW5lIl0gKS5pc01lZGljYXRpb25PcmRlciAoICkgKSBWaWxveGF6aW5lTWVkCiAgICAgICAgICAgIHJldHVybiBhbGwgewogICAgICAgICAgICAgIHBlcmlvZDogVmlsb3hhemluZU1lZC5tZWRpY2F0aW9uUmVxdWVzdFBlcmlvZCAoICksCiAgICAgICAgICAgICAgcGVyaW9kU3RhcnQ6IHN0YXJ0IG9mIFZpbG94YXppbmVNZWQubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc29ydCBieSBwZXJpb2RTdGFydAogICAgICAgICkucGVyaW9kCiAgICAgICkucm9sbG91dEludGVydmFscyAoICkKICAgICkgKSBBREhETWVkaWNhdGlvbgogICAgbGV0IElQU0RBbmRDb250aW51YXRpb25NYWludGVuYW5jZVBoYXNlOiBJbnRlcnZhbFsiSVBTRCIsICJJUFNEIiArIDMwMCBkYXlzXQogICAgcmV0dXJuIGFsbCBBREhETWVkaWNhdGlvbgogICAgICBpbnRlcnNlY3QgSVBTREFuZENvbnRpbnVhdGlvbk1haW50ZW5hbmNlUGhhc2UKCmRlZmluZSAiRGVub21pbmF0b3IgMiI6CiAgIkluaXRpYWwgUG9wdWxhdGlvbiAyIgoKZGVmaW5lICJOdW1lcmF0b3IgMiI6CiAgZXhpc3RzICJFbmNvdW50ZXIgRHVyaW5nIEluaXRpYXRpb24gUGhhc2UiCiAgICBhbmQgKCAiVHdvIG9yIE1vcmUgRW5jb3VudGVycyAzMSB0byAzMDAgRGF5cyBpbnRvIENvbnRpbnVhdGlvbiBhbmQgTWFpbnRlbmFuY2UgUGhhc2UiCiAgICAgICAgb3IgKCBleGlzdHMgIkVuY291bnRlciAzMSB0byAzMDAgRGF5cyBpbnRvIENvbnRpbnVhdGlvbiBhbmQgTWFpbnRlbmFuY2UgUGhhc2UiIEVuY291bnRlcjEKICAgICAgICAgICAgd2l0aCAiVmlydHVhbCBFbmNvdW50ZXIgMzEgdG8gMzAwIERheXMgaW50byBDb250aW51YXRpb24gYW5kIE1haW50ZW5hbmNlIFBoYXNlIiBFbmNvdW50ZXIyCiAgICAgICAgICAgICAgc3VjaCB0aGF0IEVuY291bnRlcjEgaXMgbm90IG51bGwKICAgICAgICAgICAgICAgIGFuZCBFbmNvdW50ZXIyIGlzIG5vdCBudWxsCiAgICAgICAgICAgICAgICBhbmQgRW5jb3VudGVyMSAhfiBFbmNvdW50ZXIyCiAgICAgICAgKQogICAgKQoKZGVmaW5lICJUd28gb3IgTW9yZSBFbmNvdW50ZXJzIDMxIHRvIDMwMCBEYXlzIGludG8gQ29udGludWF0aW9uIGFuZCBNYWludGVuYW5jZSBQaGFzZSI6CiAgQ291bnQoIkVuY291bnRlciAzMSB0byAzMDAgRGF5cyBpbnRvIENvbnRpbnVhdGlvbiBhbmQgTWFpbnRlbmFuY2UgUGhhc2UiKSA+PSAyCgpkZWZpbmUgIkVuY291bnRlciAzMSB0byAzMDAgRGF5cyBpbnRvIENvbnRpbnVhdGlvbiBhbmQgTWFpbnRlbmFuY2UgUGhhc2UiOgogICggIlF1YWxpZnlpbmcgTnVtZXJhdG9yIEVuY291bnRlciIuaXNFbmNvdW50ZXJQZXJmb3JtZWQgKCApICkgVmFsaWROdW1lcmF0b3JFbmNvdW50ZXIKICAgIHdoZXJlIENRTUNvbW1vbi4iVG9EYXRlSW50ZXJ2YWwiICggVmFsaWROdW1lcmF0b3JFbmNvdW50ZXIucGVyaW9kICkgc3RhcnRzIGR1cmluZyBkYXkgb2YgSW50ZXJ2YWxbIklQU0QiICsgMzEgZGF5cywgIklQU0QiICsgMzAwIGRheXNdCiAgICByZXR1cm4gZGF0ZSBmcm9tIHN0YXJ0IG9mIFZhbGlkTnVtZXJhdG9yRW5jb3VudGVyLnBlcmlvZAoKZGVmaW5lICJWaXJ0dWFsIEVuY291bnRlciAzMSB0byAzMDAgRGF5cyBpbnRvIENvbnRpbnVhdGlvbiBhbmQgTWFpbnRlbmFuY2UgUGhhc2UiOgogICggKCBbRW5jb3VudGVyOiAiVmlydHVhbCBFbmNvdW50ZXIiXSApLmlzRW5jb3VudGVyUGVyZm9ybWVkICggKSApIFZpcnR1YWxFbmMKICAgIHdoZXJlIENRTUNvbW1vbi4iVG9EYXRlSW50ZXJ2YWwiICggVmlydHVhbEVuYy5wZXJpb2QgKSBzdGFydHMgZHVyaW5nIGRheSBvZiBJbnRlcnZhbFsiSVBTRCIgKyAzMSBkYXlzLCAiSVBTRCIgKyAzMDAgZGF5c10KICAgIHJldHVybiBkYXRlIGZyb20gc3RhcnQgb2YgVmlydHVhbEVuYy5wZXJpb2QKCmRlZmluZSAiU0RFIEV0aG5pY2l0eSI6CiAgU0RFLiJTREUgRXRobmljaXR5IgoKZGVmaW5lICJTREUgUGF5ZXIiOgogIFNERS4iU0RFIFBheWVyIgoKZGVmaW5lICJTREUgUmFjZSI6CiAgU0RFLiJTREUgUmFjZSIKCmRlZmluZSAiU0RFIFNleCI6CiAgU0RFLiJTREUgU2V4Ig==",
"url" : "https://madie.cms.gov/Library-CMS136FHIRChildADHDMedFollowUp.cql"
}
]
}