<?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>71433</bug_id>
          
          <creation_ts>2011-11-02 19:01:15 -0700</creation_ts>
          <short_desc>[EFL] Use standard boolean data type.</short_desc>
          <delta_ts>2011-11-16 09:38:52 -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>WebKit EFL</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>68209</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Gyuyoung Kim">gyuyoung.kim</reporter>
          <assigned_to name="Gyuyoung Kim">gyuyoung.kim</assigned_to>
          <cc>g.czajkowski</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>leandro</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>495144</commentid>
    <comment_count>0</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-11-02 19:01:15 -0700</bug_when>
    <thetext>This is a fourth step in order to be more compliant with WebKit coding style. Use standard boolean data type instead of efl boolean data type. It makes efl port is more close to webkit coding style. In addition, GTK port is also using standard boolean type despite header files are using &quot;gboolean&quot; type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495148</commentid>
    <comment_count>1</comment_count>
      <attachid>113419</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-11-02 19:03:12 -0700</bug_when>
    <thetext>Created attachment 113419
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495150</commentid>
    <comment_count>2</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-11-02 19:05:33 -0700</bug_when>
    <thetext>CC&apos;ing kenneth, tonikitoo, kubo, leandro, ryuan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495161</commentid>
    <comment_count>3</comment_count>
      <attachid>113419</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-11-02 19:40:21 -0700</bug_when>
    <thetext>Comment on attachment 113419
Patch

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

&gt; Source/WebKit/efl/ewk/ewk_contextmenu.cpp:259
&gt;  Eina_Bool ewk_context_menu_free(Ewk_Context_Menu* menu)

Internal functions such as this one could have their return type changed to bool as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495184</commentid>
    <comment_count>4</comment_count>
      <attachid>113428</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-11-02 21:25:15 -0700</bug_when>
    <thetext>Created attachment 113428
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495185</commentid>
    <comment_count>5</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-11-02 21:26:00 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 113419 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=113419&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_contextmenu.cpp:259
&gt; &gt;  Eina_Bool ewk_context_menu_free(Ewk_Context_Menu* menu)
&gt; 
&gt; Internal functions such as this one could have their return type changed to bool as well.

Ok, I change return type with bool for internal functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495190</commentid>
    <comment_count>6</comment_count>
      <attachid>113428</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-11-02 21:42:52 -0700</bug_when>
    <thetext>Comment on attachment 113428
Patch

I think that we also change Eina_Bool in static functions which start to &quot;_ewk_XXX&quot;

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

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:469
&gt; -    EINA_SAFETY_ON_NULL_RETURN_VAL(smartData-&gt;frame, EINA_FALSE);
&gt; +    EINA_SAFETY_ON_NULL_RETURN_VAL(smartData-&gt;frame, false);

Although this bug is for fixing style issue, this should be 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495193</commentid>
    <comment_count>7</comment_count>
      <attachid>113429</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-11-02 21:51:39 -0700</bug_when>
    <thetext>Created attachment 113429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495194</commentid>
    <comment_count>8</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-11-02 21:52:39 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 113428 [details])
&gt; I think that we also change Eina_Bool in static functions which start to &quot;_ewk_XXX&quot;
&gt; 
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=113428&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:469
&gt; &gt; -    EINA_SAFETY_ON_NULL_RETURN_VAL(smartData-&gt;frame, EINA_FALSE);
&gt; &gt; +    EINA_SAFETY_ON_NULL_RETURN_VAL(smartData-&gt;frame, false);
&gt; 
&gt; Although this bug is for fixing style issue, this should be 0.

Yes, right. it is fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495242</commentid>
    <comment_count>9</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2011-11-03 00:41:43 -0700</bug_when>
    <thetext>You didn&apos;t update any public header files of WebKit-EFL. Present documentation describes that API returns EINA_TRUE or EINA_FALSE not true or false.
Please update header files too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495320</commentid>
    <comment_count>10</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-11-03 03:35:34 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; You didn&apos;t update any public header files of WebKit-EFL. Present documentation describes that API returns EINA_TRUE or EINA_FALSE not true or false.
&gt; Please update header files too.

I&apos;m not sure if we should change the return type in documentation. Is it better to know return type is *Eina_Bool* type instead of *bool* ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495350</commentid>
    <comment_count>11</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2011-11-03 04:41:34 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; You didn&apos;t update any public header files of WebKit-EFL. Present documentation describes that API returns EINA_TRUE or EINA_FALSE not true or false.
&gt; &gt; Please update header files too.
&gt; 
&gt; I&apos;m not sure if we should change the return type in documentation. Is it better to know return type is *Eina_Bool* type instead of *bool* ?

You&apos;ve already changed documentation of private functions by replacing EINA_TRUE/EINA_FALSE to true/false. I think we should consistently update API documentation  too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495376</commentid>
    <comment_count>12</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-11-03 05:29:09 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; (In reply to comment #9)
&gt; &gt; &gt; You didn&apos;t update any public header files of WebKit-EFL. Present documentation describes that API returns EINA_TRUE or EINA_FALSE not true or false.
&gt; &gt; &gt; Please update header files too.
&gt; &gt; 
&gt; &gt; I&apos;m not sure if we should change the return type in documentation. Is it better to know return type is *Eina_Bool* type instead of *bool* ?
&gt; 
&gt; You&apos;ve already changed documentation of private functions by replacing EINA_TRUE/EINA_FALSE to true/false. I think we should consistently update API documentation  too.

Hmm, it seems it can make confusion when we add new APIs or internal functions. However, we can&apos;t change efl style with webkit style in public headers. Thus, I think it is difficult to change Eina_Bool of documentation with true/false. Because, I think efl application developers refer to public headers basically. But, in internal function case, that is used by webkit efl port developers. So, I think it is better to keep Eina_Bool in documentation of public headers. I&apos;d like to know other guys opinions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495386</commentid>
    <comment_count>13</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-11-03 05:46:14 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Hmm, it seems it can make confusion when we add new APIs or internal functions. However, we can&apos;t change efl style with webkit style in public headers. Thus, I think it is difficult to change Eina_Bool of documentation with true/false. Because, I think efl application developers refer to public headers basically. But, in internal function case, that is used by webkit efl port developers. So, I think it is better to keep Eina_Bool in documentation of public headers. I&apos;d like to know other guys opinions.

Yes. Just like the public headers still have &quot;Evas_Object *o&quot;, I think they should keep things familiar to the EFL users who are going to use the API -- whether we use bools or Eina_Bools, or the coding style we use internally should be transparent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495387</commentid>
    <comment_count>14</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-11-03 05:48:32 -0700</bug_when>
    <thetext>LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496020</commentid>
    <comment_count>15</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-11-03 20:29:16 -0700</bug_when>
    <thetext>Looks good to me, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496108</commentid>
    <comment_count>16</comment_count>
      <attachid>113429</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-11-04 01:39:29 -0700</bug_when>
    <thetext>Comment on attachment 113429
Patch

Nice work!

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496112</commentid>
    <comment_count>17</comment_count>
      <attachid>113429</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-04 01:53:39 -0700</bug_when>
    <thetext>Comment on attachment 113429
Patch

Clearing flags on attachment: 113429

Committed r99268: &lt;http://trac.webkit.org/changeset/99268&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496113</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-04 01:53:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502757</commentid>
    <comment_count>19</comment_count>
      <attachid>115132</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-11-15 02:39:01 -0800</bug_when>
    <thetext>Created attachment 115132
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502758</commentid>
    <comment_count>20</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-11-15 02:40:03 -0800</bug_when>
    <thetext>I missed to change *Eina_Bool* in internal struct. So, I re-open this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502846</commentid>
    <comment_count>21</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-11-15 05:56:49 -0800</bug_when>
    <thetext>LGTM, just not sure if it&apos;s better to reopen this one or open a new bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503975</commentid>
    <comment_count>22</comment_count>
      <attachid>115132</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2011-11-16 09:38:40 -0800</bug_when>
    <thetext>Comment on attachment 115132
Patch

This looks fine but you really need to open a new bug for it. CC me and I&apos;ll r+ it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503976</commentid>
    <comment_count>23</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2011-11-16 09:38:52 -0800</bug_when>
    <thetext>Closing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113419</attachid>
            <date>2011-11-02 19:03:12 -0700</date>
            <delta_ts>2011-11-02 21:25:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71433-20111103110312.patch</filename>
            <type>text/plain</type>
            <size>159903</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkxMjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBjMmMxNDZiZWNh
MTFjNDdhNjU1YTc5NjgzMjc0ZTc3OWQ5ZjkzMmJjLi4yYjU5YTNlZTcyYzI3ZTRkNDA0YzBmN2Y5
NzZlNzNlZTAyY2M2NDc4IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEt
MTEtMDIgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAg
ICBbRUZMXSBVc2Ugc3RhbmRhcmQgYm9vbGVhbmQgZGF0YSB0eXBlLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE0MzMKKworICAgICAgICBUaGlzIGlz
IGEgZm91cnRoIHN0ZXAgaW4gb3JkZXIgdG8gYmUgbW9yZSBjb21wbGlhbnQgd2l0aCBXZWJLaXQg
Y29kaW5nIHN0eWxlLgorICAgICAgICBVc2Ugc3RhbmRhcmQgYm9vbGVhbiBkYXRhIHR5cGUgaW5z
dGVhZCBvZiBlZmwgYm9vbGVhbiBkYXRhIHR5cGUuIEl0IG1ha2VzIGVmbCBwb3J0CisgICAgICAg
IGlzIG1vcmUgY2xvc2UgdG8gd2Via2l0IGNvZGluZyBzdHlsZS4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGV3ay9ld2tfY29udGV4dG1lbnUuY3Bw
OgorICAgICAgICAqIGV3ay9ld2tfY29va2llcy5jcHA6CisgICAgICAgICogZXdrL2V3a19mcmFt
ZS5jcHA6CisgICAgICAgICogZXdrL2V3a19oaXN0b3J5LmNwcDoKKyAgICAgICAgKiBld2svZXdr
X2pzLmNwcDoKKyAgICAgICAgKiBld2svZXdrX21haW4uY3BwOgorICAgICAgICAqIGV3ay9ld2tf
cHJvdG9jb2xfaGFuZGxlcl9zb3VwLmNwcDoKKyAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNw
cDoKKyAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwOgorICAgICAgICAq
IGV3ay9ld2tfdGlsZWRfbWF0cml4LmNwcDoKKyAgICAgICAgKiBld2svZXdrX3RpbGVkX21vZGVs
LmNwcDoKKyAgICAgICAgKiBld2svZXdrX3V0aWwuY3BwOgorICAgICAgICAqIGV3ay9ld2tfdmll
dy5jcHA6CisgICAgICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5jcHA6CisgICAgICAgICogZXdr
L2V3a192aWV3X3RpbGVkLmNwcDoKKwogMjAxMS0xMS0wMiAgVG9tIFNlcGV6ICA8dHNlcGV6QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBYU1NBdWRpdG9yIGlzIHNpbGVudApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb250ZXh0bWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2NvbnRleHRtZW51LmNwcAppbmRleCAxZTRiNmZiN2YzNmUwYjI4MWJkNzYy
ZWFkN2I2ZjcxOWFmY2Q3ZmQwLi5kNWRkMWY5ZDMxNzlhOGQ3ZWZhYTAyNjhjN2QwNTVkN2M3M2Yy
ODk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2NvbnRleHRtZW51LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2NvbnRleHRtZW51LmNwcApAQCAtODMs
MTIgKzgzLDEyIEBAIHZvaWQgZXdrX2NvbnRleHRfbWVudV91bnJlZihFd2tfQ29udGV4dF9NZW51
KiBtZW51KQogRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfZGVzdHJveShFd2tfQ29udGV4dF9N
ZW51KiBtZW51KQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChtZW51LCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwobWVudS0+Y29udHJvbGxlciwgRUlOQV9GQUxTRSk7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG1lbnUsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwobWVudS0+Y29udHJvbGxlciwgZmFsc2UpOwogICAgIG1lbnUt
PmNvbnRyb2xsZXItPmNsZWFyQ29udGV4dE1lbnUoKTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOwor
ICAgIHJldHVybiB0cnVlOwogI2Vsc2UKLSAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICByZXR1
cm4gZmFsc2U7CiAjZW5kaWYKIH0KIApAQCAtMTIwLDE3ICsxMjAsMTcgQEAgRXdrX0NvbnRleHRf
TWVudV9JdGVtKiBld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3KEV3a19Db250ZXh0X01lbnVfSXRl
bV9UeXBlIHR5cGUKIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fc2VsZWN0KEV3a19D
b250ZXh0X01lbnUqIG1lbnUsIEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKIHsKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
bWVudSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0
ZW0sIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChtZW51
LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIGZhbHNl
KTsKICAgICBXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24gPSBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbj4oaXRlbS0+YWN0aW9uKTsKICAgICBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW1UeXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250ZXh0TWVu
dUl0ZW1UeXBlPihpdGVtLT50eXBlKTsKIAogICAgIC8vIERvbid0IGNhcmUgYWJvdXQgdGl0bGUg
YW5kIHN1Ym1lbnUgYXMgdGhleSdyZSBub3QgdXNlZCBhZnRlciB0aGlzIHBvaW50LgogICAgIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbSBjb3JlKHR5cGUsIGFjdGlvbiwgV1RGOjpTdHJpbmcoKSk7
CiAgICAgbWVudS0+Y29udHJvbGxlci0+Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoJmNvcmUpOwot
ICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiAjZWxzZQotICAgIHJldHVy
biBFSU5BX0ZBTFNFOworICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogfQogCkBAIC0xNTAsOSAr
MTUwLDkgQEAgRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgZXdrX2NvbnRleHRfbWVudV9pdGVt
X3R5cGVfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnUKIAogRWluYV9Cb29sIGV3a19jb250ZXh0
X21lbnVfaXRlbV90eXBlX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0sIEV3a19Db250
ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUpCiB7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKGl0ZW0sIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChpdGVtLCBmYWxzZSk7CiAgICAgaXRlbS0+dHlwZSA9IHR5cGU7Ci0gICAgcmV0dXJuIEVJ
TkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRXdrX0NvbnRleHRfTWVudV9BY3Rpb24g
ZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlvbl9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9J
dGVtKiBpdGVtKQpAQCAtMTYzLDkgKzE2Myw5IEBAIEV3a19Db250ZXh0X01lbnVfQWN0aW9uIGV3
a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfCiAK
IEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX3NldChFd2tfQ29udGV4dF9N
ZW51X0l0ZW0qIGl0ZW0sIEV3a19Db250ZXh0X01lbnVfQWN0aW9uIGFjdGlvbikKIHsKLSAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgRUlOQV9GQUxTRSk7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIGZhbHNlKTsKICAgICBpdGVtLT5hY3Rp
b24gPSBhY3Rpb247Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogY29uc3QgY2hhciogZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX2dldChjb25zdCBFd2tf
Q29udGV4dF9NZW51X0l0ZW0qIGl0ZW0pCkBAIC0xODMsMjggKzE4MywyOCBAQCBjb25zdCBjaGFy
KiBld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSog
aXRlbSwgY29uc3QgYwogCiBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRf
Z2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKIHsKLSAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIGZhbHNlKTsKICAgICByZXR1cm4gaXRlbS0+Y2hlY2tl
ZDsKIH0KIAogRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9jaGVja2VkX3NldChFd2tf
Q29udGV4dF9NZW51X0l0ZW0qIGl0ZW0sIEVpbmFfQm9vbCBjaGVja2VkKQogewotICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOwogICAgIGl0ZW0tPmNoZWNrZWQg
PSBjaGVja2VkOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9nZXQoY29uc3QgRXdrX0Nv
bnRleHRfTWVudV9JdGVtKiBpdGVtKQogewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChpdGVtLCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoaXRlbSwgZmFsc2UpOwogICAgIHJldHVybiBpdGVtLT5lbmFibGVkOwogfQogCiBFaW5hX0Jv
b2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRfc2V0KEV3a19Db250ZXh0X01lbnVfSXRl
bSogaXRlbSwgRWluYV9Cb29sIGVuYWJsZWQpCiB7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKGl0ZW0sIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChpdGVtLCBmYWxzZSk7CiAgICAgaXRlbS0+ZW5hYmxlZCA9IGVuYWJsZWQ7Ci0gICAg
cmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCkBAIC0yNDksNyArMjQ5
LDcgQEAgRXdrX0NvbnRleHRfTWVudSogZXdrX2NvbnRleHRfbWVudV9uZXcoRXZhc19PYmplY3Qq
IHZpZXcsIFdlYkNvcmU6OkNvbnRleHRNZW51Q28KICAqIEZyZWVzIHRoZSBjb250ZXh0IG1lbnUu
CiAgKgogICogQHBhcmFtIG1lbnUgdGhlIHZpZXcgb2JqZWN0Ci0gKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBvbiBzdWNjZXNzLCBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqIEByZXR1cm4g
QGMgdHJ1ZSBvbiBzdWNjZXNzLCBvciBAYyBmYWxzZSBvbiBmYWlsdXJlCiAgKgogICogQG5vdGUg
ZW1pdHMgYSBzaWduYWwgImNvbnRleHRtZW51LGZyZWUiCiAgKgpAQCAtMjU4LDEwICsyNTgsMTAg
QEAgRXdrX0NvbnRleHRfTWVudSogZXdrX2NvbnRleHRfbWVudV9uZXcoRXZhc19PYmplY3QqIHZp
ZXcsIFdlYkNvcmU6OkNvbnRleHRNZW51Q28KICAqLwogRWluYV9Cb29sIGV3a19jb250ZXh0X21l
bnVfZnJlZShFd2tfQ29udGV4dF9NZW51KiBtZW51KQogewotICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChtZW51LCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwobWVudSwgZmFsc2UpOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2NhbGwobWVudS0+dmlldywgImNvbnRleHRtZW51LGZyZWUiLCBtZW51KTsKICAgICBld2tfY29u
dGV4dF9tZW51X3VucmVmKG1lbnUpOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19j
b29raWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29va2llcy5jcHAKaW5kZXgg
ZmY2Zjk3NDU0ODkzNzU1ODBlM2VlZThhMWVkOWUzNWNmMjFmY2YxNi4uZWVkNWU5NzYzNDNiMDc1
NzM0ZWRiMzBlY2VkMmM4ZTM4NDJjM2NiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19jb29raWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Nvb2tp
ZXMuY3BwCkBAIC00Niw3ICs0Niw3IEBAIEVpbmFfQm9vbCBld2tfY29va2llc19maWxlX3NldChj
b25zdCBjaGFyKiBmaWxlbmFtZSkKICAgICAgICAgY29va2llSmFyID0gc291cF9jb29raWVfamFy
X25ldygpOwogCiAgICAgaWYgKCFjb29raWVKYXIpCi0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNF
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBzb3VwX2Nvb2tpZV9qYXJfc2V0X2FjY2Vw
dF9wb2xpY3koY29va2llSmFyLCBTT1VQX0NPT0tJRV9KQVJfQUNDRVBUX05PX1RISVJEX1BBUlRZ
KTsKIApAQCAtNTgsOSArNTgsOSBAQCBFaW5hX0Jvb2wgZXdrX2Nvb2tpZXNfZmlsZV9zZXQoY29u
c3QgY2hhciogZmlsZW5hbWUpCiAgICAgV2ViQ29yZTo6c2V0RGVmYXVsdENvb2tpZUphcihjb29r
aWVKYXIpOwogICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1NFU1NJ
T05fRkVBVFVSRShjb29raWVKYXIpKTsKIAotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0
dXJuIHRydWU7CiAjZWxzZQotICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIHJldHVybiBmYWxz
ZTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Zy
YW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4IDY3ZGUz
YmY2ZDY1MjI3MTA1MWJmNzBiZWU1YmJkOGY1MDhiNjEyY2UuLjcwNGUxNDRlZDAyZTJjMzYyMDdj
YTgzYjNlMWNkZmQxYmE2MzI3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCkBA
IC0xNDIsMTggKzE0MiwxOCBAQCBzdGF0aWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwq
IF9ld2tfZnJhbWVfbG9hZGVyX2VmbF9nZXQoY29uc3QgV2ViQ29yZTo6RgogCiBzdGF0aWMgRWlu
YV9Cb29sIF9ld2tfZnJhbWVfY2hpbGRyZW5faXRlcmF0b3JfbmV4dChFaW5hX0l0ZXJhdG9yX0V3
a19GcmFtZSogaXRlcmF0b3IsIEV2YXNfT2JqZWN0KiogZGF0YSkKIHsKLSAgICBFV0tfRlJBTUVf
U0RfR0VUX09SX1JFVFVSTihpdGVyYXRvci0+b2JqZWN0LCBzbWFydERhdGEsIEVJTkFfRkFMU0Up
OwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBF
SU5BX0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihpdGVyYXRvci0+b2Jq
ZWN0LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOwogCiAgICAgV2ViQ29yZTo6RnJhbWVUcmVlKiB0
cmVlID0gc21hcnREYXRhLT5mcmFtZS0+dHJlZSgpOyAvLyBjaGVjayBpZiBpdCdzIHN0aWxsIHZh
bGlkCi0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHRyZWUsIEVJTkFfRkFMU0Up
OworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh0cmVlLCBmYWxzZSk7CiAKICAg
ICBpZiAoaXRlcmF0b3ItPmN1cnJlbnRJbmRleCA8IHRyZWUtPmNoaWxkQ291bnQoKSkgewogICAg
ICAgICAqZGF0YSA9IEVXS1ByaXZhdGU6OmtpdEZyYW1lKHRyZWUtPmNoaWxkKGl0ZXJhdG9yLT5j
dXJyZW50SW5kZXgrKykpOwotICAgICAgICByZXR1cm4gRUlOQV9UUlVFOworICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKLSAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICByZXR1cm4gZmFs
c2U7CiB9CiAKIHN0YXRpYyBFdmFzX09iamVjdCogX2V3a19mcmFtZV9jaGlsZHJlbl9pdGVyYXRv
cl9nZXRfY29udGFpbmVyKEVpbmFfSXRlcmF0b3JfRXdrX0ZyYW1lKiBpdGVyYXRvcikKQEAgLTE3
Nyw3ICsxNzcsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX2ZyYW1lX3NtYXJ0X2FkZChFdmFzX09iamVj
dCogZXdrRnJhbWUpCiAgICAgc21hcnREYXRhLT5zZWxmID0gZXdrRnJhbWU7CiAKICAgICBfcGFy
ZW50X3NjLmFkZChld2tGcmFtZSk7Ci0gICAgZXZhc19vYmplY3Rfc3RhdGljX2NsaXBfc2V0KHNt
YXJ0RGF0YS0+YmFzZS5jbGlwcGVyLCBFSU5BX0ZBTFNFKTsKKyAgICBldmFzX29iamVjdF9zdGF0
aWNfY2xpcF9zZXQoc21hcnREYXRhLT5iYXNlLmNsaXBwZXIsIGZhbHNlKTsKICAgICBldmFzX29i
amVjdF9tb3ZlKHNtYXJ0RGF0YS0+YmFzZS5jbGlwcGVyLCAwLCAwKTsKICAgICBldmFzX29iamVj
dF9yZXNpemUoc21hcnREYXRhLT5iYXNlLmNsaXBwZXIsIDAsIDApOwogCkBAIC0zMTAsMTIgKzMx
MCwxMiBAQCBFdmFzX09iamVjdCogZXdrX2ZyYW1lX2NoaWxkX2ZpbmQoRXZhc19PYmplY3QqIGV3
a0ZyYW1lLCBjb25zdCBjaGFyKiBuYW1lKQogCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3VyaV9zZXQo
RXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiB1cmkpCiB7Ci0gICAgRVdLX0ZSQU1F
X1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7CisgICAg
RVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOwog
ICAgIFdlYkNvcmU6OktVUkwga3VybChXZWJDb3JlOjpLVVJMKCksIFdURjo6U3RyaW5nOjpmcm9t
VVRGOCh1cmkpKTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxKGt1cmwpOwogICAg
IFdlYkNvcmU6OkZyYW1lTG9hZGVyKiBsb2FkZXIgPSBzbWFydERhdGEtPmZyYW1lLT5sb2FkZXIo
KTsKICAgICBsb2FkZXItPmxvYWQocmVxLCBmYWxzZSk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogY29uc3QgY2hhciogZXdrX2ZyYW1lX3VyaV9nZXQoY29u
c3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQpAQCAtMzU1LDE0ICszNTUsMTQgQEAgRWluYV9Cb29s
IGV3a19mcmFtZV9jb250ZW50c19zaXplX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUs
IEV2YXNfQ29vcmQqIHcKICAgICAgICAgKndpZHRoID0gMDsKICAgICBpZiAoaGVpZ2h0KQogICAg
ICAgICAqaGVpZ2h0ID0gMDsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFt
ZSwgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVS
Tihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgaWYgKCFzbWFydERhdGEtPmZyYW1l
IHx8ICFzbWFydERhdGEtPmZyYW1lLT52aWV3KCkpCi0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNF
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKHdpZHRoKQogICAgICAgICAqd2lkdGgg
PSBzbWFydERhdGEtPmZyYW1lLT52aWV3KCktPmNvbnRlbnRzV2lkdGgoKTsKICAgICBpZiAoaGVp
Z2h0KQogICAgICAgICAqaGVpZ2h0ID0gc21hcnREYXRhLT5mcmFtZS0+dmlldygpLT5jb250ZW50
c0hlaWdodCgpOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IHN0YXRpYyBFaW5hX0Jvb2wgX2V3a19mcmFtZV9jb250ZW50c19zZXRfaW50ZXJuYWwoRXdrX0Zy
YW1lX1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3QgY2hhciogY29udGVudHMsIHNpemVfdCBj
b250ZW50c1NpemUsIGNvbnN0IGNoYXIqIG1pbWVUeXBlLCBjb25zdCBjaGFyKiBlbmNvZGluZywg
Y29uc3QgY2hhciogYmFzZVVyaSwgY29uc3QgY2hhciogdW5yZWFjaGFibGVVcmkpCkBAIC0zOTMs
MjQgKzM5MywyNCBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfZnJhbWVfY29udGVudHNfc2V0X2lu
dGVybmFsKEV3a19GcmFtZV9TbWFydF9EYXRhKiBzbWFydERhdAogICAgIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0KGJhc2VLVVJMKTsKIAogICAgIHNtYXJ0RGF0YS0+ZnJhbWUtPmxv
YWRlcigpLT5sb2FkKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhLCBmYWxzZSk7Ci0gICAgcmV0dXJu
IEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3a19mcmFtZV9j
b250ZW50c19zZXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBjb250ZW50cywg
c2l6ZV90IGNvbnRlbnRzU2l6ZSwgY29uc3QgY2hhciogbWltZVR5cGUsIGNvbnN0IGNoYXIqIGVu
Y29kaW5nLCBjb25zdCBjaGFyKiBiYXNlVXJpKQogewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1Jf
UkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZ
X09OX0ZBTFNFX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgRUlOQV9GQUxTRSk7Ci0gICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvbnRlbnRzLCBFSU5BX0ZBTFNFKTsKKyAg
ICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7
CisgICAgRUlOQV9TQUZFVFlfT05fRkFMU0VfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBm
YWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvbnRlbnRzLCBmYWxz
ZSk7CiAgICAgcmV0dXJuIF9ld2tfZnJhbWVfY29udGVudHNfc2V0X2ludGVybmFsCiAgICAgICAg
ICAgICAgICAoc21hcnREYXRhLCBjb250ZW50cywgY29udGVudHNTaXplLCBtaW1lVHlwZSwgZW5j
b2RpbmcsIGJhc2VVcmksIDApOwogfQogCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2NvbnRlbnRzX2Fs
dGVybmF0ZV9zZXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBjb250ZW50cywg
c2l6ZV90IGNvbnRlbnRzU2l6ZSwgY29uc3QgY2hhciogbWltZVR5cGUsIGNvbnN0IGNoYXIqIGVu
Y29kaW5nLCBjb25zdCBjaGFyKiBiYXNlVXJpLCBjb25zdCBjaGFyKiB1bnJlYWNoYWJsZVVyaSkK
IHsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBF
SU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9GQUxTRV9SRVRVUk5fVkFMKHNtYXJ0RGF0
YS0+ZnJhbWUsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChjb250ZW50cywgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHVucmVhY2hhYmxlVXJpLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09S
X1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05f
RkFMU0VfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvbnRlbnRzLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHVucmVhY2hhYmxlVXJpLCBmYWxzZSk7CiAgICAgcmV0dXJuIF9l
d2tfZnJhbWVfY29udGVudHNfc2V0X2ludGVybmFsCiAgICAgICAgICAgICAgICAoc21hcnREYXRh
LCBjb250ZW50cywgY29udGVudHNTaXplLCBtaW1lVHlwZSwgZW5jb2RpbmcsIGJhc2VVcmksCiAg
ICAgICAgICAgICAgICB1bnJlYWNoYWJsZVVyaSk7CkBAIC00MTgsMzAgKzQxOCwzMCBAQCBFaW5h
X0Jvb2wgZXdrX2ZyYW1lX2NvbnRlbnRzX2FsdGVybmF0ZV9zZXQoRXZhc19PYmplY3QqIGV3a0Zy
YW1lLCBjb25zdCBjaGFyKiBjbwogCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3NjcmlwdF9leGVjdXRl
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogc2NyaXB0KQogewotICAgIEVXS19G
UkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwot
ICAgIEVJTkFfU0FGRVRZX09OX0ZBTFNFX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgRUlO
QV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNjcmlwdCwgRUlO
QV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0
RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX0ZBTFNFX1JFVFVSTl9WQUwoc21hcnRE
YXRhLT5mcmFtZSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChz
Y3JpcHQsIGZhbHNlKTsKICAgICBzbWFydERhdGEtPmZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNj
cmlwdChXVEY6OlN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgdHJ1ZSk7Ci0gICAgcmV0dXJuIEVJ
TkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3a19mcmFtZV9lZGl0
YWJsZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQogewotICAgIEVXS19GUkFNRV9T
RF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBFSU5BX0ZBTFNF
KTsKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBm
YWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJh
bWUsIGZhbHNlKTsKICAgICByZXR1cm4gc21hcnREYXRhLT5lZGl0YWJsZTsKIH0KIAogRWluYV9C
b29sIGV3a19mcmFtZV9lZGl0YWJsZV9zZXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFaW5hX0Jv
b2wgZWRpdGFibGUpCiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUs
IHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIEVJTkFfRkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRf
T1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOwogICAgIGVkaXRhYmxl
ID0gISFlZGl0YWJsZTsKICAgICBpZiAoc21hcnREYXRhLT5lZGl0YWJsZSA9PSBlZGl0YWJsZSkK
LSAgICAgICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYg
KGVkaXRhYmxlKQogICAgICAgICBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS0+YXBwbHlFZGl0
aW5nU3R5bGVUb0JvZHlFbGVtZW50KCk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogY2hhciogZXdrX2ZyYW1lX3NlbGVjdGlvbl9nZXQoY29uc3QgRXZhc19P
YmplY3QqIGV3a0ZyYW1lKQpAQCAtNDU2LDkgKzQ1Niw5IEBAIGNoYXIqIGV3a19mcmFtZV9zZWxl
Y3Rpb25fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKIAogRWluYV9Cb29sIGV3a19m
cmFtZV90ZXh0X3NlYXJjaChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIq
IHRleHQsIEVpbmFfQm9vbCBjYXNlU2Vuc2l0aXZlLCBFaW5hX0Jvb2wgZm9yd2FyZCwgRWluYV9C
b29sIHdyYXApCiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNt
YXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHNtYXJ0RGF0YS0+ZnJhbWUsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTCh0ZXh0LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JF
VFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwodGV4dCwgZmFsc2UpOwogCiAgICAgcmV0dXJuIHNtYXJ0RGF0YS0+
ZnJhbWUtPmVkaXRvcigpLT5maW5kU3RyaW5nKFdURjo6U3RyaW5nOjpmcm9tVVRGOCh0ZXh0KSwg
Zm9yd2FyZCwgY2FzZVNlbnNpdGl2ZSwgd3JhcCwgdHJ1ZSk7CiB9CkBAIC00NjYsNyArNDY2LDcg
QEAgRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X3NlYXJjaChjb25zdCBFdmFzX09iamVjdCogZXdr
RnJhbWUsIGNvbnN0IGNoYXIqIHRleHQsIEUKIHVuc2lnbmVkIGludCBld2tfZnJhbWVfdGV4dF9t
YXRjaGVzX21hcmsoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBzdHJpbmcsIEVp
bmFfQm9vbCBjYXNlU2Vuc2l0aXZlLCBFaW5hX0Jvb2wgaGlnaGxpZ2h0LCB1bnNpZ25lZCBpbnQg
bGltaXQpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0
RGF0YSwgMCk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+
ZnJhbWUsIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChz
bWFydERhdGEtPmZyYW1lLCBmYWxzZSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHN0cmluZywgMCk7CiAKICAgICBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS0+c2V0TWFy
a2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZChoaWdobGlnaHQpOwpAQCAtNDc1LDI1ICs0NzUs
MjUgQEAgdW5zaWduZWQgaW50IGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbWFyayhFdmFzX09iamVj
dCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIHN0cmkKIAogRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0
X21hdGNoZXNfdW5tYXJrX2FsbChFdmFzX09iamVjdCogZXdrRnJhbWUpCiB7Ci0gICAgRVdLX0ZS
QU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0g
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIEVJTkFf
RkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERh
dGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRh
LT5mcmFtZSwgZmFsc2UpOwogCiAgICAgc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKS0+bWFy
a2VycygpLT5yZW1vdmVNYXJrZXJzKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyOjpUZXh0TWF0Y2gp
OwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9v
bCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9zZXQoRXZhc19PYmplY3QqIGV3a0Zy
YW1lLCBFaW5hX0Jvb2wgaGlnaGxpZ2h0KQogewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVU
VVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tf
RlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsK
ICAgICBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS0+c2V0TWFya2VkVGV4dE1hdGNoZXNBcmVI
aWdobGlnaHRlZChoaWdobGlnaHQpOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9n
ZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQogewotICAgIEVXS19GUkFNRV9TRF9HRVRf
T1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKKyAg
ICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZh
bHNlKTsKICAgICByZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCktPm1hcmtlZFRleHRN
YXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKTsKIH0KIApAQCAtNTE1LDggKzUxNSw4IEBAIHN0YXRpYyBi
b29sIF9ld2tfZnJhbWVfcmVjdF9pc19uZWdhdGl2ZV92YWx1ZShjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiByZWN0KQogCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19udGhfcG9zX2dl
dChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIHNpemVfdCBudW1iZXIsIGludCogeCwgaW50
KiB5KQogewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERh
dGEsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFy
dERhdGEtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVS
Tihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsKIAogICAgIFZlY3RvcjxXZWJDb3Jl
OjpJbnRSZWN0PiBpbnRSZWN0cyA9IHNtYXJ0RGF0YS0+ZnJhbWUtPmRvY3VtZW50KCktPm1hcmtl
cnMoKS0+cmVuZGVyZWRSZWN0c0Zvck1hcmtlcnMoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXI6OlRl
eHRNYXRjaCk7CiAKQEAgLTUyNCw3ICs1MjQsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRf
bWF0Y2hlc19udGhfcG9zX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIHNpemVfdAog
ICAgIHN0ZDo6cmVtb3ZlX2lmKGludFJlY3RzLmJlZ2luKCksIGludFJlY3RzLmVuZCgpLCBfZXdr
X2ZyYW1lX3JlY3RfaXNfbmVnYXRpdmVfdmFsdWUpOwogCiAgICAgaWYgKGludFJlY3RzLmlzRW1w
dHkoKSB8fCBudW1iZXIgPiBpbnRSZWN0cy5zaXplKCkpCi0gICAgICAgIHJldHVybiBFSU5BX0ZB
TFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBzdGQ6OnNvcnQoaW50UmVjdHMuYmVn
aW4oKSwgaW50UmVjdHMuZW5kKCksIF9ld2tfZnJhbWVfcmVjdF9jbXBfbGVzc190aGFuKTsKIApA
QCAtNTMyLDMxICs1MzIsMzEgQEAgRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbnRo
X3Bvc19nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBzaXplX3QKICAgICAgICAgKngg
PSBpbnRSZWN0c1tudW1iZXIgLSAxXS54KCk7CiAgICAgaWYgKHkpCiAgICAgICAgICp5ID0gaW50
UmVjdHNbbnVtYmVyIC0gMV0ueSgpOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfZnJhbWVfc3RvcChFdmFzX09iamVjdCogZXdrRnJh
bWUpCiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0
YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0
RGF0YS0+ZnJhbWUsIEVJTkFfRkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJO
KGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOwogICAgIHNtYXJ0RGF0YS0+ZnJhbWUt
PmxvYWRlcigpLT5zdG9wQWxsTG9hZGVycygpOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfZnJhbWVfcmVsb2FkKEV2YXNfT2JqZWN0
KiBld2tGcmFtZSkKIHsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwg
c21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoc21hcnREYXRhLT5mcmFtZSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7CiAgICAgc21hcnREYXRh
LT5mcmFtZS0+bG9hZGVyKCktPnJlbG9hZCgpOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfZnJhbWVfcmVsb2FkX2Z1bGwoRXZhc19P
YmplY3QqIGV3a0ZyYW1lKQogewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0Zy
YW1lLCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVfU0Rf
R0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsKICAgICBzbWFy
dERhdGEtPmZyYW1lLT5sb2FkZXIoKS0+cmVsb2FkKHRydWUpOwotICAgIHJldHVybiBFSU5BX1RS
VUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfZnJhbWVfYmFjayhFdmFz
X09iamVjdCogZXdrRnJhbWUpCkBAIC01NzEsMTMgKzU3MSwxMyBAQCBFaW5hX0Jvb2wgZXdrX2Zy
YW1lX2ZvcndhcmQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQogCiBFaW5hX0Jvb2wgZXdrX2ZyYW1l
X25hdmlnYXRlKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgaW50IHN0ZXBzKQogewotICAgIEVXS19G
UkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwot
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBFSU5B
X0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnRE
YXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0
YS0+ZnJhbWUsIGZhbHNlKTsKICAgICBXZWJDb3JlOjpQYWdlKiBwYWdlID0gc21hcnREYXRhLT5m
cmFtZS0+cGFnZSgpOwogICAgIGlmICghcGFnZS0+Y2FuR29CYWNrT3JGb3J3YXJkKHN0ZXBzKSkK
LSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBw
YWdlLT5nb0JhY2tPckZvcndhcmQoc3RlcHMpOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfZnJhbWVfYmFja19wb3NzaWJsZShFdmFz
X09iamVjdCogZXdrRnJhbWUpCkBAIC01OTIsOCArNTkyLDggQEAgRWluYV9Cb29sIGV3a19mcmFt
ZV9mb3J3YXJkX3Bvc3NpYmxlKEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKIAogRWluYV9Cb29sIGV3
a19mcmFtZV9uYXZpZ2F0ZV9wb3NzaWJsZShFdmFzX09iamVjdCogZXdrRnJhbWUsIGludCBzdGVw
cykKIHsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRh
LCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnRE
YXRhLT5mcmFtZSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4o
ZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7CiAgICAgV2ViQ29yZTo6UGFnZSogcGFn
ZSA9IHNtYXJ0RGF0YS0+ZnJhbWUtPnBhZ2UoKTsKICAgICByZXR1cm4gcGFnZS0+Y2FuR29CYWNr
T3JGb3J3YXJkKHN0ZXBzKTsKIH0KQEAgLTYwNywxMCArNjA3LDEwIEBAIGZsb2F0IGV3a19mcmFt
ZV9wYWdlX3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKIAogRWluYV9Cb29s
IGV3a19mcmFtZV9wYWdlX3pvb21fc2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgZmxvYXQgcGFn
ZVpvb21GYWN0b3IpCiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUs
IHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIEVJTkFfRkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRf
T1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOwogICAgIHNtYXJ0RGF0
YS0+ZnJhbWUtPnNldFBhZ2Vab29tRmFjdG9yKHBhZ2Vab29tRmFjdG9yKTsKLSAgICByZXR1cm4g
RUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBmbG9hdCBld2tfZnJhbWVfdGV4dF96
b29tX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpCkBAIC02MjIsMTAgKzYyMiwxMCBA
QCBmbG9hdCBld2tfZnJhbWVfdGV4dF96b29tX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJh
bWUpCiAKIEVpbmFfQm9vbCBld2tfZnJhbWVfdGV4dF96b29tX3NldChFdmFzX09iamVjdCogZXdr
RnJhbWUsIGZsb2F0IHRleHRab29tRmFjdG9yKQogewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1Jf
UkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKKyAgICBF
V0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7Cisg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNl
KTsKICAgICBzbWFydERhdGEtPmZyYW1lLT5zZXRUZXh0Wm9vbUZhY3Rvcih0ZXh0Wm9vbUZhY3Rv
cik7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBl
d2tfZnJhbWVfaGl0X3Rlc3RfZnJlZShFd2tfSGl0X1Rlc3QqIGhpdFRlc3QpCkBAIC03MTYsMjEg
KzcxNiwyMSBAQCBFd2tfSGl0X1Rlc3QqIGV3a19mcmFtZV9oaXRfdGVzdF9uZXcoY29uc3QgRXZh
c19PYmplY3QqIGV3a0ZyYW1lLCBpbnQgeCwgaW50IHkpCiBFaW5hX0Jvb2wKIGV3a19mcmFtZV9z
Y3JvbGxfYWRkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgaW50IGRlbHRhWCwgaW50IGRlbHRhWSkK
IHsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBF
SU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRh
LT5mcmFtZSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHNtYXJ0RGF0YS0+ZnJhbWUtPnZpZXcoKSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NE
X0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUtPnZpZXcoKSwgZmFs
c2UpOwogICAgIHNtYXJ0RGF0YS0+ZnJhbWUtPnZpZXcoKS0+c2Nyb2xsQnkoV2ViQ29yZTo6SW50
U2l6ZShkZWx0YVgsIGRlbHRhWSkpOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIEVpbmFfQm9vbAogZXdrX2ZyYW1lX3Njcm9sbF9zZXQoRXZhc19PYmplY3Qq
IGV3a0ZyYW1lLCBpbnQgeCwgaW50IHkpCiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRV
Uk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLT52aWV3KCksIEVJTkFf
RkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERh
dGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRh
LT5mcmFtZSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFy
dERhdGEtPmZyYW1lLT52aWV3KCksIGZhbHNlKTsKICAgICBzbWFydERhdGEtPmZyYW1lLT52aWV3
KCktPnNldFNjcm9sbFBvc2l0aW9uKFdlYkNvcmU6OkludFBvaW50KHgsIHkpKTsKLSAgICByZXR1
cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wKQEAgLTc0MCwx
NSArNzQwLDE1IEBAIGV3a19mcmFtZV9zY3JvbGxfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3Qq
IGV3a0ZyYW1lLCBpbnQqIHdpZHRoLCBpbnQqIGhlaWdodCkKICAgICAgICAgKndpZHRoID0gMDsK
ICAgICBpZiAoaGVpZ2h0KQogICAgICAgICAqaGVpZ2h0ID0gMDsKLSAgICBFV0tfRlJBTUVfU0Rf
R0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgRUlOQV9GQUxTRSk7
Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUtPnZp
ZXcoKSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJh
bWUsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUtPnZpZXcoKSwgZmFsc2UpOwogICAgIFdlYkNvcmU6Oklu
dFBvaW50IHBvaW50ID0gc21hcnREYXRhLT5mcmFtZS0+dmlldygpLT5tYXhpbXVtU2Nyb2xsUG9z
aXRpb24oKTsKICAgICBpZiAod2lkdGgpCiAgICAgICAgICp3aWR0aCA9IHBvaW50LngoKTsKICAg
ICBpZiAoaGVpZ2h0KQogICAgICAgICAqaGVpZ2h0ID0gcG9pbnQueSgpOwotICAgIHJldHVybiBF
SU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbApAQCAtNzU4LDE1ICs3
NTgsMTUgQEAgZXdrX2ZyYW1lX3Njcm9sbF9wb3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tG
cmFtZSwgaW50KiB4LCBpbnQqIHkpCiAgICAgICAgICp4ID0gMDsKICAgICBpZiAoeSkKICAgICAg
ICAgKnkgPSAwOwotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFy
dERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChz
bWFydERhdGEtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZS0+dmlldygpLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tf
RlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsK
KyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZS0+dmll
dygpLCBmYWxzZSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9zID0gc21hcnREYXRhLT5mcmFt
ZS0+dmlldygpLT5zY3JvbGxQb3NpdGlvbigpOwogICAgIGlmICh4KQogICAgICAgICAqeCA9IHBv
cy54KCk7CiAgICAgaWYgKHkpCiAgICAgICAgICp5ID0gcG9zLnkoKTsKLSAgICByZXR1cm4gRUlO
QV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3Zpc2li
bGVfY29udGVudF9nZW9tZXRyeV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFaW5h
X0Jvb2wgaW5jbHVkZVNjcm9sbGJhcnMsIGludCogeCwgaW50KiB5LCBpbnQqIHdpZHRoLCBpbnQq
IGhlaWdodCkKQEAgLTc3OSw5ICs3NzksOSBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3Zpc2libGVf
Y29udGVudF9nZW9tZXRyeV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFaQogICAg
ICAgICAqd2lkdGggPSAwOwogICAgIGlmIChoZWlnaHQpCiAgICAgICAgICpoZWlnaHQgPSAwOwot
ICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIEVJTkFf
RkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZy
YW1lLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21h
cnREYXRhLT5mcmFtZS0+dmlldygpLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VU
X09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZS0+dmlldygpLCBmYWxzZSk7
CiAgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0ID0gc21hcnREYXRhLT5mcmFtZS0+dmlldygpLT52
aXNpYmxlQ29udGVudFJlY3QoaW5jbHVkZVNjcm9sbGJhcnMpOwogICAgIGlmICh4KQogICAgICAg
ICAqeCA9IHJlY3QueCgpOwpAQCAtNzkxLDE0ICs3OTEsMTQgQEAgRWluYV9Cb29sIGV3a19mcmFt
ZV92aXNpYmxlX2NvbnRlbnRfZ2VvbWV0cnlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFt
ZSwgRWkKICAgICAgICAgKndpZHRoID0gcmVjdC53aWR0aCgpOwogICAgIGlmIChoZWlnaHQpCiAg
ICAgICAgICpoZWlnaHQgPSByZWN0LmhlaWdodCgpOwotICAgIHJldHVybiBFSU5BX1RSVUU7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfZnJhbWVfcGFpbnRfZnVsbF9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQogewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1Jf
UkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKLSAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZS0+dmlldygpLCBF
SU5BX0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21h
cnREYXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0
RGF0YS0+ZnJhbWUsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
c21hcnREYXRhLT5mcmFtZS0+dmlldygpLCBmYWxzZSk7CiAgICAgcmV0dXJuIHNtYXJ0RGF0YS0+
ZnJhbWUtPnZpZXcoKS0+cGFpbnRzRW50aXJlQ29udGVudHMoKTsKIH0KIApAQCAtODEyLDI5ICs4
MTIsMjkgQEAgdm9pZCBld2tfZnJhbWVfcGFpbnRfZnVsbF9zZXQoRXZhc19PYmplY3QqIGV3a0Zy
YW1lLCBFaW5hX0Jvb2wgZmxhZykKIAogRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX2ZvY3VzX2lu
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKIHsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVS
Tihld2tGcmFtZSwgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0ZS
QU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7CiAg
ICAgV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyKiBjID0gc21hcnREYXRhLT5mcmFtZS0+cGFnZSgp
LT5mb2N1c0NvbnRyb2xsZXIoKTsKICAgICBjLT5zZXRGb2N1c2VkRnJhbWUoc21hcnREYXRhLT5m
cmFtZSk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWlu
YV9Cb29sIGV3a19mcmFtZV9mZWVkX2ZvY3VzX291dChFdmFzX09iamVjdCogZXdrRnJhbWUpCiB7
CiAgICAgLy8gVE9ETzogd2hhdCB0byBkbyBvbiBmb2N1cyBvdXQ/CiAgICAgRVJSKCJ3aGF0IHRv
IGRvPyIpOwotICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIHJldHVybiBmYWxzZTsKIH0KIAog
RWluYV9Cb29sIGV3a19mcmFtZV9mb2N1c2VkX2VsZW1lbnRfZ2VvbWV0cnlfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0ICpld2tGcmFtZSwgaW50ICp4LCBpbnQgKnksIGludCAqdywgaW50ICpoKQogewot
ICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIEVJTkFf
RkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERh
dGEsIGZhbHNlKTsKICAgICBXZWJDb3JlOjpEb2N1bWVudCogZG9jdW1lbnQgPSBzbWFydERhdGEt
PmZyYW1lLT5kb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiBF
SU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgV2ViQ29yZTo6Tm9kZSogZm9j
dXNlZE5vZGUgPSBkb2N1bWVudC0+Zm9jdXNlZE5vZGUoKTsKICAgICBpZiAoIWZvY3VzZWROb2Rl
KQotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IFdlYkNvcmU6OkludFJlY3Qgbm9kZVJlY3QgPSBmb2N1c2VkTm9kZS0+Z2V0UmVjdCgpOwogICAg
IGlmICh4KQogICAgICAgICAqeCA9IG5vZGVSZWN0LngoKTsKQEAgLTg0NCwxOSArODQ0LDE5IEBA
IEVpbmFfQm9vbCBld2tfZnJhbWVfZm9jdXNlZF9lbGVtZW50X2dlb21ldHJ5X2dldChjb25zdCBF
dmFzX09iamVjdCAqZXdrRnJhbWUsIGluCiAgICAgICAgICp3ID0gbm9kZVJlY3Qud2lkdGgoKTsK
ICAgICBpZiAoaCkKICAgICAgICAgKmggPSBub2RlUmVjdC5oZWlnaHQoKTsKLSAgICByZXR1cm4g
RUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2Zl
ZWRfbW91c2Vfd2hlZWwoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBFdmFzX0V2ZW50X01v
dXNlX1doZWVsKiB3aGVlbEV2ZW50KQogewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJO
KGV3a0ZyYW1lLCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwod2hlZWxFdmVudCwgRUlOQV9GQUxTRSk7CisgICAgRVdL
X0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHdoZWVsRXZlbnQsIGZhbHNlKTsK
IAogICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHNtYXJ0RGF0YS0+ZnJhbWUtPnZpZXco
KTsKICAgICBEQkcoImV3a0ZyYW1lPSVwLCB2aWV3PSVwLCBkaXJlY3Rpb249JWQsIHo9JWQsIHBv
cz0lZCwlZCIsCiAgICAgICAgIGV3a0ZyYW1lLCB2aWV3LCB3aGVlbEV2ZW50LT5kaXJlY3Rpb24s
IHdoZWVsRXZlbnQtPnosIHdoZWVsRXZlbnQtPmNhbnZhcy54LCB3aGVlbEV2ZW50LT5jYW52YXMu
eSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHZpZXcsIEVJTkFfRkFMU0Up
OworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh2aWV3LCBmYWxzZSk7CiAKICAg
ICBXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQgZXZlbnQod2hlZWxFdmVudCk7CiAgICAgcmV0
dXJuIHNtYXJ0RGF0YS0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVXaGVlbEV2ZW50KGV2
ZW50KTsKQEAgLTg2NCwxNCArODY0LDE0IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3Vz
ZV93aGVlbChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IEV2YXNfRXZlbnRfTW91CiAKIEVp
bmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV9kb3duKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwg
Y29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBkb3duRXZlbnQpCiB7Ci0gICAgRVdLX0ZSQU1F
X1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIEVJTkFfRkFM
U0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChkb3duRXZlbnQsIEVJTkFf
RkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERh
dGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRh
LT5mcmFtZSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChkb3du
RXZlbnQsIGZhbHNlKTsKIAogICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHNtYXJ0RGF0
YS0+ZnJhbWUtPnZpZXcoKTsKICAgICBEQkcoImV3a0ZyYW1lPSVwLCB2aWV3PSVwLCBidXR0b249
JWQsIHBvcz0lZCwlZCIsCiAgICAgICAgIGV3a0ZyYW1lLCB2aWV3LCBkb3duRXZlbnQtPmJ1dHRv
biwgZG93bkV2ZW50LT5jYW52YXMueCwgZG93bkV2ZW50LT5jYW52YXMueSk7Ci0gICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHZpZXcsIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTCh2aWV3LCBmYWxzZSk7CiAKICAgICBFdmFzX0Nvb3JkIHgs
IHk7CiAgICAgZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KHNtYXJ0RGF0YS0+dmlldywgJngsICZ5
LCAwLCAwKTsKQEAgLTg4MiwxNCArODgyLDE0IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9t
b3VzZV9kb3duKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgRXZhc19FdmVudF9Nb3VzCiAK
IEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV91cChFdmFzX09iamVjdCogZXdrRnJhbWUs
IGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfVXAqIHVwRXZlbnQpCiB7Ci0gICAgRVdLX0ZSQU1FX1NE
X0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIEVJTkFfRkFMU0Up
OwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh1cEV2ZW50LCBFSU5BX0ZBTFNF
KTsKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBm
YWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJh
bWUsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodXBFdmVudCwg
ZmFsc2UpOwogCiAgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gc21hcnREYXRhLT5mcmFt
ZS0+dmlldygpOwogICAgIERCRygiZXdrRnJhbWU9JXAsIHZpZXc9JXAsIGJ1dHRvbj0lZCwgcG9z
PSVkLCVkIiwKICAgICAgICAgZXdrRnJhbWUsIHZpZXcsIHVwRXZlbnQtPmJ1dHRvbiwgdXBFdmVu
dC0+Y2FudmFzLngsIHVwRXZlbnQtPmNhbnZhcy55KTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwodmlldywgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHZpZXcsIGZhbHNlKTsKIAogICAgIEV2YXNfQ29vcmQgeCwgeTsKICAgICBldmFz
X29iamVjdF9nZW9tZXRyeV9nZXQoc21hcnREYXRhLT52aWV3LCAmeCwgJnksIDAsIDApOwpAQCAt
OTAwLDE1ICs5MDAsMTUgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX21vdXNlX3VwKEV2YXNf
T2JqZWN0KiBld2tGcmFtZSwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV8KIAogRWluYV9Cb29sIGV3
a19mcmFtZV9mZWVkX21vdXNlX21vdmUoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBFdmFz
X0V2ZW50X01vdXNlX01vdmUqIG1vdmVFdmVudCkKIHsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09S
X1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgRUlOQV9GQUxTRSk7Ci0gICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG1vdmVFdmVudCwgRUlOQV9GQUxTRSk7Cisg
ICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2Up
OworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBm
YWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG1vdmVFdmVudCwgZmFs
c2UpOwogCiAgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gc21hcnREYXRhLT5mcmFtZS0+
dmlldygpOwogICAgIERCRygiZXdrRnJhbWU9JXAsIHZpZXc9JXAsIHBvczogb2xkPSVkLCVkLCBu
ZXc9JWQsJWQsIGJ1dHRvbnM9JWQiLAogICAgICAgICBld2tGcmFtZSwgdmlldywgbW92ZUV2ZW50
LT5jdXIuY2FudmFzLngsIG1vdmVFdmVudC0+Y3VyLmNhbnZhcy55LAogICAgICAgICBtb3ZlRXZl
bnQtPnByZXYuY2FudmFzLngsIG1vdmVFdmVudC0+cHJldi5jYW52YXMueSwgbW92ZUV2ZW50LT5i
dXR0b25zKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodmlldywgRUlOQV9G
QUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHZpZXcsIGZhbHNlKTsK
IAogICAgIEV2YXNfQ29vcmQgeCwgeTsKICAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQoc21h
cnREYXRhLT52aWV3LCAmeCwgJnksIDAsIDApOwpAQCAtOTE5LDE0ICs5MTksMTQgQEAgRWluYV9C
b29sIGV3a19mcmFtZV9mZWVkX21vdXNlX21vdmUoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25z
dCBFdmFzX0V2ZW50X01vdXMKIAogRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX3RvdWNoX2V2ZW50
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdrX1RvdWNoX0V2ZW50X1R5cGUgYWN0aW9uLCBFaW5h
X0xpc3QqIHBvaW50cywgaW50IG1ldGFTdGF0ZSkKIHsKLSAgICBFaW5hX0Jvb2wgcmVzdWx0ID0g
RUlOQV9GQUxTRTsKKyAgICBFaW5hX0Jvb2wgcmVzdWx0ID0gZmFsc2U7CiAKICNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwb2ludHMs
IEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwb2ludHMs
IGZhbHNlKTsKICAgICBFV0tfRlJBTUVfU0RfR0VUKGV3a0ZyYW1lLCBzbWFydERhdGEpOwogCiAg
ICAgaWYgKCFzbWFydERhdGEgfHwgIXNtYXJ0RGF0YS0+ZnJhbWUgfHwgIWV3a192aWV3X25lZWRf
dG91Y2hfZXZlbnRzX2dldChzbWFydERhdGEtPnZpZXcpKQotICAgICAgICByZXR1cm4gRUlOQV9G
QUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgRXZhc19Db29yZCB4LCB5OwogICAg
IGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChzbWFydERhdGEtPnZpZXcsICZ4LCAmeSwgMCwgMCk7
CkBAIC05NDYsNyArOTQ2LDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX3RvdWNoX2V2ZW50
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdrX1RvdWNoX0V2ZW50X1R5cGUKICAgICAgICAgdHlw
ZSA9IFdlYkNvcmU6OlRvdWNoQ2FuY2VsOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0Ogot
ICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAogICAgIFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hFdmVudCB0b3VjaEV2ZW50KHBvaW50cywgV2Vi
Q29yZTo6SW50UG9pbnQoeCwgeSksIHR5cGUsIG1ldGFTdGF0ZSk7CkBAIC0xMDA5LDM3ICsxMDA5
LDM3IEBAIHN0YXRpYyBpbmxpbmUgRWluYV9Cb29sIF9ld2tfZnJhbWVfaGFuZGxlX2tleV9zY3Jv
bGxpbmcoV2ViQ29yZTo6RnJhbWUqIGZyYW1lLCBjCiAgICAgICAgICAgICBncmFudWxhcml0eSA9
IFdlYkNvcmU6OlNjcm9sbEJ5TGluZTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAg
ICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
ICAgICBpZiAoZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zY3JvbGxPdmVyZmxvdyhkaXJlY3Rpb24s
IGdyYW51bGFyaXR5KSkKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGZyYW1lLT52aWV3KCktPnNjcm9sbChkaXJlY3Rpb24sIGdyYW51bGFy
aXR5KTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBFaW5h
X0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfa2V5X2Rvd24oRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25z
dCBFdmFzX0V2ZW50X0tleV9Eb3duKiBkb3duRXZlbnQpCiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dF
VF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIEVJTkFfRkFMU0UpOwot
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChkb3duRXZlbnQsIEVJTkFfRkFMU0Up
OworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZh
bHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFt
ZSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChkb3duRXZlbnQs
IGZhbHNlKTsKIAogICAgIERCRygiZXdrRnJhbWU9JXAga2V5bmFtZT0lcyAoa2V5PSVzLCBzdHJp
bmc9JXMpIiwKICAgICAgICAgZXdrRnJhbWUsIGRvd25FdmVudC0+a2V5bmFtZSwgZG93bkV2ZW50
LT5rZXkgPyBkb3duRXZlbnQtPmtleSA6ICIiLCBkb3duRXZlbnQtPnN0cmluZyA/IGRvd25FdmVu
dC0+c3RyaW5nIDogIiIpOwogCiAgICAgV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50IGV2
ZW50KGRvd25FdmVudCk7CiAgICAgaWYgKHNtYXJ0RGF0YS0+ZnJhbWUtPmV2ZW50SGFuZGxlcigp
LT5rZXlFdmVudChldmVudCkpCi0gICAgICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgcmV0dXJuIF9ld2tfZnJhbWVfaGFuZGxlX2tleV9zY3JvbGxpbmco
c21hcnREYXRhLT5mcmFtZSwgZXZlbnQpOwogfQogCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRf
a2V5X3VwKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgRXZhc19FdmVudF9LZXlfVXAqIHVw
RXZlbnQpCiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0
RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNt
YXJ0RGF0YS0+ZnJhbWUsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTCh1cEV2ZW50LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JF
VFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwodXBFdmVudCwgZmFsc2UpOwogCiAgICAgREJHKCJld2tGcmFtZT0l
cCBrZXluYW1lPSVzIChrZXk9JXMsIHN0cmluZz0lcykiLAogICAgICAgICBld2tGcmFtZSwgdXBF
dmVudC0+a2V5bmFtZSwgdXBFdmVudC0+a2V5ID8gdXBFdmVudC0+a2V5IDogIiIsIHVwRXZlbnQt
PnN0cmluZyA/IHVwRXZlbnQtPnN0cmluZyA6ICIiKTsKQEAgLTEwOTYsMTkgKzEwOTYsMTkgQEAg
RXZhc19PYmplY3QqIGV3a19mcmFtZV9hZGQoRXZhcyogY2FudmFzKQogICovCiBFaW5hX0Jvb2wg
ZXdrX2ZyYW1lX2luaXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFdmFzX09iamVjdCogdmlldywg
V2ViQ29yZTo6RnJhbWUqIGZyYW1lKQogewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJO
KGV3a0ZyYW1lLCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRf
T1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKICAgICBpZiAoIXNtYXJ0RGF0
YS0+ZnJhbWUpIHsKICAgICAgICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwqIGZyYW1l
TG9hZGVyQ2xpZW50ID0gX2V3a19mcmFtZV9sb2FkZXJfZWZsX2dldChmcmFtZSk7CiAgICAgICAg
IGZyYW1lTG9hZGVyQ2xpZW50LT5zZXRXZWJGcmFtZShld2tGcmFtZSk7CiAgICAgICAgIHNtYXJ0
RGF0YS0+ZnJhbWUgPSBmcmFtZTsKICAgICAgICAgc21hcnREYXRhLT52aWV3ID0gdmlldzsKICAg
ICAgICAgZnJhbWUtPmluaXQoKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgRVJSKCJmcmFtZSAlcCBhbHJlYWR5IHNldCBmb3Ig
JXAsIGlnbm9yZWQgbmV3ICVwIiwKICAgICAgICAgc21hcnREYXRhLT5mcmFtZSwgZXdrRnJhbWUs
IGZyYW1lKTsKLSAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAK
IC8qKgpAQCAtMTEyNiw3ICsxMTI2LDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9jaGlsZF9hZGQo
RXZhc19PYmplY3QqIGV3a0ZyYW1lLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnIKICAgICBm
cmFtZSA9IGV3a19mcmFtZV9hZGQoc21hcnREYXRhLT5iYXNlLmV2YXMpOwogICAgIGlmICghZnJh
bWUpIHsKICAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIGV3a19mcmFtZSBvYmplY3QuIik7
Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCiAgICAgY29yZUZyYW1lID0gY2hpbGQuZ2V0KCk7CkBAIC0xMTM4LDcgKzExMzgsNyBAQCBF
aW5hX0Jvb2wgZXdrX2ZyYW1lX2NoaWxkX2FkZChFdmFzX09iamVjdCogZXdrRnJhbWUsIFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpGcgogCiAgICAgaWYgKCFld2tfZnJhbWVfaW5pdChmcmFtZSwg
c21hcnREYXRhLT52aWV3LCBjb3JlRnJhbWUpKSB7CiAgICAgICAgIGV2YXNfb2JqZWN0X2RlbChm
cmFtZSk7Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogICAgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICJFV0tfRnJhbWU6
Y2hpbGQvJXMiLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogICAgIGV2YXNfb2JqZWN0X25hbWVfc2V0
KGZyYW1lLCBidWZmZXIpOwpAQCAtMTE0OCw3ICsxMTQ4LDcgQEAgRWluYV9Cb29sIGV3a19mcmFt
ZV9jaGlsZF9hZGQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29y
ZTo6RnIKICAgICAvLyBUaGUgY3JlYXRpb24gb2YgdGhlIGZyYW1lIG1heSBoYXZlIHJ1biBhcmJp
dHJhcnkgSmF2YVNjcmlwdCB0aGF0IHJlbW92ZWQgaXQgZnJvbSB0aGUgcGFnZSBhbHJlYWR5Lgog
ICAgIGlmICghY29yZUZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAgZXZhc19vYmplY3RfZGVsKGZy
YW1lKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCiAgICAgc21hcnREYXRhLT5mcmFtZS0+bG9hZGVyKCktPmxvYWRVUkxJbnRvQ2hpbGRG
cmFtZSh1cmwsIHJlZmVycmVyLCBjb3JlRnJhbWUpOwpAQCAtMTE1NywxMSArMTE1NywxMSBAQCBF
aW5hX0Jvb2wgZXdrX2ZyYW1lX2NoaWxkX2FkZChFdmFzX09iamVjdCogZXdrRnJhbWUsIFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpGcgogICAgIC8vIFNlZSBmYXN0L2RvbS9udWxsLXBhZ2Utc2hv
dy1tb2RhbC1kaWFsb2ctY3Jhc2guaHRtbCBmb3IgYW4gZXhhbXBsZS4KICAgICBpZiAoIWNvcmVG
cmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkgewogICAgICAgICBldmFzX29iamVjdF9kZWwoZnJhbWUp
OwotICAgICAgICByZXR1cm4gRUlOQV9UUlVFOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKICAgICAvLyBUT0RPOiBhbm5vdW5jZSBmcmFtZSB3YXMgY3JlYXRlZD8KLSAgICByZXR1cm4g
RUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiAvKioKQEAgLTE1MzQsNyArMTUzNCw3
IEBAIEVpbmFfTGlzdCogZXdrX2ZyYW1lX3Jlc291cmNlc19sb2NhdGlvbl9nZXQoY29uc3QgRXZh
c19PYmplY3QqIGV3a0ZyYW1lKQogICAgICAgICAvLyBMb29rIGZvciBkdXBsaWNhdGVkIGxvY2F0
aW9uLgogICAgICAgICBFaW5hX0xpc3QqIGxpc3RJdGVyYXRvciA9IDA7CiAgICAgICAgIHZvaWQq
IGRhdGEgPSAwOwotICAgICAgICBFaW5hX0Jvb2wgZm91bmQgPSBFSU5BX0ZBTFNFOworICAgICAg
ICBFaW5hX0Jvb2wgZm91bmQgPSBmYWxzZTsKICAgICAgICAgRUlOQV9MSVNUX0ZPUkVBQ0gobGlz
dE9mSW1hZ2VzTG9jYXRpb24sIGxpc3RJdGVyYXRvciwgZGF0YSkKICAgICAgICAgICAgIGlmIChm
b3VuZCA9ICFzdHJjbXAoc3RhdGljX2Nhc3Q8Y2hhcio+KGRhdGEpLCBpbWFnZUxvY2F0aW9uLnV0
ZjgoKS5kYXRhKCkpKQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTU4MywxOSArMTU4Mywx
OSBAQCBjaGFyKiBld2tfZnJhbWVfcGxhaW5fdGV4dF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3
a0ZyYW1lKQogICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3VyaV9jaGFuZ2VkKEV2YXNfT2JqZWN0
KiBld2tGcmFtZSkKIHsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwg
c21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoc21hcnREYXRhLT5mcmFtZSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7CiAgICAgV1RGOjpDU3Ry
aW5nIHVyaShzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKS51dGY4
KCkpOwogCiAgICAgSU5GKCJ1cmk9JXMiLCB1cmkuZGF0YSgpKTsKICAgICBpZiAoIXVyaS5kYXRh
KCkpIHsKICAgICAgICAgRVJSKCJubyB1cmkiKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBlaW5hX3N0cmluZ3NoYXJlX3Jl
cGxhY2UoJnNtYXJ0RGF0YS0+dXJpLCB1cmkuZGF0YSgpKTsKICAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19jYWxsKGV3a0ZyYW1lLCAidXJpLGNoYW5nZWQiLCAodm9pZCopc21hcnREYXRh
LT51cmkpOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIC8q
KgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAKaW5kZXggZmUwMWQ1MmNjYjFkNmNh
ZDgyN2FiOTZkMmQ5NWYzYzYyOWRhOTNiOC4uMmJkZjNlYjcwOWVkYjEyYjY4ZTEwZmQ3YTRlZmFk
OTgzOGE3MTVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwCkBAIC05Miw3
ICs5Miw3IEBAIHN0YXRpYyBpbmxpbmUgRWluYV9MaXN0KiBfZXdrX2hpc3RvcnlfaXRlbV9saXN0
X2dldChjb25zdCBXZWJDb3JlOjpIaXN0b3J5SXRlbVZlCiAKIEVpbmFfQm9vbCBld2tfaGlzdG9y
eV9jbGVhcihFd2tfSGlzdG9yeSogaGlzdG9yeSkKIHsKLSAgICBFV0tfSElTVE9SWV9DT1JFX0dF
VF9PUl9SRVRVUk4oaGlzdG9yeSwgY29yZSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0hJU1RPUllf
Q09SRV9HRVRfT1JfUkVUVVJOKGhpc3RvcnksIGNvcmUsIGZhbHNlKTsKIAogICAgIFdlYkNvcmU6
OlBhZ2UqIHBhZ2UgPSBjb3JlLT5wYWdlKCk7CiAgICAgaWYgKHBhZ2UgJiYgcGFnZS0+Z3JvdXBQ
dHIoKSkKQEAgLTEwMiw0MSArMTAyLDQxIEBAIEVpbmFfQm9vbCBld2tfaGlzdG9yeV9jbGVhcihF
d2tfSGlzdG9yeSogaGlzdG9yeSkKICAgICBld2tfaGlzdG9yeV9saW1pdF9zZXQoaGlzdG9yeSwg
MCk7CiAgICAgZXdrX2hpc3RvcnlfbGltaXRfc2V0KGhpc3RvcnksIGxpbWl0KTsKIAotICAgIHJl
dHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfaGlz
dG9yeV9mb3J3YXJkKEV3a19IaXN0b3J5KiBoaXN0b3J5KQogewotICAgIEVXS19ISVNUT1JZX0NP
UkVfR0VUX09SX1JFVFVSTihoaXN0b3J5LCBjb3JlLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfSElT
VE9SWV9DT1JFX0dFVF9PUl9SRVRVUk4oaGlzdG9yeSwgY29yZSwgZmFsc2UpOwogICAgIGlmIChj
b3JlLT5mb3J3YXJkTGlzdENvdW50KCkgPCAxKQotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNvcmUtPmdvRm9yd2FyZCgpOwotICAgIHJldHVy
biBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfaGlzdG9y
eV9iYWNrKEV3a19IaXN0b3J5KiBoaXN0b3J5KQogewotICAgIEVXS19ISVNUT1JZX0NPUkVfR0VU
X09SX1JFVFVSTihoaXN0b3J5LCBjb3JlLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfSElTVE9SWV9D
T1JFX0dFVF9PUl9SRVRVUk4oaGlzdG9yeSwgY29yZSwgZmFsc2UpOwogICAgIGlmIChjb3JlLT5i
YWNrTGlzdENvdW50KCkgPCAxKQotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGNvcmUtPmdvQmFjaygpOwotICAgIHJldHVybiBFSU5BX1RSVUU7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfaGlzdG9yeV9oaXN0b3J5X2l0
ZW1fYWRkKEV3a19IaXN0b3J5KiBoaXN0b3J5LCBjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVt
KQogewotICAgIEVXS19ISVNUT1JZX0NPUkVfR0VUX09SX1JFVFVSTihoaXN0b3J5LCBoaXN0b3J5
X2NvcmUsIEVJTkFfRkFMU0UpOwotICAgIEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1JfUkVU
VVJOKGl0ZW0sIGl0ZW1fY29yZSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0hJU1RPUllfQ09SRV9H
RVRfT1JfUkVUVVJOKGhpc3RvcnksIGhpc3RvcnlfY29yZSwgZmFsc2UpOworICAgIEVXS19ISVNU
T1JZX0lURU1fQ09SRV9HRVRfT1JfUkVUVVJOKGl0ZW0sIGl0ZW1fY29yZSwgZmFsc2UpOwogICAg
IGhpc3RvcnlfY29yZS0+YWRkSXRlbShpdGVtX2NvcmUpOwotICAgIHJldHVybiBFSU5BX1RSVUU7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfaGlzdG9yeV9oaXN0b3J5X2l0
ZW1fc2V0KEV3a19IaXN0b3J5KiBoaXN0b3J5LCBjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVt
KQogewotICAgIEVXS19ISVNUT1JZX0NPUkVfR0VUX09SX1JFVFVSTihoaXN0b3J5LCBoaXN0b3J5
X2NvcmUsIEVJTkFfRkFMU0UpOwotICAgIEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1JfUkVU
VVJOKGl0ZW0sIGl0ZW1fY29yZSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0hJU1RPUllfQ09SRV9H
RVRfT1JfUkVUVVJOKGhpc3RvcnksIGhpc3RvcnlfY29yZSwgZmFsc2UpOworICAgIEVXS19ISVNU
T1JZX0lURU1fQ09SRV9HRVRfT1JfUkVUVVJOKGl0ZW0sIGl0ZW1fY29yZSwgZmFsc2UpOwogICAg
IGhpc3RvcnlfY29yZS0+Z29Ub0l0ZW0oaXRlbV9jb3JlKTsKLSAgICByZXR1cm4gRUlOQV9UUlVF
OworICAgIHJldHVybiB0cnVlOwogfQogCiBFd2tfSGlzdG9yeV9JdGVtKiBld2tfaGlzdG9yeV9o
aXN0b3J5X2l0ZW1fYmFja19nZXQoY29uc3QgRXdrX0hpc3RvcnkqIGhpc3RvcnkpCkBAIC0xNjgs
OCArMTY4LDggQEAgRXdrX0hpc3RvcnlfSXRlbSogZXdrX2hpc3RvcnlfaGlzdG9yeV9pdGVtX250
aF9nZXQoY29uc3QgRXdrX0hpc3RvcnkqIGhpc3RvcnksIGkKIAogRWluYV9Cb29sIGV3a19oaXN0
b3J5X2hpc3RvcnlfaXRlbV9jb250YWlucyhjb25zdCBFd2tfSGlzdG9yeSogaGlzdG9yeSwgY29u
c3QgRXdrX0hpc3RvcnlfSXRlbSogaXRlbSkKIHsKLSAgICBFV0tfSElTVE9SWV9DT1JFX0dFVF9P
Ul9SRVRVUk4oaGlzdG9yeSwgaGlzdG9yeV9jb3JlLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfSElT
VE9SWV9JVEVNX0NPUkVfR0VUX09SX1JFVFVSTihpdGVtLCBpdGVtX2NvcmUsIEVJTkFfRkFMU0Up
OworICAgIEVXS19ISVNUT1JZX0NPUkVfR0VUX09SX1JFVFVSTihoaXN0b3J5LCBoaXN0b3J5X2Nv
cmUsIGZhbHNlKTsKKyAgICBFV0tfSElTVE9SWV9JVEVNX0NPUkVfR0VUX09SX1JFVFVSTihpdGVt
LCBpdGVtX2NvcmUsIGZhbHNlKTsKICAgICByZXR1cm4gaGlzdG9yeV9jb3JlLT5jb250YWluc0l0
ZW0oaXRlbV9jb3JlKTsKIH0KIApAQCAtMjI3LDkgKzIyNyw5IEBAIGludCBld2tfaGlzdG9yeV9s
aW1pdF9nZXQoRXdrX0hpc3RvcnkqIGhpc3RvcnkpCiAKIEVpbmFfQm9vbCBld2tfaGlzdG9yeV9s
aW1pdF9zZXQoY29uc3QgRXdrX0hpc3RvcnkqIGhpc3RvcnksIGludCBsaW1pdCkKIHsKLSAgICBF
V0tfSElTVE9SWV9DT1JFX0dFVF9PUl9SRVRVUk4oaGlzdG9yeSwgY29yZSwgRUlOQV9GQUxTRSk7
CisgICAgRVdLX0hJU1RPUllfQ09SRV9HRVRfT1JfUkVUVVJOKGhpc3RvcnksIGNvcmUsIGZhbHNl
KTsKICAgICBjb3JlLT5zZXRDYXBhY2l0eShsaW1pdCk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRXdrX0hpc3RvcnlfSXRlbSogZXdrX2hpc3RvcnlfaXRl
bV9uZXdfZnJvbV9jb3JlKFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBjb3JlKQpAQCAtMzY1LDcgKzM2
NSw3IEBAIEV2YXNfT2JqZWN0KiBld2tfaGlzdG9yeV9pdGVtX2ljb25fb2JqZWN0X2FkZChjb25z
dCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVtLCBFdmFzCiAKIEVpbmFfQm9vbCBld2tfaGlzdG9yeV9p
dGVtX3BhZ2VfY2FjaGVfZXhpc3RzKGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0pCiB7Ci0g
ICAgRVdLX0hJU1RPUllfSVRFTV9DT1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwgY29yZSwgRUlOQV9G
QUxTRSk7CisgICAgRVdLX0hJU1RPUllfSVRFTV9DT1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwgY29y
ZSwgZmFsc2UpOwogICAgIHJldHVybiBjb3JlLT5pc0luUGFnZUNhY2hlKCk7CiB9CiAKQEAgLTM3
Nyw3ICszNzcsNyBAQCBpbnQgZXdrX2hpc3RvcnlfaXRlbV92aXNpdF9jb3VudChjb25zdCBFd2tf
SGlzdG9yeV9JdGVtKiBpdGVtKQogCiBFaW5hX0Jvb2wgZXdrX2hpc3RvcnlfaXRlbV92aXNpdF9s
YXN0X2ZhaWxlZChjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVtKQogewotICAgIEVXS19ISVNU
T1JZX0lURU1fQ09SRV9HRVRfT1JfUkVUVVJOKGl0ZW0sIGNvcmUsIEVJTkFfVFJVRSk7CisgICAg
RVdLX0hJU1RPUllfSVRFTV9DT1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwgY29yZSwgdHJ1ZSk7CiAg
ICAgcmV0dXJuIGNvcmUtPmxhc3RWaXNpdFdhc0ZhaWx1cmUoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19qcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX2pzLmNwcAppbmRleCBkMmM5YTkzN2NiYThkZWU0OWYzY2I3NzAyNmNmOGZjYzc1MDhhMmUx
Li4zMDY5ZmMyZjkxNzc2M2M5NTgxYTgzYTU1ODVhODgwMTIwM2UxODRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2pzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2pzLmNwcApAQCAtNDUsOCArNDUsOCBAQCBzdGF0aWMgRWluYV9Cb29sIGV3a19qc19u
cHZhcmlhbnRfdG9fdmFyaWFudChFd2tfSlNfVmFyaWFudCogZGF0YSwgY29uc3QgTlBWYXJpYQog
CiBzdGF0aWMgRWluYV9Cb29sIGV3a19qc192YXJpYW50X3RvX25wdmFyaWFudChjb25zdCBFd2tf
SlNfVmFyaWFudCogZGF0YSwgTlBWYXJpYW50KiByZXN1bHQpCiB7Ci0gICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKGRhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChyZXN1bHQsIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChkYXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHJlc3VsdCwgZmFsc2UpOwogICAgIGNoYXIqIHN0cmluZ192YWx1ZTsKIAogICAg
IHN3aXRjaCAoZGF0YS0+dHlwZSkgewpAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgRWluYV9Cb29s
IGV3a19qc192YXJpYW50X3RvX25wdmFyaWFudChjb25zdCBFd2tfSlNfVmFyaWFudCogZGF0YSwg
TlBWYXJpYQogICAgICAgICBpZiAoc3RyaW5nX3ZhbHVlKQogICAgICAgICAgICAgU1RSSU5HWl9U
T19OUFZBUklBTlQoc3RyaW5nX3ZhbHVlLCAqcmVzdWx0KTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRVdLX0pTX1ZBUklBTlRfQk9PTDoKICAgICAgICAgQk9PTEVB
Tl9UT19OUFZBUklBTlQoZGF0YS0+dmFsdWUuYiwgKnJlc3VsdCk7CkBAIC03NiwxMCArNzYsMTAg
QEAgc3RhdGljIEVpbmFfQm9vbCBld2tfanNfdmFyaWFudF90b19ucHZhcmlhbnQoY29uc3QgRXdr
X0pTX1ZhcmlhbnQqIGRhdGEsIE5QVmFyaWEKICAgICAgICAgT0JKRUNUX1RPX05QVkFSSUFOVChy
ZWludGVycHJldF9jYXN0PE5QT2JqZWN0Kj4oZGF0YS0+dmFsdWUubyksICpyZXN1bHQpOwogICAg
ICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgYnkgTlBBSSwgdGhh
dHMgdGhlIHJlYXNvbiB0byB1c2UgYm9vbCBpbnN0ZWFkIG9mIEVpbmFfQm9vbC4KQEAgLTQ4Miw4
ICs0ODIsOCBAQCBlcnJvcjoKIHN0YXRpYyBFaW5hX0Jvb2wgZXdrX2pzX25wdmFyaWFudF90b192
YXJpYW50KEV3a19KU19WYXJpYW50KiBkYXRhLCBjb25zdCBOUFZhcmlhbnQqIHJlc3VsdCkKIHsK
ICAgICBpbnQgc3o7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGRhdGEsIEVJ
TkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChyZXN1bHQsIEVJ
TkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChkYXRhLCBmYWxz
ZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHJlc3VsdCwgZmFsc2UpOwog
ICAgIHN3aXRjaCAocmVzdWx0LT50eXBlKSB7CiAgICAgY2FzZSBOUFZhcmlhbnRUeXBlX1ZvaWQ6
CiAgICAgICAgIGRhdGEtPnR5cGUgPSBFV0tfSlNfVkFSSUFOVF9WT0lEOwpAQCAtNTA1LDcgKzUw
NSw3IEBAIHN0YXRpYyBFaW5hX0Jvb2wgZXdrX2pzX25wdmFyaWFudF90b192YXJpYW50KEV3a19K
U19WYXJpYW50KiBkYXRhLCBjb25zdCBOUFZhcmlhCiAgICAgICAgIHN6ID0gTlBWQVJJQU5UX1RP
X1NUUklORygqcmVzdWx0KS5VVEY4TGVuZ3RoOwogICAgICAgICBkYXRhLT52YWx1ZS5zID0gc3Rh
dGljX2Nhc3Q8Y2hhcio+KG1hbGxvYyhzaXplb2YoY2hhcikgKiAoc3ogKyAxKSkpOwogICAgICAg
ICBpZiAoIWRhdGEtPnZhbHVlLnMpCi0gICAgICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgbWVtY3B5KGRhdGEtPnZhbHVlLnMsIE5Q
VkFSSUFOVF9UT19TVFJJTkcoKnJlc3VsdCkuVVRGOENoYXJhY3RlcnMsIHN6KTsKICAgICAgICAg
ZGF0YS0+dmFsdWUuc1tzel0gPSAnXDAnOwogICAgICAgICBkYXRhLT50eXBlID0gRVdLX0pTX1ZB
UklBTlRfU1RSSU5HOwpAQCAtNTE5LDEwICs1MTksMTAgQEAgc3RhdGljIEVpbmFfQm9vbCBld2tf
anNfbnB2YXJpYW50X3RvX3ZhcmlhbnQoRXdrX0pTX1ZhcmlhbnQqIGRhdGEsIGNvbnN0IE5QVmFy
aWEKICAgICAgICAgZGF0YS0+dmFsdWUubyA9IGV3a19qc19ucG9iamVjdF90b19vYmplY3QoTlBW
QVJJQU5UX1RPX09CSkVDVCgqcmVzdWx0KSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRXdrX0pT
X09iamVjdCogZXdrX2pzX29iamVjdF9uZXcoY29uc3QgRXdrX0pTX0NsYXNzX01ldGEqIGpzTWV0
YUNsYXNzKQpAQCAtNjI5LDE4ICs2MjksMTggQEAgRWluYV9Cb29sIGV3a19qc19vYmplY3RfaW52
b2tlKEV3a19KU19PYmplY3QqIGpzT2JqZWN0LCBFd2tfSlNfVmFyaWFudCogYXJncywgaW4KIHsK
ICAgICBOUFZhcmlhbnQqIG5wX2FyZ3M7CiAgICAgTlBWYXJpYW50IG5wX3Jlc3VsdDsKLSAgICBi
b29sIGZhaWwgPSBFSU5BX0ZBTFNFOworICAgIGJvb2wgZmFpbCA9IGZhbHNlOwogCi0gICAgRUlO
QV9NQUdJQ19DSEVDS19PUl9SRVRVUk4oanNPYmplY3QsIEVJTkFfRkFMU0UpOworICAgIEVJTkFf
TUFHSUNfQ0hFQ0tfT1JfUkVUVVJOKGpzT2JqZWN0LCBmYWxzZSk7CiAgICAgaWYgKGV3a19qc19v
YmplY3RfdHlwZV9nZXQoanNPYmplY3QpICE9IEVXS19KU19PQkpFQ1RfRlVOQ1RJT04pCi0gICAg
ICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGFy
Z0NvdW50KQotICAgICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoYXJncywgRUlO
QV9GQUxTRSk7CisgICAgICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChhcmdzLCBm
YWxzZSk7CiAKICAgICBucF9hcmdzID0gc3RhdGljX2Nhc3Q8TlBWYXJpYW50Kj4obWFsbG9jKHNp
emVvZihOUFZhcmlhbnQpICAqYXJnQ291bnQpKTsKICAgICBpZiAoIW5wX2FyZ3MpIHsKICAgICAg
ICAgRVJSKCJDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IHRvIG1ldGhvZCBhcmd1bWVudHMiKTsK
LSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ0NvdW50OyBpKyspCkBAIC03MjYsNyArNzI2
LDcgQEAgdm9pZCBld2tfanNfb2JqZWN0X2ZyZWUoRXdrX0pTX09iamVjdCoganNPYmplY3QpCiAK
IEVpbmFfQm9vbCBld2tfanNfb2JqZWN0X2ludm9rZShFd2tfSlNfT2JqZWN0KiBqc09iamVjdCwg
RXdrX0pTX1ZhcmlhbnQqIGFyZ3MsIGludCBhcmdDb3VudCwgRXdrX0pTX1ZhcmlhbnQqIHJlc3Vs
dCkKIHsKLSAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIEV3
a19KU19PYmplY3RfVHlwZSBld2tfanNfb2JqZWN0X3R5cGVfZ2V0KEV3a19KU19PYmplY3QqIGpz
T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19tYWluLmNwcCBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbWFpbi5jcHAKaW5kZXggYzUyYzAyYjA5ZjkxNTM2
YTMyMjgxODg2ZGViM2ZiYjM1YmUwM2ViMC4uYjFmMjEyOTRkOTgwMGQ3MzQ2MzAwMzEwMzE1MDBi
ZjRlMGIyMWQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19tYWluLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX21haW4uY3BwCkBAIC0xNzYsNyArMTc2
LDcgQEAgRWluYV9Cb29sIF9ld2tfaW5pdF9ib2R5KHZvaWQpCiAgICAgICAgIC8vIEV4aXQgbm93
IC0gb3RoZXJ3aXNlIHlvdSBtYXkgaGF2ZSBzb21lIGNyYXNoIGxhdGVyCiAgICAgICAgIGludCBl
cnJub3dhcyA9IGVycm5vOwogICAgICAgICBDUklUSUNBTCgiQ2FuJ3QgYWNjZXNzIEhPTUUgZGly
IChvciAvdG1wKSAtIG5vIHBsYWNlIHRvIHNhdmUgZGF0YWJhc2VzOiAlcyIsIHN0cmVycm9yKGVy
cm5vd2FzKSk7Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCiAgICAgV1RGOjpTdHJpbmcgd2Via2l0RGlyZWN0b3J5ID0gaG9tZSArICIv
LndlYmtpdCI7CkBAIC0xOTcsNSArMTk3LDUgQEAgRWluYV9Cb29sIF9ld2tfaW5pdF9ib2R5KHZv
aWQpCiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0
cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19uZXR3b3JrLmNw
cCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbmV0d29yay5jcHAKaW5kZXggMjZkNTJjYmFh
NTQ4ZDcyMmYxMWQ1NTIyOWQzZGJlNjdhMjU3MDJmYy4uZmFmZWYwOTZjMjg3ZDk2ZTQyOGU2ODg2
NzlhODQwN2EyMTlmN2I1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19u
ZXR3b3JrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25ldHdvcmsuY3BwCkBA
IC02Myw3ICs2Myw3IEBAIGNvbnN0IGNoYXIqIGV3a19uZXR3b3JrX3Byb3h5X3VyaV9nZXQodm9p
ZCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgV1RGOjpTdHJpbmcgcHJveHkgPSBz
b3VwX3VyaV90b19zdHJpbmcodXJpLCBFSU5BX0ZBTFNFKTsKKyAgICBXVEY6OlN0cmluZyBwcm94
eSA9IHNvdXBfdXJpX3RvX3N0cmluZyh1cmksIGZhbHNlKTsKICAgICByZXR1cm4gZWluYV9zdHJp
bmdzaGFyZV9hZGQocHJveHkudXRmOCgpLmRhdGEoKSk7CiAjZWxpZiBVU0UoQ1VSTCkKICAgICBF
SU5BX1NBRkVUWV9PTl9UUlVFX1JFVFVSTl9WQUwoMSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyLmNwcAppbmRleCBkZWI4NzM0Y2EwYTNjYzE4YTJk
ZmU5NGUzNzNmMmVmMGU2MDliZTBmLi5kNWVjYWI1NDNlMDI5YjE0MjM1YWNkMmU1N2EwZTgwZjAw
NTY3MmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Byb3RvY29sX2hh
bmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxl
ci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAgRWluYV9Cb29sIGV3a19jdXN0b21fcHJvdG9jb2xfaGFu
ZGxlcl9zZXQoY29uc3QgY2hhcioqIHByb3RvY29scykKICAgICByZXR1cm4gZXdrX2N1c3RvbV9w
cm90b2NvbF9oYW5kbGVyX3NvdXBfc2V0KHByb3RvY29scyk7CiAjZWxzZQogICAgIEVJTkFfTE9H
X0NSSVQoIk5vdCBpbXBsZW1lbnRlZCIpOwotICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIHJl
dHVybiBmYWxzZTsKICNlbmRpZgogfQogCkBAIC00MCw2ICs0MCw2IEBAIEVpbmFfQm9vbCBld2tf
Y3VzdG9tX3Byb3RvY29sX2hhbmRsZXJfYWxsX3Vuc2V0KCkKICAgICByZXR1cm4gZXdrX2N1c3Rv
bV9wcm90b2NvbF9oYW5kbGVyX3NvdXBfYWxsX3Vuc2V0KCk7CiAjZWxzZQogICAgIEVJTkFfTE9H
X0NSSVQoIk5vdCBpbXBsZW1lbnRlZCIpOwotICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIHJl
dHVybiBmYWxzZTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19wcm90b2NvbF9oYW5kbGVyX3NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19wcm90b2NvbF9oYW5kbGVyX3NvdXAuY3BwCmluZGV4IDlkNTlmZGM5NzY0ZWVmY2I1NmMyZDdm
M2U2YjhhYzdiM2QzNDBhZjIuLjA1MjM4MDk3MjNmNjA1Y2YwZGZlODhhZGZkMTE3Y2RhMjdlYmQ1
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxl
cl9zb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRs
ZXJfc291cC5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBFaW5hX0Jvb2wgZXdrX2N1c3RvbV9wcm90
b2NvbF9oYW5kbGVyX3NvdXBfc2V0KGNvbnN0IGNoYXIqKiBwcm90b2NvbHMpCiAgICAgcHJvdG9j
b2xzU2l6ZSA9IGdfc3Rydl9sZW5ndGgoY29uc3RfY2FzdDxnY2hhcioqPihwcm90b2NvbHMpKTsK
IAogICAgIC8vIFRoaXMgYXJyYXkgbXVzdCBiZSBudWxsIHRlcm1pbmF0ZWQuCi0gICAgRUlOQV9T
QUZFVFlfT05fVFJVRV9SRVRVUk5fVkFMKCFwcm90b2NvbHNTaXplIHx8IHByb3RvY29sc1twcm90
b2NvbHNTaXplXSwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fVFJVRV9SRVRVUk5f
VkFMKCFwcm90b2NvbHNTaXplIHx8IHByb3RvY29sc1twcm90b2NvbHNTaXplXSwgZmFsc2UpOwog
CiAgICAgcmVxdWVzdGVyID0gc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Npb24sIFNPVVBf
VFlQRV9SRVFVRVNURVIpOwogICAgIGlmICghcmVxdWVzdGVyKSB7CkBAIC0xNTksMTUgKzE1OSwx
NSBAQCBFaW5hX0Jvb2wgZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX3NvdXBfc2V0KGNvbnN0
IGNoYXIqKiBwcm90b2NvbHMpCiAKICAgICBpZiAoc291cF9zZXNzaW9uX2ZlYXR1cmVfaGFzX2Zl
YXR1cmUocmVxdWVzdGVyLCBFV0tfVFlQRV9DVVNUT01fUFJPVE9DT0xfSEFORExFUikpIHsKICAg
ICAgICAgY3VzdG9tUHJvdG9jb2xBZGRlZENvdW50Kys7Ci0gICAgICAgIHJldHVybiBFSU5BX1RS
VUU7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIHNjaGVtZXMgPSBnX3N0cmR1
cHYoY29uc3RfY2FzdDxnY2hhcioqPihwcm90b2NvbHMpKTsKICAgICBpZiAoIShzY2hlbWVzICYm
IHNvdXBfc2Vzc2lvbl9mZWF0dXJlX2FkZF9mZWF0dXJlKHJlcXVlc3RlciwgRVdLX1RZUEVfQ1VT
VE9NX1BST1RPQ09MX0hBTkRMRVIpKSkKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGN1c3RvbVByb3RvY29sQWRkZWRDb3VudCsrOwotICAg
IHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tf
Y3VzdG9tX3Byb3RvY29sX2hhbmRsZXJfc291cF9hbGxfdW5zZXQoKQpAQCAtMTc2LDIyICsxNzYs
MjIgQEAgRWluYV9Cb29sIGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9zb3VwX2FsbF91bnNl
dCgpCiAgICAgU291cFNlc3Npb25GZWF0dXJlKiByZXF1ZXN0ZXI7CiAKICAgICBpZiAoIWN1c3Rv
bVByb3RvY29sQWRkZWRDb3VudCkKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIHJlcXVlc3RlciA9IHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVy
ZShzZXNzaW9uLCBTT1VQX1RZUEVfUkVRVUVTVEVSKTsKICAgICBpZiAoIXJlcXVlc3RlcikKLSAg
ICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlm
ICghc291cF9zZXNzaW9uX2ZlYXR1cmVfaGFzX2ZlYXR1cmUocmVxdWVzdGVyLCBFV0tfVFlQRV9D
VVNUT01fUFJPVE9DT0xfSEFORExFUikpCi0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoY3VzdG9tUHJvdG9jb2xBZGRlZENvdW50ID09
IDEpIHsKICAgICAgICAgaWYgKHNvdXBfc2Vzc2lvbl9mZWF0dXJlX3JlbW92ZV9mZWF0dXJlKHJl
cXVlc3RlciwgRVdLX1RZUEVfQ1VTVE9NX1BST1RPQ09MX0hBTkRMRVIpKQogICAgICAgICAgICAg
Z19zdHJmcmVldihzY2hlbWVzKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIEVJ
TkFfRkFMU0U7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY3VzdG9t
UHJvdG9jb2xBZGRlZENvdW50LS07Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAKaW5kZXggNjRmMTRm
ODU0YzNkNzBhM2JkYTgwYmIxNjRjODZjZDExY2U2ZjBlMC4uNTRkN2M3MjIxZTAzYjlmYzIwZWMw
OWEzNGY4MDRmN2RhNmU1OTlhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19zZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5j
cHAKQEAgLTExNiwyNSArMTE2LDI1IEBAIEVpbmFfQm9vbCBld2tfc2V0dGluZ3NfaWNvbl9kYXRh
YmFzZV9wYXRoX3NldChjb25zdCBjaGFyKiBkaXJlY3RvcnkpCiAgICAgaWYgKGRpcmVjdG9yeSkg
ewogICAgICAgICBpZiAoV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuaXNFbmFibGVkKCkpIHsKICAg
ICAgICAgICAgIEVSUigiSWNvbkRhdGFiYXNlIGlzIGFscmVhZHkgb3BlbjogJXMiLCBfZXdrX2lj
b25fZGF0YWJhc2VfcGF0aCk7Ci0gICAgICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIHN0cnVjdCBzdGF0IHN0
OwogCiAgICAgICAgIGlmIChzdGF0KGRpcmVjdG9yeSwgJnN0KSkgewogICAgICAgICAgICAgRVJS
KCJjb3VsZCBub3Qgc3RhdCglcyk6ICVzIiwgZGlyZWN0b3J5LCBzdHJlcnJvcihlcnJubykpOwot
ICAgICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIVNfSVNESVIoc3Quc3RfbW9kZSkpIHsKICAgICAg
ICAgICAgIEVSUigibm90IGEgZGlyZWN0b3J5OiAlcyIsIGRpcmVjdG9yeSk7Ci0gICAgICAgICAg
ICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQogCiAgICAgICAgIGlmIChhY2Nlc3MoZGlyZWN0b3J5LCBSX09LIHwgV19PSykpIHsKICAgICAg
ICAgICAgIEVSUigiY291bGQgbm90IGFjY2VzcyBkaXJlY3RvcnkgJyVzJyBmb3IgcmVhZCBhbmQg
d3JpdGU6ICVzIiwKICAgICAgICAgICAgICAgICBkaXJlY3RvcnksIHN0cmVycm9yKGVycm5vKSk7
Ci0gICAgICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogCiAgICAgICAgIFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLnNldEVuYWJs
ZWQodHJ1ZSk7CkBAIC0xNTEsNyArMTUxLDcgQEAgRWluYV9Cb29sIGV3a19zZXR0aW5nc19pY29u
X2RhdGFiYXNlX3BhdGhfc2V0KGNvbnN0IGNoYXIqIGRpcmVjdG9yeSkKICAgICAgICAgICAgIF9l
d2tfaWNvbl9kYXRhYmFzZV9wYXRoID0gMDsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4g
RUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBjb25zdCBjaGFyKiBld2tfc2V0dGlu
Z3NfaWNvbl9kYXRhYmFzZV9wYXRoX2dldCh2b2lkKQpAQCAtMTY3LDEyICsxNjcsMTIgQEAgY29u
c3QgY2hhciogZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aF9nZXQodm9pZCkKIEVpbmFf
Qm9vbCBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9jbGVhcih2b2lkKQogewogICAgIGlmICgh
V2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuaXNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBFSU5B
X0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFXZWJDb3JlOjppY29uRGF0
YWJhc2UoKS5pc09wZW4oKSkKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLnJlbW92ZUFsbEljb25z
KCk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogY2Fpcm9f
c3VyZmFjZV90KiBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9pY29uX3N1cmZhY2VfZ2V0KGNv
bnN0IGNoYXIqIHVybCkKQEAgLTI1NCwxNCArMjU0LDE0IEBAIGNvbnN0IGNoYXIqIGV3a19zZXR0
aW5nc19kZWZhdWx0X3VzZXJfYWdlbnRfZ2V0KHZvaWQpCiBFaW5hX0Jvb2wgZXdrX3NldHRpbmdz
X2NhY2hlX2RpcmVjdG9yeV9wYXRoX3NldChjb25zdCBjaGFyKiBwYXRoKQogewogICAgIGlmICgh
cGF0aCkKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIFdlYkNvcmU6OmNhY2hlU3RvcmFnZSgpLnNldENhY2hlRGlyZWN0b3J5KFdURjo6U3Ry
aW5nOjpmcm9tVVRGOChwYXRoKSk7CiAgICAgaWYgKCFfZXdrX2NhY2hlX2RpcmVjdG9yeV9wYXRo
KQogICAgICAgICBfZXdrX2NhY2hlX2RpcmVjdG9yeV9wYXRoID0gZWluYV9zdHJpbmdzaGFyZV9h
ZGQocGF0aCk7CiAgICAgZWxzZQogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJl9l
d2tfY2FjaGVfZGlyZWN0b3J5X3BhdGgsIHBhdGgpOwotICAgIHJldHVybiBFSU5BX1RSVUU7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIGNvbnN0IGNoYXIqIGV3a19zZXR0aW5nc19jYWNoZV9kaXJl
Y3RvcnlfcGF0aF9nZXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190
aWxlZF9iYWNraW5nX3N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZS5jcHAKaW5kZXggZTM2NTExYzE2YjYyYzg0NTNiYjA4NjRhMTEyZjA2OWYx
OWRiYzU1NS4uYmRmMDFhZWI2YjRmYzRkODI2YzM2M2YxMzM1NmE3MGRkMGJlNGY4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwCkBA
IC0yNTQsNyArMjU0LDcgQEAgc3RhdGljIGlubGluZSBFaW5hX0Jvb2wgX2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9hZGQoRXdrX1RpbGUKIAogICAgIHJlcXVlc3Qg
PSBzdGF0aWNfY2FzdDxFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9QcmVfUmVuZGVyX1JlcXVlc3Qq
PihtYWxsb2Moc2l6ZW9mKCpyZXF1ZXN0KSkpOwogICAgIGlmICghcmVxdWVzdCkKLSAgICAgICAg
cmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChwcmlv
cml0eSA9PSBQUkVfUkVOREVSX1BSSU9SSVRZX0hJR0gpCiAgICAgICAgIHByaXYtPnJlbmRlci5w
cmVSZW5kZXJSZXF1ZXN0cyA9IGVpbmFfaW5saXN0X3ByZXBlbmQKQEAgLTI2Nyw3ICsyNjcsNyBA
QCBzdGF0aWMgaW5saW5lIEVpbmFfQm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3Jl
bmRlcl9yZXF1ZXN0X2FkZChFd2tfVGlsZQogICAgIHJlcXVlc3QtPnJvdyA9IHJvdzsKICAgICBy
ZXF1ZXN0LT56b29tID0gem9vbTsKIAotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
cHJlX3JlbmRlcl9yZXF1ZXN0X2RlbChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBwcml2
LCBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9QcmVfUmVuZGVyX1JlcXVlc3QqIHJlcXVlc3QpCkBA
IC0zNzIsMTAgKzM3MiwxMCBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdGlsZWRfYmFja2luZ19z
dG9yZV9pdGVtX3Byb2Nlc3NfaWRsZXJfY2Iodm9pZCogZGF0YSkKIAogICAgIGlmICghcHJpdi0+
cmVuZGVyLnByZVJlbmRlclJlcXVlc3RzKSB7CiAgICAgICAgIHByaXYtPnJlbmRlci5pZGxlciA9
IDA7Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3Rh
dGljIGlubGluZSB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX3Byb2Nlc3NfaWRs
ZXJfc3RvcChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBwcml2KQpAQCAtMzk4LDI0ICsz
OTgsMjQgQEAgc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVt
X3Byb2Nlc3NfaWRsZXJfc3RhcnQoRXdrX1RpbGVkX0IKIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a190
aWxlZF9iYWNraW5nX3N0b3JlX2Rpc2FibGVfcmVuZGVyKEV3a19UaWxlZF9CYWNraW5nX1N0b3Jl
X0RhdGEqIHByaXYpCiB7CiAgICAgaWYgKHByaXYtPnJlbmRlci5zdXNwZW5kKQotICAgICAgICBy
ZXR1cm4gRUlOQV9UUlVFOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHByaXYtPnJlbmRl
ci5zdXNwZW5kID0gRUlOQV9UUlVFOworICAgIHByaXYtPnJlbmRlci5zdXNwZW5kID0gdHJ1ZTsK
ICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9wcm9jZXNzX2lkbGVyX3N0b3AocHJp
dik7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGlj
IEVpbmFfQm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZW5hYmxlX3JlbmRlcihFd2tfVGls
ZWRfQmFja2luZ19TdG9yZV9EYXRhKiBwcml2KQogewogICAgIGlmICghcHJpdi0+cmVuZGVyLnN1
c3BlbmQpCi0gICAgICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgcHJpdi0+cmVuZGVyLnN1c3BlbmQgPSBFSU5BX0ZBTFNFOworICAgIHByaXYtPnJlbmRl
ci5zdXNwZW5kID0gZmFsc2U7CiAKICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZmlsbF9y
ZW5kZXJlcnMocHJpdik7CiAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fcHJvY2Vz
c19pZGxlcl9zdGFydChwcml2KTsKIAotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHN0YXRpYyBpbmxpbmUgRWluYV9Cb29sIF9ld2tfdGlsZWRfYmFja2luZ19z
dG9yZV9pdGVtX2ZpbGwoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSogcHJpdiwgRXdrX1Rp
bGVkX0JhY2tpbmdfU3RvcmVfSXRlbSogaXRlbSwgdW5zaWduZWQgbG9uZyBjb2x1bW4sIHVuc2ln
bmVkIGxvbmcgcm93KQpAQCAtNDUzLDcgKzQ1Myw3IEBAIHN0YXRpYyBpbmxpbmUgRWluYV9Cb29s
IF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX2ZpbGwoRXdrX1RpbGVkX0JhY2tpbmdfU3Rv
CiAgICAgICAgICAgICBpZiAoIXByaXYtPnJlbmRlci5zdXNwZW5kKSB7CiAgICAgICAgICAgICAg
ICAgdGlsZSA9IF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX25ldyhwcml2LCBjdXJyZW50
Q29sdW1uLCBjdXJyZW50Um93LCB6b29tKTsKICAgICAgICAgICAgICAgICBpZiAoIXRpbGUpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3Jl
X3RpbGVfYXNzb2NpYXRlKHByaXYsIHRpbGUsIGl0ZW0pOwogICAgICAgICAgICAgfQogICAgICAg
ICB9IGVsc2UgaWYgKHRpbGUgIT0gaXRlbS0+dGlsZSkgewpAQCAtNDY1LDEwICs0NjUsMTAgQEAg
c3RhdGljIGlubGluZSBFaW5hX0Jvb2wgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fZmls
bChFd2tfVGlsZWRfQmFja2luZ19TdG8KIAogZW5kOgogCi0gICAgICAgIHJldHVybiBFSU5BX1RS
VUU7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHJldHVybiBFSU5BX1RSVUU7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9J
dGVtKiBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9hZGQoRXdrX1RpbGVkX0JhY2tpbmdf
U3RvcmVfRGF0YSogcHJpdiwgdW5zaWduZWQgbG9uZyBjb2x1bW4sIHVuc2lnbmVkIGxvbmcgcm93
KQpAQCAtNTI0LDcgKzUyNCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfY2hhbmdlZChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhCiAgICAgaWYgKHBy
aXYtPmNoYW5nZWQuYW55KQogICAgICAgICByZXR1cm47CiAgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2hhbmdlZChwcml2LT5zZWxmKTsKLSAgICBwcml2LT5jaGFuZ2VkLmFueSA9IEVJTkFfVFJVRTsK
KyAgICBwcml2LT5jaGFuZ2VkLmFueSA9IHRydWU7CiB9CiAKIHN0YXRpYyB2b2lkIF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV92aWV3X2NvbHNfZW5kX2RlbChFd2tfVGlsZWRfQmFja2luZ19TdG9y
ZV9EYXRhKiBwcml2LCBFaW5hX0lubGlzdCoqIHJvd0xpc3QsIHVuc2lnbmVkIGludCBjb3VudCkK
QEAgLTU1NywxMiArNTU3LDEyIEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a190aWxlZF9iYWNraW5n
X3N0b3JlX3ZpZXdfY29sc19lbmRfYWRkKEV3a19UaWxlZF9CYWNraW5nX1N0CiAgICAgICAgIGlm
ICghaXQpIHsKICAgICAgICAgICAgIENSSVRJQ0FMKCJmYWlsZWQgdG8gYWRkIGNvbHVtbiAldSBv
ZiAldSBpbiByb3cgJXUuIiwgaSwgY291bnQsIHJvdyk7CiAgICAgICAgICAgICBfZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfdmlld19jb2xzX2VuZF9kZWwocHJpdiwgcm93TGlzdCwgaSk7Ci0gICAg
ICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogCiAgICAgICAgICpyb3dMaXN0ID0gZWluYV9pbmxpc3RfYXBwZW5kKCpyb3dMaXN0
LCBFSU5BX0lOTElTVF9HRVQoaXQpKTsKICAgICB9Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3Jl
X3ZpZXdfcm93X2RlbChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBwcml2LCBFaW5hX0lu
bGlzdCogcm93KQpAQCAtNjIzLDggKzYyMyw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfbW9kZWxfbWF0cml4X2NyZWF0ZShFd2tfVGlsZWRfQmFja2luCiAg
ICAgaWYgKHByaXYtPm1vZGVsLm1hdHJpeCkgewogICAgICAgICBfZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfdmlld19yb3dzX2FsbF9kZWwocHJpdik7CiAKLSAgICAgICAgcHJpdi0+Y2hhbmdlZC5v
ZmZzZXQgPSBFSU5BX0ZBTFNFOwotICAgICAgICBwcml2LT5jaGFuZ2VkLnNpemUgPSBFSU5BX1RS
VUU7CisgICAgICAgIHByaXYtPmNoYW5nZWQub2Zmc2V0ID0gZmFsc2U7CisgICAgICAgIHByaXYt
PmNoYW5nZWQuc2l6ZSA9IHRydWU7CiAKICAgICAgICAgZXdrX3RpbGVfbWF0cml4X2ZyZWUocHJp
di0+bW9kZWwubWF0cml4KTsKICAgICB9CkBAIC02ODMsNyArNjgzLDcgQEAgc3RhdGljIEVpbmFf
Qm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2lnX3Vzcih2b2lkKiBkYXRhLCBpbnQgdHlw
ZSwgdm9pZCogZXYKIAogICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X2RiZyhwcml2
KTsKICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfbWVtX2RiZyhwcml2KTsKLSAgICByZXR1
cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogI2VuZGlmCiAKQEAgLTcxNiw3ICs3
MTYsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfYWRkKEV2
YXNfT2JqZWN0KiBld2tUaWxlKQogICAgIHByaXYtPm1vZGVsLm9sZC5yb3dzID0gMDsKICAgICBw
cml2LT5tb2RlbC53aWR0aCA9IDA7CiAgICAgcHJpdi0+bW9kZWwuaGVpZ2h0ID0gMDsKLSAgICBw
cml2LT5yZW5kZXIuc3VzcGVuZCA9IEVJTkFfRkFMU0U7CisgICAgcHJpdi0+cmVuZGVyLnN1c3Bl
bmQgPSBmYWxzZTsKICAgICBwcml2LT5jb2xvclNwYWNlID0gRVZBU19DT0xPUlNQQUNFX0FSR0I4
ODg4OyAvLyBUT0RPOiBkZXRlY3QgaXQuCiAKICAgICBldmFzX29iamVjdF9zbWFydF9kYXRhX3Nl
dChld2tUaWxlLCBwcml2KTsKQEAgLTc4Nyw3ICs3ODcsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfbW92ZShFdmFzX09iamVjdCogZXdrVGlsZSwgRXZhc19D
b29yZAogICAgIGlmIChwcml2LT52aWV3LnggPT0geCAmJiBwcml2LT52aWV3LnkgPT0geSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgcHJpdi0+Y2hhbmdlZC5wb3NpdGlvbiA9IEVJTkFfVFJVRTsK
KyAgICBwcml2LT5jaGFuZ2VkLnBvc2l0aW9uID0gdHJ1ZTsKICAgICBfZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfY2hhbmdlZChwcml2KTsKIH0KIApAQCAtODAzLDcgKzgwMyw3IEBAIHN0YXRpYyB2
b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9yZXNpemUoRXZhc19PYmplY3QqIGV3
a1RpbGUsIEV2YXNfQ29vCiAgICAgaWYgKHByaXYtPnZpZXcud2lkdGggPT0gd2lkdGggJiYgcHJp
di0+dmlldy5oZWlnaHQgPT0gaGVpZ2h0KQogICAgICAgICByZXR1cm47CiAKLSAgICBwcml2LT5j
aGFuZ2VkLnNpemUgPSBFSU5BX1RSVUU7CisgICAgcHJpdi0+Y2hhbmdlZC5zaXplID0gdHJ1ZTsK
ICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfY2hhbmdlZChwcml2KTsKIH0KIApAQCAtMTMw
NCw3ICsxMzA0LDcgQEAgc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0
X2NhbGN1bGF0ZShFdmFzX09iamVjdCogZXdrVGlsZSkKIAogICAgIFBSSVZfREFUQV9HRVRfT1Jf
UkVUVVJOKGV3a1RpbGUsIHByaXYpOwogCi0gICAgcHJpdi0+Y2hhbmdlZC5hbnkgPSBFSU5BX0ZB
TFNFOworICAgIHByaXYtPmNoYW5nZWQuYW55ID0gZmFsc2U7CiAKICAgICBld2tfdGlsZV9tYXRy
aXhfZnJlZXplKHByaXYtPm1vZGVsLm1hdHJpeCk7CiAKQEAgLTEzMjcsMTYgKzEzMjcsMTYgQEAg
c3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2NhbGN1bGF0ZShFdmFz
X09iamVjdCogZXdrVGlsZSkKIAogICAgIGlmIChwcml2LT5jaGFuZ2VkLnBvc2l0aW9uICYmIChw
cml2LT52aWV3LnggIT0geCB8fCBwcml2LT52aWV3LnkgIT0geSkpIHsKICAgICAgICAgX2V3a190
aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2NhbGN1bGF0ZV9wb3MocHJpdiwgeCwgeSk7Ci0gICAg
ICAgIHByaXYtPmNoYW5nZWQucG9zaXRpb24gPSBFSU5BX0ZBTFNFOworICAgICAgICBwcml2LT5j
aGFuZ2VkLnBvc2l0aW9uID0gZmFsc2U7CiAgICAgfQogICAgIGlmIChwcml2LT5jaGFuZ2VkLm9m
ZnNldCkgewogICAgICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfY2FsY3VsYXRl
X29mZnNldChwcml2LCB4LCB5KTsKLSAgICAgICAgcHJpdi0+Y2hhbmdlZC5vZmZzZXQgPSBFSU5B
X0ZBTFNFOworICAgICAgICBwcml2LT5jaGFuZ2VkLm9mZnNldCA9IGZhbHNlOwogICAgIH0KIAog
ICAgIGlmIChwcml2LT5jaGFuZ2VkLnNpemUpIHsKICAgICAgICAgX2V3a190aWxlZF9iYWNraW5n
X3N0b3JlX3NtYXJ0X2NhbGN1bGF0ZV9zaXplKHByaXYsIHdpZHRoLCBoZWlnaHQpOwotICAgICAg
ICBwcml2LT5jaGFuZ2VkLnNpemUgPSBFSU5BX0ZBTFNFOworICAgICAgICBwcml2LT5jaGFuZ2Vk
LnNpemUgPSBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoIXByaXYtPnJlbmRlci5zdXNwZW5kICYm
IHByaXYtPmNoYW5nZWQubW9kZWwpIHsKQEAgLTEzNDksNyArMTM0OSw3IEBAIHN0YXRpYyB2b2lk
IF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9jYWxjdWxhdGUoRXZhc19PYmplY3QqIGV3
a1RpbGUpCiAgICAgICAgIGV3a190aWxlX21hdHJpeF9yZXNpemUocHJpdi0+bW9kZWwubWF0cml4
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPm1vZGVsLmN1cnJlbnQuY29s
dW1ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5tb2RlbC5jdXJyZW50
LnJvd3MpOwotICAgICAgICBwcml2LT5jaGFuZ2VkLm1vZGVsID0gRUlOQV9GQUxTRTsKKyAgICAg
ICAgcHJpdi0+Y2hhbmdlZC5tb2RlbCA9IGZhbHNlOwogICAgICAgICBldmFzX29iamVjdF9yZXNp
emUocHJpdi0+Y29udGVudHNDbGlwcGVyLCBwcml2LT5tb2RlbC53aWR0aCwgcHJpdi0+bW9kZWwu
aGVpZ2h0KTsKICAgICAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2NhbGN1bGF0
ZV9vZmZzZXRfZm9yY2UocHJpdik7CiAKQEAgLTE0MzIsMjQgKzE0MzIsMjQgQEAgc3RhdGljIEVp
bmFfQm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xsX2Z1bGxfb2Zmc2V0X3NldF9p
bnRlcm5hbChFd2tfVGkKIHsKICAgICAvKiBUT0RPOiBjaGVjayBvZmZzZXQgZ28gb3V0IG9mIGJv
dW5kcywgY2xhbXAgKi8KICAgICBpZiAocHJpdi0+cmVuZGVyLmRpc2FibGVkKQotICAgICAgICBy
ZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcHJpdi0+dmll
dy5vZmZzZXQuY3VyLnggPSB4OwogICAgIHByaXYtPnZpZXcub2Zmc2V0LmN1ci55ID0geTsKIAot
ICAgIHByaXYtPmNoYW5nZWQub2Zmc2V0ID0gRUlOQV9UUlVFOworICAgIHByaXYtPmNoYW5nZWQu
b2Zmc2V0ID0gdHJ1ZTsKICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfY2hhbmdlZChwcml2
KTsKIAotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFf
Qm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zY3JvbGxfZnVsbF9vZmZzZXRfc2V0KEV2YXNf
T2JqZWN0KiBld2tUaWxlLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSkKIHsKICAgICBEQkco
ImV3a1RpbGUlcCwgeD0lZCwgeT0lZCIsIGV3a1RpbGUsIHgsIHkpOwogCi0gICAgUFJJVl9EQVRB
X0dFVF9PUl9SRVRVUk4oZXdrVGlsZSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgUFJJVl9EQVRB
X0dFVF9PUl9SRVRVUk4oZXdrVGlsZSwgcHJpdiwgZmFsc2UpOwogICAgIGlmICh4ID09IHByaXYt
PnZpZXcub2Zmc2V0LmN1ci54ICYmIHkgPT0gcHJpdi0+dmlldy5vZmZzZXQuY3VyLnkpCi0gICAg
ICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJu
IF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zY3JvbGxfZnVsbF9vZmZzZXRfc2V0X2ludGVybmFs
KHByaXYsIHgsIHkpOwogfQpAQCAtMTQ1OCw5ICsxNDU4LDkgQEAgRWluYV9Cb29sIGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3Njcm9sbF9mdWxsX29mZnNldF9hZGQoRXZhc19PYmplY3QqIGV3a1Rp
bGUsIEUKIHsKICAgICBEQkcoImV3a1RpbGUlcCwgZGVsdGFYPSVkLCBkZWx0YVk9JWQiLCBld2tU
aWxlLCBkZWx0YVgsIGRlbHRhWSk7CiAKLSAgICBQUklWX0RBVEFfR0VUX09SX1JFVFVSTihld2tU
aWxlLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBQUklWX0RBVEFfR0VUX09SX1JFVFVSTihld2tU
aWxlLCBwcml2LCBmYWxzZSk7CiAgICAgaWYgKCFkZWx0YVggJiYgIWRlbHRhWSkKLSAgICAgICAg
cmV0dXJuIEVJTkFfVFJVRTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gX2V3
a190aWxlZF9iYWNraW5nX3N0b3JlX3Njcm9sbF9mdWxsX29mZnNldF9zZXRfaW50ZXJuYWwKICAg
ICAgICAgICAgICAgIChwcml2LCBwcml2LT52aWV3Lm9mZnNldC5jdXIueCArIGRlbHRhWCwgcHJp
di0+dmlldy5vZmZzZXQuY3VyLnkgKyBkZWx0YVkpOwpAQCAtMTQ3NCw3ICsxNDc0LDcgQEAgc3Rh
dGljIEVpbmFfQm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV9zZXRfaW50ZXJuYWwo
RXdrX1RpbGVkX0JhY2tpbmdfU3QKICAgICBpZiAoZmFic2YocHJpdi0+dmlldy50aWxlLnpvb20g
LSAqem9vbSkgPCBaT09NX1NURVBfTUlOKSB7CiAgICAgICAgIERCRygiaWdub3JlZCBhcyB6b29t
IGRpZmZlcmVuY2UgaXMgPCAlZjogJWYiLAogICAgICAgICAgICAgKGRvdWJsZSlaT09NX1NURVBf
TUlOLCBmYWJzZihwcml2LT52aWV3LnRpbGUuem9vbSAtICp6b29tKSk7Ci0gICAgICAgIHJldHVy
biBFSU5BX1RSVUU7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfZmx1c2gocHJpdik7CkBAIC0xNDk2
LDcgKzE0OTYsNyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV96
b29tX3NldF9pbnRlcm5hbChFd2tfVGlsZWRfQmFja2luZ19TdAogICAgIGlmICghcHJpdi0+dmll
dy53aWR0aCB8fCAhcHJpdi0+dmlldy5oZWlnaHQpIHsKICAgICAgICAgcHJpdi0+dmlldy5vZmZz
ZXQuYmFzZS54ID0gMDsKICAgICAgICAgcHJpdi0+dmlldy5vZmZzZXQuYmFzZS55ID0gMDsKLSAg
ICAgICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAg
IEVpbmFfSW5saXN0KiogaXRlcmF0b3IsICoqaXRlcmF0b3JFbmQ7CiAgICAgRXdrX1RpbGVkX0Jh
Y2tpbmdfU3RvcmVfSXRlbSogaXQ7CkBAIC0xNTIyLDggKzE1MjIsOCBAQCBzdGF0aWMgRWluYV9C
b29sIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3NldF9pbnRlcm5hbChFd2tfVGlsZWRf
QmFja2luZ19TdAogICAgIHByaXYtPm1vZGVsLmJhc2UuY29sdW1uID0gLW5ld1ggLyB0aWxlV2lk
dGg7CiAgICAgcHJpdi0+bW9kZWwuYmFzZS5yb3cgPSAtbmV3WSAvIHRpbGVIZWlnaHQ7CiAKLSAg
ICBwcml2LT5jaGFuZ2VkLnNpemUgPSBFSU5BX1RSVUU7Ci0gICAgcHJpdi0+Y2hhbmdlZC5tb2Rl
bCA9IEVJTkFfVFJVRTsKKyAgICBwcml2LT5jaGFuZ2VkLnNpemUgPSB0cnVlOworICAgIHByaXYt
PmNoYW5nZWQubW9kZWwgPSB0cnVlOwogICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9jaGFu
Z2VkKHByaXYpOwogCiAgICAgcHJpdi0+dmlldy5vZmZzZXQuY3VyLnggPSBuZXdYOwpAQCAtMTU2
MSwxNCArMTU2MSwxNCBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV96b29tX3NldF9pbnRlcm5hbChFd2tfVGlsZWRfQmFja2luZ19TdAogICAgICAgICB0aWxlUG9z
aXRpb25ZICs9IHRpbGVIZWlnaHQ7CiAgICAgfQogCi0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3pv
b21fc2V0KEV2YXNfT2JqZWN0KiBld2tUaWxlLCBmbG9hdCogem9vbSwgRXZhc19Db29yZCBjdXJy
ZW50WCwgRXZhc19Db29yZCBjdXJyZW50WSwgRXZhc19Db29yZCogb2Zmc2V0WCwgRXZhc19Db29y
ZCogb2Zmc2V0WSkKIHsKICAgICBEQkcoImV3a1RpbGUlcCwgem9vbT0lZiIsIGV3a1RpbGUsICp6
b29tKTsKIAotICAgIFBSSVZfREFUQV9HRVRfT1JfUkVUVVJOKGV3a1RpbGUsIHByaXYsIEVJTkFf
RkFMU0UpOworICAgIFBSSVZfREFUQV9HRVRfT1JfUkVUVVJOKGV3a1RpbGUsIHByaXYsIGZhbHNl
KTsKIAogICAgIHJldHVybiBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV9zZXRfaW50ZXJu
YWwocHJpdiwgem9vbSwgY3VycmVudFgsIGN1cnJlbnRZLCBvZmZzZXRYLCBvZmZzZXRZKTsKIH0K
QEAgLTE1NzYsMTMgKzE1NzYsMTMgQEAgRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3Jl
X3pvb21fc2V0KEV2YXNfT2JqZWN0KiBld2tUaWxlLCBmbG9hdCogem9vbSwgRXYKIEVpbmFfQm9v
bCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3dlYWtfc2V0KEV2YXNfT2JqZWN0KiBld2tU
aWxlLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN1cnJlbnRYLCBFdmFzX0Nvb3JkIGN1cnJlbnRZ
KQogewogICAgIERCRygiZXdrVGlsZSVwLCB6b29tPSVmIiwgZXdrVGlsZSwgem9vbSk7Ci0gICAg
UFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrVGlsZSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAg
UFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrVGlsZSwgcHJpdiwgZmFsc2UpOwogICAgIGlmICgh
cHJpdi0+dmlldy53aWR0aCB8fCAhcHJpdi0+dmlldy5oZWlnaHQpCi0gICAgICAgIHJldHVybiBF
SU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgRWluYV9Jbmxpc3QqKiBpdGVy
YXRvciwgKiogaXRlcmF0b3JFbmQ7CiAgICAgRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSog
aXRlbTsKICAgICBFdmFzX0Nvb3JkIHRpbGVXaWR0aCwgdGlsZUhlaWdodDsKLSAgICBFaW5hX0Jv
b2wgcmVDYWxjdWxhdGUgPSBFSU5BX0ZBTFNFOworICAgIEVpbmFfQm9vbCByZUNhbGN1bGF0ZSA9
IGZhbHNlOwogCiAgICAgZmxvYXQgc2NhbGUgPSB6b29tIC8gcHJpdi0+dmlldy50aWxlLnpvb207
CiAKQEAgLTE2MDgsMTEgKzE2MDgsMTEgQEAgRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0
b3JlX3pvb21fd2Vha19zZXQoRXZhc19PYmplY3QqIGV3a1RpbGUsIGZsb2F0IHpvb20KICAgICBp
ZiAoYmFzZVJvdyAhPSBwcml2LT5tb2RlbC5iYXNlLnJvdyB8fCBiYXNlQ29sdW1uICE9IHByaXYt
Pm1vZGVsLmJhc2UuY29sdW1uKSB7CiAgICAgICAgIHByaXYtPm1vZGVsLmJhc2Uucm93ID0gYmFz
ZVJvdzsKICAgICAgICAgcHJpdi0+bW9kZWwuYmFzZS5jb2x1bW4gPSBiYXNlQ29sdW1uOwotICAg
ICAgICByZUNhbGN1bGF0ZSA9IEVJTkFfVFJVRTsKKyAgICAgICAgcmVDYWxjdWxhdGUgPSB0cnVl
OwogICAgIH0KIAogICAgIGlmICh2cm93cyA+IHByaXYtPnZpZXcucm93cyB8fCB2Y29scyA+IHBy
aXYtPnZpZXcuY29scykKLSAgICAgICAgcmVDYWxjdWxhdGUgPSBFSU5BX1RSVUU7CisgICAgICAg
IHJlQ2FsY3VsYXRlID0gdHJ1ZTsKIAogICAgIGlmIChyZUNhbGN1bGF0ZSkgewogICAgICAgICBF
dmFzX0Nvb3JkIHdpZHRoLCBoZWlnaHQ7CkBAIC0xNjQ0LDcgKzE2NDQsNyBAQCBFaW5hX0Jvb2wg
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV93ZWFrX3NldChFdmFzX09iamVjdCogZXdrVGls
ZSwgZmxvYXQgem9vbQogICAgICAgICB0aWxlUG9zaXRpb25ZICs9IHRpbGVIZWlnaHQ7CiAgICAg
fQogCi0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBl
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9maXhfb2Zmc2V0cyhFdmFzX09iamVjdCogZXdrVGlsZSwg
RXZhc19Db29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQpCkBAIC0xNzMwLDEwICsxNzMwLDEw
IEBAIHZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9z
ZXQoRXZhc19PYmplY3QqIGV3a1RpbGUsIEVpCiAKIEVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV91cGRhdGUoRXZhc19PYmplY3QqIGV3a1RpbGUsIGNvbnN0IEVpbmFfUmVjdGFuZ2xl
KiB1cGRhdGUpCiB7Ci0gICAgUFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrVGlsZSwgcHJpdiwg
RUlOQV9GQUxTRSk7CisgICAgUFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrVGlsZSwgcHJpdiwg
ZmFsc2UpOwogCiAgICAgaWYgKHByaXYtPnJlbmRlci5kaXNhYmxlZCkKLSAgICAgICAgcmV0dXJu
IEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBld2tfdGls
ZV9tYXRyaXhfdXBkYXRlKHByaXYtPm1vZGVsLm1hdHJpeCwgdXBkYXRlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByaXYtPnZpZXcudGlsZS56b29tKTsKQEAgLTE3NzUsNyAr
MTc3NSw3IEBAIHZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfY29udGVudHNfcmVzaXplKEV2
YXNfT2JqZWN0KiBld2tUaWxlLCBFdmFzX0Nvb3JkIHdpCiAKICAgICBwcml2LT5tb2RlbC53aWR0
aCA9IHdpZHRoOwogICAgIHByaXYtPm1vZGVsLmhlaWdodCA9IGhlaWdodDsKLSAgICBwcml2LT5j
aGFuZ2VkLm1vZGVsID0gRUlOQV9UUlVFOworICAgIHByaXYtPmNoYW5nZWQubW9kZWwgPSB0cnVl
OwogCiAgICAgREJHKCJ3LGg9JWQsICVkIiwgd2lkdGgsIGhlaWdodCk7CiAgICAgX2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX2NoYW5nZWQocHJpdik7CkBAIC0xODA2LDcgKzE4MDYsNyBAQCB2b2lk
IGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2ZsdXNoKEV2YXNfT2JqZWN0KiBld2tUaWxlKQogICAg
IHByaXYtPm1vZGVsLmN1cnJlbnQucm93cyA9IDE7CiAgICAgcHJpdi0+bW9kZWwub2xkLmNvbHVt
bnMgPSAwOwogICAgIHByaXYtPm1vZGVsLm9sZC5yb3dzID0gMDsKLSAgICBwcml2LT5jaGFuZ2Vk
LnNpemUgPSBFSU5BX1RSVUU7CisgICAgcHJpdi0+Y2hhbmdlZC5zaXplID0gdHJ1ZTsKIAogI2lm
ZGVmIERFQlVHX01FTV9MRUFLUwogICAgIHByaW50ZigiXG5GTFVTSEVEIEJBQ0tJTkcgU1RPUkUs
IFNUQVRVUyBCRUZPUkUgREVMRVRJTkcgVElMRSBNQVRSSVg6XG4iKTsKQEAgLTE4MjYsNyArMTgy
Niw3IEBAIHZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZmx1c2goRXZhc19PYmplY3QqIGV3
a1RpbGUpCiAKIEVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3Jl
Z2lvbihFdmFzX09iamVjdCogZXdrVGlsZSwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2
YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVpZ2h0LCBmbG9hdCB6b29tKQogewotICAgIFBS
SVZfREFUQV9HRVRfT1JfUkVUVVJOKGV3a1RpbGUsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIFBS
SVZfREFUQV9HRVRfT1JfUkVUVVJOKGV3a1RpbGUsIHByaXYsIGZhbHNlKTsKICAgICBFaW5hX1Rp
bGVfR3JpZF9TbGljZXIgc2xpY2VyOwogICAgIGNvbnN0IEVpbmFfVGlsZV9HcmlkX0luZm8qIGlu
Zm87CiAgICAgRXZhc19Db29yZCB0aWxlV2lkdGgsIHRpbGVIZWlnaHQ7CkBAIC0xODM5LDcgKzE4
MzksNyBAQCBFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZWdp
b24oRXZhc19PYmplY3QqIGV3a1RpbGUsIEV2YXNfQwogICAgIGlmICghZWluYV90aWxlX2dyaWRf
c2xpY2VyX3NldHVwKCZzbGljZXIsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHRpbGVXaWR0aCwgdGls
ZUhlaWdodCkpIHsKICAgICAgICAgRVJSKCJjb3VsZCBub3Qgc2V0dXAgZ3JpZCBzbGljZXIgZm9y
ICVkLCVkKyVkeCVkIHRpbGU9JWR4JWQiLAogICAgICAgICAgICAgeCwgeSwgd2lkdGgsIGhlaWdo
dCwgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0KTsKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICB3aGlsZSAoZWluYV90aWxlX2dyaWRf
c2xpY2VyX25leHQoJnNsaWNlciwgJmluZm8pKSB7CkBAIC0xODUzLDEyICsxODUzLDEyIEBAIEVp
bmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlZ2lvbihFdmFzX09i
amVjdCogZXdrVGlsZSwgRXZhc19DCiAKICAgICB0aWxlVW51c2VkQ2FjaGUgPSBld2tfdGlsZV9t
YXRyaXhfdW51c2VkX2NhY2hlX2dldChwcml2LT5tb2RlbC5tYXRyaXgpOwogICAgIGV3a190aWxl
X3VudXNlZF9jYWNoZV9sb2NrX2FyZWEodGlsZVVudXNlZENhY2hlLCB4LCB5LCB3aWR0aCwgaGVp
Z2h0LCB6b29tKTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQog
CiBFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZWxhdGl2ZV9y
YWRpdXMoRXZhc19PYmplY3QqIGV3a1RpbGUsIHVuc2lnbmVkIGludCBuLCBmbG9hdCB6b29tKQog
ewotICAgIFBSSVZfREFUQV9HRVRfT1JfUkVUVVJOKGV3a1RpbGUsIHByaXYsIEVJTkFfRkFMU0Up
OworICAgIFBSSVZfREFUQV9HRVRfT1JfUkVUVVJOKGV3a1RpbGUsIHByaXYsIGZhbHNlKTsKICAg
ICB1bnNpZ25lZCBsb25nIHN0YXJ0Um93LCBlbmRSb3csIHN0YXJ0Q29sLCBlbmRDb2wsIGksIGos
IHdpZHRoLCBoZWlnaHQ7CiAgICAgRXdrX1RpbGVfVW51c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2Fj
aGU7CiAKQEAgLTE4OTEsNyArMTg5MSw3IEBAIHN0YXJ0X3Byb2Nlc3Npbmc6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydENvbCAqIFRJTEVfU0laRV9BVF9aT09NKHBy
aXYtPnZpZXcudGlsZS53aWR0aCwgem9vbSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGFydFJvdyAqIFRJTEVfU0laRV9BVF9aT09NKHByaXYtPnZpZXcudGlsZS5oZWln
aHQsIHpvb20pLCB3aWR0aCwgaGVpZ2h0LCB6b29tKTsKIAotICAgIHJldHVybiBFSU5BX1RSVUU7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJl
X3JlbmRlcl9jYW5jZWwoRXZhc19PYmplY3QqIGV3a1RpbGUpCkBAIC0xOTA3LDEzICsxOTA3LDEz
IEBAIHZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9jYW5jZWwoRXZhc19P
YmplY3QqIGV3a1RpbGUpCiAKIEVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9kaXNh
YmxlX3JlbmRlcihFdmFzX09iamVjdCogZXdrVGlsZSkKIHsKLSAgICBQUklWX0RBVEFfR0VUX09S
X1JFVFVSTihld2tUaWxlLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBQUklWX0RBVEFfR0VUX09S
X1JFVFVSTihld2tUaWxlLCBwcml2LCBmYWxzZSk7CiAgICAgcmV0dXJuIF9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9kaXNhYmxlX3JlbmRlcihwcml2KTsKIH0KIAogRWluYV9Cb29sIGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX2VuYWJsZV9yZW5kZXIoRXZhc19PYmplY3QqIGV3a1RpbGUpCiB7Ci0g
ICAgUFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrVGlsZSwgcHJpdiwgRUlOQV9GQUxTRSk7Cisg
ICAgUFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrVGlsZSwgcHJpdiwgZmFsc2UpOwogICAgIF9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9jaGFuZ2VkKHByaXYpOwogICAgIHJldHVybiBfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfZW5hYmxlX3JlbmRlcihwcml2KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfbWF0cml4LmNwcCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdGlsZWRfbWF0cml4LmNwcAppbmRleCA4YjgwZDNkYzc2YzVkNTM0ODI1NTc0
MjVjOGVkMWEwZTFlNjlhMTdiLi4yZDU1NTQ0YmYzMjRkZGJmNzkxYmJmOWU4NWM2ODEyMDcyODFl
M2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX21hdHJpeC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tYXRyaXguY3BwCkBAIC0y
OTUsMTYgKzI5NSwxNiBAQCBlbmQ6CiAgKiBAcGFyYW0gcm93IHRoZSByb3cgbnVtYmVyLgogICog
QHBhcmFtIHpvb20gdGhlIGV4YWN0IHpvb20gdG8gcXVlcnkuCiAgKgotICogQHJldHVybiBAYyBF
SU5BX1RSVUUgaWYgZm91bmQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBA
YyB0cnVlIGlmIGZvdW5kLCBAYyBmYWxzZSBvdGhlcndpc2UuCiAgKgogICogQHNlZSBld2tfdGls
ZV9tYXRyaXhfdGlsZV9leGFjdF9nZXQoKQogICovCiBFaW5hX0Jvb2wgZXdrX3RpbGVfbWF0cml4
X3RpbGVfZXhhY3RfZXhpc3RzKEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCwgdW5zaWduZWQg
bG9uZyBjb2x1bW4sIHVuc2lnbmVkIGxvbmcgcm93LCBmbG9hdCB6b29tKQogewogICAgIGlmICgh
ZWluYV9tYXRyaXhzcGFyc2VfZGF0YV9pZHhfZ2V0KHRpbGVNYXRyaXgtPm1hdHJpeCwgcm93LCBj
b2x1bW4pKQotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogLyoqCkBA
IC0zNDksNyArMzQ5LDcgQEAgRXdrX1RpbGUqIGV3a190aWxlX21hdHJpeF90aWxlX25ldyhFd2tf
VGlsZV9NYXRyaXgqIHRpbGVNYXRyaXgsIEV2YXMqIGNhbnZhcywgdW4KIAogICAgIGNhaXJvX3Ry
YW5zbGF0ZSh0aWxlLT5jYWlybywgLXRpbGUtPngsIC10aWxlLT55KTsKIAotICAgIHRpbGUtPnN0
YXRzLmZ1bGxfdXBkYXRlID0gRUlOQV9UUlVFOworICAgIHRpbGUtPnN0YXRzLmZ1bGxfdXBkYXRl
ID0gdHJ1ZTsKICAgICB0aWxlTWF0cml4LT51cGRhdGVzID0gZWluYV9saXN0X2FwcGVuZCh0aWxl
TWF0cml4LT51cGRhdGVzLCB0aWxlKTsKIAogI2lmZGVmIERFQlVHX01FTV9MRUFLUwpAQCAtMzc1
LDE1ICszNzUsMTUgQEAgRXdrX1RpbGUqIGV3a190aWxlX21hdHJpeF90aWxlX25ldyhFd2tfVGls
ZV9NYXRyaXgqIHRpbGVNYXRyaXgsIEV2YXMqIGNhbnZhcywgdW4KICAqIEBwYXJhbSB0IHRoZSB0
aWxlIGluc3RhbmNlIHRvIHJldHVybiwgbXVzdCBAYiBub3QgYmUgQGMgMC4KICAqIEBwYXJhbSBs
YXN0X3VzZWQgdGltZSBpbiB3aGljaCB0aWxlLndpZHRoYXMgbGFzdCB1c2VkLgogICoKLSAqIEBy
ZXR1cm4gI0VJTkFfVFJVRSBvbiBzdWNjZXNzIG9yICNFSU5BX0ZBTFNFIG9uIGZhaWx1cmUuCisg
KiBAcmV0dXJuICN0cnVlIG9uIHN1Y2Nlc3Mgb3IgI2ZhbHNlIG9uIGZhaWx1cmUuCiAgKi8KIEVp
bmFfQm9vbCBld2tfdGlsZV9tYXRyaXhfdGlsZV9wdXQoRXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0
cml4LCBFd2tfVGlsZSogdGlsZSwgZG91YmxlIGxhc3RVc2VkKQogewotICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTCh0aWxlTWF0cml4LCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodGlsZSwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKHRpbGVNYXRyaXgsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwodGlsZSwgZmFsc2UpOwogCiAgICAgaWYgKHRpbGUtPnZpc2li
bGUpCi0gICAgICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgdGlsZS0+c3RhdHMubGFzdF91c2VkID0gbGFzdFVzZWQ7CiAgICAgcmV0dXJuIGV3a190aWxl
X3VudXNlZF9jYWNoZV90aWxlX3B1dCh0aWxlTWF0cml4LT50aWxpZVVudXNlZENhY2hlLCB0aWxl
LCBfZXdrX3RpbGVfbWF0cml4X3RpbGVfZnJlZSwgdGlsZU1hdHJpeCk7CkBAIC0zOTIsMTQgKzM5
MiwxNCBAQCBFaW5hX0Jvb2wgZXdrX3RpbGVfbWF0cml4X3RpbGVfcHV0KEV3a19UaWxlX01hdHJp
eCogdGlsZU1hdHJpeCwgRXdrX1RpbGUqIHRpbGUsCiBFaW5hX0Jvb2wgZXdrX3RpbGVfbWF0cml4
X3RpbGVfdXBkYXRlKEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCwgdW5zaWduZWQgbG9uZyBj
b2wsIHVuc2lnbmVkIGxvbmcgcm93LCBjb25zdCBFaW5hX1JlY3RhbmdsZSogdXBkYXRlKQogewog
ICAgIEVpbmFfUmVjdGFuZ2xlIG5ld1VwZGF0ZTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwodGlsZU1hdHJpeCwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHVwZGF0ZSwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHRpbGVNYXRyaXgsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwodXBkYXRlLCBmYWxzZSk7CiAKICAgICBtZW1jcHkoJm5ld1VwZGF0ZSwgdXBk
YXRlLCBzaXplb2YobmV3VXBkYXRlKSk7Ci0gICAgLy8gY2hlY2sgdXBkYXRlIGlzIHZhbGlkLCBv
dGhlcndpc2UgcmV0dXJuIEVJTkFfRkFMU0UKKyAgICAvLyBjaGVjayB1cGRhdGUgaXMgdmFsaWQs
IG90aGVyd2lzZSByZXR1cm4gZmFsc2UKICAgICBpZiAodXBkYXRlLT54IDwgMCB8fCB1cGRhdGUt
PnkgPCAwIHx8IHVwZGF0ZS0+dyA8PSAwIHx8IHVwZGF0ZS0+aCA8PSAwKSB7CiAgICAgICAgIEVS
UigiaW52YWxpZCB1cGRhdGUgcmVnaW9uLiIpOwotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICh1cGRhdGUtPnggKyB1cGRh
dGUtPncgLSAxID49IHRpbGVNYXRyaXgtPnRpbGUud2lkdGgpCkBAIC00MDksMzcgKzQwOSwzNyBA
QCBFaW5hX0Jvb2wgZXdrX3RpbGVfbWF0cml4X3RpbGVfdXBkYXRlKEV3a19UaWxlX01hdHJpeCog
dGlsZU1hdHJpeCwgdW5zaWduZWQgbG9uZwogCiAgICAgRXdrX1RpbGUqIHRpbGUgPSBzdGF0aWNf
Y2FzdDxFd2tfVGlsZSo+KGVpbmFfbWF0cml4c3BhcnNlX2RhdGFfaWR4X2dldCh0aWxlTWF0cml4
LT5tYXRyaXgsIHJvdywgY29sKSk7CiAgICAgaWYgKCF0aWxlKQotICAgICAgICByZXR1cm4gRUlO
QV9UUlVFOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmICghdGlsZS0+dXBkYXRlcyAm
JiAhdGlsZS0+c3RhdHMuZnVsbF91cGRhdGUpCiAgICAgICAgIHRpbGVNYXRyaXgtPnVwZGF0ZXMg
PSBlaW5hX2xpc3RfYXBwZW5kKHRpbGVNYXRyaXgtPnVwZGF0ZXMsIHRpbGUpOwogICAgIGV3a190
aWxlX3VwZGF0ZV9hcmVhKHRpbGUsICZuZXdVcGRhdGUpOwogCi0gICAgcmV0dXJuIEVJTkFfVFJV
RTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3a190aWxlX21hdHJpeF90aWxl
X3VwZGF0ZV9mdWxsKEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCwgdW5zaWduZWQgbG9uZyBj
b2x1bW4sIHVuc2lnbmVkIGxvbmcgcm93KQogewogICAgIEVpbmFfTWF0cml4c3BhcnNlX0NlbGwq
IGNlbGw7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHRpbGVNYXRyaXgsIEVJ
TkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh0aWxlTWF0cml4
LCBmYWxzZSk7CiAKICAgICBpZiAoIWVpbmFfbWF0cml4c3BhcnNlX2NlbGxfaWR4X2dldCh0aWxl
TWF0cml4LT5tYXRyaXgsIHJvdywgY29sdW1uLCAmY2VsbCkpCi0gICAgICAgIHJldHVybiBFSU5B
X0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWNlbGwpCi0gICAgICAg
IHJldHVybiBFSU5BX1RSVUU7CisgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgRXdrX1RpbGUq
IHRpbGUgPSBzdGF0aWNfY2FzdDxFd2tfVGlsZSo+KGVpbmFfbWF0cml4c3BhcnNlX2NlbGxfZGF0
YV9nZXQoY2VsbCkpOwogICAgIGlmICghdGlsZSkgewogICAgICAgICBDUklUSUNBTCgibWF0cml4
IGNlbGwgd2l0aCBubyB0aWxlISIpOwotICAgICAgICByZXR1cm4gRUlOQV9UUlVFOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAoIXRpbGUtPnVwZGF0ZXMgJiYgIXRpbGUt
PnN0YXRzLmZ1bGxfdXBkYXRlKQogICAgICAgICB0aWxlTWF0cml4LT51cGRhdGVzID0gZWluYV9s
aXN0X2FwcGVuZCh0aWxlTWF0cml4LT51cGRhdGVzLCB0aWxlKTsKICAgICBld2tfdGlsZV91cGRh
dGVfZnVsbCh0aWxlKTsKIAotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHZvaWQgZXdrX3RpbGVfbWF0cml4X3RpbGVfdXBkYXRlc19jbGVhcihFd2tfVGlsZV9N
YXRyaXgqIHRpbGVNYXRyaXgsIEV3a19UaWxlKiB0aWxlKQpAQCAtNDU5LDcgKzQ1OSw3IEBAIHN0
YXRpYyBFaW5hX0Jvb2wgX2V3a190aWxlX21hdHJpeF9zbGljZXJfc2V0dXAoRXdrX1RpbGVfTWF0
cml4KiB0aWxlTWF0cml4LCBjb25zCiAgICAgaWYgKGFyZWEtPncgPD0gMCB8fCBhcmVhLT5oIDw9
IDApIHsKICAgICAgICAgV1JOKCJpbnZhbGlkIGFyZWEgcmVnaW9uOiAlZCwlZCslZHglZC4iLAog
ICAgICAgICAgICAgYXJlYS0+eCwgYXJlYS0+eSwgYXJlYS0+dywgYXJlYS0+aCk7Ci0gICAgICAg
IHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAg
eCA9IGFyZWEtPng7CkBAIC00OTQsMTkgKzQ5NCwxOSBAQCBFaW5hX0Jvb2wgZXdrX3RpbGVfbWF0
cml4X3VwZGF0ZShFd2tfVGlsZV9NYXRyaXgqIHRpbGVNYXRyaXgsIGNvbnN0IEVpbmFfUmVjdGFu
ZwogewogICAgIGNvbnN0IEVpbmFfVGlsZV9HcmlkX0luZm8qIGluZm87CiAgICAgRWluYV9UaWxl
X0dyaWRfU2xpY2VyIHNsaWNlcjsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
dGlsZU1hdHJpeCwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHVwZGF0ZSwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHRpbGVNYXRyaXgsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwodXBkYXRlLCBmYWxzZSk7CiAKICAgICBpZiAodXBkYXRlLT53IDwgMSB8fCB1cGRhdGUtPmgg
PCAxKSB7CiAgICAgICAgIERCRygiV2h5IHdlIGdldCB1cGRhdGVzIHdpdGggZW1wdHkgYXJlYXM/
ICVkLCVkKyVkeCVkIGF0IHpvb20gJWYiLAogICAgICAgICAgICAgdXBkYXRlLT54LCB1cGRhdGUt
PnksIHVwZGF0ZS0+dywgdXBkYXRlLT5oLCB6b29tKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfVFJV
RTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgaWYgKCFfZXdrX3RpbGVfbWF0
cml4X3NsaWNlcl9zZXR1cCh0aWxlTWF0cml4LCB1cGRhdGUsIHpvb20sICZzbGljZXIpKSB7CiAg
ICAgICAgIEVSUigiQ291bGQgbm90IHNldHVwIHNsaWNlciBmb3IgdXBkYXRlICVkLCVkKyVkeCVk
IGF0IHpvb20gJWYiLAogICAgICAgICAgICAgdXBkYXRlLT54LCB1cGRhdGUtPnksIHVwZGF0ZS0+
dywgdXBkYXRlLT5oLCB6b29tKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICB3aGlsZSAoZWluYV90aWxlX2dyaWRfc2xpY2Vy
X25leHQoJnNsaWNlciwgJmluZm8pKSB7CkBAIC01MjcsNyArNTI3LDcgQEAgRWluYV9Cb29sIGV3
a190aWxlX21hdHJpeF91cGRhdGUoRXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0cml4LCBjb25zdCBF
aW5hX1JlY3RhbmcKICAgICB9CiAKIAotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHZvaWQgZXdrX3RpbGVfbWF0cml4X3VwZGF0ZXNfcHJvY2VzcyhFd2tfVGls
ZV9NYXRyaXgqIHRpbGVNYXRyaXgpCkBAIC01NjIsNyArNTYyLDcgQEAgdm9pZCBld2tfdGlsZV9t
YXRyaXhfZGJnKGNvbnN0IEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCkKIHsKICAgICBFaW5h
X0l0ZXJhdG9yKiBpdGVyYXRvciA9IGVpbmFfbWF0cml4c3BhcnNlX2l0ZXJhdG9yX2NvbXBsZXRl
X25ldyh0aWxlTWF0cml4LT5tYXRyaXgpOwogICAgIEVpbmFfTWF0cml4c3BhcnNlX0NlbGwqIGNl
bGw7Ci0gICAgRWluYV9Cb29sIGxhc3RfZW1wdHkgPSBFSU5BX0ZBTFNFOworICAgIEVpbmFfQm9v
bCBsYXN0X2VtcHR5ID0gZmFsc2U7CiAKICNpZmRlZiBERUJVR19NRU1fTEVBS1MKICAgICBwcmlu
dGYoIkV3a19UaWxlIE1hdHJpeDogdGlsZXNbKyUiIFBSSXU2NCAiLC0lIiBQUkl1NjQgIjolIiBQ
Ukl1NjQgIl0gIgpAQCAtNTgyLDEzICs1ODIsMTMgQEAgdm9pZCBld2tfdGlsZV9tYXRyaXhfZGJn
KGNvbnN0IEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCkKICAgICAgICAgRXdrX1RpbGUqIHRp
bGUgPSBzdGF0aWNfY2FzdDxFd2tfVGlsZSo+KGVpbmFfbWF0cml4c3BhcnNlX2NlbGxfZGF0YV9n
ZXQoY2VsbCkpOwogICAgICAgICBpZiAoIXRpbGUpIHsKICAgICAgICAgICAgIGlmICghbGFzdF9l
bXB0eSkgewotICAgICAgICAgICAgICAgIGxhc3RfZW1wdHkgPSBFSU5BX1RSVUU7CisgICAgICAg
ICAgICAgICAgbGFzdF9lbXB0eSA9IHRydWU7CiAgICAgICAgICAgICAgICAgcHJpbnRmKCJFbXB0
eToiKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHByaW50ZigiIFslbHUsJWx1XSIsIGNv
bHVtbiwgcm93KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChsYXN0X2VtcHR5
KSB7Ci0gICAgICAgICAgICAgICAgbGFzdF9lbXB0eSA9IEVJTkFfRkFMU0U7CisgICAgICAgICAg
ICAgICAgbGFzdF9lbXB0eSA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHByaW50ZigiXG4iKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHByaW50ZigiJTNsdSwlM2x1ICUxMHA6IiwgY29s
dW1uLCByb3csIHRpbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190
aWxlZF9tb2RlbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX21vZGVsLmNw
cAppbmRleCBkOTE3ZjU1ZDVmNThmNTdkYTljNGY2OTYxN2YxMzkyYmUyNDI5MjlmLi4zNTFmMjkz
M2FmNDNkMTdkNzllMWM4MjIyOGNkY2VkZWU4YWM4NjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3RpbGVkX21vZGVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3RpbGVkX21vZGVsLmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIEV3a19UaWxlKiBld2tf
dGlsZV9uZXcoRXZhcyogZXZhcywgRXZhc19Db29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQs
IGZsb2F0IHpvCiAKICAgICBldmFzX29iamVjdF9pbWFnZV9zaXplX3NldCh0aWxlLT5pbWFnZSwg
dGlsZS0+d2lkdGgsIHRpbGUtPmhlaWdodCk7CiAgICAgZXZhc19vYmplY3RfaW1hZ2VfY29sb3Jz
cGFjZV9zZXQodGlsZS0+aW1hZ2UsIHRpbGUtPmNzcGFjZSk7Ci0gICAgdGlsZS0+cGl4ZWxzID0g
c3RhdGljX2Nhc3Q8dWludDhfdCo+KGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfZ2V0KHRpbGUtPmlt
YWdlLCBFSU5BX1RSVUUpKTsKKyAgICB0aWxlLT5waXhlbHMgPSBzdGF0aWNfY2FzdDx1aW50OF90
Kj4oZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9nZXQodGlsZS0+aW1hZ2UsIHRydWUpKTsKICAgICB0
aWxlLT5zdXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEodGlsZS0+
cGl4ZWxzLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHN0cmlkZSk7CiAgICAgc3RhdHVzID0gY2Fp
cm9fc3VyZmFjZV9zdGF0dXModGlsZS0+c3VyZmFjZSk7CiAgICAgaWYgKHN0YXR1cyAhPSBDQUlS
T19TVEFUVVNfU1VDQ0VTUykgewpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgZXdrX3RpbGVfaGlk
ZShFd2tfVGlsZSogdGlsZSkKIH0KIAogLyoqCi0gKiBSZXR1cm5zIEVJTkFfVFJVRSBpZiB0aGUg
dGlsZSBpcyB2aXNpYmxlLCBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIFJldHVybnMgdHJ1ZSBp
ZiB0aGUgdGlsZSBpcyB2aXNpYmxlLCBmYWxzZSBvdGhlcndpc2UuCiAgKi8KIEVpbmFfQm9vbCBl
d2tfdGlsZV92aXNpYmxlX2dldChFd2tfVGlsZSogdGlsZSkKIHsKQEAgLTM3Miw3ICszNzIsNyBA
QCB2b2lkIGV3a190aWxlX3VwZGF0ZV9mdWxsKEV3a19UaWxlKiB0aWxlKQogICAgIHRpbGUtPnN0
YXRzLm1pc3NlcysrOwogCiAgICAgaWYgKCF0aWxlLT5zdGF0cy5mdWxsX3VwZGF0ZSkgewotICAg
ICAgICB0aWxlLT5zdGF0cy5mdWxsX3VwZGF0ZSA9IEVJTkFfVFJVRTsKKyAgICAgICAgdGlsZS0+
c3RhdHMuZnVsbF91cGRhdGUgPSB0cnVlOwogICAgICAgICBpZiAodGlsZS0+dXBkYXRlcykgewog
ICAgICAgICAgICAgZWluYV90aWxlcl9mcmVlKHRpbGUtPnVwZGF0ZXMpOwogICAgICAgICAgICAg
dGlsZS0+dXBkYXRlcyA9IDA7CkBAIC0zOTIsNyArMzkyLDcgQEAgdm9pZCBld2tfdGlsZV91cGRh
dGVfYXJlYShFd2tfVGlsZSogdGlsZSwgY29uc3QgRWluYV9SZWN0YW5nbGUqIHJlY3QpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmICghcmVjdC0+eCAmJiAhcmVjdC0+eSAmJiByZWN0LT53ID09
IHRpbGUtPndpZHRoICYmIHJlY3QtPmggPT0gdGlsZS0+aGVpZ2h0KSB7Ci0gICAgICAgIHRpbGUt
PnN0YXRzLmZ1bGxfdXBkYXRlID0gRUlOQV9UUlVFOworICAgICAgICB0aWxlLT5zdGF0cy5mdWxs
X3VwZGF0ZSA9IHRydWU7CiAgICAgICAgIGlmICh0aWxlLT51cGRhdGVzKSB7CiAgICAgICAgICAg
ICBlaW5hX3RpbGVyX2ZyZWUodGlsZS0+dXBkYXRlcyk7CiAgICAgICAgICAgICB0aWxlLT51cGRh
dGVzID0gMDsKQEAgLTUzNiw3ICs1MzYsNyBAQCB2b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV9s
b2NrX2FyZWEoRXdrX1RpbGVfVW51c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2FjaGUsIEV2YQogewog
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHRpbGVVbnVzZWRDYWNoZSk7CiAKLSAgICB0
aWxlVW51c2VkQ2FjaGUtPmxvY2tlZC5sb2NrZWQgPSBFSU5BX1RSVUU7CisgICAgdGlsZVVudXNl
ZENhY2hlLT5sb2NrZWQubG9ja2VkID0gdHJ1ZTsKICAgICB0aWxlVW51c2VkQ2FjaGUtPmxvY2tl
ZC54ID0geDsKICAgICB0aWxlVW51c2VkQ2FjaGUtPmxvY2tlZC55ID0geTsKICAgICB0aWxlVW51
c2VkQ2FjaGUtPmxvY2tlZC53aWR0aCA9IHdpZHRoOwpAQCAtNTQ4LDcgKzU0OCw3IEBAIHZvaWQg
ZXdrX3RpbGVfdW51c2VkX2NhY2hlX3VubG9ja19hcmVhKEV3a19UaWxlX1VudXNlZF9DYWNoZSog
dGlsZVVudXNlZENhY2hlKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHRpbGVV
bnVzZWRDYWNoZSk7CiAKLSAgICB0aWxlVW51c2VkQ2FjaGUtPmxvY2tlZC5sb2NrZWQgPSBFSU5B
X0ZBTFNFOworICAgIHRpbGVVbnVzZWRDYWNoZS0+bG9ja2VkLmxvY2tlZCA9IGZhbHNlOwogfQog
CiAvKioKQEAgLTc0OCw3ICs3NDgsNyBAQCB2b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV90aGF3
KEV3a19UaWxlX1VudXNlZF9DYWNoZSogdGlsZVVudXNlZENhY2hlKQogICogQHBhcmFtIHRpbGVV
bnVzZWRDYWNoZSBjYWNoZSBvZiB1bnVzZWQgdGlsZXMKICAqIEBwYXJhbSB0aWxlIHRoZSB0aWxl
IHRvIGJlIHJlbW92ZWQgZnJvbSBFd2tfVGlsZV9VbnVzZWRfQ2FjaGUuCiAgKgotICogQHJldHVy
biAjRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsICNFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIEByZXR1
cm4gI3RydWUgb24gc3VjY2VzcywgI2ZhbHNlIG90aGVyd2lzZS4KICAqLwogRWluYV9Cb29sIGV3
a190aWxlX3VudXNlZF9jYWNoZV90aWxlX2dldChFd2tfVGlsZV9VbnVzZWRfQ2FjaGUqIHRpbGVV
bnVzZWRDYWNoZSwgRXdrX1RpbGUqIHRpbGUpCiB7CkBAIC03NjUsNyArNzY1LDcgQEAgRWluYV9C
b29sIGV3a190aWxlX3VudXNlZF9jYWNoZV90aWxlX2dldChFd2tfVGlsZV9VbnVzZWRfQ2FjaGUq
IHRpbGVVbnVzZWRDYWNoZSwKICAgICB9CiAgICAgaWYgKCFmb3VuZEVudHJ5KSB7CiAgICAgICAg
IEVSUigidGlsZSAlcCBub3QgZm91bmQgaW4gY2FjaGUgJXAiLCB0aWxlLCB0aWxlVW51c2VkQ2Fj
aGUpOwotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAogICAgIHRpbGVVbnVzZWRDYWNoZS0+ZW50cmllcy5jb3VudC0tOwpAQCAtNzczLDcg
Kzc3Myw3IEBAIEVpbmFfQm9vbCBld2tfdGlsZV91bnVzZWRfY2FjaGVfdGlsZV9nZXQoRXdrX1Rp
bGVfVW51c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2FjaGUsCiAgICAgdGlsZVVudXNlZENhY2hlLT5l
bnRyaWVzLmxpc3QgPSBlaW5hX2xpc3RfcmVtb3ZlX2xpc3QodGlsZVVudXNlZENhY2hlLT5lbnRy
aWVzLmxpc3QsIGZvdW5kRW50cnkpOwogICAgIGZyZWUoaXRlbSk7CiAKLSAgICByZXR1cm4gRUlO
QV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiAvKioKQEAgLTc5Myw4ICs3OTMsOCBAQCBF
aW5hX0Jvb2wgZXdrX3RpbGVfdW51c2VkX2NhY2hlX3RpbGVfZ2V0KEV3a19UaWxlX1VudXNlZF9D
YWNoZSogdGlsZVVudXNlZENhY2hlLAogICogQHBhcmFtIHRpbGVfZnJlZV9jYiBmdW5jdGlvbiB1
c2VkIHRvIGZyZWUgdGlsZXMuCiAgKiBAcGFyYW0gZGF0YSBjb250ZXh0IHRvIGdpdmUgYmFjayB0
byBAYSB0aWxlX2ZyZWVfY2IgYXMgZmlyc3QgYXJndW1lbnQuCiAgKgotICogQHJldHVybiAjRUlO
QV9UUlVFIG9uIHN1Y2Nlc3MsICNFSU5BX0ZBTFNFIG90aGVyd2lzZS4gSWYgQGMgdGlsZS0+dmlz
aWJsZQotICogICAgICAgICBpcyBub3QgI0VJTkFfRkFMU0UsIHRoZW4gaXQgd2lsbCByZXR1cm4g
I0VJTkFfRkFMU0UuCisgKiBAcmV0dXJuICN0cnVlIG9uIHN1Y2Nlc3MsICNmYWxzZSBvdGhlcndp
c2UuIElmIEBjIHRpbGUtPnZpc2libGUKKyAqICAgICAgICAgaXMgbm90ICNmYWxzZSwgdGhlbiBp
dCB3aWxsIHJldHVybiAjZmFsc2UuCiAgKgogICogQHNlZSBld2tfdGlsZV91bnVzZWRfY2FjaGVf
YXV0b19mbHVzaCgpCiAgKi8KQEAgLTgwNCwxNyArODA0LDE3IEBAIEVpbmFfQm9vbCBld2tfdGls
ZV91bnVzZWRfY2FjaGVfdGlsZV9wdXQoRXdrX1RpbGVfVW51c2VkX0NhY2hlKiB0aWxlVW51c2Vk
Q2FjaGUsCiAKICAgICBpZiAodGlsZS0+dmlzaWJsZSkgewogICAgICAgICBFUlIoInRpbGU9JXAg
aXMgbm90IHVudXNlZCAodmlzaWJsZT0lZCkiLCB0aWxlLCB0aWxlLT52aXNpYmxlKTsKLSAgICAg
ICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAg
ICB1bnVzZWRDYWNoZUVudHJ5ID0gc3RhdGljX2Nhc3Q8RXdrX1RpbGVfVW51c2VkX0NhY2hlX0Vu
dHJ5Kj4obWFsbG9jKHNpemVvZihFd2tfVGlsZV9VbnVzZWRfQ2FjaGVfRW50cnkpKSk7CiAgICAg
aWYgKCF1bnVzZWRDYWNoZUVudHJ5KQotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdGlsZVVudXNlZENhY2hlLT5lbnRyaWVzLmxpc3QgPSBl
aW5hX2xpc3RfYXBwZW5kKHRpbGVVbnVzZWRDYWNoZS0+ZW50cmllcy5saXN0LCB1bnVzZWRDYWNo
ZUVudHJ5KTsKICAgICBpZiAoZWluYV9lcnJvcl9nZXQoKSkgewogICAgICAgICBFUlIoIkxpc3Qg
YWxsb2NhdGlvbiBmYWlsZWQiKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICB1bnVzZWRDYWNoZUVudHJ5LT50aWxlID0gdGls
ZTsKQEAgLTgyNSw3ICs4MjUsNyBAQCBFaW5hX0Jvb2wgZXdrX3RpbGVfdW51c2VkX2NhY2hlX3Rp
bGVfcHV0KEV3a19UaWxlX1VudXNlZF9DYWNoZSogdGlsZVVudXNlZENhY2hlLAogICAgIHRpbGVV
bnVzZWRDYWNoZS0+ZW50cmllcy5jb3VudCsrOwogICAgIHRpbGVVbnVzZWRDYWNoZS0+bWVtb3J5
LnVzZWQgKz0gc2l6ZW9mKEV3a19UaWxlKSArIHRpbGUtPmJ5dGVzOwogCi0gICAgcmV0dXJuIEVJ
TkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBld2tfdGlsZV91bnVzZWRfY2Fj
aGVfZGJnKGNvbnN0IEV3a19UaWxlX1VudXNlZF9DYWNoZSogdGlsZVVudXNlZENhY2hlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a191dGlsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdXRpbC5jcHAKaW5kZXggNDE1YjM2ZTVlNzVkZTkxYWYyN2I0NzQ5ZmVh
MDJjOWQ1ZDU3ODlmNS4uYjc0MDI1YTc3MTk2ODY3YjBhMjdkNmFjNTE0YTFjZTIzZmZjZDZlOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a191dGlsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3V0aWwuY3BwCkBAIC05OSw3ICs5OSw3IEBAIEV2YXNfT2Jq
ZWN0KiBld2tfdXRpbF9pbWFnZV9mcm9tX2NhaXJvX3N1cmZhY2VfYWRkKEV2YXMqIGNhbnZhcywg
Y2Fpcm9fc3VyZmFjZV90CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGRzdCA9IGV2
YXNfb2JqZWN0X2ltYWdlX2RhdGFfZ2V0KGltYWdlLCBFSU5BX1RSVUUpOworICAgIGRzdCA9IGV2
YXNfb2JqZWN0X2ltYWdlX2RhdGFfZ2V0KGltYWdlLCB0cnVlKTsKICAgICBtZW1jcHkoZHN0LCBz
cmMsIGggKiBzdHJpZGUpOwogICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfc2V0KGltYWdlLCBk
c3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCBhN2ZkN2M1MTM4YTgxNjk0
NTFjNzEyOTQ3YjQ0NmU5ZmFkYWYwNzlmLi42MTFhYjdhM2MwZTRlOWEzNmVkNDQ4MDQxMGVjZGFl
MDEwNjc2MGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTI3MSw3ICsyNzEs
NyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZChFd2tfVmlld19TbWFydF9E
YXRhKiBzbWFydERhdGEpCiB7CiAgICAgaWYgKHNtYXJ0RGF0YS0+Y2hhbmdlZC5hbnkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBzbWFydERhdGEtPmNoYW5nZWQuYW55ID0gRUlOQV9UUlVFOworICAg
IHNtYXJ0RGF0YS0+Y2hhbmdlZC5hbnkgPSB0cnVlOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2No
YW5nZWQoc21hcnREYXRhLT5zZWxmKTsKIH0KIApAQCAtMjgwLDExICsyODAsMTEgQEAgc3RhdGlj
IEVpbmFfQm9vbCBfZXdrX3ZpZXdfcmVwYWludHNfcmVzaXplKEV3a19WaWV3X1ByaXZhdGVfRGF0
YSogcHJpdiwgc2l6ZV90IHMKICAgICB2b2lkKiB0bXAgPSByZWFsbG9jKHByaXYtPnJlcGFpbnRz
LmFycmF5LCBzaXplICogc2l6ZW9mKEVpbmFfUmVjdGFuZ2xlKSk7CiAgICAgaWYgKCF0bXApIHsK
ICAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCByZWFsbG9jIHJlcGFpbnRzIGFycmF5IHRvICV6
dSBlbGVtZW50cy4iLCBzaXplKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcHJpdi0+cmVwYWludHMuYWxsb2NhdGVkID0gc2l6
ZTsKICAgICBwcml2LT5yZXBhaW50cy5hcnJheSA9IHN0YXRpY19jYXN0PEVpbmFfUmVjdGFuZ2xl
Kj4odG1wKTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBz
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfcmVwYWludF9hZGQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBw
cml2LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3aWR0aCwgRXZhc19D
b29yZCBoZWlnaHQpCkBAIC0zMjYsMTEgKzMyNiwxMSBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tf
dmlld19zY3JvbGxzX3Jlc2l6ZShFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIHNpemVfdCBz
aQogICAgIHZvaWQqIHRtcCA9IHJlYWxsb2MocHJpdi0+c2Nyb2xscy5hcnJheSwgc2l6ZSAqIHNp
emVvZihFd2tfU2Nyb2xsX1JlcXVlc3QpKTsKICAgICBpZiAoIXRtcCkgewogICAgICAgICBDUklU
SUNBTCgiY291bGQgbm90IHJlYWxsb2Mgc2Nyb2xscyBhcnJheSB0byAlenUgZWxlbWVudHMuIiwg
c2l6ZSk7Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogICAgIHByaXYtPnNjcm9sbHMuYWxsb2NhdGVkID0gc2l6ZTsKICAgICBwcml2LT5z
Y3JvbGxzLmFycmF5ID0gc3RhdGljX2Nhc3Q8RXdrX1Njcm9sbF9SZXF1ZXN0Kj4odG1wKTsKLSAg
ICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgdm9pZCBf
ZXdrX3ZpZXdfc2Nyb2xsX2FkZChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIEV2YXNfQ29v
cmQgZGVsdGFYLCBFdmFzX0Nvb3JkIGRlbHRhWSwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHks
IEV2YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVpZ2h0LCBFaW5hX0Jvb2wgbWFpblNjcm9s
bCkKQEAgLTQwOSwxMSArNDA5LDExIEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0
X2ZvY3VzX2luKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKICAgICBFV0tfVklFV19Q
UklWX0dFVChzbWFydERhdGEsIHByaXYpOwogICAgIFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlciog
ZmMgPSBwcml2LT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKTsKICAgICBEQkcoImV3a1ZpZXc9JXAs
IGZjPSVwIiwgc21hcnREYXRhLT5zZWxmLCBmYyk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKGZjLCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoZmMsIGZhbHNlKTsKIAogICAgIGZjLT5zZXRBY3RpdmUodHJ1ZSk7CiAgICAgZmMtPnNl
dEZvY3VzZWQodHJ1ZSk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfZm9jdXNfb3V0KEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKQEAgLTQyMSwxMSArNDIxLDExIEBAIHN0YXRpYyBFaW5h
X0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX291dChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFy
dERhdGEpCiAgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBwcml2KTsKICAgICBXZWJD
b3JlOjpGb2N1c0NvbnRyb2xsZXIqIGZvY3VzQ29udHJvbGxlciA9IHByaXYtPnBhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpOwogICAgIERCRygiZXdrVmlldz0lcCwgZmM9JXAiLCBzbWFydERhdGEtPnNl
bGYsIGZvY3VzQ29udHJvbGxlcik7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KGZvY3VzQ29udHJvbGxlciwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKGZvY3VzQ29udHJvbGxlciwgZmFsc2UpOwogCiAgICAgZm9jdXNDb250cm9sbGVy
LT5zZXRBY3RpdmUoZmFsc2UpOwogICAgIGZvY3VzQ29udHJvbGxlci0+c2V0Rm9jdXNlZChmYWxz
ZSk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGlj
IEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwoRXdrX1ZpZXdfU21hcnRfRGF0
YSogc21hcnREYXRhLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiB3aGVlbEV2ZW50KQpA
QCAtNDgyLDIwICs0ODIsMjAgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfcnVu
X2phdmFzY3JpcHRfY29uZmlybShFd2tfVmlld19TbWFydF9EYXRhKiBzbWEKIHsKICAgICBJTkYo
ImphdmFzY3JpcHQgY29uZmlybTogJXMiLCBtZXNzYWdlKTsKICAgICBJTkYoImphdmFzY3JpcHQg
Y29uZmlybSAoSEFSRCBDT0RFRCk/IFlFUyIpOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3Nob3Vs
ZF9pbnRlcnJ1cHRfamF2YXNjcmlwdChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiB7
CiAgICAgSU5GKCJzaG91bGQgaW50ZXJydXB0IGphdmFzY3JpcHQ/XG4iCiAgICAgICAgICJcdChI
QVJEIENPREVEKSBOTyIpOwotICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIHJldHVybiBmYWxz
ZTsKIH0KIAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfcnVuX2phdmFzY3JpcHRf
cHJvbXB0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgRXZhc19PYmplY3QqIGZyYW1l
LCBjb25zdCBjaGFyKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBkZWZhdWx0VmFsdWUsIGNoYXIqKiB2
YWx1ZSkKIHsKICAgICAqdmFsdWUgPSBzdHJkdXAoInRlc3QiKTsKLSAgICBFaW5hX0Jvb2wgcmVz
dWx0ID0gRUlOQV9UUlVFOworICAgIEVpbmFfQm9vbCByZXN1bHQgPSB0cnVlOwogICAgIElORigi
amF2YXNjcmlwdCBwcm9tcHQ6XG4iCiAgICAgICAgICJcdCAgICAgIG1lc3NhZ2U6ICVzXG4iCiAg
ICAgICAgICJcdGRlZmF1bHQgdmFsdWU6ICVzXG4iCkBAIC02MjksNyArNjI5LDcgQEAgc3RhdGlj
IEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNtYXJ0RGF0YSkKICAgICBwcml2LT52aWV3cG9ydEFyZ3VtZW50cy5taW5pbXVtU2Nh
bGUgPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwogICAgIHByaXYtPnZp
ZXdwb3J0QXJndW1lbnRzLm1heGltdW1TY2FsZSA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRz
OjpWYWx1ZUF1dG87CiAgICAgcHJpdi0+dmlld3BvcnRBcmd1bWVudHMudGFyZ2V0RGVuc2l0eURw
aSA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87Ci0gICAgcHJpdi0+dmll
d3BvcnRBcmd1bWVudHMudXNlclNjYWxhYmxlID0gRUlOQV9UUlVFOworICAgIHByaXYtPnZpZXdw
b3J0QXJndW1lbnRzLnVzZXJTY2FsYWJsZSA9IHRydWU7CiAKICAgICBwcml2LT5wYWdlU2V0dGlu
Z3MtPnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseSh0cnVlKTsKICAgICBwcml2LT5wYWdlU2V0
dGluZ3MtPnNldERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lKCJpc28tODg1OS0xIik7CkBAIC02NzYs
NyArNjc2LDcgQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZf
bmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKIAogICAgIHByaXYtPnNldHRpbmdz
LmF1dG9Mb2FkSW1hZ2VzID0gcHJpdi0+cGFnZVNldHRpbmdzLT5sb2Fkc0ltYWdlc0F1dG9tYXRp
Y2FsbHkoKTsKICAgICBwcml2LT5zZXR0aW5ncy5hdXRvU2hyaW5rSW1hZ2VzID0gcHJpdi0+cGFn
ZVNldHRpbmdzLT5zaHJpbmtzU3RhbmRhbG9uZUltYWdlc1RvRml0KCk7Ci0gICAgcHJpdi0+c2V0
dGluZ3MuZW5hYmxlQXV0b1Jlc2l6ZVdpbmRvdyA9IEVJTkFfVFJVRTsKKyAgICBwcml2LT5zZXR0
aW5ncy5lbmFibGVBdXRvUmVzaXplV2luZG93ID0gdHJ1ZTsKICAgICBwcml2LT5zZXR0aW5ncy5l
bmFibGVEZXZlbG9wZXJFeHRyYXMgPSBwcml2LT5wYWdlU2V0dGluZ3MtPmRldmVsb3BlckV4dHJh
c0VuYWJsZWQoKTsKICAgICBwcml2LT5zZXR0aW5ncy5lbmFibGVTY3JpcHRzID0gcHJpdi0+cGFn
ZVNldHRpbmdzLT5pc1NjcmlwdEVuYWJsZWQoKTsKICAgICBwcml2LT5zZXR0aW5ncy5lbmFibGVQ
bHVnaW5zID0gcHJpdi0+cGFnZVNldHRpbmdzLT5hcmVQbHVnaW5zRW5hYmxlZCgpOwpAQCAtNjk5
LDcgKzY5OSw3IEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld19wcml2
X25ldyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiAgICAgLy8gdGhpcyBmdW5jdGlv
bmFsaXR5IHdpbGwgYmUgbW9kaWZpZWQgYnkgdGhlIHNjYWxlIHpvb20gcGF0Y2guCiAgICAgcHJp
di0+c2V0dGluZ3Muem9vbVJhbmdlLm1pblNjYWxlID0gWk9PTV9NSU47CiAgICAgcHJpdi0+c2V0
dGluZ3Muem9vbVJhbmdlLm1heFNjYWxlID0gWk9PTV9NQVg7Ci0gICAgcHJpdi0+c2V0dGluZ3Mu
em9vbVJhbmdlLnVzZXJTY2FsYWJsZSA9IEVJTkFfVFJVRTsKKyAgICBwcml2LT5zZXR0aW5ncy56
b29tUmFuZ2UudXNlclNjYWxhYmxlID0gdHJ1ZTsKICAgICBwcml2LT5zZXR0aW5ncy5kZXZpY2VQ
aXhlbFJhdGlvID0gREVWSUNFX1BJWEVMX1JBVElPOwogCiAgICAgcHJpdi0+c2V0dGluZ3MuZG9t
VGltZXJJbnRlcnZhbCA9IHByaXYtPnBhZ2VTZXR0aW5ncy0+ZGVmYXVsdE1pbkRPTVRpbWVySW50
ZXJ2YWwoKTsKQEAgLTgwMCw3ICs4MDAsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRf
YWRkKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogCiAgICAgZXZhc19vYmplY3Rfc21hcnRfbWVtYmVy
X2FkZChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsIGV3a1ZpZXcpOwogICAgIGV2YXNfb2JqZWN0
X3Nob3coc21hcnREYXRhLT5iYWNraW5nX3N0b3JlKTsKLSAgICBldmFzX29iamVjdF9wYXNzX2V2
ZW50c19zZXQoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCBFSU5BX1RSVUUpOworICAgIGV2YXNf
b2JqZWN0X3Bhc3NfZXZlbnRzX3NldChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsIHRydWUpOwog
CiAgICAgc21hcnREYXRhLT5ldmVudHNfcmVjdCA9IGV2YXNfb2JqZWN0X3JlY3RhbmdsZV9hZGQo
c21hcnREYXRhLT5iYXNlLmV2YXMpOwogICAgIGV2YXNfb2JqZWN0X2NvbG9yX3NldChzbWFydERh
dGEtPmV2ZW50c19yZWN0LCAwLCAwLCAwLCAwKTsKQEAgLTg1NiwxNCArODU2LDE0IEBAIHN0YXRp
YyB2b2lkIF9ld2tfdmlld19zbWFydF9yZXNpemUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNf
Q29vcmQgdywgRXZhc19Db29yCiAgICAgLy8gdGhlc2Ugc2hvdWxkIGJlIHF1ZXVlZCBhbmQgcHJv
Y2Vzc2VkIGluIGNhbGN1bGF0ZSBhcyB3ZWxsIQogICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShzbWFy
dERhdGEtPmJhY2tpbmdfc3RvcmUsIHcsIGgpOwogCi0gICAgc21hcnREYXRhLT5jaGFuZ2VkLnNp
emUgPSBFSU5BX1RSVUU7CisgICAgc21hcnREYXRhLT5jaGFuZ2VkLnNpemUgPSB0cnVlOwogICAg
IF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNtYXJ0RGF0YSk7CiB9CiAKIHN0YXRpYyB2b2lkIF9l
d2tfdmlld19zbWFydF9tb3ZlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3JkIHgsIEV2
YXNfQ29vcmQgeSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNt
YXJ0RGF0YSk7Ci0gICAgc21hcnREYXRhLT5jaGFuZ2VkLnBvc2l0aW9uID0gRUlOQV9UUlVFOwor
ICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5wb3NpdGlvbiA9IHRydWU7CiAgICAgX2V3a192aWV3X3Nt
YXJ0X2NoYW5nZWQoc21hcnREYXRhKTsKIH0KIApAQCAtODc2LDcgKzg3Niw3IEBAIHN0YXRpYyB2
b2lkIF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGktPnJlcGFpbnRzX3Byb2Nl
c3MpOwogICAgIEV2YXNfQ29vcmQgeCwgeSwgd2lkdGgsIGhlaWdodDsKIAotICAgIHNtYXJ0RGF0
YS0+Y2hhbmdlZC5hbnkgPSBFSU5BX0ZBTFNFOworICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5hbnkg
PSBmYWxzZTsKIAogICAgIGlmICghc21hcnREYXRhLT5tYWluX2ZyYW1lIHx8ICFwcml2LT5tYWlu
RnJhbWUpCiAgICAgICAgIHJldHVybjsKQEAgLTg5Nyw3ICs4OTcsNyBAQCBzdGF0aWMgdm9pZCBf
ZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgICAgICB9
CiAgICAgICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShzbWFydERhdGEtPm1haW5fZnJhbWUsIHdpZHRo
LCBoZWlnaHQpOwogICAgICAgICBldmFzX29iamVjdF9yZXNpemUoc21hcnREYXRhLT5ldmVudHNf
cmVjdCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5mcmFtZV9y
ZWN0ID0gRUlOQV9UUlVFOworICAgICAgICBzbWFydERhdGEtPmNoYW5nZWQuZnJhbWVfcmVjdCA9
IHRydWU7CiAgICAgICAgIHNtYXJ0RGF0YS0+dmlldy53ID0gd2lkdGg7CiAgICAgICAgIHNtYXJ0
RGF0YS0+dmlldy5oID0gaGVpZ2h0OwogCkBAIC05MDYsMTcgKzkwNiwxNyBAQCBzdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgICAg
ICAvLyBUaGlzIGNhbGxiYWNrIGlzIGEgZ29vZCBwbGFjZSBlLmcuIHRvIGNoYW5nZSBmaXhlZCBs
YXlvdXQgc2l6ZSAoZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KS4KICAgICAgICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAidmlldyxyZXNpemVkIiwgMCk7
CiAgICAgfQotICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5zaXplID0gRUlOQV9GQUxTRTsKKyAgICBz
bWFydERhdGEtPmNoYW5nZWQuc2l6ZSA9IGZhbHNlOwogCiAgICAgaWYgKHNtYXJ0RGF0YS0+Y2hh
bmdlZC5wb3NpdGlvbiAmJiAoKHggIT0gc21hcnREYXRhLT52aWV3LngpIHx8ICh5ICE9IHNtYXJ0
RGF0YS0+dmlldy55KSkpIHsKICAgICAgICAgZXZhc19vYmplY3RfbW92ZShzbWFydERhdGEtPm1h
aW5fZnJhbWUsIHgsIHkpOwogICAgICAgICBldmFzX29iamVjdF9tb3ZlKHNtYXJ0RGF0YS0+YmFj
a2luZ19zdG9yZSwgeCwgeSk7CiAgICAgICAgIGV2YXNfb2JqZWN0X21vdmUoc21hcnREYXRhLT5l
dmVudHNfcmVjdCwgeCwgeSk7Ci0gICAgICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5mcmFtZV9yZWN0
ID0gRUlOQV9UUlVFOworICAgICAgICBzbWFydERhdGEtPmNoYW5nZWQuZnJhbWVfcmVjdCA9IHRy
dWU7CiAgICAgICAgIHNtYXJ0RGF0YS0+dmlldy54ID0geDsKICAgICAgICAgc21hcnREYXRhLT52
aWV3LnkgPSB5OwogICAgIH0KLSAgICBzbWFydERhdGEtPmNoYW5nZWQucG9zaXRpb24gPSBFSU5B
X0ZBTFNFOworICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5wb3NpdGlvbiA9IGZhbHNlOwogCiAgICAg
aWYgKCFzbWFydERhdGEtPmFwaS0+c2Nyb2xsc19wcm9jZXNzKHNtYXJ0RGF0YSkpCiAgICAgICAg
IEVSUigiZmFpbGVkIHRvIHByb2Nlc3Mgc2Nyb2xscy4iKTsKQEAgLTkyOSw3ICs5MjksNyBAQCBz
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3
KQogICAgIGlmIChzbWFydERhdGEtPmNoYW5nZWQuZnJhbWVfcmVjdCkgewogICAgICAgICBXZWJD
b3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBwcml2LT5tYWluRnJhbWUtPnZpZXcoKTsKICAgICAgICAg
dmlldy0+ZnJhbWVSZWN0c0NoYW5nZWQoKTsgLyogZm9yY2UgdHJlZSB0byBnZXQgcG9zaXRpb24g
ZnJvbSByb290ICovCi0gICAgICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5mcmFtZV9yZWN0ID0gRUlO
QV9GQUxTRTsKKyAgICAgICAgc21hcnREYXRhLT5jaGFuZ2VkLmZyYW1lX3JlY3QgPSBmYWxzZTsK
ICAgICB9CiB9CiAKQEAgLTk1Miw3ICs5NTIsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21h
cnRfaGlkZShFdmFzX09iamVjdCogZXdrVmlldykKIAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3Zp
ZXdfc21hcnRfY29udGVudHNfcmVzaXplKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3pvb21fc2V0
KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgZmxvYXQgem9vbSwgRXZhc19Db29yZCBj
ZW50ZXJYLCBFdmFzX0Nvb3JkIGNlbnRlclkpCkBAIC05OTQsMTQgKzk5NCwxNCBAQCBzdGF0aWMg
RWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3JlZ2lvbihFd2tfVmlld19TbWFy
dF9EYXRhKiBzbWFydERhdAogewogICAgIFdSTigibm90IHN1cHBvcnRlZCBieSBlbmdpbmUuIHNt
YXJ0REF0YT0lcCBhcmVhPSVkLCVkKyVkeCVkLCB6b29tPSVmIiwKICAgICAgICAgc21hcnREYXRh
LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCB6b29tKTsKLSAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3By
ZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwg
dW5zaWduZWQgaW50IG51bWJlciwgZmxvYXQgem9vbSkKIHsKICAgICBXUk4oIm5vdCBzdXBwb3J0
ZWQgYnkgZW5naW5lLiBzbWFydERhdGE9JXAsIG49JXUgem9vbT0lZiIsCiAgICAgICAgIHNtYXJ0
RGF0YSwgbnVtYmVyLCB6b29tKTsKLSAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX2NhbmNl
bChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCkBAIC0xMDYyLDEyICsxMDYyLDEyIEBA
IHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3pvb21fYW5pbWF0b3JfY2Iodm9pZCogZGF0YSkK
ICAgICAgICAgX2V3a192aWV3X3pvb21fYW5pbWF0ZWRfZmluaXNoKHNtYXJ0RGF0YSk7CiAgICAg
ICAgIGV3a192aWV3X3pvb21fc2V0KHNtYXJ0RGF0YS0+c2VsZiwgcHJpdi0+YW5pbWF0ZWRab29t
Lnpvb20uZW5kLCBjZW50ZXJYLCBjZW50ZXJZKTsKICAgICAgICAgc21hcnREYXRhLT5hcGktPnNj
LmNhbGN1bGF0ZShzbWFydERhdGEtPnNlbGYpOwotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHNtYXJ0RGF0YS0+YW5pbWF0ZWRf
em9vbS56b29tLmN1cnJlbnQgPSBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9jdXJyZW50KHByaXYp
OwogICAgIHNtYXJ0RGF0YS0+YXBpLT56b29tX3dlYWtfc2V0KHNtYXJ0RGF0YSwgc21hcnREYXRh
LT5hbmltYXRlZF96b29tLnpvb20uY3VycmVudCwgY2VudGVyWCwgY2VudGVyWSk7Ci0gICAgcmV0
dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIHZvaWQgX2V3a192
aWV3X3pvb21fYW5pbWF0aW9uX3N0YXJ0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkK
QEAgLTEwOTUsMjQgKzEwOTUsMjQgQEAgc3RhdGljIFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRl
cyBfZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19jb21wdXRlKGNvbnN0IEUKIHN0YXRpYyBF
aW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2Rpc2FibGVfcmVuZGVyKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNtYXJ0RGF0YSkKIHsKICAgICBXUk4oIm5vdCBzdXBwb3J0ZWQgYnkgZW5naW5lLiBzbWFy
dERhdGE9JXAiLCBzbWFydERhdGEpOwotICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIHJldHVy
biBmYWxzZTsKIH0KIAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfZW5hYmxlX3Jl
bmRlcihFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiB7CiAgICAgV1JOKCJub3Qgc3Vw
cG9ydGVkIGJ5IGVuZ2luZS4gc21hcnREYXRhPSVwIiwgc21hcnREYXRhKTsKLSAgICByZXR1cm4g
RUlOQV9GQUxTRTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19i
YXNlX3NtYXJ0X3NldChFd2tfVmlld19TbWFydF9DbGFzcyogYXBpKQogewotICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChhcGksIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChhcGksIGZhbHNlKTsKIAogICAgIGlmIChhcGktPnZlcnNpb24g
IT0gRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTikgewogICAgICAgICBFSU5BX0xPR19DUklU
CiAgICAgICAgICAgICAoIkV3a19WaWV3X1NtYXJ0X0NsYXNzICVwIGlzIHZlcnNpb24gJWx1IHdo
aWxlICVsdSB3YXMgZXhwZWN0ZWQuIiwKICAgICAgICAgICAgIGFwaSwgYXBpLT52ZXJzaW9uLCBF
V0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoRUlOQV9VTkxJS0VMWSgh
X3BhcmVudF9zYy5hZGQpKQpAQCAtMTE1Myw3ICsxMTUzLDcgQEAgRWluYV9Cb29sIGV3a192aWV3
X2Jhc2Vfc21hcnRfc2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkpCiAgICAgYXBpLT5ydW5f
amF2YXNjcmlwdF9wcm9tcHQgPSBfZXdrX3ZpZXdfc21hcnRfcnVuX2phdmFzY3JpcHRfcHJvbXB0
OwogICAgIGFwaS0+c2hvdWxkX2ludGVycnVwdF9qYXZhc2NyaXB0ID0gX2V3a192aWV3X3NtYXJ0
X3Nob3VsZF9pbnRlcnJ1cHRfamF2YXNjcmlwdDsKIAotICAgIHJldHVybiBFSU5BX1RSVUU7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3JkIHdpZHRoLCBFdmFzX0Nvb3JkIGhlaWdo
dCkKQEAgLTExNjUsNyArMTE2NSw3IEBAIHZvaWQgZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVf
c2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3JkIHdpZHRoLCBFdmFzCiAgICAgaWYg
KHdpZHRoIDw9IDAgJiYgaGVpZ2h0IDw9IDApIHsKICAgICAgICAgaWYgKCF2aWV3LT51c2VGaXhl
ZExheW91dCgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB2aWV3LT5zZXRVc2VGaXhl
ZExheW91dChFSU5BX0ZBTFNFKTsKKyAgICAgICAgdmlldy0+c2V0VXNlRml4ZWRMYXlvdXQoZmFs
c2UpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZSA9IHZpZXct
PmZpeGVkTGF5b3V0U2l6ZSgpOwogICAgICAgICBpZiAoc2l6ZS53aWR0aCgpID09IHdpZHRoICYm
IHNpemUuaGVpZ2h0KCkgPT0gaGVpZ2h0KQpAQCAtMTE3Niw3ICsxMTc2LDcgQEAgdm9pZCBld2tf
dmlld19maXhlZF9sYXlvdXRfc2l6ZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfQ29v
cmQgd2lkdGgsIEV2YXMKIAogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuOwotICAgIHZp
ZXctPnNldFVzZUZpeGVkTGF5b3V0KEVJTkFfVFJVRSk7CisgICAgdmlldy0+c2V0VXNlRml4ZWRM
YXlvdXQodHJ1ZSk7CiAgICAgdmlldy0+Zm9yY2VMYXlvdXQoKTsKIH0KIApAQCAtMTI0Myw3ICsx
MjQzLDcgQEAgRXZhc19PYmplY3QqIGV3a192aWV3X2ZyYW1lX2ZvY3VzZWRfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tWaWV3KQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfdXJpX3NldChFdmFzX09i
amVjdCogZXdrVmlldywgY29uc3QgY2hhciogdXJpKQogewotICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIHJldHVybiBl
d2tfZnJhbWVfdXJpX3NldChzbWFydERhdGEtPm1haW5fZnJhbWUsIHVyaSk7CiB9CiAKQEAgLTEy
NjEsNyArMTI2MSw3IEBAIGNvbnN0IGNoYXIqIGV3a192aWV3X3RpdGxlX2dldChjb25zdCBFdmFz
X09iamVjdCogZXdrVmlldykKIAogRWluYV9Cb29sIGV3a192aWV3X2VkaXRhYmxlX2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrVmlldykKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAgICByZXR1cm4gZXdrX2ZyYW1l
X2VkaXRhYmxlX2dldChzbWFydERhdGEtPm1haW5fZnJhbWUpOwogfQogCkBAIC0xMzM4LDkgKzEz
MzgsOSBAQCB2b2lkIGV3a192aWV3X2JnX2NvbG9yX2dldChjb25zdCBFdmFzX09iamVjdCogZXdr
VmlldywgaW50KiByZWQsIGludCogZ3JlZW4sIGludAogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4
dF9zZWFyY2goY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHN0cmluZywg
RWluYV9Cb29sIGNhc2VTZW5zaXRpdmUsIEVpbmFfQm9vbCBmb3J3YXJkLCBFaW5hX0Jvb2wgd3Jh
cCkKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwg
RUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
cHJpdiwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHN0
cmluZywgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHN0cmluZywgZmFsc2UpOwogICAgIFdURjo6VGV4dENhc2VTZW5zaXRpdml0eSBzZW5zaXRpdmU7
CiAgICAgV2ViQ29yZTo6RmluZERpcmVjdGlvbiBkaXJlY3Rpb247CiAKQEAgLTEzODUsMjcgKzEz
ODUsMjcgQEAgdW5zaWduZWQgaW50IGV3a192aWV3X3RleHRfbWF0Y2hlc19tYXJrKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBzdHJpbmcKIAogRWluYV9Cb29sIGV3a192aWV3X3Rl
eHRfbWF0Y2hlc191bm1hcmtfYWxsKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewotICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNF
KTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFs
c2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZh
bHNlKTsKICAgICBwcml2LT5wYWdlLT51bm1hcmtBbGxUZXh0TWF0Y2hlcygpOwotICAgIHJldHVy
biBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld190
ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29s
IGhpZ2hsaWdodCkKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNt
YXJ0RGF0YSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX3RleHRfbWF0Y2hl
c19oaWdobGlnaHRfc2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgaGlnaGxpZ2h0KTsKIH0KIAog
RWluYV9Cb29sIGV3a192aWV3X3RleHRfbWF0Y2hlc19oaWdobGlnaHRfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tWaWV3KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIHJldHVybiBld2tfZnJhbWVfdGV4dF9t
YXRjaGVzX2hpZ2hsaWdodF9nZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lKTsKIH0KIAogRWluYV9C
b29sIGV3a192aWV3X2VkaXRhYmxlX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29s
IGVkaXRhYmxlKQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIHJldHVybiBld2tfZnJhbWVfZWRpdGFibGVfc2V0
KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgZWRpdGFibGUpOwogfQogCkBAIC0xNDI2LDggKzE0MjYs
OCBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19lZGl0b3JfY29tbWFuZChFd2tfVmlld19Q
cml2YXRlX0RhdGEqIHByaXYsIGNvbnN0IGNoYQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfZXhlY3V0
ZV9lZGl0b3JfY29tbWFuZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX0VkaXRvcl9D
b21tYW5kIGNvbW1hbmQsIGNvbnN0IGNoYXIqIHZhbHVlKQogewotICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKIAog
ICAgIHN3aXRjaCAoY29tbWFuZCkgewogICAgIGNhc2UgRVdLX0VESVRPUl9DT01NQU5EX0lOU0VS
VF9JTUFHRToKQEAgLTE0NDcsMTYgKzE0NDcsMTYgQEAgRWluYV9Cb29sIGV3a192aWV3X2V4ZWN1
dGVfZWRpdG9yX2NvbW1hbmQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19FZGl0b3IK
ICAgICBjYXNlIEVXS19FRElUT1JfQ09NTUFORF9TRUxFQ1RfV09SRDoKICAgICAgICAgcmV0dXJu
IF9ld2tfdmlld19lZGl0b3JfY29tbWFuZChwcml2LCAiU2VsZWN0V29yZCIpOwogICAgIGRlZmF1
bHQ6Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfY29udGV4dF9tZW51X2ZvcndhcmRfZXZlbnQo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biogZG93bkV2
ZW50KQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKLSAgICBFaW5h
X0Jvb2wgbW91c2VfcHJlc3NfaGFuZGxlZCA9IEVJTkFfRkFMU0U7CisgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAgRWluYV9Cb29s
IG1vdXNlX3ByZXNzX2hhbmRsZWQgPSBmYWxzZTsKIAogICAgIHByaXYtPnBhZ2UtPmNvbnRleHRN
ZW51Q29udHJvbGxlcigpLT5jbGVhckNvbnRleHRNZW51KCk7CiAgICAgV2ViQ29yZTo6RnJhbWUq
IG1haW5GcmFtZSA9IHByaXYtPnBhZ2UtPm1haW5GcmFtZSgpOwpAQCAtMTQ3MSw3ICsxNDcxLDcg
QEAgRWluYV9Cb29sIGV3a192aWV3X2NvbnRleHRfbWVudV9mb3J3YXJkX2V2ZW50KEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBjb25zdCBFdmFzX0UKICAgICB9CiAKICAgICBpZiAobWFpbkZyYW1lLT5l
dmVudEhhbmRsZXIoKS0+c2VuZENvbnRleHRNZW51RXZlbnQoZXZlbnQpKQotICAgICAgICByZXR1
cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgV2ViQ29yZTo6Q29u
dGV4dE1lbnUqIGNvcmVNZW51ID0KICAgICAgICAgcHJpdi0+cGFnZS0+Y29udGV4dE1lbnVDb250
cm9sbGVyKCktPmNvbnRleHRNZW51KCk7CkBAIC0xNDgxLDkgKzE0ODEsOSBAQCBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfY29udGV4dF9tZW51X2ZvcndhcmRfZXZlbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IGNvbnN0IEV2YXNfRQogICAgICAgICByZXR1cm4gbW91c2VfcHJlc3NfaGFuZGxlZDsKICAgICB9
CiAKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogI2Vsc2UKLSAgICBy
ZXR1cm4gRUlOQV9GQUxTRTsKKyAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIH0KIApAQCAtMTQ5
Niw3MSArMTQ5Niw3MSBAQCBkb3VibGUgZXdrX3ZpZXdfbG9hZF9wcm9ncmVzc19nZXQoY29uc3Qg
RXZhc19PYmplY3QqIGV3a1ZpZXcpCiAKIEVpbmFfQm9vbCBld2tfdmlld19zdG9wKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIHJldHVybiBld2tfZnJhbWVfc3RvcChzbWFy
dERhdGEtPm1haW5fZnJhbWUpOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfcmVsb2FkKEV2YXNf
T2JqZWN0KiBld2tWaWV3KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIHJldHVybiBld2tfZnJhbWVfcmVsb2Fk
KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19yZWxvYWRf
ZnVsbChFdmFzX09iamVjdCogZXdrVmlldykKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAgICByZXR1cm4gZXdrX2Zy
YW1lX3JlbG9hZF9mdWxsKHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSk7CiB9CiAKIEVpbmFfQm9vbCBl
d2tfdmlld19iYWNrKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewotICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIHJldHVy
biBld2tfZnJhbWVfYmFjayhzbWFydERhdGEtPm1haW5fZnJhbWUpOwogfQogCiBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfZm9yd2FyZChFdmFzX09iamVjdCogZXdrVmlldykKIHsKLSAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7CisgICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAgICBy
ZXR1cm4gZXdrX2ZyYW1lX2ZvcndhcmQoc21hcnREYXRhLT5tYWluX2ZyYW1lKTsKIH0KIAogRWlu
YV9Cb29sIGV3a192aWV3X25hdmlnYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgc3RlcHMp
CiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJ
TkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnRE
YXRhLCBmYWxzZSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9uYXZpZ2F0ZShzbWFydERhdGEtPm1h
aW5fZnJhbWUsIHN0ZXBzKTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X2JhY2tfcG9zc2libGUo
RXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9i
YWNrX3Bvc3NpYmxlKHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSk7CiB9CiAKIEVpbmFfQm9vbCBld2tf
dmlld19mb3J3YXJkX3Bvc3NpYmxlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewotICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwog
ICAgIHJldHVybiBld2tfZnJhbWVfZm9yd2FyZF9wb3NzaWJsZShzbWFydERhdGEtPm1haW5fZnJh
bWUpOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfbmF2aWdhdGVfcG9zc2libGUoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIGludCBzdGVwcykKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAgICByZXR1cm4gZXdrX2ZyYW1l
X25hdmlnYXRlX3Bvc3NpYmxlKHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgc3RlcHMpOwogfQogCiBF
aW5hX0Jvb2wgZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBl
d2tWaWV3KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnRE
YXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnRE
YXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6QmFja0ZvcndhcmRMaXN0SW1wbCo+KHByaXYtPnBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpKS0+
ZW5hYmxlZCgpOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfc2V0KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgZW5hYmxlKQogewotICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwor
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsK
ICAgICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsKj4ocHJpdi0+cGFn
ZS0+YmFja0ZvcndhcmRMaXN0KCkpLT5zZXRFbmFibGVkKGVuYWJsZSk7Ci0gICAgcmV0dXJuIEVJ
TkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRXdrX0hpc3RvcnkqIGV3a192aWV3X2hp
c3RvcnlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQpAQCAtMTU4MiwyNCArMTU4Miwy
NCBAQCBmbG9hdCBld2tfdmlld196b29tX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykK
IAogRWluYV9Cb29sIGV3a192aWV3X3pvb21fc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBmbG9h
dCB6b29tLCBFdmFzX0Nvb3JkIGNlbnRlclgsIEV2YXNfQ29vcmQgY2VudGVyWSkKIHsKLSAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7
CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNl
KTsKICAgICBFV0tfVklFV19QUklWX0dFVChzbWFydERhdGEsIHByaXYpOwogCi0gICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLCBFSU5BX0ZBTFNFKTsKLSAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5hcGktPnpvb21fc2V0
LCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnRE
YXRhLT5hcGksIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21h
cnREYXRhLT5hcGktPnpvb21fc2V0LCBmYWxzZSk7CiAKICAgICBpZiAoIXByaXYtPnNldHRpbmdz
Lnpvb21SYW5nZS51c2VyU2NhbGFibGUpIHsKICAgICAgICAgV1JOKCJ1c2VyU2NhbGFibGUgaXMg
ZmFsc2UiKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKICAgICBpZiAoem9vbSA8IHByaXYtPnNldHRpbmdzLnpvb21SYW5nZS5taW5T
Y2FsZSkgewogICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgcHJpdi0+c2V0
dGluZ3Muem9vbVJhbmdlLm1pblNjYWxlLCB6b29tKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFM
U0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKHpvb20gPiBwcml2LT5z
ZXR0aW5ncy56b29tUmFuZ2UubWF4U2NhbGUpIHsKICAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlz
ID4gJWYgOiAlZiIsIHByaXYtPnNldHRpbmdzLnpvb21SYW5nZS5tYXhTY2FsZSwgem9vbSk7Ci0g
ICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CiAgICAgX2V3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdG9wKHNtYXJ0RGF0YSk7CkBAIC0x
NjE0LDcgKzE2MTQsNyBAQCBmbG9hdCBld2tfdmlld19wYWdlX3pvb21fZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tWaWV3KQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFnZV96b29tX3NldChFdmFz
X09iamVjdCogZXdrVmlldywgZmxvYXQgcGFnZVpvb21GYWN0b3IpCiB7Ci0gICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOworICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAg
cmV0dXJuIGV3a19mcmFtZV9wYWdlX3pvb21fc2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgcGFn
ZVpvb21GYWN0b3IpOwogfQogCkBAIC0xNjI3LDEyICsxNjI3LDEyIEBAIGZsb2F0IGV3a192aWV3
X3NjYWxlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIAogRWluYV9Cb29sIGV3a192
aWV3X3NjYWxlX3NldChFdmFzX09iamVjdCogZXdrVmlldywgZmxvYXQgc2NhbGVGYWN0b3IsIEV2
YXNfQ29vcmQgY2VudGVyWCwgRXZhc19Db29yZCBjZW50ZXJZKQogewotICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwor
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsK
IAogICAgIGZsb2F0IGN1cnJlbnRTY2FsZUZhY3RvciA9IGV3a192aWV3X3NjYWxlX2dldChld2tW
aWV3KTsKICAgICBpZiAoY3VycmVudFNjYWxlRmFjdG9yID09IC0xKQotICAgICAgICByZXR1cm4g
RUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaW50IHgsIHk7CiAgICAg
ZXdrX2ZyYW1lX3Njcm9sbF9wb3NfZ2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgJngsICZ5KTsK
QEAgLTE2NDAsNyArMTY0MCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19zY2FsZV9zZXQoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIGZsb2F0IHNjYWxlRmFjdG9yLCBFdmFzX0Nvb3JkCiAgICAgeCA9IHN0
YXRpY19jYXN0PGludD4oKCh4ICsgY2VudGVyWCkgLyBjdXJyZW50U2NhbGVGYWN0b3IpICogc2Nh
bGVGYWN0b3IpIC0gY2VudGVyWDsKICAgICB5ID0gc3RhdGljX2Nhc3Q8aW50PigoKHkgKyBjZW50
ZXJZKSAvIGN1cnJlbnRTY2FsZUZhY3RvcikgKiBzY2FsZUZhY3RvcikgLSBjZW50ZXJZOwogICAg
IHByaXYtPnBhZ2UtPnNldFBhZ2VTY2FsZUZhY3RvcihzY2FsZUZhY3RvciwgV2ViQ29yZTo6TGF5
b3V0UG9pbnQoeCwgeSkpOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKIGZsb2F0IGV3a192aWV3X3RleHRfem9vbV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3
a1ZpZXcpCkBAIC0xNjUxLDEzICsxNjUxLDEzIEBAIGZsb2F0IGV3a192aWV3X3RleHRfem9vbV9n
ZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAKIEVpbmFfQm9vbCBld2tfdmlld190ZXh0
X3pvb21fc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBmbG9hdCB0ZXh0Wm9vbUZhY3RvcikKIHsK
LSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9G
QUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEs
IGZhbHNlKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX3RleHRfem9vbV9zZXQoc21hcnREYXRhLT5t
YWluX2ZyYW1lLCB0ZXh0Wm9vbUZhY3Rvcik7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld196b29t
X3dlYWtfc21vb3RoX3NjYWxlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIHsKLSAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxT
RSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZh
bHNlKTsKICAgICByZXR1cm4gc21hcnREYXRhLT56b29tX3dlYWtfc21vb3RoX3NjYWxlOwogfQog
CkBAIC0xNjc1LDI0ICsxNjc1LDI0IEBAIHZvaWQgZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290aF9z
Y2FsZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBzbW9vdGhTCiAKIEVpbmFf
Qm9vbCBld2tfdmlld196b29tX3dlYWtfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBmbG9hdCB6
b29tLCBFdmFzX0Nvb3JkIGNlbnRlclgsIEV2YXNfQ29vcmQgY2VudGVyWSkKIHsKLSAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Cisg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsK
ICAgICBFV0tfVklFV19QUklWX0dFVChzbWFydERhdGEsIHByaXYpOwogCi0gICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLCBFSU5BX0ZBTFNFKTsKLSAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5hcGktPnpvb21fd2Vha19z
ZXQsIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFy
dERhdGEtPmFwaSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChz
bWFydERhdGEtPmFwaS0+em9vbV93ZWFrX3NldCwgZmFsc2UpOwogCiAgICAgaWYgKCFwcml2LT5z
ZXR0aW5ncy56b29tUmFuZ2UudXNlclNjYWxhYmxlKSB7CiAgICAgICAgIFdSTigidXNlclNjYWxh
YmxlIGlzIGZhbHNlIik7Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKHpvb20gPCBwcml2LT5zZXR0aW5ncy56b29tUmFu
Z2UubWluU2NhbGUpIHsKICAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIHBy
aXYtPnNldHRpbmdzLnpvb21SYW5nZS5taW5TY2FsZSwgem9vbSk7Ci0gICAgICAgIHJldHVybiBF
SU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmICh6b29tID4g
cHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLm1heFNjYWxlKSB7CiAgICAgICAgIFdSTigiem9vbSBs
ZXZlbCBpcyA+ICVmIDogJWYiLCBwcml2LT5zZXR0aW5ncy56b29tUmFuZ2UubWF4U2NhbGUsIHpv
b20pOwotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAogICAgIHNtYXJ0RGF0YS0+YW5pbWF0ZWRfem9vbS56b29tLnN0YXJ0ID0gZXdrX2Zy
YW1lX3BhZ2Vfem9vbV9nZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lKTsKQEAgLTE3MDMsNTIgKzE3
MDMsNTIgQEAgRWluYV9Cb29sIGV3a192aWV3X3pvb21fd2Vha19zZXQoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY2UKIAogRWluYV9Cb29sIGV3a192aWV3X3pv
b21fYW5pbWF0ZWRfbWFya19zdGFydChFdmFzX09iamVjdCogZXdrVmlldywgZmxvYXQgem9vbSkK
IHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlO
QV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIGZhbHNlKTsKICAgICBzbWFydERhdGEtPmFuaW1hdGVkX3pvb20uem9vbS5zdGFydCA9IHpv
b207Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9C
b29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19lbmQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IGZsb2F0IHpvb20pCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgc21hcnREYXRhLT5hbmltYXRlZF96b29tLnpv
b20uZW5kID0gem9vbTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwog
fQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX2N1cnJlbnQoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIGZsb2F0IHpvb20pCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgc21hcnREYXRhLT5h
bmltYXRlZF96b29tLnpvb20uY3VycmVudCA9IHpvb207Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRf
bWFya19zdG9wKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIF9ld2tfdmll
d196b29tX2FuaW1hdGVkX21hcmtfc3RvcChzbWFydERhdGEpOwotICAgIHJldHVybiBFSU5BX1RS
VUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1h
dGVkX3NldChFdmFzX09iamVjdCogZXdrVmlldywgZmxvYXQgem9vbSwgZmxvYXQgZHVyYXRpb24s
IEV2YXNfQ29vcmQgY2VudGVyWCwgRXZhc19Db29yZCBjZW50ZXJZKQogewogICAgIGRvdWJsZSBu
b3c7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJ
TkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHBy
aXYsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFy
dERhdGEtPmFwaSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHNtYXJ0RGF0YS0+YXBpLT56b29tX3dlYWtfc2V0LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5hcGksIGZhbHNlKTsKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5hcGktPnpvb21fd2Vh
a19zZXQsIGZhbHNlKTsKIAogICAgIGlmICghcHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLnVzZXJT
Y2FsYWJsZSkgewogICAgICAgICBXUk4oInVzZXJTY2FsYWJsZSBpcyBmYWxzZSIpOwotICAgICAg
ICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAg
IGlmICh6b29tIDwgcHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLm1pblNjYWxlKSB7CiAgICAgICAg
IFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCBwcml2LT5zZXR0aW5ncy56b29tUmFuZ2Uu
bWluU2NhbGUsIHpvb20pOwotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAoem9vbSA+IHByaXYtPnNldHRpbmdzLnpvb21SYW5n
ZS5tYXhTY2FsZSkgewogICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgcHJp
di0+c2V0dGluZ3Muem9vbVJhbmdlLm1heFNjYWxlLCB6b29tKTsKLSAgICAgICAgcmV0dXJuIEVJ
TkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAocHJpdi0+
YW5pbWF0ZWRab29tLmFuaW1hdG9yKQpAQCAtMTc3NSwxNCArMTc3NSwxNCBAQCBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGZsb2F0IHpv
b20sIGZsb2F0IGR1cgogICAgIHNtYXJ0RGF0YS0+YW5pbWF0ZWRfem9vbS56b29tLnN0YXJ0ID0g
cHJpdi0+YW5pbWF0ZWRab29tLnpvb20uc3RhcnQ7CiAgICAgc21hcnREYXRhLT5hbmltYXRlZF96
b29tLnpvb20uZW5kID0gcHJpdi0+YW5pbWF0ZWRab29tLnpvb20uZW5kOwogCi0gICAgcmV0dXJu
IEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3By
ZV9yZW5kZXJfcmVnaW9uKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3JkIHgsIEV2YXNf
Q29vcmQgeSwgRXZhc19Db29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQsIGZsb2F0IHpvb20p
CiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJ
TkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHBy
aXYsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFy
dERhdGEtPmFwaS0+cHJlX3JlbmRlcl9yZWdpb24sIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmFwaS0+cHJlX3JlbmRlcl9yZWdp
b24sIGZhbHNlKTsKICAgICBmbG9hdCBjdXJfem9vbTsKICAgICBFdmFzX0Nvb3JkIGNvbnRlbnRz
V2lkdGgsIGNvbnRlbnRzSGVpZ2h0OwogCkBAIC0xNzkwLDE0ICsxNzkwLDE0IEBAIEVpbmFfQm9v
bCBld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbihFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19D
b29yZCB4LCBFdmFzX0NvCiAgICAgICogd291bGQgc2NyZXcgdXAgcGFyYW1ldGVycyB0aGF0IGFu
aW1hdGlvbiBpcyBjdXJyZW50bHkgdXNpbmcKICAgICAgKi8KICAgICBpZiAocHJpdi0+YW5pbWF0
ZWRab29tLmFuaW1hdG9yKQotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgY3VyX3pvb20gPSBld2tfZnJhbWVfcGFnZV96b29tX2dldChzbWFy
dERhdGEtPm1haW5fZnJhbWUpOwogCiAgICAgaWYgKGN1cl96b29tIDwgMC4wMDAwMSkKLSAgICAg
ICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWV3
a19mcmFtZV9jb250ZW50c19zaXplX2dldChzbWFydERhdGEtPm1haW5fZnJhbWUsICZjb250ZW50
c1dpZHRoLCAmY29udGVudHNIZWlnaHQpKQotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY29udGVudHNXaWR0aCAqPSB6b29tIC8gY3VyX3pv
b207CiAgICAgY29udGVudHNIZWlnaHQgKj0gem9vbSAvIGN1cl96b29tOwpAQCAtMTgyMywxMyAr
MTgyMywxMyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWdpb24oRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIEV2YXNfQ29vcmQgeCwgRXZhc19DbwogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdf
cHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVuc2lnbmVk
IGludCBudW1iZXIpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
bWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChzbWFydERhdGEtPmFwaS0+cHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMsIEVJTkFf
RkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
LCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJp
diwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEt
PmFwaS0+cHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMsIGZhbHNlKTsKICAgICBmbG9hdCBjdXJy
ZW50Wm9vbTsKIAogICAgIGlmIChwcml2LT5hbmltYXRlZFpvb20uYW5pbWF0b3IpCi0gICAgICAg
IHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjdXJyZW50
Wm9vbSA9IGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSk7CiAg
ICAgcmV0dXJuIHNtYXJ0RGF0YS0+YXBpLT5wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyhzbWFy
dERhdGEsIG51bWJlciwgY3VycmVudFpvb20pOwpAQCAtMTg1MSwxNSArMTg1MSwxNSBAQCB2b2lk
IGV3a192aWV3X3ByZV9yZW5kZXJfY2FuY2VsKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogCiBFaW5h
X0Jvb2wgZXdrX3ZpZXdfZW5hYmxlX3JlbmRlcihjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykK
IHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlO
QV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+
YXBpLT5lbmFibGVfcmVuZGVyLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmFwaS0+ZW5hYmxlX3JlbmRlciwgZmFsc2UpOwogICAg
IHJldHVybiBzbWFydERhdGEtPmFwaS0+ZW5hYmxlX3JlbmRlcihzbWFydERhdGEpOwogfQogCiBF
aW5hX0Jvb2wgZXdrX3ZpZXdfZGlzYWJsZV9yZW5kZXIoY29uc3QgRXZhc19PYmplY3QqIGV3a1Zp
ZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEs
IEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERh
dGEtPmFwaS0+ZGlzYWJsZV9yZW5kZXIsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLT5kaXNhYmxlX3JlbmRlciwgZmFsc2Up
OwogICAgIHJldHVybiBzbWFydERhdGEtPmFwaS0+ZGlzYWJsZV9yZW5kZXIoc21hcnREYXRhKTsK
IH0KIApAQCAtMTg3MiwxMyArMTg3MiwxMyBAQCBjb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5n
X3VzZXJfYWdlbnRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogCiBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfc2V0dGluZ191c2VyX2FnZW50X3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29u
c3QgY2hhciogdXNlckFnZW50KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAgICBpZiAoZWluYV9zdHJp
bmdzaGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5ncy51c2VyQWdlbnQsIHVzZXJBZ2VudCkpIHsK
ICAgICAgICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwqIGNsaWVudCA9IHN0YXRpY19j
YXN0PFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKj4ocHJpdi0+bWFpbkZyYW1lLT5sb2Fk
ZXIoKS0+Y2xpZW50KCkpOwogICAgICAgICBjbGllbnQtPnNldEN1c3RvbVVzZXJBZ2VudChTdHJp
bmc6OmZyb21VVEY4KHVzZXJBZ2VudCkpOwogICAgIH0KLSAgICByZXR1cm4gRUlOQV9UUlVFOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiBjb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX3VzZXJf
c3R5bGVzaGVldF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCkBAIC0xODkwLDIzOCAr
MTg5MCwyMzggQEAgY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0dGluZ191c2VyX3N0eWxlc2hlZXRf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ191c2VyX3N0eWxlc2hlZXRfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFy
KiB1cmkpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIGlmIChlaW5hX3N0cmluZ3NoYXJlX3JlcGxh
Y2UoJnByaXYtPnNldHRpbmdzLnVzZXJTdHlsZXNoZWV0LCB1cmkpKSB7CiAgICAgICAgIFdlYkNv
cmU6OktVUkwga3VybChXZWJDb3JlOjpLVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJpKSk7CiAg
ICAgICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihrdXJs
KTsKICAgICB9Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
RWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfYXV0b19sb2FkX2ltYWdlc19nZXQoY29uc3QgRXZh
c19PYmplY3QqIGV3a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIHJldHVybiBwcml2LT5z
ZXR0aW5ncy5hdXRvTG9hZEltYWdlczsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
YXV0b19sb2FkX2ltYWdlc19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBhdXRv
bWF0aWMpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIGF1dG9tYXRpYyA9ICEhYXV0b21hdGljOwog
ICAgIGlmIChwcml2LT5zZXR0aW5ncy5hdXRvTG9hZEltYWdlcyAhPSBhdXRvbWF0aWMpIHsKICAg
ICAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoYXV0
b21hdGljKTsKICAgICAgICAgcHJpdi0+c2V0dGluZ3MuYXV0b0xvYWRJbWFnZXMgPSBhdXRvbWF0
aWM7CiAgICAgfQotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2F1dG9fc2hyaW5rX2ltYWdlc19nZXQoY29uc3Qg
RXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIHJldHVybiBwcml2
LT5zZXR0aW5ncy5hdXRvU2hyaW5rSW1hZ2VzOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ19hdXRvX3Nocmlua19pbWFnZXNfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jv
b2wgYXV0b21hdGljKQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAgICBhdXRvbWF0aWMgPSAhIWF1dG9t
YXRpYzsKICAgICBpZiAocHJpdi0+c2V0dGluZ3MuYXV0b1Nocmlua0ltYWdlcyAhPSBhdXRvbWF0
aWMpIHsKICAgICAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRTaHJpbmtzU3RhbmRhbG9uZUlt
YWdlc1RvRml0KGF1dG9tYXRpYyk7CiAgICAgICAgIHByaXYtPnNldHRpbmdzLmF1dG9TaHJpbmtJ
bWFnZXMgPSBhdXRvbWF0aWM7CiAgICAgfQotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9hdXRvX3Jl
c2l6ZV93aW5kb3dfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewotICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNF
KTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFs
c2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZh
bHNlKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZW5hYmxlQXV0b1Jlc2l6ZVdpbmRvdzsK
IH0KIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2F1dG9fcmVzaXplX3dpbmRv
d19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCByZXNpemFibGUpCiB7Ci0gICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0Up
OwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFf
RkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
LCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJp
diwgZmFsc2UpOwogICAgIHByaXYtPnNldHRpbmdzLmVuYWJsZUF1dG9SZXNpemVXaW5kb3cgPSBy
ZXNpemFibGU7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
RWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3NjcmlwdHNfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tWaWV3KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAgICByZXR1cm4gcHJpdi0+c2V0
dGluZ3MuZW5hYmxlU2NyaXB0czsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5h
YmxlX3NjcmlwdHNfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgZW5hYmxlKQog
ewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5B
X0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2
LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNt
YXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYsIGZhbHNlKTsKICAgICBlbmFibGUgPSAhIWVuYWJsZTsKICAgICBpZiAocHJpdi0+
c2V0dGluZ3MuZW5hYmxlU2NyaXB0cyAhPSBlbmFibGUpIHsKICAgICAgICAgcHJpdi0+cGFnZVNl
dHRpbmdzLT5zZXRTY3JpcHRFbmFibGVkKGVuYWJsZSk7CiAgICAgICAgIHByaXYtPnNldHRpbmdz
LmVuYWJsZVNjcmlwdHMgPSBlbmFibGU7CiAgICAgfQotICAgIHJldHVybiBFSU5BX1RSVUU7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9w
bHVnaW5zX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIHsKLSAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7Cisg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsK
KyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7
CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmVuYWJsZVBsdWdpbnM7CiB9CiAKIEVpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9wbHVnaW5zX3NldChFdmFzX09iamVjdCogZXdrVmll
dywgRWluYV9Cb29sIGVuYWJsZSkKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CiAgICAgZW5hYmxlID0gISFl
bmFibGU7CiAgICAgaWYgKHByaXYtPnNldHRpbmdzLmVuYWJsZVBsdWdpbnMgIT0gZW5hYmxlKSB7
CiAgICAgICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0UGx1Z2luc0VuYWJsZWQoZW5hYmxlKTsK
ICAgICAgICAgcHJpdi0+c2V0dGluZ3MuZW5hYmxlUGx1Z2lucyA9IGVuYWJsZTsKICAgICB9Ci0g
ICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3
a192aWV3X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGlu
Z3MuZW5hYmxlRnJhbWVGbGF0dGVuaW5nOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z19lbmFibGVfZnJhbWVfZmxhdHRlbmluZ19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFf
Qm9vbCBlbmFibGUpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
bWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIGVuYWJsZSA9ICEhZW5hYmxlOwog
ICAgIGlmIChwcml2LT5zZXR0aW5ncy5lbmFibGVGcmFtZUZsYXR0ZW5pbmcgIT0gZW5hYmxlKSB7
CiAgICAgICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChl
bmFibGUpOwogICAgICAgICBwcml2LT5zZXR0aW5ncy5lbmFibGVGcmFtZUZsYXR0ZW5pbmcgPSBl
bmFibGU7CiAgICAgfQotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfY2FuX29wZW5fd2luZG93c19n
ZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIHJl
dHVybiBwcml2LT5zZXR0aW5ncy5zY3JpcHRzQ2FuT3BlbldpbmRvd3M7CiB9CiAKIEVpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfY2FuX29wZW5fd2luZG93c19zZXQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBhbGxvdykKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CiAgICAgYWxs
b3cgPSAhIWFsbG93OwogICAgIGlmIChwcml2LT5zZXR0aW5ncy5zY3JpcHRzQ2FuT3BlbldpbmRv
d3MgIT0gYWxsb3cpIHsKICAgICAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRKYXZhU2NyaXB0
Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KGFsbG93KTsKICAgICAgICAgcHJpdi0+c2V0dGlu
Z3Muc2NyaXB0c0Nhbk9wZW5XaW5kb3dzID0gYWxsb3c7CiAgICAgfQotICAgIHJldHVybiBFSU5B
X1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5n
X3NjcmlwdHNfY2FuX2Nsb3NlX3dpbmRvd3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3
KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBF
SU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBw
cml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcs
IHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIHByaXYsIGZhbHNlKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Muc2NyaXB0c0Nh
bkNsb3NlV2luZG93czsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfc2NyaXB0c19j
YW5fY2xvc2Vfd2luZG93c19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBhbGxv
dykKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwg
RUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
cHJpdiwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBwcml2LCBmYWxzZSk7CiAgICAgYWxsb3cgPSAhIWFsbG93OwogICAgIGlmIChwcml2
LT5zZXR0aW5ncy5zY3JpcHRzQ2FuQ2xvc2VXaW5kb3dzICE9IGFsbG93KSB7CiAgICAgICAgIHBy
aXYtPnBhZ2VTZXR0aW5ncy0+c2V0QWxsb3dTY3JpcHRzVG9DbG9zZVdpbmRvd3MoYWxsb3cpOwog
ICAgICAgICBwcml2LT5zZXR0aW5ncy5zY3JpcHRzQ2FuQ2xvc2VXaW5kb3dzID0gYWxsb3c7CiAg
ICAgfQotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFf
Qm9vbCBld2tfdmlld19zZXR0aW5nX3Jlc2l6YWJsZV90ZXh0YXJlYXNfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tWaWV3KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAgICByZXR1cm4gcHJpdi0+c2V0
dGluZ3MucmVzaXphYmxlVGV4dGFyZWFzOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z19yZXNpemFibGVfdGV4dGFyZWFzX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29s
IGVuYWJsZSkKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CiAgICAgZW5hYmxlID0gISFlbmFibGU7CiAgICAg
aWYgKHByaXYtPnNldHRpbmdzLnJlc2l6YWJsZVRleHRhcmVhcyAhPSBlbmFibGUpIHsKICAgICAg
ICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRUZXh0QXJlYXNBcmVSZXNpemFibGUoZW5hYmxlKTsK
ICAgICAgICAgcHJpdi0+c2V0dGluZ3MucmVzaXphYmxlVGV4dGFyZWFzID0gZW5hYmxlOwogICAg
IH0KLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jv
b2wgZXdrX3ZpZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dzaW5nX2dldChjb25zdCBFdmFzX09iamVj
dCogZXdrVmlldykKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNt
YXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdz
LnByaXZhdGVCcm93c2luZzsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfcHJpdmF0
ZV9icm93c2luZ19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBlbmFibGUpCiB7
Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFf
RkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYs
IEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0
YSwgcHJpdiwgZmFsc2UpOwogICAgIGVuYWJsZSA9ICEhZW5hYmxlOwogICAgIGlmIChwcml2LT5z
ZXR0aW5ncy5wcml2YXRlQnJvd3NpbmcgIT0gZW5hYmxlKSB7CiAgICAgICAgIHByaXYtPnBhZ2VT
ZXR0aW5ncy0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChlbmFibGUpOwogICAgICAgICBwcml2
LT5zZXR0aW5ncy5wcml2YXRlQnJvd3NpbmcgPSBlbmFibGU7CiAgICAgfQotICAgIHJldHVybiBF
SU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0
aW5nX29mZmxpbmVfYXBwX2NhY2hlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIHsK
LSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9G
QUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwg
RUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2LCBmYWxzZSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLm9mZmxpbmVBcHBDYWNo
ZTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfb2ZmbGluZV9hcHBfY2FjaGVfc2V0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgZW5hYmxlKQogewotICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsK
KyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2Up
OworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNl
KTsKICAgICBlbmFibGUgPSAhIWVuYWJsZTsKICAgICBpZiAocHJpdi0+c2V0dGluZ3Mub2ZmbGlu
ZUFwcENhY2hlICE9IGVuYWJsZSkgewogICAgICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldE9m
ZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChlbmFibGUpOwogICAgICAgICBwcml2LT5z
ZXR0aW5ncy5vZmZsaW5lQXBwQ2FjaGUgPSBlbmFibGU7CiAgICAgfQotICAgIHJldHVybiBFSU5B
X1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRp
bmdfY2FyZXRfYnJvd3NpbmdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewotICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNF
KTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5B
X0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHBy
aXYsIGZhbHNlKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuY2FyZXRCcm93c2luZzsKIH0K
IAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfY2FyZXRfYnJvd3Npbmdfc2V0KEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgZW5hYmxlKQogewotICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAgICBl
bmFibGUgPSAhIWVuYWJsZTsKICAgICBpZiAocHJpdi0+c2V0dGluZ3MuY2FyZXRCcm93c2luZyAh
PSBlbmFibGUpIHsKICAgICAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRDYXJldEJyb3dzaW5n
RW5hYmxlZChlbmFibGUpOwogICAgICAgICBwcml2LT5zZXR0aW5ncy5jYXJldEJyb3dzaW5nID0g
ZW5hYmxlOwogICAgIH0KLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwog
fQogCiBjb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9nZXQoY29u
c3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCkBAIC0yMTQyLDE0ICsyMTQyLDE0IEBAIGNvbnN0IGNo
YXIqIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX2dldChjb25zdCBFdmFzX09iamVj
dCogZXdrVmlldykKIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9t
X3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogZW5jb2RpbmcpCiB7Ci0gICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0Up
OwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFf
RkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
LCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJp
diwgZmFsc2UpOwogICAgIEV2YXNfT2JqZWN0KiBtYWluX2ZyYW1lID0gZXdrX3ZpZXdfZnJhbWVf
bWFpbl9nZXQoZXdrVmlldyk7CiAgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSA9IEVXS1By
aXZhdGU6OmNvcmVGcmFtZShtYWluX2ZyYW1lKTsKICAgICBEQkcoIiVzIiwgZW5jb2RpbmcpOwog
ICAgIGlmIChlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLmVuY29kaW5n
Q3VzdG9tLCBlbmNvZGluZykpCiAgICAgICAgIGNvcmVGcmFtZS0+bG9hZGVyKCktPnJlbG9hZFdp
dGhPdmVycmlkZUVuY29kaW5nKFN0cmluZzo6ZnJvbVVURjgoZW5jb2RpbmcpKTsKLSAgICByZXR1
cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBjb25zdCBjaGFyKiBld2tfdmll
d19zZXR0aW5nX2VuY29kaW5nX2RlZmF1bHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3
KQpAQCAtMjE2MSw0OSArMjE2MSw0OSBAQCBjb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX2Vu
Y29kaW5nX2RlZmF1bHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogCiBFaW5hX0Jv
b2wgZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19kZWZhdWx0X3NldChFdmFzX09iamVjdCogZXdr
VmlldywgY29uc3QgY2hhciogZW5jb2RpbmcpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIGlmIChl
aW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLmVuY29kaW5nRGVmYXVsdCwg
ZW5jb2RpbmcpKQogICAgICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldERlZmF1bHRUZXh0RW5j
b2RpbmdOYW1lKFN0cmluZzo6ZnJvbVVURjgoZW5jb2RpbmcpKTsKLSAgICByZXR1cm4gRUlOQV9U
UlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19l
bmNvZGluZ19kZXRlY3Rvcl9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBlbmFi
bGUpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEs
IEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIGVuYWJsZSA9ICEhZW5hYmxlOwogICAgIGlmIChw
cml2LT5zZXR0aW5ncy5lbmNvZGluZ0RldGVjdG9yICE9IGVuYWJsZSkgewogICAgICAgICBwcml2
LT5wYWdlU2V0dGluZ3MtPnNldFVzZXNFbmNvZGluZ0RldGVjdG9yKGVuYWJsZSk7CiAgICAgICAg
IHByaXYtPnNldHRpbmdzLmVuY29kaW5nRGV0ZWN0b3IgPSBlbmFibGU7CiAgICAgfQotICAgIHJl
dHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmll
d19zZXR0aW5nX2VuY29kaW5nX2RldGVjdG9yX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmll
dykKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwg
RUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
cHJpdiwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBwcml2LCBmYWxzZSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmVuY29kaW5n
RGV0ZWN0b3I7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9kZXZlbG9w
ZXJfZXh0cmFzX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIHsKLSAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7
CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNl
KTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxz
ZSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmVuYWJsZURldmVsb3BlckV4dHJhczsKIH0K
IAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9leHRyYXNfc2V0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgZW5hYmxlKQogewotICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsK
KyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2Up
OworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNl
KTsKICAgICBlbmFibGUgPSAhIWVuYWJsZTsKICAgICBpZiAocHJpdi0+c2V0dGluZ3MuZW5hYmxl
RGV2ZWxvcGVyRXh0cmFzICE9IGVuYWJsZSkgewogICAgICAgICBwcml2LT5wYWdlU2V0dGluZ3Mt
PnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoZW5hYmxlKTsKICAgICAgICAgcHJpdi0+c2V0dGlu
Z3MuZW5hYmxlRGV2ZWxvcGVyRXh0cmFzID0gZW5hYmxlOwogICAgIH0KLSAgICByZXR1cm4gRUlO
QV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBpbnQgZXdrX3ZpZXdfc2V0dGluZ19mb250
X21pbmltdW1fc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCkBAIC0yMjE1LDEz
ICsyMjE1LDEzIEBAIGludCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbWluaW11bV9zaXplX2dldChj
b25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
Zm9udF9taW5pbXVtX3NpemVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgc2l6ZSkKIHsK
LSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9G
QUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwg
RUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2LCBmYWxzZSk7CiAgICAgaWYgKHByaXYtPnNldHRpbmdzLmZvbnRNaW5pbXVtU2l6ZSAh
PSBzaXplKSB7CiAgICAgICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0TWluaW11bUZvbnRTaXpl
KHNpemUpOwogICAgICAgICBwcml2LT5zZXR0aW5ncy5mb250TWluaW11bVNpemUgPSBzaXplOwog
ICAgIH0KLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBpbnQg
ZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fbG9naWNhbF9zaXplX2dldChjb25zdCBFdmFz
X09iamVjdCogZXdrVmlldykKQEAgLTIyMzMsMTMgKzIyMzMsMTMgQEAgaW50IGV3a192aWV3X3Nl
dHRpbmdfZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3
a1ZpZXcpCiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbWluaW11bV9sb2dpY2Fs
X3NpemVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgc2l6ZSkKIHsKLSAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7
CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNl
KTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxz
ZSk7CiAgICAgaWYgKHByaXYtPnNldHRpbmdzLmZvbnRNaW5pbXVtTG9naWNhbFNpemUgIT0gc2l6
ZSkgewogICAgICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldE1pbmltdW1Mb2dpY2FsRm9udFNp
emUoc2l6ZSk7CiAgICAgICAgIHByaXYtPnNldHRpbmdzLmZvbnRNaW5pbXVtTG9naWNhbFNpemUg
PSBzaXplOwogICAgIH0KLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwog
fQogCiBpbnQgZXdrX3ZpZXdfc2V0dGluZ19mb250X2RlZmF1bHRfc2l6ZV9nZXQoY29uc3QgRXZh
c19PYmplY3QqIGV3a1ZpZXcpCkBAIC0yMjUxLDEzICsyMjUxLDEzIEBAIGludCBld2tfdmlld19z
ZXR0aW5nX2ZvbnRfZGVmYXVsdF9zaXplX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykK
IAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9kZWZhdWx0X3NpemVfc2V0KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBpbnQgc2l6ZSkKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CiAgICAgaWYgKHBy
aXYtPnNldHRpbmdzLmZvbnREZWZhdWx0U2l6ZSAhPSBzaXplKSB7CiAgICAgICAgIHByaXYtPnBh
Z2VTZXR0aW5ncy0+c2V0RGVmYXVsdEZvbnRTaXplKHNpemUpOwogICAgICAgICBwcml2LT5zZXR0
aW5ncy5mb250RGVmYXVsdFNpemUgPSBzaXplOwogICAgIH0KLSAgICByZXR1cm4gRUlOQV9UUlVF
OworICAgIHJldHVybiB0cnVlOwogfQogCiBpbnQgZXdrX3ZpZXdfc2V0dGluZ19mb250X21vbm9z
cGFjZV9zaXplX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKQEAgLTIyNjksMTMgKzIy
NjksMTMgQEAgaW50IGV3a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2l6ZV9nZXQoY29u
c3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2Zv
bnRfbW9ub3NwYWNlX3NpemVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgc2l6ZSkKIHsK
LSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9G
QUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwg
RUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2LCBmYWxzZSk7CiAgICAgaWYgKHByaXYtPnNldHRpbmdzLmZvbnRNb25vc3BhY2VTaXpl
ICE9IHNpemUpIHsKICAgICAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXREZWZhdWx0Rml4ZWRG
b250U2l6ZShzaXplKTsKICAgICAgICAgcHJpdi0+c2V0dGluZ3MuZm9udE1vbm9zcGFjZVNpemUg
PSBzaXplOwogICAgIH0KLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwog
fQogCiBjb25zdCBjaGFyKiBld2tfdmlld19mb250X2ZhbWlseV9uYW1lX2dldChjb25zdCBFdmFz
X09iamVjdCogZXdrVmlldywgRXdrX0ZvbnRfRmFtaWx5IGZvbnRGYW1pbHkpCkBAIC0yMzAyLDgg
KzIzMDIsOCBAQCBjb25zdCBjaGFyKiBld2tfdmlld19mb250X2ZhbWlseV9uYW1lX2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0ZvbnRfRgogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdf
Zm9udF9mYW1pbHlfbmFtZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Gb250X0ZhbWls
eSBmb250RmFtaWx5LCBjb25zdCBjaGFyKiBuYW1lKQogewotICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKIAogICAg
IHN3aXRjaCAoZm9udEZhbWlseSkgewogICAgIGNhc2UgRVdLX0ZPTlRfRkFNSUxZX1NUQU5EQVJE
OgpAQCAtMjMzMSw2NyArMjMzMSw2NyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfZm9udF9mYW1pbHlf
bmFtZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Gb250X0ZhbWlseSBmbwogICAgICAg
ICAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRTYW5zU2VyaWZGb250RmFtaWx5KEF0b21pY1N0
cmluZzo6ZnJvbVVURjgobmFtZSkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAg
ICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBl
d2tfdmlld19zZXR0aW5nX3NwYXRpYWxfbmF2aWdhdGlvbl9nZXQoY29uc3QgRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
ZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5z
cGF0aWFsTmF2aWdhdGlvbjsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfc3BhdGlh
bF9uYXZpZ2F0aW9uX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIGVuYWJsZSkK
IHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlO
QV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJp
diwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnRE
YXRhLCBwcml2LCBmYWxzZSk7CiAgICAgZW5hYmxlID0gISFlbmFibGU7CiAgICAgaWYgKHByaXYt
PnNldHRpbmdzLnNwYXRpYWxOYXZpZ2F0aW9uICE9IGVuYWJsZSkgewogICAgICAgICBwcml2LT5w
YWdlU2V0dGluZ3MtPnNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChlbmFibGUpOwogICAgICAg
ICBwcml2LT5zZXR0aW5ncy5zcGF0aWFsTmF2aWdhdGlvbiA9IGVuYWJsZTsKICAgICB9Ci0gICAg
cmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3a192
aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcp
CiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJ
TkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHBy
aXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5sb2NhbFN0b3Jh
Z2U7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2Vfc2V0KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgZW5hYmxlKQogewotICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwor
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsK
ICAgICBlbmFibGUgPSAhIWVuYWJsZTsKICAgICBpZiAocHJpdi0+c2V0dGluZ3MubG9jYWxTdG9y
YWdlICE9IGVuYWJsZSkgewogICAgICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldExvY2FsU3Rv
cmFnZUVuYWJsZWQoZW5hYmxlKTsKICAgICAgICAgcHJpdi0+c2V0dGluZ3MubG9jYWxTdG9yYWdl
ID0gZW5hYmxlOwogICAgIH0KLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVl
OwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19wYWdlX2NhY2hlX2dldChjb25zdCBF
dmFzX09iamVjdCogZXdrVmlldykKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CiAgICAgcmV0dXJuIHByaXYt
PnNldHRpbmdzLnBhZ2VDYWNoZTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfcGFn
ZV9jYWNoZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBlbmFibGUpCiB7Ci0g
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFM
U0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJ
TkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnRE
YXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
cHJpdiwgZmFsc2UpOwogICAgIGVuYWJsZSA9ICEhZW5hYmxlOwogICAgIGlmIChwcml2LT5zZXR0
aW5ncy5wYWdlQ2FjaGUgIT0gZW5hYmxlKSB7CiAgICAgICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+
c2V0VXNlc1BhZ2VDYWNoZShlbmFibGUpOwogICAgICAgICBwcml2LT5zZXR0aW5ncy5wYWdlQ2Fj
aGUgPSBlbmFibGU7CiAgICAgfQotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIGNvbnN0IGNoYXIqIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9kYXRh
YmFzZV9wYXRoX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKQEAgLTI0MDMsMjggKzI0
MDMsMjggQEAgY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX2RhdGFi
YXNlX3BhdGhfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KgogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBjb25zdCBjaGFyKiBwYXRoKQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAgICBpZiAoZWluYV9zdHJp
bmdzaGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5ncy5sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgs
IHBhdGgpKQogICAgICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldExvY2FsU3RvcmFnZURhdGFi
YXNlUGF0aChTdHJpbmc6OmZyb21VVEY4KHBhdGgpKTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19taW5pbXVt
X3RpbWVyX2ludGVydmFsX3NldChFdmFzX09iamVjdCogZXdrVmlldywgZG91YmxlIGludGVydmFs
KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBF
SU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBw
cml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcs
IHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIHByaXYsIGZhbHNlKTsKICAgICBpZiAoZmFicyhwcml2LT5zZXR0aW5ncy5kb21UaW1l
ckludGVydmFsIC0gaW50ZXJ2YWwpID49IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6ZXBz
aWxvbigpKSB7CiAgICAgICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0TWluRE9NVGltZXJJbnRl
cnZhbChpbnRlcnZhbCk7CiAgICAgICAgIHByaXYtPnNldHRpbmdzLmRvbVRpbWVySW50ZXJ2YWwg
PSBpbnRlcnZhbDsKICAgICB9Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogZG91YmxlIGV3a192aWV3X3NldHRpbmdfbWluaW11bV90aW1lcl9pbnRlcnZhbF9n
ZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIHJl
dHVybiBwcml2LT5zZXR0aW5ncy5kb21UaW1lckludGVydmFsOwogfQogCkBAIC0yNjQxLDExICsy
NjQxLDExIEBAIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF90cmFuc2xhdGUoRXdrX1ZpZXdf
UGFpbnRfQ29udGV4dCogY29udGV4dCwgZmxvYXQgeCwKIAogRWluYV9Cb29sIGV3a192aWV3X3Bh
aW50KEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgY2Fpcm9fdCogY3IsIGNvbnN0IEVpbmFf
UmVjdGFuZ2xlKiBhcmVhKQogewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChw
cml2LCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY3Is
IEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChhcmVhLCBF
SU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdiwgZmFs
c2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjciwgZmFsc2UpOworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChhcmVhLCBmYWxzZSk7CiAgICAgV2ViQ29y
ZTo6RnJhbWVWaWV3KiB2aWV3ID0gcHJpdi0+bWFpbkZyYW1lLT52aWV3KCk7Ci0gICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHZpZXcsIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTCh2aWV3LCBmYWxzZSk7CiAKICAgICBpZiAodmlldy0+bmVl
ZHNMYXlvdXQoKSkKICAgICAgICAgdmlldy0+Zm9yY2VMYXlvdXQoKTsKQEAgLTI2NjEsMTYgKzI2
NjEsMTYgQEAgRWluYV9Cb29sIGV3a192aWV3X3BhaW50KEV3a19WaWV3X1ByaXZhdGVfRGF0YSog
cHJpdiwgY2Fpcm9fdCogY3IsIGNvbnN0IEVpbmFfUmUKICAgICBncmFwaGljc0NvbnRleHQucmVz
dG9yZSgpOwogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogCi0gICAgcmV0dXJuIEVJTkFfVFJVRTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3BhaW50X2NvbnRlbnRz
KEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgY2Fpcm9fdCogY3IsIGNvbnN0IEVpbmFfUmVj
dGFuZ2xlKiBhcmVhKQogewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2
LCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY3IsIEVJ
TkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChhcmVhLCBFSU5B
X0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdiwgZmFsc2Up
OworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjciwgZmFsc2UpOworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChhcmVhLCBmYWxzZSk7CiAgICAgV2ViQ29yZTo6
RnJhbWVWaWV3KiB2aWV3ID0gcHJpdi0+bWFpbkZyYW1lLT52aWV3KCk7Ci0gICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKHZpZXcsIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTCh2aWV3LCBmYWxzZSk7CiAKICAgICBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0KGNyKTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3Qo
YXJlYS0+eCwgYXJlYS0+eSwgYXJlYS0+dywgYXJlYS0+aCk7CkBAIC0yNjg0LDcgKzI2ODQsNyBA
QCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnRfY29udGVudHMoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
KiBwcml2LCBjYWlyb190KiBjciwgY29ucwogICAgIGdyYXBoaWNzQ29udGV4dC5yZXN0b3JlKCk7
CiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiAKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJl
dHVybiB0cnVlOwogfQogCiAKQEAgLTI5MzksOCArMjkzOSw4IEBAIHZvaWQgZXdrX3ZpZXdfcmVz
dG9yZV9zdGF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lKQogICog
YmUgZnJlZWQgYWZ0ZXIgcmV0dXJuaW5nIHRvIHRoaXMgZnVuY3Rpb24uCiAgKgogICogQHBhcmFt
IGV3a1ZpZXcgQ3VycmVudCB2aWV3LgotICogQHBhcmFtIGphdmFzY3JpcHQgQGMgRUlOQV9UUlVF
IGlmIHRoZSBuZXcgd2luZG93IGlzIG9yaWdpbmF0ZWQgZnJvbSBqYXZhc2NyaXB0LAotICogQGMg
RUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqIEBwYXJhbSBqYXZhc2NyaXB0IEBjIHRydWUgaWYgdGhl
IG5ldyB3aW5kb3cgaXMgb3JpZ2luYXRlZCBmcm9tIGphdmFzY3JpcHQsCisgKiBAYyBmYWxzZSBv
dGhlcndpc2UKICAqIEBwYXJhbSB3aWR0aGluZG93X2ZlYXR1cmVzIEZlYXR1cmVzIG9mIHRoZSBu
ZXcgd2luZG93IGJlaW5nIGNyZWF0ZWQuIElmIGl0J3MgQGMKICAqIE5VTEwsIGl0IHdpbGwgYmUg
Y3JlYXRlZCBhIHdpbmRvdyB3aXRoIGRlZmF1bHQgZmVhdHVyZXMuCiAgKgpAQCAtMzAzNSw3ICsz
MDM1LDcgQEAgdm9pZCBld2tfdmlld190b29sYmFyc192aXNpYmxlX3NldChFdmFzX09iamVjdCog
ZXdrVmlldywgRWluYV9Cb29sIHZpc2libGUpCiB2b2lkIGV3a192aWV3X3Rvb2xiYXJzX3Zpc2li
bGVfZ2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wqIHZpc2libGUpCiB7CiAgICAg
REJHKCIlcywgbz0lcCIsIF9fZnVuY19fLCBld2tWaWV3KTsKLSAgICAqdmlzaWJsZSA9IEVJTkFf
RkFMU0U7CisgICAgKnZpc2libGUgPSBmYWxzZTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKGV3a1ZpZXcsICJ0b29sYmFycyx2aXNpYmxlLGdldCIsIHZpc2libGUpOwogfQog
CkBAIC0zMDY4LDcgKzMwNjgsNyBAQCB2b2lkIGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX3Nl
dChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIHZpc2libGUpCiB2b2lkIGV3a192aWV3
X3N0YXR1c2Jhcl92aXNpYmxlX2dldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sKiB2
aXNpYmxlKQogewogICAgIERCRygiJXMsIG89JXAiLCBfX2Z1bmNfXywgZXdrVmlldyk7Ci0gICAg
KnZpc2libGUgPSBFSU5BX0ZBTFNFOworICAgICp2aXNpYmxlID0gZmFsc2U7CiAgICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAic3RhdHVzYmFyLHZpc2libGUsZ2V0
IiwgdmlzaWJsZSk7CiB9CiAKQEAgLTMxMTcsNyArMzExNyw3IEBAIHZvaWQgZXdrX3ZpZXdfc2Ny
b2xsYmFyc192aXNpYmxlX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIHZpc2li
bGUpCiB2b2lkIGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIEVpbmFfQm9vbCogdmlzaWJsZSkKIHsKICAgICBEQkcoIiVzLCBvPSVwIiwgX19mdW5j
X18sIGV3a1ZpZXcpOwotICAgICp2aXNpYmxlID0gRUlOQV9GQUxTRTsKKyAgICAqdmlzaWJsZSA9
IGZhbHNlOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInNj
cm9sbGJhcnMsdmlzaWJsZSxnZXQiLCB2aXNpYmxlKTsKIH0KIApAQCAtMzE1MCw3ICszMTUwLDcg
QEAgdm9pZCBld2tfdmlld19tZW51YmFyX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBFaW5hX0Jvb2wgdmlzaWJsZSkKIHZvaWQgZXdrX3ZpZXdfbWVudWJhcl92aXNpYmxlX2dldChF
dmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sKiB2aXNpYmxlKQogewogICAgIERCRygiJXMs
IG89JXAiLCBfX2Z1bmNfXywgZXdrVmlldyk7Ci0gICAgKnZpc2libGUgPSBFSU5BX0ZBTFNFOwor
ICAgICp2aXNpYmxlID0gZmFsc2U7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bChld2tWaWV3LCAibWVudWJhcix2aXNpYmxlLGdldCIsIHZpc2libGUpOwogfQogCkBAIC0zMjE1
LDExICszMjE1LDExIEBAIHZvaWQgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfYWxlcnQoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uCiBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfcnVuX2phdmFzY3JpcHRfY29uZmlybShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmpl
Y3QqIGZyYW1lLCBjb25zdCBjaGFyKiBtZXNzYWdlKQogewogICAgIERCRygiZXdrVmlldz0lcCBm
cmFtZT0lcCBtZXNzYWdlPSVzIiwgZXdrVmlldywgZnJhbWUsIG1lc3NhZ2UpOwotICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5hcGksIEVJTkFfRkFM
U0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBm
YWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBp
LCBmYWxzZSk7CiAKICAgICBpZiAoIXNtYXJ0RGF0YS0+YXBpLT5ydW5famF2YXNjcmlwdF9jb25m
aXJtKQotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgcmV0dXJuIHNtYXJ0RGF0YS0+YXBpLT5ydW5famF2YXNjcmlwdF9jb25maXJtKHNtYXJ0
RGF0YSwgZnJhbWUsIG1lc3NhZ2UpOwogfQpAQCAtMzIyNywxMSArMzIyNywxMSBAQCBFaW5hX0Jv
b2wgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfY29uZmlybShFdmFzX09iamVjdCogZXdrVmlldywg
RXZhc19PYmplY3QqIGZyYQogRWluYV9Cb29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X3Byb21w
dChFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBt
ZXNzYWdlLCBjb25zdCBjaGFyKiBkZWZhdWx0VmFsdWUsIGNoYXIqKiB2YWx1ZSkKIHsKICAgICBE
QkcoImV3a1ZpZXc9JXAgZnJhbWU9JXAgbWVzc2FnZT0lcyIsIGV3a1ZpZXcsIGZyYW1lLCBtZXNz
YWdlKTsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwg
RUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0
YS0+YXBpLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChzbWFydERhdGEtPmFwaSwgZmFsc2UpOwogCiAgICAgaWYgKCFzbWFydERhdGEtPmFwaS0+cnVu
X2phdmFzY3JpcHRfcHJvbXB0KQotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHNtYXJ0RGF0YS0+YXBpLT5ydW5famF2YXNjcmlw
dF9wcm9tcHQoc21hcnREYXRhLCBmcmFtZSwgbWVzc2FnZSwgZGVmYXVsdFZhbHVlLCB2YWx1ZSk7
CiB9CkBAIC0zMjQwLDIxICszMjQwLDIxIEBAIEVpbmFfQm9vbCBld2tfdmlld19ydW5famF2YXNj
cmlwdF9wcm9tcHQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtCiAgKiBA
aW50ZXJuYWwKICAqIERlbGVnYXRlcyB0byBjbGllbnQgdG8gZGVjaWRlIHdoZXRoZXIgYSBzY3Jp
cHQgbXVzdCBiZSBzdG9wcGVkIGJlY2F1c2UgaXQncwogICogcnVubmluZyBmb3IgdG9vIGxvbmcu
IElmIGNsaWVudCBkb2VzIG5vdCBpbXBsZW1lbnQgaXQsIGl0IGdvZXMgdG8gZGVmYXVsdAotICog
aW1wbGVtZW50YXRpb24sIHdoaWNoIGxvZ3MgYW5kIHJldHVybnMgRUlOQV9GQUxTRS4gQ2xpZW50
IG1heSByZW1vdmUgbG9nIGJ5Ci0gKiBzZXR0aW5nIHRoaXMgZnVuY3Rpb24gMCwgd2hpY2ggd2ls
bCBqdXN0IHJldHVybiBFSU5BX0ZBTFNFLgorICogaW1wbGVtZW50YXRpb24sIHdoaWNoIGxvZ3Mg
YW5kIHJldHVybnMgZmFsc2UuIENsaWVudCBtYXkgcmVtb3ZlIGxvZyBieQorICogc2V0dGluZyB0
aGlzIGZ1bmN0aW9uIDAsIHdoaWNoIHdpbGwganVzdCByZXR1cm4gZmFsc2UuCiAgKgogICogQHBh
cmFtIGV3a1ZpZXcgVmlldy4KICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBzY3JpcHQg
c2hvdWxkIGJlIHN0b3BwZWQ7IEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKiBAcmV0dXJuIEBj
IHRydWUgaWYgc2NyaXB0IHNob3VsZCBiZSBzdG9wcGVkOyBAYyBmYWxzZSBvdGhlcndpc2UKICAq
LwogRWluYV9Cb29sIGV3a192aWV3X3Nob3VsZF9pbnRlcnJ1cHRfamF2YXNjcmlwdChFdmFzX09i
amVjdCogZXdrVmlldykKIHsKICAgICBEQkcoImV3a1ZpZXc9JXAiLCBld2tWaWV3KTsKLSAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7
Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLCBFSU5B
X0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEt
PmFwaSwgZmFsc2UpOwogCiAgICAgaWYgKCFzbWFydERhdGEtPmFwaS0+c2hvdWxkX2ludGVycnVw
dF9qYXZhc2NyaXB0KQotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgcmV0dXJuIHNtYXJ0RGF0YS0+YXBpLT5zaG91bGRfaW50ZXJydXB0X2ph
dmFzY3JpcHQoc21hcnREYXRhKTsKIH0KQEAgLTMyOTUsMTYgKzMyOTUsMTYgQEAgdWludDY0X3Qg
ZXdrX3ZpZXdfZXhjZWVkZWRfZGF0YWJhc2VfcXVvdGEoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2
YXNfT2JqZWN0KiBmcmEKICAqIEBwYXJhbSBhY2NlcHRNSU1FVHlwZXMgTGlzdCBvZiBhY2NlcHRl
ZCBtaW1lIHR5cGVzLiBJdCBpcyBwYXNzZWQgdG8gY2hpbGQgb2JqZWN0cyBhcyBhbiBFaW5hX0xp
c3Qgb2YgY2hhciBwb2ludGVycyB0aGF0IGlzIGZyZWVkIGF1dG9tYXRpY2FsbHkuCiAgKiBAcGFy
YW0gc2VsZWN0ZWRGaWxlbmFtZXMgTGlzdCBvZiBmaWxlcyBzZWxlY3RlZC4KICAqCi0gKiBAcmV0
dXJuIEBFSU5BX0ZBTFNFIGlmIHVzZXIgY2FuY2VsZWQgZmlsZSBzZWxlY3Rpb247IEBFSU5BX1RS
VUUgaWYgY29uZmlybWVkLgorICogQHJldHVybiBAZmFsc2UgaWYgdXNlciBjYW5jZWxlZCBmaWxl
IHNlbGVjdGlvbjsgQHRydWUgaWYgY29uZmlybWVkLgogICovCiBFaW5hX0Jvb2wgZXdrX3ZpZXdf
cnVuX29wZW5fcGFuZWwoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwg
Ym9vbCBhbGxvd3NNdWx0aXBsZUZpbGVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4m
IGFjY2VwdE1JTUVUeXBlcywgRWluYV9MaXN0Kiogc2VsZWN0ZWRGaWxlbmFtZXMpCiB7CiAgICAg
REJHKCJld2tWaWV3PSVwIGZyYW1lPSVwIGFsbG93c19tdWx0aXBsZV9maWxlcz0lZCIsIGV3a1Zp
ZXcsIGZyYW1lLCBhbGxvd3NNdWx0aXBsZUZpbGVzKTsKLSAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmFwaSwgZmFsc2UpOwogCiAg
ICAgaWYgKCFzbWFydERhdGEtPmFwaS0+cnVuX29wZW5fcGFuZWwpCi0gICAgICAgIHJldHVybiBF
SU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAqc2VsZWN0ZWRGaWxlbmFt
ZXMgPSAwOwogCkBAIC0zMzg4LDcgKzMzODgsNyBAQCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6
RnJhbWU+IGV3a192aWV3X2ZyYW1lX2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhcwog
ICAgIGlmICghY29yZUZyYW1lLT5wYWdlKCkgfHwgIWNvcmVGcmFtZS0+dHJlZSgpIHx8ICFjb3Jl
RnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgc21hcnRE
YXRhLT5jaGFuZ2VkLmZyYW1lX3JlY3QgPSBFSU5BX1RSVUU7CisgICAgc21hcnREYXRhLT5jaGFu
Z2VkLmZyYW1lX3JlY3QgPSB0cnVlOwogICAgIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNtYXJ0
RGF0YSk7CiAKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJm
cmFtZSxjcmVhdGVkIiwgZnJhbWUpOwpAQCAtMzQwMiw3ICszNDAyLDcgQEAgV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCog
ZXdrVmlldywgRXYKICAgICAgICAgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1pbWVUeXBl
LnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEsIDApOwotICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5mcmFtZV9yZWN0ID0gRUlO
QV9UUlVFOworICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5mcmFtZV9yZWN0ID0gdHJ1ZTsKICAgICBf
ZXdrX3ZpZXdfc21hcnRfY2hhbmdlZChzbWFydERhdGEpOwogCiAgICAgcmV0dXJuIGV3a19mcmFt
ZV9wbHVnaW5fY3JlYXRlCkBAIC0zNDU3LDExICszNDU3LDExIEBAIHZvaWQgZXdrX3ZpZXdfcG9w
dXBfbmV3KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNs
aWVudCwKIEVpbmFfQm9vbCBld2tfdmlld19wb3B1cF9kZXN0cm95KEV2YXNfT2JqZWN0KiBld2tW
aWV3KQogewogICAgIElORigiZXdrVmlldz0lcCIsIGV3a1ZpZXcpOwotICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwor
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsK
IAogICAgIGlmICghcHJpdi0+cG9wdXAubWVudUNsaWVudCkKLSAgICAgICAgcmV0dXJuIEVJTkFf
RkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2NhbGwoZXdrVmlldywgInBvcHVwLHdpbGxkZWxldGUiLCAmcHJpdi0+cG9wdXAubWVu
dSk7CiAKQEAgLTM0NzQsNyArMzQ3NCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19wb3B1cF9kZXN0
cm95KEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIHByaXYtPnBvcHVwLm1lbnVDbGllbnQtPnBv
cHVwRGlkSGlkZSgpOwogICAgIHByaXYtPnBvcHVwLm1lbnVDbGllbnQgPSAwOwogCi0gICAgcmV0
dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBld2tfdmlld19wb3B1
cF9zZWxlY3RlZF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCBpbmRleCkKQEAgLTM1NTYs
MTggKzM1NTYsMTggQEAgdm9pZCBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrVmlldywgaW50KiB3aWR0aCwgaW4KIAogRWluYV9Cb29sIGV3a192
aWV3X3pvb21fcmFuZ2Vfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBmbG9hdCBtaW5TY2FsZSwg
ZmxvYXQgbWF4U2NhbGUpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogCiAgICAgaWYgKG1heFNjYWxlIDwg
bWluU2NhbGUpIHsKICAgICAgICAgV1JOKCJtaW5fc2NhbGUgaXMgbGFyZ2VyIHRoYW4gbWF4X3Nj
YWxlIik7Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCiAgICAgcHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLm1pblNjYWxlID0gbWluU2Nh
bGU7CiAgICAgcHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLm1heFNjYWxlID0gbWF4U2NhbGU7CiAK
LSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBmbG9hdCBld2tf
dmlld196b29tX3JhbmdlX21pbl9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCkBAIC0z
NTg4LDE4ICszNTg4LDE4IEBAIGZsb2F0IGV3a192aWV3X3pvb21fcmFuZ2VfbWF4X2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrVmlldykKIAogRWluYV9Cb29sIGV3a192aWV3X3VzZXJfc2NhbGFi
bGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgdXNlclNjYWxhYmxlKQogewot
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZB
TFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBF
SU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IHByaXYsIGZhbHNlKTsKIAogICAgIHByaXYtPnNldHRpbmdzLnpvb21SYW5nZS51c2VyU2NhbGFi
bGUgPSB1c2VyU2NhbGFibGU7CiAKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0
cnVlOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9nZXQoY29uc3QgRXZh
c19PYmplY3QqIGV3a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogCiAgICAgcmV0dXJuIHByaXYt
PnNldHRpbmdzLnpvb21SYW5nZS51c2VyU2NhbGFibGU7CiB9CkBAIC0zNjE5LDcgKzM2MTksNyBA
QCB2b2lkIGV3a192aWV3X2RpZF9maXJzdF92aXN1YWxseV9ub25lbXB0eV9sYXlvdXQoRXZhc19P
YmplY3QqIGV3a1ZpZXcpCiAgICAgaWYgKCFwcml2LT5mbGFncy52aWV3Q2xlYXJlZCkgewogICAg
ICAgICBld2tfdmlld19mcmFtZV9tYWluX2NsZWFyZWQoZXdrVmlldyk7CiAgICAgICAgIGV3a192
aWV3X2VuYWJsZV9yZW5kZXIoZXdrVmlldyk7Ci0gICAgICAgIHByaXYtPmZsYWdzLnZpZXdDbGVh
cmVkID0gRUlOQV9UUlVFOworICAgICAgICBwcml2LT5mbGFncy52aWV3Q2xlYXJlZCA9IHRydWU7
CiAgICAgfQogfQogCkBAIC0zNjQ0LDcgKzM2NDQsNyBAQCB2b2lkIGV3a192aWV3X3RyYW5zaXRp
b25fdG9fY29tbWl0ZWRfZm9yX25ld3BhZ2UoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CiAKICAgICBld2tfdmll
d19kaXNhYmxlX3JlbmRlcihld2tWaWV3KTsKLSAgICBwcml2LT5mbGFncy52aWV3Q2xlYXJlZCA9
IEVJTkFfRkFMU0U7CisgICAgcHJpdi0+ZmxhZ3Mudmlld0NsZWFyZWQgPSBmYWxzZTsKIH0KIAog
CkBAIC0zNjU5LDExICszNjU5LDExIEBAIHZvaWQgZXdrX3ZpZXdfdHJhbnNpdGlvbl90b19jb21t
aXRlZF9mb3JfbmV3cGFnZShFdmFzX09iamVjdCogZXdrVmlldykKICAqLwogRWluYV9Cb29sIGV3
a192aWV3X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBF
d2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCogcmVxdWVzdCkKIHsKLSAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9UUlVFKTsKLSAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5hcGksIEVJTkFfVFJVRSk7CisgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIHRydWUpOworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmFwaSwgdHJ1ZSk7CiAK
ICAgICBpZiAoIXNtYXJ0RGF0YS0+YXBpLT5uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbikKLSAg
ICAgICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1
cm4gc21hcnREYXRhLT5hcGktPm5hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKHNtYXJ0RGF0YSwg
cmVxdWVzdCk7CiB9CkBAIC0zNjcyLDEwICszNjcyLDEwIEBAIEVpbmFfQm9vbCBld2tfdmlld19q
c19vYmplY3RfYWRkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfSlNfT2JqZWN0KiBvYmplY3Qs
IGNvCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgaWYgKG9iamVjdC0+
dmlldykgLy8gb2JqZWN0IGhhcyBhbHJlYWR5IGJlZW4gYWRkZWQgdG8gYW5vdGhlciBld2tfdmll
dwotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IG9iamVjdC0+bmFtZSA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKG9iamVjdE5hbWUpOwotICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsK
LSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZB
TFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwg
ZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYs
IGZhbHNlKTsKIAogICAgIEpTQzo6SlNMb2NrIGxvY2soSlNDOjpTaWxlbmNlQXNzZXJ0aW9uc09u
bHkpOwogICAgIFdlYkNvcmU6OkpTRE9NV2luZG93KiB3aW5kb3cgPSB0b0pTRE9NV2luZG93KHBy
aXYtPm1haW5GcmFtZSwgV2ViQ29yZTo6bWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwpAQCAtMzY4
NCw3ICszNjg0LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X2pzX29iamVjdF9hZGQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIEV3a19KU19PYmplY3QqIG9iamVjdCwgY28KIAogICAgIGlmICghd2luZG93
KSB7CiAgICAgICAgIEVSUigiV2FybmluZzogY291bGRuJ3QgZ2V0IHdpbmRvdyBvYmplY3QiKTsK
LSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlY3V0ZVN0YXRlID0gd2luZG93LT5nbG9iYWxFeGVj
KCk7CkBAIC0zNjk1LDkgKzM2OTUsOSBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfanNfb2JqZWN0X2Fk
ZChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0pTX09iamVjdCogb2JqZWN0LCBjbwogCiAgICAg
SlNDOjpQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICB3aW5kb3ctPm1ldGhvZFRhYmxlKCktPnB1
dCh3aW5kb3csIGV4ZWN1dGVTdGF0ZSwgaWQsIHJ1bnRpbWVPYmplY3QsIHNsb3QpOwotICAgIHJl
dHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiAjZWxzZQotICAgIHJldHVybiBFSU5B
X0ZBTFNFOworICAgIHJldHVybiBmYWxzZTsKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKIH0KIApAQCAtMzcwNyw3ICszNzA3LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3By
b3RvY29sX2hhbmRsZXJfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiogcHJv
dG8KICAgICBFV0tfVklFV19QUklWX0dFVChzbWFydERhdGEsIHByaXYpOwogCiAgICAgaWYgKCFo
YW5kbGVyKQotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgcHJpdi0+Y3VzdG9tUmVzb3VyY2VIYW5kbGVyLmZ1bmN0aW9uID0gaGFuZGxlcjsK
ICAgICBwcml2LT5jdXN0b21SZXNvdXJjZUhhbmRsZXIuY29udGV4dCA9IGNvbnRleHQ7CkBAIC0z
Nzg4LDE2ICszNzg4LDE2IEBAIHZvaWQgZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVudHNfc2V0KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIG5lZWRlZCkKIAogRWluYV9Cb29sIGV3a192aWV3X25l
ZWRfdG91Y2hfZXZlbnRzX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIHsKLSAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7
Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9G
QUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEs
IGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2
LCBmYWxzZSk7CiAgICAgcmV0dXJuIHByaXYtPmZsYWdzLm5lZWRUb3VjaEV2ZW50czsKIH0KICNl
bmRpZgogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfbW9kZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IEV3a19WaWV3X01vZGUgdmlld01vZGUpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogCiAgICAgc3dpdGNo
ICh2aWV3TW9kZSkgewogICAgIGNhc2UgRVdLX1ZJRVdfTU9ERV9XSU5ET1dFRDoKQEAgLTM4MTYs
MTAgKzM4MTYsMTAgQEAgRWluYV9Cb29sIGV3a192aWV3X21vZGVfc2V0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBFd2tfVmlld19Nb2RlIHZpZXdNb2RlKQogICAgICAgICBwcml2LT5wYWdlLT5zZXRW
aWV3TW9kZShXZWJDb3JlOjpQYWdlOjpWaWV3TW9kZU1pbmltaXplZCk7CiAgICAgICAgIGJyZWFr
OwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogRXdrX1ZpZXdfTW9kZSBld2tfdmlld19tb2RlX2dldChjb25zdCBFdmFzX09iamVj
dCogZXdrVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19z
aW5nbGUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAKaW5k
ZXggMTg2NjE4ZWYwYjI1OWVmZjE2MmZiYTc4ZWNiNDRkMjA0MDNkOGRlMi4uN2U3MTQ2NDhmYjhk
NjU0ZDBhMWY0ZjU5MmVhN2Y1ZjVhYWMyYzhmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a192aWV3X3NpbmdsZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3
X3NpbmdsZV9zbWFydF9hZGQoRXZhc19PYmplY3QqIGV3a1NpbmdsZSkKIHN0YXRpYyBFdmFzX09i
amVjdCogX2V3a192aWV3X3NpbmdsZV9zbWFydF9iYWNraW5nX3N0b3JlX2FkZChFd2tfVmlld19T
bWFydF9EYXRhKiBzbWFydERhdGEpCiB7CiAgICAgRXZhc19PYmplY3QqIGJzID0gZXZhc19vYmpl
Y3RfaW1hZ2VfYWRkKHNtYXJ0RGF0YS0+YmFzZS5ldmFzKTsKLSAgICBldmFzX29iamVjdF9pbWFn
ZV9hbHBoYV9zZXQoYnMsIEVJTkFfRkFMU0UpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX2FscGhh
X3NldChicywgZmFsc2UpOwogICAgIGV2YXNfb2JqZWN0X2ltYWdlX3Ntb290aF9zY2FsZV9zZXQo
YnMsIHNtYXJ0RGF0YS0+em9vbV93ZWFrX3Ntb290aF9zY2FsZSk7CiAKICAgICByZXR1cm4gYnM7
CkBAIC0zNTQsNyArMzU0LDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xlX3Nt
YXJ0X3Njcm9sbHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWEKIAogICAgIGV2YXNf
b2JqZWN0X2ltYWdlX2RhdGFfc2V0KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgcGl4ZWxzKTsK
IAotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBF
aW5hX0Jvb2wgX2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXBhaW50c19wcm9jZXNzKEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKQEAgLTM3Miw3ICszNzIsNyBAQCBzdGF0aWMgRWluYV9C
b29sIF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVwYWludHNfcHJvY2VzcyhFd2tfVmlld19TbWFy
dF9EYXRhKiBzbQogICAgIGNhaXJvX2Zvcm1hdF90IGZvcm1hdDsKICAgICBjYWlyb190KiBjYWly
bzsKICAgICBzaXplX3QgY291bnQ7Ci0gICAgRWluYV9Cb29sIHJldCA9IEVJTkFfVFJVRTsKKyAg
ICBFaW5hX0Jvb2wgcmV0ID0gdHJ1ZTsKIAogICAgIGlmIChzbWFydERhdGEtPmFuaW1hdGVkX3pv
b20uem9vbS5jdXJyZW50IDwgMC4wMDAwMSkgewogICAgICAgICBFdmFzX09iamVjdCogY2xpcCA9
IGV2YXNfb2JqZWN0X2NsaXBfZ2V0KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSk7CkBAIC00MDMs
NyArNDAzLDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFp
bnRzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSogc20KICAgICBpZiAoc3RhdHVzICE9IENB
SVJPX1NUQVRVU19TVUNDRVNTKSB7CiAgICAgICAgIEVSUigiY291bGQgbm90IGNyZWF0ZSBzdXJm
YWNlIGZyb20gZGF0YSAlZHglZDogJXMiLAogICAgICAgICAgICAgb3csIG9oLCBjYWlyb19zdGF0
dXNfdG9fc3RyaW5nKHN0YXR1cykpOwotICAgICAgICByZXQgPSBFSU5BX0ZBTFNFOworICAgICAg
ICByZXQgPSBmYWxzZTsKICAgICAgICAgZ290byBlcnJvcl9jYWlyb19zdXJmYWNlOwogICAgIH0K
ICAgICBjYWlybyA9IGNhaXJvX2NyZWF0ZShzdXJmYWNlKTsKQEAgLTQxMSwyMSArNDExLDIxIEBA
IHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXBhaW50c19wcm9jZXNz
KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtCiAgICAgaWYgKHN0YXR1cyAhPSBDQUlST19TVEFUVVNf
U1VDQ0VTUykgewogICAgICAgICBFUlIoImNvdWxkIG5vdCBjcmVhdGUgY2Fpcm8gZnJvbSBzdXJm
YWNlICVkeCVkOiAlcyIsCiAgICAgICAgICAgICBvdywgb2gsIGNhaXJvX3N0YXR1c190b19zdHJp
bmcoc3RhdHVzKSk7Ci0gICAgICAgIHJldCA9IEVJTkFfRkFMU0U7CisgICAgICAgIHJldCA9IGZh
bHNlOwogICAgICAgICBnb3RvIGVycm9yX2NhaXJvOwogICAgIH0KIAogICAgIGN0eHQgPSBld2tf
dmlld19wYWludF9jb250ZXh0X25ldyhzbWFydERhdGEtPl9wcml2LCBjYWlybyk7CiAgICAgaWYg
KCFjdHh0KSB7CiAgICAgICAgIEVSUigiY291bGQgbm90IGNyZWF0ZSBwYWludCBjb250ZXh0Iik7
Ci0gICAgICAgIHJldCA9IEVJTkFfRkFMU0U7CisgICAgICAgIHJldCA9IGZhbHNlOwogICAgICAg
ICBnb3RvIGVycm9yX3BhaW50X2NvbnRleHQ7CiAgICAgfQogCiAgICAgdGlsZXIgPSBlaW5hX3Rp
bGVyX25ldyhvdywgb2gpOwogICAgIGlmICghdGlsZXIpIHsKICAgICAgICAgRVJSKCJjb3VsZCBu
b3QgY3JlYXRlIHRpbGVyICVkeCVkIiwgb3csIG9oKTsKLSAgICAgICAgcmV0ID0gRUlOQV9GQUxT
RTsKKyAgICAgICAgcmV0ID0gZmFsc2U7CiAgICAgICAgIGdvdG8gZXJyb3JfdGlsZXI7CiAgICAg
fQogCkBAIC00MzksNyArNDM5LDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xl
X3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSogc20KICAgICBpdHIg
PSBlaW5hX3RpbGVyX2l0ZXJhdG9yX25ldyh0aWxlcik7CiAgICAgaWYgKCFpdHIpIHsKICAgICAg
ICAgRVJSKCJjb3VsZCBub3QgZ2V0IGl0ZXJhdG9yIGZvciB0aWxlciIpOwotICAgICAgICByZXQg
PSBFSU5BX0ZBTFNFOworICAgICAgICByZXQgPSBmYWxzZTsKICAgICAgICAgZ290byBlcnJvcl9p
dGVyYXRvcjsKICAgICB9CiAKQEAgLTUxNCw3ICs1MTQsNyBAQCBzdGF0aWMgRWluYV9Cb29sIF9l
d2tfdmlld19zaW5nbGVfc21hcnRfem9vbV93ZWFrX3NldChFd2tfVmlld19TbWFydF9EYXRhKiBz
bWFydAogICAgIGlmIChjaCA8IHNtYXJ0RGF0YS0+dmlldy5oKQogICAgICAgICBoID0gY2ggKiBz
Y2FsZTsKICAgICBldmFzX29iamVjdF9yZXNpemUoY2xpcCwgdywgaCk7Ci0gICAgcmV0dXJuIEVJ
TkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIHZvaWQgX2V3a192aWV3X3Np
bmdsZV9zbWFydF96b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldChFd2tfVmlld19TbWFydF9EYXRh
KiBzbWFydERhdGEsIEVpbmFfQm9vbCBzbW9vdGhfc2NhbGUpCkBAIC01MzAsNyArNTMwLDcgQEAg
c3RhdGljIHZvaWQgX2V3a192aWV3X3NpbmdsZV9zbWFydF9iZ19jb2xvcl9zZXQoRXdrX1ZpZXdf
U21hcnRfRGF0YSogc21hcnREYXRhLAogRWluYV9Cb29sIGV3a192aWV3X3NpbmdsZV9zbWFydF9z
ZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSkKIHsKICAgICBpZiAoIWV3a192aWV3X2Jhc2Vf
c21hcnRfc2V0KGFwaSkpCi0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAoRUlOQV9VTkxJS0VMWSghX3BhcmVudF9zYy5zYy5hZGQpKQog
ICAgICAgICBld2tfdmlld19iYXNlX3NtYXJ0X3NldCgmX3BhcmVudF9zYyk7CkBAIC01NDUsNyAr
NTQ1LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3NpbmdsZV9zbWFydF9zZXQoRXdrX1ZpZXdfU21h
cnRfQ2xhc3MqIGFwaSkKICAgICBhcGktPnpvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0ID0gX2V3
a192aWV3X3NpbmdsZV9zbWFydF96b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldDsKICAgICBhcGkt
PmJnX2NvbG9yX3NldCA9IF9ld2tfdmlld19zaW5nbGVfc21hcnRfYmdfY29sb3Jfc2V0OwogCi0g
ICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGlubGlu
ZSBFdmFzX1NtYXJ0KiBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X2NsYXNzX25ldyh2b2lkKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAKaW5kZXggMmEwNDVhMDdkYTFjMmYx
ODc4MTRiYTE2ODZlNjZlMWUwNTQyODk2MS4uZWUzMjc3ZmU4ODg0ODc5YjE2NWFlOWE0ZjI4MWE2
NzZiNTk5ODU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3Rp
bGVkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfdGlsZWQuY3BwCkBA
IC03OCw3ICs3OCw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld190aWxlZF9zbWFydF9hZGQoRXZh
c19PYmplY3QqIGV3a1RpbGUpCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKAog
ICAgICAgICBzZC0+bWFpbl9mcmFtZSwgImNvbnRlbnRzLHNpemUsY2hhbmdlZCIsCiAgICAgICAg
IF9ld2tfdmlld190aWxlZF9jb250ZW50c19zaXplX2NoYW5nZWRfY2IsIHNkKTsKLSAgICBld2tf
ZnJhbWVfcGFpbnRfZnVsbF9zZXQoc2QtPm1haW5fZnJhbWUsIEVJTkFfVFJVRSk7CisgICAgZXdr
X2ZyYW1lX3BhaW50X2Z1bGxfc2V0KHNkLT5tYWluX2ZyYW1lLCB0cnVlKTsKIH0KIAogc3RhdGlj
IEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfc2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKQEAgLTEzNCw3ICsxMzQsNyBAQCBzdGF0aWMgRWluYV9C
b29sIF9ld2tfdmlld190aWxlZF9zbWFydF9zY3JvbGxzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRf
RGF0YSogc21hcgogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21h
cnRfcmVwYWludHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCkBAIC0x
NTcsMTMgKzE1NywxMyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9zbWFydF9y
ZXBhaW50c19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYQogICAgIH0KICAgICBld2tf
dGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGVzX3Byb2Nlc3Moc21hcnREYXRhLT5iYWNraW5nX3N0
b3JlKTsKIAotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0
YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X2NvbnRlbnRzX3Jlc2l6ZShFd2tf
Vmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAg
ICBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9jb250ZW50c19yZXNpemUoc21hcnREYXRhLT5iYWNr
aW5nX3N0b3JlLCB3aWR0aCwgaGVpZ2h0KTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJl
dHVybiB0cnVlOwogfQogCiBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9zbWFydF96
b29tX3NldChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGZsb2F0IHpvb20sIEV2YXNf
Q29vcmQgY2VudGVyWCwgRXZhc19Db29yZCBjZW50ZXJZKQpAQCAtMTc0LDcgKzE3NCw3IEBAIHN0
YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3pvb21fc2V0KEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNtYXJ0RGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJnpvb20sIGNlbnRlclgsIGNlbnRlclksICZ4LCAmeSk7CiAgICAgaWYgKCFyKQogICAg
ICAgICByZXR1cm4gcjsKLSAgICBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9kaXNhYmxlZF91cGRh
dGVfc2V0KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgRUlOQV9UUlVFKTsKKyAgICBld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9kaXNhYmxlZF91cGRhdGVfc2V0KHNtYXJ0RGF0YS0+YmFja2luZ19z
dG9yZSwgdHJ1ZSk7CiAgICAgciA9IF9wYXJlbnRfc2Muem9vbV9zZXQoc21hcnREYXRhLCB6b29t
LCBjZW50ZXJYLCBjZW50ZXJZKTsKICAgICBld2tfZnJhbWVfc2Nyb2xsX3NldChzbWFydERhdGEt
Pm1haW5fZnJhbWUsIC14LCAteSk7CiAgICAgZXdrX2ZyYW1lX3Njcm9sbF9zaXplX2dldChzbWFy
dERhdGEtPm1haW5fZnJhbWUsICZ3LCAmaCk7CkBAIC0xODIsNyArMTgyLDcgQEAgc3RhdGljIEVp
bmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfem9vbV9zZXQoRXdrX1ZpZXdfU21hcnRfRGF0
YSogc21hcnREYXRhLAogICAgIGV3a192aWV3X3Njcm9sbHNfcHJvY2VzcyhzbWFydERhdGEpOwog
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGN1bGF0ZShzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUp
OwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGN1bGF0ZShzbWFydERhdGEtPnNlbGYpOwotICAg
IGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2Rpc2FibGVkX3VwZGF0ZV9zZXQoc21hcnREYXRhLT5i
YWNraW5nX3N0b3JlLCBFSU5BX0ZBTFNFKTsKKyAgICBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9k
aXNhYmxlZF91cGRhdGVfc2V0KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgZmFsc2UpOwogICAg
IHJldHVybiByOwogfQogCkBAIC0yMzIsNyArMjMyLDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdr
X3ZpZXdfdGlsZWRfc21hcnRfZW5hYmxlX3JlbmRlcihFd2tfVmlld19TbWFydF9EYXRhKiBzbWFy
dEQKIEVpbmFfQm9vbCBld2tfdmlld190aWxlZF9zbWFydF9zZXQoRXdrX1ZpZXdfU21hcnRfQ2xh
c3MqIGFwaSkKIHsKICAgICBpZiAoIWV3a192aWV3X2Jhc2Vfc21hcnRfc2V0KGFwaSkpCi0gICAg
ICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAo
RUlOQV9VTkxJS0VMWSghX3BhcmVudF9zYy5zYy5hZGQpKQogICAgICAgICBld2tfdmlld19iYXNl
X3NtYXJ0X3NldCgmX3BhcmVudF9zYyk7CkBAIC0yNTIsNyArMjUyLDcgQEAgRWluYV9Cb29sIGV3
a192aWV3X3RpbGVkX3NtYXJ0X3NldChFd2tfVmlld19TbWFydF9DbGFzcyogYXBpKQogICAgIGFw
aS0+cHJlX3JlbmRlcl9jYW5jZWwgPSBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9j
YW5jZWw7CiAgICAgYXBpLT5kaXNhYmxlX3JlbmRlciA9IF9ld2tfdmlld190aWxlZF9zbWFydF9k
aXNhYmxlX3JlbmRlcjsKICAgICBhcGktPmVuYWJsZV9yZW5kZXIgPSBfZXdrX3ZpZXdfdGlsZWRf
c21hcnRfZW5hYmxlX3JlbmRlcjsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0
cnVlOwogfQogCiBzdGF0aWMgaW5saW5lIEV2YXNfU21hcnQqIF9ld2tfdmlld190aWxlZF9zbWFy
dF9jbGFzc19uZXcodm9pZCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113428</attachid>
            <date>2011-11-02 21:25:15 -0700</date>
            <delta_ts>2011-11-02 21:51:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71433-20111103132513.patch</filename>
            <type>text/plain</type>
            <size>177764</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkxMzUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBjMmMxNDZiZWNh
MTFjNDdhNjU1YTc5NjgzMjc0ZTc3OWQ5ZjkzMmJjLi4wNGFhNzJmNzJlYmZiNGI1MWUwODU1YzBh
MmQ5NTE0NWExMWJlZGExIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEt
MTEtMDIgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAg
ICBbRUZMXSBVc2Ugc3RhbmRhcmQgYm9vbGVhbmQgZGF0YSB0eXBlLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE0MzMKKworICAgICAgICBUaGlzIGlz
IGEgZm91cnRoIHN0ZXAgaW4gb3JkZXIgdG8gYmUgbW9yZSBjb21wbGlhbnQgd2l0aCBXZWJLaXQg
Y29kaW5nIHN0eWxlLgorICAgICAgICBVc2Ugc3RhbmRhcmQgYm9vbGVhbiBkYXRhIHR5cGUgaW5z
dGVhZCBvZiBlZmwgYm9vbGVhbiBkYXRhIHR5cGUuIEl0IG1ha2VzIGVmbCBwb3J0CisgICAgICAg
IGlzIG1vcmUgY2xvc2UgdG8gd2Via2l0IGNvZGluZyBzdHlsZS4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRF
ZmwuY3BwOgorICAgICAgICAqIGV3ay9ld2tfY29udGV4dG1lbnUuY3BwOgorICAgICAgICAqIGV3
ay9ld2tfY29va2llcy5jcHA6CisgICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6CisgICAgICAg
ICogZXdrL2V3a19oaXN0b3J5LmNwcDoKKyAgICAgICAgKiBld2svZXdrX2pzLmNwcDoKKyAgICAg
ICAgKiBld2svZXdrX21haW4uY3BwOgorICAgICAgICAqIGV3ay9ld2tfbmV0d29yay5jcHA6Cisg
ICAgICAgICogZXdrL2V3a19wcml2YXRlLmg6CisgICAgICAgICogZXdrL2V3a19wcm90b2NvbF9o
YW5kbGVyLmNwcDoKKyAgICAgICAgKiBld2svZXdrX3Byb3RvY29sX2hhbmRsZXJfc291cC5jcHA6
CisgICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6CisgICAgICAgICogZXdrL2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlLmNwcDoKKyAgICAgICAgKiBld2svZXdrX3RpbGVkX21hdHJpeC5jcHA6
CisgICAgICAgICogZXdrL2V3a190aWxlZF9tb2RlbC5jcHA6CisgICAgICAgICogZXdrL2V3a191
dGlsLmNwcDoKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAqIGV3ay9ld2tf
dmlld19zaW5nbGUuY3BwOgorICAgICAgICAqIGV3ay9ld2tfdmlld190aWxlZC5jcHA6CisKIDIw
MTEtMTEtMDIgIFRvbSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgWFNT
QXVkaXRvciBpcyBzaWxlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCmluZGV4IDU0OTliNDVmNDk5NDBhZjdlOWI3MmU5MDI2
MjA1YjViM2I5MjU3MzQuLjYwOGI4MDhjMDc2YzFkYzRkY2YzYzNhNWMxNDM4OTA5NWQ4M2Y2NDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50RWZsLmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjpzZXRU
b29sYmFyc1Zpc2libGUoYm9vbCB2aXNpYmxlKQogCiBib29sIENocm9tZUNsaWVudEVmbDo6dG9v
bGJhcnNWaXNpYmxlKCkKIHsKLSAgICBFaW5hX0Jvb2wgdmlzaWJsZTsKKyAgICBib29sIHZpc2li
bGU7CiAKICAgICBld2tfdmlld190b29sYmFyc192aXNpYmxlX2dldChtX3ZpZXcsICZ2aXNpYmxl
KTsKICAgICByZXR1cm4gdmlzaWJsZTsKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIENocm9tZUNs
aWVudEVmbDo6c2V0U3RhdHVzYmFyVmlzaWJsZShib29sIHZpc2libGUpCiAKIGJvb2wgQ2hyb21l
Q2xpZW50RWZsOjpzdGF0dXNiYXJWaXNpYmxlKCkKIHsKLSAgICBFaW5hX0Jvb2wgdmlzaWJsZTsK
KyAgICBib29sIHZpc2libGU7CiAKICAgICBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJsZV9nZXQo
bV92aWV3LCAmdmlzaWJsZSk7CiAgICAgcmV0dXJuIHZpc2libGU7CkBAIC0xOTcsNyArMTk3LDcg
QEAgdm9pZCBDaHJvbWVDbGllbnRFZmw6OnNldFNjcm9sbGJhcnNWaXNpYmxlKGJvb2wgdmlzaWJs
ZSkKIAogYm9vbCBDaHJvbWVDbGllbnRFZmw6OnNjcm9sbGJhcnNWaXNpYmxlKCkKIHsKLSAgICBF
aW5hX0Jvb2wgdmlzaWJsZTsKKyAgICBib29sIHZpc2libGU7CiAKICAgICBld2tfdmlld19zY3Jv
bGxiYXJzX3Zpc2libGVfZ2V0KG1fdmlldywgJnZpc2libGUpOwogICAgIHJldHVybiB2aXNpYmxl
OwpAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjpzZXRNZW51YmFyVmlz
aWJsZShib29sIHZpc2libGUpCiAKIGJvb2wgQ2hyb21lQ2xpZW50RWZsOjptZW51YmFyVmlzaWJs
ZSgpCiB7Ci0gICAgRWluYV9Cb29sIHZpc2libGU7CisgICAgYm9vbCB2aXNpYmxlOwogCiAgICAg
ZXdrX3ZpZXdfbWVudWJhcl92aXNpYmxlX2dldChtX3ZpZXcsICZ2aXNpYmxlKTsKICAgICByZXR1
cm4gdmlzaWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAppbmRleCAxNGM4NjNhZDE5NGExYTZjM2VkZjU1
MzNmYzlmNjI4ODZmMTQ1ZjhiLi40NGZiNjMwOTAyN2JlOWFmOGJiOGRkZDE3ZjYxMjhjMWVjOTIx
NjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBGcmFtZUxv
YWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZy
YW1lUG9saWN5RnUKICAgICAvLyBGSVhNRTogZG8gcHJvcGVyIGNoZWNrIGFuZCBvbmx5IHJlc2V0
IGZvcm1zIHdoZW4gb24gUG9saWN5SWdub3JlCiAgICAgY2hhciogdXJsID0gc3RyZHVwKHJlc291
cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBFd2tfRnJhbWVf
UmVzb3VyY2VfUmVxdWVzdCByZXF1ZXN0ID0geyB1cmwsIDAgfTsKLSAgICBFaW5hX0Jvb2wgcmV0
ID0gZXdrX3ZpZXdfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24obV92aWV3LCAmcmVxdWVzdCk7
CisgICAgYm9vbCByZXQgPSBld2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbihtX3Zp
ZXcsICZyZXF1ZXN0KTsKICAgICBmcmVlKHVybCk7CiAKICAgICBQb2xpY3lBY3Rpb24gcG9saWN5
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb250ZXh0bWVudS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2NvbnRleHRtZW51LmNwcAppbmRleCAxZTRiNmZi
N2YzNmUwYjI4MWJkNzYyZWFkN2I2ZjcxOWFmY2Q3ZmQwLi5mMzNmZjExMTQyN2ZmYjE0Mzg5ZDIx
ZjVkN2Y0MzE5OTg4YjVmNWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2NvbnRleHRtZW51LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2NvbnRleHRt
ZW51LmNwcApAQCAtODMsMTIgKzgzLDEyIEBAIHZvaWQgZXdrX2NvbnRleHRfbWVudV91bnJlZihF
d2tfQ29udGV4dF9NZW51KiBtZW51KQogRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfZGVzdHJv
eShFd2tfQ29udGV4dF9NZW51KiBtZW51KQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQot
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChtZW51LCBFSU5BX0ZBTFNFKTsKLSAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobWVudS0+Y29udHJvbGxlciwgRUlOQV9G
QUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG1lbnUsIGZhbHNlKTsK
KyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobWVudS0+Y29udHJvbGxlciwgZmFs
c2UpOwogICAgIG1lbnUtPmNvbnRyb2xsZXItPmNsZWFyQ29udGV4dE1lbnUoKTsKLSAgICByZXR1
cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogI2Vsc2UKLSAgICByZXR1cm4gRUlOQV9G
QUxTRTsKKyAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIH0KIApAQCAtMTIwLDE3ICsxMjAsMTcg
QEAgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3KEV3a19D
b250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUKIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0
ZW1fc2VsZWN0KEV3a19Db250ZXh0X01lbnUqIG1lbnUsIEV3a19Db250ZXh0X01lbnVfSXRlbSog
aXRlbSkKIHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwobWVudSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKGl0ZW0sIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChtZW51LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKGl0ZW0sIGZhbHNlKTsKICAgICBXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24g
PSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbj4oaXRlbS0+YWN0aW9uKTsK
ICAgICBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UeXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpDb250ZXh0TWVudUl0ZW1UeXBlPihpdGVtLT50eXBlKTsKIAogICAgIC8vIERvbid0IGNh
cmUgYWJvdXQgdGl0bGUgYW5kIHN1Ym1lbnUgYXMgdGhleSdyZSBub3QgdXNlZCBhZnRlciB0aGlz
IHBvaW50LgogICAgIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSBjb3JlKHR5cGUsIGFjdGlvbiwg
V1RGOjpTdHJpbmcoKSk7CiAgICAgbWVudS0+Y29udHJvbGxlci0+Y29udGV4dE1lbnVJdGVtU2Vs
ZWN0ZWQoJmNvcmUpOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiAj
ZWxzZQotICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgog
fQogCkBAIC0xNTAsOSArMTUwLDkgQEAgRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgZXdrX2Nv
bnRleHRfbWVudV9pdGVtX3R5cGVfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnUKIAogRWluYV9C
b29sIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0q
IGl0ZW0sIEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUpCiB7Ci0gICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7CiAgICAgaXRlbS0+dHlwZSA9IHR5cGU7
Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRXdrX0NvbnRl
eHRfTWVudV9BY3Rpb24gZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlvbl9nZXQoY29uc3QgRXdr
X0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQpAQCAtMTYzLDkgKzE2Myw5IEBAIEV3a19Db250ZXh0
X01lbnVfQWN0aW9uIGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fZ2V0KGNvbnN0IEV3a19D
b250ZXh0X01lbnVfCiAKIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX3Nl
dChFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0sIEV3a19Db250ZXh0X01lbnVfQWN0aW9uIGFj
dGlvbikKIHsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgRUlOQV9G
QUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIGZhbHNlKTsK
ICAgICBpdGVtLT5hY3Rpb24gPSBhY3Rpb247Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogY29uc3QgY2hhciogZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxl
X2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0pCkBAIC0xODMsMjggKzE4Mywy
OCBAQCBjb25zdCBjaGFyKiBld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfc2V0KEV3a19Db250
ZXh0X01lbnVfSXRlbSogaXRlbSwgY29uc3QgYwogCiBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVu
dV9pdGVtX2NoZWNrZWRfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKIHsK
LSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgRUlOQV9GQUxTRSk7Cisg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIGZhbHNlKTsKICAgICByZXR1
cm4gaXRlbS0+Y2hlY2tlZDsKIH0KIAogRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9j
aGVja2VkX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0sIEVpbmFfQm9vbCBjaGVja2Vk
KQogewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBFSU5BX0ZBTFNF
KTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOwogICAg
IGl0ZW0tPmNoZWNrZWQgPSBjaGVja2VkOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9n
ZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQogewotICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOwogICAgIHJldHVybiBpdGVtLT5lbmFibGVk
OwogfQogCiBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRfc2V0KEV3a19D
b250ZXh0X01lbnVfSXRlbSogaXRlbSwgRWluYV9Cb29sIGVuYWJsZWQpCiB7Ci0gICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7CiAgICAgaXRlbS0+ZW5hYmxlZCA9
IGVuYWJsZWQ7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
CkBAIC0yNDksMTkgKzI0OSwxOSBAQCBFd2tfQ29udGV4dF9NZW51KiBld2tfY29udGV4dF9tZW51
X25ldyhFdmFzX09iamVjdCogdmlldywgV2ViQ29yZTo6Q29udGV4dE1lbnVDbwogICogRnJlZXMg
dGhlIGNvbnRleHQgbWVudS4KICAqCiAgKiBAcGFyYW0gbWVudSB0aGUgdmlldyBvYmplY3QKLSAq
IEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFp
bHVyZQorICogQHJldHVybiBAYyB0cnVlIG9uIHN1Y2Nlc3MsIG9yIEBjIGZhbHNlIG9uIGZhaWx1
cmUKICAqCiAgKiBAbm90ZSBlbWl0cyBhIHNpZ25hbCAiY29udGV4dG1lbnUsZnJlZSIKICAqCiAg
KiBAc2VlIGV3a19jb250ZXh0X21lbnVfdW5yZWYKICAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV9k
ZXN0cm95CiAgKi8KLUVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2ZyZWUoRXdrX0NvbnRleHRf
TWVudSogbWVudSkKK2Jvb2wgZXdrX2NvbnRleHRfbWVudV9mcmVlKEV3a19Db250ZXh0X01lbnUq
IG1lbnUpCiB7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG1lbnUsIEVJTkFf
RkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChtZW51LCBmYWxzZSk7
CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtZW51LT52aWV3LCAiY29udGV4
dG1lbnUsZnJlZSIsIG1lbnUpOwogICAgIGV3a19jb250ZXh0X21lbnVfdW5yZWYobWVudSk7Ci0g
ICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogLyoqCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Nvb2tpZXMuY3BwIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19jb29raWVzLmNwcAppbmRleCBmZjZmOTc0NTQ4OTM3NTU4MGUzZWVlOGEx
ZWQ5ZTM1Y2YyMWZjZjE2Li5lZWQ1ZTk3NjM0M2IwNzU3MzRlZGIzMGVjZWQyYzhlMzg0MmMzY2I2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Nvb2tpZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29va2llcy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAg
RWluYV9Cb29sIGV3a19jb29raWVzX2ZpbGVfc2V0KGNvbnN0IGNoYXIqIGZpbGVuYW1lKQogICAg
ICAgICBjb29raWVKYXIgPSBzb3VwX2Nvb2tpZV9qYXJfbmV3KCk7CiAKICAgICBpZiAoIWNvb2tp
ZUphcikKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIHNvdXBfY29va2llX2phcl9zZXRfYWNjZXB0X3BvbGljeShjb29raWVKYXIsIFNPVVBf
Q09PS0lFX0pBUl9BQ0NFUFRfTk9fVEhJUkRfUEFSVFkpOwogCkBAIC01OCw5ICs1OCw5IEBAIEVp
bmFfQm9vbCBld2tfY29va2llc19maWxlX3NldChjb25zdCBjaGFyKiBmaWxlbmFtZSkKICAgICBX
ZWJDb3JlOjpzZXREZWZhdWx0Q29va2llSmFyKGNvb2tpZUphcik7CiAgICAgc291cF9zZXNzaW9u
X2FkZF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfU0VTU0lPTl9GRUFUVVJFKGNvb2tpZUphcikpOwog
Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCi0gICAgcmV0
dXJuIEVJTkFfRkFMU0U7CisgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19mcmFtZS5jcHAKaW5kZXggNjdkZTNiZjZkNjUyMjcxMDUxYmY3MGJlZTViYmQ4
ZjUwOGI2MTJjZS4uZDYyZmRlZWNhNzRhYzljNTgwY2UwN2Q5OGZiNzJhNTA1YjViNzMxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKQEAgLTE0MiwxOCArMTQyLDE4IEBAIHN0YXRp
YyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCogX2V3a19mcmFtZV9sb2FkZXJfZWZsX2dl
dChjb25zdCBXZWJDb3JlOjpGCiAKIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a19mcmFtZV9jaGlsZHJl
bl9pdGVyYXRvcl9uZXh0KEVpbmFfSXRlcmF0b3JfRXdrX0ZyYW1lKiBpdGVyYXRvciwgRXZhc19P
YmplY3QqKiBkYXRhKQogewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGl0ZXJhdG9y
LT5vYmplY3QsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIEVJTkFfRkFMU0UpOworICAgIEVXS19GUkFN
RV9TRF9HRVRfT1JfUkVUVVJOKGl0ZXJhdG9yLT5vYmplY3QsIHNtYXJ0RGF0YSwgZmFsc2UpOwor
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxz
ZSk7CiAKICAgICBXZWJDb3JlOjpGcmFtZVRyZWUqIHRyZWUgPSBzbWFydERhdGEtPmZyYW1lLT50
cmVlKCk7IC8vIGNoZWNrIGlmIGl0J3Mgc3RpbGwgdmFsaWQKLSAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwodHJlZSwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHRyZWUsIGZhbHNlKTsKIAogICAgIGlmIChpdGVyYXRvci0+Y3VycmVudElu
ZGV4IDwgdHJlZS0+Y2hpbGRDb3VudCgpKSB7CiAgICAgICAgICpkYXRhID0gRVdLUHJpdmF0ZTo6
a2l0RnJhbWUodHJlZS0+Y2hpbGQoaXRlcmF0b3ItPmN1cnJlbnRJbmRleCsrKSk7Ci0gICAgICAg
IHJldHVybiBFSU5BX1RSVUU7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHJl
dHVybiBFSU5BX0ZBTFNFOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogc3RhdGljIEV2YXNfT2Jq
ZWN0KiBfZXdrX2ZyYW1lX2NoaWxkcmVuX2l0ZXJhdG9yX2dldF9jb250YWluZXIoRWluYV9JdGVy
YXRvcl9Fd2tfRnJhbWUqIGl0ZXJhdG9yKQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyB2b2lk
IF9ld2tfZnJhbWVfc21hcnRfYWRkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKICAgICBzbWFydERh
dGEtPnNlbGYgPSBld2tGcmFtZTsKIAogICAgIF9wYXJlbnRfc2MuYWRkKGV3a0ZyYW1lKTsKLSAg
ICBldmFzX29iamVjdF9zdGF0aWNfY2xpcF9zZXQoc21hcnREYXRhLT5iYXNlLmNsaXBwZXIsIEVJ
TkFfRkFMU0UpOworICAgIGV2YXNfb2JqZWN0X3N0YXRpY19jbGlwX3NldChzbWFydERhdGEtPmJh
c2UuY2xpcHBlciwgZmFsc2UpOwogICAgIGV2YXNfb2JqZWN0X21vdmUoc21hcnREYXRhLT5iYXNl
LmNsaXBwZXIsIDAsIDApOwogICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShzbWFydERhdGEtPmJhc2Uu
Y2xpcHBlciwgMCwgMCk7CiAKQEAgLTMxMCwxMiArMzEwLDEyIEBAIEV2YXNfT2JqZWN0KiBld2tf
ZnJhbWVfY2hpbGRfZmluZChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIG5hbWUp
CiAKIEVpbmFfQm9vbCBld2tfZnJhbWVfdXJpX3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNv
bnN0IGNoYXIqIHVyaSkKIHsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFt
ZSwgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVS
Tihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgV2ViQ29yZTo6S1VSTCBrdXJsKFdl
YkNvcmU6OktVUkwoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KHVyaSkpOwogICAgIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXEoa3VybCk7CiAgICAgV2ViQ29yZTo6RnJhbWVMb2FkZXIqIGxv
YWRlciA9IHNtYXJ0RGF0YS0+ZnJhbWUtPmxvYWRlcigpOwogICAgIGxvYWRlci0+bG9hZChyZXEs
IGZhbHNlKTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBj
b25zdCBjaGFyKiBld2tfZnJhbWVfdXJpX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUp
CkBAIC0zNTUsMTQgKzM1NSwxNCBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXZhc19Db29yZCogdwogICAgICAgICAq
d2lkdGggPSAwOwogICAgIGlmIChoZWlnaHQpCiAgICAgICAgICpoZWlnaHQgPSAwOwotICAgIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIEVJTkFfRkFMU0Up
OworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZh
bHNlKTsKICAgICBpZiAoIXNtYXJ0RGF0YS0+ZnJhbWUgfHwgIXNtYXJ0RGF0YS0+ZnJhbWUtPnZp
ZXcoKSkKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAod2lkdGgpCiAgICAgICAgICp3aWR0aCA9IHNtYXJ0RGF0YS0+ZnJhbWUtPnZpZXco
KS0+Y29udGVudHNXaWR0aCgpOwogICAgIGlmIChoZWlnaHQpCiAgICAgICAgICpoZWlnaHQgPSBz
bWFydERhdGEtPmZyYW1lLT52aWV3KCktPmNvbnRlbnRzSGVpZ2h0KCk7Ci0gICAgcmV0dXJuIEVJ
TkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX2Zy
YW1lX2NvbnRlbnRzX3NldF9pbnRlcm5hbChFd2tfRnJhbWVfU21hcnRfRGF0YSogc21hcnREYXRh
LCBjb25zdCBjaGFyKiBjb250ZW50cywgc2l6ZV90IGNvbnRlbnRzU2l6ZSwgY29uc3QgY2hhciog
bWltZVR5cGUsIGNvbnN0IGNoYXIqIGVuY29kaW5nLCBjb25zdCBjaGFyKiBiYXNlVXJpLCBjb25z
dCBjaGFyKiB1bnJlYWNoYWJsZVVyaSkKQEAgLTM5MywyNCArMzkzLDI0IEBAIHN0YXRpYyBFaW5h
X0Jvb2wgX2V3a19mcmFtZV9jb250ZW50c19zZXRfaW50ZXJuYWwoRXdrX0ZyYW1lX1NtYXJ0X0Rh
dGEqIHNtYXJ0RGF0CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoYmFzZUtV
UkwpOwogCiAgICAgc21hcnREYXRhLT5mcmFtZS0+bG9hZGVyKCktPmxvYWQocmVxdWVzdCwgc3Vi
c3RpdHV0ZURhdGEsIGZhbHNlKTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0
cnVlOwogfQogCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2NvbnRlbnRzX3NldChFdmFzX09iamVjdCog
ZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGNvbnRlbnRzLCBzaXplX3QgY29udGVudHNTaXplLCBjb25z
dCBjaGFyKiBtaW1lVHlwZSwgY29uc3QgY2hhciogZW5jb2RpbmcsIGNvbnN0IGNoYXIqIGJhc2VV
cmkpCiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0
YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fRkFMU0VfUkVUVVJOX1ZBTChzbWFy
dERhdGEtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoY29udGVudHMsIEVJTkFfRkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVU
VVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9GQUxT
RV9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoY29udGVudHMsIGZhbHNlKTsKICAgICByZXR1cm4gX2V3a19mcmFt
ZV9jb250ZW50c19zZXRfaW50ZXJuYWwKICAgICAgICAgICAgICAgIChzbWFydERhdGEsIGNvbnRl
bnRzLCBjb250ZW50c1NpemUsIG1pbWVUeXBlLCBlbmNvZGluZywgYmFzZVVyaSwgMCk7CiB9CiAK
IEVpbmFfQm9vbCBld2tfZnJhbWVfY29udGVudHNfYWx0ZXJuYXRlX3NldChFdmFzX09iamVjdCog
ZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGNvbnRlbnRzLCBzaXplX3QgY29udGVudHNTaXplLCBjb25z
dCBjaGFyKiBtaW1lVHlwZSwgY29uc3QgY2hhciogZW5jb2RpbmcsIGNvbnN0IGNoYXIqIGJhc2VV
cmksIGNvbnN0IGNoYXIqIHVucmVhY2hhYmxlVXJpKQogewotICAgIEVXS19GUkFNRV9TRF9HRVRf
T1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FG
RVRZX09OX0ZBTFNFX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgRUlOQV9GQUxTRSk7Ci0g
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvbnRlbnRzLCBFSU5BX0ZBTFNFKTsK
LSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodW5yZWFjaGFibGVVcmksIEVJTkFf
RkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERh
dGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9GQUxTRV9SRVRVUk5fVkFMKHNtYXJ0RGF0
YS0+ZnJhbWUsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY29u
dGVudHMsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodW5yZWFj
aGFibGVVcmksIGZhbHNlKTsKICAgICByZXR1cm4gX2V3a19mcmFtZV9jb250ZW50c19zZXRfaW50
ZXJuYWwKICAgICAgICAgICAgICAgIChzbWFydERhdGEsIGNvbnRlbnRzLCBjb250ZW50c1NpemUs
IG1pbWVUeXBlLCBlbmNvZGluZywgYmFzZVVyaSwKICAgICAgICAgICAgICAgIHVucmVhY2hhYmxl
VXJpKTsKQEAgLTQxOCwzMCArNDE4LDMwIEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfY29udGVudHNf
YWx0ZXJuYXRlX3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGNvCiAKIEVp
bmFfQm9vbCBld2tfZnJhbWVfc2NyaXB0X2V4ZWN1dGUoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBj
b25zdCBjaGFyKiBzY3JpcHQpCiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdr
RnJhbWUsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fRkFMU0Vf
UkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoc2NyaXB0LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVf
U0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRUlOQV9T
QUZFVFlfT05fRkFMU0VfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNjcmlwdCwgZmFsc2UpOwogICAgIHNtYXJ0
RGF0YS0+ZnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KFdURjo6U3RyaW5nOjpmcm9tVVRG
OChzY3JpcHQpLCB0cnVlKTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVl
OwogfQogCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2VkaXRhYmxlX2dldChjb25zdCBFdmFzX09iamVj
dCogZXdrRnJhbWUpCiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUs
IHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIEVJTkFfRkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRf
T1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOwogICAgIHJldHVybiBz
bWFydERhdGEtPmVkaXRhYmxlOwogfQogCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2VkaXRhYmxlX3Nl
dChFdmFzX09iamVjdCogZXdrRnJhbWUsIEVpbmFfQm9vbCBlZGl0YWJsZSkKIHsKLSAgICBFV0tf
RlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsK
LSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgRUlO
QV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0
RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERh
dGEtPmZyYW1lLCBmYWxzZSk7CiAgICAgZWRpdGFibGUgPSAhIWVkaXRhYmxlOwogICAgIGlmIChz
bWFydERhdGEtPmVkaXRhYmxlID09IGVkaXRhYmxlKQotICAgICAgICByZXR1cm4gRUlOQV9UUlVF
OworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoZWRpdGFibGUpCiAgICAgICAgIHNtYXJ0
RGF0YS0+ZnJhbWUtPmVkaXRvcigpLT5hcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKTsK
LSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBjaGFyKiBld2tf
ZnJhbWVfc2VsZWN0aW9uX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpCkBAIC00NTYs
OSArNDU2LDkgQEAgY2hhciogZXdrX2ZyYW1lX3NlbGVjdGlvbl9nZXQoY29uc3QgRXZhc19PYmpl
Y3QqIGV3a0ZyYW1lKQogCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRfc2VhcmNoKGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogdGV4dCwgRWluYV9Cb29sIGNhc2VTZW5z
aXRpdmUsIEVpbmFfQm9vbCBmb3J3YXJkLCBFaW5hX0Jvb2wgd3JhcCkKIHsKLSAgICBFV0tfRlJB
TUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgRUlOQV9G
QUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHRleHQsIEVJTkFfRkFM
U0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEs
IGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5m
cmFtZSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh0ZXh0LCBm
YWxzZSk7CiAKICAgICByZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCktPmZpbmRTdHJp
bmcoV1RGOjpTdHJpbmc6OmZyb21VVEY4KHRleHQpLCBmb3J3YXJkLCBjYXNlU2Vuc2l0aXZlLCB3
cmFwLCB0cnVlKTsKIH0KQEAgLTQ2Niw3ICs0NjYsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3Rl
eHRfc2VhcmNoKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogdGV4dCwg
RQogdW5zaWduZWQgaW50IGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbWFyayhFdmFzX09iamVjdCog
ZXdrRnJhbWUsIGNvbnN0IGNoYXIqIHN0cmluZywgRWluYV9Cb29sIGNhc2VTZW5zaXRpdmUsIEVp
bmFfQm9vbCBoaWdobGlnaHQsIHVuc2lnbmVkIGludCBsaW1pdCkKIHsKICAgICBFV0tfRlJBTUVf
U0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCAwKTsKLSAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgRUlOQV9GQUxTRSk7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsK
ICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc3RyaW5nLCAwKTsKIAogICAgIHNt
YXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLT5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdo
dGVkKGhpZ2hsaWdodCk7CkBAIC00NzUsMjUgKzQ3NSwyNSBAQCB1bnNpZ25lZCBpbnQgZXdrX2Zy
YW1lX3RleHRfbWF0Y2hlc19tYXJrKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciog
c3RyaQogCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc191bm1hcmtfYWxsKEV2YXNf
T2JqZWN0KiBld2tGcmFtZSkKIHsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tG
cmFtZSwgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NE
X0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7CiAKICAgICBz
bWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPnJlbW92ZU1hcmtlcnMoV2Vi
Q29yZTo6RG9jdW1lbnRNYXJrZXI6OlRleHRNYXRjaCk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNf
aGlnaGxpZ2h0X3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIEVpbmFfQm9vbCBoaWdobGlnaHQp
CiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwg
RUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0
YS0+ZnJhbWUsIEVJTkFfRkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3
a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOwogICAgIHNtYXJ0RGF0YS0+ZnJhbWUtPmVk
aXRvcigpLT5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKGhpZ2hsaWdodCk7Ci0g
ICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3
a19mcmFtZV90ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X2dldChjb25zdCBFdmFzX09iamVjdCogZXdr
RnJhbWUpCiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0
RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNt
YXJ0RGF0YS0+ZnJhbWUsIEVJTkFfRkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVU
VVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOwogICAgIHJldHVybiBzbWFydERh
dGEtPmZyYW1lLT5lZGl0b3IoKS0+bWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCgpOwog
fQogCkBAIC01MTUsOCArNTE1LDggQEAgc3RhdGljIGJvb2wgX2V3a19mcmFtZV9yZWN0X2lzX25l
Z2F0aXZlX3ZhbHVlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCiAKIEVpbmFfQm9vbCBl
d2tfZnJhbWVfdGV4dF9tYXRjaGVzX250aF9wb3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tG
cmFtZSwgc2l6ZV90IG51bWJlciwgaW50KiB4LCBpbnQqIHkpCiB7Ci0gICAgRVdLX0ZSQU1FX1NE
X0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIEVJTkFfRkFMU0Up
OworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZh
bHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFt
ZSwgZmFsc2UpOwogCiAgICAgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IGludFJlY3RzID0gc21h
cnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5yZW5kZXJlZFJlY3RzRm9yTWFy
a2VycyhXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6VGV4dE1hdGNoKTsKIApAQCAtNTI0LDcgKzUy
NCw3IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX250aF9wb3NfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgc2l6ZV90CiAgICAgc3RkOjpyZW1vdmVfaWYoaW50UmVj
dHMuYmVnaW4oKSwgaW50UmVjdHMuZW5kKCksIF9ld2tfZnJhbWVfcmVjdF9pc19uZWdhdGl2ZV92
YWx1ZSk7CiAKICAgICBpZiAoaW50UmVjdHMuaXNFbXB0eSgpIHx8IG51bWJlciA+IGludFJlY3Rz
LnNpemUoKSkKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIHN0ZDo6c29ydChpbnRSZWN0cy5iZWdpbigpLCBpbnRSZWN0cy5lbmQoKSwgX2V3
a19mcmFtZV9yZWN0X2NtcF9sZXNzX3RoYW4pOwogCkBAIC01MzIsMzEgKzUzMiwzMSBAQCBFaW5h
X0Jvb2wgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19udGhfcG9zX2dldChjb25zdCBFdmFzX09iamVj
dCogZXdrRnJhbWUsIHNpemVfdAogICAgICAgICAqeCA9IGludFJlY3RzW251bWJlciAtIDFdLngo
KTsKICAgICBpZiAoeSkKICAgICAgICAgKnkgPSBpbnRSZWN0c1tudW1iZXIgLSAxXS55KCk7Ci0g
ICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3
a19mcmFtZV9zdG9wKEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKIHsKLSAgICBFV0tfRlJBTUVfU0Rf
R0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgRUlOQV9GQUxTRSk7
CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFs
c2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1l
LCBmYWxzZSk7CiAgICAgc21hcnREYXRhLT5mcmFtZS0+bG9hZGVyKCktPnN0b3BBbGxMb2FkZXJz
KCk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9C
b29sIGV3a19mcmFtZV9yZWxvYWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQogewotICAgIEVXS19G
UkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwot
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBFSU5B
X0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnRE
YXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0
YS0+ZnJhbWUsIGZhbHNlKTsKICAgICBzbWFydERhdGEtPmZyYW1lLT5sb2FkZXIoKS0+cmVsb2Fk
KCk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9C
b29sIGV3a19mcmFtZV9yZWxvYWRfZnVsbChFdmFzX09iamVjdCogZXdrRnJhbWUpCiB7Ci0gICAg
RVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgRUlOQV9GQUxT
RSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUs
IEVJTkFfRkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBz
bWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21h
cnREYXRhLT5mcmFtZSwgZmFsc2UpOwogICAgIHNtYXJ0RGF0YS0+ZnJhbWUtPmxvYWRlcigpLT5y
ZWxvYWQodHJ1ZSk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogRWluYV9Cb29sIGV3a19mcmFtZV9iYWNrKEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKQEAgLTU3
MSwxMyArNTcxLDEzIEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZm9yd2FyZChFdmFzX09iamVjdCog
ZXdrRnJhbWUpCiAKIEVpbmFfQm9vbCBld2tfZnJhbWVfbmF2aWdhdGUoRXZhc19PYmplY3QqIGV3
a0ZyYW1lLCBpbnQgc3RlcHMpCiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdr
RnJhbWUsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIEVJTkFfRkFMU0UpOworICAgIEVXS19GUkFNRV9T
RF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOwogICAgIFdl
YkNvcmU6OlBhZ2UqIHBhZ2UgPSBzbWFydERhdGEtPmZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCFw
YWdlLT5jYW5Hb0JhY2tPckZvcndhcmQoc3RlcHMpKQotICAgICAgICByZXR1cm4gRUlOQV9GQUxT
RTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHBhZ2UtPmdvQmFja09yRm9yd2FyZChzdGVw
cyk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9C
b29sIGV3a19mcmFtZV9iYWNrX3Bvc3NpYmxlKEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKQEAgLTU5
Miw4ICs1OTIsOCBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZvcndhcmRfcG9zc2libGUoRXZhc19P
YmplY3QqIGV3a0ZyYW1lKQogCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX25hdmlnYXRlX3Bvc3NpYmxl
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgaW50IHN0ZXBzKQogewotICAgIEVXS19GUkFNRV9TRF9H
RVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBFSU5BX0ZBTFNFKTsK
KyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxz
ZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUs
IGZhbHNlKTsKICAgICBXZWJDb3JlOjpQYWdlKiBwYWdlID0gc21hcnREYXRhLT5mcmFtZS0+cGFn
ZSgpOwogICAgIHJldHVybiBwYWdlLT5jYW5Hb0JhY2tPckZvcndhcmQoc3RlcHMpOwogfQpAQCAt
NjA3LDEwICs2MDcsMTAgQEAgZmxvYXQgZXdrX2ZyYW1lX3BhZ2Vfem9vbV9nZXQoY29uc3QgRXZh
c19PYmplY3QqIGV3a0ZyYW1lKQogCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3BhZ2Vfem9vbV9zZXQo
RXZhc19PYmplY3QqIGV3a0ZyYW1lLCBmbG9hdCBwYWdlWm9vbUZhY3RvcikKIHsKLSAgICBFV0tf
RlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsK
LSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgRUlO
QV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0
RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERh
dGEtPmZyYW1lLCBmYWxzZSk7CiAgICAgc21hcnREYXRhLT5mcmFtZS0+c2V0UGFnZVpvb21GYWN0
b3IocGFnZVpvb21GYWN0b3IpOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIGZsb2F0IGV3a19mcmFtZV90ZXh0X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBld2tGcmFtZSkKQEAgLTYyMiwxMCArNjIyLDEwIEBAIGZsb2F0IGV3a19mcmFtZV90ZXh0X3pv
b21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKIAogRWluYV9Cb29sIGV3a19mcmFt
ZV90ZXh0X3pvb21fc2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgZmxvYXQgdGV4dFpvb21GYWN0
b3IpCiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0
YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0
RGF0YS0+ZnJhbWUsIEVJTkFfRkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJO
KGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOwogICAgIHNtYXJ0RGF0YS0+ZnJhbWUt
PnNldFRleHRab29tRmFjdG9yKHRleHRab29tRmFjdG9yKTsKLSAgICByZXR1cm4gRUlOQV9UUlVF
OworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIGV3a19mcmFtZV9oaXRfdGVzdF9mcmVlKEV3
a19IaXRfVGVzdCogaGl0VGVzdCkKQEAgLTcxNiwyMSArNzE2LDIxIEBAIEV3a19IaXRfVGVzdCog
ZXdrX2ZyYW1lX2hpdF90ZXN0X25ldyhjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIGludCB4
LCBpbnQgeSkKIEVpbmFfQm9vbAogZXdrX2ZyYW1lX3Njcm9sbF9hZGQoRXZhc19PYmplY3QqIGV3
a0ZyYW1lLCBpbnQgZGVsdGFYLCBpbnQgZGVsdGFZKQogewotICAgIEVXS19GUkFNRV9TRF9HRVRf
T1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKLSAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZS0+dmlldygp
LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwg
c21hcnREYXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNt
YXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoc21hcnREYXRhLT5mcmFtZS0+dmlldygpLCBmYWxzZSk7CiAgICAgc21hcnREYXRhLT5mcmFt
ZS0+dmlldygpLT5zY3JvbGxCeShXZWJDb3JlOjpJbnRTaXplKGRlbHRhWCwgZGVsdGFZKSk7Ci0g
ICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sCiBl
d2tfZnJhbWVfc2Nyb2xsX3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIGludCB4LCBpbnQgeSkK
IHsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBF
SU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRh
LT5mcmFtZSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHNtYXJ0RGF0YS0+ZnJhbWUtPnZpZXcoKSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NE
X0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUtPnZpZXcoKSwgZmFs
c2UpOwogICAgIHNtYXJ0RGF0YS0+ZnJhbWUtPnZpZXcoKS0+c2V0U2Nyb2xsUG9zaXRpb24oV2Vi
Q29yZTo6SW50UG9pbnQoeCwgeSkpOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIEVpbmFfQm9vbApAQCAtNzQwLDE1ICs3NDAsMTUgQEAgZXdrX2ZyYW1lX3Nj
cm9sbF9zaXplX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIGludCogd2lkdGgsIGlu
dCogaGVpZ2h0KQogICAgICAgICAqd2lkdGggPSAwOwogICAgIGlmIChoZWlnaHQpCiAgICAgICAg
ICpoZWlnaHQgPSAwOwotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBz
bWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChzbWFydERhdGEtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZS0+dmlldygpLCBFSU5BX0ZBTFNFKTsKKyAgICBF
V0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7Cisg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNl
KTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZS0+
dmlldygpLCBmYWxzZSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQgPSBzbWFydERhdGEt
PmZyYW1lLT52aWV3KCktPm1heGltdW1TY3JvbGxQb3NpdGlvbigpOwogICAgIGlmICh3aWR0aCkK
ICAgICAgICAgKndpZHRoID0gcG9pbnQueCgpOwogICAgIGlmIChoZWlnaHQpCiAgICAgICAgICpo
ZWlnaHQgPSBwb2ludC55KCk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogRWluYV9Cb29sCkBAIC03NTgsMTUgKzc1OCwxNSBAQCBld2tfZnJhbWVfc2Nyb2xs
X3Bvc19nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBpbnQqIHgsIGludCogeSkKICAg
ICAgICAgKnggPSAwOwogICAgIGlmICh5KQogICAgICAgICAqeSA9IDA7Ci0gICAgRVdLX0ZSQU1F
X1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIEVJTkFfRkFM
U0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1l
LT52aWV3KCksIEVJTkFfRkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3
a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLT52aWV3KCksIGZhbHNlKTsKICAgICBXZWJDb3Jl
OjpJbnRQb2ludCBwb3MgPSBzbWFydERhdGEtPmZyYW1lLT52aWV3KCktPnNjcm9sbFBvc2l0aW9u
KCk7CiAgICAgaWYgKHgpCiAgICAgICAgICp4ID0gcG9zLngoKTsKICAgICBpZiAoeSkKICAgICAg
ICAgKnkgPSBwb3MueSgpOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKIEVpbmFfQm9vbCBld2tfZnJhbWVfdmlzaWJsZV9jb250ZW50X2dlb21ldHJ5X2dldChj
b25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIEVpbmFfQm9vbCBpbmNsdWRlU2Nyb2xsYmFycywg
aW50KiB4LCBpbnQqIHksIGludCogd2lkdGgsIGludCogaGVpZ2h0KQpAQCAtNzc5LDkgKzc3OSw5
IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfdmlzaWJsZV9jb250ZW50X2dlb21ldHJ5X2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrRnJhbWUsIEVpCiAgICAgICAgICp3aWR0aCA9IDA7CiAgICAgaWYg
KGhlaWdodCkKICAgICAgICAgKmhlaWdodCA9IDA7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9S
RVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIEVJTkFfRkFMU0UpOwotICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLT52aWV3KCksIEVJ
TkFfRkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFy
dERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnRE
YXRhLT5mcmFtZSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChz
bWFydERhdGEtPmZyYW1lLT52aWV3KCksIGZhbHNlKTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IHJl
Y3QgPSBzbWFydERhdGEtPmZyYW1lLT52aWV3KCktPnZpc2libGVDb250ZW50UmVjdChpbmNsdWRl
U2Nyb2xsYmFycyk7CiAgICAgaWYgKHgpCiAgICAgICAgICp4ID0gcmVjdC54KCk7CkBAIC03OTEs
MTQgKzc5MSwxNCBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3Zpc2libGVfY29udGVudF9nZW9tZXRy
eV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFaQogICAgICAgICAqd2lkdGggPSBy
ZWN0LndpZHRoKCk7CiAgICAgaWYgKGhlaWdodCkKICAgICAgICAgKmhlaWdodCA9IHJlY3QuaGVp
Z2h0KCk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWlu
YV9Cb29sIGV3a19mcmFtZV9wYWludF9mdWxsX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJh
bWUpCiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0
YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0
RGF0YS0+ZnJhbWUsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChzbWFydERhdGEtPmZyYW1lLT52aWV3KCksIEVJTkFfRkFMU0UpOworICAgIEVXS19GUkFN
RV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLT52aWV3KCks
IGZhbHNlKTsKICAgICByZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+dmlldygpLT5wYWludHNFbnRp
cmVDb250ZW50cygpOwogfQogCkBAIC04MTIsMjkgKzgxMiwyOSBAQCB2b2lkIGV3a19mcmFtZV9w
YWludF9mdWxsX3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIEVpbmFfQm9vbCBmbGFnKQogCiBF
aW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfZm9jdXNfaW4oRXZhc19PYmplY3QqIGV3a0ZyYW1lKQog
ewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIEVJ
TkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEt
PmZyYW1lLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tG
cmFtZSwgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsKICAgICBXZWJDb3JlOjpGb2N1c0NvbnRyb2xs
ZXIqIGMgPSBzbWFydERhdGEtPmZyYW1lLT5wYWdlKCktPmZvY3VzQ29udHJvbGxlcigpOwogICAg
IGMtPnNldEZvY3VzZWRGcmFtZShzbWFydERhdGEtPmZyYW1lKTsKLSAgICByZXR1cm4gRUlOQV9U
UlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfZm9j
dXNfb3V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKIHsKICAgICAvLyBUT0RPOiB3aGF0IHRvIGRv
IG9uIGZvY3VzIG91dD8KICAgICBFUlIoIndoYXQgdG8gZG8/Iik7Ci0gICAgcmV0dXJuIEVJTkFf
RkFMU0U7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZvY3Vz
ZWRfZWxlbWVudF9nZW9tZXRyeV9nZXQoY29uc3QgRXZhc19PYmplY3QgKmV3a0ZyYW1lLCBpbnQg
KngsIGludCAqeSwgaW50ICp3LCBpbnQgKmgpCiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9S
RVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NE
X0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIFdlYkNvcmU6
OkRvY3VtZW50KiBkb2N1bWVudCA9IHNtYXJ0RGF0YS0+ZnJhbWUtPmRvY3VtZW50KCk7CiAgICAg
aWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBXZWJDb3JlOjpOb2RlKiBmb2N1c2VkTm9kZSA9IGRvY3VtZW50LT5mb2N1
c2VkTm9kZSgpOwogICAgIGlmICghZm9jdXNlZE5vZGUpCi0gICAgICAgIHJldHVybiBFSU5BX0ZB
TFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBub2RlUmVj
dCA9IGZvY3VzZWROb2RlLT5nZXRSZWN0KCk7CiAgICAgaWYgKHgpCiAgICAgICAgICp4ID0gbm9k
ZVJlY3QueCgpOwpAQCAtODQ0LDE5ICs4NDQsMTkgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9mb2N1
c2VkX2VsZW1lbnRfZ2VvbWV0cnlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpld2tGcmFtZSwgaW4K
ICAgICAgICAgKncgPSBub2RlUmVjdC53aWR0aCgpOwogICAgIGlmIChoKQogICAgICAgICAqaCA9
IG5vZGVSZWN0LmhlaWdodCgpOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV93aGVlbChFdmFzX09iamVj
dCogZXdrRnJhbWUsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIHdoZWVsRXZlbnQpCiB7
Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgRUlO
QV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+
ZnJhbWUsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh3
aGVlbEV2ZW50LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihl
d2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwod2hlZWxFdmVudCwgZmFsc2UpOwogCiAgICAgV2ViQ29yZTo6RnJhbWVWaWV3
KiB2aWV3ID0gc21hcnREYXRhLT5mcmFtZS0+dmlldygpOwogICAgIERCRygiZXdrRnJhbWU9JXAs
IHZpZXc9JXAsIGRpcmVjdGlvbj0lZCwgej0lZCwgcG9zPSVkLCVkIiwKICAgICAgICAgZXdrRnJh
bWUsIHZpZXcsIHdoZWVsRXZlbnQtPmRpcmVjdGlvbiwgd2hlZWxFdmVudC0+eiwgd2hlZWxFdmVu
dC0+Y2FudmFzLngsIHdoZWVsRXZlbnQtPmNhbnZhcy55KTsKLSAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwodmlldywgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHZpZXcsIGZhbHNlKTsKIAogICAgIFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxF
dmVudCBldmVudCh3aGVlbEV2ZW50KTsKICAgICByZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+ZXZl
bnRIYW5kbGVyKCktPmhhbmRsZVdoZWVsRXZlbnQoZXZlbnQpOwpAQCAtODY0LDE0ICs4NjQsMTQg
QEAgRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX21vdXNlX3doZWVsKEV2YXNfT2JqZWN0KiBld2tG
cmFtZSwgY29uc3QgRXZhc19FdmVudF9Nb3UKIAogRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX21v
dXNlX2Rvd24oRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rv
d24qIGRvd25FdmVudCkKIHsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFt
ZSwgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoc21hcnREYXRhLT5mcmFtZSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKGRvd25FdmVudCwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NE
X0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGRvd25FdmVudCwgZmFsc2UpOwogCiAgICAgV2Vi
Q29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gc21hcnREYXRhLT5mcmFtZS0+dmlldygpOwogICAgIERC
RygiZXdrRnJhbWU9JXAsIHZpZXc9JXAsIGJ1dHRvbj0lZCwgcG9zPSVkLCVkIiwKICAgICAgICAg
ZXdrRnJhbWUsIHZpZXcsIGRvd25FdmVudC0+YnV0dG9uLCBkb3duRXZlbnQtPmNhbnZhcy54LCBk
b3duRXZlbnQtPmNhbnZhcy55KTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
dmlldywgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHZp
ZXcsIGZhbHNlKTsKIAogICAgIEV2YXNfQ29vcmQgeCwgeTsKICAgICBldmFzX29iamVjdF9nZW9t
ZXRyeV9nZXQoc21hcnREYXRhLT52aWV3LCAmeCwgJnksIDAsIDApOwpAQCAtODgyLDE0ICs4ODIs
MTQgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX21vdXNlX2Rvd24oRXZhc19PYmplY3QqIGV3
a0ZyYW1lLCBjb25zdCBFdmFzX0V2ZW50X01vdXMKIAogRWluYV9Cb29sIGV3a19mcmFtZV9mZWVk
X21vdXNlX3VwKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9V
cCogdXBFdmVudCkKIHsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwg
c21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoc21hcnREYXRhLT5mcmFtZSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHVwRXZlbnQsIEVJTkFfRkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRf
T1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTCh1cEV2ZW50LCBmYWxzZSk7CiAKICAgICBXZWJDb3JlOjpG
cmFtZVZpZXcqIHZpZXcgPSBzbWFydERhdGEtPmZyYW1lLT52aWV3KCk7CiAgICAgREJHKCJld2tG
cmFtZT0lcCwgdmlldz0lcCwgYnV0dG9uPSVkLCBwb3M9JWQsJWQiLAogICAgICAgICBld2tGcmFt
ZSwgdmlldywgdXBFdmVudC0+YnV0dG9uLCB1cEV2ZW50LT5jYW52YXMueCwgdXBFdmVudC0+Y2Fu
dmFzLnkpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh2aWV3LCBFSU5BX0ZB
TFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodmlldywgZmFsc2UpOwog
CiAgICAgRXZhc19Db29yZCB4LCB5OwogICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChzbWFy
dERhdGEtPnZpZXcsICZ4LCAmeSwgMCwgMCk7CkBAIC05MDAsMTUgKzkwMCwxNSBAQCBFaW5hX0Jv
b2wgZXdrX2ZyYW1lX2ZlZWRfbW91c2VfdXAoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBF
dmFzX0V2ZW50X01vdXNlXwogCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfbW91c2VfbW92ZShF
dmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSogbW92ZUV2
ZW50KQogewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERh
dGEsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFy
dERhdGEtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwobW92ZUV2ZW50LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JF
VFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwobW92ZUV2ZW50LCBmYWxzZSk7CiAKICAgICBXZWJDb3JlOjpGcmFt
ZVZpZXcqIHZpZXcgPSBzbWFydERhdGEtPmZyYW1lLT52aWV3KCk7CiAgICAgREJHKCJld2tGcmFt
ZT0lcCwgdmlldz0lcCwgcG9zOiBvbGQ9JWQsJWQsIG5ldz0lZCwlZCwgYnV0dG9ucz0lZCIsCiAg
ICAgICAgIGV3a0ZyYW1lLCB2aWV3LCBtb3ZlRXZlbnQtPmN1ci5jYW52YXMueCwgbW92ZUV2ZW50
LT5jdXIuY2FudmFzLnksCiAgICAgICAgIG1vdmVFdmVudC0+cHJldi5jYW52YXMueCwgbW92ZUV2
ZW50LT5wcmV2LmNhbnZhcy55LCBtb3ZlRXZlbnQtPmJ1dHRvbnMpOwotICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTCh2aWV3LCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwodmlldywgZmFsc2UpOwogCiAgICAgRXZhc19Db29yZCB4LCB5Owog
ICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChzbWFydERhdGEtPnZpZXcsICZ4LCAmeSwgMCwg
MCk7CkBAIC05MTksMTQgKzkxOSwxNCBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfbW91c2Vf
bW92ZShFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IEV2YXNfRXZlbnRfTW91cwogCiBFaW5h
X0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBF
d2tfVG91Y2hfRXZlbnRfVHlwZSBhY3Rpb24sIEVpbmFfTGlzdCogcG9pbnRzLCBpbnQgbWV0YVN0
YXRlKQogewotICAgIEVpbmFfQm9vbCByZXN1bHQgPSBFSU5BX0ZBTFNFOworICAgIEVpbmFfQm9v
bCByZXN1bHQgPSBmYWxzZTsKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHBvaW50cywgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHBvaW50cywgZmFsc2UpOwogICAgIEVXS19GUkFNRV9T
RF9HRVQoZXdrRnJhbWUsIHNtYXJ0RGF0YSk7CiAKICAgICBpZiAoIXNtYXJ0RGF0YSB8fCAhc21h
cnREYXRhLT5mcmFtZSB8fCAhZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVudHNfZ2V0KHNtYXJ0RGF0
YS0+dmlldykpCi0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBFdmFzX0Nvb3JkIHgsIHk7CiAgICAgZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0
KHNtYXJ0RGF0YS0+dmlldywgJngsICZ5LCAwLCAwKTsKQEAgLTk0Niw3ICs5NDYsNyBAQCBFaW5h
X0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBF
d2tfVG91Y2hfRXZlbnRfVHlwZQogICAgICAgICB0eXBlID0gV2ViQ29yZTo6VG91Y2hDYW5jZWw7
CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNF
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgV2ViQ29yZTo6UGxhdGZvcm1U
b3VjaEV2ZW50IHRvdWNoRXZlbnQocG9pbnRzLCBXZWJDb3JlOjpJbnRQb2ludCh4LCB5KSwgdHlw
ZSwgbWV0YVN0YXRlKTsKQEAgLTEwMDksMzcgKzEwMDksMzcgQEAgc3RhdGljIGlubGluZSBFaW5h
X0Jvb2wgX2V3a19mcmFtZV9oYW5kbGVfa2V5X3Njcm9sbGluZyhXZWJDb3JlOjpGcmFtZSogZnJh
bWUsIGMKICAgICAgICAgICAgIGdyYW51bGFyaXR5ID0gV2ViQ29yZTo6U2Nyb2xsQnlMaW5lOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChmcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPnNjcm9sbE92ZXJmbG93KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpKQotICAgICAgICBy
ZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZnJhbWUtPnZp
ZXcoKS0+c2Nyb2xsKGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOwotICAgIHJldHVybiBFSU5BX1RS
VUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9rZXlf
ZG93bihFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24qIGRv
d25FdmVudCkKIHsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21h
cnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
c21hcnREYXRhLT5mcmFtZSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKGRvd25FdmVudCwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKGRvd25FdmVudCwgZmFsc2UpOwogCiAgICAgREJHKCJld2tG
cmFtZT0lcCBrZXluYW1lPSVzIChrZXk9JXMsIHN0cmluZz0lcykiLAogICAgICAgICBld2tGcmFt
ZSwgZG93bkV2ZW50LT5rZXluYW1lLCBkb3duRXZlbnQtPmtleSA/IGRvd25FdmVudC0+a2V5IDog
IiIsIGRvd25FdmVudC0+c3RyaW5nID8gZG93bkV2ZW50LT5zdHJpbmcgOiAiIik7CiAKICAgICBX
ZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQgZXZlbnQoZG93bkV2ZW50KTsKICAgICBpZiAo
c21hcnREYXRhLT5mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmtleUV2ZW50KGV2ZW50KSkKLSAgICAg
ICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4g
X2V3a19mcmFtZV9oYW5kbGVfa2V5X3Njcm9sbGluZyhzbWFydERhdGEtPmZyYW1lLCBldmVudCk7
CiB9CiAKIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9rZXlfdXAoRXZhc19PYmplY3QqIGV3a0Zy
YW1lLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCogdXBFdmVudCkKIHsKLSAgICBFV0tfRlJBTUVf
U0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgRUlOQV9GQUxT
RSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHVwRXZlbnQsIEVJTkFfRkFM
U0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEs
IGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5m
cmFtZSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh1cEV2ZW50
LCBmYWxzZSk7CiAKICAgICBEQkcoImV3a0ZyYW1lPSVwIGtleW5hbWU9JXMgKGtleT0lcywgc3Ry
aW5nPSVzKSIsCiAgICAgICAgIGV3a0ZyYW1lLCB1cEV2ZW50LT5rZXluYW1lLCB1cEV2ZW50LT5r
ZXkgPyB1cEV2ZW50LT5rZXkgOiAiIiwgdXBFdmVudC0+c3RyaW5nID8gdXBFdmVudC0+c3RyaW5n
IDogIiIpOwpAQCAtMTA5NCwyMSArMTA5NCwyMSBAQCBFdmFzX09iamVjdCogZXdrX2ZyYW1lX2Fk
ZChFdmFzKiBjYW52YXMpCiAgKgogICogVGhpcyBpcyBpbnRlcm5hbCBhbmQgc2hvdWxkIG5ldmVy
IGJlIGNhbGxlZCBieSBleHRlcm5hbCB1c2Vycy4KICAqLwotRWluYV9Cb29sIGV3a19mcmFtZV9p
bml0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXZhc19PYmplY3QqIHZpZXcsIFdlYkNvcmU6OkZy
YW1lKiBmcmFtZSkKK2Jvb2wgZXdrX2ZyYW1lX2luaXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBF
dmFzX09iamVjdCogdmlldywgV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQogewotICAgIEVXS19GUkFN
RV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOworICAg
IEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsK
ICAgICBpZiAoIXNtYXJ0RGF0YS0+ZnJhbWUpIHsKICAgICAgICAgV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRFZmwqIGZyYW1lTG9hZGVyQ2xpZW50ID0gX2V3a19mcmFtZV9sb2FkZXJfZWZsX2dl
dChmcmFtZSk7CiAgICAgICAgIGZyYW1lTG9hZGVyQ2xpZW50LT5zZXRXZWJGcmFtZShld2tGcmFt
ZSk7CiAgICAgICAgIHNtYXJ0RGF0YS0+ZnJhbWUgPSBmcmFtZTsKICAgICAgICAgc21hcnREYXRh
LT52aWV3ID0gdmlldzsKICAgICAgICAgZnJhbWUtPmluaXQoKTsKLSAgICAgICAgcmV0dXJuIEVJ
TkFfVFJVRTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgRVJSKCJmcmFtZSAl
cCBhbHJlYWR5IHNldCBmb3IgJXAsIGlnbm9yZWQgbmV3ICVwIiwKICAgICAgICAgc21hcnREYXRh
LT5mcmFtZSwgZXdrRnJhbWUsIGZyYW1lKTsKLSAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKIC8qKgpAQCAtMTExNiw3ICsxMTE2LDcgQEAgRWluYV9Cb29sIGV3
a19mcmFtZV9pbml0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXZhc19PYmplY3QqIHZpZXcsIFdl
YkNvcmU6OkZyYW0KICAqCiAgKiBBZGRzIGNoaWxkIHRvIHRoZSBmcmFtZS4KICAqLwotRWluYV9C
b29sIGV3a19mcmFtZV9jaGlsZF9hZGQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNoaWxkLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIpCitib29s
IGV3a19mcmFtZV9jaGlsZF9hZGQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBXVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6RnJhbWU+IGNoaWxkLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIpCiB7CiAgICAg
RVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgMCk7CiAgICAg
Y2hhciBidWZmZXJbMjU2XTsKQEAgLTExMjYsNyArMTEyNiw3IEBAIEVpbmFfQm9vbCBld2tfZnJh
bWVfY2hpbGRfYWRkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgV1RGOjpQYXNzUmVmUHRyPFdlYkNv
cmU6OkZyCiAgICAgZnJhbWUgPSBld2tfZnJhbWVfYWRkKHNtYXJ0RGF0YS0+YmFzZS5ldmFzKTsK
ICAgICBpZiAoIWZyYW1lKSB7CiAgICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBld2tfZnJh
bWUgb2JqZWN0LiIpOwotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAogICAgIGNvcmVGcmFtZSA9IGNoaWxkLmdldCgpOwpAQCAtMTEzOCw3
ICsxMTM4LDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9jaGlsZF9hZGQoRXZhc19PYmplY3QqIGV3
a0ZyYW1lLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnIKIAogICAgIGlmICghZXdrX2ZyYW1l
X2luaXQoZnJhbWUsIHNtYXJ0RGF0YS0+dmlldywgY29yZUZyYW1lKSkgewogICAgICAgICBldmFz
X29iamVjdF9kZWwoZnJhbWUpOwotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIp
LCAiRVdLX0ZyYW1lOmNoaWxkLyVzIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKICAgICBldmFzX29i
amVjdF9uYW1lX3NldChmcmFtZSwgYnVmZmVyKTsKQEAgLTExNDgsNyArMTE0OCw3IEBAIEVpbmFf
Qm9vbCBld2tfZnJhbWVfY2hpbGRfYWRkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OkZyCiAgICAgLy8gVGhlIGNyZWF0aW9uIG9mIHRoZSBmcmFtZSBtYXkg
aGF2ZSBydW4gYXJiaXRyYXJ5IEphdmFTY3JpcHQgdGhhdCByZW1vdmVkIGl0IGZyb20gdGhlIHBh
Z2UgYWxyZWFkeS4KICAgICBpZiAoIWNvcmVGcmFtZS0+cGFnZSgpKSB7CiAgICAgICAgIGV2YXNf
b2JqZWN0X2RlbChmcmFtZSk7Ci0gICAgICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAogICAgIHNtYXJ0RGF0YS0+ZnJhbWUtPmxvYWRlcigpLT5sb2Fk
VVJMSW50b0NoaWxkRnJhbWUodXJsLCByZWZlcnJlciwgY29yZUZyYW1lKTsKQEAgLTExNTcsMTEg
KzExNTcsMTEgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9jaGlsZF9hZGQoRXZhc19PYmplY3QqIGV3
a0ZyYW1lLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnIKICAgICAvLyBTZWUgZmFzdC9kb20v
bnVsbC1wYWdlLXNob3ctbW9kYWwtZGlhbG9nLWNyYXNoLmh0bWwgZm9yIGFuIGV4YW1wbGUuCiAg
ICAgaWYgKCFjb3JlRnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpIHsKICAgICAgICAgZXZhc19vYmpl
Y3RfZGVsKGZyYW1lKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCiAgICAgLy8gVE9ETzogYW5ub3VuY2UgZnJhbWUgd2FzIGNyZWF0ZWQ/
Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogLyoqCkBAIC0x
MzMzLDcgKzEzMzMsNyBAQCB2b2lkIGV3a19mcmFtZV9sb2FkX2RvY3VtZW50X2ZpbmlzaGVkKEV2
YXNfT2JqZWN0KiBld2tGcmFtZSkKICAqIEBub3RlIHRoZXJlIHNob3VsZCBub3RiZSBhbnkgZXJy
b3Igc3R1ZmYgaGVyZSwgYnV0IHRyeWluZyB0byBiZQogICogICAgICAgY29tcGF0aWJsZSB3aXRo
IHByZXZpb3VzIFdlYktpdC4KICAqLwotdm9pZCBld2tfZnJhbWVfbG9hZF9maW5pc2hlZChFdmFz
X09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGVycm9yRG9tYWluLCBpbnQgZXJyb3JDb2Rl
LCBFaW5hX0Jvb2wgaXNDYW5jZWxsYXRpb24sIGNvbnN0IGNoYXIqIGVycm9yRGVzY3JpcHRpb24s
IGNvbnN0IGNoYXIqIGZhaWxpbmdVcmwpCit2b2lkIGV3a19mcmFtZV9sb2FkX2ZpbmlzaGVkKEV2
YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogZXJyb3JEb21haW4sIGludCBlcnJvckNv
ZGUsIGJvb2wgaXNDYW5jZWxsYXRpb24sIGNvbnN0IGNoYXIqIGVycm9yRGVzY3JpcHRpb24sIGNv
bnN0IGNoYXIqIGZhaWxpbmdVcmwpCiB7CiAgICAgRXdrX0ZyYW1lX0xvYWRfRXJyb3IgYnVmZmVy
LCAqZXJyb3I7CiAgICAgaWYgKCFlcnJvckRvbWFpbikgewpAQCAtMTM2Myw3ICsxMzYzLDcgQEAg
dm9pZCBld2tfZnJhbWVfbG9hZF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0
IGNoYXIqIGVycm9yRG9tYWluLCBpbnQKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJsb2FkLGVycm9y
IiB3aXRoIHBvaW50ZXIgdG8gRXdrX0ZyYW1lX0xvYWRfRXJyb3IuCiAgKi8KLXZvaWQgZXdrX2Zy
YW1lX2xvYWRfZXJyb3IoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBlcnJvckRv
bWFpbiwgaW50IGVycm9yQ29kZSwgRWluYV9Cb29sIGlzQ2FuY2VsbGF0aW9uLCBjb25zdCBjaGFy
KiBlcnJvckRlc2NyaXB0aW9uLCBjb25zdCBjaGFyKiBmYWlsaW5nVXJsKQordm9pZCBld2tfZnJh
bWVfbG9hZF9lcnJvcihFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGVycm9yRG9t
YWluLCBpbnQgZXJyb3JDb2RlLCBib29sIGlzQ2FuY2VsbGF0aW9uLCBjb25zdCBjaGFyKiBlcnJv
ckRlc2NyaXB0aW9uLCBjb25zdCBjaGFyKiBmYWlsaW5nVXJsKQogewogICAgIEV3a19GcmFtZV9M
b2FkX0Vycm9yIGVycm9yOwogCkBAIC0xNTM0LDcgKzE1MzQsNyBAQCBFaW5hX0xpc3QqIGV3a19m
cmFtZV9yZXNvdXJjZXNfbG9jYXRpb25fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkK
ICAgICAgICAgLy8gTG9vayBmb3IgZHVwbGljYXRlZCBsb2NhdGlvbi4KICAgICAgICAgRWluYV9M
aXN0KiBsaXN0SXRlcmF0b3IgPSAwOwogICAgICAgICB2b2lkKiBkYXRhID0gMDsKLSAgICAgICAg
RWluYV9Cb29sIGZvdW5kID0gRUlOQV9GQUxTRTsKKyAgICAgICAgRWluYV9Cb29sIGZvdW5kID0g
ZmFsc2U7CiAgICAgICAgIEVJTkFfTElTVF9GT1JFQUNIKGxpc3RPZkltYWdlc0xvY2F0aW9uLCBs
aXN0SXRlcmF0b3IsIGRhdGEpCiAgICAgICAgICAgICBpZiAoZm91bmQgPSAhc3RyY21wKHN0YXRp
Y19jYXN0PGNoYXIqPihkYXRhKSwgaW1hZ2VMb2NhdGlvbi51dGY4KCkuZGF0YSgpKSkKICAgICAg
ICAgICAgICAgICBicmVhazsKQEAgLTE1ODEsMjEgKzE1ODEsMjEgQEAgY2hhciogZXdrX2ZyYW1l
X3BsYWluX3RleHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKICAqCiAgKiBFbWl0
cyBzaWduYWw6ICJ1cmksY2hhbmdlZCIgd2l0aCBuZXcgdXJpIGFzIHBhcmFtZXRlci4KICAqLwot
RWluYV9Cb29sIGV3a19mcmFtZV91cmlfY2hhbmdlZChFdmFzX09iamVjdCogZXdrRnJhbWUpCiti
b29sIGV3a19mcmFtZV91cmlfY2hhbmdlZChFdmFzX09iamVjdCogZXdrRnJhbWUpCiB7Ci0gICAg
RVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgRUlOQV9GQUxT
RSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUs
IEVJTkFfRkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBz
bWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21h
cnREYXRhLT5mcmFtZSwgZmFsc2UpOwogICAgIFdURjo6Q1N0cmluZyB1cmkoc21hcnREYXRhLT5m
cmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkudXRmOCgpKTsKIAogICAgIElORigidXJp
PSVzIiwgdXJpLmRhdGEoKSk7CiAgICAgaWYgKCF1cmkuZGF0YSgpKSB7CiAgICAgICAgIEVSUigi
bm8gdXJpIik7Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCiAgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZzbWFydERhdGEtPnVy
aSwgdXJpLmRhdGEoKSk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tG
cmFtZSwgInVyaSxjaGFuZ2VkIiwgKHZvaWQqKXNtYXJ0RGF0YS0+dXJpKTsKLSAgICByZXR1cm4g
RUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX2hpc3RvcnkuY3BwCmluZGV4IGZlMDFkNTJjY2IxZDZjYWQ4MjdhYjk2ZDJkOTVmM2M2Mjlk
YTkzYjguLjJiZGYzZWI3MDllZGIxMmI2OGUxMGZkN2E0ZWZhZDk4MzhhNzE1ZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19oaXN0b3J5LmNwcApAQCAtOTIsNyArOTIsNyBAQCBzdGF0aWMgaW5s
aW5lIEVpbmFfTGlzdCogX2V3a19oaXN0b3J5X2l0ZW1fbGlzdF9nZXQoY29uc3QgV2ViQ29yZTo6
SGlzdG9yeUl0ZW1WZQogCiBFaW5hX0Jvb2wgZXdrX2hpc3RvcnlfY2xlYXIoRXdrX0hpc3Rvcnkq
IGhpc3RvcnkpCiB7Ci0gICAgRVdLX0hJU1RPUllfQ09SRV9HRVRfT1JfUkVUVVJOKGhpc3Rvcnks
IGNvcmUsIEVJTkFfRkFMU0UpOworICAgIEVXS19ISVNUT1JZX0NPUkVfR0VUX09SX1JFVFVSTiho
aXN0b3J5LCBjb3JlLCBmYWxzZSk7CiAKICAgICBXZWJDb3JlOjpQYWdlKiBwYWdlID0gY29yZS0+
cGFnZSgpOwogICAgIGlmIChwYWdlICYmIHBhZ2UtPmdyb3VwUHRyKCkpCkBAIC0xMDIsNDEgKzEw
Miw0MSBAQCBFaW5hX0Jvb2wgZXdrX2hpc3RvcnlfY2xlYXIoRXdrX0hpc3RvcnkqIGhpc3Rvcnkp
CiAgICAgZXdrX2hpc3RvcnlfbGltaXRfc2V0KGhpc3RvcnksIDApOwogICAgIGV3a19oaXN0b3J5
X2xpbWl0X3NldChoaXN0b3J5LCBsaW1pdCk7CiAKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAg
IHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wgZXdrX2hpc3RvcnlfZm9yd2FyZChFd2tfSGlz
dG9yeSogaGlzdG9yeSkKIHsKLSAgICBFV0tfSElTVE9SWV9DT1JFX0dFVF9PUl9SRVRVUk4oaGlz
dG9yeSwgY29yZSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0hJU1RPUllfQ09SRV9HRVRfT1JfUkVU
VVJOKGhpc3RvcnksIGNvcmUsIGZhbHNlKTsKICAgICBpZiAoY29yZS0+Zm9yd2FyZExpc3RDb3Vu
dCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBjb3JlLT5nb0ZvcndhcmQoKTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJl
dHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wgZXdrX2hpc3RvcnlfYmFjayhFd2tfSGlzdG9yeSog
aGlzdG9yeSkKIHsKLSAgICBFV0tfSElTVE9SWV9DT1JFX0dFVF9PUl9SRVRVUk4oaGlzdG9yeSwg
Y29yZSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0hJU1RPUllfQ09SRV9HRVRfT1JfUkVUVVJOKGhp
c3RvcnksIGNvcmUsIGZhbHNlKTsKICAgICBpZiAoY29yZS0+YmFja0xpc3RDb3VudCgpIDwgMSkK
LSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBj
b3JlLT5nb0JhY2soKTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwog
fQogCiBFaW5hX0Jvb2wgZXdrX2hpc3RvcnlfaGlzdG9yeV9pdGVtX2FkZChFd2tfSGlzdG9yeSog
aGlzdG9yeSwgY29uc3QgRXdrX0hpc3RvcnlfSXRlbSogaXRlbSkKIHsKLSAgICBFV0tfSElTVE9S
WV9DT1JFX0dFVF9PUl9SRVRVUk4oaGlzdG9yeSwgaGlzdG9yeV9jb3JlLCBFSU5BX0ZBTFNFKTsK
LSAgICBFV0tfSElTVE9SWV9JVEVNX0NPUkVfR0VUX09SX1JFVFVSTihpdGVtLCBpdGVtX2NvcmUs
IEVJTkFfRkFMU0UpOworICAgIEVXS19ISVNUT1JZX0NPUkVfR0VUX09SX1JFVFVSTihoaXN0b3J5
LCBoaXN0b3J5X2NvcmUsIGZhbHNlKTsKKyAgICBFV0tfSElTVE9SWV9JVEVNX0NPUkVfR0VUX09S
X1JFVFVSTihpdGVtLCBpdGVtX2NvcmUsIGZhbHNlKTsKICAgICBoaXN0b3J5X2NvcmUtPmFkZEl0
ZW0oaXRlbV9jb3JlKTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwog
fQogCiBFaW5hX0Jvb2wgZXdrX2hpc3RvcnlfaGlzdG9yeV9pdGVtX3NldChFd2tfSGlzdG9yeSog
aGlzdG9yeSwgY29uc3QgRXdrX0hpc3RvcnlfSXRlbSogaXRlbSkKIHsKLSAgICBFV0tfSElTVE9S
WV9DT1JFX0dFVF9PUl9SRVRVUk4oaGlzdG9yeSwgaGlzdG9yeV9jb3JlLCBFSU5BX0ZBTFNFKTsK
LSAgICBFV0tfSElTVE9SWV9JVEVNX0NPUkVfR0VUX09SX1JFVFVSTihpdGVtLCBpdGVtX2NvcmUs
IEVJTkFfRkFMU0UpOworICAgIEVXS19ISVNUT1JZX0NPUkVfR0VUX09SX1JFVFVSTihoaXN0b3J5
LCBoaXN0b3J5X2NvcmUsIGZhbHNlKTsKKyAgICBFV0tfSElTVE9SWV9JVEVNX0NPUkVfR0VUX09S
X1JFVFVSTihpdGVtLCBpdGVtX2NvcmUsIGZhbHNlKTsKICAgICBoaXN0b3J5X2NvcmUtPmdvVG9J
dGVtKGl0ZW1fY29yZSk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogRXdrX0hpc3RvcnlfSXRlbSogZXdrX2hpc3RvcnlfaGlzdG9yeV9pdGVtX2JhY2tfZ2V0
KGNvbnN0IEV3a19IaXN0b3J5KiBoaXN0b3J5KQpAQCAtMTY4LDggKzE2OCw4IEBAIEV3a19IaXN0
b3J5X0l0ZW0qIGV3a19oaXN0b3J5X2hpc3RvcnlfaXRlbV9udGhfZ2V0KGNvbnN0IEV3a19IaXN0
b3J5KiBoaXN0b3J5LCBpCiAKIEVpbmFfQm9vbCBld2tfaGlzdG9yeV9oaXN0b3J5X2l0ZW1fY29u
dGFpbnMoY29uc3QgRXdrX0hpc3RvcnkqIGhpc3RvcnksIGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0q
IGl0ZW0pCiB7Ci0gICAgRVdLX0hJU1RPUllfQ09SRV9HRVRfT1JfUkVUVVJOKGhpc3RvcnksIGhp
c3RvcnlfY29yZSwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX0hJU1RPUllfSVRFTV9DT1JFX0dFVF9P
Ul9SRVRVUk4oaXRlbSwgaXRlbV9jb3JlLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfSElTVE9SWV9D
T1JFX0dFVF9PUl9SRVRVUk4oaGlzdG9yeSwgaGlzdG9yeV9jb3JlLCBmYWxzZSk7CisgICAgRVdL
X0hJU1RPUllfSVRFTV9DT1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwgaXRlbV9jb3JlLCBmYWxzZSk7
CiAgICAgcmV0dXJuIGhpc3RvcnlfY29yZS0+Y29udGFpbnNJdGVtKGl0ZW1fY29yZSk7CiB9CiAK
QEAgLTIyNyw5ICsyMjcsOSBAQCBpbnQgZXdrX2hpc3RvcnlfbGltaXRfZ2V0KEV3a19IaXN0b3J5
KiBoaXN0b3J5KQogCiBFaW5hX0Jvb2wgZXdrX2hpc3RvcnlfbGltaXRfc2V0KGNvbnN0IEV3a19I
aXN0b3J5KiBoaXN0b3J5LCBpbnQgbGltaXQpCiB7Ci0gICAgRVdLX0hJU1RPUllfQ09SRV9HRVRf
T1JfUkVUVVJOKGhpc3RvcnksIGNvcmUsIEVJTkFfRkFMU0UpOworICAgIEVXS19ISVNUT1JZX0NP
UkVfR0VUX09SX1JFVFVSTihoaXN0b3J5LCBjb3JlLCBmYWxzZSk7CiAgICAgY29yZS0+c2V0Q2Fw
YWNpdHkobGltaXQpOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKIEV3a19IaXN0b3J5X0l0ZW0qIGV3a19oaXN0b3J5X2l0ZW1fbmV3X2Zyb21fY29yZShXZWJD
b3JlOjpIaXN0b3J5SXRlbSogY29yZSkKQEAgLTM2NSw3ICszNjUsNyBAQCBFdmFzX09iamVjdCog
ZXdrX2hpc3RvcnlfaXRlbV9pY29uX29iamVjdF9hZGQoY29uc3QgRXdrX0hpc3RvcnlfSXRlbSog
aXRlbSwgRXZhcwogCiBFaW5hX0Jvb2wgZXdrX2hpc3RvcnlfaXRlbV9wYWdlX2NhY2hlX2V4aXN0
cyhjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVtKQogewotICAgIEVXS19ISVNUT1JZX0lURU1f
Q09SRV9HRVRfT1JfUkVUVVJOKGl0ZW0sIGNvcmUsIEVJTkFfRkFMU0UpOworICAgIEVXS19ISVNU
T1JZX0lURU1fQ09SRV9HRVRfT1JfUkVUVVJOKGl0ZW0sIGNvcmUsIGZhbHNlKTsKICAgICByZXR1
cm4gY29yZS0+aXNJblBhZ2VDYWNoZSgpOwogfQogCkBAIC0zNzcsNyArMzc3LDcgQEAgaW50IGV3
a19oaXN0b3J5X2l0ZW1fdmlzaXRfY291bnQoY29uc3QgRXdrX0hpc3RvcnlfSXRlbSogaXRlbSkK
IAogRWluYV9Cb29sIGV3a19oaXN0b3J5X2l0ZW1fdmlzaXRfbGFzdF9mYWlsZWQoY29uc3QgRXdr
X0hpc3RvcnlfSXRlbSogaXRlbSkKIHsKLSAgICBFV0tfSElTVE9SWV9JVEVNX0NPUkVfR0VUX09S
X1JFVFVSTihpdGVtLCBjb3JlLCBFSU5BX1RSVUUpOworICAgIEVXS19ISVNUT1JZX0lURU1fQ09S
RV9HRVRfT1JfUkVUVVJOKGl0ZW0sIGNvcmUsIHRydWUpOwogICAgIHJldHVybiBjb3JlLT5sYXN0
VmlzaXRXYXNGYWlsdXJlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfanMuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19qcy5jcHAKaW5kZXggZDJj
OWE5MzdjYmE4ZGVlNDlmM2NiNzcwMjZjZjhmY2M3NTA4YTJlMS4uMzA2OWZjMmY5MTc3NjNjOTU4
MWE4M2E1NTg1YTg4MDEyMDNlMTg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19qcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19qcy5jcHAKQEAgLTQ1
LDggKzQ1LDggQEAgc3RhdGljIEVpbmFfQm9vbCBld2tfanNfbnB2YXJpYW50X3RvX3ZhcmlhbnQo
RXdrX0pTX1ZhcmlhbnQqIGRhdGEsIGNvbnN0IE5QVmFyaWEKIAogc3RhdGljIEVpbmFfQm9vbCBl
d2tfanNfdmFyaWFudF90b19ucHZhcmlhbnQoY29uc3QgRXdrX0pTX1ZhcmlhbnQqIGRhdGEsIE5Q
VmFyaWFudCogcmVzdWx0KQogewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChk
YXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocmVz
dWx0LCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZGF0
YSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChyZXN1bHQsIGZh
bHNlKTsKICAgICBjaGFyKiBzdHJpbmdfdmFsdWU7CiAKICAgICBzd2l0Y2ggKGRhdGEtPnR5cGUp
IHsKQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIEVpbmFfQm9vbCBld2tfanNfdmFyaWFudF90b19u
cHZhcmlhbnQoY29uc3QgRXdrX0pTX1ZhcmlhbnQqIGRhdGEsIE5QVmFyaWEKICAgICAgICAgaWYg
KHN0cmluZ192YWx1ZSkKICAgICAgICAgICAgIFNUUklOR1pfVE9fTlBWQVJJQU5UKHN0cmluZ192
YWx1ZSwgKnJlc3VsdCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBFSU5BX0ZB
TFNFOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEVXS19KU19WQVJJQU5UX0JPT0w6CiAgICAgICAgIEJPT0xFQU5fVE9fTlBWQVJJQU5UKGRhdGEt
PnZhbHVlLmIsICpyZXN1bHQpOwpAQCAtNzYsMTAgKzc2LDEwIEBAIHN0YXRpYyBFaW5hX0Jvb2wg
ZXdrX2pzX3ZhcmlhbnRfdG9fbnB2YXJpYW50KGNvbnN0IEV3a19KU19WYXJpYW50KiBkYXRhLCBO
UFZhcmlhCiAgICAgICAgIE9CSkVDVF9UT19OUFZBUklBTlQocmVpbnRlcnByZXRfY2FzdDxOUE9i
amVjdCo+KGRhdGEtPnZhbHVlLm8pLCAqcmVzdWx0KTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVm
YXVsdDoKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiAv
LyBUaGVzZSBtZXRob2RzIGFyZSB1c2VkIGJ5IE5QQUksIHRoYXRzIHRoZSByZWFzb24gdG8gdXNl
IGJvb2wgaW5zdGVhZCBvZiBFaW5hX0Jvb2wuCkBAIC00ODIsOCArNDgyLDggQEAgZXJyb3I6CiBz
dGF0aWMgRWluYV9Cb29sIGV3a19qc19ucHZhcmlhbnRfdG9fdmFyaWFudChFd2tfSlNfVmFyaWFu
dCogZGF0YSwgY29uc3QgTlBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgaW50IHN6OwotICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChkYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocmVzdWx0LCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChyZXN1bHQsIGZhbHNlKTsKICAgICBzd2l0Y2ggKHJlc3VsdC0+
dHlwZSkgewogICAgIGNhc2UgTlBWYXJpYW50VHlwZV9Wb2lkOgogICAgICAgICBkYXRhLT50eXBl
ID0gRVdLX0pTX1ZBUklBTlRfVk9JRDsKQEAgLTUwNSw3ICs1MDUsNyBAQCBzdGF0aWMgRWluYV9C
b29sIGV3a19qc19ucHZhcmlhbnRfdG9fdmFyaWFudChFd2tfSlNfVmFyaWFudCogZGF0YSwgY29u
c3QgTlBWYXJpYQogICAgICAgICBzeiA9IE5QVkFSSUFOVF9UT19TVFJJTkcoKnJlc3VsdCkuVVRG
OExlbmd0aDsKICAgICAgICAgZGF0YS0+dmFsdWUucyA9IHN0YXRpY19jYXN0PGNoYXIqPihtYWxs
b2Moc2l6ZW9mKGNoYXIpICogKHN6ICsgMSkpKTsKICAgICAgICAgaWYgKCFkYXRhLT52YWx1ZS5z
KQotICAgICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIG1lbWNweShkYXRhLT52YWx1ZS5zLCBOUFZBUklBTlRfVE9fU1RSSU5HKCpy
ZXN1bHQpLlVURjhDaGFyYWN0ZXJzLCBzeik7CiAgICAgICAgIGRhdGEtPnZhbHVlLnNbc3pdID0g
J1wwJzsKICAgICAgICAgZGF0YS0+dHlwZSA9IEVXS19KU19WQVJJQU5UX1NUUklORzsKQEAgLTUx
OSwxMCArNTE5LDEwIEBAIHN0YXRpYyBFaW5hX0Jvb2wgZXdrX2pzX25wdmFyaWFudF90b192YXJp
YW50KEV3a19KU19WYXJpYW50KiBkYXRhLCBjb25zdCBOUFZhcmlhCiAgICAgICAgIGRhdGEtPnZh
bHVlLm8gPSBld2tfanNfbnBvYmplY3RfdG9fb2JqZWN0KE5QVkFSSUFOVF9UT19PQkpFQ1QoKnJl
c3VsdCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gRUlO
QV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJldHVybiBFSU5B
X1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEV3a19KU19PYmplY3QqIGV3a19qc19vYmpl
Y3RfbmV3KGNvbnN0IEV3a19KU19DbGFzc19NZXRhKiBqc01ldGFDbGFzcykKQEAgLTYyOSwxOCAr
NjI5LDE4IEBAIEVpbmFfQm9vbCBld2tfanNfb2JqZWN0X2ludm9rZShFd2tfSlNfT2JqZWN0KiBq
c09iamVjdCwgRXdrX0pTX1ZhcmlhbnQqIGFyZ3MsIGluCiB7CiAgICAgTlBWYXJpYW50KiBucF9h
cmdzOwogICAgIE5QVmFyaWFudCBucF9yZXN1bHQ7Ci0gICAgYm9vbCBmYWlsID0gRUlOQV9GQUxT
RTsKKyAgICBib29sIGZhaWwgPSBmYWxzZTsKIAotICAgIEVJTkFfTUFHSUNfQ0hFQ0tfT1JfUkVU
VVJOKGpzT2JqZWN0LCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX01BR0lDX0NIRUNLX09SX1JFVFVS
Tihqc09iamVjdCwgZmFsc2UpOwogICAgIGlmIChld2tfanNfb2JqZWN0X3R5cGVfZ2V0KGpzT2Jq
ZWN0KSAhPSBFV0tfSlNfT0JKRUNUX0ZVTkNUSU9OKQotICAgICAgICByZXR1cm4gRUlOQV9GQUxT
RTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChhcmdDb3VudCkKLSAgICAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGFyZ3MsIEVJTkFfRkFMU0UpOworICAgICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoYXJncywgZmFsc2UpOwogCiAgICAgbnBfYXJn
cyA9IHN0YXRpY19jYXN0PE5QVmFyaWFudCo+KG1hbGxvYyhzaXplb2YoTlBWYXJpYW50KSAgKmFy
Z0NvdW50KSk7CiAgICAgaWYgKCFucF9hcmdzKSB7CiAgICAgICAgIEVSUigiQ291bGQgbm90IGFs
bG9jYXRlIG1lbW9yeSB0byBtZXRob2QgYXJndW1lbnRzIik7Ci0gICAgICAgIHJldHVybiBFSU5B
X0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBhcmdDb3VudDsgaSsrKQpAQCAtNzI2LDcgKzcyNiw3IEBAIHZvaWQgZXdrX2pzX29i
amVjdF9mcmVlKEV3a19KU19PYmplY3QqIGpzT2JqZWN0KQogCiBFaW5hX0Jvb2wgZXdrX2pzX29i
amVjdF9pbnZva2UoRXdrX0pTX09iamVjdCoganNPYmplY3QsIEV3a19KU19WYXJpYW50KiBhcmdz
LCBpbnQgYXJnQ291bnQsIEV3a19KU19WYXJpYW50KiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIEVJ
TkFfRkFMU0U7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBFd2tfSlNfT2JqZWN0X1R5cGUgZXdr
X2pzX29iamVjdF90eXBlX2dldChFd2tfSlNfT2JqZWN0KiBqc09iamVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbWFpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX21haW4uY3BwCmluZGV4IGM1MmMwMmIwOWY5MTUzNmEzMjI4MTg4NmRlYjNmYmIzNWJl
MDNlYjAuLmIxZjIxMjk0ZDk4MDBkNzM0NjMwMDMxMDMxNTAwYmY0ZTBiMjFkNmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbWFpbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19tYWluLmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIEVpbmFfQm9vbCBfZXdr
X2luaXRfYm9keSh2b2lkKQogICAgICAgICAvLyBFeGl0IG5vdyAtIG90aGVyd2lzZSB5b3UgbWF5
IGhhdmUgc29tZSBjcmFzaCBsYXRlcgogICAgICAgICBpbnQgZXJybm93YXMgPSBlcnJubzsKICAg
ICAgICAgQ1JJVElDQUwoIkNhbid0IGFjY2VzcyBIT01FIGRpciAob3IgL3RtcCkgLSBubyBwbGFj
ZSB0byBzYXZlIGRhdGFiYXNlczogJXMiLCBzdHJlcnJvcihlcnJub3dhcykpOwotICAgICAgICBy
ZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIFdU
Rjo6U3RyaW5nIHdlYmtpdERpcmVjdG9yeSA9IGhvbWUgKyAiLy53ZWJraXQiOwpAQCAtMTk3LDUg
KzE5Nyw1IEBAIEVpbmFfQm9vbCBfZXdrX2luaXRfYm9keSh2b2lkKQogICAgIH0KICNlbmRpZgog
Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbmV0d29yay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX25ldHdvcmsuY3BwCmluZGV4IDI2ZDUyY2JhYTU0OGQ3MjJmMTFkNTUyMjlkM2Ri
ZTY3YTI1NzAyZmMuLmZhZmVmMDk2YzI4N2Q5NmU0MjhlNjg4Njc5YTg0MDdhMjE5ZjdiNTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbmV0d29yay5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19uZXR3b3JrLmNwcApAQCAtNjMsNyArNjMsNyBAQCBjb25z
dCBjaGFyKiBld2tfbmV0d29ya19wcm94eV91cmlfZ2V0KHZvaWQpCiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KIAotICAgIFdURjo6U3RyaW5nIHByb3h5ID0gc291cF91cmlfdG9fc3RyaW5nKHVy
aSwgRUlOQV9GQUxTRSk7CisgICAgV1RGOjpTdHJpbmcgcHJveHkgPSBzb3VwX3VyaV90b19zdHJp
bmcodXJpLCBmYWxzZSk7CiAgICAgcmV0dXJuIGVpbmFfc3RyaW5nc2hhcmVfYWRkKHByb3h5LnV0
ZjgoKS5kYXRhKCkpOwogI2VsaWYgVVNFKENVUkwpCiAgICAgRUlOQV9TQUZFVFlfT05fVFJVRV9S
RVRVUk5fVkFMKDEsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19w
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAppbmRleCBhOTJh
YjdhMWMxY2U5ODMyYzc3NzFjYTc3ZGYyYzg3M2NmOTFjOTc0Li5mMTI4MjU1NWIzYzUwY2E1OGY0
ODMxNzZkNDNlOTU4OWQzNTZmODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaApA
QCAtODgsNyArODgsNyBAQCBFdmFzX09iamVjdCoga2l0RnJhbWUoY29uc3QgV2ViQ29yZTo6RnJh
bWUqIGNvcmVGcmFtZSk7CiB9IC8vIG5hbWVzcGFjZSBFV0tQcml2YXRlCiAKIHZvaWQgZXdrX3Zp
ZXdfcmVhZHkoRXZhc19PYmplY3QqIG8pOwotdm9pZCBld2tfdmlld19pbnB1dF9tZXRob2Rfc3Rh
dGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgYWN0aXZlKTsKK3ZvaWQgZXdrX3ZpZXdf
aW5wdXRfbWV0aG9kX3N0YXRlX3NldChFdmFzX09iamVjdCogbywgYm9vbCBhY3RpdmUpOwogdm9p
ZCBld2tfdmlld190aXRsZV9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHRpdGxlKTsK
IHZvaWQgZXdrX3ZpZXdfdXJpX2NoYW5nZWQoRXZhc19PYmplY3QqIG8pOwogdm9pZCBld2tfdmll
d19sb2FkX2RvY3VtZW50X2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBvLCBFdmFzX09iamVjdCogZnJh
bWUpOwpAQCAtMTAyLDM5ICsxMDIsMzkgQEAgdm9pZCBld2tfdmlld19sb2FkX2Vycm9yKEV2YXNf
T2JqZWN0KiBvLCBjb25zdCBFd2tfRnJhbWVfTG9hZF9FcnJvciogZXJyb3IpOwogdm9pZCBld2tf
dmlld19sb2FkX3Byb2dyZXNzX2NoYW5nZWQoRXZhc19PYmplY3QqIG8pOwogdm9pZCBld2tfdmll
d19sb2FkX3Nob3coRXZhc19PYmplY3QqIG8pOwogdm9pZCBld2tfdmlld19yZXN0b3JlX3N0YXRl
KEV2YXNfT2JqZWN0KiBvLCBFdmFzX09iamVjdCogZnJhbWUpOwotRXZhc19PYmplY3QqIGV3a192
aWV3X3dpbmRvd19jcmVhdGUoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBqYXZhc2NyaXB0LCBj
b25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyogY29yZUZlYXR1cmVzKTsKK0V2YXNfT2JqZWN0
KiBld2tfdmlld193aW5kb3dfY3JlYXRlKEV2YXNfT2JqZWN0KiBvLCBib29sIGphdmFzY3JpcHQs
IGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzKiBjb3JlRmVhdHVyZXMpOwogdm9pZCBld2tf
dmlld193aW5kb3dfY2xvc2UoRXZhc19PYmplY3QqIG8pOwogCiB2b2lkIGV3a192aWV3X21vdXNl
X2xpbmtfaG92ZXJfaW4oRXZhc19PYmplY3QqIG8sIHZvaWQqIGRhdGEpOwogdm9pZCBld2tfdmll
d19tb3VzZV9saW5rX2hvdmVyX291dChFdmFzX09iamVjdCogbyk7CiAKLXZvaWQgZXdrX3ZpZXdf
dG9vbGJhcnNfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCB2aXNpYmxlKTsK
LXZvaWQgZXdrX3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QqIG8sIEVpbmFf
Qm9vbCogdmlzaWJsZSk7Cit2b2lkIGV3a192aWV3X3Rvb2xiYXJzX3Zpc2libGVfc2V0KEV2YXNf
T2JqZWN0KiBvLCBib29sIHZpc2libGUpOwordm9pZCBld2tfdmlld190b29sYmFyc192aXNpYmxl
X2dldChFdmFzX09iamVjdCogbywgYm9vbCogdmlzaWJsZSk7CiAKLXZvaWQgZXdrX3ZpZXdfc3Rh
dHVzYmFyX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgdmlzaWJsZSk7Ci12
b2lkIGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX2dldChFdmFzX09iamVjdCogbywgRWluYV9C
b29sKiB2aXNpYmxlKTsKK3ZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Zpc2libGVfc2V0KEV2YXNf
T2JqZWN0KiBvLCBib29sIHZpc2libGUpOwordm9pZCBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJs
ZV9nZXQoRXZhc19PYmplY3QqIG8sIGJvb2wqIHZpc2libGUpOwogdm9pZCBld2tfdmlld19zdGF0
dXNiYXJfdGV4dF9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHRleHQpOwogCi12b2lk
IGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9v
bCB2aXNpYmxlKTsKLXZvaWQgZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxlX2dldChFdmFzX09i
amVjdCogbywgRWluYV9Cb29sKiB2aXNpYmxlKTsKK3ZvaWQgZXdrX3ZpZXdfc2Nyb2xsYmFyc192
aXNpYmxlX3NldChFdmFzX09iamVjdCogbywgYm9vbCB2aXNpYmxlKTsKK3ZvaWQgZXdrX3ZpZXdf
c2Nyb2xsYmFyc192aXNpYmxlX2dldChFdmFzX09iamVjdCogbywgYm9vbCogdmlzaWJsZSk7CiAK
LXZvaWQgZXdrX3ZpZXdfbWVudWJhcl92aXNpYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9C
b29sIHZpc2libGUpOwotdm9pZCBld2tfdmlld19tZW51YmFyX3Zpc2libGVfZ2V0KEV2YXNfT2Jq
ZWN0KiBvLCBFaW5hX0Jvb2wqIHZpc2libGUpOwordm9pZCBld2tfdmlld19tZW51YmFyX3Zpc2li
bGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBib29sIHZpc2libGUpOwordm9pZCBld2tfdmlld19tZW51
YmFyX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0KiBvLCBib29sKiB2aXNpYmxlKTsKIAogdm9pZCBl
d2tfdmlld190b29sdGlwX3RleHRfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiB0ZXh0
KTsKIAogdm9pZCBld2tfdmlld19hZGRfY29uc29sZV9tZXNzYWdlKEV2YXNfT2JqZWN0KiBvLCBj
b25zdCBjaGFyKiBtZXNzYWdlLCB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwgY29uc3QgY2hhciog
c291cmNlSUQpOwogCiB2b2lkIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KEV2YXNfT2Jq
ZWN0KiBvLCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwotRWluYV9C
b29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0oRXZhc19PYmplY3QqIG8sIEV2YXNf
T2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciogbWVzc2FnZSk7Ci1FaW5hX0Jvb2wgZXdrX3ZpZXdf
cnVuX2phdmFzY3JpcHRfcHJvbXB0KEV2YXNfT2JqZWN0KiBvLCBFdmFzX09iamVjdCogZnJhbWUs
IGNvbnN0IGNoYXIqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIGRlZmF1bHRWYWx1ZSwgY2hhcioqIHZh
bHVlKTsKLUVpbmFfQm9vbCBld2tfdmlld19zaG91bGRfaW50ZXJydXB0X2phdmFzY3JpcHQoRXZh
c19PYmplY3QqIG8pOworYm9vbCBld2tfdmlld19ydW5famF2YXNjcmlwdF9jb25maXJtKEV2YXNf
T2JqZWN0KiBvLCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOworYm9v
bCBld2tfdmlld19ydW5famF2YXNjcmlwdF9wcm9tcHQoRXZhc19PYmplY3QqIG8sIEV2YXNfT2Jq
ZWN0KiBmcmFtZSwgY29uc3QgY2hhciogbWVzc2FnZSwgY29uc3QgY2hhciogZGVmYXVsdFZhbHVl
LCBjaGFyKiogdmFsdWUpOworYm9vbCBld2tfdmlld19zaG91bGRfaW50ZXJydXB0X2phdmFzY3Jp
cHQoRXZhc19PYmplY3QqIG8pOwogdWludDY0X3QgZXdrX3ZpZXdfZXhjZWVkZWRfZGF0YWJhc2Vf
cXVvdGEoRXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciogZGF0
YWJhc2VOYW1lLCB1aW50NjRfdCBjdXJyZW50X3NpemUsIHVpbnQ2NF90IGV4cGVjdGVkX3NpemUp
OwogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcnVuX29wZW5fcGFuZWwoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgYm9vbCBhbGxvd3NNdWx0aXBsZUZpbGVzLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgYWNjZXB0TUlNRVR5cGVzLCBFaW5hX0xpc3QqKiBzZWxlY3RlZEZpbGVu
YW1lcyk7Citib29sIGV3a192aWV3X3J1bl9vcGVuX3BhbmVsKEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBFdmFzX09iamVjdCogZnJhbWUsIGJvb2wgYWxsb3dzTXVsdGlwbGVGaWxlcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGFjY2VwdE1JTUVUeXBlcywgRWluYV9MaXN0Kiogc2VsZWN0ZWRGaWxlbmFt
ZXMpOwogCiB2b2lkIGV3a192aWV3X3JlcGFpbnQoRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQg
eCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCk7Ci12b2lkIGV3a192
aWV3X3Njcm9sbChFdmFzX09iamVjdCogbywgRXZhc19Db29yZCBkeCwgRXZhc19Db29yZCBkeSwg
RXZhc19Db29yZCBzeCwgRXZhc19Db29yZCBzeSwgRXZhc19Db29yZCBzdywgRXZhc19Db29yZCBz
aCwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSwgRXZhc19Db29yZCBjdywgRXZhc19Db29y
ZCBjaCwgRWluYV9Cb29sIG1haW5fZnJhbWUpOwordm9pZCBld2tfdmlld19zY3JvbGwoRXZhc19P
YmplY3QqIG8sIEV2YXNfQ29vcmQgZHgsIEV2YXNfQ29vcmQgZHksIEV2YXNfQ29vcmQgc3gsIEV2
YXNfQ29vcmQgc3ksIEV2YXNfQ29vcmQgc3csIEV2YXNfQ29vcmQgc2gsIEV2YXNfQ29vcmQgY3gs
IEV2YXNfQ29vcmQgY3ksIEV2YXNfQ29vcmQgY3csIEV2YXNfQ29vcmQgY2gsIGJvb2wgbWFpbl9m
cmFtZSk7CiBXZWJDb3JlOjpQYWdlKiBld2tfdmlld19jb3JlX3BhZ2VfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBvKTsKIAogV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBld2tfdmlld19m
cmFtZV9jcmVhdGUoRXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgV1RG
OjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVt
ZW50LCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJl
cik7CkBAIC0xNjAsNyArMTYwLDcgQEAgaW50IGV3a191dGlsX2RwaV9nZXQoKTsKIAogI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCiB2b2lkIGV3a192aWV3X25lZWRfdG91Y2hfZXZlbnRzX3NldChF
dmFzX09iamVjdCosIGJvb2wgbmVlZGVkKTsKLUVpbmFfQm9vbCBld2tfdmlld19uZWVkX3RvdWNo
X2V2ZW50c19nZXQoY29uc3QgRXZhc19PYmplY3QqKTsKK2Jvb2wgZXdrX3ZpZXdfbmVlZF90b3Vj
aF9ldmVudHNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0Kik7CiAjZW5kaWYKIAogRXdrX0hpc3Rvcnlf
SXRlbSAqZXdrX2hpc3RvcnlfaXRlbV9uZXdfZnJvbV9jb3JlKFdlYkNvcmU6Okhpc3RvcnlJdGVt
ICpjb3JlKTsKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIGV3a19oaXN0b3J5X2ZyZWUoRXdrX0hp
c3RvcnkqIGhpc3RvcnkpOwogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiBFd2tfQ29udGV4
dF9NZW51KiBld2tfY29udGV4dF9tZW51X25ldyhFdmFzX09iamVjdCogdmlldywgV2ViQ29yZTo6
Q29udGV4dE1lbnVDb250cm9sbGVyKiBjb250cm9sbGVyKTsKLUVpbmFfQm9vbCBld2tfY29udGV4
dF9tZW51X2ZyZWUoRXdrX0NvbnRleHRfTWVudSogbyk7Citib29sIGV3a19jb250ZXh0X21lbnVf
ZnJlZShFd2tfQ29udGV4dF9NZW51KiBvKTsKIHZvaWQgZXdrX2NvbnRleHRfbWVudV9pdGVtX2Fw
cGVuZChFd2tfQ29udGV4dF9NZW51KiBvLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0mIGNvcmUp
OwogRXdrX0NvbnRleHRfTWVudSogZXdrX2NvbnRleHRfbWVudV9jdXN0b21pemUoRXdrX0NvbnRl
eHRfTWVudSogbyk7CiB2b2lkIGV3a19jb250ZXh0X21lbnVfc2hvdyhFd2tfQ29udGV4dF9NZW51
KiBvKTsKQEAgLTE4NSw4ICsxODUsOCBAQCB2b2lkIGV3a192aWV3X2xheW91dF9pZl9uZWVkZWRf
cmVjdXJzaXZlKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdik7CiBFd2tfV2luZG93X0ZlYXR1
cmVzKiBld2tfd2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmUoY29uc3QgV2ViQ29yZTo6V2lu
ZG93RmVhdHVyZXMqIGNvcmUpOwogCiBFdmFzX09iamVjdCogZXdrX2ZyYW1lX2FkZChFdmFzKiBl
KTsKLUVpbmFfQm9vbCBld2tfZnJhbWVfaW5pdChFdmFzX09iamVjdCogbywgRXZhc19PYmplY3Qq
IHZpZXcsIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSk7Ci1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2NoaWxk
X2FkZChFdmFzX09iamVjdCogbywgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjaGls
ZCwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29u
c3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyKTsKK2Jvb2wgZXdrX2ZyYW1lX2luaXQoRXZhc19PYmpl
Y3QqIG8sIEV2YXNfT2JqZWN0KiB2aWV3LCBXZWJDb3JlOjpGcmFtZSogZnJhbWUpOworYm9vbCBl
d2tfZnJhbWVfY2hpbGRfYWRkKEV2YXNfT2JqZWN0KiBvLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29y
ZTo6RnJhbWU+IGNoaWxkLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgY29uc3QgV2ViQ29yZTo6
S1VSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIpOwogdm9pZCBld2tfZnJhbWVf
dmlld19zZXQoRXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiBuZXdQYXJlbnQpOwogCiB2b2lk
IGV3a19mcmFtZV9jb3JlX2dvbmUoRXZhc19PYmplY3QqIG8pOwpAQCAtMTk2LDggKzE5Niw4IEBA
IHZvaWQgZXdrX2ZyYW1lX2xvYWRfcHJvdmlzaW9uYWwoRXZhc19PYmplY3QqIG8pOwogdm9pZCBl
d2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9maW5pc2hlZChFdmFzX09iamVjdCogbyk7CiB2b2lk
IGV3a19mcmFtZV9sb2FkX2ZpcnN0bGF5b3V0X25vbmVtcHR5X2ZpbmlzaGVkKEV2YXNfT2JqZWN0
KiBvKTsKIHZvaWQgZXdrX2ZyYW1lX2xvYWRfZG9jdW1lbnRfZmluaXNoZWQoRXZhc19PYmplY3Qq
IG8pOwotdm9pZCBld2tfZnJhbWVfbG9hZF9maW5pc2hlZChFdmFzX09iamVjdCogbywgY29uc3Qg
Y2hhciogZXJyb3JfZG9tYWluLCBpbnQgZXJyb3JfY29kZSwgRWluYV9Cb29sIGlzX2NhbmNlbGxh
dGlvbiwgY29uc3QgY2hhciogZXJyb3JfZGVzY3JpcHRpb24sIGNvbnN0IGNoYXIqIGZhaWxpbmdf
dXJsKTsKLXZvaWQgZXdrX2ZyYW1lX2xvYWRfZXJyb3IoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNo
YXIqIGVycm9yX2RvbWFpbiwgaW50IGVycm9yX2NvZGUsIEVpbmFfQm9vbCBpc19jYW5jZWxsYXRp
b24sIGNvbnN0IGNoYXIqIGVycm9yX2Rlc2NyaXB0aW9uLCBjb25zdCBjaGFyKiBmYWlsaW5nX3Vy
bCk7Cit2b2lkIGV3a19mcmFtZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBj
aGFyKiBlcnJvcl9kb21haW4sIGludCBlcnJvcl9jb2RlLCBib29sIGlzX2NhbmNlbGxhdGlvbiwg
Y29uc3QgY2hhciogZXJyb3JfZGVzY3JpcHRpb24sIGNvbnN0IGNoYXIqIGZhaWxpbmdfdXJsKTsK
K3ZvaWQgZXdrX2ZyYW1lX2xvYWRfZXJyb3IoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIGVy
cm9yX2RvbWFpbiwgaW50IGVycm9yX2NvZGUsIGJvb2wgaXNfY2FuY2VsbGF0aW9uLCBjb25zdCBj
aGFyKiBlcnJvcl9kZXNjcmlwdGlvbiwgY29uc3QgY2hhciogZmFpbGluZ191cmwpOwogdm9pZCBl
d2tfZnJhbWVfbG9hZF9wcm9ncmVzc19jaGFuZ2VkKEV2YXNfT2JqZWN0KiBvKTsKIAogdm9pZCBl
d2tfZnJhbWVfcmVxdWVzdF93aWxsX3NlbmQoRXZhc19PYmplY3QqIG8sIEV3a19GcmFtZV9SZXNv
dXJjZV9SZXF1ZXN0KiByZXF1ZXN0KTsKQEAgLTIxMCwxMiArMjEwLDEyIEBAIHZvaWQgZXdrX2Zy
YW1lX2NvbnRlbnRzX3NpemVfY2hhbmdlZChFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB3LCBF
dmFzX0Nvb3JkIGgpCiB2b2lkIGV3a19mcmFtZV90aXRsZV9zZXQoRXZhc19PYmplY3QqIG8sIGNv
bnN0IGNoYXIqIHRpdGxlKTsKIAogdm9pZCBld2tfZnJhbWVfdmlld19jcmVhdGVfZm9yX3ZpZXco
RXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiB2aWV3KTsKLUVpbmFfQm9vbCBld2tfZnJhbWVf
dXJpX2NoYW5nZWQoRXZhc19PYmplY3QqIG8pOworYm9vbCBld2tfZnJhbWVfdXJpX2NoYW5nZWQo
RXZhc19PYmplY3QqIG8pOwogdm9pZCBld2tfZnJhbWVfZm9yY2VfbGF5b3V0KEV2YXNfT2JqZWN0
KiBvKTsKIAogV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX2ZyYW1lX3BsdWdp
bl9jcmVhdGUoRXZhc19PYmplY3QqIG8sIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNp
emUsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBXZWJDb3JlOjpL
VVJMJiB1cmwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29u
c3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgV1RGOjpTdHJp
bmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSk7CiAKLUVpbmFfQm9vbCBld2tfdmlld19u
YXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbihFdmFzX09iamVjdCogbywgRXdrX0ZyYW1lX1Jlc291
cmNlX1JlcXVlc3QqIHJlcXVlc3QpOworYm9vbCBld2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9k
ZWNpc2lvbihFdmFzX09iamVjdCogbywgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqIHJlcXVl
c3QpOwogCiB2b2lkIGV3a192aWV3X2NvbnRlbnRzX3NpemVfY2hhbmdlZChFdmFzX09iamVjdCog
bywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyLmNwcAppbmRleCBkZWI4NzM0Y2EwYTNjYzE4YTJkZmU5
NGUzNzNmMmVmMGU2MDliZTBmLi5kNWVjYWI1NDNlMDI5YjE0MjM1YWNkMmU1N2EwZTgwZjAwNTY3
MmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxlci5j
cHAKQEAgLTMwLDcgKzMwLDcgQEAgRWluYV9Cb29sIGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxl
cl9zZXQoY29uc3QgY2hhcioqIHByb3RvY29scykKICAgICByZXR1cm4gZXdrX2N1c3RvbV9wcm90
b2NvbF9oYW5kbGVyX3NvdXBfc2V0KHByb3RvY29scyk7CiAjZWxzZQogICAgIEVJTkFfTE9HX0NS
SVQoIk5vdCBpbXBsZW1lbnRlZCIpOwotICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIHJldHVy
biBmYWxzZTsKICNlbmRpZgogfQogCkBAIC00MCw2ICs0MCw2IEBAIEVpbmFfQm9vbCBld2tfY3Vz
dG9tX3Byb3RvY29sX2hhbmRsZXJfYWxsX3Vuc2V0KCkKICAgICByZXR1cm4gZXdrX2N1c3RvbV9w
cm90b2NvbF9oYW5kbGVyX3NvdXBfYWxsX3Vuc2V0KCk7CiAjZWxzZQogICAgIEVJTkFfTE9HX0NS
SVQoIk5vdCBpbXBsZW1lbnRlZCIpOwotICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIHJldHVy
biBmYWxzZTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19wcm90b2NvbF9oYW5kbGVyX3NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19w
cm90b2NvbF9oYW5kbGVyX3NvdXAuY3BwCmluZGV4IDlkNTlmZGM5NzY0ZWVmY2I1NmMyZDdmM2U2
YjhhYzdiM2QzNDBhZjIuLjA1MjM4MDk3MjNmNjA1Y2YwZGZlODhhZGZkMTE3Y2RhMjdlYmQ1NGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxlcl9z
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXJf
c291cC5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBFaW5hX0Jvb2wgZXdrX2N1c3RvbV9wcm90b2Nv
bF9oYW5kbGVyX3NvdXBfc2V0KGNvbnN0IGNoYXIqKiBwcm90b2NvbHMpCiAgICAgcHJvdG9jb2xz
U2l6ZSA9IGdfc3Rydl9sZW5ndGgoY29uc3RfY2FzdDxnY2hhcioqPihwcm90b2NvbHMpKTsKIAog
ICAgIC8vIFRoaXMgYXJyYXkgbXVzdCBiZSBudWxsIHRlcm1pbmF0ZWQuCi0gICAgRUlOQV9TQUZF
VFlfT05fVFJVRV9SRVRVUk5fVkFMKCFwcm90b2NvbHNTaXplIHx8IHByb3RvY29sc1twcm90b2Nv
bHNTaXplXSwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fVFJVRV9SRVRVUk5fVkFM
KCFwcm90b2NvbHNTaXplIHx8IHByb3RvY29sc1twcm90b2NvbHNTaXplXSwgZmFsc2UpOwogCiAg
ICAgcmVxdWVzdGVyID0gc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfVFlQ
RV9SRVFVRVNURVIpOwogICAgIGlmICghcmVxdWVzdGVyKSB7CkBAIC0xNTksMTUgKzE1OSwxNSBA
QCBFaW5hX0Jvb2wgZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX3NvdXBfc2V0KGNvbnN0IGNo
YXIqKiBwcm90b2NvbHMpCiAKICAgICBpZiAoc291cF9zZXNzaW9uX2ZlYXR1cmVfaGFzX2ZlYXR1
cmUocmVxdWVzdGVyLCBFV0tfVFlQRV9DVVNUT01fUFJPVE9DT0xfSEFORExFUikpIHsKICAgICAg
ICAgY3VzdG9tUHJvdG9jb2xBZGRlZENvdW50Kys7Ci0gICAgICAgIHJldHVybiBFSU5BX1RSVUU7
CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIHNjaGVtZXMgPSBnX3N0cmR1cHYo
Y29uc3RfY2FzdDxnY2hhcioqPihwcm90b2NvbHMpKTsKICAgICBpZiAoIShzY2hlbWVzICYmIHNv
dXBfc2Vzc2lvbl9mZWF0dXJlX2FkZF9mZWF0dXJlKHJlcXVlc3RlciwgRVdLX1RZUEVfQ1VTVE9N
X1BST1RPQ09MX0hBTkRMRVIpKSkKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGN1c3RvbVByb3RvY29sQWRkZWRDb3VudCsrOwotICAgIHJl
dHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfY3Vz
dG9tX3Byb3RvY29sX2hhbmRsZXJfc291cF9hbGxfdW5zZXQoKQpAQCAtMTc2LDIyICsxNzYsMjIg
QEAgRWluYV9Cb29sIGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9zb3VwX2FsbF91bnNldCgp
CiAgICAgU291cFNlc3Npb25GZWF0dXJlKiByZXF1ZXN0ZXI7CiAKICAgICBpZiAoIWN1c3RvbVBy
b3RvY29sQWRkZWRDb3VudCkKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIHJlcXVlc3RlciA9IHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShz
ZXNzaW9uLCBTT1VQX1RZUEVfUkVRVUVTVEVSKTsKICAgICBpZiAoIXJlcXVlc3RlcikKLSAgICAg
ICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICgh
c291cF9zZXNzaW9uX2ZlYXR1cmVfaGFzX2ZlYXR1cmUocmVxdWVzdGVyLCBFV0tfVFlQRV9DVVNU
T01fUFJPVE9DT0xfSEFORExFUikpCi0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoY3VzdG9tUHJvdG9jb2xBZGRlZENvdW50ID09IDEp
IHsKICAgICAgICAgaWYgKHNvdXBfc2Vzc2lvbl9mZWF0dXJlX3JlbW92ZV9mZWF0dXJlKHJlcXVl
c3RlciwgRVdLX1RZUEVfQ1VTVE9NX1BST1RPQ09MX0hBTkRMRVIpKQogICAgICAgICAgICAgZ19z
dHJmcmVldihzY2hlbWVzKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIEVJTkFf
RkFMU0U7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY3VzdG9tUHJv
dG9jb2xBZGRlZENvdW50LS07Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3Bw
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAKaW5kZXggNjRmMTRmODU0
YzNkNzBhM2JkYTgwYmIxNjRjODZjZDExY2U2ZjBlMC4uNTRkN2M3MjIxZTAzYjlmYzIwZWMwOWEz
NGY4MDRmN2RhNmU1OTlhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19z
ZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAK
QEAgLTExNiwyNSArMTE2LDI1IEBAIEVpbmFfQm9vbCBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFz
ZV9wYXRoX3NldChjb25zdCBjaGFyKiBkaXJlY3RvcnkpCiAgICAgaWYgKGRpcmVjdG9yeSkgewog
ICAgICAgICBpZiAoV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuaXNFbmFibGVkKCkpIHsKICAgICAg
ICAgICAgIEVSUigiSWNvbkRhdGFiYXNlIGlzIGFscmVhZHkgb3BlbjogJXMiLCBfZXdrX2ljb25f
ZGF0YWJhc2VfcGF0aCk7Ci0gICAgICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIHN0cnVjdCBzdGF0IHN0Owog
CiAgICAgICAgIGlmIChzdGF0KGRpcmVjdG9yeSwgJnN0KSkgewogICAgICAgICAgICAgRVJSKCJj
b3VsZCBub3Qgc3RhdCglcyk6ICVzIiwgZGlyZWN0b3J5LCBzdHJlcnJvcihlcnJubykpOwotICAg
ICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoIVNfSVNESVIoc3Quc3RfbW9kZSkpIHsKICAgICAgICAg
ICAgIEVSUigibm90IGEgZGlyZWN0b3J5OiAlcyIsIGRpcmVjdG9yeSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
CiAgICAgICAgIGlmIChhY2Nlc3MoZGlyZWN0b3J5LCBSX09LIHwgV19PSykpIHsKICAgICAgICAg
ICAgIEVSUigiY291bGQgbm90IGFjY2VzcyBkaXJlY3RvcnkgJyVzJyBmb3IgcmVhZCBhbmQgd3Jp
dGU6ICVzIiwKICAgICAgICAgICAgICAgICBkaXJlY3RvcnksIHN0cmVycm9yKGVycm5vKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQogCiAgICAgICAgIFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLnNldEVuYWJsZWQo
dHJ1ZSk7CkBAIC0xNTEsNyArMTUxLDcgQEAgRWluYV9Cb29sIGV3a19zZXR0aW5nc19pY29uX2Rh
dGFiYXNlX3BhdGhfc2V0KGNvbnN0IGNoYXIqIGRpcmVjdG9yeSkKICAgICAgICAgICAgIF9ld2tf
aWNvbl9kYXRhYmFzZV9wYXRoID0gMDsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gRUlO
QV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBjb25zdCBjaGFyKiBld2tfc2V0dGluZ3Nf
aWNvbl9kYXRhYmFzZV9wYXRoX2dldCh2b2lkKQpAQCAtMTY3LDEyICsxNjcsMTIgQEAgY29uc3Qg
Y2hhciogZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aF9nZXQodm9pZCkKIEVpbmFfQm9v
bCBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9jbGVhcih2b2lkKQogewogICAgIGlmICghV2Vi
Q29yZTo6aWNvbkRhdGFiYXNlKCkuaXNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBFSU5BX0ZB
TFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFXZWJDb3JlOjppY29uRGF0YWJh
c2UoKS5pc09wZW4oKSkKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLnJlbW92ZUFsbEljb25zKCk7
Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogY2Fpcm9fc3Vy
ZmFjZV90KiBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9pY29uX3N1cmZhY2VfZ2V0KGNvbnN0
IGNoYXIqIHVybCkKQEAgLTI1NCwxNCArMjU0LDE0IEBAIGNvbnN0IGNoYXIqIGV3a19zZXR0aW5n
c19kZWZhdWx0X3VzZXJfYWdlbnRfZ2V0KHZvaWQpCiBFaW5hX0Jvb2wgZXdrX3NldHRpbmdzX2Nh
Y2hlX2RpcmVjdG9yeV9wYXRoX3NldChjb25zdCBjaGFyKiBwYXRoKQogewogICAgIGlmICghcGF0
aCkKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIFdlYkNvcmU6OmNhY2hlU3RvcmFnZSgpLnNldENhY2hlRGlyZWN0b3J5KFdURjo6U3RyaW5n
Ojpmcm9tVVRGOChwYXRoKSk7CiAgICAgaWYgKCFfZXdrX2NhY2hlX2RpcmVjdG9yeV9wYXRoKQog
ICAgICAgICBfZXdrX2NhY2hlX2RpcmVjdG9yeV9wYXRoID0gZWluYV9zdHJpbmdzaGFyZV9hZGQo
cGF0aCk7CiAgICAgZWxzZQogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJl9ld2tf
Y2FjaGVfZGlyZWN0b3J5X3BhdGgsIHBhdGgpOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIGNvbnN0IGNoYXIqIGV3a19zZXR0aW5nc19jYWNoZV9kaXJlY3Rv
cnlfcGF0aF9nZXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZS5jcHAKaW5kZXggZTM2NTExYzE2YjYyYzg0NTNiYjA4NjRhMTEyZjA2OWYxOWRi
YzU1NS4uYmRmMDFhZWI2YjRmYzRkODI2YzM2M2YxMzM1NmE3MGRkMGJlNGY4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwCkBAIC0y
NTQsNyArMjU0LDcgQEAgc3RhdGljIGlubGluZSBFaW5hX0Jvb2wgX2V3a190aWxlZF9iYWNraW5n
X3N0b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9hZGQoRXdrX1RpbGUKIAogICAgIHJlcXVlc3QgPSBz
dGF0aWNfY2FzdDxFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9QcmVfUmVuZGVyX1JlcXVlc3QqPiht
YWxsb2Moc2l6ZW9mKCpyZXF1ZXN0KSkpOwogICAgIGlmICghcmVxdWVzdCkKLSAgICAgICAgcmV0
dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChwcmlvcml0
eSA9PSBQUkVfUkVOREVSX1BSSU9SSVRZX0hJR0gpCiAgICAgICAgIHByaXYtPnJlbmRlci5wcmVS
ZW5kZXJSZXF1ZXN0cyA9IGVpbmFfaW5saXN0X3ByZXBlbmQKQEAgLTI2Nyw3ICsyNjcsNyBAQCBz
dGF0aWMgaW5saW5lIEVpbmFfQm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRl
cl9yZXF1ZXN0X2FkZChFd2tfVGlsZQogICAgIHJlcXVlc3QtPnJvdyA9IHJvdzsKICAgICByZXF1
ZXN0LT56b29tID0gem9vbTsKIAotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJl
X3JlbmRlcl9yZXF1ZXN0X2RlbChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBwcml2LCBF
d2tfVGlsZWRfQmFja2luZ19TdG9yZV9QcmVfUmVuZGVyX1JlcXVlc3QqIHJlcXVlc3QpCkBAIC0z
NzIsMTAgKzM3MiwxMCBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV9pdGVtX3Byb2Nlc3NfaWRsZXJfY2Iodm9pZCogZGF0YSkKIAogICAgIGlmICghcHJpdi0+cmVu
ZGVyLnByZVJlbmRlclJlcXVlc3RzKSB7CiAgICAgICAgIHByaXYtPnJlbmRlci5pZGxlciA9IDA7
Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGlj
IGlubGluZSB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX3Byb2Nlc3NfaWRsZXJf
c3RvcChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBwcml2KQpAQCAtMzk4LDI0ICszOTgs
MjQgQEAgc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX3By
b2Nlc3NfaWRsZXJfc3RhcnQoRXdrX1RpbGVkX0IKIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX2Rpc2FibGVfcmVuZGVyKEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0Rh
dGEqIHByaXYpCiB7CiAgICAgaWYgKHByaXYtPnJlbmRlci5zdXNwZW5kKQotICAgICAgICByZXR1
cm4gRUlOQV9UUlVFOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHByaXYtPnJlbmRlci5z
dXNwZW5kID0gRUlOQV9UUlVFOworICAgIHByaXYtPnJlbmRlci5zdXNwZW5kID0gdHJ1ZTsKICAg
ICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9wcm9jZXNzX2lkbGVyX3N0b3AocHJpdik7
Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIEVp
bmFfQm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZW5hYmxlX3JlbmRlcihFd2tfVGlsZWRf
QmFja2luZ19TdG9yZV9EYXRhKiBwcml2KQogewogICAgIGlmICghcHJpdi0+cmVuZGVyLnN1c3Bl
bmQpCi0gICAgICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgICAgIHJldHVybiB0cnVlOwogCi0g
ICAgcHJpdi0+cmVuZGVyLnN1c3BlbmQgPSBFSU5BX0ZBTFNFOworICAgIHByaXYtPnJlbmRlci5z
dXNwZW5kID0gZmFsc2U7CiAKICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZmlsbF9yZW5k
ZXJlcnMocHJpdik7CiAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fcHJvY2Vzc19p
ZGxlcl9zdGFydChwcml2KTsKIAotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIHN0YXRpYyBpbmxpbmUgRWluYV9Cb29sIF9ld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV9pdGVtX2ZpbGwoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSogcHJpdiwgRXdrX1RpbGVk
X0JhY2tpbmdfU3RvcmVfSXRlbSogaXRlbSwgdW5zaWduZWQgbG9uZyBjb2x1bW4sIHVuc2lnbmVk
IGxvbmcgcm93KQpAQCAtNDUzLDcgKzQ1Myw3IEBAIHN0YXRpYyBpbmxpbmUgRWluYV9Cb29sIF9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX2ZpbGwoRXdrX1RpbGVkX0JhY2tpbmdfU3RvCiAg
ICAgICAgICAgICBpZiAoIXByaXYtPnJlbmRlci5zdXNwZW5kKSB7CiAgICAgICAgICAgICAgICAg
dGlsZSA9IF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX25ldyhwcml2LCBjdXJyZW50Q29s
dW1uLCBjdXJyZW50Um93LCB6b29tKTsKICAgICAgICAgICAgICAgICBpZiAoIXRpbGUpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3Rp
bGVfYXNzb2NpYXRlKHByaXYsIHRpbGUsIGl0ZW0pOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgaWYgKHRpbGUgIT0gaXRlbS0+dGlsZSkgewpAQCAtNDY1LDEwICs0NjUsMTAgQEAgc3Rh
dGljIGlubGluZSBFaW5hX0Jvb2wgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fZmlsbChF
d2tfVGlsZWRfQmFja2luZ19TdG8KIAogZW5kOgogCi0gICAgICAgIHJldHVybiBFSU5BX1RSVUU7
CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHJldHVybiBFSU5BX1RSVUU7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVt
KiBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9hZGQoRXdrX1RpbGVkX0JhY2tpbmdfU3Rv
cmVfRGF0YSogcHJpdiwgdW5zaWduZWQgbG9uZyBjb2x1bW4sIHVuc2lnbmVkIGxvbmcgcm93KQpA
QCAtNTI0LDcgKzUyNCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfY2hhbmdlZChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhCiAgICAgaWYgKHByaXYt
PmNoYW5nZWQuYW55KQogICAgICAgICByZXR1cm47CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2hh
bmdlZChwcml2LT5zZWxmKTsKLSAgICBwcml2LT5jaGFuZ2VkLmFueSA9IEVJTkFfVFJVRTsKKyAg
ICBwcml2LT5jaGFuZ2VkLmFueSA9IHRydWU7CiB9CiAKIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZV92aWV3X2NvbHNfZW5kX2RlbChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9E
YXRhKiBwcml2LCBFaW5hX0lubGlzdCoqIHJvd0xpc3QsIHVuc2lnbmVkIGludCBjb3VudCkKQEAg
LTU1NywxMiArNTU3LDEyIEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a190aWxlZF9iYWNraW5nX3N0
b3JlX3ZpZXdfY29sc19lbmRfYWRkKEV3a19UaWxlZF9CYWNraW5nX1N0CiAgICAgICAgIGlmICgh
aXQpIHsKICAgICAgICAgICAgIENSSVRJQ0FMKCJmYWlsZWQgdG8gYWRkIGNvbHVtbiAldSBvZiAl
dSBpbiByb3cgJXUuIiwgaSwgY291bnQsIHJvdyk7CiAgICAgICAgICAgICBfZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfdmlld19jb2xzX2VuZF9kZWwocHJpdiwgcm93TGlzdCwgaSk7Ci0gICAgICAg
ICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQogCiAgICAgICAgICpyb3dMaXN0ID0gZWluYV9pbmxpc3RfYXBwZW5kKCpyb3dMaXN0LCBF
SU5BX0lOTElTVF9HRVQoaXQpKTsKICAgICB9Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3Zp
ZXdfcm93X2RlbChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBwcml2LCBFaW5hX0lubGlz
dCogcm93KQpAQCAtNjIzLDggKzYyMyw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfbW9kZWxfbWF0cml4X2NyZWF0ZShFd2tfVGlsZWRfQmFja2luCiAgICAg
aWYgKHByaXYtPm1vZGVsLm1hdHJpeCkgewogICAgICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfdmlld19yb3dzX2FsbF9kZWwocHJpdik7CiAKLSAgICAgICAgcHJpdi0+Y2hhbmdlZC5vZmZz
ZXQgPSBFSU5BX0ZBTFNFOwotICAgICAgICBwcml2LT5jaGFuZ2VkLnNpemUgPSBFSU5BX1RSVUU7
CisgICAgICAgIHByaXYtPmNoYW5nZWQub2Zmc2V0ID0gZmFsc2U7CisgICAgICAgIHByaXYtPmNo
YW5nZWQuc2l6ZSA9IHRydWU7CiAKICAgICAgICAgZXdrX3RpbGVfbWF0cml4X2ZyZWUocHJpdi0+
bW9kZWwubWF0cml4KTsKICAgICB9CkBAIC02ODMsNyArNjgzLDcgQEAgc3RhdGljIEVpbmFfQm9v
bCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2lnX3Vzcih2b2lkKiBkYXRhLCBpbnQgdHlwZSwg
dm9pZCogZXYKIAogICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X2RiZyhwcml2KTsK
ICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfbWVtX2RiZyhwcml2KTsKLSAgICByZXR1cm4g
RUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogI2VuZGlmCiAKQEAgLTcxNiw3ICs3MTYs
NyBAQCBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfYWRkKEV2YXNf
T2JqZWN0KiBld2tUaWxlKQogICAgIHByaXYtPm1vZGVsLm9sZC5yb3dzID0gMDsKICAgICBwcml2
LT5tb2RlbC53aWR0aCA9IDA7CiAgICAgcHJpdi0+bW9kZWwuaGVpZ2h0ID0gMDsKLSAgICBwcml2
LT5yZW5kZXIuc3VzcGVuZCA9IEVJTkFfRkFMU0U7CisgICAgcHJpdi0+cmVuZGVyLnN1c3BlbmQg
PSBmYWxzZTsKICAgICBwcml2LT5jb2xvclNwYWNlID0gRVZBU19DT0xPUlNQQUNFX0FSR0I4ODg4
OyAvLyBUT0RPOiBkZXRlY3QgaXQuCiAKICAgICBldmFzX29iamVjdF9zbWFydF9kYXRhX3NldChl
d2tUaWxlLCBwcml2KTsKQEAgLTc4Nyw3ICs3ODcsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfc21hcnRfbW92ZShFdmFzX09iamVjdCogZXdrVGlsZSwgRXZhc19Db29y
ZAogICAgIGlmIChwcml2LT52aWV3LnggPT0geCAmJiBwcml2LT52aWV3LnkgPT0geSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgcHJpdi0+Y2hhbmdlZC5wb3NpdGlvbiA9IEVJTkFfVFJVRTsKKyAg
ICBwcml2LT5jaGFuZ2VkLnBvc2l0aW9uID0gdHJ1ZTsKICAgICBfZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfY2hhbmdlZChwcml2KTsKIH0KIApAQCAtODAzLDcgKzgwMyw3IEBAIHN0YXRpYyB2b2lk
IF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9yZXNpemUoRXZhc19PYmplY3QqIGV3a1Rp
bGUsIEV2YXNfQ29vCiAgICAgaWYgKHByaXYtPnZpZXcud2lkdGggPT0gd2lkdGggJiYgcHJpdi0+
dmlldy5oZWlnaHQgPT0gaGVpZ2h0KQogICAgICAgICByZXR1cm47CiAKLSAgICBwcml2LT5jaGFu
Z2VkLnNpemUgPSBFSU5BX1RSVUU7CisgICAgcHJpdi0+Y2hhbmdlZC5zaXplID0gdHJ1ZTsKICAg
ICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfY2hhbmdlZChwcml2KTsKIH0KIApAQCAtMTMwNCw3
ICsxMzA0LDcgQEAgc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2Nh
bGN1bGF0ZShFdmFzX09iamVjdCogZXdrVGlsZSkKIAogICAgIFBSSVZfREFUQV9HRVRfT1JfUkVU
VVJOKGV3a1RpbGUsIHByaXYpOwogCi0gICAgcHJpdi0+Y2hhbmdlZC5hbnkgPSBFSU5BX0ZBTFNF
OworICAgIHByaXYtPmNoYW5nZWQuYW55ID0gZmFsc2U7CiAKICAgICBld2tfdGlsZV9tYXRyaXhf
ZnJlZXplKHByaXYtPm1vZGVsLm1hdHJpeCk7CiAKQEAgLTEzMjcsMTYgKzEzMjcsMTYgQEAgc3Rh
dGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2NhbGN1bGF0ZShFdmFzX09i
amVjdCogZXdrVGlsZSkKIAogICAgIGlmIChwcml2LT5jaGFuZ2VkLnBvc2l0aW9uICYmIChwcml2
LT52aWV3LnggIT0geCB8fCBwcml2LT52aWV3LnkgIT0geSkpIHsKICAgICAgICAgX2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2NhbGN1bGF0ZV9wb3MocHJpdiwgeCwgeSk7Ci0gICAgICAg
IHByaXYtPmNoYW5nZWQucG9zaXRpb24gPSBFSU5BX0ZBTFNFOworICAgICAgICBwcml2LT5jaGFu
Z2VkLnBvc2l0aW9uID0gZmFsc2U7CiAgICAgfQogICAgIGlmIChwcml2LT5jaGFuZ2VkLm9mZnNl
dCkgewogICAgICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfY2FsY3VsYXRlX29m
ZnNldChwcml2LCB4LCB5KTsKLSAgICAgICAgcHJpdi0+Y2hhbmdlZC5vZmZzZXQgPSBFSU5BX0ZB
TFNFOworICAgICAgICBwcml2LT5jaGFuZ2VkLm9mZnNldCA9IGZhbHNlOwogICAgIH0KIAogICAg
IGlmIChwcml2LT5jaGFuZ2VkLnNpemUpIHsKICAgICAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0
b3JlX3NtYXJ0X2NhbGN1bGF0ZV9zaXplKHByaXYsIHdpZHRoLCBoZWlnaHQpOwotICAgICAgICBw
cml2LT5jaGFuZ2VkLnNpemUgPSBFSU5BX0ZBTFNFOworICAgICAgICBwcml2LT5jaGFuZ2VkLnNp
emUgPSBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoIXByaXYtPnJlbmRlci5zdXNwZW5kICYmIHBy
aXYtPmNoYW5nZWQubW9kZWwpIHsKQEAgLTEzNDksNyArMTM0OSw3IEBAIHN0YXRpYyB2b2lkIF9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9jYWxjdWxhdGUoRXZhc19PYmplY3QqIGV3a1Rp
bGUpCiAgICAgICAgIGV3a190aWxlX21hdHJpeF9yZXNpemUocHJpdi0+bW9kZWwubWF0cml4LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPm1vZGVsLmN1cnJlbnQuY29sdW1u
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5tb2RlbC5jdXJyZW50LnJv
d3MpOwotICAgICAgICBwcml2LT5jaGFuZ2VkLm1vZGVsID0gRUlOQV9GQUxTRTsKKyAgICAgICAg
cHJpdi0+Y2hhbmdlZC5tb2RlbCA9IGZhbHNlOwogICAgICAgICBldmFzX29iamVjdF9yZXNpemUo
cHJpdi0+Y29udGVudHNDbGlwcGVyLCBwcml2LT5tb2RlbC53aWR0aCwgcHJpdi0+bW9kZWwuaGVp
Z2h0KTsKICAgICAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2NhbGN1bGF0ZV9v
ZmZzZXRfZm9yY2UocHJpdik7CiAKQEAgLTE0MzIsMjQgKzE0MzIsMjQgQEAgc3RhdGljIEVpbmFf
Qm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xsX2Z1bGxfb2Zmc2V0X3NldF9pbnRl
cm5hbChFd2tfVGkKIHsKICAgICAvKiBUT0RPOiBjaGVjayBvZmZzZXQgZ28gb3V0IG9mIGJvdW5k
cywgY2xhbXAgKi8KICAgICBpZiAocHJpdi0+cmVuZGVyLmRpc2FibGVkKQotICAgICAgICByZXR1
cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcHJpdi0+dmlldy5v
ZmZzZXQuY3VyLnggPSB4OwogICAgIHByaXYtPnZpZXcub2Zmc2V0LmN1ci55ID0geTsKIAotICAg
IHByaXYtPmNoYW5nZWQub2Zmc2V0ID0gRUlOQV9UUlVFOworICAgIHByaXYtPmNoYW5nZWQub2Zm
c2V0ID0gdHJ1ZTsKICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfY2hhbmdlZChwcml2KTsK
IAotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9v
bCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zY3JvbGxfZnVsbF9vZmZzZXRfc2V0KEV2YXNfT2Jq
ZWN0KiBld2tUaWxlLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSkKIHsKICAgICBEQkcoImV3
a1RpbGUlcCwgeD0lZCwgeT0lZCIsIGV3a1RpbGUsIHgsIHkpOwogCi0gICAgUFJJVl9EQVRBX0dF
VF9PUl9SRVRVUk4oZXdrVGlsZSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgUFJJVl9EQVRBX0dF
VF9PUl9SRVRVUk4oZXdrVGlsZSwgcHJpdiwgZmFsc2UpOwogICAgIGlmICh4ID09IHByaXYtPnZp
ZXcub2Zmc2V0LmN1ci54ICYmIHkgPT0gcHJpdi0+dmlldy5vZmZzZXQuY3VyLnkpCi0gICAgICAg
IHJldHVybiBFSU5BX1RSVUU7CisgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIF9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9zY3JvbGxfZnVsbF9vZmZzZXRfc2V0X2ludGVybmFsKHBy
aXYsIHgsIHkpOwogfQpAQCAtMTQ1OCw5ICsxNDU4LDkgQEAgRWluYV9Cb29sIGV3a190aWxlZF9i
YWNraW5nX3N0b3JlX3Njcm9sbF9mdWxsX29mZnNldF9hZGQoRXZhc19PYmplY3QqIGV3a1RpbGUs
IEUKIHsKICAgICBEQkcoImV3a1RpbGUlcCwgZGVsdGFYPSVkLCBkZWx0YVk9JWQiLCBld2tUaWxl
LCBkZWx0YVgsIGRlbHRhWSk7CiAKLSAgICBQUklWX0RBVEFfR0VUX09SX1JFVFVSTihld2tUaWxl
LCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBQUklWX0RBVEFfR0VUX09SX1JFVFVSTihld2tUaWxl
LCBwcml2LCBmYWxzZSk7CiAgICAgaWYgKCFkZWx0YVggJiYgIWRlbHRhWSkKLSAgICAgICAgcmV0
dXJuIEVJTkFfVFJVRTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gX2V3a190
aWxlZF9iYWNraW5nX3N0b3JlX3Njcm9sbF9mdWxsX29mZnNldF9zZXRfaW50ZXJuYWwKICAgICAg
ICAgICAgICAgIChwcml2LCBwcml2LT52aWV3Lm9mZnNldC5jdXIueCArIGRlbHRhWCwgcHJpdi0+
dmlldy5vZmZzZXQuY3VyLnkgKyBkZWx0YVkpOwpAQCAtMTQ3NCw3ICsxNDc0LDcgQEAgc3RhdGlj
IEVpbmFfQm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV9zZXRfaW50ZXJuYWwoRXdr
X1RpbGVkX0JhY2tpbmdfU3QKICAgICBpZiAoZmFic2YocHJpdi0+dmlldy50aWxlLnpvb20gLSAq
em9vbSkgPCBaT09NX1NURVBfTUlOKSB7CiAgICAgICAgIERCRygiaWdub3JlZCBhcyB6b29tIGRp
ZmZlcmVuY2UgaXMgPCAlZjogJWYiLAogICAgICAgICAgICAgKGRvdWJsZSlaT09NX1NURVBfTUlO
LCBmYWJzZihwcml2LT52aWV3LnRpbGUuem9vbSAtICp6b29tKSk7Ci0gICAgICAgIHJldHVybiBF
SU5BX1RSVUU7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIF9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfZmx1c2gocHJpdik7CkBAIC0xNDk2LDcg
KzE0OTYsNyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29t
X3NldF9pbnRlcm5hbChFd2tfVGlsZWRfQmFja2luZ19TdAogICAgIGlmICghcHJpdi0+dmlldy53
aWR0aCB8fCAhcHJpdi0+dmlldy5oZWlnaHQpIHsKICAgICAgICAgcHJpdi0+dmlldy5vZmZzZXQu
YmFzZS54ID0gMDsKICAgICAgICAgcHJpdi0+dmlldy5vZmZzZXQuYmFzZS55ID0gMDsKLSAgICAg
ICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIEVp
bmFfSW5saXN0KiogaXRlcmF0b3IsICoqaXRlcmF0b3JFbmQ7CiAgICAgRXdrX1RpbGVkX0JhY2tp
bmdfU3RvcmVfSXRlbSogaXQ7CkBAIC0xNTIyLDggKzE1MjIsOCBAQCBzdGF0aWMgRWluYV9Cb29s
IF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3NldF9pbnRlcm5hbChFd2tfVGlsZWRfQmFj
a2luZ19TdAogICAgIHByaXYtPm1vZGVsLmJhc2UuY29sdW1uID0gLW5ld1ggLyB0aWxlV2lkdGg7
CiAgICAgcHJpdi0+bW9kZWwuYmFzZS5yb3cgPSAtbmV3WSAvIHRpbGVIZWlnaHQ7CiAKLSAgICBw
cml2LT5jaGFuZ2VkLnNpemUgPSBFSU5BX1RSVUU7Ci0gICAgcHJpdi0+Y2hhbmdlZC5tb2RlbCA9
IEVJTkFfVFJVRTsKKyAgICBwcml2LT5jaGFuZ2VkLnNpemUgPSB0cnVlOworICAgIHByaXYtPmNo
YW5nZWQubW9kZWwgPSB0cnVlOwogICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9jaGFuZ2Vk
KHByaXYpOwogCiAgICAgcHJpdi0+dmlldy5vZmZzZXQuY3VyLnggPSBuZXdYOwpAQCAtMTU2MSwx
NCArMTU2MSwxNCBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV96
b29tX3NldF9pbnRlcm5hbChFd2tfVGlsZWRfQmFja2luZ19TdAogICAgICAgICB0aWxlUG9zaXRp
b25ZICs9IHRpbGVIZWlnaHQ7CiAgICAgfQogCi0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21f
c2V0KEV2YXNfT2JqZWN0KiBld2tUaWxlLCBmbG9hdCogem9vbSwgRXZhc19Db29yZCBjdXJyZW50
WCwgRXZhc19Db29yZCBjdXJyZW50WSwgRXZhc19Db29yZCogb2Zmc2V0WCwgRXZhc19Db29yZCog
b2Zmc2V0WSkKIHsKICAgICBEQkcoImV3a1RpbGUlcCwgem9vbT0lZiIsIGV3a1RpbGUsICp6b29t
KTsKIAotICAgIFBSSVZfREFUQV9HRVRfT1JfUkVUVVJOKGV3a1RpbGUsIHByaXYsIEVJTkFfRkFM
U0UpOworICAgIFBSSVZfREFUQV9HRVRfT1JfUkVUVVJOKGV3a1RpbGUsIHByaXYsIGZhbHNlKTsK
IAogICAgIHJldHVybiBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV9zZXRfaW50ZXJuYWwo
cHJpdiwgem9vbSwgY3VycmVudFgsIGN1cnJlbnRZLCBvZmZzZXRYLCBvZmZzZXRZKTsKIH0KQEAg
LTE1NzYsMTMgKzE1NzYsMTMgQEAgRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3pv
b21fc2V0KEV2YXNfT2JqZWN0KiBld2tUaWxlLCBmbG9hdCogem9vbSwgRXYKIEVpbmFfQm9vbCBl
d2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3dlYWtfc2V0KEV2YXNfT2JqZWN0KiBld2tUaWxl
LCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN1cnJlbnRYLCBFdmFzX0Nvb3JkIGN1cnJlbnRZKQog
ewogICAgIERCRygiZXdrVGlsZSVwLCB6b29tPSVmIiwgZXdrVGlsZSwgem9vbSk7Ci0gICAgUFJJ
Vl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrVGlsZSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgUFJJ
Vl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrVGlsZSwgcHJpdiwgZmFsc2UpOwogICAgIGlmICghcHJp
di0+dmlldy53aWR0aCB8fCAhcHJpdi0+dmlldy5oZWlnaHQpCi0gICAgICAgIHJldHVybiBFSU5B
X0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgRWluYV9Jbmxpc3QqKiBpdGVyYXRv
ciwgKiogaXRlcmF0b3JFbmQ7CiAgICAgRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSogaXRl
bTsKICAgICBFdmFzX0Nvb3JkIHRpbGVXaWR0aCwgdGlsZUhlaWdodDsKLSAgICBFaW5hX0Jvb2wg
cmVDYWxjdWxhdGUgPSBFSU5BX0ZBTFNFOworICAgIEVpbmFfQm9vbCByZUNhbGN1bGF0ZSA9IGZh
bHNlOwogCiAgICAgZmxvYXQgc2NhbGUgPSB6b29tIC8gcHJpdi0+dmlldy50aWxlLnpvb207CiAK
QEAgLTE2MDgsMTEgKzE2MDgsMTEgQEAgRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3Jl
X3pvb21fd2Vha19zZXQoRXZhc19PYmplY3QqIGV3a1RpbGUsIGZsb2F0IHpvb20KICAgICBpZiAo
YmFzZVJvdyAhPSBwcml2LT5tb2RlbC5iYXNlLnJvdyB8fCBiYXNlQ29sdW1uICE9IHByaXYtPm1v
ZGVsLmJhc2UuY29sdW1uKSB7CiAgICAgICAgIHByaXYtPm1vZGVsLmJhc2Uucm93ID0gYmFzZVJv
dzsKICAgICAgICAgcHJpdi0+bW9kZWwuYmFzZS5jb2x1bW4gPSBiYXNlQ29sdW1uOwotICAgICAg
ICByZUNhbGN1bGF0ZSA9IEVJTkFfVFJVRTsKKyAgICAgICAgcmVDYWxjdWxhdGUgPSB0cnVlOwog
ICAgIH0KIAogICAgIGlmICh2cm93cyA+IHByaXYtPnZpZXcucm93cyB8fCB2Y29scyA+IHByaXYt
PnZpZXcuY29scykKLSAgICAgICAgcmVDYWxjdWxhdGUgPSBFSU5BX1RSVUU7CisgICAgICAgIHJl
Q2FsY3VsYXRlID0gdHJ1ZTsKIAogICAgIGlmIChyZUNhbGN1bGF0ZSkgewogICAgICAgICBFdmFz
X0Nvb3JkIHdpZHRoLCBoZWlnaHQ7CkBAIC0xNjQ0LDcgKzE2NDQsNyBAQCBFaW5hX0Jvb2wgZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV93ZWFrX3NldChFdmFzX09iamVjdCogZXdrVGlsZSwg
ZmxvYXQgem9vbQogICAgICAgICB0aWxlUG9zaXRpb25ZICs9IHRpbGVIZWlnaHQ7CiAgICAgfQog
Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBld2tf
dGlsZWRfYmFja2luZ19zdG9yZV9maXhfb2Zmc2V0cyhFdmFzX09iamVjdCogZXdrVGlsZSwgRXZh
c19Db29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQpCkBAIC0xNzMwLDEwICsxNzMwLDEwIEBA
IHZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQo
RXZhc19PYmplY3QqIGV3a1RpbGUsIEVpCiAKIEVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19z
dG9yZV91cGRhdGUoRXZhc19PYmplY3QqIGV3a1RpbGUsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiB1
cGRhdGUpCiB7Ci0gICAgUFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrVGlsZSwgcHJpdiwgRUlO
QV9GQUxTRSk7CisgICAgUFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrVGlsZSwgcHJpdiwgZmFs
c2UpOwogCiAgICAgaWYgKHByaXYtPnJlbmRlci5kaXNhYmxlZCkKLSAgICAgICAgcmV0dXJuIEVJ
TkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBld2tfdGlsZV9t
YXRyaXhfdXBkYXRlKHByaXYtPm1vZGVsLm1hdHJpeCwgdXBkYXRlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByaXYtPnZpZXcudGlsZS56b29tKTsKQEAgLTE3NzUsNyArMTc3
NSw3IEBAIHZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfY29udGVudHNfcmVzaXplKEV2YXNf
T2JqZWN0KiBld2tUaWxlLCBFdmFzX0Nvb3JkIHdpCiAKICAgICBwcml2LT5tb2RlbC53aWR0aCA9
IHdpZHRoOwogICAgIHByaXYtPm1vZGVsLmhlaWdodCA9IGhlaWdodDsKLSAgICBwcml2LT5jaGFu
Z2VkLm1vZGVsID0gRUlOQV9UUlVFOworICAgIHByaXYtPmNoYW5nZWQubW9kZWwgPSB0cnVlOwog
CiAgICAgREJHKCJ3LGg9JWQsICVkIiwgd2lkdGgsIGhlaWdodCk7CiAgICAgX2V3a190aWxlZF9i
YWNraW5nX3N0b3JlX2NoYW5nZWQocHJpdik7CkBAIC0xODA2LDcgKzE4MDYsNyBAQCB2b2lkIGV3
a190aWxlZF9iYWNraW5nX3N0b3JlX2ZsdXNoKEV2YXNfT2JqZWN0KiBld2tUaWxlKQogICAgIHBy
aXYtPm1vZGVsLmN1cnJlbnQucm93cyA9IDE7CiAgICAgcHJpdi0+bW9kZWwub2xkLmNvbHVtbnMg
PSAwOwogICAgIHByaXYtPm1vZGVsLm9sZC5yb3dzID0gMDsKLSAgICBwcml2LT5jaGFuZ2VkLnNp
emUgPSBFSU5BX1RSVUU7CisgICAgcHJpdi0+Y2hhbmdlZC5zaXplID0gdHJ1ZTsKIAogI2lmZGVm
IERFQlVHX01FTV9MRUFLUwogICAgIHByaW50ZigiXG5GTFVTSEVEIEJBQ0tJTkcgU1RPUkUsIFNU
QVRVUyBCRUZPUkUgREVMRVRJTkcgVElMRSBNQVRSSVg6XG4iKTsKQEAgLTE4MjYsNyArMTgyNiw3
IEBAIHZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZmx1c2goRXZhc19PYmplY3QqIGV3a1Rp
bGUpCiAKIEVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlZ2lv
bihFdmFzX09iamVjdCogZXdrVGlsZSwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNf
Q29vcmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVpZ2h0LCBmbG9hdCB6b29tKQogewotICAgIFBSSVZf
REFUQV9HRVRfT1JfUkVUVVJOKGV3a1RpbGUsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIFBSSVZf
REFUQV9HRVRfT1JfUkVUVVJOKGV3a1RpbGUsIHByaXYsIGZhbHNlKTsKICAgICBFaW5hX1RpbGVf
R3JpZF9TbGljZXIgc2xpY2VyOwogICAgIGNvbnN0IEVpbmFfVGlsZV9HcmlkX0luZm8qIGluZm87
CiAgICAgRXZhc19Db29yZCB0aWxlV2lkdGgsIHRpbGVIZWlnaHQ7CkBAIC0xODM5LDcgKzE4Mzks
NyBAQCBFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZWdpb24o
RXZhc19PYmplY3QqIGV3a1RpbGUsIEV2YXNfQwogICAgIGlmICghZWluYV90aWxlX2dyaWRfc2xp
Y2VyX3NldHVwKCZzbGljZXIsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHRpbGVXaWR0aCwgdGlsZUhl
aWdodCkpIHsKICAgICAgICAgRVJSKCJjb3VsZCBub3Qgc2V0dXAgZ3JpZCBzbGljZXIgZm9yICVk
LCVkKyVkeCVkIHRpbGU9JWR4JWQiLAogICAgICAgICAgICAgeCwgeSwgd2lkdGgsIGhlaWdodCwg
dGlsZVdpZHRoLCB0aWxlSGVpZ2h0KTsKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICB3aGlsZSAoZWluYV90aWxlX2dyaWRfc2xp
Y2VyX25leHQoJnNsaWNlciwgJmluZm8pKSB7CkBAIC0xODUzLDEyICsxODUzLDEyIEBAIEVpbmFf
Qm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlZ2lvbihFdmFzX09iamVj
dCogZXdrVGlsZSwgRXZhc19DCiAKICAgICB0aWxlVW51c2VkQ2FjaGUgPSBld2tfdGlsZV9tYXRy
aXhfdW51c2VkX2NhY2hlX2dldChwcml2LT5tb2RlbC5tYXRyaXgpOwogICAgIGV3a190aWxlX3Vu
dXNlZF9jYWNoZV9sb2NrX2FyZWEodGlsZVVudXNlZENhY2hlLCB4LCB5LCB3aWR0aCwgaGVpZ2h0
LCB6b29tKTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBF
aW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRp
dXMoRXZhc19PYmplY3QqIGV3a1RpbGUsIHVuc2lnbmVkIGludCBuLCBmbG9hdCB6b29tKQogewot
ICAgIFBSSVZfREFUQV9HRVRfT1JfUkVUVVJOKGV3a1RpbGUsIHByaXYsIEVJTkFfRkFMU0UpOwor
ICAgIFBSSVZfREFUQV9HRVRfT1JfUkVUVVJOKGV3a1RpbGUsIHByaXYsIGZhbHNlKTsKICAgICB1
bnNpZ25lZCBsb25nIHN0YXJ0Um93LCBlbmRSb3csIHN0YXJ0Q29sLCBlbmRDb2wsIGksIGosIHdp
ZHRoLCBoZWlnaHQ7CiAgICAgRXdrX1RpbGVfVW51c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2FjaGU7
CiAKQEAgLTE4OTEsNyArMTg5MSw3IEBAIHN0YXJ0X3Byb2Nlc3Npbmc6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGFydENvbCAqIFRJTEVfU0laRV9BVF9aT09NKHByaXYt
PnZpZXcudGlsZS53aWR0aCwgem9vbSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGFydFJvdyAqIFRJTEVfU0laRV9BVF9aT09NKHByaXYtPnZpZXcudGlsZS5oZWlnaHQs
IHpvb20pLCB3aWR0aCwgaGVpZ2h0LCB6b29tKTsKIAotICAgIHJldHVybiBFSU5BX1RSVUU7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3Jl
bmRlcl9jYW5jZWwoRXZhc19PYmplY3QqIGV3a1RpbGUpCkBAIC0xOTA3LDEzICsxOTA3LDEzIEBA
IHZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9jYW5jZWwoRXZhc19PYmpl
Y3QqIGV3a1RpbGUpCiAKIEVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9kaXNhYmxl
X3JlbmRlcihFdmFzX09iamVjdCogZXdrVGlsZSkKIHsKLSAgICBQUklWX0RBVEFfR0VUX09SX1JF
VFVSTihld2tUaWxlLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBQUklWX0RBVEFfR0VUX09SX1JF
VFVSTihld2tUaWxlLCBwcml2LCBmYWxzZSk7CiAgICAgcmV0dXJuIF9ld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9kaXNhYmxlX3JlbmRlcihwcml2KTsKIH0KIAogRWluYV9Cb29sIGV3a190aWxlZF9i
YWNraW5nX3N0b3JlX2VuYWJsZV9yZW5kZXIoRXZhc19PYmplY3QqIGV3a1RpbGUpCiB7Ci0gICAg
UFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrVGlsZSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAg
UFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrVGlsZSwgcHJpdiwgZmFsc2UpOwogICAgIF9ld2tf
dGlsZWRfYmFja2luZ19zdG9yZV9jaGFuZ2VkKHByaXYpOwogICAgIHJldHVybiBfZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfZW5hYmxlX3JlbmRlcihwcml2KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfbWF0cml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdGlsZWRfbWF0cml4LmNwcAppbmRleCA4YjgwZDNkYzc2YzVkNTM0ODI1NTc0MjVj
OGVkMWEwZTFlNjlhMTdiLi4yZDU1NTQ0YmYzMjRkZGJmNzkxYmJmOWU4NWM2ODEyMDcyODFlM2Q0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX21hdHJpeC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tYXRyaXguY3BwCkBAIC0yOTUs
MTYgKzI5NSwxNiBAQCBlbmQ6CiAgKiBAcGFyYW0gcm93IHRoZSByb3cgbnVtYmVyLgogICogQHBh
cmFtIHpvb20gdGhlIGV4YWN0IHpvb20gdG8gcXVlcnkuCiAgKgotICogQHJldHVybiBAYyBFSU5B
X1RSVUUgaWYgZm91bmQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyB0
cnVlIGlmIGZvdW5kLCBAYyBmYWxzZSBvdGhlcndpc2UuCiAgKgogICogQHNlZSBld2tfdGlsZV9t
YXRyaXhfdGlsZV9leGFjdF9nZXQoKQogICovCiBFaW5hX0Jvb2wgZXdrX3RpbGVfbWF0cml4X3Rp
bGVfZXhhY3RfZXhpc3RzKEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCwgdW5zaWduZWQgbG9u
ZyBjb2x1bW4sIHVuc2lnbmVkIGxvbmcgcm93LCBmbG9hdCB6b29tKQogewogICAgIGlmICghZWlu
YV9tYXRyaXhzcGFyc2VfZGF0YV9pZHhfZ2V0KHRpbGVNYXRyaXgtPm1hdHJpeCwgcm93LCBjb2x1
bW4pKQotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogLyoqCkBAIC0z
NDksNyArMzQ5LDcgQEAgRXdrX1RpbGUqIGV3a190aWxlX21hdHJpeF90aWxlX25ldyhFd2tfVGls
ZV9NYXRyaXgqIHRpbGVNYXRyaXgsIEV2YXMqIGNhbnZhcywgdW4KIAogICAgIGNhaXJvX3RyYW5z
bGF0ZSh0aWxlLT5jYWlybywgLXRpbGUtPngsIC10aWxlLT55KTsKIAotICAgIHRpbGUtPnN0YXRz
LmZ1bGxfdXBkYXRlID0gRUlOQV9UUlVFOworICAgIHRpbGUtPnN0YXRzLmZ1bGxfdXBkYXRlID0g
dHJ1ZTsKICAgICB0aWxlTWF0cml4LT51cGRhdGVzID0gZWluYV9saXN0X2FwcGVuZCh0aWxlTWF0
cml4LT51cGRhdGVzLCB0aWxlKTsKIAogI2lmZGVmIERFQlVHX01FTV9MRUFLUwpAQCAtMzc1LDE1
ICszNzUsMTUgQEAgRXdrX1RpbGUqIGV3a190aWxlX21hdHJpeF90aWxlX25ldyhFd2tfVGlsZV9N
YXRyaXgqIHRpbGVNYXRyaXgsIEV2YXMqIGNhbnZhcywgdW4KICAqIEBwYXJhbSB0IHRoZSB0aWxl
IGluc3RhbmNlIHRvIHJldHVybiwgbXVzdCBAYiBub3QgYmUgQGMgMC4KICAqIEBwYXJhbSBsYXN0
X3VzZWQgdGltZSBpbiB3aGljaCB0aWxlLndpZHRoYXMgbGFzdCB1c2VkLgogICoKLSAqIEByZXR1
cm4gI0VJTkFfVFJVRSBvbiBzdWNjZXNzIG9yICNFSU5BX0ZBTFNFIG9uIGZhaWx1cmUuCisgKiBA
cmV0dXJuICN0cnVlIG9uIHN1Y2Nlc3Mgb3IgI2ZhbHNlIG9uIGZhaWx1cmUuCiAgKi8KIEVpbmFf
Qm9vbCBld2tfdGlsZV9tYXRyaXhfdGlsZV9wdXQoRXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0cml4
LCBFd2tfVGlsZSogdGlsZSwgZG91YmxlIGxhc3RVc2VkKQogewotICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTCh0aWxlTWF0cml4LCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwodGlsZSwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHRpbGVNYXRyaXgsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwodGlsZSwgZmFsc2UpOwogCiAgICAgaWYgKHRpbGUtPnZpc2libGUp
Ci0gICAgICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
dGlsZS0+c3RhdHMubGFzdF91c2VkID0gbGFzdFVzZWQ7CiAgICAgcmV0dXJuIGV3a190aWxlX3Vu
dXNlZF9jYWNoZV90aWxlX3B1dCh0aWxlTWF0cml4LT50aWxpZVVudXNlZENhY2hlLCB0aWxlLCBf
ZXdrX3RpbGVfbWF0cml4X3RpbGVfZnJlZSwgdGlsZU1hdHJpeCk7CkBAIC0zOTIsMTQgKzM5Miwx
NCBAQCBFaW5hX0Jvb2wgZXdrX3RpbGVfbWF0cml4X3RpbGVfcHV0KEV3a19UaWxlX01hdHJpeCog
dGlsZU1hdHJpeCwgRXdrX1RpbGUqIHRpbGUsCiBFaW5hX0Jvb2wgZXdrX3RpbGVfbWF0cml4X3Rp
bGVfdXBkYXRlKEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCwgdW5zaWduZWQgbG9uZyBjb2ws
IHVuc2lnbmVkIGxvbmcgcm93LCBjb25zdCBFaW5hX1JlY3RhbmdsZSogdXBkYXRlKQogewogICAg
IEVpbmFfUmVjdGFuZ2xlIG5ld1VwZGF0ZTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwodGlsZU1hdHJpeCwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHVwZGF0ZSwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHRpbGVNYXRyaXgsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwodXBkYXRlLCBmYWxzZSk7CiAKICAgICBtZW1jcHkoJm5ld1VwZGF0ZSwgdXBkYXRl
LCBzaXplb2YobmV3VXBkYXRlKSk7Ci0gICAgLy8gY2hlY2sgdXBkYXRlIGlzIHZhbGlkLCBvdGhl
cndpc2UgcmV0dXJuIEVJTkFfRkFMU0UKKyAgICAvLyBjaGVjayB1cGRhdGUgaXMgdmFsaWQsIG90
aGVyd2lzZSByZXR1cm4gZmFsc2UKICAgICBpZiAodXBkYXRlLT54IDwgMCB8fCB1cGRhdGUtPnkg
PCAwIHx8IHVwZGF0ZS0+dyA8PSAwIHx8IHVwZGF0ZS0+aCA8PSAwKSB7CiAgICAgICAgIEVSUigi
aW52YWxpZCB1cGRhdGUgcmVnaW9uLiIpOwotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICh1cGRhdGUtPnggKyB1cGRhdGUt
PncgLSAxID49IHRpbGVNYXRyaXgtPnRpbGUud2lkdGgpCkBAIC00MDksMzcgKzQwOSwzNyBAQCBF
aW5hX0Jvb2wgZXdrX3RpbGVfbWF0cml4X3RpbGVfdXBkYXRlKEV3a19UaWxlX01hdHJpeCogdGls
ZU1hdHJpeCwgdW5zaWduZWQgbG9uZwogCiAgICAgRXdrX1RpbGUqIHRpbGUgPSBzdGF0aWNfY2Fz
dDxFd2tfVGlsZSo+KGVpbmFfbWF0cml4c3BhcnNlX2RhdGFfaWR4X2dldCh0aWxlTWF0cml4LT5t
YXRyaXgsIHJvdywgY29sKSk7CiAgICAgaWYgKCF0aWxlKQotICAgICAgICByZXR1cm4gRUlOQV9U
UlVFOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmICghdGlsZS0+dXBkYXRlcyAmJiAh
dGlsZS0+c3RhdHMuZnVsbF91cGRhdGUpCiAgICAgICAgIHRpbGVNYXRyaXgtPnVwZGF0ZXMgPSBl
aW5hX2xpc3RfYXBwZW5kKHRpbGVNYXRyaXgtPnVwZGF0ZXMsIHRpbGUpOwogICAgIGV3a190aWxl
X3VwZGF0ZV9hcmVhKHRpbGUsICZuZXdVcGRhdGUpOwogCi0gICAgcmV0dXJuIEVJTkFfVFJVRTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3a190aWxlX21hdHJpeF90aWxlX3Vw
ZGF0ZV9mdWxsKEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCwgdW5zaWduZWQgbG9uZyBjb2x1
bW4sIHVuc2lnbmVkIGxvbmcgcm93KQogewogICAgIEVpbmFfTWF0cml4c3BhcnNlX0NlbGwqIGNl
bGw7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHRpbGVNYXRyaXgsIEVJTkFf
RkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh0aWxlTWF0cml4LCBm
YWxzZSk7CiAKICAgICBpZiAoIWVpbmFfbWF0cml4c3BhcnNlX2NlbGxfaWR4X2dldCh0aWxlTWF0
cml4LT5tYXRyaXgsIHJvdywgY29sdW1uLCAmY2VsbCkpCi0gICAgICAgIHJldHVybiBFSU5BX0ZB
TFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWNlbGwpCi0gICAgICAgIHJl
dHVybiBFSU5BX1RSVUU7CisgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgRXdrX1RpbGUqIHRp
bGUgPSBzdGF0aWNfY2FzdDxFd2tfVGlsZSo+KGVpbmFfbWF0cml4c3BhcnNlX2NlbGxfZGF0YV9n
ZXQoY2VsbCkpOwogICAgIGlmICghdGlsZSkgewogICAgICAgICBDUklUSUNBTCgibWF0cml4IGNl
bGwgd2l0aCBubyB0aWxlISIpOwotICAgICAgICByZXR1cm4gRUlOQV9UUlVFOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAoIXRpbGUtPnVwZGF0ZXMgJiYgIXRpbGUtPnN0
YXRzLmZ1bGxfdXBkYXRlKQogICAgICAgICB0aWxlTWF0cml4LT51cGRhdGVzID0gZWluYV9saXN0
X2FwcGVuZCh0aWxlTWF0cml4LT51cGRhdGVzLCB0aWxlKTsKICAgICBld2tfdGlsZV91cGRhdGVf
ZnVsbCh0aWxlKTsKIAotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHZvaWQgZXdrX3RpbGVfbWF0cml4X3RpbGVfdXBkYXRlc19jbGVhcihFd2tfVGlsZV9NYXRy
aXgqIHRpbGVNYXRyaXgsIEV3a19UaWxlKiB0aWxlKQpAQCAtNDU5LDcgKzQ1OSw3IEBAIHN0YXRp
YyBFaW5hX0Jvb2wgX2V3a190aWxlX21hdHJpeF9zbGljZXJfc2V0dXAoRXdrX1RpbGVfTWF0cml4
KiB0aWxlTWF0cml4LCBjb25zCiAgICAgaWYgKGFyZWEtPncgPD0gMCB8fCBhcmVhLT5oIDw9IDAp
IHsKICAgICAgICAgV1JOKCJpbnZhbGlkIGFyZWEgcmVnaW9uOiAlZCwlZCslZHglZC4iLAogICAg
ICAgICAgICAgYXJlYS0+eCwgYXJlYS0+eSwgYXJlYS0+dywgYXJlYS0+aCk7Ci0gICAgICAgIHJl
dHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgeCA9
IGFyZWEtPng7CkBAIC00OTQsMTkgKzQ5NCwxOSBAQCBFaW5hX0Jvb2wgZXdrX3RpbGVfbWF0cml4
X3VwZGF0ZShFd2tfVGlsZV9NYXRyaXgqIHRpbGVNYXRyaXgsIGNvbnN0IEVpbmFfUmVjdGFuZwog
ewogICAgIGNvbnN0IEVpbmFfVGlsZV9HcmlkX0luZm8qIGluZm87CiAgICAgRWluYV9UaWxlX0dy
aWRfU2xpY2VyIHNsaWNlcjsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodGls
ZU1hdHJpeCwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHVwZGF0ZSwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHRpbGVNYXRyaXgsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
dXBkYXRlLCBmYWxzZSk7CiAKICAgICBpZiAodXBkYXRlLT53IDwgMSB8fCB1cGRhdGUtPmggPCAx
KSB7CiAgICAgICAgIERCRygiV2h5IHdlIGdldCB1cGRhdGVzIHdpdGggZW1wdHkgYXJlYXM/ICVk
LCVkKyVkeCVkIGF0IHpvb20gJWYiLAogICAgICAgICAgICAgdXBkYXRlLT54LCB1cGRhdGUtPnks
IHVwZGF0ZS0+dywgdXBkYXRlLT5oLCB6b29tKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfVFJVRTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgaWYgKCFfZXdrX3RpbGVfbWF0cml4
X3NsaWNlcl9zZXR1cCh0aWxlTWF0cml4LCB1cGRhdGUsIHpvb20sICZzbGljZXIpKSB7CiAgICAg
ICAgIEVSUigiQ291bGQgbm90IHNldHVwIHNsaWNlciBmb3IgdXBkYXRlICVkLCVkKyVkeCVkIGF0
IHpvb20gJWYiLAogICAgICAgICAgICAgdXBkYXRlLT54LCB1cGRhdGUtPnksIHVwZGF0ZS0+dywg
dXBkYXRlLT5oLCB6b29tKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKICAgICB3aGlsZSAoZWluYV90aWxlX2dyaWRfc2xpY2VyX25l
eHQoJnNsaWNlciwgJmluZm8pKSB7CkBAIC01MjcsNyArNTI3LDcgQEAgRWluYV9Cb29sIGV3a190
aWxlX21hdHJpeF91cGRhdGUoRXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0cml4LCBjb25zdCBFaW5h
X1JlY3RhbmcKICAgICB9CiAKIAotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIHZvaWQgZXdrX3RpbGVfbWF0cml4X3VwZGF0ZXNfcHJvY2VzcyhFd2tfVGlsZV9N
YXRyaXgqIHRpbGVNYXRyaXgpCkBAIC01NjIsNyArNTYyLDcgQEAgdm9pZCBld2tfdGlsZV9tYXRy
aXhfZGJnKGNvbnN0IEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCkKIHsKICAgICBFaW5hX0l0
ZXJhdG9yKiBpdGVyYXRvciA9IGVpbmFfbWF0cml4c3BhcnNlX2l0ZXJhdG9yX2NvbXBsZXRlX25l
dyh0aWxlTWF0cml4LT5tYXRyaXgpOwogICAgIEVpbmFfTWF0cml4c3BhcnNlX0NlbGwqIGNlbGw7
Ci0gICAgRWluYV9Cb29sIGxhc3RfZW1wdHkgPSBFSU5BX0ZBTFNFOworICAgIEVpbmFfQm9vbCBs
YXN0X2VtcHR5ID0gZmFsc2U7CiAKICNpZmRlZiBERUJVR19NRU1fTEVBS1MKICAgICBwcmludGYo
IkV3a19UaWxlIE1hdHJpeDogdGlsZXNbKyUiIFBSSXU2NCAiLC0lIiBQUkl1NjQgIjolIiBQUkl1
NjQgIl0gIgpAQCAtNTgyLDEzICs1ODIsMTMgQEAgdm9pZCBld2tfdGlsZV9tYXRyaXhfZGJnKGNv
bnN0IEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCkKICAgICAgICAgRXdrX1RpbGUqIHRpbGUg
PSBzdGF0aWNfY2FzdDxFd2tfVGlsZSo+KGVpbmFfbWF0cml4c3BhcnNlX2NlbGxfZGF0YV9nZXQo
Y2VsbCkpOwogICAgICAgICBpZiAoIXRpbGUpIHsKICAgICAgICAgICAgIGlmICghbGFzdF9lbXB0
eSkgewotICAgICAgICAgICAgICAgIGxhc3RfZW1wdHkgPSBFSU5BX1RSVUU7CisgICAgICAgICAg
ICAgICAgbGFzdF9lbXB0eSA9IHRydWU7CiAgICAgICAgICAgICAgICAgcHJpbnRmKCJFbXB0eToi
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHByaW50ZigiIFslbHUsJWx1XSIsIGNvbHVt
biwgcm93KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChsYXN0X2VtcHR5KSB7
Ci0gICAgICAgICAgICAgICAgbGFzdF9lbXB0eSA9IEVJTkFfRkFMU0U7CisgICAgICAgICAgICAg
ICAgbGFzdF9lbXB0eSA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHByaW50ZigiXG4iKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIHByaW50ZigiJTNsdSwlM2x1ICUxMHA6IiwgY29sdW1u
LCByb3csIHRpbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxl
ZF9tb2RlbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX21vZGVsLmNwcApp
bmRleCBkOTE3ZjU1ZDVmNThmNTdkYTljNGY2OTYxN2YxMzkyYmUyNDI5MjlmLi4zNTFmMjkzM2Fm
NDNkMTdkNzllMWM4MjIyOGNkY2VkZWU4YWM4NjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3RpbGVkX21vZGVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3RpbGVkX21vZGVsLmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIEV3a19UaWxlKiBld2tfdGls
ZV9uZXcoRXZhcyogZXZhcywgRXZhc19Db29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQsIGZs
b2F0IHpvCiAKICAgICBldmFzX29iamVjdF9pbWFnZV9zaXplX3NldCh0aWxlLT5pbWFnZSwgdGls
ZS0+d2lkdGgsIHRpbGUtPmhlaWdodCk7CiAgICAgZXZhc19vYmplY3RfaW1hZ2VfY29sb3JzcGFj
ZV9zZXQodGlsZS0+aW1hZ2UsIHRpbGUtPmNzcGFjZSk7Ci0gICAgdGlsZS0+cGl4ZWxzID0gc3Rh
dGljX2Nhc3Q8dWludDhfdCo+KGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfZ2V0KHRpbGUtPmltYWdl
LCBFSU5BX1RSVUUpKTsKKyAgICB0aWxlLT5waXhlbHMgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4o
ZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9nZXQodGlsZS0+aW1hZ2UsIHRydWUpKTsKICAgICB0aWxl
LT5zdXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEodGlsZS0+cGl4
ZWxzLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHN0cmlkZSk7CiAgICAgc3RhdHVzID0gY2Fpcm9f
c3VyZmFjZV9zdGF0dXModGlsZS0+c3VyZmFjZSk7CiAgICAgaWYgKHN0YXR1cyAhPSBDQUlST19T
VEFUVVNfU1VDQ0VTUykgewpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgZXdrX3RpbGVfaGlkZShF
d2tfVGlsZSogdGlsZSkKIH0KIAogLyoqCi0gKiBSZXR1cm5zIEVJTkFfVFJVRSBpZiB0aGUgdGls
ZSBpcyB2aXNpYmxlLCBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIFJldHVybnMgdHJ1ZSBpZiB0
aGUgdGlsZSBpcyB2aXNpYmxlLCBmYWxzZSBvdGhlcndpc2UuCiAgKi8KIEVpbmFfQm9vbCBld2tf
dGlsZV92aXNpYmxlX2dldChFd2tfVGlsZSogdGlsZSkKIHsKQEAgLTM3Miw3ICszNzIsNyBAQCB2
b2lkIGV3a190aWxlX3VwZGF0ZV9mdWxsKEV3a19UaWxlKiB0aWxlKQogICAgIHRpbGUtPnN0YXRz
Lm1pc3NlcysrOwogCiAgICAgaWYgKCF0aWxlLT5zdGF0cy5mdWxsX3VwZGF0ZSkgewotICAgICAg
ICB0aWxlLT5zdGF0cy5mdWxsX3VwZGF0ZSA9IEVJTkFfVFJVRTsKKyAgICAgICAgdGlsZS0+c3Rh
dHMuZnVsbF91cGRhdGUgPSB0cnVlOwogICAgICAgICBpZiAodGlsZS0+dXBkYXRlcykgewogICAg
ICAgICAgICAgZWluYV90aWxlcl9mcmVlKHRpbGUtPnVwZGF0ZXMpOwogICAgICAgICAgICAgdGls
ZS0+dXBkYXRlcyA9IDA7CkBAIC0zOTIsNyArMzkyLDcgQEAgdm9pZCBld2tfdGlsZV91cGRhdGVf
YXJlYShFd2tfVGlsZSogdGlsZSwgY29uc3QgRWluYV9SZWN0YW5nbGUqIHJlY3QpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmICghcmVjdC0+eCAmJiAhcmVjdC0+eSAmJiByZWN0LT53ID09IHRp
bGUtPndpZHRoICYmIHJlY3QtPmggPT0gdGlsZS0+aGVpZ2h0KSB7Ci0gICAgICAgIHRpbGUtPnN0
YXRzLmZ1bGxfdXBkYXRlID0gRUlOQV9UUlVFOworICAgICAgICB0aWxlLT5zdGF0cy5mdWxsX3Vw
ZGF0ZSA9IHRydWU7CiAgICAgICAgIGlmICh0aWxlLT51cGRhdGVzKSB7CiAgICAgICAgICAgICBl
aW5hX3RpbGVyX2ZyZWUodGlsZS0+dXBkYXRlcyk7CiAgICAgICAgICAgICB0aWxlLT51cGRhdGVz
ID0gMDsKQEAgLTUzNiw3ICs1MzYsNyBAQCB2b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV9sb2Nr
X2FyZWEoRXdrX1RpbGVfVW51c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2FjaGUsIEV2YQogewogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHRpbGVVbnVzZWRDYWNoZSk7CiAKLSAgICB0aWxl
VW51c2VkQ2FjaGUtPmxvY2tlZC5sb2NrZWQgPSBFSU5BX1RSVUU7CisgICAgdGlsZVVudXNlZENh
Y2hlLT5sb2NrZWQubG9ja2VkID0gdHJ1ZTsKICAgICB0aWxlVW51c2VkQ2FjaGUtPmxvY2tlZC54
ID0geDsKICAgICB0aWxlVW51c2VkQ2FjaGUtPmxvY2tlZC55ID0geTsKICAgICB0aWxlVW51c2Vk
Q2FjaGUtPmxvY2tlZC53aWR0aCA9IHdpZHRoOwpAQCAtNTQ4LDcgKzU0OCw3IEBAIHZvaWQgZXdr
X3RpbGVfdW51c2VkX2NhY2hlX3VubG9ja19hcmVhKEV3a19UaWxlX1VudXNlZF9DYWNoZSogdGls
ZVVudXNlZENhY2hlKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHRpbGVVbnVz
ZWRDYWNoZSk7CiAKLSAgICB0aWxlVW51c2VkQ2FjaGUtPmxvY2tlZC5sb2NrZWQgPSBFSU5BX0ZB
TFNFOworICAgIHRpbGVVbnVzZWRDYWNoZS0+bG9ja2VkLmxvY2tlZCA9IGZhbHNlOwogfQogCiAv
KioKQEAgLTc0OCw3ICs3NDgsNyBAQCB2b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV90aGF3KEV3
a19UaWxlX1VudXNlZF9DYWNoZSogdGlsZVVudXNlZENhY2hlKQogICogQHBhcmFtIHRpbGVVbnVz
ZWRDYWNoZSBjYWNoZSBvZiB1bnVzZWQgdGlsZXMKICAqIEBwYXJhbSB0aWxlIHRoZSB0aWxlIHRv
IGJlIHJlbW92ZWQgZnJvbSBFd2tfVGlsZV9VbnVzZWRfQ2FjaGUuCiAgKgotICogQHJldHVybiAj
RUlOQV9UUlVFIG9uIHN1Y2Nlc3MsICNFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIEByZXR1cm4g
I3RydWUgb24gc3VjY2VzcywgI2ZhbHNlIG90aGVyd2lzZS4KICAqLwogRWluYV9Cb29sIGV3a190
aWxlX3VudXNlZF9jYWNoZV90aWxlX2dldChFd2tfVGlsZV9VbnVzZWRfQ2FjaGUqIHRpbGVVbnVz
ZWRDYWNoZSwgRXdrX1RpbGUqIHRpbGUpCiB7CkBAIC03NjUsNyArNzY1LDcgQEAgRWluYV9Cb29s
IGV3a190aWxlX3VudXNlZF9jYWNoZV90aWxlX2dldChFd2tfVGlsZV9VbnVzZWRfQ2FjaGUqIHRp
bGVVbnVzZWRDYWNoZSwKICAgICB9CiAgICAgaWYgKCFmb3VuZEVudHJ5KSB7CiAgICAgICAgIEVS
UigidGlsZSAlcCBub3QgZm91bmQgaW4gY2FjaGUgJXAiLCB0aWxlLCB0aWxlVW51c2VkQ2FjaGUp
OwotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAogICAgIHRpbGVVbnVzZWRDYWNoZS0+ZW50cmllcy5jb3VudC0tOwpAQCAtNzczLDcgKzc3
Myw3IEBAIEVpbmFfQm9vbCBld2tfdGlsZV91bnVzZWRfY2FjaGVfdGlsZV9nZXQoRXdrX1RpbGVf
VW51c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2FjaGUsCiAgICAgdGlsZVVudXNlZENhY2hlLT5lbnRy
aWVzLmxpc3QgPSBlaW5hX2xpc3RfcmVtb3ZlX2xpc3QodGlsZVVudXNlZENhY2hlLT5lbnRyaWVz
Lmxpc3QsIGZvdW5kRW50cnkpOwogICAgIGZyZWUoaXRlbSk7CiAKLSAgICByZXR1cm4gRUlOQV9U
UlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiAvKioKQEAgLTc5Myw4ICs3OTMsOCBAQCBFaW5h
X0Jvb2wgZXdrX3RpbGVfdW51c2VkX2NhY2hlX3RpbGVfZ2V0KEV3a19UaWxlX1VudXNlZF9DYWNo
ZSogdGlsZVVudXNlZENhY2hlLAogICogQHBhcmFtIHRpbGVfZnJlZV9jYiBmdW5jdGlvbiB1c2Vk
IHRvIGZyZWUgdGlsZXMuCiAgKiBAcGFyYW0gZGF0YSBjb250ZXh0IHRvIGdpdmUgYmFjayB0byBA
YSB0aWxlX2ZyZWVfY2IgYXMgZmlyc3QgYXJndW1lbnQuCiAgKgotICogQHJldHVybiAjRUlOQV9U
UlVFIG9uIHN1Y2Nlc3MsICNFSU5BX0ZBTFNFIG90aGVyd2lzZS4gSWYgQGMgdGlsZS0+dmlzaWJs
ZQotICogICAgICAgICBpcyBub3QgI0VJTkFfRkFMU0UsIHRoZW4gaXQgd2lsbCByZXR1cm4gI0VJ
TkFfRkFMU0UuCisgKiBAcmV0dXJuICN0cnVlIG9uIHN1Y2Nlc3MsICNmYWxzZSBvdGhlcndpc2Uu
IElmIEBjIHRpbGUtPnZpc2libGUKKyAqICAgICAgICAgaXMgbm90ICNmYWxzZSwgdGhlbiBpdCB3
aWxsIHJldHVybiAjZmFsc2UuCiAgKgogICogQHNlZSBld2tfdGlsZV91bnVzZWRfY2FjaGVfYXV0
b19mbHVzaCgpCiAgKi8KQEAgLTgwNCwxNyArODA0LDE3IEBAIEVpbmFfQm9vbCBld2tfdGlsZV91
bnVzZWRfY2FjaGVfdGlsZV9wdXQoRXdrX1RpbGVfVW51c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2Fj
aGUsCiAKICAgICBpZiAodGlsZS0+dmlzaWJsZSkgewogICAgICAgICBFUlIoInRpbGU9JXAgaXMg
bm90IHVudXNlZCAodmlzaWJsZT0lZCkiLCB0aWxlLCB0aWxlLT52aXNpYmxlKTsKLSAgICAgICAg
cmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICB1
bnVzZWRDYWNoZUVudHJ5ID0gc3RhdGljX2Nhc3Q8RXdrX1RpbGVfVW51c2VkX0NhY2hlX0VudHJ5
Kj4obWFsbG9jKHNpemVvZihFd2tfVGlsZV9VbnVzZWRfQ2FjaGVfRW50cnkpKSk7CiAgICAgaWYg
KCF1bnVzZWRDYWNoZUVudHJ5KQotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgdGlsZVVudXNlZENhY2hlLT5lbnRyaWVzLmxpc3QgPSBlaW5h
X2xpc3RfYXBwZW5kKHRpbGVVbnVzZWRDYWNoZS0+ZW50cmllcy5saXN0LCB1bnVzZWRDYWNoZUVu
dHJ5KTsKICAgICBpZiAoZWluYV9lcnJvcl9nZXQoKSkgewogICAgICAgICBFUlIoIkxpc3QgYWxs
b2NhdGlvbiBmYWlsZWQiKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKICAgICB1bnVzZWRDYWNoZUVudHJ5LT50aWxlID0gdGlsZTsK
QEAgLTgyNSw3ICs4MjUsNyBAQCBFaW5hX0Jvb2wgZXdrX3RpbGVfdW51c2VkX2NhY2hlX3RpbGVf
cHV0KEV3a19UaWxlX1VudXNlZF9DYWNoZSogdGlsZVVudXNlZENhY2hlLAogICAgIHRpbGVVbnVz
ZWRDYWNoZS0+ZW50cmllcy5jb3VudCsrOwogICAgIHRpbGVVbnVzZWRDYWNoZS0+bWVtb3J5LnVz
ZWQgKz0gc2l6ZW9mKEV3a19UaWxlKSArIHRpbGUtPmJ5dGVzOwogCi0gICAgcmV0dXJuIEVJTkFf
VFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBld2tfdGlsZV91bnVzZWRfY2FjaGVf
ZGJnKGNvbnN0IEV3a19UaWxlX1VudXNlZF9DYWNoZSogdGlsZVVudXNlZENhY2hlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a191dGlsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdXRpbC5jcHAKaW5kZXggNDE1YjM2ZTVlNzVkZTkxYWYyN2I0NzQ5ZmVhMDJj
OWQ1ZDU3ODlmNS4uYjc0MDI1YTc3MTk2ODY3YjBhMjdkNmFjNTE0YTFjZTIzZmZjZDZlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a191dGlsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3V0aWwuY3BwCkBAIC05OSw3ICs5OSw3IEBAIEV2YXNfT2JqZWN0
KiBld2tfdXRpbF9pbWFnZV9mcm9tX2NhaXJvX3N1cmZhY2VfYWRkKEV2YXMqIGNhbnZhcywgY2Fp
cm9fc3VyZmFjZV90CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGRzdCA9IGV2YXNf
b2JqZWN0X2ltYWdlX2RhdGFfZ2V0KGltYWdlLCBFSU5BX1RSVUUpOworICAgIGRzdCA9IGV2YXNf
b2JqZWN0X2ltYWdlX2RhdGFfZ2V0KGltYWdlLCB0cnVlKTsKICAgICBtZW1jcHkoZHN0LCBzcmMs
IGggKiBzdHJpZGUpOwogICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfc2V0KGltYWdlLCBkc3Qp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCBhN2ZkN2M1MTM4YTgxNjk0NTFj
NzEyOTQ3YjQ0NmU5ZmFkYWYwNzlmLi41NjcyMDQzMDM1NmRjYWY5YWMyMjlhOWE2NzFjMTJmYWVk
YTVhZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTI3MSw3ICsyNzEsNyBA
QCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZChFd2tfVmlld19TbWFydF9EYXRh
KiBzbWFydERhdGEpCiB7CiAgICAgaWYgKHNtYXJ0RGF0YS0+Y2hhbmdlZC5hbnkpCiAgICAgICAg
IHJldHVybjsKLSAgICBzbWFydERhdGEtPmNoYW5nZWQuYW55ID0gRUlOQV9UUlVFOworICAgIHNt
YXJ0RGF0YS0+Y2hhbmdlZC5hbnkgPSB0cnVlOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NoYW5n
ZWQoc21hcnREYXRhLT5zZWxmKTsKIH0KIApAQCAtMjgwLDExICsyODAsMTEgQEAgc3RhdGljIEVp
bmFfQm9vbCBfZXdrX3ZpZXdfcmVwYWludHNfcmVzaXplKEV3a19WaWV3X1ByaXZhdGVfRGF0YSog
cHJpdiwgc2l6ZV90IHMKICAgICB2b2lkKiB0bXAgPSByZWFsbG9jKHByaXYtPnJlcGFpbnRzLmFy
cmF5LCBzaXplICogc2l6ZW9mKEVpbmFfUmVjdGFuZ2xlKSk7CiAgICAgaWYgKCF0bXApIHsKICAg
ICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCByZWFsbG9jIHJlcGFpbnRzIGFycmF5IHRvICV6dSBl
bGVtZW50cy4iLCBzaXplKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgcHJpdi0+cmVwYWludHMuYWxsb2NhdGVkID0gc2l6ZTsK
ICAgICBwcml2LT5yZXBhaW50cy5hcnJheSA9IHN0YXRpY19jYXN0PEVpbmFfUmVjdGFuZ2xlKj4o
dG1wKTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgdm9pZCBfZXdrX3ZpZXdfcmVwYWludF9hZGQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2
LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3aWR0aCwgRXZhc19Db29y
ZCBoZWlnaHQpCkBAIC0zMjYsMTEgKzMyNiwxMSBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmll
d19zY3JvbGxzX3Jlc2l6ZShFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIHNpemVfdCBzaQog
ICAgIHZvaWQqIHRtcCA9IHJlYWxsb2MocHJpdi0+c2Nyb2xscy5hcnJheSwgc2l6ZSAqIHNpemVv
ZihFd2tfU2Nyb2xsX1JlcXVlc3QpKTsKICAgICBpZiAoIXRtcCkgewogICAgICAgICBDUklUSUNB
TCgiY291bGQgbm90IHJlYWxsb2Mgc2Nyb2xscyBhcnJheSB0byAlenUgZWxlbWVudHMuIiwgc2l6
ZSk7Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIHByaXYtPnNjcm9sbHMuYWxsb2NhdGVkID0gc2l6ZTsKICAgICBwcml2LT5zY3Jv
bGxzLmFycmF5ID0gc3RhdGljX2Nhc3Q8RXdrX1Njcm9sbF9SZXF1ZXN0Kj4odG1wKTsKLSAgICBy
ZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfc2Nyb2xsX2FkZChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIEV2YXNfQ29vcmQg
ZGVsdGFYLCBFdmFzX0Nvb3JkIGRlbHRhWSwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2
YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVpZ2h0LCBFaW5hX0Jvb2wgbWFpblNjcm9sbCkK
QEAgLTQwOSwxMSArNDA5LDExIEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2Zv
Y3VzX2luKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKICAgICBFV0tfVklFV19QUklW
X0dFVChzbWFydERhdGEsIHByaXYpOwogICAgIFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlciogZmMg
PSBwcml2LT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKTsKICAgICBEQkcoImV3a1ZpZXc9JXAsIGZj
PSVwIiwgc21hcnREYXRhLT5zZWxmLCBmYyk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKGZjLCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoZmMsIGZhbHNlKTsKIAogICAgIGZjLT5zZXRBY3RpdmUodHJ1ZSk7CiAgICAgZmMtPnNldEZv
Y3VzZWQodHJ1ZSk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfZm9jdXNfb3V0KEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNtYXJ0RGF0YSkKQEAgLTQyMSwxMSArNDIxLDExIEBAIHN0YXRpYyBFaW5hX0Jv
b2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX291dChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERh
dGEpCiAgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBwcml2KTsKICAgICBXZWJDb3Jl
OjpGb2N1c0NvbnRyb2xsZXIqIGZvY3VzQ29udHJvbGxlciA9IHByaXYtPnBhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpOwogICAgIERCRygiZXdrVmlldz0lcCwgZmM9JXAiLCBzbWFydERhdGEtPnNlbGYs
IGZvY3VzQ29udHJvbGxlcik7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGZv
Y3VzQ29udHJvbGxlciwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKGZvY3VzQ29udHJvbGxlciwgZmFsc2UpOwogCiAgICAgZm9jdXNDb250cm9sbGVyLT5z
ZXRBY3RpdmUoZmFsc2UpOwogICAgIGZvY3VzQ29udHJvbGxlci0+c2V0Rm9jdXNlZChmYWxzZSk7
Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIEVp
bmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwoRXdrX1ZpZXdfU21hcnRfRGF0YSog
c21hcnREYXRhLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiB3aGVlbEV2ZW50KQpAQCAt
NDgyLDIwICs0ODIsMjAgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfcnVuX2ph
dmFzY3JpcHRfY29uZmlybShFd2tfVmlld19TbWFydF9EYXRhKiBzbWEKIHsKICAgICBJTkYoImph
dmFzY3JpcHQgY29uZmlybTogJXMiLCBtZXNzYWdlKTsKICAgICBJTkYoImphdmFzY3JpcHQgY29u
ZmlybSAoSEFSRCBDT0RFRCk/IFlFUyIpOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3Nob3VsZF9p
bnRlcnJ1cHRfamF2YXNjcmlwdChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiB7CiAg
ICAgSU5GKCJzaG91bGQgaW50ZXJydXB0IGphdmFzY3JpcHQ/XG4iCiAgICAgICAgICJcdChIQVJE
IENPREVEKSBOTyIpOwotICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIHJldHVybiBmYWxzZTsK
IH0KIAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfcnVuX2phdmFzY3JpcHRfcHJv
bXB0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgRXZhc19PYmplY3QqIGZyYW1lLCBj
b25zdCBjaGFyKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBkZWZhdWx0VmFsdWUsIGNoYXIqKiB2YWx1
ZSkKIHsKICAgICAqdmFsdWUgPSBzdHJkdXAoInRlc3QiKTsKLSAgICBFaW5hX0Jvb2wgcmVzdWx0
ID0gRUlOQV9UUlVFOworICAgIEVpbmFfQm9vbCByZXN1bHQgPSB0cnVlOwogICAgIElORigiamF2
YXNjcmlwdCBwcm9tcHQ6XG4iCiAgICAgICAgICJcdCAgICAgIG1lc3NhZ2U6ICVzXG4iCiAgICAg
ICAgICJcdGRlZmF1bHQgdmFsdWU6ICVzXG4iCkBAIC02MjksNyArNjI5LDcgQEAgc3RhdGljIEV3
a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNtYXJ0RGF0YSkKICAgICBwcml2LT52aWV3cG9ydEFyZ3VtZW50cy5taW5pbXVtU2NhbGUg
PSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwogICAgIHByaXYtPnZpZXdw
b3J0QXJndW1lbnRzLm1heGltdW1TY2FsZSA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpW
YWx1ZUF1dG87CiAgICAgcHJpdi0+dmlld3BvcnRBcmd1bWVudHMudGFyZ2V0RGVuc2l0eURwaSA9
IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87Ci0gICAgcHJpdi0+dmlld3Bv
cnRBcmd1bWVudHMudXNlclNjYWxhYmxlID0gRUlOQV9UUlVFOworICAgIHByaXYtPnZpZXdwb3J0
QXJndW1lbnRzLnVzZXJTY2FsYWJsZSA9IHRydWU7CiAKICAgICBwcml2LT5wYWdlU2V0dGluZ3Mt
PnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseSh0cnVlKTsKICAgICBwcml2LT5wYWdlU2V0dGlu
Z3MtPnNldERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lKCJpc28tODg1OS0xIik7CkBAIC02NzYsNyAr
Njc2LDcgQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZfbmV3
KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKIAogICAgIHByaXYtPnNldHRpbmdzLmF1
dG9Mb2FkSW1hZ2VzID0gcHJpdi0+cGFnZVNldHRpbmdzLT5sb2Fkc0ltYWdlc0F1dG9tYXRpY2Fs
bHkoKTsKICAgICBwcml2LT5zZXR0aW5ncy5hdXRvU2hyaW5rSW1hZ2VzID0gcHJpdi0+cGFnZVNl
dHRpbmdzLT5zaHJpbmtzU3RhbmRhbG9uZUltYWdlc1RvRml0KCk7Ci0gICAgcHJpdi0+c2V0dGlu
Z3MuZW5hYmxlQXV0b1Jlc2l6ZVdpbmRvdyA9IEVJTkFfVFJVRTsKKyAgICBwcml2LT5zZXR0aW5n
cy5lbmFibGVBdXRvUmVzaXplV2luZG93ID0gdHJ1ZTsKICAgICBwcml2LT5zZXR0aW5ncy5lbmFi
bGVEZXZlbG9wZXJFeHRyYXMgPSBwcml2LT5wYWdlU2V0dGluZ3MtPmRldmVsb3BlckV4dHJhc0Vu
YWJsZWQoKTsKICAgICBwcml2LT5zZXR0aW5ncy5lbmFibGVTY3JpcHRzID0gcHJpdi0+cGFnZVNl
dHRpbmdzLT5pc1NjcmlwdEVuYWJsZWQoKTsKICAgICBwcml2LT5zZXR0aW5ncy5lbmFibGVQbHVn
aW5zID0gcHJpdi0+cGFnZVNldHRpbmdzLT5hcmVQbHVnaW5zRW5hYmxlZCgpOwpAQCAtNjk5LDcg
KzY5OSw3IEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld19wcml2X25l
dyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiAgICAgLy8gdGhpcyBmdW5jdGlvbmFs
aXR5IHdpbGwgYmUgbW9kaWZpZWQgYnkgdGhlIHNjYWxlIHpvb20gcGF0Y2guCiAgICAgcHJpdi0+
c2V0dGluZ3Muem9vbVJhbmdlLm1pblNjYWxlID0gWk9PTV9NSU47CiAgICAgcHJpdi0+c2V0dGlu
Z3Muem9vbVJhbmdlLm1heFNjYWxlID0gWk9PTV9NQVg7Ci0gICAgcHJpdi0+c2V0dGluZ3Muem9v
bVJhbmdlLnVzZXJTY2FsYWJsZSA9IEVJTkFfVFJVRTsKKyAgICBwcml2LT5zZXR0aW5ncy56b29t
UmFuZ2UudXNlclNjYWxhYmxlID0gdHJ1ZTsKICAgICBwcml2LT5zZXR0aW5ncy5kZXZpY2VQaXhl
bFJhdGlvID0gREVWSUNFX1BJWEVMX1JBVElPOwogCiAgICAgcHJpdi0+c2V0dGluZ3MuZG9tVGlt
ZXJJbnRlcnZhbCA9IHByaXYtPnBhZ2VTZXR0aW5ncy0+ZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2
YWwoKTsKQEAgLTgwMCw3ICs4MDAsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRk
KEV2YXNfT2JqZWN0KiBld2tWaWV3KQogCiAgICAgZXZhc19vYmplY3Rfc21hcnRfbWVtYmVyX2Fk
ZChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsIGV3a1ZpZXcpOwogICAgIGV2YXNfb2JqZWN0X3No
b3coc21hcnREYXRhLT5iYWNraW5nX3N0b3JlKTsKLSAgICBldmFzX29iamVjdF9wYXNzX2V2ZW50
c19zZXQoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCBFSU5BX1RSVUUpOworICAgIGV2YXNfb2Jq
ZWN0X3Bhc3NfZXZlbnRzX3NldChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsIHRydWUpOwogCiAg
ICAgc21hcnREYXRhLT5ldmVudHNfcmVjdCA9IGV2YXNfb2JqZWN0X3JlY3RhbmdsZV9hZGQoc21h
cnREYXRhLT5iYXNlLmV2YXMpOwogICAgIGV2YXNfb2JqZWN0X2NvbG9yX3NldChzbWFydERhdGEt
PmV2ZW50c19yZWN0LCAwLCAwLCAwLCAwKTsKQEAgLTg1NiwxNCArODU2LDE0IEBAIHN0YXRpYyB2
b2lkIF9ld2tfdmlld19zbWFydF9yZXNpemUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfQ29v
cmQgdywgRXZhc19Db29yCiAgICAgLy8gdGhlc2Ugc2hvdWxkIGJlIHF1ZXVlZCBhbmQgcHJvY2Vz
c2VkIGluIGNhbGN1bGF0ZSBhcyB3ZWxsIQogICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShzbWFydERh
dGEtPmJhY2tpbmdfc3RvcmUsIHcsIGgpOwogCi0gICAgc21hcnREYXRhLT5jaGFuZ2VkLnNpemUg
PSBFSU5BX1RSVUU7CisgICAgc21hcnREYXRhLT5jaGFuZ2VkLnNpemUgPSB0cnVlOwogICAgIF9l
d2tfdmlld19zbWFydF9jaGFuZ2VkKHNtYXJ0RGF0YSk7CiB9CiAKIHN0YXRpYyB2b2lkIF9ld2tf
dmlld19zbWFydF9tb3ZlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3JkIHgsIEV2YXNf
Q29vcmQgeSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSk7Ci0gICAgc21hcnREYXRhLT5jaGFuZ2VkLnBvc2l0aW9uID0gRUlOQV9UUlVFOworICAg
IHNtYXJ0RGF0YS0+Y2hhbmdlZC5wb3NpdGlvbiA9IHRydWU7CiAgICAgX2V3a192aWV3X3NtYXJ0
X2NoYW5nZWQoc21hcnREYXRhKTsKIH0KIApAQCAtODc2LDcgKzg3Niw3IEBAIHN0YXRpYyB2b2lk
IF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGktPnJlcGFpbnRzX3Byb2Nlc3Mp
OwogICAgIEV2YXNfQ29vcmQgeCwgeSwgd2lkdGgsIGhlaWdodDsKIAotICAgIHNtYXJ0RGF0YS0+
Y2hhbmdlZC5hbnkgPSBFSU5BX0ZBTFNFOworICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5hbnkgPSBm
YWxzZTsKIAogICAgIGlmICghc21hcnREYXRhLT5tYWluX2ZyYW1lIHx8ICFwcml2LT5tYWluRnJh
bWUpCiAgICAgICAgIHJldHVybjsKQEAgLTg5Nyw3ICs4OTcsNyBAQCBzdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgICAgICB9CiAg
ICAgICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShzbWFydERhdGEtPm1haW5fZnJhbWUsIHdpZHRoLCBo
ZWlnaHQpOwogICAgICAgICBldmFzX29iamVjdF9yZXNpemUoc21hcnREYXRhLT5ldmVudHNfcmVj
dCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5mcmFtZV9yZWN0
ID0gRUlOQV9UUlVFOworICAgICAgICBzbWFydERhdGEtPmNoYW5nZWQuZnJhbWVfcmVjdCA9IHRy
dWU7CiAgICAgICAgIHNtYXJ0RGF0YS0+dmlldy53ID0gd2lkdGg7CiAgICAgICAgIHNtYXJ0RGF0
YS0+dmlldy5oID0gaGVpZ2h0OwogCkBAIC05MDYsMTcgKzkwNiwxNyBAQCBzdGF0aWMgdm9pZCBf
ZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgICAgICAv
LyBUaGlzIGNhbGxiYWNrIGlzIGEgZ29vZCBwbGFjZSBlLmcuIHRvIGNoYW5nZSBmaXhlZCBsYXlv
dXQgc2l6ZSAoZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KS4KICAgICAgICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAidmlldyxyZXNpemVkIiwgMCk7CiAg
ICAgfQotICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5zaXplID0gRUlOQV9GQUxTRTsKKyAgICBzbWFy
dERhdGEtPmNoYW5nZWQuc2l6ZSA9IGZhbHNlOwogCiAgICAgaWYgKHNtYXJ0RGF0YS0+Y2hhbmdl
ZC5wb3NpdGlvbiAmJiAoKHggIT0gc21hcnREYXRhLT52aWV3LngpIHx8ICh5ICE9IHNtYXJ0RGF0
YS0+dmlldy55KSkpIHsKICAgICAgICAgZXZhc19vYmplY3RfbW92ZShzbWFydERhdGEtPm1haW5f
ZnJhbWUsIHgsIHkpOwogICAgICAgICBldmFzX29iamVjdF9tb3ZlKHNtYXJ0RGF0YS0+YmFja2lu
Z19zdG9yZSwgeCwgeSk7CiAgICAgICAgIGV2YXNfb2JqZWN0X21vdmUoc21hcnREYXRhLT5ldmVu
dHNfcmVjdCwgeCwgeSk7Ci0gICAgICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5mcmFtZV9yZWN0ID0g
RUlOQV9UUlVFOworICAgICAgICBzbWFydERhdGEtPmNoYW5nZWQuZnJhbWVfcmVjdCA9IHRydWU7
CiAgICAgICAgIHNtYXJ0RGF0YS0+dmlldy54ID0geDsKICAgICAgICAgc21hcnREYXRhLT52aWV3
LnkgPSB5OwogICAgIH0KLSAgICBzbWFydERhdGEtPmNoYW5nZWQucG9zaXRpb24gPSBFSU5BX0ZB
TFNFOworICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5wb3NpdGlvbiA9IGZhbHNlOwogCiAgICAgaWYg
KCFzbWFydERhdGEtPmFwaS0+c2Nyb2xsc19wcm9jZXNzKHNtYXJ0RGF0YSkpCiAgICAgICAgIEVS
UigiZmFpbGVkIHRvIHByb2Nlc3Mgc2Nyb2xscy4iKTsKQEAgLTkyOSw3ICs5MjksNyBAQCBzdGF0
aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQog
ICAgIGlmIChzbWFydERhdGEtPmNoYW5nZWQuZnJhbWVfcmVjdCkgewogICAgICAgICBXZWJDb3Jl
OjpGcmFtZVZpZXcqIHZpZXcgPSBwcml2LT5tYWluRnJhbWUtPnZpZXcoKTsKICAgICAgICAgdmll
dy0+ZnJhbWVSZWN0c0NoYW5nZWQoKTsgLyogZm9yY2UgdHJlZSB0byBnZXQgcG9zaXRpb24gZnJv
bSByb290ICovCi0gICAgICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5mcmFtZV9yZWN0ID0gRUlOQV9G
QUxTRTsKKyAgICAgICAgc21hcnREYXRhLT5jaGFuZ2VkLmZyYW1lX3JlY3QgPSBmYWxzZTsKICAg
ICB9CiB9CiAKQEAgLTk1Miw3ICs5NTIsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRf
aGlkZShFdmFzX09iamVjdCogZXdrVmlldykKIAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdf
c21hcnRfY29udGVudHNfcmVzaXplKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0KQogewotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3pvb21fc2V0KEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjZW50
ZXJYLCBFdmFzX0Nvb3JkIGNlbnRlclkpCkBAIC05OTQsMTQgKzk5NCwxNCBAQCBzdGF0aWMgRWlu
YV9Cb29sIF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3JlZ2lvbihFd2tfVmlld19TbWFydF9E
YXRhKiBzbWFydERhdAogewogICAgIFdSTigibm90IHN1cHBvcnRlZCBieSBlbmdpbmUuIHNtYXJ0
REF0YT0lcCBhcmVhPSVkLCVkKyVkeCVkLCB6b29tPSVmIiwKICAgICAgICAgc21hcnREYXRhLCB4
LCB5LCB3aWR0aCwgaGVpZ2h0LCB6b29tKTsKLSAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3ByZV9y
ZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgdW5z
aWduZWQgaW50IG51bWJlciwgZmxvYXQgem9vbSkKIHsKICAgICBXUk4oIm5vdCBzdXBwb3J0ZWQg
YnkgZW5naW5lLiBzbWFydERhdGE9JXAsIG49JXUgem9vbT0lZiIsCiAgICAgICAgIHNtYXJ0RGF0
YSwgbnVtYmVyLCB6b29tKTsKLSAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICByZXR1cm4gZmFs
c2U7CiB9CiAKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX2NhbmNlbChF
d2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCkBAIC0xMDYyLDEyICsxMDYyLDEyIEBAIHN0
YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3pvb21fYW5pbWF0b3JfY2Iodm9pZCogZGF0YSkKICAg
ICAgICAgX2V3a192aWV3X3pvb21fYW5pbWF0ZWRfZmluaXNoKHNtYXJ0RGF0YSk7CiAgICAgICAg
IGV3a192aWV3X3pvb21fc2V0KHNtYXJ0RGF0YS0+c2VsZiwgcHJpdi0+YW5pbWF0ZWRab29tLnpv
b20uZW5kLCBjZW50ZXJYLCBjZW50ZXJZKTsKICAgICAgICAgc21hcnREYXRhLT5hcGktPnNjLmNh
bGN1bGF0ZShzbWFydERhdGEtPnNlbGYpOwotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHNtYXJ0RGF0YS0+YW5pbWF0ZWRfem9v
bS56b29tLmN1cnJlbnQgPSBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9jdXJyZW50KHByaXYpOwog
ICAgIHNtYXJ0RGF0YS0+YXBpLT56b29tX3dlYWtfc2V0KHNtYXJ0RGF0YSwgc21hcnREYXRhLT5h
bmltYXRlZF96b29tLnpvb20uY3VycmVudCwgY2VudGVyWCwgY2VudGVyWSk7Ci0gICAgcmV0dXJu
IEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIHZvaWQgX2V3a192aWV3
X3pvb21fYW5pbWF0aW9uX3N0YXJ0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKQEAg
LTEwOTUsMjQgKzEwOTUsMjQgQEAgc3RhdGljIFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBf
ZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19jb21wdXRlKGNvbnN0IEUKIHN0YXRpYyBFaW5h
X0Jvb2wgX2V3a192aWV3X3NtYXJ0X2Rpc2FibGVfcmVuZGVyKEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNtYXJ0RGF0YSkKIHsKICAgICBXUk4oIm5vdCBzdXBwb3J0ZWQgYnkgZW5naW5lLiBzbWFydERh
dGE9JXAiLCBzbWFydERhdGEpOwotICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIHJldHVybiBm
YWxzZTsKIH0KIAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfZW5hYmxlX3JlbmRl
cihFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiB7CiAgICAgV1JOKCJub3Qgc3VwcG9y
dGVkIGJ5IGVuZ2luZS4gc21hcnREYXRhPSVwIiwgc21hcnREYXRhKTsKLSAgICByZXR1cm4gRUlO
QV9GQUxTRTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19iYXNl
X3NtYXJ0X3NldChFd2tfVmlld19TbWFydF9DbGFzcyogYXBpKQogewotICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChhcGksIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChhcGksIGZhbHNlKTsKIAogICAgIGlmIChhcGktPnZlcnNpb24gIT0g
RVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTikgewogICAgICAgICBFSU5BX0xPR19DUklUCiAg
ICAgICAgICAgICAoIkV3a19WaWV3X1NtYXJ0X0NsYXNzICVwIGlzIHZlcnNpb24gJWx1IHdoaWxl
ICVsdSB3YXMgZXhwZWN0ZWQuIiwKICAgICAgICAgICAgIGFwaSwgYXBpLT52ZXJzaW9uLCBFV0tf
VklFV19TTUFSVF9DTEFTU19WRVJTSU9OKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoRUlOQV9VTkxJS0VMWSghX3Bh
cmVudF9zYy5hZGQpKQpAQCAtMTE1Myw3ICsxMTUzLDcgQEAgRWluYV9Cb29sIGV3a192aWV3X2Jh
c2Vfc21hcnRfc2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkpCiAgICAgYXBpLT5ydW5famF2
YXNjcmlwdF9wcm9tcHQgPSBfZXdrX3ZpZXdfc21hcnRfcnVuX2phdmFzY3JpcHRfcHJvbXB0Owog
ICAgIGFwaS0+c2hvdWxkX2ludGVycnVwdF9qYXZhc2NyaXB0ID0gX2V3a192aWV3X3NtYXJ0X3No
b3VsZF9pbnRlcnJ1cHRfamF2YXNjcmlwdDsKIAotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3JkIHdpZHRoLCBFdmFzX0Nvb3JkIGhlaWdodCkK
QEAgLTExNjUsNyArMTE2NSw3IEBAIHZvaWQgZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3JkIHdpZHRoLCBFdmFzCiAgICAgaWYgKHdp
ZHRoIDw9IDAgJiYgaGVpZ2h0IDw9IDApIHsKICAgICAgICAgaWYgKCF2aWV3LT51c2VGaXhlZExh
eW91dCgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB2aWV3LT5zZXRVc2VGaXhlZExh
eW91dChFSU5BX0ZBTFNFKTsKKyAgICAgICAgdmlldy0+c2V0VXNlRml4ZWRMYXlvdXQoZmFsc2Up
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZSA9IHZpZXctPmZp
eGVkTGF5b3V0U2l6ZSgpOwogICAgICAgICBpZiAoc2l6ZS53aWR0aCgpID09IHdpZHRoICYmIHNp
emUuaGVpZ2h0KCkgPT0gaGVpZ2h0KQpAQCAtMTE3Niw3ICsxMTc2LDcgQEAgdm9pZCBld2tfdmll
d19maXhlZF9sYXlvdXRfc2l6ZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfQ29vcmQg
d2lkdGgsIEV2YXMKIAogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuOwotICAgIHZpZXct
PnNldFVzZUZpeGVkTGF5b3V0KEVJTkFfVFJVRSk7CisgICAgdmlldy0+c2V0VXNlRml4ZWRMYXlv
dXQodHJ1ZSk7CiAgICAgdmlldy0+Zm9yY2VMYXlvdXQoKTsKIH0KIApAQCAtMTI0Myw3ICsxMjQz
LDcgQEAgRXZhc19PYmplY3QqIGV3a192aWV3X2ZyYW1lX2ZvY3VzZWRfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tWaWV3KQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfdXJpX3NldChFdmFzX09iamVj
dCogZXdrVmlldywgY29uc3QgY2hhciogdXJpKQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIHJldHVybiBld2tf
ZnJhbWVfdXJpX3NldChzbWFydERhdGEtPm1haW5fZnJhbWUsIHVyaSk7CiB9CiAKQEAgLTEyNjEs
NyArMTI2MSw3IEBAIGNvbnN0IGNoYXIqIGV3a192aWV3X3RpdGxlX2dldChjb25zdCBFdmFzX09i
amVjdCogZXdrVmlldykKIAogRWluYV9Cb29sIGV3a192aWV3X2VkaXRhYmxlX2dldChjb25zdCBF
dmFzX09iamVjdCogZXdrVmlldykKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX2Vk
aXRhYmxlX2dldChzbWFydERhdGEtPm1haW5fZnJhbWUpOwogfQogCkBAIC0xMzM4LDkgKzEzMzgs
OSBAQCB2b2lkIGV3a192aWV3X2JnX2NvbG9yX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmll
dywgaW50KiByZWQsIGludCogZ3JlZW4sIGludAogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9z
ZWFyY2goY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHN0cmluZywgRWlu
YV9Cb29sIGNhc2VTZW5zaXRpdmUsIEVpbmFfQm9vbCBmb3J3YXJkLCBFaW5hX0Jvb2wgd3JhcCkK
IHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlO
QV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJp
diwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHN0cmlu
ZywgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnRE
YXRhLCBwcml2LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHN0
cmluZywgZmFsc2UpOwogICAgIFdURjo6VGV4dENhc2VTZW5zaXRpdml0eSBzZW5zaXRpdmU7CiAg
ICAgV2ViQ29yZTo6RmluZERpcmVjdGlvbiBkaXJlY3Rpb247CiAKQEAgLTEzODUsMjcgKzEzODUs
MjcgQEAgdW5zaWduZWQgaW50IGV3a192aWV3X3RleHRfbWF0Y2hlc19tYXJrKEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBjb25zdCBjaGFyKiBzdHJpbmcKIAogRWluYV9Cb29sIGV3a192aWV3X3RleHRf
bWF0Y2hlc191bm1hcmtfYWxsKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewotICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsK
KyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2Up
OworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNl
KTsKICAgICBwcml2LT5wYWdlLT51bm1hcmtBbGxUZXh0TWF0Y2hlcygpOwotICAgIHJldHVybiBF
SU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld190ZXh0
X21hdGNoZXNfaGlnaGxpZ2h0X3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIGhp
Z2hsaWdodCkKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEsIGZhbHNlKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19o
aWdobGlnaHRfc2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgaGlnaGxpZ2h0KTsKIH0KIAogRWlu
YV9Cb29sIGV3a192aWV3X3RleHRfbWF0Y2hlc19oaWdobGlnaHRfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIHJldHVybiBld2tfZnJhbWVfdGV4dF9tYXRj
aGVzX2hpZ2hsaWdodF9nZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lKTsKIH0KIAogRWluYV9Cb29s
IGV3a192aWV3X2VkaXRhYmxlX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIGVk
aXRhYmxlKQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnRE
YXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcs
IHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIHJldHVybiBld2tfZnJhbWVfZWRpdGFibGVfc2V0KHNt
YXJ0RGF0YS0+bWFpbl9mcmFtZSwgZWRpdGFibGUpOwogfQogCkBAIC0xNDI2LDggKzE0MjYsOCBA
QCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19lZGl0b3JfY29tbWFuZChFd2tfVmlld19Qcml2
YXRlX0RhdGEqIHByaXYsIGNvbnN0IGNoYQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfZXhlY3V0ZV9l
ZGl0b3JfY29tbWFuZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX0VkaXRvcl9Db21t
YW5kIGNvbW1hbmQsIGNvbnN0IGNoYXIqIHZhbHVlKQogewotICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKIAogICAg
IHN3aXRjaCAoY29tbWFuZCkgewogICAgIGNhc2UgRVdLX0VESVRPUl9DT01NQU5EX0lOU0VSVF9J
TUFHRToKQEAgLTE0NDcsMTYgKzE0NDcsMTYgQEAgRWluYV9Cb29sIGV3a192aWV3X2V4ZWN1dGVf
ZWRpdG9yX2NvbW1hbmQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19FZGl0b3IKICAg
ICBjYXNlIEVXS19FRElUT1JfQ09NTUFORF9TRUxFQ1RfV09SRDoKICAgICAgICAgcmV0dXJuIF9l
d2tfdmlld19lZGl0b3JfY29tbWFuZChwcml2LCAiU2VsZWN0V29yZCIpOwogICAgIGRlZmF1bHQ6
Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfY29udGV4dF9tZW51X2ZvcndhcmRfZXZlbnQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biogZG93bkV2ZW50
KQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKLSAgICBFaW5hX0Jv
b2wgbW91c2VfcHJlc3NfaGFuZGxlZCA9IEVJTkFfRkFMU0U7CisgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAgRWluYV9Cb29sIG1v
dXNlX3ByZXNzX2hhbmRsZWQgPSBmYWxzZTsKIAogICAgIHByaXYtPnBhZ2UtPmNvbnRleHRNZW51
Q29udHJvbGxlcigpLT5jbGVhckNvbnRleHRNZW51KCk7CiAgICAgV2ViQ29yZTo6RnJhbWUqIG1h
aW5GcmFtZSA9IHByaXYtPnBhZ2UtPm1haW5GcmFtZSgpOwpAQCAtMTQ3MSw3ICsxNDcxLDcgQEAg
RWluYV9Cb29sIGV3a192aWV3X2NvbnRleHRfbWVudV9mb3J3YXJkX2V2ZW50KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBjb25zdCBFdmFzX0UKICAgICB9CiAKICAgICBpZiAobWFpbkZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+c2VuZENvbnRleHRNZW51RXZlbnQoZXZlbnQpKQotICAgICAgICByZXR1cm4g
RUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgV2ViQ29yZTo6Q29udGV4
dE1lbnUqIGNvcmVNZW51ID0KICAgICAgICAgcHJpdi0+cGFnZS0+Y29udGV4dE1lbnVDb250cm9s
bGVyKCktPmNvbnRleHRNZW51KCk7CkBAIC0xNDgxLDkgKzE0ODEsOSBAQCBFaW5hX0Jvb2wgZXdr
X3ZpZXdfY29udGV4dF9tZW51X2ZvcndhcmRfZXZlbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNv
bnN0IEV2YXNfRQogICAgICAgICByZXR1cm4gbW91c2VfcHJlc3NfaGFuZGxlZDsKICAgICB9CiAK
LSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogI2Vsc2UKLSAgICByZXR1
cm4gRUlOQV9GQUxTRTsKKyAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIH0KIApAQCAtMTQ5Niw3
MSArMTQ5Niw3MSBAQCBkb3VibGUgZXdrX3ZpZXdfbG9hZF9wcm9ncmVzc19nZXQoY29uc3QgRXZh
c19PYmplY3QqIGV3a1ZpZXcpCiAKIEVpbmFfQm9vbCBld2tfdmlld19zdG9wKEV2YXNfT2JqZWN0
KiBld2tWaWV3KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIHJldHVybiBld2tfZnJhbWVfc3RvcChzbWFydERh
dGEtPm1haW5fZnJhbWUpOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfcmVsb2FkKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIHJldHVybiBld2tfZnJhbWVfcmVsb2FkKHNt
YXJ0RGF0YS0+bWFpbl9mcmFtZSk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19yZWxvYWRfZnVs
bChFdmFzX09iamVjdCogZXdrVmlldykKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAgICByZXR1cm4gZXdrX2ZyYW1l
X3JlbG9hZF9mdWxsKHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSk7CiB9CiAKIEVpbmFfQm9vbCBld2tf
dmlld19iYWNrKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIHJldHVybiBl
d2tfZnJhbWVfYmFjayhzbWFydERhdGEtPm1haW5fZnJhbWUpOwogfQogCiBFaW5hX0Jvb2wgZXdr
X3ZpZXdfZm9yd2FyZChFdmFzX09iamVjdCogZXdrVmlldykKIHsKLSAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAgICByZXR1
cm4gZXdrX2ZyYW1lX2ZvcndhcmQoc21hcnREYXRhLT5tYWluX2ZyYW1lKTsKIH0KIAogRWluYV9C
b29sIGV3a192aWV3X25hdmlnYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgc3RlcHMpCiB7
Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFf
RkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
LCBmYWxzZSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9uYXZpZ2F0ZShzbWFydERhdGEtPm1haW5f
ZnJhbWUsIHN0ZXBzKTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X2JhY2tfcG9zc2libGUoRXZh
c19PYmplY3QqIGV3a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9iYWNr
X3Bvc3NpYmxlKHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmll
d19mb3J3YXJkX3Bvc3NpYmxlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewotICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAg
IHJldHVybiBld2tfZnJhbWVfZm9yd2FyZF9wb3NzaWJsZShzbWFydERhdGEtPm1haW5fZnJhbWUp
OwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfbmF2aWdhdGVfcG9zc2libGUoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIGludCBzdGVwcykKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX25h
dmlnYXRlX3Bvc3NpYmxlKHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgc3RlcHMpOwogfQogCiBFaW5h
X0Jvb2wgZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tW
aWV3KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
LCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
bWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
QmFja0ZvcndhcmRMaXN0SW1wbCo+KHByaXYtPnBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpKS0+ZW5h
YmxlZCgpOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfc2V0KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgZW5hYmxlKQogewotICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAg
ICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsKj4ocHJpdi0+cGFnZS0+
YmFja0ZvcndhcmRMaXN0KCkpLT5zZXRFbmFibGVkKGVuYWJsZSk7Ci0gICAgcmV0dXJuIEVJTkFf
VFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRXdrX0hpc3RvcnkqIGV3a192aWV3X2hpc3Rv
cnlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQpAQCAtMTU4MiwyNCArMTU4MiwyNCBA
QCBmbG9hdCBld2tfdmlld196b29tX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIAog
RWluYV9Cb29sIGV3a192aWV3X3pvb21fc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBmbG9hdCB6
b29tLCBFdmFzX0Nvb3JkIGNlbnRlclgsIEV2YXNfQ29vcmQgY2VudGVyWSkKIHsKLSAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Cisg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsK
ICAgICBFV0tfVklFV19QUklWX0dFVChzbWFydERhdGEsIHByaXYpOwogCi0gICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLCBFSU5BX0ZBTFNFKTsKLSAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5hcGktPnpvb21fc2V0LCBF
SU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRh
LT5hcGksIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnRE
YXRhLT5hcGktPnpvb21fc2V0LCBmYWxzZSk7CiAKICAgICBpZiAoIXByaXYtPnNldHRpbmdzLnpv
b21SYW5nZS51c2VyU2NhbGFibGUpIHsKICAgICAgICAgV1JOKCJ1c2VyU2NhbGFibGUgaXMgZmFs
c2UiKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKICAgICBpZiAoem9vbSA8IHByaXYtPnNldHRpbmdzLnpvb21SYW5nZS5taW5TY2Fs
ZSkgewogICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgcHJpdi0+c2V0dGlu
Z3Muem9vbVJhbmdlLm1pblNjYWxlLCB6b29tKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKHpvb20gPiBwcml2LT5zZXR0
aW5ncy56b29tUmFuZ2UubWF4U2NhbGUpIHsKICAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4g
JWYgOiAlZiIsIHByaXYtPnNldHRpbmdzLnpvb21SYW5nZS5tYXhTY2FsZSwgem9vbSk7Ci0gICAg
ICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAg
ICAgX2V3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdG9wKHNtYXJ0RGF0YSk7CkBAIC0xNjE0
LDcgKzE2MTQsNyBAQCBmbG9hdCBld2tfdmlld19wYWdlX3pvb21fZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFnZV96b29tX3NldChFdmFzX09i
amVjdCogZXdrVmlldywgZmxvYXQgcGFnZVpvb21GYWN0b3IpCiB7Ci0gICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOworICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgcmV0
dXJuIGV3a19mcmFtZV9wYWdlX3pvb21fc2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgcGFnZVpv
b21GYWN0b3IpOwogfQogCkBAIC0xNjI3LDEyICsxNjI3LDEyIEBAIGZsb2F0IGV3a192aWV3X3Nj
YWxlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIAogRWluYV9Cb29sIGV3a192aWV3
X3NjYWxlX3NldChFdmFzX09iamVjdCogZXdrVmlldywgZmxvYXQgc2NhbGVGYWN0b3IsIEV2YXNf
Q29vcmQgY2VudGVyWCwgRXZhc19Db29yZCBjZW50ZXJZKQogewotICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKIAog
ICAgIGZsb2F0IGN1cnJlbnRTY2FsZUZhY3RvciA9IGV3a192aWV3X3NjYWxlX2dldChld2tWaWV3
KTsKICAgICBpZiAoY3VycmVudFNjYWxlRmFjdG9yID09IC0xKQotICAgICAgICByZXR1cm4gRUlO
QV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaW50IHgsIHk7CiAgICAgZXdr
X2ZyYW1lX3Njcm9sbF9wb3NfZ2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgJngsICZ5KTsKQEAg
LTE2NDAsNyArMTY0MCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19zY2FsZV9zZXQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIGZsb2F0IHNjYWxlRmFjdG9yLCBFdmFzX0Nvb3JkCiAgICAgeCA9IHN0YXRp
Y19jYXN0PGludD4oKCh4ICsgY2VudGVyWCkgLyBjdXJyZW50U2NhbGVGYWN0b3IpICogc2NhbGVG
YWN0b3IpIC0gY2VudGVyWDsKICAgICB5ID0gc3RhdGljX2Nhc3Q8aW50PigoKHkgKyBjZW50ZXJZ
KSAvIGN1cnJlbnRTY2FsZUZhY3RvcikgKiBzY2FsZUZhY3RvcikgLSBjZW50ZXJZOwogICAgIHBy
aXYtPnBhZ2UtPnNldFBhZ2VTY2FsZUZhY3RvcihzY2FsZUZhY3RvciwgV2ViQ29yZTo6TGF5b3V0
UG9pbnQoeCwgeSkpOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKIGZsb2F0IGV3a192aWV3X3RleHRfem9vbV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1Zp
ZXcpCkBAIC0xNjUxLDEzICsxNjUxLDEzIEBAIGZsb2F0IGV3a192aWV3X3RleHRfem9vbV9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAKIEVpbmFfQm9vbCBld2tfdmlld190ZXh0X3pv
b21fc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBmbG9hdCB0ZXh0Wm9vbUZhY3RvcikKIHsKLSAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxT
RSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZh
bHNlKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX3RleHRfem9vbV9zZXQoc21hcnREYXRhLT5tYWlu
X2ZyYW1lLCB0ZXh0Wm9vbUZhY3Rvcik7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld196b29tX3dl
YWtfc21vb3RoX3NjYWxlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIHsKLSAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7
CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNl
KTsKICAgICByZXR1cm4gc21hcnREYXRhLT56b29tX3dlYWtfc21vb3RoX3NjYWxlOwogfQogCkBA
IC0xNjc1LDI0ICsxNjc1LDI0IEBAIHZvaWQgZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290aF9zY2Fs
ZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBzbW9vdGhTCiAKIEVpbmFfQm9v
bCBld2tfdmlld196b29tX3dlYWtfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBmbG9hdCB6b29t
LCBFdmFzX0Nvb3JkIGNlbnRlclgsIEV2YXNfQ29vcmQgY2VudGVyWSkKIHsKLSAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7CisgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAg
ICBFV0tfVklFV19QUklWX0dFVChzbWFydERhdGEsIHByaXYpOwogCi0gICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5hcGktPnpvb21fd2Vha19zZXQs
IEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERh
dGEtPmFwaSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFy
dERhdGEtPmFwaS0+em9vbV93ZWFrX3NldCwgZmFsc2UpOwogCiAgICAgaWYgKCFwcml2LT5zZXR0
aW5ncy56b29tUmFuZ2UudXNlclNjYWxhYmxlKSB7CiAgICAgICAgIFdSTigidXNlclNjYWxhYmxl
IGlzIGZhbHNlIik7Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKHpvb20gPCBwcml2LT5zZXR0aW5ncy56b29tUmFuZ2Uu
bWluU2NhbGUpIHsKICAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIHByaXYt
PnNldHRpbmdzLnpvb21SYW5nZS5taW5TY2FsZSwgem9vbSk7Ci0gICAgICAgIHJldHVybiBFSU5B
X0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmICh6b29tID4gcHJp
di0+c2V0dGluZ3Muem9vbVJhbmdlLm1heFNjYWxlKSB7CiAgICAgICAgIFdSTigiem9vbSBsZXZl
bCBpcyA+ICVmIDogJWYiLCBwcml2LT5zZXR0aW5ncy56b29tUmFuZ2UubWF4U2NhbGUsIHpvb20p
OwotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAogICAgIHNtYXJ0RGF0YS0+YW5pbWF0ZWRfem9vbS56b29tLnN0YXJ0ID0gZXdrX2ZyYW1l
X3BhZ2Vfem9vbV9nZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lKTsKQEAgLTE3MDMsNTIgKzE3MDMs
NTIgQEAgRWluYV9Cb29sIGV3a192aWV3X3pvb21fd2Vha19zZXQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY2UKIAogRWluYV9Cb29sIGV3a192aWV3X3pvb21f
YW5pbWF0ZWRfbWFya19zdGFydChFdmFzX09iamVjdCogZXdrVmlldywgZmxvYXQgem9vbSkKIHsK
LSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9G
QUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEs
IGZhbHNlKTsKICAgICBzbWFydERhdGEtPmFuaW1hdGVkX3pvb20uem9vbS5zdGFydCA9IHpvb207
Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29s
IGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19lbmQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGZs
b2F0IHpvb20pCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgc21hcnREYXRhLT5hbmltYXRlZF96b29tLnpvb20u
ZW5kID0gem9vbTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQog
CiBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX2N1cnJlbnQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIGZsb2F0IHpvb20pCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgc21hcnREYXRhLT5hbmlt
YXRlZF96b29tLnpvb20uY3VycmVudCA9IHpvb207Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFy
a19zdG9wKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIF9ld2tfdmlld196
b29tX2FuaW1hdGVkX21hcmtfc3RvcChzbWFydERhdGEpOwotICAgIHJldHVybiBFSU5BX1RSVUU7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVk
X3NldChFdmFzX09iamVjdCogZXdrVmlldywgZmxvYXQgem9vbSwgZmxvYXQgZHVyYXRpb24sIEV2
YXNfQ29vcmQgY2VudGVyWCwgRXZhc19Db29yZCBjZW50ZXJZKQogewogICAgIGRvdWJsZSBub3c7
Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFf
RkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYs
IEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERh
dGEtPmFwaSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHNtYXJ0RGF0YS0+YXBpLT56b29tX3dlYWtfc2V0LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5hcGksIGZhbHNlKTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5hcGktPnpvb21fd2Vha19z
ZXQsIGZhbHNlKTsKIAogICAgIGlmICghcHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLnVzZXJTY2Fs
YWJsZSkgewogICAgICAgICBXUk4oInVzZXJTY2FsYWJsZSBpcyBmYWxzZSIpOwotICAgICAgICBy
ZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlm
ICh6b29tIDwgcHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLm1pblNjYWxlKSB7CiAgICAgICAgIFdS
Tigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCBwcml2LT5zZXR0aW5ncy56b29tUmFuZ2UubWlu
U2NhbGUsIHpvb20pOwotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KICAgICBpZiAoem9vbSA+IHByaXYtPnNldHRpbmdzLnpvb21SYW5nZS5t
YXhTY2FsZSkgewogICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgcHJpdi0+
c2V0dGluZ3Muem9vbVJhbmdlLm1heFNjYWxlLCB6b29tKTsKLSAgICAgICAgcmV0dXJuIEVJTkFf
RkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAocHJpdi0+YW5p
bWF0ZWRab29tLmFuaW1hdG9yKQpAQCAtMTc3NSwxNCArMTc3NSwxNCBAQCBFaW5hX0Jvb2wgZXdr
X3ZpZXdfem9vbV9hbmltYXRlZF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGZsb2F0IHpvb20s
IGZsb2F0IGR1cgogICAgIHNtYXJ0RGF0YS0+YW5pbWF0ZWRfem9vbS56b29tLnN0YXJ0ID0gcHJp
di0+YW5pbWF0ZWRab29tLnpvb20uc3RhcnQ7CiAgICAgc21hcnREYXRhLT5hbmltYXRlZF96b29t
Lnpvb20uZW5kID0gcHJpdi0+YW5pbWF0ZWRab29tLnpvb20uZW5kOwogCi0gICAgcmV0dXJuIEVJ
TkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3ByZV9y
ZW5kZXJfcmVnaW9uKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29v
cmQgeSwgRXZhc19Db29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQsIGZsb2F0IHpvb20pCiB7
Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFf
RkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYs
IEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERh
dGEtPmFwaS0+cHJlX3JlbmRlcl9yZWdpb24sIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmFwaS0+cHJlX3JlbmRlcl9yZWdpb24s
IGZhbHNlKTsKICAgICBmbG9hdCBjdXJfem9vbTsKICAgICBFdmFzX0Nvb3JkIGNvbnRlbnRzV2lk
dGgsIGNvbnRlbnRzSGVpZ2h0OwogCkBAIC0xNzkwLDE0ICsxNzkwLDE0IEBAIEVpbmFfQm9vbCBl
d2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbihFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19Db29y
ZCB4LCBFdmFzX0NvCiAgICAgICogd291bGQgc2NyZXcgdXAgcGFyYW1ldGVycyB0aGF0IGFuaW1h
dGlvbiBpcyBjdXJyZW50bHkgdXNpbmcKICAgICAgKi8KICAgICBpZiAocHJpdi0+YW5pbWF0ZWRa
b29tLmFuaW1hdG9yKQotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgY3VyX3pvb20gPSBld2tfZnJhbWVfcGFnZV96b29tX2dldChzbWFydERh
dGEtPm1haW5fZnJhbWUpOwogCiAgICAgaWYgKGN1cl96b29tIDwgMC4wMDAwMSkKLSAgICAgICAg
cmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWV3a19m
cmFtZV9jb250ZW50c19zaXplX2dldChzbWFydERhdGEtPm1haW5fZnJhbWUsICZjb250ZW50c1dp
ZHRoLCAmY29udGVudHNIZWlnaHQpKQotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY29udGVudHNXaWR0aCAqPSB6b29tIC8gY3VyX3pvb207
CiAgICAgY29udGVudHNIZWlnaHQgKj0gem9vbSAvIGN1cl96b29tOwpAQCAtMTgyMywxMyArMTgy
MywxMyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWdpb24oRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIEV2YXNfQ29vcmQgeCwgRXZhc19DbwogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfcHJl
X3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVuc2lnbmVkIGlu
dCBudW1iZXIpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChzbWFydERhdGEtPmFwaS0+cHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMsIEVJTkFfRkFM
U0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBm
YWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwg
ZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmFw
aS0+cHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMsIGZhbHNlKTsKICAgICBmbG9hdCBjdXJyZW50
Wm9vbTsKIAogICAgIGlmIChwcml2LT5hbmltYXRlZFpvb20uYW5pbWF0b3IpCi0gICAgICAgIHJl
dHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjdXJyZW50Wm9v
bSA9IGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSk7CiAgICAg
cmV0dXJuIHNtYXJ0RGF0YS0+YXBpLT5wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyhzbWFydERh
dGEsIG51bWJlciwgY3VycmVudFpvb20pOwpAQCAtMTg1MSwxNSArMTg1MSwxNSBAQCB2b2lkIGV3
a192aWV3X3ByZV9yZW5kZXJfY2FuY2VsKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogCiBFaW5hX0Jv
b2wgZXdrX3ZpZXdfZW5hYmxlX3JlbmRlcihjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIHsK
LSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9G
QUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBp
LT5lbmFibGVfcmVuZGVyLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChzbWFydERhdGEtPmFwaS0+ZW5hYmxlX3JlbmRlciwgZmFsc2UpOwogICAgIHJl
dHVybiBzbWFydERhdGEtPmFwaS0+ZW5hYmxlX3JlbmRlcihzbWFydERhdGEpOwogfQogCiBFaW5h
X0Jvb2wgZXdrX3ZpZXdfZGlzYWJsZV9yZW5kZXIoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcp
CiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJ
TkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEt
PmFwaS0+ZGlzYWJsZV9yZW5kZXIsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLT5kaXNhYmxlX3JlbmRlciwgZmFsc2UpOwog
ICAgIHJldHVybiBzbWFydERhdGEtPmFwaS0+ZGlzYWJsZV9yZW5kZXIoc21hcnREYXRhKTsKIH0K
IApAQCAtMTg3MiwxMyArMTg3MiwxMyBAQCBjb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX3Vz
ZXJfYWdlbnRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogCiBFaW5hX0Jvb2wgZXdr
X3ZpZXdfc2V0dGluZ191c2VyX2FnZW50X3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3Qg
Y2hhciogdXNlckFnZW50KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAgICBpZiAoZWluYV9zdHJpbmdz
aGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5ncy51c2VyQWdlbnQsIHVzZXJBZ2VudCkpIHsKICAg
ICAgICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwqIGNsaWVudCA9IHN0YXRpY19jYXN0
PFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKj4ocHJpdi0+bWFpbkZyYW1lLT5sb2FkZXIo
KS0+Y2xpZW50KCkpOwogICAgICAgICBjbGllbnQtPnNldEN1c3RvbVVzZXJBZ2VudChTdHJpbmc6
OmZyb21VVEY4KHVzZXJBZ2VudCkpOwogICAgIH0KLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAg
IHJldHVybiB0cnVlOwogfQogCiBjb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX3VzZXJfc3R5
bGVzaGVldF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCkBAIC0xODkwLDIzOCArMTg5
MCwyMzggQEAgY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0dGluZ191c2VyX3N0eWxlc2hlZXRfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z191c2VyX3N0eWxlc2hlZXRfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiB1
cmkpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEs
IEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIGlmIChlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2Uo
JnByaXYtPnNldHRpbmdzLnVzZXJTdHlsZXNoZWV0LCB1cmkpKSB7CiAgICAgICAgIFdlYkNvcmU6
OktVUkwga3VybChXZWJDb3JlOjpLVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJpKSk7CiAgICAg
ICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihrdXJsKTsK
ICAgICB9Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWlu
YV9Cb29sIGV3a192aWV3X3NldHRpbmdfYXV0b19sb2FkX2ltYWdlc19nZXQoY29uc3QgRXZhc19P
YmplY3QqIGV3a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIHJldHVybiBwcml2LT5zZXR0
aW5ncy5hdXRvTG9hZEltYWdlczsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfYXV0
b19sb2FkX2ltYWdlc19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBhdXRvbWF0
aWMpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEs
IEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIGF1dG9tYXRpYyA9ICEhYXV0b21hdGljOwogICAg
IGlmIChwcml2LT5zZXR0aW5ncy5hdXRvTG9hZEltYWdlcyAhPSBhdXRvbWF0aWMpIHsKICAgICAg
ICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoYXV0b21h
dGljKTsKICAgICAgICAgcHJpdi0+c2V0dGluZ3MuYXV0b0xvYWRJbWFnZXMgPSBhdXRvbWF0aWM7
CiAgICAgfQotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVp
bmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2F1dG9fc2hyaW5rX2ltYWdlc19nZXQoY29uc3QgRXZh
c19PYmplY3QqIGV3a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIHJldHVybiBwcml2LT5z
ZXR0aW5ncy5hdXRvU2hyaW5rSW1hZ2VzOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z19hdXRvX3Nocmlua19pbWFnZXNfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wg
YXV0b21hdGljKQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAgICBhdXRvbWF0aWMgPSAhIWF1dG9tYXRp
YzsKICAgICBpZiAocHJpdi0+c2V0dGluZ3MuYXV0b1Nocmlua0ltYWdlcyAhPSBhdXRvbWF0aWMp
IHsKICAgICAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRTaHJpbmtzU3RhbmRhbG9uZUltYWdl
c1RvRml0KGF1dG9tYXRpYyk7CiAgICAgICAgIHByaXYtPnNldHRpbmdzLmF1dG9TaHJpbmtJbWFn
ZXMgPSBhdXRvbWF0aWM7CiAgICAgfQotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9hdXRvX3Jlc2l6
ZV93aW5kb3dfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewotICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsK
KyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2Up
OworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNl
KTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZW5hYmxlQXV0b1Jlc2l6ZVdpbmRvdzsKIH0K
IAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2F1dG9fcmVzaXplX3dpbmRvd19z
ZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCByZXNpemFibGUpCiB7Ci0gICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwot
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFM
U0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBm
YWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwg
ZmFsc2UpOwogICAgIHByaXYtPnNldHRpbmdzLmVuYWJsZUF1dG9SZXNpemVXaW5kb3cgPSByZXNp
emFibGU7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWlu
YV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3NjcmlwdHNfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGlu
Z3MuZW5hYmxlU2NyaXB0czsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxl
X3NjcmlwdHNfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgZW5hYmxlKQogewot
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZB
TFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBF
SU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IHByaXYsIGZhbHNlKTsKICAgICBlbmFibGUgPSAhIWVuYWJsZTsKICAgICBpZiAocHJpdi0+c2V0
dGluZ3MuZW5hYmxlU2NyaXB0cyAhPSBlbmFibGUpIHsKICAgICAgICAgcHJpdi0+cGFnZVNldHRp
bmdzLT5zZXRTY3JpcHRFbmFibGVkKGVuYWJsZSk7CiAgICAgICAgIHByaXYtPnNldHRpbmdzLmVu
YWJsZVNjcmlwdHMgPSBlbmFibGU7CiAgICAgfQotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9wbHVn
aW5zX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIHsKLSAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CiAg
ICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmVuYWJsZVBsdWdpbnM7CiB9CiAKIEVpbmFfQm9vbCBl
d2tfdmlld19zZXR0aW5nX2VuYWJsZV9wbHVnaW5zX3NldChFdmFzX09iamVjdCogZXdrVmlldywg
RWluYV9Cb29sIGVuYWJsZSkKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CiAgICAgZW5hYmxlID0gISFlbmFi
bGU7CiAgICAgaWYgKHByaXYtPnNldHRpbmdzLmVuYWJsZVBsdWdpbnMgIT0gZW5hYmxlKSB7CiAg
ICAgICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0UGx1Z2luc0VuYWJsZWQoZW5hYmxlKTsKICAg
ICAgICAgcHJpdi0+c2V0dGluZ3MuZW5hYmxlUGx1Z2lucyA9IGVuYWJsZTsKICAgICB9Ci0gICAg
cmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3a192
aWV3X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBld2tWaWV3KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Mu
ZW5hYmxlRnJhbWVGbGF0dGVuaW5nOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19l
bmFibGVfZnJhbWVfZmxhdHRlbmluZ19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9v
bCBlbmFibGUpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
ZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIGVuYWJsZSA9ICEhZW5hYmxlOwogICAg
IGlmIChwcml2LT5zZXR0aW5ncy5lbmFibGVGcmFtZUZsYXR0ZW5pbmcgIT0gZW5hYmxlKSB7CiAg
ICAgICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChlbmFi
bGUpOwogICAgICAgICBwcml2LT5zZXR0aW5ncy5lbmFibGVGcmFtZUZsYXR0ZW5pbmcgPSBlbmFi
bGU7CiAgICAgfQotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfY2FuX29wZW5fd2luZG93c19nZXQo
Y29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIHJldHVy
biBwcml2LT5zZXR0aW5ncy5zY3JpcHRzQ2FuT3BlbldpbmRvd3M7CiB9CiAKIEVpbmFfQm9vbCBl
d2tfdmlld19zZXR0aW5nX3NjcmlwdHNfY2FuX29wZW5fd2luZG93c19zZXQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIEVpbmFfQm9vbCBhbGxvdykKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CiAgICAgYWxsb3cg
PSAhIWFsbG93OwogICAgIGlmIChwcml2LT5zZXR0aW5ncy5zY3JpcHRzQ2FuT3BlbldpbmRvd3Mg
IT0gYWxsb3cpIHsKICAgICAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRKYXZhU2NyaXB0Q2Fu
T3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KGFsbG93KTsKICAgICAgICAgcHJpdi0+c2V0dGluZ3Mu
c2NyaXB0c0Nhbk9wZW5XaW5kb3dzID0gYWxsb3c7CiAgICAgfQotICAgIHJldHVybiBFSU5BX1RS
VUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3Nj
cmlwdHNfY2FuX2Nsb3NlX3dpbmRvd3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQog
ewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5B
X0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2
LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNt
YXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYsIGZhbHNlKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Muc2NyaXB0c0NhbkNs
b3NlV2luZG93czsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfc2NyaXB0c19jYW5f
Y2xvc2Vfd2luZG93c19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBhbGxvdykK
IHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlO
QV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJp
diwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnRE
YXRhLCBwcml2LCBmYWxzZSk7CiAgICAgYWxsb3cgPSAhIWFsbG93OwogICAgIGlmIChwcml2LT5z
ZXR0aW5ncy5zY3JpcHRzQ2FuQ2xvc2VXaW5kb3dzICE9IGFsbG93KSB7CiAgICAgICAgIHByaXYt
PnBhZ2VTZXR0aW5ncy0+c2V0QWxsb3dTY3JpcHRzVG9DbG9zZVdpbmRvd3MoYWxsb3cpOwogICAg
ICAgICBwcml2LT5zZXR0aW5ncy5zY3JpcHRzQ2FuQ2xvc2VXaW5kb3dzID0gYWxsb3c7CiAgICAg
fQotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX3Jlc2l6YWJsZV90ZXh0YXJlYXNfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGlu
Z3MucmVzaXphYmxlVGV4dGFyZWFzOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19y
ZXNpemFibGVfdGV4dGFyZWFzX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIGVu
YWJsZSkKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0
YSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCBwcml2LCBmYWxzZSk7CiAgICAgZW5hYmxlID0gISFlbmFibGU7CiAgICAgaWYg
KHByaXYtPnNldHRpbmdzLnJlc2l6YWJsZVRleHRhcmVhcyAhPSBlbmFibGUpIHsKICAgICAgICAg
cHJpdi0+cGFnZVNldHRpbmdzLT5zZXRUZXh0QXJlYXNBcmVSZXNpemFibGUoZW5hYmxlKTsKICAg
ICAgICAgcHJpdi0+c2V0dGluZ3MucmVzaXphYmxlVGV4dGFyZWFzID0gZW5hYmxlOwogICAgIH0K
LSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dzaW5nX2dldChjb25zdCBFdmFzX09iamVjdCog
ZXdrVmlldykKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLnBy
aXZhdGVCcm93c2luZzsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfcHJpdmF0ZV9i
cm93c2luZ19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBlbmFibGUpCiB7Ci0g
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFM
U0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJ
TkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnRE
YXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
cHJpdiwgZmFsc2UpOwogICAgIGVuYWJsZSA9ICEhZW5hYmxlOwogICAgIGlmIChwcml2LT5zZXR0
aW5ncy5wcml2YXRlQnJvd3NpbmcgIT0gZW5hYmxlKSB7CiAgICAgICAgIHByaXYtPnBhZ2VTZXR0
aW5ncy0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChlbmFibGUpOwogICAgICAgICBwcml2LT5z
ZXR0aW5ncy5wcml2YXRlQnJvd3NpbmcgPSBlbmFibGU7CiAgICAgfQotICAgIHJldHVybiBFSU5B
X1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5n
X29mZmxpbmVfYXBwX2NhY2hlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIHsKLSAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxT
RSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlO
QV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBw
cml2LCBmYWxzZSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLm9mZmxpbmVBcHBDYWNoZTsK
IH0KIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfb2ZmbGluZV9hcHBfY2FjaGVfc2V0KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgZW5hYmxlKQogewotICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwor
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsK
ICAgICBlbmFibGUgPSAhIWVuYWJsZTsKICAgICBpZiAocHJpdi0+c2V0dGluZ3Mub2ZmbGluZUFw
cENhY2hlICE9IGVuYWJsZSkgewogICAgICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldE9mZmxp
bmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChlbmFibGUpOwogICAgICAgICBwcml2LT5zZXR0
aW5ncy5vZmZsaW5lQXBwQ2FjaGUgPSBlbmFibGU7CiAgICAgfQotICAgIHJldHVybiBFSU5BX1RS
VUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
Y2FyZXRfYnJvd3NpbmdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewotICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsK
LSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZB
TFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwg
ZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYs
IGZhbHNlKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuY2FyZXRCcm93c2luZzsKIH0KIAog
RWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfY2FyZXRfYnJvd3Npbmdfc2V0KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBFaW5hX0Jvb2wgZW5hYmxlKQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAgICBlbmFi
bGUgPSAhIWVuYWJsZTsKICAgICBpZiAocHJpdi0+c2V0dGluZ3MuY2FyZXRCcm93c2luZyAhPSBl
bmFibGUpIHsKICAgICAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRDYXJldEJyb3dzaW5nRW5h
YmxlZChlbmFibGUpOwogICAgICAgICBwcml2LT5zZXR0aW5ncy5jYXJldEJyb3dzaW5nID0gZW5h
YmxlOwogICAgIH0KLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQog
CiBjb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9nZXQoY29uc3Qg
RXZhc19PYmplY3QqIGV3a1ZpZXcpCkBAIC0yMTQyLDE0ICsyMTQyLDE0IEBAIGNvbnN0IGNoYXIq
IGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX2dldChjb25zdCBFdmFzX09iamVjdCog
ZXdrVmlldykKIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX3Nl
dChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogZW5jb2RpbmcpCiB7Ci0gICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwot
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFM
U0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBm
YWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwg
ZmFsc2UpOwogICAgIEV2YXNfT2JqZWN0KiBtYWluX2ZyYW1lID0gZXdrX3ZpZXdfZnJhbWVfbWFp
bl9nZXQoZXdrVmlldyk7CiAgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSA9IEVXS1ByaXZh
dGU6OmNvcmVGcmFtZShtYWluX2ZyYW1lKTsKICAgICBEQkcoIiVzIiwgZW5jb2RpbmcpOwogICAg
IGlmIChlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLmVuY29kaW5nQ3Vz
dG9tLCBlbmNvZGluZykpCiAgICAgICAgIGNvcmVGcmFtZS0+bG9hZGVyKCktPnJlbG9hZFdpdGhP
dmVycmlkZUVuY29kaW5nKFN0cmluZzo6ZnJvbVVURjgoZW5jb2RpbmcpKTsKLSAgICByZXR1cm4g
RUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBjb25zdCBjaGFyKiBld2tfdmlld19z
ZXR0aW5nX2VuY29kaW5nX2RlZmF1bHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQpA
QCAtMjE2MSw0OSArMjE2MSw0OSBAQCBjb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX2VuY29k
aW5nX2RlZmF1bHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogCiBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19kZWZhdWx0X3NldChFdmFzX09iamVjdCogZXdrVmll
dywgY29uc3QgY2hhciogZW5jb2RpbmcpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIGlmIChlaW5h
X3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLmVuY29kaW5nRGVmYXVsdCwgZW5j
b2RpbmcpKQogICAgICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldERlZmF1bHRUZXh0RW5jb2Rp
bmdOYW1lKFN0cmluZzo6ZnJvbVVURjgoZW5jb2RpbmcpKTsKLSAgICByZXR1cm4gRUlOQV9UUlVF
OworICAgIHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmNv
ZGluZ19kZXRlY3Rvcl9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBlbmFibGUp
CiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJ
TkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHBy
aXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIGVuYWJsZSA9ICEhZW5hYmxlOwogICAgIGlmIChwcml2
LT5zZXR0aW5ncy5lbmNvZGluZ0RldGVjdG9yICE9IGVuYWJsZSkgewogICAgICAgICBwcml2LT5w
YWdlU2V0dGluZ3MtPnNldFVzZXNFbmNvZGluZ0RldGVjdG9yKGVuYWJsZSk7CiAgICAgICAgIHBy
aXYtPnNldHRpbmdzLmVuY29kaW5nRGV0ZWN0b3IgPSBlbmFibGU7CiAgICAgfQotICAgIHJldHVy
biBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19z
ZXR0aW5nX2VuY29kaW5nX2RldGVjdG9yX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykK
IHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlO
QV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJp
diwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnRE
YXRhLCBwcml2LCBmYWxzZSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmVuY29kaW5nRGV0
ZWN0b3I7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9kZXZlbG9wZXJf
ZXh0cmFzX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIHsKLSAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7Cisg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsK
KyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7
CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmVuYWJsZURldmVsb3BlckV4dHJhczsKIH0KIAog
RWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9leHRyYXNfc2V0KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgZW5hYmxlKQogewotICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwor
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsK
ICAgICBlbmFibGUgPSAhIWVuYWJsZTsKICAgICBpZiAocHJpdi0+c2V0dGluZ3MuZW5hYmxlRGV2
ZWxvcGVyRXh0cmFzICE9IGVuYWJsZSkgewogICAgICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNl
dERldmVsb3BlckV4dHJhc0VuYWJsZWQoZW5hYmxlKTsKICAgICAgICAgcHJpdi0+c2V0dGluZ3Mu
ZW5hYmxlRGV2ZWxvcGVyRXh0cmFzID0gZW5hYmxlOwogICAgIH0KLSAgICByZXR1cm4gRUlOQV9U
UlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBpbnQgZXdrX3ZpZXdfc2V0dGluZ19mb250X21p
bmltdW1fc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCkBAIC0yMjE1LDEzICsy
MjE1LDEzIEBAIGludCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbWluaW11bV9zaXplX2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrVmlldykKIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9u
dF9taW5pbXVtX3NpemVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgc2l6ZSkKIHsKLSAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxT
RSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlO
QV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBw
cml2LCBmYWxzZSk7CiAgICAgaWYgKHByaXYtPnNldHRpbmdzLmZvbnRNaW5pbXVtU2l6ZSAhPSBz
aXplKSB7CiAgICAgICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0TWluaW11bUZvbnRTaXplKHNp
emUpOwogICAgICAgICBwcml2LT5zZXR0aW5ncy5mb250TWluaW11bVNpemUgPSBzaXplOwogICAg
IH0KLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBpbnQgZXdr
X3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fbG9naWNhbF9zaXplX2dldChjb25zdCBFdmFzX09i
amVjdCogZXdrVmlldykKQEAgLTIyMzMsMTMgKzIyMzMsMTMgQEAgaW50IGV3a192aWV3X3NldHRp
bmdfZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1Zp
ZXcpCiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbWluaW11bV9sb2dpY2FsX3Np
emVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgc2l6ZSkKIHsKLSAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7Cisg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsK
KyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7
CiAgICAgaWYgKHByaXYtPnNldHRpbmdzLmZvbnRNaW5pbXVtTG9naWNhbFNpemUgIT0gc2l6ZSkg
ewogICAgICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldE1pbmltdW1Mb2dpY2FsRm9udFNpemUo
c2l6ZSk7CiAgICAgICAgIHByaXYtPnNldHRpbmdzLmZvbnRNaW5pbXVtTG9naWNhbFNpemUgPSBz
aXplOwogICAgIH0KLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQog
CiBpbnQgZXdrX3ZpZXdfc2V0dGluZ19mb250X2RlZmF1bHRfc2l6ZV9nZXQoY29uc3QgRXZhc19P
YmplY3QqIGV3a1ZpZXcpCkBAIC0yMjUxLDEzICsyMjUxLDEzIEBAIGludCBld2tfdmlld19zZXR0
aW5nX2ZvbnRfZGVmYXVsdF9zaXplX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIAog
RWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9kZWZhdWx0X3NpemVfc2V0KEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBpbnQgc2l6ZSkKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CiAgICAgaWYgKHByaXYt
PnNldHRpbmdzLmZvbnREZWZhdWx0U2l6ZSAhPSBzaXplKSB7CiAgICAgICAgIHByaXYtPnBhZ2VT
ZXR0aW5ncy0+c2V0RGVmYXVsdEZvbnRTaXplKHNpemUpOwogICAgICAgICBwcml2LT5zZXR0aW5n
cy5mb250RGVmYXVsdFNpemUgPSBzaXplOwogICAgIH0KLSAgICByZXR1cm4gRUlOQV9UUlVFOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiBpbnQgZXdrX3ZpZXdfc2V0dGluZ19mb250X21vbm9zcGFj
ZV9zaXplX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKQEAgLTIyNjksMTMgKzIyNjks
MTMgQEAgaW50IGV3a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2l6ZV9nZXQoY29uc3Qg
RXZhc19PYmplY3QqIGV3a1ZpZXcpCiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRf
bW9ub3NwYWNlX3NpemVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgc2l6ZSkKIHsKLSAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxT
RSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlO
QV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBw
cml2LCBmYWxzZSk7CiAgICAgaWYgKHByaXYtPnNldHRpbmdzLmZvbnRNb25vc3BhY2VTaXplICE9
IHNpemUpIHsKICAgICAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXREZWZhdWx0Rml4ZWRGb250
U2l6ZShzaXplKTsKICAgICAgICAgcHJpdi0+c2V0dGluZ3MuZm9udE1vbm9zcGFjZVNpemUgPSBz
aXplOwogICAgIH0KLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQog
CiBjb25zdCBjaGFyKiBld2tfdmlld19mb250X2ZhbWlseV9uYW1lX2dldChjb25zdCBFdmFzX09i
amVjdCogZXdrVmlldywgRXdrX0ZvbnRfRmFtaWx5IGZvbnRGYW1pbHkpCkBAIC0yMzAyLDggKzIz
MDIsOCBAQCBjb25zdCBjaGFyKiBld2tfdmlld19mb250X2ZhbWlseV9uYW1lX2dldChjb25zdCBF
dmFzX09iamVjdCogZXdrVmlldywgRXdrX0ZvbnRfRgogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfZm9u
dF9mYW1pbHlfbmFtZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Gb250X0ZhbWlseSBm
b250RmFtaWx5LCBjb25zdCBjaGFyKiBuYW1lKQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKIAogICAgIHN3
aXRjaCAoZm9udEZhbWlseSkgewogICAgIGNhc2UgRVdLX0ZPTlRfRkFNSUxZX1NUQU5EQVJEOgpA
QCAtMjMzMSw2NyArMjMzMSw2NyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFt
ZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Gb250X0ZhbWlseSBmbwogICAgICAgICAg
ICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRTYW5zU2VyaWZGb250RmFtaWx5KEF0b21pY1N0cmlu
Zzo6ZnJvbVVURjgobmFtZSkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAg
ICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tf
dmlld19zZXR0aW5nX3NwYXRpYWxfbmF2aWdhdGlvbl9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3
a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5zcGF0
aWFsTmF2aWdhdGlvbjsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfc3BhdGlhbF9u
YXZpZ2F0aW9uX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIGVuYWJsZSkKIHsK
LSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9G
QUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwg
RUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2LCBmYWxzZSk7CiAgICAgZW5hYmxlID0gISFlbmFibGU7CiAgICAgaWYgKHByaXYtPnNl
dHRpbmdzLnNwYXRpYWxOYXZpZ2F0aW9uICE9IGVuYWJsZSkgewogICAgICAgICBwcml2LT5wYWdl
U2V0dGluZ3MtPnNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChlbmFibGUpOwogICAgICAgICBw
cml2LT5zZXR0aW5ncy5zcGF0aWFsTmF2aWdhdGlvbiA9IGVuYWJsZTsKICAgICB9Ci0gICAgcmV0
dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3
X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7
Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFf
RkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYs
IEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0
YSwgcHJpdiwgZmFsc2UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5sb2NhbFN0b3JhZ2U7
CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2Vfc2V0KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgZW5hYmxlKQogewotICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAg
ICBlbmFibGUgPSAhIWVuYWJsZTsKICAgICBpZiAocHJpdi0+c2V0dGluZ3MubG9jYWxTdG9yYWdl
ICE9IGVuYWJsZSkgewogICAgICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldExvY2FsU3RvcmFn
ZUVuYWJsZWQoZW5hYmxlKTsKICAgICAgICAgcHJpdi0+c2V0dGluZ3MubG9jYWxTdG9yYWdlID0g
ZW5hYmxlOwogICAgIH0KLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwog
fQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19wYWdlX2NhY2hlX2dldChjb25zdCBFdmFz
X09iamVjdCogZXdrVmlldykKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CiAgICAgcmV0dXJuIHByaXYtPnNl
dHRpbmdzLnBhZ2VDYWNoZTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfcGFnZV9j
YWNoZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBlbmFibGUpCiB7Ci0gICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0Up
OwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFf
RkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
LCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJp
diwgZmFsc2UpOwogICAgIGVuYWJsZSA9ICEhZW5hYmxlOwogICAgIGlmIChwcml2LT5zZXR0aW5n
cy5wYWdlQ2FjaGUgIT0gZW5hYmxlKSB7CiAgICAgICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0
VXNlc1BhZ2VDYWNoZShlbmFibGUpOwogICAgICAgICBwcml2LT5zZXR0aW5ncy5wYWdlQ2FjaGUg
PSBlbmFibGU7CiAgICAgfQotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKIGNvbnN0IGNoYXIqIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9kYXRhYmFz
ZV9wYXRoX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKQEAgLTI0MDMsMjggKzI0MDMs
MjggQEAgY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX2RhdGFiYXNl
X3BhdGhfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KgogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBj
b25zdCBjaGFyKiBwYXRoKQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAgICBpZiAoZWluYV9zdHJpbmdz
aGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5ncy5sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgsIHBh
dGgpKQogICAgICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldExvY2FsU3RvcmFnZURhdGFiYXNl
UGF0aChTdHJpbmc6OmZyb21VVEY4KHBhdGgpKTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAg
IHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19taW5pbXVtX3Rp
bWVyX2ludGVydmFsX3NldChFdmFzX09iamVjdCogZXdrVmlldywgZG91YmxlIGludGVydmFsKQog
ewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5B
X0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2
LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNt
YXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYsIGZhbHNlKTsKICAgICBpZiAoZmFicyhwcml2LT5zZXR0aW5ncy5kb21UaW1lcklu
dGVydmFsIC0gaW50ZXJ2YWwpID49IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6ZXBzaWxv
bigpKSB7CiAgICAgICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0TWluRE9NVGltZXJJbnRlcnZh
bChpbnRlcnZhbCk7CiAgICAgICAgIHByaXYtPnNldHRpbmdzLmRvbVRpbWVySW50ZXJ2YWwgPSBp
bnRlcnZhbDsKICAgICB9Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogZG91YmxlIGV3a192aWV3X3NldHRpbmdfbWluaW11bV90aW1lcl9pbnRlcnZhbF9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIHJldHVy
biBwcml2LT5zZXR0aW5ncy5kb21UaW1lckludGVydmFsOwogfQogCkBAIC0yNjQxLDExICsyNjQx
LDExIEBAIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF90cmFuc2xhdGUoRXdrX1ZpZXdfUGFp
bnRfQ29udGV4dCogY29udGV4dCwgZmxvYXQgeCwKIAogRWluYV9Cb29sIGV3a192aWV3X3BhaW50
KEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgY2Fpcm9fdCogY3IsIGNvbnN0IEVpbmFfUmVj
dGFuZ2xlKiBhcmVhKQogewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2
LCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY3IsIEVJ
TkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChhcmVhLCBFSU5B
X0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdiwgZmFsc2Up
OworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjciwgZmFsc2UpOworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChhcmVhLCBmYWxzZSk7CiAgICAgV2ViQ29yZTo6
RnJhbWVWaWV3KiB2aWV3ID0gcHJpdi0+bWFpbkZyYW1lLT52aWV3KCk7Ci0gICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKHZpZXcsIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTCh2aWV3LCBmYWxzZSk7CiAKICAgICBpZiAodmlldy0+bmVlZHNM
YXlvdXQoKSkKICAgICAgICAgdmlldy0+Zm9yY2VMYXlvdXQoKTsKQEAgLTI2NjEsMTYgKzI2NjEs
MTYgQEAgRWluYV9Cb29sIGV3a192aWV3X3BhaW50KEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJp
diwgY2Fpcm9fdCogY3IsIGNvbnN0IEVpbmFfUmUKICAgICBncmFwaGljc0NvbnRleHQucmVzdG9y
ZSgpOwogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogCi0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3BhaW50X2NvbnRlbnRzKEV3
a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgY2Fpcm9fdCogY3IsIGNvbnN0IEVpbmFfUmVjdGFu
Z2xlKiBhcmVhKQogewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2LCBF
SU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY3IsIEVJTkFf
RkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChhcmVhLCBFSU5BX0ZB
TFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdiwgZmFsc2UpOwor
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjciwgZmFsc2UpOworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChhcmVhLCBmYWxzZSk7CiAgICAgV2ViQ29yZTo6RnJh
bWVWaWV3KiB2aWV3ID0gcHJpdi0+bWFpbkZyYW1lLT52aWV3KCk7Ci0gICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHZpZXcsIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTCh2aWV3LCBmYWxzZSk7CiAKICAgICBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQgZ3JhcGhpY3NDb250ZXh0KGNyKTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QoYXJl
YS0+eCwgYXJlYS0+eSwgYXJlYS0+dywgYXJlYS0+aCk7CkBAIC0yNjg0LDcgKzI2ODQsNyBAQCBF
aW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnRfY29udGVudHMoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBw
cml2LCBjYWlyb190KiBjciwgY29ucwogICAgIGdyYXBoaWNzQ29udGV4dC5yZXN0b3JlKCk7CiAg
ICAgY2Fpcm9fcmVzdG9yZShjcik7CiAKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVy
biB0cnVlOwogfQogCiAKQEAgLTI3MDksNyArMjcwOSw3IEBAIHZvaWQgZXdrX3ZpZXdfcmVhZHko
RXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgKiBFbWl0cyBzaWduYWw6ICJpbnB1dG1ldGhvZCxjaGFu
Z2VkIiB3aXRoIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgaXQncwogICogZW5hYmxlZCBv
ciBub3QuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfaW5wdXRfbWV0aG9kX3N0YXRlX3NldChFdmFzX09i
amVjdCogZXdrVmlldywgRWluYV9Cb29sIGFjdGl2ZSkKK3ZvaWQgZXdrX3ZpZXdfaW5wdXRfbWV0
aG9kX3N0YXRlX3NldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBhY3RpdmUpCiB7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwogICAgIEVXS19W
SUVXX1BSSVZfR0VUKHNtYXJ0RGF0YSwgcHJpdik7CkBAIC0yOTM5LDggKzI5MzksOCBAQCB2b2lk
IGV3a192aWV3X3Jlc3RvcmVfc3RhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0
KiBmcmFtZSkKICAqIGJlIGZyZWVkIGFmdGVyIHJldHVybmluZyB0byB0aGlzIGZ1bmN0aW9uLgog
ICoKICAqIEBwYXJhbSBld2tWaWV3IEN1cnJlbnQgdmlldy4KLSAqIEBwYXJhbSBqYXZhc2NyaXB0
IEBjIEVJTkFfVFJVRSBpZiB0aGUgbmV3IHdpbmRvdyBpcyBvcmlnaW5hdGVkIGZyb20gamF2YXNj
cmlwdCwKLSAqIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKiBAcGFyYW0gamF2YXNjcmlwdCBA
YyB0cnVlIGlmIHRoZSBuZXcgd2luZG93IGlzIG9yaWdpbmF0ZWQgZnJvbSBqYXZhc2NyaXB0LAor
ICogQGMgZmFsc2Ugb3RoZXJ3aXNlCiAgKiBAcGFyYW0gd2lkdGhpbmRvd19mZWF0dXJlcyBGZWF0
dXJlcyBvZiB0aGUgbmV3IHdpbmRvdyBiZWluZyBjcmVhdGVkLiBJZiBpdCdzIEBjCiAgKiBOVUxM
LCBpdCB3aWxsIGJlIGNyZWF0ZWQgYSB3aW5kb3cgd2l0aCBkZWZhdWx0IGZlYXR1cmVzLgogICoK
QEAgLTI5NDksNyArMjk0OSw3IEBAIHZvaWQgZXdrX3ZpZXdfcmVzdG9yZV9zdGF0ZShFdmFzX09i
amVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lKQogICoKICAqIEBzZWUgZXdrX3dpbmRv
d19mZWF0dXJlc19yZWYoKS4KICAqLwotRXZhc19PYmplY3QqIGV3a192aWV3X3dpbmRvd19jcmVh
dGUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBqYXZhc2NyaXB0LCBjb25zdCBXZWJD
b3JlOjpXaW5kb3dGZWF0dXJlcyogY29yZUZlYXR1cmVzKQorRXZhc19PYmplY3QqIGV3a192aWV3
X3dpbmRvd19jcmVhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgamF2YXNjcmlwdCwgY29u
c3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMqIGNvcmVGZWF0dXJlcykKIHsKICAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7CiAKQEAgLTMwMTUsNyAr
MzAxNSw3IEBAIHZvaWQgZXdrX3ZpZXdfbW91c2VfbGlua19ob3Zlcl9vdXQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCiAgKgogICogRW1pdHMgc2lnbmFsOiAidG9vbGJhcnMsdmlzaWJsZSxzZXQiIHdp
dGggYSBwb2ludGVyIHRvIGEgYm9vbGVhbi4KICAqLwotdm9pZCBld2tfdmlld190b29sYmFyc192
aXNpYmxlX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIHZpc2libGUpCit2b2lk
IGV3a192aWV3X3Rvb2xiYXJzX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29s
IHZpc2libGUpCiB7CiAgICAgREJHKCJld2tWaWV3PSVwICh2aXNpYmxlPSVkKSIsIGV3a1ZpZXcs
ICEhdmlzaWJsZSk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3
LCAidG9vbGJhcnMsdmlzaWJsZSxzZXQiLCAmdmlzaWJsZSk7CkBAIC0zMDMyLDEwICszMDMyLDEw
IEBAIHZvaWQgZXdrX3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIEVpbmFfQm9vbCB2aXNpYmxlKQogICoKICAqIEVtaXRzIHNpZ25hbDogInRvb2xiYXJzLHZp
c2libGUsZ2V0IiB3aXRoIGEgcG9pbnRlciB0byBhIGJvb2xlYW4uCiAgKi8KLXZvaWQgZXdrX3Zp
ZXdfdG9vbGJhcnNfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCog
dmlzaWJsZSkKK3ZvaWQgZXdrX3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9nZXQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIGJvb2wqIHZpc2libGUpCiB7CiAgICAgREJHKCIlcywgbz0lcCIsIF9fZnVuY19f
LCBld2tWaWV3KTsKLSAgICAqdmlzaWJsZSA9IEVJTkFfRkFMU0U7CisgICAgKnZpc2libGUgPSBm
YWxzZTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJ0b29s
YmFycyx2aXNpYmxlLGdldCIsIHZpc2libGUpOwogfQogCkBAIC0zMDQ4LDcgKzMwNDgsNyBAQCB2
b2lkIGV3a192aWV3X3Rvb2xiYXJzX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBF
aW5hX0Jvb2wqIHZpc2libGUpCiAgKgogICogRW1pdHMgc2lnbmFsOiAic3RhdHVzYmFyLHZpc2li
bGUsc2V0IiB3aXRoIGEgcG9pbnRlciB0byBhIGJvb2xlYW4uCiAgKi8KLXZvaWQgZXdrX3ZpZXdf
c3RhdHVzYmFyX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgdmlz
aWJsZSkKK3ZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBib29sICB2aXNpYmxlKQogewogICAgIERCRygiZXdrVmlldz0lcCAodmlzaWJsZT0l
ZCkiLCBld2tWaWV3LCAhIXZpc2libGUpOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2NhbGwoZXdrVmlldywgInN0YXR1c2Jhcix2aXNpYmxlLHNldCIsICZ2aXNpYmxlKTsKQEAgLTMw
NjUsMTAgKzMwNjUsMTAgQEAgdm9pZCBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJsZV9zZXQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCB2aXNpYmxlKQogICoKICAqIEVtaXRzIHNpZ25h
bDogInN0YXR1c2Jhcix2aXNpYmxlLGdldCIgd2l0aCBhIHBvaW50ZXIgdG8gYSBib29sZWFuLgog
ICovCi12b2lkIGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX2dldChFdmFzX09iamVjdCogZXdr
VmlldywgRWluYV9Cb29sKiB2aXNpYmxlKQordm9pZCBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJs
ZV9nZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wqIHZpc2libGUpCiB7CiAgICAgREJHKCIl
cywgbz0lcCIsIF9fZnVuY19fLCBld2tWaWV3KTsKLSAgICAqdmlzaWJsZSA9IEVJTkFfRkFMU0U7
CisgICAgKnZpc2libGUgPSBmYWxzZTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKGV3a1ZpZXcsICJzdGF0dXNiYXIsdmlzaWJsZSxnZXQiLCB2aXNpYmxlKTsKIH0KIApAQCAt
MzA5Nyw3ICszMDk3LDcgQEAgdm9pZCBld2tfdmlld19zdGF0dXNiYXJfdGV4dF9zZXQoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHRleHQpCiAgKgogICogRW1pdHMgc2lnbmFsOiAi
c2Nyb2xsYmFycyx2aXNpYmxlLHNldCIgd2l0aCBhIHBvaW50ZXIgdG8gYSBib29sZWFuLgogICov
Ci12b2lkIGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIEVpbmFfQm9vbCB2aXNpYmxlKQordm9pZCBld2tfdmlld19zY3JvbGxiYXJzX3Zpc2libGVf
c2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIHZpc2libGUpCiB7CiAgICAgREJHKCJld2tW
aWV3PSVwICh2aXNpYmxlPSVkKSIsIGV3a1ZpZXcsICEhdmlzaWJsZSk7CiAgICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAic2Nyb2xsYmFycyx2aXNpYmxlLHNldCIs
ICZ2aXNpYmxlKTsKQEAgLTMxMTQsMTAgKzMxMTQsMTAgQEAgdm9pZCBld2tfdmlld19zY3JvbGxi
YXJzX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgdmlzaWJsZSkK
ICAqCiAgKiBFbWl0cyBzaWduYWw6ICJzY3JvbGxiYXJzLHZpc2libGUsZ2V0IiB3aXRoIGEgcG9p
bnRlciB0byBhIGJvb2xlYW4uCiAgKi8KLXZvaWQgZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxl
X2dldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sKiB2aXNpYmxlKQordm9pZCBld2tf
dmlld19zY3JvbGxiYXJzX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sKiB2
aXNpYmxlKQogewogICAgIERCRygiJXMsIG89JXAiLCBfX2Z1bmNfXywgZXdrVmlldyk7Ci0gICAg
KnZpc2libGUgPSBFSU5BX0ZBTFNFOworICAgICp2aXNpYmxlID0gZmFsc2U7CiAgICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAic2Nyb2xsYmFycyx2aXNpYmxlLGdl
dCIsIHZpc2libGUpOwogfQogCkBAIC0zMTMwLDcgKzMxMzAsNyBAQCB2b2lkIGV3a192aWV3X3Nj
cm9sbGJhcnNfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCogdmlz
aWJsZSkKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJtZW51YmFyLHZpc2libGUsc2V0IiB3aXRoIGEg
cG9pbnRlciB0byBhIGJvb2xlYW4uCiAgKi8KLXZvaWQgZXdrX3ZpZXdfbWVudWJhcl92aXNpYmxl
X3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIHZpc2libGUpCit2b2lkIGV3a192
aWV3X21lbnViYXJfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgdmlzaWJs
ZSkKIHsKICAgICBEQkcoImV3a1ZpZXc9JXAgKHZpc2libGU9JWQpIiwgZXdrVmlldywgISF2aXNp
YmxlKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJtZW51
YmFyLHZpc2libGUsc2V0IiwgJnZpc2libGUpOwpAQCAtMzE0NywxMCArMzE0NywxMCBAQCB2b2lk
IGV3a192aWV3X21lbnViYXJfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFf
Qm9vbCB2aXNpYmxlKQogICoKICAqIEVtaXRzIHNpZ25hbDogIm1lbnViYXIsdmlzaWJsZSxnZXQi
IHdpdGggYSBwb2ludGVyIHRvIGEgYm9vbGVhbi4KICAqLwotdm9pZCBld2tfdmlld19tZW51YmFy
X3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wqIHZpc2libGUpCit2
b2lkIGV3a192aWV3X21lbnViYXJfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJv
b2wqIHZpc2libGUpCiB7CiAgICAgREJHKCIlcywgbz0lcCIsIF9fZnVuY19fLCBld2tWaWV3KTsK
LSAgICAqdmlzaWJsZSA9IEVJTkFfRkFMU0U7CisgICAgKnZpc2libGUgPSBmYWxzZTsKICAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJtZW51YmFyLHZpc2libGUs
Z2V0IiwgdmlzaWJsZSk7CiB9CiAKQEAgLTMyMTIsMjYgKzMyMTIsMjYgQEAgdm9pZCBld2tfdmll
d19ydW5famF2YXNjcmlwdF9hbGVydChFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3Qq
IGZyYW1lLCBjb24KICAgICBzbWFydERhdGEtPmFwaS0+cnVuX2phdmFzY3JpcHRfYWxlcnQoc21h
cnREYXRhLCBmcmFtZSwgbWVzc2FnZSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19ydW5famF2
YXNjcmlwdF9jb25maXJtKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUs
IGNvbnN0IGNoYXIqIG1lc3NhZ2UpCitib29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZp
cm0oRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciog
bWVzc2FnZSkKIHsKICAgICBEQkcoImV3a1ZpZXc9JXAgZnJhbWU9JXAgbWVzc2FnZT0lcyIsIGV3
a1ZpZXcsIGZyYW1lLCBtZXNzYWdlKTsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmFwaSwgZmFsc2UpOwogCiAgICAgaWYgKCFz
bWFydERhdGEtPmFwaS0+cnVuX2phdmFzY3JpcHRfY29uZmlybSkKLSAgICAgICAgcmV0dXJuIEVJ
TkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBzbWFydERhdGEt
PmFwaS0+cnVuX2phdmFzY3JpcHRfY29uZmlybShzbWFydERhdGEsIGZyYW1lLCBtZXNzYWdlKTsK
IH0KIAotRWluYV9Cb29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X3Byb21wdChFdmFzX09iamVj
dCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBtZXNzYWdlLCBjb25z
dCBjaGFyKiBkZWZhdWx0VmFsdWUsIGNoYXIqKiB2YWx1ZSkKK2Jvb2wgZXdrX3ZpZXdfcnVuX2ph
dmFzY3JpcHRfcHJvbXB0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUs
IGNvbnN0IGNoYXIqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIGRlZmF1bHRWYWx1ZSwgY2hhcioqIHZh
bHVlKQogewogICAgIERCRygiZXdrVmlldz0lcCBmcmFtZT0lcCBtZXNzYWdlPSVzIiwgZXdrVmll
dywgZnJhbWUsIG1lc3NhZ2UpOwotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoc21hcnREYXRhLT5hcGksIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLCBmYWxzZSk7CiAKICAgICBpZiAoIXNtYXJ0
RGF0YS0+YXBpLT5ydW5famF2YXNjcmlwdF9wcm9tcHQpCi0gICAgICAgIHJldHVybiBFSU5BX0ZB
TFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gc21hcnREYXRhLT5hcGkt
PnJ1bl9qYXZhc2NyaXB0X3Byb21wdChzbWFydERhdGEsIGZyYW1lLCBtZXNzYWdlLCBkZWZhdWx0
VmFsdWUsIHZhbHVlKTsKIH0KQEAgLTMyNDAsMjEgKzMyNDAsMjEgQEAgRWluYV9Cb29sIGV3a192
aWV3X3J1bl9qYXZhc2NyaXB0X3Byb21wdChFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmpl
Y3QqIGZyYW0KICAqIEBpbnRlcm5hbAogICogRGVsZWdhdGVzIHRvIGNsaWVudCB0byBkZWNpZGUg
d2hldGhlciBhIHNjcmlwdCBtdXN0IGJlIHN0b3BwZWQgYmVjYXVzZSBpdCdzCiAgKiBydW5uaW5n
IGZvciB0b28gbG9uZy4gSWYgY2xpZW50IGRvZXMgbm90IGltcGxlbWVudCBpdCwgaXQgZ29lcyB0
byBkZWZhdWx0Ci0gKiBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggbG9ncyBhbmQgcmV0dXJucyBFSU5B
X0ZBTFNFLiBDbGllbnQgbWF5IHJlbW92ZSBsb2cgYnkKLSAqIHNldHRpbmcgdGhpcyBmdW5jdGlv
biAwLCB3aGljaCB3aWxsIGp1c3QgcmV0dXJuIEVJTkFfRkFMU0UuCisgKiBpbXBsZW1lbnRhdGlv
biwgd2hpY2ggbG9ncyBhbmQgcmV0dXJucyBmYWxzZS4gQ2xpZW50IG1heSByZW1vdmUgbG9nIGJ5
CisgKiBzZXR0aW5nIHRoaXMgZnVuY3Rpb24gMCwgd2hpY2ggd2lsbCBqdXN0IHJldHVybiBmYWxz
ZS4KICAqCiAgKiBAcGFyYW0gZXdrVmlldyBWaWV3LgogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIGlmIHNjcmlwdCBzaG91bGQgYmUgc3RvcHBlZDsgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UK
KyAqIEByZXR1cm4gQGMgdHJ1ZSBpZiBzY3JpcHQgc2hvdWxkIGJlIHN0b3BwZWQ7IEBjIGZhbHNl
IG90aGVyd2lzZQogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2hvdWxkX2ludGVycnVwdF9qYXZh
c2NyaXB0KEV2YXNfT2JqZWN0KiBld2tWaWV3KQorYm9vbCBld2tfdmlld19zaG91bGRfaW50ZXJy
dXB0X2phdmFzY3JpcHQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAgICAgREJHKCJld2tWaWV3
PSVwIiwgZXdrVmlldyk7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChzbWFydERhdGEtPmFwaSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoc21hcnREYXRhLT5hcGksIGZhbHNlKTsKIAogICAgIGlmICghc21hcnREYXRh
LT5hcGktPnNob3VsZF9pbnRlcnJ1cHRfamF2YXNjcmlwdCkKLSAgICAgICAgcmV0dXJuIEVJTkFf
RkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBzbWFydERhdGEtPmFw
aS0+c2hvdWxkX2ludGVycnVwdF9qYXZhc2NyaXB0KHNtYXJ0RGF0YSk7CiB9CkBAIC0zMjk1LDE2
ICszMjk1LDE2IEBAIHVpbnQ2NF90IGV3a192aWV3X2V4Y2VlZGVkX2RhdGFiYXNlX3F1b3RhKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhCiAgKiBAcGFyYW0gYWNjZXB0TUlN
RVR5cGVzIExpc3Qgb2YgYWNjZXB0ZWQgbWltZSB0eXBlcy4gSXQgaXMgcGFzc2VkIHRvIGNoaWxk
IG9iamVjdHMgYXMgYW4gRWluYV9MaXN0IG9mIGNoYXIgcG9pbnRlcnMgdGhhdCBpcyBmcmVlZCBh
dXRvbWF0aWNhbGx5LgogICogQHBhcmFtIHNlbGVjdGVkRmlsZW5hbWVzIExpc3Qgb2YgZmlsZXMg
c2VsZWN0ZWQuCiAgKgotICogQHJldHVybiBARUlOQV9GQUxTRSBpZiB1c2VyIGNhbmNlbGVkIGZp
bGUgc2VsZWN0aW9uOyBARUlOQV9UUlVFIGlmIGNvbmZpcm1lZC4KKyAqIEByZXR1cm4gQGZhbHNl
IGlmIHVzZXIgY2FuY2VsZWQgZmlsZSBzZWxlY3Rpb247IEB0cnVlIGlmIGNvbmZpcm1lZC4KICAq
LwotRWluYV9Cb29sIGV3a192aWV3X3J1bl9vcGVuX3BhbmVsKEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBFdmFzX09iamVjdCogZnJhbWUsIGJvb2wgYWxsb3dzTXVsdGlwbGVGaWxlcywgY29uc3QgV1RG
OjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBhY2NlcHRNSU1FVHlwZXMsIEVpbmFfTGlzdCoqIHNlbGVj
dGVkRmlsZW5hbWVzKQorYm9vbCBld2tfdmlld19ydW5fb3Blbl9wYW5lbChFdmFzX09iamVjdCog
ZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBib29sIGFsbG93c011bHRpcGxlRmlsZXMsIGNv
bnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgYWNjZXB0TUlNRVR5cGVzLCBFaW5hX0xpc3Qq
KiBzZWxlY3RlZEZpbGVuYW1lcykKIHsKICAgICBEQkcoImV3a1ZpZXc9JXAgZnJhbWU9JXAgYWxs
b3dzX211bHRpcGxlX2ZpbGVzPSVkIiwgZXdrVmlldywgZnJhbWUsIGFsbG93c011bHRpcGxlRmls
ZXMpOwotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBF
SU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRh
LT5hcGksIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHNtYXJ0RGF0YS0+YXBpLCBmYWxzZSk7CiAKICAgICBpZiAoIXNtYXJ0RGF0YS0+YXBpLT5ydW5f
b3Blbl9wYW5lbCkKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgICpzZWxlY3RlZEZpbGVuYW1lcyA9IDA7CiAKQEAgLTMzMzMsNyArMzMzMyw3
IEBAIHZvaWQgZXdrX3ZpZXdfcmVwYWludChFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19Db29y
ZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vCiAgICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQo
c21hcnREYXRhKTsKIH0KIAotdm9pZCBld2tfdmlld19zY3JvbGwoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIEV2YXNfQ29vcmQgZHgsIEV2YXNfQ29vcmQgZHksIEV2YXNfQ29vcmQgc2Nyb2xsWCwgRXZh
c19Db29yZCBzY3JvbGxZLCBFdmFzX0Nvb3JkIHNjcm9sbFdpZHRoLCBFdmFzX0Nvb3JkIHNjcm9s
bEhlaWdodCwgRXZhc19Db29yZCBjZW50ZXJYLCBFdmFzX0Nvb3JkIGNlbnRlclksIEV2YXNfQ29v
cmQgY2VudGVyV2lkdGgsIEV2YXNfQ29vcmQgY2VudGVySGVpZ2h0LCBFaW5hX0Jvb2wgbWFpbkZy
YW1lKQordm9pZCBld2tfdmlld19zY3JvbGwoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfQ29v
cmQgZHgsIEV2YXNfQ29vcmQgZHksIEV2YXNfQ29vcmQgc2Nyb2xsWCwgRXZhc19Db29yZCBzY3Jv
bGxZLCBFdmFzX0Nvb3JkIHNjcm9sbFdpZHRoLCBFdmFzX0Nvb3JkIHNjcm9sbEhlaWdodCwgRXZh
c19Db29yZCBjZW50ZXJYLCBFdmFzX0Nvb3JkIGNlbnRlclksIEV2YXNfQ29vcmQgY2VudGVyV2lk
dGgsIEV2YXNfQ29vcmQgY2VudGVySGVpZ2h0LCBib29sIG1haW5GcmFtZSkKIHsKICAgICBEQkco
ImV3a1ZpZXc9JXAsIGRlbHRhOiAlZCwlZCwgc2Nyb2xsOiAlZCwlZCslZHglZCwgY2xpcDogJWQs
JWQrJWR4JWQiLAogICAgICAgICBld2tWaWV3LCBkeCwgZHksIHNjcm9sbFgsIHNjcm9sbFksIHNj
cm9sbFdpZHRoLCBzY3JvbGxIZWlnaHQsIGNlbnRlclgsIGNlbnRlclksIGNlbnRlcldpZHRoLCBj
ZW50ZXJIZWlnaHQpOwpAQCAtMzM4OCw3ICszMzg4LDcgQEAgV1RGOjpQYXNzUmVmUHRyPFdlYkNv
cmU6OkZyYW1lPiBld2tfdmlld19mcmFtZV9jcmVhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2
YXMKICAgICBpZiAoIWNvcmVGcmFtZS0+cGFnZSgpIHx8ICFjb3JlRnJhbWUtPnRyZWUoKSB8fCAh
Y29yZUZyYW1lLT50cmVlKCktPnBhcmVudCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHNt
YXJ0RGF0YS0+Y2hhbmdlZC5mcmFtZV9yZWN0ID0gRUlOQV9UUlVFOworICAgIHNtYXJ0RGF0YS0+
Y2hhbmdlZC5mcmFtZV9yZWN0ID0gdHJ1ZTsKICAgICBfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZChz
bWFydERhdGEpOwogCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3
LCAiZnJhbWUsY3JlYXRlZCIsIGZyYW1lKTsKQEAgLTM0MDIsNyArMzQwMiw3IEBAIFdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGV3a192aWV3X3BsdWdpbl9jcmVhdGUoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIEV2CiAgICAgICAgIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtaW1l
VHlwZS51dGY4KCkuZGF0YSgpKTsKIAogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhLCAwKTsKLSAgICBzbWFydERhdGEtPmNoYW5nZWQuZnJhbWVfcmVjdCA9
IEVJTkFfVFJVRTsKKyAgICBzbWFydERhdGEtPmNoYW5nZWQuZnJhbWVfcmVjdCA9IHRydWU7CiAg
ICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoc21hcnREYXRhKTsKIAogICAgIHJldHVybiBld2tf
ZnJhbWVfcGx1Z2luX2NyZWF0ZQpAQCAtMzQ1NywxMSArMzQ1NywxMSBAQCB2b2lkIGV3a192aWV3
X3BvcHVwX25ldyhFdmFzX09iamVjdCogZXdrVmlldywgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50
KiBjbGllbnQsCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBfZGVzdHJveShFdmFzX09iamVjdCog
ZXdrVmlldykKIHsKICAgICBJTkYoImV3a1ZpZXc9JXAiLCBld2tWaWV3KTsKLSAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7
CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNl
KTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxz
ZSk7CiAKICAgICBpZiAoIXByaXYtPnBvcHVwLm1lbnVDbGllbnQpCi0gICAgICAgIHJldHVybiBF
SU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJwb3B1cCx3aWxsZGVsZXRlIiwgJnByaXYtPnBvcHVw
Lm1lbnUpOwogCkBAIC0zNDc0LDcgKzM0NzQsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBf
ZGVzdHJveShFdmFzX09iamVjdCogZXdrVmlldykKICAgICBwcml2LT5wb3B1cC5tZW51Q2xpZW50
LT5wb3B1cERpZEhpZGUoKTsKICAgICBwcml2LT5wb3B1cC5tZW51Q2xpZW50ID0gMDsKIAotICAg
IHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgZXdrX3ZpZXdf
cG9wdXBfc2VsZWN0ZWRfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgaW5kZXgpCkBAIC0z
NTU2LDE4ICszNTU2LDE4IEBAIHZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19nZXQo
Y29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCogd2lkdGgsIGluCiAKIEVpbmFfQm9vbCBl
d2tfdmlld196b29tX3JhbmdlX3NldChFdmFzX09iamVjdCogZXdrVmlldywgZmxvYXQgbWluU2Nh
bGUsIGZsb2F0IG1heFNjYWxlKQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKIAogICAgIGlmIChtYXhTY2Fs
ZSA8IG1pblNjYWxlKSB7CiAgICAgICAgIFdSTigibWluX3NjYWxlIGlzIGxhcmdlciB0aGFuIG1h
eF9zY2FsZSIpOwotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAogICAgIHByaXYtPnNldHRpbmdzLnpvb21SYW5nZS5taW5TY2FsZSA9IG1p
blNjYWxlOwogICAgIHByaXYtPnNldHRpbmdzLnpvb21SYW5nZS5tYXhTY2FsZSA9IG1heFNjYWxl
OwogCi0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogZmxvYXQg
ZXdrX3ZpZXdfem9vbV9yYW5nZV9taW5fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQpA
QCAtMzU4OCwxOCArMzU4OCwxOCBAQCBmbG9hdCBld2tfdmlld196b29tX3JhbmdlX21heF9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAKIEVpbmFfQm9vbCBld2tfdmlld191c2VyX3Nj
YWxhYmxlX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIHVzZXJTY2FsYWJsZSkK
IHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlO
QV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJp
diwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnRE
YXRhLCBwcml2LCBmYWxzZSk7CiAKICAgICBwcml2LT5zZXR0aW5ncy56b29tUmFuZ2UudXNlclNj
YWxhYmxlID0gdXNlclNjYWxhYmxlOwogCi0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3VzZXJfc2NhbGFibGVfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
ZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKIAogICAgIHJldHVybiBw
cml2LT5zZXR0aW5ncy56b29tUmFuZ2UudXNlclNjYWxhYmxlOwogfQpAQCAtMzYxOSw3ICszNjE5
LDcgQEAgdm9pZCBld2tfdmlld19kaWRfZmlyc3RfdmlzdWFsbHlfbm9uZW1wdHlfbGF5b3V0KEV2
YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIGlmICghcHJpdi0+ZmxhZ3Mudmlld0NsZWFyZWQpIHsK
ICAgICAgICAgZXdrX3ZpZXdfZnJhbWVfbWFpbl9jbGVhcmVkKGV3a1ZpZXcpOwogICAgICAgICBl
d2tfdmlld19lbmFibGVfcmVuZGVyKGV3a1ZpZXcpOwotICAgICAgICBwcml2LT5mbGFncy52aWV3
Q2xlYXJlZCA9IEVJTkFfVFJVRTsKKyAgICAgICAgcHJpdi0+ZmxhZ3Mudmlld0NsZWFyZWQgPSB0
cnVlOwogICAgIH0KIH0KIApAQCAtMzY0NCw3ICszNjQ0LDcgQEAgdm9pZCBld2tfdmlld190cmFu
c2l0aW9uX3RvX2NvbW1pdGVkX2Zvcl9uZXdwYWdlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOwogCiAgICAgZXdr
X3ZpZXdfZGlzYWJsZV9yZW5kZXIoZXdrVmlldyk7Ci0gICAgcHJpdi0+ZmxhZ3Mudmlld0NsZWFy
ZWQgPSBFSU5BX0ZBTFNFOworICAgIHByaXYtPmZsYWdzLnZpZXdDbGVhcmVkID0gZmFsc2U7CiB9
CiAKIApAQCAtMzY1NywxMyArMzY1NywxMyBAQCB2b2lkIGV3a192aWV3X3RyYW5zaXRpb25fdG9f
Y29tbWl0ZWRfZm9yX25ld3BhZ2UoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgKiBAcGFyYW0gZXdr
VmlldyBWaWV3IHRvIGxvYWQKICAqIEBwYXJhbSByZXF1ZXN0IFJlcXVlc3Qgd2hpY2ggY29udGFp
biB1cmwgdG8gbmF2aWdhdGUKICAqLwotRWluYV9Cb29sIGV3a192aWV3X25hdmlnYXRpb25fcG9s
aWN5X2RlY2lzaW9uKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVx
dWVzdCogcmVxdWVzdCkKK2Jvb2wgZXdrX3ZpZXdfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24o
RXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0KiByZXF1ZXN0
KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBF
SU5BX1RSVUUpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEt
PmFwaSwgRUlOQV9UUlVFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcs
IHNtYXJ0RGF0YSwgdHJ1ZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNt
YXJ0RGF0YS0+YXBpLCB0cnVlKTsKIAogICAgIGlmICghc21hcnREYXRhLT5hcGktPm5hdmlnYXRp
b25fcG9saWN5X2RlY2lzaW9uKQotICAgICAgICByZXR1cm4gRUlOQV9UUlVFOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBzbWFydERhdGEtPmFwaS0+bmF2aWdhdGlvbl9wb2xp
Y3lfZGVjaXNpb24oc21hcnREYXRhLCByZXF1ZXN0KTsKIH0KQEAgLTM2NzIsMTAgKzM2NzIsMTAg
QEAgRWluYV9Cb29sIGV3a192aWV3X2pzX29iamVjdF9hZGQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IEV3a19KU19PYmplY3QqIG9iamVjdCwgY28KIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKICAgICBpZiAob2JqZWN0LT52aWV3KSAvLyBvYmplY3QgaGFzIGFscmVhZHkgYmVlbiBh
ZGRlZCB0byBhbm90aGVyIGV3a192aWV3Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgb2JqZWN0LT5uYW1lID0gZWluYV9zdHJpbmdzaGFyZV9h
ZGQob2JqZWN0TmFtZSk7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
bWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogCiAgICAgSlNDOjpKU0xvY2sgbG9jayhK
U0M6OlNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgV2ViQ29yZTo6SlNET01XaW5kb3cqIHdp
bmRvdyA9IHRvSlNET01XaW5kb3cocHJpdi0+bWFpbkZyYW1lLCBXZWJDb3JlOjptYWluVGhyZWFk
Tm9ybWFsV29ybGQoKSk7CkBAIC0zNjg0LDcgKzM2ODQsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdf
anNfb2JqZWN0X2FkZChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0pTX09iamVjdCogb2JqZWN0
LCBjbwogCiAgICAgaWYgKCF3aW5kb3cpIHsKICAgICAgICAgRVJSKCJXYXJuaW5nOiBjb3VsZG4n
dCBnZXQgd2luZG93IG9iamVjdCIpOwotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjdXRlU3Rh
dGUgPSB3aW5kb3ctPmdsb2JhbEV4ZWMoKTsKQEAgLTM2OTUsOSArMzY5NSw5IEBAIEVpbmFfQm9v
bCBld2tfdmlld19qc19vYmplY3RfYWRkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfSlNfT2Jq
ZWN0KiBvYmplY3QsIGNvCiAKICAgICBKU0M6OlB1dFByb3BlcnR5U2xvdCBzbG90OwogICAgIHdp
bmRvdy0+bWV0aG9kVGFibGUoKS0+cHV0KHdpbmRvdywgZXhlY3V0ZVN0YXRlLCBpZCwgcnVudGlt
ZU9iamVjdCwgc2xvdCk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsK
ICNlbHNlCi0gICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlm
IC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogfQogCkBAIC0zNzA3LDcgKzM3MDcsNyBA
QCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcHJvdG9jb2xfaGFuZGxlcl9zZXQoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIGNvbnN0IGNoYXIqKiBwcm90bwogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNtYXJ0RGF0
YSwgcHJpdik7CiAKICAgICBpZiAoIWhhbmRsZXIpCi0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNF
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBwcml2LT5jdXN0b21SZXNvdXJjZUhhbmRs
ZXIuZnVuY3Rpb24gPSBoYW5kbGVyOwogICAgIHByaXYtPmN1c3RvbVJlc291cmNlSGFuZGxlci5j
b250ZXh0ID0gY29udGV4dDsKQEAgLTM3ODYsMTggKzM3ODYsMTggQEAgdm9pZCBld2tfdmlld19u
ZWVkX3RvdWNoX2V2ZW50c19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgbmVlZGVkKQog
ICAgIHByaXYtPmZsYWdzLm5lZWRUb3VjaEV2ZW50cyA9IG5lZWRlZDsKIH0KIAotRWluYV9Cb29s
IGV3a192aWV3X25lZWRfdG91Y2hfZXZlbnRzX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmll
dykKK2Jvb2wgZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVudHNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBld2tWaWV3KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAgICByZXR1cm4gcHJpdi0+ZmxhZ3MubmVl
ZFRvdWNoRXZlbnRzOwogfQogI2VuZGlmCiAKIEVpbmFfQm9vbCBld2tfdmlld19tb2RlX3NldChF
dmFzX09iamVjdCogZXdrVmlldywgRXdrX1ZpZXdfTW9kZSB2aWV3TW9kZSkKIHsKLSAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0g
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxT
RSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZh
bHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBm
YWxzZSk7CiAKICAgICBzd2l0Y2ggKHZpZXdNb2RlKSB7CiAgICAgY2FzZSBFV0tfVklFV19NT0RF
X1dJTkRPV0VEOgpAQCAtMzgxNiwxMCArMzgxNiwxMCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfbW9k
ZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19WaWV3X01vZGUgdmlld01vZGUpCiAgICAg
ICAgIHByaXYtPnBhZ2UtPnNldFZpZXdNb2RlKFdlYkNvcmU6OlBhZ2U6OlZpZXdNb2RlTWluaW1p
emVkKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIEVJTkFf
RkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICByZXR1cm4gRUlOQV9U
UlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBFd2tfVmlld19Nb2RlIGV3a192aWV3X21vZGVf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3ZpZXdfc2luZ2xlLmNwcAppbmRleCAxODY2MThlZjBiMjU5ZWZmMTYyZmJhNzhlY2I0NGQyMDQw
M2Q4ZGUyLi43ZTcxNDY0OGZiOGQ2NTRkMGExZjRmNTkyZWE3ZjVmNWFhYzJjOGY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcApAQCAtNTcsNyArNTcsNyBAQCBz
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X2FkZChFdmFzX09iamVjdCogZXdrU2lu
Z2xlKQogc3RhdGljIEV2YXNfT2JqZWN0KiBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X2JhY2tpbmdf
c3RvcmVfYWRkKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKIHsKICAgICBFdmFzX09i
amVjdCogYnMgPSBldmFzX29iamVjdF9pbWFnZV9hZGQoc21hcnREYXRhLT5iYXNlLmV2YXMpOwot
ICAgIGV2YXNfb2JqZWN0X2ltYWdlX2FscGhhX3NldChicywgRUlOQV9GQUxTRSk7CisgICAgZXZh
c19vYmplY3RfaW1hZ2VfYWxwaGFfc2V0KGJzLCBmYWxzZSk7CiAgICAgZXZhc19vYmplY3RfaW1h
Z2Vfc21vb3RoX3NjYWxlX3NldChicywgc21hcnREYXRhLT56b29tX3dlYWtfc21vb3RoX3NjYWxl
KTsKIAogICAgIHJldHVybiBiczsKQEAgLTM1NCw3ICszNTQsNyBAQCBzdGF0aWMgRWluYV9Cb29s
IF9ld2tfdmlld19zaW5nbGVfc21hcnRfc2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNtYQogCiAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9zZXQoc21hcnREYXRhLT5iYWNr
aW5nX3N0b3JlLCBwaXhlbHMpOwogCi0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFp
bnRzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQpAQCAtMzcyLDcgKzM3
Miw3IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXBhaW50c19w
cm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtCiAgICAgY2Fpcm9fZm9ybWF0X3QgZm9ybWF0
OwogICAgIGNhaXJvX3QqIGNhaXJvOwogICAgIHNpemVfdCBjb3VudDsKLSAgICBFaW5hX0Jvb2wg
cmV0ID0gRUlOQV9UUlVFOworICAgIEVpbmFfQm9vbCByZXQgPSB0cnVlOwogCiAgICAgaWYgKHNt
YXJ0RGF0YS0+YW5pbWF0ZWRfem9vbS56b29tLmN1cnJlbnQgPCAwLjAwMDAxKSB7CiAgICAgICAg
IEV2YXNfT2JqZWN0KiBjbGlwID0gZXZhc19vYmplY3RfY2xpcF9nZXQoc21hcnREYXRhLT5iYWNr
aW5nX3N0b3JlKTsKQEAgLTQwMyw3ICs0MDMsNyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmll
d19zaW5nbGVfc21hcnRfcmVwYWludHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhKiBzbQog
ICAgIGlmIChzdGF0dXMgIT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpIHsKICAgICAgICAgRVJSKCJj
b3VsZCBub3QgY3JlYXRlIHN1cmZhY2UgZnJvbSBkYXRhICVkeCVkOiAlcyIsCiAgICAgICAgICAg
ICBvdywgb2gsIGNhaXJvX3N0YXR1c190b19zdHJpbmcoc3RhdHVzKSk7Ci0gICAgICAgIHJldCA9
IEVJTkFfRkFMU0U7CisgICAgICAgIHJldCA9IGZhbHNlOwogICAgICAgICBnb3RvIGVycm9yX2Nh
aXJvX3N1cmZhY2U7CiAgICAgfQogICAgIGNhaXJvID0gY2Fpcm9fY3JlYXRlKHN1cmZhY2UpOwpA
QCAtNDExLDIxICs0MTEsMjEgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xlX3Nt
YXJ0X3JlcGFpbnRzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSogc20KICAgICBpZiAoc3Rh
dHVzICE9IENBSVJPX1NUQVRVU19TVUNDRVNTKSB7CiAgICAgICAgIEVSUigiY291bGQgbm90IGNy
ZWF0ZSBjYWlybyBmcm9tIHN1cmZhY2UgJWR4JWQ6ICVzIiwKICAgICAgICAgICAgIG93LCBvaCwg
Y2Fpcm9fc3RhdHVzX3RvX3N0cmluZyhzdGF0dXMpKTsKLSAgICAgICAgcmV0ID0gRUlOQV9GQUxT
RTsKKyAgICAgICAgcmV0ID0gZmFsc2U7CiAgICAgICAgIGdvdG8gZXJyb3JfY2Fpcm87CiAgICAg
fQogCiAgICAgY3R4dCA9IGV3a192aWV3X3BhaW50X2NvbnRleHRfbmV3KHNtYXJ0RGF0YS0+X3By
aXYsIGNhaXJvKTsKICAgICBpZiAoIWN0eHQpIHsKICAgICAgICAgRVJSKCJjb3VsZCBub3QgY3Jl
YXRlIHBhaW50IGNvbnRleHQiKTsKLSAgICAgICAgcmV0ID0gRUlOQV9GQUxTRTsKKyAgICAgICAg
cmV0ID0gZmFsc2U7CiAgICAgICAgIGdvdG8gZXJyb3JfcGFpbnRfY29udGV4dDsKICAgICB9CiAK
ICAgICB0aWxlciA9IGVpbmFfdGlsZXJfbmV3KG93LCBvaCk7CiAgICAgaWYgKCF0aWxlcikgewog
ICAgICAgICBFUlIoImNvdWxkIG5vdCBjcmVhdGUgdGlsZXIgJWR4JWQiLCBvdywgb2gpOwotICAg
ICAgICByZXQgPSBFSU5BX0ZBTFNFOworICAgICAgICByZXQgPSBmYWxzZTsKICAgICAgICAgZ290
byBlcnJvcl90aWxlcjsKICAgICB9CiAKQEAgLTQzOSw3ICs0MzksNyBAQCBzdGF0aWMgRWluYV9C
b29sIF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVwYWludHNfcHJvY2VzcyhFd2tfVmlld19TbWFy
dF9EYXRhKiBzbQogICAgIGl0ciA9IGVpbmFfdGlsZXJfaXRlcmF0b3JfbmV3KHRpbGVyKTsKICAg
ICBpZiAoIWl0cikgewogICAgICAgICBFUlIoImNvdWxkIG5vdCBnZXQgaXRlcmF0b3IgZm9yIHRp
bGVyIik7Ci0gICAgICAgIHJldCA9IEVJTkFfRkFMU0U7CisgICAgICAgIHJldCA9IGZhbHNlOwog
ICAgICAgICBnb3RvIGVycm9yX2l0ZXJhdG9yOwogICAgIH0KIApAQCAtNTE0LDcgKzUxNCw3IEBA
IHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NpbmdsZV9zbWFydF96b29tX3dlYWtfc2V0KEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0CiAgICAgaWYgKGNoIDwgc21hcnREYXRhLT52aWV3Lmgp
CiAgICAgICAgIGggPSBjaCAqIHNjYWxlOwogICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShjbGlwLCB3
LCBoKTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0
KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgRWluYV9Cb29sIHNtb290aF9zY2FsZSkK
QEAgLTUzMCw3ICs1MzAsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X2Jn
X2NvbG9yX3NldChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsCiBFaW5hX0Jvb2wgZXdr
X3ZpZXdfc2luZ2xlX3NtYXJ0X3NldChFd2tfVmlld19TbWFydF9DbGFzcyogYXBpKQogewogICAg
IGlmICghZXdrX3ZpZXdfYmFzZV9zbWFydF9zZXQoYXBpKSkKLSAgICAgICAgcmV0dXJuIEVJTkFf
RkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChFSU5BX1VOTElLRUxZKCFf
cGFyZW50X3NjLnNjLmFkZCkpCiAgICAgICAgIGV3a192aWV3X2Jhc2Vfc21hcnRfc2V0KCZfcGFy
ZW50X3NjKTsKQEAgLTU0NSw3ICs1NDUsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2luZ2xlX3Nt
YXJ0X3NldChFd2tfVmlld19TbWFydF9DbGFzcyogYXBpKQogICAgIGFwaS0+em9vbV93ZWFrX3Nt
b290aF9zY2FsZV9zZXQgPSBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3pvb21fd2Vha19zbW9vdGhf
c2NhbGVfc2V0OwogICAgIGFwaS0+YmdfY29sb3Jfc2V0ID0gX2V3a192aWV3X3NpbmdsZV9zbWFy
dF9iZ19jb2xvcl9zZXQ7CiAKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVl
OwogfQogCiBzdGF0aWMgaW5saW5lIEV2YXNfU21hcnQqIF9ld2tfdmlld19zaW5nbGVfc21hcnRf
Y2xhc3NfbmV3KHZvaWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Zp
ZXdfdGlsZWQuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcApp
bmRleCAyYTA0NWEwN2RhMWMyZjE4NzgxNGJhMTY4NmU2NmUxZTA1NDI4OTYxLi5lZTMyNzdmZTg4
ODQ4NzliMTY1YWU5YTRmMjgxYTY3NmI1OTk4NTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXdfdGlsZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfdmlld190aWxlZC5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3
X3RpbGVkX3NtYXJ0X2FkZChFdmFzX09iamVjdCogZXdrVGlsZSkKICAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19hZGQoCiAgICAgICAgIHNkLT5tYWluX2ZyYW1lLCAiY29udGVudHMsc2l6
ZSxjaGFuZ2VkIiwKICAgICAgICAgX2V3a192aWV3X3RpbGVkX2NvbnRlbnRzX3NpemVfY2hhbmdl
ZF9jYiwgc2QpOwotICAgIGV3a19mcmFtZV9wYWludF9mdWxsX3NldChzZC0+bWFpbl9mcmFtZSwg
RUlOQV9UUlVFKTsKKyAgICBld2tfZnJhbWVfcGFpbnRfZnVsbF9zZXQoc2QtPm1haW5fZnJhbWUs
IHRydWUpOwogfQogCiBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9zbWFydF9zY3Jv
bGxzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQpAQCAtMTM0LDcgKzEz
NCw3IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3Njcm9sbHNfcHJv
Y2VzcyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFyCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBy
ZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgRWluYV9Cb29s
IF9ld2tfdmlld190aWxlZF9zbWFydF9yZXBhaW50c19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNtYXJ0RGF0YSkKQEAgLTE1NywxMyArMTU3LDEzIEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3
a192aWV3X3RpbGVkX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSog
c21hCiAgICAgfQogICAgIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0ZXNfcHJvY2Vzcyhz
bWFydERhdGEtPmJhY2tpbmdfc3RvcmUpOwogCi0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRf
Y29udGVudHNfcmVzaXplKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KQogewogICAgIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2NvbnRlbnRzX3Jl
c2l6ZShzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsIHdpZHRoLCBoZWlnaHQpOwotICAgIHJldHVy
biBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBFaW5hX0Jvb2wgX2V3
a192aWV3X3RpbGVkX3NtYXJ0X3pvb21fc2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0
YSwgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjZW50ZXJYLCBFdmFzX0Nvb3JkIGNlbnRlclkpCkBA
IC0xNzQsNyArMTc0LDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRf
em9vbV9zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmem9vbSwgY2VudGVyWCwgY2VudGVyWSwgJngsICZ5
KTsKICAgICBpZiAoIXIpCiAgICAgICAgIHJldHVybiByOwotICAgIGV3a190aWxlZF9iYWNraW5n
X3N0b3JlX2Rpc2FibGVkX3VwZGF0ZV9zZXQoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCBFSU5B
X1RSVUUpOworICAgIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2Rpc2FibGVkX3VwZGF0ZV9zZXQo
c21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCB0cnVlKTsKICAgICByID0gX3BhcmVudF9zYy56b29t
X3NldChzbWFydERhdGEsIHpvb20sIGNlbnRlclgsIGNlbnRlclkpOwogICAgIGV3a19mcmFtZV9z
Y3JvbGxfc2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgLXgsIC15KTsKICAgICBld2tfZnJhbWVf
c2Nyb2xsX3NpemVfZ2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgJncsICZoKTsKQEAgLTE4Miw3
ICsxODIsNyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9zbWFydF96b29tX3Nl
dChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsCiAgICAgZXdrX3ZpZXdfc2Nyb2xsc19w
cm9jZXNzKHNtYXJ0RGF0YSk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsY3VsYXRlKHNtYXJ0
RGF0YS0+YmFja2luZ19zdG9yZSk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsY3VsYXRlKHNt
YXJ0RGF0YS0+c2VsZik7Ci0gICAgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZGlzYWJsZWRfdXBk
YXRlX3NldChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsIEVJTkFfRkFMU0UpOworICAgIGV3a190
aWxlZF9iYWNraW5nX3N0b3JlX2Rpc2FibGVkX3VwZGF0ZV9zZXQoc21hcnREYXRhLT5iYWNraW5n
X3N0b3JlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHI7CiB9CiAKQEAgLTIzMiw3ICsyMzIsNyBAQCBz
dGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9zbWFydF9lbmFibGVfcmVuZGVyKEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RAogRWluYV9Cb29sIGV3a192aWV3X3RpbGVkX3NtYXJ0X3Nl
dChFd2tfVmlld19TbWFydF9DbGFzcyogYXBpKQogewogICAgIGlmICghZXdrX3ZpZXdfYmFzZV9z
bWFydF9zZXQoYXBpKSkKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGlmIChFSU5BX1VOTElLRUxZKCFfcGFyZW50X3NjLnNjLmFkZCkpCiAg
ICAgICAgIGV3a192aWV3X2Jhc2Vfc21hcnRfc2V0KCZfcGFyZW50X3NjKTsKQEAgLTI1Miw3ICsy
NTIsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfdGlsZWRfc21hcnRfc2V0KEV3a19WaWV3X1NtYXJ0
X0NsYXNzKiBhcGkpCiAgICAgYXBpLT5wcmVfcmVuZGVyX2NhbmNlbCA9IF9ld2tfdmlld190aWxl
ZF9zbWFydF9wcmVfcmVuZGVyX2NhbmNlbDsKICAgICBhcGktPmRpc2FibGVfcmVuZGVyID0gX2V3
a192aWV3X3RpbGVkX3NtYXJ0X2Rpc2FibGVfcmVuZGVyOwogICAgIGFwaS0+ZW5hYmxlX3JlbmRl
ciA9IF9ld2tfdmlld190aWxlZF9zbWFydF9lbmFibGVfcmVuZGVyOwotICAgIHJldHVybiBFSU5B
X1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBpbmxpbmUgRXZhc19TbWFydCog
X2V3a192aWV3X3RpbGVkX3NtYXJ0X2NsYXNzX25ldyh2b2lkKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113429</attachid>
            <date>2011-11-02 21:51:39 -0700</date>
            <delta_ts>2011-11-15 02:38:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71433-20111103135136.patch</filename>
            <type>text/plain</type>
            <size>177760</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkxMzUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBjMmMxNDZiZWNh
MTFjNDdhNjU1YTc5NjgzMjc0ZTc3OWQ5ZjkzMmJjLi4wNGFhNzJmNzJlYmZiNGI1MWUwODU1YzBh
MmQ5NTE0NWExMWJlZGExIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEt
MTEtMDIgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAg
ICBbRUZMXSBVc2Ugc3RhbmRhcmQgYm9vbGVhbmQgZGF0YSB0eXBlLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE0MzMKKworICAgICAgICBUaGlzIGlz
IGEgZm91cnRoIHN0ZXAgaW4gb3JkZXIgdG8gYmUgbW9yZSBjb21wbGlhbnQgd2l0aCBXZWJLaXQg
Y29kaW5nIHN0eWxlLgorICAgICAgICBVc2Ugc3RhbmRhcmQgYm9vbGVhbiBkYXRhIHR5cGUgaW5z
dGVhZCBvZiBlZmwgYm9vbGVhbiBkYXRhIHR5cGUuIEl0IG1ha2VzIGVmbCBwb3J0CisgICAgICAg
IGlzIG1vcmUgY2xvc2UgdG8gd2Via2l0IGNvZGluZyBzdHlsZS4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRF
ZmwuY3BwOgorICAgICAgICAqIGV3ay9ld2tfY29udGV4dG1lbnUuY3BwOgorICAgICAgICAqIGV3
ay9ld2tfY29va2llcy5jcHA6CisgICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6CisgICAgICAg
ICogZXdrL2V3a19oaXN0b3J5LmNwcDoKKyAgICAgICAgKiBld2svZXdrX2pzLmNwcDoKKyAgICAg
ICAgKiBld2svZXdrX21haW4uY3BwOgorICAgICAgICAqIGV3ay9ld2tfbmV0d29yay5jcHA6Cisg
ICAgICAgICogZXdrL2V3a19wcml2YXRlLmg6CisgICAgICAgICogZXdrL2V3a19wcm90b2NvbF9o
YW5kbGVyLmNwcDoKKyAgICAgICAgKiBld2svZXdrX3Byb3RvY29sX2hhbmRsZXJfc291cC5jcHA6
CisgICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6CisgICAgICAgICogZXdrL2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlLmNwcDoKKyAgICAgICAgKiBld2svZXdrX3RpbGVkX21hdHJpeC5jcHA6
CisgICAgICAgICogZXdrL2V3a190aWxlZF9tb2RlbC5jcHA6CisgICAgICAgICogZXdrL2V3a191
dGlsLmNwcDoKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAqIGV3ay9ld2tf
dmlld19zaW5nbGUuY3BwOgorICAgICAgICAqIGV3ay9ld2tfdmlld190aWxlZC5jcHA6CisKIDIw
MTEtMTEtMDIgIFRvbSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgWFNT
QXVkaXRvciBpcyBzaWxlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCmluZGV4IDU0OTliNDVmNDk5NDBhZjdlOWI3MmU5MDI2
MjA1YjViM2I5MjU3MzQuLjYwOGI4MDhjMDc2YzFkYzRkY2YzYzNhNWMxNDM4OTA5NWQ4M2Y2NDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50RWZsLmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjpzZXRU
b29sYmFyc1Zpc2libGUoYm9vbCB2aXNpYmxlKQogCiBib29sIENocm9tZUNsaWVudEVmbDo6dG9v
bGJhcnNWaXNpYmxlKCkKIHsKLSAgICBFaW5hX0Jvb2wgdmlzaWJsZTsKKyAgICBib29sIHZpc2li
bGU7CiAKICAgICBld2tfdmlld190b29sYmFyc192aXNpYmxlX2dldChtX3ZpZXcsICZ2aXNpYmxl
KTsKICAgICByZXR1cm4gdmlzaWJsZTsKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIENocm9tZUNs
aWVudEVmbDo6c2V0U3RhdHVzYmFyVmlzaWJsZShib29sIHZpc2libGUpCiAKIGJvb2wgQ2hyb21l
Q2xpZW50RWZsOjpzdGF0dXNiYXJWaXNpYmxlKCkKIHsKLSAgICBFaW5hX0Jvb2wgdmlzaWJsZTsK
KyAgICBib29sIHZpc2libGU7CiAKICAgICBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJsZV9nZXQo
bV92aWV3LCAmdmlzaWJsZSk7CiAgICAgcmV0dXJuIHZpc2libGU7CkBAIC0xOTcsNyArMTk3LDcg
QEAgdm9pZCBDaHJvbWVDbGllbnRFZmw6OnNldFNjcm9sbGJhcnNWaXNpYmxlKGJvb2wgdmlzaWJs
ZSkKIAogYm9vbCBDaHJvbWVDbGllbnRFZmw6OnNjcm9sbGJhcnNWaXNpYmxlKCkKIHsKLSAgICBF
aW5hX0Jvb2wgdmlzaWJsZTsKKyAgICBib29sIHZpc2libGU7CiAKICAgICBld2tfdmlld19zY3Jv
bGxiYXJzX3Zpc2libGVfZ2V0KG1fdmlldywgJnZpc2libGUpOwogICAgIHJldHVybiB2aXNpYmxl
OwpAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjpzZXRNZW51YmFyVmlz
aWJsZShib29sIHZpc2libGUpCiAKIGJvb2wgQ2hyb21lQ2xpZW50RWZsOjptZW51YmFyVmlzaWJs
ZSgpCiB7Ci0gICAgRWluYV9Cb29sIHZpc2libGU7CisgICAgYm9vbCB2aXNpYmxlOwogCiAgICAg
ZXdrX3ZpZXdfbWVudWJhcl92aXNpYmxlX2dldChtX3ZpZXcsICZ2aXNpYmxlKTsKICAgICByZXR1
cm4gdmlzaWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAppbmRleCAxNGM4NjNhZDE5NGExYTZjM2VkZjU1
MzNmYzlmNjI4ODZmMTQ1ZjhiLi40NGZiNjMwOTAyN2JlOWFmOGJiOGRkZDE3ZjYxMjhjMWVjOTIx
NjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBGcmFtZUxv
YWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZy
YW1lUG9saWN5RnUKICAgICAvLyBGSVhNRTogZG8gcHJvcGVyIGNoZWNrIGFuZCBvbmx5IHJlc2V0
IGZvcm1zIHdoZW4gb24gUG9saWN5SWdub3JlCiAgICAgY2hhciogdXJsID0gc3RyZHVwKHJlc291
cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBFd2tfRnJhbWVf
UmVzb3VyY2VfUmVxdWVzdCByZXF1ZXN0ID0geyB1cmwsIDAgfTsKLSAgICBFaW5hX0Jvb2wgcmV0
ID0gZXdrX3ZpZXdfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24obV92aWV3LCAmcmVxdWVzdCk7
CisgICAgYm9vbCByZXQgPSBld2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbihtX3Zp
ZXcsICZyZXF1ZXN0KTsKICAgICBmcmVlKHVybCk7CiAKICAgICBQb2xpY3lBY3Rpb24gcG9saWN5
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb250ZXh0bWVudS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2NvbnRleHRtZW51LmNwcAppbmRleCAxZTRiNmZi
N2YzNmUwYjI4MWJkNzYyZWFkN2I2ZjcxOWFmY2Q3ZmQwLi5mMzNmZjExMTQyN2ZmYjE0Mzg5ZDIx
ZjVkN2Y0MzE5OTg4YjVmNWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2NvbnRleHRtZW51LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2NvbnRleHRt
ZW51LmNwcApAQCAtODMsMTIgKzgzLDEyIEBAIHZvaWQgZXdrX2NvbnRleHRfbWVudV91bnJlZihF
d2tfQ29udGV4dF9NZW51KiBtZW51KQogRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfZGVzdHJv
eShFd2tfQ29udGV4dF9NZW51KiBtZW51KQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQot
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChtZW51LCBFSU5BX0ZBTFNFKTsKLSAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobWVudS0+Y29udHJvbGxlciwgRUlOQV9G
QUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG1lbnUsIGZhbHNlKTsK
KyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobWVudS0+Y29udHJvbGxlciwgZmFs
c2UpOwogICAgIG1lbnUtPmNvbnRyb2xsZXItPmNsZWFyQ29udGV4dE1lbnUoKTsKLSAgICByZXR1
cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogI2Vsc2UKLSAgICByZXR1cm4gRUlOQV9G
QUxTRTsKKyAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIH0KIApAQCAtMTIwLDE3ICsxMjAsMTcg
QEAgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3KEV3a19D
b250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUKIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0
ZW1fc2VsZWN0KEV3a19Db250ZXh0X01lbnUqIG1lbnUsIEV3a19Db250ZXh0X01lbnVfSXRlbSog
aXRlbSkKIHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwobWVudSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKGl0ZW0sIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChtZW51LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKGl0ZW0sIGZhbHNlKTsKICAgICBXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24g
PSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbj4oaXRlbS0+YWN0aW9uKTsK
ICAgICBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UeXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpDb250ZXh0TWVudUl0ZW1UeXBlPihpdGVtLT50eXBlKTsKIAogICAgIC8vIERvbid0IGNh
cmUgYWJvdXQgdGl0bGUgYW5kIHN1Ym1lbnUgYXMgdGhleSdyZSBub3QgdXNlZCBhZnRlciB0aGlz
IHBvaW50LgogICAgIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSBjb3JlKHR5cGUsIGFjdGlvbiwg
V1RGOjpTdHJpbmcoKSk7CiAgICAgbWVudS0+Y29udHJvbGxlci0+Y29udGV4dE1lbnVJdGVtU2Vs
ZWN0ZWQoJmNvcmUpOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiAj
ZWxzZQotICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgog
fQogCkBAIC0xNTAsOSArMTUwLDkgQEAgRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgZXdrX2Nv
bnRleHRfbWVudV9pdGVtX3R5cGVfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnUKIAogRWluYV9C
b29sIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0q
IGl0ZW0sIEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUpCiB7Ci0gICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7CiAgICAgaXRlbS0+dHlwZSA9IHR5cGU7
Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRXdrX0NvbnRl
eHRfTWVudV9BY3Rpb24gZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlvbl9nZXQoY29uc3QgRXdr
X0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQpAQCAtMTYzLDkgKzE2Myw5IEBAIEV3a19Db250ZXh0
X01lbnVfQWN0aW9uIGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fZ2V0KGNvbnN0IEV3a19D
b250ZXh0X01lbnVfCiAKIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX3Nl
dChFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0sIEV3a19Db250ZXh0X01lbnVfQWN0aW9uIGFj
dGlvbikKIHsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgRUlOQV9G
QUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIGZhbHNlKTsK
ICAgICBpdGVtLT5hY3Rpb24gPSBhY3Rpb247Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogY29uc3QgY2hhciogZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxl
X2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0pCkBAIC0xODMsMjggKzE4Mywy
OCBAQCBjb25zdCBjaGFyKiBld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfc2V0KEV3a19Db250
ZXh0X01lbnVfSXRlbSogaXRlbSwgY29uc3QgYwogCiBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVu
dV9pdGVtX2NoZWNrZWRfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKIHsK
LSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgRUlOQV9GQUxTRSk7Cisg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIGZhbHNlKTsKICAgICByZXR1
cm4gaXRlbS0+Y2hlY2tlZDsKIH0KIAogRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9j
aGVja2VkX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0sIEVpbmFfQm9vbCBjaGVja2Vk
KQogewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBFSU5BX0ZBTFNF
KTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOwogICAg
IGl0ZW0tPmNoZWNrZWQgPSBjaGVja2VkOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9n
ZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQogewotICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOwogICAgIHJldHVybiBpdGVtLT5lbmFibGVk
OwogfQogCiBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRfc2V0KEV3a19D
b250ZXh0X01lbnVfSXRlbSogaXRlbSwgRWluYV9Cb29sIGVuYWJsZWQpCiB7Ci0gICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7CiAgICAgaXRlbS0+ZW5hYmxlZCA9
IGVuYWJsZWQ7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
CkBAIC0yNDksMTkgKzI0OSwxOSBAQCBFd2tfQ29udGV4dF9NZW51KiBld2tfY29udGV4dF9tZW51
X25ldyhFdmFzX09iamVjdCogdmlldywgV2ViQ29yZTo6Q29udGV4dE1lbnVDbwogICogRnJlZXMg
dGhlIGNvbnRleHQgbWVudS4KICAqCiAgKiBAcGFyYW0gbWVudSB0aGUgdmlldyBvYmplY3QKLSAq
IEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFp
bHVyZQorICogQHJldHVybiBAYyB0cnVlIG9uIHN1Y2Nlc3MsIG9yIEBjIGZhbHNlIG9uIGZhaWx1
cmUKICAqCiAgKiBAbm90ZSBlbWl0cyBhIHNpZ25hbCAiY29udGV4dG1lbnUsZnJlZSIKICAqCiAg
KiBAc2VlIGV3a19jb250ZXh0X21lbnVfdW5yZWYKICAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV9k
ZXN0cm95CiAgKi8KLUVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2ZyZWUoRXdrX0NvbnRleHRf
TWVudSogbWVudSkKK2Jvb2wgZXdrX2NvbnRleHRfbWVudV9mcmVlKEV3a19Db250ZXh0X01lbnUq
IG1lbnUpCiB7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG1lbnUsIEVJTkFf
RkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChtZW51LCBmYWxzZSk7
CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtZW51LT52aWV3LCAiY29udGV4
dG1lbnUsZnJlZSIsIG1lbnUpOwogICAgIGV3a19jb250ZXh0X21lbnVfdW5yZWYobWVudSk7Ci0g
ICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogLyoqCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Nvb2tpZXMuY3BwIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19jb29raWVzLmNwcAppbmRleCBmZjZmOTc0NTQ4OTM3NTU4MGUzZWVlOGEx
ZWQ5ZTM1Y2YyMWZjZjE2Li5lZWQ1ZTk3NjM0M2IwNzU3MzRlZGIzMGVjZWQyYzhlMzg0MmMzY2I2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Nvb2tpZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29va2llcy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAg
RWluYV9Cb29sIGV3a19jb29raWVzX2ZpbGVfc2V0KGNvbnN0IGNoYXIqIGZpbGVuYW1lKQogICAg
ICAgICBjb29raWVKYXIgPSBzb3VwX2Nvb2tpZV9qYXJfbmV3KCk7CiAKICAgICBpZiAoIWNvb2tp
ZUphcikKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIHNvdXBfY29va2llX2phcl9zZXRfYWNjZXB0X3BvbGljeShjb29raWVKYXIsIFNPVVBf
Q09PS0lFX0pBUl9BQ0NFUFRfTk9fVEhJUkRfUEFSVFkpOwogCkBAIC01OCw5ICs1OCw5IEBAIEVp
bmFfQm9vbCBld2tfY29va2llc19maWxlX3NldChjb25zdCBjaGFyKiBmaWxlbmFtZSkKICAgICBX
ZWJDb3JlOjpzZXREZWZhdWx0Q29va2llSmFyKGNvb2tpZUphcik7CiAgICAgc291cF9zZXNzaW9u
X2FkZF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfU0VTU0lPTl9GRUFUVVJFKGNvb2tpZUphcikpOwog
Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCi0gICAgcmV0
dXJuIEVJTkFfRkFMU0U7CisgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19mcmFtZS5jcHAKaW5kZXggNjdkZTNiZjZkNjUyMjcxMDUxYmY3MGJlZTViYmQ4
ZjUwOGI2MTJjZS4uNTMzYTJiMDgwNTBjMTM2OTc5NDZmYTBhZTMxNDU3M2EwN2QwYTM0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKQEAgLTE0MiwxOCArMTQyLDE4IEBAIHN0YXRp
YyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCogX2V3a19mcmFtZV9sb2FkZXJfZWZsX2dl
dChjb25zdCBXZWJDb3JlOjpGCiAKIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a19mcmFtZV9jaGlsZHJl
bl9pdGVyYXRvcl9uZXh0KEVpbmFfSXRlcmF0b3JfRXdrX0ZyYW1lKiBpdGVyYXRvciwgRXZhc19P
YmplY3QqKiBkYXRhKQogewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGl0ZXJhdG9y
LT5vYmplY3QsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIEVJTkFfRkFMU0UpOworICAgIEVXS19GUkFN
RV9TRF9HRVRfT1JfUkVUVVJOKGl0ZXJhdG9yLT5vYmplY3QsIHNtYXJ0RGF0YSwgZmFsc2UpOwor
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxz
ZSk7CiAKICAgICBXZWJDb3JlOjpGcmFtZVRyZWUqIHRyZWUgPSBzbWFydERhdGEtPmZyYW1lLT50
cmVlKCk7IC8vIGNoZWNrIGlmIGl0J3Mgc3RpbGwgdmFsaWQKLSAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwodHJlZSwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHRyZWUsIGZhbHNlKTsKIAogICAgIGlmIChpdGVyYXRvci0+Y3VycmVudElu
ZGV4IDwgdHJlZS0+Y2hpbGRDb3VudCgpKSB7CiAgICAgICAgICpkYXRhID0gRVdLUHJpdmF0ZTo6
a2l0RnJhbWUodHJlZS0+Y2hpbGQoaXRlcmF0b3ItPmN1cnJlbnRJbmRleCsrKSk7Ci0gICAgICAg
IHJldHVybiBFSU5BX1RSVUU7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHJl
dHVybiBFSU5BX0ZBTFNFOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogc3RhdGljIEV2YXNfT2Jq
ZWN0KiBfZXdrX2ZyYW1lX2NoaWxkcmVuX2l0ZXJhdG9yX2dldF9jb250YWluZXIoRWluYV9JdGVy
YXRvcl9Fd2tfRnJhbWUqIGl0ZXJhdG9yKQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyB2b2lk
IF9ld2tfZnJhbWVfc21hcnRfYWRkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKICAgICBzbWFydERh
dGEtPnNlbGYgPSBld2tGcmFtZTsKIAogICAgIF9wYXJlbnRfc2MuYWRkKGV3a0ZyYW1lKTsKLSAg
ICBldmFzX29iamVjdF9zdGF0aWNfY2xpcF9zZXQoc21hcnREYXRhLT5iYXNlLmNsaXBwZXIsIEVJ
TkFfRkFMU0UpOworICAgIGV2YXNfb2JqZWN0X3N0YXRpY19jbGlwX3NldChzbWFydERhdGEtPmJh
c2UuY2xpcHBlciwgZmFsc2UpOwogICAgIGV2YXNfb2JqZWN0X21vdmUoc21hcnREYXRhLT5iYXNl
LmNsaXBwZXIsIDAsIDApOwogICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShzbWFydERhdGEtPmJhc2Uu
Y2xpcHBlciwgMCwgMCk7CiAKQEAgLTMxMCwxMiArMzEwLDEyIEBAIEV2YXNfT2JqZWN0KiBld2tf
ZnJhbWVfY2hpbGRfZmluZChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIG5hbWUp
CiAKIEVpbmFfQm9vbCBld2tfZnJhbWVfdXJpX3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNv
bnN0IGNoYXIqIHVyaSkKIHsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFt
ZSwgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVS
Tihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgV2ViQ29yZTo6S1VSTCBrdXJsKFdl
YkNvcmU6OktVUkwoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KHVyaSkpOwogICAgIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXEoa3VybCk7CiAgICAgV2ViQ29yZTo6RnJhbWVMb2FkZXIqIGxv
YWRlciA9IHNtYXJ0RGF0YS0+ZnJhbWUtPmxvYWRlcigpOwogICAgIGxvYWRlci0+bG9hZChyZXEs
IGZhbHNlKTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBj
b25zdCBjaGFyKiBld2tfZnJhbWVfdXJpX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUp
CkBAIC0zNTUsMTQgKzM1NSwxNCBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXZhc19Db29yZCogdwogICAgICAgICAq
d2lkdGggPSAwOwogICAgIGlmIChoZWlnaHQpCiAgICAgICAgICpoZWlnaHQgPSAwOwotICAgIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIEVJTkFfRkFMU0Up
OworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZh
bHNlKTsKICAgICBpZiAoIXNtYXJ0RGF0YS0+ZnJhbWUgfHwgIXNtYXJ0RGF0YS0+ZnJhbWUtPnZp
ZXcoKSkKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAod2lkdGgpCiAgICAgICAgICp3aWR0aCA9IHNtYXJ0RGF0YS0+ZnJhbWUtPnZpZXco
KS0+Y29udGVudHNXaWR0aCgpOwogICAgIGlmIChoZWlnaHQpCiAgICAgICAgICpoZWlnaHQgPSBz
bWFydERhdGEtPmZyYW1lLT52aWV3KCktPmNvbnRlbnRzSGVpZ2h0KCk7Ci0gICAgcmV0dXJuIEVJ
TkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX2Zy
YW1lX2NvbnRlbnRzX3NldF9pbnRlcm5hbChFd2tfRnJhbWVfU21hcnRfRGF0YSogc21hcnREYXRh
LCBjb25zdCBjaGFyKiBjb250ZW50cywgc2l6ZV90IGNvbnRlbnRzU2l6ZSwgY29uc3QgY2hhciog
bWltZVR5cGUsIGNvbnN0IGNoYXIqIGVuY29kaW5nLCBjb25zdCBjaGFyKiBiYXNlVXJpLCBjb25z
dCBjaGFyKiB1bnJlYWNoYWJsZVVyaSkKQEAgLTM5MywyNCArMzkzLDI0IEBAIHN0YXRpYyBFaW5h
X0Jvb2wgX2V3a19mcmFtZV9jb250ZW50c19zZXRfaW50ZXJuYWwoRXdrX0ZyYW1lX1NtYXJ0X0Rh
dGEqIHNtYXJ0RGF0CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoYmFzZUtV
UkwpOwogCiAgICAgc21hcnREYXRhLT5mcmFtZS0+bG9hZGVyKCktPmxvYWQocmVxdWVzdCwgc3Vi
c3RpdHV0ZURhdGEsIGZhbHNlKTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0
cnVlOwogfQogCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2NvbnRlbnRzX3NldChFdmFzX09iamVjdCog
ZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGNvbnRlbnRzLCBzaXplX3QgY29udGVudHNTaXplLCBjb25z
dCBjaGFyKiBtaW1lVHlwZSwgY29uc3QgY2hhciogZW5jb2RpbmcsIGNvbnN0IGNoYXIqIGJhc2VV
cmkpCiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0
YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fRkFMU0VfUkVUVVJOX1ZBTChzbWFy
dERhdGEtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoY29udGVudHMsIEVJTkFfRkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVU
VVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9GQUxT
RV9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoY29udGVudHMsIGZhbHNlKTsKICAgICByZXR1cm4gX2V3a19mcmFt
ZV9jb250ZW50c19zZXRfaW50ZXJuYWwKICAgICAgICAgICAgICAgIChzbWFydERhdGEsIGNvbnRl
bnRzLCBjb250ZW50c1NpemUsIG1pbWVUeXBlLCBlbmNvZGluZywgYmFzZVVyaSwgMCk7CiB9CiAK
IEVpbmFfQm9vbCBld2tfZnJhbWVfY29udGVudHNfYWx0ZXJuYXRlX3NldChFdmFzX09iamVjdCog
ZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGNvbnRlbnRzLCBzaXplX3QgY29udGVudHNTaXplLCBjb25z
dCBjaGFyKiBtaW1lVHlwZSwgY29uc3QgY2hhciogZW5jb2RpbmcsIGNvbnN0IGNoYXIqIGJhc2VV
cmksIGNvbnN0IGNoYXIqIHVucmVhY2hhYmxlVXJpKQogewotICAgIEVXS19GUkFNRV9TRF9HRVRf
T1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FG
RVRZX09OX0ZBTFNFX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgRUlOQV9GQUxTRSk7Ci0g
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvbnRlbnRzLCBFSU5BX0ZBTFNFKTsK
LSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodW5yZWFjaGFibGVVcmksIEVJTkFf
RkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERh
dGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9GQUxTRV9SRVRVUk5fVkFMKHNtYXJ0RGF0
YS0+ZnJhbWUsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY29u
dGVudHMsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodW5yZWFj
aGFibGVVcmksIGZhbHNlKTsKICAgICByZXR1cm4gX2V3a19mcmFtZV9jb250ZW50c19zZXRfaW50
ZXJuYWwKICAgICAgICAgICAgICAgIChzbWFydERhdGEsIGNvbnRlbnRzLCBjb250ZW50c1NpemUs
IG1pbWVUeXBlLCBlbmNvZGluZywgYmFzZVVyaSwKICAgICAgICAgICAgICAgIHVucmVhY2hhYmxl
VXJpKTsKQEAgLTQxOCwzMCArNDE4LDMwIEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfY29udGVudHNf
YWx0ZXJuYXRlX3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGNvCiAKIEVp
bmFfQm9vbCBld2tfZnJhbWVfc2NyaXB0X2V4ZWN1dGUoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBj
b25zdCBjaGFyKiBzY3JpcHQpCiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdr
RnJhbWUsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fRkFMU0Vf
UkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoc2NyaXB0LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVf
U0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRUlOQV9T
QUZFVFlfT05fRkFMU0VfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNjcmlwdCwgZmFsc2UpOwogICAgIHNtYXJ0
RGF0YS0+ZnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KFdURjo6U3RyaW5nOjpmcm9tVVRG
OChzY3JpcHQpLCB0cnVlKTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVl
OwogfQogCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2VkaXRhYmxlX2dldChjb25zdCBFdmFzX09iamVj
dCogZXdrRnJhbWUpCiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUs
IHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIEVJTkFfRkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRf
T1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOwogICAgIHJldHVybiBz
bWFydERhdGEtPmVkaXRhYmxlOwogfQogCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2VkaXRhYmxlX3Nl
dChFdmFzX09iamVjdCogZXdrRnJhbWUsIEVpbmFfQm9vbCBlZGl0YWJsZSkKIHsKLSAgICBFV0tf
RlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsK
LSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgRUlO
QV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0
RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERh
dGEtPmZyYW1lLCBmYWxzZSk7CiAgICAgZWRpdGFibGUgPSAhIWVkaXRhYmxlOwogICAgIGlmIChz
bWFydERhdGEtPmVkaXRhYmxlID09IGVkaXRhYmxlKQotICAgICAgICByZXR1cm4gRUlOQV9UUlVF
OworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoZWRpdGFibGUpCiAgICAgICAgIHNtYXJ0
RGF0YS0+ZnJhbWUtPmVkaXRvcigpLT5hcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKTsK
LSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBjaGFyKiBld2tf
ZnJhbWVfc2VsZWN0aW9uX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpCkBAIC00NTYs
OSArNDU2LDkgQEAgY2hhciogZXdrX2ZyYW1lX3NlbGVjdGlvbl9nZXQoY29uc3QgRXZhc19PYmpl
Y3QqIGV3a0ZyYW1lKQogCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRfc2VhcmNoKGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogdGV4dCwgRWluYV9Cb29sIGNhc2VTZW5z
aXRpdmUsIEVpbmFfQm9vbCBmb3J3YXJkLCBFaW5hX0Jvb2wgd3JhcCkKIHsKLSAgICBFV0tfRlJB
TUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgRUlOQV9G
QUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHRleHQsIEVJTkFfRkFM
U0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEs
IGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5m
cmFtZSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh0ZXh0LCBm
YWxzZSk7CiAKICAgICByZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCktPmZpbmRTdHJp
bmcoV1RGOjpTdHJpbmc6OmZyb21VVEY4KHRleHQpLCBmb3J3YXJkLCBjYXNlU2Vuc2l0aXZlLCB3
cmFwLCB0cnVlKTsKIH0KQEAgLTQ2Niw3ICs0NjYsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3Rl
eHRfc2VhcmNoKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogdGV4dCwg
RQogdW5zaWduZWQgaW50IGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbWFyayhFdmFzX09iamVjdCog
ZXdrRnJhbWUsIGNvbnN0IGNoYXIqIHN0cmluZywgRWluYV9Cb29sIGNhc2VTZW5zaXRpdmUsIEVp
bmFfQm9vbCBoaWdobGlnaHQsIHVuc2lnbmVkIGludCBsaW1pdCkKIHsKICAgICBFV0tfRlJBTUVf
U0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCAwKTsKLSAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgRUlOQV9GQUxTRSk7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIDApOwogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzdHJpbmcsIDApOwogCiAgICAgc21hcnRE
YXRhLT5mcmFtZS0+ZWRpdG9yKCktPnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQo
aGlnaGxpZ2h0KTsKQEAgLTQ3NSwyNSArNDc1LDI1IEBAIHVuc2lnbmVkIGludCBld2tfZnJhbWVf
dGV4dF9tYXRjaGVzX21hcmsoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBzdHJp
CiAKIEVpbmFfQm9vbCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX3VubWFya19hbGwoRXZhc19PYmpl
Y3QqIGV3a0ZyYW1lKQogewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1l
LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChzbWFydERhdGEtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VU
X09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsKIAogICAgIHNtYXJ0
RGF0YS0+ZnJhbWUtPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+cmVtb3ZlTWFya2VycyhXZWJDb3Jl
OjpEb2N1bWVudE1hcmtlcjo6VGV4dE1hdGNoKTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAg
IHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19oaWdo
bGlnaHRfc2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRWluYV9Cb29sIGhpZ2hsaWdodCkKIHsK
LSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBFSU5B
X0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5m
cmFtZSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJh
bWUsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7CiAgICAgc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9y
KCktPnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoaGlnaGxpZ2h0KTsKLSAgICBy
ZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wgZXdrX2Zy
YW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFt
ZSkKIHsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRh
LCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnRE
YXRhLT5mcmFtZSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4o
ZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7CiAgICAgcmV0dXJuIHNtYXJ0RGF0YS0+
ZnJhbWUtPmVkaXRvcigpLT5tYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKCk7CiB9CiAK
QEAgLTUxNSw4ICs1MTUsOCBAQCBzdGF0aWMgYm9vbCBfZXdrX2ZyYW1lX3JlY3RfaXNfbmVnYXRp
dmVfdmFsdWUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKIAogRWluYV9Cb29sIGV3a19m
cmFtZV90ZXh0X21hdGNoZXNfbnRoX3Bvc19nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1l
LCBzaXplX3QgbnVtYmVyLCBpbnQqIHgsIGludCogeSkKIHsKLSAgICBFV0tfRlJBTUVfU0RfR0VU
X09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgRUlOQV9GQUxTRSk7Cisg
ICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2Up
OworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBm
YWxzZSk7CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gaW50UmVjdHMgPSBzbWFydERh
dGEtPmZyYW1lLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPnJlbmRlcmVkUmVjdHNGb3JNYXJrZXJz
KFdlYkNvcmU6OkRvY3VtZW50TWFya2VyOjpUZXh0TWF0Y2gpOwogCkBAIC01MjQsNyArNTI0LDcg
QEAgRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbnRoX3Bvc19nZXQoY29uc3QgRXZh
c19PYmplY3QqIGV3a0ZyYW1lLCBzaXplX3QKICAgICBzdGQ6OnJlbW92ZV9pZihpbnRSZWN0cy5i
ZWdpbigpLCBpbnRSZWN0cy5lbmQoKSwgX2V3a19mcmFtZV9yZWN0X2lzX25lZ2F0aXZlX3ZhbHVl
KTsKIAogICAgIGlmIChpbnRSZWN0cy5pc0VtcHR5KCkgfHwgbnVtYmVyID4gaW50UmVjdHMuc2l6
ZSgpKQotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgc3RkOjpzb3J0KGludFJlY3RzLmJlZ2luKCksIGludFJlY3RzLmVuZCgpLCBfZXdrX2Zy
YW1lX3JlY3RfY21wX2xlc3NfdGhhbik7CiAKQEAgLTUzMiwzMSArNTMyLDMxIEBAIEVpbmFfQm9v
bCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX250aF9wb3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBl
d2tGcmFtZSwgc2l6ZV90CiAgICAgICAgICp4ID0gaW50UmVjdHNbbnVtYmVyIC0gMV0ueCgpOwog
ICAgIGlmICh5KQogICAgICAgICAqeSA9IGludFJlY3RzW251bWJlciAtIDFdLnkoKTsKLSAgICBy
ZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wgZXdrX2Zy
YW1lX3N0b3AoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQogewotICAgIEVXS19GUkFNRV9TRF9HRVRf
T1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKKyAg
ICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZh
bHNlKTsKICAgICBzbWFydERhdGEtPmZyYW1lLT5sb2FkZXIoKS0+c3RvcEFsbExvYWRlcnMoKTsK
LSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wg
ZXdrX2ZyYW1lX3JlbG9hZChFdmFzX09iamVjdCogZXdrRnJhbWUpCiB7Ci0gICAgRVdLX0ZSQU1F
X1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIEVJTkFfRkFM
U0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEs
IGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5m
cmFtZSwgZmFsc2UpOwogICAgIHNtYXJ0RGF0YS0+ZnJhbWUtPmxvYWRlcigpLT5yZWxvYWQoKTsK
LSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wg
ZXdrX2ZyYW1lX3JlbG9hZF9mdWxsKEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKIHsKLSAgICBFV0tf
RlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsK
LSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgRUlO
QV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0
RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERh
dGEtPmZyYW1lLCBmYWxzZSk7CiAgICAgc21hcnREYXRhLT5mcmFtZS0+bG9hZGVyKCktPnJlbG9h
ZCh0cnVlKTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBF
aW5hX0Jvb2wgZXdrX2ZyYW1lX2JhY2soRXZhc19PYmplY3QqIGV3a0ZyYW1lKQpAQCAtNTcxLDEz
ICs1NzEsMTMgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9mb3J3YXJkKEV2YXNfT2JqZWN0KiBld2tG
cmFtZSkKIAogRWluYV9Cb29sIGV3a19mcmFtZV9uYXZpZ2F0ZShFdmFzX09iamVjdCogZXdrRnJh
bWUsIGludCBzdGVwcykKIHsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFt
ZSwgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoc21hcnREYXRhLT5mcmFtZSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NEX0dF
VF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7CiAgICAgV2ViQ29y
ZTo6UGFnZSogcGFnZSA9IHNtYXJ0RGF0YS0+ZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2Ut
PmNhbkdvQmFja09yRm9yd2FyZChzdGVwcykpCi0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcGFnZS0+Z29CYWNrT3JGb3J3YXJkKHN0ZXBzKTsK
LSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wg
ZXdrX2ZyYW1lX2JhY2tfcG9zc2libGUoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQpAQCAtNTkyLDgg
KzU5Miw4IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZm9yd2FyZF9wb3NzaWJsZShFdmFzX09iamVj
dCogZXdrRnJhbWUpCiAKIEVpbmFfQm9vbCBld2tfZnJhbWVfbmF2aWdhdGVfcG9zc2libGUoRXZh
c19PYmplY3QqIGV3a0ZyYW1lLCBpbnQgc3RlcHMpCiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIEVJTkFfRkFMU0UpOworICAg
IEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsK
KyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFs
c2UpOwogICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2UgPSBzbWFydERhdGEtPmZyYW1lLT5wYWdlKCk7
CiAgICAgcmV0dXJuIHBhZ2UtPmNhbkdvQmFja09yRm9yd2FyZChzdGVwcyk7CiB9CkBAIC02MDcs
MTAgKzYwNywxMCBAQCBmbG9hdCBld2tfZnJhbWVfcGFnZV96b29tX2dldChjb25zdCBFdmFzX09i
amVjdCogZXdrRnJhbWUpCiAKIEVpbmFfQm9vbCBld2tfZnJhbWVfcGFnZV96b29tX3NldChFdmFz
X09iamVjdCogZXdrRnJhbWUsIGZsb2F0IHBhZ2Vab29tRmFjdG9yKQogewotICAgIEVXS19GUkFN
RV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBFSU5BX0ZB
TFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRh
LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+
ZnJhbWUsIGZhbHNlKTsKICAgICBzbWFydERhdGEtPmZyYW1lLT5zZXRQYWdlWm9vbUZhY3Rvcihw
YWdlWm9vbUZhY3Rvcik7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogZmxvYXQgZXdrX2ZyYW1lX3RleHRfem9vbV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3
a0ZyYW1lKQpAQCAtNjIyLDEwICs2MjIsMTAgQEAgZmxvYXQgZXdrX2ZyYW1lX3RleHRfem9vbV9n
ZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQogCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3Rl
eHRfem9vbV9zZXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBmbG9hdCB0ZXh0Wm9vbUZhY3RvcikK
IHsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBF
SU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRh
LT5mcmFtZSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdr
RnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7CiAgICAgc21hcnREYXRhLT5mcmFtZS0+c2V0
VGV4dFpvb21GYWN0b3IodGV4dFpvb21GYWN0b3IpOwotICAgIHJldHVybiBFSU5BX1RSVUU7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgZXdrX2ZyYW1lX2hpdF90ZXN0X2ZyZWUoRXdrX0hp
dF9UZXN0KiBoaXRUZXN0KQpAQCAtNzE2LDIxICs3MTYsMjEgQEAgRXdrX0hpdF9UZXN0KiBld2tf
ZnJhbWVfaGl0X3Rlc3RfbmV3KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgaW50IHgsIGlu
dCB5KQogRWluYV9Cb29sCiBld2tfZnJhbWVfc2Nyb2xsX2FkZChFdmFzX09iamVjdCogZXdrRnJh
bWUsIGludCBkZWx0YVgsIGludCBkZWx0YVkpCiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9S
RVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIEVJTkFfRkFMU0UpOwotICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLT52aWV3KCksIEVJ
TkFfRkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFy
dERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnRE
YXRhLT5mcmFtZSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChz
bWFydERhdGEtPmZyYW1lLT52aWV3KCksIGZhbHNlKTsKICAgICBzbWFydERhdGEtPmZyYW1lLT52
aWV3KCktPnNjcm9sbEJ5KFdlYkNvcmU6OkludFNpemUoZGVsdGFYLCBkZWx0YVkpKTsKLSAgICBy
ZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wKIGV3a19m
cmFtZV9zY3JvbGxfc2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgaW50IHgsIGludCB5KQogewot
ICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIEVJTkFf
RkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZy
YW1lLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21h
cnREYXRhLT5mcmFtZS0+dmlldygpLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VU
X09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZS0+dmlldygpLCBmYWxzZSk7
CiAgICAgc21hcnREYXRhLT5mcmFtZS0+dmlldygpLT5zZXRTY3JvbGxQb3NpdGlvbihXZWJDb3Jl
OjpJbnRQb2ludCh4LCB5KSk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogRWluYV9Cb29sCkBAIC03NDAsMTUgKzc0MCwxNSBAQCBld2tfZnJhbWVfc2Nyb2xs
X3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgaW50KiB3aWR0aCwgaW50KiBo
ZWlnaHQpCiAgICAgICAgICp3aWR0aCA9IDA7CiAgICAgaWYgKGhlaWdodCkKICAgICAgICAgKmhl
aWdodCA9IDA7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0
RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNt
YXJ0RGF0YS0+ZnJhbWUsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLT52aWV3KCksIEVJTkFfRkFMU0UpOworICAgIEVXS19G
UkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOwor
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLT52aWV3
KCksIGZhbHNlKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCA9IHNtYXJ0RGF0YS0+ZnJh
bWUtPnZpZXcoKS0+bWF4aW11bVNjcm9sbFBvc2l0aW9uKCk7CiAgICAgaWYgKHdpZHRoKQogICAg
ICAgICAqd2lkdGggPSBwb2ludC54KCk7CiAgICAgaWYgKGhlaWdodCkKICAgICAgICAgKmhlaWdo
dCA9IHBvaW50LnkoKTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwog
fQogCiBFaW5hX0Jvb2wKQEAgLTc1OCwxNSArNzU4LDE1IEBAIGV3a19mcmFtZV9zY3JvbGxfcG9z
X2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIGludCogeCwgaW50KiB5KQogICAgICAg
ICAqeCA9IDA7CiAgICAgaWYgKHkpCiAgICAgICAgICp5ID0gMDsKLSAgICBFV0tfRlJBTUVfU0Rf
R0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgRUlOQV9GQUxTRSk7
Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUtPnZp
ZXcoKSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJh
bWUsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUtPnZpZXcoKSwgZmFsc2UpOwogICAgIFdlYkNvcmU6Oklu
dFBvaW50IHBvcyA9IHNtYXJ0RGF0YS0+ZnJhbWUtPnZpZXcoKS0+c2Nyb2xsUG9zaXRpb24oKTsK
ICAgICBpZiAoeCkKICAgICAgICAgKnggPSBwb3MueCgpOwogICAgIGlmICh5KQogICAgICAgICAq
eSA9IHBvcy55KCk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogRWluYV9Cb29sIGV3a19mcmFtZV92aXNpYmxlX2NvbnRlbnRfZ2VvbWV0cnlfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRWluYV9Cb29sIGluY2x1ZGVTY3JvbGxiYXJzLCBpbnQq
IHgsIGludCogeSwgaW50KiB3aWR0aCwgaW50KiBoZWlnaHQpCkBAIC03NzksOSArNzc5LDkgQEAg
RWluYV9Cb29sIGV3a19mcmFtZV92aXNpYmxlX2NvbnRlbnRfZ2VvbWV0cnlfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tGcmFtZSwgRWkKICAgICAgICAgKndpZHRoID0gMDsKICAgICBpZiAoaGVp
Z2h0KQogICAgICAgICAqaGVpZ2h0ID0gMDsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVS
Tihld2tGcmFtZSwgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUtPnZpZXcoKSwgRUlOQV9G
QUxTRSk7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0
YSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEt
PmZyYW1lLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0
RGF0YS0+ZnJhbWUtPnZpZXcoKSwgZmFsc2UpOwogICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdCA9
IHNtYXJ0RGF0YS0+ZnJhbWUtPnZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0KGluY2x1ZGVTY3Jv
bGxiYXJzKTsKICAgICBpZiAoeCkKICAgICAgICAgKnggPSByZWN0LngoKTsKQEAgLTc5MSwxNCAr
NzkxLDE0IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfdmlzaWJsZV9jb250ZW50X2dlb21ldHJ5X2dl
dChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIEVpCiAgICAgICAgICp3aWR0aCA9IHJlY3Qu
d2lkdGgoKTsKICAgICBpZiAoaGVpZ2h0KQogICAgICAgICAqaGVpZ2h0ID0gcmVjdC5oZWlnaHQo
KTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jv
b2wgZXdrX2ZyYW1lX3BhaW50X2Z1bGxfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkK
IHsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBF
SU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRh
LT5mcmFtZSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHNtYXJ0RGF0YS0+ZnJhbWUtPnZpZXcoKSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NE
X0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUtPnZpZXcoKSwgZmFs
c2UpOwogICAgIHJldHVybiBzbWFydERhdGEtPmZyYW1lLT52aWV3KCktPnBhaW50c0VudGlyZUNv
bnRlbnRzKCk7CiB9CiAKQEAgLTgxMiwyOSArODEyLDI5IEBAIHZvaWQgZXdrX2ZyYW1lX3BhaW50
X2Z1bGxfc2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRWluYV9Cb29sIGZsYWcpCiAKIEVpbmFf
Qm9vbCBld2tfZnJhbWVfZmVlZF9mb2N1c19pbihFdmFzX09iamVjdCogZXdrRnJhbWUpCiB7Ci0g
ICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgRUlOQV9G
QUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJh
bWUsIEVJTkFfRkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1l
LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
c21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOwogICAgIFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlciog
YyA9IHNtYXJ0RGF0YS0+ZnJhbWUtPnBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCk7CiAgICAgYy0+
c2V0Rm9jdXNlZEZyYW1lKHNtYXJ0RGF0YS0+ZnJhbWUpOwotICAgIHJldHVybiBFSU5BX1RSVUU7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9mb2N1c19v
dXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQogewogICAgIC8vIFRPRE86IHdoYXQgdG8gZG8gb24g
Zm9jdXMgb3V0PwogICAgIEVSUigid2hhdCB0byBkbz8iKTsKLSAgICByZXR1cm4gRUlOQV9GQUxT
RTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIEVpbmFfQm9vbCBld2tfZnJhbWVfZm9jdXNlZF9l
bGVtZW50X2dlb21ldHJ5X2dldChjb25zdCBFdmFzX09iamVjdCAqZXdrRnJhbWUsIGludCAqeCwg
aW50ICp5LCBpbnQgKncsIGludCAqaCkKIHsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVS
Tihld2tGcmFtZSwgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VU
X09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgV2ViQ29yZTo6RG9j
dW1lbnQqIGRvY3VtZW50ID0gc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBpZiAo
IWRvY3VtZW50KQotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIFdlYkNvcmU6Ok5vZGUqIGZvY3VzZWROb2RlID0gZG9jdW1lbnQtPmZvY3VzZWRO
b2RlKCk7CiAgICAgaWYgKCFmb2N1c2VkTm9kZSkKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IG5vZGVSZWN0ID0g
Zm9jdXNlZE5vZGUtPmdldFJlY3QoKTsKICAgICBpZiAoeCkKICAgICAgICAgKnggPSBub2RlUmVj
dC54KCk7CkBAIC04NDQsMTkgKzg0NCwxOSBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZvY3VzZWRf
ZWxlbWVudF9nZW9tZXRyeV9nZXQoY29uc3QgRXZhc19PYmplY3QgKmV3a0ZyYW1lLCBpbgogICAg
ICAgICAqdyA9IG5vZGVSZWN0LndpZHRoKCk7CiAgICAgaWYgKGgpCiAgICAgICAgICpoID0gbm9k
ZVJlY3QuaGVpZ2h0KCk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX21vdXNlX3doZWVsKEV2YXNfT2JqZWN0KiBl
d2tGcmFtZSwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogd2hlZWxFdmVudCkKIHsKLSAg
ICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBFSU5BX0ZB
TFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFt
ZSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHdoZWVs
RXZlbnQsIEVJTkFfRkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0Zy
YW1lLCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTCh3aGVlbEV2ZW50LCBmYWxzZSk7CiAKICAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZp
ZXcgPSBzbWFydERhdGEtPmZyYW1lLT52aWV3KCk7CiAgICAgREJHKCJld2tGcmFtZT0lcCwgdmll
dz0lcCwgZGlyZWN0aW9uPSVkLCB6PSVkLCBwb3M9JWQsJWQiLAogICAgICAgICBld2tGcmFtZSwg
dmlldywgd2hlZWxFdmVudC0+ZGlyZWN0aW9uLCB3aGVlbEV2ZW50LT56LCB3aGVlbEV2ZW50LT5j
YW52YXMueCwgd2hlZWxFdmVudC0+Y2FudmFzLnkpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTCh2aWV3LCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwodmlldywgZmFsc2UpOwogCiAgICAgV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50
IGV2ZW50KHdoZWVsRXZlbnQpOwogICAgIHJldHVybiBzbWFydERhdGEtPmZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+aGFuZGxlV2hlZWxFdmVudChldmVudCk7CkBAIC04NjQsMTQgKzg2NCwxNCBAQCBF
aW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfbW91c2Vfd2hlZWwoRXZhc19PYmplY3QqIGV3a0ZyYW1l
LCBjb25zdCBFdmFzX0V2ZW50X01vdQogCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfbW91c2Vf
ZG93bihFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biog
ZG93bkV2ZW50KQogewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBz
bWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChzbWFydERhdGEtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoZG93bkV2ZW50LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VU
X09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZG93bkV2ZW50LCBmYWxzZSk7CiAKICAgICBXZWJDb3Jl
OjpGcmFtZVZpZXcqIHZpZXcgPSBzbWFydERhdGEtPmZyYW1lLT52aWV3KCk7CiAgICAgREJHKCJl
d2tGcmFtZT0lcCwgdmlldz0lcCwgYnV0dG9uPSVkLCBwb3M9JWQsJWQiLAogICAgICAgICBld2tG
cmFtZSwgdmlldywgZG93bkV2ZW50LT5idXR0b24sIGRvd25FdmVudC0+Y2FudmFzLngsIGRvd25F
dmVudC0+Y2FudmFzLnkpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh2aWV3
LCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodmlldywg
ZmFsc2UpOwogCiAgICAgRXZhc19Db29yZCB4LCB5OwogICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5
X2dldChzbWFydERhdGEtPnZpZXcsICZ4LCAmeSwgMCwgMCk7CkBAIC04ODIsMTQgKzg4MiwxNCBA
QCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfbW91c2VfZG93bihFdmFzX09iamVjdCogZXdrRnJh
bWUsIGNvbnN0IEV2YXNfRXZlbnRfTW91cwogCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfbW91
c2VfdXAoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwKiB1
cEV2ZW50KQogewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFy
dERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChz
bWFydERhdGEtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwodXBFdmVudCwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9S
RVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHVwRXZlbnQsIGZhbHNlKTsKIAogICAgIFdlYkNvcmU6OkZyYW1l
VmlldyogdmlldyA9IHNtYXJ0RGF0YS0+ZnJhbWUtPnZpZXcoKTsKICAgICBEQkcoImV3a0ZyYW1l
PSVwLCB2aWV3PSVwLCBidXR0b249JWQsIHBvcz0lZCwlZCIsCiAgICAgICAgIGV3a0ZyYW1lLCB2
aWV3LCB1cEV2ZW50LT5idXR0b24sIHVwRXZlbnQtPmNhbnZhcy54LCB1cEV2ZW50LT5jYW52YXMu
eSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHZpZXcsIEVJTkFfRkFMU0Up
OworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh2aWV3LCBmYWxzZSk7CiAKICAg
ICBFdmFzX0Nvb3JkIHgsIHk7CiAgICAgZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KHNtYXJ0RGF0
YS0+dmlldywgJngsICZ5LCAwLCAwKTsKQEAgLTkwMCwxNSArOTAwLDE1IEBAIEVpbmFfQm9vbCBl
d2tfZnJhbWVfZmVlZF9tb3VzZV91cChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IEV2YXNf
RXZlbnRfTW91c2VfCiAKIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV9tb3ZlKEV2YXNf
T2JqZWN0KiBld2tGcmFtZSwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiBtb3ZlRXZlbnQp
CiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwg
RUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0
YS0+ZnJhbWUsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChtb3ZlRXZlbnQsIEVJTkFfRkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJO
KGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChtb3ZlRXZlbnQsIGZhbHNlKTsKIAogICAgIFdlYkNvcmU6OkZyYW1lVmll
dyogdmlldyA9IHNtYXJ0RGF0YS0+ZnJhbWUtPnZpZXcoKTsKICAgICBEQkcoImV3a0ZyYW1lPSVw
LCB2aWV3PSVwLCBwb3M6IG9sZD0lZCwlZCwgbmV3PSVkLCVkLCBidXR0b25zPSVkIiwKICAgICAg
ICAgZXdrRnJhbWUsIHZpZXcsIG1vdmVFdmVudC0+Y3VyLmNhbnZhcy54LCBtb3ZlRXZlbnQtPmN1
ci5jYW52YXMueSwKICAgICAgICAgbW92ZUV2ZW50LT5wcmV2LmNhbnZhcy54LCBtb3ZlRXZlbnQt
PnByZXYuY2FudmFzLnksIG1vdmVFdmVudC0+YnV0dG9ucyk7Ci0gICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKHZpZXcsIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTCh2aWV3LCBmYWxzZSk7CiAKICAgICBFdmFzX0Nvb3JkIHgsIHk7CiAgICAg
ZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KHNtYXJ0RGF0YS0+dmlldywgJngsICZ5LCAwLCAwKTsK
QEAgLTkxOSwxNCArOTE5LDE0IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV9tb3Zl
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgRXZhc19FdmVudF9Nb3VzCiAKIEVpbmFfQm9v
bCBld2tfZnJhbWVfZmVlZF90b3VjaF9ldmVudChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19U
b3VjaF9FdmVudF9UeXBlIGFjdGlvbiwgRWluYV9MaXN0KiBwb2ludHMsIGludCBtZXRhU3RhdGUp
CiB7Ci0gICAgRWluYV9Cb29sIHJlc3VsdCA9IEVJTkFfRkFMU0U7CisgICAgRWluYV9Cb29sIHJl
c3VsdCA9IGZhbHNlOwogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwocG9pbnRzLCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwocG9pbnRzLCBmYWxzZSk7CiAgICAgRVdLX0ZSQU1FX1NEX0dF
VChld2tGcmFtZSwgc21hcnREYXRhKTsKIAogICAgIGlmICghc21hcnREYXRhIHx8ICFzbWFydERh
dGEtPmZyYW1lIHx8ICFld2tfdmlld19uZWVkX3RvdWNoX2V2ZW50c19nZXQoc21hcnREYXRhLT52
aWV3KSkKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIEV2YXNfQ29vcmQgeCwgeTsKICAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQoc21h
cnREYXRhLT52aWV3LCAmeCwgJnksIDAsIDApOwpAQCAtOTQ2LDcgKzk0Niw3IEBAIEVpbmFfQm9v
bCBld2tfZnJhbWVfZmVlZF90b3VjaF9ldmVudChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19U
b3VjaF9FdmVudF9UeXBlCiAgICAgICAgIHR5cGUgPSBXZWJDb3JlOjpUb3VjaENhbmNlbDsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBXZWJDb3JlOjpQbGF0Zm9ybVRvdWNo
RXZlbnQgdG91Y2hFdmVudChwb2ludHMsIFdlYkNvcmU6OkludFBvaW50KHgsIHkpLCB0eXBlLCBt
ZXRhU3RhdGUpOwpAQCAtMTAwOSwzNyArMTAwOSwzNyBAQCBzdGF0aWMgaW5saW5lIEVpbmFfQm9v
bCBfZXdrX2ZyYW1lX2hhbmRsZV9rZXlfc2Nyb2xsaW5nKFdlYkNvcmU6OkZyYW1lKiBmcmFtZSwg
YwogICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBXZWJDb3JlOjpTY3JvbGxCeUxpbmU7CiAgICAg
ICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKGZyYW1lLT5ldmVudEhhbmRsZXIo
KS0+c2Nyb2xsT3ZlcmZsb3coZGlyZWN0aW9uLCBncmFudWxhcml0eSkpCi0gICAgICAgIHJldHVy
biBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBmcmFtZS0+dmlldygp
LT5zY3JvbGwoZGlyZWN0aW9uLCBncmFudWxhcml0eSk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX2tleV9kb3du
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgRXZhc19FdmVudF9LZXlfRG93biogZG93bkV2
ZW50KQogewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERh
dGEsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFy
dERhdGEtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoZG93bkV2ZW50LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JF
VFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoZG93bkV2ZW50LCBmYWxzZSk7CiAKICAgICBEQkcoImV3a0ZyYW1l
PSVwIGtleW5hbWU9JXMgKGtleT0lcywgc3RyaW5nPSVzKSIsCiAgICAgICAgIGV3a0ZyYW1lLCBk
b3duRXZlbnQtPmtleW5hbWUsIGRvd25FdmVudC0+a2V5ID8gZG93bkV2ZW50LT5rZXkgOiAiIiwg
ZG93bkV2ZW50LT5zdHJpbmcgPyBkb3duRXZlbnQtPnN0cmluZyA6ICIiKTsKIAogICAgIFdlYkNv
cmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCBldmVudChkb3duRXZlbnQpOwogICAgIGlmIChzbWFy
dERhdGEtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+a2V5RXZlbnQoZXZlbnQpKQotICAgICAgICBy
ZXR1cm4gRUlOQV9UUlVFOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBfZXdr
X2ZyYW1lX2hhbmRsZV9rZXlfc2Nyb2xsaW5nKHNtYXJ0RGF0YS0+ZnJhbWUsIGV2ZW50KTsKIH0K
IAogRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX2tleV91cChFdmFzX09iamVjdCogZXdrRnJhbWUs
IGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwKiB1cEV2ZW50KQogewotICAgIEVXS19GUkFNRV9TRF9H
RVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBFSU5BX0ZBTFNFKTsK
LSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodXBFdmVudCwgRUlOQV9GQUxTRSk7
CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFs
c2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1l
LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHVwRXZlbnQsIGZh
bHNlKTsKIAogICAgIERCRygiZXdrRnJhbWU9JXAga2V5bmFtZT0lcyAoa2V5PSVzLCBzdHJpbmc9
JXMpIiwKICAgICAgICAgZXdrRnJhbWUsIHVwRXZlbnQtPmtleW5hbWUsIHVwRXZlbnQtPmtleSA/
IHVwRXZlbnQtPmtleSA6ICIiLCB1cEV2ZW50LT5zdHJpbmcgPyB1cEV2ZW50LT5zdHJpbmcgOiAi
Iik7CkBAIC0xMDk0LDIxICsxMDk0LDIxIEBAIEV2YXNfT2JqZWN0KiBld2tfZnJhbWVfYWRkKEV2
YXMqIGNhbnZhcykKICAqCiAgKiBUaGlzIGlzIGludGVybmFsIGFuZCBzaG91bGQgbmV2ZXIgYmUg
Y2FsbGVkIGJ5IGV4dGVybmFsIHVzZXJzLgogICovCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2luaXQo
RXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFdmFzX09iamVjdCogdmlldywgV2ViQ29yZTo6RnJhbWUq
IGZyYW1lKQorYm9vbCBld2tfZnJhbWVfaW5pdChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV2YXNf
T2JqZWN0KiB2aWV3LCBXZWJDb3JlOjpGcmFtZSogZnJhbWUpCiB7Ci0gICAgRVdLX0ZSQU1FX1NE
X0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7CisgICAgRVdL
X0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAg
IGlmICghc21hcnREYXRhLT5mcmFtZSkgewogICAgICAgICBXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudEVmbCogZnJhbWVMb2FkZXJDbGllbnQgPSBfZXdrX2ZyYW1lX2xvYWRlcl9lZmxfZ2V0KGZy
YW1lKTsKICAgICAgICAgZnJhbWVMb2FkZXJDbGllbnQtPnNldFdlYkZyYW1lKGV3a0ZyYW1lKTsK
ICAgICAgICAgc21hcnREYXRhLT5mcmFtZSA9IGZyYW1lOwogICAgICAgICBzbWFydERhdGEtPnZp
ZXcgPSB2aWV3OwogICAgICAgICBmcmFtZS0+aW5pdCgpOwotICAgICAgICByZXR1cm4gRUlOQV9U
UlVFOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBFUlIoImZyYW1lICVwIGFs
cmVhZHkgc2V0IGZvciAlcCwgaWdub3JlZCBuZXcgJXAiLAogICAgICAgICBzbWFydERhdGEtPmZy
YW1lLCBld2tGcmFtZSwgZnJhbWUpOwotICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIHJldHVy
biBmYWxzZTsKIH0KIAogLyoqCkBAIC0xMTE2LDcgKzExMTYsNyBAQCBFaW5hX0Jvb2wgZXdrX2Zy
YW1lX2luaXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFdmFzX09iamVjdCogdmlldywgV2ViQ29y
ZTo6RnJhbQogICoKICAqIEFkZHMgY2hpbGQgdG8gdGhlIGZyYW1lLgogICovCi1FaW5hX0Jvb2wg
ZXdrX2ZyYW1lX2NoaWxkX2FkZChFdmFzX09iamVjdCogZXdrRnJhbWUsIFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpGcmFtZT4gY2hpbGQsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlcikKK2Jvb2wgZXdr
X2ZyYW1lX2NoaWxkX2FkZChFdmFzX09iamVjdCogZXdrRnJhbWUsIFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpGcmFtZT4gY2hpbGQsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlcikKIHsKICAgICBFV0tf
RlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCAwKTsKICAgICBjaGFy
IGJ1ZmZlclsyNTZdOwpAQCAtMTEyNiw3ICsxMTI2LDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9j
aGlsZF9hZGQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6
RnIKICAgICBmcmFtZSA9IGV3a19mcmFtZV9hZGQoc21hcnREYXRhLT5iYXNlLmV2YXMpOwogICAg
IGlmICghZnJhbWUpIHsKICAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIGV3a19mcmFtZSBv
YmplY3QuIik7Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCiAgICAgY29yZUZyYW1lID0gY2hpbGQuZ2V0KCk7CkBAIC0xMTM4LDcgKzEx
MzgsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2NoaWxkX2FkZChFdmFzX09iamVjdCogZXdrRnJh
bWUsIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGcgogCiAgICAgaWYgKCFld2tfZnJhbWVfaW5p
dChmcmFtZSwgc21hcnREYXRhLT52aWV3LCBjb3JlRnJhbWUpKSB7CiAgICAgICAgIGV2YXNfb2Jq
ZWN0X2RlbChmcmFtZSk7Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICJF
V0tfRnJhbWU6Y2hpbGQvJXMiLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogICAgIGV2YXNfb2JqZWN0
X25hbWVfc2V0KGZyYW1lLCBidWZmZXIpOwpAQCAtMTE0OCw3ICsxMTQ4LDcgQEAgRWluYV9Cb29s
IGV3a19mcmFtZV9jaGlsZF9hZGQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBXVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6RnIKICAgICAvLyBUaGUgY3JlYXRpb24gb2YgdGhlIGZyYW1lIG1heSBoYXZl
IHJ1biBhcmJpdHJhcnkgSmF2YVNjcmlwdCB0aGF0IHJlbW92ZWQgaXQgZnJvbSB0aGUgcGFnZSBh
bHJlYWR5LgogICAgIGlmICghY29yZUZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAgZXZhc19vYmpl
Y3RfZGVsKGZyYW1lKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCiAgICAgc21hcnREYXRhLT5mcmFtZS0+bG9hZGVyKCktPmxvYWRVUkxJ
bnRvQ2hpbGRGcmFtZSh1cmwsIHJlZmVycmVyLCBjb3JlRnJhbWUpOwpAQCAtMTE1NywxMSArMTE1
NywxMSBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2NoaWxkX2FkZChFdmFzX09iamVjdCogZXdrRnJh
bWUsIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGcgogICAgIC8vIFNlZSBmYXN0L2RvbS9udWxs
LXBhZ2Utc2hvdy1tb2RhbC1kaWFsb2ctY3Jhc2guaHRtbCBmb3IgYW4gZXhhbXBsZS4KICAgICBp
ZiAoIWNvcmVGcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkgewogICAgICAgICBldmFzX29iamVjdF9k
ZWwoZnJhbWUpOwotICAgICAgICByZXR1cm4gRUlOQV9UUlVFOworICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKICAgICAvLyBUT0RPOiBhbm5vdW5jZSBmcmFtZSB3YXMgY3JlYXRlZD8KLSAg
ICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiAvKioKQEAgLTEzMzMs
NyArMTMzMyw3IEBAIHZvaWQgZXdrX2ZyYW1lX2xvYWRfZG9jdW1lbnRfZmluaXNoZWQoRXZhc19P
YmplY3QqIGV3a0ZyYW1lKQogICogQG5vdGUgdGhlcmUgc2hvdWxkIG5vdGJlIGFueSBlcnJvciBz
dHVmZiBoZXJlLCBidXQgdHJ5aW5nIHRvIGJlCiAgKiAgICAgICBjb21wYXRpYmxlIHdpdGggcHJl
dmlvdXMgV2ViS2l0LgogICovCi12b2lkIGV3a19mcmFtZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2Jq
ZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogZXJyb3JEb21haW4sIGludCBlcnJvckNvZGUsIEVp
bmFfQm9vbCBpc0NhbmNlbGxhdGlvbiwgY29uc3QgY2hhciogZXJyb3JEZXNjcmlwdGlvbiwgY29u
c3QgY2hhciogZmFpbGluZ1VybCkKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfZmluaXNoZWQoRXZhc19P
YmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBlcnJvckRvbWFpbiwgaW50IGVycm9yQ29kZSwg
Ym9vbCBpc0NhbmNlbGxhdGlvbiwgY29uc3QgY2hhciogZXJyb3JEZXNjcmlwdGlvbiwgY29uc3Qg
Y2hhciogZmFpbGluZ1VybCkKIHsKICAgICBFd2tfRnJhbWVfTG9hZF9FcnJvciBidWZmZXIsICpl
cnJvcjsKICAgICBpZiAoIWVycm9yRG9tYWluKSB7CkBAIC0xMzYzLDcgKzEzNjMsNyBAQCB2b2lk
IGV3a19mcmFtZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hh
ciogZXJyb3JEb21haW4sIGludAogICoKICAqIEVtaXRzIHNpZ25hbDogImxvYWQsZXJyb3IiIHdp
dGggcG9pbnRlciB0byBFd2tfRnJhbWVfTG9hZF9FcnJvci4KICAqLwotdm9pZCBld2tfZnJhbWVf
bG9hZF9lcnJvcihFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGVycm9yRG9tYWlu
LCBpbnQgZXJyb3JDb2RlLCBFaW5hX0Jvb2wgaXNDYW5jZWxsYXRpb24sIGNvbnN0IGNoYXIqIGVy
cm9yRGVzY3JpcHRpb24sIGNvbnN0IGNoYXIqIGZhaWxpbmdVcmwpCit2b2lkIGV3a19mcmFtZV9s
b2FkX2Vycm9yKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogZXJyb3JEb21haW4s
IGludCBlcnJvckNvZGUsIGJvb2wgaXNDYW5jZWxsYXRpb24sIGNvbnN0IGNoYXIqIGVycm9yRGVz
Y3JpcHRpb24sIGNvbnN0IGNoYXIqIGZhaWxpbmdVcmwpCiB7CiAgICAgRXdrX0ZyYW1lX0xvYWRf
RXJyb3IgZXJyb3I7CiAKQEAgLTE1MzQsNyArMTUzNCw3IEBAIEVpbmFfTGlzdCogZXdrX2ZyYW1l
X3Jlc291cmNlc19sb2NhdGlvbl9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQogICAg
ICAgICAvLyBMb29rIGZvciBkdXBsaWNhdGVkIGxvY2F0aW9uLgogICAgICAgICBFaW5hX0xpc3Qq
IGxpc3RJdGVyYXRvciA9IDA7CiAgICAgICAgIHZvaWQqIGRhdGEgPSAwOwotICAgICAgICBFaW5h
X0Jvb2wgZm91bmQgPSBFSU5BX0ZBTFNFOworICAgICAgICBFaW5hX0Jvb2wgZm91bmQgPSBmYWxz
ZTsKICAgICAgICAgRUlOQV9MSVNUX0ZPUkVBQ0gobGlzdE9mSW1hZ2VzTG9jYXRpb24sIGxpc3RJ
dGVyYXRvciwgZGF0YSkKICAgICAgICAgICAgIGlmIChmb3VuZCA9ICFzdHJjbXAoc3RhdGljX2Nh
c3Q8Y2hhcio+KGRhdGEpLCBpbWFnZUxvY2F0aW9uLnV0ZjgoKS5kYXRhKCkpKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTU4MSwyMSArMTU4MSwyMSBAQCBjaGFyKiBld2tfZnJhbWVfcGxh
aW5fdGV4dF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQogICoKICAqIEVtaXRzIHNp
Z25hbDogInVyaSxjaGFuZ2VkIiB3aXRoIG5ldyB1cmkgYXMgcGFyYW1ldGVyLgogICovCi1FaW5h
X0Jvb2wgZXdrX2ZyYW1lX3VyaV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKK2Jvb2wg
ZXdrX2ZyYW1lX3VyaV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKIHsKLSAgICBFV0tf
RlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsK
LSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgRUlO
QV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0
RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERh
dGEtPmZyYW1lLCBmYWxzZSk7CiAgICAgV1RGOjpDU3RyaW5nIHVyaShzbWFydERhdGEtPmZyYW1l
LT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKS51dGY4KCkpOwogCiAgICAgSU5GKCJ1cmk9JXMi
LCB1cmkuZGF0YSgpKTsKICAgICBpZiAoIXVyaS5kYXRhKCkpIHsKICAgICAgICAgRVJSKCJubyB1
cmkiKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnNtYXJ0RGF0YS0+dXJpLCB1
cmkuZGF0YSgpKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a0ZyYW1l
LCAidXJpLGNoYW5nZWQiLCAodm9pZCopc21hcnREYXRhLT51cmkpOwotICAgIHJldHVybiBFSU5B
X1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19oaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
aGlzdG9yeS5jcHAKaW5kZXggZmUwMWQ1MmNjYjFkNmNhZDgyN2FiOTZkMmQ5NWYzYzYyOWRhOTNi
OC4uMmJkZjNlYjcwOWVkYjEyYjY4ZTEwZmQ3YTRlZmFkOTgzOGE3MTVlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyBpbmxpbmUg
RWluYV9MaXN0KiBfZXdrX2hpc3RvcnlfaXRlbV9saXN0X2dldChjb25zdCBXZWJDb3JlOjpIaXN0
b3J5SXRlbVZlCiAKIEVpbmFfQm9vbCBld2tfaGlzdG9yeV9jbGVhcihFd2tfSGlzdG9yeSogaGlz
dG9yeSkKIHsKLSAgICBFV0tfSElTVE9SWV9DT1JFX0dFVF9PUl9SRVRVUk4oaGlzdG9yeSwgY29y
ZSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0hJU1RPUllfQ09SRV9HRVRfT1JfUkVUVVJOKGhpc3Rv
cnksIGNvcmUsIGZhbHNlKTsKIAogICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2UgPSBjb3JlLT5wYWdl
KCk7CiAgICAgaWYgKHBhZ2UgJiYgcGFnZS0+Z3JvdXBQdHIoKSkKQEAgLTEwMiw0MSArMTAyLDQx
IEBAIEVpbmFfQm9vbCBld2tfaGlzdG9yeV9jbGVhcihFd2tfSGlzdG9yeSogaGlzdG9yeSkKICAg
ICBld2tfaGlzdG9yeV9saW1pdF9zZXQoaGlzdG9yeSwgMCk7CiAgICAgZXdrX2hpc3RvcnlfbGlt
aXRfc2V0KGhpc3RvcnksIGxpbWl0KTsKIAotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfaGlzdG9yeV9mb3J3YXJkKEV3a19IaXN0b3J5
KiBoaXN0b3J5KQogewotICAgIEVXS19ISVNUT1JZX0NPUkVfR0VUX09SX1JFVFVSTihoaXN0b3J5
LCBjb3JlLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfSElTVE9SWV9DT1JFX0dFVF9PUl9SRVRVUk4o
aGlzdG9yeSwgY29yZSwgZmFsc2UpOwogICAgIGlmIChjb3JlLT5mb3J3YXJkTGlzdENvdW50KCkg
PCAxKQotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGNvcmUtPmdvRm9yd2FyZCgpOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfaGlzdG9yeV9iYWNrKEV3a19IaXN0b3J5KiBoaXN0
b3J5KQogewotICAgIEVXS19ISVNUT1JZX0NPUkVfR0VUX09SX1JFVFVSTihoaXN0b3J5LCBjb3Jl
LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfSElTVE9SWV9DT1JFX0dFVF9PUl9SRVRVUk4oaGlzdG9y
eSwgY29yZSwgZmFsc2UpOwogICAgIGlmIChjb3JlLT5iYWNrTGlzdENvdW50KCkgPCAxKQotICAg
ICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNvcmUt
PmdvQmFjaygpOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IEVpbmFfQm9vbCBld2tfaGlzdG9yeV9oaXN0b3J5X2l0ZW1fYWRkKEV3a19IaXN0b3J5KiBoaXN0
b3J5LCBjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVtKQogewotICAgIEVXS19ISVNUT1JZX0NP
UkVfR0VUX09SX1JFVFVSTihoaXN0b3J5LCBoaXN0b3J5X2NvcmUsIEVJTkFfRkFMU0UpOwotICAg
IEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1JfUkVUVVJOKGl0ZW0sIGl0ZW1fY29yZSwgRUlO
QV9GQUxTRSk7CisgICAgRVdLX0hJU1RPUllfQ09SRV9HRVRfT1JfUkVUVVJOKGhpc3RvcnksIGhp
c3RvcnlfY29yZSwgZmFsc2UpOworICAgIEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1JfUkVU
VVJOKGl0ZW0sIGl0ZW1fY29yZSwgZmFsc2UpOwogICAgIGhpc3RvcnlfY29yZS0+YWRkSXRlbShp
dGVtX2NvcmUpOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IEVpbmFfQm9vbCBld2tfaGlzdG9yeV9oaXN0b3J5X2l0ZW1fc2V0KEV3a19IaXN0b3J5KiBoaXN0
b3J5LCBjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVtKQogewotICAgIEVXS19ISVNUT1JZX0NP
UkVfR0VUX09SX1JFVFVSTihoaXN0b3J5LCBoaXN0b3J5X2NvcmUsIEVJTkFfRkFMU0UpOwotICAg
IEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1JfUkVUVVJOKGl0ZW0sIGl0ZW1fY29yZSwgRUlO
QV9GQUxTRSk7CisgICAgRVdLX0hJU1RPUllfQ09SRV9HRVRfT1JfUkVUVVJOKGhpc3RvcnksIGhp
c3RvcnlfY29yZSwgZmFsc2UpOworICAgIEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1JfUkVU
VVJOKGl0ZW0sIGl0ZW1fY29yZSwgZmFsc2UpOwogICAgIGhpc3RvcnlfY29yZS0+Z29Ub0l0ZW0o
aXRlbV9jb3JlKTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQog
CiBFd2tfSGlzdG9yeV9JdGVtKiBld2tfaGlzdG9yeV9oaXN0b3J5X2l0ZW1fYmFja19nZXQoY29u
c3QgRXdrX0hpc3RvcnkqIGhpc3RvcnkpCkBAIC0xNjgsOCArMTY4LDggQEAgRXdrX0hpc3Rvcnlf
SXRlbSogZXdrX2hpc3RvcnlfaGlzdG9yeV9pdGVtX250aF9nZXQoY29uc3QgRXdrX0hpc3Rvcnkq
IGhpc3RvcnksIGkKIAogRWluYV9Cb29sIGV3a19oaXN0b3J5X2hpc3RvcnlfaXRlbV9jb250YWlu
cyhjb25zdCBFd2tfSGlzdG9yeSogaGlzdG9yeSwgY29uc3QgRXdrX0hpc3RvcnlfSXRlbSogaXRl
bSkKIHsKLSAgICBFV0tfSElTVE9SWV9DT1JFX0dFVF9PUl9SRVRVUk4oaGlzdG9yeSwgaGlzdG9y
eV9jb3JlLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfSElTVE9SWV9JVEVNX0NPUkVfR0VUX09SX1JF
VFVSTihpdGVtLCBpdGVtX2NvcmUsIEVJTkFfRkFMU0UpOworICAgIEVXS19ISVNUT1JZX0NPUkVf
R0VUX09SX1JFVFVSTihoaXN0b3J5LCBoaXN0b3J5X2NvcmUsIGZhbHNlKTsKKyAgICBFV0tfSElT
VE9SWV9JVEVNX0NPUkVfR0VUX09SX1JFVFVSTihpdGVtLCBpdGVtX2NvcmUsIGZhbHNlKTsKICAg
ICByZXR1cm4gaGlzdG9yeV9jb3JlLT5jb250YWluc0l0ZW0oaXRlbV9jb3JlKTsKIH0KIApAQCAt
MjI3LDkgKzIyNyw5IEBAIGludCBld2tfaGlzdG9yeV9saW1pdF9nZXQoRXdrX0hpc3RvcnkqIGhp
c3RvcnkpCiAKIEVpbmFfQm9vbCBld2tfaGlzdG9yeV9saW1pdF9zZXQoY29uc3QgRXdrX0hpc3Rv
cnkqIGhpc3RvcnksIGludCBsaW1pdCkKIHsKLSAgICBFV0tfSElTVE9SWV9DT1JFX0dFVF9PUl9S
RVRVUk4oaGlzdG9yeSwgY29yZSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0hJU1RPUllfQ09SRV9H
RVRfT1JfUkVUVVJOKGhpc3RvcnksIGNvcmUsIGZhbHNlKTsKICAgICBjb3JlLT5zZXRDYXBhY2l0
eShsaW1pdCk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
RXdrX0hpc3RvcnlfSXRlbSogZXdrX2hpc3RvcnlfaXRlbV9uZXdfZnJvbV9jb3JlKFdlYkNvcmU6
Okhpc3RvcnlJdGVtKiBjb3JlKQpAQCAtMzY1LDcgKzM2NSw3IEBAIEV2YXNfT2JqZWN0KiBld2tf
aGlzdG9yeV9pdGVtX2ljb25fb2JqZWN0X2FkZChjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVt
LCBFdmFzCiAKIEVpbmFfQm9vbCBld2tfaGlzdG9yeV9pdGVtX3BhZ2VfY2FjaGVfZXhpc3RzKGNv
bnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0pCiB7Ci0gICAgRVdLX0hJU1RPUllfSVRFTV9DT1JF
X0dFVF9PUl9SRVRVUk4oaXRlbSwgY29yZSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0hJU1RPUllf
SVRFTV9DT1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwgY29yZSwgZmFsc2UpOwogICAgIHJldHVybiBj
b3JlLT5pc0luUGFnZUNhY2hlKCk7CiB9CiAKQEAgLTM3Nyw3ICszNzcsNyBAQCBpbnQgZXdrX2hp
c3RvcnlfaXRlbV92aXNpdF9jb3VudChjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVtKQogCiBF
aW5hX0Jvb2wgZXdrX2hpc3RvcnlfaXRlbV92aXNpdF9sYXN0X2ZhaWxlZChjb25zdCBFd2tfSGlz
dG9yeV9JdGVtKiBpdGVtKQogewotICAgIEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1JfUkVU
VVJOKGl0ZW0sIGNvcmUsIEVJTkFfVFJVRSk7CisgICAgRVdLX0hJU1RPUllfSVRFTV9DT1JFX0dF
VF9PUl9SRVRVUk4oaXRlbSwgY29yZSwgdHJ1ZSk7CiAgICAgcmV0dXJuIGNvcmUtPmxhc3RWaXNp
dFdhc0ZhaWx1cmUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19qcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2pzLmNwcAppbmRleCBkMmM5YTkz
N2NiYThkZWU0OWYzY2I3NzAyNmNmOGZjYzc1MDhhMmUxLi4zMDY5ZmMyZjkxNzc2M2M5NTgxYTgz
YTU1ODVhODgwMTIwM2UxODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2pzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2pzLmNwcApAQCAtNDUsOCAr
NDUsOCBAQCBzdGF0aWMgRWluYV9Cb29sIGV3a19qc19ucHZhcmlhbnRfdG9fdmFyaWFudChFd2tf
SlNfVmFyaWFudCogZGF0YSwgY29uc3QgTlBWYXJpYQogCiBzdGF0aWMgRWluYV9Cb29sIGV3a19q
c192YXJpYW50X3RvX25wdmFyaWFudChjb25zdCBFd2tfSlNfVmFyaWFudCogZGF0YSwgTlBWYXJp
YW50KiByZXN1bHQpCiB7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGRhdGEs
IEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChyZXN1bHQs
IEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChkYXRhLCBm
YWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHJlc3VsdCwgZmFsc2Up
OwogICAgIGNoYXIqIHN0cmluZ192YWx1ZTsKIAogICAgIHN3aXRjaCAoZGF0YS0+dHlwZSkgewpA
QCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgRWluYV9Cb29sIGV3a19qc192YXJpYW50X3RvX25wdmFy
aWFudChjb25zdCBFd2tfSlNfVmFyaWFudCogZGF0YSwgTlBWYXJpYQogICAgICAgICBpZiAoc3Ry
aW5nX3ZhbHVlKQogICAgICAgICAgICAgU1RSSU5HWl9UT19OUFZBUklBTlQoc3RyaW5nX3ZhbHVl
LCAqcmVzdWx0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRVdL
X0pTX1ZBUklBTlRfQk9PTDoKICAgICAgICAgQk9PTEVBTl9UT19OUFZBUklBTlQoZGF0YS0+dmFs
dWUuYiwgKnJlc3VsdCk7CkBAIC03NiwxMCArNzYsMTAgQEAgc3RhdGljIEVpbmFfQm9vbCBld2tf
anNfdmFyaWFudF90b19ucHZhcmlhbnQoY29uc3QgRXdrX0pTX1ZhcmlhbnQqIGRhdGEsIE5QVmFy
aWEKICAgICAgICAgT0JKRUNUX1RPX05QVkFSSUFOVChyZWludGVycHJldF9jYXN0PE5QT2JqZWN0
Kj4oZGF0YS0+dmFsdWUubyksICpyZXN1bHQpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0
OgotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIC8vIFRo
ZXNlIG1ldGhvZHMgYXJlIHVzZWQgYnkgTlBBSSwgdGhhdHMgdGhlIHJlYXNvbiB0byB1c2UgYm9v
bCBpbnN0ZWFkIG9mIEVpbmFfQm9vbC4KQEAgLTQ4Miw4ICs0ODIsOCBAQCBlcnJvcjoKIHN0YXRp
YyBFaW5hX0Jvb2wgZXdrX2pzX25wdmFyaWFudF90b192YXJpYW50KEV3a19KU19WYXJpYW50KiBk
YXRhLCBjb25zdCBOUFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBpbnQgc3o7Ci0gICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGRhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChyZXN1bHQsIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChkYXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKHJlc3VsdCwgZmFsc2UpOwogICAgIHN3aXRjaCAocmVzdWx0LT50eXBl
KSB7CiAgICAgY2FzZSBOUFZhcmlhbnRUeXBlX1ZvaWQ6CiAgICAgICAgIGRhdGEtPnR5cGUgPSBF
V0tfSlNfVkFSSUFOVF9WT0lEOwpAQCAtNTA1LDcgKzUwNSw3IEBAIHN0YXRpYyBFaW5hX0Jvb2wg
ZXdrX2pzX25wdmFyaWFudF90b192YXJpYW50KEV3a19KU19WYXJpYW50KiBkYXRhLCBjb25zdCBO
UFZhcmlhCiAgICAgICAgIHN6ID0gTlBWQVJJQU5UX1RPX1NUUklORygqcmVzdWx0KS5VVEY4TGVu
Z3RoOwogICAgICAgICBkYXRhLT52YWx1ZS5zID0gc3RhdGljX2Nhc3Q8Y2hhcio+KG1hbGxvYyhz
aXplb2YoY2hhcikgKiAoc3ogKyAxKSkpOwogICAgICAgICBpZiAoIWRhdGEtPnZhbHVlLnMpCi0g
ICAgICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgbWVtY3B5KGRhdGEtPnZhbHVlLnMsIE5QVkFSSUFOVF9UT19TVFJJTkcoKnJlc3Vs
dCkuVVRGOENoYXJhY3RlcnMsIHN6KTsKICAgICAgICAgZGF0YS0+dmFsdWUuc1tzel0gPSAnXDAn
OwogICAgICAgICBkYXRhLT50eXBlID0gRVdLX0pTX1ZBUklBTlRfU1RSSU5HOwpAQCAtNTE5LDEw
ICs1MTksMTAgQEAgc3RhdGljIEVpbmFfQm9vbCBld2tfanNfbnB2YXJpYW50X3RvX3ZhcmlhbnQo
RXdrX0pTX1ZhcmlhbnQqIGRhdGEsIGNvbnN0IE5QVmFyaWEKICAgICAgICAgZGF0YS0+dmFsdWUu
byA9IGV3a19qc19ucG9iamVjdF90b19vYmplY3QoTlBWQVJJQU5UX1RPX09CSkVDVCgqcmVzdWx0
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBFSU5BX0ZB
TFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJuIEVJTkFfVFJV
RTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRXdrX0pTX09iamVjdCogZXdrX2pzX29iamVjdF9u
ZXcoY29uc3QgRXdrX0pTX0NsYXNzX01ldGEqIGpzTWV0YUNsYXNzKQpAQCAtNjI5LDE4ICs2Mjks
MTggQEAgRWluYV9Cb29sIGV3a19qc19vYmplY3RfaW52b2tlKEV3a19KU19PYmplY3QqIGpzT2Jq
ZWN0LCBFd2tfSlNfVmFyaWFudCogYXJncywgaW4KIHsKICAgICBOUFZhcmlhbnQqIG5wX2FyZ3M7
CiAgICAgTlBWYXJpYW50IG5wX3Jlc3VsdDsKLSAgICBib29sIGZhaWwgPSBFSU5BX0ZBTFNFOwor
ICAgIGJvb2wgZmFpbCA9IGZhbHNlOwogCi0gICAgRUlOQV9NQUdJQ19DSEVDS19PUl9SRVRVUk4o
anNPYmplY3QsIEVJTkFfRkFMU0UpOworICAgIEVJTkFfTUFHSUNfQ0hFQ0tfT1JfUkVUVVJOKGpz
T2JqZWN0LCBmYWxzZSk7CiAgICAgaWYgKGV3a19qc19vYmplY3RfdHlwZV9nZXQoanNPYmplY3Qp
ICE9IEVXS19KU19PQkpFQ1RfRlVOQ1RJT04pCi0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGFyZ0NvdW50KQotICAgICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoYXJncywgRUlOQV9GQUxTRSk7CisgICAgICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChhcmdzLCBmYWxzZSk7CiAKICAgICBucF9hcmdzID0g
c3RhdGljX2Nhc3Q8TlBWYXJpYW50Kj4obWFsbG9jKHNpemVvZihOUFZhcmlhbnQpICAqYXJnQ291
bnQpKTsKICAgICBpZiAoIW5wX2FyZ3MpIHsKICAgICAgICAgRVJSKCJDb3VsZCBub3QgYWxsb2Nh
dGUgbWVtb3J5IHRvIG1ldGhvZCBhcmd1bWVudHMiKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFM
U0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBmb3IgKGludCBpID0gMDsg
aSA8IGFyZ0NvdW50OyBpKyspCkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBld2tfanNfb2JqZWN0
X2ZyZWUoRXdrX0pTX09iamVjdCoganNPYmplY3QpCiAKIEVpbmFfQm9vbCBld2tfanNfb2JqZWN0
X2ludm9rZShFd2tfSlNfT2JqZWN0KiBqc09iamVjdCwgRXdrX0pTX1ZhcmlhbnQqIGFyZ3MsIGlu
dCBhcmdDb3VudCwgRXdrX0pTX1ZhcmlhbnQqIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gRUlOQV9G
QUxTRTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIEV3a19KU19PYmplY3RfVHlwZSBld2tfanNf
b2JqZWN0X3R5cGVfZ2V0KEV3a19KU19PYmplY3QqIGpzT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19tYWluLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfbWFpbi5jcHAKaW5kZXggYzUyYzAyYjA5ZjkxNTM2YTMyMjgxODg2ZGViM2ZiYjM1YmUwM2Vi
MC4uYjFmMjEyOTRkOTgwMGQ3MzQ2MzAwMzEwMzE1MDBiZjRlMGIyMWQ2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19tYWluLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX21haW4uY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgRWluYV9Cb29sIF9ld2tfaW5p
dF9ib2R5KHZvaWQpCiAgICAgICAgIC8vIEV4aXQgbm93IC0gb3RoZXJ3aXNlIHlvdSBtYXkgaGF2
ZSBzb21lIGNyYXNoIGxhdGVyCiAgICAgICAgIGludCBlcnJub3dhcyA9IGVycm5vOwogICAgICAg
ICBDUklUSUNBTCgiQ2FuJ3QgYWNjZXNzIEhPTUUgZGlyIChvciAvdG1wKSAtIG5vIHBsYWNlIHRv
IHNhdmUgZGF0YWJhc2VzOiAlcyIsIHN0cmVycm9yKGVycm5vd2FzKSk7Ci0gICAgICAgIHJldHVy
biBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgV1RGOjpT
dHJpbmcgd2Via2l0RGlyZWN0b3J5ID0gaG9tZSArICIvLndlYmtpdCI7CkBAIC0xOTcsNSArMTk3
LDUgQEAgRWluYV9Cb29sIF9ld2tfaW5pdF9ib2R5KHZvaWQpCiAgICAgfQogI2VuZGlmCiAKLSAg
ICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19uZXR3b3JrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfbmV0d29yay5jcHAKaW5kZXggMjZkNTJjYmFhNTQ4ZDcyMmYxMWQ1NTIyOWQzZGJlNjdh
MjU3MDJmYy4uZmFmZWYwOTZjMjg3ZDk2ZTQyOGU2ODg2NzlhODQwN2EyMTlmN2I1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19uZXR3b3JrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX25ldHdvcmsuY3BwCkBAIC02Myw3ICs2Myw3IEBAIGNvbnN0IGNo
YXIqIGV3a19uZXR3b3JrX3Byb3h5X3VyaV9nZXQodm9pZCkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCi0gICAgV1RGOjpTdHJpbmcgcHJveHkgPSBzb3VwX3VyaV90b19zdHJpbmcodXJpLCBF
SU5BX0ZBTFNFKTsKKyAgICBXVEY6OlN0cmluZyBwcm94eSA9IHNvdXBfdXJpX3RvX3N0cmluZyh1
cmksIGZhbHNlKTsKICAgICByZXR1cm4gZWluYV9zdHJpbmdzaGFyZV9hZGQocHJveHkudXRmOCgp
LmRhdGEoKSk7CiAjZWxpZiBVU0UoQ1VSTCkKICAgICBFSU5BX1NBRkVUWV9PTl9UUlVFX1JFVFVS
Tl9WQUwoMSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCmluZGV4IGE5MmFiN2Ex
YzFjZTk4MzJjNzc3MWNhNzdkZjJjODczY2Y5MWM5NzQuLmYxMjgyNTU1YjNjNTBjYTU4ZjQ4MzE3
NmQ0M2U5NTg5ZDM1NmY4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
cHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCkBAIC04
OCw3ICs4OCw3IEBAIEV2YXNfT2JqZWN0KiBraXRGcmFtZShjb25zdCBXZWJDb3JlOjpGcmFtZSog
Y29yZUZyYW1lKTsKIH0gLy8gbmFtZXNwYWNlIEVXS1ByaXZhdGUKIAogdm9pZCBld2tfdmlld19y
ZWFkeShFdmFzX09iamVjdCogbyk7Ci12b2lkIGV3a192aWV3X2lucHV0X21ldGhvZF9zdGF0ZV9z
ZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBhY3RpdmUpOwordm9pZCBld2tfdmlld19pbnB1
dF9tZXRob2Rfc3RhdGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBib29sIGFjdGl2ZSk7CiB2b2lkIGV3
a192aWV3X3RpdGxlX3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogdGl0bGUpOwogdm9p
ZCBld2tfdmlld191cmlfY2hhbmdlZChFdmFzX09iamVjdCogbyk7CiB2b2lkIGV3a192aWV3X2xv
YWRfZG9jdW1lbnRfZmluaXNoZWQoRXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiBmcmFtZSk7
CkBAIC0xMDIsMzkgKzEwMiwzOSBAQCB2b2lkIGV3a192aWV3X2xvYWRfZXJyb3IoRXZhc19PYmpl
Y3QqIG8sIGNvbnN0IEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJvcik7CiB2b2lkIGV3a192aWV3
X2xvYWRfcHJvZ3Jlc3NfY2hhbmdlZChFdmFzX09iamVjdCogbyk7CiB2b2lkIGV3a192aWV3X2xv
YWRfc2hvdyhFdmFzX09iamVjdCogbyk7CiB2b2lkIGV3a192aWV3X3Jlc3RvcmVfc3RhdGUoRXZh
c19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiBmcmFtZSk7Ci1FdmFzX09iamVjdCogZXdrX3ZpZXdf
d2luZG93X2NyZWF0ZShFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGphdmFzY3JpcHQsIGNvbnN0
IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzKiBjb3JlRmVhdHVyZXMpOworRXZhc19PYmplY3QqIGV3
a192aWV3X3dpbmRvd19jcmVhdGUoRXZhc19PYmplY3QqIG8sIGJvb2wgamF2YXNjcmlwdCwgY29u
c3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMqIGNvcmVGZWF0dXJlcyk7CiB2b2lkIGV3a192aWV3
X3dpbmRvd19jbG9zZShFdmFzX09iamVjdCogbyk7CiAKIHZvaWQgZXdrX3ZpZXdfbW91c2VfbGlu
a19ob3Zlcl9pbihFdmFzX09iamVjdCogbywgdm9pZCogZGF0YSk7CiB2b2lkIGV3a192aWV3X21v
dXNlX2xpbmtfaG92ZXJfb3V0KEV2YXNfT2JqZWN0KiBvKTsKIAotdm9pZCBld2tfdmlld190b29s
YmFyc192aXNpYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHZpc2libGUpOwotdm9p
ZCBld2tfdmlld190b29sYmFyc192aXNpYmxlX2dldChFdmFzX09iamVjdCogbywgRWluYV9Cb29s
KiB2aXNpYmxlKTsKK3ZvaWQgZXdrX3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9zZXQoRXZhc19PYmpl
Y3QqIG8sIGJvb2wgdmlzaWJsZSk7Cit2b2lkIGV3a192aWV3X3Rvb2xiYXJzX3Zpc2libGVfZ2V0
KEV2YXNfT2JqZWN0KiBvLCBib29sKiB2aXNpYmxlKTsKIAotdm9pZCBld2tfdmlld19zdGF0dXNi
YXJfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCB2aXNpYmxlKTsKLXZvaWQg
ZXdrX3ZpZXdfc3RhdHVzYmFyX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wq
IHZpc2libGUpOwordm9pZCBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJsZV9zZXQoRXZhc19PYmpl
Y3QqIG8sIGJvb2wgdmlzaWJsZSk7Cit2b2lkIGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX2dl
dChFdmFzX09iamVjdCogbywgYm9vbCogdmlzaWJsZSk7CiB2b2lkIGV3a192aWV3X3N0YXR1c2Jh
cl90ZXh0X3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogdGV4dCk7CiAKLXZvaWQgZXdr
X3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHZp
c2libGUpOwotdm9pZCBld2tfdmlld19zY3JvbGxiYXJzX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0
KiBvLCBFaW5hX0Jvb2wqIHZpc2libGUpOwordm9pZCBld2tfdmlld19zY3JvbGxiYXJzX3Zpc2li
bGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBib29sIHZpc2libGUpOwordm9pZCBld2tfdmlld19zY3Jv
bGxiYXJzX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0KiBvLCBib29sKiB2aXNpYmxlKTsKIAotdm9p
ZCBld2tfdmlld19tZW51YmFyX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wg
dmlzaWJsZSk7Ci12b2lkIGV3a192aWV3X21lbnViYXJfdmlzaWJsZV9nZXQoRXZhc19PYmplY3Qq
IG8sIEVpbmFfQm9vbCogdmlzaWJsZSk7Cit2b2lkIGV3a192aWV3X21lbnViYXJfdmlzaWJsZV9z
ZXQoRXZhc19PYmplY3QqIG8sIGJvb2wgdmlzaWJsZSk7Cit2b2lkIGV3a192aWV3X21lbnViYXJf
dmlzaWJsZV9nZXQoRXZhc19PYmplY3QqIG8sIGJvb2wqIHZpc2libGUpOwogCiB2b2lkIGV3a192
aWV3X3Rvb2x0aXBfdGV4dF9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHRleHQpOwog
CiB2b2lkIGV3a192aWV3X2FkZF9jb25zb2xlX21lc3NhZ2UoRXZhc19PYmplY3QqIG8sIGNvbnN0
IGNoYXIqIG1lc3NhZ2UsIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLCBjb25zdCBjaGFyKiBzb3Vy
Y2VJRCk7CiAKIHZvaWQgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfYWxlcnQoRXZhc19PYmplY3Qq
IG8sIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciogbWVzc2FnZSk7Ci1FaW5hX0Jvb2wg
ZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfY29uZmlybShFdmFzX09iamVjdCogbywgRXZhc19PYmpl
Y3QqIGZyYW1lLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKLUVpbmFfQm9vbCBld2tfdmlld19ydW5f
amF2YXNjcmlwdF9wcm9tcHQoRXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29u
c3QgY2hhciogbWVzc2FnZSwgY29uc3QgY2hhciogZGVmYXVsdFZhbHVlLCBjaGFyKiogdmFsdWUp
OwotRWluYV9Cb29sIGV3a192aWV3X3Nob3VsZF9pbnRlcnJ1cHRfamF2YXNjcmlwdChFdmFzX09i
amVjdCogbyk7Citib29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0oRXZhc19PYmpl
Y3QqIG8sIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciogbWVzc2FnZSk7Citib29sIGV3
a192aWV3X3J1bl9qYXZhc2NyaXB0X3Byb21wdChFdmFzX09iamVjdCogbywgRXZhc19PYmplY3Qq
IGZyYW1lLCBjb25zdCBjaGFyKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBkZWZhdWx0VmFsdWUsIGNo
YXIqKiB2YWx1ZSk7Citib29sIGV3a192aWV3X3Nob3VsZF9pbnRlcnJ1cHRfamF2YXNjcmlwdChF
dmFzX09iamVjdCogbyk7CiB1aW50NjRfdCBld2tfdmlld19leGNlZWRlZF9kYXRhYmFzZV9xdW90
YShFdmFzX09iamVjdCogbywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBkYXRhYmFz
ZU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRfc2l6ZSwgdWludDY0X3QgZXhwZWN0ZWRfc2l6ZSk7CiAK
LUVpbmFfQm9vbCBld2tfdmlld19ydW5fb3Blbl9wYW5lbChFdmFzX09iamVjdCogZXdrVmlldywg
RXZhc19PYmplY3QqIGZyYW1lLCBib29sIGFsbG93c011bHRpcGxlRmlsZXMsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBhY2NlcHRNSU1FVHlwZXMsIEVpbmFfTGlzdCoqIHNlbGVjdGVkRmlsZW5hbWVz
KTsKK2Jvb2wgZXdrX3ZpZXdfcnVuX29wZW5fcGFuZWwoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2
YXNfT2JqZWN0KiBmcmFtZSwgYm9vbCBhbGxvd3NNdWx0aXBsZUZpbGVzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYWNjZXB0TUlNRVR5cGVzLCBFaW5hX0xpc3QqKiBzZWxlY3RlZEZpbGVuYW1lcyk7
CiAKIHZvaWQgZXdrX3ZpZXdfcmVwYWludChFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB4LCBF
dmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKTsKLXZvaWQgZXdrX3ZpZXdf
c2Nyb2xsKEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIGR4LCBFdmFzX0Nvb3JkIGR5LCBFdmFz
X0Nvb3JkIHN4LCBFdmFzX0Nvb3JkIHN5LCBFdmFzX0Nvb3JkIHN3LCBFdmFzX0Nvb3JkIHNoLCBF
dmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5LCBFdmFzX0Nvb3JkIGN3LCBFdmFzX0Nvb3JkIGNo
LCBFaW5hX0Jvb2wgbWFpbl9mcmFtZSk7Cit2b2lkIGV3a192aWV3X3Njcm9sbChFdmFzX09iamVj
dCogbywgRXZhc19Db29yZCBkeCwgRXZhc19Db29yZCBkeSwgRXZhc19Db29yZCBzeCwgRXZhc19D
b29yZCBzeSwgRXZhc19Db29yZCBzdywgRXZhc19Db29yZCBzaCwgRXZhc19Db29yZCBjeCwgRXZh
c19Db29yZCBjeSwgRXZhc19Db29yZCBjdywgRXZhc19Db29yZCBjaCwgYm9vbCBtYWluX2ZyYW1l
KTsKIFdlYkNvcmU6OlBhZ2UqIGV3a192aWV3X2NvcmVfcGFnZV9nZXQoY29uc3QgRXZhc19PYmpl
Y3QqIG8pOwogCiBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGV3a192aWV3X2ZyYW1l
X2NyZWF0ZShFdmFzX09iamVjdCogbywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBXVEY6OlN0
cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQs
IGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyKTsK
QEAgLTE2MCw3ICsxNjAsNyBAQCBpbnQgZXdrX3V0aWxfZHBpX2dldCgpOwogCiAjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKIHZvaWQgZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVudHNfc2V0KEV2YXNf
T2JqZWN0KiwgYm9vbCBuZWVkZWQpOwotRWluYV9Cb29sIGV3a192aWV3X25lZWRfdG91Y2hfZXZl
bnRzX2dldChjb25zdCBFdmFzX09iamVjdCopOworYm9vbCBld2tfdmlld19uZWVkX3RvdWNoX2V2
ZW50c19nZXQoY29uc3QgRXZhc19PYmplY3QqKTsKICNlbmRpZgogCiBFd2tfSGlzdG9yeV9JdGVt
ICpld2tfaGlzdG9yeV9pdGVtX25ld19mcm9tX2NvcmUoV2ViQ29yZTo6SGlzdG9yeUl0ZW0gKmNv
cmUpOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgZXdrX2hpc3RvcnlfZnJlZShFd2tfSGlzdG9y
eSogaGlzdG9yeSk7CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIEV3a19Db250ZXh0X01l
bnUqIGV3a19jb250ZXh0X21lbnVfbmV3KEV2YXNfT2JqZWN0KiB2aWV3LCBXZWJDb3JlOjpDb250
ZXh0TWVudUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpOwotRWluYV9Cb29sIGV3a19jb250ZXh0X21l
bnVfZnJlZShFd2tfQ29udGV4dF9NZW51KiBvKTsKK2Jvb2wgZXdrX2NvbnRleHRfbWVudV9mcmVl
KEV3a19Db250ZXh0X01lbnUqIG8pOwogdm9pZCBld2tfY29udGV4dF9tZW51X2l0ZW1fYXBwZW5k
KEV3a19Db250ZXh0X01lbnUqIG8sIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSYgY29yZSk7CiBF
d2tfQ29udGV4dF9NZW51KiBld2tfY29udGV4dF9tZW51X2N1c3RvbWl6ZShFd2tfQ29udGV4dF9N
ZW51KiBvKTsKIHZvaWQgZXdrX2NvbnRleHRfbWVudV9zaG93KEV3a19Db250ZXh0X01lbnUqIG8p
OwpAQCAtMTg1LDggKzE4NSw4IEBAIHZvaWQgZXdrX3ZpZXdfbGF5b3V0X2lmX25lZWRlZF9yZWN1
cnNpdmUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KTsKIEV3a19XaW5kb3dfRmVhdHVyZXMq
IGV3a193aW5kb3dfZmVhdHVyZXNfbmV3X2Zyb21fY29yZShjb25zdCBXZWJDb3JlOjpXaW5kb3dG
ZWF0dXJlcyogY29yZSk7CiAKIEV2YXNfT2JqZWN0KiBld2tfZnJhbWVfYWRkKEV2YXMqIGUpOwot
RWluYV9Cb29sIGV3a19mcmFtZV9pbml0KEV2YXNfT2JqZWN0KiBvLCBFdmFzX09iamVjdCogdmll
dywgV2ViQ29yZTo6RnJhbWUqIGZyYW1lKTsKLUVpbmFfQm9vbCBld2tfZnJhbWVfY2hpbGRfYWRk
KEV2YXNfT2JqZWN0KiBvLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNoaWxkLCBj
b25zdCBXVEY6OlN0cmluZyYgbmFtZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBX
VEY6OlN0cmluZyYgcmVmZXJyZXIpOworYm9vbCBld2tfZnJhbWVfaW5pdChFdmFzX09iamVjdCog
bywgRXZhc19PYmplY3QqIHZpZXcsIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSk7Citib29sIGV3a19m
cmFtZV9jaGlsZF9hZGQoRXZhc19PYmplY3QqIG8sIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpG
cmFtZT4gY2hpbGQsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlcik7CiB2b2lkIGV3a19mcmFtZV92aWV3
X3NldChFdmFzX09iamVjdCogbywgRXZhc19PYmplY3QqIG5ld1BhcmVudCk7CiAKIHZvaWQgZXdr
X2ZyYW1lX2NvcmVfZ29uZShFdmFzX09iamVjdCogbyk7CkBAIC0xOTYsOCArMTk2LDggQEAgdm9p
ZCBld2tfZnJhbWVfbG9hZF9wcm92aXNpb25hbChFdmFzX09iamVjdCogbyk7CiB2b2lkIGV3a19m
cmFtZV9sb2FkX2ZpcnN0bGF5b3V0X2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBvKTsKIHZvaWQgZXdr
X2ZyYW1lX2xvYWRfZmlyc3RsYXlvdXRfbm9uZW1wdHlfZmluaXNoZWQoRXZhc19PYmplY3QqIG8p
Owogdm9pZCBld2tfZnJhbWVfbG9hZF9kb2N1bWVudF9maW5pc2hlZChFdmFzX09iamVjdCogbyk7
Ci12b2lkIGV3a19mcmFtZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFy
KiBlcnJvcl9kb21haW4sIGludCBlcnJvcl9jb2RlLCBFaW5hX0Jvb2wgaXNfY2FuY2VsbGF0aW9u
LCBjb25zdCBjaGFyKiBlcnJvcl9kZXNjcmlwdGlvbiwgY29uc3QgY2hhciogZmFpbGluZ191cmwp
Owotdm9pZCBld2tfZnJhbWVfbG9hZF9lcnJvcihFdmFzX09iamVjdCogbywgY29uc3QgY2hhciog
ZXJyb3JfZG9tYWluLCBpbnQgZXJyb3JfY29kZSwgRWluYV9Cb29sIGlzX2NhbmNlbGxhdGlvbiwg
Y29uc3QgY2hhciogZXJyb3JfZGVzY3JpcHRpb24sIGNvbnN0IGNoYXIqIGZhaWxpbmdfdXJsKTsK
K3ZvaWQgZXdrX2ZyYW1lX2xvYWRfZmluaXNoZWQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIq
IGVycm9yX2RvbWFpbiwgaW50IGVycm9yX2NvZGUsIGJvb2wgaXNfY2FuY2VsbGF0aW9uLCBjb25z
dCBjaGFyKiBlcnJvcl9kZXNjcmlwdGlvbiwgY29uc3QgY2hhciogZmFpbGluZ191cmwpOwordm9p
ZCBld2tfZnJhbWVfbG9hZF9lcnJvcihFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogZXJyb3Jf
ZG9tYWluLCBpbnQgZXJyb3JfY29kZSwgYm9vbCBpc19jYW5jZWxsYXRpb24sIGNvbnN0IGNoYXIq
IGVycm9yX2Rlc2NyaXB0aW9uLCBjb25zdCBjaGFyKiBmYWlsaW5nX3VybCk7CiB2b2lkIGV3a19m
cmFtZV9sb2FkX3Byb2dyZXNzX2NoYW5nZWQoRXZhc19PYmplY3QqIG8pOwogCiB2b2lkIGV3a19m
cmFtZV9yZXF1ZXN0X3dpbGxfc2VuZChFdmFzX09iamVjdCogbywgRXdrX0ZyYW1lX1Jlc291cmNl
X1JlcXVlc3QqIHJlcXVlc3QpOwpAQCAtMjEwLDEyICsyMTAsMTIgQEAgdm9pZCBld2tfZnJhbWVf
Y29udGVudHNfc2l6ZV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHcsIEV2YXNf
Q29vcmQgaCkKIHZvaWQgZXdrX2ZyYW1lX3RpdGxlX3NldChFdmFzX09iamVjdCogbywgY29uc3Qg
Y2hhciogdGl0bGUpOwogCiB2b2lkIGV3a19mcmFtZV92aWV3X2NyZWF0ZV9mb3JfdmlldyhFdmFz
X09iamVjdCogbywgRXZhc19PYmplY3QqIHZpZXcpOwotRWluYV9Cb29sIGV3a19mcmFtZV91cmlf
Y2hhbmdlZChFdmFzX09iamVjdCogbyk7Citib29sIGV3a19mcmFtZV91cmlfY2hhbmdlZChFdmFz
X09iamVjdCogbyk7CiB2b2lkIGV3a19mcmFtZV9mb3JjZV9sYXlvdXQoRXZhc19PYmplY3QqIG8p
OwogCiBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tfZnJhbWVfcGx1Z2luX2Ny
ZWF0ZShFdmFzX09iamVjdCogbywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwg
V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwm
IHVybCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBX
VEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBXVEY6OlN0cmluZyYg
bWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsKIAotRWluYV9Cb29sIGV3a192aWV3X25hdmln
YXRpb25fcG9saWN5X2RlY2lzaW9uKEV2YXNfT2JqZWN0KiBvLCBFd2tfRnJhbWVfUmVzb3VyY2Vf
UmVxdWVzdCogcmVxdWVzdCk7Citib29sIGV3a192aWV3X25hdmlnYXRpb25fcG9saWN5X2RlY2lz
aW9uKEV2YXNfT2JqZWN0KiBvLCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCogcmVxdWVzdCk7
CiAKIHZvaWQgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBvLCBF
dmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3Byb3RvY29sX2hhbmRsZXIuY3BwCmluZGV4IGRlYjg3MzRjYTBhM2NjMThhMmRmZTk0ZTM3
M2YyZWYwZTYwOWJlMGYuLmQ1ZWNhYjU0M2UwMjliMTQyMzVhY2QyZTU3YTBlODBmMDA1NjcyZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyLmNwcApA
QCAtMzAsNyArMzAsNyBAQCBFaW5hX0Jvb2wgZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX3Nl
dChjb25zdCBjaGFyKiogcHJvdG9jb2xzKQogICAgIHJldHVybiBld2tfY3VzdG9tX3Byb3RvY29s
X2hhbmRsZXJfc291cF9zZXQocHJvdG9jb2xzKTsKICNlbHNlCiAgICAgRUlOQV9MT0dfQ1JJVCgi
Tm90IGltcGxlbWVudGVkIik7Ci0gICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgcmV0dXJuIGZh
bHNlOwogI2VuZGlmCiB9CiAKQEAgLTQwLDYgKzQwLDYgQEAgRWluYV9Cb29sIGV3a19jdXN0b21f
cHJvdG9jb2xfaGFuZGxlcl9hbGxfdW5zZXQoKQogICAgIHJldHVybiBld2tfY3VzdG9tX3Byb3Rv
Y29sX2hhbmRsZXJfc291cF9hbGxfdW5zZXQoKTsKICNlbHNlCiAgICAgRUlOQV9MT0dfQ1JJVCgi
Tm90IGltcGxlbWVudGVkIik7Ci0gICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgcmV0dXJuIGZh
bHNlOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3By
b3RvY29sX2hhbmRsZXJfc291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Byb3Rv
Y29sX2hhbmRsZXJfc291cC5jcHAKaW5kZXggOWQ1OWZkYzk3NjRlZWZjYjU2YzJkN2YzZTZiOGFj
N2IzZDM0MGFmMi4uMDUyMzgwOTcyM2Y2MDVjZjBkZmU4OGFkZmQxMTdjZGEyN2ViZDU0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyX3NvdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxlcl9zb3Vw
LmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIEVpbmFfQm9vbCBld2tfY3VzdG9tX3Byb3RvY29sX2hh
bmRsZXJfc291cF9zZXQoY29uc3QgY2hhcioqIHByb3RvY29scykKICAgICBwcm90b2NvbHNTaXpl
ID0gZ19zdHJ2X2xlbmd0aChjb25zdF9jYXN0PGdjaGFyKio+KHByb3RvY29scykpOwogCiAgICAg
Ly8gVGhpcyBhcnJheSBtdXN0IGJlIG51bGwgdGVybWluYXRlZC4KLSAgICBFSU5BX1NBRkVUWV9P
Tl9UUlVFX1JFVFVSTl9WQUwoIXByb3RvY29sc1NpemUgfHwgcHJvdG9jb2xzW3Byb3RvY29sc1Np
emVdLCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9UUlVFX1JFVFVSTl9WQUwoIXBy
b3RvY29sc1NpemUgfHwgcHJvdG9jb2xzW3Byb3RvY29sc1NpemVdLCBmYWxzZSk7CiAKICAgICBy
ZXF1ZXN0ZXIgPSBzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9UWVBFX1JF
UVVFU1RFUik7CiAgICAgaWYgKCFyZXF1ZXN0ZXIpIHsKQEAgLTE1OSwxNSArMTU5LDE1IEBAIEVp
bmFfQm9vbCBld2tfY3VzdG9tX3Byb3RvY29sX2hhbmRsZXJfc291cF9zZXQoY29uc3QgY2hhcioq
IHByb3RvY29scykKIAogICAgIGlmIChzb3VwX3Nlc3Npb25fZmVhdHVyZV9oYXNfZmVhdHVyZShy
ZXF1ZXN0ZXIsIEVXS19UWVBFX0NVU1RPTV9QUk9UT0NPTF9IQU5ETEVSKSkgewogICAgICAgICBj
dXN0b21Qcm90b2NvbEFkZGVkQ291bnQrKzsKLSAgICAgICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgc2NoZW1lcyA9IGdfc3RyZHVwdihjb25z
dF9jYXN0PGdjaGFyKio+KHByb3RvY29scykpOwogICAgIGlmICghKHNjaGVtZXMgJiYgc291cF9z
ZXNzaW9uX2ZlYXR1cmVfYWRkX2ZlYXR1cmUocmVxdWVzdGVyLCBFV0tfVFlQRV9DVVNUT01fUFJP
VE9DT0xfSEFORExFUikpKQotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgY3VzdG9tUHJvdG9jb2xBZGRlZENvdW50Kys7Ci0gICAgcmV0dXJu
IEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3a19jdXN0b21f
cHJvdG9jb2xfaGFuZGxlcl9zb3VwX2FsbF91bnNldCgpCkBAIC0xNzYsMjIgKzE3NiwyMiBAQCBF
aW5hX0Jvb2wgZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX3NvdXBfYWxsX3Vuc2V0KCkKICAg
ICBTb3VwU2Vzc2lvbkZlYXR1cmUqIHJlcXVlc3RlcjsKIAogICAgIGlmICghY3VzdG9tUHJvdG9j
b2xBZGRlZENvdW50KQotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgcmVxdWVzdGVyID0gc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Np
b24sIFNPVVBfVFlQRV9SRVFVRVNURVIpOwogICAgIGlmICghcmVxdWVzdGVyKQotICAgICAgICBy
ZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFzb3Vw
X3Nlc3Npb25fZmVhdHVyZV9oYXNfZmVhdHVyZShyZXF1ZXN0ZXIsIEVXS19UWVBFX0NVU1RPTV9Q
Uk9UT0NPTF9IQU5ETEVSKSkKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGlmIChjdXN0b21Qcm90b2NvbEFkZGVkQ291bnQgPT0gMSkgewog
ICAgICAgICBpZiAoc291cF9zZXNzaW9uX2ZlYXR1cmVfcmVtb3ZlX2ZlYXR1cmUocmVxdWVzdGVy
LCBFV0tfVFlQRV9DVVNUT01fUFJPVE9DT0xfSEFORExFUikpCiAgICAgICAgICAgICBnX3N0cmZy
ZWV2KHNjaGVtZXMpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gRUlOQV9GQUxT
RTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBjdXN0b21Qcm90b2Nv
bEFkZGVkQ291bnQtLTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NldHRpbmdzLmNwcAppbmRleCA2NGYxNGY4NTRjM2Q3
MGEzYmRhODBiYjE2NGM4NmNkMTFjZTZmMGUwLi41NGQ3YzcyMjFlMDNiOWZjMjBlYzA5YTM0Zjgw
NGY3ZGE2ZTU5OWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NldHRp
bmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NldHRpbmdzLmNwcApAQCAt
MTE2LDI1ICsxMTYsMjUgQEAgRWluYV9Cb29sIGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX3Bh
dGhfc2V0KGNvbnN0IGNoYXIqIGRpcmVjdG9yeSkKICAgICBpZiAoZGlyZWN0b3J5KSB7CiAgICAg
ICAgIGlmIChXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5pc0VuYWJsZWQoKSkgewogICAgICAgICAg
ICAgRVJSKCJJY29uRGF0YWJhc2UgaXMgYWxyZWFkeSBvcGVuOiAlcyIsIF9ld2tfaWNvbl9kYXRh
YmFzZV9wYXRoKTsKLSAgICAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgc3RydWN0IHN0YXQgc3Q7CiAKICAg
ICAgICAgaWYgKHN0YXQoZGlyZWN0b3J5LCAmc3QpKSB7CiAgICAgICAgICAgICBFUlIoImNvdWxk
IG5vdCBzdGF0KCVzKTogJXMiLCBkaXJlY3RvcnksIHN0cmVycm9yKGVycm5vKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmICghU19JU0RJUihzdC5zdF9tb2RlKSkgewogICAgICAgICAgICAg
RVJSKCJub3QgYSBkaXJlY3Rvcnk6ICVzIiwgZGlyZWN0b3J5KTsKLSAgICAgICAgICAgIHJldHVy
biBFSU5BX0ZBTFNFOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKGFjY2VzcyhkaXJlY3RvcnksIFJfT0sgfCBXX09LKSkgewogICAgICAgICAgICAg
RVJSKCJjb3VsZCBub3QgYWNjZXNzIGRpcmVjdG9yeSAnJXMnIGZvciByZWFkIGFuZCB3cml0ZTog
JXMiLAogICAgICAgICAgICAgICAgIGRpcmVjdG9yeSwgc3RyZXJyb3IoZXJybm8pKTsKLSAgICAg
ICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAKICAgICAgICAgV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuc2V0RW5hYmxlZCh0cnVl
KTsKQEAgLTE1MSw3ICsxNTEsNyBAQCBFaW5hX0Jvb2wgZXdrX3NldHRpbmdzX2ljb25fZGF0YWJh
c2VfcGF0aF9zZXQoY29uc3QgY2hhciogZGlyZWN0b3J5KQogICAgICAgICAgICAgX2V3a19pY29u
X2RhdGFiYXNlX3BhdGggPSAwOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBFSU5BX1RS
VUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGNvbnN0IGNoYXIqIGV3a19zZXR0aW5nc19pY29u
X2RhdGFiYXNlX3BhdGhfZ2V0KHZvaWQpCkBAIC0xNjcsMTIgKzE2NywxMiBAQCBjb25zdCBjaGFy
KiBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9wYXRoX2dldCh2b2lkKQogRWluYV9Cb29sIGV3
a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX2NsZWFyKHZvaWQpCiB7CiAgICAgaWYgKCFXZWJDb3Jl
OjppY29uRGF0YWJhc2UoKS5pc0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIVdlYkNvcmU6Omljb25EYXRhYmFzZSgp
LmlzT3BlbigpKQotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkucmVtb3ZlQWxsSWNvbnMoKTsKLSAg
ICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBjYWlyb19zdXJmYWNl
X3QqIGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX2ljb25fc3VyZmFjZV9nZXQoY29uc3QgY2hh
ciogdXJsKQpAQCAtMjU0LDE0ICsyNTQsMTQgQEAgY29uc3QgY2hhciogZXdrX3NldHRpbmdzX2Rl
ZmF1bHRfdXNlcl9hZ2VudF9nZXQodm9pZCkKIEVpbmFfQm9vbCBld2tfc2V0dGluZ3NfY2FjaGVf
ZGlyZWN0b3J5X3BhdGhfc2V0KGNvbnN0IGNoYXIqIHBhdGgpCiB7CiAgICAgaWYgKCFwYXRoKQot
ICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
V2ViQ29yZTo6Y2FjaGVTdG9yYWdlKCkuc2V0Q2FjaGVEaXJlY3RvcnkoV1RGOjpTdHJpbmc6OmZy
b21VVEY4KHBhdGgpKTsKICAgICBpZiAoIV9ld2tfY2FjaGVfZGlyZWN0b3J5X3BhdGgpCiAgICAg
ICAgIF9ld2tfY2FjaGVfZGlyZWN0b3J5X3BhdGggPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChwYXRo
KTsKICAgICBlbHNlCiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmX2V3a19jYWNo
ZV9kaXJlY3RvcnlfcGF0aCwgcGF0aCk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogY29uc3QgY2hhciogZXdrX3NldHRpbmdzX2NhY2hlX2RpcmVjdG9yeV9w
YXRoX2dldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5n
X3N0b3JlLmNwcAppbmRleCBlMzY1MTFjMTZiNjJjODQ1M2JiMDg2NGExMTJmMDY5ZjE5ZGJjNTU1
Li5iZGYwMWFlYjZiNGZjNGQ4MjZjMzYzZjEzMzU2YTcwZGQwYmU0ZjhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHAKQEAgLTI1NCw3
ICsyNTQsNyBAQCBzdGF0aWMgaW5saW5lIEVpbmFfQm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfcHJlX3JlbmRlcl9yZXF1ZXN0X2FkZChFd2tfVGlsZQogCiAgICAgcmVxdWVzdCA9IHN0YXRp
Y19jYXN0PEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX1ByZV9SZW5kZXJfUmVxdWVzdCo+KG1hbGxv
YyhzaXplb2YoKnJlcXVlc3QpKSk7CiAgICAgaWYgKCFyZXF1ZXN0KQotICAgICAgICByZXR1cm4g
RUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHByaW9yaXR5ID09
IFBSRV9SRU5ERVJfUFJJT1JJVFlfSElHSCkKICAgICAgICAgcHJpdi0+cmVuZGVyLnByZVJlbmRl
clJlcXVlc3RzID0gZWluYV9pbmxpc3RfcHJlcGVuZApAQCAtMjY3LDcgKzI2Nyw3IEBAIHN0YXRp
YyBpbmxpbmUgRWluYV9Cb29sIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3Jl
cXVlc3RfYWRkKEV3a19UaWxlCiAgICAgcmVxdWVzdC0+cm93ID0gcm93OwogICAgIHJlcXVlc3Qt
Pnpvb20gPSB6b29tOwogCi0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVu
ZGVyX3JlcXVlc3RfZGVsKEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHByaXYsIEV3a19U
aWxlZF9CYWNraW5nX1N0b3JlX1ByZV9SZW5kZXJfUmVxdWVzdCogcmVxdWVzdCkKQEAgLTM3Miwx
MCArMzcyLDEwIEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0
ZW1fcHJvY2Vzc19pZGxlcl9jYih2b2lkKiBkYXRhKQogCiAgICAgaWYgKCFwcml2LT5yZW5kZXIu
cHJlUmVuZGVyUmVxdWVzdHMpIHsKICAgICAgICAgcHJpdi0+cmVuZGVyLmlkbGVyID0gMDsKLSAg
ICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgaW5s
aW5lIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fcHJvY2Vzc19pZGxlcl9zdG9w
KEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHByaXYpCkBAIC0zOTgsMjQgKzM5OCwyNCBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fcHJvY2Vz
c19pZGxlcl9zdGFydChFd2tfVGlsZWRfQgogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfZGlzYWJsZV9yZW5kZXIoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSog
cHJpdikKIHsKICAgICBpZiAocHJpdi0+cmVuZGVyLnN1c3BlbmQpCi0gICAgICAgIHJldHVybiBF
SU5BX1RSVUU7CisgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcHJpdi0+cmVuZGVyLnN1c3Bl
bmQgPSBFSU5BX1RSVUU7CisgICAgcHJpdi0+cmVuZGVyLnN1c3BlbmQgPSB0cnVlOwogICAgIF9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX3Byb2Nlc3NfaWRsZXJfc3RvcChwcml2KTsKLSAg
ICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgRWluYV9C
b29sIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9lbmFibGVfcmVuZGVyKEV3a19UaWxlZF9CYWNr
aW5nX1N0b3JlX0RhdGEqIHByaXYpCiB7CiAgICAgaWYgKCFwcml2LT5yZW5kZXIuc3VzcGVuZCkK
LSAgICAgICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBw
cml2LT5yZW5kZXIuc3VzcGVuZCA9IEVJTkFfRkFMU0U7CisgICAgcHJpdi0+cmVuZGVyLnN1c3Bl
bmQgPSBmYWxzZTsKIAogICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9maWxsX3JlbmRlcmVy
cyhwcml2KTsKICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9wcm9jZXNzX2lkbGVy
X3N0YXJ0KHByaXYpOwogCi0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogc3RhdGljIGlubGluZSBFaW5hX0Jvb2wgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0
ZW1fZmlsbChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBwcml2LCBFd2tfVGlsZWRfQmFj
a2luZ19TdG9yZV9JdGVtKiBpdGVtLCB1bnNpZ25lZCBsb25nIGNvbHVtbiwgdW5zaWduZWQgbG9u
ZyByb3cpCkBAIC00NTMsNyArNDUzLDcgQEAgc3RhdGljIGlubGluZSBFaW5hX0Jvb2wgX2V3a190
aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fZmlsbChFd2tfVGlsZWRfQmFja2luZ19TdG8KICAgICAg
ICAgICAgIGlmICghcHJpdi0+cmVuZGVyLnN1c3BlbmQpIHsKICAgICAgICAgICAgICAgICB0aWxl
ID0gX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3RpbGVfbmV3KHByaXYsIGN1cnJlbnRDb2x1bW4s
IGN1cnJlbnRSb3csIHpvb20pOwogICAgICAgICAgICAgICAgIGlmICghdGlsZSkKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdGlsZV9h
c3NvY2lhdGUocHJpdiwgdGlsZSwgaXRlbSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxz
ZSBpZiAodGlsZSAhPSBpdGVtLT50aWxlKSB7CkBAIC00NjUsMTAgKzQ2NSwxMCBAQCBzdGF0aWMg
aW5saW5lIEVpbmFfQm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9maWxsKEV3a19U
aWxlZF9CYWNraW5nX1N0bwogCiBlbmQ6CiAKLSAgICAgICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0qIF9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX2FkZChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9E
YXRhKiBwcml2LCB1bnNpZ25lZCBsb25nIGNvbHVtbiwgdW5zaWduZWQgbG9uZyByb3cpCkBAIC01
MjQsNyArNTI0LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV9jaGFuZ2VkKEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEKICAgICBpZiAocHJpdi0+Y2hh
bmdlZC5hbnkpCiAgICAgICAgIHJldHVybjsKICAgICBldmFzX29iamVjdF9zbWFydF9jaGFuZ2Vk
KHByaXYtPnNlbGYpOwotICAgIHByaXYtPmNoYW5nZWQuYW55ID0gRUlOQV9UUlVFOworICAgIHBy
aXYtPmNoYW5nZWQuYW55ID0gdHJ1ZTsKIH0KIAogc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlX3ZpZXdfY29sc19lbmRfZGVsKEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEq
IHByaXYsIEVpbmFfSW5saXN0Kiogcm93TGlzdCwgdW5zaWduZWQgaW50IGNvdW50KQpAQCAtNTU3
LDEyICs1NTcsMTIgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
dmlld19jb2xzX2VuZF9hZGQoRXdrX1RpbGVkX0JhY2tpbmdfU3QKICAgICAgICAgaWYgKCFpdCkg
ewogICAgICAgICAgICAgQ1JJVElDQUwoImZhaWxlZCB0byBhZGQgY29sdW1uICV1IG9mICV1IGlu
IHJvdyAldS4iLCBpLCBjb3VudCwgcm93KTsKICAgICAgICAgICAgIF9ld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV92aWV3X2NvbHNfZW5kX2RlbChwcml2LCByb3dMaXN0LCBpKTsKLSAgICAgICAgICAg
IHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAKICAgICAgICAgKnJvd0xpc3QgPSBlaW5hX2lubGlzdF9hcHBlbmQoKnJvd0xpc3QsIEVJTkFf
SU5MSVNUX0dFVChpdCkpOwogICAgIH0KLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVy
biB0cnVlOwogfQogCiBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld19y
b3dfZGVsKEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHByaXYsIEVpbmFfSW5saXN0KiBy
b3cpCkBAIC02MjMsOCArNjIzLDggQEAgc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9tb2RlbF9tYXRyaXhfY3JlYXRlKEV3a19UaWxlZF9CYWNraW4KICAgICBpZiAo
cHJpdi0+bW9kZWwubWF0cml4KSB7CiAgICAgICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92
aWV3X3Jvd3NfYWxsX2RlbChwcml2KTsKIAotICAgICAgICBwcml2LT5jaGFuZ2VkLm9mZnNldCA9
IEVJTkFfRkFMU0U7Ci0gICAgICAgIHByaXYtPmNoYW5nZWQuc2l6ZSA9IEVJTkFfVFJVRTsKKyAg
ICAgICAgcHJpdi0+Y2hhbmdlZC5vZmZzZXQgPSBmYWxzZTsKKyAgICAgICAgcHJpdi0+Y2hhbmdl
ZC5zaXplID0gdHJ1ZTsKIAogICAgICAgICBld2tfdGlsZV9tYXRyaXhfZnJlZShwcml2LT5tb2Rl
bC5tYXRyaXgpOwogICAgIH0KQEAgLTY4Myw3ICs2ODMsNyBAQCBzdGF0aWMgRWluYV9Cb29sIF9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9zaWdfdXNyKHZvaWQqIGRhdGEsIGludCB0eXBlLCB2b2lk
KiBldgogCiAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfZGJnKHByaXYpOwogICAg
IF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9tZW1fZGJnKHByaXYpOwotICAgIHJldHVybiBFSU5B
X1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKIApAQCAtNzE2LDcgKzcxNiw3IEBA
IHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9hZGQoRXZhc19PYmpl
Y3QqIGV3a1RpbGUpCiAgICAgcHJpdi0+bW9kZWwub2xkLnJvd3MgPSAwOwogICAgIHByaXYtPm1v
ZGVsLndpZHRoID0gMDsKICAgICBwcml2LT5tb2RlbC5oZWlnaHQgPSAwOwotICAgIHByaXYtPnJl
bmRlci5zdXNwZW5kID0gRUlOQV9GQUxTRTsKKyAgICBwcml2LT5yZW5kZXIuc3VzcGVuZCA9IGZh
bHNlOwogICAgIHByaXYtPmNvbG9yU3BhY2UgPSBFVkFTX0NPTE9SU1BBQ0VfQVJHQjg4ODg7IC8v
IFRPRE86IGRldGVjdCBpdC4KIAogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfc2V0KGV3a1Rp
bGUsIHByaXYpOwpAQCAtNzg3LDcgKzc4Nyw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9zbWFydF9tb3ZlKEV2YXNfT2JqZWN0KiBld2tUaWxlLCBFdmFzX0Nvb3JkCiAg
ICAgaWYgKHByaXYtPnZpZXcueCA9PSB4ICYmIHByaXYtPnZpZXcueSA9PSB5KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBwcml2LT5jaGFuZ2VkLnBvc2l0aW9uID0gRUlOQV9UUlVFOworICAgIHBy
aXYtPmNoYW5nZWQucG9zaXRpb24gPSB0cnVlOwogICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV9jaGFuZ2VkKHByaXYpOwogfQogCkBAIC04MDMsNyArODAzLDcgQEAgc3RhdGljIHZvaWQgX2V3
a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X3Jlc2l6ZShFdmFzX09iamVjdCogZXdrVGlsZSwg
RXZhc19Db28KICAgICBpZiAocHJpdi0+dmlldy53aWR0aCA9PSB3aWR0aCAmJiBwcml2LT52aWV3
LmhlaWdodCA9PSBoZWlnaHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByaXYtPmNoYW5nZWQu
c2l6ZSA9IEVJTkFfVFJVRTsKKyAgICBwcml2LT5jaGFuZ2VkLnNpemUgPSB0cnVlOwogICAgIF9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9jaGFuZ2VkKHByaXYpOwogfQogCkBAIC0xMzA0LDcgKzEz
MDQsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfY2FsY3Vs
YXRlKEV2YXNfT2JqZWN0KiBld2tUaWxlKQogCiAgICAgUFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4o
ZXdrVGlsZSwgcHJpdik7CiAKLSAgICBwcml2LT5jaGFuZ2VkLmFueSA9IEVJTkFfRkFMU0U7Cisg
ICAgcHJpdi0+Y2hhbmdlZC5hbnkgPSBmYWxzZTsKIAogICAgIGV3a190aWxlX21hdHJpeF9mcmVl
emUocHJpdi0+bW9kZWwubWF0cml4KTsKIApAQCAtMTMyNywxNiArMTMyNywxNiBAQCBzdGF0aWMg
dm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2JqZWN0
KiBld2tUaWxlKQogCiAgICAgaWYgKHByaXYtPmNoYW5nZWQucG9zaXRpb24gJiYgKHByaXYtPnZp
ZXcueCAhPSB4IHx8IHByaXYtPnZpZXcueSAhPSB5KSkgewogICAgICAgICBfZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfc21hcnRfY2FsY3VsYXRlX3Bvcyhwcml2LCB4LCB5KTsKLSAgICAgICAgcHJp
di0+Y2hhbmdlZC5wb3NpdGlvbiA9IEVJTkFfRkFMU0U7CisgICAgICAgIHByaXYtPmNoYW5nZWQu
cG9zaXRpb24gPSBmYWxzZTsKICAgICB9CiAgICAgaWYgKHByaXYtPmNoYW5nZWQub2Zmc2V0KSB7
CiAgICAgICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9jYWxjdWxhdGVfb2Zmc2V0
KHByaXYsIHgsIHkpOwotICAgICAgICBwcml2LT5jaGFuZ2VkLm9mZnNldCA9IEVJTkFfRkFMU0U7
CisgICAgICAgIHByaXYtPmNoYW5nZWQub2Zmc2V0ID0gZmFsc2U7CiAgICAgfQogCiAgICAgaWYg
KHByaXYtPmNoYW5nZWQuc2l6ZSkgewogICAgICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
c21hcnRfY2FsY3VsYXRlX3NpemUocHJpdiwgd2lkdGgsIGhlaWdodCk7Ci0gICAgICAgIHByaXYt
PmNoYW5nZWQuc2l6ZSA9IEVJTkFfRkFMU0U7CisgICAgICAgIHByaXYtPmNoYW5nZWQuc2l6ZSA9
IGZhbHNlOwogICAgIH0KIAogICAgIGlmICghcHJpdi0+cmVuZGVyLnN1c3BlbmQgJiYgcHJpdi0+
Y2hhbmdlZC5tb2RlbCkgewpAQCAtMTM0OSw3ICsxMzQ5LDcgQEAgc3RhdGljIHZvaWQgX2V3a190
aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2NhbGN1bGF0ZShFdmFzX09iamVjdCogZXdrVGlsZSkK
ICAgICAgICAgZXdrX3RpbGVfbWF0cml4X3Jlc2l6ZShwcml2LT5tb2RlbC5tYXRyaXgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+bW9kZWwuY3VycmVudC5jb2x1bW5zLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPm1vZGVsLmN1cnJlbnQucm93cyk7
Ci0gICAgICAgIHByaXYtPmNoYW5nZWQubW9kZWwgPSBFSU5BX0ZBTFNFOworICAgICAgICBwcml2
LT5jaGFuZ2VkLm1vZGVsID0gZmFsc2U7CiAgICAgICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShwcml2
LT5jb250ZW50c0NsaXBwZXIsIHByaXYtPm1vZGVsLndpZHRoLCBwcml2LT5tb2RlbC5oZWlnaHQp
OwogICAgICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfY2FsY3VsYXRlX29mZnNl
dF9mb3JjZShwcml2KTsKIApAQCAtMTQzMiwyNCArMTQzMiwyNCBAQCBzdGF0aWMgRWluYV9Cb29s
IF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zY3JvbGxfZnVsbF9vZmZzZXRfc2V0X2ludGVybmFs
KEV3a19UaQogewogICAgIC8qIFRPRE86IGNoZWNrIG9mZnNldCBnbyBvdXQgb2YgYm91bmRzLCBj
bGFtcCAqLwogICAgIGlmIChwcml2LT5yZW5kZXIuZGlzYWJsZWQpCi0gICAgICAgIHJldHVybiBF
SU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBwcml2LT52aWV3Lm9mZnNl
dC5jdXIueCA9IHg7CiAgICAgcHJpdi0+dmlldy5vZmZzZXQuY3VyLnkgPSB5OwogCi0gICAgcHJp
di0+Y2hhbmdlZC5vZmZzZXQgPSBFSU5BX1RSVUU7CisgICAgcHJpdi0+Y2hhbmdlZC5vZmZzZXQg
PSB0cnVlOwogICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9jaGFuZ2VkKHByaXYpOwogCi0g
ICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3
a190aWxlZF9iYWNraW5nX3N0b3JlX3Njcm9sbF9mdWxsX29mZnNldF9zZXQoRXZhc19PYmplY3Qq
IGV3a1RpbGUsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5KQogewogICAgIERCRygiZXdrVGls
ZSVwLCB4PSVkLCB5PSVkIiwgZXdrVGlsZSwgeCwgeSk7CiAKLSAgICBQUklWX0RBVEFfR0VUX09S
X1JFVFVSTihld2tUaWxlLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBQUklWX0RBVEFfR0VUX09S
X1JFVFVSTihld2tUaWxlLCBwcml2LCBmYWxzZSk7CiAgICAgaWYgKHggPT0gcHJpdi0+dmlldy5v
ZmZzZXQuY3VyLnggJiYgeSA9PSBwcml2LT52aWV3Lm9mZnNldC5jdXIueSkKLSAgICAgICAgcmV0
dXJuIEVJTkFfVFJVRTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gX2V3a190
aWxlZF9iYWNraW5nX3N0b3JlX3Njcm9sbF9mdWxsX29mZnNldF9zZXRfaW50ZXJuYWwocHJpdiwg
eCwgeSk7CiB9CkBAIC0xNDU4LDkgKzE0NTgsOSBAQCBFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfc2Nyb2xsX2Z1bGxfb2Zmc2V0X2FkZChFdmFzX09iamVjdCogZXdrVGlsZSwgRQog
ewogICAgIERCRygiZXdrVGlsZSVwLCBkZWx0YVg9JWQsIGRlbHRhWT0lZCIsIGV3a1RpbGUsIGRl
bHRhWCwgZGVsdGFZKTsKIAotICAgIFBSSVZfREFUQV9HRVRfT1JfUkVUVVJOKGV3a1RpbGUsIHBy
aXYsIEVJTkFfRkFMU0UpOworICAgIFBSSVZfREFUQV9HRVRfT1JfUkVUVVJOKGV3a1RpbGUsIHBy
aXYsIGZhbHNlKTsKICAgICBpZiAoIWRlbHRhWCAmJiAhZGVsdGFZKQotICAgICAgICByZXR1cm4g
RUlOQV9UUlVFOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBfZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfc2Nyb2xsX2Z1bGxfb2Zmc2V0X3NldF9pbnRlcm5hbAogICAgICAgICAg
ICAgICAgKHByaXYsIHByaXYtPnZpZXcub2Zmc2V0LmN1ci54ICsgZGVsdGFYLCBwcml2LT52aWV3
Lm9mZnNldC5jdXIueSArIGRlbHRhWSk7CkBAIC0xNDc0LDcgKzE0NzQsNyBAQCBzdGF0aWMgRWlu
YV9Cb29sIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3NldF9pbnRlcm5hbChFd2tfVGls
ZWRfQmFja2luZ19TdAogICAgIGlmIChmYWJzZihwcml2LT52aWV3LnRpbGUuem9vbSAtICp6b29t
KSA8IFpPT01fU1RFUF9NSU4pIHsKICAgICAgICAgREJHKCJpZ25vcmVkIGFzIHpvb20gZGlmZmVy
ZW5jZSBpcyA8ICVmOiAlZiIsCiAgICAgICAgICAgICAoZG91YmxlKVpPT01fU1RFUF9NSU4sIGZh
YnNmKHByaXYtPnZpZXcudGlsZS56b29tIC0gKnpvb20pKTsKLSAgICAgICAgcmV0dXJuIEVJTkFf
VFJVRTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgX2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9mbHVzaChwcml2KTsKQEAgLTE0OTYsNyArMTQ5
Niw3IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fc2V0
X2ludGVybmFsKEV3a19UaWxlZF9CYWNraW5nX1N0CiAgICAgaWYgKCFwcml2LT52aWV3LndpZHRo
IHx8ICFwcml2LT52aWV3LmhlaWdodCkgewogICAgICAgICBwcml2LT52aWV3Lm9mZnNldC5iYXNl
LnggPSAwOwogICAgICAgICBwcml2LT52aWV3Lm9mZnNldC5iYXNlLnkgPSAwOwotICAgICAgICBy
ZXR1cm4gRUlOQV9UUlVFOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgRWluYV9J
bmxpc3QqKiBpdGVyYXRvciwgKippdGVyYXRvckVuZDsKICAgICBFd2tfVGlsZWRfQmFja2luZ19T
dG9yZV9JdGVtKiBpdDsKQEAgLTE1MjIsOCArMTUyMiw4IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3
a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fc2V0X2ludGVybmFsKEV3a19UaWxlZF9CYWNraW5n
X1N0CiAgICAgcHJpdi0+bW9kZWwuYmFzZS5jb2x1bW4gPSAtbmV3WCAvIHRpbGVXaWR0aDsKICAg
ICBwcml2LT5tb2RlbC5iYXNlLnJvdyA9IC1uZXdZIC8gdGlsZUhlaWdodDsKIAotICAgIHByaXYt
PmNoYW5nZWQuc2l6ZSA9IEVJTkFfVFJVRTsKLSAgICBwcml2LT5jaGFuZ2VkLm1vZGVsID0gRUlO
QV9UUlVFOworICAgIHByaXYtPmNoYW5nZWQuc2l6ZSA9IHRydWU7CisgICAgcHJpdi0+Y2hhbmdl
ZC5tb2RlbCA9IHRydWU7CiAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2NoYW5nZWQocHJp
dik7CiAKICAgICBwcml2LT52aWV3Lm9mZnNldC5jdXIueCA9IG5ld1g7CkBAIC0xNTYxLDE0ICsx
NTYxLDE0IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21f
c2V0X2ludGVybmFsKEV3a19UaWxlZF9CYWNraW5nX1N0CiAgICAgICAgIHRpbGVQb3NpdGlvblkg
Kz0gdGlsZUhlaWdodDsKICAgICB9CiAKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVy
biB0cnVlOwogfQogCiBFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV9zZXQo
RXZhc19PYmplY3QqIGV3a1RpbGUsIGZsb2F0KiB6b29tLCBFdmFzX0Nvb3JkIGN1cnJlbnRYLCBF
dmFzX0Nvb3JkIGN1cnJlbnRZLCBFdmFzX0Nvb3JkKiBvZmZzZXRYLCBFdmFzX0Nvb3JkKiBvZmZz
ZXRZKQogewogICAgIERCRygiZXdrVGlsZSVwLCB6b29tPSVmIiwgZXdrVGlsZSwgKnpvb20pOwog
Ci0gICAgUFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrVGlsZSwgcHJpdiwgRUlOQV9GQUxTRSk7
CisgICAgUFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrVGlsZSwgcHJpdiwgZmFsc2UpOwogCiAg
ICAgcmV0dXJuIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3NldF9pbnRlcm5hbChwcml2
LCB6b29tLCBjdXJyZW50WCwgY3VycmVudFksIG9mZnNldFgsIG9mZnNldFkpOwogfQpAQCAtMTU3
NiwxMyArMTU3NiwxMyBAQCBFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV9z
ZXQoRXZhc19PYmplY3QqIGV3a1RpbGUsIGZsb2F0KiB6b29tLCBFdgogRWluYV9Cb29sIGV3a190
aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fd2Vha19zZXQoRXZhc19PYmplY3QqIGV3a1RpbGUsIGZs
b2F0IHpvb20sIEV2YXNfQ29vcmQgY3VycmVudFgsIEV2YXNfQ29vcmQgY3VycmVudFkpCiB7CiAg
ICAgREJHKCJld2tUaWxlJXAsIHpvb209JWYiLCBld2tUaWxlLCB6b29tKTsKLSAgICBQUklWX0RB
VEFfR0VUX09SX1JFVFVSTihld2tUaWxlLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBQUklWX0RB
VEFfR0VUX09SX1JFVFVSTihld2tUaWxlLCBwcml2LCBmYWxzZSk7CiAgICAgaWYgKCFwcml2LT52
aWV3LndpZHRoIHx8ICFwcml2LT52aWV3LmhlaWdodCkKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFM
U0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBFaW5hX0lubGlzdCoqIGl0ZXJhdG9yLCAq
KiBpdGVyYXRvckVuZDsKICAgICBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVtKiBpdGVtOwog
ICAgIEV2YXNfQ29vcmQgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0OwotICAgIEVpbmFfQm9vbCByZUNh
bGN1bGF0ZSA9IEVJTkFfRkFMU0U7CisgICAgRWluYV9Cb29sIHJlQ2FsY3VsYXRlID0gZmFsc2U7
CiAKICAgICBmbG9hdCBzY2FsZSA9IHpvb20gLyBwcml2LT52aWV3LnRpbGUuem9vbTsKIApAQCAt
MTYwOCwxMSArMTYwOCwxMSBAQCBFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9v
bV93ZWFrX3NldChFdmFzX09iamVjdCogZXdrVGlsZSwgZmxvYXQgem9vbQogICAgIGlmIChiYXNl
Um93ICE9IHByaXYtPm1vZGVsLmJhc2Uucm93IHx8IGJhc2VDb2x1bW4gIT0gcHJpdi0+bW9kZWwu
YmFzZS5jb2x1bW4pIHsKICAgICAgICAgcHJpdi0+bW9kZWwuYmFzZS5yb3cgPSBiYXNlUm93Owog
ICAgICAgICBwcml2LT5tb2RlbC5iYXNlLmNvbHVtbiA9IGJhc2VDb2x1bW47Ci0gICAgICAgIHJl
Q2FsY3VsYXRlID0gRUlOQV9UUlVFOworICAgICAgICByZUNhbGN1bGF0ZSA9IHRydWU7CiAgICAg
fQogCiAgICAgaWYgKHZyb3dzID4gcHJpdi0+dmlldy5yb3dzIHx8IHZjb2xzID4gcHJpdi0+dmll
dy5jb2xzKQotICAgICAgICByZUNhbGN1bGF0ZSA9IEVJTkFfVFJVRTsKKyAgICAgICAgcmVDYWxj
dWxhdGUgPSB0cnVlOwogCiAgICAgaWYgKHJlQ2FsY3VsYXRlKSB7CiAgICAgICAgIEV2YXNfQ29v
cmQgd2lkdGgsIGhlaWdodDsKQEAgLTE2NDQsNyArMTY0NCw3IEBAIEVpbmFfQm9vbCBld2tfdGls
ZWRfYmFja2luZ19zdG9yZV96b29tX3dlYWtfc2V0KEV2YXNfT2JqZWN0KiBld2tUaWxlLCBmbG9h
dCB6b29tCiAgICAgICAgIHRpbGVQb3NpdGlvblkgKz0gdGlsZUhlaWdodDsKICAgICB9CiAKLSAg
ICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX2ZpeF9vZmZzZXRzKEV2YXNfT2JqZWN0KiBld2tUaWxlLCBFdmFzX0Nv
b3JkIHdpZHRoLCBFdmFzX0Nvb3JkIGhlaWdodCkKQEAgLTE3MzAsMTAgKzE3MzAsMTAgQEAgdm9p
ZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldChFdmFz
X09iamVjdCogZXdrVGlsZSwgRWkKIAogRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3Jl
X3VwZGF0ZShFdmFzX09iamVjdCogZXdrVGlsZSwgY29uc3QgRWluYV9SZWN0YW5nbGUqIHVwZGF0
ZSkKIHsKLSAgICBQUklWX0RBVEFfR0VUX09SX1JFVFVSTihld2tUaWxlLCBwcml2LCBFSU5BX0ZB
TFNFKTsKKyAgICBQUklWX0RBVEFfR0VUX09SX1JFVFVSTihld2tUaWxlLCBwcml2LCBmYWxzZSk7
CiAKICAgICBpZiAocHJpdi0+cmVuZGVyLmRpc2FibGVkKQotICAgICAgICByZXR1cm4gRUlOQV9G
QUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIGV3a190aWxlX21hdHJp
eF91cGRhdGUocHJpdi0+bW9kZWwubWF0cml4LCB1cGRhdGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHJpdi0+dmlldy50aWxlLnpvb20pOwpAQCAtMTc3NSw3ICsxNzc1LDcg
QEAgdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9jb250ZW50c19yZXNpemUoRXZhc19PYmpl
Y3QqIGV3a1RpbGUsIEV2YXNfQ29vcmQgd2kKIAogICAgIHByaXYtPm1vZGVsLndpZHRoID0gd2lk
dGg7CiAgICAgcHJpdi0+bW9kZWwuaGVpZ2h0ID0gaGVpZ2h0OwotICAgIHByaXYtPmNoYW5nZWQu
bW9kZWwgPSBFSU5BX1RSVUU7CisgICAgcHJpdi0+Y2hhbmdlZC5tb2RlbCA9IHRydWU7CiAKICAg
ICBEQkcoIncsaD0lZCwgJWQiLCB3aWR0aCwgaGVpZ2h0KTsKICAgICBfZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfY2hhbmdlZChwcml2KTsKQEAgLTE4MDYsNyArMTgwNiw3IEBAIHZvaWQgZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfZmx1c2goRXZhc19PYmplY3QqIGV3a1RpbGUpCiAgICAgcHJpdi0+
bW9kZWwuY3VycmVudC5yb3dzID0gMTsKICAgICBwcml2LT5tb2RlbC5vbGQuY29sdW1ucyA9IDA7
CiAgICAgcHJpdi0+bW9kZWwub2xkLnJvd3MgPSAwOwotICAgIHByaXYtPmNoYW5nZWQuc2l6ZSA9
IEVJTkFfVFJVRTsKKyAgICBwcml2LT5jaGFuZ2VkLnNpemUgPSB0cnVlOwogCiAjaWZkZWYgREVC
VUdfTUVNX0xFQUtTCiAgICAgcHJpbnRmKCJcbkZMVVNIRUQgQkFDS0lORyBTVE9SRSwgU1RBVFVT
IEJFRk9SRSBERUxFVElORyBUSUxFIE1BVFJJWDpcbiIpOwpAQCAtMTgyNiw3ICsxODI2LDcgQEAg
dm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9mbHVzaChFdmFzX09iamVjdCogZXdrVGlsZSkK
IAogRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVnaW9uKEV2
YXNfT2JqZWN0KiBld2tUaWxlLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29y
ZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQsIGZsb2F0IHpvb20pCiB7Ci0gICAgUFJJVl9EQVRB
X0dFVF9PUl9SRVRVUk4oZXdrVGlsZSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgUFJJVl9EQVRB
X0dFVF9PUl9SRVRVUk4oZXdrVGlsZSwgcHJpdiwgZmFsc2UpOwogICAgIEVpbmFfVGlsZV9Hcmlk
X1NsaWNlciBzbGljZXI7CiAgICAgY29uc3QgRWluYV9UaWxlX0dyaWRfSW5mbyogaW5mbzsKICAg
ICBFdmFzX0Nvb3JkIHRpbGVXaWR0aCwgdGlsZUhlaWdodDsKQEAgLTE4MzksNyArMTgzOSw3IEBA
IEVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlZ2lvbihFdmFz
X09iamVjdCogZXdrVGlsZSwgRXZhc19DCiAgICAgaWYgKCFlaW5hX3RpbGVfZ3JpZF9zbGljZXJf
c2V0dXAoJnNsaWNlciwgeCwgeSwgd2lkdGgsIGhlaWdodCwgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0
KSkgewogICAgICAgICBFUlIoImNvdWxkIG5vdCBzZXR1cCBncmlkIHNsaWNlciBmb3IgJWQsJWQr
JWR4JWQgdGlsZT0lZHglZCIsCiAgICAgICAgICAgICB4LCB5LCB3aWR0aCwgaGVpZ2h0LCB0aWxl
V2lkdGgsIHRpbGVIZWlnaHQpOwotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHdoaWxlIChlaW5hX3RpbGVfZ3JpZF9zbGljZXJf
bmV4dCgmc2xpY2VyLCAmaW5mbykpIHsKQEAgLTE4NTMsMTIgKzE4NTMsMTIgQEAgRWluYV9Cb29s
IGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVnaW9uKEV2YXNfT2JqZWN0KiBl
d2tUaWxlLCBFdmFzX0MKIAogICAgIHRpbGVVbnVzZWRDYWNoZSA9IGV3a190aWxlX21hdHJpeF91
bnVzZWRfY2FjaGVfZ2V0KHByaXYtPm1vZGVsLm1hdHJpeCk7CiAgICAgZXdrX3RpbGVfdW51c2Vk
X2NhY2hlX2xvY2tfYXJlYSh0aWxlVW51c2VkQ2FjaGUsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHpv
b20pOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFf
Qm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyhF
dmFzX09iamVjdCogZXdrVGlsZSwgdW5zaWduZWQgaW50IG4sIGZsb2F0IHpvb20pCiB7Ci0gICAg
UFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrVGlsZSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAg
UFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrVGlsZSwgcHJpdiwgZmFsc2UpOwogICAgIHVuc2ln
bmVkIGxvbmcgc3RhcnRSb3csIGVuZFJvdywgc3RhcnRDb2wsIGVuZENvbCwgaSwgaiwgd2lkdGgs
IGhlaWdodDsKICAgICBFd2tfVGlsZV9VbnVzZWRfQ2FjaGUqIHRpbGVVbnVzZWRDYWNoZTsKIApA
QCAtMTg5MSw3ICsxODkxLDcgQEAgc3RhcnRfcHJvY2Vzc2luZzoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXJ0Q29sICogVElMRV9TSVpFX0FUX1pPT00ocHJpdi0+dmll
dy50aWxlLndpZHRoLCB6b29tKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXJ0Um93ICogVElMRV9TSVpFX0FUX1pPT00ocHJpdi0+dmlldy50aWxlLmhlaWdodCwgem9v
bSksIHdpZHRoLCBoZWlnaHQsIHpvb20pOwogCi0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVy
X2NhbmNlbChFdmFzX09iamVjdCogZXdrVGlsZSkKQEAgLTE5MDcsMTMgKzE5MDcsMTMgQEAgdm9p
ZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX2NhbmNlbChFdmFzX09iamVjdCog
ZXdrVGlsZSkKIAogRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2Rpc2FibGVfcmVu
ZGVyKEV2YXNfT2JqZWN0KiBld2tUaWxlKQogewotICAgIFBSSVZfREFUQV9HRVRfT1JfUkVUVVJO
KGV3a1RpbGUsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIFBSSVZfREFUQV9HRVRfT1JfUkVUVVJO
KGV3a1RpbGUsIHByaXYsIGZhbHNlKTsKICAgICByZXR1cm4gX2V3a190aWxlZF9iYWNraW5nX3N0
b3JlX2Rpc2FibGVfcmVuZGVyKHByaXYpOwogfQogCiBFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfZW5hYmxlX3JlbmRlcihFdmFzX09iamVjdCogZXdrVGlsZSkKIHsKLSAgICBQUklW
X0RBVEFfR0VUX09SX1JFVFVSTihld2tUaWxlLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBQUklW
X0RBVEFfR0VUX09SX1JFVFVSTihld2tUaWxlLCBwcml2LCBmYWxzZSk7CiAgICAgX2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX2NoYW5nZWQocHJpdik7CiAgICAgcmV0dXJuIF9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9lbmFibGVfcmVuZGVyKHByaXYpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a190aWxlZF9tYXRyaXguY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a190aWxlZF9tYXRyaXguY3BwCmluZGV4IDhiODBkM2RjNzZjNWQ1MzQ4MjU1NzQyNWM4ZWQx
YTBlMWU2OWExN2IuLjJkNTU1NDRiZjMyNGRkYmY3OTFiYmY5ZTg1YzY4MTIwNzI4MWUzZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfbWF0cml4LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX21hdHJpeC5jcHAKQEAgLTI5NSwxNiAr
Mjk1LDE2IEBAIGVuZDoKICAqIEBwYXJhbSByb3cgdGhlIHJvdyBudW1iZXIuCiAgKiBAcGFyYW0g
em9vbSB0aGUgZXhhY3Qgem9vbSB0byBxdWVyeS4KICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJV
RSBpZiBmb3VuZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIEBjIHRydWUg
aWYgZm91bmQsIEBjIGZhbHNlIG90aGVyd2lzZS4KICAqCiAgKiBAc2VlIGV3a190aWxlX21hdHJp
eF90aWxlX2V4YWN0X2dldCgpCiAgKi8KIEVpbmFfQm9vbCBld2tfdGlsZV9tYXRyaXhfdGlsZV9l
eGFjdF9leGlzdHMoRXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0cml4LCB1bnNpZ25lZCBsb25nIGNv
bHVtbiwgdW5zaWduZWQgbG9uZyByb3csIGZsb2F0IHpvb20pCiB7CiAgICAgaWYgKCFlaW5hX21h
dHJpeHNwYXJzZV9kYXRhX2lkeF9nZXQodGlsZU1hdHJpeC0+bWF0cml4LCByb3csIGNvbHVtbikp
Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiAvKioKQEAgLTM0OSw3
ICszNDksNyBAQCBFd2tfVGlsZSogZXdrX3RpbGVfbWF0cml4X3RpbGVfbmV3KEV3a19UaWxlX01h
dHJpeCogdGlsZU1hdHJpeCwgRXZhcyogY2FudmFzLCB1bgogCiAgICAgY2Fpcm9fdHJhbnNsYXRl
KHRpbGUtPmNhaXJvLCAtdGlsZS0+eCwgLXRpbGUtPnkpOwogCi0gICAgdGlsZS0+c3RhdHMuZnVs
bF91cGRhdGUgPSBFSU5BX1RSVUU7CisgICAgdGlsZS0+c3RhdHMuZnVsbF91cGRhdGUgPSB0cnVl
OwogICAgIHRpbGVNYXRyaXgtPnVwZGF0ZXMgPSBlaW5hX2xpc3RfYXBwZW5kKHRpbGVNYXRyaXgt
PnVwZGF0ZXMsIHRpbGUpOwogCiAjaWZkZWYgREVCVUdfTUVNX0xFQUtTCkBAIC0zNzUsMTUgKzM3
NSwxNSBAQCBFd2tfVGlsZSogZXdrX3RpbGVfbWF0cml4X3RpbGVfbmV3KEV3a19UaWxlX01hdHJp
eCogdGlsZU1hdHJpeCwgRXZhcyogY2FudmFzLCB1bgogICogQHBhcmFtIHQgdGhlIHRpbGUgaW5z
dGFuY2UgdG8gcmV0dXJuLCBtdXN0IEBiIG5vdCBiZSBAYyAwLgogICogQHBhcmFtIGxhc3RfdXNl
ZCB0aW1lIGluIHdoaWNoIHRpbGUud2lkdGhhcyBsYXN0IHVzZWQuCiAgKgotICogQHJldHVybiAj
RUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgI0VJTkFfRkFMU0Ugb24gZmFpbHVyZS4KKyAqIEByZXR1
cm4gI3RydWUgb24gc3VjY2VzcyBvciAjZmFsc2Ugb24gZmFpbHVyZS4KICAqLwogRWluYV9Cb29s
IGV3a190aWxlX21hdHJpeF90aWxlX3B1dChFd2tfVGlsZV9NYXRyaXgqIHRpbGVNYXRyaXgsIEV3
a19UaWxlKiB0aWxlLCBkb3VibGUgbGFzdFVzZWQpCiB7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHRpbGVNYXRyaXgsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTCh0aWxlLCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwodGlsZU1hdHJpeCwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTCh0aWxlLCBmYWxzZSk7CiAKICAgICBpZiAodGlsZS0+dmlzaWJsZSkKLSAg
ICAgICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICB0aWxl
LT5zdGF0cy5sYXN0X3VzZWQgPSBsYXN0VXNlZDsKICAgICByZXR1cm4gZXdrX3RpbGVfdW51c2Vk
X2NhY2hlX3RpbGVfcHV0KHRpbGVNYXRyaXgtPnRpbGllVW51c2VkQ2FjaGUsIHRpbGUsIF9ld2tf
dGlsZV9tYXRyaXhfdGlsZV9mcmVlLCB0aWxlTWF0cml4KTsKQEAgLTM5MiwxNCArMzkyLDE0IEBA
IEVpbmFfQm9vbCBld2tfdGlsZV9tYXRyaXhfdGlsZV9wdXQoRXdrX1RpbGVfTWF0cml4KiB0aWxl
TWF0cml4LCBFd2tfVGlsZSogdGlsZSwKIEVpbmFfQm9vbCBld2tfdGlsZV9tYXRyaXhfdGlsZV91
cGRhdGUoRXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0cml4LCB1bnNpZ25lZCBsb25nIGNvbCwgdW5z
aWduZWQgbG9uZyByb3csIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiB1cGRhdGUpCiB7CiAgICAgRWlu
YV9SZWN0YW5nbGUgbmV3VXBkYXRlOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TCh0aWxlTWF0cml4LCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwodXBkYXRlLCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwodGlsZU1hdHJpeCwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTCh1cGRhdGUsIGZhbHNlKTsKIAogICAgIG1lbWNweSgmbmV3VXBkYXRlLCB1cGRhdGUsIHNp
emVvZihuZXdVcGRhdGUpKTsKLSAgICAvLyBjaGVjayB1cGRhdGUgaXMgdmFsaWQsIG90aGVyd2lz
ZSByZXR1cm4gRUlOQV9GQUxTRQorICAgIC8vIGNoZWNrIHVwZGF0ZSBpcyB2YWxpZCwgb3RoZXJ3
aXNlIHJldHVybiBmYWxzZQogICAgIGlmICh1cGRhdGUtPnggPCAwIHx8IHVwZGF0ZS0+eSA8IDAg
fHwgdXBkYXRlLT53IDw9IDAgfHwgdXBkYXRlLT5oIDw9IDApIHsKICAgICAgICAgRVJSKCJpbnZh
bGlkIHVwZGF0ZSByZWdpb24uIik7Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKHVwZGF0ZS0+eCArIHVwZGF0ZS0+dyAt
IDEgPj0gdGlsZU1hdHJpeC0+dGlsZS53aWR0aCkKQEAgLTQwOSwzNyArNDA5LDM3IEBAIEVpbmFf
Qm9vbCBld2tfdGlsZV9tYXRyaXhfdGlsZV91cGRhdGUoRXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0
cml4LCB1bnNpZ25lZCBsb25nCiAKICAgICBFd2tfVGlsZSogdGlsZSA9IHN0YXRpY19jYXN0PEV3
a19UaWxlKj4oZWluYV9tYXRyaXhzcGFyc2VfZGF0YV9pZHhfZ2V0KHRpbGVNYXRyaXgtPm1hdHJp
eCwgcm93LCBjb2wpKTsKICAgICBpZiAoIXRpbGUpCi0gICAgICAgIHJldHVybiBFSU5BX1RSVUU7
CisgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKCF0aWxlLT51cGRhdGVzICYmICF0aWxl
LT5zdGF0cy5mdWxsX3VwZGF0ZSkKICAgICAgICAgdGlsZU1hdHJpeC0+dXBkYXRlcyA9IGVpbmFf
bGlzdF9hcHBlbmQodGlsZU1hdHJpeC0+dXBkYXRlcywgdGlsZSk7CiAgICAgZXdrX3RpbGVfdXBk
YXRlX2FyZWEodGlsZSwgJm5ld1VwZGF0ZSk7CiAKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAg
IHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wgZXdrX3RpbGVfbWF0cml4X3RpbGVfdXBkYXRl
X2Z1bGwoRXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0cml4LCB1bnNpZ25lZCBsb25nIGNvbHVtbiwg
dW5zaWduZWQgbG9uZyByb3cpCiB7CiAgICAgRWluYV9NYXRyaXhzcGFyc2VfQ2VsbCogY2VsbDsK
LSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodGlsZU1hdHJpeCwgRUlOQV9GQUxT
RSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHRpbGVNYXRyaXgsIGZhbHNl
KTsKIAogICAgIGlmICghZWluYV9tYXRyaXhzcGFyc2VfY2VsbF9pZHhfZ2V0KHRpbGVNYXRyaXgt
Pm1hdHJpeCwgcm93LCBjb2x1bW4sICZjZWxsKSkKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7
CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghY2VsbCkKLSAgICAgICAgcmV0dXJu
IEVJTkFfVFJVRTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBFd2tfVGlsZSogdGlsZSA9
IHN0YXRpY19jYXN0PEV3a19UaWxlKj4oZWluYV9tYXRyaXhzcGFyc2VfY2VsbF9kYXRhX2dldChj
ZWxsKSk7CiAgICAgaWYgKCF0aWxlKSB7CiAgICAgICAgIENSSVRJQ0FMKCJtYXRyaXggY2VsbCB3
aXRoIG5vIHRpbGUhIik7Ci0gICAgICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAogICAgIGlmICghdGlsZS0+dXBkYXRlcyAmJiAhdGlsZS0+c3RhdHMu
ZnVsbF91cGRhdGUpCiAgICAgICAgIHRpbGVNYXRyaXgtPnVwZGF0ZXMgPSBlaW5hX2xpc3RfYXBw
ZW5kKHRpbGVNYXRyaXgtPnVwZGF0ZXMsIHRpbGUpOwogICAgIGV3a190aWxlX3VwZGF0ZV9mdWxs
KHRpbGUpOwogCi0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
dm9pZCBld2tfdGlsZV9tYXRyaXhfdGlsZV91cGRhdGVzX2NsZWFyKEV3a19UaWxlX01hdHJpeCog
dGlsZU1hdHJpeCwgRXdrX1RpbGUqIHRpbGUpCkBAIC00NTksNyArNDU5LDcgQEAgc3RhdGljIEVp
bmFfQm9vbCBfZXdrX3RpbGVfbWF0cml4X3NsaWNlcl9zZXR1cChFd2tfVGlsZV9NYXRyaXgqIHRp
bGVNYXRyaXgsIGNvbnMKICAgICBpZiAoYXJlYS0+dyA8PSAwIHx8IGFyZWEtPmggPD0gMCkgewog
ICAgICAgICBXUk4oImludmFsaWQgYXJlYSByZWdpb246ICVkLCVkKyVkeCVkLiIsCiAgICAgICAg
ICAgICBhcmVhLT54LCBhcmVhLT55LCBhcmVhLT53LCBhcmVhLT5oKTsKLSAgICAgICAgcmV0dXJu
IEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICB4ID0gYXJl
YS0+eDsKQEAgLTQ5NCwxOSArNDk0LDE5IEBAIEVpbmFfQm9vbCBld2tfdGlsZV9tYXRyaXhfdXBk
YXRlKEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCwgY29uc3QgRWluYV9SZWN0YW5nCiB7CiAg
ICAgY29uc3QgRWluYV9UaWxlX0dyaWRfSW5mbyogaW5mbzsKICAgICBFaW5hX1RpbGVfR3JpZF9T
bGljZXIgc2xpY2VyOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh0aWxlTWF0
cml4LCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodXBk
YXRlLCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodGls
ZU1hdHJpeCwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh1cGRh
dGUsIGZhbHNlKTsKIAogICAgIGlmICh1cGRhdGUtPncgPCAxIHx8IHVwZGF0ZS0+aCA8IDEpIHsK
ICAgICAgICAgREJHKCJXaHkgd2UgZ2V0IHVwZGF0ZXMgd2l0aCBlbXB0eSBhcmVhcz8gJWQsJWQr
JWR4JWQgYXQgem9vbSAlZiIsCiAgICAgICAgICAgICB1cGRhdGUtPngsIHVwZGF0ZS0+eSwgdXBk
YXRlLT53LCB1cGRhdGUtPmgsIHpvb20pOwotICAgICAgICByZXR1cm4gRUlOQV9UUlVFOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAoIV9ld2tfdGlsZV9tYXRyaXhfc2xp
Y2VyX3NldHVwKHRpbGVNYXRyaXgsIHVwZGF0ZSwgem9vbSwgJnNsaWNlcikpIHsKICAgICAgICAg
RVJSKCJDb3VsZCBub3Qgc2V0dXAgc2xpY2VyIGZvciB1cGRhdGUgJWQsJWQrJWR4JWQgYXQgem9v
bSAlZiIsCiAgICAgICAgICAgICB1cGRhdGUtPngsIHVwZGF0ZS0+eSwgdXBkYXRlLT53LCB1cGRh
dGUtPmgsIHpvb20pOwotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAogICAgIHdoaWxlIChlaW5hX3RpbGVfZ3JpZF9zbGljZXJfbmV4dCgm
c2xpY2VyLCAmaW5mbykpIHsKQEAgLTUyNyw3ICs1MjcsNyBAQCBFaW5hX0Jvb2wgZXdrX3RpbGVf
bWF0cml4X3VwZGF0ZShFd2tfVGlsZV9NYXRyaXgqIHRpbGVNYXRyaXgsIGNvbnN0IEVpbmFfUmVj
dGFuZwogICAgIH0KIAogCi0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogdm9pZCBld2tfdGlsZV9tYXRyaXhfdXBkYXRlc19wcm9jZXNzKEV3a19UaWxlX01hdHJp
eCogdGlsZU1hdHJpeCkKQEAgLTU2Miw3ICs1NjIsNyBAQCB2b2lkIGV3a190aWxlX21hdHJpeF9k
YmcoY29uc3QgRXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0cml4KQogewogICAgIEVpbmFfSXRlcmF0
b3IqIGl0ZXJhdG9yID0gZWluYV9tYXRyaXhzcGFyc2VfaXRlcmF0b3JfY29tcGxldGVfbmV3KHRp
bGVNYXRyaXgtPm1hdHJpeCk7CiAgICAgRWluYV9NYXRyaXhzcGFyc2VfQ2VsbCogY2VsbDsKLSAg
ICBFaW5hX0Jvb2wgbGFzdF9lbXB0eSA9IEVJTkFfRkFMU0U7CisgICAgRWluYV9Cb29sIGxhc3Rf
ZW1wdHkgPSBmYWxzZTsKIAogI2lmZGVmIERFQlVHX01FTV9MRUFLUwogICAgIHByaW50ZigiRXdr
X1RpbGUgTWF0cml4OiB0aWxlc1srJSIgUFJJdTY0ICIsLSUiIFBSSXU2NCAiOiUiIFBSSXU2NCAi
XSAiCkBAIC01ODIsMTMgKzU4MiwxMyBAQCB2b2lkIGV3a190aWxlX21hdHJpeF9kYmcoY29uc3Qg
RXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0cml4KQogICAgICAgICBFd2tfVGlsZSogdGlsZSA9IHN0
YXRpY19jYXN0PEV3a19UaWxlKj4oZWluYV9tYXRyaXhzcGFyc2VfY2VsbF9kYXRhX2dldChjZWxs
KSk7CiAgICAgICAgIGlmICghdGlsZSkgewogICAgICAgICAgICAgaWYgKCFsYXN0X2VtcHR5KSB7
Ci0gICAgICAgICAgICAgICAgbGFzdF9lbXB0eSA9IEVJTkFfVFJVRTsKKyAgICAgICAgICAgICAg
ICBsYXN0X2VtcHR5ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBwcmludGYoIkVtcHR5OiIpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgcHJpbnRmKCIgWyVsdSwlbHVdIiwgY29sdW1uLCBy
b3cpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGxhc3RfZW1wdHkpIHsKLSAg
ICAgICAgICAgICAgICBsYXN0X2VtcHR5ID0gRUlOQV9GQUxTRTsKKyAgICAgICAgICAgICAgICBs
YXN0X2VtcHR5ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgcHJpbnRmKCIlM2x1LCUzbHUgJTEwcDoiLCBjb2x1bW4sIHJv
dywgdGlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX21v
ZGVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfbW9kZWwuY3BwCmluZGV4
IGQ5MTdmNTVkNWY1OGY1N2RhOWM0ZjY5NjE3ZjEzOTJiZTI0MjkyOWYuLjM1MWYyOTMzYWY0M2Qx
N2Q3OWUxYzgyMjI4Y2RjZWRlZThhYzg2MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdGlsZWRfbW9kZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
dGlsZWRfbW9kZWwuY3BwCkBAIC0yOTUsNyArMjk1LDcgQEAgRXdrX1RpbGUqIGV3a190aWxlX25l
dyhFdmFzKiBldmFzLCBFdmFzX0Nvb3JkIHdpZHRoLCBFdmFzX0Nvb3JkIGhlaWdodCwgZmxvYXQg
em8KIAogICAgIGV2YXNfb2JqZWN0X2ltYWdlX3NpemVfc2V0KHRpbGUtPmltYWdlLCB0aWxlLT53
aWR0aCwgdGlsZS0+aGVpZ2h0KTsKICAgICBldmFzX29iamVjdF9pbWFnZV9jb2xvcnNwYWNlX3Nl
dCh0aWxlLT5pbWFnZSwgdGlsZS0+Y3NwYWNlKTsKLSAgICB0aWxlLT5waXhlbHMgPSBzdGF0aWNf
Y2FzdDx1aW50OF90Kj4oZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9nZXQodGlsZS0+aW1hZ2UsIEVJ
TkFfVFJVRSkpOworICAgIHRpbGUtPnBpeGVscyA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihldmFz
X29iamVjdF9pbWFnZV9kYXRhX2dldCh0aWxlLT5pbWFnZSwgdHJ1ZSkpOwogICAgIHRpbGUtPnN1
cmZhY2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSh0aWxlLT5waXhlbHMs
IGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc3RyaWRlKTsKICAgICBzdGF0dXMgPSBjYWlyb19zdXJm
YWNlX3N0YXR1cyh0aWxlLT5zdXJmYWNlKTsKICAgICBpZiAoc3RhdHVzICE9IENBSVJPX1NUQVRV
U19TVUNDRVNTKSB7CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBld2tfdGlsZV9oaWRlKEV3a19U
aWxlKiB0aWxlKQogfQogCiAvKioKLSAqIFJldHVybnMgRUlOQV9UUlVFIGlmIHRoZSB0aWxlIGlz
IHZpc2libGUsIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogUmV0dXJucyB0cnVlIGlmIHRoZSB0
aWxlIGlzIHZpc2libGUsIGZhbHNlIG90aGVyd2lzZS4KICAqLwogRWluYV9Cb29sIGV3a190aWxl
X3Zpc2libGVfZ2V0KEV3a19UaWxlKiB0aWxlKQogewpAQCAtMzcyLDcgKzM3Miw3IEBAIHZvaWQg
ZXdrX3RpbGVfdXBkYXRlX2Z1bGwoRXdrX1RpbGUqIHRpbGUpCiAgICAgdGlsZS0+c3RhdHMubWlz
c2VzKys7CiAKICAgICBpZiAoIXRpbGUtPnN0YXRzLmZ1bGxfdXBkYXRlKSB7Ci0gICAgICAgIHRp
bGUtPnN0YXRzLmZ1bGxfdXBkYXRlID0gRUlOQV9UUlVFOworICAgICAgICB0aWxlLT5zdGF0cy5m
dWxsX3VwZGF0ZSA9IHRydWU7CiAgICAgICAgIGlmICh0aWxlLT51cGRhdGVzKSB7CiAgICAgICAg
ICAgICBlaW5hX3RpbGVyX2ZyZWUodGlsZS0+dXBkYXRlcyk7CiAgICAgICAgICAgICB0aWxlLT51
cGRhdGVzID0gMDsKQEAgLTM5Miw3ICszOTIsNyBAQCB2b2lkIGV3a190aWxlX3VwZGF0ZV9hcmVh
KEV3a19UaWxlKiB0aWxlLCBjb25zdCBFaW5hX1JlY3RhbmdsZSogcmVjdCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKCFyZWN0LT54ICYmICFyZWN0LT55ICYmIHJlY3QtPncgPT0gdGlsZS0+
d2lkdGggJiYgcmVjdC0+aCA9PSB0aWxlLT5oZWlnaHQpIHsKLSAgICAgICAgdGlsZS0+c3RhdHMu
ZnVsbF91cGRhdGUgPSBFSU5BX1RSVUU7CisgICAgICAgIHRpbGUtPnN0YXRzLmZ1bGxfdXBkYXRl
ID0gdHJ1ZTsKICAgICAgICAgaWYgKHRpbGUtPnVwZGF0ZXMpIHsKICAgICAgICAgICAgIGVpbmFf
dGlsZXJfZnJlZSh0aWxlLT51cGRhdGVzKTsKICAgICAgICAgICAgIHRpbGUtPnVwZGF0ZXMgPSAw
OwpAQCAtNTM2LDcgKzUzNiw3IEBAIHZvaWQgZXdrX3RpbGVfdW51c2VkX2NhY2hlX2xvY2tfYXJl
YShFd2tfVGlsZV9VbnVzZWRfQ2FjaGUqIHRpbGVVbnVzZWRDYWNoZSwgRXZhCiB7CiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4odGlsZVVudXNlZENhY2hlKTsKIAotICAgIHRpbGVVbnVz
ZWRDYWNoZS0+bG9ja2VkLmxvY2tlZCA9IEVJTkFfVFJVRTsKKyAgICB0aWxlVW51c2VkQ2FjaGUt
PmxvY2tlZC5sb2NrZWQgPSB0cnVlOwogICAgIHRpbGVVbnVzZWRDYWNoZS0+bG9ja2VkLnggPSB4
OwogICAgIHRpbGVVbnVzZWRDYWNoZS0+bG9ja2VkLnkgPSB5OwogICAgIHRpbGVVbnVzZWRDYWNo
ZS0+bG9ja2VkLndpZHRoID0gd2lkdGg7CkBAIC01NDgsNyArNTQ4LDcgQEAgdm9pZCBld2tfdGls
ZV91bnVzZWRfY2FjaGVfdW5sb2NrX2FyZWEoRXdrX1RpbGVfVW51c2VkX0NhY2hlKiB0aWxlVW51
c2VkQ2FjaGUpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4odGlsZVVudXNlZENh
Y2hlKTsKIAotICAgIHRpbGVVbnVzZWRDYWNoZS0+bG9ja2VkLmxvY2tlZCA9IEVJTkFfRkFMU0U7
CisgICAgdGlsZVVudXNlZENhY2hlLT5sb2NrZWQubG9ja2VkID0gZmFsc2U7CiB9CiAKIC8qKgpA
QCAtNzQ4LDcgKzc0OCw3IEBAIHZvaWQgZXdrX3RpbGVfdW51c2VkX2NhY2hlX3RoYXcoRXdrX1Rp
bGVfVW51c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2FjaGUpCiAgKiBAcGFyYW0gdGlsZVVudXNlZENh
Y2hlIGNhY2hlIG9mIHVudXNlZCB0aWxlcwogICogQHBhcmFtIHRpbGUgdGhlIHRpbGUgdG8gYmUg
cmVtb3ZlZCBmcm9tIEV3a19UaWxlX1VudXNlZF9DYWNoZS4KICAqCi0gKiBAcmV0dXJuICNFSU5B
X1RSVUUgb24gc3VjY2VzcywgI0VJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiAjdHJ1
ZSBvbiBzdWNjZXNzLCAjZmFsc2Ugb3RoZXJ3aXNlLgogICovCiBFaW5hX0Jvb2wgZXdrX3RpbGVf
dW51c2VkX2NhY2hlX3RpbGVfZ2V0KEV3a19UaWxlX1VudXNlZF9DYWNoZSogdGlsZVVudXNlZENh
Y2hlLCBFd2tfVGlsZSogdGlsZSkKIHsKQEAgLTc2NSw3ICs3NjUsNyBAQCBFaW5hX0Jvb2wgZXdr
X3RpbGVfdW51c2VkX2NhY2hlX3RpbGVfZ2V0KEV3a19UaWxlX1VudXNlZF9DYWNoZSogdGlsZVVu
dXNlZENhY2hlLAogICAgIH0KICAgICBpZiAoIWZvdW5kRW50cnkpIHsKICAgICAgICAgRVJSKCJ0
aWxlICVwIG5vdCBmb3VuZCBpbiBjYWNoZSAlcCIsIHRpbGUsIHRpbGVVbnVzZWRDYWNoZSk7Ci0g
ICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CiAgICAgdGlsZVVudXNlZENhY2hlLT5lbnRyaWVzLmNvdW50LS07CkBAIC03NzMsNyArNzczLDcg
QEAgRWluYV9Cb29sIGV3a190aWxlX3VudXNlZF9jYWNoZV90aWxlX2dldChFd2tfVGlsZV9VbnVz
ZWRfQ2FjaGUqIHRpbGVVbnVzZWRDYWNoZSwKICAgICB0aWxlVW51c2VkQ2FjaGUtPmVudHJpZXMu
bGlzdCA9IGVpbmFfbGlzdF9yZW1vdmVfbGlzdCh0aWxlVW51c2VkQ2FjaGUtPmVudHJpZXMubGlz
dCwgZm91bmRFbnRyeSk7CiAgICAgZnJlZShpdGVtKTsKIAotICAgIHJldHVybiBFSU5BX1RSVUU7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIC8qKgpAQCAtNzkzLDggKzc5Myw4IEBAIEVpbmFfQm9v
bCBld2tfdGlsZV91bnVzZWRfY2FjaGVfdGlsZV9nZXQoRXdrX1RpbGVfVW51c2VkX0NhY2hlKiB0
aWxlVW51c2VkQ2FjaGUsCiAgKiBAcGFyYW0gdGlsZV9mcmVlX2NiIGZ1bmN0aW9uIHVzZWQgdG8g
ZnJlZSB0aWxlcy4KICAqIEBwYXJhbSBkYXRhIGNvbnRleHQgdG8gZ2l2ZSBiYWNrIHRvIEBhIHRp
bGVfZnJlZV9jYiBhcyBmaXJzdCBhcmd1bWVudC4KICAqCi0gKiBAcmV0dXJuICNFSU5BX1RSVUUg
b24gc3VjY2VzcywgI0VJTkFfRkFMU0Ugb3RoZXJ3aXNlLiBJZiBAYyB0aWxlLT52aXNpYmxlCi0g
KiAgICAgICAgIGlzIG5vdCAjRUlOQV9GQUxTRSwgdGhlbiBpdCB3aWxsIHJldHVybiAjRUlOQV9G
QUxTRS4KKyAqIEByZXR1cm4gI3RydWUgb24gc3VjY2VzcywgI2ZhbHNlIG90aGVyd2lzZS4gSWYg
QGMgdGlsZS0+dmlzaWJsZQorICogICAgICAgICBpcyBub3QgI2ZhbHNlLCB0aGVuIGl0IHdpbGwg
cmV0dXJuICNmYWxzZS4KICAqCiAgKiBAc2VlIGV3a190aWxlX3VudXNlZF9jYWNoZV9hdXRvX2Zs
dXNoKCkKICAqLwpAQCAtODA0LDE3ICs4MDQsMTcgQEAgRWluYV9Cb29sIGV3a190aWxlX3VudXNl
ZF9jYWNoZV90aWxlX3B1dChFd2tfVGlsZV9VbnVzZWRfQ2FjaGUqIHRpbGVVbnVzZWRDYWNoZSwK
IAogICAgIGlmICh0aWxlLT52aXNpYmxlKSB7CiAgICAgICAgIEVSUigidGlsZT0lcCBpcyBub3Qg
dW51c2VkICh2aXNpYmxlPSVkKSIsIHRpbGUsIHRpbGUtPnZpc2libGUpOwotICAgICAgICByZXR1
cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHVudXNl
ZENhY2hlRW50cnkgPSBzdGF0aWNfY2FzdDxFd2tfVGlsZV9VbnVzZWRfQ2FjaGVfRW50cnkqPiht
YWxsb2Moc2l6ZW9mKEV3a19UaWxlX1VudXNlZF9DYWNoZV9FbnRyeSkpKTsKICAgICBpZiAoIXVu
dXNlZENhY2hlRW50cnkpCi0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICB0aWxlVW51c2VkQ2FjaGUtPmVudHJpZXMubGlzdCA9IGVpbmFfbGlz
dF9hcHBlbmQodGlsZVVudXNlZENhY2hlLT5lbnRyaWVzLmxpc3QsIHVudXNlZENhY2hlRW50cnkp
OwogICAgIGlmIChlaW5hX2Vycm9yX2dldCgpKSB7CiAgICAgICAgIEVSUigiTGlzdCBhbGxvY2F0
aW9uIGZhaWxlZCIpOwotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAogICAgIHVudXNlZENhY2hlRW50cnktPnRpbGUgPSB0aWxlOwpAQCAt
ODI1LDcgKzgyNSw3IEBAIEVpbmFfQm9vbCBld2tfdGlsZV91bnVzZWRfY2FjaGVfdGlsZV9wdXQo
RXdrX1RpbGVfVW51c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2FjaGUsCiAgICAgdGlsZVVudXNlZENh
Y2hlLT5lbnRyaWVzLmNvdW50Kys7CiAgICAgdGlsZVVudXNlZENhY2hlLT5tZW1vcnkudXNlZCAr
PSBzaXplb2YoRXdrX1RpbGUpICsgdGlsZS0+Ynl0ZXM7CiAKLSAgICByZXR1cm4gRUlOQV9UUlVF
OworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV9kYmco
Y29uc3QgRXdrX1RpbGVfVW51c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2FjaGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3V0aWwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a191dGlsLmNwcAppbmRleCA0MTViMzZlNWU3NWRlOTFhZjI3YjQ3NDlmZWEwMmM5ZDVk
NTc4OWY1Li5iNzQwMjVhNzcxOTY4NjdiMGEyN2Q2YWM1MTRhMWNlMjNmZmNkNmU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3V0aWwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdXRpbC5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgRXZhc19PYmplY3QqIGV3
a191dGlsX2ltYWdlX2Zyb21fY2Fpcm9fc3VyZmFjZV9hZGQoRXZhcyogY2FudmFzLCBjYWlyb19z
dXJmYWNlX3QKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgZHN0ID0gZXZhc19vYmpl
Y3RfaW1hZ2VfZGF0YV9nZXQoaW1hZ2UsIEVJTkFfVFJVRSk7CisgICAgZHN0ID0gZXZhc19vYmpl
Y3RfaW1hZ2VfZGF0YV9nZXQoaW1hZ2UsIHRydWUpOwogICAgIG1lbWNweShkc3QsIHNyYywgaCAq
IHN0cmlkZSk7CiAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9zZXQoaW1hZ2UsIGRzdCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IGE3ZmQ3YzUxMzhhODE2OTQ1MWM3MTI5
NDdiNDQ2ZTlmYWRhZjA3OWYuLjU2NzIwNDMwMzU2ZGNhZjlhYzIyOWE5YTY3MWMxMmZhZWRhNWFl
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAtMjcxLDcgKzI3MSw3IEBAIHN0
YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNt
YXJ0RGF0YSkKIHsKICAgICBpZiAoc21hcnREYXRhLT5jaGFuZ2VkLmFueSkKICAgICAgICAgcmV0
dXJuOwotICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5hbnkgPSBFSU5BX1RSVUU7CisgICAgc21hcnRE
YXRhLT5jaGFuZ2VkLmFueSA9IHRydWU7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2hhbmdlZChz
bWFydERhdGEtPnNlbGYpOwogfQogCkBAIC0yODAsMTEgKzI4MCwxMSBAQCBzdGF0aWMgRWluYV9C
b29sIF9ld2tfdmlld19yZXBhaW50c19yZXNpemUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2
LCBzaXplX3QgcwogICAgIHZvaWQqIHRtcCA9IHJlYWxsb2MocHJpdi0+cmVwYWludHMuYXJyYXks
IHNpemUgKiBzaXplb2YoRWluYV9SZWN0YW5nbGUpKTsKICAgICBpZiAoIXRtcCkgewogICAgICAg
ICBDUklUSUNBTCgiY291bGQgbm90IHJlYWxsb2MgcmVwYWludHMgYXJyYXkgdG8gJXp1IGVsZW1l
bnRzLiIsIHNpemUpOwotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KICAgICBwcml2LT5yZXBhaW50cy5hbGxvY2F0ZWQgPSBzaXplOwogICAg
IHByaXYtPnJlcGFpbnRzLmFycmF5ID0gc3RhdGljX2Nhc3Q8RWluYV9SZWN0YW5nbGUqPih0bXAp
OwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyB2
b2lkIF9ld2tfdmlld19yZXBhaW50X2FkZChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIEV2
YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHdpZHRoLCBFdmFzX0Nvb3JkIGhl
aWdodCkKQEAgLTMyNiwxMSArMzI2LDExIEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3Nj
cm9sbHNfcmVzaXplKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgc2l6ZV90IHNpCiAgICAg
dm9pZCogdG1wID0gcmVhbGxvYyhwcml2LT5zY3JvbGxzLmFycmF5LCBzaXplICogc2l6ZW9mKEV3
a19TY3JvbGxfUmVxdWVzdCkpOwogICAgIGlmICghdG1wKSB7CiAgICAgICAgIENSSVRJQ0FMKCJj
b3VsZCBub3QgcmVhbGxvYyBzY3JvbGxzIGFycmF5IHRvICV6dSBlbGVtZW50cy4iLCBzaXplKTsK
LSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAgICAgcHJpdi0+c2Nyb2xscy5hbGxvY2F0ZWQgPSBzaXplOwogICAgIHByaXYtPnNjcm9sbHMu
YXJyYXkgPSBzdGF0aWNfY2FzdDxFd2tfU2Nyb2xsX1JlcXVlc3QqPih0bXApOwotICAgIHJldHVy
biBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyB2b2lkIF9ld2tfdmll
d19zY3JvbGxfYWRkKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgRXZhc19Db29yZCBkZWx0
YVgsIEV2YXNfQ29vcmQgZGVsdGFZLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19D
b29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQsIEVpbmFfQm9vbCBtYWluU2Nyb2xsKQpAQCAt
NDA5LDExICs0MDksMTEgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfZm9jdXNf
aW4oRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogICAgIEVXS19WSUVXX1BSSVZfR0VU
KHNtYXJ0RGF0YSwgcHJpdik7CiAgICAgV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyKiBmYyA9IHBy
aXYtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpOwogICAgIERCRygiZXdrVmlldz0lcCwgZmM9JXAi
LCBzbWFydERhdGEtPnNlbGYsIGZjKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoZmMsIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChm
YywgZmFsc2UpOwogCiAgICAgZmMtPnNldEFjdGl2ZSh0cnVlKTsKICAgICBmYy0+c2V0Rm9jdXNl
ZCh0cnVlKTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBz
dGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9mb2N1c19vdXQoRXdrX1ZpZXdfU21hcnRf
RGF0YSogc21hcnREYXRhKQpAQCAtNDIxLDExICs0MjEsMTEgQEAgc3RhdGljIEVpbmFfQm9vbCBf
ZXdrX3ZpZXdfc21hcnRfZm9jdXNfb3V0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkK
ICAgICBFV0tfVklFV19QUklWX0dFVChzbWFydERhdGEsIHByaXYpOwogICAgIFdlYkNvcmU6OkZv
Y3VzQ29udHJvbGxlciogZm9jdXNDb250cm9sbGVyID0gcHJpdi0+cGFnZS0+Zm9jdXNDb250cm9s
bGVyKCk7CiAgICAgREJHKCJld2tWaWV3PSVwLCBmYz0lcCIsIHNtYXJ0RGF0YS0+c2VsZiwgZm9j
dXNDb250cm9sbGVyKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZm9jdXND
b250cm9sbGVyLCBFSU5BX0ZBTFNFKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoZm9jdXNDb250cm9sbGVyLCBmYWxzZSk7CiAKICAgICBmb2N1c0NvbnRyb2xsZXItPnNldEFj
dGl2ZShmYWxzZSk7CiAgICAgZm9jdXNDb250cm9sbGVyLT5zZXRGb2N1c2VkKGZhbHNlKTsKLSAg
ICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgRWluYV9C
b29sIF9ld2tfdmlld19zbWFydF9tb3VzZV93aGVlbChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFy
dERhdGEsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIHdoZWVsRXZlbnQpCkBAIC00ODIs
MjAgKzQ4MiwyMCBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9ydW5famF2YXNj
cmlwdF9jb25maXJtKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYQogewogICAgIElORigiamF2YXNj
cmlwdCBjb25maXJtOiAlcyIsIG1lc3NhZ2UpOwogICAgIElORigiamF2YXNjcmlwdCBjb25maXJt
IChIQVJEIENPREVEKT8gWUVTIik7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfc2hvdWxkX2ludGVy
cnVwdF9qYXZhc2NyaXB0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKIHsKICAgICBJ
TkYoInNob3VsZCBpbnRlcnJ1cHQgamF2YXNjcmlwdD9cbiIKICAgICAgICAgIlx0KEhBUkQgQ09E
RUQpIE5PIik7Ci0gICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgcmV0dXJuIGZhbHNlOwogfQog
CiBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9ydW5famF2YXNjcmlwdF9wcm9tcHQo
RXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0
IGNoYXIqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIGRlZmF1bHRWYWx1ZSwgY2hhcioqIHZhbHVlKQog
ewogICAgICp2YWx1ZSA9IHN0cmR1cCgidGVzdCIpOwotICAgIEVpbmFfQm9vbCByZXN1bHQgPSBF
SU5BX1RSVUU7CisgICAgRWluYV9Cb29sIHJlc3VsdCA9IHRydWU7CiAgICAgSU5GKCJqYXZhc2Ny
aXB0IHByb21wdDpcbiIKICAgICAgICAgIlx0ICAgICAgbWVzc2FnZTogJXNcbiIKICAgICAgICAg
Ilx0ZGVmYXVsdCB2YWx1ZTogJXNcbiIKQEAgLTYyOSw3ICs2MjksNyBAQCBzdGF0aWMgRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSog
c21hcnREYXRhKQogICAgIHByaXYtPnZpZXdwb3J0QXJndW1lbnRzLm1pbmltdW1TY2FsZSA9IFdl
YkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87CiAgICAgcHJpdi0+dmlld3BvcnRB
cmd1bWVudHMubWF4aW11bVNjYWxlID0gV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6OlZhbHVl
QXV0bzsKICAgICBwcml2LT52aWV3cG9ydEFyZ3VtZW50cy50YXJnZXREZW5zaXR5RHBpID0gV2Vi
Q29yZTo6Vmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bzsKLSAgICBwcml2LT52aWV3cG9ydEFy
Z3VtZW50cy51c2VyU2NhbGFibGUgPSBFSU5BX1RSVUU7CisgICAgcHJpdi0+dmlld3BvcnRBcmd1
bWVudHMudXNlclNjYWxhYmxlID0gdHJ1ZTsKIAogICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0
TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KHRydWUpOwogICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+
c2V0RGVmYXVsdFRleHRFbmNvZGluZ05hbWUoImlzby04ODU5LTEiKTsKQEAgLTY3Niw3ICs2NzYs
NyBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdr
X1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogCiAgICAgcHJpdi0+c2V0dGluZ3MuYXV0b0xv
YWRJbWFnZXMgPSBwcml2LT5wYWdlU2V0dGluZ3MtPmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgp
OwogICAgIHByaXYtPnNldHRpbmdzLmF1dG9TaHJpbmtJbWFnZXMgPSBwcml2LT5wYWdlU2V0dGlu
Z3MtPnNocmlua3NTdGFuZGFsb25lSW1hZ2VzVG9GaXQoKTsKLSAgICBwcml2LT5zZXR0aW5ncy5l
bmFibGVBdXRvUmVzaXplV2luZG93ID0gRUlOQV9UUlVFOworICAgIHByaXYtPnNldHRpbmdzLmVu
YWJsZUF1dG9SZXNpemVXaW5kb3cgPSB0cnVlOwogICAgIHByaXYtPnNldHRpbmdzLmVuYWJsZURl
dmVsb3BlckV4dHJhcyA9IHByaXYtPnBhZ2VTZXR0aW5ncy0+ZGV2ZWxvcGVyRXh0cmFzRW5hYmxl
ZCgpOwogICAgIHByaXYtPnNldHRpbmdzLmVuYWJsZVNjcmlwdHMgPSBwcml2LT5wYWdlU2V0dGlu
Z3MtPmlzU2NyaXB0RW5hYmxlZCgpOwogICAgIHByaXYtPnNldHRpbmdzLmVuYWJsZVBsdWdpbnMg
PSBwcml2LT5wYWdlU2V0dGluZ3MtPmFyZVBsdWdpbnNFbmFibGVkKCk7CkBAIC02OTksNyArNjk5
LDcgQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZfbmV3KEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKICAgICAvLyB0aGlzIGZ1bmN0aW9uYWxpdHkg
d2lsbCBiZSBtb2RpZmllZCBieSB0aGUgc2NhbGUgem9vbSBwYXRjaC4KICAgICBwcml2LT5zZXR0
aW5ncy56b29tUmFuZ2UubWluU2NhbGUgPSBaT09NX01JTjsKICAgICBwcml2LT5zZXR0aW5ncy56
b29tUmFuZ2UubWF4U2NhbGUgPSBaT09NX01BWDsKLSAgICBwcml2LT5zZXR0aW5ncy56b29tUmFu
Z2UudXNlclNjYWxhYmxlID0gRUlOQV9UUlVFOworICAgIHByaXYtPnNldHRpbmdzLnpvb21SYW5n
ZS51c2VyU2NhbGFibGUgPSB0cnVlOwogICAgIHByaXYtPnNldHRpbmdzLmRldmljZVBpeGVsUmF0
aW8gPSBERVZJQ0VfUElYRUxfUkFUSU87CiAKICAgICBwcml2LT5zZXR0aW5ncy5kb21UaW1lcklu
dGVydmFsID0gcHJpdi0+cGFnZVNldHRpbmdzLT5kZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgp
OwpAQCAtODAwLDcgKzgwMCw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9hZGQoRXZh
c19PYmplY3QqIGV3a1ZpZXcpCiAKICAgICBldmFzX29iamVjdF9zbWFydF9tZW1iZXJfYWRkKHNt
YXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgZXdrVmlldyk7CiAgICAgZXZhc19vYmplY3Rfc2hvdyhz
bWFydERhdGEtPmJhY2tpbmdfc3RvcmUpOwotICAgIGV2YXNfb2JqZWN0X3Bhc3NfZXZlbnRzX3Nl
dChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsIEVJTkFfVFJVRSk7CisgICAgZXZhc19vYmplY3Rf
cGFzc19ldmVudHNfc2V0KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgdHJ1ZSk7CiAKICAgICBz
bWFydERhdGEtPmV2ZW50c19yZWN0ID0gZXZhc19vYmplY3RfcmVjdGFuZ2xlX2FkZChzbWFydERh
dGEtPmJhc2UuZXZhcyk7CiAgICAgZXZhc19vYmplY3RfY29sb3Jfc2V0KHNtYXJ0RGF0YS0+ZXZl
bnRzX3JlY3QsIDAsIDAsIDAsIDApOwpAQCAtODU2LDE0ICs4NTYsMTQgQEAgc3RhdGljIHZvaWQg
X2V3a192aWV3X3NtYXJ0X3Jlc2l6ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19Db29yZCB3
LCBFdmFzX0Nvb3IKICAgICAvLyB0aGVzZSBzaG91bGQgYmUgcXVldWVkIGFuZCBwcm9jZXNzZWQg
aW4gY2FsY3VsYXRlIGFzIHdlbGwhCiAgICAgZXZhc19vYmplY3RfcmVzaXplKHNtYXJ0RGF0YS0+
YmFja2luZ19zdG9yZSwgdywgaCk7CiAKLSAgICBzbWFydERhdGEtPmNoYW5nZWQuc2l6ZSA9IEVJ
TkFfVFJVRTsKKyAgICBzbWFydERhdGEtPmNoYW5nZWQuc2l6ZSA9IHRydWU7CiAgICAgX2V3a192
aWV3X3NtYXJ0X2NoYW5nZWQoc21hcnREYXRhKTsKIH0KIAogc3RhdGljIHZvaWQgX2V3a192aWV3
X3NtYXJ0X21vdmUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29y
ZCB5KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
KTsKLSAgICBzbWFydERhdGEtPmNoYW5nZWQucG9zaXRpb24gPSBFSU5BX1RSVUU7CisgICAgc21h
cnREYXRhLT5jaGFuZ2VkLnBvc2l0aW9uID0gdHJ1ZTsKICAgICBfZXdrX3ZpZXdfc21hcnRfY2hh
bmdlZChzbWFydERhdGEpOwogfQogCkBAIC04NzYsNyArODc2LDcgQEAgc3RhdGljIHZvaWQgX2V3
a192aWV3X3NtYXJ0X2NhbGN1bGF0ZShFdmFzX09iamVjdCogZXdrVmlldykKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaS0+cmVwYWludHNfcHJvY2Vzcyk7CiAg
ICAgRXZhc19Db29yZCB4LCB5LCB3aWR0aCwgaGVpZ2h0OwogCi0gICAgc21hcnREYXRhLT5jaGFu
Z2VkLmFueSA9IEVJTkFfRkFMU0U7CisgICAgc21hcnREYXRhLT5jaGFuZ2VkLmFueSA9IGZhbHNl
OwogCiAgICAgaWYgKCFzbWFydERhdGEtPm1haW5fZnJhbWUgfHwgIXByaXYtPm1haW5GcmFtZSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtODk3LDcgKzg5Nyw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmll
d19zbWFydF9jYWxjdWxhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgICAgIH0KICAgICAg
ICAgZXZhc19vYmplY3RfcmVzaXplKHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgd2lkdGgsIGhlaWdo
dCk7CiAgICAgICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShzbWFydERhdGEtPmV2ZW50c19yZWN0LCB3
aWR0aCwgaGVpZ2h0KTsKLSAgICAgICAgc21hcnREYXRhLT5jaGFuZ2VkLmZyYW1lX3JlY3QgPSBF
SU5BX1RSVUU7CisgICAgICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5mcmFtZV9yZWN0ID0gdHJ1ZTsK
ICAgICAgICAgc21hcnREYXRhLT52aWV3LncgPSB3aWR0aDsKICAgICAgICAgc21hcnREYXRhLT52
aWV3LmggPSBoZWlnaHQ7CiAKQEAgLTkwNiwxNyArOTA2LDE3IEBAIHN0YXRpYyB2b2lkIF9ld2tf
dmlld19zbWFydF9jYWxjdWxhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgICAgIC8vIFRo
aXMgY2FsbGJhY2sgaXMgYSBnb29kIHBsYWNlIGUuZy4gdG8gY2hhbmdlIGZpeGVkIGxheW91dCBz
aXplIChld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9zZXQpLgogICAgICAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJ2aWV3LHJlc2l6ZWQiLCAwKTsKICAgICB9
Ci0gICAgc21hcnREYXRhLT5jaGFuZ2VkLnNpemUgPSBFSU5BX0ZBTFNFOworICAgIHNtYXJ0RGF0
YS0+Y2hhbmdlZC5zaXplID0gZmFsc2U7CiAKICAgICBpZiAoc21hcnREYXRhLT5jaGFuZ2VkLnBv
c2l0aW9uICYmICgoeCAhPSBzbWFydERhdGEtPnZpZXcueCkgfHwgKHkgIT0gc21hcnREYXRhLT52
aWV3LnkpKSkgewogICAgICAgICBldmFzX29iamVjdF9tb3ZlKHNtYXJ0RGF0YS0+bWFpbl9mcmFt
ZSwgeCwgeSk7CiAgICAgICAgIGV2YXNfb2JqZWN0X21vdmUoc21hcnREYXRhLT5iYWNraW5nX3N0
b3JlLCB4LCB5KTsKICAgICAgICAgZXZhc19vYmplY3RfbW92ZShzbWFydERhdGEtPmV2ZW50c19y
ZWN0LCB4LCB5KTsKLSAgICAgICAgc21hcnREYXRhLT5jaGFuZ2VkLmZyYW1lX3JlY3QgPSBFSU5B
X1RSVUU7CisgICAgICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5mcmFtZV9yZWN0ID0gdHJ1ZTsKICAg
ICAgICAgc21hcnREYXRhLT52aWV3LnggPSB4OwogICAgICAgICBzbWFydERhdGEtPnZpZXcueSA9
IHk7CiAgICAgfQotICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5wb3NpdGlvbiA9IEVJTkFfRkFMU0U7
CisgICAgc21hcnREYXRhLT5jaGFuZ2VkLnBvc2l0aW9uID0gZmFsc2U7CiAKICAgICBpZiAoIXNt
YXJ0RGF0YS0+YXBpLT5zY3JvbGxzX3Byb2Nlc3Moc21hcnREYXRhKSkKICAgICAgICAgRVJSKCJm
YWlsZWQgdG8gcHJvY2VzcyBzY3JvbGxzLiIpOwpAQCAtOTI5LDcgKzkyOSw3IEBAIHN0YXRpYyB2
b2lkIF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAg
aWYgKHNtYXJ0RGF0YS0+Y2hhbmdlZC5mcmFtZV9yZWN0KSB7CiAgICAgICAgIFdlYkNvcmU6OkZy
YW1lVmlldyogdmlldyA9IHByaXYtPm1haW5GcmFtZS0+dmlldygpOwogICAgICAgICB2aWV3LT5m
cmFtZVJlY3RzQ2hhbmdlZCgpOyAvKiBmb3JjZSB0cmVlIHRvIGdldCBwb3NpdGlvbiBmcm9tIHJv
b3QgKi8KLSAgICAgICAgc21hcnREYXRhLT5jaGFuZ2VkLmZyYW1lX3JlY3QgPSBFSU5BX0ZBTFNF
OworICAgICAgICBzbWFydERhdGEtPmNoYW5nZWQuZnJhbWVfcmVjdCA9IGZhbHNlOwogICAgIH0K
IH0KIApAQCAtOTUyLDcgKzk1Miw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9oaWRl
KEV2YXNfT2JqZWN0KiBld2tWaWV3KQogCiBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFy
dF9jb250ZW50c19yZXNpemUoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBpbnQgd2lk
dGgsIGludCBoZWlnaHQpCiB7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfem9vbV9zZXQoRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGNlbnRlclgs
IEV2YXNfQ29vcmQgY2VudGVyWSkKQEAgLTk5NCwxNCArOTk0LDE0IEBAIHN0YXRpYyBFaW5hX0Jv
b2wgX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfcmVnaW9uKEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNtYXJ0RGF0CiB7CiAgICAgV1JOKCJub3Qgc3VwcG9ydGVkIGJ5IGVuZ2luZS4gc21hcnREQXRh
PSVwIGFyZWE9JWQsJWQrJWR4JWQsIHpvb209JWYiLAogICAgICAgICBzbWFydERhdGEsIHgsIHks
IHdpZHRoLCBoZWlnaHQsIHpvb20pOwotICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIHJldHVy
biBmYWxzZTsKIH0KIAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRl
cl9yZWxhdGl2ZV9yYWRpdXMoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCB1bnNpZ25l
ZCBpbnQgbnVtYmVyLCBmbG9hdCB6b29tKQogewogICAgIFdSTigibm90IHN1cHBvcnRlZCBieSBl
bmdpbmUuIHNtYXJ0RGF0YT0lcCwgbj0ldSB6b29tPSVmIiwKICAgICAgICAgc21hcnREYXRhLCBu
dW1iZXIsIHpvb20pOwotICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIHJldHVybiBmYWxzZTsK
IH0KIAogc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfY2FuY2VsKEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKQEAgLTEwNjIsMTIgKzEwNjIsMTIgQEAgc3RhdGlj
IEVpbmFfQm9vbCBfZXdrX3ZpZXdfem9vbV9hbmltYXRvcl9jYih2b2lkKiBkYXRhKQogICAgICAg
ICBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9maW5pc2goc21hcnREYXRhKTsKICAgICAgICAgZXdr
X3ZpZXdfem9vbV9zZXQoc21hcnREYXRhLT5zZWxmLCBwcml2LT5hbmltYXRlZFpvb20uem9vbS5l
bmQsIGNlbnRlclgsIGNlbnRlclkpOwogICAgICAgICBzbWFydERhdGEtPmFwaS0+c2MuY2FsY3Vs
YXRlKHNtYXJ0RGF0YS0+c2VsZik7Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgc21hcnREYXRhLT5hbmltYXRlZF96b29tLnpv
b20uY3VycmVudCA9IF9ld2tfdmlld196b29tX2FuaW1hdGVkX2N1cnJlbnQocHJpdik7CiAgICAg
c21hcnREYXRhLT5hcGktPnpvb21fd2Vha19zZXQoc21hcnREYXRhLCBzbWFydERhdGEtPmFuaW1h
dGVkX3pvb20uem9vbS5jdXJyZW50LCBjZW50ZXJYLCBjZW50ZXJZKTsKLSAgICByZXR1cm4gRUlO
QV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfem9v
bV9hbmltYXRpb25fc3RhcnQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQpAQCAtMTA5
NSwyNCArMTA5NSwyNCBAQCBzdGF0aWMgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIF9ld2tf
dmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUoY29uc3QgRQogc3RhdGljIEVpbmFfQm9v
bCBfZXdrX3ZpZXdfc21hcnRfZGlzYWJsZV9yZW5kZXIoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21h
cnREYXRhKQogewogICAgIFdSTigibm90IHN1cHBvcnRlZCBieSBlbmdpbmUuIHNtYXJ0RGF0YT0l
cCIsIHNtYXJ0RGF0YSk7Ci0gICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgcmV0dXJuIGZhbHNl
OwogfQogCiBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9lbmFibGVfcmVuZGVyKEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKIHsKICAgICBXUk4oIm5vdCBzdXBwb3J0ZWQg
YnkgZW5naW5lLiBzbWFydERhdGE9JXAiLCBzbWFydERhdGEpOwotICAgIHJldHVybiBFSU5BX0ZB
TFNFOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X2Jhc2Vfc21h
cnRfc2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkpCiB7Ci0gICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKGFwaSwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKGFwaSwgZmFsc2UpOwogCiAgICAgaWYgKGFwaS0+dmVyc2lvbiAhPSBFV0tf
VklFV19TTUFSVF9DTEFTU19WRVJTSU9OKSB7CiAgICAgICAgIEVJTkFfTE9HX0NSSVQKICAgICAg
ICAgICAgICgiRXdrX1ZpZXdfU21hcnRfQ2xhc3MgJXAgaXMgdmVyc2lvbiAlbHUgd2hpbGUgJWx1
IHdhcyBleHBlY3RlZC4iLAogICAgICAgICAgICAgYXBpLCBhcGktPnZlcnNpb24sIEVXS19WSUVX
X1NNQVJUX0NMQVNTX1ZFUlNJT04pOwotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChFSU5BX1VOTElLRUxZKCFfcGFyZW50
X3NjLmFkZCkpCkBAIC0xMTUzLDcgKzExNTMsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfYmFzZV9z
bWFydF9zZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSkKICAgICBhcGktPnJ1bl9qYXZhc2Ny
aXB0X3Byb21wdCA9IF9ld2tfdmlld19zbWFydF9ydW5famF2YXNjcmlwdF9wcm9tcHQ7CiAgICAg
YXBpLT5zaG91bGRfaW50ZXJydXB0X2phdmFzY3JpcHQgPSBfZXdrX3ZpZXdfc21hcnRfc2hvdWxk
X2ludGVycnVwdF9qYXZhc2NyaXB0OwogCi0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogdm9pZCBld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9zZXQoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIEV2YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVpZ2h0KQpAQCAt
MTE2NSw3ICsxMTY1LDcgQEAgdm9pZCBld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9zZXQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfQ29vcmQgd2lkdGgsIEV2YXMKICAgICBpZiAod2lkdGgg
PD0gMCAmJiBoZWlnaHQgPD0gMCkgewogICAgICAgICBpZiAoIXZpZXctPnVzZUZpeGVkTGF5b3V0
KCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHZpZXctPnNldFVzZUZpeGVkTGF5b3V0
KEVJTkFfRkFMU0UpOworICAgICAgICB2aWV3LT5zZXRVc2VGaXhlZExheW91dChmYWxzZSk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplID0gdmlldy0+Zml4ZWRM
YXlvdXRTaXplKCk7CiAgICAgICAgIGlmIChzaXplLndpZHRoKCkgPT0gd2lkdGggJiYgc2l6ZS5o
ZWlnaHQoKSA9PSBoZWlnaHQpCkBAIC0xMTc2LDcgKzExNzYsNyBAQCB2b2lkIGV3a192aWV3X2Zp
eGVkX2xheW91dF9zaXplX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19Db29yZCB3aWR0
aCwgRXZhcwogCiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm47Ci0gICAgdmlldy0+c2V0
VXNlRml4ZWRMYXlvdXQoRUlOQV9UUlVFKTsKKyAgICB2aWV3LT5zZXRVc2VGaXhlZExheW91dCh0
cnVlKTsKICAgICB2aWV3LT5mb3JjZUxheW91dCgpOwogfQogCkBAIC0xMjQzLDcgKzEyNDMsNyBA
QCBFdmFzX09iamVjdCogZXdrX3ZpZXdfZnJhbWVfZm9jdXNlZF9nZXQoY29uc3QgRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpCiAKIEVpbmFfQm9vbCBld2tfdmlld191cmlfc2V0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBjb25zdCBjaGFyKiB1cmkpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgcmV0dXJuIGV3a19mcmFt
ZV91cmlfc2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgdXJpKTsKIH0KIApAQCAtMTI2MSw3ICsx
MjYxLDcgQEAgY29uc3QgY2hhciogZXdrX3ZpZXdfdGl0bGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBld2tWaWV3KQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfZWRpdGFibGVfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tWaWV3KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIHJldHVybiBld2tfZnJhbWVfZWRpdGFi
bGVfZ2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSk7CiB9CiAKQEAgLTEzMzgsOSArMTMzOCw5IEBA
IHZvaWQgZXdrX3ZpZXdfYmdfY29sb3JfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBp
bnQqIHJlZCwgaW50KiBncmVlbiwgaW50CiAKIEVpbmFfQm9vbCBld2tfdmlld190ZXh0X3NlYXJj
aChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogc3RyaW5nLCBFaW5hX0Jv
b2wgY2FzZVNlbnNpdGl2ZSwgRWluYV9Cb29sIGZvcndhcmQsIEVpbmFfQm9vbCB3cmFwKQogewot
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZB
TFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBF
SU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc3RyaW5nLCBF
SU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IHByaXYsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc3RyaW5n
LCBmYWxzZSk7CiAgICAgV1RGOjpUZXh0Q2FzZVNlbnNpdGl2aXR5IHNlbnNpdGl2ZTsKICAgICBX
ZWJDb3JlOjpGaW5kRGlyZWN0aW9uIGRpcmVjdGlvbjsKIApAQCAtMTM4NSwyNyArMTM4NSwyNyBA
QCB1bnNpZ25lZCBpbnQgZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX21hcmsoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIGNvbnN0IGNoYXIqIHN0cmluZwogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9tYXRj
aGVzX3VubWFya19hbGwoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Cisg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwog
ICAgIHByaXYtPnBhZ2UtPnVubWFya0FsbFRleHRNYXRjaGVzKCk7Ci0gICAgcmV0dXJuIEVJTkFf
VFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3RleHRfbWF0
Y2hlc19oaWdobGlnaHRfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgaGlnaGxp
Z2h0KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNt
YXJ0RGF0YSwgZmFsc2UpOwogICAgIHJldHVybiBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX2hpZ2hs
aWdodF9zZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lLCBoaWdobGlnaHQpOwogfQogCiBFaW5hX0Jv
b2wgZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9nZXQoY29uc3QgRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV90ZXh0X21hdGNoZXNf
aGlnaGxpZ2h0X2dldChzbWFydERhdGEtPm1haW5fZnJhbWUpOwogfQogCiBFaW5hX0Jvb2wgZXdr
X3ZpZXdfZWRpdGFibGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgZWRpdGFi
bGUpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEs
IEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCBmYWxzZSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9lZGl0YWJsZV9zZXQoc21hcnRE
YXRhLT5tYWluX2ZyYW1lLCBlZGl0YWJsZSk7CiB9CiAKQEAgLTE0MjYsOCArMTQyNiw4IEBAIHN0
YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X2VkaXRvcl9jb21tYW5kKEV3a19WaWV3X1ByaXZhdGVf
RGF0YSogcHJpdiwgY29uc3QgY2hhCiAKIEVpbmFfQm9vbCBld2tfdmlld19leGVjdXRlX2VkaXRv
cl9jb21tYW5kKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfRWRpdG9yX0NvbW1hbmQg
Y29tbWFuZCwgY29uc3QgY2hhciogdmFsdWUpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogCiAgICAgc3dp
dGNoIChjb21tYW5kKSB7CiAgICAgY2FzZSBFV0tfRURJVE9SX0NPTU1BTkRfSU5TRVJUX0lNQUdF
OgpAQCAtMTQ0NywxNiArMTQ0NywxNiBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfZXhlY3V0ZV9lZGl0
b3JfY29tbWFuZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX0VkaXRvcgogICAgIGNh
c2UgRVdLX0VESVRPUl9DT01NQU5EX1NFTEVDVF9XT1JEOgogICAgICAgICByZXR1cm4gX2V3a192
aWV3X2VkaXRvcl9jb21tYW5kKHByaXYsICJTZWxlY3RXb3JkIik7CiAgICAgZGVmYXVsdDoKLSAg
ICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9
CiAKIEVpbmFfQm9vbCBld2tfdmlld19jb250ZXh0X21lbnVfZm9yd2FyZF9ldmVudChFdmFzX09i
amVjdCogZXdrVmlldywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBkb3duRXZlbnQpCiB7
CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOwotICAgIEVpbmFfQm9vbCBt
b3VzZV9wcmVzc19oYW5kbGVkID0gRUlOQV9GQUxTRTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFaW5hX0Jvb2wgbW91c2Vf
cHJlc3NfaGFuZGxlZCA9IGZhbHNlOwogCiAgICAgcHJpdi0+cGFnZS0+Y29udGV4dE1lbnVDb250
cm9sbGVyKCktPmNsZWFyQ29udGV4dE1lbnUoKTsKICAgICBXZWJDb3JlOjpGcmFtZSogbWFpbkZy
YW1lID0gcHJpdi0+cGFnZS0+bWFpbkZyYW1lKCk7CkBAIC0xNDcxLDcgKzE0NzEsNyBAQCBFaW5h
X0Jvb2wgZXdrX3ZpZXdfY29udGV4dF9tZW51X2ZvcndhcmRfZXZlbnQoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIGNvbnN0IEV2YXNfRQogICAgIH0KIAogICAgIGlmIChtYWluRnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5zZW5kQ29udGV4dE1lbnVFdmVudChldmVudCkpCi0gICAgICAgIHJldHVybiBFSU5B
X0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBXZWJDb3JlOjpDb250ZXh0TWVu
dSogY29yZU1lbnUgPQogICAgICAgICBwcml2LT5wYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIo
KS0+Y29udGV4dE1lbnUoKTsKQEAgLTE0ODEsOSArMTQ4MSw5IEBAIEVpbmFfQm9vbCBld2tfdmll
d19jb250ZXh0X21lbnVfZm9yd2FyZF9ldmVudChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3Qg
RXZhc19FCiAgICAgICAgIHJldHVybiBtb3VzZV9wcmVzc19oYW5kbGVkOwogICAgIH0KIAotICAg
IHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiAjZWxzZQotICAgIHJldHVybiBF
SU5BX0ZBTFNFOworICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogfQogCkBAIC0xNDk2LDcxICsx
NDk2LDcxIEBAIGRvdWJsZSBld2tfdmlld19sb2FkX3Byb2dyZXNzX2dldChjb25zdCBFdmFzX09i
amVjdCogZXdrVmlldykKIAogRWluYV9Cb29sIGV3a192aWV3X3N0b3AoRXZhc19PYmplY3QqIGV3
a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCBmYWxzZSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9zdG9wKHNtYXJ0RGF0YS0+
bWFpbl9mcmFtZSk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19yZWxvYWQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9yZWxvYWQoc21hcnRE
YXRhLT5tYWluX2ZyYW1lKTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3JlbG9hZF9mdWxsKEV2
YXNfT2JqZWN0KiBld2tWaWV3KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIHJldHVybiBld2tfZnJhbWVfcmVs
b2FkX2Z1bGwoc21hcnREYXRhLT5tYWluX2ZyYW1lKTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3
X2JhY2soRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgcmV0dXJuIGV3a19m
cmFtZV9iYWNrKHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmll
d19mb3J3YXJkKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIHJldHVybiBl
d2tfZnJhbWVfZm9yd2FyZChzbWFydERhdGEtPm1haW5fZnJhbWUpOwogfQogCiBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfbmF2aWdhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCBzdGVwcykKIHsKLSAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxT
RSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZh
bHNlKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX25hdmlnYXRlKHNtYXJ0RGF0YS0+bWFpbl9mcmFt
ZSwgc3RlcHMpOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfYmFja19wb3NzaWJsZShFdmFzX09i
amVjdCogZXdrVmlldykKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcs
IHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX2JhY2tfcG9z
c2libGUoc21hcnREYXRhLT5tYWluX2ZyYW1lKTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X2Zv
cndhcmRfcG9zc2libGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOworICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgcmV0
dXJuIGV3a19mcmFtZV9mb3J3YXJkX3Bvc3NpYmxlKHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSk7CiB9
CiAKIEVpbmFfQm9vbCBld2tfdmlld19uYXZpZ2F0ZV9wb3NzaWJsZShFdmFzX09iamVjdCogZXdr
VmlldywgaW50IHN0ZXBzKQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIHJldHVybiBld2tfZnJhbWVfbmF2aWdh
dGVfcG9zc2libGUoc21hcnREYXRhLT5tYWluX2ZyYW1lLCBzdGVwcyk7CiB9CiAKIEVpbmFfQm9v
bCBld2tfdmlld19oaXN0b3J5X2VuYWJsZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcp
CiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJ
TkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHBy
aXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpCYWNr
Rm9yd2FyZExpc3RJbXBsKj4ocHJpdi0+cGFnZS0+YmFja0ZvcndhcmRMaXN0KCkpLT5lbmFibGVk
KCk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19oaXN0b3J5X2VuYWJsZV9zZXQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBlbmFibGUpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIHN0
YXRpY19jYXN0PFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdEltcGwqPihwcml2LT5wYWdlLT5iYWNr
Rm9yd2FyZExpc3QoKSktPnNldEVuYWJsZWQoZW5hYmxlKTsKLSAgICByZXR1cm4gRUlOQV9UUlVF
OworICAgIHJldHVybiB0cnVlOwogfQogCiBFd2tfSGlzdG9yeSogZXdrX3ZpZXdfaGlzdG9yeV9n
ZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCkBAIC0xNTgyLDI0ICsxNTgyLDI0IEBAIGZs
b2F0IGV3a192aWV3X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogCiBFaW5h
X0Jvb2wgZXdrX3ZpZXdfem9vbV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGZsb2F0IHpvb20s
IEV2YXNfQ29vcmQgY2VudGVyWCwgRXZhc19Db29yZCBjZW50ZXJZKQogewotICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAg
IEVXS19WSUVXX1BSSVZfR0VUKHNtYXJ0RGF0YSwgcHJpdik7CiAKLSAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5hcGksIEVJTkFfRkFMU0UpOwotICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmFwaS0+em9vbV9zZXQsIEVJTkFf
RkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmFw
aSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEt
PmFwaS0+em9vbV9zZXQsIGZhbHNlKTsKIAogICAgIGlmICghcHJpdi0+c2V0dGluZ3Muem9vbVJh
bmdlLnVzZXJTY2FsYWJsZSkgewogICAgICAgICBXUk4oInVzZXJTY2FsYWJsZSBpcyBmYWxzZSIp
OwotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAogICAgIGlmICh6b29tIDwgcHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLm1pblNjYWxlKSB7
CiAgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCBwcml2LT5zZXR0aW5ncy56
b29tUmFuZ2UubWluU2NhbGUsIHpvb20pOwotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAoem9vbSA+IHByaXYtPnNldHRpbmdz
Lnpvb21SYW5nZS5tYXhTY2FsZSkgewogICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6
ICVmIiwgcHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLm1heFNjYWxlLCB6b29tKTsKLSAgICAgICAg
cmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBf
ZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0b3Aoc21hcnREYXRhKTsKQEAgLTE2MTQsNyAr
MTYxNCw3IEBAIGZsb2F0IGV3a192aWV3X3BhZ2Vfem9vbV9nZXQoY29uc3QgRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCiAKIEVpbmFfQm9vbCBld2tfdmlld19wYWdlX3pvb21fc2V0KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBmbG9hdCBwYWdlWm9vbUZhY3RvcikKIHsKLSAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAgICByZXR1cm4g
ZXdrX2ZyYW1lX3BhZ2Vfem9vbV9zZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lLCBwYWdlWm9vbUZh
Y3Rvcik7CiB9CiAKQEAgLTE2MjcsMTIgKzE2MjcsMTIgQEAgZmxvYXQgZXdrX3ZpZXdfc2NhbGVf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2Nh
bGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBmbG9hdCBzY2FsZUZhY3RvciwgRXZhc19Db29y
ZCBjZW50ZXJYLCBFdmFzX0Nvb3JkIGNlbnRlclkpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogCiAgICAg
ZmxvYXQgY3VycmVudFNjYWxlRmFjdG9yID0gZXdrX3ZpZXdfc2NhbGVfZ2V0KGV3a1ZpZXcpOwog
ICAgIGlmIChjdXJyZW50U2NhbGVGYWN0b3IgPT0gLTEpCi0gICAgICAgIHJldHVybiBFSU5BX0ZB
TFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpbnQgeCwgeTsKICAgICBld2tfZnJh
bWVfc2Nyb2xsX3Bvc19nZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lLCAmeCwgJnkpOwpAQCAtMTY0
MCw3ICsxNjQwLDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3NjYWxlX3NldChFdmFzX09iamVjdCog
ZXdrVmlldywgZmxvYXQgc2NhbGVGYWN0b3IsIEV2YXNfQ29vcmQKICAgICB4ID0gc3RhdGljX2Nh
c3Q8aW50PigoKHggKyBjZW50ZXJYKSAvIGN1cnJlbnRTY2FsZUZhY3RvcikgKiBzY2FsZUZhY3Rv
cikgLSBjZW50ZXJYOwogICAgIHkgPSBzdGF0aWNfY2FzdDxpbnQ+KCgoeSArIGNlbnRlclkpIC8g
Y3VycmVudFNjYWxlRmFjdG9yKSAqIHNjYWxlRmFjdG9yKSAtIGNlbnRlclk7CiAgICAgcHJpdi0+
cGFnZS0+c2V0UGFnZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9yLCBXZWJDb3JlOjpMYXlvdXRQb2lu
dCh4LCB5KSk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
ZmxvYXQgZXdrX3ZpZXdfdGV4dF96b29tX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykK
QEAgLTE2NTEsMTMgKzE2NTEsMTMgQEAgZmxvYXQgZXdrX3ZpZXdfdGV4dF96b29tX2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrVmlldykKIAogRWluYV9Cb29sIGV3a192aWV3X3RleHRfem9vbV9z
ZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGZsb2F0IHRleHRab29tRmFjdG9yKQogewotICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsK
KyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2Up
OwogICAgIHJldHVybiBld2tfZnJhbWVfdGV4dF96b29tX3NldChzbWFydERhdGEtPm1haW5fZnJh
bWUsIHRleHRab29tRmFjdG9yKTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3pvb21fd2Vha19z
bW9vdGhfc2NhbGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewotICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwog
ICAgIHJldHVybiBzbWFydERhdGEtPnpvb21fd2Vha19zbW9vdGhfc2NhbGU7CiB9CiAKQEAgLTE2
NzUsMjQgKzE2NzUsMjQgQEAgdm9pZCBld2tfdmlld196b29tX3dlYWtfc21vb3RoX3NjYWxlX3Nl
dChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIHNtb290aFMKIAogRWluYV9Cb29sIGV3
a192aWV3X3pvb21fd2Vha19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGZsb2F0IHpvb20sIEV2
YXNfQ29vcmQgY2VudGVyWCwgRXZhc19Db29yZCBjZW50ZXJZKQogewotICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIEVX
S19WSUVXX1BSSVZfR0VUKHNtYXJ0RGF0YSwgcHJpdik7CiAKLSAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5hcGksIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmFwaS0+em9vbV93ZWFrX3NldCwgRUlO
QV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+
YXBpLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0
YS0+YXBpLT56b29tX3dlYWtfc2V0LCBmYWxzZSk7CiAKICAgICBpZiAoIXByaXYtPnNldHRpbmdz
Lnpvb21SYW5nZS51c2VyU2NhbGFibGUpIHsKICAgICAgICAgV1JOKCJ1c2VyU2NhbGFibGUgaXMg
ZmFsc2UiKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKICAgICBpZiAoem9vbSA8IHByaXYtPnNldHRpbmdzLnpvb21SYW5nZS5taW5T
Y2FsZSkgewogICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgcHJpdi0+c2V0
dGluZ3Muem9vbVJhbmdlLm1pblNjYWxlLCB6b29tKTsKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFM
U0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKHpvb20gPiBwcml2LT5z
ZXR0aW5ncy56b29tUmFuZ2UubWF4U2NhbGUpIHsKICAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlz
ID4gJWYgOiAlZiIsIHByaXYtPnNldHRpbmdzLnpvb21SYW5nZS5tYXhTY2FsZSwgem9vbSk7Ci0g
ICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CiAgICAgc21hcnREYXRhLT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQgPSBld2tfZnJhbWVfcGFn
ZV96b29tX2dldChzbWFydERhdGEtPm1haW5fZnJhbWUpOwpAQCAtMTcwMyw1MiArMTcwMyw1MiBA
QCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV93ZWFrX3NldChFdmFzX09iamVjdCogZXdrVmlldywg
ZmxvYXQgem9vbSwgRXZhc19Db29yZCBjZQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmlt
YXRlZF9tYXJrX3N0YXJ0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBmbG9hdCB6b29tKQogewotICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNF
KTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFs
c2UpOwogICAgIHNtYXJ0RGF0YS0+YW5pbWF0ZWRfem9vbS56b29tLnN0YXJ0ID0gem9vbTsKLSAg
ICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wgZXdr
X3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX2VuZChFdmFzX09iamVjdCogZXdrVmlldywgZmxvYXQg
em9vbSkKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIGZhbHNlKTsKICAgICBzbWFydERhdGEtPmFuaW1hdGVkX3pvb20uem9vbS5lbmQg
PSB6b29tOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVp
bmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfY3VycmVudChFdmFzX09iamVjdCog
ZXdrVmlldywgZmxvYXQgem9vbSkKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAgICBzbWFydERhdGEtPmFuaW1hdGVk
X3pvb20uem9vbS5jdXJyZW50ID0gem9vbTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJl
dHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0
b3AoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgX2V3a192aWV3X3pvb21f
YW5pbWF0ZWRfbWFya19zdG9wKHNtYXJ0RGF0YSk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBmbG9hdCB6b29tLCBmbG9hdCBkdXJhdGlvbiwgRXZhc19D
b29yZCBjZW50ZXJYLCBFdmFzX0Nvb3JkIGNlbnRlclkpCiB7CiAgICAgZG91YmxlIG5vdzsKLSAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxT
RSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlO
QV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+
YXBpLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21h
cnREYXRhLT5hcGktPnpvb21fd2Vha19zZXQsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmFwaSwgZmFsc2UpOworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmFwaS0+em9vbV93ZWFrX3NldCwg
ZmFsc2UpOwogCiAgICAgaWYgKCFwcml2LT5zZXR0aW5ncy56b29tUmFuZ2UudXNlclNjYWxhYmxl
KSB7CiAgICAgICAgIFdSTigidXNlclNjYWxhYmxlIGlzIGZhbHNlIik7Ci0gICAgICAgIHJldHVy
biBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKHpv
b20gPCBwcml2LT5zZXR0aW5ncy56b29tUmFuZ2UubWluU2NhbGUpIHsKICAgICAgICAgV1JOKCJ6
b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIHByaXYtPnNldHRpbmdzLnpvb21SYW5nZS5taW5TY2Fs
ZSwgem9vbSk7Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogICAgIGlmICh6b29tID4gcHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLm1heFNj
YWxlKSB7CiAgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCBwcml2LT5zZXR0
aW5ncy56b29tUmFuZ2UubWF4U2NhbGUsIHpvb20pOwotICAgICAgICByZXR1cm4gRUlOQV9GQUxT
RTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChwcml2LT5hbmltYXRl
ZFpvb20uYW5pbWF0b3IpCkBAIC0xNzc1LDE0ICsxNzc1LDE0IEBAIEVpbmFfQm9vbCBld2tfdmll
d196b29tX2FuaW1hdGVkX3NldChFdmFzX09iamVjdCogZXdrVmlldywgZmxvYXQgem9vbSwgZmxv
YXQgZHVyCiAgICAgc21hcnREYXRhLT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQgPSBwcml2LT5h
bmltYXRlZFpvb20uem9vbS5zdGFydDsKICAgICBzbWFydERhdGEtPmFuaW1hdGVkX3pvb20uem9v
bS5lbmQgPSBwcml2LT5hbmltYXRlZFpvb20uem9vbS5lbmQ7CiAKLSAgICByZXR1cm4gRUlOQV9U
UlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfcHJlX3JlbmRl
cl9yZWdpb24oRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5
LCBFdmFzX0Nvb3JkIHdpZHRoLCBFdmFzX0Nvb3JkIGhlaWdodCwgZmxvYXQgem9vbSkKIHsKLSAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxT
RSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlO
QV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+
YXBpLT5wcmVfcmVuZGVyX3JlZ2lvbiwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLT5wcmVfcmVuZGVyX3JlZ2lvbiwgZmFs
c2UpOwogICAgIGZsb2F0IGN1cl96b29tOwogICAgIEV2YXNfQ29vcmQgY29udGVudHNXaWR0aCwg
Y29udGVudHNIZWlnaHQ7CiAKQEAgLTE3OTAsMTQgKzE3OTAsMTQgQEAgRWluYV9Cb29sIGV3a192
aWV3X3ByZV9yZW5kZXJfcmVnaW9uKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3JkIHgs
IEV2YXNfQ28KICAgICAgKiB3b3VsZCBzY3JldyB1cCBwYXJhbWV0ZXJzIHRoYXQgYW5pbWF0aW9u
IGlzIGN1cnJlbnRseSB1c2luZwogICAgICAqLwogICAgIGlmIChwcml2LT5hbmltYXRlZFpvb20u
YW5pbWF0b3IpCi0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBjdXJfem9vbSA9IGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0KHNtYXJ0RGF0YS0+
bWFpbl9mcmFtZSk7CiAKICAgICBpZiAoY3VyX3pvb20gPCAwLjAwMDAxKQotICAgICAgICByZXR1
cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZXdrX2ZyYW1l
X2NvbnRlbnRzX3NpemVfZ2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgJmNvbnRlbnRzV2lkdGgs
ICZjb250ZW50c0hlaWdodCkpCi0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBjb250ZW50c1dpZHRoICo9IHpvb20gLyBjdXJfem9vbTsKICAg
ICBjb250ZW50c0hlaWdodCAqPSB6b29tIC8gY3VyX3pvb207CkBAIC0xODIzLDEzICsxODIzLDEz
IEBAIEVpbmFfQm9vbCBld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbihFdmFzX09iamVjdCogZXdr
VmlldywgRXZhc19Db29yZCB4LCBFdmFzX0NvCiAKIEVpbmFfQm9vbCBld2tfdmlld19wcmVfcmVu
ZGVyX3JlbGF0aXZlX3JhZGl1cyhFdmFzX09iamVjdCogZXdrVmlldywgdW5zaWduZWQgaW50IG51
bWJlcikKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0
YSwgcHJpdiwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHNtYXJ0RGF0YS0+YXBpLT5wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cywgRUlOQV9GQUxTRSk7
CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNl
KTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxz
ZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLT5w
cmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cywgZmFsc2UpOwogICAgIGZsb2F0IGN1cnJlbnRab29t
OwogCiAgICAgaWYgKHByaXYtPmFuaW1hdGVkWm9vbS5hbmltYXRvcikKLSAgICAgICAgcmV0dXJu
IEVJTkFfRkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGN1cnJlbnRab29tID0g
ZXdrX2ZyYW1lX3BhZ2Vfem9vbV9nZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lKTsKICAgICByZXR1
cm4gc21hcnREYXRhLT5hcGktPnByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKHNtYXJ0RGF0YSwg
bnVtYmVyLCBjdXJyZW50Wm9vbSk7CkBAIC0xODUxLDE1ICsxODUxLDE1IEBAIHZvaWQgZXdrX3Zp
ZXdfcHJlX3JlbmRlcl9jYW5jZWwoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAKIEVpbmFfQm9vbCBl
d2tfdmlld19lbmFibGVfcmVuZGVyKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewotICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNF
KTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5hcGktPmVu
YWJsZV9yZW5kZXIsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
ZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHNtYXJ0RGF0YS0+YXBpLT5lbmFibGVfcmVuZGVyLCBmYWxzZSk7CiAgICAgcmV0dXJu
IHNtYXJ0RGF0YS0+YXBpLT5lbmFibGVfcmVuZGVyKHNtYXJ0RGF0YSk7CiB9CiAKIEVpbmFfQm9v
bCBld2tfdmlld19kaXNhYmxlX3JlbmRlcihjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIHsK
LSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9G
QUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBp
LT5kaXNhYmxlX3JlbmRlciwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoc21hcnREYXRhLT5hcGktPmRpc2FibGVfcmVuZGVyLCBmYWxzZSk7CiAgICAg
cmV0dXJuIHNtYXJ0RGF0YS0+YXBpLT5kaXNhYmxlX3JlbmRlcihzbWFydERhdGEpOwogfQogCkBA
IC0xODcyLDEzICsxODcyLDEzIEBAIGNvbnN0IGNoYXIqIGV3a192aWV3X3NldHRpbmdfdXNlcl9h
Z2VudF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAKIEVpbmFfQm9vbCBld2tfdmll
d19zZXR0aW5nX3VzZXJfYWdlbnRfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFy
KiB1c2VyQWdlbnQpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
bWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIGlmIChlaW5hX3N0cmluZ3NoYXJl
X3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLnVzZXJBZ2VudCwgdXNlckFnZW50KSkgewogICAgICAg
ICBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCogY2xpZW50ID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwqPihwcml2LT5tYWluRnJhbWUtPmxvYWRlcigpLT5j
bGllbnQoKSk7CiAgICAgICAgIGNsaWVudC0+c2V0Q3VzdG9tVXNlckFnZW50KFN0cmluZzo6ZnJv
bVVURjgodXNlckFnZW50KSk7CiAgICAgfQotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIGNvbnN0IGNoYXIqIGV3a192aWV3X3NldHRpbmdfdXNlcl9zdHlsZXNo
ZWV0X2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKQEAgLTE4OTAsMjM4ICsxODkwLDIz
OCBAQCBjb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX3VzZXJfc3R5bGVzaGVldF9nZXQoY29u
c3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3Vz
ZXJfc3R5bGVzaGVldF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHVyaSkK
IHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlO
QV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJp
diwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnRE
YXRhLCBwcml2LCBmYWxzZSk7CiAgICAgaWYgKGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJp
di0+c2V0dGluZ3MudXNlclN0eWxlc2hlZXQsIHVyaSkpIHsKICAgICAgICAgV2ViQ29yZTo6S1VS
TCBrdXJsKFdlYkNvcmU6OktVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkpKTsKICAgICAgICAg
cHJpdi0+cGFnZVNldHRpbmdzLT5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGt1cmwpOwogICAg
IH0KLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jv
b2wgZXdrX3ZpZXdfc2V0dGluZ19hdXRvX2xvYWRfaW1hZ2VzX2dldChjb25zdCBFdmFzX09iamVj
dCogZXdrVmlldykKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNt
YXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdz
LmF1dG9Mb2FkSW1hZ2VzOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19hdXRvX2xv
YWRfaW1hZ2VzX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIGF1dG9tYXRpYykK
IHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlO
QV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJp
diwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnRE
YXRhLCBwcml2LCBmYWxzZSk7CiAgICAgYXV0b21hdGljID0gISFhdXRvbWF0aWM7CiAgICAgaWYg
KHByaXYtPnNldHRpbmdzLmF1dG9Mb2FkSW1hZ2VzICE9IGF1dG9tYXRpYykgewogICAgICAgICBw
cml2LT5wYWdlU2V0dGluZ3MtPnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShhdXRvbWF0aWMp
OwogICAgICAgICBwcml2LT5zZXR0aW5ncy5hdXRvTG9hZEltYWdlcyA9IGF1dG9tYXRpYzsKICAg
ICB9Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9C
b29sIGV3a192aWV3X3NldHRpbmdfYXV0b19zaHJpbmtfaW1hZ2VzX2dldChjb25zdCBFdmFzX09i
amVjdCogZXdrVmlldykKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcs
IHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRp
bmdzLmF1dG9TaHJpbmtJbWFnZXM7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2F1
dG9fc2hyaW5rX2ltYWdlc19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBhdXRv
bWF0aWMpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIGF1dG9tYXRpYyA9ICEhYXV0b21hdGljOwog
ICAgIGlmIChwcml2LT5zZXR0aW5ncy5hdXRvU2hyaW5rSW1hZ2VzICE9IGF1dG9tYXRpYykgewog
ICAgICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldFNocmlua3NTdGFuZGFsb25lSW1hZ2VzVG9G
aXQoYXV0b21hdGljKTsKICAgICAgICAgcHJpdi0+c2V0dGluZ3MuYXV0b1Nocmlua0ltYWdlcyA9
IGF1dG9tYXRpYzsKICAgICB9Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2F1dG9fcmVzaXplX3dp
bmRvd19nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Cisg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwog
ICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5lbmFibGVBdXRvUmVzaXplV2luZG93OwogfQogCiBF
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfYXV0b19yZXNpemVfd2luZG93X3NldChF
dmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIHJlc2l6YWJsZSkKIHsKLSAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7
CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNl
KTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxz
ZSk7CiAgICAgcHJpdi0+c2V0dGluZ3MuZW5hYmxlQXV0b1Jlc2l6ZVdpbmRvdyA9IHJlc2l6YWJs
ZTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jv
b2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfc2NyaXB0c19nZXQoY29uc3QgRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
ZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5l
bmFibGVTY3JpcHRzOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfc2Ny
aXB0c19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBlbmFibGUpCiB7Ci0gICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0Up
OwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFf
RkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
LCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJp
diwgZmFsc2UpOwogICAgIGVuYWJsZSA9ICEhZW5hYmxlOwogICAgIGlmIChwcml2LT5zZXR0aW5n
cy5lbmFibGVTY3JpcHRzICE9IGVuYWJsZSkgewogICAgICAgICBwcml2LT5wYWdlU2V0dGluZ3Mt
PnNldFNjcmlwdEVuYWJsZWQoZW5hYmxlKTsKICAgICAgICAgcHJpdi0+c2V0dGluZ3MuZW5hYmxl
U2NyaXB0cyA9IGVuYWJsZTsKICAgICB9Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3BsdWdpbnNf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAgICBy
ZXR1cm4gcHJpdi0+c2V0dGluZ3MuZW5hYmxlUGx1Z2luczsKIH0KIAogRWluYV9Cb29sIGV3a192
aWV3X3NldHRpbmdfZW5hYmxlX3BsdWdpbnNfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5h
X0Jvb2wgZW5hYmxlKQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAgICBlbmFibGUgPSAhIWVuYWJsZTsK
ICAgICBpZiAocHJpdi0+c2V0dGluZ3MuZW5hYmxlUGx1Z2lucyAhPSBlbmFibGUpIHsKICAgICAg
ICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRQbHVnaW5zRW5hYmxlZChlbmFibGUpOwogICAgICAg
ICBwcml2LT5zZXR0aW5ncy5lbmFibGVQbHVnaW5zID0gZW5hYmxlOwogICAgIH0KLSAgICByZXR1
cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdf
c2V0dGluZ19lbmFibGVfZnJhbWVfZmxhdHRlbmluZ19nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3
a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5lbmFi
bGVGcmFtZUZsYXR0ZW5pbmc7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJs
ZV9mcmFtZV9mbGF0dGVuaW5nX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIGVu
YWJsZSkKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0
YSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCBwcml2LCBmYWxzZSk7CiAgICAgZW5hYmxlID0gISFlbmFibGU7CiAgICAgaWYg
KHByaXYtPnNldHRpbmdzLmVuYWJsZUZyYW1lRmxhdHRlbmluZyAhPSBlbmFibGUpIHsKICAgICAg
ICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKGVuYWJsZSk7
CiAgICAgICAgIHByaXYtPnNldHRpbmdzLmVuYWJsZUZyYW1lRmxhdHRlbmluZyA9IGVuYWJsZTsK
ICAgICB9Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWlu
YV9Cb29sIGV3a192aWV3X3NldHRpbmdfc2NyaXB0c19jYW5fb3Blbl93aW5kb3dzX2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrVmlldykKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CiAgICAgcmV0dXJuIHBy
aXYtPnNldHRpbmdzLnNjcmlwdHNDYW5PcGVuV2luZG93czsKIH0KIAogRWluYV9Cb29sIGV3a192
aWV3X3NldHRpbmdfc2NyaXB0c19jYW5fb3Blbl93aW5kb3dzX3NldChFdmFzX09iamVjdCogZXdr
VmlldywgRWluYV9Cb29sIGFsbG93KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
ZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAgICBhbGxvdyA9ICEh
YWxsb3c7CiAgICAgaWYgKHByaXYtPnNldHRpbmdzLnNjcmlwdHNDYW5PcGVuV2luZG93cyAhPSBh
bGxvdykgewogICAgICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldEphdmFTY3JpcHRDYW5PcGVu
V2luZG93c0F1dG9tYXRpY2FsbHkoYWxsb3cpOwogICAgICAgICBwcml2LT5zZXR0aW5ncy5zY3Jp
cHRzQ2FuT3BlbldpbmRvd3MgPSBhbGxvdzsKICAgICB9Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfc2NyaXB0
c19jYW5fY2xvc2Vfd2luZG93c19nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7Ci0g
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFM
U0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJ
TkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnRE
YXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
cHJpdiwgZmFsc2UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5zY3JpcHRzQ2FuQ2xvc2VX
aW5kb3dzOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX2Nhbl9jbG9z
ZV93aW5kb3dzX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIGFsbG93KQogewot
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZB
TFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBF
SU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IHByaXYsIGZhbHNlKTsKICAgICBhbGxvdyA9ICEhYWxsb3c7CiAgICAgaWYgKHByaXYtPnNldHRp
bmdzLnNjcmlwdHNDYW5DbG9zZVdpbmRvd3MgIT0gYWxsb3cpIHsKICAgICAgICAgcHJpdi0+cGFn
ZVNldHRpbmdzLT5zZXRBbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93cyhhbGxvdyk7CiAgICAgICAg
IHByaXYtPnNldHRpbmdzLnNjcmlwdHNDYW5DbG9zZVdpbmRvd3MgPSBhbGxvdzsKICAgICB9Ci0g
ICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3
a192aWV3X3NldHRpbmdfcmVzaXphYmxlX3RleHRhcmVhc19nZXQoY29uc3QgRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
ZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5y
ZXNpemFibGVUZXh0YXJlYXM7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3Jlc2l6
YWJsZV90ZXh0YXJlYXNfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgZW5hYmxl
KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBF
SU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBw
cml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcs
IHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIHByaXYsIGZhbHNlKTsKICAgICBlbmFibGUgPSAhIWVuYWJsZTsKICAgICBpZiAocHJp
di0+c2V0dGluZ3MucmVzaXphYmxlVGV4dGFyZWFzICE9IGVuYWJsZSkgewogICAgICAgICBwcml2
LT5wYWdlU2V0dGluZ3MtPnNldFRleHRBcmVhc0FyZVJlc2l6YWJsZShlbmFibGUpOwogICAgICAg
ICBwcml2LT5zZXR0aW5ncy5yZXNpemFibGVUZXh0YXJlYXMgPSBlbmFibGU7CiAgICAgfQotICAg
IHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tf
dmlld19zZXR0aW5nX3ByaXZhdGVfYnJvd3NpbmdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tW
aWV3KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
LCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
bWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MucHJpdmF0
ZUJyb3dzaW5nOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dz
aW5nX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIGVuYWJsZSkKIHsKLSAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7
Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9G
QUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEs
IGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2
LCBmYWxzZSk7CiAgICAgZW5hYmxlID0gISFlbmFibGU7CiAgICAgaWYgKHByaXYtPnNldHRpbmdz
LnByaXZhdGVCcm93c2luZyAhPSBlbmFibGUpIHsKICAgICAgICAgcHJpdi0+cGFnZVNldHRpbmdz
LT5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGVuYWJsZSk7CiAgICAgICAgIHByaXYtPnNldHRp
bmdzLnByaXZhdGVCcm93c2luZyA9IGVuYWJsZTsKICAgICB9Ci0gICAgcmV0dXJuIEVJTkFfVFJV
RTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfb2Zm
bGluZV9hcHBfY2FjaGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewotICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsK
LSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZB
TFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwg
ZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYs
IGZhbHNlKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Mub2ZmbGluZUFwcENhY2hlOwogfQog
CiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19vZmZsaW5lX2FwcF9jYWNoZV9zZXQoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBlbmFibGUpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAg
IGVuYWJsZSA9ICEhZW5hYmxlOwogICAgIGlmIChwcml2LT5zZXR0aW5ncy5vZmZsaW5lQXBwQ2Fj
aGUgIT0gZW5hYmxlKSB7CiAgICAgICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0T2ZmbGluZVdl
YkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKGVuYWJsZSk7CiAgICAgICAgIHByaXYtPnNldHRpbmdz
Lm9mZmxpbmVBcHBDYWNoZSA9IGVuYWJsZTsKICAgICB9Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19jYXJl
dF9icm93c2luZ19nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0Up
OworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxz
ZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFs
c2UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5jYXJldEJyb3dzaW5nOwogfQogCiBFaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19jYXJldF9icm93c2luZ19zZXQoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIEVpbmFfQm9vbCBlbmFibGUpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIGVuYWJsZSA9
ICEhZW5hYmxlOwogICAgIGlmIChwcml2LT5zZXR0aW5ncy5jYXJldEJyb3dzaW5nICE9IGVuYWJs
ZSkgewogICAgICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldENhcmV0QnJvd3NpbmdFbmFibGVk
KGVuYWJsZSk7CiAgICAgICAgIHByaXYtPnNldHRpbmdzLmNhcmV0QnJvd3NpbmcgPSBlbmFibGU7
CiAgICAgfQotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGNv
bnN0IGNoYXIqIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX2dldChjb25zdCBFdmFz
X09iamVjdCogZXdrVmlldykKQEAgLTIxNDIsMTQgKzIxNDIsMTQgQEAgY29uc3QgY2hhciogZXdr
X3ZpZXdfc2V0dGluZ19lbmNvZGluZ19jdXN0b21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tW
aWV3KQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19jdXN0b21fc2V0KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBlbmNvZGluZykKIHsKLSAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7
CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNl
KTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxz
ZSk7CiAgICAgRXZhc19PYmplY3QqIG1haW5fZnJhbWUgPSBld2tfdmlld19mcmFtZV9tYWluX2dl
dChld2tWaWV3KTsKICAgICBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lID0gRVdLUHJpdmF0ZTo6
Y29yZUZyYW1lKG1haW5fZnJhbWUpOwogICAgIERCRygiJXMiLCBlbmNvZGluZyk7CiAgICAgaWYg
KGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+c2V0dGluZ3MuZW5jb2RpbmdDdXN0b20s
IGVuY29kaW5nKSkKICAgICAgICAgY29yZUZyYW1lLT5sb2FkZXIoKS0+cmVsb2FkV2l0aE92ZXJy
aWRlRW5jb2RpbmcoU3RyaW5nOjpmcm9tVVRGOChlbmNvZGluZykpOwotICAgIHJldHVybiBFSU5B
X1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGNvbnN0IGNoYXIqIGV3a192aWV3X3NldHRp
bmdfZW5jb2RpbmdfZGVmYXVsdF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCkBAIC0y
MTYxLDQ5ICsyMTYxLDQ5IEBAIGNvbnN0IGNoYXIqIGV3a192aWV3X3NldHRpbmdfZW5jb2Rpbmdf
ZGVmYXVsdF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAKIEVpbmFfQm9vbCBld2tf
dmlld19zZXR0aW5nX2VuY29kaW5nX2RlZmF1bHRfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBj
b25zdCBjaGFyKiBlbmNvZGluZykKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CiAgICAgaWYgKGVpbmFfc3Ry
aW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+c2V0dGluZ3MuZW5jb2RpbmdEZWZhdWx0LCBlbmNvZGlu
ZykpCiAgICAgICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0RGVmYXVsdFRleHRFbmNvZGluZ05h
bWUoU3RyaW5nOjpmcm9tVVRGOChlbmNvZGluZykpOwotICAgIHJldHVybiBFSU5BX1RSVUU7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5n
X2RldGVjdG9yX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIGVuYWJsZSkKIHsK
LSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9G
QUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwg
RUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2LCBmYWxzZSk7CiAgICAgZW5hYmxlID0gISFlbmFibGU7CiAgICAgaWYgKHByaXYtPnNl
dHRpbmdzLmVuY29kaW5nRGV0ZWN0b3IgIT0gZW5hYmxlKSB7CiAgICAgICAgIHByaXYtPnBhZ2VT
ZXR0aW5ncy0+c2V0VXNlc0VuY29kaW5nRGV0ZWN0b3IoZW5hYmxlKTsKICAgICAgICAgcHJpdi0+
c2V0dGluZ3MuZW5jb2RpbmdEZXRlY3RvciA9IGVuYWJsZTsKICAgICB9Ci0gICAgcmV0dXJuIEVJ
TkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRp
bmdfZW5jb2RpbmdfZGV0ZWN0b3JfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewot
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZB
TFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBF
SU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IHByaXYsIGZhbHNlKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZW5jb2RpbmdEZXRlY3Rv
cjsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9leHRy
YXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewotICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAg
ICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZW5hYmxlRGV2ZWxvcGVyRXh0cmFzOwogfQogCiBFaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZGV2ZWxvcGVyX2V4dHJhc19zZXQoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBlbmFibGUpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAg
IGVuYWJsZSA9ICEhZW5hYmxlOwogICAgIGlmIChwcml2LT5zZXR0aW5ncy5lbmFibGVEZXZlbG9w
ZXJFeHRyYXMgIT0gZW5hYmxlKSB7CiAgICAgICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0RGV2
ZWxvcGVyRXh0cmFzRW5hYmxlZChlbmFibGUpOwogICAgICAgICBwcml2LT5zZXR0aW5ncy5lbmFi
bGVEZXZlbG9wZXJFeHRyYXMgPSBlbmFibGU7CiAgICAgfQotICAgIHJldHVybiBFSU5BX1RSVUU7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGludCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbWluaW11
bV9zaXplX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKQEAgLTIyMTUsMTMgKzIyMTUs
MTMgQEAgaW50IGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX3NpemVfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tWaWV3KQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X21p
bmltdW1fc2l6ZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCBzaXplKQogewotICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsK
LSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZB
TFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwg
ZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYs
IGZhbHNlKTsKICAgICBpZiAocHJpdi0+c2V0dGluZ3MuZm9udE1pbmltdW1TaXplICE9IHNpemUp
IHsKICAgICAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRNaW5pbXVtRm9udFNpemUoc2l6ZSk7
CiAgICAgICAgIHByaXYtPnNldHRpbmdzLmZvbnRNaW5pbXVtU2l6ZSA9IHNpemU7CiAgICAgfQot
ICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGludCBld2tfdmll
d19zZXR0aW5nX2ZvbnRfbWluaW11bV9sb2dpY2FsX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBld2tWaWV3KQpAQCAtMjIzMywxMyArMjIzMywxMyBAQCBpbnQgZXdrX3ZpZXdfc2V0dGluZ19m
b250X21pbmltdW1fbG9naWNhbF9zaXplX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykK
IAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZV9z
ZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCBzaXplKQogewotICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAg
ICBpZiAocHJpdi0+c2V0dGluZ3MuZm9udE1pbmltdW1Mb2dpY2FsU2l6ZSAhPSBzaXplKSB7CiAg
ICAgICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0TWluaW11bUxvZ2ljYWxGb250U2l6ZShzaXpl
KTsKICAgICAgICAgcHJpdi0+c2V0dGluZ3MuZm9udE1pbmltdW1Mb2dpY2FsU2l6ZSA9IHNpemU7
CiAgICAgfQotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGlu
dCBld2tfdmlld19zZXR0aW5nX2ZvbnRfZGVmYXVsdF9zaXplX2dldChjb25zdCBFdmFzX09iamVj
dCogZXdrVmlldykKQEAgLTIyNTEsMTMgKzIyNTEsMTMgQEAgaW50IGV3a192aWV3X3NldHRpbmdf
Zm9udF9kZWZhdWx0X3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogCiBFaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X2RlZmF1bHRfc2l6ZV9zZXQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIGludCBzaXplKQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAgICBpZiAocHJpdi0+c2V0
dGluZ3MuZm9udERlZmF1bHRTaXplICE9IHNpemUpIHsKICAgICAgICAgcHJpdi0+cGFnZVNldHRp
bmdzLT5zZXREZWZhdWx0Rm9udFNpemUoc2l6ZSk7CiAgICAgICAgIHByaXYtPnNldHRpbmdzLmZv
bnREZWZhdWx0U2l6ZSA9IHNpemU7CiAgICAgfQotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIGludCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbW9ub3NwYWNlX3Np
emVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQpAQCAtMjI2OSwxMyArMjI2OSwxMyBA
QCBpbnQgZXdrX3ZpZXdfc2V0dGluZ19mb250X21vbm9zcGFjZV9zaXplX2dldChjb25zdCBFdmFz
X09iamVjdCogZXdrVmlldykKIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9tb25v
c3BhY2Vfc2l6ZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCBzaXplKQogewotICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsK
LSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZB
TFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwg
ZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYs
IGZhbHNlKTsKICAgICBpZiAocHJpdi0+c2V0dGluZ3MuZm9udE1vbm9zcGFjZVNpemUgIT0gc2l6
ZSkgewogICAgICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldERlZmF1bHRGaXhlZEZvbnRTaXpl
KHNpemUpOwogICAgICAgICBwcml2LT5zZXR0aW5ncy5mb250TW9ub3NwYWNlU2l6ZSA9IHNpemU7
CiAgICAgfQotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGNv
bnN0IGNoYXIqIGV3a192aWV3X2ZvbnRfZmFtaWx5X25hbWVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBFd2tfRm9udF9GYW1pbHkgZm9udEZhbWlseSkKQEAgLTIzMDIsOCArMjMwMiw4
IEBAIGNvbnN0IGNoYXIqIGV3a192aWV3X2ZvbnRfZmFtaWx5X25hbWVfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBFd2tfRm9udF9GCiAKIEVpbmFfQm9vbCBld2tfdmlld19mb250X2Zh
bWlseV9uYW1lX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0ZvbnRfRmFtaWx5IGZvbnRG
YW1pbHksIGNvbnN0IGNoYXIqIG5hbWUpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogCiAgICAgc3dpdGNo
IChmb250RmFtaWx5KSB7CiAgICAgY2FzZSBFV0tfRk9OVF9GQU1JTFlfU1RBTkRBUkQ6CkBAIC0y
MzMxLDY3ICsyMzMxLDY3IEBAIEVpbmFfQm9vbCBld2tfdmlld19mb250X2ZhbWlseV9uYW1lX3Nl
dChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0ZvbnRfRmFtaWx5IGZvCiAgICAgICAgICAgICBw
cml2LT5wYWdlU2V0dGluZ3MtPnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoQXRvbWljU3RyaW5nOjpm
cm9tVVRGOChuYW1lKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJl
dHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0
dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3
X3NldHRpbmdfc3BhdGlhbF9uYXZpZ2F0aW9uX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmll
dykKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwg
RUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
cHJpdiwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBwcml2LCBmYWxzZSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLnNwYXRpYWxO
YXZpZ2F0aW9uOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19zcGF0aWFsX25hdmln
YXRpb25fc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgZW5hYmxlKQogewotICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNF
KTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5B
X0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHBy
aXYsIGZhbHNlKTsKICAgICBlbmFibGUgPSAhIWVuYWJsZTsKICAgICBpZiAocHJpdi0+c2V0dGlu
Z3Muc3BhdGlhbE5hdmlnYXRpb24gIT0gZW5hYmxlKSB7CiAgICAgICAgIHByaXYtPnBhZ2VTZXR0
aW5ncy0+c2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGVuYWJsZSk7CiAgICAgICAgIHByaXYt
PnNldHRpbmdzLnNwYXRpYWxOYXZpZ2F0aW9uID0gZW5hYmxlOwogICAgIH0KLSAgICByZXR1cm4g
RUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ19sb2NhbF9zdG9yYWdlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIHsKLSAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxT
RSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlO
QV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBw
cml2LCBmYWxzZSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmxvY2FsU3RvcmFnZTsKIH0K
IAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9zZXQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBlbmFibGUpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIGVu
YWJsZSA9ICEhZW5hYmxlOwogICAgIGlmIChwcml2LT5zZXR0aW5ncy5sb2NhbFN0b3JhZ2UgIT0g
ZW5hYmxlKSB7CiAgICAgICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0TG9jYWxTdG9yYWdlRW5h
YmxlZChlbmFibGUpOwogICAgICAgICBwcml2LT5zZXR0aW5ncy5sb2NhbFN0b3JhZ2UgPSBlbmFi
bGU7CiAgICAgfQotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3BhZ2VfY2FjaGVfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGlu
Z3MucGFnZUNhY2hlOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19wYWdlX2NhY2hl
X3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIGVuYWJsZSkKIHsKLSAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0g
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxT
RSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZh
bHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBm
YWxzZSk7CiAgICAgZW5hYmxlID0gISFlbmFibGU7CiAgICAgaWYgKHByaXYtPnNldHRpbmdzLnBh
Z2VDYWNoZSAhPSBlbmFibGUpIHsKICAgICAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRVc2Vz
UGFnZUNhY2hlKGVuYWJsZSk7CiAgICAgICAgIHByaXYtPnNldHRpbmdzLnBhZ2VDYWNoZSA9IGVu
YWJsZTsKICAgICB9Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3Bh
dGhfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQpAQCAtMjQwMywyOCArMjQwMywyOCBA
QCBjb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZGF0YWJhc2VfcGF0
aF9nZXQoY29uc3QgRXZhc19PYmplY3QqCiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2xv
Y2FsX3N0b3JhZ2VfZGF0YWJhc2VfcGF0aF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0
IGNoYXIqIHBhdGgpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
bWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIGlmIChlaW5hX3N0cmluZ3NoYXJl
X3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLmxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCwgcGF0aCkp
CiAgICAgICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0TG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRo
KFN0cmluZzo6ZnJvbVVURjgocGF0aCkpOwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX21pbmltdW1fdGltZXJf
aW50ZXJ2YWxfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBkb3VibGUgaW50ZXJ2YWwpCiB7Ci0g
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFfRkFM
U0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIEVJ
TkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnRE
YXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
cHJpdiwgZmFsc2UpOwogICAgIGlmIChmYWJzKHByaXYtPnNldHRpbmdzLmRvbVRpbWVySW50ZXJ2
YWwgLSBpbnRlcnZhbCkgPj0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjplcHNpbG9uKCkp
IHsKICAgICAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRNaW5ET01UaW1lckludGVydmFsKGlu
dGVydmFsKTsKICAgICAgICAgcHJpdi0+c2V0dGluZ3MuZG9tVGltZXJJbnRlcnZhbCA9IGludGVy
dmFsOwogICAgIH0KLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQog
CiBkb3VibGUgZXdrX3ZpZXdfc2V0dGluZ19taW5pbXVtX3RpbWVyX2ludGVydmFsX2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrVmlldykKIHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CiAgICAgcmV0dXJuIHBy
aXYtPnNldHRpbmdzLmRvbVRpbWVySW50ZXJ2YWw7CiB9CiAKQEAgLTI2NDEsMTEgKzI2NDEsMTEg
QEAgdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3RyYW5zbGF0ZShFd2tfVmlld19QYWludF9D
b250ZXh0KiBjb250ZXh0LCBmbG9hdCB4LAogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBjYWlyb190KiBjciwgY29uc3QgRWluYV9SZWN0YW5n
bGUqIGFyZWEpCiB7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYsIEVJ
TkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjciwgRUlOQV9G
QUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGFyZWEsIEVJTkFfRkFM
U0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2LCBmYWxzZSk7Cisg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNyLCBmYWxzZSk7CisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGFyZWEsIGZhbHNlKTsKICAgICBXZWJDb3JlOjpGcmFt
ZVZpZXcqIHZpZXcgPSBwcml2LT5tYWluRnJhbWUtPnZpZXcoKTsKLSAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwodmlldywgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKHZpZXcsIGZhbHNlKTsKIAogICAgIGlmICh2aWV3LT5uZWVkc0xheW91
dCgpKQogICAgICAgICB2aWV3LT5mb3JjZUxheW91dCgpOwpAQCAtMjY2MSwxNiArMjY2MSwxNiBA
QCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBj
YWlyb190KiBjciwgY29uc3QgRWluYV9SZQogICAgIGdyYXBoaWNzQ29udGV4dC5yZXN0b3JlKCk7
CiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiAKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJl
dHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnRfY29udGVudHMoRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBjYWlyb190KiBjciwgY29uc3QgRWluYV9SZWN0YW5nbGUq
IGFyZWEpCiB7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYsIEVJTkFf
RkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjciwgRUlOQV9GQUxT
RSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGFyZWEsIEVJTkFfRkFMU0Up
OworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2LCBmYWxzZSk7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNyLCBmYWxzZSk7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKGFyZWEsIGZhbHNlKTsKICAgICBXZWJDb3JlOjpGcmFtZVZp
ZXcqIHZpZXcgPSBwcml2LT5tYWluRnJhbWUtPnZpZXcoKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwodmlldywgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHZpZXcsIGZhbHNlKTsKIAogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dCBncmFwaGljc0NvbnRleHQoY3IpOwogICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdChhcmVhLT54
LCBhcmVhLT55LCBhcmVhLT53LCBhcmVhLT5oKTsKQEAgLTI2ODQsNyArMjY4NCw3IEBAIEVpbmFf
Qm9vbCBld2tfdmlld19wYWludF9jb250ZW50cyhFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYs
IGNhaXJvX3QqIGNyLCBjb25zCiAgICAgZ3JhcGhpY3NDb250ZXh0LnJlc3RvcmUoKTsKICAgICBj
YWlyb19yZXN0b3JlKGNyKTsKIAotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIApAQCAtMjcwOSw3ICsyNzA5LDcgQEAgdm9pZCBld2tfdmlld19yZWFkeShFdmFz
X09iamVjdCogZXdrVmlldykKICAqIEVtaXRzIHNpZ25hbDogImlucHV0bWV0aG9kLGNoYW5nZWQi
IHdpdGggYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBpdCdzCiAgKiBlbmFibGVkIG9yIG5v
dC4KICAqLwotdm9pZCBld2tfdmlld19pbnB1dF9tZXRob2Rfc3RhdGVfc2V0KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBFaW5hX0Jvb2wgYWN0aXZlKQordm9pZCBld2tfdmlld19pbnB1dF9tZXRob2Rf
c3RhdGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIGFjdGl2ZSkKIHsKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CiAgICAgRVdLX1ZJRVdf
UFJJVl9HRVQoc21hcnREYXRhLCBwcml2KTsKQEAgLTI5MzksOCArMjkzOSw4IEBAIHZvaWQgZXdr
X3ZpZXdfcmVzdG9yZV9zdGF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZy
YW1lKQogICogYmUgZnJlZWQgYWZ0ZXIgcmV0dXJuaW5nIHRvIHRoaXMgZnVuY3Rpb24uCiAgKgog
ICogQHBhcmFtIGV3a1ZpZXcgQ3VycmVudCB2aWV3LgotICogQHBhcmFtIGphdmFzY3JpcHQgQGMg
RUlOQV9UUlVFIGlmIHRoZSBuZXcgd2luZG93IGlzIG9yaWdpbmF0ZWQgZnJvbSBqYXZhc2NyaXB0
LAotICogQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqIEBwYXJhbSBqYXZhc2NyaXB0IEBjIHRy
dWUgaWYgdGhlIG5ldyB3aW5kb3cgaXMgb3JpZ2luYXRlZCBmcm9tIGphdmFzY3JpcHQsCisgKiBA
YyBmYWxzZSBvdGhlcndpc2UKICAqIEBwYXJhbSB3aWR0aGluZG93X2ZlYXR1cmVzIEZlYXR1cmVz
IG9mIHRoZSBuZXcgd2luZG93IGJlaW5nIGNyZWF0ZWQuIElmIGl0J3MgQGMKICAqIE5VTEwsIGl0
IHdpbGwgYmUgY3JlYXRlZCBhIHdpbmRvdyB3aXRoIGRlZmF1bHQgZmVhdHVyZXMuCiAgKgpAQCAt
Mjk0OSw3ICsyOTQ5LDcgQEAgdm9pZCBld2tfdmlld19yZXN0b3JlX3N0YXRlKEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUpCiAgKgogICogQHNlZSBld2tfd2luZG93X2Zl
YXR1cmVzX3JlZigpLgogICovCi1FdmFzX09iamVjdCogZXdrX3ZpZXdfd2luZG93X2NyZWF0ZShF
dmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIGphdmFzY3JpcHQsIGNvbnN0IFdlYkNvcmU6
OldpbmRvd0ZlYXR1cmVzKiBjb3JlRmVhdHVyZXMpCitFdmFzX09iamVjdCogZXdrX3ZpZXdfd2lu
ZG93X2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBqYXZhc2NyaXB0LCBjb25zdCBX
ZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyogY29yZUZlYXR1cmVzKQogewogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKIApAQCAtMzAxNSw3ICszMDE1
LDcgQEAgdm9pZCBld2tfdmlld19tb3VzZV9saW5rX2hvdmVyX291dChFdmFzX09iamVjdCogZXdr
VmlldykKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJ0b29sYmFycyx2aXNpYmxlLHNldCIgd2l0aCBh
IHBvaW50ZXIgdG8gYSBib29sZWFuLgogICovCi12b2lkIGV3a192aWV3X3Rvb2xiYXJzX3Zpc2li
bGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgdmlzaWJsZSkKK3ZvaWQgZXdr
X3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgdmlz
aWJsZSkKIHsKICAgICBEQkcoImV3a1ZpZXc9JXAgKHZpc2libGU9JWQpIiwgZXdrVmlldywgISF2
aXNpYmxlKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJ0
b29sYmFycyx2aXNpYmxlLHNldCIsICZ2aXNpYmxlKTsKQEAgLTMwMzIsMTAgKzMwMzIsMTAgQEAg
dm9pZCBld2tfdmlld190b29sYmFyc192aXNpYmxlX3NldChFdmFzX09iamVjdCogZXdrVmlldywg
RWluYV9Cb29sIHZpc2libGUpCiAgKgogICogRW1pdHMgc2lnbmFsOiAidG9vbGJhcnMsdmlzaWJs
ZSxnZXQiIHdpdGggYSBwb2ludGVyIHRvIGEgYm9vbGVhbi4KICAqLwotdm9pZCBld2tfdmlld190
b29sYmFyc192aXNpYmxlX2dldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sKiB2aXNp
YmxlKQordm9pZCBld2tfdmlld190b29sYmFyc192aXNpYmxlX2dldChFdmFzX09iamVjdCogZXdr
VmlldywgYm9vbCogdmlzaWJsZSkKIHsKICAgICBEQkcoIiVzLCBvPSVwIiwgX19mdW5jX18sIGV3
a1ZpZXcpOwotICAgICp2aXNpYmxlID0gRUlOQV9GQUxTRTsKKyAgICAqdmlzaWJsZSA9IGZhbHNl
OwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInRvb2xiYXJz
LHZpc2libGUsZ2V0IiwgdmlzaWJsZSk7CiB9CiAKQEAgLTMwNDgsNyArMzA0OCw3IEBAIHZvaWQg
ZXdrX3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFf
Qm9vbCogdmlzaWJsZSkKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJzdGF0dXNiYXIsdmlzaWJsZSxz
ZXQiIHdpdGggYSBwb2ludGVyIHRvIGEgYm9vbGVhbi4KICAqLwotdm9pZCBld2tfdmlld19zdGF0
dXNiYXJfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCB2aXNpYmxl
KQordm9pZCBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIGJvb2wgIHZpc2libGUpCiB7CiAgICAgREJHKCJld2tWaWV3PSVwICh2aXNpYmxlPSVkKSIs
IGV3a1ZpZXcsICEhdmlzaWJsZSk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bChld2tWaWV3LCAic3RhdHVzYmFyLHZpc2libGUsc2V0IiwgJnZpc2libGUpOwpAQCAtMzA2NSwx
MCArMzA2NSwxMCBAQCB2b2lkIGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX3NldChFdmFzX09i
amVjdCogZXdrVmlldywgRWluYV9Cb29sIHZpc2libGUpCiAgKgogICogRW1pdHMgc2lnbmFsOiAi
c3RhdHVzYmFyLHZpc2libGUsZ2V0IiB3aXRoIGEgcG9pbnRlciB0byBhIGJvb2xlYW4uCiAgKi8K
LXZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBFaW5hX0Jvb2wqIHZpc2libGUpCit2b2lkIGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX2dl
dChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCogdmlzaWJsZSkKIHsKICAgICBEQkcoIiVzLCBv
PSVwIiwgX19mdW5jX18sIGV3a1ZpZXcpOwotICAgICp2aXNpYmxlID0gRUlOQV9GQUxTRTsKKyAg
ICAqdmlzaWJsZSA9IGZhbHNlOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwo
ZXdrVmlldywgInN0YXR1c2Jhcix2aXNpYmxlLGdldCIsIHZpc2libGUpOwogfQogCkBAIC0zMDk3
LDcgKzMwOTcsNyBAQCB2b2lkIGV3a192aWV3X3N0YXR1c2Jhcl90ZXh0X3NldChFdmFzX09iamVj
dCogZXdrVmlldywgY29uc3QgY2hhciogdGV4dCkKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJzY3Jv
bGxiYXJzLHZpc2libGUsc2V0IiB3aXRoIGEgcG9pbnRlciB0byBhIGJvb2xlYW4uCiAgKi8KLXZv
aWQgZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxlX3NldChFdmFzX09iamVjdCogZXdrVmlldywg
RWluYV9Cb29sIHZpc2libGUpCit2b2lkIGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9zZXQo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgdmlzaWJsZSkKIHsKICAgICBEQkcoImV3a1ZpZXc9
JXAgKHZpc2libGU9JWQpIiwgZXdrVmlldywgISF2aXNpYmxlKTsKICAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJzY3JvbGxiYXJzLHZpc2libGUsc2V0IiwgJnZp
c2libGUpOwpAQCAtMzExNCwxMCArMzExNCwxMCBAQCB2b2lkIGV3a192aWV3X3Njcm9sbGJhcnNf
dmlzaWJsZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCB2aXNpYmxlKQogICoK
ICAqIEVtaXRzIHNpZ25hbDogInNjcm9sbGJhcnMsdmlzaWJsZSxnZXQiIHdpdGggYSBwb2ludGVy
IHRvIGEgYm9vbGVhbi4KICAqLwotdm9pZCBld2tfdmlld19zY3JvbGxiYXJzX3Zpc2libGVfZ2V0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wqIHZpc2libGUpCit2b2lkIGV3a192aWV3
X3Njcm9sbGJhcnNfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wqIHZpc2li
bGUpCiB7CiAgICAgREJHKCIlcywgbz0lcCIsIF9fZnVuY19fLCBld2tWaWV3KTsKLSAgICAqdmlz
aWJsZSA9IEVJTkFfRkFMU0U7CisgICAgKnZpc2libGUgPSBmYWxzZTsKICAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJzY3JvbGxiYXJzLHZpc2libGUsZ2V0Iiwg
dmlzaWJsZSk7CiB9CiAKQEAgLTMxMzAsNyArMzEzMCw3IEBAIHZvaWQgZXdrX3ZpZXdfc2Nyb2xs
YmFyc192aXNpYmxlX2dldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sKiB2aXNpYmxl
KQogICoKICAqIEVtaXRzIHNpZ25hbDogIm1lbnViYXIsdmlzaWJsZSxzZXQiIHdpdGggYSBwb2lu
dGVyIHRvIGEgYm9vbGVhbi4KICAqLwotdm9pZCBld2tfdmlld19tZW51YmFyX3Zpc2libGVfc2V0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgdmlzaWJsZSkKK3ZvaWQgZXdrX3ZpZXdf
bWVudWJhcl92aXNpYmxlX3NldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCB2aXNpYmxlKQog
ewogICAgIERCRygiZXdrVmlldz0lcCAodmlzaWJsZT0lZCkiLCBld2tWaWV3LCAhIXZpc2libGUp
OwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgIm1lbnViYXIs
dmlzaWJsZSxzZXQiLCAmdmlzaWJsZSk7CkBAIC0zMTQ3LDEwICszMTQ3LDEwIEBAIHZvaWQgZXdr
X3ZpZXdfbWVudWJhcl92aXNpYmxlX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29s
IHZpc2libGUpCiAgKgogICogRW1pdHMgc2lnbmFsOiAibWVudWJhcix2aXNpYmxlLGdldCIgd2l0
aCBhIHBvaW50ZXIgdG8gYSBib29sZWFuLgogICovCi12b2lkIGV3a192aWV3X21lbnViYXJfdmlz
aWJsZV9nZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCogdmlzaWJsZSkKK3ZvaWQg
ZXdrX3ZpZXdfbWVudWJhcl92aXNpYmxlX2dldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCog
dmlzaWJsZSkKIHsKICAgICBEQkcoIiVzLCBvPSVwIiwgX19mdW5jX18sIGV3a1ZpZXcpOwotICAg
ICp2aXNpYmxlID0gRUlOQV9GQUxTRTsKKyAgICAqdmlzaWJsZSA9IGZhbHNlOwogICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgIm1lbnViYXIsdmlzaWJsZSxnZXQi
LCB2aXNpYmxlKTsKIH0KIApAQCAtMzIxMiwyNiArMzIxMiwyNiBAQCB2b2lkIGV3a192aWV3X3J1
bl9qYXZhc2NyaXB0X2FsZXJ0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJh
bWUsIGNvbgogICAgIHNtYXJ0RGF0YS0+YXBpLT5ydW5famF2YXNjcmlwdF9hbGVydChzbWFydERh
dGEsIGZyYW1lLCBtZXNzYWdlKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3J1bl9qYXZhc2Ny
aXB0X2NvbmZpcm0oRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29u
c3QgY2hhciogbWVzc2FnZSkKK2Jvb2wgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfY29uZmlybShF
dmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBtZXNz
YWdlKQogewogICAgIERCRygiZXdrVmlldz0lcCBmcmFtZT0lcCBtZXNzYWdlPSVzIiwgZXdrVmll
dywgZnJhbWUsIG1lc3NhZ2UpOwotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoc21hcnREYXRhLT5hcGksIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLCBmYWxzZSk7CiAKICAgICBpZiAoIXNtYXJ0
RGF0YS0+YXBpLT5ydW5famF2YXNjcmlwdF9jb25maXJtKQotICAgICAgICByZXR1cm4gRUlOQV9G
QUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHNtYXJ0RGF0YS0+YXBp
LT5ydW5famF2YXNjcmlwdF9jb25maXJtKHNtYXJ0RGF0YSwgZnJhbWUsIG1lc3NhZ2UpOwogfQog
Ci1FaW5hX0Jvb2wgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIGNvbnN0IGNo
YXIqIGRlZmF1bHRWYWx1ZSwgY2hhcioqIHZhbHVlKQorYm9vbCBld2tfdmlld19ydW5famF2YXNj
cmlwdF9wcm9tcHQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29u
c3QgY2hhciogbWVzc2FnZSwgY29uc3QgY2hhciogZGVmYXVsdFZhbHVlLCBjaGFyKiogdmFsdWUp
CiB7CiAgICAgREJHKCJld2tWaWV3PSVwIGZyYW1lPSVwIG1lc3NhZ2U9JXMiLCBld2tWaWV3LCBm
cmFtZSwgbWVzc2FnZSk7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChzbWFydERhdGEtPmFwaSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoc21hcnREYXRhLT5hcGksIGZhbHNlKTsKIAogICAgIGlmICghc21hcnREYXRh
LT5hcGktPnJ1bl9qYXZhc2NyaXB0X3Byb21wdCkKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7
CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBzbWFydERhdGEtPmFwaS0+cnVu
X2phdmFzY3JpcHRfcHJvbXB0KHNtYXJ0RGF0YSwgZnJhbWUsIG1lc3NhZ2UsIGRlZmF1bHRWYWx1
ZSwgdmFsdWUpOwogfQpAQCAtMzI0MCwyMSArMzI0MCwyMSBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdf
cnVuX2phdmFzY3JpcHRfcHJvbXB0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCog
ZnJhbQogICogQGludGVybmFsCiAgKiBEZWxlZ2F0ZXMgdG8gY2xpZW50IHRvIGRlY2lkZSB3aGV0
aGVyIGEgc2NyaXB0IG11c3QgYmUgc3RvcHBlZCBiZWNhdXNlIGl0J3MKICAqIHJ1bm5pbmcgZm9y
IHRvbyBsb25nLiBJZiBjbGllbnQgZG9lcyBub3QgaW1wbGVtZW50IGl0LCBpdCBnb2VzIHRvIGRl
ZmF1bHQKLSAqIGltcGxlbWVudGF0aW9uLCB3aGljaCBsb2dzIGFuZCByZXR1cm5zIEVJTkFfRkFM
U0UuIENsaWVudCBtYXkgcmVtb3ZlIGxvZyBieQotICogc2V0dGluZyB0aGlzIGZ1bmN0aW9uIDAs
IHdoaWNoIHdpbGwganVzdCByZXR1cm4gRUlOQV9GQUxTRS4KKyAqIGltcGxlbWVudGF0aW9uLCB3
aGljaCBsb2dzIGFuZCByZXR1cm5zIGZhbHNlLiBDbGllbnQgbWF5IHJlbW92ZSBsb2cgYnkKKyAq
IHNldHRpbmcgdGhpcyBmdW5jdGlvbiAwLCB3aGljaCB3aWxsIGp1c3QgcmV0dXJuIGZhbHNlLgog
ICoKICAqIEBwYXJhbSBld2tWaWV3IFZpZXcuCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUg
aWYgc2NyaXB0IHNob3VsZCBiZSBzdG9wcGVkOyBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQorICog
QHJldHVybiBAYyB0cnVlIGlmIHNjcmlwdCBzaG91bGQgYmUgc3RvcHBlZDsgQGMgZmFsc2Ugb3Ro
ZXJ3aXNlCiAgKi8KLUVpbmFfQm9vbCBld2tfdmlld19zaG91bGRfaW50ZXJydXB0X2phdmFzY3Jp
cHQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCitib29sIGV3a192aWV3X3Nob3VsZF9pbnRlcnJ1cHRf
amF2YXNjcmlwdChFdmFzX09iamVjdCogZXdrVmlldykKIHsKICAgICBEQkcoImV3a1ZpZXc9JXAi
LCBld2tWaWV3KTsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNt
YXJ0RGF0YS0+YXBpLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChzbWFydERhdGEtPmFwaSwgZmFsc2UpOwogCiAgICAgaWYgKCFzbWFydERhdGEtPmFw
aS0+c2hvdWxkX2ludGVycnVwdF9qYXZhc2NyaXB0KQotICAgICAgICByZXR1cm4gRUlOQV9GQUxT
RTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHNtYXJ0RGF0YS0+YXBpLT5z
aG91bGRfaW50ZXJydXB0X2phdmFzY3JpcHQoc21hcnREYXRhKTsKIH0KQEAgLTMyOTUsMTYgKzMy
OTUsMTYgQEAgdWludDY0X3QgZXdrX3ZpZXdfZXhjZWVkZWRfZGF0YWJhc2VfcXVvdGEoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmEKICAqIEBwYXJhbSBhY2NlcHRNSU1FVHlw
ZXMgTGlzdCBvZiBhY2NlcHRlZCBtaW1lIHR5cGVzLiBJdCBpcyBwYXNzZWQgdG8gY2hpbGQgb2Jq
ZWN0cyBhcyBhbiBFaW5hX0xpc3Qgb2YgY2hhciBwb2ludGVycyB0aGF0IGlzIGZyZWVkIGF1dG9t
YXRpY2FsbHkuCiAgKiBAcGFyYW0gc2VsZWN0ZWRGaWxlbmFtZXMgTGlzdCBvZiBmaWxlcyBzZWxl
Y3RlZC4KICAqCi0gKiBAcmV0dXJuIEBFSU5BX0ZBTFNFIGlmIHVzZXIgY2FuY2VsZWQgZmlsZSBz
ZWxlY3Rpb247IEBFSU5BX1RSVUUgaWYgY29uZmlybWVkLgorICogQHJldHVybiBAZmFsc2UgaWYg
dXNlciBjYW5jZWxlZCBmaWxlIHNlbGVjdGlvbjsgQHRydWUgaWYgY29uZmlybWVkLgogICovCi1F
aW5hX0Jvb2wgZXdrX3ZpZXdfcnVuX29wZW5fcGFuZWwoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2
YXNfT2JqZWN0KiBmcmFtZSwgYm9vbCBhbGxvd3NNdWx0aXBsZUZpbGVzLCBjb25zdCBXVEY6OlZl
Y3RvcjxXVEY6OlN0cmluZz4mIGFjY2VwdE1JTUVUeXBlcywgRWluYV9MaXN0Kiogc2VsZWN0ZWRG
aWxlbmFtZXMpCitib29sIGV3a192aWV3X3J1bl9vcGVuX3BhbmVsKEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBFdmFzX09iamVjdCogZnJhbWUsIGJvb2wgYWxsb3dzTXVsdGlwbGVGaWxlcywgY29uc3Qg
V1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBhY2NlcHRNSU1FVHlwZXMsIEVpbmFfTGlzdCoqIHNl
bGVjdGVkRmlsZW5hbWVzKQogewogICAgIERCRygiZXdrVmlldz0lcCBmcmFtZT0lcCBhbGxvd3Nf
bXVsdGlwbGVfZmlsZXM9JWQiLCBld2tWaWV3LCBmcmFtZSwgYWxsb3dzTXVsdGlwbGVGaWxlcyk7
Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFf
RkFMU0UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmFw
aSwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21h
cnREYXRhLT5hcGksIGZhbHNlKTsKIAogICAgIGlmICghc21hcnREYXRhLT5hcGktPnJ1bl9vcGVu
X3BhbmVsKQotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgKnNlbGVjdGVkRmlsZW5hbWVzID0gMDsKIApAQCAtMzMzMyw3ICszMzMzLDcgQEAg
dm9pZCBld2tfdmlld19yZXBhaW50KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3JkIHgs
IEV2YXNfQ29vcmQgeSwgRXZhc19Db28KICAgICBfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZChzbWFy
dERhdGEpOwogfQogCi12b2lkIGV3a192aWV3X3Njcm9sbChFdmFzX09iamVjdCogZXdrVmlldywg
RXZhc19Db29yZCBkeCwgRXZhc19Db29yZCBkeSwgRXZhc19Db29yZCBzY3JvbGxYLCBFdmFzX0Nv
b3JkIHNjcm9sbFksIEV2YXNfQ29vcmQgc2Nyb2xsV2lkdGgsIEV2YXNfQ29vcmQgc2Nyb2xsSGVp
Z2h0LCBFdmFzX0Nvb3JkIGNlbnRlclgsIEV2YXNfQ29vcmQgY2VudGVyWSwgRXZhc19Db29yZCBj
ZW50ZXJXaWR0aCwgRXZhc19Db29yZCBjZW50ZXJIZWlnaHQsIEVpbmFfQm9vbCBtYWluRnJhbWUp
Cit2b2lkIGV3a192aWV3X3Njcm9sbChFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19Db29yZCBk
eCwgRXZhc19Db29yZCBkeSwgRXZhc19Db29yZCBzY3JvbGxYLCBFdmFzX0Nvb3JkIHNjcm9sbFks
IEV2YXNfQ29vcmQgc2Nyb2xsV2lkdGgsIEV2YXNfQ29vcmQgc2Nyb2xsSGVpZ2h0LCBFdmFzX0Nv
b3JkIGNlbnRlclgsIEV2YXNfQ29vcmQgY2VudGVyWSwgRXZhc19Db29yZCBjZW50ZXJXaWR0aCwg
RXZhc19Db29yZCBjZW50ZXJIZWlnaHQsIGJvb2wgbWFpbkZyYW1lKQogewogICAgIERCRygiZXdr
Vmlldz0lcCwgZGVsdGE6ICVkLCVkLCBzY3JvbGw6ICVkLCVkKyVkeCVkLCBjbGlwOiAlZCwlZCsl
ZHglZCIsCiAgICAgICAgIGV3a1ZpZXcsIGR4LCBkeSwgc2Nyb2xsWCwgc2Nyb2xsWSwgc2Nyb2xs
V2lkdGgsIHNjcm9sbEhlaWdodCwgY2VudGVyWCwgY2VudGVyWSwgY2VudGVyV2lkdGgsIGNlbnRl
ckhlaWdodCk7CkBAIC0zMzg4LDcgKzMzODgsNyBAQCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6
RnJhbWU+IGV3a192aWV3X2ZyYW1lX2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhcwog
ICAgIGlmICghY29yZUZyYW1lLT5wYWdlKCkgfHwgIWNvcmVGcmFtZS0+dHJlZSgpIHx8ICFjb3Jl
RnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgc21hcnRE
YXRhLT5jaGFuZ2VkLmZyYW1lX3JlY3QgPSBFSU5BX1RSVUU7CisgICAgc21hcnREYXRhLT5jaGFu
Z2VkLmZyYW1lX3JlY3QgPSB0cnVlOwogICAgIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNtYXJ0
RGF0YSk7CiAKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJm
cmFtZSxjcmVhdGVkIiwgZnJhbWUpOwpAQCAtMzQwMiw3ICszNDAyLDcgQEAgV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCog
ZXdrVmlldywgRXYKICAgICAgICAgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1pbWVUeXBl
LnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEsIDApOwotICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5mcmFtZV9yZWN0ID0gRUlO
QV9UUlVFOworICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5mcmFtZV9yZWN0ID0gdHJ1ZTsKICAgICBf
ZXdrX3ZpZXdfc21hcnRfY2hhbmdlZChzbWFydERhdGEpOwogCiAgICAgcmV0dXJuIGV3a19mcmFt
ZV9wbHVnaW5fY3JlYXRlCkBAIC0zNDU3LDExICszNDU3LDExIEBAIHZvaWQgZXdrX3ZpZXdfcG9w
dXBfbmV3KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNs
aWVudCwKIEVpbmFfQm9vbCBld2tfdmlld19wb3B1cF9kZXN0cm95KEV2YXNfT2JqZWN0KiBld2tW
aWV3KQogewogICAgIElORigiZXdrVmlldz0lcCIsIGV3a1ZpZXcpOwotICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsKKyAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwor
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsK
IAogICAgIGlmICghcHJpdi0+cG9wdXAubWVudUNsaWVudCkKLSAgICAgICAgcmV0dXJuIEVJTkFf
RkFMU0U7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2NhbGwoZXdrVmlldywgInBvcHVwLHdpbGxkZWxldGUiLCAmcHJpdi0+cG9wdXAubWVu
dSk7CiAKQEAgLTM0NzQsNyArMzQ3NCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19wb3B1cF9kZXN0
cm95KEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIHByaXYtPnBvcHVwLm1lbnVDbGllbnQtPnBv
cHVwRGlkSGlkZSgpOwogICAgIHByaXYtPnBvcHVwLm1lbnVDbGllbnQgPSAwOwogCi0gICAgcmV0
dXJuIEVJTkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBld2tfdmlld19wb3B1
cF9zZWxlY3RlZF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCBpbmRleCkKQEAgLTM1NTYs
MTggKzM1NTYsMTggQEAgdm9pZCBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrVmlldywgaW50KiB3aWR0aCwgaW4KIAogRWluYV9Cb29sIGV3a192
aWV3X3pvb21fcmFuZ2Vfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBmbG9hdCBtaW5TY2FsZSwg
ZmxvYXQgbWF4U2NhbGUpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogCiAgICAgaWYgKG1heFNjYWxlIDwg
bWluU2NhbGUpIHsKICAgICAgICAgV1JOKCJtaW5fc2NhbGUgaXMgbGFyZ2VyIHRoYW4gbWF4X3Nj
YWxlIik7Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCiAgICAgcHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLm1pblNjYWxlID0gbWluU2Nh
bGU7CiAgICAgcHJpdi0+c2V0dGluZ3Muem9vbVJhbmdlLm1heFNjYWxlID0gbWF4U2NhbGU7CiAK
LSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogfQogCiBmbG9hdCBld2tf
dmlld196b29tX3JhbmdlX21pbl9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCkBAIC0z
NTg4LDE4ICszNTg4LDE4IEBAIGZsb2F0IGV3a192aWV3X3pvb21fcmFuZ2VfbWF4X2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrVmlldykKIAogRWluYV9Cb29sIGV3a192aWV3X3VzZXJfc2NhbGFi
bGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgdXNlclNjYWxhYmxlKQogewot
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZB
TFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBF
SU5BX0ZBTFNFKTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSwgZmFsc2UpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IHByaXYsIGZhbHNlKTsKIAogICAgIHByaXYtPnNldHRpbmdzLnpvb21SYW5nZS51c2VyU2NhbGFi
bGUgPSB1c2VyU2NhbGFibGU7CiAKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0
cnVlOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9nZXQoY29uc3QgRXZh
c19PYmplY3QqIGV3a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzbWFydERhdGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogCiAgICAgcmV0dXJuIHByaXYt
PnNldHRpbmdzLnpvb21SYW5nZS51c2VyU2NhbGFibGU7CiB9CkBAIC0zNjE5LDcgKzM2MTksNyBA
QCB2b2lkIGV3a192aWV3X2RpZF9maXJzdF92aXN1YWxseV9ub25lbXB0eV9sYXlvdXQoRXZhc19P
YmplY3QqIGV3a1ZpZXcpCiAgICAgaWYgKCFwcml2LT5mbGFncy52aWV3Q2xlYXJlZCkgewogICAg
ICAgICBld2tfdmlld19mcmFtZV9tYWluX2NsZWFyZWQoZXdrVmlldyk7CiAgICAgICAgIGV3a192
aWV3X2VuYWJsZV9yZW5kZXIoZXdrVmlldyk7Ci0gICAgICAgIHByaXYtPmZsYWdzLnZpZXdDbGVh
cmVkID0gRUlOQV9UUlVFOworICAgICAgICBwcml2LT5mbGFncy52aWV3Q2xlYXJlZCA9IHRydWU7
CiAgICAgfQogfQogCkBAIC0zNjQ0LDcgKzM2NDQsNyBAQCB2b2lkIGV3a192aWV3X3RyYW5zaXRp
b25fdG9fY29tbWl0ZWRfZm9yX25ld3BhZ2UoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CiAKICAgICBld2tfdmll
d19kaXNhYmxlX3JlbmRlcihld2tWaWV3KTsKLSAgICBwcml2LT5mbGFncy52aWV3Q2xlYXJlZCA9
IEVJTkFfRkFMU0U7CisgICAgcHJpdi0+ZmxhZ3Mudmlld0NsZWFyZWQgPSBmYWxzZTsKIH0KIAog
CkBAIC0zNjU3LDEzICszNjU3LDEzIEBAIHZvaWQgZXdrX3ZpZXdfdHJhbnNpdGlvbl90b19jb21t
aXRlZF9mb3JfbmV3cGFnZShFdmFzX09iamVjdCogZXdrVmlldykKICAqIEBwYXJhbSBld2tWaWV3
IFZpZXcgdG8gbG9hZAogICogQHBhcmFtIHJlcXVlc3QgUmVxdWVzdCB3aGljaCBjb250YWluIHVy
bCB0byBuYXZpZ2F0ZQogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfbmF2aWdhdGlvbl9wb2xpY3lf
ZGVjaXNpb24oRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0
KiByZXF1ZXN0KQorYm9vbCBld2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbihFdmFz
X09iamVjdCogZXdrVmlldywgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqIHJlcXVlc3QpCiB7
Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIEVJTkFf
VFJVRSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBp
LCBFSU5BX1RSVUUpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCB0cnVlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnRE
YXRhLT5hcGksIHRydWUpOwogCiAgICAgaWYgKCFzbWFydERhdGEtPmFwaS0+bmF2aWdhdGlvbl9w
b2xpY3lfZGVjaXNpb24pCi0gICAgICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgcmV0dXJuIHNtYXJ0RGF0YS0+YXBpLT5uYXZpZ2F0aW9uX3BvbGljeV9k
ZWNpc2lvbihzbWFydERhdGEsIHJlcXVlc3QpOwogfQpAQCAtMzY3MiwxMCArMzY3MiwxMCBAQCBF
aW5hX0Jvb2wgZXdrX3ZpZXdfanNfb2JqZWN0X2FkZChFdmFzX09iamVjdCogZXdrVmlldywgRXdr
X0pTX09iamVjdCogb2JqZWN0LCBjbwogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQogICAgIGlmIChvYmplY3QtPnZpZXcpIC8vIG9iamVjdCBoYXMgYWxyZWFkeSBiZWVuIGFkZGVk
IHRvIGFub3RoZXIgZXdrX3ZpZXcKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBvYmplY3QtPm5hbWUgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChv
YmplY3ROYW1lKTsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgcHJpdiwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CiAKICAgICBKU0M6OkpTTG9jayBsb2NrKEpTQzo6
U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICBXZWJDb3JlOjpKU0RPTVdpbmRvdyogd2luZG93
ID0gdG9KU0RPTVdpbmRvdyhwcml2LT5tYWluRnJhbWUsIFdlYkNvcmU6Om1haW5UaHJlYWROb3Jt
YWxXb3JsZCgpKTsKQEAgLTM2ODQsNyArMzY4NCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19qc19v
YmplY3RfYWRkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfSlNfT2JqZWN0KiBvYmplY3QsIGNv
CiAKICAgICBpZiAoIXdpbmRvdykgewogICAgICAgICBFUlIoIldhcm5pbmc6IGNvdWxkbid0IGdl
dCB3aW5kb3cgb2JqZWN0Iik7Ci0gICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWN1dGVTdGF0ZSA9
IHdpbmRvdy0+Z2xvYmFsRXhlYygpOwpAQCAtMzY5NSw5ICszNjk1LDkgQEAgRWluYV9Cb29sIGV3
a192aWV3X2pzX29iamVjdF9hZGQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19KU19PYmplY3Qq
IG9iamVjdCwgY28KIAogICAgIEpTQzo6UHV0UHJvcGVydHlTbG90IHNsb3Q7CiAgICAgd2luZG93
LT5tZXRob2RUYWJsZSgpLT5wdXQod2luZG93LCBleGVjdXRlU3RhdGUsIGlkLCBydW50aW1lT2Jq
ZWN0LCBzbG90KTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVlOwogI2Vs
c2UKLSAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYgLy8g
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiB9CiAKQEAgLTM3MDcsNyArMzcwNyw3IEBAIEVp
bmFfQm9vbCBld2tfdmlld19wcm90b2NvbF9oYW5kbGVyX3NldChFdmFzX09iamVjdCogZXdrVmll
dywgY29uc3QgY2hhcioqIHByb3RvCiAgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBw
cml2KTsKIAogICAgIGlmICghaGFuZGxlcikKLSAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHByaXYtPmN1c3RvbVJlc291cmNlSGFuZGxlci5m
dW5jdGlvbiA9IGhhbmRsZXI7CiAgICAgcHJpdi0+Y3VzdG9tUmVzb3VyY2VIYW5kbGVyLmNvbnRl
eHQgPSBjb250ZXh0OwpAQCAtMzc4NiwxOCArMzc4NiwxOCBAQCB2b2lkIGV3a192aWV3X25lZWRf
dG91Y2hfZXZlbnRzX3NldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBuZWVkZWQpCiAgICAg
cHJpdi0+ZmxhZ3MubmVlZFRvdWNoRXZlbnRzID0gbmVlZGVkOwogfQogCi1FaW5hX0Jvb2wgZXdr
X3ZpZXdfbmVlZF90b3VjaF9ldmVudHNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQor
Ym9vbCBld2tfdmlld19uZWVkX3RvdWNoX2V2ZW50c19nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3
a1ZpZXcpCiB7Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIHJldHVybiBwcml2LT5mbGFncy5uZWVkVG91
Y2hFdmVudHM7CiB9CiAjZW5kaWYKIAogRWluYV9Cb29sIGV3a192aWV3X21vZGVfc2V0KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBFd2tfVmlld19Nb2RlIHZpZXdNb2RlKQogewotICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBFSU5BX0ZBTFNFKTsKLSAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBFSU5BX0ZBTFNFKTsK
KyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2Up
OworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNl
KTsKIAogICAgIHN3aXRjaCAodmlld01vZGUpIHsKICAgICBjYXNlIEVXS19WSUVXX01PREVfV0lO
RE9XRUQ6CkBAIC0zODE2LDEwICszODE2LDEwIEBAIEVpbmFfQm9vbCBld2tfdmlld19tb2RlX3Nl
dChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX1ZpZXdfTW9kZSB2aWV3TW9kZSkKICAgICAgICAg
cHJpdi0+cGFnZS0+c2V0Vmlld01vZGUoV2ViQ29yZTo6UGFnZTo6Vmlld01vZGVNaW5pbWl6ZWQp
OwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gRUlOQV9GQUxT
RTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJldHVybiBFSU5BX1RSVUU7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEV3a19WaWV3X01vZGUgZXdrX3ZpZXdfbW9kZV9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmll
d19zaW5nbGUuY3BwCmluZGV4IDE4NjYxOGVmMGIyNTllZmYxNjJmYmE3OGVjYjQ0ZDIwNDAzZDhk
ZTIuLjdlNzE0NjQ4ZmI4ZDY1NGQwYTFmNGY1OTJlYTdmNWY1YWFjMmM4ZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRp
YyB2b2lkIF9ld2tfdmlld19zaW5nbGVfc21hcnRfYWRkKEV2YXNfT2JqZWN0KiBld2tTaW5nbGUp
CiBzdGF0aWMgRXZhc19PYmplY3QqIF9ld2tfdmlld19zaW5nbGVfc21hcnRfYmFja2luZ19zdG9y
ZV9hZGQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogewogICAgIEV2YXNfT2JqZWN0
KiBicyA9IGV2YXNfb2JqZWN0X2ltYWdlX2FkZChzbWFydERhdGEtPmJhc2UuZXZhcyk7Ci0gICAg
ZXZhc19vYmplY3RfaW1hZ2VfYWxwaGFfc2V0KGJzLCBFSU5BX0ZBTFNFKTsKKyAgICBldmFzX29i
amVjdF9pbWFnZV9hbHBoYV9zZXQoYnMsIGZhbHNlKTsKICAgICBldmFzX29iamVjdF9pbWFnZV9z
bW9vdGhfc2NhbGVfc2V0KGJzLCBzbWFydERhdGEtPnpvb21fd2Vha19zbW9vdGhfc2NhbGUpOwog
CiAgICAgcmV0dXJuIGJzOwpAQCAtMzU0LDcgKzM1NCw3IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3
a192aWV3X3NpbmdsZV9zbWFydF9zY3JvbGxzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSog
c21hCiAKICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX3NldChzbWFydERhdGEtPmJhY2tpbmdf
c3RvcmUsIHBpeGVscyk7CiAKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVybiB0cnVl
OwogfQogCiBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVwYWludHNf
cHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCkBAIC0zNzIsNyArMzcyLDcg
QEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nl
c3MoRXdrX1ZpZXdfU21hcnRfRGF0YSogc20KICAgICBjYWlyb19mb3JtYXRfdCBmb3JtYXQ7CiAg
ICAgY2Fpcm9fdCogY2Fpcm87CiAgICAgc2l6ZV90IGNvdW50OwotICAgIEVpbmFfQm9vbCByZXQg
PSBFSU5BX1RSVUU7CisgICAgRWluYV9Cb29sIHJldCA9IHRydWU7CiAKICAgICBpZiAoc21hcnRE
YXRhLT5hbmltYXRlZF96b29tLnpvb20uY3VycmVudCA8IDAuMDAwMDEpIHsKICAgICAgICAgRXZh
c19PYmplY3QqIGNsaXAgPSBldmFzX29iamVjdF9jbGlwX2dldChzbWFydERhdGEtPmJhY2tpbmdf
c3RvcmUpOwpAQCAtNDAzLDcgKzQwMyw3IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3Np
bmdsZV9zbWFydF9yZXBhaW50c19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtCiAgICAg
aWYgKHN0YXR1cyAhPSBDQUlST19TVEFUVVNfU1VDQ0VTUykgewogICAgICAgICBFUlIoImNvdWxk
IG5vdCBjcmVhdGUgc3VyZmFjZSBmcm9tIGRhdGEgJWR4JWQ6ICVzIiwKICAgICAgICAgICAgIG93
LCBvaCwgY2Fpcm9fc3RhdHVzX3RvX3N0cmluZyhzdGF0dXMpKTsKLSAgICAgICAgcmV0ID0gRUlO
QV9GQUxTRTsKKyAgICAgICAgcmV0ID0gZmFsc2U7CiAgICAgICAgIGdvdG8gZXJyb3JfY2Fpcm9f
c3VyZmFjZTsKICAgICB9CiAgICAgY2Fpcm8gPSBjYWlyb19jcmVhdGUoc3VyZmFjZSk7CkBAIC00
MTEsMjEgKzQxMSwyMSBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zaW5nbGVfc21hcnRf
cmVwYWludHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhKiBzbQogICAgIGlmIChzdGF0dXMg
IT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpIHsKICAgICAgICAgRVJSKCJjb3VsZCBub3QgY3JlYXRl
IGNhaXJvIGZyb20gc3VyZmFjZSAlZHglZDogJXMiLAogICAgICAgICAgICAgb3csIG9oLCBjYWly
b19zdGF0dXNfdG9fc3RyaW5nKHN0YXR1cykpOwotICAgICAgICByZXQgPSBFSU5BX0ZBTFNFOwor
ICAgICAgICByZXQgPSBmYWxzZTsKICAgICAgICAgZ290byBlcnJvcl9jYWlybzsKICAgICB9CiAK
ICAgICBjdHh0ID0gZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9uZXcoc21hcnREYXRhLT5fcHJpdiwg
Y2Fpcm8pOwogICAgIGlmICghY3R4dCkgewogICAgICAgICBFUlIoImNvdWxkIG5vdCBjcmVhdGUg
cGFpbnQgY29udGV4dCIpOwotICAgICAgICByZXQgPSBFSU5BX0ZBTFNFOworICAgICAgICByZXQg
PSBmYWxzZTsKICAgICAgICAgZ290byBlcnJvcl9wYWludF9jb250ZXh0OwogICAgIH0KIAogICAg
IHRpbGVyID0gZWluYV90aWxlcl9uZXcob3csIG9oKTsKICAgICBpZiAoIXRpbGVyKSB7CiAgICAg
ICAgIEVSUigiY291bGQgbm90IGNyZWF0ZSB0aWxlciAlZHglZCIsIG93LCBvaCk7Ci0gICAgICAg
IHJldCA9IEVJTkFfRkFMU0U7CisgICAgICAgIHJldCA9IGZhbHNlOwogICAgICAgICBnb3RvIGVy
cm9yX3RpbGVyOwogICAgIH0KIApAQCAtNDM5LDcgKzQzOSw3IEBAIHN0YXRpYyBFaW5hX0Jvb2wg
X2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXBhaW50c19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNtCiAgICAgaXRyID0gZWluYV90aWxlcl9pdGVyYXRvcl9uZXcodGlsZXIpOwogICAgIGlm
ICghaXRyKSB7CiAgICAgICAgIEVSUigiY291bGQgbm90IGdldCBpdGVyYXRvciBmb3IgdGlsZXIi
KTsKLSAgICAgICAgcmV0ID0gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0ID0gZmFsc2U7CiAgICAg
ICAgIGdvdG8gZXJyb3JfaXRlcmF0b3I7CiAgICAgfQogCkBAIC01MTQsNyArNTE0LDcgQEAgc3Rh
dGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3pvb21fd2Vha19zZXQoRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc21hcnQKICAgICBpZiAoY2ggPCBzbWFydERhdGEtPnZpZXcuaCkKICAg
ICAgICAgaCA9IGNoICogc2NhbGU7CiAgICAgZXZhc19vYmplY3RfcmVzaXplKGNsaXAsIHcsIGgp
OwotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyB2
b2lkIF9ld2tfdmlld19zaW5nbGVfc21hcnRfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQoRXdr
X1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBFaW5hX0Jvb2wgc21vb3RoX3NjYWxlKQpAQCAt
NTMwLDcgKzUzMCw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zaW5nbGVfc21hcnRfYmdfY29s
b3Jfc2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwKIEVpbmFfQm9vbCBld2tfdmll
d19zaW5nbGVfc21hcnRfc2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkpCiB7CiAgICAgaWYg
KCFld2tfdmlld19iYXNlX3NtYXJ0X3NldChhcGkpKQotICAgICAgICByZXR1cm4gRUlOQV9GQUxT
RTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKEVJTkFfVU5MSUtFTFkoIV9wYXJl
bnRfc2Muc2MuYWRkKSkKICAgICAgICAgZXdrX3ZpZXdfYmFzZV9zbWFydF9zZXQoJl9wYXJlbnRf
c2MpOwpAQCAtNTQ1LDcgKzU0NSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19zaW5nbGVfc21hcnRf
c2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkpCiAgICAgYXBpLT56b29tX3dlYWtfc21vb3Ro
X3NjYWxlX3NldCA9IF9ld2tfdmlld19zaW5nbGVfc21hcnRfem9vbV93ZWFrX3Ntb290aF9zY2Fs
ZV9zZXQ7CiAgICAgYXBpLT5iZ19jb2xvcl9zZXQgPSBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X2Jn
X2NvbG9yX3NldDsKIAotICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHN0YXRpYyBpbmxpbmUgRXZhc19TbWFydCogX2V3a192aWV3X3NpbmdsZV9zbWFydF9jbGFz
c19uZXcodm9pZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190
aWxlZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfdGlsZWQuY3BwCmluZGV4
IDJhMDQ1YTA3ZGExYzJmMTg3ODE0YmExNjg2ZTY2ZTFlMDU0Mjg5NjEuLmVlMzI3N2ZlODg4NDg3
OWIxNjVhZTlhNGYyODFhNjc2YjU5OTg1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlld190aWxlZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192
aWV3X3RpbGVkLmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfdGls
ZWRfc21hcnRfYWRkKEV2YXNfT2JqZWN0KiBld2tUaWxlKQogICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2FkZCgKICAgICAgICAgc2QtPm1haW5fZnJhbWUsICJjb250ZW50cyxzaXplLGNo
YW5nZWQiLAogICAgICAgICBfZXdrX3ZpZXdfdGlsZWRfY29udGVudHNfc2l6ZV9jaGFuZ2VkX2Ni
LCBzZCk7Ci0gICAgZXdrX2ZyYW1lX3BhaW50X2Z1bGxfc2V0KHNkLT5tYWluX2ZyYW1lLCBFSU5B
X1RSVUUpOworICAgIGV3a19mcmFtZV9wYWludF9mdWxsX3NldChzZC0+bWFpbl9mcmFtZSwgdHJ1
ZSk7CiB9CiAKIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3Njcm9sbHNf
cHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCkBAIC0xMzQsNyArMTM0LDcg
QEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfc2Nyb2xsc19wcm9jZXNz
KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXIKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVy
biBFSU5BX1RSVUU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBFaW5hX0Jvb2wgX2V3
a192aWV3X3RpbGVkX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSog
c21hcnREYXRhKQpAQCAtMTU3LDEzICsxNTcsMTMgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3Zp
ZXdfdGlsZWRfc21hcnRfcmVwYWludHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWEK
ICAgICB9CiAgICAgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlc19wcm9jZXNzKHNtYXJ0
RGF0YS0+YmFja2luZ19zdG9yZSk7CiAKLSAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIHJldHVy
biB0cnVlOwogfQogCiBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9zbWFydF9jb250
ZW50c19yZXNpemUoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpCiB7CiAgICAgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfY29udGVudHNfcmVzaXpl
KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgcmV0dXJuIEVJ
TkFfVFJVRTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3Zp
ZXdfdGlsZWRfc21hcnRfem9vbV9zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBm
bG9hdCB6b29tLCBFdmFzX0Nvb3JkIGNlbnRlclgsIEV2YXNfQ29vcmQgY2VudGVyWSkKQEAgLTE3
NCw3ICsxNzQsNyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9zbWFydF96b29t
X3NldChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZ6b29tLCBjZW50ZXJYLCBjZW50ZXJZLCAmeCwgJnkpOwog
ICAgIGlmICghcikKICAgICAgICAgcmV0dXJuIHI7Ci0gICAgZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfZGlzYWJsZWRfdXBkYXRlX3NldChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsIEVJTkFfVFJV
RSk7CisgICAgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZGlzYWJsZWRfdXBkYXRlX3NldChzbWFy
dERhdGEtPmJhY2tpbmdfc3RvcmUsIHRydWUpOwogICAgIHIgPSBfcGFyZW50X3NjLnpvb21fc2V0
KHNtYXJ0RGF0YSwgem9vbSwgY2VudGVyWCwgY2VudGVyWSk7CiAgICAgZXdrX2ZyYW1lX3Njcm9s
bF9zZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lLCAteCwgLXkpOwogICAgIGV3a19mcmFtZV9zY3Jv
bGxfc2l6ZV9nZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lLCAmdywgJmgpOwpAQCAtMTgyLDcgKzE4
Miw3IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3pvb21fc2V0KEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwKICAgICBld2tfdmlld19zY3JvbGxzX3Byb2Nl
c3Moc21hcnREYXRhKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxjdWxhdGUoc21hcnREYXRh
LT5iYWNraW5nX3N0b3JlKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxjdWxhdGUoc21hcnRE
YXRhLT5zZWxmKTsKLSAgICBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9kaXNhYmxlZF91cGRhdGVf
c2V0KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgRUlOQV9GQUxTRSk7CisgICAgZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfZGlzYWJsZWRfdXBkYXRlX3NldChzbWFydERhdGEtPmJhY2tpbmdfc3Rv
cmUsIGZhbHNlKTsKICAgICByZXR1cm4gcjsKIH0KIApAQCAtMjMyLDcgKzIzMiw3IEBAIHN0YXRp
YyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X2VuYWJsZV9yZW5kZXIoRXdrX1ZpZXdf
U21hcnRfRGF0YSogc21hcnRECiBFaW5hX0Jvb2wgZXdrX3ZpZXdfdGlsZWRfc21hcnRfc2V0KEV3
a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkpCiB7CiAgICAgaWYgKCFld2tfdmlld19iYXNlX3NtYXJ0
X3NldChhcGkpKQotICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKEVJTkFfVU5MSUtFTFkoIV9wYXJlbnRfc2Muc2MuYWRkKSkKICAgICAg
ICAgZXdrX3ZpZXdfYmFzZV9zbWFydF9zZXQoJl9wYXJlbnRfc2MpOwpAQCAtMjUyLDcgKzI1Miw3
IEBAIEVpbmFfQm9vbCBld2tfdmlld190aWxlZF9zbWFydF9zZXQoRXdrX1ZpZXdfU21hcnRfQ2xh
c3MqIGFwaSkKICAgICBhcGktPnByZV9yZW5kZXJfY2FuY2VsID0gX2V3a192aWV3X3RpbGVkX3Nt
YXJ0X3ByZV9yZW5kZXJfY2FuY2VsOwogICAgIGFwaS0+ZGlzYWJsZV9yZW5kZXIgPSBfZXdrX3Zp
ZXdfdGlsZWRfc21hcnRfZGlzYWJsZV9yZW5kZXI7CiAgICAgYXBpLT5lbmFibGVfcmVuZGVyID0g
X2V3a192aWV3X3RpbGVkX3NtYXJ0X2VuYWJsZV9yZW5kZXI7Ci0gICAgcmV0dXJuIEVJTkFfVFJV
RTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGlubGluZSBFdmFzX1NtYXJ0KiBfZXdr
X3ZpZXdfdGlsZWRfc21hcnRfY2xhc3NfbmV3KHZvaWQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115132</attachid>
            <date>2011-11-15 02:39:01 -0800</date>
            <delta_ts>2011-11-16 09:38:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71433-20111115193902.patch</filename>
            <type>text/plain</type>
            <size>5807</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggOTNjMjY5NWFm
MmJiMmMwMjJjNjc3MDEzNmI4NTcxYzE4MjM2N2MxYS4uNTJiYTU4MTI2YzY0YzVkN2U5NWI2NDk5
NTgxOTEyYzA0Nzk4MDFjNiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEx
LTExLTE1ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgW0VGTF0gVXNlIHN0YW5kYXJkIGJvb2xlYW5kIGRhdGEgdHlwZS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlICpFaW5hX0Jvb2wqIHVzYWdl
cyB3aXRoICpib29sKiBpbiBtZW1iZXIgdmFyaWFibGVzIG9mIGludGVybmFsIHN0cnVjdC4KKwor
ICAgICAgICAqIGV3ay9ld2tfY29udGV4dG1lbnUuY3BwOgorICAgICAgICAqIGV3ay9ld2tfZnJh
bWUuY3BwOgorICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHA6CisgICAg
ICAgICogZXdrL2V3a192aWV3LmNwcDoKKwogMjAxMS0xMS0xNCAgSm9uZ3Nlb2sgWWFuZyAgPGpz
NDUueWFuZ0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBVcGRhdGUgZXdrX2ZyYW1lX3Nj
cmlwdF9leGVjdXRlIHRvIHJldHVybiB0aGUgcmVzdWx0IGZvciBKYXZhU2NyaXB0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2NvbnRleHRtZW51LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfY29udGV4dG1lbnUuY3BwCmluZGV4IGYzM2ZmMTExNDI3ZmZiMTQz
ODlkMjFmNWQ3ZjQzMTk5ODhiNWY1ZDQuLjM2NzhhMmRmZDc1MWY2NjI5YzBkYWE1MjYzYTBmNjkz
YmQ5MDQyZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29udGV4dG1l
bnUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29udGV4dG1lbnUuY3BwCkBA
IC01Niw4ICs1Niw4IEBAIHN0cnVjdCBfRXdrX0NvbnRleHRfTWVudV9JdGVtIHsKICAgICBjb25z
dCBjaGFyKiB0aXRsZTsgLyoqPCBjb250YWlucyB0aGUgdGl0bGUgb2YgdGhlIGl0ZW0gKi8KICAg
ICBFd2tfQ29udGV4dF9NZW51KiBzdWJtZW51OyAvKio8IGNvbnRhaW5zIHRoZSBwb2ludGVyIHRv
IHRoZSBzdWJtZW51IG9mIHRoZSBpdGVtICovCiAKLSAgICBFaW5hX0Jvb2wgY2hlY2tlZCA6IDE7
Ci0gICAgRWluYV9Cb29sIGVuYWJsZWQgOiAxOworICAgIGJvb2wgY2hlY2tlZCA6IDE7CisgICAg
Ym9vbCBlbmFibGVkIDogMTsKIH07CiAKIHZvaWQgZXdrX2NvbnRleHRfbWVudV9yZWYoRXdrX0Nv
bnRleHRfTWVudSogbWVudSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
ZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKaW5kZXggNDQy
ZWIxYWMyZWZiNTliZjUzNGJmMTg1NjFiYWRiY2IxMzc1YTIzYS4uMzc0Y2JmYTNjNmZhN2MyYTI2
ZDQ2OTY3ZmE1NjMzODBkZTYzMzAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAK
QEAgLTcxLDcgKzcxLDcgQEAgc3RydWN0IEV3a19GcmFtZV9TbWFydF9EYXRhIHsKICAgICBjb25z
dCBjaGFyKiB0aXRsZTsKICAgICBjb25zdCBjaGFyKiB1cmk7CiAgICAgY29uc3QgY2hhciogbmFt
ZTsKLSAgICBFaW5hX0Jvb2wgZWRpdGFibGUgOiAxOworICAgIGJvb2wgZWRpdGFibGUgOiAxOwog
fTsKIAogc3RydWN0IEVpbmFfSXRlcmF0b3JfRXdrX0ZyYW1lIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwCmluZGV4IDgyZWFkNjZiODQ1
OWVjZTEwMzEwNzkwNGM0ZWFmZGZjODQ5YTM4YjIuLjU4YTdjNTk4NDVmZGNmNWEzMTMzNjk5OGQ4
MzdkMzBkMTczNzYwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlLmNwcApAQCAtNDQsNyArNDQsNyBAQCBzdHJ1Y3QgX0V3a19UaWxlZF9C
YWNraW5nX1N0b3JlX0l0ZW0gewogICAgIHN0cnVjdCB7CiAgICAgICAgIEV2YXNfQ29vcmQgeCwg
eSwgd2lkdGgsIGhlaWdodDsKICAgICB9IGdlb21ldHJ5OwotICAgIEVpbmFfQm9vbCBzbW9vdGhf
c2NhbGU7CisgICAgYm9vbCBzbW9vdGhfc2NhbGU7CiB9OwogCiBzdHJ1Y3QgX0V3a19UaWxlZF9C
YWNraW5nX1N0b3JlX1ByZV9SZW5kZXJfUmVxdWVzdCB7CkBAIC02NCw3ICs2NCw3IEBAIHN0cnVj
dCBfRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSB7CiAgICAgICAgIHN0cnVjdCB7CiAgICAg
ICAgICAgICBFdmFzX0Nvb3JkIHdpZHRoLCBoZWlnaHQ7CiAgICAgICAgICAgICBmbG9hdCB6b29t
OwotICAgICAgICAgICAgRWluYV9Cb29sIHpvb21XZWFrU21vb3RoU2NhbGUgOiAxOworICAgICAg
ICAgICAgYm9vbCB6b29tV2Vha1Ntb290aFNjYWxlIDogMTsKICAgICAgICAgfSB0aWxlOwogICAg
ICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgc3RydWN0IHsKQEAgLTg4LDggKzg4LDggQEAgc3Ry
dWN0IF9Fd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhIHsKICAgICAgICAgdm9pZCogZGF0YTsK
ICAgICAgICAgRWluYV9Jbmxpc3QqIHByZVJlbmRlclJlcXVlc3RzOwogICAgICAgICBFY29yZV9J
ZGxlciogaWRsZXI7Ci0gICAgICAgIEVpbmFfQm9vbCBkaXNhYmxlZDsKLSAgICAgICAgRWluYV9C
b29sIHN1c3BlbmQgOiAxOworICAgICAgICBib29sIGRpc2FibGVkOworICAgICAgICBib29sIHN1
c3BlbmQgOiAxOwogICAgIH0gcmVuZGVyOwogICAgIHN0cnVjdCB7CiAgICAgICAgIHZvaWQqICgq
cHJlQ2FsbGJhY2spKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUpOwpA
QCAtOTgsMTEgKzk4LDExIEBAIHN0cnVjdCBfRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSB7
CiAgICAgICAgIHZvaWQqIHBvc3REYXRhOwogICAgIH0gcHJvY2VzczsKICAgICBzdHJ1Y3Qgewot
ICAgICAgICBFaW5hX0Jvb2wgYW55IDogMTsKLSAgICAgICAgRWluYV9Cb29sIHBvc2l0aW9uIDog
MTsKLSAgICAgICAgRWluYV9Cb29sIHNpemUgOiAxOwotICAgICAgICBFaW5hX0Jvb2wgbW9kZWwg
OiAxOwotICAgICAgICBFaW5hX0Jvb2wgb2Zmc2V0IDogMTsKKyAgICAgICAgYm9vbCBhbnkgOiAx
OworICAgICAgICBib29sIHBvc2l0aW9uIDogMTsKKyAgICAgICAgYm9vbCBzaXplIDogMTsKKyAg
ICAgICAgYm9vbCBtb2RlbCA6IDE7CisgICAgICAgIGJvb2wgb2Zmc2V0IDogMTsKICAgICB9IGNo
YW5nZWQ7CiAjaWZkZWYgREVCVUdfTUVNX0xFQUtTCiAgICAgRWNvcmVfRXZlbnRfSGFuZGxlciog
c2lnX3VzcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IDViODBiMjFjNzA1Y2Ux
YTIwOWU5YWM2NTUxYzc0Zjg4OGY0YTQ3MzMuLmFiNzBkMDJiZjFlN2E2Y2E3MGEyM2MzZjIyNzYx
MTVlMmYxNDdmZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAtMTUxLDggKzE1
MSw4IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICB9IHNjcm9sbHM7CiAg
ICAgdW5zaWduZWQgaW50IGltaDsgLyoqPCBpbnB1dCBtZXRob2QgaGludHMgKi8KICAgICBzdHJ1
Y3QgewotICAgICAgICBFaW5hX0Jvb2wgdmlld0NsZWFyZWQgOiAxOwotICAgICAgICBFaW5hX0Jv
b2wgbmVlZFRvdWNoRXZlbnRzIDogMTsKKyAgICAgICAgYm9vbCB2aWV3Q2xlYXJlZCA6IDE7Cisg
ICAgICAgIGJvb2wgbmVlZFRvdWNoRXZlbnRzIDogMTsKICAgICB9IGZsYWdzOwogICAgIHN0cnVj
dCB7CiAgICAgICAgIGNvbnN0IGNoYXIqIHVzZXJBZ2VudDsKQEAgLTE3MSwyMyArMTcxLDIzIEBA
IHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICAgICAgY29uc3QgY2hhciogZm9u
dEZhbnRhc3k7CiAgICAgICAgIGNvbnN0IGNoYXIqIGZvbnRTZXJpZjsKICAgICAgICAgY29uc3Qg
Y2hhciogZm9udFNhbnNTZXJpZjsKLSAgICAgICAgRWluYV9Cb29sIGF1dG9Mb2FkSW1hZ2VzIDog
MTsKLSAgICAgICAgRWluYV9Cb29sIGF1dG9TaHJpbmtJbWFnZXMgOiAxOwotICAgICAgICBFaW5h
X0Jvb2wgZW5hYmxlQXV0b1Jlc2l6ZVdpbmRvdyA6IDE7Ci0gICAgICAgIEVpbmFfQm9vbCBlbmFi
bGVEZXZlbG9wZXJFeHRyYXMgOiAxOwotICAgICAgICBFaW5hX0Jvb2wgZW5hYmxlU2NyaXB0cyA6
IDE7Ci0gICAgICAgIEVpbmFfQm9vbCBlbmFibGVQbHVnaW5zIDogMTsKLSAgICAgICAgRWluYV9C
b29sIGVuYWJsZUZyYW1lRmxhdHRlbmluZyA6IDE7Ci0gICAgICAgIEVpbmFfQm9vbCBlbmNvZGlu
Z0RldGVjdG9yIDogMTsKLSAgICAgICAgRWluYV9Cb29sIHNjcmlwdHNDYW5PcGVuV2luZG93cyA6
IDE7Ci0gICAgICAgIEVpbmFfQm9vbCBzY3JpcHRzQ2FuQ2xvc2VXaW5kb3dzIDogMTsKLSAgICAg
ICAgRWluYV9Cb29sIHJlc2l6YWJsZVRleHRhcmVhcyA6IDE7Ci0gICAgICAgIEVpbmFfQm9vbCBw
cml2YXRlQnJvd3NpbmcgOiAxOwotICAgICAgICBFaW5hX0Jvb2wgY2FyZXRCcm93c2luZyA6IDE7
Ci0gICAgICAgIEVpbmFfQm9vbCBzcGF0aWFsTmF2aWdhdGlvbiA6IDE7Ci0gICAgICAgIEVpbmFf
Qm9vbCBsb2NhbFN0b3JhZ2UgOiAxOwotICAgICAgICBFaW5hX0Jvb2wgb2ZmbGluZUFwcENhY2hl
IDogMTsKLSAgICAgICAgRWluYV9Cb29sIHBhZ2VDYWNoZSA6IDE7CisgICAgICAgIGJvb2wgYXV0
b0xvYWRJbWFnZXMgOiAxOworICAgICAgICBib29sIGF1dG9TaHJpbmtJbWFnZXMgOiAxOworICAg
ICAgICBib29sIGVuYWJsZUF1dG9SZXNpemVXaW5kb3cgOiAxOworICAgICAgICBib29sIGVuYWJs
ZURldmVsb3BlckV4dHJhcyA6IDE7CisgICAgICAgIGJvb2wgZW5hYmxlU2NyaXB0cyA6IDE7Cisg
ICAgICAgIGJvb2wgZW5hYmxlUGx1Z2lucyA6IDE7CisgICAgICAgIGJvb2wgZW5hYmxlRnJhbWVG
bGF0dGVuaW5nIDogMTsKKyAgICAgICAgYm9vbCBlbmNvZGluZ0RldGVjdG9yIDogMTsKKyAgICAg
ICAgYm9vbCBzY3JpcHRzQ2FuT3BlbldpbmRvd3MgOiAxOworICAgICAgICBib29sIHNjcmlwdHND
YW5DbG9zZVdpbmRvd3MgOiAxOworICAgICAgICBib29sIHJlc2l6YWJsZVRleHRhcmVhcyA6IDE7
CisgICAgICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nIDogMTsKKyAgICAgICAgYm9vbCBjYXJldEJy
b3dzaW5nIDogMTsKKyAgICAgICAgYm9vbCBzcGF0aWFsTmF2aWdhdGlvbiA6IDE7CisgICAgICAg
IGJvb2wgbG9jYWxTdG9yYWdlIDogMTsKKyAgICAgICAgYm9vbCBvZmZsaW5lQXBwQ2FjaGUgOiAx
OworICAgICAgICBib29sIHBhZ2VDYWNoZSA6IDE7CiAgICAgICAgIHN0cnVjdCB7CiAgICAgICAg
ICAgICBmbG9hdCBtaW5TY2FsZTsKICAgICAgICAgICAgIGZsb2F0IG1heFNjYWxlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>