<?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>62810</bug_id>
          
          <creation_ts>2011-06-16 13:26:14 -0700</creation_ts>
          <short_desc>Web Inspector: Network panel does not show main resource content for iframes deleted from the document</short_desc>
          <delta_ts>2011-06-17 13:00:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>422161</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-06-16 13:26:14 -0700</bug_when>
    <thetext>Network panel does not show main resource content for iframes deleted from the document.

chromium bug: https://code.google.com/p/chromium/issues/detail?id=82899

The following change includes InspectorPageAgent refactoring exposing some of the content decoding methods to InspectorResourceAgent.
Note that this refactoring will be needed for fixing bugs related to loading the same url in different context (e.g. loading the same url as an image and as a stylesheet).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422171</commentid>
    <comment_count>1</comment_count>
      <attachid>97484</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-06-16 13:33:01 -0700</bug_when>
    <thetext>Created attachment 97484
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422195</commentid>
    <comment_count>2</comment_count>
      <attachid>97484</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-06-16 14:01:04 -0700</bug_when>
    <thetext>Comment on attachment 97484
patch

Attachment 97484 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/8874304</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422506</commentid>
    <comment_count>3</comment_count>
      <attachid>97484</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-06-17 02:32:04 -0700</bug_when>
    <thetext>Comment on attachment 97484
patch

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

The resource buffer extraction changes look sane in general.

&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:156
&gt; +    return InspectorPageAgent::sharedBufferContent(buffer, textEncodingName, withBase64Encode, result);

optional: You might go without the class qualification here and below. Do we have a determined rule for this in the guidelines?

&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:159
&gt; +bool InspectorPageAgent::sharedBufferContent(PassRefPtr&lt;SharedBuffer&gt; buffer, const String&amp; textEncodingName, bool withBase64Encode, String* result)

For static members, we add the &quot;// static&quot; comment on the preceding line

&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:174
&gt; +void InspectorPageAgent::resourceContent(ErrorString* errorString, Frame* frame, const KURL&amp; url, bool base64Encode, String* result)

Please add // static above - I must have missed it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422514</commentid>
    <comment_count>4</comment_count>
      <attachid>97484</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-06-17 02:58:29 -0700</bug_when>
    <thetext>Comment on attachment 97484
patch

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

&gt; LayoutTests/http/tests/inspector/network/network-iframe-load-and-delete.html:12
&gt; +    iframe.addEventListener(&apos;load&apos;, iframeLoaded);

iframe.onload = iframeLoaded;

&gt; LayoutTests/http/tests/inspector/network/network-iframe-load-and-delete.html:18
&gt; +    iframe.removeEventListener(&apos;load&apos;, iframeLoaded);

No need to remove the listener.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422530</commentid>
    <comment_count>5</comment_count>
      <attachid>97572</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-06-17 03:24:45 -0700</bug_when>
    <thetext>Created attachment 97572
patch with build fixes + comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422532</commentid>
    <comment_count>6</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-06-17 03:26:32 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 97484 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=97484&amp;action=review
&gt; 
&gt; The resource buffer extraction changes look sane in general.
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorPageAgent.cpp:156
&gt; &gt; +    return InspectorPageAgent::sharedBufferContent(buffer, textEncodingName, withBase64Encode, result);
&gt; 
&gt; optional: You might go without the class qualification here and below. Do we have a determined rule for this in the guidelines?

According to what I see in MainResourceLoader I removed class qualification for InspectorPageAgent::resourceContent() call. This one, however, is called from file static method, so class qualification could not be omitted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422543</commentid>
    <comment_count>7</comment_count>
      <attachid>97572</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-06-17 03:46:44 -0700</bug_when>
    <thetext>Comment on attachment 97572
patch with build fixes + comments addressed

Attachment 97572 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/8876564</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422572</commentid>
    <comment_count>8</comment_count>
      <attachid>97586</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-06-17 05:18:20 -0700</bug_when>
    <thetext>Created attachment 97586
build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422580</commentid>
    <comment_count>9</comment_count>
      <attachid>97586</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-06-17 05:56:38 -0700</bug_when>
    <thetext>Comment on attachment 97586
build fixes

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

&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:160
&gt; +bool InspectorPageAgent::sharedBufferContent(PassRefPtr&lt;SharedBuffer&gt; buffer, const String&amp; textEncodingName, bool withBase64Encode, String* result)

Consider renaming to non-getter name (fetchSharedBufferConnect).

&gt; Source/WebCore/inspector/NetworkResourcesData.h:72
&gt; +        InspectorPageAgent::ResourceType type() const { return m_type; }

I&apos;d try not to increase the amount of network-&gt;page dependencies. Can we keep them separate?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422842</commentid>
    <comment_count>10</comment_count>
      <attachid>97586</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-17 13:00:45 -0700</bug_when>
    <thetext>Comment on attachment 97586
build fixes

Clearing flags on attachment: 97586

Committed r89163: &lt;http://trac.webkit.org/changeset/89163&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422843</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-17 13:00:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97484</attachid>
            <date>2011-06-16 13:33:01 -0700</date>
            <delta_ts>2011-06-17 03:24:32 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug-62810-20110617003257.patch</filename>
            <type>text/plain</type>
            <size>35448</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODkwNDkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwYmE4MDY3YWVjMjFjMTA3ZjdhM2Vj
NzYzNTQ5MmI1MWJhZmNlNTZjLi5mMzIzYzI5YjM5Y2EwODJiZGM2M2Y1NTA0NzE0ZjgwYjQxZWI0
ZTUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUgQEAKIDIwMTEtMDYtMTYgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTmV0d29yayBwYW5lbCBkb2VzIG5vdCBzaG93
IG1haW4gcmVzb3VyY2UgY29udGVudCBmb3IgaWZyYW1lcyBkZWxldGVkIGZyb20gdGhlIGRvY3Vt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjgx
MAorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWlmcmFt
ZS1sb2FkLWFuZC1kZWxldGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstaWZyYW1lLWxvYWQtYW5kLWRlbGV0ZS5odG1s
OiBBZGRlZC4KKworMjAxMS0wNi0xNiAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVt
Lm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IE5ldHdvcmsgcGFuZWwgc2hvd3MgaW5jb3JyZWN0IHF1ZXJ5IHBhcmFtZXRl
cnMgd2hlbiB1cmwgaGFzIGZyYWdtZW50LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWlmcmFtZS1sb2FkLWFuZC1kZWxldGUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLWlmcmFtZS1sb2FkLWFuZC1kZWxldGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiMWZi
OWVjNzYwNDRiNDhjY2EyMzM3ODJiZWIyYWQyM2UwY2EzZDIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstaWZyYW1lLWxv
YWQtYW5kLWRlbGV0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDM3OiBEb25lLgorVGVzdHMgdGhhdCBpZiBpZnJhbWUgaXMgbG9hZGVkIGFuZCB0
aGVuIGRlbGV0ZWQsIGluc3BlY3RvciBjb3VsZCBzdGlsbCBzaG93IGl0cyBjb250ZW50LiBOb3Rl
IHRoYXQgaWYgaWZyYW1lLnNyYyBpcyBjaGFuZ2VkIHRvICJqYXZhc2NyaXB0OicuLi5zb21lIGh0
bWwuLi4nIiBhZnRlciBsb2FkaW5nLCB0aGVuIHdlIGhhdmUgZGlmZmVyZW50IGNvZGVwYXRoLCBo
ZW5jZSB0d28gdGVzdHM7CisKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29y
ay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwCityZXNvdXJjZS50eXBlOiAwCityZXNvdXJjZS5jb250
ZW50IGJlZm9yZSByZXF1ZXN0aW5nIGNvbnRlbnQ6IHVuZGVmaW5lZAorcmVzb3VyY2UuY29udGVu
dCBhZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6IEhlbGxvIHdvcmxkCitodHRwOi8vMTI3LjAuMC4x
OjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocAorcmVzb3VyY2Uu
dHlwZTogMAorcmVzb3VyY2UuY29udGVudCBiZWZvcmUgcmVxdWVzdGluZyBjb250ZW50OiB1bmRl
ZmluZWQKK3Jlc291cmNlLmNvbnRlbnQgYWZ0ZXIgcmVxdWVzdGluZyBjb250ZW50OiBIZWxsbyB3
b3JsZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL25ldHdvcmstaWZyYW1lLWxvYWQtYW5kLWRlbGV0ZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWlmcmFtZS1sb2FkLWFuZC1kZWxldGUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45MjBhNzAxNTVkZDdiMjg2OTFkNGIxNmU1NDY5ZDJiM2QwOTc0OWJh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9uZXR3b3JrLWlmcmFtZS1sb2FkLWFuZC1kZWxldGUuaHRtbApAQCAtMCwwICsxLDgzIEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9uZXR3b3JrLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD4KK3ZhciBpZnJhbWU7CisKK2Z1bmN0aW9uIGxvYWRJZnJhbWUoKQoreworICAgIGlmcmFtZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQoaWZyYW1lKTsKKyAgICBpZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGlm
cmFtZUxvYWRlZCk7CisgICAgaWZyYW1lLnNyYyA9ICJyZXNvdXJjZXMvcmVzb3VyY2UucGhwIjsK
K30KKworZnVuY3Rpb24gaWZyYW1lTG9hZGVkKCkKK3sKKyAgICBpZnJhbWUucmVtb3ZlRXZlbnRM
aXN0ZW5lcignbG9hZCcsIGlmcmFtZUxvYWRlZCk7CisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVD
aGlsZChpZnJhbWUpOworCisgICAgbG9hZElmcmFtZUFuZENoYW5nZVNyY0FmdGVyTG9hZCgpOwor
fQorCitmdW5jdGlvbiBsb2FkSWZyYW1lQW5kQ2hhbmdlU3JjQWZ0ZXJMb2FkKCkKK3sKKyAgICBp
ZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7CisgICAgaWZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoJ2xv
YWQnLCBpZnJhbWVMb2FkZWRDaGFuZ2VTcmMpOworICAgIGlmcmFtZS5zcmMgPSAicmVzb3VyY2Vz
L3Jlc291cmNlLnBocCI7Cit9CisKK2Z1bmN0aW9uIGlmcmFtZUxvYWRlZENoYW5nZVNyYygpCit7
CisgICAgaWZyYW1lLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBpZnJhbWVMb2FkZWRDaGFu
Z2VTcmMpOworICAgIGlmcmFtZS5zcmMgPSAiamF2YXNjcmlwdDonPGh0bWw+PC9odG1sPiciOwor
ICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaWZyYW1lKTsKKyAgICBjb25zb2xlLmxvZygi
RG9uZS4iKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRT
bmlmZmVyKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUsICJhZGRNZXNzYWdlIiwg
c3RlcDIpOworICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImxvYWRJZnJhbWUoKSIp
OworCisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlMSA9
IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVs
cy5uZXR3b3JrLnJlc291cmNlcy5sZW5ndGggLSAzXTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQocmVzb3VyY2UxLnVybCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJyZXNvdXJjZS50eXBlOiAiICsgcmVzb3VyY2UxLnR5cGUpOworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UuY29udGVudCBiZWZvcmUgcmVxdWVzdGluZyBjb250ZW50
OiAiICsgcmVzb3VyY2UxLmNvbnRlbnQpOworICAgICAgICByZXNvdXJjZTEucmVxdWVzdENvbnRl
bnQoc3RlcDMpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAzKCkKKyAgICB7CisgICAgICAg
IHZhciByZXNvdXJjZTEgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW1dl
Ykluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoIC0gM107CisgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJyZXNvdXJjZS5jb250ZW50IGFmdGVyIHJlcXVlc3Rp
bmcgY29udGVudDogIiArIHJlc291cmNlMS5jb250ZW50KTsKKworICAgICAgICB2YXIgcmVzb3Vy
Y2UyID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tXZWJJbnNwZWN0b3Iu
cGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzLmxlbmd0aCAtIDFdOworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdChyZXNvdXJjZTIudXJsKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoInJlc291cmNlLnR5cGU6ICIgKyByZXNvdXJjZTIudHlwZSk7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJyZXNvdXJjZS5jb250ZW50IGJlZm9yZSByZXF1ZXN0aW5nIGNv
bnRlbnQ6ICIgKyByZXNvdXJjZTIuY29udGVudCk7CisgICAgICAgIHJlc291cmNlMi5yZXF1ZXN0
Q29udGVudChzdGVwNCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDQoKQorICAgIHsKKyAg
ICAgICAgdmFyIHJlc291cmNlMiA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJj
ZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5ndGggLSAxXTsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLmNvbnRlbnQgYWZ0ZXIgcmVx
dWVzdGluZyBjb250ZW50OiAiICsgcmVzb3VyY2UyLmNvbnRlbnQpOworCisgICAgICAgIEluc3Bl
Y3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgIDxwPgorICAgIFRlc3RzIHRoYXQgaWYgaWZyYW1l
IGlzIGxvYWRlZCBhbmQgdGhlbiBkZWxldGVkLCBpbnNwZWN0b3IgY291bGQgc3RpbGwgc2hvdyBp
dHMgY29udGVudC4KKyAgICBOb3RlIHRoYXQgaWYgaWZyYW1lLnNyYyBpcyBjaGFuZ2VkIHRvICJq
YXZhc2NyaXB0OicuLi5zb21lIGh0bWwuLi4nIiBhZnRlcgorICAgIGxvYWRpbmcsIHRoZW4gd2Ug
aGF2ZSBkaWZmZXJlbnQgY29kZXBhdGgsIGhlbmNlIHR3byB0ZXN0czsKKyAgPC9wPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZmMDVmZGQ0NmM1NTFjZjMwMTEwZmFlMmMwMmRmNDFj
Mjg3N2Y5N2EuLjNjNDU4YjE4MjZlZmI4NzIzNjIwMTgwZmIxYzBkYWM5MGI3YTUyNTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsNSArMSw1MyBAQAogMjAxMS0wNi0xNiAgVnNldm9sb2QgVmxhc292ICA8dnNl
dmlrQGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBOZXR3b3JrIHBhbmVsIGRvZXMgbm90IHNob3cgbWFp
biByZXNvdXJjZSBjb250ZW50IGZvciBpZnJhbWVzIGRlbGV0ZWQgZnJvbSB0aGUgZG9jdW1lbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyODEwCisK
KyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWlmcmFt
ZS1sb2FkLWFuZC1kZWxldGUuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZpbmlzaExvYWRpbmdJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmdJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRS
ZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6bWFpblJlc291cmNlQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZUNvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpnZXRSZXNvdXJjZUNv
bnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJl
c291cmNlcyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZhaWxMb2FkaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVY
SFJSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojpn
ZXRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6cmVzb3VyY2VTdHlsZVNoZWV0
VGV4dCk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291
cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6c2V0UmVz
b3VyY2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZXNv
dXJjZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZFJl
c291cmNlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6c2V0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6UmVzb3VyY2VEYXRhOjpidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6c2V0QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnRleHRFbmNvZGluZ05hbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6c2V0
VGV4dEVuY29kaW5nTmFtZSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRGYWlsVG9M
b2FkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERp
ZEZpbmlzaExvYWRpbmcpOgorCisyMDExLTA2LTE2ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtA
Y2hyb21pdW0ub3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogTmV0d29yayBwYW5lbCBzaG93cyBpbmNvcnJlY3QgcXVlcnkg
cGFyYW1ldGVycyB3aGVuIHVybCBoYXMgZnJhZ21lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IGYzYmI4MzQ0
MjZkNGNkNTMzMjUzNWM4YjY5ZGVlOWM3NDNjNWMxYzEuLjI2MzM2OWRiOTViNGFiYTc4NGFhOWI4
OGM2YzUyZDYwNzQ4OGQzMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC00OTAsMjAgKzQ5MCwyMCBAQCB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGhJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqCiAgICAgICAgIHJlc291cmNlQWdlbnQtPmRpZFJlY2VpdmVDb250
ZW50TGVuZ3RoKGlkZW50aWZpZXIsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmdJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVy
LCBkb3VibGUgZmluaXNoVGltZSkKIHsKICAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCog
dGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclRpbWVsaW5lQWdl
bnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRmluaXNoTG9hZGluZ1Jlc291cmNlKGlk
ZW50aWZpZXIsIGZhbHNlLCBmaW5pc2hUaW1lKTsKICAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291
cmNlQWdlbnQoKSkKLSAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkRmluaXNoTG9hZGluZyhpZGVu
dGlmaWVyLCBmaW5pc2hUaW1lKTsKKyAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkRmluaXNoTG9h
ZGluZyhpZGVudGlmaWVyLCBsb2FkZXIsIGZpbmlzaFRpbWUpOwogfQogCi12b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFp
bExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRp
bWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50
KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEZpbmlzaExvYWRpbmdSZXNvdXJjZShpZGVu
dGlmaWVyLCB0cnVlLCAwKTsKICAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3Vy
Y2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkK
LSAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkRmFpbExvYWRpbmcoaWRlbnRpZmllciwgZXJyb3Ip
OworICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRGYWlsTG9hZGluZyhpZGVudGlmaWVyLCBsb2Fk
ZXIsIGVycm9yKTsKICAgICBpZiAoSW5zcGVjdG9yQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JDb25zb2xlQWdlbnQoKSkKICAgICAgICAg
Y29uc29sZUFnZW50LT5kaWRGYWlsTG9hZGluZyhpZGVudGlmaWVyLCBlcnJvcik7IC8vIFRoaXMg
c2hvdWxkIGNvbWUgQUZURVIgcmVzb3VyY2Ugbm90aWZpY2F0aW9uLCBmcm9udC1lbmQgcmVsaWVz
IG9uIHRoaXMuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggMTg2NGZmNDNkMzI0OWMwY2I2MjM3NTA0MGI2MDNlYTQ0
YzE4MzYwOC4uMDU1Y2Q4MDBmNWI3MDQ0NmJiNjc5N2RhYmM4OTllYzk2YTA3MWFlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aApAQCAtMTI1LDggKzEyNSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBjb250aW51ZVdp
dGhQb2xpY3lEb3dubG9hZChGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgY29u
dGludWVXaXRoUG9saWN5SWdub3JlKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9p
ZCBkaWRSZWNlaXZlQ29udGVudExlbmd0aChGcmFtZSosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7Ci0gICAgc3RhdGljIHZv
aWQgZGlkRmluaXNoTG9hZGluZyhGcmFtZSosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91
YmxlIGZpbmlzaFRpbWUpOwotICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKEZyYW1lKiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgc3Rh
dGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSk7CisgICAgc3RhdGljIHZvaWQg
ZGlkRmFpbExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHN0YXRpYyB2b2lkIHJlc291cmNl
UmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywgY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIp
OwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVYSFJSZXNwb25zZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAgICBzdGF0aWMgdm9pZCB3aWxs
TG9hZFhIUlN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwpAQCAtMjUzLDgg
KzI1Myw4IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgY29udGludWVXaXRoUG9saWN5RG93
bmxvYWRJbXBsKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBjb250aW51ZVdp
dGhQb2xpY3lJZ25vcmVJbXBsKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlQ29udGVudExlbmd0aEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7
Ci0gICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpOwotICAgIHN0
YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgc3RhdGljIHZv
aWQgZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBkb3VibGUgZmluaXNoVGltZSk7CisgICAg
c3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJv
ciYpOwogICAgIHN0YXRpYyB2b2lkIHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNl
bmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlWEhSUmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxMb2FkWEhSU3luY2hyb25vdXNseUltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyopOwpAQCAtNzYyLDE5ICs3NjIsMTkgQEAgaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlQ29udGVudExlbmd0aChGcmFtZSog
ZnJhbWUsIHVuc2kKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZpbmlzaExvYWRpbmcoRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxv
YWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSkKIHsKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAg
ICAgZGlkRmluaXNoTG9hZGluZ0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwg
ZmluaXNoVGltZSk7CisgICAgICAgIGRpZEZpbmlzaExvYWRpbmdJbXBsKGluc3RydW1lbnRpbmdB
Z2VudHMsIGlkZW50aWZpZXIsIGxvYWRlciwgZmluaXNoVGltZSk7CiAjZW5kaWYKIH0KIAotaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyhGcmFtZSog
ZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5n
KEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0g
aW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgZGlkRmFpbExvYWRp
bmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIGVycm9yKTsKKyAgICAgICAg
ZGlkRmFpbExvYWRpbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIGxvYWRl
ciwgZXJyb3IpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggOGQ1M2Q2OGY3OGNhMWM3MTgyYzdjNDI3ODQyODA2
NGI4NTkwNWM3NC4uODg1M2I5YTUxMGRkMDgzMDAyMGM1NWY2YjkyNzNhYzM2ODBhZGMzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAg
LTExMCwxMyArMTEwLDIzIEBAIHN0YXRpYyBib29sIHByZXBhcmVDYWNoZWRSZXNvdXJjZUJ1ZmZl
cihDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UsIGJvb2wqIGhhCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXN0YXRpYyBib29sIGRlY29kZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNl
KiBjYWNoZWRSZXNvdXJjZSwgU3RyaW5nKiByZXN1bHQpCitzdGF0aWMgYm9vbCBjYWNoZWRSZXNv
dXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlLCBib29sIHdpdGhCYXNl
NjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQogewogICAgIGJvb2wgaGFzWmVyb1NpemU7CiAgICAg
Ym9vbCBwcmVwYXJlZCA9IHByZXBhcmVDYWNoZWRSZXNvdXJjZUJ1ZmZlcihjYWNoZWRSZXNvdXJj
ZSwgJmhhc1plcm9TaXplKTsKICAgICBpZiAoIXByZXBhcmVkKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKKyAgICBpZiAod2l0aEJhc2U2NEVuY29kZSkgeworICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBoYXNaZXJvU2l6ZSA/IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgOiBj
YWNoZWRSZXNvdXJjZS0+ZGF0YSgpOworCisgICAgICAgIGlmICghYnVmZmVyKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGUoYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CiAgICAgaWYgKGNhY2hlZFJlc291cmNlKSB7CiAgICAgICAgIHN3aXRjaCAoY2FjaGVkUmVzb3Vy
Y2UtPnR5cGUoKSkgewogICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0
OgpAQCAtMTM2LDEwICsxNDYsMjMgQEAgc3RhdGljIGJvb2wgZGVjb2RlQ2FjaGVkUmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlLCBTdHJpbmcqIHJlc3VsdCkKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBib29sIGRlY29kZU1haW5SZXNvdXJjZShGcmFtZSogZnJh
bWUsIFN0cmluZyogcmVzdWx0KQorc3RhdGljIGJvb2wgbWFpblJlc291cmNlQ29udGVudChGcmFt
ZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAg
U3RyaW5nIHRleHRFbmNvZGluZ05hbWUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+aW5wdXRFbmNvZGlu
ZygpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS0+
ZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOworICAgIGlmICghYnVmZmVyKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgU3RyaW5nIHRleHRFbmNvZGluZ05hbWUgPSBmcmFt
ZS0+ZG9jdW1lbnQoKS0+aW5wdXRFbmNvZGluZygpOworCisgICAgcmV0dXJuIEluc3BlY3RvclBh
Z2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChidWZmZXIsIHRleHRFbmNvZGluZ05hbWUsIHdp
dGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7Cit9CisKK2Jvb2wgSW5zcGVjdG9yUGFnZUFnZW50Ojpz
aGFyZWRCdWZmZXJDb250ZW50KFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcq
IHJlc3VsdCkKK3sKKyAgICBpZiAod2l0aEJhc2U2NEVuY29kZSkgeworICAgICAgICAqcmVzdWx0
ID0gYmFzZTY0RW5jb2RlKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKwogICAgIHJldHVybiBkZWNvZGVTaGFyZWRCdWZmZXIoYnVm
ZmVyLCB0ZXh0RW5jb2RpbmdOYW1lLCByZXN1bHQpOwogfQogCkBAIC0xNDgsNyArMTcxLDcgQEAg
UGFzc093blB0cjxJbnNwZWN0b3JQYWdlQWdlbnQ+IEluc3BlY3RvclBhZ2VBZ2VudDo6Y3JlYXRl
KEluc3RydW1lbnRpbmdBZ2VudHMqIGkKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluc3BlY3Rv
clBhZ2VBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBwYWdlLCBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVudChFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBTdHJp
bmcqIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9v
bCBiYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQogewogICAgIGlmICghZnJhbWUpIHsKICAg
ICAgICAgKmVycm9yU3RyaW5nID0gIk5vIGZyYW1lIHRvIGdldCByZXNvdXJjZSBjb250ZW50IGZv
ciI7CkBAIC0xNTcsNTUgKzE4MCwyMyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3Vy
Y2VDb250ZW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgRnJhbWUqIGZyYW1lLAogCiAgICAg
RnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyID0gZnJhbWUtPmxvYWRlcigpOwogICAgIERvY3VtZW50
TG9hZGVyKiBsb2FkZXIgPSBmcmFtZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKTsKKworICAgIGlm
ICghbG9hZGVyKSB7CisgICAgICAgICplcnJvclN0cmluZyA9ICJObyBkb2N1bWVudExvYWRlciBm
b3IgZnJhbWUgdG8gZ2V0IHJlc291cmNlIGNvbnRlbnQgZm9yIjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBib29sIHN1Y2Nl
c3MgPSBmYWxzZTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmws
IGxvYWRlci0+dXJsKCkpKQotICAgICAgICBzdWNjZXNzID0gZGVjb2RlTWFpblJlc291cmNlKGZy
YW1lLCByZXN1bHQpOworICAgICAgICBzdWNjZXNzID0gbWFpblJlc291cmNlQ29udGVudChmcmFt
ZSwgYmFzZTY0RW5jb2RlLCByZXN1bHQpOwogICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgc3Vj
Y2VzcyA9IGRlY29kZUNhY2hlZFJlc291cmNlKGNhY2hlZFJlc291cmNlKGZyYW1lLCB1cmwpLCBy
ZXN1bHQpOworICAgICAgICBzdWNjZXNzID0gY2FjaGVkUmVzb3VyY2VDb250ZW50KGNhY2hlZFJl
c291cmNlKGZyYW1lLCB1cmwpLCBiYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiAKICAgICBpZiAoIXN1
Y2Nlc3MpCiAgICAgICAgICplcnJvclN0cmluZyA9ICJObyByZXNvdXJjZSB3aXRoIGdpdmVuIFVS
TCBmb3VuZCI7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZUNvbnRlbnRC
YXNlNjQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwm
IHVybCwgU3RyaW5nKiByZXN1bHQpCi17Ci0gICAgU3RyaW5nIHRleHRFbmNvZGluZ05hbWU7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3Vy
Y2VEYXRhKGZyYW1lLCB1cmwsICZ0ZXh0RW5jb2RpbmdOYW1lKTsKLSAgICBpZiAoIWRhdGEpIHsK
LSAgICAgICAgKnJlc3VsdCA9IFN0cmluZygpOwotICAgICAgICAqZXJyb3JTdHJpbmcgPSAiTm8g
cmVzb3VyY2Ugd2l0aCBnaXZlbiBVUkwgZm91bmQiOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7
Ci19Ci0KLVBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291
cmNlRGF0YShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nKiB0ZXh0RW5jb2Rp
bmdOYW1lKQotewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKLSAgICBGcmFtZUxv
YWRlciogZnJhbWVMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCk7Ci0gICAgRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciA9IGZyYW1lTG9hZGVyLT5kb2N1bWVudExvYWRlcigpOwotICAgIGlmIChlcXVhbEln
bm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKHVybCwgbG9hZGVyLT51cmwoKSkpIHsKLSAgICAgICAg
KnRleHRFbmNvZGluZ05hbWUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+aW5wdXRFbmNvZGluZygpOwot
ICAgICAgICBidWZmZXIgPSBmcmFtZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291
cmNlRGF0YSgpOwotICAgICAgICBpZiAoYnVmZmVyKQotICAgICAgICAgICAgcmV0dXJuIGJ1ZmZl
cjsKLSAgICB9Ci0KLSAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBJbnNwZWN0
b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlKGZyYW1lLCB1cmwpOwotICAgIGlmICghY2FjaGVk
UmVzb3VyY2UpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgYm9vbCBoYXNaZXJvU2l6ZTsKLSAg
ICBib29sIHByZXBhcmVkID0gcHJlcGFyZUNhY2hlZFJlc291cmNlQnVmZmVyKGNhY2hlZFJlc291
cmNlLCAmaGFzWmVyb1NpemUpOwotICAgIGlmICghcHJlcGFyZWQpCi0gICAgICAgIHJldHVybiAw
OwotCi0gICAgKnRleHRFbmNvZGluZ05hbWUgPSBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RpbmcoKTsK
LSAgICByZXR1cm4gaGFzWmVyb1NpemUgPyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIDogY2FjaGVk
UmVzb3VyY2UtPmRhdGEoKTsKLX0KLQogQ2FjaGVkUmVzb3VyY2UqIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6Y2FjaGVkUmVzb3VyY2UoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAg
Q2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gZnJhbWUtPmRvY3VtZW50KCktPmNhY2hl
ZFJlc291cmNlTG9hZGVyKCktPmNhY2hlZFJlc291cmNlKHVybCk7CkBAIC00MjcsMTAgKzQxOCw4
IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRSZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpCiAgICAgICAgICplcnJvclN0cmluZyA9ICJObyBm
cmFtZSBmb3IgZ2l2ZW4gaWQgZm91bmQiOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlm
IChvcHRpb25hbEJhc2U2NEVuY29kZSA/ICpvcHRpb25hbEJhc2U2NEVuY29kZSA6IGZhbHNlKQot
ICAgICAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVudEJhc2U2NChlcnJvclN0
cmluZywgZnJhbWUsIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBjb250ZW50KTsKLSAgICBl
bHNlCi0gICAgICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KGVycm9yU3Ry
aW5nLCBmcmFtZSwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIGNvbnRlbnQpOworICAgIGJv
b2wgYmFzZTY0RW5jb2RlID0gb3B0aW9uYWxCYXNlNjRFbmNvZGUgPyAqb3B0aW9uYWxCYXNlNjRF
bmNvZGUgOiBmYWxzZTsKKyAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVudChl
cnJvclN0cmluZywgZnJhbWUsIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBiYXNlNjRFbmNv
ZGUsIGNvbnRlbnQpOwogfQogCiBzdGF0aWMgU3RyaW5nIGNyZWF0ZVNlYXJjaFJlZ2V4U291cmNl
KGNvbnN0IFN0cmluZyYgdGV4dCkKQEAgLTQ5Miw3ICs0ODEsNyBAQCB2b2lkIEluc3BlY3RvclBh
Z2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHRl
eHQsIGNvbgogICAgICAgICAgICAgc3dpdGNoIChJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJl
c291cmNlVHlwZSgqY2FjaGVkUmVzb3VyY2UpKSB7CiAgICAgICAgICAgICBjYXNlIEluc3BlY3Rv
clBhZ2VBZ2VudDo6U3R5bGVzaGVldFJlc291cmNlOgogICAgICAgICAgICAgY2FzZSBJbnNwZWN0
b3JQYWdlQWdlbnQ6OlNjcmlwdFJlc291cmNlOgotICAgICAgICAgICAgICAgIGlmIChkZWNvZGVD
YWNoZWRSZXNvdXJjZShjYWNoZWRSZXNvdXJjZSwgJmNvbnRlbnQpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGNhY2hlZFJlc291cmNlQ29udGVudChjYWNoZWRSZXNvdXJjZSwgZmFsc2UsICZjb250
ZW50KSkgewogICAgICAgICAgICAgICAgICAgICBpbnQgbWF0Y2hlc0NvdW50ID0gY291bnRSZWd1
bGFyRXhwcmVzc2lvbk1hdGNoZXMocmVnZXgsIGNvbnRlbnQpOwogICAgICAgICAgICAgICAgICAg
ICBpZiAobWF0Y2hlc0NvdW50KQogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LT5wdXNo
VmFsdWUoYnVpbGRPYmplY3RGb3JTZWFyY2hNYXRjaChmcmFtZUlkKGZyYW1lKSwgY2FjaGVkUmVz
b3VyY2UtPnVybCgpLCBtYXRjaGVzQ291bnQpKTsKQEAgLTUwMiw3ICs0OTEsNyBAQCB2b2lkIElu
c3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIHRleHQsIGNvbgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICB9Ci0gICAgICAgIGlmIChkZWNvZGVNYWluUmVzb3VyY2UoZnJhbWUsICZjb250ZW50
KSkgeworICAgICAgICBpZiAobWFpblJlc291cmNlQ29udGVudChmcmFtZSwgZmFsc2UsICZjb250
ZW50KSkgewogICAgICAgICAgICAgaW50IG1hdGNoZXNDb3VudCA9IGNvdW50UmVndWxhckV4cHJl
c3Npb25NYXRjaGVzKHJlZ2V4LCBjb250ZW50KTsKICAgICAgICAgICAgIGlmIChtYXRjaGVzQ291
bnQpCiAgICAgICAgICAgICAgICAgcmVzdWx0LT5wdXNoVmFsdWUoYnVpbGRPYmplY3RGb3JTZWFy
Y2hNYXRjaChmcmFtZUlkKGZyYW1lKSwgZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLCBtYXRjaGVz
Q291bnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQ
YWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
aAppbmRleCBhNzA5MzhlYzI2ZmIxYzk2ZGI0YjY5ZjM2NTdlZjI2MjUwZjU1OGYwLi45ZThiNjE5
MGQxYWYwZGIzNDI3N2EwZTA3N2UwZmIwNzRkOWJjMzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC01NCw2ICs1NCw3IEBAIGNsYXNzIElu
c3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBLVVJMOwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlZ3Vs
YXJFeHByZXNzaW9uOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0eXBlZGVmIFN0cmluZyBFcnJv
clN0cmluZzsKIApAQCAtNzQsOCArNzUsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUGFzc093
blB0cjxJbnNwZWN0b3JQYWdlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiwgUGFn
ZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciopOwogCi0gICAgc3RhdGljIHZvaWQgcmVzb3VyY2VD
b250ZW50KEVycm9yU3RyaW5nKiwgRnJhbWUqLCBjb25zdCBLVVJMJiwgU3RyaW5nKiByZXN1bHQp
OwotICAgIHN0YXRpYyB2b2lkIHJlc291cmNlQ29udGVudEJhc2U2NChFcnJvclN0cmluZyosIEZy
YW1lKiwgY29uc3QgS1VSTCYsIFN0cmluZyogcmVzdWx0KTsKKyAgICBzdGF0aWMgYm9vbCBzaGFy
ZWRCdWZmZXJDb250ZW50KFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsK
KworICAgIHN0YXRpYyB2b2lkIHJlc291cmNlQ29udGVudChFcnJvclN0cmluZyosIEZyYW1lKiwg
Y29uc3QgS1VSTCYsIGJvb2wgYmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCk7CiAKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YShGcmFtZSosIGNvbnN0
IEtVUkwmLCBTdHJpbmcqIHRleHRFbmNvZGluZ05hbWUpOwogICAgIHN0YXRpYyBDYWNoZWRSZXNv
dXJjZSogY2FjaGVkUmVzb3VyY2UoRnJhbWUqLCBjb25zdCBLVVJMJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggYjY4
MDczMDI4NzEyNTNjOTIyYmM2Y2U5NGMyZDRiNmM0Y2FjYzIxMS4uYTlkZDU3YTkzMTM3ODYzNWQx
OTI1OWFkZmQ4OWRkYzQxNmU5NGI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtMzUsNiArMzUsNyBAQAogCiAjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5o
IgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNp
bmNsdWRlICJFdmVudHNDb2xsZWN0b3IuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMjQ0LDEy
ICsyNDUsMTIgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9u
c2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWUKICAgICAgICAgICAgIHR5cGUgPSBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OkltYWdlUmVzb3VyY2U7CiAgICAgICAgIGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIocmVzcG9uc2UudXJsKCksIGxvYWRlci0+dXJsKCkp
ICYmIHR5cGUgPT0gSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlKQogICAgICAgICAg
ICAgdHlwZSA9IEluc3BlY3RvclBhZ2VBZ2VudDo6RG9jdW1lbnRSZXNvdXJjZTsKLSAgICAgICAg
ZWxzZSBpZiAobV9sb2FkaW5nWEhSU3luY2hyb25vdXNseSB8fCBtX3Jlc291cmNlc0RhdGEtPmlz
WEhSKGlkZW50aWZpZXIpKQorICAgICAgICBlbHNlIGlmIChtX2xvYWRpbmdYSFJTeW5jaHJvbm91
c2x5IHx8IG1fcmVzb3VyY2VzRGF0YS0+cmVzb3VyY2VUeXBlKGlkZW50aWZpZXIpID09IEluc3Bl
Y3RvclBhZ2VBZ2VudDo6WEhSUmVzb3VyY2UpCiAgICAgICAgICAgICB0eXBlID0gSW5zcGVjdG9y
UGFnZUFnZW50OjpYSFJSZXNvdXJjZTsKIAogICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnJlc3Bv
bnNlUmVjZWl2ZWQoaWRlbnRpZmllciwgbV9wYWdlQWdlbnQtPmZyYW1lSWQobG9hZGVyLT5mcmFt
ZSgpKSwgcmVzcG9uc2UudXJsKCkpOwogICAgIH0KLQorICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0
UmVzb3VyY2VUeXBlKGlkZW50aWZpZXIsIHR5cGUpOwogICAgIG1fZnJvbnRlbmQtPnJlc3BvbnNl
UmVjZWl2ZWQoc3RhdGljX2Nhc3Q8aW50PihpZGVudGlmaWVyKSwgY3VycmVudFRpbWUoKSwgSW5z
cGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZVR5cGVTdHJpbmcodHlwZSksIHJlc291cmNlUmVzcG9u
c2UpOwogICAgIC8vIElmIHdlIHJldmFsaWRhdGVkIHRoZSByZXNvdXJjZSBhbmQgZ290IE5vdCBt
b2RpZmllZCwgc2VuZCBjb250ZW50IGxlbmd0aCBmb2xsb3dpbmcgZGlkUmVjZWl2ZVJlc3BvbnNl
CiAgICAgLy8gYXMgdGhlcmUgd2lsbCBiZSBubyBjYWxscyB0byBkaWRSZWNlaXZlQ29udGVudExl
bmd0aCBmcm9tIHRoZSBuZXR3b3JrIHN0YWNrLgpAQCAtMjYyLDE2ICsyNjMsMjIgQEAgdm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlQ29udGVudExlbmd0aCh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGkKICAgICBtX2Zyb250ZW5kLT5kYXRhUmVjZWl2ZWQoc3RhdGljX2Nh
c3Q8aW50PihpZGVudGlmaWVyKSwgY3VycmVudFRpbWUoKSwgZGF0YUxlbmd0aCwgZW5jb2RlZERh
dGFMZW5ndGgpOwogfQogCi12b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZpbmlzaExv
YWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSkKK3ZvaWQg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQogewor
ICAgIGlmIChtX3Jlc291cmNlc0RhdGEtPnJlc291cmNlVHlwZShpZGVudGlmaWVyKSA9PSBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OkRvY3VtZW50UmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3VyY2VzRGF0
YS0+YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoaWRlbnRpZmllciwgbG9hZGVyLT5mcmFtZUxvYWRl
cigpLT5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCksIGxvYWRlci0+ZnJhbWUo
KS0+ZG9jdW1lbnQoKS0+aW5wdXRFbmNvZGluZygpKTsKKwogICAgIGlmICghZmluaXNoVGltZSkK
ICAgICAgICAgZmluaXNoVGltZSA9IGN1cnJlbnRUaW1lKCk7CiAKICAgICBtX2Zyb250ZW5kLT5s
b2FkaW5nRmluaXNoZWQoc3RhdGljX2Nhc3Q8aW50PihpZGVudGlmaWVyKSwgZmluaXNoVGltZSk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkRmFpbExvYWRpbmcodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3ZvaWQgSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
IHsKKyAgICBpZiAobV9yZXNvdXJjZXNEYXRhLT5yZXNvdXJjZVR5cGUoaWRlbnRpZmllcikgPT0g
SW5zcGVjdG9yUGFnZUFnZW50OjpEb2N1bWVudFJlc291cmNlKQorICAgICAgICBtX3Jlc291cmNl
c0RhdGEtPmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGlkZW50aWZpZXIsIGxvYWRlci0+ZnJhbWVM
b2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpLCBsb2FkZXItPmZy
YW1lKCktPmRvY3VtZW50KCktPmlucHV0RW5jb2RpbmcoKSk7CisKICAgICBtX2Zyb250ZW5kLT5s
b2FkaW5nRmFpbGVkKHN0YXRpY19jYXN0PGludD4oaWRlbnRpZmllciksIGN1cnJlbnRUaW1lKCks
IGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCksIGVycm9yLmlzQ2FuY2VsbGF0aW9uKCkpOwog
fQogCkBAIC0yOTIsNyArMjk5LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRJ
bml0aWFsWEhSQ29udGVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnMKIAogdm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlWEhSUmVzcG9uc2UodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyKQogewotICAgIG1fcmVzb3VyY2VzRGF0YS0+ZGlkUmVjZWl2ZVhIUlJlc3Bv
bnNlKGlkZW50aWZpZXIpOworICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VUeXBlKGlk
ZW50aWZpZXIsIEluc3BlY3RvclBhZ2VBZ2VudDo6WEhSUmVzb3VyY2UpOwogfQogCiB2b2lkIElu
c3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxMb2FkWEhSU3luY2hyb25vdXNseSgpCkBAIC00MzMs
OSArNDQwLDE5IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Z2V0UmVzb3VyY2VDb250
ZW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgdW5zaWduCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBpZiAocmVzb3VyY2VEYXRhLT5oYXNDb250ZW50KCkpCisgICAgYm9vbCBiYXNl
NjRFbmNvZGUgPSBvcHRpb25hbEJhc2U2NEVuY29kZSA/ICpvcHRpb25hbEJhc2U2NEVuY29kZSA6
IGZhbHNlOworCisgICAgaWYgKHJlc291cmNlRGF0YS0+aGFzQ29udGVudCgpKSB7CiAgICAgICAg
ICpjb250ZW50ID0gcmVzb3VyY2VEYXRhLT5jb250ZW50KCk7Ci0gICAgZWxzZSBpZiAoIXJlc291
cmNlRGF0YS0+ZnJhbWVJZCgpLmlzTnVsbCgpICYmICFyZXNvdXJjZURhdGEtPnVybCgpLmlzTnVs
bCgpKQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHJlc291cmNlRGF0YS0+YnVm
ZmVyKCkgJiYgIXJlc291cmNlRGF0YS0+dGV4dEVuY29kaW5nTmFtZSgpLmlzTnVsbCgpKSB7Cisg
ICAgICAgIGlmIChJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQocmVzb3Vy
Y2VEYXRhLT5idWZmZXIoKSwgcmVzb3VyY2VEYXRhLT50ZXh0RW5jb2RpbmdOYW1lKCksIGJhc2U2
NEVuY29kZSwgY29udGVudCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KCFyZXNvdXJjZURhdGEtPmZyYW1lSWQoKS5pc051bGwoKSAmJiAhcmVzb3VyY2VEYXRhLT51cmwo
KS5pc051bGwoKSkKICAgICAgICAgbV9wYWdlQWdlbnQtPmdldFJlc291cmNlQ29udGVudChlcnJv
clN0cmluZywgcmVzb3VyY2VEYXRhLT5mcmFtZUlkKCksIHJlc291cmNlRGF0YS0+dXJsKCksIG9w
dGlvbmFsQmFzZTY0RW5jb2RlLCBjb250ZW50KTsKICAgICBlbHNlCiAgICAgICAgICplcnJvclN0
cmluZyA9ICJObyBkYXRhIGZvdW5kIGZvciByZXNvdXJjZSB3aXRoIGdpdmVuIGlkZW50aWZpZXIi
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmgKaW5kZXggMDZhMTJiYjkxZTI4Y2QxMGY0ZTRkNzhhZDRhNGQyOWNlMGY3Nzc5NC4uODZjMGMy
MzU3YmI4NmJhMzU3N2U1YWRkMGJlZDUzNzZhNzA2OWNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC05MSw4ICs5MSw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIG1hcmtSZXNvdXJjZUFzQ2FjaGVkKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllcik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBEb2N1bWVudExvYWRlciogbGFvZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CiAgICAgdm9pZCBkaWRSZWNlaXZlQ29udGVudExlbmd0aCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwotICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1l
KTsKLSAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VFcnJvciYpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgZG91YmxlIGZpbmlzaFRpbWUpOworICAg
IHZvaWQgZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExv
YWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZExvYWRSZXNvdXJjZUZy
b21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciosIGNvbnN0IENhY2hlZFJlc291cmNlKik7CiAg
ICAgdm9pZCBtYWluRnJhbWVOYXZpZ2F0ZWQoRG9jdW1lbnRMb2FkZXIqKTsKICAgICB2b2lkIHNl
dEluaXRpYWxTY3JpcHRDb250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDFkZDkzZjJiMDJlNzczZDFmZDljMGYyMDgxNzYwYzBj
YTY5MTg3OWMuLmFiNmJhNDhlYzAyODEwZjM0YmYwZmRhNTAzZjY3ODhiYmFiZjRhNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAg
LTEwNjksNyArMTA2OSw3IEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6cmVzb3VyY2VTdHls
ZVNoZWV0VGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgU3RyaW5nIGVycm9yOwotICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VDb250
ZW50KCZlcnJvciwgb3duZXJEb2N1bWVudCgpLT5mcmFtZSgpLCBtX3BhZ2VTdHlsZVNoZWV0LT5m
aW5hbFVSTCgpLCByZXN1bHQpOworICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VDb250
ZW50KCZlcnJvciwgb3duZXJEb2N1bWVudCgpLT5mcmFtZSgpLCBtX3BhZ2VTdHlsZVNoZWV0LT5m
aW5hbFVSTCgpLCBmYWxzZSwgcmVzdWx0KTsKICAgICByZXR1cm4gZXJyb3IuaXNFbXB0eSgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmNwcAppbmRleCA3MjI5NjMwZDBhZjFhZDFiZmMzNjhjM2IxMTVhN2ZmOWYyZGZlNGExLi40NzRj
Y2Y4NDRjZDk5ZmFjMDFmOWFiZDZmYjUyZmQ1ZGMwOWMxOTc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQzLDggKzQzLDgg
QEAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQogICAgICwgbV9sb2FkZXJJZChsb2FkZXJJZCkKICAgICAsIG1faGFzQ29udGVudChmYWxzZSkK
LSAgICAsIG1faXNYSFIoZmFsc2UpCiAgICAgLCBtX2lzQ29udGVudFB1cmdlZChmYWxzZSkKKyAg
ICAsIG1fdHlwZShJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2UpCiB7CiB9CiAKQEAg
LTk0LDEyICs5NCwyMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZXNwb25zZVJlY2Vp
dmVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaQogICAgIHJlc291cmNlRGF0
YS0+c2V0VXJsKHVybCk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmRpZFJlY2Vp
dmVYSFJSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCit2b2lkIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpzZXRSZXNvdXJjZVR5cGUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSB0eXBlKQogewogICAgIFJlc291cmNlRGF0YSog
cmVzb3VyY2VEYXRhID0gbV9pZGVudGlmaWVyVG9SZXNvdXJjZURhdGFNYXAuZ2V0KGlkZW50aWZp
ZXIpOwogICAgIGlmICghcmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgcmVzb3Vy
Y2VEYXRhLT5zZXRJc1hIUih0cnVlKTsKKyAgICByZXNvdXJjZURhdGEtPnNldFR5cGUodHlwZSk7
Cit9CisKK0luc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpyZXNvdXJjZVR5cGUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQoreworICAgIFJlc291
cmNlRGF0YSogcmVzb3VyY2VEYXRhID0gbV9pZGVudGlmaWVyVG9SZXNvdXJjZURhdGFNYXAuZ2V0
KGlkZW50aWZpZXIpOworICAgIGlmICghcmVzb3VyY2VEYXRhKQorICAgICAgICByZXR1cm4gSW5z
cGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlOworICAgIHJldHVybiByZXNvdXJjZURhdGEt
PnR5cGUoKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6YWRkUmVzb3VyY2VDb250
ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50KQpAQCAt
MTE3LDEyICsxMjUsMTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6YWRkUmVzb3VyY2VD
b250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3QKICAgICB9CiB9CiAKLWJv
b2wgTmV0d29ya1Jlc291cmNlc0RhdGE6OmlzWEhSKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikK
K3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKQogewogICAgIFJlc291cmNlRGF0YSogcmVzb3Vy
Y2VEYXRhID0gbV9pZGVudGlmaWVyVG9SZXNvdXJjZURhdGFNYXAuZ2V0KGlkZW50aWZpZXIpOwog
ICAgIGlmICghcmVzb3VyY2VEYXRhKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IHJlc291cmNlRGF0YS0+aXNYSFIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIHJlc291cmNlRGF0
YS0+c2V0QnVmZmVyKGJ1ZmZlcik7CisgICAgcmVzb3VyY2VEYXRhLT5zZXRUZXh0RW5jb2RpbmdO
YW1lKHRleHRFbmNvZGluZ05hbWUpOwogfQogCiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3Vy
Y2VEYXRhKiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6ZGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5o
CmluZGV4IGQ1YjA1NDZlOTBkYmVhYmQwYjRjZGEyNjdhYzk2ZWEzNmE5NWRlMTQuLjcxOWFhYTNm
ZThlNDI5YTc3ODk5ZWI4YzllNDkxNWEwNjEzZDE4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0yOSw4ICsyOSwxMyBAQAogI2lm
bmRlZiBOZXR3b3JrUmVzb3VyY2VzRGF0YV9oCiAjZGVmaW5lIE5ldHdvcmtSZXNvdXJjZXNEYXRh
X2gKIAorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9yUGFnZUFnZW50LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisKICNpbmNsdWRlIDx3
dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zOCw2ICs0Myw5IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CisK
IGNsYXNzIE5ldHdvcmtSZXNvdXJjZXNEYXRhIHsKIHB1YmxpYzoKICAgICBjbGFzcyBSZXNvdXJj
ZURhdGEgewpAQCAtNTMsOSArNjEsNiBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyB1cmwoKSBj
b25zdCB7IHJldHVybiBtX3VybDsgfQogICAgICAgICB2b2lkIHNldFVybChTdHJpbmcgdXJsKSB7
IG1fdXJsID0gdXJsOyB9CiAKLSAgICAgICAgYm9vbCBpc1hIUigpIGNvbnN0IHsgcmV0dXJuIG1f
aXNYSFI7IH0KLSAgICAgICAgdm9pZCBzZXRJc1hIUihib29sIGlzWEhSKSB7IG1faXNYSFIgPSBp
c1hIUjsgfQotCiAgICAgICAgIGJvb2wgaGFzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faGFz
Q29udGVudDsgfQogICAgICAgICBTdHJpbmcgY29udGVudCgpOwogICAgICAgICB2b2lkIGFwcGVu
ZENvbnRlbnQoY29uc3QgU3RyaW5nJik7CkBAIC02NCw2ICs2OSwxNSBAQCBwdWJsaWM6CiAgICAg
ICAgIHZvaWQgc2V0SXNDb250ZW50UHVyZ2VkKGJvb2wgaXNDb250ZW50UHVyZ2VkKSB7IG1faXND
b250ZW50UHVyZ2VkID0gaXNDb250ZW50UHVyZ2VkOyB9CiAgICAgICAgIHVuc2lnbmVkIHB1cmdl
Q29udGVudCgpOwogCisgICAgICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICAgICAgdm9pZCBzZXRUeXBlKEluc3Bl
Y3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIHR5cGUpIHsgbV90eXBlID0gdHlwZTsgfQorCisg
ICAgICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlcjsgfQorICAgICAgICB2b2lkIHNldEJ1ZmZlcihQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyKSB7IG1fYnVmZmVyID0gYnVmZmVyOyB9CisKKyAgICAgICAgU3RyaW5nIHRleHRF
bmNvZGluZ05hbWUoKSBjb25zdCB7IHJldHVybiBtX3RleHRFbmNvZGluZ05hbWU7IH0KKyAgICAg
ICAgdm9pZCBzZXRUZXh0RW5jb2RpbmdOYW1lKFN0cmluZyB0ZXh0RW5jb2RpbmdOYW1lKSB7IG1f
dGV4dEVuY29kaW5nTmFtZSA9IHRleHRFbmNvZGluZ05hbWU7IH0KKwogICAgIHByaXZhdGU6CiAg
ICAgICAgIHVuc2lnbmVkIGxvbmcgbV9pZGVudGlmaWVyOwogICAgICAgICBTdHJpbmcgbV9sb2Fk
ZXJJZDsKQEAgLTcxLDggKzg1LDExIEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fdXJsOwog
ICAgICAgICBib29sIG1faGFzQ29udGVudDsKICAgICAgICAgU3RyaW5nQnVpbGRlciBtX2NvbnRl
bnRCdWlsZGVyOwotICAgICAgICBib29sIG1faXNYSFI7CiAgICAgICAgIGJvb2wgbV9pc0NvbnRl
bnRQdXJnZWQ7CisgICAgICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIG1fdHlw
ZTsKKworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICAgICAgU3Ry
aW5nIG1fdGV4dEVuY29kaW5nTmFtZTsKICAgICB9OwogCiAgICAgTmV0d29ya1Jlc291cmNlc0Rh
dGEoKTsKQEAgLTgxLDEwICs5OCwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc291cmNlQ3Jl
YXRlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbG9hZGVySWQpOwog
ICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwpOwotICAgIHZvaWQgZGlkUmVjZWl2
ZVhIUlJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CisgICAgdm9pZCBzZXRSZXNv
dXJjZVR5cGUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJl
c291cmNlVHlwZSk7CisgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgcmVzb3Vy
Y2VUeXBlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CiAgICAgdm9pZCBhZGRSZXNvdXJjZUNv
bnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwot
Ci0gICAgYm9vbCBpc1hIUih1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOworICAgIHZvaWQgYWRk
UmVzb3VyY2VTaGFyZWRCdWZmZXIodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSk7CiAgICAgUmVz
b3VyY2VEYXRhKiBkYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CiAgICAgdm9pZCBjbGVh
cihjb25zdCBTdHJpbmcmIHByZXNlcnZlZExvYWRlcklkID0gU3RyaW5nKCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAppbmRleCBlYTZjZjIy
ZmM2ZGI5MWNmMTAzM2FkODU4NGEyOGE1ZjA2YjEwZjY2Li5hYzQ2YTk0NDdmZTVjMzYyOGY0NzM1
MmU4YzJjY2EyMmJkZTgzYTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkTm90aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWROb3RpZmllci5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWROb3Rp
Zmllcjo6ZGlkRmFpbFRvTG9hZChSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJj
ZUUKICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKQogICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+
Y2xpZW50KCktPmRpc3BhdGNoRGlkRmFpbExvYWRpbmcobG9hZGVyLT5kb2N1bWVudExvYWRlcigp
LCBsb2FkZXItPmlkZW50aWZpZXIoKSwgZXJyb3IpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRGYWlsTG9hZGluZyhtX2ZyYW1lLCBsb2FkZXItPmlkZW50aWZpZXIoKSwgZXJy
b3IpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcobV9mcmFt
ZSwgbG9hZGVyLT5kb2N1bWVudExvYWRlcigpLCBsb2FkZXItPmlkZW50aWZpZXIoKSwgZXJyb3Ip
OwogfQogCiB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjphc3NpZ25JZGVudGlmaWVyVG9Jbml0
aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKQEAgLTE0MSw3ICsxNDEsNyBAQCB2
b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgdW5zaQogewogICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQo
KS0+ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKGxvYWRlciwgaWRlbnRpZmllcik7CiAKLSAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcobV9mcmFtZSwgaWRlbnRp
ZmllciwgZmluaXNoVGltZSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5p
c2hMb2FkaW5nKG1fZnJhbWUsIGxvYWRlciwgaWRlbnRpZmllciwgZmluaXNoVGltZSk7CiB9CiAK
IHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoVHJhbnNmZXJMb2FkaW5nUmVzb3Vy
Y2VGcm9tUGFnZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFnZSogb2xkUGFnZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97572</attachid>
            <date>2011-06-17 03:24:45 -0700</date>
            <delta_ts>2011-06-17 05:18:08 -0700</delta_ts>
            <desc>patch with build fixes + comments addressed</desc>
            <filename>bug-62810-20110617142442.patch</filename>
            <type>text/plain</type>
            <size>36634</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODkwNDkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwYmE4MDY3YWVjMjFjMTA3ZjdhM2Vj
NzYzNTQ5MmI1MWJhZmNlNTZjLi5mMjAyMjU4MjA4M2RlMWJmY2MxODcyYWZmOTE2NDc1N2Y5MTQz
OWE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDYtMTcgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTmV0d29yayBwYW5lbCBkb2VzIG5vdCBzaG93
IG1haW4gcmVzb3VyY2UgY29udGVudCBmb3IgaWZyYW1lcyBkZWxldGVkIGZyb20gdGhlIGRvY3Vt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjgx
MAorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWlmcmFt
ZS1sb2FkLWFuZC1kZWxldGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstaWZyYW1lLWxvYWQtYW5kLWRlbGV0ZS5odG1s
OiBBZGRlZC4KKwogMjAxMS0wNi0xNiAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWlmcmFtZS1s
b2FkLWFuZC1kZWxldGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9uZXR3b3JrLWlmcmFtZS1sb2FkLWFuZC1kZWxldGUtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ2MzkzODY2ZWYwZTE5YjA0MTVhMzUyM2VlN2UwZWRmNDk3MDk3MGUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L25ldHdvcmstaWZyYW1lLWxvYWQtYW5kLWRlbGV0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MiBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDM2OiBEb25lLgorVGVzdHMgdGhhdCBpZiBpZnJh
bWUgaXMgbG9hZGVkIGFuZCB0aGVuIGRlbGV0ZWQsIGluc3BlY3RvciBjb3VsZCBzdGlsbCBzaG93
IGl0cyBjb250ZW50LiBOb3RlIHRoYXQgaWYgaWZyYW1lLnNyYyBpcyBjaGFuZ2VkIHRvICJqYXZh
c2NyaXB0OicuLi5zb21lIGh0bWwuLi4nIiBhZnRlciBsb2FkaW5nLCB0aGVuIHdlIGhhdmUgZGlm
ZmVyZW50IGNvZGVwYXRoLCBoZW5jZSB0d28gdGVzdHM7CisKK2h0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwCityZXNvdXJjZS50eXBl
OiAwCityZXNvdXJjZS5jb250ZW50IGJlZm9yZSByZXF1ZXN0aW5nIGNvbnRlbnQ6IHVuZGVmaW5l
ZAorcmVzb3VyY2UuY29udGVudCBhZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6IEhlbGxvIHdvcmxk
CitodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291
cmNlLnBocAorcmVzb3VyY2UudHlwZTogMAorcmVzb3VyY2UuY29udGVudCBiZWZvcmUgcmVxdWVz
dGluZyBjb250ZW50OiB1bmRlZmluZWQKK3Jlc291cmNlLmNvbnRlbnQgYWZ0ZXIgcmVxdWVzdGlu
ZyBjb250ZW50OiBIZWxsbyB3b3JsZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstaWZyYW1lLWxvYWQtYW5kLWRlbGV0ZS5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWlmcmFt
ZS1sb2FkLWFuZC1kZWxldGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmZhNzMwMGIzMjA2NDA4Zjg1ZDM5
OTFkNWY0OTZhMTRjNWE1NzVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWlmcmFtZS1sb2FkLWFuZC1kZWxldGUuaHRt
bApAQCAtMCwwICsxLDgyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9uZXR3b3JrLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KK3ZhciBpZnJhbWU7CisKK2Z1bmN0aW9uIGxvYWRJZnJhbWUo
KQoreworICAgIGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKKyAgICBpZnJhbWUub25sb2FkID0g
aWZyYW1lTG9hZGVkOworICAgIGlmcmFtZS5zcmMgPSAicmVzb3VyY2VzL3Jlc291cmNlLnBocCI7
Cit9CisKK2Z1bmN0aW9uIGlmcmFtZUxvYWRlZCgpCit7CisgICAgZG9jdW1lbnQuYm9keS5yZW1v
dmVDaGlsZChpZnJhbWUpOworCisgICAgbG9hZElmcmFtZUFuZENoYW5nZVNyY0FmdGVyTG9hZCgp
OworfQorCitmdW5jdGlvbiBsb2FkSWZyYW1lQW5kQ2hhbmdlU3JjQWZ0ZXJMb2FkKCkKK3sKKyAg
ICBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7CisgICAgaWZyYW1lLm9ubG9hZCA9IGlmcmFtZUxv
YWRlZENoYW5nZVNyYzsKKyAgICBpZnJhbWUuc3JjID0gInJlc291cmNlcy9yZXNvdXJjZS5waHAi
OworfQorCitmdW5jdGlvbiBpZnJhbWVMb2FkZWRDaGFuZ2VTcmMoKQoreworICAgIGlmcmFtZS5v
bmxvYWQgPSBudWxsOworICAgIGlmcmFtZS5zcmMgPSAiamF2YXNjcmlwdDonPGh0bWw+PC9odG1s
PiciOworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaWZyYW1lKTsKKyAgICBjb25zb2xl
LmxvZygiRG9uZS4iKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgSW5zcGVjdG9yVGVz
dC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUsICJhZGRNZXNz
YWdlIiwgc3RlcDIpOworICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImxvYWRJZnJh
bWUoKSIpOworCisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291
cmNlMSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9y
LnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5ndGggLSAzXTsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQocmVzb3VyY2UxLnVybCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJyZXNvdXJjZS50eXBlOiAiICsgcmVzb3VyY2UxLnR5cGUpOworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UuY29udGVudCBiZWZvcmUgcmVxdWVzdGluZyBj
b250ZW50OiAiICsgcmVzb3VyY2UxLmNvbnRlbnQpOworICAgICAgICByZXNvdXJjZTEucmVxdWVz
dENvbnRlbnQoc3RlcDMpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAzKCkKKyAgICB7Cisg
ICAgICAgIHZhciByZXNvdXJjZTEgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3Vy
Y2VzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoIC0gM107Cisg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJyZXNvdXJjZS5jb250ZW50IGFmdGVyIHJl
cXVlc3RpbmcgY29udGVudDogIiArIHJlc291cmNlMS5jb250ZW50KTsKKworICAgICAgICB2YXIg
cmVzb3VyY2UyID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tXZWJJbnNw
ZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzLmxlbmd0aCAtIDFdOworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdChyZXNvdXJjZTIudXJsKTsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoInJlc291cmNlLnR5cGU6ICIgKyByZXNvdXJjZTIudHlwZSk7CisgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJyZXNvdXJjZS5jb250ZW50IGJlZm9yZSByZXF1ZXN0
aW5nIGNvbnRlbnQ6ICIgKyByZXNvdXJjZTIuY29udGVudCk7CisgICAgICAgIHJlc291cmNlMi5y
ZXF1ZXN0Q29udGVudChzdGVwNCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDQoKQorICAg
IHsKKyAgICAgICAgdmFyIHJlc291cmNlMiA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5y
ZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5ndGggLSAx
XTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLmNvbnRlbnQgYWZ0
ZXIgcmVxdWVzdGluZyBjb250ZW50OiAiICsgcmVzb3VyY2UyLmNvbnRlbnQpOworCisgICAgICAg
IEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgIDxwPgorICAgIFRlc3RzIHRoYXQgaWYg
aWZyYW1lIGlzIGxvYWRlZCBhbmQgdGhlbiBkZWxldGVkLCBpbnNwZWN0b3IgY291bGQgc3RpbGwg
c2hvdyBpdHMgY29udGVudC4KKyAgICBOb3RlIHRoYXQgaWYgaWZyYW1lLnNyYyBpcyBjaGFuZ2Vk
IHRvICJqYXZhc2NyaXB0OicuLi5zb21lIGh0bWwuLi4nIiBhZnRlcgorICAgIGxvYWRpbmcsIHRo
ZW4gd2UgaGF2ZSBkaWZmZXJlbnQgY29kZXBhdGgsIGhlbmNlIHR3byB0ZXN0czsKKyAgPC9wPgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZmMDVmZGQ0NmM1NTFjZjMwMTEwZmFlMmMw
MmRmNDFjMjg3N2Y5N2EuLjEwOWVkNjUwMzgzNzQ0MGNlY2M0NjEyODNmMGY2YjI3YmYzOTNiYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NCBAQAorMjAxMS0wNi0xNyAgVnNldm9sb2QgVmxhc292
ICA8dnNldmlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBOZXR3b3JrIHBhbmVsIGRvZXMgbm90IHNo
b3cgbWFpbiByZXNvdXJjZSBjb250ZW50IGZvciBpZnJhbWVzIGRlbGV0ZWQgZnJvbSB0aGUgZG9j
dW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYy
ODEwCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3Jr
LWlmcmFtZS1sb2FkLWFuZC1kZWxldGUuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmdJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmdJbXBsKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
YWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6bWFpblJlc291cmNlQ29u
dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZl
ckNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJj
ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpnZXRSZXNv
dXJjZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZWFy
Y2hJblJlc291cmNlcyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5o
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZhaWxM
b2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJl
Y2VpdmVYSFJSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpnZXRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6cmVzb3VyY2VTdHls
ZVNoZWV0VGV4dCk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6
OlJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
c2V0UmVzb3VyY2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpyZXNvdXJjZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0Rh
dGE6OlJlc291cmNlRGF0YTo6c2V0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6c2V0QnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnRleHRFbmNvZGluZ05h
bWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6c2V0VGV4dEVuY29kaW5nTmFtZSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE5v
dGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRG
YWlsVG9Mb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNw
YXRjaERpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdy
b3VwOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVHcm91cDo6ZGlkRmFpbCk6CisKIDIwMTEtMDYtMTYgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZp
a0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAKaW5kZXggZjNiYjgzNDQyNmQ0Y2Q1MzMyNTM1YzhiNjlkZWU5Yzc0M2M1YzFjMS4uMjYz
MzY5ZGI5NWI0YWJhNzg0YWE5Yjg4YzZjNTJkNjA3NDg4ZDMxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTQ5
MCwyMCArNDkwLDIwIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZl
Q29udGVudExlbmd0aEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyoKICAgICAgICAgcmVzb3VyY2VB
Z2VudC0+ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoaWRlbnRpZmllciwgZGF0YUxlbmd0aCwgZW5j
b2RlZERhdGFMZW5ndGgpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSkKK3ZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQogewogICAgIGlmIChJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+
aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRGaW5p
c2hMb2FkaW5nUmVzb3VyY2UoaWRlbnRpZmllciwgZmFsc2UsIGZpbmlzaFRpbWUpOwogICAgIGlm
IChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQotICAgICAgICByZXNvdXJjZUFnZW50LT5k
aWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOworICAgICAgICByZXNvdXJj
ZUFnZW50LT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGxvYWRlciwgZmluaXNoVGltZSk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZ0ltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3ZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRl
ciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBpZiAoSW5zcGVj
dG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmlu
c3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRmluaXNo
TG9hZGluZ1Jlc291cmNlKGlkZW50aWZpZXIsIHRydWUsIDApOwogICAgIGlmIChJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVj
dG9yUmVzb3VyY2VBZ2VudCgpKQotICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRGYWlsTG9hZGlu
ZyhpZGVudGlmaWVyLCBlcnJvcik7CisgICAgICAgIHJlc291cmNlQWdlbnQtPmRpZEZhaWxMb2Fk
aW5nKGlkZW50aWZpZXIsIGxvYWRlciwgZXJyb3IpOwogICAgIGlmIChJbnNwZWN0b3JDb25zb2xl
QWdlbnQqIGNvbnNvbGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckNvbnNv
bGVBZ2VudCgpKQogICAgICAgICBjb25zb2xlQWdlbnQtPmRpZEZhaWxMb2FkaW5nKGlkZW50aWZp
ZXIsIGVycm9yKTsgLy8gVGhpcyBzaG91bGQgY29tZSBBRlRFUiByZXNvdXJjZSBub3RpZmljYXRp
b24sIGZyb250LWVuZCByZWxpZXMgb24gdGhpcy4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCAxODY0ZmY0M2QzMjQ5
YzBjYjYyMzc1MDQwYjYwM2VhNDRjMTgzNjA4Li4wNTVjZDgwMGY1YjcwNDQ2YmI2Nzk3ZGFiYzg5
OWVjOTZhMDcxYWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC0xMjUsOCArMTI1LDggQEAgcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIGNvbnRpbnVlV2l0aFBvbGljeURvd25sb2FkKEZyYW1lKiwgRG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
ICAgICBzdGF0aWMgdm9pZCBjb250aW51ZVdpdGhQb2xpY3lJZ25vcmUoRnJhbWUqLCBEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKEZyYW1lKiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSk7Ci0gICAgc3RhdGljIHZvaWQgZGlk
RmFpbExvYWRpbmcoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlRXJyb3ImKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiwgRG9j
dW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1l
KTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
c3RhdGljIHZvaWQgcmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNp
Z25lZCBzZW5kTGluZU51bWJlcik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVhIUlJlc3Bv
bnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwog
ICAgIHN0YXRpYyB2b2lkIHdpbGxMb2FkWEhSU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7CkBAIC0yNTMsOCArMjUzLDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBj
b250aW51ZVdpdGhQb2xpY3lEb3dubG9hZEltcGwoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0
YXRpYyB2b2lkIGNvbnRpbnVlV2l0aFBvbGljeUlnbm9yZUltcGwoRnJhbWUqLCBEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVDb250ZW50TGVuZ3RoSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgZGF0YUxlbmd0aCwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUg
ZmluaXNoVGltZSk7Ci0gICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmdJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGRvdWJs
ZSBmaW5pc2hUaW1lKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZ0ltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQgcmVzb3VyY2VSZXRyaWV2
ZWRCeVhNTEh0dHBSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIpOwogICAg
IHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVYSFJSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CiAgICAgc3RhdGljIHZvaWQgd2lsbExvYWRY
SFJTeW5jaHJvbm91c2x5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CkBAIC03NjIsMTkgKzc2
MiwxOSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVD
b250ZW50TGVuZ3RoKEZyYW1lKiBmcmFtZSwgdW5zaQogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhGcmFtZSogZnJhbWUs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpCitpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcoRnJhbWUqIGZyYW1l
LCBEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJs
ZSBmaW5pc2hUaW1lKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9y
RnJhbWUoZnJhbWUpKQotICAgICAgICBkaWRGaW5pc2hMb2FkaW5nSW1wbChpbnN0cnVtZW50aW5n
QWdlbnRzLCBpZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKKyAgICAgICAgZGlkRmluaXNoTG9hZGlu
Z0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwgbG9hZGVyLCBmaW5pc2hUaW1l
KTsKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEZhaWxMb2FkaW5nKEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRmFpbExvYWRpbmcoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYWRlciogbG9hZGVy
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQog
ewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUpKQot
ICAgICAgICBkaWRGYWlsTG9hZGluZ0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmll
ciwgZXJyb3IpOworICAgICAgICBkaWRGYWlsTG9hZGluZ0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50
cywgaWRlbnRpZmllciwgbG9hZGVyLCBlcnJvcik7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCA4ZDUzZDY4Zjc4
Y2ExYzcxODJjN2M0Mjc4NDI4MDY0Yjg1OTA1Yzc0Li43NWYwYjg5MTY0ODI3NjZkZThlM2ZhMzQ5
ZGE0MjgwNjc3YTE3NjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcApAQCAtMTEwLDEzICsxMTAsMjMgQEAgc3RhdGljIGJvb2wgcHJlcGFy
ZUNhY2hlZFJlc291cmNlQnVmZmVyKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSwgYm9v
bCogaGEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgZGVjb2RlQ2FjaGVkUmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlLCBTdHJpbmcqIHJlc3VsdCkKK3N0
YXRpYyBib29sIGNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVz
b3VyY2UsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7CiAgICAgYm9v
bCBoYXNaZXJvU2l6ZTsKICAgICBib29sIHByZXBhcmVkID0gcHJlcGFyZUNhY2hlZFJlc291cmNl
QnVmZmVyKGNhY2hlZFJlc291cmNlLCAmaGFzWmVyb1NpemUpOwogICAgIGlmICghcHJlcGFyZWQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICh3aXRoQmFzZTY0RW5jb2RlKSB7Cisg
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhc1plcm9TaXplID8gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKSA6IGNhY2hlZFJlc291cmNlLT5kYXRhKCk7CisKKyAgICAgICAgaWYg
KCFidWZmZXIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgKnJlc3VsdCA9
IGJhc2U2NEVuY29kZShidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBpZiAoY2FjaGVkUmVzb3VyY2UpIHsKICAgICAgICAg
c3dpdGNoIChjYWNoZWRSZXNvdXJjZS0+dHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OkNTU1N0eWxlU2hlZXQ6CkBAIC0xMzYsMTAgKzE0NiwyNCBAQCBzdGF0aWMgYm9vbCBk
ZWNvZGVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UsIFN0cmlu
ZyogcmVzdWx0KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wgZGVjb2RlTWFp
blJlc291cmNlKEZyYW1lKiBmcmFtZSwgU3RyaW5nKiByZXN1bHQpCitzdGF0aWMgYm9vbCBtYWlu
UmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJp
bmcqIHJlc3VsdCkKIHsKLSAgICBTdHJpbmcgdGV4dEVuY29kaW5nTmFtZSA9IGZyYW1lLT5kb2N1
bWVudCgpLT5pbnB1dEVuY29kaW5nKCk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7
CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBTdHJpbmcgdGV4
dEVuY29kaW5nTmFtZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5pbnB1dEVuY29kaW5nKCk7CisKKyAg
ICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KGJ1ZmZlciwg
dGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKK30KKworLy8gc3Rh
dGljCitib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChQYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUs
IGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCit7CisgICAgaWYgKHdpdGhC
YXNlNjRFbmNvZGUpIHsKKyAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZShidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAg
ICByZXR1cm4gZGVjb2RlU2hhcmVkQnVmZmVyKGJ1ZmZlciwgdGV4dEVuY29kaW5nTmFtZSwgcmVz
dWx0KTsKIH0KIApAQCAtMTQ4LDcgKzE3Miw4IEBAIFBhc3NPd25QdHI8SW5zcGVjdG9yUGFnZUFn
ZW50PiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpCiAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JQYWdlQWdlbnQoaW5zdHJ1bWVudGluZ0Fn
ZW50cywgcGFnZSwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
UGFnZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBGcmFt
ZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nKiByZXN1bHQpCisvLyBzdGF0aWMKK3Zv
aWQgSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBiYXNlNjRFbmNvZGUs
IFN0cmluZyogcmVzdWx0KQogewogICAgIGlmICghZnJhbWUpIHsKICAgICAgICAgKmVycm9yU3Ry
aW5nID0gIk5vIGZyYW1lIHRvIGdldCByZXNvdXJjZSBjb250ZW50IGZvciI7CkBAIC0xNTcsNTUg
KzE4MiwyMyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgRnJhbWUqIGZyYW1lLAogCiAgICAgRnJhbWVMb2FkZXIqIGZy
YW1lTG9hZGVyID0gZnJhbWUtPmxvYWRlcigpOwogICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIg
PSBmcmFtZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKTsKKworICAgIGlmICghbG9hZGVyKSB7Cisg
ICAgICAgICplcnJvclN0cmluZyA9ICJObyBkb2N1bWVudExvYWRlciBmb3IgZnJhbWUgdG8gZ2V0
IHJlc291cmNlIGNvbnRlbnQgZm9yIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAg
ICBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwsIGxvYWRlci0+dXJsKCkp
KQotICAgICAgICBzdWNjZXNzID0gZGVjb2RlTWFpblJlc291cmNlKGZyYW1lLCByZXN1bHQpOwor
ICAgICAgICBzdWNjZXNzID0gbWFpblJlc291cmNlQ29udGVudChmcmFtZSwgYmFzZTY0RW5jb2Rl
LCByZXN1bHQpOwogICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgc3VjY2VzcyA9IGRlY29kZUNh
Y2hlZFJlc291cmNlKGNhY2hlZFJlc291cmNlKGZyYW1lLCB1cmwpLCByZXN1bHQpOworICAgICAg
ICBzdWNjZXNzID0gY2FjaGVkUmVzb3VyY2VDb250ZW50KGNhY2hlZFJlc291cmNlKGZyYW1lLCB1
cmwpLCBiYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiAKICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAg
ICplcnJvclN0cmluZyA9ICJObyByZXNvdXJjZSB3aXRoIGdpdmVuIFVSTCBmb3VuZCI7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZUNvbnRlbnRCYXNlNjQoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nKiBy
ZXN1bHQpCi17Ci0gICAgU3RyaW5nIHRleHRFbmNvZGluZ05hbWU7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YSA9IEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VEYXRhKGZyYW1lLCB1
cmwsICZ0ZXh0RW5jb2RpbmdOYW1lKTsKLSAgICBpZiAoIWRhdGEpIHsKLSAgICAgICAgKnJlc3Vs
dCA9IFN0cmluZygpOwotICAgICAgICAqZXJyb3JTdHJpbmcgPSAiTm8gcmVzb3VyY2Ugd2l0aCBn
aXZlbiBVUkwgZm91bmQiOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgKnJlc3VsdCA9
IGJhc2U2NEVuY29kZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7Ci19Ci0KLVBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlRGF0YShGcmFtZSog
ZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nKiB0ZXh0RW5jb2RpbmdOYW1lKQotewotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKLSAgICBGcmFtZUxvYWRlciogZnJhbWVMb2Fk
ZXIgPSBmcmFtZS0+bG9hZGVyKCk7Ci0gICAgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IGZyYW1l
TG9hZGVyLT5kb2N1bWVudExvYWRlcigpOwotICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJ
ZGVudGlmaWVyKHVybCwgbG9hZGVyLT51cmwoKSkpIHsKLSAgICAgICAgKnRleHRFbmNvZGluZ05h
bWUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+aW5wdXRFbmNvZGluZygpOwotICAgICAgICBidWZmZXIg
PSBmcmFtZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwotICAg
ICAgICBpZiAoYnVmZmVyKQotICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKLSAgICB9Ci0KLSAg
ICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNh
Y2hlZFJlc291cmNlKGZyYW1lLCB1cmwpOwotICAgIGlmICghY2FjaGVkUmVzb3VyY2UpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgYm9vbCBoYXNaZXJvU2l6ZTsKLSAgICBib29sIHByZXBhcmVk
ID0gcHJlcGFyZUNhY2hlZFJlc291cmNlQnVmZmVyKGNhY2hlZFJlc291cmNlLCAmaGFzWmVyb1Np
emUpOwotICAgIGlmICghcHJlcGFyZWQpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgKnRleHRF
bmNvZGluZ05hbWUgPSBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RpbmcoKTsKLSAgICByZXR1cm4gaGFz
WmVyb1NpemUgPyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIDogY2FjaGVkUmVzb3VyY2UtPmRhdGEo
KTsKLX0KLQogQ2FjaGVkUmVzb3VyY2UqIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3Vy
Y2UoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgQ2FjaGVkUmVzb3VyY2Uq
IGNhY2hlZFJlc291cmNlID0gZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVy
KCktPmNhY2hlZFJlc291cmNlKHVybCk7CkBAIC00MjcsMTAgKzQyMCw4IEBAIHZvaWQgSW5zcGVj
dG9yUGFnZUFnZW50OjpnZXRSZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpCiAgICAgICAgICplcnJvclN0cmluZyA9ICJObyBmcmFtZSBmb3IgZ2l2ZW4g
aWQgZm91bmQiOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChvcHRpb25hbEJhc2U2
NEVuY29kZSA/ICpvcHRpb25hbEJhc2U2NEVuY29kZSA6IGZhbHNlKQotICAgICAgICBJbnNwZWN0
b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVudEJhc2U2NChlcnJvclN0cmluZywgZnJhbWUsIEtV
UkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBjb250ZW50KTsKLSAgICBlbHNlCi0gICAgICAgIElu
c3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KGVycm9yU3RyaW5nLCBmcmFtZSwgS1VS
TChQYXJzZWRVUkxTdHJpbmcsIHVybCksIGNvbnRlbnQpOworICAgIGJvb2wgYmFzZTY0RW5jb2Rl
ID0gb3B0aW9uYWxCYXNlNjRFbmNvZGUgPyAqb3B0aW9uYWxCYXNlNjRFbmNvZGUgOiBmYWxzZTsK
KyAgICByZXNvdXJjZUNvbnRlbnQoZXJyb3JTdHJpbmcsIGZyYW1lLCBLVVJMKFBhcnNlZFVSTFN0
cmluZywgdXJsKSwgYmFzZTY0RW5jb2RlLCBjb250ZW50KTsKIH0KIAogc3RhdGljIFN0cmluZyBj
cmVhdGVTZWFyY2hSZWdleFNvdXJjZShjb25zdCBTdHJpbmcmIHRleHQpCkBAIC00OTIsNyArNDgz
LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2VzKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb24KICAgICAgICAgICAgIHN3aXRjaCAoSW5zcGVj
dG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5cGUoKmNhY2hlZFJlc291cmNlKSkgewogICAg
ICAgICAgICAgY2FzZSBJbnNwZWN0b3JQYWdlQWdlbnQ6OlN0eWxlc2hlZXRSZXNvdXJjZToKICAg
ICAgICAgICAgIGNhc2UgSW5zcGVjdG9yUGFnZUFnZW50OjpTY3JpcHRSZXNvdXJjZToKLSAgICAg
ICAgICAgICAgICBpZiAoZGVjb2RlQ2FjaGVkUmVzb3VyY2UoY2FjaGVkUmVzb3VyY2UsICZjb250
ZW50KSkgeworICAgICAgICAgICAgICAgIGlmIChjYWNoZWRSZXNvdXJjZUNvbnRlbnQoY2FjaGVk
UmVzb3VyY2UsIGZhbHNlLCAmY29udGVudCkpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IG1h
dGNoZXNDb3VudCA9IGNvdW50UmVndWxhckV4cHJlc3Npb25NYXRjaGVzKHJlZ2V4LCBjb250ZW50
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoZXNDb3VudCkKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdC0+cHVzaFZhbHVlKGJ1aWxkT2JqZWN0Rm9yU2VhcmNoTWF0Y2goZnJh
bWVJZChmcmFtZSksIGNhY2hlZFJlc291cmNlLT51cmwoKSwgbWF0Y2hlc0NvdW50KSk7CkBAIC01
MDIsNyArNDkzLDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2Vz
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb24KICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAoZGVjb2RlTWFpblJl
c291cmNlKGZyYW1lLCAmY29udGVudCkpIHsKKyAgICAgICAgaWYgKG1haW5SZXNvdXJjZUNvbnRl
bnQoZnJhbWUsIGZhbHNlLCAmY29udGVudCkpIHsKICAgICAgICAgICAgIGludCBtYXRjaGVzQ291
bnQgPSBjb3VudFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hlcyhyZWdleCwgY29udGVudCk7CiAgICAg
ICAgICAgICBpZiAobWF0Y2hlc0NvdW50KQogICAgICAgICAgICAgICAgIHJlc3VsdC0+cHVzaFZh
bHVlKGJ1aWxkT2JqZWN0Rm9yU2VhcmNoTWF0Y2goZnJhbWVJZChmcmFtZSksIGZyYW1lLT5kb2N1
bWVudCgpLT51cmwoKSwgbWF0Y2hlc0NvdW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggYTcwOTM4ZWMyNmZiMWM5NmRiNGI2OWYzNjU3
ZWYyNjI1MGY1NThmMC4uNGQwYjQyYmE0MmQ5ZGI4OGE2YjBiY2UzZTZhZTBjN2E0ZWU3NDQ3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAt
NTQsNiArNTQsNyBAQCBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgS1VSTDsKIGNs
YXNzIFBhZ2U7CiBjbGFzcyBSZWd1bGFyRXhwcmVzc2lvbjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsK
IAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKQEAgLTc0LDggKzc1LDggQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yUGFnZUFnZW50PiBjcmVhdGUoSW5z
dHJ1bWVudGluZ0FnZW50cyosIFBhZ2UqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKIAotICAg
IHN0YXRpYyB2b2lkIHJlc291cmNlQ29udGVudChFcnJvclN0cmluZyosIEZyYW1lKiwgY29uc3Qg
S1VSTCYsIFN0cmluZyogcmVzdWx0KTsKLSAgICBzdGF0aWMgdm9pZCByZXNvdXJjZUNvbnRlbnRC
YXNlNjQoRXJyb3JTdHJpbmcqLCBGcmFtZSosIGNvbnN0IEtVUkwmLCBTdHJpbmcqIHJlc3VsdCk7
CisgICAgc3RhdGljIGJvb2wgc2hhcmVkQnVmZmVyQ29udGVudChQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4sIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5j
b2RlLCBTdHJpbmcqIHJlc3VsdCk7CisgICAgc3RhdGljIHZvaWQgcmVzb3VyY2VDb250ZW50KEVy
cm9yU3RyaW5nKiwgRnJhbWUqLCBjb25zdCBLVVJMJiwgYm9vbCBiYXNlNjRFbmNvZGUsIFN0cmlu
ZyogcmVzdWx0KTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3Vy
Y2VEYXRhKEZyYW1lKiwgY29uc3QgS1VSTCYsIFN0cmluZyogdGV4dEVuY29kaW5nTmFtZSk7CiAg
ICAgc3RhdGljIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZShGcmFtZSosIGNvbnN0IEtV
UkwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmNwcAppbmRleCBiNjgwNzMwMjg3MTI1M2M5MjJiYzZjZTk0YzJkNGI2YzRjYWNjMjEx
Li5hOWRkNTdhOTMxMzc4NjM1ZDE5MjU5YWRmZDg5ZGRjNDE2ZTk0YjY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC0z
NSw2ICszNSw3IEBACiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkNh
Y2hlZFJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJE
b2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkV2ZW50c0NvbGxlY3Rvci5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCkBAIC0yNDQsMTIgKzI0NSwxMiBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdl
bnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZQog
ICAgICAgICAgICAgdHlwZSA9IEluc3BlY3RvclBhZ2VBZ2VudDo6SW1hZ2VSZXNvdXJjZTsKICAg
ICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihyZXNwb25zZS51
cmwoKSwgbG9hZGVyLT51cmwoKSkgJiYgdHlwZSA9PSBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVy
UmVzb3VyY2UpCiAgICAgICAgICAgICB0eXBlID0gSW5zcGVjdG9yUGFnZUFnZW50OjpEb2N1bWVu
dFJlc291cmNlOwotICAgICAgICBlbHNlIGlmIChtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5IHx8
IG1fcmVzb3VyY2VzRGF0YS0+aXNYSFIoaWRlbnRpZmllcikpCisgICAgICAgIGVsc2UgaWYgKG1f
bG9hZGluZ1hIUlN5bmNocm9ub3VzbHkgfHwgbV9yZXNvdXJjZXNEYXRhLT5yZXNvdXJjZVR5cGUo
aWRlbnRpZmllcikgPT0gSW5zcGVjdG9yUGFnZUFnZW50OjpYSFJSZXNvdXJjZSkKICAgICAgICAg
ICAgIHR5cGUgPSBJbnNwZWN0b3JQYWdlQWdlbnQ6OlhIUlJlc291cmNlOwogCiAgICAgICAgIG1f
cmVzb3VyY2VzRGF0YS0+cmVzcG9uc2VSZWNlaXZlZChpZGVudGlmaWVyLCBtX3BhZ2VBZ2VudC0+
ZnJhbWVJZChsb2FkZXItPmZyYW1lKCkpLCByZXNwb25zZS51cmwoKSk7CiAgICAgfQotCisgICAg
bV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZVR5cGUoaWRlbnRpZmllciwgdHlwZSk7CiAgICAg
bV9mcm9udGVuZC0+cmVzcG9uc2VSZWNlaXZlZChzdGF0aWNfY2FzdDxpbnQ+KGlkZW50aWZpZXIp
LCBjdXJyZW50VGltZSgpLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZVN0cmluZyh0
eXBlKSwgcmVzb3VyY2VSZXNwb25zZSk7CiAgICAgLy8gSWYgd2UgcmV2YWxpZGF0ZWQgdGhlIHJl
c291cmNlIGFuZCBnb3QgTm90IG1vZGlmaWVkLCBzZW5kIGNvbnRlbnQgbGVuZ3RoIGZvbGxvd2lu
ZyBkaWRSZWNlaXZlUmVzcG9uc2UKICAgICAvLyBhcyB0aGVyZSB3aWxsIGJlIG5vIGNhbGxzIHRv
IGRpZFJlY2VpdmVDb250ZW50TGVuZ3RoIGZyb20gdGhlIG5ldHdvcmsgc3RhY2suCkBAIC0yNjIs
MTYgKzI2MywyMiBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVDb250
ZW50TGVuZ3RoKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaQogICAgIG1fZnJvbnRlbmQtPmRh
dGFSZWNlaXZlZChzdGF0aWNfY2FzdDxpbnQ+KGlkZW50aWZpZXIpLCBjdXJyZW50VGltZSgpLCBk
YXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJs
ZSBmaW5pc2hUaW1lKQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGaW5pc2hMb2Fk
aW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgZG91
YmxlIGZpbmlzaFRpbWUpCiB7CisgICAgaWYgKG1fcmVzb3VyY2VzRGF0YS0+cmVzb3VyY2VUeXBl
KGlkZW50aWZpZXIpID09IEluc3BlY3RvclBhZ2VBZ2VudDo6RG9jdW1lbnRSZXNvdXJjZSkKKyAg
ICAgICAgbV9yZXNvdXJjZXNEYXRhLT5hZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihpZGVudGlmaWVy
LCBsb2FkZXItPmZyYW1lTG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURh
dGEoKSwgbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5pbnB1dEVuY29kaW5nKCkpOworCiAg
ICAgaWYgKCFmaW5pc2hUaW1lKQogICAgICAgICBmaW5pc2hUaW1lID0gY3VycmVudFRpbWUoKTsK
IAogICAgIG1fZnJvbnRlbmQtPmxvYWRpbmdGaW5pc2hlZChzdGF0aWNfY2FzdDxpbnQ+KGlkZW50
aWZpZXIpLCBmaW5pc2hUaW1lKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojpk
aWRGYWlsTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGYWlsTG9hZGluZyh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKQogeworICAgIGlmIChtX3Jlc291cmNlc0RhdGEtPnJlc291cmNl
VHlwZShpZGVudGlmaWVyKSA9PSBJbnNwZWN0b3JQYWdlQWdlbnQ6OkRvY3VtZW50UmVzb3VyY2Up
CisgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoaWRlbnRp
ZmllciwgbG9hZGVyLT5mcmFtZUxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3Vy
Y2VEYXRhKCksIGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+aW5wdXRFbmNvZGluZygpKTsK
KwogICAgIG1fZnJvbnRlbmQtPmxvYWRpbmdGYWlsZWQoc3RhdGljX2Nhc3Q8aW50PihpZGVudGlm
aWVyKSwgY3VycmVudFRpbWUoKSwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSwgZXJyb3Iu
aXNDYW5jZWxsYXRpb24oKSk7CiB9CiAKQEAgLTI5Miw3ICsyOTksNyBAQCB2b2lkIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OnNldEluaXRpYWxYSFJDb250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29ucwogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVYSFJS
ZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiB7Ci0gICAgbV9yZXNvdXJjZXNEYXRh
LT5kaWRSZWNlaXZlWEhSUmVzcG9uc2UoaWRlbnRpZmllcik7CisgICAgbV9yZXNvdXJjZXNEYXRh
LT5zZXRSZXNvdXJjZVR5cGUoaWRlbnRpZmllciwgSW5zcGVjdG9yUGFnZUFnZW50OjpYSFJSZXNv
dXJjZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbExvYWRYSFJTeW5j
aHJvbm91c2x5KCkKQEAgLTQzMyw5ICs0NDAsMTkgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpnZXRSZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCB1bnNpZ24K
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChyZXNvdXJjZURhdGEtPmhhc0NvbnRl
bnQoKSkKKyAgICBib29sIGJhc2U2NEVuY29kZSA9IG9wdGlvbmFsQmFzZTY0RW5jb2RlID8gKm9w
dGlvbmFsQmFzZTY0RW5jb2RlIDogZmFsc2U7CisKKyAgICBpZiAocmVzb3VyY2VEYXRhLT5oYXND
b250ZW50KCkpIHsKICAgICAgICAgKmNvbnRlbnQgPSByZXNvdXJjZURhdGEtPmNvbnRlbnQoKTsK
LSAgICBlbHNlIGlmICghcmVzb3VyY2VEYXRhLT5mcmFtZUlkKCkuaXNOdWxsKCkgJiYgIXJlc291
cmNlRGF0YS0+dXJsKCkuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAocmVzb3VyY2VEYXRhLT5idWZmZXIoKSAmJiAhcmVzb3VyY2VEYXRhLT50ZXh0RW5jb2RpbmdO
YW1lKCkuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVk
QnVmZmVyQ29udGVudChyZXNvdXJjZURhdGEtPmJ1ZmZlcigpLCByZXNvdXJjZURhdGEtPnRleHRF
bmNvZGluZ05hbWUoKSwgYmFzZTY0RW5jb2RlLCBjb250ZW50KSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoIXJlc291cmNlRGF0YS0+ZnJhbWVJZCgpLmlzTnVsbCgpICYm
ICFyZXNvdXJjZURhdGEtPnVybCgpLmlzTnVsbCgpKQogICAgICAgICBtX3BhZ2VBZ2VudC0+Z2V0
UmVzb3VyY2VDb250ZW50KGVycm9yU3RyaW5nLCByZXNvdXJjZURhdGEtPmZyYW1lSWQoKSwgcmVz
b3VyY2VEYXRhLT51cmwoKSwgb3B0aW9uYWxCYXNlNjRFbmNvZGUsIGNvbnRlbnQpOwogICAgIGVs
c2UKICAgICAgICAgKmVycm9yU3RyaW5nID0gIk5vIGRhdGEgZm91bmQgZm9yIHJlc291cmNlIHdp
dGggZ2l2ZW4gaWRlbnRpZmllciI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRleCAwNmExMmJiOTFlMjhjZDEwZjRlNGQ3OGFkNGE0
ZDI5Y2UwZjc3Nzk0Li44NmMwYzIzNTdiYjg2YmEzNTc3ZTVhZGQwYmVkNTM3NmE3MDY5Y2U4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmgKQEAgLTkxLDggKzkxLDggQEAgcHVibGljOgogICAgIHZvaWQgbWFya1Jlc291cmNlQXNDYWNo
ZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsYW9kZXIsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCk7Ci0gICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgZG91YmxlIGZpbmlzaFRpbWUpOwotICAgIHZvaWQgZGlkRmFpbExvYWRpbmcodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBkb3Vi
bGUgZmluaXNoVGltZSk7CisgICAgdm9pZCBkaWRGYWlsTG9hZGluZyh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZv
aWQgZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiwgY29uc3Qg
Q2FjaGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIG1haW5GcmFtZU5hdmlnYXRlZChEb2N1bWVudExv
YWRlciopOwogICAgIHZvaWQgc2V0SW5pdGlhbFNjcmlwdENvbnRlbnQodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggMWRkOTNmMmIwMmU3
NzNkMWZkOWMwZjIwODE3NjBjMGNhNjkxODc5Yy4uYWI2YmE0OGVjMDI4MTBmMzRiZjBmZGE1MDNm
Njc4OGJiYWJmNGE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JTdHlsZVNoZWV0LmNwcApAQCAtMTA2OSw3ICsxMDY5LDcgQEAgYm9vbCBJbnNwZWN0b3JTdHls
ZVNoZWV0OjpyZXNvdXJjZVN0eWxlU2hlZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdAogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBTdHJpbmcgZXJyb3I7Ci0gICAgSW5zcGVjdG9yUGFn
ZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQoJmVycm9yLCBvd25lckRvY3VtZW50KCktPmZyYW1lKCks
IG1fcGFnZVN0eWxlU2hlZXQtPmZpbmFsVVJMKCksIHJlc3VsdCk7CisgICAgSW5zcGVjdG9yUGFn
ZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQoJmVycm9yLCBvd25lckRvY3VtZW50KCktPmZyYW1lKCks
IG1fcGFnZVN0eWxlU2hlZXQtPmZpbmFsVVJMKCksIGZhbHNlLCByZXN1bHQpOwogICAgIHJldHVy
biBlcnJvci5pc0VtcHR5KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDcyMjk2MzBkMGFmMWFkMWJmYzM2OGMzYjEx
NWE3ZmY5ZjJkZmU0YTEuLjQ3NGNjZjg0NGNkOTlmYWMwMWY5YWJkNmZiNTJmZDVkYzA5YzE5Nzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmNwcApAQCAtNDMsOCArNDMsOCBAQCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
OjpSZXNvdXJjZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdAogICAgIDogbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX2xvYWRlcklkKGxvYWRlcklkKQogICAgICwg
bV9oYXNDb250ZW50KGZhbHNlKQotICAgICwgbV9pc1hIUihmYWxzZSkKICAgICAsIG1faXNDb250
ZW50UHVyZ2VkKGZhbHNlKQorICAgICwgbV90eXBlKEluc3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJS
ZXNvdXJjZSkKIHsKIH0KIApAQCAtOTQsMTIgKzk0LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
c0RhdGE6OnJlc3BvbnNlUmVjZWl2ZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBT
dHJpCiAgICAgcmVzb3VyY2VEYXRhLT5zZXRVcmwodXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6ZGlkUmVjZWl2ZVhIUlJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
cikKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OnNldFJlc291cmNlVHlwZSh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIHR5cGUpCiB7
CiAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSBtX2lkZW50aWZpZXJUb1Jlc291cmNl
RGF0YU1hcC5nZXQoaWRlbnRpZmllcik7CiAgICAgaWYgKCFyZXNvdXJjZURhdGEpCiAgICAgICAg
IHJldHVybjsKLSAgICByZXNvdXJjZURhdGEtPnNldElzWEhSKHRydWUpOworICAgIHJlc291cmNl
RGF0YS0+c2V0VHlwZSh0eXBlKTsKK30KKworSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5
cGUgTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc291cmNlVHlwZSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIpCit7CisgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSBtX2lkZW50aWZpZXJU
b1Jlc291cmNlRGF0YU1hcC5nZXQoaWRlbnRpZmllcik7CisgICAgaWYgKCFyZXNvdXJjZURhdGEp
CisgICAgICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2U7CisgICAg
cmV0dXJuIHJlc291cmNlRGF0YS0+dHlwZSgpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjphZGRSZXNvdXJjZUNvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnQpCkBAIC0xMTcsMTIgKzEyNSwxMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjphZGRSZXNvdXJjZUNvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBTdAogICAgIH0KIH0KIAotYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6aXNYSFIodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyKQordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6YWRkUmVzb3Vy
Y2VTaGFyZWRCdWZmZXIodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCiB7CiAgICAg
UmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSBtX2lkZW50aWZpZXJUb1Jlc291cmNlRGF0YU1h
cC5nZXQoaWRlbnRpZmllcik7CiAgICAgaWYgKCFyZXNvdXJjZURhdGEpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gcmVzb3VyY2VEYXRhLT5pc1hIUigpOworICAgICAgICByZXR1
cm47CisgICAgcmVzb3VyY2VEYXRhLT5zZXRCdWZmZXIoYnVmZmVyKTsKKyAgICByZXNvdXJjZURh
dGEtPnNldFRleHRFbmNvZGluZ05hbWUodGV4dEVuY29kaW5nTmFtZSk7CiB9CiAKIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEqIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpkYXRhKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05l
dHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZDViMDU0NmU5MGRiZWFiZDBiNGNkYTI2N2FjOTZl
YTM2YTk1ZGUxNC4uNzE5YWFhM2ZlOGU0MjlhNzc4OTllYjhjOWU0OTE1YTA2MTNkMThkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAg
LTI5LDggKzI5LDEzIEBACiAjaWZuZGVmIE5ldHdvcmtSZXNvdXJjZXNEYXRhX2gKICNkZWZpbmUg
TmV0d29ya1Jlc291cmNlc0RhdGFfaAogCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKKwogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM4LDYgKzQz
LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBDYWNoZWRSZXNvdXJjZTsKKwogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEgewogcHVibGlj
OgogICAgIGNsYXNzIFJlc291cmNlRGF0YSB7CkBAIC01Myw5ICs2MSw2IEBAIHB1YmxpYzoKICAg
ICAgICAgU3RyaW5nIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgICAgIHZvaWQg
c2V0VXJsKFN0cmluZyB1cmwpIHsgbV91cmwgPSB1cmw7IH0KIAotICAgICAgICBib29sIGlzWEhS
KCkgY29uc3QgeyByZXR1cm4gbV9pc1hIUjsgfQotICAgICAgICB2b2lkIHNldElzWEhSKGJvb2wg
aXNYSFIpIHsgbV9pc1hIUiA9IGlzWEhSOyB9Ci0KICAgICAgICAgYm9vbCBoYXNDb250ZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNDb250ZW50OyB9CiAgICAgICAgIFN0cmluZyBjb250ZW50KCk7
CiAgICAgICAgIHZvaWQgYXBwZW5kQ29udGVudChjb25zdCBTdHJpbmcmKTsKQEAgLTY0LDYgKzY5
LDE1IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBzZXRJc0NvbnRlbnRQdXJnZWQoYm9vbCBpc0Nv
bnRlbnRQdXJnZWQpIHsgbV9pc0NvbnRlbnRQdXJnZWQgPSBpc0NvbnRlbnRQdXJnZWQ7IH0KICAg
ICAgICAgdW5zaWduZWQgcHVyZ2VDb250ZW50KCk7CiAKKyAgICAgICAgSW5zcGVjdG9yUGFnZUFn
ZW50OjpSZXNvdXJjZVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgICAg
ICB2b2lkIHNldFR5cGUoSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgdHlwZSkgeyBt
X3R5cGUgPSB0eXBlOyB9CisKKyAgICAgICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgICAgIHZvaWQgc2V0QnVmZmVyKFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIpIHsgbV9idWZmZXIgPSBidWZmZXI7IH0KKwor
ICAgICAgICBTdHJpbmcgdGV4dEVuY29kaW5nTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dEVu
Y29kaW5nTmFtZTsgfQorICAgICAgICB2b2lkIHNldFRleHRFbmNvZGluZ05hbWUoU3RyaW5nIHRl
eHRFbmNvZGluZ05hbWUpIHsgbV90ZXh0RW5jb2RpbmdOYW1lID0gdGV4dEVuY29kaW5nTmFtZTsg
fQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQgbG9uZyBtX2lkZW50aWZpZXI7CiAg
ICAgICAgIFN0cmluZyBtX2xvYWRlcklkOwpAQCAtNzEsOCArODUsMTEgQEAgcHVibGljOgogICAg
ICAgICBTdHJpbmcgbV91cmw7CiAgICAgICAgIGJvb2wgbV9oYXNDb250ZW50OwogICAgICAgICBT
dHJpbmdCdWlsZGVyIG1fY29udGVudEJ1aWxkZXI7Ci0gICAgICAgIGJvb2wgbV9pc1hIUjsKICAg
ICAgICAgYm9vbCBtX2lzQ29udGVudFB1cmdlZDsKKyAgICAgICAgSW5zcGVjdG9yUGFnZUFnZW50
OjpSZXNvdXJjZVR5cGUgbV90eXBlOworCisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
YnVmZmVyOworICAgICAgICBTdHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1lOwogICAgIH07CiAKICAg
ICBOZXR3b3JrUmVzb3VyY2VzRGF0YSgpOwpAQCAtODEsMTAgKzk4LDEwIEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgcmVzb3VyY2VDcmVhdGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBsb2FkZXJJZCk7CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCk7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlWEhSUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
KTsKKyAgICB2b2lkIHNldFJlc291cmNlVHlwZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIElu
c3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlKTsKKyAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6
OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAg
ICB2b2lkIGFkZFJlc291cmNlQ29udGVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgY29udGVudCk7Ci0KLSAgICBib29sIGlzWEhSKHVuc2lnbmVkIGxvbmcgaWRlbnRp
Zmllcik7CisgICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5j
b2RpbmdOYW1lKTsKICAgICBSZXNvdXJjZURhdGEqIGRhdGEodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyKTsKICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgcHJlc2VydmVkTG9hZGVySWQgPSBT
dHJpbmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWROb3RpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZp
ZXIuY3BwCmluZGV4IGVhNmNmMjJmYzZkYjkxY2YxMDMzYWQ4NTg0YTI4YTVmMDZiMTBmNjYuLmFj
NDZhOTQ0N2ZlNWMzNjI4ZjQ3MzUyZThjMmNjYTIyYmRlODNhNDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcApAQCAtOTcsNyArOTcsNyBAQCB2
b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRGYWlsVG9Mb2FkKFJlc291cmNlTG9hZGVyKiBs
b2FkZXIsIGNvbnN0IFJlc291cmNlRQogICAgIGlmICghZXJyb3IuaXNOdWxsKCkpCiAgICAgICAg
IG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhsb2Fk
ZXItPmRvY3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCBlcnJvcik7CiAKLSAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKG1fZnJhbWUsIGxvYWRl
ci0+aWRlbnRpZmllcigpLCBlcnJvcik7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGYWlsTG9hZGluZyhtX2ZyYW1lLCBsb2FkZXItPmRvY3VtZW50TG9hZGVyKCksIGxvYWRlci0+
aWRlbnRpZmllcigpLCBlcnJvcik7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmFz
c2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpA
QCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlk
RmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpCiB7CiAgICAgbV9mcmFt
ZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERpZEZpbmlzaExvYWRpbmcobG9hZGVyLCBp
ZGVudGlmaWVyKTsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9h
ZGluZyhtX2ZyYW1lLCBpZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcobV9mcmFtZSwgbG9hZGVyLCBpZGVudGlmaWVy
LCBmaW5pc2hUaW1lKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hU
cmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQ
YWdlKiBvbGRQYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCAyYTc2NTg5MDU1NzczYTVkNDFmNTQ4
YmFlYmE5ZmJmOWRhODc4YTRmLi4zNDhmYjZmZTE4MGNhNjFkOGM0NGY4ZjEwMzIyYmIxOWIzNjA4
YzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNTkwLDcgKzU5MCw3IEBAIHZvaWQgQXBwbGljYXRp
b25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25z
dCBjaGFyKiBkCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZyhS
ZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBkb3VibGUgZmluaXNoVGltZSkKIHsKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGlu
ZyhtX2ZyYW1lLCBtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOworICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhtX2ZyYW1lLCBtX2N1
cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRl
cigpLCBmaW5pc2hUaW1lKTsKICNlbmRpZgogCiAgICAgaWYgKGhhbmRsZSA9PSBtX21hbmlmZXN0
SGFuZGxlKSB7CkBAIC02MzEsNyArNjMxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgZG91YmxlIGZpbmkKIHZv
aWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGYWlsKFJlc291cmNlSGFuZGxlKiBoYW5kbGUs
IGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0g
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyhtX2ZyYW1lLCBtX2N1
cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIGVycm9yKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZhaWxMb2FkaW5nKG1fZnJhbWUsIG1fY3VycmVudFJlc291cmNlSWRlbnRpZmll
ciwgbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCksIGVycm9yKTsKICNlbmRpZgog
CiAgICAgaWYgKGhhbmRsZSA9PSBtX21hbmlmZXN0SGFuZGxlKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97586</attachid>
            <date>2011-06-17 05:18:20 -0700</date>
            <delta_ts>2011-06-17 13:00:45 -0700</delta_ts>
            <desc>build fixes</desc>
            <filename>bug-62810-20110617161818.patch</filename>
            <type>text/plain</type>
            <size>36634</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODkwNDkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwYmE4MDY3YWVjMjFjMTA3ZjdhM2Vj
NzYzNTQ5MmI1MWJhZmNlNTZjLi5mMjAyMjU4MjA4M2RlMWJmY2MxODcyYWZmOTE2NDc1N2Y5MTQz
OWE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDYtMTcgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTmV0d29yayBwYW5lbCBkb2VzIG5vdCBzaG93
IG1haW4gcmVzb3VyY2UgY29udGVudCBmb3IgaWZyYW1lcyBkZWxldGVkIGZyb20gdGhlIGRvY3Vt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjgx
MAorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWlmcmFt
ZS1sb2FkLWFuZC1kZWxldGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstaWZyYW1lLWxvYWQtYW5kLWRlbGV0ZS5odG1s
OiBBZGRlZC4KKwogMjAxMS0wNi0xNiAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWlmcmFtZS1s
b2FkLWFuZC1kZWxldGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9uZXR3b3JrLWlmcmFtZS1sb2FkLWFuZC1kZWxldGUtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ2MzkzODY2ZWYwZTE5YjA0MTVhMzUyM2VlN2UwZWRmNDk3MDk3MGUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L25ldHdvcmstaWZyYW1lLWxvYWQtYW5kLWRlbGV0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MiBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDM2OiBEb25lLgorVGVzdHMgdGhhdCBpZiBpZnJh
bWUgaXMgbG9hZGVkIGFuZCB0aGVuIGRlbGV0ZWQsIGluc3BlY3RvciBjb3VsZCBzdGlsbCBzaG93
IGl0cyBjb250ZW50LiBOb3RlIHRoYXQgaWYgaWZyYW1lLnNyYyBpcyBjaGFuZ2VkIHRvICJqYXZh
c2NyaXB0OicuLi5zb21lIGh0bWwuLi4nIiBhZnRlciBsb2FkaW5nLCB0aGVuIHdlIGhhdmUgZGlm
ZmVyZW50IGNvZGVwYXRoLCBoZW5jZSB0d28gdGVzdHM7CisKK2h0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwCityZXNvdXJjZS50eXBl
OiAwCityZXNvdXJjZS5jb250ZW50IGJlZm9yZSByZXF1ZXN0aW5nIGNvbnRlbnQ6IHVuZGVmaW5l
ZAorcmVzb3VyY2UuY29udGVudCBhZnRlciByZXF1ZXN0aW5nIGNvbnRlbnQ6IEhlbGxvIHdvcmxk
CitodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291
cmNlLnBocAorcmVzb3VyY2UudHlwZTogMAorcmVzb3VyY2UuY29udGVudCBiZWZvcmUgcmVxdWVz
dGluZyBjb250ZW50OiB1bmRlZmluZWQKK3Jlc291cmNlLmNvbnRlbnQgYWZ0ZXIgcmVxdWVzdGlu
ZyBjb250ZW50OiBIZWxsbyB3b3JsZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstaWZyYW1lLWxvYWQtYW5kLWRlbGV0ZS5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWlmcmFt
ZS1sb2FkLWFuZC1kZWxldGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmZhNzMwMGIzMjA2NDA4Zjg1ZDM5
OTFkNWY0OTZhMTRjNWE1NzVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWlmcmFtZS1sb2FkLWFuZC1kZWxldGUuaHRt
bApAQCAtMCwwICsxLDgyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9uZXR3b3JrLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KK3ZhciBpZnJhbWU7CisKK2Z1bmN0aW9uIGxvYWRJZnJhbWUo
KQoreworICAgIGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKKyAgICBpZnJhbWUub25sb2FkID0g
aWZyYW1lTG9hZGVkOworICAgIGlmcmFtZS5zcmMgPSAicmVzb3VyY2VzL3Jlc291cmNlLnBocCI7
Cit9CisKK2Z1bmN0aW9uIGlmcmFtZUxvYWRlZCgpCit7CisgICAgZG9jdW1lbnQuYm9keS5yZW1v
dmVDaGlsZChpZnJhbWUpOworCisgICAgbG9hZElmcmFtZUFuZENoYW5nZVNyY0FmdGVyTG9hZCgp
OworfQorCitmdW5jdGlvbiBsb2FkSWZyYW1lQW5kQ2hhbmdlU3JjQWZ0ZXJMb2FkKCkKK3sKKyAg
ICBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7CisgICAgaWZyYW1lLm9ubG9hZCA9IGlmcmFtZUxv
YWRlZENoYW5nZVNyYzsKKyAgICBpZnJhbWUuc3JjID0gInJlc291cmNlcy9yZXNvdXJjZS5waHAi
OworfQorCitmdW5jdGlvbiBpZnJhbWVMb2FkZWRDaGFuZ2VTcmMoKQoreworICAgIGlmcmFtZS5v
bmxvYWQgPSBudWxsOworICAgIGlmcmFtZS5zcmMgPSAiamF2YXNjcmlwdDonPGh0bWw+PC9odG1s
PiciOworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaWZyYW1lKTsKKyAgICBjb25zb2xl
LmxvZygiRG9uZS4iKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgSW5zcGVjdG9yVGVz
dC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUsICJhZGRNZXNz
YWdlIiwgc3RlcDIpOworICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImxvYWRJZnJh
bWUoKSIpOworCisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291
cmNlMSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbV2ViSW5zcGVjdG9y
LnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5ndGggLSAzXTsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQocmVzb3VyY2UxLnVybCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJyZXNvdXJjZS50eXBlOiAiICsgcmVzb3VyY2UxLnR5cGUpOworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgicmVzb3VyY2UuY29udGVudCBiZWZvcmUgcmVxdWVzdGluZyBj
b250ZW50OiAiICsgcmVzb3VyY2UxLmNvbnRlbnQpOworICAgICAgICByZXNvdXJjZTEucmVxdWVz
dENvbnRlbnQoc3RlcDMpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAzKCkKKyAgICB7Cisg
ICAgICAgIHZhciByZXNvdXJjZTEgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3Vy
Y2VzW1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXMubGVuZ3RoIC0gM107Cisg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJyZXNvdXJjZS5jb250ZW50IGFmdGVyIHJl
cXVlc3RpbmcgY29udGVudDogIiArIHJlc291cmNlMS5jb250ZW50KTsKKworICAgICAgICB2YXIg
cmVzb3VyY2UyID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlc1tXZWJJbnNw
ZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzLmxlbmd0aCAtIDFdOworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdChyZXNvdXJjZTIudXJsKTsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoInJlc291cmNlLnR5cGU6ICIgKyByZXNvdXJjZTIudHlwZSk7CisgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJyZXNvdXJjZS5jb250ZW50IGJlZm9yZSByZXF1ZXN0
aW5nIGNvbnRlbnQ6ICIgKyByZXNvdXJjZTIuY29udGVudCk7CisgICAgICAgIHJlc291cmNlMi5y
ZXF1ZXN0Q29udGVudChzdGVwNCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDQoKQorICAg
IHsKKyAgICAgICAgdmFyIHJlc291cmNlMiA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5y
ZXNvdXJjZXNbV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlc291cmNlcy5sZW5ndGggLSAx
XTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlLmNvbnRlbnQgYWZ0
ZXIgcmVxdWVzdGluZyBjb250ZW50OiAiICsgcmVzb3VyY2UyLmNvbnRlbnQpOworCisgICAgICAg
IEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgIDxwPgorICAgIFRlc3RzIHRoYXQgaWYg
aWZyYW1lIGlzIGxvYWRlZCBhbmQgdGhlbiBkZWxldGVkLCBpbnNwZWN0b3IgY291bGQgc3RpbGwg
c2hvdyBpdHMgY29udGVudC4KKyAgICBOb3RlIHRoYXQgaWYgaWZyYW1lLnNyYyBpcyBjaGFuZ2Vk
IHRvICJqYXZhc2NyaXB0OicuLi5zb21lIGh0bWwuLi4nIiBhZnRlcgorICAgIGxvYWRpbmcsIHRo
ZW4gd2UgaGF2ZSBkaWZmZXJlbnQgY29kZXBhdGgsIGhlbmNlIHR3byB0ZXN0czsKKyAgPC9wPgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZmMDVmZGQ0NmM1NTFjZjMwMTEwZmFlMmMw
MmRmNDFjMjg3N2Y5N2EuLjEwOWVkNjUwMzgzNzQ0MGNlY2M0NjEyODNmMGY2YjI3YmYzOTNiYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NCBAQAorMjAxMS0wNi0xNyAgVnNldm9sb2QgVmxhc292
ICA8dnNldmlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBOZXR3b3JrIHBhbmVsIGRvZXMgbm90IHNo
b3cgbWFpbiByZXNvdXJjZSBjb250ZW50IGZvciBpZnJhbWVzIGRlbGV0ZWQgZnJvbSB0aGUgZG9j
dW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYy
ODEwCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3Jr
LWlmcmFtZS1sb2FkLWFuZC1kZWxldGUuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmdJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmdJbXBsKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
YWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6bWFpblJlc291cmNlQ29u
dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZl
ckNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJj
ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpnZXRSZXNv
dXJjZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZWFy
Y2hJblJlc291cmNlcyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5o
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZhaWxM
b2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJl
Y2VpdmVYSFJSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpnZXRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6cmVzb3VyY2VTdHls
ZVNoZWV0VGV4dCk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6
OlJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
c2V0UmVzb3VyY2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpyZXNvdXJjZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0Rh
dGE6OlJlc291cmNlRGF0YTo6c2V0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6c2V0QnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnRleHRFbmNvZGluZ05h
bWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6c2V0VGV4dEVuY29kaW5nTmFtZSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE5v
dGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRG
YWlsVG9Mb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNw
YXRjaERpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdy
b3VwOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVHcm91cDo6ZGlkRmFpbCk6CisKIDIwMTEtMDYtMTYgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZp
a0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAKaW5kZXggZjNiYjgzNDQyNmQ0Y2Q1MzMyNTM1YzhiNjlkZWU5Yzc0M2M1YzFjMS4uMjYz
MzY5ZGI5NWI0YWJhNzg0YWE5Yjg4YzZjNTJkNjA3NDg4ZDMxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTQ5
MCwyMCArNDkwLDIwIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZl
Q29udGVudExlbmd0aEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyoKICAgICAgICAgcmVzb3VyY2VB
Z2VudC0+ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoaWRlbnRpZmllciwgZGF0YUxlbmd0aCwgZW5j
b2RlZERhdGFMZW5ndGgpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSkKK3ZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQogewogICAgIGlmIChJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+
aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRGaW5p
c2hMb2FkaW5nUmVzb3VyY2UoaWRlbnRpZmllciwgZmFsc2UsIGZpbmlzaFRpbWUpOwogICAgIGlm
IChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQotICAgICAgICByZXNvdXJjZUFnZW50LT5k
aWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOworICAgICAgICByZXNvdXJj
ZUFnZW50LT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGxvYWRlciwgZmluaXNoVGltZSk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZ0ltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3ZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRl
ciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBpZiAoSW5zcGVj
dG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmlu
c3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRmluaXNo
TG9hZGluZ1Jlc291cmNlKGlkZW50aWZpZXIsIHRydWUsIDApOwogICAgIGlmIChJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVj
dG9yUmVzb3VyY2VBZ2VudCgpKQotICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRGYWlsTG9hZGlu
ZyhpZGVudGlmaWVyLCBlcnJvcik7CisgICAgICAgIHJlc291cmNlQWdlbnQtPmRpZEZhaWxMb2Fk
aW5nKGlkZW50aWZpZXIsIGxvYWRlciwgZXJyb3IpOwogICAgIGlmIChJbnNwZWN0b3JDb25zb2xl
QWdlbnQqIGNvbnNvbGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckNvbnNv
bGVBZ2VudCgpKQogICAgICAgICBjb25zb2xlQWdlbnQtPmRpZEZhaWxMb2FkaW5nKGlkZW50aWZp
ZXIsIGVycm9yKTsgLy8gVGhpcyBzaG91bGQgY29tZSBBRlRFUiByZXNvdXJjZSBub3RpZmljYXRp
b24sIGZyb250LWVuZCByZWxpZXMgb24gdGhpcy4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCAxODY0ZmY0M2QzMjQ5
YzBjYjYyMzc1MDQwYjYwM2VhNDRjMTgzNjA4Li4wNTVjZDgwMGY1YjcwNDQ2YmI2Nzk3ZGFiYzg5
OWVjOTZhMDcxYWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC0xMjUsOCArMTI1LDggQEAgcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIGNvbnRpbnVlV2l0aFBvbGljeURvd25sb2FkKEZyYW1lKiwgRG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
ICAgICBzdGF0aWMgdm9pZCBjb250aW51ZVdpdGhQb2xpY3lJZ25vcmUoRnJhbWUqLCBEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKEZyYW1lKiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSk7Ci0gICAgc3RhdGljIHZvaWQgZGlk
RmFpbExvYWRpbmcoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlRXJyb3ImKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiwgRG9j
dW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1l
KTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
c3RhdGljIHZvaWQgcmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNp
Z25lZCBzZW5kTGluZU51bWJlcik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVhIUlJlc3Bv
bnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwog
ICAgIHN0YXRpYyB2b2lkIHdpbGxMb2FkWEhSU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7CkBAIC0yNTMsOCArMjUzLDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBj
b250aW51ZVdpdGhQb2xpY3lEb3dubG9hZEltcGwoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0
YXRpYyB2b2lkIGNvbnRpbnVlV2l0aFBvbGljeUlnbm9yZUltcGwoRnJhbWUqLCBEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVDb250ZW50TGVuZ3RoSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgZGF0YUxlbmd0aCwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUg
ZmluaXNoVGltZSk7Ci0gICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmdJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGRvdWJs
ZSBmaW5pc2hUaW1lKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZ0ltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQgcmVzb3VyY2VSZXRyaWV2
ZWRCeVhNTEh0dHBSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIpOwogICAg
IHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVYSFJSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CiAgICAgc3RhdGljIHZvaWQgd2lsbExvYWRY
SFJTeW5jaHJvbm91c2x5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CkBAIC03NjIsMTkgKzc2
MiwxOSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVD
b250ZW50TGVuZ3RoKEZyYW1lKiBmcmFtZSwgdW5zaQogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhGcmFtZSogZnJhbWUs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpCitpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcoRnJhbWUqIGZyYW1l
LCBEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJs
ZSBmaW5pc2hUaW1lKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9y
RnJhbWUoZnJhbWUpKQotICAgICAgICBkaWRGaW5pc2hMb2FkaW5nSW1wbChpbnN0cnVtZW50aW5n
QWdlbnRzLCBpZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKKyAgICAgICAgZGlkRmluaXNoTG9hZGlu
Z0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwgbG9hZGVyLCBmaW5pc2hUaW1l
KTsKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEZhaWxMb2FkaW5nKEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRmFpbExvYWRpbmcoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYWRlciogbG9hZGVy
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQog
ewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUpKQot
ICAgICAgICBkaWRGYWlsTG9hZGluZ0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmll
ciwgZXJyb3IpOworICAgICAgICBkaWRGYWlsTG9hZGluZ0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50
cywgaWRlbnRpZmllciwgbG9hZGVyLCBlcnJvcik7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCA4ZDUzZDY4Zjc4
Y2ExYzcxODJjN2M0Mjc4NDI4MDY0Yjg1OTA1Yzc0Li43NWYwYjg5MTY0ODI3NjZkZThlM2ZhMzQ5
ZGE0MjgwNjc3YTE3NjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcApAQCAtMTEwLDEzICsxMTAsMjMgQEAgc3RhdGljIGJvb2wgcHJlcGFy
ZUNhY2hlZFJlc291cmNlQnVmZmVyKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSwgYm9v
bCogaGEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgZGVjb2RlQ2FjaGVkUmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlLCBTdHJpbmcqIHJlc3VsdCkKK3N0
YXRpYyBib29sIGNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVz
b3VyY2UsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7CiAgICAgYm9v
bCBoYXNaZXJvU2l6ZTsKICAgICBib29sIHByZXBhcmVkID0gcHJlcGFyZUNhY2hlZFJlc291cmNl
QnVmZmVyKGNhY2hlZFJlc291cmNlLCAmaGFzWmVyb1NpemUpOwogICAgIGlmICghcHJlcGFyZWQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICh3aXRoQmFzZTY0RW5jb2RlKSB7Cisg
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhc1plcm9TaXplID8gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKSA6IGNhY2hlZFJlc291cmNlLT5kYXRhKCk7CisKKyAgICAgICAgaWYg
KCFidWZmZXIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgKnJlc3VsdCA9
IGJhc2U2NEVuY29kZShidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBpZiAoY2FjaGVkUmVzb3VyY2UpIHsKICAgICAgICAg
c3dpdGNoIChjYWNoZWRSZXNvdXJjZS0+dHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OkNTU1N0eWxlU2hlZXQ6CkBAIC0xMzYsMTAgKzE0NiwyNCBAQCBzdGF0aWMgYm9vbCBk
ZWNvZGVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UsIFN0cmlu
ZyogcmVzdWx0KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wgZGVjb2RlTWFp
blJlc291cmNlKEZyYW1lKiBmcmFtZSwgU3RyaW5nKiByZXN1bHQpCitzdGF0aWMgYm9vbCBtYWlu
UmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJp
bmcqIHJlc3VsdCkKIHsKLSAgICBTdHJpbmcgdGV4dEVuY29kaW5nTmFtZSA9IGZyYW1lLT5kb2N1
bWVudCgpLT5pbnB1dEVuY29kaW5nKCk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7
CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBTdHJpbmcgdGV4
dEVuY29kaW5nTmFtZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5pbnB1dEVuY29kaW5nKCk7CisKKyAg
ICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KGJ1ZmZlciwg
dGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKK30KKworLy8gc3Rh
dGljCitib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChQYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUs
IGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCit7CisgICAgaWYgKHdpdGhC
YXNlNjRFbmNvZGUpIHsKKyAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZShidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAg
ICByZXR1cm4gZGVjb2RlU2hhcmVkQnVmZmVyKGJ1ZmZlciwgdGV4dEVuY29kaW5nTmFtZSwgcmVz
dWx0KTsKIH0KIApAQCAtMTQ4LDcgKzE3Miw4IEBAIFBhc3NPd25QdHI8SW5zcGVjdG9yUGFnZUFn
ZW50PiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpCiAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JQYWdlQWdlbnQoaW5zdHJ1bWVudGluZ0Fn
ZW50cywgcGFnZSwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
UGFnZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBGcmFt
ZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nKiByZXN1bHQpCisvLyBzdGF0aWMKK3Zv
aWQgSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBiYXNlNjRFbmNvZGUs
IFN0cmluZyogcmVzdWx0KQogewogICAgIGlmICghZnJhbWUpIHsKICAgICAgICAgKmVycm9yU3Ry
aW5nID0gIk5vIGZyYW1lIHRvIGdldCByZXNvdXJjZSBjb250ZW50IGZvciI7CkBAIC0xNTcsNTUg
KzE4MiwyMyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgRnJhbWUqIGZyYW1lLAogCiAgICAgRnJhbWVMb2FkZXIqIGZy
YW1lTG9hZGVyID0gZnJhbWUtPmxvYWRlcigpOwogICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIg
PSBmcmFtZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKTsKKworICAgIGlmICghbG9hZGVyKSB7Cisg
ICAgICAgICplcnJvclN0cmluZyA9ICJObyBkb2N1bWVudExvYWRlciBmb3IgZnJhbWUgdG8gZ2V0
IHJlc291cmNlIGNvbnRlbnQgZm9yIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAg
ICBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwsIGxvYWRlci0+dXJsKCkp
KQotICAgICAgICBzdWNjZXNzID0gZGVjb2RlTWFpblJlc291cmNlKGZyYW1lLCByZXN1bHQpOwor
ICAgICAgICBzdWNjZXNzID0gbWFpblJlc291cmNlQ29udGVudChmcmFtZSwgYmFzZTY0RW5jb2Rl
LCByZXN1bHQpOwogICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgc3VjY2VzcyA9IGRlY29kZUNh
Y2hlZFJlc291cmNlKGNhY2hlZFJlc291cmNlKGZyYW1lLCB1cmwpLCByZXN1bHQpOworICAgICAg
ICBzdWNjZXNzID0gY2FjaGVkUmVzb3VyY2VDb250ZW50KGNhY2hlZFJlc291cmNlKGZyYW1lLCB1
cmwpLCBiYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiAKICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAg
ICplcnJvclN0cmluZyA9ICJObyByZXNvdXJjZSB3aXRoIGdpdmVuIFVSTCBmb3VuZCI7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZUNvbnRlbnRCYXNlNjQoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nKiBy
ZXN1bHQpCi17Ci0gICAgU3RyaW5nIHRleHRFbmNvZGluZ05hbWU7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YSA9IEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VEYXRhKGZyYW1lLCB1
cmwsICZ0ZXh0RW5jb2RpbmdOYW1lKTsKLSAgICBpZiAoIWRhdGEpIHsKLSAgICAgICAgKnJlc3Vs
dCA9IFN0cmluZygpOwotICAgICAgICAqZXJyb3JTdHJpbmcgPSAiTm8gcmVzb3VyY2Ugd2l0aCBn
aXZlbiBVUkwgZm91bmQiOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgKnJlc3VsdCA9
IGJhc2U2NEVuY29kZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7Ci19Ci0KLVBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlRGF0YShGcmFtZSog
ZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nKiB0ZXh0RW5jb2RpbmdOYW1lKQotewotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKLSAgICBGcmFtZUxvYWRlciogZnJhbWVMb2Fk
ZXIgPSBmcmFtZS0+bG9hZGVyKCk7Ci0gICAgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IGZyYW1l
TG9hZGVyLT5kb2N1bWVudExvYWRlcigpOwotICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJ
ZGVudGlmaWVyKHVybCwgbG9hZGVyLT51cmwoKSkpIHsKLSAgICAgICAgKnRleHRFbmNvZGluZ05h
bWUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+aW5wdXRFbmNvZGluZygpOwotICAgICAgICBidWZmZXIg
PSBmcmFtZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwotICAg
ICAgICBpZiAoYnVmZmVyKQotICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKLSAgICB9Ci0KLSAg
ICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNh
Y2hlZFJlc291cmNlKGZyYW1lLCB1cmwpOwotICAgIGlmICghY2FjaGVkUmVzb3VyY2UpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgYm9vbCBoYXNaZXJvU2l6ZTsKLSAgICBib29sIHByZXBhcmVk
ID0gcHJlcGFyZUNhY2hlZFJlc291cmNlQnVmZmVyKGNhY2hlZFJlc291cmNlLCAmaGFzWmVyb1Np
emUpOwotICAgIGlmICghcHJlcGFyZWQpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgKnRleHRF
bmNvZGluZ05hbWUgPSBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RpbmcoKTsKLSAgICByZXR1cm4gaGFz
WmVyb1NpemUgPyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIDogY2FjaGVkUmVzb3VyY2UtPmRhdGEo
KTsKLX0KLQogQ2FjaGVkUmVzb3VyY2UqIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3Vy
Y2UoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgQ2FjaGVkUmVzb3VyY2Uq
IGNhY2hlZFJlc291cmNlID0gZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVy
KCktPmNhY2hlZFJlc291cmNlKHVybCk7CkBAIC00MjcsMTAgKzQyMCw4IEBAIHZvaWQgSW5zcGVj
dG9yUGFnZUFnZW50OjpnZXRSZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpCiAgICAgICAgICplcnJvclN0cmluZyA9ICJObyBmcmFtZSBmb3IgZ2l2ZW4g
aWQgZm91bmQiOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChvcHRpb25hbEJhc2U2
NEVuY29kZSA/ICpvcHRpb25hbEJhc2U2NEVuY29kZSA6IGZhbHNlKQotICAgICAgICBJbnNwZWN0
b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVudEJhc2U2NChlcnJvclN0cmluZywgZnJhbWUsIEtV
UkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBjb250ZW50KTsKLSAgICBlbHNlCi0gICAgICAgIElu
c3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KGVycm9yU3RyaW5nLCBmcmFtZSwgS1VS
TChQYXJzZWRVUkxTdHJpbmcsIHVybCksIGNvbnRlbnQpOworICAgIGJvb2wgYmFzZTY0RW5jb2Rl
ID0gb3B0aW9uYWxCYXNlNjRFbmNvZGUgPyAqb3B0aW9uYWxCYXNlNjRFbmNvZGUgOiBmYWxzZTsK
KyAgICByZXNvdXJjZUNvbnRlbnQoZXJyb3JTdHJpbmcsIGZyYW1lLCBLVVJMKFBhcnNlZFVSTFN0
cmluZywgdXJsKSwgYmFzZTY0RW5jb2RlLCBjb250ZW50KTsKIH0KIAogc3RhdGljIFN0cmluZyBj
cmVhdGVTZWFyY2hSZWdleFNvdXJjZShjb25zdCBTdHJpbmcmIHRleHQpCkBAIC00OTIsNyArNDgz
LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2VzKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb24KICAgICAgICAgICAgIHN3aXRjaCAoSW5zcGVj
dG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5cGUoKmNhY2hlZFJlc291cmNlKSkgewogICAg
ICAgICAgICAgY2FzZSBJbnNwZWN0b3JQYWdlQWdlbnQ6OlN0eWxlc2hlZXRSZXNvdXJjZToKICAg
ICAgICAgICAgIGNhc2UgSW5zcGVjdG9yUGFnZUFnZW50OjpTY3JpcHRSZXNvdXJjZToKLSAgICAg
ICAgICAgICAgICBpZiAoZGVjb2RlQ2FjaGVkUmVzb3VyY2UoY2FjaGVkUmVzb3VyY2UsICZjb250
ZW50KSkgeworICAgICAgICAgICAgICAgIGlmIChjYWNoZWRSZXNvdXJjZUNvbnRlbnQoY2FjaGVk
UmVzb3VyY2UsIGZhbHNlLCAmY29udGVudCkpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IG1h
dGNoZXNDb3VudCA9IGNvdW50UmVndWxhckV4cHJlc3Npb25NYXRjaGVzKHJlZ2V4LCBjb250ZW50
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoZXNDb3VudCkKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdC0+cHVzaFZhbHVlKGJ1aWxkT2JqZWN0Rm9yU2VhcmNoTWF0Y2goZnJh
bWVJZChmcmFtZSksIGNhY2hlZFJlc291cmNlLT51cmwoKSwgbWF0Y2hlc0NvdW50KSk7CkBAIC01
MDIsNyArNDkzLDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2Vz
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb24KICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAoZGVjb2RlTWFpblJl
c291cmNlKGZyYW1lLCAmY29udGVudCkpIHsKKyAgICAgICAgaWYgKG1haW5SZXNvdXJjZUNvbnRl
bnQoZnJhbWUsIGZhbHNlLCAmY29udGVudCkpIHsKICAgICAgICAgICAgIGludCBtYXRjaGVzQ291
bnQgPSBjb3VudFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hlcyhyZWdleCwgY29udGVudCk7CiAgICAg
ICAgICAgICBpZiAobWF0Y2hlc0NvdW50KQogICAgICAgICAgICAgICAgIHJlc3VsdC0+cHVzaFZh
bHVlKGJ1aWxkT2JqZWN0Rm9yU2VhcmNoTWF0Y2goZnJhbWVJZChmcmFtZSksIGZyYW1lLT5kb2N1
bWVudCgpLT51cmwoKSwgbWF0Y2hlc0NvdW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggYTcwOTM4ZWMyNmZiMWM5NmRiNGI2OWYzNjU3
ZWYyNjI1MGY1NThmMC4uNGQwYjQyYmE0MmQ5ZGI4OGE2YjBiY2UzZTZhZTBjN2E0ZWU3NDQ3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAt
NTQsNiArNTQsNyBAQCBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgS1VSTDsKIGNs
YXNzIFBhZ2U7CiBjbGFzcyBSZWd1bGFyRXhwcmVzc2lvbjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsK
IAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKQEAgLTc0LDggKzc1LDggQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yUGFnZUFnZW50PiBjcmVhdGUoSW5z
dHJ1bWVudGluZ0FnZW50cyosIFBhZ2UqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKIAotICAg
IHN0YXRpYyB2b2lkIHJlc291cmNlQ29udGVudChFcnJvclN0cmluZyosIEZyYW1lKiwgY29uc3Qg
S1VSTCYsIFN0cmluZyogcmVzdWx0KTsKLSAgICBzdGF0aWMgdm9pZCByZXNvdXJjZUNvbnRlbnRC
YXNlNjQoRXJyb3JTdHJpbmcqLCBGcmFtZSosIGNvbnN0IEtVUkwmLCBTdHJpbmcqIHJlc3VsdCk7
CisgICAgc3RhdGljIGJvb2wgc2hhcmVkQnVmZmVyQ29udGVudChQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4sIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5j
b2RlLCBTdHJpbmcqIHJlc3VsdCk7CisgICAgc3RhdGljIHZvaWQgcmVzb3VyY2VDb250ZW50KEVy
cm9yU3RyaW5nKiwgRnJhbWUqLCBjb25zdCBLVVJMJiwgYm9vbCBiYXNlNjRFbmNvZGUsIFN0cmlu
ZyogcmVzdWx0KTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3Vy
Y2VEYXRhKEZyYW1lKiwgY29uc3QgS1VSTCYsIFN0cmluZyogdGV4dEVuY29kaW5nTmFtZSk7CiAg
ICAgc3RhdGljIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZShGcmFtZSosIGNvbnN0IEtV
UkwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmNwcAppbmRleCBiNjgwNzMwMjg3MTI1M2M5MjJiYzZjZTk0YzJkNGI2YzRjYWNjMjEx
Li5hOWRkNTdhOTMxMzc4NjM1ZDE5MjU5YWRmZDg5ZGRjNDE2ZTk0YjY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC0z
NSw2ICszNSw3IEBACiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkNh
Y2hlZFJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJE
b2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkV2ZW50c0NvbGxlY3Rvci5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCkBAIC0yNDQsMTIgKzI0NSwxMiBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdl
bnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZQog
ICAgICAgICAgICAgdHlwZSA9IEluc3BlY3RvclBhZ2VBZ2VudDo6SW1hZ2VSZXNvdXJjZTsKICAg
ICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihyZXNwb25zZS51
cmwoKSwgbG9hZGVyLT51cmwoKSkgJiYgdHlwZSA9PSBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVy
UmVzb3VyY2UpCiAgICAgICAgICAgICB0eXBlID0gSW5zcGVjdG9yUGFnZUFnZW50OjpEb2N1bWVu
dFJlc291cmNlOwotICAgICAgICBlbHNlIGlmIChtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5IHx8
IG1fcmVzb3VyY2VzRGF0YS0+aXNYSFIoaWRlbnRpZmllcikpCisgICAgICAgIGVsc2UgaWYgKG1f
bG9hZGluZ1hIUlN5bmNocm9ub3VzbHkgfHwgbV9yZXNvdXJjZXNEYXRhLT5yZXNvdXJjZVR5cGUo
aWRlbnRpZmllcikgPT0gSW5zcGVjdG9yUGFnZUFnZW50OjpYSFJSZXNvdXJjZSkKICAgICAgICAg
ICAgIHR5cGUgPSBJbnNwZWN0b3JQYWdlQWdlbnQ6OlhIUlJlc291cmNlOwogCiAgICAgICAgIG1f
cmVzb3VyY2VzRGF0YS0+cmVzcG9uc2VSZWNlaXZlZChpZGVudGlmaWVyLCBtX3BhZ2VBZ2VudC0+
ZnJhbWVJZChsb2FkZXItPmZyYW1lKCkpLCByZXNwb25zZS51cmwoKSk7CiAgICAgfQotCisgICAg
bV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZVR5cGUoaWRlbnRpZmllciwgdHlwZSk7CiAgICAg
bV9mcm9udGVuZC0+cmVzcG9uc2VSZWNlaXZlZChzdGF0aWNfY2FzdDxpbnQ+KGlkZW50aWZpZXIp
LCBjdXJyZW50VGltZSgpLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZVN0cmluZyh0
eXBlKSwgcmVzb3VyY2VSZXNwb25zZSk7CiAgICAgLy8gSWYgd2UgcmV2YWxpZGF0ZWQgdGhlIHJl
c291cmNlIGFuZCBnb3QgTm90IG1vZGlmaWVkLCBzZW5kIGNvbnRlbnQgbGVuZ3RoIGZvbGxvd2lu
ZyBkaWRSZWNlaXZlUmVzcG9uc2UKICAgICAvLyBhcyB0aGVyZSB3aWxsIGJlIG5vIGNhbGxzIHRv
IGRpZFJlY2VpdmVDb250ZW50TGVuZ3RoIGZyb20gdGhlIG5ldHdvcmsgc3RhY2suCkBAIC0yNjIs
MTYgKzI2MywyMiBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVDb250
ZW50TGVuZ3RoKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaQogICAgIG1fZnJvbnRlbmQtPmRh
dGFSZWNlaXZlZChzdGF0aWNfY2FzdDxpbnQ+KGlkZW50aWZpZXIpLCBjdXJyZW50VGltZSgpLCBk
YXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJs
ZSBmaW5pc2hUaW1lKQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGaW5pc2hMb2Fk
aW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgZG91
YmxlIGZpbmlzaFRpbWUpCiB7CisgICAgaWYgKG1fcmVzb3VyY2VzRGF0YS0+cmVzb3VyY2VUeXBl
KGlkZW50aWZpZXIpID09IEluc3BlY3RvclBhZ2VBZ2VudDo6RG9jdW1lbnRSZXNvdXJjZSkKKyAg
ICAgICAgbV9yZXNvdXJjZXNEYXRhLT5hZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihpZGVudGlmaWVy
LCBsb2FkZXItPmZyYW1lTG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURh
dGEoKSwgbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5pbnB1dEVuY29kaW5nKCkpOworCiAg
ICAgaWYgKCFmaW5pc2hUaW1lKQogICAgICAgICBmaW5pc2hUaW1lID0gY3VycmVudFRpbWUoKTsK
IAogICAgIG1fZnJvbnRlbmQtPmxvYWRpbmdGaW5pc2hlZChzdGF0aWNfY2FzdDxpbnQ+KGlkZW50
aWZpZXIpLCBmaW5pc2hUaW1lKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojpk
aWRGYWlsTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGYWlsTG9hZGluZyh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKQogeworICAgIGlmIChtX3Jlc291cmNlc0RhdGEtPnJlc291cmNl
VHlwZShpZGVudGlmaWVyKSA9PSBJbnNwZWN0b3JQYWdlQWdlbnQ6OkRvY3VtZW50UmVzb3VyY2Up
CisgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoaWRlbnRp
ZmllciwgbG9hZGVyLT5mcmFtZUxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3Vy
Y2VEYXRhKCksIGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+aW5wdXRFbmNvZGluZygpKTsK
KwogICAgIG1fZnJvbnRlbmQtPmxvYWRpbmdGYWlsZWQoc3RhdGljX2Nhc3Q8aW50PihpZGVudGlm
aWVyKSwgY3VycmVudFRpbWUoKSwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSwgZXJyb3Iu
aXNDYW5jZWxsYXRpb24oKSk7CiB9CiAKQEAgLTI5Miw3ICsyOTksNyBAQCB2b2lkIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OnNldEluaXRpYWxYSFJDb250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29ucwogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVYSFJS
ZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiB7Ci0gICAgbV9yZXNvdXJjZXNEYXRh
LT5kaWRSZWNlaXZlWEhSUmVzcG9uc2UoaWRlbnRpZmllcik7CisgICAgbV9yZXNvdXJjZXNEYXRh
LT5zZXRSZXNvdXJjZVR5cGUoaWRlbnRpZmllciwgSW5zcGVjdG9yUGFnZUFnZW50OjpYSFJSZXNv
dXJjZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbExvYWRYSFJTeW5j
aHJvbm91c2x5KCkKQEAgLTQzMyw5ICs0NDAsMTkgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpnZXRSZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCB1bnNpZ24K
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChyZXNvdXJjZURhdGEtPmhhc0NvbnRl
bnQoKSkKKyAgICBib29sIGJhc2U2NEVuY29kZSA9IG9wdGlvbmFsQmFzZTY0RW5jb2RlID8gKm9w
dGlvbmFsQmFzZTY0RW5jb2RlIDogZmFsc2U7CisKKyAgICBpZiAocmVzb3VyY2VEYXRhLT5oYXND
b250ZW50KCkpIHsKICAgICAgICAgKmNvbnRlbnQgPSByZXNvdXJjZURhdGEtPmNvbnRlbnQoKTsK
LSAgICBlbHNlIGlmICghcmVzb3VyY2VEYXRhLT5mcmFtZUlkKCkuaXNOdWxsKCkgJiYgIXJlc291
cmNlRGF0YS0+dXJsKCkuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAocmVzb3VyY2VEYXRhLT5idWZmZXIoKSAmJiAhcmVzb3VyY2VEYXRhLT50ZXh0RW5jb2RpbmdO
YW1lKCkuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVk
QnVmZmVyQ29udGVudChyZXNvdXJjZURhdGEtPmJ1ZmZlcigpLCByZXNvdXJjZURhdGEtPnRleHRF
bmNvZGluZ05hbWUoKSwgYmFzZTY0RW5jb2RlLCBjb250ZW50KSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoIXJlc291cmNlRGF0YS0+ZnJhbWVJZCgpLmlzTnVsbCgpICYm
ICFyZXNvdXJjZURhdGEtPnVybCgpLmlzTnVsbCgpKQogICAgICAgICBtX3BhZ2VBZ2VudC0+Z2V0
UmVzb3VyY2VDb250ZW50KGVycm9yU3RyaW5nLCByZXNvdXJjZURhdGEtPmZyYW1lSWQoKSwgcmVz
b3VyY2VEYXRhLT51cmwoKSwgb3B0aW9uYWxCYXNlNjRFbmNvZGUsIGNvbnRlbnQpOwogICAgIGVs
c2UKICAgICAgICAgKmVycm9yU3RyaW5nID0gIk5vIGRhdGEgZm91bmQgZm9yIHJlc291cmNlIHdp
dGggZ2l2ZW4gaWRlbnRpZmllciI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRleCAwNmExMmJiOTFlMjhjZDEwZjRlNGQ3OGFkNGE0
ZDI5Y2UwZjc3Nzk0Li44NmMwYzIzNTdiYjg2YmEzNTc3ZTVhZGQwYmVkNTM3NmE3MDY5Y2U4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmgKQEAgLTkxLDggKzkxLDggQEAgcHVibGljOgogICAgIHZvaWQgbWFya1Jlc291cmNlQXNDYWNo
ZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsYW9kZXIsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCk7Ci0gICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgZG91YmxlIGZpbmlzaFRpbWUpOwotICAgIHZvaWQgZGlkRmFpbExvYWRpbmcodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBkb3Vi
bGUgZmluaXNoVGltZSk7CisgICAgdm9pZCBkaWRGYWlsTG9hZGluZyh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZv
aWQgZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiwgY29uc3Qg
Q2FjaGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIG1haW5GcmFtZU5hdmlnYXRlZChEb2N1bWVudExv
YWRlciopOwogICAgIHZvaWQgc2V0SW5pdGlhbFNjcmlwdENvbnRlbnQodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggMWRkOTNmMmIwMmU3
NzNkMWZkOWMwZjIwODE3NjBjMGNhNjkxODc5Yy4uYWI2YmE0OGVjMDI4MTBmMzRiZjBmZGE1MDNm
Njc4OGJiYWJmNGE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JTdHlsZVNoZWV0LmNwcApAQCAtMTA2OSw3ICsxMDY5LDcgQEAgYm9vbCBJbnNwZWN0b3JTdHls
ZVNoZWV0OjpyZXNvdXJjZVN0eWxlU2hlZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdAogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBTdHJpbmcgZXJyb3I7Ci0gICAgSW5zcGVjdG9yUGFn
ZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQoJmVycm9yLCBvd25lckRvY3VtZW50KCktPmZyYW1lKCks
IG1fcGFnZVN0eWxlU2hlZXQtPmZpbmFsVVJMKCksIHJlc3VsdCk7CisgICAgSW5zcGVjdG9yUGFn
ZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQoJmVycm9yLCBvd25lckRvY3VtZW50KCktPmZyYW1lKCks
IG1fcGFnZVN0eWxlU2hlZXQtPmZpbmFsVVJMKCksIGZhbHNlLCByZXN1bHQpOwogICAgIHJldHVy
biBlcnJvci5pc0VtcHR5KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDcyMjk2MzBkMGFmMWFkMWJmYzM2OGMzYjEx
NWE3ZmY5ZjJkZmU0YTEuLjQ3NGNjZjg0NGNkOTlmYWMwMWY5YWJkNmZiNTJmZDVkYzA5YzE5Nzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmNwcApAQCAtNDMsOCArNDMsOCBAQCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
OjpSZXNvdXJjZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdAogICAgIDogbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX2xvYWRlcklkKGxvYWRlcklkKQogICAgICwg
bV9oYXNDb250ZW50KGZhbHNlKQotICAgICwgbV9pc1hIUihmYWxzZSkKICAgICAsIG1faXNDb250
ZW50UHVyZ2VkKGZhbHNlKQorICAgICwgbV90eXBlKEluc3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJS
ZXNvdXJjZSkKIHsKIH0KIApAQCAtOTQsMTIgKzk0LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
c0RhdGE6OnJlc3BvbnNlUmVjZWl2ZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBT
dHJpCiAgICAgcmVzb3VyY2VEYXRhLT5zZXRVcmwodXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6ZGlkUmVjZWl2ZVhIUlJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
cikKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OnNldFJlc291cmNlVHlwZSh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIHR5cGUpCiB7
CiAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSBtX2lkZW50aWZpZXJUb1Jlc291cmNl
RGF0YU1hcC5nZXQoaWRlbnRpZmllcik7CiAgICAgaWYgKCFyZXNvdXJjZURhdGEpCiAgICAgICAg
IHJldHVybjsKLSAgICByZXNvdXJjZURhdGEtPnNldElzWEhSKHRydWUpOworICAgIHJlc291cmNl
RGF0YS0+c2V0VHlwZSh0eXBlKTsKK30KKworSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5
cGUgTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc291cmNlVHlwZSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIpCit7CisgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSBtX2lkZW50aWZpZXJU
b1Jlc291cmNlRGF0YU1hcC5nZXQoaWRlbnRpZmllcik7CisgICAgaWYgKCFyZXNvdXJjZURhdGEp
CisgICAgICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2U7CisgICAg
cmV0dXJuIHJlc291cmNlRGF0YS0+dHlwZSgpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjphZGRSZXNvdXJjZUNvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnQpCkBAIC0xMTcsMTIgKzEyNSwxMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjphZGRSZXNvdXJjZUNvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBTdAogICAgIH0KIH0KIAotYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6aXNYSFIodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyKQordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6YWRkUmVzb3Vy
Y2VTaGFyZWRCdWZmZXIodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCiB7CiAgICAg
UmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSBtX2lkZW50aWZpZXJUb1Jlc291cmNlRGF0YU1h
cC5nZXQoaWRlbnRpZmllcik7CiAgICAgaWYgKCFyZXNvdXJjZURhdGEpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gcmVzb3VyY2VEYXRhLT5pc1hIUigpOworICAgICAgICByZXR1
cm47CisgICAgcmVzb3VyY2VEYXRhLT5zZXRCdWZmZXIoYnVmZmVyKTsKKyAgICByZXNvdXJjZURh
dGEtPnNldFRleHRFbmNvZGluZ05hbWUodGV4dEVuY29kaW5nTmFtZSk7CiB9CiAKIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEqIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpkYXRhKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05l
dHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZDViMDU0NmU5MGRiZWFiZDBiNGNkYTI2N2FjOTZl
YTM2YTk1ZGUxNC4uNzE5YWFhM2ZlOGU0MjlhNzc4OTllYjhjOWU0OTE1YTA2MTNkMThkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAg
LTI5LDggKzI5LDEzIEBACiAjaWZuZGVmIE5ldHdvcmtSZXNvdXJjZXNEYXRhX2gKICNkZWZpbmUg
TmV0d29ya1Jlc291cmNlc0RhdGFfaAogCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKKwogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM4LDYgKzQz
LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBDYWNoZWRSZXNvdXJjZTsKKwogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEgewogcHVibGlj
OgogICAgIGNsYXNzIFJlc291cmNlRGF0YSB7CkBAIC01Myw5ICs2MSw2IEBAIHB1YmxpYzoKICAg
ICAgICAgU3RyaW5nIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgICAgIHZvaWQg
c2V0VXJsKFN0cmluZyB1cmwpIHsgbV91cmwgPSB1cmw7IH0KIAotICAgICAgICBib29sIGlzWEhS
KCkgY29uc3QgeyByZXR1cm4gbV9pc1hIUjsgfQotICAgICAgICB2b2lkIHNldElzWEhSKGJvb2wg
aXNYSFIpIHsgbV9pc1hIUiA9IGlzWEhSOyB9Ci0KICAgICAgICAgYm9vbCBoYXNDb250ZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNDb250ZW50OyB9CiAgICAgICAgIFN0cmluZyBjb250ZW50KCk7
CiAgICAgICAgIHZvaWQgYXBwZW5kQ29udGVudChjb25zdCBTdHJpbmcmKTsKQEAgLTY0LDYgKzY5
LDE1IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBzZXRJc0NvbnRlbnRQdXJnZWQoYm9vbCBpc0Nv
bnRlbnRQdXJnZWQpIHsgbV9pc0NvbnRlbnRQdXJnZWQgPSBpc0NvbnRlbnRQdXJnZWQ7IH0KICAg
ICAgICAgdW5zaWduZWQgcHVyZ2VDb250ZW50KCk7CiAKKyAgICAgICAgSW5zcGVjdG9yUGFnZUFn
ZW50OjpSZXNvdXJjZVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgICAg
ICB2b2lkIHNldFR5cGUoSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgdHlwZSkgeyBt
X3R5cGUgPSB0eXBlOyB9CisKKyAgICAgICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgICAgIHZvaWQgc2V0QnVmZmVyKFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIpIHsgbV9idWZmZXIgPSBidWZmZXI7IH0KKwor
ICAgICAgICBTdHJpbmcgdGV4dEVuY29kaW5nTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dEVu
Y29kaW5nTmFtZTsgfQorICAgICAgICB2b2lkIHNldFRleHRFbmNvZGluZ05hbWUoU3RyaW5nIHRl
eHRFbmNvZGluZ05hbWUpIHsgbV90ZXh0RW5jb2RpbmdOYW1lID0gdGV4dEVuY29kaW5nTmFtZTsg
fQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQgbG9uZyBtX2lkZW50aWZpZXI7CiAg
ICAgICAgIFN0cmluZyBtX2xvYWRlcklkOwpAQCAtNzEsOCArODUsMTEgQEAgcHVibGljOgogICAg
ICAgICBTdHJpbmcgbV91cmw7CiAgICAgICAgIGJvb2wgbV9oYXNDb250ZW50OwogICAgICAgICBT
dHJpbmdCdWlsZGVyIG1fY29udGVudEJ1aWxkZXI7Ci0gICAgICAgIGJvb2wgbV9pc1hIUjsKICAg
ICAgICAgYm9vbCBtX2lzQ29udGVudFB1cmdlZDsKKyAgICAgICAgSW5zcGVjdG9yUGFnZUFnZW50
OjpSZXNvdXJjZVR5cGUgbV90eXBlOworCisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
YnVmZmVyOworICAgICAgICBTdHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1lOwogICAgIH07CiAKICAg
ICBOZXR3b3JrUmVzb3VyY2VzRGF0YSgpOwpAQCAtODEsMTAgKzk4LDEwIEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgcmVzb3VyY2VDcmVhdGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBsb2FkZXJJZCk7CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCk7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlWEhSUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
KTsKKyAgICB2b2lkIHNldFJlc291cmNlVHlwZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIElu
c3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlKTsKKyAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6
OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAg
ICB2b2lkIGFkZFJlc291cmNlQ29udGVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgY29udGVudCk7Ci0KLSAgICBib29sIGlzWEhSKHVuc2lnbmVkIGxvbmcgaWRlbnRp
Zmllcik7CisgICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5j
b2RpbmdOYW1lKTsKICAgICBSZXNvdXJjZURhdGEqIGRhdGEodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyKTsKICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgcHJlc2VydmVkTG9hZGVySWQgPSBT
dHJpbmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWROb3RpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZp
ZXIuY3BwCmluZGV4IGVhNmNmMjJmYzZkYjkxY2YxMDMzYWQ4NTg0YTI4YTVmMDZiMTBmNjYuLmFj
NDZhOTQ0N2ZlNWMzNjI4ZjQ3MzUyZThjMmNjYTIyYmRlODNhNDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcApAQCAtOTcsNyArOTcsNyBAQCB2
b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRGYWlsVG9Mb2FkKFJlc291cmNlTG9hZGVyKiBs
b2FkZXIsIGNvbnN0IFJlc291cmNlRQogICAgIGlmICghZXJyb3IuaXNOdWxsKCkpCiAgICAgICAg
IG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhsb2Fk
ZXItPmRvY3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCBlcnJvcik7CiAKLSAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKG1fZnJhbWUsIGxvYWRl
ci0+aWRlbnRpZmllcigpLCBlcnJvcik7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGYWlsTG9hZGluZyhtX2ZyYW1lLCBsb2FkZXItPmRvY3VtZW50TG9hZGVyKCksIGxvYWRlci0+
aWRlbnRpZmllcigpLCBlcnJvcik7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmFz
c2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpA
QCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlk
RmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpCiB7CiAgICAgbV9mcmFt
ZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERpZEZpbmlzaExvYWRpbmcobG9hZGVyLCBp
ZGVudGlmaWVyKTsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9h
ZGluZyhtX2ZyYW1lLCBpZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcobV9mcmFtZSwgbG9hZGVyLCBpZGVudGlmaWVy
LCBmaW5pc2hUaW1lKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hU
cmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQ
YWdlKiBvbGRQYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCAyYTc2NTg5MDU1NzczYTVkNDFmNTQ4
YmFlYmE5ZmJmOWRhODc4YTRmLi40NWIxODRjZmY5OTcwMjJhMGE3MmU0N2ZkYjM4ZDg5ZWE5OTIz
NDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNTkwLDcgKzU5MCw3IEBAIHZvaWQgQXBwbGljYXRp
b25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25z
dCBjaGFyKiBkCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZyhS
ZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBkb3VibGUgZmluaXNoVGltZSkKIHsKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGlu
ZyhtX2ZyYW1lLCBtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOworICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhtX2ZyYW1lLCBtX2Zy
YW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSwgbV9jdXJyZW50UmVzb3VyY2VJZGVudGlm
aWVyLCBmaW5pc2hUaW1lKTsKICNlbmRpZgogCiAgICAgaWYgKGhhbmRsZSA9PSBtX21hbmlmZXN0
SGFuZGxlKSB7CkBAIC02MzEsNyArNjMxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgZG91YmxlIGZpbmkKIHZv
aWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGYWlsKFJlc291cmNlSGFuZGxlKiBoYW5kbGUs
IGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0g
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyhtX2ZyYW1lLCBtX2N1
cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIGVycm9yKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZhaWxMb2FkaW5nKG1fZnJhbWUsIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVu
dExvYWRlcigpLCBtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIGVycm9yKTsKICNlbmRpZgog
CiAgICAgaWYgKGhhbmRsZSA9PSBtX21hbmlmZXN0SGFuZGxlKSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>