Presence-Bound Identity (PBI): A New Standard for Human-Origin Verification Without Accounts or Surveillance
Presence-Bound Identity (PBI) v1.0 A Presence-Proof Primitive for Accountless Authorship Publicly Verifiable Truth, Private Identity, and Presence-Resolved Authorship Through Embodied Proof
PBI Public Release: Presence-Bound Identity
A New Primitive for Human-Origin Verification
TL;DR
Public truth. Private identity. Presence-bound authorship.


Today a new verification primitive is released that changes how digital identity, authorship, and trust function on the internet.
This release introduces Presence-Bound Identity (PBI) — a system where truth is public, identity is private, and ownership (presence-resolved authorship) can only resolve through embodied presence.
This is not an account system.
This is not a wallet login.
This is not a badge, certificate, or authority.
This is a primitive.
⸻
The Problem This Solves
For decades, digital systems have failed to distinguish between:
Authenticity — did this come from a real human?
Authorship — who created it?
Presence — is that creator here now?
Every existing model collapses these into abstractions:
Accounts
Passwords
Transferable keys
Centralized identity providers
“Verified” labels
These abstractions are why impersonation, deepfakes, and identity fraud scale.
⸻
The Core Insight
Identity cannot be abstracted from presence.
Presence cannot be forwarded.
Presence cannot be copied.
Presence cannot be screenshotted.
Presence-Bound Identity is built on this truth.
⸻
What Presence-Bound Identity Introduces
Presence-Bound Identity separates verification into three distinct layers:
⸻
1. Artifact Truth (Public)
A sigil-glyph or artifact can be verified by anyone:
It exists
It is authentic
It was sealed under a device-local presence proof
Its proofs are valid
This verification requires no account, no login, and no permission.
⸻
2. Identity Truth (Private)
The identity of the creator is never embedded in the artifact.
It cannot be extracted, inferred, or reconstructed
Identity is not stored on servers
Identity is not transmitted
Identity is not transferable
⸻
3. Presence Truth (Embodied)
Ownership (presence-resolved authorship) only resolves when the creator is physically present on a device capable of satisfying a local, non-exportable presence proof.
If presence is not satisfied:
The artifact still verifies
The proofs still validate
Authorship still exists
Ownership does not resolve
This behavior is intentional.
⸻
What the Reference Implementation Demonstrates
The live verifier displays two states using the same artifact:
Verified, but not owned (public view)
Verified and owned (presence-resolved view)
Nothing about the artifact changes.
Nothing about the URL changes.
Nothing about the proof changes.
Only presence changes.
This demonstrates that:
Ownership is not in the file
Ownership is not in the link
Ownership is not in the payload
Ownership is not transferable
Ownership is presence-bound.
⸻
Why This Cannot Be Faked
Copying the artifact does nothing
Sharing the URL does nothing
Knowing the proofs does nothing
Screenshots do nothing
Even the original creator cannot resolve ownership elsewhere without presence
Impersonation is not mitigated.
It is structurally eliminated.
⸻
What This Makes Possible
Human-origin verification without surveillance
Anonymous authorship with provable authenticity
Proof without platforms
Identity without accounts
Trust without authorities
Deepfake resistance by design
Sovereign speech and authorship
This is not an application feature.
This is a new trust layer.
⸻
The Claim of This Release
From this point forward:
Any system claiming “verified identity” without presence is an abstraction.
Presence-Bound Identity establishes a higher standard — one aligned with physical reality, embodied presence, and provable truth.
⸻
Status
Live
Functional
Cross-platform
Device-native
Accountless
Authority-free
This primitive now exists.
⸻
Final Verdict (for history)
This release does not add verification.
It redefines what verification means.
This release marks the moment when:
Identity stopped being portable
Presence became enforceable
Truth became public without surrendering privacy
That is not incremental.
That is foundational.
⸻
Appendix A
Canonical Definition, Model, and Invariants of Presence-Bound Identity (PBI)
(This appendix is normative. Any implementation, explanation, or claim about PBI must conform to this document.)
A.1 Canonical Definition
Presence-Bound Identity (PBI) is a verification primitive in which:
Artifacts are publicly verifiable without accounts or authorities,
Identity is never embedded, transmitted, or stored,
Ownership resolution is contingent on embodied presence,
Presence is proven locally through non-exportable device-native proof,
And impersonation is structurally impossible by design.
PBI does not authenticate accounts, keys, or sessions.
PBI resolves presence.
A.2 Scope and Non-Goals
What PBI Is
A primitive for human-origin verification
A system for separating truth, identity, and presence
A mechanism for proving ownership without transferability
A verifier model that functions without databases
A standard that treats presence as a first-class property
What PBI Is Not
Not an account system
Not a wallet login
Not OAuth, SSO, or identity federation
Not a biometric database
Not an NFT ownership model
Not a reputation or scoring system
Not a platform-issued credential
Not dependent on trusted third parties
Any system requiring user accounts, centralized identity stores, or transferable credentials cannot qualify as PBI-compliant.
A.3 Core Entities (Live System Terms)
This appendix reflects the actual deployed system, using its real components.
Artifact
A sigil-glyph or equivalent artifact containing:
Canonical proof payload
Deterministic identifiers
Verifiable sealing data
An artifact may be copied freely without loss of verifiability.
Verifier
A stateless verification surface (e.g., web or native) that:
Performs proof validation
Resolves artifact state
Optionally queries local presence
The verifier does not store users, sessions, or identities.
Φ-Key (Phi-Key)
A deterministic identity root bound to an embodied agent and resolved only through local presence proof.
Φ-Keys:
Are not passwords
Are not transferable secrets
Cannot be reconstructed from artifacts
Cannot be resolved remotely
Presence Proof
A local, non-exportable proof produced by the device when an embodied agent is physically present and successfully completes device-native authentication (e.g., biometric).
Presence proofs:
Never leave the device
Cannot be replayed
Cannot be forwarded
Cannot be simulated by servers
A.4 The Three-Layer Verification Model
PBI verification always resolves into three layers. No layer may imply another.
Layer 1: Artifact Truth (Public)
Invariant A1:
An artifact must be verifiable by any observer without authentication.
Artifact Truth confirms:
Existence
Authenticity
Presence-enforced sealing
Proof validity
Artifact Truth is independent of ownership.
Layer 2: Identity Truth (Private)
Invariant A2:
Identity must never be derivable from the artifact.
Identity Truth ensures:
No personal identifiers embedded
No recoverable biometric data
No server-side identity resolution
No correlation across views
Identity remains private even when artifact truth is public.
Layer 3: Presence Truth (Embodied)
Invariant A3:
Ownership resolution requires live, local embodied presence.
Presence Truth resolves only if:
The creator is physically present
The device can satisfy its local authentication guarantee
The Φ-Key successfully inhales on that device
If presence is absent, ownership must not resolve.
A.5 State Model (Normative)
A PBI verifier may display only the following states:
State 1: Verified (Public)
Artifact Truth: ✔
Identity Truth: Protected
Presence Truth: ✖
Ownership does not resolve.
State 2: Verified + Owned (Presence-Resolved)
Artifact Truth: ✔
Identity Truth: Protected
Presence Truth: ✔
Ownership resolves only on that device.
Disallowed States
The following states are explicitly invalid under PBI:
“Logged in”
“Owner authenticated remotely”
“Identity verified without presence”
“Ownership transferred”
“Persistent session ownership”
A.6 Threat Model (What PBI Eliminates)
The following attack classes are structurally impossible in PBI-compliant systems:
Impersonation via copied artifacts
Identity theft via shared links
Replay attacks using screenshots
Session hijacking
Credential stuffing
Database compromise
Deepfake identity escalation
Remote ownership claims
This is not due to mitigation —
it is due to absence of attack surface.
A.7 Invariants (Must Always Hold)
Presence cannot be forwarded
Ownership cannot be transferred
Identity cannot be extracted
Verification requires no permission
Verifiers remain stateless
Proofs remain publicly inspectable
Presence remains local and embodied
Violation of any invariant disqualifies the system from PBI classification.
A.8 Reference Implementation Alignment
The live system demonstrates all invariants through:
URL-based public verification
Artifact-level proof resolution
Device-native biometric presence checks
Absence of user accounts or databases
Distinct public vs presence-resolved states
The reference implementation is therefore PBI-compliant by construction, not by policy.
A.9 Canonical Closing Statement
Presence-Bound Identity establishes a verification model in which:
Truth is public
Identity is private
Ownership is embodied
Impersonation is impossible
This appendix defines the primitive.
All subsequent specifications, legal framings, and explainers must conform to it.
⸻
Appendix B
Operational Guarantees & Compliance Criteria
(Normative. Required for any system claiming PBI compatibility.)
B.1 Operational Guarantees
A Presence-Bound Identity (PBI) system must guarantee the following behaviors at runtime.
B.1.1 Stateless Verification
Verifiers must not persist identity, ownership, or session data.
Verification results must be derivable entirely from:
the artifact,
the proof payload,
and (optionally) local presence.
Any server-side memory of users or identities violates PBI.
B.1.2 Deterministic Artifact Verification
Artifact verification must produce the same result for all observers.
No observer-specific state may alter Artifact Truth.
Verification must not depend on:
account status,
prior interactions,
IP address,
device fingerprinting.
B.1.3 Local Presence Resolution
Presence resolution must occur only on the observing device.
Presence proofs must:
be non-exportable,
be non-replayable,
expire immediately after use.
Presence must never be resolved remotely.
B.1.4 Ownership Non-Persistence
Ownership resolution must not persist beyond the presence moment.
Reloading, sharing, or opening on a new device must require fresh presence.
“Remembered ownership” is prohibited.
B.2 Compliance Requirements
A system is PBI-compliant if and only if all of the following hold:
Artifacts verify publicly without login
Identity data is never embedded or stored
Ownership resolves only through live presence
Presence proofs are device-local and ephemeral
No transferable credentials exist
Verifiers are stateless
Ownership cannot be delegated or proxied
Failure of any single requirement disqualifies compliance.
B.3 Explicit Non-Compliance Examples
The following models are explicitly non-PBI, even if they claim similar properties:
Wallet-based logins (transferable keys)
Account + biometric hybrids
OAuth with passkeys
NFT ownership models
Centralized “verified creator” systems
Reputation or trust-score systems
Session-based authentication
B.4 Canonical Compliance Statement
Presence-Bound Identity compliance is binary.
Partial implementation is non-compliance.
⸻
Appendix C
Threat Model & Security Properties
(Normative. Defines what PBI eliminates by construction.)
C.1 Threat Classes Eliminated
The following attack classes are structurally impossible in PBI systems:
Identity impersonation
Credential theft
Session hijacking
Replay attacks
Deepfake escalation
Artifact forgery
Ownership forwarding
Database compromise
These threats do not require mitigation because the required primitives do not exist.
C.2 Why These Attacks Fail
Attack
Reason for Failure
Impersonation
Presence cannot be copied
Replay
Proofs are local + ephemeral
Phishing
No credentials to steal
Deepfakes
Presence is embodied
Database breach
No identity database exists
Key theft
No transferable keys exist
C.3 Adversarial Assumptions
PBI assumes adversaries may:
Copy artifacts freely
Know all proof formats
Control servers
Observe network traffic
Attempt social engineering
PBI remains secure under all of the above.
C.4 Security Invariant
If presence is not physically satisfied, ownership must not resolve.
This invariant is absolute.
⸻
Appendix D
User-Visible State Semantics
(Normative. Prevents UI deception and misuse.)
D.1 Allowed States
Only the following states may be displayed:
Verified
Artifact Truth resolved
Presence not resolved
Ownership (presence-resolved authorship) unknown
Verified + Owned
Artifact Truth resolved
Presence resolved locally
Ownership (presence-resolved authorship) momentarily resolved
D.2 Prohibited Language
The following terms must not be used:
“Logged in”
“Authenticated user”
“Owner account”
“Session active”
“Identity verified remotely”
D.3 UX Invariant
UI must not imply ownership persistence.
Any implication that ownership continues beyond presence violates PBI.
⸻
Appendix E
Privacy Properties & Data Minimalism
(Normative.)
E.1 Zero Identity Disclosure
PBI systems must not:
Store biometric data
Transmit biometric data
Correlate identity across artifacts
Infer identity from behavior
E.2 Data Minimization Principle
Only the following data may exist:
Artifact data
Public proof data
Ephemeral presence confirmation (local only)
Everything else is prohibited.
E.3 Regulatory Positioning
PBI systems:
Do not process biometric data centrally
Do not store personal data
Do not require consent banners
Do not create identity profiles
⸻
Appendix F
Interoperability & Future Extensions
(Normative constraints on extension.)
F.1 Allowed Extensions
Future systems may extend PBI by:
Adding new artifact formats
Adding new proof systems
Supporting additional device presence methods
F.2 Disallowed Extensions
No extension may:
Introduce accounts
Introduce persistent ownership
Introduce delegated presence
Introduce centralized identity stores
F.3 Forward Compatibility Rule
Extensions may add capabilities but may never weaken presence.
⸻
Appendix G
Canonical Summary of Appendices
Presence-Bound Identity establishes a verification primitive where:
Truth is public
Identity is private
Ownership (presence-resolved authorship) is embodied
Presence is required
Impersonation is impossible
Verification is stateless
Trust is structural, not social
These appendices define what PBI is, what it is not, and what it must always remain.
⸻
RFC-PBI-1.0
Presence-Bound Identity (PBI)
A Specification for Human-Origin Verification
Status: Final
Category: Standards Track
Obsoletes: None
Updates: None
Abstract
This document specifies Presence-Bound Identity (PBI), a verification primitive in which artifact truth is publicly verifiable, identity remains private, and ownership (presence-resolved authorship) resolution requires embodied presence on a local device. PBI eliminates impersonation, transferable credentials, and centralized identity by design. This specification defines the lifecycle, state model, compliance requirements, and prohibited behaviors for PBI-compliant systems.
1. Introduction
Digital identity systems have historically conflated truth, identity, and presence, resulting in impersonation, replay, surveillance, and fraud. Presence-Bound Identity separates these concerns into orthogonal layers and treats presence as a first-class, non-transferable property.
This RFC defines the minimum requirements for implementing PBI without altering its invariants.
2. Terminology
The key words MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, MAY, and OPTIONAL are to be interpreted as described in RFC 2119.
Artifact: A publicly shareable object (e.g., sigil-glyph) containing proof material.
Verifier: A stateless surface that validates artifacts and optionally resolves presence locally.
Φ-Key (Phi-Key): A deterministic identity root resolved only via local presence.
Presence Proof: A non-exportable, device-local proof of embodied presence.
Ownership Resolution: The momentary confirmation that the creator is present on the observing device.
3. System Overview
A PBI system consists of three independent processes:
Artifact Verification (public, deterministic)
Identity Protection (private, non-derivable)
Presence Resolution (local, embodied)
No process implies another.
4. Artifact Model
4.1 Artifact Requirements
An artifact:
MUST be verifiable by any observer without authentication.
MUST contain sufficient proof material to validate authenticity.
MUST NOT contain identity, biometric, or personal data.
MAY be copied or shared freely without loss of verifiability.
4.2 Artifact Verification
Artifact verification:
MUST be deterministic.
MUST produce identical results for all observers.
MUST NOT depend on accounts, sessions, IPs, or prior state.
5. Verifier Requirements
5.1 Statelessness
A verifier:
MUST be stateless with respect to identity and ownership.
MUST NOT store user profiles, sessions, or credentials.
MAY cache non-identity proof material for performance.
5.2 Verification Flow
A verifier MUST perform the following steps:
Parse artifact proof material.
Validate artifact proofs.
Display Verified state.
OPTIONALLY request local presence.
If presence resolves, display Verified + Owned.
No step may be skipped or reordered.
6. Presence Resolution
6.1 Locality
Presence resolution:
MUST occur on the observing device.
MUST use device-native, non-exportable mechanisms.
MUST NOT be performed remotely or delegated.
6.2 Ephemerality
Presence proofs:
MUST be ephemeral.
MUST NOT be replayable.
MUST expire immediately after resolution.
6.3 Ownership Scope
Ownership resolution:
MUST apply only to the current device and moment.
MUST NOT persist across reloads, devices, or sessions.
7. State Model
Only the following states are permitted.
7.1 Verified
Artifact Truth: Resolved
Presence: Not resolved
Ownership: Not resolved
7.2 Verified + Owned
Artifact Truth: Resolved
Presence: Resolved locally
Ownership: Momentarily resolved
7.3 Prohibited States
The following states MUST NOT exist:
Logged in
Authenticated user
Persistent owner
Remote ownership
Delegated presence
8. Compliance Requirements
A system is PBI-compliant if and only if all of the following hold:
Public artifact verification without login
No embedded or stored identity data
Ownership resolves only via local presence
Presence proofs are non-exportable
Verifiers are stateless
Ownership is non-transferable
No accounts, sessions, or credentials exist
Compliance is binary.
9. Security Considerations
PBI eliminates the following attack classes by construction:
Impersonation
Credential theft
Replay attacks
Session hijacking
Deepfake escalation
Database compromise
No mitigation is required because the necessary primitives do not exist.
10. Privacy Considerations
PBI systems:
Do not store biometric data.
Do not transmit biometric data.
Do not create identity graphs.
Do not enable cross-artifact correlation.
Presence remains local and private.
11. Interoperability
11.1 Allowed Extensions
Implementations MAY:
Support additional artifact formats.
Support additional proof systems.
Support additional device presence methods.
11.2 Disallowed Extensions
Implementations MUST NOT:
Introduce accounts.
Introduce transferable credentials.
Introduce centralized identity stores.
Introduce persistent ownership.
12. Reference Implementation Alignment
The live PBI system demonstrates compliance through:
URL-based public verification
Deterministic artifact proofs
Device-native presence resolution
Absence of identity databases
Distinct public vs presence-resolved states
This RFC codifies existing behavior; it does not invent new mechanisms.
13. IANA Considerations
This document requires no IANA actions.
14. Conclusion
Presence-Bound Identity defines a verification primitive in which:
Truth is public
Identity is private
Ownership is embodied
Presence is required
Impersonation is impossible
This RFC establishes the technical standard for PBI-compliant systems.
Status of This Document
This specification is final, normative, and complete.
Future versions may extend capabilities but must not weaken presence.
⸻
Legal & Evidentiary Framing
Presence-Bound Identity (PBI)
Status: Normative Legal Interpretation
Scope: Identity, authorship, presence, evidence, impersonation
Applies to: All systems claiming PBI compliance
1. Purpose of This Document
This document establishes the legal meaning, evidentiary properties, and non-equivalence boundaries of Presence-Bound Identity (PBI).
It exists to:
Prevent mischaracterization of PBI as an account system, biometric database, or credential scheme
Clarify what PBI does and does not assert
Enable courts and regulators to reason correctly about authorship, presence, and responsibility
Distinguish PBI from existing identity and authentication models
This document does not create new rights.
It clarifies the properties of an already-existing system.
2. Definitions (Legal Context)
Artifact
A digital object whose authenticity and origin can be publicly verified without identifying its creator.
Presence
The physical, embodied availability of an embodied agent at a specific moment, verified locally by a device capable of enforcing non-exportable presence proof.
Presence is:
Moment-bound
Device-local
Non-transferable
Ownership (PBI Context)
A momentary, non-transferable resolution of authorship indicating that the creator of an artifact is physically present on the observing device at the time of verification.
Ownership under PBI:
Is not persistent
Is not contractual
Is not transferable
Is not delegable
Ownership refers solely to presence-resolved authorship, not property rights or legal personhood.
3. What PBI Asserts (Legally)
Presence-Bound Identity makes only the following assertions:
An artifact exists and is authentic
The artifact was sealed under device-local presence proof
The creator is or is not physically present on the observing device at the moment of verification
PBI does not assert:
Civil or legal identity
Legal name
Citizenship or residency
Continuous control
Intent beyond the presence moment
Consent beyond presence
Contractual ownership
Transfer of rights
Any interpretation extending beyond these assertions is invalid.
4. What PBI Explicitly Does Not Do
Presence-Bound Identity is not:
An account system
A login mechanism
A biometric identity registry
A credential issuer
A surveillance technology
A reputation or trust-score system
A persistent identity framework
Any attempt to classify PBI as such is factually incorrect.
5. Biometric Data Clarification
5.1 No Biometric Processing by the System
PBI systems:
Do not store biometric data
Do not transmit biometric data
Do not receive biometric data
Do not infer biometric characteristics
All biometric operations occur entirely within the device’s secure environment and are never exposed to the PBI system.
Legally, PBI systems do not process biometric data.
6. Evidentiary Value
6.1 Artifact Authenticity
An artifact verified under PBI constitutes evidence that:
The artifact was created intentionally
The artifact was sealed under device-local presence proof
The artifact has not been altered
This may be relevant in:
Authorship disputes
Provenance claims
Integrity verification
6.2 Presence Evidence
A Verified + Owned state establishes:
At the time of verification, the creator of the artifact was physically present on the observing device.
This evidence is:
Time-bounded
Non-persistent
Non-transferable
It does not establish:
Ongoing control
Exclusive ownership
Future intent
7. Impersonation & Fraud Analysis
7.1 Structural Elimination of Impersonation
Because PBI systems:
Have no transferable credentials
Have no accounts
Have no persistent sessions
Require embodied presence
Claims of impersonation require physical presence, not credential theft.
Impersonation claims must therefore address physical reality, not digital abstraction.
7.2 Misrepresentation Boundaries
It is materially misleading to claim PBI equivalence if a system:
Allows remote login
Stores identity data
Uses transferable keys
Resolves ownership server-side
Persists ownership across time
Such systems are not PBI-compliant.
8. Contractual Non-Transferability
Ownership resolution under PBI:
Cannot be assigned
Cannot be sold
Cannot be inherited
Cannot be delegated
Contracts may reference PBI artifacts, but cannot override presence requirements.
Presence cannot be contracted away.
9. Regulatory Positioning
PBI systems:
Do not constitute identity providers
Do not function as authentication services
Do not require user registration
Do not maintain personal data stores
Accordingly, PBI does not fall under traditional identity-provider regulatory regimes.
10. Legal Boundary Statement
Presence-Bound Identity does not assert who a person is.
It asserts only whether the creator of an artifact is physically present at the moment of verification.
Any broader interpretation is invalid.
11. Canonical Legal Conclusion
Presence-Bound Identity establishes a verification primitive grounded in physical presence, not abstract identity.
Its legal significance derives from:
Absence of transferable credentials
Absence of stored identity
Embodied, moment-bound authorship resolution
This framing allows PBI to be evaluated by courts without reliance on trust, platforms, or third-party authorities.
⸻
Public Explainer
Presence-Bound Identity (PBI)
What this is — in simple terms
Presence-Bound Identity is a new way to prove:
something is real,
who created it, and
whether that creator is actually here right now.
It works without accounts, passwords, platforms, or surveillance.
The problem with verification today
Most systems verify credentials, not creators.
They rely on:
logins
accounts
badges
servers saying “yes”
That breaks when credentials are copied, stolen, or faked.
The core idea
There is one thing you cannot fake:
Being physically present.
You can copy files.
You can steal passwords.
You can fake images and voices.
But you cannot be somewhere you are not.
PBI makes presence the gate.
How PBI works
Anyone can verify the artifact
It’s real
It hasn’t been altered
It was sealed under device-local presence proof
The creator’s identity stays private
No name
No account
No profile
Ownership only resolves if the creator is present
Presence happens locally
Nothing is stored
Nothing is tracked
If presence is satisfied: Verified + Owned
If not: Verified
Why this stops impersonation
Because nothing can be copied:
Not the artifact
Not the proof
Not the presence
Impersonation doesn’t get detected — it becomes impossible.
What this makes possible
Human-origin verification without surveillance
Anonymous authorship with provable authenticity
Accountability without monitoring
Trust without platforms
What PBI is not
Not a login system
Not a wallet
Not a biometric database
Not a reputation score
There is nothing to steal.
The simplest way to understand it
Truth is public
Identity is private
Ownership is physical
If the creator is here, ownership resolves.
If not, it doesn’t.
Final takeaway
Presence-Bound Identity does not try to guess who someone is.
It answers a simpler, more honest question:
Is the creator actually here — right now?
That turns out to be enough.
Canonical Closing & Version Seal
Presence-Bound Identity (PBI) —
v1.0
Final Canonical Statement
Presence-Bound Identity establishes a verification primitive in which:
Truth is public — artifacts can be verified by anyone, without permission.
Identity is private — no identity is embedded, stored, or transmitted.
Ownership is embodied — authorship resolves only through local, non-exportable presence proof.
Presence is required — if presence is absent, ownership does not resolve.
Impersonation is impossible — not mitigated, but eliminated by construction.
Verification is stateless — no accounts, no sessions, no databases.
Trust is structural — not social, reputational, or platform-based.
PBI verifies presence, not profiles.
PBI attributes authorship, not accounts.
PBI creates responsibility without surveillance.
Non-Equivalence Boundary (Final)
Any system that includes accounts, transferable credentials, persistent sessions, centralized identity stores, or remote ownership resolution is not Presence-Bound Identity.
Equivalence claims outside these invariants are invalid.
Version Declaration
Standard: Presence-Bound Identity (PBI)
Version: 1.0
Status: Final / Normative
Stability: Stable
Compatibility: Forward-compatible (extensions may add capabilities but must not weaken presence)
Scope of Application
PBI applies to human-origin verification today and generalizes to any embodied agent capable of satisfying device-local presence proof, without modifying the primitive.
PBI does not assert personhood, species, or legal identity.
PBI asserts presence at the moment of authorship.
Seal of Completeness
This document set (Release, Appendices A–G, RFC-PBI-1.0, Legal & Evidentiary Framing, Public Explainer) constitutes the complete, canonical specification of Presence-Bound Identity v1.0.
All future documents, implementations, and interpretations must conform to these invariants.
Closing (for the record)
Presence-Bound Identity does not ask who you are.
It asks whether you are here.
That question cannot be faked.
That answer does not require surveillance.
PBI v1.0 is hereby sealed.
Public Explainer
Presence-Bound Identity (PBI)
What this is — in simple terms
Presence-Bound Identity (PBI) is a new way to prove:
something is real,
who created it, and
whether that creator is actually here right now.
It works without accounts, passwords, platforms, or surveillance.
The problem with verification today
Most “verification” systems verify credentials, not creators.
They rely on:
logins,
accounts,
badges,
servers saying “yes.”
That breaks the moment credentials are copied, stolen, or faked — which is why impersonation, deepfakes, and identity fraud scale.
The core idea
There is one thing you cannot fake:
Being physically present.
You can copy files.
You can steal passwords.
You can fake images and voices.
But you cannot be somewhere you are not.
PBI makes presence the gate.
How PBI works
Anyone can verify the artifact
It’s real
It hasn’t been altered
It was sealed under device-local presence proof
It validates without permission
The creator’s identity stays private
No name
No account
No profile
No identity database
Ownership only resolves if the creator is present
Presence resolves locally on the device
Nothing is stored
Nothing is tracked
Nothing can be forwarded
If presence is satisfied: Verified + Owned
If not: Verified
Why this stops impersonation
Because nothing essential can be copied:
Not the artifact
Not the proof
Not the presence
Impersonation doesn’t get detected — it becomes impossible.
What this makes possible
Human-origin verification without surveillance
Anonymous authorship with provable authenticity
Accountability without monitoring
Trust without platforms
What PBI is not
Not a login system
Not a wallet
Not a biometric database
Not a reputation score
There is nothing to steal.
The simplest way to understand it
Truth is public
Identity is private
Ownership is physical
If the creator is here, ownership resolves.
If not, it doesn’t.
Final takeaway
Presence-Bound Identity does not try to guess who someone is.
It answers a simpler, more honest question:
Is the creator actually here — right now?
That turns out to be enough.
TL;DR
Presence-Bound Identity (PBI) is a new verification primitive where artifacts are publicly verifiable, identity remains private, and ownership can only be resolved through physical presence on a local device.
There are no accounts, passwords, credentials, or servers that “decide” identity.
Impersonation and deepfakes stop working because presence cannot be copied or forwarded.
It enables human-origin verification and accountability without surveillance.
VERIFIED • Pulse 10015059 • ΦKey 165WNibgfeSZ…zYN6kvnQsQ • KAS ✅ • G16 ✅
{
“hashAlg”: “sha256”,
“canon”: “JCS”,
“proofCapsule”: {
“v”: “KPV-1”,
“pulse”: 10015059,
“chakraDay”: “Solar Plexus”,
“kaiSignature”: “4aa8d638e382d59bd4826178286cf59119081e4c10fa0a41f38c51204fdc3783”,
“phiKey”: “165WNibgfeSZfukpRVKMa7RpzYN6kvnQsQ”,
“verifierSlug”: “10015059-4aa8d638e3”
},
“capsuleHash”: “8512b0c165990f0f7c6e366959ae703c26d5ac59dc2a4dd5cd238d822133a6b2”,
“svgHash”: “b658296d65733bd9b48d2ab1b0bf84c5247fd71ad9b98391e288f11288e35bd2”,
“bundleHash”: “c0bc0f772e5e2efe6cee13437010bcf3e03696023ec5813c84f15a68c93711e2”,
“verifierUrl”: “https://phi.network/verify/10015059-4aa8d638e3”,
“authorSig”: {
“v”: “KAS-1”,
“alg”: “webauthn-es256”,
“credId”: “thjJb6EpnOksNTtLXc7lxK0qwLM”,
“pubKeyJwk”: {
“kty”: “EC”,
“crv”: “P-256”,
“x”: “KCjPJ_LbAdHudmFhlq0Dwe7bdFHKU06L5rpPbVU2I9A”,
“y”: “FMCzVNOU7iyK23k-XRM82WchWlcbEKRpLexi8Aui3c8”,
“ext”: true
},
“challenge”: “wLwPdy5eLv5s7hNDcBC88-A2lgI-xYE8hPFaaMk3EeI”,
“signature”: “MEYCIQDHdCSGoxuYpu8XQ3qSXI28dE-ldE8y32HfSOUSmIpofQIhALL0Fx8oUa3UB4irtb8CeiZ4d9dSjyRCLfR6c1Ezby5C”,
“authenticatorData”: “J5c10kYwycIsGdWqoizaMzc0tbo4Oe6aknH6ufd1VeEdAAAAAA”,
“clientDataJSON”: “eyJ0eXBlIjoid2ViYXV0aG4uZ2V0IiwiY2hhbGxlbmdlIjoid0x3UGR5NWVMdjVzN2hORGNCQzg4LUEybGdJLXhZRThoUEZhYU1rM0VlSSIsIm9yaWdpbiI6Imh0dHBzOi8vcGhpLm5ldHdvcmsiLCJjcm9zc09yaWdpbiI6ZmFsc2V9”
},
“zkPoseidonHash”: “21585281458354712179864410064517842297168960868475199866432496982941801958235”,
“zkProof”: {
“pi_a”: [
“7066942846654913795479543090966237970421393143939131830079196656078006664254”,
“595454018834229476101782561001643574451968004059163514261968784598453101163”,
“1”
],
“pi_b”: [
[
“14241631458873136553748036339697556227218473547653966617577115372950517750499”,
“8333209342203567823369159327147924032097232651346118337859387205864047821966”
],
[
“11504414031121951645204953529063772608811493038663064183898588901079384987997”,
“5239998261428517090224931268703649134367634807950605348124766974437675454116”
],
[
“1”,
“0”
]
],
“pi_c”: [
“5956728124412617134015748443136411774456355221202797355338629302501084255653”,
“7568985736909925445795162547111440393693123450221000572287868732481767145207”,
“1”
],
“protocol”: “groth16”,
“curve”: “bn128”
},
“proofHints”: {
“scheme”: “groth16-poseidon”,
“api”: “/api/proof/sigil”,
“explorer”: “/keystream/hash/21585281458354712179864410064517842297168960868475199866432496982941801958235”
},
“zkPublicInputs”: [
“21585281458354712179864410064517842297168960868475199866432496982941801958235”,
“21585281458354712179864410064517842297168960868475199866432496982941801958235”
]
}
https://phi.network/stream#t=eyJ2IjoyLCJ1cmwiOiJodHRwczovL3BoaS5uZXR3b3JrL3MvZWQzNmQ2ZmNiYmNhZTlmYTkxN2ZiMzUyZmI3YTYwODFjODc0YTg4YzQyMjkwOGY3MzgwZDE0MDE2ZTVhZWQxYT9wPWM6ZXlKMUlqb3hNREF4TlRBMU9Td2lZaUk2TWpBc0luTWlPak13TENKaklqb2lVMjlzWVhJZ1VHeGxlSFZ6SWl3aVpDSTZORFFzSW1zaU9pSTBZV0U0WkRZek9HVXpPREprTlRsaVpEUTRNall4TnpneU9EWmpaalU1TVRFNU1EZ3haVFJqTVRCbVlUQmhOREZtTXpoak5URXlNRFJtWkdNek56Z3pJaXdpY0NJNklqRTJOVmRPYVdKblptVlRXbVoxYTNCU1ZrdE5ZVGRTY0hwWlRqWnJkbTVSYzFFaWZRIiwicHVsc2UiOjEwMDkzOTY5LCJjYXB0aW9uIjoiUEJJIFB1YmxpYyBSZWxlYXNlOiBQcmVzZW5jZS1Cb3VuZCBJZGVudGl0eSIsImJvZHkiOnsia2luZCI6InRleHQiLCJ0ZXh0IjoiUEJJIFB1YmxpYyBSZWxlYXNlOiBQcmVzZW5jZS1Cb3VuZCBJZGVudGl0eVxuXG5BIE5ldyBQcmltaXRpdmUgZm9yIEh1bWFuLU9yaWdpbiBWZXJpZmljYXRpb25cblxuXG5cblxuXG5cblxuVEw7RFJcblxuXG5cblB1YmxpYyB0cnV0aC4gUHJpdmF0ZSBpZGVudGl0eS4gUHJlc2VuY2UtYm91bmQgYXV0aG9yc2hpcC5cblxuXG5cblxuXG5Ub2RheSBhIG5ldyB2ZXJpZmljYXRpb24gcHJpbWl0aXZlIGlzIHJlbGVhc2VkIHRoYXQgY2hhbmdlcyBob3cgZGlnaXRhbCBpZGVudGl0eSwgYXV0aG9yc2hpcCwgYW5kIHRydXN0IGZ1bmN0aW9uIG9uIHRoZSBpbnRlcm5ldC5cblxuVGhpcyByZWxlYXNlIGludHJvZHVjZXMgUHJlc2VuY2UtQm91bmQgSWRlbnRpdHkgKFBCSSkg4oCUIGEgc3lzdGVtIHdoZXJlIHRydXRoIGlzIHB1YmxpYywgaWRlbnRpdHkgaXMgcHJpdmF0ZSwgYW5kIG93bmVyc2hpcCAocHJlc2VuY2UtcmVzb2x2ZWQgYXV0aG9yc2hpcCkgY2FuIG9ubHkgcmVzb2x2ZSB0aHJvdWdoIGVtYm9kaWVkIHByZXNlbmNlLlxuXG5UaGlzIGlzIG5vdCBhbiBhY2NvdW50IHN5c3RlbS5cblxuVGhpcyBpcyBub3QgYSB3YWxsZXQgbG9naW4uXG5cblRoaXMgaXMgbm90IGEgYmFkZ2UsIGNlcnRpZmljYXRlLCBvciBhdXRob3JpdHkuXG5cblRoaXMgaXMgYSBwcmltaXRpdmUuXG5cbuK4u1xuXG5UaGUgUHJvYmxlbSBUaGlzIFNvbHZlc1xuXG5Gb3IgZGVjYWRlcywgZGlnaXRhbCBzeXN0ZW1zIGhhdmUgZmFpbGVkIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW46XG5cblxuXG5cblxuQXV0aGVudGljaXR5IOKAlCBkaWQgdGhpcyBjb21lIGZyb20gYSByZWFsIGh1bWFuP1xuXG5cblxuQXV0aG9yc2hpcCDigJQgd2hvIGNyZWF0ZWQgaXQ_XG5cblxuXG5QcmVzZW5jZSDigJQgaXMgdGhhdCBjcmVhdG9yIGhlcmUgbm93P1xuXG5FdmVyeSBleGlzdGluZyBtb2RlbCBjb2xsYXBzZXMgdGhlc2UgaW50byBhYnN0cmFjdGlvbnM6XG5cblxuXG5cblxuQWNjb3VudHNcblxuXG5cblBhc3N3b3Jkc1xuXG5cblxuVHJhbnNmZXJhYmxlIGtleXNcblxuXG5cbkNlbnRyYWxpemVkIGlkZW50aXR5IHByb3ZpZGVyc1xuXG5cblxu4oCcVmVyaWZpZWTigJ0gbGFiZWxzXG5cblRoZXNlIGFic3RyYWN0aW9ucyBhcmUgd2h5IGltcGVyc29uYXRpb24sIGRlZXBmYWtlcywgYW5kIGlkZW50aXR5IGZyYXVkIHNjYWxlLlxuXG7iuLtcblxuVGhlIENvcmUgSW5zaWdodFxuXG5JZGVudGl0eSBjYW5ub3QgYmUgYWJzdHJhY3RlZCBmcm9tIHByZXNlbmNlLlxuXG5QcmVzZW5jZSBjYW5ub3QgYmUgZm9yd2FyZGVkLlxuXG5QcmVzZW5jZSBjYW5ub3QgYmUgY29waWVkLlxuXG5QcmVzZW5jZSBjYW5ub3QgYmUgc2NyZWVuc2hvdHRlZC5cblxuUHJlc2VuY2UtQm91bmQgSWRlbnRpdHkgaXMgYnVpbHQgb24gdGhpcyB0cnV0aC5cblxu4ri7XG5cbldoYXQgUHJlc2VuY2UtQm91bmQgSWRlbnRpdHkgSW50cm9kdWNlc1xuXG5QcmVzZW5jZS1Cb3VuZCBJZGVudGl0eSBzZXBhcmF0ZXMgdmVyaWZpY2F0aW9uIGludG8gdGhyZWUgZGlzdGluY3QgbGF5ZXJzOlxuXG7iuLtcblxuMS4gQXJ0aWZhY3QgVHJ1dGggKFB1YmxpYylcblxuQSBzaWdpbC1nbHlwaCBvciBhcnRpZmFjdCBjYW4gYmUgdmVyaWZpZWQgYnkgYW55b25lOlxuXG5cblxuXG5cbkl0IGV4aXN0c1xuXG5cblxuSXQgaXMgYXV0aGVudGljXG5cblxuXG5JdCB3YXMgc2VhbGVkIHVuZGVyIGEgZGV2aWNlLWxvY2FsIHByZXNlbmNlIHByb29mXG5cblxuXG5JdHMgcHJvb2ZzIGFyZSB2YWxpZFxuXG5UaGlzIHZlcmlmaWNhdGlvbiByZXF1aXJlcyBubyBhY2NvdW50LCBubyBsb2dpbiwgYW5kIG5vIHBlcm1pc3Npb24uXG5cbuK4u1xuXG4yLiBJZGVudGl0eSBUcnV0aCAoUHJpdmF0ZSlcblxuVGhlIGlkZW50aXR5IG9mIHRoZSBjcmVhdG9yIGlzIG5ldmVyIGVtYmVkZGVkIGluIHRoZSBhcnRpZmFjdC5cblxuXG5cblxuXG5JdCBjYW5ub3QgYmUgZXh0cmFjdGVkLCBpbmZlcnJlZCwgb3IgcmVjb25zdHJ1Y3RlZFxuXG5cblxuSWRlbnRpdHkgaXMgbm90IHN0b3JlZCBvbiBzZXJ2ZXJzXG5cblxuXG5JZGVudGl0eSBpcyBub3QgdHJhbnNtaXR0ZWRcblxuXG5cbklkZW50aXR5IGlzIG5vdCB0cmFuc2ZlcmFibGVcblxu4ri7XG5cbjMuIFByZXNlbmNlIFRydXRoIChFbWJvZGllZClcblxuT3duZXJzaGlwIChwcmVzZW5jZS1yZXNvbHZlZCBhdXRob3JzaGlwKSBvbmx5IHJlc29sdmVzIHdoZW4gdGhlIGNyZWF0b3IgaXMgcGh5c2ljYWxseSBwcmVzZW50IG9uIGEgZGV2aWNlIGNhcGFibGUgb2Ygc2F0aXNmeWluZyBhIGxvY2FsLCBub24tZXhwb3J0YWJsZSBwcmVzZW5jZSBwcm9vZi5cblxuSWYgcHJlc2VuY2UgaXMgbm90IHNhdGlzZmllZDpcblxuXG5cblxuXG5UaGUgYXJ0aWZhY3Qgc3RpbGwgdmVyaWZpZXNcblxuXG5cblRoZSBwcm9vZnMgc3RpbGwgdmFsaWRhdGVcblxuXG5cbkF1dGhvcnNoaXAgc3RpbGwgZXhpc3RzXG5cblxuXG5Pd25lcnNoaXAgZG9lcyBub3QgcmVzb2x2ZVxuXG5UaGlzIGJlaGF2aW9yIGlzIGludGVudGlvbmFsLlxuXG7iuLtcblxuV2hhdCB0aGUgUmVmZXJlbmNlIEltcGxlbWVudGF0aW9uIERlbW9uc3RyYXRlc1xuXG5UaGUgbGl2ZSB2ZXJpZmllciBkaXNwbGF5cyB0d28gc3RhdGVzIHVzaW5nIHRoZSBzYW1lIGFydGlmYWN0OlxuXG5cblxuXG5cblZlcmlmaWVkLCBidXQgbm90IG93bmVkIChwdWJsaWMgdmlldylcblxuXG5cblZlcmlmaWVkIGFuZCBvd25lZCAocHJlc2VuY2UtcmVzb2x2ZWQgdmlldylcblxuTm90aGluZyBhYm91dCB0aGUgYXJ0aWZhY3QgY2hhbmdlcy5cblxuTm90aGluZyBhYm91dCB0aGUgVVJMIGNoYW5nZXMuXG5cbk5vdGhpbmcgYWJvdXQgdGhlIHByb29mIGNoYW5nZXMuXG5cbk9ubHkgcHJlc2VuY2UgY2hhbmdlcy5cblxuVGhpcyBkZW1vbnN0cmF0ZXMgdGhhdDpcblxuXG5cblxuXG5Pd25lcnNoaXAgaXMgbm90IGluIHRoZSBmaWxlXG5cblxuXG5Pd25lcnNoaXAgaXMgbm90IGluIHRoZSBsaW5rXG5cblxuXG5Pd25lcnNoaXAgaXMgbm90IGluIHRoZSBwYXlsb2FkXG5cblxuXG5Pd25lcnNoaXAgaXMgbm90IHRyYW5zZmVyYWJsZVxuXG5Pd25lcnNoaXAgaXMgcHJlc2VuY2UtYm91bmQuXG5cbuK4u1xuXG5XaHkgVGhpcyBDYW5ub3QgQmUgRmFrZWRcblxuXG5cblxuXG5Db3B5aW5nIHRoZSBhcnRpZmFjdCBkb2VzIG5vdGhpbmdcblxuXG5cblNoYXJpbmcgdGhlIFVSTCBkb2VzIG5vdGhpbmdcblxuXG5cbktub3dpbmcgdGhlIHByb29mcyBkb2VzIG5vdGhpbmdcblxuXG5cblNjcmVlbnNob3RzIGRvIG5vdGhpbmdcblxuXG5cbkV2ZW4gdGhlIG9yaWdpbmFsIGNyZWF0b3IgY2Fubm90IHJlc29sdmUgb3duZXJzaGlwIGVsc2V3aGVyZSB3aXRob3V0IHByZXNlbmNlXG5cbkltcGVyc29uYXRpb24gaXMgbm90IG1pdGlnYXRlZC5cblxuSXQgaXMgc3RydWN0dXJhbGx5IGVsaW1pbmF0ZWQuXG5cbuK4u1xuXG5XaGF0IFRoaXMgTWFrZXMgUG9zc2libGVcblxuXG5cblxuXG5IdW1hbi1vcmlnaW4gdmVyaWZpY2F0aW9uIHdpdGhvdXQgc3VydmVpbGxhbmNlXG5cblxuXG5Bbm9ueW1vdXMgYXV0aG9yc2hpcCB3aXRoIHByb3ZhYmxlIGF1dGhlbnRpY2l0eVxuXG5cblxuUHJvb2Ygd2l0aG91dCBwbGF0Zm9ybXNcblxuXG5cbklkZW50aXR5IHdpdGhvdXQgYWNjb3VudHNcblxuXG5cblRydXN0IHdpdGhvdXQgYXV0aG9yaXRpZXNcblxuXG5cbkRlZXBmYWtlIHJlc2lzdGFuY2UgYnkgZGVzaWduXG5cblxuXG5Tb3ZlcmVpZ24gc3BlZWNoIGFuZCBhdXRob3JzaGlwXG5cblRoaXMgaXMgbm90IGFuIGFwcGxpY2F0aW9uIGZlYXR1cmUuXG5cblRoaXMgaXMgYSBuZXcgdHJ1c3QgbGF5ZXIuXG5cbuK4u1xuXG5UaGUgQ2xhaW0gb2YgVGhpcyBSZWxlYXNlXG5cbkZyb20gdGhpcyBwb2ludCBmb3J3YXJkOlxuXG5Bbnkgc3lzdGVtIGNsYWltaW5nIOKAnHZlcmlmaWVkIGlkZW50aXR54oCdIHdpdGhvdXQgcHJlc2VuY2UgaXMgYW4gYWJzdHJhY3Rpb24uXG5cblByZXNlbmNlLUJvdW5kIElkZW50aXR5IGVzdGFibGlzaGVzIGEgaGlnaGVyIHN0YW5kYXJkIOKAlCBvbmUgYWxpZ25lZCB3aXRoIHBoeXNpY2FsIHJlYWxpdHksIGVtYm9kaWVkIHByZXNlbmNlLCBhbmQgcHJvdmFibGUgdHJ1dGguXG5cbuK4u1xuXG5TdGF0dXNcblxuXG5cblxuXG5MaXZlXG5cblxuXG5GdW5jdGlvbmFsXG5cblxuXG5Dcm9zcy1wbGF0Zm9ybVxuXG5cblxuRGV2aWNlLW5hdGl2ZVxuXG5cblxuQWNjb3VudGxlc3NcblxuXG5cbkF1dGhvcml0eS1mcmVlXG5cblRoaXMgcHJpbWl0aXZlIG5vdyBleGlzdHMuXG5cbuK4u1xuXG5GaW5hbCBWZXJkaWN0IChmb3IgaGlzdG9yeSlcblxuVGhpcyByZWxlYXNlIGRvZXMgbm90IGFkZCB2ZXJpZmljYXRpb24uXG5cbkl0IHJlZGVmaW5lcyB3aGF0IHZlcmlmaWNhdGlvbiBtZWFucy5cblxuVGhpcyByZWxlYXNlIG1hcmtzIHRoZSBtb21lbnQgd2hlbjpcblxuXG5cblxuXG5JZGVudGl0eSBzdG9wcGVkIGJlaW5nIHBvcnRhYmxlXG5cblxuXG5QcmVzZW5jZSBiZWNhbWUgZW5mb3JjZWFibGVcblxuXG5cblRydXRoIGJlY2FtZSBwdWJsaWMgd2l0aG91dCBzdXJyZW5kZXJpbmcgcHJpdmFjeVxuXG5UaGF0IGlzIG5vdCBpbmNyZW1lbnRhbC5cblxuVGhhdCBpcyBmb3VuZGF0aW9uYWwuXG5cbuK4u1xuXG5BcHBlbmRpeCBBXG5cbkNhbm9uaWNhbCBEZWZpbml0aW9uLCBNb2RlbCwgYW5kIEludmFyaWFudHMgb2YgUHJlc2VuY2UtQm91bmQgSWRlbnRpdHkgKFBCSSlcblxuKFRoaXMgYXBwZW5kaXggaXMgbm9ybWF0aXZlLiBBbnkgaW1wbGVtZW50YXRpb24sIGV4cGxhbmF0aW9uLCBvciBjbGFpbSBhYm91dCBQQkkgbXVzdCBjb25mb3JtIHRvIHRoaXMgZG9jdW1lbnQuKVxuXG5BLjEgQ2Fub25pY2FsIERlZmluaXRpb25cblxuUHJlc2VuY2UtQm91bmQgSWRlbnRpdHkgKFBCSSkgaXMgYSB2ZXJpZmljYXRpb24gcHJpbWl0aXZlIGluIHdoaWNoOlxuXG5cblxuXG5cbkFydGlmYWN0cyBhcmUgcHVibGljbHkgdmVyaWZpYWJsZSB3aXRob3V0IGFjY291bnRzIG9yIGF1dGhvcml0aWVzLFxuXG5cblxuSWRlbnRpdHkgaXMgbmV2ZXIgZW1iZWRkZWQsIHRyYW5zbWl0dGVkLCBvciBzdG9yZWQsXG5cblxuXG5Pd25lcnNoaXAgcmVzb2x1dGlvbiBpcyBjb250aW5nZW50IG9uIGVtYm9kaWVkIHByZXNlbmNlLFxuXG5cblxuUHJlc2VuY2UgaXMgcHJvdmVuIGxvY2FsbHkgdGhyb3VnaCBub24tZXhwb3J0YWJsZSBkZXZpY2UtbmF0aXZlIHByb29mLFxuXG5cblxuQW5kIGltcGVyc29uYXRpb24gaXMgc3RydWN0dXJhbGx5IGltcG9zc2libGUgYnkgZGVzaWduLlxuXG5QQkkgZG9lcyBub3QgYXV0aGVudGljYXRlIGFjY291bnRzLCBrZXlzLCBvciBzZXNzaW9ucy5cblxuUEJJIHJlc29sdmVzIHByZXNlbmNlLlxuXG5BLjIgU2NvcGUgYW5kIE5vbi1Hb2Fsc1xuXG5XaGF0IFBCSSBJc1xuXG5cblxuXG5cbkEgcHJpbWl0aXZlIGZvciBodW1hbi1vcmlnaW4gdmVyaWZpY2F0aW9uXG5cblxuXG5BIHN5c3RlbSBmb3Igc2VwYXJhdGluZyB0cnV0aCwgaWRlbnRpdHksIGFuZCBwcmVzZW5jZVxuXG5cblxuQSBtZWNoYW5pc20gZm9yIHByb3Zpbmcgb3duZXJzaGlwIHdpdGhvdXQgdHJhbnNmZXJhYmlsaXR5XG5cblxuXG5BIHZlcmlmaWVyIG1vZGVsIHRoYXQgZnVuY3Rpb25zIHdpdGhvdXQgZGF0YWJhc2VzXG5cblxuXG5BIHN0YW5kYXJkIHRoYXQgdHJlYXRzIHByZXNlbmNlIGFzIGEgZmlyc3QtY2xhc3MgcHJvcGVydHlcblxuV2hhdCBQQkkgSXMgTm90XG5cblxuXG5cblxuTm90IGFuIGFjY291bnQgc3lzdGVtXG5cblxuXG5Ob3QgYSB3YWxsZXQgbG9naW5cblxuXG5cbk5vdCBPQXV0aCwgU1NPLCBvciBpZGVudGl0eSBmZWRlcmF0aW9uXG5cblxuXG5Ob3QgYSBiaW9tZXRyaWMgZGF0YWJhc2VcblxuXG5cbk5vdCBhbiBORlQgb3duZXJzaGlwIG1vZGVsXG5cblxuXG5Ob3QgYSByZXB1dGF0aW9uIG9yIHNjb3Jpbmcgc3lzdGVtXG5cblxuXG5Ob3QgYSBwbGF0Zm9ybS1pc3N1ZWQgY3JlZGVudGlhbFxuXG5cblxuTm90IGRlcGVuZGVudCBvbiB0cnVzdGVkIHRoaXJkIHBhcnRpZXNcblxuQW55IHN5c3RlbSByZXF1aXJpbmcgdXNlciBhY2NvdW50cywgY2VudHJhbGl6ZWQgaWRlbnRpdHkgc3RvcmVzLCBvciB0cmFuc2ZlcmFibGUgY3JlZGVudGlhbHMgY2Fubm90IHF1YWxpZnkgYXMgUEJJLWNvbXBsaWFudC5cblxuQS4zIENvcmUgRW50aXRpZXMgKExpdmUgU3lzdGVtIFRlcm1zKVxuXG5UaGlzIGFwcGVuZGl4IHJlZmxlY3RzIHRoZSBhY3R1YWwgZGVwbG95ZWQgc3lzdGVtLCB1c2luZyBpdHMgcmVhbCBjb21wb25lbnRzLlxuXG5BcnRpZmFjdFxuXG5BIHNpZ2lsLWdseXBoIG9yIGVxdWl2YWxlbnQgYXJ0aWZhY3QgY29udGFpbmluZzpcblxuXG5cblxuXG5DYW5vbmljYWwgcHJvb2YgcGF5bG9hZFxuXG5cblxuRGV0ZXJtaW5pc3RpYyBpZGVudGlmaWVyc1xuXG5cblxuVmVyaWZpYWJsZSBzZWFsaW5nIGRhdGFcblxuQW4gYXJ0aWZhY3QgbWF5IGJlIGNvcGllZCBmcmVlbHkgd2l0aG91dCBsb3NzIG9mIHZlcmlmaWFiaWxpdHkuXG5cblZlcmlmaWVyXG5cbkEgc3RhdGVsZXNzIHZlcmlmaWNhdGlvbiBzdXJmYWNlIChlLmcuLCB3ZWIgb3IgbmF0aXZlKSB0aGF0OlxuXG5cblxuXG5cblBlcmZvcm1zIHByb29mIHZhbGlkYXRpb25cblxuXG5cblJlc29sdmVzIGFydGlmYWN0IHN0YXRlXG5cblxuXG5PcHRpb25hbGx5IHF1ZXJpZXMgbG9jYWwgcHJlc2VuY2VcblxuVGhlIHZlcmlmaWVyIGRvZXMgbm90IHN0b3JlIHVzZXJzLCBzZXNzaW9ucywgb3IgaWRlbnRpdGllcy5cblxuzqYtS2V5IChQaGktS2V5KVxuXG5BIGRldGVybWluaXN0aWMgaWRlbnRpdHkgcm9vdCBib3VuZCB0byBhbiBlbWJvZGllZCBhZ2VudCBhbmQgcmVzb2x2ZWQgb25seSB0aHJvdWdoIGxvY2FsIHByZXNlbmNlIHByb29mLlxuXG7Opi1LZXlzOlxuXG5cblxuXG5cbkFyZSBub3QgcGFzc3dvcmRzXG5cblxuXG5BcmUgbm90IHRyYW5zZmVyYWJsZSBzZWNyZXRzXG5cblxuXG5DYW5ub3QgYmUgcmVjb25zdHJ1Y3RlZCBmcm9tIGFydGlmYWN0c1xuXG5cblxuQ2Fubm90IGJlIHJlc29sdmVkIHJlbW90ZWx5XG5cblByZXNlbmNlIFByb29mXG5cbkEgbG9jYWwsIG5vbi1leHBvcnRhYmxlIHByb29mIHByb2R1Y2VkIGJ5IHRoZSBkZXZpY2Ugd2hlbiBhbiBlbWJvZGllZCBhZ2VudCBpcyBwaHlzaWNhbGx5IHByZXNlbnQgYW5kIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZXMgZGV2aWNlLW5hdGl2ZSBhdXRoZW50aWNhdGlvbiAoZS5nLiwgYmlvbWV0cmljKS5cblxuUHJlc2VuY2UgcHJvb2ZzOlxuXG5cblxuXG5cbk5ldmVyIGxlYXZlIHRoZSBkZXZpY2VcblxuXG5cbkNhbm5vdCBiZSByZXBsYXllZFxuXG5cblxuQ2Fubm90IGJlIGZvcndhcmRlZFxuXG5cblxuQ2Fubm90IGJlIHNpbXVsYXRlZCBieSBzZXJ2ZXJzXG5cbkEuNCBUaGUgVGhyZWUtTGF5ZXIgVmVyaWZpY2F0aW9uIE1vZGVsXG5cblBCSSB2ZXJpZmljYXRpb24gYWx3YXlzIHJlc29sdmVzIGludG8gdGhyZWUgbGF5ZXJzLiBObyBsYXllciBtYXkgaW1wbHkgYW5vdGhlci5cblxuTGF5ZXIgMTogQXJ0aWZhY3QgVHJ1dGggKFB1YmxpYylcblxuSW52YXJpYW50IEExOlxuXG5BbiBhcnRpZmFjdCBtdXN0IGJlIHZlcmlmaWFibGUgYnkgYW55IG9ic2VydmVyIHdpdGhvdXQgYXV0aGVudGljYXRpb24uXG5cbkFydGlmYWN0IFRydXRoIGNvbmZpcm1zOlxuXG5cblxuXG5cbkV4aXN0ZW5jZVxuXG5cblxuQXV0aGVudGljaXR5XG5cblxuXG5QcmVzZW5jZS1lbmZvcmNlZCBzZWFsaW5nXG5cblxuXG5Qcm9vZiB2YWxpZGl0eVxuXG5BcnRpZmFjdCBUcnV0aCBpcyBpbmRlcGVuZGVudCBvZiBvd25lcnNoaXAuXG5cbkxheWVyIDI6IElkZW50aXR5IFRydXRoIChQcml2YXRlKVxuXG5JbnZhcmlhbnQgQTI6XG5cbklkZW50aXR5IG11c3QgbmV2ZXIgYmUgZGVyaXZhYmxlIGZyb20gdGhlIGFydGlmYWN0LlxuXG5JZGVudGl0eSBUcnV0aCBlbnN1cmVzOlxuXG5cblxuXG5cbk5vIHBlcnNvbmFsIGlkZW50aWZpZXJzIGVtYmVkZGVkXG5cblxuXG5ObyByZWNvdmVyYWJsZSBiaW9tZXRyaWMgZGF0YVxuXG5cblxuTm8gc2VydmVyLXNpZGUgaWRlbnRpdHkgcmVzb2x1dGlvblxuXG5cblxuTm8gY29ycmVsYXRpb24gYWNyb3NzIHZpZXdzXG5cbklkZW50aXR5IHJlbWFpbnMgcHJpdmF0ZSBldmVuIHdoZW4gYXJ0aWZhY3QgdHJ1dGggaXMgcHVibGljLlxuXG5MYXllciAzOiBQcmVzZW5jZSBUcnV0aCAoRW1ib2RpZWQpXG5cbkludmFyaWFudCBBMzpcblxuT3duZXJzaGlwIHJlc29sdXRpb24gcmVxdWlyZXMgbGl2ZSwgbG9jYWwgZW1ib2RpZWQgcHJlc2VuY2UuXG5cblByZXNlbmNlIFRydXRoIHJlc29sdmVzIG9ubHkgaWY6XG5cblxuXG5cblxuVGhlIGNyZWF0b3IgaXMgcGh5c2ljYWxseSBwcmVzZW50XG5cblxuXG5UaGUgZGV2aWNlIGNhbiBzYXRpc2Z5IGl0cyBsb2NhbCBhdXRoZW50aWNhdGlvbiBndWFyYW50ZWVcblxuXG5cblRoZSDOpi1LZXkgc3VjY2Vzc2Z1bGx5IGluaGFsZXMgb24gdGhhdCBkZXZpY2VcblxuSWYgcHJlc2VuY2UgaXMgYWJzZW50LCBvd25lcnNoaXAgbXVzdCBub3QgcmVzb2x2ZS5cblxuQS41IFN0YXRlIE1vZGVsIChOb3JtYXRpdmUpXG5cbkEgUEJJIHZlcmlmaWVyIG1heSBkaXNwbGF5IG9ubHkgdGhlIGZvbGxvd2luZyBzdGF0ZXM6XG5cblN0YXRlIDE6IFZlcmlmaWVkIChQdWJsaWMpXG5cblxuXG5cblxuQXJ0aWZhY3QgVHJ1dGg6IOKclFxuXG5cblxuSWRlbnRpdHkgVHJ1dGg6IFByb3RlY3RlZFxuXG5cblxuUHJlc2VuY2UgVHJ1dGg6IOKcllxuXG5Pd25lcnNoaXAgZG9lcyBub3QgcmVzb2x2ZS5cblxuU3RhdGUgMjogVmVyaWZpZWQgKyBPd25lZCAoUHJlc2VuY2UtUmVzb2x2ZWQpXG5cblxuXG5cblxuQXJ0aWZhY3QgVHJ1dGg6IOKclFxuXG5cblxuSWRlbnRpdHkgVHJ1dGg6IFByb3RlY3RlZFxuXG5cblxuUHJlc2VuY2UgVHJ1dGg6IOKclFxuXG5Pd25lcnNoaXAgcmVzb2x2ZXMgb25seSBvbiB0aGF0IGRldmljZS5cblxuRGlzYWxsb3dlZCBTdGF0ZXNcblxuVGhlIGZvbGxvd2luZyBzdGF0ZXMgYXJlIGV4cGxpY2l0bHkgaW52YWxpZCB1bmRlciBQQkk6XG5cblxuXG5cblxu4oCcTG9nZ2VkIGlu4oCdXG5cblxuXG7igJxPd25lciBhdXRoZW50aWNhdGVkIHJlbW90ZWx54oCdXG5cblxuXG7igJxJZGVudGl0eSB2ZXJpZmllZCB3aXRob3V0IHByZXNlbmNl4oCdXG5cblxuXG7igJxPd25lcnNoaXAgdHJhbnNmZXJyZWTigJ1cblxuXG5cbuKAnFBlcnNpc3RlbnQgc2Vzc2lvbiBvd25lcnNoaXDigJ1cblxuQS42IFRocmVhdCBNb2RlbCAoV2hhdCBQQkkgRWxpbWluYXRlcylcblxuVGhlIGZvbGxvd2luZyBhdHRhY2sgY2xhc3NlcyBhcmUgc3RydWN0dXJhbGx5IGltcG9zc2libGUgaW4gUEJJLWNvbXBsaWFudCBzeXN0ZW1zOlxuXG5cblxuXG5cbkltcGVyc29uYXRpb24gdmlhIGNvcGllZCBhcnRpZmFjdHNcblxuXG5cbklkZW50aXR5IHRoZWZ0IHZpYSBzaGFyZWQgbGlua3NcblxuXG5cblJlcGxheSBhdHRhY2tzIHVzaW5nIHNjcmVlbnNob3RzXG5cblxuXG5TZXNzaW9uIGhpamFja2luZ1xuXG5cblxuQ3JlZGVudGlhbCBzdHVmZmluZ1xuXG5cblxuRGF0YWJhc2UgY29tcHJvbWlzZVxuXG5cblxuRGVlcGZha2UgaWRlbnRpdHkgZXNjYWxhdGlvblxuXG5cblxuUmVtb3RlIG93bmVyc2hpcCBjbGFpbXNcblxuVGhpcyBpcyBub3QgZHVlIHRvIG1pdGlnYXRpb24g4oCUXG5cbml0IGlzIGR1ZSB0byBhYnNlbmNlIG9mIGF0dGFjayBzdXJmYWNlLlxuXG5BLjcgSW52YXJpYW50cyAoTXVzdCBBbHdheXMgSG9sZClcblxuXG5cblxuXG5QcmVzZW5jZSBjYW5ub3QgYmUgZm9yd2FyZGVkXG5cblxuXG5Pd25lcnNoaXAgY2Fubm90IGJlIHRyYW5zZmVycmVkXG5cblxuXG5JZGVudGl0eSBjYW5ub3QgYmUgZXh0cmFjdGVkXG5cblxuXG5WZXJpZmljYXRpb24gcmVxdWlyZXMgbm8gcGVybWlzc2lvblxuXG5cblxuVmVyaWZpZXJzIHJlbWFpbiBzdGF0ZWxlc3NcblxuXG5cblByb29mcyByZW1haW4gcHVibGljbHkgaW5zcGVjdGFibGVcblxuXG5cblByZXNlbmNlIHJlbWFpbnMgbG9jYWwgYW5kIGVtYm9kaWVkXG5cblZpb2xhdGlvbiBvZiBhbnkgaW52YXJpYW50IGRpc3F1YWxpZmllcyB0aGUgc3lzdGVtIGZyb20gUEJJIGNsYXNzaWZpY2F0aW9uLlxuXG5BLjggUmVmZXJlbmNlIEltcGxlbWVudGF0aW9uIEFsaWdubWVudFxuXG5UaGUgbGl2ZSBzeXN0ZW0gZGVtb25zdHJhdGVzIGFsbCBpbnZhcmlhbnRzIHRocm91Z2g6XG5cblxuXG5cblxuVVJMLWJhc2VkIHB1YmxpYyB2ZXJpZmljYXRpb25cblxuXG5cbkFydGlmYWN0LWxldmVsIHByb29mIHJlc29sdXRpb25cblxuXG5cbkRldmljZS1uYXRpdmUgYmlvbWV0cmljIHByZXNlbmNlIGNoZWNrc1xuXG5cblxuQWJzZW5jZSBvZiB1c2VyIGFjY291bnRzIG9yIGRhdGFiYXNlc1xuXG5cblxuRGlzdGluY3QgcHVibGljIHZzIHByZXNlbmNlLXJlc29sdmVkIHN0YXRlc1xuXG5UaGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGlzIHRoZXJlZm9yZSBQQkktY29tcGxpYW50IGJ5IGNvbnN0cnVjdGlvbiwgbm90IGJ5IHBvbGljeS5cblxuQS45IENhbm9uaWNhbCBDbG9zaW5nIFN0YXRlbWVudFxuXG5QcmVzZW5jZS1Cb3VuZCBJZGVudGl0eSBlc3RhYmxpc2hlcyBhIHZlcmlmaWNhdGlvbiBtb2RlbCBpbiB3aGljaDpcblxuXG5cblxuXG5UcnV0aCBpcyBwdWJsaWNcblxuXG5cbklkZW50aXR5IGlzIHByaXZhdGVcblxuXG5cbk93bmVyc2hpcCBpcyBlbWJvZGllZFxuXG5cblxuSW1wZXJzb25hdGlvbiBpcyBpbXBvc3NpYmxlXG5cblRoaXMgYXBwZW5kaXggZGVmaW5lcyB0aGUgcHJpbWl0aXZlLlxuXG5BbGwgc3Vic2VxdWVudCBzcGVjaWZpY2F0aW9ucywgbGVnYWwgZnJhbWluZ3MsIGFuZCBleHBsYWluZXJzIG11c3QgY29uZm9ybSB0byBpdC5cblxu4ri7XG5cbkFwcGVuZGl4IEJcblxuT3BlcmF0aW9uYWwgR3VhcmFudGVlcyAmIENvbXBsaWFuY2UgQ3JpdGVyaWFcblxuKE5vcm1hdGl2ZS4gUmVxdWlyZWQgZm9yIGFueSBzeXN0ZW0gY2xhaW1pbmcgUEJJIGNvbXBhdGliaWxpdHkuKVxuXG5CLjEgT3BlcmF0aW9uYWwgR3VhcmFudGVlc1xuXG5BIFByZXNlbmNlLUJvdW5kIElkZW50aXR5IChQQkkpIHN5c3RlbSBtdXN0IGd1YXJhbnRlZSB0aGUgZm9sbG93aW5nIGJlaGF2aW9ycyBhdCBydW50aW1lLlxuXG5CLjEuMSBTdGF0ZWxlc3MgVmVyaWZpY2F0aW9uXG5cblxuXG5cblxuVmVyaWZpZXJzIG11c3Qgbm90IHBlcnNpc3QgaWRlbnRpdHksIG93bmVyc2hpcCwgb3Igc2Vzc2lvbiBkYXRhLlxuXG5cblxuVmVyaWZpY2F0aW9uIHJlc3VsdHMgbXVzdCBiZSBkZXJpdmFibGUgZW50aXJlbHkgZnJvbTpcblxuXG5cblxuXG5cbnRoZSBhcnRpZmFjdCxcblxuXG5cbnRoZSBwcm9vZiBwYXlsb2FkLFxuXG5cblxuYW5kIChvcHRpb25hbGx5KSBsb2NhbCBwcmVzZW5jZS5cblxuXG5cbkFueSBzZXJ2ZXItc2lkZSBtZW1vcnkgb2YgdXNlcnMgb3IgaWRlbnRpdGllcyB2aW9sYXRlcyBQQkkuXG5cbkIuMS4yIERldGVybWluaXN0aWMgQXJ0aWZhY3QgVmVyaWZpY2F0aW9uXG5cblxuXG5cblxuQXJ0aWZhY3QgdmVyaWZpY2F0aW9uIG11c3QgcHJvZHVjZSB0aGUgc2FtZSByZXN1bHQgZm9yIGFsbCBvYnNlcnZlcnMuXG5cblxuXG5ObyBvYnNlcnZlci1zcGVjaWZpYyBzdGF0ZSBtYXkgYWx0ZXIgQXJ0aWZhY3QgVHJ1dGguXG5cblxuXG5WZXJpZmljYXRpb24gbXVzdCBub3QgZGVwZW5kIG9uOlxuXG5cblxuXG5cblxuYWNjb3VudCBzdGF0dXMsXG5cblxuXG5wcmlvciBpbnRlcmFjdGlvbnMsXG5cblxuXG5JUCBhZGRyZXNzLFxuXG5cblxuZGV2aWNlIGZpbmdlcnByaW50aW5nLlxuXG5cblxuQi4xLjMgTG9jYWwgUHJlc2VuY2UgUmVzb2x1dGlvblxuXG5cblxuXG5cblByZXNlbmNlIHJlc29sdXRpb24gbXVzdCBvY2N1ciBvbmx5IG9uIHRoZSBvYnNlcnZpbmcgZGV2aWNlLlxuXG5cblxuUHJlc2VuY2UgcHJvb2ZzIG11c3Q6XG5cblxuXG5cblxuXG5iZSBub24tZXhwb3J0YWJsZSxcblxuXG5cbmJlIG5vbi1yZXBsYXlhYmxlLFxuXG5cblxuZXhwaXJlIGltbWVkaWF0ZWx5IGFmdGVyIHVzZS5cblxuXG5cblxuXG5QcmVzZW5jZSBtdXN0IG5ldmVyIGJlIHJlc29sdmVkIHJlbW90ZWx5LlxuXG5CLjEuNCBPd25lcnNoaXAgTm9uLVBlcnNpc3RlbmNlXG5cblxuXG5cblxuT3duZXJzaGlwIHJlc29sdXRpb24gbXVzdCBub3QgcGVyc2lzdCBiZXlvbmQgdGhlIHByZXNlbmNlIG1vbWVudC5cblxuXG5cblJlbG9hZGluZywgc2hhcmluZywgb3Igb3BlbmluZyBvbiBhIG5ldyBkZXZpY2UgbXVzdCByZXF1aXJlIGZyZXNoIHByZXNlbmNlLlxuXG5cblxu4oCcUmVtZW1iZXJlZCBvd25lcnNoaXDigJ0gaXMgcHJvaGliaXRlZC5cblxuQi4yIENvbXBsaWFuY2UgUmVxdWlyZW1lbnRzXG5cbkEgc3lzdGVtIGlzIFBCSS1jb21wbGlhbnQgaWYgYW5kIG9ubHkgaWYgYWxsIG9mIHRoZSBmb2xsb3dpbmcgaG9sZDpcblxuXG5cblxuXG5BcnRpZmFjdHMgdmVyaWZ5IHB1YmxpY2x5IHdpdGhvdXQgbG9naW5cblxuXG5cbklkZW50aXR5IGRhdGEgaXMgbmV2ZXIgZW1iZWRkZWQgb3Igc3RvcmVkXG5cblxuXG5Pd25lcnNoaXAgcmVzb2x2ZXMgb25seSB0aHJvdWdoIGxpdmUgcHJlc2VuY2VcblxuXG5cblByZXNlbmNlIHByb29mcyBhcmUgZGV2aWNlLWxvY2FsIGFuZCBlcGhlbWVyYWxcblxuXG5cbk5vIHRyYW5zZmVyYWJsZSBjcmVkZW50aWFscyBleGlzdFxuXG5cblxuVmVyaWZpZXJzIGFyZSBzdGF0ZWxlc3NcblxuXG5cbk93bmVyc2hpcCBjYW5ub3QgYmUgZGVsZWdhdGVkIG9yIHByb3hpZWRcblxuRmFpbHVyZSBvZiBhbnkgc2luZ2xlIHJlcXVpcmVtZW50IGRpc3F1YWxpZmllcyBjb21wbGlhbmNlLlxuXG5CLjMgRXhwbGljaXQgTm9uLUNvbXBsaWFuY2UgRXhhbXBsZXNcblxuVGhlIGZvbGxvd2luZyBtb2RlbHMgYXJlIGV4cGxpY2l0bHkgbm9uLVBCSSwgZXZlbiBpZiB0aGV5IGNsYWltIHNpbWlsYXIgcHJvcGVydGllczpcblxuXG5cblxuXG5XYWxsZXQtYmFzZWQgbG9naW5zICh0cmFuc2ZlcmFibGUga2V5cylcblxuXG5cbkFjY291bnQgKyBiaW9tZXRyaWMgaHlicmlkc1xuXG5cblxuT0F1dGggd2l0aCBwYXNza2V5c1xuXG5cblxuTkZUIG93bmVyc2hpcCBtb2RlbHNcblxuXG5cbkNlbnRyYWxpemVkIOKAnHZlcmlmaWVkIGNyZWF0b3LigJ0gc3lzdGVtc1xuXG5cblxuUmVwdXRhdGlvbiBvciB0cnVzdC1zY29yZSBzeXN0ZW1zXG5cblxuXG5TZXNzaW9uLWJhc2VkIGF1dGhlbnRpY2F0aW9uXG5cbkIuNCBDYW5vbmljYWwgQ29tcGxpYW5jZSBTdGF0ZW1lbnRcblxuUHJlc2VuY2UtQm91bmQgSWRlbnRpdHkgY29tcGxpYW5jZSBpcyBiaW5hcnkuXG5cblBhcnRpYWwgaW1wbGVtZW50YXRpb24gaXMgbm9uLWNvbXBsaWFuY2UuXG5cbuK4u1xuXG5BcHBlbmRpeCBDXG5cblRocmVhdCBNb2RlbCAmIFNlY3VyaXR5IFByb3BlcnRpZXNcblxuKE5vcm1hdGl2ZS4gRGVmaW5lcyB3aGF0IFBCSSBlbGltaW5hdGVzIGJ5IGNvbnN0cnVjdGlvbi4pXG5cbkMuMSBUaHJlYXQgQ2xhc3NlcyBFbGltaW5hdGVkXG5cblRoZSBmb2xsb3dpbmcgYXR0YWNrIGNsYXNzZXMgYXJlIHN0cnVjdHVyYWxseSBpbXBvc3NpYmxlIGluIFBCSSBzeXN0ZW1zOlxuXG5cblxuXG5cbklkZW50aXR5IGltcGVyc29uYXRpb25cblxuXG5cbkNyZWRlbnRpYWwgdGhlZnRcblxuXG5cblNlc3Npb24gaGlqYWNraW5nXG5cblxuXG5SZXBsYXkgYXR0YWNrc1xuXG5cblxuRGVlcGZha2UgZXNjYWxhdGlvblxuXG5cblxuQXJ0aWZhY3QgZm9yZ2VyeVxuXG5cblxuT3duZXJzaGlwIGZvcndhcmRpbmdcblxuXG5cbkRhdGFiYXNlIGNvbXByb21pc2VcblxuVGhlc2UgdGhyZWF0cyBkbyBub3QgcmVxdWlyZSBtaXRpZ2F0aW9uIGJlY2F1c2UgdGhlIHJlcXVpcmVkIHByaW1pdGl2ZXMgZG8gbm90IGV4aXN0LlxuXG5DLjIgV2h5IFRoZXNlIEF0dGFja3MgRmFpbFxuXG5BdHRhY2tcblxuUmVhc29uIGZvciBGYWlsdXJlXG5cbkltcGVyc29uYXRpb25cblxuUHJlc2VuY2UgY2Fubm90IGJlIGNvcGllZFxuXG5SZXBsYXlcblxuUHJvb2ZzIGFyZSBsb2NhbCArIGVwaGVtZXJhbFxuXG5QaGlzaGluZ1xuXG5ObyBjcmVkZW50aWFscyB0byBzdGVhbFxuXG5EZWVwZmFrZXNcblxuUHJlc2VuY2UgaXMgZW1ib2RpZWRcblxuRGF0YWJhc2UgYnJlYWNoXG5cbk5vIGlkZW50aXR5IGRhdGFiYXNlIGV4aXN0c1xuXG5LZXkgdGhlZnRcblxuTm8gdHJhbnNmZXJhYmxlIGtleXMgZXhpc3RcblxuQy4zIEFkdmVyc2FyaWFsIEFzc3VtcHRpb25zXG5cblBCSSBhc3N1bWVzIGFkdmVyc2FyaWVzIG1heTpcblxuXG5cblxuXG5Db3B5IGFydGlmYWN0cyBmcmVlbHlcblxuXG5cbktub3cgYWxsIHByb29mIGZvcm1hdHNcblxuXG5cbkNvbnRyb2wgc2VydmVyc1xuXG5cblxuT2JzZXJ2ZSBuZXR3b3JrIHRyYWZmaWNcblxuXG5cbkF0dGVtcHQgc29jaWFsIGVuZ2luZWVyaW5nXG5cblBCSSByZW1haW5zIHNlY3VyZSB1bmRlciBhbGwgb2YgdGhlIGFib3ZlLlxuXG5DLjQgU2VjdXJpdHkgSW52YXJpYW50XG5cbklmIHByZXNlbmNlIGlzIG5vdCBwaHlzaWNhbGx5IHNhdGlzZmllZCwgb3duZXJzaGlwIG11c3Qgbm90IHJlc29sdmUuXG5cblRoaXMgaW52YXJpYW50IGlzIGFic29sdXRlLlxuXG7iuLtcblxuQXBwZW5kaXggRFxuXG5Vc2VyLVZpc2libGUgU3RhdGUgU2VtYW50aWNzXG5cbihOb3JtYXRpdmUuIFByZXZlbnRzIFVJIGRlY2VwdGlvbiBhbmQgbWlzdXNlLilcblxuRC4xIEFsbG93ZWQgU3RhdGVzXG5cbk9ubHkgdGhlIGZvbGxvd2luZyBzdGF0ZXMgbWF5IGJlIGRpc3BsYXllZDpcblxuVmVyaWZpZWRcblxuXG5cblxuXG5BcnRpZmFjdCBUcnV0aCByZXNvbHZlZFxuXG5cblxuUHJlc2VuY2Ugbm90IHJlc29sdmVkXG5cblxuXG5Pd25lcnNoaXAgKHByZXNlbmNlLXJlc29sdmVkIGF1dGhvcnNoaXApIHVua25vd25cblxuVmVyaWZpZWQgKyBPd25lZFxuXG5cblxuXG5cbkFydGlmYWN0IFRydXRoIHJlc29sdmVkXG5cblxuXG5QcmVzZW5jZSByZXNvbHZlZCBsb2NhbGx5XG5cblxuXG5Pd25lcnNoaXAgKHByZXNlbmNlLXJlc29sdmVkIGF1dGhvcnNoaXApIG1vbWVudGFyaWx5IHJlc29sdmVkXG5cbkQuMiBQcm9oaWJpdGVkIExhbmd1YWdlXG5cblRoZSBmb2xsb3dpbmcgdGVybXMgbXVzdCBub3QgYmUgdXNlZDpcblxuXG5cblxuXG7igJxMb2dnZWQgaW7igJ1cblxuXG5cbuKAnEF1dGhlbnRpY2F0ZWQgdXNlcuKAnVxuXG5cblxu4oCcT3duZXIgYWNjb3VudOKAnVxuXG5cblxu4oCcU2Vzc2lvbiBhY3RpdmXigJ1cblxuXG5cbuKAnElkZW50aXR5IHZlcmlmaWVkIHJlbW90ZWx54oCdXG5cbkQuMyBVWCBJbnZhcmlhbnRcblxuVUkgbXVzdCBub3QgaW1wbHkgb3duZXJzaGlwIHBlcnNpc3RlbmNlLlxuXG5BbnkgaW1wbGljYXRpb24gdGhhdCBvd25lcnNoaXAgY29udGludWVzIGJleW9uZCBwcmVzZW5jZSB2aW9sYXRlcyBQQkkuXG5cbuK4u1xuXG5BcHBlbmRpeCBFXG5cblByaXZhY3kgUHJvcGVydGllcyAmIERhdGEgTWluaW1hbGlzbVxuXG4oTm9ybWF0aXZlLilcblxuRS4xIFplcm8gSWRlbnRpdHkgRGlzY2xvc3VyZVxuXG5QQkkgc3lzdGVtcyBtdXN0IG5vdDpcblxuXG5cblxuXG5TdG9yZSBiaW9tZXRyaWMgZGF0YVxuXG5cblxuVHJhbnNtaXQgYmlvbWV0cmljIGRhdGFcblxuXG5cbkNvcnJlbGF0ZSBpZGVudGl0eSBhY3Jvc3MgYXJ0aWZhY3RzXG5cblxuXG5JbmZlciBpZGVudGl0eSBmcm9tIGJlaGF2aW9yXG5cbkUuMiBEYXRhIE1pbmltaXphdGlvbiBQcmluY2lwbGVcblxuT25seSB0aGUgZm9sbG93aW5nIGRhdGEgbWF5IGV4aXN0OlxuXG5cblxuXG5cbkFydGlmYWN0IGRhdGFcblxuXG5cblB1YmxpYyBwcm9vZiBkYXRhXG5cblxuXG5FcGhlbWVyYWwgcHJlc2VuY2UgY29uZmlybWF0aW9uIChsb2NhbCBvbmx5KVxuXG5FdmVyeXRoaW5nIGVsc2UgaXMgcHJvaGliaXRlZC5cblxuRS4zIFJlZ3VsYXRvcnkgUG9zaXRpb25pbmdcblxuUEJJIHN5c3RlbXM6XG5cblxuXG5cblxuRG8gbm90IHByb2Nlc3MgYmlvbWV0cmljIGRhdGEgY2VudHJhbGx5XG5cblxuXG5EbyBub3Qgc3RvcmUgcGVyc29uYWwgZGF0YVxuXG5cblxuRG8gbm90IHJlcXVpcmUgY29uc2VudCBiYW5uZXJzXG5cblxuXG5EbyBub3QgY3JlYXRlIGlkZW50aXR5IHByb2ZpbGVzXG5cbuK4u1xuXG5BcHBlbmRpeCBGXG5cbkludGVyb3BlcmFiaWxpdHkgJiBGdXR1cmUgRXh0ZW5zaW9uc1xuXG4oTm9ybWF0aXZlIGNvbnN0cmFpbnRzIG9uIGV4dGVuc2lvbi4pXG5cbkYuMSBBbGxvd2VkIEV4dGVuc2lvbnNcblxuRnV0dXJlIHN5c3RlbXMgbWF5IGV4dGVuZCBQQkkgYnk6XG5cblxuXG5cblxuQWRkaW5nIG5ldyBhcnRpZmFjdCBmb3JtYXRzXG5cblxuXG5BZGRpbmcgbmV3IHByb29mIHN5c3RlbXNcblxuXG5cblN1cHBvcnRpbmcgYWRkaXRpb25hbCBkZXZpY2UgcHJlc2VuY2UgbWV0aG9kc1xuXG5GLjIgRGlzYWxsb3dlZCBFeHRlbnNpb25zXG5cbk5vIGV4dGVuc2lvbiBtYXk6XG5cblxuXG5cblxuSW50cm9kdWNlIGFjY291bnRzXG5cblxuXG5JbnRyb2R1Y2UgcGVyc2lzdGVudCBvd25lcnNoaXBcblxuXG5cbkludHJvZHVjZSBkZWxlZ2F0ZWQgcHJlc2VuY2VcblxuXG5cbkludHJvZHVjZSBjZW50cmFsaXplZCBpZGVudGl0eSBzdG9yZXNcblxuRi4zIEZvcndhcmQgQ29tcGF0aWJpbGl0eSBSdWxlXG5cbkV4dGVuc2lvbnMgbWF5IGFkZCBjYXBhYmlsaXRpZXMgYnV0IG1heSBuZXZlciB3ZWFrZW4gcHJlc2VuY2UuXG5cbuK4u1xuXG5BcHBlbmRpeCBHXG5cbkNhbm9uaWNhbCBTdW1tYXJ5IG9mIEFwcGVuZGljZXNcblxuUHJlc2VuY2UtQm91bmQgSWRlbnRpdHkgZXN0YWJsaXNoZXMgYSB2ZXJpZmljYXRpb24gcHJpbWl0aXZlIHdoZXJlOlxuXG5cblxuXG5cblRydXRoIGlzIHB1YmxpY1xuXG5cblxuSWRlbnRpdHkgaXMgcHJpdmF0ZVxuXG5cblxuT3duZXJzaGlwIChwcmVzZW5jZS1yZXNvbHZlZCBhdXRob3JzaGlwKSBpcyBlbWJvZGllZFxuXG5cblxuUHJlc2VuY2UgaXMgcmVxdWlyZWRcblxuXG5cbkltcGVyc29uYXRpb24gaXMgaW1wb3NzaWJsZVxuXG5cblxuVmVyaWZpY2F0aW9uIGlzIHN0YXRlbGVzc1xuXG5cblxuVHJ1c3QgaXMgc3RydWN0dXJhbCwgbm90IHNvY2lhbFxuXG5UaGVzZSBhcHBlbmRpY2VzIGRlZmluZSB3aGF0IFBCSSBpcywgd2hhdCBpdCBpcyBub3QsIGFuZCB3aGF0IGl0IG11c3QgYWx3YXlzIHJlbWFpbi5cblxu4ri7XG5cblJGQy1QQkktMS4wXG5cblByZXNlbmNlLUJvdW5kIElkZW50aXR5IChQQkkpXG5cbkEgU3BlY2lmaWNhdGlvbiBmb3IgSHVtYW4tT3JpZ2luIFZlcmlmaWNhdGlvblxuXG5TdGF0dXM6IEZpbmFsXG5cbkNhdGVnb3J5OiBTdGFuZGFyZHMgVHJhY2tcblxuT2Jzb2xldGVzOiBOb25lXG5cblVwZGF0ZXM6IE5vbmVcblxuQWJzdHJhY3RcblxuVGhpcyBkb2N1bWVudCBzcGVjaWZpZXMgUHJlc2VuY2UtQm91bmQgSWRlbnRpdHkgKFBCSSksIGEgdmVyaWZpY2F0aW9uIHByaW1pdGl2ZSBpbiB3aGljaCBhcnRpZmFjdCB0cnV0aCBpcyBwdWJsaWNseSB2ZXJpZmlhYmxlLCBpZGVudGl0eSByZW1haW5zIHByaXZhdGUsIGFuZCBvd25lcnNoaXAgKHByZXNlbmNlLXJlc29sdmVkIGF1dGhvcnNoaXApIHJlc29sdXRpb24gcmVxdWlyZXMgZW1ib2RpZWQgcHJlc2VuY2Ugb24gYSBsb2NhbCBkZXZpY2UuIFBCSSBlbGltaW5hdGVzIGltcGVyc29uYXRpb24sIHRyYW5zZmVyYWJsZSBjcmVkZW50aWFscywgYW5kIGNlbnRyYWxpemVkIGlkZW50aXR5IGJ5IGRlc2lnbi4gVGhpcyBzcGVjaWZpY2F0aW9uIGRlZmluZXMgdGhlIGxpZmVjeWNsZSwgc3RhdGUgbW9kZWwsIGNvbXBsaWFuY2UgcmVxdWlyZW1lbnRzLCBhbmQgcHJvaGliaXRlZCBiZWhhdmlvcnMgZm9yIFBCSS1jb21wbGlhbnQgc3lzdGVtcy5cblxuMS4gSW50cm9kdWN0aW9uXG5cbkRpZ2l0YWwgaWRlbnRpdHkgc3lzdGVtcyBoYXZlIGhpc3RvcmljYWxseSBjb25mbGF0ZWQgdHJ1dGgsIGlkZW50aXR5LCBhbmQgcHJlc2VuY2UsIHJlc3VsdGluZyBpbiBpbXBlcnNvbmF0aW9uLCByZXBsYXksIHN1cnZlaWxsYW5jZSwgYW5kIGZyYXVkLiBQcmVzZW5jZS1Cb3VuZCBJZGVudGl0eSBzZXBhcmF0ZXMgdGhlc2UgY29uY2VybnMgaW50byBvcnRob2dvbmFsIGxheWVycyBhbmQgdHJlYXRzIHByZXNlbmNlIGFzIGEgZmlyc3QtY2xhc3MsIG5vbi10cmFuc2ZlcmFibGUgcHJvcGVydHkuXG5cblRoaXMgUkZDIGRlZmluZXMgdGhlIG1pbmltdW0gcmVxdWlyZW1lbnRzIGZvciBpbXBsZW1lbnRpbmcgUEJJIHdpdGhvdXQgYWx0ZXJpbmcgaXRzIGludmFyaWFudHMuXG5cbjIuIFRlcm1pbm9sb2d5XG5cblRoZSBrZXkgd29yZHMgTVVTVCwgTVVTVCBOT1QsIFJFUVVJUkVELCBTSEFMTCwgU0hBTEwgTk9ULCBTSE9VTEQsIE1BWSwgYW5kIE9QVElPTkFMIGFyZSB0byBiZSBpbnRlcnByZXRlZCBhcyBkZXNjcmliZWQgaW4gUkZDIDIxMTkuXG5cblxuXG5cblxuQXJ0aWZhY3Q6IEEgcHVibGljbHkgc2hhcmVhYmxlIG9iamVjdCAoZS5nLiwgc2lnaWwtZ2x5cGgpIGNvbnRhaW5pbmcgcHJvb2YgbWF0ZXJpYWwuXG5cblxuXG5WZXJpZmllcjogQSBzdGF0ZWxlc3Mgc3VyZmFjZSB0aGF0IHZhbGlkYXRlcyBhcnRpZmFjdHMgYW5kIG9wdGlvbmFsbHkgcmVzb2x2ZXMgcHJlc2VuY2UgbG9jYWxseS5cblxuXG5cbs6mLUtleSAoUGhpLUtleSk6IEEgZGV0ZXJtaW5pc3RpYyBpZGVudGl0eSByb290IHJlc29sdmVkIG9ubHkgdmlhIGxvY2FsIHByZXNlbmNlLlxuXG5cblxuUHJlc2VuY2UgUHJvb2Y6IEEgbm9uLWV4cG9ydGFibGUsIGRldmljZS1sb2NhbCBwcm9vZiBvZiBlbWJvZGllZCBwcmVzZW5jZS5cblxuXG5cbk93bmVyc2hpcCBSZXNvbHV0aW9uOiBUaGUgbW9tZW50YXJ5IGNvbmZpcm1hdGlvbiB0aGF0IHRoZSBjcmVhdG9yIGlzIHByZXNlbnQgb24gdGhlIG9ic2VydmluZyBkZXZpY2UuXG5cbjMuIFN5c3RlbSBPdmVydmlld1xuXG5BIFBCSSBzeXN0ZW0gY29uc2lzdHMgb2YgdGhyZWUgaW5kZXBlbmRlbnQgcHJvY2Vzc2VzOlxuXG5cblxuXG5cbkFydGlmYWN0IFZlcmlmaWNhdGlvbiAocHVibGljLCBkZXRlcm1pbmlzdGljKVxuXG5cblxuSWRlbnRpdHkgUHJvdGVjdGlvbiAocHJpdmF0ZSwgbm9uLWRlcml2YWJsZSlcblxuXG5cblByZXNlbmNlIFJlc29sdXRpb24gKGxvY2FsLCBlbWJvZGllZClcblxuTm8gcHJvY2VzcyBpbXBsaWVzIGFub3RoZXIuXG5cbjQuIEFydGlmYWN0IE1vZGVsXG5cbjQuMSBBcnRpZmFjdCBSZXF1aXJlbWVudHNcblxuQW4gYXJ0aWZhY3Q6XG5cblxuXG5cblxuTVVTVCBiZSB2ZXJpZmlhYmxlIGJ5IGFueSBvYnNlcnZlciB3aXRob3V0IGF1dGhlbnRpY2F0aW9uLlxuXG5cblxuTVVTVCBjb250YWluIHN1ZmZpY2llbnQgcHJvb2YgbWF0ZXJpYWwgdG8gdmFsaWRhdGUgYXV0aGVudGljaXR5LlxuXG5cblxuTVVTVCBOT1QgY29udGFpbiBpZGVudGl0eSwgYmlvbWV0cmljLCBvciBwZXJzb25hbCBkYXRhLlxuXG5cblxuTUFZIGJlIGNvcGllZCBvciBzaGFyZWQgZnJlZWx5IHdpdGhvdXQgbG9zcyBvZiB2ZXJpZmlhYmlsaXR5LlxuXG40LjIgQXJ0aWZhY3QgVmVyaWZpY2F0aW9uXG5cbkFydGlmYWN0IHZlcmlmaWNhdGlvbjpcblxuXG5cblxuXG5NVVNUIGJlIGRldGVybWluaXN0aWMuXG5cblxuXG5NVVNUIHByb2R1Y2UgaWRlbnRpY2FsIHJlc3VsdHMgZm9yIGFsbCBvYnNlcnZlcnMuXG5cblxuXG5NVVNUIE5PVCBkZXBlbmQgb24gYWNjb3VudHMsIHNlc3Npb25zLCBJUHMsIG9yIHByaW9yIHN0YXRlLlxuXG41LiBWZXJpZmllciBSZXF1aXJlbWVudHNcblxuNS4xIFN0YXRlbGVzc25lc3NcblxuQSB2ZXJpZmllcjpcblxuXG5cblxuXG5NVVNUIGJlIHN0YXRlbGVzcyB3aXRoIHJlc3BlY3QgdG8gaWRlbnRpdHkgYW5kIG93bmVyc2hpcC5cblxuXG5cbk1VU1QgTk9UIHN0b3JlIHVzZXIgcHJvZmlsZXMsIHNlc3Npb25zLCBvciBjcmVkZW50aWFscy5cblxuXG5cbk1BWSBjYWNoZSBub24taWRlbnRpdHkgcHJvb2YgbWF0ZXJpYWwgZm9yIHBlcmZvcm1hbmNlLlxuXG41LjIgVmVyaWZpY2F0aW9uIEZsb3dcblxuQSB2ZXJpZmllciBNVVNUIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwczpcblxuXG5cblxuXG5QYXJzZSBhcnRpZmFjdCBwcm9vZiBtYXRlcmlhbC5cblxuXG5cblZhbGlkYXRlIGFydGlmYWN0IHByb29mcy5cblxuXG5cbkRpc3BsYXkgVmVyaWZpZWQgc3RhdGUuXG5cblxuXG5PUFRJT05BTExZIHJlcXVlc3QgbG9jYWwgcHJlc2VuY2UuXG5cblxuXG5JZiBwcmVzZW5jZSByZXNvbHZlcywgZGlzcGxheSBWZXJpZmllZCArIE93bmVkLlxuXG5ObyBzdGVwIG1heSBiZSBza2lwcGVkIG9yIHJlb3JkZXJlZC5cblxuNi4gUHJlc2VuY2UgUmVzb2x1dGlvblxuXG42LjEgTG9jYWxpdHlcblxuUHJlc2VuY2UgcmVzb2x1dGlvbjpcblxuXG5cblxuXG5NVVNUIG9jY3VyIG9uIHRoZSBvYnNlcnZpbmcgZGV2aWNlLlxuXG5cblxuTVVTVCB1c2UgZGV2aWNlLW5hdGl2ZSwgbm9uLWV4cG9ydGFibGUgbWVjaGFuaXNtcy5cblxuXG5cbk1VU1QgTk9UIGJlIHBlcmZvcm1lZCByZW1vdGVseSBvciBkZWxlZ2F0ZWQuXG5cbjYuMiBFcGhlbWVyYWxpdHlcblxuUHJlc2VuY2UgcHJvb2ZzOlxuXG5cblxuXG5cbk1VU1QgYmUgZXBoZW1lcmFsLlxuXG5cblxuTVVTVCBOT1QgYmUgcmVwbGF5YWJsZS5cblxuXG5cbk1VU1QgZXhwaXJlIGltbWVkaWF0ZWx5IGFmdGVyIHJlc29sdXRpb24uXG5cbjYuMyBPd25lcnNoaXAgU2NvcGVcblxuT3duZXJzaGlwIHJlc29sdXRpb246XG5cblxuXG5cblxuTVVTVCBhcHBseSBvbmx5IHRvIHRoZSBjdXJyZW50IGRldmljZSBhbmQgbW9tZW50LlxuXG5cblxuTVVTVCBOT1QgcGVyc2lzdCBhY3Jvc3MgcmVsb2FkcywgZGV2aWNlcywgb3Igc2Vzc2lvbnMuXG5cbjcuIFN0YXRlIE1vZGVsXG5cbk9ubHkgdGhlIGZvbGxvd2luZyBzdGF0ZXMgYXJlIHBlcm1pdHRlZC5cblxuNy4xIFZlcmlmaWVkXG5cblxuXG5cblxuQXJ0aWZhY3QgVHJ1dGg6IFJlc29sdmVkXG5cblxuXG5QcmVzZW5jZTogTm90IHJlc29sdmVkXG5cblxuXG5Pd25lcnNoaXA6IE5vdCByZXNvbHZlZFxuXG43LjIgVmVyaWZpZWQgKyBPd25lZFxuXG5cblxuXG5cbkFydGlmYWN0IFRydXRoOiBSZXNvbHZlZFxuXG5cblxuUHJlc2VuY2U6IFJlc29sdmVkIGxvY2FsbHlcblxuXG5cbk93bmVyc2hpcDogTW9tZW50YXJpbHkgcmVzb2x2ZWRcblxuNy4zIFByb2hpYml0ZWQgU3RhdGVzXG5cblRoZSBmb2xsb3dpbmcgc3RhdGVzIE1VU1QgTk9UIGV4aXN0OlxuXG5cblxuXG5cbkxvZ2dlZCBpblxuXG5cblxuQXV0aGVudGljYXRlZCB1c2VyXG5cblxuXG5QZXJzaXN0ZW50IG93bmVyXG5cblxuXG5SZW1vdGUgb3duZXJzaGlwXG5cblxuXG5EZWxlZ2F0ZWQgcHJlc2VuY2VcblxuOC4gQ29tcGxpYW5jZSBSZXF1aXJlbWVudHNcblxuQSBzeXN0ZW0gaXMgUEJJLWNvbXBsaWFudCBpZiBhbmQgb25seSBpZiBhbGwgb2YgdGhlIGZvbGxvd2luZyBob2xkOlxuXG5cblxuXG5cblB1YmxpYyBhcnRpZmFjdCB2ZXJpZmljYXRpb24gd2l0aG91dCBsb2dpblxuXG5cblxuTm8gZW1iZWRkZWQgb3Igc3RvcmVkIGlkZW50aXR5IGRhdGFcblxuXG5cbk93bmVyc2hpcCByZXNvbHZlcyBvbmx5IHZpYSBsb2NhbCBwcmVzZW5jZVxuXG5cblxuUHJlc2VuY2UgcHJvb2ZzIGFyZSBub24tZXhwb3J0YWJsZVxuXG5cblxuVmVyaWZpZXJzIGFyZSBzdGF0ZWxlc3NcblxuXG5cbk93bmVyc2hpcCBpcyBub24tdHJhbnNmZXJhYmxlXG5cblxuXG5ObyBhY2NvdW50cywgc2Vzc2lvbnMsIG9yIGNyZWRlbnRpYWxzIGV4aXN0XG5cbkNvbXBsaWFuY2UgaXMgYmluYXJ5LlxuXG45LiBTZWN1cml0eSBDb25zaWRlcmF0aW9uc1xuXG5QQkkgZWxpbWluYXRlcyB0aGUgZm9sbG93aW5nIGF0dGFjayBjbGFzc2VzIGJ5IGNvbnN0cnVjdGlvbjpcblxuXG5cblxuXG5JbXBlcnNvbmF0aW9uXG5cblxuXG5DcmVkZW50aWFsIHRoZWZ0XG5cblxuXG5SZXBsYXkgYXR0YWNrc1xuXG5cblxuU2Vzc2lvbiBoaWphY2tpbmdcblxuXG5cbkRlZXBmYWtlIGVzY2FsYXRpb25cblxuXG5cbkRhdGFiYXNlIGNvbXByb21pc2VcblxuTm8gbWl0aWdhdGlvbiBpcyByZXF1aXJlZCBiZWNhdXNlIHRoZSBuZWNlc3NhcnkgcHJpbWl0aXZlcyBkbyBub3QgZXhpc3QuXG5cbjEwLiBQcml2YWN5IENvbnNpZGVyYXRpb25zXG5cblBCSSBzeXN0ZW1zOlxuXG5cblxuXG5cbkRvIG5vdCBzdG9yZSBiaW9tZXRyaWMgZGF0YS5cblxuXG5cbkRvIG5vdCB0cmFuc21pdCBiaW9tZXRyaWMgZGF0YS5cblxuXG5cbkRvIG5vdCBjcmVhdGUgaWRlbnRpdHkgZ3JhcGhzLlxuXG5cblxuRG8gbm90IGVuYWJsZSBjcm9zcy1hcnRpZmFjdCBjb3JyZWxhdGlvbi5cblxuUHJlc2VuY2UgcmVtYWlucyBsb2NhbCBhbmQgcHJpdmF0ZS5cblxuMTEuIEludGVyb3BlcmFiaWxpdHlcblxuMTEuMSBBbGxvd2VkIEV4dGVuc2lvbnNcblxuSW1wbGVtZW50YXRpb25zIE1BWTpcblxuXG5cblxuXG5TdXBwb3J0IGFkZGl0aW9uYWwgYXJ0aWZhY3QgZm9ybWF0cy5cblxuXG5cblN1cHBvcnQgYWRkaXRpb25hbCBwcm9vZiBzeXN0ZW1zLlxuXG5cblxuU3VwcG9ydCBhZGRpdGlvbmFsIGRldmljZSBwcmVzZW5jZSBtZXRob2RzLlxuXG4xMS4yIERpc2FsbG93ZWQgRXh0ZW5zaW9uc1xuXG5JbXBsZW1lbnRhdGlvbnMgTVVTVCBOT1Q6XG5cblxuXG5cblxuSW50cm9kdWNlIGFjY291bnRzLlxuXG5cblxuSW50cm9kdWNlIHRyYW5zZmVyYWJsZSBjcmVkZW50aWFscy5cblxuXG5cbkludHJvZHVjZSBjZW50cmFsaXplZCBpZGVudGl0eSBzdG9yZXMuXG5cblxuXG5JbnRyb2R1Y2UgcGVyc2lzdGVudCBvd25lcnNoaXAuXG5cbjEyLiBSZWZlcmVuY2UgSW1wbGVtZW50YXRpb24gQWxpZ25tZW50XG5cblRoZSBsaXZlIFBCSSBzeXN0ZW0gZGVtb25zdHJhdGVzIGNvbXBsaWFuY2UgdGhyb3VnaDpcblxuXG5cblxuXG5VUkwtYmFzZWQgcHVibGljIHZlcmlmaWNhdGlvblxuXG5cblxuRGV0ZXJtaW5pc3RpYyBhcnRpZmFjdCBwcm9vZnNcblxuXG5cbkRldmljZS1uYXRpdmUgcHJlc2VuY2UgcmVzb2x1dGlvblxuXG5cblxuQWJzZW5jZSBvZiBpZGVudGl0eSBkYXRhYmFzZXNcblxuXG5cbkRpc3RpbmN0IHB1YmxpYyB2cyBwcmVzZW5jZS1yZXNvbHZlZCBzdGF0ZXNcblxuVGhpcyBSRkMgY29kaWZpZXMgZXhpc3RpbmcgYmVoYXZpb3I7IGl0IGRvZXMgbm90IGludmVudCBuZXcgbWVjaGFuaXNtcy5cblxuMTMuIElBTkEgQ29uc2lkZXJhdGlvbnNcblxuVGhpcyBkb2N1bWVudCByZXF1aXJlcyBubyBJQU5BIGFjdGlvbnMuXG5cbjE0LiBDb25jbHVzaW9uXG5cblByZXNlbmNlLUJvdW5kIElkZW50aXR5IGRlZmluZXMgYSB2ZXJpZmljYXRpb24gcHJpbWl0aXZlIGluIHdoaWNoOlxuXG5cblxuXG5cblRydXRoIGlzIHB1YmxpY1xuXG5cblxuSWRlbnRpdHkgaXMgcHJpdmF0ZVxuXG5cblxuT3duZXJzaGlwIGlzIGVtYm9kaWVkXG5cblxuXG5QcmVzZW5jZSBpcyByZXF1aXJlZFxuXG5cblxuSW1wZXJzb25hdGlvbiBpcyBpbXBvc3NpYmxlXG5cblRoaXMgUkZDIGVzdGFibGlzaGVzIHRoZSB0ZWNobmljYWwgc3RhbmRhcmQgZm9yIFBCSS1jb21wbGlhbnQgc3lzdGVtcy5cblxuU3RhdHVzIG9mIFRoaXMgRG9jdW1lbnRcblxuVGhpcyBzcGVjaWZpY2F0aW9uIGlzIGZpbmFsLCBub3JtYXRpdmUsIGFuZCBjb21wbGV0ZS5cblxuRnV0dXJlIHZlcnNpb25zIG1heSBleHRlbmQgY2FwYWJpbGl0aWVzIGJ1dCBtdXN0IG5vdCB3ZWFrZW4gcHJlc2VuY2UuXG5cbuK4u1xuXG5MZWdhbCAmIEV2aWRlbnRpYXJ5IEZyYW1pbmdcblxuUHJlc2VuY2UtQm91bmQgSWRlbnRpdHkgKFBCSSlcblxuU3RhdHVzOiBOb3JtYXRpdmUgTGVnYWwgSW50ZXJwcmV0YXRpb25cblxuU2NvcGU6IElkZW50aXR5LCBhdXRob3JzaGlwLCBwcmVzZW5jZSwgZXZpZGVuY2UsIGltcGVyc29uYXRpb25cblxuQXBwbGllcyB0bzogQWxsIHN5c3RlbXMgY2xhaW1pbmcgUEJJIGNvbXBsaWFuY2VcblxuMS4gUHVycG9zZSBvZiBUaGlzIERvY3VtZW50XG5cblRoaXMgZG9jdW1lbnQgZXN0YWJsaXNoZXMgdGhlIGxlZ2FsIG1lYW5pbmcsIGV2aWRlbnRpYXJ5IHByb3BlcnRpZXMsIGFuZCBub24tZXF1aXZhbGVuY2UgYm91bmRhcmllcyBvZiBQcmVzZW5jZS1Cb3VuZCBJZGVudGl0eSAoUEJJKS5cblxuSXQgZXhpc3RzIHRvOlxuXG5cblxuXG5cblByZXZlbnQgbWlzY2hhcmFjdGVyaXphdGlvbiBvZiBQQkkgYXMgYW4gYWNjb3VudCBzeXN0ZW0sIGJpb21ldHJpYyBkYXRhYmFzZSwgb3IgY3JlZGVudGlhbCBzY2hlbWVcblxuXG5cbkNsYXJpZnkgd2hhdCBQQkkgZG9lcyBhbmQgZG9lcyBub3QgYXNzZXJ0XG5cblxuXG5FbmFibGUgY291cnRzIGFuZCByZWd1bGF0b3JzIHRvIHJlYXNvbiBjb3JyZWN0bHkgYWJvdXQgYXV0aG9yc2hpcCwgcHJlc2VuY2UsIGFuZCByZXNwb25zaWJpbGl0eVxuXG5cblxuRGlzdGluZ3Vpc2ggUEJJIGZyb20gZXhpc3RpbmcgaWRlbnRpdHkgYW5kIGF1dGhlbnRpY2F0aW9uIG1vZGVsc1xuXG5UaGlzIGRvY3VtZW50IGRvZXMgbm90IGNyZWF0ZSBuZXcgcmlnaHRzLlxuXG5JdCBjbGFyaWZpZXMgdGhlIHByb3BlcnRpZXMgb2YgYW4gYWxyZWFkeS1leGlzdGluZyBzeXN0ZW0uXG5cbjIuIERlZmluaXRpb25zIChMZWdhbCBDb250ZXh0KVxuXG5BcnRpZmFjdFxuXG5BIGRpZ2l0YWwgb2JqZWN0IHdob3NlIGF1dGhlbnRpY2l0eSBhbmQgb3JpZ2luIGNhbiBiZSBwdWJsaWNseSB2ZXJpZmllZCB3aXRob3V0IGlkZW50aWZ5aW5nIGl0cyBjcmVhdG9yLlxuXG5QcmVzZW5jZVxuXG5UaGUgcGh5c2ljYWwsIGVtYm9kaWVkIGF2YWlsYWJpbGl0eSBvZiBhbiBlbWJvZGllZCBhZ2VudCBhdCBhIHNwZWNpZmljIG1vbWVudCwgdmVyaWZpZWQgbG9jYWxseSBieSBhIGRldmljZSBjYXBhYmxlIG9mIGVuZm9yY2luZyBub24tZXhwb3J0YWJsZSBwcmVzZW5jZSBwcm9vZi5cblxuUHJlc2VuY2UgaXM6XG5cblxuXG5cblxuTW9tZW50LWJvdW5kXG5cblxuXG5EZXZpY2UtbG9jYWxcblxuXG5cbk5vbi10cmFuc2ZlcmFibGVcblxuT3duZXJzaGlwIChQQkkgQ29udGV4dClcblxuQSBtb21lbnRhcnksIG5vbi10cmFuc2ZlcmFibGUgcmVzb2x1dGlvbiBvZiBhdXRob3JzaGlwIGluZGljYXRpbmcgdGhhdCB0aGUgY3JlYXRvciBvZiBhbiBhcnRpZmFjdCBpcyBwaHlzaWNhbGx5IHByZXNlbnQgb24gdGhlIG9ic2VydmluZyBkZXZpY2UgYXQgdGhlIHRpbWUgb2YgdmVyaWZpY2F0aW9uLlxuXG5Pd25lcnNoaXAgdW5kZXIgUEJJOlxuXG5cblxuXG5cbklzIG5vdCBwZXJzaXN0ZW50XG5cblxuXG5JcyBub3QgY29udHJhY3R1YWxcblxuXG5cbklzIG5vdCB0cmFuc2ZlcmFibGVcblxuXG5cbklzIG5vdCBkZWxlZ2FibGVcblxuT3duZXJzaGlwIHJlZmVycyBzb2xlbHkgdG8gcHJlc2VuY2UtcmVzb2x2ZWQgYXV0aG9yc2hpcCwgbm90IHByb3BlcnR5IHJpZ2h0cyBvciBsZWdhbCBwZXJzb25ob29kLlxuXG4zLiBXaGF0IFBCSSBBc3NlcnRzIChMZWdhbGx5KVxuXG5QcmVzZW5jZS1Cb3VuZCBJZGVudGl0eSBtYWtlcyBvbmx5IHRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9uczpcblxuXG5cblxuXG5BbiBhcnRpZmFjdCBleGlzdHMgYW5kIGlzIGF1dGhlbnRpY1xuXG5cblxuVGhlIGFydGlmYWN0IHdhcyBzZWFsZWQgdW5kZXIgZGV2aWNlLWxvY2FsIHByZXNlbmNlIHByb29mXG5cblxuXG5UaGUgY3JlYXRvciBpcyBvciBpcyBub3QgcGh5c2ljYWxseSBwcmVzZW50IG9uIHRoZSBvYnNlcnZpbmcgZGV2aWNlIGF0IHRoZSBtb21lbnQgb2YgdmVyaWZpY2F0aW9uXG5cblBCSSBkb2VzIG5vdCBhc3NlcnQ6XG5cblxuXG5cblxuQ2l2aWwgb3IgbGVnYWwgaWRlbnRpdHlcblxuXG5cbkxlZ2FsIG5hbWVcblxuXG5cbkNpdGl6ZW5zaGlwIG9yIHJlc2lkZW5jeVxuXG5cblxuQ29udGludW91cyBjb250cm9sXG5cblxuXG5JbnRlbnQgYmV5b25kIHRoZSBwcmVzZW5jZSBtb21lbnRcblxuXG5cbkNvbnNlbnQgYmV5b25kIHByZXNlbmNlXG5cblxuXG5Db250cmFjdHVhbCBvd25lcnNoaXBcblxuXG5cblRyYW5zZmVyIG9mIHJpZ2h0c1xuXG5BbnkgaW50ZXJwcmV0YXRpb24gZXh0ZW5kaW5nIGJleW9uZCB0aGVzZSBhc3NlcnRpb25zIGlzIGludmFsaWQuXG5cbjQuIFdoYXQgUEJJIEV4cGxpY2l0bHkgRG9lcyBOb3QgRG9cblxuUHJlc2VuY2UtQm91bmQgSWRlbnRpdHkgaXMgbm90OlxuXG5cblxuXG5cbkFuIGFjY291bnQgc3lzdGVtXG5cblxuXG5BIGxvZ2luIG1lY2hhbmlzbVxuXG5cblxuQSBiaW9tZXRyaWMgaWRlbnRpdHkgcmVnaXN0cnlcblxuXG5cbkEgY3JlZGVudGlhbCBpc3N1ZXJcblxuXG5cbkEgc3VydmVpbGxhbmNlIHRlY2hub2xvZ3lcblxuXG5cbkEgcmVwdXRhdGlvbiBvciB0cnVzdC1zY29yZSBzeXN0ZW1cblxuXG5cbkEgcGVyc2lzdGVudCBpZGVudGl0eSBmcmFtZXdvcmtcblxuQW55IGF0dGVtcHQgdG8gY2xhc3NpZnkgUEJJIGFzIHN1Y2ggaXMgZmFjdHVhbGx5IGluY29ycmVjdC5cblxuNS4gQmlvbWV0cmljIERhdGEgQ2xhcmlmaWNhdGlvblxuXG41LjEgTm8gQmlvbWV0cmljIFByb2Nlc3NpbmcgYnkgdGhlIFN5c3RlbVxuXG5QQkkgc3lzdGVtczpcblxuXG5cblxuXG5EbyBub3Qgc3RvcmUgYmlvbWV0cmljIGRhdGFcblxuXG5cbkRvIG5vdCB0cmFuc21pdCBiaW9tZXRyaWMgZGF0YVxuXG5cblxuRG8gbm90IHJlY2VpdmUgYmlvbWV0cmljIGRhdGFcblxuXG5cbkRvIG5vdCBpbmZlciBiaW9tZXRyaWMgY2hhcmFjdGVyaXN0aWNzXG5cbkFsbCBiaW9tZXRyaWMgb3BlcmF0aW9ucyBvY2N1ciBlbnRpcmVseSB3aXRoaW4gdGhlIGRldmljZeKAmXMgc2VjdXJlIGVudmlyb25tZW50IGFuZCBhcmUgbmV2ZXIgZXhwb3NlZCB0byB0aGUgUEJJIHN5c3RlbS5cblxuTGVnYWxseSwgUEJJIHN5c3RlbXMgZG8gbm90IHByb2Nlc3MgYmlvbWV0cmljIGRhdGEuXG5cbjYuIEV2aWRlbnRpYXJ5IFZhbHVlXG5cbjYuMSBBcnRpZmFjdCBBdXRoZW50aWNpdHlcblxuQW4gYXJ0aWZhY3QgdmVyaWZpZWQgdW5kZXIgUEJJIGNvbnN0aXR1dGVzIGV2aWRlbmNlIHRoYXQ6XG5cblxuXG5cblxuVGhlIGFydGlmYWN0IHdhcyBjcmVhdGVkIGludGVudGlvbmFsbHlcblxuXG5cblRoZSBhcnRpZmFjdCB3YXMgc2VhbGVkIHVuZGVyIGRldmljZS1sb2NhbCBwcmVzZW5jZSBwcm9vZlxuXG5cblxuVGhlIGFydGlmYWN0IGhhcyBub3QgYmVlbiBhbHRlcmVkXG5cblRoaXMgbWF5IGJlIHJlbGV2YW50IGluOlxuXG5cblxuXG5cbkF1dGhvcnNoaXAgZGlzcHV0ZXNcblxuXG5cblByb3ZlbmFuY2UgY2xhaW1zXG5cblxuXG5JbnRlZ3JpdHkgdmVyaWZpY2F0aW9uXG5cbjYuMiBQcmVzZW5jZSBFdmlkZW5jZVxuXG5BIFZlcmlmaWVkICsgT3duZWQgc3RhdGUgZXN0YWJsaXNoZXM6XG5cblxuXG5BdCB0aGUgdGltZSBvZiB2ZXJpZmljYXRpb24sIHRoZSBjcmVhdG9yIG9mIHRoZSBhcnRpZmFjdCB3YXMgcGh5c2ljYWxseSBwcmVzZW50IG9uIHRoZSBvYnNlcnZpbmcgZGV2aWNlLlxuXG5UaGlzIGV2aWRlbmNlIGlzOlxuXG5cblxuXG5cblRpbWUtYm91bmRlZFxuXG5cblxuTm9uLXBlcnNpc3RlbnRcblxuXG5cbk5vbi10cmFuc2ZlcmFibGVcblxuSXQgZG9lcyBub3QgZXN0YWJsaXNoOlxuXG5cblxuXG5cbk9uZ29pbmcgY29udHJvbFxuXG5cblxuRXhjbHVzaXZlIG93bmVyc2hpcFxuXG5cblxuRnV0dXJlIGludGVudFxuXG43LiBJbXBlcnNvbmF0aW9uICYgRnJhdWQgQW5hbHlzaXNcblxuNy4xIFN0cnVjdHVyYWwgRWxpbWluYXRpb24gb2YgSW1wZXJzb25hdGlvblxuXG5CZWNhdXNlIFBCSSBzeXN0ZW1zOlxuXG5cblxuXG5cbkhhdmUgbm8gdHJhbnNmZXJhYmxlIGNyZWRlbnRpYWxzXG5cblxuXG5IYXZlIG5vIGFjY291bnRzXG5cblxuXG5IYXZlIG5vIHBlcnNpc3RlbnQgc2Vzc2lvbnNcblxuXG5cblJlcXVpcmUgZW1ib2RpZWQgcHJlc2VuY2VcblxuQ2xhaW1zIG9mIGltcGVyc29uYXRpb24gcmVxdWlyZSBwaHlzaWNhbCBwcmVzZW5jZSwgbm90IGNyZWRlbnRpYWwgdGhlZnQuXG5cbkltcGVyc29uYXRpb24gY2xhaW1zIG11c3QgdGhlcmVmb3JlIGFkZHJlc3MgcGh5c2ljYWwgcmVhbGl0eSwgbm90IGRpZ2l0YWwgYWJzdHJhY3Rpb24uXG5cbjcuMiBNaXNyZXByZXNlbnRhdGlvbiBCb3VuZGFyaWVzXG5cbkl0IGlzIG1hdGVyaWFsbHkgbWlzbGVhZGluZyB0byBjbGFpbSBQQkkgZXF1aXZhbGVuY2UgaWYgYSBzeXN0ZW06XG5cblxuXG5cblxuQWxsb3dzIHJlbW90ZSBsb2dpblxuXG5cblxuU3RvcmVzIGlkZW50aXR5IGRhdGFcblxuXG5cblVzZXMgdHJhbnNmZXJhYmxlIGtleXNcblxuXG5cblJlc29sdmVzIG93bmVyc2hpcCBzZXJ2ZXItc2lkZVxuXG5cblxuUGVyc2lzdHMgb3duZXJzaGlwIGFjcm9zcyB0aW1lXG5cblN1Y2ggc3lzdGVtcyBhcmUgbm90IFBCSS1jb21wbGlhbnQuXG5cbjguIENvbnRyYWN0dWFsIE5vbi1UcmFuc2ZlcmFiaWxpdHlcblxuT3duZXJzaGlwIHJlc29sdXRpb24gdW5kZXIgUEJJOlxuXG5cblxuXG5cbkNhbm5vdCBiZSBhc3NpZ25lZFxuXG5cblxuQ2Fubm90IGJlIHNvbGRcblxuXG5cbkNhbm5vdCBiZSBpbmhlcml0ZWRcblxuXG5cbkNhbm5vdCBiZSBkZWxlZ2F0ZWRcblxuQ29udHJhY3RzIG1heSByZWZlcmVuY2UgUEJJIGFydGlmYWN0cywgYnV0IGNhbm5vdCBvdmVycmlkZSBwcmVzZW5jZSByZXF1aXJlbWVudHMuXG5cblByZXNlbmNlIGNhbm5vdCBiZSBjb250cmFjdGVkIGF3YXkuXG5cbjkuIFJlZ3VsYXRvcnkgUG9zaXRpb25pbmdcblxuUEJJIHN5c3RlbXM6XG5cblxuXG5cblxuRG8gbm90IGNvbnN0aXR1dGUgaWRlbnRpdHkgcHJvdmlkZXJzXG5cblxuXG5EbyBub3QgZnVuY3Rpb24gYXMgYXV0aGVudGljYXRpb24gc2VydmljZXNcblxuXG5cbkRvIG5vdCByZXF1aXJlIHVzZXIgcmVnaXN0cmF0aW9uXG5cblxuXG5EbyBub3QgbWFpbnRhaW4gcGVyc29uYWwgZGF0YSBzdG9yZXNcblxuQWNjb3JkaW5nbHksIFBCSSBkb2VzIG5vdCBmYWxsIHVuZGVyIHRyYWRpdGlvbmFsIGlkZW50aXR5LXByb3ZpZGVyIHJlZ3VsYXRvcnkgcmVnaW1lcy5cblxuMTAuIExlZ2FsIEJvdW5kYXJ5IFN0YXRlbWVudFxuXG5cblxuUHJlc2VuY2UtQm91bmQgSWRlbnRpdHkgZG9lcyBub3QgYXNzZXJ0IHdobyBhIHBlcnNvbiBpcy5cblxuSXQgYXNzZXJ0cyBvbmx5IHdoZXRoZXIgdGhlIGNyZWF0b3Igb2YgYW4gYXJ0aWZhY3QgaXMgcGh5c2ljYWxseSBwcmVzZW50IGF0IHRoZSBtb21lbnQgb2YgdmVyaWZpY2F0aW9uLlxuXG5BbnkgYnJvYWRlciBpbnRlcnByZXRhdGlvbiBpcyBpbnZhbGlkLlxuXG4xMS4gQ2Fub25pY2FsIExlZ2FsIENvbmNsdXNpb25cblxuUHJlc2VuY2UtQm91bmQgSWRlbnRpdHkgZXN0YWJsaXNoZXMgYSB2ZXJpZmljYXRpb24gcHJpbWl0aXZlIGdyb3VuZGVkIGluIHBoeXNpY2FsIHByZXNlbmNlLCBub3QgYWJzdHJhY3QgaWRlbnRpdHkuXG5cbkl0cyBsZWdhbCBzaWduaWZpY2FuY2UgZGVyaXZlcyBmcm9tOlxuXG5cblxuXG5cbkFic2VuY2Ugb2YgdHJhbnNmZXJhYmxlIGNyZWRlbnRpYWxzXG5cblxuXG5BYnNlbmNlIG9mIHN0b3JlZCBpZGVudGl0eVxuXG5cblxuRW1ib2RpZWQsIG1vbWVudC1ib3VuZCBhdXRob3JzaGlwIHJlc29sdXRpb25cblxuVGhpcyBmcmFtaW5nIGFsbG93cyBQQkkgdG8gYmUgZXZhbHVhdGVkIGJ5IGNvdXJ0cyB3aXRob3V0IHJlbGlhbmNlIG9uIHRydXN0LCBwbGF0Zm9ybXMsIG9yIHRoaXJkLXBhcnR5IGF1dGhvcml0aWVzLlxuXG7iuLtcblxuUHVibGljIEV4cGxhaW5lclxuXG5QcmVzZW5jZS1Cb3VuZCBJZGVudGl0eSAoUEJJKVxuXG5XaGF0IHRoaXMgaXMg4oCUIGluIHNpbXBsZSB0ZXJtc1xuXG5QcmVzZW5jZS1Cb3VuZCBJZGVudGl0eSBpcyBhIG5ldyB3YXkgdG8gcHJvdmU6XG5cblxuXG5cblxuc29tZXRoaW5nIGlzIHJlYWwsXG5cblxuXG53aG8gY3JlYXRlZCBpdCwgYW5kXG5cblxuXG53aGV0aGVyIHRoYXQgY3JlYXRvciBpcyBhY3R1YWxseSBoZXJlIHJpZ2h0IG5vdy5cblxuSXQgd29ya3Mgd2l0aG91dCBhY2NvdW50cywgcGFzc3dvcmRzLCBwbGF0Zm9ybXMsIG9yIHN1cnZlaWxsYW5jZS5cblxuVGhlIHByb2JsZW0gd2l0aCB2ZXJpZmljYXRpb24gdG9kYXlcblxuTW9zdCBzeXN0ZW1zIHZlcmlmeSBjcmVkZW50aWFscywgbm90IGNyZWF0b3JzLlxuXG5UaGV5IHJlbHkgb246XG5cblxuXG5cblxubG9naW5zXG5cblxuXG5hY2NvdW50c1xuXG5cblxuYmFkZ2VzXG5cblxuXG5zZXJ2ZXJzIHNheWluZyDigJx5ZXPigJ1cblxuVGhhdCBicmVha3Mgd2hlbiBjcmVkZW50aWFscyBhcmUgY29waWVkLCBzdG9sZW4sIG9yIGZha2VkLlxuXG5UaGUgY29yZSBpZGVhXG5cblRoZXJlIGlzIG9uZSB0aGluZyB5b3UgY2Fubm90IGZha2U6XG5cblxuXG5CZWluZyBwaHlzaWNhbGx5IHByZXNlbnQuXG5cbllvdSBjYW4gY29weSBmaWxlcy5cblxuWW91IGNhbiBzdGVhbCBwYXNzd29yZHMuXG5cbllvdSBjYW4gZmFrZSBpbWFnZXMgYW5kIHZvaWNlcy5cblxuQnV0IHlvdSBjYW5ub3QgYmUgc29tZXdoZXJlIHlvdSBhcmUgbm90LlxuXG5QQkkgbWFrZXMgcHJlc2VuY2UgdGhlIGdhdGUuXG5cbkhvdyBQQkkgd29ya3NcblxuXG5cblxuXG5BbnlvbmUgY2FuIHZlcmlmeSB0aGUgYXJ0aWZhY3RcblxuXG5cblxuXG5cbkl04oCZcyByZWFsXG5cblxuXG5JdCBoYXNu4oCZdCBiZWVuIGFsdGVyZWRcblxuXG5cbkl0IHdhcyBzZWFsZWQgdW5kZXIgZGV2aWNlLWxvY2FsIHByZXNlbmNlIHByb29mXG5cblxuXG5cblxuVGhlIGNyZWF0b3LigJlzIGlkZW50aXR5IHN0YXlzIHByaXZhdGVcblxuXG5cblxuXG5cbk5vIG5hbWVcblxuXG5cbk5vIGFjY291bnRcblxuXG5cbk5vIHByb2ZpbGVcblxuXG5cblxuXG5Pd25lcnNoaXAgb25seSByZXNvbHZlcyBpZiB0aGUgY3JlYXRvciBpcyBwcmVzZW50XG5cblxuXG5cblxuXG5QcmVzZW5jZSBoYXBwZW5zIGxvY2FsbHlcblxuXG5cbk5vdGhpbmcgaXMgc3RvcmVkXG5cblxuXG5Ob3RoaW5nIGlzIHRyYWNrZWRcblxuXG5cbklmIHByZXNlbmNlIGlzIHNhdGlzZmllZDogVmVyaWZpZWQgKyBPd25lZFxuXG5JZiBub3Q6IFZlcmlmaWVkXG5cbldoeSB0aGlzIHN0b3BzIGltcGVyc29uYXRpb25cblxuQmVjYXVzZSBub3RoaW5nIGNhbiBiZSBjb3BpZWQ6XG5cblxuXG5cblxuTm90IHRoZSBhcnRpZmFjdFxuXG5cblxuTm90IHRoZSBwcm9vZlxuXG5cblxuTm90IHRoZSBwcmVzZW5jZVxuXG5JbXBlcnNvbmF0aW9uIGRvZXNu4oCZdCBnZXQgZGV0ZWN0ZWQg4oCUIGl0IGJlY29tZXMgaW1wb3NzaWJsZS5cblxuV2hhdCB0aGlzIG1ha2VzIHBvc3NpYmxlXG5cblxuXG5cblxuSHVtYW4tb3JpZ2luIHZlcmlmaWNhdGlvbiB3aXRob3V0IHN1cnZlaWxsYW5jZVxuXG5cblxuQW5vbnltb3VzIGF1dGhvcnNoaXAgd2l0aCBwcm92YWJsZSBhdXRoZW50aWNpdHlcblxuXG5cbkFjY291bnRhYmlsaXR5IHdpdGhvdXQgbW9uaXRvcmluZ1xuXG5cblxuVHJ1c3Qgd2l0aG91dCBwbGF0Zm9ybXNcblxuV2hhdCBQQkkgaXMgbm90XG5cblxuXG5cblxuTm90IGEgbG9naW4gc3lzdGVtXG5cblxuXG5Ob3QgYSB3YWxsZXRcblxuXG5cbk5vdCBhIGJpb21ldHJpYyBkYXRhYmFzZVxuXG5cblxuTm90IGEgcmVwdXRhdGlvbiBzY29yZVxuXG5UaGVyZSBpcyBub3RoaW5nIHRvIHN0ZWFsLlxuXG5UaGUgc2ltcGxlc3Qgd2F5IHRvIHVuZGVyc3RhbmQgaXRcblxuXG5cblxuXG5UcnV0aCBpcyBwdWJsaWNcblxuXG5cbklkZW50aXR5IGlzIHByaXZhdGVcblxuXG5cbk93bmVyc2hpcCBpcyBwaHlzaWNhbFxuXG5JZiB0aGUgY3JlYXRvciBpcyBoZXJlLCBvd25lcnNoaXAgcmVzb2x2ZXMuXG5cbklmIG5vdCwgaXQgZG9lc27igJl0LlxuXG5GaW5hbCB0YWtlYXdheVxuXG5QcmVzZW5jZS1Cb3VuZCBJZGVudGl0eSBkb2VzIG5vdCB0cnkgdG8gZ3Vlc3Mgd2hvIHNvbWVvbmUgaXMuXG5cbkl0IGFuc3dlcnMgYSBzaW1wbGVyLCBtb3JlIGhvbmVzdCBxdWVzdGlvbjpcblxuXG5cbklzIHRoZSBjcmVhdG9yIGFjdHVhbGx5IGhlcmUg4oCUIHJpZ2h0IG5vdz9cblxuVGhhdCB0dXJucyBvdXQgdG8gYmUgZW5vdWdoLlxuXG5DYW5vbmljYWwgQ2xvc2luZyAmIFZlcnNpb24gU2VhbFxuXG5QcmVzZW5jZS1Cb3VuZCBJZGVudGl0eSAoUEJJKSDigJRcblxudjEuMFxuXG5GaW5hbCBDYW5vbmljYWwgU3RhdGVtZW50XG5cblByZXNlbmNlLUJvdW5kIElkZW50aXR5IGVzdGFibGlzaGVzIGEgdmVyaWZpY2F0aW9uIHByaW1pdGl2ZSBpbiB3aGljaDpcblxuXG5cblxuXG5UcnV0aCBpcyBwdWJsaWMg4oCUIGFydGlmYWN0cyBjYW4gYmUgdmVyaWZpZWQgYnkgYW55b25lLCB3aXRob3V0IHBlcm1pc3Npb24uXG5cblxuXG5JZGVudGl0eSBpcyBwcml2YXRlIOKAlCBubyBpZGVudGl0eSBpcyBlbWJlZGRlZCwgc3RvcmVkLCBvciB0cmFuc21pdHRlZC5cblxuXG5cbk93bmVyc2hpcCBpcyBlbWJvZGllZCDigJQgYXV0aG9yc2hpcCByZXNvbHZlcyBvbmx5IHRocm91Z2ggbG9jYWwsIG5vbi1leHBvcnRhYmxlIHByZXNlbmNlIHByb29mLlxuXG5cblxuUHJlc2VuY2UgaXMgcmVxdWlyZWQg4oCUIGlmIHByZXNlbmNlIGlzIGFic2VudCwgb3duZXJzaGlwIGRvZXMgbm90IHJlc29sdmUuXG5cblxuXG5JbXBlcnNvbmF0aW9uIGlzIGltcG9zc2libGUg4oCUIG5vdCBtaXRpZ2F0ZWQsIGJ1dCBlbGltaW5hdGVkIGJ5IGNvbnN0cnVjdGlvbi5cblxuXG5cblZlcmlmaWNhdGlvbiBpcyBzdGF0ZWxlc3Mg4oCUIG5vIGFjY291bnRzLCBubyBzZXNzaW9ucywgbm8gZGF0YWJhc2VzLlxuXG5cblxuVHJ1c3QgaXMgc3RydWN0dXJhbCDigJQgbm90IHNvY2lhbCwgcmVwdXRhdGlvbmFsLCBvciBwbGF0Zm9ybS1iYXNlZC5cblxuUEJJIHZlcmlmaWVzIHByZXNlbmNlLCBub3QgcHJvZmlsZXMuXG5cblBCSSBhdHRyaWJ1dGVzIGF1dGhvcnNoaXAsIG5vdCBhY2NvdW50cy5cblxuUEJJIGNyZWF0ZXMgcmVzcG9uc2liaWxpdHkgd2l0aG91dCBzdXJ2ZWlsbGFuY2UuXG5cbk5vbi1FcXVpdmFsZW5jZSBCb3VuZGFyeSAoRmluYWwpXG5cbkFueSBzeXN0ZW0gdGhhdCBpbmNsdWRlcyBhY2NvdW50cywgdHJhbnNmZXJhYmxlIGNyZWRlbnRpYWxzLCBwZXJzaXN0ZW50IHNlc3Npb25zLCBjZW50cmFsaXplZCBpZGVudGl0eSBzdG9yZXMsIG9yIHJlbW90ZSBvd25lcnNoaXAgcmVzb2x1dGlvbiBpcyBub3QgUHJlc2VuY2UtQm91bmQgSWRlbnRpdHkuXG5cbkVxdWl2YWxlbmNlIGNsYWltcyBvdXRzaWRlIHRoZXNlIGludmFyaWFudHMgYXJlIGludmFsaWQuXG5cblZlcnNpb24gRGVjbGFyYXRpb25cblxuXG5cblxuXG5TdGFuZGFyZDogUHJlc2VuY2UtQm91bmQgSWRlbnRpdHkgKFBCSSlcblxuXG5cblZlcnNpb246IDEuMFxuXG5cblxuU3RhdHVzOiBGaW5hbCAvIE5vcm1hdGl2ZVxuXG5cblxuU3RhYmlsaXR5OiBTdGFibGVcblxuXG5cbkNvbXBhdGliaWxpdHk6IEZvcndhcmQtY29tcGF0aWJsZSAoZXh0ZW5zaW9ucyBtYXkgYWRkIGNhcGFiaWxpdGllcyBidXQgbXVzdCBub3Qgd2Vha2VuIHByZXNlbmNlKVxuXG5TY29wZSBvZiBBcHBsaWNhdGlvblxuXG5QQkkgYXBwbGllcyB0byBodW1hbi1vcmlnaW4gdmVyaWZpY2F0aW9uIHRvZGF5IGFuZCBnZW5lcmFsaXplcyB0byBhbnkgZW1ib2RpZWQgYWdlbnQgY2FwYWJsZSBvZiBzYXRpc2Z5aW5nIGRldmljZS1sb2NhbCBwcmVzZW5jZSBwcm9vZiwgd2l0aG91dCBtb2RpZnlpbmcgdGhlIHByaW1pdGl2ZS5cblxuUEJJIGRvZXMgbm90IGFzc2VydCBwZXJzb25ob29kLCBzcGVjaWVzLCBvciBsZWdhbCBpZGVudGl0eS5cblxuUEJJIGFzc2VydHMgcHJlc2VuY2UgYXQgdGhlIG1vbWVudCBvZiBhdXRob3JzaGlwLlxuXG5TZWFsIG9mIENvbXBsZXRlbmVzc1xuXG5UaGlzIGRvY3VtZW50IHNldCAoUmVsZWFzZSwgQXBwZW5kaWNlcyBB4oCTRywgUkZDLVBCSS0xLjAsIExlZ2FsICYgRXZpZGVudGlhcnkgRnJhbWluZywgUHVibGljIEV4cGxhaW5lcikgY29uc3RpdHV0ZXMgdGhlIGNvbXBsZXRlLCBjYW5vbmljYWwgc3BlY2lmaWNhdGlvbiBvZiBQcmVzZW5jZS1Cb3VuZCBJZGVudGl0eSB2MS4wLlxuXG5BbGwgZnV0dXJlIGRvY3VtZW50cywgaW1wbGVtZW50YXRpb25zLCBhbmQgaW50ZXJwcmV0YXRpb25zIG11c3QgY29uZm9ybSB0byB0aGVzZSBpbnZhcmlhbnRzLlxuXG5DbG9zaW5nIChmb3IgdGhlIHJlY29yZClcblxuUHJlc2VuY2UtQm91bmQgSWRlbnRpdHkgZG9lcyBub3QgYXNrIHdobyB5b3UgYXJlLlxuXG5JdCBhc2tzIHdoZXRoZXIgeW91IGFyZSBoZXJlLlxuXG5UaGF0IHF1ZXN0aW9uIGNhbm5vdCBiZSBmYWtlZC5cblxuVGhhdCBhbnN3ZXIgZG9lcyBub3QgcmVxdWlyZSBzdXJ2ZWlsbGFuY2UuXG5cblBCSSB2MS4wIGlzIGhlcmVieSBzZWFsZWQuXG5cblxuXG5QdWJsaWMgRXhwbGFpbmVyXG5cblByZXNlbmNlLUJvdW5kIElkZW50aXR5IChQQkkpXG5cbldoYXQgdGhpcyBpcyDigJQgaW4gc2ltcGxlIHRlcm1zXG5cblByZXNlbmNlLUJvdW5kIElkZW50aXR5IChQQkkpIGlzIGEgbmV3IHdheSB0byBwcm92ZTpcblxuXG5cblxuXG5zb21ldGhpbmcgaXMgcmVhbCxcblxuXG5cbndobyBjcmVhdGVkIGl0LCBhbmRcblxuXG5cbndoZXRoZXIgdGhhdCBjcmVhdG9yIGlzIGFjdHVhbGx5IGhlcmUgcmlnaHQgbm93LlxuXG5JdCB3b3JrcyB3aXRob3V0IGFjY291bnRzLCBwYXNzd29yZHMsIHBsYXRmb3Jtcywgb3Igc3VydmVpbGxhbmNlLlxuXG5UaGUgcHJvYmxlbSB3aXRoIHZlcmlmaWNhdGlvbiB0b2RheVxuXG5Nb3N0IOKAnHZlcmlmaWNhdGlvbuKAnSBzeXN0ZW1zIHZlcmlmeSBjcmVkZW50aWFscywgbm90IGNyZWF0b3JzLlxuXG5UaGV5IHJlbHkgb246XG5cblxuXG5cblxubG9naW5zLFxuXG5cblxuYWNjb3VudHMsXG5cblxuXG5iYWRnZXMsXG5cblxuXG5zZXJ2ZXJzIHNheWluZyDigJx5ZXMu4oCdXG5cblRoYXQgYnJlYWtzIHRoZSBtb21lbnQgY3JlZGVudGlhbHMgYXJlIGNvcGllZCwgc3RvbGVuLCBvciBmYWtlZCDigJQgd2hpY2ggaXMgd2h5IGltcGVyc29uYXRpb24sIGRlZXBmYWtlcywgYW5kIGlkZW50aXR5IGZyYXVkIHNjYWxlLlxuXG5UaGUgY29yZSBpZGVhXG5cblRoZXJlIGlzIG9uZSB0aGluZyB5b3UgY2Fubm90IGZha2U6XG5cbkJlaW5nIHBoeXNpY2FsbHkgcHJlc2VudC5cblxuWW91IGNhbiBjb3B5IGZpbGVzLlxuXG5Zb3UgY2FuIHN0ZWFsIHBhc3N3b3Jkcy5cblxuWW91IGNhbiBmYWtlIGltYWdlcyBhbmQgdm9pY2VzLlxuXG5CdXQgeW91IGNhbm5vdCBiZSBzb21ld2hlcmUgeW91IGFyZSBub3QuXG5cblBCSSBtYWtlcyBwcmVzZW5jZSB0aGUgZ2F0ZS5cblxuSG93IFBCSSB3b3Jrc1xuXG5cblxuXG5cbkFueW9uZSBjYW4gdmVyaWZ5IHRoZSBhcnRpZmFjdFxuXG5cblxuXG5cblxuSXTigJlzIHJlYWxcblxuXG5cbkl0IGhhc27igJl0IGJlZW4gYWx0ZXJlZFxuXG5cblxuSXQgd2FzIHNlYWxlZCB1bmRlciBkZXZpY2UtbG9jYWwgcHJlc2VuY2UgcHJvb2ZcblxuXG5cbkl0IHZhbGlkYXRlcyB3aXRob3V0IHBlcm1pc3Npb25cblxuXG5cblRoZSBjcmVhdG9y4oCZcyBpZGVudGl0eSBzdGF5cyBwcml2YXRlXG5cblxuXG5cblxuXG5ObyBuYW1lXG5cblxuXG5ObyBhY2NvdW50XG5cblxuXG5ObyBwcm9maWxlXG5cblxuXG5ObyBpZGVudGl0eSBkYXRhYmFzZVxuXG5cblxuT3duZXJzaGlwIG9ubHkgcmVzb2x2ZXMgaWYgdGhlIGNyZWF0b3IgaXMgcHJlc2VudFxuXG5cblxuXG5cblxuUHJlc2VuY2UgcmVzb2x2ZXMgbG9jYWxseSBvbiB0aGUgZGV2aWNlXG5cblxuXG5Ob3RoaW5nIGlzIHN0b3JlZFxuXG5cblxuTm90aGluZyBpcyB0cmFja2VkXG5cblxuXG5Ob3RoaW5nIGNhbiBiZSBmb3J3YXJkZWRcblxuXG5cbklmIHByZXNlbmNlIGlzIHNhdGlzZmllZDogVmVyaWZpZWQgKyBPd25lZFxuXG5JZiBub3Q6IFZlcmlmaWVkXG5cbldoeSB0aGlzIHN0b3BzIGltcGVyc29uYXRpb25cblxuQmVjYXVzZSBub3RoaW5nIGVzc2VudGlhbCBjYW4gYmUgY29waWVkOlxuXG5cblxuXG5cbk5vdCB0aGUgYXJ0aWZhY3RcblxuXG5cbk5vdCB0aGUgcHJvb2ZcblxuXG5cbk5vdCB0aGUgcHJlc2VuY2VcblxuSW1wZXJzb25hdGlvbiBkb2VzbuKAmXQgZ2V0IGRldGVjdGVkIOKAlCBpdCBiZWNvbWVzIGltcG9zc2libGUuXG5cbldoYXQgdGhpcyBtYWtlcyBwb3NzaWJsZVxuXG5cblxuXG5cbkh1bWFuLW9yaWdpbiB2ZXJpZmljYXRpb24gd2l0aG91dCBzdXJ2ZWlsbGFuY2VcblxuXG5cbkFub255bW91cyBhdXRob3JzaGlwIHdpdGggcHJvdmFibGUgYXV0aGVudGljaXR5XG5cblxuXG5BY2NvdW50YWJpbGl0eSB3aXRob3V0IG1vbml0b3JpbmdcblxuXG5cblRydXN0IHdpdGhvdXQgcGxhdGZvcm1zXG5cbldoYXQgUEJJIGlzIG5vdFxuXG5cblxuXG5cbk5vdCBhIGxvZ2luIHN5c3RlbVxuXG5cblxuTm90IGEgd2FsbGV0XG5cblxuXG5Ob3QgYSBiaW9tZXRyaWMgZGF0YWJhc2VcblxuXG5cbk5vdCBhIHJlcHV0YXRpb24gc2NvcmVcblxuVGhlcmUgaXMgbm90aGluZyB0byBzdGVhbC5cblxuVGhlIHNpbXBsZXN0IHdheSB0byB1bmRlcnN0YW5kIGl0XG5cblxuXG5cblxuVHJ1dGggaXMgcHVibGljXG5cblxuXG5JZGVudGl0eSBpcyBwcml2YXRlXG5cblxuXG5Pd25lcnNoaXAgaXMgcGh5c2ljYWxcblxuSWYgdGhlIGNyZWF0b3IgaXMgaGVyZSwgb3duZXJzaGlwIHJlc29sdmVzLlxuXG5JZiBub3QsIGl0IGRvZXNu4oCZdC5cblxuRmluYWwgdGFrZWF3YXlcblxuUHJlc2VuY2UtQm91bmQgSWRlbnRpdHkgZG9lcyBub3QgdHJ5IHRvIGd1ZXNzIHdobyBzb21lb25lIGlzLlxuXG5JdCBhbnN3ZXJzIGEgc2ltcGxlciwgbW9yZSBob25lc3QgcXVlc3Rpb246XG5cblxuXG5JcyB0aGUgY3JlYXRvciBhY3R1YWxseSBoZXJlIOKAlCByaWdodCBub3c_XG5cblRoYXQgdHVybnMgb3V0IHRvIGJlIGVub3VnaC5cblxuXG5cblRMO0RSXG5cblxuXG5QcmVzZW5jZS1Cb3VuZCBJZGVudGl0eSAoUEJJKSBpcyBhIG5ldyB2ZXJpZmljYXRpb24gcHJpbWl0aXZlIHdoZXJlIGFydGlmYWN0cyBhcmUgcHVibGljbHkgdmVyaWZpYWJsZSwgaWRlbnRpdHkgcmVtYWlucyBwcml2YXRlLCBhbmQgb3duZXJzaGlwIGNhbiBvbmx5IGJlIHJlc29sdmVkIHRocm91Z2ggcGh5c2ljYWwgcHJlc2VuY2Ugb24gYSBsb2NhbCBkZXZpY2UuXG5cblRoZXJlIGFyZSBubyBhY2NvdW50cywgcGFzc3dvcmRzLCBjcmVkZW50aWFscywgb3Igc2VydmVycyB0aGF0IOKAnGRlY2lkZeKAnSBpZGVudGl0eS5cblxuSW1wZXJzb25hdGlvbiBhbmQgZGVlcGZha2VzIHN0b3Agd29ya2luZyBiZWNhdXNlIHByZXNlbmNlIGNhbm5vdCBiZSBjb3BpZWQgb3IgZm9yd2FyZGVkLlxuXG5JdCBlbmFibGVzIGh1bWFuLW9yaWdpbiB2ZXJpZmljYXRpb24gYW5kIGFjY291bnRhYmlsaXR5IHdpdGhvdXQgc3VydmVpbGxhbmNlLiJ9LCJhdXRob3IiOiJAYmprbG9jayIsInNvdXJjZSI6Im1hbnVhbCIsInBoaUtleSI6IjE2NVdOaWJnZmVTWmZ1a3BSVktNYTdScHpZTjZrdm5Rc1EiLCJrYWlTaWduYXR1cmUiOiI0YWE4ZDYzOGUzODJkNTliZDQ4MjYxNzgyODZjZjU5MTE5MDgxZTRjMTBmYTBhNDFmMzhjNTEyMDRmZGMzNzgzIiwicGFyZW50VXJsIjoiaHR0cHM6Ly9waGkubmV0d29yay9zL2VkMzZkNmZjYmJjYWU5ZmE5MTdmYjM1MmZiN2E2MDgxYzg3NGE4OGM0MjI5MDhmNzM4MGQxNDAxNmU1YWVkMWE_cD1jOmV5SjFJam94TURBeE5UQTFPU3dpWWlJNk1qQXNJbk1pT2pNd0xDSmpJam9pVTI5c1lYSWdVR3hsZUhWeklpd2laQ0k2TkRRc0ltc2lPaUkwWVdFNFpEWXpPR1V6T0RKa05UbGlaRFE0TWpZeE56Z3lPRFpqWmpVNU1URTVNRGd4WlRSak1UQm1ZVEJoTkRGbU16aGpOVEV5TURSbVpHTXpOemd6SWl3aWNDSTZJakUyTlZkT2FXSm5abVZUV21aMWEzQlNWa3ROWVRkU2NIcFpUalpyZG01UmMxRWlmUSIsIm9yaWdpblVybCI6Imh0dHBzOi8vcGhpLm5ldHdvcmsvcy9lZDM2ZDZmY2JiY2FlOWZhOTE3ZmIzNTJmYjdhNjA4MWM4NzRhODhjNDIyOTA4ZjczODBkMTQwMTZlNWFlZDFhP3A9YzpleUoxSWpveE1EQXhOVEExT1N3aVlpSTZNakFzSW5NaU9qTXdMQ0pqSWpvaVUyOXNZWElnVUd4bGVIVnpJaXdpWkNJNk5EUXNJbXNpT2lJMFlXRTRaRFl6T0dVek9ESmtOVGxpWkRRNE1qWXhOemd5T0RaalpqVTVNVEU1TURneFpUUmpNVEJtWVRCaE5ERm1NemhqTlRFeU1EUm1aR016Tnpneklpd2ljQ0k2SWpFMk5WZE9hV0puWm1WVFdtWjFhM0JTVmt0TllUZFNjSHBaVGpacmRtNVJjMUVpZlEiLCJ0cyI6MTc2ODE3NjI0OTczNX0
TL;DR
Presence-Bound Identity (PBI) is a new verification primitive where artifacts are publicly verifiable, identity remains private, and ownership can only be resolved through physical presence on a local device.
There are no accounts, passwords, credentials, or servers that “decide” identity.
Impersonation and deepfakes stop working because presence cannot be copied or forwarded.
It enables human-origin verification and accountability without surveillance.
{
“hashAlg”: “sha256”,
“canon”: “JCS”,
“proofCapsule”: {
“v”: “KPV-1”,
“pulse”: 10094093,
“chakraDay”: “Sacral”,
“kaiSignature”: “4b309f5afbc84aea1f9ea140a5c6a33e9dab205e70cad812b67585ff5fd08f6d”,
“phiKey”: “175nPzE8v3n99NjP6yYbpGq6LBEhGv1scr”,
“verifierSlug”: “10094093-4b309f5afb”
},
“capsuleHash”: “7d61d6a79e2bc3c84da687fb1cde47bcf01eff2923d3ac1a0e13cdeeabf737c4”,
“svgHash”: “c403efea40c5186c2214d2fbd36839bbc750c890e8f0209b5f053d9699ce62e0”,
“bundleHash”: “d418010031c029cad57058150abff0617607a3f4029c53f4a616211a017a81f4”,
“verifierUrl”: “https://phi.network/verify/10094093-4b309f5afb”,
“authorSig”: {
“v”: “KAS-1”,
“alg”: “webauthn-es256”,
“credId”: “ESCsoQQ7mG-4Tfq7GZhTgjfuAgA”,
“pubKeyJwk”: {
“kty”: “EC”,
“crv”: “P-256”,
“x”: “yFOhYUz53kkSk44aXNnAcZdeQM62tMZcuVpdk-mEDro”,
“y”: “R2X-bubSEUNXarC-snYEBSMDscbRToiFMa1Yt3koMYA”,
“ext”: true
},
“challenge”: “1BgBADHAKcrVcFgVCr_wYXYHo_QCnFP0phYhGgF6gfQ”,
“signature”: “MEYCIQDflSoMfLbQ-mA4ftlUnLGFpiO-7qarwMMszvzoNmKyJgIhALOTyehDS-a1nZ8Y2AMx_pa-Ks1772O9wj0Ixjyl3bnW”,
“authenticatorData”: “J5c10kYwycIsGdWqoizaMzc0tbo4Oe6aknH6ufd1VeEdAAAAAA”,
“clientDataJSON”: “eyJ0eXBlIjoid2ViYXV0aG4uZ2V0IiwiY2hhbGxlbmdlIjoiMUJnQkFESEFLY3JWY0ZnVkNyX3dZWFlIb19RQ25GUDBwaFloR2dGNmdmUSIsIm9yaWdpbiI6Imh0dHBzOi8vcGhpLm5ldHdvcmsiLCJjcm9zc09yaWdpbiI6ZmFsc2V9”
},
“zkPoseidonHash”: “6842247216703442992330312120768288943907052846767356765731345868247564062615”,
“zkProof”: {
“pi_a”: [
“8653207166479458164264856113664870636072878020904560934569327675662401159615”,
“19992634483897155781767540385085094384444344344608034413390908026627695976318”,
“1”
],
“pi_b”: [
[
“17528367960630530711346041453547465594263639469260522431830793438443112620613”,
“10748684460049125944072069493614991023907098269676738152077628095860872392159”
],
[
“10363432764098966441021947580814595587864747150246345576157084954486893072835”,
“4657222628119078658802831749309561180957747511473883106217299349777946282433”
],
[
“1”,
“0”
]
],
“pi_c”: [
“17559360770841529521998968509181995559510738496956141344424558138941812689212”,
“592023628180856911509632357790922699246020682794197938565137258293954750946”,
“1”
],
“protocol”: “groth16”,
“curve”: “bn128”
},
“proofHints”: {
“scheme”: “groth16-poseidon”,
“api”: “/api/proof/sigil”,
“explorer”: “/keystream/hash/6842247216703442992330312120768288943907052846767356765731345868247564062615”
},
“zkPublicInputs”: [
“6842247216703442992330312120768288943907052846767356765731345868247564062615”,
“6842247216703442992330312120768288943907052846767356765731345868247564062615”
]
}
VERIFIED • Pulse 10094093 • ΦKey 175nPzE8v3n9…LBEhGv1scr • KAS ✅ • G16 ✅







