<?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.36 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-refresh-token-expiration-02" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="OAuth RT/Authorization Expiration">OAuth 2.0 Refresh Token and Authorization Expiration</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-refresh-token-expiration-02"/>
    <author fullname="Nicholas Watson">
      <organization>Google, LLC</organization>
      <address>
        <email>nwatson@google.com</email>
      </address>
    </author>
    <date year="2026" month="May" day="08"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>oauth</keyword>
    <keyword>refresh token</keyword>
    <keyword>authorization</keyword>
    <keyword>token endpoint</keyword>
    <abstract>
      <?line 51?>

<t>This specification extends OAuth 2.0 <xref target="RFC6749"/> by adding new token endpoint
response parameters to specify refresh token expiration and user authorization
expiration.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://drafts.oauth.net/rt-expiration/draft-ietf-oauth-refresh-token-expiration.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-oauth-refresh-token-expiration/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Web Authorization Protocol Working Group mailing list (<eref target="mailto:oauth@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/oauth/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/oauth/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/oauth-wg/rt-expiration"/>.</t>
    </note>
  </front>
  <middle>
    <?line 57?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>RFC6749 defines the OAuth 2.0 protocol, part of which is the ability for a
client to receive a refresh token that may be repeatedly exchanged for more
access tokens. OAuth 2.0 does not contain any normative language around
expiration or lack thereof for refresh tokens, mentioning only that they are
"typically long-lasting".</t>
      <t>In the years since the publication of OAuth 2.0, in response to changing
security and privacy landscapes, many authorization servers have begun to issue
shorter-lived refresh tokens for two main reasons:</t>
      <ul spacing="normal">
        <li>
          <t>The authorization server or user may decide that the access being granted is
too sensitive to allow indefinite access (e.g. mail or health data).</t>
        </li>
        <li>
          <t>The authorization server enforces a maximum duration that refresh tokens may
be held without being exchanged on the token endpoint.</t>
        </li>
      </ul>
      <t>Clients may wish to implement special handling for expiring refresh tokens. For
example, if the user has granted expiring access, the client may notify the user
that they will need to reauthorize access before a certain date to avoid
interruption of service.</t>
    </section>
    <section anchor="requirements-notation-and-conventions">
      <name>Requirements Notation and Conventions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>This specification uses terminology defined in <xref target="RFC6749"/>. The following terms
are used throughout this document:</t>
      <dl>
        <dt>Resource owner and user</dt>
        <dd>
          <t>May be used interchangeably to refer to the entity capable of granting
access to a protected resource.</t>
        </dd>
        <dt>Client, application, and relying party</dt>
        <dd>
          <t>May be used interchangeably to refer to the application making protected
resource requests on behalf of the resource owner and with its
authorization.</t>
        </dd>
        <dt>Authorization</dt>
        <dd>
          <t>The resource owner's permission grant for a client to access protected
resources on their behalf, as described in <xref target="RFC6749"/> Sec 4.1.1.</t>
        </dd>
        <dt>Access token</dt>
        <dd>
          <t>A credential used by the client to access protected resources on behalf of
the resource owner, as referenced in <xref target="RFC6749"/> Sec 1.4. Access tokens
represent proof of authorization.</t>
        </dd>
        <dt>Refresh token</dt>
        <dd>
          <t>A credential used by the client to obtain new access tokens without
prompting the user, as referenced in <xref target="RFC6749"/> Sec 1.5. Refresh tokens do
not grant authorization or renew authorization, they only provide a
mechanism for obtaining new access tokens within the bounds of an existing
authorization.</t>
        </dd>
      </dl>
    </section>
    <section anchor="concepts">
      <name>Concepts</name>
      <t>There are two mechanisms that can affect refresh token expiration.</t>
      <section anchor="authorization-expiration">
        <name>Authorization expiration</name>
        <t>When granting authorization for an application to access their data as
referenced in <xref target="RFC6749"/> Sec 4.1.1, the user may opt to time-limit that
authorization, especially if the data is sensitive or they aren't sure how long
they'll continue using the application. The authorization server itself may also
impose mandatory limits on authorization duration.</t>
      </section>
      <section anchor="refresh-token-timeout">
        <name>Refresh token timeout</name>
        <t>Authorization servers may wish to define a maximum amount of time clients can
hold a refresh token without exchanging it. Beyond the security benefit provided
by expiring credentials, this also provides a convenient mechanism for
authorization servers to ensure there aren't ancient valid credentials out in
the wild, which could complicate tasks like refresh token key rotation.</t>
      </section>
    </section>
    <section anchor="refresh-token-expiration">
      <name>Refresh token expiration</name>
      <t>The refresh token <bcp14>MUST NOT</bcp14> expire later than the user authorization expires. It
<bcp14>MAY</bcp14> expire earlier if the authorization server also enforces a maximum duration
between refresh token exchanges.</t>
      <t>If the user renews their authorization, the authorization server <bcp14>SHOULD</bcp14> update
the expiration time of existing refresh tokens if their lifetime was truncated
due to user authorization expiration. (This is especially true if the
authorization was updated out of band as discussed in
<xref target="ux-considerations">User Experience Considerations</xref>.) The
authorization server <bcp14>MUST NOT</bcp14> accept expired refresh tokens for any purpose,
even if it has no way to update the expiration time of existing refresh tokens.</t>
      <t>Access tokens <bcp14>MUST NOT</bcp14> expire later than the user authorization expires. If the
user renews their authorization, the authorization server <bcp14>MAY</bcp14> update the
expiration time of existing access tokens if possible. Resource servers <bcp14>MUST NOT</bcp14>
accept expired access tokens for any purpose, even if the authorization server
has no way to update the expiration time of existing access tokens.</t>
    </section>
    <section anchor="token-endpoint-response">
      <name>Token endpoint response</name>
      <t>This specification introduces two new response parameters.</t>
      <section anchor="successful-response">
        <name>Successful response</name>
        <artwork><![CDATA[
refresh_token_timeout
      The time in seconds that the refresh token may be held by the client
      without exchanging. For example, the value 604800 denotes that the
      refresh token will expire in one week from the time the response was
      generated. This value SHALL NOT exceed the value in
      authorization_expires_in.

authorization_expires_in
      The lifetime in seconds of the user's authorization for the scopes
      contained in the issued or presented refresh token. For example, the
      value 2629800 denotes that the authorization will expire in one month
      from the time the response was generated. This value MAY exceed that
      of refresh_token_timeout.
]]></artwork>
        <t>If finite, the authorization server <bcp14>MUST</bcp14> return these values whenever the token
endpoint response contains the <tt>refresh_token</tt> field. The authorization server
<bcp14>MAY</bcp14> return these values even if the response contains no <tt>refresh_token</tt> field,
in which case the values correspond to the presented <tt>refresh_token</tt>. This can
be useful in the following example cases:</t>
        <ul spacing="normal">
          <li>
            <t>For <tt>refresh_token_timeout</tt>, the authorization server could have
updated the existing refresh token lifetime in place.</t>
          </li>
          <li>
            <t>For <tt>authorization_expires_in</tt>, the user's authorization lifetime could have
been modified out of band.</t>
          </li>
          <li>
            <t>In all cases, it can be convenient for the client to receive these values
in each response.</t>
          </li>
        </ul>
        <section anchor="relationship-of-authorizationexpiresin-to-scopes">
          <name>Relationship of <tt>authorization_expires_in</tt> to scopes</name>
          <t>Though <tt>authorization_expires_in</tt> is returned from the token endpoint when
refresh tokens are used, it corresponds to the user's authorization for <em>scopes</em>
(or finer-grained access through RAR <xref target="RFC9396"/>) rather than individual tokens.
The authorization server <bcp14>SHOULD</bcp14> ensure consistent lifetimes across multiple
refresh tokens for the same scopes.</t>
          <t>Tying authorization lifetime to scopes means it's possible to have some access
valid for one duration and other access valid for a different duration. For
example, a user could grant indefinite access for the <tt>openid</tt> scope and
short-lived access for a calendar scope. In situations like this, it is
<bcp14>RECOMMENDED</bcp14> that the authorization server return the minimum time that any
access granted by the refresh token is valid. This does run some risk of the
client asking the user to reauthorize prematurely. In the previous example, the
client might ask the user to reauthorize the <tt>openid</tt> scope because it received
an <tt>authorization_expires_in</tt> value corresponding to the short-lived calendar
scope.</t>
          <t>If clients are requesting multiple scopes that can have different lifetimes,
they will ultimately need to make their own tradeoffs to decide how and when to
ask the user for reauthorization. This specification's goal is simply to provide
them with more information to make this decision.</t>
        </section>
        <section anchor="indefinite-expiration">
          <name>Indefinite Expiration</name>
          <t>Omitted values indicate that there is no fixed upper bound on the lifetime of
the credential or authorization. If the authorization server has not declared
its support for refresh token lifetime in the Authorization Server Metadata,
omitted response fields could indicate either indefinite validity or simply lack
of support for this specification. However, indefinite expiration and lack of
information about expiration should be handled by the client in the same way.
That is to say, the client must always handle refresh token invalidation not
caused by expiration, such as by explicit user revocation. Clients <bcp14>MUST NOT</bcp14>
make any assumptions that omitted response fields in one response imply their
omission in later responses too.</t>
          <t>Rather than omitting a response value, an authorization server may choose to
return a large arbitrary value, e.g. 315569520 for 10 years. This avoids any
ambiguity around support for indefinite values while achieving a similar
practical effect. Clients <bcp14>MUST</bcp14> treat all large values as literals and <bcp14>MUST NOT</bcp14>
make any assumptions about which may be considered indefinite.</t>
        </section>
      </section>
      <section anchor="error-response">
        <name>Error response</name>
        <t>The existing <tt>invalid_grant</tt> error code already explicitly covers token
expiration and should be sufficient. Upon receiving this error code the client
<bcp14>SHOULD</bcp14> start a new authorization grant flow.</t>
      </section>
      <section anchor="example">
        <name>Example</name>
        <t>Suppose an authorization server enforces that refresh tokens must be exchanged
at least once every 7 days, and a user has granted authorization to an
application for access for 10 days. The initial authorization code grant (Day 0)
will result in the following response values:</t>
        <artwork><![CDATA[
refresh_token_timeout: 604800  // 7 days
authorization_expires_in: 864000  // 10 days
]]></artwork>
        <t>A refresh token grant on Day 2 will result in the following response values:</t>
        <artwork><![CDATA[
refresh_token_timeout: 604800  // 7 days
authorization_expires_in: 691200  // 8 days
]]></artwork>
        <t>A refresh token grant on Day 7 will result in the following response values:</t>
        <artwork><![CDATA[
refresh_token_timeout: 259200  // 3 days
authorization_expires_in: 259200  // 3 days
]]></artwork>
        <t>If instead, the client held the initial refresh token for 8 days (i.e. exceeding
<tt>refresh_token_timeout</tt> but not <tt>authorization_expires_in</tt>), the refresh token
grant will fail:</t>
        <artwork><![CDATA[
error: invalid_grant
error_description: "expired refresh token"
]]></artwork>
        <t>Note that the error description text is non-normative and for illustrative
purposes only.</t>
      </section>
    </section>
    <section anchor="update-to-authorization-server-metadata">
      <name>Update to Authorization Server Metadata</name>
      <t>Support for the expiring refresh tokens <bcp14>SHOULD</bcp14> be declared in the
OAuth 2.0 Authorization Server Metadata <xref target="RFC8414"/> with the following
metadata:</t>
      <artwork><![CDATA[
refresh_token_expiration_types_supported
    OPTIONAL. JSON array of supported expiration types. The possible values
    are "authorization" and "token_timeout".
]]></artwork>
      <t>If the authorization server omits expiration time response fields to indicate
indefinite validity, it <bcp14>MUST</bcp14> declare <tt>refresh_token_expiration_types_supported</tt>
in its metadata to indicate to the client that it's aware of this spec.</t>
    </section>
    <section anchor="ux-considerations">
      <name>User Experience Considerations</name>
      <t>While clients must be able to gracefully handle tokens' expiring at any time,
the user experience may suffer if there's an unintended interruption of service.
This degradation of experience would most likely be felt by users of clients
running in the background, such as task or travel management apps that rely on
access to a user's calendar or inbox.</t>
      <t>If an application recognizes that its access is nearing expiration, it can
proactively prompt the user for reauthorization next time they're "in the loop"
(e.g. using a parameter like <tt>prompt=consent</tt> from <xref target="OpenID"/>), or even
communicate to the user out of band that their granted access is expiring.</t>
      <t>Another option an authorization server could provide to the user is a management
surface where the user can go proactively extend the lifetime of their own
grant, which would update the lifetime of the client's refresh token(s) in
place. The client would discover the extended expiration on its next refresh
token grant request.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>While it is possible to allow refresh token expiration to exceed that of user
authorization expiration if the authorization server checks both timestamps when
validating a refresh token, this is a potentially dangerous source of bugs in
systems with complicated user authorization models. By requiring refresh tokens
to expire no later than user authorization expires, there is less risk of bugs
that accidentally provide data access to the client beyond the term of the
user's authorization.</t>
      <t>Authorization servers implementing token rotation on every refresh [RFC 9700]
Sec 4.14 may wish to enforce a maximum duration that a refresh token may be held
without rotation, and this specification allows that duration to be communicated
as part of the API rather than relying on documentation.</t>
      <t>Clients may wish to maintain multiple refresh tokens with different access in
order to separate different lifetimes across different scopes. For example, a
short-lived token to access financial data and a long-lived token to access
basic user info. There is a tradeoff here, both in complexity of token
management and also in increased friction for the user to authorize multiple
tokens.</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>Allowing users to time-limit their authorization is a privacy improvement. While
this was already doable in regular OAuth implementations, the potential
interruption of service for the user may have discouraged implementation of the
feature. This specification provides a standardized way to mitigate that concern
and should lead to greater adoption of time-limited authorization.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="oauth-parameters-registration">
        <name>OAuth Parameters Registration</name>
        <t>This specification registers the following OAuth parameter definitions in the
IANA OAuth Parameters registry.</t>
        <section anchor="registry-contents">
          <name>Registry Contents</name>
          <ul spacing="normal">
            <li>
              <t>Name: refresh_token_timeout
              </t>
              <ul spacing="normal">
                <li>
                  <t>Parameter Usage Location: token response</t>
                </li>
                <li>
                  <t>Change Controller: IETF</t>
                </li>
                <li>
                  <t>Reference: This document</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Name: authorization_expires_in
              </t>
              <ul spacing="normal">
                <li>
                  <t>Parameter Usage Location: token response</t>
                </li>
                <li>
                  <t>Change Controller: IETF</t>
                </li>
                <li>
                  <t>Reference: This document</t>
                </li>
              </ul>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="oauth-authorization-server-metadata-registration">
        <name>OAuth Authorization Server Metadata Registration</name>
        <t>This specification registers the following Authorization Server Metadata
definitions in the IANA OAuth Authorization Server Metadata registry.</t>
        <section anchor="registry-contents-1">
          <name>Registry Contents</name>
          <ul spacing="normal">
            <li>
              <t>Metadata Name: refresh_token_expiration_types_supported
              </t>
              <ul spacing="normal">
                <li>
                  <t>Metadata Description: What types of refresh token expiration are
supported by the authorization server</t>
                </li>
                <li>
                  <t>Change Controller: IETF</t>
                </li>
                <li>
                  <t>Reference: This document</t>
                </li>
              </ul>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="change-history">
        <name>Change History</name>
        <t>Delete this section before publication.</t>
        <ul spacing="normal">
          <li>
            <t>May 8, 2026:
            </t>
            <ul spacing="normal">
              <li>
                <t>Incorporate Vanshaj's review:
                </t>
                <ul spacing="normal">
                  <li>
                    <t>Add language on backwards compatibility for definite duration
becoming finite.</t>
                  </li>
                  <li>
                    <t><tt>refresh_token_expiration_types_supported</tt> <tt>"credential"</tt> value
renamed to <tt>"token_timeout"</tt>.</t>
                  </li>
                  <li>
                    <t>Simplified example</t>
                  </li>
                  <li>
                    <t>Linking UX considerations from RT expiration section</t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li>
            <t>Feb 27, 2026:
            </t>
            <ul spacing="normal">
              <li>
                <t>Address Issues 4, 5, 6 from George to discuss tradeoffs around managing
multiple tokens or scopes with different expirations, as well as out of
band reauthorization by the user.</t>
              </li>
              <li>
                <t>Rewording and clarification based on Dan's suggestions on the list.</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RFC8414">
          <front>
            <title>OAuth 2.0 Authorization Server Metadata</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <date month="June" year="2018"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client can use to obtain the information needed to interact with an OAuth 2.0 authorization server, including its endpoint locations and authorization server capabilities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8414"/>
          <seriesInfo name="DOI" value="10.17487/RFC8414"/>
        </reference>
        <reference anchor="RFC9700">
          <front>
            <title>Best Current Practice for OAuth 2.0 Security</title>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="A. Labunets" initials="A." surname="Labunets"/>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <date month="January" year="2025"/>
            <abstract>
              <t>This document describes best current security practice for OAuth 2.0. It updates and extends the threat model and security advice given in RFCs 6749, 6750, and 6819 to incorporate practical experiences gathered since OAuth 2.0 was published and covers new threats relevant due to the broader application of OAuth 2.0. Further, it deprecates some modes of operation that are deemed less secure or even insecure.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="240"/>
          <seriesInfo name="RFC" value="9700"/>
          <seriesInfo name="DOI" value="10.17487/RFC9700"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9396">
          <front>
            <title>OAuth 2.0 Rich Authorization Requests</title>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="J. Richer" initials="J." surname="Richer"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <date month="May" year="2023"/>
            <abstract>
              <t>This document specifies a new parameter authorization_details that is used to carry fine-grained authorization data in OAuth messages.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9396"/>
          <seriesInfo name="DOI" value="10.17487/RFC9396"/>
        </reference>
        <reference anchor="OpenID" target="https://openid.net/specs/openid-connect-core-1_0.html">
          <front>
            <title>OpenID Connect Core 1.0</title>
            <author initials="N." surname="Sakimura">
              <organization/>
            </author>
            <author initials="J." surname="Bradley">
              <organization/>
            </author>
            <author initials="M." surname="Jones">
              <organization/>
            </author>
            <author initials="B." surname="de Medeiros">
              <organization/>
            </author>
            <author initials="C." surname="Mortimore">
              <organization/>
            </author>
            <date year="2014" month="November"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 397?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
5atLQKB4JzTovwGAHfjKnEAAAA==

-->

</rfc>
