<?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>108356</bug_id>
          
          <creation_ts>2013-01-30 10:36:22 -0800</creation_ts>
          <short_desc>IndexedDB: Avoid crashing when deleting indexes</short_desc>
          <delta_ts>2013-01-30 14:41:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alec Flett">alecflett</reporter>
          <assigned_to name="Alec Flett">alecflett</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>jsbell</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>820311</commentid>
    <comment_count>0</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-01-30 10:36:22 -0800</bug_when>
    <thetext>IndexedDB: Avoid crashing when deleting indexes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820319</commentid>
    <comment_count>1</comment_count>
      <attachid>185519</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-01-30 10:44:27 -0800</bug_when>
    <thetext>Created attachment 185519
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820321</commentid>
    <comment_count>2</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-01-30 10:45:15 -0800</bug_when>
    <thetext>jsbell@ - I hit a crash when debugging something else, so I decided to unearth this patch.

We talked about this before, but basically we&apos;re just allowing transactionIds to be invalid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820338</commentid>
    <comment_count>3</comment_count>
      <attachid>185519</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-01-30 11:15:33 -0800</bug_when>
    <thetext>Comment on attachment 185519
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=185519&amp;action=review

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:560
&gt; +    if (!m_transactions.contains(transactionId))

Do you think we should add comments? They&apos;d be in a lot of places... possibly just in the first instance (since it&apos;s all in one file now) explain that this just means the transaction has aborted asynchronously from this incoming request.

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:563
&gt;      IDBTransactionBackendImpl* transaction = m_transactions.get(transactionId);

Add ASSERT(transaction-&gt;mode() == IDBTransaction::VERSION_CHANGE); since it&apos;s in deleteObjectStore etc?

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:605
&gt; +    IDBTransactionBackendImpl* transaction = m_transactions.get(transactionId);

Here and elsewhere, to avoid the contains/get, can just be:

IDBTransactionBackendImpl* transaction = m_transactions.get(transactionId);
if (!transaction)
  return;

&gt; LayoutTests/ChangeLog:10
&gt; +        with this patch but was the test condition that uncovered the overall problem

s/with/without/ ?

Is the plan to run this test on the Chromium side as well to watch for flaky crashes == regressions? Were you able to get the failure to repro in content_shell?

&gt; LayoutTests/storage/indexeddb/resources/createIndex-after-failure.js:9
&gt; + {

Extra whitespace?

&gt; LayoutTests/storage/indexeddb/resources/createIndex-after-failure.js:10
&gt; +  var date = new Date();

Should be indented 4 spaces.

Also, can use Date.now() to get the current time in millis w/o creating a temp object. So can be just:

var target = Date.now() + millis;
while (Date.now() &lt; target) {
    // busy wait
}

Aside: I wonder if there&apos;s a sleep() API in Internals?

&gt; LayoutTests/storage/indexeddb/resources/createIndex-after-failure.js:12
&gt; +  do { curDate = new Date(); }

Put the do...while either all on one line or three lines. do { \n ... \n } while (...);

&gt; LayoutTests/storage/indexeddb/resources/createIndex-after-failure.js:22
&gt; +    db.createObjectStore(&quot;objectStore&quot;);

Are these lines intentionally not using evalAndLog() for some reason?

&gt; LayoutTests/storage/indexeddb/resources/createIndex-after-failure.js:31
&gt; +    // this will asynchronously abort in the backend because of constraint failures

Capitalize/punctuation.

&gt; LayoutTests/storage/indexeddb/resources/createIndex-after-failure.js:33
&gt; +    // now immediately delete it.

Ditto, etc.

&gt; LayoutTests/storage/indexeddb/resources/shared.js:208
&gt; +function waitForRequests(requests, callback) {

The { of a top-level function should be on its own line. (This is style guideline is violated in some of the preceding functions.)

&gt; LayoutTests/storage/indexeddb/resources/shared.js:211
&gt; +    if (count == 0) callback(requests);

Return early here (just for readability).

&gt; LayoutTests/storage/indexeddb/resources/shared.js:213
&gt; +    requests.forEach(function(req) {

Technically, IDB requests from the same transaction must serviced in the order they&apos;re issued, so this could skip the closure-over-count and just set onsuccess on the last request. But I like the Promises-like generalization. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820357</commentid>
    <comment_count>4</comment_count>
      <attachid>185525</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-01-30 11:35:24 -0800</bug_when>
    <thetext>Created attachment 185525
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820365</commentid>
    <comment_count>5</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-01-30 11:41:51 -0800</bug_when>
    <thetext>tony@ - r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820373</commentid>
    <comment_count>6</comment_count>
      <attachid>185525</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-01-30 11:45:37 -0800</bug_when>
    <thetext>Comment on attachment 185525
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=185525&amp;action=review

&gt; LayoutTests/storage/indexeddb/resources/shared.js:211
&gt; +    if (count == 0) {

Nit: !count

&gt; LayoutTests/storage/indexeddb/resources/shared.js:218
&gt; +            count--;

Nit: --count.

&gt; LayoutTests/storage/indexeddb/resources/shared.js:219
&gt; +            if (count == 0)

Nit: !count</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820375</commentid>
    <comment_count>7</comment_count>
      <attachid>185530</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-01-30 11:49:43 -0800</bug_when>
    <thetext>Created attachment 185530
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820439</commentid>
    <comment_count>8</comment_count>
      <attachid>185530</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-30 12:53:11 -0800</bug_when>
    <thetext>Comment on attachment 185530
Patch for landing

Rejecting attachment 185530 from commit-queue.

New failing tests:
storage/indexeddb/createIndex-after-failure.html
Full output: http://queues.webkit.org/results/16115908</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820508</commentid>
    <comment_count>9</comment_count>
      <attachid>185554</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-01-30 13:50:39 -0800</bug_when>
    <thetext>Created attachment 185554
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820598</commentid>
    <comment_count>10</comment_count>
      <attachid>185554</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-30 14:41:15 -0800</bug_when>
    <thetext>Comment on attachment 185554
Patch for landing

Clearing flags on attachment: 185554

Committed r141316: &lt;http://trac.webkit.org/changeset/141316&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820599</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-30 14:41:19 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185519</attachid>
            <date>2013-01-30 10:44:27 -0800</date>
            <delta_ts>2013-01-30 11:35:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108356-20130130104112.patch</filename>
            <type>text/plain</type>
            <size>16075</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODNjZGNhNDg0NDI3MjFl
MzAxNTVlMmM3NjgyZjczZTZiODcwZWJhMi4uNmMwMjYwNzU1ODRhYmE0ZDE1YjM5NWQxMzhkMGVi
NTAxMmZlNzllNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEzLTAxLTMwICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEF2
b2lkIGNyYXNoaW5nIHdoZW4gZGVsZXRpbmcgaW5kZXhlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4MzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXQgaXMgcmVhc29uYWJsZSB0aGF0IHRoZSBiYWNr
ZW5kIGFib3J0cyBhIHRyYW5zYWN0aW9uIGJlZm9yZQorICAgICAgICB0aGUgZnJvbnRlbmQgaXMg
YXdhcmUsIGRlcGVuZGluZyBvbiB0aGUgdGltaW5nIG9mIGV2ZW50cy4gVGhpcworICAgICAgICBh
bGxvd3MgdGhlIHRyYW5zYWN0aW9uSWQgdG8gYmUgaW52YWxpZCByYXRoZXIgdGhhbiBhc3NlcnRp
bmcuCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlSW5kZXgtYWZ0ZXIt
ZmFpbHVyZS5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6
OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3Bl
bkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjb3Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVSYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjbGVhcik6CisK
IDIwMTMtMDEtMjkgIEp1c3RpbiBOb3Zvc2FkICA8anVub3ZAZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBSRUdSRVNTSU9OIChyMTM1NjI4LTEzNTYzMik6IERvdWJsZSBib3ggc2hhZG93IGZhaWx1cmUg
dG8gcmVuZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IDk5YWIwNTMzNmZlNDM2Y2RhZjli
MTBkMjkyNmIzM2M3N2I5NzAyZTcuLjRlMTI4ZDJiYjVkZDY0MzRjNTllNTc4ODg0MDEyYTNjOTA2
M2ZmNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC01NTYsMTEgKzU1NiwxMyBAQCBJREJE
YXRhYmFzZU1ldGFkYXRhIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om1ldGFkYXRhKCkgY29uc3QK
IHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCB0
cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQogewogICAgIElE
Ql9UUkFDRSgiSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUiKTsKLSAg
ICBBU1NFUlQoIW1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmNvbnRhaW5zKG9iamVjdFN0b3JlSWQp
KTsKIAotICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbklkKSk7
CisgICAgaWYgKCFtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbklkKSkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24g
PSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7CiAKKyAgICBBU1NFUlQoIW1fbWV0
YWRhdGEub2JqZWN0U3RvcmVzLmNvbnRhaW5zKG9iamVjdFN0b3JlSWQpKTsKICAgICBJREJPYmpl
Y3RTdG9yZU1ldGFkYXRhIG9iamVjdFN0b3JlTWV0YWRhdGEobmFtZSwgb2JqZWN0U3RvcmVJZCwg
a2V5UGF0aCwgYXV0b0luY3JlbWVudCwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpNaW5p
bXVtSW5kZXhJZCk7CiAKICAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKENyZWF0ZU9iamVj
dFN0b3JlT3BlcmF0aW9uOjpjcmVhdGUobV9iYWNraW5nU3RvcmUsIG9iamVjdFN0b3JlTWV0YWRh
dGEpLCBDcmVhdGVPYmplY3RTdG9yZUFib3J0T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgb2JqZWN0
U3RvcmVJZCkpOwpAQCAtNTgxLDEzICs1ODMsMTUgQEAgdm9pZCBDcmVhdGVPYmplY3RTdG9yZU9w
ZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikK
IHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCB0
cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCiB7CiAgICAgSURCX1RSQUNFKCJJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVPYmplY3RTdG9yZSIpOwotICAgIEFTU0VSVCht
X21ldGFkYXRhLm9iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9yZUlkKSk7Ci0gICAgY29u
c3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSA9IG1fbWV0YWRh
dGEub2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9yZUlkKTsKKyAgICBpZiAoIW1fdHJhbnNhY3Rp
b25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWQpKQorICAgICAgICByZXR1cm47CiAKLSAgICBBU1NF
UlQobV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb25JZCkpOwogICAgIElEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5z
YWN0aW9uSWQpOwogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0
aW9uOjpWRVJTSU9OX0NIQU5HRSk7CiAKKyAgICBBU1NFUlQobV9tZXRhZGF0YS5vYmplY3RTdG9y
ZXMuY29udGFpbnMob2JqZWN0U3RvcmVJZCkpOworICAgIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0
YWRhdGEmIG9iamVjdFN0b3JlTWV0YWRhdGEgPSBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5nZXQo
b2JqZWN0U3RvcmVJZCk7CisKICAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKERlbGV0ZU9i
amVjdFN0b3JlT3BlcmF0aW9uOjpjcmVhdGUobV9iYWNraW5nU3RvcmUsIG9iamVjdFN0b3JlTWV0
YWRhdGEpLCAgRGVsZXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG9i
amVjdFN0b3JlTWV0YWRhdGEpKTsKICAgICByZW1vdmVPYmplY3RTdG9yZShvYmplY3RTdG9yZUlk
KTsKIH0KQEAgLTU5NSwyMiArNTk5LDIzIEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
ZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iCiB2b2lk
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KGludDY0X3QgdHJhbnNhY3Rpb25J
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlF
bnRyeSkKIHsKICAgICBJREJfVFJBQ0UoIklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZUlu
ZGV4Iik7CisgICAgaWYgKCFtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbklkKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNh
Y3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7CisgICAgQVNTRVJUKHRy
YW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKKwog
ICAgIEFTU0VSVChtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9yZUlk
KSk7CiAgICAgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBvYmplY3RTdG9yZSA9IG1fbWV0
YWRhdGEub2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9yZUlkKTsKIAogICAgIEFTU0VSVCghb2Jq
ZWN0U3RvcmUuaW5kZXhlcy5jb250YWlucyhpbmRleElkKSk7CiAgICAgY29uc3QgSURCSW5kZXhN
ZXRhZGF0YSBpbmRleE1ldGFkYXRhKG5hbWUsIGluZGV4SWQsIGtleVBhdGgsIHVuaXF1ZSwgbXVs
dGlFbnRyeSk7CiAKLSAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rp
b25JZCkpOwotICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90
cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwotICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+
bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSk7Ci0KICAgICB0cmFuc2Fj
dGlvbi0+c2NoZWR1bGVUYXNrKENyZWF0ZUluZGV4T3BlcmF0aW9uOjpjcmVhdGUobV9iYWNraW5n
U3RvcmUsIG9iamVjdFN0b3JlSWQsIGluZGV4TWV0YWRhdGEpLCBDcmVhdGVJbmRleEFib3J0T3Bl
cmF0aW9uOjpjcmVhdGUodGhpcywgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCkpOwogCiAgICAgYWRk
SW5kZXgob2JqZWN0U3RvcmVJZCwgaW5kZXhNZXRhZGF0YSwgaW5kZXhJZCk7CiB9CiAKLQogdm9p
ZCBDcmVhdGVJbmRleE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
KiB0cmFuc2FjdGlvbikKIHsKICAgICBJREJfVFJBQ0UoIkNyZWF0ZUluZGV4T3BlcmF0aW9uIik7
CkBAIC02MzAsMTYgKzYzNSwxOCBAQCB2b2lkIENyZWF0ZUluZGV4QWJvcnRPcGVyYXRpb246OnBl
cmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCiB2b2lkIElEQkRh
dGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZUluZGV4KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpCiB7CiAgICAgSURCX1RSQUNFKCJJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleCIpOworICAgIGlmICghbV90cmFuc2Fj
dGlvbnMuY29udGFpbnModHJhbnNhY3Rpb25JZCkpCisgICAgICAgIHJldHVybjsKKworICAgIElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0
KHRyYW5zYWN0aW9uSWQpOworICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRy
YW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSk7CisKICAgICBBU1NFUlQobV9tZXRhZGF0YS5vYmpl
Y3RTdG9yZXMuY29udGFpbnMob2JqZWN0U3RvcmVJZCkpOwogICAgIGNvbnN0IElEQk9iamVjdFN0
b3JlTWV0YWRhdGEgb2JqZWN0U3RvcmUgPSBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5nZXQob2Jq
ZWN0U3RvcmVJZCk7CiAKICAgICBBU1NFUlQob2JqZWN0U3RvcmUuaW5kZXhlcy5jb250YWlucyhp
bmRleElkKSk7CiAgICAgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSA9IG9i
amVjdFN0b3JlLmluZGV4ZXMuZ2V0KGluZGV4SWQpOwogCi0gICAgQVNTRVJUKG1fdHJhbnNhY3Rp
b25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWQpKTsKLSAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKLSAg
ICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9D
SEFOR0UpOwotCiAgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhEZWxldGVJbmRleE9wZXJh
dGlvbjo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKSwgRGVs
ZXRlSW5kZXhBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG9iamVjdFN0b3JlSWQsIGluZGV4
TWV0YWRhdGEpKTsKIAogICAgIHJlbW92ZUluZGV4KG9iamVjdFN0b3JlSWQsIGluZGV4SWQpOwpA
QCAtNjgyLDcgKzY4OSw5IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6YWJvcnQoaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlCiB2b2lkIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OmdldChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5n
ZSwgYm9vbCBrZXlPbmx5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewog
ICAgIElEQl9UUkFDRSgiSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Z2V0Iik7Ci0gICAgQVNTRVJU
KG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWQpKTsKKyAgICBpZiAoIW1fdHJh
bnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWQpKQorICAgICAgICByZXR1cm47CisKICAg
ICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25z
LmdldCh0cmFuc2FjdGlvbklkKTsKIAogICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soR2V0
T3BlcmF0aW9uOjpjcmVhdGUobV9iYWNraW5nU3RvcmUsIG1fbWV0YWRhdGEsIG9iamVjdFN0b3Jl
SWQsIGluZGV4SWQsIGtleVJhbmdlLCBrZXlPbmx5ID8gSURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZTo6S2V5T25seSA6IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleUFuZFZhbHVlLCBjYWxs
YmFja3MpKTsKQEAgLTc3OSw4ICs3ODgsOSBAQCB2b2lkIEdldE9wZXJhdGlvbjo6cGVyZm9ybShJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKIHZvaWQgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6cHV0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBWZWN0b3I8dWludDhfdD4qIHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQdXRN
b2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IFZl
Y3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JiBpbmRleEtl
eXMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwdXQiKTsKKyAg
ICBpZiAoIW1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWQpKQorICAgICAgICBy
ZXR1cm47CiAKLSAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb25J
ZCkpOwogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFu
c2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9k
ZSgpICE9IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpOwogCkBAIC04NjIsNyArODcyLDYgQEAg
dm9pZCBQdXRPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJh
bnNhY3Rpb24pCiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhrZXkucmVsZWFzZSgpKTsKIH0K
IAotCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldEluZGV4S2V5cyhpbnQ2NF90IHRy
YW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXk+IHBy
cFByaW1hcnlLZXksIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3Rv
cjxJbmRleEtleXM+JiBpbmRleEtleXMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpzZXRJbmRleEtleXMiKTsKQEAgLTkzNSw3ICs5NDQsOSBAQCB2b2lkIFNldElu
ZGV4ZXNSZWFkeU9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0
cmFuc2FjdGlvbikKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihpbnQ2
NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElk
LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0
aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlIHRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzKQogewogICAgIElEQl9UUkFDRSgiSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6b3BlbkN1cnNvciIpOwotICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFu
c2FjdGlvbklkKSk7CisgICAgaWYgKCFtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlv
bklkKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCog
dHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7CiAKICAgICB0
cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9wZW5DdXJzb3JPcGVyYXRpb246OmNyZWF0ZShtX2Jh
Y2tpbmdTdG9yZSwgaWQoKSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGRpcmVj
dGlvbiwga2V5T25seSA/IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleU9ubHkgOiBJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlBbmRWYWx1ZSwgdGFza1R5cGUsIGNhbGxiYWNrcykp
OwpAQCAtOTc4LDcgKzk4OSw5IEBAIHZvaWQgT3BlbkN1cnNvck9wZXJhdGlvbjo6cGVyZm9ybShJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKIHZvaWQgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6Y291bnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2Us
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgSURCX1RSQUNFKCJJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjb3VudCIpOwotICAgIEFTU0VSVChtX3RyYW5zYWN0aW9u
cy5jb250YWlucyh0cmFuc2FjdGlvbklkKSk7CisgICAgaWYgKCFtX3RyYW5zYWN0aW9ucy5jb250
YWlucyh0cmFuc2FjdGlvbklkKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rp
b25JZCk7CiAgICAgQVNTRVJUKG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmNvbnRhaW5zKG9iamVj
dFN0b3JlSWQpKTsKICAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKENvdW50T3BlcmF0aW9u
OjpjcmVhdGUobV9iYWNraW5nU3RvcmUsIGlkKCksIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtl
eVJhbmdlLCBjYWxsYmFja3MpKTsKQEAgLTEwMDksOCArMTAyMiw5IEBAIHZvaWQgQ291bnRPcGVy
YXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCiB2
b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZVJhbmdlKGludDY0X3QgdHJhbnNhY3Rp
b25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlS
YW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBJREJfVFJB
Q0UoIklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZVJhbmdlIik7CisgICAgaWYgKCFtX3Ry
YW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbklkKSkKKyAgICAgICAgcmV0dXJuOwogCi0g
ICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWQpKTsKICAgICBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdl
dCh0cmFuc2FjdGlvbklkKTsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJU
cmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsKIApAQCAtMTAzMyw4ICsxMDQ3LDkgQEAgdm9pZCBEZWxl
dGVSYW5nZU9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFu
c2FjdGlvbikKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xlYXIoaW50NjRfdCB0cmFu
c2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MpCiB7CiAgICAgSURCX1RSQUNFKCJJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpj
bGVhciIpOworICAgIGlmICghbV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb25JZCkp
CisgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0
cmFuc2FjdGlvbklkKSk7CiAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rp
b24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7CiAgICAgQVNTRVJUKHRyYW5z
YWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSk7CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3
NDZkYWQ5ZjJlNTg2YmY0NTdkNzA3MmE4NmU5Yzg4MTg2OTgyMzIwLi44NjhkNzA5NDIzNzU1NTFk
YzlhNjE2YmYyYjc1ZjRiNzFmZTkyNDgyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTMtMDEt
MzAgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4
ZWREQjogQXZvaWQgY3Jhc2hpbmcgd2hlbiBkZWxldGluZyBpbmRleGVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgzNTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHRlc3Qgd29ya3Mgb24gYW4g
ZWRnZSBjYXNlIGFyb3VuZCB0aGUgYXN5bmNocm9ub3VzCisgICAgICAgIGNyZWF0aW9uL2RlbGV0
aW9uIG9mIGluZGV4ZXMgdGhhdCB1c2VkIHRvIGNyYXNoLiBJdCBkb2Vzbid0IGZhaWwvY3Jhc2gg
ZXZlbgorICAgICAgICB3aXRoIHRoaXMgcGF0Y2ggYnV0IHdhcyB0aGUgdGVzdCBjb25kaXRpb24g
dGhhdCB1bmNvdmVyZWQgdGhlIG92ZXJhbGwgcHJvYmxlbQorICAgICAgICBiZWZvcmUgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzMxMSBjaGFuZ2VkIHRoZSB0aW1p
bmcgb2YKKyAgICAgICAgc29tZSBvZiB0aGUgZXZlbnRzLgorCisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvY3JlYXRlSW5kZXgtYWZ0ZXItZmFpbHVyZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3JlYXRlSW5kZXgtYWZ0ZXItZmFpbHVyZS5q
czogQWRkZWQuCisgICAgICAgIChzbGVlcCk6CisgICAgICAgIChwcmVwYXJlRGF0YWJhc2UpOgor
ICAgICAgICAoZGVsZXRlSW5kZXhBZnRlckdldCk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL3NoYXJlZC5qczoKKyAgICAgICAgKC5yZXF1ZXN0cy5mb3JFYWNoKToKKyAg
ICAgICAgKHdhaXRGb3JSZXF1ZXN0cyk6CisKIDIwMTMtMDEtMjkgIEp1c3RpbiBOb3Zvc2FkICA8
anVub3ZAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTM1NjI4LTEzNTYzMik6
IERvdWJsZSBib3ggc2hhZG93IGZhaWx1cmUgdG8gcmVuZGVyCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGVJbmRleC1hZnRlci1mYWlsdXJlLmh0bWwgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGVJbmRleC1hZnRlci1mYWlsdXJlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTk2ODY1ODcyMDdhMTlhZTlhOTBlMmMwNmRiY2Q5MGZlZDZmZGEyYQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZUlu
ZGV4LWFmdGVyLWZhaWx1cmUuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jcmVhdGVJbmRleC1hZnRlci1mYWls
dXJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NyZWF0ZUluZGV4LWFmdGVy
LWZhaWx1cmUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Jl
YXRlSW5kZXgtYWZ0ZXItZmFpbHVyZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTc5YWJmMGZlNDU1YzNiN2U5
YWIwZjI0YmU1YTE0Yjk4ZDQ5YTk1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NyZWF0ZUluZGV4LWFmdGVyLWZhaWx1cmUuanMKQEAg
LTAsMCArMSw1NCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1w
b3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWRE
QidzIGJhc2ljcy4iKTsKKworZnVuY3Rpb24gc2xlZXAobWlsbGlzKQorIHsKKyAgdmFyIGRhdGUg
PSBuZXcgRGF0ZSgpOworICB2YXIgY3VyRGF0ZSA9IG51bGw7CisgIGRvIHsgY3VyRGF0ZSA9IG5l
dyBEYXRlKCk7IH0KKyAgd2hpbGUoY3VyRGF0ZS1kYXRlIDwgbWlsbGlzKTsKK30KKworaW5kZXhl
ZERCVGVzdChwcmVwYXJlRGF0YWJhc2UpOworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKGV2ZW50
KQoreworICAgIHRyYW5zID0gZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uOworICAgIGRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdDsKKworICAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJvYmplY3RTdG9y
ZSIpOworICAgIG9iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoIm9iamVjdFN0b3JlIik7
CisgICAgdmFyIHJlcTEgPSBvYmplY3RTdG9yZS5wdXQoeyJrZXkiOiAidmFsdWUifSwgIm9iamVj
dDEiKTsKKyAgICB2YXIgcmVxMiA9IG9iamVjdFN0b3JlLnB1dCh7ImtleSI6ICJ2YWx1ZSJ9LCAi
b2JqZWN0MiIpOworCisgICAgd2FpdEZvclJlcXVlc3RzKFtyZXExLCByZXEyXSwgY3JlYXRlSW5k
ZXgpOworfQorCitmdW5jdGlvbiBjcmVhdGVJbmRleCgpIHsKKyAgICAvLyB0aGlzIHdpbGwgYXN5
bmNocm9ub3VzbHkgYWJvcnQgaW4gdGhlIGJhY2tlbmQgYmVjYXVzZSBvZiBjb25zdHJhaW50IGZh
aWx1cmVzCisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4Jywg
J2tleScsIHt1bmlxdWU6IHRydWV9KSIpOworICAgIC8vIG5vdyBpbW1lZGlhdGVseSBkZWxldGUg
aXQuCisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4JykiKTsK
KyAgICAvLyBkZWxldGUgaXQgYWdhaW46IGJhY2tlbmQgbWF5IGhhdmUgYXN5bmNocm9ub3VzbHkg
YWJvcnRlZCB0aGUKKyAgICAvLyBpbmRleCBjcmVhdGlvbiwgYnV0IHRoaXMgbWFrZXMgc3VyZSB0
aGUgZnJvbnRlbmQgZG9lc24ndCBnZXQKKyAgICAvLyBjb25mdXNlZCBhbmQgY3Jhc2gsIG9yIHRo
aW5rIHRoZSBpbmRleCBzdGlsbCBleGlzdHMuCisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
b2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4JykiLCAiRE9NRXhjZXB0aW9uLk5PVF9GT1VO
RF9FUlIiLCAiJ05vdEZvdW5kRXJyb3InIik7CisgICAgZGVidWcoIk5vdyByZXF1ZXN0aW5nIG9i
amVjdDIiKTsKKyAgICB2YXIgcmVxMyA9IG9iamVjdFN0b3JlLmdldCgib2JqZWN0MiIpOworICAg
IHJlcTMub25zdWNjZXNzID0gZGVsZXRlSW5kZXhBZnRlckdldDsKKyAgICByZXEzLm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBkZWJ1Zygibm93IHdlIHdhaXQuIik7Cit9
CisKK2Z1bmN0aW9uIGRlbGV0ZUluZGV4QWZ0ZXJHZXQoKSB7CisgICAgLy8gc28gd2Ugd2lsbCBk
ZWxldGUgaXQgbmV4dCwgYnV0IGl0IHNob3VsZCBhbHJlYWR5IGJlIGdvbmUuLi4gcmlnaHQ/Cisg
ICAgZGVidWcoImRlbGV0ZUluZGV4QWZ0ZXJHZXQoKSIpOworICAgIC8vIHRoZSBpbmRleCBzaG91
bGQgc3RpbGwgYmUgZ29uZSwgYW5kIHRoaXMgc2hvdWxkIG5vdCBjcmFzaC4KKyAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJvYmplY3RTdG9yZS5kZWxldGVJbmRleCgnaW5kZXgnKSIsICJET01F
eGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIsICInTm90Rm91bmRFcnJvciciKTsKKyAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJvYmplY3RTdG9yZS5kZWxldGVJbmRleCgnaW5kZXgnKSIsICJET01F
eGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIsICInTm90Rm91bmRFcnJvciciKTsKKworICAgIGZpbmlz
aEpTVGVzdCgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanMgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzCmluZGV4IGNiOTk0Mzg0
ZmFjYjI3Njg3NzQwZDZiMWNiZTg5MTRlODE3NTBhYjguLmFkZWFhOTk1MmUxOGI0YjMwNjUzYTEw
MDJhZDIyYjU0NDNhMGJkNjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9zaGFyZWQuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL3NoYXJlZC5qcwpAQCAtMjA0LDMgKzIwNCwxOSBAQCBmdW5jdGlvbiBpbmRl
eGVkREJUZXN0KHVwZ3JhZGVDYWxsYmFjaywgb3B0aW9uYWxPcGVuQ2FsbGJhY2ssIG9wdGlvbmFs
UGFyYW1ldGVycwogICAgICAgICAgICAgKG9wdGlvbmFsUGFyYW1ldGVyc1sncnVuQWZ0ZXJPcGVu
J10pKCk7CiAgICAgfTsKIH0KKworZnVuY3Rpb24gd2FpdEZvclJlcXVlc3RzKHJlcXVlc3RzLCBj
YWxsYmFjaykgeworICAgIHZhciBjb3VudCA9IHJlcXVlc3RzLmxlbmd0aDsKKworICAgIGlmIChj
b3VudCA9PSAwKSBjYWxsYmFjayhyZXF1ZXN0cyk7CisKKyAgICByZXF1ZXN0cy5mb3JFYWNoKGZ1
bmN0aW9uKHJlcSkgeworICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBjb3VudC0tOworICAgICAgICAgICAgaWYgKGNvdW50ID09IDApIHsKKyAgICAgICAg
ICAgICAgICBjYWxsYmFjayhyZXF1ZXN0cyk7CisgICAgICAgICAgICB9CisgICAgICAgIH07Cisg
ICAgICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgfSk7Cit9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185525</attachid>
            <date>2013-01-30 11:35:24 -0800</date>
            <delta_ts>2013-01-30 11:49:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108356-20130130113209.patch</filename>
            <type>text/plain</type>
            <size>17492</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODNjZGNhNDg0NDI3MjFl
MzAxNTVlMmM3NjgyZjczZTZiODcwZWJhMi4uZGNkNTdmN2NiOWE2MGY5NjBmZTJmMGRjNjY1NTVm
MWE4NTQxZDAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEzLTAxLTMwICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEF2
b2lkIGNyYXNoaW5nIHdoZW4gZGVsZXRpbmcgaW5kZXhlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4MzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXQgaXMgcmVhc29uYWJsZSB0aGF0IHRoZSBiYWNr
ZW5kIGFib3J0cyBhIHRyYW5zYWN0aW9uIGJlZm9yZQorICAgICAgICB0aGUgZnJvbnRlbmQgaXMg
YXdhcmUsIGRlcGVuZGluZyBvbiB0aGUgdGltaW5nIG9mIGV2ZW50cy4gVGhpcworICAgICAgICBh
bGxvd3MgdGhlIHRyYW5zYWN0aW9uSWQgdG8gYmUgaW52YWxpZCByYXRoZXIgdGhhbiBhc3NlcnRp
bmcuCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlSW5kZXgtYWZ0ZXIt
ZmFpbHVyZS5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6
OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0
SW5kZXhLZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNl
dEluZGV4ZXNSZWFkeSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6
OmNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0
ZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsZWFy
KToKKwogMjAxMy0wMS0yOSAgSnVzdGluIE5vdm9zYWQgIDxqdW5vdkBnb29nbGUuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT04gKHIxMzU2MjgtMTM1NjMyKTogRG91YmxlIGJveCBzaGFkb3cgZmFp
bHVyZSB0byByZW5kZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggOTlhYjA1MzM2ZmU0MzZj
ZGFmOWIxMGQyOTI2YjMzYzc3Yjk3MDJlNy4uOTU3YzZhMDkyZDEwZGZlNzVlOWZhOTkzZTA3NDgw
ZGRhNGM3NGIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTU1NiwxMSArNTU2LDEyIEBA
IElEQkRhdGFiYXNlTWV0YWRhdGEgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6bWV0YWRhdGEoKSBj
b25zdAogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZShpbnQ2
NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCiB7CiAg
ICAgSURCX1RSQUNFKCJJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZSIp
OwotICAgIEFTU0VSVCghbV9tZXRhZGF0YS5vYmplY3RTdG9yZXMuY29udGFpbnMob2JqZWN0U3Rv
cmVJZCkpOwotCi0gICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9u
SWQpKTsKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJh
bnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uKQorICAg
ICAgICByZXR1cm47CisgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNh
Y3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKIAorICAgIEFTU0VSVCghbV9tZXRhZGF0YS5vYmplY3RT
dG9yZXMuY29udGFpbnMob2JqZWN0U3RvcmVJZCkpOwogICAgIElEQk9iamVjdFN0b3JlTWV0YWRh
dGEgb2JqZWN0U3RvcmVNZXRhZGF0YShuYW1lLCBvYmplY3RTdG9yZUlkLCBrZXlQYXRoLCBhdXRv
SW5jcmVtZW50LCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6Ok1pbmltdW1JbmRleElkKTsK
IAogICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soQ3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRp
b246OmNyZWF0ZShtX2JhY2tpbmdTdG9yZSwgb2JqZWN0U3RvcmVNZXRhZGF0YSksIENyZWF0ZU9i
amVjdFN0b3JlQWJvcnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBvYmplY3RTdG9yZUlkKSk7CkBA
IC01ODEsMTMgKzU4MiwxNCBAQCB2b2lkIENyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpwZXJm
b3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogdm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKIHsKICAgICBJREJfVFJBQ0UoIklEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0b3JlIik7Ci0gICAgQVNTRVJUKG1fbWV0YWRhdGEub2Jq
ZWN0U3RvcmVzLmNvbnRhaW5zKG9iamVjdFN0b3JlSWQpKTsKLSAgICBjb25zdCBJREJPYmplY3RT
dG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZU1ldGFkYXRhID0gbV9tZXRhZGF0YS5vYmplY3RTdG9y
ZXMuZ2V0KG9iamVjdFN0b3JlSWQpOwotCi0gICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25zLmNvbnRh
aW5zKHRyYW5zYWN0aW9uSWQpKTsKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFu
c2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKKyAgICBpZiAoIXRy
YW5zYWN0aW9uKQorICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2Rl
KCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKIAorICAgIEFTU0VSVChtX21l
dGFkYXRhLm9iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9yZUlkKSk7CisgICAgY29uc3Qg
SURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSA9IG1fbWV0YWRhdGEu
b2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9yZUlkKTsKKwogICAgIHRyYW5zYWN0aW9uLT5zY2hl
ZHVsZVRhc2soRGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OmNyZWF0ZShtX2JhY2tpbmdTdG9y
ZSwgb2JqZWN0U3RvcmVNZXRhZGF0YSksICBEZWxldGVPYmplY3RTdG9yZUFib3J0T3BlcmF0aW9u
OjpjcmVhdGUodGhpcywgb2JqZWN0U3RvcmVNZXRhZGF0YSkpOwogICAgIHJlbW92ZU9iamVjdFN0
b3JlKG9iamVjdFN0b3JlSWQpOwogfQpAQCAtNTk1LDIyICs1OTcsMjIgQEAgdm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQs
IGludDY0X3Qgb2IKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXgoaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIHVu
aXF1ZSwgYm9vbCBtdWx0aUVudHJ5KQogewogICAgIElEQl9UUkFDRSgiSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6Y3JlYXRlSW5kZXgiKTsKKyAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0
cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKKyAgICBpZiAo
IXRyYW5zYWN0aW9uKQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5t
b2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKKwogICAgIEFTU0VSVCht
X21ldGFkYXRhLm9iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9yZUlkKSk7CiAgICAgY29u
c3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBvYmplY3RTdG9yZSA9IG1fbWV0YWRhdGEub2JqZWN0
U3RvcmVzLmdldChvYmplY3RTdG9yZUlkKTsKIAogICAgIEFTU0VSVCghb2JqZWN0U3RvcmUuaW5k
ZXhlcy5jb250YWlucyhpbmRleElkKSk7CiAgICAgY29uc3QgSURCSW5kZXhNZXRhZGF0YSBpbmRl
eE1ldGFkYXRhKG5hbWUsIGluZGV4SWQsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSk7CiAK
LSAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb25JZCkpOwotICAg
IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMu
Z2V0KHRyYW5zYWN0aW9uSWQpOwotICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElE
QlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSk7Ci0KICAgICB0cmFuc2FjdGlvbi0+c2NoZWR1
bGVUYXNrKENyZWF0ZUluZGV4T3BlcmF0aW9uOjpjcmVhdGUobV9iYWNraW5nU3RvcmUsIG9iamVj
dFN0b3JlSWQsIGluZGV4TWV0YWRhdGEpLCBDcmVhdGVJbmRleEFib3J0T3BlcmF0aW9uOjpjcmVh
dGUodGhpcywgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCkpOwogCiAgICAgYWRkSW5kZXgob2JqZWN0
U3RvcmVJZCwgaW5kZXhNZXRhZGF0YSwgaW5kZXhJZCk7CiB9CiAKLQogdm9pZCBDcmVhdGVJbmRl
eE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlv
bikKIHsKICAgICBJREJfVFJBQ0UoIkNyZWF0ZUluZGV4T3BlcmF0aW9uIik7CkBAIC02MzAsMTYg
KzYzMiwxNyBAQCB2b2lkIENyZWF0ZUluZGV4QWJvcnRPcGVyYXRpb246OnBlcmZvcm0oSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCiB2b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmRlbGV0ZUluZGV4KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpCiB7CiAgICAgSURCX1RSQUNFKCJJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpkZWxldGVJbmRleCIpOworICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwq
IHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOworICAgIGlm
ICghdHJhbnNhY3Rpb24pCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24t
Pm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOworCiAgICAgQVNTRVJU
KG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmNvbnRhaW5zKG9iamVjdFN0b3JlSWQpKTsKICAgICBj
b25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG9iamVjdFN0b3JlID0gbV9tZXRhZGF0YS5vYmpl
Y3RTdG9yZXMuZ2V0KG9iamVjdFN0b3JlSWQpOwogCiAgICAgQVNTRVJUKG9iamVjdFN0b3JlLmlu
ZGV4ZXMuY29udGFpbnMoaW5kZXhJZCkpOwogICAgIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGlu
ZGV4TWV0YWRhdGEgPSBvYmplY3RTdG9yZS5pbmRleGVzLmdldChpbmRleElkKTsKIAotICAgIEFT
U0VSVChtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbklkKSk7Ci0gICAgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJh
bnNhY3Rpb25JZCk7Ci0gICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNh
Y3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKLQogICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2so
RGVsZXRlSW5kZXhPcGVyYXRpb246OmNyZWF0ZShtX2JhY2tpbmdTdG9yZSwgb2JqZWN0U3RvcmVJ
ZCwgaW5kZXhJZCksIERlbGV0ZUluZGV4QWJvcnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBvYmpl
Y3RTdG9yZUlkLCBpbmRleE1ldGFkYXRhKSk7CiAKICAgICByZW1vdmVJbmRleChvYmplY3RTdG9y
ZUlkLCBpbmRleElkKTsKQEAgLTY4Miw4ICs2ODUsOSBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmFib3J0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZQogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpnZXQoaW50NjRfdCB0cmFuc2FjdGlvbklk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4ga2V5UmFuZ2UsIGJvb2wga2V5T25seSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IGNhbGxiYWNrcykKIHsKICAgICBJREJfVFJBQ0UoIklEQkRhdGFiYXNlQmFja2VuZEltcGw6Omdl
dCIpOwotICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbklkKSk7
CiAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0
aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7CisgICAgaWYgKCF0cmFuc2FjdGlvbikKKyAgICAgICAg
cmV0dXJuOwogCiAgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhHZXRPcGVyYXRpb246OmNy
ZWF0ZShtX2JhY2tpbmdTdG9yZSwgbV9tZXRhZGF0YSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwg
a2V5UmFuZ2UsIGtleU9ubHkgPyBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlPbmx5IDog
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6S2V5QW5kVmFsdWUsIGNhbGxiYWNrcykpOwogfQpA
QCAtNzc5LDkgKzc4Myw5IEBAIHZvaWQgR2V0T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpwdXQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFZlY3Rv
cjx1aW50OF90PiogdmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFB1dE1vZGUgcHV0TW9k
ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgY29uc3QgVmVjdG9yPGludDY0
X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mIGluZGV4S2V5cykKIHsKICAg
ICBJREJfVFJBQ0UoIklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnB1dCIpOwotCi0gICAgQVNTRVJU
KG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWQpKTsKICAgICBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2Fj
dGlvbklkKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uKQorICAgICAgICByZXR1cm47CiAgICAgQVNT
RVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSk7CiAK
ICAgICBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG9iamVjdFN0b3JlTWV0YWRhdGEgPSBt
X21ldGFkYXRhLm9iamVjdFN0b3Jlcy5nZXQob2JqZWN0U3RvcmVJZCk7CkBAIC04NjIsMTYgKzg2
NiwxMyBAQCB2b2lkIFB1dE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsKiB0cmFuc2FjdGlvbikKICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKGtleS5yZWxlYXNl
KCkpOwogfQogCi0KIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0SW5kZXhLZXlzKGlu
dDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElE
QktleT4gcHJwUHJpbWFyeUtleSwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29u
c3QgVmVjdG9yPEluZGV4S2V5cz4mIGluZGV4S2V5cykKIHsKICAgICBJREJfVFJBQ0UoIklEQkRh
dGFiYXNlQmFja2VuZEltcGw6OnNldEluZGV4S2V5cyIpOwotICAgIGlmICghbV90cmFuc2FjdGlv
bnMuY29udGFpbnModHJhbnNhY3Rpb25JZCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRy
YW5zYWN0aW9uSWQpOwotICAgIGlmICh0cmFuc2FjdGlvbi0+aXNGaW5pc2hlZCgpKQorICAgIGlm
ICghdHJhbnNhY3Rpb24gfHwgdHJhbnNhY3Rpb24tPmlzRmluaXNoZWQoKSkKICAgICAgICAgcmV0
dXJuOworICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpW
RVJTSU9OX0NIQU5HRSk7CiAKICAgICBSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5ID0gcHJwUHJp
bWFyeUtleTsKICAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBzdG9yZSA9IGJhY2tpbmdTdG9y
ZSgpOwpAQCAtOTE0LDExICs5MTUsOCBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNl
dEluZGV4ZXNSZWFkeShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZQogewogICAg
IElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2V0SW5kZXhlc1JlYWR5Iik7
CiAKLSAgICBpZiAoIW1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWQpKQotICAg
ICAgICByZXR1cm47Ci0KICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlv
biA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKLSAgICBpZiAodHJhbnNhY3Rp
b24tPmlzRmluaXNoZWQoKSkKKyAgICBpZiAoIXRyYW5zYWN0aW9uIHx8IHRyYW5zYWN0aW9uLT5p
c0ZpbmlzaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghdHJhbnNhY3Rpb24tPnNj
aGVkdWxlVGFzayhJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlByZWVtcHRpdmVUYXNrLCBT
ZXRJbmRleGVzUmVhZHlPcGVyYXRpb246OmNyZWF0ZShpbmRleElkcy5zaXplKCkpKSkKQEAgLTkz
NSw4ICs5MzMsOSBAQCB2b2lkIFNldEluZGV4ZXNSZWFkeU9wZXJhdGlvbjo6cGVyZm9ybShJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKIHZvaWQgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6b3BlbkN1cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5n
ZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlIHRhc2tU
eXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIElEQl9UUkFD
RSgiSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkN1cnNvciIpOwotICAgIEFTU0VSVChtX3Ry
YW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbklkKSk7CiAgICAgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbCogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25J
ZCk7CisgICAgaWYgKCF0cmFuc2FjdGlvbikKKyAgICAgICAgcmV0dXJuOwogCiAgICAgdHJhbnNh
Y3Rpb24tPnNjaGVkdWxlVGFzayhPcGVuQ3Vyc29yT3BlcmF0aW9uOjpjcmVhdGUobV9iYWNraW5n
U3RvcmUsIGlkKCksIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdlLCBkaXJlY3Rpb24s
IGtleU9ubHkgPyBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlPbmx5IDogSURCQ3Vyc29y
QmFja2VuZEludGVyZmFjZTo6S2V5QW5kVmFsdWUsIHRhc2tUeXBlLCBjYWxsYmFja3MpKTsKIH0K
QEAgLTk3OCw4ICs5NzcsMTAgQEAgdm9pZCBPcGVuQ3Vyc29yT3BlcmF0aW9uOjpwZXJmb3JtKElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpjb3VudChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBJREJfVFJBQ0UoIklE
QkRhdGFiYXNlQmFja2VuZEltcGw6OmNvdW50Iik7Ci0gICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25z
LmNvbnRhaW5zKHRyYW5zYWN0aW9uSWQpKTsKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
KiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKKyAgICBp
ZiAoIXRyYW5zYWN0aW9uKQorICAgICAgICByZXR1cm47CisKICAgICBBU1NFUlQobV9tZXRhZGF0
YS5vYmplY3RTdG9yZXMuY29udGFpbnMob2JqZWN0U3RvcmVJZCkpOwogICAgIHRyYW5zYWN0aW9u
LT5zY2hlZHVsZVRhc2soQ291bnRPcGVyYXRpb246OmNyZWF0ZShtX2JhY2tpbmdTdG9yZSwgaWQo
KSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGNhbGxiYWNrcykpOwogfQpAQCAt
MTAwOSw5ICsxMDEwLDkgQEAgdm9pZCBDb3VudE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6ZGVsZXRlUmFuZ2UoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzKQogewogICAgIElEQl9UUkFDRSgiSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6ZGVsZXRlUmFuZ2UiKTsKLQotICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0
cmFuc2FjdGlvbklkKSk7CiAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rp
b24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7CisgICAgaWYgKCF0cmFuc2Fj
dGlvbikKKyAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9
IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpOwogCiAgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxl
VGFzayhEZWxldGVSYW5nZU9wZXJhdGlvbjo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBpZCgpLCBv
YmplY3RTdG9yZUlkLCBrZXlSYW5nZSwgY2FsbGJhY2tzKSk7CkBAIC0xMDMzLDkgKzEwMzQsOSBA
QCB2b2lkIERlbGV0ZVJhbmdlT3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGwqIHRyYW5zYWN0aW9uKQogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjbGVhcihp
bnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBJREJfVFJBQ0UoIklEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OmNsZWFyIik7Ci0KLSAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29udGFpbnMo
dHJhbnNhY3Rpb25JZCkpOwogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0
aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOworICAgIGlmICghdHJhbnNh
Y3Rpb24pCisgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSAh
PSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsKIAogICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVs
ZVRhc2soQ2xlYXJPcGVyYXRpb246OmNyZWF0ZShtX2JhY2tpbmdTdG9yZSwgaWQoKSwgb2JqZWN0
U3RvcmVJZCwgY2FsbGJhY2tzKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzQ2ZGFkOWYyZTU4NmJmNDU3ZDcwNzJhODZl
OWM4ODE4Njk4MjMyMC4uYmMyNmUxN2M4NjA3ZDNhMzY4MDg4MThkZjc4ZmZiMzU5M2EzY2JjYyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEzLTAxLTMwICBBbGVjIEZsZXR0ICA8YWxlY2ZsZXR0
QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEF2b2lkIGNyYXNoaW5nIHdoZW4g
ZGVsZXRpbmcgaW5kZXhlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA4MzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyB0ZXN0IHdvcmtzIG9uIGFuIGVkZ2UgY2FzZSBhcm91bmQgdGhlIGFzeW5j
aHJvbm91cworICAgICAgICBjcmVhdGlvbi9kZWxldGlvbiBvZiBpbmRleGVzIHRoYXQgdXNlZCB0
byBjcmFzaC4gSXQgZG9lc24ndCBmYWlsL2NyYXNoIGV2ZW4KKyAgICAgICAgd2l0aG91dCB0aGlz
IHBhdGNoIGJ1dCB3YXMgdGhlIHRlc3QgY29uZGl0aW9uIHRoYXQgdW5jb3ZlcmVkIHRoZSBvdmVy
YWxsIHByb2JsZW0KKyAgICAgICAgYmVmb3JlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDczMTEgY2hhbmdlZCB0aGUgdGltaW5nIG9mCisgICAgICAgIHNvbWUgb2Yg
dGhlIGV2ZW50cy4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZUluZGV4LWFm
dGVyLWZhaWx1cmUuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2NyZWF0ZUluZGV4LWFmdGVyLWZhaWx1cmUuanM6IEFkZGVkLgorICAgICAgICAoc2xl
ZXApOgorICAgICAgICAocHJlcGFyZURhdGFiYXNlKToKKyAgICAgICAgKGRlbGV0ZUluZGV4QWZ0
ZXJHZXQpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanM6
CisgICAgICAgICgucmVxdWVzdHMuZm9yRWFjaCk6CisgICAgICAgICh3YWl0Rm9yUmVxdWVzdHMp
OgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlSW5kZXgtYWZ0ZXItZmFpbHVy
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Jl
YXRlSW5kZXgtYWZ0ZXItZmFpbHVyZS5qczogQWRkZWQuCisgICAgICAgIChwcmVwYXJlRGF0YWJh
c2UpOgorICAgICAgICAoZGVsZXRlSW5kZXhBZnRlckdldCk6CisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qczoKKyAgICAgICAgKC5yZXF1ZXN0cy5mb3JFYWNo
KToKKyAgICAgICAgKHdhaXRGb3JSZXF1ZXN0cyk6CisKIDIwMTMtMDEtMjkgIEp1c3RpbiBOb3Zv
c2FkICA8anVub3ZAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTM1NjI4LTEz
NTYzMik6IERvdWJsZSBib3ggc2hhZG93IGZhaWx1cmUgdG8gcmVuZGVyCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGVJbmRleC1hZnRlci1mYWlsdXJlLmh0
bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGVJbmRleC1hZnRlci1mYWls
dXJlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTk2ODY1ODcyMDdhMTlhZTlhOTBlMmMwNmRiY2Q5MGZlZDZm
ZGEyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Ny
ZWF0ZUluZGV4LWFmdGVyLWZhaWx1cmUuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jcmVhdGVJbmRleC1hZnRl
ci1mYWlsdXJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NyZWF0ZUluZGV4
LWFmdGVyLWZhaWx1cmUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvY3JlYXRlSW5kZXgtYWZ0ZXItZmFpbHVyZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDFmZDE3NTVkNDYx
NTNkYjQ5YTRhYTFkYTdlMDMwMmZkZDZjM2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NyZWF0ZUluZGV4LWFmdGVyLWZhaWx1cmUu
anMKQEAgLTAsMCArMSw0NiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9y
dFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Cisg
ICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IElu
ZGV4ZWREQidzIGJhc2ljcy4iKTsKKworaW5kZXhlZERCVGVzdChwcmVwYXJlRGF0YWJhc2UpOwor
ZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKGV2ZW50KQoreworICAgIHRyYW5zID0gZXZlbnQudGFy
Z2V0LnRyYW5zYWN0aW9uOworICAgIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKworICAgIGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCJvYmplY3RTdG9yZSIpOworICAgIG9iamVjdFN0b3JlID0gdHJh
bnMub2JqZWN0U3RvcmUoIm9iamVjdFN0b3JlIik7CisgICAgdmFyIHJlcTEgPSBvYmplY3RTdG9y
ZS5wdXQoeyJrZXkiOiAidmFsdWUifSwgIm9iamVjdDEiKTsKKyAgICB2YXIgcmVxMiA9IG9iamVj
dFN0b3JlLnB1dCh7ImtleSI6ICJ2YWx1ZSJ9LCAib2JqZWN0MiIpOworCisgICAgd2FpdEZvclJl
cXVlc3RzKFtyZXExLCByZXEyXSwgY3JlYXRlSW5kZXgpOworfQorCitmdW5jdGlvbiBjcmVhdGVJ
bmRleCgpIHsKKyAgICAvLyBUaGlzIHdpbGwgYXN5bmNocm9ub3VzbHkgYWJvcnQgaW4gdGhlIGJh
Y2tlbmQgYmVjYXVzZSBvZiBjb25zdHJhaW50IGZhaWx1cmVzLgorICAgIGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleCcsICdrZXknLCB7dW5pcXVlOiB0cnVlfSkiKTsK
KyAgICAvLyBOb3cgaW1tZWRpYXRlbHkgZGVsZXRlIGl0LgorICAgIGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlLmRlbGV0ZUluZGV4KCdpbmRleCcpIik7CisgICAgLy8gRGVsZXRlIGl0IGFnYWluOiBi
YWNrZW5kIG1heSBoYXZlIGFzeW5jaHJvbm91c2x5IGFib3J0ZWQgdGhlCisgICAgLy8gaW5kZXgg
Y3JlYXRpb24sIGJ1dCB0aGlzIG1ha2VzIHN1cmUgdGhlIGZyb250ZW5kIGRvZXNuJ3QgZ2V0Cisg
ICAgLy8gY29uZnVzZWQgYW5kIGNyYXNoLCBvciB0aGluayB0aGUgaW5kZXggc3RpbGwgZXhpc3Rz
LgorICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmRlbGV0ZUluZGV4KCdp
bmRleCcpIiwgIkRPTUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIiwgIidOb3RGb3VuZEVycm9yJyIp
OworICAgIGRlYnVnKCJOb3cgcmVxdWVzdGluZyBvYmplY3QyIik7CisgICAgdmFyIHJlcTMgPSBv
YmplY3RTdG9yZS5nZXQoIm9iamVjdDIiKTsKKyAgICByZXEzLm9uc3VjY2VzcyA9IGRlbGV0ZUlu
ZGV4QWZ0ZXJHZXQ7CisgICAgcmVxMy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgZGVidWcoIm5vdyB3ZSB3YWl0LiIpOworfQorCitmdW5jdGlvbiBkZWxldGVJbmRleEFm
dGVyR2V0KCkgeworICAgIC8vIHNvIHdlIHdpbGwgZGVsZXRlIGl0IG5leHQsIGJ1dCBpdCBzaG91
bGQgYWxyZWFkeSBiZSBnb25lLi4uIHJpZ2h0PworICAgIGRlYnVnKCJkZWxldGVJbmRleEFmdGVy
R2V0KCkiKTsKKyAgICAvLyB0aGUgaW5kZXggc2hvdWxkIHN0aWxsIGJlIGdvbmUsIGFuZCB0aGlz
IHNob3VsZCBub3QgY3Jhc2guCisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0U3Rv
cmUuZGVsZXRlSW5kZXgoJ2luZGV4JykiLCAiRE9NRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiLCAi
J05vdEZvdW5kRXJyb3InIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0U3Rv
cmUuZGVsZXRlSW5kZXgoJ2luZGV4JykiLCAiRE9NRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiLCAi
J05vdEZvdW5kRXJyb3InIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvc2hhcmVkLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL3NoYXJlZC5qcwppbmRleCBjYjk5NDM4NGZhY2IyNzY4Nzc0MGQ2YjFjYmU4OTE0ZTgx
NzUwYWI4Li4wNmE5ZmQ4MTU4NjU2YmY0MGRlNjE1MWNkNWNlNDBmYTA0MjkyZTQwIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanMKQEAg
LTIwNCwzICsyMDQsMjEgQEAgZnVuY3Rpb24gaW5kZXhlZERCVGVzdCh1cGdyYWRlQ2FsbGJhY2ss
IG9wdGlvbmFsT3BlbkNhbGxiYWNrLCBvcHRpb25hbFBhcmFtZXRlcnMKICAgICAgICAgICAgIChv
cHRpb25hbFBhcmFtZXRlcnNbJ3J1bkFmdGVyT3BlbiddKSgpOwogICAgIH07CiB9CisKK2Z1bmN0
aW9uIHdhaXRGb3JSZXF1ZXN0cyhyZXF1ZXN0cywgY2FsbGJhY2spIHsKKyAgICB2YXIgY291bnQg
PSByZXF1ZXN0cy5sZW5ndGg7CisKKyAgICBpZiAoY291bnQgPT0gMCkgeworICAgICAgICBjYWxs
YmFjayhyZXF1ZXN0cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICByZXF1ZXN0cy5m
b3JFYWNoKGZ1bmN0aW9uKHJlcSkgeworICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBjb3VudC0tOworICAgICAgICAgICAgaWYgKGNvdW50ID09IDApCisg
ICAgICAgICAgICAgICAgY2FsbGJhY2socmVxdWVzdHMpOworICAgICAgICB9OworICAgICAgICBy
ZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIH0pOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185530</attachid>
            <date>2013-01-30 11:49:43 -0800</date>
            <delta_ts>2013-01-30 13:50:37 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-108356-20130130114628.patch</filename>
            <type>text/plain</type>
            <size>17476</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODNjZGNhNDg0NDI3MjFl
MzAxNTVlMmM3NjgyZjczZTZiODcwZWJhMi4uOGFkYzNkNTJlY2U5OTE0OTM0YTE0YTFkY2IwZGQy
YmE2YTMxMDIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEzLTAxLTMwICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEF2
b2lkIGNyYXNoaW5nIHdoZW4gZGVsZXRpbmcgaW5kZXhlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4MzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
VG9ueSBDaGFuZy4KKworICAgICAgICBJdCBpcyByZWFzb25hYmxlIHRoYXQgdGhlIGJhY2tlbmQg
YWJvcnRzIGEgdHJhbnNhY3Rpb24gYmVmb3JlCisgICAgICAgIHRoZSBmcm9udGVuZCBpcyBhd2Fy
ZSwgZGVwZW5kaW5nIG9uIHRoZSB0aW1pbmcgb2YgZXZlbnRzLiBUaGlzCisgICAgICAgIGFsbG93
cyB0aGUgdHJhbnNhY3Rpb25JZCB0byBiZSBpbnZhbGlkIHJhdGhlciB0aGFuIGFzc2VydGluZy4K
KworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGVJbmRleC1hZnRlci1mYWls
dXJlLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3Jl
YXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6
OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRJbmRl
eEtleXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0SW5k
ZXhlc1JlYWR5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9w
ZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y291
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRlUmFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xlYXIpOgor
CiAyMDEzLTAxLTI5ICBKdXN0aW4gTm92b3NhZCAgPGp1bm92QGdvb2dsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTiAocjEzNTYyOC0xMzU2MzIpOiBEb3VibGUgYm94IHNoYWRvdyBmYWlsdXJl
IHRvIHJlbmRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCA5OWFiMDUzMzZmZTQzNmNkYWY5
YjEwZDI5MjZiMzNjNzdiOTcwMmU3Li45NTdjNmEwOTJkMTBkZmU3NWU5ZmE5OTNlMDc0ODBkZGE0
Yzc0YjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtNTU2LDExICs1NTYsMTIgQEAgSURC
RGF0YWJhc2VNZXRhZGF0YSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjptZXRhZGF0YSgpIGNvbnN0
CiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKIHsKICAgICBJ
REJfVFJBQ0UoIklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlIik7Ci0g
ICAgQVNTRVJUKCFtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9yZUlk
KSk7Ci0KLSAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb25JZCkp
OwogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2Fj
dGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOworICAgIGlmICghdHJhbnNhY3Rpb24pCisgICAgICAg
IHJldHVybjsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlv
bjo6VkVSU0lPTl9DSEFOR0UpOwogCisgICAgQVNTRVJUKCFtX21ldGFkYXRhLm9iamVjdFN0b3Jl
cy5jb250YWlucyhvYmplY3RTdG9yZUlkKSk7CiAgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBv
YmplY3RTdG9yZU1ldGFkYXRhKG5hbWUsIG9iamVjdFN0b3JlSWQsIGtleVBhdGgsIGF1dG9JbmNy
ZW1lbnQsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6TWluaW11bUluZGV4SWQpOwogCiAg
ICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbjo6
Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBvYmplY3RTdG9yZU1ldGFkYXRhKSwgQ3JlYXRlT2JqZWN0
U3RvcmVBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG9iamVjdFN0b3JlSWQpKTsKQEAgLTU4
MSwxMyArNTgyLDE0IEBAIHZvaWQgQ3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OnBlcmZvcm0o
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCiB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkKQogewogICAgIElEQl9UUkFDRSgiSURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6ZGVsZXRlT2JqZWN0U3RvcmUiKTsKLSAgICBBU1NFUlQobV9tZXRhZGF0YS5vYmplY3RT
dG9yZXMuY29udGFpbnMob2JqZWN0U3RvcmVJZCkpOwotICAgIGNvbnN0IElEQk9iamVjdFN0b3Jl
TWV0YWRhdGEmIG9iamVjdFN0b3JlTWV0YWRhdGEgPSBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5n
ZXQob2JqZWN0U3RvcmVJZCk7Ci0KLSAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29udGFpbnMo
dHJhbnNhY3Rpb25JZCkpOwogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0
aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOworICAgIGlmICghdHJhbnNh
Y3Rpb24pCisgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9
PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOwogCisgICAgQVNTRVJUKG1fbWV0YWRh
dGEub2JqZWN0U3RvcmVzLmNvbnRhaW5zKG9iamVjdFN0b3JlSWQpKTsKKyAgICBjb25zdCBJREJP
YmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZU1ldGFkYXRhID0gbV9tZXRhZGF0YS5vYmpl
Y3RTdG9yZXMuZ2V0KG9iamVjdFN0b3JlSWQpOworCiAgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxl
VGFzayhEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbjo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBv
YmplY3RTdG9yZU1ldGFkYXRhKSwgIERlbGV0ZU9iamVjdFN0b3JlQWJvcnRPcGVyYXRpb246OmNy
ZWF0ZSh0aGlzLCBvYmplY3RTdG9yZU1ldGFkYXRhKSk7CiAgICAgcmVtb3ZlT2JqZWN0U3RvcmUo
b2JqZWN0U3RvcmVJZCk7CiB9CkBAIC01OTUsMjIgKzU5NywyMiBAQCB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50
NjRfdCBvYgogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleChpbnQ2NF90
IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVl
LCBib29sIG11bHRpRW50cnkpCiB7CiAgICAgSURCX1RSQUNFKCJJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpjcmVhdGVJbmRleCIpOworICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5z
YWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOworICAgIGlmICghdHJh
bnNhY3Rpb24pCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUo
KSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOworCiAgICAgQVNTRVJUKG1fbWV0
YWRhdGEub2JqZWN0U3RvcmVzLmNvbnRhaW5zKG9iamVjdFN0b3JlSWQpKTsKICAgICBjb25zdCBJ
REJPYmplY3RTdG9yZU1ldGFkYXRhIG9iamVjdFN0b3JlID0gbV9tZXRhZGF0YS5vYmplY3RTdG9y
ZXMuZ2V0KG9iamVjdFN0b3JlSWQpOwogCiAgICAgQVNTRVJUKCFvYmplY3RTdG9yZS5pbmRleGVz
LmNvbnRhaW5zKGluZGV4SWQpKTsKICAgICBjb25zdCBJREJJbmRleE1ldGFkYXRhIGluZGV4TWV0
YWRhdGEobmFtZSwgaW5kZXhJZCwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5KTsKIAotICAg
IEFTU0VSVChtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbklkKSk7Ci0gICAgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQo
dHJhbnNhY3Rpb25JZCk7Ci0gICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJh
bnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKLQogICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRh
c2soQ3JlYXRlSW5kZXhPcGVyYXRpb246OmNyZWF0ZShtX2JhY2tpbmdTdG9yZSwgb2JqZWN0U3Rv
cmVJZCwgaW5kZXhNZXRhZGF0YSksIENyZWF0ZUluZGV4QWJvcnRPcGVyYXRpb246OmNyZWF0ZSh0
aGlzLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKSk7CiAKICAgICBhZGRJbmRleChvYmplY3RTdG9y
ZUlkLCBpbmRleE1ldGFkYXRhLCBpbmRleElkKTsKIH0KIAotCiB2b2lkIENyZWF0ZUluZGV4T3Bl
cmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQog
ewogICAgIElEQl9UUkFDRSgiQ3JlYXRlSW5kZXhPcGVyYXRpb24iKTsKQEAgLTYzMCwxNiArNjMy
LDE3IEBAIHZvaWQgQ3JlYXRlSW5kZXhBYm9ydE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6ZGVsZXRlSW5kZXgoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCkKIHsKICAgICBJREJfVFJBQ0UoIklEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmRlbGV0ZUluZGV4Iik7CisgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJh
bnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7CisgICAgaWYgKCF0
cmFuc2FjdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9k
ZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSk7CisKICAgICBBU1NFUlQobV9t
ZXRhZGF0YS5vYmplY3RTdG9yZXMuY29udGFpbnMob2JqZWN0U3RvcmVJZCkpOwogICAgIGNvbnN0
IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgb2JqZWN0U3RvcmUgPSBtX21ldGFkYXRhLm9iamVjdFN0
b3Jlcy5nZXQob2JqZWN0U3RvcmVJZCk7CiAKICAgICBBU1NFUlQob2JqZWN0U3RvcmUuaW5kZXhl
cy5jb250YWlucyhpbmRleElkKSk7CiAgICAgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhN
ZXRhZGF0YSA9IG9iamVjdFN0b3JlLmluZGV4ZXMuZ2V0KGluZGV4SWQpOwogCi0gICAgQVNTRVJU
KG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWQpKTsKLSAgICBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2Fj
dGlvbklkKTsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlv
bjo6VkVSU0lPTl9DSEFOR0UpOwotCiAgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhEZWxl
dGVJbmRleE9wZXJhdGlvbjo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBvYmplY3RTdG9yZUlkLCBp
bmRleElkKSwgRGVsZXRlSW5kZXhBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG9iamVjdFN0
b3JlSWQsIGluZGV4TWV0YWRhdGEpKTsKIAogICAgIHJlbW92ZUluZGV4KG9iamVjdFN0b3JlSWQs
IGluZGV4SWQpOwpAQCAtNjgyLDggKzY4NSw5IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6YWJvcnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlCiB2
b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmdldChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBrZXlSYW5nZSwgYm9vbCBrZXlPbmx5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQogewogICAgIElEQl9UUkFDRSgiSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Z2V0Iik7
Ci0gICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWQpKTsKICAg
ICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25z
LmdldCh0cmFuc2FjdGlvbklkKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uKQorICAgICAgICByZXR1
cm47CiAKICAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKEdldE9wZXJhdGlvbjo6Y3JlYXRl
KG1fYmFja2luZ1N0b3JlLCBtX21ldGFkYXRhLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlS
YW5nZSwga2V5T25seSA/IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleU9ubHkgOiBJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlBbmRWYWx1ZSwgY2FsbGJhY2tzKSk7CiB9CkBAIC03
NzksOSArNzgzLDkgQEAgdm9pZCBHZXRPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnB1
dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgVmVjdG9yPHVp
bnQ4X3Q+KiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUHV0TW9kZSBwdXRNb2RlLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBWZWN0b3I8aW50NjRfdD4m
IGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlzKQogewogICAgIElE
Ql9UUkFDRSgiSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHV0Iik7Ci0KLSAgICBBU1NFUlQobV90
cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb25JZCkpOwogICAgIElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9u
SWQpOworICAgIGlmICghdHJhbnNhY3Rpb24pCisgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQo
dHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsKIAogICAg
IGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgb2JqZWN0U3RvcmVNZXRhZGF0YSA9IG1fbWV0
YWRhdGEub2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9yZUlkKTsKQEAgLTg2MiwxNiArODY2LDEz
IEBAIHZvaWQgUHV0T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwq
IHRyYW5zYWN0aW9uKQogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moa2V5LnJlbGVhc2UoKSk7
CiB9CiAKLQogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRJbmRleEtleXMoaW50NjRf
dCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5
PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBW
ZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlzKQogewogICAgIElEQl9UUkFDRSgiSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6c2V0SW5kZXhLZXlzIik7Ci0gICAgaWYgKCFtX3RyYW5zYWN0aW9ucy5j
b250YWlucyh0cmFuc2FjdGlvbklkKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNh
Y3Rpb25JZCk7Ci0gICAgaWYgKHRyYW5zYWN0aW9uLT5pc0ZpbmlzaGVkKCkpCisgICAgaWYgKCF0
cmFuc2FjdGlvbiB8fCB0cmFuc2FjdGlvbi0+aXNGaW5pc2hlZCgpKQogICAgICAgICByZXR1cm47
CisgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJ
T05fQ0hBTkdFKTsKIAogICAgIFJlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkgPSBwcnBQcmltYXJ5
S2V5OwogICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+IHN0b3JlID0gYmFja2luZ1N0b3JlKCk7
CkBAIC05MTQsMTEgKzkxNSw4IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0SW5k
ZXhlc1JlYWR5KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplCiB7CiAgICAgSURC
X1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpzZXRJbmRleGVzUmVhZHkiKTsKIAot
ICAgIGlmICghbV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb25JZCkpCi0gICAgICAg
IHJldHVybjsKLQogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0g
bV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwotICAgIGlmICh0cmFuc2FjdGlvbi0+
aXNGaW5pc2hlZCgpKQorICAgIGlmICghdHJhbnNhY3Rpb24gfHwgdHJhbnNhY3Rpb24tPmlzRmlu
aXNoZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1
bGVUYXNrKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6UHJlZW1wdGl2ZVRhc2ssIFNldElu
ZGV4ZXNSZWFkeU9wZXJhdGlvbjo6Y3JlYXRlKGluZGV4SWRzLnNpemUoKSkpKQpAQCAtOTM1LDgg
KzkzMyw5IEBAIHZvaWQgU2V0SW5kZXhlc1JlYWR5T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpvcGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCB1
bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUgdGFza1R5cGUs
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgSURCX1RSQUNFKCJJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yIik7Ci0gICAgQVNTRVJUKG1fdHJhbnNh
Y3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWQpKTsKICAgICBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsK
KyAgICBpZiAoIXRyYW5zYWN0aW9uKQorICAgICAgICByZXR1cm47CiAKICAgICB0cmFuc2FjdGlv
bi0+c2NoZWR1bGVUYXNrKE9wZW5DdXJzb3JPcGVyYXRpb246OmNyZWF0ZShtX2JhY2tpbmdTdG9y
ZSwgaWQoKSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGRpcmVjdGlvbiwga2V5
T25seSA/IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleU9ubHkgOiBJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlOjpLZXlBbmRWYWx1ZSwgdGFza1R5cGUsIGNhbGxiYWNrcykpOwogfQpAQCAt
OTc4LDggKzk3NywxMCBAQCB2b2lkIE9wZW5DdXJzb3JPcGVyYXRpb246OnBlcmZvcm0oSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCiB2b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmNvdW50KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIElEQl9UUkFDRSgiSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6Y291bnQiKTsKLSAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29u
dGFpbnModHJhbnNhY3Rpb25JZCkpOwogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRy
YW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOworICAgIGlmICgh
dHJhbnNhY3Rpb24pCisgICAgICAgIHJldHVybjsKKwogICAgIEFTU0VSVChtX21ldGFkYXRhLm9i
amVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9yZUlkKSk7CiAgICAgdHJhbnNhY3Rpb24tPnNj
aGVkdWxlVGFzayhDb3VudE9wZXJhdGlvbjo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBpZCgpLCBv
YmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgY2FsbGJhY2tzKSk7CiB9CkBAIC0xMDA5
LDkgKzEwMTAsOSBAQCB2b2lkIENvdW50T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpk
ZWxldGVSYW5nZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MpCiB7CiAgICAgSURCX1RSQUNFKCJJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpk
ZWxldGVSYW5nZSIpOwotCi0gICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5z
YWN0aW9uSWQpKTsKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9
IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9u
KQorICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURC
VHJhbnNhY3Rpb246OlJFQURfT05MWSk7CiAKICAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNr
KERlbGV0ZVJhbmdlT3BlcmF0aW9uOjpjcmVhdGUobV9iYWNraW5nU3RvcmUsIGlkKCksIG9iamVj
dFN0b3JlSWQsIGtleVJhbmdlLCBjYWxsYmFja3MpKTsKQEAgLTEwMzMsOSArMTAzNCw5IEBAIHZv
aWQgRGVsZXRlUmFuZ2VPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bCogdHJhbnNhY3Rpb24pCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsZWFyKGludDY0
X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIElEQl9UUkFDRSgiSURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6Y2xlYXIiKTsKLQotICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFu
c2FjdGlvbklkKSk7CiAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24g
PSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7CisgICAgaWYgKCF0cmFuc2FjdGlv
bikKKyAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElE
QlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpOwogCiAgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFz
ayhDbGVhck9wZXJhdGlvbjo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBpZCgpLCBvYmplY3RTdG9y
ZUlkLCBjYWxsYmFja3MpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3NDZkYWQ5ZjJlNTg2YmY0NTdkNzA3MmE4NmU5Yzg4
MTg2OTgyMzIwLi5hNGJmZjQ2NzVjOGJhNzk1M2NhMjJmODY5YmUzMjExMWE0MDMwNzJhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzMgQEAKKzIwMTMtMDEtMzAgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogQXZvaWQgY3Jhc2hpbmcgd2hlbiBkZWxl
dGluZyBpbmRleGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDgzNTYKKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAg
IFRoaXMgdGVzdCB3b3JrcyBvbiBhbiBlZGdlIGNhc2UgYXJvdW5kIHRoZSBhc3luY2hyb25vdXMK
KyAgICAgICAgY3JlYXRpb24vZGVsZXRpb24gb2YgaW5kZXhlcyB0aGF0IHVzZWQgdG8gY3Jhc2gu
IEl0IGRvZXNuJ3QgZmFpbC9jcmFzaCBldmVuCisgICAgICAgIHdpdGhvdXQgdGhpcyBwYXRjaCBi
dXQgd2FzIHRoZSB0ZXN0IGNvbmRpdGlvbiB0aGF0IHVuY292ZXJlZCB0aGUgb3ZlcmFsbCBwcm9i
bGVtCisgICAgICAgIGJlZm9yZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA3MzExIGNoYW5nZWQgdGhlIHRpbWluZyBvZgorICAgICAgICBzb21lIG9mIHRoZSBldmVu
dHMuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGVJbmRleC1hZnRlci1mYWls
dXJlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9j
cmVhdGVJbmRleC1hZnRlci1mYWlsdXJlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNsZWVwKToKKyAg
ICAgICAgKHByZXBhcmVEYXRhYmFzZSk6CisgICAgICAgIChkZWxldGVJbmRleEFmdGVyR2V0KToK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzOgorICAgICAg
ICAoLnJlcXVlc3RzLmZvckVhY2gpOgorICAgICAgICAod2FpdEZvclJlcXVlc3RzKToKKworICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZUluZGV4LWFmdGVyLWZhaWx1cmUuaHRtbDog
QWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NyZWF0ZUluZGV4
LWFmdGVyLWZhaWx1cmUuanM6IEFkZGVkLgorICAgICAgICAocHJlcGFyZURhdGFiYXNlKToKKyAg
ICAgICAgKGRlbGV0ZUluZGV4QWZ0ZXJHZXQpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9zaGFyZWQuanM6CisgICAgICAgICgucmVxdWVzdHMuZm9yRWFjaCk6CisgICAg
ICAgICh3YWl0Rm9yUmVxdWVzdHMpOgorCiAyMDEzLTAxLTI5ICBKdXN0aW4gTm92b3NhZCAgPGp1
bm92QGdvb2dsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjEzNTYyOC0xMzU2MzIpOiBE
b3VibGUgYm94IHNoYWRvdyBmYWlsdXJlIHRvIHJlbmRlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlSW5kZXgtYWZ0ZXItZmFpbHVyZS5odG1sIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlSW5kZXgtYWZ0ZXItZmFpbHVyZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk5Njg2NTg3MjA3YTE5YWU5YTkwZTJjMDZkYmNkOTBmZWQ2ZmRhMmEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGVJbmRl
eC1hZnRlci1mYWlsdXJlLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3JlYXRlSW5kZXgtYWZ0ZXItZmFpbHVy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGVJbmRleC1hZnRlci1m
YWlsdXJlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NyZWF0
ZUluZGV4LWFmdGVyLWZhaWx1cmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQxZmQxNzU1ZDQ2MTUzZGI0OWE0
YWExZGE3ZTAzMDJmZGQ2YzNkOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGVJbmRleC1hZnRlci1mYWlsdXJlLmpzCkBAIC0w
LDAgKzEsNDYgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRz
KCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9y
dFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIn
cyBiYXNpY3MuIik7CisKK2luZGV4ZWREQlRlc3QocHJlcGFyZURhdGFiYXNlKTsKK2Z1bmN0aW9u
IHByZXBhcmVEYXRhYmFzZShldmVudCkKK3sKKyAgICB0cmFucyA9IGV2ZW50LnRhcmdldC50cmFu
c2FjdGlvbjsKKyAgICBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisKKyAgICBkYi5jcmVhdGVP
YmplY3RTdG9yZSgib2JqZWN0U3RvcmUiKTsKKyAgICBvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVj
dFN0b3JlKCJvYmplY3RTdG9yZSIpOworICAgIHZhciByZXExID0gb2JqZWN0U3RvcmUucHV0KHsi
a2V5IjogInZhbHVlIn0sICJvYmplY3QxIik7CisgICAgdmFyIHJlcTIgPSBvYmplY3RTdG9yZS5w
dXQoeyJrZXkiOiAidmFsdWUifSwgIm9iamVjdDIiKTsKKworICAgIHdhaXRGb3JSZXF1ZXN0cyhb
cmVxMSwgcmVxMl0sIGNyZWF0ZUluZGV4KTsKK30KKworZnVuY3Rpb24gY3JlYXRlSW5kZXgoKSB7
CisgICAgLy8gVGhpcyB3aWxsIGFzeW5jaHJvbm91c2x5IGFib3J0IGluIHRoZSBiYWNrZW5kIGJl
Y2F1c2Ugb2YgY29uc3RyYWludCBmYWlsdXJlcy4KKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZS5jcmVhdGVJbmRleCgnaW5kZXgnLCAna2V5Jywge3VuaXF1ZTogdHJ1ZX0pIik7CisgICAgLy8g
Tm93IGltbWVkaWF0ZWx5IGRlbGV0ZSBpdC4KKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5k
ZWxldGVJbmRleCgnaW5kZXgnKSIpOworICAgIC8vIERlbGV0ZSBpdCBhZ2FpbjogYmFja2VuZCBt
YXkgaGF2ZSBhc3luY2hyb25vdXNseSBhYm9ydGVkIHRoZQorICAgIC8vIGluZGV4IGNyZWF0aW9u
LCBidXQgdGhpcyBtYWtlcyBzdXJlIHRoZSBmcm9udGVuZCBkb2Vzbid0IGdldAorICAgIC8vIGNv
bmZ1c2VkIGFuZCBjcmFzaCwgb3IgdGhpbmsgdGhlIGluZGV4IHN0aWxsIGV4aXN0cy4KKyAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJvYmplY3RTdG9yZS5kZWxldGVJbmRleCgnaW5kZXgnKSIs
ICJET01FeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIsICInTm90Rm91bmRFcnJvciciKTsKKyAgICBk
ZWJ1ZygiTm93IHJlcXVlc3Rpbmcgb2JqZWN0MiIpOworICAgIHZhciByZXEzID0gb2JqZWN0U3Rv
cmUuZ2V0KCJvYmplY3QyIik7CisgICAgcmVxMy5vbnN1Y2Nlc3MgPSBkZWxldGVJbmRleEFmdGVy
R2V0OworICAgIHJlcTMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIGRl
YnVnKCJub3cgd2Ugd2FpdC4iKTsKK30KKworZnVuY3Rpb24gZGVsZXRlSW5kZXhBZnRlckdldCgp
IHsKKyAgICAvLyBzbyB3ZSB3aWxsIGRlbGV0ZSBpdCBuZXh0LCBidXQgaXQgc2hvdWxkIGFscmVh
ZHkgYmUgZ29uZS4uLiByaWdodD8KKyAgICBkZWJ1ZygiZGVsZXRlSW5kZXhBZnRlckdldCgpIik7
CisgICAgLy8gdGhlIGluZGV4IHNob3VsZCBzdGlsbCBiZSBnb25lLCBhbmQgdGhpcyBzaG91bGQg
bm90IGNyYXNoLgorICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmRlbGV0
ZUluZGV4KCdpbmRleCcpIiwgIkRPTUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIiwgIidOb3RGb3Vu
ZEVycm9yJyIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmRlbGV0
ZUluZGV4KCdpbmRleCcpIiwgIkRPTUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIiwgIidOb3RGb3Vu
ZEVycm9yJyIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL3NoYXJlZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9z
aGFyZWQuanMKaW5kZXggY2I5OTQzODRmYWNiMjc2ODc3NDBkNmIxY2JlODkxNGU4MTc1MGFiOC4u
NzRhNTgxYjZjOWU5YTgwZjY3NTYzZDMwN2MyNTU5OWZmOWU1ZTEyNSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qcworKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzCkBAIC0yMDQsMyAr
MjA0LDIxIEBAIGZ1bmN0aW9uIGluZGV4ZWREQlRlc3QodXBncmFkZUNhbGxiYWNrLCBvcHRpb25h
bE9wZW5DYWxsYmFjaywgb3B0aW9uYWxQYXJhbWV0ZXJzCiAgICAgICAgICAgICAob3B0aW9uYWxQ
YXJhbWV0ZXJzWydydW5BZnRlck9wZW4nXSkoKTsKICAgICB9OwogfQorCitmdW5jdGlvbiB3YWl0
Rm9yUmVxdWVzdHMocmVxdWVzdHMsIGNhbGxiYWNrKSB7CisgICAgdmFyIGNvdW50ID0gcmVxdWVz
dHMubGVuZ3RoOworCisgICAgaWYgKCFjb3VudCkgeworICAgICAgICBjYWxsYmFjayhyZXF1ZXN0
cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICByZXF1ZXN0cy5mb3JFYWNoKGZ1bmN0
aW9uKHJlcSkgeworICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAtLWNvdW50OworICAgICAgICAgICAgaWYgKCFjb3VudCkKKyAgICAgICAgICAgICAgICBj
YWxsYmFjayhyZXF1ZXN0cyk7CisgICAgICAgIH07CisgICAgICAgIHJlcS5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgfSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185554</attachid>
            <date>2013-01-30 13:50:39 -0800</date>
            <delta_ts>2013-01-30 14:41:15 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-108356-20130130134724.patch</filename>
            <type>text/plain</type>
            <size>18858</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODNjZGNhNDg0NDI3MjFl
MzAxNTVlMmM3NjgyZjczZTZiODcwZWJhMi4uOGFkYzNkNTJlY2U5OTE0OTM0YTE0YTFkY2IwZGQy
YmE2YTMxMDIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEzLTAxLTMwICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEF2
b2lkIGNyYXNoaW5nIHdoZW4gZGVsZXRpbmcgaW5kZXhlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4MzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
VG9ueSBDaGFuZy4KKworICAgICAgICBJdCBpcyByZWFzb25hYmxlIHRoYXQgdGhlIGJhY2tlbmQg
YWJvcnRzIGEgdHJhbnNhY3Rpb24gYmVmb3JlCisgICAgICAgIHRoZSBmcm9udGVuZCBpcyBhd2Fy
ZSwgZGVwZW5kaW5nIG9uIHRoZSB0aW1pbmcgb2YgZXZlbnRzLiBUaGlzCisgICAgICAgIGFsbG93
cyB0aGUgdHJhbnNhY3Rpb25JZCB0byBiZSBpbnZhbGlkIHJhdGhlciB0aGFuIGFzc2VydGluZy4K
KworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGVJbmRleC1hZnRlci1mYWls
dXJlLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3Jl
YXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6
OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRJbmRl
eEtleXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0SW5k
ZXhlc1JlYWR5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9w
ZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y291
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRlUmFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xlYXIpOgor
CiAyMDEzLTAxLTI5ICBKdXN0aW4gTm92b3NhZCAgPGp1bm92QGdvb2dsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTiAocjEzNTYyOC0xMzU2MzIpOiBEb3VibGUgYm94IHNoYWRvdyBmYWlsdXJl
IHRvIHJlbmRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCA5OWFiMDUzMzZmZTQzNmNkYWY5
YjEwZDI5MjZiMzNjNzdiOTcwMmU3Li45NTdjNmEwOTJkMTBkZmU3NWU5ZmE5OTNlMDc0ODBkZGE0
Yzc0YjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtNTU2LDExICs1NTYsMTIgQEAgSURC
RGF0YWJhc2VNZXRhZGF0YSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjptZXRhZGF0YSgpIGNvbnN0
CiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKIHsKICAgICBJ
REJfVFJBQ0UoIklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlIik7Ci0g
ICAgQVNTRVJUKCFtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9yZUlk
KSk7Ci0KLSAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb25JZCkp
OwogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2Fj
dGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOworICAgIGlmICghdHJhbnNhY3Rpb24pCisgICAgICAg
IHJldHVybjsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlv
bjo6VkVSU0lPTl9DSEFOR0UpOwogCisgICAgQVNTRVJUKCFtX21ldGFkYXRhLm9iamVjdFN0b3Jl
cy5jb250YWlucyhvYmplY3RTdG9yZUlkKSk7CiAgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBv
YmplY3RTdG9yZU1ldGFkYXRhKG5hbWUsIG9iamVjdFN0b3JlSWQsIGtleVBhdGgsIGF1dG9JbmNy
ZW1lbnQsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6TWluaW11bUluZGV4SWQpOwogCiAg
ICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbjo6
Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBvYmplY3RTdG9yZU1ldGFkYXRhKSwgQ3JlYXRlT2JqZWN0
U3RvcmVBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG9iamVjdFN0b3JlSWQpKTsKQEAgLTU4
MSwxMyArNTgyLDE0IEBAIHZvaWQgQ3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OnBlcmZvcm0o
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCiB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkKQogewogICAgIElEQl9UUkFDRSgiSURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6ZGVsZXRlT2JqZWN0U3RvcmUiKTsKLSAgICBBU1NFUlQobV9tZXRhZGF0YS5vYmplY3RT
dG9yZXMuY29udGFpbnMob2JqZWN0U3RvcmVJZCkpOwotICAgIGNvbnN0IElEQk9iamVjdFN0b3Jl
TWV0YWRhdGEmIG9iamVjdFN0b3JlTWV0YWRhdGEgPSBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5n
ZXQob2JqZWN0U3RvcmVJZCk7Ci0KLSAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29udGFpbnMo
dHJhbnNhY3Rpb25JZCkpOwogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0
aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOworICAgIGlmICghdHJhbnNh
Y3Rpb24pCisgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9
PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOwogCisgICAgQVNTRVJUKG1fbWV0YWRh
dGEub2JqZWN0U3RvcmVzLmNvbnRhaW5zKG9iamVjdFN0b3JlSWQpKTsKKyAgICBjb25zdCBJREJP
YmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZU1ldGFkYXRhID0gbV9tZXRhZGF0YS5vYmpl
Y3RTdG9yZXMuZ2V0KG9iamVjdFN0b3JlSWQpOworCiAgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxl
VGFzayhEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbjo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBv
YmplY3RTdG9yZU1ldGFkYXRhKSwgIERlbGV0ZU9iamVjdFN0b3JlQWJvcnRPcGVyYXRpb246OmNy
ZWF0ZSh0aGlzLCBvYmplY3RTdG9yZU1ldGFkYXRhKSk7CiAgICAgcmVtb3ZlT2JqZWN0U3RvcmUo
b2JqZWN0U3RvcmVJZCk7CiB9CkBAIC01OTUsMjIgKzU5NywyMiBAQCB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50
NjRfdCBvYgogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleChpbnQ2NF90
IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVl
LCBib29sIG11bHRpRW50cnkpCiB7CiAgICAgSURCX1RSQUNFKCJJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpjcmVhdGVJbmRleCIpOworICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5z
YWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOworICAgIGlmICghdHJh
bnNhY3Rpb24pCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUo
KSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOworCiAgICAgQVNTRVJUKG1fbWV0
YWRhdGEub2JqZWN0U3RvcmVzLmNvbnRhaW5zKG9iamVjdFN0b3JlSWQpKTsKICAgICBjb25zdCBJ
REJPYmplY3RTdG9yZU1ldGFkYXRhIG9iamVjdFN0b3JlID0gbV9tZXRhZGF0YS5vYmplY3RTdG9y
ZXMuZ2V0KG9iamVjdFN0b3JlSWQpOwogCiAgICAgQVNTRVJUKCFvYmplY3RTdG9yZS5pbmRleGVz
LmNvbnRhaW5zKGluZGV4SWQpKTsKICAgICBjb25zdCBJREJJbmRleE1ldGFkYXRhIGluZGV4TWV0
YWRhdGEobmFtZSwgaW5kZXhJZCwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5KTsKIAotICAg
IEFTU0VSVChtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbklkKSk7Ci0gICAgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQo
dHJhbnNhY3Rpb25JZCk7Ci0gICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJh
bnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKLQogICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVRh
c2soQ3JlYXRlSW5kZXhPcGVyYXRpb246OmNyZWF0ZShtX2JhY2tpbmdTdG9yZSwgb2JqZWN0U3Rv
cmVJZCwgaW5kZXhNZXRhZGF0YSksIENyZWF0ZUluZGV4QWJvcnRPcGVyYXRpb246OmNyZWF0ZSh0
aGlzLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKSk7CiAKICAgICBhZGRJbmRleChvYmplY3RTdG9y
ZUlkLCBpbmRleE1ldGFkYXRhLCBpbmRleElkKTsKIH0KIAotCiB2b2lkIENyZWF0ZUluZGV4T3Bl
cmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQog
ewogICAgIElEQl9UUkFDRSgiQ3JlYXRlSW5kZXhPcGVyYXRpb24iKTsKQEAgLTYzMCwxNiArNjMy
LDE3IEBAIHZvaWQgQ3JlYXRlSW5kZXhBYm9ydE9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6ZGVsZXRlSW5kZXgoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCkKIHsKICAgICBJREJfVFJBQ0UoIklEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmRlbGV0ZUluZGV4Iik7CisgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJh
bnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7CisgICAgaWYgKCF0
cmFuc2FjdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9k
ZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSk7CisKICAgICBBU1NFUlQobV9t
ZXRhZGF0YS5vYmplY3RTdG9yZXMuY29udGFpbnMob2JqZWN0U3RvcmVJZCkpOwogICAgIGNvbnN0
IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgb2JqZWN0U3RvcmUgPSBtX21ldGFkYXRhLm9iamVjdFN0
b3Jlcy5nZXQob2JqZWN0U3RvcmVJZCk7CiAKICAgICBBU1NFUlQob2JqZWN0U3RvcmUuaW5kZXhl
cy5jb250YWlucyhpbmRleElkKSk7CiAgICAgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhN
ZXRhZGF0YSA9IG9iamVjdFN0b3JlLmluZGV4ZXMuZ2V0KGluZGV4SWQpOwogCi0gICAgQVNTRVJU
KG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWQpKTsKLSAgICBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2Fj
dGlvbklkKTsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlv
bjo6VkVSU0lPTl9DSEFOR0UpOwotCiAgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhEZWxl
dGVJbmRleE9wZXJhdGlvbjo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBvYmplY3RTdG9yZUlkLCBp
bmRleElkKSwgRGVsZXRlSW5kZXhBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG9iamVjdFN0
b3JlSWQsIGluZGV4TWV0YWRhdGEpKTsKIAogICAgIHJlbW92ZUluZGV4KG9iamVjdFN0b3JlSWQs
IGluZGV4SWQpOwpAQCAtNjgyLDggKzY4NSw5IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6YWJvcnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlCiB2
b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmdldChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBrZXlSYW5nZSwgYm9vbCBrZXlPbmx5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQogewogICAgIElEQl9UUkFDRSgiSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Z2V0Iik7
Ci0gICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWQpKTsKICAg
ICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25z
LmdldCh0cmFuc2FjdGlvbklkKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uKQorICAgICAgICByZXR1
cm47CiAKICAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKEdldE9wZXJhdGlvbjo6Y3JlYXRl
KG1fYmFja2luZ1N0b3JlLCBtX21ldGFkYXRhLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlS
YW5nZSwga2V5T25seSA/IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleU9ubHkgOiBJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpLZXlBbmRWYWx1ZSwgY2FsbGJhY2tzKSk7CiB9CkBAIC03
NzksOSArNzgzLDkgQEAgdm9pZCBHZXRPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnB1
dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgVmVjdG9yPHVp
bnQ4X3Q+KiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUHV0TW9kZSBwdXRNb2RlLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBWZWN0b3I8aW50NjRfdD4m
IGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlzKQogewogICAgIElE
Ql9UUkFDRSgiSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHV0Iik7Ci0KLSAgICBBU1NFUlQobV90
cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb25JZCkpOwogICAgIElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9u
SWQpOworICAgIGlmICghdHJhbnNhY3Rpb24pCisgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQo
dHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsKIAogICAg
IGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgb2JqZWN0U3RvcmVNZXRhZGF0YSA9IG1fbWV0
YWRhdGEub2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9yZUlkKTsKQEAgLTg2MiwxNiArODY2LDEz
IEBAIHZvaWQgUHV0T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwq
IHRyYW5zYWN0aW9uKQogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moa2V5LnJlbGVhc2UoKSk7
CiB9CiAKLQogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRJbmRleEtleXMoaW50NjRf
dCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5
PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBW
ZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlzKQogewogICAgIElEQl9UUkFDRSgiSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6c2V0SW5kZXhLZXlzIik7Ci0gICAgaWYgKCFtX3RyYW5zYWN0aW9ucy5j
b250YWlucyh0cmFuc2FjdGlvbklkKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNh
Y3Rpb25JZCk7Ci0gICAgaWYgKHRyYW5zYWN0aW9uLT5pc0ZpbmlzaGVkKCkpCisgICAgaWYgKCF0
cmFuc2FjdGlvbiB8fCB0cmFuc2FjdGlvbi0+aXNGaW5pc2hlZCgpKQogICAgICAgICByZXR1cm47
CisgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJ
T05fQ0hBTkdFKTsKIAogICAgIFJlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkgPSBwcnBQcmltYXJ5
S2V5OwogICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+IHN0b3JlID0gYmFja2luZ1N0b3JlKCk7
CkBAIC05MTQsMTEgKzkxNSw4IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0SW5k
ZXhlc1JlYWR5KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplCiB7CiAgICAgSURC
X1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpzZXRJbmRleGVzUmVhZHkiKTsKIAot
ICAgIGlmICghbV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb25JZCkpCi0gICAgICAg
IHJldHVybjsKLQogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uID0g
bV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwotICAgIGlmICh0cmFuc2FjdGlvbi0+
aXNGaW5pc2hlZCgpKQorICAgIGlmICghdHJhbnNhY3Rpb24gfHwgdHJhbnNhY3Rpb24tPmlzRmlu
aXNoZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1
bGVUYXNrKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6UHJlZW1wdGl2ZVRhc2ssIFNldElu
ZGV4ZXNSZWFkeU9wZXJhdGlvbjo6Y3JlYXRlKGluZGV4SWRzLnNpemUoKSkpKQpAQCAtOTM1LDgg
KzkzMyw5IEBAIHZvaWQgU2V0SW5kZXhlc1JlYWR5T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpvcGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCB1
bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUgdGFza1R5cGUs
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgSURCX1RSQUNFKCJJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yIik7Ci0gICAgQVNTRVJUKG1fdHJhbnNh
Y3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWQpKTsKICAgICBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsK
KyAgICBpZiAoIXRyYW5zYWN0aW9uKQorICAgICAgICByZXR1cm47CiAKICAgICB0cmFuc2FjdGlv
bi0+c2NoZWR1bGVUYXNrKE9wZW5DdXJzb3JPcGVyYXRpb246OmNyZWF0ZShtX2JhY2tpbmdTdG9y
ZSwgaWQoKSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGRpcmVjdGlvbiwga2V5
T25seSA/IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OktleU9ubHkgOiBJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlOjpLZXlBbmRWYWx1ZSwgdGFza1R5cGUsIGNhbGxiYWNrcykpOwogfQpAQCAt
OTc4LDggKzk3NywxMCBAQCB2b2lkIE9wZW5DdXJzb3JPcGVyYXRpb246OnBlcmZvcm0oSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCiB2b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmNvdW50KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIElEQl9UUkFDRSgiSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6Y291bnQiKTsKLSAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29u
dGFpbnModHJhbnNhY3Rpb25JZCkpOwogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRy
YW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOworICAgIGlmICgh
dHJhbnNhY3Rpb24pCisgICAgICAgIHJldHVybjsKKwogICAgIEFTU0VSVChtX21ldGFkYXRhLm9i
amVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9yZUlkKSk7CiAgICAgdHJhbnNhY3Rpb24tPnNj
aGVkdWxlVGFzayhDb3VudE9wZXJhdGlvbjo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBpZCgpLCBv
YmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgY2FsbGJhY2tzKSk7CiB9CkBAIC0xMDA5
LDkgKzEwMTAsOSBAQCB2b2lkIENvdW50T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpk
ZWxldGVSYW5nZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MpCiB7CiAgICAgSURCX1RSQUNFKCJJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpk
ZWxldGVSYW5nZSIpOwotCi0gICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5z
YWN0aW9uSWQpKTsKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbiA9
IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9u
KQorICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURC
VHJhbnNhY3Rpb246OlJFQURfT05MWSk7CiAKICAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNr
KERlbGV0ZVJhbmdlT3BlcmF0aW9uOjpjcmVhdGUobV9iYWNraW5nU3RvcmUsIGlkKCksIG9iamVj
dFN0b3JlSWQsIGtleVJhbmdlLCBjYWxsYmFja3MpKTsKQEAgLTEwMzMsOSArMTAzNCw5IEBAIHZv
aWQgRGVsZXRlUmFuZ2VPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bCogdHJhbnNhY3Rpb24pCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsZWFyKGludDY0
X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIElEQl9UUkFDRSgiSURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6Y2xlYXIiKTsKLQotICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFu
c2FjdGlvbklkKSk7CiAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24g
PSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7CisgICAgaWYgKCF0cmFuc2FjdGlv
bikKKyAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElE
QlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpOwogCiAgICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFz
ayhDbGVhck9wZXJhdGlvbjo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLCBpZCgpLCBvYmplY3RTdG9y
ZUlkLCBjYWxsYmFja3MpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3NDZkYWQ5ZjJlNTg2YmY0NTdkNzA3MmE4NmU5Yzg4
MTg2OTgyMzIwLi5hNGJmZjQ2NzVjOGJhNzk1M2NhMjJmODY5YmUzMjExMWE0MDMwNzJhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzMgQEAKKzIwMTMtMDEtMzAgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogQXZvaWQgY3Jhc2hpbmcgd2hlbiBkZWxl
dGluZyBpbmRleGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDgzNTYKKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAg
IFRoaXMgdGVzdCB3b3JrcyBvbiBhbiBlZGdlIGNhc2UgYXJvdW5kIHRoZSBhc3luY2hyb25vdXMK
KyAgICAgICAgY3JlYXRpb24vZGVsZXRpb24gb2YgaW5kZXhlcyB0aGF0IHVzZWQgdG8gY3Jhc2gu
IEl0IGRvZXNuJ3QgZmFpbC9jcmFzaCBldmVuCisgICAgICAgIHdpdGhvdXQgdGhpcyBwYXRjaCBi
dXQgd2FzIHRoZSB0ZXN0IGNvbmRpdGlvbiB0aGF0IHVuY292ZXJlZCB0aGUgb3ZlcmFsbCBwcm9i
bGVtCisgICAgICAgIGJlZm9yZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA3MzExIGNoYW5nZWQgdGhlIHRpbWluZyBvZgorICAgICAgICBzb21lIG9mIHRoZSBldmVu
dHMuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGVJbmRleC1hZnRlci1mYWls
dXJlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9j
cmVhdGVJbmRleC1hZnRlci1mYWlsdXJlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNsZWVwKToKKyAg
ICAgICAgKHByZXBhcmVEYXRhYmFzZSk6CisgICAgICAgIChkZWxldGVJbmRleEFmdGVyR2V0KToK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzOgorICAgICAg
ICAoLnJlcXVlc3RzLmZvckVhY2gpOgorICAgICAgICAod2FpdEZvclJlcXVlc3RzKToKKworICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZUluZGV4LWFmdGVyLWZhaWx1cmUuaHRtbDog
QWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NyZWF0ZUluZGV4
LWFmdGVyLWZhaWx1cmUuanM6IEFkZGVkLgorICAgICAgICAocHJlcGFyZURhdGFiYXNlKToKKyAg
ICAgICAgKGRlbGV0ZUluZGV4QWZ0ZXJHZXQpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9zaGFyZWQuanM6CisgICAgICAgICgucmVxdWVzdHMuZm9yRWFjaCk6CisgICAg
ICAgICh3YWl0Rm9yUmVxdWVzdHMpOgorCiAyMDEzLTAxLTI5ICBKdXN0aW4gTm92b3NhZCAgPGp1
bm92QGdvb2dsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjEzNTYyOC0xMzU2MzIpOiBE
b3VibGUgYm94IHNoYWRvdyBmYWlsdXJlIHRvIHJlbmRlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlSW5kZXgtYWZ0ZXItZmFpbHVyZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGVJbmRleC1hZnRlci1mYWls
dXJlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Mjc4NTVjMzhjYWE3OTM3OTA2ZDgwYzk1Yjcw
NGE1YTQ5YWI5ZjU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvY3JlYXRlSW5kZXgtYWZ0ZXItZmFpbHVyZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwz
MSBAQAorVGVzdCBJbmRleGVkREIncyBiYXNpY3MuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWRE
QiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4
ZWREQjsKKworZGJuYW1lID0gImNyZWF0ZUluZGV4LWFmdGVyLWZhaWx1cmUuaHRtbCIKK2luZGV4
ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCitpbmRleGVkREIub3BlbihkYm5hbWUpCitvYmpl
Y3RTdG9yZS5jcmVhdGVJbmRleCgnaW5kZXgnLCAna2V5Jywge3VuaXF1ZTogdHJ1ZX0pCitvYmpl
Y3RTdG9yZS5kZWxldGVJbmRleCgnaW5kZXgnKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIG9i
amVjdFN0b3JlLmRlbGV0ZUluZGV4KCdpbmRleCcpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3du
LgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSCitQQVNTIGVuYW1lIGlz
ICdOb3RGb3VuZEVycm9yJworTm93IHJlcXVlc3Rpbmcgb2JqZWN0Mgorbm93IHdlIHdhaXQuCitk
ZWxldGVJbmRleEFmdGVyR2V0KCkKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBvYmplY3RTdG9y
ZS5kZWxldGVJbmRleCgnaW5kZXgnKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1Mg
Y29kZSBpcyBET01FeGNlcHRpb24uTk9UX0ZPVU5EX0VSUgorUEFTUyBlbmFtZSBpcyAnTm90Rm91
bmRFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBvYmplY3RTdG9yZS5kZWxldGVJbmRl
eCgnaW5kZXgnKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01F
eGNlcHRpb24uTk9UX0ZPVU5EX0VSUgorUEFTUyBlbmFtZSBpcyAnTm90Rm91bmRFcnJvcicKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGVJbmRleC1hZnRlci1mYWls
dXJlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGVJbmRleC1hZnRl
ci1mYWlsdXJlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTk2ODY1ODcyMDdhMTlhZTlhOTBlMmMwNmRiY2Q5
MGZlZDZmZGEyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2NyZWF0ZUluZGV4LWFmdGVyLWZhaWx1cmUuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jcmVhdGVJbmRl
eC1hZnRlci1mYWlsdXJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NyZWF0
ZUluZGV4LWFmdGVyLWZhaWx1cmUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvY3JlYXRlSW5kZXgtYWZ0ZXItZmFpbHVyZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDFmZDE3
NTVkNDYxNTNkYjQ5YTRhYTFkYTdlMDMwMmZkZDZjM2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NyZWF0ZUluZGV4LWFmdGVyLWZh
aWx1cmUuanMKQEAgLTAsMCArMSw0NiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAg
IGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Jyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJU
ZXN0IEluZGV4ZWREQidzIGJhc2ljcy4iKTsKKworaW5kZXhlZERCVGVzdChwcmVwYXJlRGF0YWJh
c2UpOworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKGV2ZW50KQoreworICAgIHRyYW5zID0gZXZl
bnQudGFyZ2V0LnRyYW5zYWN0aW9uOworICAgIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKwor
ICAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJvYmplY3RTdG9yZSIpOworICAgIG9iamVjdFN0b3Jl
ID0gdHJhbnMub2JqZWN0U3RvcmUoIm9iamVjdFN0b3JlIik7CisgICAgdmFyIHJlcTEgPSBvYmpl
Y3RTdG9yZS5wdXQoeyJrZXkiOiAidmFsdWUifSwgIm9iamVjdDEiKTsKKyAgICB2YXIgcmVxMiA9
IG9iamVjdFN0b3JlLnB1dCh7ImtleSI6ICJ2YWx1ZSJ9LCAib2JqZWN0MiIpOworCisgICAgd2Fp
dEZvclJlcXVlc3RzKFtyZXExLCByZXEyXSwgY3JlYXRlSW5kZXgpOworfQorCitmdW5jdGlvbiBj
cmVhdGVJbmRleCgpIHsKKyAgICAvLyBUaGlzIHdpbGwgYXN5bmNocm9ub3VzbHkgYWJvcnQgaW4g
dGhlIGJhY2tlbmQgYmVjYXVzZSBvZiBjb25zdHJhaW50IGZhaWx1cmVzLgorICAgIGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleCcsICdrZXknLCB7dW5pcXVlOiB0cnVl
fSkiKTsKKyAgICAvLyBOb3cgaW1tZWRpYXRlbHkgZGVsZXRlIGl0LgorICAgIGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlLmRlbGV0ZUluZGV4KCdpbmRleCcpIik7CisgICAgLy8gRGVsZXRlIGl0IGFn
YWluOiBiYWNrZW5kIG1heSBoYXZlIGFzeW5jaHJvbm91c2x5IGFib3J0ZWQgdGhlCisgICAgLy8g
aW5kZXggY3JlYXRpb24sIGJ1dCB0aGlzIG1ha2VzIHN1cmUgdGhlIGZyb250ZW5kIGRvZXNuJ3Qg
Z2V0CisgICAgLy8gY29uZnVzZWQgYW5kIGNyYXNoLCBvciB0aGluayB0aGUgaW5kZXggc3RpbGwg
ZXhpc3RzLgorICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmRlbGV0ZUlu
ZGV4KCdpbmRleCcpIiwgIkRPTUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIiwgIidOb3RGb3VuZEVy
cm9yJyIpOworICAgIGRlYnVnKCJOb3cgcmVxdWVzdGluZyBvYmplY3QyIik7CisgICAgdmFyIHJl
cTMgPSBvYmplY3RTdG9yZS5nZXQoIm9iamVjdDIiKTsKKyAgICByZXEzLm9uc3VjY2VzcyA9IGRl
bGV0ZUluZGV4QWZ0ZXJHZXQ7CisgICAgcmVxMy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgZGVidWcoIm5vdyB3ZSB3YWl0LiIpOworfQorCitmdW5jdGlvbiBkZWxldGVJ
bmRleEFmdGVyR2V0KCkgeworICAgIC8vIHNvIHdlIHdpbGwgZGVsZXRlIGl0IG5leHQsIGJ1dCBp
dCBzaG91bGQgYWxyZWFkeSBiZSBnb25lLi4uIHJpZ2h0PworICAgIGRlYnVnKCJkZWxldGVJbmRl
eEFmdGVyR2V0KCkiKTsKKyAgICAvLyB0aGUgaW5kZXggc2hvdWxkIHN0aWxsIGJlIGdvbmUsIGFu
ZCB0aGlzIHNob3VsZCBub3QgY3Jhc2guCisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigib2Jq
ZWN0U3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4JykiLCAiRE9NRXhjZXB0aW9uLk5PVF9GT1VORF9F
UlIiLCAiJ05vdEZvdW5kRXJyb3InIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigib2Jq
ZWN0U3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4JykiLCAiRE9NRXhjZXB0aW9uLk5PVF9GT1VORF9F
UlIiLCAiJ05vdEZvdW5kRXJyb3InIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL3NoYXJlZC5qcwppbmRleCBjYjk5NDM4NGZhY2IyNzY4Nzc0MGQ2YjFjYmU4
OTE0ZTgxNzUwYWI4Li43NGE1ODFiNmM5ZTlhODBmNjc1NjNkMzA3YzI1NTk5ZmY5ZTVlMTI1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVk
LmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQu
anMKQEAgLTIwNCwzICsyMDQsMjEgQEAgZnVuY3Rpb24gaW5kZXhlZERCVGVzdCh1cGdyYWRlQ2Fs
bGJhY2ssIG9wdGlvbmFsT3BlbkNhbGxiYWNrLCBvcHRpb25hbFBhcmFtZXRlcnMKICAgICAgICAg
ICAgIChvcHRpb25hbFBhcmFtZXRlcnNbJ3J1bkFmdGVyT3BlbiddKSgpOwogICAgIH07CiB9CisK
K2Z1bmN0aW9uIHdhaXRGb3JSZXF1ZXN0cyhyZXF1ZXN0cywgY2FsbGJhY2spIHsKKyAgICB2YXIg
Y291bnQgPSByZXF1ZXN0cy5sZW5ndGg7CisKKyAgICBpZiAoIWNvdW50KSB7CisgICAgICAgIGNh
bGxiYWNrKHJlcXVlc3RzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJlcXVlc3Rz
LmZvckVhY2goZnVuY3Rpb24ocmVxKSB7CisgICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIC0tY291bnQ7CisgICAgICAgICAgICBpZiAoIWNvdW50KQorICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKHJlcXVlc3RzKTsKKyAgICAgICAgfTsKKyAgICAgICAgcmVx
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB9KTsKK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>