<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.35 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-oauth-transaction-tokens-for-agents-06" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title>Transaction Tokens For Agents</title>
    <seriesInfo name="Internet-Draft" value="draft-oauth-transaction-tokens-for-agents-06"/>
    <author fullname="ASHAY RAUT">
      <organization>Amazon</organization>
      <address>
        <email>asharaut@amazon.com</email>
      </address>
    </author>
    <date year="2026" month="April" day="11"/>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 37?>

<t>This document specifies an extension to the <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref> to support agent context propagation within Transaction Tokens for agent-based workloads. The extension defines the use of the <tt>act</tt> field to identify the agent performing the action, and leverages the existing <tt>sub</tt> field (as defined in the base Transaction Tokens specification) to represent the principal. The <tt>sub</tt> field is populated according to the rules specified in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref>, based on the 'subject_token' provided in the token request. For autonomous agents operating independently, the <tt>sub</tt> field represents the agent itself. These mechanisms enable services within the call graph to make more granular access control decisions, thereby enhancing security.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ashayraut.github.io/oauth-transactiontokens-for-agents/draft-oauth-transaction-tokens-for-agents.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-oauth-transaction-tokens-for-agents/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ashayraut/oauth-transactiontokens-for-agents"/>.</t>
    </note>
  </front>
  <middle>
    <?line 41?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Traditional zero trust authorization systems face new challenges when
   applied to AI agent workloads. Unlike conventional web services,
   AI agents possess capabilities for autonomous operation, behavioral
   adaptation, and dynamic integration with various data sources. These
   characteristics may lead to decisions that extend beyond their
   initial operational boundaries.</t>
      <t>Existing zero trust models, which effectively manage permissions and
   access scopes for traditional web services, require enhancement to
   address the unique properties of AI agents. Authorization systems
   must evaluate each AI agent interaction independently, considering
   both the immediate context and intended action. This necessitates
   more sophisticated approaches to policy enforcement, behavioral
   monitoring, and audit tracking to maintain security governance.</t>
      <t>Transaction Tokens (Txn-Tokens) are short-lived, signed JSON Web
   Tokens <eref target="https://tools.ietf.org/html/rfc7519">RFC7519</eref> that convey identity and authorization context.
   However, the current Txn-Token format lacks sufficient context for
   services within the call chain to implement fine-grained access
   control policies for agent-based workflows. Specifically, it does
   not provide adequate information about the AI agent's identity or
   its initiating entity, limiting transaction traceability. With this
   extension, Transaction Tokens will carry agent identity information
   which will help in better traceability for AI Agent's actions
   deep down the web service graph connecting multiple web services
   involved in completing a transaction in distributed systems.</t>
      <t>This document defines three new contexts within the Transaction Token
   to address these limitations:</t>
      <ol spacing="normal" type="1"><li>
          <t>The <tt>act</tt> claim, which identifies the AI agent performing the action, aligning with OAuth 2.0 Token Exchange <eref target="https://tools.ietf.org/html/rfc8693">RFC8693</eref> terminology for actor tokens</t>
        </li>
        <li>
          <t>The <tt>sub</tt> claim, as defined in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref>, which represents the principal on whose behalf the transaction is being performed. The population of this field follows the rules specified in the base Transaction Tokens specification, based on the 'subject_token' provided in the token request.</t>
        </li>
        <li>
          <t>An optional <tt>agentic_ctx</tt> claim. The value of this claim, if present, MUST be a JSON object. The <tt>agentic_ctx</tt> claim conveys attributes about the agent and its operational constraints that are relevant to authorization, auditing, and policy evaluation.</t>
        </li>
      </ol>
      <t>This extension leverages the existing Txn-Token infrastructure to
   enable secure propagation of AI agent context throughout the
   service graph.</t>
      <section anchor="conventions-and-terminology">
        <name>Conventions and Terminology</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 <eref target="https://datatracker.ietf.org/doc/html/rfc2119">RFC2119</eref> <eref target="https://datatracker.ietf.org/doc/html/rfc8174">RFC8174</eref> when, and only when, they appear in all capitals, as shown here.</t>
      </section>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>Agentic-AI: AI Agentic applications are software applications that utilize
Large Language Models (LLM)s and plans, reasons,and takes actions independently
to achieve complex, multi-step goals with minimal human oversight.</t>
      <t>Workload:
An independent computational unit that can autonomously receive and process
invocations, and can generate invocations of other workloads.
Examples of workloads include containerized microservices,
monolithic services and infrastructure services such as managed databases.</t>
      <t>Trust Domain:
A collection of systems, applications, or workloads that share a
common security policy. In practice this may include a virtually or
physically separated network, which contains two or more workloads.
The workloads within a Trust Domain may be invoked only through published
interfaces.</t>
      <t>Call Chain:
A sequence of synchronous invocations that results from the invocation of an external endpoint.</t>
      <t>External Endpoint:
A published interface to a Trust Domain that results in the invocation
of a workload within the Trust Domain. This is the first service in the
call chain where request starts.</t>
      <t>Transaction Token (Txn-Token):
A signed JWT with a short lifetime, providing immutable information about the user or workload,
certain parameters of the call, and specific contextual attributes of the call.
The Txn-Token is used to authorize subsequent calls in the call chain.</t>
      <t>Transaction Token Service (Txn-Token Service):
A special service within the Trust Domain that issues Txn-Tokens to requesting
workloads. Each Trust Domain using Txn-Tokens MUST have exactly one logical
Txn-Token Service.</t>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol overview</name>
      <section anchor="transaction-flow">
        <name>Transaction Flow</name>
        <t>This section describes the process by which an agent application
   obtains a Transaction Token, either acting autonomously or on behalf
   of a principal. The external endpoint requests a Txn-Token following
   the procedures defined in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref>, augmented with additional
   context for agent identity and, when applicable, principal identity.</t>
      </section>
      <section anchor="agent-application-transaction-flows">
        <name>Agent Application Transaction Flows</name>
        <t>The Transaction Token creation process varies depending on the
   presence of a principal.</t>
        <section anchor="principal-initiated-flow">
          <name>Principal-Initiated Flow</name>
          <t>When a principal initiates the workflow, the following steps occur:</t>
          <ol spacing="normal" type="1"><li>
              <t>The principal invokes the agent application to perform a task.</t>
            </li>
            <li>
              <t>The agent application calls an external endpoint. External endpoint throws back OAuth challenges.</t>
            </li>
            <li>
              <t>The agent application authenticates using an OAuth 2.0 Auth code flow <eref target="https://tools.ietf.org/html/rfc6749">RFC6749</eref>
access token. The access token contains subject and clientId claims as per <eref target="https://datatracker.ietf.org/doc/rfc9068">RFC9068</eref>.</t>
            </li>
            <li>
              <t>The external endpoint submits the received access token along with its Subject token to the
Txn-Token Service. Subject token requirements are specified in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref>.</t>
            </li>
            <li>
              <t>The Txn-Token Service validates the access token.</t>
            </li>
            <li>
              <t>The Txn-Token Service populates the Txn-Token's <tt>sub</tt> claim following the rules specified in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref>. The <tt>sub</tt> claim is determined based on the subject_token provided in the request, according to the conditions and rules defined in the base Transaction Tokens specification. This ensures that the principal is properly represented in the Txn-Token.</t>
            </li>
            <li>
              <t>The Txn-Token Service copies the access token's <tt>clientId</tt> claim to the Txn-Token's <tt>act</tt> field. Any nested structure within the <tt>clientId</tt> claim is preserved. If the access token contains an <tt>act</tt> claim, that value MAY be used instead of <tt>clientId</tt>.</t>
            </li>
            <li>
              <t>The Txn-Token Service issues the Txn-Token to the requesting workload.</t>
            </li>
          </ol>
        </section>
        <section anchor="autonomous-flow">
          <name>Autonomous Flow</name>
          <t>When the agent application operates autonomously, the following
   steps occur:</t>
          <ol spacing="normal" type="1"><li>
              <t>The agent application initiates a task based on an event or
scheduled assignment.</t>
            </li>
            <li>
              <t>The agent application calls an external endpoint. OAuth challenge flow starts.</t>
            </li>
            <li>
              <t>The agent application authenticates using an OAuth 2.0 <eref target="https://tools.ietf.org/html/rfc6749">RFC6749</eref>. When an autonomous agent
(no human resource owner) needs to call another resource server using OAuth,
it follows the Client Credentials Grant defined explicitly in <eref target="https://tools.ietf.org/html/rfc6749">RFC6749</eref>.</t>
            </li>
            <li>
              <t>The agent application uses the access token to call the external endpoint.</t>
            </li>
            <li>
              <t>The external endpoint submits the received access token along with its Subject token to the
Txn-Token Service. Subject token requirements are specified in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref>.</t>
            </li>
            <li>
              <t>The Txn-Token Service validates the access token.</t>
            </li>
            <li>
              <t>The Txn-Token Service populates the Txn-Token's <tt>sub</tt> claim following the rules specified in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref>. The <tt>sub</tt> claim is determined based on the subject_token provided in the request. For autonomous agents, this typically represents the agent's own identity.</t>
            </li>
            <li>
              <t>The Txn-Token Service copies the access token's <tt>sub</tt> or <tt>clientId</tt> claim to the Txn-Token's <tt>act</tt> field. Any nested structure is preserved. The <tt>act</tt> field identifies the agent performing the autonomous action.</t>
            </li>
          </ol>
        </section>
      </section>
      <section anchor="flow-diagrams">
        <name>Flow Diagrams</name>
        <section anchor="principal-initiated-flow-1">
          <name>Principal-Initiated Flow</name>
          <t>Based on the updated flow, here's a more detailed RFC-style flow diagram:</t>
          <artwork type="ascii-art"><![CDATA[
Principal    Agent App    External    Authorization   Txn-Token
                         Endpoint        Server        Service
   |            |           |              |             |
   | Invoke     |           |              |             |
   | agent task |           |              |             |
   |----------->|           |              |             |
   |            |           |              |             |
   |            | Call external API        |             |
   |            |---------->|              |             |
   |            |           |              |             |
   |            |   OAuth Challenge        |             |
   |            |<----------|              |             |
   |            |           |              |             |
   |            | Initiate Auth Code Flow  |             |
   |            |------------------------->|             |
   |            |           |              |             |
   |            | Auth Code                |             |
   |            |<-------------------------|             |
   |            |           |              |             |
   |            | Exchange code for token  |             |
   |            |------------------------->|             |
   |            |           |              |             |
   |            | Access Token (AT1)       |             |
   |            | w/ sub, clientId claims  |             |
   |            |<-------------------------|             |
   |            |           |              |             |
   |            | Call with AT1            |             |
   |            |---------->|              |             |
   |            |           |              |             |
   |            |           | Request Txn-Token          |
   |            |           | with AT1, Subject token    |
   |            |           | as param     |             |
   |            |           |--------------------------->|
   |            |           |              |             |
   |            |           |              |    Validate AT1
   |            |           |              |    Extract claims
   |            |           |              |    Set sub from Subject token
   |            |           |              |    Set act from AT1.clientId
   |            |           |              |             |
   |            |           |              |             |
   |            |           |              |             |
   |            |           |              |             |
   |            |           | Txn-Token    |             |
   |            |           |<---------------------------|
   |            |           |              |             |

Legend:
----> : Request flow
<---- : Response flow
  |   : Component boundary
]]></artwork>
          <t>Notes:
1. AT1 refers to the access token obtained by Agent App
2. The External Endpoint uses its own access token to call Txn-Token Service
3. AT1 is passed as a parameter in the Txn-Token request
4. The flow shows detailed OAuth 2.0 Authorization Code flow steps
5. Token validation and claim extraction steps are shown in the Txn-Token Service</t>
        </section>
        <section anchor="autonomous-flow-1">
          <name>Autonomous Flow</name>
          <artwork type="ascii-art"><![CDATA[
Agent App    External    Authorization   Txn-Token
            Endpoint        Server        Service
    |           |              |             |
    | Self-     |              |             |
    | triggered |              |             |
    | event     |              |             |
    |--+        |              |             |
    |  |        |              |             |
    |<-+        |              |             |
    |           |              |             |
    | Call external API        |             |
    |---------->|              |             |
    |           |              |             |
    |   OAuth Challenge        |             |
    |<----------|              |             |
    |           |              |             |
    | Client Credentials Grant |             |
    |------------------------->|             |
    |           |              |             |
    | Access Token (AT1)       |             |
    |  sub, aud claims         |             |
    |<-------------------------|             |
    |           |              |             |
    | Call with AT1            |             |
    |---------->|              |             |
    |           |              |             |
    |           | Request Txn-Token          |
    |           | with AT1, Subject token    |
    |           | as param     |             |
    |           |--------------------------->|
    |           |              |             |
    |           |              |    Validate AT1
    |           |              |    Extract claims
    |           |              |    Set sub from aud
    |           |              |    Set act.sub from clientId or sub
    |           |              |             |
    |           |              |             |
    |           |              |             |
    |           | Txn-Token    |             |
    |           |<---------------------------|
    |           |              |             |

Legend:
----> : Request flow
<---- : Response flow
  |   : Component boundary
  +   : Internal process
--+   : Self-triggered event

Notes:
* AT1: Access token obtained via Client Credentials Grant
* External Endpoint uses subject token for authenticating itself to Txn-Token Service
* AT1 is included as parameter in Txn-Token request
* Self-triggered events can be scheduled tasks or external triggers
* Token validation includes signature and claims verification
]]></artwork>
        </section>
      </section>
      <section anchor="replacement-tokens">
        <name>Replacement tokens</name>
        <t>Txn-Token Service provides capability to get a replacement Txn-Token as defined in the <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html#name-creating-replacement-txn-to">OAUTH-TXN-TOKENS.replacement flow</eref>. If the original Txn-Token used to get replacement token contains 'actor' and 'principal' claims then in the replaced Txn-Token, the values of the 'actor' and 'principal' MUST remain unchanged similar to 'txn', <tt>sub</tt> and 'aud' claims.</t>
      </section>
      <section anchor="txn-token-format">
        <name>Txn-Token Format</name>
        <section anchor="jwt-header">
          <name>JWT Header</name>
          <t>No changes to the JWT header from the base specification: <tt>typ</tt> MUST be <tt>txntoken+jwt</tt>, with a signing key identifier such as <tt>kid</tt>.</t>
        </section>
        <section anchor="jwt-body-claims">
          <name>JWT Body Claims</name>
          <t>The Txn-Token body augments the base claim set with the <tt>act</tt> field for agent context. Existing claims like txn, sub, aud, iss, iat, exp, scope, tctx, and req_wl retain identical semantics, population rules, and immutability guarantees as defined in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref>.</t>
          <t>In this example, the agent is 3rd party and not part of trust domain. It hits API Gateway in trust domain and API Gateway requests Txn-Token from Txn-token Service using
access token received from 3P agent and its own subject token (to authenticate with Txn-Token Service). Requesting workload is API Gateway. Agent is agent-identity-1 (clientId in the access token issued to 3P agent to act on behalf of user:alice)</t>
          <sourcecode type="json"><![CDATA[
{
  "txn": "c2dc3992-2d65-483a-93b5-2dd9f02c276e",
  "sub": "user:alice@example.com", // if its human initiated
  "aud": "https://trading.trust-domain.example/stocks",
  "iss": "https://txn-svc.trust-domain.example",
  "iat": 1697059200,
  "exp": 1697059500,
  "purp": "trade.stocks",
  "tctx": {
    "action": "BUY",
    "ticker": "MSFT",
    "quantity": "100"
  },
  "req_wl": "apigateway.trust-domain.example", // API gateway requests Txn-token
  "act": {
     "sub":"agent-identity-1" // 3P agent hitting API gateway owned by trust domain
  }
}
]]></sourcecode>
          <section anchor="agentic-context">
            <name>Agentic Context</name>
            <t>The Txn-Token MAY contain an <tt>agentic_ctx</tt> claim. Txn-Tokens are increasingly used in environments where transactions are executed by or with the assistance of autonomous or semi-autonomous agents (for example, Large Language Model (LLM)–based agents, workflow orchestrators, and policy-driven automation components). In such deployments, relying exclusively on subject identity and generic transaction parameters is insufficient to make robust authorization decisions. Additional information about the agent that is interpreting and acting on the transaction is often required.</t>
            <sourcecode type="json"><![CDATA[
"agentic_ctx": {
  "agent_type": "planner+tool-orchestrator", // A string describing the functional role of the agent (for example, “planner”, “tool-orchestrator”, “data-assistant”, “code-execution-agent”). The semantics and allowed values are deployment-specific.
  "agent_version": "3.4.2", // A string indicating a version or configuration identifier for the agent. This value can be used to associate the transaction with a particular, reviewed agent policy or release
  "intent": "enumerate and validate production search services before Q4 traffic spike", // A string describing the high-level purpose of the transaction from the agent’s perspective (for example, “trade.stocks”, “enumerate.search.services”, “generate.billing.report”). This value is intended to support coarse-grained, intent-aware authorization policies.
  "allowed_actions": ["read"],
  "environment_constraints": { "environment": "prod", "region": "us" },
}
]]></sourcecode>
          </section>
        </section>
      </section>
      <section anchor="integration-with-oauth-rich-authorization-requests">
        <name>Integration with OAuth Rich Authorization Requests</name>
        <t>When the Authorization Server (AS) supports Rich Authorization Requests (RAR) as defined in [RFC9396], the authorization details captured during the initial consent flow provide high-fidelity context for downstream agentic enforcement. The RAR mechanism allows a Resource Owner to grant permissions for specific, fine-grained actions (e.g., "Allow Agent to search only 'Research' folder") which are then encoded in the Access Token.</t>
        <section anchor="processing-rar-context">
          <name>Processing RAR Context</name>
          <t>The Txn-Token Service (TTS) SHOULD extract relevant authorization details from the <tt>authorization_details</tt> claim of the <tt>subject_token</tt> and encapsulate them within the <tt>agentic_ctx</tt>. This ensures that the agent's execution environment remains bound by the specific constraints approved by the user.</t>
        </section>
        <section anchor="data-mapping-and-enrichment">
          <name>Data Mapping and Enrichment</name>
          <ol spacing="normal" type="1"><li>
              <t><strong>Extraction</strong>: The TTS extracts the RAR array from the incoming Access Token.</t>
            </li>
            <li>
              <t><strong>Encapsulation</strong>: The TTS SHOULD include these details in the <tt>agentic_ctx</tt> under a standardized key to allow downstream services to distinguish between general agent metadata and explicit user-granted permissions.</t>
            </li>
            <li>
              <t><strong>Policy Deferral</strong>: This pattern allows the AS to capture intent without necessarily needing the domain-specific logic to enforce it; enforcement is deferred to the microservices deep in the call chain that receive the Txn-Token.</t>
            </li>
          </ol>
        </section>
        <section anchor="benefits-of-rar-integration">
          <name>Benefits of RAR Integration</name>
          <ul spacing="normal">
            <li>
              <t><strong>Consent Propagation</strong>: User-consented details are cryptographically bound to the Txn-Token, ensuring consent is honored throughout the service graph.</t>
            </li>
            <li>
              <t><strong>Granular Control</strong>: Services can make informed decisions based on the specific "type" and "actions" authorized in the original RAR object.</t>
            </li>
            <li>
              <t><strong>Reduced Complexity</strong>: Centralizing complex consent capture at the AS while distributing enforcement via the <tt>agentic_ctx</tt> reduces the architectural burden on individual workloads.</t>
            </li>
          </ul>
        </section>
        <section anchor="example-of-agenticctx-with-additional-context">
          <name>Example of <tt>agentic_ctx</tt> with additional context</name>
          <sourcecode type="json"><![CDATA[
"agentic_ctx": {
    "agent_type": "tool-orchestrator",
    "intent": "validate search services",
    "authorization_details": [
      {
        "type": "search_service_access",
        "actions": ["read", "list"],
        "locations": ["https://api.search.example/v1"]
      }
    ],
    "environment_constraints": {
      "environment": "prod",
      "region": "us"
    }
}
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="multi-agent-flows">
      <name>Multi-agent flows</name>
      <t>In complex agentic workflows, a primary agent (the "Delegator") may delegate sub-tasks to one or more secondary agents ("Delegatees"). This document defines a mechanism to preserve the delegation lineage across these transitions. Note that preserving lineage is optional.</t>
      <section anchor="agent-to-agent-delegation">
        <name>Agent-to-Agent Delegation</name>
        <t>When an agent (the "Delegator") invokes another agent (the "Delegatee") to perform a sub-task, it SHOULD NOT pass its own Transaction Token to the Delegatee. Instead, the Delegator MUST obtain a narrowed Transaction Token for the Delegatee using the replacement flow defined in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref>. The Delegator SHOULD request a restricted scope or purp (Purpose) that is specific to the sub-task assigned to the Delegatee.</t>
      </section>
      <section anchor="the-actchain-actor-chain-claim">
        <name>The 'actchain' (Actor Chain) Claim</name>
        <t>The <tt>actchain</tt> claim is an OPTIONAL top-level JSON Web Token (JWT) claim that provides a cryptographic trace of the delegation path. It is represented as an ordered array of JSON objects, where each object represents a previous agent in the call chain.</t>
        <section anchor="claim-structure">
          <name>Claim structure</name>
          <t>Each object within the <tt>actchain</tt> array MUST contain the following members:
* <strong>sub (Subject)</strong>: REQUIRED. The identity of the delegating agent.
* <strong>iat (Issued At)</strong>: OPTIONAL. A timestamp indicating when the delegating agent initiated its portion of the transaction.
* <strong>iss (Issuer)</strong>: OPTIONAL. The issuer of the token that identified the delegating agent. This might be required in case of multiple Txn Token Services being present across domains and token is passed across domains.</t>
        </section>
        <section anchor="delegation-via-replacement-flow">
          <name>Delegation via Replacement Flow</name>
          <t>When an agent requests a narrowed Transaction Token for a sub-agent, the Transaction Token Service (TTS) MUST follow the replacement flow procedures defined in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref> with the following modifications:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Subject Immutability</strong>: The txn and <tt>sub</tt> (principal) claims MUST be copied from the subject_token to the new Transaction Token without modification.</t>
            </li>
            <li>
              <t><strong>Chain Progression</strong>: The TTS MUST extract the <tt>act</tt> claim from the incoming subject_token. This extracted object MUST be appended to the end of the <tt>actchain</tt> array in the new token.
If no <tt>actchain</tt> existed in the subject_token, a new array is created containing only the extracted <tt>act</tt> object.</t>
            </li>
            <li>
              <t><strong>New Actor Assignment</strong>: The top-level act claim of the new token MUST be set to the identity of the Delegatee (the sub-agent).</t>
            </li>
          </ul>
        </section>
        <section anchor="multi-agent-example-jwt-body-claims">
          <name>Multi-agent example JWT body claims</name>
          <t>This example represents a delegated state: a human principal initiated a task via a Researcher Agent, which then delegated a specific action to a Search Agent.</t>
          <sourcecode type="json"><![CDATA[
{
  "txn": "c2dc3992-2d65-483a-93b5-2dd9f02c276e",
  "sub": "user-77",
  "iss": "https://txn-svc.trust-domain.example",
  "iat": 1712850000,
  "exp": 1712850300,
  "act": {
    "sub": "search-agent-v2",
    "deployment": "prod-us-west-1"
  },
  "actchain": [
    {
      "sub": "researcher-agent-v1",
      "iat": 1712849950
    }
  ],
  "purp": "web.search.execute",
  "agentic_ctx": {
    "agent_type": "tool-orchestrator",
    "intent": "validate search services",
    "allowed_actions": ["read"],
    "environment_constraints": {
      "environment": "prod",
      "region": "us"
    }
  }
}
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <ol spacing="normal" type="1"><li>
          <t>All the security considerations mentioned in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref> apply.</t>
        </li>
        <li>
          <t>Token Replay Protection Implementations MUST enforce strict token lifetime validation. The short-lived nature of Transaction Tokens helps mitigate replay attacks, but implementations SHOULD also consider:
          </t>
          <ul spacing="normal">
            <li>
              <t>Implementing token tracking mechanisms within trust domains</t>
            </li>
            <li>
              <t>Validating token usage context</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Actor Identity Security
          </t>
          <ul spacing="normal">
            <li>
              <t>Implementations MUST validate <tt>act</tt> claims in tokens</t>
            </li>
            <li>
              <t>The Txn-Token Service MUST verify the authenticity of actor context before token issuance</t>
            </li>
            <li>
              <t>During replacement flow, Txn-Token Service MUST NOT modify the <tt>act</tt> field in the incoming Txn-Token</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Principal Context Protection
          </t>
          <ul spacing="normal">
            <li>
              <t>Systems MUST prevent unauthorized modifications to the <tt>sub</tt> claim during token propagation. Txn-Tokens are cryptographically signed to ensure integrity.</t>
            </li>
            <li>
              <t>During replacement flow, Txn-Token Service MUST NOT modify the <tt>sub</tt> claim in the incoming Txn-Token</t>
            </li>
            <li>
              <t>The Txn-Token Service MUST follow the subject population rules defined in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref> to ensure proper principal representation</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Transaction Chain Integrity
          </t>
          <ul spacing="normal">
            <li>
              <t>Implementations MUST maintain cryptographic integrity of the token chain</t>
            </li>
            <li>
              <t>Services MUST validate tokens at trust domain boundaries</t>
            </li>
            <li>
              <t>Systems MUST implement protection against token tampering during service-to-service communication</t>
            </li>
          </ul>
        </li>
        <li>
          <t>AI Agent Specific Controls
          </t>
          <ul spacing="normal">
            <li>
              <t>Implementations MUST enforce scope boundaries for AI agent operations</t>
            </li>
            <li>
              <t>Systems SHOULD implement behavioral monitoring for AI agent activities by logging <tt>act</tt> and <tt>sub</tt> claims in audit logs</t>
            </li>
            <li>
              <t>Systems MUST maintain audit trails of AI agent activities</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Token Transformation Security
          </t>
          <ul spacing="normal">
            <li>
              <t>The Txn-Token Service MUST validate all claims during access token to Txn-Token conversion</t>
            </li>
            <li>
              <t>Implementations MUST verify signatures and formats of all tokens</t>
            </li>
            <li>
              <t>Systems MUST prevent unauthorized manipulation during token transformation</t>
            </li>
            <li>
              <t>The Txn-Token Service MUST ensure that the <tt>act</tt> field accurately represents the agent identity from the access token</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Replacement Token Considerations
          </t>
          <ul spacing="normal">
            <li>
              <t>Systems MUST verify the authenticity and validity of original tokens before replacement</t>
            </li>
            <li>
              <t>Systems MUST implement controls to prevent unauthorized replacement requests</t>
            </li>
            <li>
              <t>The immutability of <tt>act</tt> and <tt>sub</tt> claims during replacement ensures consistent identity context throughout the transaction lifecycle</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Infrastructure Security
          </t>
          <ul spacing="normal">
            <li>
              <t>All component communications MUST use secure channels</t>
            </li>
            <li>
              <t>Implementations MUST enforce strong authentication of the Authorization Server</t>
            </li>
            <li>
              <t>Systems MUST implement regular rotation of cryptographic keys</t>
            </li>
            <li>
              <t>Trust domain boundaries MUST be clearly defined and enforced</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Multi-Agent Considerations:
          </t>
          <ul spacing="normal">
            <li>
              <t>Chain Depth and Bloat: Deeply nested agent calls can lead to significant JWT size increases, potentially impacting HTTP header limits. The TTS MAY impose a maximum depth for the <tt>actchain</tt>. If the maximum depth is exceeded, the TTS MUST either reject the request or truncate the oldest entries in the chain, provided that a "truncated" flag is added to the claim to alert downstream services of the loss of provenance.</t>
            </li>
            <li>
              <t>Privilege Escalation: A Delegator MUST NOT be able to request a replacement token with broader permissions or a higher-tier principal than what is asserted in its own subject_token. The TTS MUST validate that the requested scope and purp are a logical subset of the original token.</t>
            </li>
            <li>
              <t>The TTS MUST verify that the workload requesting a replacement token is the entity identified in the  <tt>act</tt> claim of the subject_token. This prevents an unauthorized workload from "injecting" itself into a transaction chain or extending a chain it is not part of.</t>
            </li>
            <li>
              <t>During the replacement flow, the TTS MUST NOT allow the modification of the <tt>sub</tt> (principal) or txn claims. These fields provide the "anchor" for the entire transaction; any modification would effectively initiate a new transaction, requiring a fresh authentication event rather than a replacement flow.</t>
            </li>
          </ul>
        </li>
      </ol>
    </section>
    <section anchor="references">
      <name>References</name>
      <section anchor="normative-references">
        <name>Normative References</name>
        <t><eref target="https://datatracker.ietf.org/doc/html/rfc2119">RFC2119</eref>
    Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <eref target="https://www.rfc-editor.org/rfc/rfc2119">https://www.rfc-editor.org/rfc/rfc2119</eref>.</t>
        <t><eref target="https://datatracker.ietf.org/doc/html/rfc8174">RFC8174</eref>
     Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, https://www.rfc-editor.org/rfc/rfc8174</t>
        <t><eref target="https://tools.ietf.org/html/rfc6749">RFC6749</eref>
    Hardt, D., Ed., "The OAuth 2.0 Authorization Framework", RFC 6749, DOI 10.17487/RFC6749, October 2012, <eref target="https://www.rfc-editor.org/rfc/rfc6749">https://www.rfc-editor.org/rfc/rfc6749</eref>.</t>
        <t><eref target="https://tools.ietf.org/html/rfc7519">RFC7519</eref>
    Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015, <eref target="https://www.rfc-editor.org/rfc/rfc7519">https://www.rfc-editor.org/rfc/rfc7519</eref>.</t>
        <t><eref target="https://tools.ietf.org/html/rfc7515">RFC7515</eref>
    Jones, M., Bradley, J., and N. Sakimura, "JSON Web Signature (JWS)", RFC 7515, DOI 10.17487/RFC7515, May 2015, <eref target="https://www.rfc-editor.org/rfc/rfc7515">https://www.rfc-editor.org/rfc/rfc7515</eref>.</t>
        <t><eref target="https://tools.ietf.org/html/rfc8693">RFC8693</eref>
    Jones, M., Nadalin, A., Campbell, B., Ed., Bradley, J., and C. Mortimore, "OAuth 2.0 Token Exchange", RFC 8693, DOI 10.17487/RFC8693, January 2020, <eref target="https://www.rfc-editor.org/rfc/rfc8693">https://www.rfc-editor.org/rfc/rfc8693</eref>.</t>
        <t><eref target="https://tools.ietf.org/html/rfc9068">RFC9068</eref>
    Bertocci, V., "JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens", RFC 9068, DOI 10.17487/RFC9068, October 2021, <eref target="https://www.rfc-editor.org/rfc/rfc9068">https://www.rfc-editor.org/rfc/rfc9068</eref>.</t>
        <t><eref target="https://datatracker.ietf.org/doc/html/rfc9396">RFC9396</eref>
    T. Lodderstedt, J. Richer, B. Campbell, "OAuth 2.0 Rich Authorization Requests", RFC 9396, DOI 10.17487/RFC9396, May 2023, <eref target="https://www.rfc-editor.org/rfc/rfc9396">https://www.rfc-editor.org/rfc/rfc9396</eref>.</t>
        <t><eref target="https://datatracker.ietf.org/doc/draft-tulshibagwale-oauth-transaction-tokens">OAUTH-TXN-TOKENS</eref>
     Atul Tulshibagwale, George Fletcher, Pieter Kasselman, "OAuth Transaction Tokens", <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html</eref></t>
      </section>
    </section>
  </middle>
  <back>
    <?line 550?>

<section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank the contributors and the OAuth working group members who gave valuable input to this draft.</t>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
      <t>name: Atul Tulshibagwale
org: SGNL
email: atul@sgnl.ai</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
Wc01JrQt44N4heCmd0o+oc8/YtJ4QETHT2Pbuvar3QHTvJ7u1tf2fa+AH7rN
HrHLBYtinmbxpIpn9ae8nyfhbCzmKd8SZwdxG+xNSgiNZjDOYARIBw3qZpWr
5k7lRWRv/vnPf5KFSLJsQLo88q/EavZeoOGsClUcuNHZ6Q6WvaqBLf9czMv9
PhdlG/yiiUTzv4et/r7j742ff5emZ+y5fVZTmS22qjdsOmj/fXXTt+64f+Om
HMj0uv349dm1m+4g/ucm2CgAOPGI4rpNf99S/EsS7JageNEn8KJ5yd6Ew2v/
vvpZCW7pXPt3Ew6v/ftZCfab/RKicBv2v2EOi63ROPjxxcH+tZsu78CI9jdC
I7/ZyWEFwxCQxnmjpr+agmn/fqPbGC1yuHZTN+T+GpC9RlOEubBPcXOCd04x
ePjzsWmz6X8pBgYHbtyYEAO2CFW0b9z83LJvIptsHeZ/VleghLuioQzdsvsl
efkbb9pZGzdqulsjkU76MQRHzy2BsvQoYsE3R34dA8JG/Fq+WM9x4EauSi9H
ZPhmdBWQTtODV0C6UfSyJMfsKDoYsh6r7Bh7iOoLdJxe2YKC57NqgXCksZON
rVzxyzlTiPyWrb75htsS3RMi4FTEdS0JKXG7t7kR2XOeVaTRAYnBTBGW8Di/
G+1vQfqJD/tzuClCOID7VDeXIzWF2iEgSZdSLNEpTaddFptEudHsiJGtORg/
0qe4thtxw4VB185tPh5c//GmyiYT8rXS6z0u0bnr9j4Y/O5GtLeXr/P472/a
+477Ox6/iS9yQ3hwc2Ju4mfc0Lf4DM7sChx+gjPXQLU3J+Ym6BXXGK/Gixaq
fuzxG6HUzxSxa6LRX0DE2vufQpo3RJc3RJQ3RJE/bqibj6+jxc9AiDdDhSSN
125E7xn6ht7tIieTLv4czPgpH/8UNrshHvsVMZgxv+NbZ4WaB5d8KRbvSKxw
a1vZbHrUdhuSdeQ01xpOu8rinQqWWu6AbHVn3emBOLdfxUlqfPYQKG4T8tx2
+E0zH1O/Qh1+28Rut7cOseZk05ENtu0QiqwhoN6Uapua+tjAbkpBzQl4MQer
PZyrDWEkv9MsOJig2hs7z2N/Vg1bAdFm+peL7gcnB1dgxgRLCrF730XbdPMQ
7cZexjBsCaH5OTc3vsA57oFkJRWTQfDqQfMBT+77vWhCoJMMvG5H41ICMeJq
nWXtfvUtPmNyi7l+y+/a33IzAJlqN0i4l7R9iewK8+62z1Dc1SHn71VWkvsK
CZmlNO0znMwHobdoULf6uvXBrUlPOkIkv6sd3TPOuxTsjqTNb2yc2gorzkjX
3jvC3SnfbfNeObWhk8dwZN43q/l7fxTjPRHDnPrdX5bN+75PCtVTP5f+EN04
s5XPbH5/maXvhy1VT8p0RYubrcRa0uYItzQrrm6JEj+mpjlbZnrqMdyqaTPk
3Dm99tiozhgfryXq+x759JE4QP8XN31s8fblaCjNXdJ8kNxTWuTvljn9h7NU
ZWAJp3nOYvxJrYPzOLzpJw01FVaW12QRQ2lZW/+qR5KI/2d6kMJKcns/PJNd
m3tVCm2nxx/5WCD9YvnlDNRU847PGjOFawxX4GvCB0vOFe88xD2E931OZpCR
Cam7+KBEegXF+/VRx+X229jc5N7r9cM85MZ29f6epvy6PAURms3U3aEzf2F6
CFgRkD7UcEGmO54Dt4s5ODB7HnioKuiQzWkprGs8yXxaommTWsFcpEUfkeYn
esS7/ktNWv1vZFt7JK69I9NLDtPk3uPHh4PD9OGDwf0v78WDx/dGD+hn+nh8
9zA5fPTQ9pDc0CM2oEHb5R90qlG2otc3d+7ggBWYJikVLgMFuKtHS6IXFOrg
09HFZMjzOtDJ1+7u1E2ZXNbyUhpnpx2xub5KtrbTBnFDDQ4ePn5098Hjw7t3
+SKtwPbiA704X1S42gMtdhi+FIuU7vyNAVBPxB1PPvnuTz3J8+jR3F/aChdf
nD+7cFf/uoh5+nD94O5d1Cj5B/coix2X43k20cnfPgjwESIy2SbdLqYJojyF
OjW9dRHqoSsvHrSsWBTDvpHswlGrcH2B6OgfzvS7DN8swdkuqL91rYoUKzVt
kom17Uhem1OO8BAZKJwBInLylcvNMra4yqqyEOUsZwoCdSMN7Qeb8GHWESdw
e32NvKW6iV1ycFCnoIJCzQabZSb2xoyXVFltO7okJ5f+/a//loQGl5PgkoWp
b5xjJxrJ9tbhib1BWpFKkayjmTvirfi23ucTMWy9UjLu5Wom3VY2X/Hx5g+E
zmopOFC2yqdzfJxPGtGMhIc6g3MOjDKDw+GuqEVVjjbrS/hiCqSMfIb4jlMW
qmjkoEF7Pk7StFKXZq+5BmsnTstx0yb1pMNAHfUCiVGhlkvvUH8IiwbnxmjE
v0My1CBkuy4XpF1wZSM5QuASKMaEeXQ8VZn7yjAyiu78//tf/1df8u9//T/+
ufEudwOZxwMncI27io3IgYgnjCO/g+5psow36sInpPPADREQF3PyhROFgcNI
w5YPfJ5NdNC94f3h4dqwsyJ1Lkhs9FlIPq3KcTZZaNWNADvxhqnjhKaTSr6k
uhb+bEtdlwlvZa/PqIIzWPEsQZEUSDBOe7iV4k6vlhUfeI25rEePC0dAdfVs
sZjJcTmwxGVQwYfQEinENFSLas+yjewYeSr/eR+EQLgJThLw+rgMTLPJdIDz
seQ/ksIv2wJB4Wg8StV5+x9OO8dMoPTHpqyENsNJgB/QUAgfOsLdA+584JCw
GwpxwbEpKy8lfg50aXF9jaCIUlLGVe0rNfTlmWYQy6HMzpp2NRtEhETa3qke
Jd7/mexRnPa+F9vYqt13wXFlLMTOTV6HNDk4SVvZiYrjou7BxHlzwd56p86L
xFTf4AhPN26v8IhQuk+M7T6gAfu94/N9x4T6Yx2ZvTfHb/bXcTBODtx7/PD7
vsup6ug+bIWwvwo3ODXponKC48rHSIU28Tx9LQuWqjH9xSA8PEuDwg7EQxvP
jKq1sLyJaAMis61MJNoAuzlvXHbpK+Sgsh/JEd+w3gxe4RREf710h9jJPTuc
DGmSjtGvAkyIkawmPup4i17FP28ht5DctN6+O2VVWfE/bQGN5sFnGAH2B244
HAN+YUA70EF7uO2CplGPbOueUXsSfvu0+FX5vnP/nd536Xmu4Fcn1VDcWRpF
PK85xRLPzDoZ5yFQ2ZVT71IMvWYPYYq61rXErBhHTW3nUKE//M91b66sfwgo
Wvn4FAWQXtADzoyeFmTbpzOOZh0Mze3bp36L7fbtI8lrvDh3TBRHFjMQVxVh
uuCgKYEORnyduTvkHj1f1jrVCXLHcxsu6eHmYxvjDI0cJ+yQ4I24XcqnluGr
w3ywCAZLwutyVHESH3qR1VNUUFla645Q52pBCM7EXB6Kp1ITpZl1A14Z9KJg
bQyxSXr79msxO0+xXUtdyeB43xRFWgq33Fioz2XHdS4Jm6xPWUKAd6SYUVxl
+YqzwZ1eEJDsrbSchkQ/uszJA/qPcMlLciyIEXWOPjqHuqUgzJYiPXKQVw6f
d49tiOA8IWaN2Ukd8/wHqjeKbhMrTlR1vW5LO4Ad34GBqtag83R2sfSTajVv
Si7ooCm3ItrrGbB9WSkcAtGX0DCnBLF5lJ1SEWt1Ipiyr11ltROpMgSyzh0/
gEEYrwoIZRJdwa9ubrGbgx4DRSnt4Mxcey7XKzEfsQO3tOIHk/PGEuag506k
ygDpdBB0QsMiCcp+kGHyLT9cJzWqJ0iUSIESxvQVd6RUUSsGiDlvrp6K36xJ
wCiW2VikD6NU2aJKEbPmqgUZWR0cTg6OubMIaCUBPtLS6XftxKczUR9H3Ru4
ewvelsdaGOeB2xpac09u1dzAILpX/ze/Z99zb5We3mlP7yTu0eu3D24gGbJ2
OfFdEI0+lLtz+PyYrxA6zxw8c+GGq4Pe99rsH/xf7eVjyEif346P3M0OSoqk
fweUzAuuYyF6jqtoIYDmhMwhB19iqy+HV2exL0+1B4npPSUDOuGJ2eeaBqn8
5rT7gewK0NLFoW1XKKG2OIfm+yG44DqxNGkOiG5UhooDwIJTrZrZLhpR2nMh
GnoY/nMM/eYqQjHQlpNvQ4PtGVFt2gfWiWsGN1FL+wSHiwdNORAY87R9U+SP
9uxghzuZ687ubHnO2t5+94yuYxsXMWvry3DSjY8Hbp5iVvXou4WLz2fN+uF1
mgIOdcs2FL2tIIvNjuBmj85D813qWaNgT8Dvh/yKYV/GDe3wlGOuFAQ2faAN
Ez4ZgQA4xBBumNl7Lc7Yvo8meGWuzHRToWfSWuMZcFk2KHQDhK3mLXIXuIAX
V+rYl40AHHZ1BzD4qeDcCo6XaTEgesFcXUVX+s+lPHz79mLfHQYR2dWdrrhr
MqUGnEOkwcIg9DHl6Da9MjyRGTMFJal6GE5BcNQ6qEnFlSgRDONSjnItPAgD
xUCOt49sbS06AVshrPAHVKLToL8OLPZMEnJYZl2Ar3MikXQCalnzbuvt29gx
39PchH3YT1fLSaSkLerXZQ5AL4chuJOMmLt3JsHtY+nGTc+QfHyUBSGgOZuH
MY+lcx/Xu2xD0Lx24UD62mYd/1/fTWtc3l2tvZjp5xu+sax7ll0XV0m3j0s0
6gz1iBBacREwLt0XSzjC1/kjgNUtCuIrtWm5YFWsAkIlmuQ2BHxmYOcR52S0
ogggEu7ncu5dV5sGVS4+oaNEZXKrvpYk2V3eBB4gS5NI0HZl9luondEGlgNZ
L1O/c4nKhpAYl4lzFmzJOW+q+SA7VbK3uud3ZffdpqHb9uQTaWnrt3VPzKnS
Q03GTdY6XyWkTWSZ1R+A/wSlGdecPH6z88Hb7U49bLjhP3YIco6ytAYWFxb4
enrzuY9c8RHTIg0rcnc0i+oTjE0PS56NTVGGD3ItuxbBd0gBKEJb7ayWYiL0
sCoriUXnK3fUVQmWwYbw/yV1Ilbj2J9/9tPobYLPPnLj8XT7wWMPWce9ru5a
Q77nrBuvmn1doCEeVGTK29m8Z61JTxfB/mrXBDjchwOI+K4AXZJNuM2KJ6k7
EA49wEEnhsNWP5ngqmxxEKjtNm7ts6u0ispT5wL6j0WB/4Q7jINHj37cBuCj
g8MvH9y9290AlIv39GK4h+beLcyQeRhcHTovpg3PO5g/WNSDJenIwUG7y+fE
1rs33k/Q3ivPbPeGg9ZdCAi///jxg7uR80i+72xXLu2o9WB4N0zG/Qu5cx8N
Jv9MTlPHcTp39eVOtGK1aGQOlR3ruXZfgy7pPGPwSvrjVzEpOJmPkkmHLpue
bfCKy2VpBawzV5NZyRU9rWElAdKqcFyJtCCtSzea2jrWRnO7SAFtqSiC2sVA
JQ1vR4sZXqH4GSpL982IrEq2Ro6ie3zzxDP2CFN0u6Vc6p2w4XI1uoMa/A5m
BrvNtXSg+aBt80UdT2wbtsD5B9bQZ06vOjlYIyBknRfmwL5JFFNS2Ljl9nC1
tEcq3MrvG/D6UpUuVYJd4F93ptrUDOxES/dPJUq2DnP6u94Jb5PN+WojEckX
81O73B57wCmP9ji2RuIDyRJSzvVLAvweOA0gZlEEcbIOxnGWLDzo7/ZH3GF+
F1bc2OHfDCS2TpwE2fWLAHJk/ydhVViQYCerPjXnATR1W+/raVi/Ii5tuSf1
fQL77vGAxkf42E6w7gURnjmmf2TZ+Ir6XdfWz1fXB2KLpwLmfJbu6mtULJpu
Glf7LYYt4tmWp5+3+pGEDTV8nIIho29ly1cER20VwkUu5IyapPgGkgbFHw59
iVtfs96FoOuPcMTrYI5htIS7Ku8C23zh57UBuT0VP6T2EwfB9w26fWHSruTL
G6MV9hgm/P0Z1gatV9FqNPkuAj1Xmy3c9DPqP5+AgH9Y5bl9XxQ9chaKxafN
A+lq3I/pTTfzHIIQGnWO1o+7tT1whW1OXfiYRheN7BOXxQMWEnlAXNkm0O7X
0Hlkm/z67ui3pjP8T45aF6bfOgxVd4yKTcSRHTVMWm+hTUQIGBVFXw47Lru8
fQ0AbY53l/3yCRe6mP2+iK5UNWeBIv7oCtUvRdQaGN5kcajRXWihZWcnn5U3
MrYKebppHdxuLYORuukwcnvZ8k7SB0BUskrIl4qixwjZdkood6UdyNLncHXV
ivIDn57SUurAO4W9nkYhzkllUn+QoI1QbUuH+OhMEHjmXTVSmb6jrhK/tCvH
+u26uA1L5OQB5Ctv7GQ7nanmkzTRwd2heq2iULviyMCQXiNm56mdYz+KuniS
l3FzRBdoHn3VHE2v5ppi2P1zH/rh1G8AEroLZ7hGlV1NHrScII1JzxhfEBc0
/+ybi4vXLv2cv0ahnwzj0Mfxn/Ak0oBiWvofstlihuQros6F3Nvog0/17z7I
TnhibWo1vt/GVKTcbGUlX3jaVkXmLwItisSlUiHrAt/poZUDpruYLV7bb6sk
yScDkKIqTdMeIaJ4wnHrNAiy+DJFcW6rZuuGu4pUjtBgOeZXWP1GjkwU4cer
jNx9a05rmgn3zbr1zQuALoR5UIq5LS28dr6j8dEpM6pKnogwiYXjhkihIT+4
yToohkaMgtKyJYB4ZqXRn7Vk7DYYFbC/RRxOByt5fvuBczSx/8A5U66SsRRu
bhyPuurQ8af7JqdZ9T0+vzsoCbiNJVpRW3VUEDlWAehE4pScbeE3VbO8edBR
tZ4QNiTk2P9FPiXTc4eTCAiUa9+JkXQDPT0kRXdjvZjxPATp+o4bT9tEqU28
3lkTEJjYY+rQwwgTd7oRUqyWD4U7hqLfcmNLWvsULN7IIwGmkff82gU/u3nD
/0EsWnVfuywXZJLDD3u52JgGFIPm7nNdwpQxWZvpurIWg0dqD0uf5Tfe4Al/
duENskBQwJhrdpmX7suO4Y3P/aAET8uTKk4LfDvqHPlff/Rf2gB3YJ5oQql7
ttNnsn1iOXlOq+yZ54hz1r2+ft2ij6cNuu+bp6/ODCn8g0f3v3x0R2nsmxcc
Izp4/PhR3/zeEbxcLodE1kC+gsrk0k9H6VfEis/9+IXEiJ7bbBQTjZzjNhtl
k4UCh+/mpGR4S+WqNs/Lpf6QUfM4DHjyFjxZGyS63xykXH0Rr8zh3QMa4qdH
iBZMZfQZFZO/iau0ISpoYKcpRgeVs6tIwzNke2O192QE6GZzBHL1VdKUIxJO
GsXhtSYKzdxEXf9zZzyIbwkhkWV+QfRDHHO76ptvh5Id/3JozuNLsqQVzV9v
2x6rDgbdbQ5Grup0PLjWQNAkGMiD6wzkwWcP5Nyfp6TBnAeDebB1MA9uPpgH
fvlc+wNX64N5GadkJkmxHdOPE/KhRxafQ3jipG5jsCcE87BzivQRGu2u727p
aPHOLSuJr34bFwtknhzePbx7rRGjmRtxt/z3jhFz5W/RhYQcyiTJ+ua/hjuE
DQGyMXK2oB+DdRakS9Y6KvS7OSq52q6uw4NrjQrN/KiQmnx9NYjHZXwXQ1Jx
hAEroJsGs8Wp0dD+T4bBvAbz9ZHUaTdM6n7LMPmqiOrhvesNkZp8NUTexccC
ZLtGK/GwZpHXU1L1kyWh2p2BMTUKx/S0uQhb9M3XtsShnme5bYQxrzM+a/1H
4Mqc/H7Pnc34eC8Y5k8fyPsqkm/DonQ/kMFxclmUS3yLmw8DcbKKgLpa0Yqc
MC0ZX1wK5ofXjURDPBTLh09Vipf6wW7+lrdL0sAn4cwE3/Lgz4nJp1TmC92w
RM4XiGegchJ0HemHrTf4GxFzj8z51y+fR+5r1vTMH+pJkQ/jLPr/AdbjlaN9
AAA=

-->

</rfc>
