Molecular Quantum Particle Algorithm (MQPA): Comprehensive Technical Document


1. Overview and Development History

MQPA—Molecular Quantum Particle Algorithm—is an original quantum-classical hybrid framework developed by Jessica McPhaul over a full year of interdisciplinary work. It was designed to simulate, predict, and visualize particle-level interactions within environmental systems using quantum computing, GIS datasets, and AI interpretation layers. MQPA was conceived as a solution to the limitations of classical models in understanding complex particle behavior—especially under dynamic environmental conditions like storms, pressure shifts, and chemical diffusion.

Over time, it evolved into a scalable system that can integrate data from NASA LiDAR, NOAA storm paths, OpenAQ air quality indices, and QM9 molecular records. The algorithm was further enhanced using MTQC (Multi-Target Quantum Compilation), enabling parallel simulation across multiple quantum environments. MQPA now acts as the computational backbone for Jessi.chat—a quantum-interpreting AI assistant built to translate circuit results into human-readable insights for real-world decision-making.


2. Purpose and Practical Application

MQPA’s goal is to model how particles—molecules, pollutants, atmospheric elements—behave in real or simulated geospatial environments. It enables:

Through integration with GIS (Geographic Information Systems), MQPA uses terrain and sensor data to localize molecular models, making them spatially and temporally aware.


3. Quantum Foundations Underpinning MQPA

MQPA is built on key quantum computing principles:


4. Quantum Gate Design in MQPA

MQPA circuits are built using a standard three-qubit layout, with gate operations driven by preprocessed data:


5. Mathematical Foundation

Let the input feature vector \(\vec{x} = [x_1, x_2, x_3]\) represent normalized environmental features. Scaling is applied as:

\[ \hat{x}_i = \frac{x_i - \mu}{\sigma} \]

These values become gate parameters: RX(𝑥₁), RY(𝑥₂), RZ(𝑥₃). The overall circuit \(U(\vec{x})\) is defined as:

\[ U(\vec{x}) = M \cdot RZ(\hat{x}_3) \cdot RY(\hat{x}_2) \cdot RX(\hat{x}_1) \cdot CX \cdot H \]

Where M denotes the measurement operator. The resulting quantum state vector is sampled, and output probabilities are used to classify particle behavior using:

\[ P(state_i) = |\langle state_i | \psi_{final} \rangle|^2 \]

The top state is then translated into a scenario (e.g., “Unstable molecule under storm pressure”).


6. Scaling with MTQC

MTQC allows MQPA to run multi-instance quantum simulations in parallel. Rather than simulating one particle system at a time, MTQC compiles dozens of quantum circuits simultaneously, each representing different weather conditions, molecular variants, or geospatial parameters.

Example:
In a Dallas flood zone scenario, MTQC ran 32 parallel MQPA circuits—each with slightly altered inputs for wind speed, humidity, terrain elevation. The result was a probabilistic heatmap showing the highest-risk air quality zones, updated in near real-time.


7. Real-World Dataset Integration

MQPA has been applied across the following datasets:

Each dataset is preprocessed classically (NumPy, pandas), scaled, and mapped to quantum gate parameters. Simulation results are reprojected into GIS space as tiles, heatmaps, or animation overlays.


8. Implementation Tools

MQPA is developed with:


9. Jessi.chat: The Interpretive Layer

Jessi.chat is more than a chatbot—it’s an AI translator for quantum states. After MQPA outputs qubit measurement counts, Jessi.chat converts the highest-probability state into plain-English summaries like:

It uses fine-tuned GPT and BERT layers to explain these outputs clearly to researchers, scientists, and decision-makers.


10. Limitations and Future Enhancements


Conclusion

MQPA is not just a quantum experiment—it’s a functional framework built to model particle behavior in dynamic, geospatially-anchored environments. When paired with MTQC, real datasets, and Jessi.chat, it becomes a decision-support engine for forecasting, risk mapping, and molecular interaction analysis—driven by quantum computing. From storm modeling to particle drift to air quality prediction, MQPA has proven capable of expanding what we can simulate and understand. Its future lies in integration—with agencies, industry, and researchers across climate, defense, and science.

LS0tDQp0aXRsZTogIkpFU1NJIEFHRU5UIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KDQoqKk1vbGVjdWxhciBRdWFudHVtIFBhcnRpY2xlIEFsZ29yaXRobSAoTVFQQSk6IENvbXByZWhlbnNpdmUgVGVjaG5pY2FsIERvY3VtZW50KioNCg0KLS0tDQoNCioqMS4gT3ZlcnZpZXcgYW5kIERldmVsb3BtZW50IEhpc3RvcnkqKg0KDQpNUVBB4oCUTW9sZWN1bGFyIFF1YW50dW0gUGFydGljbGUgQWxnb3JpdGht4oCUaXMgYW4gb3JpZ2luYWwgcXVhbnR1bS1jbGFzc2ljYWwgaHlicmlkIGZyYW1ld29yayBkZXZlbG9wZWQgYnkgSmVzc2ljYSBNY1BoYXVsIG92ZXIgYSBmdWxsIHllYXIgb2YgaW50ZXJkaXNjaXBsaW5hcnkgd29yay4gSXQgd2FzIGRlc2lnbmVkIHRvIHNpbXVsYXRlLCBwcmVkaWN0LCBhbmQgdmlzdWFsaXplIHBhcnRpY2xlLWxldmVsIGludGVyYWN0aW9ucyB3aXRoaW4gZW52aXJvbm1lbnRhbCBzeXN0ZW1zIHVzaW5nIHF1YW50dW0gY29tcHV0aW5nLCBHSVMgZGF0YXNldHMsIGFuZCBBSSBpbnRlcnByZXRhdGlvbiBsYXllcnMuIE1RUEEgd2FzIGNvbmNlaXZlZCBhcyBhIHNvbHV0aW9uIHRvIHRoZSBsaW1pdGF0aW9ucyBvZiBjbGFzc2ljYWwgbW9kZWxzIGluIHVuZGVyc3RhbmRpbmcgY29tcGxleCBwYXJ0aWNsZSBiZWhhdmlvcuKAlGVzcGVjaWFsbHkgdW5kZXIgZHluYW1pYyBlbnZpcm9ubWVudGFsIGNvbmRpdGlvbnMgbGlrZSBzdG9ybXMsIHByZXNzdXJlIHNoaWZ0cywgYW5kIGNoZW1pY2FsIGRpZmZ1c2lvbi4NCg0KT3ZlciB0aW1lLCBpdCBldm9sdmVkIGludG8gYSBzY2FsYWJsZSBzeXN0ZW0gdGhhdCBjYW4gaW50ZWdyYXRlIGRhdGEgZnJvbSBOQVNBIExpREFSLCBOT0FBIHN0b3JtIHBhdGhzLCBPcGVuQVEgYWlyIHF1YWxpdHkgaW5kaWNlcywgYW5kIFFNOSBtb2xlY3VsYXIgcmVjb3Jkcy4gVGhlIGFsZ29yaXRobSB3YXMgZnVydGhlciBlbmhhbmNlZCB1c2luZyBNVFFDIChNdWx0aS1UYXJnZXQgUXVhbnR1bSBDb21waWxhdGlvbiksIGVuYWJsaW5nIHBhcmFsbGVsIHNpbXVsYXRpb24gYWNyb3NzIG11bHRpcGxlIHF1YW50dW0gZW52aXJvbm1lbnRzLiBNUVBBIG5vdyBhY3RzIGFzIHRoZSBjb21wdXRhdGlvbmFsIGJhY2tib25lIGZvciBKZXNzaS5jaGF04oCUYSBxdWFudHVtLWludGVycHJldGluZyBBSSBhc3Npc3RhbnQgYnVpbHQgdG8gdHJhbnNsYXRlIGNpcmN1aXQgcmVzdWx0cyBpbnRvIGh1bWFuLXJlYWRhYmxlIGluc2lnaHRzIGZvciByZWFsLXdvcmxkIGRlY2lzaW9uLW1ha2luZy4NCg0KLS0tDQoNCioqMi4gUHVycG9zZSBhbmQgUHJhY3RpY2FsIEFwcGxpY2F0aW9uKioNCg0KTVFQQSdzIGdvYWwgaXMgdG8gbW9kZWwgaG93IHBhcnRpY2xlc+KAlG1vbGVjdWxlcywgcG9sbHV0YW50cywgYXRtb3NwaGVyaWMgZWxlbWVudHPigJRiZWhhdmUgaW4gcmVhbCBvciBzaW11bGF0ZWQgZ2Vvc3BhdGlhbCBlbnZpcm9ubWVudHMuIEl0IGVuYWJsZXM6DQoNCi0gKipTdG9ybS1pbmR1Y2VkIHBhcnRpY2xlIGRyaWZ0IHNpbXVsYXRpb24qKiAgDQotICoqUG9zdC1odXJyaWNhbmUgZmxvb2QgcGF0dGVybiBmb3JlY2FzdGluZyoqICANCi0gKipNZXRoYW5lIGxlYWsgZGlzcGVyc2lvbiBtb2RlbGluZyBhZnRlciBzZWlzbWljIGV2ZW50cyoqICANCi0gKipBaXIgcXVhbGl0eSBwcmVkaWN0aW9uIGR1cmluZyBjb21wb3VuZCB3ZWF0aGVyIHBoZW5vbWVuYSoqICANCi0gKipRdWFudHVtLWd1aWRlZCBlbnZpcm9ubWVudGFsIG1hcHBpbmcgb3ZlcmxheXMqKiAgDQoNClRocm91Z2ggaW50ZWdyYXRpb24gd2l0aCBHSVMgKEdlb2dyYXBoaWMgSW5mb3JtYXRpb24gU3lzdGVtcyksIE1RUEEgdXNlcyB0ZXJyYWluIGFuZCBzZW5zb3IgZGF0YSB0byBsb2NhbGl6ZSBtb2xlY3VsYXIgbW9kZWxzLCBtYWtpbmcgdGhlbSBzcGF0aWFsbHkgYW5kIHRlbXBvcmFsbHkgYXdhcmUuDQoNCi0tLQ0KDQoqKjMuIFF1YW50dW0gRm91bmRhdGlvbnMgVW5kZXJwaW5uaW5nIE1RUEEqKg0KDQpNUVBBIGlzIGJ1aWx0IG9uIGtleSBxdWFudHVtIGNvbXB1dGluZyBwcmluY2lwbGVzOg0KDQotICoqUXViaXRzKio6IEluc3RlYWQgb2YgYml0cywgTVFQQSB1c2VzIHF1Yml0cyBjYXBhYmxlIG9mIHJlcHJlc2VudGluZyB8MOKfqSwgfDHin6ksIG9yIGEgc3VwZXJwb3NpdGlvbiDOsXww4p+pICsgzrJ8MeKfqS4NCiAgDQotICoqU3VwZXJwb3NpdGlvbioqOiBBbGxvd3MgZWFjaCBxdWJpdCB0byBleHBsb3JlIG11bHRpcGxlIHN0YXRlcyBzaW11bHRhbmVvdXNseSwgaWRlYWwgZm9yIHByb2JhYmlsaXN0aWMgZW52aXJvbm1lbnRhbCBtb2RlbGluZy4NCiAgDQotICoqRW50YW5nbGVtZW50Kio6IFF1Yml0cyBhcmUgZW50YW5nbGVkIHVzaW5nIGdhdGVzIGxpa2UgQ1ggdG8gbWlycm9yIGludGVyZGVwZW5kZW50IHBhcnRpY2xlIGJlaGF2aW9yc+KAlGUuZy4sIG1vbGVjdWxhciBib25kaW5nIG9yIHNjYXR0ZXJpbmcgcmVhY3Rpb25zLg0KICANCi0gKipNZWFzdXJlbWVudCBhbmQgQ29sbGFwc2UqKjogUHJvYmFiaWxpc3RpYyBvdXRjb21lcyBvZiBxdWJpdCBzdGF0ZXMgcmVmbGVjdCBwb3NzaWJsZSBzdGF0ZXMgb2YgcGFydGljbGUgc3lzdGVtc+KAlGludGVycHJldGVkIGNsYXNzaWNhbGx5IHBvc3Qtc2ltdWxhdGlvbi4NCg0KLS0tDQoNCioqNC4gUXVhbnR1bSBHYXRlIERlc2lnbiBpbiBNUVBBKioNCg0KTVFQQSBjaXJjdWl0cyBhcmUgYnVpbHQgdXNpbmcgYSBzdGFuZGFyZCB0aHJlZS1xdWJpdCBsYXlvdXQsIHdpdGggZ2F0ZSBvcGVyYXRpb25zIGRyaXZlbiBieSBwcmVwcm9jZXNzZWQgZGF0YToNCg0KLSAqKkggKEhhZGFtYXJkKSoqOiBBcHBsaWVkIHRvIHRoZSBmaXJzdCBxdWJpdCB0byBpbml0aWF0ZSBzdXBlcnBvc2l0aW9u4oCUbWltaWNraW5nIG1vbGVjdWxhciB1bmNlcnRhaW50eS4NCg0KLSAqKkNYIChDTk9UKSoqOiBFbnRhbmdsZXMgcXViaXRzLCBjcmVhdGluZyBkZXBlbmRlbnQgcGFydGljbGUgcmVsYXRpb25zaGlwcy4NCg0KLSAqKlJYLCBSWSwgUloqKjogUm90YXRpb25hbCBnYXRlcyBlbmNvZGUgc2NhbGVkIG1vbGVjdWxhciBvciBlbnZpcm9ubWVudGFsIGZlYXR1cmVzLiAgDQogIC0gUlgozrgpOiBFbmNvZGVzIHRlbXBlcmF0dXJlIG9yIHBhcnRpY2xlIHZlbG9jaXR5ICANCiAgLSBSWSjOuCk6IEVuY29kZXMgd2luZCBkaXJlY3Rpb24gb3IgYm9uZCBhbmdsZSAgDQogIC0gUloozrgpOiBFbmNvZGVzIGh1bWlkaXR5LCBlbGVjdHJpYyBjaGFyZ2UsIG9yIGZpZWxkIHBvdGVudGlhbA0KDQotICoqTWVhc3VyZW1lbnQqKjogT3V0cHV0cyByZWZsZWN0IGxpa2VseSBwYXJ0aWNsZSBzdGF0ZXMuIFRoZSBtb3N0IHByb2JhYmxlIHN0YXRlIGlzIHBhc3NlZCB0byBhbiBpbnRlcnByZXRpdmUgbGF5ZXIgKEplc3NpLmNoYXQpLg0KDQotLS0NCg0KKio1LiBNYXRoZW1hdGljYWwgRm91bmRhdGlvbioqDQoNCkxldCB0aGUgaW5wdXQgZmVhdHVyZSB2ZWN0b3IgXCggXHZlY3t4fSA9IFt4XzEsIHhfMiwgeF8zXSBcKSByZXByZXNlbnQgbm9ybWFsaXplZCBlbnZpcm9ubWVudGFsIGZlYXR1cmVzLiBTY2FsaW5nIGlzIGFwcGxpZWQgYXM6DQoNClxbDQpcaGF0e3h9X2kgPSBcZnJhY3t4X2kgLSBcbXV9e1xzaWdtYX0NClxdDQoNClRoZXNlIHZhbHVlcyBiZWNvbWUgZ2F0ZSBwYXJhbWV0ZXJzOiBSWCjwnZGl4oKBKSwgUlko8J2RpeKCgiksIFJaKPCdkaXigoMpLiBUaGUgb3ZlcmFsbCBjaXJjdWl0IFwoIFUoXHZlY3t4fSkgXCkgaXMgZGVmaW5lZCBhczoNCg0KXFsNClUoXHZlY3t4fSkgPSBNIFxjZG90IFJaKFxoYXR7eH1fMykgXGNkb3QgUlkoXGhhdHt4fV8yKSBcY2RvdCBSWChcaGF0e3h9XzEpIFxjZG90IENYIFxjZG90IEgNClxdDQoNCldoZXJlIE0gZGVub3RlcyB0aGUgbWVhc3VyZW1lbnQgb3BlcmF0b3IuIFRoZSByZXN1bHRpbmcgcXVhbnR1bSBzdGF0ZSB2ZWN0b3IgaXMgc2FtcGxlZCwgYW5kIG91dHB1dCBwcm9iYWJpbGl0aWVzIGFyZSB1c2VkIHRvIGNsYXNzaWZ5IHBhcnRpY2xlIGJlaGF2aW9yIHVzaW5nOg0KDQpcWw0KUChzdGF0ZV9pKSA9IHxcbGFuZ2xlIHN0YXRlX2kgfCBccHNpX3tmaW5hbH0gXHJhbmdsZXxeMg0KXF0NCg0KVGhlIHRvcCBzdGF0ZSBpcyB0aGVuIHRyYW5zbGF0ZWQgaW50byBhIHNjZW5hcmlvIChlLmcuLCDigJxVbnN0YWJsZSBtb2xlY3VsZSB1bmRlciBzdG9ybSBwcmVzc3VyZeKAnSkuDQoNCi0tLQ0KDQoqKjYuIFNjYWxpbmcgd2l0aCBNVFFDKioNCg0KTVRRQyBhbGxvd3MgTVFQQSB0byBydW4gKiptdWx0aS1pbnN0YW5jZSBxdWFudHVtIHNpbXVsYXRpb25zIGluIHBhcmFsbGVsKiouIFJhdGhlciB0aGFuIHNpbXVsYXRpbmcgb25lIHBhcnRpY2xlIHN5c3RlbSBhdCBhIHRpbWUsIE1UUUMgY29tcGlsZXMgZG96ZW5zIG9mIHF1YW50dW0gY2lyY3VpdHMgc2ltdWx0YW5lb3VzbHksIGVhY2ggcmVwcmVzZW50aW5nIGRpZmZlcmVudCB3ZWF0aGVyIGNvbmRpdGlvbnMsIG1vbGVjdWxhciB2YXJpYW50cywgb3IgZ2Vvc3BhdGlhbCBwYXJhbWV0ZXJzLg0KDQpFeGFtcGxlOiAgDQpJbiBhIERhbGxhcyBmbG9vZCB6b25lIHNjZW5hcmlvLCBNVFFDIHJhbiAzMiBwYXJhbGxlbCBNUVBBIGNpcmN1aXRz4oCUZWFjaCB3aXRoIHNsaWdodGx5IGFsdGVyZWQgaW5wdXRzIGZvciB3aW5kIHNwZWVkLCBodW1pZGl0eSwgdGVycmFpbiBlbGV2YXRpb24uIFRoZSByZXN1bHQgd2FzIGEgcHJvYmFiaWxpc3RpYyBoZWF0bWFwIHNob3dpbmcgdGhlIGhpZ2hlc3QtcmlzayBhaXIgcXVhbGl0eSB6b25lcywgdXBkYXRlZCBpbiBuZWFyIHJlYWwtdGltZS4NCg0KLS0tDQoNCioqNy4gUmVhbC1Xb3JsZCBEYXRhc2V0IEludGVncmF0aW9uKioNCg0KTVFQQSBoYXMgYmVlbiBhcHBsaWVkIGFjcm9zcyB0aGUgZm9sbG93aW5nIGRhdGFzZXRzOg0KDQotICoqTkFTQSBMaURBUioqIOKAkyBFbGV2YXRpb24sIHRlcnJhaW4gc2xvcGUsIHN0cnVjdHVyYWwgZmVhdHVyZXMgIA0KLSAqKlFNOSoqIOKAkyBNb2xlY3VsYXIgd2VpZ2h0cywgSE9NTy9MVU1PLCBkaXBvbGUgbW9tZW50cyAgDQotICoqTk9BQSBTdG9ybSBUcmFja3MqKiDigJMgV2luZCBwcmVzc3VyZSwgc3Rvcm0gcGF0aCwgcHJlY2lwaXRhdGlvbiAgDQotICoqT3BlbkFRKiog4oCTIFBNMi41LCBQTTEwLCBOT+KCgiwgT+KCgyByZWFsLXRpbWUgYWlyIHF1YWxpdHkgcmVhZGluZ3MgIA0KLSAqKlNlbnNvciBMb2dzKiog4oCTIENvbGxlY3RlZCBmcm9tIHN0b3JtIHN1cmdlcyBhbmQgaHVycmljYW5lcw0KDQpFYWNoIGRhdGFzZXQgaXMgcHJlcHJvY2Vzc2VkIGNsYXNzaWNhbGx5IChOdW1QeSwgcGFuZGFzKSwgc2NhbGVkLCBhbmQgbWFwcGVkIHRvIHF1YW50dW0gZ2F0ZSBwYXJhbWV0ZXJzLiBTaW11bGF0aW9uIHJlc3VsdHMgYXJlIHJlcHJvamVjdGVkIGludG8gR0lTIHNwYWNlIGFzIHRpbGVzLCBoZWF0bWFwcywgb3IgYW5pbWF0aW9uIG92ZXJsYXlzLg0KDQotLS0NCg0KKio4LiBJbXBsZW1lbnRhdGlvbiBUb29scyoqDQoNCk1RUEEgaXMgZGV2ZWxvcGVkIHdpdGg6DQoNCi0gKipRaXNraXQqKiDigJMgRm9yIGNpcmN1aXQgY29uc3RydWN0aW9uLCB0cmFuc3BpbGF0aW9uLCBzaW11bGF0aW9uICANCi0gKipRdW9ra2EqKiDigJMgTGlnaHR3ZWlnaHQgZnJhbWV3b3JrIHRvIHRlc3QgYWNyb3NzIGJhY2tlbmRzIChJQk0gUSwgbG9jYWwgQWVyLCBCcmFrZXQpICANCi0gKipCbGVuZGVyKiog4oCTIEZvciByZWFsLXRpbWUgM0QgcGFydGljbGUgdmlzdWFsaXphdGlvbiB1c2luZyBHZW9tZXRyeSBOb2RlcyAgDQotICoqSnVweXRlckxhYioqIOKAkyBGb3IgcHJlcHJvY2Vzc2luZywgZXhwZXJpbWVudGF0aW9uLCBkZWJ1Z2dpbmcgIA0KLSAqKkh1Z2dpbmcgRmFjZSArIEplc3NpLmNoYXQqKiDigJMgRm9yIE5MUC1kcml2ZW4gZXhwbGFuYXRpb24gb2YgcXVhbnR1bSByZXN1bHRzICANCg0KLS0tDQoNCioqOS4gSmVzc2kuY2hhdDogVGhlIEludGVycHJldGl2ZSBMYXllcioqDQoNCkplc3NpLmNoYXQgaXMgbW9yZSB0aGFuIGEgY2hhdGJvdOKAlGl04oCZcyBhbiAqKkFJIHRyYW5zbGF0b3IqKiBmb3IgcXVhbnR1bSBzdGF0ZXMuIEFmdGVyIE1RUEEgb3V0cHV0cyBxdWJpdCBtZWFzdXJlbWVudCBjb3VudHMsIEplc3NpLmNoYXQgY29udmVydHMgdGhlIGhpZ2hlc3QtcHJvYmFiaWxpdHkgc3RhdGUgaW50byBwbGFpbi1FbmdsaXNoIHN1bW1hcmllcyBsaWtlOg0KDQotIOKAnFN0YWJsZSBtb2xlY3VsZSB1bmRlciBjdXJyZW50IGNvbmRpdGlvbnMu4oCdICANCi0g4oCcU2NhdHRlcmluZyBldmVudCBsaWtlbHkgZHVlIHRvIHdpbmQgc2hlYXIu4oCdICANCi0g4oCcUmVhY3RpdmUgY29uZmlndXJhdGlvbiBkZXRlY3RlZOKAlHJpc2sgb2YgY2hhaW4gYm9uZGluZy7igJ0gIA0KDQpJdCB1c2VzIGZpbmUtdHVuZWQgR1BUIGFuZCBCRVJUIGxheWVycyB0byBleHBsYWluIHRoZXNlIG91dHB1dHMgY2xlYXJseSB0byByZXNlYXJjaGVycywgc2NpZW50aXN0cywgYW5kIGRlY2lzaW9uLW1ha2Vycy4NCg0KLS0tDQoNCioqMTAuIExpbWl0YXRpb25zIGFuZCBGdXR1cmUgRW5oYW5jZW1lbnRzKioNCg0KLSAqKlF1YW50dW0gSGFyZHdhcmUgTm9pc2UqKjogU3RpbGwgbGltaXRzIGxpdmUgZGVwbG95bWVudC4gU2ltdWxhdG9ycyBoZWxwLCBidXQgcmVhbC10aW1lIG9uIFFQVXMgaXMgc3RpbGwgY29uc3RyYWluZWQgYnkgcXVldWUgdGltZXMsIGRlY29oZXJlbmNlLCBhbmQgZ2F0ZSBmaWRlbGl0eS4NCg0KLSAqKlNjYWxhYmlsaXR5Kio6IE1UUUMgc29sdmVzIHNvbWUgb2YgdGhpcywgYnV0IGN1cnJlbnQgUVBVcyBsaW1pdCBxdWJpdCBjb3VudCBhbmQgZW50YW5nbGVtZW50IGRlcHRoLg0KDQotICoqVmlzdWFsIEludGVncmF0aW9uKio6IEJsZW5kZXIgbm9kZSBjb252ZXJzaW9uIGlzIHN0aWxsIHNlbWktbWFudWFsLiBBdXRvbWF0aW9uIHdpdGggUUFTTS10by1nZW9tZXRyeSBicmlkZ2UgaXMgYSBmdXR1cmUgbWlsZXN0b25lLg0KDQotICoqRGVwbG95bWVudCoqOiBDdXJyZW50bHkgb3BlcmF0ZXMgb24gaHlicmlkIGNsb3VkOyBsb25nLXRlcm0gdmlzaW9uIGlzIGEgZGVwbG95YWJsZSBpbnRlcmZhY2UgZm9yIHJlc2VhcmNoZXJzLCBkaXNhc3RlciByZXNwb25zZSB0ZWFtcywgYW5kIGVudmlyb25tZW50YWwgYWdlbmNpZXMuDQoNCi0tLQ0KDQoqKkNvbmNsdXNpb24qKg0KDQpNUVBBIGlzIG5vdCBqdXN0IGEgcXVhbnR1bSBleHBlcmltZW504oCUaXTigJlzIGEgZnVuY3Rpb25hbCBmcmFtZXdvcmsgYnVpbHQgdG8gbW9kZWwgcGFydGljbGUgYmVoYXZpb3IgaW4gZHluYW1pYywgZ2Vvc3BhdGlhbGx5LWFuY2hvcmVkIGVudmlyb25tZW50cy4gV2hlbiBwYWlyZWQgd2l0aCBNVFFDLCByZWFsIGRhdGFzZXRzLCBhbmQgSmVzc2kuY2hhdCwgaXQgYmVjb21lcyBhIGRlY2lzaW9uLXN1cHBvcnQgZW5naW5lIGZvciBmb3JlY2FzdGluZywgcmlzayBtYXBwaW5nLCBhbmQgbW9sZWN1bGFyIGludGVyYWN0aW9uIGFuYWx5c2lz4oCUZHJpdmVuIGJ5IHF1YW50dW0gY29tcHV0aW5nLiBGcm9tIHN0b3JtIG1vZGVsaW5nIHRvIHBhcnRpY2xlIGRyaWZ0IHRvIGFpciBxdWFsaXR5IHByZWRpY3Rpb24sIE1RUEEgaGFzIHByb3ZlbiBjYXBhYmxlIG9mIGV4cGFuZGluZyB3aGF0IHdlIGNhbiBzaW11bGF0ZSBhbmQgdW5kZXJzdGFuZC4gSXRzIGZ1dHVyZSBsaWVzIGluIGludGVncmF0aW9u4oCUd2l0aCBhZ2VuY2llcywgaW5kdXN0cnksIGFuZCByZXNlYXJjaGVycyBhY3Jvc3MgY2xpbWF0ZSwgZGVmZW5zZSwgYW5kIHNjaWVuY2UuDQoNCg==