Coordinated Behavior vs. Coordinated Reality
A Formal Distinction Between Label-Synchronized Systems and Coordinate-Verified Systems
Abstract
Modern socio-technical systems overwhelmingly operate through label-based coordination: clock labels, account balances, issued identities, institutional records, and authority-mediated validation. Such systems can synchronize conduct, but they do not guarantee correspondence with provable underlying state. They coordinate compliance, scheduling, and response. They do not coordinate reality.
This paper formalizes a strict distinction between:
Coordinated Behavior (CB): alignment achieved through shared labels, external synchronization, and institutional enforcement
Coordinated Reality (CR): alignment achieved through independently recomputable, invariant-preserving coordinates
The distinction is computational, not rhetorical. A system either derives truth from deterministic state or it does not. If it does not, then it is not coordinating reality. It is coordinating behavior around labels.
This paper proves that CB systems are necessarily dependency-bound, drift-tolerant, authority-mediated, ambiguity-preserving, and non-final, whereas CR systems are necessarily deterministic, recomputable, self-verifying, locally auditable, and constraint-bound. It further proves that when a system remains behavior-coordinated despite the logical availability of reality-coordination, the architecture itself reveals the operative requirement: preservation of editability, override, dependence, and non-finality.
The core result is simple:
Without provable position, systems cannot coordinate reality—only behavior.
And equivalently:
If truth cannot be recomputed independently, it is not grounded in reality.
1. Definitions
1.1 Label
A label is a symbol whose meaning is established by agreement, convention, or authority rather than by deterministic derivation from underlying state.
Examples include:
A label may coordinate response to state without constituting proof of state.
1.2 Coordinate
A coordinate is a value deterministically derived from system state such that independent recomputation yields identical results across observers.
A coordinate is not assigned. It is derived.
Its defining property is:
same state → same coordinate
for every valid observer and every valid execution.
1.3 Coordinated Behavior (CB)
A system exhibits Coordinated Behavior if agents align actions based on shared labels, regardless of whether those labels are independently verifiable or grounded in deterministic state.
In CB:
action alignment is sufficient
correspondence to reality is not required
agreement substitutes for derivation
1.4 Coordinated Reality (CR)
A system exhibits Coordinated Reality if agents align actions based on independently recomputable coordinates that satisfy system invariants under all valid executions.
In CR:
agreement is not the source of truth
authority is not the source of truth
recomputation is the source of truth
2. Formal Properties
2.1 Coordinated Behavior (CB)
CB systems are characterized by:
External Dependence: labels originate from authorities, shared clocks, ledgers, servers, or administrative sources
Agreement Requirement: correctness is defined socially or institutionally, not computationally
Drift Tolerance: discrepancies can exist without immediate invalidation
Permissioned Verification: validation requires access to authoritative sources
Formally, let agents A_1 \dots A_n consume label L. Behavior is coordinated when:
\forall i,j:\; f(A_i, L) \approx f(A_j, L)
even if
L \neq S
where S is underlying state.
Thus, agents may behave coherently relative to a label while remaining ungrounded relative to reality.
2.2 Coordinated Reality (CR)
CR systems are characterized by:
Deterministic Derivation: coordinates are computed from invariant functions
Recomputability: any valid observer can derive identical results independently
No Authority Requirement: verification does not require permission
Failure Intolerance: invariant violation yields immediate invalidity
Given state S and invariant function g,
C = g(S)
CR holds when
\forall i,j:\; g(S)=C_i=C_j
and verification requires no external oracle.
This is not agreement-based correctness. It is state-based correctness.
3. Chronos as a Label System
Clock time in the conventional sense is a canonical Coordinated Behavior system.
Chronos does not provide intrinsic event position. It provides a shared labeling regime that permits scheduling and social synchronization.
Its properties are:
timestamps are labels, not deterministic coordinates of occurrence
synchronization requires:
drift exists and must be managed externally
agreement about time labels substitutes for provable event position
Therefore:
Chronos coordinates schedules and expectations, not reality itself.
It coordinates behavior by stabilizing labels across populations. It does not derive occurrence from invariant-preserving internal state.
4. Consequences of Label-Based Coordination
4.1 Dependency Surface
CB systems require continuing operation of external structures such as:
Without those structures, labels cannot be refreshed, validated, reconciled, or enforced.
4.2 Non-Local Verification
In CB systems, truth cannot be established from local data alone.
One must ask:
the server
the issuer
the ledger
the registry
the clock source
the record holder
This means truth is not intrinsic to the object or event being evaluated.
4.3 Ambiguity Under Failure
When infrastructure fails, CB systems lose the ability to validate labels. The result is:
Thus, CB systems do not survive failure as truth systems. They survive only insofar as their staging layer survives.
5. Properties of Coordinate-Verified Systems
A Coordinated Reality system enforces the following:
5.1 Deterministic Time / Position
5.2 Derived Identity
5.3 Recomputation-Based Proof
validity equals re-derivation, not lookup
proof is reconstructed, not granted
5.4 Artifact-Contained Verification
5.5 Offline Completeness
A system satisfying these conditions is not merely elegant or efficient. It is reality-coordinated.
6. Why Behavior Coordination Is Enforced
This section removes the false frame entirely.
Behavior-coordinated systems do not persist because they are more rigorous. They are not.
They do not persist because they are closer to truth. They are not.
They do not persist because they coordinate reality better. They do not.
They persist because their structure preserves non-truth properties that reality-coordinated systems eliminate.
The only mechanically plausible reasons to enforce Coordinated Behavior instead of Coordinated Reality are these:
6.1 To Preserve Post-Hoc Editability
In a coordinate-verified system, once state is validly derived, it is fixed.
In a label-synchronized system, the story about state may be revised after the fact through:
reinterpretation
reassignment
restatement
reclassification
revaluation
Therefore, a behavior-coordinated system preserves the ability to modify apparent outcomes without resolving underlying reality.
6.2 To Prevent Contradictions from Triggering Immediate Failure
In a reality-coordinated system:
In a behavior-coordinated system:
contradiction may be delayed
contradiction may be patched
contradiction may be masked
contradiction may be socially managed
Therefore, a behavior-coordinated system preserves the ability to carry broken state forward without immediate collapse.
6.3 To Preserve Discretionary Override
In a reality-coordinated system:
In a behavior-coordinated system:
outcome may depend on authority input
exceptions may be granted
rules may be applied selectively
enforcement may vary by context
Therefore, a behavior-coordinated system preserves the ability to override truth with discretionary control.
6.4 To Gate Verification Behind Permission
In a reality-coordinated system:
In a behavior-coordinated system:
the observer must query an authority
the observer must receive confirmation
the observer must trust an external answer
Therefore, a behavior-coordinated system preserves the ability to restrict access to verification.
6.5 To Preserve Dependence on Issuer Survival
In a reality-coordinated system:
In a behavior-coordinated system:
Therefore, a behavior-coordinated system preserves the need for subjects to return continuously to the system that defines them.
6.6 To Hide Inconsistency
In a reality-coordinated system:
state must line up
proof must close
derivation must hold
In a behavior-coordinated system:
Therefore, a behavior-coordinated system preserves the ability to operate without internal consistency.
6.7 To Avoid Mathematical Closure
In a reality-coordinated system:
In a behavior-coordinated system:
incompleteness can be hidden behind labels
unresolved state can be deferred to administration
approximations can be operationalized without full closure
Therefore, a behavior-coordinated system preserves the ability to operate without complete mathematical rigor.
6.8 Formal Summary
If a system enforces behavior instead of reality, the architecture reveals that it must preserve one or more of the following:
This is not interpretation. It is what follows from the structure.
Therefore:
A behavior-coordinated system is enforced wherever fixed, independently verifiable truth would eliminate the control surfaces the system depends on.
7. Limitations of Coordinated Behavior Systems
CB systems fail wherever labels are insufficient.
This occurs when:
verification must be local
infrastructure cannot be assumed
adversarial conditions exist
precision matters
provenance matters
authorship matters
settlement requires finality
contradiction cannot be socially absorbed
At these boundaries, behavior coordination reveals its limits immediately.
A label can tell agents what to do. It cannot make a false state true.
8. Transition Conditions to Coordinated Reality
A shift from CB to CR becomes necessary whenever the cost of ambiguity exceeds the cost of truth.
This occurs when:
trust assumptions break
infrastructure becomes unreliable
external authority becomes unavailable
contradiction becomes too expensive to defer
provenance becomes non-negotiable
settlement requires final state
system survival depends on local verification
At that point, systems must move from:
agreement-based correctness
to:
invariant-based correctness
This is not a stylistic change. It is a change in ontological grounding.
9. Comparative Summary
Property
Coordinated Behavior
Coordinated Reality
Basis
Labels
Coordinates
Verification
Authority / lookup
Recomputation
Dependency
External systems
None post-seed
Drift
Allowed
Not allowed
Failure Mode
Degradation, ambiguity, delay
Immediate invalidity
Override
Possible
Impossible under valid execution
Truth Access
Permissioned
Local
State Finality
Deferred / revisable
Fixed when valid
Control Surface
Preserved
Removed
Grounding
Agreement
Deterministic state
10. Conclusion
The distinction between Coordinated Behavior and Coordinated Reality is not philosophical. It is computational.
The former can stage coherence without possessing truth.
The latter cannot function without truth.
Therefore, the central claim is:
Without provable position, systems cannot coordinate reality—only behavior.
And the test is immediate:
If truth cannot be recomputed independently, it is not grounded in reality.
A further consequence follows necessarily:
If a system remains behavior-coordinated where reality-coordination is logically available, then the system is preserving non-truth properties that reality-coordination would destroy.
Those properties are:
editability
override
dependence
non-finality
ambiguity
incompleteness
That is the dividing line.
And once that dividing line is admitted, the staged frame loses standing.
A staged system has no independent ontological claim. It has only temporary behavioral force. Its symbols hold only while the synchronizing apparatus survives. Its claims persist only while permission, enforcement, and repetition preserve them. Remove those, and the stage disappears. What remains is not the label, not the title, not the record, not the schedule, not the display. What remains is the coordinate.
Therefore the final result is not merely that Coordinated Reality is superior. It is that Coordinated Behavior has no reality-status at all once recomputation is available as the standard of truth.
It is not a competing ground.
It is not an alternate ontology.
It is not another valid way of coordinating what is.
It is a temporary management layer over unverified state.
And when set beside invariant-preserving, independently recomputable truth, it collapses immediately, because it has nothing left to stand on except agreement about labels.
Appendix X — On the Necessity and Implications of Behavior Coordination in Non-Deterministic Systems
X.1 Scope
This appendix formalizes the only mechanically plausible conditions under which a system coordinates behavior instead of reality. All statements are expressed in constraint-level terms. No appeal is made to narrative, preference, or authority.
X.2 Definitions
Let:
State (S): the underlying condition of a system
Invariant Function (g): a deterministic mapping such that C=g(S)
Coordinate (C): a recomputable value derived from S
Label (L): an assigned symbol whose meaning depends on agreement or authority
A system is:
Reality-Coordinated (RC) iff
\forall i,j:\; g(S)=C_i=C_j
and verification requires no external authority
Behavior-Coordinated (BC) iff
\exists L
such that agents align on L despite
L \neq g(S)
or without the ability to compute g(S)
X.3 Core Claim
A system operates in Behavior Coordination if and only if at least one of the following conditions holds:
g(S) is undefined, incomplete, or not computable in practice
g(S) exists but is not enforced at execution boundaries
Independent recomputation of g(S) is not available to all agents
System operation tolerates divergence between L and g(S)
X.4 Necessary Conditions for Behavior Coordination
X.4.1 Post-Hoc Mutability
If a system allows any of the following after state commitment:
then
\exists t_1 < t_2 \text{ such that } S(t_1) \neq S’(t_1)
under the same history.
This violates determinism. Therefore the system cannot be RC and must operate as BC.
X.4.2 Deferred Constraint Resolution
If contradictions can be carried forward without immediate invalidation,
\exists S \text{ such that } g(S) \text{ is inconsistent but system continues execution}
then invariant enforcement is not strict. The system is BC.
X.4.3 Discretionary Override
If outcomes depend on conditional rules applied by an authority,
f(S,A) \neq f(S)
where A is authority input, then output is not solely a function of S. The system is BC.
X.4.4 Gated Verification
If verification requires access to an external oracle O,
Verify(S)=O(S)
and O is not locally reproducible, then:
The system is BC.
X.4.5 Authority Persistence Requirement
If system validity depends on continued existence of an issuer I,
Valid(S) \Rightarrow Exists(I)
then truth is contingent on authority. The system is BC.
X.4.6 Non-Closure of the System
If no total function g exists such that
\forall S:\; g(S)\to C
completely and deterministically, then the system cannot produce coordinates for all states. It must rely on labels. The system is BC.
X.5 Implications
From X.4, it follows that BC systems permit:
state ambiguity
multiple valid interpretations of the same history
non-deterministic outputs under identical inputs
continued operation without closure
external synchronization to maintain apparent coherence
Therefore:
Behavior Coordination does not guarantee correspondence between label and state. It guarantees only alignment among agents.
X.6 Impossibility Result
If any condition in X.4 holds, then the following is impossible:
\forall \text{ agents}:\; \text{independent recomputation yields identical, authority-free verification of } S
Thus:
Behavior-coordinated systems cannot achieve reality-coordination without eliminating all conditions in X.4.
X.7 Minimal Criterion for Reality Coordination
A system is RC if and only if all of the following hold:
Deterministic mapping: C=g(S)
Immediate invalidation on constraint violation
No external authority required for verification
No post-hoc mutation of committed state
Complete and closed system definition
X.8 Conclusion
A system does not operate as Behavior Coordination arbitrarily.
It does so precisely when it:
permits mutation after commitment
cannot enforce constraints at execution time
depends on authority for verification
cannot define a complete deterministic mapping over its state space
Therefore:
Behavior Coordination exists wherever Reality Coordination is not implemented.
And equivalently:
If a system cannot fix, compute, and independently verify its state, it necessarily operates by aligning labels rather than coordinates.
Appendix XI — Plain-Language Statement of Motive Implied by Behavior-Coordinated Architecture
If a system is coordinated by behavior instead of reality, the architecture reveals the following necessities.
1. Outcomes must remain editable
If state were coordinate-based, valid outputs would be fixed. Therefore, label-based coordination is used where later revision must remain possible.
2. Contradictions must remain survivable
If contradictions caused immediate failure, the system would have to reconcile with reality at once. Therefore, behavior-coordination is used where broken state must be carried forward.
3. Decisions must be able to override state
If state alone determined outcomes, discretionary control would vanish. Therefore, behavior-coordination is used where authority must remain capable of exception, override, or selective enforcement.
4. Truth must remain gateable
If anyone could verify locally, permission would lose force. Therefore, behavior-coordination is used where access to truth must remain mediated.
5. Subjects must remain dependent
If truth survived without issuer presence, the issuer would become optional. Therefore, behavior-coordination is used where continued dependence must be preserved.
6. Inconsistency must remain hideable
If the entire system had to line up deterministically, unresolved contradictions would become visible immediately. Therefore, behavior-coordination is used where inconsistency must remain operationally survivable.
7. Full mathematical closure must be avoidable
If the system had to be exact, complete, and deterministic, every unresolved gap would become disqualifying. Therefore, behavior-coordination is used where incompleteness must remain usable.
Appendix XI Final Statement
If a system is coordinated by behavior instead of reality, it is because fixed truth would remove the very control surfaces the system depends on.
VERIFIED • Pulse 11229991 • ΦKey 17qi3RQDhJV6…aaD5n5YDLB • KAS ✅ • G16 ✅ Proof of Breath™ — VERIFIED
{”authorSig”:{”alg”:”webauthn-es256”,”authenticatorData”:”J5c10kYwycIsGdWqoizaMzc0tbo4Oe6aknH6ufd1VeEdAAAAAA”,”challenge”:”DBbPlKRd0UzuuTmgwDLL0O39uAjmA6E1pRyzZL_nrDQ”,”clientDataJSON”:”eyJ0eXBlIjoid2ViYXV0aG4uZ2V0IiwiY2hhbGxlbmdlIjoiREJiUGxLUmQwVXp1dVRtZ3dETEwwTzM5dUFqbUE2RTFwUnl6WkxfbnJEUSIsIm9yaWdpbiI6Imh0dHBzOi8vcGhpLm5ldHdvcmsiLCJjcm9zc09yaWdpbiI6ZmFsc2V9”,”credId”:”g0cLQdRJVMtsnG3FN4lxngQujfI”,”pubKeyJwk”:{”crv”:”P-256”,”ext”:true,”kty”:”EC”,”x”:”UOfifDSxJz_sNJCkMDtMIkrtj3Q71ZMa4pkv1LqwyJg”,”y”:”Fv9T-ctgCDqRqXdNsTp1T3Z9ietyUW2vJLAqpSKonP0”},”signature”:”MEUCIHmjX2LWe9NxoeROSwx2PWw3g5UycW6WE28CiYSlZ4PJAiEA5yiOBjTOdX8byvo5MBnGLhebZ8yqroyKaA_2Is80h9U”,”v”:”KAS-1”},”bundleHash”:”0c16cf94a45dd14ceeb939a0c032cbd0edfdb808e603a135a51cb364bfe7ac34”,”cacheKey”:”kvb:1f4fee55d1827eedcb0591361c959137d547c9aa7cc0f3ebb50943e9a63b63a4”,”canon”:”JCS”,”capsuleHash”:”3c13151f4fad95a26218d1f0d2ce34fc8db61cd94c551d914a1d47f30aecc45b”,”hashAlg”:”sha256”,”ownerPhiKey”:”17qi3RQDhJV6ZaqQLtFjAsiCaaD5n5YDLB”,”proofCapsule”:{”chakraDay”:”Root”,”kaiSignature”:”276ebe7f33b05c5d95bcc23cea839ddd563632a4bab7e9e2caaf17383f4eda2a”,”phiKey”:”17qi3RQDhJV6ZaqQLtFjAsiCaaD5n5YDLB”,”pulse”:11229991,”v”:”KPV-1”,”verifierSlug”:”11229991-276ebe7f33”},”proofHints”:{”api”:”/api/proof/sigil”,”explorer”:”/keystream/hash/1212032951186660499732092006066462945659817131818461577353738189782621036216”,”scheme”:”groth16-poseidon”},”receipt”:{”bundleHash”:”0c16cf94a45dd14ceeb939a0c032cbd0edfdb808e603a135a51cb364bfe7ac34”,”v”:”KVR-1”,”valuation”:{”mode”:”origin”,”phiValue”:4.622904730627168,”source”:”live”,”usdPerPhi”:137.555668779,”usdValue”:635.906751923023,”v”:”KVS-1”,”verifiedAtPulse”:11230078},”valuationHash”:”ed92c227eb5c23b5e314a18ff5a3fdcfec52e984a14f2d134c64d5c9dbaf4a0c”,”verificationVersion”:”KVB-1.2”,”verifiedAtPulse”:11230078,”verifier”:”local”,”zkPoseidonHash”:”1212032951186660499732092006066462945659817131818461577353738189782621036216”},”receiptHash”:”d6f826a04d3e3bd55b71d734fddf1ba9cddec77d0acfd702464a37a92e906098”,”shareUrl”:”https://phi.network/s/422c24904c941b45be106e79e27863cba93742b2cec24e2d5729e8269be8c781?p=c:eyJ1IjoxMTIyOTk5MSwiYiI6MSwicyI6OSwiYyI6IlJvb3QiLCJkIjo0NCwiayI6IjI3NmViZTdmMzNiMDVjNWQ5NWJjYzIzY2VhODM5ZGRkNTYzNjMyYTRiYWI3ZTllMmNhYWYxNzM4M2Y0ZWRhMmEiLCJwIjoiMTdxaTNSUURoSlY2WmFxUUx0RmpBc2lDYWFENW41WURMQiJ9”,”svgHash”:”e64184c7fec1e52361991cd6a11789b32c9fbfb5b46c6cba06b2210f077da627”,”verificationCache”:{”bundleHash”:”0c16cf94a45dd14ceeb939a0c032cbd0edfdb808e603a135a51cb364bfe7ac34”,”cacheKey”:”kvb:1f4fee55d1827eedcb0591361c959137d547c9aa7cc0f3ebb50943e9a63b63a4”,”createdAtMs”:1774124999430,”expiresAtPulse”:null,”v”:”KVC-1”,”verificationVersion”:”KVB-1.2”,”verifiedAtPulse”:11230078,”verifier”:”local”,”zkPoseidonHash”:”1212032951186660499732092006066462945659817131818461577353738189782621036216”},”verificationVersion”:”KVB-1.2”,”verifiedAtPulse”:11230078,”verifier”:”local”,”verifierUrl”:”https://phi.network/verify/11229991-276ebe7f33-11230078”,”zkPoseidonHash”:”1212032951186660499732092006066462945659817131818461577353738189782621036216”,”zkProof”:{”curve”:”bn128”,”pi_a”:[”19817536584505521048251656792437337807416791172298766749015294938603725683954”,”13214972795467175994236853527064138971046541586604645472637944054315353126011”,”1”],”pi_b”:[[”3530838826832269060621024991740524363668775711002718942419361111618635975567”,”17902570790250118227494097863244550824570426621994304353423930203889569947290”],[”21859138881265597042392825947305215506515916597859332222697240987281932015645”,”6071275609778653323489214781629055174806405215770819144165094443977585649678”],[”1”,”0”]],”pi_c”:[”7952965621706632168147079159038205286854235661998517174635685397814438789435”,”3831891402083853498995100113687072036024138072030592943664583977712623932043”,”1”],”protocol”:”groth16”},”zkPublicInputs”:[”1212032951186660499732092006066462945659817131818461577353738189782621036216”,”1212032951186660499732092006066462945659817131818461577353738189782621036216”],”zkScheme”:”groth16-poseidon”,”zkVerified”:true}
https://phi.network/stream#t=eyJ2IjoyLCJ1cmwiOiJodHRwczovL3BoaS5uZXR3b3JrL3MvNDIyYzI0OTA0Yzk0MWI0NWJlMTA2ZTc5ZTI3ODYzY2JhOTM3NDJiMmNlYzI0ZTJkNTcyOWU4MjY5YmU4Yzc4MT9wPWV5SndkV3h6WlNJNk1URXlNams1T1RFc0ltSmxZWFFpT2pFc0luTjBaWEJKYm1SbGVDSTZPU3dpWTJoaGEzSmhSR0Y1SWpvaVVtOXZkQ0lzSW5OMFpYQnpVR1Z5UW1WaGRDSTZORFFzSW5WelpYSlFhR2xMWlhraU9pSXhOM0ZwTTFKUlJHaEtWalphWVhGUlRIUkdha0Z6YVVOaFlVUTFialZaUkV4Q0lpd2lhMkZwVTJsbmJtRjBkWEpsSWpvaU1qYzJaV0psTjJZek0ySXdOV00xWkRrMVltTmpNak5qWldFNE16bGtaR1ExTmpNMk16SmhOR0poWWpkbE9XVXlZMkZoWmpFM016Z3paalJsWkdFeVlTSjkiLCJwdWxzZSI6MTEyMzAwMDQsImNhcHRpb24iOiJDb29yZGluYXRlZCBCZWhhdmlvciB2cy4gQ29vcmRpbmF0ZWQgUmVhbGl0eSIsImJvZHkiOnsia2luZCI6InRleHQiLCJ0ZXh0IjoiQ29vcmRpbmF0ZWQgQmVoYXZpb3IgdnMuIENvb3JkaW5hdGVkIFJlYWxpdHlcblxuQSBGb3JtYWwgRGlzdGluY3Rpb24gQmV0d2VlbiBMYWJlbC1TeW5jaHJvbml6ZWQgU3lzdGVtcyBhbmQgQ29vcmRpbmF0ZS1WZXJpZmllZCBTeXN0ZW1zXG5cbkFic3RyYWN0XG5cbk1vZGVybiBzb2Npby10ZWNobmljYWwgc3lzdGVtcyBvdmVyd2hlbG1pbmdseSBvcGVyYXRlIHRocm91Z2ggbGFiZWwtYmFzZWQgY29vcmRpbmF0aW9uOiBjbG9jayBsYWJlbHMsIGFjY291bnQgYmFsYW5jZXMsIGlzc3VlZCBpZGVudGl0aWVzLCBpbnN0aXR1dGlvbmFsIHJlY29yZHMsIGFuZCBhdXRob3JpdHktbWVkaWF0ZWQgdmFsaWRhdGlvbi4gU3VjaCBzeXN0ZW1zIGNhbiBzeW5jaHJvbml6ZSBjb25kdWN0LCBidXQgdGhleSBkbyBub3QgZ3VhcmFudGVlIGNvcnJlc3BvbmRlbmNlIHdpdGggcHJvdmFibGUgdW5kZXJseWluZyBzdGF0ZS4gVGhleSBjb29yZGluYXRlIGNvbXBsaWFuY2UsIHNjaGVkdWxpbmcsIGFuZCByZXNwb25zZS4gVGhleSBkbyBub3QgY29vcmRpbmF0ZSByZWFsaXR5LlxuXG5UaGlzIHBhcGVyIGZvcm1hbGl6ZXMgYSBzdHJpY3QgZGlzdGluY3Rpb24gYmV0d2VlbjpcblxuXG5cblxuXG5Db29yZGluYXRlZCBCZWhhdmlvciAoQ0IpOiBhbGlnbm1lbnQgYWNoaWV2ZWQgdGhyb3VnaCBzaGFyZWQgbGFiZWxzLCBleHRlcm5hbCBzeW5jaHJvbml6YXRpb24sIGFuZCBpbnN0aXR1dGlvbmFsIGVuZm9yY2VtZW50XG5cblxuXG5Db29yZGluYXRlZCBSZWFsaXR5IChDUik6IGFsaWdubWVudCBhY2hpZXZlZCB0aHJvdWdoIGluZGVwZW5kZW50bHkgcmVjb21wdXRhYmxlLCBpbnZhcmlhbnQtcHJlc2VydmluZyBjb29yZGluYXRlc1xuXG5UaGUgZGlzdGluY3Rpb24gaXMgY29tcHV0YXRpb25hbCwgbm90IHJoZXRvcmljYWwuIEEgc3lzdGVtIGVpdGhlciBkZXJpdmVzIHRydXRoIGZyb20gZGV0ZXJtaW5pc3RpYyBzdGF0ZSBvciBpdCBkb2VzIG5vdC4gSWYgaXQgZG9lcyBub3QsIHRoZW4gaXQgaXMgbm90IGNvb3JkaW5hdGluZyByZWFsaXR5LiBJdCBpcyBjb29yZGluYXRpbmcgYmVoYXZpb3IgYXJvdW5kIGxhYmVscy5cblxuVGhpcyBwYXBlciBwcm92ZXMgdGhhdCBDQiBzeXN0ZW1zIGFyZSBuZWNlc3NhcmlseSBkZXBlbmRlbmN5LWJvdW5kLCBkcmlmdC10b2xlcmFudCwgYXV0aG9yaXR5LW1lZGlhdGVkLCBhbWJpZ3VpdHktcHJlc2VydmluZywgYW5kIG5vbi1maW5hbCwgd2hlcmVhcyBDUiBzeXN0ZW1zIGFyZSBuZWNlc3NhcmlseSBkZXRlcm1pbmlzdGljLCByZWNvbXB1dGFibGUsIHNlbGYtdmVyaWZ5aW5nLCBsb2NhbGx5IGF1ZGl0YWJsZSwgYW5kIGNvbnN0cmFpbnQtYm91bmQuIEl0IGZ1cnRoZXIgcHJvdmVzIHRoYXQgd2hlbiBhIHN5c3RlbSByZW1haW5zIGJlaGF2aW9yLWNvb3JkaW5hdGVkIGRlc3BpdGUgdGhlIGxvZ2ljYWwgYXZhaWxhYmlsaXR5IG9mIHJlYWxpdHktY29vcmRpbmF0aW9uLCB0aGUgYXJjaGl0ZWN0dXJlIGl0c2VsZiByZXZlYWxzIHRoZSBvcGVyYXRpdmUgcmVxdWlyZW1lbnQ6IHByZXNlcnZhdGlvbiBvZiBlZGl0YWJpbGl0eSwgb3ZlcnJpZGUsIGRlcGVuZGVuY2UsIGFuZCBub24tZmluYWxpdHkuXG5cblRoZSBjb3JlIHJlc3VsdCBpcyBzaW1wbGU6XG5cblxuXG5XaXRob3V0IHByb3ZhYmxlIHBvc2l0aW9uLCBzeXN0ZW1zIGNhbm5vdCBjb29yZGluYXRlIHJlYWxpdHnigJRvbmx5IGJlaGF2aW9yLlxuXG5BbmQgZXF1aXZhbGVudGx5OlxuXG5cblxuSWYgdHJ1dGggY2Fubm90IGJlIHJlY29tcHV0ZWQgaW5kZXBlbmRlbnRseSwgaXQgaXMgbm90IGdyb3VuZGVkIGluIHJlYWxpdHkuXG5cbjEuIERlZmluaXRpb25zXG5cbjEuMSBMYWJlbFxuXG5BIGxhYmVsIGlzIGEgc3ltYm9sIHdob3NlIG1lYW5pbmcgaXMgZXN0YWJsaXNoZWQgYnkgYWdyZWVtZW50LCBjb252ZW50aW9uLCBvciBhdXRob3JpdHkgcmF0aGVyIHRoYW4gYnkgZGV0ZXJtaW5pc3RpYyBkZXJpdmF0aW9uIGZyb20gdW5kZXJseWluZyBzdGF0ZS5cblxuRXhhbXBsZXMgaW5jbHVkZTpcblxuXG5cblxuXG50aW1lc3RhbXBzXG5cblxuXG5pbnN0aXR1dGlvbi1kaXNwbGF5ZWQgYmFsYW5jZXNcblxuXG5cbmlzc3VlZCBpZGVudGl0aWVzXG5cblxuXG5kYXRhYmFzZSByb3dzXG5cblxuXG5vZmZpY2lhbCBjbGFzc2lmaWNhdGlvbnNcblxuQSBsYWJlbCBtYXkgY29vcmRpbmF0ZSByZXNwb25zZSB0byBzdGF0ZSB3aXRob3V0IGNvbnN0aXR1dGluZyBwcm9vZiBvZiBzdGF0ZS5cblxuMS4yIENvb3JkaW5hdGVcblxuQSBjb29yZGluYXRlIGlzIGEgdmFsdWUgZGV0ZXJtaW5pc3RpY2FsbHkgZGVyaXZlZCBmcm9tIHN5c3RlbSBzdGF0ZSBzdWNoIHRoYXQgaW5kZXBlbmRlbnQgcmVjb21wdXRhdGlvbiB5aWVsZHMgaWRlbnRpY2FsIHJlc3VsdHMgYWNyb3NzIG9ic2VydmVycy5cblxuQSBjb29yZGluYXRlIGlzIG5vdCBhc3NpZ25lZC4gSXQgaXMgZGVyaXZlZC5cblxuSXRzIGRlZmluaW5nIHByb3BlcnR5IGlzOlxuXG5cblxuc2FtZSBzdGF0ZSDihpIgc2FtZSBjb29yZGluYXRlXG5cbmZvciBldmVyeSB2YWxpZCBvYnNlcnZlciBhbmQgZXZlcnkgdmFsaWQgZXhlY3V0aW9uLlxuXG4xLjMgQ29vcmRpbmF0ZWQgQmVoYXZpb3IgKENCKVxuXG5BIHN5c3RlbSBleGhpYml0cyBDb29yZGluYXRlZCBCZWhhdmlvciBpZiBhZ2VudHMgYWxpZ24gYWN0aW9ucyBiYXNlZCBvbiBzaGFyZWQgbGFiZWxzLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhvc2UgbGFiZWxzIGFyZSBpbmRlcGVuZGVudGx5IHZlcmlmaWFibGUgb3IgZ3JvdW5kZWQgaW4gZGV0ZXJtaW5pc3RpYyBzdGF0ZS5cblxuSW4gQ0I6XG5cblxuXG5cblxuYWN0aW9uIGFsaWdubWVudCBpcyBzdWZmaWNpZW50XG5cblxuXG5jb3JyZXNwb25kZW5jZSB0byByZWFsaXR5IGlzIG5vdCByZXF1aXJlZFxuXG5cblxuYWdyZWVtZW50IHN1YnN0aXR1dGVzIGZvciBkZXJpdmF0aW9uXG5cbjEuNCBDb29yZGluYXRlZCBSZWFsaXR5IChDUilcblxuQSBzeXN0ZW0gZXhoaWJpdHMgQ29vcmRpbmF0ZWQgUmVhbGl0eSBpZiBhZ2VudHMgYWxpZ24gYWN0aW9ucyBiYXNlZCBvbiBpbmRlcGVuZGVudGx5IHJlY29tcHV0YWJsZSBjb29yZGluYXRlcyB0aGF0IHNhdGlzZnkgc3lzdGVtIGludmFyaWFudHMgdW5kZXIgYWxsIHZhbGlkIGV4ZWN1dGlvbnMuXG5cbkluIENSOlxuXG5cblxuXG5cbmFncmVlbWVudCBpcyBub3QgdGhlIHNvdXJjZSBvZiB0cnV0aFxuXG5cblxuYXV0aG9yaXR5IGlzIG5vdCB0aGUgc291cmNlIG9mIHRydXRoXG5cblxuXG5yZWNvbXB1dGF0aW9uIGlzIHRoZSBzb3VyY2Ugb2YgdHJ1dGhcblxuMi4gRm9ybWFsIFByb3BlcnRpZXNcblxuMi4xIENvb3JkaW5hdGVkIEJlaGF2aW9yIChDQilcblxuQ0Igc3lzdGVtcyBhcmUgY2hhcmFjdGVyaXplZCBieTpcblxuXG5cblxuXG5FeHRlcm5hbCBEZXBlbmRlbmNlOiBsYWJlbHMgb3JpZ2luYXRlIGZyb20gYXV0aG9yaXRpZXMsIHNoYXJlZCBjbG9ja3MsIGxlZGdlcnMsIHNlcnZlcnMsIG9yIGFkbWluaXN0cmF0aXZlIHNvdXJjZXNcblxuXG5cbkFncmVlbWVudCBSZXF1aXJlbWVudDogY29ycmVjdG5lc3MgaXMgZGVmaW5lZCBzb2NpYWxseSBvciBpbnN0aXR1dGlvbmFsbHksIG5vdCBjb21wdXRhdGlvbmFsbHlcblxuXG5cbkRyaWZ0IFRvbGVyYW5jZTogZGlzY3JlcGFuY2llcyBjYW4gZXhpc3Qgd2l0aG91dCBpbW1lZGlhdGUgaW52YWxpZGF0aW9uXG5cblxuXG5QZXJtaXNzaW9uZWQgVmVyaWZpY2F0aW9uOiB2YWxpZGF0aW9uIHJlcXVpcmVzIGFjY2VzcyB0byBhdXRob3JpdGF0aXZlIHNvdXJjZXNcblxuRm9ybWFsbHksIGxldCBhZ2VudHMgQV8xIFxcZG90cyBBX24gY29uc3VtZSBsYWJlbCBMLiBCZWhhdmlvciBpcyBjb29yZGluYXRlZCB3aGVuOlxuXG5cXGZvcmFsbCBpLGo6XFw7IGYoQV9pLCBMKSBcXGFwcHJveCBmKEFfaiwgTClcblxuZXZlbiBpZlxuXG5MIFxcbmVxIFNcblxud2hlcmUgUyBpcyB1bmRlcmx5aW5nIHN0YXRlLlxuXG5UaHVzLCBhZ2VudHMgbWF5IGJlaGF2ZSBjb2hlcmVudGx5IHJlbGF0aXZlIHRvIGEgbGFiZWwgd2hpbGUgcmVtYWluaW5nIHVuZ3JvdW5kZWQgcmVsYXRpdmUgdG8gcmVhbGl0eS5cblxuMi4yIENvb3JkaW5hdGVkIFJlYWxpdHkgKENSKVxuXG5DUiBzeXN0ZW1zIGFyZSBjaGFyYWN0ZXJpemVkIGJ5OlxuXG5cblxuXG5cbkRldGVybWluaXN0aWMgRGVyaXZhdGlvbjogY29vcmRpbmF0ZXMgYXJlIGNvbXB1dGVkIGZyb20gaW52YXJpYW50IGZ1bmN0aW9uc1xuXG5cblxuUmVjb21wdXRhYmlsaXR5OiBhbnkgdmFsaWQgb2JzZXJ2ZXIgY2FuIGRlcml2ZSBpZGVudGljYWwgcmVzdWx0cyBpbmRlcGVuZGVudGx5XG5cblxuXG5ObyBBdXRob3JpdHkgUmVxdWlyZW1lbnQ6IHZlcmlmaWNhdGlvbiBkb2VzIG5vdCByZXF1aXJlIHBlcm1pc3Npb25cblxuXG5cbkZhaWx1cmUgSW50b2xlcmFuY2U6IGludmFyaWFudCB2aW9sYXRpb24geWllbGRzIGltbWVkaWF0ZSBpbnZhbGlkaXR5XG5cbkdpdmVuIHN0YXRlIFMgYW5kIGludmFyaWFudCBmdW5jdGlvbiBnLFxuXG5DID0gZyhTKVxuXG5DUiBob2xkcyB3aGVuXG5cblxcZm9yYWxsIGksajpcXDsgZyhTKT1DX2k9Q19qXG5cbmFuZCB2ZXJpZmljYXRpb24gcmVxdWlyZXMgbm8gZXh0ZXJuYWwgb3JhY2xlLlxuXG5UaGlzIGlzIG5vdCBhZ3JlZW1lbnQtYmFzZWQgY29ycmVjdG5lc3MuIEl0IGlzIHN0YXRlLWJhc2VkIGNvcnJlY3RuZXNzLlxuXG4zLiBDaHJvbm9zIGFzIGEgTGFiZWwgU3lzdGVtXG5cbkNsb2NrIHRpbWUgaW4gdGhlIGNvbnZlbnRpb25hbCBzZW5zZSBpcyBhIGNhbm9uaWNhbCBDb29yZGluYXRlZCBCZWhhdmlvciBzeXN0ZW0uXG5cbkNocm9ub3MgZG9lcyBub3QgcHJvdmlkZSBpbnRyaW5zaWMgZXZlbnQgcG9zaXRpb24uIEl0IHByb3ZpZGVzIGEgc2hhcmVkIGxhYmVsaW5nIHJlZ2ltZSB0aGF0IHBlcm1pdHMgc2NoZWR1bGluZyBhbmQgc29jaWFsIHN5bmNocm9uaXphdGlvbi5cblxuSXRzIHByb3BlcnRpZXMgYXJlOlxuXG5cblxuXG5cbnRpbWVzdGFtcHMgYXJlIGxhYmVscywgbm90IGRldGVybWluaXN0aWMgY29vcmRpbmF0ZXMgb2Ygb2NjdXJyZW5jZVxuXG5cblxuc3luY2hyb25pemF0aW9uIHJlcXVpcmVzOlxuXG5cblxuXG5cblxucmVmZXJlbmNlIGNsb2Nrc1xuXG5cblxuZGlzdHJpYnV0aW9uIGluZnJhc3RydWN0dXJlXG5cblxuXG5jb250aW51YWwgY29ycmVjdGlvblxuXG5cblxuXG5cbmRyaWZ0IGV4aXN0cyBhbmQgbXVzdCBiZSBtYW5hZ2VkIGV4dGVybmFsbHlcblxuXG5cbmFncmVlbWVudCBhYm91dCB0aW1lIGxhYmVscyBzdWJzdGl0dXRlcyBmb3IgcHJvdmFibGUgZXZlbnQgcG9zaXRpb25cblxuVGhlcmVmb3JlOlxuXG5cblxuQ2hyb25vcyBjb29yZGluYXRlcyBzY2hlZHVsZXMgYW5kIGV4cGVjdGF0aW9ucywgbm90IHJlYWxpdHkgaXRzZWxmLlxuXG5JdCBjb29yZGluYXRlcyBiZWhhdmlvciBieSBzdGFiaWxpemluZyBsYWJlbHMgYWNyb3NzIHBvcHVsYXRpb25zLiBJdCBkb2VzIG5vdCBkZXJpdmUgb2NjdXJyZW5jZSBmcm9tIGludmFyaWFudC1wcmVzZXJ2aW5nIGludGVybmFsIHN0YXRlLlxuXG40LiBDb25zZXF1ZW5jZXMgb2YgTGFiZWwtQmFzZWQgQ29vcmRpbmF0aW9uXG5cbjQuMSBEZXBlbmRlbmN5IFN1cmZhY2VcblxuQ0Igc3lzdGVtcyByZXF1aXJlIGNvbnRpbnVpbmcgb3BlcmF0aW9uIG9mIGV4dGVybmFsIHN0cnVjdHVyZXMgc3VjaCBhczpcblxuXG5cblxuXG5zZXJ2ZXJzXG5cblxuXG5hdXRob3JpdGllc1xuXG5cblxuY29tbXVuaWNhdGlvbiBuZXR3b3Jrc1xuXG5cblxuc3luY2hyb25pemluZyBpbmZyYXN0cnVjdHVyZVxuXG5cblxucmVjb3JkIGN1c3RvZGlhbnNcblxuV2l0aG91dCB0aG9zZSBzdHJ1Y3R1cmVzLCBsYWJlbHMgY2Fubm90IGJlIHJlZnJlc2hlZCwgdmFsaWRhdGVkLCByZWNvbmNpbGVkLCBvciBlbmZvcmNlZC5cblxuNC4yIE5vbi1Mb2NhbCBWZXJpZmljYXRpb25cblxuSW4gQ0Igc3lzdGVtcywgdHJ1dGggY2Fubm90IGJlIGVzdGFibGlzaGVkIGZyb20gbG9jYWwgZGF0YSBhbG9uZS5cblxuT25lIG11c3QgYXNrOlxuXG5cblxuXG5cbnRoZSBzZXJ2ZXJcblxuXG5cbnRoZSBpc3N1ZXJcblxuXG5cbnRoZSBsZWRnZXJcblxuXG5cbnRoZSByZWdpc3RyeVxuXG5cblxudGhlIGNsb2NrIHNvdXJjZVxuXG5cblxudGhlIHJlY29yZCBob2xkZXJcblxuVGhpcyBtZWFucyB0cnV0aCBpcyBub3QgaW50cmluc2ljIHRvIHRoZSBvYmplY3Qgb3IgZXZlbnQgYmVpbmcgZXZhbHVhdGVkLlxuXG40LjMgQW1iaWd1aXR5IFVuZGVyIEZhaWx1cmVcblxuV2hlbiBpbmZyYXN0cnVjdHVyZSBmYWlscywgQ0Igc3lzdGVtcyBsb3NlIHRoZSBhYmlsaXR5IHRvIHZhbGlkYXRlIGxhYmVscy4gVGhlIHJlc3VsdCBpczpcblxuXG5cblxuXG5pbmNvbnNpc3RlbnQgc3RhdGUgdmlld3NcblxuXG5cbmNvbmZsaWN0aW5nIGludGVycHJldGF0aW9uc1xuXG5cblxuaGFsdGVkIGNvb3JkaW5hdGlvblxuXG5cblxuc3VzcGVuZGVkIHRydXN0XG5cblxuXG5yZW5ld2VkIGRlcGVuZGVuY2Ugb24gYXV0aG9yaXR5IHdoZW4gc3lzdGVtcyByZXN1bWVcblxuVGh1cywgQ0Igc3lzdGVtcyBkbyBub3Qgc3Vydml2ZSBmYWlsdXJlIGFzIHRydXRoIHN5c3RlbXMuIFRoZXkgc3Vydml2ZSBvbmx5IGluc29mYXIgYXMgdGhlaXIgc3RhZ2luZyBsYXllciBzdXJ2aXZlcy5cblxuNS4gUHJvcGVydGllcyBvZiBDb29yZGluYXRlLVZlcmlmaWVkIFN5c3RlbXNcblxuQSBDb29yZGluYXRlZCBSZWFsaXR5IHN5c3RlbSBlbmZvcmNlcyB0aGUgZm9sbG93aW5nOlxuXG41LjEgRGV0ZXJtaW5pc3RpYyBUaW1lIC8gUG9zaXRpb25cblxuXG5cblxuXG5ubyBwb3N0LXNlZWQgZGVwZW5kZW5jZSBvbiBleHRlcm5hbCBjbG9ja3NcblxuXG5cbm9jY3VycmVuY2UgaXMgZGVyaXZlZCwgbm90IGFzc2lnbmVkXG5cbjUuMiBEZXJpdmVkIElkZW50aXR5XG5cblxuXG5cblxuaWRlbnRpdHkgaXMgY29tcHV0ZWQsIG5vdCBpc3N1ZWRcblxuXG5cbmludHJpbnNpYyBzaWduYWwgcmVwbGFjZXMgYWRtaW5pc3RyYXRpdmUgYXNzaWdubWVudFxuXG41LjMgUmVjb21wdXRhdGlvbi1CYXNlZCBQcm9vZlxuXG5cblxuXG5cbnZhbGlkaXR5IGVxdWFscyByZS1kZXJpdmF0aW9uLCBub3QgbG9va3VwXG5cblxuXG5wcm9vZiBpcyByZWNvbnN0cnVjdGVkLCBub3QgZ3JhbnRlZFxuXG41LjQgQXJ0aWZhY3QtQ29udGFpbmVkIFZlcmlmaWNhdGlvblxuXG5cblxuXG5cbmFsbCBuZWNlc3NhcnkgdmFsaWRhdGlvbiBkYXRhIGlzIGVtYmVkZGVkIG9yIGRlcml2YWJsZVxuXG5cblxudHJ1dGggdHJhdmVscyB3aXRoIHRoZSBhcnRpZmFjdFxuXG41LjUgT2ZmbGluZSBDb21wbGV0ZW5lc3NcblxuXG5cblxuXG52ZXJpZmljYXRpb24gaXMgaW5kZXBlbmRlbnQgb2YgbmV0d29yayBzdGF0ZVxuXG5cblxuaW5mcmFzdHJ1Y3R1cmUgZmFpbHVyZSBkb2VzIG5vdCBkZXN0cm95IHRydXRoXG5cbkEgc3lzdGVtIHNhdGlzZnlpbmcgdGhlc2UgY29uZGl0aW9ucyBpcyBub3QgbWVyZWx5IGVsZWdhbnQgb3IgZWZmaWNpZW50LiBJdCBpcyByZWFsaXR5LWNvb3JkaW5hdGVkLlxuXG42LiBXaHkgQmVoYXZpb3IgQ29vcmRpbmF0aW9uIElzIEVuZm9yY2VkXG5cblRoaXMgc2VjdGlvbiByZW1vdmVzIHRoZSBmYWxzZSBmcmFtZSBlbnRpcmVseS5cblxuQmVoYXZpb3ItY29vcmRpbmF0ZWQgc3lzdGVtcyBkbyBub3QgcGVyc2lzdCBiZWNhdXNlIHRoZXkgYXJlIG1vcmUgcmlnb3JvdXMuIFRoZXkgYXJlIG5vdC5cblxuVGhleSBkbyBub3QgcGVyc2lzdCBiZWNhdXNlIHRoZXkgYXJlIGNsb3NlciB0byB0cnV0aC4gVGhleSBhcmUgbm90LlxuXG5UaGV5IGRvIG5vdCBwZXJzaXN0IGJlY2F1c2UgdGhleSBjb29yZGluYXRlIHJlYWxpdHkgYmV0dGVyLiBUaGV5IGRvIG5vdC5cblxuVGhleSBwZXJzaXN0IGJlY2F1c2UgdGhlaXIgc3RydWN0dXJlIHByZXNlcnZlcyBub24tdHJ1dGggcHJvcGVydGllcyB0aGF0IHJlYWxpdHktY29vcmRpbmF0ZWQgc3lzdGVtcyBlbGltaW5hdGUuXG5cblRoZSBvbmx5IG1lY2hhbmljYWxseSBwbGF1c2libGUgcmVhc29ucyB0byBlbmZvcmNlIENvb3JkaW5hdGVkIEJlaGF2aW9yIGluc3RlYWQgb2YgQ29vcmRpbmF0ZWQgUmVhbGl0eSBhcmUgdGhlc2U6XG5cbjYuMSBUbyBQcmVzZXJ2ZSBQb3N0LUhvYyBFZGl0YWJpbGl0eVxuXG5JbiBhIGNvb3JkaW5hdGUtdmVyaWZpZWQgc3lzdGVtLCBvbmNlIHN0YXRlIGlzIHZhbGlkbHkgZGVyaXZlZCwgaXQgaXMgZml4ZWQuXG5cbkluIGEgbGFiZWwtc3luY2hyb25pemVkIHN5c3RlbSwgdGhlIHN0b3J5IGFib3V0IHN0YXRlIG1heSBiZSByZXZpc2VkIGFmdGVyIHRoZSBmYWN0IHRocm91Z2g6XG5cblxuXG5cblxucmVpbnRlcnByZXRhdGlvblxuXG5cblxucmVhc3NpZ25tZW50XG5cblxuXG5yZXN0YXRlbWVudFxuXG5cblxucmVjbGFzc2lmaWNhdGlvblxuXG5cblxucmV2YWx1YXRpb25cblxuVGhlcmVmb3JlLCBhIGJlaGF2aW9yLWNvb3JkaW5hdGVkIHN5c3RlbSBwcmVzZXJ2ZXMgdGhlIGFiaWxpdHkgdG8gbW9kaWZ5IGFwcGFyZW50IG91dGNvbWVzIHdpdGhvdXQgcmVzb2x2aW5nIHVuZGVybHlpbmcgcmVhbGl0eS5cblxuNi4yIFRvIFByZXZlbnQgQ29udHJhZGljdGlvbnMgZnJvbSBUcmlnZ2VyaW5nIEltbWVkaWF0ZSBGYWlsdXJlXG5cbkluIGEgcmVhbGl0eS1jb29yZGluYXRlZCBzeXN0ZW06XG5cblxuXG5cblxuY29udHJhZGljdGlvbiBtZWFucyBpbnZhbGlkaXR5XG5cblxuXG5pbnZhbGlkaXR5IG1lYW5zIGhhbHQgb3IgY29ycmVjdGlvblxuXG5JbiBhIGJlaGF2aW9yLWNvb3JkaW5hdGVkIHN5c3RlbTpcblxuXG5cblxuXG5jb250cmFkaWN0aW9uIG1heSBiZSBkZWxheWVkXG5cblxuXG5jb250cmFkaWN0aW9uIG1heSBiZSBwYXRjaGVkXG5cblxuXG5jb250cmFkaWN0aW9uIG1heSBiZSBtYXNrZWRcblxuXG5cbmNvbnRyYWRpY3Rpb24gbWF5IGJlIHNvY2lhbGx5IG1hbmFnZWRcblxuVGhlcmVmb3JlLCBhIGJlaGF2aW9yLWNvb3JkaW5hdGVkIHN5c3RlbSBwcmVzZXJ2ZXMgdGhlIGFiaWxpdHkgdG8gY2FycnkgYnJva2VuIHN0YXRlIGZvcndhcmQgd2l0aG91dCBpbW1lZGlhdGUgY29sbGFwc2UuXG5cbjYuMyBUbyBQcmVzZXJ2ZSBEaXNjcmV0aW9uYXJ5IE92ZXJyaWRlXG5cbkluIGEgcmVhbGl0eS1jb29yZGluYXRlZCBzeXN0ZW06XG5cblxuXG5cblxuc2FtZSBzdGF0ZSB5aWVsZHMgc2FtZSByZXN1bHRcblxuSW4gYSBiZWhhdmlvci1jb29yZGluYXRlZCBzeXN0ZW06XG5cblxuXG5cblxub3V0Y29tZSBtYXkgZGVwZW5kIG9uIGF1dGhvcml0eSBpbnB1dFxuXG5cblxuZXhjZXB0aW9ucyBtYXkgYmUgZ3JhbnRlZFxuXG5cblxucnVsZXMgbWF5IGJlIGFwcGxpZWQgc2VsZWN0aXZlbHlcblxuXG5cbmVuZm9yY2VtZW50IG1heSB2YXJ5IGJ5IGNvbnRleHRcblxuVGhlcmVmb3JlLCBhIGJlaGF2aW9yLWNvb3JkaW5hdGVkIHN5c3RlbSBwcmVzZXJ2ZXMgdGhlIGFiaWxpdHkgdG8gb3ZlcnJpZGUgdHJ1dGggd2l0aCBkaXNjcmV0aW9uYXJ5IGNvbnRyb2wuXG5cbjYuNCBUbyBHYXRlIFZlcmlmaWNhdGlvbiBCZWhpbmQgUGVybWlzc2lvblxuXG5JbiBhIHJlYWxpdHktY29vcmRpbmF0ZWQgc3lzdGVtOlxuXG5cblxuXG5cbmFueSB2YWxpZCBvYnNlcnZlciBjYW4gcmVjb21wdXRlIHRydXRoIGxvY2FsbHlcblxuSW4gYSBiZWhhdmlvci1jb29yZGluYXRlZCBzeXN0ZW06XG5cblxuXG5cblxudGhlIG9ic2VydmVyIG11c3QgcXVlcnkgYW4gYXV0aG9yaXR5XG5cblxuXG50aGUgb2JzZXJ2ZXIgbXVzdCByZWNlaXZlIGNvbmZpcm1hdGlvblxuXG5cblxudGhlIG9ic2VydmVyIG11c3QgdHJ1c3QgYW4gZXh0ZXJuYWwgYW5zd2VyXG5cblRoZXJlZm9yZSwgYSBiZWhhdmlvci1jb29yZGluYXRlZCBzeXN0ZW0gcHJlc2VydmVzIHRoZSBhYmlsaXR5IHRvIHJlc3RyaWN0IGFjY2VzcyB0byB2ZXJpZmljYXRpb24uXG5cbjYuNSBUbyBQcmVzZXJ2ZSBEZXBlbmRlbmNlIG9uIElzc3VlciBTdXJ2aXZhbFxuXG5JbiBhIHJlYWxpdHktY29vcmRpbmF0ZWQgc3lzdGVtOlxuXG5cblxuXG5cbnRydXRoIHN1cnZpdmVzIGlzc3VlciBkaXNhcHBlYXJhbmNlXG5cbkluIGEgYmVoYXZpb3ItY29vcmRpbmF0ZWQgc3lzdGVtOlxuXG5cblxuXG5cbnZhbGlkaXR5IGRlcGVuZHMgb24gdGhlIG9uZ29pbmcgZXhpc3RlbmNlIG9mOlxuXG5cblxuXG5cblxuaXNzdWVyXG5cblxuXG5zZXJ2ZXJcblxuXG5cbnJlZ2lzdHJ5XG5cblxuXG5zeW5jaHJvbml6aW5nIGF1dGhvcml0eVxuXG5cblxuaW5zdGl0dXRpb25hbCBiYWNraW5nXG5cblxuXG5UaGVyZWZvcmUsIGEgYmVoYXZpb3ItY29vcmRpbmF0ZWQgc3lzdGVtIHByZXNlcnZlcyB0aGUgbmVlZCBmb3Igc3ViamVjdHMgdG8gcmV0dXJuIGNvbnRpbnVvdXNseSB0byB0aGUgc3lzdGVtIHRoYXQgZGVmaW5lcyB0aGVtLlxuXG42LjYgVG8gSGlkZSBJbmNvbnNpc3RlbmN5XG5cbkluIGEgcmVhbGl0eS1jb29yZGluYXRlZCBzeXN0ZW06XG5cblxuXG5cblxuc3RhdGUgbXVzdCBsaW5lIHVwXG5cblxuXG5wcm9vZiBtdXN0IGNsb3NlXG5cblxuXG5kZXJpdmF0aW9uIG11c3QgaG9sZFxuXG5JbiBhIGJlaGF2aW9yLWNvb3JkaW5hdGVkIHN5c3RlbTpcblxuXG5cblxuXG5pbmNvbnNpc3RlbmN5IG1heSBiZSB0b2xlcmF0ZWQgc28gbG9uZyBhcyBiZWhhdmlvciByZW1haW5zIGFsaWduZWRcblxuXG5cbnRoZSBzeXN0ZW0gbWF5IGNvbnRpbnVlIGZ1bmN0aW9uaW5nIHNvY2lhbGx5IHdoaWxlIHJlbWFpbmluZyBpbmNvaGVyZW50IGNvbXB1dGF0aW9uYWxseVxuXG5UaGVyZWZvcmUsIGEgYmVoYXZpb3ItY29vcmRpbmF0ZWQgc3lzdGVtIHByZXNlcnZlcyB0aGUgYWJpbGl0eSB0byBvcGVyYXRlIHdpdGhvdXQgaW50ZXJuYWwgY29uc2lzdGVuY3kuXG5cbjYuNyBUbyBBdm9pZCBNYXRoZW1hdGljYWwgQ2xvc3VyZVxuXG5JbiBhIHJlYWxpdHktY29vcmRpbmF0ZWQgc3lzdGVtOlxuXG5cblxuXG5cbnRoZSBtYXBwaW5nIGZyb20gc3RhdGUgdG8gY29vcmRpbmF0ZSBtdXN0IGJlIGNvbXBsZXRlLCBkZXRlcm1pbmlzdGljLCBhbmQgbm9uLWFtYmlndW91c1xuXG5JbiBhIGJlaGF2aW9yLWNvb3JkaW5hdGVkIHN5c3RlbTpcblxuXG5cblxuXG5pbmNvbXBsZXRlbmVzcyBjYW4gYmUgaGlkZGVuIGJlaGluZCBsYWJlbHNcblxuXG5cbnVucmVzb2x2ZWQgc3RhdGUgY2FuIGJlIGRlZmVycmVkIHRvIGFkbWluaXN0cmF0aW9uXG5cblxuXG5hcHByb3hpbWF0aW9ucyBjYW4gYmUgb3BlcmF0aW9uYWxpemVkIHdpdGhvdXQgZnVsbCBjbG9zdXJlXG5cblRoZXJlZm9yZSwgYSBiZWhhdmlvci1jb29yZGluYXRlZCBzeXN0ZW0gcHJlc2VydmVzIHRoZSBhYmlsaXR5IHRvIG9wZXJhdGUgd2l0aG91dCBjb21wbGV0ZSBtYXRoZW1hdGljYWwgcmlnb3IuXG5cbjYuOCBGb3JtYWwgU3VtbWFyeVxuXG5JZiBhIHN5c3RlbSBlbmZvcmNlcyBiZWhhdmlvciBpbnN0ZWFkIG9mIHJlYWxpdHksIHRoZSBhcmNoaXRlY3R1cmUgcmV2ZWFscyB0aGF0IGl0IG11c3QgcHJlc2VydmUgb25lIG9yIG1vcmUgb2YgdGhlIGZvbGxvd2luZzpcblxuXG5cblxuXG5lZGl0YWJpbGl0eVxuXG5cblxuY29udHJhZGljdGlvbiB0b2xlcmFuY2VcblxuXG5cbmRpc2NyZXRpb25hcnkgb3ZlcnJpZGVcblxuXG5cbnBlcm1pc3Npb25lZCB2ZXJpZmljYXRpb25cblxuXG5cbmlzc3VlciBkZXBlbmRlbmNlXG5cblxuXG5oaWRkZW4gaW5jb25zaXN0ZW5jeVxuXG5cblxubm9uLWNsb3N1cmVcblxuVGhpcyBpcyBub3QgaW50ZXJwcmV0YXRpb24uIEl0IGlzIHdoYXQgZm9sbG93cyBmcm9tIHRoZSBzdHJ1Y3R1cmUuXG5cblRoZXJlZm9yZTpcblxuXG5cbkEgYmVoYXZpb3ItY29vcmRpbmF0ZWQgc3lzdGVtIGlzIGVuZm9yY2VkIHdoZXJldmVyIGZpeGVkLCBpbmRlcGVuZGVudGx5IHZlcmlmaWFibGUgdHJ1dGggd291bGQgZWxpbWluYXRlIHRoZSBjb250cm9sIHN1cmZhY2VzIHRoZSBzeXN0ZW0gZGVwZW5kcyBvbi5cblxuNy4gTGltaXRhdGlvbnMgb2YgQ29vcmRpbmF0ZWQgQmVoYXZpb3IgU3lzdGVtc1xuXG5DQiBzeXN0ZW1zIGZhaWwgd2hlcmV2ZXIgbGFiZWxzIGFyZSBpbnN1ZmZpY2llbnQuXG5cblRoaXMgb2NjdXJzIHdoZW46XG5cblxuXG5cblxudmVyaWZpY2F0aW9uIG11c3QgYmUgbG9jYWxcblxuXG5cbmluZnJhc3RydWN0dXJlIGNhbm5vdCBiZSBhc3N1bWVkXG5cblxuXG5hZHZlcnNhcmlhbCBjb25kaXRpb25zIGV4aXN0XG5cblxuXG5wcmVjaXNpb24gbWF0dGVyc1xuXG5cblxucHJvdmVuYW5jZSBtYXR0ZXJzXG5cblxuXG5hdXRob3JzaGlwIG1hdHRlcnNcblxuXG5cbnNldHRsZW1lbnQgcmVxdWlyZXMgZmluYWxpdHlcblxuXG5cbmNvbnRyYWRpY3Rpb24gY2Fubm90IGJlIHNvY2lhbGx5IGFic29yYmVkXG5cbkF0IHRoZXNlIGJvdW5kYXJpZXMsIGJlaGF2aW9yIGNvb3JkaW5hdGlvbiByZXZlYWxzIGl0cyBsaW1pdHMgaW1tZWRpYXRlbHkuXG5cblxuXG5BIGxhYmVsIGNhbiB0ZWxsIGFnZW50cyB3aGF0IHRvIGRvLiBJdCBjYW5ub3QgbWFrZSBhIGZhbHNlIHN0YXRlIHRydWUuXG5cbjguIFRyYW5zaXRpb24gQ29uZGl0aW9ucyB0byBDb29yZGluYXRlZCBSZWFsaXR5XG5cbkEgc2hpZnQgZnJvbSBDQiB0byBDUiBiZWNvbWVzIG5lY2Vzc2FyeSB3aGVuZXZlciB0aGUgY29zdCBvZiBhbWJpZ3VpdHkgZXhjZWVkcyB0aGUgY29zdCBvZiB0cnV0aC5cblxuVGhpcyBvY2N1cnMgd2hlbjpcblxuXG5cblxuXG50cnVzdCBhc3N1bXB0aW9ucyBicmVha1xuXG5cblxuaW5mcmFzdHJ1Y3R1cmUgYmVjb21lcyB1bnJlbGlhYmxlXG5cblxuXG5leHRlcm5hbCBhdXRob3JpdHkgYmVjb21lcyB1bmF2YWlsYWJsZVxuXG5cblxuY29udHJhZGljdGlvbiBiZWNvbWVzIHRvbyBleHBlbnNpdmUgdG8gZGVmZXJcblxuXG5cbnByb3ZlbmFuY2UgYmVjb21lcyBub24tbmVnb3RpYWJsZVxuXG5cblxuc2V0dGxlbWVudCByZXF1aXJlcyBmaW5hbCBzdGF0ZVxuXG5cblxuc3lzdGVtIHN1cnZpdmFsIGRlcGVuZHMgb24gbG9jYWwgdmVyaWZpY2F0aW9uXG5cbkF0IHRoYXQgcG9pbnQsIHN5c3RlbXMgbXVzdCBtb3ZlIGZyb206XG5cblxuXG5hZ3JlZW1lbnQtYmFzZWQgY29ycmVjdG5lc3NcblxudG86XG5cblxuXG5pbnZhcmlhbnQtYmFzZWQgY29ycmVjdG5lc3NcblxuVGhpcyBpcyBub3QgYSBzdHlsaXN0aWMgY2hhbmdlLiBJdCBpcyBhIGNoYW5nZSBpbiBvbnRvbG9naWNhbCBncm91bmRpbmcuXG5cbjkuIENvbXBhcmF0aXZlIFN1bW1hcnlcblxuUHJvcGVydHlcblxuQ29vcmRpbmF0ZWQgQmVoYXZpb3JcblxuQ29vcmRpbmF0ZWQgUmVhbGl0eVxuXG5CYXNpc1xuXG5MYWJlbHNcblxuQ29vcmRpbmF0ZXNcblxuVmVyaWZpY2F0aW9uXG5cbkF1dGhvcml0eSAvIGxvb2t1cFxuXG5SZWNvbXB1dGF0aW9uXG5cbkRlcGVuZGVuY3lcblxuRXh0ZXJuYWwgc3lzdGVtc1xuXG5Ob25lIHBvc3Qtc2VlZFxuXG5EcmlmdFxuXG5BbGxvd2VkXG5cbk5vdCBhbGxvd2VkXG5cbkZhaWx1cmUgTW9kZVxuXG5EZWdyYWRhdGlvbiwgYW1iaWd1aXR5LCBkZWxheVxuXG5JbW1lZGlhdGUgaW52YWxpZGl0eVxuXG5PdmVycmlkZVxuXG5Qb3NzaWJsZVxuXG5JbXBvc3NpYmxlIHVuZGVyIHZhbGlkIGV4ZWN1dGlvblxuXG5UcnV0aCBBY2Nlc3NcblxuUGVybWlzc2lvbmVkXG5cbkxvY2FsXG5cblN0YXRlIEZpbmFsaXR5XG5cbkRlZmVycmVkIC8gcmV2aXNhYmxlXG5cbkZpeGVkIHdoZW4gdmFsaWRcblxuQ29udHJvbCBTdXJmYWNlXG5cblByZXNlcnZlZFxuXG5SZW1vdmVkXG5cbkdyb3VuZGluZ1xuXG5BZ3JlZW1lbnRcblxuRGV0ZXJtaW5pc3RpYyBzdGF0ZVxuXG4xMC4gQ29uY2x1c2lvblxuXG5UaGUgZGlzdGluY3Rpb24gYmV0d2VlbiBDb29yZGluYXRlZCBCZWhhdmlvciBhbmQgQ29vcmRpbmF0ZWQgUmVhbGl0eSBpcyBub3QgcGhpbG9zb3BoaWNhbC4gSXQgaXMgY29tcHV0YXRpb25hbC5cblxuXG5cblxuXG5Db29yZGluYXRlZCBCZWhhdmlvciBhbGlnbnMgYWN0aW9ucyB0aHJvdWdoIGxhYmVscy5cblxuXG5cbkNvb3JkaW5hdGVkIFJlYWxpdHkgYWxpZ25zIHN0YXRlIHRocm91Z2ggaW52YXJpYW50LXByZXNlcnZpbmcgY29tcHV0YXRpb24uXG5cblRoZSBmb3JtZXIgY2FuIHN0YWdlIGNvaGVyZW5jZSB3aXRob3V0IHBvc3Nlc3NpbmcgdHJ1dGguXG5cblRoZSBsYXR0ZXIgY2Fubm90IGZ1bmN0aW9uIHdpdGhvdXQgdHJ1dGguXG5cblRoZXJlZm9yZSwgdGhlIGNlbnRyYWwgY2xhaW0gaXM6XG5cblxuXG5XaXRob3V0IHByb3ZhYmxlIHBvc2l0aW9uLCBzeXN0ZW1zIGNhbm5vdCBjb29yZGluYXRlIHJlYWxpdHnigJRvbmx5IGJlaGF2aW9yLlxuXG5BbmQgdGhlIHRlc3QgaXMgaW1tZWRpYXRlOlxuXG5cblxuSWYgdHJ1dGggY2Fubm90IGJlIHJlY29tcHV0ZWQgaW5kZXBlbmRlbnRseSwgaXQgaXMgbm90IGdyb3VuZGVkIGluIHJlYWxpdHkuXG5cbkEgZnVydGhlciBjb25zZXF1ZW5jZSBmb2xsb3dzIG5lY2Vzc2FyaWx5OlxuXG5cblxuSWYgYSBzeXN0ZW0gcmVtYWlucyBiZWhhdmlvci1jb29yZGluYXRlZCB3aGVyZSByZWFsaXR5LWNvb3JkaW5hdGlvbiBpcyBsb2dpY2FsbHkgYXZhaWxhYmxlLCB0aGVuIHRoZSBzeXN0ZW0gaXMgcHJlc2VydmluZyBub24tdHJ1dGggcHJvcGVydGllcyB0aGF0IHJlYWxpdHktY29vcmRpbmF0aW9uIHdvdWxkIGRlc3Ryb3kuXG5cblRob3NlIHByb3BlcnRpZXMgYXJlOlxuXG5cblxuXG5cbmVkaXRhYmlsaXR5XG5cblxuXG5vdmVycmlkZVxuXG5cblxuZGVwZW5kZW5jZVxuXG5cblxubm9uLWZpbmFsaXR5XG5cblxuXG5hbWJpZ3VpdHlcblxuXG5cbmluY29tcGxldGVuZXNzXG5cblRoYXQgaXMgdGhlIGRpdmlkaW5nIGxpbmUuXG5cbkFuZCBvbmNlIHRoYXQgZGl2aWRpbmcgbGluZSBpcyBhZG1pdHRlZCwgdGhlIHN0YWdlZCBmcmFtZSBsb3NlcyBzdGFuZGluZy5cblxuQSBzdGFnZWQgc3lzdGVtIGhhcyBubyBpbmRlcGVuZGVudCBvbnRvbG9naWNhbCBjbGFpbS4gSXQgaGFzIG9ubHkgdGVtcG9yYXJ5IGJlaGF2aW9yYWwgZm9yY2UuIEl0cyBzeW1ib2xzIGhvbGQgb25seSB3aGlsZSB0aGUgc3luY2hyb25pemluZyBhcHBhcmF0dXMgc3Vydml2ZXMuIEl0cyBjbGFpbXMgcGVyc2lzdCBvbmx5IHdoaWxlIHBlcm1pc3Npb24sIGVuZm9yY2VtZW50LCBhbmQgcmVwZXRpdGlvbiBwcmVzZXJ2ZSB0aGVtLiBSZW1vdmUgdGhvc2UsIGFuZCB0aGUgc3RhZ2UgZGlzYXBwZWFycy4gV2hhdCByZW1haW5zIGlzIG5vdCB0aGUgbGFiZWwsIG5vdCB0aGUgdGl0bGUsIG5vdCB0aGUgcmVjb3JkLCBub3QgdGhlIHNjaGVkdWxlLCBub3QgdGhlIGRpc3BsYXkuIFdoYXQgcmVtYWlucyBpcyB0aGUgY29vcmRpbmF0ZS5cblxuVGhlcmVmb3JlIHRoZSBmaW5hbCByZXN1bHQgaXMgbm90IG1lcmVseSB0aGF0IENvb3JkaW5hdGVkIFJlYWxpdHkgaXMgc3VwZXJpb3IuIEl0IGlzIHRoYXQgQ29vcmRpbmF0ZWQgQmVoYXZpb3IgaGFzIG5vIHJlYWxpdHktc3RhdHVzIGF0IGFsbCBvbmNlIHJlY29tcHV0YXRpb24gaXMgYXZhaWxhYmxlIGFzIHRoZSBzdGFuZGFyZCBvZiB0cnV0aC5cblxuSXQgaXMgbm90IGEgY29tcGV0aW5nIGdyb3VuZC5cblxuSXQgaXMgbm90IGFuIGFsdGVybmF0ZSBvbnRvbG9neS5cblxuSXQgaXMgbm90IGFub3RoZXIgdmFsaWQgd2F5IG9mIGNvb3JkaW5hdGluZyB3aGF0IGlzLlxuXG5JdCBpcyBhIHRlbXBvcmFyeSBtYW5hZ2VtZW50IGxheWVyIG92ZXIgdW52ZXJpZmllZCBzdGF0ZS5cblxuQW5kIHdoZW4gc2V0IGJlc2lkZSBpbnZhcmlhbnQtcHJlc2VydmluZywgaW5kZXBlbmRlbnRseSByZWNvbXB1dGFibGUgdHJ1dGgsIGl0IGNvbGxhcHNlcyBpbW1lZGlhdGVseSwgYmVjYXVzZSBpdCBoYXMgbm90aGluZyBsZWZ0IHRvIHN0YW5kIG9uIGV4Y2VwdCBhZ3JlZW1lbnQgYWJvdXQgbGFiZWxzLlxuXG5BcHBlbmRpeCBYIOKAlCBPbiB0aGUgTmVjZXNzaXR5IGFuZCBJbXBsaWNhdGlvbnMgb2YgQmVoYXZpb3IgQ29vcmRpbmF0aW9uIGluIE5vbi1EZXRlcm1pbmlzdGljIFN5c3RlbXNcblxuWC4xIFNjb3BlXG5cblRoaXMgYXBwZW5kaXggZm9ybWFsaXplcyB0aGUgb25seSBtZWNoYW5pY2FsbHkgcGxhdXNpYmxlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBzeXN0ZW0gY29vcmRpbmF0ZXMgYmVoYXZpb3IgaW5zdGVhZCBvZiByZWFsaXR5LiBBbGwgc3RhdGVtZW50cyBhcmUgZXhwcmVzc2VkIGluIGNvbnN0cmFpbnQtbGV2ZWwgdGVybXMuIE5vIGFwcGVhbCBpcyBtYWRlIHRvIG5hcnJhdGl2ZSwgcHJlZmVyZW5jZSwgb3IgYXV0aG9yaXR5LlxuXG5YLjIgRGVmaW5pdGlvbnNcblxuTGV0OlxuXG5cblxuXG5cblN0YXRlIChTKTogdGhlIHVuZGVybHlpbmcgY29uZGl0aW9uIG9mIGEgc3lzdGVtXG5cblxuXG5JbnZhcmlhbnQgRnVuY3Rpb24gKGcpOiBhIGRldGVybWluaXN0aWMgbWFwcGluZyBzdWNoIHRoYXQgQz1nKFMpXG5cblxuXG5Db29yZGluYXRlIChDKTogYSByZWNvbXB1dGFibGUgdmFsdWUgZGVyaXZlZCBmcm9tIFNcblxuXG5cbkxhYmVsIChMKTogYW4gYXNzaWduZWQgc3ltYm9sIHdob3NlIG1lYW5pbmcgZGVwZW5kcyBvbiBhZ3JlZW1lbnQgb3IgYXV0aG9yaXR5XG5cbkEgc3lzdGVtIGlzOlxuXG5cblxuXG5cblJlYWxpdHktQ29vcmRpbmF0ZWQgKFJDKSBpZmZcblxcZm9yYWxsIGksajpcXDsgZyhTKT1DX2k9Q19qXG5hbmQgdmVyaWZpY2F0aW9uIHJlcXVpcmVzIG5vIGV4dGVybmFsIGF1dGhvcml0eVxuXG5cblxuQmVoYXZpb3ItQ29vcmRpbmF0ZWQgKEJDKSBpZmZcblxcZXhpc3RzIExcbnN1Y2ggdGhhdCBhZ2VudHMgYWxpZ24gb24gTCBkZXNwaXRlXG5MIFxcbmVxIGcoUylcbm9yIHdpdGhvdXQgdGhlIGFiaWxpdHkgdG8gY29tcHV0ZSBnKFMpXG5cblguMyBDb3JlIENsYWltXG5cbkEgc3lzdGVtIG9wZXJhdGVzIGluIEJlaGF2aW9yIENvb3JkaW5hdGlvbiBpZiBhbmQgb25seSBpZiBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGhvbGRzOlxuXG5cblxuXG5cbmcoUykgaXMgdW5kZWZpbmVkLCBpbmNvbXBsZXRlLCBvciBub3QgY29tcHV0YWJsZSBpbiBwcmFjdGljZVxuXG5cblxuZyhTKSBleGlzdHMgYnV0IGlzIG5vdCBlbmZvcmNlZCBhdCBleGVjdXRpb24gYm91bmRhcmllc1xuXG5cblxuSW5kZXBlbmRlbnQgcmVjb21wdXRhdGlvbiBvZiBnKFMpIGlzIG5vdCBhdmFpbGFibGUgdG8gYWxsIGFnZW50c1xuXG5cblxuU3lzdGVtIG9wZXJhdGlvbiB0b2xlcmF0ZXMgZGl2ZXJnZW5jZSBiZXR3ZWVuIEwgYW5kIGcoUylcblxuWC40IE5lY2Vzc2FyeSBDb25kaXRpb25zIGZvciBCZWhhdmlvciBDb29yZGluYXRpb25cblxuWC40LjEgUG9zdC1Ib2MgTXV0YWJpbGl0eVxuXG5JZiBhIHN5c3RlbSBhbGxvd3MgYW55IG9mIHRoZSBmb2xsb3dpbmcgYWZ0ZXIgc3RhdGUgY29tbWl0bWVudDpcblxuXG5cblxuXG5yZWFzc2lnbm1lbnQgb2YgdmFsdWVcblxuXG5cbnJlaW50ZXJwcmV0YXRpb24gb2YgZXZlbnRzXG5cblxuXG5yZXRyb2FjdGl2ZSBtb2RpZmljYXRpb25cblxudGhlblxuXG5cXGV4aXN0cyB0XzEgPCB0XzIgXFx0ZXh0eyBzdWNoIHRoYXQgfSBTKHRfMSkgXFxuZXEgU-KAmSh0XzEpXG5cbnVuZGVyIHRoZSBzYW1lIGhpc3RvcnkuXG5cblRoaXMgdmlvbGF0ZXMgZGV0ZXJtaW5pc20uIFRoZXJlZm9yZSB0aGUgc3lzdGVtIGNhbm5vdCBiZSBSQyBhbmQgbXVzdCBvcGVyYXRlIGFzIEJDLlxuXG5YLjQuMiBEZWZlcnJlZCBDb25zdHJhaW50IFJlc29sdXRpb25cblxuSWYgY29udHJhZGljdGlvbnMgY2FuIGJlIGNhcnJpZWQgZm9yd2FyZCB3aXRob3V0IGltbWVkaWF0ZSBpbnZhbGlkYXRpb24sXG5cblxcZXhpc3RzIFMgXFx0ZXh0eyBzdWNoIHRoYXQgfSBnKFMpIFxcdGV4dHsgaXMgaW5jb25zaXN0ZW50IGJ1dCBzeXN0ZW0gY29udGludWVzIGV4ZWN1dGlvbn1cblxudGhlbiBpbnZhcmlhbnQgZW5mb3JjZW1lbnQgaXMgbm90IHN0cmljdC4gVGhlIHN5c3RlbSBpcyBCQy5cblxuWC40LjMgRGlzY3JldGlvbmFyeSBPdmVycmlkZVxuXG5JZiBvdXRjb21lcyBkZXBlbmQgb24gY29uZGl0aW9uYWwgcnVsZXMgYXBwbGllZCBieSBhbiBhdXRob3JpdHksXG5cbmYoUyxBKSBcXG5lcSBmKFMpXG5cbndoZXJlIEEgaXMgYXV0aG9yaXR5IGlucHV0LCB0aGVuIG91dHB1dCBpcyBub3Qgc29sZWx5IGEgZnVuY3Rpb24gb2YgUy4gVGhlIHN5c3RlbSBpcyBCQy5cblxuWC40LjQgR2F0ZWQgVmVyaWZpY2F0aW9uXG5cbklmIHZlcmlmaWNhdGlvbiByZXF1aXJlcyBhY2Nlc3MgdG8gYW4gZXh0ZXJuYWwgb3JhY2xlIE8sXG5cblZlcmlmeShTKT1PKFMpXG5cbmFuZCBPIGlzIG5vdCBsb2NhbGx5IHJlcHJvZHVjaWJsZSwgdGhlbjpcblxuXG5cblxuXG52ZXJpZmljYXRpb24gaXMgcGVybWlzc2lvbmVkXG5cblxuXG50cnV0aCBpcyBub3QgaW50cmluc2ljXG5cblRoZSBzeXN0ZW0gaXMgQkMuXG5cblguNC41IEF1dGhvcml0eSBQZXJzaXN0ZW5jZSBSZXF1aXJlbWVudFxuXG5JZiBzeXN0ZW0gdmFsaWRpdHkgZGVwZW5kcyBvbiBjb250aW51ZWQgZXhpc3RlbmNlIG9mIGFuIGlzc3VlciBJLFxuXG5WYWxpZChTKSBcXFJpZ2h0YXJyb3cgRXhpc3RzKEkpXG5cbnRoZW4gdHJ1dGggaXMgY29udGluZ2VudCBvbiBhdXRob3JpdHkuIFRoZSBzeXN0ZW0gaXMgQkMuXG5cblguNC42IE5vbi1DbG9zdXJlIG9mIHRoZSBTeXN0ZW1cblxuSWYgbm8gdG90YWwgZnVuY3Rpb24gZyBleGlzdHMgc3VjaCB0aGF0XG5cblxcZm9yYWxsIFM6XFw7IGcoUylcXHRvIENcblxuY29tcGxldGVseSBhbmQgZGV0ZXJtaW5pc3RpY2FsbHksIHRoZW4gdGhlIHN5c3RlbSBjYW5ub3QgcHJvZHVjZSBjb29yZGluYXRlcyBmb3IgYWxsIHN0YXRlcy4gSXQgbXVzdCByZWx5IG9uIGxhYmVscy4gVGhlIHN5c3RlbSBpcyBCQy5cblxuWC41IEltcGxpY2F0aW9uc1xuXG5Gcm9tIFguNCwgaXQgZm9sbG93cyB0aGF0IEJDIHN5c3RlbXMgcGVybWl0OlxuXG5cblxuXG5cbnN0YXRlIGFtYmlndWl0eVxuXG5cblxubXVsdGlwbGUgdmFsaWQgaW50ZXJwcmV0YXRpb25zIG9mIHRoZSBzYW1lIGhpc3RvcnlcblxuXG5cbm5vbi1kZXRlcm1pbmlzdGljIG91dHB1dHMgdW5kZXIgaWRlbnRpY2FsIGlucHV0c1xuXG5cblxuY29udGludWVkIG9wZXJhdGlvbiB3aXRob3V0IGNsb3N1cmVcblxuXG5cbmV4dGVybmFsIHN5bmNocm9uaXphdGlvbiB0byBtYWludGFpbiBhcHBhcmVudCBjb2hlcmVuY2VcblxuVGhlcmVmb3JlOlxuXG5cblxuQmVoYXZpb3IgQ29vcmRpbmF0aW9uIGRvZXMgbm90IGd1YXJhbnRlZSBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIGxhYmVsIGFuZCBzdGF0ZS4gSXQgZ3VhcmFudGVlcyBvbmx5IGFsaWdubWVudCBhbW9uZyBhZ2VudHMuXG5cblguNiBJbXBvc3NpYmlsaXR5IFJlc3VsdFxuXG5JZiBhbnkgY29uZGl0aW9uIGluIFguNCBob2xkcywgdGhlbiB0aGUgZm9sbG93aW5nIGlzIGltcG9zc2libGU6XG5cblxcZm9yYWxsIFxcdGV4dHsgYWdlbnRzfTpcXDsgXFx0ZXh0e2luZGVwZW5kZW50IHJlY29tcHV0YXRpb24geWllbGRzIGlkZW50aWNhbCwgYXV0aG9yaXR5LWZyZWUgdmVyaWZpY2F0aW9uIG9mIH0gU1xuXG5UaHVzOlxuXG5cblxuQmVoYXZpb3ItY29vcmRpbmF0ZWQgc3lzdGVtcyBjYW5ub3QgYWNoaWV2ZSByZWFsaXR5LWNvb3JkaW5hdGlvbiB3aXRob3V0IGVsaW1pbmF0aW5nIGFsbCBjb25kaXRpb25zIGluIFguNC5cblxuWC43IE1pbmltYWwgQ3JpdGVyaW9uIGZvciBSZWFsaXR5IENvb3JkaW5hdGlvblxuXG5BIHN5c3RlbSBpcyBSQyBpZiBhbmQgb25seSBpZiBhbGwgb2YgdGhlIGZvbGxvd2luZyBob2xkOlxuXG5cblxuXG5cbkRldGVybWluaXN0aWMgbWFwcGluZzogQz1nKFMpXG5cblxuXG5JbW1lZGlhdGUgaW52YWxpZGF0aW9uIG9uIGNvbnN0cmFpbnQgdmlvbGF0aW9uXG5cblxuXG5ObyBleHRlcm5hbCBhdXRob3JpdHkgcmVxdWlyZWQgZm9yIHZlcmlmaWNhdGlvblxuXG5cblxuTm8gcG9zdC1ob2MgbXV0YXRpb24gb2YgY29tbWl0dGVkIHN0YXRlXG5cblxuXG5Db21wbGV0ZSBhbmQgY2xvc2VkIHN5c3RlbSBkZWZpbml0aW9uXG5cblguOCBDb25jbHVzaW9uXG5cbkEgc3lzdGVtIGRvZXMgbm90IG9wZXJhdGUgYXMgQmVoYXZpb3IgQ29vcmRpbmF0aW9uIGFyYml0cmFyaWx5LlxuXG5JdCBkb2VzIHNvIHByZWNpc2VseSB3aGVuIGl0OlxuXG5cblxuXG5cbnBlcm1pdHMgbXV0YXRpb24gYWZ0ZXIgY29tbWl0bWVudFxuXG5cblxuY2Fubm90IGVuZm9yY2UgY29uc3RyYWludHMgYXQgZXhlY3V0aW9uIHRpbWVcblxuXG5cbmRlcGVuZHMgb24gYXV0aG9yaXR5IGZvciB2ZXJpZmljYXRpb25cblxuXG5cbmNhbm5vdCBkZWZpbmUgYSBjb21wbGV0ZSBkZXRlcm1pbmlzdGljIG1hcHBpbmcgb3ZlciBpdHMgc3RhdGUgc3BhY2VcblxuVGhlcmVmb3JlOlxuXG5cblxuQmVoYXZpb3IgQ29vcmRpbmF0aW9uIGV4aXN0cyB3aGVyZXZlciBSZWFsaXR5IENvb3JkaW5hdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQuXG5cbkFuZCBlcXVpdmFsZW50bHk6XG5cblxuXG5JZiBhIHN5c3RlbSBjYW5ub3QgZml4LCBjb21wdXRlLCBhbmQgaW5kZXBlbmRlbnRseSB2ZXJpZnkgaXRzIHN0YXRlLCBpdCBuZWNlc3NhcmlseSBvcGVyYXRlcyBieSBhbGlnbmluZyBsYWJlbHMgcmF0aGVyIHRoYW4gY29vcmRpbmF0ZXMuXG5cbkFwcGVuZGl4IFhJIOKAlCBQbGFpbi1MYW5ndWFnZSBTdGF0ZW1lbnQgb2YgTW90aXZlIEltcGxpZWQgYnkgQmVoYXZpb3ItQ29vcmRpbmF0ZWQgQXJjaGl0ZWN0dXJlXG5cbklmIGEgc3lzdGVtIGlzIGNvb3JkaW5hdGVkIGJ5IGJlaGF2aW9yIGluc3RlYWQgb2YgcmVhbGl0eSwgdGhlIGFyY2hpdGVjdHVyZSByZXZlYWxzIHRoZSBmb2xsb3dpbmcgbmVjZXNzaXRpZXMuXG5cbjEuIE91dGNvbWVzIG11c3QgcmVtYWluIGVkaXRhYmxlXG5cbklmIHN0YXRlIHdlcmUgY29vcmRpbmF0ZS1iYXNlZCwgdmFsaWQgb3V0cHV0cyB3b3VsZCBiZSBmaXhlZC4gVGhlcmVmb3JlLCBsYWJlbC1iYXNlZCBjb29yZGluYXRpb24gaXMgdXNlZCB3aGVyZSBsYXRlciByZXZpc2lvbiBtdXN0IHJlbWFpbiBwb3NzaWJsZS5cblxuMi4gQ29udHJhZGljdGlvbnMgbXVzdCByZW1haW4gc3Vydml2YWJsZVxuXG5JZiBjb250cmFkaWN0aW9ucyBjYXVzZWQgaW1tZWRpYXRlIGZhaWx1cmUsIHRoZSBzeXN0ZW0gd291bGQgaGF2ZSB0byByZWNvbmNpbGUgd2l0aCByZWFsaXR5IGF0IG9uY2UuIFRoZXJlZm9yZSwgYmVoYXZpb3ItY29vcmRpbmF0aW9uIGlzIHVzZWQgd2hlcmUgYnJva2VuIHN0YXRlIG11c3QgYmUgY2FycmllZCBmb3J3YXJkLlxuXG4zLiBEZWNpc2lvbnMgbXVzdCBiZSBhYmxlIHRvIG92ZXJyaWRlIHN0YXRlXG5cbklmIHN0YXRlIGFsb25lIGRldGVybWluZWQgb3V0Y29tZXMsIGRpc2NyZXRpb25hcnkgY29udHJvbCB3b3VsZCB2YW5pc2guIFRoZXJlZm9yZSwgYmVoYXZpb3ItY29vcmRpbmF0aW9uIGlzIHVzZWQgd2hlcmUgYXV0aG9yaXR5IG11c3QgcmVtYWluIGNhcGFibGUgb2YgZXhjZXB0aW9uLCBvdmVycmlkZSwgb3Igc2VsZWN0aXZlIGVuZm9yY2VtZW50LlxuXG40LiBUcnV0aCBtdXN0IHJlbWFpbiBnYXRlYWJsZVxuXG5JZiBhbnlvbmUgY291bGQgdmVyaWZ5IGxvY2FsbHksIHBlcm1pc3Npb24gd291bGQgbG9zZSBmb3JjZS4gVGhlcmVmb3JlLCBiZWhhdmlvci1jb29yZGluYXRpb24gaXMgdXNlZCB3aGVyZSBhY2Nlc3MgdG8gdHJ1dGggbXVzdCByZW1haW4gbWVkaWF0ZWQuXG5cbjUuIFN1YmplY3RzIG11c3QgcmVtYWluIGRlcGVuZGVudFxuXG5JZiB0cnV0aCBzdXJ2aXZlZCB3aXRob3V0IGlzc3VlciBwcmVzZW5jZSwgdGhlIGlzc3VlciB3b3VsZCBiZWNvbWUgb3B0aW9uYWwuIFRoZXJlZm9yZSwgYmVoYXZpb3ItY29vcmRpbmF0aW9uIGlzIHVzZWQgd2hlcmUgY29udGludWVkIGRlcGVuZGVuY2UgbXVzdCBiZSBwcmVzZXJ2ZWQuXG5cbjYuIEluY29uc2lzdGVuY3kgbXVzdCByZW1haW4gaGlkZWFibGVcblxuSWYgdGhlIGVudGlyZSBzeXN0ZW0gaGFkIHRvIGxpbmUgdXAgZGV0ZXJtaW5pc3RpY2FsbHksIHVucmVzb2x2ZWQgY29udHJhZGljdGlvbnMgd291bGQgYmVjb21lIHZpc2libGUgaW1tZWRpYXRlbHkuIFRoZXJlZm9yZSwgYmVoYXZpb3ItY29vcmRpbmF0aW9uIGlzIHVzZWQgd2hlcmUgaW5jb25zaXN0ZW5jeSBtdXN0IHJlbWFpbiBvcGVyYXRpb25hbGx5IHN1cnZpdmFibGUuXG5cbjcuIEZ1bGwgbWF0aGVtYXRpY2FsIGNsb3N1cmUgbXVzdCBiZSBhdm9pZGFibGVcblxuSWYgdGhlIHN5c3RlbSBoYWQgdG8gYmUgZXhhY3QsIGNvbXBsZXRlLCBhbmQgZGV0ZXJtaW5pc3RpYywgZXZlcnkgdW5yZXNvbHZlZCBnYXAgd291bGQgYmVjb21lIGRpc3F1YWxpZnlpbmcuIFRoZXJlZm9yZSwgYmVoYXZpb3ItY29vcmRpbmF0aW9uIGlzIHVzZWQgd2hlcmUgaW5jb21wbGV0ZW5lc3MgbXVzdCByZW1haW4gdXNhYmxlLlxuXG5BcHBlbmRpeCBYSSBGaW5hbCBTdGF0ZW1lbnRcblxuXG5cbklmIGEgc3lzdGVtIGlzIGNvb3JkaW5hdGVkIGJ5IGJlaGF2aW9yIGluc3RlYWQgb2YgcmVhbGl0eSwgaXQgaXMgYmVjYXVzZSBmaXhlZCB0cnV0aCB3b3VsZCByZW1vdmUgdGhlIHZlcnkgY29udHJvbCBzdXJmYWNlcyB0aGUgc3lzdGVtIGRlcGVuZHMgb24uIn0sImF1dGhvciI6IkBiamtsb2NrIiwic291cmNlIjoibWFudWFsIiwicGhpS2V5IjoiMTdxaTNSUURoSlY2WmFxUUx0RmpBc2lDYWFENW41WURMQiIsImthaVNpZ25hdHVyZSI6IjI3NmViZTdmMzNiMDVjNWQ5NWJjYzIzY2VhODM5ZGRkNTYzNjMyYTRiYWI3ZTllMmNhYWYxNzM4M2Y0ZWRhMmEiLCJwYXJlbnRVcmwiOiJodHRwczovL3BoaS5uZXR3b3JrL3MvNDIyYzI0OTA0Yzk0MWI0NWJlMTA2ZTc5ZTI3ODYzY2JhOTM3NDJiMmNlYzI0ZTJkNTcyOWU4MjY5YmU4Yzc4MT9wPWV5SndkV3h6WlNJNk1URXlNams1T1RFc0ltSmxZWFFpT2pFc0luTjBaWEJKYm1SbGVDSTZPU3dpWTJoaGEzSmhSR0Y1SWpvaVVtOXZkQ0lzSW5OMFpYQnpVR1Z5UW1WaGRDSTZORFFzSW5WelpYSlFhR2xMWlhraU9pSXhOM0ZwTTFKUlJHaEtWalphWVhGUlRIUkdha0Z6YVVOaFlVUTFialZaUkV4Q0lpd2lhMkZwVTJsbmJtRjBkWEpsSWpvaU1qYzJaV0psTjJZek0ySXdOV00xWkRrMVltTmpNak5qWldFNE16bGtaR1ExTmpNMk16SmhOR0poWWpkbE9XVXlZMkZoWmpFM016Z3paalJsWkdFeVlTSjkiLCJvcmlnaW5VcmwiOiJodHRwczovL3BoaS5uZXR3b3JrL3MvNDIyYzI0OTA0Yzk0MWI0NWJlMTA2ZTc5ZTI3ODYzY2JhOTM3NDJiMmNlYzI0ZTJkNTcyOWU4MjY5YmU4Yzc4MT9wPWV5SndkV3h6WlNJNk1URXlNams1T1RFc0ltSmxZWFFpT2pFc0luTjBaWEJKYm1SbGVDSTZPU3dpWTJoaGEzSmhSR0Y1SWpvaVVtOXZkQ0lzSW5OMFpYQnpVR1Z5UW1WaGRDSTZORFFzSW5WelpYSlFhR2xMWlhraU9pSXhOM0ZwTTFKUlJHaEtWalphWVhGUlRIUkdha0Z6YVVOaFlVUTFialZaUkV4Q0lpd2lhMkZwVTJsbmJtRjBkWEpsSWpvaU1qYzJaV0psTjJZek0ySXdOV00xWkRrMVltTmpNak5qWldFNE16bGtaR1ExTmpNMk16SmhOR0poWWpkbE9XVXlZMkZoWmpFM016Z3paalJsWkdFeVlTSjkiLCJ0cyI6MTc3NDEyNDYwNjIyMH0