@medplum/mock 2.0.7 → 2.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -913,6 +913,18 @@
913
913
  ],
914
914
  };
915
915
 
916
+ const TestProject = {
917
+ resourceType: 'Project',
918
+ id: '123',
919
+ name: 'Project 123',
920
+ };
921
+ const TestProjectMembersihp = {
922
+ resourceType: 'ProjectMembership',
923
+ id: '456',
924
+ project: core.createReference(TestProject),
925
+ profile: core.createReference(DrAliceSmith),
926
+ };
927
+
916
928
  var SearchParameterList = [
917
929
  {
918
930
  resourceType: "SearchParameter",
@@ -16572,8 +16584,9 @@
16572
16584
  const repo = new fhirRouter.MemoryRepository();
16573
16585
  const client = new MockFetchClient(router, repo, clientOptions?.debug);
16574
16586
  super({
16575
- baseUrl: 'https://example.com/',
16576
- clientId: 'my-client-id',
16587
+ baseUrl: clientOptions?.baseUrl || 'https://example.com/',
16588
+ clientId: clientOptions?.clientId,
16589
+ storage: clientOptions?.storage,
16577
16590
  createPdf: (docDefinition, tableLayouts, fonts) => client.mockCreatePdf(docDefinition, tableLayouts, fonts),
16578
16591
  fetch: (url, options) => {
16579
16592
  return client.mockFetch(url, options);
@@ -16701,17 +16714,17 @@
16701
16714
  return null;
16702
16715
  }
16703
16716
  }
16704
- mockAdminHandler(_method, path) {
16705
- if (path.startsWith('admin/projects/123')) {
16717
+ async mockAdminHandler(_method, path) {
16718
+ const projectMatch = path.match(/^admin\/projects\/([\w-]+)$/);
16719
+ if (projectMatch) {
16706
16720
  return {
16707
- project: { id: '123', name: 'Project 123' },
16708
- members: [
16709
- { id: '123', profile: { reference: 'Practitioner/123', display: 'Alice Smith' }, role: 'owner' },
16710
- { id: '888', profile: { reference: 'ClientApplication/123', display: 'Test Client' }, role: 'client' },
16711
- { id: '999', profile: { reference: 'Bot/123', display: 'Test Bot' }, role: 'bot' },
16712
- ],
16721
+ project: await this.repo.readResource('Project', projectMatch[1]),
16713
16722
  };
16714
16723
  }
16724
+ const membershipMatch = path.match(/^admin\/projects\/([\w-]+)\/members\/([\w-]+)$/);
16725
+ if (membershipMatch) {
16726
+ return this.repo.readResource('ProjectMembership', membershipMatch[2]);
16727
+ }
16715
16728
  return {
16716
16729
  ok: true,
16717
16730
  };
@@ -16880,10 +16893,11 @@
16880
16893
  };
16881
16894
  }
16882
16895
  }
16883
- mockOAuthHandler(_method, path, _options) {
16896
+ mockOAuthHandler(_method, path, options) {
16884
16897
  if (path.startsWith('oauth2/token')) {
16898
+ const clientId = options.body.get('client_id') || 'my-client-id';
16885
16899
  return {
16886
- access_token: 'header.' + window.btoa(JSON.stringify({ client_id: 'my-client-id' })) + '.signature',
16900
+ access_token: 'header.' + base64Encode(JSON.stringify({ client_id: clientId })) + '.signature',
16887
16901
  };
16888
16902
  }
16889
16903
  return null;
@@ -16930,6 +16944,8 @@
16930
16944
  ExampleWorkflowTask3,
16931
16945
  ExampleWorkflowRequestGroup,
16932
16946
  ExampleSmartClientApplication,
16947
+ TestProject,
16948
+ TestProjectMembersihp,
16933
16949
  ];
16934
16950
  for (const resource of defaultResources) {
16935
16951
  await this.repo.createResource(resource);
@@ -16975,6 +16991,9 @@
16975
16991
  }
16976
16992
  }
16977
16993
  }
16994
+ function base64Encode(str) {
16995
+ return typeof window !== 'undefined' ? window.btoa(str) : Buffer.from(str).toString('base64');
16996
+ }
16978
16997
 
16979
16998
  exports.BartSimpson = BartSimpson;
16980
16999
  exports.DifferentOrganization = DifferentOrganization;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/mocks/accesspolicy.ts","../../src/mocks/alice.ts","../../src/mocks/bot.ts","../../src/mocks/questionnaire.ts","../../src/mocks/simpsons.ts","../../src/mocks/subscription.ts","../../src/mocks/valueset.ts","../../src/mocks/workflow.ts","../../src/mocks/smart.ts","../../src/client.ts"],"sourcesContent":["import { AccessPolicy, UserConfiguration, ValueSet } from '@medplum/fhirtypes';\n\nexport const ExampleAccessPolicy: AccessPolicy = {\n resourceType: 'AccessPolicy',\n id: '123',\n name: 'Example Access Policy',\n};\n\nexport const ExampleStatusValueSet: ValueSet = {\n resourceType: 'ValueSet',\n id: 'example-statuses',\n compose: {\n include: [\n {\n concept: [\n { code: 'ORDERED' },\n { code: 'SENT_TO_CUSTOMER' },\n { code: 'SENT_BACK_TO_LAB' },\n { code: 'LAB_PROCESSED' },\n { code: 'LAB_COMPLETE' },\n ],\n },\n ],\n },\n};\n\nexport const ExampleUserConfiguration: UserConfiguration = {\n resourceType: 'UserConfiguration',\n id: '123',\n name: 'Example User Configuration',\n option: [\n {\n id: 'statusValueSet',\n valueString: 'ValueSet/example-statuses',\n },\n ],\n};\n","import { createReference } from '@medplum/core';\nimport { Organization, Practitioner, Schedule, Slot } from '@medplum/fhirtypes';\n\nexport const TestOrganization: Organization = {\n resourceType: 'Organization',\n id: '123',\n meta: {\n versionId: '1',\n },\n name: 'Test Organization',\n};\n\nexport const DifferentOrganization: Organization = {\n resourceType: 'Organization',\n id: '456',\n meta: {\n versionId: '1',\n },\n name: 'Different',\n};\n\nexport const DrAliceSmith: Practitioner = {\n resourceType: 'Practitioner',\n id: '123',\n meta: {\n versionId: '2',\n lastUpdated: '2021-01-02T12:00:00Z',\n author: {\n reference: 'Practitioner/123',\n },\n },\n name: [\n {\n given: ['Alice'],\n family: 'Smith',\n },\n ],\n photo: [\n {\n contentType: 'image/png',\n url: 'https://www.medplum.com/img/cdc-femaledoc.png',\n },\n ],\n};\n\nexport const DrAliceSmithPreviousVersion: Practitioner = {\n resourceType: 'Practitioner',\n id: '123',\n meta: {\n versionId: '1',\n lastUpdated: '2021-01-01T12:00:00Z',\n author: {\n reference: 'Practitioner/123',\n },\n },\n name: [{ given: ['Medplum'], family: 'Admin' }],\n};\n\nexport const DrAliceSmithSchedule: Schedule = {\n resourceType: 'Schedule',\n id: 'alice-smith-schedule',\n actor: [\n {\n reference: 'Practitioner/123',\n display: 'Dr. Alice Smith',\n },\n ],\n};\n\nexport const DrAliceSmithSlots: Slot[] = (() => {\n const schedule = createReference(DrAliceSmithSchedule);\n const result: Slot[] = [];\n const slotDate = new Date();\n for (let day = 0; day < 60; day++) {\n for (const hour of [9, 10, 11, 13, 14, 15]) {\n slotDate.setHours(hour, 0, 0, 0);\n result.push({\n resourceType: 'Slot',\n id: `slot-${day}-${hour}`,\n start: slotDate.toISOString(),\n schedule,\n });\n }\n slotDate.setDate(slotDate.getDate() + 1);\n }\n return result;\n})();\n","import { Bot, ClientApplication } from '@medplum/fhirtypes';\n\nexport const ExampleBot: Bot = {\n resourceType: 'Bot',\n id: '123',\n name: 'Test Bot',\n code: 'console.log(\"hello world\");',\n};\n\nexport const ExampleClient: ClientApplication = {\n resourceType: 'ClientApplication',\n id: '123',\n name: 'Test Client',\n};\n","import { Questionnaire, QuestionnaireResponse } from '@medplum/fhirtypes';\n\nexport const ExampleQuestionnaire: Questionnaire = {\n resourceType: 'Questionnaire',\n id: '123',\n name: 'Vitals',\n title: 'Vitals',\n subjectType: ['Patient'],\n item: [\n {\n linkId: '1',\n text: 'First question',\n type: 'string',\n },\n ],\n};\n\nexport const ExampleQuestionnaireResponse: QuestionnaireResponse = {\n resourceType: 'QuestionnaireResponse',\n id: '123',\n questionnaire: 'Questionnaire/123',\n subject: {\n reference: 'Patient/123',\n },\n source: {\n reference: 'Practitioner/123',\n },\n};\n","import { createReference } from '@medplum/core';\nimport {\n Address,\n Communication,\n DiagnosticReport,\n Encounter,\n Group,\n Media,\n Observation,\n Patient,\n RelatedPerson,\n ServiceRequest,\n Specimen,\n} from '@medplum/fhirtypes';\nimport { DrAliceSmith } from './alice';\n\nconst SIMPSONS_ADDRESS: Address = {\n use: 'home',\n line: ['742 Evergreen Terrace'],\n city: 'Springfield',\n state: 'IL',\n postalCode: '12345',\n};\n\nexport const LisaSimpson: Patient = {\n resourceType: 'Patient',\n id: 'lisa-simpson',\n meta: {\n versionId: '1',\n lastUpdated: '2020-01-01T12:00:00Z',\n author: {\n reference: 'Practitioner/123',\n },\n },\n birthDate: '1981-05-09',\n name: [\n {\n given: ['Lisa'],\n family: 'Simpson',\n },\n ],\n photo: [\n {\n contentType: 'image/jpeg',\n url: 'https://example.com/picture.jpg',\n },\n ],\n contact: [\n {\n name: { given: ['Homer'], family: 'Simpson' },\n address: {\n use: 'home',\n line: ['742 Evergreen Terrace'],\n city: 'Springfield',\n state: 'IL',\n postalCode: '12345',\n },\n telecom: [\n {\n system: 'phone',\n use: 'home',\n value: '555-1239',\n },\n {\n system: 'email',\n use: 'home',\n value: 'homer@thesimpsons.com',\n },\n ],\n },\n {\n name: { given: ['Marge'], family: 'Simpson' },\n address: {\n use: 'home',\n line: ['742 Evergreen Terrace'],\n city: 'Springfield',\n state: 'IL',\n postalCode: '12345',\n },\n telecom: [\n {\n system: 'phone',\n use: 'mobile',\n value: '139-1928',\n },\n {\n system: 'email',\n use: 'home',\n value: 'marge@thesimpsons.com',\n },\n ],\n },\n ],\n\n telecom: [\n {\n system: 'phone',\n use: 'home',\n value: '555-1239',\n },\n {\n system: 'email',\n use: 'home',\n value: 'lisa@thesimpsons.com',\n },\n ],\n};\n\nexport const BartSimpson: Patient = {\n resourceType: 'Patient',\n id: '555',\n meta: {\n versionId: '1',\n lastUpdated: '2020-01-01T12:00:00Z',\n author: {\n reference: 'Practitioner/123',\n },\n },\n birthDate: '1979-12-17',\n name: [\n {\n given: ['Bart'],\n family: 'Simpson',\n },\n ],\n photo: [\n {\n contentType: 'image/jpeg',\n url: 'https://example.com/picture.jpg',\n },\n ],\n telecom: [\n {\n system: 'phone',\n use: 'home',\n value: '555-1239',\n },\n {\n system: 'email',\n use: 'home',\n value: 'bart@thesimpsons.com',\n },\n ],\n};\n\nexport const HomerLisaRelatedPerson: RelatedPerson = {\n resourceType: 'RelatedPerson',\n id: 'homer-lisa-related-person',\n patient: createReference(LisaSimpson),\n address: [SIMPSONS_ADDRESS],\n telecom: [\n {\n system: 'phone',\n use: 'home',\n value: '555-7334',\n },\n {\n system: 'email',\n use: 'home',\n value: 'chunkylover53@aol.com',\n },\n ],\n relationship: [\n {\n text: 'father',\n coding: [{ system: 'http://terminology.hl7.org/CodeSystem/v3-RoleCode', code: 'FTH', display: 'father' }],\n },\n ],\n};\n\nexport const HomerBartRelatedPerson: RelatedPerson = {\n resourceType: 'RelatedPerson',\n id: 'homer-bart-related-person',\n patient: createReference(BartSimpson),\n address: [SIMPSONS_ADDRESS],\n telecom: [\n {\n system: 'phone',\n use: 'home',\n value: '555-7334',\n },\n {\n system: 'email',\n use: 'home',\n value: 'chunkylover53@aol.com',\n },\n ],\n relationship: [\n {\n text: 'father',\n coding: [{ system: 'http://terminology.hl7.org/CodeSystem/v3-RoleCode', code: 'FTH', display: 'father' }],\n },\n ],\n};\n\nexport const HomerSimpson: Patient = {\n resourceType: 'Patient',\n id: '123',\n gender: 'male',\n meta: {\n versionId: '2',\n lastUpdated: '2020-01-02T00:00:00.000Z',\n author: {\n reference: 'Practitioner/123',\n },\n },\n identifier: [\n { system: 'abc', value: '123' },\n { system: 'def', value: '456' },\n ],\n active: true,\n birthDate: '1956-05-12',\n name: [\n {\n given: ['Homer'],\n family: 'Simpson',\n },\n ],\n photo: [\n {\n contentType: 'image/png',\n url: 'https://www.medplum.com/img/homer-simpson.png',\n },\n ],\n telecom: [\n {\n system: 'phone',\n use: 'home',\n value: '555-7334',\n },\n {\n system: 'email',\n use: 'home',\n value: 'chunkylover53@aol.com',\n },\n ],\n address: [\n {\n use: 'home',\n line: ['742 Evergreen Terrace'],\n city: 'Springfield',\n state: 'IL',\n postalCode: '12345',\n },\n ],\n link: [\n { other: createReference(HomerLisaRelatedPerson), type: 'seealso' },\n { other: createReference(HomerBartRelatedPerson), type: 'seealso' },\n ],\n};\n\nexport const MargeSimpson: Patient = {\n resourceType: 'Patient',\n id: 'marge-simpson',\n gender: 'female',\n\n active: true,\n birthDate: '1961-08-23',\n name: [\n {\n given: ['Marge'],\n family: 'Simpson',\n },\n ],\n telecom: [\n {\n system: 'phone',\n use: 'home',\n value: '555-7334',\n },\n {\n system: 'email',\n use: 'home',\n value: 'margesimpson@aol.com',\n },\n ],\n address: [SIMPSONS_ADDRESS],\n};\n\nexport const HomerSimpsonPreviousVersion: Patient = {\n resourceType: 'Patient',\n id: '123',\n meta: {\n versionId: '1',\n lastUpdated: '2020-01-01T00:00:00.000Z',\n author: {\n reference: 'Practitioner/123',\n },\n },\n name: [\n {\n given: ['Homer'],\n family: 'Simpson',\n },\n ],\n photo: [\n {\n contentType: 'image/png',\n url: 'https://www.medplum.com/img/homer-simpson.png',\n },\n ],\n};\n\nexport const HomerEncounter: Encounter = {\n resourceType: 'Encounter',\n id: '123',\n meta: {\n versionId: '456',\n lastUpdated: '2020-01-01T00:00:00.000Z',\n author: {\n reference: 'Practitioner/123',\n },\n },\n};\n\nexport const HomerCommunication: Communication = {\n resourceType: 'Communication',\n id: '123',\n meta: {\n lastUpdated: '2020-01-01T12:00:00Z',\n author: {\n reference: 'Practitioner/123',\n },\n },\n encounter: createReference(HomerEncounter),\n payload: [\n {\n contentString: 'Hello world',\n },\n ],\n};\n\nexport const HomerMedia: Media = {\n resourceType: 'Media',\n id: '123',\n meta: {\n lastUpdated: '2020-01-01T12:00:00Z',\n author: {\n reference: 'Practitioner/123',\n },\n },\n encounter: createReference(HomerEncounter),\n content: {\n contentType: 'text/plain',\n url: 'https://example.com/test.txt',\n },\n};\n\nexport const HomerObservation1: Observation = {\n resourceType: 'Observation',\n id: '1',\n status: 'final',\n subject: {\n reference: 'Patient/123',\n display: 'Homer Simpson',\n },\n code: {\n text: 'Test 1',\n },\n valueString: 'test',\n};\n\nexport const HomerObservation2: Observation = {\n resourceType: 'Observation',\n id: '2',\n status: 'corrected',\n subject: {\n reference: 'Patient/123',\n display: 'Homer Simpson',\n },\n code: {\n text: 'Test 2',\n },\n valueQuantity: {\n value: 20,\n unit: 'x',\n },\n referenceRange: [\n {\n low: {\n value: 10,\n },\n },\n ],\n};\n\nexport const HomerObservation3: Observation = {\n resourceType: 'Observation',\n id: '3',\n status: 'final',\n subject: {\n reference: 'Patient/123',\n display: 'Homer Simpson',\n },\n code: {\n text: 'Test 3',\n },\n valueQuantity: {\n value: 30,\n unit: 'x',\n },\n referenceRange: [\n {\n high: {\n value: 50,\n },\n },\n ],\n};\n\nexport const HomerObservation4: Observation = {\n resourceType: 'Observation',\n id: '4',\n status: 'final',\n subject: {\n reference: 'Patient/123',\n display: 'Homer Simpson',\n },\n code: {\n text: 'Test 4',\n },\n valueQuantity: {\n value: 50,\n unit: 'x',\n comparator: '>',\n },\n referenceRange: [\n {\n low: {\n value: 10,\n unit: 'x',\n },\n high: {\n value: 50,\n unit: 'x',\n },\n },\n ],\n interpretation: [\n {\n text: 'HIGH',\n },\n ],\n};\n\nexport const HomerObservation5: Observation = {\n resourceType: 'Observation',\n id: '5',\n status: 'final',\n subject: {\n reference: 'Patient/123',\n display: 'Homer Simpson',\n },\n code: {\n text: 'Test 5',\n },\n valueQuantity: {\n value: 100,\n unit: 'x',\n },\n referenceRange: [{}],\n interpretation: [{}],\n};\n\nexport const HomerObservation6: Observation = {\n resourceType: 'Observation',\n id: '6',\n status: 'final',\n subject: {\n reference: 'Patient/123',\n display: 'Homer Simpson',\n },\n code: {\n text: 'Test 6',\n },\n component: [\n {\n valueQuantity: {\n value: 110,\n unit: 'mmHg',\n system: 'http://unitsofmeasure.org',\n },\n },\n {\n valueQuantity: {\n value: 75,\n unit: 'mmHg',\n system: 'http://unitsofmeasure.org',\n },\n },\n ],\n};\n\nexport const HomerObservation7: Observation = {\n resourceType: 'Observation',\n id: '7',\n status: 'final',\n subject: {\n reference: 'Patient/123',\n display: 'Homer Simpson',\n },\n code: {\n text: 'Test 7',\n },\n component: [\n {\n valueQuantity: {\n value: 1000,\n unit: 'mg/dL',\n system: 'http://unitsofmeasure.org',\n },\n },\n ],\n interpretation: [\n {\n coding: [\n {\n system: 'http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation',\n code: 'HH',\n display: 'Critical high',\n },\n ],\n },\n ],\n};\n\nexport const HomerObservation8: Observation = {\n resourceType: 'Observation',\n id: '8',\n status: 'final',\n subject: {\n reference: 'Patient/123',\n display: 'Homer Simpson',\n },\n code: {\n text: 'Test 8',\n },\n component: [\n {\n valueString: 'REACTIVE',\n },\n ],\n referenceRange: [\n {\n text: 'NEGATIVE',\n },\n ],\n interpretation: [\n {\n coding: [\n {\n system: 'http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation',\n code: 'RR',\n display: 'Reactive',\n },\n ],\n },\n ],\n};\n\nexport const HomerSimpsonSpecimen: Specimen = {\n id: '123',\n resourceType: 'Specimen',\n subject: createReference(HomerSimpson),\n collection: {\n collectedDateTime: '2020-01-01T12:00:00Z',\n },\n note: [\n { text: 'Specimen hemolyzed. Results may be affected.' },\n { text: 'Specimen lipemic. Results may be affected.' },\n ],\n};\n\nexport const HomerServiceRequest: ServiceRequest = {\n resourceType: 'ServiceRequest',\n id: '123',\n meta: {\n versionId: '1',\n lastUpdated: '2020-01-01T12:00:00Z',\n author: {\n reference: 'Practitioner/123',\n },\n },\n identifier: [\n {\n system: 'https://example.com',\n value: '9001',\n },\n ],\n code: {\n coding: [\n {\n system: 'http://snomed.info/sct',\n code: 'SERVICE_REQUEST_CODE',\n },\n ],\n },\n subject: {\n reference: 'Patient/123',\n display: 'Homer Simpson',\n },\n status: 'active',\n orderDetail: [\n {\n text: 'ORDERED',\n },\n ],\n specimen: [createReference(HomerSimpsonSpecimen)],\n authoredOn: '2020-01-01T12:00:00Z',\n};\n\nexport const HomerDiagnosticReport: DiagnosticReport = {\n resourceType: 'DiagnosticReport',\n id: '123',\n meta: {\n versionId: '1',\n lastUpdated: '2020-01-02T12:00:00Z',\n author: {\n reference: 'Practitioner/123',\n },\n },\n subject: createReference(HomerSimpson),\n basedOn: [createReference(HomerServiceRequest)],\n specimen: [createReference(HomerSimpsonSpecimen)],\n resultsInterpreter: [createReference(DrAliceSmith)],\n result: [\n createReference(HomerObservation1),\n createReference(HomerObservation2),\n createReference(HomerObservation3),\n createReference(HomerObservation4),\n createReference(HomerObservation5),\n createReference(HomerObservation6),\n createReference(HomerObservation7),\n createReference(HomerObservation8),\n ],\n};\n\nexport const SimpsonsFamily: Group = {\n resourceType: 'Group',\n id: 'simpsons-family',\n type: 'person',\n actual: true,\n member: [\n { entity: createReference(HomerSimpson) },\n { entity: createReference(MargeSimpson) },\n { entity: createReference(BartSimpson) },\n { entity: createReference(LisaSimpson) },\n ],\n};\n","import { AuditEvent, Subscription } from '@medplum/fhirtypes';\n\nexport const ExampleSubscription: Subscription = {\n resourceType: 'Subscription',\n id: '123',\n meta: {\n versionId: '456',\n },\n};\n\nexport const ExampleAuditEvent: AuditEvent = {\n resourceType: 'AuditEvent',\n id: '123',\n meta: {\n lastUpdated: new Date().toISOString(),\n versionId: '456',\n author: {\n reference: 'Practitioner/123',\n },\n },\n};\n","import { ValueSet } from '@medplum/fhirtypes';\n\nexport const exampleValueSet: ValueSet = {\n resourceType: 'ValueSet',\n expansion: {\n contains: [\n {\n system: 'x',\n code: 'test-code',\n display: 'Test Display',\n },\n ],\n },\n};\n","import { createReference, getReferenceString } from '@medplum/core';\nimport { PlanDefinition, Questionnaire, QuestionnaireResponse, RequestGroup, Task } from '@medplum/fhirtypes';\nimport { DrAliceSmith } from './alice';\nimport { HomerSimpson } from './simpsons';\n\nexport const ExampleWorkflowQuestionnaire1: Questionnaire = {\n resourceType: 'Questionnaire',\n id: 'workflow-questionnaire-1',\n name: 'Patient Registration',\n title: 'Patient Registration',\n subjectType: ['Patient'],\n item: [\n {\n linkId: '1',\n text: 'First question',\n type: 'string',\n },\n ],\n};\n\nexport const ExampleWorkflowQuestionnaire2: Questionnaire = {\n resourceType: 'Questionnaire',\n id: 'workflow-questionnaire-2',\n name: 'Surgery History',\n title: 'Surgery History',\n subjectType: ['Patient'],\n item: [\n {\n linkId: '1',\n text: 'First question',\n type: 'string',\n },\n ],\n};\n\nexport const ExampleWorkflowQuestionnaire3: Questionnaire = {\n resourceType: 'Questionnaire',\n id: 'workflow-questionnaire-3',\n name: 'Family Health History',\n title: 'Family Health History',\n subjectType: ['Patient'],\n item: [\n {\n linkId: '1',\n text: 'First question',\n type: 'string',\n },\n ],\n};\n\nexport const ExampleWorkflowPlanDefinition: PlanDefinition = {\n resourceType: 'PlanDefinition',\n id: 'workflow-plan-definition-1',\n title: 'Example Plan Definition',\n action: [\n {\n title: ExampleWorkflowQuestionnaire1.title,\n definitionCanonical: getReferenceString(ExampleWorkflowQuestionnaire1),\n },\n {\n title: ExampleWorkflowQuestionnaire2.title,\n definitionCanonical: getReferenceString(ExampleWorkflowQuestionnaire2),\n },\n {\n title: ExampleWorkflowQuestionnaire3.title,\n definitionCanonical: getReferenceString(ExampleWorkflowQuestionnaire3),\n },\n ],\n};\n\nexport const ExampleWorkflowQuestionnaireResponse1: QuestionnaireResponse = {\n resourceType: 'QuestionnaireResponse',\n id: 'workflow-questionnaire-response-1',\n questionnaire: getReferenceString(ExampleWorkflowQuestionnaire1),\n subject: createReference(HomerSimpson),\n source: createReference(HomerSimpson),\n};\n\n// Based on: http://build.fhir.org/ig/HL7/sdc/Task-example.json.html\nexport const ExampleWorkflowTask1: Task = {\n resourceType: 'Task',\n id: 'workflow-task-1',\n status: 'completed',\n meta: { author: createReference(HomerSimpson) },\n requester: createReference(DrAliceSmith),\n input: [{ valueReference: createReference(ExampleWorkflowQuestionnaire1) }],\n output: [{ valueReference: createReference(ExampleWorkflowQuestionnaireResponse1) }],\n};\n\nexport const ExampleWorkflowTask2: Task = {\n resourceType: 'Task',\n id: 'workflow-task-2',\n status: 'requested',\n meta: { author: createReference(DrAliceSmith) },\n requester: createReference(DrAliceSmith),\n input: [{ valueReference: createReference(ExampleWorkflowQuestionnaire2) }],\n};\n\nexport const ExampleWorkflowTask3: Task = {\n resourceType: 'Task',\n id: 'workflow-task-3',\n status: 'requested',\n meta: { author: createReference(DrAliceSmith) },\n requester: createReference(DrAliceSmith),\n input: [{ valueReference: createReference(ExampleWorkflowQuestionnaire3) }],\n};\n\nexport const ExampleWorkflowRequestGroup: RequestGroup = {\n resourceType: 'RequestGroup',\n id: 'workflow-request-group-1',\n instantiatesCanonical: [getReferenceString(ExampleWorkflowPlanDefinition)],\n status: 'active',\n action: [\n {\n title: ExampleWorkflowQuestionnaire1.title,\n resource: createReference(ExampleWorkflowTask1),\n },\n {\n title: ExampleWorkflowQuestionnaire2.title,\n resource: createReference(ExampleWorkflowTask2),\n },\n {\n title: ExampleWorkflowQuestionnaire3.title,\n resource: createReference(ExampleWorkflowTask3),\n },\n ],\n};\n","import { ClientApplication } from '@medplum/fhirtypes';\n\nexport const ExampleSmartClientApplication: ClientApplication = {\n resourceType: 'ClientApplication',\n id: 'smart-client-app',\n name: 'Inferno Client',\n description: 'Client application used for Inferno ONC compliance testing',\n redirectUri: 'https://inferno.healthit.gov/suites/custom/smart/redirect',\n launchUri: 'https://inferno.healthit.gov/suites/custom/smart/launch',\n};\n","import {\n allOk,\n badRequest,\n getStatus,\n indexStructureDefinition,\n isOk,\n LoginState,\n MedplumClient,\n OperationOutcomeError,\n ProfileResource,\n} from '@medplum/core';\nimport { FhirRequest, FhirRouter, HttpMethod, MemoryRepository } from '@medplum/fhir-router';\nimport { Binary, Resource, SearchParameter, StructureDefinition, UserConfiguration } from '@medplum/fhirtypes';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n/** @ts-ignore */\nimport type { CustomTableLayout, TDocumentDefinitions, TFontDictionary } from 'pdfmake/interfaces';\nimport {\n BartSimpson,\n DifferentOrganization,\n DrAliceSmith,\n DrAliceSmithPreviousVersion,\n DrAliceSmithSchedule,\n DrAliceSmithSlots,\n ExampleBot,\n ExampleClient,\n ExampleQuestionnaire,\n ExampleQuestionnaireResponse,\n ExampleSubscription,\n exampleValueSet,\n HomerCommunication,\n HomerDiagnosticReport,\n HomerEncounter,\n HomerMedia,\n HomerObservation1,\n HomerObservation2,\n HomerObservation3,\n HomerObservation4,\n HomerObservation5,\n HomerObservation6,\n HomerObservation7,\n HomerObservation8,\n HomerServiceRequest,\n HomerSimpson,\n HomerSimpsonPreviousVersion,\n HomerSimpsonSpecimen,\n TestOrganization,\n} from './mocks';\nimport { ExampleAccessPolicy, ExampleStatusValueSet, ExampleUserConfiguration } from './mocks/accesspolicy';\nimport SearchParameterList from './mocks/searchparameters.json';\nimport { ExampleSmartClientApplication } from './mocks/smart';\nimport StructureDefinitionList from './mocks/structuredefinitions.json';\nimport {\n ExampleWorkflowPlanDefinition,\n ExampleWorkflowQuestionnaire1,\n ExampleWorkflowQuestionnaire2,\n ExampleWorkflowQuestionnaire3,\n ExampleWorkflowQuestionnaireResponse1,\n ExampleWorkflowRequestGroup,\n ExampleWorkflowTask1,\n ExampleWorkflowTask2,\n ExampleWorkflowTask3,\n} from './mocks/workflow';\n\nexport interface MockClientOptions {\n readonly debug?: boolean;\n}\n\nexport class MockClient extends MedplumClient {\n readonly router: FhirRouter;\n readonly repo: MemoryRepository;\n readonly client: MockFetchClient;\n readonly debug: boolean;\n activeLoginOverride?: LoginState;\n\n constructor(clientOptions?: MockClientOptions) {\n const router = new FhirRouter();\n const repo = new MemoryRepository();\n const client = new MockFetchClient(router, repo, clientOptions?.debug);\n\n super({\n baseUrl: 'https://example.com/',\n clientId: 'my-client-id',\n createPdf: (\n docDefinition: TDocumentDefinitions,\n tableLayouts?: { [name: string]: CustomTableLayout },\n fonts?: TFontDictionary | undefined\n ) => client.mockCreatePdf(docDefinition, tableLayouts, fonts),\n fetch: (url: string, options: any) => {\n return client.mockFetch(url, options);\n },\n });\n\n this.router = router;\n this.repo = repo;\n this.client = client;\n this.debug = !!clientOptions?.debug;\n }\n\n clear(): void {\n super.clear();\n this.activeLoginOverride = undefined;\n }\n\n getProfile(): ProfileResource {\n return DrAliceSmith;\n }\n\n getUserConfiguration(): UserConfiguration | undefined {\n return {\n resourceType: 'UserConfiguration',\n menu: [\n {\n title: 'Favorites',\n link: [\n { name: 'Patients', target: '/Patient' },\n { name: 'Active Orders', target: '/ServiceRequest?status=active' },\n { name: 'Completed Orders', target: '/ServiceRequest?status=completed' },\n ],\n },\n {\n title: 'Admin',\n link: [\n { name: 'Project', target: '/admin/project' },\n { name: 'Batch', target: '/batch' },\n ],\n },\n ],\n };\n }\n\n setActiveLoginOverride(activeLoginOverride: LoginState): void {\n this.activeLoginOverride = activeLoginOverride;\n }\n\n getActiveLogin(): LoginState | undefined {\n if (this.activeLoginOverride !== undefined) {\n return this.activeLoginOverride;\n }\n return super.getActiveLogin();\n }\n\n async createBinary(\n data: string | File | Blob | Uint8Array,\n filename: string | undefined,\n contentType: string,\n onProgress?: (e: ProgressEvent) => void\n ): Promise<Binary> {\n if (filename?.endsWith('.exe')) {\n return Promise.reject(badRequest('Invalid file type'));\n }\n\n if (onProgress) {\n onProgress({ loaded: 0, lengthComputable: false } as ProgressEvent);\n onProgress({ loaded: 0, total: 100, lengthComputable: true } as ProgressEvent);\n onProgress({ loaded: 100, total: 100, lengthComputable: true } as ProgressEvent);\n }\n\n return {\n resourceType: 'Binary',\n contentType,\n url: 'https://example.com/binary/123',\n };\n }\n}\n\nclass MockFetchClient {\n readonly router: FhirRouter;\n readonly repo: MemoryRepository;\n initialized = false;\n initPromise?: Promise<void>;\n\n constructor(router: FhirRouter, repo: MemoryRepository, readonly debug = false) {\n this.router = router;\n this.repo = new MemoryRepository();\n }\n\n async mockFetch(url: string, options: any): Promise<any> {\n if (!this.initialized) {\n if (!this.initPromise) {\n this.initPromise = this.initMockRepo();\n }\n await this.initPromise;\n this.initialized = true;\n }\n\n const method = options.method || 'GET';\n const path = url.replace('https://example.com/', '');\n\n if (this.debug) {\n console.log('MockClient', method, path);\n }\n\n const response = await this.mockHandler(method, path, options);\n\n if (this.debug && !response) {\n console.log('MockClient: not found', method, path);\n }\n\n if (this.debug) {\n console.log('MockClient', JSON.stringify(response, null, 2));\n }\n\n if (response?.resourceType === 'OperationOutcome' && !isOk(response)) {\n return Promise.reject(response);\n }\n\n return Promise.resolve({\n ok: true,\n status: response?.resourceType === 'OperationOutcome' ? getStatus(response) : 200,\n blob: () => Promise.resolve(response),\n json: () => Promise.resolve(response),\n });\n }\n\n mockCreatePdf(\n docDefinition: TDocumentDefinitions,\n tableLayouts?: { [name: string]: CustomTableLayout },\n fonts?: TFontDictionary | undefined\n ): Promise<any> {\n if (this.debug) {\n console.log(`Mock Client: createPdf(`);\n console.log(` ${JSON.stringify(docDefinition, null, 2)},`);\n console.log(` ${JSON.stringify(tableLayouts, null, 2)},`);\n console.log(` ${JSON.stringify(fonts, null, 2)});`);\n }\n return Promise.resolve({});\n }\n\n private async mockHandler(method: HttpMethod, path: string, options: any): Promise<any> {\n if (path.startsWith('admin/')) {\n return this.mockAdminHandler(method, path);\n } else if (path.startsWith('auth/')) {\n return this.mockAuthHandler(method, path, options);\n } else if (path.startsWith('oauth2/')) {\n return this.mockOAuthHandler(method, path, options);\n } else if (path.startsWith('fhir/R4')) {\n return this.mockFhirHandler(method, path, options);\n } else {\n return null;\n }\n }\n\n private mockAdminHandler(_method: string, path: string): any {\n if (path.startsWith('admin/projects/123')) {\n return {\n project: { id: '123', name: 'Project 123' },\n members: [\n { id: '123', profile: { reference: 'Practitioner/123', display: 'Alice Smith' }, role: 'owner' },\n { id: '888', profile: { reference: 'ClientApplication/123', display: 'Test Client' }, role: 'client' },\n { id: '999', profile: { reference: 'Bot/123', display: 'Test Bot' }, role: 'bot' },\n ],\n };\n }\n\n return {\n ok: true,\n };\n }\n\n private mockAuthHandler(method: HttpMethod, path: string, options: any): any {\n if (path.startsWith('auth/method')) {\n return {};\n }\n\n if (path.startsWith('auth/changepassword')) {\n return this.mockChangePasswordHandler(method, path, options);\n }\n\n if (path.startsWith('auth/login')) {\n return this.mockLoginHandler(method, path, options);\n }\n\n if (path.startsWith('auth/setpassword')) {\n return this.mockSetPasswordHandler(method, path, options);\n }\n\n if (path.startsWith('auth/newuser')) {\n return this.mockNewUserHandler(method, path, options);\n }\n\n if (path.startsWith('auth/newproject') || path.startsWith('auth/newpatient') || path.startsWith('auth/scope')) {\n return {\n login: '123',\n code: 'xyz',\n };\n }\n\n if (path.startsWith('auth/resetpassword')) {\n return this.mockResetPasswordHandler(method, path, options);\n }\n\n if (path.startsWith('auth/me')) {\n return {\n profile: DrAliceSmith,\n security: {\n mfaEnrolled: false,\n sessions: [\n {\n id: '123',\n lastUpdated: new Date().toISOString(),\n authMethod: 'password',\n remoteAddress: '5.5.5.5',\n browser: 'Chrome',\n os: 'Linux',\n },\n {\n id: '456',\n lastUpdated: new Date().toISOString(),\n authMethod: 'password',\n remoteAddress: '6.6.6.6',\n browser: 'Chrome',\n os: 'Android',\n },\n ],\n },\n };\n }\n\n if (path.startsWith('auth/mfa/status')) {\n return {\n enrolled: false,\n enrollUri: 'otpauth://totp/medplum.com:alice.smith%40example',\n };\n }\n\n if (path.startsWith('auth/mfa/enroll')) {\n return allOk;\n }\n\n return null;\n }\n\n private mockChangePasswordHandler(_method: string, _path: string, options: any): any {\n const { body } = options;\n const { oldPassword } = JSON.parse(body);\n if (oldPassword === 'orange') {\n return allOk;\n } else {\n return {\n resourceType: 'OperationOutcome',\n issue: [\n {\n expression: ['oldPassword'],\n details: {\n text: 'Incorrect password',\n },\n },\n ],\n };\n }\n }\n\n private mockLoginHandler(_method: string, _path: string, options: any): any {\n const { body } = options;\n const { password } = JSON.parse(body);\n if (password === 'password') {\n return {\n login: '123',\n code: 'xyz',\n };\n } else {\n return {\n resourceType: 'OperationOutcome',\n issue: [\n {\n expression: ['password'],\n details: {\n text: 'Invalid password',\n },\n },\n ],\n };\n }\n }\n\n private mockSetPasswordHandler(_method: string, _path: string, options: any): any {\n const { body } = options;\n const { password } = JSON.parse(body);\n if (password === 'orange') {\n return allOk;\n } else {\n return {\n resourceType: 'OperationOutcome',\n issue: [\n {\n expression: ['password'],\n details: {\n text: 'Invalid password',\n },\n },\n ],\n };\n }\n }\n\n private mockNewUserHandler(_method: string, _path: string, options: any): any {\n const { body } = options;\n const { email, password } = JSON.parse(body);\n if (email === 'george@example.com' && password === 'password') {\n return allOk;\n } else {\n return {\n resourceType: 'OperationOutcome',\n issue: [\n {\n details: {\n text: 'Invalid',\n },\n },\n ],\n };\n }\n }\n\n private mockResetPasswordHandler(_method: string, _path: string, options: any): any {\n const { body } = options;\n const { email } = JSON.parse(body);\n if (email === 'admin@example.com') {\n return allOk;\n } else {\n return {\n resourceType: 'OperationOutcome',\n issue: [\n {\n expression: ['email'],\n details: {\n text: 'Email not found',\n },\n },\n ],\n };\n }\n }\n\n private mockOAuthHandler(_method: string, path: string, _options: any): any {\n if (path.startsWith('oauth2/token')) {\n return {\n access_token: 'header.' + window.btoa(JSON.stringify({ client_id: 'my-client-id' })) + '.signature',\n };\n }\n\n return null;\n }\n\n private async initMockRepo(): Promise<void> {\n const defaultResources = [\n HomerSimpsonPreviousVersion,\n HomerSimpson,\n ExampleAccessPolicy,\n ExampleStatusValueSet,\n ExampleUserConfiguration,\n ExampleBot,\n ExampleClient,\n HomerDiagnosticReport,\n HomerEncounter,\n HomerCommunication,\n HomerMedia,\n HomerObservation1,\n HomerObservation2,\n HomerObservation3,\n HomerObservation4,\n HomerObservation5,\n HomerObservation6,\n HomerObservation7,\n HomerObservation8,\n HomerSimpsonSpecimen,\n TestOrganization,\n DifferentOrganization,\n ExampleQuestionnaire,\n ExampleQuestionnaireResponse,\n HomerServiceRequest,\n ExampleSubscription,\n BartSimpson,\n DrAliceSmithPreviousVersion,\n DrAliceSmith,\n DrAliceSmithSchedule,\n ExampleWorkflowQuestionnaire1,\n ExampleWorkflowQuestionnaire2,\n ExampleWorkflowQuestionnaire3,\n ExampleWorkflowPlanDefinition,\n ExampleWorkflowQuestionnaireResponse1,\n ExampleWorkflowTask1,\n ExampleWorkflowTask2,\n ExampleWorkflowTask3,\n ExampleWorkflowRequestGroup,\n ExampleSmartClientApplication,\n ];\n\n for (const resource of defaultResources) {\n await this.repo.createResource(resource);\n }\n\n for (const structureDefinition of StructureDefinitionList as StructureDefinition[]) {\n indexStructureDefinition(structureDefinition);\n await this.repo.createResource(structureDefinition);\n }\n\n for (const searchParameter of SearchParameterList) {\n await this.repo.createResource(searchParameter as SearchParameter);\n }\n\n DrAliceSmithSlots.forEach((slot) => this.repo.createResource(slot));\n }\n\n private async mockFhirHandler(method: HttpMethod, url: string, options: any): Promise<Resource> {\n if (url.startsWith('fhir/R4/ValueSet/$expand')) {\n return exampleValueSet;\n }\n\n const parsedUrl = new URL(url, 'https://example.com');\n\n let pathname = parsedUrl.pathname;\n if (pathname.includes('fhir/R4')) {\n pathname = pathname.substring(pathname.indexOf('fhir/R4') + 7);\n }\n\n let body = undefined;\n if (options.body) {\n body = JSON.parse(options.body);\n }\n\n const request: FhirRequest = {\n method,\n pathname,\n body,\n params: Object.create(null),\n query: Object.fromEntries(parsedUrl.searchParams),\n };\n\n const result = await this.router.handleRequest(request, this.repo);\n if (result.length === 1) {\n if (!isOk(result[0])) {\n throw new OperationOutcomeError(result[0]);\n }\n return result[0];\n } else {\n return result[1];\n }\n }\n}\n"],"names":["createReference","getReferenceString","MedplumClient","FhirRouter","MemoryRepository","badRequest","isOk","getStatus","allOk","indexStructureDefinition","OperationOutcomeError"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/mocks/accesspolicy.ts","../../src/mocks/alice.ts","../../src/mocks/bot.ts","../../src/mocks/questionnaire.ts","../../src/mocks/simpsons.ts","../../src/mocks/subscription.ts","../../src/mocks/valueset.ts","../../src/mocks/workflow.ts","../../src/mocks/project.ts","../../src/mocks/smart.ts","../../src/client.ts"],"sourcesContent":["import { AccessPolicy, UserConfiguration, ValueSet } from '@medplum/fhirtypes';\n\nexport const ExampleAccessPolicy: AccessPolicy = {\n resourceType: 'AccessPolicy',\n id: '123',\n name: 'Example Access Policy',\n};\n\nexport const ExampleStatusValueSet: ValueSet = {\n resourceType: 'ValueSet',\n id: 'example-statuses',\n compose: {\n include: [\n {\n concept: [\n { code: 'ORDERED' },\n { code: 'SENT_TO_CUSTOMER' },\n { code: 'SENT_BACK_TO_LAB' },\n { code: 'LAB_PROCESSED' },\n { code: 'LAB_COMPLETE' },\n ],\n },\n ],\n },\n};\n\nexport const ExampleUserConfiguration: UserConfiguration = {\n resourceType: 'UserConfiguration',\n id: '123',\n name: 'Example User Configuration',\n option: [\n {\n id: 'statusValueSet',\n valueString: 'ValueSet/example-statuses',\n },\n ],\n};\n","import { createReference } from '@medplum/core';\nimport { Organization, Practitioner, Schedule, Slot } from '@medplum/fhirtypes';\n\nexport const TestOrganization: Organization = {\n resourceType: 'Organization',\n id: '123',\n meta: {\n versionId: '1',\n },\n name: 'Test Organization',\n};\n\nexport const DifferentOrganization: Organization = {\n resourceType: 'Organization',\n id: '456',\n meta: {\n versionId: '1',\n },\n name: 'Different',\n};\n\nexport const DrAliceSmith: Practitioner = {\n resourceType: 'Practitioner',\n id: '123',\n meta: {\n versionId: '2',\n lastUpdated: '2021-01-02T12:00:00Z',\n author: {\n reference: 'Practitioner/123',\n },\n },\n name: [\n {\n given: ['Alice'],\n family: 'Smith',\n },\n ],\n photo: [\n {\n contentType: 'image/png',\n url: 'https://www.medplum.com/img/cdc-femaledoc.png',\n },\n ],\n};\n\nexport const DrAliceSmithPreviousVersion: Practitioner = {\n resourceType: 'Practitioner',\n id: '123',\n meta: {\n versionId: '1',\n lastUpdated: '2021-01-01T12:00:00Z',\n author: {\n reference: 'Practitioner/123',\n },\n },\n name: [{ given: ['Medplum'], family: 'Admin' }],\n};\n\nexport const DrAliceSmithSchedule: Schedule = {\n resourceType: 'Schedule',\n id: 'alice-smith-schedule',\n actor: [\n {\n reference: 'Practitioner/123',\n display: 'Dr. Alice Smith',\n },\n ],\n};\n\nexport const DrAliceSmithSlots: Slot[] = (() => {\n const schedule = createReference(DrAliceSmithSchedule);\n const result: Slot[] = [];\n const slotDate = new Date();\n for (let day = 0; day < 60; day++) {\n for (const hour of [9, 10, 11, 13, 14, 15]) {\n slotDate.setHours(hour, 0, 0, 0);\n result.push({\n resourceType: 'Slot',\n id: `slot-${day}-${hour}`,\n start: slotDate.toISOString(),\n schedule,\n });\n }\n slotDate.setDate(slotDate.getDate() + 1);\n }\n return result;\n})();\n","import { Bot, ClientApplication } from '@medplum/fhirtypes';\n\nexport const ExampleBot: Bot = {\n resourceType: 'Bot',\n id: '123',\n name: 'Test Bot',\n code: 'console.log(\"hello world\");',\n};\n\nexport const ExampleClient: ClientApplication = {\n resourceType: 'ClientApplication',\n id: '123',\n name: 'Test Client',\n};\n","import { Questionnaire, QuestionnaireResponse } from '@medplum/fhirtypes';\n\nexport const ExampleQuestionnaire: Questionnaire = {\n resourceType: 'Questionnaire',\n id: '123',\n name: 'Vitals',\n title: 'Vitals',\n subjectType: ['Patient'],\n item: [\n {\n linkId: '1',\n text: 'First question',\n type: 'string',\n },\n ],\n};\n\nexport const ExampleQuestionnaireResponse: QuestionnaireResponse = {\n resourceType: 'QuestionnaireResponse',\n id: '123',\n questionnaire: 'Questionnaire/123',\n subject: {\n reference: 'Patient/123',\n },\n source: {\n reference: 'Practitioner/123',\n },\n};\n","import { createReference } from '@medplum/core';\nimport {\n Address,\n Communication,\n DiagnosticReport,\n Encounter,\n Group,\n Media,\n Observation,\n Patient,\n RelatedPerson,\n ServiceRequest,\n Specimen,\n} from '@medplum/fhirtypes';\nimport { DrAliceSmith } from './alice';\n\nconst SIMPSONS_ADDRESS: Address = {\n use: 'home',\n line: ['742 Evergreen Terrace'],\n city: 'Springfield',\n state: 'IL',\n postalCode: '12345',\n};\n\nexport const LisaSimpson: Patient = {\n resourceType: 'Patient',\n id: 'lisa-simpson',\n meta: {\n versionId: '1',\n lastUpdated: '2020-01-01T12:00:00Z',\n author: {\n reference: 'Practitioner/123',\n },\n },\n birthDate: '1981-05-09',\n name: [\n {\n given: ['Lisa'],\n family: 'Simpson',\n },\n ],\n photo: [\n {\n contentType: 'image/jpeg',\n url: 'https://example.com/picture.jpg',\n },\n ],\n contact: [\n {\n name: { given: ['Homer'], family: 'Simpson' },\n address: {\n use: 'home',\n line: ['742 Evergreen Terrace'],\n city: 'Springfield',\n state: 'IL',\n postalCode: '12345',\n },\n telecom: [\n {\n system: 'phone',\n use: 'home',\n value: '555-1239',\n },\n {\n system: 'email',\n use: 'home',\n value: 'homer@thesimpsons.com',\n },\n ],\n },\n {\n name: { given: ['Marge'], family: 'Simpson' },\n address: {\n use: 'home',\n line: ['742 Evergreen Terrace'],\n city: 'Springfield',\n state: 'IL',\n postalCode: '12345',\n },\n telecom: [\n {\n system: 'phone',\n use: 'mobile',\n value: '139-1928',\n },\n {\n system: 'email',\n use: 'home',\n value: 'marge@thesimpsons.com',\n },\n ],\n },\n ],\n\n telecom: [\n {\n system: 'phone',\n use: 'home',\n value: '555-1239',\n },\n {\n system: 'email',\n use: 'home',\n value: 'lisa@thesimpsons.com',\n },\n ],\n};\n\nexport const BartSimpson: Patient = {\n resourceType: 'Patient',\n id: '555',\n meta: {\n versionId: '1',\n lastUpdated: '2020-01-01T12:00:00Z',\n author: {\n reference: 'Practitioner/123',\n },\n },\n birthDate: '1979-12-17',\n name: [\n {\n given: ['Bart'],\n family: 'Simpson',\n },\n ],\n photo: [\n {\n contentType: 'image/jpeg',\n url: 'https://example.com/picture.jpg',\n },\n ],\n telecom: [\n {\n system: 'phone',\n use: 'home',\n value: '555-1239',\n },\n {\n system: 'email',\n use: 'home',\n value: 'bart@thesimpsons.com',\n },\n ],\n};\n\nexport const HomerLisaRelatedPerson: RelatedPerson = {\n resourceType: 'RelatedPerson',\n id: 'homer-lisa-related-person',\n patient: createReference(LisaSimpson),\n address: [SIMPSONS_ADDRESS],\n telecom: [\n {\n system: 'phone',\n use: 'home',\n value: '555-7334',\n },\n {\n system: 'email',\n use: 'home',\n value: 'chunkylover53@aol.com',\n },\n ],\n relationship: [\n {\n text: 'father',\n coding: [{ system: 'http://terminology.hl7.org/CodeSystem/v3-RoleCode', code: 'FTH', display: 'father' }],\n },\n ],\n};\n\nexport const HomerBartRelatedPerson: RelatedPerson = {\n resourceType: 'RelatedPerson',\n id: 'homer-bart-related-person',\n patient: createReference(BartSimpson),\n address: [SIMPSONS_ADDRESS],\n telecom: [\n {\n system: 'phone',\n use: 'home',\n value: '555-7334',\n },\n {\n system: 'email',\n use: 'home',\n value: 'chunkylover53@aol.com',\n },\n ],\n relationship: [\n {\n text: 'father',\n coding: [{ system: 'http://terminology.hl7.org/CodeSystem/v3-RoleCode', code: 'FTH', display: 'father' }],\n },\n ],\n};\n\nexport const HomerSimpson: Patient = {\n resourceType: 'Patient',\n id: '123',\n gender: 'male',\n meta: {\n versionId: '2',\n lastUpdated: '2020-01-02T00:00:00.000Z',\n author: {\n reference: 'Practitioner/123',\n },\n },\n identifier: [\n { system: 'abc', value: '123' },\n { system: 'def', value: '456' },\n ],\n active: true,\n birthDate: '1956-05-12',\n name: [\n {\n given: ['Homer'],\n family: 'Simpson',\n },\n ],\n photo: [\n {\n contentType: 'image/png',\n url: 'https://www.medplum.com/img/homer-simpson.png',\n },\n ],\n telecom: [\n {\n system: 'phone',\n use: 'home',\n value: '555-7334',\n },\n {\n system: 'email',\n use: 'home',\n value: 'chunkylover53@aol.com',\n },\n ],\n address: [\n {\n use: 'home',\n line: ['742 Evergreen Terrace'],\n city: 'Springfield',\n state: 'IL',\n postalCode: '12345',\n },\n ],\n link: [\n { other: createReference(HomerLisaRelatedPerson), type: 'seealso' },\n { other: createReference(HomerBartRelatedPerson), type: 'seealso' },\n ],\n};\n\nexport const MargeSimpson: Patient = {\n resourceType: 'Patient',\n id: 'marge-simpson',\n gender: 'female',\n\n active: true,\n birthDate: '1961-08-23',\n name: [\n {\n given: ['Marge'],\n family: 'Simpson',\n },\n ],\n telecom: [\n {\n system: 'phone',\n use: 'home',\n value: '555-7334',\n },\n {\n system: 'email',\n use: 'home',\n value: 'margesimpson@aol.com',\n },\n ],\n address: [SIMPSONS_ADDRESS],\n};\n\nexport const HomerSimpsonPreviousVersion: Patient = {\n resourceType: 'Patient',\n id: '123',\n meta: {\n versionId: '1',\n lastUpdated: '2020-01-01T00:00:00.000Z',\n author: {\n reference: 'Practitioner/123',\n },\n },\n name: [\n {\n given: ['Homer'],\n family: 'Simpson',\n },\n ],\n photo: [\n {\n contentType: 'image/png',\n url: 'https://www.medplum.com/img/homer-simpson.png',\n },\n ],\n};\n\nexport const HomerEncounter: Encounter = {\n resourceType: 'Encounter',\n id: '123',\n meta: {\n versionId: '456',\n lastUpdated: '2020-01-01T00:00:00.000Z',\n author: {\n reference: 'Practitioner/123',\n },\n },\n};\n\nexport const HomerCommunication: Communication = {\n resourceType: 'Communication',\n id: '123',\n meta: {\n lastUpdated: '2020-01-01T12:00:00Z',\n author: {\n reference: 'Practitioner/123',\n },\n },\n encounter: createReference(HomerEncounter),\n payload: [\n {\n contentString: 'Hello world',\n },\n ],\n};\n\nexport const HomerMedia: Media = {\n resourceType: 'Media',\n id: '123',\n meta: {\n lastUpdated: '2020-01-01T12:00:00Z',\n author: {\n reference: 'Practitioner/123',\n },\n },\n encounter: createReference(HomerEncounter),\n content: {\n contentType: 'text/plain',\n url: 'https://example.com/test.txt',\n },\n};\n\nexport const HomerObservation1: Observation = {\n resourceType: 'Observation',\n id: '1',\n status: 'final',\n subject: {\n reference: 'Patient/123',\n display: 'Homer Simpson',\n },\n code: {\n text: 'Test 1',\n },\n valueString: 'test',\n};\n\nexport const HomerObservation2: Observation = {\n resourceType: 'Observation',\n id: '2',\n status: 'corrected',\n subject: {\n reference: 'Patient/123',\n display: 'Homer Simpson',\n },\n code: {\n text: 'Test 2',\n },\n valueQuantity: {\n value: 20,\n unit: 'x',\n },\n referenceRange: [\n {\n low: {\n value: 10,\n },\n },\n ],\n};\n\nexport const HomerObservation3: Observation = {\n resourceType: 'Observation',\n id: '3',\n status: 'final',\n subject: {\n reference: 'Patient/123',\n display: 'Homer Simpson',\n },\n code: {\n text: 'Test 3',\n },\n valueQuantity: {\n value: 30,\n unit: 'x',\n },\n referenceRange: [\n {\n high: {\n value: 50,\n },\n },\n ],\n};\n\nexport const HomerObservation4: Observation = {\n resourceType: 'Observation',\n id: '4',\n status: 'final',\n subject: {\n reference: 'Patient/123',\n display: 'Homer Simpson',\n },\n code: {\n text: 'Test 4',\n },\n valueQuantity: {\n value: 50,\n unit: 'x',\n comparator: '>',\n },\n referenceRange: [\n {\n low: {\n value: 10,\n unit: 'x',\n },\n high: {\n value: 50,\n unit: 'x',\n },\n },\n ],\n interpretation: [\n {\n text: 'HIGH',\n },\n ],\n};\n\nexport const HomerObservation5: Observation = {\n resourceType: 'Observation',\n id: '5',\n status: 'final',\n subject: {\n reference: 'Patient/123',\n display: 'Homer Simpson',\n },\n code: {\n text: 'Test 5',\n },\n valueQuantity: {\n value: 100,\n unit: 'x',\n },\n referenceRange: [{}],\n interpretation: [{}],\n};\n\nexport const HomerObservation6: Observation = {\n resourceType: 'Observation',\n id: '6',\n status: 'final',\n subject: {\n reference: 'Patient/123',\n display: 'Homer Simpson',\n },\n code: {\n text: 'Test 6',\n },\n component: [\n {\n valueQuantity: {\n value: 110,\n unit: 'mmHg',\n system: 'http://unitsofmeasure.org',\n },\n },\n {\n valueQuantity: {\n value: 75,\n unit: 'mmHg',\n system: 'http://unitsofmeasure.org',\n },\n },\n ],\n};\n\nexport const HomerObservation7: Observation = {\n resourceType: 'Observation',\n id: '7',\n status: 'final',\n subject: {\n reference: 'Patient/123',\n display: 'Homer Simpson',\n },\n code: {\n text: 'Test 7',\n },\n component: [\n {\n valueQuantity: {\n value: 1000,\n unit: 'mg/dL',\n system: 'http://unitsofmeasure.org',\n },\n },\n ],\n interpretation: [\n {\n coding: [\n {\n system: 'http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation',\n code: 'HH',\n display: 'Critical high',\n },\n ],\n },\n ],\n};\n\nexport const HomerObservation8: Observation = {\n resourceType: 'Observation',\n id: '8',\n status: 'final',\n subject: {\n reference: 'Patient/123',\n display: 'Homer Simpson',\n },\n code: {\n text: 'Test 8',\n },\n component: [\n {\n valueString: 'REACTIVE',\n },\n ],\n referenceRange: [\n {\n text: 'NEGATIVE',\n },\n ],\n interpretation: [\n {\n coding: [\n {\n system: 'http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation',\n code: 'RR',\n display: 'Reactive',\n },\n ],\n },\n ],\n};\n\nexport const HomerSimpsonSpecimen: Specimen = {\n id: '123',\n resourceType: 'Specimen',\n subject: createReference(HomerSimpson),\n collection: {\n collectedDateTime: '2020-01-01T12:00:00Z',\n },\n note: [\n { text: 'Specimen hemolyzed. Results may be affected.' },\n { text: 'Specimen lipemic. Results may be affected.' },\n ],\n};\n\nexport const HomerServiceRequest: ServiceRequest = {\n resourceType: 'ServiceRequest',\n id: '123',\n meta: {\n versionId: '1',\n lastUpdated: '2020-01-01T12:00:00Z',\n author: {\n reference: 'Practitioner/123',\n },\n },\n identifier: [\n {\n system: 'https://example.com',\n value: '9001',\n },\n ],\n code: {\n coding: [\n {\n system: 'http://snomed.info/sct',\n code: 'SERVICE_REQUEST_CODE',\n },\n ],\n },\n subject: {\n reference: 'Patient/123',\n display: 'Homer Simpson',\n },\n status: 'active',\n orderDetail: [\n {\n text: 'ORDERED',\n },\n ],\n specimen: [createReference(HomerSimpsonSpecimen)],\n authoredOn: '2020-01-01T12:00:00Z',\n};\n\nexport const HomerDiagnosticReport: DiagnosticReport = {\n resourceType: 'DiagnosticReport',\n id: '123',\n meta: {\n versionId: '1',\n lastUpdated: '2020-01-02T12:00:00Z',\n author: {\n reference: 'Practitioner/123',\n },\n },\n subject: createReference(HomerSimpson),\n basedOn: [createReference(HomerServiceRequest)],\n specimen: [createReference(HomerSimpsonSpecimen)],\n resultsInterpreter: [createReference(DrAliceSmith)],\n result: [\n createReference(HomerObservation1),\n createReference(HomerObservation2),\n createReference(HomerObservation3),\n createReference(HomerObservation4),\n createReference(HomerObservation5),\n createReference(HomerObservation6),\n createReference(HomerObservation7),\n createReference(HomerObservation8),\n ],\n};\n\nexport const SimpsonsFamily: Group = {\n resourceType: 'Group',\n id: 'simpsons-family',\n type: 'person',\n actual: true,\n member: [\n { entity: createReference(HomerSimpson) },\n { entity: createReference(MargeSimpson) },\n { entity: createReference(BartSimpson) },\n { entity: createReference(LisaSimpson) },\n ],\n};\n","import { AuditEvent, Subscription } from '@medplum/fhirtypes';\n\nexport const ExampleSubscription: Subscription = {\n resourceType: 'Subscription',\n id: '123',\n meta: {\n versionId: '456',\n },\n};\n\nexport const ExampleAuditEvent: AuditEvent = {\n resourceType: 'AuditEvent',\n id: '123',\n meta: {\n lastUpdated: new Date().toISOString(),\n versionId: '456',\n author: {\n reference: 'Practitioner/123',\n },\n },\n};\n","import { ValueSet } from '@medplum/fhirtypes';\n\nexport const exampleValueSet: ValueSet = {\n resourceType: 'ValueSet',\n expansion: {\n contains: [\n {\n system: 'x',\n code: 'test-code',\n display: 'Test Display',\n },\n ],\n },\n};\n","import { createReference, getReferenceString } from '@medplum/core';\nimport { PlanDefinition, Questionnaire, QuestionnaireResponse, RequestGroup, Task } from '@medplum/fhirtypes';\nimport { DrAliceSmith } from './alice';\nimport { HomerSimpson } from './simpsons';\n\nexport const ExampleWorkflowQuestionnaire1: Questionnaire = {\n resourceType: 'Questionnaire',\n id: 'workflow-questionnaire-1',\n name: 'Patient Registration',\n title: 'Patient Registration',\n subjectType: ['Patient'],\n item: [\n {\n linkId: '1',\n text: 'First question',\n type: 'string',\n },\n ],\n};\n\nexport const ExampleWorkflowQuestionnaire2: Questionnaire = {\n resourceType: 'Questionnaire',\n id: 'workflow-questionnaire-2',\n name: 'Surgery History',\n title: 'Surgery History',\n subjectType: ['Patient'],\n item: [\n {\n linkId: '1',\n text: 'First question',\n type: 'string',\n },\n ],\n};\n\nexport const ExampleWorkflowQuestionnaire3: Questionnaire = {\n resourceType: 'Questionnaire',\n id: 'workflow-questionnaire-3',\n name: 'Family Health History',\n title: 'Family Health History',\n subjectType: ['Patient'],\n item: [\n {\n linkId: '1',\n text: 'First question',\n type: 'string',\n },\n ],\n};\n\nexport const ExampleWorkflowPlanDefinition: PlanDefinition = {\n resourceType: 'PlanDefinition',\n id: 'workflow-plan-definition-1',\n title: 'Example Plan Definition',\n action: [\n {\n title: ExampleWorkflowQuestionnaire1.title,\n definitionCanonical: getReferenceString(ExampleWorkflowQuestionnaire1),\n },\n {\n title: ExampleWorkflowQuestionnaire2.title,\n definitionCanonical: getReferenceString(ExampleWorkflowQuestionnaire2),\n },\n {\n title: ExampleWorkflowQuestionnaire3.title,\n definitionCanonical: getReferenceString(ExampleWorkflowQuestionnaire3),\n },\n ],\n};\n\nexport const ExampleWorkflowQuestionnaireResponse1: QuestionnaireResponse = {\n resourceType: 'QuestionnaireResponse',\n id: 'workflow-questionnaire-response-1',\n questionnaire: getReferenceString(ExampleWorkflowQuestionnaire1),\n subject: createReference(HomerSimpson),\n source: createReference(HomerSimpson),\n};\n\n// Based on: http://build.fhir.org/ig/HL7/sdc/Task-example.json.html\nexport const ExampleWorkflowTask1: Task = {\n resourceType: 'Task',\n id: 'workflow-task-1',\n status: 'completed',\n meta: { author: createReference(HomerSimpson) },\n requester: createReference(DrAliceSmith),\n input: [{ valueReference: createReference(ExampleWorkflowQuestionnaire1) }],\n output: [{ valueReference: createReference(ExampleWorkflowQuestionnaireResponse1) }],\n};\n\nexport const ExampleWorkflowTask2: Task = {\n resourceType: 'Task',\n id: 'workflow-task-2',\n status: 'requested',\n meta: { author: createReference(DrAliceSmith) },\n requester: createReference(DrAliceSmith),\n input: [{ valueReference: createReference(ExampleWorkflowQuestionnaire2) }],\n};\n\nexport const ExampleWorkflowTask3: Task = {\n resourceType: 'Task',\n id: 'workflow-task-3',\n status: 'requested',\n meta: { author: createReference(DrAliceSmith) },\n requester: createReference(DrAliceSmith),\n input: [{ valueReference: createReference(ExampleWorkflowQuestionnaire3) }],\n};\n\nexport const ExampleWorkflowRequestGroup: RequestGroup = {\n resourceType: 'RequestGroup',\n id: 'workflow-request-group-1',\n instantiatesCanonical: [getReferenceString(ExampleWorkflowPlanDefinition)],\n status: 'active',\n action: [\n {\n title: ExampleWorkflowQuestionnaire1.title,\n resource: createReference(ExampleWorkflowTask1),\n },\n {\n title: ExampleWorkflowQuestionnaire2.title,\n resource: createReference(ExampleWorkflowTask2),\n },\n {\n title: ExampleWorkflowQuestionnaire3.title,\n resource: createReference(ExampleWorkflowTask3),\n },\n ],\n};\n","import { createReference } from '@medplum/core';\nimport { Project, ProjectMembership } from '@medplum/fhirtypes';\nimport { DrAliceSmith } from './alice';\n\nexport const TestProject: Project = {\n resourceType: 'Project',\n id: '123',\n name: 'Project 123',\n};\n\nexport const TestProjectMembersihp: ProjectMembership = {\n resourceType: 'ProjectMembership',\n id: '456',\n project: createReference(TestProject),\n profile: createReference(DrAliceSmith),\n};\n","import { ClientApplication } from '@medplum/fhirtypes';\n\nexport const ExampleSmartClientApplication: ClientApplication = {\n resourceType: 'ClientApplication',\n id: 'smart-client-app',\n name: 'Inferno Client',\n description: 'Client application used for Inferno ONC compliance testing',\n redirectUri: 'https://inferno.healthit.gov/suites/custom/smart/redirect',\n launchUri: 'https://inferno.healthit.gov/suites/custom/smart/launch',\n};\n","import {\n allOk,\n badRequest,\n getStatus,\n indexStructureDefinition,\n isOk,\n LoginState,\n MedplumClient,\n MedplumClientOptions,\n OperationOutcomeError,\n ProfileResource,\n} from '@medplum/core';\nimport { FhirRequest, FhirRouter, HttpMethod, MemoryRepository } from '@medplum/fhir-router';\nimport { Binary, Resource, SearchParameter, StructureDefinition, UserConfiguration } from '@medplum/fhirtypes';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n/** @ts-ignore */\nimport type { CustomTableLayout, TDocumentDefinitions, TFontDictionary } from 'pdfmake/interfaces';\nimport {\n BartSimpson,\n DifferentOrganization,\n DrAliceSmith,\n DrAliceSmithPreviousVersion,\n DrAliceSmithSchedule,\n DrAliceSmithSlots,\n ExampleBot,\n ExampleClient,\n ExampleQuestionnaire,\n ExampleQuestionnaireResponse,\n ExampleSubscription,\n exampleValueSet,\n HomerCommunication,\n HomerDiagnosticReport,\n HomerEncounter,\n HomerMedia,\n HomerObservation1,\n HomerObservation2,\n HomerObservation3,\n HomerObservation4,\n HomerObservation5,\n HomerObservation6,\n HomerObservation7,\n HomerObservation8,\n HomerServiceRequest,\n HomerSimpson,\n HomerSimpsonPreviousVersion,\n HomerSimpsonSpecimen,\n TestOrganization,\n} from './mocks';\nimport { ExampleAccessPolicy, ExampleStatusValueSet, ExampleUserConfiguration } from './mocks/accesspolicy';\nimport { TestProject, TestProjectMembersihp } from './mocks/project';\nimport SearchParameterList from './mocks/searchparameters.json';\nimport { ExampleSmartClientApplication } from './mocks/smart';\nimport StructureDefinitionList from './mocks/structuredefinitions.json';\nimport {\n ExampleWorkflowPlanDefinition,\n ExampleWorkflowQuestionnaire1,\n ExampleWorkflowQuestionnaire2,\n ExampleWorkflowQuestionnaire3,\n ExampleWorkflowQuestionnaireResponse1,\n ExampleWorkflowRequestGroup,\n ExampleWorkflowTask1,\n ExampleWorkflowTask2,\n ExampleWorkflowTask3,\n} from './mocks/workflow';\n\nexport interface MockClientOptions extends MedplumClientOptions {\n readonly debug?: boolean;\n}\n\nexport class MockClient extends MedplumClient {\n readonly router: FhirRouter;\n readonly repo: MemoryRepository;\n readonly client: MockFetchClient;\n readonly debug: boolean;\n activeLoginOverride?: LoginState;\n\n constructor(clientOptions?: MockClientOptions) {\n const router = new FhirRouter();\n const repo = new MemoryRepository();\n const client = new MockFetchClient(router, repo, clientOptions?.debug);\n\n super({\n baseUrl: clientOptions?.baseUrl || 'https://example.com/',\n clientId: clientOptions?.clientId,\n storage: clientOptions?.storage,\n createPdf: (\n docDefinition: TDocumentDefinitions,\n tableLayouts?: { [name: string]: CustomTableLayout },\n fonts?: TFontDictionary | undefined\n ) => client.mockCreatePdf(docDefinition, tableLayouts, fonts),\n fetch: (url: string, options: any) => {\n return client.mockFetch(url, options);\n },\n });\n\n this.router = router;\n this.repo = repo;\n this.client = client;\n this.debug = !!clientOptions?.debug;\n }\n\n clear(): void {\n super.clear();\n this.activeLoginOverride = undefined;\n }\n\n getProfile(): ProfileResource {\n return DrAliceSmith;\n }\n\n getUserConfiguration(): UserConfiguration | undefined {\n return {\n resourceType: 'UserConfiguration',\n menu: [\n {\n title: 'Favorites',\n link: [\n { name: 'Patients', target: '/Patient' },\n { name: 'Active Orders', target: '/ServiceRequest?status=active' },\n { name: 'Completed Orders', target: '/ServiceRequest?status=completed' },\n ],\n },\n {\n title: 'Admin',\n link: [\n { name: 'Project', target: '/admin/project' },\n { name: 'Batch', target: '/batch' },\n ],\n },\n ],\n };\n }\n\n setActiveLoginOverride(activeLoginOverride: LoginState): void {\n this.activeLoginOverride = activeLoginOverride;\n }\n\n getActiveLogin(): LoginState | undefined {\n if (this.activeLoginOverride !== undefined) {\n return this.activeLoginOverride;\n }\n return super.getActiveLogin();\n }\n\n async createBinary(\n data: string | File | Blob | Uint8Array,\n filename: string | undefined,\n contentType: string,\n onProgress?: (e: ProgressEvent) => void\n ): Promise<Binary> {\n if (filename?.endsWith('.exe')) {\n return Promise.reject(badRequest('Invalid file type'));\n }\n\n if (onProgress) {\n onProgress({ loaded: 0, lengthComputable: false } as ProgressEvent);\n onProgress({ loaded: 0, total: 100, lengthComputable: true } as ProgressEvent);\n onProgress({ loaded: 100, total: 100, lengthComputable: true } as ProgressEvent);\n }\n\n return {\n resourceType: 'Binary',\n contentType,\n url: 'https://example.com/binary/123',\n };\n }\n}\n\nclass MockFetchClient {\n readonly router: FhirRouter;\n readonly repo: MemoryRepository;\n initialized = false;\n initPromise?: Promise<void>;\n\n constructor(router: FhirRouter, repo: MemoryRepository, readonly debug = false) {\n this.router = router;\n this.repo = new MemoryRepository();\n }\n\n async mockFetch(url: string, options: any): Promise<any> {\n if (!this.initialized) {\n if (!this.initPromise) {\n this.initPromise = this.initMockRepo();\n }\n await this.initPromise;\n this.initialized = true;\n }\n\n const method = options.method || 'GET';\n const path = url.replace('https://example.com/', '');\n\n if (this.debug) {\n console.log('MockClient', method, path);\n }\n\n const response = await this.mockHandler(method, path, options);\n\n if (this.debug && !response) {\n console.log('MockClient: not found', method, path);\n }\n\n if (this.debug) {\n console.log('MockClient', JSON.stringify(response, null, 2));\n }\n\n if (response?.resourceType === 'OperationOutcome' && !isOk(response)) {\n return Promise.reject(response);\n }\n\n return Promise.resolve({\n ok: true,\n status: response?.resourceType === 'OperationOutcome' ? getStatus(response) : 200,\n blob: () => Promise.resolve(response),\n json: () => Promise.resolve(response),\n });\n }\n\n mockCreatePdf(\n docDefinition: TDocumentDefinitions,\n tableLayouts?: { [name: string]: CustomTableLayout },\n fonts?: TFontDictionary | undefined\n ): Promise<any> {\n if (this.debug) {\n console.log(`Mock Client: createPdf(`);\n console.log(` ${JSON.stringify(docDefinition, null, 2)},`);\n console.log(` ${JSON.stringify(tableLayouts, null, 2)},`);\n console.log(` ${JSON.stringify(fonts, null, 2)});`);\n }\n return Promise.resolve({});\n }\n\n private async mockHandler(method: HttpMethod, path: string, options: any): Promise<any> {\n if (path.startsWith('admin/')) {\n return this.mockAdminHandler(method, path);\n } else if (path.startsWith('auth/')) {\n return this.mockAuthHandler(method, path, options);\n } else if (path.startsWith('oauth2/')) {\n return this.mockOAuthHandler(method, path, options);\n } else if (path.startsWith('fhir/R4')) {\n return this.mockFhirHandler(method, path, options);\n } else {\n return null;\n }\n }\n\n private async mockAdminHandler(_method: string, path: string): Promise<any> {\n const projectMatch = path.match(/^admin\\/projects\\/([\\w-]+)$/);\n if (projectMatch) {\n return {\n project: await this.repo.readResource('Project', projectMatch[1]),\n };\n }\n\n const membershipMatch = path.match(/^admin\\/projects\\/([\\w-]+)\\/members\\/([\\w-]+)$/);\n if (membershipMatch) {\n return this.repo.readResource('ProjectMembership', membershipMatch[2]);\n }\n\n return {\n ok: true,\n };\n }\n\n private mockAuthHandler(method: HttpMethod, path: string, options: any): any {\n if (path.startsWith('auth/method')) {\n return {};\n }\n\n if (path.startsWith('auth/changepassword')) {\n return this.mockChangePasswordHandler(method, path, options);\n }\n\n if (path.startsWith('auth/login')) {\n return this.mockLoginHandler(method, path, options);\n }\n\n if (path.startsWith('auth/setpassword')) {\n return this.mockSetPasswordHandler(method, path, options);\n }\n\n if (path.startsWith('auth/newuser')) {\n return this.mockNewUserHandler(method, path, options);\n }\n\n if (path.startsWith('auth/newproject') || path.startsWith('auth/newpatient') || path.startsWith('auth/scope')) {\n return {\n login: '123',\n code: 'xyz',\n };\n }\n\n if (path.startsWith('auth/resetpassword')) {\n return this.mockResetPasswordHandler(method, path, options);\n }\n\n if (path.startsWith('auth/me')) {\n return {\n profile: DrAliceSmith,\n security: {\n mfaEnrolled: false,\n sessions: [\n {\n id: '123',\n lastUpdated: new Date().toISOString(),\n authMethod: 'password',\n remoteAddress: '5.5.5.5',\n browser: 'Chrome',\n os: 'Linux',\n },\n {\n id: '456',\n lastUpdated: new Date().toISOString(),\n authMethod: 'password',\n remoteAddress: '6.6.6.6',\n browser: 'Chrome',\n os: 'Android',\n },\n ],\n },\n };\n }\n\n if (path.startsWith('auth/mfa/status')) {\n return {\n enrolled: false,\n enrollUri: 'otpauth://totp/medplum.com:alice.smith%40example',\n };\n }\n\n if (path.startsWith('auth/mfa/enroll')) {\n return allOk;\n }\n\n return null;\n }\n\n private mockChangePasswordHandler(_method: string, _path: string, options: any): any {\n const { body } = options;\n const { oldPassword } = JSON.parse(body);\n if (oldPassword === 'orange') {\n return allOk;\n } else {\n return {\n resourceType: 'OperationOutcome',\n issue: [\n {\n expression: ['oldPassword'],\n details: {\n text: 'Incorrect password',\n },\n },\n ],\n };\n }\n }\n\n private mockLoginHandler(_method: string, _path: string, options: any): any {\n const { body } = options;\n const { password } = JSON.parse(body);\n if (password === 'password') {\n return {\n login: '123',\n code: 'xyz',\n };\n } else {\n return {\n resourceType: 'OperationOutcome',\n issue: [\n {\n expression: ['password'],\n details: {\n text: 'Invalid password',\n },\n },\n ],\n };\n }\n }\n\n private mockSetPasswordHandler(_method: string, _path: string, options: any): any {\n const { body } = options;\n const { password } = JSON.parse(body);\n if (password === 'orange') {\n return allOk;\n } else {\n return {\n resourceType: 'OperationOutcome',\n issue: [\n {\n expression: ['password'],\n details: {\n text: 'Invalid password',\n },\n },\n ],\n };\n }\n }\n\n private mockNewUserHandler(_method: string, _path: string, options: any): any {\n const { body } = options;\n const { email, password } = JSON.parse(body);\n if (email === 'george@example.com' && password === 'password') {\n return allOk;\n } else {\n return {\n resourceType: 'OperationOutcome',\n issue: [\n {\n details: {\n text: 'Invalid',\n },\n },\n ],\n };\n }\n }\n\n private mockResetPasswordHandler(_method: string, _path: string, options: any): any {\n const { body } = options;\n const { email } = JSON.parse(body);\n if (email === 'admin@example.com') {\n return allOk;\n } else {\n return {\n resourceType: 'OperationOutcome',\n issue: [\n {\n expression: ['email'],\n details: {\n text: 'Email not found',\n },\n },\n ],\n };\n }\n }\n\n private mockOAuthHandler(_method: string, path: string, options: any): any {\n if (path.startsWith('oauth2/token')) {\n const clientId = (options.body as URLSearchParams).get('client_id') || 'my-client-id';\n return {\n access_token: 'header.' + base64Encode(JSON.stringify({ client_id: clientId })) + '.signature',\n };\n }\n\n return null;\n }\n\n private async initMockRepo(): Promise<void> {\n const defaultResources = [\n HomerSimpsonPreviousVersion,\n HomerSimpson,\n ExampleAccessPolicy,\n ExampleStatusValueSet,\n ExampleUserConfiguration,\n ExampleBot,\n ExampleClient,\n HomerDiagnosticReport,\n HomerEncounter,\n HomerCommunication,\n HomerMedia,\n HomerObservation1,\n HomerObservation2,\n HomerObservation3,\n HomerObservation4,\n HomerObservation5,\n HomerObservation6,\n HomerObservation7,\n HomerObservation8,\n HomerSimpsonSpecimen,\n TestOrganization,\n DifferentOrganization,\n ExampleQuestionnaire,\n ExampleQuestionnaireResponse,\n HomerServiceRequest,\n ExampleSubscription,\n BartSimpson,\n DrAliceSmithPreviousVersion,\n DrAliceSmith,\n DrAliceSmithSchedule,\n ExampleWorkflowQuestionnaire1,\n ExampleWorkflowQuestionnaire2,\n ExampleWorkflowQuestionnaire3,\n ExampleWorkflowPlanDefinition,\n ExampleWorkflowQuestionnaireResponse1,\n ExampleWorkflowTask1,\n ExampleWorkflowTask2,\n ExampleWorkflowTask3,\n ExampleWorkflowRequestGroup,\n ExampleSmartClientApplication,\n TestProject,\n TestProjectMembersihp,\n ];\n\n for (const resource of defaultResources) {\n await this.repo.createResource(resource);\n }\n\n for (const structureDefinition of StructureDefinitionList as StructureDefinition[]) {\n indexStructureDefinition(structureDefinition);\n await this.repo.createResource(structureDefinition);\n }\n\n for (const searchParameter of SearchParameterList) {\n await this.repo.createResource(searchParameter as SearchParameter);\n }\n\n DrAliceSmithSlots.forEach((slot) => this.repo.createResource(slot));\n }\n\n private async mockFhirHandler(method: HttpMethod, url: string, options: any): Promise<Resource> {\n if (url.startsWith('fhir/R4/ValueSet/$expand')) {\n return exampleValueSet;\n }\n\n const parsedUrl = new URL(url, 'https://example.com');\n\n let pathname = parsedUrl.pathname;\n if (pathname.includes('fhir/R4')) {\n pathname = pathname.substring(pathname.indexOf('fhir/R4') + 7);\n }\n\n let body = undefined;\n if (options.body) {\n body = JSON.parse(options.body);\n }\n\n const request: FhirRequest = {\n method,\n pathname,\n body,\n params: Object.create(null),\n query: Object.fromEntries(parsedUrl.searchParams),\n };\n\n const result = await this.router.handleRequest(request, this.repo);\n if (result.length === 1) {\n if (!isOk(result[0])) {\n throw new OperationOutcomeError(result[0]);\n }\n return result[0];\n } else {\n return result[1];\n }\n }\n}\n\nfunction base64Encode(str: string): string {\n return typeof window !== 'undefined' ? window.btoa(str) : Buffer.from(str).toString('base64');\n}\n"],"names":["createReference","getReferenceString","MedplumClient","FhirRouter","MemoryRepository","badRequest","isOk","getStatus","allOk","indexStructureDefinition","OperationOutcomeError"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}