<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>40935</bug_id>
          
          <creation_ts>2010-06-21 12:57:10 -0700</creation_ts>
          <short_desc>Tightened up some get_by_id_chain* code generation</short_desc>
          <delta_ts>2010-08-04 07:19:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Trivial</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nathan Lawrence">nlawrence</reporter>
          <assigned_to name="Nathan Lawrence">nlawrence</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>nlawrence</cc>
    
    <cc>slewis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>240823</commentid>
    <comment_count>0</comment_count>
    <who name="Nathan Lawrence">nlawrence</who>
    <bug_when>2010-06-21 12:57:10 -0700</bug_when>
    <thetext>Tightened up some get_by_id_chain* code generation in the style of https://bugs.webkit.org/show_bug.cgi?id=30539, and changed code to call accessor functions when it was not necessary to directly access the private variables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240824</commentid>
    <comment_count>1</comment_count>
      <attachid>59275</attachid>
    <who name="Nathan Lawrence">nlawrence</who>
    <bug_when>2010-06-21 12:57:37 -0700</bug_when>
    <thetext>Created attachment 59275
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240837</commentid>
    <comment_count>2</comment_count>
      <attachid>59275</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-06-21 13:12:57 -0700</bug_when>
    <thetext>Comment on attachment 59275
Patch

Looks like the patch you attached is only a ChangeLog :(.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240895</commentid>
    <comment_count>3</comment_count>
      <attachid>59291</attachid>
    <who name="Nathan Lawrence">nlawrence</who>
    <bug_when>2010-06-21 14:32:32 -0700</bug_when>
    <thetext>Created attachment 59291
Patch (now with code!)

ggaren:
You are quite correct.  I did only upload the Changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244836</commentid>
    <comment_count>4</comment_count>
      <attachid>59291</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-30 10:35:13 -0700</bug_when>
    <thetext>Comment on attachment 59291
Patch (now with code!)

Looks good to me, but I should probably let Geoff, Gavin, or Oliver review. I do have a couple of comments.

&gt; -void JIT::testPrototype(Structure* structure, JumpList&amp; failureCases)
&gt; +void JIT::testPrototype(JSValue proto, JumpList&amp; failureCases)

Please use whole words, not abbreviations, in new code. So here it would be prototype, not proto.

&gt; +#if CPU(X86_64)
&gt; +    move(ImmPtr(asCell(proto)-&gt;structure()), regT3);
&gt; +    failureCases.append(branchPtr(NotEqual, AbsoluteAddress(&amp;asCell(proto)-&gt;m_structure), regT3));
&gt; +#else
&gt; +    failureCases.append(branchPtr(NotEqual, AbsoluteAddress(&amp;asCell(proto)-&gt;m_structure), ImmPtr(asCell(proto)-&gt;structure())));
&gt; +#endif

Nothing here makes it clear why X86_64 is an exception. Is this a more efficient code path? If so, could it be done for other platforms that have additional registers? Why doesn&apos;t the branchPtr function do this automatically? I&apos;m sure there&apos;s a reason but I&apos;d like to see a comment in the code, unless it&apos;s obvious to everyone else, and just not me.

I know there was code elsewhere that you moved here that did the same thing without a comment, so it&apos;s really someone else I should be complaining to.

&gt; -        testPrototype(it-&gt;get(), failureCases);
&gt; +        testPrototype(it-&gt;get()-&gt;storedPrototype(), failureCases);

Is there a way to do this without calling get()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244865</commentid>
    <comment_count>5</comment_count>
      <attachid>60138</attachid>
    <who name="Nathan Lawrence">nlawrence</who>
    <bug_when>2010-06-30 11:37:03 -0700</bug_when>
    <thetext>Created attachment 60138
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256959</commentid>
    <comment_count>6</comment_count>
      <attachid>60138</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-27 18:07:50 -0700</bug_when>
    <thetext>Comment on attachment 60138
Patch

Rejecting patch 60138 from commit-queue.

Failed to run &quot;[u&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Oliver Hunt&apos;, u&apos;--force&apos;]&quot; exit_code: 1
Last 500 characters of output:
unk #3 succeeded at 981 (offset 3 lines).
Hunk #4 succeeded at 1051 (offset 3 lines).
1 out of 4 hunks FAILED -- saving rejects to file JavaScriptCore/jit/JITPropertyAccess32_64.cpp.rej
patching file JavaScriptCore/jit/JITPropertyAccess.cpp
Hunk #1 succeeded at 581 with fuzz 1 (offset 1 line).
Hunk #2 FAILED at 604.
Hunk #3 succeeded at 969 (offset 2 lines).
Hunk #4 succeeded at 1039 (offset 2 lines).
1 out of 4 hunks FAILED -- saving rejects to file JavaScriptCore/jit/JITPropertyAccess.cpp.rej

Full output: http://queues.webkit.org/results/3573542</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257728</commentid>
    <comment_count>7</comment_count>
      <attachid>62961</attachid>
    <who name="Nathan Lawrence">nlawrence</who>
    <bug_when>2010-07-29 09:31:20 -0700</bug_when>
    <thetext>Created attachment 62961
Patch

up to date.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257875</commentid>
    <comment_count>8</comment_count>
      <attachid>62961</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-29 14:15:53 -0700</bug_when>
    <thetext>Comment on attachment 62961
Patch

Rejecting patch 62961 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--exit-after-n-failures=1&apos;, &apos;--ignore-tests&apos;, &apos;compositing&apos;, &apos;--quiet&apos;]&quot; exit_code: 1
Running build-dumprendertree
Compiling Java tests
make: Nothing to be done for `default&apos;.
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 20740 test cases.
svg/dom/SVGScriptElement/script-set-href.svg -&gt; failed

Exiting early after 1 failures. 18296 tests run.
514.43s total testing time

18295 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
69 test cases (&lt;1%) had stderr output

Full output: http://queues.webkit.org/results/3616364</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259556</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-08-03 11:07:15 -0700</bug_when>
    <thetext>What&apos;s the status of this patch? Is there a real error, or is the commit queue confused?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259566</commentid>
    <comment_count>10</comment_count>
      <attachid>62961</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-03 11:14:36 -0700</bug_when>
    <thetext>Comment on attachment 62961
Patch

If you believe it was a flaky test, then we should just re-queue it.

The commit-queue is *way* behind right now because leopard was broken all day yesterday and all through the night... in fact, I think the leopard build is still broken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260007</commentid>
    <comment_count>11</comment_count>
      <attachid>62961</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-04 07:15:56 -0700</bug_when>
    <thetext>Comment on attachment 62961
Patch

Your ChangeLog is missing the bug line. :(

I&apos;m landing this by hand using the commit-queue account (to fix a bug in the cq), but please remember the bug line in the future.  webkit-patch upload or prepare-ChangeLog --bug 12345 will generate the proper changelog entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260008</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-04 07:19:55 -0700</bug_when>
    <thetext>Committed r64649: &lt;http://trac.webkit.org/changeset/64649&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59275</attachid>
            <date>2010-06-21 12:57:37 -0700</date>
            <delta_ts>2010-06-21 14:32:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>testPrototype.patch</filename>
            <type>text/plain</type>
            <size>1182</size>
            <attacher name="Nathan Lawrence">nlawrence</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYxNTY1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMDYtMjEgIE5hdGhhbiBM
YXdyZW5jZSAgPG5sYXdyZW5jZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGlnaHRlbmVkIHVwIHNvbWUgZ2V0X2J5X2lkX2NoYWlu
KiBjb2RlIGdlbmVyYXRpb24gaW4gdGhlIHN0eWxlIG9mCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDUzOSwgYW5kIGNoYW5nZWQgY29kZSB0bworICAg
ICAgICBjYWxsIGFjY2Vzc29yIGZ1bmN0aW9ucyB3aGVuIGl0IHdhcyBub3QgbmVjZXNzYXJ5IHRv
IGRpcmVjdGx5IGFjY2VzcworICAgICAgICB0aGUgcHJpdmF0ZSB2YXJpYWJsZXMuCisKKyAgICAg
ICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
SklUOjp0ZXN0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1
dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5
SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENo
YWluKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6dGVzdFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVQdXRCeUlkVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkQ2hhaW5MaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdl
dEJ5SWRDaGFpbik6CisKIDIwMTAtMDYtMTkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4K
</data>
<flag name="review"
          id="46029"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59291</attachid>
            <date>2010-06-21 14:32:32 -0700</date>
            <delta_ts>2010-06-30 11:37:03 -0700</delta_ts>
            <desc>Patch (now with code!)</desc>
            <filename>testPrototype.patch</filename>
            <type>text/plain</type>
            <size>10164</size>
            <attacher name="Nathan Lawrence">nlawrence</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYxNTc3KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKyAyMDEwLTA2LTIxICBOYXRoYW4g
TGF3cmVuY2UgIDxubGF3cmVuY2VAYXBwbGUuY29tPgorCisgICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKyAKKyAgICAgICAgIFRpZ2h0ZW5lZCB1cCBzb21lIGdldF9ieV9pZF9j
aGFpbiogY29kZSBnZW5lcmF0aW9uIGluIHRoZSBzdHlsZSBvZgorICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwNTM5LCBhbmQgY2hhbmdlZCBjb2RlIHRv
CisgICAgICAgICBjYWxsIGFjY2Vzc29yIGZ1bmN0aW9ucyB3aGVuIGl0IHdhcyBub3QgbmVjZXNz
YXJ5IHRvIGRpcmVjdGx5IGFjY2VzcworICAgICAgICAgdGhlIHByaXZhdGUgdmFyaWFibGVzLgor
CisgICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcDoKKyAgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldCk6CisgICAg
ICAgICAoSlNDOjpKSVQ6OnRlc3RQcm90b3R5cGUpOgorICAgICAgICAgKEpTQzo6SklUOjpwcml2
YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KToKKyAgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVHZXRCeUlkQ2hhaW4pOgorICAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82
NC5jcHA6CisgICAgICAgICAoSlNDOjpKSVQ6OnRlc3RQcm90b3R5cGUpOgorICAgICAgICAgKEpT
Qzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KToKKyAgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4pOgorCiAyMDEwLTA2LTIxICBKb2huIFN1bGxp
dmFuICA8c3VsbGl2YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9i
ZW4uCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiA2MTU3NykKKysrIEphdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjkxLDcgKzI5MSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIGVtaXRMb2FkRG91YmxlKHVuc2lnbmVkIGluZGV4LCBGUFJlZ2lzdGVy
SUQgdmFsdWUpOwogICAgICAgICB2b2lkIGVtaXRMb2FkSW50MzJUb0RvdWJsZSh1bnNpZ25lZCBp
bmRleCwgRlBSZWdpc3RlcklEIHZhbHVlKTsKIAotICAgICAgICB2b2lkIHRlc3RQcm90b3R5cGUo
U3RydWN0dXJlKiwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcyk7CisgICAgICAgIHZvaWQgdGVzdFBy
b3RvdHlwZShKU1ZhbHVlLCBKdW1wTGlzdCYgZmFpbHVyZUNhc2VzKTsKIAogI2lmIFVTRShKU1ZB
TFVFMzJfNjQpCiAgICAgICAgIGJvb2wgZ2V0T3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KHVu
c2lnbmVkIG9wMSwgdW5zaWduZWQgb3AyLCB1bnNpZ25lZCYgb3AsIGludDMyX3QmIGNvbnN0YW50
KTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHAJKHJldmlzaW9uIDYxNTc3KQorKysgSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODQsMTIgKzU4NCwxNyBAQCB2b2lkIEpJ
VDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChKU09iamVjCiAgICAgbG9hZDMyKEFkZHJlc3ModGVt
cCwgb2Zmc2V0ICsgNCksIHJlc3VsdFRhZyk7CiB9CiAKLXZvaWQgSklUOjp0ZXN0UHJvdG90eXBl
KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKdW1wTGlzdCYgZmFpbHVyZUNhc2VzKQordm9pZCBKSVQ6
OnRlc3RQcm90b3R5cGUoSlNWYWx1ZSBwcm90bywgSnVtcExpc3QmIGZhaWx1cmVDYXNlcykKIHsK
LSAgICBpZiAoc3RydWN0dXJlLT5tX3Byb3RvdHlwZS5pc051bGwoKSkKKyAgICBpZiAocHJvdG8u
aXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBmYWlsdXJlQ2FzZXMuYXBwZW5k
KGJyYW5jaFB0cihOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKCZhc0NlbGwoc3RydWN0dXJlLT5t
X3Byb3RvdHlwZSktPm1fc3RydWN0dXJlKSwgSW1tUHRyKGFzQ2VsbChzdHJ1Y3R1cmUtPm1fcHJv
dG90eXBlKS0+bV9zdHJ1Y3R1cmUpKSk7CisKKyNpZiBDUFUoWDg2XzY0KQorICAgIG1vdmUoSW1t
UHRyKGFzQ2VsbChwcm90byktPnN0cnVjdHVyZSgpKSwgcmVnVDMpOworICAgIGZhaWx1cmVDYXNl
cy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MoJmFzQ2VsbChwcm90
byktPm1fc3RydWN0dXJlKSwgcmVnVDMpKTsKKyNlbHNlCisgICAgZmFpbHVyZUNhc2VzLmFwcGVu
ZChicmFuY2hQdHIoTm90RXF1YWwsIEFic29sdXRlQWRkcmVzcygmYXNDZWxsKHByb3RvKS0+bV9z
dHJ1Y3R1cmUpLCBJbW1QdHIoYXNDZWxsKHByb3RvKS0+c3RydWN0dXJlKCkpKSk7CisjZW5kaWYK
IH0KIAogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBu
ZXdTdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwg
UmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQpAQCAtNTk5LDExICs2MDQsMTEgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpbwogICAgIEp1bXBMaXN0IGZhaWx1
cmVDYXNlczsKICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdU
MSwgSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJy
YW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgT0JKRUNUX09GRlNFVE9GKEpTQ2VsbCwg
bV9zdHJ1Y3R1cmUpKSwgSW1tUHRyKG9sZFN0cnVjdHVyZSkpKTsKLSAgICB0ZXN0UHJvdG90eXBl
KG9sZFN0cnVjdHVyZSwgZmFpbHVyZUNhc2VzKTsKKyAgICB0ZXN0UHJvdG90eXBlKG9sZFN0cnVj
dHVyZS0+c3RvcmVkUHJvdG90eXBlKCksIGZhaWx1cmVDYXNlcyk7CiAgICAgCiAgICAgLy8gVmVy
aWZ5IHRoYXQgbm90aGluZyBpbiB0aGUgcHJvdG90eXBlIGNoYWluIGhhcyBhIHNldHRlciBmb3Ig
dGhpcyBwcm9wZXJ0eS4gCiAgICAgZm9yIChSZWZQdHI8U3RydWN0dXJlPiogaXQgPSBjaGFpbi0+
aGVhZCgpOyAqaXQ7ICsraXQpCi0gICAgICAgIHRlc3RQcm90b3R5cGUoaXQtPmdldCgpLCBmYWls
dXJlQ2FzZXMpOworICAgICAgICB0ZXN0UHJvdG90eXBlKGl0LT5nZXQoKS0+c3RvcmVkUHJvdG90
eXBlKCksIGZhaWx1cmVDYXNlcyk7CiAgICAgCiAgICAgLy8gUmVhbGxvY2F0ZSBwcm9wZXJ0eSBz
dG9yYWdlIGlmIG5lZWRlZC4KICAgICBDYWxsIGNhbGxUYXJnZXQ7CkBAIC05NjksMjAgKzk3NCwx
MiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0CiAgICAgYnVja2V0
c09mRmFpbC5hcHBlbmQoY2hlY2tTdHJ1Y3R1cmUocmVnVDAsIHN0cnVjdHVyZSkpOwogICAgIAog
ICAgIFN0cnVjdHVyZSogY3VyclN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKLSAgICBSZWZQdHI8U3Ry
dWN0dXJlPiogY2hhaW5FbnRyaWVzID0gY2hhaW4tPmhlYWQoKTsKKyAgICBSZWZQdHI8U3RydWN0
dXJlPiogaXQgPSBjaGFpbi0+aGVhZCgpOwogICAgIEpTT2JqZWN0KiBwcm90b09iamVjdCA9IDA7
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSwgKytpdCkgewogICAgICAgICBwcm90b09iamVj
dCA9IGFzT2JqZWN0KGN1cnJTdHJ1Y3R1cmUtPnByb3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUp
KTsKLSAgICAgICAgY3VyclN0cnVjdHVyZSA9IGNoYWluRW50cmllc1tpXS5nZXQoKTsKLSAgICAg
ICAgCi0gICAgICAgIC8vIENoZWNrIHRoZSBwcm90b3R5cGUgb2JqZWN0J3MgU3RydWN0dXJlIGhh
ZCBub3QgY2hhbmdlZC4KLSAgICAgICAgU3RydWN0dXJlKiogcHJvdG90eXBlU3RydWN0dXJlQWRk
cmVzcyA9ICYocHJvdG9PYmplY3QtPm1fc3RydWN0dXJlKTsKLSNpZiBDUFUoWDg2XzY0KQotICAg
ICAgICBtb3ZlKEltbVB0cihjdXJyU3RydWN0dXJlKSwgcmVnVDMpOwotICAgICAgICBidWNrZXRz
T2ZGYWlsLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFic29sdXRlQWRkcmVzcyhwcm90b3R5
cGVTdHJ1Y3R1cmVBZGRyZXNzKSwgcmVnVDMpKTsKLSNlbHNlCi0gICAgICAgIGJ1Y2tldHNPZkZh
aWwuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKHByb3RvdHlwZVN0
cnVjdHVyZUFkZHJlc3MpLCBJbW1QdHIoY3VyclN0cnVjdHVyZSkpKTsKLSNlbmRpZgorICAgICAg
ICBjdXJyU3RydWN0dXJlID0gaXQtPmdldCgpOworICAgICAgICB0ZXN0UHJvdG90eXBlKHByb3Rv
T2JqZWN0LCBidWNrZXRzT2ZGYWlsKTsKICAgICB9CiAgICAgQVNTRVJUKHByb3RvT2JqZWN0KTsK
ICAgICAKQEAgLTEwNDcsMjAgKzEwNDQsMTIgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZENoYWluKFN0cgogICAgIGJ1Y2tldHNPZkZhaWwuYXBwZW5kKGNoZWNrU3RydWN0dXJlKHJl
Z1QwLCBzdHJ1Y3R1cmUpKTsKICAgICAKICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmUgPSBz
dHJ1Y3R1cmU7Ci0gICAgUmVmUHRyPFN0cnVjdHVyZT4qIGNoYWluRW50cmllcyA9IGNoYWluLT5o
ZWFkKCk7CisgICAgUmVmUHRyPFN0cnVjdHVyZT4qIGl0ID0gY2hhaW4tPmhlYWQoKTsKICAgICBK
U09iamVjdCogcHJvdG9PYmplY3QgPSAwOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBj
b3VudDsgKytpKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2ksICsr
aXQpIHsKICAgICAgICAgcHJvdG9PYmplY3QgPSBhc09iamVjdChjdXJyU3RydWN0dXJlLT5wcm90
b3R5cGVGb3JMb29rdXAoY2FsbEZyYW1lKSk7Ci0gICAgICAgIGN1cnJTdHJ1Y3R1cmUgPSBjaGFp
bkVudHJpZXNbaV0uZ2V0KCk7Ci0gICAgICAgIAotICAgICAgICAvLyBDaGVjayB0aGUgcHJvdG90
eXBlIG9iamVjdCdzIFN0cnVjdHVyZSBoYWQgbm90IGNoYW5nZWQuCi0gICAgICAgIFN0cnVjdHVy
ZSoqIHByb3RvdHlwZVN0cnVjdHVyZUFkZHJlc3MgPSAmKHByb3RvT2JqZWN0LT5tX3N0cnVjdHVy
ZSk7Ci0jaWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgbW92ZShJbW1QdHIoY3VyclN0cnVjdHVyZSks
IHJlZ1QzKTsKLSAgICAgICAgYnVja2V0c09mRmFpbC5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFs
LCBBYnNvbHV0ZUFkZHJlc3MocHJvdG90eXBlU3RydWN0dXJlQWRkcmVzcyksIHJlZ1QzKSk7Ci0j
ZWxzZQotICAgICAgICBidWNrZXRzT2ZGYWlsLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFi
c29sdXRlQWRkcmVzcyhwcm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNzKSwgSW1tUHRyKGN1cnJTdHJ1
Y3R1cmUpKSk7Ci0jZW5kaWYKKyAgICAgICAgY3VyclN0cnVjdHVyZSA9IGl0LT5nZXQoKTsKKyAg
ICAgICAgdGVzdFByb3RvdHlwZShwcm90b09iamVjdCwgYnVja2V0c09mRmFpbCk7CiAgICAgfQog
ICAgIEFTU0VSVChwcm90b09iamVjdCk7CiAgICAgCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDYxNTc3KQorKysgSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgwLDE0ICs1ODAs
MTcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmplYwogICAgIH0gCiB9
CiAKLXZvaWQgSklUOjp0ZXN0UHJvdG90eXBlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKdW1wTGlz
dCYgZmFpbHVyZUNhc2VzKQordm9pZCBKSVQ6OnRlc3RQcm90b3R5cGUoSlNWYWx1ZSBwcm90bywg
SnVtcExpc3QmIGZhaWx1cmVDYXNlcykKIHsKLSAgICBpZiAoc3RydWN0dXJlLT5tX3Byb3RvdHlw
ZS5pc051bGwoKSkKKyAgICBpZiAocHJvdG8uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1vdmUoSW1tUHRyKCZhc0NlbGwoc3RydWN0dXJlLT5tX3Byb3RvdHlwZSktPm1fc3RydWN0
dXJlKSwgcmVnVDIpOwotICAgIG1vdmUoSW1tUHRyKGFzQ2VsbChzdHJ1Y3R1cmUtPm1fcHJvdG90
eXBlKS0+bV9zdHJ1Y3R1cmUpLCByZWdUMyk7Ci0gICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFu
Y2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIpLCByZWdUMykpOworI2lmIENQVShYODZfNjQp
CisgICAgbW92ZShJbW1QdHIoYXNDZWxsKHByb3RvKS0+c3RydWN0dXJlKCkpLCByZWdUMyk7Cisg
ICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFic29sdXRlQWRkcmVz
cygmYXNDZWxsKHByb3RvKS0+bV9zdHJ1Y3R1cmUpLCByZWdUMykpOworI2Vsc2UKKyAgICBmYWls
dXJlQ2FzZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKCZhc0Nl
bGwocHJvdG8pLT5tX3N0cnVjdHVyZSksIEltbVB0cihhc0NlbGwocHJvdG8pLT5zdHJ1Y3R1cmUo
KSkpKTsKKyNlbmRpZgogfQogCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNp
dGlvbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogb2xkU3RydWN0dXJl
LCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNldCwgU3RydWN0dXJl
Q2hhaW4qIGNoYWluLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCkBAIC01OTYsMTEg
KzU5OSwxMSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvCiAgICAg
Ly8gQ2hlY2sgZWF4IGlzIGFuIG9iamVjdCBvZiB0aGUgcmlnaHQgU3RydWN0dXJlLgogICAgIGZh
aWx1cmVDYXNlcy5hcHBlbmQoZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCkpOwogICAgIGZhaWx1
cmVDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBPQkpFQ1Rf
T0ZGU0VUT0YoSlNDZWxsLCBtX3N0cnVjdHVyZSkpLCBJbW1QdHIob2xkU3RydWN0dXJlKSkpOwot
ICAgIHRlc3RQcm90b3R5cGUob2xkU3RydWN0dXJlLCBmYWlsdXJlQ2FzZXMpOworICAgIHRlc3RQ
cm90b3R5cGUob2xkU3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKSwgZmFpbHVyZUNhc2VzKTsK
IAogICAgIC8vIGVjeCA9IGJhc2VPYmplY3QtPm1fc3RydWN0dXJlCiAgICAgZm9yIChSZWZQdHI8
U3RydWN0dXJlPiogaXQgPSBjaGFpbi0+aGVhZCgpOyAqaXQ7ICsraXQpCi0gICAgICAgIHRlc3RQ
cm90b3R5cGUoaXQtPmdldCgpLCBmYWlsdXJlQ2FzZXMpOworICAgICAgICB0ZXN0UHJvdG90eXBl
KGl0LT5nZXQoKS0+c3RvcmVkUHJvdG90eXBlKCksIGZhaWx1cmVDYXNlcyk7CiAKICAgICBDYWxs
IGNhbGxUYXJnZXQ7CiAKQEAgLTk2MCwyMCArOTYzLDEyIEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZUdldEJ5SWRDaGFpbkxpc3QKICAgICBidWNrZXRzT2ZGYWlsLmFwcGVuZChiYXNlT2JqZWN0
Q2hlY2spOwogCiAgICAgU3RydWN0dXJlKiBjdXJyU3RydWN0dXJlID0gc3RydWN0dXJlOwotICAg
IFJlZlB0cjxTdHJ1Y3R1cmU+KiBjaGFpbkVudHJpZXMgPSBjaGFpbi0+aGVhZCgpOworICAgIFJl
ZlB0cjxTdHJ1Y3R1cmU+KiBpdCA9IGNoYWluLT5oZWFkKCk7CiAgICAgSlNPYmplY3QqIHByb3Rv
T2JqZWN0ID0gMDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgKytpLCArK2l0KSB7CiAgICAgICAg
IHByb3RvT2JqZWN0ID0gYXNPYmplY3QoY3VyclN0cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9va3Vw
KGNhbGxGcmFtZSkpOwotICAgICAgICBjdXJyU3RydWN0dXJlID0gY2hhaW5FbnRyaWVzW2ldLmdl
dCgpOwotCi0gICAgICAgIC8vIENoZWNrIHRoZSBwcm90b3R5cGUgb2JqZWN0J3MgU3RydWN0dXJl
IGhhZCBub3QgY2hhbmdlZC4KLSAgICAgICAgU3RydWN0dXJlKiogcHJvdG90eXBlU3RydWN0dXJl
QWRkcmVzcyA9ICYocHJvdG9PYmplY3QtPm1fc3RydWN0dXJlKTsKLSNpZiBDUFUoWDg2XzY0KQot
ICAgICAgICBtb3ZlKEltbVB0cihjdXJyU3RydWN0dXJlKSwgcmVnVDMpOwotICAgICAgICBidWNr
ZXRzT2ZGYWlsLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFic29sdXRlQWRkcmVzcyhwcm90
b3R5cGVTdHJ1Y3R1cmVBZGRyZXNzKSwgcmVnVDMpKTsKLSNlbHNlCi0gICAgICAgIGJ1Y2tldHNP
ZkZhaWwuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKHByb3RvdHlw
ZVN0cnVjdHVyZUFkZHJlc3MpLCBJbW1QdHIoY3VyclN0cnVjdHVyZSkpKTsKLSNlbmRpZgorICAg
ICAgICBjdXJyU3RydWN0dXJlID0gaXQtPmdldCgpOworICAgICAgICB0ZXN0UHJvdG90eXBlKHBy
b3RvT2JqZWN0LCBidWNrZXRzT2ZGYWlsKTsKICAgICB9CiAgICAgQVNTRVJUKHByb3RvT2JqZWN0
KTsKICAgICAKQEAgLTEwMzgsMjAgKzEwMzMsMTIgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
R2V0QnlJZENoYWluKFN0cgogICAgIGJ1Y2tldHNPZkZhaWwuYXBwZW5kKGNoZWNrU3RydWN0dXJl
KHJlZ1QwLCBzdHJ1Y3R1cmUpKTsKIAogICAgIFN0cnVjdHVyZSogY3VyclN0cnVjdHVyZSA9IHN0
cnVjdHVyZTsKLSAgICBSZWZQdHI8U3RydWN0dXJlPiogY2hhaW5FbnRyaWVzID0gY2hhaW4tPmhl
YWQoKTsKKyAgICBSZWZQdHI8U3RydWN0dXJlPiogaXQgPSBjaGFpbi0+aGVhZCgpOwogICAgIEpT
T2JqZWN0KiBwcm90b09iamVjdCA9IDA7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNv
dW50OyArK2kpIHsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSwgKytp
dCkgewogICAgICAgICBwcm90b09iamVjdCA9IGFzT2JqZWN0KGN1cnJTdHJ1Y3R1cmUtPnByb3Rv
dHlwZUZvckxvb2t1cChjYWxsRnJhbWUpKTsKLSAgICAgICAgY3VyclN0cnVjdHVyZSA9IGNoYWlu
RW50cmllc1tpXS5nZXQoKTsKLQotICAgICAgICAvLyBDaGVjayB0aGUgcHJvdG90eXBlIG9iamVj
dCdzIFN0cnVjdHVyZSBoYWQgbm90IGNoYW5nZWQuCi0gICAgICAgIFN0cnVjdHVyZSoqIHByb3Rv
dHlwZVN0cnVjdHVyZUFkZHJlc3MgPSAmKHByb3RvT2JqZWN0LT5tX3N0cnVjdHVyZSk7Ci0jaWYg
Q1BVKFg4Nl82NCkKLSAgICAgICAgbW92ZShJbW1QdHIoY3VyclN0cnVjdHVyZSksIHJlZ1QzKTsK
LSAgICAgICAgYnVja2V0c09mRmFpbC5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBYnNvbHV0
ZUFkZHJlc3MocHJvdG90eXBlU3RydWN0dXJlQWRkcmVzcyksIHJlZ1QzKSk7Ci0jZWxzZQotICAg
ICAgICBidWNrZXRzT2ZGYWlsLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFic29sdXRlQWRk
cmVzcyhwcm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNzKSwgSW1tUHRyKGN1cnJTdHJ1Y3R1cmUpKSk7
Ci0jZW5kaWYKKyAgICAgICAgY3VyclN0cnVjdHVyZSA9IGl0LT5nZXQoKTsKKyAgICAgICAgdGVz
dFByb3RvdHlwZShwcm90b09iamVjdCwgYnVja2V0c09mRmFpbCk7CiAgICAgfQogICAgIEFTU0VS
VChwcm90b09iamVjdCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60138</attachid>
            <date>2010-06-30 11:37:03 -0700</date>
            <delta_ts>2010-07-29 09:31:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>testPrototype.patch</filename>
            <type>text/plain</type>
            <size>10992</size>
            <attacher name="Nathan Lawrence">nlawrence</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyMTkyKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKyAyMDEwLTA2LTIxICBOYXRoYW4g
TGF3cmVuY2UgIDxubGF3cmVuY2VAYXBwbGUuY29tPgorCisgICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKyAKKyAgICAgICAgIFRpZ2h0ZW5lZCB1cCBzb21lIGdldF9ieV9pZF9j
aGFpbiogY29kZSBnZW5lcmF0aW9uIGluIHRoZSBzdHlsZSBvZgorICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwNTM5LCBhbmQgY2hhbmdlZCBjb2RlIHRv
CisgICAgICAgICBjYWxsIGFjY2Vzc29yIGZ1bmN0aW9ucyB3aGVuIGl0IHdhcyBub3QgbmVjZXNz
YXJ5IHRvIGRpcmVjdGx5IGFjY2VzcworICAgICAgICAgdGhlIHByaXZhdGUgdmFyaWFibGVzLgor
CisgICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcDoKKyAgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldCk6CisgICAg
ICAgICAoSlNDOjpKSVQ6OnRlc3RQcm90b3R5cGUpOgorICAgICAgICAgKEpTQzo6SklUOjpwcml2
YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KToKKyAgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVHZXRCeUlkQ2hhaW4pOgorICAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82
NC5jcHA6CisgICAgICAgICAoSlNDOjpKSVQ6OnRlc3RQcm90b3R5cGUpOgorICAgICAgICAgKEpT
Qzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0KToKKyAgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4pOgorCiAyMDEwLTA2LTI5ICBNaWNoYWVsIFNh
Ym9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgpJbmRleDogSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gNjIxOTIpCisrKyBKYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI5MSw3ICsyOTEsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCBlbWl0TG9hZERvdWJsZSh1bnNpZ25lZCBpbmRleCwgRlBSZWdpc3Rl
cklEIHZhbHVlKTsKICAgICAgICAgdm9pZCBlbWl0TG9hZEludDMyVG9Eb3VibGUodW5zaWduZWQg
aW5kZXgsIEZQUmVnaXN0ZXJJRCB2YWx1ZSk7CiAKLSAgICAgICAgdm9pZCB0ZXN0UHJvdG90eXBl
KFN0cnVjdHVyZSosIEp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMpOworICAgICAgICB2b2lkIHRlc3RQ
cm90b3R5cGUoSlNWYWx1ZSwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcyk7CiAKICNpZiBVU0UoSlNW
QUxVRTMyXzY0KQogICAgICAgICBib29sIGdldE9wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludCh1
bnNpZ25lZCBvcDEsIHVuc2lnbmVkIG9wMiwgdW5zaWduZWQmIG9wLCBpbnQzMl90JiBjb25zdGFu
dCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCShyZXZpc2lvbiA2MjE5MikKKysrIEphdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2VzczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTg0LDEyICs1ODQsMjEgQEAgdm9pZCBK
SVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoSlNPYmplYwogICAgIGxvYWQzMihBZGRyZXNzKHRl
bXAsIG9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgcmVz
dWx0VGFnKTsKIH0KIAotdm9pZCBKSVQ6OnRlc3RQcm90b3R5cGUoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMpCit2b2lkIEpJVDo6dGVzdFByb3RvdHlwZShKU1Zh
bHVlIHByb3RvdHlwZSwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcykKIHsKLSAgICBpZiAoc3RydWN0
dXJlLT5tX3Byb3RvdHlwZS5pc051bGwoKSkKKyAgICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKQog
ICAgICAgICByZXR1cm47CiAgICAgCi0gICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFuY2hQdHIo
Tm90RXF1YWwsIEFic29sdXRlQWRkcmVzcygmYXNDZWxsKHN0cnVjdHVyZS0+bV9wcm90b3R5cGUp
LT5tX3N0cnVjdHVyZSksIEltbVB0cihhc0NlbGwoc3RydWN0dXJlLT5tX3Byb3RvdHlwZSktPm1f
c3RydWN0dXJlKSkpOworICAgIC8vIFdlIGhhdmUgYSBzcGVjaWFsIGNhc2UgZm9yIFg4Nl82NCBo
ZXJlIGJlY2F1c2UgWDg2IGluc3RydWN0aW9ucyB0aGF0IHRha2UgaW1tZWRpYXRlIHZhbHVlcwor
ICAgIC8vIG9ubHkgdGFrZSAzMiBiaXQgaW1tZWRpYXRlIHZhbHVlcywgd2hlcmFzIHRoZSBwb2lu
dGVyIGNvbnN0YW50cyB3ZSBhcmUgdXNpbmcgaGVyZSBhcmUgNjQgYml0CisgICAgLy8gdmFsdWVz
LiAgSW4gdGhlIG5vbiBYODZfNjQgY2FzZSwgdGhlIGdlbmVyYXRlZCBjb2RlIGlzIHNsaWdodGx5
IG1vcmUgZWZmaWNpZW50IGJlY2F1c2UgaXQgdXNlcworICAgIC8vIHR3byBsZXNzIGluc3RydWN0
aW9ucyBhbmQgZG9lc24ndCByZXF1aXJlIGFueSBzY3JhdGNoIHJlZ2lzdGVycy4KKyNpZiBDUFUo
WDg2XzY0KQorICAgIG1vdmUoSW1tUHRyKGFzQ2VsbChwcm90b3R5cGUpLT5zdHJ1Y3R1cmUoKSks
IHJlZ1QzKTsKKyAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWJz
b2x1dGVBZGRyZXNzKCZhc0NlbGwocHJvdG90eXBlKS0+bV9zdHJ1Y3R1cmUpLCByZWdUMykpOwor
I2Vsc2UKKyAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWJzb2x1
dGVBZGRyZXNzKCZhc0NlbGwocHJvdG90eXBlKS0+bV9zdHJ1Y3R1cmUpLCBJbW1QdHIoYXNDZWxs
KHByb3RvdHlwZSktPnN0cnVjdHVyZSgpKSkpOworI2VuZGlmCiB9CiAKIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBzaXplX3Qg
Y2FjaGVkT2Zmc2V0LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcykKQEAgLTU5OSwxMSArNjA4LDExIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVB1dEJ5SWRUcmFuc2l0aW8KICAgICBKdW1wTGlzdCBmYWlsdXJlQ2FzZXM7CiAgICAgZmFpbHVy
ZUNhc2VzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpKSk7CiAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFk
ZHJlc3MocmVnVDAsIE9CSkVDVF9PRkZTRVRPRihKU0NlbGwsIG1fc3RydWN0dXJlKSksIEltbVB0
cihvbGRTdHJ1Y3R1cmUpKSk7Ci0gICAgdGVzdFByb3RvdHlwZShvbGRTdHJ1Y3R1cmUsIGZhaWx1
cmVDYXNlcyk7CisgICAgdGVzdFByb3RvdHlwZShvbGRTdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlw
ZSgpLCBmYWlsdXJlQ2FzZXMpOwogICAgIAogICAgIC8vIFZlcmlmeSB0aGF0IG5vdGhpbmcgaW4g
dGhlIHByb3RvdHlwZSBjaGFpbiBoYXMgYSBzZXR0ZXIgZm9yIHRoaXMgcHJvcGVydHkuIAogICAg
IGZvciAoUmVmUHRyPFN0cnVjdHVyZT4qIGl0ID0gY2hhaW4tPmhlYWQoKTsgKml0OyArK2l0KQot
ICAgICAgICB0ZXN0UHJvdG90eXBlKGl0LT5nZXQoKSwgZmFpbHVyZUNhc2VzKTsKKyAgICAgICAg
dGVzdFByb3RvdHlwZSgoKml0KS0+c3RvcmVkUHJvdG90eXBlKCksIGZhaWx1cmVDYXNlcyk7CiAg
ICAgCiAgICAgLy8gUmVhbGxvY2F0ZSBwcm9wZXJ0eSBzdG9yYWdlIGlmIG5lZWRlZC4KICAgICBD
YWxsIGNhbGxUYXJnZXQ7CkBAIC05NjksMjAgKzk3OCwxMiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVHZXRCeUlkQ2hhaW5MaXN0CiAgICAgYnVja2V0c09mRmFpbC5hcHBlbmQoY2hlY2tTdHJ1
Y3R1cmUocmVnVDAsIHN0cnVjdHVyZSkpOwogICAgIAogICAgIFN0cnVjdHVyZSogY3VyclN0cnVj
dHVyZSA9IHN0cnVjdHVyZTsKLSAgICBSZWZQdHI8U3RydWN0dXJlPiogY2hhaW5FbnRyaWVzID0g
Y2hhaW4tPmhlYWQoKTsKKyAgICBSZWZQdHI8U3RydWN0dXJlPiogaXQgPSBjaGFpbi0+aGVhZCgp
OwogICAgIEpTT2JqZWN0KiBwcm90b09iamVjdCA9IDA7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7
ICsraSwgKytpdCkgewogICAgICAgICBwcm90b09iamVjdCA9IGFzT2JqZWN0KGN1cnJTdHJ1Y3R1
cmUtPnByb3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUpKTsKLSAgICAgICAgY3VyclN0cnVjdHVy
ZSA9IGNoYWluRW50cmllc1tpXS5nZXQoKTsKLSAgICAgICAgCi0gICAgICAgIC8vIENoZWNrIHRo
ZSBwcm90b3R5cGUgb2JqZWN0J3MgU3RydWN0dXJlIGhhZCBub3QgY2hhbmdlZC4KLSAgICAgICAg
U3RydWN0dXJlKiogcHJvdG90eXBlU3RydWN0dXJlQWRkcmVzcyA9ICYocHJvdG9PYmplY3QtPm1f
c3RydWN0dXJlKTsKLSNpZiBDUFUoWDg2XzY0KQotICAgICAgICBtb3ZlKEltbVB0cihjdXJyU3Ry
dWN0dXJlKSwgcmVnVDMpOwotICAgICAgICBidWNrZXRzT2ZGYWlsLmFwcGVuZChicmFuY2hQdHIo
Tm90RXF1YWwsIEFic29sdXRlQWRkcmVzcyhwcm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNzKSwgcmVn
VDMpKTsKLSNlbHNlCi0gICAgICAgIGJ1Y2tldHNPZkZhaWwuYXBwZW5kKGJyYW5jaFB0cihOb3RF
cXVhbCwgQWJzb2x1dGVBZGRyZXNzKHByb3RvdHlwZVN0cnVjdHVyZUFkZHJlc3MpLCBJbW1QdHIo
Y3VyclN0cnVjdHVyZSkpKTsKLSNlbmRpZgorICAgICAgICBjdXJyU3RydWN0dXJlID0gaXQtPmdl
dCgpOworICAgICAgICB0ZXN0UHJvdG90eXBlKHByb3RvT2JqZWN0LCBidWNrZXRzT2ZGYWlsKTsK
ICAgICB9CiAgICAgQVNTRVJUKHByb3RvT2JqZWN0KTsKICAgICAKQEAgLTEwNDcsMjAgKzEwNDgs
MTIgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0cgogICAgIGJ1Y2tl
dHNPZkZhaWwuYXBwZW5kKGNoZWNrU3RydWN0dXJlKHJlZ1QwLCBzdHJ1Y3R1cmUpKTsKICAgICAK
ICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7Ci0gICAgUmVmUHRyPFN0
cnVjdHVyZT4qIGNoYWluRW50cmllcyA9IGNoYWluLT5oZWFkKCk7CisgICAgUmVmUHRyPFN0cnVj
dHVyZT4qIGl0ID0gY2hhaW4tPmhlYWQoKTsKICAgICBKU09iamVjdCogcHJvdG9PYmplY3QgPSAw
OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2ksICsraXQpIHsKICAgICAgICAgcHJvdG9PYmpl
Y3QgPSBhc09iamVjdChjdXJyU3RydWN0dXJlLT5wcm90b3R5cGVGb3JMb29rdXAoY2FsbEZyYW1l
KSk7Ci0gICAgICAgIGN1cnJTdHJ1Y3R1cmUgPSBjaGFpbkVudHJpZXNbaV0uZ2V0KCk7Ci0gICAg
ICAgIAotICAgICAgICAvLyBDaGVjayB0aGUgcHJvdG90eXBlIG9iamVjdCdzIFN0cnVjdHVyZSBo
YWQgbm90IGNoYW5nZWQuCi0gICAgICAgIFN0cnVjdHVyZSoqIHByb3RvdHlwZVN0cnVjdHVyZUFk
ZHJlc3MgPSAmKHByb3RvT2JqZWN0LT5tX3N0cnVjdHVyZSk7Ci0jaWYgQ1BVKFg4Nl82NCkKLSAg
ICAgICAgbW92ZShJbW1QdHIoY3VyclN0cnVjdHVyZSksIHJlZ1QzKTsKLSAgICAgICAgYnVja2V0
c09mRmFpbC5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MocHJvdG90
eXBlU3RydWN0dXJlQWRkcmVzcyksIHJlZ1QzKSk7Ci0jZWxzZQotICAgICAgICBidWNrZXRzT2ZG
YWlsLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFic29sdXRlQWRkcmVzcyhwcm90b3R5cGVT
dHJ1Y3R1cmVBZGRyZXNzKSwgSW1tUHRyKGN1cnJTdHJ1Y3R1cmUpKSk7Ci0jZW5kaWYKKyAgICAg
ICAgY3VyclN0cnVjdHVyZSA9IGl0LT5nZXQoKTsKKyAgICAgICAgdGVzdFByb3RvdHlwZShwcm90
b09iamVjdCwgYnVja2V0c09mRmFpbCk7CiAgICAgfQogICAgIEFTU0VSVChwcm90b09iamVjdCk7
CiAgICAgCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJl
dmlzaW9uIDYyMTkyKQorKysgSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTgwLDE0ICs1ODAsMjEgQEAgdm9pZCBKSVQ6OmNvbXBpbGVH
ZXREaXJlY3RPZmZzZXQoSlNPYmplYwogICAgIH0gCiB9CiAKLXZvaWQgSklUOjp0ZXN0UHJvdG90
eXBlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKdW1wTGlzdCYgZmFpbHVyZUNhc2VzKQordm9pZCBK
SVQ6OnRlc3RQcm90b3R5cGUoSlNWYWx1ZSBwcm90b3R5cGUsIEp1bXBMaXN0JiBmYWlsdXJlQ2Fz
ZXMpCiB7Ci0gICAgaWYgKHN0cnVjdHVyZS0+bV9wcm90b3R5cGUuaXNOdWxsKCkpCisgICAgaWYg
KHByb3RvdHlwZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbW92ZShJbW1QdHIo
JmFzQ2VsbChzdHJ1Y3R1cmUtPm1fcHJvdG90eXBlKS0+bV9zdHJ1Y3R1cmUpLCByZWdUMik7Ci0g
ICAgbW92ZShJbW1QdHIoYXNDZWxsKHN0cnVjdHVyZS0+bV9wcm90b3R5cGUpLT5tX3N0cnVjdHVy
ZSksIHJlZ1QzKTsKLSAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwg
QWRkcmVzcyhyZWdUMiksIHJlZ1QzKSk7CisgICAgLy8gV2UgaGF2ZSBhIHNwZWNpYWwgY2FzZSBm
b3IgWDg2XzY0IGhlcmUgYmVjYXVzZSBYODYgaW5zdHJ1Y3Rpb25zIHRoYXQgdGFrZSBpbW1lZGlh
dGUgdmFsdWVzCisgICAgLy8gb25seSB0YWtlIDMyIGJpdCBpbW1lZGlhdGUgdmFsdWVzLCB3aGVy
YXMgdGhlIHBvaW50ZXIgY29uc3RhbnRzIHdlIGFyZSB1c2luZyBoZXJlIGFyZSA2NCBiaXQKKyAg
ICAvLyB2YWx1ZXMuICBJbiB0aGUgbm9uIFg4Nl82NCBjYXNlLCB0aGUgZ2VuZXJhdGVkIGNvZGUg
aXMgc2xpZ2h0bHkgbW9yZSBlZmZpY2llbnQgYmVjYXVzZSBpdCB1c2VzCisgICAgLy8gdHdvIGxl
c3MgaW5zdHJ1Y3Rpb25zIGFuZCBkb2Vzbid0IHJlcXVpcmUgYW55IHNjcmF0Y2ggcmVnaXN0ZXJz
LgorI2lmIENQVShYODZfNjQpCisgICAgbW92ZShJbW1QdHIoYXNDZWxsKHByb3RvdHlwZSktPnN0
cnVjdHVyZSgpKSwgcmVnVDMpOworICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5v
dEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MoJmFzQ2VsbChwcm90b3R5cGUpLT5tX3N0cnVjdHVyZSks
IHJlZ1QzKSk7CisjZWxzZQorICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVx
dWFsLCBBYnNvbHV0ZUFkZHJlc3MoJmFzQ2VsbChwcm90b3R5cGUpLT5tX3N0cnVjdHVyZSksIElt
bVB0cihhc0NlbGwocHJvdG90eXBlKS0+c3RydWN0dXJlKCkpKSk7CisjZW5kaWYKIH0KIAogdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1
cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRk
cmVzc1B0ciByZXR1cm5BZGRyZXNzKQpAQCAtNTk2LDExICs2MDMsMTEgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpbwogICAgIC8vIENoZWNrIGVheCBpcyBhbiBvYmpl
Y3Qgb2YgdGhlIHJpZ2h0IFN0cnVjdHVyZS4KICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGVtaXRK
dW1wSWZOb3RKU0NlbGwocmVnVDApKTsKICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5jaFB0
cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgT0JKRUNUX09GRlNFVE9GKEpTQ2VsbCwgbV9zdHJ1
Y3R1cmUpKSwgSW1tUHRyKG9sZFN0cnVjdHVyZSkpKTsKLSAgICB0ZXN0UHJvdG90eXBlKG9sZFN0
cnVjdHVyZSwgZmFpbHVyZUNhc2VzKTsKKyAgICB0ZXN0UHJvdG90eXBlKG9sZFN0cnVjdHVyZS0+
c3RvcmVkUHJvdG90eXBlKCksIGZhaWx1cmVDYXNlcyk7CiAKICAgICAvLyBlY3ggPSBiYXNlT2Jq
ZWN0LT5tX3N0cnVjdHVyZQogICAgIGZvciAoUmVmUHRyPFN0cnVjdHVyZT4qIGl0ID0gY2hhaW4t
PmhlYWQoKTsgKml0OyArK2l0KQotICAgICAgICB0ZXN0UHJvdG90eXBlKGl0LT5nZXQoKSwgZmFp
bHVyZUNhc2VzKTsKKyAgICAgICAgdGVzdFByb3RvdHlwZSgoKml0KS0+c3RvcmVkUHJvdG90eXBl
KCksIGZhaWx1cmVDYXNlcyk7CiAKICAgICBDYWxsIGNhbGxUYXJnZXQ7CiAKQEAgLTk2MCwyMCAr
OTY3LDEyIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QKICAgICBi
dWNrZXRzT2ZGYWlsLmFwcGVuZChiYXNlT2JqZWN0Q2hlY2spOwogCiAgICAgU3RydWN0dXJlKiBj
dXJyU3RydWN0dXJlID0gc3RydWN0dXJlOwotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+KiBjaGFpbkVu
dHJpZXMgPSBjaGFpbi0+aGVhZCgpOworICAgIFJlZlB0cjxTdHJ1Y3R1cmU+KiBpdCA9IGNoYWlu
LT5oZWFkKCk7CiAgICAgSlNPYmplY3QqIHByb3RvT2JqZWN0ID0gMDsKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBjb3VudDsgKytpLCArK2l0KSB7CiAgICAgICAgIHByb3RvT2JqZWN0ID0gYXNPYmplY3QoY3Vy
clN0cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSkpOwotICAgICAgICBjdXJy
U3RydWN0dXJlID0gY2hhaW5FbnRyaWVzW2ldLmdldCgpOwotCi0gICAgICAgIC8vIENoZWNrIHRo
ZSBwcm90b3R5cGUgb2JqZWN0J3MgU3RydWN0dXJlIGhhZCBub3QgY2hhbmdlZC4KLSAgICAgICAg
U3RydWN0dXJlKiogcHJvdG90eXBlU3RydWN0dXJlQWRkcmVzcyA9ICYocHJvdG9PYmplY3QtPm1f
c3RydWN0dXJlKTsKLSNpZiBDUFUoWDg2XzY0KQotICAgICAgICBtb3ZlKEltbVB0cihjdXJyU3Ry
dWN0dXJlKSwgcmVnVDMpOwotICAgICAgICBidWNrZXRzT2ZGYWlsLmFwcGVuZChicmFuY2hQdHIo
Tm90RXF1YWwsIEFic29sdXRlQWRkcmVzcyhwcm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNzKSwgcmVn
VDMpKTsKLSNlbHNlCi0gICAgICAgIGJ1Y2tldHNPZkZhaWwuYXBwZW5kKGJyYW5jaFB0cihOb3RF
cXVhbCwgQWJzb2x1dGVBZGRyZXNzKHByb3RvdHlwZVN0cnVjdHVyZUFkZHJlc3MpLCBJbW1QdHIo
Y3VyclN0cnVjdHVyZSkpKTsKLSNlbmRpZgorICAgICAgICBjdXJyU3RydWN0dXJlID0gaXQtPmdl
dCgpOworICAgICAgICB0ZXN0UHJvdG90eXBlKHByb3RvT2JqZWN0LCBidWNrZXRzT2ZGYWlsKTsK
ICAgICB9CiAgICAgQVNTRVJUKHByb3RvT2JqZWN0KTsKICAgICAKQEAgLTEwMzgsMjAgKzEwMzcs
MTIgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0cgogICAgIGJ1Y2tl
dHNPZkZhaWwuYXBwZW5kKGNoZWNrU3RydWN0dXJlKHJlZ1QwLCBzdHJ1Y3R1cmUpKTsKIAogICAg
IFN0cnVjdHVyZSogY3VyclN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKLSAgICBSZWZQdHI8U3RydWN0
dXJlPiogY2hhaW5FbnRyaWVzID0gY2hhaW4tPmhlYWQoKTsKKyAgICBSZWZQdHI8U3RydWN0dXJl
PiogaXQgPSBjaGFpbi0+aGVhZCgpOwogICAgIEpTT2JqZWN0KiBwcm90b09iamVjdCA9IDA7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSwgKytpdCkgewogICAgICAgICBwcm90b09iamVjdCA9
IGFzT2JqZWN0KGN1cnJTdHJ1Y3R1cmUtPnByb3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUpKTsK
LSAgICAgICAgY3VyclN0cnVjdHVyZSA9IGNoYWluRW50cmllc1tpXS5nZXQoKTsKLQotICAgICAg
ICAvLyBDaGVjayB0aGUgcHJvdG90eXBlIG9iamVjdCdzIFN0cnVjdHVyZSBoYWQgbm90IGNoYW5n
ZWQuCi0gICAgICAgIFN0cnVjdHVyZSoqIHByb3RvdHlwZVN0cnVjdHVyZUFkZHJlc3MgPSAmKHBy
b3RvT2JqZWN0LT5tX3N0cnVjdHVyZSk7Ci0jaWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgbW92ZShJ
bW1QdHIoY3VyclN0cnVjdHVyZSksIHJlZ1QzKTsKLSAgICAgICAgYnVja2V0c09mRmFpbC5hcHBl
bmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MocHJvdG90eXBlU3RydWN0dXJl
QWRkcmVzcyksIHJlZ1QzKSk7Ci0jZWxzZQotICAgICAgICBidWNrZXRzT2ZGYWlsLmFwcGVuZChi
cmFuY2hQdHIoTm90RXF1YWwsIEFic29sdXRlQWRkcmVzcyhwcm90b3R5cGVTdHJ1Y3R1cmVBZGRy
ZXNzKSwgSW1tUHRyKGN1cnJTdHJ1Y3R1cmUpKSk7Ci0jZW5kaWYKKyAgICAgICAgY3VyclN0cnVj
dHVyZSA9IGl0LT5nZXQoKTsKKyAgICAgICAgdGVzdFByb3RvdHlwZShwcm90b09iamVjdCwgYnVj
a2V0c09mRmFpbCk7CiAgICAgfQogICAgIEFTU0VSVChwcm90b09iamVjdCk7CiAK
</data>
<flag name="review"
          id="47441"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="51003"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62961</attachid>
            <date>2010-07-29 09:31:20 -0700</date>
            <delta_ts>2010-08-04 07:15:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>testPrototype.patch</filename>
            <type>text/plain</type>
            <size>11053</size>
            <attacher name="Nathan Lawrence">nlawrence</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0MjA4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMDctMjggIE5hdGhhbiBM
YXdyZW5jZSAgPG5sYXdyZW5jZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGlnaHRlbmVkIHVwIHNvbWUgZ2V0X2J5X2lkX2NoYWlu
KiBjb2RlIGdlbmVyYXRpb24gaW4gdGhlIHN0eWxlIG9mCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDUzOSwgYW5kIGNoYW5nZWQgY29kZSB0bworICAg
ICAgICBjYWxsIGFjY2Vzc29yIGZ1bmN0aW9ucyB3aGVuIGl0IHdhcyBub3QgbmVjZXNzYXJ5IHRv
IGRpcmVjdGx5IGFjY2VzcworICAgICAgICB0aGUgcHJpdmF0ZSB2YXJpYWJsZXMuCisKKyAgICAg
ICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0RGlyZWN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
SklUOjp0ZXN0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1
dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5
SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENo
YWluKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6dGVzdFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVQdXRCeUlkVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkQ2hhaW5MaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdl
dEJ5SWRDaGFpbik6CisKIDIwMTAtMDctMjcgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CShyZXZpc2lvbiA2NDIwOCkKKysrIEphdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjk1LDcgKzI5NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVt
aXRMb2FkRG91YmxlKHVuc2lnbmVkIGluZGV4LCBGUFJlZ2lzdGVySUQgdmFsdWUpOwogICAgICAg
ICB2b2lkIGVtaXRMb2FkSW50MzJUb0RvdWJsZSh1bnNpZ25lZCBpbmRleCwgRlBSZWdpc3RlcklE
IHZhbHVlKTsKIAotICAgICAgICB2b2lkIHRlc3RQcm90b3R5cGUoU3RydWN0dXJlKiwgSnVtcExp
c3QmIGZhaWx1cmVDYXNlcyk7CisgICAgICAgIHZvaWQgdGVzdFByb3RvdHlwZShKU1ZhbHVlLCBK
dW1wTGlzdCYgZmFpbHVyZUNhc2VzKTsKIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAg
IGJvb2wgZ2V0T3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KHVuc2lnbmVkIG9wMSwgdW5zaWdu
ZWQgb3AyLCB1bnNpZ25lZCYgb3AsIGludDMyX3QmIGNvbnN0YW50KTsKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDY0MjA4
KQorKysgSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01ODUsMTIgKzU4NSwyMSBAQCB2b2lkIEpJVDo6Y29tcGlsZUdldERpcmVj
dE9mZnNldChKU09iamVjCiAgICAgbG9hZDMyKEFkZHJlc3ModGVtcCwgb2Zmc2V0ICsgT0JKRUNU
X09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZXN1bHRUYWcpOwogfQogCi12b2lk
IEpJVDo6dGVzdFByb3RvdHlwZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSnVtcExpc3QmIGZhaWx1
cmVDYXNlcykKK3ZvaWQgSklUOjp0ZXN0UHJvdG90eXBlKEpTVmFsdWUgcHJvdG90eXBlLCBKdW1w
TGlzdCYgZmFpbHVyZUNhc2VzKQogewotICAgIGlmIChzdHJ1Y3R1cmUtPm1fcHJvdG90eXBlLmlz
TnVsbCgpKQorICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWJzb2x1dGVB
ZGRyZXNzKCZhc0NlbGwoc3RydWN0dXJlLT5tX3Byb3RvdHlwZSktPm1fc3RydWN0dXJlKSwgSW1t
UHRyKGFzQ2VsbChzdHJ1Y3R1cmUtPm1fcHJvdG90eXBlKS0+bV9zdHJ1Y3R1cmUpKSk7CisgICAg
Ly8gV2UgaGF2ZSBhIHNwZWNpYWwgY2FzZSBmb3IgWDg2XzY0IGhlcmUgYmVjYXVzZSBYODYgaW5z
dHJ1Y3Rpb25zIHRoYXQgdGFrZSBpbW1lZGlhdGUgdmFsdWVzCisgICAgLy8gb25seSB0YWtlIDMy
IGJpdCBpbW1lZGlhdGUgdmFsdWVzLCB3aGVyYXMgdGhlIHBvaW50ZXIgY29uc3RhbnRzIHdlIGFy
ZSB1c2luZyBoZXJlIGFyZSA2NCBiaXQKKyAgICAvLyB2YWx1ZXMuICBJbiB0aGUgbm9uIFg4Nl82
NCBjYXNlLCB0aGUgZ2VuZXJhdGVkIGNvZGUgaXMgc2xpZ2h0bHkgbW9yZSBlZmZpY2llbnQgYmVj
YXVzZSBpdCB1c2VzCisgICAgLy8gdHdvIGxlc3MgaW5zdHJ1Y3Rpb25zIGFuZCBkb2Vzbid0IHJl
cXVpcmUgYW55IHNjcmF0Y2ggcmVnaXN0ZXJzLgorI2lmIENQVShYODZfNjQpCisgICAgbW92ZShJ
bW1QdHIoYXNDZWxsKHByb3RvdHlwZSktPnN0cnVjdHVyZSgpKSwgcmVnVDMpOworICAgIGZhaWx1
cmVDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MoJmFzQ2Vs
bChwcm90b3R5cGUpLT5tX3N0cnVjdHVyZSksIHJlZ1QzKSk7CisjZWxzZQorICAgIGZhaWx1cmVD
YXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MoJmFzQ2VsbChw
cm90b3R5cGUpLT5tX3N0cnVjdHVyZSksIEltbVB0cihhc0NlbGwocHJvdG90eXBlKS0+c3RydWN0
dXJlKCkpKSk7CisjZW5kaWYKIH0KIAogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRy
YW5zaXRpb24oU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqIG9sZFN0cnVj
dHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVj
dHVyZUNoYWluKiBjaGFpbiwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBib29sIGRp
cmVjdCkKQEAgLTYwMCwxMiArNjA5LDEyIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5
SWRUcmFuc2l0aW8KICAgICBKdW1wTGlzdCBmYWlsdXJlQ2FzZXM7CiAgICAgZmFpbHVyZUNhc2Vz
LmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIEltbTMyKEpTVmFsdWU6OkNlbGxUYWcp
KSk7CiAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Mo
cmVnVDAsIE9CSkVDVF9PRkZTRVRPRihKU0NlbGwsIG1fc3RydWN0dXJlKSksIEltbVB0cihvbGRT
dHJ1Y3R1cmUpKSk7Ci0gICAgdGVzdFByb3RvdHlwZShvbGRTdHJ1Y3R1cmUsIGZhaWx1cmVDYXNl
cyk7CisgICAgdGVzdFByb3RvdHlwZShvbGRTdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZSgpLCBm
YWlsdXJlQ2FzZXMpOwogICAgIAogICAgIGlmICghZGlyZWN0KSB7CiAgICAgICAgIC8vIFZlcmlm
eSB0aGF0IG5vdGhpbmcgaW4gdGhlIHByb3RvdHlwZSBjaGFpbiBoYXMgYSBzZXR0ZXIgZm9yIHRo
aXMgcHJvcGVydHkuIAogICAgICAgICBmb3IgKFJlZlB0cjxTdHJ1Y3R1cmU+KiBpdCA9IGNoYWlu
LT5oZWFkKCk7ICppdDsgKytpdCkKLSAgICAgICAgICAgIHRlc3RQcm90b3R5cGUoaXQtPmdldCgp
LCBmYWlsdXJlQ2FzZXMpOworICAgICAgICAgICAgdGVzdFByb3RvdHlwZSgoKml0KS0+c3RvcmVk
UHJvdG90eXBlKCksIGZhaWx1cmVDYXNlcyk7CiAgICAgfQogCiAgICAgLy8gUmVhbGxvY2F0ZSBw
cm9wZXJ0eSBzdG9yYWdlIGlmIG5lZWRlZC4KQEAgLTk3MiwyMCArOTgxLDEyIEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QKICAgICBidWNrZXRzT2ZGYWlsLmFwcGVu
ZChjaGVja1N0cnVjdHVyZShyZWdUMCwgc3RydWN0dXJlKSk7CiAgICAgCiAgICAgU3RydWN0dXJl
KiBjdXJyU3RydWN0dXJlID0gc3RydWN0dXJlOwotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+KiBjaGFp
bkVudHJpZXMgPSBjaGFpbi0+aGVhZCgpOworICAgIFJlZlB0cjxTdHJ1Y3R1cmU+KiBpdCA9IGNo
YWluLT5oZWFkKCk7CiAgICAgSlNPYmplY3QqIHByb3RvT2JqZWN0ID0gMDsKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBjb3VudDsgKytpLCArK2l0KSB7CiAgICAgICAgIHByb3RvT2JqZWN0ID0gYXNPYmplY3Qo
Y3VyclN0cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSkpOwotICAgICAgICBj
dXJyU3RydWN0dXJlID0gY2hhaW5FbnRyaWVzW2ldLmdldCgpOwotICAgICAgICAKLSAgICAgICAg
Ly8gQ2hlY2sgdGhlIHByb3RvdHlwZSBvYmplY3QncyBTdHJ1Y3R1cmUgaGFkIG5vdCBjaGFuZ2Vk
LgotICAgICAgICBTdHJ1Y3R1cmUqKiBwcm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNzID0gJihwcm90
b09iamVjdC0+bV9zdHJ1Y3R1cmUpOwotI2lmIENQVShYODZfNjQpCi0gICAgICAgIG1vdmUoSW1t
UHRyKGN1cnJTdHJ1Y3R1cmUpLCByZWdUMyk7Ci0gICAgICAgIGJ1Y2tldHNPZkZhaWwuYXBwZW5k
KGJyYW5jaFB0cihOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKHByb3RvdHlwZVN0cnVjdHVyZUFk
ZHJlc3MpLCByZWdUMykpOwotI2Vsc2UKLSAgICAgICAgYnVja2V0c09mRmFpbC5hcHBlbmQoYnJh
bmNoUHRyKE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MocHJvdG90eXBlU3RydWN0dXJlQWRkcmVz
cyksIEltbVB0cihjdXJyU3RydWN0dXJlKSkpOwotI2VuZGlmCisgICAgICAgIGN1cnJTdHJ1Y3R1
cmUgPSBpdC0+Z2V0KCk7CisgICAgICAgIHRlc3RQcm90b3R5cGUocHJvdG9PYmplY3QsIGJ1Y2tl
dHNPZkZhaWwpOwogICAgIH0KICAgICBBU1NFUlQocHJvdG9PYmplY3QpOwogICAgIApAQCAtMTA1
MCwyMCArMTA1MSwxMiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3Ry
CiAgICAgYnVja2V0c09mRmFpbC5hcHBlbmQoY2hlY2tTdHJ1Y3R1cmUocmVnVDAsIHN0cnVjdHVy
ZSkpOwogICAgIAogICAgIFN0cnVjdHVyZSogY3VyclN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKLSAg
ICBSZWZQdHI8U3RydWN0dXJlPiogY2hhaW5FbnRyaWVzID0gY2hhaW4tPmhlYWQoKTsKKyAgICBS
ZWZQdHI8U3RydWN0dXJlPiogaXQgPSBjaGFpbi0+aGVhZCgpOwogICAgIEpTT2JqZWN0KiBwcm90
b09iamVjdCA9IDA7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSwgKytpdCkgewogICAgICAg
ICBwcm90b09iamVjdCA9IGFzT2JqZWN0KGN1cnJTdHJ1Y3R1cmUtPnByb3RvdHlwZUZvckxvb2t1
cChjYWxsRnJhbWUpKTsKLSAgICAgICAgY3VyclN0cnVjdHVyZSA9IGNoYWluRW50cmllc1tpXS5n
ZXQoKTsKLSAgICAgICAgCi0gICAgICAgIC8vIENoZWNrIHRoZSBwcm90b3R5cGUgb2JqZWN0J3Mg
U3RydWN0dXJlIGhhZCBub3QgY2hhbmdlZC4KLSAgICAgICAgU3RydWN0dXJlKiogcHJvdG90eXBl
U3RydWN0dXJlQWRkcmVzcyA9ICYocHJvdG9PYmplY3QtPm1fc3RydWN0dXJlKTsKLSNpZiBDUFUo
WDg2XzY0KQotICAgICAgICBtb3ZlKEltbVB0cihjdXJyU3RydWN0dXJlKSwgcmVnVDMpOwotICAg
ICAgICBidWNrZXRzT2ZGYWlsLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFic29sdXRlQWRk
cmVzcyhwcm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNzKSwgcmVnVDMpKTsKLSNlbHNlCi0gICAgICAg
IGJ1Y2tldHNPZkZhaWwuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNz
KHByb3RvdHlwZVN0cnVjdHVyZUFkZHJlc3MpLCBJbW1QdHIoY3VyclN0cnVjdHVyZSkpKTsKLSNl
bmRpZgorICAgICAgICBjdXJyU3RydWN0dXJlID0gaXQtPmdldCgpOworICAgICAgICB0ZXN0UHJv
dG90eXBlKHByb3RvT2JqZWN0LCBidWNrZXRzT2ZGYWlsKTsKICAgICB9CiAgICAgQVNTRVJUKHBy
b3RvT2JqZWN0KTsKICAgICAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcAkocmV2aXNpb24gNjQyMDgpCisrKyBKYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODIsMTQgKzU4MiwyMSBAQCB2b2lkIEpJ
VDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChKU09iamVjCiAgICAgfSAKIH0KIAotdm9pZCBKSVQ6
OnRlc3RQcm90b3R5cGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEp1bXBMaXN0JiBmYWlsdXJlQ2Fz
ZXMpCit2b2lkIEpJVDo6dGVzdFByb3RvdHlwZShKU1ZhbHVlIHByb3RvdHlwZSwgSnVtcExpc3Qm
IGZhaWx1cmVDYXNlcykKIHsKLSAgICBpZiAoc3RydWN0dXJlLT5tX3Byb3RvdHlwZS5pc051bGwo
KSkKKyAgICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
b3ZlKEltbVB0cigmYXNDZWxsKHN0cnVjdHVyZS0+bV9wcm90b3R5cGUpLT5tX3N0cnVjdHVyZSks
IHJlZ1QyKTsKLSAgICBtb3ZlKEltbVB0cihhc0NlbGwoc3RydWN0dXJlLT5tX3Byb3RvdHlwZSkt
Pm1fc3RydWN0dXJlKSwgcmVnVDMpOwotICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoUHRy
KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyKSwgcmVnVDMpKTsKKyAgICAvLyBXZSBoYXZlIGEgc3Bl
Y2lhbCBjYXNlIGZvciBYODZfNjQgaGVyZSBiZWNhdXNlIFg4NiBpbnN0cnVjdGlvbnMgdGhhdCB0
YWtlIGltbWVkaWF0ZSB2YWx1ZXMKKyAgICAvLyBvbmx5IHRha2UgMzIgYml0IGltbWVkaWF0ZSB2
YWx1ZXMsIHdoZXJhcyB0aGUgcG9pbnRlciBjb25zdGFudHMgd2UgYXJlIHVzaW5nIGhlcmUgYXJl
IDY0IGJpdAorICAgIC8vIHZhbHVlcy4gIEluIHRoZSBub24gWDg2XzY0IGNhc2UsIHRoZSBnZW5l
cmF0ZWQgY29kZSBpcyBzbGlnaHRseSBtb3JlIGVmZmljaWVudCBiZWNhdXNlIGl0IHVzZXMKKyAg
ICAvLyB0d28gbGVzcyBpbnN0cnVjdGlvbnMgYW5kIGRvZXNuJ3QgcmVxdWlyZSBhbnkgc2NyYXRj
aCByZWdpc3RlcnMuCisjaWYgQ1BVKFg4Nl82NCkKKyAgICBtb3ZlKEltbVB0cihhc0NlbGwocHJv
dG90eXBlKS0+c3RydWN0dXJlKCkpLCByZWdUMyk7CisgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChi
cmFuY2hQdHIoTm90RXF1YWwsIEFic29sdXRlQWRkcmVzcygmYXNDZWxsKHByb3RvdHlwZSktPm1f
c3RydWN0dXJlKSwgcmVnVDMpKTsKKyNlbHNlCisgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFu
Y2hQdHIoTm90RXF1YWwsIEFic29sdXRlQWRkcmVzcygmYXNDZWxsKHByb3RvdHlwZSktPm1fc3Ry
dWN0dXJlKSwgSW1tUHRyKGFzQ2VsbChwcm90b3R5cGUpLT5zdHJ1Y3R1cmUoKSkpKTsKKyNlbmRp
ZgogfQogCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUq
IG5ld1N0cnVjdHVyZSwgc2l6ZV90IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlQ2hhaW4qIGNoYWlu
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIGJvb2wgZGlyZWN0KQpAQCAtNTk4LDEy
ICs2MDUsMTIgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpbwogICAg
IC8vIENoZWNrIGVheCBpcyBhbiBvYmplY3Qgb2YgdGhlIHJpZ2h0IFN0cnVjdHVyZS4KICAgICBm
YWlsdXJlQ2FzZXMuYXBwZW5kKGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApKTsKICAgICBmYWls
dXJlQ2FzZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgT0JKRUNU
X09GRlNFVE9GKEpTQ2VsbCwgbV9zdHJ1Y3R1cmUpKSwgSW1tUHRyKG9sZFN0cnVjdHVyZSkpKTsK
LSAgICB0ZXN0UHJvdG90eXBlKG9sZFN0cnVjdHVyZSwgZmFpbHVyZUNhc2VzKTsKKyAgICB0ZXN0
UHJvdG90eXBlKG9sZFN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCksIGZhaWx1cmVDYXNlcyk7
CiAKICAgICAvLyBlY3ggPSBiYXNlT2JqZWN0LT5tX3N0cnVjdHVyZQogICAgIGlmICghZGlyZWN0
KSB7CiAgICAgICAgIGZvciAoUmVmUHRyPFN0cnVjdHVyZT4qIGl0ID0gY2hhaW4tPmhlYWQoKTsg
Kml0OyArK2l0KQotICAgICAgICAgICAgdGVzdFByb3RvdHlwZShpdC0+Z2V0KCksIGZhaWx1cmVD
YXNlcyk7CisgICAgICAgICAgICB0ZXN0UHJvdG90eXBlKCgqaXQpLT5zdG9yZWRQcm90b3R5cGUo
KSwgZmFpbHVyZUNhc2VzKTsKICAgICB9CiAKICAgICBDYWxsIGNhbGxUYXJnZXQ7CkBAIC05NjQs
MjAgKzk3MSwxMiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0CiAg
ICAgYnVja2V0c09mRmFpbC5hcHBlbmQoYmFzZU9iamVjdENoZWNrKTsKIAogICAgIFN0cnVjdHVy
ZSogY3VyclN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKLSAgICBSZWZQdHI8U3RydWN0dXJlPiogY2hh
aW5FbnRyaWVzID0gY2hhaW4tPmhlYWQoKTsKKyAgICBSZWZQdHI8U3RydWN0dXJlPiogaXQgPSBj
aGFpbi0+aGVhZCgpOwogICAgIEpTT2JqZWN0KiBwcm90b09iamVjdCA9IDA7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgY291bnQ7ICsraSwgKytpdCkgewogICAgICAgICBwcm90b09iamVjdCA9IGFzT2JqZWN0
KGN1cnJTdHJ1Y3R1cmUtPnByb3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUpKTsKLSAgICAgICAg
Y3VyclN0cnVjdHVyZSA9IGNoYWluRW50cmllc1tpXS5nZXQoKTsKLQotICAgICAgICAvLyBDaGVj
ayB0aGUgcHJvdG90eXBlIG9iamVjdCdzIFN0cnVjdHVyZSBoYWQgbm90IGNoYW5nZWQuCi0gICAg
ICAgIFN0cnVjdHVyZSoqIHByb3RvdHlwZVN0cnVjdHVyZUFkZHJlc3MgPSAmKHByb3RvT2JqZWN0
LT5tX3N0cnVjdHVyZSk7Ci0jaWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgbW92ZShJbW1QdHIoY3Vy
clN0cnVjdHVyZSksIHJlZ1QzKTsKLSAgICAgICAgYnVja2V0c09mRmFpbC5hcHBlbmQoYnJhbmNo
UHRyKE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MocHJvdG90eXBlU3RydWN0dXJlQWRkcmVzcyks
IHJlZ1QzKSk7Ci0jZWxzZQotICAgICAgICBidWNrZXRzT2ZGYWlsLmFwcGVuZChicmFuY2hQdHIo
Tm90RXF1YWwsIEFic29sdXRlQWRkcmVzcyhwcm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNzKSwgSW1t
UHRyKGN1cnJTdHJ1Y3R1cmUpKSk7Ci0jZW5kaWYKKyAgICAgICAgY3VyclN0cnVjdHVyZSA9IGl0
LT5nZXQoKTsKKyAgICAgICAgdGVzdFByb3RvdHlwZShwcm90b09iamVjdCwgYnVja2V0c09mRmFp
bCk7CiAgICAgfQogICAgIEFTU0VSVChwcm90b09iamVjdCk7CiAgICAgCkBAIC0xMDQyLDIwICsx
MDQxLDEyIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihTdHIKICAgICBi
dWNrZXRzT2ZGYWlsLmFwcGVuZChjaGVja1N0cnVjdHVyZShyZWdUMCwgc3RydWN0dXJlKSk7CiAK
ICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7Ci0gICAgUmVmUHRyPFN0
cnVjdHVyZT4qIGNoYWluRW50cmllcyA9IGNoYWluLT5oZWFkKCk7CisgICAgUmVmUHRyPFN0cnVj
dHVyZT4qIGl0ID0gY2hhaW4tPmhlYWQoKTsKICAgICBKU09iamVjdCogcHJvdG9PYmplY3QgPSAw
OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2ksICsraXQpIHsKICAgICAgICAgcHJvdG9PYmpl
Y3QgPSBhc09iamVjdChjdXJyU3RydWN0dXJlLT5wcm90b3R5cGVGb3JMb29rdXAoY2FsbEZyYW1l
KSk7Ci0gICAgICAgIGN1cnJTdHJ1Y3R1cmUgPSBjaGFpbkVudHJpZXNbaV0uZ2V0KCk7Ci0KLSAg
ICAgICAgLy8gQ2hlY2sgdGhlIHByb3RvdHlwZSBvYmplY3QncyBTdHJ1Y3R1cmUgaGFkIG5vdCBj
aGFuZ2VkLgotICAgICAgICBTdHJ1Y3R1cmUqKiBwcm90b3R5cGVTdHJ1Y3R1cmVBZGRyZXNzID0g
Jihwcm90b09iamVjdC0+bV9zdHJ1Y3R1cmUpOwotI2lmIENQVShYODZfNjQpCi0gICAgICAgIG1v
dmUoSW1tUHRyKGN1cnJTdHJ1Y3R1cmUpLCByZWdUMyk7Ci0gICAgICAgIGJ1Y2tldHNPZkZhaWwu
YXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKHByb3RvdHlwZVN0cnVj
dHVyZUFkZHJlc3MpLCByZWdUMykpOwotI2Vsc2UKLSAgICAgICAgYnVja2V0c09mRmFpbC5hcHBl
bmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MocHJvdG90eXBlU3RydWN0dXJl
QWRkcmVzcyksIEltbVB0cihjdXJyU3RydWN0dXJlKSkpOwotI2VuZGlmCisgICAgICAgIGN1cnJT
dHJ1Y3R1cmUgPSBpdC0+Z2V0KCk7CisgICAgICAgIHRlc3RQcm90b3R5cGUocHJvdG9PYmplY3Qs
IGJ1Y2tldHNPZkZhaWwpOwogICAgIH0KICAgICBBU1NFUlQocHJvdG9PYmplY3QpOwogCg==
</data>
<flag name="review"
          id="51234"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="51252"
          type_id="3"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>