<?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>79633</bug_id>
          
          <creation_ts>2012-02-26 23:39:59 -0800</creation_ts>
          <short_desc>ScriptExecutionContext has too many ifdef ENABLE(SQL_DATABASE)</short_desc>
          <delta_ts>2012-02-29 23:46:36 -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>
          
          <blocked>79327</blocked>
    
    <blocked>79635</blocked>
    
    <blocked>79636</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>morrita</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>565388</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-26 23:39:59 -0800</bug_when>
    <thetext>ScriptExecutionContext has too many ifdef ENABLE(SQL_DATABASE)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565390</commentid>
    <comment_count>1</comment_count>
      <attachid>128966</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-26 23:40:33 -0800</bug_when>
    <thetext>Created attachment 128966
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565392</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-26 23:40:57 -0800</bug_when>
    <thetext>Currently just a work-in-progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565419</commentid>
    <comment_count>3</comment_count>
      <attachid>128973</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-27 00:05:56 -0800</bug_when>
    <thetext>Created attachment 128973
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565424</commentid>
    <comment_count>4</comment_count>
      <attachid>128975</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-27 00:15:12 -0800</bug_when>
    <thetext>Created attachment 128975
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565459</commentid>
    <comment_count>5</comment_count>
      <attachid>128975</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-27 01:28:49 -0800</bug_when>
    <thetext>Comment on attachment 128975
Patch

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

&gt; Source/WebCore/history/PageCache.cpp:124
&gt; +        if (DatabaseContext::from(frame-&gt;document())-&gt;hasOpenDatabases()) {

It looks this from() call makes the lazy instantiation making less sense.
How about to hide hide this behind a static method?

&gt; Source/WebCore/history/PageCache.cpp:267
&gt; +        &amp;&amp; !DatabaseContext::from(document)-&gt;hasOpenDatabases()

Ditto.

&gt; Source/WebCore/loader/FrameLoader.cpp:423
&gt; +        DatabaseContext::from(doc)-&gt;stopDatabases(0);

Ditto on from().

&gt; Source/WebCore/storage/DatabaseContext.cpp:78
&gt; +    ASSERT(isContextThread());

Windows bot is right. We don&apos;t have isContextThread() on DatabaseContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565462</commentid>
    <comment_count>6</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-27 01:30:48 -0800</bug_when>
    <thetext>BTW I&apos;m totally unware that ScriptExceptionContext has such a ifdef-ed crap.
Supplementable effectively helps ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565821</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-27 11:00:53 -0800</bug_when>
    <thetext>Great points.  I&apos;ll update the patch.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565997</commentid>
    <comment_count>8</comment_count>
      <attachid>129103</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-27 14:58:33 -0800</bug_when>
    <thetext>Created attachment 129103
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566007</commentid>
    <comment_count>9</comment_count>
      <attachid>129103</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-27 15:09:53 -0800</bug_when>
    <thetext>Comment on attachment 129103
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568130</commentid>
    <comment_count>10</comment_count>
      <attachid>129558</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-29 17:22:34 -0800</bug_when>
    <thetext>Created attachment 129558
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568133</commentid>
    <comment_count>11</comment_count>
      <attachid>129560</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-29 17:25:05 -0800</bug_when>
    <thetext>Created attachment 129560
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568152</commentid>
    <comment_count>12</comment_count>
      <attachid>129565</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-29 17:45:45 -0800</bug_when>
    <thetext>Created attachment 129565
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568156</commentid>
    <comment_count>13</comment_count>
      <attachid>129566</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-29 17:51:48 -0800</bug_when>
    <thetext>Created attachment 129566
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568216</commentid>
    <comment_count>14</comment_count>
      <attachid>129610</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-29 18:44:10 -0800</bug_when>
    <thetext>Created attachment 129610
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568395</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-29 23:46:36 -0800</bug_when>
    <thetext>Committed r109319: &lt;http://trac.webkit.org/changeset/109319&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128966</attachid>
            <date>2012-02-26 23:40:33 -0800</date>
            <delta_ts>2012-02-27 00:05:50 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-79633-20120226234032.patch</filename>
            <type>text/plain</type>
            <size>24079</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODk2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDEyLTAyLTI2ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCBoYXMgdG9vIG1hbnkgaWZkZWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKiBsb2FkZXIvRnJh
bWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5n
KToKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlOjpEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6b3BlbkFuZFZl
cmlmeVZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6Om1hcmtBc0RlbGV0ZWRB
bmRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2U6OmNsb3NlSW1tZWRpYXRlbHkpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlOjpzY2hlZHVsZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpz
Y2hlZHVsZVRyYW5zYWN0aW9uU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6dHJh
bnNhY3Rpb25DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnRhYmxlTmFtZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKiBz
dG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0
aW9uOjpjaGVja0FuZEhhbmRsZUNsb3NlZE9ySW50ZXJydXB0ZWREYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6bm90aWZ5RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5n
RG93bik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyVGhyZWFkU2h1dGRvd25TdGFydFRhc2s6OnBlcmZvcm1UYXNrKToKKwogMjAx
Mi0wMi0yNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMDg5NTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTQ2MzksNiArNDYzOSw4IEBA
CiAgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZUF1dGhvcml6ZXIuY3BwJywKICAgICAgICAg
ICAgICdzdG9yYWdlL0RhdGFiYXNlQXV0aG9yaXplci5oJywKICAgICAgICAgICAgICdzdG9yYWdl
L0RhdGFiYXNlQ2FsbGJhY2suaCcsCisgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZUNvbnRl
eHQuaCcsCisgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZUNvbnRleHQuY3BwJywKICAgICAg
ICAgICAgICdzdG9yYWdlL0RhdGFiYXNlU3luYy5jcHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2Uv
RGF0YWJhc2VTeW5jLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VUYXNrLmNwcCcs
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Bw
CShyZXZpc2lvbiAxMDg5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDkgKzk0LDYgQEAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQwogICAgICwgbV9pbkRlc3RydWN0b3IoZmFsc2Up
CiAgICAgLCBtX2luRGlzcGF0Y2hFcnJvckV2ZW50KGZhbHNlKQogICAgICwgbV9hY3RpdmVET01P
YmplY3RzQXJlU3VzcGVuZGVkKGZhbHNlKQotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAg
LCBtX2hhc09wZW5EYXRhYmFzZXMoZmFsc2UpCi0jZW5kaWYKIHsKIH0KIApAQCAtMTE1LDEyICsx
MTIsNiBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uCiAgICAgICAg
IEFTU0VSVCgoKml0ZXIpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gdGhpcyk7CiAgICAg
ICAgICgqaXRlciktPmNvbnRleHREZXN0cm95ZWQoKTsKICAgICB9Ci0jaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKLSAgICBpZiAobV9kYXRhYmFzZVRocmVhZCkgewotICAgICAgICBBU1NFUlQobV9k
YXRhYmFzZVRocmVhZC0+dGVybWluYXRpb25SZXF1ZXN0ZWQoKSk7Ci0gICAgICAgIG1fZGF0YWJh
c2VUaHJlYWQgPSAwOwotICAgIH0KLSNlbmRpZgogI2lmIEVOQUJMRShCTE9CKSB8fCBFTkFCTEUo
RklMRV9TWVNURU0pCiAgICAgaWYgKG1fZmlsZVRocmVhZCkgewogICAgICAgICBtX2ZpbGVUaHJl
YWQtPnN0b3AoKTsKQEAgLTEzMywzMiArMTI0LDYgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
flNjcmlwdEV4ZWN1dGlvbgogI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQot
Ci1EYXRhYmFzZVRocmVhZCogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGF0YWJhc2VUaHJlYWQo
KQotewotICAgIGlmICghbV9kYXRhYmFzZVRocmVhZCAmJiAhbV9oYXNPcGVuRGF0YWJhc2VzKSB7
Ci0gICAgICAgIC8vIENyZWF0ZSB0aGUgZGF0YWJhc2UgdGhyZWFkIG9uIGZpcnN0IHJlcXVlc3Qg
LSBidXQgbm90IGlmIGF0IGxlYXN0IG9uZSBkYXRhYmFzZSB3YXMgYWxyZWFkeSBvcGVuZWQsCi0g
ICAgICAgIC8vIGJlY2F1c2UgaW4gdGhhdCBjYXNlIHdlIGFscmVhZHkgaGFkIGEgZGF0YWJhc2Ug
dGhyZWFkIGFuZCB0ZXJtaW5hdGVkIGl0IGFuZCBzaG91bGQgbm90IGNyZWF0ZSBhbm90aGVyLgot
ICAgICAgICBtX2RhdGFiYXNlVGhyZWFkID0gRGF0YWJhc2VUaHJlYWQ6OmNyZWF0ZSgpOwotICAg
ICAgICBpZiAoIW1fZGF0YWJhc2VUaHJlYWQtPnN0YXJ0KCkpCi0gICAgICAgICAgICBtX2RhdGFi
YXNlVGhyZWFkID0gMDsKLSAgICB9Ci0KLSAgICByZXR1cm4gbV9kYXRhYmFzZVRocmVhZC5nZXQo
KTsKLX0KLQotdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdG9wRGF0YWJhc2VzKERhdGFi
YXNlVGFza1N5bmNocm9uaXplciogY2xlYW51cFN5bmMpCi17Ci0gICAgQVNTRVJUKGlzQ29udGV4
dFRocmVhZCgpKTsKLSAgICBpZiAobV9kYXRhYmFzZVRocmVhZCkKLSAgICAgICAgbV9kYXRhYmFz
ZVRocmVhZC0+cmVxdWVzdFRlcm1pbmF0aW9uKGNsZWFudXBTeW5jKTsKLSAgICBlbHNlIGlmIChj
bGVhbnVwU3luYykKLSAgICAgICAgY2xlYW51cFN5bmMtPnRhc2tDb21wbGV0ZWQoKTsKLX0KLQot
I2VuZGlmCi0KIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cHJvY2Vzc01lc3NhZ2VQb3J0
TWVzc2FnZXNTb29uKCkKIHsKICAgICBwb3N0VGFzayhQcm9jZXNzTWVzc2FnZXNTb29uVGFzazo6
Y3JlYXRlKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oCShyZXZpc2lvbiAxMDg5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiS1VSTC5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNlY3Vy
aXR5Q29udGV4dC5oIgorI2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CkBAIC01NiwxNyArNTcsMTIgQEAgY2xhc3MgTWVzc2FnZVBvcnQ7CiAjaWYgRU5BQkxF
KEJMT0IpCiBjbGFzcyBQdWJsaWNVUkxNYW5hZ2VyOwogI2VuZGlmCi0jaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKLWNsYXNzIERhdGFiYXNlOwotY2xhc3MgRGF0YWJhc2VUYXNrU3luY2hyb25pemVy
OwotY2xhc3MgRGF0YWJhc2VUaHJlYWQ7Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShCTE9CKSB8fCBF
TkFCTEUoRklMRV9TWVNURU0pCiBjbGFzcyBGaWxlVGhyZWFkOwogI2VuZGlmCiAKLWNsYXNzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQgOiBwdWJsaWMgU2VjdXJpdHlDb250ZXh0IHsKK2NsYXNzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQgOiBwdWJsaWMgU2VjdXJpdHlDb250ZXh0LCBwdWJsaWMgU3Vw
cGxlbWVudGFibGU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gewogcHVibGljOgogICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICB2aXJ0dWFsIH5TY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CkBAIC03NywxMSArNzMsNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkK
ICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dEYXRhYmFzZUFjY2VzcygpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGF0YWJhc2VFeGNlZWRlZFF1b3RhKGNvbnN0IFN0cmluZyYgbmFtZSkgPSAw
OwotICAgIERhdGFiYXNlVGhyZWFkKiBkYXRhYmFzZVRocmVhZCgpOwotICAgIHZvaWQgc2V0SGFz
T3BlbkRhdGFiYXNlcygpIHsgbV9oYXNPcGVuRGF0YWJhc2VzID0gdHJ1ZTsgfQotICAgIGJvb2wg
aGFzT3BlbkRhdGFiYXNlcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzT3BlbkRhdGFiYXNlczsgfQot
ICAgIC8vIFdoZW4gdGhlIGRhdGFiYXNlIGNsZWFudXAgaXMgZG9uZSwgY2xlYW51cFN5bmMgd2ls
bCBiZSBzaWduYWxsZWQuCi0gICAgdm9pZCBzdG9wRGF0YWJhc2VzKERhdGFiYXNlVGFza1N5bmNo
cm9uaXplciopOwogI2VuZGlmCiAgICAgdmlydHVhbCBib29sIGlzQ29udGV4dFRocmVhZCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNKU0V4ZWN1dGlvbkZvcmJp
ZGRlbigpIGNvbnN0ID0gMDsKQEAgLTIyNCwxMSArMjE1LDYgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZDsKICAgICBBY3RpdmVET01PYmplY3Q6OlJl
YXNvbkZvclN1c3BlbnNpb24gbV9yZWFzb25Gb3JTdXNwZW5kaW5nQWN0aXZlRE9NT2JqZWN0czsK
IAotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgUmVmUHRyPERhdGFiYXNlVGhyZWFkPiBt
X2RhdGFiYXNlVGhyZWFkOwotICAgIGJvb2wgbV9oYXNPcGVuRGF0YWJhc2VzOyAvLyBUaGlzIG5l
dmVyIGNoYW5nZXMgYmFjayB0byBmYWxzZSwgZXZlbiBhZnRlciB0aGUgZGF0YWJhc2UgdGhyZWFk
IGlzIGNsb3NlZC4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEJMT0IpIHx8IEVOQUJMRShGSUxFX1NZ
U1RFTSkKICAgICBSZWZQdHI8RmlsZVRocmVhZD4gbV9maWxlVGhyZWFkOwogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDEwODk1NykKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDb25z
b2xlLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCisjaW5jbHVkZSAiRGF0
YWJhc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtNDE4LDcgKzQxOSw4IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKFVubG9hZEV2ZW4KICAgICAgICAgZG9jLT5z
ZXRSZWFkeVN0YXRlKERvY3VtZW50OjpDb21wbGV0ZSk7CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQotICAgICAgICBkb2MtPnN0b3BEYXRhYmFzZXMoMCk7CisgICAgICAgIC8vIEZJWE1FOiBT
aG91bGQgdGhlIERhdGFiYXNlQ29udGV4dCB3YXRjaCBmb3Igc29tZXRoaW5nIGxpa2UgQWN0aXZl
RE9NT2JqZWN0OjpzdG9wKCkgcmF0aGVyIHRoYW4gYmVpbmcgc3BlY2lhbC1jYXNlZCBoZXJlPwor
ICAgICAgICBEYXRhYmFzZUNvbnRleHQ6OmZyb20oZG9jKS0+c3RvcERhdGFiYXNlcygwKTsKICNl
bmRpZgogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAJKHJldmlz
aW9uIDEwODk1NykKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQ2hhbmdlVmVyc2lvbldyYXBw
ZXIuaCIKICNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIKICNpbmNsdWRlICJEYXRhYmFzZUNh
bGxiYWNrLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGF0YWJh
c2VUYXNrLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQuaCIKICNpbmNsdWRlICJEYXRhYmFz
ZVRyYWNrZXIuaCIKQEAgLTEzMCw3ICsxMzEsNyBAQCBEYXRhYmFzZTo6RGF0YWJhc2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4CiAgICAgbV9kYXRhYmFzZVRocmVhZFNlY3VyaXR5T3JpZ2luID0gbV9j
b250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4tPmlzb2xhdGVkQ29weSgpOwogCiAgICAgU2NyaXB0
Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwotICAgIEFTU0VSVChtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCkpOworICAgIEFTU0VSVChEYXRhYmFzZUNv
bnRleHQ6OmZyb20obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS0+ZGF0YWJhc2VUaHJlYWQoKSk7
CiB9CiAKIGNsYXNzIERlcmVmQ29udGV4dFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzayB7CkBAIC0xNzksMTIgKzE4MCwxMyBAQCBTdHJpbmcgRGF0YWJhc2U6OnZlcnNp
b24oKSBjb25zdAogYm9vbCBEYXRhYmFzZTo6b3BlbkFuZFZlcmlmeVZlcnNpb24oYm9vbCBzZXRW
ZXJzaW9uSW5OZXdEYXRhYmFzZSwgRXhjZXB0aW9uQ29kZSYgZSwgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpCiB7CiAgICAgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyIHN5bmNocm9uaXplcjsKLSAgICBp
ZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKSB8fCBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnRlcm1pbmF0aW9uUmVxdWVzdGVk
KCZzeW5jaHJvbml6ZXIpKQorICAgIERhdGFiYXNlQ29udGV4dCogY29udGV4dCA9IERhdGFiYXNl
Q29udGV4dDo6ZnJvbShtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIGlmICghY29udGV4
dC0+ZGF0YWJhc2VUaHJlYWQoKSB8fCBjb250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT50ZXJtaW5h
dGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAgICAgT3duUHRyPERhdGFiYXNlT3BlblRhc2s+IHRh
c2sgPSBEYXRhYmFzZU9wZW5UYXNrOjpjcmVhdGUodGhpcywgc2V0VmVyc2lvbkluTmV3RGF0YWJh
c2UsICZzeW5jaHJvbml6ZXIsIGUsIGVycm9yTWVzc2FnZSwgc3VjY2Vzcyk7Ci0gICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRh
c2sodGFzay5yZWxlYXNlKCkpOworICAgIGNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVk
dWxlSW1tZWRpYXRlVGFzayh0YXNrLnJlbGVhc2UoKSk7CiAgICAgc3luY2hyb25pemVyLndhaXRG
b3JUYXNrQ29tcGxldGlvbigpOwogCiAgICAgcmV0dXJuIHN1Y2Nlc3M7CkBAIC0xOTIsMjYgKzE5
NCwyNyBAQCBib29sIERhdGFiYXNlOjpvcGVuQW5kVmVyaWZ5VmVyc2lvbihib29sCiAKIHZvaWQg
RGF0YWJhc2U6Om1hcmtBc0RlbGV0ZWRBbmRDbG9zZSgpCiB7Ci0gICAgaWYgKG1fZGVsZXRlZCB8
fCAhbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpKQorICAgIERhdGFi
YXNlQ29udGV4dCogY29udGV4dCA9IERhdGFiYXNlQ29udGV4dDo6ZnJvbShtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOworICAgIGlmIChtX2RlbGV0ZWQgfHwgIWNvbnRleHQtPmRhdGFiYXNlVGhy
ZWFkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIExPRyhTdG9yYWdlQVBJLCAiTWFya2luZyAl
cyAoJXApIGFzIGRlbGV0ZWQiLCBzdHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCksIHRo
aXMpOwogICAgIG1fZGVsZXRlZCA9IHRydWU7CiAKICAgICBEYXRhYmFzZVRhc2tTeW5jaHJvbml6
ZXIgc3luY2hyb25pemVyOwotICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFi
YXNlVGhyZWFkKCktPnRlcm1pbmF0aW9uUmVxdWVzdGVkKCZzeW5jaHJvbml6ZXIpKSB7CisgICAg
aWYgKGNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnRlcm1pbmF0aW9uUmVxdWVzdGVkKCZzeW5j
aHJvbml6ZXIpKSB7CiAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiRGF0YWJhc2UgaGFuZGxlICVw
IGlzIG9uIGEgdGVybWluYXRlZCBEYXRhYmFzZVRocmVhZCwgY2Fubm90IGJlIG1hcmtlZCBmb3Ig
bm9ybWFsIGNsb3N1cmVcbiIsIHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
T3duUHRyPERhdGFiYXNlQ2xvc2VUYXNrPiB0YXNrID0gRGF0YWJhc2VDbG9zZVRhc2s6OmNyZWF0
ZSh0aGlzLCAmc3luY2hyb25pemVyKTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRh
dGFiYXNlVGhyZWFkKCktPnNjaGVkdWxlSW1tZWRpYXRlVGFzayh0YXNrLnJlbGVhc2UoKSk7Cisg
ICAgY29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+c2NoZWR1bGVJbW1lZGlhdGVUYXNrKHRhc2su
cmVsZWFzZSgpKTsKICAgICBzeW5jaHJvbml6ZXIud2FpdEZvclRhc2tDb21wbGV0aW9uKCk7CiB9
CiAKIHZvaWQgRGF0YWJhc2U6OmNsb3NlKCkKIHsKLSAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpKTsKKyAgICBBU1NFUlQoRGF0YWJhc2VDb250ZXh0
Ojpmcm9tKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCktPmRhdGFiYXNlVGhyZWFkKCkpOwogICAg
IEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRh
YmFzZVRocmVhZCgpLT5nZXRUaHJlYWRJRCgpKTsKIAogICAgIHsKQEAgLTIyNSwxNSArMjI4LDE2
IEBAIHZvaWQgRGF0YWJhc2U6OmNsb3NlKCkKIAogICAgIC8vIE11c3QgcmVmKCkgYmVmb3JlIGNh
bGxpbmcgZGF0YWJhc2VUaHJlYWQoKS0+cmVjb3JkRGF0YWJhc2VDbG9zZWQoKS4KICAgICBSZWZQ
dHI8RGF0YWJhc2U+IHByb3RlY3QgPSB0aGlzOwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+ZGF0YWJhc2VUaHJlYWQoKS0+cmVjb3JkRGF0YWJhc2VDbG9zZWQodGhpcyk7Ci0gICAgbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT51bnNjaGVkdWxlRGF0YWJh
c2VUYXNrcyh0aGlzKTsKKyAgICBEYXRhYmFzZUNvbnRleHQqIGNvbnRleHQgPSBEYXRhYmFzZUNv
bnRleHQ6OmZyb20obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBjb250ZXh0LT5kYXRh
YmFzZVRocmVhZCgpLT5yZWNvcmREYXRhYmFzZUNsb3NlZCh0aGlzKTsKKyAgICBjb250ZXh0LT5k
YXRhYmFzZVRocmVhZCgpLT51bnNjaGVkdWxlRGF0YWJhc2VUYXNrcyh0aGlzKTsKICAgICBEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5yZW1vdmVPcGVuRGF0YWJhc2UodGhpcyk7CiB9CiAKIHZv
aWQgRGF0YWJhc2U6OmNsb3NlSW1tZWRpYXRlbHkoKQogewogICAgIEFTU0VSVChtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKLSAgICBEYXRhYmFzZVRocmVhZCog
ZGF0YWJhc2VUaHJlYWQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmRhdGFiYXNlVGhyZWFk
KCk7CisgICAgRGF0YWJhc2VUaHJlYWQqIGRhdGFiYXNlVGhyZWFkID0gRGF0YWJhc2VDb250ZXh0
Ojpmcm9tKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPmRhdGFiYXNlVGhyZWFkKCk7CiAgICAg
aWYgKGRhdGFiYXNlVGhyZWFkICYmICFkYXRhYmFzZVRocmVhZC0+dGVybWluYXRpb25SZXF1ZXN0
ZWQoKSAmJiBvcGVuZWQoKSkgewogICAgICAgICBsb2dFcnJvck1lc3NhZ2UoImZvcmNpYmx5IGNs
b3NpbmcgZGF0YWJhc2UiKTsKICAgICAgICAgZGF0YWJhc2VUaHJlYWQtPnNjaGVkdWxlSW1tZWRp
YXRlVGFzayhEYXRhYmFzZUNsb3NlVGFzazo6Y3JlYXRlKHRoaXMsIDApKTsKQEAgLTI0OCw4ICsy
NTIsOSBAQCB1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2U6Om1heGltdW1TaXplCiBib29sIERh
dGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNl
LCBFeGNlcHRpb25Db2RlJiBlLCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKICAgICBpZiAoQWJz
dHJhY3REYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkoc2V0VmVyc2lvbkluTmV3RGF0YWJh
c2UsIGUsIGVycm9yTWVzc2FnZSkpIHsKLSAgICAgICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+ZGF0YWJhc2VUaHJlYWQoKSkKLSAgICAgICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+cmVjb3JkRGF0YWJhc2VPcGVuKHRoaXMpOworICAgICAg
ICBEYXRhYmFzZUNvbnRleHQqIGNvbnRleHQgPSBEYXRhYmFzZUNvbnRleHQ6OmZyb20obV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICAgICAgaWYgKGNvbnRleHQtPmRhdGFiYXNlVGhyZWFk
KCkpCisgICAgICAgICAgICBjb250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5yZWNvcmREYXRhYmFz
ZU9wZW4odGhpcyk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzExLDI2ICsz
MTYsMjggQEAgdm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvbigpCiAgICAgaWYgKG1f
aXNUcmFuc2FjdGlvblF1ZXVlRW5hYmxlZCAmJiAhbV90cmFuc2FjdGlvblF1ZXVlLmlzRW1wdHko
KSkKICAgICAgICAgdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9uUXVldWUudGFrZUZpcnN0KCk7
CiAKLSAgICBpZiAodHJhbnNhY3Rpb24gJiYgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRh
YmFzZVRocmVhZCgpKSB7CisgICAgRGF0YWJhc2VDb250ZXh0KiBjb250ZXh0ID0gRGF0YWJhc2VD
b250ZXh0Ojpmcm9tKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgaWYgKHRyYW5zYWN0
aW9uICYmIGNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCkpIHsKICAgICAgICAgT3duUHRyPERhdGFi
YXNlVHJhbnNhY3Rpb25UYXNrPiB0YXNrID0gRGF0YWJhc2VUcmFuc2FjdGlvblRhc2s6OmNyZWF0
ZSh0cmFuc2FjdGlvbik7CiAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiU2NoZWR1bGluZyBEYXRh
YmFzZVRyYW5zYWN0aW9uVGFzayAlcCBmb3IgdHJhbnNhY3Rpb24gJXBcbiIsIHRhc2suZ2V0KCks
IHRhc2stPnRyYW5zYWN0aW9uKCkpOwogICAgICAgICBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9
IHRydWU7Ci0gICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQo
KS0+c2NoZWR1bGVUYXNrKHRhc2sucmVsZWFzZSgpKTsKKyAgICAgICAgY29udGV4dC0+ZGF0YWJh
c2VUaHJlYWQoKS0+c2NoZWR1bGVUYXNrKHRhc2sucmVsZWFzZSgpKTsKICAgICB9IGVsc2UKICAg
ICAgICAgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTsKIH0KIAogdm9pZCBEYXRhYmFz
ZTo6c2NoZWR1bGVUcmFuc2FjdGlvblN0ZXAoU1FMVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBi
b29sIGltbWVkaWF0ZWx5KQogewotICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5k
YXRhYmFzZVRocmVhZCgpKQorICAgIERhdGFiYXNlQ29udGV4dCogY29udGV4dCA9IERhdGFiYXNl
Q29udGV4dDo6ZnJvbShtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIGlmICghY29udGV4
dC0+ZGF0YWJhc2VUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgT3duUHRyPERhdGFi
YXNlVHJhbnNhY3Rpb25UYXNrPiB0YXNrID0gRGF0YWJhc2VUcmFuc2FjdGlvblRhc2s6OmNyZWF0
ZSh0cmFuc2FjdGlvbik7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIERhdGFiYXNl
VHJhbnNhY3Rpb25UYXNrICVwIGZvciB0aGUgdHJhbnNhY3Rpb24gc3RlcFxuIiwgdGFzay5nZXQo
KSk7CiAgICAgaWYgKGltbWVkaWF0ZWx5KQotICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxlSW1tZWRpYXRlVGFzayh0YXNrLnJlbGVhc2Uo
KSk7CisgICAgICAgIGNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxlSW1tZWRpYXRl
VGFzayh0YXNrLnJlbGVhc2UoKSk7CiAgICAgZWxzZQotICAgICAgICBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxlVGFzayh0YXNrLnJlbGVhc2UoKSk7
CisgICAgICAgIGNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxlVGFzayh0YXNrLnJl
bGVhc2UoKSk7CiB9CiAKIGNsYXNzIERlbGl2ZXJQZW5kaW5nQ2FsbGJhY2tUYXNrIDogcHVibGlj
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewpAQCAtMzkwLDEyICszOTcsMTIgQEAgVmVj
dG9yPFN0cmluZz4gRGF0YWJhc2U6OnBlcmZvcm1HZXRUYWJsZQogCiBTUUxUcmFuc2FjdGlvbkNs
aWVudCogRGF0YWJhc2U6OnRyYW5zYWN0aW9uQ2xpZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT50cmFuc2FjdGlvbkNs
aWVudCgpOworICAgIHJldHVybiBEYXRhYmFzZUNvbnRleHQ6OmZyb20obV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0KS0+ZGF0YWJhc2VUaHJlYWQoKS0+dHJhbnNhY3Rpb25DbGllbnQoKTsKIH0KIAog
U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvciogRGF0YWJhc2U6OnRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IoKSBjb25zdAogewotICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFi
YXNlVGhyZWFkKCktPnRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKTsKKyAgICByZXR1cm4gRGF0YWJh
c2VDb250ZXh0Ojpmcm9tKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCktPmRhdGFiYXNlVGhyZWFk
KCktPnRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKTsKIH0KIAogVmVjdG9yPFN0cmluZz4gRGF0YWJh
c2U6OnRhYmxlTmFtZXMoKQpAQCAtNDA0LDExICs0MTEsMTIgQEAgVmVjdG9yPFN0cmluZz4gRGF0
YWJhc2U6OnRhYmxlTmFtZXMoKQogICAgIC8vIGluIGRlYWxpbmcgd2l0aCB0aGVtLiBIb3dldmVy
LCBpZiB0aGUgY29kZSBjaGFuZ2VzLCB0aGlzIG1heSBub3QgYmUgdHJ1ZSBhbnltb3JlLgogICAg
IFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKICAgICBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIgc3lu
Y2hyb25pemVyOwotICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRo
cmVhZCgpIHx8IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+dGVy
bWluYXRpb25SZXF1ZXN0ZWQoJnN5bmNocm9uaXplcikpCisgICAgRGF0YWJhc2VDb250ZXh0KiBj
b250ZXh0ID0gRGF0YWJhc2VDb250ZXh0Ojpmcm9tKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkK
KyAgICBpZiAoIWNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCkgfHwgY29udGV4dC0+ZGF0YWJhc2VU
aHJlYWQoKS0+dGVybWluYXRpb25SZXF1ZXN0ZWQoJnN5bmNocm9uaXplcikpCiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAKICAgICBPd25QdHI8RGF0YWJhc2VUYWJsZU5hbWVzVGFzaz4gdGFzayA9
IERhdGFiYXNlVGFibGVOYW1lc1Rhc2s6OmNyZWF0ZSh0aGlzLCAmc3luY2hyb25pemVyLCByZXN1
bHQpOwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+c2No
ZWR1bGVJbW1lZGlhdGVUYXNrKHRhc2sucmVsZWFzZSgpKTsKKyAgICBjb250ZXh0LT5kYXRhYmFz
ZVRocmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRhc2sodGFzay5yZWxlYXNlKCkpOwogICAgIHN5
bmNocm9uaXplci53YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKIAogICAgIHJldHVybiByZXN1bHQ7
CkBAIC00MTgsNyArNDI2LDcgQEAgU2VjdXJpdHlPcmlnaW4qIERhdGFiYXNlOjpzZWN1cml0eU9y
aWdpbgogewogICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVh
ZCgpKQogICAgICAgICByZXR1cm4gbV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCk7
Ci0gICAgaWYgKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRh
dGFiYXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkpCisgICAgaWYgKGN1cnJlbnRUaHJlYWQoKSA9
PSBEYXRhYmFzZUNvbnRleHQ6OmZyb20obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS0+ZGF0YWJh
c2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSkKICAgICAgICAgcmV0dXJuIG1fZGF0YWJhc2VUaHJl
YWRTZWN1cml0eU9yaWdpbi5nZXQoKTsKICAgICByZXR1cm4gMDsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ29udGV4dC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ29udGV4dC5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSwgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
RGF0YWJhc2VDb250ZXh0LmgiCisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjaW5jbHVk
ZSAiR2FtZXBhZExpc3QuaCIKKyNpbmNsdWRlICJHYW1lcGFkcy5oIgorI2luY2x1ZGUgIk5hdmln
YXRvci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworRGF0YWJhc2VDb250ZXh0OjpEYXRhYmFzZUNvbnRleHQoKQorICAgIDogbV9oYXNPcGVu
RGF0YWJhc2VzKGZhbHNlKQoreworfQorCitEYXRhYmFzZUNvbnRleHQ6On5EYXRhYmFzZUNvbnRl
eHQoKQoreworICAgIGlmIChtX2RhdGFiYXNlVGhyZWFkKSB7CisgICAgICAgIEFTU0VSVChtX2Rh
dGFiYXNlVGhyZWFkLT50ZXJtaW5hdGlvblJlcXVlc3RlZCgpKTsKKyAgICAgICAgbV9kYXRhYmFz
ZVRocmVhZCA9IDA7CisgICAgfQorfQorCitEYXRhYmFzZUNvbnRleHQqIERhdGFiYXNlQ29udGV4
dDo6ZnJvbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIERhdGFiYXNl
Q29udGV4dCogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERhdGFiYXNlQ29udGV4dCo+KFN1cHBs
ZW1lbnQ8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD46OmZyb20oY29udGV4dCwgIkRhdGFiYXNlQ29u
dGV4dCIpKTsKKyAgICBpZiAoIXN1cHBsZW1lbnQpIHsKKyAgICAgICAgc3VwcGxlbWVudCA9IG5l
dyBEYXRhYmFzZUNvbnRleHQoKTsKKyAgICAgICAgcHJvdmlkZVRvKGNvbnRleHQsIG5hbWUsIGFk
b3B0UHRyKHN1cHBsZW1lbnQpKTsKKyAgICB9CisgICAgcmV0dXJuIHN1cHBsZW1lbnQ7Cit9CisK
K0RhdGFiYXNlVGhyZWFkKiBEYXRhYmFzZUNvbnRleHQ6OmRhdGFiYXNlVGhyZWFkKCkKK3sKKyAg
ICBpZiAoIW1fZGF0YWJhc2VUaHJlYWQgJiYgIW1faGFzT3BlbkRhdGFiYXNlcykgeworICAgICAg
ICAvLyBDcmVhdGUgdGhlIGRhdGFiYXNlIHRocmVhZCBvbiBmaXJzdCByZXF1ZXN0IC0gYnV0IG5v
dCBpZiBhdCBsZWFzdCBvbmUgZGF0YWJhc2Ugd2FzIGFscmVhZHkgb3BlbmVkLAorICAgICAgICAv
LyBiZWNhdXNlIGluIHRoYXQgY2FzZSB3ZSBhbHJlYWR5IGhhZCBhIGRhdGFiYXNlIHRocmVhZCBh
bmQgdGVybWluYXRlZCBpdCBhbmQgc2hvdWxkIG5vdCBjcmVhdGUgYW5vdGhlci4KKyAgICAgICAg
bV9kYXRhYmFzZVRocmVhZCA9IERhdGFiYXNlVGhyZWFkOjpjcmVhdGUoKTsKKyAgICAgICAgaWYg
KCFtX2RhdGFiYXNlVGhyZWFkLT5zdGFydCgpKQorICAgICAgICAgICAgbV9kYXRhYmFzZVRocmVh
ZCA9IDA7CisgICAgfQorCisgICAgcmV0dXJuIG1fZGF0YWJhc2VUaHJlYWQuZ2V0KCk7Cit9CisK
K3ZvaWQgU1FMRGF0YWJhc2VDb250ZXh0OjpzdG9wRGF0YWJhc2VzKERhdGFiYXNlVGFza1N5bmNo
cm9uaXplciogY2xlYW51cFN5bmMpCit7CisgICAgQVNTRVJUKGlzQ29udGV4dFRocmVhZCgpKTsK
KyAgICBpZiAobV9kYXRhYmFzZVRocmVhZCkKKyAgICAgICAgbV9kYXRhYmFzZVRocmVhZC0+cmVx
dWVzdFRlcm1pbmF0aW9uKGNsZWFudXBTeW5jKTsKKyAgICBlbHNlIGlmIChjbGVhbnVwU3luYykK
KyAgICAgICAgY2xlYW51cFN5bmMtPnRhc2tDb21wbGV0ZWQoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNvbnRleHQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VDb250ZXh0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIERhdGFiYXNlQ29udGV4dF9oCisjZGVmaW5l
IERhdGFiYXNlQ29udGV4dF9oCisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjaW5jbHVk
ZSAiU3VwcGxlbWVudGFibGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEYXRh
YmFzZTsKK2NsYXNzIERhdGFiYXNlVGFza1N5bmNocm9uaXplcjsKK2NsYXNzIERhdGFiYXNlVGhy
ZWFkOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworY2xhc3MgRGF0YWJhc2VDb250
ZXh0IDogcHVibGljIFN1cHBsZW1lbnQ8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4geworcHVibGlj
OgorICAgIHZpcnR1YWwgfkRhdGFiYXNlQ29udGV4dCgpOworICAgIHN0YXRpYyBEYXRhYmFzZUNv
bnRleHQqIGZyb20oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCisgICAgRGF0YWJhc2VUaHJl
YWQqIGRhdGFiYXNlVGhyZWFkKCk7CisKKyAgICB2b2lkIHNldEhhc09wZW5EYXRhYmFzZXMoKSB7
IG1faGFzT3BlbkRhdGFiYXNlcyA9IHRydWU7IH0KKyAgICBib29sIGhhc09wZW5EYXRhYmFzZXMo
KSBjb25zdCB7IHJldHVybiBtX2hhc09wZW5EYXRhYmFzZXM7IH0KKworICAgIC8vIFdoZW4gdGhl
IGRhdGFiYXNlIGNsZWFudXAgaXMgZG9uZSwgY2xlYW51cFN5bmMgd2lsbCBiZSBzaWduYWxsZWQu
CisgICAgdm9pZCBzdG9wRGF0YWJhc2VzKERhdGFiYXNlVGFza1N5bmNocm9uaXplciopOworCitw
cml2YXRlOgorICAgIERhdGFiYXNlQ29udGV4dCgpOworCisgICAgUmVmUHRyPERhdGFiYXNlVGhy
ZWFkPiBtX2RhdGFiYXNlVGhyZWFkOworICAgIGJvb2wgbV9oYXNPcGVuRGF0YWJhc2VzOyAvLyBU
aGlzIG5ldmVyIGNoYW5nZXMgYmFjayB0byBmYWxzZSwgZXZlbiBhZnRlciB0aGUgZGF0YWJhc2Ug
dGhyZWFkIGlzIGNsb3NlZC4KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNlbmRpZiAvLyBEYXRhYmFzZUNvbnRleHRfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9u
IDEwODk1NykKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJEYXRhYmFzZS5oIgog
I2luY2x1ZGUgIkRhdGFiYXNlQXV0aG9yaXplci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4
dC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVGhyZWFkLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTE2Myw3ICsxNjQsNyBAQCB2b2lkIFNRTFRy
YW5zYWN0aW9uOjpjaGVja0FuZEhhbmRsZUNsb3NlCiAgICAgbV9lcnJvckNhbGxiYWNrV3JhcHBl
ci5jbGVhcigpOwogCiAgICAgLy8gVGhlIG5leHQgc3RlcHMgc2hvdWxkIGJlIGV4ZWN1dGVkIG9u
bHkgaWYgd2UncmUgb24gdGhlIERCIHRocmVhZC4KLSAgICBpZiAoY3VycmVudFRocmVhZCgpICE9
IGRhdGFiYXNlKCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+
Z2V0VGhyZWFkSUQoKSkKKyAgICBpZiAoY3VycmVudFRocmVhZCgpICE9IERhdGFiYXNlQ29udGV4
dDo6ZnJvbShkYXRhYmFzZSgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5kYXRhYmFzZVRo
cmVhZCgpLT5nZXRUaHJlYWRJRCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGUgY3Vy
cmVudCBTUUxpdGUgdHJhbnNhY3Rpb24gc2hvdWxkIGJlIHN0b3BwZWQsIGFzIHdlbGwKQEAgLTIx
NSw3ICsyMTYsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpwZXJmb3JtUGVuZGluZ0NhbGxiCiAK
IHZvaWQgU1FMVHJhbnNhY3Rpb246Om5vdGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0dGluZ0Rvd24o
KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZGF0YWJhc2UoKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5nZXRUaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IERhdGFiYXNlQ29udGV4dDo6ZnJvbShkYXRhYmFzZSgp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5kYXRhYmFzZVRocmVhZCgpLT5nZXRUaHJlYWRJ
RCgpKTsKIAogICAgIC8vIElmIHRoZSB0cmFuc2FjdGlvbiBpcyBpbiBwcm9ncmVzcywgd2Ugc2hv
dWxkIHJvbGwgaXQgYmFjayBoZXJlLCBzaW5jZSB0aGlzIGlzIG91ciBsYXN0CiAgICAgLy8gb3Bv
cnR1bml0eSB0byBkbyBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGlzIHRyYW5zYWN0aW9uIG9uIHRo
ZSBEQiB0aHJlYWQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3Bw
CShyZXZpc2lvbiAxMDg5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIldvcmtl
clRocmVhZC5oIgogCisjaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGVk
aWNhdGVkV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIgogI2luY2x1ZGUgIktVUkwuaCIKQEAgLTIxNSw4ICsyMTYsOSBAQCBwdWJsaWM6CiAgICAg
ICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBzdGF0aWNfY2FzdDxXb3JrZXJDb250
ZXh0Kj4oY29udGV4dCk7CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorICAgICAgICAvLyBG
SVhNRTogU2hvdWxkIHdlIHN0b3AgdGhlIGRhdGFiYXNlcyBhcyBwYXJ0IG9mIHN0b3BBY3RpdmVE
T01PYmplY3RzKCkgYmVsb3c/CiAgICAgICAgIERhdGFiYXNlVGFza1N5bmNocm9uaXplciBjbGVh
bnVwU3luYzsKLSAgICAgICAgd29ya2VyQ29udGV4dC0+c3RvcERhdGFiYXNlcygmY2xlYW51cFN5
bmMpOworICAgICAgICBEYXRhYmFzZUNvbnRleHQ6OmZyb20od29ya2VyQ29udGV4dCktPnN0b3BE
YXRhYmFzZXMoJmNsZWFudXBTeW5jKTsKICNlbmRpZgogCiAgICAgICAgIHdvcmtlckNvbnRleHQt
PnN0b3BBY3RpdmVET01PYmplY3RzKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128973</attachid>
            <date>2012-02-27 00:05:56 -0800</date>
            <delta_ts>2012-02-27 00:15:08 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-79633-20120227000554.patch</filename>
            <type>text/plain</type>
            <size>27698</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODk2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDEyLTAyLTI2ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCBoYXMgdG9vIG1hbnkgaWZkZWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKiBsb2FkZXIvRnJh
bWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5n
KToKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlOjpEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6b3BlbkFuZFZl
cmlmeVZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6Om1hcmtBc0RlbGV0ZWRB
bmRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2U6OmNsb3NlSW1tZWRpYXRlbHkpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlOjpzY2hlZHVsZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpz
Y2hlZHVsZVRyYW5zYWN0aW9uU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6dHJh
bnNhY3Rpb25DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnRhYmxlTmFtZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKiBz
dG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0
aW9uOjpjaGVja0FuZEhhbmRsZUNsb3NlZE9ySW50ZXJydXB0ZWREYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6bm90aWZ5RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5n
RG93bik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyVGhyZWFkU2h1dGRvd25TdGFydFRhc2s6OnBlcmZvcm1UYXNrKToKKwogMjAx
Mi0wMi0yNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMDg5NTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTQ2MzksNiArNDYzOSw4IEBA
CiAgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZUF1dGhvcml6ZXIuY3BwJywKICAgICAgICAg
ICAgICdzdG9yYWdlL0RhdGFiYXNlQXV0aG9yaXplci5oJywKICAgICAgICAgICAgICdzdG9yYWdl
L0RhdGFiYXNlQ2FsbGJhY2suaCcsCisgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZUNvbnRl
eHQuaCcsCisgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZUNvbnRleHQuY3BwJywKICAgICAg
ICAgICAgICdzdG9yYWdlL0RhdGFiYXNlU3luYy5jcHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2Uv
RGF0YWJhc2VTeW5jLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VUYXNrLmNwcCcs
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Bw
CShyZXZpc2lvbiAxMDg5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDkgKzMwLDYgQEAKICNpbmNsdWRlICJB
Y3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNp
bmNsdWRlICJET01UaW1lci5oIgotI2luY2x1ZGUgIkRhdGFiYXNlLmgiCi0jaW5jbHVkZSAiRGF0
YWJhc2VUYXNrLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQuaCIKICNpbmNsdWRlICJFcnJv
ckV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50VGFy
Z2V0LmgiCkBAIC05NCw5ICs5MSw2IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdEV4
ZWN1dGlvbkMKICAgICAsIG1faW5EZXN0cnVjdG9yKGZhbHNlKQogICAgICwgbV9pbkRpc3BhdGNo
RXJyb3JFdmVudChmYWxzZSkKICAgICAsIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZChm
YWxzZSkKLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgICwgbV9oYXNPcGVuRGF0YWJhc2Vz
KGZhbHNlKQotI2VuZGlmCiB7CiB9CiAKQEAgLTExNSwxMiArMTA5LDYgQEAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbgogICAgICAgICBBU1NFUlQoKCppdGVyKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHRoaXMpOwogICAgICAgICAoKml0ZXIpLT5jb250ZXh0
RGVzdHJveWVkKCk7CiAgICAgfQotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgaWYgKG1f
ZGF0YWJhc2VUaHJlYWQpIHsKLSAgICAgICAgQVNTRVJUKG1fZGF0YWJhc2VUaHJlYWQtPnRlcm1p
bmF0aW9uUmVxdWVzdGVkKCkpOwotICAgICAgICBtX2RhdGFiYXNlVGhyZWFkID0gMDsKLSAgICB9
Ci0jZW5kaWYKICNpZiBFTkFCTEUoQkxPQikgfHwgRU5BQkxFKEZJTEVfU1lTVEVNKQogICAgIGlm
IChtX2ZpbGVUaHJlYWQpIHsKICAgICAgICAgbV9maWxlVGhyZWFkLT5zdG9wKCk7CkBAIC0xMzMs
MzIgKzEyMSw2IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6On5TY3JpcHRFeGVjdXRpb24KICNl
bmRpZgogfQogCi0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLQotRGF0YWJhc2VUaHJlYWQqIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRhdGFiYXNlVGhyZWFkKCkKLXsKLSAgICBpZiAoIW1fZGF0
YWJhc2VUaHJlYWQgJiYgIW1faGFzT3BlbkRhdGFiYXNlcykgewotICAgICAgICAvLyBDcmVhdGUg
dGhlIGRhdGFiYXNlIHRocmVhZCBvbiBmaXJzdCByZXF1ZXN0IC0gYnV0IG5vdCBpZiBhdCBsZWFz
dCBvbmUgZGF0YWJhc2Ugd2FzIGFscmVhZHkgb3BlbmVkLAotICAgICAgICAvLyBiZWNhdXNlIGlu
IHRoYXQgY2FzZSB3ZSBhbHJlYWR5IGhhZCBhIGRhdGFiYXNlIHRocmVhZCBhbmQgdGVybWluYXRl
ZCBpdCBhbmQgc2hvdWxkIG5vdCBjcmVhdGUgYW5vdGhlci4KLSAgICAgICAgbV9kYXRhYmFzZVRo
cmVhZCA9IERhdGFiYXNlVGhyZWFkOjpjcmVhdGUoKTsKLSAgICAgICAgaWYgKCFtX2RhdGFiYXNl
VGhyZWFkLT5zdGFydCgpKQotICAgICAgICAgICAgbV9kYXRhYmFzZVRocmVhZCA9IDA7Ci0gICAg
fQotCi0gICAgcmV0dXJuIG1fZGF0YWJhc2VUaHJlYWQuZ2V0KCk7Ci19Ci0KLXZvaWQgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6c3RvcERhdGFiYXNlcyhEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIq
IGNsZWFudXBTeW5jKQotewotICAgIEFTU0VSVChpc0NvbnRleHRUaHJlYWQoKSk7Ci0gICAgaWYg
KG1fZGF0YWJhc2VUaHJlYWQpCi0gICAgICAgIG1fZGF0YWJhc2VUaHJlYWQtPnJlcXVlc3RUZXJt
aW5hdGlvbihjbGVhbnVwU3luYyk7Ci0gICAgZWxzZSBpZiAoY2xlYW51cFN5bmMpCi0gICAgICAg
IGNsZWFudXBTeW5jLT50YXNrQ29tcGxldGVkKCk7Ci19Ci0KLSNlbmRpZgotCiB2b2lkIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OnByb2Nlc3NNZXNzYWdlUG9ydE1lc3NhZ2VzU29vbigpCiB7CiAg
ICAgcG9zdFRhc2soUHJvY2Vzc01lc3NhZ2VzU29vblRhc2s6OmNyZWF0ZSgpKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAkocmV2aXNpb24gMTA4
OTU3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRl
ICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJTZWN1cml0eUNvbnRleHQuaCIKKyNpbmNs
dWRlICJTdXBwbGVtZW50YWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNTYsMTcgKzU3
LDEyIEBAIGNsYXNzIE1lc3NhZ2VQb3J0OwogI2lmIEVOQUJMRShCTE9CKQogY2xhc3MgUHVibGlj
VVJMTWFuYWdlcjsKICNlbmRpZgotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi1jbGFzcyBEYXRh
YmFzZTsKLWNsYXNzIERhdGFiYXNlVGFza1N5bmNocm9uaXplcjsKLWNsYXNzIERhdGFiYXNlVGhy
ZWFkOwotI2VuZGlmCiAKICNpZiBFTkFCTEUoQkxPQikgfHwgRU5BQkxFKEZJTEVfU1lTVEVNKQog
Y2xhc3MgRmlsZVRocmVhZDsKICNlbmRpZgogCi1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
IDogcHVibGljIFNlY3VyaXR5Q29udGV4dCB7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
IDogcHVibGljIFNlY3VyaXR5Q29udGV4dCwgcHVibGljIFN1cHBsZW1lbnRhYmxlPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ+IHsKIHB1YmxpYzoKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CiAgICAgdmlydHVhbCB+U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtNzcsMTEgKzczLDYg
QEAgcHVibGljOgogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgdmlydHVhbCBib29sIGFs
bG93RGF0YWJhc2VBY2Nlc3MoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRhdGFiYXNl
RXhjZWVkZWRRdW90YShjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKLSAgICBEYXRhYmFzZVRocmVh
ZCogZGF0YWJhc2VUaHJlYWQoKTsKLSAgICB2b2lkIHNldEhhc09wZW5EYXRhYmFzZXMoKSB7IG1f
aGFzT3BlbkRhdGFiYXNlcyA9IHRydWU7IH0KLSAgICBib29sIGhhc09wZW5EYXRhYmFzZXMoKSBj
b25zdCB7IHJldHVybiBtX2hhc09wZW5EYXRhYmFzZXM7IH0KLSAgICAvLyBXaGVuIHRoZSBkYXRh
YmFzZSBjbGVhbnVwIGlzIGRvbmUsIGNsZWFudXBTeW5jIHdpbGwgYmUgc2lnbmFsbGVkLgotICAg
IHZvaWQgc3RvcERhdGFiYXNlcyhEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIqKTsKICNlbmRpZgog
ICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRleHRUaHJlYWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAgICAgdmlydHVhbCBib29sIGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdCA9IDA7CkBA
IC0yMjQsMTEgKzIxNSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2FjdGl2ZURPTU9iamVjdHNB
cmVTdXNwZW5kZWQ7CiAgICAgQWN0aXZlRE9NT2JqZWN0OjpSZWFzb25Gb3JTdXNwZW5zaW9uIG1f
cmVhc29uRm9yU3VzcGVuZGluZ0FjdGl2ZURPTU9iamVjdHM7CiAKLSNpZiBFTkFCTEUoU1FMX0RB
VEFCQVNFKQotICAgIFJlZlB0cjxEYXRhYmFzZVRocmVhZD4gbV9kYXRhYmFzZVRocmVhZDsKLSAg
ICBib29sIG1faGFzT3BlbkRhdGFiYXNlczsgLy8gVGhpcyBuZXZlciBjaGFuZ2VzIGJhY2sgdG8g
ZmFsc2UsIGV2ZW4gYWZ0ZXIgdGhlIGRhdGFiYXNlIHRocmVhZCBpcyBjbG9zZWQuCi0jZW5kaWYK
LQogI2lmIEVOQUJMRShCTE9CKSB8fCBFTkFCTEUoRklMRV9TWVNURU0pCiAgICAgUmVmUHRyPEZp
bGVUaHJlYWQ+IG1fZmlsZVRocmVhZDsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9QYWdlQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
UGFnZUNhY2hlLmNwcAkocmV2aXNpb24gMTA4OTU3KQorKysgU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9QYWdlQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk
ZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJDYWNoZWRQYWdlLmgiCiAjaW5jbHVkZSAiRE9N
V2luZG93LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGV2aWNl
TW90aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCkBAIC0xMjAsNyArMTIxLDcgQEAgc3RhdGljIGJv
b2wgbG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uKEZyYQogICAgICAgICAgICAgY2Fubm90Q2FjaGUg
PSB0cnVlOwogICAgICAgICB9CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICAgICAgaWYg
KGZyYW1lLT5kb2N1bWVudCgpLT5oYXNPcGVuRGF0YWJhc2VzKCkpIHsKKyAgICAgICAgaWYgKERh
dGFiYXNlQ29udGV4dDo6ZnJvbShmcmFtZS0+ZG9jdW1lbnQoKSktPmhhc09wZW5EYXRhYmFzZXMo
KSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1GcmFtZSBoYXMgb3BlbiBkYXRhYmFzZSBoYW5k
bGVzIik7CiAgICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CiAgICAgICAgIH0KQEAgLTI2
Myw3ICsyNjQsNyBAQCBib29sIFBhZ2VDYWNoZTo6Y2FuQ2FjaGVQYWdlQ29udGFpbmluZ1RoCiAg
ICAgICAgICYmICghZG9jdW1lbnQtPnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgfHwgKCFkb2N1
bWVudExvYWRlci0+cmVzcG9uc2UoKS5jYWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSAmJiAh
ZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuY2FjaGVDb250cm9sQ29udGFpbnNOb1N0b3JlKCkp
KQogICAgICAgICAmJiAoIWZyYW1lLT5kb21XaW5kb3coKSB8fCAhZnJhbWUtPmRvbVdpbmRvdygp
LT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkudW5sb2FkRXZlbnQpKQogI2lmIEVOQUJM
RShTUUxfREFUQUJBU0UpCi0gICAgICAgICYmICFkb2N1bWVudC0+aGFzT3BlbkRhdGFiYXNlcygp
CisgICAgICAgICYmICFEYXRhYmFzZUNvbnRleHQ6OmZyb20oZG9jdW1lbnQpLT5oYXNPcGVuRGF0
YWJhc2VzKCkKICNlbmRpZgogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKICAgICAgICAgJiYg
IVNoYXJlZFdvcmtlclJlcG9zaXRvcnk6Omhhc1NoYXJlZFdvcmtlcnMoZG9jdW1lbnQpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDEwODk1NykKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDb25z
b2xlLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCisjaW5jbHVkZSAiRGF0
YWJhc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtNDE4LDcgKzQxOSw4IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKFVubG9hZEV2ZW4KICAgICAgICAgZG9jLT5z
ZXRSZWFkeVN0YXRlKERvY3VtZW50OjpDb21wbGV0ZSk7CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQotICAgICAgICBkb2MtPnN0b3BEYXRhYmFzZXMoMCk7CisgICAgICAgIC8vIEZJWE1FOiBT
aG91bGQgdGhlIERhdGFiYXNlQ29udGV4dCB3YXRjaCBmb3Igc29tZXRoaW5nIGxpa2UgQWN0aXZl
RE9NT2JqZWN0OjpzdG9wKCkgcmF0aGVyIHRoYW4gYmVpbmcgc3BlY2lhbC1jYXNlZCBoZXJlPwor
ICAgICAgICBEYXRhYmFzZUNvbnRleHQ6OmZyb20oZG9jKS0+c3RvcERhdGFiYXNlcygwKTsKICNl
bmRpZgogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9BYnN0cmFjdERhdGFi
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0Fic3RyYWN0RGF0
YWJhc2UuY3BwCShyZXZpc2lvbiAxMDg5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0Fi
c3RyYWN0RGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaWYg
RU5BQkxFKFNRTF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIkRhdGFiYXNlQXV0aG9yaXplci5oIgor
I2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC0x
ODgsNiArMTg5LDcgQEAgY29uc3QgY2hhciogQWJzdHJhY3REYXRhYmFzZTo6ZGF0YWJhc2VJbgog
QWJzdHJhY3REYXRhYmFzZTo6QWJzdHJhY3REYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJz
aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGRp
c3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIERhdGFiYXNlVHlwZSBkYXRh
YmFzZVR5cGUpCiAgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKKyAgICAs
IG1fZGF0YWJhc2VDb250ZXh0KERhdGFiYXNlQ29udGV4dDo6ZnJvbShjb250ZXh0KSkKICAgICAs
IG1fbmFtZShuYW1lLmlzb2xhdGVkQ29weSgpKQogICAgICwgbV9leHBlY3RlZFZlcnNpb24oZXhw
ZWN0ZWRWZXJzaW9uLmlzb2xhdGVkQ29weSgpKQogICAgICwgbV9kaXNwbGF5TmFtZShkaXNwbGF5
TmFtZS5pc29sYXRlZENvcHkoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQWJzdHJh
Y3REYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQWJzdHJh
Y3REYXRhYmFzZS5oCShyZXZpc2lvbiAxMDg5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0Fic3RyYWN0RGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEYXRhYmFzZUF1dGhvcml6ZXI7CitjbGFzcyBEYXRh
YmFzZUNvbnRleHQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJp
dHlPcmlnaW47CiAKQEAgLTg2LDYgKzg3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBt
YXJrQXNEZWxldGVkQW5kQ2xvc2UoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlSW1tZWRp
YXRlbHkoKSA9IDA7CiAKKyAgICBEYXRhYmFzZUNvbnRleHQqIGRhdGFiYXNlQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VDb250ZXh0OyB9CisKIHByb3RlY3RlZDoKICAgICBmcmll
bmQgY2xhc3MgQ2hhbmdlVmVyc2lvbldyYXBwZXI7CiAgICAgZnJpZW5kIGNsYXNzIFNRTFN0YXRl
bWVudDsKQEAgLTEyNCw4ICsxMjcsOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0aWMgY29uc3Qg
Y2hhciogZGF0YWJhc2VJbmZvVGFibGVOYW1lKCk7CiAKLSAgICBSZWZQdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAgIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4gbV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW47CisgICAgUmVmUHRyPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ+IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBEYXRhYmFz
ZUNvbnRleHQqIG1fZGF0YWJhc2VDb250ZXh0OyAvLyBPd25lZCBieSBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuCiAKICAgICBTdHJpbmcgbV9uYW1lOwogICAgIFN0cmluZyBtX2V4cGVjdGVkVmVy
c2lvbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAxMDg5
NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkNoYW5nZVZlcnNpb25XcmFwcGVyLmgiCiAj
aW5jbHVkZSAiQ3Jvc3NUaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VDYWxsYmFjay5o
IgorI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVGFzay5o
IgogI2luY2x1ZGUgIkRhdGFiYXNlVGhyZWFkLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2Vy
LmgiCkBAIC0xMDksNyArMTEwLDcgQEAgUGFzc1JlZlB0cjxEYXRhYmFzZT4gRGF0YWJhc2U6Om9w
ZW5EYXRhYgogCiAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0RGF0YWJhc2VEZXRh
aWxzKGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0
ZWRTaXplKTsKIAotICAgIGNvbnRleHQtPnNldEhhc09wZW5EYXRhYmFzZXMoKTsKKyAgICBEYXRh
YmFzZUNvbnRleHQ6OmZyb20oY29udGV4dCktPnNldEhhc09wZW5EYXRhYmFzZXMoKTsKIAogICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkRhdGFiYXNlKGNvbnRleHQsIGRhdGFi
YXNlLCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5ob3N0KCksIG5hbWUsIGV4cGVjdGVkVmVy
c2lvbik7CiAKQEAgLTEzMCw3ICsxMzEsNyBAQCBEYXRhYmFzZTo6RGF0YWJhc2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4CiAgICAgbV9kYXRhYmFzZVRocmVhZFNlY3VyaXR5T3JpZ2luID0gbV9jb250
ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4tPmlzb2xhdGVkQ29weSgpOwogCiAgICAgU2NyaXB0Q29u
dHJvbGxlcjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwotICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlQ29u
dGV4dC0+ZGF0YWJhc2VUaHJlYWQoKSk7CiB9CiAKIGNsYXNzIERlcmVmQ29udGV4dFRhc2sgOiBw
dWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CkBAIC0xNzksMTIgKzE4MCwxMiBA
QCBTdHJpbmcgRGF0YWJhc2U6OnZlcnNpb24oKSBjb25zdAogYm9vbCBEYXRhYmFzZTo6b3BlbkFu
ZFZlcmlmeVZlcnNpb24oYm9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgRXhjZXB0aW9uQ29k
ZSYgZSwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7CiAgICAgRGF0YWJhc2VUYXNrU3luY2hyb25p
emVyIHN5bmNocm9uaXplcjsKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0
YWJhc2VUaHJlYWQoKSB8fCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFk
KCktPnRlcm1pbmF0aW9uUmVxdWVzdGVkKCZzeW5jaHJvbml6ZXIpKQorICAgIGlmICghbV9kYXRh
YmFzZUNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCkgfHwgbV9kYXRhYmFzZUNvbnRleHQtPmRhdGFi
YXNlVGhyZWFkKCktPnRlcm1pbmF0aW9uUmVxdWVzdGVkKCZzeW5jaHJvbml6ZXIpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICBPd25QdHI8
RGF0YWJhc2VPcGVuVGFzaz4gdGFzayA9IERhdGFiYXNlT3BlblRhc2s6OmNyZWF0ZSh0aGlzLCBz
ZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgJnN5bmNocm9uaXplciwgZSwgZXJyb3JNZXNzYWdlLCBz
dWNjZXNzKTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCkt
PnNjaGVkdWxlSW1tZWRpYXRlVGFzayh0YXNrLnJlbGVhc2UoKSk7CisgICAgbV9kYXRhYmFzZUNv
bnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxlSW1tZWRpYXRlVGFzayh0YXNrLnJlbGVh
c2UoKSk7CiAgICAgc3luY2hyb25pemVyLndhaXRGb3JUYXNrQ29tcGxldGlvbigpOwogCiAgICAg
cmV0dXJuIHN1Y2Nlc3M7CkBAIC0xOTIsMjcgKzE5MywyNyBAQCBib29sIERhdGFiYXNlOjpvcGVu
QW5kVmVyaWZ5VmVyc2lvbihib29sCiAKIHZvaWQgRGF0YWJhc2U6Om1hcmtBc0RlbGV0ZWRBbmRD
bG9zZSgpCiB7Ci0gICAgaWYgKG1fZGVsZXRlZCB8fCAhbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5kYXRhYmFzZVRocmVhZCgpKQorICAgIGlmIChtX2RlbGV0ZWQgfHwgIW1fZGF0YWJhc2VDb250
ZXh0LT5kYXRhYmFzZVRocmVhZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBMT0coU3RvcmFn
ZUFQSSwgIk1hcmtpbmcgJXMgKCVwKSBhcyBkZWxldGVkIiwgc3RyaW5nSWRlbnRpZmllcigpLmFz
Y2lpKCkuZGF0YSgpLCB0aGlzKTsKICAgICBtX2RlbGV0ZWQgPSB0cnVlOwogCiAgICAgRGF0YWJh
c2VUYXNrU3luY2hyb25pemVyIHN5bmNocm9uaXplcjsKLSAgICBpZiAobV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT50ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hy
b25pemVyKSkgeworICAgIGlmIChtX2RhdGFiYXNlQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+
dGVybWluYXRpb25SZXF1ZXN0ZWQoJnN5bmNocm9uaXplcikpIHsKICAgICAgICAgTE9HKFN0b3Jh
Z2VBUEksICJEYXRhYmFzZSBoYW5kbGUgJXAgaXMgb24gYSB0ZXJtaW5hdGVkIERhdGFiYXNlVGhy
ZWFkLCBjYW5ub3QgYmUgbWFya2VkIGZvciBub3JtYWwgY2xvc3VyZVxuIiwgdGhpcyk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBPd25QdHI8RGF0YWJhc2VDbG9zZVRhc2s+IHRhc2sg
PSBEYXRhYmFzZUNsb3NlVGFzazo6Y3JlYXRlKHRoaXMsICZzeW5jaHJvbml6ZXIpOwotICAgIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+c2NoZWR1bGVJbW1lZGlh
dGVUYXNrKHRhc2sucmVsZWFzZSgpKTsKKyAgICBtX2RhdGFiYXNlQ29udGV4dC0+ZGF0YWJhc2VU
aHJlYWQoKS0+c2NoZWR1bGVJbW1lZGlhdGVUYXNrKHRhc2sucmVsZWFzZSgpKTsKICAgICBzeW5j
aHJvbml6ZXIud2FpdEZvclRhc2tDb21wbGV0aW9uKCk7CiB9CiAKIHZvaWQgRGF0YWJhc2U6OmNs
b3NlKCkKIHsKLSAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRo
cmVhZCgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKG1f
ZGF0YWJhc2VDb250ZXh0LT5kYXRhYmFzZVRocmVhZCgpKTsKKyAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fZGF0YWJhc2VDb250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5nZXRUaHJlYWRJ
RCgpKTsKIAogICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdHJhbnNhY3Rpb25J
blByb2dyZXNzTXV0ZXgpOwpAQCAtMjI1LDE1ICsyMjYsMTUgQEAgdm9pZCBEYXRhYmFzZTo6Y2xv
c2UoKQogCiAgICAgLy8gTXVzdCByZWYoKSBiZWZvcmUgY2FsbGluZyBkYXRhYmFzZVRocmVhZCgp
LT5yZWNvcmREYXRhYmFzZUNsb3NlZCgpLgogICAgIFJlZlB0cjxEYXRhYmFzZT4gcHJvdGVjdCA9
IHRoaXM7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5y
ZWNvcmREYXRhYmFzZUNsb3NlZCh0aGlzKTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmRhdGFiYXNlVGhyZWFkKCktPnVuc2NoZWR1bGVEYXRhYmFzZVRhc2tzKHRoaXMpOworICAgIG1f
ZGF0YWJhc2VDb250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5yZWNvcmREYXRhYmFzZUNsb3NlZCh0
aGlzKTsKKyAgICBtX2RhdGFiYXNlQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+dW5zY2hlZHVs
ZURhdGFiYXNlVGFza3ModGhpcyk7CiAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucmVt
b3ZlT3BlbkRhdGFiYXNlKHRoaXMpOwogfQogCiB2b2lkIERhdGFiYXNlOjpjbG9zZUltbWVkaWF0
ZWx5KCkKIHsKICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRU
aHJlYWQoKSk7Ci0gICAgRGF0YWJhc2VUaHJlYWQqIGRhdGFiYXNlVGhyZWFkID0gc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpOworICAgIERhdGFiYXNlVGhyZWFkKiBk
YXRhYmFzZVRocmVhZCA9IG1fZGF0YWJhc2VDb250ZXh0LT5kYXRhYmFzZVRocmVhZCgpOwogICAg
IGlmIChkYXRhYmFzZVRocmVhZCAmJiAhZGF0YWJhc2VUaHJlYWQtPnRlcm1pbmF0aW9uUmVxdWVz
dGVkKCkgJiYgb3BlbmVkKCkpIHsKICAgICAgICAgbG9nRXJyb3JNZXNzYWdlKCJmb3JjaWJseSBj
bG9zaW5nIGRhdGFiYXNlIik7CiAgICAgICAgIGRhdGFiYXNlVGhyZWFkLT5zY2hlZHVsZUltbWVk
aWF0ZVRhc2soRGF0YWJhc2VDbG9zZVRhc2s6OmNyZWF0ZSh0aGlzLCAwKSk7CkBAIC0yNDgsOCAr
MjQ5LDggQEAgdW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNlOjptYXhpbXVtU2l6ZQogYm9vbCBE
YXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkoYm9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFz
ZSwgRXhjZXB0aW9uQ29kZSYgZSwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7CiAgICAgaWYgKEFi
c3RyYWN0RGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KHNldFZlcnNpb25Jbk5ld0RhdGFi
YXNlLCBlLCBlcnJvck1lc3NhZ2UpKSB7Ci0gICAgICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPmRhdGFiYXNlVGhyZWFkKCkpCi0gICAgICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnJlY29yZERhdGFiYXNlT3Blbih0aGlzKTsKKyAgICAg
ICAgaWYgKG1fZGF0YWJhc2VDb250ZXh0LT5kYXRhYmFzZVRocmVhZCgpKQorICAgICAgICAgICAg
bV9kYXRhYmFzZUNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnJlY29yZERhdGFiYXNlT3Blbih0
aGlzKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zMTEsMjYgKzMxMiwyNiBA
QCB2b2lkIERhdGFiYXNlOjpzY2hlZHVsZVRyYW5zYWN0aW9uKCkKICAgICBpZiAobV9pc1RyYW5z
YWN0aW9uUXVldWVFbmFibGVkICYmICFtX3RyYW5zYWN0aW9uUXVldWUuaXNFbXB0eSgpKQogICAg
ICAgICB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25RdWV1ZS50YWtlRmlyc3QoKTsKIAotICAg
IGlmICh0cmFuc2FjdGlvbiAmJiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhy
ZWFkKCkpIHsKKyAgICBpZiAodHJhbnNhY3Rpb24gJiYgbV9kYXRhYmFzZUNvbnRleHQtPmRhdGFi
YXNlVGhyZWFkKCkpIHsKICAgICAgICAgT3duUHRyPERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrPiB0
YXNrID0gRGF0YWJhc2VUcmFuc2FjdGlvblRhc2s6OmNyZWF0ZSh0cmFuc2FjdGlvbik7CiAgICAg
ICAgIExPRyhTdG9yYWdlQVBJLCAiU2NoZWR1bGluZyBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzayAl
cCBmb3IgdHJhbnNhY3Rpb24gJXBcbiIsIHRhc2suZ2V0KCksIHRhc2stPnRyYW5zYWN0aW9uKCkp
OwogICAgICAgICBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IHRydWU7Ci0gICAgICAgIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+c2NoZWR1bGVUYXNrKHRhc2su
cmVsZWFzZSgpKTsKKyAgICAgICAgbV9kYXRhYmFzZUNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCkt
PnNjaGVkdWxlVGFzayh0YXNrLnJlbGVhc2UoKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fdHJh
bnNhY3Rpb25JblByb2dyZXNzID0gZmFsc2U7CiB9CiAKIHZvaWQgRGF0YWJhc2U6OnNjaGVkdWxl
VHJhbnNhY3Rpb25TdGVwKFNRTFRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgYm9vbCBpbW1lZGlh
dGVseSkKIHsKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJl
YWQoKSkKKyAgICBpZiAoIW1fZGF0YWJhc2VDb250ZXh0LT5kYXRhYmFzZVRocmVhZCgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBPd25QdHI8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+IHRhc2sg
PSBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzazo6Y3JlYXRlKHRyYW5zYWN0aW9uKTsKICAgICBMT0co
U3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgRGF0YWJhc2VUcmFuc2FjdGlvblRhc2sgJXAgZm9yIHRo
ZSB0cmFuc2FjdGlvbiBzdGVwXG4iLCB0YXNrLmdldCgpKTsKICAgICBpZiAoaW1tZWRpYXRlbHkp
Ci0gICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+c2No
ZWR1bGVJbW1lZGlhdGVUYXNrKHRhc2sucmVsZWFzZSgpKTsKKyAgICAgICAgbV9kYXRhYmFzZUNv
bnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxlSW1tZWRpYXRlVGFzayh0YXNrLnJlbGVh
c2UoKSk7CiAgICAgZWxzZQotICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFi
YXNlVGhyZWFkKCktPnNjaGVkdWxlVGFzayh0YXNrLnJlbGVhc2UoKSk7CisgICAgICAgIG1fZGF0
YWJhc2VDb250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZVRhc2sodGFzay5yZWxlYXNl
KCkpOwogfQogCiBjbGFzcyBEZWxpdmVyUGVuZGluZ0NhbGxiYWNrVGFzayA6IHB1YmxpYyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKQEAgLTM5MCwxMiArMzkxLDEyIEBAIFZlY3RvcjxT
dHJpbmc+IERhdGFiYXNlOjpwZXJmb3JtR2V0VGFibGUKIAogU1FMVHJhbnNhY3Rpb25DbGllbnQq
IERhdGFiYXNlOjp0cmFuc2FjdGlvbkNsaWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+dHJhbnNhY3Rpb25DbGllbnQo
KTsKKyAgICByZXR1cm4gbV9kYXRhYmFzZUNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnRyYW5z
YWN0aW9uQ2xpZW50KCk7CiB9CiAKIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqIERhdGFiYXNl
Ojp0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT50cmFuc2FjdGlvbkNvb3JkaW5hdG9y
KCk7CisgICAgcmV0dXJuIG1fZGF0YWJhc2VDb250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT50cmFu
c2FjdGlvbkNvb3JkaW5hdG9yKCk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IERhdGFiYXNlOjp0YWJs
ZU5hbWVzKCkKQEAgLTQwNCwxMSArNDA1LDExIEBAIFZlY3RvcjxTdHJpbmc+IERhdGFiYXNlOjp0
YWJsZU5hbWVzKCkKICAgICAvLyBpbiBkZWFsaW5nIHdpdGggdGhlbS4gSG93ZXZlciwgaWYgdGhl
IGNvZGUgY2hhbmdlcywgdGhpcyBtYXkgbm90IGJlIHRydWUgYW55bW9yZS4KICAgICBWZWN0b3I8
U3RyaW5nPiByZXN1bHQ7CiAgICAgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyIHN5bmNocm9uaXpl
cjsKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKSB8
fCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnRlcm1pbmF0aW9u
UmVxdWVzdGVkKCZzeW5jaHJvbml6ZXIpKQorICAgIGlmICghbV9kYXRhYmFzZUNvbnRleHQtPmRh
dGFiYXNlVGhyZWFkKCkgfHwgbV9kYXRhYmFzZUNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnRl
cm1pbmF0aW9uUmVxdWVzdGVkKCZzeW5jaHJvbml6ZXIpKQogICAgICAgICByZXR1cm4gcmVzdWx0
OwogCiAgICAgT3duUHRyPERhdGFiYXNlVGFibGVOYW1lc1Rhc2s+IHRhc2sgPSBEYXRhYmFzZVRh
YmxlTmFtZXNUYXNrOjpjcmVhdGUodGhpcywgJnN5bmNocm9uaXplciwgcmVzdWx0KTsKLSAgICBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxlSW1tZWRp
YXRlVGFzayh0YXNrLnJlbGVhc2UoKSk7CisgICAgbV9kYXRhYmFzZUNvbnRleHQtPmRhdGFiYXNl
VGhyZWFkKCktPnNjaGVkdWxlSW1tZWRpYXRlVGFzayh0YXNrLnJlbGVhc2UoKSk7CiAgICAgc3lu
Y2hyb25pemVyLndhaXRGb3JUYXNrQ29tcGxldGlvbigpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsK
QEAgLTQxOCw3ICs0MTksNyBAQCBTZWN1cml0eU9yaWdpbiogRGF0YWJhc2U6OnNlY3VyaXR5T3Jp
Z2luCiB7CiAgICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250ZXh0VGhyZWFk
KCkpCiAgICAgICAgIHJldHVybiBtX2NvbnRleHRUaHJlYWRTZWN1cml0eU9yaWdpbi5nZXQoKTsK
LSAgICBpZiAoY3VycmVudFRocmVhZCgpID09IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0
YWJhc2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSkKKyAgICBpZiAoY3VycmVudFRocmVhZCgpID09
IG1fZGF0YWJhc2VDb250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5nZXRUaHJlYWRJRCgpKQogICAg
ICAgICByZXR1cm4gbV9kYXRhYmFzZVRocmVhZFNlY3VyaXR5T3JpZ2luLmdldCgpOwogICAgIHJl
dHVybiAwOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNvbnRleHQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VDb250ZXh0
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VDb250
ZXh0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKKworI2lmIEVOQUJM
RShTUUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIkRhdGFi
YXNlVGFzay5oIgorI2luY2x1ZGUgIkRhdGFiYXNlVGhyZWFkLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworRGF0YWJhc2VDb250ZXh0OjpEYXRhYmFzZUNvbnRleHQoKQorICAgIDogbV9oYXNP
cGVuRGF0YWJhc2VzKGZhbHNlKQoreworfQorCitEYXRhYmFzZUNvbnRleHQ6On5EYXRhYmFzZUNv
bnRleHQoKQoreworICAgIGlmIChtX2RhdGFiYXNlVGhyZWFkKSB7CisgICAgICAgIEFTU0VSVCht
X2RhdGFiYXNlVGhyZWFkLT50ZXJtaW5hdGlvblJlcXVlc3RlZCgpKTsKKyAgICAgICAgbV9kYXRh
YmFzZVRocmVhZCA9IDA7CisgICAgfQorfQorCitEYXRhYmFzZUNvbnRleHQqIERhdGFiYXNlQ29u
dGV4dDo6ZnJvbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIEF0b21p
Y1N0cmluZyBuYW1lID0gIkRhdGFiYXNlQ29udGV4dCI7CisgICAgRGF0YWJhc2VDb250ZXh0KiBz
dXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RGF0YWJhc2VDb250ZXh0Kj4oU3VwcGxlbWVudDxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Pjo6ZnJvbShjb250ZXh0LCBuYW1lKSk7CisgICAgaWYgKCFzdXBw
bGVtZW50KSB7CisgICAgICAgIHN1cHBsZW1lbnQgPSBuZXcgRGF0YWJhc2VDb250ZXh0KCk7Cisg
ICAgICAgIHByb3ZpZGVUbyhjb250ZXh0LCBuYW1lLCBhZG9wdFB0cihzdXBwbGVtZW50KSk7Cisg
ICAgfQorICAgIHJldHVybiBzdXBwbGVtZW50OworfQorCitEYXRhYmFzZVRocmVhZCogRGF0YWJh
c2VDb250ZXh0OjpkYXRhYmFzZVRocmVhZCgpCit7CisgICAgaWYgKCFtX2RhdGFiYXNlVGhyZWFk
ICYmICFtX2hhc09wZW5EYXRhYmFzZXMpIHsKKyAgICAgICAgLy8gQ3JlYXRlIHRoZSBkYXRhYmFz
ZSB0aHJlYWQgb24gZmlyc3QgcmVxdWVzdCAtIGJ1dCBub3QgaWYgYXQgbGVhc3Qgb25lIGRhdGFi
YXNlIHdhcyBhbHJlYWR5IG9wZW5lZCwKKyAgICAgICAgLy8gYmVjYXVzZSBpbiB0aGF0IGNhc2Ug
d2UgYWxyZWFkeSBoYWQgYSBkYXRhYmFzZSB0aHJlYWQgYW5kIHRlcm1pbmF0ZWQgaXQgYW5kIHNo
b3VsZCBub3QgY3JlYXRlIGFub3RoZXIuCisgICAgICAgIG1fZGF0YWJhc2VUaHJlYWQgPSBEYXRh
YmFzZVRocmVhZDo6Y3JlYXRlKCk7CisgICAgICAgIGlmICghbV9kYXRhYmFzZVRocmVhZC0+c3Rh
cnQoKSkKKyAgICAgICAgICAgIG1fZGF0YWJhc2VUaHJlYWQgPSAwOworICAgIH0KKworICAgIHJl
dHVybiBtX2RhdGFiYXNlVGhyZWFkLmdldCgpOworfQorCit2b2lkIERhdGFiYXNlQ29udGV4dDo6
c3RvcERhdGFiYXNlcyhEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIqIGNsZWFudXBTeW5jKQorewor
ICAgIEFTU0VSVChpc0NvbnRleHRUaHJlYWQoKSk7CisgICAgaWYgKG1fZGF0YWJhc2VUaHJlYWQp
CisgICAgICAgIG1fZGF0YWJhc2VUaHJlYWQtPnJlcXVlc3RUZXJtaW5hdGlvbihjbGVhbnVwU3lu
Yyk7CisgICAgZWxzZSBpZiAoY2xlYW51cFN5bmMpCisgICAgICAgIGNsZWFudXBTeW5jLT50YXNr
Q29tcGxldGVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShTUUxfREFUQUJBU0UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNl
Q29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VD
b250ZXh0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNl
Q29udGV4dC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lm
bmRlZiBEYXRhYmFzZUNvbnRleHRfaAorI2RlZmluZSBEYXRhYmFzZUNvbnRleHRfaAorCisjaWYg
RU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGF0YWJhc2U7CitjbGFzcyBEYXRhYmFzZVRhc2tT
eW5jaHJvbml6ZXI7CitjbGFzcyBEYXRhYmFzZVRocmVhZDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CisKK2NsYXNzIERhdGFiYXNlQ29udGV4dCA6IHB1YmxpYyBTdXBwbGVtZW50PFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5EYXRhYmFzZUNv
bnRleHQoKTsKKyAgICBzdGF0aWMgRGF0YWJhc2VDb250ZXh0KiBmcm9tKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKKworICAgIERhdGFiYXNlVGhyZWFkKiBkYXRhYmFzZVRocmVhZCgpOworCisg
ICAgdm9pZCBzZXRIYXNPcGVuRGF0YWJhc2VzKCkgeyBtX2hhc09wZW5EYXRhYmFzZXMgPSB0cnVl
OyB9CisgICAgYm9vbCBoYXNPcGVuRGF0YWJhc2VzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNPcGVu
RGF0YWJhc2VzOyB9CisKKyAgICAvLyBXaGVuIHRoZSBkYXRhYmFzZSBjbGVhbnVwIGlzIGRvbmUs
IGNsZWFudXBTeW5jIHdpbGwgYmUgc2lnbmFsbGVkLgorICAgIHZvaWQgc3RvcERhdGFiYXNlcyhE
YXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIqKTsKKworcHJpdmF0ZToKKyAgICBEYXRhYmFzZUNvbnRl
eHQoKTsKKworICAgIFJlZlB0cjxEYXRhYmFzZVRocmVhZD4gbV9kYXRhYmFzZVRocmVhZDsKKyAg
ICBib29sIG1faGFzT3BlbkRhdGFiYXNlczsgLy8gVGhpcyBuZXZlciBjaGFuZ2VzIGJhY2sgdG8g
ZmFsc2UsIGV2ZW4gYWZ0ZXIgdGhlIGRhdGFiYXNlIHRocmVhZCBpcyBjbG9zZWQuCit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQor
CisjZW5kaWYgLy8gRGF0YWJhc2VDb250ZXh0X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU1FMVHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU1FMVHJhbnNhY3Rpb24uY3BwCShyZXZpc2lvbiAxMDg5NTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMs
NyBAQAogCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJEYXRhYmFzZUF1dGhvcml6
ZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRo
cmVhZC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CkBAIC0xNjMsNyArMTY0LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6Y2hlY2tBbmRIYW5kbGVD
bG9zZQogICAgIG1fZXJyb3JDYWxsYmFja1dyYXBwZXIuY2xlYXIoKTsKIAogICAgIC8vIFRoZSBu
ZXh0IHN0ZXBzIHNob3VsZCBiZSBleGVjdXRlZCBvbmx5IGlmIHdlJ3JlIG9uIHRoZSBEQiB0aHJl
YWQuCi0gICAgaWYgKGN1cnJlbnRUaHJlYWQoKSAhPSBkYXRhYmFzZSgpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkpCisgICAgaWYgKGN1
cnJlbnRUaHJlYWQoKSAhPSBkYXRhYmFzZSgpLT5kYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VU
aHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIGN1
cnJlbnQgU1FMaXRlIHRyYW5zYWN0aW9uIHNob3VsZCBiZSBzdG9wcGVkLCBhcyB3ZWxsCkBAIC0y
MTUsNyArMjE2LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6cGVyZm9ybVBlbmRpbmdDYWxsYgog
CiB2b2lkIFNRTFRyYW5zYWN0aW9uOjpub3RpZnlEYXRhYmFzZVRocmVhZElzU2h1dHRpbmdEb3du
KCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGRhdGFiYXNlKCktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBkYXRhYmFzZSgpLT5kYXRhYmFzZUNvbnRleHQoKS0+
ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSk7CiAKICAgICAvLyBJZiB0aGUgdHJhbnNh
Y3Rpb24gaXMgaW4gcHJvZ3Jlc3MsIHdlIHNob3VsZCByb2xsIGl0IGJhY2sgaGVyZSwgc2luY2Ug
dGhpcyBpcyBvdXIgbGFzdAogICAgIC8vIG9wb3J0dW5pdHkgdG8gZG8gc29tZXRoaW5nIHJlbGF0
ZWQgdG8gdGhpcyB0cmFuc2FjdGlvbiBvbiB0aGUgREIgdGhyZWFkLgpJbmRleDogU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAkocmV2aXNpb24gMTA4OTU3KQorKysgU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2
ICszMCw3IEBACiAKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKIAorI2luY2x1ZGUgIkRhdGFi
YXNlQ29udGV4dC5oIgogI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJLVVJMLmgiCkBAIC0y
MTUsOCArMjE2LDkgQEAgcHVibGljOgogICAgICAgICBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250
ZXh0ID0gc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KGNvbnRleHQpOwogCiAjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKKyAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBzdG9wIHRoZSBkYXRh
YmFzZXMgYXMgcGFydCBvZiBzdG9wQWN0aXZlRE9NT2JqZWN0cygpIGJlbG93PwogICAgICAgICBE
YXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIgY2xlYW51cFN5bmM7Ci0gICAgICAgIHdvcmtlckNvbnRl
eHQtPnN0b3BEYXRhYmFzZXMoJmNsZWFudXBTeW5jKTsKKyAgICAgICAgRGF0YWJhc2VDb250ZXh0
Ojpmcm9tKHdvcmtlckNvbnRleHQpLT5zdG9wRGF0YWJhc2VzKCZjbGVhbnVwU3luYyk7CiAjZW5k
aWYKIAogICAgICAgICB3b3JrZXJDb250ZXh0LT5zdG9wQWN0aXZlRE9NT2JqZWN0cygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128975</attachid>
            <date>2012-02-27 00:15:12 -0800</date>
            <delta_ts>2012-02-27 14:58:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79633-20120227001511.patch</filename>
            <type>text/plain</type>
            <size>36072</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODk2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBACisyMDEyLTAyLTI3ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCBoYXMgdG9vIG1hbnkgaWZkZWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjbGFzcyBjcmVhdGVzIGEgRGF0
YWJhc2VDb250ZXh0IG9iamVjdCB0byBzdXBwbGVtZW50IHRoZQorICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0IHdpdGggZGF0YWJhc2Utc3BlY2lmaWMgaW5mb3JtYXRpb24uICBUaGlzIG5l
dworICAgICAgICBvYmplY3QgbGV0cyB1cyByZW1vdmUgYSBidW5jaCBvZiBkYXRhYmFzZS1zcGVj
aWZpYyAoYW5kIGlmZGVmZWQpIGxvZ2ljCisgICAgICAgIGZyb20gU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC4oY3BwfGgpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05V
bWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAg
ICAgKiBoaXN0b3J5L1BhZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2dDYW5DYWNo
ZUZyYW1lRGVjaXNpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNhY2hlOjpjYW5DYWNoZVBh
Z2VDb250YWluaW5nVGhpc0ZyYW1lKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAg
KiBzdG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJh
Y3REYXRhYmFzZTo6QWJzdHJhY3REYXRhYmFzZSk6CisgICAgICAgICogc3RvcmFnZS9BYnN0cmFj
dERhdGFiYXNlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3Ry
YWN0RGF0YWJhc2U6OmRhdGFiYXNlQ29udGV4dCk6CisgICAgICAgIChBYnN0cmFjdERhdGFiYXNl
KToKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OkRhdGFi
YXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpvcGVuQW5kVmVyaWZ5VmVyc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6bWFya0FzRGVsZXRlZEFuZENsb3NlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZTo6Y2xvc2VJbW1lZGlhdGVseSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVy
Zm9ybU9wZW5BbmRWZXJpZnkpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxl
VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNh
Y3Rpb25TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjp0cmFuc2FjdGlvbkNsaWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6dHJhbnNhY3Rpb25Db29yZGluYXRvcik6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6dGFibGVOYW1lcyk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZTo6c2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJh
c2VDb250ZXh0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlQ29udGV4dDo6RGF0YWJhc2VDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlQ29udGV4dDo6fkRhdGFiYXNlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZUNvbnRleHQ6OmZyb20pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0
OjpkYXRhYmFzZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUNvbnRleHQ6OnN0
b3BEYXRhYmFzZXMpOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2VDb250ZXh0Lmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChEYXRhYmFzZUNvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpzZXRIYXNPcGVuRGF0YWJhc2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlQ29udGV4dDo6aGFzT3BlbkRhdGFiYXNlcyk6CisgICAgICAg
ICogc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFu
c2FjdGlvbjo6Y2hlY2tBbmRIYW5kbGVDbG9zZWRPckludGVycnVwdGVkRGF0YWJhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246Om5vdGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0
dGluZ0Rvd24pOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrOjpwZXJmb3JtVGFzayk6CisK
IDIwMTItMDItMjYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwODk1OCkKKysr
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMzg1LDYg
KzEzODUsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgc3RvcmFnZS9ET01XaW5kb3dTUUxE
YXRhYmFzZS5jcHAKICAgICBzdG9yYWdlL0RhdGFiYXNlLmNwcAogICAgIHN0b3JhZ2UvRGF0YWJh
c2VBdXRob3JpemVyLmNwcAorICAgIHN0b3JhZ2UvRGF0YWJhc2VDb250ZXh0LmNwcAogICAgIHN0
b3JhZ2UvRGF0YWJhc2VTeW5jLmNwcAogICAgIHN0b3JhZ2UvRGF0YWJhc2VUYXNrLmNwcAogICAg
IHN0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0JKHJldmlzaW9uIDEwODk1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTM4NTcsMTIgKzM4NTcsMTQgQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRE9NV2luZG93U1FMRGF0YWJhc2UuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RPTVdpbmRvd1NRTERhdGFiYXNlLmggXAorCVNvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0Rh
dGFiYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUF1dGhvcml6ZXIuaCBcCiAJU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNhbGxiYWNrLmggXAotCVNvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvRGF0YWJhc2UuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNl
Q29udGV4dC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VDb250ZXh0Lmgg
XAogCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VEZXRhaWxzLmggXAotCVNvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRh
YmFzZVN5bmMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVGFzay5jcHAgXApJbmRleDogU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCShyZXZpc2lvbiAxMDg5NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzAyLDYgKzEzMDIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBzdG9yYWdl
L0RPTVdpbmRvd1NRTERhdGFiYXNlLmNwcCBcCiAgICAgc3RvcmFnZS9EYXRhYmFzZS5jcHAgXAog
ICAgIHN0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmNwcCBcCisgICAgc3RvcmFnZS9EYXRhYmFz
ZUNvbnRleHQuY3BwIFwKICAgICBzdG9yYWdlL0RhdGFiYXNlU3luYy5jcHAgXAogICAgIHN0b3Jh
Z2UvU3RvcmFnZVRhc2suY3BwIFwKICAgICBzdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwIFwKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEwODk1OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtNDYzOSw2ICs0NjM5LDggQEAKICAgICAgICAg
ICAgICdzdG9yYWdlL0RhdGFiYXNlQXV0aG9yaXplci5jcHAnLAogICAgICAgICAgICAgJ3N0b3Jh
Z2UvRGF0YWJhc2VBdXRob3JpemVyLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VD
YWxsYmFjay5oJywKKyAgICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNlQ29udGV4dC5jcHAnLAor
ICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VDb250ZXh0LmgnLAogICAgICAgICAgICAgJ3N0
b3JhZ2UvRGF0YWJhc2VTeW5jLmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZVN5
bmMuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZVRhc2suY3BwJywKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAx
MDg5NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagko
d29ya2luZyBjb3B5KQpAQCAtNzA5MzQsNiArNzA5MzQsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+
CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3RvcmFnZVxEYXRhYmFzZUNvbnRleHQu
Y3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxz
dG9yYWdlXERhdGFiYXNlQ29udGV4dC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXERhdGFiYXNlU3luYy5jcHAiCiAJCQkJPgogCQkJ
PC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMTA4OTU4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzEzLDYgKzMz
MTMsOCBAQAogCQk5NzIwNUFCODEyMzkyOTEwMDBCMTczODAgLyogTWVkaWFEb2N1bWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcyMDVBQjQxMjM5
MjkxMDAwQjE3MzgwIC8qIE1lZGlhRG9jdW1lbnQuaCAqLzsgfTsKIAkJOTcyMDVBQkIxMjM5Mjky
NzAwQjE3MzgwIC8qIFBsdWdpbkRvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MjA1QUI5MTIzOTI5MjcwMEIxNzM4MCAvKiBQbHVnaW5E
b2N1bWVudC5jcHAgKi87IH07CiAJCTk3MjA1QUJDMTIzOTI5MjcwMEIxNzM4MCAvKiBQbHVnaW5E
b2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTcyMDVBQkExMjM5MjkyNzAwQjE3MzgwIC8qIFBsdWdpbkRvY3VtZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTcyNDU4NTIxNEZCNzI0ODAw
Q0E4NzQ2IC8qIERhdGFiYXNlQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NzI0NTg1MDE0RkI3MjQ4MDBDQTg3NDYgLyogRGF0YWJhc2VD
b250ZXh0LmNwcCAqLzsgfTsKKwkJOTcyNDU4NTMxNEZCNzI0ODAwQ0E4NzQ2IC8qIERhdGFiYXNl
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTcyNDU4NTExNEZCNzI0ODAwQ0E4NzQ2IC8qIERhdGFiYXNlQ29udGV4dC5oICovOyB9OwogCQk5
NzI4QzMxMzEyNjhFNDM5MDA0MUU4OUIgLyogTWFya3VwQWNjdW11bGF0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcyOEMzMTExMjY4RTQzOTAw
NDFFODlCIC8qIE1hcmt1cEFjY3VtdWxhdG9yLmNwcCAqLzsgfTsKIAkJOTcyOEMzMTQxMjY4RTQz
OTAwNDFFODlCIC8qIE1hcmt1cEFjY3VtdWxhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzI4QzMxMjEyNjhFNDM5MDA0MUU4OUIgLyogTWFya3Vw
QWNjdW11bGF0b3IuaCAqLzsgfTsKIAkJOTczODg5QTAxMTZFQTlEQzAwQURGMzEzIC8qIERvY3Vt
ZW50V3JpdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk3Mzg4OTlFMTE2RUE5REMwMEFERjMxMyAvKiBEb2N1bWVudFdyaXRlci5jcHAgKi87IH07
CkBAIC0xMDE4Myw2ICsxMDE4NSw4IEBACiAJCTk3MjA1QUI0MTIzOTI5MTAwMEIxNzM4MCAvKiBN
ZWRpYURvY3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhRG9j
dW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcyMDVBQjkxMjM5MjkyNzAw
QjE3MzgwIC8qIFBsdWdpbkRvY3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBsdWdpbkRvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTcyMDVBQkExMjM5MjkyNzAwQjE3MzgwIC8qIFBsdWdpbkRvY3VtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpbkRvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTk3MjQ1ODUwMTRGQjcyNDgwMENBODc0NiAvKiBEYXRhYmFzZUNvbnRl
eHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YWJhc2VDb250
ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTcyNDU4NTExNEZCNzI0ODAw
Q0E4NzQ2IC8qIERhdGFiYXNlQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEYXRhYmFzZUNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcy
OEMzMTExMjY4RTQzOTAwNDFFODlCIC8qIE1hcmt1cEFjY3VtdWxhdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcmt1cEFjY3VtdWxhdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcyOEMzMTIxMjY4RTQzOTAwNDFFODlCIC8qIE1hcmt1
cEFjY3VtdWxhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmt1cEFj
Y3VtdWxhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3MzBCRTE0MTRFRjI4
NkIwMERGMDZCOSAvKiBOYXZpZ2F0b3JSZWdpc3RlclByb3RvY29sSGFuZGxlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXZpZ2F0b3JSZWdpc3RlclByb3RvY29s
SGFuZGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzkwMiw2ICsxMzkw
Niw4IEBACiAJCQkJNTFBNDVCNTQwQ0FEN0ZENzAwMEQyQkU5IC8qIERhdGFiYXNlQXV0aG9yaXpl
ci5oICovLAogCQkJCUI1RDM2MDE5MTEyRjhCNTYwMDQ4REVBOCAvKiBEYXRhYmFzZUNhbGxiYWNr
LmggKi8sCiAJCQkJQjU5REQ2OEQxMTkwMjk4RTAwN0U5Njg0IC8qIERhdGFiYXNlQ2FsbGJhY2su
aWRsICovLAorCQkJCTk3MjQ1ODUwMTRGQjcyNDgwMENBODc0NiAvKiBEYXRhYmFzZUNvbnRleHQu
Y3BwICovLAorCQkJCTk3MjQ1ODUxMTRGQjcyNDgwMENBODc0NiAvKiBEYXRhYmFzZUNvbnRleHQu
aCAqLywKIAkJCQk1MTE2RDk3NTBDRjE3N0JEMDBDMkI4NEQgLyogRGF0YWJhc2VEZXRhaWxzLmgg
Ki8sCiAJCQkJQjUyM0NGMDMxMTgyNjc1NDAwRUJCMjlDIC8qIERhdGFiYXNlU3luYy5jcHAgKi8s
CiAJCQkJQjUyM0NGMDQxMTgyNjc1NDAwRUJCMjlDIC8qIERhdGFiYXNlU3luYy5oICovLApAQCAt
MjE1NTYsNiArMjE1NjIsNyBAQAogCQkJCTUxOTYxMTZCMENBQzU2NTcwMDEwQTgwQyAvKiBEYXRh
YmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBNDVCNTYwQ0FEN0ZENzAwMEQyQkU5IC8qIERh
dGFiYXNlQXV0aG9yaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjVEMzYwMUExMTJGOEI1NjAw
NDhERUE4IC8qIERhdGFiYXNlQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTk3MjQ1ODUz
MTRGQjcyNDgwMENBODc0NiAvKiBEYXRhYmFzZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxMTZEOTc3MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUI1MjNDRjBCMTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxOTYxMUVBMENBQzc0OUMwMDEwQTgwQyAvKiBEYXRhYmFzZVRhc2su
aCBpbiBIZWFkZXJzICovLApAQCAtMjQ5NzIsNiArMjQ5NzksNyBAQAogCQkJCTUwRDQwNjExMTQ3
RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTE5NjExNkEwQ0FDNTY1NzAwMTBBODBDIC8qIERhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUxQTQ1QjU3MENBRDdGRDcwMDBEMkJFOSAvKiBEYXRhYmFzZUF1dGhvcml6ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJOTcyNDU4NTIxNEZCNzI0ODAwQ0E4NzQ2IC8qIERhdGFiYXNl
Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTIzQ0YwQTExODI2NzU0MDBFQkIyOUMg
LyogRGF0YWJhc2VTeW5jLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxOTYxMUVCMENBQzc0OUMw
MDEwQTgwQyAvKiBEYXRhYmFzZVRhc2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE5NjExNkQw
Q0FDNTY1NzAwMTBBODBDIC8qIERhdGFiYXNlVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLApJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAkocmV2
aXNpb24gMTA4OTU3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw5ICszMCw2IEBACiAjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVk
ZSAiRE9NVGltZXIuaCIKLSNpbmNsdWRlICJEYXRhYmFzZS5oIgotI2luY2x1ZGUgIkRhdGFiYXNl
VGFzay5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVGhyZWFkLmgiCiAjaW5jbHVkZSAiRXJyb3JFdmVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5o
IgpAQCAtOTQsOSArOTEsNiBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpTY3JpcHRFeGVjdXRp
b25DCiAgICAgLCBtX2luRGVzdHJ1Y3RvcihmYWxzZSkKICAgICAsIG1faW5EaXNwYXRjaEVycm9y
RXZlbnQoZmFsc2UpCiAgICAgLCBtX2FjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoZmFsc2Up
Ci0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICAsIG1faGFzT3BlbkRhdGFiYXNlcyhmYWxz
ZSkKLSNlbmRpZgogewogfQogCkBAIC0xMTUsMTIgKzEwOSw2IEBAIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6On5TY3JpcHRFeGVjdXRpb24KICAgICAgICAgQVNTRVJUKCgqaXRlciktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSA9PSB0aGlzKTsKICAgICAgICAgKCppdGVyKS0+Y29udGV4dERlc3Ry
b3llZCgpOwogICAgIH0KLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIGlmIChtX2RhdGFi
YXNlVGhyZWFkKSB7Ci0gICAgICAgIEFTU0VSVChtX2RhdGFiYXNlVGhyZWFkLT50ZXJtaW5hdGlv
blJlcXVlc3RlZCgpKTsKLSAgICAgICAgbV9kYXRhYmFzZVRocmVhZCA9IDA7Ci0gICAgfQotI2Vu
ZGlmCiAjaWYgRU5BQkxFKEJMT0IpIHx8IEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICBpZiAobV9m
aWxlVGhyZWFkKSB7CiAgICAgICAgIG1fZmlsZVRocmVhZC0+c3RvcCgpOwpAQCAtMTMzLDMyICsx
MjEsNiBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uCiAjZW5kaWYK
IH0KIAotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0KLURhdGFiYXNlVGhyZWFkKiBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpkYXRhYmFzZVRocmVhZCgpCi17Ci0gICAgaWYgKCFtX2RhdGFiYXNl
VGhyZWFkICYmICFtX2hhc09wZW5EYXRhYmFzZXMpIHsKLSAgICAgICAgLy8gQ3JlYXRlIHRoZSBk
YXRhYmFzZSB0aHJlYWQgb24gZmlyc3QgcmVxdWVzdCAtIGJ1dCBub3QgaWYgYXQgbGVhc3Qgb25l
IGRhdGFiYXNlIHdhcyBhbHJlYWR5IG9wZW5lZCwKLSAgICAgICAgLy8gYmVjYXVzZSBpbiB0aGF0
IGNhc2Ugd2UgYWxyZWFkeSBoYWQgYSBkYXRhYmFzZSB0aHJlYWQgYW5kIHRlcm1pbmF0ZWQgaXQg
YW5kIHNob3VsZCBub3QgY3JlYXRlIGFub3RoZXIuCi0gICAgICAgIG1fZGF0YWJhc2VUaHJlYWQg
PSBEYXRhYmFzZVRocmVhZDo6Y3JlYXRlKCk7Ci0gICAgICAgIGlmICghbV9kYXRhYmFzZVRocmVh
ZC0+c3RhcnQoKSkKLSAgICAgICAgICAgIG1fZGF0YWJhc2VUaHJlYWQgPSAwOwotICAgIH0KLQot
ICAgIHJldHVybiBtX2RhdGFiYXNlVGhyZWFkLmdldCgpOwotfQotCi12b2lkIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OnN0b3BEYXRhYmFzZXMoRGF0YWJhc2VUYXNrU3luY2hyb25pemVyKiBjbGVh
bnVwU3luYykKLXsKLSAgICBBU1NFUlQoaXNDb250ZXh0VGhyZWFkKCkpOwotICAgIGlmIChtX2Rh
dGFiYXNlVGhyZWFkKQotICAgICAgICBtX2RhdGFiYXNlVGhyZWFkLT5yZXF1ZXN0VGVybWluYXRp
b24oY2xlYW51cFN5bmMpOwotICAgIGVsc2UgaWYgKGNsZWFudXBTeW5jKQotICAgICAgICBjbGVh
bnVwU3luYy0+dGFza0NvbXBsZXRlZCgpOwotfQotCi0jZW5kaWYKLQogdm9pZCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0Ojpwcm9jZXNzTWVzc2FnZVBvcnRNZXNzYWdlc1Nvb24oKQogewogICAgIHBv
c3RUYXNrKFByb2Nlc3NNZXNzYWdlc1Nvb25UYXNrOjpjcmVhdGUoKSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHJldmlzaW9uIDEwODk1NykK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlDb250ZXh0LmgiCisjaW5jbHVkZSAi
U3VwcGxlbWVudGFibGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTU2LDE3ICs1NywxMiBA
QCBjbGFzcyBNZXNzYWdlUG9ydDsKICNpZiBFTkFCTEUoQkxPQikKIGNsYXNzIFB1YmxpY1VSTE1h
bmFnZXI7CiAjZW5kaWYKLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotY2xhc3MgRGF0YWJhc2U7
Ci1jbGFzcyBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXI7Ci1jbGFzcyBEYXRhYmFzZVRocmVhZDsK
LSNlbmRpZgogCiAjaWYgRU5BQkxFKEJMT0IpIHx8IEVOQUJMRShGSUxFX1NZU1RFTSkKIGNsYXNz
IEZpbGVUaHJlYWQ7CiAjZW5kaWYKIAotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCA6IHB1
YmxpYyBTZWN1cml0eUNvbnRleHQgeworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCA6IHB1
YmxpYyBTZWN1cml0eUNvbnRleHQsIHB1YmxpYyBTdXBwbGVtZW50YWJsZTxTY3JpcHRFeGVjdXRp
b25Db250ZXh0PiB7CiBwdWJsaWM6CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAg
IHZpcnR1YWwgflNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTc3LDExICs3Myw2IEBAIHB1
YmxpYzoKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIHZpcnR1YWwgYm9vbCBhbGxvd0Rh
dGFiYXNlQWNjZXNzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkYXRhYmFzZUV4Y2Vl
ZGVkUXVvdGEoY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7Ci0gICAgRGF0YWJhc2VUaHJlYWQqIGRh
dGFiYXNlVGhyZWFkKCk7Ci0gICAgdm9pZCBzZXRIYXNPcGVuRGF0YWJhc2VzKCkgeyBtX2hhc09w
ZW5EYXRhYmFzZXMgPSB0cnVlOyB9Ci0gICAgYm9vbCBoYXNPcGVuRGF0YWJhc2VzKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNPcGVuRGF0YWJhc2VzOyB9Ci0gICAgLy8gV2hlbiB0aGUgZGF0YWJhc2Ug
Y2xlYW51cCBpcyBkb25lLCBjbGVhbnVwU3luYyB3aWxsIGJlIHNpZ25hbGxlZC4KLSAgICB2b2lk
IHN0b3BEYXRhYmFzZXMoRGF0YWJhc2VUYXNrU3luY2hyb25pemVyKik7CiAjZW5kaWYKICAgICB2
aXJ0dWFsIGJvb2wgaXNDb250ZXh0VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3QgPSAwOwpAQCAtMjI0
LDExICsyMTUsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hY3RpdmVET01PYmplY3RzQXJlU3Vz
cGVuZGVkOwogICAgIEFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yU3VzcGVuc2lvbiBtX3JlYXNv
bkZvclN1c3BlbmRpbmdBY3RpdmVET01PYmplY3RzOwogCi0jaWYgRU5BQkxFKFNRTF9EQVRBQkFT
RSkKLSAgICBSZWZQdHI8RGF0YWJhc2VUaHJlYWQ+IG1fZGF0YWJhc2VUaHJlYWQ7Ci0gICAgYm9v
bCBtX2hhc09wZW5EYXRhYmFzZXM7IC8vIFRoaXMgbmV2ZXIgY2hhbmdlcyBiYWNrIHRvIGZhbHNl
LCBldmVuIGFmdGVyIHRoZSBkYXRhYmFzZSB0aHJlYWQgaXMgY2xvc2VkLgotI2VuZGlmCi0KICNp
ZiBFTkFCTEUoQkxPQikgfHwgRU5BQkxFKEZJTEVfU1lTVEVNKQogICAgIFJlZlB0cjxGaWxlVGhy
ZWFkPiBtX2ZpbGVUaHJlYWQ7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
UGFnZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VD
YWNoZS5jcHAJKHJldmlzaW9uIDEwODk1NykKKysrIFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFn
ZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk1l
bW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUGFnZS5oIgogI2luY2x1ZGUgIkRPTVdpbmRv
dy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgogI2luY2x1ZGUgIkRldmljZU1vdGlv
bkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtMTIwLDcgKzEyMSw3IEBAIHN0YXRpYyBib29sIGxv
Z0NhbkNhY2hlRnJhbWVEZWNpc2lvbihGcmEKICAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1
ZTsKICAgICAgICAgfQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgICAgIGlmIChmcmFt
ZS0+ZG9jdW1lbnQoKS0+aGFzT3BlbkRhdGFiYXNlcygpKSB7CisgICAgICAgIGlmIChEYXRhYmFz
ZUNvbnRleHQ6OmZyb20oZnJhbWUtPmRvY3VtZW50KCkpLT5oYXNPcGVuRGF0YWJhc2VzKCkpIHsK
ICAgICAgICAgICAgIFBDTE9HKCIgICAtRnJhbWUgaGFzIG9wZW4gZGF0YWJhc2UgaGFuZGxlcyIp
OwogICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOwogICAgICAgICB9CkBAIC0yNjMsNyAr
MjY0LDcgQEAgYm9vbCBQYWdlQ2FjaGU6OmNhbkNhY2hlUGFnZUNvbnRhaW5pbmdUaAogICAgICAg
ICAmJiAoIWRvY3VtZW50LT51cmwoKS5wcm90b2NvbElzKCJodHRwcyIpIHx8ICghZG9jdW1lbnRM
b2FkZXItPnJlc3BvbnNlKCkuY2FjaGVDb250cm9sQ29udGFpbnNOb0NhY2hlKCkgJiYgIWRvY3Vt
ZW50TG9hZGVyLT5yZXNwb25zZSgpLmNhY2hlQ29udHJvbENvbnRhaW5zTm9TdG9yZSgpKSkKICAg
ICAgICAgJiYgKCFmcmFtZS0+ZG9tV2luZG93KCkgfHwgIWZyYW1lLT5kb21XaW5kb3coKS0+aGFz
RXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnVubG9hZEV2ZW50KSkKICNpZiBFTkFCTEUoU1FM
X0RBVEFCQVNFKQotICAgICAgICAmJiAhZG9jdW1lbnQtPmhhc09wZW5EYXRhYmFzZXMoKQorICAg
ICAgICAmJiAhRGF0YWJhc2VDb250ZXh0Ojpmcm9tKGRvY3VtZW50KS0+aGFzT3BlbkRhdGFiYXNl
cygpCiAjZW5kaWYKICNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCiAgICAgICAgICYmICFTaGFy
ZWRXb3JrZXJSZXBvc2l0b3J5OjpoYXNTaGFyZWRXb3JrZXJzKGRvY3VtZW50KQpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAxMDg5NTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2
ICs0Niw3IEBACiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ29uc29sZS5o
IgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgorI2luY2x1ZGUgIkRhdGFiYXNl
Q29udGV4dC5oIgogI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiRE9N
V2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKQEAgLTQxOCw3ICs0MTksOCBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyhVbmxvYWRFdmVuCiAgICAgICAgIGRvYy0+c2V0UmVh
ZHlTdGF0ZShEb2N1bWVudDo6Q29tcGxldGUpOwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkK
LSAgICAgICAgZG9jLT5zdG9wRGF0YWJhc2VzKDApOworICAgICAgICAvLyBGSVhNRTogU2hvdWxk
IHRoZSBEYXRhYmFzZUNvbnRleHQgd2F0Y2ggZm9yIHNvbWV0aGluZyBsaWtlIEFjdGl2ZURPTU9i
amVjdDo6c3RvcCgpIHJhdGhlciB0aGFuIGJlaW5nIHNwZWNpYWwtY2FzZWQgaGVyZT8KKyAgICAg
ICAgRGF0YWJhc2VDb250ZXh0Ojpmcm9tKGRvYyktPnN0b3BEYXRhYmFzZXMoMCk7CiAjZW5kaWYK
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQWJzdHJhY3REYXRhYmFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNl
LmNwcAkocmV2aXNpb24gMTA4OTU3KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9BYnN0cmFj
dERhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVOQUJM
RShTUUxfREFUQUJBU0UpCiAKICNpbmNsdWRlICJEYXRhYmFzZUF1dGhvcml6ZXIuaCIKKyNpbmNs
dWRlICJEYXRhYmFzZUNvbnRleHQuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtMTg4LDYg
KzE4OSw3IEBAIGNvbnN0IGNoYXIqIEFic3RyYWN0RGF0YWJhc2U6OmRhdGFiYXNlSW4KIEFic3Ry
YWN0RGF0YWJhc2U6OkFic3RyYWN0RGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBkaXNwbGF5
TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBEYXRhYmFzZVR5cGUgZGF0YWJhc2VU
eXBlKQogICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCisgICAgLCBtX2Rh
dGFiYXNlQ29udGV4dChEYXRhYmFzZUNvbnRleHQ6OmZyb20oY29udGV4dCkpCiAgICAgLCBtX25h
bWUobmFtZS5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fZXhwZWN0ZWRWZXJzaW9uKGV4cGVjdGVk
VmVyc2lvbi5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fZGlzcGxheU5hbWUoZGlzcGxheU5hbWUu
aXNvbGF0ZWRDb3B5KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0Fic3RyYWN0RGF0
YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0Fic3RyYWN0RGF0
YWJhc2UuaAkocmV2aXNpb24gMTA4OTU3KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9BYnN0
cmFjdERhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgRGF0YWJhc2VBdXRob3JpemVyOworY2xhc3MgRGF0YWJhc2VD
b250ZXh0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwogCkBAIC04Niw2ICs4Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbWFya0Fz
RGVsZXRlZEFuZENsb3NlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZUltbWVkaWF0ZWx5
KCkgPSAwOwogCisgICAgRGF0YWJhc2VDb250ZXh0KiBkYXRhYmFzZUNvbnRleHQoKSBjb25zdCB7
IHJldHVybiBtX2RhdGFiYXNlQ29udGV4dDsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNs
YXNzIENoYW5nZVZlcnNpb25XcmFwcGVyOwogICAgIGZyaWVuZCBjbGFzcyBTUUxTdGF0ZW1lbnQ7
CkBAIC0xMjQsOCArMTI3LDkgQEAgcHJvdGVjdGVkOgogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIq
IGRhdGFiYXNlSW5mb1RhYmxlTmFtZSgpOwogCi0gICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ+IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IG1fY29udGV4dFRocmVhZFNlY3VyaXR5T3JpZ2luOworICAgIFJlZlB0cjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisgICAgRGF0YWJhc2VDb250
ZXh0KiBtX2RhdGFiYXNlQ29udGV4dDsgLy8gT3duZWQgYnkgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LgogCiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBTdHJpbmcgbV9leHBlY3RlZFZlcnNpb247
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAkocmV2aXNpb24gMTA4OTU3KQor
KysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJDaGFuZ2VWZXJzaW9uV3JhcHBlci5oIgogI2luY2x1
ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIKKyNp
bmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRhc2suaCIKICNp
bmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgpA
QCAtMTA5LDcgKzExMCw3IEBAIFBhc3NSZWZQdHI8RGF0YWJhc2U+IERhdGFiYXNlOjpvcGVuRGF0
YWIKIAogICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldERhdGFiYXNlRGV0YWlscyhj
b250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6
ZSk7CiAKLSAgICBjb250ZXh0LT5zZXRIYXNPcGVuRGF0YWJhc2VzKCk7CisgICAgRGF0YWJhc2VD
b250ZXh0Ojpmcm9tKGNvbnRleHQpLT5zZXRIYXNPcGVuRGF0YWJhc2VzKCk7CiAKICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5EYXRhYmFzZShjb250ZXh0LCBkYXRhYmFzZSwg
Y29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+aG9zdCgpLCBuYW1lLCBleHBlY3RlZFZlcnNpb24p
OwogCkBAIC0xMzAsNyArMTMxLDcgQEAgRGF0YWJhc2U6OkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleAogICAgIG1fZGF0YWJhc2VUaHJlYWRTZWN1cml0eU9yaWdpbiA9IG1fY29udGV4dFRo
cmVhZFNlY3VyaXR5T3JpZ2luLT5pc29sYXRlZENvcHkoKTsKIAogICAgIFNjcmlwdENvbnRyb2xs
ZXI6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5kYXRhYmFzZVRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZUNvbnRleHQt
PmRhdGFiYXNlVGhyZWFkKCkpOwogfQogCiBjbGFzcyBEZXJlZkNvbnRleHRUYXNrIDogcHVibGlj
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewpAQCAtMTc5LDEyICsxODAsMTIgQEAgU3Ry
aW5nIERhdGFiYXNlOjp2ZXJzaW9uKCkgY29uc3QKIGJvb2wgRGF0YWJhc2U6Om9wZW5BbmRWZXJp
ZnlWZXJzaW9uKGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIEV4Y2VwdGlvbkNvZGUmIGUs
IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewogICAgIERhdGFiYXNlVGFza1N5bmNocm9uaXplciBz
eW5jaHJvbml6ZXI7Ci0gICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNl
VGhyZWFkKCkgfHwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT50
ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkKKyAgICBpZiAoIW1fZGF0YWJhc2VD
b250ZXh0LT5kYXRhYmFzZVRocmVhZCgpIHx8IG1fZGF0YWJhc2VDb250ZXh0LT5kYXRhYmFzZVRo
cmVhZCgpLT50ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAgICAgT3duUHRyPERhdGFi
YXNlT3BlblRhc2s+IHRhc2sgPSBEYXRhYmFzZU9wZW5UYXNrOjpjcmVhdGUodGhpcywgc2V0VmVy
c2lvbkluTmV3RGF0YWJhc2UsICZzeW5jaHJvbml6ZXIsIGUsIGVycm9yTWVzc2FnZSwgc3VjY2Vz
cyk7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5zY2hl
ZHVsZUltbWVkaWF0ZVRhc2sodGFzay5yZWxlYXNlKCkpOworICAgIG1fZGF0YWJhc2VDb250ZXh0
LT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRhc2sodGFzay5yZWxlYXNlKCkp
OwogICAgIHN5bmNocm9uaXplci53YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKIAogICAgIHJldHVy
biBzdWNjZXNzOwpAQCAtMTkyLDI3ICsxOTMsMjcgQEAgYm9vbCBEYXRhYmFzZTo6b3BlbkFuZFZl
cmlmeVZlcnNpb24oYm9vbAogCiB2b2lkIERhdGFiYXNlOjptYXJrQXNEZWxldGVkQW5kQ2xvc2Uo
KQogewotICAgIGlmIChtX2RlbGV0ZWQgfHwgIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0
YWJhc2VUaHJlYWQoKSkKKyAgICBpZiAobV9kZWxldGVkIHx8ICFtX2RhdGFiYXNlQ29udGV4dC0+
ZGF0YWJhc2VUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTE9HKFN0b3JhZ2VBUEks
ICJNYXJraW5nICVzICglcCkgYXMgZGVsZXRlZCIsIHN0cmluZ0lkZW50aWZpZXIoKS5hc2NpaSgp
LmRhdGEoKSwgdGhpcyk7CiAgICAgbV9kZWxldGVkID0gdHJ1ZTsKIAogICAgIERhdGFiYXNlVGFz
a1N5bmNocm9uaXplciBzeW5jaHJvbml6ZXI7Ci0gICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+dGVybWluYXRpb25SZXF1ZXN0ZWQoJnN5bmNocm9uaXpl
cikpIHsKKyAgICBpZiAobV9kYXRhYmFzZUNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnRlcm1p
bmF0aW9uUmVxdWVzdGVkKCZzeW5jaHJvbml6ZXIpKSB7CiAgICAgICAgIExPRyhTdG9yYWdlQVBJ
LCAiRGF0YWJhc2UgaGFuZGxlICVwIGlzIG9uIGEgdGVybWluYXRlZCBEYXRhYmFzZVRocmVhZCwg
Y2Fubm90IGJlIG1hcmtlZCBmb3Igbm9ybWFsIGNsb3N1cmVcbiIsIHRoaXMpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgT3duUHRyPERhdGFiYXNlQ2xvc2VUYXNrPiB0YXNrID0gRGF0
YWJhc2VDbG9zZVRhc2s6OmNyZWF0ZSh0aGlzLCAmc3luY2hyb25pemVyKTsKLSAgICBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxlSW1tZWRpYXRlVGFz
ayh0YXNrLnJlbGVhc2UoKSk7CisgICAgbV9kYXRhYmFzZUNvbnRleHQtPmRhdGFiYXNlVGhyZWFk
KCktPnNjaGVkdWxlSW1tZWRpYXRlVGFzayh0YXNrLnJlbGVhc2UoKSk7CiAgICAgc3luY2hyb25p
emVyLndhaXRGb3JUYXNrQ29tcGxldGlvbigpOwogfQogCiB2b2lkIERhdGFiYXNlOjpjbG9zZSgp
CiB7Ci0gICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQo
KSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmRhdGFiYXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkpOworICAgIEFTU0VSVChtX2RhdGFi
YXNlQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKSk7CisgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX2RhdGFiYXNlQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSk7
CiAKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9n
cmVzc011dGV4KTsKQEAgLTIyNSwxNSArMjI2LDE1IEBAIHZvaWQgRGF0YWJhc2U6OmNsb3NlKCkK
IAogICAgIC8vIE11c3QgcmVmKCkgYmVmb3JlIGNhbGxpbmcgZGF0YWJhc2VUaHJlYWQoKS0+cmVj
b3JkRGF0YWJhc2VDbG9zZWQoKS4KICAgICBSZWZQdHI8RGF0YWJhc2U+IHByb3RlY3QgPSB0aGlz
OwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+cmVjb3Jk
RGF0YWJhc2VDbG9zZWQodGhpcyk7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRh
YmFzZVRocmVhZCgpLT51bnNjaGVkdWxlRGF0YWJhc2VUYXNrcyh0aGlzKTsKKyAgICBtX2RhdGFi
YXNlQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+cmVjb3JkRGF0YWJhc2VDbG9zZWQodGhpcyk7
CisgICAgbV9kYXRhYmFzZUNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnVuc2NoZWR1bGVEYXRh
YmFzZVRhc2tzKHRoaXMpOwogICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnJlbW92ZU9w
ZW5EYXRhYmFzZSh0aGlzKTsKIH0KIAogdm9pZCBEYXRhYmFzZTo6Y2xvc2VJbW1lZGlhdGVseSgp
CiB7CiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250ZXh0VGhyZWFk
KCkpOwotICAgIERhdGFiYXNlVGhyZWFkKiBkYXRhYmFzZVRocmVhZCA9IHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKTsKKyAgICBEYXRhYmFzZVRocmVhZCogZGF0YWJh
c2VUaHJlYWQgPSBtX2RhdGFiYXNlQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKTsKICAgICBpZiAo
ZGF0YWJhc2VUaHJlYWQgJiYgIWRhdGFiYXNlVGhyZWFkLT50ZXJtaW5hdGlvblJlcXVlc3RlZCgp
ICYmIG9wZW5lZCgpKSB7CiAgICAgICAgIGxvZ0Vycm9yTWVzc2FnZSgiZm9yY2libHkgY2xvc2lu
ZyBkYXRhYmFzZSIpOwogICAgICAgICBkYXRhYmFzZVRocmVhZC0+c2NoZWR1bGVJbW1lZGlhdGVU
YXNrKERhdGFiYXNlQ2xvc2VUYXNrOjpjcmVhdGUodGhpcywgMCkpOwpAQCAtMjQ4LDggKzI0OSw4
IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZTo6bWF4aW11bVNpemUKIGJvb2wgRGF0YWJh
c2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIEV4
Y2VwdGlvbkNvZGUmIGUsIFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewogICAgIGlmIChBYnN0cmFj
dERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwg
ZSwgZXJyb3JNZXNzYWdlKSkgewotICAgICAgICBpZiAobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5kYXRhYmFzZVRocmVhZCgpKQotICAgICAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5kYXRhYmFzZVRocmVhZCgpLT5yZWNvcmREYXRhYmFzZU9wZW4odGhpcyk7CisgICAgICAgIGlm
IChtX2RhdGFiYXNlQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKSkKKyAgICAgICAgICAgIG1fZGF0
YWJhc2VDb250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5yZWNvcmREYXRhYmFzZU9wZW4odGhpcyk7
CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzExLDI2ICszMTIsMjYgQEAgdm9p
ZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvbigpCiAgICAgaWYgKG1faXNUcmFuc2FjdGlv
blF1ZXVlRW5hYmxlZCAmJiAhbV90cmFuc2FjdGlvblF1ZXVlLmlzRW1wdHkoKSkKICAgICAgICAg
dHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9uUXVldWUudGFrZUZpcnN0KCk7CiAKLSAgICBpZiAo
dHJhbnNhY3Rpb24gJiYgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgp
KSB7CisgICAgaWYgKHRyYW5zYWN0aW9uICYmIG1fZGF0YWJhc2VDb250ZXh0LT5kYXRhYmFzZVRo
cmVhZCgpKSB7CiAgICAgICAgIE93blB0cjxEYXRhYmFzZVRyYW5zYWN0aW9uVGFzaz4gdGFzayA9
IERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrOjpjcmVhdGUodHJhbnNhY3Rpb24pOwogICAgICAgICBM
T0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgRGF0YWJhc2VUcmFuc2FjdGlvblRhc2sgJXAgZm9y
IHRyYW5zYWN0aW9uICVwXG4iLCB0YXNrLmdldCgpLCB0YXNrLT50cmFuc2FjdGlvbigpKTsKICAg
ICAgICAgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSB0cnVlOwotICAgICAgICBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxlVGFzayh0YXNrLnJlbGVh
c2UoKSk7CisgICAgICAgIG1fZGF0YWJhc2VDb250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5zY2hl
ZHVsZVRhc2sodGFzay5yZWxlYXNlKCkpOwogICAgIH0gZWxzZQogICAgICAgICBtX3RyYW5zYWN0
aW9uSW5Qcm9ncmVzcyA9IGZhbHNlOwogfQogCiB2b2lkIERhdGFiYXNlOjpzY2hlZHVsZVRyYW5z
YWN0aW9uU3RlcChTUUxUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGJvb2wgaW1tZWRpYXRlbHkp
CiB7Ci0gICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCkp
CisgICAgaWYgKCFtX2RhdGFiYXNlQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgT3duUHRyPERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrPiB0YXNrID0gRGF0
YWJhc2VUcmFuc2FjdGlvblRhc2s6OmNyZWF0ZSh0cmFuc2FjdGlvbik7CiAgICAgTE9HKFN0b3Jh
Z2VBUEksICJTY2hlZHVsaW5nIERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrICVwIGZvciB0aGUgdHJh
bnNhY3Rpb24gc3RlcFxuIiwgdGFzay5nZXQoKSk7CiAgICAgaWYgKGltbWVkaWF0ZWx5KQotICAg
ICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxl
SW1tZWRpYXRlVGFzayh0YXNrLnJlbGVhc2UoKSk7CisgICAgICAgIG1fZGF0YWJhc2VDb250ZXh0
LT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRhc2sodGFzay5yZWxlYXNlKCkp
OwogICAgIGVsc2UKLSAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRo
cmVhZCgpLT5zY2hlZHVsZVRhc2sodGFzay5yZWxlYXNlKCkpOworICAgICAgICBtX2RhdGFiYXNl
Q29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+c2NoZWR1bGVUYXNrKHRhc2sucmVsZWFzZSgpKTsK
IH0KIAogY2xhc3MgRGVsaXZlclBlbmRpbmdDYWxsYmFja1Rhc2sgOiBwdWJsaWMgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzayB7CkBAIC0zOTAsMTIgKzM5MSwxMiBAQCBWZWN0b3I8U3RyaW5n
PiBEYXRhYmFzZTo6cGVyZm9ybUdldFRhYmxlCiAKIFNRTFRyYW5zYWN0aW9uQ2xpZW50KiBEYXRh
YmFzZTo6dHJhbnNhY3Rpb25DbGllbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnRyYW5zYWN0aW9uQ2xpZW50KCk7Cisg
ICAgcmV0dXJuIG1fZGF0YWJhc2VDb250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT50cmFuc2FjdGlv
bkNsaWVudCgpOwogfQogCiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiBEYXRhYmFzZTo6dHJh
bnNhY3Rpb25Db29yZGluYXRvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+dHJhbnNhY3Rpb25Db29yZGluYXRvcigpOwor
ICAgIHJldHVybiBtX2RhdGFiYXNlQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+dHJhbnNhY3Rp
b25Db29yZGluYXRvcigpOwogfQogCiBWZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6dGFibGVOYW1l
cygpCkBAIC00MDQsMTEgKzQwNSwxMSBAQCBWZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6dGFibGVO
YW1lcygpCiAgICAgLy8gaW4gZGVhbGluZyB3aXRoIHRoZW0uIEhvd2V2ZXIsIGlmIHRoZSBjb2Rl
IGNoYW5nZXMsIHRoaXMgbWF5IG5vdCBiZSB0cnVlIGFueW1vcmUuCiAgICAgVmVjdG9yPFN0cmlu
Zz4gcmVzdWx0OwogICAgIERhdGFiYXNlVGFza1N5bmNocm9uaXplciBzeW5jaHJvbml6ZXI7Ci0g
ICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCkgfHwgbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT50ZXJtaW5hdGlvblJlcXVl
c3RlZCgmc3luY2hyb25pemVyKSkKKyAgICBpZiAoIW1fZGF0YWJhc2VDb250ZXh0LT5kYXRhYmFz
ZVRocmVhZCgpIHx8IG1fZGF0YWJhc2VDb250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT50ZXJtaW5h
dGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAog
ICAgIE93blB0cjxEYXRhYmFzZVRhYmxlTmFtZXNUYXNrPiB0YXNrID0gRGF0YWJhc2VUYWJsZU5h
bWVzVGFzazo6Y3JlYXRlKHRoaXMsICZzeW5jaHJvbml6ZXIsIHJlc3VsdCk7Ci0gICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRh
c2sodGFzay5yZWxlYXNlKCkpOworICAgIG1fZGF0YWJhc2VDb250ZXh0LT5kYXRhYmFzZVRocmVh
ZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRhc2sodGFzay5yZWxlYXNlKCkpOwogICAgIHN5bmNocm9u
aXplci53YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC00
MTgsNyArNDE5LDcgQEAgU2VjdXJpdHlPcmlnaW4qIERhdGFiYXNlOjpzZWN1cml0eU9yaWdpbgog
ewogICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKQog
ICAgICAgICByZXR1cm4gbV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCk7Ci0gICAg
aWYgKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNl
VGhyZWFkKCktPmdldFRocmVhZElEKCkpCisgICAgaWYgKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSkKICAgICAgICAg
cmV0dXJuIG1fZGF0YWJhc2VUaHJlYWRTZWN1cml0eU9yaWdpbi5nZXQoKTsKICAgICByZXR1cm4g
MDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VDb250ZXh0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ29udGV4dC5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ29udGV4dC5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCisKKyNpZiBFTkFCTEUoU1FM
X0RBVEFCQVNFKQorCisjaW5jbHVkZSAiRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJEYXRhYmFzZVRh
c2suaCIKKyNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0RhdGFiYXNlQ29udGV4dDo6RGF0YWJhc2VDb250ZXh0KCkKKyAgICA6IG1faGFzT3BlbkRh
dGFiYXNlcyhmYWxzZSkKK3sKK30KKworRGF0YWJhc2VDb250ZXh0Ojp+RGF0YWJhc2VDb250ZXh0
KCkKK3sKKyAgICBpZiAobV9kYXRhYmFzZVRocmVhZCkgeworICAgICAgICBBU1NFUlQobV9kYXRh
YmFzZVRocmVhZC0+dGVybWluYXRpb25SZXF1ZXN0ZWQoKSk7CisgICAgICAgIG1fZGF0YWJhc2VU
aHJlYWQgPSAwOworICAgIH0KK30KKworRGF0YWJhc2VDb250ZXh0KiBEYXRhYmFzZUNvbnRleHQ6
OmZyb20oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBBdG9taWNTdHJp
bmcgbmFtZSA9ICJEYXRhYmFzZUNvbnRleHQiOworICAgIERhdGFiYXNlQ29udGV4dCogc3VwcGxl
bWVudCA9IHN0YXRpY19jYXN0PERhdGFiYXNlQ29udGV4dCo+KFN1cHBsZW1lbnQ8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dD46OmZyb20oY29udGV4dCwgbmFtZSkpOworICAgIGlmICghc3VwcGxlbWVu
dCkgeworICAgICAgICBzdXBwbGVtZW50ID0gbmV3IERhdGFiYXNlQ29udGV4dCgpOworICAgICAg
ICBwcm92aWRlVG8oY29udGV4dCwgbmFtZSwgYWRvcHRQdHIoc3VwcGxlbWVudCkpOworICAgIH0K
KyAgICByZXR1cm4gc3VwcGxlbWVudDsKK30KKworRGF0YWJhc2VUaHJlYWQqIERhdGFiYXNlQ29u
dGV4dDo6ZGF0YWJhc2VUaHJlYWQoKQoreworICAgIGlmICghbV9kYXRhYmFzZVRocmVhZCAmJiAh
bV9oYXNPcGVuRGF0YWJhc2VzKSB7CisgICAgICAgIC8vIENyZWF0ZSB0aGUgZGF0YWJhc2UgdGhy
ZWFkIG9uIGZpcnN0IHJlcXVlc3QgLSBidXQgbm90IGlmIGF0IGxlYXN0IG9uZSBkYXRhYmFzZSB3
YXMgYWxyZWFkeSBvcGVuZWQsCisgICAgICAgIC8vIGJlY2F1c2UgaW4gdGhhdCBjYXNlIHdlIGFs
cmVhZHkgaGFkIGEgZGF0YWJhc2UgdGhyZWFkIGFuZCB0ZXJtaW5hdGVkIGl0IGFuZCBzaG91bGQg
bm90IGNyZWF0ZSBhbm90aGVyLgorICAgICAgICBtX2RhdGFiYXNlVGhyZWFkID0gRGF0YWJhc2VU
aHJlYWQ6OmNyZWF0ZSgpOworICAgICAgICBpZiAoIW1fZGF0YWJhc2VUaHJlYWQtPnN0YXJ0KCkp
CisgICAgICAgICAgICBtX2RhdGFiYXNlVGhyZWFkID0gMDsKKyAgICB9CisKKyAgICByZXR1cm4g
bV9kYXRhYmFzZVRocmVhZC5nZXQoKTsKK30KKwordm9pZCBEYXRhYmFzZUNvbnRleHQ6OnN0b3BE
YXRhYmFzZXMoRGF0YWJhc2VUYXNrU3luY2hyb25pemVyKiBjbGVhbnVwU3luYykKK3sKKyAgICBB
U1NFUlQoaXNDb250ZXh0VGhyZWFkKCkpOworICAgIGlmIChtX2RhdGFiYXNlVGhyZWFkKQorICAg
ICAgICBtX2RhdGFiYXNlVGhyZWFkLT5yZXF1ZXN0VGVybWluYXRpb24oY2xlYW51cFN5bmMpOwor
ICAgIGVsc2UgaWYgKGNsZWFudXBTeW5jKQorICAgICAgICBjbGVhbnVwU3luYy0+dGFza0NvbXBs
ZXRlZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
U1FMX0RBVEFCQVNFKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNvbnRl
eHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ29udGV4
dC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNvbnRl
eHQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYg
RGF0YWJhc2VDb250ZXh0X2gKKyNkZWZpbmUgRGF0YWJhc2VDb250ZXh0X2gKKworI2lmIEVOQUJM
RShTUUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIERhdGFiYXNlOworY2xhc3MgRGF0YWJhc2VUYXNrU3luY2hy
b25pemVyOworY2xhc3MgRGF0YWJhc2VUaHJlYWQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OworCitjbGFzcyBEYXRhYmFzZUNvbnRleHQgOiBwdWJsaWMgU3VwcGxlbWVudDxTY3JpcHRF
eGVjdXRpb25Db250ZXh0PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RGF0YWJhc2VDb250ZXh0
KCk7CisgICAgc3RhdGljIERhdGFiYXNlQ29udGV4dCogZnJvbShTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kik7CisKKyAgICBEYXRhYmFzZVRocmVhZCogZGF0YWJhc2VUaHJlYWQoKTsKKworICAgIHZv
aWQgc2V0SGFzT3BlbkRhdGFiYXNlcygpIHsgbV9oYXNPcGVuRGF0YWJhc2VzID0gdHJ1ZTsgfQor
ICAgIGJvb2wgaGFzT3BlbkRhdGFiYXNlcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzT3BlbkRhdGFi
YXNlczsgfQorCisgICAgLy8gV2hlbiB0aGUgZGF0YWJhc2UgY2xlYW51cCBpcyBkb25lLCBjbGVh
bnVwU3luYyB3aWxsIGJlIHNpZ25hbGxlZC4KKyAgICB2b2lkIHN0b3BEYXRhYmFzZXMoRGF0YWJh
c2VUYXNrU3luY2hyb25pemVyKik7CisKK3ByaXZhdGU6CisgICAgRGF0YWJhc2VDb250ZXh0KCk7
CisKKyAgICBSZWZQdHI8RGF0YWJhc2VUaHJlYWQ+IG1fZGF0YWJhc2VUaHJlYWQ7CisgICAgYm9v
bCBtX2hhc09wZW5EYXRhYmFzZXM7IC8vIFRoaXMgbmV2ZXIgY2hhbmdlcyBiYWNrIHRvIGZhbHNl
LCBldmVuIGFmdGVyIHRoZSBkYXRhYmFzZSB0aHJlYWQgaXMgY2xvc2VkLgorfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2Vu
ZGlmIC8vIERhdGFiYXNlQ29udGV4dF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1NR
TFRyYW5zYWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1NR
TFRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMTA4OTU3KQorKysgU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAK
IAogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VBdXRob3JpemVyLmgi
CisjaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQu
aCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAt
MTYzLDcgKzE2NCw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OmNoZWNrQW5kSGFuZGxlQ2xvc2UK
ICAgICBtX2Vycm9yQ2FsbGJhY2tXcmFwcGVyLmNsZWFyKCk7CiAKICAgICAvLyBUaGUgbmV4dCBz
dGVwcyBzaG91bGQgYmUgZXhlY3V0ZWQgb25seSBpZiB3ZSdyZSBvbiB0aGUgREIgdGhyZWFkLgot
ICAgIGlmIChjdXJyZW50VGhyZWFkKCkgIT0gZGF0YWJhc2UoKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5nZXRUaHJlYWRJRCgpKQorICAgIGlmIChjdXJyZW50
VGhyZWFkKCkgIT0gZGF0YWJhc2UoKS0+ZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFk
KCktPmdldFRocmVhZElEKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRoZSBjdXJyZW50
IFNRTGl0ZSB0cmFuc2FjdGlvbiBzaG91bGQgYmUgc3RvcHBlZCwgYXMgd2VsbApAQCAtMjE1LDcg
KzIxNiw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OnBlcmZvcm1QZW5kaW5nQ2FsbGIKIAogdm9p
ZCBTUUxUcmFuc2FjdGlvbjo6bm90aWZ5RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5nRG93bigpCiB7
Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBkYXRhYmFzZSgpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkpOworICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gZGF0YWJhc2UoKS0+ZGF0YWJhc2VDb250ZXh0KCktPmRhdGFi
YXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkpOwogCiAgICAgLy8gSWYgdGhlIHRyYW5zYWN0aW9u
IGlzIGluIHByb2dyZXNzLCB3ZSBzaG91bGQgcm9sbCBpdCBiYWNrIGhlcmUsIHNpbmNlIHRoaXMg
aXMgb3VyIGxhc3QKICAgICAvLyBvcG9ydHVuaXR5IHRvIGRvIHNvbWV0aGluZyByZWxhdGVkIHRv
IHRoaXMgdHJhbnNhY3Rpb24gb24gdGhlIERCIHRocmVhZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZC5jcHAJKHJldmlzaW9uIDEwODk1NykKKysrIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAs
NyBAQAogCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAKKyNpbmNsdWRlICJEYXRhYmFzZUNv
bnRleHQuaCIKICNpbmNsdWRlICJEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgpAQCAtMjE1LDgg
KzIxNiw5IEBAIHB1YmxpYzoKICAgICAgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9
IHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihjb250ZXh0KTsKIAogI2lmIEVOQUJMRShTUUxf
REFUQUJBU0UpCisgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2Ugc3RvcCB0aGUgZGF0YWJhc2Vz
IGFzIHBhcnQgb2Ygc3RvcEFjdGl2ZURPTU9iamVjdHMoKSBiZWxvdz8KICAgICAgICAgRGF0YWJh
c2VUYXNrU3luY2hyb25pemVyIGNsZWFudXBTeW5jOwotICAgICAgICB3b3JrZXJDb250ZXh0LT5z
dG9wRGF0YWJhc2VzKCZjbGVhbnVwU3luYyk7CisgICAgICAgIERhdGFiYXNlQ29udGV4dDo6ZnJv
bSh3b3JrZXJDb250ZXh0KS0+c3RvcERhdGFiYXNlcygmY2xlYW51cFN5bmMpOwogI2VuZGlmCiAK
ICAgICAgICAgd29ya2VyQ29udGV4dC0+c3RvcEFjdGl2ZURPTU9iamVjdHMoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129103</attachid>
            <date>2012-02-27 14:58:33 -0800</date>
            <delta_ts>2012-02-27 23:19:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79633-20120227145832.patch</filename>
            <type>text/plain</type>
            <size>36928</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBACisyMDEyLTAyLTI3ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCBoYXMgdG9vIG1hbnkgaWZkZWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjbGFzcyBjcmVhdGVzIGEgRGF0
YWJhc2VDb250ZXh0IG9iamVjdCB0byBzdXBwbGVtZW50IHRoZQorICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0IHdpdGggZGF0YWJhc2Utc3BlY2lmaWMgaW5mb3JtYXRpb24uICBUaGlzIG5l
dworICAgICAgICBvYmplY3QgbGV0cyB1cyByZW1vdmUgYSBidW5jaCBvZiBkYXRhYmFzZS1zcGVj
aWZpYyAoYW5kIGlmZGVmZWQpIGxvZ2ljCisgICAgICAgIGZyb20gU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC4oY3BwfGgpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05V
bWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAg
ICAgKiBoaXN0b3J5L1BhZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2dDYW5DYWNo
ZUZyYW1lRGVjaXNpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNhY2hlOjpjYW5DYWNoZVBh
Z2VDb250YWluaW5nVGhpc0ZyYW1lKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAg
KiBzdG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJh
Y3REYXRhYmFzZTo6QWJzdHJhY3REYXRhYmFzZSk6CisgICAgICAgICogc3RvcmFnZS9BYnN0cmFj
dERhdGFiYXNlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3Ry
YWN0RGF0YWJhc2U6OmRhdGFiYXNlQ29udGV4dCk6CisgICAgICAgIChBYnN0cmFjdERhdGFiYXNl
KToKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OkRhdGFi
YXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpvcGVuQW5kVmVyaWZ5VmVyc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6bWFya0FzRGVsZXRlZEFuZENsb3NlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZTo6Y2xvc2VJbW1lZGlhdGVseSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVy
Zm9ybU9wZW5BbmRWZXJpZnkpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxl
VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNh
Y3Rpb25TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjp0cmFuc2FjdGlvbkNsaWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6dHJhbnNhY3Rpb25Db29yZGluYXRvcik6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6dGFibGVOYW1lcyk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZTo6c2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJh
c2VDb250ZXh0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlQ29udGV4dDo6RGF0YWJhc2VDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlQ29udGV4dDo6fkRhdGFiYXNlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZUNvbnRleHQ6OmZyb20pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0
OjpkYXRhYmFzZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUNvbnRleHQ6OnN0
b3BEYXRhYmFzZXMpOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2VDb250ZXh0Lmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChEYXRhYmFzZUNvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpzZXRIYXNPcGVuRGF0YWJhc2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlQ29udGV4dDo6aGFzT3BlbkRhdGFiYXNlcyk6CisgICAgICAg
ICogc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFu
c2FjdGlvbjo6Y2hlY2tBbmRIYW5kbGVDbG9zZWRPckludGVycnVwdGVkRGF0YWJhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246Om5vdGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0
dGluZ0Rvd24pOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrOjpwZXJmb3JtVGFzayk6CisK
IDIwMTItMDItMjcgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBbY2hyb21pdW1dIFVucmV2aWV3ZWQgc3BlY3VsYXRpdmUgQ2hyb21pdW0gd2luIGJ1aWxkIGZp
eC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDkwMjEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTM4Nyw2ICsxMzg3LDcg
QEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHN0b3JhZ2UvRE9NV2luZG93U1FMRGF0YWJhc2Uu
Y3BwCiAgICAgc3RvcmFnZS9EYXRhYmFzZS5jcHAKICAgICBzdG9yYWdlL0RhdGFiYXNlQXV0aG9y
aXplci5jcHAKKyAgICBzdG9yYWdlL0RhdGFiYXNlQ29udGV4dC5jcHAKICAgICBzdG9yYWdlL0Rh
dGFiYXNlU3luYy5jcHAKICAgICBzdG9yYWdlL0RhdGFiYXNlVGFzay5jcHAKICAgICBzdG9yYWdl
L0RhdGFiYXNlVGhyZWFkLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShy
ZXZpc2lvbiAxMDkwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3
b3JraW5nIGNvcHkpCkBAIC0zODY1LDEyICszODY1LDE0IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9DaGFuZ2VWZXJzaW9uV3JhcHBlci5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0RPTVdpbmRvd1NRTERhdGFiYXNlLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9ET01XaW5kb3dTUUxEYXRhYmFzZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0RhdGFiYXNlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQXV0aG9yaXplci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmggXAogCVNvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5oIFwKLQlTb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0RhdGFiYXNlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNvbnRleHQu
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ29udGV4dC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlRGV0YWlscy5oIFwKLQlTb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0RhdGFiYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VTeW5j
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuaCBcCiAJU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRhc2suY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2
aXNpb24gMTA5MDIxKQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5
KQpAQCAtMTMwNCw2ICsxMzA0LDcgQEAgU09VUkNFUyArPSBcCiAgICAgc3RvcmFnZS9ET01XaW5k
b3dTUUxEYXRhYmFzZS5jcHAgXAogICAgIHN0b3JhZ2UvRGF0YWJhc2UuY3BwIFwKICAgICBzdG9y
YWdlL0RhdGFiYXNlQXV0aG9yaXplci5jcHAgXAorICAgIHN0b3JhZ2UvRGF0YWJhc2VDb250ZXh0
LmNwcCBcCiAgICAgc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwIFwKICAgICBzdG9yYWdlL1N0b3Jh
Z2VUYXNrLmNwcCBcCiAgICAgc3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcCBcCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCShyZXZpc2lvbiAxMDkwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkJKHdvcmtpbmcgY29weSkKQEAgLTQ2MzksNiArNDYzOSw4IEBACiAgICAgICAgICAgICAnc3Rv
cmFnZS9EYXRhYmFzZUF1dGhvcml6ZXIuY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL0RhdGFi
YXNlQXV0aG9yaXplci5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2su
aCcsCisgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZUNvbnRleHQuY3BwJywKKyAgICAgICAg
ICAgICdzdG9yYWdlL0RhdGFiYXNlQ29udGV4dC5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0Rh
dGFiYXNlU3luYy5jcHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmgnLAog
ICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VUYXNrLmNwcCcsCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMTA5MDIxKQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTcwOTUwLDYgKzcwOTUwLDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcRGF0YWJhc2VDb250ZXh0LmNwcCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3RvcmFnZVxE
YXRhYmFzZUNvbnRleHQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0
aXZlUGF0aD0iLi5cc3RvcmFnZVxEYXRhYmFzZVN5bmMuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDEwOTAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzMxNSw2ICszMzE1LDggQEAK
IAkJOTcyMDVBQjgxMjM5MjkxMDAwQjE3MzgwIC8qIE1lZGlhRG9jdW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MjA1QUI0MTIzOTI5MTAwMEIx
NzM4MCAvKiBNZWRpYURvY3VtZW50LmggKi87IH07CiAJCTk3MjA1QUJCMTIzOTI5MjcwMEIxNzM4
MCAvKiBQbHVnaW5Eb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NzIwNUFCOTEyMzkyOTI3MDBCMTczODAgLyogUGx1Z2luRG9jdW1lbnQu
Y3BwICovOyB9OwogCQk5NzIwNUFCQzEyMzkyOTI3MDBCMTczODAgLyogUGx1Z2luRG9jdW1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MjA1QUJB
MTIzOTI5MjcwMEIxNzM4MCAvKiBQbHVnaW5Eb2N1bWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk3MjQ1ODUyMTRGQjcyNDgwMENBODc0NiAv
KiBEYXRhYmFzZUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTcyNDU4NTAxNEZCNzI0ODAwQ0E4NzQ2IC8qIERhdGFiYXNlQ29udGV4dC5j
cHAgKi87IH07CisJCTk3MjQ1ODUzMTRGQjcyNDgwMENBODc0NiAvKiBEYXRhYmFzZUNvbnRleHQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MjQ1ODUx
MTRGQjcyNDgwMENBODc0NiAvKiBEYXRhYmFzZUNvbnRleHQuaCAqLzsgfTsKIAkJOTcyOEMzMTMx
MjY4RTQzOTAwNDFFODlCIC8qIE1hcmt1cEFjY3VtdWxhdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MjhDMzExMTI2OEU0MzkwMDQxRTg5QiAv
KiBNYXJrdXBBY2N1bXVsYXRvci5jcHAgKi87IH07CiAJCTk3MjhDMzE0MTI2OEU0MzkwMDQxRTg5
QiAvKiBNYXJrdXBBY2N1bXVsYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTcyOEMzMTIxMjY4RTQzOTAwNDFFODlCIC8qIE1hcmt1cEFjY3VtdWxh
dG9yLmggKi87IH07CiAJCTk3Mzg4OUEwMTE2RUE5REMwMEFERjMxMyAvKiBEb2N1bWVudFdyaXRl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzM4
ODk5RTExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRXcml0ZXIuY3BwICovOyB9OwpAQCAtMTAx
ODksNiArMTAxOTEsOCBAQAogCQk5NzIwNUFCNDEyMzkyOTEwMDBCMTczODAgLyogTWVkaWFEb2N1
bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYURvY3VtZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3MjA1QUI5MTIzOTI5MjcwMEIxNzM4MCAv
KiBQbHVnaW5Eb2N1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQbHVnaW5Eb2N1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3MjA1
QUJBMTIzOTI5MjcwMEIxNzM4MCAvKiBQbHVnaW5Eb2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQbHVnaW5Eb2N1bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5NzI0NTg1MDE0RkI3MjQ4MDBDQTg3NDYgLyogRGF0YWJhc2VDb250ZXh0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFiYXNlQ29udGV4dC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3MjQ1ODUxMTRGQjcyNDgwMENBODc0NiAv
KiBEYXRhYmFzZUNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0
YWJhc2VDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3MjhDMzExMTI2
OEU0MzkwMDQxRTg5QiAvKiBNYXJrdXBBY2N1bXVsYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBNYXJrdXBBY2N1bXVsYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk3MjhDMzEyMTI2OEU0MzkwMDQxRTg5QiAvKiBNYXJrdXBBY2N1bXVs
YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXJrdXBBY2N1bXVsYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzMwQkUxNDE0RUYyODZCMDBERjA2
QjkgLyogTmF2aWdhdG9yUmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF2aWdhdG9yUmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM5MTAsNiArMTM5MTQsOCBAQAog
CQkJCTUxQTQ1QjU0MENBRDdGRDcwMDBEMkJFOSAvKiBEYXRhYmFzZUF1dGhvcml6ZXIuaCAqLywK
IAkJCQlCNUQzNjAxOTExMkY4QjU2MDA0OERFQTggLyogRGF0YWJhc2VDYWxsYmFjay5oICovLAog
CQkJCUI1OURENjhEMTE5MDI5OEUwMDdFOTY4NCAvKiBEYXRhYmFzZUNhbGxiYWNrLmlkbCAqLywK
KwkJCQk5NzI0NTg1MDE0RkI3MjQ4MDBDQTg3NDYgLyogRGF0YWJhc2VDb250ZXh0LmNwcCAqLywK
KwkJCQk5NzI0NTg1MTE0RkI3MjQ4MDBDQTg3NDYgLyogRGF0YWJhc2VDb250ZXh0LmggKi8sCiAJ
CQkJNTExNkQ5NzUwQ0YxNzdCRDAwQzJCODREIC8qIERhdGFiYXNlRGV0YWlscy5oICovLAogCQkJ
CUI1MjNDRjAzMTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMuY3BwICovLAogCQkJCUI1
MjNDRjA0MTE4MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMuaCAqLywKQEAgLTIxNTY5LDYg
KzIxNTc1LDcgQEAKIAkJCQk1MTk2MTE2QjBDQUM1NjU3MDAxMEE4MEMgLyogRGF0YWJhc2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxQTQ1QjU2MENBRDdGRDcwMDBEMkJFOSAvKiBEYXRhYmFzZUF1
dGhvcml6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1RDM2MDFBMTEyRjhCNTYwMDQ4REVBOCAv
KiBEYXRhYmFzZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NzI0NTg1MzE0RkI3MjQ4
MDBDQTg3NDYgLyogRGF0YWJhc2VDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTE2RDk3
NzBDRjE3N0JEMDBDMkI4NEQgLyogRGF0YWJhc2VEZXRhaWxzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCNTIzQ0YwQjExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MTk2MTFFQTBDQUM3NDlDMDAxMEE4MEMgLyogRGF0YWJhc2VUYXNrLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI0OTg3LDYgKzI0OTk0LDcgQEAKIAkJCQk1MEQ0MDYxMTE0N0Q0OURFMDBE
MzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxOTYx
MTZBMENBQzU2NTcwMDEwQTgwQyAvKiBEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MUE0NUI1NzBDQUQ3RkQ3MDAwRDJCRTkgLyogRGF0YWJhc2VBdXRob3JpemVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTk3MjQ1ODUyMTRGQjcyNDgwMENBODc0NiAvKiBEYXRhYmFzZUNvbnRleHQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjUyM0NGMEExMTgyNjc1NDAwRUJCMjlDIC8qIERhdGFi
YXNlU3luYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTk2MTFFQjBDQUM3NDlDMDAxMEE4MEMg
LyogRGF0YWJhc2VUYXNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxOTYxMTZEMENBQzU2NTcw
MDEwQTgwQyAvKiBEYXRhYmFzZVRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAJKHJldmlzaW9uIDEw
OTAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAsOSArMzAsNiBAQAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVj
dC5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkRPTVRp
bWVyLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2UuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRhc2suaCIK
LSNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgogI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKICNp
bmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKQEAgLTk0
LDkgKzkxLDYgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQwogICAg
ICwgbV9pbkRlc3RydWN0b3IoZmFsc2UpCiAgICAgLCBtX2luRGlzcGF0Y2hFcnJvckV2ZW50KGZh
bHNlKQogICAgICwgbV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKGZhbHNlKQotI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCi0gICAgLCBtX2hhc09wZW5EYXRhYmFzZXMoZmFsc2UpCi0jZW5k
aWYKIHsKIH0KIApAQCAtMTE1LDEyICsxMDksNiBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+
U2NyaXB0RXhlY3V0aW9uCiAgICAgICAgIEFTU0VSVCgoKml0ZXIpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgPT0gdGhpcyk7CiAgICAgICAgICgqaXRlciktPmNvbnRleHREZXN0cm95ZWQoKTsK
ICAgICB9Ci0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBpZiAobV9kYXRhYmFzZVRocmVh
ZCkgewotICAgICAgICBBU1NFUlQobV9kYXRhYmFzZVRocmVhZC0+dGVybWluYXRpb25SZXF1ZXN0
ZWQoKSk7Ci0gICAgICAgIG1fZGF0YWJhc2VUaHJlYWQgPSAwOwotICAgIH0KLSNlbmRpZgogI2lm
IEVOQUJMRShCTE9CKSB8fCBFTkFCTEUoRklMRV9TWVNURU0pCiAgICAgaWYgKG1fZmlsZVRocmVh
ZCkgewogICAgICAgICBtX2ZpbGVUaHJlYWQtPnN0b3AoKTsKQEAgLTEzMywzMiArMTIxLDYgQEAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbgogI2VuZGlmCiB9CiAKLSNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotCi1EYXRhYmFzZVRocmVhZCogU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6ZGF0YWJhc2VUaHJlYWQoKQotewotICAgIGlmICghbV9kYXRhYmFzZVRocmVhZCAm
JiAhbV9oYXNPcGVuRGF0YWJhc2VzKSB7Ci0gICAgICAgIC8vIENyZWF0ZSB0aGUgZGF0YWJhc2Ug
dGhyZWFkIG9uIGZpcnN0IHJlcXVlc3QgLSBidXQgbm90IGlmIGF0IGxlYXN0IG9uZSBkYXRhYmFz
ZSB3YXMgYWxyZWFkeSBvcGVuZWQsCi0gICAgICAgIC8vIGJlY2F1c2UgaW4gdGhhdCBjYXNlIHdl
IGFscmVhZHkgaGFkIGEgZGF0YWJhc2UgdGhyZWFkIGFuZCB0ZXJtaW5hdGVkIGl0IGFuZCBzaG91
bGQgbm90IGNyZWF0ZSBhbm90aGVyLgotICAgICAgICBtX2RhdGFiYXNlVGhyZWFkID0gRGF0YWJh
c2VUaHJlYWQ6OmNyZWF0ZSgpOwotICAgICAgICBpZiAoIW1fZGF0YWJhc2VUaHJlYWQtPnN0YXJ0
KCkpCi0gICAgICAgICAgICBtX2RhdGFiYXNlVGhyZWFkID0gMDsKLSAgICB9Ci0KLSAgICByZXR1
cm4gbV9kYXRhYmFzZVRocmVhZC5nZXQoKTsKLX0KLQotdm9pZCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpzdG9wRGF0YWJhc2VzKERhdGFiYXNlVGFza1N5bmNocm9uaXplciogY2xlYW51cFN5bmMp
Ci17Ci0gICAgQVNTRVJUKGlzQ29udGV4dFRocmVhZCgpKTsKLSAgICBpZiAobV9kYXRhYmFzZVRo
cmVhZCkKLSAgICAgICAgbV9kYXRhYmFzZVRocmVhZC0+cmVxdWVzdFRlcm1pbmF0aW9uKGNsZWFu
dXBTeW5jKTsKLSAgICBlbHNlIGlmIChjbGVhbnVwU3luYykKLSAgICAgICAgY2xlYW51cFN5bmMt
PnRhc2tDb21wbGV0ZWQoKTsKLX0KLQotI2VuZGlmCi0KIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6cHJvY2Vzc01lc3NhZ2VQb3J0TWVzc2FnZXNTb29uKCkKIHsKICAgICBwb3N0VGFzayhQ
cm9jZXNzTWVzc2FnZXNTb29uVGFzazo6Y3JlYXRlKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCShyZXZpc2lvbiAxMDkwMjEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxT
dGFjay5oIgogI2luY2x1ZGUgIlNlY3VyaXR5Q29udGV4dC5oIgorI2luY2x1ZGUgIlN1cHBsZW1l
bnRhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC01NiwxNyArNTcsMTIgQEAgY2xhc3Mg
TWVzc2FnZVBvcnQ7CiAjaWYgRU5BQkxFKEJMT0IpCiBjbGFzcyBQdWJsaWNVUkxNYW5hZ2VyOwog
I2VuZGlmCi0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLWNsYXNzIERhdGFiYXNlOwotY2xhc3Mg
RGF0YWJhc2VUYXNrU3luY2hyb25pemVyOwotY2xhc3MgRGF0YWJhc2VUaHJlYWQ7Ci0jZW5kaWYK
IAogI2lmIEVOQUJMRShCTE9CKSB8fCBFTkFCTEUoRklMRV9TWVNURU0pCiBjbGFzcyBGaWxlVGhy
ZWFkOwogI2VuZGlmCiAKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgOiBwdWJsaWMgU2Vj
dXJpdHlDb250ZXh0IHsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgOiBwdWJsaWMgU2Vj
dXJpdHlDb250ZXh0LCBwdWJsaWMgU3VwcGxlbWVudGFibGU8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dD4gewogcHVibGljOgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICB2aXJ0dWFs
IH5TY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkBAIC03NywxMSArNzMsNiBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dEYXRhYmFzZUFj
Y2VzcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGF0YWJhc2VFeGNlZWRlZFF1b3Rh
KGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwotICAgIERhdGFiYXNlVGhyZWFkKiBkYXRhYmFzZVRo
cmVhZCgpOwotICAgIHZvaWQgc2V0SGFzT3BlbkRhdGFiYXNlcygpIHsgbV9oYXNPcGVuRGF0YWJh
c2VzID0gdHJ1ZTsgfQotICAgIGJvb2wgaGFzT3BlbkRhdGFiYXNlcygpIGNvbnN0IHsgcmV0dXJu
IG1faGFzT3BlbkRhdGFiYXNlczsgfQotICAgIC8vIFdoZW4gdGhlIGRhdGFiYXNlIGNsZWFudXAg
aXMgZG9uZSwgY2xlYW51cFN5bmMgd2lsbCBiZSBzaWduYWxsZWQuCi0gICAgdm9pZCBzdG9wRGF0
YWJhc2VzKERhdGFiYXNlVGFza1N5bmNocm9uaXplciopOwogI2VuZGlmCiAgICAgdmlydHVhbCBi
b29sIGlzQ29udGV4dFRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFs
IGJvb2wgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0ID0gMDsKQEAgLTIyNCwxMSArMjE1
LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZDsK
ICAgICBBY3RpdmVET01PYmplY3Q6OlJlYXNvbkZvclN1c3BlbnNpb24gbV9yZWFzb25Gb3JTdXNw
ZW5kaW5nQWN0aXZlRE9NT2JqZWN0czsKIAotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAg
UmVmUHRyPERhdGFiYXNlVGhyZWFkPiBtX2RhdGFiYXNlVGhyZWFkOwotICAgIGJvb2wgbV9oYXNP
cGVuRGF0YWJhc2VzOyAvLyBUaGlzIG5ldmVyIGNoYW5nZXMgYmFjayB0byBmYWxzZSwgZXZlbiBh
ZnRlciB0aGUgZGF0YWJhc2UgdGhyZWFkIGlzIGNsb3NlZC4KLSNlbmRpZgotCiAjaWYgRU5BQkxF
KEJMT0IpIHx8IEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICBSZWZQdHI8RmlsZVRocmVhZD4gbV9m
aWxlVGhyZWFkOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNo
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3Bw
CShyZXZpc2lvbiAxMDkwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJNZW1vcnlDYWNo
ZS5oIgogI2luY2x1ZGUgIkNhY2hlZFBhZ2UuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNp
bmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKICNpbmNsdWRlICJEZXZpY2VNb3Rpb25Db250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKQEAgLTEyMCw3ICsxMjEsNyBAQCBzdGF0aWMgYm9vbCBsb2dDYW5DYWNo
ZUZyYW1lRGVjaXNpb24oRnJhCiAgICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CiAgICAg
ICAgIH0KICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgICAgICBpZiAoZnJhbWUtPmRvY3Vt
ZW50KCktPmhhc09wZW5EYXRhYmFzZXMoKSkgeworICAgICAgICBpZiAoRGF0YWJhc2VDb250ZXh0
OjpoYXNPcGVuRGF0YWJhc2VzKGZyYW1lLT5kb2N1bWVudCgpKSkgewogICAgICAgICAgICAgUENM
T0coIiAgIC1GcmFtZSBoYXMgb3BlbiBkYXRhYmFzZSBoYW5kbGVzIik7CiAgICAgICAgICAgICBj
YW5ub3RDYWNoZSA9IHRydWU7CiAgICAgICAgIH0KQEAgLTI2Myw3ICsyNjQsNyBAQCBib29sIFBh
Z2VDYWNoZTo6Y2FuQ2FjaGVQYWdlQ29udGFpbmluZ1RoCiAgICAgICAgICYmICghZG9jdW1lbnQt
PnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgfHwgKCFkb2N1bWVudExvYWRlci0+cmVzcG9uc2Uo
KS5jYWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSAmJiAhZG9jdW1lbnRMb2FkZXItPnJlc3Bv
bnNlKCkuY2FjaGVDb250cm9sQ29udGFpbnNOb1N0b3JlKCkpKQogICAgICAgICAmJiAoIWZyYW1l
LT5kb21XaW5kb3coKSB8fCAhZnJhbWUtPmRvbVdpbmRvdygpLT5oYXNFdmVudExpc3RlbmVycyhl
dmVudE5hbWVzKCkudW5sb2FkRXZlbnQpKQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAg
ICAgICYmICFkb2N1bWVudC0+aGFzT3BlbkRhdGFiYXNlcygpCisgICAgICAgICYmICFEYXRhYmFz
ZUNvbnRleHQ6Omhhc09wZW5EYXRhYmFzZXMoZG9jdW1lbnQpCiAjZW5kaWYKICNpZiBFTkFCTEUo
U0hBUkVEX1dPUktFUlMpCiAgICAgICAgICYmICFTaGFyZWRXb3JrZXJSZXBvc2l0b3J5OjpoYXNT
aGFyZWRXb3JrZXJzKGRvY3VtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCShyZXZpc2lvbiAxMDkwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiQ2hy
b21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1
cml0eVBvbGljeS5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgogI2luY2x1ZGUgIkRP
TUltcGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKQEAgLTQxOCw3ICs0MTksOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wTG9hZGlu
ZyhVbmxvYWRFdmVuCiAgICAgICAgIGRvYy0+c2V0UmVhZHlTdGF0ZShEb2N1bWVudDo6Q29tcGxl
dGUpOwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICAgICAgZG9jLT5zdG9wRGF0YWJh
c2VzKDApOworICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHRoZSBEYXRhYmFzZUNvbnRleHQgd2F0
Y2ggZm9yIHNvbWV0aGluZyBsaWtlIEFjdGl2ZURPTU9iamVjdDo6c3RvcCgpIHJhdGhlciB0aGFu
IGJlaW5nIHNwZWNpYWwtY2FzZWQgaGVyZT8KKyAgICAgICAgRGF0YWJhc2VDb250ZXh0OjpzdG9w
RGF0YWJhc2VzKGRvYywgMCk7CiAjZW5kaWYKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvQWJzdHJhY3REYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmNwcAkocmV2aXNpb24gMTA5MDIxKQorKysgU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNiArMzIsNyBAQAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKICNpbmNsdWRlICJE
YXRhYmFzZUF1dGhvcml6ZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKICNpbmNs
dWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgpAQCAtMTg4LDYgKzE4OSw3IEBAIGNvbnN0IGNoYXIqIEFic3RyYWN0
RGF0YWJhc2U6OmRhdGFiYXNlSW4KIEFic3RyYWN0RGF0YWJhc2U6OkFic3RyYWN0RGF0YWJhc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRT
aXplLCBEYXRhYmFzZVR5cGUgZGF0YWJhc2VUeXBlKQogICAgIDogbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0KGNvbnRleHQpCisgICAgLCBtX2RhdGFiYXNlQ29udGV4dChEYXRhYmFzZUNvbnRleHQ6
OmZyb20oY29udGV4dCkpCiAgICAgLCBtX25hbWUobmFtZS5pc29sYXRlZENvcHkoKSkKICAgICAs
IG1fZXhwZWN0ZWRWZXJzaW9uKGV4cGVjdGVkVmVyc2lvbi5pc29sYXRlZENvcHkoKSkKICAgICAs
IG1fZGlzcGxheU5hbWUoZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCkpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuaAkocmV2aXNpb24gMTA5MDIxKQorKysg
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQyLDYgKzQyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGF0YWJhc2VB
dXRob3JpemVyOworY2xhc3MgRGF0YWJhc2VDb250ZXh0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCkBAIC04Niw2ICs4Nyw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgbWFya0FzRGVsZXRlZEFuZENsb3NlKCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBjbG9zZUltbWVkaWF0ZWx5KCkgPSAwOwogCisgICAgRGF0YWJhc2VDb250ZXh0
KiBkYXRhYmFzZUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlQ29udGV4dDsgfQor
CiBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIENoYW5nZVZlcnNpb25XcmFwcGVyOwogICAg
IGZyaWVuZCBjbGFzcyBTUUxTdGF0ZW1lbnQ7CkBAIC0xMjQsOCArMTI3LDkgQEAgcHJvdGVjdGVk
OgogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRhdGFiYXNlSW5mb1RhYmxlTmFtZSgpOwogCi0g
ICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fY29udGV4dFRocmVhZFNlY3VyaXR5T3Jp
Z2luOworICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CisgICAgRGF0YWJhc2VDb250ZXh0KiBtX2RhdGFiYXNlQ29udGV4dDsgLy8gT3du
ZWQgYnkgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LgogCiAgICAgU3RyaW5nIG1fbmFtZTsKICAg
ICBTdHJpbmcgbV9leHBlY3RlZFZlcnNpb247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0RhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFi
YXNlLmNwcAkocmV2aXNpb24gMTA5MDIxKQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRh
YmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJDaGFu
Z2VWZXJzaW9uV3JhcHBlci5oIgogI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgogI2luY2x1
ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKICNp
bmNsdWRlICJEYXRhYmFzZVRhc2suaCIKICNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgogI2lu
Y2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgpAQCAtMTA5LDcgKzExMCw3IEBAIFBhc3NSZWZQdHI8
RGF0YWJhc2U+IERhdGFiYXNlOjpvcGVuRGF0YWIKIAogICAgIERhdGFiYXNlVHJhY2tlcjo6dHJh
Y2tlcigpLnNldERhdGFiYXNlRGV0YWlscyhjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBuYW1l
LCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7CiAKLSAgICBjb250ZXh0LT5zZXRIYXNPcGVu
RGF0YWJhc2VzKCk7CisgICAgRGF0YWJhc2VDb250ZXh0Ojpmcm9tKGNvbnRleHQpLT5zZXRIYXNP
cGVuRGF0YWJhc2VzKCk7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5E
YXRhYmFzZShjb250ZXh0LCBkYXRhYmFzZSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+aG9z
dCgpLCBuYW1lLCBleHBlY3RlZFZlcnNpb24pOwogCkBAIC0xMzAsNyArMTMxLDcgQEAgRGF0YWJh
c2U6OkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIG1fZGF0YWJhc2VUaHJlYWRT
ZWN1cml0eU9yaWdpbiA9IG1fY29udGV4dFRocmVhZFNlY3VyaXR5T3JpZ2luLT5pc29sYXRlZENv
cHkoKTsKIAogICAgIFNjcmlwdENvbnRyb2xsZXI6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAg
ICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpKTsKKyAg
ICBBU1NFUlQobV9kYXRhYmFzZUNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCkpOwogfQogCiBjbGFz
cyBEZXJlZkNvbnRleHRUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sg
ewpAQCAtMTc5LDEyICsxODAsMTIgQEAgU3RyaW5nIERhdGFiYXNlOjp2ZXJzaW9uKCkgY29uc3QK
IGJvb2wgRGF0YWJhc2U6Om9wZW5BbmRWZXJpZnlWZXJzaW9uKGJvb2wgc2V0VmVyc2lvbkluTmV3
RGF0YWJhc2UsIEV4Y2VwdGlvbkNvZGUmIGUsIFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewogICAg
IERhdGFiYXNlVGFza1N5bmNocm9uaXplciBzeW5jaHJvbml6ZXI7Ci0gICAgaWYgKCFtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCkgfHwgbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT50ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25p
emVyKSkKKyAgICBpZiAoIW1fZGF0YWJhc2VDb250ZXh0LT5kYXRhYmFzZVRocmVhZCgpIHx8IG1f
ZGF0YWJhc2VDb250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT50ZXJtaW5hdGlvblJlcXVlc3RlZCgm
c3luY2hyb25pemVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCBzdWNjZXNz
ID0gZmFsc2U7CiAgICAgT3duUHRyPERhdGFiYXNlT3BlblRhc2s+IHRhc2sgPSBEYXRhYmFzZU9w
ZW5UYXNrOjpjcmVhdGUodGhpcywgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsICZzeW5jaHJvbml6
ZXIsIGUsIGVycm9yTWVzc2FnZSwgc3VjY2Vzcyk7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRhc2sodGFzay5yZWxlYXNl
KCkpOworICAgIG1fZGF0YWJhc2VDb250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZUlt
bWVkaWF0ZVRhc2sodGFzay5yZWxlYXNlKCkpOwogICAgIHN5bmNocm9uaXplci53YWl0Rm9yVGFz
a0NvbXBsZXRpb24oKTsKIAogICAgIHJldHVybiBzdWNjZXNzOwpAQCAtMTkyLDI3ICsxOTMsMjcg
QEAgYm9vbCBEYXRhYmFzZTo6b3BlbkFuZFZlcmlmeVZlcnNpb24oYm9vbAogCiB2b2lkIERhdGFi
YXNlOjptYXJrQXNEZWxldGVkQW5kQ2xvc2UoKQogewotICAgIGlmIChtX2RlbGV0ZWQgfHwgIW1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKSkKKyAgICBpZiAobV9kZWxl
dGVkIHx8ICFtX2RhdGFiYXNlQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgTE9HKFN0b3JhZ2VBUEksICJNYXJraW5nICVzICglcCkgYXMgZGVsZXRlZCIs
IHN0cmluZ0lkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSwgdGhpcyk7CiAgICAgbV9kZWxldGVk
ID0gdHJ1ZTsKIAogICAgIERhdGFiYXNlVGFza1N5bmNocm9uaXplciBzeW5jaHJvbml6ZXI7Ci0g
ICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+dGVybWlu
YXRpb25SZXF1ZXN0ZWQoJnN5bmNocm9uaXplcikpIHsKKyAgICBpZiAobV9kYXRhYmFzZUNvbnRl
eHQtPmRhdGFiYXNlVGhyZWFkKCktPnRlcm1pbmF0aW9uUmVxdWVzdGVkKCZzeW5jaHJvbml6ZXIp
KSB7CiAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiRGF0YWJhc2UgaGFuZGxlICVwIGlzIG9uIGEg
dGVybWluYXRlZCBEYXRhYmFzZVRocmVhZCwgY2Fubm90IGJlIG1hcmtlZCBmb3Igbm9ybWFsIGNs
b3N1cmVcbiIsIHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgT3duUHRyPERh
dGFiYXNlQ2xvc2VUYXNrPiB0YXNrID0gRGF0YWJhc2VDbG9zZVRhc2s6OmNyZWF0ZSh0aGlzLCAm
c3luY2hyb25pemVyKTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhy
ZWFkKCktPnNjaGVkdWxlSW1tZWRpYXRlVGFzayh0YXNrLnJlbGVhc2UoKSk7CisgICAgbV9kYXRh
YmFzZUNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxlSW1tZWRpYXRlVGFzayh0YXNr
LnJlbGVhc2UoKSk7CiAgICAgc3luY2hyb25pemVyLndhaXRGb3JUYXNrQ29tcGxldGlvbigpOwog
fQogCiB2b2lkIERhdGFiYXNlOjpjbG9zZSgpCiB7Ci0gICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPmdldFRocmVh
ZElEKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKSk7
CisgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlQ29udGV4dC0+ZGF0YWJh
c2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSk7CiAKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKQEAgLTIyNSwxNSArMjI2LDE1
IEBAIHZvaWQgRGF0YWJhc2U6OmNsb3NlKCkKIAogICAgIC8vIE11c3QgcmVmKCkgYmVmb3JlIGNh
bGxpbmcgZGF0YWJhc2VUaHJlYWQoKS0+cmVjb3JkRGF0YWJhc2VDbG9zZWQoKS4KICAgICBSZWZQ
dHI8RGF0YWJhc2U+IHByb3RlY3QgPSB0aGlzOwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+ZGF0YWJhc2VUaHJlYWQoKS0+cmVjb3JkRGF0YWJhc2VDbG9zZWQodGhpcyk7Ci0gICAgbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT51bnNjaGVkdWxlRGF0YWJh
c2VUYXNrcyh0aGlzKTsKKyAgICBtX2RhdGFiYXNlQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+
cmVjb3JkRGF0YWJhc2VDbG9zZWQodGhpcyk7CisgICAgbV9kYXRhYmFzZUNvbnRleHQtPmRhdGFi
YXNlVGhyZWFkKCktPnVuc2NoZWR1bGVEYXRhYmFzZVRhc2tzKHRoaXMpOwogICAgIERhdGFiYXNl
VHJhY2tlcjo6dHJhY2tlcigpLnJlbW92ZU9wZW5EYXRhYmFzZSh0aGlzKTsKIH0KIAogdm9pZCBE
YXRhYmFzZTo6Y2xvc2VJbW1lZGlhdGVseSgpCiB7CiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOwotICAgIERhdGFiYXNlVGhyZWFkKiBkYXRh
YmFzZVRocmVhZCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKTsK
KyAgICBEYXRhYmFzZVRocmVhZCogZGF0YWJhc2VUaHJlYWQgPSBtX2RhdGFiYXNlQ29udGV4dC0+
ZGF0YWJhc2VUaHJlYWQoKTsKICAgICBpZiAoZGF0YWJhc2VUaHJlYWQgJiYgIWRhdGFiYXNlVGhy
ZWFkLT50ZXJtaW5hdGlvblJlcXVlc3RlZCgpICYmIG9wZW5lZCgpKSB7CiAgICAgICAgIGxvZ0Vy
cm9yTWVzc2FnZSgiZm9yY2libHkgY2xvc2luZyBkYXRhYmFzZSIpOwogICAgICAgICBkYXRhYmFz
ZVRocmVhZC0+c2NoZWR1bGVJbW1lZGlhdGVUYXNrKERhdGFiYXNlQ2xvc2VUYXNrOjpjcmVhdGUo
dGhpcywgMCkpOwpAQCAtMjQ4LDggKzI0OSw4IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFz
ZTo6bWF4aW11bVNpemUKIGJvb2wgRGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KGJvb2wg
c2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIEV4Y2VwdGlvbkNvZGUmIGUsIFN0cmluZyYgZXJyb3JN
ZXNzYWdlKQogewogICAgIGlmIChBYnN0cmFjdERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlm
eShzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgZSwgZXJyb3JNZXNzYWdlKSkgewotICAgICAgICBp
ZiAobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpKQotICAgICAgICAg
ICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5yZWNvcmREYXRh
YmFzZU9wZW4odGhpcyk7CisgICAgICAgIGlmIChtX2RhdGFiYXNlQ29udGV4dC0+ZGF0YWJhc2VU
aHJlYWQoKSkKKyAgICAgICAgICAgIG1fZGF0YWJhc2VDb250ZXh0LT5kYXRhYmFzZVRocmVhZCgp
LT5yZWNvcmREYXRhYmFzZU9wZW4odGhpcyk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQpAQCAtMzExLDI2ICszMTIsMjYgQEAgdm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlv
bigpCiAgICAgaWYgKG1faXNUcmFuc2FjdGlvblF1ZXVlRW5hYmxlZCAmJiAhbV90cmFuc2FjdGlv
blF1ZXVlLmlzRW1wdHkoKSkKICAgICAgICAgdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9uUXVl
dWUudGFrZUZpcnN0KCk7CiAKLSAgICBpZiAodHJhbnNhY3Rpb24gJiYgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpKSB7CisgICAgaWYgKHRyYW5zYWN0aW9uICYmIG1f
ZGF0YWJhc2VDb250ZXh0LT5kYXRhYmFzZVRocmVhZCgpKSB7CiAgICAgICAgIE93blB0cjxEYXRh
YmFzZVRyYW5zYWN0aW9uVGFzaz4gdGFzayA9IERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrOjpjcmVh
dGUodHJhbnNhY3Rpb24pOwogICAgICAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgRGF0
YWJhc2VUcmFuc2FjdGlvblRhc2sgJXAgZm9yIHRyYW5zYWN0aW9uICVwXG4iLCB0YXNrLmdldCgp
LCB0YXNrLT50cmFuc2FjdGlvbigpKTsKICAgICAgICAgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3Mg
PSB0cnVlOwotICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFk
KCktPnNjaGVkdWxlVGFzayh0YXNrLnJlbGVhc2UoKSk7CisgICAgICAgIG1fZGF0YWJhc2VDb250
ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZVRhc2sodGFzay5yZWxlYXNlKCkpOwogICAg
IH0gZWxzZQogICAgICAgICBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlOwogfQogCiB2
b2lkIERhdGFiYXNlOjpzY2hlZHVsZVRyYW5zYWN0aW9uU3RlcChTUUxUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24sIGJvb2wgaW1tZWRpYXRlbHkpCiB7Ci0gICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCkpCisgICAgaWYgKCFtX2RhdGFiYXNlQ29udGV4dC0+
ZGF0YWJhc2VUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgT3duUHRyPERhdGFiYXNl
VHJhbnNhY3Rpb25UYXNrPiB0YXNrID0gRGF0YWJhc2VUcmFuc2FjdGlvblRhc2s6OmNyZWF0ZSh0
cmFuc2FjdGlvbik7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIERhdGFiYXNlVHJh
bnNhY3Rpb25UYXNrICVwIGZvciB0aGUgdHJhbnNhY3Rpb24gc3RlcFxuIiwgdGFzay5nZXQoKSk7
CiAgICAgaWYgKGltbWVkaWF0ZWx5KQotICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxlSW1tZWRpYXRlVGFzayh0YXNrLnJlbGVhc2UoKSk7
CisgICAgICAgIG1fZGF0YWJhc2VDb250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZUlt
bWVkaWF0ZVRhc2sodGFzay5yZWxlYXNlKCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZVRhc2sodGFzay5yZWxl
YXNlKCkpOworICAgICAgICBtX2RhdGFiYXNlQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+c2No
ZWR1bGVUYXNrKHRhc2sucmVsZWFzZSgpKTsKIH0KIAogY2xhc3MgRGVsaXZlclBlbmRpbmdDYWxs
YmFja1Rhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CkBAIC0zOTAs
MTIgKzM5MSwxMiBAQCBWZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6cGVyZm9ybUdldFRhYmxlCiAK
IFNRTFRyYW5zYWN0aW9uQ2xpZW50KiBEYXRhYmFzZTo6dHJhbnNhY3Rpb25DbGllbnQoKSBjb25z
dAogewotICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFk
KCktPnRyYW5zYWN0aW9uQ2xpZW50KCk7CisgICAgcmV0dXJuIG1fZGF0YWJhc2VDb250ZXh0LT5k
YXRhYmFzZVRocmVhZCgpLT50cmFuc2FjdGlvbkNsaWVudCgpOwogfQogCiBTUUxUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yKiBEYXRhYmFzZTo6dHJhbnNhY3Rpb25Db29yZGluYXRvcigpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+
dHJhbnNhY3Rpb25Db29yZGluYXRvcigpOworICAgIHJldHVybiBtX2RhdGFiYXNlQ29udGV4dC0+
ZGF0YWJhc2VUaHJlYWQoKS0+dHJhbnNhY3Rpb25Db29yZGluYXRvcigpOwogfQogCiBWZWN0b3I8
U3RyaW5nPiBEYXRhYmFzZTo6dGFibGVOYW1lcygpCkBAIC00MDQsMTEgKzQwNSwxMSBAQCBWZWN0
b3I8U3RyaW5nPiBEYXRhYmFzZTo6dGFibGVOYW1lcygpCiAgICAgLy8gaW4gZGVhbGluZyB3aXRo
IHRoZW0uIEhvd2V2ZXIsIGlmIHRoZSBjb2RlIGNoYW5nZXMsIHRoaXMgbWF5IG5vdCBiZSB0cnVl
IGFueW1vcmUuCiAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwogICAgIERhdGFiYXNlVGFza1N5
bmNocm9uaXplciBzeW5jaHJvbml6ZXI7Ci0gICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmRhdGFiYXNlVGhyZWFkKCkgfHwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFz
ZVRocmVhZCgpLT50ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkKKyAgICBpZiAo
IW1fZGF0YWJhc2VDb250ZXh0LT5kYXRhYmFzZVRocmVhZCgpIHx8IG1fZGF0YWJhc2VDb250ZXh0
LT5kYXRhYmFzZVRocmVhZCgpLT50ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgIE93blB0cjxEYXRhYmFzZVRhYmxlTmFtZXNU
YXNrPiB0YXNrID0gRGF0YWJhc2VUYWJsZU5hbWVzVGFzazo6Y3JlYXRlKHRoaXMsICZzeW5jaHJv
bml6ZXIsIHJlc3VsdCk7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRo
cmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRhc2sodGFzay5yZWxlYXNlKCkpOworICAgIG1fZGF0
YWJhc2VDb250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRhc2sodGFz
ay5yZWxlYXNlKCkpOwogICAgIHN5bmNocm9uaXplci53YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsK
IAogICAgIHJldHVybiByZXN1bHQ7CkBAIC00MTgsNyArNDE5LDcgQEAgU2VjdXJpdHlPcmlnaW4q
IERhdGFiYXNlOjpzZWN1cml0eU9yaWdpbgogewogICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPmlzQ29udGV4dFRocmVhZCgpKQogICAgICAgICByZXR1cm4gbV9jb250ZXh0VGhyZWFk
U2VjdXJpdHlPcmlnaW4uZ2V0KCk7Ci0gICAgaWYgKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkpCisgICAg
aWYgKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQo
KS0+Z2V0VGhyZWFkSUQoKSkKICAgICAgICAgcmV0dXJuIG1fZGF0YWJhc2VUaHJlYWRTZWN1cml0
eU9yaWdpbi5nZXQoKTsKICAgICByZXR1cm4gMDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvRGF0YWJhc2VDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0RhdGFiYXNlQ29udGV4dC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0RhdGFiYXNlQ29udGV4dC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRhdGFiYXNl
Q29udGV4dC5oIgorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkRhdGFi
YXNlLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VUYXNrLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VUaHJl
YWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgRGF0YWJhc2VDb250ZXh0KiBl
eGlzdGluZ0RhdGFiYXNlQ29udGV4dEZyb20oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGF0YWJhc2VDb250ZXh0Kj4oU3VwcGxlbWVu
dDxTY3JpcHRFeGVjdXRpb25Db250ZXh0Pjo6ZnJvbShjb250ZXh0LCAiRGF0YWJhc2VDb250ZXh0
IikpOworfQorCitEYXRhYmFzZUNvbnRleHQ6OkRhdGFiYXNlQ29udGV4dCgpCisgICAgOiBtX2hh
c09wZW5EYXRhYmFzZXMoZmFsc2UpCit7Cit9CisKK0RhdGFiYXNlQ29udGV4dDo6fkRhdGFiYXNl
Q29udGV4dCgpCit7CisgICAgaWYgKG1fZGF0YWJhc2VUaHJlYWQpIHsKKyAgICAgICAgQVNTRVJU
KG1fZGF0YWJhc2VUaHJlYWQtPnRlcm1pbmF0aW9uUmVxdWVzdGVkKCkpOworICAgICAgICBtX2Rh
dGFiYXNlVGhyZWFkID0gMDsKKyAgICB9Cit9CisKK0RhdGFiYXNlQ29udGV4dCogRGF0YWJhc2VD
b250ZXh0Ojpmcm9tKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgRGF0
YWJhc2VDb250ZXh0KiBzdXBwbGVtZW50ID0gZXhpc3RpbmdEYXRhYmFzZUNvbnRleHRGcm9tKGNv
bnRleHQpOworICAgIGlmICghc3VwcGxlbWVudCkgeworICAgICAgICBzdXBwbGVtZW50ID0gbmV3
IERhdGFiYXNlQ29udGV4dCgpOworICAgICAgICBwcm92aWRlVG8oY29udGV4dCwgIkRhdGFiYXNl
Q29udGV4dCIsIGFkb3B0UHRyKHN1cHBsZW1lbnQpKTsKKyAgICB9CisgICAgcmV0dXJuIHN1cHBs
ZW1lbnQ7Cit9CisKK0RhdGFiYXNlVGhyZWFkKiBEYXRhYmFzZUNvbnRleHQ6OmRhdGFiYXNlVGhy
ZWFkKCkKK3sKKyAgICBpZiAoIW1fZGF0YWJhc2VUaHJlYWQgJiYgIW1faGFzT3BlbkRhdGFiYXNl
cykgeworICAgICAgICAvLyBDcmVhdGUgdGhlIGRhdGFiYXNlIHRocmVhZCBvbiBmaXJzdCByZXF1
ZXN0IC0gYnV0IG5vdCBpZiBhdCBsZWFzdCBvbmUgZGF0YWJhc2Ugd2FzIGFscmVhZHkgb3BlbmVk
LAorICAgICAgICAvLyBiZWNhdXNlIGluIHRoYXQgY2FzZSB3ZSBhbHJlYWR5IGhhZCBhIGRhdGFi
YXNlIHRocmVhZCBhbmQgdGVybWluYXRlZCBpdCBhbmQgc2hvdWxkIG5vdCBjcmVhdGUgYW5vdGhl
ci4KKyAgICAgICAgbV9kYXRhYmFzZVRocmVhZCA9IERhdGFiYXNlVGhyZWFkOjpjcmVhdGUoKTsK
KyAgICAgICAgaWYgKCFtX2RhdGFiYXNlVGhyZWFkLT5zdGFydCgpKQorICAgICAgICAgICAgbV9k
YXRhYmFzZVRocmVhZCA9IDA7CisgICAgfQorCisgICAgcmV0dXJuIG1fZGF0YWJhc2VUaHJlYWQu
Z2V0KCk7Cit9CisKK2Jvb2wgRGF0YWJhc2VDb250ZXh0OjpoYXNPcGVuRGF0YWJhc2VzKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgLy8gV2UgZG9uJ3QgdXNlIERhdGFi
YXNlQ29udGV4dDo6ZnJvbSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY2F1c2UKKyAgICAvLyBE
YXRhYmFzZUNvbnRleHQgdG8gYmUgYWxsb2NhdGVkIGlmIHdlIGRvbid0IGhhdmUgb25lIGFscmVh
ZHkuCisgICAgRGF0YWJhc2VDb250ZXh0KiBkYXRhYmFzZUNvbnRleHQgPSBleGlzdGluZ0RhdGFi
YXNlQ29udGV4dEZyb20oY29udGV4dCk7CisgICAgaWYgKCFkYXRhYmFzZUNvbnRleHQpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZGF0YWJhc2VDb250ZXh0LT5tX2hhc09wZW5E
YXRhYmFzZXM7Cit9CisKK3ZvaWQgRGF0YWJhc2VDb250ZXh0OjpzdG9wRGF0YWJhc2VzKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIERhdGFiYXNlVGFza1N5bmNocm9uaXplciogY2xl
YW51cFN5bmMpCit7CisgICAgLy8gV2UgZG9uJ3QgdXNlIERhdGFiYXNlQ29udGV4dDo6ZnJvbSBi
ZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY2F1c2UKKyAgICAvLyBEYXRhYmFzZUNvbnRleHQgdG8g
YmUgYWxsb2NhdGVkIGlmIHdlIGRvbid0IGhhdmUgb25lIGFscmVhZHkuCisgICAgRGF0YWJhc2VD
b250ZXh0KiBkYXRhYmFzZUNvbnRleHQgPSBleGlzdGluZ0RhdGFiYXNlQ29udGV4dEZyb20oY29u
dGV4dCk7CisKKyAgICBpZiAoZGF0YWJhc2VDb250ZXh0ICYmIGRhdGFiYXNlQ29udGV4dC0+bV9k
YXRhYmFzZVRocmVhZCkKKyAgICAgICAgZGF0YWJhc2VDb250ZXh0LT5tX2RhdGFiYXNlVGhyZWFk
LT5yZXF1ZXN0VGVybWluYXRpb24oY2xlYW51cFN5bmMpOworICAgIGVsc2UgaWYgKGNsZWFudXBT
eW5jKQorICAgICAgICBjbGVhbnVwU3luYy0+dGFza0NvbXBsZXRlZCgpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNvbnRleHQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ29udGV4dC5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNvbnRleHQuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlLCBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgRGF0YWJhc2VDb250ZXh0X2gKKyNk
ZWZpbmUgRGF0YWJhc2VDb250ZXh0X2gKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNp
bmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IERhdGFiYXNlOworY2xhc3MgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyOworY2xhc3MgRGF0YWJh
c2VUaHJlYWQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCitjbGFzcyBEYXRhYmFz
ZUNvbnRleHQgOiBwdWJsaWMgU3VwcGxlbWVudDxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+RGF0YWJhc2VDb250ZXh0KCk7CisgICAgc3RhdGljIERhdGFi
YXNlQ29udGV4dCogZnJvbShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisKKyAgICBEYXRhYmFz
ZVRocmVhZCogZGF0YWJhc2VUaHJlYWQoKTsKKworICAgIHZvaWQgc2V0SGFzT3BlbkRhdGFiYXNl
cygpIHsgbV9oYXNPcGVuRGF0YWJhc2VzID0gdHJ1ZTsgfQorCisgICAgc3RhdGljIGJvb2wgaGFz
T3BlbkRhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisKKyAgICAvLyBXaGVuIHRo
ZSBkYXRhYmFzZSBjbGVhbnVwIGlzIGRvbmUsIGNsZWFudXBTeW5jIHdpbGwgYmUgc2lnbmFsbGVk
LgorICAgIHN0YXRpYyB2b2lkIHN0b3BEYXRhYmFzZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IERhdGFiYXNlVGFza1N5bmNocm9uaXplciopOworCitwcml2YXRlOgorICAgIERhdGFiYXNlQ29u
dGV4dCgpOworCisgICAgUmVmUHRyPERhdGFiYXNlVGhyZWFkPiBtX2RhdGFiYXNlVGhyZWFkOwor
ICAgIGJvb2wgbV9oYXNPcGVuRGF0YWJhc2VzOyAvLyBUaGlzIG5ldmVyIGNoYW5nZXMgYmFjayB0
byBmYWxzZSwgZXZlbiBhZnRlciB0aGUgZGF0YWJhc2UgdGhyZWFkIGlzIGNsb3NlZC4KK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJBU0Up
CisKKyNlbmRpZiAvLyBEYXRhYmFzZUNvbnRleHRfaApJbmRleDogU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDEwOTAyMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICsz
Myw3IEBACiAKICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQXV0aG9y
aXplci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgogI2luY2x1ZGUgIkRhdGFiYXNl
VGhyZWFkLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKQEAgLTE2Myw3ICsxNjQsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpjaGVja0FuZEhhbmRs
ZUNsb3NlCiAgICAgbV9lcnJvckNhbGxiYWNrV3JhcHBlci5jbGVhcigpOwogCiAgICAgLy8gVGhl
IG5leHQgc3RlcHMgc2hvdWxkIGJlIGV4ZWN1dGVkIG9ubHkgaWYgd2UncmUgb24gdGhlIERCIHRo
cmVhZC4KLSAgICBpZiAoY3VycmVudFRocmVhZCgpICE9IGRhdGFiYXNlKCktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSkKKyAgICBpZiAo
Y3VycmVudFRocmVhZCgpICE9IGRhdGFiYXNlKCktPmRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFz
ZVRocmVhZCgpLT5nZXRUaHJlYWRJRCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGUg
Y3VycmVudCBTUUxpdGUgdHJhbnNhY3Rpb24gc2hvdWxkIGJlIHN0b3BwZWQsIGFzIHdlbGwKQEAg
LTIxNSw3ICsyMTYsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpwZXJmb3JtUGVuZGluZ0NhbGxi
CiAKIHZvaWQgU1FMVHJhbnNhY3Rpb246Om5vdGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0dGluZ0Rv
d24oKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZGF0YWJhc2UoKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5nZXRUaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGRhdGFiYXNlKCktPmRhdGFiYXNlQ29udGV4dCgp
LT5kYXRhYmFzZVRocmVhZCgpLT5nZXRUaHJlYWRJRCgpKTsKIAogICAgIC8vIElmIHRoZSB0cmFu
c2FjdGlvbiBpcyBpbiBwcm9ncmVzcywgd2Ugc2hvdWxkIHJvbGwgaXQgYmFjayBoZXJlLCBzaW5j
ZSB0aGlzIGlzIG91ciBsYXN0CiAgICAgLy8gb3BvcnR1bml0eSB0byBkbyBzb21ldGhpbmcgcmVs
YXRlZCB0byB0aGlzIHRyYW5zYWN0aW9uIG9uIHRoZSBEQiB0aHJlYWQuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCShyZXZpc2lvbiAxMDkwMjEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogCisjaW5jbHVkZSAiRGF0
YWJhc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIktVUkwuaCIKQEAg
LTIxNSw4ICsyMTYsOSBAQCBwdWJsaWM6CiAgICAgICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNv
bnRleHQgPSBzdGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4oY29udGV4dCk7CiAKICNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKQorICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHN0b3AgdGhlIGRh
dGFiYXNlcyBhcyBwYXJ0IG9mIHN0b3BBY3RpdmVET01PYmplY3RzKCkgYmVsb3c/CiAgICAgICAg
IERhdGFiYXNlVGFza1N5bmNocm9uaXplciBjbGVhbnVwU3luYzsKLSAgICAgICAgd29ya2VyQ29u
dGV4dC0+c3RvcERhdGFiYXNlcygmY2xlYW51cFN5bmMpOworICAgICAgICBEYXRhYmFzZUNvbnRl
eHQ6OnN0b3BEYXRhYmFzZXMod29ya2VyQ29udGV4dCwgJmNsZWFudXBTeW5jKTsKICNlbmRpZgog
CiAgICAgICAgIHdvcmtlckNvbnRleHQtPnN0b3BBY3RpdmVET01PYmplY3RzKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129558</attachid>
            <date>2012-02-29 17:22:34 -0800</date>
            <delta_ts>2012-02-29 17:24:56 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-79633-20120229172233.patch</filename>
            <type>text/plain</type>
            <size>33760</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBACisyMDEyLTAyLTI5ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCBoYXMgdG9vIG1hbnkgaWZkZWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgVGhpcyBjbGFzcyBjcmVhdGVzIGEgRGF0YWJh
c2VDb250ZXh0IG9iamVjdCB0byBzdXBwbGVtZW50IHRoZQorICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0IHdpdGggZGF0YWJhc2Utc3BlY2lmaWMgaW5mb3JtYXRpb24uICBUaGlzIG5ldwor
ICAgICAgICBvYmplY3QgbGV0cyB1cyByZW1vdmUgYSBidW5jaCBvZiBkYXRhYmFzZS1zcGVjaWZp
YyAoYW5kIGlmZGVmZWQpIGxvZ2ljCisgICAgICAgIGZyb20gU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC4oY3BwfGgpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAg
KiBoaXN0b3J5L1BhZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2dDYW5DYWNoZUZy
YW1lRGVjaXNpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNhY2hlOjpjYW5DYWNoZVBhZ2VD
b250YWluaW5nVGhpc0ZyYW1lKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKiBz
dG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RE
YXRhYmFzZTo6QWJzdHJhY3REYXRhYmFzZSk6CisgICAgICAgICogc3RvcmFnZS9BYnN0cmFjdERh
dGFiYXNlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0
RGF0YWJhc2U6OmRhdGFiYXNlQ29udGV4dCk6CisgICAgICAgIChBYnN0cmFjdERhdGFiYXNlKToK
KyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OkRhdGFiYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpvcGVuQW5kVmVyaWZ5VmVyc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6bWFya0FzRGVsZXRlZEFuZENsb3NlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZTo6Y2xvc2VJbW1lZGlhdGVseSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9y
bU9wZW5BbmRWZXJpZnkpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rp
b25TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjp0cmFuc2FjdGlvbkNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6dHJhbnNhY3Rpb25Db29yZGluYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6dGFibGVOYW1lcyk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZTo6c2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2VD
b250ZXh0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlQ29udGV4dDo6RGF0YWJhc2VDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlQ29udGV4dDo6fkRhdGFiYXNlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZUNvbnRleHQ6OmZyb20pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0Ojpk
YXRhYmFzZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUNvbnRleHQ6OnN0b3BE
YXRhYmFzZXMpOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2VDb250ZXh0Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChEYXRhYmFzZUNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpzZXRIYXNPcGVuRGF0YWJhc2VzKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlQ29udGV4dDo6aGFzT3BlbkRhdGFiYXNlcyk6CisgICAgICAgICog
c3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2Fj
dGlvbjo6Y2hlY2tBbmRIYW5kbGVDbG9zZWRPckludGVycnVwdGVkRGF0YWJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246Om5vdGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0dGlu
Z0Rvd24pOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrOjpwZXJmb3JtVGFzayk6CisKIDIw
MTItMDItMjkgIERhdmlkIEJhcnRvbiAgPGRiYXJ0b25AbWF0aHNjcmliZS5jb20+CiAKICAgICAg
ICAgPG1zdWJzdXA+IHNldE5lZWRzTGF5b3V0KCkgY29ycmVjdGlvbgpJbmRleDogU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDEwOTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMzg3LDYgKzEzODcsNyBAQCBTRVQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgc3RvcmFnZS9ET01XaW5kb3dTUUxEYXRhYmFzZS5jcHAKICAgICBzdG9yYWdlL0Rh
dGFiYXNlLmNwcAogICAgIHN0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmNwcAorICAgIHN0b3Jh
Z2UvRGF0YWJhc2VDb250ZXh0LmNwcAogICAgIHN0b3JhZ2UvRGF0YWJhc2VTeW5jLmNwcAogICAg
IHN0b3JhZ2UvRGF0YWJhc2VUYXNrLmNwcAogICAgIHN0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuY3Bw
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEwOTI4NikKKysr
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTM4
NjEsMTIgKzM4NjEsMTQgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
RE9NV2luZG93U1FMRGF0YWJhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RPTVdp
bmRvd1NRTERhdGFiYXNlLmggXAorCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9EYXRhYmFzZUF1dGhvcml6ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFz
ZUNhbGxiYWNrLmggXAotCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ29udGV4dC5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvRGF0YWJhc2VDb250ZXh0LmggXAogCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
RGF0YWJhc2VEZXRhaWxzLmggXAotCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaCBc
CiAJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0Rh
dGFiYXNlVGFzay5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMDkyODYpCisrKyBT
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMzA0LDYgKzEzMDQs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBzdG9yYWdlL0RPTVdpbmRvd1NRTERhdGFiYXNlLmNwcCBc
CiAgICAgc3RvcmFnZS9EYXRhYmFzZS5jcHAgXAogICAgIHN0b3JhZ2UvRGF0YWJhc2VBdXRob3Jp
emVyLmNwcCBcCisgICAgc3RvcmFnZS9EYXRhYmFzZUNvbnRleHQuY3BwIFwKICAgICBzdG9yYWdl
L0RhdGFiYXNlU3luYy5jcHAgXAogICAgIHN0b3JhZ2UvU3RvcmFnZVRhc2suY3BwIFwKICAgICBz
dG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9u
IDEwOTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpA
QCAtNDYzOCw2ICs0NjM4LDggQEAKICAgICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNlQXV0aG9y
aXplci5jcHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmgnLAog
ICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5oJywKKyAgICAgICAgICAgICdz
dG9yYWdlL0RhdGFiYXNlQ29udGV4dC5jcHAnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJh
c2VDb250ZXh0LmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmNwcCcsCiAg
ICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZVN5bmMuaCcsCiAgICAgICAgICAgICAnc3RvcmFn
ZS9EYXRhYmFzZVRhc2suY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxMDkyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNzA2ODIsNiAr
NzA2ODIsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cc3RvcmFnZVxEYXRhYmFzZUNvbnRleHQuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXERhdGFiYXNlQ29udGV4dC5oIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdl
XERhdGFiYXNlU3luYy5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TmFtZXMuaW4JKHJldmlzaW9uIDEwOTA1MCkJKGZyb20gU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50RmFjdG9yeS5pbjoxMDkwNTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5p
bgkod29ya2luZyBjb3B5KQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmNwcAkocmV2aXNpb24gMTA5Mjg2KQorKysgU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw5ICszMCw2
IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3Vy
aXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiRE9NVGltZXIuaCIKLSNpbmNsdWRlICJEYXRhYmFzZS5o
IgotI2luY2x1ZGUgIkRhdGFiYXNlVGFzay5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVGhyZWFkLmgi
CiAjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNp
bmNsdWRlICJFdmVudFRhcmdldC5oIgpAQCAtOTQsOSArOTEsNiBAQCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpTY3JpcHRFeGVjdXRpb25DCiAgICAgLCBtX2luRGVzdHJ1Y3RvcihmYWxzZSkKICAg
ICAsIG1faW5EaXNwYXRjaEVycm9yRXZlbnQoZmFsc2UpCiAgICAgLCBtX2FjdGl2ZURPTU9iamVj
dHNBcmVTdXNwZW5kZWQoZmFsc2UpCi0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICAsIG1f
aGFzT3BlbkRhdGFiYXNlcyhmYWxzZSkKLSNlbmRpZgogewogfQogCkBAIC0xMTUsMTIgKzEwOSw2
IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6On5TY3JpcHRFeGVjdXRpb24KICAgICAgICAgQVNT
RVJUKCgqaXRlciktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSB0aGlzKTsKICAgICAgICAg
KCppdGVyKS0+Y29udGV4dERlc3Ryb3llZCgpOwogICAgIH0KLSNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQotICAgIGlmIChtX2RhdGFiYXNlVGhyZWFkKSB7Ci0gICAgICAgIEFTU0VSVChtX2RhdGFi
YXNlVGhyZWFkLT50ZXJtaW5hdGlvblJlcXVlc3RlZCgpKTsKLSAgICAgICAgbV9kYXRhYmFzZVRo
cmVhZCA9IDA7Ci0gICAgfQotI2VuZGlmCiAjaWYgRU5BQkxFKEJMT0IpIHx8IEVOQUJMRShGSUxF
X1NZU1RFTSkKICAgICBpZiAobV9maWxlVGhyZWFkKSB7CiAgICAgICAgIG1fZmlsZVRocmVhZC0+
c3RvcCgpOwpAQCAtMTMzLDMyICsxMjEsNiBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2Ny
aXB0RXhlY3V0aW9uCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0KLURh
dGFiYXNlVGhyZWFkKiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkYXRhYmFzZVRocmVhZCgpCi17
Ci0gICAgaWYgKCFtX2RhdGFiYXNlVGhyZWFkICYmICFtX2hhc09wZW5EYXRhYmFzZXMpIHsKLSAg
ICAgICAgLy8gQ3JlYXRlIHRoZSBkYXRhYmFzZSB0aHJlYWQgb24gZmlyc3QgcmVxdWVzdCAtIGJ1
dCBub3QgaWYgYXQgbGVhc3Qgb25lIGRhdGFiYXNlIHdhcyBhbHJlYWR5IG9wZW5lZCwKLSAgICAg
ICAgLy8gYmVjYXVzZSBpbiB0aGF0IGNhc2Ugd2UgYWxyZWFkeSBoYWQgYSBkYXRhYmFzZSB0aHJl
YWQgYW5kIHRlcm1pbmF0ZWQgaXQgYW5kIHNob3VsZCBub3QgY3JlYXRlIGFub3RoZXIuCi0gICAg
ICAgIG1fZGF0YWJhc2VUaHJlYWQgPSBEYXRhYmFzZVRocmVhZDo6Y3JlYXRlKCk7Ci0gICAgICAg
IGlmICghbV9kYXRhYmFzZVRocmVhZC0+c3RhcnQoKSkKLSAgICAgICAgICAgIG1fZGF0YWJhc2VU
aHJlYWQgPSAwOwotICAgIH0KLQotICAgIHJldHVybiBtX2RhdGFiYXNlVGhyZWFkLmdldCgpOwot
fQotCi12b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN0b3BEYXRhYmFzZXMoRGF0YWJhc2VU
YXNrU3luY2hyb25pemVyKiBjbGVhbnVwU3luYykKLXsKLSAgICBBU1NFUlQoaXNDb250ZXh0VGhy
ZWFkKCkpOwotICAgIGlmIChtX2RhdGFiYXNlVGhyZWFkKQotICAgICAgICBtX2RhdGFiYXNlVGhy
ZWFkLT5yZXF1ZXN0VGVybWluYXRpb24oY2xlYW51cFN5bmMpOwotICAgIGVsc2UgaWYgKGNsZWFu
dXBTeW5jKQotICAgICAgICBjbGVhbnVwU3luYy0+dGFza0NvbXBsZXRlZCgpOwotfQotCi0jZW5k
aWYKLQogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwcm9jZXNzTWVzc2FnZVBvcnRNZXNz
YWdlc1Nvb24oKQogewogICAgIHBvc3RUYXNrKFByb2Nlc3NNZXNzYWdlc1Nvb25UYXNrOjpjcmVh
dGUoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgJKHJldmlzaW9uIDEwOTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJL
VVJMLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlD
b250ZXh0LmgiCisjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KQEAgLTU2LDE3ICs1NywxMiBAQCBjbGFzcyBNZXNzYWdlUG9ydDsKICNpZiBFTkFCTEUoQkxP
QikKIGNsYXNzIFB1YmxpY1VSTE1hbmFnZXI7CiAjZW5kaWYKLSNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQotY2xhc3MgRGF0YWJhc2U7Ci1jbGFzcyBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXI7Ci1j
bGFzcyBEYXRhYmFzZVRocmVhZDsKLSNlbmRpZgogCiAjaWYgRU5BQkxFKEJMT0IpIHx8IEVOQUJM
RShGSUxFX1NZU1RFTSkKIGNsYXNzIEZpbGVUaHJlYWQ7CiAjZW5kaWYKIAotY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCA6IHB1YmxpYyBTZWN1cml0eUNvbnRleHQgeworY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCA6IHB1YmxpYyBTZWN1cml0eUNvbnRleHQsIHB1YmxpYyBTdXBwbGVt
ZW50YWJsZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiB7CiBwdWJsaWM6CiAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwogICAgIHZpcnR1YWwgflNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
QEAgLTc3LDExICs3Myw2IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAg
IHZpcnR1YWwgYm9vbCBhbGxvd0RhdGFiYXNlQWNjZXNzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkYXRhYmFzZUV4Y2VlZGVkUXVvdGEoY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7Ci0g
ICAgRGF0YWJhc2VUaHJlYWQqIGRhdGFiYXNlVGhyZWFkKCk7Ci0gICAgdm9pZCBzZXRIYXNPcGVu
RGF0YWJhc2VzKCkgeyBtX2hhc09wZW5EYXRhYmFzZXMgPSB0cnVlOyB9Ci0gICAgYm9vbCBoYXNP
cGVuRGF0YWJhc2VzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNPcGVuRGF0YWJhc2VzOyB9Ci0gICAg
Ly8gV2hlbiB0aGUgZGF0YWJhc2UgY2xlYW51cCBpcyBkb25lLCBjbGVhbnVwU3luYyB3aWxsIGJl
IHNpZ25hbGxlZC4KLSAgICB2b2lkIHN0b3BEYXRhYmFzZXMoRGF0YWJhc2VUYXNrU3luY2hyb25p
emVyKik7CiAjZW5kaWYKICAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZXh0VGhyZWFkKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVu
KCkgY29uc3QgPSAwOwpAQCAtMjI0LDExICsyMTUsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9h
Y3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkOwogICAgIEFjdGl2ZURPTU9iamVjdDo6UmVhc29u
Rm9yU3VzcGVuc2lvbiBtX3JlYXNvbkZvclN1c3BlbmRpbmdBY3RpdmVET01PYmplY3RzOwogCi0j
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBSZWZQdHI8RGF0YWJhc2VUaHJlYWQ+IG1fZGF0
YWJhc2VUaHJlYWQ7Ci0gICAgYm9vbCBtX2hhc09wZW5EYXRhYmFzZXM7IC8vIFRoaXMgbmV2ZXIg
Y2hhbmdlcyBiYWNrIHRvIGZhbHNlLCBldmVuIGFmdGVyIHRoZSBkYXRhYmFzZSB0aHJlYWQgaXMg
Y2xvc2VkLgotI2VuZGlmCi0KICNpZiBFTkFCTEUoQkxPQikgfHwgRU5BQkxFKEZJTEVfU1lTVEVN
KQogICAgIFJlZlB0cjxGaWxlVGhyZWFkPiBtX2ZpbGVUaHJlYWQ7CiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAJKHJldmlzaW9uIDEwOTI4NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUGFnZS5o
IgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgog
I2luY2x1ZGUgIkRldmljZU1vdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEZXZpY2VPcmll
bnRhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtMTIwLDcgKzEy
MSw3IEBAIHN0YXRpYyBib29sIGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihGcmEKICAgICAgICAg
ICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKICAgICAgICAgfQogI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCi0gICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKS0+aGFzT3BlbkRhdGFiYXNlcygpKSB7
CisgICAgICAgIGlmIChEYXRhYmFzZUNvbnRleHQ6Omhhc09wZW5EYXRhYmFzZXMoZnJhbWUtPmRv
Y3VtZW50KCkpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLUZyYW1lIGhhcyBvcGVuIGRhdGFi
YXNlIGhhbmRsZXMiKTsKICAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKICAgICAgICAg
fQpAQCAtMjYzLDcgKzI2NCw3IEBAIGJvb2wgUGFnZUNhY2hlOjpjYW5DYWNoZVBhZ2VDb250YWlu
aW5nVGgKICAgICAgICAgJiYgKCFkb2N1bWVudC0+dXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSB8
fCAoIWRvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmNhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNo
ZSgpICYmICFkb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5jYWNoZUNvbnRyb2xDb250YWluc05v
U3RvcmUoKSkpCiAgICAgICAgICYmICghZnJhbWUtPmRvbVdpbmRvdygpIHx8ICFmcmFtZS0+ZG9t
V2luZG93KCktPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS51bmxvYWRFdmVudCkpCiAj
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICAgICAgJiYgIWRvY3VtZW50LT5oYXNPcGVuRGF0
YWJhc2VzKCkKKyAgICAgICAgJiYgIURhdGFiYXNlQ29udGV4dDo6aGFzT3BlbkRhdGFiYXNlcyhk
b2N1bWVudCkKICNlbmRpZgogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKICAgICAgICAgJiYg
IVNoYXJlZFdvcmtlclJlcG9zaXRvcnk6Omhhc1NoYXJlZFdvcmtlcnMoZG9jdW1lbnQpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDEwOTI4NikKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDb25z
b2xlLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCisjaW5jbHVkZSAiRGF0
YWJhc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtNDE4LDcgKzQxOSw4IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKFVubG9hZEV2ZW4KICAgICAgICAgZG9jLT5z
ZXRSZWFkeVN0YXRlKERvY3VtZW50OjpDb21wbGV0ZSk7CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQotICAgICAgICBkb2MtPnN0b3BEYXRhYmFzZXMoMCk7CisgICAgICAgIC8vIEZJWE1FOiBT
aG91bGQgdGhlIERhdGFiYXNlQ29udGV4dCB3YXRjaCBmb3Igc29tZXRoaW5nIGxpa2UgQWN0aXZl
RE9NT2JqZWN0OjpzdG9wKCkgcmF0aGVyIHRoYW4gYmVpbmcgc3BlY2lhbC1jYXNlZCBoZXJlPwor
ICAgICAgICBEYXRhYmFzZUNvbnRleHQ6OnN0b3BEYXRhYmFzZXMoZG9jLCAwKTsKICNlbmRpZgog
ICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VwcGxlbWVudGFibGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdXBwbGVtZW50YWJsZS5oCShy
ZXZpc2lvbiAxMDkyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdXBwbGVtZW50YWJs
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NywxNiArNTgsMTYgQEAgcHVibGljOgogICAgIHZv
aWQgcHJvdmlkZVN1cHBsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBrZXksIFBhc3NPd25QdHI8
U3VwcGxlbWVudDxUPiA+IHN1cHBsZW1lbnQpCiAgICAgewogICAgICAgICBBU1NFUlQoIW1fc3Vw
cGxlbWVudHMuZ2V0KGtleS5pbXBsKCkpKTsKLSAgICAgICAgbV9zdXBwbGVtZW50cy5zZXQoa2V5
LmltcGwoKSwgc3VwcGxlbWVudCk7CisgICAgICAgIG1fc3VwcGxlbWVudHMuc2V0KGtleSwgc3Vw
cGxlbWVudCk7CiAgICAgfQogCiAgICAgU3VwcGxlbWVudDxUPiogcmVxdWlyZVN1cHBsZW1lbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiBrZXkpCiAgICAgewotICAgICAgICByZXR1cm4gbV9zdXBwbGVt
ZW50cy5nZXQoa2V5LmltcGwoKSk7CisgICAgICAgIHJldHVybiBtX3N1cHBsZW1lbnRzLmdldChr
ZXkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5n
SW1wbCosIE93blB0cjxTdXBwbGVtZW50PFQ+ID4gPiBTdXBwbGVtZW50TWFwOworICAgIHR5cGVk
ZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIE93blB0cjxTdXBwbGVtZW50PFQ+ID4gPiBTdXBwbGVt
ZW50TWFwOwogICAgIFN1cHBsZW1lbnRNYXAgbV9zdXBwbGVtZW50czsKIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvQWJzdHJhY3REYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmNwcAkocmV2aXNpb24gMTA5
Mjg2KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAK
ICNpbmNsdWRlICJEYXRhYmFzZUF1dGhvcml6ZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUNvbnRl
eHQuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtMTg4LDYgKzE4OSw3IEBAIGNvbnN0IGNo
YXIqIEFic3RyYWN0RGF0YWJhc2U6OmRhdGFiYXNlSW4KIEFic3RyYWN0RGF0YWJhc2U6OkFic3Ry
YWN0RGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9u
ZyBlc3RpbWF0ZWRTaXplLCBEYXRhYmFzZVR5cGUgZGF0YWJhc2VUeXBlKQogICAgIDogbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCisgICAgLCBtX2RhdGFiYXNlQ29udGV4dChEYXRh
YmFzZUNvbnRleHQ6OmZyb20oY29udGV4dCkpCiAgICAgLCBtX25hbWUobmFtZS5pc29sYXRlZENv
cHkoKSkKICAgICAsIG1fZXhwZWN0ZWRWZXJzaW9uKGV4cGVjdGVkVmVyc2lvbi5pc29sYXRlZENv
cHkoKSkKICAgICAsIG1fZGlzcGxheU5hbWUoZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuaAkocmV2aXNpb24g
MTA5Mjg2KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRGF0YWJhc2VBdXRob3JpemVyOworY2xhc3MgRGF0YWJhc2VDb250ZXh0OwogY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCkBAIC04Niw2ICs4
Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbWFya0FzRGVsZXRlZEFuZENsb3NlKCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZUltbWVkaWF0ZWx5KCkgPSAwOwogCisgICAgRGF0
YWJhc2VDb250ZXh0KiBkYXRhYmFzZUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNl
Q29udGV4dDsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIENoYW5nZVZlcnNpb25X
cmFwcGVyOwogICAgIGZyaWVuZCBjbGFzcyBTUUxTdGF0ZW1lbnQ7CkBAIC0xMjQsOCArMTI3LDkg
QEAgcHJvdGVjdGVkOgogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRhdGFiYXNlSW5mb1RhYmxl
TmFtZSgpOwogCi0gICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fY29udGV4dFRocmVh
ZFNlY3VyaXR5T3JpZ2luOworICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisgICAgRGF0YWJhc2VDb250ZXh0KiBtX2RhdGFiYXNlQ29u
dGV4dDsgLy8gT3duZWQgYnkgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LgogCiAgICAgU3RyaW5n
IG1fbmFtZTsKICAgICBTdHJpbmcgbV9leHBlY3RlZFZlcnNpb247CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0RhdGFiYXNlLmNwcAkocmV2aXNpb24gMTA5Mjg2KQorKysgU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9EYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNp
bmNsdWRlICJDaGFuZ2VWZXJzaW9uV3JhcHBlci5oIgogI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFz
ay5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJEYXRhYmFzZUNv
bnRleHQuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRhc2suaCIKICNpbmNsdWRlICJEYXRhYmFzZVRo
cmVhZC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgpAQCAtMTA5LDcgKzExMCw3IEBA
IFBhc3NSZWZQdHI8RGF0YWJhc2U+IERhdGFiYXNlOjpvcGVuRGF0YWIKIAogICAgIERhdGFiYXNl
VHJhY2tlcjo6dHJhY2tlcigpLnNldERhdGFiYXNlRGV0YWlscyhjb250ZXh0LT5zZWN1cml0eU9y
aWdpbigpLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7CiAKLSAgICBjb250ZXh0
LT5zZXRIYXNPcGVuRGF0YWJhc2VzKCk7CisgICAgRGF0YWJhc2VDb250ZXh0Ojpmcm9tKGNvbnRl
eHQpLT5zZXRIYXNPcGVuRGF0YWJhc2VzKCk7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZE9wZW5EYXRhYmFzZShjb250ZXh0LCBkYXRhYmFzZSwgY29udGV4dC0+c2VjdXJpdHlP
cmlnaW4oKS0+aG9zdCgpLCBuYW1lLCBleHBlY3RlZFZlcnNpb24pOwogCkBAIC0xMzAsNyArMTMx
LDcgQEAgRGF0YWJhc2U6OkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIG1fZGF0
YWJhc2VUaHJlYWRTZWN1cml0eU9yaWdpbiA9IG1fY29udGV4dFRocmVhZFNlY3VyaXR5T3JpZ2lu
LT5pc29sYXRlZENvcHkoKTsKIAogICAgIFNjcmlwdENvbnRyb2xsZXI6OmluaXRpYWxpemVUaHJl
YWRpbmcoKTsKLSAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRo
cmVhZCgpKTsKKyAgICBBU1NFUlQoZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCkp
OwogfQogCiBjbGFzcyBEZXJlZkNvbnRleHRUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2sgewpAQCAtMTc5LDEyICsxODAsMTIgQEAgU3RyaW5nIERhdGFiYXNlOjp2ZXJz
aW9uKCkgY29uc3QKIGJvb2wgRGF0YWJhc2U6Om9wZW5BbmRWZXJpZnlWZXJzaW9uKGJvb2wgc2V0
VmVyc2lvbkluTmV3RGF0YWJhc2UsIEV4Y2VwdGlvbkNvZGUmIGUsIFN0cmluZyYgZXJyb3JNZXNz
YWdlKQogewogICAgIERhdGFiYXNlVGFza1N5bmNocm9uaXplciBzeW5jaHJvbml6ZXI7Ci0gICAg
aWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCkgfHwgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT50ZXJtaW5hdGlvblJlcXVlc3Rl
ZCgmc3luY2hyb25pemVyKSkKKyAgICBpZiAoIWRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRo
cmVhZCgpIHx8IGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT50ZXJtaW5hdGlv
blJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Ym9vbCBzdWNjZXNzID0gZmFsc2U7CiAgICAgT3duUHRyPERhdGFiYXNlT3BlblRhc2s+IHRhc2sg
PSBEYXRhYmFzZU9wZW5UYXNrOjpjcmVhdGUodGhpcywgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2Us
ICZzeW5jaHJvbml6ZXIsIGUsIGVycm9yTWVzc2FnZSwgc3VjY2Vzcyk7Ci0gICAgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRhc2so
dGFzay5yZWxlYXNlKCkpOworICAgIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgp
LT5zY2hlZHVsZUltbWVkaWF0ZVRhc2sodGFzay5yZWxlYXNlKCkpOwogICAgIHN5bmNocm9uaXpl
ci53YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKIAogICAgIHJldHVybiBzdWNjZXNzOwpAQCAtMTky
LDI3ICsxOTMsMjcgQEAgYm9vbCBEYXRhYmFzZTo6b3BlbkFuZFZlcmlmeVZlcnNpb24oYm9vbAog
CiB2b2lkIERhdGFiYXNlOjptYXJrQXNEZWxldGVkQW5kQ2xvc2UoKQogewotICAgIGlmIChtX2Rl
bGV0ZWQgfHwgIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKSkKKyAg
ICBpZiAobV9kZWxldGVkIHx8ICFkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgTE9HKFN0b3JhZ2VBUEksICJNYXJraW5nICVzICglcCkg
YXMgZGVsZXRlZCIsIHN0cmluZ0lkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSwgdGhpcyk7CiAg
ICAgbV9kZWxldGVkID0gdHJ1ZTsKIAogICAgIERhdGFiYXNlVGFza1N5bmNocm9uaXplciBzeW5j
aHJvbml6ZXI7Ci0gICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJl
YWQoKS0+dGVybWluYXRpb25SZXF1ZXN0ZWQoJnN5bmNocm9uaXplcikpIHsKKyAgICBpZiAoZGF0
YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnRlcm1pbmF0aW9uUmVxdWVzdGVkKCZz
eW5jaHJvbml6ZXIpKSB7CiAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiRGF0YWJhc2UgaGFuZGxl
ICVwIGlzIG9uIGEgdGVybWluYXRlZCBEYXRhYmFzZVRocmVhZCwgY2Fubm90IGJlIG1hcmtlZCBm
b3Igbm9ybWFsIGNsb3N1cmVcbiIsIHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgT3duUHRyPERhdGFiYXNlQ2xvc2VUYXNrPiB0YXNrID0gRGF0YWJhc2VDbG9zZVRhc2s6OmNy
ZWF0ZSh0aGlzLCAmc3luY2hyb25pemVyKTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxlSW1tZWRpYXRlVGFzayh0YXNrLnJlbGVhc2UoKSk7
CisgICAgZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxlSW1tZWRp
YXRlVGFzayh0YXNrLnJlbGVhc2UoKSk7CiAgICAgc3luY2hyb25pemVyLndhaXRGb3JUYXNrQ29t
cGxldGlvbigpOwogfQogCiB2b2lkIERhdGFiYXNlOjpjbG9zZSgpCiB7Ci0gICAgQVNTRVJUKG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKSk7Ci0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFk
KCktPmdldFRocmVhZElEKCkpOworICAgIEFTU0VSVChkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJh
c2VUaHJlYWQoKSk7CisgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBkYXRhYmFzZUNvbnRl
eHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSk7CiAKICAgICB7CiAgICAgICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKQEAgLTIy
NSwxNSArMjI2LDE1IEBAIHZvaWQgRGF0YWJhc2U6OmNsb3NlKCkKIAogICAgIC8vIE11c3QgcmVm
KCkgYmVmb3JlIGNhbGxpbmcgZGF0YWJhc2VUaHJlYWQoKS0+cmVjb3JkRGF0YWJhc2VDbG9zZWQo
KS4KICAgICBSZWZQdHI8RGF0YWJhc2U+IHByb3RlY3QgPSB0aGlzOwotICAgIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+cmVjb3JkRGF0YWJhc2VDbG9zZWQodGhp
cyk7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT51bnNj
aGVkdWxlRGF0YWJhc2VUYXNrcyh0aGlzKTsKKyAgICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJh
c2VUaHJlYWQoKS0+cmVjb3JkRGF0YWJhc2VDbG9zZWQodGhpcyk7CisgICAgZGF0YWJhc2VDb250
ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnVuc2NoZWR1bGVEYXRhYmFzZVRhc2tzKHRoaXMpOwog
ICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnJlbW92ZU9wZW5EYXRhYmFzZSh0aGlzKTsK
IH0KIAogdm9pZCBEYXRhYmFzZTo6Y2xvc2VJbW1lZGlhdGVseSgpCiB7CiAgICAgQVNTRVJUKG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOwotICAgIERhdGFiYXNl
VGhyZWFkKiBkYXRhYmFzZVRocmVhZCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZGF0YWJh
c2VUaHJlYWQoKTsKKyAgICBEYXRhYmFzZVRocmVhZCogZGF0YWJhc2VUaHJlYWQgPSBkYXRhYmFz
ZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKTsKICAgICBpZiAoZGF0YWJhc2VUaHJlYWQgJiYg
IWRhdGFiYXNlVGhyZWFkLT50ZXJtaW5hdGlvblJlcXVlc3RlZCgpICYmIG9wZW5lZCgpKSB7CiAg
ICAgICAgIGxvZ0Vycm9yTWVzc2FnZSgiZm9yY2libHkgY2xvc2luZyBkYXRhYmFzZSIpOwogICAg
ICAgICBkYXRhYmFzZVRocmVhZC0+c2NoZWR1bGVJbW1lZGlhdGVUYXNrKERhdGFiYXNlQ2xvc2VU
YXNrOjpjcmVhdGUodGhpcywgMCkpOwpAQCAtMjQ4LDggKzI0OSw4IEBAIHVuc2lnbmVkIGxvbmcg
bG9uZyBEYXRhYmFzZTo6bWF4aW11bVNpemUKIGJvb2wgRGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5k
VmVyaWZ5KGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIEV4Y2VwdGlvbkNvZGUmIGUsIFN0
cmluZyYgZXJyb3JNZXNzYWdlKQogewogICAgIGlmIChBYnN0cmFjdERhdGFiYXNlOjpwZXJmb3Jt
T3BlbkFuZFZlcmlmeShzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgZSwgZXJyb3JNZXNzYWdlKSkg
ewotICAgICAgICBpZiAobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgp
KQotICAgICAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgp
LT5yZWNvcmREYXRhYmFzZU9wZW4odGhpcyk7CisgICAgICAgIGlmIChkYXRhYmFzZUNvbnRleHQo
KS0+ZGF0YWJhc2VUaHJlYWQoKSkKKyAgICAgICAgICAgIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRh
YmFzZVRocmVhZCgpLT5yZWNvcmREYXRhYmFzZU9wZW4odGhpcyk7CiAKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtMzExLDI2ICszMTIsMjYgQEAgdm9pZCBEYXRhYmFzZTo6c2NoZWR1
bGVUcmFuc2FjdGlvbigpCiAgICAgaWYgKG1faXNUcmFuc2FjdGlvblF1ZXVlRW5hYmxlZCAmJiAh
bV90cmFuc2FjdGlvblF1ZXVlLmlzRW1wdHkoKSkKICAgICAgICAgdHJhbnNhY3Rpb24gPSBtX3Ry
YW5zYWN0aW9uUXVldWUudGFrZUZpcnN0KCk7CiAKLSAgICBpZiAodHJhbnNhY3Rpb24gJiYgbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpKSB7CisgICAgaWYgKHRyYW5z
YWN0aW9uICYmIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpKSB7CiAgICAgICAg
IE93blB0cjxEYXRhYmFzZVRyYW5zYWN0aW9uVGFzaz4gdGFzayA9IERhdGFiYXNlVHJhbnNhY3Rp
b25UYXNrOjpjcmVhdGUodHJhbnNhY3Rpb24pOwogICAgICAgICBMT0coU3RvcmFnZUFQSSwgIlNj
aGVkdWxpbmcgRGF0YWJhc2VUcmFuc2FjdGlvblRhc2sgJXAgZm9yIHRyYW5zYWN0aW9uICVwXG4i
LCB0YXNrLmdldCgpLCB0YXNrLT50cmFuc2FjdGlvbigpKTsKICAgICAgICAgbV90cmFuc2FjdGlv
bkluUHJvZ3Jlc3MgPSB0cnVlOwotICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRh
dGFiYXNlVGhyZWFkKCktPnNjaGVkdWxlVGFzayh0YXNrLnJlbGVhc2UoKSk7CisgICAgICAgIGRh
dGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZVRhc2sodGFzay5yZWxl
YXNlKCkpOwogICAgIH0gZWxzZQogICAgICAgICBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IGZh
bHNlOwogfQogCiB2b2lkIERhdGFiYXNlOjpzY2hlZHVsZVRyYW5zYWN0aW9uU3RlcChTUUxUcmFu
c2FjdGlvbiogdHJhbnNhY3Rpb24sIGJvb2wgaW1tZWRpYXRlbHkpCiB7Ci0gICAgaWYgKCFtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCkpCisgICAgaWYgKCFkYXRhYmFz
ZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgT3du
UHRyPERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrPiB0YXNrID0gRGF0YWJhc2VUcmFuc2FjdGlvblRh
c2s6OmNyZWF0ZSh0cmFuc2FjdGlvbik7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5n
IERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrICVwIGZvciB0aGUgdHJhbnNhY3Rpb24gc3RlcFxuIiwg
dGFzay5nZXQoKSk7CiAgICAgaWYgKGltbWVkaWF0ZWx5KQotICAgICAgICBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxlSW1tZWRpYXRlVGFzayh0YXNr
LnJlbGVhc2UoKSk7CisgICAgICAgIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgp
LT5zY2hlZHVsZUltbWVkaWF0ZVRhc2sodGFzay5yZWxlYXNlKCkpOwogICAgIGVsc2UKLSAgICAg
ICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZVRh
c2sodGFzay5yZWxlYXNlKCkpOworICAgICAgICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VU
aHJlYWQoKS0+c2NoZWR1bGVUYXNrKHRhc2sucmVsZWFzZSgpKTsKIH0KIAogY2xhc3MgRGVsaXZl
clBlbmRpbmdDYWxsYmFja1Rhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
ayB7CkBAIC0zOTAsMTIgKzM5MSwxMiBAQCBWZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6cGVyZm9y
bUdldFRhYmxlCiAKIFNRTFRyYW5zYWN0aW9uQ2xpZW50KiBEYXRhYmFzZTo6dHJhbnNhY3Rpb25D
bGllbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRh
dGFiYXNlVGhyZWFkKCktPnRyYW5zYWN0aW9uQ2xpZW50KCk7CisgICAgcmV0dXJuIGRhdGFiYXNl
Q29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT50cmFuc2FjdGlvbkNsaWVudCgpOwogfQogCiBT
UUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiBEYXRhYmFzZTo6dHJhbnNhY3Rpb25Db29yZGluYXRv
cigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJh
c2VUaHJlYWQoKS0+dHJhbnNhY3Rpb25Db29yZGluYXRvcigpOworICAgIHJldHVybiBkYXRhYmFz
ZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+dHJhbnNhY3Rpb25Db29yZGluYXRvcigpOwog
fQogCiBWZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6dGFibGVOYW1lcygpCkBAIC00MDQsMTEgKzQw
NSwxMSBAQCBWZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6dGFibGVOYW1lcygpCiAgICAgLy8gaW4g
ZGVhbGluZyB3aXRoIHRoZW0uIEhvd2V2ZXIsIGlmIHRoZSBjb2RlIGNoYW5nZXMsIHRoaXMgbWF5
IG5vdCBiZSB0cnVlIGFueW1vcmUuCiAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwogICAgIERh
dGFiYXNlVGFza1N5bmNocm9uaXplciBzeW5jaHJvbml6ZXI7Ci0gICAgaWYgKCFtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCkgfHwgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT50ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVy
KSkKKyAgICBpZiAoIWRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpIHx8IGRhdGFi
YXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT50ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3lu
Y2hyb25pemVyKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgIE93blB0cjxEYXRhYmFz
ZVRhYmxlTmFtZXNUYXNrPiB0YXNrID0gRGF0YWJhc2VUYWJsZU5hbWVzVGFzazo6Y3JlYXRlKHRo
aXMsICZzeW5jaHJvbml6ZXIsIHJlc3VsdCk7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRhc2sodGFzay5yZWxlYXNlKCkp
OworICAgIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZUltbWVk
aWF0ZVRhc2sodGFzay5yZWxlYXNlKCkpOwogICAgIHN5bmNocm9uaXplci53YWl0Rm9yVGFza0Nv
bXBsZXRpb24oKTsKIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC00MTgsNyArNDE5LDcgQEAgU2Vj
dXJpdHlPcmlnaW4qIERhdGFiYXNlOjpzZWN1cml0eU9yaWdpbgogewogICAgIGlmIChtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKQogICAgICAgICByZXR1cm4gbV9j
b250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCk7Ci0gICAgaWYgKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPmdldFRocmVh
ZElEKCkpCisgICAgaWYgKGN1cnJlbnRUaHJlYWQoKSA9PSBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0
YWJhc2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSkKICAgICAgICAgcmV0dXJuIG1fZGF0YWJhc2VU
aHJlYWRTZWN1cml0eU9yaWdpbi5nZXQoKTsKICAgICByZXR1cm4gMDsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ29udGV4dC5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ29udGV4dC5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUsIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2lu
Y2x1ZGUgIkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VUYXNrLmgiCisjaW5jbHVkZSAi
RGF0YWJhc2VUaHJlYWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgRGF0YWJh
c2VDb250ZXh0KiBleGlzdGluZ0RhdGFiYXNlQ29udGV4dEZyb20oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGF0YWJhc2VDb250ZXh0
Kj4oU3VwcGxlbWVudDxTY3JpcHRFeGVjdXRpb25Db250ZXh0Pjo6ZnJvbShjb250ZXh0LCAiRGF0
YWJhc2VDb250ZXh0IikpOworfQorCitEYXRhYmFzZUNvbnRleHQ6OkRhdGFiYXNlQ29udGV4dCgp
CisgICAgOiBtX2hhc09wZW5EYXRhYmFzZXMoZmFsc2UpCit7Cit9CisKK0RhdGFiYXNlQ29udGV4
dDo6fkRhdGFiYXNlQ29udGV4dCgpCit7CisgICAgaWYgKG1fZGF0YWJhc2VUaHJlYWQpIHsKKyAg
ICAgICAgQVNTRVJUKG1fZGF0YWJhc2VUaHJlYWQtPnRlcm1pbmF0aW9uUmVxdWVzdGVkKCkpOwor
ICAgICAgICBtX2RhdGFiYXNlVGhyZWFkID0gMDsKKyAgICB9Cit9CisKK0RhdGFiYXNlQ29udGV4
dCogRGF0YWJhc2VDb250ZXh0Ojpmcm9tKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
Cit7CisgICAgRGF0YWJhc2VDb250ZXh0KiBzdXBwbGVtZW50ID0gZXhpc3RpbmdEYXRhYmFzZUNv
bnRleHRGcm9tKGNvbnRleHQpOworICAgIGlmICghc3VwcGxlbWVudCkgeworICAgICAgICBzdXBw
bGVtZW50ID0gbmV3IERhdGFiYXNlQ29udGV4dCgpOworICAgICAgICBwcm92aWRlVG8oY29udGV4
dCwgIkRhdGFiYXNlQ29udGV4dCIsIGFkb3B0UHRyKHN1cHBsZW1lbnQpKTsKKyAgICAgICAgQVNT
RVJUKHN1cHBsZW1lbnQgPT0gZXhpc3RpbmdEYXRhYmFzZUNvbnRleHRGcm9tKGNvbnRleHQpKTsK
KyAgICB9CisgICAgcmV0dXJuIHN1cHBsZW1lbnQ7Cit9CisKK0RhdGFiYXNlVGhyZWFkKiBEYXRh
YmFzZUNvbnRleHQ6OmRhdGFiYXNlVGhyZWFkKCkKK3sKKyAgICBpZiAoIW1fZGF0YWJhc2VUaHJl
YWQgJiYgIW1faGFzT3BlbkRhdGFiYXNlcykgeworICAgICAgICAvLyBDcmVhdGUgdGhlIGRhdGFi
YXNlIHRocmVhZCBvbiBmaXJzdCByZXF1ZXN0IC0gYnV0IG5vdCBpZiBhdCBsZWFzdCBvbmUgZGF0
YWJhc2Ugd2FzIGFscmVhZHkgb3BlbmVkLAorICAgICAgICAvLyBiZWNhdXNlIGluIHRoYXQgY2Fz
ZSB3ZSBhbHJlYWR5IGhhZCBhIGRhdGFiYXNlIHRocmVhZCBhbmQgdGVybWluYXRlZCBpdCBhbmQg
c2hvdWxkIG5vdCBjcmVhdGUgYW5vdGhlci4KKyAgICAgICAgbV9kYXRhYmFzZVRocmVhZCA9IERh
dGFiYXNlVGhyZWFkOjpjcmVhdGUoKTsKKyAgICAgICAgaWYgKCFtX2RhdGFiYXNlVGhyZWFkLT5z
dGFydCgpKQorICAgICAgICAgICAgbV9kYXRhYmFzZVRocmVhZCA9IDA7CisgICAgfQorCisgICAg
cmV0dXJuIG1fZGF0YWJhc2VUaHJlYWQuZ2V0KCk7Cit9CisKK2Jvb2wgRGF0YWJhc2VDb250ZXh0
OjpoYXNPcGVuRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7Cisg
ICAgLy8gV2UgZG9uJ3QgdXNlIERhdGFiYXNlQ29udGV4dDo6ZnJvbSBiZWNhdXNlIHdlIGRvbid0
IHdhbnQgdG8gY2F1c2UKKyAgICAvLyBEYXRhYmFzZUNvbnRleHQgdG8gYmUgYWxsb2NhdGVkIGlm
IHdlIGRvbid0IGhhdmUgb25lIGFscmVhZHkuCisgICAgRGF0YWJhc2VDb250ZXh0KiBkYXRhYmFz
ZUNvbnRleHQgPSBleGlzdGluZ0RhdGFiYXNlQ29udGV4dEZyb20oY29udGV4dCk7CisgICAgaWYg
KCFkYXRhYmFzZUNvbnRleHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZGF0
YWJhc2VDb250ZXh0LT5tX2hhc09wZW5EYXRhYmFzZXM7Cit9CisKK3ZvaWQgRGF0YWJhc2VDb250
ZXh0OjpzdG9wRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIERhdGFi
YXNlVGFza1N5bmNocm9uaXplciogY2xlYW51cFN5bmMpCit7CisgICAgLy8gV2UgZG9uJ3QgdXNl
IERhdGFiYXNlQ29udGV4dDo6ZnJvbSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY2F1c2UKKyAg
ICAvLyBEYXRhYmFzZUNvbnRleHQgdG8gYmUgYWxsb2NhdGVkIGlmIHdlIGRvbid0IGhhdmUgb25l
IGFscmVhZHkuCisgICAgRGF0YWJhc2VDb250ZXh0KiBkYXRhYmFzZUNvbnRleHQgPSBleGlzdGlu
Z0RhdGFiYXNlQ29udGV4dEZyb20oY29udGV4dCk7CisKKyAgICBpZiAoZGF0YWJhc2VDb250ZXh0
ICYmIGRhdGFiYXNlQ29udGV4dC0+bV9kYXRhYmFzZVRocmVhZCkKKyAgICAgICAgZGF0YWJhc2VD
b250ZXh0LT5tX2RhdGFiYXNlVGhyZWFkLT5yZXF1ZXN0VGVybWluYXRpb24oY2xlYW51cFN5bmMp
OworICAgIGVsc2UgaWYgKGNsZWFudXBTeW5jKQorICAgICAgICBjbGVhbnVwU3luYy0+dGFza0Nv
bXBsZXRlZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoU1FMX0RBVEFCQVNFKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNv
bnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ29u
dGV4dC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNv
bnRleHQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5k
ZWYgRGF0YWJhc2VDb250ZXh0X2gKKyNkZWZpbmUgRGF0YWJhc2VDb250ZXh0X2gKKworI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERhdGFiYXNlOworY2xhc3MgRGF0YWJhc2VUYXNrU3lu
Y2hyb25pemVyOworY2xhc3MgRGF0YWJhc2VUaHJlYWQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OworCitjbGFzcyBEYXRhYmFzZUNvbnRleHQgOiBwdWJsaWMgU3VwcGxlbWVudDxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RGF0YWJhc2VDb250
ZXh0KCk7CisgICAgc3RhdGljIERhdGFiYXNlQ29udGV4dCogZnJvbShTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7CisKKyAgICBEYXRhYmFzZVRocmVhZCogZGF0YWJhc2VUaHJlYWQoKTsKKworICAg
IHZvaWQgc2V0SGFzT3BlbkRhdGFiYXNlcygpIHsgbV9oYXNPcGVuRGF0YWJhc2VzID0gdHJ1ZTsg
fQorCisgICAgc3RhdGljIGJvb2wgaGFzT3BlbkRhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kik7CisKKyAgICAvLyBXaGVuIHRoZSBkYXRhYmFzZSBjbGVhbnVwIGlzIGRvbmUsIGNsZWFu
dXBTeW5jIHdpbGwgYmUgc2lnbmFsbGVkLgorICAgIHN0YXRpYyB2b2lkIHN0b3BEYXRhYmFzZXMo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIERhdGFiYXNlVGFza1N5bmNocm9uaXplciopOworCitw
cml2YXRlOgorICAgIERhdGFiYXNlQ29udGV4dCgpOworCisgICAgUmVmUHRyPERhdGFiYXNlVGhy
ZWFkPiBtX2RhdGFiYXNlVGhyZWFkOworICAgIGJvb2wgbV9oYXNPcGVuRGF0YWJhc2VzOyAvLyBU
aGlzIG5ldmVyIGNoYW5nZXMgYmFjayB0byBmYWxzZSwgZXZlbiBhZnRlciB0aGUgZGF0YWJhc2Ug
dGhyZWFkIGlzIGNsb3NlZC4KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNlbmRpZiAvLyBEYXRhYmFzZUNvbnRleHRfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9u
IDEwOTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJEYXRhYmFzZS5oIgog
I2luY2x1ZGUgIkRhdGFiYXNlQXV0aG9yaXplci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4
dC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVGhyZWFkLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTE2Myw3ICsxNjQsNyBAQCB2b2lkIFNRTFRy
YW5zYWN0aW9uOjpjaGVja0FuZEhhbmRsZUNsb3NlCiAgICAgbV9lcnJvckNhbGxiYWNrV3JhcHBl
ci5jbGVhcigpOwogCiAgICAgLy8gVGhlIG5leHQgc3RlcHMgc2hvdWxkIGJlIGV4ZWN1dGVkIG9u
bHkgaWYgd2UncmUgb24gdGhlIERCIHRocmVhZC4KLSAgICBpZiAoY3VycmVudFRocmVhZCgpICE9
IGRhdGFiYXNlKCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+
Z2V0VGhyZWFkSUQoKSkKKyAgICBpZiAoY3VycmVudFRocmVhZCgpICE9IGRhdGFiYXNlKCktPmRh
dGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5nZXRUaHJlYWRJRCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBUaGUgY3VycmVudCBTUUxpdGUgdHJhbnNhY3Rpb24gc2hvdWxk
IGJlIHN0b3BwZWQsIGFzIHdlbGwKQEAgLTIxNSw3ICsyMTYsNyBAQCB2b2lkIFNRTFRyYW5zYWN0
aW9uOjpwZXJmb3JtUGVuZGluZ0NhbGxiCiAKIHZvaWQgU1FMVHJhbnNhY3Rpb246Om5vdGlmeURh
dGFiYXNlVGhyZWFkSXNTaHV0dGluZ0Rvd24oKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gZGF0YWJhc2UoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5kYXRhYmFzZVRocmVh
ZCgpLT5nZXRUaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGRhdGFi
YXNlKCktPmRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5nZXRUaHJlYWRJRCgp
KTsKIAogICAgIC8vIElmIHRoZSB0cmFuc2FjdGlvbiBpcyBpbiBwcm9ncmVzcywgd2Ugc2hvdWxk
IHJvbGwgaXQgYmFjayBoZXJlLCBzaW5jZSB0aGlzIGlzIG91ciBsYXN0CiAgICAgLy8gb3BvcnR1
bml0eSB0byBkbyBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGlzIHRyYW5zYWN0aW9uIG9uIHRoZSBE
QiB0aHJlYWQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCShy
ZXZpc2lvbiAxMDkyODYpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIldvcmtlclRo
cmVhZC5oIgogCisjaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGVkaWNh
dGVkV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgIktVUkwuaCIKQEAgLTIxNSw4ICsyMTYsOSBAQCBwdWJsaWM6CiAgICAgICAg
IFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBzdGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0
Kj4oY29udGV4dCk7CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorICAgICAgICAvLyBGSVhN
RTogU2hvdWxkIHdlIHN0b3AgdGhlIGRhdGFiYXNlcyBhcyBwYXJ0IG9mIHN0b3BBY3RpdmVET01P
YmplY3RzKCkgYmVsb3c/CiAgICAgICAgIERhdGFiYXNlVGFza1N5bmNocm9uaXplciBjbGVhbnVw
U3luYzsKLSAgICAgICAgd29ya2VyQ29udGV4dC0+c3RvcERhdGFiYXNlcygmY2xlYW51cFN5bmMp
OworICAgICAgICBEYXRhYmFzZUNvbnRleHQ6OnN0b3BEYXRhYmFzZXMod29ya2VyQ29udGV4dCwg
JmNsZWFudXBTeW5jKTsKICNlbmRpZgogCiAgICAgICAgIHdvcmtlckNvbnRleHQtPnN0b3BBY3Rp
dmVET01PYmplY3RzKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129560</attachid>
            <date>2012-02-29 17:25:05 -0800</date>
            <delta_ts>2012-02-29 17:45:35 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-79633-20120229172504.patch</filename>
            <type>text/plain</type>
            <size>40505</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBACisyMDEyLTAyLTI5ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCBoYXMgdG9vIG1hbnkgaWZkZWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgVGhpcyBjbGFzcyBjcmVhdGVzIGEgRGF0YWJh
c2VDb250ZXh0IG9iamVjdCB0byBzdXBwbGVtZW50IHRoZQorICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0IHdpdGggZGF0YWJhc2Utc3BlY2lmaWMgaW5mb3JtYXRpb24uICBUaGlzIG5ldwor
ICAgICAgICBvYmplY3QgbGV0cyB1cyByZW1vdmUgYSBidW5jaCBvZiBkYXRhYmFzZS1zcGVjaWZp
YyAoYW5kIGlmZGVmZWQpIGxvZ2ljCisgICAgICAgIGZyb20gU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC4oY3BwfGgpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAg
KiBoaXN0b3J5L1BhZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2dDYW5DYWNoZUZy
YW1lRGVjaXNpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNhY2hlOjpjYW5DYWNoZVBhZ2VD
b250YWluaW5nVGhpc0ZyYW1lKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKiBz
dG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RE
YXRhYmFzZTo6QWJzdHJhY3REYXRhYmFzZSk6CisgICAgICAgICogc3RvcmFnZS9BYnN0cmFjdERh
dGFiYXNlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0
RGF0YWJhc2U6OmRhdGFiYXNlQ29udGV4dCk6CisgICAgICAgIChBYnN0cmFjdERhdGFiYXNlKToK
KyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OkRhdGFiYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpvcGVuQW5kVmVyaWZ5VmVyc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6bWFya0FzRGVsZXRlZEFuZENsb3NlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZTo6Y2xvc2VJbW1lZGlhdGVseSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9y
bU9wZW5BbmRWZXJpZnkpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rp
b25TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjp0cmFuc2FjdGlvbkNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6dHJhbnNhY3Rpb25Db29yZGluYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6dGFibGVOYW1lcyk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZTo6c2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2VD
b250ZXh0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlQ29udGV4dDo6RGF0YWJhc2VDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlQ29udGV4dDo6fkRhdGFiYXNlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZUNvbnRleHQ6OmZyb20pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0Ojpk
YXRhYmFzZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUNvbnRleHQ6OnN0b3BE
YXRhYmFzZXMpOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2VDb250ZXh0Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChEYXRhYmFzZUNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpzZXRIYXNPcGVuRGF0YWJhc2VzKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlQ29udGV4dDo6aGFzT3BlbkRhdGFiYXNlcyk6CisgICAgICAgICog
c3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2Fj
dGlvbjo6Y2hlY2tBbmRIYW5kbGVDbG9zZWRPckludGVycnVwdGVkRGF0YWJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246Om5vdGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0dGlu
Z0Rvd24pOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrOjpwZXJmb3JtVGFzayk6CisKIDIw
MTItMDItMjkgIERhdmlkIEJhcnRvbiAgPGRiYXJ0b25AbWF0aHNjcmliZS5jb20+CiAKICAgICAg
ICAgPG1zdWJzdXA+IHNldE5lZWRzTGF5b3V0KCkgY29ycmVjdGlvbgpJbmRleDogU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDEwOTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMzg3LDYgKzEzODcsNyBAQCBTRVQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgc3RvcmFnZS9ET01XaW5kb3dTUUxEYXRhYmFzZS5jcHAKICAgICBzdG9yYWdlL0Rh
dGFiYXNlLmNwcAogICAgIHN0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmNwcAorICAgIHN0b3Jh
Z2UvRGF0YWJhc2VDb250ZXh0LmNwcAogICAgIHN0b3JhZ2UvRGF0YWJhc2VTeW5jLmNwcAogICAg
IHN0b3JhZ2UvRGF0YWJhc2VUYXNrLmNwcAogICAgIHN0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuY3Bw
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEwOTI4NikKKysr
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTM4
NjEsMTIgKzM4NjEsMTQgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
RE9NV2luZG93U1FMRGF0YWJhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RPTVdp
bmRvd1NRTERhdGFiYXNlLmggXAorCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9EYXRhYmFzZUF1dGhvcml6ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFz
ZUNhbGxiYWNrLmggXAotCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ29udGV4dC5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvRGF0YWJhc2VDb250ZXh0LmggXAogCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
RGF0YWJhc2VEZXRhaWxzLmggXAotCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaCBc
CiAJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0Rh
dGFiYXNlVGFzay5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMDkyODYpCisrKyBT
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMzA0LDYgKzEzMDQs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBzdG9yYWdlL0RPTVdpbmRvd1NRTERhdGFiYXNlLmNwcCBc
CiAgICAgc3RvcmFnZS9EYXRhYmFzZS5jcHAgXAogICAgIHN0b3JhZ2UvRGF0YWJhc2VBdXRob3Jp
emVyLmNwcCBcCisgICAgc3RvcmFnZS9EYXRhYmFzZUNvbnRleHQuY3BwIFwKICAgICBzdG9yYWdl
L0RhdGFiYXNlU3luYy5jcHAgXAogICAgIHN0b3JhZ2UvU3RvcmFnZVRhc2suY3BwIFwKICAgICBz
dG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9u
IDEwOTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpA
QCAtNDYzOCw2ICs0NjM4LDggQEAKICAgICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNlQXV0aG9y
aXplci5jcHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmgnLAog
ICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5oJywKKyAgICAgICAgICAgICdz
dG9yYWdlL0RhdGFiYXNlQ29udGV4dC5jcHAnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJh
c2VDb250ZXh0LmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmNwcCcsCiAg
ICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZVN5bmMuaCcsCiAgICAgICAgICAgICAnc3RvcmFn
ZS9EYXRhYmFzZVRhc2suY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxMDkyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNzA2ODIsNiAr
NzA2ODIsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cc3RvcmFnZVxEYXRhYmFzZUNvbnRleHQuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXERhdGFiYXNlQ29udGV4dC5oIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdl
XERhdGFiYXNlU3luYy5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTA5
Mjg2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0zMzEzLDYgKzMzMTMsOCBAQAogCQk5NzIwNUFCODEyMzkyOTEw
MDBCMTczODAgLyogTWVkaWFEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTcyMDVBQjQxMjM5MjkxMDAwQjE3MzgwIC8qIE1lZGlhRG9jdW1l
bnQuaCAqLzsgfTsKIAkJOTcyMDVBQkIxMjM5MjkyNzAwQjE3MzgwIC8qIFBsdWdpbkRvY3VtZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MjA1
QUI5MTIzOTI5MjcwMEIxNzM4MCAvKiBQbHVnaW5Eb2N1bWVudC5jcHAgKi87IH07CiAJCTk3MjA1
QUJDMTIzOTI5MjcwMEIxNzM4MCAvKiBQbHVnaW5Eb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcyMDVBQkExMjM5MjkyNzAwQjE3MzgwIC8q
IFBsdWdpbkRvY3VtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJOTcyNDU4NTIxNEZCNzI0ODAwQ0E4NzQ2IC8qIERhdGFiYXNlQ29udGV4dC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzI0NTg1
MDE0RkI3MjQ4MDBDQTg3NDYgLyogRGF0YWJhc2VDb250ZXh0LmNwcCAqLzsgfTsKKwkJOTcyNDU4
NTMxNEZCNzI0ODAwQ0E4NzQ2IC8qIERhdGFiYXNlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcyNDU4NTExNEZCNzI0ODAwQ0E4NzQ2IC8q
IERhdGFiYXNlQ29udGV4dC5oICovOyB9OwogCQk5NzI4QzMxMzEyNjhFNDM5MDA0MUU4OUIgLyog
TWFya3VwQWNjdW11bGF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTcyOEMzMTExMjY4RTQzOTAwNDFFODlCIC8qIE1hcmt1cEFjY3VtdWxhdG9y
LmNwcCAqLzsgfTsKIAkJOTcyOEMzMTQxMjY4RTQzOTAwNDFFODlCIC8qIE1hcmt1cEFjY3VtdWxh
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzI4
QzMxMjEyNjhFNDM5MDA0MUU4OUIgLyogTWFya3VwQWNjdW11bGF0b3IuaCAqLzsgfTsKIAkJOTcz
ODg5QTAxMTZFQTlEQzAwQURGMzEzIC8qIERvY3VtZW50V3JpdGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3Mzg4OTlFMTE2RUE5REMwMEFERjMx
MyAvKiBEb2N1bWVudFdyaXRlci5jcHAgKi87IH07CkBAIC0xMDE4MCw2ICsxMDE4Miw4IEBACiAJ
CTk3MjA1QUI0MTIzOTI5MTAwMEIxNzM4MCAvKiBNZWRpYURvY3VtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTcyMDVBQjkxMjM5MjkyNzAwQjE3MzgwIC8qIFBsdWdpbkRvY3VtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsdWdpbkRvY3VtZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcyMDVBQkExMjM5MjkyNzAwQjE3Mzgw
IC8qIFBsdWdpbkRvY3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBs
dWdpbkRvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3MjQ1ODUwMTRG
QjcyNDgwMENBODc0NiAvKiBEYXRhYmFzZUNvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRGF0YWJhc2VDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTcyNDU4NTExNEZCNzI0ODAwQ0E4NzQ2IC8qIERhdGFiYXNlQ29udGV4dC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZUNvbnRleHQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcyOEMzMTExMjY4RTQzOTAwNDFFODlCIC8qIE1h
cmt1cEFjY3VtdWxhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1hcmt1cEFjY3VtdWxhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcy
OEMzMTIxMjY4RTQzOTAwNDFFODlCIC8qIE1hcmt1cEFjY3VtdWxhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmt1cEFjY3VtdWxhdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk3MzBCRTE0MTRFRjI4NkIwMERGMDZCOSAvKiBOYXZpZ2F0b3JSZWdp
c3RlclByb3RvY29sSGFuZGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBOYXZpZ2F0b3JSZWdpc3RlclByb3RvY29sSGFuZGxlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMzg5NCw2ICsxMzg5OCw4IEBACiAJCQkJNTFBNDVCNTQwQ0FEN0ZE
NzAwMEQyQkU5IC8qIERhdGFiYXNlQXV0aG9yaXplci5oICovLAogCQkJCUI1RDM2MDE5MTEyRjhC
NTYwMDQ4REVBOCAvKiBEYXRhYmFzZUNhbGxiYWNrLmggKi8sCiAJCQkJQjU5REQ2OEQxMTkwMjk4
RTAwN0U5Njg0IC8qIERhdGFiYXNlQ2FsbGJhY2suaWRsICovLAorCQkJCTk3MjQ1ODUwMTRGQjcy
NDgwMENBODc0NiAvKiBEYXRhYmFzZUNvbnRleHQuY3BwICovLAorCQkJCTk3MjQ1ODUxMTRGQjcy
NDgwMENBODc0NiAvKiBEYXRhYmFzZUNvbnRleHQuaCAqLywKIAkJCQk1MTE2RDk3NTBDRjE3N0JE
MDBDMkI4NEQgLyogRGF0YWJhc2VEZXRhaWxzLmggKi8sCiAJCQkJQjUyM0NGMDMxMTgyNjc1NDAw
RUJCMjlDIC8qIERhdGFiYXNlU3luYy5jcHAgKi8sCiAJCQkJQjUyM0NGMDQxMTgyNjc1NDAwRUJC
MjlDIC8qIERhdGFiYXNlU3luYy5oICovLApAQCAtMjA2NjQsNyArMjA2NzAsNiBAQAogCQkJCTk3
OEQwN0JEMTQ1QTBGNkMwMDk2OTA4RCAvKiBET01Db3JlRXhjZXB0aW9uLmNwcCAqLywKIAkJCQlC
QzYwRDZFODBEMjhEODM0MDBCOTkxOEYgLyogRE9NQ29yZUV4Y2VwdGlvbi5oICovLAogCQkJCUJD
NjBENkVCMEQyOEQ5OTkwMEI5OTE4RiAvKiBET01Db3JlRXhjZXB0aW9uLmlkbCAqLywKLQkJCQlC
QzlBNjE0MjE0Njg1OUQ5MDA2MDU3RkQgLyogRXZlbnROYW1lcy5pbiAqLywKIAkJCQlCQzlBNjE0
MTE0Njg1OUQ5MDA2MDU3RkQgLyogRE9NRXhjZXB0aW9ucy5pbiAqLywKIAkJCQlBODE4NUYzNjA5
NzY1NzY1MDA1ODI2RDkgLyogRE9NSW1wbGVtZW50YXRpb24uY3BwICovLAogCQkJCUE4MTg1RjMz
MDk3NjU3NjUwMDU4MjZEOSAvKiBET01JbXBsZW1lbnRhdGlvbi5oICovLApAQCAtMjA3MTMsNiAr
MjA3MTgsNyBAQAogCQkJCUFENDQ5NUYyMTQxRkMwODkwMDU0MUVERiAvKiBFdmVudExpc3RlbmVy
TWFwLmggKi8sCiAJCQkJOTM5ODg1QzEwOEI3RTNEMTAwRTcwN0M0IC8qIEV2ZW50TmFtZXMuY3Bw
ICovLAogCQkJCTkzOTg4NUMyMDhCN0UzRDEwMEU3MDdDNCAvKiBFdmVudE5hbWVzLmggKi8sCisJ
CQkJQkM5QTYxNDIxNDY4NTlEOTAwNjA1N0ZEIC8qIEV2ZW50TmFtZXMuaW4gKi8sCiAJCQkJOEY2
NzU2MTkxMjg4QjE3QjAwNDdBQ0EzIC8qIEV2ZW50UXVldWUuaCAqLywKIAkJCQlDRTVDQjFCMzE0
RURBQjZGMDBCQjI3OTUgLyogRXZlbnRTZW5kZXIuaCAqLywKIAkJCQlFMTJFREJFOTBCMzA4RTBC
MDAyNzA0QjYgLyogRXZlbnRUYXJnZXQuY3BwICovLApAQCAtMjE1NTAsNiArMjE1NTYsNyBAQAog
CQkJCTUxOTYxMTZCMENBQzU2NTcwMDEwQTgwQyAvKiBEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTFBNDVCNTYwQ0FEN0ZENzAwMEQyQkU5IC8qIERhdGFiYXNlQXV0aG9yaXplci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjVEMzYwMUExMTJGOEI1NjAwNDhERUE4IC8qIERhdGFiYXNlQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTk3MjQ1ODUzMTRGQjcyNDgwMENBODc0NiAvKiBE
YXRhYmFzZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMTZEOTc3MENGMTc3QkQwMEMy
Qjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1MjNDRjBCMTE4
MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOTYx
MUVBMENBQzc0OUMwMDEwQTgwQyAvKiBEYXRhYmFzZVRhc2suaCBpbiBIZWFkZXJzICovLApAQCAt
MjM4NTIsNiArMjM4NTksNyBAQAogCQkJCUJDMjI3MkU0MEU4MkVFOUIwMEU3Rjk3NSAvKiBTdHls
ZVJhcmVJbmhlcml0ZWREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIyNzJCRDBFODJFQUFF
MDBFN0Y5NzUgLyogU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMyMjcyODcwRTgyRTcwNzAwRTdGOTc1IC8qIFN0eWxlUmVmbGVjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTRCQkVENEQxNEZDREJBMTAwM0YwQjk4IC8qIFN0eWxlUnVsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzEzOEE5RTUxNDc0NDM0NjAwQjBFRDEyIC8qIFN0eWxlU2hhZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBOEVBODAwQzBBMTk1MTZFMDBBOEVGNUYgLyogU3R5bGVTaGVl
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTgwMEEwQTE5NTE2RTAwQThFRjVGIC8qIFN0eWxl
U2hlZXRMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTI0MzU2LDcgKzI0MzY0LDYgQEAKIAkJCQlF
MUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkQ1MzczNTMxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlFNEJCRUQ0RDE0RkNEQkExMDAzRjBCOTggLyogU3R5bGVSdWxlLmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTI0OTY0LDYgKzI0OTcxLDcgQEAKIAkJCQk1MEQ0MDYxMTE0N0Q0OURF
MDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUx
OTYxMTZBMENBQzU2NTcwMDEwQTgwQyAvKiBEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1MUE0NUI1NzBDQUQ3RkQ3MDAwRDJCRTkgLyogRGF0YWJhc2VBdXRob3JpemVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTk3MjQ1ODUyMTRGQjcyNDgwMENBODc0NiAvKiBEYXRhYmFzZUNvbnRl
eHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjUyM0NGMEExMTgyNjc1NDAwRUJCMjlDIC8qIERh
dGFiYXNlU3luYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTk2MTFFQjBDQUM3NDlDMDAxMEE4
MEMgLyogRGF0YWJhc2VUYXNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxOTYxMTZEMENBQzU2
NTcwMDEwQTgwQyAvKiBEYXRhYmFzZVRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2OTE3
LDYgKzI2OTI1LDcgQEAKIAkJCQlBODBFNkRGQjBBMTk5MDY3MDA3RkI4QzUgLyogU3R5bGVQcm9w
ZXJ0eVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzIyNzJFMzBFODJFRTlCMDBFN0Y5NzUg
LyogU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzIyNzJC
QzBFODJFQUFFMDBFN0Y5NzUgLyogU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlFNEJCRUQ0QzE0RkNEQkExMDAzRjBCOTggLyogU3R5bGVSdWxlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE4RUE4MDBEMEExOTUxNkUwMEE4RUY1RiAvKiBTdHlsZVNoZWV0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4RUE4MDBCMEExOTUxNkUwMEE4RUY1RiAvKiBTdHls
ZVNoZWV0TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzVFQjVFNzBFODFCRkVGMDBCMjU5
NjUgLyogU3R5bGVTdXJyb3VuZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzMwOSw3ICsy
NzMxOCw2IEBACiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29y
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNT
QXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0Ug
LyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTRCQkVENEMxNEZDREJBMTAwM0Yw
Qjk4IC8qIFN0eWxlUnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAJKHJldmlzaW9uIDEwOTI4NikKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsOSArMzAsNiBAQAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2lu
Y2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkRPTVRpbWVyLmgiCi0j
aW5jbHVkZSAiRGF0YWJhc2UuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRhc2suaCIKLSNpbmNsdWRl
ICJEYXRhYmFzZVRocmVhZC5oIgogI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJF
dmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKQEAgLTk0LDkgKzkxLDYg
QEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQwogICAgICwgbV9pbkRl
c3RydWN0b3IoZmFsc2UpCiAgICAgLCBtX2luRGlzcGF0Y2hFcnJvckV2ZW50KGZhbHNlKQogICAg
ICwgbV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKGZhbHNlKQotI2lmIEVOQUJMRShTUUxf
REFUQUJBU0UpCi0gICAgLCBtX2hhc09wZW5EYXRhYmFzZXMoZmFsc2UpCi0jZW5kaWYKIHsKIH0K
IApAQCAtMTE1LDEyICsxMDksNiBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhl
Y3V0aW9uCiAgICAgICAgIEFTU0VSVCgoKml0ZXIpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
PT0gdGhpcyk7CiAgICAgICAgICgqaXRlciktPmNvbnRleHREZXN0cm95ZWQoKTsKICAgICB9Ci0j
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBpZiAobV9kYXRhYmFzZVRocmVhZCkgewotICAg
ICAgICBBU1NFUlQobV9kYXRhYmFzZVRocmVhZC0+dGVybWluYXRpb25SZXF1ZXN0ZWQoKSk7Ci0g
ICAgICAgIG1fZGF0YWJhc2VUaHJlYWQgPSAwOwotICAgIH0KLSNlbmRpZgogI2lmIEVOQUJMRShC
TE9CKSB8fCBFTkFCTEUoRklMRV9TWVNURU0pCiAgICAgaWYgKG1fZmlsZVRocmVhZCkgewogICAg
ICAgICBtX2ZpbGVUaHJlYWQtPnN0b3AoKTsKQEAgLTEzMywzMiArMTIxLDYgQEAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbgogI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUo
U1FMX0RBVEFCQVNFKQotCi1EYXRhYmFzZVRocmVhZCogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
ZGF0YWJhc2VUaHJlYWQoKQotewotICAgIGlmICghbV9kYXRhYmFzZVRocmVhZCAmJiAhbV9oYXNP
cGVuRGF0YWJhc2VzKSB7Ci0gICAgICAgIC8vIENyZWF0ZSB0aGUgZGF0YWJhc2UgdGhyZWFkIG9u
IGZpcnN0IHJlcXVlc3QgLSBidXQgbm90IGlmIGF0IGxlYXN0IG9uZSBkYXRhYmFzZSB3YXMgYWxy
ZWFkeSBvcGVuZWQsCi0gICAgICAgIC8vIGJlY2F1c2UgaW4gdGhhdCBjYXNlIHdlIGFscmVhZHkg
aGFkIGEgZGF0YWJhc2UgdGhyZWFkIGFuZCB0ZXJtaW5hdGVkIGl0IGFuZCBzaG91bGQgbm90IGNy
ZWF0ZSBhbm90aGVyLgotICAgICAgICBtX2RhdGFiYXNlVGhyZWFkID0gRGF0YWJhc2VUaHJlYWQ6
OmNyZWF0ZSgpOwotICAgICAgICBpZiAoIW1fZGF0YWJhc2VUaHJlYWQtPnN0YXJ0KCkpCi0gICAg
ICAgICAgICBtX2RhdGFiYXNlVGhyZWFkID0gMDsKLSAgICB9Ci0KLSAgICByZXR1cm4gbV9kYXRh
YmFzZVRocmVhZC5nZXQoKTsKLX0KLQotdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdG9w
RGF0YWJhc2VzKERhdGFiYXNlVGFza1N5bmNocm9uaXplciogY2xlYW51cFN5bmMpCi17Ci0gICAg
QVNTRVJUKGlzQ29udGV4dFRocmVhZCgpKTsKLSAgICBpZiAobV9kYXRhYmFzZVRocmVhZCkKLSAg
ICAgICAgbV9kYXRhYmFzZVRocmVhZC0+cmVxdWVzdFRlcm1pbmF0aW9uKGNsZWFudXBTeW5jKTsK
LSAgICBlbHNlIGlmIChjbGVhbnVwU3luYykKLSAgICAgICAgY2xlYW51cFN5bmMtPnRhc2tDb21w
bGV0ZWQoKTsKLX0KLQotI2VuZGlmCi0KIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cHJv
Y2Vzc01lc3NhZ2VQb3J0TWVzc2FnZXNTb29uKCkKIHsKICAgICBwb3N0VGFzayhQcm9jZXNzTWVz
c2FnZXNTb29uVGFzazo6Y3JlYXRlKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oCShyZXZpc2lvbiAxMDkyODYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5Q29udGV4dC5oIgorI2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxlLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC01NiwxNyArNTcsMTIgQEAgY2xhc3MgTWVzc2FnZVBv
cnQ7CiAjaWYgRU5BQkxFKEJMT0IpCiBjbGFzcyBQdWJsaWNVUkxNYW5hZ2VyOwogI2VuZGlmCi0j
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLWNsYXNzIERhdGFiYXNlOwotY2xhc3MgRGF0YWJhc2VU
YXNrU3luY2hyb25pemVyOwotY2xhc3MgRGF0YWJhc2VUaHJlYWQ7Ci0jZW5kaWYKIAogI2lmIEVO
QUJMRShCTE9CKSB8fCBFTkFCTEUoRklMRV9TWVNURU0pCiBjbGFzcyBGaWxlVGhyZWFkOwogI2Vu
ZGlmCiAKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgOiBwdWJsaWMgU2VjdXJpdHlDb250
ZXh0IHsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgOiBwdWJsaWMgU2VjdXJpdHlDb250
ZXh0LCBwdWJsaWMgU3VwcGxlbWVudGFibGU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gewogcHVi
bGljOgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICB2aXJ0dWFsIH5TY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CkBAIC03NywxMSArNzMsNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dEYXRhYmFzZUFjY2VzcygpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGF0YWJhc2VFeGNlZWRlZFF1b3RhKGNvbnN0IFN0
cmluZyYgbmFtZSkgPSAwOwotICAgIERhdGFiYXNlVGhyZWFkKiBkYXRhYmFzZVRocmVhZCgpOwot
ICAgIHZvaWQgc2V0SGFzT3BlbkRhdGFiYXNlcygpIHsgbV9oYXNPcGVuRGF0YWJhc2VzID0gdHJ1
ZTsgfQotICAgIGJvb2wgaGFzT3BlbkRhdGFiYXNlcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzT3Bl
bkRhdGFiYXNlczsgfQotICAgIC8vIFdoZW4gdGhlIGRhdGFiYXNlIGNsZWFudXAgaXMgZG9uZSwg
Y2xlYW51cFN5bmMgd2lsbCBiZSBzaWduYWxsZWQuCi0gICAgdm9pZCBzdG9wRGF0YWJhc2VzKERh
dGFiYXNlVGFza1N5bmNocm9uaXplciopOwogI2VuZGlmCiAgICAgdmlydHVhbCBib29sIGlzQ29u
dGV4dFRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNK
U0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0ID0gMDsKQEAgLTIyNCwxMSArMjE1LDYgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZDsKICAgICBBY3Rp
dmVET01PYmplY3Q6OlJlYXNvbkZvclN1c3BlbnNpb24gbV9yZWFzb25Gb3JTdXNwZW5kaW5nQWN0
aXZlRE9NT2JqZWN0czsKIAotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgUmVmUHRyPERh
dGFiYXNlVGhyZWFkPiBtX2RhdGFiYXNlVGhyZWFkOwotICAgIGJvb2wgbV9oYXNPcGVuRGF0YWJh
c2VzOyAvLyBUaGlzIG5ldmVyIGNoYW5nZXMgYmFjayB0byBmYWxzZSwgZXZlbiBhZnRlciB0aGUg
ZGF0YWJhc2UgdGhyZWFkIGlzIGNsb3NlZC4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEJMT0IpIHx8
IEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICBSZWZQdHI8RmlsZVRocmVhZD4gbV9maWxlVGhyZWFk
OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCShyZXZpc2lv
biAxMDkyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFBhZ2UuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJE
YXRhYmFzZUNvbnRleHQuaCIKICNpbmNsdWRlICJEZXZpY2VNb3Rpb25Db250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKQEAgLTEyMCw3ICsxMjEsNyBAQCBzdGF0aWMgYm9vbCBsb2dDYW5DYWNoZUZyYW1lRGVj
aXNpb24oRnJhCiAgICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CiAgICAgICAgIH0KICNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCktPmhh
c09wZW5EYXRhYmFzZXMoKSkgeworICAgICAgICBpZiAoRGF0YWJhc2VDb250ZXh0OjpoYXNPcGVu
RGF0YWJhc2VzKGZyYW1lLT5kb2N1bWVudCgpKSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1G
cmFtZSBoYXMgb3BlbiBkYXRhYmFzZSBoYW5kbGVzIik7CiAgICAgICAgICAgICBjYW5ub3RDYWNo
ZSA9IHRydWU7CiAgICAgICAgIH0KQEAgLTI2Myw3ICsyNjQsNyBAQCBib29sIFBhZ2VDYWNoZTo6
Y2FuQ2FjaGVQYWdlQ29udGFpbmluZ1RoCiAgICAgICAgICYmICghZG9jdW1lbnQtPnVybCgpLnBy
b3RvY29sSXMoImh0dHBzIikgfHwgKCFkb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5jYWNoZUNv
bnRyb2xDb250YWluc05vQ2FjaGUoKSAmJiAhZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuY2Fj
aGVDb250cm9sQ29udGFpbnNOb1N0b3JlKCkpKQogICAgICAgICAmJiAoIWZyYW1lLT5kb21XaW5k
b3coKSB8fCAhZnJhbWUtPmRvbVdpbmRvdygpLT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVz
KCkudW5sb2FkRXZlbnQpKQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgICAgICYmICFk
b2N1bWVudC0+aGFzT3BlbkRhdGFiYXNlcygpCisgICAgICAgICYmICFEYXRhYmFzZUNvbnRleHQ6
Omhhc09wZW5EYXRhYmFzZXMoZG9jdW1lbnQpCiAjZW5kaWYKICNpZiBFTkFCTEUoU0hBUkVEX1dP
UktFUlMpCiAgICAgICAgICYmICFTaGFyZWRXb3JrZXJSZXBvc2l0b3J5OjpoYXNTaGFyZWRXb3Jr
ZXJzKGRvY3VtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShy
ZXZpc2lvbiAxMDkyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50
LmgiCiAjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGlj
eS5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgogI2luY2x1ZGUgIkRPTUltcGxlbWVu
dGF0aW9uLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
QEAgLTQxOCw3ICs0MTksOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyhVbmxvYWRF
dmVuCiAgICAgICAgIGRvYy0+c2V0UmVhZHlTdGF0ZShEb2N1bWVudDo6Q29tcGxldGUpOwogCiAj
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICAgICAgZG9jLT5zdG9wRGF0YWJhc2VzKDApOwor
ICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHRoZSBEYXRhYmFzZUNvbnRleHQgd2F0Y2ggZm9yIHNv
bWV0aGluZyBsaWtlIEFjdGl2ZURPTU9iamVjdDo6c3RvcCgpIHJhdGhlciB0aGFuIGJlaW5nIHNw
ZWNpYWwtY2FzZWQgaGVyZT8KKyAgICAgICAgRGF0YWJhc2VDb250ZXh0OjpzdG9wRGF0YWJhc2Vz
KGRvYywgMCk7CiAjZW5kaWYKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1N1cHBsZW1lbnRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U3VwcGxlbWVudGFibGUuaAkocmV2aXNpb24gMTA5Mjg2KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU3VwcGxlbWVudGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTcsMTYgKzU4LDE2
IEBAIHB1YmxpYzoKICAgICB2b2lkIHByb3ZpZGVTdXBwbGVtZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYga2V5LCBQYXNzT3duUHRyPFN1cHBsZW1lbnQ8VD4gPiBzdXBwbGVtZW50KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKCFtX3N1cHBsZW1lbnRzLmdldChrZXkuaW1wbCgpKSk7Ci0gICAgICAgIG1f
c3VwcGxlbWVudHMuc2V0KGtleS5pbXBsKCksIHN1cHBsZW1lbnQpOworICAgICAgICBtX3N1cHBs
ZW1lbnRzLnNldChrZXksIHN1cHBsZW1lbnQpOwogICAgIH0KIAogICAgIFN1cHBsZW1lbnQ8VD4q
IHJlcXVpcmVTdXBwbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYga2V5KQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fc3VwcGxlbWVudHMuZ2V0KGtleS5pbXBsKCkpOworICAgICAgICByZXR1cm4g
bV9zdXBwbGVtZW50cy5nZXQoa2V5KTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBI
YXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBPd25QdHI8U3VwcGxlbWVudDxUPiA+ID4gU3VwcGxl
bWVudE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBPd25QdHI8U3VwcGxl
bWVudDxUPiA+ID4gU3VwcGxlbWVudE1hcDsKICAgICBTdXBwbGVtZW50TWFwIG1fc3VwcGxlbWVu
dHM7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0Fic3RyYWN0RGF0YWJhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQWJzdHJhY3REYXRhYmFz
ZS5jcHAJKHJldmlzaW9uIDEwOTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQWJzdHJh
Y3REYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiRGF0YWJhc2VBdXRob3JpemVyLmgiCisjaW5j
bHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTE4OCw2
ICsxODksNyBAQCBjb25zdCBjaGFyKiBBYnN0cmFjdERhdGFiYXNlOjpkYXRhYmFzZUluCiBBYnN0
cmFjdERhdGFiYXNlOjpBYnN0cmFjdERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgRGF0YWJhc2VUeXBlIGRhdGFiYXNl
VHlwZSkKICAgICA6IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KQorICAgICwgbV9k
YXRhYmFzZUNvbnRleHQoRGF0YWJhc2VDb250ZXh0Ojpmcm9tKGNvbnRleHQpKQogICAgICwgbV9u
YW1lKG5hbWUuaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX2V4cGVjdGVkVmVyc2lvbihleHBlY3Rl
ZFZlcnNpb24uaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX2Rpc3BsYXlOYW1lKGRpc3BsYXlOYW1l
Lmlzb2xhdGVkQ29weSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9BYnN0cmFjdERh
dGFiYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9BYnN0cmFjdERh
dGFiYXNlLmgJKHJldmlzaW9uIDEwOTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQWJz
dHJhY3REYXRhYmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIERhdGFiYXNlQXV0aG9yaXplcjsKK2NsYXNzIERhdGFiYXNl
Q29udGV4dDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZWN1cml0eU9y
aWdpbjsKIApAQCAtODYsNiArODcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG1hcmtB
c0RlbGV0ZWRBbmRDbG9zZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbW1lZGlhdGVs
eSgpID0gMDsKIAorICAgIERhdGFiYXNlQ29udGV4dCogZGF0YWJhc2VDb250ZXh0KCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhYmFzZUNvbnRleHQ7IH0KKwogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBj
bGFzcyBDaGFuZ2VWZXJzaW9uV3JhcHBlcjsKICAgICBmcmllbmQgY2xhc3MgU1FMU3RhdGVtZW50
OwpAQCAtMTI0LDggKzEyNyw5IEBAIHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBkYXRhYmFzZUluZm9UYWJsZU5hbWUoKTsKIAotICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25D
b250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBtX2NvbnRleHRUaHJlYWRTZWN1cml0eU9yaWdpbjsKKyAgICBSZWZQdHI8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OworICAgIERhdGFiYXNlQ29u
dGV4dCogbV9kYXRhYmFzZUNvbnRleHQ7IC8vIE93bmVkIGJ5IG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC4KIAogICAgIFN0cmluZyBtX25hbWU7CiAgICAgU3RyaW5nIG1fZXhwZWN0ZWRWZXJzaW9u
OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAJKHJldmlzaW9uIDEwOTI4NikK
KysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQ2hhbmdlVmVyc2lvbldyYXBwZXIuaCIKICNpbmNs
dWRlICJDcm9zc1RocmVhZFRhc2suaCIKICNpbmNsdWRlICJEYXRhYmFzZUNhbGxiYWNrLmgiCisj
aW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUYXNrLmgiCiAj
aW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIK
QEAgLTEwOSw3ICsxMTAsNyBAQCBQYXNzUmVmUHRyPERhdGFiYXNlPiBEYXRhYmFzZTo6b3BlbkRh
dGFiCiAKICAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXREYXRhYmFzZURldGFpbHMo
Y29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNp
emUpOwogCi0gICAgY29udGV4dC0+c2V0SGFzT3BlbkRhdGFiYXNlcygpOworICAgIERhdGFiYXNl
Q29udGV4dDo6ZnJvbShjb250ZXh0KS0+c2V0SGFzT3BlbkRhdGFiYXNlcygpOwogCiAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRPcGVuRGF0YWJhc2UoY29udGV4dCwgZGF0YWJhc2Us
IGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmhvc3QoKSwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9u
KTsKIApAQCAtMTMwLDcgKzEzMSw3IEBAIERhdGFiYXNlOjpEYXRhYmFzZShTY3JpcHRFeGVjdXRp
b25Db250ZXgKICAgICBtX2RhdGFiYXNlVGhyZWFkU2VjdXJpdHlPcmlnaW4gPSBtX2NvbnRleHRU
aHJlYWRTZWN1cml0eU9yaWdpbi0+aXNvbGF0ZWRDb3B5KCk7CiAKICAgICBTY3JpcHRDb250cm9s
bGVyOjppbml0aWFsaXplVGhyZWFkaW5nKCk7Ci0gICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKSk7CisgICAgQVNTRVJUKGRhdGFiYXNlQ29udGV4dCgp
LT5kYXRhYmFzZVRocmVhZCgpKTsKIH0KIAogY2xhc3MgRGVyZWZDb250ZXh0VGFzayA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKQEAgLTE3OSwxMiArMTgwLDEyIEBAIFN0
cmluZyBEYXRhYmFzZTo6dmVyc2lvbigpIGNvbnN0CiBib29sIERhdGFiYXNlOjpvcGVuQW5kVmVy
aWZ5VmVyc2lvbihib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBFeGNlcHRpb25Db2RlJiBl
LCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKICAgICBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIg
c3luY2hyb25pemVyOwotICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFz
ZVRocmVhZCgpIHx8IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+
dGVybWluYXRpb25SZXF1ZXN0ZWQoJnN5bmNocm9uaXplcikpCisgICAgaWYgKCFkYXRhYmFzZUNv
bnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKSB8fCBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VU
aHJlYWQoKS0+dGVybWluYXRpb25SZXF1ZXN0ZWQoJnN5bmNocm9uaXplcikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwogICAgIE93blB0cjxEYXRh
YmFzZU9wZW5UYXNrPiB0YXNrID0gRGF0YWJhc2VPcGVuVGFzazo6Y3JlYXRlKHRoaXMsIHNldFZl
cnNpb25Jbk5ld0RhdGFiYXNlLCAmc3luY2hyb25pemVyLCBlLCBlcnJvck1lc3NhZ2UsIHN1Y2Nl
c3MpOwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+c2No
ZWR1bGVJbW1lZGlhdGVUYXNrKHRhc2sucmVsZWFzZSgpKTsKKyAgICBkYXRhYmFzZUNvbnRleHQo
KS0+ZGF0YWJhc2VUaHJlYWQoKS0+c2NoZWR1bGVJbW1lZGlhdGVUYXNrKHRhc2sucmVsZWFzZSgp
KTsKICAgICBzeW5jaHJvbml6ZXIud2FpdEZvclRhc2tDb21wbGV0aW9uKCk7CiAKICAgICByZXR1
cm4gc3VjY2VzczsKQEAgLTE5MiwyNyArMTkzLDI3IEBAIGJvb2wgRGF0YWJhc2U6Om9wZW5BbmRW
ZXJpZnlWZXJzaW9uKGJvb2wKIAogdm9pZCBEYXRhYmFzZTo6bWFya0FzRGVsZXRlZEFuZENsb3Nl
KCkKIHsKLSAgICBpZiAobV9kZWxldGVkIHx8ICFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRh
dGFiYXNlVGhyZWFkKCkpCisgICAgaWYgKG1fZGVsZXRlZCB8fCAhZGF0YWJhc2VDb250ZXh0KCkt
PmRhdGFiYXNlVGhyZWFkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIExPRyhTdG9yYWdlQVBJ
LCAiTWFya2luZyAlcyAoJXApIGFzIGRlbGV0ZWQiLCBzdHJpbmdJZGVudGlmaWVyKCkuYXNjaWko
KS5kYXRhKCksIHRoaXMpOwogICAgIG1fZGVsZXRlZCA9IHRydWU7CiAKICAgICBEYXRhYmFzZVRh
c2tTeW5jaHJvbml6ZXIgc3luY2hyb25pemVyOwotICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnRlcm1pbmF0aW9uUmVxdWVzdGVkKCZzeW5jaHJvbml6
ZXIpKSB7CisgICAgaWYgKGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT50ZXJt
aW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkgewogICAgICAgICBMT0coU3RvcmFnZUFQ
SSwgIkRhdGFiYXNlIGhhbmRsZSAlcCBpcyBvbiBhIHRlcm1pbmF0ZWQgRGF0YWJhc2VUaHJlYWQs
IGNhbm5vdCBiZSBtYXJrZWQgZm9yIG5vcm1hbCBjbG9zdXJlXG4iLCB0aGlzKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIE93blB0cjxEYXRhYmFzZUNsb3NlVGFzaz4gdGFzayA9IERh
dGFiYXNlQ2xvc2VUYXNrOjpjcmVhdGUodGhpcywgJnN5bmNocm9uaXplcik7Ci0gICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRh
c2sodGFzay5yZWxlYXNlKCkpOworICAgIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVh
ZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRhc2sodGFzay5yZWxlYXNlKCkpOwogICAgIHN5bmNocm9u
aXplci53YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKIH0KIAogdm9pZCBEYXRhYmFzZTo6Y2xvc2Uo
KQogewotICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFk
KCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5nZXRUaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoZGF0YWJh
c2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCkpOworICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkp
OwogCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV90cmFuc2FjdGlvbkluUHJv
Z3Jlc3NNdXRleCk7CkBAIC0yMjUsMTUgKzIyNiwxNSBAQCB2b2lkIERhdGFiYXNlOjpjbG9zZSgp
CiAKICAgICAvLyBNdXN0IHJlZigpIGJlZm9yZSBjYWxsaW5nIGRhdGFiYXNlVGhyZWFkKCktPnJl
Y29yZERhdGFiYXNlQ2xvc2VkKCkuCiAgICAgUmVmUHRyPERhdGFiYXNlPiBwcm90ZWN0ID0gdGhp
czsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnJlY29y
ZERhdGFiYXNlQ2xvc2VkKHRoaXMpOwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0
YWJhc2VUaHJlYWQoKS0+dW5zY2hlZHVsZURhdGFiYXNlVGFza3ModGhpcyk7CisgICAgZGF0YWJh
c2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnJlY29yZERhdGFiYXNlQ2xvc2VkKHRoaXMp
OworICAgIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT51bnNjaGVkdWxlRGF0
YWJhc2VUYXNrcyh0aGlzKTsKICAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5yZW1vdmVP
cGVuRGF0YWJhc2UodGhpcyk7CiB9CiAKIHZvaWQgRGF0YWJhc2U6OmNsb3NlSW1tZWRpYXRlbHko
KQogewogICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVh
ZCgpKTsKLSAgICBEYXRhYmFzZVRocmVhZCogZGF0YWJhc2VUaHJlYWQgPSBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCk7CisgICAgRGF0YWJhc2VUaHJlYWQqIGRhdGFi
YXNlVGhyZWFkID0gZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCk7CiAgICAgaWYg
KGRhdGFiYXNlVGhyZWFkICYmICFkYXRhYmFzZVRocmVhZC0+dGVybWluYXRpb25SZXF1ZXN0ZWQo
KSAmJiBvcGVuZWQoKSkgewogICAgICAgICBsb2dFcnJvck1lc3NhZ2UoImZvcmNpYmx5IGNsb3Np
bmcgZGF0YWJhc2UiKTsKICAgICAgICAgZGF0YWJhc2VUaHJlYWQtPnNjaGVkdWxlSW1tZWRpYXRl
VGFzayhEYXRhYmFzZUNsb3NlVGFzazo6Y3JlYXRlKHRoaXMsIDApKTsKQEAgLTI0OCw4ICsyNDks
OCBAQCB1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2U6Om1heGltdW1TaXplCiBib29sIERhdGFi
YXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBF
eGNlcHRpb25Db2RlJiBlLCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKICAgICBpZiAoQWJzdHJh
Y3REYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkoc2V0VmVyc2lvbkluTmV3RGF0YWJhc2Us
IGUsIGVycm9yTWVzc2FnZSkpIHsKLSAgICAgICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+ZGF0YWJhc2VUaHJlYWQoKSkKLSAgICAgICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+ZGF0YWJhc2VUaHJlYWQoKS0+cmVjb3JkRGF0YWJhc2VPcGVuKHRoaXMpOworICAgICAgICBp
ZiAoZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCkpCisgICAgICAgICAgICBkYXRh
YmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+cmVjb3JkRGF0YWJhc2VPcGVuKHRoaXMp
OwogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTMxMSwyNiArMzEyLDI2IEBAIHZv
aWQgRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24oKQogICAgIGlmIChtX2lzVHJhbnNhY3Rp
b25RdWV1ZUVuYWJsZWQgJiYgIW1fdHJhbnNhY3Rpb25RdWV1ZS5pc0VtcHR5KCkpCiAgICAgICAg
IHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvblF1ZXVlLnRha2VGaXJzdCgpOwogCi0gICAgaWYg
KHRyYW5zYWN0aW9uICYmIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQo
KSkgeworICAgIGlmICh0cmFuc2FjdGlvbiAmJiBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VU
aHJlYWQoKSkgewogICAgICAgICBPd25QdHI8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+IHRhc2sg
PSBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzazo6Y3JlYXRlKHRyYW5zYWN0aW9uKTsKICAgICAgICAg
TE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrICVwIGZv
ciB0cmFuc2FjdGlvbiAlcFxuIiwgdGFzay5nZXQoKSwgdGFzay0+dHJhbnNhY3Rpb24oKSk7CiAg
ICAgICAgIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gdHJ1ZTsKLSAgICAgICAgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZVRhc2sodGFzay5yZWxl
YXNlKCkpOworICAgICAgICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+c2No
ZWR1bGVUYXNrKHRhc2sucmVsZWFzZSgpKTsKICAgICB9IGVsc2UKICAgICAgICAgbV90cmFuc2Fj
dGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTsKIH0KIAogdm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFu
c2FjdGlvblN0ZXAoU1FMVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBib29sIGltbWVkaWF0ZWx5
KQogewotICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgp
KQorICAgIGlmICghZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIE93blB0cjxEYXRhYmFzZVRyYW5zYWN0aW9uVGFzaz4gdGFzayA9IERh
dGFiYXNlVHJhbnNhY3Rpb25UYXNrOjpjcmVhdGUodHJhbnNhY3Rpb24pOwogICAgIExPRyhTdG9y
YWdlQVBJLCAiU2NoZWR1bGluZyBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzayAlcCBmb3IgdGhlIHRy
YW5zYWN0aW9uIHN0ZXBcbiIsIHRhc2suZ2V0KCkpOwogICAgIGlmIChpbW1lZGlhdGVseSkKLSAg
ICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVs
ZUltbWVkaWF0ZVRhc2sodGFzay5yZWxlYXNlKCkpOworICAgICAgICBkYXRhYmFzZUNvbnRleHQo
KS0+ZGF0YWJhc2VUaHJlYWQoKS0+c2NoZWR1bGVJbW1lZGlhdGVUYXNrKHRhc2sucmVsZWFzZSgp
KTsKICAgICBlbHNlCi0gICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VU
aHJlYWQoKS0+c2NoZWR1bGVUYXNrKHRhc2sucmVsZWFzZSgpKTsKKyAgICAgICAgZGF0YWJhc2VD
b250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxlVGFzayh0YXNrLnJlbGVhc2UoKSk7
CiB9CiAKIGNsYXNzIERlbGl2ZXJQZW5kaW5nQ2FsbGJhY2tUYXNrIDogcHVibGljIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewpAQCAtMzkwLDEyICszOTEsMTIgQEAgVmVjdG9yPFN0cmlu
Zz4gRGF0YWJhc2U6OnBlcmZvcm1HZXRUYWJsZQogCiBTUUxUcmFuc2FjdGlvbkNsaWVudCogRGF0
YWJhc2U6OnRyYW5zYWN0aW9uQ2xpZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT50cmFuc2FjdGlvbkNsaWVudCgpOwor
ICAgIHJldHVybiBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+dHJhbnNhY3Rp
b25DbGllbnQoKTsKIH0KIAogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvciogRGF0YWJhc2U6OnRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IoKSBjb25zdAogewotICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKTsK
KyAgICByZXR1cm4gZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IoKTsKIH0KIAogVmVjdG9yPFN0cmluZz4gRGF0YWJhc2U6OnRhYmxlTmFt
ZXMoKQpAQCAtNDA0LDExICs0MDUsMTEgQEAgVmVjdG9yPFN0cmluZz4gRGF0YWJhc2U6OnRhYmxl
TmFtZXMoKQogICAgIC8vIGluIGRlYWxpbmcgd2l0aCB0aGVtLiBIb3dldmVyLCBpZiB0aGUgY29k
ZSBjaGFuZ2VzLCB0aGlzIG1heSBub3QgYmUgdHJ1ZSBhbnltb3JlLgogICAgIFZlY3RvcjxTdHJp
bmc+IHJlc3VsdDsKICAgICBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIgc3luY2hyb25pemVyOwot
ICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpIHx8IG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+dGVybWluYXRpb25SZXF1
ZXN0ZWQoJnN5bmNocm9uaXplcikpCisgICAgaWYgKCFkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJh
c2VUaHJlYWQoKSB8fCBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+dGVybWlu
YXRpb25SZXF1ZXN0ZWQoJnN5bmNocm9uaXplcikpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAK
ICAgICBPd25QdHI8RGF0YWJhc2VUYWJsZU5hbWVzVGFzaz4gdGFzayA9IERhdGFiYXNlVGFibGVO
YW1lc1Rhc2s6OmNyZWF0ZSh0aGlzLCAmc3luY2hyb25pemVyLCByZXN1bHQpOwotICAgIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+c2NoZWR1bGVJbW1lZGlhdGVU
YXNrKHRhc2sucmVsZWFzZSgpKTsKKyAgICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJl
YWQoKS0+c2NoZWR1bGVJbW1lZGlhdGVUYXNrKHRhc2sucmVsZWFzZSgpKTsKICAgICBzeW5jaHJv
bml6ZXIud2FpdEZvclRhc2tDb21wbGV0aW9uKCk7CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAt
NDE4LDcgKzQxOSw3IEBAIFNlY3VyaXR5T3JpZ2luKiBEYXRhYmFzZTo6c2VjdXJpdHlPcmlnaW4K
IHsKICAgICBpZiAobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSkK
ICAgICAgICAgcmV0dXJuIG1fY29udGV4dFRocmVhZFNlY3VyaXR5T3JpZ2luLmdldCgpOwotICAg
IGlmIChjdXJyZW50VGhyZWFkKCkgPT0gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFz
ZVRocmVhZCgpLT5nZXRUaHJlYWRJRCgpKQorICAgIGlmIChjdXJyZW50VGhyZWFkKCkgPT0gZGF0
YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkpCiAgICAgICAg
IHJldHVybiBtX2RhdGFiYXNlVGhyZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCk7CiAgICAgcmV0dXJu
IDA7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ29udGV4dC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNvbnRleHQuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNvbnRleHQu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKKworI2lmIEVOQUJMRShT
UUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIkRhdGFiYXNl
VGFzay5oIgorI2luY2x1ZGUgIkRhdGFiYXNlVGhyZWFkLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RhdGljIERhdGFiYXNlQ29udGV4dCogZXhpc3RpbmdEYXRhYmFzZUNvbnRleHRGcm9t
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PERhdGFiYXNlQ29udGV4dCo+KFN1cHBsZW1lbnQ8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD46
OmZyb20oY29udGV4dCwgIkRhdGFiYXNlQ29udGV4dCIpKTsKK30KKworRGF0YWJhc2VDb250ZXh0
OjpEYXRhYmFzZUNvbnRleHQoKQorICAgIDogbV9oYXNPcGVuRGF0YWJhc2VzKGZhbHNlKQorewor
fQorCitEYXRhYmFzZUNvbnRleHQ6On5EYXRhYmFzZUNvbnRleHQoKQoreworICAgIGlmIChtX2Rh
dGFiYXNlVGhyZWFkKSB7CisgICAgICAgIEFTU0VSVChtX2RhdGFiYXNlVGhyZWFkLT50ZXJtaW5h
dGlvblJlcXVlc3RlZCgpKTsKKyAgICAgICAgbV9kYXRhYmFzZVRocmVhZCA9IDA7CisgICAgfQor
fQorCitEYXRhYmFzZUNvbnRleHQqIERhdGFiYXNlQ29udGV4dDo6ZnJvbShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQoreworICAgIERhdGFiYXNlQ29udGV4dCogc3VwcGxlbWVudCA9
IGV4aXN0aW5nRGF0YWJhc2VDb250ZXh0RnJvbShjb250ZXh0KTsKKyAgICBpZiAoIXN1cHBsZW1l
bnQpIHsKKyAgICAgICAgc3VwcGxlbWVudCA9IG5ldyBEYXRhYmFzZUNvbnRleHQoKTsKKyAgICAg
ICAgcHJvdmlkZVRvKGNvbnRleHQsICJEYXRhYmFzZUNvbnRleHQiLCBhZG9wdFB0cihzdXBwbGVt
ZW50KSk7CisgICAgICAgIEFTU0VSVChzdXBwbGVtZW50ID09IGV4aXN0aW5nRGF0YWJhc2VDb250
ZXh0RnJvbShjb250ZXh0KSk7CisgICAgfQorICAgIHJldHVybiBzdXBwbGVtZW50OworfQorCitE
YXRhYmFzZVRocmVhZCogRGF0YWJhc2VDb250ZXh0OjpkYXRhYmFzZVRocmVhZCgpCit7CisgICAg
aWYgKCFtX2RhdGFiYXNlVGhyZWFkICYmICFtX2hhc09wZW5EYXRhYmFzZXMpIHsKKyAgICAgICAg
Ly8gQ3JlYXRlIHRoZSBkYXRhYmFzZSB0aHJlYWQgb24gZmlyc3QgcmVxdWVzdCAtIGJ1dCBub3Qg
aWYgYXQgbGVhc3Qgb25lIGRhdGFiYXNlIHdhcyBhbHJlYWR5IG9wZW5lZCwKKyAgICAgICAgLy8g
YmVjYXVzZSBpbiB0aGF0IGNhc2Ugd2UgYWxyZWFkeSBoYWQgYSBkYXRhYmFzZSB0aHJlYWQgYW5k
IHRlcm1pbmF0ZWQgaXQgYW5kIHNob3VsZCBub3QgY3JlYXRlIGFub3RoZXIuCisgICAgICAgIG1f
ZGF0YWJhc2VUaHJlYWQgPSBEYXRhYmFzZVRocmVhZDo6Y3JlYXRlKCk7CisgICAgICAgIGlmICgh
bV9kYXRhYmFzZVRocmVhZC0+c3RhcnQoKSkKKyAgICAgICAgICAgIG1fZGF0YWJhc2VUaHJlYWQg
PSAwOworICAgIH0KKworICAgIHJldHVybiBtX2RhdGFiYXNlVGhyZWFkLmdldCgpOworfQorCiti
b29sIERhdGFiYXNlQ29udGV4dDo6aGFzT3BlbkRhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQoreworICAgIC8vIFdlIGRvbid0IHVzZSBEYXRhYmFzZUNvbnRleHQ6OmZy
b20gYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGNhdXNlCisgICAgLy8gRGF0YWJhc2VDb250ZXh0
IHRvIGJlIGFsbG9jYXRlZCBpZiB3ZSBkb24ndCBoYXZlIG9uZSBhbHJlYWR5LgorICAgIERhdGFi
YXNlQ29udGV4dCogZGF0YWJhc2VDb250ZXh0ID0gZXhpc3RpbmdEYXRhYmFzZUNvbnRleHRGcm9t
KGNvbnRleHQpOworICAgIGlmICghZGF0YWJhc2VDb250ZXh0KQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIGRhdGFiYXNlQ29udGV4dC0+bV9oYXNPcGVuRGF0YWJhc2VzOworfQor
Cit2b2lkIERhdGFiYXNlQ29udGV4dDo6c3RvcERhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIqIGNsZWFudXBTeW5jKQorewor
ICAgIC8vIFdlIGRvbid0IHVzZSBEYXRhYmFzZUNvbnRleHQ6OmZyb20gYmVjYXVzZSB3ZSBkb24n
dCB3YW50IHRvIGNhdXNlCisgICAgLy8gRGF0YWJhc2VDb250ZXh0IHRvIGJlIGFsbG9jYXRlZCBp
ZiB3ZSBkb24ndCBoYXZlIG9uZSBhbHJlYWR5LgorICAgIERhdGFiYXNlQ29udGV4dCogZGF0YWJh
c2VDb250ZXh0ID0gZXhpc3RpbmdEYXRhYmFzZUNvbnRleHRGcm9tKGNvbnRleHQpOworCisgICAg
aWYgKGRhdGFiYXNlQ29udGV4dCAmJiBkYXRhYmFzZUNvbnRleHQtPm1fZGF0YWJhc2VUaHJlYWQp
CisgICAgICAgIGRhdGFiYXNlQ29udGV4dC0+bV9kYXRhYmFzZVRocmVhZC0+cmVxdWVzdFRlcm1p
bmF0aW9uKGNsZWFudXBTeW5jKTsKKyAgICBlbHNlIGlmIChjbGVhbnVwU3luYykKKyAgICAgICAg
Y2xlYW51cFN5bmMtPnRhc2tDb21wbGV0ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvRGF0YWJhc2VDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9EYXRhYmFzZUNvbnRleHQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvRGF0YWJhc2VDb250ZXh0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICoKKyAqLworCisjaWZuZGVmIERhdGFiYXNlQ29udGV4dF9oCisjZGVmaW5lIERhdGFiYXNl
Q29udGV4dF9oCisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiU3VwcGxl
bWVudGFibGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEYXRhYmFzZTsKK2Ns
YXNzIERhdGFiYXNlVGFza1N5bmNocm9uaXplcjsKK2NsYXNzIERhdGFiYXNlVGhyZWFkOworY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworY2xhc3MgRGF0YWJhc2VDb250ZXh0IDogcHVi
bGljIFN1cHBsZW1lbnQ8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4geworcHVibGljOgorICAgIHZp
cnR1YWwgfkRhdGFiYXNlQ29udGV4dCgpOworICAgIHN0YXRpYyBEYXRhYmFzZUNvbnRleHQqIGZy
b20oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCisgICAgRGF0YWJhc2VUaHJlYWQqIGRhdGFi
YXNlVGhyZWFkKCk7CisKKyAgICB2b2lkIHNldEhhc09wZW5EYXRhYmFzZXMoKSB7IG1faGFzT3Bl
bkRhdGFiYXNlcyA9IHRydWU7IH0KKworICAgIHN0YXRpYyBib29sIGhhc09wZW5EYXRhYmFzZXMo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCisgICAgLy8gV2hlbiB0aGUgZGF0YWJhc2UgY2xl
YW51cCBpcyBkb25lLCBjbGVhbnVwU3luYyB3aWxsIGJlIHNpZ25hbGxlZC4KKyAgICBzdGF0aWMg
dm9pZCBzdG9wRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBEYXRhYmFzZVRhc2tT
eW5jaHJvbml6ZXIqKTsKKworcHJpdmF0ZToKKyAgICBEYXRhYmFzZUNvbnRleHQoKTsKKworICAg
IFJlZlB0cjxEYXRhYmFzZVRocmVhZD4gbV9kYXRhYmFzZVRocmVhZDsKKyAgICBib29sIG1faGFz
T3BlbkRhdGFiYXNlczsgLy8gVGhpcyBuZXZlciBjaGFuZ2VzIGJhY2sgdG8gZmFsc2UsIGV2ZW4g
YWZ0ZXIgdGhlIGRhdGFiYXNlIHRocmVhZCBpcyBjbG9zZWQuCit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjZW5kaWYgLy8g
RGF0YWJhc2VDb250ZXh0X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNh
Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNh
Y3Rpb24uY3BwCShyZXZpc2lvbiAxMDkyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1NR
TFRyYW5zYWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5j
bHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJEYXRhYmFzZUF1dGhvcml6ZXIuaCIKKyNpbmNs
dWRlICJEYXRhYmFzZUNvbnRleHQuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC0xNjMsNyAr
MTY0LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6Y2hlY2tBbmRIYW5kbGVDbG9zZQogICAgIG1f
ZXJyb3JDYWxsYmFja1dyYXBwZXIuY2xlYXIoKTsKIAogICAgIC8vIFRoZSBuZXh0IHN0ZXBzIHNo
b3VsZCBiZSBleGVjdXRlZCBvbmx5IGlmIHdlJ3JlIG9uIHRoZSBEQiB0aHJlYWQuCi0gICAgaWYg
KGN1cnJlbnRUaHJlYWQoKSAhPSBkYXRhYmFzZSgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PmRhdGFiYXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkpCisgICAgaWYgKGN1cnJlbnRUaHJlYWQo
KSAhPSBkYXRhYmFzZSgpLT5kYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0
VGhyZWFkSUQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIGN1cnJlbnQgU1FMaXRl
IHRyYW5zYWN0aW9uIHNob3VsZCBiZSBzdG9wcGVkLCBhcyB3ZWxsCkBAIC0yMTUsNyArMjE2LDcg
QEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6cGVyZm9ybVBlbmRpbmdDYWxsYgogCiB2b2lkIFNRTFRy
YW5zYWN0aW9uOjpub3RpZnlEYXRhYmFzZVRocmVhZElzU2h1dHRpbmdEb3duKCkKIHsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IGRhdGFiYXNlKCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBkYXRhYmFzZSgpLT5kYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJl
YWQoKS0+Z2V0VGhyZWFkSUQoKSk7CiAKICAgICAvLyBJZiB0aGUgdHJhbnNhY3Rpb24gaXMgaW4g
cHJvZ3Jlc3MsIHdlIHNob3VsZCByb2xsIGl0IGJhY2sgaGVyZSwgc2luY2UgdGhpcyBpcyBvdXIg
bGFzdAogICAgIC8vIG9wb3J0dW5pdHkgdG8gZG8gc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhpcyB0
cmFuc2FjdGlvbiBvbiB0aGUgREIgdGhyZWFkLgpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyVGhyZWFkLmNwcAkocmV2aXNpb24gMTA5Mjg2KQorKysgU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAK
ICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKIAorI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5o
IgogI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJLVVJMLmgiCkBAIC0yMTUsOCArMjE2LDkg
QEAgcHVibGljOgogICAgICAgICBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8V29ya2VyQ29udGV4dCo+KGNvbnRleHQpOwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFT
RSkKKyAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBzdG9wIHRoZSBkYXRhYmFzZXMgYXMgcGFy
dCBvZiBzdG9wQWN0aXZlRE9NT2JqZWN0cygpIGJlbG93PwogICAgICAgICBEYXRhYmFzZVRhc2tT
eW5jaHJvbml6ZXIgY2xlYW51cFN5bmM7Ci0gICAgICAgIHdvcmtlckNvbnRleHQtPnN0b3BEYXRh
YmFzZXMoJmNsZWFudXBTeW5jKTsKKyAgICAgICAgRGF0YWJhc2VDb250ZXh0OjpzdG9wRGF0YWJh
c2VzKHdvcmtlckNvbnRleHQsICZjbGVhbnVwU3luYyk7CiAjZW5kaWYKIAogICAgICAgICB3b3Jr
ZXJDb250ZXh0LT5zdG9wQWN0aXZlRE9NT2JqZWN0cygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129565</attachid>
            <date>2012-02-29 17:45:45 -0800</date>
            <delta_ts>2012-02-29 17:51:39 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-79633-20120229174543.patch</filename>
            <type>text/plain</type>
            <size>40505</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBACisyMDEyLTAyLTI5ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCBoYXMgdG9vIG1hbnkgaWZkZWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgVGhpcyBjbGFzcyBjcmVhdGVzIGEgRGF0YWJh
c2VDb250ZXh0IG9iamVjdCB0byBzdXBwbGVtZW50IHRoZQorICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0IHdpdGggZGF0YWJhc2Utc3BlY2lmaWMgaW5mb3JtYXRpb24uICBUaGlzIG5ldwor
ICAgICAgICBvYmplY3QgbGV0cyB1cyByZW1vdmUgYSBidW5jaCBvZiBkYXRhYmFzZS1zcGVjaWZp
YyAoYW5kIGlmZGVmZWQpIGxvZ2ljCisgICAgICAgIGZyb20gU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC4oY3BwfGgpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAg
KiBoaXN0b3J5L1BhZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2dDYW5DYWNoZUZy
YW1lRGVjaXNpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNhY2hlOjpjYW5DYWNoZVBhZ2VD
b250YWluaW5nVGhpc0ZyYW1lKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKiBz
dG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RE
YXRhYmFzZTo6QWJzdHJhY3REYXRhYmFzZSk6CisgICAgICAgICogc3RvcmFnZS9BYnN0cmFjdERh
dGFiYXNlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0
RGF0YWJhc2U6OmRhdGFiYXNlQ29udGV4dCk6CisgICAgICAgIChBYnN0cmFjdERhdGFiYXNlKToK
KyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OkRhdGFiYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpvcGVuQW5kVmVyaWZ5VmVyc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6bWFya0FzRGVsZXRlZEFuZENsb3NlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZTo6Y2xvc2VJbW1lZGlhdGVseSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9y
bU9wZW5BbmRWZXJpZnkpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rp
b25TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjp0cmFuc2FjdGlvbkNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6dHJhbnNhY3Rpb25Db29yZGluYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6dGFibGVOYW1lcyk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZTo6c2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2VD
b250ZXh0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlQ29udGV4dDo6RGF0YWJhc2VDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlQ29udGV4dDo6fkRhdGFiYXNlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZUNvbnRleHQ6OmZyb20pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0Ojpk
YXRhYmFzZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUNvbnRleHQ6OnN0b3BE
YXRhYmFzZXMpOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2VDb250ZXh0Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChEYXRhYmFzZUNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpzZXRIYXNPcGVuRGF0YWJhc2VzKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlQ29udGV4dDo6aGFzT3BlbkRhdGFiYXNlcyk6CisgICAgICAgICog
c3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2Fj
dGlvbjo6Y2hlY2tBbmRIYW5kbGVDbG9zZWRPckludGVycnVwdGVkRGF0YWJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246Om5vdGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0dGlu
Z0Rvd24pOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrOjpwZXJmb3JtVGFzayk6CisKIDIw
MTItMDItMjkgIERhdmlkIEJhcnRvbiAgPGRiYXJ0b25AbWF0aHNjcmliZS5jb20+CiAKICAgICAg
ICAgPG1zdWJzdXA+IHNldE5lZWRzTGF5b3V0KCkgY29ycmVjdGlvbgpJbmRleDogU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDEwOTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMzg3LDYgKzEzODcsNyBAQCBTRVQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgc3RvcmFnZS9ET01XaW5kb3dTUUxEYXRhYmFzZS5jcHAKICAgICBzdG9yYWdlL0Rh
dGFiYXNlLmNwcAogICAgIHN0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmNwcAorICAgIHN0b3Jh
Z2UvRGF0YWJhc2VDb250ZXh0LmNwcAogICAgIHN0b3JhZ2UvRGF0YWJhc2VTeW5jLmNwcAogICAg
IHN0b3JhZ2UvRGF0YWJhc2VUYXNrLmNwcAogICAgIHN0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuY3Bw
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEwOTI4NikKKysr
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTM4
NjEsMTIgKzM4NjEsMTQgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
RE9NV2luZG93U1FMRGF0YWJhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RPTVdp
bmRvd1NRTERhdGFiYXNlLmggXAorCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9EYXRhYmFzZUF1dGhvcml6ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFz
ZUNhbGxiYWNrLmggXAotCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ29udGV4dC5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvRGF0YWJhc2VDb250ZXh0LmggXAogCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
RGF0YWJhc2VEZXRhaWxzLmggXAotCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaCBc
CiAJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0Rh
dGFiYXNlVGFzay5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMDkyODYpCisrKyBT
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMzA0LDYgKzEzMDQs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBzdG9yYWdlL0RPTVdpbmRvd1NRTERhdGFiYXNlLmNwcCBc
CiAgICAgc3RvcmFnZS9EYXRhYmFzZS5jcHAgXAogICAgIHN0b3JhZ2UvRGF0YWJhc2VBdXRob3Jp
emVyLmNwcCBcCisgICAgc3RvcmFnZS9EYXRhYmFzZUNvbnRleHQuY3BwIFwKICAgICBzdG9yYWdl
L0RhdGFiYXNlU3luYy5jcHAgXAogICAgIHN0b3JhZ2UvU3RvcmFnZVRhc2suY3BwIFwKICAgICBz
dG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9u
IDEwOTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpA
QCAtNDYzOCw2ICs0NjM4LDggQEAKICAgICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNlQXV0aG9y
aXplci5jcHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmgnLAog
ICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VDYWxsYmFjay5oJywKKyAgICAgICAgICAgICdz
dG9yYWdlL0RhdGFiYXNlQ29udGV4dC5jcHAnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJh
c2VDb250ZXh0LmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmNwcCcsCiAg
ICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZVN5bmMuaCcsCiAgICAgICAgICAgICAnc3RvcmFn
ZS9EYXRhYmFzZVRhc2suY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxMDkyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNzA2ODIsNiAr
NzA2ODIsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cc3RvcmFnZVxEYXRhYmFzZUNvbnRleHQuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXERhdGFiYXNlQ29udGV4dC5oIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdl
XERhdGFiYXNlU3luYy5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTA5
Mjg2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0zMzEzLDYgKzMzMTMsOCBAQAogCQk5NzIwNUFCODEyMzkyOTEw
MDBCMTczODAgLyogTWVkaWFEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTcyMDVBQjQxMjM5MjkxMDAwQjE3MzgwIC8qIE1lZGlhRG9jdW1l
bnQuaCAqLzsgfTsKIAkJOTcyMDVBQkIxMjM5MjkyNzAwQjE3MzgwIC8qIFBsdWdpbkRvY3VtZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MjA1
QUI5MTIzOTI5MjcwMEIxNzM4MCAvKiBQbHVnaW5Eb2N1bWVudC5jcHAgKi87IH07CiAJCTk3MjA1
QUJDMTIzOTI5MjcwMEIxNzM4MCAvKiBQbHVnaW5Eb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcyMDVBQkExMjM5MjkyNzAwQjE3MzgwIC8q
IFBsdWdpbkRvY3VtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJOTcyNDU4NTIxNEZCNzI0ODAwQ0E4NzQ2IC8qIERhdGFiYXNlQ29udGV4dC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzI0NTg1
MDE0RkI3MjQ4MDBDQTg3NDYgLyogRGF0YWJhc2VDb250ZXh0LmNwcCAqLzsgfTsKKwkJOTcyNDU4
NTMxNEZCNzI0ODAwQ0E4NzQ2IC8qIERhdGFiYXNlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcyNDU4NTExNEZCNzI0ODAwQ0E4NzQ2IC8q
IERhdGFiYXNlQ29udGV4dC5oICovOyB9OwogCQk5NzI4QzMxMzEyNjhFNDM5MDA0MUU4OUIgLyog
TWFya3VwQWNjdW11bGF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTcyOEMzMTExMjY4RTQzOTAwNDFFODlCIC8qIE1hcmt1cEFjY3VtdWxhdG9y
LmNwcCAqLzsgfTsKIAkJOTcyOEMzMTQxMjY4RTQzOTAwNDFFODlCIC8qIE1hcmt1cEFjY3VtdWxh
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzI4
QzMxMjEyNjhFNDM5MDA0MUU4OUIgLyogTWFya3VwQWNjdW11bGF0b3IuaCAqLzsgfTsKIAkJOTcz
ODg5QTAxMTZFQTlEQzAwQURGMzEzIC8qIERvY3VtZW50V3JpdGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3Mzg4OTlFMTE2RUE5REMwMEFERjMx
MyAvKiBEb2N1bWVudFdyaXRlci5jcHAgKi87IH07CkBAIC0xMDE4MCw2ICsxMDE4Miw4IEBACiAJ
CTk3MjA1QUI0MTIzOTI5MTAwMEIxNzM4MCAvKiBNZWRpYURvY3VtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTcyMDVBQjkxMjM5MjkyNzAwQjE3MzgwIC8qIFBsdWdpbkRvY3VtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsdWdpbkRvY3VtZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcyMDVBQkExMjM5MjkyNzAwQjE3Mzgw
IC8qIFBsdWdpbkRvY3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBs
dWdpbkRvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3MjQ1ODUwMTRG
QjcyNDgwMENBODc0NiAvKiBEYXRhYmFzZUNvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRGF0YWJhc2VDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTcyNDU4NTExNEZCNzI0ODAwQ0E4NzQ2IC8qIERhdGFiYXNlQ29udGV4dC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZUNvbnRleHQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcyOEMzMTExMjY4RTQzOTAwNDFFODlCIC8qIE1h
cmt1cEFjY3VtdWxhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1hcmt1cEFjY3VtdWxhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcy
OEMzMTIxMjY4RTQzOTAwNDFFODlCIC8qIE1hcmt1cEFjY3VtdWxhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmt1cEFjY3VtdWxhdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk3MzBCRTE0MTRFRjI4NkIwMERGMDZCOSAvKiBOYXZpZ2F0b3JSZWdp
c3RlclByb3RvY29sSGFuZGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBOYXZpZ2F0b3JSZWdpc3RlclByb3RvY29sSGFuZGxlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMzg5NCw2ICsxMzg5OCw4IEBACiAJCQkJNTFBNDVCNTQwQ0FEN0ZE
NzAwMEQyQkU5IC8qIERhdGFiYXNlQXV0aG9yaXplci5oICovLAogCQkJCUI1RDM2MDE5MTEyRjhC
NTYwMDQ4REVBOCAvKiBEYXRhYmFzZUNhbGxiYWNrLmggKi8sCiAJCQkJQjU5REQ2OEQxMTkwMjk4
RTAwN0U5Njg0IC8qIERhdGFiYXNlQ2FsbGJhY2suaWRsICovLAorCQkJCTk3MjQ1ODUwMTRGQjcy
NDgwMENBODc0NiAvKiBEYXRhYmFzZUNvbnRleHQuY3BwICovLAorCQkJCTk3MjQ1ODUxMTRGQjcy
NDgwMENBODc0NiAvKiBEYXRhYmFzZUNvbnRleHQuaCAqLywKIAkJCQk1MTE2RDk3NTBDRjE3N0JE
MDBDMkI4NEQgLyogRGF0YWJhc2VEZXRhaWxzLmggKi8sCiAJCQkJQjUyM0NGMDMxMTgyNjc1NDAw
RUJCMjlDIC8qIERhdGFiYXNlU3luYy5jcHAgKi8sCiAJCQkJQjUyM0NGMDQxMTgyNjc1NDAwRUJC
MjlDIC8qIERhdGFiYXNlU3luYy5oICovLApAQCAtMjA2NjQsNyArMjA2NzAsNiBAQAogCQkJCTk3
OEQwN0JEMTQ1QTBGNkMwMDk2OTA4RCAvKiBET01Db3JlRXhjZXB0aW9uLmNwcCAqLywKIAkJCQlC
QzYwRDZFODBEMjhEODM0MDBCOTkxOEYgLyogRE9NQ29yZUV4Y2VwdGlvbi5oICovLAogCQkJCUJD
NjBENkVCMEQyOEQ5OTkwMEI5OTE4RiAvKiBET01Db3JlRXhjZXB0aW9uLmlkbCAqLywKLQkJCQlC
QzlBNjE0MjE0Njg1OUQ5MDA2MDU3RkQgLyogRXZlbnROYW1lcy5pbiAqLywKIAkJCQlCQzlBNjE0
MTE0Njg1OUQ5MDA2MDU3RkQgLyogRE9NRXhjZXB0aW9ucy5pbiAqLywKIAkJCQlBODE4NUYzNjA5
NzY1NzY1MDA1ODI2RDkgLyogRE9NSW1wbGVtZW50YXRpb24uY3BwICovLAogCQkJCUE4MTg1RjMz
MDk3NjU3NjUwMDU4MjZEOSAvKiBET01JbXBsZW1lbnRhdGlvbi5oICovLApAQCAtMjA3MTMsNiAr
MjA3MTgsNyBAQAogCQkJCUFENDQ5NUYyMTQxRkMwODkwMDU0MUVERiAvKiBFdmVudExpc3RlbmVy
TWFwLmggKi8sCiAJCQkJOTM5ODg1QzEwOEI3RTNEMTAwRTcwN0M0IC8qIEV2ZW50TmFtZXMuY3Bw
ICovLAogCQkJCTkzOTg4NUMyMDhCN0UzRDEwMEU3MDdDNCAvKiBFdmVudE5hbWVzLmggKi8sCisJ
CQkJQkM5QTYxNDIxNDY4NTlEOTAwNjA1N0ZEIC8qIEV2ZW50TmFtZXMuaW4gKi8sCiAJCQkJOEY2
NzU2MTkxMjg4QjE3QjAwNDdBQ0EzIC8qIEV2ZW50UXVldWUuaCAqLywKIAkJCQlDRTVDQjFCMzE0
RURBQjZGMDBCQjI3OTUgLyogRXZlbnRTZW5kZXIuaCAqLywKIAkJCQlFMTJFREJFOTBCMzA4RTBC
MDAyNzA0QjYgLyogRXZlbnRUYXJnZXQuY3BwICovLApAQCAtMjE1NTAsNiArMjE1NTYsNyBAQAog
CQkJCTUxOTYxMTZCMENBQzU2NTcwMDEwQTgwQyAvKiBEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTFBNDVCNTYwQ0FEN0ZENzAwMEQyQkU5IC8qIERhdGFiYXNlQXV0aG9yaXplci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjVEMzYwMUExMTJGOEI1NjAwNDhERUE4IC8qIERhdGFiYXNlQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTk3MjQ1ODUzMTRGQjcyNDgwMENBODc0NiAvKiBE
YXRhYmFzZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMTZEOTc3MENGMTc3QkQwMEMy
Qjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1MjNDRjBCMTE4
MjY3NTQwMEVCQjI5QyAvKiBEYXRhYmFzZVN5bmMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOTYx
MUVBMENBQzc0OUMwMDEwQTgwQyAvKiBEYXRhYmFzZVRhc2suaCBpbiBIZWFkZXJzICovLApAQCAt
MjM4NTIsNiArMjM4NTksNyBAQAogCQkJCUJDMjI3MkU0MEU4MkVFOUIwMEU3Rjk3NSAvKiBTdHls
ZVJhcmVJbmhlcml0ZWREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIyNzJCRDBFODJFQUFF
MDBFN0Y5NzUgLyogU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMyMjcyODcwRTgyRTcwNzAwRTdGOTc1IC8qIFN0eWxlUmVmbGVjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTRCQkVENEQxNEZDREJBMTAwM0YwQjk4IC8qIFN0eWxlUnVsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzEzOEE5RTUxNDc0NDM0NjAwQjBFRDEyIC8qIFN0eWxlU2hhZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBOEVBODAwQzBBMTk1MTZFMDBBOEVGNUYgLyogU3R5bGVTaGVl
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTgwMEEwQTE5NTE2RTAwQThFRjVGIC8qIFN0eWxl
U2hlZXRMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTI0MzU2LDcgKzI0MzY0LDYgQEAKIAkJCQlF
MUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkQ1MzczNTMxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlFNEJCRUQ0RDE0RkNEQkExMDAzRjBCOTggLyogU3R5bGVSdWxlLmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTI0OTY0LDYgKzI0OTcxLDcgQEAKIAkJCQk1MEQ0MDYxMTE0N0Q0OURF
MDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyU2hhZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUx
OTYxMTZBMENBQzU2NTcwMDEwQTgwQyAvKiBEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1MUE0NUI1NzBDQUQ3RkQ3MDAwRDJCRTkgLyogRGF0YWJhc2VBdXRob3JpemVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTk3MjQ1ODUyMTRGQjcyNDgwMENBODc0NiAvKiBEYXRhYmFzZUNvbnRl
eHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjUyM0NGMEExMTgyNjc1NDAwRUJCMjlDIC8qIERh
dGFiYXNlU3luYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTk2MTFFQjBDQUM3NDlDMDAxMEE4
MEMgLyogRGF0YWJhc2VUYXNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxOTYxMTZEMENBQzU2
NTcwMDEwQTgwQyAvKiBEYXRhYmFzZVRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2OTE3
LDYgKzI2OTI1LDcgQEAKIAkJCQlBODBFNkRGQjBBMTk5MDY3MDA3RkI4QzUgLyogU3R5bGVQcm9w
ZXJ0eVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzIyNzJFMzBFODJFRTlCMDBFN0Y5NzUg
LyogU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzIyNzJC
QzBFODJFQUFFMDBFN0Y5NzUgLyogU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlFNEJCRUQ0QzE0RkNEQkExMDAzRjBCOTggLyogU3R5bGVSdWxlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE4RUE4MDBEMEExOTUxNkUwMEE4RUY1RiAvKiBTdHlsZVNoZWV0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4RUE4MDBCMEExOTUxNkUwMEE4RUY1RiAvKiBTdHls
ZVNoZWV0TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzVFQjVFNzBFODFCRkVGMDBCMjU5
NjUgLyogU3R5bGVTdXJyb3VuZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzMwOSw3ICsy
NzMxOCw2IEBACiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29y
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNT
QXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0Ug
LyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTRCQkVENEMxNEZDREJBMTAwM0Yw
Qjk4IC8qIFN0eWxlUnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAJKHJldmlzaW9uIDEwOTI4NikKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsOSArMzAsNiBAQAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2lu
Y2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkRPTVRpbWVyLmgiCi0j
aW5jbHVkZSAiRGF0YWJhc2UuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRhc2suaCIKLSNpbmNsdWRl
ICJEYXRhYmFzZVRocmVhZC5oIgogI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJF
dmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKQEAgLTk0LDkgKzkxLDYg
QEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQwogICAgICwgbV9pbkRl
c3RydWN0b3IoZmFsc2UpCiAgICAgLCBtX2luRGlzcGF0Y2hFcnJvckV2ZW50KGZhbHNlKQogICAg
ICwgbV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKGZhbHNlKQotI2lmIEVOQUJMRShTUUxf
REFUQUJBU0UpCi0gICAgLCBtX2hhc09wZW5EYXRhYmFzZXMoZmFsc2UpCi0jZW5kaWYKIHsKIH0K
IApAQCAtMTE1LDEyICsxMDksNiBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhl
Y3V0aW9uCiAgICAgICAgIEFTU0VSVCgoKml0ZXIpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
PT0gdGhpcyk7CiAgICAgICAgICgqaXRlciktPmNvbnRleHREZXN0cm95ZWQoKTsKICAgICB9Ci0j
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBpZiAobV9kYXRhYmFzZVRocmVhZCkgewotICAg
ICAgICBBU1NFUlQobV9kYXRhYmFzZVRocmVhZC0+dGVybWluYXRpb25SZXF1ZXN0ZWQoKSk7Ci0g
ICAgICAgIG1fZGF0YWJhc2VUaHJlYWQgPSAwOwotICAgIH0KLSNlbmRpZgogI2lmIEVOQUJMRShC
TE9CKSB8fCBFTkFCTEUoRklMRV9TWVNURU0pCiAgICAgaWYgKG1fZmlsZVRocmVhZCkgewogICAg
ICAgICBtX2ZpbGVUaHJlYWQtPnN0b3AoKTsKQEAgLTEzMywzMiArMTIxLDYgQEAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbgogI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUo
U1FMX0RBVEFCQVNFKQotCi1EYXRhYmFzZVRocmVhZCogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
ZGF0YWJhc2VUaHJlYWQoKQotewotICAgIGlmICghbV9kYXRhYmFzZVRocmVhZCAmJiAhbV9oYXNP
cGVuRGF0YWJhc2VzKSB7Ci0gICAgICAgIC8vIENyZWF0ZSB0aGUgZGF0YWJhc2UgdGhyZWFkIG9u
IGZpcnN0IHJlcXVlc3QgLSBidXQgbm90IGlmIGF0IGxlYXN0IG9uZSBkYXRhYmFzZSB3YXMgYWxy
ZWFkeSBvcGVuZWQsCi0gICAgICAgIC8vIGJlY2F1c2UgaW4gdGhhdCBjYXNlIHdlIGFscmVhZHkg
aGFkIGEgZGF0YWJhc2UgdGhyZWFkIGFuZCB0ZXJtaW5hdGVkIGl0IGFuZCBzaG91bGQgbm90IGNy
ZWF0ZSBhbm90aGVyLgotICAgICAgICBtX2RhdGFiYXNlVGhyZWFkID0gRGF0YWJhc2VUaHJlYWQ6
OmNyZWF0ZSgpOwotICAgICAgICBpZiAoIW1fZGF0YWJhc2VUaHJlYWQtPnN0YXJ0KCkpCi0gICAg
ICAgICAgICBtX2RhdGFiYXNlVGhyZWFkID0gMDsKLSAgICB9Ci0KLSAgICByZXR1cm4gbV9kYXRh
YmFzZVRocmVhZC5nZXQoKTsKLX0KLQotdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdG9w
RGF0YWJhc2VzKERhdGFiYXNlVGFza1N5bmNocm9uaXplciogY2xlYW51cFN5bmMpCi17Ci0gICAg
QVNTRVJUKGlzQ29udGV4dFRocmVhZCgpKTsKLSAgICBpZiAobV9kYXRhYmFzZVRocmVhZCkKLSAg
ICAgICAgbV9kYXRhYmFzZVRocmVhZC0+cmVxdWVzdFRlcm1pbmF0aW9uKGNsZWFudXBTeW5jKTsK
LSAgICBlbHNlIGlmIChjbGVhbnVwU3luYykKLSAgICAgICAgY2xlYW51cFN5bmMtPnRhc2tDb21w
bGV0ZWQoKTsKLX0KLQotI2VuZGlmCi0KIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cHJv
Y2Vzc01lc3NhZ2VQb3J0TWVzc2FnZXNTb29uKCkKIHsKICAgICBwb3N0VGFzayhQcm9jZXNzTWVz
c2FnZXNTb29uVGFzazo6Y3JlYXRlKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oCShyZXZpc2lvbiAxMDkyODYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5Q29udGV4dC5oIgorI2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxlLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC01NiwxNyArNTcsMTIgQEAgY2xhc3MgTWVzc2FnZVBv
cnQ7CiAjaWYgRU5BQkxFKEJMT0IpCiBjbGFzcyBQdWJsaWNVUkxNYW5hZ2VyOwogI2VuZGlmCi0j
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLWNsYXNzIERhdGFiYXNlOwotY2xhc3MgRGF0YWJhc2VU
YXNrU3luY2hyb25pemVyOwotY2xhc3MgRGF0YWJhc2VUaHJlYWQ7Ci0jZW5kaWYKIAogI2lmIEVO
QUJMRShCTE9CKSB8fCBFTkFCTEUoRklMRV9TWVNURU0pCiBjbGFzcyBGaWxlVGhyZWFkOwogI2Vu
ZGlmCiAKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgOiBwdWJsaWMgU2VjdXJpdHlDb250
ZXh0IHsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgOiBwdWJsaWMgU2VjdXJpdHlDb250
ZXh0LCBwdWJsaWMgU3VwcGxlbWVudGFibGU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gewogcHVi
bGljOgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICB2aXJ0dWFsIH5TY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CkBAIC03NywxMSArNzMsNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dEYXRhYmFzZUFjY2VzcygpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGF0YWJhc2VFeGNlZWRlZFF1b3RhKGNvbnN0IFN0
cmluZyYgbmFtZSkgPSAwOwotICAgIERhdGFiYXNlVGhyZWFkKiBkYXRhYmFzZVRocmVhZCgpOwot
ICAgIHZvaWQgc2V0SGFzT3BlbkRhdGFiYXNlcygpIHsgbV9oYXNPcGVuRGF0YWJhc2VzID0gdHJ1
ZTsgfQotICAgIGJvb2wgaGFzT3BlbkRhdGFiYXNlcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzT3Bl
bkRhdGFiYXNlczsgfQotICAgIC8vIFdoZW4gdGhlIGRhdGFiYXNlIGNsZWFudXAgaXMgZG9uZSwg
Y2xlYW51cFN5bmMgd2lsbCBiZSBzaWduYWxsZWQuCi0gICAgdm9pZCBzdG9wRGF0YWJhc2VzKERh
dGFiYXNlVGFza1N5bmNocm9uaXplciopOwogI2VuZGlmCiAgICAgdmlydHVhbCBib29sIGlzQ29u
dGV4dFRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNK
U0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0ID0gMDsKQEAgLTIyNCwxMSArMjE1LDYgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZDsKICAgICBBY3Rp
dmVET01PYmplY3Q6OlJlYXNvbkZvclN1c3BlbnNpb24gbV9yZWFzb25Gb3JTdXNwZW5kaW5nQWN0
aXZlRE9NT2JqZWN0czsKIAotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgUmVmUHRyPERh
dGFiYXNlVGhyZWFkPiBtX2RhdGFiYXNlVGhyZWFkOwotICAgIGJvb2wgbV9oYXNPcGVuRGF0YWJh
c2VzOyAvLyBUaGlzIG5ldmVyIGNoYW5nZXMgYmFjayB0byBmYWxzZSwgZXZlbiBhZnRlciB0aGUg
ZGF0YWJhc2UgdGhyZWFkIGlzIGNsb3NlZC4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEJMT0IpIHx8
IEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICBSZWZQdHI8RmlsZVRocmVhZD4gbV9maWxlVGhyZWFk
OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCShyZXZpc2lv
biAxMDkyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFBhZ2UuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJE
YXRhYmFzZUNvbnRleHQuaCIKICNpbmNsdWRlICJEZXZpY2VNb3Rpb25Db250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKQEAgLTEyMCw3ICsxMjEsNyBAQCBzdGF0aWMgYm9vbCBsb2dDYW5DYWNoZUZyYW1lRGVj
aXNpb24oRnJhCiAgICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CiAgICAgICAgIH0KICNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCktPmhh
c09wZW5EYXRhYmFzZXMoKSkgeworICAgICAgICBpZiAoRGF0YWJhc2VDb250ZXh0OjpoYXNPcGVu
RGF0YWJhc2VzKGZyYW1lLT5kb2N1bWVudCgpKSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1G
cmFtZSBoYXMgb3BlbiBkYXRhYmFzZSBoYW5kbGVzIik7CiAgICAgICAgICAgICBjYW5ub3RDYWNo
ZSA9IHRydWU7CiAgICAgICAgIH0KQEAgLTI2Myw3ICsyNjQsNyBAQCBib29sIFBhZ2VDYWNoZTo6
Y2FuQ2FjaGVQYWdlQ29udGFpbmluZ1RoCiAgICAgICAgICYmICghZG9jdW1lbnQtPnVybCgpLnBy
b3RvY29sSXMoImh0dHBzIikgfHwgKCFkb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5jYWNoZUNv
bnRyb2xDb250YWluc05vQ2FjaGUoKSAmJiAhZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuY2Fj
aGVDb250cm9sQ29udGFpbnNOb1N0b3JlKCkpKQogICAgICAgICAmJiAoIWZyYW1lLT5kb21XaW5k
b3coKSB8fCAhZnJhbWUtPmRvbVdpbmRvdygpLT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVz
KCkudW5sb2FkRXZlbnQpKQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgICAgICYmICFk
b2N1bWVudC0+aGFzT3BlbkRhdGFiYXNlcygpCisgICAgICAgICYmICFEYXRhYmFzZUNvbnRleHQ6
Omhhc09wZW5EYXRhYmFzZXMoZG9jdW1lbnQpCiAjZW5kaWYKICNpZiBFTkFCTEUoU0hBUkVEX1dP
UktFUlMpCiAgICAgICAgICYmICFTaGFyZWRXb3JrZXJSZXBvc2l0b3J5OjpoYXNTaGFyZWRXb3Jr
ZXJzKGRvY3VtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShy
ZXZpc2lvbiAxMDkyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50
LmgiCiAjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGlj
eS5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgogI2luY2x1ZGUgIkRPTUltcGxlbWVu
dGF0aW9uLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
QEAgLTQxOCw3ICs0MTksOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyhVbmxvYWRF
dmVuCiAgICAgICAgIGRvYy0+c2V0UmVhZHlTdGF0ZShEb2N1bWVudDo6Q29tcGxldGUpOwogCiAj
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICAgICAgZG9jLT5zdG9wRGF0YWJhc2VzKDApOwor
ICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHRoZSBEYXRhYmFzZUNvbnRleHQgd2F0Y2ggZm9yIHNv
bWV0aGluZyBsaWtlIEFjdGl2ZURPTU9iamVjdDo6c3RvcCgpIHJhdGhlciB0aGFuIGJlaW5nIHNw
ZWNpYWwtY2FzZWQgaGVyZT8KKyAgICAgICAgRGF0YWJhc2VDb250ZXh0OjpzdG9wRGF0YWJhc2Vz
KGRvYywgMCk7CiAjZW5kaWYKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1N1cHBsZW1lbnRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U3VwcGxlbWVudGFibGUuaAkocmV2aXNpb24gMTA5Mjg2KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU3VwcGxlbWVudGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTcsMTYgKzU4LDE2
IEBAIHB1YmxpYzoKICAgICB2b2lkIHByb3ZpZGVTdXBwbGVtZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYga2V5LCBQYXNzT3duUHRyPFN1cHBsZW1lbnQ8VD4gPiBzdXBwbGVtZW50KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKCFtX3N1cHBsZW1lbnRzLmdldChrZXkuaW1wbCgpKSk7Ci0gICAgICAgIG1f
c3VwcGxlbWVudHMuc2V0KGtleS5pbXBsKCksIHN1cHBsZW1lbnQpOworICAgICAgICBtX3N1cHBs
ZW1lbnRzLnNldChrZXksIHN1cHBsZW1lbnQpOwogICAgIH0KIAogICAgIFN1cHBsZW1lbnQ8VD4q
IHJlcXVpcmVTdXBwbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYga2V5KQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fc3VwcGxlbWVudHMuZ2V0KGtleS5pbXBsKCkpOworICAgICAgICByZXR1cm4g
bV9zdXBwbGVtZW50cy5nZXQoa2V5KTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBI
YXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBPd25QdHI8U3VwcGxlbWVudDxUPiA+ID4gU3VwcGxl
bWVudE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBPd25QdHI8U3VwcGxl
bWVudDxUPiA+ID4gU3VwcGxlbWVudE1hcDsKICAgICBTdXBwbGVtZW50TWFwIG1fc3VwcGxlbWVu
dHM7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0Fic3RyYWN0RGF0YWJhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQWJzdHJhY3REYXRhYmFz
ZS5jcHAJKHJldmlzaW9uIDEwOTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQWJzdHJh
Y3REYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiRGF0YWJhc2VBdXRob3JpemVyLmgiCisjaW5j
bHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTE4OCw2
ICsxODksNyBAQCBjb25zdCBjaGFyKiBBYnN0cmFjdERhdGFiYXNlOjpkYXRhYmFzZUluCiBBYnN0
cmFjdERhdGFiYXNlOjpBYnN0cmFjdERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgRGF0YWJhc2VUeXBlIGRhdGFiYXNl
VHlwZSkKICAgICA6IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KQorICAgICwgbV9k
YXRhYmFzZUNvbnRleHQoRGF0YWJhc2VDb250ZXh0Ojpmcm9tKGNvbnRleHQpKQogICAgICwgbV9u
YW1lKG5hbWUuaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX2V4cGVjdGVkVmVyc2lvbihleHBlY3Rl
ZFZlcnNpb24uaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX2Rpc3BsYXlOYW1lKGRpc3BsYXlOYW1l
Lmlzb2xhdGVkQ29weSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9BYnN0cmFjdERh
dGFiYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9BYnN0cmFjdERh
dGFiYXNlLmgJKHJldmlzaW9uIDEwOTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQWJz
dHJhY3REYXRhYmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIERhdGFiYXNlQXV0aG9yaXplcjsKK2NsYXNzIERhdGFiYXNl
Q29udGV4dDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZWN1cml0eU9y
aWdpbjsKIApAQCAtODYsNiArODcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG1hcmtB
c0RlbGV0ZWRBbmRDbG9zZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbW1lZGlhdGVs
eSgpID0gMDsKIAorICAgIERhdGFiYXNlQ29udGV4dCogZGF0YWJhc2VDb250ZXh0KCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhYmFzZUNvbnRleHQ7IH0KKwogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBj
bGFzcyBDaGFuZ2VWZXJzaW9uV3JhcHBlcjsKICAgICBmcmllbmQgY2xhc3MgU1FMU3RhdGVtZW50
OwpAQCAtMTI0LDggKzEyNyw5IEBAIHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBkYXRhYmFzZUluZm9UYWJsZU5hbWUoKTsKIAotICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25D
b250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBtX2NvbnRleHRUaHJlYWRTZWN1cml0eU9yaWdpbjsKKyAgICBSZWZQdHI8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OworICAgIERhdGFiYXNlQ29u
dGV4dCogbV9kYXRhYmFzZUNvbnRleHQ7IC8vIE93bmVkIGJ5IG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC4KIAogICAgIFN0cmluZyBtX25hbWU7CiAgICAgU3RyaW5nIG1fZXhwZWN0ZWRWZXJzaW9u
OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAJKHJldmlzaW9uIDEwOTI4NikK
KysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQ2hhbmdlVmVyc2lvbldyYXBwZXIuaCIKICNpbmNs
dWRlICJDcm9zc1RocmVhZFRhc2suaCIKICNpbmNsdWRlICJEYXRhYmFzZUNhbGxiYWNrLmgiCisj
aW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUYXNrLmgiCiAj
aW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIK
QEAgLTEwOSw3ICsxMTAsNyBAQCBQYXNzUmVmUHRyPERhdGFiYXNlPiBEYXRhYmFzZTo6b3BlbkRh
dGFiCiAKICAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXREYXRhYmFzZURldGFpbHMo
Y29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNp
emUpOwogCi0gICAgY29udGV4dC0+c2V0SGFzT3BlbkRhdGFiYXNlcygpOworICAgIERhdGFiYXNl
Q29udGV4dDo6ZnJvbShjb250ZXh0KS0+c2V0SGFzT3BlbkRhdGFiYXNlcygpOwogCiAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRPcGVuRGF0YWJhc2UoY29udGV4dCwgZGF0YWJhc2Us
IGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmhvc3QoKSwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9u
KTsKIApAQCAtMTMwLDcgKzEzMSw3IEBAIERhdGFiYXNlOjpEYXRhYmFzZShTY3JpcHRFeGVjdXRp
b25Db250ZXgKICAgICBtX2RhdGFiYXNlVGhyZWFkU2VjdXJpdHlPcmlnaW4gPSBtX2NvbnRleHRU
aHJlYWRTZWN1cml0eU9yaWdpbi0+aXNvbGF0ZWRDb3B5KCk7CiAKICAgICBTY3JpcHRDb250cm9s
bGVyOjppbml0aWFsaXplVGhyZWFkaW5nKCk7Ci0gICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKSk7CisgICAgQVNTRVJUKGRhdGFiYXNlQ29udGV4dCgp
LT5kYXRhYmFzZVRocmVhZCgpKTsKIH0KIAogY2xhc3MgRGVyZWZDb250ZXh0VGFzayA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKQEAgLTE3OSwxMiArMTgwLDEyIEBAIFN0
cmluZyBEYXRhYmFzZTo6dmVyc2lvbigpIGNvbnN0CiBib29sIERhdGFiYXNlOjpvcGVuQW5kVmVy
aWZ5VmVyc2lvbihib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBFeGNlcHRpb25Db2RlJiBl
LCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKICAgICBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIg
c3luY2hyb25pemVyOwotICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFz
ZVRocmVhZCgpIHx8IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+
dGVybWluYXRpb25SZXF1ZXN0ZWQoJnN5bmNocm9uaXplcikpCisgICAgaWYgKCFkYXRhYmFzZUNv
bnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKSB8fCBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VU
aHJlYWQoKS0+dGVybWluYXRpb25SZXF1ZXN0ZWQoJnN5bmNocm9uaXplcikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwogICAgIE93blB0cjxEYXRh
YmFzZU9wZW5UYXNrPiB0YXNrID0gRGF0YWJhc2VPcGVuVGFzazo6Y3JlYXRlKHRoaXMsIHNldFZl
cnNpb25Jbk5ld0RhdGFiYXNlLCAmc3luY2hyb25pemVyLCBlLCBlcnJvck1lc3NhZ2UsIHN1Y2Nl
c3MpOwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+c2No
ZWR1bGVJbW1lZGlhdGVUYXNrKHRhc2sucmVsZWFzZSgpKTsKKyAgICBkYXRhYmFzZUNvbnRleHQo
KS0+ZGF0YWJhc2VUaHJlYWQoKS0+c2NoZWR1bGVJbW1lZGlhdGVUYXNrKHRhc2sucmVsZWFzZSgp
KTsKICAgICBzeW5jaHJvbml6ZXIud2FpdEZvclRhc2tDb21wbGV0aW9uKCk7CiAKICAgICByZXR1
cm4gc3VjY2VzczsKQEAgLTE5MiwyNyArMTkzLDI3IEBAIGJvb2wgRGF0YWJhc2U6Om9wZW5BbmRW
ZXJpZnlWZXJzaW9uKGJvb2wKIAogdm9pZCBEYXRhYmFzZTo6bWFya0FzRGVsZXRlZEFuZENsb3Nl
KCkKIHsKLSAgICBpZiAobV9kZWxldGVkIHx8ICFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRh
dGFiYXNlVGhyZWFkKCkpCisgICAgaWYgKG1fZGVsZXRlZCB8fCAhZGF0YWJhc2VDb250ZXh0KCkt
PmRhdGFiYXNlVGhyZWFkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIExPRyhTdG9yYWdlQVBJ
LCAiTWFya2luZyAlcyAoJXApIGFzIGRlbGV0ZWQiLCBzdHJpbmdJZGVudGlmaWVyKCkuYXNjaWko
KS5kYXRhKCksIHRoaXMpOwogICAgIG1fZGVsZXRlZCA9IHRydWU7CiAKICAgICBEYXRhYmFzZVRh
c2tTeW5jaHJvbml6ZXIgc3luY2hyb25pemVyOwotICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnRlcm1pbmF0aW9uUmVxdWVzdGVkKCZzeW5jaHJvbml6
ZXIpKSB7CisgICAgaWYgKGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT50ZXJt
aW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkgewogICAgICAgICBMT0coU3RvcmFnZUFQ
SSwgIkRhdGFiYXNlIGhhbmRsZSAlcCBpcyBvbiBhIHRlcm1pbmF0ZWQgRGF0YWJhc2VUaHJlYWQs
IGNhbm5vdCBiZSBtYXJrZWQgZm9yIG5vcm1hbCBjbG9zdXJlXG4iLCB0aGlzKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIE93blB0cjxEYXRhYmFzZUNsb3NlVGFzaz4gdGFzayA9IERh
dGFiYXNlQ2xvc2VUYXNrOjpjcmVhdGUodGhpcywgJnN5bmNocm9uaXplcik7Ci0gICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRh
c2sodGFzay5yZWxlYXNlKCkpOworICAgIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVh
ZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRhc2sodGFzay5yZWxlYXNlKCkpOwogICAgIHN5bmNocm9u
aXplci53YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKIH0KIAogdm9pZCBEYXRhYmFzZTo6Y2xvc2Uo
KQogewotICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFk
KCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5nZXRUaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoZGF0YWJh
c2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCkpOworICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkp
OwogCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV90cmFuc2FjdGlvbkluUHJv
Z3Jlc3NNdXRleCk7CkBAIC0yMjUsMTUgKzIyNiwxNSBAQCB2b2lkIERhdGFiYXNlOjpjbG9zZSgp
CiAKICAgICAvLyBNdXN0IHJlZigpIGJlZm9yZSBjYWxsaW5nIGRhdGFiYXNlVGhyZWFkKCktPnJl
Y29yZERhdGFiYXNlQ2xvc2VkKCkuCiAgICAgUmVmUHRyPERhdGFiYXNlPiBwcm90ZWN0ID0gdGhp
czsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnJlY29y
ZERhdGFiYXNlQ2xvc2VkKHRoaXMpOwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0
YWJhc2VUaHJlYWQoKS0+dW5zY2hlZHVsZURhdGFiYXNlVGFza3ModGhpcyk7CisgICAgZGF0YWJh
c2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnJlY29yZERhdGFiYXNlQ2xvc2VkKHRoaXMp
OworICAgIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT51bnNjaGVkdWxlRGF0
YWJhc2VUYXNrcyh0aGlzKTsKICAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5yZW1vdmVP
cGVuRGF0YWJhc2UodGhpcyk7CiB9CiAKIHZvaWQgRGF0YWJhc2U6OmNsb3NlSW1tZWRpYXRlbHko
KQogewogICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVh
ZCgpKTsKLSAgICBEYXRhYmFzZVRocmVhZCogZGF0YWJhc2VUaHJlYWQgPSBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCk7CisgICAgRGF0YWJhc2VUaHJlYWQqIGRhdGFi
YXNlVGhyZWFkID0gZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCk7CiAgICAgaWYg
KGRhdGFiYXNlVGhyZWFkICYmICFkYXRhYmFzZVRocmVhZC0+dGVybWluYXRpb25SZXF1ZXN0ZWQo
KSAmJiBvcGVuZWQoKSkgewogICAgICAgICBsb2dFcnJvck1lc3NhZ2UoImZvcmNpYmx5IGNsb3Np
bmcgZGF0YWJhc2UiKTsKICAgICAgICAgZGF0YWJhc2VUaHJlYWQtPnNjaGVkdWxlSW1tZWRpYXRl
VGFzayhEYXRhYmFzZUNsb3NlVGFzazo6Y3JlYXRlKHRoaXMsIDApKTsKQEAgLTI0OCw4ICsyNDks
OCBAQCB1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2U6Om1heGltdW1TaXplCiBib29sIERhdGFi
YXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBF
eGNlcHRpb25Db2RlJiBlLCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKICAgICBpZiAoQWJzdHJh
Y3REYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkoc2V0VmVyc2lvbkluTmV3RGF0YWJhc2Us
IGUsIGVycm9yTWVzc2FnZSkpIHsKLSAgICAgICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+ZGF0YWJhc2VUaHJlYWQoKSkKLSAgICAgICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+ZGF0YWJhc2VUaHJlYWQoKS0+cmVjb3JkRGF0YWJhc2VPcGVuKHRoaXMpOworICAgICAgICBp
ZiAoZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCkpCisgICAgICAgICAgICBkYXRh
YmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+cmVjb3JkRGF0YWJhc2VPcGVuKHRoaXMp
OwogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTMxMSwyNiArMzEyLDI2IEBAIHZv
aWQgRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24oKQogICAgIGlmIChtX2lzVHJhbnNhY3Rp
b25RdWV1ZUVuYWJsZWQgJiYgIW1fdHJhbnNhY3Rpb25RdWV1ZS5pc0VtcHR5KCkpCiAgICAgICAg
IHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvblF1ZXVlLnRha2VGaXJzdCgpOwogCi0gICAgaWYg
KHRyYW5zYWN0aW9uICYmIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQo
KSkgeworICAgIGlmICh0cmFuc2FjdGlvbiAmJiBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VU
aHJlYWQoKSkgewogICAgICAgICBPd25QdHI8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+IHRhc2sg
PSBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzazo6Y3JlYXRlKHRyYW5zYWN0aW9uKTsKICAgICAgICAg
TE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrICVwIGZv
ciB0cmFuc2FjdGlvbiAlcFxuIiwgdGFzay5nZXQoKSwgdGFzay0+dHJhbnNhY3Rpb24oKSk7CiAg
ICAgICAgIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gdHJ1ZTsKLSAgICAgICAgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZVRhc2sodGFzay5yZWxl
YXNlKCkpOworICAgICAgICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+c2No
ZWR1bGVUYXNrKHRhc2sucmVsZWFzZSgpKTsKICAgICB9IGVsc2UKICAgICAgICAgbV90cmFuc2Fj
dGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTsKIH0KIAogdm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFu
c2FjdGlvblN0ZXAoU1FMVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBib29sIGltbWVkaWF0ZWx5
KQogewotICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgp
KQorICAgIGlmICghZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIE93blB0cjxEYXRhYmFzZVRyYW5zYWN0aW9uVGFzaz4gdGFzayA9IERh
dGFiYXNlVHJhbnNhY3Rpb25UYXNrOjpjcmVhdGUodHJhbnNhY3Rpb24pOwogICAgIExPRyhTdG9y
YWdlQVBJLCAiU2NoZWR1bGluZyBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzayAlcCBmb3IgdGhlIHRy
YW5zYWN0aW9uIHN0ZXBcbiIsIHRhc2suZ2V0KCkpOwogICAgIGlmIChpbW1lZGlhdGVseSkKLSAg
ICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVs
ZUltbWVkaWF0ZVRhc2sodGFzay5yZWxlYXNlKCkpOworICAgICAgICBkYXRhYmFzZUNvbnRleHQo
KS0+ZGF0YWJhc2VUaHJlYWQoKS0+c2NoZWR1bGVJbW1lZGlhdGVUYXNrKHRhc2sucmVsZWFzZSgp
KTsKICAgICBlbHNlCi0gICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VU
aHJlYWQoKS0+c2NoZWR1bGVUYXNrKHRhc2sucmVsZWFzZSgpKTsKKyAgICAgICAgZGF0YWJhc2VD
b250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxlVGFzayh0YXNrLnJlbGVhc2UoKSk7
CiB9CiAKIGNsYXNzIERlbGl2ZXJQZW5kaW5nQ2FsbGJhY2tUYXNrIDogcHVibGljIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewpAQCAtMzkwLDEyICszOTEsMTIgQEAgVmVjdG9yPFN0cmlu
Zz4gRGF0YWJhc2U6OnBlcmZvcm1HZXRUYWJsZQogCiBTUUxUcmFuc2FjdGlvbkNsaWVudCogRGF0
YWJhc2U6OnRyYW5zYWN0aW9uQ2xpZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT50cmFuc2FjdGlvbkNsaWVudCgpOwor
ICAgIHJldHVybiBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+dHJhbnNhY3Rp
b25DbGllbnQoKTsKIH0KIAogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvciogRGF0YWJhc2U6OnRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IoKSBjb25zdAogewotICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKTsK
KyAgICByZXR1cm4gZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IoKTsKIH0KIAogVmVjdG9yPFN0cmluZz4gRGF0YWJhc2U6OnRhYmxlTmFt
ZXMoKQpAQCAtNDA0LDExICs0MDUsMTEgQEAgVmVjdG9yPFN0cmluZz4gRGF0YWJhc2U6OnRhYmxl
TmFtZXMoKQogICAgIC8vIGluIGRlYWxpbmcgd2l0aCB0aGVtLiBIb3dldmVyLCBpZiB0aGUgY29k
ZSBjaGFuZ2VzLCB0aGlzIG1heSBub3QgYmUgdHJ1ZSBhbnltb3JlLgogICAgIFZlY3RvcjxTdHJp
bmc+IHJlc3VsdDsKICAgICBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIgc3luY2hyb25pemVyOwot
ICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpIHx8IG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+dGVybWluYXRpb25SZXF1
ZXN0ZWQoJnN5bmNocm9uaXplcikpCisgICAgaWYgKCFkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJh
c2VUaHJlYWQoKSB8fCBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+dGVybWlu
YXRpb25SZXF1ZXN0ZWQoJnN5bmNocm9uaXplcikpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAK
ICAgICBPd25QdHI8RGF0YWJhc2VUYWJsZU5hbWVzVGFzaz4gdGFzayA9IERhdGFiYXNlVGFibGVO
YW1lc1Rhc2s6OmNyZWF0ZSh0aGlzLCAmc3luY2hyb25pemVyLCByZXN1bHQpOwotICAgIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+c2NoZWR1bGVJbW1lZGlhdGVU
YXNrKHRhc2sucmVsZWFzZSgpKTsKKyAgICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJl
YWQoKS0+c2NoZWR1bGVJbW1lZGlhdGVUYXNrKHRhc2sucmVsZWFzZSgpKTsKICAgICBzeW5jaHJv
bml6ZXIud2FpdEZvclRhc2tDb21wbGV0aW9uKCk7CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAt
NDE4LDcgKzQxOSw3IEBAIFNlY3VyaXR5T3JpZ2luKiBEYXRhYmFzZTo6c2VjdXJpdHlPcmlnaW4K
IHsKICAgICBpZiAobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSkK
ICAgICAgICAgcmV0dXJuIG1fY29udGV4dFRocmVhZFNlY3VyaXR5T3JpZ2luLmdldCgpOwotICAg
IGlmIChjdXJyZW50VGhyZWFkKCkgPT0gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFz
ZVRocmVhZCgpLT5nZXRUaHJlYWRJRCgpKQorICAgIGlmIChjdXJyZW50VGhyZWFkKCkgPT0gZGF0
YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkpCiAgICAgICAg
IHJldHVybiBtX2RhdGFiYXNlVGhyZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCk7CiAgICAgcmV0dXJu
IDA7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ29udGV4dC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNvbnRleHQuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNvbnRleHQu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKKworI2lmIEVOQUJMRShT
UUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIkRhdGFiYXNl
VGFzay5oIgorI2luY2x1ZGUgIkRhdGFiYXNlVGhyZWFkLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RhdGljIERhdGFiYXNlQ29udGV4dCogZXhpc3RpbmdEYXRhYmFzZUNvbnRleHRGcm9t
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PERhdGFiYXNlQ29udGV4dCo+KFN1cHBsZW1lbnQ8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD46
OmZyb20oY29udGV4dCwgIkRhdGFiYXNlQ29udGV4dCIpKTsKK30KKworRGF0YWJhc2VDb250ZXh0
OjpEYXRhYmFzZUNvbnRleHQoKQorICAgIDogbV9oYXNPcGVuRGF0YWJhc2VzKGZhbHNlKQorewor
fQorCitEYXRhYmFzZUNvbnRleHQ6On5EYXRhYmFzZUNvbnRleHQoKQoreworICAgIGlmIChtX2Rh
dGFiYXNlVGhyZWFkKSB7CisgICAgICAgIEFTU0VSVChtX2RhdGFiYXNlVGhyZWFkLT50ZXJtaW5h
dGlvblJlcXVlc3RlZCgpKTsKKyAgICAgICAgbV9kYXRhYmFzZVRocmVhZCA9IDA7CisgICAgfQor
fQorCitEYXRhYmFzZUNvbnRleHQqIERhdGFiYXNlQ29udGV4dDo6ZnJvbShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQoreworICAgIERhdGFiYXNlQ29udGV4dCogc3VwcGxlbWVudCA9
IGV4aXN0aW5nRGF0YWJhc2VDb250ZXh0RnJvbShjb250ZXh0KTsKKyAgICBpZiAoIXN1cHBsZW1l
bnQpIHsKKyAgICAgICAgc3VwcGxlbWVudCA9IG5ldyBEYXRhYmFzZUNvbnRleHQoKTsKKyAgICAg
ICAgcHJvdmlkZVRvKGNvbnRleHQsICJEYXRhYmFzZUNvbnRleHQiLCBhZG9wdFB0cihzdXBwbGVt
ZW50KSk7CisgICAgICAgIEFTU0VSVChzdXBwbGVtZW50ID09IGV4aXN0aW5nRGF0YWJhc2VDb250
ZXh0RnJvbShjb250ZXh0KSk7CisgICAgfQorICAgIHJldHVybiBzdXBwbGVtZW50OworfQorCitE
YXRhYmFzZVRocmVhZCogRGF0YWJhc2VDb250ZXh0OjpkYXRhYmFzZVRocmVhZCgpCit7CisgICAg
aWYgKCFtX2RhdGFiYXNlVGhyZWFkICYmICFtX2hhc09wZW5EYXRhYmFzZXMpIHsKKyAgICAgICAg
Ly8gQ3JlYXRlIHRoZSBkYXRhYmFzZSB0aHJlYWQgb24gZmlyc3QgcmVxdWVzdCAtIGJ1dCBub3Qg
aWYgYXQgbGVhc3Qgb25lIGRhdGFiYXNlIHdhcyBhbHJlYWR5IG9wZW5lZCwKKyAgICAgICAgLy8g
YmVjYXVzZSBpbiB0aGF0IGNhc2Ugd2UgYWxyZWFkeSBoYWQgYSBkYXRhYmFzZSB0aHJlYWQgYW5k
IHRlcm1pbmF0ZWQgaXQgYW5kIHNob3VsZCBub3QgY3JlYXRlIGFub3RoZXIuCisgICAgICAgIG1f
ZGF0YWJhc2VUaHJlYWQgPSBEYXRhYmFzZVRocmVhZDo6Y3JlYXRlKCk7CisgICAgICAgIGlmICgh
bV9kYXRhYmFzZVRocmVhZC0+c3RhcnQoKSkKKyAgICAgICAgICAgIG1fZGF0YWJhc2VUaHJlYWQg
PSAwOworICAgIH0KKworICAgIHJldHVybiBtX2RhdGFiYXNlVGhyZWFkLmdldCgpOworfQorCiti
b29sIERhdGFiYXNlQ29udGV4dDo6aGFzT3BlbkRhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQoreworICAgIC8vIFdlIGRvbid0IHVzZSBEYXRhYmFzZUNvbnRleHQ6OmZy
b20gYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGNhdXNlCisgICAgLy8gRGF0YWJhc2VDb250ZXh0
IHRvIGJlIGFsbG9jYXRlZCBpZiB3ZSBkb24ndCBoYXZlIG9uZSBhbHJlYWR5LgorICAgIERhdGFi
YXNlQ29udGV4dCogZGF0YWJhc2VDb250ZXh0ID0gZXhpc3RpbmdEYXRhYmFzZUNvbnRleHRGcm9t
KGNvbnRleHQpOworICAgIGlmICghZGF0YWJhc2VDb250ZXh0KQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIGRhdGFiYXNlQ29udGV4dC0+bV9oYXNPcGVuRGF0YWJhc2VzOworfQor
Cit2b2lkIERhdGFiYXNlQ29udGV4dDo6c3RvcERhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIqIGNsZWFudXBTeW5jKQorewor
ICAgIC8vIFdlIGRvbid0IHVzZSBEYXRhYmFzZUNvbnRleHQ6OmZyb20gYmVjYXVzZSB3ZSBkb24n
dCB3YW50IHRvIGNhdXNlCisgICAgLy8gRGF0YWJhc2VDb250ZXh0IHRvIGJlIGFsbG9jYXRlZCBp
ZiB3ZSBkb24ndCBoYXZlIG9uZSBhbHJlYWR5LgorICAgIERhdGFiYXNlQ29udGV4dCogZGF0YWJh
c2VDb250ZXh0ID0gZXhpc3RpbmdEYXRhYmFzZUNvbnRleHRGcm9tKGNvbnRleHQpOworCisgICAg
aWYgKGRhdGFiYXNlQ29udGV4dCAmJiBkYXRhYmFzZUNvbnRleHQtPm1fZGF0YWJhc2VUaHJlYWQp
CisgICAgICAgIGRhdGFiYXNlQ29udGV4dC0+bV9kYXRhYmFzZVRocmVhZC0+cmVxdWVzdFRlcm1p
bmF0aW9uKGNsZWFudXBTeW5jKTsKKyAgICBlbHNlIGlmIChjbGVhbnVwU3luYykKKyAgICAgICAg
Y2xlYW51cFN5bmMtPnRhc2tDb21wbGV0ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvRGF0YWJhc2VDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9EYXRhYmFzZUNvbnRleHQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvRGF0YWJhc2VDb250ZXh0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICoKKyAqLworCisjaWZuZGVmIERhdGFiYXNlQ29udGV4dF9oCisjZGVmaW5lIERhdGFiYXNl
Q29udGV4dF9oCisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiU3VwcGxl
bWVudGFibGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEYXRhYmFzZTsKK2Ns
YXNzIERhdGFiYXNlVGFza1N5bmNocm9uaXplcjsKK2NsYXNzIERhdGFiYXNlVGhyZWFkOworY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworY2xhc3MgRGF0YWJhc2VDb250ZXh0IDogcHVi
bGljIFN1cHBsZW1lbnQ8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4geworcHVibGljOgorICAgIHZp
cnR1YWwgfkRhdGFiYXNlQ29udGV4dCgpOworICAgIHN0YXRpYyBEYXRhYmFzZUNvbnRleHQqIGZy
b20oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCisgICAgRGF0YWJhc2VUaHJlYWQqIGRhdGFi
YXNlVGhyZWFkKCk7CisKKyAgICB2b2lkIHNldEhhc09wZW5EYXRhYmFzZXMoKSB7IG1faGFzT3Bl
bkRhdGFiYXNlcyA9IHRydWU7IH0KKworICAgIHN0YXRpYyBib29sIGhhc09wZW5EYXRhYmFzZXMo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCisgICAgLy8gV2hlbiB0aGUgZGF0YWJhc2UgY2xl
YW51cCBpcyBkb25lLCBjbGVhbnVwU3luYyB3aWxsIGJlIHNpZ25hbGxlZC4KKyAgICBzdGF0aWMg
dm9pZCBzdG9wRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBEYXRhYmFzZVRhc2tT
eW5jaHJvbml6ZXIqKTsKKworcHJpdmF0ZToKKyAgICBEYXRhYmFzZUNvbnRleHQoKTsKKworICAg
IFJlZlB0cjxEYXRhYmFzZVRocmVhZD4gbV9kYXRhYmFzZVRocmVhZDsKKyAgICBib29sIG1faGFz
T3BlbkRhdGFiYXNlczsgLy8gVGhpcyBuZXZlciBjaGFuZ2VzIGJhY2sgdG8gZmFsc2UsIGV2ZW4g
YWZ0ZXIgdGhlIGRhdGFiYXNlIHRocmVhZCBpcyBjbG9zZWQuCit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjZW5kaWYgLy8g
RGF0YWJhc2VDb250ZXh0X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNh
Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNh
Y3Rpb24uY3BwCShyZXZpc2lvbiAxMDkyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1NR
TFRyYW5zYWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5j
bHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJEYXRhYmFzZUF1dGhvcml6ZXIuaCIKKyNpbmNs
dWRlICJEYXRhYmFzZUNvbnRleHQuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC0xNjMsNyAr
MTY0LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6Y2hlY2tBbmRIYW5kbGVDbG9zZQogICAgIG1f
ZXJyb3JDYWxsYmFja1dyYXBwZXIuY2xlYXIoKTsKIAogICAgIC8vIFRoZSBuZXh0IHN0ZXBzIHNo
b3VsZCBiZSBleGVjdXRlZCBvbmx5IGlmIHdlJ3JlIG9uIHRoZSBEQiB0aHJlYWQuCi0gICAgaWYg
KGN1cnJlbnRUaHJlYWQoKSAhPSBkYXRhYmFzZSgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PmRhdGFiYXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkpCisgICAgaWYgKGN1cnJlbnRUaHJlYWQo
KSAhPSBkYXRhYmFzZSgpLT5kYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0
VGhyZWFkSUQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIGN1cnJlbnQgU1FMaXRl
IHRyYW5zYWN0aW9uIHNob3VsZCBiZSBzdG9wcGVkLCBhcyB3ZWxsCkBAIC0yMTUsNyArMjE2LDcg
QEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6cGVyZm9ybVBlbmRpbmdDYWxsYgogCiB2b2lkIFNRTFRy
YW5zYWN0aW9uOjpub3RpZnlEYXRhYmFzZVRocmVhZElzU2h1dHRpbmdEb3duKCkKIHsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IGRhdGFiYXNlKCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBkYXRhYmFzZSgpLT5kYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJl
YWQoKS0+Z2V0VGhyZWFkSUQoKSk7CiAKICAgICAvLyBJZiB0aGUgdHJhbnNhY3Rpb24gaXMgaW4g
cHJvZ3Jlc3MsIHdlIHNob3VsZCByb2xsIGl0IGJhY2sgaGVyZSwgc2luY2UgdGhpcyBpcyBvdXIg
bGFzdAogICAgIC8vIG9wb3J0dW5pdHkgdG8gZG8gc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhpcyB0
cmFuc2FjdGlvbiBvbiB0aGUgREIgdGhyZWFkLgpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyVGhyZWFkLmNwcAkocmV2aXNpb24gMTA5Mjg2KQorKysgU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAK
ICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKIAorI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5o
IgogI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJLVVJMLmgiCkBAIC0yMTUsOCArMjE2LDkg
QEAgcHVibGljOgogICAgICAgICBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8V29ya2VyQ29udGV4dCo+KGNvbnRleHQpOwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFT
RSkKKyAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBzdG9wIHRoZSBkYXRhYmFzZXMgYXMgcGFy
dCBvZiBzdG9wQWN0aXZlRE9NT2JqZWN0cygpIGJlbG93PwogICAgICAgICBEYXRhYmFzZVRhc2tT
eW5jaHJvbml6ZXIgY2xlYW51cFN5bmM7Ci0gICAgICAgIHdvcmtlckNvbnRleHQtPnN0b3BEYXRh
YmFzZXMoJmNsZWFudXBTeW5jKTsKKyAgICAgICAgRGF0YWJhc2VDb250ZXh0OjpzdG9wRGF0YWJh
c2VzKHdvcmtlckNvbnRleHQsICZjbGVhbnVwU3luYyk7CiAjZW5kaWYKIAogICAgICAgICB3b3Jr
ZXJDb250ZXh0LT5zdG9wQWN0aXZlRE9NT2JqZWN0cygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129566</attachid>
            <date>2012-02-29 17:51:48 -0800</date>
            <delta_ts>2012-02-29 18:44:01 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-79633-20120229175146.patch</filename>
            <type>text/plain</type>
            <size>41320</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBACisyMDEyLTAyLTI5ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCBoYXMgdG9vIG1hbnkgaWZkZWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgVGhpcyBjbGFzcyBjcmVhdGVzIGEgRGF0YWJh
c2VDb250ZXh0IG9iamVjdCB0byBzdXBwbGVtZW50IHRoZQorICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0IHdpdGggZGF0YWJhc2Utc3BlY2lmaWMgaW5mb3JtYXRpb24uICBUaGlzIG5ldwor
ICAgICAgICBvYmplY3QgbGV0cyB1cyByZW1vdmUgYSBidW5jaCBvZiBkYXRhYmFzZS1zcGVjaWZp
YyAoYW5kIGlmZGVmZWQpIGxvZ2ljCisgICAgICAgIGZyb20gU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC4oY3BwfGgpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAg
KiBoaXN0b3J5L1BhZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2dDYW5DYWNoZUZy
YW1lRGVjaXNpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNhY2hlOjpjYW5DYWNoZVBhZ2VD
b250YWluaW5nVGhpc0ZyYW1lKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKiBz
dG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RE
YXRhYmFzZTo6QWJzdHJhY3REYXRhYmFzZSk6CisgICAgICAgICogc3RvcmFnZS9BYnN0cmFjdERh
dGFiYXNlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0
RGF0YWJhc2U6OmRhdGFiYXNlQ29udGV4dCk6CisgICAgICAgIChBYnN0cmFjdERhdGFiYXNlKToK
KyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OkRhdGFiYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpvcGVuQW5kVmVyaWZ5VmVyc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6bWFya0FzRGVsZXRlZEFuZENsb3NlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZTo6Y2xvc2VJbW1lZGlhdGVseSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9y
bU9wZW5BbmRWZXJpZnkpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rp
b25TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjp0cmFuc2FjdGlvbkNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6dHJhbnNhY3Rpb25Db29yZGluYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6dGFibGVOYW1lcyk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZTo6c2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2VD
b250ZXh0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlQ29udGV4dDo6RGF0YWJhc2VDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlQ29udGV4dDo6fkRhdGFiYXNlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZUNvbnRleHQ6OmZyb20pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0Ojpk
YXRhYmFzZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUNvbnRleHQ6OnN0b3BE
YXRhYmFzZXMpOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2VDb250ZXh0Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChEYXRhYmFzZUNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpzZXRIYXNPcGVuRGF0YWJhc2VzKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlQ29udGV4dDo6aGFzT3BlbkRhdGFiYXNlcyk6CisgICAgICAgICog
c3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2Fj
dGlvbjo6Y2hlY2tBbmRIYW5kbGVDbG9zZWRPckludGVycnVwdGVkRGF0YWJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246Om5vdGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0dGlu
Z0Rvd24pOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrOjpwZXJmb3JtVGFzayk6CisKIDIw
MTItMDItMjkgIERhdmlkIEJhcnRvbiAgPGRiYXJ0b25AbWF0aHNjcmliZS5jb20+CiAKICAgICAg
ICAgPG1zdWJzdXA+IHNldE5lZWRzTGF5b3V0KCkgY29ycmVjdGlvbgpJbmRleDogU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDEwOTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMzg3LDYgKzEzODcsNyBAQCBTRVQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgc3RvcmFnZS9ET01XaW5kb3dTUUxEYXRhYmFzZS5jcHAKICAgICBzdG9yYWdlL0Rh
dGFiYXNlLmNwcAogICAgIHN0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmNwcAorICAgIHN0b3Jh
Z2UvRGF0YWJhc2VDb250ZXh0LmNwcAogICAgIHN0b3JhZ2UvRGF0YWJhc2VTeW5jLmNwcAogICAg
IHN0b3JhZ2UvRGF0YWJhc2VUYXNrLmNwcAogICAgIHN0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuY3Bw
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEwOTI4NikKKysr
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTM4
NjEsMTIgKzM4NjEsMTQgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
RE9NV2luZG93U1FMRGF0YWJhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RPTVdp
bmRvd1NRTERhdGFiYXNlLmggXAorCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9EYXRhYmFzZUF1dGhvcml6ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFz
ZUNhbGxiYWNrLmggXAotCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ29udGV4dC5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvRGF0YWJhc2VDb250ZXh0LmggXAogCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
RGF0YWJhc2VEZXRhaWxzLmggXAotCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaCBc
CiAJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0Rh
dGFiYXNlVGFzay5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMDkyODYpCisrKyBT
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMzA0LDYgKzEzMDQs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBzdG9yYWdlL0RPTVdpbmRvd1NRTERhdGFiYXNlLmNwcCBc
CiAgICAgc3RvcmFnZS9EYXRhYmFzZS5jcHAgXAogICAgIHN0b3JhZ2UvRGF0YWJhc2VBdXRob3Jp
emVyLmNwcCBcCisgICAgc3RvcmFnZS9EYXRhYmFzZUNvbnRleHQuY3BwIFwKICAgICBzdG9yYWdl
L0RhdGFiYXNlU3luYy5jcHAgXAogICAgIHN0b3JhZ2UvU3RvcmFnZVRhc2suY3BwIFwKICAgICBz
dG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZp
c2lvbiAxMDkyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBj
b3B5KQpAQCAtNDE5LDYgKzQxOSw3IEBAIF9fWk43V2ViQ29yZTE1QWZmaW5lVHJhbnNmb3JtQzFF
dgogX19aTjdXZWJDb3JlMTVBcmNoaXZlUmVzb3VyY2U2Y3JlYXRlRU4zV1RGMTBQYXNzUmVmUHRy
SU5TXzEyU2hhcmVkQnVmZmVyRUVFUktOU180S1VSTEVSS05TMV82U3RyaW5nRVNBX1NBX1JLTlNf
MTZSZXNvdXJjZVJlc3BvbnNlRQogX19aTjdXZWJDb3JlMTVET01XcmFwcGVyV29ybGQxM2NsZWFy
V3JhcHBlcnNFdgogX19aTjdXZWJDb3JlMTVET01XcmFwcGVyV29ybGREMUV2CitfX1pON1dlYkNv
cmUxNURhdGFiYXNlQ29udGV4dDE2aGFzT3BlbkRhdGFiYXNlc0VQTlNfMjJTY3JpcHRFeGVjdXRp
b25Db250ZXh0RQogX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIxMmRlbGV0ZU9yaWdpbkVQ
TlNfMTRTZWN1cml0eU9yaWdpbkUKIF9fWk43V2ViQ29yZTE1RGF0YWJhc2VUcmFja2VyMTRkZWxl
dGVEYXRhYmFzZUVQTlNfMTRTZWN1cml0eU9yaWdpbkVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2Vi
Q29yZTE1RGF0YWJhc2VUcmFja2VyMTRxdW90YUZvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdp
bkUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEwOTI4NikKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtNDYzOCw2ICs0NjM4LDggQEAKICAg
ICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNlQXV0aG9yaXplci5jcHAnLAogICAgICAgICAgICAg
J3N0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0
YWJhc2VDYWxsYmFjay5oJywKKyAgICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNlQ29udGV4dC5j
cHAnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VDb250ZXh0LmgnLAogICAgICAgICAg
ICAgJ3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9EYXRh
YmFzZVN5bmMuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZVRhc2suY3BwJywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZp
c2lvbiAxMDkyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzA2ODIsNiArNzA2ODIsMTQgQEAKIAkJCQk+CiAJCQk8
L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3RvcmFnZVxEYXRhYmFzZUNv
bnRleHQuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxzdG9yYWdlXERhdGFiYXNlQ29udGV4dC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXERhdGFiYXNlU3luYy5jcHAiCiAJCQkJ
PgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTA5Mjg2KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzEz
LDYgKzMzMTMsOCBAQAogCQk5NzIwNUFCODEyMzkyOTEwMDBCMTczODAgLyogTWVkaWFEb2N1bWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcyMDVB
QjQxMjM5MjkxMDAwQjE3MzgwIC8qIE1lZGlhRG9jdW1lbnQuaCAqLzsgfTsKIAkJOTcyMDVBQkIx
MjM5MjkyNzAwQjE3MzgwIC8qIFBsdWdpbkRvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MjA1QUI5MTIzOTI5MjcwMEIxNzM4MCAvKiBQ
bHVnaW5Eb2N1bWVudC5jcHAgKi87IH07CiAJCTk3MjA1QUJDMTIzOTI5MjcwMEIxNzM4MCAvKiBQ
bHVnaW5Eb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTcyMDVBQkExMjM5MjkyNzAwQjE3MzgwIC8qIFBsdWdpbkRvY3VtZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTcyNDU4NTIxNEZC
NzI0ODAwQ0E4NzQ2IC8qIERhdGFiYXNlQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzI0NTg1MDE0RkI3MjQ4MDBDQTg3NDYgLyogRGF0
YWJhc2VDb250ZXh0LmNwcCAqLzsgfTsKKwkJOTcyNDU4NTMxNEZCNzI0ODAwQ0E4NzQ2IC8qIERh
dGFiYXNlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTcyNDU4NTExNEZCNzI0ODAwQ0E4NzQ2IC8qIERhdGFiYXNlQ29udGV4dC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3MjhDMzEzMTI2
OEU0MzkwMDQxRTg5QiAvKiBNYXJrdXBBY2N1bXVsYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzI4QzMxMTEyNjhFNDM5MDA0MUU4OUIgLyog
TWFya3VwQWNjdW11bGF0b3IuY3BwICovOyB9OwogCQk5NzI4QzMxNDEyNjhFNDM5MDA0MUU4OUIg
LyogTWFya3VwQWNjdW11bGF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk3MjhDMzEyMTI2OEU0MzkwMDQxRTg5QiAvKiBNYXJrdXBBY2N1bXVsYXRv
ci5oICovOyB9OwogCQk5NzM4ODlBMDExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRXcml0ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTczODg5
OUUxMTZFQTlEQzAwQURGMzEzIC8qIERvY3VtZW50V3JpdGVyLmNwcCAqLzsgfTsKQEAgLTEwMTgw
LDYgKzEwMTgyLDggQEAKIAkJOTcyMDVBQjQxMjM5MjkxMDAwQjE3MzgwIC8qIE1lZGlhRG9jdW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFEb2N1bWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzIwNUFCOTEyMzkyOTI3MDBCMTczODAgLyog
UGx1Z2luRG9jdW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UGx1Z2luRG9jdW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzIwNUFC
QTEyMzkyOTI3MDBCMTczODAgLyogUGx1Z2luRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGx1Z2luRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTcyNDU4NTAxNEZCNzI0ODAwQ0E4NzQ2IC8qIERhdGFiYXNlQ29udGV4dC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZUNvbnRleHQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NzI0NTg1MTE0RkI3MjQ4MDBDQTg3NDYgLyog
RGF0YWJhc2VDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFi
YXNlQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzI4QzMxMTEyNjhF
NDM5MDA0MUU4OUIgLyogTWFya3VwQWNjdW11bGF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWFya3VwQWNjdW11bGF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5NzI4QzMxMjEyNjhFNDM5MDA0MUU4OUIgLyogTWFya3VwQWNjdW11bGF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya3VwQWNjdW11bGF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTczMEJFMTQxNEVGMjg2QjAwREYwNkI5
IC8qIE5hdmlnYXRvclJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdmlnYXRvclJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzODk0LDYgKzEzODk4LDggQEAKIAkJ
CQk1MUE0NUI1NDBDQUQ3RkQ3MDAwRDJCRTkgLyogRGF0YWJhc2VBdXRob3JpemVyLmggKi8sCiAJ
CQkJQjVEMzYwMTkxMTJGOEI1NjAwNDhERUE4IC8qIERhdGFiYXNlQ2FsbGJhY2suaCAqLywKIAkJ
CQlCNTlERDY4RDExOTAyOThFMDA3RTk2ODQgLyogRGF0YWJhc2VDYWxsYmFjay5pZGwgKi8sCisJ
CQkJOTcyNDU4NTAxNEZCNzI0ODAwQ0E4NzQ2IC8qIERhdGFiYXNlQ29udGV4dC5jcHAgKi8sCisJ
CQkJOTcyNDU4NTExNEZCNzI0ODAwQ0E4NzQ2IC8qIERhdGFiYXNlQ29udGV4dC5oICovLAogCQkJ
CTUxMTZEOTc1MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCAqLywKIAkJCQlC
NTIzQ0YwMzExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmNwcCAqLywKIAkJCQlCNTIz
Q0YwNDExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmggKi8sCkBAIC0yMDY2NCw3ICsy
MDY3MCw2IEBACiAJCQkJOTc4RDA3QkQxNDVBMEY2QzAwOTY5MDhEIC8qIERPTUNvcmVFeGNlcHRp
b24uY3BwICovLAogCQkJCUJDNjBENkU4MEQyOEQ4MzQwMEI5OTE4RiAvKiBET01Db3JlRXhjZXB0
aW9uLmggKi8sCiAJCQkJQkM2MEQ2RUIwRDI4RDk5OTAwQjk5MThGIC8qIERPTUNvcmVFeGNlcHRp
b24uaWRsICovLAotCQkJCUJDOUE2MTQyMTQ2ODU5RDkwMDYwNTdGRCAvKiBFdmVudE5hbWVzLmlu
ICovLAogCQkJCUJDOUE2MTQxMTQ2ODU5RDkwMDYwNTdGRCAvKiBET01FeGNlcHRpb25zLmluICov
LAogCQkJCUE4MTg1RjM2MDk3NjU3NjUwMDU4MjZEOSAvKiBET01JbXBsZW1lbnRhdGlvbi5jcHAg
Ki8sCiAJCQkJQTgxODVGMzMwOTc2NTc2NTAwNTgyNkQ5IC8qIERPTUltcGxlbWVudGF0aW9uLmgg
Ki8sCkBAIC0yMDcxMyw2ICsyMDcxOCw3IEBACiAJCQkJQUQ0NDk1RjIxNDFGQzA4OTAwNTQxRURG
IC8qIEV2ZW50TGlzdGVuZXJNYXAuaCAqLywKIAkJCQk5Mzk4ODVDMTA4QjdFM0QxMDBFNzA3QzQg
LyogRXZlbnROYW1lcy5jcHAgKi8sCiAJCQkJOTM5ODg1QzIwOEI3RTNEMTAwRTcwN0M0IC8qIEV2
ZW50TmFtZXMuaCAqLywKKwkJCQlCQzlBNjE0MjE0Njg1OUQ5MDA2MDU3RkQgLyogRXZlbnROYW1l
cy5pbiAqLywKIAkJCQk4RjY3NTYxOTEyODhCMTdCMDA0N0FDQTMgLyogRXZlbnRRdWV1ZS5oICov
LAogCQkJCUNFNUNCMUIzMTRFREFCNkYwMEJCMjc5NSAvKiBFdmVudFNlbmRlci5oICovLAogCQkJ
CUUxMkVEQkU5MEIzMDhFMEIwMDI3MDRCNiAvKiBFdmVudFRhcmdldC5jcHAgKi8sCkBAIC0yMTU1
MCw2ICsyMTU1Niw3IEBACiAJCQkJNTE5NjExNkIwQ0FDNTY1NzAwMTBBODBDIC8qIERhdGFiYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUE0NUI1NjBDQUQ3RkQ3MDAwRDJCRTkgLyogRGF0YWJh
c2VBdXRob3JpemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNUQzNjAxQTExMkY4QjU2MDA0OERF
QTggLyogRGF0YWJhc2VDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTcyNDU4NTMxNEZC
NzI0ODAwQ0E4NzQ2IC8qIERhdGFiYXNlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEx
NkQ5NzcwQ0YxNzdCRDAwQzJCODREIC8qIERhdGFiYXNlRGV0YWlscy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjUyM0NGMEIxMTgyNjc1NDAwRUJCMjlDIC8qIERhdGFiYXNlU3luYy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTE5NjExRUEwQ0FDNzQ5QzAwMTBBODBDIC8qIERhdGFiYXNlVGFzay5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yMzg1Miw2ICsyMzg1OSw3IEBACiAJCQkJQkMyMjcyRTQwRTgyRUU5
QjAwRTdGOTc1IC8qIFN0eWxlUmFyZUluaGVyaXRlZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMjI3MkJEMEU4MkVBQUUwMEU3Rjk3NSAvKiBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzIyNzI4NzBFODJFNzA3MDBFN0Y5NzUgLyogU3R5bGVSZWZs
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEJCRUQ0RDE0RkNEQkExMDAzRjBCOTggLyog
U3R5bGVSdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTM4QTlFNTE0NzQ0MzQ2MDBCMEVEMTIg
LyogU3R5bGVTaGFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE4MDBDMEExOTUxNkUwMEE4
RUY1RiAvKiBTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBODAwQTBBMTk1MTZF
MDBBOEVGNUYgLyogU3R5bGVTaGVldExpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMjQzNTYsNyAr
MjQzNjQsNiBAQAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNv
cnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NB
dWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyog
WmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0QkJFRDREMTRGQ0RCQTEwMDNGMEI5OCAv
KiBTdHlsZVJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjQ5NjQsNiArMjQ5NzEsNyBAQAogCQkJ
CTUwRDQwNjExMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTE5NjExNkEwQ0FDNTY1NzAwMTBBODBDIC8qIERhdGFiYXNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUxQTQ1QjU3MENBRDdGRDcwMDBEMkJFOSAvKiBEYXRhYmFzZUF1
dGhvcml6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTcyNDU4NTIxNEZCNzI0ODAwQ0E4NzQ2
IC8qIERhdGFiYXNlQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTIzQ0YwQTExODI2
NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxOTYx
MUVCMENBQzc0OUMwMDEwQTgwQyAvKiBEYXRhYmFzZVRhc2suY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTE5NjExNkQwQ0FDNTY1NzAwMTBBODBDIC8qIERhdGFiYXNlVGhyZWFkLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMjY5MTcsNiArMjY5MjUsNyBAQAogCQkJCUE4MEU2REZCMEExOTkwNjcwMDdG
QjhDNSAvKiBTdHlsZVByb3BlcnR5U2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMjI3MkUz
MEU4MkVFOUIwMEU3Rjk3NSAvKiBTdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDMjI3MkJDMEU4MkVBQUUwMEU3Rjk3NSAvKiBTdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUU0QkJFRDRDMTRGQ0RCQTEwMDNGMEI5OCAv
KiBTdHlsZVJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThFQTgwMEQwQTE5NTE2RTAwQThF
RjVGIC8qIFN0eWxlU2hlZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThFQTgwMEIwQTE5NTE2
RTAwQThFRjVGIC8qIFN0eWxlU2hlZXRMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNUVC
NUU3MEU4MUJGRUYwMEIyNTk2NSAvKiBTdHlsZVN1cnJvdW5kRGF0YS5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTI3MzA5LDcgKzI3MzE4LDYgQEAKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkg
LyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0UyRTBFMTJGMEZD
OUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZENTM3MzUy
MTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFNEJC
RUQ0QzE0RkNEQkExMDAzRjBCOTggLyogU3R5bGVSdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAkocmV2
aXNpb24gMTA5Mjg2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw5ICszMCw2IEBACiAjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVk
ZSAiRE9NVGltZXIuaCIKLSNpbmNsdWRlICJEYXRhYmFzZS5oIgotI2luY2x1ZGUgIkRhdGFiYXNl
VGFzay5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVGhyZWFkLmgiCiAjaW5jbHVkZSAiRXJyb3JFdmVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5o
IgpAQCAtOTQsOSArOTEsNiBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpTY3JpcHRFeGVjdXRp
b25DCiAgICAgLCBtX2luRGVzdHJ1Y3RvcihmYWxzZSkKICAgICAsIG1faW5EaXNwYXRjaEVycm9y
RXZlbnQoZmFsc2UpCiAgICAgLCBtX2FjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoZmFsc2Up
Ci0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICAsIG1faGFzT3BlbkRhdGFiYXNlcyhmYWxz
ZSkKLSNlbmRpZgogewogfQogCkBAIC0xMTUsMTIgKzEwOSw2IEBAIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6On5TY3JpcHRFeGVjdXRpb24KICAgICAgICAgQVNTRVJUKCgqaXRlciktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSA9PSB0aGlzKTsKICAgICAgICAgKCppdGVyKS0+Y29udGV4dERlc3Ry
b3llZCgpOwogICAgIH0KLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIGlmIChtX2RhdGFi
YXNlVGhyZWFkKSB7Ci0gICAgICAgIEFTU0VSVChtX2RhdGFiYXNlVGhyZWFkLT50ZXJtaW5hdGlv
blJlcXVlc3RlZCgpKTsKLSAgICAgICAgbV9kYXRhYmFzZVRocmVhZCA9IDA7Ci0gICAgfQotI2Vu
ZGlmCiAjaWYgRU5BQkxFKEJMT0IpIHx8IEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICBpZiAobV9m
aWxlVGhyZWFkKSB7CiAgICAgICAgIG1fZmlsZVRocmVhZC0+c3RvcCgpOwpAQCAtMTMzLDMyICsx
MjEsNiBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uCiAjZW5kaWYK
IH0KIAotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0KLURhdGFiYXNlVGhyZWFkKiBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpkYXRhYmFzZVRocmVhZCgpCi17Ci0gICAgaWYgKCFtX2RhdGFiYXNl
VGhyZWFkICYmICFtX2hhc09wZW5EYXRhYmFzZXMpIHsKLSAgICAgICAgLy8gQ3JlYXRlIHRoZSBk
YXRhYmFzZSB0aHJlYWQgb24gZmlyc3QgcmVxdWVzdCAtIGJ1dCBub3QgaWYgYXQgbGVhc3Qgb25l
IGRhdGFiYXNlIHdhcyBhbHJlYWR5IG9wZW5lZCwKLSAgICAgICAgLy8gYmVjYXVzZSBpbiB0aGF0
IGNhc2Ugd2UgYWxyZWFkeSBoYWQgYSBkYXRhYmFzZSB0aHJlYWQgYW5kIHRlcm1pbmF0ZWQgaXQg
YW5kIHNob3VsZCBub3QgY3JlYXRlIGFub3RoZXIuCi0gICAgICAgIG1fZGF0YWJhc2VUaHJlYWQg
PSBEYXRhYmFzZVRocmVhZDo6Y3JlYXRlKCk7Ci0gICAgICAgIGlmICghbV9kYXRhYmFzZVRocmVh
ZC0+c3RhcnQoKSkKLSAgICAgICAgICAgIG1fZGF0YWJhc2VUaHJlYWQgPSAwOwotICAgIH0KLQot
ICAgIHJldHVybiBtX2RhdGFiYXNlVGhyZWFkLmdldCgpOwotfQotCi12b2lkIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OnN0b3BEYXRhYmFzZXMoRGF0YWJhc2VUYXNrU3luY2hyb25pemVyKiBjbGVh
bnVwU3luYykKLXsKLSAgICBBU1NFUlQoaXNDb250ZXh0VGhyZWFkKCkpOwotICAgIGlmIChtX2Rh
dGFiYXNlVGhyZWFkKQotICAgICAgICBtX2RhdGFiYXNlVGhyZWFkLT5yZXF1ZXN0VGVybWluYXRp
b24oY2xlYW51cFN5bmMpOwotICAgIGVsc2UgaWYgKGNsZWFudXBTeW5jKQotICAgICAgICBjbGVh
bnVwU3luYy0+dGFza0NvbXBsZXRlZCgpOwotfQotCi0jZW5kaWYKLQogdm9pZCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0Ojpwcm9jZXNzTWVzc2FnZVBvcnRNZXNzYWdlc1Nvb24oKQogewogICAgIHBv
c3RUYXNrKFByb2Nlc3NNZXNzYWdlc1Nvb25UYXNrOjpjcmVhdGUoKSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHJldmlzaW9uIDEwOTI4NikK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlDb250ZXh0LmgiCisjaW5jbHVkZSAi
U3VwcGxlbWVudGFibGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTU2LDE3ICs1NywxMiBA
QCBjbGFzcyBNZXNzYWdlUG9ydDsKICNpZiBFTkFCTEUoQkxPQikKIGNsYXNzIFB1YmxpY1VSTE1h
bmFnZXI7CiAjZW5kaWYKLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotY2xhc3MgRGF0YWJhc2U7
Ci1jbGFzcyBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXI7Ci1jbGFzcyBEYXRhYmFzZVRocmVhZDsK
LSNlbmRpZgogCiAjaWYgRU5BQkxFKEJMT0IpIHx8IEVOQUJMRShGSUxFX1NZU1RFTSkKIGNsYXNz
IEZpbGVUaHJlYWQ7CiAjZW5kaWYKIAotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCA6IHB1
YmxpYyBTZWN1cml0eUNvbnRleHQgeworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCA6IHB1
YmxpYyBTZWN1cml0eUNvbnRleHQsIHB1YmxpYyBTdXBwbGVtZW50YWJsZTxTY3JpcHRFeGVjdXRp
b25Db250ZXh0PiB7CiBwdWJsaWM6CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAg
IHZpcnR1YWwgflNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTc3LDExICs3Myw2IEBAIHB1
YmxpYzoKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIHZpcnR1YWwgYm9vbCBhbGxvd0Rh
dGFiYXNlQWNjZXNzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkYXRhYmFzZUV4Y2Vl
ZGVkUXVvdGEoY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7Ci0gICAgRGF0YWJhc2VUaHJlYWQqIGRh
dGFiYXNlVGhyZWFkKCk7Ci0gICAgdm9pZCBzZXRIYXNPcGVuRGF0YWJhc2VzKCkgeyBtX2hhc09w
ZW5EYXRhYmFzZXMgPSB0cnVlOyB9Ci0gICAgYm9vbCBoYXNPcGVuRGF0YWJhc2VzKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNPcGVuRGF0YWJhc2VzOyB9Ci0gICAgLy8gV2hlbiB0aGUgZGF0YWJhc2Ug
Y2xlYW51cCBpcyBkb25lLCBjbGVhbnVwU3luYyB3aWxsIGJlIHNpZ25hbGxlZC4KLSAgICB2b2lk
IHN0b3BEYXRhYmFzZXMoRGF0YWJhc2VUYXNrU3luY2hyb25pemVyKik7CiAjZW5kaWYKICAgICB2
aXJ0dWFsIGJvb2wgaXNDb250ZXh0VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3QgPSAwOwpAQCAtMjI0
LDExICsyMTUsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hY3RpdmVET01PYmplY3RzQXJlU3Vz
cGVuZGVkOwogICAgIEFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yU3VzcGVuc2lvbiBtX3JlYXNv
bkZvclN1c3BlbmRpbmdBY3RpdmVET01PYmplY3RzOwogCi0jaWYgRU5BQkxFKFNRTF9EQVRBQkFT
RSkKLSAgICBSZWZQdHI8RGF0YWJhc2VUaHJlYWQ+IG1fZGF0YWJhc2VUaHJlYWQ7Ci0gICAgYm9v
bCBtX2hhc09wZW5EYXRhYmFzZXM7IC8vIFRoaXMgbmV2ZXIgY2hhbmdlcyBiYWNrIHRvIGZhbHNl
LCBldmVuIGFmdGVyIHRoZSBkYXRhYmFzZSB0aHJlYWQgaXMgY2xvc2VkLgotI2VuZGlmCi0KICNp
ZiBFTkFCTEUoQkxPQikgfHwgRU5BQkxFKEZJTEVfU1lTVEVNKQogICAgIFJlZlB0cjxGaWxlVGhy
ZWFkPiBtX2ZpbGVUaHJlYWQ7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
UGFnZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VD
YWNoZS5jcHAJKHJldmlzaW9uIDEwOTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFn
ZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk1l
bW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUGFnZS5oIgogI2luY2x1ZGUgIkRPTVdpbmRv
dy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgogI2luY2x1ZGUgIkRldmljZU1vdGlv
bkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtMTIwLDcgKzEyMSw3IEBAIHN0YXRpYyBib29sIGxv
Z0NhbkNhY2hlRnJhbWVEZWNpc2lvbihGcmEKICAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1
ZTsKICAgICAgICAgfQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgICAgIGlmIChmcmFt
ZS0+ZG9jdW1lbnQoKS0+aGFzT3BlbkRhdGFiYXNlcygpKSB7CisgICAgICAgIGlmIChEYXRhYmFz
ZUNvbnRleHQ6Omhhc09wZW5EYXRhYmFzZXMoZnJhbWUtPmRvY3VtZW50KCkpKSB7CiAgICAgICAg
ICAgICBQQ0xPRygiICAgLUZyYW1lIGhhcyBvcGVuIGRhdGFiYXNlIGhhbmRsZXMiKTsKICAgICAg
ICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjYzLDcgKzI2NCw3IEBA
IGJvb2wgUGFnZUNhY2hlOjpjYW5DYWNoZVBhZ2VDb250YWluaW5nVGgKICAgICAgICAgJiYgKCFk
b2N1bWVudC0+dXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSB8fCAoIWRvY3VtZW50TG9hZGVyLT5y
ZXNwb25zZSgpLmNhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNoZSgpICYmICFkb2N1bWVudExvYWRl
ci0+cmVzcG9uc2UoKS5jYWNoZUNvbnRyb2xDb250YWluc05vU3RvcmUoKSkpCiAgICAgICAgICYm
ICghZnJhbWUtPmRvbVdpbmRvdygpIHx8ICFmcmFtZS0+ZG9tV2luZG93KCktPmhhc0V2ZW50TGlz
dGVuZXJzKGV2ZW50TmFtZXMoKS51bmxvYWRFdmVudCkpCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFT
RSkKLSAgICAgICAgJiYgIWRvY3VtZW50LT5oYXNPcGVuRGF0YWJhc2VzKCkKKyAgICAgICAgJiYg
IURhdGFiYXNlQ29udGV4dDo6aGFzT3BlbkRhdGFiYXNlcyhkb2N1bWVudCkKICNlbmRpZgogI2lm
IEVOQUJMRShTSEFSRURfV09SS0VSUykKICAgICAgICAgJiYgIVNoYXJlZFdvcmtlclJlcG9zaXRv
cnk6Omhhc1NoYXJlZFdvcmtlcnMoZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDEwOTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNs
dWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiQ29u
dGVudFNlY3VyaXR5UG9saWN5LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCiAjaW5j
bHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgpAQCAtNDE4LDcgKzQxOSw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0
b3BMb2FkaW5nKFVubG9hZEV2ZW4KICAgICAgICAgZG9jLT5zZXRSZWFkeVN0YXRlKERvY3VtZW50
OjpDb21wbGV0ZSk7CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgICAgICBkb2MtPnN0
b3BEYXRhYmFzZXMoMCk7CisgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgdGhlIERhdGFiYXNlQ29u
dGV4dCB3YXRjaCBmb3Igc29tZXRoaW5nIGxpa2UgQWN0aXZlRE9NT2JqZWN0OjpzdG9wKCkgcmF0
aGVyIHRoYW4gYmVpbmcgc3BlY2lhbC1jYXNlZCBoZXJlPworICAgICAgICBEYXRhYmFzZUNvbnRl
eHQ6OnN0b3BEYXRhYmFzZXMoZG9jLCAwKTsKICNlbmRpZgogICAgIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU3VwcGxlbWVudGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TdXBwbGVtZW50YWJsZS5oCShyZXZpc2lvbiAxMDkyODYpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdXBwbGVtZW50YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC01NywxNiArNTgsMTYgQEAgcHVibGljOgogICAgIHZvaWQgcHJvdmlkZVN1cHBsZW1lbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiBrZXksIFBhc3NPd25QdHI8U3VwcGxlbWVudDxUPiA+IHN1cHBs
ZW1lbnQpCiAgICAgewogICAgICAgICBBU1NFUlQoIW1fc3VwcGxlbWVudHMuZ2V0KGtleS5pbXBs
KCkpKTsKLSAgICAgICAgbV9zdXBwbGVtZW50cy5zZXQoa2V5LmltcGwoKSwgc3VwcGxlbWVudCk7
CisgICAgICAgIG1fc3VwcGxlbWVudHMuc2V0KGtleSwgc3VwcGxlbWVudCk7CiAgICAgfQogCiAg
ICAgU3VwcGxlbWVudDxUPiogcmVxdWlyZVN1cHBsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBr
ZXkpCiAgICAgewotICAgICAgICByZXR1cm4gbV9zdXBwbGVtZW50cy5nZXQoa2V5LmltcGwoKSk7
CisgICAgICAgIHJldHVybiBtX3N1cHBsZW1lbnRzLmdldChrZXkpOwogICAgIH0KIAogcHJpdmF0
ZToKLSAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIE93blB0cjxTdXBwbGVt
ZW50PFQ+ID4gPiBTdXBwbGVtZW50TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJp
bmcsIE93blB0cjxTdXBwbGVtZW50PFQ+ID4gPiBTdXBwbGVtZW50TWFwOwogICAgIFN1cHBsZW1l
bnRNYXAgbV9zdXBwbGVtZW50czsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
QWJzdHJhY3REYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9BYnN0cmFjdERhdGFiYXNlLmNwcAkocmV2aXNpb24gMTA5Mjg2KQorKysgU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiAr
MzIsNyBAQAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKICNpbmNsdWRlICJEYXRhYmFzZUF1
dGhvcml6ZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKICNpbmNsdWRlICJEYXRh
YmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgpAQCAtMTg4LDYgKzE4OSw3IEBAIGNvbnN0IGNoYXIqIEFic3RyYWN0RGF0YWJhc2U6
OmRhdGFiYXNlSW4KIEFic3RyYWN0RGF0YWJhc2U6OkFic3RyYWN0RGF0YWJhc2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGV4cGVjdGVkVmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBEYXRh
YmFzZVR5cGUgZGF0YWJhc2VUeXBlKQogICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNv
bnRleHQpCisgICAgLCBtX2RhdGFiYXNlQ29udGV4dChEYXRhYmFzZUNvbnRleHQ6OmZyb20oY29u
dGV4dCkpCiAgICAgLCBtX25hbWUobmFtZS5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fZXhwZWN0
ZWRWZXJzaW9uKGV4cGVjdGVkVmVyc2lvbi5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fZGlzcGxh
eU5hbWUoZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuaAkocmV2aXNpb24gMTA5Mjg2KQorKysgU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYg
KzQyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGF0YWJhc2VBdXRob3JpemVy
OworY2xhc3MgRGF0YWJhc2VDb250ZXh0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCkBAIC04Niw2ICs4Nyw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgbWFya0FzRGVsZXRlZEFuZENsb3NlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZUltbWVkaWF0ZWx5KCkgPSAwOwogCisgICAgRGF0YWJhc2VDb250ZXh0KiBkYXRhYmFz
ZUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlQ29udGV4dDsgfQorCiBwcm90ZWN0
ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIENoYW5nZVZlcnNpb25XcmFwcGVyOwogICAgIGZyaWVuZCBj
bGFzcyBTUUxTdGF0ZW1lbnQ7CkBAIC0xMjQsOCArMTI3LDkgQEAgcHJvdGVjdGVkOgogCiAgICAg
c3RhdGljIGNvbnN0IGNoYXIqIGRhdGFiYXNlSW5mb1RhYmxlTmFtZSgpOwogCi0gICAgUmVmUHRy
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fY29udGV4dFRocmVhZFNlY3VyaXR5T3JpZ2luOworICAg
IFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CisgICAgRGF0YWJhc2VDb250ZXh0KiBtX2RhdGFiYXNlQ29udGV4dDsgLy8gT3duZWQgYnkgbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LgogCiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBTdHJpbmcg
bV9leHBlY3RlZFZlcnNpb247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAko
cmV2aXNpb24gMTA5Mjg2KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJDaGFuZ2VWZXJzaW9u
V3JhcHBlci5oIgogI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgIkRhdGFi
YXNlQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKICNpbmNsdWRlICJE
YXRhYmFzZVRhc2suaCIKICNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgogI2luY2x1ZGUgIkRh
dGFiYXNlVHJhY2tlci5oIgpAQCAtMTA5LDcgKzExMCw3IEBAIFBhc3NSZWZQdHI8RGF0YWJhc2U+
IERhdGFiYXNlOjpvcGVuRGF0YWIKIAogICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNl
dERhdGFiYXNlRGV0YWlscyhjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBuYW1lLCBkaXNwbGF5
TmFtZSwgZXN0aW1hdGVkU2l6ZSk7CiAKLSAgICBjb250ZXh0LT5zZXRIYXNPcGVuRGF0YWJhc2Vz
KCk7CisgICAgRGF0YWJhc2VDb250ZXh0Ojpmcm9tKGNvbnRleHQpLT5zZXRIYXNPcGVuRGF0YWJh
c2VzKCk7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5EYXRhYmFzZShj
b250ZXh0LCBkYXRhYmFzZSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+aG9zdCgpLCBuYW1l
LCBleHBlY3RlZFZlcnNpb24pOwogCkBAIC0xMzAsNyArMTMxLDcgQEAgRGF0YWJhc2U6OkRhdGFi
YXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIG1fZGF0YWJhc2VUaHJlYWRTZWN1cml0eU9y
aWdpbiA9IG1fY29udGV4dFRocmVhZFNlY3VyaXR5T3JpZ2luLT5pc29sYXRlZENvcHkoKTsKIAog
ICAgIFNjcmlwdENvbnRyb2xsZXI6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBBU1NFUlQo
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpKTsKKyAgICBBU1NFUlQo
ZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCkpOwogfQogCiBjbGFzcyBEZXJlZkNv
bnRleHRUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewpAQCAtMTc5
LDEyICsxODAsMTIgQEAgU3RyaW5nIERhdGFiYXNlOjp2ZXJzaW9uKCkgY29uc3QKIGJvb2wgRGF0
YWJhc2U6Om9wZW5BbmRWZXJpZnlWZXJzaW9uKGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2Us
IEV4Y2VwdGlvbkNvZGUmIGUsIFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewogICAgIERhdGFiYXNl
VGFza1N5bmNocm9uaXplciBzeW5jaHJvbml6ZXI7Ci0gICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCkgfHwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5k
YXRhYmFzZVRocmVhZCgpLT50ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkKKyAg
ICBpZiAoIWRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpIHx8IGRhdGFiYXNlQ29u
dGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT50ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25p
emVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7
CiAgICAgT3duUHRyPERhdGFiYXNlT3BlblRhc2s+IHRhc2sgPSBEYXRhYmFzZU9wZW5UYXNrOjpj
cmVhdGUodGhpcywgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsICZzeW5jaHJvbml6ZXIsIGUsIGVy
cm9yTWVzc2FnZSwgc3VjY2Vzcyk7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRh
YmFzZVRocmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRhc2sodGFzay5yZWxlYXNlKCkpOworICAg
IGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRh
c2sodGFzay5yZWxlYXNlKCkpOwogICAgIHN5bmNocm9uaXplci53YWl0Rm9yVGFza0NvbXBsZXRp
b24oKTsKIAogICAgIHJldHVybiBzdWNjZXNzOwpAQCAtMTkyLDI3ICsxOTMsMjcgQEAgYm9vbCBE
YXRhYmFzZTo6b3BlbkFuZFZlcmlmeVZlcnNpb24oYm9vbAogCiB2b2lkIERhdGFiYXNlOjptYXJr
QXNEZWxldGVkQW5kQ2xvc2UoKQogewotICAgIGlmIChtX2RlbGV0ZWQgfHwgIW1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKSkKKyAgICBpZiAobV9kZWxldGVkIHx8ICFk
YXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgTE9HKFN0b3JhZ2VBUEksICJNYXJraW5nICVzICglcCkgYXMgZGVsZXRlZCIsIHN0cmluZ0lk
ZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSwgdGhpcyk7CiAgICAgbV9kZWxldGVkID0gdHJ1ZTsK
IAogICAgIERhdGFiYXNlVGFza1N5bmNocm9uaXplciBzeW5jaHJvbml6ZXI7Ci0gICAgaWYgKG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+dGVybWluYXRpb25SZXF1
ZXN0ZWQoJnN5bmNocm9uaXplcikpIHsKKyAgICBpZiAoZGF0YWJhc2VDb250ZXh0KCktPmRhdGFi
YXNlVGhyZWFkKCktPnRlcm1pbmF0aW9uUmVxdWVzdGVkKCZzeW5jaHJvbml6ZXIpKSB7CiAgICAg
ICAgIExPRyhTdG9yYWdlQVBJLCAiRGF0YWJhc2UgaGFuZGxlICVwIGlzIG9uIGEgdGVybWluYXRl
ZCBEYXRhYmFzZVRocmVhZCwgY2Fubm90IGJlIG1hcmtlZCBmb3Igbm9ybWFsIGNsb3N1cmVcbiIs
IHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgT3duUHRyPERhdGFiYXNlQ2xv
c2VUYXNrPiB0YXNrID0gRGF0YWJhc2VDbG9zZVRhc2s6OmNyZWF0ZSh0aGlzLCAmc3luY2hyb25p
emVyKTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnNj
aGVkdWxlSW1tZWRpYXRlVGFzayh0YXNrLnJlbGVhc2UoKSk7CisgICAgZGF0YWJhc2VDb250ZXh0
KCktPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxlSW1tZWRpYXRlVGFzayh0YXNrLnJlbGVhc2Uo
KSk7CiAgICAgc3luY2hyb25pemVyLndhaXRGb3JUYXNrQ29tcGxldGlvbigpOwogfQogCiB2b2lk
IERhdGFiYXNlOjpjbG9zZSgpCiB7Ci0gICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+ZGF0YWJhc2VUaHJlYWQoKSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkpOwor
ICAgIEFTU0VSVChkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKSk7CisgICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQo
KS0+Z2V0VGhyZWFkSUQoKSk7CiAKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlciht
X3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKQEAgLTIyNSwxNSArMjI2LDE1IEBAIHZvaWQg
RGF0YWJhc2U6OmNsb3NlKCkKIAogICAgIC8vIE11c3QgcmVmKCkgYmVmb3JlIGNhbGxpbmcgZGF0
YWJhc2VUaHJlYWQoKS0+cmVjb3JkRGF0YWJhc2VDbG9zZWQoKS4KICAgICBSZWZQdHI8RGF0YWJh
c2U+IHByb3RlY3QgPSB0aGlzOwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJh
c2VUaHJlYWQoKS0+cmVjb3JkRGF0YWJhc2VDbG9zZWQodGhpcyk7Ci0gICAgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT51bnNjaGVkdWxlRGF0YWJhc2VUYXNrcyh0
aGlzKTsKKyAgICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+cmVjb3JkRGF0
YWJhc2VDbG9zZWQodGhpcyk7CisgICAgZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFk
KCktPnVuc2NoZWR1bGVEYXRhYmFzZVRhc2tzKHRoaXMpOwogICAgIERhdGFiYXNlVHJhY2tlcjo6
dHJhY2tlcigpLnJlbW92ZU9wZW5EYXRhYmFzZSh0aGlzKTsKIH0KIAogdm9pZCBEYXRhYmFzZTo6
Y2xvc2VJbW1lZGlhdGVseSgpCiB7CiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+aXNDb250ZXh0VGhyZWFkKCkpOwotICAgIERhdGFiYXNlVGhyZWFkKiBkYXRhYmFzZVRocmVh
ZCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKTsKKyAgICBEYXRh
YmFzZVRocmVhZCogZGF0YWJhc2VUaHJlYWQgPSBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VU
aHJlYWQoKTsKICAgICBpZiAoZGF0YWJhc2VUaHJlYWQgJiYgIWRhdGFiYXNlVGhyZWFkLT50ZXJt
aW5hdGlvblJlcXVlc3RlZCgpICYmIG9wZW5lZCgpKSB7CiAgICAgICAgIGxvZ0Vycm9yTWVzc2Fn
ZSgiZm9yY2libHkgY2xvc2luZyBkYXRhYmFzZSIpOwogICAgICAgICBkYXRhYmFzZVRocmVhZC0+
c2NoZWR1bGVJbW1lZGlhdGVUYXNrKERhdGFiYXNlQ2xvc2VUYXNrOjpjcmVhdGUodGhpcywgMCkp
OwpAQCAtMjQ4LDggKzI0OSw4IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZTo6bWF4aW11
bVNpemUKIGJvb2wgRGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KGJvb2wgc2V0VmVyc2lv
bkluTmV3RGF0YWJhc2UsIEV4Y2VwdGlvbkNvZGUmIGUsIFN0cmluZyYgZXJyb3JNZXNzYWdlKQog
ewogICAgIGlmIChBYnN0cmFjdERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShzZXRWZXJz
aW9uSW5OZXdEYXRhYmFzZSwgZSwgZXJyb3JNZXNzYWdlKSkgewotICAgICAgICBpZiAobV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpKQotICAgICAgICAgICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5yZWNvcmREYXRhYmFzZU9wZW4o
dGhpcyk7CisgICAgICAgIGlmIChkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKSkK
KyAgICAgICAgICAgIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5yZWNvcmRE
YXRhYmFzZU9wZW4odGhpcyk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzEx
LDI2ICszMTIsMjYgQEAgdm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvbigpCiAgICAg
aWYgKG1faXNUcmFuc2FjdGlvblF1ZXVlRW5hYmxlZCAmJiAhbV90cmFuc2FjdGlvblF1ZXVlLmlz
RW1wdHkoKSkKICAgICAgICAgdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9uUXVldWUudGFrZUZp
cnN0KCk7CiAKLSAgICBpZiAodHJhbnNhY3Rpb24gJiYgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5kYXRhYmFzZVRocmVhZCgpKSB7CisgICAgaWYgKHRyYW5zYWN0aW9uICYmIGRhdGFiYXNlQ29u
dGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpKSB7CiAgICAgICAgIE93blB0cjxEYXRhYmFzZVRyYW5z
YWN0aW9uVGFzaz4gdGFzayA9IERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrOjpjcmVhdGUodHJhbnNh
Y3Rpb24pOwogICAgICAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgRGF0YWJhc2VUcmFu
c2FjdGlvblRhc2sgJXAgZm9yIHRyYW5zYWN0aW9uICVwXG4iLCB0YXNrLmdldCgpLCB0YXNrLT50
cmFuc2FjdGlvbigpKTsKICAgICAgICAgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSB0cnVlOwot
ICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVk
dWxlVGFzayh0YXNrLnJlbGVhc2UoKSk7CisgICAgICAgIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRh
YmFzZVRocmVhZCgpLT5zY2hlZHVsZVRhc2sodGFzay5yZWxlYXNlKCkpOwogICAgIH0gZWxzZQog
ICAgICAgICBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlOwogfQogCiB2b2lkIERhdGFi
YXNlOjpzY2hlZHVsZVRyYW5zYWN0aW9uU3RlcChTUUxUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24s
IGJvb2wgaW1tZWRpYXRlbHkpCiB7Ci0gICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmRhdGFiYXNlVGhyZWFkKCkpCisgICAgaWYgKCFkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VU
aHJlYWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgT3duUHRyPERhdGFiYXNlVHJhbnNhY3Rp
b25UYXNrPiB0YXNrID0gRGF0YWJhc2VUcmFuc2FjdGlvblRhc2s6OmNyZWF0ZSh0cmFuc2FjdGlv
bik7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIERhdGFiYXNlVHJhbnNhY3Rpb25U
YXNrICVwIGZvciB0aGUgdHJhbnNhY3Rpb24gc3RlcFxuIiwgdGFzay5nZXQoKSk7CiAgICAgaWYg
KGltbWVkaWF0ZWx5KQotICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNl
VGhyZWFkKCktPnNjaGVkdWxlSW1tZWRpYXRlVGFzayh0YXNrLnJlbGVhc2UoKSk7CisgICAgICAg
IGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRh
c2sodGFzay5yZWxlYXNlKCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZVRhc2sodGFzay5yZWxlYXNlKCkpOwor
ICAgICAgICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+c2NoZWR1bGVUYXNr
KHRhc2sucmVsZWFzZSgpKTsKIH0KIAogY2xhc3MgRGVsaXZlclBlbmRpbmdDYWxsYmFja1Rhc2sg
OiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CkBAIC0zOTAsMTIgKzM5MSwx
MiBAQCBWZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6cGVyZm9ybUdldFRhYmxlCiAKIFNRTFRyYW5z
YWN0aW9uQ2xpZW50KiBEYXRhYmFzZTo6dHJhbnNhY3Rpb25DbGllbnQoKSBjb25zdAogewotICAg
IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnRyYW5z
YWN0aW9uQ2xpZW50KCk7CisgICAgcmV0dXJuIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRo
cmVhZCgpLT50cmFuc2FjdGlvbkNsaWVudCgpOwogfQogCiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yKiBEYXRhYmFzZTo6dHJhbnNhY3Rpb25Db29yZGluYXRvcigpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+dHJhbnNhY3Rp
b25Db29yZGluYXRvcigpOworICAgIHJldHVybiBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VU
aHJlYWQoKS0+dHJhbnNhY3Rpb25Db29yZGluYXRvcigpOwogfQogCiBWZWN0b3I8U3RyaW5nPiBE
YXRhYmFzZTo6dGFibGVOYW1lcygpCkBAIC00MDQsMTEgKzQwNSwxMSBAQCBWZWN0b3I8U3RyaW5n
PiBEYXRhYmFzZTo6dGFibGVOYW1lcygpCiAgICAgLy8gaW4gZGVhbGluZyB3aXRoIHRoZW0uIEhv
d2V2ZXIsIGlmIHRoZSBjb2RlIGNoYW5nZXMsIHRoaXMgbWF5IG5vdCBiZSB0cnVlIGFueW1vcmUu
CiAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwogICAgIERhdGFiYXNlVGFza1N5bmNocm9uaXpl
ciBzeW5jaHJvbml6ZXI7Ci0gICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFi
YXNlVGhyZWFkKCkgfHwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgp
LT50ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkKKyAgICBpZiAoIWRhdGFiYXNl
Q29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpIHx8IGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFz
ZVRocmVhZCgpLT50ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKIAogICAgIE93blB0cjxEYXRhYmFzZVRhYmxlTmFtZXNUYXNrPiB0YXNr
ID0gRGF0YWJhc2VUYWJsZU5hbWVzVGFzazo6Y3JlYXRlKHRoaXMsICZzeW5jaHJvbml6ZXIsIHJl
c3VsdCk7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5z
Y2hlZHVsZUltbWVkaWF0ZVRhc2sodGFzay5yZWxlYXNlKCkpOworICAgIGRhdGFiYXNlQ29udGV4
dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRhc2sodGFzay5yZWxlYXNl
KCkpOwogICAgIHN5bmNocm9uaXplci53YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKIAogICAgIHJl
dHVybiByZXN1bHQ7CkBAIC00MTgsNyArNDE5LDcgQEAgU2VjdXJpdHlPcmlnaW4qIERhdGFiYXNl
OjpzZWN1cml0eU9yaWdpbgogewogICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlz
Q29udGV4dFRocmVhZCgpKQogICAgICAgICByZXR1cm4gbV9jb250ZXh0VGhyZWFkU2VjdXJpdHlP
cmlnaW4uZ2V0KCk7Ci0gICAgaWYgKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkpCisgICAgaWYgKGN1cnJl
bnRUaHJlYWQoKSA9PSBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0VGhy
ZWFkSUQoKSkKICAgICAgICAgcmV0dXJuIG1fZGF0YWJhc2VUaHJlYWRTZWN1cml0eU9yaWdpbi5n
ZXQoKTsKICAgICByZXR1cm4gMDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0
YWJhc2VDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0Rh
dGFiYXNlQ29udGV4dC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0RhdGFiYXNlQ29udGV4dC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5o
IgorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkRhdGFiYXNlLmgiCisj
aW5jbHVkZSAiRGF0YWJhc2VUYXNrLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgRGF0YWJhc2VDb250ZXh0KiBleGlzdGluZ0Rh
dGFiYXNlQ29udGV4dEZyb20oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RGF0YWJhc2VDb250ZXh0Kj4oU3VwcGxlbWVudDxTY3JpcHRF
eGVjdXRpb25Db250ZXh0Pjo6ZnJvbShjb250ZXh0LCAiRGF0YWJhc2VDb250ZXh0IikpOworfQor
CitEYXRhYmFzZUNvbnRleHQ6OkRhdGFiYXNlQ29udGV4dCgpCisgICAgOiBtX2hhc09wZW5EYXRh
YmFzZXMoZmFsc2UpCit7Cit9CisKK0RhdGFiYXNlQ29udGV4dDo6fkRhdGFiYXNlQ29udGV4dCgp
Cit7CisgICAgaWYgKG1fZGF0YWJhc2VUaHJlYWQpIHsKKyAgICAgICAgQVNTRVJUKG1fZGF0YWJh
c2VUaHJlYWQtPnRlcm1pbmF0aW9uUmVxdWVzdGVkKCkpOworICAgICAgICBtX2RhdGFiYXNlVGhy
ZWFkID0gMDsKKyAgICB9Cit9CisKK0RhdGFiYXNlQ29udGV4dCogRGF0YWJhc2VDb250ZXh0Ojpm
cm9tKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgRGF0YWJhc2VDb250
ZXh0KiBzdXBwbGVtZW50ID0gZXhpc3RpbmdEYXRhYmFzZUNvbnRleHRGcm9tKGNvbnRleHQpOwor
ICAgIGlmICghc3VwcGxlbWVudCkgeworICAgICAgICBzdXBwbGVtZW50ID0gbmV3IERhdGFiYXNl
Q29udGV4dCgpOworICAgICAgICBwcm92aWRlVG8oY29udGV4dCwgIkRhdGFiYXNlQ29udGV4dCIs
IGFkb3B0UHRyKHN1cHBsZW1lbnQpKTsKKyAgICAgICAgQVNTRVJUKHN1cHBsZW1lbnQgPT0gZXhp
c3RpbmdEYXRhYmFzZUNvbnRleHRGcm9tKGNvbnRleHQpKTsKKyAgICB9CisgICAgcmV0dXJuIHN1
cHBsZW1lbnQ7Cit9CisKK0RhdGFiYXNlVGhyZWFkKiBEYXRhYmFzZUNvbnRleHQ6OmRhdGFiYXNl
VGhyZWFkKCkKK3sKKyAgICBpZiAoIW1fZGF0YWJhc2VUaHJlYWQgJiYgIW1faGFzT3BlbkRhdGFi
YXNlcykgeworICAgICAgICAvLyBDcmVhdGUgdGhlIGRhdGFiYXNlIHRocmVhZCBvbiBmaXJzdCBy
ZXF1ZXN0IC0gYnV0IG5vdCBpZiBhdCBsZWFzdCBvbmUgZGF0YWJhc2Ugd2FzIGFscmVhZHkgb3Bl
bmVkLAorICAgICAgICAvLyBiZWNhdXNlIGluIHRoYXQgY2FzZSB3ZSBhbHJlYWR5IGhhZCBhIGRh
dGFiYXNlIHRocmVhZCBhbmQgdGVybWluYXRlZCBpdCBhbmQgc2hvdWxkIG5vdCBjcmVhdGUgYW5v
dGhlci4KKyAgICAgICAgbV9kYXRhYmFzZVRocmVhZCA9IERhdGFiYXNlVGhyZWFkOjpjcmVhdGUo
KTsKKyAgICAgICAgaWYgKCFtX2RhdGFiYXNlVGhyZWFkLT5zdGFydCgpKQorICAgICAgICAgICAg
bV9kYXRhYmFzZVRocmVhZCA9IDA7CisgICAgfQorCisgICAgcmV0dXJuIG1fZGF0YWJhc2VUaHJl
YWQuZ2V0KCk7Cit9CisKK2Jvb2wgRGF0YWJhc2VDb250ZXh0OjpoYXNPcGVuRGF0YWJhc2VzKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgLy8gV2UgZG9uJ3QgdXNlIERh
dGFiYXNlQ29udGV4dDo6ZnJvbSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY2F1c2UKKyAgICAv
LyBEYXRhYmFzZUNvbnRleHQgdG8gYmUgYWxsb2NhdGVkIGlmIHdlIGRvbid0IGhhdmUgb25lIGFs
cmVhZHkuCisgICAgRGF0YWJhc2VDb250ZXh0KiBkYXRhYmFzZUNvbnRleHQgPSBleGlzdGluZ0Rh
dGFiYXNlQ29udGV4dEZyb20oY29udGV4dCk7CisgICAgaWYgKCFkYXRhYmFzZUNvbnRleHQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZGF0YWJhc2VDb250ZXh0LT5tX2hhc09w
ZW5EYXRhYmFzZXM7Cit9CisKK3ZvaWQgRGF0YWJhc2VDb250ZXh0OjpzdG9wRGF0YWJhc2VzKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIERhdGFiYXNlVGFza1N5bmNocm9uaXplciog
Y2xlYW51cFN5bmMpCit7CisgICAgLy8gV2UgZG9uJ3QgdXNlIERhdGFiYXNlQ29udGV4dDo6ZnJv
bSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY2F1c2UKKyAgICAvLyBEYXRhYmFzZUNvbnRleHQg
dG8gYmUgYWxsb2NhdGVkIGlmIHdlIGRvbid0IGhhdmUgb25lIGFscmVhZHkuCisgICAgRGF0YWJh
c2VDb250ZXh0KiBkYXRhYmFzZUNvbnRleHQgPSBleGlzdGluZ0RhdGFiYXNlQ29udGV4dEZyb20o
Y29udGV4dCk7CisKKyAgICBpZiAoZGF0YWJhc2VDb250ZXh0ICYmIGRhdGFiYXNlQ29udGV4dC0+
bV9kYXRhYmFzZVRocmVhZCkKKyAgICAgICAgZGF0YWJhc2VDb250ZXh0LT5tX2RhdGFiYXNlVGhy
ZWFkLT5yZXF1ZXN0VGVybWluYXRpb24oY2xlYW51cFN5bmMpOworICAgIGVsc2UgaWYgKGNsZWFu
dXBTeW5jKQorICAgICAgICBjbGVhbnVwU3luYy0+dGFza0NvbXBsZXRlZCgpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNvbnRleHQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ29udGV4dC5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNvbnRleHQuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlLCBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgRGF0YWJhc2VDb250ZXh0X2gK
KyNkZWZpbmUgRGF0YWJhc2VDb250ZXh0X2gKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisK
KyNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIERhdGFiYXNlOworY2xhc3MgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyOworY2xhc3MgRGF0
YWJhc2VUaHJlYWQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCitjbGFzcyBEYXRh
YmFzZUNvbnRleHQgOiBwdWJsaWMgU3VwcGxlbWVudDxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+RGF0YWJhc2VDb250ZXh0KCk7CisgICAgc3RhdGljIERh
dGFiYXNlQ29udGV4dCogZnJvbShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisKKyAgICBEYXRh
YmFzZVRocmVhZCogZGF0YWJhc2VUaHJlYWQoKTsKKworICAgIHZvaWQgc2V0SGFzT3BlbkRhdGFi
YXNlcygpIHsgbV9oYXNPcGVuRGF0YWJhc2VzID0gdHJ1ZTsgfQorCisgICAgc3RhdGljIGJvb2wg
aGFzT3BlbkRhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisKKyAgICAvLyBXaGVu
IHRoZSBkYXRhYmFzZSBjbGVhbnVwIGlzIGRvbmUsIGNsZWFudXBTeW5jIHdpbGwgYmUgc2lnbmFs
bGVkLgorICAgIHN0YXRpYyB2b2lkIHN0b3BEYXRhYmFzZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIERhdGFiYXNlVGFza1N5bmNocm9uaXplciopOworCitwcml2YXRlOgorICAgIERhdGFiYXNl
Q29udGV4dCgpOworCisgICAgUmVmUHRyPERhdGFiYXNlVGhyZWFkPiBtX2RhdGFiYXNlVGhyZWFk
OworICAgIGJvb2wgbV9oYXNPcGVuRGF0YWJhc2VzOyAvLyBUaGlzIG5ldmVyIGNoYW5nZXMgYmFj
ayB0byBmYWxzZSwgZXZlbiBhZnRlciB0aGUgZGF0YWJhc2UgdGhyZWFkIGlzIGNsb3NlZC4KK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJB
U0UpCisKKyNlbmRpZiAvLyBEYXRhYmFzZUNvbnRleHRfaApJbmRleDogU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDEwOTI4NikKKysrIFNvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2
ICszMyw3IEBACiAKICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQXV0
aG9yaXplci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgogI2luY2x1ZGUgIkRhdGFi
YXNlVGhyZWFkLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKQEAgLTE2Myw3ICsxNjQsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpjaGVja0FuZEhh
bmRsZUNsb3NlCiAgICAgbV9lcnJvckNhbGxiYWNrV3JhcHBlci5jbGVhcigpOwogCiAgICAgLy8g
VGhlIG5leHQgc3RlcHMgc2hvdWxkIGJlIGV4ZWN1dGVkIG9ubHkgaWYgd2UncmUgb24gdGhlIERC
IHRocmVhZC4KLSAgICBpZiAoY3VycmVudFRocmVhZCgpICE9IGRhdGFiYXNlKCktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSkKKyAgICBp
ZiAoY3VycmVudFRocmVhZCgpICE9IGRhdGFiYXNlKCktPmRhdGFiYXNlQ29udGV4dCgpLT5kYXRh
YmFzZVRocmVhZCgpLT5nZXRUaHJlYWRJRCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBU
aGUgY3VycmVudCBTUUxpdGUgdHJhbnNhY3Rpb24gc2hvdWxkIGJlIHN0b3BwZWQsIGFzIHdlbGwK
QEAgLTIxNSw3ICsyMTYsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpwZXJmb3JtUGVuZGluZ0Nh
bGxiCiAKIHZvaWQgU1FMVHJhbnNhY3Rpb246Om5vdGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0dGlu
Z0Rvd24oKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZGF0YWJhc2UoKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5nZXRUaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGRhdGFiYXNlKCktPmRhdGFiYXNlQ29udGV4
dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5nZXRUaHJlYWRJRCgpKTsKIAogICAgIC8vIElmIHRoZSB0
cmFuc2FjdGlvbiBpcyBpbiBwcm9ncmVzcywgd2Ugc2hvdWxkIHJvbGwgaXQgYmFjayBoZXJlLCBz
aW5jZSB0aGlzIGlzIG91ciBsYXN0CiAgICAgLy8gb3BvcnR1bml0eSB0byBkbyBzb21ldGhpbmcg
cmVsYXRlZCB0byB0aGlzIHRyYW5zYWN0aW9uIG9uIHRoZSBEQiB0aHJlYWQuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCShyZXZpc2lvbiAxMDkyODYpCisrKyBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogCisjaW5jbHVkZSAi
RGF0YWJhc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIgog
I2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIktVUkwuaCIK
QEAgLTIxNSw4ICsyMTYsOSBAQCBwdWJsaWM6CiAgICAgICAgIFdvcmtlckNvbnRleHQqIHdvcmtl
ckNvbnRleHQgPSBzdGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4oY29udGV4dCk7CiAKICNpZiBF
TkFCTEUoU1FMX0RBVEFCQVNFKQorICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHN0b3AgdGhl
IGRhdGFiYXNlcyBhcyBwYXJ0IG9mIHN0b3BBY3RpdmVET01PYmplY3RzKCkgYmVsb3c/CiAgICAg
ICAgIERhdGFiYXNlVGFza1N5bmNocm9uaXplciBjbGVhbnVwU3luYzsKLSAgICAgICAgd29ya2Vy
Q29udGV4dC0+c3RvcERhdGFiYXNlcygmY2xlYW51cFN5bmMpOworICAgICAgICBEYXRhYmFzZUNv
bnRleHQ6OnN0b3BEYXRhYmFzZXMod29ya2VyQ29udGV4dCwgJmNsZWFudXBTeW5jKTsKICNlbmRp
ZgogCiAgICAgICAgIHdvcmtlckNvbnRleHQtPnN0b3BBY3RpdmVET01PYmplY3RzKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129610</attachid>
            <date>2012-02-29 18:44:10 -0800</date>
            <delta_ts>2012-02-29 18:44:10 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-79633-20120229184409.patch</filename>
            <type>text/plain</type>
            <size>42197</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBACisyMDEyLTAyLTI5ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCBoYXMgdG9vIG1hbnkgaWZkZWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgVGhpcyBjbGFzcyBjcmVhdGVzIGEgRGF0YWJh
c2VDb250ZXh0IG9iamVjdCB0byBzdXBwbGVtZW50IHRoZQorICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0IHdpdGggZGF0YWJhc2Utc3BlY2lmaWMgaW5mb3JtYXRpb24uICBUaGlzIG5ldwor
ICAgICAgICBvYmplY3QgbGV0cyB1cyByZW1vdmUgYSBidW5jaCBvZiBkYXRhYmFzZS1zcGVjaWZp
YyAoYW5kIGlmZGVmZWQpIGxvZ2ljCisgICAgICAgIGZyb20gU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC4oY3BwfGgpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAg
KiBoaXN0b3J5L1BhZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2dDYW5DYWNoZUZy
YW1lRGVjaXNpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNhY2hlOjpjYW5DYWNoZVBhZ2VD
b250YWluaW5nVGhpc0ZyYW1lKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKiBz
dG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RE
YXRhYmFzZTo6QWJzdHJhY3REYXRhYmFzZSk6CisgICAgICAgICogc3RvcmFnZS9BYnN0cmFjdERh
dGFiYXNlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0
RGF0YWJhc2U6OmRhdGFiYXNlQ29udGV4dCk6CisgICAgICAgIChBYnN0cmFjdERhdGFiYXNlKToK
KyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OkRhdGFiYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpvcGVuQW5kVmVyaWZ5VmVyc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6bWFya0FzRGVsZXRlZEFuZENsb3NlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZTo6Y2xvc2VJbW1lZGlhdGVseSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9y
bU9wZW5BbmRWZXJpZnkpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rp
b25TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjp0cmFuc2FjdGlvbkNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6dHJhbnNhY3Rpb25Db29yZGluYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6dGFibGVOYW1lcyk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZTo6c2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2VD
b250ZXh0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlQ29udGV4dDo6RGF0YWJhc2VDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlQ29udGV4dDo6fkRhdGFiYXNlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZUNvbnRleHQ6OmZyb20pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0Ojpk
YXRhYmFzZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUNvbnRleHQ6OnN0b3BE
YXRhYmFzZXMpOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2VDb250ZXh0Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChEYXRhYmFzZUNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpzZXRIYXNPcGVuRGF0YWJhc2VzKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlQ29udGV4dDo6aGFzT3BlbkRhdGFiYXNlcyk6CisgICAgICAgICog
c3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2Fj
dGlvbjo6Y2hlY2tBbmRIYW5kbGVDbG9zZWRPckludGVycnVwdGVkRGF0YWJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246Om5vdGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0dGlu
Z0Rvd24pOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrOjpwZXJmb3JtVGFzayk6CisKIDIw
MTItMDItMjkgIERhdmlkIEJhcnRvbiAgPGRiYXJ0b25AbWF0aHNjcmliZS5jb20+CiAKICAgICAg
ICAgPG1zdWJzdXA+IHNldE5lZWRzTGF5b3V0KCkgY29ycmVjdGlvbgpJbmRleDogU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDEwOTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMzg3LDYgKzEzODcsNyBAQCBTRVQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgc3RvcmFnZS9ET01XaW5kb3dTUUxEYXRhYmFzZS5jcHAKICAgICBzdG9yYWdlL0Rh
dGFiYXNlLmNwcAogICAgIHN0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmNwcAorICAgIHN0b3Jh
Z2UvRGF0YWJhc2VDb250ZXh0LmNwcAogICAgIHN0b3JhZ2UvRGF0YWJhc2VTeW5jLmNwcAogICAg
IHN0b3JhZ2UvRGF0YWJhc2VUYXNrLmNwcAogICAgIHN0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuY3Bw
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEwOTI4NikKKysr
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTM4
NjEsMTIgKzM4NjEsMTQgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
RE9NV2luZG93U1FMRGF0YWJhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RPTVdp
bmRvd1NRTERhdGFiYXNlLmggXAorCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9EYXRhYmFzZUF1dGhvcml6ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFz
ZUNhbGxiYWNrLmggXAotCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ29udGV4dC5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvRGF0YWJhc2VDb250ZXh0LmggXAogCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
RGF0YWJhc2VEZXRhaWxzLmggXAotCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaCBc
CiAJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0Rh
dGFiYXNlVGFzay5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMDkyODYpCisrKyBT
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMzA0LDYgKzEzMDQs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBzdG9yYWdlL0RPTVdpbmRvd1NRTERhdGFiYXNlLmNwcCBc
CiAgICAgc3RvcmFnZS9EYXRhYmFzZS5jcHAgXAogICAgIHN0b3JhZ2UvRGF0YWJhc2VBdXRob3Jp
emVyLmNwcCBcCisgICAgc3RvcmFnZS9EYXRhYmFzZUNvbnRleHQuY3BwIFwKICAgICBzdG9yYWdl
L0RhdGFiYXNlU3luYy5jcHAgXAogICAgIHN0b3JhZ2UvU3RvcmFnZVRhc2suY3BwIFwKICAgICBz
dG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZp
c2lvbiAxMDkyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBj
b3B5KQpAQCAtNDE5LDYgKzQxOSw3IEBAIF9fWk43V2ViQ29yZTE1QWZmaW5lVHJhbnNmb3JtQzFF
dgogX19aTjdXZWJDb3JlMTVBcmNoaXZlUmVzb3VyY2U2Y3JlYXRlRU4zV1RGMTBQYXNzUmVmUHRy
SU5TXzEyU2hhcmVkQnVmZmVyRUVFUktOU180S1VSTEVSS05TMV82U3RyaW5nRVNBX1NBX1JLTlNf
MTZSZXNvdXJjZVJlc3BvbnNlRQogX19aTjdXZWJDb3JlMTVET01XcmFwcGVyV29ybGQxM2NsZWFy
V3JhcHBlcnNFdgogX19aTjdXZWJDb3JlMTVET01XcmFwcGVyV29ybGREMUV2CitfX1pON1dlYkNv
cmUxNURhdGFiYXNlQ29udGV4dDE2aGFzT3BlbkRhdGFiYXNlc0VQTlNfMjJTY3JpcHRFeGVjdXRp
b25Db250ZXh0RQogX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIxMmRlbGV0ZU9yaWdpbkVQ
TlNfMTRTZWN1cml0eU9yaWdpbkUKIF9fWk43V2ViQ29yZTE1RGF0YWJhc2VUcmFja2VyMTRkZWxl
dGVEYXRhYmFzZUVQTlNfMTRTZWN1cml0eU9yaWdpbkVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2Vi
Q29yZTE1RGF0YWJhc2VUcmFja2VyMTRxdW90YUZvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdp
bkUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEwOTI4NikKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtNDYzOCw2ICs0NjM4LDggQEAKICAg
ICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNlQXV0aG9yaXplci5jcHAnLAogICAgICAgICAgICAg
J3N0b3JhZ2UvRGF0YWJhc2VBdXRob3JpemVyLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0
YWJhc2VDYWxsYmFjay5oJywKKyAgICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNlQ29udGV4dC5j
cHAnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VDb250ZXh0LmgnLAogICAgICAgICAg
ICAgJ3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9EYXRh
YmFzZVN5bmMuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZVRhc2suY3BwJywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZp
c2lvbiAxMDkyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzA2ODIsNiArNzA2ODIsMTQgQEAKIAkJCQk+CiAJCQk8
L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3RvcmFnZVxEYXRhYmFzZUNv
bnRleHQuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxzdG9yYWdlXERhdGFiYXNlQ29udGV4dC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXERhdGFiYXNlU3luYy5jcHAiCiAJCQkJ
PgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTA5Mjg2KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzEz
LDYgKzMzMTMsOCBAQAogCQk5NzIwNUFCODEyMzkyOTEwMDBCMTczODAgLyogTWVkaWFEb2N1bWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcyMDVB
QjQxMjM5MjkxMDAwQjE3MzgwIC8qIE1lZGlhRG9jdW1lbnQuaCAqLzsgfTsKIAkJOTcyMDVBQkIx
MjM5MjkyNzAwQjE3MzgwIC8qIFBsdWdpbkRvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MjA1QUI5MTIzOTI5MjcwMEIxNzM4MCAvKiBQ
bHVnaW5Eb2N1bWVudC5jcHAgKi87IH07CiAJCTk3MjA1QUJDMTIzOTI5MjcwMEIxNzM4MCAvKiBQ
bHVnaW5Eb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTcyMDVBQkExMjM5MjkyNzAwQjE3MzgwIC8qIFBsdWdpbkRvY3VtZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTcyNDU4NTIxNEZC
NzI0ODAwQ0E4NzQ2IC8qIERhdGFiYXNlQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzI0NTg1MDE0RkI3MjQ4MDBDQTg3NDYgLyogRGF0
YWJhc2VDb250ZXh0LmNwcCAqLzsgfTsKKwkJOTcyNDU4NTMxNEZCNzI0ODAwQ0E4NzQ2IC8qIERh
dGFiYXNlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTcyNDU4NTExNEZCNzI0ODAwQ0E4NzQ2IC8qIERhdGFiYXNlQ29udGV4dC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3MjhDMzEzMTI2
OEU0MzkwMDQxRTg5QiAvKiBNYXJrdXBBY2N1bXVsYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzI4QzMxMTEyNjhFNDM5MDA0MUU4OUIgLyog
TWFya3VwQWNjdW11bGF0b3IuY3BwICovOyB9OwogCQk5NzI4QzMxNDEyNjhFNDM5MDA0MUU4OUIg
LyogTWFya3VwQWNjdW11bGF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk3MjhDMzEyMTI2OEU0MzkwMDQxRTg5QiAvKiBNYXJrdXBBY2N1bXVsYXRv
ci5oICovOyB9OwogCQk5NzM4ODlBMDExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRXcml0ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTczODg5
OUUxMTZFQTlEQzAwQURGMzEzIC8qIERvY3VtZW50V3JpdGVyLmNwcCAqLzsgfTsKQEAgLTEwMTgw
LDYgKzEwMTgyLDggQEAKIAkJOTcyMDVBQjQxMjM5MjkxMDAwQjE3MzgwIC8qIE1lZGlhRG9jdW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFEb2N1bWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzIwNUFCOTEyMzkyOTI3MDBCMTczODAgLyog
UGx1Z2luRG9jdW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UGx1Z2luRG9jdW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzIwNUFC
QTEyMzkyOTI3MDBCMTczODAgLyogUGx1Z2luRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGx1Z2luRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTcyNDU4NTAxNEZCNzI0ODAwQ0E4NzQ2IC8qIERhdGFiYXNlQ29udGV4dC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZUNvbnRleHQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NzI0NTg1MTE0RkI3MjQ4MDBDQTg3NDYgLyog
RGF0YWJhc2VDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFi
YXNlQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzI4QzMxMTEyNjhF
NDM5MDA0MUU4OUIgLyogTWFya3VwQWNjdW11bGF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWFya3VwQWNjdW11bGF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5NzI4QzMxMjEyNjhFNDM5MDA0MUU4OUIgLyogTWFya3VwQWNjdW11bGF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya3VwQWNjdW11bGF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTczMEJFMTQxNEVGMjg2QjAwREYwNkI5
IC8qIE5hdmlnYXRvclJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdmlnYXRvclJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzODk0LDYgKzEzODk4LDggQEAKIAkJ
CQk1MUE0NUI1NDBDQUQ3RkQ3MDAwRDJCRTkgLyogRGF0YWJhc2VBdXRob3JpemVyLmggKi8sCiAJ
CQkJQjVEMzYwMTkxMTJGOEI1NjAwNDhERUE4IC8qIERhdGFiYXNlQ2FsbGJhY2suaCAqLywKIAkJ
CQlCNTlERDY4RDExOTAyOThFMDA3RTk2ODQgLyogRGF0YWJhc2VDYWxsYmFjay5pZGwgKi8sCisJ
CQkJOTcyNDU4NTAxNEZCNzI0ODAwQ0E4NzQ2IC8qIERhdGFiYXNlQ29udGV4dC5jcHAgKi8sCisJ
CQkJOTcyNDU4NTExNEZCNzI0ODAwQ0E4NzQ2IC8qIERhdGFiYXNlQ29udGV4dC5oICovLAogCQkJ
CTUxMTZEOTc1MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCAqLywKIAkJCQlC
NTIzQ0YwMzExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmNwcCAqLywKIAkJCQlCNTIz
Q0YwNDExODI2NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmggKi8sCkBAIC0yMDY2NCw3ICsy
MDY3MCw2IEBACiAJCQkJOTc4RDA3QkQxNDVBMEY2QzAwOTY5MDhEIC8qIERPTUNvcmVFeGNlcHRp
b24uY3BwICovLAogCQkJCUJDNjBENkU4MEQyOEQ4MzQwMEI5OTE4RiAvKiBET01Db3JlRXhjZXB0
aW9uLmggKi8sCiAJCQkJQkM2MEQ2RUIwRDI4RDk5OTAwQjk5MThGIC8qIERPTUNvcmVFeGNlcHRp
b24uaWRsICovLAotCQkJCUJDOUE2MTQyMTQ2ODU5RDkwMDYwNTdGRCAvKiBFdmVudE5hbWVzLmlu
ICovLAogCQkJCUJDOUE2MTQxMTQ2ODU5RDkwMDYwNTdGRCAvKiBET01FeGNlcHRpb25zLmluICov
LAogCQkJCUE4MTg1RjM2MDk3NjU3NjUwMDU4MjZEOSAvKiBET01JbXBsZW1lbnRhdGlvbi5jcHAg
Ki8sCiAJCQkJQTgxODVGMzMwOTc2NTc2NTAwNTgyNkQ5IC8qIERPTUltcGxlbWVudGF0aW9uLmgg
Ki8sCkBAIC0yMDcxMyw2ICsyMDcxOCw3IEBACiAJCQkJQUQ0NDk1RjIxNDFGQzA4OTAwNTQxRURG
IC8qIEV2ZW50TGlzdGVuZXJNYXAuaCAqLywKIAkJCQk5Mzk4ODVDMTA4QjdFM0QxMDBFNzA3QzQg
LyogRXZlbnROYW1lcy5jcHAgKi8sCiAJCQkJOTM5ODg1QzIwOEI3RTNEMTAwRTcwN0M0IC8qIEV2
ZW50TmFtZXMuaCAqLywKKwkJCQlCQzlBNjE0MjE0Njg1OUQ5MDA2MDU3RkQgLyogRXZlbnROYW1l
cy5pbiAqLywKIAkJCQk4RjY3NTYxOTEyODhCMTdCMDA0N0FDQTMgLyogRXZlbnRRdWV1ZS5oICov
LAogCQkJCUNFNUNCMUIzMTRFREFCNkYwMEJCMjc5NSAvKiBFdmVudFNlbmRlci5oICovLAogCQkJ
CUUxMkVEQkU5MEIzMDhFMEIwMDI3MDRCNiAvKiBFdmVudFRhcmdldC5jcHAgKi8sCkBAIC0yMTU1
MCw2ICsyMTU1Niw3IEBACiAJCQkJNTE5NjExNkIwQ0FDNTY1NzAwMTBBODBDIC8qIERhdGFiYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUE0NUI1NjBDQUQ3RkQ3MDAwRDJCRTkgLyogRGF0YWJh
c2VBdXRob3JpemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNUQzNjAxQTExMkY4QjU2MDA0OERF
QTggLyogRGF0YWJhc2VDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTcyNDU4NTMxNEZC
NzI0ODAwQ0E4NzQ2IC8qIERhdGFiYXNlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEx
NkQ5NzcwQ0YxNzdCRDAwQzJCODREIC8qIERhdGFiYXNlRGV0YWlscy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjUyM0NGMEIxMTgyNjc1NDAwRUJCMjlDIC8qIERhdGFiYXNlU3luYy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTE5NjExRUEwQ0FDNzQ5QzAwMTBBODBDIC8qIERhdGFiYXNlVGFzay5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yMzg1Miw2ICsyMzg1OSw3IEBACiAJCQkJQkMyMjcyRTQwRTgyRUU5
QjAwRTdGOTc1IC8qIFN0eWxlUmFyZUluaGVyaXRlZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMjI3MkJEMEU4MkVBQUUwMEU3Rjk3NSAvKiBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzIyNzI4NzBFODJFNzA3MDBFN0Y5NzUgLyogU3R5bGVSZWZs
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEJCRUQ0RDE0RkNEQkExMDAzRjBCOTggLyog
U3R5bGVSdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTM4QTlFNTE0NzQ0MzQ2MDBCMEVEMTIg
LyogU3R5bGVTaGFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE4MDBDMEExOTUxNkUwMEE4
RUY1RiAvKiBTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBODAwQTBBMTk1MTZF
MDBBOEVGNUYgLyogU3R5bGVTaGVldExpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMjQzNTYsNyAr
MjQzNjQsNiBAQAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNv
cnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NB
dWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyog
WmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0QkJFRDREMTRGQ0RCQTEwMDNGMEI5OCAv
KiBTdHlsZVJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjQ5NjQsNiArMjQ5NzEsNyBAQAogCQkJ
CTUwRDQwNjExMTQ3RDQ5REUwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJTaGFkZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTE5NjExNkEwQ0FDNTY1NzAwMTBBODBDIC8qIERhdGFiYXNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUxQTQ1QjU3MENBRDdGRDcwMDBEMkJFOSAvKiBEYXRhYmFzZUF1
dGhvcml6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTcyNDU4NTIxNEZCNzI0ODAwQ0E4NzQ2
IC8qIERhdGFiYXNlQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTIzQ0YwQTExODI2
NzU0MDBFQkIyOUMgLyogRGF0YWJhc2VTeW5jLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxOTYx
MUVCMENBQzc0OUMwMDEwQTgwQyAvKiBEYXRhYmFzZVRhc2suY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTE5NjExNkQwQ0FDNTY1NzAwMTBBODBDIC8qIERhdGFiYXNlVGhyZWFkLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMjY5MTcsNiArMjY5MjUsNyBAQAogCQkJCUE4MEU2REZCMEExOTkwNjcwMDdG
QjhDNSAvKiBTdHlsZVByb3BlcnR5U2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMjI3MkUz
MEU4MkVFOUIwMEU3Rjk3NSAvKiBTdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDMjI3MkJDMEU4MkVBQUUwMEU3Rjk3NSAvKiBTdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUU0QkJFRDRDMTRGQ0RCQTEwMDNGMEI5OCAv
KiBTdHlsZVJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThFQTgwMEQwQTE5NTE2RTAwQThF
RjVGIC8qIFN0eWxlU2hlZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThFQTgwMEIwQTE5NTE2
RTAwQThFRjVGIC8qIFN0eWxlU2hlZXRMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNUVC
NUU3MEU4MUJGRUYwMEIyNTk2NSAvKiBTdHlsZVN1cnJvdW5kRGF0YS5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTI3MzA5LDcgKzI3MzE4LDYgQEAKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkg
LyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0UyRTBFMTJGMEZD
OUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZENTM3MzUy
MTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFNEJC
RUQ0QzE0RkNEQkExMDAzRjBCOTggLyogU3R5bGVSdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAkocmV2
aXNpb24gMTA5Mjg2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw5ICszMCw2IEBACiAjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVk
ZSAiRE9NVGltZXIuaCIKLSNpbmNsdWRlICJEYXRhYmFzZS5oIgotI2luY2x1ZGUgIkRhdGFiYXNl
VGFzay5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVGhyZWFkLmgiCiAjaW5jbHVkZSAiRXJyb3JFdmVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5o
IgpAQCAtOTQsOSArOTEsNiBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpTY3JpcHRFeGVjdXRp
b25DCiAgICAgLCBtX2luRGVzdHJ1Y3RvcihmYWxzZSkKICAgICAsIG1faW5EaXNwYXRjaEVycm9y
RXZlbnQoZmFsc2UpCiAgICAgLCBtX2FjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoZmFsc2Up
Ci0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICAsIG1faGFzT3BlbkRhdGFiYXNlcyhmYWxz
ZSkKLSNlbmRpZgogewogfQogCkBAIC0xMTUsMTIgKzEwOSw2IEBAIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6On5TY3JpcHRFeGVjdXRpb24KICAgICAgICAgQVNTRVJUKCgqaXRlciktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSA9PSB0aGlzKTsKICAgICAgICAgKCppdGVyKS0+Y29udGV4dERlc3Ry
b3llZCgpOwogICAgIH0KLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIGlmIChtX2RhdGFi
YXNlVGhyZWFkKSB7Ci0gICAgICAgIEFTU0VSVChtX2RhdGFiYXNlVGhyZWFkLT50ZXJtaW5hdGlv
blJlcXVlc3RlZCgpKTsKLSAgICAgICAgbV9kYXRhYmFzZVRocmVhZCA9IDA7Ci0gICAgfQotI2Vu
ZGlmCiAjaWYgRU5BQkxFKEJMT0IpIHx8IEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICBpZiAobV9m
aWxlVGhyZWFkKSB7CiAgICAgICAgIG1fZmlsZVRocmVhZC0+c3RvcCgpOwpAQCAtMTMzLDMyICsx
MjEsNiBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uCiAjZW5kaWYK
IH0KIAotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0KLURhdGFiYXNlVGhyZWFkKiBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpkYXRhYmFzZVRocmVhZCgpCi17Ci0gICAgaWYgKCFtX2RhdGFiYXNl
VGhyZWFkICYmICFtX2hhc09wZW5EYXRhYmFzZXMpIHsKLSAgICAgICAgLy8gQ3JlYXRlIHRoZSBk
YXRhYmFzZSB0aHJlYWQgb24gZmlyc3QgcmVxdWVzdCAtIGJ1dCBub3QgaWYgYXQgbGVhc3Qgb25l
IGRhdGFiYXNlIHdhcyBhbHJlYWR5IG9wZW5lZCwKLSAgICAgICAgLy8gYmVjYXVzZSBpbiB0aGF0
IGNhc2Ugd2UgYWxyZWFkeSBoYWQgYSBkYXRhYmFzZSB0aHJlYWQgYW5kIHRlcm1pbmF0ZWQgaXQg
YW5kIHNob3VsZCBub3QgY3JlYXRlIGFub3RoZXIuCi0gICAgICAgIG1fZGF0YWJhc2VUaHJlYWQg
PSBEYXRhYmFzZVRocmVhZDo6Y3JlYXRlKCk7Ci0gICAgICAgIGlmICghbV9kYXRhYmFzZVRocmVh
ZC0+c3RhcnQoKSkKLSAgICAgICAgICAgIG1fZGF0YWJhc2VUaHJlYWQgPSAwOwotICAgIH0KLQot
ICAgIHJldHVybiBtX2RhdGFiYXNlVGhyZWFkLmdldCgpOwotfQotCi12b2lkIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OnN0b3BEYXRhYmFzZXMoRGF0YWJhc2VUYXNrU3luY2hyb25pemVyKiBjbGVh
bnVwU3luYykKLXsKLSAgICBBU1NFUlQoaXNDb250ZXh0VGhyZWFkKCkpOwotICAgIGlmIChtX2Rh
dGFiYXNlVGhyZWFkKQotICAgICAgICBtX2RhdGFiYXNlVGhyZWFkLT5yZXF1ZXN0VGVybWluYXRp
b24oY2xlYW51cFN5bmMpOwotICAgIGVsc2UgaWYgKGNsZWFudXBTeW5jKQotICAgICAgICBjbGVh
bnVwU3luYy0+dGFza0NvbXBsZXRlZCgpOwotfQotCi0jZW5kaWYKLQogdm9pZCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0Ojpwcm9jZXNzTWVzc2FnZVBvcnRNZXNzYWdlc1Nvb24oKQogewogICAgIHBv
c3RUYXNrKFByb2Nlc3NNZXNzYWdlc1Nvb25UYXNrOjpjcmVhdGUoKSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHJldmlzaW9uIDEwOTI4NikK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlDb250ZXh0LmgiCisjaW5jbHVkZSAi
U3VwcGxlbWVudGFibGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTU2LDE3ICs1NywxMiBA
QCBjbGFzcyBNZXNzYWdlUG9ydDsKICNpZiBFTkFCTEUoQkxPQikKIGNsYXNzIFB1YmxpY1VSTE1h
bmFnZXI7CiAjZW5kaWYKLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotY2xhc3MgRGF0YWJhc2U7
Ci1jbGFzcyBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXI7Ci1jbGFzcyBEYXRhYmFzZVRocmVhZDsK
LSNlbmRpZgogCiAjaWYgRU5BQkxFKEJMT0IpIHx8IEVOQUJMRShGSUxFX1NZU1RFTSkKIGNsYXNz
IEZpbGVUaHJlYWQ7CiAjZW5kaWYKIAotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCA6IHB1
YmxpYyBTZWN1cml0eUNvbnRleHQgeworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCA6IHB1
YmxpYyBTZWN1cml0eUNvbnRleHQsIHB1YmxpYyBTdXBwbGVtZW50YWJsZTxTY3JpcHRFeGVjdXRp
b25Db250ZXh0PiB7CiBwdWJsaWM6CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAg
IHZpcnR1YWwgflNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTc3LDExICs3Myw2IEBAIHB1
YmxpYzoKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIHZpcnR1YWwgYm9vbCBhbGxvd0Rh
dGFiYXNlQWNjZXNzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkYXRhYmFzZUV4Y2Vl
ZGVkUXVvdGEoY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7Ci0gICAgRGF0YWJhc2VUaHJlYWQqIGRh
dGFiYXNlVGhyZWFkKCk7Ci0gICAgdm9pZCBzZXRIYXNPcGVuRGF0YWJhc2VzKCkgeyBtX2hhc09w
ZW5EYXRhYmFzZXMgPSB0cnVlOyB9Ci0gICAgYm9vbCBoYXNPcGVuRGF0YWJhc2VzKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNPcGVuRGF0YWJhc2VzOyB9Ci0gICAgLy8gV2hlbiB0aGUgZGF0YWJhc2Ug
Y2xlYW51cCBpcyBkb25lLCBjbGVhbnVwU3luYyB3aWxsIGJlIHNpZ25hbGxlZC4KLSAgICB2b2lk
IHN0b3BEYXRhYmFzZXMoRGF0YWJhc2VUYXNrU3luY2hyb25pemVyKik7CiAjZW5kaWYKICAgICB2
aXJ0dWFsIGJvb2wgaXNDb250ZXh0VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3QgPSAwOwpAQCAtMjI0
LDExICsyMTUsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hY3RpdmVET01PYmplY3RzQXJlU3Vz
cGVuZGVkOwogICAgIEFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yU3VzcGVuc2lvbiBtX3JlYXNv
bkZvclN1c3BlbmRpbmdBY3RpdmVET01PYmplY3RzOwogCi0jaWYgRU5BQkxFKFNRTF9EQVRBQkFT
RSkKLSAgICBSZWZQdHI8RGF0YWJhc2VUaHJlYWQ+IG1fZGF0YWJhc2VUaHJlYWQ7Ci0gICAgYm9v
bCBtX2hhc09wZW5EYXRhYmFzZXM7IC8vIFRoaXMgbmV2ZXIgY2hhbmdlcyBiYWNrIHRvIGZhbHNl
LCBldmVuIGFmdGVyIHRoZSBkYXRhYmFzZSB0aHJlYWQgaXMgY2xvc2VkLgotI2VuZGlmCi0KICNp
ZiBFTkFCTEUoQkxPQikgfHwgRU5BQkxFKEZJTEVfU1lTVEVNKQogICAgIFJlZlB0cjxGaWxlVGhy
ZWFkPiBtX2ZpbGVUaHJlYWQ7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
UGFnZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VD
YWNoZS5jcHAJKHJldmlzaW9uIDEwOTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFn
ZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk1l
bW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUGFnZS5oIgogI2luY2x1ZGUgIkRPTVdpbmRv
dy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgogI2luY2x1ZGUgIkRldmljZU1vdGlv
bkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtMTIwLDcgKzEyMSw3IEBAIHN0YXRpYyBib29sIGxv
Z0NhbkNhY2hlRnJhbWVEZWNpc2lvbihGcmEKICAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1
ZTsKICAgICAgICAgfQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgICAgIGlmIChmcmFt
ZS0+ZG9jdW1lbnQoKS0+aGFzT3BlbkRhdGFiYXNlcygpKSB7CisgICAgICAgIGlmIChEYXRhYmFz
ZUNvbnRleHQ6Omhhc09wZW5EYXRhYmFzZXMoZnJhbWUtPmRvY3VtZW50KCkpKSB7CiAgICAgICAg
ICAgICBQQ0xPRygiICAgLUZyYW1lIGhhcyBvcGVuIGRhdGFiYXNlIGhhbmRsZXMiKTsKICAgICAg
ICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjYzLDcgKzI2NCw3IEBA
IGJvb2wgUGFnZUNhY2hlOjpjYW5DYWNoZVBhZ2VDb250YWluaW5nVGgKICAgICAgICAgJiYgKCFk
b2N1bWVudC0+dXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSB8fCAoIWRvY3VtZW50TG9hZGVyLT5y
ZXNwb25zZSgpLmNhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNoZSgpICYmICFkb2N1bWVudExvYWRl
ci0+cmVzcG9uc2UoKS5jYWNoZUNvbnRyb2xDb250YWluc05vU3RvcmUoKSkpCiAgICAgICAgICYm
ICghZnJhbWUtPmRvbVdpbmRvdygpIHx8ICFmcmFtZS0+ZG9tV2luZG93KCktPmhhc0V2ZW50TGlz
dGVuZXJzKGV2ZW50TmFtZXMoKS51bmxvYWRFdmVudCkpCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFT
RSkKLSAgICAgICAgJiYgIWRvY3VtZW50LT5oYXNPcGVuRGF0YWJhc2VzKCkKKyAgICAgICAgJiYg
IURhdGFiYXNlQ29udGV4dDo6aGFzT3BlbkRhdGFiYXNlcyhkb2N1bWVudCkKICNlbmRpZgogI2lm
IEVOQUJMRShTSEFSRURfV09SS0VSUykKICAgICAgICAgJiYgIVNoYXJlZFdvcmtlclJlcG9zaXRv
cnk6Omhhc1NoYXJlZFdvcmtlcnMoZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDEwOTI4NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNs
dWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiQ29u
dGVudFNlY3VyaXR5UG9saWN5LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCiAjaW5j
bHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgpAQCAtNDE4LDcgKzQxOSw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0
b3BMb2FkaW5nKFVubG9hZEV2ZW4KICAgICAgICAgZG9jLT5zZXRSZWFkeVN0YXRlKERvY3VtZW50
OjpDb21wbGV0ZSk7CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgICAgICBkb2MtPnN0
b3BEYXRhYmFzZXMoMCk7CisgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgdGhlIERhdGFiYXNlQ29u
dGV4dCB3YXRjaCBmb3Igc29tZXRoaW5nIGxpa2UgQWN0aXZlRE9NT2JqZWN0OjpzdG9wKCkgcmF0
aGVyIHRoYW4gYmVpbmcgc3BlY2lhbC1jYXNlZCBoZXJlPworICAgICAgICBEYXRhYmFzZUNvbnRl
eHQ6OnN0b3BEYXRhYmFzZXMoZG9jLCAwKTsKICNlbmRpZgogICAgIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU3VwcGxlbWVudGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TdXBwbGVtZW50YWJsZS5oCShyZXZpc2lvbiAxMDkyODYpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdXBwbGVtZW50YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC01NywxNiArNTgsMTYgQEAgcHVibGljOgogICAgIHZvaWQgcHJvdmlkZVN1cHBsZW1lbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiBrZXksIFBhc3NPd25QdHI8U3VwcGxlbWVudDxUPiA+IHN1cHBs
ZW1lbnQpCiAgICAgewogICAgICAgICBBU1NFUlQoIW1fc3VwcGxlbWVudHMuZ2V0KGtleS5pbXBs
KCkpKTsKLSAgICAgICAgbV9zdXBwbGVtZW50cy5zZXQoa2V5LmltcGwoKSwgc3VwcGxlbWVudCk7
CisgICAgICAgIG1fc3VwcGxlbWVudHMuc2V0KGtleSwgc3VwcGxlbWVudCk7CiAgICAgfQogCiAg
ICAgU3VwcGxlbWVudDxUPiogcmVxdWlyZVN1cHBsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBr
ZXkpCiAgICAgewotICAgICAgICByZXR1cm4gbV9zdXBwbGVtZW50cy5nZXQoa2V5LmltcGwoKSk7
CisgICAgICAgIHJldHVybiBtX3N1cHBsZW1lbnRzLmdldChrZXkpOwogICAgIH0KIAogcHJpdmF0
ZToKLSAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIE93blB0cjxTdXBwbGVt
ZW50PFQ+ID4gPiBTdXBwbGVtZW50TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJp
bmcsIE93blB0cjxTdXBwbGVtZW50PFQ+ID4gPiBTdXBwbGVtZW50TWFwOwogICAgIFN1cHBsZW1l
bnRNYXAgbV9zdXBwbGVtZW50czsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
QWJzdHJhY3REYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9BYnN0cmFjdERhdGFiYXNlLmNwcAkocmV2aXNpb24gMTA5Mjg2KQorKysgU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiAr
MzIsNyBAQAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKICNpbmNsdWRlICJEYXRhYmFzZUF1
dGhvcml6ZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKICNpbmNsdWRlICJEYXRh
YmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgpAQCAtMTg4LDYgKzE4OSw3IEBAIGNvbnN0IGNoYXIqIEFic3RyYWN0RGF0YWJhc2U6
OmRhdGFiYXNlSW4KIEFic3RyYWN0RGF0YWJhc2U6OkFic3RyYWN0RGF0YWJhc2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGV4cGVjdGVkVmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBEYXRh
YmFzZVR5cGUgZGF0YWJhc2VUeXBlKQogICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNv
bnRleHQpCisgICAgLCBtX2RhdGFiYXNlQ29udGV4dChEYXRhYmFzZUNvbnRleHQ6OmZyb20oY29u
dGV4dCkpCiAgICAgLCBtX25hbWUobmFtZS5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fZXhwZWN0
ZWRWZXJzaW9uKGV4cGVjdGVkVmVyc2lvbi5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fZGlzcGxh
eU5hbWUoZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuaAkocmV2aXNpb24gMTA5Mjg2KQorKysgU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYg
KzQyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGF0YWJhc2VBdXRob3JpemVy
OworY2xhc3MgRGF0YWJhc2VDb250ZXh0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCkBAIC04Niw2ICs4Nyw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgbWFya0FzRGVsZXRlZEFuZENsb3NlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZUltbWVkaWF0ZWx5KCkgPSAwOwogCisgICAgRGF0YWJhc2VDb250ZXh0KiBkYXRhYmFz
ZUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlQ29udGV4dDsgfQorCiBwcm90ZWN0
ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIENoYW5nZVZlcnNpb25XcmFwcGVyOwogICAgIGZyaWVuZCBj
bGFzcyBTUUxTdGF0ZW1lbnQ7CkBAIC0xMjQsOCArMTI3LDkgQEAgcHJvdGVjdGVkOgogCiAgICAg
c3RhdGljIGNvbnN0IGNoYXIqIGRhdGFiYXNlSW5mb1RhYmxlTmFtZSgpOwogCi0gICAgUmVmUHRy
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fY29udGV4dFRocmVhZFNlY3VyaXR5T3JpZ2luOworICAg
IFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CisgICAgRGF0YWJhc2VDb250ZXh0KiBtX2RhdGFiYXNlQ29udGV4dDsgLy8gT3duZWQgYnkgbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LgogCiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBTdHJpbmcg
bV9leHBlY3RlZFZlcnNpb247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAko
cmV2aXNpb24gMTA5Mjg2KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJDaGFuZ2VWZXJzaW9u
V3JhcHBlci5oIgogI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgIkRhdGFi
YXNlQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKICNpbmNsdWRlICJE
YXRhYmFzZVRhc2suaCIKICNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgogI2luY2x1ZGUgIkRh
dGFiYXNlVHJhY2tlci5oIgpAQCAtMTA5LDcgKzExMCw3IEBAIFBhc3NSZWZQdHI8RGF0YWJhc2U+
IERhdGFiYXNlOjpvcGVuRGF0YWIKIAogICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNl
dERhdGFiYXNlRGV0YWlscyhjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBuYW1lLCBkaXNwbGF5
TmFtZSwgZXN0aW1hdGVkU2l6ZSk7CiAKLSAgICBjb250ZXh0LT5zZXRIYXNPcGVuRGF0YWJhc2Vz
KCk7CisgICAgRGF0YWJhc2VDb250ZXh0Ojpmcm9tKGNvbnRleHQpLT5zZXRIYXNPcGVuRGF0YWJh
c2VzKCk7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5EYXRhYmFzZShj
b250ZXh0LCBkYXRhYmFzZSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+aG9zdCgpLCBuYW1l
LCBleHBlY3RlZFZlcnNpb24pOwogCkBAIC0xMzAsNyArMTMxLDcgQEAgRGF0YWJhc2U6OkRhdGFi
YXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIG1fZGF0YWJhc2VUaHJlYWRTZWN1cml0eU9y
aWdpbiA9IG1fY29udGV4dFRocmVhZFNlY3VyaXR5T3JpZ2luLT5pc29sYXRlZENvcHkoKTsKIAog
ICAgIFNjcmlwdENvbnRyb2xsZXI6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBBU1NFUlQo
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpKTsKKyAgICBBU1NFUlQo
ZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCkpOwogfQogCiBjbGFzcyBEZXJlZkNv
bnRleHRUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewpAQCAtMTc5
LDEyICsxODAsMTIgQEAgU3RyaW5nIERhdGFiYXNlOjp2ZXJzaW9uKCkgY29uc3QKIGJvb2wgRGF0
YWJhc2U6Om9wZW5BbmRWZXJpZnlWZXJzaW9uKGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2Us
IEV4Y2VwdGlvbkNvZGUmIGUsIFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewogICAgIERhdGFiYXNl
VGFza1N5bmNocm9uaXplciBzeW5jaHJvbml6ZXI7Ci0gICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCkgfHwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5k
YXRhYmFzZVRocmVhZCgpLT50ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkKKyAg
ICBpZiAoIWRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpIHx8IGRhdGFiYXNlQ29u
dGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT50ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25p
emVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7
CiAgICAgT3duUHRyPERhdGFiYXNlT3BlblRhc2s+IHRhc2sgPSBEYXRhYmFzZU9wZW5UYXNrOjpj
cmVhdGUodGhpcywgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsICZzeW5jaHJvbml6ZXIsIGUsIGVy
cm9yTWVzc2FnZSwgc3VjY2Vzcyk7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRh
YmFzZVRocmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRhc2sodGFzay5yZWxlYXNlKCkpOworICAg
IGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRh
c2sodGFzay5yZWxlYXNlKCkpOwogICAgIHN5bmNocm9uaXplci53YWl0Rm9yVGFza0NvbXBsZXRp
b24oKTsKIAogICAgIHJldHVybiBzdWNjZXNzOwpAQCAtMTkyLDI3ICsxOTMsMjcgQEAgYm9vbCBE
YXRhYmFzZTo6b3BlbkFuZFZlcmlmeVZlcnNpb24oYm9vbAogCiB2b2lkIERhdGFiYXNlOjptYXJr
QXNEZWxldGVkQW5kQ2xvc2UoKQogewotICAgIGlmIChtX2RlbGV0ZWQgfHwgIW1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKSkKKyAgICBpZiAobV9kZWxldGVkIHx8ICFk
YXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgTE9HKFN0b3JhZ2VBUEksICJNYXJraW5nICVzICglcCkgYXMgZGVsZXRlZCIsIHN0cmluZ0lk
ZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSwgdGhpcyk7CiAgICAgbV9kZWxldGVkID0gdHJ1ZTsK
IAogICAgIERhdGFiYXNlVGFza1N5bmNocm9uaXplciBzeW5jaHJvbml6ZXI7Ci0gICAgaWYgKG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+dGVybWluYXRpb25SZXF1
ZXN0ZWQoJnN5bmNocm9uaXplcikpIHsKKyAgICBpZiAoZGF0YWJhc2VDb250ZXh0KCktPmRhdGFi
YXNlVGhyZWFkKCktPnRlcm1pbmF0aW9uUmVxdWVzdGVkKCZzeW5jaHJvbml6ZXIpKSB7CiAgICAg
ICAgIExPRyhTdG9yYWdlQVBJLCAiRGF0YWJhc2UgaGFuZGxlICVwIGlzIG9uIGEgdGVybWluYXRl
ZCBEYXRhYmFzZVRocmVhZCwgY2Fubm90IGJlIG1hcmtlZCBmb3Igbm9ybWFsIGNsb3N1cmVcbiIs
IHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgT3duUHRyPERhdGFiYXNlQ2xv
c2VUYXNrPiB0YXNrID0gRGF0YWJhc2VDbG9zZVRhc2s6OmNyZWF0ZSh0aGlzLCAmc3luY2hyb25p
emVyKTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnNj
aGVkdWxlSW1tZWRpYXRlVGFzayh0YXNrLnJlbGVhc2UoKSk7CisgICAgZGF0YWJhc2VDb250ZXh0
KCktPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxlSW1tZWRpYXRlVGFzayh0YXNrLnJlbGVhc2Uo
KSk7CiAgICAgc3luY2hyb25pemVyLndhaXRGb3JUYXNrQ29tcGxldGlvbigpOwogfQogCiB2b2lk
IERhdGFiYXNlOjpjbG9zZSgpCiB7Ci0gICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+ZGF0YWJhc2VUaHJlYWQoKSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkpOwor
ICAgIEFTU0VSVChkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKSk7CisgICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQo
KS0+Z2V0VGhyZWFkSUQoKSk7CiAKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlciht
X3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKQEAgLTIyNSwxNSArMjI2LDE1IEBAIHZvaWQg
RGF0YWJhc2U6OmNsb3NlKCkKIAogICAgIC8vIE11c3QgcmVmKCkgYmVmb3JlIGNhbGxpbmcgZGF0
YWJhc2VUaHJlYWQoKS0+cmVjb3JkRGF0YWJhc2VDbG9zZWQoKS4KICAgICBSZWZQdHI8RGF0YWJh
c2U+IHByb3RlY3QgPSB0aGlzOwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJh
c2VUaHJlYWQoKS0+cmVjb3JkRGF0YWJhc2VDbG9zZWQodGhpcyk7Ci0gICAgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT51bnNjaGVkdWxlRGF0YWJhc2VUYXNrcyh0
aGlzKTsKKyAgICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+cmVjb3JkRGF0
YWJhc2VDbG9zZWQodGhpcyk7CisgICAgZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFk
KCktPnVuc2NoZWR1bGVEYXRhYmFzZVRhc2tzKHRoaXMpOwogICAgIERhdGFiYXNlVHJhY2tlcjo6
dHJhY2tlcigpLnJlbW92ZU9wZW5EYXRhYmFzZSh0aGlzKTsKIH0KIAogdm9pZCBEYXRhYmFzZTo6
Y2xvc2VJbW1lZGlhdGVseSgpCiB7CiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+aXNDb250ZXh0VGhyZWFkKCkpOwotICAgIERhdGFiYXNlVGhyZWFkKiBkYXRhYmFzZVRocmVh
ZCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKTsKKyAgICBEYXRh
YmFzZVRocmVhZCogZGF0YWJhc2VUaHJlYWQgPSBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VU
aHJlYWQoKTsKICAgICBpZiAoZGF0YWJhc2VUaHJlYWQgJiYgIWRhdGFiYXNlVGhyZWFkLT50ZXJt
aW5hdGlvblJlcXVlc3RlZCgpICYmIG9wZW5lZCgpKSB7CiAgICAgICAgIGxvZ0Vycm9yTWVzc2Fn
ZSgiZm9yY2libHkgY2xvc2luZyBkYXRhYmFzZSIpOwogICAgICAgICBkYXRhYmFzZVRocmVhZC0+
c2NoZWR1bGVJbW1lZGlhdGVUYXNrKERhdGFiYXNlQ2xvc2VUYXNrOjpjcmVhdGUodGhpcywgMCkp
OwpAQCAtMjQ4LDggKzI0OSw4IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZTo6bWF4aW11
bVNpemUKIGJvb2wgRGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KGJvb2wgc2V0VmVyc2lv
bkluTmV3RGF0YWJhc2UsIEV4Y2VwdGlvbkNvZGUmIGUsIFN0cmluZyYgZXJyb3JNZXNzYWdlKQog
ewogICAgIGlmIChBYnN0cmFjdERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShzZXRWZXJz
aW9uSW5OZXdEYXRhYmFzZSwgZSwgZXJyb3JNZXNzYWdlKSkgewotICAgICAgICBpZiAobV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpKQotICAgICAgICAgICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5yZWNvcmREYXRhYmFzZU9wZW4o
dGhpcyk7CisgICAgICAgIGlmIChkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKSkK
KyAgICAgICAgICAgIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5yZWNvcmRE
YXRhYmFzZU9wZW4odGhpcyk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzEx
LDI2ICszMTIsMjYgQEAgdm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvbigpCiAgICAg
aWYgKG1faXNUcmFuc2FjdGlvblF1ZXVlRW5hYmxlZCAmJiAhbV90cmFuc2FjdGlvblF1ZXVlLmlz
RW1wdHkoKSkKICAgICAgICAgdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9uUXVldWUudGFrZUZp
cnN0KCk7CiAKLSAgICBpZiAodHJhbnNhY3Rpb24gJiYgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5kYXRhYmFzZVRocmVhZCgpKSB7CisgICAgaWYgKHRyYW5zYWN0aW9uICYmIGRhdGFiYXNlQ29u
dGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpKSB7CiAgICAgICAgIE93blB0cjxEYXRhYmFzZVRyYW5z
YWN0aW9uVGFzaz4gdGFzayA9IERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrOjpjcmVhdGUodHJhbnNh
Y3Rpb24pOwogICAgICAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgRGF0YWJhc2VUcmFu
c2FjdGlvblRhc2sgJXAgZm9yIHRyYW5zYWN0aW9uICVwXG4iLCB0YXNrLmdldCgpLCB0YXNrLT50
cmFuc2FjdGlvbigpKTsKICAgICAgICAgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSB0cnVlOwot
ICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVk
dWxlVGFzayh0YXNrLnJlbGVhc2UoKSk7CisgICAgICAgIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRh
YmFzZVRocmVhZCgpLT5zY2hlZHVsZVRhc2sodGFzay5yZWxlYXNlKCkpOwogICAgIH0gZWxzZQog
ICAgICAgICBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlOwogfQogCiB2b2lkIERhdGFi
YXNlOjpzY2hlZHVsZVRyYW5zYWN0aW9uU3RlcChTUUxUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24s
IGJvb2wgaW1tZWRpYXRlbHkpCiB7Ci0gICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmRhdGFiYXNlVGhyZWFkKCkpCisgICAgaWYgKCFkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VU
aHJlYWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgT3duUHRyPERhdGFiYXNlVHJhbnNhY3Rp
b25UYXNrPiB0YXNrID0gRGF0YWJhc2VUcmFuc2FjdGlvblRhc2s6OmNyZWF0ZSh0cmFuc2FjdGlv
bik7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIERhdGFiYXNlVHJhbnNhY3Rpb25U
YXNrICVwIGZvciB0aGUgdHJhbnNhY3Rpb24gc3RlcFxuIiwgdGFzay5nZXQoKSk7CiAgICAgaWYg
KGltbWVkaWF0ZWx5KQotICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNl
VGhyZWFkKCktPnNjaGVkdWxlSW1tZWRpYXRlVGFzayh0YXNrLnJlbGVhc2UoKSk7CisgICAgICAg
IGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRh
c2sodGFzay5yZWxlYXNlKCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZVRhc2sodGFzay5yZWxlYXNlKCkpOwor
ICAgICAgICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+c2NoZWR1bGVUYXNr
KHRhc2sucmVsZWFzZSgpKTsKIH0KIAogY2xhc3MgRGVsaXZlclBlbmRpbmdDYWxsYmFja1Rhc2sg
OiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CkBAIC0zOTAsMTIgKzM5MSwx
MiBAQCBWZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6cGVyZm9ybUdldFRhYmxlCiAKIFNRTFRyYW5z
YWN0aW9uQ2xpZW50KiBEYXRhYmFzZTo6dHJhbnNhY3Rpb25DbGllbnQoKSBjb25zdAogewotICAg
IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPnRyYW5z
YWN0aW9uQ2xpZW50KCk7CisgICAgcmV0dXJuIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRo
cmVhZCgpLT50cmFuc2FjdGlvbkNsaWVudCgpOwogfQogCiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yKiBEYXRhYmFzZTo6dHJhbnNhY3Rpb25Db29yZGluYXRvcigpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGF0YWJhc2VUaHJlYWQoKS0+dHJhbnNhY3Rp
b25Db29yZGluYXRvcigpOworICAgIHJldHVybiBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VU
aHJlYWQoKS0+dHJhbnNhY3Rpb25Db29yZGluYXRvcigpOwogfQogCiBWZWN0b3I8U3RyaW5nPiBE
YXRhYmFzZTo6dGFibGVOYW1lcygpCkBAIC00MDQsMTEgKzQwNSwxMSBAQCBWZWN0b3I8U3RyaW5n
PiBEYXRhYmFzZTo6dGFibGVOYW1lcygpCiAgICAgLy8gaW4gZGVhbGluZyB3aXRoIHRoZW0uIEhv
d2V2ZXIsIGlmIHRoZSBjb2RlIGNoYW5nZXMsIHRoaXMgbWF5IG5vdCBiZSB0cnVlIGFueW1vcmUu
CiAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwogICAgIERhdGFiYXNlVGFza1N5bmNocm9uaXpl
ciBzeW5jaHJvbml6ZXI7Ci0gICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRhdGFi
YXNlVGhyZWFkKCkgfHwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgp
LT50ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkKKyAgICBpZiAoIWRhdGFiYXNl
Q29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpIHx8IGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFz
ZVRocmVhZCgpLT50ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKIAogICAgIE93blB0cjxEYXRhYmFzZVRhYmxlTmFtZXNUYXNrPiB0YXNr
ID0gRGF0YWJhc2VUYWJsZU5hbWVzVGFzazo6Y3JlYXRlKHRoaXMsICZzeW5jaHJvbml6ZXIsIHJl
c3VsdCk7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpLT5z
Y2hlZHVsZUltbWVkaWF0ZVRhc2sodGFzay5yZWxlYXNlKCkpOworICAgIGRhdGFiYXNlQ29udGV4
dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRhc2sodGFzay5yZWxlYXNl
KCkpOwogICAgIHN5bmNocm9uaXplci53YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKIAogICAgIHJl
dHVybiByZXN1bHQ7CkBAIC00MTgsNyArNDE5LDcgQEAgU2VjdXJpdHlPcmlnaW4qIERhdGFiYXNl
OjpzZWN1cml0eU9yaWdpbgogewogICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlz
Q29udGV4dFRocmVhZCgpKQogICAgICAgICByZXR1cm4gbV9jb250ZXh0VGhyZWFkU2VjdXJpdHlP
cmlnaW4uZ2V0KCk7Ci0gICAgaWYgKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkpCisgICAgaWYgKGN1cnJl
bnRUaHJlYWQoKSA9PSBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0VGhy
ZWFkSUQoKSkKICAgICAgICAgcmV0dXJuIG1fZGF0YWJhc2VUaHJlYWRTZWN1cml0eU9yaWdpbi5n
ZXQoKTsKICAgICByZXR1cm4gMDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0
YWJhc2VDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0Rh
dGFiYXNlQ29udGV4dC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0RhdGFiYXNlQ29udGV4dC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5o
IgorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkRhdGFiYXNlLmgiCisj
aW5jbHVkZSAiRGF0YWJhc2VUYXNrLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgRGF0YWJhc2VDb250ZXh0KiBleGlzdGluZ0Rh
dGFiYXNlQ29udGV4dEZyb20oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RGF0YWJhc2VDb250ZXh0Kj4oU3VwcGxlbWVudDxTY3JpcHRF
eGVjdXRpb25Db250ZXh0Pjo6ZnJvbShjb250ZXh0LCAiRGF0YWJhc2VDb250ZXh0IikpOworfQor
CitEYXRhYmFzZUNvbnRleHQ6OkRhdGFiYXNlQ29udGV4dCgpCisgICAgOiBtX2hhc09wZW5EYXRh
YmFzZXMoZmFsc2UpCit7Cit9CisKK0RhdGFiYXNlQ29udGV4dDo6fkRhdGFiYXNlQ29udGV4dCgp
Cit7CisgICAgaWYgKG1fZGF0YWJhc2VUaHJlYWQpIHsKKyAgICAgICAgQVNTRVJUKG1fZGF0YWJh
c2VUaHJlYWQtPnRlcm1pbmF0aW9uUmVxdWVzdGVkKCkpOworICAgICAgICBtX2RhdGFiYXNlVGhy
ZWFkID0gMDsKKyAgICB9Cit9CisKK0RhdGFiYXNlQ29udGV4dCogRGF0YWJhc2VDb250ZXh0Ojpm
cm9tKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgRGF0YWJhc2VDb250
ZXh0KiBzdXBwbGVtZW50ID0gZXhpc3RpbmdEYXRhYmFzZUNvbnRleHRGcm9tKGNvbnRleHQpOwor
ICAgIGlmICghc3VwcGxlbWVudCkgeworICAgICAgICBzdXBwbGVtZW50ID0gbmV3IERhdGFiYXNl
Q29udGV4dCgpOworICAgICAgICBwcm92aWRlVG8oY29udGV4dCwgIkRhdGFiYXNlQ29udGV4dCIs
IGFkb3B0UHRyKHN1cHBsZW1lbnQpKTsKKyAgICAgICAgQVNTRVJUKHN1cHBsZW1lbnQgPT0gZXhp
c3RpbmdEYXRhYmFzZUNvbnRleHRGcm9tKGNvbnRleHQpKTsKKyAgICB9CisgICAgcmV0dXJuIHN1
cHBsZW1lbnQ7Cit9CisKK0RhdGFiYXNlVGhyZWFkKiBEYXRhYmFzZUNvbnRleHQ6OmRhdGFiYXNl
VGhyZWFkKCkKK3sKKyAgICBpZiAoIW1fZGF0YWJhc2VUaHJlYWQgJiYgIW1faGFzT3BlbkRhdGFi
YXNlcykgeworICAgICAgICAvLyBDcmVhdGUgdGhlIGRhdGFiYXNlIHRocmVhZCBvbiBmaXJzdCBy
ZXF1ZXN0IC0gYnV0IG5vdCBpZiBhdCBsZWFzdCBvbmUgZGF0YWJhc2Ugd2FzIGFscmVhZHkgb3Bl
bmVkLAorICAgICAgICAvLyBiZWNhdXNlIGluIHRoYXQgY2FzZSB3ZSBhbHJlYWR5IGhhZCBhIGRh
dGFiYXNlIHRocmVhZCBhbmQgdGVybWluYXRlZCBpdCBhbmQgc2hvdWxkIG5vdCBjcmVhdGUgYW5v
dGhlci4KKyAgICAgICAgbV9kYXRhYmFzZVRocmVhZCA9IERhdGFiYXNlVGhyZWFkOjpjcmVhdGUo
KTsKKyAgICAgICAgaWYgKCFtX2RhdGFiYXNlVGhyZWFkLT5zdGFydCgpKQorICAgICAgICAgICAg
bV9kYXRhYmFzZVRocmVhZCA9IDA7CisgICAgfQorCisgICAgcmV0dXJuIG1fZGF0YWJhc2VUaHJl
YWQuZ2V0KCk7Cit9CisKK2Jvb2wgRGF0YWJhc2VDb250ZXh0OjpoYXNPcGVuRGF0YWJhc2VzKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgLy8gV2UgZG9uJ3QgdXNlIERh
dGFiYXNlQ29udGV4dDo6ZnJvbSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY2F1c2UKKyAgICAv
LyBEYXRhYmFzZUNvbnRleHQgdG8gYmUgYWxsb2NhdGVkIGlmIHdlIGRvbid0IGhhdmUgb25lIGFs
cmVhZHkuCisgICAgRGF0YWJhc2VDb250ZXh0KiBkYXRhYmFzZUNvbnRleHQgPSBleGlzdGluZ0Rh
dGFiYXNlQ29udGV4dEZyb20oY29udGV4dCk7CisgICAgaWYgKCFkYXRhYmFzZUNvbnRleHQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZGF0YWJhc2VDb250ZXh0LT5tX2hhc09w
ZW5EYXRhYmFzZXM7Cit9CisKK3ZvaWQgRGF0YWJhc2VDb250ZXh0OjpzdG9wRGF0YWJhc2VzKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIERhdGFiYXNlVGFza1N5bmNocm9uaXplciog
Y2xlYW51cFN5bmMpCit7CisgICAgLy8gV2UgZG9uJ3QgdXNlIERhdGFiYXNlQ29udGV4dDo6ZnJv
bSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY2F1c2UKKyAgICAvLyBEYXRhYmFzZUNvbnRleHQg
dG8gYmUgYWxsb2NhdGVkIGlmIHdlIGRvbid0IGhhdmUgb25lIGFscmVhZHkuCisgICAgRGF0YWJh
c2VDb250ZXh0KiBkYXRhYmFzZUNvbnRleHQgPSBleGlzdGluZ0RhdGFiYXNlQ29udGV4dEZyb20o
Y29udGV4dCk7CisKKyAgICBpZiAoZGF0YWJhc2VDb250ZXh0ICYmIGRhdGFiYXNlQ29udGV4dC0+
bV9kYXRhYmFzZVRocmVhZCkKKyAgICAgICAgZGF0YWJhc2VDb250ZXh0LT5tX2RhdGFiYXNlVGhy
ZWFkLT5yZXF1ZXN0VGVybWluYXRpb24oY2xlYW51cFN5bmMpOworICAgIGVsc2UgaWYgKGNsZWFu
dXBTeW5jKQorICAgICAgICBjbGVhbnVwU3luYy0+dGFza0NvbXBsZXRlZCgpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNvbnRleHQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQ29udGV4dC5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUNvbnRleHQuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlLCBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgRGF0YWJhc2VDb250ZXh0X2gK
KyNkZWZpbmUgRGF0YWJhc2VDb250ZXh0X2gKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisK
KyNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIERhdGFiYXNlOworY2xhc3MgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyOworY2xhc3MgRGF0
YWJhc2VUaHJlYWQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCitjbGFzcyBEYXRh
YmFzZUNvbnRleHQgOiBwdWJsaWMgU3VwcGxlbWVudDxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+RGF0YWJhc2VDb250ZXh0KCk7CisgICAgc3RhdGljIERh
dGFiYXNlQ29udGV4dCogZnJvbShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisKKyAgICBEYXRh
YmFzZVRocmVhZCogZGF0YWJhc2VUaHJlYWQoKTsKKworICAgIHZvaWQgc2V0SGFzT3BlbkRhdGFi
YXNlcygpIHsgbV9oYXNPcGVuRGF0YWJhc2VzID0gdHJ1ZTsgfQorCisgICAgc3RhdGljIGJvb2wg
aGFzT3BlbkRhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisKKyAgICAvLyBXaGVu
IHRoZSBkYXRhYmFzZSBjbGVhbnVwIGlzIGRvbmUsIGNsZWFudXBTeW5jIHdpbGwgYmUgc2lnbmFs
bGVkLgorICAgIHN0YXRpYyB2b2lkIHN0b3BEYXRhYmFzZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIERhdGFiYXNlVGFza1N5bmNocm9uaXplciopOworCitwcml2YXRlOgorICAgIERhdGFiYXNl
Q29udGV4dCgpOworCisgICAgUmVmUHRyPERhdGFiYXNlVGhyZWFkPiBtX2RhdGFiYXNlVGhyZWFk
OworICAgIGJvb2wgbV9oYXNPcGVuRGF0YWJhc2VzOyAvLyBUaGlzIG5ldmVyIGNoYW5nZXMgYmFj
ayB0byBmYWxzZSwgZXZlbiBhZnRlciB0aGUgZGF0YWJhc2UgdGhyZWFkIGlzIGNsb3NlZC4KK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJB
U0UpCisKKyNlbmRpZiAvLyBEYXRhYmFzZUNvbnRleHRfaApJbmRleDogU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDEwOTI4NikKKysrIFNvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2
ICszMyw3IEBACiAKICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQXV0
aG9yaXplci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgogI2luY2x1ZGUgIkRhdGFi
YXNlVGhyZWFkLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKQEAgLTE2Myw3ICsxNjQsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpjaGVja0FuZEhh
bmRsZUNsb3NlCiAgICAgbV9lcnJvckNhbGxiYWNrV3JhcHBlci5jbGVhcigpOwogCiAgICAgLy8g
VGhlIG5leHQgc3RlcHMgc2hvdWxkIGJlIGV4ZWN1dGVkIG9ubHkgaWYgd2UncmUgb24gdGhlIERC
IHRocmVhZC4KLSAgICBpZiAoY3VycmVudFRocmVhZCgpICE9IGRhdGFiYXNlKCktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSkKKyAgICBp
ZiAoY3VycmVudFRocmVhZCgpICE9IGRhdGFiYXNlKCktPmRhdGFiYXNlQ29udGV4dCgpLT5kYXRh
YmFzZVRocmVhZCgpLT5nZXRUaHJlYWRJRCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBU
aGUgY3VycmVudCBTUUxpdGUgdHJhbnNhY3Rpb24gc2hvdWxkIGJlIHN0b3BwZWQsIGFzIHdlbGwK
QEAgLTIxNSw3ICsyMTYsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpwZXJmb3JtUGVuZGluZ0Nh
bGxiCiAKIHZvaWQgU1FMVHJhbnNhY3Rpb246Om5vdGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0dGlu
Z0Rvd24oKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZGF0YWJhc2UoKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5nZXRUaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGRhdGFiYXNlKCktPmRhdGFiYXNlQ29udGV4
dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5nZXRUaHJlYWRJRCgpKTsKIAogICAgIC8vIElmIHRoZSB0
cmFuc2FjdGlvbiBpcyBpbiBwcm9ncmVzcywgd2Ugc2hvdWxkIHJvbGwgaXQgYmFjayBoZXJlLCBz
aW5jZSB0aGlzIGlzIG91ciBsYXN0CiAgICAgLy8gb3BvcnR1bml0eSB0byBkbyBzb21ldGhpbmcg
cmVsYXRlZCB0byB0aGlzIHRyYW5zYWN0aW9uIG9uIHRoZSBEQiB0aHJlYWQuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCShyZXZpc2lvbiAxMDkyODYpCisrKyBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogCisjaW5jbHVkZSAi
RGF0YWJhc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIgog
I2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIktVUkwuaCIK
QEAgLTIxNSw4ICsyMTYsOSBAQCBwdWJsaWM6CiAgICAgICAgIFdvcmtlckNvbnRleHQqIHdvcmtl
ckNvbnRleHQgPSBzdGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4oY29udGV4dCk7CiAKICNpZiBF
TkFCTEUoU1FMX0RBVEFCQVNFKQorICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHN0b3AgdGhl
IGRhdGFiYXNlcyBhcyBwYXJ0IG9mIHN0b3BBY3RpdmVET01PYmplY3RzKCkgYmVsb3c/CiAgICAg
ICAgIERhdGFiYXNlVGFza1N5bmNocm9uaXplciBjbGVhbnVwU3luYzsKLSAgICAgICAgd29ya2Vy
Q29udGV4dC0+c3RvcERhdGFiYXNlcygmY2xlYW51cFN5bmMpOworICAgICAgICBEYXRhYmFzZUNv
bnRleHQ6OnN0b3BEYXRhYmFzZXMod29ya2VyQ29udGV4dCwgJmNsZWFudXBTeW5jKTsKICNlbmRp
ZgogCiAgICAgICAgIHdvcmtlckNvbnRleHQtPnN0b3BBY3RpdmVET01PYmplY3RzKCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHJldmlzaW9uIDEwOTI4NikKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHdvcmtpbmcgY29weSkKQEAg
LTYwLDYgKzYwLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ2hyb21lLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0NvbG9yTWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTUltcGxlbWVudGF0aW9uLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlQ29udGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1
bWVudEZyYWdtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oPgpAQCAtMTEyMCw3ICsxMTIx
LDcgQEAgLSAoTlNNdXRhYmxlRGljdGlvbmFyeSAqKV9jYWNoZWFiaWxpdHlEaQogICAgIAogICAg
IGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgp
KSB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICAgICAgaWYgKGRvY3VtZW50LT5oYXNP
cGVuRGF0YWJhc2VzKCkpCisgICAgICAgIGlmIChEYXRhYmFzZUNvbnRleHQ6Omhhc09wZW5EYXRh
YmFzZXMoZG9jdW1lbnQpKQogICAgICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6W05TTnVtYmVy
IG51bWJlcldpdGhCb29sOllFU10gZm9yS2V5OldlYkZyYW1lVXNlc0RhdGFiYXNlc107CiAjZW5k
aWYKICAgICAgICAgICAgIAo=
</data>
<flag name="commit-queue"
          id="132320"
          type_id="3"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>