<?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>146391</bug_id>
          
          <creation_ts>2015-06-27 21:25:04 -0700</creation_ts>
          <short_desc>ResourceError should store failingURL as URL instead of String to avoid reparsing and to address FIXME comments in ResourceErrorCF.cpp and ResourceErrorMac.mm</short_desc>
          <delta_ts>2016-01-12 08:30:57 -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>Page Loading</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>
          <dependson>146384</dependson>
    
    <dependson>152563</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>ap</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>koivisto</cc>
    
    <cc>ossy</cc>
    
    <cc>peavo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1105248</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-06-27 21:25:04 -0700</bug_when>
    <thetext>Address the FIXME comments added for the build for for Bug 146384:
Committed r186036: &lt;http://trac.webkit.org/changeset/186036&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105249</commentid>
    <comment_count>1</comment_count>
      <attachid>255717</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-06-27 21:36:53 -0700</bug_when>
    <thetext>Created attachment 255717
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105257</commentid>
    <comment_count>2</comment_count>
      <attachid>255717</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-06-27 23:22:10 -0700</bug_when>
    <thetext>Comment on attachment 255717
Patch v1

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

&gt; Source/WebCore/platform/network/cf/ResourceErrorCF.cpp:157
&gt; +            if (RetainPtr&lt;CFURLRef&gt; url = URL(URL(), m_failingURL).createCFURL())

Can this be tested?

As a general principle, I think that we shouldn&apos;t expose invalid URLs in API. The fact that the URL is invalid gets lost in conversion, and it&apos;s too easy for the client to make incorrect decisions based on the URL string. I can&apos;t find it now, but we even had security bugs caused by handling invalid URLs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105261</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-06-28 01:02:45 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 255717 [details]
&gt; Patch v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=255717&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/cf/ResourceErrorCF.cpp:157
&gt; &gt; +            if (RetainPtr&lt;CFURLRef&gt; url = URL(URL(), m_failingURL).createCFURL())
&gt; 
&gt; Can this be tested?

It&apos;s not known how to reproduce the crash.  Do you have ideas about how to reproduce it based on the crashing stack?  Maybe setting the source of an iframe with an invalid URL?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105289</commentid>
    <comment_count>4</comment_count>
      <attachid>255717</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-28 11:12:45 -0700</bug_when>
    <thetext>Comment on attachment 255717
Patch v1

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

Before we make this change, I’d like to understand more about where the string is coming from. In particular, did this already come out of a WebCore::URL, and if so, can we avoid the round trip through a string?

&gt;&gt;&gt; Source/WebCore/platform/network/cf/ResourceErrorCF.cpp:157
&gt;&gt;&gt; +            if (RetainPtr&lt;CFURLRef&gt; url = URL(URL(), m_failingURL).createCFURL())
&gt;&gt; 
&gt;&gt; Can this be tested?
&gt;&gt; 
&gt;&gt; As a general principle, I think that we shouldn&apos;t expose invalid URLs in API. The fact that the URL is invalid gets lost in conversion, and it&apos;s too easy for the client to make incorrect decisions based on the URL string. I can&apos;t find it now, but we even had security bugs caused by handling invalid URLs.
&gt; 
&gt; It&apos;s not known how to reproduce the crash.  Do you have ideas about how to reproduce it based on the crashing stack?  Maybe setting the source of an iframe with an invalid URL?

I think you have an interesting point, Alexey, about invalid URLs. But please keep in mind that we are exposing that same URL above in failingURLStringKey; I am not certain that an NSURL is an additional risk.

&gt; Source/WebCore/platform/network/mac/ResourceErrorMac.mm:186
&gt; +        if (RetainPtr&lt;NSURL&gt; cocoaURL = (NSURL *)URL(URL(), resourceError.failingURL()))

No reason to use RetainPtr here instead of just NSURL *. The NSURL will be autoreleased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151029</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-22 20:23:27 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 255717 [details]
&gt; Patch v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=255717&amp;action=review
&gt; 
&gt; Before we make this change, I’d like to understand more about where the
&gt; string is coming from. In particular, did this already come out of a
&gt; WebCore::URL, and if so, can we avoid the round trip through a string?

The CFErrorRef and NSError objects come from CFNetwork callbacks, so I don&apos;t think there are any round trip savings to be had here.

&gt; &gt;&gt;&gt; Source/WebCore/platform/network/cf/ResourceErrorCF.cpp:157
&gt; &gt;&gt;&gt; +            if (RetainPtr&lt;CFURLRef&gt; url = URL(URL(), m_failingURL).createCFURL())
&gt; &gt;&gt; 
&gt; &gt;&gt; Can this be tested?
&gt; &gt;&gt; 
&gt; &gt;&gt; As a general principle, I think that we shouldn&apos;t expose invalid URLs in API. The fact that the URL is invalid gets lost in conversion, and it&apos;s too easy for the client to make incorrect decisions based on the URL string. I can&apos;t find it now, but we even had security bugs caused by handling invalid URLs.
&gt; &gt; 
&gt; &gt; It&apos;s not known how to reproduce the crash.  Do you have ideas about how to reproduce it based on the crashing stack?  Maybe setting the source of an iframe with an invalid URL?
&gt; 
&gt; I think you have an interesting point, Alexey, about invalid URLs. But
&gt; please keep in mind that we are exposing that same URL above in
&gt; failingURLStringKey; I am not certain that an NSURL is an additional risk.
&gt; 
&gt; &gt; Source/WebCore/platform/network/mac/ResourceErrorMac.mm:186
&gt; &gt; +        if (RetainPtr&lt;NSURL&gt; cocoaURL = (NSURL *)URL(URL(), resourceError.failingURL()))
&gt; 
&gt; No reason to use RetainPtr here instead of just NSURL *. The NSURL will be
&gt; autoreleased.

I thought we preferred explicit retain/release instead of putting objects into autoreleasepools (generally speaking), but removing RetainPtr&lt;&gt; will make the conversion to ARC easier when that happens, and it&apos;s only a single object being put in the pool, so I&apos;ll change it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151030</commentid>
    <comment_count>6</comment_count>
      <attachid>267825</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-22 20:25:40 -0800</bug_when>
    <thetext>Created attachment 267825
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151034</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-22 20:56:20 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; Comment on attachment 255717 [details]
&gt; &gt; Patch v1
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=255717&amp;action=review
&gt; &gt; 
&gt; &gt; Before we make this change, I’d like to understand more about where the
&gt; &gt; string is coming from. In particular, did this already come out of a
&gt; &gt; WebCore::URL, and if so, can we avoid the round trip through a string?
&gt; 
&gt; The CFErrorRef and NSError objects come from CFNetwork callbacks, so I don&apos;t
&gt; think there are any round trip savings to be had here.

Oops, I was looking in the wrong direction!

Looking at the ResourceError() constructors that use the multi-argument constructor, I think nearly all of them are converting a URL() to a String(), so we could save a round trip here.

I will try changing the failingURL argument of ResourceError() from String() to URL().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151232</commentid>
    <comment_count>8</comment_count>
      <attachid>267885</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-23 18:58:56 -0800</bug_when>
    <thetext>Created attachment 267885
Patch v3 (checking EFL/GTK builds)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151233</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-23 18:59:47 -0800</bug_when>
    <thetext>Attachment 267885 did not pass style-queue:


ERROR: Source/WebCore/platform/gtk/ErrorsGtk.cpp:33:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/gtk/ErrorsGtk.cpp:39:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/gtk/ErrorsGtk.cpp:50:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/gtk/ErrorsGtk.cpp:56:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/gtk/ErrorsGtk.cpp:62:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/gtk/ErrorsGtk.cpp:68:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/gtk/ErrorsGtk.cpp:74:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/gtk/ErrorsGtk.cpp:86:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/gtk/ErrorsGtk.cpp:92:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 9 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151234</commentid>
    <comment_count>10</comment_count>
      <attachid>267886</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-23 19:27:05 -0800</bug_when>
    <thetext>Created attachment 267886
Patch v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151248</commentid>
    <comment_count>11</comment_count>
      <attachid>267891</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-23 22:24:10 -0800</bug_when>
    <thetext>Created attachment 267891
Patch v5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151250</commentid>
    <comment_count>12</comment_count>
      <attachid>267892</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-23 22:49:35 -0800</bug_when>
    <thetext>Created attachment 267892
Patch v6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151269</commentid>
    <comment_count>13</comment_count>
      <attachid>267896</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-24 07:56:52 -0800</bug_when>
    <thetext>Created attachment 267896
Patch v7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151271</commentid>
    <comment_count>14</comment_count>
      <attachid>267897</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-24 08:06:35 -0800</bug_when>
    <thetext>Created attachment 267897
Patch v8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151272</commentid>
    <comment_count>15</comment_count>
      <attachid>267898</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-24 08:22:35 -0800</bug_when>
    <thetext>Created attachment 267898
Patch v9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151273</commentid>
    <comment_count>16</comment_count>
      <attachid>267899</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-24 08:34:10 -0800</bug_when>
    <thetext>Created attachment 267899
Patch v10</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151327</commentid>
    <comment_count>17</comment_count>
      <attachid>267899</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-25 04:22:41 -0800</bug_when>
    <thetext>Comment on attachment 267899
Patch v10

Clearing flags on attachment: 267899

Committed r194419: &lt;http://trac.webkit.org/changeset/194419&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151328</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-25 04:22:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151362</commentid>
    <comment_count>19</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-12-26 11:39:15 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; All reviewed patches have been landed.  Closing bug.

It broke the WinCairo (curl) build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151794</commentid>
    <comment_count>20</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-31 15:28:43 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; All reviewed patches have been landed.  Closing bug.
&gt; 
&gt; It broke the WinCairo (curl) build.

That build needs to be on the dashboard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152321</commentid>
    <comment_count>21</comment_count>
    <who name="">peavo</who>
    <bug_when>2016-01-04 08:21:02 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; (In reply to comment #18)
&gt; &gt; &gt; All reviewed patches have been landed.  Closing bug.
&gt; &gt; 
&gt; &gt; It broke the WinCairo (curl) build.
&gt; 
&gt; That build needs to be on the dashboard.

Yes, that would be very nice :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153010</commentid>
    <comment_count>22</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-01-06 02:01:03 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; All reviewed patches have been landed.  Closing bug.
&gt; 
&gt; It broke the WinCairo (curl) build.

Fixed in bug152563. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154699</commentid>
    <comment_count>23</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-01-12 08:30:57 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; Comment on attachment 255717 [details]
&gt; &gt; Patch v1
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=255717&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/network/mac/ResourceErrorMac.mm:186
&gt; &gt; &gt; +        if (RetainPtr&lt;NSURL&gt; cocoaURL = (NSURL *)URL(URL(), resourceError.failingURL()))
&gt; &gt; 
&gt; &gt; No reason to use RetainPtr here instead of just NSURL *. The NSURL will be
&gt; &gt; autoreleased.
&gt; 
&gt; I thought we preferred explicit retain/release instead of putting objects
&gt; into autoreleasepools (generally speaking), but removing RetainPtr&lt;&gt; will
&gt; make the conversion to ARC easier when that happens, and it&apos;s only a single
&gt; object being put in the pool, so I&apos;ll change it.

While this code no longer exists, I wanted to clear up a misunderstanding here. The local decision here had nothing to do with conversion to ARC.

The function that converts a URL to an NSURL puts the URL into the autorelease pool. Using a RetainPtr doesn&apos;t prevent it from doing that, instead it retains and releases an additional time, unnecessarily. There&apos;s no choice between autorelease and retain/release in this code, just a choice between doing an extra retain/release or not doing it.

If we wanted to use retain/release instead of an autorelease pool we would have to change the function that converts a URL into an NSURL * so that it doesn&apos;t autorelease.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255717</attachid>
            <date>2015-06-27 21:36:53 -0700</date>
            <delta_ts>2015-12-22 20:25:35 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-146391-20150627213605.patch</filename>
            <type>text/plain</type>
            <size>3146</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2MDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDU4ZDk4M2FhNDVhZDQ1
YjNhYzFhOTBhZTRjOTM4Mzc3YTc1MmIyNi4uMTU0ZDQ2YTYwZDk5NzgyNmU3YjJkYmM2NTMwNjU1
MGEyNWZmNzM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE1LTA2LTI3ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkcmVzcyBGSVhNRSBj
b21tZW50cyBhYm91dCBlcnJvciBVUkwgcGFyc2luZyBpbiBSZXNvdXJjZUVycm9yQ0YuY3BwIGFu
ZCBSZXNvdXJjZUVycm9yTWFjLm1tCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzE0NjM5
MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlRXJyb3I6OmNmRXJyb3IpOiBVc2UgVVJMIGNsYXNzIGZvciBwYXJzaW5nLgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVOU0Vycm9yRnJvbVJlc291cmNlRXJyb3JCYXNlKTogRGl0dG8uCisK
IDIwMTUtMDYtMjcgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBWDogaW1wbGVtZW50IEBhcmlhLXJvbGVkZXNjcmlwdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4
IDEzMWZiYjA0NjExNzA2ZjY0ZDg1MGExYzUwZTA1ZTE0YTJjNmUxMzMuLjA4OWNmODJkMWE3MmRl
MzBjZjhiNzBlODkyNWE0MDdiMzJlZjFlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKQEAgLTE1NCwxMCArMTU0
LDcgQEAgQ0ZFcnJvclJlZiBSZXNvdXJjZUVycm9yOjpjZkVycm9yKCkgY29uc3QKICAgICAgICAg
aWYgKCFtX2ZhaWxpbmdVUkwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGZhaWxpbmdVUkxTdHJpbmcgPSBtX2ZhaWxpbmdVUkwuY3JlYXRlQ0ZTdHJpbmco
KTsKICAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBmYWls
aW5nVVJMU3RyaW5nS2V5LCBmYWlsaW5nVVJMU3RyaW5nLmdldCgpKTsKLSAgICAgICAgICAgIC8v
IEZJWEVNRTogV2Ugbm9ybWFsbHkgY3JlYXRlIGEgQ0ZVUkwgZnJvbSBhIHN0cmluZyBieSB1c2lu
ZyBVUkw6OmNyZWF0ZUNGVVJMLCB3aGljaCBoYW5kbGVzCi0gICAgICAgICAgICAvLyBjYXNlcyBj
b3JyZWN0bHkgdGhhdCBDRlVSTENyZWF0ZVdpdGhTdHJpbmcgaGFuZGxlcyBpbmNvcnJlY3RseS4K
LSAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsID0gYWRvcHRDRihDRlVSTENyZWF0
ZVdpdGhTdHJpbmcoMCwgZmFpbGluZ1VSTFN0cmluZy5nZXQoKSwgMCkpOwotICAgICAgICAgICAg
aWYgKHVybCkKKyAgICAgICAgICAgIGlmIChSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IFVSTChV
UkwoKSwgbV9mYWlsaW5nVVJMKS5jcmVhdGVDRlVSTCgpKQogICAgICAgICAgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBmYWlsaW5nVVJMS2V5LCB1cmwuZ2V0KCkp
OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCmluZGV4IGY3Yzg2NGNlM2I1MDk5ZmUwMmYxNjk2
OWFjZTM5N2Y2ODJlODNkYmEuLjZhNGZiODU5NjRiN2Q5YmJhMTVmMmZhMGUyMjYzZDA2NTZjNDQw
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlRXJyb3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VFcnJvck1hYy5tbQpAQCAtMTgyLDExICsxODIsOCBAQCBzdGF0aWMgUmV0YWluUHRy
PE5TRXJyb3I+IGNyZWF0ZU5TRXJyb3JGcm9tUmVzb3VyY2VFcnJvckJhc2UoY29uc3QgUmVzb3Vy
Y2VFcnJvcgogICAgICAgICBbdXNlckluZm8uZ2V0KCkgc2V0VmFsdWU6cmVzb3VyY2VFcnJvci5s
b2NhbGl6ZWREZXNjcmlwdGlvbigpIGZvcktleTpOU0xvY2FsaXplZERlc2NyaXB0aW9uS2V5XTsK
IAogICAgIGlmICghcmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIC8vIEZJWEVNRTogV2Ugbm9ybWFsbHkgY3JlYXRlIGFuIE5TVVJMIGZyb20gYSBzdHJpbmcg
YnkgdXNpbmcgVVJMOjpjcmVhdGVOU1VSTCwgd2hpY2ggaGFuZGxlcwotICAgICAgICAvLyBjYXNl
cyBjb3JyZWN0bHkgdGhhdCBpbml0V2l0aFN0cmluZzogaGFuZGxlcyBpbmNvcnJlY3RseS4KLSAg
ICAgICAgUmV0YWluUHRyPE5TVVJMPiBjb2NvYVVSTCA9IGFkb3B0TlMoW1tOU1VSTCBhbGxvY10g
aW5pdFdpdGhTdHJpbmc6cmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCldKTsKICAgICAgICAgW3Vz
ZXJJbmZvLmdldCgpIHNldFZhbHVlOnJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgpIGZvcktleTpA
Ik5TRXJyb3JGYWlsaW5nVVJMU3RyaW5nS2V5Il07Ci0gICAgICAgIGlmIChjb2NvYVVSTCkKKyAg
ICAgICAgaWYgKFJldGFpblB0cjxOU1VSTD4gY29jb2FVUkwgPSAoTlNVUkwgKilVUkwoVVJMKCks
IHJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgpKSkKICAgICAgICAgICAgIFt1c2VySW5mby5nZXQo
KSBzZXRWYWx1ZTpjb2NvYVVSTC5nZXQoKSBmb3JLZXk6QCJOU0Vycm9yRmFpbGluZ1VSTEtleSJd
OwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267825</attachid>
            <date>2015-12-22 20:25:40 -0800</date>
            <delta_ts>2015-12-23 18:58:53 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-146391-20151222202502.patch</filename>
            <type>text/plain</type>
            <size>3345</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0Mzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTk5Y2NlMDBmMWMxMTk3
NmM4MWZmZDBkY2EwOGU1NGNkMjYwOTI5NS4uNjk0ZjhhNjU5NzllMDU2ZDkxOGFhODQzMDhjYTU5
NjE3ZWZiMTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE1LTEyLTIyICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkcmVzcyBGSVhNRSBj
b21tZW50cyBhYm91dCBlcnJvciBVUkwgcGFyc2luZyBpbiBSZXNvdXJjZUVycm9yQ0YuY3BwIGFu
ZCBSZXNvdXJjZUVycm9yTWFjLm1tCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzE0NjM5
MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlRXJyb3I6OmNmRXJyb3IpOiBVc2UgVVJMIGNsYXNzIGZvciBwYXJzaW5nLgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVOU0Vycm9yRnJvbVJlc291cmNlRXJyb3JCYXNlKTogRGl0dG8uCisK
IDIwMTUtMTItMjIgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFRy
eSB0byBmaXggdGhlIGlPUyBidWlsZCBhZnRlciByMTk0Mzc4CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXggMTMx
ZmJiMDQ2MTE3MDZmNjRkODUwYTFjNTBlMDVlMTRhMmM2ZTEzMy4uMDg5Y2Y4MmQxYTcyZGUzMGNm
OGI3MGU4OTI1YTQwN2IzMmVmMWU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcApAQCAtMTU0LDEwICsxNTQsNyBA
QCBDRkVycm9yUmVmIFJlc291cmNlRXJyb3I6OmNmRXJyb3IoKSBjb25zdAogICAgICAgICBpZiAo
IW1fZmFpbGluZ1VSTC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gZmFpbGluZ1VSTFN0cmluZyA9IG1fZmFpbGluZ1VSTC5jcmVhdGVDRlN0cmluZygpOwog
ICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGZhaWxpbmdV
UkxTdHJpbmdLZXksIGZhaWxpbmdVUkxTdHJpbmcuZ2V0KCkpOwotICAgICAgICAgICAgLy8gRklY
RU1FOiBXZSBub3JtYWxseSBjcmVhdGUgYSBDRlVSTCBmcm9tIGEgc3RyaW5nIGJ5IHVzaW5nIFVS
TDo6Y3JlYXRlQ0ZVUkwsIHdoaWNoIGhhbmRsZXMKLSAgICAgICAgICAgIC8vIGNhc2VzIGNvcnJl
Y3RseSB0aGF0IENGVVJMQ3JlYXRlV2l0aFN0cmluZyBoYW5kbGVzIGluY29ycmVjdGx5LgotICAg
ICAgICAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0
aFN0cmluZygwLCBmYWlsaW5nVVJMU3RyaW5nLmdldCgpLCAwKSk7Ci0gICAgICAgICAgICBpZiAo
dXJsKQorICAgICAgICAgICAgaWYgKFJldGFpblB0cjxDRlVSTFJlZj4gdXJsID0gVVJMKFVSTCgp
LCBtX2ZhaWxpbmdVUkwpLmNyZWF0ZUNGVVJMKCkpCiAgICAgICAgICAgICAgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGZhaWxpbmdVUkxLZXksIHVybC5nZXQoKSk7CiAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VFcnJvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlRXJyb3JNYWMubW0KaW5kZXggZjdjODY0Y2UzYjUwOTlmZTAyZjE2OTY5YWNl
Mzk3ZjY4MmU4M2RiYS4uM2NhMjY0MzA4ZWM5MjI1YTE4MzNlNzA4ZTUyOTg3NmE1ZDU2YmVmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VF
cnJvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNv
dXJjZUVycm9yTWFjLm1tCkBAIC0xODIsMTIgKzE4Miw5IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNF
cnJvcj4gY3JlYXRlTlNFcnJvckZyb21SZXNvdXJjZUVycm9yQmFzZShjb25zdCBSZXNvdXJjZUVy
cm9yCiAgICAgICAgIFt1c2VySW5mby5nZXQoKSBzZXRWYWx1ZTpyZXNvdXJjZUVycm9yLmxvY2Fs
aXplZERlc2NyaXB0aW9uKCkgZm9yS2V5Ok5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXldOwogCiAg
ICAgaWYgKCFyZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAg
Ly8gRklYRU1FOiBXZSBub3JtYWxseSBjcmVhdGUgYW4gTlNVUkwgZnJvbSBhIHN0cmluZyBieSB1
c2luZyBVUkw6OmNyZWF0ZU5TVVJMLCB3aGljaCBoYW5kbGVzCi0gICAgICAgIC8vIGNhc2VzIGNv
cnJlY3RseSB0aGF0IGluaXRXaXRoU3RyaW5nOiBoYW5kbGVzIGluY29ycmVjdGx5LgotICAgICAg
ICBSZXRhaW5QdHI8TlNVUkw+IGNvY29hVVJMID0gYWRvcHROUyhbW05TVVJMIGFsbG9jXSBpbml0
V2l0aFN0cmluZzpyZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKV0pOwogICAgICAgICBbdXNlcklu
Zm8uZ2V0KCkgc2V0VmFsdWU6cmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkgZm9yS2V5OkAiTlNF
cnJvckZhaWxpbmdVUkxTdHJpbmdLZXkiXTsKLSAgICAgICAgaWYgKGNvY29hVVJMKQotICAgICAg
ICAgICAgW3VzZXJJbmZvLmdldCgpIHNldFZhbHVlOmNvY29hVVJMLmdldCgpIGZvcktleTpAIk5T
RXJyb3JGYWlsaW5nVVJMS2V5Il07CisgICAgICAgIGlmIChOU1VSTCAqY29jb2FVUkwgPSAoTlNV
UkwgKilVUkwoVVJMKCksIHJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgpKSkKKyAgICAgICAgICAg
IFt1c2VySW5mby5nZXQoKSBzZXRWYWx1ZTpjb2NvYVVSTCBmb3JLZXk6QCJOU0Vycm9yRmFpbGlu
Z1VSTEtleSJdOwogICAgIH0KIAogICAgIHJldHVybiBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10g
aW5pdFdpdGhEb21haW46cmVzb3VyY2VFcnJvci5kb21haW4oKSBjb2RlOnJlc291cmNlRXJyb3Iu
ZXJyb3JDb2RlKCkgdXNlckluZm86dXNlckluZm8uZ2V0KCldKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267885</attachid>
            <date>2015-12-23 18:58:56 -0800</date>
            <delta_ts>2015-12-23 19:27:01 -0800</delta_ts>
            <desc>Patch v3 (checking EFL/GTK builds)</desc>
            <filename>bug-146391-20151223185818.patch</filename>
            <type>text/plain</type>
            <size>37504</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0Mzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTk5Y2NlMDBmMWMxMTk3
NmM4MWZmZDBkY2EwOGU1NGNkMjYwOTI5NS4uMjFiYjI5NWVkNTY1ZTYyODQ0YWE1MDNhM2Q5Yzll
ZDZmYmM3NWFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxNS0xMi0yMyAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlRXJyb3Ig
c2hvdWxkIHN0b3JlIGZhaWxpbmdVUkwgYXMgVVJMIGluc3RlYWQgb2YgU3RyaW5nIHRvIGF2b2lk
IHJlcGFyc2luZyBhbmQgdG8gYWRkcmVzcyBGSVhNRSBjb21tZW50cyBpbiBSZXNvdXJjZUVycm9y
Q0YuY3BwIGFuZCBSZXNvdXJjZUVycm9yTWFjLm1tCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9y
Zy9iLzE0NjM5MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlU2ltcGxl
Q3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxpZ2h0RmFpbHVyZSk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRGYWlsdXJlKToKKyAgICAgICAgLSBTd2l0Y2gg
dHlwZSBvZiAndXJsJyBhcmd1bWVudCBvZiBwcmVmbGlnaHRGYWlsdXJlKCkgZnJvbQorICAgICAg
ICAgIFN0cmluZyB0byBVUkwuCisgICAgICAgIC0gVXBkYXRlIGZvciB0eXBlIGNoYW5nZSBvZiAn
ZmFpbGluZ1VSTCcgYXJndW1lbnQgdG8KKyAgICAgICAgICBSZXNvdXJjZUVycm9yKCkuCisKKyAg
ICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToK
KyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXI6OmxvYWREYXRhVVJMKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpjYW5jZWwpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgLSBVcGRhdGUgZm9yIHR5cGUgY2hh
bmdlIG9mICdmYWlsaW5nVVJMJyBhcmd1bWVudCB0bworICAgICAgICAgIFJlc291cmNlRXJyb3Io
KS4KKworICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRTb3VyY2U6OmRpZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2spOgorICAgICAgICAtIENvbnZl
cnQgZmFpbGluZ1VSTCgpIHRvIFN0cmluZyBleHBsaWNpdGx5LgorCisgICAgICAgICogcGxhdGZv
cm0vZWZsL0Vycm9yc0VmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5jZWxsZWRFcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpibG9ja2VkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6Ymxv
Y2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93
VVJMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VF
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93TUlNRVR5cGVFcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjpmaWxlRG9lc05vdEV4aXN0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpkb3dubG9hZENh
bmNlbGxlZEJ5VXNlckVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmRvd25sb2FkRGVzdGluYXRp
b25FcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjYW5jZWxsZWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpibG9ja2VkRXJy
b3IpOgorICAgICAgICAoV2ViQ29yZTo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5u
b3RTaG93TUlNRVR5cGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpmaWxlRG9lc05vdEV4aXN0
RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpkb3dubG9hZENhbmNlbGxlZEJ5VXNlckVycm9yKToKKyAgICAgICAg
KFdlYkNvcmU6OmRvd25sb2FkRGVzdGluYXRpb25FcnJvcik6CisgICAgICAgIC0gVXBkYXRlIGZv
ciB0eXBlIGNoYW5nZSBvZiAnZmFpbGluZ1VSTCcgYXJndW1lbnQgdG8KKyAgICAgICAgICBSZXNv
dXJjZUVycm9yKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JC
YXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yQmFzZTo6ZmFpbGluZ1VSTCk6
CisgICAgICAgIC0gQ2hhbmdlIHJldHVybiB0eXBlIGZyb20gU3RyaW5nIHRvIFVSTC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjpSZXNvdXJjZUVycm9yQmFzZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgLSBDaGFuZ2UgdHlw
ZSBvZiAnZmFpbGluZ1VSTCcgZnJvbSBTdHJpbmcgdG8gVVJMLgorCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcik6CisgICAgICAgIC0gQ2hhbmdlIHR5cGUgb2YgJ2Zh
aWxpbmdVUkwnIGZyb20gU3RyaW5nIHRvIFVSTC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
RXJyb3I6OnBsYXRmb3JtTGF6eUluaXQpOgorICAgICAgICAtIENsZWFuIHVwIGNvZGUgYW5kIGFk
ZHJlc3MgRklYTUUgYnkgcGFyc2luZyBDRlVSTFJlZiB1c2luZworICAgICAgICAgIFVSTCgpIGNv
bnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6Y2ZFcnJvcik6Cisg
ICAgICAgIC0gQ2xlYW4gdXAgY29kZSBhbmQgYWRkcmVzcyBGSVhNRSBhZnRlciBzd2l0Y2hpbmcg
dHlwZSBvZgorICAgICAgICAgIG1fZmFpbGluZ1VSTC4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgLSBDaGFuZ2UgdHlwZSBvZiAnZmFpbGluZ1VS
TCcgZnJvbSBTdHJpbmcgdG8gVVJMLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU5TRXJyb3JGcm9t
UmVzb3VyY2VFcnJvckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6cGxh
dGZvcm1MYXp5SW5pdCk6CisgICAgICAgIC0gQ2xlYW4gdXAgY29kZSBhbmQgYWRkcmVzcyBGSVhN
RSBhZnRlciBzd2l0Y2hpbmcgdHlwZSBvZgorICAgICAgICAgIG1fZmFpbGluZ1VSTC4KKworICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlRXJyb3I6OnRpbWVvdXRFcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZhaWxpbmdV
UkkpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6dGltZW91dEVycm9yKToKKyAg
ICAgICAgLSBDaGFuZ2UgdHlwZSBvZiAnZmFpbGluZ1VSTCcgZnJvbSBTdHJpbmcgdG8gVVJMLgor
CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpkaWRGYWlsKToKKyAgICAgICAgLSBDb252ZXJ0IGZhaWxpbmdVUkwoKSB0
byBTdHJpbmcgZXhwbGljaXRseS4KKyAgICAgICAgLSBBbHNvIHN3aXRjaCB0byB1c2luZyBtYWtl
U3RyaW5nKCkuCisKIDIwMTUtMTItMjIgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgog
CiAgICAgICAgIFRyeSB0byBmaXggdGhlIGlPUyBidWlsZCBhZnRlciByMTk0Mzc4CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IGQ1NDA2MDUyYjVlNzljZmUwZTBmMDRhMTFiMmFmMWQ1N2QyM2M5NmUuLjFmNjE0ZWIzMTc5Nzk1
OGZlOGE1MmU4NGRlZGYwNmQ1YWQ1ZDgxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKERvY3VtZW50JiBk
b2N1bWVudCwgVGhyZWFkYWJsCiAgICAgfQogCiAgICAgaWYgKG1fb3B0aW9ucy5jcm9zc09yaWdp
blJlcXVlc3RQb2xpY3kgPT0gRGVueUNyb3NzT3JpZ2luUmVxdWVzdHMpIHsKLSAgICAgICAgbV9j
bGllbnQtPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAw
LCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCAiQ3Jvc3Mgb3JpZ2luIHJlcXVlc3RzIGFyZSBub3Qg
c3VwcG9ydGVkLiIpKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihl
cnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0LnVybCgpLCAiQ3Jvc3Mgb3JpZ2lu
IHJlcXVlc3RzIGFyZSBub3Qgc3VwcG9ydGVkLiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtl
U2ltcGxlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KGNvbnN0IFJlc291cmNlCiAKICAgICAvLyBD
cm9zcy1vcmlnaW4gcmVxdWVzdHMgYXJlIG9ubHkgYWxsb3dlZCBmb3IgSFRUUCBhbmQgcmVnaXN0
ZXJlZCBzY2hlbWVzLiBXZSB3b3VsZCBjYXRjaCB0aGlzIHdoZW4gY2hlY2tpbmcgcmVzcG9uc2Ug
aGVhZGVycyBsYXRlciwgYnV0IHRoZXJlIGlzIG5vIHJlYXNvbiB0byBzZW5kIGEgcmVxdWVzdCB0
aGF0J3MgZ3VhcmFudGVlZCB0byBiZSBkZW5pZWQuCiAgICAgaWYgKCFTY2hlbWVSZWdpc3RyeTo6
c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHJlcXVlc3QudXJsKCkucHJvdG9jb2wo
KSkpIHsKLSAgICAgICAgbV9jbGllbnQtPmRpZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2soUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0LnVybCgpLnN0cmlu
ZygpLCAiQ3Jvc3Mgb3JpZ2luIHJlcXVlc3RzIGFyZSBvbmx5IHN1cHBvcnRlZCBmb3IgSFRUUC4i
KSk7CisgICAgICAgIG1fY2xpZW50LT5kaWRGYWlsQWNjZXNzQ29udHJvbENoZWNrKFJlc291cmNl
RXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVxdWVzdC51cmwoKSwgIkNyb3Nz
IG9yaWdpbiByZXF1ZXN0cyBhcmUgb25seSBzdXBwb3J0ZWQgZm9yIEhUVFAuIikpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnMKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIW1fc2FtZU9yaWdpblJlcXVlc3QgJiYg
bV9vcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9PSBVc2VBY2Nlc3NDb250cm9sKSB7
CiAgICAgICAgICAgICBpZiAoIXBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhyZXNwb25zZSwgbV9v
cHRpb25zLmFsbG93Q3JlZGVudGlhbHMoKSwgc2VjdXJpdHlPcmlnaW4oKSwgYWNjZXNzQ29udHJv
bEVycm9yRGVzY3JpcHRpb24pKSB7Ci0gICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZEZhaWxB
Y2Nlc3NDb250cm9sQ2hlY2soUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFs
LCAwLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgYWNjZXNzQ29udHJvbEVycm9yRGVzY3JpcHRp
b24pKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbEFjY2Vzc0NvbnRyb2xDaGVj
ayhSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVy
bCgpLCBhY2Nlc3NDb250cm9sRXJyb3JEZXNjcmlwdGlvbikpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzMzLDcgKzMzMyw3IEBAIHZvaWQg
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRTdWNjZXNzKCkKICAgICBsb2FkUmVx
dWVzdCgqYWN0dWFsUmVxdWVzdCwgU2tpcFNlY3VyaXR5Q2hlY2spOwogfQogCi12b2lkIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxpZ2h0RmFpbHVyZSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGVycm9yRGVzY3JpcHRpb24p
Cit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxpZ2h0RmFpbHVyZSh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGVycm9yRGVz
Y3JpcHRpb24pCiB7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcihlcnJvckRvbWFpbldlYktpdElu
dGVybmFsLCAwLCB1cmwsIGVycm9yRGVzY3JpcHRpb24pOwogICAgIGlmIChtX2FjdHVhbFJlcXVl
c3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmgKaW5kZXggNzc4ZDMxZWYzZmUyYmE1NDIyMjZiNjc0NGNjYjdkZTM4YmUwMGM4ZC4uZmYwODNm
YjkwZjE3MmFkYmNlNTM3NTRlMGVjN2RjNTBmYjRhN2Y2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaApAQCAtOTEsNyArOTEsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgbWFrZVNpbXBsZUNyb3NzT3JpZ2luQWNj
ZXNzUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpOwogICAgICAgICB2b2lk
IG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3RXaXRoUHJlZmxpZ2h0KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCk7CiAgICAgICAgIHZvaWQgcHJlZmxpZ2h0U3VjY2VzcygpOwotICAg
ICAgICB2b2lkIHByZWZsaWdodEZhaWx1cmUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBlcnJvckRlc2NyaXB0aW9uKTsKKyAgICAgICAg
dm9pZCBwcmVmbGlnaHRGYWlsdXJlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBlcnJvckRlc2NyaXB0aW9uKTsKIAogICAgICAgICB2b2lkIGxvYWRS
ZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFNlY3VyaXR5Q2hlY2tQb2xpY3kpOwogICAg
ICAgICBib29sIGlzQWxsb3dlZFJlZGlyZWN0KGNvbnN0IFVSTCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oCmluZGV4IDE2MjllYzU3Y2U1ZGRjMTBjZTg5ZDMxMTA0NmU5MDBhMTQz
NDNmY2QuLjFhNDBiNmRhNDQ1YzljMjgzNWFiZTk0NDUwZTYzMmQ2NTVhYzJiMjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTMyMCwxNSArMzIwLDE1IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IGNo
YXIqLCBpbnQpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmco
RG9jdW1lbnRMb2FkZXIqKSBvdmVycmlkZSB7IH0KIAotICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJv
ciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IFJlc291
cmNlRXJyb3IgZXJyb3IoIiIsIDAsICIiLCAiIik7IGVycm9yLnNldElzQ2FuY2VsbGF0aW9uKHRy
dWUpOyByZXR1cm4gZXJyb3I7IH0KLSAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEVy
cm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJy
b3IoIiIsIDAsICIiLCAiIik7IH0KLSAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEJ5
Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJl
dHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCAiIiwgIiIpOyB9Ci0gICAgdmlydHVhbCBSZXNvdXJj
ZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlk
ZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCAiIiwgIiIpOyB9Ci0gICAgdmlydHVhbCBS
ZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgIiIsICIi
KTsgfQotCi0gICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9y
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9y
KCIiLCAwLCAiIiwgIiIpOyB9Ci0gICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90
RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGUgeyByZXR1cm4gUmVz
b3VyY2VFcnJvcigiIiwgMCwgIiIsICIiKTsgfQotICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBw
bHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlk
ZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCAiIiwgIiIpOyB9CisgICAgdmlydHVhbCBS
ZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJy
aWRlIHsgUmVzb3VyY2VFcnJvciBlcnJvcigiIiwgMCwgVVJMKCksICIiKTsgZXJyb3Iuc2V0SXND
YW5jZWxsYXRpb24odHJ1ZSk7IHJldHVybiBlcnJvcjsgfQorICAgIHZpcnR1YWwgUmVzb3VyY2VF
cnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1
cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgVVJMKCksICIiKTsgfQorICAgIHZpcnR1YWwgUmVzb3Vy
Y2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7IH0K
KyAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsIFVSTCgp
LCAiIik7IH0KKyAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lD
aGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNv
dXJjZUVycm9yKCIiLCAwLCBVUkwoKSwgIiIpOyB9CisKKyAgICB2aXJ0dWFsIFJlc291cmNlRXJy
b3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJy
aWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KKyAgICB2aXJ0
dWFsIFJlc291cmNlRXJyb3IgZmlsZURvZXNOb3RFeGlzdEVycm9yKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBVUkwoKSwgIiIp
OyB9CisgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3Io
IiIsIDAsIFVSTCgpLCAiIik7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGYWxsQmFjayhj
b25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNDgxNTBhMGUzYTRmMjdkODkwMjI1MGNh
M2FkZmMwMmYzNTYzYzY4MS4uOTAwZGQzODAwYmZhNDU1OTk3OGMyZTQxYTQwMjAwNzE1YzRjMmVi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yNjg2LDcgKzI2ODYs
NyBAQCB1bnNpZ25lZCBsb25nIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdQogICAgICAgICAgICAgaWYgKGF1dG8qIGNvbnRy
b2xsZXIgPSBwYWdlLT51c2VyQ29udGVudENvbnRyb2xsZXIoKSkgewogICAgICAgICAgICAgICAg
IGlmIChtX2RvY3VtZW50TG9hZGVyICYmIGNvbnRyb2xsZXItPnByb2Nlc3NDb250ZW50RXh0ZW5z
aW9uUnVsZXNGb3JMb2FkKG5ld1JlcXVlc3QsIFJlc291cmNlVHlwZTo6UmF3LCAqbV9kb2N1bWVu
dExvYWRlcikgPT0gQ29udGVudEV4dGVuc2lvbnM6OkJsb2NrZWRTdGF0dXM6OkJsb2NrZWQpIHsK
ICAgICAgICAgICAgICAgICAgICAgbmV3UmVxdWVzdCA9IHsgfTsKLSAgICAgICAgICAgICAgICAg
ICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGlu
aXRpYWxSZXF1ZXN0LnVybCgpLnN0cmluZygpLCBlbXB0eVN0cmluZygpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWws
IDAsIGluaXRpYWxSZXF1ZXN0LnVybCgpLCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgICAgICAg
ICAgICAgcmVzcG9uc2UgPSB7IH07CiAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBudWxscHRy
OwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9N
ZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291
cmNlTG9hZGVyLmNwcAppbmRleCAyMGQyZTZlYzlhMzM5ZmJlZTFkZGViOTIwODQyMGNjZmMyMWNi
ZjA3Li5kOTMzY2VlM2Q1YmYzMDY0Mjg1MmIxY2MxYzAyN2VmMzQ3OTQ4MDk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDAsNyArMTAw
LDcgQEAgdm9pZCBNZWRpYVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3UKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IFN0cmluZz4gY29uc29sZU1lc3NhZ2UoIkNyb3NzLW9yaWdpbiBtZWRpYSByZXNv
dXJjZSBsb2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3ku
Iik7CiAgICAgICAgIG1fZG9jdW1lbnQuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVNZXNzYWdlLmdldCgpKTsKICAg
ICAgICAgbV9kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrID0gZmFsc2U7Ci0gICAgICAgIG1fY2xp
ZW50LT5hY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldl
YktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgY29uc29sZU1lc3NhZ2Uu
Z2V0KCkpKTsKKyAgICAgICAgbV9jbGllbnQtPmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChSZXNv
dXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCBj
b25zb2xlTWVzc2FnZS5nZXQoKSkpOwogICAgICAgICBzdG9wKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAwZDgx
ZmY1YmEyOGEyMTA0ZDUyOGFlY2ZiYmJlNzM1NmNhMjNiNjc4Li4xYTk3M2IwZDUyM2I4ZTFmMzJm
MjVhODA4OWM4Mjk4NTc0NTBlM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkRGF0
YVVSTCgpCiAgICAgICAgIGlmIChsb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIGlmICghZGVjb2RlUmVzdWx0KSB7Ci0gICAgICAgICAg
ICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFs
LCAwLCB1cmwuc3RyaW5nKCksICJEYXRhIFVSTCBkZWNvZGluZyBmYWlsZWQiKSk7CisgICAgICAg
ICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVy
bmFsLCAwLCB1cmwsICJEYXRhIFVSTCBkZWNvZGluZyBmYWlsZWQiKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGxvYWRlci0+d2FzQ2FuY2VsbGVkKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5k
ZXggYTBkYzNjYTFhZmMyNTZjNTYyMDljOWQ5NjhkNDViMDJkZDUxMmYxNC4uMWRiOGQ2NDg5MmZh
MjMyNDk3YjAzODIxNDQwNmYzN2VmMTMyZWJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQg
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6Y2FuY2VsKCkKICAgICBp
ZiAoIWNsaWVudFdyYXBwZXItPmRvbmUoKSkgewogICAgICAgICAvLyBJZiB0aGUgY2xpZW50IGhh
c24ndCByZWFjaGVkIGEgdGVybWluYXRpb24gc3RhdGUsIHRoZW4gdHJhbnNpdGlvbiBpdCBieSBz
ZW5kaW5nIGEgY2FuY2VsbGF0aW9uIGVycm9yLgogICAgICAgICAvLyBOb3RlOiBubyBtb3JlIGNs
aWVudCBjYWxsYmFja3Mgd2lsbCBiZSBkb25lIGFmdGVyIHRoaXMgbWV0aG9kIC0tIHRoZSBjbGVh
ckNsaWVudFdyYXBwZXIoKSBjYWxsIGVuc3VyZXMgdGhhdC4KLSAgICAgICAgUmVzb3VyY2VFcnJv
ciBlcnJvcihTdHJpbmcoKSwgMCwgU3RyaW5nKCksIFN0cmluZygpKTsKKyAgICAgICAgUmVzb3Vy
Y2VFcnJvciBlcnJvcihTdHJpbmcoKSwgMCwgVVJMKCksIFN0cmluZygpKTsKICAgICAgICAgZXJy
b3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7CiAgICAgICAgIGNsaWVudFdyYXBwZXItPmRpZEZh
aWwoZXJyb3IpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDczNzhkNmQxYWM5MjQxYmM2NzY5Njk3NjMy
YzdjZjQ3YmJmNTJiOWUuLmQ5ZmNmZTYyNDM2MzA0OTM5ZDFmZmE4MmVjM2EwMzcwMGUyNjRhNzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmNwcApAQCAtNTQ0LDcgKzU0NCw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlCiAg
ICAgICAgICAgICAgICAgYXV0byByZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHR5cGUsIHJlcXVl
c3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LmNoYXJzZXQoKSwgc2Vzc2lvbklE
KCkpOwogICAgICAgICAgICAgICAgIEFTU0VSVChyZXNvdXJjZSk7CiAgICAgICAgICAgICAgICAg
cmVzb3VyY2UtPmVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXM6OkxvYWRFcnJvcik7Ci0gICAg
ICAgICAgICAgICAgcmVzb3VyY2UtPnNldFJlc291cmNlRXJyb3IoUmVzb3VyY2VFcnJvcihDb250
ZW50RXh0ZW5zaW9uczo6V2ViS2l0Q29udGVudEJsb2NrZXJEb21haW4sIDAsIHJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCksIFdFQl9VSV9TVFJJTkcoIlRoZSBVUkwgd2Fz
IGJsb2NrZWQgYnkgYSBjb250ZW50IGJsb2NrZXIiLCAiV2ViS2l0RXJyb3JCbG9ja2VkQnlDb250
ZW50QmxvY2tlciBkZXNjcmlwdGlvbiIpKSk7CisgICAgICAgICAgICAgICAgcmVzb3VyY2UtPnNl
dFJlc291cmNlRXJyb3IoUmVzb3VyY2VFcnJvcihDb250ZW50RXh0ZW5zaW9uczo6V2ViS2l0Q29u
dGVudEJsb2NrZXJEb21haW4sIDAsIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCksIFdF
Ql9VSV9TVFJJTkcoIlRoZSBVUkwgd2FzIGJsb2NrZWQgYnkgYSBjb250ZW50IGJsb2NrZXIiLCAi
V2ViS2l0RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciBkZXNjcmlwdGlvbiIpKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IGI4MzQx
ZTZiNmMwNzU3NmY3NGY0MTIzNDUzMzJhZjVlOTkyNmM0NjQuLjIwMTNjMDhlODBjOWUwZjA0MjM4
NGI3NWI5NjE1ODAwNzUwNmM1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCkBA
IC0yNzMsNyArMjczLDcgQEAgdm9pZCBFdmVudFNvdXJjZTo6ZGlkRmFpbChjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikKIAogdm9pZCBFdmVudFNvdXJjZTo6ZGlkRmFpbEFjY2Vzc0NvbnRyb2xD
aGVjayhjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBTdHJpbmcgbWVzc2FnZSA9
IG1ha2VTdHJpbmcoIkV2ZW50U291cmNlIGNhbm5vdCBsb2FkICIsIGVycm9yLmZhaWxpbmdVUkwo
KSwgIi4gIiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7CisgICAgU3RyaW5nIG1lc3Nh
Z2UgPSBtYWtlU3RyaW5nKCJFdmVudFNvdXJjZSBjYW5ub3QgbG9hZCAiLCBlcnJvci5mYWlsaW5n
VVJMKCkuc3RyaW5nKCksICIuICIsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwogICAg
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UpOwogCiAgICAgYWJvcnRDb25uZWN0
aW9uQXR0ZW1wdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0Vy
cm9yc0VmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmNwcApp
bmRleCA2ZWZmNTU1OTMzYzk2MzFhMjM4MmUyNmNkMTkyMjkzYzdkOGI2ZTM3Li4zMjgyNmU1Njcy
NzMwM2JlZmRlMjljMDhkZThjNTdhYjQ5ZGJlMzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lZmwvRXJyb3JzRWZsLmNwcApAQCAtMzQsNDIgKzM0LDQyIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5OZXR3b3Jr
LCBOZXR3b3JrRXJyb3JDYW5jZWxsZWQsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0
ZXJhbCgiTG9hZCByZXF1ZXN0IGNhbmNlbGxlZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihlcnJvckRvbWFpbk5ldHdvcmssIE5ldHdvcmtFcnJvckNhbmNlbGxlZCwgcmVxdWVzdC51cmwo
KSwgQVNDSUlMaXRlcmFsKCJMb2FkIHJlcXVlc3QgY2FuY2VsbGVkIikpOwogfQogCiBSZXNvdXJj
ZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0g
ICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Qb2xpY3ksIFBvbGljeUVycm9yQ2Fu
bm90VXNlUmVzdHJpY3RlZFBvcnQsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJh
bCgiTm90IGFsbG93ZWQgdG8gdXNlIHJlc3RyaWN0ZWQgbmV0d29yayBwb3J0IikpOworICAgIHJl
dHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFVz
ZVJlc3RyaWN0ZWRQb3J0LCByZXF1ZXN0LnVybCgpLCBBU0NJSUxpdGVyYWwoIk5vdCBhbGxvd2Vk
IHRvIHVzZSByZXN0cmljdGVkIG5ldHdvcmsgcG9ydCIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBi
bG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5
RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgQVND
SUlMaXRlcmFsKCJCbG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlciIpKTsKKyAgICByZXR1cm4gUmVz
b3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JCbG9ja2VkQnlDb250ZW50
QmxvY2tlciwgcmVxdWVzdC51cmwoKSwgQVNDSUlMaXRlcmFsKCJCbG9ja2VkIGJ5IGNvbnRlbnQg
YmxvY2tlciIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVy
cm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFNob3dVUkwsIHJlcXVlc3QudXJsKCku
c3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiVVJMIGNhbm5vdCBiZSBzaG93biIpKTsKKyAgICByZXR1
cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RTaG93
VVJMLCByZXF1ZXN0LnVybCgpLCBBU0NJSUxpdGVyYWwoIlVSTCBjYW5ub3QgYmUgc2hvd24iKSk7
CiB9CiAKIFJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3Io
ZXJyb3JEb21haW5Qb2xpY3ksIFBvbGljeUVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGlj
eUNoYW5nZSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJGcmFtZSBsb2Fk
IHdhcyBpbnRlcnJ1cHRlZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFp
blBvbGljeSwgUG9saWN5RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCBy
ZXF1ZXN0LnVybCgpLCBBU0NJSUxpdGVyYWwoIkZyYW1lIGxvYWQgd2FzIGludGVycnVwdGVkIikp
OwogfQogCiBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9y
RG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFNob3dNaW1lVHlwZSwgcmVzcG9uc2UudXJs
KCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiQ29udGVudCB3aXRoIHRoZSBzcGVjaWZpZWQgTUlN
RSB0eXBlIGNhbm5vdCBiZSBzaG93biIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJv
ckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RTaG93TWltZVR5cGUsIHJlc3BvbnNlLnVy
bCgpLCBBU0NJSUxpdGVyYWwoIkNvbnRlbnQgd2l0aCB0aGUgc3BlY2lmaWVkIE1JTUUgdHlwZSBj
YW5ub3QgYmUgc2hvd24iKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgZmlsZURvZXNOb3RFeGlzdEVy
cm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKGVycm9yRG9tYWluTmV0d29yaywgTmV0d29ya0Vycm9yRmlsZURvZXNOb3RFeGlz
dCwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiRmlsZSBkb2VzIG5vdCBl
eGlzdCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbk5ldHdvcmssIE5l
dHdvcmtFcnJvckZpbGVEb2VzTm90RXhpc3QsIHJlc3BvbnNlLnVybCgpLCBBU0NJSUxpdGVyYWwo
IkZpbGUgZG9lcyBub3QgZXhpc3QiKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhh
bmRsZUxvYWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBy
ZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBsdWdpbiwgUGx1Z2luRXJyb3JXaWxsSGFu
ZGxlTG9hZCwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiUGx1Z2luIHdp
bGwgaGFuZGxlIGxvYWQiKSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Q
bHVnaW4sIFBsdWdpbkVycm9yV2lsbEhhbmRsZUxvYWQsIHJlc3BvbnNlLnVybCgpLCBBU0NJSUxp
dGVyYWwoIlBsdWdpbiB3aWxsIGhhbmRsZSBsb2FkIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGRv
d25sb2FkTmV0d29ya0Vycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIG5ldHdvcmtFcnJvcikKQEAg
LTc5LDEyICs3OSwxMiBAQCBSZXNvdXJjZUVycm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0
IFJlc291cmNlRXJyb3ImIG5ldHdvcmtFcnJvcikKIAogUmVzb3VyY2VFcnJvciBkb3dubG9hZENh
bmNlbGxlZEJ5VXNlckVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewot
ICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJy
b3JDYW5jZWxsZWRCeVVzZXIsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBBU0NJSUxpdGVyYWwo
IlVzZXIgY2FuY2VsbGVkIHRoZSBkb3dubG9hZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihlcnJvckRvbWFpbkRvd25sb2FkLCBEb3dubG9hZEVycm9yQ2FuY2VsbGVkQnlVc2VyLCByZXNw
b25zZS51cmwoKSwgQVNDSUlMaXRlcmFsKCJVc2VyIGNhbmNlbGxlZCB0aGUgZG93bmxvYWQiKSk7
CiB9CiAKIFJlc291cmNlRXJyb3IgZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAg
ICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBEb3dubG9hZEVycm9y
RGVzdGluYXRpb24sIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBlcnJvck1lc3NhZ2UpOworICAg
IHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JE
ZXN0aW5hdGlvbiwgcmVzcG9uc2UudXJsKCksIGVycm9yTWVzc2FnZSk7CiB9CiAKIFJlc291cmNl
RXJyb3IgcHJpbnRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9y
c0d0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcAppbmRl
eCA2ODhhOTA2ZDllYjQwOGVkZmI0NzNhZmZmNzk4MjU2NDZlYzFmZTBmLi5mYzk1Y2Y5ZTE4ODVm
YjJhZGFhMzk1NGFjNzQ1Y2NhOGMzMWNjNDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvRXJyb3JzR3RrLmNwcApAQCAtMzAsNDggKzMwLDQ4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQogewogICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluTmV0d29yaywgTmV0
d29ya0Vycm9yQ2FuY2VsbGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QudXJs
KCkuc3RyaW5nKCksIF8oIkxvYWQgcmVxdWVzdCBjYW5jZWxsZWQiKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdC51cmwoKSwgXygiTG9hZCByZXF1ZXN0IGNhbmNlbGxlZCIpKTsK
IH0KIAogUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQogewogICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQ
b2xpY3lFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIF8oIk5vdCBhbGxvd2VkIHRvIHVzZSByZXN0cmlj
dGVkIG5ldHdvcmsgcG9ydCIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LnVy
bCgpLCBfKCJOb3QgYWxsb3dlZCB0byB1c2UgcmVzdHJpY3RlZCBuZXR3b3JrIHBvcnQiKSk7CiB9
CiAKIFJlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JE
b21haW5Qb2xpY3ksIFBvbGljeUVycm9yQmxvY2tlZEJ5Q29udGVudEJsb2NrZXIsIHJlcXVlc3Qu
dXJsKCkuc3RyaW5nKCksIF8oIkJsb2NrZWQgYnkgY29udGVudCBibG9ja2VyIikpOworICAgIHJl
dHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckJsb2NrZWRC
eUNvbnRlbnRCbG9ja2VyLCByZXF1ZXN0LnVybCgpLCBfKCJCbG9ja2VkIGJ5IGNvbnRlbnQgYmxv
Y2tlciIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9y
RG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFNob3dVUkwsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgXygiVVJMIGNhbm5vdCBiZSBzaG93biIp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LnVybCgpLCBfKCJVUkwgY2Fubm90
IGJlIHNob3duIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hh
bmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIHJldHVybiBS
ZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckZyYW1lTG9hZEludGVy
cnVwdGVkQnlQb2xpY3lDaGFuZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC51
cmwoKS5zdHJpbmcoKSwgXygiRnJhbWUgbG9hZCB3YXMgaW50ZXJydXB0ZWQiKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdC51cmwoKSwgXygiRnJhbWUgbG9hZCB3YXMgaW50ZXJy
dXB0ZWQiKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoZXJyb3JEb21haW5Qb2xpY3ksIFBvbGljeUVycm9yQ2Fubm90U2hvd01pbWVUeXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBfKCJDb250ZW50
IHdpdGggdGhlIHNwZWNpZmllZCBNSU1FIHR5cGUgY2Fubm90IGJlIHNob3duIikpOworICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnVybCgpLCBfKCJDb250ZW50IHdpdGggdGhlIHNw
ZWNpZmllZCBNSU1FIHR5cGUgY2Fubm90IGJlIHNob3duIikpOwogfQogCiBSZXNvdXJjZUVycm9y
IGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
IHsKICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbk5ldHdvcmssIE5ldHdvcmtF
cnJvckZpbGVEb2VzTm90RXhpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Uu
dXJsKCkuc3RyaW5nKCksIF8oIkZpbGUgZG9lcyBub3QgZXhpc3QiKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzcG9uc2UudXJsKCksIF8oIkZpbGUgZG9lcyBub3QgZXhpc3QiKSk7CiB9
CiAKIFJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRv
bWFpblBsdWdpbiwgUGx1Z2luRXJyb3JXaWxsSGFuZGxlTG9hZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgXygiUGx1Z2luIHdpbGwgaGFuZGxlIGxv
YWQiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UudXJsKCksIF8oIlBsdWdp
biB3aWxsIGhhbmRsZSBsb2FkIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGRvd25sb2FkTmV0d29y
a0Vycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIG5ldHdvcmtFcnJvcikKQEAgLTgzLDEzICs4Mywx
MyBAQCBSZXNvdXJjZUVycm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0IFJlc291cmNlRXJy
b3ImIG5ldHdvcmtFcnJvcikKIFJlc291cmNlRXJyb3IgZG93bmxvYWRDYW5jZWxsZWRCeVVzZXJF
cnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICByZXR1cm4gUmVz
b3VyY2VFcnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBEb3dubG9hZEVycm9yQ2FuY2VsbGVkQnlV
c2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBf
KCJVc2VyIGNhbmNlbGxlZCB0aGUgZG93bmxvYWQiKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzcG9uc2UudXJsKCksIF8oIlVzZXIgY2FuY2VsbGVkIHRoZSBkb3dubG9hZCIpKTsKIH0K
IAogUmVzb3VyY2VFcnJvciBkb3dubG9hZERlc3RpbmF0aW9uRXJyb3IoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewogICAgIHJl
dHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JEZXN0
aW5hdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS51cmwoKS5zdHJpbmco
KSwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS51cmwo
KSwgZXJyb3JNZXNzYWdlKTsKIH0KIAogUmVzb3VyY2VFcnJvciBwcmludEVycm9yKGNvbnN0IFVS
TCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKaW5kZXggNWFl
ODM3YzMxYzVkOGE0ODU2MjAwOTM4NmY4MGVkYzAxOTU0YzY4OS4uYTgwZTc2MTliNWFkOWRkZGRl
ODU2ODIzNzYyZWNlNGY1NTFiYWQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRl
ZiBSZXNvdXJjZUVycm9yQmFzZV9oCiAjZGVmaW5lIFJlc291cmNlRXJyb3JCYXNlX2gKIAorI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC00Myw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmlu
ZyYgZG9tYWluKCkgY29uc3QgeyBsYXp5SW5pdCgpOyByZXR1cm4gbV9kb21haW47IH0KICAgICBp
bnQgZXJyb3JDb2RlKCkgY29uc3QgeyBsYXp5SW5pdCgpOyByZXR1cm4gbV9lcnJvckNvZGU7IH0K
LSAgICBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwoKSBjb25zdCB7IGxhenlJbml0KCk7IHJldHVy
biBtX2ZhaWxpbmdVUkw7IH0KKyAgICBjb25zdCBVUkwmIGZhaWxpbmdVUkwoKSBjb25zdCB7IGxh
enlJbml0KCk7IHJldHVybiBtX2ZhaWxpbmdVUkw7IH0KICAgICBjb25zdCBTdHJpbmcmIGxvY2Fs
aXplZERlc2NyaXB0aW9uKCkgY29uc3QgeyBsYXp5SW5pdCgpOyByZXR1cm4gbV9sb2NhbGl6ZWRE
ZXNjcmlwdGlvbjsgfQogCiAgICAgdm9pZCBzZXRJc0NhbmNlbGxhdGlvbihib29sIGlzQ2FuY2Vs
bGF0aW9uKSB7IG1faXNDYW5jZWxsYXRpb24gPSBpc0NhbmNlbGxhdGlvbjsgfQpAQCAtNjMsNyAr
NjQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgIH0KIAotICAgIFJlc291cmNlRXJyb3JCYXNl
KGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxp
bmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCisgICAgUmVzb3VyY2VF
cnJvckJhc2UoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFVSTCYg
ZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbikKICAgICAgICAg
OiBtX2RvbWFpbihkb21haW4pCiAgICAgICAgICwgbV9mYWlsaW5nVVJMKGZhaWxpbmdVUkwpCiAg
ICAgICAgICwgbV9sb2NhbGl6ZWREZXNjcmlwdGlvbihsb2NhbGl6ZWREZXNjcmlwdGlvbikKQEAg
LTg2LDcgKzg3LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFy
ZShjb25zdCBSZXNvdXJjZUVycm9yJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgcmV0dXJuIHRy
dWU7IH0KIAogICAgIFN0cmluZyBtX2RvbWFpbjsKLSAgICBTdHJpbmcgbV9mYWlsaW5nVVJMOwor
ICAgIFVSTCBtX2ZhaWxpbmdVUkw7CiAgICAgU3RyaW5nIG1fbG9jYWxpemVkRGVzY3JpcHRpb247
CiAgICAgaW50IG1fZXJyb3JDb2RlOwogICAgIGJvb2wgbV9pc051bGwgOiAxOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaAppbmRleCAx
NzAzY2M5MWY2OGIyYTVlNjRmODc5MjNjZTZmYmExZDI3ZGQyNDFkLi5iMzI4YmExNzE1MDQxMGY1
M2Y3NzE2NjkyMDg1MTRiNmE3NzQ2ZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6
CiAgICAgewogICAgIH0KIAotICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4s
IGludCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBs
b2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9t
YWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYg
bG9jYWxpemVkRGVzY3JpcHRpb24pCiAgICAgICAgIDogUmVzb3VyY2VFcnJvckJhc2UoZG9tYWlu
LCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uKQogICAgICAgICAs
IG1fZGF0YUlzVXBUb0RhdGUodHJ1ZSkKICAgICB7CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoK
IAogI2lmIFVTRShDRk5FVFdPUkspCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIFJlc291cmNlRXJy
b3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFp
bGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbiwgQ0ZEYXRhUmVmIGNl
cnRpZmljYXRlKTsKKyAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQg
ZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVk
RGVzY3JpcHRpb24sIENGRGF0YVJlZiBjZXJ0aWZpY2F0ZSk7CiAgICAgUENDRVJUX0NPTlRFWFQg
Y2VydGlmaWNhdGUoKSBjb25zdDsKICAgICB2b2lkIHNldENlcnRpZmljYXRlKENGRGF0YVJlZik7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VFcnJvckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VFcnJvckNGLmNwcAppbmRleCAxMzFmYmIwNDYxMTcwNmY2NGQ4NTBhMWM1MGUwNWUx
NGEyYzZlMTMzLi42MGJmYjM2NTkxZTA3YzFiZmJlYWI2YjFlM2I1NmZhYjk4NDc4NDczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JD
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVy
cm9yQ0YuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3Io
Q0ZFcnJvclJlZiBjZkVycm9yKQogfQogCiAjaWYgUExBVEZPUk0oV0lOKQotUmVzb3VyY2VFcnJv
cjo6UmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29u
c3QgU3RyaW5nJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9u
LCBDRkRhdGFSZWYgY2VydGlmaWNhdGUpCitSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKGNv
bnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkws
IGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24sIENGRGF0YVJlZiBjZXJ0aWZpY2F0
ZSkKICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJM
LCBsb2NhbGl6ZWREZXNjcmlwdGlvbikKICAgICAsIG1fZGF0YUlzVXBUb0RhdGUodHJ1ZSkKICAg
ICAsIG1fY2VydGlmaWNhdGUoY2VydGlmaWNhdGUpCkBAIC0xMDEsMTcgKzEwMSwxMiBAQCB2b2lk
IFJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogICAgIGlmICh1c2VySW5mby5nZXQo
KSkgewogICAgICAgICBDRlN0cmluZ1JlZiBmYWlsaW5nVVJMU3RyaW5nID0gKENGU3RyaW5nUmVm
KSBDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwgZmFpbGluZ1VSTFN0cmluZ0tl
eSk7CiAgICAgICAgIGlmIChmYWlsaW5nVVJMU3RyaW5nKQotICAgICAgICAgICAgbV9mYWlsaW5n
VVJMID0gU3RyaW5nKGZhaWxpbmdVUkxTdHJpbmcpOworICAgICAgICAgICAgbV9mYWlsaW5nVVJM
ID0gVVJMKFVSTCgpLCBmYWlsaW5nVVJMU3RyaW5nKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBDRlVSTFJlZiBmYWlsaW5nVVJMID0gKENGVVJMUmVmKSBDRkRpY3Rpb25hcnlHZXRWYWx1
ZSh1c2VySW5mby5nZXQoKSwgZmFpbGluZ1VSTEtleSk7CiAgICAgICAgICAgICBpZiAoZmFpbGlu
Z1VSTCkgewotICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYWJzb2x1dGVVUkxS
ZWYgPSBhZG9wdENGKENGVVJMQ29weUFic29sdXRlVVJMKGZhaWxpbmdVUkwpKTsKLSAgICAgICAg
ICAgICAgICBpZiAoYWJzb2x1dGVVUkxSZWYuZ2V0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IENGVVJMR2V0U3RyaW5nIHJldHVybnMgYSBub3JtYWxpemVkIFVSTCB3aGljaCBp
cyBkaWZmZXJlbnQgZnJvbSB3aGF0IGlzIGFjdHVhbGx5IHVzZWQgYnkgQ0ZOZXR3b3JrLgotICAg
ICAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgdXNlIENGVVJMR2V0Qnl0ZXMgaW5zdGVhZC4K
LSAgICAgICAgICAgICAgICAgICAgZmFpbGluZ1VSTFN0cmluZyA9IENGVVJMR2V0U3RyaW5nKGFi
c29sdXRlVVJMUmVmLmdldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgbV9mYWlsaW5nVVJMID0g
U3RyaW5nKGZhaWxpbmdVUkxTdHJpbmcpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBpZiAoUmV0YWluUHRyPENGVVJMUmVmPiBhYnNvbHV0ZVVSTFJlZiA9IGFkb3B0Q0YoQ0ZV
UkxDb3B5QWJzb2x1dGVVUkwoZmFpbGluZ1VSTCkpKQorICAgICAgICAgICAgICAgICAgICBtX2Zh
aWxpbmdVUkwgPSBVUkwoYWJzb2x1dGVVUkxSZWYuZ2V0KCkpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgICAgIG1fbG9jYWxpemVkRGVzY3JpcHRpb24gPSAoQ0ZTdHJpbmdSZWYpIENG
RGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrQ0ZFcnJvckxvY2FsaXplZERlc2Ny
aXB0aW9uS2V5KTsKQEAgLTE1MiwxMiArMTQ3LDkgQEAgQ0ZFcnJvclJlZiBSZXNvdXJjZUVycm9y
OjpjZkVycm9yKCkgY29uc3QKICAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJ
bmZvLmdldCgpLCBrQ0ZFcnJvckxvY2FsaXplZERlc2NyaXB0aW9uS2V5LCBtX2xvY2FsaXplZERl
c2NyaXB0aW9uLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgICAgIGlmICghbV9mYWls
aW5nVVJMLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBm
YWlsaW5nVVJMU3RyaW5nID0gbV9mYWlsaW5nVVJMLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAg
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZhaWxpbmdVUkxTdHJpbmcgPSBtX2ZhaWxpbmdV
Ukwuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICAgICAgICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKHVzZXJJbmZvLmdldCgpLCBmYWlsaW5nVVJMU3RyaW5nS2V5LCBmYWlsaW5nVVJMU3Ry
aW5nLmdldCgpKTsKLSAgICAgICAgICAgIC8vIEZJWEVNRTogV2Ugbm9ybWFsbHkgY3JlYXRlIGEg
Q0ZVUkwgZnJvbSBhIHN0cmluZyBieSB1c2luZyBVUkw6OmNyZWF0ZUNGVVJMLCB3aGljaCBoYW5k
bGVzCi0gICAgICAgICAgICAvLyBjYXNlcyBjb3JyZWN0bHkgdGhhdCBDRlVSTENyZWF0ZVdpdGhT
dHJpbmcgaGFuZGxlcyBpbmNvcnJlY3RseS4KLSAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTFJl
Zj4gdXJsID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhTdHJpbmcoMCwgZmFpbGluZ1VSTFN0cmlu
Zy5nZXQoKSwgMCkpOwotICAgICAgICAgICAgaWYgKHVybCkKKyAgICAgICAgICAgIGlmIChSZXRh
aW5QdHI8Q0ZVUkxSZWY+IHVybCA9IG1fZmFpbGluZ1VSTC5jcmVhdGVDRlVSTCgpKQogICAgICAg
ICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBmYWlsaW5nVVJM
S2V5LCB1cmwuZ2V0KCkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCmluZGV4IDQxYzE5OTE0YmRiYzZl
YzYxODM4YWI5YTViODM5YWVjODBkY2IzY2EuLmMzMWRkNDI1MWY2N2ExY2VmNmFiNDkyOTNlNTk0
NWE3N2VhZTJiNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlRXJyb3IuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgewog
ICAgIH0KIAotICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJv
ckNvZGUsIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWRE
ZXNjcmlwdGlvbikKKyAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQg
ZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVk
RGVzY3JpcHRpb24pCiAgICAgICAgIDogUmVzb3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJvckNv
ZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uKSwgbV9zc2xFcnJvcnMoMCkKICAg
ICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VFcnJvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlRXJyb3JNYWMubW0KaW5kZXggZjdjODY0Y2UzYjUwOTlmZTAyZjE2OTY5YWNl
Mzk3ZjY4MmU4M2RiYS4uNjQxODkzODAwMDYzMzMzYzcwMWRiNTNjYWMwMDFhYjU0OTlmNzA3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VF
cnJvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNv
dXJjZUVycm9yTWFjLm1tCkBAIC0xODIsMTIgKzE4Miw5IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNF
cnJvcj4gY3JlYXRlTlNFcnJvckZyb21SZXNvdXJjZUVycm9yQmFzZShjb25zdCBSZXNvdXJjZUVy
cm9yCiAgICAgICAgIFt1c2VySW5mby5nZXQoKSBzZXRWYWx1ZTpyZXNvdXJjZUVycm9yLmxvY2Fs
aXplZERlc2NyaXB0aW9uKCkgZm9yS2V5Ok5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXldOwogCiAg
ICAgaWYgKCFyZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAg
Ly8gRklYRU1FOiBXZSBub3JtYWxseSBjcmVhdGUgYW4gTlNVUkwgZnJvbSBhIHN0cmluZyBieSB1
c2luZyBVUkw6OmNyZWF0ZU5TVVJMLCB3aGljaCBoYW5kbGVzCi0gICAgICAgIC8vIGNhc2VzIGNv
cnJlY3RseSB0aGF0IGluaXRXaXRoU3RyaW5nOiBoYW5kbGVzIGluY29ycmVjdGx5LgotICAgICAg
ICBSZXRhaW5QdHI8TlNVUkw+IGNvY29hVVJMID0gYWRvcHROUyhbW05TVVJMIGFsbG9jXSBpbml0
V2l0aFN0cmluZzpyZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKV0pOwotICAgICAgICBbdXNlcklu
Zm8uZ2V0KCkgc2V0VmFsdWU6cmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkgZm9yS2V5OkAiTlNF
cnJvckZhaWxpbmdVUkxTdHJpbmdLZXkiXTsKLSAgICAgICAgaWYgKGNvY29hVVJMKQotICAgICAg
ICAgICAgW3VzZXJJbmZvLmdldCgpIHNldFZhbHVlOmNvY29hVVJMLmdldCgpIGZvcktleTpAIk5T
RXJyb3JGYWlsaW5nVVJMS2V5Il07CisgICAgICAgIFt1c2VySW5mby5nZXQoKSBzZXRWYWx1ZToo
TlNTdHJpbmcgKilyZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKS5zdHJpbmcoKSBmb3JLZXk6QCJO
U0Vycm9yRmFpbGluZ1VSTFN0cmluZ0tleSJdOworICAgICAgICBpZiAoTlNVUkwgKmNvY29hVVJM
ID0gKE5TVVJMICopcmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkpCisgICAgICAgICAgICBbdXNl
ckluZm8uZ2V0KCkgc2V0VmFsdWU6Y29jb2FVUkwgZm9yS2V5OkAiTlNFcnJvckZhaWxpbmdVUkxL
ZXkiXTsKICAgICB9CiAKICAgICByZXR1cm4gYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRX
aXRoRG9tYWluOnJlc291cmNlRXJyb3IuZG9tYWluKCkgY29kZTpyZXNvdXJjZUVycm9yLmVycm9y
Q29kZSgpIHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXSk7CkBAIC0yNjYsMTAgKzI2MywxMCBAQCB2
b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogICAgIG1fZG9tYWluID0gW21f
cGxhdGZvcm1FcnJvci5nZXQoKSBkb21haW5dOwogICAgIG1fZXJyb3JDb2RlID0gW21fcGxhdGZv
cm1FcnJvci5nZXQoKSBjb2RlXTsKIAotICAgIE5TU3RyaW5nKiBmYWlsaW5nVVJMU3RyaW5nID0g
W1ttX3BsYXRmb3JtRXJyb3IuZ2V0KCkgdXNlckluZm9dIHZhbHVlRm9yS2V5OkAiTlNFcnJvckZh
aWxpbmdVUkxTdHJpbmdLZXkiXTsKLSAgICBpZiAoIWZhaWxpbmdVUkxTdHJpbmcpCi0gICAgICAg
IGZhaWxpbmdVUkxTdHJpbmcgPSBbW1ttX3BsYXRmb3JtRXJyb3IuZ2V0KCkgdXNlckluZm9dIHZh
bHVlRm9yS2V5OkAiTlNFcnJvckZhaWxpbmdVUkxLZXkiXSBhYnNvbHV0ZVN0cmluZ107Ci0gICAg
bV9mYWlsaW5nVVJMID0gZmFpbGluZ1VSTFN0cmluZzsgCisgICAgaWYgKE5TU3RyaW5nKiBmYWls
aW5nVVJMU3RyaW5nID0gW1ttX3BsYXRmb3JtRXJyb3IuZ2V0KCkgdXNlckluZm9dIHZhbHVlRm9y
S2V5OkAiTlNFcnJvckZhaWxpbmdVUkxTdHJpbmdLZXkiXSkKKyAgICAgICAgbV9mYWlsaW5nVVJM
ID0gVVJMKFVSTCgpLCBmYWlsaW5nVVJMU3RyaW5nKTsKKyAgICBlbHNlCisgICAgICAgIG1fZmFp
bGluZ1VSTCA9IFVSTCgoTlNVUkwgKilbW21fcGxhdGZvcm1FcnJvci5nZXQoKSB1c2VySW5mb10g
dmFsdWVGb3JLZXk6QCJOU0Vycm9yRmFpbGluZ1VSTEtleSJdKTsKICAgICAvLyBXb3JrYXJvdW5k
IGZvciA8cmRhcjovL3Byb2JsZW0vNjU1NDA2Nz4KICAgICBtX2xvY2FsaXplZERlc2NyaXB0aW9u
ID0gbV9mYWlsaW5nVVJMOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5o
CmluZGV4IGU1MDI5N2E3ZmU5ZDRjODk0OTM4MTBkNTZiYjgwZjhhNzVmNGI4ZWIuLjQ0N2IwMDI3
NDhhNjNmNWFjNDA3NmFiM2Q5YzNmMmE1MjM1ZmI2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaApAQCAtNDEsNyArNDEs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yIDogcHVibGljIFJl
c291cmNlRXJyb3JCYXNlCiB7CiBwdWJsaWM6Ci0gICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJp
bmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBmYWlsaW5nVVJMLCBjb25z
dCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQorICAgIFJlc291cmNlRXJyb3IoY29uc3Qg
U3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29u
c3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbikKICAgICAgICAgOiBSZXNvdXJjZUVycm9y
QmFzZShkb21haW4sIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24p
CiAgICAgICAgICwgbV90bHNFcnJvcnMoMCkKICAgICB7CkBAIC01Niw3ICs1Niw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVzb3VyY2VFcnJvciB0cmFuc3BvcnRFcnJvcihTb3VwUmVxdWVzdCos
IGludCBzdGF0dXNDb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvblBocmFzZSk7CiAgICAgc3RhdGlj
IFJlc291cmNlRXJyb3IgZ2VuZXJpY0dFcnJvcihHRXJyb3IqLCBTb3VwUmVxdWVzdCopOwogICAg
IHN0YXRpYyBSZXNvdXJjZUVycm9yIHRsc0Vycm9yKFNvdXBSZXF1ZXN0KiwgdW5zaWduZWQgdGxz
RXJyb3JzLCBHVGxzQ2VydGlmaWNhdGUqKTsKLSAgICBzdGF0aWMgUmVzb3VyY2VFcnJvciB0aW1l
b3V0RXJyb3IoY29uc3QgU3RyaW5nJiBmYWlsaW5nVVJMKTsKKyAgICBzdGF0aWMgUmVzb3VyY2VF
cnJvciB0aW1lb3V0RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKTsKICAgICBzdGF0aWMgUmVz
b3VyY2VFcnJvciBhdXRoZW50aWNhdGlvbkVycm9yKFNvdXBNZXNzYWdlKik7CiAKICAgICB1bnNp
Z25lZCB0bHNFcnJvcnMoKSBjb25zdCB7IHJldHVybiBtX3Rsc0Vycm9yczsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3Vw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9y
U291cC5jcHAKaW5kZXggYjI1YjVhMGI4NjUxZTFhMGNmNWY2MTk2MGQ1N2EyMjRhYTUzNTgzYi4u
YjBiMzBjOTMyNDUyZjA5ZjI0YjFlZDlkNGQyNmJiMmY1YmJmZTIzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNv
dXAuY3BwCkBAIC0zNSwxNCArMzUsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgU3RyaW5nIGZhaWxpbmdVUkkoU291cFVSSSogc291cFVSSSkKK3N0YXRpYyBVUkwgZmFpbGlu
Z1VSSShTb3VwVVJJKiBzb3VwVVJJKQogewogICAgIEFTU0VSVChzb3VwVVJJKTsKICAgICBHVW5p
cXVlUHRyPGNoYXI+IHVyaShzb3VwX3VyaV90b19zdHJpbmcoc291cFVSSSwgRkFMU0UpKTsKLSAg
ICByZXR1cm4gdXJpLmdldCgpOworICAgIC8vIEZJWE1FOiBJcyB0aGVyZSBhIG1vcmUgZWZmaWNp
ZW50IHdheSB0byBnZXQgYSBwYXJzZWQgVVJMIGhlcmU/CisgICAgcmV0dXJuIFVSTChVUkwoKSwg
dXJpLmdldCgpKTsKIH0KIAotc3RhdGljIFN0cmluZyBmYWlsaW5nVVJJKFNvdXBSZXF1ZXN0KiBy
ZXF1ZXN0KQorc3RhdGljIFVSTCBmYWlsaW5nVVJJKFNvdXBSZXF1ZXN0KiByZXF1ZXN0KQogewog
ICAgIEFTU0VSVChyZXF1ZXN0KTsKICAgICByZXR1cm4gZmFpbGluZ1VSSShzb3VwX3JlcXVlc3Rf
Z2V0X3VyaShyZXF1ZXN0KSk7CkBAIC04NSw3ICs4Niw3IEBAIFJlc291cmNlRXJyb3IgUmVzb3Vy
Y2VFcnJvcjo6dGxzRXJyb3IoU291cFJlcXVlc3QqIHJlcXVlc3QsIHVuc2lnbmVkIHRsc0Vycm9y
cywKICAgICByZXR1cm4gcmVzb3VyY2VFcnJvcjsKIH0KIAotUmVzb3VyY2VFcnJvciBSZXNvdXJj
ZUVycm9yOjp0aW1lb3V0RXJyb3IoY29uc3QgU3RyaW5nJiBmYWlsaW5nVVJMKQorUmVzb3VyY2VF
cnJvciBSZXNvdXJjZUVycm9yOjp0aW1lb3V0RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQog
ewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBlaXRoZXIgYmUgaW50ZWdyYXRl
ZCBpbnRvIEVycm9ycyhHdGsvRUZMKS5oIG9yIHRoZQogICAgIC8vIG5ldHdvcmtpbmcgZXJyb3Jz
IGZyb20gdGhvc2UgZmlsZXMgc2hvdWxkIGJlIG1vdmVkIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcAppbmRleCA0YzQ4Yzk0ZjhiMjkzMzZiNDQyNDExMmQ2YjJlY2JiOTYw
ODNmYzVlLi41NzlmMWNjZjg1NWYxMDkyMzI5ZTI2MGZkNTQzMTI0MzViYWEyNjZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTEwNzcsOCArMTA3NywxMCBAQCB2b2lk
IFhNTEh0dHBSZXF1ZXN0OjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAg
IH0KIAogICAgIC8vIE5ldHdvcmsgZmFpbHVyZXMgYXJlIGFscmVhZHkgcmVwb3J0ZWQgdG8gV2Vi
IEluc3BlY3RvciBieSBSZXNvdXJjZUxvYWRlci4KLSAgICBpZiAoZXJyb3IuZG9tYWluKCkgPT0g
ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCkKLSAgICAgICAgbG9nQ29uc29sZUVycm9yKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgIlhNTEh0dHBSZXF1ZXN0IGNhbm5vdCBsb2FkICIgKyBlcnJv
ci5mYWlsaW5nVVJMKCkgKyAiLiAiICsgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7Cisg
ICAgaWYgKGVycm9yLmRvbWFpbigpID09IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwpIHsKKyAg
ICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJYTUxIdHRwUmVxdWVzdCBjYW5ub3Qg
bG9hZCAiLCBlcnJvci5mYWlsaW5nVVJMKCkuc3RyaW5nKCksICIuICIsIGVycm9yLmxvY2FsaXpl
ZERlc2NyaXB0aW9uKCkpOworICAgICAgICBsb2dDb25zb2xlRXJyb3Ioc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBtZXNzYWdlKTsKKyAgICB9CiAKICAgICBtX2V4Y2VwdGlvbkNvZGUgPSBYTUxI
dHRwUmVxdWVzdEV4Y2VwdGlvbjo6TkVUV09SS19FUlI7CiAgICAgbmV0d29ya0Vycm9yKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267886</attachid>
            <date>2015-12-23 19:27:05 -0800</date>
            <delta_ts>2015-12-23 22:24:05 -0800</delta_ts>
            <desc>Patch v4</desc>
            <filename>bug-146391-20151223192628.patch</filename>
            <type>text/plain</type>
            <size>38976</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0Mzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTk5Y2NlMDBmMWMxMTk3
NmM4MWZmZDBkY2EwOGU1NGNkMjYwOTI5NS4uYWVjYjBlNGM5MTg1NjM2ZDdmNjQ0NjZjMGZkMzMx
ZTMzMWQ3MGYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAxNS0xMi0yMyAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlRXJyb3Ig
c2hvdWxkIHN0b3JlIGZhaWxpbmdVUkwgYXMgVVJMIGluc3RlYWQgb2YgU3RyaW5nIHRvIGF2b2lk
IHJlcGFyc2luZyBhbmQgdG8gYWRkcmVzcyBGSVhNRSBjb21tZW50cyBpbiBSZXNvdXJjZUVycm9y
Q0YuY3BwIGFuZCBSZXNvdXJjZUVycm9yTWFjLm1tCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9y
Zy9iLzE0NjM5MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlU2ltcGxl
Q3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxpZ2h0RmFpbHVyZSk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRGYWlsdXJlKToKKyAgICAgICAgLSBTd2l0Y2gg
dHlwZSBvZiAndXJsJyBhcmd1bWVudCBvZiBwcmVmbGlnaHRGYWlsdXJlKCkgZnJvbQorICAgICAg
ICAgIFN0cmluZyB0byBVUkwuCisgICAgICAgIC0gVXBkYXRlIGZvciB0eXBlIGNoYW5nZSBvZiAn
ZmFpbGluZ1VSTCcgYXJndW1lbnQgdG8KKyAgICAgICAgICBSZXNvdXJjZUVycm9yKCkuCisKKyAg
ICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToK
KyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXI6OmxvYWREYXRhVVJMKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpjYW5jZWwpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgLSBVcGRhdGUgZm9yIHR5cGUgY2hh
bmdlIG9mICdmYWlsaW5nVVJMJyBhcmd1bWVudCB0bworICAgICAgICAgIFJlc291cmNlRXJyb3Io
KS4KKworICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRTb3VyY2U6OmRpZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2spOgorICAgICAgICAtIENvbnZl
cnQgZmFpbGluZ1VSTCgpIHRvIFN0cmluZyBleHBsaWNpdGx5LgorCisgICAgICAgICogcGxhdGZv
cm0vZWZsL0Vycm9yc0VmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5jZWxsZWRFcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpibG9ja2VkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6Ymxv
Y2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93
VVJMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VF
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93TUlNRVR5cGVFcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjpmaWxlRG9lc05vdEV4aXN0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpkb3dubG9hZENh
bmNlbGxlZEJ5VXNlckVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmRvd25sb2FkRGVzdGluYXRp
b25FcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjYW5jZWxsZWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpibG9ja2VkRXJy
b3IpOgorICAgICAgICAoV2ViQ29yZTo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5u
b3RTaG93TUlNRVR5cGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpmaWxlRG9lc05vdEV4aXN0
RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpkb3dubG9hZENhbmNlbGxlZEJ5VXNlckVycm9yKToKKyAgICAgICAg
KFdlYkNvcmU6OmRvd25sb2FkRGVzdGluYXRpb25FcnJvcik6CisgICAgICAgIC0gVXBkYXRlIGZv
ciB0eXBlIGNoYW5nZSBvZiAnZmFpbGluZ1VSTCcgYXJndW1lbnQgdG8KKyAgICAgICAgICBSZXNv
dXJjZUVycm9yKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JC
YXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yQmFzZTo6ZmFpbGluZ1VSTCk6
CisgICAgICAgIC0gQ2hhbmdlIHJldHVybiB0eXBlIGZyb20gU3RyaW5nIHRvIFVSTC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjpSZXNvdXJjZUVycm9yQmFzZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgLSBDaGFuZ2UgdHlw
ZSBvZiAnZmFpbGluZ1VSTCcgZnJvbSBTdHJpbmcgdG8gVVJMLgorCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcik6CisgICAgICAgIC0gQ2hhbmdlIHR5cGUgb2YgJ2Zh
aWxpbmdVUkwnIGZyb20gU3RyaW5nIHRvIFVSTC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
RXJyb3I6OnBsYXRmb3JtTGF6eUluaXQpOgorICAgICAgICAtIENsZWFuIHVwIGNvZGUgYW5kIGFk
ZHJlc3MgRklYTUUgYnkgcGFyc2luZyBDRlVSTFJlZiB1c2luZworICAgICAgICAgIFVSTCgpIGNv
bnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6Y2ZFcnJvcik6Cisg
ICAgICAgIC0gQ2xlYW4gdXAgY29kZSBhbmQgYWRkcmVzcyBGSVhNRSBhZnRlciBzd2l0Y2hpbmcg
dHlwZSBvZgorICAgICAgICAgIG1fZmFpbGluZ1VSTC4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgLSBDaGFuZ2UgdHlwZSBvZiAnZmFpbGluZ1VS
TCcgZnJvbSBTdHJpbmcgdG8gVVJMLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU5TRXJyb3JGcm9t
UmVzb3VyY2VFcnJvckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6cGxh
dGZvcm1MYXp5SW5pdCk6CisgICAgICAgIC0gQ2xlYW4gdXAgY29kZSBhbmQgYWRkcmVzcyBGSVhN
RSBhZnRlciBzd2l0Y2hpbmcgdHlwZSBvZgorICAgICAgICAgIG1fZmFpbGluZ1VSTC4KKworICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlRXJyb3I6OnRpbWVvdXRFcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZhaWxpbmdV
UkkpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6dGltZW91dEVycm9yKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp0aW1lb3V0RmlyZWQpOgorICAgICAgICAt
IENoYW5nZSB0eXBlIG9mICdmYWlsaW5nVVJMJyBmcm9tIFN0cmluZyB0byBVUkwuCisKKyAgICAg
ICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OmRpZEZhaWwpOgorICAgICAgICAtIENvbnZlcnQgZmFpbGluZ1VSTCgpIHRvIFN0cmlu
ZyBleHBsaWNpdGx5LgorICAgICAgICAtIEFsc28gc3dpdGNoIHRvIHVzaW5nIG1ha2VTdHJpbmco
KS4KKwogMjAxNS0xMi0yMiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgVHJ5IHRvIGZpeCB0aGUgaU9TIGJ1aWxkIGFmdGVyIHIxOTQzNzgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggZDU0MDYw
NTJiNWU3OWNmZTBlMGYwNGExMWIyYWYxZDU3ZDIzYzk2ZS4uMWY2MTRlYjMxNzk3OTU4ZmU4YTUy
ZTg0ZGVkZjA2ZDVhZDVkODFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXIoRG9jdW1lbnQmIGRvY3VtZW50
LCBUaHJlYWRhYmwKICAgICB9CiAKICAgICBpZiAobV9vcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVz
dFBvbGljeSA9PSBEZW55Q3Jvc3NPcmlnaW5SZXF1ZXN0cykgewotICAgICAgICBtX2NsaWVudC0+
ZGlkRmFpbChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlcXVl
c3QudXJsKCkuc3RyaW5nKCksICJDcm9zcyBvcmlnaW4gcmVxdWVzdHMgYXJlIG5vdCBzdXBwb3J0
ZWQuIikpOworICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGVycm9yRG9t
YWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlcXVlc3QudXJsKCksICJDcm9zcyBvcmlnaW4gcmVxdWVz
dHMgYXJlIG5vdCBzdXBwb3J0ZWQuIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0x
MTksNyArMTE5LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om1ha2VTaW1wbGVD
cm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoY29uc3QgUmVzb3VyY2UKIAogICAgIC8vIENyb3NzLW9y
aWdpbiByZXF1ZXN0cyBhcmUgb25seSBhbGxvd2VkIGZvciBIVFRQIGFuZCByZWdpc3RlcmVkIHNj
aGVtZXMuIFdlIHdvdWxkIGNhdGNoIHRoaXMgd2hlbiBjaGVja2luZyByZXNwb25zZSBoZWFkZXJz
IGxhdGVyLCBidXQgdGhlcmUgaXMgbm8gcmVhc29uIHRvIHNlbmQgYSByZXF1ZXN0IHRoYXQncyBn
dWFyYW50ZWVkIHRvIGJlIGRlbmllZC4KICAgICBpZiAoIVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRU
cmVhdFVSTFNjaGVtZUFzQ09SU0VuYWJsZWQocmVxdWVzdC51cmwoKS5wcm90b2NvbCgpKSkgewot
ICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbEFjY2Vzc0NvbnRyb2xDaGVjayhSZXNvdXJjZUVycm9y
KGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksICJD
cm9zcyBvcmlnaW4gcmVxdWVzdHMgYXJlIG9ubHkgc3VwcG9ydGVkIGZvciBIVFRQLiIpKTsKKyAg
ICAgICAgbV9jbGllbnQtPmRpZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2soUmVzb3VyY2VFcnJvcihl
cnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0LnVybCgpLCAiQ3Jvc3Mgb3JpZ2lu
IHJlcXVlc3RzIGFyZSBvbmx5IHN1cHBvcnRlZCBmb3IgSFRUUC4iKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29ucwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghbV9zYW1lT3JpZ2luUmVxdWVzdCAmJiBtX29wdGlv
bnMuY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5ID09IFVzZUFjY2Vzc0NvbnRyb2wpIHsKICAgICAg
ICAgICAgIGlmICghcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKHJlc3BvbnNlLCBtX29wdGlvbnMu
YWxsb3dDcmVkZW50aWFscygpLCBzZWN1cml0eU9yaWdpbigpLCBhY2Nlc3NDb250cm9sRXJyb3JE
ZXNjcmlwdGlvbikpIHsKLSAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbEFjY2Vzc0Nv
bnRyb2xDaGVjayhSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJl
c3BvbnNlLnVybCgpLnN0cmluZygpLCBhY2Nlc3NDb250cm9sRXJyb3JEZXNjcmlwdGlvbikpOwor
ICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRGYWlsQWNjZXNzQ29udHJvbENoZWNrKFJlc291
cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVzcG9uc2UudXJsKCksIGFj
Y2Vzc0NvbnRyb2xFcnJvckRlc2NyaXB0aW9uKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zMzMsNyArMzMzLDcgQEAgdm9pZCBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OnByZWZsaWdodFN1Y2Nlc3MoKQogICAgIGxvYWRSZXF1ZXN0KCph
Y3R1YWxSZXF1ZXN0LCBTa2lwU2VjdXJpdHlDaGVjayk7CiB9CiAKLXZvaWQgRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRGYWlsdXJlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZXJyb3JEZXNjcmlwdGlvbikKK3ZvaWQg
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRGYWlsdXJlKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgZXJyb3JEZXNjcmlwdGlv
bikKIHsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWws
IDAsIHVybCwgZXJyb3JEZXNjcmlwdGlvbik7CiAgICAgaWYgKG1fYWN0dWFsUmVxdWVzdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAppbmRl
eCA3NzhkMzFlZjNmZTJiYTU0MjIyNmI2NzQ0Y2NiN2RlMzhiZTAwYzhkLi5mZjA4M2ZiOTBmMTcy
YWRiY2U1Mzc1NGUwZWM3ZGM1MGZiNGE3ZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCkBAIC05MSw3ICs5MSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBtYWtlU2ltcGxlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1
ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCk7CiAgICAgICAgIHZvaWQgbWFrZUNy
b3NzT3JpZ2luQWNjZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KTsKICAgICAgICAgdm9pZCBwcmVmbGlnaHRTdWNjZXNzKCk7Ci0gICAgICAgIHZv
aWQgcHJlZmxpZ2h0RmFpbHVyZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmIGVycm9yRGVzY3JpcHRpb24pOworICAgICAgICB2b2lkIHBy
ZWZsaWdodEZhaWx1cmUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIGVycm9yRGVzY3JpcHRpb24pOwogCiAgICAgICAgIHZvaWQgbG9hZFJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU2VjdXJpdHlDaGVja1BvbGljeSk7CiAgICAgICAgIGJv
b2wgaXNBbGxvd2VkUmVkaXJlY3QoY29uc3QgVVJMJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmgKaW5kZXggMTYyOWVjNTdjZTVkZGMxMGNlODlkMzExMDQ2ZTkwMGExNDM0M2ZjZC4u
MWE0MGI2ZGE0NDVjOWMyODM1YWJlOTQ0NTBlNjMyZDY1NWFjMmIyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuaApAQCAtMzIwLDE1ICszMjAsMTUgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGlu
dCkgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkTG9hZGluZyhEb2N1bWVu
dExvYWRlciopIG92ZXJyaWRlIHsgfQogCi0gICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbmNl
bGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgUmVzb3VyY2VFcnJv
ciBlcnJvcigiIiwgMCwgIiIsICIiKTsgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7IHJl
dHVybiBlcnJvcjsgfQotICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwg
MCwgIiIsICIiKTsgfQotICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50
QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJl
c291cmNlRXJyb3IoIiIsIDAsICIiLCAiIik7IH0KLSAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3Ig
Y2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0
dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsICIiLCAiIik7IH0KLSAgICB2aXJ0dWFsIFJlc291cmNl
RXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCAiIiwgIiIpOyB9Ci0K
LSAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAs
ICIiLCAiIik7IH0KLSAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgZmlsZURvZXNOb3RFeGlzdEVy
cm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVy
cm9yKCIiLCAwLCAiIiwgIiIpOyB9Ci0gICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIHBsdWdpbldp
bGxIYW5kbGVMb2FkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0
dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsICIiLCAiIik7IH0KKyAgICB2aXJ0dWFsIFJlc291cmNl
RXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyBS
ZXNvdXJjZUVycm9yIGVycm9yKCIiLCAwLCBVUkwoKSwgIiIpOyBlcnJvci5zZXRJc0NhbmNlbGxh
dGlvbih0cnVlKTsgcmV0dXJuIGVycm9yOyB9CisgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGJs
b2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNv
dXJjZUVycm9yKCIiLCAwLCBVUkwoKSwgIiIpOyB9CisgICAgdmlydHVhbCBSZXNvdXJjZUVycm9y
IGJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3Zl
cnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgVVJMKCksICIiKTsgfQorICAgIHZp
cnR1YWwgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgVVJMKCksICIiKTsg
fQorICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVy
cm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJy
b3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KKworICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5u
b3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGUgeyBy
ZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgVVJMKCksICIiKTsgfQorICAgIHZpcnR1YWwgUmVz
b3VyY2VFcnJvciBmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KKyAg
ICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwg
VVJMKCksICIiKTsgfQogCiAgICAgdmlydHVhbCBib29sIHNob3VsZEZhbGxCYWNrKGNvbnN0IFJl
c291cmNlRXJyb3ImKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA0ODE1MGEwZTNhNGYyN2Q4OTAyMjUwY2EzYWRmYzAy
ZjM1NjNjNjgxLi45MDBkZDM4MDBiZmE0NTU5OTc4YzJlNDFhNDAyMDA3MTVjNGMyZWJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTI2ODYsNyArMjY4Niw3IEBAIHVu
c2lnbmVkIGxvbmcgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1CiAgICAgICAgICAgICBpZiAoYXV0byogY29udHJvbGxlciA9
IHBhZ2UtPnVzZXJDb250ZW50Q29udHJvbGxlcigpKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1f
ZG9jdW1lbnRMb2FkZXIgJiYgY29udHJvbGxlci0+cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxl
c0ZvckxvYWQobmV3UmVxdWVzdCwgUmVzb3VyY2VUeXBlOjpSYXcsICptX2RvY3VtZW50TG9hZGVy
KSA9PSBDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1czo6QmxvY2tlZCkgewogICAgICAg
ICAgICAgICAgICAgICBuZXdSZXF1ZXN0ID0geyB9OwotICAgICAgICAgICAgICAgICAgICBlcnJv
ciA9IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgaW5pdGlhbFJl
cXVlc3QudXJsKCkuc3RyaW5nKCksIGVtcHR5U3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAg
ICBlcnJvciA9IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgaW5p
dGlhbFJlcXVlc3QudXJsKCksIGVtcHR5U3RyaW5nKCkpOwogICAgICAgICAgICAgICAgICAgICBy
ZXNwb25zZSA9IHsgfTsKICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IG51bGxwdHI7CiAgICAg
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IDIwZDJlNmVjOWEzMzlmYmVlMWRkZWI5MjA4NDIwY2NmYzIxY2JmMDcuLmQ5
MzNjZWUzZDViZjMwNjQyODUyYjFjYzFjMDI3ZWYzNDc5NDgwOTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2
b2lkIE1lZGlhUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Uq
IHJlc291cmNlLCBjb25zdCBSZXNvdQogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgU3RyaW5nPiBjb25zb2xlTWVzc2FnZSgiQ3Jvc3Mtb3JpZ2luIG1lZGlhIHJlc291cmNlIGxv
YWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4iKTsKICAg
ICAgICAgbV9kb2N1bWVudC5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0
eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgY29uc29sZU1lc3NhZ2UuZ2V0KCkpOwogICAgICAgICBt
X2RpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2sgPSBmYWxzZTsKLSAgICAgICAgbV9jbGllbnQtPmFj
Y2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50
ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBjb25zb2xlTWVzc2FnZS5nZXQoKSkp
OworICAgICAgICBtX2NsaWVudC0+YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFJlc291cmNlRXJy
b3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVzcG9uc2UudXJsKCksIGNvbnNvbGVN
ZXNzYWdlLmdldCgpKSk7CiAgICAgICAgIHN0b3AoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDBkODFmZjViYTI4
YTIxMDRkNTI4YWVjZmJiYmU3MzU2Y2EyM2I2NzguLjFhOTczYjBkNTIzYjhlMWYzMmYyNWE4MDg5
YzgyOTg1NzQ1MGUzZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cApAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWREYXRhVVJMKCkK
ICAgICAgICAgaWYgKGxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgaWYgKCFkZWNvZGVSZXN1bHQpIHsKLSAgICAgICAgICAgIGxvYWRl
ci0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVy
bC5zdHJpbmcoKSwgIkRhdGEgVVJMIGRlY29kaW5nIGZhaWxlZCIpKTsKKyAgICAgICAgICAgIGxv
YWRlci0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAs
IHVybCwgIkRhdGEgVVJMIGRlY29kaW5nIGZhaWxlZCIpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICBpZiAobG9hZGVyLT53YXNDYW5jZWxsZWQoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBhMGRj
M2NhMWFmYzI1NmM1NjIwOWM5ZDk2OGQ0NWIwMmRkNTEyZjE0Li4xZGI4ZDY0ODkyZmEyMzI0OTdi
MDM4MjE0NDA2ZjM3ZWYxMzJlYmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
V29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dv
cmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpjYW5jZWwoKQogICAgIGlmICghY2xp
ZW50V3JhcHBlci0+ZG9uZSgpKSB7CiAgICAgICAgIC8vIElmIHRoZSBjbGllbnQgaGFzbid0IHJl
YWNoZWQgYSB0ZXJtaW5hdGlvbiBzdGF0ZSwgdGhlbiB0cmFuc2l0aW9uIGl0IGJ5IHNlbmRpbmcg
YSBjYW5jZWxsYXRpb24gZXJyb3IuCiAgICAgICAgIC8vIE5vdGU6IG5vIG1vcmUgY2xpZW50IGNh
bGxiYWNrcyB3aWxsIGJlIGRvbmUgYWZ0ZXIgdGhpcyBtZXRob2QgLS0gdGhlIGNsZWFyQ2xpZW50
V3JhcHBlcigpIGNhbGwgZW5zdXJlcyB0aGF0LgotICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9y
KFN0cmluZygpLCAwLCBTdHJpbmcoKSwgU3RyaW5nKCkpOworICAgICAgICBSZXNvdXJjZUVycm9y
IGVycm9yKFN0cmluZygpLCAwLCBVUkwoKSwgU3RyaW5nKCkpOwogICAgICAgICBlcnJvci5zZXRJ
c0NhbmNlbGxhdGlvbih0cnVlKTsKICAgICAgICAgY2xpZW50V3JhcHBlci0+ZGlkRmFpbChlcnJv
cik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNzM3OGQ2ZDFhYzkyNDFiYzY3Njk2OTc2MzJjN2NmNDdi
YmY1MmI5ZS4uZDlmY2ZlNjI0MzYzMDQ5MzlkMWZmYTgyZWMzYTAzNzAwZTI2NGE3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC01NDQsNyArNTQ0LDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3Vy
Y2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGUKICAgICAgICAg
ICAgICAgICBhdXRvIHJlc291cmNlID0gY3JlYXRlUmVzb3VyY2UodHlwZSwgcmVxdWVzdC5tdXRh
YmxlUmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QuY2hhcnNldCgpLCBzZXNzaW9uSUQoKSk7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKHJlc291cmNlKTsKICAgICAgICAgICAgICAgICByZXNvdXJj
ZS0+ZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1czo6TG9hZEVycm9yKTsKLSAgICAgICAgICAg
ICAgICByZXNvdXJjZS0+c2V0UmVzb3VyY2VFcnJvcihSZXNvdXJjZUVycm9yKENvbnRlbnRFeHRl
bnNpb25zOjpXZWJLaXRDb250ZW50QmxvY2tlckRvbWFpbiwgMCwgcmVxdWVzdC5yZXNvdXJjZVJl
cXVlc3QoKS51cmwoKS5zdHJpbmcoKSwgV0VCX1VJX1NUUklORygiVGhlIFVSTCB3YXMgYmxvY2tl
ZCBieSBhIGNvbnRlbnQgYmxvY2tlciIsICJXZWJLaXRFcnJvckJsb2NrZWRCeUNvbnRlbnRCbG9j
a2VyIGRlc2NyaXB0aW9uIikpKTsKKyAgICAgICAgICAgICAgICByZXNvdXJjZS0+c2V0UmVzb3Vy
Y2VFcnJvcihSZXNvdXJjZUVycm9yKENvbnRlbnRFeHRlbnNpb25zOjpXZWJLaXRDb250ZW50Qmxv
Y2tlckRvbWFpbiwgMCwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSwgV0VCX1VJX1NU
UklORygiVGhlIFVSTCB3YXMgYmxvY2tlZCBieSBhIGNvbnRlbnQgYmxvY2tlciIsICJXZWJLaXRF
cnJvckJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyIGRlc2NyaXB0aW9uIikpKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzb3VyY2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKaW5kZXggYjgzNDFlNmI2YzA3
NTc2Zjc0ZjQxMjM0NTMzMmFmNWU5OTI2YzQ2NC4uMjAxM2MwOGU4MGM5ZTBmMDQyMzg0Yjc1Yjk2
MTU4MDA3NTA2YzVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKQEAgLTI3Myw3
ICsyNzMsNyBAQCB2b2lkIEV2ZW50U291cmNlOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKQogCiB2b2lkIEV2ZW50U291cmNlOjpkaWRGYWlsQWNjZXNzQ29udHJvbENoZWNrKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0
cmluZygiRXZlbnRTb3VyY2UgY2Fubm90IGxvYWQgIiwgZXJyb3IuZmFpbGluZ1VSTCgpLCAiLiAi
LCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKKyAgICBTdHJpbmcgbWVzc2FnZSA9IG1h
a2VTdHJpbmcoIkV2ZW50U291cmNlIGNhbm5vdCBsb2FkICIsIGVycm9yLmZhaWxpbmdVUkwoKS5z
dHJpbmcoKSwgIi4gIiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7CiAgICAgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywg
TWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZSk7CiAKICAgICBhYm9ydENvbm5lY3Rpb25BdHRl
bXB0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FcnJvcnNFZmwuY3BwCmluZGV4IDZl
ZmY1NTU5MzNjOTYzMWEyMzgyZTI2Y2QxOTIyOTNjN2Q4YjZlMzcuLjMyODI2ZTU2NzI3MzAzYmVm
ZGUyOWMwOGRlOGM1N2FiNDlkYmUzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9FcnJvcnNFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9F
cnJvcnNFZmwuY3BwCkBAIC0zNCw0MiArMzQsNDIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBS
ZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbk5ldHdvcmssIE5ldHdv
cmtFcnJvckNhbmNlbGxlZCwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJM
b2FkIHJlcXVlc3QgY2FuY2VsbGVkIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9y
RG9tYWluTmV0d29yaywgTmV0d29ya0Vycm9yQ2FuY2VsbGVkLCByZXF1ZXN0LnVybCgpLCBBU0NJ
SUxpdGVyYWwoIkxvYWQgcmVxdWVzdCBjYW5jZWxsZWQiKSk7CiB9CiAKIFJlc291cmNlRXJyb3Ig
YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1
cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RVc2VS
ZXN0cmljdGVkUG9ydCwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJOb3Qg
YWxsb3dlZCB0byB1c2UgcmVzdHJpY3RlZCBuZXR3b3JrIHBvcnQiKSk7CisgICAgcmV0dXJuIFJl
c291cmNlRXJyb3IoZXJyb3JEb21haW5Qb2xpY3ksIFBvbGljeUVycm9yQ2Fubm90VXNlUmVzdHJp
Y3RlZFBvcnQsIHJlcXVlc3QudXJsKCksIEFTQ0lJTGl0ZXJhbCgiTm90IGFsbG93ZWQgdG8gdXNl
IHJlc3RyaWN0ZWQgbmV0d29yayBwb3J0IikpOwogfQogCiBSZXNvdXJjZUVycm9yIGJsb2NrZWRC
eUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewot
ICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckJs
b2NrZWRCeUNvbnRlbnRCbG9ja2VyLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCBBU0NJSUxpdGVy
YWwoIkJsb2NrZWQgYnkgY29udGVudCBibG9ja2VyIikpOworICAgIHJldHVybiBSZXNvdXJjZUVy
cm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckJsb2NrZWRCeUNvbnRlbnRCbG9ja2Vy
LCByZXF1ZXN0LnVybCgpLCBBU0NJSUxpdGVyYWwoIkJsb2NrZWQgYnkgY29udGVudCBibG9ja2Vy
IikpOwogfQogCiBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21h
aW5Qb2xpY3ksIFBvbGljeUVycm9yQ2Fubm90U2hvd1VSTCwgcmVxdWVzdC51cmwoKS5zdHJpbmco
KSwgQVNDSUlMaXRlcmFsKCJVUkwgY2Fubm90IGJlIHNob3duIikpOworICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFNob3dVUkwsIHJl
cXVlc3QudXJsKCksIEFTQ0lJTGl0ZXJhbCgiVVJMIGNhbm5vdCBiZSBzaG93biIpKTsKIH0KIAog
UmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRv
bWFpblBvbGljeSwgUG9saWN5RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdl
LCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCBBU0NJSUxpdGVyYWwoIkZyYW1lIGxvYWQgd2FzIGlu
dGVycnVwdGVkIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5
LCBQb2xpY3lFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsIHJlcXVlc3Qu
dXJsKCksIEFTQ0lJTGl0ZXJhbCgiRnJhbWUgbG9hZCB3YXMgaW50ZXJydXB0ZWQiKSk7CiB9CiAK
IFJlc291cmNlRXJyb3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Q
b2xpY3ksIFBvbGljeUVycm9yQ2Fubm90U2hvd01pbWVUeXBlLCByZXNwb25zZS51cmwoKS5zdHJp
bmcoKSwgQVNDSUlMaXRlcmFsKCJDb250ZW50IHdpdGggdGhlIHNwZWNpZmllZCBNSU1FIHR5cGUg
Y2Fubm90IGJlIHNob3duIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWlu
UG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFNob3dNaW1lVHlwZSwgcmVzcG9uc2UudXJsKCksIEFT
Q0lJTGl0ZXJhbCgiQ29udGVudCB3aXRoIHRoZSBzcGVjaWZpZWQgTUlNRSB0eXBlIGNhbm5vdCBi
ZSBzaG93biIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoZXJyb3JEb21haW5OZXR3b3JrLCBOZXR3b3JrRXJyb3JGaWxlRG9lc05vdEV4aXN0LCByZXNw
b25zZS51cmwoKS5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJGaWxlIGRvZXMgbm90IGV4aXN0Iikp
OworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluTmV0d29yaywgTmV0d29ya0Vy
cm9yRmlsZURvZXNOb3RFeGlzdCwgcmVzcG9uc2UudXJsKCksIEFTQ0lJTGl0ZXJhbCgiRmlsZSBk
b2VzIG5vdCBleGlzdCIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9h
ZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIHJldHVybiBS
ZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUGx1Z2luLCBQbHVnaW5FcnJvcldpbGxIYW5kbGVMb2Fk
LCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJQbHVnaW4gd2lsbCBoYW5k
bGUgbG9hZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBsdWdpbiwg
UGx1Z2luRXJyb3JXaWxsSGFuZGxlTG9hZCwgcmVzcG9uc2UudXJsKCksIEFTQ0lJTGl0ZXJhbCgi
UGx1Z2luIHdpbGwgaGFuZGxlIGxvYWQiKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgZG93bmxvYWRO
ZXR3b3JrRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgbmV0d29ya0Vycm9yKQpAQCAtNzksMTIg
Kzc5LDEyIEBAIFJlc291cmNlRXJyb3IgZG93bmxvYWROZXR3b3JrRXJyb3IoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgbmV0d29ya0Vycm9yKQogCiBSZXNvdXJjZUVycm9yIGRvd25sb2FkQ2FuY2VsbGVk
QnlVc2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Eb3dubG9hZCwgRG93bmxvYWRFcnJvckNhbmNl
bGxlZEJ5VXNlciwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiVXNlciBj
YW5jZWxsZWQgdGhlIGRvd25sb2FkIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9y
RG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JDYW5jZWxsZWRCeVVzZXIsIHJlc3BvbnNlLnVy
bCgpLCBBU0NJSUxpdGVyYWwoIlVzZXIgY2FuY2VsbGVkIHRoZSBkb3dubG9hZCIpKTsKIH0KIAog
UmVzb3VyY2VFcnJvciBkb3dubG9hZERlc3RpbmF0aW9uRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewotICAgIHJldHVy
biBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JEZXN0aW5h
dGlvbiwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIGVycm9yTWVzc2FnZSk7CisgICAgcmV0dXJu
IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Eb3dubG9hZCwgRG93bmxvYWRFcnJvckRlc3RpbmF0
aW9uLCByZXNwb25zZS51cmwoKSwgZXJyb3JNZXNzYWdlKTsKIH0KIAogUmVzb3VyY2VFcnJvciBw
cmludEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9FcnJvcnNHdGsuY3BwCmluZGV4IDY4OGE5
MDZkOWViNDA4ZWRmYjQ3M2FmZmY3OTgyNTY0NmVjMWZlMGYuLjhkZmQxNThiM2I0ZDZjNTQ0YmRi
MjlhNjE1NzQxZGJkYTRiNDFhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9FcnJvcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9FcnJv
cnNHdGsuY3BwCkBAIC0yOSw2NyArMjksNTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZXNv
dXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
IHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbk5ldHdvcmssIE5ldHdvcmtF
cnJvckNhbmNlbGxlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LnVybCgpLnN0
cmluZygpLCBfKCJMb2FkIHJlcXVlc3QgY2FuY2VsbGVkIikpOworICAgIHJldHVybiBSZXNvdXJj
ZUVycm9yKGVycm9yRG9tYWluTmV0d29yaywgTmV0d29ya0Vycm9yQ2FuY2VsbGVkLCByZXF1ZXN0
LnVybCgpLCBfKCJMb2FkIHJlcXVlc3QgY2FuY2VsbGVkIikpOwogfQogCiBSZXNvdXJjZUVycm9y
IGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Qb2xpY3ksIFBvbGljeUVycm9yQ2Fubm90VXNl
UmVzdHJpY3RlZFBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC51cmwoKS5z
dHJpbmcoKSwgXygiTm90IGFsbG93ZWQgdG8gdXNlIHJlc3RyaWN0ZWQgbmV0d29yayBwb3J0Iikp
OworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJv
ckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0LCByZXF1ZXN0LnVybCgpLCBfKCJOb3QgYWxsb3dlZCB0
byB1c2UgcmVzdHJpY3RlZCBuZXR3b3JrIHBvcnQiKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgYmxv
Y2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
CiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Qb2xpY3ksIFBvbGljeUVy
cm9yQmxvY2tlZEJ5Q29udGVudEJsb2NrZXIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIF8oIkJs
b2NrZWQgYnkgY29udGVudCBibG9ja2VyIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVy
cm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyLCByZXF1
ZXN0LnVybCgpLCBfKCJCbG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlciIpKTsKIH0KIAogUmVzb3Vy
Y2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lF
cnJvckNhbm5vdFNob3dVUkwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC51cmwo
KS5zdHJpbmcoKSwgXygiVVJMIGNhbm5vdCBiZSBzaG93biIpKTsKKyAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RTaG93VVJMLCByZXF1
ZXN0LnVybCgpLCBfKCJVUkwgY2Fubm90IGJlIHNob3duIikpOwogfQogCiBSZXNvdXJjZUVycm9y
IGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQ
b2xpY3lFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgXygiRnJhbWUgbG9hZCB3YXMg
aW50ZXJydXB0ZWQiKSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Qb2xp
Y3ksIFBvbGljeUVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwgcmVxdWVz
dC51cmwoKSwgXygiRnJhbWUgbG9hZCB3YXMgaW50ZXJydXB0ZWQiKSk7CiB9CiAKIFJlc291cmNl
RXJyb3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Qb2xpY3ksIFBv
bGljeUVycm9yQ2Fubm90U2hvd01pbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3BvbnNlLnVybCgpLnN0cmluZygpLCBfKCJDb250ZW50IHdpdGggdGhlIHNwZWNpZmllZCBNSU1F
IHR5cGUgY2Fubm90IGJlIHNob3duIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9y
RG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFNob3dNaW1lVHlwZSwgcmVzcG9uc2UudXJs
KCksIF8oIkNvbnRlbnQgd2l0aCB0aGUgc3BlY2lmaWVkIE1JTUUgdHlwZSBjYW5ub3QgYmUgc2hv
d24iKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgZmlsZURvZXNOb3RFeGlzdEVycm9yKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVy
cm9yRG9tYWluTmV0d29yaywgTmV0d29ya0Vycm9yRmlsZURvZXNOb3RFeGlzdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgXygiRmlsZSBkb2VzIG5v
dCBleGlzdCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbk5ldHdvcmss
IE5ldHdvcmtFcnJvckZpbGVEb2VzTm90RXhpc3QsIHJlc3BvbnNlLnVybCgpLCBfKCJGaWxlIGRv
ZXMgbm90IGV4aXN0IikpOwogfQogCiBSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxIYW5kbGVMb2Fk
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgcmV0dXJuIFJl
c291cmNlRXJyb3IoZXJyb3JEb21haW5QbHVnaW4sIFBsdWdpbkVycm9yV2lsbEhhbmRsZUxvYWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIF8oIlBs
dWdpbiB3aWxsIGhhbmRsZSBsb2FkIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9y
RG9tYWluUGx1Z2luLCBQbHVnaW5FcnJvcldpbGxIYW5kbGVMb2FkLCByZXNwb25zZS51cmwoKSwg
XygiUGx1Z2luIHdpbGwgaGFuZGxlIGxvYWQiKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgZG93bmxv
YWROZXR3b3JrRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgbmV0d29ya0Vycm9yKQogewotICAg
IHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JO
ZXR3b3JrLAotICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtFcnJvci5mYWlsaW5nVVJM
KCksIG5ldHdvcmtFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKKyAgICByZXR1cm4gUmVz
b3VyY2VFcnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBEb3dubG9hZEVycm9yTmV0d29yaywgbmV0
d29ya0Vycm9yLmZhaWxpbmdVUkwoKSwgbmV0d29ya0Vycm9yLmxvY2FsaXplZERlc2NyaXB0aW9u
KCkpOwogfQogCiBSZXNvdXJjZUVycm9yIGRvd25sb2FkQ2FuY2VsbGVkQnlVc2VyRXJyb3IoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoZXJyb3JEb21haW5Eb3dubG9hZCwgRG93bmxvYWRFcnJvckNhbmNlbGxlZEJ5VXNlciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgXygiVXNlciBj
YW5jZWxsZWQgdGhlIGRvd25sb2FkIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9y
RG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JDYW5jZWxsZWRCeVVzZXIsIHJlc3BvbnNlLnVy
bCgpLCBfKCJVc2VyIGNhbmNlbGxlZCB0aGUgZG93bmxvYWQiKSk7CiB9CiAKIFJlc291cmNlRXJy
b3IgZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBEb3dubG9hZEVycm9yRGVzdGluYXRpb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIGVycm9yTWVzc2Fn
ZSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Eb3dubG9hZCwgRG93bmxv
YWRFcnJvckRlc3RpbmF0aW9uLCByZXNwb25zZS51cmwoKSwgZXJyb3JNZXNzYWdlKTsKIH0KIAog
UmVzb3VyY2VFcnJvciBwcmludEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKaW5kZXggNWFlODM3YzMxYzVkOGE0ODU2MjAwOTM4NmY4
MGVkYzAxOTU0YzY4OS4uYTgwZTc2MTliNWFkOWRkZGRlODU2ODIzNzYyZWNlNGY1NTFiYWQzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9y
QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJv
ckJhc2UuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBSZXNvdXJjZUVycm9yQmFzZV9oCiAj
ZGVmaW5lIFJlc291cmNlRXJyb3JCYXNlX2gKIAorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Myw3ICs0
NCw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgZG9tYWluKCkgY29uc3QgeyBsYXp5
SW5pdCgpOyByZXR1cm4gbV9kb21haW47IH0KICAgICBpbnQgZXJyb3JDb2RlKCkgY29uc3QgeyBs
YXp5SW5pdCgpOyByZXR1cm4gbV9lcnJvckNvZGU7IH0KLSAgICBjb25zdCBTdHJpbmcmIGZhaWxp
bmdVUkwoKSBjb25zdCB7IGxhenlJbml0KCk7IHJldHVybiBtX2ZhaWxpbmdVUkw7IH0KKyAgICBj
b25zdCBVUkwmIGZhaWxpbmdVUkwoKSBjb25zdCB7IGxhenlJbml0KCk7IHJldHVybiBtX2ZhaWxp
bmdVUkw7IH0KICAgICBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKCkgY29uc3Qg
eyBsYXp5SW5pdCgpOyByZXR1cm4gbV9sb2NhbGl6ZWREZXNjcmlwdGlvbjsgfQogCiAgICAgdm9p
ZCBzZXRJc0NhbmNlbGxhdGlvbihib29sIGlzQ2FuY2VsbGF0aW9uKSB7IG1faXNDYW5jZWxsYXRp
b24gPSBpc0NhbmNlbGxhdGlvbjsgfQpAQCAtNjMsNyArNjQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
ewogICAgIH0KIAotICAgIFJlc291cmNlRXJyb3JCYXNlKGNvbnN0IFN0cmluZyYgZG9tYWluLCBp
bnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9j
YWxpemVkRGVzY3JpcHRpb24pCisgICAgUmVzb3VyY2VFcnJvckJhc2UoY29uc3QgU3RyaW5nJiBk
b21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5n
JiBsb2NhbGl6ZWREZXNjcmlwdGlvbikKICAgICAgICAgOiBtX2RvbWFpbihkb21haW4pCiAgICAg
ICAgICwgbV9mYWlsaW5nVVJMKGZhaWxpbmdVUkwpCiAgICAgICAgICwgbV9sb2NhbGl6ZWREZXNj
cmlwdGlvbihsb2NhbGl6ZWREZXNjcmlwdGlvbikKQEAgLTg2LDcgKzg3LDcgQEAgcHJvdGVjdGVk
OgogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBSZXNvdXJjZUVycm9yJiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFN0cmluZyBtX2Rv
bWFpbjsKLSAgICBTdHJpbmcgbV9mYWlsaW5nVVJMOworICAgIFVSTCBtX2ZhaWxpbmdVUkw7CiAg
ICAgU3RyaW5nIG1fbG9jYWxpemVkRGVzY3JpcHRpb247CiAgICAgaW50IG1fZXJyb3JDb2RlOwog
ICAgIGJvb2wgbV9pc051bGwgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaAppbmRleCAxNzAzY2M5MWY2OGIyYTVlNjRmODc5MjNj
ZTZmYmExZDI3ZGQyNDFkLi5iMzI4YmExNzE1MDQxMGY1M2Y3NzE2NjkyMDg1MTRiNmE3NzQ2ZjY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
RXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
RXJyb3IuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFJl
c291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFN0
cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAg
ICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25z
dCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCiAg
ICAgICAgIDogUmVzb3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkws
IGxvY2FsaXplZERlc2NyaXB0aW9uKQogICAgICAgICAsIG1fZGF0YUlzVXBUb0RhdGUodHJ1ZSkK
ICAgICB7CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShDRk5FVFdPUkspCiAj
aWYgUExBVEZPUk0oV0lOKQotICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4s
IGludCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBs
b2NhbGl6ZWREZXNjcmlwdGlvbiwgQ0ZEYXRhUmVmIGNlcnRpZmljYXRlKTsKKyAgICBSZXNvdXJj
ZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZh
aWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24sIENGRGF0YVJlZiBj
ZXJ0aWZpY2F0ZSk7CiAgICAgUENDRVJUX0NPTlRFWFQgY2VydGlmaWNhdGUoKSBjb25zdDsKICAg
ICB2b2lkIHNldENlcnRpZmljYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAppbmRl
eCAxMzFmYmIwNDYxMTcwNmY2NGQ4NTBhMWM1MGUwNWUxNGEyYzZlMTMzLi42MGJmYjM2NTkxZTA3
YzFiZmJlYWI2YjFlM2I1NmZhYjk4NDc4NDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC00OSw3ICs0OSw3
IEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZFcnJvclJlZiBjZkVycm9yKQogfQog
CiAjaWYgUExBVEZPUk0oV0lOKQotUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihjb25zdCBT
dHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBmYWlsaW5nVVJMLCBj
b25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uLCBDRkRhdGFSZWYgY2VydGlmaWNhdGUp
CitSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQg
ZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVk
RGVzY3JpcHRpb24sIENGRGF0YVJlZiBjZXJ0aWZpY2F0ZSkKICAgICA6IFJlc291cmNlRXJyb3JC
YXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbikK
ICAgICAsIG1fZGF0YUlzVXBUb0RhdGUodHJ1ZSkKICAgICAsIG1fY2VydGlmaWNhdGUoY2VydGlm
aWNhdGUpCkBAIC0xMDEsMTcgKzEwMSwxMiBAQCB2b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3Jt
TGF6eUluaXQoKQogICAgIGlmICh1c2VySW5mby5nZXQoKSkgewogICAgICAgICBDRlN0cmluZ1Jl
ZiBmYWlsaW5nVVJMU3RyaW5nID0gKENGU3RyaW5nUmVmKSBDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1
c2VySW5mby5nZXQoKSwgZmFpbGluZ1VSTFN0cmluZ0tleSk7CiAgICAgICAgIGlmIChmYWlsaW5n
VVJMU3RyaW5nKQotICAgICAgICAgICAgbV9mYWlsaW5nVVJMID0gU3RyaW5nKGZhaWxpbmdVUkxT
dHJpbmcpOworICAgICAgICAgICAgbV9mYWlsaW5nVVJMID0gVVJMKFVSTCgpLCBmYWlsaW5nVVJM
U3RyaW5nKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBDRlVSTFJlZiBmYWlsaW5nVVJM
ID0gKENGVVJMUmVmKSBDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwgZmFpbGlu
Z1VSTEtleSk7CiAgICAgICAgICAgICBpZiAoZmFpbGluZ1VSTCkgewotICAgICAgICAgICAgICAg
IFJldGFpblB0cjxDRlVSTFJlZj4gYWJzb2x1dGVVUkxSZWYgPSBhZG9wdENGKENGVVJMQ29weUFi
c29sdXRlVVJMKGZhaWxpbmdVUkwpKTsKLSAgICAgICAgICAgICAgICBpZiAoYWJzb2x1dGVVUkxS
ZWYuZ2V0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IENGVVJMR2V0U3RyaW5n
IHJldHVybnMgYSBub3JtYWxpemVkIFVSTCB3aGljaCBpcyBkaWZmZXJlbnQgZnJvbSB3aGF0IGlz
IGFjdHVhbGx5IHVzZWQgYnkgQ0ZOZXR3b3JrLgotICAgICAgICAgICAgICAgICAgICAvLyBXZSBz
aG91bGQgdXNlIENGVVJMR2V0Qnl0ZXMgaW5zdGVhZC4KLSAgICAgICAgICAgICAgICAgICAgZmFp
bGluZ1VSTFN0cmluZyA9IENGVVJMR2V0U3RyaW5nKGFic29sdXRlVVJMUmVmLmdldCgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgbV9mYWlsaW5nVVJMID0gU3RyaW5nKGZhaWxpbmdVUkxTdHJpbmcp
OwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoUmV0YWluUHRyPENGVVJM
UmVmPiBhYnNvbHV0ZVVSTFJlZiA9IGFkb3B0Q0YoQ0ZVUkxDb3B5QWJzb2x1dGVVUkwoZmFpbGlu
Z1VSTCkpKQorICAgICAgICAgICAgICAgICAgICBtX2ZhaWxpbmdVUkwgPSBVUkwoYWJzb2x1dGVV
UkxSZWYuZ2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIG1fbG9jYWxp
emVkRGVzY3JpcHRpb24gPSAoQ0ZTdHJpbmdSZWYpIENGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJ
bmZvLmdldCgpLCBrQ0ZFcnJvckxvY2FsaXplZERlc2NyaXB0aW9uS2V5KTsKQEAgLTE1MiwxMiAr
MTQ3LDkgQEAgQ0ZFcnJvclJlZiBSZXNvdXJjZUVycm9yOjpjZkVycm9yKCkgY29uc3QKICAgICAg
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrQ0ZFcnJvckxvY2Fs
aXplZERlc2NyaXB0aW9uS2V5LCBtX2xvY2FsaXplZERlc2NyaXB0aW9uLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCkpOwogCiAgICAgICAgIGlmICghbV9mYWlsaW5nVVJMLmlzRW1wdHkoKSkgewotICAg
ICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmYWlsaW5nVVJMU3RyaW5nID0gbV9mYWls
aW5nVVJMLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGZhaWxpbmdVUkxTdHJpbmcgPSBtX2ZhaWxpbmdVUkwuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJp
bmcoKTsKICAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBm
YWlsaW5nVVJMU3RyaW5nS2V5LCBmYWlsaW5nVVJMU3RyaW5nLmdldCgpKTsKLSAgICAgICAgICAg
IC8vIEZJWEVNRTogV2Ugbm9ybWFsbHkgY3JlYXRlIGEgQ0ZVUkwgZnJvbSBhIHN0cmluZyBieSB1
c2luZyBVUkw6OmNyZWF0ZUNGVVJMLCB3aGljaCBoYW5kbGVzCi0gICAgICAgICAgICAvLyBjYXNl
cyBjb3JyZWN0bHkgdGhhdCBDRlVSTENyZWF0ZVdpdGhTdHJpbmcgaGFuZGxlcyBpbmNvcnJlY3Rs
eS4KLSAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsID0gYWRvcHRDRihDRlVSTENy
ZWF0ZVdpdGhTdHJpbmcoMCwgZmFpbGluZ1VSTFN0cmluZy5nZXQoKSwgMCkpOwotICAgICAgICAg
ICAgaWYgKHVybCkKKyAgICAgICAgICAgIGlmIChSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IG1f
ZmFpbGluZ1VSTC5jcmVhdGVDRlVSTCgpKQogICAgICAgICAgICAgICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKHVzZXJJbmZvLmdldCgpLCBmYWlsaW5nVVJMS2V5LCB1cmwuZ2V0KCkpOwogICAgICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VFcnJvci5oCmluZGV4IDQxYzE5OTE0YmRiYzZlYzYxODM4YWI5YTViODM5YWVjODBkY2Iz
Y2EuLmMzMWRkNDI1MWY2N2ExY2VmNmFiNDkyOTNlNTk0NWE3N2VhZTJiNTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaApA
QCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFJlc291cmNlRXJy
b3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFp
bGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICBSZXNvdXJj
ZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZh
aWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCiAgICAgICAgIDog
UmVzb3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXpl
ZERlc2NyaXB0aW9uKSwgbV9zc2xFcnJvcnMoMCkKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0K
aW5kZXggZjdjODY0Y2UzYjUwOTlmZTAyZjE2OTY5YWNlMzk3ZjY4MmU4M2RiYS4uNjQxODkzODAw
MDYzMzMzYzcwMWRiNTNjYWMwMDFhYjU0OTlmNzA3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCkBAIC0xODIs
MTIgKzE4Miw5IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gY3JlYXRlTlNFcnJvckZyb21S
ZXNvdXJjZUVycm9yQmFzZShjb25zdCBSZXNvdXJjZUVycm9yCiAgICAgICAgIFt1c2VySW5mby5n
ZXQoKSBzZXRWYWx1ZTpyZXNvdXJjZUVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkgZm9yS2V5
Ok5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXldOwogCiAgICAgaWYgKCFyZXNvdXJjZUVycm9yLmZh
aWxpbmdVUkwoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgLy8gRklYRU1FOiBXZSBub3JtYWxseSBj
cmVhdGUgYW4gTlNVUkwgZnJvbSBhIHN0cmluZyBieSB1c2luZyBVUkw6OmNyZWF0ZU5TVVJMLCB3
aGljaCBoYW5kbGVzCi0gICAgICAgIC8vIGNhc2VzIGNvcnJlY3RseSB0aGF0IGluaXRXaXRoU3Ry
aW5nOiBoYW5kbGVzIGluY29ycmVjdGx5LgotICAgICAgICBSZXRhaW5QdHI8TlNVUkw+IGNvY29h
VVJMID0gYWRvcHROUyhbW05TVVJMIGFsbG9jXSBpbml0V2l0aFN0cmluZzpyZXNvdXJjZUVycm9y
LmZhaWxpbmdVUkwoKV0pOwotICAgICAgICBbdXNlckluZm8uZ2V0KCkgc2V0VmFsdWU6cmVzb3Vy
Y2VFcnJvci5mYWlsaW5nVVJMKCkgZm9yS2V5OkAiTlNFcnJvckZhaWxpbmdVUkxTdHJpbmdLZXki
XTsKLSAgICAgICAgaWYgKGNvY29hVVJMKQotICAgICAgICAgICAgW3VzZXJJbmZvLmdldCgpIHNl
dFZhbHVlOmNvY29hVVJMLmdldCgpIGZvcktleTpAIk5TRXJyb3JGYWlsaW5nVVJMS2V5Il07Cisg
ICAgICAgIFt1c2VySW5mby5nZXQoKSBzZXRWYWx1ZTooTlNTdHJpbmcgKilyZXNvdXJjZUVycm9y
LmZhaWxpbmdVUkwoKS5zdHJpbmcoKSBmb3JLZXk6QCJOU0Vycm9yRmFpbGluZ1VSTFN0cmluZ0tl
eSJdOworICAgICAgICBpZiAoTlNVUkwgKmNvY29hVVJMID0gKE5TVVJMICopcmVzb3VyY2VFcnJv
ci5mYWlsaW5nVVJMKCkpCisgICAgICAgICAgICBbdXNlckluZm8uZ2V0KCkgc2V0VmFsdWU6Y29j
b2FVUkwgZm9yS2V5OkAiTlNFcnJvckZhaWxpbmdVUkxLZXkiXTsKICAgICB9CiAKICAgICByZXR1
cm4gYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOnJlc291cmNlRXJyb3Iu
ZG9tYWluKCkgY29kZTpyZXNvdXJjZUVycm9yLmVycm9yQ29kZSgpIHVzZXJJbmZvOnVzZXJJbmZv
LmdldCgpXSk7CkBAIC0yNjYsMTAgKzI2MywxMCBAQCB2b2lkIFJlc291cmNlRXJyb3I6OnBsYXRm
b3JtTGF6eUluaXQoKQogICAgIG1fZG9tYWluID0gW21fcGxhdGZvcm1FcnJvci5nZXQoKSBkb21h
aW5dOwogICAgIG1fZXJyb3JDb2RlID0gW21fcGxhdGZvcm1FcnJvci5nZXQoKSBjb2RlXTsKIAot
ICAgIE5TU3RyaW5nKiBmYWlsaW5nVVJMU3RyaW5nID0gW1ttX3BsYXRmb3JtRXJyb3IuZ2V0KCkg
dXNlckluZm9dIHZhbHVlRm9yS2V5OkAiTlNFcnJvckZhaWxpbmdVUkxTdHJpbmdLZXkiXTsKLSAg
ICBpZiAoIWZhaWxpbmdVUkxTdHJpbmcpCi0gICAgICAgIGZhaWxpbmdVUkxTdHJpbmcgPSBbW1tt
X3BsYXRmb3JtRXJyb3IuZ2V0KCkgdXNlckluZm9dIHZhbHVlRm9yS2V5OkAiTlNFcnJvckZhaWxp
bmdVUkxLZXkiXSBhYnNvbHV0ZVN0cmluZ107Ci0gICAgbV9mYWlsaW5nVVJMID0gZmFpbGluZ1VS
TFN0cmluZzsgCisgICAgaWYgKE5TU3RyaW5nKiBmYWlsaW5nVVJMU3RyaW5nID0gW1ttX3BsYXRm
b3JtRXJyb3IuZ2V0KCkgdXNlckluZm9dIHZhbHVlRm9yS2V5OkAiTlNFcnJvckZhaWxpbmdVUkxT
dHJpbmdLZXkiXSkKKyAgICAgICAgbV9mYWlsaW5nVVJMID0gVVJMKFVSTCgpLCBmYWlsaW5nVVJM
U3RyaW5nKTsKKyAgICBlbHNlCisgICAgICAgIG1fZmFpbGluZ1VSTCA9IFVSTCgoTlNVUkwgKilb
W21fcGxhdGZvcm1FcnJvci5nZXQoKSB1c2VySW5mb10gdmFsdWVGb3JLZXk6QCJOU0Vycm9yRmFp
bGluZ1VSTEtleSJdKTsKICAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNjU1
NDA2Nz4KICAgICBtX2xvY2FsaXplZERlc2NyaXB0aW9uID0gbV9mYWlsaW5nVVJMOwogICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5oCmluZGV4IGU1MDI5N2E3ZmU5ZDRjODk0
OTM4MTBkNTZiYjgwZjhhNzVmNGI4ZWIuLjQ0N2IwMDI3NDhhNjNmNWFjNDA3NmFiM2Q5YzNmMmE1
MjM1ZmI2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZUVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlRXJyb3IuaApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBSZXNvdXJjZUVycm9yIDogcHVibGljIFJlc291cmNlRXJyb3JCYXNlCiB7CiBwdWJs
aWM6Ci0gICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29k
ZSwgY29uc3QgU3RyaW5nJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2Ny
aXB0aW9uKQorICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJv
ckNvZGUsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNj
cmlwdGlvbikKICAgICAgICAgOiBSZXNvdXJjZUVycm9yQmFzZShkb21haW4sIGVycm9yQ29kZSwg
ZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24pCiAgICAgICAgICwgbV90bHNFcnJvcnMo
MCkKICAgICB7CkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVzb3VyY2VF
cnJvciB0cmFuc3BvcnRFcnJvcihTb3VwUmVxdWVzdCosIGludCBzdGF0dXNDb2RlLCBjb25zdCBT
dHJpbmcmIHJlYXNvblBocmFzZSk7CiAgICAgc3RhdGljIFJlc291cmNlRXJyb3IgZ2VuZXJpY0dF
cnJvcihHRXJyb3IqLCBTb3VwUmVxdWVzdCopOwogICAgIHN0YXRpYyBSZXNvdXJjZUVycm9yIHRs
c0Vycm9yKFNvdXBSZXF1ZXN0KiwgdW5zaWduZWQgdGxzRXJyb3JzLCBHVGxzQ2VydGlmaWNhdGUq
KTsKLSAgICBzdGF0aWMgUmVzb3VyY2VFcnJvciB0aW1lb3V0RXJyb3IoY29uc3QgU3RyaW5nJiBm
YWlsaW5nVVJMKTsKKyAgICBzdGF0aWMgUmVzb3VyY2VFcnJvciB0aW1lb3V0RXJyb3IoY29uc3Qg
VVJMJiBmYWlsaW5nVVJMKTsKICAgICBzdGF0aWMgUmVzb3VyY2VFcnJvciBhdXRoZW50aWNhdGlv
bkVycm9yKFNvdXBNZXNzYWdlKik7CiAKICAgICB1bnNpZ25lZCB0bHNFcnJvcnMoKSBjb25zdCB7
IHJldHVybiBtX3Rsc0Vycm9yczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAKaW5kZXggYjI1YjVhMGI4
NjUxZTFhMGNmNWY2MTk2MGQ1N2EyMjRhYTUzNTgzYi4uYjBiMzBjOTMyNDUyZjA5ZjI0YjFlZDlk
NGQyNmJiMmY1YmJmZTIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCkBAIC0zNSwxNCArMzUsMTUg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgU3RyaW5nIGZhaWxpbmdVUkkoU291
cFVSSSogc291cFVSSSkKK3N0YXRpYyBVUkwgZmFpbGluZ1VSSShTb3VwVVJJKiBzb3VwVVJJKQog
ewogICAgIEFTU0VSVChzb3VwVVJJKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHVyaShzb3VwX3Vy
aV90b19zdHJpbmcoc291cFVSSSwgRkFMU0UpKTsKLSAgICByZXR1cm4gdXJpLmdldCgpOworICAg
IC8vIEZJWE1FOiBJcyB0aGVyZSBhIG1vcmUgZWZmaWNpZW50IHdheSB0byBnZXQgYSBwYXJzZWQg
VVJMIGhlcmU/CisgICAgcmV0dXJuIFVSTChVUkwoKSwgdXJpLmdldCgpKTsKIH0KIAotc3RhdGlj
IFN0cmluZyBmYWlsaW5nVVJJKFNvdXBSZXF1ZXN0KiByZXF1ZXN0KQorc3RhdGljIFVSTCBmYWls
aW5nVVJJKFNvdXBSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIEFTU0VSVChyZXF1ZXN0KTsKICAg
ICByZXR1cm4gZmFpbGluZ1VSSShzb3VwX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KSk7CkBAIC04
NSw3ICs4Niw3IEBAIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6dGxzRXJyb3IoU291cFJl
cXVlc3QqIHJlcXVlc3QsIHVuc2lnbmVkIHRsc0Vycm9ycywKICAgICByZXR1cm4gcmVzb3VyY2VF
cnJvcjsKIH0KIAotUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjp0aW1lb3V0RXJyb3IoY29u
c3QgU3RyaW5nJiBmYWlsaW5nVVJMKQorUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjp0aW1l
b3V0RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBwcm9iYWJseSBlaXRoZXIgYmUgaW50ZWdyYXRlZCBpbnRvIEVycm9ycyhHdGsvRUZMKS5o
IG9yIHRoZQogICAgIC8vIG5ldHdvcmtpbmcgZXJyb3JzIGZyb20gdGhvc2UgZmlsZXMgc2hvdWxk
IGJlIG1vdmVkIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCmluZGV4IDk1Njg5N2I1YzlkY2Zk
YTNlZGQxMzJmNGYxN2UyMzRkZWYyN2QzZGIuLmI2N2M5MGRkOWI0YzI5N2MwODJlMTIwNThhMTgx
OTcwMmI5N2ExN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCkBAIC0xMDUxLDcgKzEwNTEsNyBA
QCBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IFJlc291cmNlSGFuZGxlOjpyZWxlYXNlRm9yRG93bmxv
YWQoUmVzb3VyY2VIYW5kbGVDbGllbnQqCiAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnRpbWVvdXRG
aXJlZCgpCiB7Ci0gICAgY2xpZW50KCktPmRpZEZhaWwodGhpcywgUmVzb3VyY2VFcnJvcjo6dGlt
ZW91dEVycm9yKGZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpKSk7CisgICAgY2xpZW50KCkt
PmRpZEZhaWwodGhpcywgUmVzb3VyY2VFcnJvcjo6dGltZW91dEVycm9yKGZpcnN0UmVxdWVzdCgp
LnVybCgpKSk7CiAgICAgY2FuY2VsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwCmluZGV4IDRjNDhjOTRmOGIyOTMzNmI0NDI0MTEyZDZiMmVjYmI5NjA4M2ZjNWUuLjU3
OWYxY2NmODU1ZjEwOTIzMjllMjYwZmQ1NDMxMjQzNWJhYTI2NmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTA3Nyw4ICsxMDc3LDEwIEBAIHZvaWQgWE1MSHR0cFJl
cXVlc3Q6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgfQogCiAgICAg
Ly8gTmV0d29yayBmYWlsdXJlcyBhcmUgYWxyZWFkeSByZXBvcnRlZCB0byBXZWIgSW5zcGVjdG9y
IGJ5IFJlc291cmNlTG9hZGVyLgotICAgIGlmIChlcnJvci5kb21haW4oKSA9PSBlcnJvckRvbWFp
bldlYktpdEludGVybmFsKQotICAgICAgICBsb2dDb25zb2xlRXJyb3Ioc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCAiWE1MSHR0cFJlcXVlc3QgY2Fubm90IGxvYWQgIiArIGVycm9yLmZhaWxpbmdV
UkwoKSArICIuICIgKyBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKKyAgICBpZiAoZXJy
b3IuZG9tYWluKCkgPT0gZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCkgeworICAgICAgICBTdHJp
bmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlhNTEh0dHBSZXF1ZXN0IGNhbm5vdCBsb2FkICIsIGVy
cm9yLmZhaWxpbmdVUkwoKS5zdHJpbmcoKSwgIi4gIiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRp
b24oKSk7CisgICAgICAgIGxvZ0NvbnNvbGVFcnJvcihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IG1lc3NhZ2UpOworICAgIH0KIAogICAgIG1fZXhjZXB0aW9uQ29kZSA9IFhNTEh0dHBSZXF1ZXN0
RXhjZXB0aW9uOjpORVRXT1JLX0VSUjsKICAgICBuZXR3b3JrRXJyb3IoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267891</attachid>
            <date>2015-12-23 22:24:10 -0800</date>
            <delta_ts>2015-12-23 22:49:31 -0800</delta_ts>
            <desc>Patch v5</desc>
            <filename>bug-146391-20151223222333.patch</filename>
            <type>text/plain</type>
            <size>49656</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0Mzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTk5Y2NlMDBmMWMxMTk3
NmM4MWZmZDBkY2EwOGU1NGNkMjYwOTI5NS4uYWVjYjBlNGM5MTg1NjM2ZDdmNjQ0NjZjMGZkMzMx
ZTMzMWQ3MGYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAxNS0xMi0yMyAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlRXJyb3Ig
c2hvdWxkIHN0b3JlIGZhaWxpbmdVUkwgYXMgVVJMIGluc3RlYWQgb2YgU3RyaW5nIHRvIGF2b2lk
IHJlcGFyc2luZyBhbmQgdG8gYWRkcmVzcyBGSVhNRSBjb21tZW50cyBpbiBSZXNvdXJjZUVycm9y
Q0YuY3BwIGFuZCBSZXNvdXJjZUVycm9yTWFjLm1tCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9y
Zy9iLzE0NjM5MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlU2ltcGxl
Q3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxpZ2h0RmFpbHVyZSk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRGYWlsdXJlKToKKyAgICAgICAgLSBTd2l0Y2gg
dHlwZSBvZiAndXJsJyBhcmd1bWVudCBvZiBwcmVmbGlnaHRGYWlsdXJlKCkgZnJvbQorICAgICAg
ICAgIFN0cmluZyB0byBVUkwuCisgICAgICAgIC0gVXBkYXRlIGZvciB0eXBlIGNoYW5nZSBvZiAn
ZmFpbGluZ1VSTCcgYXJndW1lbnQgdG8KKyAgICAgICAgICBSZXNvdXJjZUVycm9yKCkuCisKKyAg
ICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToK
KyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXI6OmxvYWREYXRhVVJMKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpjYW5jZWwpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgLSBVcGRhdGUgZm9yIHR5cGUgY2hh
bmdlIG9mICdmYWlsaW5nVVJMJyBhcmd1bWVudCB0bworICAgICAgICAgIFJlc291cmNlRXJyb3Io
KS4KKworICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRTb3VyY2U6OmRpZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2spOgorICAgICAgICAtIENvbnZl
cnQgZmFpbGluZ1VSTCgpIHRvIFN0cmluZyBleHBsaWNpdGx5LgorCisgICAgICAgICogcGxhdGZv
cm0vZWZsL0Vycm9yc0VmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5jZWxsZWRFcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpibG9ja2VkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6Ymxv
Y2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93
VVJMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VF
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93TUlNRVR5cGVFcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjpmaWxlRG9lc05vdEV4aXN0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpkb3dubG9hZENh
bmNlbGxlZEJ5VXNlckVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmRvd25sb2FkRGVzdGluYXRp
b25FcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjYW5jZWxsZWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpibG9ja2VkRXJy
b3IpOgorICAgICAgICAoV2ViQ29yZTo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5u
b3RTaG93TUlNRVR5cGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpmaWxlRG9lc05vdEV4aXN0
RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpkb3dubG9hZENhbmNlbGxlZEJ5VXNlckVycm9yKToKKyAgICAgICAg
KFdlYkNvcmU6OmRvd25sb2FkRGVzdGluYXRpb25FcnJvcik6CisgICAgICAgIC0gVXBkYXRlIGZv
ciB0eXBlIGNoYW5nZSBvZiAnZmFpbGluZ1VSTCcgYXJndW1lbnQgdG8KKyAgICAgICAgICBSZXNv
dXJjZUVycm9yKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JC
YXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yQmFzZTo6ZmFpbGluZ1VSTCk6
CisgICAgICAgIC0gQ2hhbmdlIHJldHVybiB0eXBlIGZyb20gU3RyaW5nIHRvIFVSTC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjpSZXNvdXJjZUVycm9yQmFzZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgLSBDaGFuZ2UgdHlw
ZSBvZiAnZmFpbGluZ1VSTCcgZnJvbSBTdHJpbmcgdG8gVVJMLgorCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcik6CisgICAgICAgIC0gQ2hhbmdlIHR5cGUgb2YgJ2Zh
aWxpbmdVUkwnIGZyb20gU3RyaW5nIHRvIFVSTC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
RXJyb3I6OnBsYXRmb3JtTGF6eUluaXQpOgorICAgICAgICAtIENsZWFuIHVwIGNvZGUgYW5kIGFk
ZHJlc3MgRklYTUUgYnkgcGFyc2luZyBDRlVSTFJlZiB1c2luZworICAgICAgICAgIFVSTCgpIGNv
bnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6Y2ZFcnJvcik6Cisg
ICAgICAgIC0gQ2xlYW4gdXAgY29kZSBhbmQgYWRkcmVzcyBGSVhNRSBhZnRlciBzd2l0Y2hpbmcg
dHlwZSBvZgorICAgICAgICAgIG1fZmFpbGluZ1VSTC4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgLSBDaGFuZ2UgdHlwZSBvZiAnZmFpbGluZ1VS
TCcgZnJvbSBTdHJpbmcgdG8gVVJMLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU5TRXJyb3JGcm9t
UmVzb3VyY2VFcnJvckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6cGxh
dGZvcm1MYXp5SW5pdCk6CisgICAgICAgIC0gQ2xlYW4gdXAgY29kZSBhbmQgYWRkcmVzcyBGSVhN
RSBhZnRlciBzd2l0Y2hpbmcgdHlwZSBvZgorICAgICAgICAgIG1fZmFpbGluZ1VSTC4KKworICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlRXJyb3I6OnRpbWVvdXRFcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZhaWxpbmdV
UkkpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6dGltZW91dEVycm9yKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp0aW1lb3V0RmlyZWQpOgorICAgICAgICAt
IENoYW5nZSB0eXBlIG9mICdmYWlsaW5nVVJMJyBmcm9tIFN0cmluZyB0byBVUkwuCisKKyAgICAg
ICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OmRpZEZhaWwpOgorICAgICAgICAtIENvbnZlcnQgZmFpbGluZ1VSTCgpIHRvIFN0cmlu
ZyBleHBsaWNpdGx5LgorICAgICAgICAtIEFsc28gc3dpdGNoIHRvIHVzaW5nIG1ha2VTdHJpbmco
KS4KKwogMjAxNS0xMi0yMiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgVHJ5IHRvIGZpeCB0aGUgaU9TIGJ1aWxkIGFmdGVyIHIxOTQzNzgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpp
bmRleCA4MjQxZTFmNmY1NzBmYTU5ZTg2ZWI0ZmI2MDY1MDI4Y2JjMTU3OTI0Li4zNDMyYzJkOWI3
OGRjN2NiOTkzNWRiMTNhYWI2NGFhNmE5ODhlNDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMTUtMTItMjMgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXNvdXJjZUVycm9yIHNob3VsZCBzdG9yZSBmYWlsaW5nVVJMIGFzIFVSTCBp
bnN0ZWFkIG9mIFN0cmluZyB0byBhdm9pZCByZXBhcnNpbmcgYW5kIHRvIGFkZHJlc3MgRklYTUUg
Y29tbWVudHMgaW4gUmVzb3VyY2VFcnJvckNGLmNwcCBhbmQgUmVzb3VyY2VFcnJvck1hYy5tbQor
ICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8xNDYzOTE+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsbGVk
RXJyb3IpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmJsb2NrZWRFcnJvcik6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAgICAg
ICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjppbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9y
KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5ub3RTaG93TUlNRVR5cGVFcnJv
cik6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmlsZURvZXNOb3RFeGlzdEVycm9y
KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwbHVnaW5XaWxsSGFuZGxlTG9hZEVy
cm9yKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0
YXJ0UGx1Z2luKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBw
bGV0V2lkZ2V0KToKKyAgICAgICAgKiBXZWJEb3dubG9hZENGTmV0LmNwcDoKKyAgICAgICAgKFdl
YkRvd25sb2FkOjpjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogV2Vi
RXJyb3IuY3BwOgorICAgICAgICAoV2ViRXJyb3I6OmluaXQpOgorICAgICAgICAtIFVwZGF0ZSBm
b3IgdHlwZSBjaGFuZ2Ugb2YgJ2ZhaWxpbmdVUkwnIGFyZ3VtZW50IHRvCisgICAgICAgICAgUmVz
b3VyY2VFcnJvcigpLgorCiAyMDE1LTEyLTIwICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBzZXRUb29sYmFySGVpZ2h0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggMDQzOWIwMmVjZTg2ZDczZjZiYzkxYTExM2U4M2IzZWM1ODYxZWVlYy4uZWE4YzYyY2M2NmFl
MjM0OTVlNWJjZjdiNWQzNzY5NzI3NTY3NTBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDE1LTEyLTIzICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVzb3VyY2VFcnJvciBzaG91bGQgc3RvcmUgZmFpbGluZ1VSTCBhcyBVUkwgaW5zdGVhZCBv
ZiBTdHJpbmcgdG8gYXZvaWQgcmVwYXJzaW5nIGFuZCB0byBhZGRyZXNzIEZJWE1FIGNvbW1lbnRz
IGluIFJlc291cmNlRXJyb3JDRi5jcHAgYW5kIFJlc291cmNlRXJyb3JNYWMubW0KKyAgICAgICAg
PGh0dHA6Ly93ZWJraXQub3JnL2IvMTQ2MzkxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
U291cC5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmRl
Y29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJ
U2NoZW1lUmVxdWVzdC5jcHA6CisgICAgICAgICh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2Zp
bmlzaF9lcnJvcik6CisgICAgICAgIC0gVXBkYXRlIGZvciB0eXBlIGNoYW5nZSBvZiAnZmFpbGlu
Z1VSTCcgYXJndW1lbnQgdG8KKyAgICAgICAgICBSZXNvdXJjZUVycm9yKCkuCisKIDIwMTUtMTIt
MjIgIEh1bnNlb3AgSmVvbmcgIDxoczg1Lmplb25nQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtF
RkxdIGV3a19hcHBsaWNhdGlvbl9jYWNoZV9tYW5hZ2VyIHRlc3QgZmFpbGVkIGFmdGVyIHIxOTM4
MTIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKaW5kZXggZDU0MDYwNTJiNWU3OWNmZTBlMGYwNGExMWIyYWYxZDU3ZDIzYzk2ZS4uMWY2
MTRlYjMxNzk3OTU4ZmU4YTUyZTg0ZGVkZjA2ZDVhZDVkODFmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTg1LDcgKzg1
LDcgQEAgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXIo
RG9jdW1lbnQmIGRvY3VtZW50LCBUaHJlYWRhYmwKICAgICB9CiAKICAgICBpZiAobV9vcHRpb25z
LmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9PSBEZW55Q3Jvc3NPcmlnaW5SZXF1ZXN0cykgewot
ICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksICJDcm9zcyBvcmlnaW4gcmVxdWVz
dHMgYXJlIG5vdCBzdXBwb3J0ZWQuIikpOworICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbChSZXNv
dXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlcXVlc3QudXJsKCksICJD
cm9zcyBvcmlnaW4gcmVxdWVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQuIikpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6Om1ha2VTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoY29uc3QgUmVzb3VyY2UK
IAogICAgIC8vIENyb3NzLW9yaWdpbiByZXF1ZXN0cyBhcmUgb25seSBhbGxvd2VkIGZvciBIVFRQ
IGFuZCByZWdpc3RlcmVkIHNjaGVtZXMuIFdlIHdvdWxkIGNhdGNoIHRoaXMgd2hlbiBjaGVja2lu
ZyByZXNwb25zZSBoZWFkZXJzIGxhdGVyLCBidXQgdGhlcmUgaXMgbm8gcmVhc29uIHRvIHNlbmQg
YSByZXF1ZXN0IHRoYXQncyBndWFyYW50ZWVkIHRvIGJlIGRlbmllZC4KICAgICBpZiAoIVNjaGVt
ZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzQ09SU0VuYWJsZWQocmVxdWVzdC51cmwo
KS5wcm90b2NvbCgpKSkgewotICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbEFjY2Vzc0NvbnRyb2xD
aGVjayhSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlcXVlc3Qu
dXJsKCkuc3RyaW5nKCksICJDcm9zcyBvcmlnaW4gcmVxdWVzdHMgYXJlIG9ubHkgc3VwcG9ydGVk
IGZvciBIVFRQLiIpKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZEZhaWxBY2Nlc3NDb250cm9sQ2hl
Y2soUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0LnVy
bCgpLCAiQ3Jvc3Mgb3JpZ2luIHJlcXVlc3RzIGFyZSBvbmx5IHN1cHBvcnRlZCBmb3IgSFRUUC4i
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29ucwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghbV9zYW1lT3JpZ2lu
UmVxdWVzdCAmJiBtX29wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5ID09IFVzZUFjY2Vz
c0NvbnRyb2wpIHsKICAgICAgICAgICAgIGlmICghcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKHJl
c3BvbnNlLCBtX29wdGlvbnMuYWxsb3dDcmVkZW50aWFscygpLCBzZWN1cml0eU9yaWdpbigpLCBh
Y2Nlc3NDb250cm9sRXJyb3JEZXNjcmlwdGlvbikpIHsKLSAgICAgICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkRmFpbEFjY2Vzc0NvbnRyb2xDaGVjayhSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2Vi
S2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBhY2Nlc3NDb250cm9sRXJy
b3JEZXNjcmlwdGlvbikpOworICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRGYWlsQWNjZXNz
Q29udHJvbENoZWNrKFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwg
cmVzcG9uc2UudXJsKCksIGFjY2Vzc0NvbnRyb2xFcnJvckRlc2NyaXB0aW9uKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zMzMsNyArMzMz
LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnByZWZsaWdodFN1Y2Nlc3MoKQog
ICAgIGxvYWRSZXF1ZXN0KCphY3R1YWxSZXF1ZXN0LCBTa2lwU2VjdXJpdHlDaGVjayk7CiB9CiAK
LXZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRGYWlsdXJlKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZXJyb3JE
ZXNjcmlwdGlvbikKK3ZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRGYWls
dXJlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JEZXNjcmlwdGlvbikKIHsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yKGVycm9yRG9t
YWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgZXJyb3JEZXNjcmlwdGlvbik7CiAgICAgaWYgKG1f
YWN0dWFsUmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuaAppbmRleCA3NzhkMzFlZjNmZTJiYTU0MjIyNmI2NzQ0Y2NiN2RlMzhiZTAw
YzhkLi5mZjA4M2ZiOTBmMTcyYWRiY2U1Mzc1NGUwZWM3ZGM1MGZiNGE3ZjY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCkBAIC05MSw3
ICs5MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBtYWtlU2ltcGxlQ3Jv
c3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCk7CiAg
ICAgICAgIHZvaWQgbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KTsKICAgICAgICAgdm9pZCBwcmVmbGlnaHRTdWNj
ZXNzKCk7Ci0gICAgICAgIHZvaWQgcHJlZmxpZ2h0RmFpbHVyZSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGVycm9yRGVzY3JpcHRpb24p
OworICAgICAgICB2b2lkIHByZWZsaWdodEZhaWx1cmUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGVycm9yRGVzY3JpcHRpb24pOwogCiAgICAgICAg
IHZvaWQgbG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU2VjdXJpdHlDaGVja1Bv
bGljeSk7CiAgICAgICAgIGJvb2wgaXNBbGxvd2VkUmVkaXJlY3QoY29uc3QgVVJMJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggMTYyOWVjNTdjZTVkZGMxMGNlODlkMzEx
MDQ2ZTkwMGExNDM0M2ZjZC4uMWE0MGI2ZGE0NDVjOWMyODM1YWJlOTQ0NTBlNjMyZDY1NWFjMmIy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtMzIwLDE1ICszMjAsMTUg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVy
KiwgY29uc3QgY2hhciosIGludCkgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGZpbmlz
aGVkTG9hZGluZyhEb2N1bWVudExvYWRlciopIG92ZXJyaWRlIHsgfQogCi0gICAgdmlydHVhbCBS
ZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJy
aWRlIHsgUmVzb3VyY2VFcnJvciBlcnJvcigiIiwgMCwgIiIsICIiKTsgZXJyb3Iuc2V0SXNDYW5j
ZWxsYXRpb24odHJ1ZSk7IHJldHVybiBlcnJvcjsgfQotICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJv
ciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4g
UmVzb3VyY2VFcnJvcigiIiwgMCwgIiIsICIiKTsgfQotICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJv
ciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92
ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsICIiLCAiIik7IH0KLSAgICB2aXJ0
dWFsIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsICIiLCAiIik7IH0KLSAg
ICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIi
LCAwLCAiIiwgIiIpOyB9Ci0KLSAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd01J
TUVUeXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0dXJuIFJl
c291cmNlRXJyb3IoIiIsIDAsICIiLCAiIik7IH0KLSAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3Ig
ZmlsZURvZXNOb3RFeGlzdEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7
IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCAiIiwgIiIpOyB9Ci0gICAgdmlydHVhbCBSZXNv
dXJjZUVycm9yIHBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsICIiLCAiIik7IH0KKyAg
ICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Jikgb3ZlcnJpZGUgeyBSZXNvdXJjZUVycm9yIGVycm9yKCIiLCAwLCBVUkwoKSwgIiIpOyBl
cnJvci5zZXRJc0NhbmNlbGxhdGlvbih0cnVlKTsgcmV0dXJuIGVycm9yOyB9CisgICAgdmlydHVh
bCBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVy
cmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBVUkwoKSwgIiIpOyB9CisgICAgdmly
dHVhbCBSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgVVJM
KCksICIiKTsgfQorICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigi
IiwgMCwgVVJMKCksICIiKTsgfQorICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRl
ZEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsg
cmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KKworICAgIHZpcnR1YWwg
UmVzb3VyY2VFcnJvciBjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgVVJMKCksICIiKTsg
fQorICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAs
IFVSTCgpLCAiIik7IH0KKyAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRs
ZUxvYWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGUgeyByZXR1cm4gUmVz
b3VyY2VFcnJvcigiIiwgMCwgVVJMKCksICIiKTsgfQogCiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZEZhbGxCYWNrKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA0ODE1MGEwZTNhNGYy
N2Q4OTAyMjUwY2EzYWRmYzAyZjM1NjNjNjgxLi45MDBkZDM4MDBiZmE0NTU5OTc4YzJlNDFhNDAy
MDA3MTVjNGMyZWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTI2
ODYsNyArMjY4Niw3IEBAIHVuc2lnbmVkIGxvbmcgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1CiAgICAgICAgICAgICBpZiAo
YXV0byogY29udHJvbGxlciA9IHBhZ2UtPnVzZXJDb250ZW50Q29udHJvbGxlcigpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXIgJiYgY29udHJvbGxlci0+cHJvY2Vzc0Nv
bnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQobmV3UmVxdWVzdCwgUmVzb3VyY2VUeXBlOjpSYXcs
ICptX2RvY3VtZW50TG9hZGVyKSA9PSBDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1czo6
QmxvY2tlZCkgewogICAgICAgICAgICAgICAgICAgICBuZXdSZXF1ZXN0ID0geyB9OwotICAgICAg
ICAgICAgICAgICAgICBlcnJvciA9IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRl
cm5hbCwgMCwgaW5pdGlhbFJlcXVlc3QudXJsKCkuc3RyaW5nKCksIGVtcHR5U3RyaW5nKCkpOwor
ICAgICAgICAgICAgICAgICAgICBlcnJvciA9IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJL
aXRJbnRlcm5hbCwgMCwgaW5pdGlhbFJlcXVlc3QudXJsKCksIGVtcHR5U3RyaW5nKCkpOwogICAg
ICAgICAgICAgICAgICAgICByZXNwb25zZSA9IHsgfTsKICAgICAgICAgICAgICAgICAgICAgZGF0
YSA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDIwZDJlNmVjOWEzMzlmYmVlMWRkZWI5MjA4
NDIwY2NmYzIxY2JmMDcuLmQ5MzNjZWUzZDViZjMwNjQyODUyYjFjYzFjMDI3ZWYzNDc5NDgwOTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTEwMCw3ICsxMDAsNyBAQCB2b2lkIE1lZGlhUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdQogICAgICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBjb25zb2xlTWVzc2FnZSgiQ3Jvc3Mtb3JpZ2lu
IG1lZGlhIHJlc291cmNlIGxvYWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFy
aW5nIHBvbGljeS4iKTsKICAgICAgICAgbV9kb2N1bWVudC5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgY29uc29sZU1lc3NhZ2Uu
Z2V0KCkpOwogICAgICAgICBtX2RpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2sgPSBmYWxzZTsKLSAg
ICAgICAgbV9jbGllbnQtPmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChSZXNvdXJjZUVycm9yKGVy
cm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBjb25z
b2xlTWVzc2FnZS5nZXQoKSkpOworICAgICAgICBtX2NsaWVudC0+YWNjZXNzQ29udHJvbENoZWNr
RmFpbGVkKFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVzcG9u
c2UudXJsKCksIGNvbnNvbGVNZXNzYWdlLmdldCgpKSk7CiAgICAgICAgIHN0b3AoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IDBkODFmZjViYTI4YTIxMDRkNTI4YWVjZmJiYmU3MzU2Y2EyM2I2NzguLjFhOTczYjBk
NTIzYjhlMWYzMmYyNWE4MDg5YzgyOTg1NzQ1MGUzZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmxvYWREYXRhVVJMKCkKICAgICAgICAgaWYgKGxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3Rh
dGUoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKCFkZWNvZGVSZXN1bHQpIHsK
LSAgICAgICAgICAgIGxvYWRlci0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2Vi
S2l0SW50ZXJuYWwsIDAsIHVybC5zdHJpbmcoKSwgIkRhdGEgVVJMIGRlY29kaW5nIGZhaWxlZCIp
KTsKKyAgICAgICAgICAgIGxvYWRlci0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWlu
V2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgIkRhdGEgVVJMIGRlY29kaW5nIGZhaWxlZCIpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAobG9hZGVyLT53YXNDYW5j
ZWxsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmNwcAppbmRleCBhMGRjM2NhMWFmYzI1NmM1NjIwOWM5ZDk2OGQ0NWIwMmRkNTEyZjE0Li4x
ZGI4ZDY0ODkyZmEyMzI0OTdiMDM4MjE0NDA2ZjM3ZWYxMzJlYmMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xMzksNyArMTM5
LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpjYW5j
ZWwoKQogICAgIGlmICghY2xpZW50V3JhcHBlci0+ZG9uZSgpKSB7CiAgICAgICAgIC8vIElmIHRo
ZSBjbGllbnQgaGFzbid0IHJlYWNoZWQgYSB0ZXJtaW5hdGlvbiBzdGF0ZSwgdGhlbiB0cmFuc2l0
aW9uIGl0IGJ5IHNlbmRpbmcgYSBjYW5jZWxsYXRpb24gZXJyb3IuCiAgICAgICAgIC8vIE5vdGU6
IG5vIG1vcmUgY2xpZW50IGNhbGxiYWNrcyB3aWxsIGJlIGRvbmUgYWZ0ZXIgdGhpcyBtZXRob2Qg
LS0gdGhlIGNsZWFyQ2xpZW50V3JhcHBlcigpIGNhbGwgZW5zdXJlcyB0aGF0LgotICAgICAgICBS
ZXNvdXJjZUVycm9yIGVycm9yKFN0cmluZygpLCAwLCBTdHJpbmcoKSwgU3RyaW5nKCkpOworICAg
ICAgICBSZXNvdXJjZUVycm9yIGVycm9yKFN0cmluZygpLCAwLCBVUkwoKSwgU3RyaW5nKCkpOwog
ICAgICAgICBlcnJvci5zZXRJc0NhbmNlbGxhdGlvbih0cnVlKTsKICAgICAgICAgY2xpZW50V3Jh
cHBlci0+ZGlkRmFpbChlcnJvcik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNzM3OGQ2ZDFhYzkyNDFi
YzY3Njk2OTc2MzJjN2NmNDdiYmY1MmI5ZS4uZDlmY2ZlNjI0MzYzMDQ5MzlkMWZmYTgyZWMzYTAz
NzAwZTI2NGE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01NDQsNyArNTQ0LDcgQEAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3Vy
Y2UoQ2FjaGUKICAgICAgICAgICAgICAgICBhdXRvIHJlc291cmNlID0gY3JlYXRlUmVzb3VyY2Uo
dHlwZSwgcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QuY2hhcnNldCgp
LCBzZXNzaW9uSUQoKSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc291cmNlKTsKICAgICAg
ICAgICAgICAgICByZXNvdXJjZS0+ZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1czo6TG9hZEVy
cm9yKTsKLSAgICAgICAgICAgICAgICByZXNvdXJjZS0+c2V0UmVzb3VyY2VFcnJvcihSZXNvdXJj
ZUVycm9yKENvbnRlbnRFeHRlbnNpb25zOjpXZWJLaXRDb250ZW50QmxvY2tlckRvbWFpbiwgMCwg
cmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKSwgV0VCX1VJX1NUUklORygi
VGhlIFVSTCB3YXMgYmxvY2tlZCBieSBhIGNvbnRlbnQgYmxvY2tlciIsICJXZWJLaXRFcnJvckJs
b2NrZWRCeUNvbnRlbnRCbG9ja2VyIGRlc2NyaXB0aW9uIikpKTsKKyAgICAgICAgICAgICAgICBy
ZXNvdXJjZS0+c2V0UmVzb3VyY2VFcnJvcihSZXNvdXJjZUVycm9yKENvbnRlbnRFeHRlbnNpb25z
OjpXZWJLaXRDb250ZW50QmxvY2tlckRvbWFpbiwgMCwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KS51cmwoKSwgV0VCX1VJX1NUUklORygiVGhlIFVSTCB3YXMgYmxvY2tlZCBieSBhIGNvbnRlbnQg
YmxvY2tlciIsICJXZWJLaXRFcnJvckJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyIGRlc2NyaXB0aW9u
IikpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb3VyY2U7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAK
aW5kZXggYjgzNDFlNmI2YzA3NTc2Zjc0ZjQxMjM0NTMzMmFmNWU5OTI2YzQ2NC4uMjAxM2MwOGU4
MGM5ZTBmMDQyMzg0Yjc1Yjk2MTU4MDA3NTA2YzVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNv
dXJjZS5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIEV2ZW50U291cmNlOjpkaWRGYWlsKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lkIEV2ZW50U291cmNlOjpkaWRGYWlsQWNj
ZXNzQ29udHJvbENoZWNrKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIFN0cmlu
ZyBtZXNzYWdlID0gbWFrZVN0cmluZygiRXZlbnRTb3VyY2UgY2Fubm90IGxvYWQgIiwgZXJyb3Iu
ZmFpbGluZ1VSTCgpLCAiLiAiLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKKyAgICBT
dHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIkV2ZW50U291cmNlIGNhbm5vdCBsb2FkICIsIGVy
cm9yLmZhaWxpbmdVUkwoKS5zdHJpbmcoKSwgIi4gIiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRp
b24oKSk7CiAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZSk7CiAKICAgICBh
Ym9ydENvbm5lY3Rpb25BdHRlbXB0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lZmwvRXJyb3JzRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FcnJv
cnNFZmwuY3BwCmluZGV4IDZlZmY1NTU5MzNjOTYzMWEyMzgyZTI2Y2QxOTIyOTNjN2Q4YjZlMzcu
LjMyODI2ZTU2NzI3MzAzYmVmZGUyOWMwOGRlOGM1N2FiNDlkYmUzOWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FcnJvcnNFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9FcnJvcnNFZmwuY3BwCkBAIC0zNCw0MiArMzQsNDIgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRv
bWFpbk5ldHdvcmssIE5ldHdvcmtFcnJvckNhbmNlbGxlZCwgcmVxdWVzdC51cmwoKS5zdHJpbmco
KSwgQVNDSUlMaXRlcmFsKCJMb2FkIHJlcXVlc3QgY2FuY2VsbGVkIikpOworICAgIHJldHVybiBS
ZXNvdXJjZUVycm9yKGVycm9yRG9tYWluTmV0d29yaywgTmV0d29ya0Vycm9yQ2FuY2VsbGVkLCBy
ZXF1ZXN0LnVybCgpLCBBU0NJSUxpdGVyYWwoIkxvYWQgcmVxdWVzdCBjYW5jZWxsZWQiKSk7CiB9
CiAKIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9s
aWN5RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwg
QVNDSUlMaXRlcmFsKCJOb3QgYWxsb3dlZCB0byB1c2UgcmVzdHJpY3RlZCBuZXR3b3JrIHBvcnQi
KSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Qb2xpY3ksIFBvbGljeUVy
cm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQsIHJlcXVlc3QudXJsKCksIEFTQ0lJTGl0ZXJhbCgi
Tm90IGFsbG93ZWQgdG8gdXNlIHJlc3RyaWN0ZWQgbmV0d29yayBwb3J0IikpOwogfQogCiBSZXNv
dXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9s
aWN5LCBQb2xpY3lFcnJvckJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyLCByZXF1ZXN0LnVybCgpLnN0
cmluZygpLCBBU0NJSUxpdGVyYWwoIkJsb2NrZWQgYnkgY29udGVudCBibG9ja2VyIikpOworICAg
IHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckJsb2Nr
ZWRCeUNvbnRlbnRCbG9ja2VyLCByZXF1ZXN0LnVybCgpLCBBU0NJSUxpdGVyYWwoIkJsb2NrZWQg
YnkgY29udGVudCBibG9ja2VyIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxF
cnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJlc291
cmNlRXJyb3IoZXJyb3JEb21haW5Qb2xpY3ksIFBvbGljeUVycm9yQ2Fubm90U2hvd1VSTCwgcmVx
dWVzdC51cmwoKS5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJVUkwgY2Fubm90IGJlIHNob3duIikp
OworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJv
ckNhbm5vdFNob3dVUkwsIHJlcXVlc3QudXJsKCksIEFTQ0lJTGl0ZXJhbCgiVVJMIGNhbm5vdCBi
ZSBzaG93biIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5n
ZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gUmVz
b3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JGcmFtZUxvYWRJbnRlcnJ1
cHRlZEJ5UG9saWN5Q2hhbmdlLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCBBU0NJSUxpdGVyYWwo
IkZyYW1lIGxvYWQgd2FzIGludGVycnVwdGVkIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xp
Y3lDaGFuZ2UsIHJlcXVlc3QudXJsKCksIEFTQ0lJTGl0ZXJhbCgiRnJhbWUgbG9hZCB3YXMgaW50
ZXJydXB0ZWQiKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNl
RXJyb3IoZXJyb3JEb21haW5Qb2xpY3ksIFBvbGljeUVycm9yQ2Fubm90U2hvd01pbWVUeXBlLCBy
ZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJDb250ZW50IHdpdGggdGhlIHNw
ZWNpZmllZCBNSU1FIHR5cGUgY2Fubm90IGJlIHNob3duIikpOworICAgIHJldHVybiBSZXNvdXJj
ZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFNob3dNaW1lVHlwZSwg
cmVzcG9uc2UudXJsKCksIEFTQ0lJTGl0ZXJhbCgiQ29udGVudCB3aXRoIHRoZSBzcGVjaWZpZWQg
TUlNRSB0eXBlIGNhbm5vdCBiZSBzaG93biIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBmaWxlRG9l
c05vdEV4aXN0RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAg
cmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5OZXR3b3JrLCBOZXR3b3JrRXJyb3JGaWxl
RG9lc05vdEV4aXN0LCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJGaWxl
IGRvZXMgbm90IGV4aXN0IikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWlu
TmV0d29yaywgTmV0d29ya0Vycm9yRmlsZURvZXNOb3RFeGlzdCwgcmVzcG9uc2UudXJsKCksIEFT
Q0lJTGl0ZXJhbCgiRmlsZSBkb2VzIG5vdCBleGlzdCIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBw
bHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUGx1Z2luLCBQbHVnaW5F
cnJvcldpbGxIYW5kbGVMb2FkLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgQVNDSUlMaXRlcmFs
KCJQbHVnaW4gd2lsbCBoYW5kbGUgbG9hZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihl
cnJvckRvbWFpblBsdWdpbiwgUGx1Z2luRXJyb3JXaWxsSGFuZGxlTG9hZCwgcmVzcG9uc2UudXJs
KCksIEFTQ0lJTGl0ZXJhbCgiUGx1Z2luIHdpbGwgaGFuZGxlIGxvYWQiKSk7CiB9CiAKIFJlc291
cmNlRXJyb3IgZG93bmxvYWROZXR3b3JrRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgbmV0d29y
a0Vycm9yKQpAQCAtNzksMTIgKzc5LDEyIEBAIFJlc291cmNlRXJyb3IgZG93bmxvYWROZXR3b3Jr
RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgbmV0d29ya0Vycm9yKQogCiBSZXNvdXJjZUVycm9y
IGRvd25sb2FkQ2FuY2VsbGVkQnlVc2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Eb3dubG9hZCwg
RG93bmxvYWRFcnJvckNhbmNlbGxlZEJ5VXNlciwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIEFT
Q0lJTGl0ZXJhbCgiVXNlciBjYW5jZWxsZWQgdGhlIGRvd25sb2FkIikpOworICAgIHJldHVybiBS
ZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JDYW5jZWxsZWRC
eVVzZXIsIHJlc3BvbnNlLnVybCgpLCBBU0NJSUxpdGVyYWwoIlVzZXIgY2FuY2VsbGVkIHRoZSBk
b3dubG9hZCIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBkb3dubG9hZERlc3RpbmF0aW9uRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxvYWQsIERv
d25sb2FkRXJyb3JEZXN0aW5hdGlvbiwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIGVycm9yTWVz
c2FnZSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Eb3dubG9hZCwgRG93
bmxvYWRFcnJvckRlc3RpbmF0aW9uLCByZXNwb25zZS51cmwoKSwgZXJyb3JNZXNzYWdlKTsKIH0K
IAogUmVzb3VyY2VFcnJvciBwcmludEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvRXJyb3JzR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9FcnJvcnNH
dGsuY3BwCmluZGV4IDY4OGE5MDZkOWViNDA4ZWRmYjQ3M2FmZmY3OTgyNTY0NmVjMWZlMGYuLjhk
ZmQxNThiM2I0ZDZjNTQ0YmRiMjlhNjE1NzQxZGJkYTRiNDFhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9FcnJvcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9FcnJvcnNHdGsuY3BwCkBAIC0yOSw2NyArMjksNTcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFp
bk5ldHdvcmssIE5ldHdvcmtFcnJvckNhbmNlbGxlZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0LnVybCgpLnN0cmluZygpLCBfKCJMb2FkIHJlcXVlc3QgY2FuY2VsbGVkIikpOwor
ICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluTmV0d29yaywgTmV0d29ya0Vycm9y
Q2FuY2VsbGVkLCByZXF1ZXN0LnVybCgpLCBfKCJMb2FkIHJlcXVlc3QgY2FuY2VsbGVkIikpOwog
fQogCiBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Qb2xpY3ksIFBv
bGljeUVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgXygiTm90IGFsbG93ZWQgdG8gdXNlIHJlc3RyaWN0
ZWQgbmV0d29yayBwb3J0IikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWlu
UG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0LCByZXF1ZXN0LnVybCgp
LCBfKCJOb3QgYWxsb3dlZCB0byB1c2UgcmVzdHJpY3RlZCBuZXR3b3JrIHBvcnQiKSk7CiB9CiAK
IFJlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21h
aW5Qb2xpY3ksIFBvbGljeUVycm9yQmxvY2tlZEJ5Q29udGVudEJsb2NrZXIsIHJlcXVlc3QudXJs
KCkuc3RyaW5nKCksIF8oIkJsb2NrZWQgYnkgY29udGVudCBibG9ja2VyIikpOworICAgIHJldHVy
biBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckJsb2NrZWRCeUNv
bnRlbnRCbG9ja2VyLCByZXF1ZXN0LnVybCgpLCBfKCJCbG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tl
ciIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9t
YWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFNob3dVUkwsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgXygiVVJMIGNhbm5vdCBiZSBzaG93biIpKTsK
KyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JD
YW5ub3RTaG93VVJMLCByZXF1ZXN0LnVybCgpLCBfKCJVUkwgY2Fubm90IGJlIHNob3duIikpOwog
fQogCiBSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVy
cm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lD
aGFuZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwg
XygiRnJhbWUgbG9hZCB3YXMgaW50ZXJydXB0ZWQiKSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoZXJyb3JEb21haW5Qb2xpY3ksIFBvbGljeUVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBv
bGljeUNoYW5nZSwgcmVxdWVzdC51cmwoKSwgXygiRnJhbWUgbG9hZCB3YXMgaW50ZXJydXB0ZWQi
KSk7CiB9CiAKIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJy
b3JEb21haW5Qb2xpY3ksIFBvbGljeUVycm9yQ2Fubm90U2hvd01pbWVUeXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBfKCJDb250ZW50IHdpdGgg
dGhlIHNwZWNpZmllZCBNSU1FIHR5cGUgY2Fubm90IGJlIHNob3duIikpOworICAgIHJldHVybiBS
ZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFNob3dNaW1l
VHlwZSwgcmVzcG9uc2UudXJsKCksIF8oIkNvbnRlbnQgd2l0aCB0aGUgc3BlY2lmaWVkIE1JTUUg
dHlwZSBjYW5ub3QgYmUgc2hvd24iKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgZmlsZURvZXNOb3RF
eGlzdEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIHJldHVy
biBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluTmV0d29yaywgTmV0d29ya0Vycm9yRmlsZURvZXNO
b3RFeGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS51cmwoKS5zdHJpbmco
KSwgXygiRmlsZSBkb2VzIG5vdCBleGlzdCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihl
cnJvckRvbWFpbk5ldHdvcmssIE5ldHdvcmtFcnJvckZpbGVEb2VzTm90RXhpc3QsIHJlc3BvbnNl
LnVybCgpLCBfKCJGaWxlIGRvZXMgbm90IGV4aXN0IikpOwogfQogCiBSZXNvdXJjZUVycm9yIHBs
dWdpbldpbGxIYW5kbGVMb2FkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5QbHVnaW4sIFBsdWdpbkVy
cm9yV2lsbEhhbmRsZUxvYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UudXJs
KCkuc3RyaW5nKCksIF8oIlBsdWdpbiB3aWxsIGhhbmRsZSBsb2FkIikpOworICAgIHJldHVybiBS
ZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUGx1Z2luLCBQbHVnaW5FcnJvcldpbGxIYW5kbGVMb2Fk
LCByZXNwb25zZS51cmwoKSwgXygiUGx1Z2luIHdpbGwgaGFuZGxlIGxvYWQiKSk7CiB9CiAKIFJl
c291cmNlRXJyb3IgZG93bmxvYWROZXR3b3JrRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgbmV0
d29ya0Vycm9yKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxv
YWQsIERvd25sb2FkRXJyb3JOZXR3b3JrLAotICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdv
cmtFcnJvci5mYWlsaW5nVVJMKCksIG5ldHdvcmtFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigp
KTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBEb3dubG9h
ZEVycm9yTmV0d29yaywgbmV0d29ya0Vycm9yLmZhaWxpbmdVUkwoKSwgbmV0d29ya0Vycm9yLmxv
Y2FsaXplZERlc2NyaXB0aW9uKCkpOwogfQogCiBSZXNvdXJjZUVycm9yIGRvd25sb2FkQ2FuY2Vs
bGVkQnlVc2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAg
cmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Eb3dubG9hZCwgRG93bmxvYWRFcnJvckNh
bmNlbGxlZEJ5VXNlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS51cmwoKS5z
dHJpbmcoKSwgXygiVXNlciBjYW5jZWxsZWQgdGhlIGRvd25sb2FkIikpOworICAgIHJldHVybiBS
ZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JDYW5jZWxsZWRC
eVVzZXIsIHJlc3BvbnNlLnVybCgpLCBfKCJVc2VyIGNhbmNlbGxlZCB0aGUgZG93bmxvYWQiKSk7
CiB9CiAKIFJlc291cmNlRXJyb3IgZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAg
ICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBEb3dubG9hZEVycm9y
RGVzdGluYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UudXJsKCkuc3Ry
aW5nKCksIGVycm9yTWVzc2FnZSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21h
aW5Eb3dubG9hZCwgRG93bmxvYWRFcnJvckRlc3RpbmF0aW9uLCByZXNwb25zZS51cmwoKSwgZXJy
b3JNZXNzYWdlKTsKIH0KIAogUmVzb3VyY2VFcnJvciBwcmludEVycm9yKGNvbnN0IFVSTCYgZmFp
bGluZ1VSTCwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKaW5kZXggNWFlODM3YzMx
YzVkOGE0ODU2MjAwOTM4NmY4MGVkYzAxOTU0YzY4OS4uYTgwZTc2MTliNWFkOWRkZGRlODU2ODIz
NzYyZWNlNGY1NTFiYWQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBSZXNv
dXJjZUVycm9yQmFzZV9oCiAjZGVmaW5lIFJlc291cmNlRXJyb3JCYXNlX2gKIAorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC00Myw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgZG9t
YWluKCkgY29uc3QgeyBsYXp5SW5pdCgpOyByZXR1cm4gbV9kb21haW47IH0KICAgICBpbnQgZXJy
b3JDb2RlKCkgY29uc3QgeyBsYXp5SW5pdCgpOyByZXR1cm4gbV9lcnJvckNvZGU7IH0KLSAgICBj
b25zdCBTdHJpbmcmIGZhaWxpbmdVUkwoKSBjb25zdCB7IGxhenlJbml0KCk7IHJldHVybiBtX2Zh
aWxpbmdVUkw7IH0KKyAgICBjb25zdCBVUkwmIGZhaWxpbmdVUkwoKSBjb25zdCB7IGxhenlJbml0
KCk7IHJldHVybiBtX2ZhaWxpbmdVUkw7IH0KICAgICBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERl
c2NyaXB0aW9uKCkgY29uc3QgeyBsYXp5SW5pdCgpOyByZXR1cm4gbV9sb2NhbGl6ZWREZXNjcmlw
dGlvbjsgfQogCiAgICAgdm9pZCBzZXRJc0NhbmNlbGxhdGlvbihib29sIGlzQ2FuY2VsbGF0aW9u
KSB7IG1faXNDYW5jZWxsYXRpb24gPSBpc0NhbmNlbGxhdGlvbjsgfQpAQCAtNjMsNyArNjQsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgewogICAgIH0KIAotICAgIFJlc291cmNlRXJyb3JCYXNlKGNvbnN0
IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkws
IGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCisgICAgUmVzb3VyY2VFcnJvckJh
c2UoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFVSTCYgZmFpbGlu
Z1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbikKICAgICAgICAgOiBtX2Rv
bWFpbihkb21haW4pCiAgICAgICAgICwgbV9mYWlsaW5nVVJMKGZhaWxpbmdVUkwpCiAgICAgICAg
ICwgbV9sb2NhbGl6ZWREZXNjcmlwdGlvbihsb2NhbGl6ZWREZXNjcmlwdGlvbikKQEAgLTg2LDcg
Kzg3LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25z
dCBSZXNvdXJjZUVycm9yJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgcmV0dXJuIHRydWU7IH0K
IAogICAgIFN0cmluZyBtX2RvbWFpbjsKLSAgICBTdHJpbmcgbV9mYWlsaW5nVVJMOworICAgIFVS
TCBtX2ZhaWxpbmdVUkw7CiAgICAgU3RyaW5nIG1fbG9jYWxpemVkRGVzY3JpcHRpb247CiAgICAg
aW50IG1fZXJyb3JDb2RlOwogICAgIGJvb2wgbV9pc051bGwgOiAxOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaAppbmRleCAxNzAzY2M5
MWY2OGIyYTVlNjRmODc5MjNjZTZmYmExZDI3ZGQyNDFkLi5iMzI4YmExNzE1MDQxMGY1M2Y3NzE2
NjkyMDg1MTRiNmE3NzQ2ZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgIH0KIAotICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBl
cnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6
ZWREZXNjcmlwdGlvbikKKyAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBp
bnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxp
emVkRGVzY3JpcHRpb24pCiAgICAgICAgIDogUmVzb3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJv
ckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uKQogICAgICAgICAsIG1fZGF0
YUlzVXBUb0RhdGUodHJ1ZSkKICAgICB7CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKIAogI2lm
IFVTRShDRk5FVFdPUkspCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIFJlc291cmNlRXJyb3IoY29u
c3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VS
TCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbiwgQ0ZEYXRhUmVmIGNlcnRpZmlj
YXRlKTsKKyAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JD
b2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3Jp
cHRpb24sIENGRGF0YVJlZiBjZXJ0aWZpY2F0ZSk7CiAgICAgUENDRVJUX0NPTlRFWFQgY2VydGlm
aWNhdGUoKSBjb25zdDsKICAgICB2b2lkIHNldENlcnRpZmljYXRlKENGRGF0YVJlZik7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VFcnJvckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VFcnJvckNGLmNwcAppbmRleCAxMzFmYmIwNDYxMTcwNmY2NGQ4NTBhMWM1MGUwNWUxNGEyYzZl
MTMzLi42MGJmYjM2NTkxZTA3YzFiZmJlYWI2YjFlM2I1NmZhYjk4NDc4NDczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0Yu
Y3BwCkBAIC00OSw3ICs0OSw3IEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZFcnJv
clJlZiBjZkVycm9yKQogfQogCiAjaWYgUExBVEZPUk0oV0lOKQotUmVzb3VyY2VFcnJvcjo6UmVz
b3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgU3Ry
aW5nJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uLCBDRkRh
dGFSZWYgY2VydGlmaWNhdGUpCitSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKGNvbnN0IFN0
cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0
IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24sIENGRGF0YVJlZiBjZXJ0aWZpY2F0ZSkKICAg
ICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2Nh
bGl6ZWREZXNjcmlwdGlvbikKICAgICAsIG1fZGF0YUlzVXBUb0RhdGUodHJ1ZSkKICAgICAsIG1f
Y2VydGlmaWNhdGUoY2VydGlmaWNhdGUpCkBAIC0xMDEsMTcgKzEwMSwxMiBAQCB2b2lkIFJlc291
cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogICAgIGlmICh1c2VySW5mby5nZXQoKSkgewog
ICAgICAgICBDRlN0cmluZ1JlZiBmYWlsaW5nVVJMU3RyaW5nID0gKENGU3RyaW5nUmVmKSBDRkRp
Y3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwgZmFpbGluZ1VSTFN0cmluZ0tleSk7CiAg
ICAgICAgIGlmIChmYWlsaW5nVVJMU3RyaW5nKQotICAgICAgICAgICAgbV9mYWlsaW5nVVJMID0g
U3RyaW5nKGZhaWxpbmdVUkxTdHJpbmcpOworICAgICAgICAgICAgbV9mYWlsaW5nVVJMID0gVVJM
KFVSTCgpLCBmYWlsaW5nVVJMU3RyaW5nKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBD
RlVSTFJlZiBmYWlsaW5nVVJMID0gKENGVVJMUmVmKSBDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2Vy
SW5mby5nZXQoKSwgZmFpbGluZ1VSTEtleSk7CiAgICAgICAgICAgICBpZiAoZmFpbGluZ1VSTCkg
ewotICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYWJzb2x1dGVVUkxSZWYgPSBh
ZG9wdENGKENGVVJMQ29weUFic29sdXRlVVJMKGZhaWxpbmdVUkwpKTsKLSAgICAgICAgICAgICAg
ICBpZiAoYWJzb2x1dGVVUkxSZWYuZ2V0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IENGVVJMR2V0U3RyaW5nIHJldHVybnMgYSBub3JtYWxpemVkIFVSTCB3aGljaCBpcyBkaWZm
ZXJlbnQgZnJvbSB3aGF0IGlzIGFjdHVhbGx5IHVzZWQgYnkgQ0ZOZXR3b3JrLgotICAgICAgICAg
ICAgICAgICAgICAvLyBXZSBzaG91bGQgdXNlIENGVVJMR2V0Qnl0ZXMgaW5zdGVhZC4KLSAgICAg
ICAgICAgICAgICAgICAgZmFpbGluZ1VSTFN0cmluZyA9IENGVVJMR2V0U3RyaW5nKGFic29sdXRl
VVJMUmVmLmdldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgbV9mYWlsaW5nVVJMID0gU3RyaW5n
KGZhaWxpbmdVUkxTdHJpbmcpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBp
ZiAoUmV0YWluUHRyPENGVVJMUmVmPiBhYnNvbHV0ZVVSTFJlZiA9IGFkb3B0Q0YoQ0ZVUkxDb3B5
QWJzb2x1dGVVUkwoZmFpbGluZ1VSTCkpKQorICAgICAgICAgICAgICAgICAgICBtX2ZhaWxpbmdV
UkwgPSBVUkwoYWJzb2x1dGVVUkxSZWYuZ2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgICAgIG1fbG9jYWxpemVkRGVzY3JpcHRpb24gPSAoQ0ZTdHJpbmdSZWYpIENGRGljdGlv
bmFyeUdldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrQ0ZFcnJvckxvY2FsaXplZERlc2NyaXB0aW9u
S2V5KTsKQEAgLTE1MiwxMiArMTQ3LDkgQEAgQ0ZFcnJvclJlZiBSZXNvdXJjZUVycm9yOjpjZkVy
cm9yKCkgY29uc3QKICAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdl
dCgpLCBrQ0ZFcnJvckxvY2FsaXplZERlc2NyaXB0aW9uS2V5LCBtX2xvY2FsaXplZERlc2NyaXB0
aW9uLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgICAgIGlmICghbV9mYWlsaW5nVVJM
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmYWlsaW5n
VVJMU3RyaW5nID0gbV9mYWlsaW5nVVJMLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgICAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZhaWxpbmdVUkxTdHJpbmcgPSBtX2ZhaWxpbmdVUkwuc3Ry
aW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KHVzZXJJbmZvLmdldCgpLCBmYWlsaW5nVVJMU3RyaW5nS2V5LCBmYWlsaW5nVVJMU3RyaW5nLmdl
dCgpKTsKLSAgICAgICAgICAgIC8vIEZJWEVNRTogV2Ugbm9ybWFsbHkgY3JlYXRlIGEgQ0ZVUkwg
ZnJvbSBhIHN0cmluZyBieSB1c2luZyBVUkw6OmNyZWF0ZUNGVVJMLCB3aGljaCBoYW5kbGVzCi0g
ICAgICAgICAgICAvLyBjYXNlcyBjb3JyZWN0bHkgdGhhdCBDRlVSTENyZWF0ZVdpdGhTdHJpbmcg
aGFuZGxlcyBpbmNvcnJlY3RseS4KLSAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJs
ID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhTdHJpbmcoMCwgZmFpbGluZ1VSTFN0cmluZy5nZXQo
KSwgMCkpOwotICAgICAgICAgICAgaWYgKHVybCkKKyAgICAgICAgICAgIGlmIChSZXRhaW5QdHI8
Q0ZVUkxSZWY+IHVybCA9IG1fZmFpbGluZ1VSTC5jcmVhdGVDRlVSTCgpKQogICAgICAgICAgICAg
ICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBmYWlsaW5nVVJMS2V5LCB1
cmwuZ2V0KCkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCmluZGV4IDQxYzE5OTE0YmRiYzZlYzYxODM4
YWI5YTViODM5YWVjODBkY2IzY2EuLmMzMWRkNDI1MWY2N2ExY2VmNmFiNDkyOTNlNTk0NWE3N2Vh
ZTJiNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlRXJyb3IuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0K
IAotICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUs
IGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlw
dGlvbikKKyAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JD
b2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3Jp
cHRpb24pCiAgICAgICAgIDogUmVzb3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJvckNvZGUsIGZh
aWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uKSwgbV9zc2xFcnJvcnMoMCkKICAgICB7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVz
b3VyY2VFcnJvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlRXJyb3JNYWMubW0KaW5kZXggZjdjODY0Y2UzYjUwOTlmZTAyZjE2OTY5YWNlMzk3ZjY4
MmU4M2RiYS4uNjQxODkzODAwMDYzMzMzYzcwMWRiNTNjYWMwMDFhYjU0OTlmNzA3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVy
cm9yTWFjLm1tCkBAIC0xODIsMTIgKzE4Miw5IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4g
Y3JlYXRlTlNFcnJvckZyb21SZXNvdXJjZUVycm9yQmFzZShjb25zdCBSZXNvdXJjZUVycm9yCiAg
ICAgICAgIFt1c2VySW5mby5nZXQoKSBzZXRWYWx1ZTpyZXNvdXJjZUVycm9yLmxvY2FsaXplZERl
c2NyaXB0aW9uKCkgZm9yS2V5Ok5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXldOwogCiAgICAgaWYg
KCFyZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgLy8gRklY
RU1FOiBXZSBub3JtYWxseSBjcmVhdGUgYW4gTlNVUkwgZnJvbSBhIHN0cmluZyBieSB1c2luZyBV
Ukw6OmNyZWF0ZU5TVVJMLCB3aGljaCBoYW5kbGVzCi0gICAgICAgIC8vIGNhc2VzIGNvcnJlY3Rs
eSB0aGF0IGluaXRXaXRoU3RyaW5nOiBoYW5kbGVzIGluY29ycmVjdGx5LgotICAgICAgICBSZXRh
aW5QdHI8TlNVUkw+IGNvY29hVVJMID0gYWRvcHROUyhbW05TVVJMIGFsbG9jXSBpbml0V2l0aFN0
cmluZzpyZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKV0pOwotICAgICAgICBbdXNlckluZm8uZ2V0
KCkgc2V0VmFsdWU6cmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkgZm9yS2V5OkAiTlNFcnJvckZh
aWxpbmdVUkxTdHJpbmdLZXkiXTsKLSAgICAgICAgaWYgKGNvY29hVVJMKQotICAgICAgICAgICAg
W3VzZXJJbmZvLmdldCgpIHNldFZhbHVlOmNvY29hVVJMLmdldCgpIGZvcktleTpAIk5TRXJyb3JG
YWlsaW5nVVJMS2V5Il07CisgICAgICAgIFt1c2VySW5mby5nZXQoKSBzZXRWYWx1ZTooTlNTdHJp
bmcgKilyZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKS5zdHJpbmcoKSBmb3JLZXk6QCJOU0Vycm9y
RmFpbGluZ1VSTFN0cmluZ0tleSJdOworICAgICAgICBpZiAoTlNVUkwgKmNvY29hVVJMID0gKE5T
VVJMICopcmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkpCisgICAgICAgICAgICBbdXNlckluZm8u
Z2V0KCkgc2V0VmFsdWU6Y29jb2FVUkwgZm9yS2V5OkAiTlNFcnJvckZhaWxpbmdVUkxLZXkiXTsK
ICAgICB9CiAKICAgICByZXR1cm4gYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9t
YWluOnJlc291cmNlRXJyb3IuZG9tYWluKCkgY29kZTpyZXNvdXJjZUVycm9yLmVycm9yQ29kZSgp
IHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXSk7CkBAIC0yNjYsMTAgKzI2MywxMCBAQCB2b2lkIFJl
c291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogICAgIG1fZG9tYWluID0gW21fcGxhdGZv
cm1FcnJvci5nZXQoKSBkb21haW5dOwogICAgIG1fZXJyb3JDb2RlID0gW21fcGxhdGZvcm1FcnJv
ci5nZXQoKSBjb2RlXTsKIAotICAgIE5TU3RyaW5nKiBmYWlsaW5nVVJMU3RyaW5nID0gW1ttX3Bs
YXRmb3JtRXJyb3IuZ2V0KCkgdXNlckluZm9dIHZhbHVlRm9yS2V5OkAiTlNFcnJvckZhaWxpbmdV
UkxTdHJpbmdLZXkiXTsKLSAgICBpZiAoIWZhaWxpbmdVUkxTdHJpbmcpCi0gICAgICAgIGZhaWxp
bmdVUkxTdHJpbmcgPSBbW1ttX3BsYXRmb3JtRXJyb3IuZ2V0KCkgdXNlckluZm9dIHZhbHVlRm9y
S2V5OkAiTlNFcnJvckZhaWxpbmdVUkxLZXkiXSBhYnNvbHV0ZVN0cmluZ107Ci0gICAgbV9mYWls
aW5nVVJMID0gZmFpbGluZ1VSTFN0cmluZzsgCisgICAgaWYgKE5TU3RyaW5nKiBmYWlsaW5nVVJM
U3RyaW5nID0gW1ttX3BsYXRmb3JtRXJyb3IuZ2V0KCkgdXNlckluZm9dIHZhbHVlRm9yS2V5OkAi
TlNFcnJvckZhaWxpbmdVUkxTdHJpbmdLZXkiXSkKKyAgICAgICAgbV9mYWlsaW5nVVJMID0gVVJM
KFVSTCgpLCBmYWlsaW5nVVJMU3RyaW5nKTsKKyAgICBlbHNlCisgICAgICAgIG1fZmFpbGluZ1VS
TCA9IFVSTCgoTlNVUkwgKilbW21fcGxhdGZvcm1FcnJvci5nZXQoKSB1c2VySW5mb10gdmFsdWVG
b3JLZXk6QCJOU0Vycm9yRmFpbGluZ1VSTEtleSJdKTsKICAgICAvLyBXb3JrYXJvdW5kIGZvciA8
cmRhcjovL3Byb2JsZW0vNjU1NDA2Nz4KICAgICBtX2xvY2FsaXplZERlc2NyaXB0aW9uID0gbV9m
YWlsaW5nVVJMOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5oCmluZGV4
IGU1MDI5N2E3ZmU5ZDRjODk0OTM4MTBkNTZiYjgwZjhhNzVmNGI4ZWIuLjQ0N2IwMDI3NDhhNjNm
NWFjNDA3NmFiM2Q5YzNmMmE1MjM1ZmI2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaApAQCAtNDEsNyArNDEsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yIDogcHVibGljIFJlc291cmNl
RXJyb3JCYXNlCiB7CiBwdWJsaWM6Ci0gICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRv
bWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJp
bmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQorICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5n
JiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3Ry
aW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbikKICAgICAgICAgOiBSZXNvdXJjZUVycm9yQmFzZShk
b21haW4sIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24pCiAgICAg
ICAgICwgbV90bHNFcnJvcnMoMCkKICAgICB7CkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVzb3VyY2VFcnJvciB0cmFuc3BvcnRFcnJvcihTb3VwUmVxdWVzdCosIGludCBz
dGF0dXNDb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvblBocmFzZSk7CiAgICAgc3RhdGljIFJlc291
cmNlRXJyb3IgZ2VuZXJpY0dFcnJvcihHRXJyb3IqLCBTb3VwUmVxdWVzdCopOwogICAgIHN0YXRp
YyBSZXNvdXJjZUVycm9yIHRsc0Vycm9yKFNvdXBSZXF1ZXN0KiwgdW5zaWduZWQgdGxzRXJyb3Jz
LCBHVGxzQ2VydGlmaWNhdGUqKTsKLSAgICBzdGF0aWMgUmVzb3VyY2VFcnJvciB0aW1lb3V0RXJy
b3IoY29uc3QgU3RyaW5nJiBmYWlsaW5nVVJMKTsKKyAgICBzdGF0aWMgUmVzb3VyY2VFcnJvciB0
aW1lb3V0RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKTsKICAgICBzdGF0aWMgUmVzb3VyY2VF
cnJvciBhdXRoZW50aWNhdGlvbkVycm9yKFNvdXBNZXNzYWdlKik7CiAKICAgICB1bnNpZ25lZCB0
bHNFcnJvcnMoKSBjb25zdCB7IHJldHVybiBtX3Rsc0Vycm9yczsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5j
cHAKaW5kZXggYjI1YjVhMGI4NjUxZTFhMGNmNWY2MTk2MGQ1N2EyMjRhYTUzNTgzYi4uYWQ2Yjhl
NzA4NjczYWViOWE1NjU4ZTRjY2I4YzM1MTI5OWVmZWU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3Bw
CkBAIC0zNSwxNCArMzUsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgU3Ry
aW5nIGZhaWxpbmdVUkkoU291cFVSSSogc291cFVSSSkKK3N0YXRpYyBVUkwgZmFpbGluZ1VSSShT
b3VwVVJJKiBzb3VwVVJJKQogewogICAgIEFTU0VSVChzb3VwVVJJKTsKLSAgICBHVW5pcXVlUHRy
PGNoYXI+IHVyaShzb3VwX3VyaV90b19zdHJpbmcoc291cFVSSSwgRkFMU0UpKTsKLSAgICByZXR1
cm4gdXJpLmdldCgpOworICAgIHJldHVybiBVUkwoc291cFVSSSk7CiB9CiAKLXN0YXRpYyBTdHJp
bmcgZmFpbGluZ1VSSShTb3VwUmVxdWVzdCogcmVxdWVzdCkKK3N0YXRpYyBVUkwgZmFpbGluZ1VS
SShTb3VwUmVxdWVzdCogcmVxdWVzdCkKIHsKICAgICBBU1NFUlQocmVxdWVzdCk7CiAgICAgcmV0
dXJuIGZhaWxpbmdVUkkoc291cF9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkpOwpAQCAtODUsNyAr
ODQsNyBAQCBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OnRsc0Vycm9yKFNvdXBSZXF1ZXN0
KiByZXF1ZXN0LCB1bnNpZ25lZCB0bHNFcnJvcnMsCiAgICAgcmV0dXJuIHJlc291cmNlRXJyb3I7
CiB9CiAKLVJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6dGltZW91dEVycm9yKGNvbnN0IFN0
cmluZyYgZmFpbGluZ1VSTCkKK1Jlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6dGltZW91dEVy
cm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
cHJvYmFibHkgZWl0aGVyIGJlIGludGVncmF0ZWQgaW50byBFcnJvcnMoR3RrL0VGTCkuaCBvciB0
aGUKICAgICAvLyBuZXR3b3JraW5nIGVycm9ycyBmcm9tIHRob3NlIGZpbGVzIHNob3VsZCBiZSBt
b3ZlZCBoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAppbmRleCA5NTY4OTdiNWM5ZGNmZGEzZWRk
MTMyZjRmMTdlMjM0ZGVmMjdkM2RiLi5iNjdjOTBkZDliNGMyOTdjMDgyZTEyMDU4YTE4MTk3MDJi
OTdhMTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApAQCAtMTA1MSw3ICsxMDUxLDcgQEAgUmVm
UHRyPFJlc291cmNlSGFuZGxlPiBSZXNvdXJjZUhhbmRsZTo6cmVsZWFzZUZvckRvd25sb2FkKFJl
c291cmNlSGFuZGxlQ2xpZW50KgogCiB2b2lkIFJlc291cmNlSGFuZGxlOjp0aW1lb3V0RmlyZWQo
KQogewotICAgIGNsaWVudCgpLT5kaWRGYWlsKHRoaXMsIFJlc291cmNlRXJyb3I6OnRpbWVvdXRF
cnJvcihmaXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKSkpOworICAgIGNsaWVudCgpLT5kaWRG
YWlsKHRoaXMsIFJlc291cmNlRXJyb3I6OnRpbWVvdXRFcnJvcihmaXJzdFJlcXVlc3QoKS51cmwo
KSkpOwogICAgIGNhbmNlbCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cAppbmRleCA0YzQ4Yzk0ZjhiMjkzMzZiNDQyNDExMmQ2YjJlY2JiOTYwODNmYzVlLi41NzlmMWNj
Zjg1NWYxMDkyMzI5ZTI2MGZkNTQzMTI0MzViYWEyNjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAKQEAgLTEwNzcsOCArMTA3NywxMCBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0
OjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIH0KIAogICAgIC8vIE5l
dHdvcmsgZmFpbHVyZXMgYXJlIGFscmVhZHkgcmVwb3J0ZWQgdG8gV2ViIEluc3BlY3RvciBieSBS
ZXNvdXJjZUxvYWRlci4KLSAgICBpZiAoZXJyb3IuZG9tYWluKCkgPT0gZXJyb3JEb21haW5XZWJL
aXRJbnRlcm5hbCkKLSAgICAgICAgbG9nQ29uc29sZUVycm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgIlhNTEh0dHBSZXF1ZXN0IGNhbm5vdCBsb2FkICIgKyBlcnJvci5mYWlsaW5nVVJMKCkg
KyAiLiAiICsgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7CisgICAgaWYgKGVycm9yLmRv
bWFpbigpID09IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwpIHsKKyAgICAgICAgU3RyaW5nIG1l
c3NhZ2UgPSBtYWtlU3RyaW5nKCJYTUxIdHRwUmVxdWVzdCBjYW5ub3QgbG9hZCAiLCBlcnJvci5m
YWlsaW5nVVJMKCkuc3RyaW5nKCksICIuICIsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkp
OworICAgICAgICBsb2dDb25zb2xlRXJyb3Ioc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtZXNz
YWdlKTsKKyAgICB9CiAKICAgICBtX2V4Y2VwdGlvbkNvZGUgPSBYTUxIdHRwUmVxdWVzdEV4Y2Vw
dGlvbjo6TkVUV09SS19FUlI7CiAgICAgbmV0d29ya0Vycm9yKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
aW5kZXggN2IyNDQ1Nzc3Y2IyMDU2ZjZjZmVmZTA1N2U0ZWY1ODk3MDA3YWZlNi4uYjlkYzUxMWMz
MjI0OThjYjNjMmUzZGFjNDA4ZjNjZWJhOGFlMWVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAt
ODUxLDEyICs4NTEsMTIgQEAgUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2Fu
Y2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXMKIHsKICAgICAvLyBGSVhN
RTogTmVlZCBDaGlja2VuQ2F0IHRvIGluY2x1ZGUgQ0ZOZXR3b3JrL0NGVVJMRXJyb3IuaCB0byBn
ZXQgdGhlc2UgdmFsdWVzCiAgICAgLy8gQWx0ZXJuYXRpdmVseSwgd2UgY291bGQgY3JlYXRlIG91
ciBvd24gZXJyb3IgZG9tYWluL2NvZGVzLgotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0cmlu
ZyhXZWJVUkxFcnJvckRvbWFpbiksIC05OTksIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIFN0cmlu
ZygiQ2FuY2VsbGVkIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0cmluZyhXZWJVUkxF
cnJvckRvbWFpbiksIC05OTksIHJlcXVlc3QudXJsKCksIFN0cmluZygiQ2FuY2VsbGVkIikpOwog
fQogCiBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpibG9ja2VkRXJyb3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KFN0cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIFdlYktpdEVycm9yQ2Fubm90VXNlUmVzdHJpY3Rl
ZFBvcnQsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIFdFQl9VSV9TVFJJTkcoIk5vdCBhbGxvd2Vk
IHRvIHVzZSByZXN0cmljdGVkIG5ldHdvcmsgcG9ydCIsICJXZWJLaXRFcnJvckNhbm5vdFVzZVJl
c3RyaWN0ZWRQb3J0IGRlc2NyaXB0aW9uIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0
cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIFdlYktpdEVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBv
cnQsIHJlcXVlc3QudXJsKCksIFdFQl9VSV9TVFJJTkcoIk5vdCBhbGxvd2VkIHRvIHVzZSByZXN0
cmljdGVkIG5ldHdvcmsgcG9ydCIsICJXZWJLaXRFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0
IGRlc2NyaXB0aW9uIikpOwogfQogCiBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKQEAgLTg2NiwyNyArODY2LDI3IEBAIFJlc291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSCiAKIFJl
c291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbm5vdFNob3dVUkxFcnJvcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3Io
U3RyaW5nKFdlYktpdEVycm9yRG9tYWluKSwgV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMLCByZXF1
ZXN0LnVybCgpLnN0cmluZygpLCBXRUJfVUlfU1RSSU5HKCJUaGUgVVJMIGNhblx4RTJceDgwXHg5
OXQgYmUgc2hvd24iLCAiV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMIGRlc2NyaXB0aW9uIikpOwor
ICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIFdlYktp
dEVycm9yQ2Fubm90U2hvd1VSTCwgcmVxdWVzdC51cmwoKSwgV0VCX1VJX1NUUklORygiVGhlIFVS
TCBjYW5ceEUyXHg4MFx4OTl0IGJlIHNob3duIiwgIldlYktpdEVycm9yQ2Fubm90U2hvd1VSTCBk
ZXNjcmlwdGlvbiIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVudDo6
aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nKFdlYktpdEVycm9yRG9t
YWluKSwgV2ViS2l0RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCByZXF1
ZXN0LnVybCgpLnN0cmluZygpLCBXRUJfVUlfU1RSSU5HKCJGcmFtZSBsb2FkIGludGVycnVwdGVk
IiwgIldlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSBkZXNjcmlw
dGlvbiIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21h
aW4pLCBXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsIHJlcXVl
c3QudXJsKCksIFdFQl9VSV9TVFJJTkcoIkZyYW1lIGxvYWQgaW50ZXJydXB0ZWQiLCAiV2ViS2l0
RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlIGRlc2NyaXB0aW9uIikpOwog
fQogCiBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5ub3RTaG93TUlNRVR5
cGVFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihTdHJpbmcoKSwgV2ViS2l0RXJyb3JDYW5ub3RTaG93TUlNRVR5cGUsIHJl
c3BvbnNlLnVybCgpLnN0cmluZygpLCBXRUJfVUlfU1RSSU5HKCJDb250ZW50IHdpdGggc3BlY2lm
aWVkIE1JTUUgdHlwZSBjYW5ceEUyXHg4MFx4OTl0IGJlIHNob3duIiwgIldlYktpdEVycm9yQ2Fu
bm90U2hvd01JTUVUeXBlIGRlc2NyaXB0aW9uIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KFN0cmluZygpLCBXZWJLaXRFcnJvckNhbm5vdFNob3dNSU1FVHlwZSwgcmVzcG9uc2UudXJsKCks
IFdFQl9VSV9TVFJJTkcoIkNvbnRlbnQgd2l0aCBzcGVjaWZpZWQgTUlNRSB0eXBlIGNhblx4RTJc
eDgwXHg5OXQgYmUgc2hvd24iLCAiV2ViS2l0RXJyb3JDYW5ub3RTaG93TUlNRVR5cGUgZGVzY3Jp
cHRpb24iKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbGVE
b2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAg
ICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViVVJMRXJyb3JEb21haW4pLCAtMTEwMCwg
cmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIFN0cmluZygiRmlsZSBkb2VzIG5vdCBleGlzdC4iKSk7
CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nKFdlYlVSTEVycm9yRG9tYWluKSwgLTEx
MDAsIHJlc3BvbnNlLnVybCgpLCBTdHJpbmcoIkZpbGUgZG9lcyBub3QgZXhpc3QuIikpOwogfQog
CiBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwbHVnaW5XaWxsSGFuZGxlTG9h
ZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIHJldHVybiBS
ZXNvdXJjZUVycm9yKFN0cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIFdlYktpdEVycm9yUGx1Z0lu
V2lsbEhhbmRsZUxvYWQsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBXRUJfVUlfU1RSSU5HKCJQ
bHVnLWluIGhhbmRsZWQgbG9hZCIsICJXZWJLaXRFcnJvclBsdWdJbldpbGxIYW5kbGVMb2FkIGRl
c2NyaXB0aW9uIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0cmluZyhXZWJLaXRFcnJv
ckRvbWFpbiksIFdlYktpdEVycm9yUGx1Z0luV2lsbEhhbmRsZUxvYWQsIHJlc3BvbnNlLnVybCgp
LCBXRUJfVUlfU1RSSU5HKCJQbHVnLWluIGhhbmRsZWQgbG9hZCIsICJXZWJLaXRFcnJvclBsdWdJ
bldpbGxIYW5kbGVMb2FkIGRlc2NyaXB0aW9uIikpOwogfQogCiBib29sIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpzaG91bGRGYWxsQmFjayhjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTEx
NjYsNyArMTE2Niw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFp
bFRvU3RhcnRQbHVnaW4oY29uc3QgUGx1Z2luVmlldyogcGx1Z2luCiAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJy
b3IoU3RyaW5nKFdlYktpdEVycm9yRG9tYWluKSwgZXJyb3JDb2RlLCBwbHVnaW5WaWV3LT51cmwo
KS5zdHJpbmcoKSwgU3RyaW5nKCkpOworICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihT
dHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBlcnJvckNvZGUsIHBsdWdpblZpZXctPnVybCgpLCBT
dHJpbmcoKSk7CiAgICAgQ09NUHRyPElXZWJFcnJvcj4gZXJyb3IoQWRvcHRDT00sIFdlYkVycm9y
OjpjcmVhdGVJbnN0YW5jZShyZXNvdXJjZUVycm9yLCB1c2VySW5mb0JhZy5nZXQoKSkpOwogICAg
ICAKICAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZS0+cGx1Z0luRmFpbGVkV2l0aEVycm9yKHdlYlZp
ZXcsIGVycm9yLmdldCgpLCBnZXRXZWJEYXRhU291cmNlKGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVu
dExvYWRlcigpKSk7CkBAIC0xMjQ0LDcgKzEyNDQsNyBAQCBQYXNzUmVmUHRyPFdpZGdldD4gV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYg
cAogCiAgICAgQ09NUHRyPENGRGljdGlvbmFyeVByb3BlcnR5QmFnPiB1c2VySW5mb0JhZyA9IENG
RGljdGlvbmFyeVByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZSgpOwogCi0gICAgUmVzb3VyY2VF
cnJvciByZXNvdXJjZUVycm9yKFN0cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIFdlYktpdEVycm9y
SmF2YVVuYXZhaWxhYmxlLCBTdHJpbmcoKSwgV0VCX1VJX1NUUklORygiSmF2YSBpcyB1bmF2YWls
YWJsZSIsICJXZWJLaXRFcnJvckphdmFVbmF2YWlsYWJsZSBkZXNjcmlwdGlvbiIpKTsKKyAgICBS
ZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IoU3RyaW5nKFdlYktpdEVycm9yRG9tYWluKSwgV2Vi
S2l0RXJyb3JKYXZhVW5hdmFpbGFibGUsIFVSTCgpLCBXRUJfVUlfU1RSSU5HKCJKYXZhIGlzIHVu
YXZhaWxhYmxlIiwgIldlYktpdEVycm9ySmF2YVVuYXZhaWxhYmxlIGRlc2NyaXB0aW9uIikpOwog
ICAgIENPTVB0cjxJV2ViRXJyb3I+IGVycm9yKEFkb3B0Q09NLCBXZWJFcnJvcjo6Y3JlYXRlSW5z
dGFuY2UocmVzb3VyY2VFcnJvciwgdXNlckluZm9CYWcuZ2V0KCkpKTsKIAogICAgIEZyYW1lKiBj
b3JlRnJhbWUgPSBjb3JlKG1fd2ViRnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZENG
TmV0LmNwcAppbmRleCA0NjE1ZDc3ODQ5MGI3ODBhMTdiNTUxYjNmNWExNGYzN2VjOTYzMjZmLi4x
NWYxMTk3Nzg3OGI5NTBiN2JlNDBmN2NjYWIzYjI1Y2M5M2VhYTM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJEb3dubG9hZENGTmV0LmNwcApAQCAtMzA3LDcgKzMwNyw3IEBAIEhSRVNVTFQgV2ViRG93
bmxvYWQ6OmNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKF9Jbl9vcHRfIElXZWJVUkxBdXRo
ZW50aWNhdGlvCiAgICAgfQogCiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgYSBVUkwgb3IgZGVz
Y3JpcHRpb24gZm9yIHRoaXMgZXJyb3IgY29kZT8KLSAgICBSZXNvdXJjZUVycm9yIGVycm9yKFN0
cmluZyhXZWJVUkxFcnJvckRvbWFpbiksIFdlYlVSTEVycm9yVXNlckNhbmNlbGxlZEF1dGhlbnRp
Y2F0aW9uLCAiIiwgIiIpOworICAgIFJlc291cmNlRXJyb3IgZXJyb3IoU3RyaW5nKFdlYlVSTEVy
cm9yRG9tYWluKSwgV2ViVVJMRXJyb3JVc2VyQ2FuY2VsbGVkQXV0aGVudGljYXRpb24sIFVSTCgp
LCAiIik7CiAgICAgQ09NUHRyPFdlYkVycm9yPiB3ZWJFcnJvcihBZG9wdENPTSwgV2ViRXJyb3I6
OmNyZWF0ZUluc3RhbmNlKGVycm9yKSk7CiAgICAgbV9kZWxlZ2F0ZS0+ZGlkRmFpbFdpdGhFcnJv
cih0aGlzLCB3ZWJFcnJvci5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkVycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkVycm9yLmNwcAppbmRleCBlZjhm
YWEzYWE1NjE3ZjFjMTRkNGY4ZTdhNDFlMjczMzMyNGZjYmQwLi4xNzBjNmM4ZWZlNTkwYjFjZTBl
ZWU3OTYyZjIzMTBkY2Q1MzJiNDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJF
cnJvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRXJyb3IuY3BwCkBAIC0xMDcsNyAr
MTA3LDcgQEAgVUxPTkcgV2ViRXJyb3I6OlJlbGVhc2UoKQogCiBIUkVTVUxUIFdlYkVycm9yOjpp
bml0KF9Jbl8gQlNUUiBkb21haW4sIGludCBjb2RlLCBfSW5fIEJTVFIgdXJsKQogewotICAgIG1f
ZXJyb3IgPSBSZXNvdXJjZUVycm9yKFN0cmluZyhkb21haW4sIFN5c1N0cmluZ0xlbihkb21haW4p
KSwgY29kZSwgU3RyaW5nKHVybCwgU3lzU3RyaW5nTGVuKHVybCkpLCBTdHJpbmcoKSk7CisgICAg
bV9lcnJvciA9IFJlc291cmNlRXJyb3IoU3RyaW5nKGRvbWFpbiwgU3lzU3RyaW5nTGVuKGRvbWFp
bikpLCBjb2RlLCBVUkwoVVJMKCksIFN0cmluZyh1cmwsIFN5c1N0cmluZ0xlbih1cmwpKSksIFN0
cmluZygpKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCmluZGV4IDY3
MDE2NGY2ODkzYjI1M2YwNzhmYTI5YzNhMTQ4NDE4OTQzMDI5MDguLjIyMzMyNDVlODA1M2JiY2U1
YTRlMWU2Nzc3YjM4MjNkNDc4ZDFkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCkBAIC0yMTksNyArMjE5
LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+OjpkZWNvZGVQbGF0Zm9ybURh
dGEoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZXJy
b3JDb2RlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3RyaW5nIGZhaWxpbmdVUkw7
CisgICAgVVJMIGZhaWxpbmdVUkw7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmYWlsaW5nVVJM
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCmluZGV4IDhj
OTE3NDlkMWVmNmFmNDBhYTEyNDAwNmE0MzkzNjc4NDc5Yzc4MWQuLjY0MTUwM2FmNWIyYzM3NTNm
YWY4MDEzZGM0NzMzNDA4Y2U0NjZjNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCkBAIC0yMzks
NyArMjM5LDcgQEAgdm9pZCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvcihX
ZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0LCBHRXIKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgcHJpdi0+c3RyZWFtID0gbnVsbHB0cjsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHJl
c291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIHRvV2ViQ29yZUVy
cm9yKGVycm9yLT5jb2RlKSwgcHJpdi0+dXJpLmRhdGEoKSwgU3RyaW5nOjpmcm9tVVRGOChlcnJv
ci0+bWVzc2FnZSkpOworICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgdG9XZWJDb3JlRXJyb3IoZXJyb3ItPmNv
ZGUpLCBVUkwocHJpdi0+c291cFVSSS5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1l
c3NhZ2UpKTsKICAgICBwcml2LT53ZWJSZXF1ZXN0TWFuYWdlci0+ZGlkRmFpbFdpdGhFcnJvcihw
cml2LT5yZXF1ZXN0SUQsIHJlc291cmNlRXJyb3IpOwogICAgIHdlYmtpdFdlYkNvbnRleHREaWRG
aW5pc2hMb2FkaW5nQ3VzdG9tUHJvdG9jb2wocHJpdi0+d2ViQ29udGV4dCwgcHJpdi0+cmVxdWVz
dElEKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267892</attachid>
            <date>2015-12-23 22:49:35 -0800</date>
            <delta_ts>2015-12-24 07:52:55 -0800</delta_ts>
            <desc>Patch v6</desc>
            <filename>bug-146391-20151223224859.patch</filename>
            <type>text/plain</type>
            <size>54037</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0Mzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTk5Y2NlMDBmMWMxMTk3
NmM4MWZmZDBkY2EwOGU1NGNkMjYwOTI5NS4uYWVjYjBlNGM5MTg1NjM2ZDdmNjQ0NjZjMGZkMzMx
ZTMzMWQ3MGYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAxNS0xMi0yMyAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlRXJyb3Ig
c2hvdWxkIHN0b3JlIGZhaWxpbmdVUkwgYXMgVVJMIGluc3RlYWQgb2YgU3RyaW5nIHRvIGF2b2lk
IHJlcGFyc2luZyBhbmQgdG8gYWRkcmVzcyBGSVhNRSBjb21tZW50cyBpbiBSZXNvdXJjZUVycm9y
Q0YuY3BwIGFuZCBSZXNvdXJjZUVycm9yTWFjLm1tCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9y
Zy9iLzE0NjM5MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlU2ltcGxl
Q3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxpZ2h0RmFpbHVyZSk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRGYWlsdXJlKToKKyAgICAgICAgLSBTd2l0Y2gg
dHlwZSBvZiAndXJsJyBhcmd1bWVudCBvZiBwcmVmbGlnaHRGYWlsdXJlKCkgZnJvbQorICAgICAg
ICAgIFN0cmluZyB0byBVUkwuCisgICAgICAgIC0gVXBkYXRlIGZvciB0eXBlIGNoYW5nZSBvZiAn
ZmFpbGluZ1VSTCcgYXJndW1lbnQgdG8KKyAgICAgICAgICBSZXNvdXJjZUVycm9yKCkuCisKKyAg
ICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToK
KyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXI6OmxvYWREYXRhVVJMKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpjYW5jZWwpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgLSBVcGRhdGUgZm9yIHR5cGUgY2hh
bmdlIG9mICdmYWlsaW5nVVJMJyBhcmd1bWVudCB0bworICAgICAgICAgIFJlc291cmNlRXJyb3Io
KS4KKworICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRTb3VyY2U6OmRpZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2spOgorICAgICAgICAtIENvbnZl
cnQgZmFpbGluZ1VSTCgpIHRvIFN0cmluZyBleHBsaWNpdGx5LgorCisgICAgICAgICogcGxhdGZv
cm0vZWZsL0Vycm9yc0VmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5jZWxsZWRFcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpibG9ja2VkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6Ymxv
Y2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93
VVJMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VF
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93TUlNRVR5cGVFcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjpmaWxlRG9lc05vdEV4aXN0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpkb3dubG9hZENh
bmNlbGxlZEJ5VXNlckVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmRvd25sb2FkRGVzdGluYXRp
b25FcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjYW5jZWxsZWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpibG9ja2VkRXJy
b3IpOgorICAgICAgICAoV2ViQ29yZTo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5u
b3RTaG93TUlNRVR5cGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpmaWxlRG9lc05vdEV4aXN0
RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpkb3dubG9hZENhbmNlbGxlZEJ5VXNlckVycm9yKToKKyAgICAgICAg
KFdlYkNvcmU6OmRvd25sb2FkRGVzdGluYXRpb25FcnJvcik6CisgICAgICAgIC0gVXBkYXRlIGZv
ciB0eXBlIGNoYW5nZSBvZiAnZmFpbGluZ1VSTCcgYXJndW1lbnQgdG8KKyAgICAgICAgICBSZXNv
dXJjZUVycm9yKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JC
YXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yQmFzZTo6ZmFpbGluZ1VSTCk6
CisgICAgICAgIC0gQ2hhbmdlIHJldHVybiB0eXBlIGZyb20gU3RyaW5nIHRvIFVSTC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjpSZXNvdXJjZUVycm9yQmFzZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgLSBDaGFuZ2UgdHlw
ZSBvZiAnZmFpbGluZ1VSTCcgZnJvbSBTdHJpbmcgdG8gVVJMLgorCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcik6CisgICAgICAgIC0gQ2hhbmdlIHR5cGUgb2YgJ2Zh
aWxpbmdVUkwnIGZyb20gU3RyaW5nIHRvIFVSTC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
RXJyb3I6OnBsYXRmb3JtTGF6eUluaXQpOgorICAgICAgICAtIENsZWFuIHVwIGNvZGUgYW5kIGFk
ZHJlc3MgRklYTUUgYnkgcGFyc2luZyBDRlVSTFJlZiB1c2luZworICAgICAgICAgIFVSTCgpIGNv
bnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6Y2ZFcnJvcik6Cisg
ICAgICAgIC0gQ2xlYW4gdXAgY29kZSBhbmQgYWRkcmVzcyBGSVhNRSBhZnRlciBzd2l0Y2hpbmcg
dHlwZSBvZgorICAgICAgICAgIG1fZmFpbGluZ1VSTC4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgLSBDaGFuZ2UgdHlwZSBvZiAnZmFpbGluZ1VS
TCcgZnJvbSBTdHJpbmcgdG8gVVJMLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU5TRXJyb3JGcm9t
UmVzb3VyY2VFcnJvckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6cGxh
dGZvcm1MYXp5SW5pdCk6CisgICAgICAgIC0gQ2xlYW4gdXAgY29kZSBhbmQgYWRkcmVzcyBGSVhN
RSBhZnRlciBzd2l0Y2hpbmcgdHlwZSBvZgorICAgICAgICAgIG1fZmFpbGluZ1VSTC4KKworICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlRXJyb3I6OnRpbWVvdXRFcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZhaWxpbmdV
UkkpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6dGltZW91dEVycm9yKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp0aW1lb3V0RmlyZWQpOgorICAgICAgICAt
IENoYW5nZSB0eXBlIG9mICdmYWlsaW5nVVJMJyBmcm9tIFN0cmluZyB0byBVUkwuCisKKyAgICAg
ICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OmRpZEZhaWwpOgorICAgICAgICAtIENvbnZlcnQgZmFpbGluZ1VSTCgpIHRvIFN0cmlu
ZyBleHBsaWNpdGx5LgorICAgICAgICAtIEFsc28gc3dpdGNoIHRvIHVzaW5nIG1ha2VTdHJpbmco
KS4KKwogMjAxNS0xMi0yMiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgVHJ5IHRvIGZpeCB0aGUgaU9TIGJ1aWxkIGFmdGVyIHIxOTQzNzgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpp
bmRleCA4MjQxZTFmNmY1NzBmYTU5ZTg2ZWI0ZmI2MDY1MDI4Y2JjMTU3OTI0Li4zNDMyYzJkOWI3
OGRjN2NiOTkzNWRiMTNhYWI2NGFhNmE5ODhlNDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMTUtMTItMjMgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXNvdXJjZUVycm9yIHNob3VsZCBzdG9yZSBmYWlsaW5nVVJMIGFzIFVSTCBp
bnN0ZWFkIG9mIFN0cmluZyB0byBhdm9pZCByZXBhcnNpbmcgYW5kIHRvIGFkZHJlc3MgRklYTUUg
Y29tbWVudHMgaW4gUmVzb3VyY2VFcnJvckNGLmNwcCBhbmQgUmVzb3VyY2VFcnJvck1hYy5tbQor
ICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8xNDYzOTE+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsbGVk
RXJyb3IpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmJsb2NrZWRFcnJvcik6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAgICAg
ICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjppbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9y
KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5ub3RTaG93TUlNRVR5cGVFcnJv
cik6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmlsZURvZXNOb3RFeGlzdEVycm9y
KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwbHVnaW5XaWxsSGFuZGxlTG9hZEVy
cm9yKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0
YXJ0UGx1Z2luKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBw
bGV0V2lkZ2V0KToKKyAgICAgICAgKiBXZWJEb3dubG9hZENGTmV0LmNwcDoKKyAgICAgICAgKFdl
YkRvd25sb2FkOjpjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogV2Vi
RXJyb3IuY3BwOgorICAgICAgICAoV2ViRXJyb3I6OmluaXQpOgorICAgICAgICAtIFVwZGF0ZSBm
b3IgdHlwZSBjaGFuZ2Ugb2YgJ2ZhaWxpbmdVUkwnIGFyZ3VtZW50IHRvCisgICAgICAgICAgUmVz
b3VyY2VFcnJvcigpLgorCiAyMDE1LTEyLTIwICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBzZXRUb29sYmFySGVpZ2h0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggMDQzOWIwMmVjZTg2ZDczZjZiYzkxYTExM2U4M2IzZWM1ODYxZWVlYy4uZDRiYmU3N2RkNjYy
NjgxN2ZlMjNlNWM3MjJkYjRiYzVmYzM3ZjcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBA
CisyMDE1LTEyLTIzICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVzb3VyY2VFcnJvciBzaG91bGQgc3RvcmUgZmFpbGluZ1VSTCBhcyBVUkwgaW5zdGVhZCBv
ZiBTdHJpbmcgdG8gYXZvaWQgcmVwYXJzaW5nIGFuZCB0byBhZGRyZXNzIEZJWE1FIGNvbW1lbnRz
IGluIFJlc291cmNlRXJyb3JDRi5jcHAgYW5kIFJlc291cmNlRXJyb3JNYWMubW0KKyAgICAgICAg
PGh0dHA6Ly93ZWJraXQub3JnL2IvMTQ2MzkxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3du
bG9hZFNvdXBFcnJvcnNFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpwbGF0Zm9ybURvd25sb2Fk
TmV0d29ya0Vycm9yKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvZ3RrL0Rv
d25sb2FkU291cEVycm9yc0d0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBsYXRmb3JtRG93bmxv
YWROZXR3b3JrRXJyb3IpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9zb3Vw
L0Rvd25sb2FkU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9zb3Vw
L0Rvd25sb2FkU291cEVycm9ycy5oOgorICAgICAgICAqIFNoYXJlZC9zb3VwL1dlYkNvcmVBcmd1
bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNl
RXJyb3I+OjplbmNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlc291cmNlRXJyb3I+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwOgorICAgICAgICAod2Via2l0X3Vy
aV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3IpOgorICAgICAgICAtIFVwZGF0ZSBmb3IgdHlw
ZSBjaGFuZ2Ugb2YgJ2ZhaWxpbmdVUkwnIGFyZ3VtZW50IHRvCisgICAgICAgICAgUmVzb3VyY2VF
cnJvcigpLgorCiAyMDE1LTEyLTIyICBIdW5zZW9wIEplb25nICA8aHM4NS5qZW9uZ0BzYW1zdW5n
LmNvbT4KIAogICAgICAgICBbRUZMXSBld2tfYXBwbGljYXRpb25fY2FjaGVfbWFuYWdlciB0ZXN0
IGZhaWxlZCBhZnRlciByMTkzODEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGQ1NDA2MDUyYjVlNzljZmUwZTBmMDRhMTFi
MmFmMWQ1N2QyM2M5NmUuLjFmNjE0ZWIzMTc5Nzk1OGZlOGE1MmU4NGRlZGYwNmQ1YWQ1ZDgxZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6RG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyKERvY3VtZW50JiBkb2N1bWVudCwgVGhyZWFkYWJsCiAgICAgfQog
CiAgICAgaWYgKG1fb3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgPT0gRGVueUNyb3Nz
T3JpZ2luUmVxdWVzdHMpIHsKLSAgICAgICAgbV9jbGllbnQtPmRpZEZhaWwoUmVzb3VyY2VFcnJv
cihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCAi
Q3Jvc3Mgb3JpZ2luIHJlcXVlc3RzIGFyZSBub3Qgc3VwcG9ydGVkLiIpKTsKKyAgICAgICAgbV9j
bGllbnQtPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAw
LCByZXF1ZXN0LnVybCgpLCAiQ3Jvc3Mgb3JpZ2luIHJlcXVlc3RzIGFyZSBub3Qgc3VwcG9ydGVk
LiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQg
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlU2ltcGxlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1
ZXN0KGNvbnN0IFJlc291cmNlCiAKICAgICAvLyBDcm9zcy1vcmlnaW4gcmVxdWVzdHMgYXJlIG9u
bHkgYWxsb3dlZCBmb3IgSFRUUCBhbmQgcmVnaXN0ZXJlZCBzY2hlbWVzLiBXZSB3b3VsZCBjYXRj
aCB0aGlzIHdoZW4gY2hlY2tpbmcgcmVzcG9uc2UgaGVhZGVycyBsYXRlciwgYnV0IHRoZXJlIGlz
IG5vIHJlYXNvbiB0byBzZW5kIGEgcmVxdWVzdCB0aGF0J3MgZ3VhcmFudGVlZCB0byBiZSBkZW5p
ZWQuCiAgICAgaWYgKCFTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNF
bmFibGVkKHJlcXVlc3QudXJsKCkucHJvdG9jb2woKSkpIHsKLSAgICAgICAgbV9jbGllbnQtPmRp
ZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2soUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdElu
dGVybmFsLCAwLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCAiQ3Jvc3Mgb3JpZ2luIHJlcXVlc3Rz
IGFyZSBvbmx5IHN1cHBvcnRlZCBmb3IgSFRUUC4iKSk7CisgICAgICAgIG1fY2xpZW50LT5kaWRG
YWlsQWNjZXNzQ29udHJvbENoZWNrKFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRl
cm5hbCwgMCwgcmVxdWVzdC51cmwoKSwgIkNyb3NzIG9yaWdpbiByZXF1ZXN0cyBhcmUgb25seSBz
dXBwb3J0ZWQgZm9yIEhUVFAuIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNjEs
NyArMjYxLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnMKICAgICB9IGVsc2UgewogICAgICAg
ICBpZiAoIW1fc2FtZU9yaWdpblJlcXVlc3QgJiYgbV9vcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVz
dFBvbGljeSA9PSBVc2VBY2Nlc3NDb250cm9sKSB7CiAgICAgICAgICAgICBpZiAoIXBhc3Nlc0Fj
Y2Vzc0NvbnRyb2xDaGVjayhyZXNwb25zZSwgbV9vcHRpb25zLmFsbG93Q3JlZGVudGlhbHMoKSwg
c2VjdXJpdHlPcmlnaW4oKSwgYWNjZXNzQ29udHJvbEVycm9yRGVzY3JpcHRpb24pKSB7Ci0gICAg
ICAgICAgICAgICAgbV9jbGllbnQtPmRpZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2soUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKS5zdHJpbmco
KSwgYWNjZXNzQ29udHJvbEVycm9yRGVzY3JpcHRpb24pKTsKKyAgICAgICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkRmFpbEFjY2Vzc0NvbnRyb2xDaGVjayhSZXNvdXJjZUVycm9yKGVycm9yRG9tYWlu
V2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCBhY2Nlc3NDb250cm9sRXJyb3JEZXNj
cmlwdGlvbikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtMzMzLDcgKzMzMyw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpw
cmVmbGlnaHRTdWNjZXNzKCkKICAgICBsb2FkUmVxdWVzdCgqYWN0dWFsUmVxdWVzdCwgU2tpcFNl
Y3VyaXR5Q2hlY2spOwogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxp
Z2h0RmFpbHVyZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIGVycm9yRGVzY3JpcHRpb24pCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6cHJlZmxpZ2h0RmFpbHVyZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIGVycm9yRGVzY3JpcHRpb24pCiB7CiAgICAgUmVzb3VyY2VF
cnJvciBlcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwsIGVycm9yRGVzY3Jp
cHRpb24pOwogICAgIGlmIChtX2FjdHVhbFJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggNzc4ZDMxZWYzZmUyYmE1NDIy
MjZiNjc0NGNjYjdkZTM4YmUwMGM4ZC4uZmYwODNmYjkwZjE3MmFkYmNlNTM3NTRlMGVjN2RjNTBm
YjRhN2Y2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuaApAQCAtOTEsNyArOTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZvaWQgbWFrZVNpbXBsZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpOwogICAgICAgICB2b2lkIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVl
c3RXaXRoUHJlZmxpZ2h0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCk7CiAgICAgICAg
IHZvaWQgcHJlZmxpZ2h0U3VjY2VzcygpOwotICAgICAgICB2b2lkIHByZWZsaWdodEZhaWx1cmUo
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBlcnJvckRlc2NyaXB0aW9uKTsKKyAgICAgICAgdm9pZCBwcmVmbGlnaHRGYWlsdXJlKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBlcnJvckRlc2Ny
aXB0aW9uKTsKIAogICAgICAgICB2b2lkIGxvYWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIFNlY3VyaXR5Q2hlY2tQb2xpY3kpOwogICAgICAgICBib29sIGlzQWxsb3dlZFJlZGlyZWN0
KGNvbnN0IFVSTCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDE2Mjll
YzU3Y2U1ZGRjMTBjZTg5ZDMxMTA0NmU5MDBhMTQzNDNmY2QuLjFhNDBiNmRhNDQ1YzljMjgzNWFi
ZTk0NDUwZTYzMmQ2NTVhYzJiMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgK
QEAgLTMyMCwxNSArMzIwLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0dGVk
TG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKSBvdmVycmlkZSB7
IH0KIAotICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IFJlc291cmNlRXJyb3IgZXJyb3IoIiIsIDAsICIiLCAi
Iik7IGVycm9yLnNldElzQ2FuY2VsbGF0aW9uKHRydWUpOyByZXR1cm4gZXJyb3I7IH0KLSAgICB2
aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
IG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsICIiLCAiIik7IH0KLSAgICB2
aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCAi
IiwgIiIpOyB9Ci0gICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIi
LCAwLCAiIiwgIiIpOyB9Ci0gICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9y
UG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1
cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgIiIsICIiKTsgfQotCi0gICAgdmlydHVhbCBSZXNvdXJj
ZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBv
dmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCAiIiwgIiIpOyB9Ci0gICAgdmly
dHVhbCBSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgIiIsICIiKTsg
fQotICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIi
LCAwLCAiIiwgIiIpOyB9CisgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9y
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgUmVzb3VyY2VFcnJvciBlcnJvcigi
IiwgMCwgVVJMKCksICIiKTsgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7IHJldHVybiBl
cnJvcjsgfQorICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgVVJM
KCksICIiKTsgfQorICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50Qmxv
Y2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291
cmNlRXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KKyAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3Ig
Y2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0
dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KKyAgICB2aXJ0dWFsIFJlc291
cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBVUkwoKSwgIiIp
OyB9CisKKyAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3Io
IiIsIDAsIFVSTCgpLCAiIik7IH0KKyAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgZmlsZURvZXNO
b3RFeGlzdEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiBS
ZXNvdXJjZUVycm9yKCIiLCAwLCBVUkwoKSwgIiIpOyB9CisgICAgdmlydHVhbCBSZXNvdXJjZUVy
cm9yIHBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92
ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KIAogICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRGYWxsQmFjayhjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
aW5kZXggNDgxNTBhMGUzYTRmMjdkODkwMjI1MGNhM2FkZmMwMmYzNTYzYzY4MS4uOTAwZGQzODAw
YmZhNDU1OTk3OGMyZTQxYTQwMjAwNzE1YzRjMmViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCkBAIC0yNjg2LDcgKzI2ODYsNyBAQCB1bnNpZ25lZCBsb25nIEZyYW1lTG9h
ZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dQogICAgICAgICAgICAgaWYgKGF1dG8qIGNvbnRyb2xsZXIgPSBwYWdlLT51c2VyQ29udGVudENv
bnRyb2xsZXIoKSkgewogICAgICAgICAgICAgICAgIGlmIChtX2RvY3VtZW50TG9hZGVyICYmIGNv
bnRyb2xsZXItPnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKG5ld1JlcXVlc3Qs
IFJlc291cmNlVHlwZTo6UmF3LCAqbV9kb2N1bWVudExvYWRlcikgPT0gQ29udGVudEV4dGVuc2lv
bnM6OkJsb2NrZWRTdGF0dXM6OkJsb2NrZWQpIHsKICAgICAgICAgICAgICAgICAgICAgbmV3UmVx
dWVzdCA9IHsgfTsKLSAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVy
cm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGluaXRpYWxSZXF1ZXN0LnVybCgpLnN0cmluZygp
LCBlbXB0eVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVy
cm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGluaXRpYWxSZXF1ZXN0LnVybCgpLCBl
bXB0eVN0cmluZygpKTsKICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB7IH07CiAgICAg
ICAgICAgICAgICAgICAgIGRhdGEgPSBudWxscHRyOwogICAgICAgICAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAppbmRleCAyMGQyZTZl
YzlhMzM5ZmJlZTFkZGViOTIwODQyMGNjZmMyMWNiZjA3Li5kOTMzY2VlM2Q1YmYzMDY0Mjg1MmIx
Y2MxYzAyN2VmMzQ3OTQ4MDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVk
aWFSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBNZWRpYVJlc291cmNlTG9h
ZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVz
b3UKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gY29uc29sZU1l
c3NhZ2UoIkNyb3NzLW9yaWdpbiBtZWRpYSByZXNvdXJjZSBsb2FkIGRlbmllZCBieSBDcm9zcy1P
cmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIik7CiAgICAgICAgIG1fZG9jdW1lbnQuYWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIGNvbnNvbGVNZXNzYWdlLmdldCgpKTsKICAgICAgICAgbV9kaWRQYXNzQWNjZXNzQ29udHJv
bENoZWNrID0gZmFsc2U7Ci0gICAgICAgIG1fY2xpZW50LT5hY2Nlc3NDb250cm9sQ2hlY2tGYWls
ZWQoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51
cmwoKS5zdHJpbmcoKSwgY29uc29sZU1lc3NhZ2UuZ2V0KCkpKTsKKyAgICAgICAgbV9jbGllbnQt
PmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCBjb25zb2xlTWVzc2FnZS5nZXQoKSkpOwogICAg
ICAgICBzdG9wKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAwZDgxZmY1YmEyOGEyMTA0ZDUyOGFlY2ZiYmJlNzM1
NmNhMjNiNjc4Li4xYTk3M2IwZDUyM2I4ZTFmMzJmMjVhODA4OWM4Mjk4NTc0NTBlM2VjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTI1Nyw3ICsyNTcsNyBA
QCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkRGF0YVVSTCgpCiAgICAgICAgIGlmIChsb2FkZXIt
PnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlm
ICghZGVjb2RlUmVzdWx0KSB7Ci0gICAgICAgICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwuc3RyaW5nKCksICJEYXRhIFVS
TCBkZWNvZGluZyBmYWlsZWQiKSk7CisgICAgICAgICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwsICJEYXRhIFVSTCBkZWNv
ZGluZyBmYWlsZWQiKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
aWYgKGxvYWRlci0+d2FzQ2FuY2VsbGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
V29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggYTBkYzNjYTFhZmMyNTZjNTYyMDljOWQ5
NjhkNDViMDJkZDUxMmYxNC4uMWRiOGQ2NDg5MmZhMjMyNDk3YjAzODIxNDQwNmYzN2VmMTMyZWJj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFp
blRocmVhZEJyaWRnZTo6Y2FuY2VsKCkKICAgICBpZiAoIWNsaWVudFdyYXBwZXItPmRvbmUoKSkg
ewogICAgICAgICAvLyBJZiB0aGUgY2xpZW50IGhhc24ndCByZWFjaGVkIGEgdGVybWluYXRpb24g
c3RhdGUsIHRoZW4gdHJhbnNpdGlvbiBpdCBieSBzZW5kaW5nIGEgY2FuY2VsbGF0aW9uIGVycm9y
LgogICAgICAgICAvLyBOb3RlOiBubyBtb3JlIGNsaWVudCBjYWxsYmFja3Mgd2lsbCBiZSBkb25l
IGFmdGVyIHRoaXMgbWV0aG9kIC0tIHRoZSBjbGVhckNsaWVudFdyYXBwZXIoKSBjYWxsIGVuc3Vy
ZXMgdGhhdC4KLSAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcihTdHJpbmcoKSwgMCwgU3RyaW5n
KCksIFN0cmluZygpKTsKKyAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcihTdHJpbmcoKSwgMCwg
VVJMKCksIFN0cmluZygpKTsKICAgICAgICAgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7
CiAgICAgICAgIGNsaWVudFdyYXBwZXItPmRpZEZhaWwoZXJyb3IpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IDczNzhkNmQxYWM5MjQxYmM2NzY5Njk3NjMyYzdjZjQ3YmJmNTJiOWUuLmQ5ZmNmZTYyNDM2
MzA0OTM5ZDFmZmE4MmVjM2EwMzcwMGUyNjRhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtNTQ0LDcgKzU0NCw3
IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlCiAgICAgICAgICAgICAgICAgYXV0byByZXNvdXJj
ZSA9IGNyZWF0ZVJlc291cmNlKHR5cGUsIHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgp
LCByZXF1ZXN0LmNoYXJzZXQoKSwgc2Vzc2lvbklEKCkpOwogICAgICAgICAgICAgICAgIEFTU0VS
VChyZXNvdXJjZSk7CiAgICAgICAgICAgICAgICAgcmVzb3VyY2UtPmVycm9yKENhY2hlZFJlc291
cmNlOjpTdGF0dXM6OkxvYWRFcnJvcik7Ci0gICAgICAgICAgICAgICAgcmVzb3VyY2UtPnNldFJl
c291cmNlRXJyb3IoUmVzb3VyY2VFcnJvcihDb250ZW50RXh0ZW5zaW9uczo6V2ViS2l0Q29udGVu
dEJsb2NrZXJEb21haW4sIDAsIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkuc3RyaW5n
KCksIFdFQl9VSV9TVFJJTkcoIlRoZSBVUkwgd2FzIGJsb2NrZWQgYnkgYSBjb250ZW50IGJsb2Nr
ZXIiLCAiV2ViS2l0RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciBkZXNjcmlwdGlvbiIpKSk7
CisgICAgICAgICAgICAgICAgcmVzb3VyY2UtPnNldFJlc291cmNlRXJyb3IoUmVzb3VyY2VFcnJv
cihDb250ZW50RXh0ZW5zaW9uczo6V2ViS2l0Q29udGVudEJsb2NrZXJEb21haW4sIDAsIHJlcXVl
c3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCksIFdFQl9VSV9TVFJJTkcoIlRoZSBVUkwgd2FzIGJs
b2NrZWQgYnkgYSBjb250ZW50IGJsb2NrZXIiLCAiV2ViS2l0RXJyb3JCbG9ja2VkQnlDb250ZW50
QmxvY2tlciBkZXNjcmlwdGlvbiIpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc291cmNl
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IGI4MzQxZTZiNmMwNzU3NmY3NGY0MTIzNDUzMzJhZjVl
OTkyNmM0NjQuLjIwMTNjMDhlODBjOWUwZjA0MjM4NGI3NWI5NjE1ODAwNzUwNmM1ZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBFdmVu
dFNvdXJjZTo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBFdmVu
dFNvdXJjZTo6ZGlkRmFpbEFjY2Vzc0NvbnRyb2xDaGVjayhjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKIHsKLSAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIkV2ZW50U291cmNlIGNh
bm5vdCBsb2FkICIsIGVycm9yLmZhaWxpbmdVUkwoKSwgIi4gIiwgZXJyb3IubG9jYWxpemVkRGVz
Y3JpcHRpb24oKSk7CisgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJFdmVudFNvdXJj
ZSBjYW5ub3QgbG9hZCAiLCBlcnJvci5mYWlsaW5nVVJMKCkuc3RyaW5nKCksICIuICIsIGVycm9y
LmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwogICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IG1lc3NhZ2UpOwogCiAgICAgYWJvcnRDb25uZWN0aW9uQXR0ZW1wdCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0Vycm9yc0VmbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmNwcAppbmRleCA2ZWZmNTU1OTMzYzk2MzFhMjM4MmUy
NmNkMTkyMjkzYzdkOGI2ZTM3Li4zMjgyNmU1NjcyNzMwM2JlZmRlMjljMDhkZThjNTdhYjQ5ZGJl
MzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmNwcApAQCAtMzQs
NDIgKzM0LDQyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvciBjYW5jZWxs
ZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJl
c291cmNlRXJyb3IoZXJyb3JEb21haW5OZXR3b3JrLCBOZXR3b3JrRXJyb3JDYW5jZWxsZWQsIHJl
cXVlc3QudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiTG9hZCByZXF1ZXN0IGNhbmNlbGxl
ZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbk5ldHdvcmssIE5ldHdv
cmtFcnJvckNhbmNlbGxlZCwgcmVxdWVzdC51cmwoKSwgQVNDSUlMaXRlcmFsKCJMb2FkIHJlcXVl
c3QgY2FuY2VsbGVkIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJy
b3JEb21haW5Qb2xpY3ksIFBvbGljeUVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQsIHJlcXVl
c3QudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiTm90IGFsbG93ZWQgdG8gdXNlIHJlc3Ry
aWN0ZWQgbmV0d29yayBwb3J0IikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9t
YWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0LCByZXF1ZXN0LnVy
bCgpLCBBU0NJSUxpdGVyYWwoIk5vdCBhbGxvd2VkIHRvIHVzZSByZXN0cmljdGVkIG5ldHdvcmsg
cG9ydCIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9y
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tl
ciwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJCbG9ja2VkIGJ5IGNvbnRl
bnQgYmxvY2tlciIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGlj
eSwgUG9saWN5RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciwgcmVxdWVzdC51cmwoKSwgQVND
SUlMaXRlcmFsKCJCbG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlciIpKTsKIH0KIAogUmVzb3VyY2VF
cnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQog
ewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJv
ckNhbm5vdFNob3dVUkwsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiVVJM
IGNhbm5vdCBiZSBzaG93biIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFp
blBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RTaG93VVJMLCByZXF1ZXN0LnVybCgpLCBBU0NJSUxp
dGVyYWwoIlVSTCBjYW5ub3QgYmUgc2hvd24iKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgaW50ZXJy
dXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
CiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Qb2xpY3ksIFBvbGljeUVy
cm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwgcmVxdWVzdC51cmwoKS5zdHJp
bmcoKSwgQVNDSUlMaXRlcmFsKCJGcmFtZSBsb2FkIHdhcyBpbnRlcnJ1cHRlZCIpKTsKKyAgICBy
ZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JGcmFtZUxv
YWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCByZXF1ZXN0LnVybCgpLCBBU0NJSUxpdGVyYWwo
IkZyYW1lIGxvYWQgd2FzIGludGVycnVwdGVkIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGNhbm5v
dFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewot
ICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNh
bm5vdFNob3dNaW1lVHlwZSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgi
Q29udGVudCB3aXRoIHRoZSBzcGVjaWZpZWQgTUlNRSB0eXBlIGNhbm5vdCBiZSBzaG93biIpKTsK
KyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JD
YW5ub3RTaG93TWltZVR5cGUsIHJlc3BvbnNlLnVybCgpLCBBU0NJSUxpdGVyYWwoIkNvbnRlbnQg
d2l0aCB0aGUgc3BlY2lmaWVkIE1JTUUgdHlwZSBjYW5ub3QgYmUgc2hvd24iKSk7CiB9CiAKIFJl
c291cmNlRXJyb3IgZmlsZURvZXNOb3RFeGlzdEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluTmV0d29y
aywgTmV0d29ya0Vycm9yRmlsZURvZXNOb3RFeGlzdCwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCks
IEFTQ0lJTGl0ZXJhbCgiRmlsZSBkb2VzIG5vdCBleGlzdCIpKTsKKyAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpbk5ldHdvcmssIE5ldHdvcmtFcnJvckZpbGVEb2VzTm90RXhpc3Qs
IHJlc3BvbnNlLnVybCgpLCBBU0NJSUxpdGVyYWwoIkZpbGUgZG9lcyBub3QgZXhpc3QiKSk7CiB9
CiAKIFJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRv
bWFpblBsdWdpbiwgUGx1Z2luRXJyb3JXaWxsSGFuZGxlTG9hZCwgcmVzcG9uc2UudXJsKCkuc3Ry
aW5nKCksIEFTQ0lJTGl0ZXJhbCgiUGx1Z2luIHdpbGwgaGFuZGxlIGxvYWQiKSk7CisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5QbHVnaW4sIFBsdWdpbkVycm9yV2lsbEhhbmRs
ZUxvYWQsIHJlc3BvbnNlLnVybCgpLCBBU0NJSUxpdGVyYWwoIlBsdWdpbiB3aWxsIGhhbmRsZSBs
b2FkIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0IFJl
c291cmNlRXJyb3ImIG5ldHdvcmtFcnJvcikKQEAgLTc5LDEyICs3OSwxMiBAQCBSZXNvdXJjZUVy
cm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIG5ldHdvcmtFcnJv
cikKIAogUmVzb3VyY2VFcnJvciBkb3dubG9hZENhbmNlbGxlZEJ5VXNlckVycm9yKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVy
cm9yRG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JDYW5jZWxsZWRCeVVzZXIsIHJlc3BvbnNl
LnVybCgpLnN0cmluZygpLCBBU0NJSUxpdGVyYWwoIlVzZXIgY2FuY2VsbGVkIHRoZSBkb3dubG9h
ZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBEb3du
bG9hZEVycm9yQ2FuY2VsbGVkQnlVc2VyLCByZXNwb25zZS51cmwoKSwgQVNDSUlMaXRlcmFsKCJV
c2VyIGNhbmNlbGxlZCB0aGUgZG93bmxvYWQiKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgZG93bmxv
YWREZXN0aW5hdGlvbkVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJv
ckRvbWFpbkRvd25sb2FkLCBEb3dubG9hZEVycm9yRGVzdGluYXRpb24sIHJlc3BvbnNlLnVybCgp
LnN0cmluZygpLCBlcnJvck1lc3NhZ2UpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9y
RG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JEZXN0aW5hdGlvbiwgcmVzcG9uc2UudXJsKCks
IGVycm9yTWVzc2FnZSk7CiB9CiAKIFJlc291cmNlRXJyb3IgcHJpbnRFcnJvcihjb25zdCBVUkwm
IGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcAppbmRleCA2ODhhOTA2ZDllYjQwOGVkZmI0NzNhZmZm
Nzk4MjU2NDZlYzFmZTBmLi44ZGZkMTU4YjNiNGQ2YzU0NGJkYjI5YTYxNTc0MWRiZGE0YjQxYTU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcApAQCAtMjksNjcg
KzI5LDU3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRF
cnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJlc291
cmNlRXJyb3IoZXJyb3JEb21haW5OZXR3b3JrLCBOZXR3b3JrRXJyb3JDYW5jZWxsZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgXygiTG9hZCByZXF1
ZXN0IGNhbmNlbGxlZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbk5l
dHdvcmssIE5ldHdvcmtFcnJvckNhbmNlbGxlZCwgcmVxdWVzdC51cmwoKSwgXygiTG9hZCByZXF1
ZXN0IGNhbmNlbGxlZCIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVy
cm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIF8oIk5vdCBhbGxv
d2VkIHRvIHVzZSByZXN0cmljdGVkIG5ldHdvcmsgcG9ydCIpKTsKKyAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVk
UG9ydCwgcmVxdWVzdC51cmwoKSwgXygiTm90IGFsbG93ZWQgdG8gdXNlIHJlc3RyaWN0ZWQgbmV0
d29yayBwb3J0IikpOwogfQogCiBSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2Vy
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckJsb2NrZWRCeUNvbnRlbnRC
bG9ja2VyLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCBfKCJCbG9ja2VkIGJ5IGNvbnRlbnQgYmxv
Y2tlciIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9s
aWN5RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciwgcmVxdWVzdC51cmwoKSwgXygiQmxvY2tl
ZCBieSBjb250ZW50IGJsb2NrZXIiKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VS
TEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gUmVz
b3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RTaG93VVJMLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIF8oIlVSTCBj
YW5ub3QgYmUgc2hvd24iKSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Q
b2xpY3ksIFBvbGljeUVycm9yQ2Fubm90U2hvd1VSTCwgcmVxdWVzdC51cmwoKSwgXygiVVJMIGNh
bm5vdCBiZSBzaG93biIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZvclBvbGlj
eUNoYW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1
cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JGcmFtZUxvYWRJ
bnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3QudXJsKCkuc3RyaW5nKCksIF8oIkZyYW1lIGxvYWQgd2FzIGludGVycnVwdGVkIikpOworICAg
IHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckZyYW1l
TG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsIHJlcXVlc3QudXJsKCksIF8oIkZyYW1lIGxv
YWQgd2FzIGludGVycnVwdGVkIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1F
VHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIHJldHVy
biBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFNob3dN
aW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS51cmwoKS5zdHJpbmco
KSwgXygiQ29udGVudCB3aXRoIHRoZSBzcGVjaWZpZWQgTUlNRSB0eXBlIGNhbm5vdCBiZSBzaG93
biIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5
RXJyb3JDYW5ub3RTaG93TWltZVR5cGUsIHJlc3BvbnNlLnVybCgpLCBfKCJDb250ZW50IHdpdGgg
dGhlIHNwZWNpZmllZCBNSU1FIHR5cGUgY2Fubm90IGJlIHNob3duIikpOwogfQogCiBSZXNvdXJj
ZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbk5ldHdvcmssIE5l
dHdvcmtFcnJvckZpbGVEb2VzTm90RXhpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVz
cG9uc2UudXJsKCkuc3RyaW5nKCksIF8oIkZpbGUgZG9lcyBub3QgZXhpc3QiKSk7CisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5OZXR3b3JrLCBOZXR3b3JrRXJyb3JGaWxlRG9l
c05vdEV4aXN0LCByZXNwb25zZS51cmwoKSwgXygiRmlsZSBkb2VzIG5vdCBleGlzdCIpKTsKIH0K
IAogUmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9t
YWluUGx1Z2luLCBQbHVnaW5FcnJvcldpbGxIYW5kbGVMb2FkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBfKCJQbHVnaW4gd2lsbCBoYW5kbGUgbG9h
ZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBsdWdpbiwgUGx1Z2lu
RXJyb3JXaWxsSGFuZGxlTG9hZCwgcmVzcG9uc2UudXJsKCksIF8oIlBsdWdpbiB3aWxsIGhhbmRs
ZSBsb2FkIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0
IFJlc291cmNlRXJyb3ImIG5ldHdvcmtFcnJvcikKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihlcnJvckRvbWFpbkRvd25sb2FkLCBEb3dubG9hZEVycm9yTmV0d29yaywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBuZXR3b3JrRXJyb3IuZmFpbGluZ1VSTCgpLCBuZXR3b3JrRXJyb3IubG9j
YWxpemVkRGVzY3JpcHRpb24oKSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21h
aW5Eb3dubG9hZCwgRG93bmxvYWRFcnJvck5ldHdvcmssIG5ldHdvcmtFcnJvci5mYWlsaW5nVVJM
KCksIG5ldHdvcmtFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKIH0KIAogUmVzb3VyY2VF
cnJvciBkb3dubG9hZENhbmNlbGxlZEJ5VXNlckVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxv
YWQsIERvd25sb2FkRXJyb3JDYW5jZWxsZWRCeVVzZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIF8oIlVzZXIgY2FuY2VsbGVkIHRoZSBkb3dubG9h
ZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBEb3du
bG9hZEVycm9yQ2FuY2VsbGVkQnlVc2VyLCByZXNwb25zZS51cmwoKSwgXygiVXNlciBjYW5jZWxs
ZWQgdGhlIGRvd25sb2FkIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGRvd25sb2FkRGVzdGluYXRp
b25FcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Eb3du
bG9hZCwgRG93bmxvYWRFcnJvckRlc3RpbmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBlcnJvck1lc3NhZ2UpOworICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JEZXN0aW5hdGlvbiwg
cmVzcG9uc2UudXJsKCksIGVycm9yTWVzc2FnZSk7CiB9CiAKIFJlc291cmNlRXJyb3IgcHJpbnRF
cnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9y
QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFz
ZS5oCmluZGV4IDVhZTgzN2MzMWM1ZDhhNDg1NjIwMDkzODZmODBlZGMwMTk1NGM2ODkuLmE4MGU3
NjE5YjVhZDlkZGRkZTg1NjgyMzc2MmVjZTRmNTUxYmFkM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKQEAgLTI2LDYgKzI2
LDcgQEAKICNpZm5kZWYgUmVzb3VyY2VFcnJvckJhc2VfaAogI2RlZmluZSBSZXNvdXJjZUVycm9y
QmFzZV9oCiAKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDMsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAg
ICBjb25zdCBTdHJpbmcmIGRvbWFpbigpIGNvbnN0IHsgbGF6eUluaXQoKTsgcmV0dXJuIG1fZG9t
YWluOyB9CiAgICAgaW50IGVycm9yQ29kZSgpIGNvbnN0IHsgbGF6eUluaXQoKTsgcmV0dXJuIG1f
ZXJyb3JDb2RlOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBmYWlsaW5nVVJMKCkgY29uc3QgeyBsYXp5
SW5pdCgpOyByZXR1cm4gbV9mYWlsaW5nVVJMOyB9CisgICAgY29uc3QgVVJMJiBmYWlsaW5nVVJM
KCkgY29uc3QgeyBsYXp5SW5pdCgpOyByZXR1cm4gbV9mYWlsaW5nVVJMOyB9CiAgICAgY29uc3Qg
U3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbigpIGNvbnN0IHsgbGF6eUluaXQoKTsgcmV0dXJu
IG1fbG9jYWxpemVkRGVzY3JpcHRpb247IH0KIAogICAgIHZvaWQgc2V0SXNDYW5jZWxsYXRpb24o
Ym9vbCBpc0NhbmNlbGxhdGlvbikgeyBtX2lzQ2FuY2VsbGF0aW9uID0gaXNDYW5jZWxsYXRpb247
IH0KQEAgLTYzLDcgKzY0LDcgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICB9CiAKLSAgICBSZXNv
dXJjZUVycm9yQmFzZShjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3Qg
U3RyaW5nJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQor
ICAgIFJlc291cmNlRXJyb3JCYXNlKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2Rl
LCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRp
b24pCiAgICAgICAgIDogbV9kb21haW4oZG9tYWluKQogICAgICAgICAsIG1fZmFpbGluZ1VSTChm
YWlsaW5nVVJMKQogICAgICAgICAsIG1fbG9jYWxpemVkRGVzY3JpcHRpb24obG9jYWxpemVkRGVz
Y3JpcHRpb24pCkBAIC04Niw3ICs4Nyw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBw
bGF0Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3VyY2VFcnJvciYsIGNvbnN0IFJlc291cmNlRXJyb3Im
KSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBTdHJpbmcgbV9kb21haW47Ci0gICAgU3RyaW5nIG1f
ZmFpbGluZ1VSTDsKKyAgICBVUkwgbV9mYWlsaW5nVVJMOwogICAgIFN0cmluZyBtX2xvY2FsaXpl
ZERlc2NyaXB0aW9uOwogICAgIGludCBtX2Vycm9yQ29kZTsKICAgICBib29sIG1faXNOdWxsIDog
MTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVy
cm9yLmgKaW5kZXggMTcwM2NjOTFmNjhiMmE1ZTY0Zjg3OTIzY2U2ZmJhMWQyN2RkMjQxZC4uYjMy
OGJhMTcxNTA0MTBmNTNmNzcxNjY5MjA4NTE0YjZhNzc0NmY2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKQEAgLTUwLDcgKzUw
LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0
cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNv
bnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCisgICAgUmVzb3VyY2VFcnJvcihjb25z
dCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBj
b25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQogICAgICAgICA6IFJlc291cmNlRXJy
b3JCYXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlv
bikKICAgICAgICAgLCBtX2RhdGFJc1VwVG9EYXRlKHRydWUpCiAgICAgewpAQCAtNjMsNyArNjMs
NyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoQ0ZORVRXT1JLKQogI2lmIFBMQVRGT1JNKFdJTikKLSAg
ICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25z
dCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24s
IENGRGF0YVJlZiBjZXJ0aWZpY2F0ZSk7CisgICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcm
IGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJp
bmcmIGxvY2FsaXplZERlc2NyaXB0aW9uLCBDRkRhdGFSZWYgY2VydGlmaWNhdGUpOwogICAgIFBD
Q0VSVF9DT05URVhUIGNlcnRpZmljYXRlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDZXJ0aWZpY2F0
ZShDRkRhdGFSZWYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXggMTMxZmJiMDQ2MTE3MDZmNjRk
ODUwYTFjNTBlMDVlMTRhMmM2ZTEzMy4uNjBiZmIzNjU5MWUwN2MxYmZiZWFiNmIxZTNiNTZmYWI5
ODQ3ODQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUVycm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VFcnJvckNGLmNwcApAQCAtNDksNyArNDksNyBAQCBSZXNvdXJjZUVycm9yOjpS
ZXNvdXJjZUVycm9yKENGRXJyb3JSZWYgY2ZFcnJvcikKIH0KIAogI2lmIFBMQVRGT1JNKFdJTikK
LVJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBl
cnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6
ZWREZXNjcmlwdGlvbiwgQ0ZEYXRhUmVmIGNlcnRpZmljYXRlKQorUmVzb3VyY2VFcnJvcjo6UmVz
b3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJM
JiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uLCBDRkRhdGFS
ZWYgY2VydGlmaWNhdGUpCiAgICAgOiBSZXNvdXJjZUVycm9yQmFzZShkb21haW4sIGVycm9yQ29k
ZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24pCiAgICAgLCBtX2RhdGFJc1VwVG9E
YXRlKHRydWUpCiAgICAgLCBtX2NlcnRpZmljYXRlKGNlcnRpZmljYXRlKQpAQCAtMTAxLDE3ICsx
MDEsMTIgQEAgdm9pZCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KCkKICAgICBpZiAo
dXNlckluZm8uZ2V0KCkpIHsKICAgICAgICAgQ0ZTdHJpbmdSZWYgZmFpbGluZ1VSTFN0cmluZyA9
IChDRlN0cmluZ1JlZikgQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGZhaWxp
bmdVUkxTdHJpbmdLZXkpOwogICAgICAgICBpZiAoZmFpbGluZ1VSTFN0cmluZykKLSAgICAgICAg
ICAgIG1fZmFpbGluZ1VSTCA9IFN0cmluZyhmYWlsaW5nVVJMU3RyaW5nKTsKKyAgICAgICAgICAg
IG1fZmFpbGluZ1VSTCA9IFVSTChVUkwoKSwgZmFpbGluZ1VSTFN0cmluZyk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgQ0ZVUkxSZWYgZmFpbGluZ1VSTCA9IChDRlVSTFJlZikgQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGZhaWxpbmdVUkxLZXkpOwogICAgICAgICAg
ICAgaWYgKGZhaWxpbmdVUkwpIHsKLSAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IGFic29sdXRlVVJMUmVmID0gYWRvcHRDRihDRlVSTENvcHlBYnNvbHV0ZVVSTChmYWlsaW5nVVJM
KSk7Ci0gICAgICAgICAgICAgICAgaWYgKGFic29sdXRlVVJMUmVmLmdldCgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBDRlVSTEdldFN0cmluZyByZXR1cm5zIGEgbm9ybWFsaXpl
ZCBVUkwgd2hpY2ggaXMgZGlmZmVyZW50IGZyb20gd2hhdCBpcyBhY3R1YWxseSB1c2VkIGJ5IENG
TmV0d29yay4KLSAgICAgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIHVzZSBDRlVSTEdldEJ5
dGVzIGluc3RlYWQuCi0gICAgICAgICAgICAgICAgICAgIGZhaWxpbmdVUkxTdHJpbmcgPSBDRlVS
TEdldFN0cmluZyhhYnNvbHV0ZVVSTFJlZi5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1f
ZmFpbGluZ1VSTCA9IFN0cmluZyhmYWlsaW5nVVJMU3RyaW5nKTsKLSAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgaWYgKFJldGFpblB0cjxDRlVSTFJlZj4gYWJzb2x1dGVVUkxSZWYg
PSBhZG9wdENGKENGVVJMQ29weUFic29sdXRlVVJMKGZhaWxpbmdVUkwpKSkKKyAgICAgICAgICAg
ICAgICAgICAgbV9mYWlsaW5nVVJMID0gVVJMKGFic29sdXRlVVJMUmVmLmdldCgpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBtX2xvY2FsaXplZERlc2NyaXB0aW9uID0gKENG
U3RyaW5nUmVmKSBDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga0NGRXJyb3JM
b2NhbGl6ZWREZXNjcmlwdGlvbktleSk7CkBAIC0xNTIsMTIgKzE0Nyw5IEBAIENGRXJyb3JSZWYg
UmVzb3VyY2VFcnJvcjo6Y2ZFcnJvcigpIGNvbnN0CiAgICAgICAgICAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga0NGRXJyb3JMb2NhbGl6ZWREZXNjcmlwdGlvbktleSwg
bV9sb2NhbGl6ZWREZXNjcmlwdGlvbi5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgICAg
ICBpZiAoIW1fZmFpbGluZ1VSTC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gZmFpbGluZ1VSTFN0cmluZyA9IG1fZmFpbGluZ1VSTC5jcmVhdGVDRlN0cmlu
ZygpOworICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmYWlsaW5nVVJMU3RyaW5n
ID0gbV9mYWlsaW5nVVJMLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwgZmFpbGluZ1VSTFN0cmluZ0tleSwg
ZmFpbGluZ1VSTFN0cmluZy5nZXQoKSk7Ci0gICAgICAgICAgICAvLyBGSVhFTUU6IFdlIG5vcm1h
bGx5IGNyZWF0ZSBhIENGVVJMIGZyb20gYSBzdHJpbmcgYnkgdXNpbmcgVVJMOjpjcmVhdGVDRlVS
TCwgd2hpY2ggaGFuZGxlcwotICAgICAgICAgICAgLy8gY2FzZXMgY29ycmVjdGx5IHRoYXQgQ0ZV
UkxDcmVhdGVXaXRoU3RyaW5nIGhhbmRsZXMgaW5jb3JyZWN0bHkuCi0gICAgICAgICAgICBSZXRh
aW5QdHI8Q0ZVUkxSZWY+IHVybCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKDAsIGZh
aWxpbmdVUkxTdHJpbmcuZ2V0KCksIDApKTsKLSAgICAgICAgICAgIGlmICh1cmwpCisgICAgICAg
ICAgICBpZiAoUmV0YWluUHRyPENGVVJMUmVmPiB1cmwgPSBtX2ZhaWxpbmdVUkwuY3JlYXRlQ0ZV
UkwoKSkKICAgICAgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQo
KSwgZmFpbGluZ1VSTEtleSwgdXJsLmdldCgpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaAppbmRleCA0
MWMxOTkxNGJkYmM2ZWM2MTgzOGFiOWE1YjgzOWFlYzgwZGNiM2NhLi5jMzFkZDQyNTFmNjdhMWNl
ZjZhYjQ5MjkzZTU5NDVhNzdlYWUyYjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVi
bGljOgogICAgIHsKICAgICB9CiAKLSAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9t
YWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmlu
ZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCisgICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcm
IGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJp
bmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQogICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRv
bWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbiksIG1fc3Ns
RXJyb3JzKDApCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCmluZGV4IGY3Yzg2NGNlM2I1MDk5
ZmUwMmYxNjk2OWFjZTM5N2Y2ODJlODNkYmEuLjY0MTg5MzgwMDA2MzMzM2M3MDFkYjUzY2FjMDAx
YWI1NDk5ZjcwNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlRXJyb3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQpAQCAtMTgyLDEyICsxODIsOSBAQCBzdGF0aWMg
UmV0YWluUHRyPE5TRXJyb3I+IGNyZWF0ZU5TRXJyb3JGcm9tUmVzb3VyY2VFcnJvckJhc2UoY29u
c3QgUmVzb3VyY2VFcnJvcgogICAgICAgICBbdXNlckluZm8uZ2V0KCkgc2V0VmFsdWU6cmVzb3Vy
Y2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpIGZvcktleTpOU0xvY2FsaXplZERlc2NyaXB0
aW9uS2V5XTsKIAogICAgIGlmICghcmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIC8vIEZJWEVNRTogV2Ugbm9ybWFsbHkgY3JlYXRlIGFuIE5TVVJMIGZyb20g
YSBzdHJpbmcgYnkgdXNpbmcgVVJMOjpjcmVhdGVOU1VSTCwgd2hpY2ggaGFuZGxlcwotICAgICAg
ICAvLyBjYXNlcyBjb3JyZWN0bHkgdGhhdCBpbml0V2l0aFN0cmluZzogaGFuZGxlcyBpbmNvcnJl
Y3RseS4KLSAgICAgICAgUmV0YWluUHRyPE5TVVJMPiBjb2NvYVVSTCA9IGFkb3B0TlMoW1tOU1VS
TCBhbGxvY10gaW5pdFdpdGhTdHJpbmc6cmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCldKTsKLSAg
ICAgICAgW3VzZXJJbmZvLmdldCgpIHNldFZhbHVlOnJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgp
IGZvcktleTpAIk5TRXJyb3JGYWlsaW5nVVJMU3RyaW5nS2V5Il07Ci0gICAgICAgIGlmIChjb2Nv
YVVSTCkKLSAgICAgICAgICAgIFt1c2VySW5mby5nZXQoKSBzZXRWYWx1ZTpjb2NvYVVSTC5nZXQo
KSBmb3JLZXk6QCJOU0Vycm9yRmFpbGluZ1VSTEtleSJdOworICAgICAgICBbdXNlckluZm8uZ2V0
KCkgc2V0VmFsdWU6KE5TU3RyaW5nICopcmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkuc3RyaW5n
KCkgZm9yS2V5OkAiTlNFcnJvckZhaWxpbmdVUkxTdHJpbmdLZXkiXTsKKyAgICAgICAgaWYgKE5T
VVJMICpjb2NvYVVSTCA9IChOU1VSTCAqKXJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgpKQorICAg
ICAgICAgICAgW3VzZXJJbmZvLmdldCgpIHNldFZhbHVlOmNvY29hVVJMIGZvcktleTpAIk5TRXJy
b3JGYWlsaW5nVVJMS2V5Il07CiAgICAgfQogCiAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0Vycm9y
IGFsbG9jXSBpbml0V2l0aERvbWFpbjpyZXNvdXJjZUVycm9yLmRvbWFpbigpIGNvZGU6cmVzb3Vy
Y2VFcnJvci5lcnJvckNvZGUoKSB1c2VySW5mbzp1c2VySW5mby5nZXQoKV0pOwpAQCAtMjY2LDEw
ICsyNjMsMTAgQEAgdm9pZCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KCkKICAgICBt
X2RvbWFpbiA9IFttX3BsYXRmb3JtRXJyb3IuZ2V0KCkgZG9tYWluXTsKICAgICBtX2Vycm9yQ29k
ZSA9IFttX3BsYXRmb3JtRXJyb3IuZ2V0KCkgY29kZV07CiAKLSAgICBOU1N0cmluZyogZmFpbGlu
Z1VSTFN0cmluZyA9IFtbbV9wbGF0Zm9ybUVycm9yLmdldCgpIHVzZXJJbmZvXSB2YWx1ZUZvcktl
eTpAIk5TRXJyb3JGYWlsaW5nVVJMU3RyaW5nS2V5Il07Ci0gICAgaWYgKCFmYWlsaW5nVVJMU3Ry
aW5nKQotICAgICAgICBmYWlsaW5nVVJMU3RyaW5nID0gW1tbbV9wbGF0Zm9ybUVycm9yLmdldCgp
IHVzZXJJbmZvXSB2YWx1ZUZvcktleTpAIk5TRXJyb3JGYWlsaW5nVVJMS2V5Il0gYWJzb2x1dGVT
dHJpbmddOwotICAgIG1fZmFpbGluZ1VSTCA9IGZhaWxpbmdVUkxTdHJpbmc7IAorICAgIGlmIChO
U1N0cmluZyogZmFpbGluZ1VSTFN0cmluZyA9IFtbbV9wbGF0Zm9ybUVycm9yLmdldCgpIHVzZXJJ
bmZvXSB2YWx1ZUZvcktleTpAIk5TRXJyb3JGYWlsaW5nVVJMU3RyaW5nS2V5Il0pCisgICAgICAg
IG1fZmFpbGluZ1VSTCA9IFVSTChVUkwoKSwgZmFpbGluZ1VSTFN0cmluZyk7CisgICAgZWxzZQor
ICAgICAgICBtX2ZhaWxpbmdVUkwgPSBVUkwoKE5TVVJMICopW1ttX3BsYXRmb3JtRXJyb3IuZ2V0
KCkgdXNlckluZm9dIHZhbHVlRm9yS2V5OkAiTlNFcnJvckZhaWxpbmdVUkxLZXkiXSk7CiAgICAg
Ly8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzY1NTQwNjc+CiAgICAgbV9sb2NhbGl6
ZWREZXNjcmlwdGlvbiA9IG1fZmFpbGluZ1VSTDsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlRXJyb3IuaAppbmRleCBlNTAyOTdhN2ZlOWQ0Yzg5NDkzODEwZDU2YmI4MGY4YTc1ZjRi
OGViLi40NDdiMDAyNzQ4YTYzZjVhYzQwNzZhYjNkOWMzZjJhNTIzNWZiNmZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmgK
QEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJv
ciA6IHB1YmxpYyBSZXNvdXJjZUVycm9yQmFzZQogewogcHVibGljOgotICAgIFJlc291cmNlRXJy
b3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFp
bGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICBSZXNvdXJj
ZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZh
aWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCiAgICAgICAgIDog
UmVzb3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXpl
ZERlc2NyaXB0aW9uKQogICAgICAgICAsIG1fdGxzRXJyb3JzKDApCiAgICAgewpAQCAtNTYsNyAr
NTYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlc291cmNlRXJyb3IgdHJhbnNwb3J0RXJyb3Io
U291cFJlcXVlc3QqLCBpbnQgc3RhdHVzQ29kZSwgY29uc3QgU3RyaW5nJiByZWFzb25QaHJhc2Up
OwogICAgIHN0YXRpYyBSZXNvdXJjZUVycm9yIGdlbmVyaWNHRXJyb3IoR0Vycm9yKiwgU291cFJl
cXVlc3QqKTsKICAgICBzdGF0aWMgUmVzb3VyY2VFcnJvciB0bHNFcnJvcihTb3VwUmVxdWVzdCos
IHVuc2lnbmVkIHRsc0Vycm9ycywgR1Rsc0NlcnRpZmljYXRlKik7Ci0gICAgc3RhdGljIFJlc291
cmNlRXJyb3IgdGltZW91dEVycm9yKGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCk7CisgICAgc3Rh
dGljIFJlc291cmNlRXJyb3IgdGltZW91dEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCk7CiAg
ICAgc3RhdGljIFJlc291cmNlRXJyb3IgYXV0aGVudGljYXRpb25FcnJvcihTb3VwTWVzc2FnZSop
OwogCiAgICAgdW5zaWduZWQgdGxzRXJyb3JzKCkgY29uc3QgeyByZXR1cm4gbV90bHNFcnJvcnM7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZUVycm9yU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VFcnJvclNvdXAuY3BwCmluZGV4IGIyNWI1YTBiODY1MWUxYTBjZjVmNjE5NjBkNTdh
MjI0YWE1MzU4M2IuLmFkNmI4ZTcwODY3M2FlYjlhNTY1OGU0Y2NiOGMzNTEyOTllZmVlOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVy
cm9yU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlRXJyb3JTb3VwLmNwcApAQCAtMzUsMTQgKzM1LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RhdGljIFN0cmluZyBmYWlsaW5nVVJJKFNvdXBVUkkqIHNvdXBVUkkpCitzdGF0
aWMgVVJMIGZhaWxpbmdVUkkoU291cFVSSSogc291cFVSSSkKIHsKICAgICBBU1NFUlQoc291cFVS
SSk7Ci0gICAgR1VuaXF1ZVB0cjxjaGFyPiB1cmkoc291cF91cmlfdG9fc3RyaW5nKHNvdXBVUkks
IEZBTFNFKSk7Ci0gICAgcmV0dXJuIHVyaS5nZXQoKTsKKyAgICByZXR1cm4gVVJMKHNvdXBVUkkp
OwogfQogCi1zdGF0aWMgU3RyaW5nIGZhaWxpbmdVUkkoU291cFJlcXVlc3QqIHJlcXVlc3QpCitz
dGF0aWMgVVJMIGZhaWxpbmdVUkkoU291cFJlcXVlc3QqIHJlcXVlc3QpCiB7CiAgICAgQVNTRVJU
KHJlcXVlc3QpOwogICAgIHJldHVybiBmYWlsaW5nVVJJKHNvdXBfcmVxdWVzdF9nZXRfdXJpKHJl
cXVlc3QpKTsKQEAgLTg1LDcgKzg0LDcgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjp0
bHNFcnJvcihTb3VwUmVxdWVzdCogcmVxdWVzdCwgdW5zaWduZWQgdGxzRXJyb3JzLAogICAgIHJl
dHVybiByZXNvdXJjZUVycm9yOwogfQogCi1SZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OnRp
bWVvdXRFcnJvcihjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwpCitSZXNvdXJjZUVycm9yIFJlc291
cmNlRXJyb3I6OnRpbWVvdXRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwpCiB7CiAgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IGVpdGhlciBiZSBpbnRlZ3JhdGVkIGludG8gRXJy
b3JzKEd0ay9FRkwpLmggb3IgdGhlCiAgICAgLy8gbmV0d29ya2luZyBlcnJvcnMgZnJvbSB0aG9z
ZSBmaWxlcyBzaG91bGQgYmUgbW92ZWQgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXgg
OTU2ODk3YjVjOWRjZmRhM2VkZDEzMmY0ZjE3ZTIzNGRlZjI3ZDNkYi4uYjY3YzkwZGQ5YjRjMjk3
YzA4MmUxMjA1OGExODE5NzAyYjk3YTE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAgLTEw
NTEsNyArMTA1MSw3IEBAIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gUmVzb3VyY2VIYW5kbGU6OnJl
bGVhc2VGb3JEb3dubG9hZChSZXNvdXJjZUhhbmRsZUNsaWVudCoKIAogdm9pZCBSZXNvdXJjZUhh
bmRsZTo6dGltZW91dEZpcmVkKCkKIHsKLSAgICBjbGllbnQoKS0+ZGlkRmFpbCh0aGlzLCBSZXNv
dXJjZUVycm9yOjp0aW1lb3V0RXJyb3IoZmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkpKTsK
KyAgICBjbGllbnQoKS0+ZGlkRmFpbCh0aGlzLCBSZXNvdXJjZUVycm9yOjp0aW1lb3V0RXJyb3Io
Zmlyc3RSZXF1ZXN0KCkudXJsKCkpKTsKICAgICBjYW5jZWwoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggNGM0OGM5NGY4YjI5MzM2YjQ0MjQxMTJkNmIyZWNi
Yjk2MDgzZmM1ZS4uNTc5ZjFjY2Y4NTVmMTA5MjMyOWUyNjBmZDU0MzEyNDM1YmFhMjY2YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xMDc3LDggKzEwNzcsMTAgQEAg
dm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
ICAgICB9CiAKICAgICAvLyBOZXR3b3JrIGZhaWx1cmVzIGFyZSBhbHJlYWR5IHJlcG9ydGVkIHRv
IFdlYiBJbnNwZWN0b3IgYnkgUmVzb3VyY2VMb2FkZXIuCi0gICAgaWYgKGVycm9yLmRvbWFpbigp
ID09IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwpCi0gICAgICAgIGxvZ0NvbnNvbGVFcnJvcihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksICJYTUxIdHRwUmVxdWVzdCBjYW5ub3QgbG9hZCAiICsg
ZXJyb3IuZmFpbGluZ1VSTCgpICsgIi4gIiArIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkp
OworICAgIGlmIChlcnJvci5kb21haW4oKSA9PSBlcnJvckRvbWFpbldlYktpdEludGVybmFsKSB7
CisgICAgICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiWE1MSHR0cFJlcXVlc3QgY2Fu
bm90IGxvYWQgIiwgZXJyb3IuZmFpbGluZ1VSTCgpLnN0cmluZygpLCAiLiAiLCBlcnJvci5sb2Nh
bGl6ZWREZXNjcmlwdGlvbigpKTsKKyAgICAgICAgbG9nQ29uc29sZUVycm9yKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgbWVzc2FnZSk7CisgICAgfQogCiAgICAgbV9leGNlcHRpb25Db2RlID0g
WE1MSHR0cFJlcXVlc3RFeGNlcHRpb246Ok5FVFdPUktfRVJSOwogICAgIG5ldHdvcmtFcnJvcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDdiMjQ0NTc3N2NiMjA1NmY2Y2ZlZmUwNTdlNGVmNTg5
NzAwN2FmZTYuLmI5ZGM1MTFjMzIyNDk4Y2IzYzJlM2RhYzQwOGYzY2ViYThhZTFlZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKQEAgLTg1MSwxMiArODUxLDEyIEBAIFJlc291cmNlRXJyb3IgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzCiB7CiAgICAgLy8gRklYTUU6IE5lZWQgQ2hpY2tlbkNhdCB0byBpbmNsdWRlIENGTmV0d29y
ay9DRlVSTEVycm9yLmggdG8gZ2V0IHRoZXNlIHZhbHVlcwogICAgIC8vIEFsdGVybmF0aXZlbHks
IHdlIGNvdWxkIGNyZWF0ZSBvdXIgb3duIGVycm9yIGRvbWFpbi9jb2Rlcy4KLSAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViVVJMRXJyb3JEb21haW4pLCAtOTk5LCByZXF1ZXN0LnVy
bCgpLnN0cmluZygpLCBTdHJpbmcoIkNhbmNlbGxlZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VF
cnJvcihTdHJpbmcoV2ViVVJMRXJyb3JEb21haW4pLCAtOTk5LCByZXF1ZXN0LnVybCgpLCBTdHJp
bmcoIkNhbmNlbGxlZCIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBy
ZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBXZWJLaXRFcnJv
ckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0LCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCBXRUJfVUlf
U1RSSU5HKCJOb3QgYWxsb3dlZCB0byB1c2UgcmVzdHJpY3RlZCBuZXR3b3JrIHBvcnQiLCAiV2Vi
S2l0RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCBkZXNjcmlwdGlvbiIpKTsKKyAgICByZXR1
cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBXZWJLaXRFcnJvckNh
bm5vdFVzZVJlc3RyaWN0ZWRQb3J0LCByZXF1ZXN0LnVybCgpLCBXRUJfVUlfU1RSSU5HKCJOb3Qg
YWxsb3dlZCB0byB1c2UgcmVzdHJpY3RlZCBuZXR3b3JrIHBvcnQiLCAiV2ViS2l0RXJyb3JDYW5u
b3RVc2VSZXN0cmljdGVkUG9ydCBkZXNjcmlwdGlvbiIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCkBAIC04NjYsMjcgKzg2NiwyNyBAQCBSZXNvdXJjZUVy
cm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNv
bnN0IFJlc291cmNlUgogCiBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5u
b3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJl
dHVybiBSZXNvdXJjZUVycm9yKFN0cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIFdlYktpdEVycm9y
Q2Fubm90U2hvd1VSTCwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgV0VCX1VJX1NUUklORygiVGhl
IFVSTCBjYW5ceEUyXHg4MFx4OTl0IGJlIHNob3duIiwgIldlYktpdEVycm9yQ2Fubm90U2hvd1VS
TCBkZXNjcmlwdGlvbiIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0
RXJyb3JEb21haW4pLCBXZWJLaXRFcnJvckNhbm5vdFNob3dVUkwsIHJlcXVlc3QudXJsKCksIFdF
Ql9VSV9TVFJJTkcoIlRoZSBVUkwgY2FuXHhFMlx4ODBceDk5dCBiZSBzaG93biIsICJXZWJLaXRF
cnJvckNhbm5vdFNob3dVUkwgZGVzY3JpcHRpb24iKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0
cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIFdlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRC
eVBvbGljeUNoYW5nZSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgV0VCX1VJX1NUUklORygiRnJh
bWUgbG9hZCBpbnRlcnJ1cHRlZCIsICJXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQ
b2xpY3lDaGFuZ2UgZGVzY3JpcHRpb24iKSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoU3Ry
aW5nKFdlYktpdEVycm9yRG9tYWluKSwgV2ViS2l0RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5
UG9saWN5Q2hhbmdlLCByZXF1ZXN0LnVybCgpLCBXRUJfVUlfU1RSSU5HKCJGcmFtZSBsb2FkIGlu
dGVycnVwdGVkIiwgIldlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5n
ZSBkZXNjcmlwdGlvbiIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nKCksIFdlYktpdEVycm9yQ2Fu
bm90U2hvd01JTUVUeXBlLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgV0VCX1VJX1NUUklORygi
Q29udGVudCB3aXRoIHNwZWNpZmllZCBNSU1FIHR5cGUgY2FuXHhFMlx4ODBceDk5dCBiZSBzaG93
biIsICJXZWJLaXRFcnJvckNhbm5vdFNob3dNSU1FVHlwZSBkZXNjcmlwdGlvbiIpKTsKKyAgICBy
ZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoKSwgV2ViS2l0RXJyb3JDYW5ub3RTaG93TUlNRVR5
cGUsIHJlc3BvbnNlLnVybCgpLCBXRUJfVUlfU1RSSU5HKCJDb250ZW50IHdpdGggc3BlY2lmaWVk
IE1JTUUgdHlwZSBjYW5ceEUyXHg4MFx4OTl0IGJlIHNob3duIiwgIldlYktpdEVycm9yQ2Fubm90
U2hvd01JTUVUeXBlIGRlc2NyaXB0aW9uIikpOwogfQogCiBSZXNvdXJjZUVycm9yIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nKFdlYlVSTEVy
cm9yRG9tYWluKSwgLTExMDAsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBTdHJpbmcoIkZpbGUg
ZG9lcyBub3QgZXhpc3QuIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0cmluZyhXZWJV
UkxFcnJvckRvbWFpbiksIC0xMTAwLCByZXNwb25zZS51cmwoKSwgU3RyaW5nKCJGaWxlIGRvZXMg
bm90IGV4aXN0LiIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVudDo6
cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4p
LCBXZWJLaXRFcnJvclBsdWdJbldpbGxIYW5kbGVMb2FkLCByZXNwb25zZS51cmwoKS5zdHJpbmco
KSwgV0VCX1VJX1NUUklORygiUGx1Zy1pbiBoYW5kbGVkIGxvYWQiLCAiV2ViS2l0RXJyb3JQbHVn
SW5XaWxsSGFuZGxlTG9hZCBkZXNjcmlwdGlvbiIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBXZWJLaXRFcnJvclBsdWdJbldpbGxIYW5kbGVM
b2FkLCByZXNwb25zZS51cmwoKSwgV0VCX1VJX1NUUklORygiUGx1Zy1pbiBoYW5kbGVkIGxvYWQi
LCAiV2ViS2l0RXJyb3JQbHVnSW5XaWxsSGFuZGxlTG9hZCBkZXNjcmlwdGlvbiIpKTsKIH0KIAog
Ym9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRmFsbEJhY2soY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IpCkBAIC0xMTY2LDcgKzExNjYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdpblZpZXcqIHBsdWdp
bgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgUmVzb3Vy
Y2VFcnJvciByZXNvdXJjZUVycm9yKFN0cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIGVycm9yQ29k
ZSwgcGx1Z2luVmlldy0+dXJsKCkuc3RyaW5nKCksIFN0cmluZygpKTsKKyAgICBSZXNvdXJjZUVy
cm9yIHJlc291cmNlRXJyb3IoU3RyaW5nKFdlYktpdEVycm9yRG9tYWluKSwgZXJyb3JDb2RlLCBw
bHVnaW5WaWV3LT51cmwoKSwgU3RyaW5nKCkpOwogICAgIENPTVB0cjxJV2ViRXJyb3I+IGVycm9y
KEFkb3B0Q09NLCBXZWJFcnJvcjo6Y3JlYXRlSW5zdGFuY2UocmVzb3VyY2VFcnJvciwgdXNlcklu
Zm9CYWcuZ2V0KCkpKTsKICAgICAgCiAgICAgcmVzb3VyY2VMb2FkRGVsZWdhdGUtPnBsdWdJbkZh
aWxlZFdpdGhFcnJvcih3ZWJWaWV3LCBlcnJvci5nZXQoKSwgZ2V0V2ViRGF0YVNvdXJjZShmcmFt
ZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkpOwpAQCAtMTI0NCw3ICsxMjQ0LDcgQEAgUGFz
c1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lk
Z2V0KGNvbnN0IEludFNpemUmIHAKIAogICAgIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJh
Zz4gdXNlckluZm9CYWcgPSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2Uo
KTsKIAotICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JE
b21haW4pLCBXZWJLaXRFcnJvckphdmFVbmF2YWlsYWJsZSwgU3RyaW5nKCksIFdFQl9VSV9TVFJJ
TkcoIkphdmEgaXMgdW5hdmFpbGFibGUiLCAiV2ViS2l0RXJyb3JKYXZhVW5hdmFpbGFibGUgZGVz
Y3JpcHRpb24iKSk7CisgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0cmluZyhXZWJL
aXRFcnJvckRvbWFpbiksIFdlYktpdEVycm9ySmF2YVVuYXZhaWxhYmxlLCBVUkwoKSwgV0VCX1VJ
X1NUUklORygiSmF2YSBpcyB1bmF2YWlsYWJsZSIsICJXZWJLaXRFcnJvckphdmFVbmF2YWlsYWJs
ZSBkZXNjcmlwdGlvbiIpKTsKICAgICBDT01QdHI8SVdlYkVycm9yPiBlcnJvcihBZG9wdENPTSwg
V2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKHJlc291cmNlRXJyb3IsIHVzZXJJbmZvQmFnLmdldCgp
KSk7CiAKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwIGIvU291cmNlL1dlYktp
dC93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKaW5kZXggNDYxNWQ3Nzg0OTBiNzgwYTE3YjU1MWIz
ZjVhMTRmMzdlYzk2MzI2Zi4uMTVmMTE5Nzc4NzhiOTUwYjdiZTQwZjdjY2FiM2IyNWNjOTNlYWEz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKQEAgLTMwNyw3ICszMDcs
NyBAQCBIUkVTVUxUIFdlYkRvd25sb2FkOjpjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShf
SW5fb3B0XyBJV2ViVVJMQXV0aGVudGljYXRpbwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3
ZSBuZWVkIGEgVVJMIG9yIGRlc2NyaXB0aW9uIGZvciB0aGlzIGVycm9yIGNvZGU/Ci0gICAgUmVz
b3VyY2VFcnJvciBlcnJvcihTdHJpbmcoV2ViVVJMRXJyb3JEb21haW4pLCBXZWJVUkxFcnJvclVz
ZXJDYW5jZWxsZWRBdXRoZW50aWNhdGlvbiwgIiIsICIiKTsKKyAgICBSZXNvdXJjZUVycm9yIGVy
cm9yKFN0cmluZyhXZWJVUkxFcnJvckRvbWFpbiksIFdlYlVSTEVycm9yVXNlckNhbmNlbGxlZEF1
dGhlbnRpY2F0aW9uLCBVUkwoKSwgIiIpOwogICAgIENPTVB0cjxXZWJFcnJvcj4gd2ViRXJyb3Io
QWRvcHRDT00sIFdlYkVycm9yOjpjcmVhdGVJbnN0YW5jZShlcnJvcikpOwogICAgIG1fZGVsZWdh
dGUtPmRpZEZhaWxXaXRoRXJyb3IodGhpcywgd2ViRXJyb3IuZ2V0KCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJFcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJF
cnJvci5jcHAKaW5kZXggZWY4ZmFhM2FhNTYxN2YxYzE0ZDRmOGU3YTQxZTI3MzMzMjRmY2JkMC4u
MTcwYzZjOGVmZTU5MGIxY2UwZWVlNzk2MmYyMzEwZGNkNTMyYjQ2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vV2ViRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkVy
cm9yLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIFVMT05HIFdlYkVycm9yOjpSZWxlYXNlKCkKIAog
SFJFU1VMVCBXZWJFcnJvcjo6aW5pdChfSW5fIEJTVFIgZG9tYWluLCBpbnQgY29kZSwgX0luXyBC
U1RSIHVybCkKIHsKLSAgICBtX2Vycm9yID0gUmVzb3VyY2VFcnJvcihTdHJpbmcoZG9tYWluLCBT
eXNTdHJpbmdMZW4oZG9tYWluKSksIGNvZGUsIFN0cmluZyh1cmwsIFN5c1N0cmluZ0xlbih1cmwp
KSwgU3RyaW5nKCkpOworICAgIG1fZXJyb3IgPSBSZXNvdXJjZUVycm9yKFN0cmluZyhkb21haW4s
IFN5c1N0cmluZ0xlbihkb21haW4pKSwgY29kZSwgVVJMKFVSTCgpLCBTdHJpbmcodXJsLCBTeXNT
dHJpbmdMZW4odXJsKSkpLCBTdHJpbmcoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3du
bG9hZFNvdXBFcnJvcnNFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL2VmbC9Eb3dubG9hZFNvdXBFcnJvcnNFZmwuY3BwCmluZGV4IDk0NmYzNTE1NDliZTdi
OTZkZDhlN2M0NTg3MmE0N2ZiMWRmZmQ1MmEuLmFjMDBkNTFiMzcxMzg5MjFlNzc2YjFhYzU4YTBk
NDU1NTE2YjA4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9lZmwvRG93bmxvYWRTb3VwRXJyb3JzRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvZWZsL0Rvd25sb2FkU291cEVycm9yc0VmbC5jcHAK
QEAgLTMzLDcgKzMzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1SZXNvdXJjZUVycm9yIHBsYXRmb3JtRG93bmxvYWROZXR3b3JrRXJyb3IoaW50
IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2Fs
aXplZERlc2NyaXB0aW9uKQorUmVzb3VyY2VFcnJvciBwbGF0Zm9ybURvd25sb2FkTmV0d29ya0Vy
cm9yKGludCBlcnJvckNvZGUsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBs
b2NhbGl6ZWREZXNjcmlwdGlvbikKIHsKICAgICByZXR1cm4gZG93bmxvYWROZXR3b3JrRXJyb3Io
UmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBlcnJvckNvZGUsIGZhaWxpbmdVUkws
IGxvY2FsaXplZERlc2NyaXB0aW9uKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvZ3RrL0Rvd25sb2FkU291cEVycm9yc0d0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvZ3RrL0Rvd25sb2FkU291cEVy
cm9yc0d0ay5jcHAKaW5kZXggMGQzZjlkM2VkZDE1ZGJhYjI3Mjg0YmRmZmQ4ZDE3NmU4NDIyM2U5
My4uYmEyZTdiNDU2YTQxNWYxN2Q1OTY1MzAwMWJiZGZhYzBiZTI4MDM0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2d0ay9Eb3dubG9hZFNvdXBF
cnJvcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9ndGsvRG93bmxvYWRTb3VwRXJyb3JzR3RrLmNwcApAQCAtMzMsNyArMzMsNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlc291cmNlRXJyb3Ig
cGxhdGZvcm1Eb3dubG9hZE5ldHdvcmtFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcm
IGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCitSZXNvdXJj
ZUVycm9yIHBsYXRmb3JtRG93bmxvYWROZXR3b3JrRXJyb3IoaW50IGVycm9yQ29kZSwgY29uc3Qg
VVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQogewog
ICAgIHJldHVybiBkb3dubG9hZE5ldHdvcmtFcnJvcihSZXNvdXJjZUVycm9yKGVycm9yRG9tYWlu
RG93bmxvYWQsIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24pKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9z
b3VwL0Rvd25sb2FkU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCmluZGV4IDU2NTVkZmM0YmI2ZmVlMjMzMDliMzBi
NGZkZGNkOTg0YmU5NmVmODMuLmU0OTc2NmJkNTljMTg2YTkyMTdiMjNhY2E4NjdhMzA3ZjE1NjNk
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9z
b3VwL0Rvd25sb2FkU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6
CiAgICAgICAgIG1fZG93bmxvYWQtPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiAKICAg
ICAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwKSB7Ci0gICAgICAgICAg
ICBkb3dubG9hZEZhaWxlZChwbGF0Zm9ybURvd25sb2FkTmV0d29ya0Vycm9yKHJlc3BvbnNlLmh0
dHBTdGF0dXNDb2RlKCksIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCByZXNwb25zZS5odHRwU3Rh
dHVzVGV4dCgpKSk7CisgICAgICAgICAgICBkb3dubG9hZEZhaWxlZChwbGF0Zm9ybURvd25sb2Fk
TmV0d29ya0Vycm9yKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlc3BvbnNlLnVybCgpLCBy
ZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L3NvdXAvRG93bmxvYWRTb3VwRXJyb3JzLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXBFcnJvcnMuaAppbmRleCA4OWUyM2UwODM3ZjBj
NTA4MWRiYjMxYmFkNzZmOGU5YTY0OGZkYzQxLi5kM2ZkNjJiNDRjNzJmYjhmZmU5NDJhZGY2ZWUy
YThiY2U1MDgzZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXBFcnJvcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXBFcnJvcnMuaApAQCAtMzEs
NyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciBwbGF0Zm9ybURvd25sb2FkTmV0d29ya0Vycm9yKGludCBlcnJvckNvZGUsIGNvbnN0IFN0cmlu
ZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbik7CitXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIHBsYXRmb3JtRG93bmxvYWROZXR3b3JrRXJyb3IoaW50IGVycm9y
Q29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2Ny
aXB0aW9uKTsKIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgcGxhdGZvcm1Eb3dubG9hZERlc3RpbmF0
aW9uRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAppbmRleCA2
NzAxNjRmNjg5M2IyNTNmMDc4ZmEyOWMzYTE0ODQxODk0MzAyOTA4Li44YTg3NzAyODhkZDhlNjAx
Y2I1NzliNDY5ZWNiZGRmMThhNWMxNjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcApAQCAtMTkzLDcgKzE5
Myw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZW5jb2RlUGxhdGZvcm1E
YXRhKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwKIAogICAgIGVuY29kZXIgPDwgcmVzb3VyY2VF
cnJvci5kb21haW4oKTsKICAgICBlbmNvZGVyIDw8IHJlc291cmNlRXJyb3IuZXJyb3JDb2RlKCk7
Ci0gICAgZW5jb2RlciA8PCByZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKTsKKyAgICBlbmNvZGVy
IDw8IHJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgpLnN0cmluZygpOwogICAgIGVuY29kZXIgPDwg
cmVzb3VyY2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpOwogICAgIGVuY29kZXIgPDwgcmVz
b3VyY2VFcnJvci5pc0NhbmNlbGxhdGlvbigpOwogICAgIGVuY29kZXIgPDwgcmVzb3VyY2VFcnJv
ci5pc1RpbWVvdXQoKTsKQEAgLTIzNSw3ICsyMzUsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVz
b3VyY2VFcnJvcj46OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXImIGRlY29kZXIs
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc1RpbWVvdXQpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICByZXNvdXJjZUVycm9yID0gUmVzb3VyY2VFcnJvcihkb21haW4sIGVycm9yQ29k
ZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24pOworICAgIHJlc291cmNlRXJyb3Ig
PSBSZXNvdXJjZUVycm9yKGRvbWFpbiwgZXJyb3JDb2RlLCBVUkwoVVJMKCksIGZhaWxpbmdVUkwp
LCBsb2NhbGl6ZWREZXNjcmlwdGlvbik7CiAgICAgcmVzb3VyY2VFcnJvci5zZXRJc0NhbmNlbGxh
dGlvbihpc0NhbmNlbGxhdGlvbik7CiAgICAgcmVzb3VyY2VFcnJvci5zZXRJc1RpbWVvdXQoaXNU
aW1lb3V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAppbmRleCA4YzkxNzQ5ZDFlZjZhZjQwYWEx
MjQwMDZhNDM5MzY3ODQ3OWM3ODFkLi44NzJhNTY0NjEyMGNiNzA0NDg1ZTZiYjU4MTY5OWIwZDA3
MmIwYmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRVUklTY2hlbWVSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcApAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQg
d2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3IoV2ViS2l0VVJJU2NoZW1lUmVx
dWVzdCogcmVxdWVzdCwgR0VyCiAgICAgICAgIHJldHVybjsKIAogICAgIHByaXYtPnN0cmVhbSA9
IG51bGxwdHI7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKGdfcXVh
cmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCB0b1dlYkNvcmVFcnJvcihlcnJvci0+Y29kZSks
IHByaXYtPnVyaS5kYXRhKCksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKTsKKyAg
ICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmco
ZXJyb3ItPmRvbWFpbiksIHRvV2ViQ29yZUVycm9yKGVycm9yLT5jb2RlKSwgV2ViQ29yZTo6VVJM
KHByaXYtPnNvdXBVUkkuZ2V0KCkpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7
CiAgICAgcHJpdi0+d2ViUmVxdWVzdE1hbmFnZXItPmRpZEZhaWxXaXRoRXJyb3IocHJpdi0+cmVx
dWVzdElELCByZXNvdXJjZUVycm9yKTsKICAgICB3ZWJraXRXZWJDb250ZXh0RGlkRmluaXNoTG9h
ZGluZ0N1c3RvbVByb3RvY29sKHByaXYtPndlYkNvbnRleHQsIHByaXYtPnJlcXVlc3RJRCk7CiB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267896</attachid>
            <date>2015-12-24 07:56:52 -0800</date>
            <delta_ts>2015-12-24 08:06:30 -0800</delta_ts>
            <desc>Patch v7</desc>
            <filename>bug-146391-20151224075616.patch</filename>
            <type>text/plain</type>
            <size>54167</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0Mzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTk5Y2NlMDBmMWMxMTk3
NmM4MWZmZDBkY2EwOGU1NGNkMjYwOTI5NS4uNDMwMGNjNGVjNjZhYjQ3MTM1ZDg1NGE5NWFmOTU2
ZTM4MzFhMDQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAxNS0xMi0yNCAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlRXJyb3Ig
c2hvdWxkIHN0b3JlIGZhaWxpbmdVUkwgYXMgVVJMIGluc3RlYWQgb2YgU3RyaW5nIHRvIGF2b2lk
IHJlcGFyc2luZyBhbmQgdG8gYWRkcmVzcyBGSVhNRSBjb21tZW50cyBpbiBSZXNvdXJjZUVycm9y
Q0YuY3BwIGFuZCBSZXNvdXJjZUVycm9yTWFjLm1tCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9y
Zy9iLzE0NjM5MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlU2ltcGxl
Q3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxpZ2h0RmFpbHVyZSk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRGYWlsdXJlKToKKyAgICAgICAgLSBTd2l0Y2gg
dHlwZSBvZiAndXJsJyBhcmd1bWVudCBvZiBwcmVmbGlnaHRGYWlsdXJlKCkgZnJvbQorICAgICAg
ICAgIFN0cmluZyB0byBVUkwuCisgICAgICAgIC0gVXBkYXRlIGZvciB0eXBlIGNoYW5nZSBvZiAn
ZmFpbGluZ1VSTCcgYXJndW1lbnQgdG8KKyAgICAgICAgICBSZXNvdXJjZUVycm9yKCkuCisKKyAg
ICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToK
KyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXI6OmxvYWREYXRhVVJMKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpjYW5jZWwpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgLSBVcGRhdGUgZm9yIHR5cGUgY2hh
bmdlIG9mICdmYWlsaW5nVVJMJyBhcmd1bWVudCB0bworICAgICAgICAgIFJlc291cmNlRXJyb3Io
KS4KKworICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRTb3VyY2U6OmRpZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2spOgorICAgICAgICAtIENvbnZl
cnQgZmFpbGluZ1VSTCgpIHRvIFN0cmluZyBleHBsaWNpdGx5LgorCisgICAgICAgICogcGxhdGZv
cm0vZWZsL0Vycm9yc0VmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5jZWxsZWRFcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpibG9ja2VkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6Ymxv
Y2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93
VVJMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VF
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93TUlNRVR5cGVFcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjpmaWxlRG9lc05vdEV4aXN0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpkb3dubG9hZENh
bmNlbGxlZEJ5VXNlckVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmRvd25sb2FkRGVzdGluYXRp
b25FcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjYW5jZWxsZWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpibG9ja2VkRXJy
b3IpOgorICAgICAgICAoV2ViQ29yZTo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5u
b3RTaG93TUlNRVR5cGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpmaWxlRG9lc05vdEV4aXN0
RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpkb3dubG9hZENhbmNlbGxlZEJ5VXNlckVycm9yKToKKyAgICAgICAg
KFdlYkNvcmU6OmRvd25sb2FkRGVzdGluYXRpb25FcnJvcik6CisgICAgICAgIC0gVXBkYXRlIGZv
ciB0eXBlIGNoYW5nZSBvZiAnZmFpbGluZ1VSTCcgYXJndW1lbnQgdG8KKyAgICAgICAgICBSZXNv
dXJjZUVycm9yKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JC
YXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yQmFzZTo6ZmFpbGluZ1VSTCk6
CisgICAgICAgIC0gQ2hhbmdlIHJldHVybiB0eXBlIGZyb20gU3RyaW5nIHRvIFVSTC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjpSZXNvdXJjZUVycm9yQmFzZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgLSBDaGFuZ2UgdHlw
ZSBvZiAnZmFpbGluZ1VSTCcgZnJvbSBTdHJpbmcgdG8gVVJMLgorCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcik6CisgICAgICAgIC0gQ2hhbmdlIHR5cGUgb2YgJ2Zh
aWxpbmdVUkwnIGZyb20gU3RyaW5nIHRvIFVSTC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
RXJyb3I6OnBsYXRmb3JtTGF6eUluaXQpOgorICAgICAgICAtIENsZWFuIHVwIGNvZGUgYW5kIGFk
ZHJlc3MgRklYTUUgYnkgcGFyc2luZyBDRlVSTFJlZiB1c2luZworICAgICAgICAgIFVSTCgpIGNv
bnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6Y2ZFcnJvcik6Cisg
ICAgICAgIC0gQ2xlYW4gdXAgY29kZSBhbmQgYWRkcmVzcyBGSVhNRSBhZnRlciBzd2l0Y2hpbmcg
dHlwZSBvZgorICAgICAgICAgIG1fZmFpbGluZ1VSTC4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgLSBDaGFuZ2UgdHlwZSBvZiAnZmFpbGluZ1VS
TCcgZnJvbSBTdHJpbmcgdG8gVVJMLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU5TRXJyb3JGcm9t
UmVzb3VyY2VFcnJvckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6cGxh
dGZvcm1MYXp5SW5pdCk6CisgICAgICAgIC0gQ2xlYW4gdXAgY29kZSBhbmQgYWRkcmVzcyBGSVhN
RSBhZnRlciBzd2l0Y2hpbmcgdHlwZSBvZgorICAgICAgICAgIG1fZmFpbGluZ1VSTC4KKworICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlRXJyb3I6OnRpbWVvdXRFcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZhaWxpbmdV
UkkpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6dGltZW91dEVycm9yKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp0aW1lb3V0RmlyZWQpOgorICAgICAgICAt
IENoYW5nZSB0eXBlIG9mICdmYWlsaW5nVVJMJyBmcm9tIFN0cmluZyB0byBVUkwuCisKKyAgICAg
ICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OmRpZEZhaWwpOgorICAgICAgICAtIENvbnZlcnQgZmFpbGluZ1VSTCgpIHRvIFN0cmlu
ZyBleHBsaWNpdGx5LgorICAgICAgICAtIEFsc28gc3dpdGNoIHRvIHVzaW5nIG1ha2VTdHJpbmco
KS4KKwogMjAxNS0xMi0yMiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgVHJ5IHRvIGZpeCB0aGUgaU9TIGJ1aWxkIGFmdGVyIHIxOTQzNzgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpp
bmRleCA4MjQxZTFmNmY1NzBmYTU5ZTg2ZWI0ZmI2MDY1MDI4Y2JjMTU3OTI0Li5kZGIzMjhlNTMy
MTkzMzRlOWFhY2JlNGFhOWJmZjJlN2JlY2RjNmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMTUtMTItMjQgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXNvdXJjZUVycm9yIHNob3VsZCBzdG9yZSBmYWlsaW5nVVJMIGFzIFVSTCBp
bnN0ZWFkIG9mIFN0cmluZyB0byBhdm9pZCByZXBhcnNpbmcgYW5kIHRvIGFkZHJlc3MgRklYTUUg
Y29tbWVudHMgaW4gUmVzb3VyY2VFcnJvckNGLmNwcCBhbmQgUmVzb3VyY2VFcnJvck1hYy5tbQor
ICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8xNDYzOTE+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsbGVk
RXJyb3IpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmJsb2NrZWRFcnJvcik6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAgICAg
ICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjppbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9y
KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5ub3RTaG93TUlNRVR5cGVFcnJv
cik6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmlsZURvZXNOb3RFeGlzdEVycm9y
KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwbHVnaW5XaWxsSGFuZGxlTG9hZEVy
cm9yKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0
YXJ0UGx1Z2luKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBw
bGV0V2lkZ2V0KToKKyAgICAgICAgKiBXZWJEb3dubG9hZENGTmV0LmNwcDoKKyAgICAgICAgKFdl
YkRvd25sb2FkOjpjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogV2Vi
RXJyb3IuY3BwOgorICAgICAgICAoV2ViRXJyb3I6OmluaXQpOgorICAgICAgICAtIFVwZGF0ZSBm
b3IgdHlwZSBjaGFuZ2Ugb2YgJ2ZhaWxpbmdVUkwnIGFyZ3VtZW50IHRvCisgICAgICAgICAgUmVz
b3VyY2VFcnJvcigpLgorCiAyMDE1LTEyLTIwICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBzZXRUb29sYmFySGVpZ2h0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggMDQzOWIwMmVjZTg2ZDczZjZiYzkxYTExM2U4M2IzZWM1ODYxZWVlYy4uZTY2ZDI5ZTcxMTE3
ODBmYjBjYzU0NDQ2ODBhMWI4M2ZlN2ZjNzE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBA
CisyMDE1LTEyLTI0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVzb3VyY2VFcnJvciBzaG91bGQgc3RvcmUgZmFpbGluZ1VSTCBhcyBVUkwgaW5zdGVhZCBv
ZiBTdHJpbmcgdG8gYXZvaWQgcmVwYXJzaW5nIGFuZCB0byBhZGRyZXNzIEZJWE1FIGNvbW1lbnRz
IGluIFJlc291cmNlRXJyb3JDRi5jcHAgYW5kIFJlc291cmNlRXJyb3JNYWMubW0KKyAgICAgICAg
PGh0dHA6Ly93ZWJraXQub3JnL2IvMTQ2MzkxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3du
bG9hZFNvdXBFcnJvcnNFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpwbGF0Zm9ybURvd25sb2Fk
TmV0d29ya0Vycm9yKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvZ3RrL0Rv
d25sb2FkU291cEVycm9yc0d0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBsYXRmb3JtRG93bmxv
YWROZXR3b3JrRXJyb3IpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9zb3Vw
L0Rvd25sb2FkU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9zb3Vw
L0Rvd25sb2FkU291cEVycm9ycy5oOgorICAgICAgICAqIFNoYXJlZC9zb3VwL1dlYkNvcmVBcmd1
bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNl
RXJyb3I+OjplbmNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlc291cmNlRXJyb3I+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwOgorICAgICAgICAod2Via2l0X3Vy
aV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3IpOgorICAgICAgICAtIFVwZGF0ZSBmb3IgdHlw
ZSBjaGFuZ2Ugb2YgJ2ZhaWxpbmdVUkwnIGFyZ3VtZW50IHRvCisgICAgICAgICAgUmVzb3VyY2VF
cnJvcigpLgorCiAyMDE1LTEyLTIyICBIdW5zZW9wIEplb25nICA8aHM4NS5qZW9uZ0BzYW1zdW5n
LmNvbT4KIAogICAgICAgICBbRUZMXSBld2tfYXBwbGljYXRpb25fY2FjaGVfbWFuYWdlciB0ZXN0
IGZhaWxlZCBhZnRlciByMTkzODEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGQ1NDA2MDUyYjVlNzljZmUwZTBmMDRhMTFi
MmFmMWQ1N2QyM2M5NmUuLjFmNjE0ZWIzMTc5Nzk1OGZlOGE1MmU4NGRlZGYwNmQ1YWQ1ZDgxZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6RG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyKERvY3VtZW50JiBkb2N1bWVudCwgVGhyZWFkYWJsCiAgICAgfQog
CiAgICAgaWYgKG1fb3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgPT0gRGVueUNyb3Nz
T3JpZ2luUmVxdWVzdHMpIHsKLSAgICAgICAgbV9jbGllbnQtPmRpZEZhaWwoUmVzb3VyY2VFcnJv
cihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCAi
Q3Jvc3Mgb3JpZ2luIHJlcXVlc3RzIGFyZSBub3Qgc3VwcG9ydGVkLiIpKTsKKyAgICAgICAgbV9j
bGllbnQtPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAw
LCByZXF1ZXN0LnVybCgpLCAiQ3Jvc3Mgb3JpZ2luIHJlcXVlc3RzIGFyZSBub3Qgc3VwcG9ydGVk
LiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQg
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlU2ltcGxlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1
ZXN0KGNvbnN0IFJlc291cmNlCiAKICAgICAvLyBDcm9zcy1vcmlnaW4gcmVxdWVzdHMgYXJlIG9u
bHkgYWxsb3dlZCBmb3IgSFRUUCBhbmQgcmVnaXN0ZXJlZCBzY2hlbWVzLiBXZSB3b3VsZCBjYXRj
aCB0aGlzIHdoZW4gY2hlY2tpbmcgcmVzcG9uc2UgaGVhZGVycyBsYXRlciwgYnV0IHRoZXJlIGlz
IG5vIHJlYXNvbiB0byBzZW5kIGEgcmVxdWVzdCB0aGF0J3MgZ3VhcmFudGVlZCB0byBiZSBkZW5p
ZWQuCiAgICAgaWYgKCFTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNF
bmFibGVkKHJlcXVlc3QudXJsKCkucHJvdG9jb2woKSkpIHsKLSAgICAgICAgbV9jbGllbnQtPmRp
ZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2soUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdElu
dGVybmFsLCAwLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCAiQ3Jvc3Mgb3JpZ2luIHJlcXVlc3Rz
IGFyZSBvbmx5IHN1cHBvcnRlZCBmb3IgSFRUUC4iKSk7CisgICAgICAgIG1fY2xpZW50LT5kaWRG
YWlsQWNjZXNzQ29udHJvbENoZWNrKFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRl
cm5hbCwgMCwgcmVxdWVzdC51cmwoKSwgIkNyb3NzIG9yaWdpbiByZXF1ZXN0cyBhcmUgb25seSBz
dXBwb3J0ZWQgZm9yIEhUVFAuIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNjEs
NyArMjYxLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnMKICAgICB9IGVsc2UgewogICAgICAg
ICBpZiAoIW1fc2FtZU9yaWdpblJlcXVlc3QgJiYgbV9vcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVz
dFBvbGljeSA9PSBVc2VBY2Nlc3NDb250cm9sKSB7CiAgICAgICAgICAgICBpZiAoIXBhc3Nlc0Fj
Y2Vzc0NvbnRyb2xDaGVjayhyZXNwb25zZSwgbV9vcHRpb25zLmFsbG93Q3JlZGVudGlhbHMoKSwg
c2VjdXJpdHlPcmlnaW4oKSwgYWNjZXNzQ29udHJvbEVycm9yRGVzY3JpcHRpb24pKSB7Ci0gICAg
ICAgICAgICAgICAgbV9jbGllbnQtPmRpZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2soUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKS5zdHJpbmco
KSwgYWNjZXNzQ29udHJvbEVycm9yRGVzY3JpcHRpb24pKTsKKyAgICAgICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkRmFpbEFjY2Vzc0NvbnRyb2xDaGVjayhSZXNvdXJjZUVycm9yKGVycm9yRG9tYWlu
V2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCBhY2Nlc3NDb250cm9sRXJyb3JEZXNj
cmlwdGlvbikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtMzMzLDcgKzMzMyw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpw
cmVmbGlnaHRTdWNjZXNzKCkKICAgICBsb2FkUmVxdWVzdCgqYWN0dWFsUmVxdWVzdCwgU2tpcFNl
Y3VyaXR5Q2hlY2spOwogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxp
Z2h0RmFpbHVyZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIGVycm9yRGVzY3JpcHRpb24pCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6cHJlZmxpZ2h0RmFpbHVyZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIGVycm9yRGVzY3JpcHRpb24pCiB7CiAgICAgUmVzb3VyY2VF
cnJvciBlcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwsIGVycm9yRGVzY3Jp
cHRpb24pOwogICAgIGlmIChtX2FjdHVhbFJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggNzc4ZDMxZWYzZmUyYmE1NDIy
MjZiNjc0NGNjYjdkZTM4YmUwMGM4ZC4uZmYwODNmYjkwZjE3MmFkYmNlNTM3NTRlMGVjN2RjNTBm
YjRhN2Y2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuaApAQCAtOTEsNyArOTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZvaWQgbWFrZVNpbXBsZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpOwogICAgICAgICB2b2lkIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVl
c3RXaXRoUHJlZmxpZ2h0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCk7CiAgICAgICAg
IHZvaWQgcHJlZmxpZ2h0U3VjY2VzcygpOwotICAgICAgICB2b2lkIHByZWZsaWdodEZhaWx1cmUo
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBlcnJvckRlc2NyaXB0aW9uKTsKKyAgICAgICAgdm9pZCBwcmVmbGlnaHRGYWlsdXJlKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBlcnJvckRlc2Ny
aXB0aW9uKTsKIAogICAgICAgICB2b2lkIGxvYWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIFNlY3VyaXR5Q2hlY2tQb2xpY3kpOwogICAgICAgICBib29sIGlzQWxsb3dlZFJlZGlyZWN0
KGNvbnN0IFVSTCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDE2Mjll
YzU3Y2U1ZGRjMTBjZTg5ZDMxMTA0NmU5MDBhMTQzNDNmY2QuLjFhNDBiNmRhNDQ1YzljMjgzNWFi
ZTk0NDUwZTYzMmQ2NTVhYzJiMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgK
QEAgLTMyMCwxNSArMzIwLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0dGVk
TG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKSBvdmVycmlkZSB7
IH0KIAotICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IFJlc291cmNlRXJyb3IgZXJyb3IoIiIsIDAsICIiLCAi
Iik7IGVycm9yLnNldElzQ2FuY2VsbGF0aW9uKHRydWUpOyByZXR1cm4gZXJyb3I7IH0KLSAgICB2
aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
IG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsICIiLCAiIik7IH0KLSAgICB2
aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCAi
IiwgIiIpOyB9Ci0gICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIi
LCAwLCAiIiwgIiIpOyB9Ci0gICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9y
UG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1
cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgIiIsICIiKTsgfQotCi0gICAgdmlydHVhbCBSZXNvdXJj
ZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBv
dmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCAiIiwgIiIpOyB9Ci0gICAgdmly
dHVhbCBSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgIiIsICIiKTsg
fQotICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIi
LCAwLCAiIiwgIiIpOyB9CisgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9y
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgUmVzb3VyY2VFcnJvciBlcnJvcigi
IiwgMCwgVVJMKCksICIiKTsgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7IHJldHVybiBl
cnJvcjsgfQorICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgVVJM
KCksICIiKTsgfQorICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50Qmxv
Y2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291
cmNlRXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KKyAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3Ig
Y2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0
dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KKyAgICB2aXJ0dWFsIFJlc291
cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBVUkwoKSwgIiIp
OyB9CisKKyAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3Io
IiIsIDAsIFVSTCgpLCAiIik7IH0KKyAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgZmlsZURvZXNO
b3RFeGlzdEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiBS
ZXNvdXJjZUVycm9yKCIiLCAwLCBVUkwoKSwgIiIpOyB9CisgICAgdmlydHVhbCBSZXNvdXJjZUVy
cm9yIHBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92
ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KIAogICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRGYWxsQmFjayhjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
aW5kZXggNDgxNTBhMGUzYTRmMjdkODkwMjI1MGNhM2FkZmMwMmYzNTYzYzY4MS4uOTAwZGQzODAw
YmZhNDU1OTk3OGMyZTQxYTQwMjAwNzE1YzRjMmViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCkBAIC0yNjg2LDcgKzI2ODYsNyBAQCB1bnNpZ25lZCBsb25nIEZyYW1lTG9h
ZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dQogICAgICAgICAgICAgaWYgKGF1dG8qIGNvbnRyb2xsZXIgPSBwYWdlLT51c2VyQ29udGVudENv
bnRyb2xsZXIoKSkgewogICAgICAgICAgICAgICAgIGlmIChtX2RvY3VtZW50TG9hZGVyICYmIGNv
bnRyb2xsZXItPnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKG5ld1JlcXVlc3Qs
IFJlc291cmNlVHlwZTo6UmF3LCAqbV9kb2N1bWVudExvYWRlcikgPT0gQ29udGVudEV4dGVuc2lv
bnM6OkJsb2NrZWRTdGF0dXM6OkJsb2NrZWQpIHsKICAgICAgICAgICAgICAgICAgICAgbmV3UmVx
dWVzdCA9IHsgfTsKLSAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVy
cm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGluaXRpYWxSZXF1ZXN0LnVybCgpLnN0cmluZygp
LCBlbXB0eVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVy
cm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGluaXRpYWxSZXF1ZXN0LnVybCgpLCBl
bXB0eVN0cmluZygpKTsKICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB7IH07CiAgICAg
ICAgICAgICAgICAgICAgIGRhdGEgPSBudWxscHRyOwogICAgICAgICAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAppbmRleCAyMGQyZTZl
YzlhMzM5ZmJlZTFkZGViOTIwODQyMGNjZmMyMWNiZjA3Li5kOTMzY2VlM2Q1YmYzMDY0Mjg1MmIx
Y2MxYzAyN2VmMzQ3OTQ4MDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVk
aWFSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBNZWRpYVJlc291cmNlTG9h
ZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVz
b3UKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gY29uc29sZU1l
c3NhZ2UoIkNyb3NzLW9yaWdpbiBtZWRpYSByZXNvdXJjZSBsb2FkIGRlbmllZCBieSBDcm9zcy1P
cmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIik7CiAgICAgICAgIG1fZG9jdW1lbnQuYWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIGNvbnNvbGVNZXNzYWdlLmdldCgpKTsKICAgICAgICAgbV9kaWRQYXNzQWNjZXNzQ29udHJv
bENoZWNrID0gZmFsc2U7Ci0gICAgICAgIG1fY2xpZW50LT5hY2Nlc3NDb250cm9sQ2hlY2tGYWls
ZWQoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51
cmwoKS5zdHJpbmcoKSwgY29uc29sZU1lc3NhZ2UuZ2V0KCkpKTsKKyAgICAgICAgbV9jbGllbnQt
PmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCBjb25zb2xlTWVzc2FnZS5nZXQoKSkpOwogICAg
ICAgICBzdG9wKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAwZDgxZmY1YmEyOGEyMTA0ZDUyOGFlY2ZiYmJlNzM1
NmNhMjNiNjc4Li4xYTk3M2IwZDUyM2I4ZTFmMzJmMjVhODA4OWM4Mjk4NTc0NTBlM2VjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTI1Nyw3ICsyNTcsNyBA
QCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkRGF0YVVSTCgpCiAgICAgICAgIGlmIChsb2FkZXIt
PnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlm
ICghZGVjb2RlUmVzdWx0KSB7Ci0gICAgICAgICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwuc3RyaW5nKCksICJEYXRhIFVS
TCBkZWNvZGluZyBmYWlsZWQiKSk7CisgICAgICAgICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwsICJEYXRhIFVSTCBkZWNv
ZGluZyBmYWlsZWQiKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
aWYgKGxvYWRlci0+d2FzQ2FuY2VsbGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
V29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggYTBkYzNjYTFhZmMyNTZjNTYyMDljOWQ5
NjhkNDViMDJkZDUxMmYxNC4uMWRiOGQ2NDg5MmZhMjMyNDk3YjAzODIxNDQwNmYzN2VmMTMyZWJj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFp
blRocmVhZEJyaWRnZTo6Y2FuY2VsKCkKICAgICBpZiAoIWNsaWVudFdyYXBwZXItPmRvbmUoKSkg
ewogICAgICAgICAvLyBJZiB0aGUgY2xpZW50IGhhc24ndCByZWFjaGVkIGEgdGVybWluYXRpb24g
c3RhdGUsIHRoZW4gdHJhbnNpdGlvbiBpdCBieSBzZW5kaW5nIGEgY2FuY2VsbGF0aW9uIGVycm9y
LgogICAgICAgICAvLyBOb3RlOiBubyBtb3JlIGNsaWVudCBjYWxsYmFja3Mgd2lsbCBiZSBkb25l
IGFmdGVyIHRoaXMgbWV0aG9kIC0tIHRoZSBjbGVhckNsaWVudFdyYXBwZXIoKSBjYWxsIGVuc3Vy
ZXMgdGhhdC4KLSAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcihTdHJpbmcoKSwgMCwgU3RyaW5n
KCksIFN0cmluZygpKTsKKyAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcihTdHJpbmcoKSwgMCwg
VVJMKCksIFN0cmluZygpKTsKICAgICAgICAgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7
CiAgICAgICAgIGNsaWVudFdyYXBwZXItPmRpZEZhaWwoZXJyb3IpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IDczNzhkNmQxYWM5MjQxYmM2NzY5Njk3NjMyYzdjZjQ3YmJmNTJiOWUuLmQ5ZmNmZTYyNDM2
MzA0OTM5ZDFmZmE4MmVjM2EwMzcwMGUyNjRhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtNTQ0LDcgKzU0NCw3
IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlCiAgICAgICAgICAgICAgICAgYXV0byByZXNvdXJj
ZSA9IGNyZWF0ZVJlc291cmNlKHR5cGUsIHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgp
LCByZXF1ZXN0LmNoYXJzZXQoKSwgc2Vzc2lvbklEKCkpOwogICAgICAgICAgICAgICAgIEFTU0VS
VChyZXNvdXJjZSk7CiAgICAgICAgICAgICAgICAgcmVzb3VyY2UtPmVycm9yKENhY2hlZFJlc291
cmNlOjpTdGF0dXM6OkxvYWRFcnJvcik7Ci0gICAgICAgICAgICAgICAgcmVzb3VyY2UtPnNldFJl
c291cmNlRXJyb3IoUmVzb3VyY2VFcnJvcihDb250ZW50RXh0ZW5zaW9uczo6V2ViS2l0Q29udGVu
dEJsb2NrZXJEb21haW4sIDAsIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkuc3RyaW5n
KCksIFdFQl9VSV9TVFJJTkcoIlRoZSBVUkwgd2FzIGJsb2NrZWQgYnkgYSBjb250ZW50IGJsb2Nr
ZXIiLCAiV2ViS2l0RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciBkZXNjcmlwdGlvbiIpKSk7
CisgICAgICAgICAgICAgICAgcmVzb3VyY2UtPnNldFJlc291cmNlRXJyb3IoUmVzb3VyY2VFcnJv
cihDb250ZW50RXh0ZW5zaW9uczo6V2ViS2l0Q29udGVudEJsb2NrZXJEb21haW4sIDAsIHJlcXVl
c3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCksIFdFQl9VSV9TVFJJTkcoIlRoZSBVUkwgd2FzIGJs
b2NrZWQgYnkgYSBjb250ZW50IGJsb2NrZXIiLCAiV2ViS2l0RXJyb3JCbG9ja2VkQnlDb250ZW50
QmxvY2tlciBkZXNjcmlwdGlvbiIpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc291cmNl
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IGI4MzQxZTZiNmMwNzU3NmY3NGY0MTIzNDUzMzJhZjVl
OTkyNmM0NjQuLjIwMTNjMDhlODBjOWUwZjA0MjM4NGI3NWI5NjE1ODAwNzUwNmM1ZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBFdmVu
dFNvdXJjZTo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBFdmVu
dFNvdXJjZTo6ZGlkRmFpbEFjY2Vzc0NvbnRyb2xDaGVjayhjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKIHsKLSAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIkV2ZW50U291cmNlIGNh
bm5vdCBsb2FkICIsIGVycm9yLmZhaWxpbmdVUkwoKSwgIi4gIiwgZXJyb3IubG9jYWxpemVkRGVz
Y3JpcHRpb24oKSk7CisgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJFdmVudFNvdXJj
ZSBjYW5ub3QgbG9hZCAiLCBlcnJvci5mYWlsaW5nVVJMKCkuc3RyaW5nKCksICIuICIsIGVycm9y
LmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwogICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IG1lc3NhZ2UpOwogCiAgICAgYWJvcnRDb25uZWN0aW9uQXR0ZW1wdCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0Vycm9yc0VmbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmNwcAppbmRleCA2ZWZmNTU1OTMzYzk2MzFhMjM4MmUy
NmNkMTkyMjkzYzdkOGI2ZTM3Li4zMjgyNmU1NjcyNzMwM2JlZmRlMjljMDhkZThjNTdhYjQ5ZGJl
MzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmNwcApAQCAtMzQs
NDIgKzM0LDQyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvciBjYW5jZWxs
ZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJl
c291cmNlRXJyb3IoZXJyb3JEb21haW5OZXR3b3JrLCBOZXR3b3JrRXJyb3JDYW5jZWxsZWQsIHJl
cXVlc3QudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiTG9hZCByZXF1ZXN0IGNhbmNlbGxl
ZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbk5ldHdvcmssIE5ldHdv
cmtFcnJvckNhbmNlbGxlZCwgcmVxdWVzdC51cmwoKSwgQVNDSUlMaXRlcmFsKCJMb2FkIHJlcXVl
c3QgY2FuY2VsbGVkIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJy
b3JEb21haW5Qb2xpY3ksIFBvbGljeUVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQsIHJlcXVl
c3QudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiTm90IGFsbG93ZWQgdG8gdXNlIHJlc3Ry
aWN0ZWQgbmV0d29yayBwb3J0IikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9t
YWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0LCByZXF1ZXN0LnVy
bCgpLCBBU0NJSUxpdGVyYWwoIk5vdCBhbGxvd2VkIHRvIHVzZSByZXN0cmljdGVkIG5ldHdvcmsg
cG9ydCIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9y
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tl
ciwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJCbG9ja2VkIGJ5IGNvbnRl
bnQgYmxvY2tlciIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGlj
eSwgUG9saWN5RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciwgcmVxdWVzdC51cmwoKSwgQVND
SUlMaXRlcmFsKCJCbG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlciIpKTsKIH0KIAogUmVzb3VyY2VF
cnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQog
ewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJv
ckNhbm5vdFNob3dVUkwsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiVVJM
IGNhbm5vdCBiZSBzaG93biIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFp
blBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RTaG93VVJMLCByZXF1ZXN0LnVybCgpLCBBU0NJSUxp
dGVyYWwoIlVSTCBjYW5ub3QgYmUgc2hvd24iKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgaW50ZXJy
dXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
CiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Qb2xpY3ksIFBvbGljeUVy
cm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwgcmVxdWVzdC51cmwoKS5zdHJp
bmcoKSwgQVNDSUlMaXRlcmFsKCJGcmFtZSBsb2FkIHdhcyBpbnRlcnJ1cHRlZCIpKTsKKyAgICBy
ZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JGcmFtZUxv
YWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCByZXF1ZXN0LnVybCgpLCBBU0NJSUxpdGVyYWwo
IkZyYW1lIGxvYWQgd2FzIGludGVycnVwdGVkIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGNhbm5v
dFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewot
ICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNh
bm5vdFNob3dNaW1lVHlwZSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgi
Q29udGVudCB3aXRoIHRoZSBzcGVjaWZpZWQgTUlNRSB0eXBlIGNhbm5vdCBiZSBzaG93biIpKTsK
KyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JD
YW5ub3RTaG93TWltZVR5cGUsIHJlc3BvbnNlLnVybCgpLCBBU0NJSUxpdGVyYWwoIkNvbnRlbnQg
d2l0aCB0aGUgc3BlY2lmaWVkIE1JTUUgdHlwZSBjYW5ub3QgYmUgc2hvd24iKSk7CiB9CiAKIFJl
c291cmNlRXJyb3IgZmlsZURvZXNOb3RFeGlzdEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluTmV0d29y
aywgTmV0d29ya0Vycm9yRmlsZURvZXNOb3RFeGlzdCwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCks
IEFTQ0lJTGl0ZXJhbCgiRmlsZSBkb2VzIG5vdCBleGlzdCIpKTsKKyAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpbk5ldHdvcmssIE5ldHdvcmtFcnJvckZpbGVEb2VzTm90RXhpc3Qs
IHJlc3BvbnNlLnVybCgpLCBBU0NJSUxpdGVyYWwoIkZpbGUgZG9lcyBub3QgZXhpc3QiKSk7CiB9
CiAKIFJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRv
bWFpblBsdWdpbiwgUGx1Z2luRXJyb3JXaWxsSGFuZGxlTG9hZCwgcmVzcG9uc2UudXJsKCkuc3Ry
aW5nKCksIEFTQ0lJTGl0ZXJhbCgiUGx1Z2luIHdpbGwgaGFuZGxlIGxvYWQiKSk7CisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5QbHVnaW4sIFBsdWdpbkVycm9yV2lsbEhhbmRs
ZUxvYWQsIHJlc3BvbnNlLnVybCgpLCBBU0NJSUxpdGVyYWwoIlBsdWdpbiB3aWxsIGhhbmRsZSBs
b2FkIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0IFJl
c291cmNlRXJyb3ImIG5ldHdvcmtFcnJvcikKQEAgLTc5LDEyICs3OSwxMiBAQCBSZXNvdXJjZUVy
cm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIG5ldHdvcmtFcnJv
cikKIAogUmVzb3VyY2VFcnJvciBkb3dubG9hZENhbmNlbGxlZEJ5VXNlckVycm9yKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVy
cm9yRG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JDYW5jZWxsZWRCeVVzZXIsIHJlc3BvbnNl
LnVybCgpLnN0cmluZygpLCBBU0NJSUxpdGVyYWwoIlVzZXIgY2FuY2VsbGVkIHRoZSBkb3dubG9h
ZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBEb3du
bG9hZEVycm9yQ2FuY2VsbGVkQnlVc2VyLCByZXNwb25zZS51cmwoKSwgQVNDSUlMaXRlcmFsKCJV
c2VyIGNhbmNlbGxlZCB0aGUgZG93bmxvYWQiKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgZG93bmxv
YWREZXN0aW5hdGlvbkVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJv
ckRvbWFpbkRvd25sb2FkLCBEb3dubG9hZEVycm9yRGVzdGluYXRpb24sIHJlc3BvbnNlLnVybCgp
LnN0cmluZygpLCBlcnJvck1lc3NhZ2UpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9y
RG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JEZXN0aW5hdGlvbiwgcmVzcG9uc2UudXJsKCks
IGVycm9yTWVzc2FnZSk7CiB9CiAKIFJlc291cmNlRXJyb3IgcHJpbnRFcnJvcihjb25zdCBVUkwm
IGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcAppbmRleCA2ODhhOTA2ZDllYjQwOGVkZmI0NzNhZmZm
Nzk4MjU2NDZlYzFmZTBmLi44ZGZkMTU4YjNiNGQ2YzU0NGJkYjI5YTYxNTc0MWRiZGE0YjQxYTU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcApAQCAtMjksNjcg
KzI5LDU3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRF
cnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJlc291
cmNlRXJyb3IoZXJyb3JEb21haW5OZXR3b3JrLCBOZXR3b3JrRXJyb3JDYW5jZWxsZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgXygiTG9hZCByZXF1
ZXN0IGNhbmNlbGxlZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbk5l
dHdvcmssIE5ldHdvcmtFcnJvckNhbmNlbGxlZCwgcmVxdWVzdC51cmwoKSwgXygiTG9hZCByZXF1
ZXN0IGNhbmNlbGxlZCIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVy
cm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIF8oIk5vdCBhbGxv
d2VkIHRvIHVzZSByZXN0cmljdGVkIG5ldHdvcmsgcG9ydCIpKTsKKyAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVk
UG9ydCwgcmVxdWVzdC51cmwoKSwgXygiTm90IGFsbG93ZWQgdG8gdXNlIHJlc3RyaWN0ZWQgbmV0
d29yayBwb3J0IikpOwogfQogCiBSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2Vy
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckJsb2NrZWRCeUNvbnRlbnRC
bG9ja2VyLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCBfKCJCbG9ja2VkIGJ5IGNvbnRlbnQgYmxv
Y2tlciIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9s
aWN5RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciwgcmVxdWVzdC51cmwoKSwgXygiQmxvY2tl
ZCBieSBjb250ZW50IGJsb2NrZXIiKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VS
TEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gUmVz
b3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RTaG93VVJMLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIF8oIlVSTCBj
YW5ub3QgYmUgc2hvd24iKSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Q
b2xpY3ksIFBvbGljeUVycm9yQ2Fubm90U2hvd1VSTCwgcmVxdWVzdC51cmwoKSwgXygiVVJMIGNh
bm5vdCBiZSBzaG93biIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZvclBvbGlj
eUNoYW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1
cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JGcmFtZUxvYWRJ
bnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3QudXJsKCkuc3RyaW5nKCksIF8oIkZyYW1lIGxvYWQgd2FzIGludGVycnVwdGVkIikpOworICAg
IHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckZyYW1l
TG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsIHJlcXVlc3QudXJsKCksIF8oIkZyYW1lIGxv
YWQgd2FzIGludGVycnVwdGVkIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1F
VHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIHJldHVy
biBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFNob3dN
aW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS51cmwoKS5zdHJpbmco
KSwgXygiQ29udGVudCB3aXRoIHRoZSBzcGVjaWZpZWQgTUlNRSB0eXBlIGNhbm5vdCBiZSBzaG93
biIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5
RXJyb3JDYW5ub3RTaG93TWltZVR5cGUsIHJlc3BvbnNlLnVybCgpLCBfKCJDb250ZW50IHdpdGgg
dGhlIHNwZWNpZmllZCBNSU1FIHR5cGUgY2Fubm90IGJlIHNob3duIikpOwogfQogCiBSZXNvdXJj
ZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbk5ldHdvcmssIE5l
dHdvcmtFcnJvckZpbGVEb2VzTm90RXhpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVz
cG9uc2UudXJsKCkuc3RyaW5nKCksIF8oIkZpbGUgZG9lcyBub3QgZXhpc3QiKSk7CisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5OZXR3b3JrLCBOZXR3b3JrRXJyb3JGaWxlRG9l
c05vdEV4aXN0LCByZXNwb25zZS51cmwoKSwgXygiRmlsZSBkb2VzIG5vdCBleGlzdCIpKTsKIH0K
IAogUmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9t
YWluUGx1Z2luLCBQbHVnaW5FcnJvcldpbGxIYW5kbGVMb2FkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBfKCJQbHVnaW4gd2lsbCBoYW5kbGUgbG9h
ZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBsdWdpbiwgUGx1Z2lu
RXJyb3JXaWxsSGFuZGxlTG9hZCwgcmVzcG9uc2UudXJsKCksIF8oIlBsdWdpbiB3aWxsIGhhbmRs
ZSBsb2FkIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0
IFJlc291cmNlRXJyb3ImIG5ldHdvcmtFcnJvcikKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihlcnJvckRvbWFpbkRvd25sb2FkLCBEb3dubG9hZEVycm9yTmV0d29yaywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBuZXR3b3JrRXJyb3IuZmFpbGluZ1VSTCgpLCBuZXR3b3JrRXJyb3IubG9j
YWxpemVkRGVzY3JpcHRpb24oKSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21h
aW5Eb3dubG9hZCwgRG93bmxvYWRFcnJvck5ldHdvcmssIG5ldHdvcmtFcnJvci5mYWlsaW5nVVJM
KCksIG5ldHdvcmtFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKIH0KIAogUmVzb3VyY2VF
cnJvciBkb3dubG9hZENhbmNlbGxlZEJ5VXNlckVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxv
YWQsIERvd25sb2FkRXJyb3JDYW5jZWxsZWRCeVVzZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIF8oIlVzZXIgY2FuY2VsbGVkIHRoZSBkb3dubG9h
ZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBEb3du
bG9hZEVycm9yQ2FuY2VsbGVkQnlVc2VyLCByZXNwb25zZS51cmwoKSwgXygiVXNlciBjYW5jZWxs
ZWQgdGhlIGRvd25sb2FkIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGRvd25sb2FkRGVzdGluYXRp
b25FcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Eb3du
bG9hZCwgRG93bmxvYWRFcnJvckRlc3RpbmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBlcnJvck1lc3NhZ2UpOworICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JEZXN0aW5hdGlvbiwg
cmVzcG9uc2UudXJsKCksIGVycm9yTWVzc2FnZSk7CiB9CiAKIFJlc291cmNlRXJyb3IgcHJpbnRF
cnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9y
QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFz
ZS5oCmluZGV4IDVhZTgzN2MzMWM1ZDhhNDg1NjIwMDkzODZmODBlZGMwMTk1NGM2ODkuLmE4MGU3
NjE5YjVhZDlkZGRkZTg1NjgyMzc2MmVjZTRmNTUxYmFkM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKQEAgLTI2LDYgKzI2
LDcgQEAKICNpZm5kZWYgUmVzb3VyY2VFcnJvckJhc2VfaAogI2RlZmluZSBSZXNvdXJjZUVycm9y
QmFzZV9oCiAKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDMsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAg
ICBjb25zdCBTdHJpbmcmIGRvbWFpbigpIGNvbnN0IHsgbGF6eUluaXQoKTsgcmV0dXJuIG1fZG9t
YWluOyB9CiAgICAgaW50IGVycm9yQ29kZSgpIGNvbnN0IHsgbGF6eUluaXQoKTsgcmV0dXJuIG1f
ZXJyb3JDb2RlOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBmYWlsaW5nVVJMKCkgY29uc3QgeyBsYXp5
SW5pdCgpOyByZXR1cm4gbV9mYWlsaW5nVVJMOyB9CisgICAgY29uc3QgVVJMJiBmYWlsaW5nVVJM
KCkgY29uc3QgeyBsYXp5SW5pdCgpOyByZXR1cm4gbV9mYWlsaW5nVVJMOyB9CiAgICAgY29uc3Qg
U3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbigpIGNvbnN0IHsgbGF6eUluaXQoKTsgcmV0dXJu
IG1fbG9jYWxpemVkRGVzY3JpcHRpb247IH0KIAogICAgIHZvaWQgc2V0SXNDYW5jZWxsYXRpb24o
Ym9vbCBpc0NhbmNlbGxhdGlvbikgeyBtX2lzQ2FuY2VsbGF0aW9uID0gaXNDYW5jZWxsYXRpb247
IH0KQEAgLTYzLDcgKzY0LDcgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICB9CiAKLSAgICBSZXNv
dXJjZUVycm9yQmFzZShjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3Qg
U3RyaW5nJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQor
ICAgIFJlc291cmNlRXJyb3JCYXNlKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2Rl
LCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRp
b24pCiAgICAgICAgIDogbV9kb21haW4oZG9tYWluKQogICAgICAgICAsIG1fZmFpbGluZ1VSTChm
YWlsaW5nVVJMKQogICAgICAgICAsIG1fbG9jYWxpemVkRGVzY3JpcHRpb24obG9jYWxpemVkRGVz
Y3JpcHRpb24pCkBAIC04Niw3ICs4Nyw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBw
bGF0Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3VyY2VFcnJvciYsIGNvbnN0IFJlc291cmNlRXJyb3Im
KSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBTdHJpbmcgbV9kb21haW47Ci0gICAgU3RyaW5nIG1f
ZmFpbGluZ1VSTDsKKyAgICBVUkwgbV9mYWlsaW5nVVJMOwogICAgIFN0cmluZyBtX2xvY2FsaXpl
ZERlc2NyaXB0aW9uOwogICAgIGludCBtX2Vycm9yQ29kZTsKICAgICBib29sIG1faXNOdWxsIDog
MTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVy
cm9yLmgKaW5kZXggMTcwM2NjOTFmNjhiMmE1ZTY0Zjg3OTIzY2U2ZmJhMWQyN2RkMjQxZC4uYjMy
OGJhMTcxNTA0MTBmNTNmNzcxNjY5MjA4NTE0YjZhNzc0NmY2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKQEAgLTUwLDcgKzUw
LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0
cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNv
bnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCisgICAgUmVzb3VyY2VFcnJvcihjb25z
dCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBj
b25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQogICAgICAgICA6IFJlc291cmNlRXJy
b3JCYXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlv
bikKICAgICAgICAgLCBtX2RhdGFJc1VwVG9EYXRlKHRydWUpCiAgICAgewpAQCAtNjMsNyArNjMs
NyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoQ0ZORVRXT1JLKQogI2lmIFBMQVRGT1JNKFdJTikKLSAg
ICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25z
dCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24s
IENGRGF0YVJlZiBjZXJ0aWZpY2F0ZSk7CisgICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcm
IGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJp
bmcmIGxvY2FsaXplZERlc2NyaXB0aW9uLCBDRkRhdGFSZWYgY2VydGlmaWNhdGUpOwogICAgIFBD
Q0VSVF9DT05URVhUIGNlcnRpZmljYXRlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDZXJ0aWZpY2F0
ZShDRkRhdGFSZWYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXggMTMxZmJiMDQ2MTE3MDZmNjRk
ODUwYTFjNTBlMDVlMTRhMmM2ZTEzMy4uNjBiZmIzNjU5MWUwN2MxYmZiZWFiNmIxZTNiNTZmYWI5
ODQ3ODQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUVycm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VFcnJvckNGLmNwcApAQCAtNDksNyArNDksNyBAQCBSZXNvdXJjZUVycm9yOjpS
ZXNvdXJjZUVycm9yKENGRXJyb3JSZWYgY2ZFcnJvcikKIH0KIAogI2lmIFBMQVRGT1JNKFdJTikK
LVJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBl
cnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6
ZWREZXNjcmlwdGlvbiwgQ0ZEYXRhUmVmIGNlcnRpZmljYXRlKQorUmVzb3VyY2VFcnJvcjo6UmVz
b3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJM
JiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uLCBDRkRhdGFS
ZWYgY2VydGlmaWNhdGUpCiAgICAgOiBSZXNvdXJjZUVycm9yQmFzZShkb21haW4sIGVycm9yQ29k
ZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24pCiAgICAgLCBtX2RhdGFJc1VwVG9E
YXRlKHRydWUpCiAgICAgLCBtX2NlcnRpZmljYXRlKGNlcnRpZmljYXRlKQpAQCAtMTAxLDE3ICsx
MDEsMTIgQEAgdm9pZCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KCkKICAgICBpZiAo
dXNlckluZm8uZ2V0KCkpIHsKICAgICAgICAgQ0ZTdHJpbmdSZWYgZmFpbGluZ1VSTFN0cmluZyA9
IChDRlN0cmluZ1JlZikgQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGZhaWxp
bmdVUkxTdHJpbmdLZXkpOwogICAgICAgICBpZiAoZmFpbGluZ1VSTFN0cmluZykKLSAgICAgICAg
ICAgIG1fZmFpbGluZ1VSTCA9IFN0cmluZyhmYWlsaW5nVVJMU3RyaW5nKTsKKyAgICAgICAgICAg
IG1fZmFpbGluZ1VSTCA9IFVSTChVUkwoKSwgZmFpbGluZ1VSTFN0cmluZyk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgQ0ZVUkxSZWYgZmFpbGluZ1VSTCA9IChDRlVSTFJlZikgQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGZhaWxpbmdVUkxLZXkpOwogICAgICAgICAg
ICAgaWYgKGZhaWxpbmdVUkwpIHsKLSAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IGFic29sdXRlVVJMUmVmID0gYWRvcHRDRihDRlVSTENvcHlBYnNvbHV0ZVVSTChmYWlsaW5nVVJM
KSk7Ci0gICAgICAgICAgICAgICAgaWYgKGFic29sdXRlVVJMUmVmLmdldCgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBDRlVSTEdldFN0cmluZyByZXR1cm5zIGEgbm9ybWFsaXpl
ZCBVUkwgd2hpY2ggaXMgZGlmZmVyZW50IGZyb20gd2hhdCBpcyBhY3R1YWxseSB1c2VkIGJ5IENG
TmV0d29yay4KLSAgICAgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIHVzZSBDRlVSTEdldEJ5
dGVzIGluc3RlYWQuCi0gICAgICAgICAgICAgICAgICAgIGZhaWxpbmdVUkxTdHJpbmcgPSBDRlVS
TEdldFN0cmluZyhhYnNvbHV0ZVVSTFJlZi5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1f
ZmFpbGluZ1VSTCA9IFN0cmluZyhmYWlsaW5nVVJMU3RyaW5nKTsKLSAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgaWYgKFJldGFpblB0cjxDRlVSTFJlZj4gYWJzb2x1dGVVUkxSZWYg
PSBhZG9wdENGKENGVVJMQ29weUFic29sdXRlVVJMKGZhaWxpbmdVUkwpKSkKKyAgICAgICAgICAg
ICAgICAgICAgbV9mYWlsaW5nVVJMID0gVVJMKGFic29sdXRlVVJMUmVmLmdldCgpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBtX2xvY2FsaXplZERlc2NyaXB0aW9uID0gKENG
U3RyaW5nUmVmKSBDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga0NGRXJyb3JM
b2NhbGl6ZWREZXNjcmlwdGlvbktleSk7CkBAIC0xNTIsMTIgKzE0Nyw5IEBAIENGRXJyb3JSZWYg
UmVzb3VyY2VFcnJvcjo6Y2ZFcnJvcigpIGNvbnN0CiAgICAgICAgICAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga0NGRXJyb3JMb2NhbGl6ZWREZXNjcmlwdGlvbktleSwg
bV9sb2NhbGl6ZWREZXNjcmlwdGlvbi5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgICAg
ICBpZiAoIW1fZmFpbGluZ1VSTC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gZmFpbGluZ1VSTFN0cmluZyA9IG1fZmFpbGluZ1VSTC5jcmVhdGVDRlN0cmlu
ZygpOworICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmYWlsaW5nVVJMU3RyaW5n
ID0gbV9mYWlsaW5nVVJMLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwgZmFpbGluZ1VSTFN0cmluZ0tleSwg
ZmFpbGluZ1VSTFN0cmluZy5nZXQoKSk7Ci0gICAgICAgICAgICAvLyBGSVhFTUU6IFdlIG5vcm1h
bGx5IGNyZWF0ZSBhIENGVVJMIGZyb20gYSBzdHJpbmcgYnkgdXNpbmcgVVJMOjpjcmVhdGVDRlVS
TCwgd2hpY2ggaGFuZGxlcwotICAgICAgICAgICAgLy8gY2FzZXMgY29ycmVjdGx5IHRoYXQgQ0ZV
UkxDcmVhdGVXaXRoU3RyaW5nIGhhbmRsZXMgaW5jb3JyZWN0bHkuCi0gICAgICAgICAgICBSZXRh
aW5QdHI8Q0ZVUkxSZWY+IHVybCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKDAsIGZh
aWxpbmdVUkxTdHJpbmcuZ2V0KCksIDApKTsKLSAgICAgICAgICAgIGlmICh1cmwpCisgICAgICAg
ICAgICBpZiAoUmV0YWluUHRyPENGVVJMUmVmPiB1cmwgPSBtX2ZhaWxpbmdVUkwuY3JlYXRlQ0ZV
UkwoKSkKICAgICAgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQo
KSwgZmFpbGluZ1VSTEtleSwgdXJsLmdldCgpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaAppbmRleCA0
MWMxOTkxNGJkYmM2ZWM2MTgzOGFiOWE1YjgzOWFlYzgwZGNiM2NhLi5jMzFkZDQyNTFmNjdhMWNl
ZjZhYjQ5MjkzZTU5NDVhNzdlYWUyYjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVi
bGljOgogICAgIHsKICAgICB9CiAKLSAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9t
YWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmlu
ZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCisgICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcm
IGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJp
bmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQogICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRv
bWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbiksIG1fc3Ns
RXJyb3JzKDApCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCmluZGV4IGY3Yzg2NGNlM2I1MDk5
ZmUwMmYxNjk2OWFjZTM5N2Y2ODJlODNkYmEuLjY0MTg5MzgwMDA2MzMzM2M3MDFkYjUzY2FjMDAx
YWI1NDk5ZjcwNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlRXJyb3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQpAQCAtMTgyLDEyICsxODIsOSBAQCBzdGF0aWMg
UmV0YWluUHRyPE5TRXJyb3I+IGNyZWF0ZU5TRXJyb3JGcm9tUmVzb3VyY2VFcnJvckJhc2UoY29u
c3QgUmVzb3VyY2VFcnJvcgogICAgICAgICBbdXNlckluZm8uZ2V0KCkgc2V0VmFsdWU6cmVzb3Vy
Y2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpIGZvcktleTpOU0xvY2FsaXplZERlc2NyaXB0
aW9uS2V5XTsKIAogICAgIGlmICghcmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIC8vIEZJWEVNRTogV2Ugbm9ybWFsbHkgY3JlYXRlIGFuIE5TVVJMIGZyb20g
YSBzdHJpbmcgYnkgdXNpbmcgVVJMOjpjcmVhdGVOU1VSTCwgd2hpY2ggaGFuZGxlcwotICAgICAg
ICAvLyBjYXNlcyBjb3JyZWN0bHkgdGhhdCBpbml0V2l0aFN0cmluZzogaGFuZGxlcyBpbmNvcnJl
Y3RseS4KLSAgICAgICAgUmV0YWluUHRyPE5TVVJMPiBjb2NvYVVSTCA9IGFkb3B0TlMoW1tOU1VS
TCBhbGxvY10gaW5pdFdpdGhTdHJpbmc6cmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCldKTsKLSAg
ICAgICAgW3VzZXJJbmZvLmdldCgpIHNldFZhbHVlOnJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgp
IGZvcktleTpAIk5TRXJyb3JGYWlsaW5nVVJMU3RyaW5nS2V5Il07Ci0gICAgICAgIGlmIChjb2Nv
YVVSTCkKLSAgICAgICAgICAgIFt1c2VySW5mby5nZXQoKSBzZXRWYWx1ZTpjb2NvYVVSTC5nZXQo
KSBmb3JLZXk6QCJOU0Vycm9yRmFpbGluZ1VSTEtleSJdOworICAgICAgICBbdXNlckluZm8uZ2V0
KCkgc2V0VmFsdWU6KE5TU3RyaW5nICopcmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkuc3RyaW5n
KCkgZm9yS2V5OkAiTlNFcnJvckZhaWxpbmdVUkxTdHJpbmdLZXkiXTsKKyAgICAgICAgaWYgKE5T
VVJMICpjb2NvYVVSTCA9IChOU1VSTCAqKXJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgpKQorICAg
ICAgICAgICAgW3VzZXJJbmZvLmdldCgpIHNldFZhbHVlOmNvY29hVVJMIGZvcktleTpAIk5TRXJy
b3JGYWlsaW5nVVJMS2V5Il07CiAgICAgfQogCiAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0Vycm9y
IGFsbG9jXSBpbml0V2l0aERvbWFpbjpyZXNvdXJjZUVycm9yLmRvbWFpbigpIGNvZGU6cmVzb3Vy
Y2VFcnJvci5lcnJvckNvZGUoKSB1c2VySW5mbzp1c2VySW5mby5nZXQoKV0pOwpAQCAtMjY2LDEw
ICsyNjMsMTAgQEAgdm9pZCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KCkKICAgICBt
X2RvbWFpbiA9IFttX3BsYXRmb3JtRXJyb3IuZ2V0KCkgZG9tYWluXTsKICAgICBtX2Vycm9yQ29k
ZSA9IFttX3BsYXRmb3JtRXJyb3IuZ2V0KCkgY29kZV07CiAKLSAgICBOU1N0cmluZyogZmFpbGlu
Z1VSTFN0cmluZyA9IFtbbV9wbGF0Zm9ybUVycm9yLmdldCgpIHVzZXJJbmZvXSB2YWx1ZUZvcktl
eTpAIk5TRXJyb3JGYWlsaW5nVVJMU3RyaW5nS2V5Il07Ci0gICAgaWYgKCFmYWlsaW5nVVJMU3Ry
aW5nKQotICAgICAgICBmYWlsaW5nVVJMU3RyaW5nID0gW1tbbV9wbGF0Zm9ybUVycm9yLmdldCgp
IHVzZXJJbmZvXSB2YWx1ZUZvcktleTpAIk5TRXJyb3JGYWlsaW5nVVJMS2V5Il0gYWJzb2x1dGVT
dHJpbmddOwotICAgIG1fZmFpbGluZ1VSTCA9IGZhaWxpbmdVUkxTdHJpbmc7IAorICAgIGlmIChO
U1N0cmluZyogZmFpbGluZ1VSTFN0cmluZyA9IFtbbV9wbGF0Zm9ybUVycm9yLmdldCgpIHVzZXJJ
bmZvXSB2YWx1ZUZvcktleTpAIk5TRXJyb3JGYWlsaW5nVVJMU3RyaW5nS2V5Il0pCisgICAgICAg
IG1fZmFpbGluZ1VSTCA9IFVSTChVUkwoKSwgZmFpbGluZ1VSTFN0cmluZyk7CisgICAgZWxzZQor
ICAgICAgICBtX2ZhaWxpbmdVUkwgPSBVUkwoKE5TVVJMICopW1ttX3BsYXRmb3JtRXJyb3IuZ2V0
KCkgdXNlckluZm9dIHZhbHVlRm9yS2V5OkAiTlNFcnJvckZhaWxpbmdVUkxLZXkiXSk7CiAgICAg
Ly8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzY1NTQwNjc+CiAgICAgbV9sb2NhbGl6
ZWREZXNjcmlwdGlvbiA9IG1fZmFpbGluZ1VSTDsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlRXJyb3IuaAppbmRleCBlNTAyOTdhN2ZlOWQ0Yzg5NDkzODEwZDU2YmI4MGY4YTc1ZjRi
OGViLi40NDdiMDAyNzQ4YTYzZjVhYzQwNzZhYjNkOWMzZjJhNTIzNWZiNmZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmgK
QEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJv
ciA6IHB1YmxpYyBSZXNvdXJjZUVycm9yQmFzZQogewogcHVibGljOgotICAgIFJlc291cmNlRXJy
b3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFp
bGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICBSZXNvdXJj
ZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZh
aWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCiAgICAgICAgIDog
UmVzb3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXpl
ZERlc2NyaXB0aW9uKQogICAgICAgICAsIG1fdGxzRXJyb3JzKDApCiAgICAgewpAQCAtNTYsNyAr
NTYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlc291cmNlRXJyb3IgdHJhbnNwb3J0RXJyb3Io
U291cFJlcXVlc3QqLCBpbnQgc3RhdHVzQ29kZSwgY29uc3QgU3RyaW5nJiByZWFzb25QaHJhc2Up
OwogICAgIHN0YXRpYyBSZXNvdXJjZUVycm9yIGdlbmVyaWNHRXJyb3IoR0Vycm9yKiwgU291cFJl
cXVlc3QqKTsKICAgICBzdGF0aWMgUmVzb3VyY2VFcnJvciB0bHNFcnJvcihTb3VwUmVxdWVzdCos
IHVuc2lnbmVkIHRsc0Vycm9ycywgR1Rsc0NlcnRpZmljYXRlKik7Ci0gICAgc3RhdGljIFJlc291
cmNlRXJyb3IgdGltZW91dEVycm9yKGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCk7CisgICAgc3Rh
dGljIFJlc291cmNlRXJyb3IgdGltZW91dEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCk7CiAg
ICAgc3RhdGljIFJlc291cmNlRXJyb3IgYXV0aGVudGljYXRpb25FcnJvcihTb3VwTWVzc2FnZSop
OwogCiAgICAgdW5zaWduZWQgdGxzRXJyb3JzKCkgY29uc3QgeyByZXR1cm4gbV90bHNFcnJvcnM7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZUVycm9yU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VFcnJvclNvdXAuY3BwCmluZGV4IGIyNWI1YTBiODY1MWUxYTBjZjVmNjE5NjBkNTdh
MjI0YWE1MzU4M2IuLmFkNmI4ZTcwODY3M2FlYjlhNTY1OGU0Y2NiOGMzNTEyOTllZmVlOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVy
cm9yU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlRXJyb3JTb3VwLmNwcApAQCAtMzUsMTQgKzM1LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RhdGljIFN0cmluZyBmYWlsaW5nVVJJKFNvdXBVUkkqIHNvdXBVUkkpCitzdGF0
aWMgVVJMIGZhaWxpbmdVUkkoU291cFVSSSogc291cFVSSSkKIHsKICAgICBBU1NFUlQoc291cFVS
SSk7Ci0gICAgR1VuaXF1ZVB0cjxjaGFyPiB1cmkoc291cF91cmlfdG9fc3RyaW5nKHNvdXBVUkks
IEZBTFNFKSk7Ci0gICAgcmV0dXJuIHVyaS5nZXQoKTsKKyAgICByZXR1cm4gVVJMKHNvdXBVUkkp
OwogfQogCi1zdGF0aWMgU3RyaW5nIGZhaWxpbmdVUkkoU291cFJlcXVlc3QqIHJlcXVlc3QpCitz
dGF0aWMgVVJMIGZhaWxpbmdVUkkoU291cFJlcXVlc3QqIHJlcXVlc3QpCiB7CiAgICAgQVNTRVJU
KHJlcXVlc3QpOwogICAgIHJldHVybiBmYWlsaW5nVVJJKHNvdXBfcmVxdWVzdF9nZXRfdXJpKHJl
cXVlc3QpKTsKQEAgLTg1LDcgKzg0LDcgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjp0
bHNFcnJvcihTb3VwUmVxdWVzdCogcmVxdWVzdCwgdW5zaWduZWQgdGxzRXJyb3JzLAogICAgIHJl
dHVybiByZXNvdXJjZUVycm9yOwogfQogCi1SZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OnRp
bWVvdXRFcnJvcihjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwpCitSZXNvdXJjZUVycm9yIFJlc291
cmNlRXJyb3I6OnRpbWVvdXRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwpCiB7CiAgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IGVpdGhlciBiZSBpbnRlZ3JhdGVkIGludG8gRXJy
b3JzKEd0ay9FRkwpLmggb3IgdGhlCiAgICAgLy8gbmV0d29ya2luZyBlcnJvcnMgZnJvbSB0aG9z
ZSBmaWxlcyBzaG91bGQgYmUgbW92ZWQgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXgg
OTU2ODk3YjVjOWRjZmRhM2VkZDEzMmY0ZjE3ZTIzNGRlZjI3ZDNkYi4uYjY3YzkwZGQ5YjRjMjk3
YzA4MmUxMjA1OGExODE5NzAyYjk3YTE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAgLTEw
NTEsNyArMTA1MSw3IEBAIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gUmVzb3VyY2VIYW5kbGU6OnJl
bGVhc2VGb3JEb3dubG9hZChSZXNvdXJjZUhhbmRsZUNsaWVudCoKIAogdm9pZCBSZXNvdXJjZUhh
bmRsZTo6dGltZW91dEZpcmVkKCkKIHsKLSAgICBjbGllbnQoKS0+ZGlkRmFpbCh0aGlzLCBSZXNv
dXJjZUVycm9yOjp0aW1lb3V0RXJyb3IoZmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkpKTsK
KyAgICBjbGllbnQoKS0+ZGlkRmFpbCh0aGlzLCBSZXNvdXJjZUVycm9yOjp0aW1lb3V0RXJyb3Io
Zmlyc3RSZXF1ZXN0KCkudXJsKCkpKTsKICAgICBjYW5jZWwoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggNGM0OGM5NGY4YjI5MzM2YjQ0MjQxMTJkNmIyZWNi
Yjk2MDgzZmM1ZS4uNTc5ZjFjY2Y4NTVmMTA5MjMyOWUyNjBmZDU0MzEyNDM1YmFhMjY2YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xMDc3LDggKzEwNzcsMTAgQEAg
dm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
ICAgICB9CiAKICAgICAvLyBOZXR3b3JrIGZhaWx1cmVzIGFyZSBhbHJlYWR5IHJlcG9ydGVkIHRv
IFdlYiBJbnNwZWN0b3IgYnkgUmVzb3VyY2VMb2FkZXIuCi0gICAgaWYgKGVycm9yLmRvbWFpbigp
ID09IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwpCi0gICAgICAgIGxvZ0NvbnNvbGVFcnJvcihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksICJYTUxIdHRwUmVxdWVzdCBjYW5ub3QgbG9hZCAiICsg
ZXJyb3IuZmFpbGluZ1VSTCgpICsgIi4gIiArIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkp
OworICAgIGlmIChlcnJvci5kb21haW4oKSA9PSBlcnJvckRvbWFpbldlYktpdEludGVybmFsKSB7
CisgICAgICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiWE1MSHR0cFJlcXVlc3QgY2Fu
bm90IGxvYWQgIiwgZXJyb3IuZmFpbGluZ1VSTCgpLnN0cmluZygpLCAiLiAiLCBlcnJvci5sb2Nh
bGl6ZWREZXNjcmlwdGlvbigpKTsKKyAgICAgICAgbG9nQ29uc29sZUVycm9yKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgbWVzc2FnZSk7CisgICAgfQogCiAgICAgbV9leGNlcHRpb25Db2RlID0g
WE1MSHR0cFJlcXVlc3RFeGNlcHRpb246Ok5FVFdPUktfRVJSOwogICAgIG5ldHdvcmtFcnJvcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDdiMjQ0NTc3N2NiMjA1NmY2Y2ZlZmUwNTdlNGVmNTg5
NzAwN2FmZTYuLmI5ZGM1MTFjMzIyNDk4Y2IzYzJlM2RhYzQwOGYzY2ViYThhZTFlZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKQEAgLTg1MSwxMiArODUxLDEyIEBAIFJlc291cmNlRXJyb3IgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzCiB7CiAgICAgLy8gRklYTUU6IE5lZWQgQ2hpY2tlbkNhdCB0byBpbmNsdWRlIENGTmV0d29y
ay9DRlVSTEVycm9yLmggdG8gZ2V0IHRoZXNlIHZhbHVlcwogICAgIC8vIEFsdGVybmF0aXZlbHks
IHdlIGNvdWxkIGNyZWF0ZSBvdXIgb3duIGVycm9yIGRvbWFpbi9jb2Rlcy4KLSAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViVVJMRXJyb3JEb21haW4pLCAtOTk5LCByZXF1ZXN0LnVy
bCgpLnN0cmluZygpLCBTdHJpbmcoIkNhbmNlbGxlZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VF
cnJvcihTdHJpbmcoV2ViVVJMRXJyb3JEb21haW4pLCAtOTk5LCByZXF1ZXN0LnVybCgpLCBTdHJp
bmcoIkNhbmNlbGxlZCIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBy
ZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBXZWJLaXRFcnJv
ckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0LCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCBXRUJfVUlf
U1RSSU5HKCJOb3QgYWxsb3dlZCB0byB1c2UgcmVzdHJpY3RlZCBuZXR3b3JrIHBvcnQiLCAiV2Vi
S2l0RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCBkZXNjcmlwdGlvbiIpKTsKKyAgICByZXR1
cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBXZWJLaXRFcnJvckNh
bm5vdFVzZVJlc3RyaWN0ZWRQb3J0LCByZXF1ZXN0LnVybCgpLCBXRUJfVUlfU1RSSU5HKCJOb3Qg
YWxsb3dlZCB0byB1c2UgcmVzdHJpY3RlZCBuZXR3b3JrIHBvcnQiLCAiV2ViS2l0RXJyb3JDYW5u
b3RVc2VSZXN0cmljdGVkUG9ydCBkZXNjcmlwdGlvbiIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCkBAIC04NjYsMjcgKzg2NiwyNyBAQCBSZXNvdXJjZUVy
cm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNv
bnN0IFJlc291cmNlUgogCiBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5u
b3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJl
dHVybiBSZXNvdXJjZUVycm9yKFN0cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIFdlYktpdEVycm9y
Q2Fubm90U2hvd1VSTCwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgV0VCX1VJX1NUUklORygiVGhl
IFVSTCBjYW5ceEUyXHg4MFx4OTl0IGJlIHNob3duIiwgIldlYktpdEVycm9yQ2Fubm90U2hvd1VS
TCBkZXNjcmlwdGlvbiIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0
RXJyb3JEb21haW4pLCBXZWJLaXRFcnJvckNhbm5vdFNob3dVUkwsIHJlcXVlc3QudXJsKCksIFdF
Ql9VSV9TVFJJTkcoIlRoZSBVUkwgY2FuXHhFMlx4ODBceDk5dCBiZSBzaG93biIsICJXZWJLaXRF
cnJvckNhbm5vdFNob3dVUkwgZGVzY3JpcHRpb24iKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0
cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIFdlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRC
eVBvbGljeUNoYW5nZSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgV0VCX1VJX1NUUklORygiRnJh
bWUgbG9hZCBpbnRlcnJ1cHRlZCIsICJXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQ
b2xpY3lDaGFuZ2UgZGVzY3JpcHRpb24iKSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoU3Ry
aW5nKFdlYktpdEVycm9yRG9tYWluKSwgV2ViS2l0RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5
UG9saWN5Q2hhbmdlLCByZXF1ZXN0LnVybCgpLCBXRUJfVUlfU1RSSU5HKCJGcmFtZSBsb2FkIGlu
dGVycnVwdGVkIiwgIldlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5n
ZSBkZXNjcmlwdGlvbiIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nKCksIFdlYktpdEVycm9yQ2Fu
bm90U2hvd01JTUVUeXBlLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgV0VCX1VJX1NUUklORygi
Q29udGVudCB3aXRoIHNwZWNpZmllZCBNSU1FIHR5cGUgY2FuXHhFMlx4ODBceDk5dCBiZSBzaG93
biIsICJXZWJLaXRFcnJvckNhbm5vdFNob3dNSU1FVHlwZSBkZXNjcmlwdGlvbiIpKTsKKyAgICBy
ZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoKSwgV2ViS2l0RXJyb3JDYW5ub3RTaG93TUlNRVR5
cGUsIHJlc3BvbnNlLnVybCgpLCBXRUJfVUlfU1RSSU5HKCJDb250ZW50IHdpdGggc3BlY2lmaWVk
IE1JTUUgdHlwZSBjYW5ceEUyXHg4MFx4OTl0IGJlIHNob3duIiwgIldlYktpdEVycm9yQ2Fubm90
U2hvd01JTUVUeXBlIGRlc2NyaXB0aW9uIikpOwogfQogCiBSZXNvdXJjZUVycm9yIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nKFdlYlVSTEVy
cm9yRG9tYWluKSwgLTExMDAsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBTdHJpbmcoIkZpbGUg
ZG9lcyBub3QgZXhpc3QuIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0cmluZyhXZWJV
UkxFcnJvckRvbWFpbiksIC0xMTAwLCByZXNwb25zZS51cmwoKSwgU3RyaW5nKCJGaWxlIGRvZXMg
bm90IGV4aXN0LiIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVudDo6
cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4p
LCBXZWJLaXRFcnJvclBsdWdJbldpbGxIYW5kbGVMb2FkLCByZXNwb25zZS51cmwoKS5zdHJpbmco
KSwgV0VCX1VJX1NUUklORygiUGx1Zy1pbiBoYW5kbGVkIGxvYWQiLCAiV2ViS2l0RXJyb3JQbHVn
SW5XaWxsSGFuZGxlTG9hZCBkZXNjcmlwdGlvbiIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBXZWJLaXRFcnJvclBsdWdJbldpbGxIYW5kbGVM
b2FkLCByZXNwb25zZS51cmwoKSwgV0VCX1VJX1NUUklORygiUGx1Zy1pbiBoYW5kbGVkIGxvYWQi
LCAiV2ViS2l0RXJyb3JQbHVnSW5XaWxsSGFuZGxlTG9hZCBkZXNjcmlwdGlvbiIpKTsKIH0KIAog
Ym9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRmFsbEJhY2soY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IpCkBAIC0xMTY2LDcgKzExNjYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdpblZpZXcqIHBsdWdp
bgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgUmVzb3Vy
Y2VFcnJvciByZXNvdXJjZUVycm9yKFN0cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIGVycm9yQ29k
ZSwgcGx1Z2luVmlldy0+dXJsKCkuc3RyaW5nKCksIFN0cmluZygpKTsKKyAgICBSZXNvdXJjZUVy
cm9yIHJlc291cmNlRXJyb3IoU3RyaW5nKFdlYktpdEVycm9yRG9tYWluKSwgZXJyb3JDb2RlLCBw
bHVnaW5WaWV3LT51cmwoKSwgU3RyaW5nKCkpOwogICAgIENPTVB0cjxJV2ViRXJyb3I+IGVycm9y
KEFkb3B0Q09NLCBXZWJFcnJvcjo6Y3JlYXRlSW5zdGFuY2UocmVzb3VyY2VFcnJvciwgdXNlcklu
Zm9CYWcuZ2V0KCkpKTsKICAgICAgCiAgICAgcmVzb3VyY2VMb2FkRGVsZWdhdGUtPnBsdWdJbkZh
aWxlZFdpdGhFcnJvcih3ZWJWaWV3LCBlcnJvci5nZXQoKSwgZ2V0V2ViRGF0YVNvdXJjZShmcmFt
ZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkpOwpAQCAtMTI0NCw3ICsxMjQ0LDcgQEAgUGFz
c1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lk
Z2V0KGNvbnN0IEludFNpemUmIHAKIAogICAgIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJh
Zz4gdXNlckluZm9CYWcgPSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2Uo
KTsKIAotICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JE
b21haW4pLCBXZWJLaXRFcnJvckphdmFVbmF2YWlsYWJsZSwgU3RyaW5nKCksIFdFQl9VSV9TVFJJ
TkcoIkphdmEgaXMgdW5hdmFpbGFibGUiLCAiV2ViS2l0RXJyb3JKYXZhVW5hdmFpbGFibGUgZGVz
Y3JpcHRpb24iKSk7CisgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0cmluZyhXZWJL
aXRFcnJvckRvbWFpbiksIFdlYktpdEVycm9ySmF2YVVuYXZhaWxhYmxlLCBVUkwoKSwgV0VCX1VJ
X1NUUklORygiSmF2YSBpcyB1bmF2YWlsYWJsZSIsICJXZWJLaXRFcnJvckphdmFVbmF2YWlsYWJs
ZSBkZXNjcmlwdGlvbiIpKTsKICAgICBDT01QdHI8SVdlYkVycm9yPiBlcnJvcihBZG9wdENPTSwg
V2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKHJlc291cmNlRXJyb3IsIHVzZXJJbmZvQmFnLmdldCgp
KSk7CiAKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwIGIvU291cmNlL1dlYktp
dC93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKaW5kZXggNDYxNWQ3Nzg0OTBiNzgwYTE3YjU1MWIz
ZjVhMTRmMzdlYzk2MzI2Zi4uMTVmMTE5Nzc4NzhiOTUwYjdiZTQwZjdjY2FiM2IyNWNjOTNlYWEz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKQEAgLTMwNyw3ICszMDcs
NyBAQCBIUkVTVUxUIFdlYkRvd25sb2FkOjpjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShf
SW5fb3B0XyBJV2ViVVJMQXV0aGVudGljYXRpbwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3
ZSBuZWVkIGEgVVJMIG9yIGRlc2NyaXB0aW9uIGZvciB0aGlzIGVycm9yIGNvZGU/Ci0gICAgUmVz
b3VyY2VFcnJvciBlcnJvcihTdHJpbmcoV2ViVVJMRXJyb3JEb21haW4pLCBXZWJVUkxFcnJvclVz
ZXJDYW5jZWxsZWRBdXRoZW50aWNhdGlvbiwgIiIsICIiKTsKKyAgICBSZXNvdXJjZUVycm9yIGVy
cm9yKFN0cmluZyhXZWJVUkxFcnJvckRvbWFpbiksIFdlYlVSTEVycm9yVXNlckNhbmNlbGxlZEF1
dGhlbnRpY2F0aW9uLCBVUkwoKSwgIiIpOwogICAgIENPTVB0cjxXZWJFcnJvcj4gd2ViRXJyb3Io
QWRvcHRDT00sIFdlYkVycm9yOjpjcmVhdGVJbnN0YW5jZShlcnJvcikpOwogICAgIG1fZGVsZWdh
dGUtPmRpZEZhaWxXaXRoRXJyb3IodGhpcywgd2ViRXJyb3IuZ2V0KCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJFcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJF
cnJvci5jcHAKaW5kZXggZWY4ZmFhM2FhNTYxN2YxYzE0ZDRmOGU3YTQxZTI3MzMzMjRmY2JkMC4u
MTcwYzZjOGVmZTU5MGIxY2UwZWVlNzk2MmYyMzEwZGNkNTMyYjQ2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vV2ViRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkVy
cm9yLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIFVMT05HIFdlYkVycm9yOjpSZWxlYXNlKCkKIAog
SFJFU1VMVCBXZWJFcnJvcjo6aW5pdChfSW5fIEJTVFIgZG9tYWluLCBpbnQgY29kZSwgX0luXyBC
U1RSIHVybCkKIHsKLSAgICBtX2Vycm9yID0gUmVzb3VyY2VFcnJvcihTdHJpbmcoZG9tYWluLCBT
eXNTdHJpbmdMZW4oZG9tYWluKSksIGNvZGUsIFN0cmluZyh1cmwsIFN5c1N0cmluZ0xlbih1cmwp
KSwgU3RyaW5nKCkpOworICAgIG1fZXJyb3IgPSBSZXNvdXJjZUVycm9yKFN0cmluZyhkb21haW4s
IFN5c1N0cmluZ0xlbihkb21haW4pKSwgY29kZSwgVVJMKFVSTCgpLCBTdHJpbmcodXJsLCBTeXNT
dHJpbmdMZW4odXJsKSkpLCBTdHJpbmcoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3du
bG9hZFNvdXBFcnJvcnNFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL2VmbC9Eb3dubG9hZFNvdXBFcnJvcnNFZmwuY3BwCmluZGV4IDk0NmYzNTE1NDliZTdi
OTZkZDhlN2M0NTg3MmE0N2ZiMWRmZmQ1MmEuLmFjMDBkNTFiMzcxMzg5MjFlNzc2YjFhYzU4YTBk
NDU1NTE2YjA4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9lZmwvRG93bmxvYWRTb3VwRXJyb3JzRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvZWZsL0Rvd25sb2FkU291cEVycm9yc0VmbC5jcHAK
QEAgLTMzLDcgKzMzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1SZXNvdXJjZUVycm9yIHBsYXRmb3JtRG93bmxvYWROZXR3b3JrRXJyb3IoaW50
IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2Fs
aXplZERlc2NyaXB0aW9uKQorUmVzb3VyY2VFcnJvciBwbGF0Zm9ybURvd25sb2FkTmV0d29ya0Vy
cm9yKGludCBlcnJvckNvZGUsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBs
b2NhbGl6ZWREZXNjcmlwdGlvbikKIHsKICAgICByZXR1cm4gZG93bmxvYWROZXR3b3JrRXJyb3Io
UmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBlcnJvckNvZGUsIGZhaWxpbmdVUkws
IGxvY2FsaXplZERlc2NyaXB0aW9uKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvZ3RrL0Rvd25sb2FkU291cEVycm9yc0d0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvZ3RrL0Rvd25sb2FkU291cEVy
cm9yc0d0ay5jcHAKaW5kZXggMGQzZjlkM2VkZDE1ZGJhYjI3Mjg0YmRmZmQ4ZDE3NmU4NDIyM2U5
My4uYmEyZTdiNDU2YTQxNWYxN2Q1OTY1MzAwMWJiZGZhYzBiZTI4MDM0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2d0ay9Eb3dubG9hZFNvdXBF
cnJvcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9ndGsvRG93bmxvYWRTb3VwRXJyb3JzR3RrLmNwcApAQCAtMzMsNyArMzMsNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlc291cmNlRXJyb3Ig
cGxhdGZvcm1Eb3dubG9hZE5ldHdvcmtFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcm
IGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCitSZXNvdXJj
ZUVycm9yIHBsYXRmb3JtRG93bmxvYWROZXR3b3JrRXJyb3IoaW50IGVycm9yQ29kZSwgY29uc3Qg
VVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQogewog
ICAgIHJldHVybiBkb3dubG9hZE5ldHdvcmtFcnJvcihSZXNvdXJjZUVycm9yKGVycm9yRG9tYWlu
RG93bmxvYWQsIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24pKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9z
b3VwL0Rvd25sb2FkU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCmluZGV4IDU2NTVkZmM0YmI2ZmVlMjMzMDliMzBi
NGZkZGNkOTg0YmU5NmVmODMuLmU0OTc2NmJkNTljMTg2YTkyMTdiMjNhY2E4NjdhMzA3ZjE1NjNk
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9z
b3VwL0Rvd25sb2FkU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6
CiAgICAgICAgIG1fZG93bmxvYWQtPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiAKICAg
ICAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwKSB7Ci0gICAgICAgICAg
ICBkb3dubG9hZEZhaWxlZChwbGF0Zm9ybURvd25sb2FkTmV0d29ya0Vycm9yKHJlc3BvbnNlLmh0
dHBTdGF0dXNDb2RlKCksIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCByZXNwb25zZS5odHRwU3Rh
dHVzVGV4dCgpKSk7CisgICAgICAgICAgICBkb3dubG9hZEZhaWxlZChwbGF0Zm9ybURvd25sb2Fk
TmV0d29ya0Vycm9yKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlc3BvbnNlLnVybCgpLCBy
ZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L3NvdXAvRG93bmxvYWRTb3VwRXJyb3JzLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXBFcnJvcnMuaAppbmRleCA4OWUyM2UwODM3ZjBj
NTA4MWRiYjMxYmFkNzZmOGU5YTY0OGZkYzQxLi5lZTkwYWZjYThkMTAxYmZjM2MwZTNiMjZiYjJk
OGE4MzY5ODM2ZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXBFcnJvcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXBFcnJvcnMuaApAQCAtMjcs
MTEgKzI3LDEyIEBACiAjZGVmaW5lIERvd25sb2FkU291cEVycm9yc19oCiAKICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYkNv
cmU6OlJlc291cmNlRXJyb3IgcGxhdGZvcm1Eb3dubG9hZE5ldHdvcmtFcnJvcihpbnQgZXJyb3JD
b2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVz
Y3JpcHRpb24pOworV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBwbGF0Zm9ybURvd25sb2FkTmV0d29y
a0Vycm9yKGludCBlcnJvckNvZGUsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5n
JiBsb2NhbGl6ZWREZXNjcmlwdGlvbik7CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHBsYXRmb3Jt
RG93bmxvYWREZXN0aW5hdGlvbkVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1Nv
dXAuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
U291cC5jcHAKaW5kZXggNjcwMTY0ZjY4OTNiMjUzZjA3OGZhMjljM2ExNDg0MTg5NDMwMjkwOC4u
OGE4NzcwMjg4ZGQ4ZTYwMWNiNTc5YjQ2OWVjYmRkZjE4YTVjMTYxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5j
cHAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46
OmVuY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsCiAKICAgICBlbmNv
ZGVyIDw8IHJlc291cmNlRXJyb3IuZG9tYWluKCk7CiAgICAgZW5jb2RlciA8PCByZXNvdXJjZUVy
cm9yLmVycm9yQ29kZSgpOwotICAgIGVuY29kZXIgPDwgcmVzb3VyY2VFcnJvci5mYWlsaW5nVVJM
KCk7CisgICAgZW5jb2RlciA8PCByZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKS5zdHJpbmcoKTsK
ICAgICBlbmNvZGVyIDw8IHJlc291cmNlRXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKTsKICAg
ICBlbmNvZGVyIDw8IHJlc291cmNlRXJyb3IuaXNDYW5jZWxsYXRpb24oKTsKICAgICBlbmNvZGVy
IDw8IHJlc291cmNlRXJyb3IuaXNUaW1lb3V0KCk7CkBAIC0yMzUsNyArMjM1LDcgQEAgYm9vbCBB
cmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+OjpkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRE
ZWNvZGVyJiBkZWNvZGVyLAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNUaW1lb3V0KSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmVzb3VyY2VFcnJvciA9IFJlc291cmNlRXJyb3Io
ZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uKTsKKyAg
ICByZXNvdXJjZUVycm9yID0gUmVzb3VyY2VFcnJvcihkb21haW4sIGVycm9yQ29kZSwgVVJMKFVS
TCgpLCBmYWlsaW5nVVJMKSwgbG9jYWxpemVkRGVzY3JpcHRpb24pOwogICAgIHJlc291cmNlRXJy
b3Iuc2V0SXNDYW5jZWxsYXRpb24oaXNDYW5jZWxsYXRpb24pOwogICAgIHJlc291cmNlRXJyb3Iu
c2V0SXNUaW1lb3V0KGlzVGltZW91dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKaW5kZXggOGM5
MTc0OWQxZWY2YWY0MGFhMTI0MDA2YTQzOTM2Nzg0NzljNzgxZC4uODcyYTU2NDYxMjBjYjcwNDQ4
NWU2YmI1ODE2OTliMGQwNzJiMGJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKQEAgLTIzOSw3
ICsyMzksNyBAQCB2b2lkIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKFdl
YktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QsIEdFcgogICAgICAgICByZXR1cm47CiAKICAg
ICBwcml2LT5zdHJlYW0gPSBudWxscHRyOwotICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgcmVz
b3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgdG9XZWJDb3JlRXJy
b3IoZXJyb3ItPmNvZGUpLCBwcml2LT51cmkuZGF0YSgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9y
LT5tZXNzYWdlKSk7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKGdf
cXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCB0b1dlYkNvcmVFcnJvcihlcnJvci0+Y29k
ZSksIFdlYkNvcmU6OlVSTChwcml2LT5zb3VwVVJJLmdldCgpKSwgU3RyaW5nOjpmcm9tVVRGOChl
cnJvci0+bWVzc2FnZSkpOwogICAgIHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRGYWlsV2l0
aEVycm9yKHByaXYtPnJlcXVlc3RJRCwgcmVzb3VyY2VFcnJvcik7CiAgICAgd2Via2l0V2ViQ29u
dGV4dERpZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChwcml2LT53ZWJDb250ZXh0LCBwcml2
LT5yZXF1ZXN0SUQpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267897</attachid>
            <date>2015-12-24 08:06:35 -0800</date>
            <delta_ts>2015-12-24 08:22:29 -0800</delta_ts>
            <desc>Patch v8</desc>
            <filename>bug-146391-20151224080558.patch</filename>
            <type>text/plain</type>
            <size>54176</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0Mzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTk5Y2NlMDBmMWMxMTk3
NmM4MWZmZDBkY2EwOGU1NGNkMjYwOTI5NS4uNDMwMGNjNGVjNjZhYjQ3MTM1ZDg1NGE5NWFmOTU2
ZTM4MzFhMDQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAxNS0xMi0yNCAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlRXJyb3Ig
c2hvdWxkIHN0b3JlIGZhaWxpbmdVUkwgYXMgVVJMIGluc3RlYWQgb2YgU3RyaW5nIHRvIGF2b2lk
IHJlcGFyc2luZyBhbmQgdG8gYWRkcmVzcyBGSVhNRSBjb21tZW50cyBpbiBSZXNvdXJjZUVycm9y
Q0YuY3BwIGFuZCBSZXNvdXJjZUVycm9yTWFjLm1tCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9y
Zy9iLzE0NjM5MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlU2ltcGxl
Q3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxpZ2h0RmFpbHVyZSk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRGYWlsdXJlKToKKyAgICAgICAgLSBTd2l0Y2gg
dHlwZSBvZiAndXJsJyBhcmd1bWVudCBvZiBwcmVmbGlnaHRGYWlsdXJlKCkgZnJvbQorICAgICAg
ICAgIFN0cmluZyB0byBVUkwuCisgICAgICAgIC0gVXBkYXRlIGZvciB0eXBlIGNoYW5nZSBvZiAn
ZmFpbGluZ1VSTCcgYXJndW1lbnQgdG8KKyAgICAgICAgICBSZXNvdXJjZUVycm9yKCkuCisKKyAg
ICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToK
KyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXI6OmxvYWREYXRhVVJMKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpjYW5jZWwpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgLSBVcGRhdGUgZm9yIHR5cGUgY2hh
bmdlIG9mICdmYWlsaW5nVVJMJyBhcmd1bWVudCB0bworICAgICAgICAgIFJlc291cmNlRXJyb3Io
KS4KKworICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRTb3VyY2U6OmRpZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2spOgorICAgICAgICAtIENvbnZl
cnQgZmFpbGluZ1VSTCgpIHRvIFN0cmluZyBleHBsaWNpdGx5LgorCisgICAgICAgICogcGxhdGZv
cm0vZWZsL0Vycm9yc0VmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5jZWxsZWRFcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpibG9ja2VkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6Ymxv
Y2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93
VVJMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VF
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93TUlNRVR5cGVFcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjpmaWxlRG9lc05vdEV4aXN0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpkb3dubG9hZENh
bmNlbGxlZEJ5VXNlckVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmRvd25sb2FkRGVzdGluYXRp
b25FcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjYW5jZWxsZWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpibG9ja2VkRXJy
b3IpOgorICAgICAgICAoV2ViQ29yZTo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5u
b3RTaG93TUlNRVR5cGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpmaWxlRG9lc05vdEV4aXN0
RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpkb3dubG9hZENhbmNlbGxlZEJ5VXNlckVycm9yKToKKyAgICAgICAg
KFdlYkNvcmU6OmRvd25sb2FkRGVzdGluYXRpb25FcnJvcik6CisgICAgICAgIC0gVXBkYXRlIGZv
ciB0eXBlIGNoYW5nZSBvZiAnZmFpbGluZ1VSTCcgYXJndW1lbnQgdG8KKyAgICAgICAgICBSZXNv
dXJjZUVycm9yKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JC
YXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yQmFzZTo6ZmFpbGluZ1VSTCk6
CisgICAgICAgIC0gQ2hhbmdlIHJldHVybiB0eXBlIGZyb20gU3RyaW5nIHRvIFVSTC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjpSZXNvdXJjZUVycm9yQmFzZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgLSBDaGFuZ2UgdHlw
ZSBvZiAnZmFpbGluZ1VSTCcgZnJvbSBTdHJpbmcgdG8gVVJMLgorCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcik6CisgICAgICAgIC0gQ2hhbmdlIHR5cGUgb2YgJ2Zh
aWxpbmdVUkwnIGZyb20gU3RyaW5nIHRvIFVSTC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
RXJyb3I6OnBsYXRmb3JtTGF6eUluaXQpOgorICAgICAgICAtIENsZWFuIHVwIGNvZGUgYW5kIGFk
ZHJlc3MgRklYTUUgYnkgcGFyc2luZyBDRlVSTFJlZiB1c2luZworICAgICAgICAgIFVSTCgpIGNv
bnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6Y2ZFcnJvcik6Cisg
ICAgICAgIC0gQ2xlYW4gdXAgY29kZSBhbmQgYWRkcmVzcyBGSVhNRSBhZnRlciBzd2l0Y2hpbmcg
dHlwZSBvZgorICAgICAgICAgIG1fZmFpbGluZ1VSTC4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgLSBDaGFuZ2UgdHlwZSBvZiAnZmFpbGluZ1VS
TCcgZnJvbSBTdHJpbmcgdG8gVVJMLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU5TRXJyb3JGcm9t
UmVzb3VyY2VFcnJvckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6cGxh
dGZvcm1MYXp5SW5pdCk6CisgICAgICAgIC0gQ2xlYW4gdXAgY29kZSBhbmQgYWRkcmVzcyBGSVhN
RSBhZnRlciBzd2l0Y2hpbmcgdHlwZSBvZgorICAgICAgICAgIG1fZmFpbGluZ1VSTC4KKworICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlRXJyb3I6OnRpbWVvdXRFcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZhaWxpbmdV
UkkpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6dGltZW91dEVycm9yKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp0aW1lb3V0RmlyZWQpOgorICAgICAgICAt
IENoYW5nZSB0eXBlIG9mICdmYWlsaW5nVVJMJyBmcm9tIFN0cmluZyB0byBVUkwuCisKKyAgICAg
ICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OmRpZEZhaWwpOgorICAgICAgICAtIENvbnZlcnQgZmFpbGluZ1VSTCgpIHRvIFN0cmlu
ZyBleHBsaWNpdGx5LgorICAgICAgICAtIEFsc28gc3dpdGNoIHRvIHVzaW5nIG1ha2VTdHJpbmco
KS4KKwogMjAxNS0xMi0yMiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgVHJ5IHRvIGZpeCB0aGUgaU9TIGJ1aWxkIGFmdGVyIHIxOTQzNzgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpp
bmRleCA4MjQxZTFmNmY1NzBmYTU5ZTg2ZWI0ZmI2MDY1MDI4Y2JjMTU3OTI0Li5kZGIzMjhlNTMy
MTkzMzRlOWFhY2JlNGFhOWJmZjJlN2JlY2RjNmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMTUtMTItMjQgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXNvdXJjZUVycm9yIHNob3VsZCBzdG9yZSBmYWlsaW5nVVJMIGFzIFVSTCBp
bnN0ZWFkIG9mIFN0cmluZyB0byBhdm9pZCByZXBhcnNpbmcgYW5kIHRvIGFkZHJlc3MgRklYTUUg
Y29tbWVudHMgaW4gUmVzb3VyY2VFcnJvckNGLmNwcCBhbmQgUmVzb3VyY2VFcnJvck1hYy5tbQor
ICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8xNDYzOTE+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsbGVk
RXJyb3IpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmJsb2NrZWRFcnJvcik6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAgICAg
ICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjppbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9y
KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5ub3RTaG93TUlNRVR5cGVFcnJv
cik6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmlsZURvZXNOb3RFeGlzdEVycm9y
KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwbHVnaW5XaWxsSGFuZGxlTG9hZEVy
cm9yKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0
YXJ0UGx1Z2luKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBw
bGV0V2lkZ2V0KToKKyAgICAgICAgKiBXZWJEb3dubG9hZENGTmV0LmNwcDoKKyAgICAgICAgKFdl
YkRvd25sb2FkOjpjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogV2Vi
RXJyb3IuY3BwOgorICAgICAgICAoV2ViRXJyb3I6OmluaXQpOgorICAgICAgICAtIFVwZGF0ZSBm
b3IgdHlwZSBjaGFuZ2Ugb2YgJ2ZhaWxpbmdVUkwnIGFyZ3VtZW50IHRvCisgICAgICAgICAgUmVz
b3VyY2VFcnJvcigpLgorCiAyMDE1LTEyLTIwICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBzZXRUb29sYmFySGVpZ2h0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggMDQzOWIwMmVjZTg2ZDczZjZiYzkxYTExM2U4M2IzZWM1ODYxZWVlYy4uZTY2ZDI5ZTcxMTE3
ODBmYjBjYzU0NDQ2ODBhMWI4M2ZlN2ZjNzE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBA
CisyMDE1LTEyLTI0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVzb3VyY2VFcnJvciBzaG91bGQgc3RvcmUgZmFpbGluZ1VSTCBhcyBVUkwgaW5zdGVhZCBv
ZiBTdHJpbmcgdG8gYXZvaWQgcmVwYXJzaW5nIGFuZCB0byBhZGRyZXNzIEZJWE1FIGNvbW1lbnRz
IGluIFJlc291cmNlRXJyb3JDRi5jcHAgYW5kIFJlc291cmNlRXJyb3JNYWMubW0KKyAgICAgICAg
PGh0dHA6Ly93ZWJraXQub3JnL2IvMTQ2MzkxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3du
bG9hZFNvdXBFcnJvcnNFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpwbGF0Zm9ybURvd25sb2Fk
TmV0d29ya0Vycm9yKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvZ3RrL0Rv
d25sb2FkU291cEVycm9yc0d0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBsYXRmb3JtRG93bmxv
YWROZXR3b3JrRXJyb3IpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9zb3Vw
L0Rvd25sb2FkU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9zb3Vw
L0Rvd25sb2FkU291cEVycm9ycy5oOgorICAgICAgICAqIFNoYXJlZC9zb3VwL1dlYkNvcmVBcmd1
bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNl
RXJyb3I+OjplbmNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlc291cmNlRXJyb3I+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwOgorICAgICAgICAod2Via2l0X3Vy
aV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3IpOgorICAgICAgICAtIFVwZGF0ZSBmb3IgdHlw
ZSBjaGFuZ2Ugb2YgJ2ZhaWxpbmdVUkwnIGFyZ3VtZW50IHRvCisgICAgICAgICAgUmVzb3VyY2VF
cnJvcigpLgorCiAyMDE1LTEyLTIyICBIdW5zZW9wIEplb25nICA8aHM4NS5qZW9uZ0BzYW1zdW5n
LmNvbT4KIAogICAgICAgICBbRUZMXSBld2tfYXBwbGljYXRpb25fY2FjaGVfbWFuYWdlciB0ZXN0
IGZhaWxlZCBhZnRlciByMTkzODEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGQ1NDA2MDUyYjVlNzljZmUwZTBmMDRhMTFi
MmFmMWQ1N2QyM2M5NmUuLjFmNjE0ZWIzMTc5Nzk1OGZlOGE1MmU4NGRlZGYwNmQ1YWQ1ZDgxZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6RG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyKERvY3VtZW50JiBkb2N1bWVudCwgVGhyZWFkYWJsCiAgICAgfQog
CiAgICAgaWYgKG1fb3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgPT0gRGVueUNyb3Nz
T3JpZ2luUmVxdWVzdHMpIHsKLSAgICAgICAgbV9jbGllbnQtPmRpZEZhaWwoUmVzb3VyY2VFcnJv
cihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCAi
Q3Jvc3Mgb3JpZ2luIHJlcXVlc3RzIGFyZSBub3Qgc3VwcG9ydGVkLiIpKTsKKyAgICAgICAgbV9j
bGllbnQtPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAw
LCByZXF1ZXN0LnVybCgpLCAiQ3Jvc3Mgb3JpZ2luIHJlcXVlc3RzIGFyZSBub3Qgc3VwcG9ydGVk
LiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQg
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlU2ltcGxlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1
ZXN0KGNvbnN0IFJlc291cmNlCiAKICAgICAvLyBDcm9zcy1vcmlnaW4gcmVxdWVzdHMgYXJlIG9u
bHkgYWxsb3dlZCBmb3IgSFRUUCBhbmQgcmVnaXN0ZXJlZCBzY2hlbWVzLiBXZSB3b3VsZCBjYXRj
aCB0aGlzIHdoZW4gY2hlY2tpbmcgcmVzcG9uc2UgaGVhZGVycyBsYXRlciwgYnV0IHRoZXJlIGlz
IG5vIHJlYXNvbiB0byBzZW5kIGEgcmVxdWVzdCB0aGF0J3MgZ3VhcmFudGVlZCB0byBiZSBkZW5p
ZWQuCiAgICAgaWYgKCFTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNF
bmFibGVkKHJlcXVlc3QudXJsKCkucHJvdG9jb2woKSkpIHsKLSAgICAgICAgbV9jbGllbnQtPmRp
ZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2soUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdElu
dGVybmFsLCAwLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCAiQ3Jvc3Mgb3JpZ2luIHJlcXVlc3Rz
IGFyZSBvbmx5IHN1cHBvcnRlZCBmb3IgSFRUUC4iKSk7CisgICAgICAgIG1fY2xpZW50LT5kaWRG
YWlsQWNjZXNzQ29udHJvbENoZWNrKFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRl
cm5hbCwgMCwgcmVxdWVzdC51cmwoKSwgIkNyb3NzIG9yaWdpbiByZXF1ZXN0cyBhcmUgb25seSBz
dXBwb3J0ZWQgZm9yIEhUVFAuIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNjEs
NyArMjYxLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnMKICAgICB9IGVsc2UgewogICAgICAg
ICBpZiAoIW1fc2FtZU9yaWdpblJlcXVlc3QgJiYgbV9vcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVz
dFBvbGljeSA9PSBVc2VBY2Nlc3NDb250cm9sKSB7CiAgICAgICAgICAgICBpZiAoIXBhc3Nlc0Fj
Y2Vzc0NvbnRyb2xDaGVjayhyZXNwb25zZSwgbV9vcHRpb25zLmFsbG93Q3JlZGVudGlhbHMoKSwg
c2VjdXJpdHlPcmlnaW4oKSwgYWNjZXNzQ29udHJvbEVycm9yRGVzY3JpcHRpb24pKSB7Ci0gICAg
ICAgICAgICAgICAgbV9jbGllbnQtPmRpZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2soUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKS5zdHJpbmco
KSwgYWNjZXNzQ29udHJvbEVycm9yRGVzY3JpcHRpb24pKTsKKyAgICAgICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkRmFpbEFjY2Vzc0NvbnRyb2xDaGVjayhSZXNvdXJjZUVycm9yKGVycm9yRG9tYWlu
V2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCBhY2Nlc3NDb250cm9sRXJyb3JEZXNj
cmlwdGlvbikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtMzMzLDcgKzMzMyw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpw
cmVmbGlnaHRTdWNjZXNzKCkKICAgICBsb2FkUmVxdWVzdCgqYWN0dWFsUmVxdWVzdCwgU2tpcFNl
Y3VyaXR5Q2hlY2spOwogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxp
Z2h0RmFpbHVyZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIGVycm9yRGVzY3JpcHRpb24pCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6cHJlZmxpZ2h0RmFpbHVyZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIGVycm9yRGVzY3JpcHRpb24pCiB7CiAgICAgUmVzb3VyY2VF
cnJvciBlcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwsIGVycm9yRGVzY3Jp
cHRpb24pOwogICAgIGlmIChtX2FjdHVhbFJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggNzc4ZDMxZWYzZmUyYmE1NDIy
MjZiNjc0NGNjYjdkZTM4YmUwMGM4ZC4uZmYwODNmYjkwZjE3MmFkYmNlNTM3NTRlMGVjN2RjNTBm
YjRhN2Y2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuaApAQCAtOTEsNyArOTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZvaWQgbWFrZVNpbXBsZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpOwogICAgICAgICB2b2lkIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVl
c3RXaXRoUHJlZmxpZ2h0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCk7CiAgICAgICAg
IHZvaWQgcHJlZmxpZ2h0U3VjY2VzcygpOwotICAgICAgICB2b2lkIHByZWZsaWdodEZhaWx1cmUo
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBlcnJvckRlc2NyaXB0aW9uKTsKKyAgICAgICAgdm9pZCBwcmVmbGlnaHRGYWlsdXJlKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBlcnJvckRlc2Ny
aXB0aW9uKTsKIAogICAgICAgICB2b2lkIGxvYWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIFNlY3VyaXR5Q2hlY2tQb2xpY3kpOwogICAgICAgICBib29sIGlzQWxsb3dlZFJlZGlyZWN0
KGNvbnN0IFVSTCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDE2Mjll
YzU3Y2U1ZGRjMTBjZTg5ZDMxMTA0NmU5MDBhMTQzNDNmY2QuLjFhNDBiNmRhNDQ1YzljMjgzNWFi
ZTk0NDUwZTYzMmQ2NTVhYzJiMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgK
QEAgLTMyMCwxNSArMzIwLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0dGVk
TG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKSBvdmVycmlkZSB7
IH0KIAotICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IFJlc291cmNlRXJyb3IgZXJyb3IoIiIsIDAsICIiLCAi
Iik7IGVycm9yLnNldElzQ2FuY2VsbGF0aW9uKHRydWUpOyByZXR1cm4gZXJyb3I7IH0KLSAgICB2
aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
IG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsICIiLCAiIik7IH0KLSAgICB2
aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCAi
IiwgIiIpOyB9Ci0gICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIi
LCAwLCAiIiwgIiIpOyB9Ci0gICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9y
UG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1
cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgIiIsICIiKTsgfQotCi0gICAgdmlydHVhbCBSZXNvdXJj
ZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBv
dmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCAiIiwgIiIpOyB9Ci0gICAgdmly
dHVhbCBSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgIiIsICIiKTsg
fQotICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIi
LCAwLCAiIiwgIiIpOyB9CisgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9y
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgUmVzb3VyY2VFcnJvciBlcnJvcigi
IiwgMCwgVVJMKCksICIiKTsgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7IHJldHVybiBl
cnJvcjsgfQorICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgVVJM
KCksICIiKTsgfQorICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50Qmxv
Y2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291
cmNlRXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KKyAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3Ig
Y2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0
dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KKyAgICB2aXJ0dWFsIFJlc291
cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBVUkwoKSwgIiIp
OyB9CisKKyAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3Io
IiIsIDAsIFVSTCgpLCAiIik7IH0KKyAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgZmlsZURvZXNO
b3RFeGlzdEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiBS
ZXNvdXJjZUVycm9yKCIiLCAwLCBVUkwoKSwgIiIpOyB9CisgICAgdmlydHVhbCBSZXNvdXJjZUVy
cm9yIHBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92
ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KIAogICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRGYWxsQmFjayhjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
aW5kZXggNDgxNTBhMGUzYTRmMjdkODkwMjI1MGNhM2FkZmMwMmYzNTYzYzY4MS4uOTAwZGQzODAw
YmZhNDU1OTk3OGMyZTQxYTQwMjAwNzE1YzRjMmViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCkBAIC0yNjg2LDcgKzI2ODYsNyBAQCB1bnNpZ25lZCBsb25nIEZyYW1lTG9h
ZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dQogICAgICAgICAgICAgaWYgKGF1dG8qIGNvbnRyb2xsZXIgPSBwYWdlLT51c2VyQ29udGVudENv
bnRyb2xsZXIoKSkgewogICAgICAgICAgICAgICAgIGlmIChtX2RvY3VtZW50TG9hZGVyICYmIGNv
bnRyb2xsZXItPnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKG5ld1JlcXVlc3Qs
IFJlc291cmNlVHlwZTo6UmF3LCAqbV9kb2N1bWVudExvYWRlcikgPT0gQ29udGVudEV4dGVuc2lv
bnM6OkJsb2NrZWRTdGF0dXM6OkJsb2NrZWQpIHsKICAgICAgICAgICAgICAgICAgICAgbmV3UmVx
dWVzdCA9IHsgfTsKLSAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVy
cm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGluaXRpYWxSZXF1ZXN0LnVybCgpLnN0cmluZygp
LCBlbXB0eVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVy
cm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGluaXRpYWxSZXF1ZXN0LnVybCgpLCBl
bXB0eVN0cmluZygpKTsKICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB7IH07CiAgICAg
ICAgICAgICAgICAgICAgIGRhdGEgPSBudWxscHRyOwogICAgICAgICAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAppbmRleCAyMGQyZTZl
YzlhMzM5ZmJlZTFkZGViOTIwODQyMGNjZmMyMWNiZjA3Li5kOTMzY2VlM2Q1YmYzMDY0Mjg1MmIx
Y2MxYzAyN2VmMzQ3OTQ4MDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVk
aWFSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBNZWRpYVJlc291cmNlTG9h
ZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVz
b3UKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gY29uc29sZU1l
c3NhZ2UoIkNyb3NzLW9yaWdpbiBtZWRpYSByZXNvdXJjZSBsb2FkIGRlbmllZCBieSBDcm9zcy1P
cmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIik7CiAgICAgICAgIG1fZG9jdW1lbnQuYWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIGNvbnNvbGVNZXNzYWdlLmdldCgpKTsKICAgICAgICAgbV9kaWRQYXNzQWNjZXNzQ29udHJv
bENoZWNrID0gZmFsc2U7Ci0gICAgICAgIG1fY2xpZW50LT5hY2Nlc3NDb250cm9sQ2hlY2tGYWls
ZWQoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51
cmwoKS5zdHJpbmcoKSwgY29uc29sZU1lc3NhZ2UuZ2V0KCkpKTsKKyAgICAgICAgbV9jbGllbnQt
PmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCBjb25zb2xlTWVzc2FnZS5nZXQoKSkpOwogICAg
ICAgICBzdG9wKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAwZDgxZmY1YmEyOGEyMTA0ZDUyOGFlY2ZiYmJlNzM1
NmNhMjNiNjc4Li4xYTk3M2IwZDUyM2I4ZTFmMzJmMjVhODA4OWM4Mjk4NTc0NTBlM2VjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTI1Nyw3ICsyNTcsNyBA
QCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkRGF0YVVSTCgpCiAgICAgICAgIGlmIChsb2FkZXIt
PnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlm
ICghZGVjb2RlUmVzdWx0KSB7Ci0gICAgICAgICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwuc3RyaW5nKCksICJEYXRhIFVS
TCBkZWNvZGluZyBmYWlsZWQiKSk7CisgICAgICAgICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwsICJEYXRhIFVSTCBkZWNv
ZGluZyBmYWlsZWQiKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
aWYgKGxvYWRlci0+d2FzQ2FuY2VsbGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
V29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggYTBkYzNjYTFhZmMyNTZjNTYyMDljOWQ5
NjhkNDViMDJkZDUxMmYxNC4uMWRiOGQ2NDg5MmZhMjMyNDk3YjAzODIxNDQwNmYzN2VmMTMyZWJj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFp
blRocmVhZEJyaWRnZTo6Y2FuY2VsKCkKICAgICBpZiAoIWNsaWVudFdyYXBwZXItPmRvbmUoKSkg
ewogICAgICAgICAvLyBJZiB0aGUgY2xpZW50IGhhc24ndCByZWFjaGVkIGEgdGVybWluYXRpb24g
c3RhdGUsIHRoZW4gdHJhbnNpdGlvbiBpdCBieSBzZW5kaW5nIGEgY2FuY2VsbGF0aW9uIGVycm9y
LgogICAgICAgICAvLyBOb3RlOiBubyBtb3JlIGNsaWVudCBjYWxsYmFja3Mgd2lsbCBiZSBkb25l
IGFmdGVyIHRoaXMgbWV0aG9kIC0tIHRoZSBjbGVhckNsaWVudFdyYXBwZXIoKSBjYWxsIGVuc3Vy
ZXMgdGhhdC4KLSAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcihTdHJpbmcoKSwgMCwgU3RyaW5n
KCksIFN0cmluZygpKTsKKyAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcihTdHJpbmcoKSwgMCwg
VVJMKCksIFN0cmluZygpKTsKICAgICAgICAgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7
CiAgICAgICAgIGNsaWVudFdyYXBwZXItPmRpZEZhaWwoZXJyb3IpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IDczNzhkNmQxYWM5MjQxYmM2NzY5Njk3NjMyYzdjZjQ3YmJmNTJiOWUuLmQ5ZmNmZTYyNDM2
MzA0OTM5ZDFmZmE4MmVjM2EwMzcwMGUyNjRhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtNTQ0LDcgKzU0NCw3
IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlCiAgICAgICAgICAgICAgICAgYXV0byByZXNvdXJj
ZSA9IGNyZWF0ZVJlc291cmNlKHR5cGUsIHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgp
LCByZXF1ZXN0LmNoYXJzZXQoKSwgc2Vzc2lvbklEKCkpOwogICAgICAgICAgICAgICAgIEFTU0VS
VChyZXNvdXJjZSk7CiAgICAgICAgICAgICAgICAgcmVzb3VyY2UtPmVycm9yKENhY2hlZFJlc291
cmNlOjpTdGF0dXM6OkxvYWRFcnJvcik7Ci0gICAgICAgICAgICAgICAgcmVzb3VyY2UtPnNldFJl
c291cmNlRXJyb3IoUmVzb3VyY2VFcnJvcihDb250ZW50RXh0ZW5zaW9uczo6V2ViS2l0Q29udGVu
dEJsb2NrZXJEb21haW4sIDAsIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkuc3RyaW5n
KCksIFdFQl9VSV9TVFJJTkcoIlRoZSBVUkwgd2FzIGJsb2NrZWQgYnkgYSBjb250ZW50IGJsb2Nr
ZXIiLCAiV2ViS2l0RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciBkZXNjcmlwdGlvbiIpKSk7
CisgICAgICAgICAgICAgICAgcmVzb3VyY2UtPnNldFJlc291cmNlRXJyb3IoUmVzb3VyY2VFcnJv
cihDb250ZW50RXh0ZW5zaW9uczo6V2ViS2l0Q29udGVudEJsb2NrZXJEb21haW4sIDAsIHJlcXVl
c3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCksIFdFQl9VSV9TVFJJTkcoIlRoZSBVUkwgd2FzIGJs
b2NrZWQgYnkgYSBjb250ZW50IGJsb2NrZXIiLCAiV2ViS2l0RXJyb3JCbG9ja2VkQnlDb250ZW50
QmxvY2tlciBkZXNjcmlwdGlvbiIpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc291cmNl
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IGI4MzQxZTZiNmMwNzU3NmY3NGY0MTIzNDUzMzJhZjVl
OTkyNmM0NjQuLjIwMTNjMDhlODBjOWUwZjA0MjM4NGI3NWI5NjE1ODAwNzUwNmM1ZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBFdmVu
dFNvdXJjZTo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBFdmVu
dFNvdXJjZTo6ZGlkRmFpbEFjY2Vzc0NvbnRyb2xDaGVjayhjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKIHsKLSAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIkV2ZW50U291cmNlIGNh
bm5vdCBsb2FkICIsIGVycm9yLmZhaWxpbmdVUkwoKSwgIi4gIiwgZXJyb3IubG9jYWxpemVkRGVz
Y3JpcHRpb24oKSk7CisgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJFdmVudFNvdXJj
ZSBjYW5ub3QgbG9hZCAiLCBlcnJvci5mYWlsaW5nVVJMKCkuc3RyaW5nKCksICIuICIsIGVycm9y
LmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwogICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IG1lc3NhZ2UpOwogCiAgICAgYWJvcnRDb25uZWN0aW9uQXR0ZW1wdCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0Vycm9yc0VmbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmNwcAppbmRleCA2ZWZmNTU1OTMzYzk2MzFhMjM4MmUy
NmNkMTkyMjkzYzdkOGI2ZTM3Li4zMjgyNmU1NjcyNzMwM2JlZmRlMjljMDhkZThjNTdhYjQ5ZGJl
MzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmNwcApAQCAtMzQs
NDIgKzM0LDQyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvciBjYW5jZWxs
ZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJl
c291cmNlRXJyb3IoZXJyb3JEb21haW5OZXR3b3JrLCBOZXR3b3JrRXJyb3JDYW5jZWxsZWQsIHJl
cXVlc3QudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiTG9hZCByZXF1ZXN0IGNhbmNlbGxl
ZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbk5ldHdvcmssIE5ldHdv
cmtFcnJvckNhbmNlbGxlZCwgcmVxdWVzdC51cmwoKSwgQVNDSUlMaXRlcmFsKCJMb2FkIHJlcXVl
c3QgY2FuY2VsbGVkIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJy
b3JEb21haW5Qb2xpY3ksIFBvbGljeUVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQsIHJlcXVl
c3QudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiTm90IGFsbG93ZWQgdG8gdXNlIHJlc3Ry
aWN0ZWQgbmV0d29yayBwb3J0IikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9t
YWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0LCByZXF1ZXN0LnVy
bCgpLCBBU0NJSUxpdGVyYWwoIk5vdCBhbGxvd2VkIHRvIHVzZSByZXN0cmljdGVkIG5ldHdvcmsg
cG9ydCIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9y
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tl
ciwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJCbG9ja2VkIGJ5IGNvbnRl
bnQgYmxvY2tlciIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGlj
eSwgUG9saWN5RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciwgcmVxdWVzdC51cmwoKSwgQVND
SUlMaXRlcmFsKCJCbG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlciIpKTsKIH0KIAogUmVzb3VyY2VF
cnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQog
ewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJv
ckNhbm5vdFNob3dVUkwsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiVVJM
IGNhbm5vdCBiZSBzaG93biIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFp
blBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RTaG93VVJMLCByZXF1ZXN0LnVybCgpLCBBU0NJSUxp
dGVyYWwoIlVSTCBjYW5ub3QgYmUgc2hvd24iKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgaW50ZXJy
dXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
CiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Qb2xpY3ksIFBvbGljeUVy
cm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwgcmVxdWVzdC51cmwoKS5zdHJp
bmcoKSwgQVNDSUlMaXRlcmFsKCJGcmFtZSBsb2FkIHdhcyBpbnRlcnJ1cHRlZCIpKTsKKyAgICBy
ZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JGcmFtZUxv
YWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCByZXF1ZXN0LnVybCgpLCBBU0NJSUxpdGVyYWwo
IkZyYW1lIGxvYWQgd2FzIGludGVycnVwdGVkIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGNhbm5v
dFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewot
ICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNh
bm5vdFNob3dNaW1lVHlwZSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgi
Q29udGVudCB3aXRoIHRoZSBzcGVjaWZpZWQgTUlNRSB0eXBlIGNhbm5vdCBiZSBzaG93biIpKTsK
KyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JD
YW5ub3RTaG93TWltZVR5cGUsIHJlc3BvbnNlLnVybCgpLCBBU0NJSUxpdGVyYWwoIkNvbnRlbnQg
d2l0aCB0aGUgc3BlY2lmaWVkIE1JTUUgdHlwZSBjYW5ub3QgYmUgc2hvd24iKSk7CiB9CiAKIFJl
c291cmNlRXJyb3IgZmlsZURvZXNOb3RFeGlzdEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluTmV0d29y
aywgTmV0d29ya0Vycm9yRmlsZURvZXNOb3RFeGlzdCwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCks
IEFTQ0lJTGl0ZXJhbCgiRmlsZSBkb2VzIG5vdCBleGlzdCIpKTsKKyAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpbk5ldHdvcmssIE5ldHdvcmtFcnJvckZpbGVEb2VzTm90RXhpc3Qs
IHJlc3BvbnNlLnVybCgpLCBBU0NJSUxpdGVyYWwoIkZpbGUgZG9lcyBub3QgZXhpc3QiKSk7CiB9
CiAKIFJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRv
bWFpblBsdWdpbiwgUGx1Z2luRXJyb3JXaWxsSGFuZGxlTG9hZCwgcmVzcG9uc2UudXJsKCkuc3Ry
aW5nKCksIEFTQ0lJTGl0ZXJhbCgiUGx1Z2luIHdpbGwgaGFuZGxlIGxvYWQiKSk7CisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5QbHVnaW4sIFBsdWdpbkVycm9yV2lsbEhhbmRs
ZUxvYWQsIHJlc3BvbnNlLnVybCgpLCBBU0NJSUxpdGVyYWwoIlBsdWdpbiB3aWxsIGhhbmRsZSBs
b2FkIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0IFJl
c291cmNlRXJyb3ImIG5ldHdvcmtFcnJvcikKQEAgLTc5LDEyICs3OSwxMiBAQCBSZXNvdXJjZUVy
cm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIG5ldHdvcmtFcnJv
cikKIAogUmVzb3VyY2VFcnJvciBkb3dubG9hZENhbmNlbGxlZEJ5VXNlckVycm9yKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVy
cm9yRG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JDYW5jZWxsZWRCeVVzZXIsIHJlc3BvbnNl
LnVybCgpLnN0cmluZygpLCBBU0NJSUxpdGVyYWwoIlVzZXIgY2FuY2VsbGVkIHRoZSBkb3dubG9h
ZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBEb3du
bG9hZEVycm9yQ2FuY2VsbGVkQnlVc2VyLCByZXNwb25zZS51cmwoKSwgQVNDSUlMaXRlcmFsKCJV
c2VyIGNhbmNlbGxlZCB0aGUgZG93bmxvYWQiKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgZG93bmxv
YWREZXN0aW5hdGlvbkVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJv
ckRvbWFpbkRvd25sb2FkLCBEb3dubG9hZEVycm9yRGVzdGluYXRpb24sIHJlc3BvbnNlLnVybCgp
LnN0cmluZygpLCBlcnJvck1lc3NhZ2UpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9y
RG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JEZXN0aW5hdGlvbiwgcmVzcG9uc2UudXJsKCks
IGVycm9yTWVzc2FnZSk7CiB9CiAKIFJlc291cmNlRXJyb3IgcHJpbnRFcnJvcihjb25zdCBVUkwm
IGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcAppbmRleCA2ODhhOTA2ZDllYjQwOGVkZmI0NzNhZmZm
Nzk4MjU2NDZlYzFmZTBmLi44ZGZkMTU4YjNiNGQ2YzU0NGJkYjI5YTYxNTc0MWRiZGE0YjQxYTU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcApAQCAtMjksNjcg
KzI5LDU3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRF
cnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJlc291
cmNlRXJyb3IoZXJyb3JEb21haW5OZXR3b3JrLCBOZXR3b3JrRXJyb3JDYW5jZWxsZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgXygiTG9hZCByZXF1
ZXN0IGNhbmNlbGxlZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbk5l
dHdvcmssIE5ldHdvcmtFcnJvckNhbmNlbGxlZCwgcmVxdWVzdC51cmwoKSwgXygiTG9hZCByZXF1
ZXN0IGNhbmNlbGxlZCIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVy
cm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIF8oIk5vdCBhbGxv
d2VkIHRvIHVzZSByZXN0cmljdGVkIG5ldHdvcmsgcG9ydCIpKTsKKyAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVk
UG9ydCwgcmVxdWVzdC51cmwoKSwgXygiTm90IGFsbG93ZWQgdG8gdXNlIHJlc3RyaWN0ZWQgbmV0
d29yayBwb3J0IikpOwogfQogCiBSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2Vy
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckJsb2NrZWRCeUNvbnRlbnRC
bG9ja2VyLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCBfKCJCbG9ja2VkIGJ5IGNvbnRlbnQgYmxv
Y2tlciIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9s
aWN5RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciwgcmVxdWVzdC51cmwoKSwgXygiQmxvY2tl
ZCBieSBjb250ZW50IGJsb2NrZXIiKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VS
TEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gUmVz
b3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RTaG93VVJMLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIF8oIlVSTCBj
YW5ub3QgYmUgc2hvd24iKSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Q
b2xpY3ksIFBvbGljeUVycm9yQ2Fubm90U2hvd1VSTCwgcmVxdWVzdC51cmwoKSwgXygiVVJMIGNh
bm5vdCBiZSBzaG93biIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZvclBvbGlj
eUNoYW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1
cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JGcmFtZUxvYWRJ
bnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3QudXJsKCkuc3RyaW5nKCksIF8oIkZyYW1lIGxvYWQgd2FzIGludGVycnVwdGVkIikpOworICAg
IHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckZyYW1l
TG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsIHJlcXVlc3QudXJsKCksIF8oIkZyYW1lIGxv
YWQgd2FzIGludGVycnVwdGVkIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1F
VHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIHJldHVy
biBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFNob3dN
aW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS51cmwoKS5zdHJpbmco
KSwgXygiQ29udGVudCB3aXRoIHRoZSBzcGVjaWZpZWQgTUlNRSB0eXBlIGNhbm5vdCBiZSBzaG93
biIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5
RXJyb3JDYW5ub3RTaG93TWltZVR5cGUsIHJlc3BvbnNlLnVybCgpLCBfKCJDb250ZW50IHdpdGgg
dGhlIHNwZWNpZmllZCBNSU1FIHR5cGUgY2Fubm90IGJlIHNob3duIikpOwogfQogCiBSZXNvdXJj
ZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbk5ldHdvcmssIE5l
dHdvcmtFcnJvckZpbGVEb2VzTm90RXhpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVz
cG9uc2UudXJsKCkuc3RyaW5nKCksIF8oIkZpbGUgZG9lcyBub3QgZXhpc3QiKSk7CisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5OZXR3b3JrLCBOZXR3b3JrRXJyb3JGaWxlRG9l
c05vdEV4aXN0LCByZXNwb25zZS51cmwoKSwgXygiRmlsZSBkb2VzIG5vdCBleGlzdCIpKTsKIH0K
IAogUmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9t
YWluUGx1Z2luLCBQbHVnaW5FcnJvcldpbGxIYW5kbGVMb2FkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBfKCJQbHVnaW4gd2lsbCBoYW5kbGUgbG9h
ZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBsdWdpbiwgUGx1Z2lu
RXJyb3JXaWxsSGFuZGxlTG9hZCwgcmVzcG9uc2UudXJsKCksIF8oIlBsdWdpbiB3aWxsIGhhbmRs
ZSBsb2FkIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0
IFJlc291cmNlRXJyb3ImIG5ldHdvcmtFcnJvcikKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihlcnJvckRvbWFpbkRvd25sb2FkLCBEb3dubG9hZEVycm9yTmV0d29yaywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBuZXR3b3JrRXJyb3IuZmFpbGluZ1VSTCgpLCBuZXR3b3JrRXJyb3IubG9j
YWxpemVkRGVzY3JpcHRpb24oKSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21h
aW5Eb3dubG9hZCwgRG93bmxvYWRFcnJvck5ldHdvcmssIG5ldHdvcmtFcnJvci5mYWlsaW5nVVJM
KCksIG5ldHdvcmtFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKIH0KIAogUmVzb3VyY2VF
cnJvciBkb3dubG9hZENhbmNlbGxlZEJ5VXNlckVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxv
YWQsIERvd25sb2FkRXJyb3JDYW5jZWxsZWRCeVVzZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIF8oIlVzZXIgY2FuY2VsbGVkIHRoZSBkb3dubG9h
ZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBEb3du
bG9hZEVycm9yQ2FuY2VsbGVkQnlVc2VyLCByZXNwb25zZS51cmwoKSwgXygiVXNlciBjYW5jZWxs
ZWQgdGhlIGRvd25sb2FkIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGRvd25sb2FkRGVzdGluYXRp
b25FcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Eb3du
bG9hZCwgRG93bmxvYWRFcnJvckRlc3RpbmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBlcnJvck1lc3NhZ2UpOworICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JEZXN0aW5hdGlvbiwg
cmVzcG9uc2UudXJsKCksIGVycm9yTWVzc2FnZSk7CiB9CiAKIFJlc291cmNlRXJyb3IgcHJpbnRF
cnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9y
QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFz
ZS5oCmluZGV4IDVhZTgzN2MzMWM1ZDhhNDg1NjIwMDkzODZmODBlZGMwMTk1NGM2ODkuLmE4MGU3
NjE5YjVhZDlkZGRkZTg1NjgyMzc2MmVjZTRmNTUxYmFkM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKQEAgLTI2LDYgKzI2
LDcgQEAKICNpZm5kZWYgUmVzb3VyY2VFcnJvckJhc2VfaAogI2RlZmluZSBSZXNvdXJjZUVycm9y
QmFzZV9oCiAKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDMsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAg
ICBjb25zdCBTdHJpbmcmIGRvbWFpbigpIGNvbnN0IHsgbGF6eUluaXQoKTsgcmV0dXJuIG1fZG9t
YWluOyB9CiAgICAgaW50IGVycm9yQ29kZSgpIGNvbnN0IHsgbGF6eUluaXQoKTsgcmV0dXJuIG1f
ZXJyb3JDb2RlOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBmYWlsaW5nVVJMKCkgY29uc3QgeyBsYXp5
SW5pdCgpOyByZXR1cm4gbV9mYWlsaW5nVVJMOyB9CisgICAgY29uc3QgVVJMJiBmYWlsaW5nVVJM
KCkgY29uc3QgeyBsYXp5SW5pdCgpOyByZXR1cm4gbV9mYWlsaW5nVVJMOyB9CiAgICAgY29uc3Qg
U3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbigpIGNvbnN0IHsgbGF6eUluaXQoKTsgcmV0dXJu
IG1fbG9jYWxpemVkRGVzY3JpcHRpb247IH0KIAogICAgIHZvaWQgc2V0SXNDYW5jZWxsYXRpb24o
Ym9vbCBpc0NhbmNlbGxhdGlvbikgeyBtX2lzQ2FuY2VsbGF0aW9uID0gaXNDYW5jZWxsYXRpb247
IH0KQEAgLTYzLDcgKzY0LDcgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICB9CiAKLSAgICBSZXNv
dXJjZUVycm9yQmFzZShjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3Qg
U3RyaW5nJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQor
ICAgIFJlc291cmNlRXJyb3JCYXNlKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2Rl
LCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRp
b24pCiAgICAgICAgIDogbV9kb21haW4oZG9tYWluKQogICAgICAgICAsIG1fZmFpbGluZ1VSTChm
YWlsaW5nVVJMKQogICAgICAgICAsIG1fbG9jYWxpemVkRGVzY3JpcHRpb24obG9jYWxpemVkRGVz
Y3JpcHRpb24pCkBAIC04Niw3ICs4Nyw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBw
bGF0Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3VyY2VFcnJvciYsIGNvbnN0IFJlc291cmNlRXJyb3Im
KSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBTdHJpbmcgbV9kb21haW47Ci0gICAgU3RyaW5nIG1f
ZmFpbGluZ1VSTDsKKyAgICBVUkwgbV9mYWlsaW5nVVJMOwogICAgIFN0cmluZyBtX2xvY2FsaXpl
ZERlc2NyaXB0aW9uOwogICAgIGludCBtX2Vycm9yQ29kZTsKICAgICBib29sIG1faXNOdWxsIDog
MTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVy
cm9yLmgKaW5kZXggMTcwM2NjOTFmNjhiMmE1ZTY0Zjg3OTIzY2U2ZmJhMWQyN2RkMjQxZC4uYjMy
OGJhMTcxNTA0MTBmNTNmNzcxNjY5MjA4NTE0YjZhNzc0NmY2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKQEAgLTUwLDcgKzUw
LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0
cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNv
bnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCisgICAgUmVzb3VyY2VFcnJvcihjb25z
dCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBj
b25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQogICAgICAgICA6IFJlc291cmNlRXJy
b3JCYXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlv
bikKICAgICAgICAgLCBtX2RhdGFJc1VwVG9EYXRlKHRydWUpCiAgICAgewpAQCAtNjMsNyArNjMs
NyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoQ0ZORVRXT1JLKQogI2lmIFBMQVRGT1JNKFdJTikKLSAg
ICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25z
dCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24s
IENGRGF0YVJlZiBjZXJ0aWZpY2F0ZSk7CisgICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcm
IGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJp
bmcmIGxvY2FsaXplZERlc2NyaXB0aW9uLCBDRkRhdGFSZWYgY2VydGlmaWNhdGUpOwogICAgIFBD
Q0VSVF9DT05URVhUIGNlcnRpZmljYXRlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDZXJ0aWZpY2F0
ZShDRkRhdGFSZWYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXggMTMxZmJiMDQ2MTE3MDZmNjRk
ODUwYTFjNTBlMDVlMTRhMmM2ZTEzMy4uNjBiZmIzNjU5MWUwN2MxYmZiZWFiNmIxZTNiNTZmYWI5
ODQ3ODQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUVycm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VFcnJvckNGLmNwcApAQCAtNDksNyArNDksNyBAQCBSZXNvdXJjZUVycm9yOjpS
ZXNvdXJjZUVycm9yKENGRXJyb3JSZWYgY2ZFcnJvcikKIH0KIAogI2lmIFBMQVRGT1JNKFdJTikK
LVJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBl
cnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6
ZWREZXNjcmlwdGlvbiwgQ0ZEYXRhUmVmIGNlcnRpZmljYXRlKQorUmVzb3VyY2VFcnJvcjo6UmVz
b3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJM
JiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uLCBDRkRhdGFS
ZWYgY2VydGlmaWNhdGUpCiAgICAgOiBSZXNvdXJjZUVycm9yQmFzZShkb21haW4sIGVycm9yQ29k
ZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24pCiAgICAgLCBtX2RhdGFJc1VwVG9E
YXRlKHRydWUpCiAgICAgLCBtX2NlcnRpZmljYXRlKGNlcnRpZmljYXRlKQpAQCAtMTAxLDE3ICsx
MDEsMTIgQEAgdm9pZCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KCkKICAgICBpZiAo
dXNlckluZm8uZ2V0KCkpIHsKICAgICAgICAgQ0ZTdHJpbmdSZWYgZmFpbGluZ1VSTFN0cmluZyA9
IChDRlN0cmluZ1JlZikgQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGZhaWxp
bmdVUkxTdHJpbmdLZXkpOwogICAgICAgICBpZiAoZmFpbGluZ1VSTFN0cmluZykKLSAgICAgICAg
ICAgIG1fZmFpbGluZ1VSTCA9IFN0cmluZyhmYWlsaW5nVVJMU3RyaW5nKTsKKyAgICAgICAgICAg
IG1fZmFpbGluZ1VSTCA9IFVSTChVUkwoKSwgZmFpbGluZ1VSTFN0cmluZyk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgQ0ZVUkxSZWYgZmFpbGluZ1VSTCA9IChDRlVSTFJlZikgQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGZhaWxpbmdVUkxLZXkpOwogICAgICAgICAg
ICAgaWYgKGZhaWxpbmdVUkwpIHsKLSAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IGFic29sdXRlVVJMUmVmID0gYWRvcHRDRihDRlVSTENvcHlBYnNvbHV0ZVVSTChmYWlsaW5nVVJM
KSk7Ci0gICAgICAgICAgICAgICAgaWYgKGFic29sdXRlVVJMUmVmLmdldCgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBDRlVSTEdldFN0cmluZyByZXR1cm5zIGEgbm9ybWFsaXpl
ZCBVUkwgd2hpY2ggaXMgZGlmZmVyZW50IGZyb20gd2hhdCBpcyBhY3R1YWxseSB1c2VkIGJ5IENG
TmV0d29yay4KLSAgICAgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIHVzZSBDRlVSTEdldEJ5
dGVzIGluc3RlYWQuCi0gICAgICAgICAgICAgICAgICAgIGZhaWxpbmdVUkxTdHJpbmcgPSBDRlVS
TEdldFN0cmluZyhhYnNvbHV0ZVVSTFJlZi5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1f
ZmFpbGluZ1VSTCA9IFN0cmluZyhmYWlsaW5nVVJMU3RyaW5nKTsKLSAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgaWYgKFJldGFpblB0cjxDRlVSTFJlZj4gYWJzb2x1dGVVUkxSZWYg
PSBhZG9wdENGKENGVVJMQ29weUFic29sdXRlVVJMKGZhaWxpbmdVUkwpKSkKKyAgICAgICAgICAg
ICAgICAgICAgbV9mYWlsaW5nVVJMID0gVVJMKGFic29sdXRlVVJMUmVmLmdldCgpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBtX2xvY2FsaXplZERlc2NyaXB0aW9uID0gKENG
U3RyaW5nUmVmKSBDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga0NGRXJyb3JM
b2NhbGl6ZWREZXNjcmlwdGlvbktleSk7CkBAIC0xNTIsMTIgKzE0Nyw5IEBAIENGRXJyb3JSZWYg
UmVzb3VyY2VFcnJvcjo6Y2ZFcnJvcigpIGNvbnN0CiAgICAgICAgICAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga0NGRXJyb3JMb2NhbGl6ZWREZXNjcmlwdGlvbktleSwg
bV9sb2NhbGl6ZWREZXNjcmlwdGlvbi5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgICAg
ICBpZiAoIW1fZmFpbGluZ1VSTC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gZmFpbGluZ1VSTFN0cmluZyA9IG1fZmFpbGluZ1VSTC5jcmVhdGVDRlN0cmlu
ZygpOworICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmYWlsaW5nVVJMU3RyaW5n
ID0gbV9mYWlsaW5nVVJMLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwgZmFpbGluZ1VSTFN0cmluZ0tleSwg
ZmFpbGluZ1VSTFN0cmluZy5nZXQoKSk7Ci0gICAgICAgICAgICAvLyBGSVhFTUU6IFdlIG5vcm1h
bGx5IGNyZWF0ZSBhIENGVVJMIGZyb20gYSBzdHJpbmcgYnkgdXNpbmcgVVJMOjpjcmVhdGVDRlVS
TCwgd2hpY2ggaGFuZGxlcwotICAgICAgICAgICAgLy8gY2FzZXMgY29ycmVjdGx5IHRoYXQgQ0ZV
UkxDcmVhdGVXaXRoU3RyaW5nIGhhbmRsZXMgaW5jb3JyZWN0bHkuCi0gICAgICAgICAgICBSZXRh
aW5QdHI8Q0ZVUkxSZWY+IHVybCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKDAsIGZh
aWxpbmdVUkxTdHJpbmcuZ2V0KCksIDApKTsKLSAgICAgICAgICAgIGlmICh1cmwpCisgICAgICAg
ICAgICBpZiAoUmV0YWluUHRyPENGVVJMUmVmPiB1cmwgPSBtX2ZhaWxpbmdVUkwuY3JlYXRlQ0ZV
UkwoKSkKICAgICAgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQo
KSwgZmFpbGluZ1VSTEtleSwgdXJsLmdldCgpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaAppbmRleCA0
MWMxOTkxNGJkYmM2ZWM2MTgzOGFiOWE1YjgzOWFlYzgwZGNiM2NhLi5jMzFkZDQyNTFmNjdhMWNl
ZjZhYjQ5MjkzZTU5NDVhNzdlYWUyYjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVi
bGljOgogICAgIHsKICAgICB9CiAKLSAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9t
YWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmlu
ZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCisgICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcm
IGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJp
bmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQogICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRv
bWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbiksIG1fc3Ns
RXJyb3JzKDApCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCmluZGV4IGY3Yzg2NGNlM2I1MDk5
ZmUwMmYxNjk2OWFjZTM5N2Y2ODJlODNkYmEuLjY0MTg5MzgwMDA2MzMzM2M3MDFkYjUzY2FjMDAx
YWI1NDk5ZjcwNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlRXJyb3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQpAQCAtMTgyLDEyICsxODIsOSBAQCBzdGF0aWMg
UmV0YWluUHRyPE5TRXJyb3I+IGNyZWF0ZU5TRXJyb3JGcm9tUmVzb3VyY2VFcnJvckJhc2UoY29u
c3QgUmVzb3VyY2VFcnJvcgogICAgICAgICBbdXNlckluZm8uZ2V0KCkgc2V0VmFsdWU6cmVzb3Vy
Y2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpIGZvcktleTpOU0xvY2FsaXplZERlc2NyaXB0
aW9uS2V5XTsKIAogICAgIGlmICghcmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIC8vIEZJWEVNRTogV2Ugbm9ybWFsbHkgY3JlYXRlIGFuIE5TVVJMIGZyb20g
YSBzdHJpbmcgYnkgdXNpbmcgVVJMOjpjcmVhdGVOU1VSTCwgd2hpY2ggaGFuZGxlcwotICAgICAg
ICAvLyBjYXNlcyBjb3JyZWN0bHkgdGhhdCBpbml0V2l0aFN0cmluZzogaGFuZGxlcyBpbmNvcnJl
Y3RseS4KLSAgICAgICAgUmV0YWluUHRyPE5TVVJMPiBjb2NvYVVSTCA9IGFkb3B0TlMoW1tOU1VS
TCBhbGxvY10gaW5pdFdpdGhTdHJpbmc6cmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCldKTsKLSAg
ICAgICAgW3VzZXJJbmZvLmdldCgpIHNldFZhbHVlOnJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgp
IGZvcktleTpAIk5TRXJyb3JGYWlsaW5nVVJMU3RyaW5nS2V5Il07Ci0gICAgICAgIGlmIChjb2Nv
YVVSTCkKLSAgICAgICAgICAgIFt1c2VySW5mby5nZXQoKSBzZXRWYWx1ZTpjb2NvYVVSTC5nZXQo
KSBmb3JLZXk6QCJOU0Vycm9yRmFpbGluZ1VSTEtleSJdOworICAgICAgICBbdXNlckluZm8uZ2V0
KCkgc2V0VmFsdWU6KE5TU3RyaW5nICopcmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkuc3RyaW5n
KCkgZm9yS2V5OkAiTlNFcnJvckZhaWxpbmdVUkxTdHJpbmdLZXkiXTsKKyAgICAgICAgaWYgKE5T
VVJMICpjb2NvYVVSTCA9IChOU1VSTCAqKXJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgpKQorICAg
ICAgICAgICAgW3VzZXJJbmZvLmdldCgpIHNldFZhbHVlOmNvY29hVVJMIGZvcktleTpAIk5TRXJy
b3JGYWlsaW5nVVJMS2V5Il07CiAgICAgfQogCiAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0Vycm9y
IGFsbG9jXSBpbml0V2l0aERvbWFpbjpyZXNvdXJjZUVycm9yLmRvbWFpbigpIGNvZGU6cmVzb3Vy
Y2VFcnJvci5lcnJvckNvZGUoKSB1c2VySW5mbzp1c2VySW5mby5nZXQoKV0pOwpAQCAtMjY2LDEw
ICsyNjMsMTAgQEAgdm9pZCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KCkKICAgICBt
X2RvbWFpbiA9IFttX3BsYXRmb3JtRXJyb3IuZ2V0KCkgZG9tYWluXTsKICAgICBtX2Vycm9yQ29k
ZSA9IFttX3BsYXRmb3JtRXJyb3IuZ2V0KCkgY29kZV07CiAKLSAgICBOU1N0cmluZyogZmFpbGlu
Z1VSTFN0cmluZyA9IFtbbV9wbGF0Zm9ybUVycm9yLmdldCgpIHVzZXJJbmZvXSB2YWx1ZUZvcktl
eTpAIk5TRXJyb3JGYWlsaW5nVVJMU3RyaW5nS2V5Il07Ci0gICAgaWYgKCFmYWlsaW5nVVJMU3Ry
aW5nKQotICAgICAgICBmYWlsaW5nVVJMU3RyaW5nID0gW1tbbV9wbGF0Zm9ybUVycm9yLmdldCgp
IHVzZXJJbmZvXSB2YWx1ZUZvcktleTpAIk5TRXJyb3JGYWlsaW5nVVJMS2V5Il0gYWJzb2x1dGVT
dHJpbmddOwotICAgIG1fZmFpbGluZ1VSTCA9IGZhaWxpbmdVUkxTdHJpbmc7IAorICAgIGlmIChO
U1N0cmluZyogZmFpbGluZ1VSTFN0cmluZyA9IFtbbV9wbGF0Zm9ybUVycm9yLmdldCgpIHVzZXJJ
bmZvXSB2YWx1ZUZvcktleTpAIk5TRXJyb3JGYWlsaW5nVVJMU3RyaW5nS2V5Il0pCisgICAgICAg
IG1fZmFpbGluZ1VSTCA9IFVSTChVUkwoKSwgZmFpbGluZ1VSTFN0cmluZyk7CisgICAgZWxzZQor
ICAgICAgICBtX2ZhaWxpbmdVUkwgPSBVUkwoKE5TVVJMICopW1ttX3BsYXRmb3JtRXJyb3IuZ2V0
KCkgdXNlckluZm9dIHZhbHVlRm9yS2V5OkAiTlNFcnJvckZhaWxpbmdVUkxLZXkiXSk7CiAgICAg
Ly8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzY1NTQwNjc+CiAgICAgbV9sb2NhbGl6
ZWREZXNjcmlwdGlvbiA9IG1fZmFpbGluZ1VSTDsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlRXJyb3IuaAppbmRleCBlNTAyOTdhN2ZlOWQ0Yzg5NDkzODEwZDU2YmI4MGY4YTc1ZjRi
OGViLi40NDdiMDAyNzQ4YTYzZjVhYzQwNzZhYjNkOWMzZjJhNTIzNWZiNmZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmgK
QEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJv
ciA6IHB1YmxpYyBSZXNvdXJjZUVycm9yQmFzZQogewogcHVibGljOgotICAgIFJlc291cmNlRXJy
b3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFp
bGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICBSZXNvdXJj
ZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZh
aWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCiAgICAgICAgIDog
UmVzb3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXpl
ZERlc2NyaXB0aW9uKQogICAgICAgICAsIG1fdGxzRXJyb3JzKDApCiAgICAgewpAQCAtNTYsNyAr
NTYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlc291cmNlRXJyb3IgdHJhbnNwb3J0RXJyb3Io
U291cFJlcXVlc3QqLCBpbnQgc3RhdHVzQ29kZSwgY29uc3QgU3RyaW5nJiByZWFzb25QaHJhc2Up
OwogICAgIHN0YXRpYyBSZXNvdXJjZUVycm9yIGdlbmVyaWNHRXJyb3IoR0Vycm9yKiwgU291cFJl
cXVlc3QqKTsKICAgICBzdGF0aWMgUmVzb3VyY2VFcnJvciB0bHNFcnJvcihTb3VwUmVxdWVzdCos
IHVuc2lnbmVkIHRsc0Vycm9ycywgR1Rsc0NlcnRpZmljYXRlKik7Ci0gICAgc3RhdGljIFJlc291
cmNlRXJyb3IgdGltZW91dEVycm9yKGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCk7CisgICAgc3Rh
dGljIFJlc291cmNlRXJyb3IgdGltZW91dEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCk7CiAg
ICAgc3RhdGljIFJlc291cmNlRXJyb3IgYXV0aGVudGljYXRpb25FcnJvcihTb3VwTWVzc2FnZSop
OwogCiAgICAgdW5zaWduZWQgdGxzRXJyb3JzKCkgY29uc3QgeyByZXR1cm4gbV90bHNFcnJvcnM7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZUVycm9yU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VFcnJvclNvdXAuY3BwCmluZGV4IGIyNWI1YTBiODY1MWUxYTBjZjVmNjE5NjBkNTdh
MjI0YWE1MzU4M2IuLmFkNmI4ZTcwODY3M2FlYjlhNTY1OGU0Y2NiOGMzNTEyOTllZmVlOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVy
cm9yU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlRXJyb3JTb3VwLmNwcApAQCAtMzUsMTQgKzM1LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RhdGljIFN0cmluZyBmYWlsaW5nVVJJKFNvdXBVUkkqIHNvdXBVUkkpCitzdGF0
aWMgVVJMIGZhaWxpbmdVUkkoU291cFVSSSogc291cFVSSSkKIHsKICAgICBBU1NFUlQoc291cFVS
SSk7Ci0gICAgR1VuaXF1ZVB0cjxjaGFyPiB1cmkoc291cF91cmlfdG9fc3RyaW5nKHNvdXBVUkks
IEZBTFNFKSk7Ci0gICAgcmV0dXJuIHVyaS5nZXQoKTsKKyAgICByZXR1cm4gVVJMKHNvdXBVUkkp
OwogfQogCi1zdGF0aWMgU3RyaW5nIGZhaWxpbmdVUkkoU291cFJlcXVlc3QqIHJlcXVlc3QpCitz
dGF0aWMgVVJMIGZhaWxpbmdVUkkoU291cFJlcXVlc3QqIHJlcXVlc3QpCiB7CiAgICAgQVNTRVJU
KHJlcXVlc3QpOwogICAgIHJldHVybiBmYWlsaW5nVVJJKHNvdXBfcmVxdWVzdF9nZXRfdXJpKHJl
cXVlc3QpKTsKQEAgLTg1LDcgKzg0LDcgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjp0
bHNFcnJvcihTb3VwUmVxdWVzdCogcmVxdWVzdCwgdW5zaWduZWQgdGxzRXJyb3JzLAogICAgIHJl
dHVybiByZXNvdXJjZUVycm9yOwogfQogCi1SZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OnRp
bWVvdXRFcnJvcihjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwpCitSZXNvdXJjZUVycm9yIFJlc291
cmNlRXJyb3I6OnRpbWVvdXRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwpCiB7CiAgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IGVpdGhlciBiZSBpbnRlZ3JhdGVkIGludG8gRXJy
b3JzKEd0ay9FRkwpLmggb3IgdGhlCiAgICAgLy8gbmV0d29ya2luZyBlcnJvcnMgZnJvbSB0aG9z
ZSBmaWxlcyBzaG91bGQgYmUgbW92ZWQgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXgg
OTU2ODk3YjVjOWRjZmRhM2VkZDEzMmY0ZjE3ZTIzNGRlZjI3ZDNkYi4uYjY3YzkwZGQ5YjRjMjk3
YzA4MmUxMjA1OGExODE5NzAyYjk3YTE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAgLTEw
NTEsNyArMTA1MSw3IEBAIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gUmVzb3VyY2VIYW5kbGU6OnJl
bGVhc2VGb3JEb3dubG9hZChSZXNvdXJjZUhhbmRsZUNsaWVudCoKIAogdm9pZCBSZXNvdXJjZUhh
bmRsZTo6dGltZW91dEZpcmVkKCkKIHsKLSAgICBjbGllbnQoKS0+ZGlkRmFpbCh0aGlzLCBSZXNv
dXJjZUVycm9yOjp0aW1lb3V0RXJyb3IoZmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkpKTsK
KyAgICBjbGllbnQoKS0+ZGlkRmFpbCh0aGlzLCBSZXNvdXJjZUVycm9yOjp0aW1lb3V0RXJyb3Io
Zmlyc3RSZXF1ZXN0KCkudXJsKCkpKTsKICAgICBjYW5jZWwoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggNGM0OGM5NGY4YjI5MzM2YjQ0MjQxMTJkNmIyZWNi
Yjk2MDgzZmM1ZS4uNTc5ZjFjY2Y4NTVmMTA5MjMyOWUyNjBmZDU0MzEyNDM1YmFhMjY2YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xMDc3LDggKzEwNzcsMTAgQEAg
dm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
ICAgICB9CiAKICAgICAvLyBOZXR3b3JrIGZhaWx1cmVzIGFyZSBhbHJlYWR5IHJlcG9ydGVkIHRv
IFdlYiBJbnNwZWN0b3IgYnkgUmVzb3VyY2VMb2FkZXIuCi0gICAgaWYgKGVycm9yLmRvbWFpbigp
ID09IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwpCi0gICAgICAgIGxvZ0NvbnNvbGVFcnJvcihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksICJYTUxIdHRwUmVxdWVzdCBjYW5ub3QgbG9hZCAiICsg
ZXJyb3IuZmFpbGluZ1VSTCgpICsgIi4gIiArIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkp
OworICAgIGlmIChlcnJvci5kb21haW4oKSA9PSBlcnJvckRvbWFpbldlYktpdEludGVybmFsKSB7
CisgICAgICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiWE1MSHR0cFJlcXVlc3QgY2Fu
bm90IGxvYWQgIiwgZXJyb3IuZmFpbGluZ1VSTCgpLnN0cmluZygpLCAiLiAiLCBlcnJvci5sb2Nh
bGl6ZWREZXNjcmlwdGlvbigpKTsKKyAgICAgICAgbG9nQ29uc29sZUVycm9yKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgbWVzc2FnZSk7CisgICAgfQogCiAgICAgbV9leGNlcHRpb25Db2RlID0g
WE1MSHR0cFJlcXVlc3RFeGNlcHRpb246Ok5FVFdPUktfRVJSOwogICAgIG5ldHdvcmtFcnJvcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDdiMjQ0NTc3N2NiMjA1NmY2Y2ZlZmUwNTdlNGVmNTg5
NzAwN2FmZTYuLmI5ZGM1MTFjMzIyNDk4Y2IzYzJlM2RhYzQwOGYzY2ViYThhZTFlZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKQEAgLTg1MSwxMiArODUxLDEyIEBAIFJlc291cmNlRXJyb3IgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzCiB7CiAgICAgLy8gRklYTUU6IE5lZWQgQ2hpY2tlbkNhdCB0byBpbmNsdWRlIENGTmV0d29y
ay9DRlVSTEVycm9yLmggdG8gZ2V0IHRoZXNlIHZhbHVlcwogICAgIC8vIEFsdGVybmF0aXZlbHks
IHdlIGNvdWxkIGNyZWF0ZSBvdXIgb3duIGVycm9yIGRvbWFpbi9jb2Rlcy4KLSAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViVVJMRXJyb3JEb21haW4pLCAtOTk5LCByZXF1ZXN0LnVy
bCgpLnN0cmluZygpLCBTdHJpbmcoIkNhbmNlbGxlZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VF
cnJvcihTdHJpbmcoV2ViVVJMRXJyb3JEb21haW4pLCAtOTk5LCByZXF1ZXN0LnVybCgpLCBTdHJp
bmcoIkNhbmNlbGxlZCIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBy
ZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBXZWJLaXRFcnJv
ckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0LCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCBXRUJfVUlf
U1RSSU5HKCJOb3QgYWxsb3dlZCB0byB1c2UgcmVzdHJpY3RlZCBuZXR3b3JrIHBvcnQiLCAiV2Vi
S2l0RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCBkZXNjcmlwdGlvbiIpKTsKKyAgICByZXR1
cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBXZWJLaXRFcnJvckNh
bm5vdFVzZVJlc3RyaWN0ZWRQb3J0LCByZXF1ZXN0LnVybCgpLCBXRUJfVUlfU1RSSU5HKCJOb3Qg
YWxsb3dlZCB0byB1c2UgcmVzdHJpY3RlZCBuZXR3b3JrIHBvcnQiLCAiV2ViS2l0RXJyb3JDYW5u
b3RVc2VSZXN0cmljdGVkUG9ydCBkZXNjcmlwdGlvbiIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCkBAIC04NjYsMjcgKzg2NiwyNyBAQCBSZXNvdXJjZUVy
cm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNv
bnN0IFJlc291cmNlUgogCiBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5u
b3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJl
dHVybiBSZXNvdXJjZUVycm9yKFN0cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIFdlYktpdEVycm9y
Q2Fubm90U2hvd1VSTCwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgV0VCX1VJX1NUUklORygiVGhl
IFVSTCBjYW5ceEUyXHg4MFx4OTl0IGJlIHNob3duIiwgIldlYktpdEVycm9yQ2Fubm90U2hvd1VS
TCBkZXNjcmlwdGlvbiIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0
RXJyb3JEb21haW4pLCBXZWJLaXRFcnJvckNhbm5vdFNob3dVUkwsIHJlcXVlc3QudXJsKCksIFdF
Ql9VSV9TVFJJTkcoIlRoZSBVUkwgY2FuXHhFMlx4ODBceDk5dCBiZSBzaG93biIsICJXZWJLaXRF
cnJvckNhbm5vdFNob3dVUkwgZGVzY3JpcHRpb24iKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0
cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIFdlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRC
eVBvbGljeUNoYW5nZSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgV0VCX1VJX1NUUklORygiRnJh
bWUgbG9hZCBpbnRlcnJ1cHRlZCIsICJXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQ
b2xpY3lDaGFuZ2UgZGVzY3JpcHRpb24iKSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoU3Ry
aW5nKFdlYktpdEVycm9yRG9tYWluKSwgV2ViS2l0RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5
UG9saWN5Q2hhbmdlLCByZXF1ZXN0LnVybCgpLCBXRUJfVUlfU1RSSU5HKCJGcmFtZSBsb2FkIGlu
dGVycnVwdGVkIiwgIldlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5n
ZSBkZXNjcmlwdGlvbiIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nKCksIFdlYktpdEVycm9yQ2Fu
bm90U2hvd01JTUVUeXBlLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgV0VCX1VJX1NUUklORygi
Q29udGVudCB3aXRoIHNwZWNpZmllZCBNSU1FIHR5cGUgY2FuXHhFMlx4ODBceDk5dCBiZSBzaG93
biIsICJXZWJLaXRFcnJvckNhbm5vdFNob3dNSU1FVHlwZSBkZXNjcmlwdGlvbiIpKTsKKyAgICBy
ZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoKSwgV2ViS2l0RXJyb3JDYW5ub3RTaG93TUlNRVR5
cGUsIHJlc3BvbnNlLnVybCgpLCBXRUJfVUlfU1RSSU5HKCJDb250ZW50IHdpdGggc3BlY2lmaWVk
IE1JTUUgdHlwZSBjYW5ceEUyXHg4MFx4OTl0IGJlIHNob3duIiwgIldlYktpdEVycm9yQ2Fubm90
U2hvd01JTUVUeXBlIGRlc2NyaXB0aW9uIikpOwogfQogCiBSZXNvdXJjZUVycm9yIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nKFdlYlVSTEVy
cm9yRG9tYWluKSwgLTExMDAsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBTdHJpbmcoIkZpbGUg
ZG9lcyBub3QgZXhpc3QuIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0cmluZyhXZWJV
UkxFcnJvckRvbWFpbiksIC0xMTAwLCByZXNwb25zZS51cmwoKSwgU3RyaW5nKCJGaWxlIGRvZXMg
bm90IGV4aXN0LiIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVudDo6
cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4p
LCBXZWJLaXRFcnJvclBsdWdJbldpbGxIYW5kbGVMb2FkLCByZXNwb25zZS51cmwoKS5zdHJpbmco
KSwgV0VCX1VJX1NUUklORygiUGx1Zy1pbiBoYW5kbGVkIGxvYWQiLCAiV2ViS2l0RXJyb3JQbHVn
SW5XaWxsSGFuZGxlTG9hZCBkZXNjcmlwdGlvbiIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBXZWJLaXRFcnJvclBsdWdJbldpbGxIYW5kbGVM
b2FkLCByZXNwb25zZS51cmwoKSwgV0VCX1VJX1NUUklORygiUGx1Zy1pbiBoYW5kbGVkIGxvYWQi
LCAiV2ViS2l0RXJyb3JQbHVnSW5XaWxsSGFuZGxlTG9hZCBkZXNjcmlwdGlvbiIpKTsKIH0KIAog
Ym9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRmFsbEJhY2soY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IpCkBAIC0xMTY2LDcgKzExNjYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdpblZpZXcqIHBsdWdp
bgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgUmVzb3Vy
Y2VFcnJvciByZXNvdXJjZUVycm9yKFN0cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIGVycm9yQ29k
ZSwgcGx1Z2luVmlldy0+dXJsKCkuc3RyaW5nKCksIFN0cmluZygpKTsKKyAgICBSZXNvdXJjZUVy
cm9yIHJlc291cmNlRXJyb3IoU3RyaW5nKFdlYktpdEVycm9yRG9tYWluKSwgZXJyb3JDb2RlLCBw
bHVnaW5WaWV3LT51cmwoKSwgU3RyaW5nKCkpOwogICAgIENPTVB0cjxJV2ViRXJyb3I+IGVycm9y
KEFkb3B0Q09NLCBXZWJFcnJvcjo6Y3JlYXRlSW5zdGFuY2UocmVzb3VyY2VFcnJvciwgdXNlcklu
Zm9CYWcuZ2V0KCkpKTsKICAgICAgCiAgICAgcmVzb3VyY2VMb2FkRGVsZWdhdGUtPnBsdWdJbkZh
aWxlZFdpdGhFcnJvcih3ZWJWaWV3LCBlcnJvci5nZXQoKSwgZ2V0V2ViRGF0YVNvdXJjZShmcmFt
ZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkpOwpAQCAtMTI0NCw3ICsxMjQ0LDcgQEAgUGFz
c1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lk
Z2V0KGNvbnN0IEludFNpemUmIHAKIAogICAgIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJh
Zz4gdXNlckluZm9CYWcgPSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2Uo
KTsKIAotICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JE
b21haW4pLCBXZWJLaXRFcnJvckphdmFVbmF2YWlsYWJsZSwgU3RyaW5nKCksIFdFQl9VSV9TVFJJ
TkcoIkphdmEgaXMgdW5hdmFpbGFibGUiLCAiV2ViS2l0RXJyb3JKYXZhVW5hdmFpbGFibGUgZGVz
Y3JpcHRpb24iKSk7CisgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0cmluZyhXZWJL
aXRFcnJvckRvbWFpbiksIFdlYktpdEVycm9ySmF2YVVuYXZhaWxhYmxlLCBVUkwoKSwgV0VCX1VJ
X1NUUklORygiSmF2YSBpcyB1bmF2YWlsYWJsZSIsICJXZWJLaXRFcnJvckphdmFVbmF2YWlsYWJs
ZSBkZXNjcmlwdGlvbiIpKTsKICAgICBDT01QdHI8SVdlYkVycm9yPiBlcnJvcihBZG9wdENPTSwg
V2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKHJlc291cmNlRXJyb3IsIHVzZXJJbmZvQmFnLmdldCgp
KSk7CiAKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwIGIvU291cmNlL1dlYktp
dC93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKaW5kZXggNDYxNWQ3Nzg0OTBiNzgwYTE3YjU1MWIz
ZjVhMTRmMzdlYzk2MzI2Zi4uMTVmMTE5Nzc4NzhiOTUwYjdiZTQwZjdjY2FiM2IyNWNjOTNlYWEz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKQEAgLTMwNyw3ICszMDcs
NyBAQCBIUkVTVUxUIFdlYkRvd25sb2FkOjpjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShf
SW5fb3B0XyBJV2ViVVJMQXV0aGVudGljYXRpbwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3
ZSBuZWVkIGEgVVJMIG9yIGRlc2NyaXB0aW9uIGZvciB0aGlzIGVycm9yIGNvZGU/Ci0gICAgUmVz
b3VyY2VFcnJvciBlcnJvcihTdHJpbmcoV2ViVVJMRXJyb3JEb21haW4pLCBXZWJVUkxFcnJvclVz
ZXJDYW5jZWxsZWRBdXRoZW50aWNhdGlvbiwgIiIsICIiKTsKKyAgICBSZXNvdXJjZUVycm9yIGVy
cm9yKFN0cmluZyhXZWJVUkxFcnJvckRvbWFpbiksIFdlYlVSTEVycm9yVXNlckNhbmNlbGxlZEF1
dGhlbnRpY2F0aW9uLCBVUkwoKSwgIiIpOwogICAgIENPTVB0cjxXZWJFcnJvcj4gd2ViRXJyb3Io
QWRvcHRDT00sIFdlYkVycm9yOjpjcmVhdGVJbnN0YW5jZShlcnJvcikpOwogICAgIG1fZGVsZWdh
dGUtPmRpZEZhaWxXaXRoRXJyb3IodGhpcywgd2ViRXJyb3IuZ2V0KCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJFcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJF
cnJvci5jcHAKaW5kZXggZWY4ZmFhM2FhNTYxN2YxYzE0ZDRmOGU3YTQxZTI3MzMzMjRmY2JkMC4u
MTcwYzZjOGVmZTU5MGIxY2UwZWVlNzk2MmYyMzEwZGNkNTMyYjQ2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vV2ViRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkVy
cm9yLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIFVMT05HIFdlYkVycm9yOjpSZWxlYXNlKCkKIAog
SFJFU1VMVCBXZWJFcnJvcjo6aW5pdChfSW5fIEJTVFIgZG9tYWluLCBpbnQgY29kZSwgX0luXyBC
U1RSIHVybCkKIHsKLSAgICBtX2Vycm9yID0gUmVzb3VyY2VFcnJvcihTdHJpbmcoZG9tYWluLCBT
eXNTdHJpbmdMZW4oZG9tYWluKSksIGNvZGUsIFN0cmluZyh1cmwsIFN5c1N0cmluZ0xlbih1cmwp
KSwgU3RyaW5nKCkpOworICAgIG1fZXJyb3IgPSBSZXNvdXJjZUVycm9yKFN0cmluZyhkb21haW4s
IFN5c1N0cmluZ0xlbihkb21haW4pKSwgY29kZSwgVVJMKFVSTCgpLCBTdHJpbmcodXJsLCBTeXNT
dHJpbmdMZW4odXJsKSkpLCBTdHJpbmcoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3du
bG9hZFNvdXBFcnJvcnNFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL2VmbC9Eb3dubG9hZFNvdXBFcnJvcnNFZmwuY3BwCmluZGV4IDk0NmYzNTE1NDliZTdi
OTZkZDhlN2M0NTg3MmE0N2ZiMWRmZmQ1MmEuLmFjMDBkNTFiMzcxMzg5MjFlNzc2YjFhYzU4YTBk
NDU1NTE2YjA4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9lZmwvRG93bmxvYWRTb3VwRXJyb3JzRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvZWZsL0Rvd25sb2FkU291cEVycm9yc0VmbC5jcHAK
QEAgLTMzLDcgKzMzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1SZXNvdXJjZUVycm9yIHBsYXRmb3JtRG93bmxvYWROZXR3b3JrRXJyb3IoaW50
IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2Fs
aXplZERlc2NyaXB0aW9uKQorUmVzb3VyY2VFcnJvciBwbGF0Zm9ybURvd25sb2FkTmV0d29ya0Vy
cm9yKGludCBlcnJvckNvZGUsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBs
b2NhbGl6ZWREZXNjcmlwdGlvbikKIHsKICAgICByZXR1cm4gZG93bmxvYWROZXR3b3JrRXJyb3Io
UmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBlcnJvckNvZGUsIGZhaWxpbmdVUkws
IGxvY2FsaXplZERlc2NyaXB0aW9uKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvZ3RrL0Rvd25sb2FkU291cEVycm9yc0d0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvZ3RrL0Rvd25sb2FkU291cEVy
cm9yc0d0ay5jcHAKaW5kZXggMGQzZjlkM2VkZDE1ZGJhYjI3Mjg0YmRmZmQ4ZDE3NmU4NDIyM2U5
My4uYmEyZTdiNDU2YTQxNWYxN2Q1OTY1MzAwMWJiZGZhYzBiZTI4MDM0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2d0ay9Eb3dubG9hZFNvdXBF
cnJvcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9ndGsvRG93bmxvYWRTb3VwRXJyb3JzR3RrLmNwcApAQCAtMzMsNyArMzMsNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlc291cmNlRXJyb3Ig
cGxhdGZvcm1Eb3dubG9hZE5ldHdvcmtFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcm
IGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCitSZXNvdXJj
ZUVycm9yIHBsYXRmb3JtRG93bmxvYWROZXR3b3JrRXJyb3IoaW50IGVycm9yQ29kZSwgY29uc3Qg
VVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQogewog
ICAgIHJldHVybiBkb3dubG9hZE5ldHdvcmtFcnJvcihSZXNvdXJjZUVycm9yKGVycm9yRG9tYWlu
RG93bmxvYWQsIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24pKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9z
b3VwL0Rvd25sb2FkU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCmluZGV4IDU2NTVkZmM0YmI2ZmVlMjMzMDliMzBi
NGZkZGNkOTg0YmU5NmVmODMuLmU0OTc2NmJkNTljMTg2YTkyMTdiMjNhY2E4NjdhMzA3ZjE1NjNk
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9z
b3VwL0Rvd25sb2FkU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6
CiAgICAgICAgIG1fZG93bmxvYWQtPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiAKICAg
ICAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwKSB7Ci0gICAgICAgICAg
ICBkb3dubG9hZEZhaWxlZChwbGF0Zm9ybURvd25sb2FkTmV0d29ya0Vycm9yKHJlc3BvbnNlLmh0
dHBTdGF0dXNDb2RlKCksIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCByZXNwb25zZS5odHRwU3Rh
dHVzVGV4dCgpKSk7CisgICAgICAgICAgICBkb3dubG9hZEZhaWxlZChwbGF0Zm9ybURvd25sb2Fk
TmV0d29ya0Vycm9yKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlc3BvbnNlLnVybCgpLCBy
ZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L3NvdXAvRG93bmxvYWRTb3VwRXJyb3JzLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXBFcnJvcnMuaAppbmRleCA4OWUyM2UwODM3ZjBj
NTA4MWRiYjMxYmFkNzZmOGU5YTY0OGZkYzQxLi5mZjM5N2VjMjJmNzE3M2NhYTI3ZmM3NGRhZWRj
YjQzM2Y5NGNhMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXBFcnJvcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXBFcnJvcnMuaApAQCAtMjcs
MTEgKzI3LDEyIEBACiAjZGVmaW5lIERvd25sb2FkU291cEVycm9yc19oCiAKICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYkNv
cmU6OlJlc291cmNlRXJyb3IgcGxhdGZvcm1Eb3dubG9hZE5ldHdvcmtFcnJvcihpbnQgZXJyb3JD
b2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVz
Y3JpcHRpb24pOworV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBwbGF0Zm9ybURvd25sb2FkTmV0d29y
a0Vycm9yKGludCBlcnJvckNvZGUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmFpbGluZ1VSTCwgY29u
c3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbik7CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IHBsYXRmb3JtRG93bmxvYWREZXN0aW5hdGlvbkVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVu
dENvZGVyc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzU291cC5jcHAKaW5kZXggNjcwMTY0ZjY4OTNiMjUzZjA3OGZhMjljM2ExNDg0MTg5
NDMwMjkwOC4uOGE4NzcwMjg4ZGQ4ZTYwMWNiNTc5YjQ2OWVjYmRkZjE4YTVjMTYxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291
cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzU291cC5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3Vy
Y2VFcnJvcj46OmVuY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsCiAK
ICAgICBlbmNvZGVyIDw8IHJlc291cmNlRXJyb3IuZG9tYWluKCk7CiAgICAgZW5jb2RlciA8PCBy
ZXNvdXJjZUVycm9yLmVycm9yQ29kZSgpOwotICAgIGVuY29kZXIgPDwgcmVzb3VyY2VFcnJvci5m
YWlsaW5nVVJMKCk7CisgICAgZW5jb2RlciA8PCByZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKS5z
dHJpbmcoKTsKICAgICBlbmNvZGVyIDw8IHJlc291cmNlRXJyb3IubG9jYWxpemVkRGVzY3JpcHRp
b24oKTsKICAgICBlbmNvZGVyIDw8IHJlc291cmNlRXJyb3IuaXNDYW5jZWxsYXRpb24oKTsKICAg
ICBlbmNvZGVyIDw8IHJlc291cmNlRXJyb3IuaXNUaW1lb3V0KCk7CkBAIC0yMzUsNyArMjM1LDcg
QEAgYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+OjpkZWNvZGVQbGF0Zm9ybURhdGEo
QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNUaW1l
b3V0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmVzb3VyY2VFcnJvciA9IFJlc291
cmNlRXJyb3IoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0
aW9uKTsKKyAgICByZXNvdXJjZUVycm9yID0gUmVzb3VyY2VFcnJvcihkb21haW4sIGVycm9yQ29k
ZSwgVVJMKFVSTCgpLCBmYWlsaW5nVVJMKSwgbG9jYWxpemVkRGVzY3JpcHRpb24pOwogICAgIHJl
c291cmNlRXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24oaXNDYW5jZWxsYXRpb24pOwogICAgIHJlc291
cmNlRXJyb3Iuc2V0SXNUaW1lb3V0KGlzVGltZW91dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAK
aW5kZXggOGM5MTc0OWQxZWY2YWY0MGFhMTI0MDA2YTQzOTM2Nzg0NzljNzgxZC4uODcyYTU2NDYx
MjBjYjcwNDQ4NWU2YmI1ODE2OTliMGQwNzJiMGJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAK
QEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNo
X2Vycm9yKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QsIEdFcgogICAgICAgICByZXR1
cm47CiAKICAgICBwcml2LT5zdHJlYW0gPSBudWxscHRyOwotICAgIFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgcmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgdG9X
ZWJDb3JlRXJyb3IoZXJyb3ItPmNvZGUpLCBwcml2LT51cmkuZGF0YSgpLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSk7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciByZXNvdXJj
ZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCB0b1dlYkNvcmVFcnJvcihl
cnJvci0+Y29kZSksIFdlYkNvcmU6OlVSTChwcml2LT5zb3VwVVJJLmdldCgpKSwgU3RyaW5nOjpm
cm9tVVRGOChlcnJvci0+bWVzc2FnZSkpOwogICAgIHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5k
aWRGYWlsV2l0aEVycm9yKHByaXYtPnJlcXVlc3RJRCwgcmVzb3VyY2VFcnJvcik7CiAgICAgd2Vi
a2l0V2ViQ29udGV4dERpZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChwcml2LT53ZWJDb250
ZXh0LCBwcml2LT5yZXF1ZXN0SUQpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267898</attachid>
            <date>2015-12-24 08:22:35 -0800</date>
            <delta_ts>2015-12-24 08:34:04 -0800</delta_ts>
            <desc>Patch v9</desc>
            <filename>bug-146391-20151224082159.patch</filename>
            <type>text/plain</type>
            <size>57287</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0Mzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTk5Y2NlMDBmMWMxMTk3
NmM4MWZmZDBkY2EwOGU1NGNkMjYwOTI5NS4uNDMwMGNjNGVjNjZhYjQ3MTM1ZDg1NGE5NWFmOTU2
ZTM4MzFhMDQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAxNS0xMi0yNCAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlRXJyb3Ig
c2hvdWxkIHN0b3JlIGZhaWxpbmdVUkwgYXMgVVJMIGluc3RlYWQgb2YgU3RyaW5nIHRvIGF2b2lk
IHJlcGFyc2luZyBhbmQgdG8gYWRkcmVzcyBGSVhNRSBjb21tZW50cyBpbiBSZXNvdXJjZUVycm9y
Q0YuY3BwIGFuZCBSZXNvdXJjZUVycm9yTWFjLm1tCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9y
Zy9iLzE0NjM5MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlU2ltcGxl
Q3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxpZ2h0RmFpbHVyZSk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRGYWlsdXJlKToKKyAgICAgICAgLSBTd2l0Y2gg
dHlwZSBvZiAndXJsJyBhcmd1bWVudCBvZiBwcmVmbGlnaHRGYWlsdXJlKCkgZnJvbQorICAgICAg
ICAgIFN0cmluZyB0byBVUkwuCisgICAgICAgIC0gVXBkYXRlIGZvciB0eXBlIGNoYW5nZSBvZiAn
ZmFpbGluZ1VSTCcgYXJndW1lbnQgdG8KKyAgICAgICAgICBSZXNvdXJjZUVycm9yKCkuCisKKyAg
ICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToK
KyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXI6OmxvYWREYXRhVVJMKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpjYW5jZWwpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgLSBVcGRhdGUgZm9yIHR5cGUgY2hh
bmdlIG9mICdmYWlsaW5nVVJMJyBhcmd1bWVudCB0bworICAgICAgICAgIFJlc291cmNlRXJyb3Io
KS4KKworICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRTb3VyY2U6OmRpZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2spOgorICAgICAgICAtIENvbnZl
cnQgZmFpbGluZ1VSTCgpIHRvIFN0cmluZyBleHBsaWNpdGx5LgorCisgICAgICAgICogcGxhdGZv
cm0vZWZsL0Vycm9yc0VmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5jZWxsZWRFcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpibG9ja2VkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6Ymxv
Y2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93
VVJMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VF
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93TUlNRVR5cGVFcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjpmaWxlRG9lc05vdEV4aXN0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpkb3dubG9hZENh
bmNlbGxlZEJ5VXNlckVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmRvd25sb2FkRGVzdGluYXRp
b25FcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjYW5jZWxsZWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpibG9ja2VkRXJy
b3IpOgorICAgICAgICAoV2ViQ29yZTo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5u
b3RTaG93TUlNRVR5cGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpmaWxlRG9lc05vdEV4aXN0
RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpkb3dubG9hZENhbmNlbGxlZEJ5VXNlckVycm9yKToKKyAgICAgICAg
KFdlYkNvcmU6OmRvd25sb2FkRGVzdGluYXRpb25FcnJvcik6CisgICAgICAgIC0gVXBkYXRlIGZv
ciB0eXBlIGNoYW5nZSBvZiAnZmFpbGluZ1VSTCcgYXJndW1lbnQgdG8KKyAgICAgICAgICBSZXNv
dXJjZUVycm9yKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JC
YXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yQmFzZTo6ZmFpbGluZ1VSTCk6
CisgICAgICAgIC0gQ2hhbmdlIHJldHVybiB0eXBlIGZyb20gU3RyaW5nIHRvIFVSTC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjpSZXNvdXJjZUVycm9yQmFzZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgLSBDaGFuZ2UgdHlw
ZSBvZiAnZmFpbGluZ1VSTCcgZnJvbSBTdHJpbmcgdG8gVVJMLgorCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcik6CisgICAgICAgIC0gQ2hhbmdlIHR5cGUgb2YgJ2Zh
aWxpbmdVUkwnIGZyb20gU3RyaW5nIHRvIFVSTC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
RXJyb3I6OnBsYXRmb3JtTGF6eUluaXQpOgorICAgICAgICAtIENsZWFuIHVwIGNvZGUgYW5kIGFk
ZHJlc3MgRklYTUUgYnkgcGFyc2luZyBDRlVSTFJlZiB1c2luZworICAgICAgICAgIFVSTCgpIGNv
bnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6Y2ZFcnJvcik6Cisg
ICAgICAgIC0gQ2xlYW4gdXAgY29kZSBhbmQgYWRkcmVzcyBGSVhNRSBhZnRlciBzd2l0Y2hpbmcg
dHlwZSBvZgorICAgICAgICAgIG1fZmFpbGluZ1VSTC4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgLSBDaGFuZ2UgdHlwZSBvZiAnZmFpbGluZ1VS
TCcgZnJvbSBTdHJpbmcgdG8gVVJMLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU5TRXJyb3JGcm9t
UmVzb3VyY2VFcnJvckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6cGxh
dGZvcm1MYXp5SW5pdCk6CisgICAgICAgIC0gQ2xlYW4gdXAgY29kZSBhbmQgYWRkcmVzcyBGSVhN
RSBhZnRlciBzd2l0Y2hpbmcgdHlwZSBvZgorICAgICAgICAgIG1fZmFpbGluZ1VSTC4KKworICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlRXJyb3I6OnRpbWVvdXRFcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZhaWxpbmdV
UkkpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6dGltZW91dEVycm9yKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp0aW1lb3V0RmlyZWQpOgorICAgICAgICAt
IENoYW5nZSB0eXBlIG9mICdmYWlsaW5nVVJMJyBmcm9tIFN0cmluZyB0byBVUkwuCisKKyAgICAg
ICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OmRpZEZhaWwpOgorICAgICAgICAtIENvbnZlcnQgZmFpbGluZ1VSTCgpIHRvIFN0cmlu
ZyBleHBsaWNpdGx5LgorICAgICAgICAtIEFsc28gc3dpdGNoIHRvIHVzaW5nIG1ha2VTdHJpbmco
KS4KKwogMjAxNS0xMi0yMiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgVHJ5IHRvIGZpeCB0aGUgaU9TIGJ1aWxkIGFmdGVyIHIxOTQzNzgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpp
bmRleCA4MjQxZTFmNmY1NzBmYTU5ZTg2ZWI0ZmI2MDY1MDI4Y2JjMTU3OTI0Li5kZGIzMjhlNTMy
MTkzMzRlOWFhY2JlNGFhOWJmZjJlN2JlY2RjNmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMTUtMTItMjQgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXNvdXJjZUVycm9yIHNob3VsZCBzdG9yZSBmYWlsaW5nVVJMIGFzIFVSTCBp
bnN0ZWFkIG9mIFN0cmluZyB0byBhdm9pZCByZXBhcnNpbmcgYW5kIHRvIGFkZHJlc3MgRklYTUUg
Y29tbWVudHMgaW4gUmVzb3VyY2VFcnJvckNGLmNwcCBhbmQgUmVzb3VyY2VFcnJvck1hYy5tbQor
ICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8xNDYzOTE+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsbGVk
RXJyb3IpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmJsb2NrZWRFcnJvcik6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAgICAg
ICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjppbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9y
KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5ub3RTaG93TUlNRVR5cGVFcnJv
cik6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmlsZURvZXNOb3RFeGlzdEVycm9y
KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwbHVnaW5XaWxsSGFuZGxlTG9hZEVy
cm9yKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0
YXJ0UGx1Z2luKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBw
bGV0V2lkZ2V0KToKKyAgICAgICAgKiBXZWJEb3dubG9hZENGTmV0LmNwcDoKKyAgICAgICAgKFdl
YkRvd25sb2FkOjpjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogV2Vi
RXJyb3IuY3BwOgorICAgICAgICAoV2ViRXJyb3I6OmluaXQpOgorICAgICAgICAtIFVwZGF0ZSBm
b3IgdHlwZSBjaGFuZ2Ugb2YgJ2ZhaWxpbmdVUkwnIGFyZ3VtZW50IHRvCisgICAgICAgICAgUmVz
b3VyY2VFcnJvcigpLgorCiAyMDE1LTEyLTIwICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBzZXRUb29sYmFySGVpZ2h0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggMDQzOWIwMmVjZTg2ZDczZjZiYzkxYTExM2U4M2IzZWM1ODYxZWVlYy4uNDgxZjY2MGMxNmZm
MjgxYTkwNGVjNmE2MDE4MzIwZjA5YTRiNGNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBA
CisyMDE1LTEyLTI0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVzb3VyY2VFcnJvciBzaG91bGQgc3RvcmUgZmFpbGluZ1VSTCBhcyBVUkwgaW5zdGVhZCBv
ZiBTdHJpbmcgdG8gYXZvaWQgcmVwYXJzaW5nIGFuZCB0byBhZGRyZXNzIEZJWE1FIGNvbW1lbnRz
IGluIFJlc291cmNlRXJyb3JDRi5jcHAgYW5kIFJlc291cmNlRXJyb3JNYWMubW0KKyAgICAgICAg
PGh0dHA6Ly93ZWJraXQub3JnL2IvMTQ2MzkxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3du
bG9hZFNvdXBFcnJvcnNFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpwbGF0Zm9ybURvd25sb2Fk
TmV0d29ya0Vycm9yKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvZ3RrL0Rv
d25sb2FkU291cEVycm9yc0d0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBsYXRmb3JtRG93bmxv
YWROZXR3b3JrRXJyb3IpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9zb3Vw
L0Rvd25sb2FkU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9zb3Vw
L0Rvd25sb2FkU291cEVycm9ycy5oOgorICAgICAgICAqIFNoYXJlZC9zb3VwL1dlYkNvcmVBcmd1
bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNl
RXJyb3I+OjplbmNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlc291cmNlRXJyb3I+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdExvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChMb2FkZXJDbGllbnQ6
OmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSk6CisgICAgICAgIChMb2Fk
ZXJDbGllbnQ6OmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwOgorICAgICAgICAod2Via2l0
X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3IpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVycm9yc0VmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Omlu
dGVybmFsRXJyb3IpOgorICAgICAgICAtIFVwZGF0ZSBmb3IgdHlwZSBjaGFuZ2Ugb2YgJ2ZhaWxp
bmdVUkwnIGFyZ3VtZW50IHRvCisgICAgICAgICAgUmVzb3VyY2VFcnJvcigpLgorCiAyMDE1LTEy
LTIyICBIdW5zZW9wIEplb25nICA8aHM4NS5qZW9uZ0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBb
RUZMXSBld2tfYXBwbGljYXRpb25fY2FjaGVfbWFuYWdlciB0ZXN0IGZhaWxlZCBhZnRlciByMTkz
ODEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwCmluZGV4IGQ1NDA2MDUyYjVlNzljZmUwZTBmMDRhMTFiMmFmMWQ1N2QyM2M5NmUuLjFm
NjE0ZWIzMTc5Nzk1OGZlOGE1MmU4NGRlZGYwNmQ1YWQ1ZDgxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC04NSw3ICs4
NSw3IEBAIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
KERvY3VtZW50JiBkb2N1bWVudCwgVGhyZWFkYWJsCiAgICAgfQogCiAgICAgaWYgKG1fb3B0aW9u
cy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgPT0gRGVueUNyb3NzT3JpZ2luUmVxdWVzdHMpIHsK
LSAgICAgICAgbV9jbGllbnQtPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktp
dEludGVybmFsLCAwLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCAiQ3Jvc3Mgb3JpZ2luIHJlcXVl
c3RzIGFyZSBub3Qgc3VwcG9ydGVkLiIpKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZEZhaWwoUmVz
b3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0LnVybCgpLCAi
Q3Jvc3Mgb3JpZ2luIHJlcXVlc3RzIGFyZSBub3Qgc3VwcG9ydGVkLiIpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjptYWtlU2ltcGxlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KGNvbnN0IFJlc291cmNl
CiAKICAgICAvLyBDcm9zcy1vcmlnaW4gcmVxdWVzdHMgYXJlIG9ubHkgYWxsb3dlZCBmb3IgSFRU
UCBhbmQgcmVnaXN0ZXJlZCBzY2hlbWVzLiBXZSB3b3VsZCBjYXRjaCB0aGlzIHdoZW4gY2hlY2tp
bmcgcmVzcG9uc2UgaGVhZGVycyBsYXRlciwgYnV0IHRoZXJlIGlzIG5vIHJlYXNvbiB0byBzZW5k
IGEgcmVxdWVzdCB0aGF0J3MgZ3VhcmFudGVlZCB0byBiZSBkZW5pZWQuCiAgICAgaWYgKCFTY2hl
bWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHJlcXVlc3QudXJs
KCkucHJvdG9jb2woKSkpIHsKLSAgICAgICAgbV9jbGllbnQtPmRpZEZhaWxBY2Nlc3NDb250cm9s
Q2hlY2soUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0
LnVybCgpLnN0cmluZygpLCAiQ3Jvc3Mgb3JpZ2luIHJlcXVlc3RzIGFyZSBvbmx5IHN1cHBvcnRl
ZCBmb3IgSFRUUC4iKSk7CisgICAgICAgIG1fY2xpZW50LT5kaWRGYWlsQWNjZXNzQ29udHJvbENo
ZWNrKFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVxdWVzdC51
cmwoKSwgIkNyb3NzIG9yaWdpbiByZXF1ZXN0cyBhcmUgb25seSBzdXBwb3J0ZWQgZm9yIEhUVFAu
IikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnMKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIW1fc2FtZU9yaWdp
blJlcXVlc3QgJiYgbV9vcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9PSBVc2VBY2Nl
c3NDb250cm9sKSB7CiAgICAgICAgICAgICBpZiAoIXBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhy
ZXNwb25zZSwgbV9vcHRpb25zLmFsbG93Q3JlZGVudGlhbHMoKSwgc2VjdXJpdHlPcmlnaW4oKSwg
YWNjZXNzQ29udHJvbEVycm9yRGVzY3JpcHRpb24pKSB7Ci0gICAgICAgICAgICAgICAgbV9jbGll
bnQtPmRpZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2soUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldl
YktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgYWNjZXNzQ29udHJvbEVy
cm9yRGVzY3JpcHRpb24pKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbEFjY2Vz
c0NvbnRyb2xDaGVjayhSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAs
IHJlc3BvbnNlLnVybCgpLCBhY2Nlc3NDb250cm9sRXJyb3JEZXNjcmlwdGlvbikpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzMzLDcgKzMz
Myw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRTdWNjZXNzKCkK
ICAgICBsb2FkUmVxdWVzdCgqYWN0dWFsUmVxdWVzdCwgU2tpcFNlY3VyaXR5Q2hlY2spOwogfQog
Ci12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxpZ2h0RmFpbHVyZSh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGVycm9y
RGVzY3JpcHRpb24pCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxpZ2h0RmFp
bHVyZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGVycm9yRGVzY3JpcHRpb24pCiB7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcihlcnJvckRv
bWFpbldlYktpdEludGVybmFsLCAwLCB1cmwsIGVycm9yRGVzY3JpcHRpb24pOwogICAgIGlmICht
X2FjdHVhbFJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmgKaW5kZXggNzc4ZDMxZWYzZmUyYmE1NDIyMjZiNjc0NGNjYjdkZTM4YmUw
MGM4ZC4uZmYwODNmYjkwZjE3MmFkYmNlNTM3NTRlMGVjN2RjNTBmYjRhN2Y2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaApAQCAtOTEs
NyArOTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgbWFrZVNpbXBsZUNy
b3NzT3JpZ2luQWNjZXNzUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpOwog
ICAgICAgICB2b2lkIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3RXaXRoUHJlZmxpZ2h0KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCk7CiAgICAgICAgIHZvaWQgcHJlZmxpZ2h0U3Vj
Y2VzcygpOwotICAgICAgICB2b2lkIHByZWZsaWdodEZhaWx1cmUodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBlcnJvckRlc2NyaXB0aW9u
KTsKKyAgICAgICAgdm9pZCBwcmVmbGlnaHRGYWlsdXJlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBlcnJvckRlc2NyaXB0aW9uKTsKIAogICAgICAg
ICB2b2lkIGxvYWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFNlY3VyaXR5Q2hlY2tQ
b2xpY3kpOwogICAgICAgICBib29sIGlzQWxsb3dlZFJlZGlyZWN0KGNvbnN0IFVSTCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDE2MjllYzU3Y2U1ZGRjMTBjZTg5ZDMx
MTA0NmU5MDBhMTQzNDNmY2QuLjFhNDBiNmRhNDQ1YzljMjgzNWFiZTk0NDUwZTYzMmQ2NTVhYzJi
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTMyMCwxNSArMzIwLDE1
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRl
ciosIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBmaW5p
c2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKSBvdmVycmlkZSB7IH0KIAotICAgIHZpcnR1YWwg
UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVy
cmlkZSB7IFJlc291cmNlRXJyb3IgZXJyb3IoIiIsIDAsICIiLCAiIik7IGVycm9yLnNldElzQ2Fu
Y2VsbGF0aW9uKHRydWUpOyByZXR1cm4gZXJyb3I7IH0KLSAgICB2aXJ0dWFsIFJlc291cmNlRXJy
b3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJu
IFJlc291cmNlRXJyb3IoIiIsIDAsICIiLCAiIik7IH0KLSAgICB2aXJ0dWFsIFJlc291cmNlRXJy
b3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBv
dmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCAiIiwgIiIpOyB9Ci0gICAgdmly
dHVhbCBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCAiIiwgIiIpOyB9Ci0g
ICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigi
IiwgMCwgIiIsICIiKTsgfQotCi0gICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dN
SU1FVHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiBS
ZXNvdXJjZUVycm9yKCIiLCAwLCAiIiwgIiIpOyB9Ci0gICAgdmlydHVhbCBSZXNvdXJjZUVycm9y
IGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGUg
eyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgIiIsICIiKTsgfQotICAgIHZpcnR1YWwgUmVz
b3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCAiIiwgIiIpOyB9Cisg
ICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpIG92ZXJyaWRlIHsgUmVzb3VyY2VFcnJvciBlcnJvcigiIiwgMCwgVVJMKCksICIiKTsg
ZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7IHJldHVybiBlcnJvcjsgfQorICAgIHZpcnR1
YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3Zl
cnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgVVJMKCksICIiKTsgfQorICAgIHZp
cnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsIFVS
TCgpLCAiIik7IH0KKyAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9y
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3Io
IiIsIDAsIFVSTCgpLCAiIik7IH0KKyAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgaW50ZXJydXB0
ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7
IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBVUkwoKSwgIiIpOyB9CisKKyAgICB2aXJ0dWFs
IFJlc291cmNlRXJyb3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7
IH0KKyAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgZmlsZURvZXNOb3RFeGlzdEVycm9yKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAw
LCBVUkwoKSwgIiIpOyB9CisgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxIYW5k
bGVMb2FkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0dXJuIFJl
c291cmNlRXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRGYWxsQmFjayhjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNDgxNTBhMGUzYTRm
MjdkODkwMjI1MGNhM2FkZmMwMmYzNTYzYzY4MS4uOTAwZGQzODAwYmZhNDU1OTk3OGMyZTQxYTQw
MjAwNzE1YzRjMmViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0y
Njg2LDcgKzI2ODYsNyBAQCB1bnNpZ25lZCBsb25nIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdQogICAgICAgICAgICAgaWYg
KGF1dG8qIGNvbnRyb2xsZXIgPSBwYWdlLT51c2VyQ29udGVudENvbnRyb2xsZXIoKSkgewogICAg
ICAgICAgICAgICAgIGlmIChtX2RvY3VtZW50TG9hZGVyICYmIGNvbnRyb2xsZXItPnByb2Nlc3ND
b250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKG5ld1JlcXVlc3QsIFJlc291cmNlVHlwZTo6UmF3
LCAqbV9kb2N1bWVudExvYWRlcikgPT0gQ29udGVudEV4dGVuc2lvbnM6OkJsb2NrZWRTdGF0dXM6
OkJsb2NrZWQpIHsKICAgICAgICAgICAgICAgICAgICAgbmV3UmVxdWVzdCA9IHsgfTsKLSAgICAg
ICAgICAgICAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50
ZXJuYWwsIDAsIGluaXRpYWxSZXF1ZXN0LnVybCgpLnN0cmluZygpLCBlbXB0eVN0cmluZygpKTsK
KyAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2Vi
S2l0SW50ZXJuYWwsIDAsIGluaXRpYWxSZXF1ZXN0LnVybCgpLCBlbXB0eVN0cmluZygpKTsKICAg
ICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB7IH07CiAgICAgICAgICAgICAgICAgICAgIGRh
dGEgPSBudWxscHRyOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAppbmRleCAyMGQyZTZlYzlhMzM5ZmJlZTFkZGViOTIw
ODQyMGNjZmMyMWNiZjA3Li5kOTMzY2VlM2Q1YmYzMDY0Mjg1MmIxY2MxYzAyN2VmMzQ3OTQ4MDk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0xMDAsNyArMTAwLDcgQEAgdm9pZCBNZWRpYVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3UKICAgICAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gY29uc29sZU1lc3NhZ2UoIkNyb3NzLW9yaWdp
biBtZWRpYSByZXNvdXJjZSBsb2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hh
cmluZyBwb2xpY3kuIik7CiAgICAgICAgIG1fZG9jdW1lbnQuYWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVNZXNzYWdl
LmdldCgpKTsKICAgICAgICAgbV9kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrID0gZmFsc2U7Ci0g
ICAgICAgIG1fY2xpZW50LT5hY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUmVzb3VyY2VFcnJvcihl
cnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgY29u
c29sZU1lc3NhZ2UuZ2V0KCkpKTsKKyAgICAgICAgbV9jbGllbnQtPmFjY2Vzc0NvbnRyb2xDaGVj
a0ZhaWxlZChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3Bv
bnNlLnVybCgpLCBjb25zb2xlTWVzc2FnZS5nZXQoKSkpOwogICAgICAgICBzdG9wKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cAppbmRleCAwZDgxZmY1YmEyOGEyMTA0ZDUyOGFlY2ZiYmJlNzM1NmNhMjNiNjc4Li4xYTk3M2Iw
ZDUyM2I4ZTFmMzJmMjVhODA4OWM4Mjk4NTc0NTBlM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2b2lkIFJlc291cmNlTG9h
ZGVyOjpsb2FkRGF0YVVSTCgpCiAgICAgICAgIGlmIChsb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0
YXRlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmICghZGVjb2RlUmVzdWx0KSB7
Ci0gICAgICAgICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldl
YktpdEludGVybmFsLCAwLCB1cmwuc3RyaW5nKCksICJEYXRhIFVSTCBkZWNvZGluZyBmYWlsZWQi
KSk7CisgICAgICAgICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFp
bldlYktpdEludGVybmFsLCAwLCB1cmwsICJEYXRhIFVSTCBkZWNvZGluZyBmYWlsZWQiKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGxvYWRlci0+d2FzQ2Fu
Y2VsbGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxv
YWRlci5jcHAKaW5kZXggYTBkYzNjYTFhZmMyNTZjNTYyMDljOWQ5NjhkNDViMDJkZDUxMmYxNC4u
MWRiOGQ2NDg5MmZhMjMyNDk3YjAzODIxNDQwNmYzN2VmMTMyZWJjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTM5LDcgKzEz
OSw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6Y2Fu
Y2VsKCkKICAgICBpZiAoIWNsaWVudFdyYXBwZXItPmRvbmUoKSkgewogICAgICAgICAvLyBJZiB0
aGUgY2xpZW50IGhhc24ndCByZWFjaGVkIGEgdGVybWluYXRpb24gc3RhdGUsIHRoZW4gdHJhbnNp
dGlvbiBpdCBieSBzZW5kaW5nIGEgY2FuY2VsbGF0aW9uIGVycm9yLgogICAgICAgICAvLyBOb3Rl
OiBubyBtb3JlIGNsaWVudCBjYWxsYmFja3Mgd2lsbCBiZSBkb25lIGFmdGVyIHRoaXMgbWV0aG9k
IC0tIHRoZSBjbGVhckNsaWVudFdyYXBwZXIoKSBjYWxsIGVuc3VyZXMgdGhhdC4KLSAgICAgICAg
UmVzb3VyY2VFcnJvciBlcnJvcihTdHJpbmcoKSwgMCwgU3RyaW5nKCksIFN0cmluZygpKTsKKyAg
ICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcihTdHJpbmcoKSwgMCwgVVJMKCksIFN0cmluZygpKTsK
ICAgICAgICAgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7CiAgICAgICAgIGNsaWVudFdy
YXBwZXItPmRpZEZhaWwoZXJyb3IpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDczNzhkNmQxYWM5MjQx
YmM2NzY5Njk3NjMyYzdjZjQ3YmJmNTJiOWUuLmQ5ZmNmZTYyNDM2MzA0OTM5ZDFmZmE4MmVjM2Ew
MzcwMGUyNjRhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtNTQ0LDcgKzU0NCw3IEBAIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291
cmNlKENhY2hlCiAgICAgICAgICAgICAgICAgYXV0byByZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNl
KHR5cGUsIHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LmNoYXJzZXQo
KSwgc2Vzc2lvbklEKCkpOwogICAgICAgICAgICAgICAgIEFTU0VSVChyZXNvdXJjZSk7CiAgICAg
ICAgICAgICAgICAgcmVzb3VyY2UtPmVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXM6OkxvYWRF
cnJvcik7Ci0gICAgICAgICAgICAgICAgcmVzb3VyY2UtPnNldFJlc291cmNlRXJyb3IoUmVzb3Vy
Y2VFcnJvcihDb250ZW50RXh0ZW5zaW9uczo6V2ViS2l0Q29udGVudEJsb2NrZXJEb21haW4sIDAs
IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCksIFdFQl9VSV9TVFJJTkco
IlRoZSBVUkwgd2FzIGJsb2NrZWQgYnkgYSBjb250ZW50IGJsb2NrZXIiLCAiV2ViS2l0RXJyb3JC
bG9ja2VkQnlDb250ZW50QmxvY2tlciBkZXNjcmlwdGlvbiIpKSk7CisgICAgICAgICAgICAgICAg
cmVzb3VyY2UtPnNldFJlc291cmNlRXJyb3IoUmVzb3VyY2VFcnJvcihDb250ZW50RXh0ZW5zaW9u
czo6V2ViS2l0Q29udGVudEJsb2NrZXJEb21haW4sIDAsIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0
KCkudXJsKCksIFdFQl9VSV9TVFJJTkcoIlRoZSBVUkwgd2FzIGJsb2NrZWQgYnkgYSBjb250ZW50
IGJsb2NrZXIiLCAiV2ViS2l0RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciBkZXNjcmlwdGlv
biIpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3Bw
CmluZGV4IGI4MzQxZTZiNmMwNzU3NmY3NGY0MTIzNDUzMzJhZjVlOTkyNmM0NjQuLjIwMTNjMDhl
ODBjOWUwZjA0MjM4NGI3NWI5NjE1ODAwNzUwNmM1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBFdmVudFNvdXJjZTo6ZGlkRmFpbChj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBFdmVudFNvdXJjZTo6ZGlkRmFpbEFj
Y2Vzc0NvbnRyb2xDaGVjayhjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBTdHJp
bmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIkV2ZW50U291cmNlIGNhbm5vdCBsb2FkICIsIGVycm9y
LmZhaWxpbmdVUkwoKSwgIi4gIiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7CisgICAg
U3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJFdmVudFNvdXJjZSBjYW5ub3QgbG9hZCAiLCBl
cnJvci5mYWlsaW5nVVJMKCkuc3RyaW5nKCksICIuICIsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0
aW9uKCkpOwogICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UpOwogCiAgICAg
YWJvcnRDb25uZWN0aW9uQXR0ZW1wdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZWZsL0Vycm9yc0VmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJy
b3JzRWZsLmNwcAppbmRleCA2ZWZmNTU1OTMzYzk2MzFhMjM4MmUyNmNkMTkyMjkzYzdkOGI2ZTM3
Li4zMjgyNmU1NjcyNzMwM2JlZmRlMjljMDhkZThjNTdhYjQ5ZGJlMzlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmNwcApAQCAtMzQsNDIgKzM0LDQyIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JE
b21haW5OZXR3b3JrLCBOZXR3b3JrRXJyb3JDYW5jZWxsZWQsIHJlcXVlc3QudXJsKCkuc3RyaW5n
KCksIEFTQ0lJTGl0ZXJhbCgiTG9hZCByZXF1ZXN0IGNhbmNlbGxlZCIpKTsKKyAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbk5ldHdvcmssIE5ldHdvcmtFcnJvckNhbmNlbGxlZCwg
cmVxdWVzdC51cmwoKSwgQVNDSUlMaXRlcmFsKCJMb2FkIHJlcXVlc3QgY2FuY2VsbGVkIikpOwog
fQogCiBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Qb2xpY3ksIFBv
bGljeUVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCks
IEFTQ0lJTGl0ZXJhbCgiTm90IGFsbG93ZWQgdG8gdXNlIHJlc3RyaWN0ZWQgbmV0d29yayBwb3J0
IikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lF
cnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0LCByZXF1ZXN0LnVybCgpLCBBU0NJSUxpdGVyYWwo
Ik5vdCBhbGxvd2VkIHRvIHVzZSByZXN0cmljdGVkIG5ldHdvcmsgcG9ydCIpKTsKIH0KIAogUmVz
b3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBv
bGljeSwgUG9saWN5RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciwgcmVxdWVzdC51cmwoKS5z
dHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJCbG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlciIpKTsKKyAg
ICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JCbG9j
a2VkQnlDb250ZW50QmxvY2tlciwgcmVxdWVzdC51cmwoKSwgQVNDSUlMaXRlcmFsKCJCbG9ja2Vk
IGJ5IGNvbnRlbnQgYmxvY2tlciIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJM
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFNob3dVUkwsIHJl
cXVlc3QudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiVVJMIGNhbm5vdCBiZSBzaG93biIp
KTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJy
b3JDYW5ub3RTaG93VVJMLCByZXF1ZXN0LnVybCgpLCBBU0NJSUxpdGVyYWwoIlVSTCBjYW5ub3Qg
YmUgc2hvd24iKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFu
Z2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJl
c291cmNlRXJyb3IoZXJyb3JEb21haW5Qb2xpY3ksIFBvbGljeUVycm9yRnJhbWVMb2FkSW50ZXJy
dXB0ZWRCeVBvbGljeUNoYW5nZSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgQVNDSUlMaXRlcmFs
KCJGcmFtZSBsb2FkIHdhcyBpbnRlcnJ1cHRlZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9s
aWN5Q2hhbmdlLCByZXF1ZXN0LnVybCgpLCBBU0NJSUxpdGVyYWwoIkZyYW1lIGxvYWQgd2FzIGlu
dGVycnVwdGVkIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9y
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIHJldHVybiBSZXNvdXJj
ZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFNob3dNaW1lVHlwZSwg
cmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiQ29udGVudCB3aXRoIHRoZSBz
cGVjaWZpZWQgTUlNRSB0eXBlIGNhbm5vdCBiZSBzaG93biIpKTsKKyAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RTaG93TWltZVR5cGUs
IHJlc3BvbnNlLnVybCgpLCBBU0NJSUxpdGVyYWwoIkNvbnRlbnQgd2l0aCB0aGUgc3BlY2lmaWVk
IE1JTUUgdHlwZSBjYW5ub3QgYmUgc2hvd24iKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgZmlsZURv
ZXNOb3RFeGlzdEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAg
IHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluTmV0d29yaywgTmV0d29ya0Vycm9yRmls
ZURvZXNOb3RFeGlzdCwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiRmls
ZSBkb2VzIG5vdCBleGlzdCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFp
bk5ldHdvcmssIE5ldHdvcmtFcnJvckZpbGVEb2VzTm90RXhpc3QsIHJlc3BvbnNlLnVybCgpLCBB
U0NJSUxpdGVyYWwoIkZpbGUgZG9lcyBub3QgZXhpc3QiKSk7CiB9CiAKIFJlc291cmNlRXJyb3Ig
cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBsdWdpbiwgUGx1Z2lu
RXJyb3JXaWxsSGFuZGxlTG9hZCwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJh
bCgiUGx1Z2luIHdpbGwgaGFuZGxlIGxvYWQiKSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3Io
ZXJyb3JEb21haW5QbHVnaW4sIFBsdWdpbkVycm9yV2lsbEhhbmRsZUxvYWQsIHJlc3BvbnNlLnVy
bCgpLCBBU0NJSUxpdGVyYWwoIlBsdWdpbiB3aWxsIGhhbmRsZSBsb2FkIikpOwogfQogCiBSZXNv
dXJjZUVycm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIG5ldHdv
cmtFcnJvcikKQEAgLTc5LDEyICs3OSwxMiBAQCBSZXNvdXJjZUVycm9yIGRvd25sb2FkTmV0d29y
a0Vycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIG5ldHdvcmtFcnJvcikKIAogUmVzb3VyY2VFcnJv
ciBkb3dubG9hZENhbmNlbGxlZEJ5VXNlckVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxvYWQs
IERvd25sb2FkRXJyb3JDYW5jZWxsZWRCeVVzZXIsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBB
U0NJSUxpdGVyYWwoIlVzZXIgY2FuY2VsbGVkIHRoZSBkb3dubG9hZCIpKTsKKyAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBEb3dubG9hZEVycm9yQ2FuY2VsbGVk
QnlVc2VyLCByZXNwb25zZS51cmwoKSwgQVNDSUlMaXRlcmFsKCJVc2VyIGNhbmNlbGxlZCB0aGUg
ZG93bmxvYWQiKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgZG93bmxvYWREZXN0aW5hdGlvbkVycm9y
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBE
b3dubG9hZEVycm9yRGVzdGluYXRpb24sIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBlcnJvck1l
c3NhZ2UpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxvYWQsIERv
d25sb2FkRXJyb3JEZXN0aW5hdGlvbiwgcmVzcG9uc2UudXJsKCksIGVycm9yTWVzc2FnZSk7CiB9
CiAKIFJlc291cmNlRXJyb3IgcHJpbnRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0Vycm9yc0d0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXJyb3Jz
R3RrLmNwcAppbmRleCA2ODhhOTA2ZDllYjQwOGVkZmI0NzNhZmZmNzk4MjU2NDZlYzFmZTBmLi44
ZGZkMTU4YjNiNGQ2YzU0NGJkYjI5YTYxNTc0MWRiZGE0YjQxYTU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcApAQCAtMjksNjcgKzI5LDU3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21h
aW5OZXR3b3JrLCBOZXR3b3JrRXJyb3JDYW5jZWxsZWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgXygiTG9hZCByZXF1ZXN0IGNhbmNlbGxlZCIpKTsK
KyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbk5ldHdvcmssIE5ldHdvcmtFcnJv
ckNhbmNlbGxlZCwgcmVxdWVzdC51cmwoKSwgXygiTG9hZCByZXF1ZXN0IGNhbmNlbGxlZCIpKTsK
IH0KIAogUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQ
b2xpY3lFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIF8oIk5vdCBhbGxvd2VkIHRvIHVzZSByZXN0cmlj
dGVkIG5ldHdvcmsgcG9ydCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFp
blBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCwgcmVxdWVzdC51cmwo
KSwgXygiTm90IGFsbG93ZWQgdG8gdXNlIHJlc3RyaWN0ZWQgbmV0d29yayBwb3J0IikpOwogfQog
CiBSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9t
YWluUG9saWN5LCBQb2xpY3lFcnJvckJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyLCByZXF1ZXN0LnVy
bCgpLnN0cmluZygpLCBfKCJCbG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlciIpKTsKKyAgICByZXR1
cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JCbG9ja2VkQnlD
b250ZW50QmxvY2tlciwgcmVxdWVzdC51cmwoKSwgXygiQmxvY2tlZCBieSBjb250ZW50IGJsb2Nr
ZXIiKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRv
bWFpblBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RTaG93VVJMLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIF8oIlVSTCBjYW5ub3QgYmUgc2hvd24iKSk7
CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Qb2xpY3ksIFBvbGljeUVycm9y
Q2Fubm90U2hvd1VSTCwgcmVxdWVzdC51cmwoKSwgXygiVVJMIGNhbm5vdCBiZSBzaG93biIpKTsK
IH0KIAogUmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihl
cnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5
Q2hhbmdlLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QudXJsKCkuc3RyaW5nKCks
IF8oIkZyYW1lIGxvYWQgd2FzIGludGVycnVwdGVkIikpOworICAgIHJldHVybiBSZXNvdXJjZUVy
cm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQ
b2xpY3lDaGFuZ2UsIHJlcXVlc3QudXJsKCksIF8oIkZyYW1lIGxvYWQgd2FzIGludGVycnVwdGVk
IikpOwogfQogCiBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVy
cm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFNob3dNaW1lVHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgXygiQ29udGVudCB3aXRo
IHRoZSBzcGVjaWZpZWQgTUlNRSB0eXBlIGNhbm5vdCBiZSBzaG93biIpKTsKKyAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RTaG93TWlt
ZVR5cGUsIHJlc3BvbnNlLnVybCgpLCBfKCJDb250ZW50IHdpdGggdGhlIHNwZWNpZmllZCBNSU1F
IHR5cGUgY2Fubm90IGJlIHNob3duIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90
RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICByZXR1
cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbk5ldHdvcmssIE5ldHdvcmtFcnJvckZpbGVEb2Vz
Tm90RXhpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UudXJsKCkuc3RyaW5n
KCksIF8oIkZpbGUgZG9lcyBub3QgZXhpc3QiKSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3Io
ZXJyb3JEb21haW5OZXR3b3JrLCBOZXR3b3JrRXJyb3JGaWxlRG9lc05vdEV4aXN0LCByZXNwb25z
ZS51cmwoKSwgXygiRmlsZSBkb2VzIG5vdCBleGlzdCIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBw
bHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUGx1Z2luLCBQbHVnaW5F
cnJvcldpbGxIYW5kbGVMb2FkLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnVy
bCgpLnN0cmluZygpLCBfKCJQbHVnaW4gd2lsbCBoYW5kbGUgbG9hZCIpKTsKKyAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBsdWdpbiwgUGx1Z2luRXJyb3JXaWxsSGFuZGxlTG9h
ZCwgcmVzcG9uc2UudXJsKCksIF8oIlBsdWdpbiB3aWxsIGhhbmRsZSBsb2FkIikpOwogfQogCiBS
ZXNvdXJjZUVycm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIG5l
dHdvcmtFcnJvcikKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbkRvd25s
b2FkLCBEb3dubG9hZEVycm9yTmV0d29yaywKLSAgICAgICAgICAgICAgICAgICAgICAgICBuZXR3
b3JrRXJyb3IuZmFpbGluZ1VSTCgpLCBuZXR3b3JrRXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24o
KSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Eb3dubG9hZCwgRG93bmxv
YWRFcnJvck5ldHdvcmssIG5ldHdvcmtFcnJvci5mYWlsaW5nVVJMKCksIG5ldHdvcmtFcnJvci5s
b2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBkb3dubG9hZENhbmNl
bGxlZEJ5VXNlckVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAg
IHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JD
YW5jZWxsZWRCeVVzZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UudXJsKCku
c3RyaW5nKCksIF8oIlVzZXIgY2FuY2VsbGVkIHRoZSBkb3dubG9hZCIpKTsKKyAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBEb3dubG9hZEVycm9yQ2FuY2VsbGVk
QnlVc2VyLCByZXNwb25zZS51cmwoKSwgXygiVXNlciBjYW5jZWxsZWQgdGhlIGRvd25sb2FkIikp
OwogfQogCiBSZXNvdXJjZUVycm9yIGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0g
ICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Eb3dubG9hZCwgRG93bmxvYWRFcnJv
ckRlc3RpbmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnVybCgpLnN0
cmluZygpLCBlcnJvck1lc3NhZ2UpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9t
YWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JEZXN0aW5hdGlvbiwgcmVzcG9uc2UudXJsKCksIGVy
cm9yTWVzc2FnZSk7CiB9CiAKIFJlc291cmNlRXJyb3IgcHJpbnRFcnJvcihjb25zdCBVUkwmIGZh
aWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCmluZGV4IDVhZTgzN2Mz
MWM1ZDhhNDg1NjIwMDkzODZmODBlZGMwMTk1NGM2ODkuLmE4MGU3NjE5YjVhZDlkZGRkZTg1Njgy
Mzc2MmVjZTRmNTUxYmFkM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgUmVz
b3VyY2VFcnJvckJhc2VfaAogI2RlZmluZSBSZXNvdXJjZUVycm9yQmFzZV9oCiAKKyNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNDMsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIGRv
bWFpbigpIGNvbnN0IHsgbGF6eUluaXQoKTsgcmV0dXJuIG1fZG9tYWluOyB9CiAgICAgaW50IGVy
cm9yQ29kZSgpIGNvbnN0IHsgbGF6eUluaXQoKTsgcmV0dXJuIG1fZXJyb3JDb2RlOyB9Ci0gICAg
Y29uc3QgU3RyaW5nJiBmYWlsaW5nVVJMKCkgY29uc3QgeyBsYXp5SW5pdCgpOyByZXR1cm4gbV9m
YWlsaW5nVVJMOyB9CisgICAgY29uc3QgVVJMJiBmYWlsaW5nVVJMKCkgY29uc3QgeyBsYXp5SW5p
dCgpOyByZXR1cm4gbV9mYWlsaW5nVVJMOyB9CiAgICAgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWRE
ZXNjcmlwdGlvbigpIGNvbnN0IHsgbGF6eUluaXQoKTsgcmV0dXJuIG1fbG9jYWxpemVkRGVzY3Jp
cHRpb247IH0KIAogICAgIHZvaWQgc2V0SXNDYW5jZWxsYXRpb24oYm9vbCBpc0NhbmNlbGxhdGlv
bikgeyBtX2lzQ2FuY2VsbGF0aW9uID0gaXNDYW5jZWxsYXRpb247IH0KQEAgLTYzLDcgKzY0LDcg
QEAgcHJvdGVjdGVkOgogICAgIHsKICAgICB9CiAKLSAgICBSZXNvdXJjZUVycm9yQmFzZShjb25z
dCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBmYWlsaW5nVVJM
LCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQorICAgIFJlc291cmNlRXJyb3JC
YXNlKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxp
bmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCiAgICAgICAgIDogbV9k
b21haW4oZG9tYWluKQogICAgICAgICAsIG1fZmFpbGluZ1VSTChmYWlsaW5nVVJMKQogICAgICAg
ICAsIG1fbG9jYWxpemVkRGVzY3JpcHRpb24obG9jYWxpemVkRGVzY3JpcHRpb24pCkBAIC04Niw3
ICs4Nyw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29u
c3QgUmVzb3VyY2VFcnJvciYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IHJldHVybiB0cnVlOyB9
CiAKICAgICBTdHJpbmcgbV9kb21haW47Ci0gICAgU3RyaW5nIG1fZmFpbGluZ1VSTDsKKyAgICBV
UkwgbV9mYWlsaW5nVVJMOwogICAgIFN0cmluZyBtX2xvY2FsaXplZERlc2NyaXB0aW9uOwogICAg
IGludCBtX2Vycm9yQ29kZTsKICAgICBib29sIG1faXNOdWxsIDogMTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKaW5kZXggMTcwM2Nj
OTFmNjhiMmE1ZTY0Zjg3OTIzY2U2ZmJhMWQyN2RkMjQxZC4uYjMyOGJhMTcxNTA0MTBmNTNmNzcx
NjY5MjA4NTE0YjZhNzc0NmY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAg
IHsKICAgICB9CiAKLSAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQg
ZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxp
emVkRGVzY3JpcHRpb24pCisgICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwg
aW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2Fs
aXplZERlc2NyaXB0aW9uKQogICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJy
b3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbikKICAgICAgICAgLCBtX2Rh
dGFJc1VwVG9EYXRlKHRydWUpCiAgICAgewpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAKICNp
ZiBVU0UoQ0ZORVRXT1JLKQogI2lmIFBMQVRGT1JNKFdJTikKLSAgICBSZXNvdXJjZUVycm9yKGNv
bnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdV
UkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24sIENGRGF0YVJlZiBjZXJ0aWZp
Y2F0ZSk7CisgICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9y
Q29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2Ny
aXB0aW9uLCBDRkRhdGFSZWYgY2VydGlmaWNhdGUpOwogICAgIFBDQ0VSVF9DT05URVhUIGNlcnRp
ZmljYXRlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDZXJ0aWZpY2F0ZShDRkRhdGFSZWYpOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlRXJyb3JDRi5jcHAKaW5kZXggMTMxZmJiMDQ2MTE3MDZmNjRkODUwYTFjNTBlMDVlMTRhMmM2
ZTEzMy4uNjBiZmIzNjU5MWUwN2MxYmZiZWFiNmIxZTNiNTZmYWI5ODQ3ODQ3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNG
LmNwcApAQCAtNDksNyArNDksNyBAQCBSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKENGRXJy
b3JSZWYgY2ZFcnJvcikKIH0KIAogI2lmIFBMQVRGT1JNKFdJTikKLVJlc291cmNlRXJyb3I6OlJl
c291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFN0
cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbiwgQ0ZE
YXRhUmVmIGNlcnRpZmljYXRlKQorUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihjb25zdCBT
dHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25z
dCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uLCBDRkRhdGFSZWYgY2VydGlmaWNhdGUpCiAg
ICAgOiBSZXNvdXJjZUVycm9yQmFzZShkb21haW4sIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9j
YWxpemVkRGVzY3JpcHRpb24pCiAgICAgLCBtX2RhdGFJc1VwVG9EYXRlKHRydWUpCiAgICAgLCBt
X2NlcnRpZmljYXRlKGNlcnRpZmljYXRlKQpAQCAtMTAxLDE3ICsxMDEsMTIgQEAgdm9pZCBSZXNv
dXJjZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KCkKICAgICBpZiAodXNlckluZm8uZ2V0KCkpIHsK
ICAgICAgICAgQ0ZTdHJpbmdSZWYgZmFpbGluZ1VSTFN0cmluZyA9IChDRlN0cmluZ1JlZikgQ0ZE
aWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGZhaWxpbmdVUkxTdHJpbmdLZXkpOwog
ICAgICAgICBpZiAoZmFpbGluZ1VSTFN0cmluZykKLSAgICAgICAgICAgIG1fZmFpbGluZ1VSTCA9
IFN0cmluZyhmYWlsaW5nVVJMU3RyaW5nKTsKKyAgICAgICAgICAgIG1fZmFpbGluZ1VSTCA9IFVS
TChVUkwoKSwgZmFpbGluZ1VSTFN0cmluZyk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
Q0ZVUkxSZWYgZmFpbGluZ1VSTCA9IChDRlVSTFJlZikgQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNl
ckluZm8uZ2V0KCksIGZhaWxpbmdVUkxLZXkpOwogICAgICAgICAgICAgaWYgKGZhaWxpbmdVUkwp
IHsKLSAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGFic29sdXRlVVJMUmVmID0g
YWRvcHRDRihDRlVSTENvcHlBYnNvbHV0ZVVSTChmYWlsaW5nVVJMKSk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGFic29sdXRlVVJMUmVmLmdldCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBDRlVSTEdldFN0cmluZyByZXR1cm5zIGEgbm9ybWFsaXplZCBVUkwgd2hpY2ggaXMgZGlm
ZmVyZW50IGZyb20gd2hhdCBpcyBhY3R1YWxseSB1c2VkIGJ5IENGTmV0d29yay4KLSAgICAgICAg
ICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIHVzZSBDRlVSTEdldEJ5dGVzIGluc3RlYWQuCi0gICAg
ICAgICAgICAgICAgICAgIGZhaWxpbmdVUkxTdHJpbmcgPSBDRlVSTEdldFN0cmluZyhhYnNvbHV0
ZVVSTFJlZi5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1fZmFpbGluZ1VSTCA9IFN0cmlu
ZyhmYWlsaW5nVVJMU3RyaW5nKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
aWYgKFJldGFpblB0cjxDRlVSTFJlZj4gYWJzb2x1dGVVUkxSZWYgPSBhZG9wdENGKENGVVJMQ29w
eUFic29sdXRlVVJMKGZhaWxpbmdVUkwpKSkKKyAgICAgICAgICAgICAgICAgICAgbV9mYWlsaW5n
VVJMID0gVVJMKGFic29sdXRlVVJMUmVmLmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgICAgICBtX2xvY2FsaXplZERlc2NyaXB0aW9uID0gKENGU3RyaW5nUmVmKSBDRkRpY3Rp
b25hcnlHZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga0NGRXJyb3JMb2NhbGl6ZWREZXNjcmlwdGlv
bktleSk7CkBAIC0xNTIsMTIgKzE0Nyw5IEBAIENGRXJyb3JSZWYgUmVzb3VyY2VFcnJvcjo6Y2ZF
cnJvcigpIGNvbnN0CiAgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5n
ZXQoKSwga0NGRXJyb3JMb2NhbGl6ZWREZXNjcmlwdGlvbktleSwgbV9sb2NhbGl6ZWREZXNjcmlw
dGlvbi5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgICAgICBpZiAoIW1fZmFpbGluZ1VS
TC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZmFpbGlu
Z1VSTFN0cmluZyA9IG1fZmFpbGluZ1VSTC5jcmVhdGVDRlN0cmluZygpOworICAgICAgICAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBmYWlsaW5nVVJMU3RyaW5nID0gbV9mYWlsaW5nVVJMLnN0
cmluZygpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1
ZSh1c2VySW5mby5nZXQoKSwgZmFpbGluZ1VSTFN0cmluZ0tleSwgZmFpbGluZ1VSTFN0cmluZy5n
ZXQoKSk7Ci0gICAgICAgICAgICAvLyBGSVhFTUU6IFdlIG5vcm1hbGx5IGNyZWF0ZSBhIENGVVJM
IGZyb20gYSBzdHJpbmcgYnkgdXNpbmcgVVJMOjpjcmVhdGVDRlVSTCwgd2hpY2ggaGFuZGxlcwot
ICAgICAgICAgICAgLy8gY2FzZXMgY29ycmVjdGx5IHRoYXQgQ0ZVUkxDcmVhdGVXaXRoU3RyaW5n
IGhhbmRsZXMgaW5jb3JyZWN0bHkuCi0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVy
bCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKDAsIGZhaWxpbmdVUkxTdHJpbmcuZ2V0
KCksIDApKTsKLSAgICAgICAgICAgIGlmICh1cmwpCisgICAgICAgICAgICBpZiAoUmV0YWluUHRy
PENGVVJMUmVmPiB1cmwgPSBtX2ZhaWxpbmdVUkwuY3JlYXRlQ0ZVUkwoKSkKICAgICAgICAgICAg
ICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwgZmFpbGluZ1VSTEtleSwg
dXJsLmdldCgpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaAppbmRleCA0MWMxOTkxNGJkYmM2ZWM2MTgz
OGFiOWE1YjgzOWFlYzgwZGNiM2NhLi5jMzFkZDQyNTFmNjdhMWNlZjZhYjQ5MjkzZTU5NDVhNzdl
YWUyYjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUVycm9yLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9
CiAKLSAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2Rl
LCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3Jp
cHRpb24pCisgICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9y
Q29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2Ny
aXB0aW9uKQogICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBm
YWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbiksIG1fc3NsRXJyb3JzKDApCiAgICAgewog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlRXJyb3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9S
ZXNvdXJjZUVycm9yTWFjLm1tCmluZGV4IGY3Yzg2NGNlM2I1MDk5ZmUwMmYxNjk2OWFjZTM5N2Y2
ODJlODNkYmEuLjY0MTg5MzgwMDA2MzMzM2M3MDFkYjUzY2FjMDAxYWI1NDk5ZjcwNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VF
cnJvck1hYy5tbQpAQCAtMTgyLDEyICsxODIsOSBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRXJyb3I+
IGNyZWF0ZU5TRXJyb3JGcm9tUmVzb3VyY2VFcnJvckJhc2UoY29uc3QgUmVzb3VyY2VFcnJvcgog
ICAgICAgICBbdXNlckluZm8uZ2V0KCkgc2V0VmFsdWU6cmVzb3VyY2VFcnJvci5sb2NhbGl6ZWRE
ZXNjcmlwdGlvbigpIGZvcktleTpOU0xvY2FsaXplZERlc2NyaXB0aW9uS2V5XTsKIAogICAgIGlm
ICghcmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIC8vIEZJ
WEVNRTogV2Ugbm9ybWFsbHkgY3JlYXRlIGFuIE5TVVJMIGZyb20gYSBzdHJpbmcgYnkgdXNpbmcg
VVJMOjpjcmVhdGVOU1VSTCwgd2hpY2ggaGFuZGxlcwotICAgICAgICAvLyBjYXNlcyBjb3JyZWN0
bHkgdGhhdCBpbml0V2l0aFN0cmluZzogaGFuZGxlcyBpbmNvcnJlY3RseS4KLSAgICAgICAgUmV0
YWluUHRyPE5TVVJMPiBjb2NvYVVSTCA9IGFkb3B0TlMoW1tOU1VSTCBhbGxvY10gaW5pdFdpdGhT
dHJpbmc6cmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCldKTsKLSAgICAgICAgW3VzZXJJbmZvLmdl
dCgpIHNldFZhbHVlOnJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgpIGZvcktleTpAIk5TRXJyb3JG
YWlsaW5nVVJMU3RyaW5nS2V5Il07Ci0gICAgICAgIGlmIChjb2NvYVVSTCkKLSAgICAgICAgICAg
IFt1c2VySW5mby5nZXQoKSBzZXRWYWx1ZTpjb2NvYVVSTC5nZXQoKSBmb3JLZXk6QCJOU0Vycm9y
RmFpbGluZ1VSTEtleSJdOworICAgICAgICBbdXNlckluZm8uZ2V0KCkgc2V0VmFsdWU6KE5TU3Ry
aW5nICopcmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkuc3RyaW5nKCkgZm9yS2V5OkAiTlNFcnJv
ckZhaWxpbmdVUkxTdHJpbmdLZXkiXTsKKyAgICAgICAgaWYgKE5TVVJMICpjb2NvYVVSTCA9IChO
U1VSTCAqKXJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgpKQorICAgICAgICAgICAgW3VzZXJJbmZv
LmdldCgpIHNldFZhbHVlOmNvY29hVVJMIGZvcktleTpAIk5TRXJyb3JGYWlsaW5nVVJMS2V5Il07
CiAgICAgfQogCiAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERv
bWFpbjpyZXNvdXJjZUVycm9yLmRvbWFpbigpIGNvZGU6cmVzb3VyY2VFcnJvci5lcnJvckNvZGUo
KSB1c2VySW5mbzp1c2VySW5mby5nZXQoKV0pOwpAQCAtMjY2LDEwICsyNjMsMTAgQEAgdm9pZCBS
ZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KCkKICAgICBtX2RvbWFpbiA9IFttX3BsYXRm
b3JtRXJyb3IuZ2V0KCkgZG9tYWluXTsKICAgICBtX2Vycm9yQ29kZSA9IFttX3BsYXRmb3JtRXJy
b3IuZ2V0KCkgY29kZV07CiAKLSAgICBOU1N0cmluZyogZmFpbGluZ1VSTFN0cmluZyA9IFtbbV9w
bGF0Zm9ybUVycm9yLmdldCgpIHVzZXJJbmZvXSB2YWx1ZUZvcktleTpAIk5TRXJyb3JGYWlsaW5n
VVJMU3RyaW5nS2V5Il07Ci0gICAgaWYgKCFmYWlsaW5nVVJMU3RyaW5nKQotICAgICAgICBmYWls
aW5nVVJMU3RyaW5nID0gW1tbbV9wbGF0Zm9ybUVycm9yLmdldCgpIHVzZXJJbmZvXSB2YWx1ZUZv
cktleTpAIk5TRXJyb3JGYWlsaW5nVVJMS2V5Il0gYWJzb2x1dGVTdHJpbmddOwotICAgIG1fZmFp
bGluZ1VSTCA9IGZhaWxpbmdVUkxTdHJpbmc7IAorICAgIGlmIChOU1N0cmluZyogZmFpbGluZ1VS
TFN0cmluZyA9IFtbbV9wbGF0Zm9ybUVycm9yLmdldCgpIHVzZXJJbmZvXSB2YWx1ZUZvcktleTpA
Ik5TRXJyb3JGYWlsaW5nVVJMU3RyaW5nS2V5Il0pCisgICAgICAgIG1fZmFpbGluZ1VSTCA9IFVS
TChVUkwoKSwgZmFpbGluZ1VSTFN0cmluZyk7CisgICAgZWxzZQorICAgICAgICBtX2ZhaWxpbmdV
UkwgPSBVUkwoKE5TVVJMICopW1ttX3BsYXRmb3JtRXJyb3IuZ2V0KCkgdXNlckluZm9dIHZhbHVl
Rm9yS2V5OkAiTlNFcnJvckZhaWxpbmdVUkxLZXkiXSk7CiAgICAgLy8gV29ya2Fyb3VuZCBmb3Ig
PHJkYXI6Ly9wcm9ibGVtLzY1NTQwNjc+CiAgICAgbV9sb2NhbGl6ZWREZXNjcmlwdGlvbiA9IG1f
ZmFpbGluZ1VSTDsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaAppbmRl
eCBlNTAyOTdhN2ZlOWQ0Yzg5NDkzODEwZDU2YmI4MGY4YTc1ZjRiOGViLi40NDdiMDAyNzQ4YTYz
ZjVhYzQwNzZhYjNkOWMzZjJhNTIzNWZiNmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmgKQEAgLTQxLDcgKzQxLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvciA6IHB1YmxpYyBSZXNvdXJj
ZUVycm9yQmFzZQogewogcHVibGljOgotICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBk
b21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3Ry
aW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmlu
ZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0
cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCiAgICAgICAgIDogUmVzb3VyY2VFcnJvckJhc2Uo
ZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uKQogICAg
ICAgICAsIG1fdGxzRXJyb3JzKDApCiAgICAgewpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlc291cmNlRXJyb3IgdHJhbnNwb3J0RXJyb3IoU291cFJlcXVlc3QqLCBpbnQg
c3RhdHVzQ29kZSwgY29uc3QgU3RyaW5nJiByZWFzb25QaHJhc2UpOwogICAgIHN0YXRpYyBSZXNv
dXJjZUVycm9yIGdlbmVyaWNHRXJyb3IoR0Vycm9yKiwgU291cFJlcXVlc3QqKTsKICAgICBzdGF0
aWMgUmVzb3VyY2VFcnJvciB0bHNFcnJvcihTb3VwUmVxdWVzdCosIHVuc2lnbmVkIHRsc0Vycm9y
cywgR1Rsc0NlcnRpZmljYXRlKik7Ci0gICAgc3RhdGljIFJlc291cmNlRXJyb3IgdGltZW91dEVy
cm9yKGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCk7CisgICAgc3RhdGljIFJlc291cmNlRXJyb3Ig
dGltZW91dEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCk7CiAgICAgc3RhdGljIFJlc291cmNl
RXJyb3IgYXV0aGVudGljYXRpb25FcnJvcihTb3VwTWVzc2FnZSopOwogCiAgICAgdW5zaWduZWQg
dGxzRXJyb3JzKCkgY29uc3QgeyByZXR1cm4gbV90bHNFcnJvcnM7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAu
Y3BwCmluZGV4IGIyNWI1YTBiODY1MWUxYTBjZjVmNjE5NjBkNTdhMjI0YWE1MzU4M2IuLmFkNmI4
ZTcwODY3M2FlYjlhNTY1OGU0Y2NiOGMzNTEyOTllZmVlOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNw
cApAQCAtMzUsMTQgKzM1LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFN0
cmluZyBmYWlsaW5nVVJJKFNvdXBVUkkqIHNvdXBVUkkpCitzdGF0aWMgVVJMIGZhaWxpbmdVUkko
U291cFVSSSogc291cFVSSSkKIHsKICAgICBBU1NFUlQoc291cFVSSSk7Ci0gICAgR1VuaXF1ZVB0
cjxjaGFyPiB1cmkoc291cF91cmlfdG9fc3RyaW5nKHNvdXBVUkksIEZBTFNFKSk7Ci0gICAgcmV0
dXJuIHVyaS5nZXQoKTsKKyAgICByZXR1cm4gVVJMKHNvdXBVUkkpOwogfQogCi1zdGF0aWMgU3Ry
aW5nIGZhaWxpbmdVUkkoU291cFJlcXVlc3QqIHJlcXVlc3QpCitzdGF0aWMgVVJMIGZhaWxpbmdV
UkkoU291cFJlcXVlc3QqIHJlcXVlc3QpCiB7CiAgICAgQVNTRVJUKHJlcXVlc3QpOwogICAgIHJl
dHVybiBmYWlsaW5nVVJJKHNvdXBfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpKTsKQEAgLTg1LDcg
Kzg0LDcgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjp0bHNFcnJvcihTb3VwUmVxdWVz
dCogcmVxdWVzdCwgdW5zaWduZWQgdGxzRXJyb3JzLAogICAgIHJldHVybiByZXNvdXJjZUVycm9y
OwogfQogCi1SZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OnRpbWVvdXRFcnJvcihjb25zdCBT
dHJpbmcmIGZhaWxpbmdVUkwpCitSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OnRpbWVvdXRF
cnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IHByb2JhYmx5IGVpdGhlciBiZSBpbnRlZ3JhdGVkIGludG8gRXJyb3JzKEd0ay9FRkwpLmggb3Ig
dGhlCiAgICAgLy8gbmV0d29ya2luZyBlcnJvcnMgZnJvbSB0aG9zZSBmaWxlcyBzaG91bGQgYmUg
bW92ZWQgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXggOTU2ODk3YjVjOWRjZmRhM2Vk
ZDEzMmY0ZjE3ZTIzNGRlZjI3ZDNkYi4uYjY3YzkwZGQ5YjRjMjk3YzA4MmUxMjA1OGExODE5NzAy
Yjk3YTE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAgLTEwNTEsNyArMTA1MSw3IEBAIFJl
ZlB0cjxSZXNvdXJjZUhhbmRsZT4gUmVzb3VyY2VIYW5kbGU6OnJlbGVhc2VGb3JEb3dubG9hZChS
ZXNvdXJjZUhhbmRsZUNsaWVudCoKIAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6dGltZW91dEZpcmVk
KCkKIHsKLSAgICBjbGllbnQoKS0+ZGlkRmFpbCh0aGlzLCBSZXNvdXJjZUVycm9yOjp0aW1lb3V0
RXJyb3IoZmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkpKTsKKyAgICBjbGllbnQoKS0+ZGlk
RmFpbCh0aGlzLCBSZXNvdXJjZUVycm9yOjp0aW1lb3V0RXJyb3IoZmlyc3RSZXF1ZXN0KCkudXJs
KCkpKTsKICAgICBjYW5jZWwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKaW5kZXggNGM0OGM5NGY4YjI5MzM2YjQ0MjQxMTJkNmIyZWNiYjk2MDgzZmM1ZS4uNTc5ZjFj
Y2Y4NTVmMTA5MjMyOWUyNjBmZDU0MzEyNDM1YmFhMjY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwCkBAIC0xMDc3LDggKzEwNzcsMTAgQEAgdm9pZCBYTUxIdHRwUmVxdWVz
dDo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICB9CiAKICAgICAvLyBO
ZXR3b3JrIGZhaWx1cmVzIGFyZSBhbHJlYWR5IHJlcG9ydGVkIHRvIFdlYiBJbnNwZWN0b3IgYnkg
UmVzb3VyY2VMb2FkZXIuCi0gICAgaWYgKGVycm9yLmRvbWFpbigpID09IGVycm9yRG9tYWluV2Vi
S2l0SW50ZXJuYWwpCi0gICAgICAgIGxvZ0NvbnNvbGVFcnJvcihzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksICJYTUxIdHRwUmVxdWVzdCBjYW5ub3QgbG9hZCAiICsgZXJyb3IuZmFpbGluZ1VSTCgp
ICsgIi4gIiArIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOworICAgIGlmIChlcnJvci5k
b21haW4oKSA9PSBlcnJvckRvbWFpbldlYktpdEludGVybmFsKSB7CisgICAgICAgIFN0cmluZyBt
ZXNzYWdlID0gbWFrZVN0cmluZygiWE1MSHR0cFJlcXVlc3QgY2Fubm90IGxvYWQgIiwgZXJyb3Iu
ZmFpbGluZ1VSTCgpLnN0cmluZygpLCAiLiAiLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigp
KTsKKyAgICAgICAgbG9nQ29uc29sZUVycm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbWVz
c2FnZSk7CisgICAgfQogCiAgICAgbV9leGNlcHRpb25Db2RlID0gWE1MSHR0cFJlcXVlc3RFeGNl
cHRpb246Ok5FVFdPUktfRVJSOwogICAgIG5ldHdvcmtFcnJvcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IDdiMjQ0NTc3N2NiMjA1NmY2Y2ZlZmUwNTdlNGVmNTg5NzAwN2FmZTYuLmI5ZGM1MTFj
MzIyNDk4Y2IzYzJlM2RhYzQwOGYzY2ViYThhZTFlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAg
LTg1MSwxMiArODUxLDEyIEBAIFJlc291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNh
bmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzCiB7CiAgICAgLy8gRklY
TUU6IE5lZWQgQ2hpY2tlbkNhdCB0byBpbmNsdWRlIENGTmV0d29yay9DRlVSTEVycm9yLmggdG8g
Z2V0IHRoZXNlIHZhbHVlcwogICAgIC8vIEFsdGVybmF0aXZlbHksIHdlIGNvdWxkIGNyZWF0ZSBv
dXIgb3duIGVycm9yIGRvbWFpbi9jb2Rlcy4KLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJp
bmcoV2ViVVJMRXJyb3JEb21haW4pLCAtOTk5LCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCBTdHJp
bmcoIkNhbmNlbGxlZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViVVJM
RXJyb3JEb21haW4pLCAtOTk5LCByZXF1ZXN0LnVybCgpLCBTdHJpbmcoIkNhbmNlbGxlZCIpKTsK
IH0KIAogUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVudDo6YmxvY2tlZEVycm9yKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBXZWJLaXRFcnJvckNhbm5vdFVzZVJlc3RyaWN0
ZWRQb3J0LCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCBXRUJfVUlfU1RSSU5HKCJOb3QgYWxsb3dl
ZCB0byB1c2UgcmVzdHJpY3RlZCBuZXR3b3JrIHBvcnQiLCAiV2ViS2l0RXJyb3JDYW5ub3RVc2VS
ZXN0cmljdGVkUG9ydCBkZXNjcmlwdGlvbiIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihT
dHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBXZWJLaXRFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQ
b3J0LCByZXF1ZXN0LnVybCgpLCBXRUJfVUlfU1RSSU5HKCJOb3QgYWxsb3dlZCB0byB1c2UgcmVz
dHJpY3RlZCBuZXR3b3JrIHBvcnQiLCAiV2ViS2l0RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9y
dCBkZXNjcmlwdGlvbiIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCkBAIC04NjYsMjcgKzg2NiwyNyBAQCBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUgogCiBS
ZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5ub3RTaG93VVJMRXJyb3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KFN0cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIFdlYktpdEVycm9yQ2Fubm90U2hvd1VSTCwgcmVx
dWVzdC51cmwoKS5zdHJpbmcoKSwgV0VCX1VJX1NUUklORygiVGhlIFVSTCBjYW5ceEUyXHg4MFx4
OTl0IGJlIHNob3duIiwgIldlYktpdEVycm9yQ2Fubm90U2hvd1VSTCBkZXNjcmlwdGlvbiIpKTsK
KyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBXZWJL
aXRFcnJvckNhbm5vdFNob3dVUkwsIHJlcXVlc3QudXJsKCksIFdFQl9VSV9TVFJJTkcoIlRoZSBV
UkwgY2FuXHhFMlx4ODBceDk5dCBiZSBzaG93biIsICJXZWJLaXRFcnJvckNhbm5vdFNob3dVUkwg
ZGVzY3JpcHRpb24iKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0cmluZyhXZWJLaXRFcnJvckRv
bWFpbiksIFdlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwgcmVx
dWVzdC51cmwoKS5zdHJpbmcoKSwgV0VCX1VJX1NUUklORygiRnJhbWUgbG9hZCBpbnRlcnJ1cHRl
ZCIsICJXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UgZGVzY3Jp
cHRpb24iKSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nKFdlYktpdEVycm9yRG9t
YWluKSwgV2ViS2l0RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCByZXF1
ZXN0LnVybCgpLCBXRUJfVUlfU1RSSU5HKCJGcmFtZSBsb2FkIGludGVycnVwdGVkIiwgIldlYktp
dEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSBkZXNjcmlwdGlvbiIpKTsK
IH0KIAogUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2Fubm90U2hvd01JTUVU
eXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgcmV0dXJu
IFJlc291cmNlRXJyb3IoU3RyaW5nKCksIFdlYktpdEVycm9yQ2Fubm90U2hvd01JTUVUeXBlLCBy
ZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgV0VCX1VJX1NUUklORygiQ29udGVudCB3aXRoIHNwZWNp
ZmllZCBNSU1FIHR5cGUgY2FuXHhFMlx4ODBceDk5dCBiZSBzaG93biIsICJXZWJLaXRFcnJvckNh
bm5vdFNob3dNSU1FVHlwZSBkZXNjcmlwdGlvbiIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihTdHJpbmcoKSwgV2ViS2l0RXJyb3JDYW5ub3RTaG93TUlNRVR5cGUsIHJlc3BvbnNlLnVybCgp
LCBXRUJfVUlfU1RSSU5HKCJDb250ZW50IHdpdGggc3BlY2lmaWVkIE1JTUUgdHlwZSBjYW5ceEUy
XHg4MFx4OTl0IGJlIHNob3duIiwgIldlYktpdEVycm9yQ2Fubm90U2hvd01JTUVUeXBlIGRlc2Ny
aXB0aW9uIikpOwogfQogCiBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaWxl
RG9lc05vdEV4aXN0RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0g
ICAgcmV0dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nKFdlYlVSTEVycm9yRG9tYWluKSwgLTExMDAs
IHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBTdHJpbmcoIkZpbGUgZG9lcyBub3QgZXhpc3QuIikp
OworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0cmluZyhXZWJVUkxFcnJvckRvbWFpbiksIC0x
MTAwLCByZXNwb25zZS51cmwoKSwgU3RyaW5nKCJGaWxlIGRvZXMgbm90IGV4aXN0LiIpKTsKIH0K
IAogUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGx1Z2luV2lsbEhhbmRsZUxv
YWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBXZWJLaXRFcnJvclBsdWdJ
bldpbGxIYW5kbGVMb2FkLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgV0VCX1VJX1NUUklORygi
UGx1Zy1pbiBoYW5kbGVkIGxvYWQiLCAiV2ViS2l0RXJyb3JQbHVnSW5XaWxsSGFuZGxlTG9hZCBk
ZXNjcmlwdGlvbiIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJy
b3JEb21haW4pLCBXZWJLaXRFcnJvclBsdWdJbldpbGxIYW5kbGVMb2FkLCByZXNwb25zZS51cmwo
KSwgV0VCX1VJX1NUUklORygiUGx1Zy1pbiBoYW5kbGVkIGxvYWQiLCAiV2ViS2l0RXJyb3JQbHVn
SW5XaWxsSGFuZGxlTG9hZCBkZXNjcmlwdGlvbiIpKTsKIH0KIAogYm9vbCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6c2hvdWxkRmFsbEJhY2soY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCkBAIC0x
MTY2LDcgKzExNjYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZh
aWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdpblZpZXcqIHBsdWdpbgogICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVy
cm9yKFN0cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIGVycm9yQ29kZSwgcGx1Z2luVmlldy0+dXJs
KCkuc3RyaW5nKCksIFN0cmluZygpKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3Io
U3RyaW5nKFdlYktpdEVycm9yRG9tYWluKSwgZXJyb3JDb2RlLCBwbHVnaW5WaWV3LT51cmwoKSwg
U3RyaW5nKCkpOwogICAgIENPTVB0cjxJV2ViRXJyb3I+IGVycm9yKEFkb3B0Q09NLCBXZWJFcnJv
cjo6Y3JlYXRlSW5zdGFuY2UocmVzb3VyY2VFcnJvciwgdXNlckluZm9CYWcuZ2V0KCkpKTsKICAg
ICAgCiAgICAgcmVzb3VyY2VMb2FkRGVsZWdhdGUtPnBsdWdJbkZhaWxlZFdpdGhFcnJvcih3ZWJW
aWV3LCBlcnJvci5nZXQoKSwgZ2V0V2ViRGF0YVNvdXJjZShmcmFtZS0+bG9hZGVyKCkuZG9jdW1l
bnRMb2FkZXIoKSkpOwpAQCAtMTI0NCw3ICsxMjQ0LDcgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUm
IHAKIAogICAgIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gdXNlckluZm9CYWcgPSBD
RkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoKTsKIAotICAgIFJlc291cmNl
RXJyb3IgcmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBXZWJLaXRFcnJv
ckphdmFVbmF2YWlsYWJsZSwgU3RyaW5nKCksIFdFQl9VSV9TVFJJTkcoIkphdmEgaXMgdW5hdmFp
bGFibGUiLCAiV2ViS2l0RXJyb3JKYXZhVW5hdmFpbGFibGUgZGVzY3JpcHRpb24iKSk7CisgICAg
UmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIFdl
YktpdEVycm9ySmF2YVVuYXZhaWxhYmxlLCBVUkwoKSwgV0VCX1VJX1NUUklORygiSmF2YSBpcyB1
bmF2YWlsYWJsZSIsICJXZWJLaXRFcnJvckphdmFVbmF2YWlsYWJsZSBkZXNjcmlwdGlvbiIpKTsK
ICAgICBDT01QdHI8SVdlYkVycm9yPiBlcnJvcihBZG9wdENPTSwgV2ViRXJyb3I6OmNyZWF0ZUlu
c3RhbmNlKHJlc291cmNlRXJyb3IsIHVzZXJJbmZvQmFnLmdldCgpKSk7CiAKICAgICBGcmFtZSog
Y29yZUZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRD
Rk5ldC5jcHAKaW5kZXggNDYxNWQ3Nzg0OTBiNzgwYTE3YjU1MWIzZjVhMTRmMzdlYzk2MzI2Zi4u
MTVmMTE5Nzc4NzhiOTUwYjdiZTQwZjdjY2FiM2IyNWNjOTNlYWEzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93
aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKQEAgLTMwNyw3ICszMDcsNyBAQCBIUkVTVUxUIFdlYkRv
d25sb2FkOjpjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShfSW5fb3B0XyBJV2ViVVJMQXV0
aGVudGljYXRpbwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIGEgVVJMIG9yIGRl
c2NyaXB0aW9uIGZvciB0aGlzIGVycm9yIGNvZGU/Ci0gICAgUmVzb3VyY2VFcnJvciBlcnJvcihT
dHJpbmcoV2ViVVJMRXJyb3JEb21haW4pLCBXZWJVUkxFcnJvclVzZXJDYW5jZWxsZWRBdXRoZW50
aWNhdGlvbiwgIiIsICIiKTsKKyAgICBSZXNvdXJjZUVycm9yIGVycm9yKFN0cmluZyhXZWJVUkxF
cnJvckRvbWFpbiksIFdlYlVSTEVycm9yVXNlckNhbmNlbGxlZEF1dGhlbnRpY2F0aW9uLCBVUkwo
KSwgIiIpOwogICAgIENPTVB0cjxXZWJFcnJvcj4gd2ViRXJyb3IoQWRvcHRDT00sIFdlYkVycm9y
OjpjcmVhdGVJbnN0YW5jZShlcnJvcikpOwogICAgIG1fZGVsZWdhdGUtPmRpZEZhaWxXaXRoRXJy
b3IodGhpcywgd2ViRXJyb3IuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJFcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJFcnJvci5jcHAKaW5kZXggZWY4
ZmFhM2FhNTYxN2YxYzE0ZDRmOGU3YTQxZTI3MzMzMjRmY2JkMC4uMTcwYzZjOGVmZTU5MGIxY2Uw
ZWVlNzk2MmYyMzEwZGNkNTMyYjQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2Vi
RXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkVycm9yLmNwcApAQCAtMTA3LDcg
KzEwNyw3IEBAIFVMT05HIFdlYkVycm9yOjpSZWxlYXNlKCkKIAogSFJFU1VMVCBXZWJFcnJvcjo6
aW5pdChfSW5fIEJTVFIgZG9tYWluLCBpbnQgY29kZSwgX0luXyBCU1RSIHVybCkKIHsKLSAgICBt
X2Vycm9yID0gUmVzb3VyY2VFcnJvcihTdHJpbmcoZG9tYWluLCBTeXNTdHJpbmdMZW4oZG9tYWlu
KSksIGNvZGUsIFN0cmluZyh1cmwsIFN5c1N0cmluZ0xlbih1cmwpKSwgU3RyaW5nKCkpOworICAg
IG1fZXJyb3IgPSBSZXNvdXJjZUVycm9yKFN0cmluZyhkb21haW4sIFN5c1N0cmluZ0xlbihkb21h
aW4pKSwgY29kZSwgVVJMKFVSTCgpLCBTdHJpbmcodXJsLCBTeXNTdHJpbmdMZW4odXJsKSkpLCBT
dHJpbmcoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3dubG9hZFNvdXBFcnJvcnNFZmwu
Y3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3dubG9h
ZFNvdXBFcnJvcnNFZmwuY3BwCmluZGV4IDk0NmYzNTE1NDliZTdiOTZkZDhlN2M0NTg3MmE0N2Zi
MWRmZmQ1MmEuLmFjMDBkNTFiMzcxMzg5MjFlNzc2YjFhYzU4YTBkNDU1NTE2YjA4NmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9lZmwvRG93bmxv
YWRTb3VwRXJyb3JzRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvZWZsL0Rvd25sb2FkU291cEVycm9yc0VmbC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZXNvdXJj
ZUVycm9yIHBsYXRmb3JtRG93bmxvYWROZXR3b3JrRXJyb3IoaW50IGVycm9yQ29kZSwgY29uc3Qg
U3RyaW5nJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQor
UmVzb3VyY2VFcnJvciBwbGF0Zm9ybURvd25sb2FkTmV0d29ya0Vycm9yKGludCBlcnJvckNvZGUs
IGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlv
bikKIHsKICAgICByZXR1cm4gZG93bmxvYWROZXR3b3JrRXJyb3IoUmVzb3VyY2VFcnJvcihlcnJv
ckRvbWFpbkRvd25sb2FkLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0
aW9uKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvZ3RrL0Rvd25sb2FkU291cEVycm9yc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvZ3RrL0Rvd25sb2FkU291cEVycm9yc0d0ay5jcHAKaW5kZXgg
MGQzZjlkM2VkZDE1ZGJhYjI3Mjg0YmRmZmQ4ZDE3NmU4NDIyM2U5My4uYmEyZTdiNDU2YTQxNWYx
N2Q1OTY1MzAwMWJiZGZhYzBiZTI4MDM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL2d0ay9Eb3dubG9hZFNvdXBFcnJvcnNHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9ndGsvRG93bmxvYWRTb3Vw
RXJyb3JzR3RrLmNwcApAQCAtMzMsNyArMzMsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlc291cmNlRXJyb3IgcGxhdGZvcm1Eb3dubG9hZE5l
dHdvcmtFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0
IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCitSZXNvdXJjZUVycm9yIHBsYXRmb3JtRG93
bmxvYWROZXR3b3JrRXJyb3IoaW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBj
b25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQogewogICAgIHJldHVybiBkb3dubG9h
ZE5ldHdvcmtFcnJvcihSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxvYWQsIGVycm9yQ29k
ZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24pKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvc291cC9Eb3dubG9h
ZFNvdXAuY3BwCmluZGV4IDU2NTVkZmM0YmI2ZmVlMjMzMDliMzBiNGZkZGNkOTg0YmU5NmVmODMu
LmU0OTc2NmJkNTljMTg2YTkyMTdiMjNhY2E4NjdhMzA3ZjE1NjNkMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93
bmxvYWRTb3VwLmNwcApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZG93bmxv
YWQtPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiAKICAgICAgICAgaWYgKHJlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwKSB7Ci0gICAgICAgICAgICBkb3dubG9hZEZhaWxlZChw
bGF0Zm9ybURvd25sb2FkTmV0d29ya0Vycm9yKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIHJl
c3BvbnNlLnVybCgpLnN0cmluZygpLCByZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpKSk7CisgICAg
ICAgICAgICBkb3dubG9hZEZhaWxlZChwbGF0Zm9ybURvd25sb2FkTmV0d29ya0Vycm9yKHJlc3Bv
bnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlc3BvbnNlLnVybCgpLCByZXNwb25zZS5odHRwU3RhdHVz
VGV4dCgpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3Vw
RXJyb3JzLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvc291cC9E
b3dubG9hZFNvdXBFcnJvcnMuaAppbmRleCA4OWUyM2UwODM3ZjBjNTA4MWRiYjMxYmFkNzZmOGU5
YTY0OGZkYzQxLi5mZjM5N2VjMjJmNzE3M2NhYTI3ZmM3NGRhZWRjYjQzM2Y5NGNhMDkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvc291cC9Eb3du
bG9hZFNvdXBFcnJvcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvc291cC9Eb3dubG9hZFNvdXBFcnJvcnMuaApAQCAtMjcsMTEgKzI3LDEyIEBACiAjZGVm
aW5lIERvd25sb2FkU291cEVycm9yc19oCiAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFu
ZGxlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
cGxhdGZvcm1Eb3dubG9hZE5ldHdvcmtFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcm
IGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pOworV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBwbGF0Zm9ybURvd25sb2FkTmV0d29ya0Vycm9yKGludCBlcnJvckNv
ZGUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6
ZWREZXNjcmlwdGlvbik7CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHBsYXRmb3JtRG93bmxvYWRE
ZXN0aW5hdGlvbkVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAK
aW5kZXggNjcwMTY0ZjY4OTNiMjUzZjA3OGZhMjljM2ExNDg0MTg5NDMwMjkwOC4uOGE4NzcwMjg4
ZGQ4ZTYwMWNiNTc5YjQ2OWVjYmRkZjE4YTVjMTYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKQEAgLTE5
Myw3ICsxOTMsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmVuY29kZVBs
YXRmb3JtRGF0YShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsCiAKICAgICBlbmNvZGVyIDw8IHJl
c291cmNlRXJyb3IuZG9tYWluKCk7CiAgICAgZW5jb2RlciA8PCByZXNvdXJjZUVycm9yLmVycm9y
Q29kZSgpOwotICAgIGVuY29kZXIgPDwgcmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCk7CisgICAg
ZW5jb2RlciA8PCByZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKS5zdHJpbmcoKTsKICAgICBlbmNv
ZGVyIDw8IHJlc291cmNlRXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKTsKICAgICBlbmNvZGVy
IDw8IHJlc291cmNlRXJyb3IuaXNDYW5jZWxsYXRpb24oKTsKICAgICBlbmNvZGVyIDw8IHJlc291
cmNlRXJyb3IuaXNUaW1lb3V0KCk7CkBAIC0yMzUsNyArMjM1LDcgQEAgYm9vbCBBcmd1bWVudENv
ZGVyPFJlc291cmNlRXJyb3I+OjpkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyJiBk
ZWNvZGVyLAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNUaW1lb3V0KSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgcmVzb3VyY2VFcnJvciA9IFJlc291cmNlRXJyb3IoZG9tYWluLCBl
cnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uKTsKKyAgICByZXNvdXJj
ZUVycm9yID0gUmVzb3VyY2VFcnJvcihkb21haW4sIGVycm9yQ29kZSwgVVJMKFVSTCgpLCBmYWls
aW5nVVJMKSwgbG9jYWxpemVkRGVzY3JpcHRpb24pOwogICAgIHJlc291cmNlRXJyb3Iuc2V0SXND
YW5jZWxsYXRpb24oaXNDYW5jZWxsYXRpb24pOwogICAgIHJlc291cmNlRXJyb3Iuc2V0SXNUaW1l
b3V0KGlzVGltZW91dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdExvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRMb2FkZXJDbGllbnQuY3BwCmluZGV4IGU0NmZhMWM2ZDM2ODk5NzBhZDI4
YzEwNjJlOTNjZDcyY2E2ZmY4NGMuLmY1MmM4Yzc4ZWNkYjI2ZjUxOTNiMmNhODJmNzc3OGEzODFi
YTU5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dExvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0TG9hZGVyQ2xpZW50LmNwcApAQCAtNjIsMTAgKzYyLDEwIEBAIHByaXZhdGU6CiAgICAg
ICAgIEdVbmlxdWVQdHI8R0Vycm9yPiBlcnJvcihnX2Vycm9yX25ld19saXRlcmFsKGdfcXVhcmtf
ZnJvbV9zdHJpbmcocmVzb3VyY2VFcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpKSwKICAgICAg
ICAgICAgIHRvV2ViS2l0RXJyb3IocmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSksIHJlc291cmNl
RXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgIGlm
IChyZXNvdXJjZUVycm9yLnRsc0Vycm9ycygpKSB7Ci0gICAgICAgICAgICB3ZWJraXRXZWJWaWV3
TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMobV93ZWJWaWV3LCByZXNvdXJjZUVycm9yLmZhaWxpbmdV
UkwoKS51dGY4KCkuZGF0YSgpLCBlcnJvci5nZXQoKSwKKyAgICAgICAgICAgIHdlYmtpdFdlYlZp
ZXdMb2FkRmFpbGVkV2l0aFRMU0Vycm9ycyhtX3dlYlZpZXcsIHJlc291cmNlRXJyb3IuZmFpbGlu
Z1VSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmdldCgpLAogICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PEdUbHNDZXJ0aWZpY2F0ZUZsYWdzPihyZXNvdXJjZUVycm9yLnRsc0Vy
cm9ycygpKSwgcmVzb3VyY2VFcnJvci5jZXJ0aWZpY2F0ZSgpKTsKICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZChtX3dlYlZpZXcsIFdFQktJVF9MT0FE
X1NUQVJURUQsIHJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgpLnV0ZjgoKS5kYXRhKCksIGVycm9y
LmdldCgpKTsKKyAgICAgICAgICAgIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKG1fd2ViVmlldywg
V0VCS0lUX0xPQURfU1RBUlRFRCwgcmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgZXJyb3IuZ2V0KCkpOwogICAgIH0KIAogICAgIHZvaWQgZGlkQ29tbWl0
TG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6Ok5h
dmlnYXRpb24qLCBBUEk6Ok9iamVjdCogLyogdXNlckRhdGEgKi8pIG92ZXJyaWRlCkBAIC04OCw3
ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIEdVbmlxdWVQ
dHI8R0Vycm9yPiBlcnJvcihnX2Vycm9yX25ld19saXRlcmFsKGdfcXVhcmtfZnJvbV9zdHJpbmco
cmVzb3VyY2VFcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpKSwKICAgICAgICAgICAgIHRvV2Vi
S2l0RXJyb3IocmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSksIHJlc291cmNlRXJyb3IubG9jYWxp
emVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKSk7Ci0gICAgICAgIHdlYmtpdFdlYlZpZXdM
b2FkRmFpbGVkKG1fd2ViVmlldywgV0VCS0lUX0xPQURfQ09NTUlUVEVELCByZXNvdXJjZUVycm9y
LmZhaWxpbmdVUkwoKS51dGY4KCkuZGF0YSgpLCBlcnJvci5nZXQoKSk7CisgICAgICAgIHdlYmtp
dFdlYlZpZXdMb2FkRmFpbGVkKG1fd2ViVmlldywgV0VCS0lUX0xPQURfQ09NTUlUVEVELCByZXNv
dXJjZUVycm9yLmZhaWxpbmdVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBlcnJvci5nZXQo
KSk7CiAgICAgfQogCiAgICAgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUo
V2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6T2JqZWN0KiAvKiB1c2VyRGF0YSAq
Lykgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKaW5kZXggOGM5MTc0OWQxZWY2YWY0MGFh
MTI0MDA2YTQzOTM2Nzg0NzljNzgxZC4uODcyYTU2NDYxMjBjYjcwNDQ4NWU2YmI1ODE2OTliMGQw
NzJiMGJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lk
IHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKFdlYktpdFVSSVNjaGVtZVJl
cXVlc3QqIHJlcXVlc3QsIEdFcgogICAgICAgICByZXR1cm47CiAKICAgICBwcml2LT5zdHJlYW0g
PSBudWxscHRyOwotICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihnX3F1
YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgdG9XZWJDb3JlRXJyb3IoZXJyb3ItPmNvZGUp
LCBwcml2LT51cmkuZGF0YSgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7Cisg
ICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5n
KGVycm9yLT5kb21haW4pLCB0b1dlYkNvcmVFcnJvcihlcnJvci0+Y29kZSksIFdlYkNvcmU6OlVS
TChwcml2LT5zb3VwVVJJLmdldCgpKSwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkp
OwogICAgIHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRGYWlsV2l0aEVycm9yKHByaXYtPnJl
cXVlc3RJRCwgcmVzb3VyY2VFcnJvcik7CiAgICAgd2Via2l0V2ViQ29udGV4dERpZEZpbmlzaExv
YWRpbmdDdXN0b21Qcm90b2NvbChwcml2LT53ZWJDb250ZXh0LCBwcml2LT5yZXF1ZXN0SUQpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9l
ZmwvV2ViRXJyb3JzRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvZWZsL1dlYkVycm9yc0VmbC5jcHAKaW5kZXggZmNhNzI4MmE4MTExMTBiNTU0ZmMzZDhh
YWY5YTY5ZDIyMTYwNWJlMy4uYjFiOTdkODY0OTA5ZDFiZjdkZGU0NzlkOWFjN2E3MmRlZjU3YzMz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9l
ZmwvV2ViRXJyb3JzRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2VmbC9XZWJFcnJvcnNFZmwuY3BwCkBAIC03OSw3ICs3OSw3IEBAIFJlc291cmNl
RXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKIAogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IFdl
YkNvcmU6OlVSTCYgdXJsKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6
OndlYktpdEVycm9yRG9tYWluKCksIGtXS0Vycm9ySW50ZXJuYWwsIHVybC5zdHJpbmcoKSwgQVND
SUlMaXRlcmFsKCJJbnRlcm5hbCBlcnJvciIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihB
UEk6OkVycm9yOjp3ZWJLaXRFcnJvckRvbWFpbigpLCBrV0tFcnJvckludGVybmFsLCB1cmwsIEFT
Q0lJTGl0ZXJhbCgiSW50ZXJuYWwgZXJyb3IiKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267899</attachid>
            <date>2015-12-24 08:34:10 -0800</date>
            <delta_ts>2015-12-25 04:22:41 -0800</delta_ts>
            <desc>Patch v10</desc>
            <filename>bug-146391-20151224083333.patch</filename>
            <type>text/plain</type>
            <size>58156</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0Mzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTk5Y2NlMDBmMWMxMTk3
NmM4MWZmZDBkY2EwOGU1NGNkMjYwOTI5NS4uNDMwMGNjNGVjNjZhYjQ3MTM1ZDg1NGE5NWFmOTU2
ZTM4MzFhMDQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAxNS0xMi0yNCAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlRXJyb3Ig
c2hvdWxkIHN0b3JlIGZhaWxpbmdVUkwgYXMgVVJMIGluc3RlYWQgb2YgU3RyaW5nIHRvIGF2b2lk
IHJlcGFyc2luZyBhbmQgdG8gYWRkcmVzcyBGSVhNRSBjb21tZW50cyBpbiBSZXNvdXJjZUVycm9y
Q0YuY3BwIGFuZCBSZXNvdXJjZUVycm9yTWFjLm1tCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9y
Zy9iLzE0NjM5MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlU2ltcGxl
Q3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxpZ2h0RmFpbHVyZSk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRGYWlsdXJlKToKKyAgICAgICAgLSBTd2l0Y2gg
dHlwZSBvZiAndXJsJyBhcmd1bWVudCBvZiBwcmVmbGlnaHRGYWlsdXJlKCkgZnJvbQorICAgICAg
ICAgIFN0cmluZyB0byBVUkwuCisgICAgICAgIC0gVXBkYXRlIGZvciB0eXBlIGNoYW5nZSBvZiAn
ZmFpbGluZ1VSTCcgYXJndW1lbnQgdG8KKyAgICAgICAgICBSZXNvdXJjZUVycm9yKCkuCisKKyAg
ICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToK
KyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXI6OmxvYWREYXRhVVJMKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpjYW5jZWwpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgLSBVcGRhdGUgZm9yIHR5cGUgY2hh
bmdlIG9mICdmYWlsaW5nVVJMJyBhcmd1bWVudCB0bworICAgICAgICAgIFJlc291cmNlRXJyb3Io
KS4KKworICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRTb3VyY2U6OmRpZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2spOgorICAgICAgICAtIENvbnZl
cnQgZmFpbGluZ1VSTCgpIHRvIFN0cmluZyBleHBsaWNpdGx5LgorCisgICAgICAgICogcGxhdGZv
cm0vZWZsL0Vycm9yc0VmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5jZWxsZWRFcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpibG9ja2VkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6Ymxv
Y2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93
VVJMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VF
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93TUlNRVR5cGVFcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjpmaWxlRG9lc05vdEV4aXN0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpkb3dubG9hZENh
bmNlbGxlZEJ5VXNlckVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmRvd25sb2FkRGVzdGluYXRp
b25FcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjYW5jZWxsZWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpibG9ja2VkRXJy
b3IpOgorICAgICAgICAoV2ViQ29yZTo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5u
b3RTaG93TUlNRVR5cGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpmaWxlRG9lc05vdEV4aXN0
RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpkb3dubG9hZENhbmNlbGxlZEJ5VXNlckVycm9yKToKKyAgICAgICAg
KFdlYkNvcmU6OmRvd25sb2FkRGVzdGluYXRpb25FcnJvcik6CisgICAgICAgIC0gVXBkYXRlIGZv
ciB0eXBlIGNoYW5nZSBvZiAnZmFpbGluZ1VSTCcgYXJndW1lbnQgdG8KKyAgICAgICAgICBSZXNv
dXJjZUVycm9yKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JC
YXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yQmFzZTo6ZmFpbGluZ1VSTCk6
CisgICAgICAgIC0gQ2hhbmdlIHJldHVybiB0eXBlIGZyb20gU3RyaW5nIHRvIFVSTC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjpSZXNvdXJjZUVycm9yQmFzZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgLSBDaGFuZ2UgdHlw
ZSBvZiAnZmFpbGluZ1VSTCcgZnJvbSBTdHJpbmcgdG8gVVJMLgorCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcik6CisgICAgICAgIC0gQ2hhbmdlIHR5cGUgb2YgJ2Zh
aWxpbmdVUkwnIGZyb20gU3RyaW5nIHRvIFVSTC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
RXJyb3I6OnBsYXRmb3JtTGF6eUluaXQpOgorICAgICAgICAtIENsZWFuIHVwIGNvZGUgYW5kIGFk
ZHJlc3MgRklYTUUgYnkgcGFyc2luZyBDRlVSTFJlZiB1c2luZworICAgICAgICAgIFVSTCgpIGNv
bnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6Y2ZFcnJvcik6Cisg
ICAgICAgIC0gQ2xlYW4gdXAgY29kZSBhbmQgYWRkcmVzcyBGSVhNRSBhZnRlciBzd2l0Y2hpbmcg
dHlwZSBvZgorICAgICAgICAgIG1fZmFpbGluZ1VSTC4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgLSBDaGFuZ2UgdHlwZSBvZiAnZmFpbGluZ1VS
TCcgZnJvbSBTdHJpbmcgdG8gVVJMLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU5TRXJyb3JGcm9t
UmVzb3VyY2VFcnJvckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6cGxh
dGZvcm1MYXp5SW5pdCk6CisgICAgICAgIC0gQ2xlYW4gdXAgY29kZSBhbmQgYWRkcmVzcyBGSVhN
RSBhZnRlciBzd2l0Y2hpbmcgdHlwZSBvZgorICAgICAgICAgIG1fZmFpbGluZ1VSTC4KKworICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlRXJyb3I6OnRpbWVvdXRFcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZhaWxpbmdV
UkkpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6dGltZW91dEVycm9yKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp0aW1lb3V0RmlyZWQpOgorICAgICAgICAt
IENoYW5nZSB0eXBlIG9mICdmYWlsaW5nVVJMJyBmcm9tIFN0cmluZyB0byBVUkwuCisKKyAgICAg
ICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OmRpZEZhaWwpOgorICAgICAgICAtIENvbnZlcnQgZmFpbGluZ1VSTCgpIHRvIFN0cmlu
ZyBleHBsaWNpdGx5LgorICAgICAgICAtIEFsc28gc3dpdGNoIHRvIHVzaW5nIG1ha2VTdHJpbmco
KS4KKwogMjAxNS0xMi0yMiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgVHJ5IHRvIGZpeCB0aGUgaU9TIGJ1aWxkIGFmdGVyIHIxOTQzNzgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpp
bmRleCA4MjQxZTFmNmY1NzBmYTU5ZTg2ZWI0ZmI2MDY1MDI4Y2JjMTU3OTI0Li5kZGIzMjhlNTMy
MTkzMzRlOWFhY2JlNGFhOWJmZjJlN2JlY2RjNmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMTUtMTItMjQgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXNvdXJjZUVycm9yIHNob3VsZCBzdG9yZSBmYWlsaW5nVVJMIGFzIFVSTCBp
bnN0ZWFkIG9mIFN0cmluZyB0byBhdm9pZCByZXBhcnNpbmcgYW5kIHRvIGFkZHJlc3MgRklYTUUg
Y29tbWVudHMgaW4gUmVzb3VyY2VFcnJvckNGLmNwcCBhbmQgUmVzb3VyY2VFcnJvck1hYy5tbQor
ICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8xNDYzOTE+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsbGVk
RXJyb3IpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmJsb2NrZWRFcnJvcik6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAgICAg
ICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjppbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9y
KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5ub3RTaG93TUlNRVR5cGVFcnJv
cik6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmlsZURvZXNOb3RFeGlzdEVycm9y
KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwbHVnaW5XaWxsSGFuZGxlTG9hZEVy
cm9yKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0
YXJ0UGx1Z2luKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBw
bGV0V2lkZ2V0KToKKyAgICAgICAgKiBXZWJEb3dubG9hZENGTmV0LmNwcDoKKyAgICAgICAgKFdl
YkRvd25sb2FkOjpjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogV2Vi
RXJyb3IuY3BwOgorICAgICAgICAoV2ViRXJyb3I6OmluaXQpOgorICAgICAgICAtIFVwZGF0ZSBm
b3IgdHlwZSBjaGFuZ2Ugb2YgJ2ZhaWxpbmdVUkwnIGFyZ3VtZW50IHRvCisgICAgICAgICAgUmVz
b3VyY2VFcnJvcigpLgorCiAyMDE1LTEyLTIwICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBzZXRUb29sYmFySGVpZ2h0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggMDQzOWIwMmVjZTg2ZDczZjZiYzkxYTExM2U4M2IzZWM1ODYxZWVlYy4uNjRhZWU5OTkzMmVm
OGQ3NzNkMWY4Yjc0YjJhNzYwMWUyMTVlZGM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBA
CisyMDE1LTEyLTI0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVzb3VyY2VFcnJvciBzaG91bGQgc3RvcmUgZmFpbGluZ1VSTCBhcyBVUkwgaW5zdGVhZCBv
ZiBTdHJpbmcgdG8gYXZvaWQgcmVwYXJzaW5nIGFuZCB0byBhZGRyZXNzIEZJWE1FIGNvbW1lbnRz
IGluIFJlc291cmNlRXJyb3JDRi5jcHAgYW5kIFJlc291cmNlRXJyb3JNYWMubW0KKyAgICAgICAg
PGh0dHA6Ly93ZWJraXQub3JnL2IvMTQ2MzkxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3du
bG9hZFNvdXBFcnJvcnNFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpwbGF0Zm9ybURvd25sb2Fk
TmV0d29ya0Vycm9yKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvZ3RrL0Rv
d25sb2FkU291cEVycm9yc0d0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBsYXRmb3JtRG93bmxv
YWROZXR3b3JrRXJyb3IpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9zb3Vw
L0Rvd25sb2FkU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9zb3Vw
L0Rvd25sb2FkU291cEVycm9ycy5oOgorICAgICAgICAqIFNoYXJlZC9zb3VwL1dlYkNvcmVBcmd1
bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNl
RXJyb3I+OjplbmNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlc291cmNlRXJyb3I+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdExvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChMb2FkZXJDbGllbnQ6
OmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSk6CisgICAgICAgIChMb2Fk
ZXJDbGllbnQ6OmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwOgorICAgICAgICAod2Via2l0
X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3IpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVycm9yc0VmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Omlu
dGVybmFsRXJyb3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dl
YkVycm9yc0d0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OmludGVybmFsRXJyb3IpOgorICAgICAg
ICAtIFVwZGF0ZSBmb3IgdHlwZSBjaGFuZ2Ugb2YgJ2ZhaWxpbmdVUkwnIGFyZ3VtZW50IHRvCisg
ICAgICAgICAgUmVzb3VyY2VFcnJvcigpLgorCiAyMDE1LTEyLTIyICBIdW5zZW9wIEplb25nICA8
aHM4NS5qZW9uZ0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBld2tfYXBwbGljYXRpb25f
Y2FjaGVfbWFuYWdlciB0ZXN0IGZhaWxlZCBhZnRlciByMTkzODEyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGQ1NDA2MDUy
YjVlNzljZmUwZTBmMDRhMTFiMmFmMWQ1N2QyM2M5NmUuLjFmNjE0ZWIzMTc5Nzk1OGZlOGE1MmU4
NGRlZGYwNmQ1YWQ1ZDgxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKERvY3VtZW50JiBkb2N1bWVudCwg
VGhyZWFkYWJsCiAgICAgfQogCiAgICAgaWYgKG1fb3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQ
b2xpY3kgPT0gRGVueUNyb3NzT3JpZ2luUmVxdWVzdHMpIHsKLSAgICAgICAgbV9jbGllbnQtPmRp
ZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0
LnVybCgpLnN0cmluZygpLCAiQ3Jvc3Mgb3JpZ2luIHJlcXVlc3RzIGFyZSBub3Qgc3VwcG9ydGVk
LiIpKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFp
bldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0LnVybCgpLCAiQ3Jvc3Mgb3JpZ2luIHJlcXVlc3Rz
IGFyZSBub3Qgc3VwcG9ydGVkLiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTE5
LDcgKzExOSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlU2ltcGxlQ3Jv
c3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KGNvbnN0IFJlc291cmNlCiAKICAgICAvLyBDcm9zcy1vcmln
aW4gcmVxdWVzdHMgYXJlIG9ubHkgYWxsb3dlZCBmb3IgSFRUUCBhbmQgcmVnaXN0ZXJlZCBzY2hl
bWVzLiBXZSB3b3VsZCBjYXRjaCB0aGlzIHdoZW4gY2hlY2tpbmcgcmVzcG9uc2UgaGVhZGVycyBs
YXRlciwgYnV0IHRoZXJlIGlzIG5vIHJlYXNvbiB0byBzZW5kIGEgcmVxdWVzdCB0aGF0J3MgZ3Vh
cmFudGVlZCB0byBiZSBkZW5pZWQuCiAgICAgaWYgKCFTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJl
YXRVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHJlcXVlc3QudXJsKCkucHJvdG9jb2woKSkpIHsKLSAg
ICAgICAgbV9jbGllbnQtPmRpZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2soUmVzb3VyY2VFcnJvcihl
cnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCAiQ3Jv
c3Mgb3JpZ2luIHJlcXVlc3RzIGFyZSBvbmx5IHN1cHBvcnRlZCBmb3IgSFRUUC4iKSk7CisgICAg
ICAgIG1fY2xpZW50LT5kaWRGYWlsQWNjZXNzQ29udHJvbENoZWNrKFJlc291cmNlRXJyb3IoZXJy
b3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVxdWVzdC51cmwoKSwgIkNyb3NzIG9yaWdpbiBy
ZXF1ZXN0cyBhcmUgb25seSBzdXBwb3J0ZWQgZm9yIEhUVFAuIikpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnMKICAg
ICB9IGVsc2UgewogICAgICAgICBpZiAoIW1fc2FtZU9yaWdpblJlcXVlc3QgJiYgbV9vcHRpb25z
LmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9PSBVc2VBY2Nlc3NDb250cm9sKSB7CiAgICAgICAg
ICAgICBpZiAoIXBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhyZXNwb25zZSwgbV9vcHRpb25zLmFs
bG93Q3JlZGVudGlhbHMoKSwgc2VjdXJpdHlPcmlnaW4oKSwgYWNjZXNzQ29udHJvbEVycm9yRGVz
Y3JpcHRpb24pKSB7Ci0gICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZEZhaWxBY2Nlc3NDb250
cm9sQ2hlY2soUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNw
b25zZS51cmwoKS5zdHJpbmcoKSwgYWNjZXNzQ29udHJvbEVycm9yRGVzY3JpcHRpb24pKTsKKyAg
ICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbEFjY2Vzc0NvbnRyb2xDaGVjayhSZXNvdXJj
ZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCBhY2Nl
c3NDb250cm9sRXJyb3JEZXNjcmlwdGlvbikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzMzLDcgKzMzMyw3IEBAIHZvaWQgRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRTdWNjZXNzKCkKICAgICBsb2FkUmVxdWVzdCgqYWN0
dWFsUmVxdWVzdCwgU2tpcFNlY3VyaXR5Q2hlY2spOwogfQogCi12b2lkIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6cHJlZmxpZ2h0RmFpbHVyZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGVycm9yRGVzY3JpcHRpb24pCit2b2lkIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxpZ2h0RmFpbHVyZSh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGVycm9yRGVzY3JpcHRpb24p
CiB7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAw
LCB1cmwsIGVycm9yRGVzY3JpcHRpb24pOwogICAgIGlmIChtX2FjdHVhbFJlcXVlc3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXgg
Nzc4ZDMxZWYzZmUyYmE1NDIyMjZiNjc0NGNjYjdkZTM4YmUwMGM4ZC4uZmYwODNmYjkwZjE3MmFk
YmNlNTM3NTRlMGVjN2RjNTBmYjRhN2Y2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaApAQCAtOTEsNyArOTEsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZvaWQgbWFrZVNpbXBsZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVz
dChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpOwogICAgICAgICB2b2lkIG1ha2VDcm9z
c09yaWdpbkFjY2Vzc1JlcXVlc3RXaXRoUHJlZmxpZ2h0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCk7CiAgICAgICAgIHZvaWQgcHJlZmxpZ2h0U3VjY2VzcygpOwotICAgICAgICB2b2lk
IHByZWZsaWdodEZhaWx1cmUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJiBlcnJvckRlc2NyaXB0aW9uKTsKKyAgICAgICAgdm9pZCBwcmVm
bGlnaHRGYWlsdXJlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiBlcnJvckRlc2NyaXB0aW9uKTsKIAogICAgICAgICB2b2lkIGxvYWRSZXF1ZXN0KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIFNlY3VyaXR5Q2hlY2tQb2xpY3kpOwogICAgICAgICBib29s
IGlzQWxsb3dlZFJlZGlyZWN0KGNvbnN0IFVSTCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oCmluZGV4IDE2MjllYzU3Y2U1ZGRjMTBjZTg5ZDMxMTA0NmU5MDBhMTQzNDNmY2QuLjFh
NDBiNmRhNDQ1YzljMjgzNWFiZTk0NDUwZTYzMmQ2NTVhYzJiMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmgKQEAgLTMyMCwxNSArMzIwLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQp
IG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRM
b2FkZXIqKSBvdmVycmlkZSB7IH0KIAotICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5jZWxs
ZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IFJlc291cmNlRXJyb3Ig
ZXJyb3IoIiIsIDAsICIiLCAiIik7IGVycm9yLnNldElzQ2FuY2VsbGF0aW9uKHRydWUpOyByZXR1
cm4gZXJyb3I7IH0KLSAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAs
ICIiLCAiIik7IH0KLSAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJs
b2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNv
dXJjZUVycm9yKCIiLCAwLCAiIiwgIiIpOyB9Ci0gICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNh
bm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVy
biBSZXNvdXJjZUVycm9yKCIiLCAwLCAiIiwgIiIpOyB9Ci0gICAgdmlydHVhbCBSZXNvdXJjZUVy
cm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgIiIsICIiKTsgfQotCi0g
ICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCAi
IiwgIiIpOyB9Ci0gICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJv
cihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJv
cigiIiwgMCwgIiIsICIiKTsgfQotICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBwbHVnaW5XaWxs
SGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVy
biBSZXNvdXJjZUVycm9yKCIiLCAwLCAiIiwgIiIpOyB9CisgICAgdmlydHVhbCBSZXNvdXJjZUVy
cm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgUmVz
b3VyY2VFcnJvciBlcnJvcigiIiwgMCwgVVJMKCksICIiKTsgZXJyb3Iuc2V0SXNDYW5jZWxsYXRp
b24odHJ1ZSk7IHJldHVybiBlcnJvcjsgfQorICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9j
a2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3Vy
Y2VFcnJvcigiIiwgMCwgVVJMKCksICIiKTsgfQorICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBi
bG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJy
aWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KKyAgICB2aXJ0
dWFsIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7IH0K
KyAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJv
cihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9y
KCIiLCAwLCBVUkwoKSwgIiIpOyB9CisKKyAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2Fubm90
U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0
dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KKyAgICB2aXJ0dWFsIFJlc291
cmNlRXJyb3IgZmlsZURvZXNOb3RFeGlzdEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBv
dmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBVUkwoKSwgIiIpOyB9CisgICAg
dmlydHVhbCBSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsIFVS
TCgpLCAiIik7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGYWxsQmFjayhjb25zdCBSZXNv
dXJjZUVycm9yJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNDgxNTBhMGUzYTRmMjdkODkwMjI1MGNhM2FkZmMwMmYz
NTYzYzY4MS4uOTAwZGQzODAwYmZhNDU1OTk3OGMyZTQxYTQwMjAwNzE1YzRjMmViYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yNjg2LDcgKzI2ODYsNyBAQCB1bnNp
Z25lZCBsb25nIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdQogICAgICAgICAgICAgaWYgKGF1dG8qIGNvbnRyb2xsZXIgPSBw
YWdlLT51c2VyQ29udGVudENvbnRyb2xsZXIoKSkgewogICAgICAgICAgICAgICAgIGlmIChtX2Rv
Y3VtZW50TG9hZGVyICYmIGNvbnRyb2xsZXItPnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNG
b3JMb2FkKG5ld1JlcXVlc3QsIFJlc291cmNlVHlwZTo6UmF3LCAqbV9kb2N1bWVudExvYWRlcikg
PT0gQ29udGVudEV4dGVuc2lvbnM6OkJsb2NrZWRTdGF0dXM6OkJsb2NrZWQpIHsKICAgICAgICAg
ICAgICAgICAgICAgbmV3UmVxdWVzdCA9IHsgfTsKLSAgICAgICAgICAgICAgICAgICAgZXJyb3Ig
PSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGluaXRpYWxSZXF1
ZXN0LnVybCgpLnN0cmluZygpLCBlbXB0eVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAg
ZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGluaXRp
YWxSZXF1ZXN0LnVybCgpLCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgICAgICAgICAgICAgcmVz
cG9uc2UgPSB7IH07CiAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBudWxscHRyOwogICAgICAg
ICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291
cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVy
LmNwcAppbmRleCAyMGQyZTZlYzlhMzM5ZmJlZTFkZGViOTIwODQyMGNjZmMyMWNiZjA3Li5kOTMz
Y2VlM2Q1YmYzMDY0Mjg1MmIxY2MxYzAyN2VmMzQ3OTQ4MDk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9p
ZCBNZWRpYVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiBy
ZXNvdXJjZSwgY29uc3QgUmVzb3UKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IFN0cmluZz4gY29uc29sZU1lc3NhZ2UoIkNyb3NzLW9yaWdpbiBtZWRpYSByZXNvdXJjZSBsb2Fk
IGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIik7CiAgICAg
ICAgIG1fZG9jdW1lbnQuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHks
IE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVNZXNzYWdlLmdldCgpKTsKICAgICAgICAgbV9k
aWRQYXNzQWNjZXNzQ29udHJvbENoZWNrID0gZmFsc2U7Ci0gICAgICAgIG1fY2xpZW50LT5hY2Nl
c3NDb250cm9sQ2hlY2tGYWlsZWQoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVy
bmFsLCAwLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgY29uc29sZU1lc3NhZ2UuZ2V0KCkpKTsK
KyAgICAgICAgbV9jbGllbnQtPmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChSZXNvdXJjZUVycm9y
KGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCBjb25zb2xlTWVz
c2FnZS5nZXQoKSkpOwogICAgICAgICBzdG9wKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAwZDgxZmY1YmEyOGEy
MTA0ZDUyOGFlY2ZiYmJlNzM1NmNhMjNiNjc4Li4xYTk3M2IwZDUyM2I4ZTFmMzJmMjVhODA4OWM4
Mjk4NTc0NTBlM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTI1Nyw3ICsyNTcsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkRGF0YVVSTCgpCiAg
ICAgICAgIGlmIChsb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIGlmICghZGVjb2RlUmVzdWx0KSB7Ci0gICAgICAgICAgICBsb2FkZXIt
PmRpZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwu
c3RyaW5nKCksICJEYXRhIFVSTCBkZWNvZGluZyBmYWlsZWQiKSk7CisgICAgICAgICAgICBsb2Fk
ZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1
cmwsICJEYXRhIFVSTCBkZWNvZGluZyBmYWlsZWQiKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKGxvYWRlci0+d2FzQ2FuY2VsbGVkKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggYTBkYzNj
YTFhZmMyNTZjNTYyMDljOWQ5NjhkNDViMDJkZDUxMmYxNC4uMWRiOGQ2NDg5MmZhMjMyNDk3YjAz
ODIxNDQwNmYzN2VmMTMyZWJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dv
cmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgV29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6Y2FuY2VsKCkKICAgICBpZiAoIWNsaWVu
dFdyYXBwZXItPmRvbmUoKSkgewogICAgICAgICAvLyBJZiB0aGUgY2xpZW50IGhhc24ndCByZWFj
aGVkIGEgdGVybWluYXRpb24gc3RhdGUsIHRoZW4gdHJhbnNpdGlvbiBpdCBieSBzZW5kaW5nIGEg
Y2FuY2VsbGF0aW9uIGVycm9yLgogICAgICAgICAvLyBOb3RlOiBubyBtb3JlIGNsaWVudCBjYWxs
YmFja3Mgd2lsbCBiZSBkb25lIGFmdGVyIHRoaXMgbWV0aG9kIC0tIHRoZSBjbGVhckNsaWVudFdy
YXBwZXIoKSBjYWxsIGVuc3VyZXMgdGhhdC4KLSAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcihT
dHJpbmcoKSwgMCwgU3RyaW5nKCksIFN0cmluZygpKTsKKyAgICAgICAgUmVzb3VyY2VFcnJvciBl
cnJvcihTdHJpbmcoKSwgMCwgVVJMKCksIFN0cmluZygpKTsKICAgICAgICAgZXJyb3Iuc2V0SXND
YW5jZWxsYXRpb24odHJ1ZSk7CiAgICAgICAgIGNsaWVudFdyYXBwZXItPmRpZEZhaWwoZXJyb3Ip
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IDczNzhkNmQxYWM5MjQxYmM2NzY5Njk3NjMyYzdjZjQ3YmJm
NTJiOWUuLmQ5ZmNmZTYyNDM2MzA0OTM5ZDFmZmE4MmVjM2EwMzcwMGUyNjRhNzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNw
cApAQCAtNTQ0LDcgKzU0NCw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNl
PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlCiAgICAgICAgICAg
ICAgICAgYXV0byByZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHR5cGUsIHJlcXVlc3QubXV0YWJs
ZVJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LmNoYXJzZXQoKSwgc2Vzc2lvbklEKCkpOwogICAg
ICAgICAgICAgICAgIEFTU0VSVChyZXNvdXJjZSk7CiAgICAgICAgICAgICAgICAgcmVzb3VyY2Ut
PmVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXM6OkxvYWRFcnJvcik7Ci0gICAgICAgICAgICAg
ICAgcmVzb3VyY2UtPnNldFJlc291cmNlRXJyb3IoUmVzb3VyY2VFcnJvcihDb250ZW50RXh0ZW5z
aW9uczo6V2ViS2l0Q29udGVudEJsb2NrZXJEb21haW4sIDAsIHJlcXVlc3QucmVzb3VyY2VSZXF1
ZXN0KCkudXJsKCkuc3RyaW5nKCksIFdFQl9VSV9TVFJJTkcoIlRoZSBVUkwgd2FzIGJsb2NrZWQg
YnkgYSBjb250ZW50IGJsb2NrZXIiLCAiV2ViS2l0RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tl
ciBkZXNjcmlwdGlvbiIpKSk7CisgICAgICAgICAgICAgICAgcmVzb3VyY2UtPnNldFJlc291cmNl
RXJyb3IoUmVzb3VyY2VFcnJvcihDb250ZW50RXh0ZW5zaW9uczo6V2ViS2l0Q29udGVudEJsb2Nr
ZXJEb21haW4sIDAsIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCksIFdFQl9VSV9TVFJJ
TkcoIlRoZSBVUkwgd2FzIGJsb2NrZWQgYnkgYSBjb250ZW50IGJsb2NrZXIiLCAiV2ViS2l0RXJy
b3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciBkZXNjcmlwdGlvbiIpKSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc291cmNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IGI4MzQxZTZiNmMwNzU3
NmY3NGY0MTIzNDUzMzJhZjVlOTkyNmM0NjQuLjIwMTNjMDhlODBjOWUwZjA0MjM4NGI3NWI5NjE1
ODAwNzUwNmM1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCkBAIC0yNzMsNyAr
MjczLDcgQEAgdm9pZCBFdmVudFNvdXJjZTo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKIAogdm9pZCBFdmVudFNvdXJjZTo6ZGlkRmFpbEFjY2Vzc0NvbnRyb2xDaGVjayhjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJp
bmcoIkV2ZW50U291cmNlIGNhbm5vdCBsb2FkICIsIGVycm9yLmZhaWxpbmdVUkwoKSwgIi4gIiwg
ZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7CisgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtl
U3RyaW5nKCJFdmVudFNvdXJjZSBjYW5ub3QgbG9hZCAiLCBlcnJvci5mYWlsaW5nVVJMKCkuc3Ry
aW5nKCksICIuICIsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwogICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UpOwogCiAgICAgYWJvcnRDb25uZWN0aW9uQXR0ZW1w
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0Vycm9yc0VmbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmNwcAppbmRleCA2ZWZm
NTU1OTMzYzk2MzFhMjM4MmUyNmNkMTkyMjkzYzdkOGI2ZTM3Li4zMjgyNmU1NjcyNzMwM2JlZmRl
MjljMDhkZThjNTdhYjQ5ZGJlMzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lZmwvRXJyb3JzRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJy
b3JzRWZsLmNwcApAQCAtMzQsNDIgKzM0LDQyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVz
b3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
CiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5OZXR3b3JrLCBOZXR3b3Jr
RXJyb3JDYW5jZWxsZWQsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiTG9h
ZCByZXF1ZXN0IGNhbmNlbGxlZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRv
bWFpbk5ldHdvcmssIE5ldHdvcmtFcnJvckNhbmNlbGxlZCwgcmVxdWVzdC51cmwoKSwgQVNDSUlM
aXRlcmFsKCJMb2FkIHJlcXVlc3QgY2FuY2VsbGVkIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGJs
b2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJu
IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Qb2xpY3ksIFBvbGljeUVycm9yQ2Fubm90VXNlUmVz
dHJpY3RlZFBvcnQsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiTm90IGFs
bG93ZWQgdG8gdXNlIHJlc3RyaWN0ZWQgbmV0d29yayBwb3J0IikpOworICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFVzZVJlc3RyaWN0
ZWRQb3J0LCByZXF1ZXN0LnVybCgpLCBBU0NJSUxpdGVyYWwoIk5vdCBhbGxvd2VkIHRvIHVzZSBy
ZXN0cmljdGVkIG5ldHdvcmsgcG9ydCIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBibG9ja2VkQnlD
b250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAg
ICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JCbG9j
a2VkQnlDb250ZW50QmxvY2tlciwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgQVNDSUlMaXRlcmFs
KCJCbG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlciIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciwg
cmVxdWVzdC51cmwoKSwgQVNDSUlMaXRlcmFsKCJCbG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlciIp
KTsKIH0KIAogUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWlu
UG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFNob3dVUkwsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCks
IEFTQ0lJTGl0ZXJhbCgiVVJMIGNhbm5vdCBiZSBzaG93biIpKTsKKyAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RTaG93VVJMLCByZXF1
ZXN0LnVybCgpLCBBU0NJSUxpdGVyYWwoIlVSTCBjYW5ub3QgYmUgc2hvd24iKSk7CiB9CiAKIFJl
c291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21h
aW5Qb2xpY3ksIFBvbGljeUVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwg
cmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJGcmFtZSBsb2FkIHdhcyBpbnRl
cnJ1cHRlZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwg
UG9saWN5RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCByZXF1ZXN0LnVy
bCgpLCBBU0NJSUxpdGVyYWwoIkZyYW1lIGxvYWQgd2FzIGludGVycnVwdGVkIikpOwogfQogCiBS
ZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9s
aWN5LCBQb2xpY3lFcnJvckNhbm5vdFNob3dNaW1lVHlwZSwgcmVzcG9uc2UudXJsKCkuc3RyaW5n
KCksIEFTQ0lJTGl0ZXJhbCgiQ29udGVudCB3aXRoIHRoZSBzcGVjaWZpZWQgTUlNRSB0eXBlIGNh
bm5vdCBiZSBzaG93biIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBv
bGljeSwgUG9saWN5RXJyb3JDYW5ub3RTaG93TWltZVR5cGUsIHJlc3BvbnNlLnVybCgpLCBBU0NJ
SUxpdGVyYWwoIkNvbnRlbnQgd2l0aCB0aGUgc3BlY2lmaWVkIE1JTUUgdHlwZSBjYW5ub3QgYmUg
c2hvd24iKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgZmlsZURvZXNOb3RFeGlzdEVycm9yKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KGVycm9yRG9tYWluTmV0d29yaywgTmV0d29ya0Vycm9yRmlsZURvZXNOb3RFeGlzdCwgcmVzcG9u
c2UudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiRmlsZSBkb2VzIG5vdCBleGlzdCIpKTsK
KyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbk5ldHdvcmssIE5ldHdvcmtFcnJv
ckZpbGVEb2VzTm90RXhpc3QsIHJlc3BvbnNlLnVybCgpLCBBU0NJSUxpdGVyYWwoIkZpbGUgZG9l
cyBub3QgZXhpc3QiKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRF
cnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICByZXR1cm4gUmVz
b3VyY2VFcnJvcihlcnJvckRvbWFpblBsdWdpbiwgUGx1Z2luRXJyb3JXaWxsSGFuZGxlTG9hZCwg
cmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiUGx1Z2luIHdpbGwgaGFuZGxl
IGxvYWQiKSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5QbHVnaW4sIFBs
dWdpbkVycm9yV2lsbEhhbmRsZUxvYWQsIHJlc3BvbnNlLnVybCgpLCBBU0NJSUxpdGVyYWwoIlBs
dWdpbiB3aWxsIGhhbmRsZSBsb2FkIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGRvd25sb2FkTmV0
d29ya0Vycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIG5ldHdvcmtFcnJvcikKQEAgLTc5LDEyICs3
OSwxMiBAQCBSZXNvdXJjZUVycm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0IFJlc291cmNl
RXJyb3ImIG5ldHdvcmtFcnJvcikKIAogUmVzb3VyY2VFcnJvciBkb3dubG9hZENhbmNlbGxlZEJ5
VXNlckVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIHJldHVy
biBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JDYW5jZWxs
ZWRCeVVzZXIsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBBU0NJSUxpdGVyYWwoIlVzZXIgY2Fu
Y2VsbGVkIHRoZSBkb3dubG9hZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRv
bWFpbkRvd25sb2FkLCBEb3dubG9hZEVycm9yQ2FuY2VsbGVkQnlVc2VyLCByZXNwb25zZS51cmwo
KSwgQVNDSUlMaXRlcmFsKCJVc2VyIGNhbmNlbGxlZCB0aGUgZG93bmxvYWQiKSk7CiB9CiAKIFJl
c291cmNlRXJyb3IgZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBEb3dubG9hZEVycm9yRGVzdGluYXRp
b24sIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBlcnJvck1lc3NhZ2UpOworICAgIHJldHVybiBS
ZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JEZXN0aW5hdGlv
biwgcmVzcG9uc2UudXJsKCksIGVycm9yTWVzc2FnZSk7CiB9CiAKIFJlc291cmNlRXJyb3IgcHJp
bnRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcAppbmRleCA2ODhhOTA2
ZDllYjQwOGVkZmI0NzNhZmZmNzk4MjU2NDZlYzFmZTBmLi44ZGZkMTU4YjNiNGQ2YzU0NGJkYjI5
YTYxNTc0MWRiZGE0YjQxYTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvRXJyb3JzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXJyb3Jz
R3RrLmNwcApAQCAtMjksNjcgKzI5LDU3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVzb3Vy
Y2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7
Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5OZXR3b3JrLCBOZXR3b3JrRXJy
b3JDYW5jZWxsZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC51cmwoKS5zdHJp
bmcoKSwgXygiTG9hZCByZXF1ZXN0IGNhbmNlbGxlZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpbk5ldHdvcmssIE5ldHdvcmtFcnJvckNhbmNlbGxlZCwgcmVxdWVzdC51
cmwoKSwgXygiTG9hZCByZXF1ZXN0IGNhbmNlbGxlZCIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBi
bG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVy
biBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFVzZVJl
c3RyaWN0ZWRQb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QudXJsKCkuc3Ry
aW5nKCksIF8oIk5vdCBhbGxvd2VkIHRvIHVzZSByZXN0cmljdGVkIG5ldHdvcmsgcG9ydCIpKTsK
KyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JD
YW5ub3RVc2VSZXN0cmljdGVkUG9ydCwgcmVxdWVzdC51cmwoKSwgXygiTm90IGFsbG93ZWQgdG8g
dXNlIHJlc3RyaWN0ZWQgbmV0d29yayBwb3J0IikpOwogfQogCiBSZXNvdXJjZUVycm9yIGJsb2Nr
ZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQog
ewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJv
ckJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCBfKCJCbG9j
a2VkIGJ5IGNvbnRlbnQgYmxvY2tlciIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJv
ckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciwgcmVxdWVz
dC51cmwoKSwgXygiQmxvY2tlZCBieSBjb250ZW50IGJsb2NrZXIiKSk7CiB9CiAKIFJlc291cmNl
RXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
IHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJy
b3JDYW5ub3RTaG93VVJMLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QudXJsKCku
c3RyaW5nKCksIF8oIlVSTCBjYW5ub3QgYmUgc2hvd24iKSk7CisgICAgcmV0dXJuIFJlc291cmNl
RXJyb3IoZXJyb3JEb21haW5Qb2xpY3ksIFBvbGljeUVycm9yQ2Fubm90U2hvd1VSTCwgcmVxdWVz
dC51cmwoKSwgXygiVVJMIGNhbm5vdCBiZSBzaG93biIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBp
bnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9s
aWN5RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIF8oIkZyYW1lIGxvYWQgd2FzIGlu
dGVycnVwdGVkIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5
LCBQb2xpY3lFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsIHJlcXVlc3Qu
dXJsKCksIF8oIkZyYW1lIGxvYWQgd2FzIGludGVycnVwdGVkIikpOwogfQogCiBSZXNvdXJjZUVy
cm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xp
Y3lFcnJvckNhbm5vdFNob3dNaW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXNw
b25zZS51cmwoKS5zdHJpbmcoKSwgXygiQ29udGVudCB3aXRoIHRoZSBzcGVjaWZpZWQgTUlNRSB0
eXBlIGNhbm5vdCBiZSBzaG93biIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRv
bWFpblBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RTaG93TWltZVR5cGUsIHJlc3BvbnNlLnVybCgp
LCBfKCJDb250ZW50IHdpdGggdGhlIHNwZWNpZmllZCBNSU1FIHR5cGUgY2Fubm90IGJlIHNob3du
IikpOwogfQogCiBSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJv
ckRvbWFpbk5ldHdvcmssIE5ldHdvcmtFcnJvckZpbGVEb2VzTm90RXhpc3QsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIF8oIkZpbGUgZG9lcyBub3Qg
ZXhpc3QiKSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5OZXR3b3JrLCBO
ZXR3b3JrRXJyb3JGaWxlRG9lc05vdEV4aXN0LCByZXNwb25zZS51cmwoKSwgXygiRmlsZSBkb2Vz
IG5vdCBleGlzdCIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVy
cm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKGVycm9yRG9tYWluUGx1Z2luLCBQbHVnaW5FcnJvcldpbGxIYW5kbGVMb2FkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBfKCJQbHVn
aW4gd2lsbCBoYW5kbGUgbG9hZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRv
bWFpblBsdWdpbiwgUGx1Z2luRXJyb3JXaWxsSGFuZGxlTG9hZCwgcmVzcG9uc2UudXJsKCksIF8o
IlBsdWdpbiB3aWxsIGhhbmRsZSBsb2FkIikpOwogfQogCiBSZXNvdXJjZUVycm9yIGRvd25sb2Fk
TmV0d29ya0Vycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIG5ldHdvcmtFcnJvcikKIHsKLSAgICBy
ZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBEb3dubG9hZEVycm9yTmV0
d29yaywKLSAgICAgICAgICAgICAgICAgICAgICAgICBuZXR3b3JrRXJyb3IuZmFpbGluZ1VSTCgp
LCBuZXR3b3JrRXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7CisgICAgcmV0dXJuIFJlc291
cmNlRXJyb3IoZXJyb3JEb21haW5Eb3dubG9hZCwgRG93bmxvYWRFcnJvck5ldHdvcmssIG5ldHdv
cmtFcnJvci5mYWlsaW5nVVJMKCksIG5ldHdvcmtFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigp
KTsKIH0KIAogUmVzb3VyY2VFcnJvciBkb3dubG9hZENhbmNlbGxlZEJ5VXNlckVycm9yKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KGVycm9yRG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JDYW5jZWxsZWRCeVVzZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIF8oIlVzZXIgY2Fu
Y2VsbGVkIHRoZSBkb3dubG9hZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRv
bWFpbkRvd25sb2FkLCBEb3dubG9hZEVycm9yQ2FuY2VsbGVkQnlVc2VyLCByZXNwb25zZS51cmwo
KSwgXygiVXNlciBjYW5jZWxsZWQgdGhlIGRvd25sb2FkIikpOwogfQogCiBSZXNvdXJjZUVycm9y
IGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoZXJyb3JEb21haW5Eb3dubG9hZCwgRG93bmxvYWRFcnJvckRlc3RpbmF0aW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBlcnJvck1lc3NhZ2Up
OworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxvYWQsIERvd25sb2Fk
RXJyb3JEZXN0aW5hdGlvbiwgcmVzcG9uc2UudXJsKCksIGVycm9yTWVzc2FnZSk7CiB9CiAKIFJl
c291cmNlRXJyb3IgcHJpbnRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUVycm9yQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUVycm9yQmFzZS5oCmluZGV4IDVhZTgzN2MzMWM1ZDhhNDg1NjIwMDkzODZmODBl
ZGMwMTk1NGM2ODkuLmE4MGU3NjE5YjVhZDlkZGRkZTg1NjgyMzc2MmVjZTRmNTUxYmFkM2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JC
YXNlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgUmVzb3VyY2VFcnJvckJhc2VfaAogI2Rl
ZmluZSBSZXNvdXJjZUVycm9yQmFzZV9oCiAKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDMsNyArNDQs
NyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIGRvbWFpbigpIGNvbnN0IHsgbGF6eUlu
aXQoKTsgcmV0dXJuIG1fZG9tYWluOyB9CiAgICAgaW50IGVycm9yQ29kZSgpIGNvbnN0IHsgbGF6
eUluaXQoKTsgcmV0dXJuIG1fZXJyb3JDb2RlOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBmYWlsaW5n
VVJMKCkgY29uc3QgeyBsYXp5SW5pdCgpOyByZXR1cm4gbV9mYWlsaW5nVVJMOyB9CisgICAgY29u
c3QgVVJMJiBmYWlsaW5nVVJMKCkgY29uc3QgeyBsYXp5SW5pdCgpOyByZXR1cm4gbV9mYWlsaW5n
VVJMOyB9CiAgICAgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbigpIGNvbnN0IHsg
bGF6eUluaXQoKTsgcmV0dXJuIG1fbG9jYWxpemVkRGVzY3JpcHRpb247IH0KIAogICAgIHZvaWQg
c2V0SXNDYW5jZWxsYXRpb24oYm9vbCBpc0NhbmNlbGxhdGlvbikgeyBtX2lzQ2FuY2VsbGF0aW9u
ID0gaXNDYW5jZWxsYXRpb247IH0KQEAgLTYzLDcgKzY0LDcgQEAgcHJvdGVjdGVkOgogICAgIHsK
ICAgICB9CiAKLSAgICBSZXNvdXJjZUVycm9yQmFzZShjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50
IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2Fs
aXplZERlc2NyaXB0aW9uKQorICAgIFJlc291cmNlRXJyb3JCYXNlKGNvbnN0IFN0cmluZyYgZG9t
YWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYg
bG9jYWxpemVkRGVzY3JpcHRpb24pCiAgICAgICAgIDogbV9kb21haW4oZG9tYWluKQogICAgICAg
ICAsIG1fZmFpbGluZ1VSTChmYWlsaW5nVVJMKQogICAgICAgICAsIG1fbG9jYWxpemVkRGVzY3Jp
cHRpb24obG9jYWxpemVkRGVzY3JpcHRpb24pCkBAIC04Niw3ICs4Nyw3IEBAIHByb3RlY3RlZDoK
ICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3VyY2VFcnJvciYsIGNv
bnN0IFJlc291cmNlRXJyb3ImKSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBTdHJpbmcgbV9kb21h
aW47Ci0gICAgU3RyaW5nIG1fZmFpbGluZ1VSTDsKKyAgICBVUkwgbV9mYWlsaW5nVVJMOwogICAg
IFN0cmluZyBtX2xvY2FsaXplZERlc2NyaXB0aW9uOwogICAgIGludCBtX2Vycm9yQ29kZTsKICAg
ICBib29sIG1faXNOdWxsIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUVycm9yLmgKaW5kZXggMTcwM2NjOTFmNjhiMmE1ZTY0Zjg3OTIzY2U2
ZmJhMWQyN2RkMjQxZC4uYjMyOGJhMTcxNTA0MTBmNTNmNzcxNjY5MjA4NTE0YjZhNzc0NmY2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVy
cm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVy
cm9yLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBSZXNv
dXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJp
bmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCisgICAg
UmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3Qg
VVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQogICAg
ICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBs
b2NhbGl6ZWREZXNjcmlwdGlvbikKICAgICAgICAgLCBtX2RhdGFJc1VwVG9EYXRlKHRydWUpCiAg
ICAgewpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoQ0ZORVRXT1JLKQogI2lm
IFBMQVRGT1JNKFdJTikKLSAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBp
bnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9j
YWxpemVkRGVzY3JpcHRpb24sIENGRGF0YVJlZiBjZXJ0aWZpY2F0ZSk7CisgICAgUmVzb3VyY2VF
cnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWls
aW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uLCBDRkRhdGFSZWYgY2Vy
dGlmaWNhdGUpOwogICAgIFBDQ0VSVF9DT05URVhUIGNlcnRpZmljYXRlKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRDZXJ0aWZpY2F0ZShDRkRhdGFSZWYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXgg
MTMxZmJiMDQ2MTE3MDZmNjRkODUwYTFjNTBlMDVlMTRhMmM2ZTEzMy4uNjBiZmIzNjU5MWUwN2Mx
YmZiZWFiNmIxZTNiNTZmYWI5ODQ3ODQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcApAQCAtNDksNyArNDksNyBA
QCBSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKENGRXJyb3JSZWYgY2ZFcnJvcikKIH0KIAog
I2lmIFBMQVRGT1JNKFdJTikKLVJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoY29uc3QgU3Ry
aW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCwgY29u
c3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbiwgQ0ZEYXRhUmVmIGNlcnRpZmljYXRlKQor
UmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVy
cm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERl
c2NyaXB0aW9uLCBDRkRhdGFSZWYgY2VydGlmaWNhdGUpCiAgICAgOiBSZXNvdXJjZUVycm9yQmFz
ZShkb21haW4sIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24pCiAg
ICAgLCBtX2RhdGFJc1VwVG9EYXRlKHRydWUpCiAgICAgLCBtX2NlcnRpZmljYXRlKGNlcnRpZmlj
YXRlKQpAQCAtMTAxLDE3ICsxMDEsMTIgQEAgdm9pZCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxh
enlJbml0KCkKICAgICBpZiAodXNlckluZm8uZ2V0KCkpIHsKICAgICAgICAgQ0ZTdHJpbmdSZWYg
ZmFpbGluZ1VSTFN0cmluZyA9IChDRlN0cmluZ1JlZikgQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNl
ckluZm8uZ2V0KCksIGZhaWxpbmdVUkxTdHJpbmdLZXkpOwogICAgICAgICBpZiAoZmFpbGluZ1VS
TFN0cmluZykKLSAgICAgICAgICAgIG1fZmFpbGluZ1VSTCA9IFN0cmluZyhmYWlsaW5nVVJMU3Ry
aW5nKTsKKyAgICAgICAgICAgIG1fZmFpbGluZ1VSTCA9IFVSTChVUkwoKSwgZmFpbGluZ1VSTFN0
cmluZyk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQ0ZVUkxSZWYgZmFpbGluZ1VSTCA9
IChDRlVSTFJlZikgQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGZhaWxpbmdV
UkxLZXkpOwogICAgICAgICAgICAgaWYgKGZhaWxpbmdVUkwpIHsKLSAgICAgICAgICAgICAgICBS
ZXRhaW5QdHI8Q0ZVUkxSZWY+IGFic29sdXRlVVJMUmVmID0gYWRvcHRDRihDRlVSTENvcHlBYnNv
bHV0ZVVSTChmYWlsaW5nVVJMKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGFic29sdXRlVVJMUmVm
LmdldCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBDRlVSTEdldFN0cmluZyBy
ZXR1cm5zIGEgbm9ybWFsaXplZCBVUkwgd2hpY2ggaXMgZGlmZmVyZW50IGZyb20gd2hhdCBpcyBh
Y3R1YWxseSB1c2VkIGJ5IENGTmV0d29yay4KLSAgICAgICAgICAgICAgICAgICAgLy8gV2Ugc2hv
dWxkIHVzZSBDRlVSTEdldEJ5dGVzIGluc3RlYWQuCi0gICAgICAgICAgICAgICAgICAgIGZhaWxp
bmdVUkxTdHJpbmcgPSBDRlVSTEdldFN0cmluZyhhYnNvbHV0ZVVSTFJlZi5nZXQoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIG1fZmFpbGluZ1VSTCA9IFN0cmluZyhmYWlsaW5nVVJMU3RyaW5nKTsK
LSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKFJldGFpblB0cjxDRlVSTFJl
Zj4gYWJzb2x1dGVVUkxSZWYgPSBhZG9wdENGKENGVVJMQ29weUFic29sdXRlVVJMKGZhaWxpbmdV
UkwpKSkKKyAgICAgICAgICAgICAgICAgICAgbV9mYWlsaW5nVVJMID0gVVJMKGFic29sdXRlVVJM
UmVmLmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBtX2xvY2FsaXpl
ZERlc2NyaXB0aW9uID0gKENGU3RyaW5nUmVmKSBDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5m
by5nZXQoKSwga0NGRXJyb3JMb2NhbGl6ZWREZXNjcmlwdGlvbktleSk7CkBAIC0xNTIsMTIgKzE0
Nyw5IEBAIENGRXJyb3JSZWYgUmVzb3VyY2VFcnJvcjo6Y2ZFcnJvcigpIGNvbnN0CiAgICAgICAg
ICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga0NGRXJyb3JMb2NhbGl6
ZWREZXNjcmlwdGlvbktleSwgbV9sb2NhbGl6ZWREZXNjcmlwdGlvbi5jcmVhdGVDRlN0cmluZygp
LmdldCgpKTsKIAogICAgICAgICBpZiAoIW1fZmFpbGluZ1VSTC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZmFpbGluZ1VSTFN0cmluZyA9IG1fZmFpbGlu
Z1VSTC5jcmVhdGVDRlN0cmluZygpOworICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBmYWlsaW5nVVJMU3RyaW5nID0gbV9mYWlsaW5nVVJMLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5n
KCk7CiAgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwgZmFp
bGluZ1VSTFN0cmluZ0tleSwgZmFpbGluZ1VSTFN0cmluZy5nZXQoKSk7Ci0gICAgICAgICAgICAv
LyBGSVhFTUU6IFdlIG5vcm1hbGx5IGNyZWF0ZSBhIENGVVJMIGZyb20gYSBzdHJpbmcgYnkgdXNp
bmcgVVJMOjpjcmVhdGVDRlVSTCwgd2hpY2ggaGFuZGxlcwotICAgICAgICAgICAgLy8gY2FzZXMg
Y29ycmVjdGx5IHRoYXQgQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nIGhhbmRsZXMgaW5jb3JyZWN0bHku
Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IGFkb3B0Q0YoQ0ZVUkxDcmVh
dGVXaXRoU3RyaW5nKDAsIGZhaWxpbmdVUkxTdHJpbmcuZ2V0KCksIDApKTsKLSAgICAgICAgICAg
IGlmICh1cmwpCisgICAgICAgICAgICBpZiAoUmV0YWluUHRyPENGVVJMUmVmPiB1cmwgPSBtX2Zh
aWxpbmdVUkwuY3JlYXRlQ0ZVUkwoKSkKICAgICAgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZSh1c2VySW5mby5nZXQoKSwgZmFpbGluZ1VSTEtleSwgdXJsLmdldCgpKTsKICAgICAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291
cmNlRXJyb3IuaAppbmRleCA0MWMxOTkxNGJkYmM2ZWM2MTgzOGFiOWE1YjgzOWFlYzgwZGNiM2Nh
Li5jMzFkZDQyNTFmNjdhMWNlZjZhYjQ5MjkzZTU5NDVhNzdlYWUyYjUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgKQEAg
LTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBSZXNvdXJjZUVycm9y
KGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxp
bmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCisgICAgUmVzb3VyY2VF
cnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWls
aW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQogICAgICAgICA6IFJl
c291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWRE
ZXNjcmlwdGlvbiksIG1fc3NsRXJyb3JzKDApCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCmlu
ZGV4IGY3Yzg2NGNlM2I1MDk5ZmUwMmYxNjk2OWFjZTM5N2Y2ODJlODNkYmEuLjY0MTg5MzgwMDA2
MzMzM2M3MDFkYjUzY2FjMDAxYWI1NDk5ZjcwNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQpAQCAtMTgyLDEy
ICsxODIsOSBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRXJyb3I+IGNyZWF0ZU5TRXJyb3JGcm9tUmVz
b3VyY2VFcnJvckJhc2UoY29uc3QgUmVzb3VyY2VFcnJvcgogICAgICAgICBbdXNlckluZm8uZ2V0
KCkgc2V0VmFsdWU6cmVzb3VyY2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpIGZvcktleTpO
U0xvY2FsaXplZERlc2NyaXB0aW9uS2V5XTsKIAogICAgIGlmICghcmVzb3VyY2VFcnJvci5mYWls
aW5nVVJMKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIC8vIEZJWEVNRTogV2Ugbm9ybWFsbHkgY3Jl
YXRlIGFuIE5TVVJMIGZyb20gYSBzdHJpbmcgYnkgdXNpbmcgVVJMOjpjcmVhdGVOU1VSTCwgd2hp
Y2ggaGFuZGxlcwotICAgICAgICAvLyBjYXNlcyBjb3JyZWN0bHkgdGhhdCBpbml0V2l0aFN0cmlu
ZzogaGFuZGxlcyBpbmNvcnJlY3RseS4KLSAgICAgICAgUmV0YWluUHRyPE5TVVJMPiBjb2NvYVVS
TCA9IGFkb3B0TlMoW1tOU1VSTCBhbGxvY10gaW5pdFdpdGhTdHJpbmc6cmVzb3VyY2VFcnJvci5m
YWlsaW5nVVJMKCldKTsKLSAgICAgICAgW3VzZXJJbmZvLmdldCgpIHNldFZhbHVlOnJlc291cmNl
RXJyb3IuZmFpbGluZ1VSTCgpIGZvcktleTpAIk5TRXJyb3JGYWlsaW5nVVJMU3RyaW5nS2V5Il07
Ci0gICAgICAgIGlmIChjb2NvYVVSTCkKLSAgICAgICAgICAgIFt1c2VySW5mby5nZXQoKSBzZXRW
YWx1ZTpjb2NvYVVSTC5nZXQoKSBmb3JLZXk6QCJOU0Vycm9yRmFpbGluZ1VSTEtleSJdOworICAg
ICAgICBbdXNlckluZm8uZ2V0KCkgc2V0VmFsdWU6KE5TU3RyaW5nICopcmVzb3VyY2VFcnJvci5m
YWlsaW5nVVJMKCkuc3RyaW5nKCkgZm9yS2V5OkAiTlNFcnJvckZhaWxpbmdVUkxTdHJpbmdLZXki
XTsKKyAgICAgICAgaWYgKE5TVVJMICpjb2NvYVVSTCA9IChOU1VSTCAqKXJlc291cmNlRXJyb3Iu
ZmFpbGluZ1VSTCgpKQorICAgICAgICAgICAgW3VzZXJJbmZvLmdldCgpIHNldFZhbHVlOmNvY29h
VVJMIGZvcktleTpAIk5TRXJyb3JGYWlsaW5nVVJMS2V5Il07CiAgICAgfQogCiAgICAgcmV0dXJu
IGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpyZXNvdXJjZUVycm9yLmRv
bWFpbigpIGNvZGU6cmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSB1c2VySW5mbzp1c2VySW5mby5n
ZXQoKV0pOwpAQCAtMjY2LDEwICsyNjMsMTAgQEAgdm9pZCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9y
bUxhenlJbml0KCkKICAgICBtX2RvbWFpbiA9IFttX3BsYXRmb3JtRXJyb3IuZ2V0KCkgZG9tYWlu
XTsKICAgICBtX2Vycm9yQ29kZSA9IFttX3BsYXRmb3JtRXJyb3IuZ2V0KCkgY29kZV07CiAKLSAg
ICBOU1N0cmluZyogZmFpbGluZ1VSTFN0cmluZyA9IFtbbV9wbGF0Zm9ybUVycm9yLmdldCgpIHVz
ZXJJbmZvXSB2YWx1ZUZvcktleTpAIk5TRXJyb3JGYWlsaW5nVVJMU3RyaW5nS2V5Il07Ci0gICAg
aWYgKCFmYWlsaW5nVVJMU3RyaW5nKQotICAgICAgICBmYWlsaW5nVVJMU3RyaW5nID0gW1tbbV9w
bGF0Zm9ybUVycm9yLmdldCgpIHVzZXJJbmZvXSB2YWx1ZUZvcktleTpAIk5TRXJyb3JGYWlsaW5n
VVJMS2V5Il0gYWJzb2x1dGVTdHJpbmddOwotICAgIG1fZmFpbGluZ1VSTCA9IGZhaWxpbmdVUkxT
dHJpbmc7IAorICAgIGlmIChOU1N0cmluZyogZmFpbGluZ1VSTFN0cmluZyA9IFtbbV9wbGF0Zm9y
bUVycm9yLmdldCgpIHVzZXJJbmZvXSB2YWx1ZUZvcktleTpAIk5TRXJyb3JGYWlsaW5nVVJMU3Ry
aW5nS2V5Il0pCisgICAgICAgIG1fZmFpbGluZ1VSTCA9IFVSTChVUkwoKSwgZmFpbGluZ1VSTFN0
cmluZyk7CisgICAgZWxzZQorICAgICAgICBtX2ZhaWxpbmdVUkwgPSBVUkwoKE5TVVJMICopW1tt
X3BsYXRmb3JtRXJyb3IuZ2V0KCkgdXNlckluZm9dIHZhbHVlRm9yS2V5OkAiTlNFcnJvckZhaWxp
bmdVUkxLZXkiXSk7CiAgICAgLy8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzY1NTQw
Njc+CiAgICAgbV9sb2NhbGl6ZWREZXNjcmlwdGlvbiA9IG1fZmFpbGluZ1VSTDsKICAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaAppbmRleCBlNTAyOTdhN2ZlOWQ0Yzg5NDkz
ODEwZDU2YmI4MGY4YTc1ZjRiOGViLi40NDdiMDAyNzQ4YTYzZjVhYzQwNzZhYjNkOWMzZjJhNTIz
NWZiNmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZUVycm9yLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgUmVzb3VyY2VFcnJvciA6IHB1YmxpYyBSZXNvdXJjZUVycm9yQmFzZQogewogcHVibGlj
OgotICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUs
IGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlw
dGlvbikKKyAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JD
b2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3Jp
cHRpb24pCiAgICAgICAgIDogUmVzb3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJvckNvZGUsIGZh
aWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uKQogICAgICAgICAsIG1fdGxzRXJyb3JzKDAp
CiAgICAgewpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlc291cmNlRXJy
b3IgdHJhbnNwb3J0RXJyb3IoU291cFJlcXVlc3QqLCBpbnQgc3RhdHVzQ29kZSwgY29uc3QgU3Ry
aW5nJiByZWFzb25QaHJhc2UpOwogICAgIHN0YXRpYyBSZXNvdXJjZUVycm9yIGdlbmVyaWNHRXJy
b3IoR0Vycm9yKiwgU291cFJlcXVlc3QqKTsKICAgICBzdGF0aWMgUmVzb3VyY2VFcnJvciB0bHNF
cnJvcihTb3VwUmVxdWVzdCosIHVuc2lnbmVkIHRsc0Vycm9ycywgR1Rsc0NlcnRpZmljYXRlKik7
Ci0gICAgc3RhdGljIFJlc291cmNlRXJyb3IgdGltZW91dEVycm9yKGNvbnN0IFN0cmluZyYgZmFp
bGluZ1VSTCk7CisgICAgc3RhdGljIFJlc291cmNlRXJyb3IgdGltZW91dEVycm9yKGNvbnN0IFVS
TCYgZmFpbGluZ1VSTCk7CiAgICAgc3RhdGljIFJlc291cmNlRXJyb3IgYXV0aGVudGljYXRpb25F
cnJvcihTb3VwTWVzc2FnZSopOwogCiAgICAgdW5zaWduZWQgdGxzRXJyb3JzKCkgY29uc3QgeyBy
ZXR1cm4gbV90bHNFcnJvcnM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCmluZGV4IGIyNWI1YTBiODY1
MWUxYTBjZjVmNjE5NjBkNTdhMjI0YWE1MzU4M2IuLmFkNmI4ZTcwODY3M2FlYjlhNTY1OGU0Y2Ni
OGMzNTEyOTllZmVlOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcApAQCAtMzUsMTQgKzM1LDEzIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFN0cmluZyBmYWlsaW5nVVJJKFNvdXBV
UkkqIHNvdXBVUkkpCitzdGF0aWMgVVJMIGZhaWxpbmdVUkkoU291cFVSSSogc291cFVSSSkKIHsK
ICAgICBBU1NFUlQoc291cFVSSSk7Ci0gICAgR1VuaXF1ZVB0cjxjaGFyPiB1cmkoc291cF91cmlf
dG9fc3RyaW5nKHNvdXBVUkksIEZBTFNFKSk7Ci0gICAgcmV0dXJuIHVyaS5nZXQoKTsKKyAgICBy
ZXR1cm4gVVJMKHNvdXBVUkkpOwogfQogCi1zdGF0aWMgU3RyaW5nIGZhaWxpbmdVUkkoU291cFJl
cXVlc3QqIHJlcXVlc3QpCitzdGF0aWMgVVJMIGZhaWxpbmdVUkkoU291cFJlcXVlc3QqIHJlcXVl
c3QpCiB7CiAgICAgQVNTRVJUKHJlcXVlc3QpOwogICAgIHJldHVybiBmYWlsaW5nVVJJKHNvdXBf
cmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpKTsKQEAgLTg1LDcgKzg0LDcgQEAgUmVzb3VyY2VFcnJv
ciBSZXNvdXJjZUVycm9yOjp0bHNFcnJvcihTb3VwUmVxdWVzdCogcmVxdWVzdCwgdW5zaWduZWQg
dGxzRXJyb3JzLAogICAgIHJldHVybiByZXNvdXJjZUVycm9yOwogfQogCi1SZXNvdXJjZUVycm9y
IFJlc291cmNlRXJyb3I6OnRpbWVvdXRFcnJvcihjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwpCitS
ZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OnRpbWVvdXRFcnJvcihjb25zdCBVUkwmIGZhaWxp
bmdVUkwpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IGVpdGhlciBiZSBp
bnRlZ3JhdGVkIGludG8gRXJyb3JzKEd0ay9FRkwpLmggb3IgdGhlCiAgICAgLy8gbmV0d29ya2lu
ZyBlcnJvcnMgZnJvbSB0aG9zZSBmaWxlcyBzaG91bGQgYmUgbW92ZWQgaGVyZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFu
ZGxlU291cC5jcHAKaW5kZXggOTU2ODk3YjVjOWRjZmRhM2VkZDEzMmY0ZjE3ZTIzNGRlZjI3ZDNk
Yi4uYjY3YzkwZGQ5YjRjMjk3YzA4MmUxMjA1OGExODE5NzAyYjk3YTE3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFu
ZGxlU291cC5jcHAKQEAgLTEwNTEsNyArMTA1MSw3IEBAIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4g
UmVzb3VyY2VIYW5kbGU6OnJlbGVhc2VGb3JEb3dubG9hZChSZXNvdXJjZUhhbmRsZUNsaWVudCoK
IAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6dGltZW91dEZpcmVkKCkKIHsKLSAgICBjbGllbnQoKS0+
ZGlkRmFpbCh0aGlzLCBSZXNvdXJjZUVycm9yOjp0aW1lb3V0RXJyb3IoZmlyc3RSZXF1ZXN0KCku
dXJsKCkuc3RyaW5nKCkpKTsKKyAgICBjbGllbnQoKS0+ZGlkRmFpbCh0aGlzLCBSZXNvdXJjZUVy
cm9yOjp0aW1lb3V0RXJyb3IoZmlyc3RSZXF1ZXN0KCkudXJsKCkpKTsKICAgICBjYW5jZWwoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggNGM0OGM5NGY4YjI5
MzM2YjQ0MjQxMTJkNmIyZWNiYjk2MDgzZmM1ZS4uNTc5ZjFjY2Y4NTVmMTA5MjMyOWUyNjBmZDU0
MzEyNDM1YmFhMjY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0x
MDc3LDggKzEwNzcsMTAgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKICAgICB9CiAKICAgICAvLyBOZXR3b3JrIGZhaWx1cmVzIGFyZSBh
bHJlYWR5IHJlcG9ydGVkIHRvIFdlYiBJbnNwZWN0b3IgYnkgUmVzb3VyY2VMb2FkZXIuCi0gICAg
aWYgKGVycm9yLmRvbWFpbigpID09IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwpCi0gICAgICAg
IGxvZ0NvbnNvbGVFcnJvcihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICJYTUxIdHRwUmVxdWVz
dCBjYW5ub3QgbG9hZCAiICsgZXJyb3IuZmFpbGluZ1VSTCgpICsgIi4gIiArIGVycm9yLmxvY2Fs
aXplZERlc2NyaXB0aW9uKCkpOworICAgIGlmIChlcnJvci5kb21haW4oKSA9PSBlcnJvckRvbWFp
bldlYktpdEludGVybmFsKSB7CisgICAgICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygi
WE1MSHR0cFJlcXVlc3QgY2Fubm90IGxvYWQgIiwgZXJyb3IuZmFpbGluZ1VSTCgpLnN0cmluZygp
LCAiLiAiLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKKyAgICAgICAgbG9nQ29uc29s
ZUVycm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbWVzc2FnZSk7CisgICAgfQogCiAgICAg
bV9leGNlcHRpb25Db2RlID0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb246Ok5FVFdPUktfRVJSOwog
ICAgIG5ldHdvcmtFcnJvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDdiMjQ0NTc3N2NiMjA1
NmY2Y2ZlZmUwNTdlNGVmNTg5NzAwN2FmZTYuLmI5ZGM1MTFjMzIyNDk4Y2IzYzJlM2RhYzQwOGYz
Y2ViYThhZTFlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTg1MSwxMiArODUxLDEyIEBAIFJl
c291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNlbGxlZEVycm9yKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzCiB7CiAgICAgLy8gRklYTUU6IE5lZWQgQ2hpY2tlbkNhdCB0
byBpbmNsdWRlIENGTmV0d29yay9DRlVSTEVycm9yLmggdG8gZ2V0IHRoZXNlIHZhbHVlcwogICAg
IC8vIEFsdGVybmF0aXZlbHksIHdlIGNvdWxkIGNyZWF0ZSBvdXIgb3duIGVycm9yIGRvbWFpbi9j
b2Rlcy4KLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViVVJMRXJyb3JEb21haW4p
LCAtOTk5LCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCBTdHJpbmcoIkNhbmNlbGxlZCIpKTsKKyAg
ICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViVVJMRXJyb3JEb21haW4pLCAtOTk5LCBy
ZXF1ZXN0LnVybCgpLCBTdHJpbmcoIkNhbmNlbGxlZCIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JE
b21haW4pLCBXZWJLaXRFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0LCByZXF1ZXN0LnVybCgp
LnN0cmluZygpLCBXRUJfVUlfU1RSSU5HKCJOb3QgYWxsb3dlZCB0byB1c2UgcmVzdHJpY3RlZCBu
ZXR3b3JrIHBvcnQiLCAiV2ViS2l0RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCBkZXNjcmlw
dGlvbiIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21h
aW4pLCBXZWJLaXRFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0LCByZXF1ZXN0LnVybCgpLCBX
RUJfVUlfU1RSSU5HKCJOb3QgYWxsb3dlZCB0byB1c2UgcmVzdHJpY3RlZCBuZXR3b3JrIHBvcnQi
LCAiV2ViS2l0RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCBkZXNjcmlwdGlvbiIpKTsKIH0K
IAogUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVudDo6YmxvY2tlZEJ5Q29udGVudEJs
b2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCkBAIC04NjYsMjcgKzg2
NiwyNyBAQCBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpibG9ja2VkQnlDb250
ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUgogCiBSZXNvdXJjZUVycm9yIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0cmluZyhXZWJLaXRFcnJvckRv
bWFpbiksIFdlYktpdEVycm9yQ2Fubm90U2hvd1VSTCwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwg
V0VCX1VJX1NUUklORygiVGhlIFVSTCBjYW5ceEUyXHg4MFx4OTl0IGJlIHNob3duIiwgIldlYktp
dEVycm9yQ2Fubm90U2hvd1VSTCBkZXNjcmlwdGlvbiIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VF
cnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBXZWJLaXRFcnJvckNhbm5vdFNob3dVUkws
IHJlcXVlc3QudXJsKCksIFdFQl9VSV9TVFJJTkcoIlRoZSBVUkwgY2FuXHhFMlx4ODBceDk5dCBi
ZSBzaG93biIsICJXZWJLaXRFcnJvckNhbm5vdFNob3dVUkwgZGVzY3JpcHRpb24iKSk7CiB9CiAK
IFJlc291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmludGVycnVwdGVkRm9yUG9saWN5
Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVy
biBSZXNvdXJjZUVycm9yKFN0cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIFdlYktpdEVycm9yRnJh
bWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwg
V0VCX1VJX1NUUklORygiRnJhbWUgbG9hZCBpbnRlcnJ1cHRlZCIsICJXZWJLaXRFcnJvckZyYW1l
TG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UgZGVzY3JpcHRpb24iKSk7CisgICAgcmV0dXJu
IFJlc291cmNlRXJyb3IoU3RyaW5nKFdlYktpdEVycm9yRG9tYWluKSwgV2ViS2l0RXJyb3JGcmFt
ZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCByZXF1ZXN0LnVybCgpLCBXRUJfVUlfU1RS
SU5HKCJGcmFtZSBsb2FkIGludGVycnVwdGVkIiwgIldlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJy
dXB0ZWRCeVBvbGljeUNoYW5nZSBkZXNjcmlwdGlvbiIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoU3RyaW5n
KCksIFdlYktpdEVycm9yQ2Fubm90U2hvd01JTUVUeXBlLCByZXNwb25zZS51cmwoKS5zdHJpbmco
KSwgV0VCX1VJX1NUUklORygiQ29udGVudCB3aXRoIHNwZWNpZmllZCBNSU1FIHR5cGUgY2FuXHhF
Mlx4ODBceDk5dCBiZSBzaG93biIsICJXZWJLaXRFcnJvckNhbm5vdFNob3dNSU1FVHlwZSBkZXNj
cmlwdGlvbiIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoKSwgV2ViS2l0RXJy
b3JDYW5ub3RTaG93TUlNRVR5cGUsIHJlc3BvbnNlLnVybCgpLCBXRUJfVUlfU1RSSU5HKCJDb250
ZW50IHdpdGggc3BlY2lmaWVkIE1JTUUgdHlwZSBjYW5ceEUyXHg4MFx4OTl0IGJlIHNob3duIiwg
IldlYktpdEVycm9yQ2Fubm90U2hvd01JTUVUeXBlIGRlc2NyaXB0aW9uIikpOwogfQogCiBSZXNv
dXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoU3RyaW5nKFdlYlVSTEVycm9yRG9tYWluKSwgLTExMDAsIHJlc3BvbnNlLnVybCgpLnN0cmlu
ZygpLCBTdHJpbmcoIkZpbGUgZG9lcyBub3QgZXhpc3QuIikpOworICAgIHJldHVybiBSZXNvdXJj
ZUVycm9yKFN0cmluZyhXZWJVUkxFcnJvckRvbWFpbiksIC0xMTAwLCByZXNwb25zZS51cmwoKSwg
U3RyaW5nKCJGaWxlIGRvZXMgbm90IGV4aXN0LiIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBXZWJG
cmFtZUxvYWRlckNsaWVudDo6cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmco
V2ViS2l0RXJyb3JEb21haW4pLCBXZWJLaXRFcnJvclBsdWdJbldpbGxIYW5kbGVMb2FkLCByZXNw
b25zZS51cmwoKS5zdHJpbmcoKSwgV0VCX1VJX1NUUklORygiUGx1Zy1pbiBoYW5kbGVkIGxvYWQi
LCAiV2ViS2l0RXJyb3JQbHVnSW5XaWxsSGFuZGxlTG9hZCBkZXNjcmlwdGlvbiIpKTsKKyAgICBy
ZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBXZWJLaXRFcnJv
clBsdWdJbldpbGxIYW5kbGVMb2FkLCByZXNwb25zZS51cmwoKSwgV0VCX1VJX1NUUklORygiUGx1
Zy1pbiBoYW5kbGVkIGxvYWQiLCAiV2ViS2l0RXJyb3JQbHVnSW5XaWxsSGFuZGxlTG9hZCBkZXNj
cmlwdGlvbiIpKTsKIH0KIAogYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRmFsbEJh
Y2soY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCkBAIC0xMTY2LDcgKzExNjYsNyBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0
IFBsdWdpblZpZXcqIHBsdWdpbgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgfQogCi0gICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0cmluZyhXZWJLaXRFcnJv
ckRvbWFpbiksIGVycm9yQ29kZSwgcGx1Z2luVmlldy0+dXJsKCkuc3RyaW5nKCksIFN0cmluZygp
KTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IoU3RyaW5nKFdlYktpdEVycm9yRG9t
YWluKSwgZXJyb3JDb2RlLCBwbHVnaW5WaWV3LT51cmwoKSwgU3RyaW5nKCkpOwogICAgIENPTVB0
cjxJV2ViRXJyb3I+IGVycm9yKEFkb3B0Q09NLCBXZWJFcnJvcjo6Y3JlYXRlSW5zdGFuY2UocmVz
b3VyY2VFcnJvciwgdXNlckluZm9CYWcuZ2V0KCkpKTsKICAgICAgCiAgICAgcmVzb3VyY2VMb2Fk
RGVsZWdhdGUtPnBsdWdJbkZhaWxlZFdpdGhFcnJvcih3ZWJWaWV3LCBlcnJvci5nZXQoKSwgZ2V0
V2ViRGF0YVNvdXJjZShmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkpOwpAQCAtMTI0
NCw3ICsxMjQ0LDcgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
cmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHAKIAogICAgIENPTVB0cjxDRkRp
Y3Rpb25hcnlQcm9wZXJ0eUJhZz4gdXNlckluZm9CYWcgPSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJh
Zzo6Y3JlYXRlSW5zdGFuY2UoKTsKIAotICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihT
dHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBXZWJLaXRFcnJvckphdmFVbmF2YWlsYWJsZSwgU3Ry
aW5nKCksIFdFQl9VSV9TVFJJTkcoIkphdmEgaXMgdW5hdmFpbGFibGUiLCAiV2ViS2l0RXJyb3JK
YXZhVW5hdmFpbGFibGUgZGVzY3JpcHRpb24iKSk7CisgICAgUmVzb3VyY2VFcnJvciByZXNvdXJj
ZUVycm9yKFN0cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIFdlYktpdEVycm9ySmF2YVVuYXZhaWxh
YmxlLCBVUkwoKSwgV0VCX1VJX1NUUklORygiSmF2YSBpcyB1bmF2YWlsYWJsZSIsICJXZWJLaXRF
cnJvckphdmFVbmF2YWlsYWJsZSBkZXNjcmlwdGlvbiIpKTsKICAgICBDT01QdHI8SVdlYkVycm9y
PiBlcnJvcihBZG9wdENPTSwgV2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKHJlc291cmNlRXJyb3Is
IHVzZXJJbmZvQmFnLmdldCgpKSk7CiAKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShtX3dl
YkZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQu
Y3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKaW5kZXggNDYxNWQ3
Nzg0OTBiNzgwYTE3YjU1MWIzZjVhMTRmMzdlYzk2MzI2Zi4uMTVmMTE5Nzc4NzhiOTUwYjdiZTQw
ZjdjY2FiM2IyNWNjOTNlYWEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRG93
bmxvYWRDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRDRk5ldC5j
cHAKQEAgLTMwNyw3ICszMDcsNyBAQCBIUkVTVUxUIFdlYkRvd25sb2FkOjpjYW5jZWxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShfSW5fb3B0XyBJV2ViVVJMQXV0aGVudGljYXRpbwogICAgIH0KIAog
ICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIGEgVVJMIG9yIGRlc2NyaXB0aW9uIGZvciB0aGlzIGVy
cm9yIGNvZGU/Ci0gICAgUmVzb3VyY2VFcnJvciBlcnJvcihTdHJpbmcoV2ViVVJMRXJyb3JEb21h
aW4pLCBXZWJVUkxFcnJvclVzZXJDYW5jZWxsZWRBdXRoZW50aWNhdGlvbiwgIiIsICIiKTsKKyAg
ICBSZXNvdXJjZUVycm9yIGVycm9yKFN0cmluZyhXZWJVUkxFcnJvckRvbWFpbiksIFdlYlVSTEVy
cm9yVXNlckNhbmNlbGxlZEF1dGhlbnRpY2F0aW9uLCBVUkwoKSwgIiIpOwogICAgIENPTVB0cjxX
ZWJFcnJvcj4gd2ViRXJyb3IoQWRvcHRDT00sIFdlYkVycm9yOjpjcmVhdGVJbnN0YW5jZShlcnJv
cikpOwogICAgIG1fZGVsZWdhdGUtPmRpZEZhaWxXaXRoRXJyb3IodGhpcywgd2ViRXJyb3IuZ2V0
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJFcnJvci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJFcnJvci5jcHAKaW5kZXggZWY4ZmFhM2FhNTYxN2YxYzE0ZDRmOGU3
YTQxZTI3MzMzMjRmY2JkMC4uMTcwYzZjOGVmZTU5MGIxY2UwZWVlNzk2MmYyMzEwZGNkNTMyYjQ2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRXJyb3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkVycm9yLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIFVMT05HIFdlYkVy
cm9yOjpSZWxlYXNlKCkKIAogSFJFU1VMVCBXZWJFcnJvcjo6aW5pdChfSW5fIEJTVFIgZG9tYWlu
LCBpbnQgY29kZSwgX0luXyBCU1RSIHVybCkKIHsKLSAgICBtX2Vycm9yID0gUmVzb3VyY2VFcnJv
cihTdHJpbmcoZG9tYWluLCBTeXNTdHJpbmdMZW4oZG9tYWluKSksIGNvZGUsIFN0cmluZyh1cmws
IFN5c1N0cmluZ0xlbih1cmwpKSwgU3RyaW5nKCkpOworICAgIG1fZXJyb3IgPSBSZXNvdXJjZUVy
cm9yKFN0cmluZyhkb21haW4sIFN5c1N0cmluZ0xlbihkb21haW4pKSwgY29kZSwgVVJMKFVSTCgp
LCBTdHJpbmcodXJsLCBTeXNTdHJpbmdMZW4odXJsKSkpLCBTdHJpbmcoKSk7CiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL2VmbC9Eb3dubG9hZFNvdXBFcnJvcnNFZmwuY3BwIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3dubG9hZFNvdXBFcnJvcnNFZmwuY3BwCmlu
ZGV4IDk0NmYzNTE1NDliZTdiOTZkZDhlN2M0NTg3MmE0N2ZiMWRmZmQ1MmEuLmFjMDBkNTFiMzcx
Mzg5MjFlNzc2YjFhYzU4YTBkNDU1NTE2YjA4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9lZmwvRG93bmxvYWRTb3VwRXJyb3JzRWZsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvZWZsL0Rvd25sb2Fk
U291cEVycm9yc0VmbC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZXNvdXJjZUVycm9yIHBsYXRmb3JtRG93bmxv
YWROZXR3b3JrRXJyb3IoaW50IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBmYWlsaW5nVVJMLCBj
b25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQorUmVzb3VyY2VFcnJvciBwbGF0Zm9y
bURvd25sb2FkTmV0d29ya0Vycm9yKGludCBlcnJvckNvZGUsIGNvbnN0IFVSTCYgZmFpbGluZ1VS
TCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbikKIHsKICAgICByZXR1cm4gZG93
bmxvYWROZXR3b3JrRXJyb3IoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBlcnJv
ckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvZ3RrL0Rvd25sb2FkU291
cEVycm9yc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
Z3RrL0Rvd25sb2FkU291cEVycm9yc0d0ay5jcHAKaW5kZXggMGQzZjlkM2VkZDE1ZGJhYjI3Mjg0
YmRmZmQ4ZDE3NmU4NDIyM2U5My4uYmEyZTdiNDU2YTQxNWYxN2Q1OTY1MzAwMWJiZGZhYzBiZTI4
MDM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L2d0ay9Eb3dubG9hZFNvdXBFcnJvcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9ndGsvRG93bmxvYWRTb3VwRXJyb3JzR3RrLmNwcApAQCAtMzMs
NyArMzMsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLVJlc291cmNlRXJyb3IgcGxhdGZvcm1Eb3dubG9hZE5ldHdvcmtFcnJvcihpbnQgZXJyb3JD
b2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVz
Y3JpcHRpb24pCitSZXNvdXJjZUVycm9yIHBsYXRmb3JtRG93bmxvYWROZXR3b3JrRXJyb3IoaW50
IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXpl
ZERlc2NyaXB0aW9uKQogewogICAgIHJldHVybiBkb3dubG9hZE5ldHdvcmtFcnJvcihSZXNvdXJj
ZUVycm9yKGVycm9yRG9tYWluRG93bmxvYWQsIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9jYWxp
emVkRGVzY3JpcHRpb24pKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCmluZGV4IDU2NTVk
ZmM0YmI2ZmVlMjMzMDliMzBiNGZkZGNkOTg0YmU5NmVmODMuLmU0OTc2NmJkNTljMTg2YTkyMTdi
MjNhY2E4NjdhMzA3ZjE1NjNkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcApAQCAtODIs
NyArODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZG93bmxvYWQtPmRpZFJlY2VpdmVSZXNwb25z
ZShyZXNwb25zZSk7CiAKICAgICAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPj0g
NDAwKSB7Ci0gICAgICAgICAgICBkb3dubG9hZEZhaWxlZChwbGF0Zm9ybURvd25sb2FkTmV0d29y
a0Vycm9yKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlc3BvbnNlLnVybCgpLnN0cmluZygp
LCByZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpKSk7CisgICAgICAgICAgICBkb3dubG9hZEZhaWxl
ZChwbGF0Zm9ybURvd25sb2FkTmV0d29ya0Vycm9yKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCks
IHJlc3BvbnNlLnVybCgpLCByZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwRXJyb3JzLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXBFcnJvcnMuaApp
bmRleCA4OWUyM2UwODM3ZjBjNTA4MWRiYjMxYmFkNzZmOGU5YTY0OGZkYzQxLi5mZjM5N2VjMjJm
NzE3M2NhYTI3ZmM3NGRhZWRjYjQzM2Y5NGNhMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXBFcnJvcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNv
dXBFcnJvcnMuaApAQCAtMjcsMTEgKzI3LDEyIEBACiAjZGVmaW5lIERvd25sb2FkU291cEVycm9y
c19oCiAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLVdlYkNvcmU6OlJlc291cmNlRXJyb3IgcGxhdGZvcm1Eb3dubG9hZE5ldHdv
cmtFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0
cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pOworV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBwbGF0
Zm9ybURvd25sb2FkTmV0d29ya0Vycm9yKGludCBlcnJvckNvZGUsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbik7CiBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIHBsYXRmb3JtRG93bmxvYWREZXN0aW5hdGlvbkVycm9yKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9z
b3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKaW5kZXggNjcwMTY0ZjY4OTNiMjUz
ZjA3OGZhMjljM2ExNDg0MTg5NDMwMjkwOC4uOGE4NzcwMjg4ZGQ4ZTYwMWNiNTc5YjQ2OWVjYmRk
ZjE4YTVjMTYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIEFy
Z3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmVuY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudEVu
Y29kZXImIGVuY29kZXIsCiAKICAgICBlbmNvZGVyIDw8IHJlc291cmNlRXJyb3IuZG9tYWluKCk7
CiAgICAgZW5jb2RlciA8PCByZXNvdXJjZUVycm9yLmVycm9yQ29kZSgpOwotICAgIGVuY29kZXIg
PDwgcmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCk7CisgICAgZW5jb2RlciA8PCByZXNvdXJjZUVy
cm9yLmZhaWxpbmdVUkwoKS5zdHJpbmcoKTsKICAgICBlbmNvZGVyIDw8IHJlc291cmNlRXJyb3Iu
bG9jYWxpemVkRGVzY3JpcHRpb24oKTsKICAgICBlbmNvZGVyIDw8IHJlc291cmNlRXJyb3IuaXND
YW5jZWxsYXRpb24oKTsKICAgICBlbmNvZGVyIDw8IHJlc291cmNlRXJyb3IuaXNUaW1lb3V0KCk7
CkBAIC0yMzUsNyArMjM1LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+Ojpk
ZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaXNUaW1lb3V0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmVz
b3VyY2VFcnJvciA9IFJlc291cmNlRXJyb3IoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkws
IGxvY2FsaXplZERlc2NyaXB0aW9uKTsKKyAgICByZXNvdXJjZUVycm9yID0gUmVzb3VyY2VFcnJv
cihkb21haW4sIGVycm9yQ29kZSwgVVJMKFVSTCgpLCBmYWlsaW5nVVJMKSwgbG9jYWxpemVkRGVz
Y3JpcHRpb24pOwogICAgIHJlc291cmNlRXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24oaXNDYW5jZWxs
YXRpb24pOwogICAgIHJlc291cmNlRXJyb3Iuc2V0SXNUaW1lb3V0KGlzVGltZW91dCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdExvYWRlckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRMb2FkZXJD
bGllbnQuY3BwCmluZGV4IGU0NmZhMWM2ZDM2ODk5NzBhZDI4YzEwNjJlOTNjZDcyY2E2ZmY4NGMu
LmY1MmM4Yzc4ZWNkYjI2ZjUxOTNiMmNhODJmNzc3OGEzODFiYTU5MDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdExvYWRlckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TG9hZGVyQ2xpZW50LmNw
cApAQCAtNjIsMTAgKzYyLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIEdVbmlxdWVQdHI8R0Vycm9y
PiBlcnJvcihnX2Vycm9yX25ld19saXRlcmFsKGdfcXVhcmtfZnJvbV9zdHJpbmcocmVzb3VyY2VF
cnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpKSwKICAgICAgICAgICAgIHRvV2ViS2l0RXJyb3Io
cmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSksIHJlc291cmNlRXJyb3IubG9jYWxpemVkRGVzY3Jp
cHRpb24oKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgIGlmIChyZXNvdXJjZUVycm9yLnRsc0Vy
cm9ycygpKSB7Ci0gICAgICAgICAgICB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZFdpdGhUTFNFcnJv
cnMobV93ZWJWaWV3LCByZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKS51dGY4KCkuZGF0YSgpLCBl
cnJvci5nZXQoKSwKKyAgICAgICAgICAgIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkV2l0aFRMU0Vy
cm9ycyhtX3dlYlZpZXcsIHJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCksIGVycm9yLmdldCgpLAogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdUbHND
ZXJ0aWZpY2F0ZUZsYWdzPihyZXNvdXJjZUVycm9yLnRsc0Vycm9ycygpKSwgcmVzb3VyY2VFcnJv
ci5jZXJ0aWZpY2F0ZSgpKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB3ZWJraXRXZWJW
aWV3TG9hZEZhaWxlZChtX3dlYlZpZXcsIFdFQktJVF9MT0FEX1NUQVJURUQsIHJlc291cmNlRXJy
b3IuZmFpbGluZ1VSTCgpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmdldCgpKTsKKyAgICAgICAgICAg
IHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKG1fd2ViVmlldywgV0VCS0lUX0xPQURfU1RBUlRFRCwg
cmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgZXJyb3Iu
Z2V0KCkpOwogICAgIH0KIAogICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYlBhZ2VQ
cm94eSYsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVj
dCogLyogdXNlckRhdGEgKi8pIG92ZXJyaWRlCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIEdVbmlxdWVQdHI8R0Vycm9yPiBlcnJvcihnX2Vy
cm9yX25ld19saXRlcmFsKGdfcXVhcmtfZnJvbV9zdHJpbmcocmVzb3VyY2VFcnJvci5kb21haW4o
KS51dGY4KCkuZGF0YSgpKSwKICAgICAgICAgICAgIHRvV2ViS2l0RXJyb3IocmVzb3VyY2VFcnJv
ci5lcnJvckNvZGUoKSksIHJlc291cmNlRXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4
KCkuZGF0YSgpKSk7Ci0gICAgICAgIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKG1fd2ViVmlldywg
V0VCS0lUX0xPQURfQ09NTUlUVEVELCByZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKS51dGY4KCku
ZGF0YSgpLCBlcnJvci5nZXQoKSk7CisgICAgICAgIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKG1f
d2ViVmlldywgV0VCS0lUX0xPQURfQ09NTUlUVEVELCByZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBlcnJvci5nZXQoKSk7CiAgICAgfQogCiAgICAgdm9p
ZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV2ViUGFnZVByb3h5JiwgV2ViRnJh
bWVQcm94eSYsIEFQSTo6T2JqZWN0KiAvKiB1c2VyRGF0YSAqLykgb3ZlcnJpZGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdC5jcHAKaW5kZXggOGM5MTc0OWQxZWY2YWY0MGFhMTI0MDA2YTQzOTM2Nzg0NzljNzgx
ZC4uODcyYTU2NDYxMjBjYjcwNDQ4NWU2YmI1ODE2OTliMGQwNzJiMGJjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdC5jcHAKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIHdlYmtpdF91cmlfc2NoZW1lX3Jl
cXVlc3RfZmluaXNoX2Vycm9yKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QsIEdFcgog
ICAgICAgICByZXR1cm47CiAKICAgICBwcml2LT5zdHJlYW0gPSBudWxscHRyOwotICAgIFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJvci0+
ZG9tYWluKSwgdG9XZWJDb3JlRXJyb3IoZXJyb3ItPmNvZGUpLCBwcml2LT51cmkuZGF0YSgpLCBT
dHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciByZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCB0b1dl
YkNvcmVFcnJvcihlcnJvci0+Y29kZSksIFdlYkNvcmU6OlVSTChwcml2LT5zb3VwVVJJLmdldCgp
KSwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpOwogICAgIHByaXYtPndlYlJlcXVl
c3RNYW5hZ2VyLT5kaWRGYWlsV2l0aEVycm9yKHByaXYtPnJlcXVlc3RJRCwgcmVzb3VyY2VFcnJv
cik7CiAgICAgd2Via2l0V2ViQ29udGV4dERpZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChw
cml2LT53ZWJDb250ZXh0LCBwcml2LT5yZXF1ZXN0SUQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRXJyb3JzRWZsLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVycm9yc0Vm
bC5jcHAKaW5kZXggZmNhNzI4MmE4MTExMTBiNTU0ZmMzZDhhYWY5YTY5ZDIyMTYwNWJlMy4uYjFi
OTdkODY0OTA5ZDFiZjdkZGU0NzlkOWFjN2E3MmRlZjU3YzMzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRXJyb3JzRWZsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFcnJv
cnNFZmwuY3BwCkBAIC03OSw3ICs3OSw3IEBAIFJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRs
ZUxvYWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIAogV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogewot
ICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdEVycm9yRG9tYWluKCks
IGtXS0Vycm9ySW50ZXJuYWwsIHVybC5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBl
cnJvciIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihBUEk6OkVycm9yOjp3ZWJLaXRFcnJv
ckRvbWFpbigpLCBrV0tFcnJvckludGVybmFsLCB1cmwsIEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwg
ZXJyb3IiKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRXJyb3JzR3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVycm9yc0d0
ay5jcHAKaW5kZXggNzgwYzEwMGQ3M2QxYWYwMjRhMzc5ZjkzMDA2OWY5YThlNzAwNWQ1Yi4uZTlk
MWQ0YzJiNzQ0YzdhMzY1OTZmOWRjNDkyMmZkMjY0ODJmN2Y4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRXJyb3JzR3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFcnJv
cnNHdGsuY3BwCkBAIC04Miw3ICs4Miw3IEBAIFJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRs
ZUxvYWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIAogV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogewot
ICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdEVycm9yRG9tYWluKCks
IGtXS0Vycm9ySW50ZXJuYWwsIHVybC5zdHJpbmcoKSwgXygiSW50ZXJuYWwgZXJyb3IiKSk7Cisg
ICAgcmV0dXJuIFJlc291cmNlRXJyb3IoQVBJOjpFcnJvcjo6d2ViS2l0RXJyb3JEb21haW4oKSwg
a1dLRXJyb3JJbnRlcm5hbCwgdXJsLCBfKCJJbnRlcm5hbCBlcnJvciIpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>