<?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>209845</bug_id>
          
          <creation_ts>2020-03-31 20:13:07 -0700</creation_ts>
          <short_desc>Add SPI to make WKUserScripts wait for a notification</short_desc>
          <delta_ts>2020-04-03 17:44:39 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jeffm</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1636364</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-31 20:13:07 -0700</bug_when>
    <thetext>Add SPI to make WKUserScripts wait for a notification</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636365</commentid>
    <comment_count>1</comment_count>
      <attachid>395124</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-31 20:15:58 -0700</bug_when>
    <thetext>Created attachment 395124
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636366</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-31 20:16:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/60342299&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636377</commentid>
    <comment_count>3</comment_count>
      <attachid>395126</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-31 21:36:29 -0700</bug_when>
    <thetext>Created attachment 395126
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636378</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-03-31 21:37:28 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636382</commentid>
    <comment_count>5</comment_count>
      <attachid>395127</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-31 21:50:23 -0700</bug_when>
    <thetext>Created attachment 395127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636519</commentid>
    <comment_count>6</comment_count>
      <attachid>395173</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-01 09:11:06 -0700</bug_when>
    <thetext>Created attachment 395173
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636555</commentid>
    <comment_count>7</comment_count>
      <attachid>395183</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-01 10:24:59 -0700</bug_when>
    <thetext>Created attachment 395183
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636959</commentid>
    <comment_count>8</comment_count>
      <attachid>395183</attachid>
    <who name="Jeff Miller">jeffm</who>
    <bug_when>2020-04-02 11:24:47 -0700</bug_when>
    <thetext>Comment on attachment 395183
Patch

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

&gt; Source/WebKit/UIProcess/API/APIPageConfiguration.h:193
&gt; +    bool m_userScriptsShouldWaitUntilNotification { true };

Shouldn&apos;t this default to false?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637130</commentid>
    <comment_count>9</comment_count>
      <attachid>395183</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-02 16:19:17 -0700</bug_when>
    <thetext>Comment on attachment 395183
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/APIPageConfiguration.h:193
&gt;&gt; +    bool m_userScriptsShouldWaitUntilNotification { true };
&gt; 
&gt; Shouldn&apos;t this default to false?

This means that the user script that say to wait until notification should wait for notification.  By default user scripts do not say to wait until notification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637179</commentid>
    <comment_count>10</comment_count>
      <attachid>395183</attachid>
    <who name="Jeff Miller">jeffm</who>
    <bug_when>2020-04-02 17:39:02 -0700</bug_when>
    <thetext>Comment on attachment 395183
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/API/APIPageConfiguration.h:193
&gt;&gt;&gt; +    bool m_userScriptsShouldWaitUntilNotification { true };
&gt;&gt; 
&gt;&gt; Shouldn&apos;t this default to false?
&gt; 
&gt; This means that the user script that say to wait until notification should wait for notification.  By default user scripts do not say to wait until notification.

I see, I was confused by the name. Maybe this should be something like &quot;m_deferredUserScriptsShouldWaitUntilNotification&quot; to emphasize that it only applies to user scripts that have requested to be deferred, with a similar name for the WKWebViewConfiguration property you&apos;re adding.

You could also rename the parameter to the new WKUserScript initializer you added, e.g.:

- (instancetype)_initWithSource:(NSString *)source injectionTime:(WKUserScriptInjectionTime)injectionTime forMainFrameOnly:(BOOL)forMainFrameOnly legacyWhitelist:(NSArray&lt;NSString *&gt; *)legacyWhitelist legacyBlacklist:(NSArray&lt;NSString *&gt; *)legacyBlacklist associatedURL:(NSURL *)associatedURL contentWorld:(WKContentWorld *)contentWorld deferRunningUntilNotification:(BOOL)deferRunningUntilNotification WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637564</commentid>
    <comment_count>11</comment_count>
      <attachid>395416</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-03 16:42:08 -0700</bug_when>
    <thetext>Created attachment 395416
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637585</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-03 17:44:37 -0700</bug_when>
    <thetext>Committed r259523: &lt;https://trac.webkit.org/changeset/259523&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 395416.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395124</attachid>
            <date>2020-03-31 20:15:58 -0700</date>
            <delta_ts>2020-03-31 21:36:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209845-20200331201557.patch</filename>
            <type>text/plain</type>
            <size>60234</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDIwLTAzLTMxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byBtYWtlIFdLVXNlclNjcmlwdHMgd2FpdCBmb3IgYSBub3RpZmljYXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTg0NQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjAzNDIyOTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlcmUncyBhbHNvIFNQSSBvbiBXS1dlYlZpZXcgdG8gcHJvdmlkZSB0
aGlzIG5vdGlmaWNhdGlvbiwgYW5kIG9uIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gdG8gc3RhcnQg
b3V0IHdpdGggdGhpcyBub3RpZmljYXRpb24uCisgICAgICAgIFRoaXMgc3RpbGwgbmVlZHMgdGVz
dHMsIGFuZCBpdCBuZWVkcyBKZWZmIHRvIHNheSBpdCdzIHVzZWZ1bCwgd2hpY2ggaXMgd2h5IEkn
bSB1cGxvYWRpbmcgdGhpcyBwYXRjaC4KKworICAgICAgICAqIGRvbS9FeHRlbnNpb25TdHlsZVNo
ZWV0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25TdHlsZVNoZWV0czo6dXBkYXRl
SW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUgY29uc3QpOgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjpjcmVhdGVEb2N1bWVu
dFN0cnVjdHVyZSk6CisgICAgICAgICogaHRtbC9NZWRpYURvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKToK
KyAgICAgICAgKiBodG1sL1BsdWdpbkRvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
dWdpbkRvY3VtZW50UGFyc2VyOjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTENvbnN0cnVjdGlvblNpdGU6OmRpc3BhdGNoRG9jdW1lbnRFbGVtZW50QXZhaWxhYmxlSWZO
ZWVkZWQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6ZmluaXNoZWRQYXJzaW5nKToKKyAgICAgICAgKiBwYWdlL0ZyYW1l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjppbmplY3RVc2VyU2NyaXB0cyk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KToKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bV9kZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Om5vdGlmeVRvSW5qZWN0
VXNlclNjcmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWRkVXNlclNjcmlwdEF3YWl0
aW5nTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmluamVjdFVzZXJTdHls
ZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlbW92ZUluamVjdGVkVXNlclN0eWxl
U2hlZXQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
aGFzQmVlbk5vdGlmaWVkVG9JbmplY3RVc2VyU2NyaXB0cyBjb25zdCk6CisgICAgICAgICogcGFn
ZS9QYWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIHBhZ2UvVXNlckNvbnRlbnRUeXBlcy5o
OgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1VzZXJTY3JpcHQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlVzZXJTY3JpcHQ6OlVzZXJTY3JpcHQpOgorICAgICAgICAoV2ViQ29y
ZTo6VXNlclNjcmlwdDo6d2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyU2NyaXB0OjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6VXNlclNjcmlwdDo6ZGVjb2RlKToKKyAgICAgICAgKiBwYWdlL1VzZXJTY3JpcHRU
eXBlcy5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1VzZXJTdHlsZVNo
ZWV0Lmg6CisgICAgICAgIChXZWJDb3JlOjpVc2VyU3R5bGVTaGVldDo6VXNlclN0eWxlU2hlZXQp
OgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpzdGFydEVsZW1lbnROcyk6CisKIDIw
MjAtMDMtMzEgIFBpbmtpIEd5YW5jaGFuZGFuaSAgPHBneWFuY2hhbmRhbmlAYXBwbGUuY29tPgog
CiAgICAgICAgIEludmFsaWQgbWVtb3J5IGFjY2VzcyBAIFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpk
aXNwYXRjaERpZENvbW1pdExvYWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FeHRlbnNpb25T
dHlsZVNoZWV0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V4dGVuc2lv
blN0eWxlU2hlZXRzLmNwcAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYkNvcmUvZG9t
L0V4dGVuc2lvblN0eWxlU2hlZXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDcgKzEzOCw3
IEBAIHZvaWQgRXh0ZW5zaW9uU3R5bGVTaGVldHM6OnVwZGF0ZUluamVjdGUKICAgICAgICAgaWYg
KHVzZXJTdHlsZVNoZWV0LnBhZ2VJRCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IGlmICh1c2VyU3R5bGVTaGVldC5pbmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVP
bmx5ICYmIG1fZG9jdW1lbnQub3duZXJFbGVtZW50KCkpCisgICAgICAgIGlmICh1c2VyU3R5bGVT
aGVldC5pbmplY3RlZEZyYW1lcygpID09IFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVj
dEluVG9wRnJhbWVPbmx5ICYmIG1fZG9jdW1lbnQub3duZXJFbGVtZW50KCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgaWYgKCFVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQ
YXR0ZXJucyhtX2RvY3VtZW50LnVybCgpLCB1c2VyU3R5bGVTaGVldC53aGl0ZWxpc3QoKSwgdXNl
clN0eWxlU2hlZXQuYmxhY2tsaXN0KCkpKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZURvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9j
dW1lbnQuY3BwCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBJbWFn
ZURvY3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdAogICAgIGFwcGVuZENoaWxkKHJvb3RFbGVt
ZW50KTsKICAgICByb290RWxlbWVudC0+aW5zZXJ0ZWRCeVBhcnNlcigpOwogCi0gICAgZnJhbWUo
KS0+aW5qZWN0VXNlclNjcmlwdHMoSW5qZWN0QXREb2N1bWVudFN0YXJ0KTsKKyAgICBmcmFtZSgp
LT5pbmplY3RVc2VyU2NyaXB0cyhVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRTdGFy
dCk7CiAKICAgICAvLyBXZSBuZWVkIGEgPGhlYWQ+IHNvIHRoYXQgdGhlIGNhbGwgdG8gc2V0VGl0
bGUoKSBsYXRlciBvbiBhY3R1YWxseSBoYXMgYW4gPGhlYWQ+IHRvIGFwcGVuZCB0byA8dGl0bGU+
IHRvLgogICAgIGF1dG8gaGVhZCA9IEhUTUxIZWFkRWxlbWVudDo6Y3JlYXRlKCp0aGlzKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcAkocmV2aXNpb24gMjU5MzA2KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTMsNyArOTMsNyBAQCB2b2lkIE1lZGlhRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3VtZW50
CiAgICAgcm9vdEVsZW1lbnQtPmluc2VydGVkQnlQYXJzZXIoKTsKIAogICAgIGlmIChkb2N1bWVu
dC5mcmFtZSgpKQotICAgICAgICBkb2N1bWVudC5mcmFtZSgpLT5pbmplY3RVc2VyU2NyaXB0cyhJ
bmplY3RBdERvY3VtZW50U3RhcnQpOworICAgICAgICBkb2N1bWVudC5mcmFtZSgpLT5pbmplY3RV
c2VyU2NyaXB0cyhVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRTdGFydCk7CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGF1dG8gaGVhZEVsZW1lbnQgPSBIVE1MSGVhZEVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdp
bkRvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRv
Y3VtZW50LmNwcAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9QbHVn
aW5Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBQbHVn
aW5Eb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9jdW1lbgogICAgIHJvb3RFbGVtZW50LT5pbnNlcnRl
ZEJ5UGFyc2VyKCk7CiAKICAgICBpZiAoZG9jdW1lbnQuZnJhbWUoKSkKLSAgICAgICAgZG9jdW1l
bnQuZnJhbWUoKS0+aW5qZWN0VXNlclNjcmlwdHMoSW5qZWN0QXREb2N1bWVudFN0YXJ0KTsKKyAg
ICAgICAgZG9jdW1lbnQuZnJhbWUoKS0+aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdEluamVj
dGlvblRpbWU6OkRvY3VtZW50U3RhcnQpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAvLyBTaG91bGQgbm90IGJlIGFibGUgdG8gem9vbSBpbnRvIHN0YW5kYWxvbmUgcGx1Zy1pbiBk
b2N1bWVudHMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0
aW9uU2l0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TENvbnN0cnVjdGlvblNpdGUuY3BwCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3MCw3ICsyNzAsNyBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpkaXNwYXRjaERvY3Vt
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihtX2Rv
Y3VtZW50LmZyYW1lKCkpKQotICAgICAgICBmcmFtZS0+aW5qZWN0VXNlclNjcmlwdHMoSW5qZWN0
QXREb2N1bWVudFN0YXJ0KTsKKyAgICAgICAgZnJhbWUtPmluamVjdFVzZXJTY3JpcHRzKFVzZXJT
Y3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1bWVudFN0YXJ0KTsKIH0KIAogdm9pZCBIVE1MQ29uc3Ry
dWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEh0bWxTdGFydFRhZ0JlZm9yZUhUTUwoQXRvbWljSFRNTFRv
a2VuJiYgdG9rZW4pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc5Myw3ICs3OTMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpmaW5p
c2hlZFBhcnNpbmcoKQogewogICAgIExPRyhMb2FkaW5nLCAiV2ViQ29yZUxvYWRpbmcgJXM6IEZp
bmlzaGVkIHBhcnNpbmciLCBtX2ZyYW1lLnRyZWUoKS51bmlxdWVOYW1lKCkuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAKLSAgICBtX2ZyYW1lLmluamVjdFVzZXJTY3JpcHRzKEluamVjdEF0RG9j
dW1lbnRFbmQpOworICAgIG1fZnJhbWUuaW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdEluamVj
dGlvblRpbWU6OkRvY3VtZW50RW5kKTsKIAogICAgIGlmIChtX3N0YXRlTWFjaGluZS5jcmVhdGlu
Z0luaXRpYWxFbXB0eURvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWUuY3BwCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjE4LDkgKzYxOCwxNCBAQCB2b2lkIEZyYW1lOjppbmpl
Y3RVc2VyU2NyaXB0cyhVc2VyU2NyaXB0CiAgICAgaWYgKGxvYWRlcigpLnN0YXRlTWFjaGluZSgp
LmNyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSAmJiAhc2V0dGluZ3MoKS5zaG91bGRJbmpl
Y3RVc2VyU2NyaXB0c0luSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9wYWdlLT51c2VyQ29udGVudFByb3ZpZGVyKCkuZm9yRWFjaFVzZXJTY3JpcHQoW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5qZWN0aW9uVGltZV0oRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCwgY29uc3QgVXNlclNjcmlwdCYgc2NyaXB0KSB7Ci0gICAgICAgIGlm
IChzY3JpcHQuaW5qZWN0aW9uVGltZSgpID09IGluamVjdGlvblRpbWUpCi0gICAgICAgICAgICBp
bmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkod29ybGQsIHNjcmlwdCk7CisgICAgYm9vbCBwYWdl
V2FzTm90aWZpZWQgPSBtX3BhZ2UtPmhhc0JlZW5Ob3RpZmllZFRvSW5qZWN0VXNlclNjcmlwdHMo
KTsKKyAgICBtX3BhZ2UtPnVzZXJDb250ZW50UHJvdmlkZXIoKS5mb3JFYWNoVXNlclNjcmlwdChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpbmplY3Rpb25UaW1lLCBwYWdl
V2FzTm90aWZpZWRdIChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBVc2VyU2NyaXB0JiBz
Y3JpcHQpIHsKKyAgICAgICAgaWYgKHNjcmlwdC5pbmplY3Rpb25UaW1lKCkgPT0gaW5qZWN0aW9u
VGltZSkgeworICAgICAgICAgICAgaWYgKHNjcmlwdC53YWl0Rm9yTm90aWZpY2F0aW9uQmVmb3Jl
SW5qZWN0aW5nKCkgPT0gV2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6WWVzICYm
ICFwYWdlV2FzTm90aWZpZWQpCisgICAgICAgICAgICAgICAgbV9wYWdlLT5hZGRVc2VyU2NyaXB0
QXdhaXRpbmdOb3RpZmljYXRpb24od29ybGQsIHNjcmlwdCk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgaW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KHdvcmxkLCBzY3JpcHQp
OworICAgICAgICB9CiAgICAgfSk7CiB9CiAKQEAgLTYzNiw3ICs2NDEsNyBAQCB2b2lkIEZyYW1l
OjppbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoCiAgICAgYXV0byogZG9jdW1lbnQgPSB0aGlz
LT5kb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBp
ZiAoc2NyaXB0LmluamVjdGVkRnJhbWVzKCkgPT0gSW5qZWN0SW5Ub3BGcmFtZU9ubHkgJiYgIWlz
TWFpbkZyYW1lKCkpCisgICAgaWYgKHNjcmlwdC5pbmplY3RlZEZyYW1lcygpID09IFVzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5ICYmICFpc01haW5GcmFtZSgp
KQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNo
ZXNQYXR0ZXJucyhkb2N1bWVudC0+dXJsKCksIHNjcmlwdC53aGl0ZWxpc3QoKSwgc2NyaXB0LmJs
YWNrbGlzdCgpKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZp
c2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjQsNiArMTI0LDcgQEAKICNpbmNsdWRlICJVc2VyQ29udGVudFByb3ZpZGVyLmgi
CiAjaW5jbHVkZSAiVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiVXNlcklucHV0
QnJpZGdlLmgiCisjaW5jbHVkZSAiVXNlclNjcmlwdC5oIgogI2luY2x1ZGUgIlVzZXJTdHlsZVNo
ZWV0LmgiCiAjaW5jbHVkZSAiVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJW
aXNpdGVkTGlua1N0YXRlLmgiCkBAIC0zMzUsNiArMzM2LDkgQEAgUGFnZTo6UGFnZShQYWdlQ29u
ZmlndXJhdGlvbiYmIHBhZ2VDb25maQogICAgICAgICAgICAgbV9jb3JzRGlzYWJsaW5nUGF0dGVy
bnMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUocGFyc2VkUGF0dGVybikpOwogICAgIH0KICAgICBt
X2NvcnNEaXNhYmxpbmdQYXR0ZXJucy5zaHJpbmtUb0ZpdCgpOworICAgIAorICAgIGlmICghcGFn
ZUNvbmZpZ3VyYXRpb24udXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24pCisg
ICAgICAgIG1faGFzQmVlbk5vdGlmaWVkVG9JbmplY3RVc2VyU2NyaXB0cyA9IHRydWU7CiB9CiAK
IFBhZ2U6On5QYWdlKCkKQEAgLTI0ODksNiArMjQ5MywyMCBAQCBVc2VyQ29udGVudFByb3ZpZGVy
JiBQYWdlOjp1c2VyQ29udGVudFByCiAgICAgcmV0dXJuIG1fdXNlckNvbnRlbnRQcm92aWRlcjsK
IH0KIAordm9pZCBQYWdlOjpub3RpZnlUb0luamVjdFVzZXJTY3JpcHRzKCkKK3sKKyAgICBmb3Ig
KGF1dG8qIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1fdXNl
clNjcmlwdHNBd2FpdGluZ05vdGlmaWNhdGlvbikKKyAgICAgICAgICAgIGZyYW1lLT5pbmplY3RV
c2VyU2NyaXB0SW1tZWRpYXRlbHkocGFpci5maXJzdCwgcGFpci5zZWNvbmQuZ2V0KCkpOworICAg
IH0KKyAgICBtX3VzZXJTY3JpcHRzQXdhaXRpbmdOb3RpZmljYXRpb24uY2xlYXIoKTsKK30KKwor
dm9pZCBQYWdlOjphZGRVc2VyU2NyaXB0QXdhaXRpbmdOb3RpZmljYXRpb24oRE9NV3JhcHBlcldv
cmxkJiB3b3JsZCwgY29uc3QgVXNlclNjcmlwdCYgc2NyaXB0KQoreworICAgIG1fdXNlclNjcmlw
dHNBd2FpdGluZ05vdGlmaWNhdGlvbi5hcHBlbmQoeyBtYWtlUmVmKHdvcmxkKSwgbWFrZVVuaXF1
ZVJlZjxVc2VyU2NyaXB0PihzY3JpcHQpIH0pOworfQorCiB2b2lkIFBhZ2U6OnNldFVzZXJDb250
ZW50UHJvdmlkZXIoUmVmPFVzZXJDb250ZW50UHJvdmlkZXI+JiYgdXNlckNvbnRlbnRQcm92aWRl
cikKIHsKICAgICBtX3VzZXJDb250ZW50UHJvdmlkZXItPnJlbW92ZVBhZ2UoKnRoaXMpOwpAQCAt
MzA3NCw3ICszMDkyLDcgQEAgdm9pZCBQYWdlOjppbmplY3RVc2VyU3R5bGVTaGVldChVc2VyU3R5
bAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHVzZXJTdHlsZVNoZWV0LmluamVj
dGVkRnJhbWVzKCkgPT0gSW5qZWN0SW5Ub3BGcmFtZU9ubHkpIHsKKyAgICBpZiAodXNlclN0eWxl
U2hlZXQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmpl
Y3RJblRvcEZyYW1lT25seSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX21haW5G
cmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRvY3VtZW50LT5leHRlbnNpb25TdHlsZVNo
ZWV0cygpLmluamVjdFBhZ2VTcGVjaWZpY1VzZXJTdHlsZVNoZWV0KHVzZXJTdHlsZVNoZWV0KTsK
ICAgICB9IGVsc2UgewpAQCAtMzA5Myw3ICszMTExLDcgQEAgdm9pZCBQYWdlOjpyZW1vdmVJbmpl
Y3RlZFVzZXJTdHlsZVNoZWV0KAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHVz
ZXJTdHlsZVNoZWV0LmluamVjdGVkRnJhbWVzKCkgPT0gSW5qZWN0SW5Ub3BGcmFtZU9ubHkpIHsK
KyAgICBpZiAodXNlclN0eWxlU2hlZXQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBVc2VyQ29udGVudElu
amVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSkgewogICAgICAgICBpZiAoYXV0byog
ZG9jdW1lbnQgPSBtX21haW5GcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRvY3VtZW50
LT5leHRlbnNpb25TdHlsZVNoZWV0cygpLnJlbW92ZVBhZ2VTcGVjaWZpY1VzZXJTdHlsZVNoZWV0
KHVzZXJTdHlsZVNoZWV0KTsKICAgICB9IGVsc2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlz
aW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDAsNiArMTQwLDcgQEAgY2xhc3MgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOwogY2xh
c3MgVXNlckNvbnRlbnRQcm92aWRlcjsKIGNsYXNzIFVzZXJDb250ZW50VVJMUGF0dGVybjsKIGNs
YXNzIFVzZXJJbnB1dEJyaWRnZTsKK2NsYXNzIFVzZXJTY3JpcHQ7CiBjbGFzcyBVc2VyU3R5bGVT
aGVldDsKIGNsYXNzIFZhbGlkYXRpb25NZXNzYWdlQ2xpZW50OwogY2xhc3MgVmlzaWJsZVNlbGVj
dGlvbjsKQEAgLTcyOSw2ICs3MzAsMTAgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkRmlyZVJl
c2l6ZUV2ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkRmlyZVJlc2l6ZUV2ZW50czsgfQog
ICAgIHZvaWQgc2V0U2hvdWxkRmlyZVJlc2l6ZUV2ZW50cyhib29sIHNob3VsZEZpcmVSZXNpemVF
dmVudHMpIHsgbV9zaG91bGRGaXJlUmVzaXplRXZlbnRzID0gc2hvdWxkRmlyZVJlc2l6ZUV2ZW50
czsgfQogCisgICAgYm9vbCBoYXNCZWVuTm90aWZpZWRUb0luamVjdFVzZXJTY3JpcHRzKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNCZWVuTm90aWZpZWRUb0luamVjdFVzZXJTY3JpcHRzOyB9CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBub3RpZnlUb0luamVjdFVzZXJTY3JpcHRzKCk7CisgICAgdm9p
ZCBhZGRVc2VyU2NyaXB0QXdhaXRpbmdOb3RpZmljYXRpb24oRE9NV3JhcHBlcldvcmxkJiwgY29u
c3QgVXNlclNjcmlwdCYpOworCiBwcml2YXRlOgogICAgIHN0cnVjdCBOYXZpZ2F0aW9uIHsKICAg
ICAgICAgUmVnaXN0cmFibGVEb21haW4gZG9tYWluOwpAQCAtMTAwOCw2ICsxMDEzLDkgQEAgcHJp
dmF0ZToKICAgICBWZWN0b3I8VXNlckNvbnRlbnRVUkxQYXR0ZXJuPiBtX2NvcnNEaXNhYmxpbmdQ
YXR0ZXJuczsKICAgICBWZWN0b3I8VXNlclN0eWxlU2hlZXQ+IG1fdXNlclN0eWxlU2hlZXRzUGVu
ZGluZ0luamVjdGlvbjsKICAgICBib29sIG1fc2hvdWxkRmlyZVJlc2l6ZUV2ZW50cyB7IHRydWUg
fTsKKyAgICAKKyAgICBib29sIG1faGFzQmVlbk5vdGlmaWVkVG9JbmplY3RVc2VyU2NyaXB0cyB7
IGZhbHNlIH07CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RE9NV3JhcHBlcldvcmxkPiwgVW5p
cXVlUmVmPFVzZXJTY3JpcHQ+Pj4gbV91c2VyU2NyaXB0c0F3YWl0aW5nTm90aWZpY2F0aW9uOwog
fTsKIAogaW5saW5lIFBhZ2VHcm91cCYgUGFnZTo6Z3JvdXAoKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNiAr
MTI3LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgVmVjdG9yPFN0cmluZz4gY29yc0Rpc2FibGlu
Z1BhdHRlcm5zOwogICAgIFVuaXF1ZVJlZjxNZWRpYVJlY29yZGVyUHJvdmlkZXI+IG1lZGlhUmVj
b3JkZXJQcm92aWRlcjsKKyAgICBib29sIHVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZp
Y2F0aW9uIHsgdHJ1ZSB9OwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
Q29udGVudFR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29u
dGVudFR5cGVzLmgJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
ckNvbnRlbnRUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotZW51bSBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIHsgSW5qZWN0
SW5BbGxGcmFtZXMsIEluamVjdEluVG9wRnJhbWVPbmx5IH07CitlbnVtIGNsYXNzIFVzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXMgOiBib29sIHsgSW5qZWN0SW5BbGxGcmFtZXMsIEluamVjdEluVG9w
RnJhbWVPbmx5IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlclNjcmlwdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlclNjcmlwdC5oCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1Vz
ZXJTY3JpcHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTYgKzM1LDIwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFVzZXJTY3JpcHQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIFVzZXJTY3JpcHQoKSA9IGRlZmF1bHQ7CiAgICAgflVzZXJTY3JpcHQo
KSA9IGRlZmF1bHQ7CisgICAgVXNlclNjcmlwdChjb25zdCBVc2VyU2NyaXB0JikgPSBkZWZhdWx0
OworICAgIFVzZXJTY3JpcHQoVXNlclNjcmlwdCYmKSA9IGRlZmF1bHQ7CisgICAgVXNlclNjcmlw
dCYgb3BlcmF0b3I9KGNvbnN0IFVzZXJTY3JpcHQmKSA9IGRlZmF1bHQ7CisgICAgVXNlclNjcmlw
dCYgb3BlcmF0b3I9KFVzZXJTY3JpcHQmJikgPSBkZWZhdWx0OwogCi0gICAgVXNlclNjcmlwdChT
dHJpbmcmJiBzb3VyY2UsIFVSTCYmIHVybCwgVmVjdG9yPFN0cmluZz4mJiB3aGl0ZWxpc3QsIFZl
Y3RvcjxTdHJpbmc+JiYgYmxhY2tsaXN0LCBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rp
b25UaW1lLCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQorICAgIFVz
ZXJTY3JpcHQoU3RyaW5nJiYgc291cmNlLCBVUkwmJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgd2hp
dGVsaXN0LCBWZWN0b3I8U3RyaW5nPiYmIGJsYWNrbGlzdCwgVXNlclNjcmlwdEluamVjdGlvblRp
bWUgaW5qZWN0aW9uVGltZSwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1l
cywgV2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZyB3YWl0Rm9yTm90aWZpY2F0aW9u
KQogICAgICAgICA6IG1fc291cmNlKFdURk1vdmUoc291cmNlKSkKICAgICAgICAgLCBtX3VybChX
VEZNb3ZlKHVybCkpCiAgICAgICAgICwgbV93aGl0ZWxpc3QoV1RGTW92ZSh3aGl0ZWxpc3QpKQog
ICAgICAgICAsIG1fYmxhY2tsaXN0KFdURk1vdmUoYmxhY2tsaXN0KSkKICAgICAgICAgLCBtX2lu
amVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSkKICAgICAgICAgLCBtX2luamVjdGVkRnJhbWVzKGlu
amVjdGVkRnJhbWVzKQorICAgICAgICAsIG1fd2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVj
dGluZyh3YWl0Rm9yTm90aWZpY2F0aW9uKQogICAgIHsKICAgICB9CiAKQEAgLTU0LDE3ICs1OCwx
OSBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsYWNrbGlzdCgpIGNvbnN0
IHsgcmV0dXJuIG1fYmxhY2tsaXN0OyB9CiAgICAgVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5q
ZWN0aW9uVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0aW9uVGltZTsgfQogICAgIFVzZXJD
b250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMoKSBjb25zdCB7IHJldHVybiBtX2lu
amVjdGVkRnJhbWVzOyB9CisgICAgV2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZyB3
YWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nKCkgY29uc3QgeyByZXR1cm4gbV93YWl0
Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBVc2VyU2NyaXB0Jik7CisgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFVzZXJTY3JpcHQ+IGRlY29k
ZShEZWNvZGVyJik7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc291cmNlOwogICAgIFVSTCBt
X3VybDsKICAgICBWZWN0b3I8U3RyaW5nPiBtX3doaXRlbGlzdDsKICAgICBWZWN0b3I8U3RyaW5n
PiBtX2JsYWNrbGlzdDsKLSAgICBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBtX2luamVjdGlvblRp
bWUgeyBJbmplY3RBdERvY3VtZW50U3RhcnQgfTsKLSAgICBVc2VyQ29udGVudEluamVjdGVkRnJh
bWVzIG1faW5qZWN0ZWRGcmFtZXMgeyBJbmplY3RJbkFsbEZyYW1lcyB9OworICAgIFVzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lIG1faW5qZWN0aW9uVGltZSB7IFVzZXJTY3JpcHRJbmplY3Rpb25UaW1l
OjpEb2N1bWVudFN0YXJ0IH07CisgICAgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBtX2luamVj
dGVkRnJhbWVzIHsgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMg
fTsKKyAgICBXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nIG1fd2FpdEZvck5vdGlm
aWNhdGlvbkJlZm9yZUluamVjdGluZyB7IFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rp
bmc6Ok5vIH07CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNzQsMzkgKzgwLDU4
IEBAIHZvaWQgVXNlclNjcmlwdDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIKICAgICBlbmNvZGVy
IDw8IG1fdXJsOwogICAgIGVuY29kZXIgPDwgbV93aGl0ZWxpc3Q7CiAgICAgZW5jb2RlciA8PCBt
X2JsYWNrbGlzdDsKLSAgICBlbmNvZGVyLmVuY29kZUVudW0obV9pbmplY3Rpb25UaW1lKTsKLSAg
ICBlbmNvZGVyLmVuY29kZUVudW0obV9pbmplY3RlZEZyYW1lcyk7CisgICAgZW5jb2RlciA8PCBt
X2luamVjdGlvblRpbWU7CisgICAgZW5jb2RlciA8PCBtX2luamVjdGVkRnJhbWVzOworICAgIGVu
Y29kZXIgPDwgbV93YWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOwogfQogCiB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgotYm9vbCBVc2VyU2NyaXB0OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgVXNlclNjcmlwdCYgdXNlclNjcmlwdCkKK09wdGlvbmFsPFVzZXJTY3JpcHQ+IFVzZXJT
Y3JpcHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFN0cmluZyBzb3VyY2U7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzb3VyY2UpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgCi0gICAgVVJMIHVybDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBWZWN0b3I8U3RyaW5nPiB3aGl0ZWxpc3Q7Ci0gICAg
aWYgKCFkZWNvZGVyLmRlY29kZSh3aGl0ZWxpc3QpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgCi0gICAgVmVjdG9yPFN0cmluZz4gYmxhY2tsaXN0OwotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYmxhY2tsaXN0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIFVzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZUVu
dW0oaW5qZWN0aW9uVGltZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzOwotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGVFbnVtKGluamVjdGVkRnJhbWVzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAot
ICAgIHVzZXJTY3JpcHQgPSB7IFdURk1vdmUoc291cmNlKSwgV1RGTW92ZSh1cmwpLCBXVEZNb3Zl
KHdoaXRlbGlzdCksIFdURk1vdmUoYmxhY2tsaXN0KSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRG
cmFtZXMgfTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBPcHRpb25hbDxTdHJpbmc+IHNvdXJjZTsK
KyAgICBkZWNvZGVyID4+IHNvdXJjZTsKKyAgICBpZiAoIXNvdXJjZSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAKKyAgICBPcHRpb25hbDxVUkw+IHVybDsKKyAgICBkZWNvZGVy
ID4+IHVybDsKKyAgICBpZiAoIXVybCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAKKyAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gd2hpdGVsaXN0OworICAgIGRlY29kZXIg
Pj4gd2hpdGVsaXN0OworICAgIGlmICghd2hpdGVsaXN0KQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIAorICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBibGFja2xpc3Q7Cisg
ICAgZGVjb2RlciA+PiBibGFja2xpc3Q7CisgICAgaWYgKCFibGFja2xpc3QpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgCisgICAgT3B0aW9uYWw8VXNlclNjcmlwdEluamVjdGlv
blRpbWU+IGluamVjdGlvblRpbWU7CisgICAgZGVjb2RlciA+PiBpbmplY3Rpb25UaW1lOworICAg
IGlmICghaW5qZWN0aW9uVGltZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAK
KyAgICBPcHRpb25hbDxVc2VyQ29udGVudEluamVjdGVkRnJhbWVzPiBpbmplY3RlZEZyYW1lczsK
KyAgICBkZWNvZGVyID4+IGluamVjdGVkRnJhbWVzOworICAgIGlmICghaW5qZWN0ZWRGcmFtZXMp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgCisgICAgT3B0aW9uYWw8V2FpdEZv
ck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZz4gd2FpdEZvck5vdGlmaWNhdGlvbjsKKyAgICBk
ZWNvZGVyID4+IHdhaXRGb3JOb3RpZmljYXRpb247CisgICAgaWYgKCF3YWl0Rm9yTm90aWZpY2F0
aW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIAorICAgIHJldHVybiB7ewor
ICAgICAgICBXVEZNb3ZlKCpzb3VyY2UpLAorICAgICAgICBXVEZNb3ZlKCp1cmwpLAorICAgICAg
ICBXVEZNb3ZlKCp3aGl0ZWxpc3QpLAorICAgICAgICBXVEZNb3ZlKCpibGFja2xpc3QpLAorICAg
ICAgICBXVEZNb3ZlKCppbmplY3Rpb25UaW1lKSwKKyAgICAgICAgV1RGTW92ZSgqaW5qZWN0ZWRG
cmFtZXMpLAorICAgICAgICBXVEZNb3ZlKCp3YWl0Rm9yTm90aWZpY2F0aW9uKQorICAgIH19Owog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Vz
ZXJTY3JpcHRUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclNj
cmlwdFR5cGVzLmgJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
clNjcmlwdFR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDggQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1lbnVtIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIHsgSW5qZWN0QXRE
b2N1bWVudFN0YXJ0LCBJbmplY3RBdERvY3VtZW50RW5kIH07CitlbnVtIGNsYXNzIFVzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lIDogYm9vbCB7IERvY3VtZW50U3RhcnQsIERvY3VtZW50RW5kIH07Citl
bnVtIGNsYXNzIFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3RpbmcgOiBib29sIHsgTm8s
IFllcyB9OwogCiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBVc2VyU2NyaXB0OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaAkocmV2aXNpb24gMjU5MzA2KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCw3ICszOCw3IEBAIGNsYXNzIFVzZXJTdHlsZVNoZWV0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBVc2VyU3R5bGVTaGVldCgpCi0gICAgICAgIDogbV9pbmpl
Y3RlZEZyYW1lcyhJbmplY3RJbkFsbEZyYW1lcykKKyAgICAgICAgOiBtX2luamVjdGVkRnJhbWVz
KFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzKQogICAgICAgICAs
IG1fbGV2ZWwoVXNlclN0eWxlVXNlckxldmVsKQogICAgIHsKICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIu
Y3BwCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyTGlieG1sMi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxMyw3ICs4MTMsNyBA
QCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpzdGFydEVsZW1lbnROcyhjCiAgICAgICAgIGRvd25j
YXN0PEhUTUxIdG1sRWxlbWVudD4obmV3RWxlbWVudC5nZXQoKSkuaW5zZXJ0ZWRCeVBhcnNlcigp
OwogCiAgICAgaWYgKCFtX3BhcnNpbmdGcmFnbWVudCAmJiBpc0ZpcnN0RWxlbWVudCAmJiBkb2N1
bWVudCgpLT5mcmFtZSgpKQotICAgICAgICBkb2N1bWVudCgpLT5mcmFtZSgpLT5pbmplY3RVc2Vy
U2NyaXB0cyhJbmplY3RBdERvY3VtZW50U3RhcnQpOworICAgICAgICBkb2N1bWVudCgpLT5mcmFt
ZSgpLT5pbmplY3RVc2VyU2NyaXB0cyhVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRT
dGFydCk7CiB9CiAKIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmVuZEVsZW1lbnROcygpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkocmV2aXNpb24gMjU5MzM1KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw2NiBAQAorMjAyMC0wMy0zMSAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTUEkgdG8gbWFrZSBX
S1VzZXJTY3JpcHRzIHdhaXQgZm9yIGEgbm90aWZpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk4NDUKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzYwMzQyMjk5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oOgorICAgICAgICAoV2ViS2l0
Ojp0b1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKToKKyAgICAgICAgKFdlYktpdDo6dG9XS1VzZXJT
Y3JpcHRJbmplY3Rpb25UaW1lKToKKyAgICAgICAgKFdlYktpdDo6dG9Vc2VyQ29udGVudEluamVj
dGVkRnJhbWVzKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAg
ICAgKiBTaGFyZWQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViVXNlclNjcmlwdERhdGE6OmRlY29kZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmln
dXJhdGlvbjo6dXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24gY29uc3QpOgor
ICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6c2V0VXNlclNjcmlwdHNTaG91bGRXYWl0
VW50aWxOb3RpZmljYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlw
dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHA6CisgICAgICAg
IChXS1BhZ2VHcm91cEFkZFVzZXJTY3JpcHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S1VzZXJTY3JpcHRSZWYuY3BwOgorICAgICAgICAoV0tVc2VyU2NyaXB0Q3JlYXRlV2l0aFNvdXJj
ZSk6CisgICAgICAgIChXS1VzZXJTY3JpcHRHZXRNYWluRnJhbWVPbmx5KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbToKKyAgICAgICAgKC1bV0tVc2VyU2Ny
aXB0IGluaXRXaXRoU291cmNlOmluamVjdGlvblRpbWU6Zm9yTWFpbkZyYW1lT25seTpdKToKKyAg
ICAgICAgKC1bV0tVc2VyU2NyaXB0IGlzRm9yTWFpbkZyYW1lT25seV0pOgorICAgICAgICAoLVtX
S1VzZXJTY3JpcHQgX2luaXRXaXRoU291cmNlOmluamVjdGlvblRpbWU6Zm9yTWFpbkZyYW1lT25s
eTpsZWdhY3lXaGl0ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OnVzZXJDb250ZW50V29ybGQ6XSk6Cisg
ICAgICAgICgtW1dLVXNlclNjcmlwdCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpmb3JN
YWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YXNzb2NpYXRlZFVS
TDp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX2luaXRXaXRo
U291cmNlOmluamVjdGlvblRpbWU6Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0ZWxpc3Q6bGVn
YWN5QmxhY2tsaXN0OmNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bV0tVc2VyU2NyaXB0IF9p
bml0V2l0aFNvdXJjZTppbmplY3Rpb25UaW1lOmZvck1haW5GcmFtZU9ubHk6bGVnYWN5V2hpdGVs
aXN0OmxlZ2FjeUJsYWNrbGlzdDphc3NvY2lhdGVkVVJMOmNvbnRlbnRXb3JsZDpdKToKKyAgICAg
ICAgKC1bV0tVc2VyU2NyaXB0IF9pbml0V2l0aFNvdXJjZTppbmplY3Rpb25UaW1lOmZvck1haW5G
cmFtZU9ubHk6bGVnYWN5V2hpdGVsaXN0OmxlZ2FjeUJsYWNrbGlzdDphc3NvY2lhdGVkVVJMOmNv
bnRlbnRXb3JsZDp3YWl0Rm9yTm90aWZpY2F0aW9uOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVc2VyU2NyaXB0SW50ZXJuYWwuaDoKKyAgICAgICAgKEFQSTo6dG9XZWJDb3Jl
VXNlclNjcmlwdEluamVjdGlvblRpbWUpOgorICAgICAgICAoQVBJOjp0b1dLVXNlclNjcmlwdElu
amVjdGlvblRpbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0
UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX25vdGlmeVVzZXJTY3JpcHRzXSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXdDb25maWd1cmF0aW9uIF91c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNh
dGlvbl0pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9zZXRVc2VyU2NyaXB0
c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbToKKyAgICAgICAgKC1bX1dLVXNlclN0eWxlU2hl
ZXQgaW5pdFdpdGhTb3VyY2U6Zm9yTWFpbkZyYW1lT25seTpdKToKKyAgICAgICAgKC1bX1dLVXNl
clN0eWxlU2hlZXQgaW5pdFdpdGhTb3VyY2U6Zm9yV0tXZWJWaWV3OmZvck1haW5GcmFtZU9ubHk6
dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bX1dLVXNlclN0eWxlU2hlZXQgaW5pdFdp
dGhTb3VyY2U6Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0
OnVzZXJDb250ZW50V29ybGQ6XSk6CisgICAgICAgICgtW19XS1VzZXJTdHlsZVNoZWV0IGluaXRX
aXRoU291cmNlOmZvck1haW5GcmFtZU9ubHk6bGVnYWN5V2hpdGVsaXN0OmxlZ2FjeUJsYWNrbGlz
dDpiYXNlVVJMOnVzZXJDb250ZW50V29ybGQ6XSk6CisgICAgICAgICgtW19XS1VzZXJTdHlsZVNo
ZWV0IGlzRm9yTWFpbkZyYW1lT25seV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdEludGVy
bmFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Om1fcHJvY2Vzc0Rpc3BsYXlOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6bm90aWZ5VXNlclNjcmlwdHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphZGRVc2Vy
U2NyaXB0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDIwLTAzLTMx
ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCB0
eXBlIHRyYWl0cyBmb3IgU2Nyb2xsYWJsZUFyZWEsIGFuZCBvdGhlciBjbGVhbnVwCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAkocmV2aXNpb24gMjU5MzI0KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw2ICsxMzMsNyBAQCB2b2lk
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJCiAgICAgZW5jb2RlciA8PCBvbGRQ
YWdlSUQ7CiAgICAgZW5jb2RlciA8PCBvdmVycmlkZGVuTWVkaWFUeXBlOwogICAgIGVuY29kZXIg
PDwgY29yc0Rpc2FibGluZ1BhdHRlcm5zOworICAgIGVuY29kZXIgPDwgdXNlclNjcmlwdHNTaG91
bGRXYWl0VW50aWxOb3RpZmljYXRpb247CiAgICAgZW5jb2RlciA8PCBjcm9zc09yaWdpbkFjY2Vz
c0NvbnRyb2xDaGVja0VuYWJsZWQ7CiAgICAgZW5jb2RlciA8PCBwcm9jZXNzRGlzcGxheU5hbWU7
CiAKQEAgLTQxNiw2ICs0MTcsMTIgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cz4gV2ViUAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuY29y
c0Rpc2FibGluZ1BhdHRlcm5zID0gV1RGTW92ZSgqY29yc0Rpc2FibGluZ1BhdHRlcm5zKTsKIAor
ICAgIE9wdGlvbmFsPGJvb2w+IHVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9u
OworICAgIGRlY29kZXIgPj4gdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb247
CisgICAgaWYgKCF1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbikKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBwYXJhbWV0ZXJzLnVzZXJTY3JpcHRzU2hvdWxk
V2FpdFVudGlsTm90aWZpY2F0aW9uID0gKnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZp
Y2F0aW9uOworICAgIAogICAgIE9wdGlvbmFsPGJvb2w+IGNyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bENoZWNrRW5hYmxlZDsKICAgICBkZWNvZGVyID4+IGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENo
ZWNrRW5hYmxlZDsKICAgICBpZiAoIWNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxl
ZCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmgJKHJldmlzaW9uIDI1OTMyNCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDYgKzIwMiw3IEBA
IHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAgIFN0cmluZyBvdmVycmlk
ZGVuTWVkaWFUeXBlOwogICAgIFZlY3RvcjxTdHJpbmc+IGNvcnNEaXNhYmxpbmdQYXR0ZXJuczsK
KyAgICBib29sIHVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uIHsgdHJ1ZSB9
OwogICAgIGJvb2wgY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkIHsgdHJ1ZSB9
OwogICAgIFN0cmluZyBwcm9jZXNzRGlzcGxheU5hbWU7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVz
LmNwcAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksMTEgKzQ5
LDEyIEBAIE9wdGlvbmFsPFdlYlVzZXJTY3JpcHREYXRhPiBXZWJVc2VyU2NyaXAKICAgICBpZiAo
IXdvcmxkSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAKLSAg
ICBXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29k
ZSh1c2VyU2NyaXB0KSkKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpVc2VyU2NyaXB0PiB1c2VyU2Ny
aXB0OworICAgIGRlY29kZXIgPj4gdXNlclNjcmlwdDsKKyAgICBpZiAoIXVzZXJTY3JpcHQpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCi0gICAgcmV0dXJuIHt7IFdURk1vdmUo
KmlkZW50aWZpZXIpLCBXVEZNb3ZlKCp3b3JsZElkZW50aWZpZXIpLCBXVEZNb3ZlKHVzZXJTY3Jp
cHQpIH19OworICAgIHJldHVybiB7eyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqd29y
bGRJZGVudGlmaWVyKSwgV1RGTW92ZSgqdXNlclNjcmlwdCkgfX07CiB9CiAKIHZvaWQgV2ViVXNl
clN0eWxlU2hlZXREYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgJKHJldmlz
aW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2Fz
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OTMsMjEgKzk5MywyMSBAQCBpbmxpbmUgV2ViQ29yZTo6
VXNlclNjcmlwdEluamVjdGlvblRpbWUgCiB7CiAgICAgc3dpdGNoICh3a0luamVjdGVkVGltZSkg
ewogICAgIGNhc2Uga1dLSW5qZWN0QXREb2N1bWVudFN0YXJ0OgotICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6SW5qZWN0QXREb2N1bWVudFN0YXJ0OworICAgICAgICByZXR1cm4gV2ViQ29yZTo6VXNl
clNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50U3RhcnQ7CiAgICAgY2FzZSBrV0tJbmplY3RB
dERvY3VtZW50RW5kOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6SW5qZWN0QXREb2N1bWVudEVu
ZDsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1
bWVudEVuZDsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
V2ViQ29yZTo6SW5qZWN0QXREb2N1bWVudFN0YXJ0OworICAgIHJldHVybiBXZWJDb3JlOjpVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRTdGFydDsKIH0KIAogaW5saW5lIF9XS1VzZXJT
Y3JpcHRJbmplY3Rpb25UaW1lIHRvV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShXZWJDb3JlOjpV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3RlZFRpbWUpCiB7CiAgICAgc3dpdGNoIChpbmpl
Y3RlZFRpbWUpIHsKLSAgICBjYXNlIFdlYkNvcmU6OkluamVjdEF0RG9jdW1lbnRTdGFydDoKKyAg
ICBjYXNlIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1bWVudFN0YXJ0Ogog
ICAgICAgICByZXR1cm4ga1dLSW5qZWN0QXREb2N1bWVudFN0YXJ0OwotICAgIGNhc2UgV2ViQ29y
ZTo6SW5qZWN0QXREb2N1bWVudEVuZDoKKyAgICBjYXNlIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmpl
Y3Rpb25UaW1lOjpEb2N1bWVudEVuZDoKICAgICAgICAgcmV0dXJuIGtXS0luamVjdEF0RG9jdW1l
bnRFbmQ7CiAgICAgfQogCkBAIC0xMDE5LDEzICsxMDE5LDEzIEBAIGlubGluZSBXZWJDb3JlOjpV
c2VyQ29udGVudEluamVjdGVkRnJhbWUKIHsKICAgICBzd2l0Y2ggKHdrSW5qZWN0ZWRGcmFtZXMp
IHsKICAgICBjYXNlIGtXS0luamVjdEluQWxsRnJhbWVzOgotICAgICAgICByZXR1cm4gV2ViQ29y
ZTo6SW5qZWN0SW5BbGxGcmFtZXM7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lczsKICAgICBjYXNlIGtXS0luamVjdElu
VG9wRnJhbWVPbmx5OgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9u
bHk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJ
bmplY3RJblRvcEZyYW1lT25seTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXM7CisgICAgcmV0dXJuIFdlYkNv
cmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAkocmV2aXNpb24gMjU5MzI0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzc4MSw2ICs3NzgxLDcgQEAgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OgogCiAgICAgcGFyYW1ldGVycy5v
dmVycmlkZGVuTWVkaWFUeXBlID0gbV9vdmVycmlkZGVuTWVkaWFUeXBlOwogICAgIHBhcmFtZXRl
cnMuY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gbV9jb25maWd1cmF0aW9uLT5jb3JzRGlzYWJsaW5n
UGF0dGVybnMoKTsKKyAgICBwYXJhbWV0ZXJzLnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90
aWZpY2F0aW9uID0gbV9jb25maWd1cmF0aW9uLT51c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5v
dGlmaWNhdGlvbigpOwogICAgIHBhcmFtZXRlcnMuY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hl
Y2tFbmFibGVkID0gbV9jb25maWd1cmF0aW9uLT5jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVj
a0VuYWJsZWQoKTsKICAgICBwYXJhbWV0ZXJzLmhhc1Jlc291cmNlTG9hZENsaWVudCA9ICEhbV9y
ZXNvdXJjZUxvYWRDbGllbnQ7CiAKQEAgLTgyMDIsNiArODIwMywxMSBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6dXBkYXRlV2Vic2l0ZVBvbGljaWVzCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
VXBkYXRlV2Vic2l0ZVBvbGljaWVzKHdlYnNpdGVQb2xpY2llcykpOwogfQogCit2b2lkIFdlYlBh
Z2VQcm94eTo6bm90aWZ5VXNlclNjcmlwdHMoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6Ok5vdGlmeVVzZXJTY3JpcHRzKCkpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmlu
aXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlbmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQog
ewogICAgIHBhZ2VDbGllbnQoKS5kaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQ
cm92aWRlcihSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2FuaXRpemVTdWdnZXN0ZWRGaWxlbmFtZShz
dWdnZXN0ZWRGaWxlbmFtZSksIGRhdGFSZWZlcmVuY2UpOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI1OTMwNykKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MTEsNiArNjExLDcg
QEAgcHVibGljOgogICAgIGJvb2wgd2lsbEhhbmRsZUhvcml6b250YWxTY3JvbGxFdmVudHMoKSBj
b25zdDsKIAogICAgIHZvaWQgdXBkYXRlV2Vic2l0ZVBvbGljaWVzKFdlYnNpdGVQb2xpY2llc0Rh
dGEmJik7CisgICAgdm9pZCBub3RpZnlVc2VyU2NyaXB0cygpOwogCiAgICAgYm9vbCBjYW5TaG93
TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAy
NTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNyw5IEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGNvcnNEaXNhYmxpbmdQYXR0ZXJucygpIGNvbnN0IHsg
cmV0dXJuIG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zOyB9CiAgICAgdm9pZCBzZXRDT1JTRGlzYWJs
aW5nUGF0dGVybnMoVmVjdG9yPFdURjo6U3RyaW5nPiYmIHBhdHRlcm5zKSB7IG1fY29yc0Rpc2Fi
bGluZ1BhdHRlcm5zID0gV1RGTW92ZShwYXR0ZXJucyk7IH0KKyAgICAKKyAgICBib29sIHVzZXJT
Y3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91c2Vy
U2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsgfQorICAgIHZvaWQgc2V0VXNlclNj
cmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24oYm9vbCB2YWx1ZSkgeyBtX3VzZXJTY3Jp
cHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uID0gdmFsdWU7IH0KIAogICAgIGJvb2wgY3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9jcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7IH0KICAgICB2b2lkIHNldENyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9jcm9zc09yaWdp
bkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgPSBlbmFibGVkOyB9CkBAIC0xODcsNiArMTkwLDcg
QEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8V1RGOjpTdHJpbmcsIFJlZjxXZWJLaXQ6OldlYlVS
TFNjaGVtZUhhbmRsZXI+PiBtX3VybFNjaGVtZUhhbmRsZXJzOwogICAgIFZlY3RvcjxXVEY6OlN0
cmluZz4gbV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7CisgICAgYm9vbCBtX3VzZXJTY3JpcHRzU2hv
dWxkV2FpdFVudGlsTm90aWZpY2F0aW9uIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9jcm9zc09yaWdp
bkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgeyB0cnVlIH07CiAgICAgV1RGOjpTdHJpbmcgbV9w
cm9jZXNzRGlzcGxheU5hbWU7CiAgICAgV2ViS2l0OjpXZWJWaWV3Q2F0ZWdvcnkgbV93ZWJWaWV3
Q2F0ZWdvcnkgeyBXZWJLaXQ6OldlYlZpZXdDYXRlZ29yeTo6QXBwQm91bmREb21haW4gfTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuaAkocmV2aXNp
b24gMjU5MzA2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTUgKzM2LDE2IEBAIGNsYXNzIFVzZXJTY3JpcHQgZmlu
YWwgOiBwdWJsaWMgT2JqZWN0SW0KIHB1YmxpYzoKICAgICBzdGF0aWMgV1RGOjpVUkwgZ2VuZXJh
dGVVbmlxdWVVUkwoKTsKIAotICAgIHN0YXRpYyBSZWY8VXNlclNjcmlwdD4gY3JlYXRlKFdlYkNv
cmU6OlVzZXJTY3JpcHQgdXNlclNjcmlwdCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQorICAg
IHN0YXRpYyBSZWY8VXNlclNjcmlwdD4gY3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQmJiB1c2Vy
U2NyaXB0LCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBVc2VyU2NyaXB0KFdURk1vdmUodXNlclNjcmlwdCksIHdvcmxkKSk7CiAg
ICAgfQogCiAgICAgVXNlclNjcmlwdChXZWJDb3JlOjpVc2VyU2NyaXB0LCBBUEk6OkNvbnRlbnRX
b3JsZCYpOwogCisgICAgV2ViQ29yZTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCgpIHsgcmV0dXJu
IG1fdXNlclNjcmlwdDsgfQogICAgIGNvbnN0IFdlYkNvcmU6OlVzZXJTY3JpcHQmIHVzZXJTY3Jp
cHQoKSBjb25zdCB7IHJldHVybiBtX3VzZXJTY3JpcHQ7IH0KLSAgICAKKwogICAgIENvbnRlbnRX
b3JsZCYgY29udGVudFdvcmxkKCkgeyByZXR1cm4gbV93b3JsZDsgfQogICAgIGNvbnN0IENvbnRl
bnRXb3JsZCYgY29udGVudFdvcmxkKCkgY29uc3QgeyByZXR1cm4gbV93b3JsZDsgfQogICAgIApJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcAko
cmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
R3JvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgV0tQYWdlR3Jv
dXBBZGRVc2VyU2NyaXB0KFdLUGFnZUdyb3UKICAgICBhdXRvIGJsYWNrbGlzdCA9IHRvSW1wbChi
bGFja2xpc3RlZFVSTFBhdHRlcm5zKTsKICAgICAKICAgICBhdXRvIHVybCA9IGJhc2VVUkxTdHJp
bmcuaXNFbXB0eSgpID8gYWJvdXRCbGFua1VSTCgpIDogIFVSTChVUkwoKSwgYmFzZVVSTFN0cmlu
Zyk7Ci0gICAgUmVmPEFQSTo6VXNlclNjcmlwdD4gdXNlclNjcmlwdCA9IEFQSTo6VXNlclNjcmlw
dDo6Y3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUo
dXJsKSwgd2hpdGVsaXN0ID8gd2hpdGVsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9yPFN0
cmluZz4oKSwgYmxhY2tsaXN0ID8gYmxhY2tsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9y
PFN0cmluZz4oKSwgdG9Vc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgdG9V
c2VyQ29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKSB9LCBBUEk6OkNvbnRlbnRX
b3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKKyAgICBSZWY8QVBJOjpVc2VyU2NyaXB0PiB1c2Vy
U2NyaXB0ID0gQVBJOjpVc2VyU2NyaXB0OjpjcmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdU
Rk1vdmUoc291cmNlKSwgV1RGTW92ZSh1cmwpLCB3aGl0ZWxpc3QgPyB3aGl0ZWxpc3QtPnRvU3Ry
aW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBibGFja2xpc3QgPyBibGFja2xpc3QtPnRv
U3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCB0b1VzZXJTY3JpcHRJbmplY3Rpb25U
aW1lKGluamVjdGlvblRpbWUpLCB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRG
cmFtZXMpLCBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9
LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKICAgICB0b0ltcGwocGFn
ZUdyb3VwUmVmKS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCh1c2VyU2Ny
aXB0LmdldCgpLCBJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHk6Ok5vKTsKIH0KIApJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyU2NyaXB0UmVmLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJTY3JpcHRSZWYuY3Bw
CShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Vz
ZXJTY3JpcHRSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIFdLVHlwZUlE
IFdLVXNlclNjcmlwdEdldFR5cGVJRCgpCiAKIFdLVXNlclNjcmlwdFJlZiBXS1VzZXJTY3JpcHRD
cmVhdGVXaXRoU291cmNlKFdLU3RyaW5nUmVmIHNvdXJjZVJlZiwgX1dLVXNlclNjcmlwdEluamVj
dGlvblRpbWUgaW5qZWN0aW9uVGltZSwgYm9vbCBmb3JNYWluRnJhbWVPbmx5KQogewotICAgIHJl
dHVybiB0b0FQSSgmQVBJOjpVc2VyU2NyaXB0OjpjcmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB7
IHRvV1RGU3RyaW5nKHNvdXJjZVJlZiksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVV
UkwoKSwgeyB9LCB7IH0sIHRvVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSks
IGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNv
cmU6OkluamVjdEluQWxsRnJhbWVzIH0sIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdv
cmxkKCkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZBUEk6OlVzZXJTY3JpcHQ6OmNy
ZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHsgdG9XVEZTdHJpbmcoc291cmNlUmVmKSwgQVBJOjpV
c2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCB7IH0sIHsgfSwgdG9Vc2VyU2NyaXB0SW5q
ZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6Oldh
aXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Ok5vIH0sIEFQSTo6Q29udGVudFdvcmxk
OjpwYWdlQ29udGVudFdvcmxkKCkpLmxlYWtSZWYoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLVXNl
clNjcmlwdENvcHlTb3VyY2UoV0tVc2VyU2NyaXB0UmVmIHVzZXJTY3JpcHRSZWYpCkBAIC01Myw1
ICs1Myw1IEBAIF9XS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lIFdLVXNlclNjcmlwdEcKIAogYm9v
bCBXS1VzZXJTY3JpcHRHZXRNYWluRnJhbWVPbmx5KFdLVXNlclNjcmlwdFJlZiB1c2VyU2NyaXB0
UmVmKQogewotICAgIHJldHVybiB0b0ltcGwodXNlclNjcmlwdFJlZiktPnVzZXJTY3JpcHQoKS5p
bmplY3RlZEZyYW1lcygpID09IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5OworICAgIHJl
dHVybiB0b0ltcGwodXNlclNjcmlwdFJlZiktPnVzZXJTY3JpcHQoKS5pbmplY3RlZEZyYW1lcygp
ID09IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVP
bmx5OwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNj
cmlwdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tVc2VyU2NyaXB0Lm1tCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICsz
NSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNvdXJjZTooTlNTdHJpbmcKICAgICBpZiAo
IShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIEFQSTo6
T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3Jl
OjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgQVBJOjpVc2VyU2NyaXB0OjpnZW5l
cmF0ZVVuaXF1ZVVSTCgpLCB7IH0sIHsgfSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0
aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVj
dEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgfSwgQVBJOjpDb250
ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVj
dEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBX
VEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCks
IHsgfSwgeyB9LCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlv
blRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJl
Zm9yZUluamVjdGluZzo6Tm8gfSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQo
KSk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTU5LDcgKzU5LDcgQEAgLSAoV0tVc2VyU2Ny
aXB0SW5qZWN0aW9uVGltZSlpbmplY3Rpb25UaQogCiAtIChCT09MKWlzRm9yTWFpbkZyYW1lT25s
eQogewotICAgIHJldHVybiBfdXNlclNjcmlwdC0+dXNlclNjcmlwdCgpLmluamVjdGVkRnJhbWVz
KCkgPT0gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHk7CisgICAgcmV0dXJuIF91c2VyU2Ny
aXB0LT51c2VyU2NyaXB0KCkuaW5qZWN0ZWRGcmFtZXMoKSA9PSBXZWJDb3JlOjpVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seTsKIH0KIAogLSAoaWQpY29weVdp
dGhab25lOihOU1pvbmUgKil6b25lCkBAIC04NCw3ICs4NCw3IEBAIC0gKGluc3RhbmNldHlwZSlf
aW5pdFdpdGhTb3VyY2U6KE5TU3RyaW4KICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBw
ZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJp
bmcoc291cmNlKSwgQVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBBUEk6OnRv
U3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5
QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rp
b25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5
IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgfSwgKnVzZXJDb250ZW50V29ybGQtPl9jb250
ZW50V29ybGQtPl9jb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldy
YXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpT
dHJpbmcoc291cmNlKSwgQVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBBUEk6
OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVn
YWN5QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmpl
Y3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRp
b25CZWZvcmVJbmplY3Rpbmc6Ok5vIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVudFdvcmxk
LT5fY29udGVudFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtOTQsNyArOTQsNyBA
QCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluCiAgICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVj
dDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNl
clNjcmlwdCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIFVSTChhc3NvY2lhdGVkVVJMKSwgQVBJOjp0
b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2Fj
eUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0
aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25s
eSA6IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29u
dGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5X
cmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6
U3RyaW5nKHNvdXJjZSksIFVSTChhc3NvY2lhdGVkVVJMKSwgQVBJOjp0b1N0cmluZ1ZlY3Rvcihs
ZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIEFQ
STo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1h
aW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJ
blRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVj
dEluQWxsRnJhbWVzLCBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5n
OjpObyB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7
CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTExMCw3ICsxMTAsNyBAQCAtIChpbnN0YW5jZXR5
cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5X
cmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6
U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgQVBJ
Ojp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxl
Z2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5q
ZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1l
T25seSA6IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sICpjb250ZW50V29ybGQtPl9jb250
ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2Vy
U2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwg
QVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBBUEk6OnRvU3RyaW5nVmVjdG9y
KGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwg
QVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9y
TWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVj
dEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5q
ZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rp
bmc6Ok5vIH0sICpjb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogCiAgICAgcmV0dXJuIHNl
bGY7CiB9CkBAIC0xMjAsNyArMTIwLDE3IEBAIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhTb3Vy
Y2U6KE5TU3RyaW4KICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2Vy
U2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwg
VVJMKGFzc29jaWF0ZWRVUkwpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCks
IEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdl
YkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMg
fSwgKmNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0
cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQg
eyBXVEY6OlN0cmluZyhzb3VyY2UpLCBVUkwoYXNzb2NpYXRlZFVSTCksIEFQSTo6dG9TdHJpbmdW
ZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xp
c3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUp
LCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6
SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
OjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUlu
amVjdGluZzo6Tm8gfSwgKmNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CisKKyAgICByZXR1
cm4gc2VsZjsKK30KKworLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aFNvdXJjZTooTlNTdHJpbmcg
Kilzb3VyY2UgaW5qZWN0aW9uVGltZTooV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSlpbmplY3Rp
b25UaW1lIGZvck1haW5GcmFtZU9ubHk6KEJPT0wpZm9yTWFpbkZyYW1lT25seSBsZWdhY3lXaGl0
ZWxpc3Q6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilsZWdhY3lXaGl0ZWxpc3QgbGVnYWN5QmxhY2ts
aXN0OihOU0FycmF5PE5TU3RyaW5nICo+ICopbGVnYWN5QmxhY2tsaXN0IGFzc29jaWF0ZWRVUkw6
KE5TVVJMICopYXNzb2NpYXRlZFVSTCBjb250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29u
dGVudFdvcmxkIHdhaXRGb3JOb3RpZmljYXRpb246KEJPT0wpd2FpdEZvck5vdGlmaWNhdGlvbgor
eworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOwor
CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNl
bGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBVUkwoYXNzb2Np
YXRlZFVSTCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0
cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmpl
Y3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNl
ckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpV
c2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgd2FpdEZvck5vdGlm
aWNhdGlvbj8gV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6WWVz
IDogV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6Tm8gfSwgKmNv
bnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHRJbnRlcm5hbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJT
Y3JpcHRJbnRlcm5hbC5oCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAt
NDEsMjMgKzQxLDIxIEBAIGlubGluZSBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSAK
IHsKICAgICBzd2l0Y2ggKGluamVjdGlvblRpbWUpIHsKICAgICBjYXNlIFdLVXNlclNjcmlwdElu
amVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQ6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpJbmpl
Y3RBdERvY3VtZW50U3RhcnQ7Ci0KKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lOjpEb2N1bWVudFN0YXJ0OwogICAgIGNhc2UgV0tVc2VyU2NyaXB0SW5qZWN0
aW9uVGltZUF0RG9jdW1lbnRFbmQ6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpJbmplY3RBdERv
Y3VtZW50RW5kOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRp
bWU6OkRvY3VtZW50RW5kOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50RW5kOworICAgIHJldHVybiBXZWJDb3Jl
OjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQ7CiB9CiAKIGlubGluZSBXS1Vz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lIHRvV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShXZWJDb3Jl
OjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lKQogewogICAgIHN3aXRjaCAo
aW5qZWN0aW9uVGltZSkgewotICAgIGNhc2UgV2ViQ29yZTo6SW5qZWN0QXREb2N1bWVudFN0YXJ0
OgorICAgIGNhc2UgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50U3Rh
cnQ6CiAgICAgICAgIHJldHVybiBXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0
YXJ0OwotCi0gICAgY2FzZSBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50RW5kOgorICAgIGNhc2Ug
V2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50RW5kOgogICAgICAgICBy
ZXR1cm4gV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRFbmQ7CiAgICAgfQogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0UHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Vz
ZXJTY3JpcHRQcml2YXRlLmgJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHRQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDYgKzM4LDggQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIC0gKGluc3RhbmNldHlwZSlf
aW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGluamVjdGlvblRpbWU6KFdLVXNlclNj
cmlwdEluamVjdGlvblRpbWUpaW5qZWN0aW9uVGltZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZv
ck1haW5GcmFtZU9ubHkgbGVnYWN5V2hpdGVsaXN0OihOU0FycmF5PE5TU3RyaW5nICo+ICopbGVn
YWN5V2hpdGVsaXN0IGxlZ2FjeUJsYWNrbGlzdDooTlNBcnJheTxOU1N0cmluZyAqPiAqKWxlZ2Fj
eUJsYWNrbGlzdCBjb250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtIChp
bnN0YW5jZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25U
aW1lOihXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKWluamVjdGlvblRpbWUgZm9yTWFpbkZyYW1l
T25seTooQk9PTClmb3JNYWluRnJhbWVPbmx5IGxlZ2FjeVdoaXRlbGlzdDooTlNBcnJheTxOU1N0
cmluZyAqPiAqKWxlZ2FjeVdoaXRlbGlzdCBsZWdhY3lCbGFja2xpc3Q6KE5TQXJyYXk8TlNTdHJp
bmcgKj4gKilsZWdhY3lCbGFja2xpc3QgYXNzb2NpYXRlZFVSTDooTlNVUkwgKilhc3NvY2lhdGVk
VVJMIGNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLSAoaW5zdGFu
Y2V0eXBlKV9pbml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgaW5qZWN0aW9uVGltZToo
V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSlpbmplY3Rpb25UaW1lIGZvck1haW5GcmFtZU9ubHk6
KEJPT0wpZm9yTWFpbkZyYW1lT25seSBsZWdhY3lXaGl0ZWxpc3Q6KE5TQXJyYXk8TlNTdHJpbmcg
Kj4gKilsZWdhY3lXaGl0ZWxpc3QgbGVnYWN5QmxhY2tsaXN0OihOU0FycmF5PE5TU3RyaW5nICo+
ICopbGVnYWN5QmxhY2tsaXN0IGFzc29jaWF0ZWRVUkw6KE5TVVJMICopYXNzb2NpYXRlZFVSTCBj
b250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIHdhaXRGb3JOb3RpZmlj
YXRpb246KEJPT0wpd2FpdEZvck5vdGlmaWNhdGlvbiBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIF9XS1VzZXJDb250ZW50V29ybGQgKl91c2VyQ29udGVudFdvcmxkIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTIpLCBpb3MoMTAuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBXS0NvbnRlbnRXb3JsZCAqX2NvbnRlbnRXb3JsZCBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDI1OTMwNykK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtp
bmcgY29weSkKQEAgLTIzMjMsNiArMjMyMywxMSBAQCAtICh2b2lkKV91cGRhdGVXZWJwYWdlUHJl
ZmVyZW5jZXM6KFdLV2ViCiAgICAgX3BhZ2UtPnVwZGF0ZVdlYnNpdGVQb2xpY2llcyhXVEZNb3Zl
KGRhdGEpKTsKIH0KIAorLSAodm9pZClfbm90aWZ5VXNlclNjcmlwdHMKK3sKKyAgICBfcGFnZS0+
bm90aWZ5VXNlclNjcmlwdHMoKTsKK30KKwogLSAoQk9PTClfYWxsb3dzUmVtb3RlSW5zcGVjdGlv
bgogewogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24ubW0JKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MTMsNiAr
OTEzLDE2IEBAIC0gKHZvaWQpX3NldENPUlNEaXNhYmxpbmdQYXR0ZXJuczooTlNBcnIKICAgICBf
cGFnZUNvbmZpZ3VyYXRpb24tPnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhXVEZNb3ZlKHZlY3Rv
cikpOwogfQogCistIChCT09MKV91c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlv
bgoreworICAgIHJldHVybiBfcGFnZUNvbmZpZ3VyYXRpb24tPnVzZXJTY3JpcHRzU2hvdWxkV2Fp
dFVudGlsTm90aWZpY2F0aW9uKCk7Cit9CisKKy0gKHZvaWQpX3NldFVzZXJTY3JpcHRzU2hvdWxk
V2FpdFVudGlsTm90aWZpY2F0aW9uOihCT09MKXZhbHVlCit7CisgICAgX3BhZ2VDb25maWd1cmF0
aW9uLT5zZXRVc2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbih2YWx1ZSk7Cit9
CisKIC0gKHZvaWQpX3NldENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDooQk9P
TCllbmFibGVkCiB7CiAgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRDcm9zc09yaWdpbkFjY2Vz
c0NvbnRyb2xDaGVja0VuYWJsZWQoZW5hYmxlZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJh
dGlvblByaXZhdGUuaAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg0LDYgKzg0LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIF9XS1dlYlZp
ZXdDYQogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLV2Vic2l0ZURhdGFTdG9y
ZSAqX3dlYnNpdGVEYXRhU3RvcmVJZkV4aXN0cyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNl
dHRlcj1fc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zOikgTlNBcnJheTxOU1N0cmluZyAqPiAqX2Nv
cnNEaXNhYmxpbmdQYXR0ZXJucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0VXNlclNj
cmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb246KSBCT09MIF91c2VyU2NyaXB0c1Nob3Vs
ZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0Q3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOikgQk9PTCBfY3Jvc3NPcmlnaW5BY2Nl
c3NDb250cm9sQ2hlY2tFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgJ
KHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBAQCBmb3Ig
dGhpcyBwcm9wZXJ0eS4KIAogLSAodm9pZClfdXBkYXRlV2Vic2l0ZVBvbGljaWVzOihfV0tXZWJz
aXRlUG9saWNpZXMgKil3ZWJzaXRlUG9saWNpZXMgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBM
QUNFTUVOVCgiLV91cGRhdGVXZWJwYWdlUHJlZmVyZW5jZXM6IiwgbWFjb3MoMTAuMTMsIFdLX01B
Q19UQkEpLCBpb3MoMTEuMywgV0tfSU9TX1RCQSkpOwogLSAodm9pZClfdXBkYXRlV2VicGFnZVBy
ZWZlcmVuY2VzOihXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKXdlYnBhZ2VQcmVmZXJlbmNlcyBXS19B
UElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9p
ZClfbm90aWZ5VXNlclNjcmlwdHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIAogLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVz
ZXJHZXN0dXJlOihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOwogLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0
OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgaW5GcmFtZTooV0tGcmFtZUluZm8gKilmcmFt
ZSBpbkNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICogZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVy
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Vz
ZXJTdHlsZVNoZWV0Lm1tCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDcgKzQ0LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZwogICAg
IC8vIEZJWE1FOiBJbiB0aGUgQVBJIHRlc3QsIHdlIGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwg
YmVsb3cgYmVmb3JlIHRoZSBBUEk6Ok9iamVjdCBjb25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4u
IHdoZXJlIHNob3VsZCB0aGlzIHJlYWxseSBiZT8KICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJL
aXQyKCk7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0
eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291
cmNlKSwgQVBJOjpVc2VyU3R5bGVTaGVldDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgeyB9LCB7IH0s
IGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNv
cmU6OkluamVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgQVBJ
OjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgQVBJOjpPYmplY3Q6OmNv
bnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2Vy
U3R5bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclN0eWxlU2hlZXQ6Omdl
bmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgeyB9LCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3Jl
OjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6
VXNlclN0eWxlVXNlckxldmVsIH0sIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxk
KCkpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC01OCw3ICs1OCw3IEBAIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aFNvdXJjZTooTlNTdHJpbmcKICAgICAvLyBGSVhNRTogSW4gdGhlIEFQSSB0
ZXN0LCB3ZSBjYW4gdXNlIGdlbmVyYXRlVW5pcXVlVVJMIGJlbG93IGJlZm9yZSB0aGUgQVBJOjpP
YmplY3QgY29uc3RydWN0b3IgaGFzIGRvbmUgdGhpcy4uLiB3aGVyZSBzaG91bGQgdGhpcyByZWFs
bHkgYmU/CiAgICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0MigpOwogCi0gICAgQVBJOjpPYmpl
Y3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3Jl
OjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclN0eWxlU2hl
ZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgIHsgfSwgZm9yTWFpbkZyYW1lT25seSA/IFdl
YkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMs
IFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCwgW3dlYlZpZXcgX3BhZ2VdLT53ZWJQYWdlSUQo
KSB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7Cisg
ICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0Pihz
ZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6
VXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgIHsgfSwgZm9yTWFpbkZy
YW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9w
RnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5B
bGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCwgW3dlYlZpZXcgX3BhZ2VdLT53
ZWJQYWdlSUQoKSB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRX
b3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTcxLDcgKzcxLDcgQEAgLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZwogICAgIC8vIEZJWE1FOiBJbiB0aGUgQVBJ
IHRlc3QsIHdlIGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwgYmVsb3cgYmVmb3JlIHRoZSBBUEk6
Ok9iamVjdCBjb25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4uIHdoZXJlIHNob3VsZCB0aGlzIHJl
YWxseSBiZT8KICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBBUEk6Ok9i
amVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdlYkNv
cmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgQVBJOjpVc2VyU3R5bGVT
aGVldDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0
ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIGZvck1haW5GcmFt
ZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OkluamVjdElu
QWxsRnJhbWVzLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgKnVzZXJDb250ZW50V29y
bGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25z
dHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0
eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5l
cmF0ZVVuaXF1ZVVSTCgpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQ
STo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdl
YkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDog
V2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdl
YkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRX
b3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTg0LDcgKzg0
LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZwogICAgIC8vIEZJ
WE1FOiBJbiB0aGUgQVBJIHRlc3QsIHdlIGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwgYmVsb3cg
YmVmb3JlIHRoZSBBUEk6Ok9iamVjdCBjb25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4uIHdoZXJl
IHNob3VsZCB0aGlzIHJlYWxseSBiZT8KICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7
CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hl
ZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwg
eyAgVVJMKCksIFdURjo6U3RyaW5nKFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJp
bmddKSB9LCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJp
bmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6Oklu
amVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6
OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+
X2NvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6
OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3Ry
aW5nKHNvdXJjZSksIHsgIFVSTCgpLCBXVEY6OlN0cmluZyhbYmFzZVVSTCBfd2ViX29yaWdpbmFs
RGF0YUFzV1RGU3RyaW5nXSkgfSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3Qp
LCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIGZvck1haW5GcmFtZU9ubHkg
PyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25s
eSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVz
LCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgKnVzZXJDb250ZW50V29ybGQtPl9jb250
ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0xMDks
NyArMTA5LDcgQEAgLSAoTlNVUkwgKiliYXNlVVJMCiAKIC0gKEJPT0wpaXNGb3JNYWluRnJhbWVP
bmx5CiB7Ci0gICAgcmV0dXJuIF91c2VyU3R5bGVTaGVldC0+dXNlclN0eWxlU2hlZXQoKS5pbmpl
Y3RlZEZyYW1lcygpID09IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5OworICAgIHJldHVy
biBfdXNlclN0eWxlU2hlZXQtPnVzZXJTdHlsZVNoZWV0KCkuaW5qZWN0ZWRGcmFtZXMoKSA9PSBX
ZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seTsK
IH0KIAogLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM5Miw3ICszOTIsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6YWRkVXNlclNjCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBh
dXRvJiBtYWluRnJhbWUgPSBwYWdlLm1haW5GcmFtZSgpOwotICAgICAgICAgICAgaWYgKHVzZXJT
Y3JpcHQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBJbmplY3RJblRvcEZyYW1lT25seSkgeworICAgICAg
ICAgICAgaWYgKHVzZXJTY3JpcHQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBVc2VyQ29udGVudEluamVj
dGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSkgewogICAgICAgICAgICAgICAgIG1haW5G
cmFtZS5pbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkod29ybGQuY29yZVdvcmxkKCksIHVzZXJT
Y3JpcHQpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAy
NTkzMjQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCAKICNlbmRpZgogCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY29yc0Rp
c2FibGluZ1BhdHRlcm5zID0gV1RGTW92ZShwYXJhbWV0ZXJzLmNvcnNEaXNhYmxpbmdQYXR0ZXJu
cyk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24udXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3Rp
ZmljYXRpb24gPSBwYXJhbWV0ZXJzLnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0
aW9uOwogICAgIGlmICghcGFyYW1ldGVycy5jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Vu
YWJsZWQpCiAgICAgICAgIENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXI6OnNp
bmdsZXRvbigpLnNldENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZChmYWxzZSk7
CiAKQEAgLTYyNzcsNiArNjI3OCwxNCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVdlYnNpdGVQb2xp
Y2llcyhXZWJzCiAjZW5kaWYKIH0KIAordm9pZCBXZWJQYWdlOjpub3RpZnlVc2VyU2NyaXB0cygp
Cit7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFnZS0+bm90
aWZ5VG9JbmplY3RVc2VyU2NyaXB0cygpOworfQorCiB1bnNpZ25lZCBXZWJQYWdlOjpleHRlbmRJ
bmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uKCkKIHsKICAgICB1bnNpZ25lZCB0b2tlbiA9
IG1fbWF4aW11bVJlbmRlcmluZ1N1cHByZXNzaW9uVG9rZW4gKyAxOwpAQCAtNjQyOSw3ICs2NDM4
LDcgQEAgdm9pZCBXZWJQYWdlOjppbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaAogCiB2b2lkIFdl
YlBhZ2U6OmFkZFVzZXJTY3JpcHQoU3RyaW5nJiYgc291cmNlLCBJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkJiB3b3JsZCwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3Rl
ZEZyYW1lcywgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSkK
IHsKLSAgICBXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSks
IFVSTChhYm91dEJsYW5rVVJMKCkpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigp
LCBpbmplY3Rpb25UaW1lLCBpbmplY3RlZEZyYW1lcyB9OworICAgIFdlYkNvcmU6OlVzZXJTY3Jp
cHQgdXNlclNjcmlwdCB7IFdURk1vdmUoc291cmNlKSwgVVJMKGFib3V0QmxhbmtVUkwoKSksIFZl
Y3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIGluamVjdGlvblRpbWUsIGluamVjdGVk
RnJhbWVzLCBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9
OwogCiAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTY3JpcHQod29ybGQsIFdU
Rk1vdmUodXNlclNjcmlwdCkpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjE2LDYgKzE2MTYs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVwb3J0VXNlZEZlYXR1cmVzKCk7CiAKICAgICB2b2lk
IHVwZGF0ZVdlYnNpdGVQb2xpY2llcyhXZWJzaXRlUG9saWNpZXNEYXRhJiYpOworICAgIHZvaWQg
bm90aWZ5VXNlclNjcmlwdHMoKTsKIAogICAgIHZvaWQgY2hhbmdlRm9udChXZWJDb3JlOjpGb250
Q2hhbmdlcyYmKTsKICAgICB2b2lkIGNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdlYkNvcmU6OkZvbnRB
dHRyaWJ1dGVDaGFuZ2VzJiYpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNTkzMDYpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODYsNiArMTg2LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZChlbnVtOnVpbgogICAgIERpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbShzdHJ1Y3QgV2ViQ29y
ZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBiYWNrRm9yd2FyZEl0ZW1JRCkKIAogICAgIFVw
ZGF0ZVdlYnNpdGVQb2xpY2llcyhzdHJ1Y3QgV2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhIHdl
YnNpdGVQb2xpY2llcykKKyAgICBOb3RpZnlVc2VyU2NyaXB0cygpCiAgICAgRGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBs
aXN0ZW5lcklELCBzdHJ1Y3QgV2ViS2l0OjpQb2xpY3lEZWNpc2lvbiBwb2xpY3lEZWNpc2lvbikK
IAogICAgIENvbnRpbnVlV2lsbFN1Ym1pdEZvcm0oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMy0zMSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTUEkgdG8g
bWFrZSBXS1VzZXJTY3JpcHRzIHdhaXQgZm9yIGEgbm90aWZpY2F0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk4NDUKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzYwMzQyMjk5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9p
bmplY3RPdXRsb29rUXVpcmtzU2NyaXB0XSk6CisKIDIwMjAtMDMtMzAgIERldmluIFJvdXNzbyAg
PGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHByb3ZpZGUgYSB3
YXkgdG8gbG9nIG1lc3NhZ2VzIGZyb20gdGhlIG5ldHdvcmsgcHJvY2VzcwpJbmRleDogU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjU5MzA2KQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjI3LDcgKzEyMjcsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKmxlYWtPdXRsb29rUXVp
cmtzVXNlclNjCiAtKHZvaWQpX2luamVjdE91dGxvb2tRdWlya3NTY3JpcHQKIHsKICAgICBzdGF0
aWMgTlNTdHJpbmcgKm91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cyA9IGxlYWtPdXRsb29rUXVp
cmtzVXNlclNjcmlwdENvbnRlbnRzKCk7Ci0gICAgX3ByaXZhdGUtPmdyb3VwLT51c2VyQ29udGVu
dENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KCpjb3JlKFtXZWJTY3JpcHRXb3JsZCB3b3JsZF0p
LCBtYWtlVW5pcXVlPFdlYkNvcmU6OlVzZXJTY3JpcHQ+KG91dGxvb2tRdWlya3NTY3JpcHRDb250
ZW50cywgVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIFdlYkNvcmU6
OkluamVjdEF0RG9jdW1lbnRFbmQsIFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzKSk7CisgICAg
X3ByaXZhdGUtPmdyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KCpj
b3JlKFtXZWJTY3JpcHRXb3JsZCB3b3JsZF0pLCBtYWtlVW5pcXVlPFdlYkNvcmU6OlVzZXJTY3Jp
cHQ+KG91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cywgVVJMKCksIFZlY3RvcjxTdHJpbmc+KCks
IFZlY3RvcjxTdHJpbmc+KCksIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1
bWVudEVuZCwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxG
cmFtZXMsIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Ok5vKSk7
CiAKIH0KICNlbmRpZgpAQCAtNDY3Niw3ICs0Njc2LDcgQEAgKyAodm9pZClfYWRkVXNlclNjcmlw
dFRvR3JvdXA6KE5TU3RyaW5nIAogICAgIGlmICghd29ybGQpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGF1dG8gdXNlclNjcmlwdCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VXNlclNjcmlwdD4oc291
cmNlLCB1cmwsIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNr
bGlzdCksIGluamVjdGlvblRpbWUgPT0gV2ViSW5qZWN0QXREb2N1bWVudFN0YXJ0ID8gV2ViQ29y
ZTo6SW5qZWN0QXREb2N1bWVudFN0YXJ0IDogV2ViQ29yZTo6SW5qZWN0QXREb2N1bWVudEVuZCwg
aW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBXZWJDb3JlOjpJbmplY3RJ
bkFsbEZyYW1lcyA6IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5KTsKKyAgICBhdXRvIHVz
ZXJTY3JpcHQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlVzZXJTY3JpcHQ+KHNvdXJjZSwgdXJsLCB0
b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmpl
Y3Rpb25UaW1lID09IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/IFdlYkNvcmU6OlVzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lOjpEb2N1bWVudFN0YXJ0IDogV2ViQ29yZTo6VXNlclNjcmlwdEluamVj
dGlvblRpbWU6OkRvY3VtZW50RW5kLCBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZy
YW1lcyA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJh
bWVzIDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFt
ZU9ubHksIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Ok5vKTsK
ICAgICB2aWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQoKmNv
cmUod29ybGQpLCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKIH0KIApAQCAtNDY5OSw3ICs0Njk5LDcg
QEAgKyAodm9pZClfYWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwOihOU1N0cgogICAgIGlmICghd29y
bGQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gc3R5bGVTaGVldCA9IG1ha2VVbmlxdWU8
V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+KHNvdXJjZSwgdXJsLCB0b1N0cmluZ1ZlY3Rvcih3aGl0
ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3RlZEZyYW1lcyA9PSBXZWJJ
bmplY3RJbkFsbEZyYW1lcyA/IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIDogV2ViQ29yZTo6
SW5qZWN0SW5Ub3BGcmFtZU9ubHksIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCk7CisgICAg
YXV0byBzdHlsZVNoZWV0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpVc2VyU3R5bGVTaGVldD4oc291
cmNlLCB1cmwsIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNr
bGlzdCksIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gV2ViQ29yZTo6
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMgOiBXZWJDb3JlOjpV
c2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSwgV2ViQ29yZTo6
VXNlclN0eWxlVXNlckxldmVsKTsKICAgICB2aWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxl
cigpLmFkZFVzZXJTdHlsZVNoZWV0KCpjb3JlKHdvcmxkKSwgV1RGTW92ZShzdHlsZVNoZWV0KSwg
V2ViQ29yZTo6SW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cyk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395126</attachid>
            <date>2020-03-31 21:36:29 -0700</date>
            <delta_ts>2020-03-31 21:50:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209845-20200331213628.patch</filename>
            <type>text/plain</type>
            <size>65944</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDIwLTAzLTMxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byBtYWtlIFdLVXNlclNjcmlwdHMgd2FpdCBmb3IgYSBub3RpZmljYXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTg0NQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjAzNDIyOTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlcmUncyBhbHNvIFNQSSBvbiBXS1dlYlZpZXcgdG8gcHJvdmlkZSB0
aGlzIG5vdGlmaWNhdGlvbiwgYW5kIG9uIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gdG8gc3RhcnQg
b3V0IHdpdGggdGhpcyBub3RpZmljYXRpb24uCisKKyAgICAgICAgKiBkb20vRXh0ZW5zaW9uU3R5
bGVTaGVldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uU3R5bGVTaGVldHM6OnVw
ZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0ltYWdl
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9j
dW1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIGh0bWwvTWVkaWFEb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYURvY3VtZW50UGFyc2VyOjpjcmVhdGVEb2N1bWVudFN0cnVjdHVy
ZSk6CisgICAgICAgICogaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5Eb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUpOgorICAgICAg
ICAqIGh0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpkaXNwYXRjaERvY3VtZW50RWxlbWVudEF2YWlsYWJs
ZUlmTmVlZGVkKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmZpbmlzaGVkUGFyc2luZyk6CisgICAgICAgICogcGFnZS9G
cmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5qZWN0VXNlclNjcmlwdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSk6Cisg
ICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1fZGV2aWNlT3JpZW50
YXRpb25VcGRhdGVQcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpub3RpZnlUb0lu
amVjdFVzZXJTY3JpcHRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFkZFVzZXJTY3JpcHRB
d2FpdGluZ05vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppbmplY3RVc2Vy
U3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZW1vdmVJbmplY3RlZFVzZXJT
dHlsZVNoZWV0KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6Omhhc0JlZW5Ob3RpZmllZFRvSW5qZWN0VXNlclNjcmlwdHMgY29uc3QpOgorICAgICAgICAq
IHBhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50VHlw
ZXMuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9Vc2VyU2NyaXB0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyU2NyaXB0OjpVc2VyU2NyaXB0KToKKyAgICAgICAgKFdl
YkNvcmU6OlVzZXJTY3JpcHQ6OndhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3RpbmcgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VXNlclNjcmlwdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlVzZXJTY3JpcHQ6OmRlY29kZSk6CisgICAgICAgICogcGFnZS9Vc2VyU2Ny
aXB0VHlwZXMuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9Vc2VyU3R5
bGVTaGVldC5oOgorICAgICAgICAoV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ6OlVzZXJTdHlsZVNo
ZWV0KToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6c3RhcnRFbGVtZW50TnMpOgor
CiAyMDIwLTAzLTMxICBQaW5raSBHeWFuY2hhbmRhbmkgIDxwZ3lhbmNoYW5kYW5pQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbnZhbGlkIG1lbW9yeSBhY2Nlc3MgQCBXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXh0ZW5z
aW9uU3R5bGVTaGVldHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FeHRl
bnNpb25TdHlsZVNoZWV0cy5jcHAJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw3ICsx
MzgsNyBAQCB2b2lkIEV4dGVuc2lvblN0eWxlU2hlZXRzOjp1cGRhdGVJbmplY3RlCiAgICAgICAg
IGlmICh1c2VyU3R5bGVTaGVldC5wYWdlSUQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICBpZiAodXNlclN0eWxlU2hlZXQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBJbmplY3RJblRvcEZy
YW1lT25seSAmJiBtX2RvY3VtZW50Lm93bmVyRWxlbWVudCgpKQorICAgICAgICBpZiAodXNlclN0
eWxlU2hlZXQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJ
bmplY3RJblRvcEZyYW1lT25seSAmJiBtX2RvY3VtZW50Lm93bmVyRWxlbWVudCgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRj
aGVzUGF0dGVybnMobV9kb2N1bWVudC51cmwoKSwgdXNlclN0eWxlU2hlZXQud2hpdGVsaXN0KCks
IHVzZXJTdHlsZVNoZWV0LmJsYWNrbGlzdCgpKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZURvY3VtZW50LmNwcAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZURvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDcgKzIyMSw3IEBAIHZvaWQg
SW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3QKICAgICBhcHBlbmRDaGlsZChyb290
RWxlbWVudCk7CiAgICAgcm9vdEVsZW1lbnQtPmluc2VydGVkQnlQYXJzZXIoKTsKIAotICAgIGZy
YW1lKCktPmluamVjdFVzZXJTY3JpcHRzKEluamVjdEF0RG9jdW1lbnRTdGFydCk7CisgICAgZnJh
bWUoKS0+aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50
U3RhcnQpOwogCiAgICAgLy8gV2UgbmVlZCBhIDxoZWFkPiBzbyB0aGF0IHRoZSBjYWxsIHRvIHNl
dFRpdGxlKCkgbGF0ZXIgb24gYWN0dWFsbHkgaGFzIGFuIDxoZWFkPiB0byBhcHBlbmQgdG8gPHRp
dGxlPiB0by4KICAgICBhdXRvIGhlYWQgPSBIVE1MSGVhZEVsZW1lbnQ6OmNyZWF0ZSgqdGhpcyk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAJKHJldmlzaW9uIDI1OTMw
NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBNZWRpYURvY3VtZW50UGFyc2VyOjpjcmVhdGVEb2N1
bWVudAogICAgIHJvb3RFbGVtZW50LT5pbnNlcnRlZEJ5UGFyc2VyKCk7CiAKICAgICBpZiAoZG9j
dW1lbnQuZnJhbWUoKSkKLSAgICAgICAgZG9jdW1lbnQuZnJhbWUoKS0+aW5qZWN0VXNlclNjcmlw
dHMoSW5qZWN0QXREb2N1bWVudFN0YXJ0KTsKKyAgICAgICAgZG9jdW1lbnQuZnJhbWUoKS0+aW5q
ZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50U3RhcnQpOwog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBhdXRvIGhlYWRFbGVtZW50ID0gSFRNTEhl
YWRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9Q
bHVnaW5Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9QbHVn
aW5Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
UGx1Z2luRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQg
UGx1Z2luRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3VtZW4KICAgICByb290RWxlbWVudC0+aW5z
ZXJ0ZWRCeVBhcnNlcigpOwogCiAgICAgaWYgKGRvY3VtZW50LmZyYW1lKCkpCi0gICAgICAgIGRv
Y3VtZW50LmZyYW1lKCktPmluamVjdFVzZXJTY3JpcHRzKEluamVjdEF0RG9jdW1lbnRTdGFydCk7
CisgICAgICAgIGRvY3VtZW50LmZyYW1lKCktPmluamVjdFVzZXJTY3JpcHRzKFVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lOjpEb2N1bWVudFN0YXJ0KTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgLy8gU2hvdWxkIG5vdCBiZSBhYmxlIHRvIHpvb20gaW50byBzdGFuZGFsb25lIHBsdWct
aW4gZG9jdW1lbnRzLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0
cnVjdGlvblNpdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6ZGlzcGF0Y2hE
b2N1bQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIo
bV9kb2N1bWVudC5mcmFtZSgpKSkKLSAgICAgICAgZnJhbWUtPmluamVjdFVzZXJTY3JpcHRzKElu
amVjdEF0RG9jdW1lbnRTdGFydCk7CisgICAgICAgIGZyYW1lLT5pbmplY3RVc2VyU2NyaXB0cyhV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRTdGFydCk7CiB9CiAKIHZvaWQgSFRNTENv
bnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxIdG1sU3RhcnRUYWdCZWZvcmVIVE1MKEF0b21pY0hU
TUxUb2tlbiYmIHRva2VuKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OTMsNyArNzkzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
ZmluaXNoZWRQYXJzaW5nKCkKIHsKICAgICBMT0coTG9hZGluZywgIldlYkNvcmVMb2FkaW5nICVz
OiBGaW5pc2hlZCBwYXJzaW5nIiwgbV9mcmFtZS50cmVlKCkudW5pcXVlTmFtZSgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgbV9mcmFtZS5pbmplY3RVc2VyU2NyaXB0cyhJbmplY3RB
dERvY3VtZW50RW5kKTsKKyAgICBtX2ZyYW1lLmluamVjdFVzZXJTY3JpcHRzKFVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lOjpEb2N1bWVudEVuZCk7CiAKICAgICBpZiAobV9zdGF0ZU1hY2hpbmUuY3Jl
YXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxOCw5ICs2MTgsMTQgQEAgdm9pZCBGcmFtZTo6
aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdAogICAgIGlmIChsb2FkZXIoKS5zdGF0ZU1hY2hp
bmUoKS5jcmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkgJiYgIXNldHRpbmdzKCkuc2hvdWxk
SW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3VtZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fcGFnZS0+dXNlckNvbnRlbnRQcm92aWRlcigpLmZvckVhY2hVc2VyU2NyaXB0
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluamVjdGlvblRpbWVdKERP
TVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVzZXJTY3JpcHQmIHNjcmlwdCkgewotICAgICAg
ICBpZiAoc2NyaXB0LmluamVjdGlvblRpbWUoKSA9PSBpbmplY3Rpb25UaW1lKQotICAgICAgICAg
ICAgaW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KHdvcmxkLCBzY3JpcHQpOworICAgIGJvb2wg
cGFnZVdhc05vdGlmaWVkID0gbV9wYWdlLT5oYXNCZWVuTm90aWZpZWRUb0luamVjdFVzZXJTY3Jp
cHRzKCk7CisgICAgbV9wYWdlLT51c2VyQ29udGVudFByb3ZpZGVyKCkuZm9yRWFjaFVzZXJTY3Jp
cHQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5qZWN0aW9uVGltZSwg
cGFnZVdhc05vdGlmaWVkXSAoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgVXNlclNjcmlw
dCYgc2NyaXB0KSB7CisgICAgICAgIGlmIChzY3JpcHQuaW5qZWN0aW9uVGltZSgpID09IGluamVj
dGlvblRpbWUpIHsKKyAgICAgICAgICAgIGlmIChzY3JpcHQud2FpdEZvck5vdGlmaWNhdGlvbkJl
Zm9yZUluamVjdGluZygpID09IFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Olll
cyAmJiAhcGFnZVdhc05vdGlmaWVkKQorICAgICAgICAgICAgICAgIG1fcGFnZS0+YWRkVXNlclNj
cmlwdEF3YWl0aW5nTm90aWZpY2F0aW9uKHdvcmxkLCBzY3JpcHQpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSh3b3JsZCwgc2Ny
aXB0KTsKKyAgICAgICAgfQogICAgIH0pOwogfQogCkBAIC02MzYsNyArNjQxLDcgQEAgdm9pZCBG
cmFtZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KAogICAgIGF1dG8qIGRvY3VtZW50ID0g
dGhpcy0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm47Ci0g
ICAgaWYgKHNjcmlwdC5pbmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5ICYm
ICFpc01haW5GcmFtZSgpKQorICAgIGlmIChzY3JpcHQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSAmJiAhaXNNYWluRnJh
bWUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpt
YXRjaGVzUGF0dGVybnMoZG9jdW1lbnQtPnVybCgpLCBzY3JpcHQud2hpdGVsaXN0KCksIHNjcmlw
dC5ibGFja2xpc3QoKSkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAko
cmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI0LDYgKzEyNCw3IEBACiAjaW5jbHVkZSAiVXNlckNvbnRlbnRQcm92aWRl
ci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgogI2luY2x1ZGUgIlVzZXJJ
bnB1dEJyaWRnZS5oIgorI2luY2x1ZGUgIlVzZXJTY3JpcHQuaCIKICNpbmNsdWRlICJVc2VyU3R5
bGVTaGVldC5oIgogI2luY2x1ZGUgIlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiVmlzaXRlZExpbmtTdGF0ZS5oIgpAQCAtMzM1LDYgKzMzNiw5IEBAIFBhZ2U6OlBhZ2UoUGFn
ZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICAgICAgICAgICAgIG1fY29yc0Rpc2FibGluZ1Bh
dHRlcm5zLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKHBhcnNlZFBhdHRlcm4pKTsKICAgICB9CiAg
ICAgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMuc2hyaW5rVG9GaXQoKTsKKyAgICAKKyAgICBpZiAo
IXBhZ2VDb25maWd1cmF0aW9uLnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9u
KQorICAgICAgICBtX2hhc0JlZW5Ob3RpZmllZFRvSW5qZWN0VXNlclNjcmlwdHMgPSB0cnVlOwog
fQogCiBQYWdlOjp+UGFnZSgpCkBAIC0yNDg5LDYgKzI0OTMsMjAgQEAgVXNlckNvbnRlbnRQcm92
aWRlciYgUGFnZTo6dXNlckNvbnRlbnRQcgogICAgIHJldHVybiBtX3VzZXJDb250ZW50UHJvdmlk
ZXI7CiB9CiAKK3ZvaWQgUGFnZTo6bm90aWZ5VG9JbmplY3RVc2VyU2NyaXB0cygpCit7CisgICAg
Zm9yIChhdXRvKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBt
X3VzZXJTY3JpcHRzQXdhaXRpbmdOb3RpZmljYXRpb24pCisgICAgICAgICAgICBmcmFtZS0+aW5q
ZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25kLmdldCgpKTsK
KyAgICB9CisgICAgbV91c2VyU2NyaXB0c0F3YWl0aW5nTm90aWZpY2F0aW9uLmNsZWFyKCk7Cit9
CisKK3ZvaWQgUGFnZTo6YWRkVXNlclNjcmlwdEF3YWl0aW5nTm90aWZpY2F0aW9uKERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVzZXJTY3JpcHQmIHNjcmlwdCkKK3sKKyAgICBtX3VzZXJT
Y3JpcHRzQXdhaXRpbmdOb3RpZmljYXRpb24uYXBwZW5kKHsgbWFrZVJlZih3b3JsZCksIG1ha2VV
bmlxdWVSZWY8VXNlclNjcmlwdD4oc2NyaXB0KSB9KTsKK30KKwogdm9pZCBQYWdlOjpzZXRVc2Vy
Q29udGVudFByb3ZpZGVyKFJlZjxVc2VyQ29udGVudFByb3ZpZGVyPiYmIHVzZXJDb250ZW50UHJv
dmlkZXIpCiB7CiAgICAgbV91c2VyQ29udGVudFByb3ZpZGVyLT5yZW1vdmVQYWdlKCp0aGlzKTsK
QEAgLTMwNzQsNyArMzA5Miw3IEBAIHZvaWQgUGFnZTo6aW5qZWN0VXNlclN0eWxlU2hlZXQoVXNl
clN0eWwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICh1c2VyU3R5bGVTaGVldC5p
bmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5KSB7CisgICAgaWYgKHVzZXJT
dHlsZVNoZWV0LmluamVjdGVkRnJhbWVzKCkgPT0gVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6
SW5qZWN0SW5Ub3BGcmFtZU9ubHkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9t
YWluRnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBkb2N1bWVudC0+ZXh0ZW5zaW9uU3R5
bGVTaGVldHMoKS5pbmplY3RQYWdlU3BlY2lmaWNVc2VyU3R5bGVTaGVldCh1c2VyU3R5bGVTaGVl
dCk7CiAgICAgfSBlbHNlIHsKQEAgLTMwOTMsNyArMzExMSw3IEBAIHZvaWQgUGFnZTo6cmVtb3Zl
SW5qZWN0ZWRVc2VyU3R5bGVTaGVldCgKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
ICh1c2VyU3R5bGVTaGVldC5pbmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5
KSB7CisgICAgaWYgKHVzZXJTdHlsZVNoZWV0LmluamVjdGVkRnJhbWVzKCkgPT0gVXNlckNvbnRl
bnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkpIHsKICAgICAgICAgaWYgKGF1
dG8qIGRvY3VtZW50ID0gbV9tYWluRnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBkb2N1
bWVudC0+ZXh0ZW5zaW9uU3R5bGVTaGVldHMoKS5yZW1vdmVQYWdlU3BlY2lmaWNVc2VyU3R5bGVT
aGVldCh1c2VyU3R5bGVTaGVldCk7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShy
ZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMTQwLDYgKzE0MCw3IEBAIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjsK
IGNsYXNzIFVzZXJDb250ZW50UHJvdmlkZXI7CiBjbGFzcyBVc2VyQ29udGVudFVSTFBhdHRlcm47
CiBjbGFzcyBVc2VySW5wdXRCcmlkZ2U7CitjbGFzcyBVc2VyU2NyaXB0OwogY2xhc3MgVXNlclN0
eWxlU2hlZXQ7CiBjbGFzcyBWYWxpZGF0aW9uTWVzc2FnZUNsaWVudDsKIGNsYXNzIFZpc2libGVT
ZWxlY3Rpb247CkBAIC03MjksNiArNzMwLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZEZp
cmVSZXNpemVFdmVudHMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZEZpcmVSZXNpemVFdmVudHM7
IH0KICAgICB2b2lkIHNldFNob3VsZEZpcmVSZXNpemVFdmVudHMoYm9vbCBzaG91bGRGaXJlUmVz
aXplRXZlbnRzKSB7IG1fc2hvdWxkRmlyZVJlc2l6ZUV2ZW50cyA9IHNob3VsZEZpcmVSZXNpemVF
dmVudHM7IH0KIAorICAgIGJvb2wgaGFzQmVlbk5vdGlmaWVkVG9JbmplY3RVc2VyU2NyaXB0cygp
IGNvbnN0IHsgcmV0dXJuIG1faGFzQmVlbk5vdGlmaWVkVG9JbmplY3RVc2VyU2NyaXB0czsgfQor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5VG9JbmplY3RVc2VyU2NyaXB0cygpOworICAg
IHZvaWQgYWRkVXNlclNjcmlwdEF3YWl0aW5nTm90aWZpY2F0aW9uKERPTVdyYXBwZXJXb3JsZCYs
IGNvbnN0IFVzZXJTY3JpcHQmKTsKKwogcHJpdmF0ZToKICAgICBzdHJ1Y3QgTmF2aWdhdGlvbiB7
CiAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbjsKQEAgLTEwMDgsNiArMTAxMyw5IEBA
IHByaXZhdGU6CiAgICAgVmVjdG9yPFVzZXJDb250ZW50VVJMUGF0dGVybj4gbV9jb3JzRGlzYWJs
aW5nUGF0dGVybnM7CiAgICAgVmVjdG9yPFVzZXJTdHlsZVNoZWV0PiBtX3VzZXJTdHlsZVNoZWV0
c1BlbmRpbmdJbmplY3Rpb247CiAgICAgYm9vbCBtX3Nob3VsZEZpcmVSZXNpemVFdmVudHMgeyB0
cnVlIH07CisgICAgCisgICAgYm9vbCBtX2hhc0JlZW5Ob3RpZmllZFRvSW5qZWN0VXNlclNjcmlw
dHMgeyBmYWxzZSB9OworICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmPERPTVdyYXBwZXJXb3JsZD4s
IFVuaXF1ZVJlZjxVc2VyU2NyaXB0Pj4+IG1fdXNlclNjcmlwdHNBd2FpdGluZ05vdGlmaWNhdGlv
bjsKIH07CiAKIGlubGluZSBQYWdlR3JvdXAmIFBhZ2U6Omdyb3VwKCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTI3
LDYgKzEyNyw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIFZlY3RvcjxTdHJpbmc+IGNvcnNEaXNh
YmxpbmdQYXR0ZXJuczsKICAgICBVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPiBtZWRp
YVJlY29yZGVyUHJvdmlkZXI7CisgICAgYm9vbCB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5v
dGlmaWNhdGlvbiB7IHRydWUgfTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlckNvbnRlbnRUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
ckNvbnRlbnRUeXBlcy5oCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJDb250ZW50VHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyB7IElu
amVjdEluQWxsRnJhbWVzLCBJbmplY3RJblRvcEZyYW1lT25seSB9OworZW51bSBjbGFzcyBVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzIDogYm9vbCB7IEluamVjdEluQWxsRnJhbWVzLCBJbmplY3RJ
blRvcEZyYW1lT25seSB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1VzZXJTY3JpcHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJTY3JpcHQuaAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9Vc2VyU2NyaXB0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE2ICszNSwyMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBVc2VyU2NyaXB0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBVc2VyU2NyaXB0KCkgPSBkZWZhdWx0OwogICAgIH5Vc2VyU2Ny
aXB0KCkgPSBkZWZhdWx0OworICAgIFVzZXJTY3JpcHQoY29uc3QgVXNlclNjcmlwdCYpID0gZGVm
YXVsdDsKKyAgICBVc2VyU2NyaXB0KFVzZXJTY3JpcHQmJikgPSBkZWZhdWx0OworICAgIFVzZXJT
Y3JpcHQmIG9wZXJhdG9yPShjb25zdCBVc2VyU2NyaXB0JikgPSBkZWZhdWx0OworICAgIFVzZXJT
Y3JpcHQmIG9wZXJhdG9yPShVc2VyU2NyaXB0JiYpID0gZGVmYXVsdDsKIAotICAgIFVzZXJTY3Jp
cHQoU3RyaW5nJiYgc291cmNlLCBVUkwmJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgd2hpdGVsaXN0
LCBWZWN0b3I8U3RyaW5nPiYmIGJsYWNrbGlzdCwgVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5q
ZWN0aW9uVGltZSwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcykKKyAg
ICBVc2VyU2NyaXB0KFN0cmluZyYmIHNvdXJjZSwgVVJMJiYgdXJsLCBWZWN0b3I8U3RyaW5nPiYm
IHdoaXRlbGlzdCwgVmVjdG9yPFN0cmluZz4mJiBibGFja2xpc3QsIFVzZXJTY3JpcHRJbmplY3Rp
b25UaW1lIGluamVjdGlvblRpbWUsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRG
cmFtZXMsIFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmcgd2FpdEZvck5vdGlmaWNh
dGlvbikKICAgICAgICAgOiBtX3NvdXJjZShXVEZNb3ZlKHNvdXJjZSkpCiAgICAgICAgICwgbV91
cmwoV1RGTW92ZSh1cmwpKQogICAgICAgICAsIG1fd2hpdGVsaXN0KFdURk1vdmUod2hpdGVsaXN0
KSkKICAgICAgICAgLCBtX2JsYWNrbGlzdChXVEZNb3ZlKGJsYWNrbGlzdCkpCiAgICAgICAgICwg
bV9pbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpCiAgICAgICAgICwgbV9pbmplY3RlZEZyYW1l
cyhpbmplY3RlZEZyYW1lcykKKyAgICAgICAgLCBtX3dhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJ
bmplY3Rpbmcod2FpdEZvck5vdGlmaWNhdGlvbikKICAgICB7CiAgICAgfQogCkBAIC01NCwxNyAr
NTgsMTkgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibGFja2xpc3QoKSBj
b25zdCB7IHJldHVybiBtX2JsYWNrbGlzdDsgfQogICAgIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1l
IGluamVjdGlvblRpbWUoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGlvblRpbWU7IH0KICAgICBV
c2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKCkgY29uc3QgeyByZXR1cm4g
bV9pbmplY3RlZEZyYW1lczsgfQorICAgIFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rp
bmcgd2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZygpIGNvbnN0IHsgcmV0dXJuIG1f
d2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzsgfQogCiAgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgVXNlclNjcmlwdCYpOwor
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxVc2VyU2NyaXB0PiBk
ZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3NvdXJjZTsKICAgICBV
UkwgbV91cmw7CiAgICAgVmVjdG9yPFN0cmluZz4gbV93aGl0ZWxpc3Q7CiAgICAgVmVjdG9yPFN0
cmluZz4gbV9ibGFja2xpc3Q7Ci0gICAgVXNlclNjcmlwdEluamVjdGlvblRpbWUgbV9pbmplY3Rp
b25UaW1lIHsgSW5qZWN0QXREb2N1bWVudFN0YXJ0IH07Ci0gICAgVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyBtX2luamVjdGVkRnJhbWVzIHsgSW5qZWN0SW5BbGxGcmFtZXMgfTsKKyAgICBVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZSBtX2luamVjdGlvblRpbWUgeyBVc2VyU2NyaXB0SW5qZWN0aW9u
VGltZTo6RG9jdW1lbnRTdGFydCB9OworICAgIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgbV9p
bmplY3RlZEZyYW1lcyB7IFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJh
bWVzIH07CisgICAgV2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZyBtX3dhaXRGb3JO
b3RpZmljYXRpb25CZWZvcmVJbmplY3RpbmcgeyBXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5q
ZWN0aW5nOjpObyB9OwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTc0LDM5ICs4
MCw1OCBAQCB2b2lkIFVzZXJTY3JpcHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyCiAgICAgZW5j
b2RlciA8PCBtX3VybDsKICAgICBlbmNvZGVyIDw8IG1fd2hpdGVsaXN0OwogICAgIGVuY29kZXIg
PDwgbV9ibGFja2xpc3Q7Ci0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1faW5qZWN0aW9uVGltZSk7
Ci0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1faW5qZWN0ZWRGcmFtZXMpOworICAgIGVuY29kZXIg
PDwgbV9pbmplY3Rpb25UaW1lOworICAgIGVuY29kZXIgPDwgbV9pbmplY3RlZEZyYW1lczsKKyAg
ICBlbmNvZGVyIDw8IG1fd2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzsKIH0KIAog
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLWJvb2wgVXNlclNjcmlwdDo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIFVzZXJTY3JpcHQmIHVzZXJTY3JpcHQpCitPcHRpb25hbDxVc2VyU2NyaXB0PiBV
c2VyU2NyaXB0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBTdHJpbmcgc291cmNl
OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc291cmNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIAotICAgIFVSTCB1cmw7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgVmVjdG9yPFN0cmluZz4gd2hpdGVsaXN0Owot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUod2hpdGVsaXN0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIAotICAgIFZlY3RvcjxTdHJpbmc+IGJsYWNrbGlzdDsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGJsYWNrbGlzdCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lOwotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVFbnVtKGluamVjdGlvblRpbWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAg
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lczsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlRW51bShpbmplY3RlZEZyYW1lcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAKLSAgICB1c2VyU2NyaXB0ID0geyBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUodXJsKSwgV1RG
TW92ZSh3aGl0ZWxpc3QpLCBXVEZNb3ZlKGJsYWNrbGlzdCksIGluamVjdGlvblRpbWUsIGluamVj
dGVkRnJhbWVzIH07Ci0gICAgcmV0dXJuIHRydWU7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBzb3Vy
Y2U7CisgICAgZGVjb2RlciA+PiBzb3VyY2U7CisgICAgaWYgKCFzb3VyY2UpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgCisgICAgT3B0aW9uYWw8VVJMPiB1cmw7CisgICAgZGVj
b2RlciA+PiB1cmw7CisgICAgaWYgKCF1cmwpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgCisgICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IHdoaXRlbGlzdDsKKyAgICBkZWNv
ZGVyID4+IHdoaXRlbGlzdDsKKyAgICBpZiAoIXdoaXRlbGlzdCkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAKKyAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gYmxhY2tsaXN0
OworICAgIGRlY29kZXIgPj4gYmxhY2tsaXN0OworICAgIGlmICghYmxhY2tsaXN0KQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIAorICAgIE9wdGlvbmFsPFVzZXJTY3JpcHRJbmpl
Y3Rpb25UaW1lPiBpbmplY3Rpb25UaW1lOworICAgIGRlY29kZXIgPj4gaW5qZWN0aW9uVGltZTsK
KyAgICBpZiAoIWluamVjdGlvblRpbWUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgCisgICAgT3B0aW9uYWw8VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcz4gaW5qZWN0ZWRGcmFt
ZXM7CisgICAgZGVjb2RlciA+PiBpbmplY3RlZEZyYW1lczsKKyAgICBpZiAoIWluamVjdGVkRnJh
bWVzKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIAorICAgIE9wdGlvbmFsPFdh
aXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc+IHdhaXRGb3JOb3RpZmljYXRpb247Cisg
ICAgZGVjb2RlciA+PiB3YWl0Rm9yTm90aWZpY2F0aW9uOworICAgIGlmICghd2FpdEZvck5vdGlm
aWNhdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKKyAgICByZXR1cm4g
e3sKKyAgICAgICAgV1RGTW92ZSgqc291cmNlKSwKKyAgICAgICAgV1RGTW92ZSgqdXJsKSwKKyAg
ICAgICAgV1RGTW92ZSgqd2hpdGVsaXN0KSwKKyAgICAgICAgV1RGTW92ZSgqYmxhY2tsaXN0KSwK
KyAgICAgICAgV1RGTW92ZSgqaW5qZWN0aW9uVGltZSksCisgICAgICAgIFdURk1vdmUoKmluamVj
dGVkRnJhbWVzKSwKKyAgICAgICAgV1RGTW92ZSgqd2FpdEZvck5vdGlmaWNhdGlvbikKKyAgICB9
fTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9Vc2VyU2NyaXB0VHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1Vz
ZXJTY3JpcHRUeXBlcy5oCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJTY3JpcHRUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw4IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSB7IEluamVj
dEF0RG9jdW1lbnRTdGFydCwgSW5qZWN0QXREb2N1bWVudEVuZCB9OworZW51bSBjbGFzcyBVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZSA6IGJvb2wgeyBEb2N1bWVudFN0YXJ0LCBEb2N1bWVudEVuZCB9
OworZW51bSBjbGFzcyBXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nIDogYm9vbCB7
IE5vLCBZZXMgfTsKIAogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgVXNlclNjcmlwdDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgJKHJldmlzaW9uIDI1OTMwNikK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNyArMzgsNyBAQCBjbGFzcyBVc2VyU3R5bGVTaGVldCB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVXNlclN0eWxlU2hlZXQoKQotICAgICAgICA6IG1f
aW5qZWN0ZWRGcmFtZXMoSW5qZWN0SW5BbGxGcmFtZXMpCisgICAgICAgIDogbV9pbmplY3RlZEZy
YW1lcyhVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcykKICAgICAg
ICAgLCBtX2xldmVsKFVzZXJTdHlsZVVzZXJMZXZlbCkKICAgICB7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MTMsNyArODEz
LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6c3RhcnRFbGVtZW50TnMoYwogICAgICAgICBk
b3duY2FzdDxIVE1MSHRtbEVsZW1lbnQ+KG5ld0VsZW1lbnQuZ2V0KCkpLmluc2VydGVkQnlQYXJz
ZXIoKTsKIAogICAgIGlmICghbV9wYXJzaW5nRnJhZ21lbnQgJiYgaXNGaXJzdEVsZW1lbnQgJiYg
ZG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+aW5qZWN0
VXNlclNjcmlwdHMoSW5qZWN0QXREb2N1bWVudFN0YXJ0KTsKKyAgICAgICAgZG9jdW1lbnQoKS0+
ZnJhbWUoKS0+aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3Vt
ZW50U3RhcnQpOwogfQogCiB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjplbmRFbGVtZW50TnMoKQpJ
bmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTMzNSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjYgQEAKKzIwMjAtMDMtMzEgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIHRvIG1h
a2UgV0tVc2VyU2NyaXB0cyB3YWl0IGZvciBhIG5vdGlmaWNhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5ODQ1CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82MDM0MjI5OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaDoKKyAgICAgICAgKFdl
YktpdDo6dG9Vc2VyU2NyaXB0SW5qZWN0aW9uVGltZSk6CisgICAgICAgIChXZWJLaXQ6OnRvV0tV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZSk6CisgICAgICAgIChXZWJLaXQ6OnRvVXNlckNvbnRlbnRJ
bmplY3RlZEZyYW1lcyk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6Cisg
ICAgICAgICogU2hhcmVkL1dlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVzZXJTY3JpcHREYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb246OnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uIGNvbnN0
KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldFVzZXJTY3JpcHRzU2hvdWxk
V2FpdFVudGlsTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJT
Y3JpcHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwOgorICAg
ICAgICAoV0tQYWdlR3JvdXBBZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tVc2VyU2NyaXB0UmVmLmNwcDoKKyAgICAgICAgKFdLVXNlclNjcmlwdENyZWF0ZVdpdGhT
b3VyY2UpOgorICAgICAgICAoV0tVc2VyU2NyaXB0R2V0TWFpbkZyYW1lT25seSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW06CisgICAgICAgICgtW1dLVXNl
clNjcmlwdCBpbml0V2l0aFNvdXJjZTppbmplY3Rpb25UaW1lOmZvck1haW5GcmFtZU9ubHk6XSk6
CisgICAgICAgICgtW1dLVXNlclNjcmlwdCBpc0Zvck1haW5GcmFtZU9ubHldKToKKyAgICAgICAg
KC1bV0tVc2VyU2NyaXB0IF9pbml0V2l0aFNvdXJjZTppbmplY3Rpb25UaW1lOmZvck1haW5GcmFt
ZU9ubHk6bGVnYWN5V2hpdGVsaXN0OmxlZ2FjeUJsYWNrbGlzdDp1c2VyQ29udGVudFdvcmxkOl0p
OgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX2luaXRXaXRoU291cmNlOmluamVjdGlvblRpbWU6
Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OmFzc29jaWF0
ZWRVUkw6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bV0tVc2VyU2NyaXB0IF9pbml0
V2l0aFNvdXJjZTppbmplY3Rpb25UaW1lOmZvck1haW5GcmFtZU9ubHk6bGVnYWN5V2hpdGVsaXN0
OmxlZ2FjeUJsYWNrbGlzdDpjb250ZW50V29ybGQ6XSk6CisgICAgICAgICgtW1dLVXNlclNjcmlw
dCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdo
aXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YXNzb2NpYXRlZFVSTDpjb250ZW50V29ybGQ6XSk6Cisg
ICAgICAgICgtW1dLVXNlclNjcmlwdCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpmb3JN
YWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YXNzb2NpYXRlZFVS
TDpjb250ZW50V29ybGQ6d2FpdEZvck5vdGlmaWNhdGlvbjpdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdEludGVybmFsLmg6CisgICAgICAgIChBUEk6OnRvV2Vi
Q29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKToKKyAgICAgICAgKEFQSTo6dG9XS1VzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNj
cmlwdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ub3RpZnlVc2VyU2NyaXB0c10pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3Rp
ZmljYXRpb25dKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfc2V0VXNlclNj
cmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW06CisgICAgICAgICgtW19XS1VzZXJTdHls
ZVNoZWV0IGluaXRXaXRoU291cmNlOmZvck1haW5GcmFtZU9ubHk6XSk6CisgICAgICAgICgtW19X
S1VzZXJTdHlsZVNoZWV0IGluaXRXaXRoU291cmNlOmZvcldLV2ViVmlldzpmb3JNYWluRnJhbWVP
bmx5OnVzZXJDb250ZW50V29ybGQ6XSk6CisgICAgICAgICgtW19XS1VzZXJTdHlsZVNoZWV0IGlu
aXRXaXRoU291cmNlOmZvck1haW5GcmFtZU9ubHk6bGVnYWN5V2hpdGVsaXN0OmxlZ2FjeUJsYWNr
bGlzdDp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVTaGVldCBp
bml0V2l0aFNvdXJjZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFj
a2xpc3Q6YmFzZVVSTDp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAoLVtfV0tVc2VyU3R5
bGVTaGVldCBpc0Zvck1haW5GcmFtZU9ubHldKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHRJ
bnRlcm5hbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjptX3Byb2Nlc3NEaXNwbGF5TmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6Om5vdGlmeVVzZXJTY3JpcHRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWRk
VXNlclNjcmlwdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMC0w
My0zMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgdHlwZSB0cmFpdHMgZm9yIFNjcm9sbGFibGVBcmVhLCBhbmQgb3RoZXIgY2xlYW51cApJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAJKHJldmlzaW9uIDI1OTMyNCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNiArMTMzLDcgQEAg
dm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSQogICAgIGVuY29kZXIgPDwg
b2xkUGFnZUlEOwogICAgIGVuY29kZXIgPDwgb3ZlcnJpZGRlbk1lZGlhVHlwZTsKICAgICBlbmNv
ZGVyIDw8IGNvcnNEaXNhYmxpbmdQYXR0ZXJuczsKKyAgICBlbmNvZGVyIDw8IHVzZXJTY3JpcHRz
U2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOwogICAgIGVuY29kZXIgPDwgY3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOwogICAgIGVuY29kZXIgPDwgcHJvY2Vzc0Rpc3BsYXlO
YW1lOwogCkBAIC00MTYsNiArNDE3LDEyIEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnM+IFdlYlAKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJz
LmNvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IFdURk1vdmUoKmNvcnNEaXNhYmxpbmdQYXR0ZXJucyk7
CiAKKyAgICBPcHRpb25hbDxib29sPiB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNh
dGlvbjsKKyAgICBkZWNvZGVyID4+IHVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0
aW9uOworICAgIGlmICghdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24pCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcGFyYW1ldGVycy51c2VyU2NyaXB0c1No
b3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiA9ICp1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5v
dGlmaWNhdGlvbjsKKyAgICAKICAgICBPcHRpb25hbDxib29sPiBjcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2xDaGVja0VuYWJsZWQ7CiAgICAgZGVjb2RlciA+PiBjcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2xDaGVja0VuYWJsZWQ7CiAgICAgaWYgKCFjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Vu
YWJsZWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNTkzMjQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw2ICsyMDIs
NyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAgICBTdHJpbmcgb3Zl
cnJpZGRlbk1lZGlhVHlwZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjb3JzRGlzYWJsaW5nUGF0dGVy
bnM7CisgICAgYm9vbCB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiB7IHRy
dWUgfTsKICAgICBib29sIGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCB7IHRy
dWUgfTsKICAgICBTdHJpbmcgcHJvY2Vzc0Rpc3BsYXlOYW1lOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFU
eXBlcy5jcHAJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEx
ICs0OSwxMiBAQCBPcHRpb25hbDxXZWJVc2VyU2NyaXB0RGF0YT4gV2ViVXNlclNjcmlwCiAgICAg
aWYgKCF3b3JsZElkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAg
Ci0gICAgV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0OwotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUodXNlclNjcmlwdCkpCisgICAgT3B0aW9uYWw8V2ViQ29yZTo6VXNlclNjcmlwdD4gdXNl
clNjcmlwdDsKKyAgICBkZWNvZGVyID4+IHVzZXJTY3JpcHQ7CisgICAgaWYgKCF1c2VyU2NyaXB0
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIAotICAgIHJldHVybiB7eyBXVEZN
b3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqd29ybGRJZGVudGlmaWVyKSwgV1RGTW92ZSh1c2Vy
U2NyaXB0KSB9fTsKKyAgICByZXR1cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUo
KndvcmxkSWRlbnRpZmllciksIFdURk1vdmUoKnVzZXJTY3JpcHQpIH19OwogfQogCiB2b2lkIFdl
YlVzZXJTdHlsZVNoZWV0RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCShy
ZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQ
SUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtOTkzLDIxICs5OTMsMjEgQEAgaW5saW5lIFdlYkNv
cmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIAogewogICAgIHN3aXRjaCAod2tJbmplY3RlZFRp
bWUpIHsKICAgICBjYXNlIGtXS0luamVjdEF0RG9jdW1lbnRTdGFydDoKLSAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OkluamVjdEF0RG9jdW1lbnRTdGFydDsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6
OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1bWVudFN0YXJ0OwogICAgIGNhc2Uga1dLSW5q
ZWN0QXREb2N1bWVudEVuZDoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkluamVjdEF0RG9jdW1l
bnRFbmQ7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6
RG9jdW1lbnRFbmQ7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OkluamVjdEF0RG9jdW1lbnRTdGFydDsKKyAgICByZXR1cm4gV2ViQ29yZTo6
VXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50U3RhcnQ7CiB9CiAKIGlubGluZSBfV0tV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZSB0b1dLVXNlclNjcmlwdEluamVjdGlvblRpbWUoV2ViQ29y
ZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0ZWRUaW1lKQogewogICAgIHN3aXRjaCAo
aW5qZWN0ZWRUaW1lKSB7Ci0gICAgY2FzZSBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50U3RhcnQ6
CisgICAgY2FzZSBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRTdGFy
dDoKICAgICAgICAgcmV0dXJuIGtXS0luamVjdEF0RG9jdW1lbnRTdGFydDsKLSAgICBjYXNlIFdl
YkNvcmU6OkluamVjdEF0RG9jdW1lbnRFbmQ6CisgICAgY2FzZSBXZWJDb3JlOjpVc2VyU2NyaXB0
SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQ6CiAgICAgICAgIHJldHVybiBrV0tJbmplY3RBdERv
Y3VtZW50RW5kOwogICAgIH0KIApAQCAtMTAxOSwxMyArMTAxOSwxMyBAQCBpbmxpbmUgV2ViQ29y
ZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lCiB7CiAgICAgc3dpdGNoICh3a0luamVjdGVkRnJh
bWVzKSB7CiAgICAgY2FzZSBrV0tJbmplY3RJbkFsbEZyYW1lczoKLSAgICAgICAgcmV0dXJuIFdl
YkNvcmU6OkluamVjdEluQWxsRnJhbWVzOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6VXNlckNv
bnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXM7CiAgICAgY2FzZSBrV0tJbmpl
Y3RJblRvcEZyYW1lT25seToKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkluamVjdEluVG9wRnJh
bWVPbmx5OworICAgICAgICByZXR1cm4gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1l
czo6SW5qZWN0SW5Ub3BGcmFtZU9ubHk7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzOworICAgIHJldHVybiBX
ZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lczsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI1OTMyNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3ODEsNiArNzc4MSw3IEBA
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjoKIAogICAgIHBhcmFtZXRl
cnMub3ZlcnJpZGRlbk1lZGlhVHlwZSA9IG1fb3ZlcnJpZGRlbk1lZGlhVHlwZTsKICAgICBwYXJh
bWV0ZXJzLmNvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IG1fY29uZmlndXJhdGlvbi0+Y29yc0Rpc2Fi
bGluZ1BhdHRlcm5zKCk7CisgICAgcGFyYW1ldGVycy51c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRp
bE5vdGlmaWNhdGlvbiA9IG1fY29uZmlndXJhdGlvbi0+dXNlclNjcmlwdHNTaG91bGRXYWl0VW50
aWxOb3RpZmljYXRpb24oKTsKICAgICBwYXJhbWV0ZXJzLmNyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bENoZWNrRW5hYmxlZCA9IG1fY29uZmlndXJhdGlvbi0+Y3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
Q2hlY2tFbmFibGVkKCk7CiAgICAgcGFyYW1ldGVycy5oYXNSZXNvdXJjZUxvYWRDbGllbnQgPSAh
IW1fcmVzb3VyY2VMb2FkQ2xpZW50OwogCkBAIC04MjAyLDYgKzgyMDMsMTEgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnVwZGF0ZVdlYnNpdGVQb2xpY2llcwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlVwZGF0ZVdlYnNpdGVQb2xpY2llcyh3ZWJzaXRlUG9saWNpZXMpKTsKIH0KIAordm9pZCBX
ZWJQYWdlUHJveHk6Om5vdGlmeVVzZXJTY3JpcHRzKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpOb3RpZnlVc2VyU2NyaXB0cygpKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5j
ZSkKIHsKICAgICBwYWdlQ2xpZW50KCkuZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250
ZW50UHJvdmlkZXIoUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXplU3VnZ2VzdGVkRmlsZW5h
bWUoc3VnZ2VzdGVkRmlsZW5hbWUpLCBkYXRhUmVmZXJlbmNlKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyNTkzMDcpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNjExLDYgKzYx
MSw3IEBAIHB1YmxpYzoKICAgICBib29sIHdpbGxIYW5kbGVIb3Jpem9udGFsU2Nyb2xsRXZlbnRz
KCkgY29uc3Q7CiAKICAgICB2b2lkIHVwZGF0ZVdlYnNpdGVQb2xpY2llcyhXZWJzaXRlUG9saWNp
ZXNEYXRhJiYpOworICAgIHZvaWQgbm90aWZ5VXNlclNjcmlwdHMoKTsKIAogICAgIGJvb2wgY2Fu
U2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAJKHJl
dmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29u
ZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDYgKzkxLDcgQEAgUmVmPFBhZ2VD
b25maWd1cmF0aW9uPiBQYWdlQ29uZmlndXJhdGlvbgogICAgICAgICBjb3B5LT5tX3VybFNjaGVt
ZUhhbmRsZXJzLnNldChwYWlyLmtleSwgcGFpci52YWx1ZS5jb3B5UmVmKCkpOwogICAgIGNvcHkt
Pm1fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gdGhpcy0+bV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7
CiAgICAgY29weS0+bV9jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgPSB0aGlz
LT5tX2Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKKyAgICBjb3B5LT5tX3Vz
ZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uID0gdGhpcy0+bV91c2VyU2NyaXB0
c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsKICAgICBjb3B5LT5tX3dlYlZpZXdDYXRlZ29y
eSA9IHRoaXMtPm1fd2ViVmlld0NhdGVnb3J5OwogCiAgICAgY29weS0+bV9wcm9jZXNzRGlzcGxh
eU5hbWUgPSB0aGlzLT5tX3Byb2Nlc3NEaXNwbGF5TmFtZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAy
NTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNyw5IEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGNvcnNEaXNhYmxpbmdQYXR0ZXJucygpIGNvbnN0IHsg
cmV0dXJuIG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zOyB9CiAgICAgdm9pZCBzZXRDT1JTRGlzYWJs
aW5nUGF0dGVybnMoVmVjdG9yPFdURjo6U3RyaW5nPiYmIHBhdHRlcm5zKSB7IG1fY29yc0Rpc2Fi
bGluZ1BhdHRlcm5zID0gV1RGTW92ZShwYXR0ZXJucyk7IH0KKyAgICAKKyAgICBib29sIHVzZXJT
Y3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91c2Vy
U2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsgfQorICAgIHZvaWQgc2V0VXNlclNj
cmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24oYm9vbCB2YWx1ZSkgeyBtX3VzZXJTY3Jp
cHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uID0gdmFsdWU7IH0KIAogICAgIGJvb2wgY3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9jcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7IH0KICAgICB2b2lkIHNldENyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9jcm9zc09yaWdp
bkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgPSBlbmFibGVkOyB9CkBAIC0xODcsNiArMTkwLDcg
QEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8V1RGOjpTdHJpbmcsIFJlZjxXZWJLaXQ6OldlYlVS
TFNjaGVtZUhhbmRsZXI+PiBtX3VybFNjaGVtZUhhbmRsZXJzOwogICAgIFZlY3RvcjxXVEY6OlN0
cmluZz4gbV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7CisgICAgYm9vbCBtX3VzZXJTY3JpcHRzU2hv
dWxkV2FpdFVudGlsTm90aWZpY2F0aW9uIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9jcm9zc09yaWdp
bkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgeyB0cnVlIH07CiAgICAgV1RGOjpTdHJpbmcgbV9w
cm9jZXNzRGlzcGxheU5hbWU7CiAgICAgV2ViS2l0OjpXZWJWaWV3Q2F0ZWdvcnkgbV93ZWJWaWV3
Q2F0ZWdvcnkgeyBXZWJLaXQ6OldlYlZpZXdDYXRlZ29yeTo6QXBwQm91bmREb21haW4gfTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuaAkocmV2aXNp
b24gMjU5MzA2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTUgKzM2LDE2IEBAIGNsYXNzIFVzZXJTY3JpcHQgZmlu
YWwgOiBwdWJsaWMgT2JqZWN0SW0KIHB1YmxpYzoKICAgICBzdGF0aWMgV1RGOjpVUkwgZ2VuZXJh
dGVVbmlxdWVVUkwoKTsKIAotICAgIHN0YXRpYyBSZWY8VXNlclNjcmlwdD4gY3JlYXRlKFdlYkNv
cmU6OlVzZXJTY3JpcHQgdXNlclNjcmlwdCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQorICAg
IHN0YXRpYyBSZWY8VXNlclNjcmlwdD4gY3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQmJiB1c2Vy
U2NyaXB0LCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBVc2VyU2NyaXB0KFdURk1vdmUodXNlclNjcmlwdCksIHdvcmxkKSk7CiAg
ICAgfQogCiAgICAgVXNlclNjcmlwdChXZWJDb3JlOjpVc2VyU2NyaXB0LCBBUEk6OkNvbnRlbnRX
b3JsZCYpOwogCisgICAgV2ViQ29yZTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCgpIHsgcmV0dXJu
IG1fdXNlclNjcmlwdDsgfQogICAgIGNvbnN0IFdlYkNvcmU6OlVzZXJTY3JpcHQmIHVzZXJTY3Jp
cHQoKSBjb25zdCB7IHJldHVybiBtX3VzZXJTY3JpcHQ7IH0KLSAgICAKKwogICAgIENvbnRlbnRX
b3JsZCYgY29udGVudFdvcmxkKCkgeyByZXR1cm4gbV93b3JsZDsgfQogICAgIGNvbnN0IENvbnRl
bnRXb3JsZCYgY29udGVudFdvcmxkKCkgY29uc3QgeyByZXR1cm4gbV93b3JsZDsgfQogICAgIApJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcAko
cmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
R3JvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgV0tQYWdlR3Jv
dXBBZGRVc2VyU2NyaXB0KFdLUGFnZUdyb3UKICAgICBhdXRvIGJsYWNrbGlzdCA9IHRvSW1wbChi
bGFja2xpc3RlZFVSTFBhdHRlcm5zKTsKICAgICAKICAgICBhdXRvIHVybCA9IGJhc2VVUkxTdHJp
bmcuaXNFbXB0eSgpID8gYWJvdXRCbGFua1VSTCgpIDogIFVSTChVUkwoKSwgYmFzZVVSTFN0cmlu
Zyk7Ci0gICAgUmVmPEFQSTo6VXNlclNjcmlwdD4gdXNlclNjcmlwdCA9IEFQSTo6VXNlclNjcmlw
dDo6Y3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUo
dXJsKSwgd2hpdGVsaXN0ID8gd2hpdGVsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9yPFN0
cmluZz4oKSwgYmxhY2tsaXN0ID8gYmxhY2tsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9y
PFN0cmluZz4oKSwgdG9Vc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgdG9V
c2VyQ29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKSB9LCBBUEk6OkNvbnRlbnRX
b3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKKyAgICBSZWY8QVBJOjpVc2VyU2NyaXB0PiB1c2Vy
U2NyaXB0ID0gQVBJOjpVc2VyU2NyaXB0OjpjcmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdU
Rk1vdmUoc291cmNlKSwgV1RGTW92ZSh1cmwpLCB3aGl0ZWxpc3QgPyB3aGl0ZWxpc3QtPnRvU3Ry
aW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBibGFja2xpc3QgPyBibGFja2xpc3QtPnRv
U3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCB0b1VzZXJTY3JpcHRJbmplY3Rpb25U
aW1lKGluamVjdGlvblRpbWUpLCB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRG
cmFtZXMpLCBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9
LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKICAgICB0b0ltcGwocGFn
ZUdyb3VwUmVmKS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCh1c2VyU2Ny
aXB0LmdldCgpLCBJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHk6Ok5vKTsKIH0KIApJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyU2NyaXB0UmVmLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJTY3JpcHRSZWYuY3Bw
CShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Vz
ZXJTY3JpcHRSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIFdLVHlwZUlE
IFdLVXNlclNjcmlwdEdldFR5cGVJRCgpCiAKIFdLVXNlclNjcmlwdFJlZiBXS1VzZXJTY3JpcHRD
cmVhdGVXaXRoU291cmNlKFdLU3RyaW5nUmVmIHNvdXJjZVJlZiwgX1dLVXNlclNjcmlwdEluamVj
dGlvblRpbWUgaW5qZWN0aW9uVGltZSwgYm9vbCBmb3JNYWluRnJhbWVPbmx5KQogewotICAgIHJl
dHVybiB0b0FQSSgmQVBJOjpVc2VyU2NyaXB0OjpjcmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB7
IHRvV1RGU3RyaW5nKHNvdXJjZVJlZiksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVV
UkwoKSwgeyB9LCB7IH0sIHRvVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSks
IGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNv
cmU6OkluamVjdEluQWxsRnJhbWVzIH0sIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdv
cmxkKCkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZBUEk6OlVzZXJTY3JpcHQ6OmNy
ZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHsgdG9XVEZTdHJpbmcoc291cmNlUmVmKSwgQVBJOjpV
c2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCB7IH0sIHsgfSwgdG9Vc2VyU2NyaXB0SW5q
ZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6Oldh
aXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Ok5vIH0sIEFQSTo6Q29udGVudFdvcmxk
OjpwYWdlQ29udGVudFdvcmxkKCkpLmxlYWtSZWYoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLVXNl
clNjcmlwdENvcHlTb3VyY2UoV0tVc2VyU2NyaXB0UmVmIHVzZXJTY3JpcHRSZWYpCkBAIC01Myw1
ICs1Myw1IEBAIF9XS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lIFdLVXNlclNjcmlwdEcKIAogYm9v
bCBXS1VzZXJTY3JpcHRHZXRNYWluRnJhbWVPbmx5KFdLVXNlclNjcmlwdFJlZiB1c2VyU2NyaXB0
UmVmKQogewotICAgIHJldHVybiB0b0ltcGwodXNlclNjcmlwdFJlZiktPnVzZXJTY3JpcHQoKS5p
bmplY3RlZEZyYW1lcygpID09IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5OworICAgIHJl
dHVybiB0b0ltcGwodXNlclNjcmlwdFJlZiktPnVzZXJTY3JpcHQoKS5pbmplY3RlZEZyYW1lcygp
ID09IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVP
bmx5OwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNj
cmlwdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tVc2VyU2NyaXB0Lm1tCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICsz
NSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNvdXJjZTooTlNTdHJpbmcKICAgICBpZiAo
IShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIEFQSTo6
T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3Jl
OjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgQVBJOjpVc2VyU2NyaXB0OjpnZW5l
cmF0ZVVuaXF1ZVVSTCgpLCB7IH0sIHsgfSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0
aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVj
dEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgfSwgQVBJOjpDb250
ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVj
dEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBX
VEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCks
IHsgfSwgeyB9LCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlv
blRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJl
Zm9yZUluamVjdGluZzo6Tm8gfSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQo
KSk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTU5LDcgKzU5LDcgQEAgLSAoV0tVc2VyU2Ny
aXB0SW5qZWN0aW9uVGltZSlpbmplY3Rpb25UaQogCiAtIChCT09MKWlzRm9yTWFpbkZyYW1lT25s
eQogewotICAgIHJldHVybiBfdXNlclNjcmlwdC0+dXNlclNjcmlwdCgpLmluamVjdGVkRnJhbWVz
KCkgPT0gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHk7CisgICAgcmV0dXJuIF91c2VyU2Ny
aXB0LT51c2VyU2NyaXB0KCkuaW5qZWN0ZWRGcmFtZXMoKSA9PSBXZWJDb3JlOjpVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seTsKIH0KIAogLSAoaWQpY29weVdp
dGhab25lOihOU1pvbmUgKil6b25lCkBAIC04NCw3ICs4NCw3IEBAIC0gKGluc3RhbmNldHlwZSlf
aW5pdFdpdGhTb3VyY2U6KE5TU3RyaW4KICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBw
ZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJp
bmcoc291cmNlKSwgQVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBBUEk6OnRv
U3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5
QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rp
b25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5
IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgfSwgKnVzZXJDb250ZW50V29ybGQtPl9jb250
ZW50V29ybGQtPl9jb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldy
YXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpT
dHJpbmcoc291cmNlKSwgQVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBBUEk6
OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVn
YWN5QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmpl
Y3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRp
b25CZWZvcmVJbmplY3Rpbmc6Ok5vIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVudFdvcmxk
LT5fY29udGVudFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtOTQsNyArOTQsNyBA
QCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluCiAgICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVj
dDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNl
clNjcmlwdCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIFVSTChhc3NvY2lhdGVkVVJMKSwgQVBJOjp0
b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2Fj
eUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0
aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25s
eSA6IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29u
dGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5X
cmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6
U3RyaW5nKHNvdXJjZSksIFVSTChhc3NvY2lhdGVkVVJMKSwgQVBJOjp0b1N0cmluZ1ZlY3Rvcihs
ZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIEFQ
STo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1h
aW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJ
blRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVj
dEluQWxsRnJhbWVzLCBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5n
OjpObyB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7
CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTExMCw3ICsxMTAsNyBAQCAtIChpbnN0YW5jZXR5
cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5X
cmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6
U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgQVBJ
Ojp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxl
Z2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5q
ZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1l
T25seSA6IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sICpjb250ZW50V29ybGQtPl9jb250
ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2Vy
U2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwg
QVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBBUEk6OnRvU3RyaW5nVmVjdG9y
KGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwg
QVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9y
TWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVj
dEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5q
ZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rp
bmc6Ok5vIH0sICpjb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogCiAgICAgcmV0dXJuIHNl
bGY7CiB9CkBAIC0xMjAsNyArMTIwLDE3IEBAIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhTb3Vy
Y2U6KE5TU3RyaW4KICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2Vy
U2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwg
VVJMKGFzc29jaWF0ZWRVUkwpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCks
IEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdl
YkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMg
fSwgKmNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0
cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQg
eyBXVEY6OlN0cmluZyhzb3VyY2UpLCBVUkwoYXNzb2NpYXRlZFVSTCksIEFQSTo6dG9TdHJpbmdW
ZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xp
c3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUp
LCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6
SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
OjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUlu
amVjdGluZzo6Tm8gfSwgKmNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CisKKyAgICByZXR1
cm4gc2VsZjsKK30KKworLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aFNvdXJjZTooTlNTdHJpbmcg
Kilzb3VyY2UgaW5qZWN0aW9uVGltZTooV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSlpbmplY3Rp
b25UaW1lIGZvck1haW5GcmFtZU9ubHk6KEJPT0wpZm9yTWFpbkZyYW1lT25seSBsZWdhY3lXaGl0
ZWxpc3Q6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilsZWdhY3lXaGl0ZWxpc3QgbGVnYWN5QmxhY2ts
aXN0OihOU0FycmF5PE5TU3RyaW5nICo+ICopbGVnYWN5QmxhY2tsaXN0IGFzc29jaWF0ZWRVUkw6
KE5TVVJMICopYXNzb2NpYXRlZFVSTCBjb250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29u
dGVudFdvcmxkIHdhaXRGb3JOb3RpZmljYXRpb246KEJPT0wpd2FpdEZvck5vdGlmaWNhdGlvbgor
eworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOwor
CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNl
bGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBVUkwoYXNzb2Np
YXRlZFVSTCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0
cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmpl
Y3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNl
ckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpV
c2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgd2FpdEZvck5vdGlm
aWNhdGlvbj8gV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6WWVz
IDogV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6Tm8gfSwgKmNv
bnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHRJbnRlcm5hbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJT
Y3JpcHRJbnRlcm5hbC5oCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAt
NDEsMjMgKzQxLDIxIEBAIGlubGluZSBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSAK
IHsKICAgICBzd2l0Y2ggKGluamVjdGlvblRpbWUpIHsKICAgICBjYXNlIFdLVXNlclNjcmlwdElu
amVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQ6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpJbmpl
Y3RBdERvY3VtZW50U3RhcnQ7Ci0KKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lOjpEb2N1bWVudFN0YXJ0OwogICAgIGNhc2UgV0tVc2VyU2NyaXB0SW5qZWN0
aW9uVGltZUF0RG9jdW1lbnRFbmQ6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpJbmplY3RBdERv
Y3VtZW50RW5kOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRp
bWU6OkRvY3VtZW50RW5kOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50RW5kOworICAgIHJldHVybiBXZWJDb3Jl
OjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQ7CiB9CiAKIGlubGluZSBXS1Vz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lIHRvV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShXZWJDb3Jl
OjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lKQogewogICAgIHN3aXRjaCAo
aW5qZWN0aW9uVGltZSkgewotICAgIGNhc2UgV2ViQ29yZTo6SW5qZWN0QXREb2N1bWVudFN0YXJ0
OgorICAgIGNhc2UgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50U3Rh
cnQ6CiAgICAgICAgIHJldHVybiBXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0
YXJ0OwotCi0gICAgY2FzZSBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50RW5kOgorICAgIGNhc2Ug
V2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50RW5kOgogICAgICAgICBy
ZXR1cm4gV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRFbmQ7CiAgICAgfQogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0UHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Vz
ZXJTY3JpcHRQcml2YXRlLmgJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHRQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDYgKzM4LDggQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIC0gKGluc3RhbmNldHlwZSlf
aW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGluamVjdGlvblRpbWU6KFdLVXNlclNj
cmlwdEluamVjdGlvblRpbWUpaW5qZWN0aW9uVGltZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZv
ck1haW5GcmFtZU9ubHkgbGVnYWN5V2hpdGVsaXN0OihOU0FycmF5PE5TU3RyaW5nICo+ICopbGVn
YWN5V2hpdGVsaXN0IGxlZ2FjeUJsYWNrbGlzdDooTlNBcnJheTxOU1N0cmluZyAqPiAqKWxlZ2Fj
eUJsYWNrbGlzdCBjb250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtIChp
bnN0YW5jZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25U
aW1lOihXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKWluamVjdGlvblRpbWUgZm9yTWFpbkZyYW1l
T25seTooQk9PTClmb3JNYWluRnJhbWVPbmx5IGxlZ2FjeVdoaXRlbGlzdDooTlNBcnJheTxOU1N0
cmluZyAqPiAqKWxlZ2FjeVdoaXRlbGlzdCBsZWdhY3lCbGFja2xpc3Q6KE5TQXJyYXk8TlNTdHJp
bmcgKj4gKilsZWdhY3lCbGFja2xpc3QgYXNzb2NpYXRlZFVSTDooTlNVUkwgKilhc3NvY2lhdGVk
VVJMIGNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLSAoaW5zdGFu
Y2V0eXBlKV9pbml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgaW5qZWN0aW9uVGltZToo
V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSlpbmplY3Rpb25UaW1lIGZvck1haW5GcmFtZU9ubHk6
KEJPT0wpZm9yTWFpbkZyYW1lT25seSBsZWdhY3lXaGl0ZWxpc3Q6KE5TQXJyYXk8TlNTdHJpbmcg
Kj4gKilsZWdhY3lXaGl0ZWxpc3QgbGVnYWN5QmxhY2tsaXN0OihOU0FycmF5PE5TU3RyaW5nICo+
ICopbGVnYWN5QmxhY2tsaXN0IGFzc29jaWF0ZWRVUkw6KE5TVVJMICopYXNzb2NpYXRlZFVSTCBj
b250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIHdhaXRGb3JOb3RpZmlj
YXRpb246KEJPT0wpd2FpdEZvck5vdGlmaWNhdGlvbiBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIF9XS1VzZXJDb250ZW50V29ybGQgKl91c2VyQ29udGVudFdvcmxkIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTIpLCBpb3MoMTAuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBXS0NvbnRlbnRXb3JsZCAqX2NvbnRlbnRXb3JsZCBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDI1OTMwNykK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtp
bmcgY29weSkKQEAgLTIzMjMsNiArMjMyMywxMSBAQCAtICh2b2lkKV91cGRhdGVXZWJwYWdlUHJl
ZmVyZW5jZXM6KFdLV2ViCiAgICAgX3BhZ2UtPnVwZGF0ZVdlYnNpdGVQb2xpY2llcyhXVEZNb3Zl
KGRhdGEpKTsKIH0KIAorLSAodm9pZClfbm90aWZ5VXNlclNjcmlwdHMKK3sKKyAgICBfcGFnZS0+
bm90aWZ5VXNlclNjcmlwdHMoKTsKK30KKwogLSAoQk9PTClfYWxsb3dzUmVtb3RlSW5zcGVjdGlv
bgogewogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24ubW0JKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MTMsNiAr
OTEzLDE2IEBAIC0gKHZvaWQpX3NldENPUlNEaXNhYmxpbmdQYXR0ZXJuczooTlNBcnIKICAgICBf
cGFnZUNvbmZpZ3VyYXRpb24tPnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhXVEZNb3ZlKHZlY3Rv
cikpOwogfQogCistIChCT09MKV91c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlv
bgoreworICAgIHJldHVybiBfcGFnZUNvbmZpZ3VyYXRpb24tPnVzZXJTY3JpcHRzU2hvdWxkV2Fp
dFVudGlsTm90aWZpY2F0aW9uKCk7Cit9CisKKy0gKHZvaWQpX3NldFVzZXJTY3JpcHRzU2hvdWxk
V2FpdFVudGlsTm90aWZpY2F0aW9uOihCT09MKXZhbHVlCit7CisgICAgX3BhZ2VDb25maWd1cmF0
aW9uLT5zZXRVc2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbih2YWx1ZSk7Cit9
CisKIC0gKHZvaWQpX3NldENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDooQk9P
TCllbmFibGVkCiB7CiAgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRDcm9zc09yaWdpbkFjY2Vz
c0NvbnRyb2xDaGVja0VuYWJsZWQoZW5hYmxlZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJh
dGlvblByaXZhdGUuaAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg0LDYgKzg0LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIF9XS1dlYlZp
ZXdDYQogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLV2Vic2l0ZURhdGFTdG9y
ZSAqX3dlYnNpdGVEYXRhU3RvcmVJZkV4aXN0cyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNl
dHRlcj1fc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zOikgTlNBcnJheTxOU1N0cmluZyAqPiAqX2Nv
cnNEaXNhYmxpbmdQYXR0ZXJucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0VXNlclNj
cmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb246KSBCT09MIF91c2VyU2NyaXB0c1Nob3Vs
ZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0Q3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOikgQk9PTCBfY3Jvc3NPcmlnaW5BY2Nl
c3NDb250cm9sQ2hlY2tFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgJ
KHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBAQCBmb3Ig
dGhpcyBwcm9wZXJ0eS4KIAogLSAodm9pZClfdXBkYXRlV2Vic2l0ZVBvbGljaWVzOihfV0tXZWJz
aXRlUG9saWNpZXMgKil3ZWJzaXRlUG9saWNpZXMgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBM
QUNFTUVOVCgiLV91cGRhdGVXZWJwYWdlUHJlZmVyZW5jZXM6IiwgbWFjb3MoMTAuMTMsIFdLX01B
Q19UQkEpLCBpb3MoMTEuMywgV0tfSU9TX1RCQSkpOwogLSAodm9pZClfdXBkYXRlV2VicGFnZVBy
ZWZlcmVuY2VzOihXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKXdlYnBhZ2VQcmVmZXJlbmNlcyBXS19B
UElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9p
ZClfbm90aWZ5VXNlclNjcmlwdHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIAogLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVz
ZXJHZXN0dXJlOihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOwogLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0
OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgaW5GcmFtZTooV0tGcmFtZUluZm8gKilmcmFt
ZSBpbkNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICogZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVy
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Vz
ZXJTdHlsZVNoZWV0Lm1tCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDcgKzQ0LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZwogICAg
IC8vIEZJWE1FOiBJbiB0aGUgQVBJIHRlc3QsIHdlIGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwg
YmVsb3cgYmVmb3JlIHRoZSBBUEk6Ok9iamVjdCBjb25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4u
IHdoZXJlIHNob3VsZCB0aGlzIHJlYWxseSBiZT8KICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJL
aXQyKCk7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0
eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291
cmNlKSwgQVBJOjpVc2VyU3R5bGVTaGVldDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgeyB9LCB7IH0s
IGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNv
cmU6OkluamVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgQVBJ
OjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgQVBJOjpPYmplY3Q6OmNv
bnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2Vy
U3R5bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclN0eWxlU2hlZXQ6Omdl
bmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgeyB9LCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3Jl
OjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6
VXNlclN0eWxlVXNlckxldmVsIH0sIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxk
KCkpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC01OCw3ICs1OCw3IEBAIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aFNvdXJjZTooTlNTdHJpbmcKICAgICAvLyBGSVhNRTogSW4gdGhlIEFQSSB0
ZXN0LCB3ZSBjYW4gdXNlIGdlbmVyYXRlVW5pcXVlVVJMIGJlbG93IGJlZm9yZSB0aGUgQVBJOjpP
YmplY3QgY29uc3RydWN0b3IgaGFzIGRvbmUgdGhpcy4uLiB3aGVyZSBzaG91bGQgdGhpcyByZWFs
bHkgYmU/CiAgICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0MigpOwogCi0gICAgQVBJOjpPYmpl
Y3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3Jl
OjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclN0eWxlU2hl
ZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgIHsgfSwgZm9yTWFpbkZyYW1lT25seSA/IFdl
YkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMs
IFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCwgW3dlYlZpZXcgX3BhZ2VdLT53ZWJQYWdlSUQo
KSB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7Cisg
ICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0Pihz
ZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6
VXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgIHsgfSwgZm9yTWFpbkZy
YW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9w
RnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5B
bGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCwgW3dlYlZpZXcgX3BhZ2VdLT53
ZWJQYWdlSUQoKSB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRX
b3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTcxLDcgKzcxLDcgQEAgLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZwogICAgIC8vIEZJWE1FOiBJbiB0aGUgQVBJ
IHRlc3QsIHdlIGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwgYmVsb3cgYmVmb3JlIHRoZSBBUEk6
Ok9iamVjdCBjb25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4uIHdoZXJlIHNob3VsZCB0aGlzIHJl
YWxseSBiZT8KICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBBUEk6Ok9i
amVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdlYkNv
cmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgQVBJOjpVc2VyU3R5bGVT
aGVldDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0
ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIGZvck1haW5GcmFt
ZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OkluamVjdElu
QWxsRnJhbWVzLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgKnVzZXJDb250ZW50V29y
bGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25z
dHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0
eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5l
cmF0ZVVuaXF1ZVVSTCgpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQ
STo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdl
YkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDog
V2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdl
YkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRX
b3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTg0LDcgKzg0
LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZwogICAgIC8vIEZJ
WE1FOiBJbiB0aGUgQVBJIHRlc3QsIHdlIGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwgYmVsb3cg
YmVmb3JlIHRoZSBBUEk6Ok9iamVjdCBjb25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4uIHdoZXJl
IHNob3VsZCB0aGlzIHJlYWxseSBiZT8KICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7
CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hl
ZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwg
eyAgVVJMKCksIFdURjo6U3RyaW5nKFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJp
bmddKSB9LCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJp
bmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6Oklu
amVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6
OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+
X2NvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6
OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3Ry
aW5nKHNvdXJjZSksIHsgIFVSTCgpLCBXVEY6OlN0cmluZyhbYmFzZVVSTCBfd2ViX29yaWdpbmFs
RGF0YUFzV1RGU3RyaW5nXSkgfSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3Qp
LCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIGZvck1haW5GcmFtZU9ubHkg
PyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25s
eSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVz
LCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgKnVzZXJDb250ZW50V29ybGQtPl9jb250
ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0xMDks
NyArMTA5LDcgQEAgLSAoTlNVUkwgKiliYXNlVVJMCiAKIC0gKEJPT0wpaXNGb3JNYWluRnJhbWVP
bmx5CiB7Ci0gICAgcmV0dXJuIF91c2VyU3R5bGVTaGVldC0+dXNlclN0eWxlU2hlZXQoKS5pbmpl
Y3RlZEZyYW1lcygpID09IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5OworICAgIHJldHVy
biBfdXNlclN0eWxlU2hlZXQtPnVzZXJTdHlsZVNoZWV0KCkuaW5qZWN0ZWRGcmFtZXMoKSA9PSBX
ZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seTsK
IH0KIAogLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnQuY3Bw
CShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRVc2VyQ29udGVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEyICs1MCwxMiBAQCBz
dGF0aWMgaW5saW5lIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgCiB7CiAgICAgc3dpdGNoIChp
bmplY3RlZEZyYW1lcykgewogICAgIGNhc2UgV0VCS0lUX1VTRVJfQ09OVEVOVF9JTkpFQ1RfVE9Q
X0ZSQU1FOgotICAgICAgICByZXR1cm4gSW5qZWN0SW5Ub3BGcmFtZU9ubHk7CisgICAgICAgIHJl
dHVybiBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seTsKICAg
ICBjYXNlIFdFQktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX0FMTF9GUkFNRVM6Ci0gICAgICAgIHJl
dHVybiBJbmplY3RJbkFsbEZyYW1lczsKKyAgICAgICAgcmV0dXJuIFVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gSW5qZWN0SW5BbGxGcmFtZXM7CisgICAg
ICAgIHJldHVybiBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lczsK
ICAgICB9CiB9CiAKQEAgLTc2LDEyICs3NiwxMiBAQCBzdGF0aWMgaW5saW5lIFVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lIHRvCiB7CiAgICAgc3dpdGNoIChpbmplY3Rpb25UaW1lKSB7CiAgICAgY2Fz
ZSBXRUJLSVRfVVNFUl9TQ1JJUFRfSU5KRUNUX0FUX0RPQ1VNRU5UX1NUQVJUOgotICAgICAgICBy
ZXR1cm4gSW5qZWN0QXREb2N1bWVudFN0YXJ0OworICAgICAgICByZXR1cm4gVXNlclNjcmlwdElu
amVjdGlvblRpbWU6OkRvY3VtZW50U3RhcnQ7CiAgICAgY2FzZSBXRUJLSVRfVVNFUl9TQ1JJUFRf
SU5KRUNUX0FUX0RPQ1VNRU5UX0VORDoKLSAgICAgICAgcmV0dXJuIEluamVjdEF0RG9jdW1lbnRF
bmQ7CisgICAgICAgIHJldHVybiBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQ7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJl
dHVybiBJbmplY3RBdERvY3VtZW50U3RhcnQ7CisgICAgICAgIHJldHVybiBVc2VyU2NyaXB0SW5q
ZWN0aW9uVGltZTo6RG9jdW1lbnRTdGFydDsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzkyLDcgKzM5Miw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjphZGRVc2VyU2MKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGF1
dG8mIG1haW5GcmFtZSA9IHBhZ2UubWFpbkZyYW1lKCk7Ci0gICAgICAgICAgICBpZiAodXNlclNj
cmlwdC5pbmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5KSB7CisgICAgICAg
ICAgICBpZiAodXNlclNjcmlwdC5pbmplY3RlZEZyYW1lcygpID09IFVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5KSB7CiAgICAgICAgICAgICAgICAgbWFpbkZy
YW1lLmluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSh3b3JsZC5jb3JlV29ybGQoKSwgdXNlclNj
cmlwdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI1
OTMyNCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MjksNiArNTI5LDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRl
bnRpZmllciBwYWdlSUQsIAogI2VuZGlmCiAKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jb3JzRGlz
YWJsaW5nUGF0dGVybnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMuY29yc0Rpc2FibGluZ1BhdHRlcm5z
KTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi51c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlm
aWNhdGlvbiA9IHBhcmFtZXRlcnMudXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRp
b247CiAgICAgaWYgKCFwYXJhbWV0ZXJzLmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5h
YmxlZCkKICAgICAgICAgQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlcjo6c2lu
Z2xldG9uKCkuc2V0Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKGZhbHNlKTsK
IApAQCAtNjI3Nyw2ICs2Mjc4LDE0IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlV2Vic2l0ZVBvbGlj
aWVzKFdlYnMKICNlbmRpZgogfQogCit2b2lkIFdlYlBhZ2U6Om5vdGlmeVVzZXJTY3JpcHRzKCkK
K3sKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYWdlLT5ub3Rp
ZnlUb0luamVjdFVzZXJTY3JpcHRzKCk7Cit9CisKIHVuc2lnbmVkIFdlYlBhZ2U6OmV4dGVuZElu
Y3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb24oKQogewogICAgIHVuc2lnbmVkIHRva2VuID0g
bV9tYXhpbXVtUmVuZGVyaW5nU3VwcHJlc3Npb25Ub2tlbiArIDE7CkBAIC02NDI5LDcgKzY0Mzgs
NyBAQCB2b2lkIFdlYlBhZ2U6OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoCiAKIHZvaWQgV2Vi
UGFnZTo6YWRkVXNlclNjcmlwdChTdHJpbmcmJiBzb3VyY2UsIEluamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQmIHdvcmxkLCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVk
RnJhbWVzLCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lKQog
ewotICAgIFdlYkNvcmU6OlVzZXJTY3JpcHQgdXNlclNjcmlwdCB7IFdURk1vdmUoc291cmNlKSwg
VVJMKGFib3V0QmxhbmtVUkwoKSksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCks
IGluamVjdGlvblRpbWUsIGluamVjdGVkRnJhbWVzIH07CisgICAgV2ViQ29yZTo6VXNlclNjcmlw
dCB1c2VyU2NyaXB0IHsgV1RGTW92ZShzb3VyY2UpLCBVUkwoYWJvdXRCbGFua1VSTCgpKSwgVmVj
dG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRG
cmFtZXMsIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Ok5vIH07
CiAKICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclNjcmlwdCh3b3JsZCwgV1RG
TW92ZSh1c2VyU2NyaXB0KSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2MTYsNiArMTYxNiw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXBvcnRVc2VkRmVhdHVyZXMoKTsKIAogICAgIHZvaWQg
dXBkYXRlV2Vic2l0ZVBvbGljaWVzKFdlYnNpdGVQb2xpY2llc0RhdGEmJik7CisgICAgdm9pZCBu
b3RpZnlVc2VyU2NyaXB0cygpOwogCiAgICAgdm9pZCBjaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRD
aGFuZ2VzJiYpOwogICAgIHZvaWQgY2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9udEF0
dHJpYnV0ZUNoYW5nZXMmJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI1OTMwNikKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTE4Niw2ICsxODYsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kKGVudW06dWluCiAgICAgRGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKHN0cnVjdCBXZWJDb3Jl
OjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyIGJhY2tGb3J3YXJkSXRlbUlEKQogCiAgICAgVXBk
YXRlV2Vic2l0ZVBvbGljaWVzKHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGEgd2Vi
c2l0ZVBvbGljaWVzKQorICAgIE5vdGlmeVVzZXJTY3JpcHRzKCkKICAgICBEaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IGxp
c3RlbmVySUQsIHN0cnVjdCBXZWJLaXQ6OlBvbGljeURlY2lzaW9uIHBvbGljeURlY2lzaW9uKQog
CiAgICAgQ29udGludWVXaWxsU3VibWl0Rm9ybShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAzLTMxICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0byBt
YWtlIFdLVXNlclNjcmlwdHMgd2FpdCBmb3IgYSBub3RpZmljYXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTg0NQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNjAzNDIyOTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2lu
amVjdE91dGxvb2tRdWlya3NTY3JpcHRdKToKKwogMjAyMC0wMy0zMCAgRGV2aW4gUm91c3NvICA8
ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcHJvdmlkZSBhIHdh
eSB0byBsb2cgbWVzc2FnZXMgZnJvbSB0aGUgbmV0d29yayBwcm9jZXNzCkluZGV4OiBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyNTkzMDYpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTEyMjcsNyArMTIyNyw3IEBAIHN0YXRpYyBOU1N0cmluZyAqbGVha091dGxvb2tRdWly
a3NVc2VyU2MKIC0odm9pZClfaW5qZWN0T3V0bG9va1F1aXJrc1NjcmlwdAogewogICAgIHN0YXRp
YyBOU1N0cmluZyAqb3V0bG9va1F1aXJrc1NjcmlwdENvbnRlbnRzID0gbGVha091dGxvb2tRdWly
a3NVc2VyU2NyaXB0Q29udGVudHMoKTsKLSAgICBfcHJpdmF0ZS0+Z3JvdXAtPnVzZXJDb250ZW50
Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQoKmNvcmUoW1dlYlNjcmlwdFdvcmxkIHdvcmxkXSks
IG1ha2VVbmlxdWU8V2ViQ29yZTo6VXNlclNjcmlwdD4ob3V0bG9va1F1aXJrc1NjcmlwdENvbnRl
bnRzLCBVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgV2ViQ29yZTo6
SW5qZWN0QXREb2N1bWVudEVuZCwgV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMpKTsKKyAgICBf
cHJpdmF0ZS0+Z3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQoKmNv
cmUoW1dlYlNjcmlwdFdvcmxkIHdvcmxkXSksIG1ha2VVbmlxdWU8V2ViQ29yZTo6VXNlclNjcmlw
dD4ob3V0bG9va1F1aXJrc1NjcmlwdENvbnRlbnRzLCBVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwg
VmVjdG9yPFN0cmluZz4oKSwgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3Vt
ZW50RW5kLCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZy
YW1lcywgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6Tm8pKTsK
IAogfQogI2VuZGlmCkBAIC00Njc2LDcgKzQ2NzYsNyBAQCArICh2b2lkKV9hZGRVc2VyU2NyaXB0
VG9Hcm91cDooTlNTdHJpbmcgCiAgICAgaWYgKCF3b3JsZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byB1c2VyU2NyaXB0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpVc2VyU2NyaXB0Pihzb3Vy
Y2UsIHVybCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2ts
aXN0KSwgaW5qZWN0aW9uVGltZSA9PSBXZWJJbmplY3RBdERvY3VtZW50U3RhcnQgPyBXZWJDb3Jl
OjpJbmplY3RBdERvY3VtZW50U3RhcnQgOiBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50RW5kLCBp
bmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IFdlYkNvcmU6OkluamVjdElu
QWxsRnJhbWVzIDogV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkpOworICAgIGF1dG8gdXNl
clNjcmlwdCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VXNlclNjcmlwdD4oc291cmNlLCB1cmwsIHRv
U3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVj
dGlvblRpbWUgPT0gV2ViSW5qZWN0QXREb2N1bWVudFN0YXJ0ID8gV2ViQ29yZTo6VXNlclNjcmlw
dEluamVjdGlvblRpbWU6OkRvY3VtZW50U3RhcnQgOiBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0
aW9uVGltZTo6RG9jdW1lbnRFbmQsIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJh
bWVzID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFt
ZXMgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1l
T25seSwgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6Tm8pOwog
ICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCgqY29y
ZSh3b3JsZCksIFdURk1vdmUodXNlclNjcmlwdCkpOwogfQogCkBAIC00Njk5LDcgKzQ2OTksNyBA
QCArICh2b2lkKV9hZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6KE5TU3RyCiAgICAgaWYgKCF3b3Js
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBzdHlsZVNoZWV0ID0gbWFrZVVuaXF1ZTxX
ZWJDb3JlOjpVc2VyU3R5bGVTaGVldD4oc291cmNlLCB1cmwsIHRvU3RyaW5nVmVjdG9yKHdoaXRl
bGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGVkRnJhbWVzID09IFdlYklu
amVjdEluQWxsRnJhbWVzID8gV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgOiBXZWJDb3JlOjpJ
bmplY3RJblRvcEZyYW1lT25seSwgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsKTsKKyAgICBh
dXRvIHN0eWxlU2hlZXQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0Pihzb3Vy
Y2UsIHVybCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2ts
aXN0KSwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBXZWJDb3JlOjpV
c2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcyA6IFdlYkNvcmU6OlVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5LCBXZWJDb3JlOjpV
c2VyU3R5bGVVc2VyTGV2ZWwpOwogICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVy
KCkuYWRkVXNlclN0eWxlU2hlZXQoKmNvcmUod29ybGQpLCBXVEZNb3ZlKHN0eWxlU2hlZXQpLCBX
ZWJDb3JlOjpJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKIH0KIApJbmRleDogVG9vbHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjU5MzM2KQor
KysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAt
MDMtMzEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBBZGQgU1BJIHRvIG1ha2UgV0tVc2VyU2NyaXB0cyB3YWl0IGZvciBhIG5vdGlmaWNhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5ODQ1
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDM0MjI5OT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tOgorICAgICAgICAoVEVTVCk6CisKIDIwMjAt
MDMtMzEgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVxdWVzdHMgZm9yIG1lc3NhZ2VIYW5kbGVycygpIGluIHRoZSBET01XaW5kb3cgc2hvdWxk
IGJlIGlnbm9yZWQgZm9yIG5vbi1hcHAtYm91bmQgbmF2aWdhdGlvbnMKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNv
bnRlbnRDb250cm9sbGVyLm1tCShyZXZpc2lvbiAyNTkzMDYpCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjgsMTAgKzI4LDEzIEBACiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgog
I2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2lt
cG9ydCAiVGVzdFVJRGVsZWdhdGUuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBv
cnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVXNlclNjcmlw
dC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVXNlclNjcmlwdFByaXZhdGUuaD4KKyNpbXBvcnQgPFdl
YktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dl
YktpdC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgog
I2ltcG9ydCA8V2ViS2l0L19XS1VzZXJDb250ZW50V29ybGQuaD4KQEAgLTgxMSwzICs4MTQsMzAg
QEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgSW5qZWN0VXNlcgogICAgIHdhaXRGb3JN
ZXNzYWdlcyg2KTsKICAgICBjb21wYXJlTWVzc2FnZXMoeyJzdGFydCBhbGwiLCAic3RhcnQgYWxs
IiwgImVuZCBtYWluIiwgInN0YXJ0IGFsbCIsICJlbmQgbWFpbiIsICJzdGFydCBhbGwifSk7CiB9
CisKK1RFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFVzZXJTY3JpcHROb3RpZmljYXRpb24p
Cit7CisgICAgV0tVc2VyU2NyaXB0ICp3YWl0c0Zvck5vdGlmaWNhdGlvbiA9IFtbW1dLVXNlclNj
cmlwdCBhbGxvY10gX2luaXRXaXRoU291cmNlOkAiYWxlcnQoJ3dhaXRlZCBmb3Igbm90aWZpY2F0
aW9uJykiIGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRT
dGFydCBmb3JNYWluRnJhbWVPbmx5OllFUyBsZWdhY3lXaGl0ZWxpc3Q6W05TQXJyYXkgYXJyYXld
IGxlZ2FjeUJsYWNrbGlzdDpbTlNBcnJheSBhcnJheV0gYXNzb2NpYXRlZFVSTDpbTlNVUkwgVVJM
V2l0aFN0cmluZzpAInRlc3Q6Ly8vc2NyaXB0Il0gY29udGVudFdvcmxkOltXS0NvbnRlbnRXb3Js
ZCBkZWZhdWx0Q2xpZW50V29ybGRdIHdhaXRGb3JOb3RpZmljYXRpb246WUVTXSBhdXRvcmVsZWFz
ZV07CisgICAgV0tVc2VyU2NyaXB0ICpkb2N1bWVudEVuZCA9IFtbW1dLVXNlclNjcmlwdCBhbGxv
Y10gaW5pdFdpdGhTb3VyY2U6QCJhbGVydCgnZG9jdW1lbnQgcGFyc2luZyBlbmRlZCcpIiBpbmpl
Y3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50RW5kIGZvck1haW5G
cmFtZU9ubHk6WUVTXSBhdXRvcmVsZWFzZV07CisKKyAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3
MSA9IFtbVGVzdFdLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBbd2ViVmlldzEuY29u
ZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgYWRkVXNlclNjcmlwdDp3YWl0c0Zvck5v
dGlmaWNhdGlvbl07CisgICAgW3dlYlZpZXcxLmNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250
cm9sbGVyIGFkZFVzZXJTY3JpcHQ6ZG9jdW1lbnRFbmRdOworICAgIFRlc3RVSURlbGVnYXRlICpk
ZWxlZ2F0ZSA9IFtbVGVzdFVJRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmll
dzEuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIFt3ZWJWaWV3MSBsb2FkVGVzdFBhZ2VOYW1l
ZDpAInNpbXBsZSJdOworICAgIEVYUEVDVF9XS19TVFJFUShbZGVsZWdhdGUgd2FpdEZvckFsZXJ0
XSwgImRvY3VtZW50IHBhcnNpbmcgZW5kZWQiKTsKKyAgICBbd2ViVmlldzEgX25vdGlmeVVzZXJT
Y3JpcHRzXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW2RlbGVnYXRlIHdhaXRGb3JBbGVydF0sICJ3
YWl0ZWQgZm9yIG5vdGlmaWNhdGlvbiIpOworCisgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAq
Y29uZmlndXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddIGF1dG9yZWxlYXNl
XTsKKyAgICBFWFBFQ1RfVFJVRShjb25maWd1cmF0aW9uLl91c2VyU2NyaXB0c1Nob3VsZFdhaXRV
bnRpbE5vdGlmaWNhdGlvbik7CisgICAgY29uZmlndXJhdGlvbi5fdXNlclNjcmlwdHNTaG91bGRX
YWl0VW50aWxOb3RpZmljYXRpb24gPSBOTzsKKyAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3MiA9
IFtbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07CisgICAg
W3dlYlZpZXcyLmNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3Jp
cHQ6d2FpdHNGb3JOb3RpZmljYXRpb25dOworICAgIFt3ZWJWaWV3Mi5jb25maWd1cmF0aW9uLnVz
ZXJDb250ZW50Q29udHJvbGxlciBhZGRVc2VyU2NyaXB0OmRvY3VtZW50RW5kXTsKKyAgICB3ZWJW
aWV3Mi5VSURlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgW3dlYlZpZXcyIGxvYWRUZXN0UGFnZU5h
bWVkOkAic2ltcGxlIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKFtkZWxlZ2F0ZSB3YWl0Rm9yQWxl
cnRdLCAid2FpdGVkIGZvciBub3RpZmljYXRpb24iKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW2Rl
bGVnYXRlIHdhaXRGb3JBbGVydF0sICJkb2N1bWVudCBwYXJzaW5nIGVuZGVkIik7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395127</attachid>
            <date>2020-03-31 21:50:23 -0700</date>
            <delta_ts>2020-04-01 09:11:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209845-20200331215022.patch</filename>
            <type>text/plain</type>
            <size>66391</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDIwLTAzLTMxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byBtYWtlIFdLVXNlclNjcmlwdHMgd2FpdCBmb3IgYSBub3RpZmljYXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTg0NQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjAzNDIyOTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlcmUncyBhbHNvIFNQSSBvbiBXS1dlYlZpZXcgdG8gcHJvdmlkZSB0
aGlzIG5vdGlmaWNhdGlvbiwgYW5kIG9uIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gdG8gc3RhcnQg
b3V0IHdpdGggdGhpcyBub3RpZmljYXRpb24uCisKKyAgICAgICAgKiBkb20vRXh0ZW5zaW9uU3R5
bGVTaGVldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uU3R5bGVTaGVldHM6OnVw
ZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0ltYWdl
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9j
dW1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIGh0bWwvTWVkaWFEb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYURvY3VtZW50UGFyc2VyOjpjcmVhdGVEb2N1bWVudFN0cnVjdHVy
ZSk6CisgICAgICAgICogaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5Eb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUpOgorICAgICAg
ICAqIGh0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpkaXNwYXRjaERvY3VtZW50RWxlbWVudEF2YWlsYWJs
ZUlmTmVlZGVkKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmZpbmlzaGVkUGFyc2luZyk6CisgICAgICAgICogcGFnZS9G
cmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5qZWN0VXNlclNjcmlwdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSk6Cisg
ICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1fZGV2aWNlT3JpZW50
YXRpb25VcGRhdGVQcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpub3RpZnlUb0lu
amVjdFVzZXJTY3JpcHRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFkZFVzZXJTY3JpcHRB
d2FpdGluZ05vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppbmplY3RVc2Vy
U3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZW1vdmVJbmplY3RlZFVzZXJT
dHlsZVNoZWV0KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6Omhhc0JlZW5Ob3RpZmllZFRvSW5qZWN0VXNlclNjcmlwdHMgY29uc3QpOgorICAgICAgICAq
IHBhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50VHlw
ZXMuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9Vc2VyU2NyaXB0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyU2NyaXB0OjpVc2VyU2NyaXB0KToKKyAgICAgICAgKFdl
YkNvcmU6OlVzZXJTY3JpcHQ6OndhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3RpbmcgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VXNlclNjcmlwdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlVzZXJTY3JpcHQ6OmRlY29kZSk6CisgICAgICAgICogcGFnZS9Vc2VyU2Ny
aXB0VHlwZXMuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9Vc2VyU3R5
bGVTaGVldC5oOgorICAgICAgICAoV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ6OlVzZXJTdHlsZVNo
ZWV0KToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6c3RhcnRFbGVtZW50TnMpOgor
CiAyMDIwLTAzLTMxICBQaW5raSBHeWFuY2hhbmRhbmkgIDxwZ3lhbmNoYW5kYW5pQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbnZhbGlkIG1lbW9yeSBhY2Nlc3MgQCBXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXh0ZW5z
aW9uU3R5bGVTaGVldHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FeHRl
bnNpb25TdHlsZVNoZWV0cy5jcHAJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw3ICsx
MzgsNyBAQCB2b2lkIEV4dGVuc2lvblN0eWxlU2hlZXRzOjp1cGRhdGVJbmplY3RlCiAgICAgICAg
IGlmICh1c2VyU3R5bGVTaGVldC5wYWdlSUQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICBpZiAodXNlclN0eWxlU2hlZXQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBJbmplY3RJblRvcEZy
YW1lT25seSAmJiBtX2RvY3VtZW50Lm93bmVyRWxlbWVudCgpKQorICAgICAgICBpZiAodXNlclN0
eWxlU2hlZXQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJ
bmplY3RJblRvcEZyYW1lT25seSAmJiBtX2RvY3VtZW50Lm93bmVyRWxlbWVudCgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRj
aGVzUGF0dGVybnMobV9kb2N1bWVudC51cmwoKSwgdXNlclN0eWxlU2hlZXQud2hpdGVsaXN0KCks
IHVzZXJTdHlsZVNoZWV0LmJsYWNrbGlzdCgpKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZURvY3VtZW50LmNwcAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZURvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDcgKzIyMSw3IEBAIHZvaWQg
SW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3QKICAgICBhcHBlbmRDaGlsZChyb290
RWxlbWVudCk7CiAgICAgcm9vdEVsZW1lbnQtPmluc2VydGVkQnlQYXJzZXIoKTsKIAotICAgIGZy
YW1lKCktPmluamVjdFVzZXJTY3JpcHRzKEluamVjdEF0RG9jdW1lbnRTdGFydCk7CisgICAgZnJh
bWUoKS0+aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50
U3RhcnQpOwogCiAgICAgLy8gV2UgbmVlZCBhIDxoZWFkPiBzbyB0aGF0IHRoZSBjYWxsIHRvIHNl
dFRpdGxlKCkgbGF0ZXIgb24gYWN0dWFsbHkgaGFzIGFuIDxoZWFkPiB0byBhcHBlbmQgdG8gPHRp
dGxlPiB0by4KICAgICBhdXRvIGhlYWQgPSBIVE1MSGVhZEVsZW1lbnQ6OmNyZWF0ZSgqdGhpcyk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAJKHJldmlzaW9uIDI1OTMw
NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBNZWRpYURvY3VtZW50UGFyc2VyOjpjcmVhdGVEb2N1
bWVudAogICAgIHJvb3RFbGVtZW50LT5pbnNlcnRlZEJ5UGFyc2VyKCk7CiAKICAgICBpZiAoZG9j
dW1lbnQuZnJhbWUoKSkKLSAgICAgICAgZG9jdW1lbnQuZnJhbWUoKS0+aW5qZWN0VXNlclNjcmlw
dHMoSW5qZWN0QXREb2N1bWVudFN0YXJ0KTsKKyAgICAgICAgZG9jdW1lbnQuZnJhbWUoKS0+aW5q
ZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50U3RhcnQpOwog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBhdXRvIGhlYWRFbGVtZW50ID0gSFRNTEhl
YWRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9Q
bHVnaW5Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9QbHVn
aW5Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
UGx1Z2luRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQg
UGx1Z2luRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3VtZW4KICAgICByb290RWxlbWVudC0+aW5z
ZXJ0ZWRCeVBhcnNlcigpOwogCiAgICAgaWYgKGRvY3VtZW50LmZyYW1lKCkpCi0gICAgICAgIGRv
Y3VtZW50LmZyYW1lKCktPmluamVjdFVzZXJTY3JpcHRzKEluamVjdEF0RG9jdW1lbnRTdGFydCk7
CisgICAgICAgIGRvY3VtZW50LmZyYW1lKCktPmluamVjdFVzZXJTY3JpcHRzKFVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lOjpEb2N1bWVudFN0YXJ0KTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgLy8gU2hvdWxkIG5vdCBiZSBhYmxlIHRvIHpvb20gaW50byBzdGFuZGFsb25lIHBsdWct
aW4gZG9jdW1lbnRzLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0
cnVjdGlvblNpdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6ZGlzcGF0Y2hE
b2N1bQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIo
bV9kb2N1bWVudC5mcmFtZSgpKSkKLSAgICAgICAgZnJhbWUtPmluamVjdFVzZXJTY3JpcHRzKElu
amVjdEF0RG9jdW1lbnRTdGFydCk7CisgICAgICAgIGZyYW1lLT5pbmplY3RVc2VyU2NyaXB0cyhV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRTdGFydCk7CiB9CiAKIHZvaWQgSFRNTENv
bnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxIdG1sU3RhcnRUYWdCZWZvcmVIVE1MKEF0b21pY0hU
TUxUb2tlbiYmIHRva2VuKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OTMsNyArNzkzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
ZmluaXNoZWRQYXJzaW5nKCkKIHsKICAgICBMT0coTG9hZGluZywgIldlYkNvcmVMb2FkaW5nICVz
OiBGaW5pc2hlZCBwYXJzaW5nIiwgbV9mcmFtZS50cmVlKCkudW5pcXVlTmFtZSgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgbV9mcmFtZS5pbmplY3RVc2VyU2NyaXB0cyhJbmplY3RB
dERvY3VtZW50RW5kKTsKKyAgICBtX2ZyYW1lLmluamVjdFVzZXJTY3JpcHRzKFVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lOjpEb2N1bWVudEVuZCk7CiAKICAgICBpZiAobV9zdGF0ZU1hY2hpbmUuY3Jl
YXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxOCw5ICs2MTgsMTQgQEAgdm9pZCBGcmFtZTo6
aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdAogICAgIGlmIChsb2FkZXIoKS5zdGF0ZU1hY2hp
bmUoKS5jcmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkgJiYgIXNldHRpbmdzKCkuc2hvdWxk
SW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3VtZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fcGFnZS0+dXNlckNvbnRlbnRQcm92aWRlcigpLmZvckVhY2hVc2VyU2NyaXB0
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluamVjdGlvblRpbWVdKERP
TVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVzZXJTY3JpcHQmIHNjcmlwdCkgewotICAgICAg
ICBpZiAoc2NyaXB0LmluamVjdGlvblRpbWUoKSA9PSBpbmplY3Rpb25UaW1lKQotICAgICAgICAg
ICAgaW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KHdvcmxkLCBzY3JpcHQpOworICAgIGJvb2wg
cGFnZVdhc05vdGlmaWVkID0gbV9wYWdlLT5oYXNCZWVuTm90aWZpZWRUb0luamVjdFVzZXJTY3Jp
cHRzKCk7CisgICAgbV9wYWdlLT51c2VyQ29udGVudFByb3ZpZGVyKCkuZm9yRWFjaFVzZXJTY3Jp
cHQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5qZWN0aW9uVGltZSwg
cGFnZVdhc05vdGlmaWVkXSAoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgVXNlclNjcmlw
dCYgc2NyaXB0KSB7CisgICAgICAgIGlmIChzY3JpcHQuaW5qZWN0aW9uVGltZSgpID09IGluamVj
dGlvblRpbWUpIHsKKyAgICAgICAgICAgIGlmIChzY3JpcHQud2FpdEZvck5vdGlmaWNhdGlvbkJl
Zm9yZUluamVjdGluZygpID09IFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Olll
cyAmJiAhcGFnZVdhc05vdGlmaWVkKQorICAgICAgICAgICAgICAgIG1fcGFnZS0+YWRkVXNlclNj
cmlwdEF3YWl0aW5nTm90aWZpY2F0aW9uKHdvcmxkLCBzY3JpcHQpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSh3b3JsZCwgc2Ny
aXB0KTsKKyAgICAgICAgfQogICAgIH0pOwogfQogCkBAIC02MzYsNyArNjQxLDcgQEAgdm9pZCBG
cmFtZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KAogICAgIGF1dG8qIGRvY3VtZW50ID0g
dGhpcy0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm47Ci0g
ICAgaWYgKHNjcmlwdC5pbmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5ICYm
ICFpc01haW5GcmFtZSgpKQorICAgIGlmIChzY3JpcHQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSAmJiAhaXNNYWluRnJh
bWUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpt
YXRjaGVzUGF0dGVybnMoZG9jdW1lbnQtPnVybCgpLCBzY3JpcHQud2hpdGVsaXN0KCksIHNjcmlw
dC5ibGFja2xpc3QoKSkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAko
cmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI0LDYgKzEyNCw3IEBACiAjaW5jbHVkZSAiVXNlckNvbnRlbnRQcm92aWRl
ci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgogI2luY2x1ZGUgIlVzZXJJ
bnB1dEJyaWRnZS5oIgorI2luY2x1ZGUgIlVzZXJTY3JpcHQuaCIKICNpbmNsdWRlICJVc2VyU3R5
bGVTaGVldC5oIgogI2luY2x1ZGUgIlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiVmlzaXRlZExpbmtTdGF0ZS5oIgpAQCAtMzM1LDYgKzMzNiw5IEBAIFBhZ2U6OlBhZ2UoUGFn
ZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICAgICAgICAgICAgIG1fY29yc0Rpc2FibGluZ1Bh
dHRlcm5zLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKHBhcnNlZFBhdHRlcm4pKTsKICAgICB9CiAg
ICAgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMuc2hyaW5rVG9GaXQoKTsKKyAgICAKKyAgICBpZiAo
IXBhZ2VDb25maWd1cmF0aW9uLnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9u
KQorICAgICAgICBtX2hhc0JlZW5Ob3RpZmllZFRvSW5qZWN0VXNlclNjcmlwdHMgPSB0cnVlOwog
fQogCiBQYWdlOjp+UGFnZSgpCkBAIC0yNDg5LDYgKzI0OTMsMjAgQEAgVXNlckNvbnRlbnRQcm92
aWRlciYgUGFnZTo6dXNlckNvbnRlbnRQcgogICAgIHJldHVybiBtX3VzZXJDb250ZW50UHJvdmlk
ZXI7CiB9CiAKK3ZvaWQgUGFnZTo6bm90aWZ5VG9JbmplY3RVc2VyU2NyaXB0cygpCit7CisgICAg
Zm9yIChhdXRvKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBt
X3VzZXJTY3JpcHRzQXdhaXRpbmdOb3RpZmljYXRpb24pCisgICAgICAgICAgICBmcmFtZS0+aW5q
ZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25kLmdldCgpKTsK
KyAgICB9CisgICAgbV91c2VyU2NyaXB0c0F3YWl0aW5nTm90aWZpY2F0aW9uLmNsZWFyKCk7Cit9
CisKK3ZvaWQgUGFnZTo6YWRkVXNlclNjcmlwdEF3YWl0aW5nTm90aWZpY2F0aW9uKERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVzZXJTY3JpcHQmIHNjcmlwdCkKK3sKKyAgICBtX3VzZXJT
Y3JpcHRzQXdhaXRpbmdOb3RpZmljYXRpb24uYXBwZW5kKHsgbWFrZVJlZih3b3JsZCksIG1ha2VV
bmlxdWVSZWY8VXNlclNjcmlwdD4oc2NyaXB0KSB9KTsKK30KKwogdm9pZCBQYWdlOjpzZXRVc2Vy
Q29udGVudFByb3ZpZGVyKFJlZjxVc2VyQ29udGVudFByb3ZpZGVyPiYmIHVzZXJDb250ZW50UHJv
dmlkZXIpCiB7CiAgICAgbV91c2VyQ29udGVudFByb3ZpZGVyLT5yZW1vdmVQYWdlKCp0aGlzKTsK
QEAgLTMwNzQsNyArMzA5Miw3IEBAIHZvaWQgUGFnZTo6aW5qZWN0VXNlclN0eWxlU2hlZXQoVXNl
clN0eWwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICh1c2VyU3R5bGVTaGVldC5p
bmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5KSB7CisgICAgaWYgKHVzZXJT
dHlsZVNoZWV0LmluamVjdGVkRnJhbWVzKCkgPT0gVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6
SW5qZWN0SW5Ub3BGcmFtZU9ubHkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9t
YWluRnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBkb2N1bWVudC0+ZXh0ZW5zaW9uU3R5
bGVTaGVldHMoKS5pbmplY3RQYWdlU3BlY2lmaWNVc2VyU3R5bGVTaGVldCh1c2VyU3R5bGVTaGVl
dCk7CiAgICAgfSBlbHNlIHsKQEAgLTMwOTMsNyArMzExMSw3IEBAIHZvaWQgUGFnZTo6cmVtb3Zl
SW5qZWN0ZWRVc2VyU3R5bGVTaGVldCgKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
ICh1c2VyU3R5bGVTaGVldC5pbmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5
KSB7CisgICAgaWYgKHVzZXJTdHlsZVNoZWV0LmluamVjdGVkRnJhbWVzKCkgPT0gVXNlckNvbnRl
bnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkpIHsKICAgICAgICAgaWYgKGF1
dG8qIGRvY3VtZW50ID0gbV9tYWluRnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBkb2N1
bWVudC0+ZXh0ZW5zaW9uU3R5bGVTaGVldHMoKS5yZW1vdmVQYWdlU3BlY2lmaWNVc2VyU3R5bGVT
aGVldCh1c2VyU3R5bGVTaGVldCk7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShy
ZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMTQwLDYgKzE0MCw3IEBAIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjsK
IGNsYXNzIFVzZXJDb250ZW50UHJvdmlkZXI7CiBjbGFzcyBVc2VyQ29udGVudFVSTFBhdHRlcm47
CiBjbGFzcyBVc2VySW5wdXRCcmlkZ2U7CitjbGFzcyBVc2VyU2NyaXB0OwogY2xhc3MgVXNlclN0
eWxlU2hlZXQ7CiBjbGFzcyBWYWxpZGF0aW9uTWVzc2FnZUNsaWVudDsKIGNsYXNzIFZpc2libGVT
ZWxlY3Rpb247CkBAIC03MjksNiArNzMwLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZEZp
cmVSZXNpemVFdmVudHMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZEZpcmVSZXNpemVFdmVudHM7
IH0KICAgICB2b2lkIHNldFNob3VsZEZpcmVSZXNpemVFdmVudHMoYm9vbCBzaG91bGRGaXJlUmVz
aXplRXZlbnRzKSB7IG1fc2hvdWxkRmlyZVJlc2l6ZUV2ZW50cyA9IHNob3VsZEZpcmVSZXNpemVF
dmVudHM7IH0KIAorICAgIGJvb2wgaGFzQmVlbk5vdGlmaWVkVG9JbmplY3RVc2VyU2NyaXB0cygp
IGNvbnN0IHsgcmV0dXJuIG1faGFzQmVlbk5vdGlmaWVkVG9JbmplY3RVc2VyU2NyaXB0czsgfQor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5VG9JbmplY3RVc2VyU2NyaXB0cygpOworICAg
IHZvaWQgYWRkVXNlclNjcmlwdEF3YWl0aW5nTm90aWZpY2F0aW9uKERPTVdyYXBwZXJXb3JsZCYs
IGNvbnN0IFVzZXJTY3JpcHQmKTsKKwogcHJpdmF0ZToKICAgICBzdHJ1Y3QgTmF2aWdhdGlvbiB7
CiAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbjsKQEAgLTEwMDgsNiArMTAxMyw5IEBA
IHByaXZhdGU6CiAgICAgVmVjdG9yPFVzZXJDb250ZW50VVJMUGF0dGVybj4gbV9jb3JzRGlzYWJs
aW5nUGF0dGVybnM7CiAgICAgVmVjdG9yPFVzZXJTdHlsZVNoZWV0PiBtX3VzZXJTdHlsZVNoZWV0
c1BlbmRpbmdJbmplY3Rpb247CiAgICAgYm9vbCBtX3Nob3VsZEZpcmVSZXNpemVFdmVudHMgeyB0
cnVlIH07CisgICAgCisgICAgYm9vbCBtX2hhc0JlZW5Ob3RpZmllZFRvSW5qZWN0VXNlclNjcmlw
dHMgeyBmYWxzZSB9OworICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmPERPTVdyYXBwZXJXb3JsZD4s
IFVuaXF1ZVJlZjxVc2VyU2NyaXB0Pj4+IG1fdXNlclNjcmlwdHNBd2FpdGluZ05vdGlmaWNhdGlv
bjsKIH07CiAKIGlubGluZSBQYWdlR3JvdXAmIFBhZ2U6Omdyb3VwKCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTI3
LDYgKzEyNyw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIFZlY3RvcjxTdHJpbmc+IGNvcnNEaXNh
YmxpbmdQYXR0ZXJuczsKICAgICBVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPiBtZWRp
YVJlY29yZGVyUHJvdmlkZXI7CisgICAgYm9vbCB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5v
dGlmaWNhdGlvbiB7IHRydWUgfTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlckNvbnRlbnRUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
ckNvbnRlbnRUeXBlcy5oCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJDb250ZW50VHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyB7IElu
amVjdEluQWxsRnJhbWVzLCBJbmplY3RJblRvcEZyYW1lT25seSB9OworZW51bSBjbGFzcyBVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzIDogYm9vbCB7IEluamVjdEluQWxsRnJhbWVzLCBJbmplY3RJ
blRvcEZyYW1lT25seSB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1VzZXJTY3JpcHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJTY3JpcHQuaAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9Vc2VyU2NyaXB0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE2ICszNSwyMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBVc2VyU2NyaXB0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBVc2VyU2NyaXB0KCkgPSBkZWZhdWx0OwogICAgIH5Vc2VyU2Ny
aXB0KCkgPSBkZWZhdWx0OworICAgIFVzZXJTY3JpcHQoY29uc3QgVXNlclNjcmlwdCYpID0gZGVm
YXVsdDsKKyAgICBVc2VyU2NyaXB0KFVzZXJTY3JpcHQmJikgPSBkZWZhdWx0OworICAgIFVzZXJT
Y3JpcHQmIG9wZXJhdG9yPShjb25zdCBVc2VyU2NyaXB0JikgPSBkZWZhdWx0OworICAgIFVzZXJT
Y3JpcHQmIG9wZXJhdG9yPShVc2VyU2NyaXB0JiYpID0gZGVmYXVsdDsKIAotICAgIFVzZXJTY3Jp
cHQoU3RyaW5nJiYgc291cmNlLCBVUkwmJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgd2hpdGVsaXN0
LCBWZWN0b3I8U3RyaW5nPiYmIGJsYWNrbGlzdCwgVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5q
ZWN0aW9uVGltZSwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcykKKyAg
ICBVc2VyU2NyaXB0KFN0cmluZyYmIHNvdXJjZSwgVVJMJiYgdXJsLCBWZWN0b3I8U3RyaW5nPiYm
IHdoaXRlbGlzdCwgVmVjdG9yPFN0cmluZz4mJiBibGFja2xpc3QsIFVzZXJTY3JpcHRJbmplY3Rp
b25UaW1lIGluamVjdGlvblRpbWUsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRG
cmFtZXMsIFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmcgd2FpdEZvck5vdGlmaWNh
dGlvbikKICAgICAgICAgOiBtX3NvdXJjZShXVEZNb3ZlKHNvdXJjZSkpCiAgICAgICAgICwgbV91
cmwoV1RGTW92ZSh1cmwpKQogICAgICAgICAsIG1fd2hpdGVsaXN0KFdURk1vdmUod2hpdGVsaXN0
KSkKICAgICAgICAgLCBtX2JsYWNrbGlzdChXVEZNb3ZlKGJsYWNrbGlzdCkpCiAgICAgICAgICwg
bV9pbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpCiAgICAgICAgICwgbV9pbmplY3RlZEZyYW1l
cyhpbmplY3RlZEZyYW1lcykKKyAgICAgICAgLCBtX3dhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJ
bmplY3Rpbmcod2FpdEZvck5vdGlmaWNhdGlvbikKICAgICB7CiAgICAgfQogCkBAIC01NCwxNyAr
NTgsMTkgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibGFja2xpc3QoKSBj
b25zdCB7IHJldHVybiBtX2JsYWNrbGlzdDsgfQogICAgIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1l
IGluamVjdGlvblRpbWUoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGlvblRpbWU7IH0KICAgICBV
c2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKCkgY29uc3QgeyByZXR1cm4g
bV9pbmplY3RlZEZyYW1lczsgfQorICAgIFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rp
bmcgd2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZygpIGNvbnN0IHsgcmV0dXJuIG1f
d2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzsgfQogCiAgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgVXNlclNjcmlwdCYpOwor
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxVc2VyU2NyaXB0PiBk
ZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3NvdXJjZTsKICAgICBV
UkwgbV91cmw7CiAgICAgVmVjdG9yPFN0cmluZz4gbV93aGl0ZWxpc3Q7CiAgICAgVmVjdG9yPFN0
cmluZz4gbV9ibGFja2xpc3Q7Ci0gICAgVXNlclNjcmlwdEluamVjdGlvblRpbWUgbV9pbmplY3Rp
b25UaW1lIHsgSW5qZWN0QXREb2N1bWVudFN0YXJ0IH07Ci0gICAgVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyBtX2luamVjdGVkRnJhbWVzIHsgSW5qZWN0SW5BbGxGcmFtZXMgfTsKKyAgICBVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZSBtX2luamVjdGlvblRpbWUgeyBVc2VyU2NyaXB0SW5qZWN0aW9u
VGltZTo6RG9jdW1lbnRTdGFydCB9OworICAgIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgbV9p
bmplY3RlZEZyYW1lcyB7IFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJh
bWVzIH07CisgICAgV2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZyBtX3dhaXRGb3JO
b3RpZmljYXRpb25CZWZvcmVJbmplY3RpbmcgeyBXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5q
ZWN0aW5nOjpObyB9OwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTc0LDM5ICs4
MCw1OCBAQCB2b2lkIFVzZXJTY3JpcHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyCiAgICAgZW5j
b2RlciA8PCBtX3VybDsKICAgICBlbmNvZGVyIDw8IG1fd2hpdGVsaXN0OwogICAgIGVuY29kZXIg
PDwgbV9ibGFja2xpc3Q7Ci0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1faW5qZWN0aW9uVGltZSk7
Ci0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1faW5qZWN0ZWRGcmFtZXMpOworICAgIGVuY29kZXIg
PDwgbV9pbmplY3Rpb25UaW1lOworICAgIGVuY29kZXIgPDwgbV9pbmplY3RlZEZyYW1lczsKKyAg
ICBlbmNvZGVyIDw8IG1fd2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzsKIH0KIAog
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLWJvb2wgVXNlclNjcmlwdDo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIFVzZXJTY3JpcHQmIHVzZXJTY3JpcHQpCitPcHRpb25hbDxVc2VyU2NyaXB0PiBV
c2VyU2NyaXB0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBTdHJpbmcgc291cmNl
OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc291cmNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIAotICAgIFVSTCB1cmw7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgVmVjdG9yPFN0cmluZz4gd2hpdGVsaXN0Owot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUod2hpdGVsaXN0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIAotICAgIFZlY3RvcjxTdHJpbmc+IGJsYWNrbGlzdDsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGJsYWNrbGlzdCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lOwotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVFbnVtKGluamVjdGlvblRpbWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAg
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lczsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlRW51bShpbmplY3RlZEZyYW1lcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAKLSAgICB1c2VyU2NyaXB0ID0geyBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUodXJsKSwgV1RG
TW92ZSh3aGl0ZWxpc3QpLCBXVEZNb3ZlKGJsYWNrbGlzdCksIGluamVjdGlvblRpbWUsIGluamVj
dGVkRnJhbWVzIH07Ci0gICAgcmV0dXJuIHRydWU7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBzb3Vy
Y2U7CisgICAgZGVjb2RlciA+PiBzb3VyY2U7CisgICAgaWYgKCFzb3VyY2UpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgCisgICAgT3B0aW9uYWw8VVJMPiB1cmw7CisgICAgZGVj
b2RlciA+PiB1cmw7CisgICAgaWYgKCF1cmwpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgCisgICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IHdoaXRlbGlzdDsKKyAgICBkZWNv
ZGVyID4+IHdoaXRlbGlzdDsKKyAgICBpZiAoIXdoaXRlbGlzdCkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAKKyAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gYmxhY2tsaXN0
OworICAgIGRlY29kZXIgPj4gYmxhY2tsaXN0OworICAgIGlmICghYmxhY2tsaXN0KQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIAorICAgIE9wdGlvbmFsPFVzZXJTY3JpcHRJbmpl
Y3Rpb25UaW1lPiBpbmplY3Rpb25UaW1lOworICAgIGRlY29kZXIgPj4gaW5qZWN0aW9uVGltZTsK
KyAgICBpZiAoIWluamVjdGlvblRpbWUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgCisgICAgT3B0aW9uYWw8VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcz4gaW5qZWN0ZWRGcmFt
ZXM7CisgICAgZGVjb2RlciA+PiBpbmplY3RlZEZyYW1lczsKKyAgICBpZiAoIWluamVjdGVkRnJh
bWVzKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIAorICAgIE9wdGlvbmFsPFdh
aXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc+IHdhaXRGb3JOb3RpZmljYXRpb247Cisg
ICAgZGVjb2RlciA+PiB3YWl0Rm9yTm90aWZpY2F0aW9uOworICAgIGlmICghd2FpdEZvck5vdGlm
aWNhdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKKyAgICByZXR1cm4g
e3sKKyAgICAgICAgV1RGTW92ZSgqc291cmNlKSwKKyAgICAgICAgV1RGTW92ZSgqdXJsKSwKKyAg
ICAgICAgV1RGTW92ZSgqd2hpdGVsaXN0KSwKKyAgICAgICAgV1RGTW92ZSgqYmxhY2tsaXN0KSwK
KyAgICAgICAgV1RGTW92ZSgqaW5qZWN0aW9uVGltZSksCisgICAgICAgIFdURk1vdmUoKmluamVj
dGVkRnJhbWVzKSwKKyAgICAgICAgV1RGTW92ZSgqd2FpdEZvck5vdGlmaWNhdGlvbikKKyAgICB9
fTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9Vc2VyU2NyaXB0VHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1Vz
ZXJTY3JpcHRUeXBlcy5oCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJTY3JpcHRUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw4IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSB7IEluamVj
dEF0RG9jdW1lbnRTdGFydCwgSW5qZWN0QXREb2N1bWVudEVuZCB9OworZW51bSBjbGFzcyBVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZSA6IGJvb2wgeyBEb2N1bWVudFN0YXJ0LCBEb2N1bWVudEVuZCB9
OworZW51bSBjbGFzcyBXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nIDogYm9vbCB7
IE5vLCBZZXMgfTsKIAogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgVXNlclNjcmlwdDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgJKHJldmlzaW9uIDI1OTMwNikK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNyArMzgsNyBAQCBjbGFzcyBVc2VyU3R5bGVTaGVldCB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVXNlclN0eWxlU2hlZXQoKQotICAgICAgICA6IG1f
aW5qZWN0ZWRGcmFtZXMoSW5qZWN0SW5BbGxGcmFtZXMpCisgICAgICAgIDogbV9pbmplY3RlZEZy
YW1lcyhVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcykKICAgICAg
ICAgLCBtX2xldmVsKFVzZXJTdHlsZVVzZXJMZXZlbCkKICAgICB7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MTMsNyArODEz
LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6c3RhcnRFbGVtZW50TnMoYwogICAgICAgICBk
b3duY2FzdDxIVE1MSHRtbEVsZW1lbnQ+KG5ld0VsZW1lbnQuZ2V0KCkpLmluc2VydGVkQnlQYXJz
ZXIoKTsKIAogICAgIGlmICghbV9wYXJzaW5nRnJhZ21lbnQgJiYgaXNGaXJzdEVsZW1lbnQgJiYg
ZG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+aW5qZWN0
VXNlclNjcmlwdHMoSW5qZWN0QXREb2N1bWVudFN0YXJ0KTsKKyAgICAgICAgZG9jdW1lbnQoKS0+
ZnJhbWUoKS0+aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3Vt
ZW50U3RhcnQpOwogfQogCiB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjplbmRFbGVtZW50TnMoKQpJ
bmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTMzNSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjYgQEAKKzIwMjAtMDMtMzEgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIHRvIG1h
a2UgV0tVc2VyU2NyaXB0cyB3YWl0IGZvciBhIG5vdGlmaWNhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5ODQ1CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82MDM0MjI5OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaDoKKyAgICAgICAgKFdl
YktpdDo6dG9Vc2VyU2NyaXB0SW5qZWN0aW9uVGltZSk6CisgICAgICAgIChXZWJLaXQ6OnRvV0tV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZSk6CisgICAgICAgIChXZWJLaXQ6OnRvVXNlckNvbnRlbnRJ
bmplY3RlZEZyYW1lcyk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6Cisg
ICAgICAgICogU2hhcmVkL1dlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVzZXJTY3JpcHREYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb246OnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uIGNvbnN0
KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldFVzZXJTY3JpcHRzU2hvdWxk
V2FpdFVudGlsTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJT
Y3JpcHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwOgorICAg
ICAgICAoV0tQYWdlR3JvdXBBZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tVc2VyU2NyaXB0UmVmLmNwcDoKKyAgICAgICAgKFdLVXNlclNjcmlwdENyZWF0ZVdpdGhT
b3VyY2UpOgorICAgICAgICAoV0tVc2VyU2NyaXB0R2V0TWFpbkZyYW1lT25seSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW06CisgICAgICAgICgtW1dLVXNl
clNjcmlwdCBpbml0V2l0aFNvdXJjZTppbmplY3Rpb25UaW1lOmZvck1haW5GcmFtZU9ubHk6XSk6
CisgICAgICAgICgtW1dLVXNlclNjcmlwdCBpc0Zvck1haW5GcmFtZU9ubHldKToKKyAgICAgICAg
KC1bV0tVc2VyU2NyaXB0IF9pbml0V2l0aFNvdXJjZTppbmplY3Rpb25UaW1lOmZvck1haW5GcmFt
ZU9ubHk6bGVnYWN5V2hpdGVsaXN0OmxlZ2FjeUJsYWNrbGlzdDp1c2VyQ29udGVudFdvcmxkOl0p
OgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX2luaXRXaXRoU291cmNlOmluamVjdGlvblRpbWU6
Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OmFzc29jaWF0
ZWRVUkw6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bV0tVc2VyU2NyaXB0IF9pbml0
V2l0aFNvdXJjZTppbmplY3Rpb25UaW1lOmZvck1haW5GcmFtZU9ubHk6bGVnYWN5V2hpdGVsaXN0
OmxlZ2FjeUJsYWNrbGlzdDpjb250ZW50V29ybGQ6XSk6CisgICAgICAgICgtW1dLVXNlclNjcmlw
dCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdo
aXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YXNzb2NpYXRlZFVSTDpjb250ZW50V29ybGQ6XSk6Cisg
ICAgICAgICgtW1dLVXNlclNjcmlwdCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpmb3JN
YWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YXNzb2NpYXRlZFVS
TDpjb250ZW50V29ybGQ6d2FpdEZvck5vdGlmaWNhdGlvbjpdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdEludGVybmFsLmg6CisgICAgICAgIChBUEk6OnRvV2Vi
Q29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKToKKyAgICAgICAgKEFQSTo6dG9XS1VzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNj
cmlwdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ub3RpZnlVc2VyU2NyaXB0c10pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3Rp
ZmljYXRpb25dKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfc2V0VXNlclNj
cmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW06CisgICAgICAgICgtW19XS1VzZXJTdHls
ZVNoZWV0IGluaXRXaXRoU291cmNlOmZvck1haW5GcmFtZU9ubHk6XSk6CisgICAgICAgICgtW19X
S1VzZXJTdHlsZVNoZWV0IGluaXRXaXRoU291cmNlOmZvcldLV2ViVmlldzpmb3JNYWluRnJhbWVP
bmx5OnVzZXJDb250ZW50V29ybGQ6XSk6CisgICAgICAgICgtW19XS1VzZXJTdHlsZVNoZWV0IGlu
aXRXaXRoU291cmNlOmZvck1haW5GcmFtZU9ubHk6bGVnYWN5V2hpdGVsaXN0OmxlZ2FjeUJsYWNr
bGlzdDp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVTaGVldCBp
bml0V2l0aFNvdXJjZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFj
a2xpc3Q6YmFzZVVSTDp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAoLVtfV0tVc2VyU3R5
bGVTaGVldCBpc0Zvck1haW5GcmFtZU9ubHldKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHRJ
bnRlcm5hbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjptX3Byb2Nlc3NEaXNwbGF5TmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6Om5vdGlmeVVzZXJTY3JpcHRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWRk
VXNlclNjcmlwdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMC0w
My0zMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgdHlwZSB0cmFpdHMgZm9yIFNjcm9sbGFibGVBcmVhLCBhbmQgb3RoZXIgY2xlYW51cApJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAJKHJldmlzaW9uIDI1OTMyNCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNiArMTMzLDcgQEAg
dm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSQogICAgIGVuY29kZXIgPDwg
b2xkUGFnZUlEOwogICAgIGVuY29kZXIgPDwgb3ZlcnJpZGRlbk1lZGlhVHlwZTsKICAgICBlbmNv
ZGVyIDw8IGNvcnNEaXNhYmxpbmdQYXR0ZXJuczsKKyAgICBlbmNvZGVyIDw8IHVzZXJTY3JpcHRz
U2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOwogICAgIGVuY29kZXIgPDwgY3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOwogICAgIGVuY29kZXIgPDwgcHJvY2Vzc0Rpc3BsYXlO
YW1lOwogCkBAIC00MTYsNiArNDE3LDEyIEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnM+IFdlYlAKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJz
LmNvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IFdURk1vdmUoKmNvcnNEaXNhYmxpbmdQYXR0ZXJucyk7
CiAKKyAgICBPcHRpb25hbDxib29sPiB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNh
dGlvbjsKKyAgICBkZWNvZGVyID4+IHVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0
aW9uOworICAgIGlmICghdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24pCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcGFyYW1ldGVycy51c2VyU2NyaXB0c1No
b3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiA9ICp1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5v
dGlmaWNhdGlvbjsKKyAgICAKICAgICBPcHRpb25hbDxib29sPiBjcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2xDaGVja0VuYWJsZWQ7CiAgICAgZGVjb2RlciA+PiBjcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2xDaGVja0VuYWJsZWQ7CiAgICAgaWYgKCFjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Vu
YWJsZWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNTkzMjQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw2ICsyMDIs
NyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAgICBTdHJpbmcgb3Zl
cnJpZGRlbk1lZGlhVHlwZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjb3JzRGlzYWJsaW5nUGF0dGVy
bnM7CisgICAgYm9vbCB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiB7IHRy
dWUgfTsKICAgICBib29sIGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCB7IHRy
dWUgfTsKICAgICBTdHJpbmcgcHJvY2Vzc0Rpc3BsYXlOYW1lOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFU
eXBlcy5jcHAJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEx
ICs0OSwxMiBAQCBPcHRpb25hbDxXZWJVc2VyU2NyaXB0RGF0YT4gV2ViVXNlclNjcmlwCiAgICAg
aWYgKCF3b3JsZElkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAg
Ci0gICAgV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0OwotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUodXNlclNjcmlwdCkpCisgICAgT3B0aW9uYWw8V2ViQ29yZTo6VXNlclNjcmlwdD4gdXNl
clNjcmlwdDsKKyAgICBkZWNvZGVyID4+IHVzZXJTY3JpcHQ7CisgICAgaWYgKCF1c2VyU2NyaXB0
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIAotICAgIHJldHVybiB7eyBXVEZN
b3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqd29ybGRJZGVudGlmaWVyKSwgV1RGTW92ZSh1c2Vy
U2NyaXB0KSB9fTsKKyAgICByZXR1cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUo
KndvcmxkSWRlbnRpZmllciksIFdURk1vdmUoKnVzZXJTY3JpcHQpIH19OwogfQogCiB2b2lkIFdl
YlVzZXJTdHlsZVNoZWV0RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCShy
ZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQ
SUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtOTkzLDIxICs5OTMsMjEgQEAgaW5saW5lIFdlYkNv
cmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIAogewogICAgIHN3aXRjaCAod2tJbmplY3RlZFRp
bWUpIHsKICAgICBjYXNlIGtXS0luamVjdEF0RG9jdW1lbnRTdGFydDoKLSAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OkluamVjdEF0RG9jdW1lbnRTdGFydDsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6
OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1bWVudFN0YXJ0OwogICAgIGNhc2Uga1dLSW5q
ZWN0QXREb2N1bWVudEVuZDoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkluamVjdEF0RG9jdW1l
bnRFbmQ7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6
RG9jdW1lbnRFbmQ7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OkluamVjdEF0RG9jdW1lbnRTdGFydDsKKyAgICByZXR1cm4gV2ViQ29yZTo6
VXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50U3RhcnQ7CiB9CiAKIGlubGluZSBfV0tV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZSB0b1dLVXNlclNjcmlwdEluamVjdGlvblRpbWUoV2ViQ29y
ZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0ZWRUaW1lKQogewogICAgIHN3aXRjaCAo
aW5qZWN0ZWRUaW1lKSB7Ci0gICAgY2FzZSBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50U3RhcnQ6
CisgICAgY2FzZSBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRTdGFy
dDoKICAgICAgICAgcmV0dXJuIGtXS0luamVjdEF0RG9jdW1lbnRTdGFydDsKLSAgICBjYXNlIFdl
YkNvcmU6OkluamVjdEF0RG9jdW1lbnRFbmQ6CisgICAgY2FzZSBXZWJDb3JlOjpVc2VyU2NyaXB0
SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQ6CiAgICAgICAgIHJldHVybiBrV0tJbmplY3RBdERv
Y3VtZW50RW5kOwogICAgIH0KIApAQCAtMTAxOSwxMyArMTAxOSwxMyBAQCBpbmxpbmUgV2ViQ29y
ZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lCiB7CiAgICAgc3dpdGNoICh3a0luamVjdGVkRnJh
bWVzKSB7CiAgICAgY2FzZSBrV0tJbmplY3RJbkFsbEZyYW1lczoKLSAgICAgICAgcmV0dXJuIFdl
YkNvcmU6OkluamVjdEluQWxsRnJhbWVzOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6VXNlckNv
bnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXM7CiAgICAgY2FzZSBrV0tJbmpl
Y3RJblRvcEZyYW1lT25seToKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkluamVjdEluVG9wRnJh
bWVPbmx5OworICAgICAgICByZXR1cm4gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1l
czo6SW5qZWN0SW5Ub3BGcmFtZU9ubHk7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzOworICAgIHJldHVybiBX
ZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lczsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI1OTMyNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3ODEsNiArNzc4MSw3IEBA
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjoKIAogICAgIHBhcmFtZXRl
cnMub3ZlcnJpZGRlbk1lZGlhVHlwZSA9IG1fb3ZlcnJpZGRlbk1lZGlhVHlwZTsKICAgICBwYXJh
bWV0ZXJzLmNvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IG1fY29uZmlndXJhdGlvbi0+Y29yc0Rpc2Fi
bGluZ1BhdHRlcm5zKCk7CisgICAgcGFyYW1ldGVycy51c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRp
bE5vdGlmaWNhdGlvbiA9IG1fY29uZmlndXJhdGlvbi0+dXNlclNjcmlwdHNTaG91bGRXYWl0VW50
aWxOb3RpZmljYXRpb24oKTsKICAgICBwYXJhbWV0ZXJzLmNyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bENoZWNrRW5hYmxlZCA9IG1fY29uZmlndXJhdGlvbi0+Y3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
Q2hlY2tFbmFibGVkKCk7CiAgICAgcGFyYW1ldGVycy5oYXNSZXNvdXJjZUxvYWRDbGllbnQgPSAh
IW1fcmVzb3VyY2VMb2FkQ2xpZW50OwogCkBAIC04MjAyLDYgKzgyMDMsMTEgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnVwZGF0ZVdlYnNpdGVQb2xpY2llcwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlVwZGF0ZVdlYnNpdGVQb2xpY2llcyh3ZWJzaXRlUG9saWNpZXMpKTsKIH0KIAordm9pZCBX
ZWJQYWdlUHJveHk6Om5vdGlmeVVzZXJTY3JpcHRzKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpOb3RpZnlVc2VyU2NyaXB0cygpKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5j
ZSkKIHsKICAgICBwYWdlQ2xpZW50KCkuZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250
ZW50UHJvdmlkZXIoUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXplU3VnZ2VzdGVkRmlsZW5h
bWUoc3VnZ2VzdGVkRmlsZW5hbWUpLCBkYXRhUmVmZXJlbmNlKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyNTkzMDcpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNjExLDYgKzYx
MSw3IEBAIHB1YmxpYzoKICAgICBib29sIHdpbGxIYW5kbGVIb3Jpem9udGFsU2Nyb2xsRXZlbnRz
KCkgY29uc3Q7CiAKICAgICB2b2lkIHVwZGF0ZVdlYnNpdGVQb2xpY2llcyhXZWJzaXRlUG9saWNp
ZXNEYXRhJiYpOworICAgIHZvaWQgbm90aWZ5VXNlclNjcmlwdHMoKTsKIAogICAgIGJvb2wgY2Fu
U2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAJKHJl
dmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29u
ZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDYgKzkxLDcgQEAgUmVmPFBhZ2VD
b25maWd1cmF0aW9uPiBQYWdlQ29uZmlndXJhdGlvbgogICAgICAgICBjb3B5LT5tX3VybFNjaGVt
ZUhhbmRsZXJzLnNldChwYWlyLmtleSwgcGFpci52YWx1ZS5jb3B5UmVmKCkpOwogICAgIGNvcHkt
Pm1fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gdGhpcy0+bV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7
CiAgICAgY29weS0+bV9jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgPSB0aGlz
LT5tX2Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKKyAgICBjb3B5LT5tX3Vz
ZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uID0gdGhpcy0+bV91c2VyU2NyaXB0
c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsKICAgICBjb3B5LT5tX3dlYlZpZXdDYXRlZ29y
eSA9IHRoaXMtPm1fd2ViVmlld0NhdGVnb3J5OwogCiAgICAgY29weS0+bV9wcm9jZXNzRGlzcGxh
eU5hbWUgPSB0aGlzLT5tX3Byb2Nlc3NEaXNwbGF5TmFtZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAy
NTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNyw5IEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGNvcnNEaXNhYmxpbmdQYXR0ZXJucygpIGNvbnN0IHsg
cmV0dXJuIG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zOyB9CiAgICAgdm9pZCBzZXRDT1JTRGlzYWJs
aW5nUGF0dGVybnMoVmVjdG9yPFdURjo6U3RyaW5nPiYmIHBhdHRlcm5zKSB7IG1fY29yc0Rpc2Fi
bGluZ1BhdHRlcm5zID0gV1RGTW92ZShwYXR0ZXJucyk7IH0KKyAgICAKKyAgICBib29sIHVzZXJT
Y3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91c2Vy
U2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsgfQorICAgIHZvaWQgc2V0VXNlclNj
cmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24oYm9vbCB2YWx1ZSkgeyBtX3VzZXJTY3Jp
cHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uID0gdmFsdWU7IH0KIAogICAgIGJvb2wgY3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9jcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7IH0KICAgICB2b2lkIHNldENyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9jcm9zc09yaWdp
bkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgPSBlbmFibGVkOyB9CkBAIC0xODcsNiArMTkwLDcg
QEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8V1RGOjpTdHJpbmcsIFJlZjxXZWJLaXQ6OldlYlVS
TFNjaGVtZUhhbmRsZXI+PiBtX3VybFNjaGVtZUhhbmRsZXJzOwogICAgIFZlY3RvcjxXVEY6OlN0
cmluZz4gbV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7CisgICAgYm9vbCBtX3VzZXJTY3JpcHRzU2hv
dWxkV2FpdFVudGlsTm90aWZpY2F0aW9uIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9jcm9zc09yaWdp
bkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgeyB0cnVlIH07CiAgICAgV1RGOjpTdHJpbmcgbV9w
cm9jZXNzRGlzcGxheU5hbWU7CiAgICAgV2ViS2l0OjpXZWJWaWV3Q2F0ZWdvcnkgbV93ZWJWaWV3
Q2F0ZWdvcnkgeyBXZWJLaXQ6OldlYlZpZXdDYXRlZ29yeTo6QXBwQm91bmREb21haW4gfTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuaAkocmV2aXNp
b24gMjU5MzA2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTUgKzM2LDE2IEBAIGNsYXNzIFVzZXJTY3JpcHQgZmlu
YWwgOiBwdWJsaWMgT2JqZWN0SW0KIHB1YmxpYzoKICAgICBzdGF0aWMgV1RGOjpVUkwgZ2VuZXJh
dGVVbmlxdWVVUkwoKTsKIAotICAgIHN0YXRpYyBSZWY8VXNlclNjcmlwdD4gY3JlYXRlKFdlYkNv
cmU6OlVzZXJTY3JpcHQgdXNlclNjcmlwdCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQorICAg
IHN0YXRpYyBSZWY8VXNlclNjcmlwdD4gY3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQmJiB1c2Vy
U2NyaXB0LCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBVc2VyU2NyaXB0KFdURk1vdmUodXNlclNjcmlwdCksIHdvcmxkKSk7CiAg
ICAgfQogCiAgICAgVXNlclNjcmlwdChXZWJDb3JlOjpVc2VyU2NyaXB0LCBBUEk6OkNvbnRlbnRX
b3JsZCYpOwogCisgICAgV2ViQ29yZTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCgpIHsgcmV0dXJu
IG1fdXNlclNjcmlwdDsgfQogICAgIGNvbnN0IFdlYkNvcmU6OlVzZXJTY3JpcHQmIHVzZXJTY3Jp
cHQoKSBjb25zdCB7IHJldHVybiBtX3VzZXJTY3JpcHQ7IH0KLSAgICAKKwogICAgIENvbnRlbnRX
b3JsZCYgY29udGVudFdvcmxkKCkgeyByZXR1cm4gbV93b3JsZDsgfQogICAgIGNvbnN0IENvbnRl
bnRXb3JsZCYgY29udGVudFdvcmxkKCkgY29uc3QgeyByZXR1cm4gbV93b3JsZDsgfQogICAgIApJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcAko
cmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
R3JvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgV0tQYWdlR3Jv
dXBBZGRVc2VyU2NyaXB0KFdLUGFnZUdyb3UKICAgICBhdXRvIGJsYWNrbGlzdCA9IHRvSW1wbChi
bGFja2xpc3RlZFVSTFBhdHRlcm5zKTsKICAgICAKICAgICBhdXRvIHVybCA9IGJhc2VVUkxTdHJp
bmcuaXNFbXB0eSgpID8gYWJvdXRCbGFua1VSTCgpIDogIFVSTChVUkwoKSwgYmFzZVVSTFN0cmlu
Zyk7Ci0gICAgUmVmPEFQSTo6VXNlclNjcmlwdD4gdXNlclNjcmlwdCA9IEFQSTo6VXNlclNjcmlw
dDo6Y3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUo
dXJsKSwgd2hpdGVsaXN0ID8gd2hpdGVsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9yPFN0
cmluZz4oKSwgYmxhY2tsaXN0ID8gYmxhY2tsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9y
PFN0cmluZz4oKSwgdG9Vc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgdG9V
c2VyQ29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKSB9LCBBUEk6OkNvbnRlbnRX
b3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKKyAgICBSZWY8QVBJOjpVc2VyU2NyaXB0PiB1c2Vy
U2NyaXB0ID0gQVBJOjpVc2VyU2NyaXB0OjpjcmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdU
Rk1vdmUoc291cmNlKSwgV1RGTW92ZSh1cmwpLCB3aGl0ZWxpc3QgPyB3aGl0ZWxpc3QtPnRvU3Ry
aW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBibGFja2xpc3QgPyBibGFja2xpc3QtPnRv
U3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCB0b1VzZXJTY3JpcHRJbmplY3Rpb25U
aW1lKGluamVjdGlvblRpbWUpLCB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRG
cmFtZXMpLCBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9
LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKICAgICB0b0ltcGwocGFn
ZUdyb3VwUmVmKS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCh1c2VyU2Ny
aXB0LmdldCgpLCBJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHk6Ok5vKTsKIH0KIApJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyU2NyaXB0UmVmLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJTY3JpcHRSZWYuY3Bw
CShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Vz
ZXJTY3JpcHRSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIFdLVHlwZUlE
IFdLVXNlclNjcmlwdEdldFR5cGVJRCgpCiAKIFdLVXNlclNjcmlwdFJlZiBXS1VzZXJTY3JpcHRD
cmVhdGVXaXRoU291cmNlKFdLU3RyaW5nUmVmIHNvdXJjZVJlZiwgX1dLVXNlclNjcmlwdEluamVj
dGlvblRpbWUgaW5qZWN0aW9uVGltZSwgYm9vbCBmb3JNYWluRnJhbWVPbmx5KQogewotICAgIHJl
dHVybiB0b0FQSSgmQVBJOjpVc2VyU2NyaXB0OjpjcmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB7
IHRvV1RGU3RyaW5nKHNvdXJjZVJlZiksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVV
UkwoKSwgeyB9LCB7IH0sIHRvVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSks
IGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNv
cmU6OkluamVjdEluQWxsRnJhbWVzIH0sIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdv
cmxkKCkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZBUEk6OlVzZXJTY3JpcHQ6OmNy
ZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHsgdG9XVEZTdHJpbmcoc291cmNlUmVmKSwgQVBJOjpV
c2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCB7IH0sIHsgfSwgdG9Vc2VyU2NyaXB0SW5q
ZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6Oldh
aXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Ok5vIH0sIEFQSTo6Q29udGVudFdvcmxk
OjpwYWdlQ29udGVudFdvcmxkKCkpLmxlYWtSZWYoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLVXNl
clNjcmlwdENvcHlTb3VyY2UoV0tVc2VyU2NyaXB0UmVmIHVzZXJTY3JpcHRSZWYpCkBAIC01Myw1
ICs1Myw1IEBAIF9XS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lIFdLVXNlclNjcmlwdEcKIAogYm9v
bCBXS1VzZXJTY3JpcHRHZXRNYWluRnJhbWVPbmx5KFdLVXNlclNjcmlwdFJlZiB1c2VyU2NyaXB0
UmVmKQogewotICAgIHJldHVybiB0b0ltcGwodXNlclNjcmlwdFJlZiktPnVzZXJTY3JpcHQoKS5p
bmplY3RlZEZyYW1lcygpID09IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5OworICAgIHJl
dHVybiB0b0ltcGwodXNlclNjcmlwdFJlZiktPnVzZXJTY3JpcHQoKS5pbmplY3RlZEZyYW1lcygp
ID09IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVP
bmx5OwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNj
cmlwdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tVc2VyU2NyaXB0Lm1tCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICsz
NSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNvdXJjZTooTlNTdHJpbmcKICAgICBpZiAo
IShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIEFQSTo6
T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3Jl
OjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgQVBJOjpVc2VyU2NyaXB0OjpnZW5l
cmF0ZVVuaXF1ZVVSTCgpLCB7IH0sIHsgfSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0
aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVj
dEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgfSwgQVBJOjpDb250
ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVj
dEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBX
VEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCks
IHsgfSwgeyB9LCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlv
blRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJl
Zm9yZUluamVjdGluZzo6Tm8gfSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQo
KSk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTU5LDcgKzU5LDcgQEAgLSAoV0tVc2VyU2Ny
aXB0SW5qZWN0aW9uVGltZSlpbmplY3Rpb25UaQogCiAtIChCT09MKWlzRm9yTWFpbkZyYW1lT25s
eQogewotICAgIHJldHVybiBfdXNlclNjcmlwdC0+dXNlclNjcmlwdCgpLmluamVjdGVkRnJhbWVz
KCkgPT0gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHk7CisgICAgcmV0dXJuIF91c2VyU2Ny
aXB0LT51c2VyU2NyaXB0KCkuaW5qZWN0ZWRGcmFtZXMoKSA9PSBXZWJDb3JlOjpVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seTsKIH0KIAogLSAoaWQpY29weVdp
dGhab25lOihOU1pvbmUgKil6b25lCkBAIC04NCw3ICs4NCw3IEBAIC0gKGluc3RhbmNldHlwZSlf
aW5pdFdpdGhTb3VyY2U6KE5TU3RyaW4KICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBw
ZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJp
bmcoc291cmNlKSwgQVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBBUEk6OnRv
U3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5
QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rp
b25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5
IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgfSwgKnVzZXJDb250ZW50V29ybGQtPl9jb250
ZW50V29ybGQtPl9jb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldy
YXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpT
dHJpbmcoc291cmNlKSwgQVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBBUEk6
OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVn
YWN5QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmpl
Y3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRp
b25CZWZvcmVJbmplY3Rpbmc6Ok5vIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVudFdvcmxk
LT5fY29udGVudFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtOTQsNyArOTQsNyBA
QCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluCiAgICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVj
dDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNl
clNjcmlwdCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIFVSTChhc3NvY2lhdGVkVVJMKSwgQVBJOjp0
b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2Fj
eUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0
aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25s
eSA6IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29u
dGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5X
cmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6
U3RyaW5nKHNvdXJjZSksIFVSTChhc3NvY2lhdGVkVVJMKSwgQVBJOjp0b1N0cmluZ1ZlY3Rvcihs
ZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIEFQ
STo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1h
aW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJ
blRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVj
dEluQWxsRnJhbWVzLCBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5n
OjpObyB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7
CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTExMCw3ICsxMTAsNyBAQCAtIChpbnN0YW5jZXR5
cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5X
cmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6
U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgQVBJ
Ojp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxl
Z2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5q
ZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1l
T25seSA6IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sICpjb250ZW50V29ybGQtPl9jb250
ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2Vy
U2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwg
QVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBBUEk6OnRvU3RyaW5nVmVjdG9y
KGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwg
QVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9y
TWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVj
dEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5q
ZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rp
bmc6Ok5vIH0sICpjb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogCiAgICAgcmV0dXJuIHNl
bGY7CiB9CkBAIC0xMjAsNyArMTIwLDE3IEBAIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhTb3Vy
Y2U6KE5TU3RyaW4KICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2Vy
U2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwg
VVJMKGFzc29jaWF0ZWRVUkwpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCks
IEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdl
YkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMg
fSwgKmNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0
cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQg
eyBXVEY6OlN0cmluZyhzb3VyY2UpLCBVUkwoYXNzb2NpYXRlZFVSTCksIEFQSTo6dG9TdHJpbmdW
ZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xp
c3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUp
LCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6
SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
OjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUlu
amVjdGluZzo6Tm8gfSwgKmNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CisKKyAgICByZXR1
cm4gc2VsZjsKK30KKworLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aFNvdXJjZTooTlNTdHJpbmcg
Kilzb3VyY2UgaW5qZWN0aW9uVGltZTooV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSlpbmplY3Rp
b25UaW1lIGZvck1haW5GcmFtZU9ubHk6KEJPT0wpZm9yTWFpbkZyYW1lT25seSBsZWdhY3lXaGl0
ZWxpc3Q6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilsZWdhY3lXaGl0ZWxpc3QgbGVnYWN5QmxhY2ts
aXN0OihOU0FycmF5PE5TU3RyaW5nICo+ICopbGVnYWN5QmxhY2tsaXN0IGFzc29jaWF0ZWRVUkw6
KE5TVVJMICopYXNzb2NpYXRlZFVSTCBjb250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29u
dGVudFdvcmxkIHdhaXRGb3JOb3RpZmljYXRpb246KEJPT0wpd2FpdEZvck5vdGlmaWNhdGlvbgor
eworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOwor
CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNl
bGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBVUkwoYXNzb2Np
YXRlZFVSTCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0
cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmpl
Y3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNl
ckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpV
c2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgd2FpdEZvck5vdGlm
aWNhdGlvbj8gV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6WWVz
IDogV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6Tm8gfSwgKmNv
bnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHRJbnRlcm5hbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJT
Y3JpcHRJbnRlcm5hbC5oCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAt
NDEsMjMgKzQxLDIxIEBAIGlubGluZSBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSAK
IHsKICAgICBzd2l0Y2ggKGluamVjdGlvblRpbWUpIHsKICAgICBjYXNlIFdLVXNlclNjcmlwdElu
amVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQ6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpJbmpl
Y3RBdERvY3VtZW50U3RhcnQ7Ci0KKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lOjpEb2N1bWVudFN0YXJ0OwogICAgIGNhc2UgV0tVc2VyU2NyaXB0SW5qZWN0
aW9uVGltZUF0RG9jdW1lbnRFbmQ6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpJbmplY3RBdERv
Y3VtZW50RW5kOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRp
bWU6OkRvY3VtZW50RW5kOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50RW5kOworICAgIHJldHVybiBXZWJDb3Jl
OjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQ7CiB9CiAKIGlubGluZSBXS1Vz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lIHRvV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShXZWJDb3Jl
OjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lKQogewogICAgIHN3aXRjaCAo
aW5qZWN0aW9uVGltZSkgewotICAgIGNhc2UgV2ViQ29yZTo6SW5qZWN0QXREb2N1bWVudFN0YXJ0
OgorICAgIGNhc2UgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50U3Rh
cnQ6CiAgICAgICAgIHJldHVybiBXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0
YXJ0OwotCi0gICAgY2FzZSBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50RW5kOgorICAgIGNhc2Ug
V2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50RW5kOgogICAgICAgICBy
ZXR1cm4gV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRFbmQ7CiAgICAgfQogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0UHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Vz
ZXJTY3JpcHRQcml2YXRlLmgJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHRQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDYgKzM4LDggQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIC0gKGluc3RhbmNldHlwZSlf
aW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGluamVjdGlvblRpbWU6KFdLVXNlclNj
cmlwdEluamVjdGlvblRpbWUpaW5qZWN0aW9uVGltZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZv
ck1haW5GcmFtZU9ubHkgbGVnYWN5V2hpdGVsaXN0OihOU0FycmF5PE5TU3RyaW5nICo+ICopbGVn
YWN5V2hpdGVsaXN0IGxlZ2FjeUJsYWNrbGlzdDooTlNBcnJheTxOU1N0cmluZyAqPiAqKWxlZ2Fj
eUJsYWNrbGlzdCBjb250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtIChp
bnN0YW5jZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25U
aW1lOihXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKWluamVjdGlvblRpbWUgZm9yTWFpbkZyYW1l
T25seTooQk9PTClmb3JNYWluRnJhbWVPbmx5IGxlZ2FjeVdoaXRlbGlzdDooTlNBcnJheTxOU1N0
cmluZyAqPiAqKWxlZ2FjeVdoaXRlbGlzdCBsZWdhY3lCbGFja2xpc3Q6KE5TQXJyYXk8TlNTdHJp
bmcgKj4gKilsZWdhY3lCbGFja2xpc3QgYXNzb2NpYXRlZFVSTDooTlNVUkwgKilhc3NvY2lhdGVk
VVJMIGNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLSAoaW5zdGFu
Y2V0eXBlKV9pbml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgaW5qZWN0aW9uVGltZToo
V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSlpbmplY3Rpb25UaW1lIGZvck1haW5GcmFtZU9ubHk6
KEJPT0wpZm9yTWFpbkZyYW1lT25seSBsZWdhY3lXaGl0ZWxpc3Q6KE5TQXJyYXk8TlNTdHJpbmcg
Kj4gKilsZWdhY3lXaGl0ZWxpc3QgbGVnYWN5QmxhY2tsaXN0OihOU0FycmF5PE5TU3RyaW5nICo+
ICopbGVnYWN5QmxhY2tsaXN0IGFzc29jaWF0ZWRVUkw6KE5TVVJMICopYXNzb2NpYXRlZFVSTCBj
b250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIHdhaXRGb3JOb3RpZmlj
YXRpb246KEJPT0wpd2FpdEZvck5vdGlmaWNhdGlvbiBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIF9XS1VzZXJDb250ZW50V29ybGQgKl91c2VyQ29udGVudFdvcmxkIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTIpLCBpb3MoMTAuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBXS0NvbnRlbnRXb3JsZCAqX2NvbnRlbnRXb3JsZCBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDI1OTMwNykK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtp
bmcgY29weSkKQEAgLTIzMjMsNiArMjMyMywxMSBAQCAtICh2b2lkKV91cGRhdGVXZWJwYWdlUHJl
ZmVyZW5jZXM6KFdLV2ViCiAgICAgX3BhZ2UtPnVwZGF0ZVdlYnNpdGVQb2xpY2llcyhXVEZNb3Zl
KGRhdGEpKTsKIH0KIAorLSAodm9pZClfbm90aWZ5VXNlclNjcmlwdHMKK3sKKyAgICBfcGFnZS0+
bm90aWZ5VXNlclNjcmlwdHMoKTsKK30KKwogLSAoQk9PTClfYWxsb3dzUmVtb3RlSW5zcGVjdGlv
bgogewogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24ubW0JKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MTMsNiAr
OTEzLDE2IEBAIC0gKHZvaWQpX3NldENPUlNEaXNhYmxpbmdQYXR0ZXJuczooTlNBcnIKICAgICBf
cGFnZUNvbmZpZ3VyYXRpb24tPnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhXVEZNb3ZlKHZlY3Rv
cikpOwogfQogCistIChCT09MKV91c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlv
bgoreworICAgIHJldHVybiBfcGFnZUNvbmZpZ3VyYXRpb24tPnVzZXJTY3JpcHRzU2hvdWxkV2Fp
dFVudGlsTm90aWZpY2F0aW9uKCk7Cit9CisKKy0gKHZvaWQpX3NldFVzZXJTY3JpcHRzU2hvdWxk
V2FpdFVudGlsTm90aWZpY2F0aW9uOihCT09MKXZhbHVlCit7CisgICAgX3BhZ2VDb25maWd1cmF0
aW9uLT5zZXRVc2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbih2YWx1ZSk7Cit9
CisKIC0gKHZvaWQpX3NldENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDooQk9P
TCllbmFibGVkCiB7CiAgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRDcm9zc09yaWdpbkFjY2Vz
c0NvbnRyb2xDaGVja0VuYWJsZWQoZW5hYmxlZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJh
dGlvblByaXZhdGUuaAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg0LDYgKzg0LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIF9XS1dlYlZp
ZXdDYQogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLV2Vic2l0ZURhdGFTdG9y
ZSAqX3dlYnNpdGVEYXRhU3RvcmVJZkV4aXN0cyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNl
dHRlcj1fc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zOikgTlNBcnJheTxOU1N0cmluZyAqPiAqX2Nv
cnNEaXNhYmxpbmdQYXR0ZXJucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0VXNlclNj
cmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb246KSBCT09MIF91c2VyU2NyaXB0c1Nob3Vs
ZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0Q3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOikgQk9PTCBfY3Jvc3NPcmlnaW5BY2Nl
c3NDb250cm9sQ2hlY2tFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgJ
KHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBAQCBmb3Ig
dGhpcyBwcm9wZXJ0eS4KIAogLSAodm9pZClfdXBkYXRlV2Vic2l0ZVBvbGljaWVzOihfV0tXZWJz
aXRlUG9saWNpZXMgKil3ZWJzaXRlUG9saWNpZXMgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBM
QUNFTUVOVCgiLV91cGRhdGVXZWJwYWdlUHJlZmVyZW5jZXM6IiwgbWFjb3MoMTAuMTMsIFdLX01B
Q19UQkEpLCBpb3MoMTEuMywgV0tfSU9TX1RCQSkpOwogLSAodm9pZClfdXBkYXRlV2VicGFnZVBy
ZWZlcmVuY2VzOihXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKXdlYnBhZ2VQcmVmZXJlbmNlcyBXS19B
UElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9p
ZClfbm90aWZ5VXNlclNjcmlwdHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIAogLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVz
ZXJHZXN0dXJlOihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOwogLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0
OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgaW5GcmFtZTooV0tGcmFtZUluZm8gKilmcmFt
ZSBpbkNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICogZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVy
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Vz
ZXJTdHlsZVNoZWV0Lm1tCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDcgKzQ0LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZwogICAg
IC8vIEZJWE1FOiBJbiB0aGUgQVBJIHRlc3QsIHdlIGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwg
YmVsb3cgYmVmb3JlIHRoZSBBUEk6Ok9iamVjdCBjb25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4u
IHdoZXJlIHNob3VsZCB0aGlzIHJlYWxseSBiZT8KICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJL
aXQyKCk7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0
eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291
cmNlKSwgQVBJOjpVc2VyU3R5bGVTaGVldDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgeyB9LCB7IH0s
IGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNv
cmU6OkluamVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgQVBJ
OjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgQVBJOjpPYmplY3Q6OmNv
bnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2Vy
U3R5bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclN0eWxlU2hlZXQ6Omdl
bmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgeyB9LCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3Jl
OjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6
VXNlclN0eWxlVXNlckxldmVsIH0sIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxk
KCkpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC01OCw3ICs1OCw3IEBAIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aFNvdXJjZTooTlNTdHJpbmcKICAgICAvLyBGSVhNRTogSW4gdGhlIEFQSSB0
ZXN0LCB3ZSBjYW4gdXNlIGdlbmVyYXRlVW5pcXVlVVJMIGJlbG93IGJlZm9yZSB0aGUgQVBJOjpP
YmplY3QgY29uc3RydWN0b3IgaGFzIGRvbmUgdGhpcy4uLiB3aGVyZSBzaG91bGQgdGhpcyByZWFs
bHkgYmU/CiAgICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0MigpOwogCi0gICAgQVBJOjpPYmpl
Y3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3Jl
OjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclN0eWxlU2hl
ZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgIHsgfSwgZm9yTWFpbkZyYW1lT25seSA/IFdl
YkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMs
IFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCwgW3dlYlZpZXcgX3BhZ2VdLT53ZWJQYWdlSUQo
KSB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7Cisg
ICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0Pihz
ZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6
VXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgIHsgfSwgZm9yTWFpbkZy
YW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9w
RnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5B
bGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCwgW3dlYlZpZXcgX3BhZ2VdLT53
ZWJQYWdlSUQoKSB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRX
b3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTcxLDcgKzcxLDcgQEAgLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZwogICAgIC8vIEZJWE1FOiBJbiB0aGUgQVBJ
IHRlc3QsIHdlIGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwgYmVsb3cgYmVmb3JlIHRoZSBBUEk6
Ok9iamVjdCBjb25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4uIHdoZXJlIHNob3VsZCB0aGlzIHJl
YWxseSBiZT8KICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBBUEk6Ok9i
amVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdlYkNv
cmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgQVBJOjpVc2VyU3R5bGVT
aGVldDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0
ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIGZvck1haW5GcmFt
ZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OkluamVjdElu
QWxsRnJhbWVzLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgKnVzZXJDb250ZW50V29y
bGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25z
dHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0
eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5l
cmF0ZVVuaXF1ZVVSTCgpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQ
STo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdl
YkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDog
V2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdl
YkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRX
b3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTg0LDcgKzg0
LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZwogICAgIC8vIEZJ
WE1FOiBJbiB0aGUgQVBJIHRlc3QsIHdlIGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwgYmVsb3cg
YmVmb3JlIHRoZSBBUEk6Ok9iamVjdCBjb25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4uIHdoZXJl
IHNob3VsZCB0aGlzIHJlYWxseSBiZT8KICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7
CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hl
ZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwg
eyAgVVJMKCksIFdURjo6U3RyaW5nKFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJp
bmddKSB9LCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJp
bmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6Oklu
amVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6
OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+
X2NvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6
OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3Ry
aW5nKHNvdXJjZSksIHsgIFVSTCgpLCBXVEY6OlN0cmluZyhbYmFzZVVSTCBfd2ViX29yaWdpbmFs
RGF0YUFzV1RGU3RyaW5nXSkgfSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3Qp
LCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIGZvck1haW5GcmFtZU9ubHkg
PyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25s
eSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVz
LCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgKnVzZXJDb250ZW50V29ybGQtPl9jb250
ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0xMDks
NyArMTA5LDcgQEAgLSAoTlNVUkwgKiliYXNlVVJMCiAKIC0gKEJPT0wpaXNGb3JNYWluRnJhbWVP
bmx5CiB7Ci0gICAgcmV0dXJuIF91c2VyU3R5bGVTaGVldC0+dXNlclN0eWxlU2hlZXQoKS5pbmpl
Y3RlZEZyYW1lcygpID09IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5OworICAgIHJldHVy
biBfdXNlclN0eWxlU2hlZXQtPnVzZXJTdHlsZVNoZWV0KCkuaW5qZWN0ZWRGcmFtZXMoKSA9PSBX
ZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seTsK
IH0KIAogLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnQuY3Bw
CShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRVc2VyQ29udGVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEyICs1MCwxMiBAQCBz
dGF0aWMgaW5saW5lIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgCiB7CiAgICAgc3dpdGNoIChp
bmplY3RlZEZyYW1lcykgewogICAgIGNhc2UgV0VCS0lUX1VTRVJfQ09OVEVOVF9JTkpFQ1RfVE9Q
X0ZSQU1FOgotICAgICAgICByZXR1cm4gSW5qZWN0SW5Ub3BGcmFtZU9ubHk7CisgICAgICAgIHJl
dHVybiBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seTsKICAg
ICBjYXNlIFdFQktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX0FMTF9GUkFNRVM6Ci0gICAgICAgIHJl
dHVybiBJbmplY3RJbkFsbEZyYW1lczsKKyAgICAgICAgcmV0dXJuIFVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gSW5qZWN0SW5BbGxGcmFtZXM7CisgICAg
ICAgIHJldHVybiBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lczsK
ICAgICB9CiB9CiAKQEAgLTc2LDEyICs3NiwxMiBAQCBzdGF0aWMgaW5saW5lIFVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lIHRvCiB7CiAgICAgc3dpdGNoIChpbmplY3Rpb25UaW1lKSB7CiAgICAgY2Fz
ZSBXRUJLSVRfVVNFUl9TQ1JJUFRfSU5KRUNUX0FUX0RPQ1VNRU5UX1NUQVJUOgotICAgICAgICBy
ZXR1cm4gSW5qZWN0QXREb2N1bWVudFN0YXJ0OworICAgICAgICByZXR1cm4gVXNlclNjcmlwdElu
amVjdGlvblRpbWU6OkRvY3VtZW50U3RhcnQ7CiAgICAgY2FzZSBXRUJLSVRfVVNFUl9TQ1JJUFRf
SU5KRUNUX0FUX0RPQ1VNRU5UX0VORDoKLSAgICAgICAgcmV0dXJuIEluamVjdEF0RG9jdW1lbnRF
bmQ7CisgICAgICAgIHJldHVybiBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQ7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJl
dHVybiBJbmplY3RBdERvY3VtZW50U3RhcnQ7CisgICAgICAgIHJldHVybiBVc2VyU2NyaXB0SW5q
ZWN0aW9uVGltZTo6RG9jdW1lbnRTdGFydDsKICAgICB9CiB9CiAKQEAgLTIxNCw3ICsyMTQsNyBA
QCBzdHJ1Y3QgX1dlYktpdFVzZXJTY3JpcHQgewogICAgICAgICAgICAgU3RyaW5nOjpmcm9tVVRG
OChzb3VyY2UpLCBVUkwgeyB9LAogICAgICAgICAgICAgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0
KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwKICAgICAgICAgICAgIHRvVXNlclNjcmlwdElu
amVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksCi0gICAgICAgICAgICB0b1VzZXJDb250ZW50SW5q
ZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMpIH0sIHdvcmxkKSkpCisgICAgICAgICAgICB0b1Vz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMpLCBXZWJDb3JlOjpXYWl0Rm9y
Tm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9LCB3b3JsZCkpKQogICAgICAgICAsIHJl
ZmVyZW5jZUNvdW50KDEpCiAgICAgewogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzkyLDcgKzM5Miw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRV
c2VyU2MKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGF1dG8mIG1haW5G
cmFtZSA9IHBhZ2UubWFpbkZyYW1lKCk7Ci0gICAgICAgICAgICBpZiAodXNlclNjcmlwdC5pbmpl
Y3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5KSB7CisgICAgICAgICAgICBpZiAo
dXNlclNjcmlwdC5pbmplY3RlZEZyYW1lcygpID09IFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6
OkluamVjdEluVG9wRnJhbWVPbmx5KSB7CiAgICAgICAgICAgICAgICAgbWFpbkZyYW1lLmluamVj
dFVzZXJTY3JpcHRJbW1lZGlhdGVseSh3b3JsZC5jb3JlV29ybGQoKSwgdXNlclNjcmlwdCk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI1OTMyNCkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MjksNiArNTI5LDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBw
YWdlSUQsIAogI2VuZGlmCiAKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jb3JzRGlzYWJsaW5nUGF0
dGVybnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMuY29yc0Rpc2FibGluZ1BhdHRlcm5zKTsKKyAgICBw
YWdlQ29uZmlndXJhdGlvbi51c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiA9
IHBhcmFtZXRlcnMudXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb247CiAgICAg
aWYgKCFwYXJhbWV0ZXJzLmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCkKICAg
ICAgICAgQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlcjo6c2luZ2xldG9uKCku
c2V0Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKGZhbHNlKTsKIApAQCAtNjI3
Nyw2ICs2Mjc4LDE0IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlV2Vic2l0ZVBvbGljaWVzKFdlYnMK
ICNlbmRpZgogfQogCit2b2lkIFdlYlBhZ2U6Om5vdGlmeVVzZXJTY3JpcHRzKCkKK3sKKyAgICBp
ZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYWdlLT5ub3RpZnlUb0luamVj
dFVzZXJTY3JpcHRzKCk7Cit9CisKIHVuc2lnbmVkIFdlYlBhZ2U6OmV4dGVuZEluY3JlbWVudGFs
UmVuZGVyaW5nU3VwcHJlc3Npb24oKQogewogICAgIHVuc2lnbmVkIHRva2VuID0gbV9tYXhpbXVt
UmVuZGVyaW5nU3VwcHJlc3Npb25Ub2tlbiArIDE7CkBAIC02NDI5LDcgKzY0MzgsNyBAQCB2b2lk
IFdlYlBhZ2U6OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoCiAKIHZvaWQgV2ViUGFnZTo6YWRk
VXNlclNjcmlwdChTdHJpbmcmJiBzb3VyY2UsIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmIHdv
cmxkLCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBX
ZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lKQogewotICAgIFdl
YkNvcmU6OlVzZXJTY3JpcHQgdXNlclNjcmlwdCB7IFdURk1vdmUoc291cmNlKSwgVVJMKGFib3V0
QmxhbmtVUkwoKSksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIGluamVjdGlv
blRpbWUsIGluamVjdGVkRnJhbWVzIH07CisgICAgV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2Ny
aXB0IHsgV1RGTW92ZShzb3VyY2UpLCBVUkwoYWJvdXRCbGFua1VSTCgpKSwgVmVjdG9yPFN0cmlu
Zz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMsIFdl
YkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Ok5vIH07CiAKICAgICBt
X3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclNjcmlwdCh3b3JsZCwgV1RGTW92ZSh1c2Vy
U2NyaXB0KSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2MTYsNiArMTYxNiw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCByZXBvcnRVc2VkRmVhdHVyZXMoKTsKIAogICAgIHZvaWQgdXBkYXRlV2Vi
c2l0ZVBvbGljaWVzKFdlYnNpdGVQb2xpY2llc0RhdGEmJik7CisgICAgdm9pZCBub3RpZnlVc2Vy
U2NyaXB0cygpOwogCiAgICAgdm9pZCBjaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2VzJiYp
OwogICAgIHZvaWQgY2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNo
YW5nZXMmJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTE4Niw2ICsxODYsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06
dWluCiAgICAgRGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKHN0cnVjdCBXZWJDb3JlOjpCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyIGJhY2tGb3J3YXJkSXRlbUlEKQogCiAgICAgVXBkYXRlV2Vic2l0
ZVBvbGljaWVzKHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGEgd2Vic2l0ZVBvbGlj
aWVzKQorICAgIE5vdGlmeVVzZXJTY3JpcHRzKCkKICAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNp
b24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IHN0cnVjdCBXZWJLaXQ6OlBvbGljeURlY2lzaW9uIHBvbGljeURlY2lzaW9uKQogCiAgICAgQ29u
dGludWVXaWxsU3VibWl0Rm9ybShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWlu
dDY0X3QgbGlzdGVuZXJJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAzLTMxICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0byBtYWtlIFdLVXNl
clNjcmlwdHMgd2FpdCBmb3IgYSBub3RpZmljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTg0NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NjAzNDIyOTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2luamVjdE91dGxv
b2tRdWlya3NTY3JpcHRdKToKKwogMjAyMC0wMy0zMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcHJvdmlkZSBhIHdheSB0byBsb2cg
bWVzc2FnZXMgZnJvbSB0aGUgbmV0d29yayBwcm9jZXNzCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTEy
MjcsNyArMTIyNyw3IEBAIHN0YXRpYyBOU1N0cmluZyAqbGVha091dGxvb2tRdWlya3NVc2VyU2MK
IC0odm9pZClfaW5qZWN0T3V0bG9va1F1aXJrc1NjcmlwdAogewogICAgIHN0YXRpYyBOU1N0cmlu
ZyAqb3V0bG9va1F1aXJrc1NjcmlwdENvbnRlbnRzID0gbGVha091dGxvb2tRdWlya3NVc2VyU2Ny
aXB0Q29udGVudHMoKTsKLSAgICBfcHJpdmF0ZS0+Z3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxl
cigpLmFkZFVzZXJTY3JpcHQoKmNvcmUoW1dlYlNjcmlwdFdvcmxkIHdvcmxkXSksIG1ha2VVbmlx
dWU8V2ViQ29yZTo6VXNlclNjcmlwdD4ob3V0bG9va1F1aXJrc1NjcmlwdENvbnRlbnRzLCBVUkwo
KSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgV2ViQ29yZTo6SW5qZWN0QXRE
b2N1bWVudEVuZCwgV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMpKTsKKyAgICBfcHJpdmF0ZS0+
Z3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQoKmNvcmUoW1dlYlNj
cmlwdFdvcmxkIHdvcmxkXSksIG1ha2VVbmlxdWU8V2ViQ29yZTo6VXNlclNjcmlwdD4ob3V0bG9v
a1F1aXJrc1NjcmlwdENvbnRlbnRzLCBVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0
cmluZz4oKSwgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50RW5kLCBX
ZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2Vi
Q29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6Tm8pKTsKIAogfQogI2Vu
ZGlmCkBAIC00Njc2LDcgKzQ2NzYsNyBAQCArICh2b2lkKV9hZGRVc2VyU2NyaXB0VG9Hcm91cDoo
TlNTdHJpbmcgCiAgICAgaWYgKCF3b3JsZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byB1
c2VyU2NyaXB0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpVc2VyU2NyaXB0Pihzb3VyY2UsIHVybCwg
dG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5q
ZWN0aW9uVGltZSA9PSBXZWJJbmplY3RBdERvY3VtZW50U3RhcnQgPyBXZWJDb3JlOjpJbmplY3RB
dERvY3VtZW50U3RhcnQgOiBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50RW5kLCBpbmplY3RlZEZy
YW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVz
IDogV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkpOworICAgIGF1dG8gdXNlclNjcmlwdCA9
IG1ha2VVbmlxdWU8V2ViQ29yZTo6VXNlclNjcmlwdD4oc291cmNlLCB1cmwsIHRvU3RyaW5nVmVj
dG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGlvblRpbWUg
PT0gV2ViSW5qZWN0QXREb2N1bWVudFN0YXJ0ID8gV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlv
blRpbWU6OkRvY3VtZW50U3RhcnQgOiBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6
RG9jdW1lbnRFbmQsIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gV2Vi
Q29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMgOiBXZWJD
b3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSwgV2Vi
Q29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6Tm8pOwogICAgIHZpZXdH
cm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCgqY29yZSh3b3JsZCks
IFdURk1vdmUodXNlclNjcmlwdCkpOwogfQogCkBAIC00Njk5LDcgKzQ2OTksNyBAQCArICh2b2lk
KV9hZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6KE5TU3RyCiAgICAgaWYgKCF3b3JsZCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYXV0byBzdHlsZVNoZWV0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpV
c2VyU3R5bGVTaGVldD4oc291cmNlLCB1cmwsIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRv
U3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxs
RnJhbWVzID8gV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgOiBXZWJDb3JlOjpJbmplY3RJblRv
cEZyYW1lT25seSwgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsKTsKKyAgICBhdXRvIHN0eWxl
U2hlZXQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0Pihzb3VyY2UsIHVybCwg
dG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5q
ZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBXZWJDb3JlOjpVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcyA6IFdlYkNvcmU6OlVzZXJDb250ZW50
SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5LCBXZWJDb3JlOjpVc2VyU3R5bGVV
c2VyTGV2ZWwpOwogICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNl
clN0eWxlU2hlZXQoKmNvcmUod29ybGQpLCBXVEZNb3ZlKHN0eWxlU2hlZXQpLCBXZWJDb3JlOjpJ
bmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKIH0KIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjU5MzM2KQorKysgVG9vbHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDMtMzEgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQg
U1BJIHRvIG1ha2UgV0tVc2VyU2NyaXB0cyB3YWl0IGZvciBhIG5vdGlmaWNhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5ODQ1CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82MDM0MjI5OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNl
ckNvbnRlbnRDb250cm9sbGVyLm1tOgorICAgICAgICAoVEVTVCk6CisKIDIwMjAtMDMtMzEgIEth
dGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVxdWVz
dHMgZm9yIG1lc3NhZ2VIYW5kbGVycygpIGluIHRoZSBET01XaW5kb3cgc2hvdWxkIGJlIGlnbm9y
ZWQgZm9yIG5vbi1hcHAtYm91bmQgbmF2aWdhdGlvbnMKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250
cm9sbGVyLm1tCShyZXZpc2lvbiAyNTkzMDYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjgsMTAgKzI4LDEzIEBACiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAi
VGVzdC5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVz
dFVJRGVsZWdhdGUuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgPFdlYktp
dC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVXNlckNvbnRlbnRD
b250cm9sbGVyUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVXNlclNjcmlwdC5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLVXNlclNjcmlwdFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dl
YlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgog
I2ltcG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8
V2ViS2l0L19XS1VzZXJDb250ZW50V29ybGQuaD4KQEAgLTgxMSwzICs4MTQsMzAgQEAgVEVTVChX
S1VzZXJDb250ZW50Q29udHJvbGxlciwgSW5qZWN0VXNlcgogICAgIHdhaXRGb3JNZXNzYWdlcyg2
KTsKICAgICBjb21wYXJlTWVzc2FnZXMoeyJzdGFydCBhbGwiLCAic3RhcnQgYWxsIiwgImVuZCBt
YWluIiwgInN0YXJ0IGFsbCIsICJlbmQgbWFpbiIsICJzdGFydCBhbGwifSk7CiB9CisKK1RFU1Qo
V0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFVzZXJTY3JpcHROb3RpZmljYXRpb24pCit7CisgICAg
V0tVc2VyU2NyaXB0ICp3YWl0c0Zvck5vdGlmaWNhdGlvbiA9IFtbW1dLVXNlclNjcmlwdCBhbGxv
Y10gX2luaXRXaXRoU291cmNlOkAiYWxlcnQoJ3dhaXRlZCBmb3Igbm90aWZpY2F0aW9uJykiIGlu
amVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydCBmb3JN
YWluRnJhbWVPbmx5OllFUyBsZWdhY3lXaGl0ZWxpc3Q6W05TQXJyYXkgYXJyYXldIGxlZ2FjeUJs
YWNrbGlzdDpbTlNBcnJheSBhcnJheV0gYXNzb2NpYXRlZFVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAInRlc3Q6Ly8vc2NyaXB0Il0gY29udGVudFdvcmxkOltXS0NvbnRlbnRXb3JsZCBkZWZhdWx0
Q2xpZW50V29ybGRdIHdhaXRGb3JOb3RpZmljYXRpb246WUVTXSBhdXRvcmVsZWFzZV07CisgICAg
V0tVc2VyU2NyaXB0ICpkb2N1bWVudEVuZCA9IFtbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdp
dGhTb3VyY2U6QCJhbGVydCgnZG9jdW1lbnQgcGFyc2luZyBlbmRlZCcpIiBpbmplY3Rpb25UaW1l
OldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50RW5kIGZvck1haW5GcmFtZU9ubHk6
WUVTXSBhdXRvcmVsZWFzZV07CisKKyAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3MSA9IFtbVGVz
dFdLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBbd2ViVmlldzEuY29uZmlndXJhdGlv
bi51c2VyQ29udGVudENvbnRyb2xsZXIgYWRkVXNlclNjcmlwdDp3YWl0c0Zvck5vdGlmaWNhdGlv
bl07CisgICAgW3dlYlZpZXcxLmNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIGFk
ZFVzZXJTY3JpcHQ6ZG9jdW1lbnRFbmRdOworICAgIFRlc3RVSURlbGVnYXRlICpkZWxlZ2F0ZSA9
IFtbVGVzdFVJRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldzEuVUlEZWxl
Z2F0ZSA9IGRlbGVnYXRlOworICAgIFt3ZWJWaWV3MSBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBs
ZSJdOworICAgIEVYUEVDVF9XS19TVFJFUShbZGVsZWdhdGUgd2FpdEZvckFsZXJ0XSwgImRvY3Vt
ZW50IHBhcnNpbmcgZW5kZWQiKTsKKyAgICBbd2ViVmlldzEgX25vdGlmeVVzZXJTY3JpcHRzXTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoW2RlbGVnYXRlIHdhaXRGb3JBbGVydF0sICJ3YWl0ZWQgZm9y
IG5vdGlmaWNhdGlvbiIpOworCisgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJh
dGlvbiA9IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBF
WFBFQ1RfVFJVRShjb25maWd1cmF0aW9uLl91c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlm
aWNhdGlvbik7CisgICAgY29uZmlndXJhdGlvbi5fdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxO
b3RpZmljYXRpb24gPSBOTzsKKyAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3MiA9IFtbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07CisgICAgW3dlYlZpZXcy
LmNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6d2FpdHNG
b3JOb3RpZmljYXRpb25dOworICAgIFt3ZWJWaWV3Mi5jb25maWd1cmF0aW9uLnVzZXJDb250ZW50
Q29udHJvbGxlciBhZGRVc2VyU2NyaXB0OmRvY3VtZW50RW5kXTsKKyAgICB3ZWJWaWV3Mi5VSURl
bGVnYXRlID0gZGVsZWdhdGU7CisgICAgW3dlYlZpZXcyIGxvYWRUZXN0UGFnZU5hbWVkOkAic2lt
cGxlIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKFtkZWxlZ2F0ZSB3YWl0Rm9yQWxlcnRdLCAid2Fp
dGVkIGZvciBub3RpZmljYXRpb24iKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW2RlbGVnYXRlIHdh
aXRGb3JBbGVydF0sICJkb2N1bWVudCBwYXJzaW5nIGVuZGVkIik7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395173</attachid>
            <date>2020-04-01 09:11:06 -0700</date>
            <delta_ts>2020-04-01 10:24:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209845-20200401091105.patch</filename>
            <type>text/plain</type>
            <size>69021</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDIwLTAzLTMxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byBtYWtlIFdLVXNlclNjcmlwdHMgd2FpdCBmb3IgYSBub3RpZmljYXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTg0NQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjAzNDIyOTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlcmUncyBhbHNvIFNQSSBvbiBXS1dlYlZpZXcgdG8gcHJvdmlkZSB0
aGlzIG5vdGlmaWNhdGlvbiwgYW5kIG9uIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gdG8gc3RhcnQg
b3V0IHdpdGggdGhpcyBub3RpZmljYXRpb24uCisKKyAgICAgICAgKiBkb20vRXh0ZW5zaW9uU3R5
bGVTaGVldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uU3R5bGVTaGVldHM6OnVw
ZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0ltYWdl
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9j
dW1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIGh0bWwvTWVkaWFEb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYURvY3VtZW50UGFyc2VyOjpjcmVhdGVEb2N1bWVudFN0cnVjdHVy
ZSk6CisgICAgICAgICogaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5Eb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUpOgorICAgICAg
ICAqIGh0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpkaXNwYXRjaERvY3VtZW50RWxlbWVudEF2YWlsYWJs
ZUlmTmVlZGVkKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmZpbmlzaGVkUGFyc2luZyk6CisgICAgICAgICogcGFnZS9G
cmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5qZWN0VXNlclNjcmlwdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSk6Cisg
ICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1fZGV2aWNlT3JpZW50
YXRpb25VcGRhdGVQcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpub3RpZnlUb0lu
amVjdFVzZXJTY3JpcHRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFkZFVzZXJTY3JpcHRB
d2FpdGluZ05vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppbmplY3RVc2Vy
U3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZW1vdmVJbmplY3RlZFVzZXJT
dHlsZVNoZWV0KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6Omhhc0JlZW5Ob3RpZmllZFRvSW5qZWN0VXNlclNjcmlwdHMgY29uc3QpOgorICAgICAgICAq
IHBhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50VHlw
ZXMuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9Vc2VyU2NyaXB0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyU2NyaXB0OjpVc2VyU2NyaXB0KToKKyAgICAgICAgKFdl
YkNvcmU6OlVzZXJTY3JpcHQ6OndhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3RpbmcgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VXNlclNjcmlwdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlVzZXJTY3JpcHQ6OmRlY29kZSk6CisgICAgICAgICogcGFnZS9Vc2VyU2Ny
aXB0VHlwZXMuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9Vc2VyU3R5
bGVTaGVldC5oOgorICAgICAgICAoV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ6OlVzZXJTdHlsZVNo
ZWV0KToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6c3RhcnRFbGVtZW50TnMpOgor
CiAyMDIwLTAzLTMxICBQaW5raSBHeWFuY2hhbmRhbmkgIDxwZ3lhbmNoYW5kYW5pQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbnZhbGlkIG1lbW9yeSBhY2Nlc3MgQCBXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXh0ZW5z
aW9uU3R5bGVTaGVldHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FeHRl
bnNpb25TdHlsZVNoZWV0cy5jcHAJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw3ICsx
MzgsNyBAQCB2b2lkIEV4dGVuc2lvblN0eWxlU2hlZXRzOjp1cGRhdGVJbmplY3RlCiAgICAgICAg
IGlmICh1c2VyU3R5bGVTaGVldC5wYWdlSUQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICBpZiAodXNlclN0eWxlU2hlZXQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBJbmplY3RJblRvcEZy
YW1lT25seSAmJiBtX2RvY3VtZW50Lm93bmVyRWxlbWVudCgpKQorICAgICAgICBpZiAodXNlclN0
eWxlU2hlZXQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJ
bmplY3RJblRvcEZyYW1lT25seSAmJiBtX2RvY3VtZW50Lm93bmVyRWxlbWVudCgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRj
aGVzUGF0dGVybnMobV9kb2N1bWVudC51cmwoKSwgdXNlclN0eWxlU2hlZXQud2hpdGVsaXN0KCks
IHVzZXJTdHlsZVNoZWV0LmJsYWNrbGlzdCgpKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZURvY3VtZW50LmNwcAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZURvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDcgKzIyMSw3IEBAIHZvaWQg
SW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3QKICAgICBhcHBlbmRDaGlsZChyb290
RWxlbWVudCk7CiAgICAgcm9vdEVsZW1lbnQtPmluc2VydGVkQnlQYXJzZXIoKTsKIAotICAgIGZy
YW1lKCktPmluamVjdFVzZXJTY3JpcHRzKEluamVjdEF0RG9jdW1lbnRTdGFydCk7CisgICAgZnJh
bWUoKS0+aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50
U3RhcnQpOwogCiAgICAgLy8gV2UgbmVlZCBhIDxoZWFkPiBzbyB0aGF0IHRoZSBjYWxsIHRvIHNl
dFRpdGxlKCkgbGF0ZXIgb24gYWN0dWFsbHkgaGFzIGFuIDxoZWFkPiB0byBhcHBlbmQgdG8gPHRp
dGxlPiB0by4KICAgICBhdXRvIGhlYWQgPSBIVE1MSGVhZEVsZW1lbnQ6OmNyZWF0ZSgqdGhpcyk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAJKHJldmlzaW9uIDI1OTMw
NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBNZWRpYURvY3VtZW50UGFyc2VyOjpjcmVhdGVEb2N1
bWVudAogICAgIHJvb3RFbGVtZW50LT5pbnNlcnRlZEJ5UGFyc2VyKCk7CiAKICAgICBpZiAoZG9j
dW1lbnQuZnJhbWUoKSkKLSAgICAgICAgZG9jdW1lbnQuZnJhbWUoKS0+aW5qZWN0VXNlclNjcmlw
dHMoSW5qZWN0QXREb2N1bWVudFN0YXJ0KTsKKyAgICAgICAgZG9jdW1lbnQuZnJhbWUoKS0+aW5q
ZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50U3RhcnQpOwog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBhdXRvIGhlYWRFbGVtZW50ID0gSFRNTEhl
YWRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9Q
bHVnaW5Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9QbHVn
aW5Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
UGx1Z2luRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQg
UGx1Z2luRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3VtZW4KICAgICByb290RWxlbWVudC0+aW5z
ZXJ0ZWRCeVBhcnNlcigpOwogCiAgICAgaWYgKGRvY3VtZW50LmZyYW1lKCkpCi0gICAgICAgIGRv
Y3VtZW50LmZyYW1lKCktPmluamVjdFVzZXJTY3JpcHRzKEluamVjdEF0RG9jdW1lbnRTdGFydCk7
CisgICAgICAgIGRvY3VtZW50LmZyYW1lKCktPmluamVjdFVzZXJTY3JpcHRzKFVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lOjpEb2N1bWVudFN0YXJ0KTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgLy8gU2hvdWxkIG5vdCBiZSBhYmxlIHRvIHpvb20gaW50byBzdGFuZGFsb25lIHBsdWct
aW4gZG9jdW1lbnRzLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0
cnVjdGlvblNpdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6ZGlzcGF0Y2hE
b2N1bQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIo
bV9kb2N1bWVudC5mcmFtZSgpKSkKLSAgICAgICAgZnJhbWUtPmluamVjdFVzZXJTY3JpcHRzKElu
amVjdEF0RG9jdW1lbnRTdGFydCk7CisgICAgICAgIGZyYW1lLT5pbmplY3RVc2VyU2NyaXB0cyhV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRTdGFydCk7CiB9CiAKIHZvaWQgSFRNTENv
bnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxIdG1sU3RhcnRUYWdCZWZvcmVIVE1MKEF0b21pY0hU
TUxUb2tlbiYmIHRva2VuKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OTMsNyArNzkzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
ZmluaXNoZWRQYXJzaW5nKCkKIHsKICAgICBMT0coTG9hZGluZywgIldlYkNvcmVMb2FkaW5nICVz
OiBGaW5pc2hlZCBwYXJzaW5nIiwgbV9mcmFtZS50cmVlKCkudW5pcXVlTmFtZSgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgbV9mcmFtZS5pbmplY3RVc2VyU2NyaXB0cyhJbmplY3RB
dERvY3VtZW50RW5kKTsKKyAgICBtX2ZyYW1lLmluamVjdFVzZXJTY3JpcHRzKFVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lOjpEb2N1bWVudEVuZCk7CiAKICAgICBpZiAobV9zdGF0ZU1hY2hpbmUuY3Jl
YXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxOCw5ICs2MTgsMTQgQEAgdm9pZCBGcmFtZTo6
aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdAogICAgIGlmIChsb2FkZXIoKS5zdGF0ZU1hY2hp
bmUoKS5jcmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkgJiYgIXNldHRpbmdzKCkuc2hvdWxk
SW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3VtZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fcGFnZS0+dXNlckNvbnRlbnRQcm92aWRlcigpLmZvckVhY2hVc2VyU2NyaXB0
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluamVjdGlvblRpbWVdKERP
TVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVzZXJTY3JpcHQmIHNjcmlwdCkgewotICAgICAg
ICBpZiAoc2NyaXB0LmluamVjdGlvblRpbWUoKSA9PSBpbmplY3Rpb25UaW1lKQotICAgICAgICAg
ICAgaW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KHdvcmxkLCBzY3JpcHQpOworICAgIGJvb2wg
cGFnZVdhc05vdGlmaWVkID0gbV9wYWdlLT5oYXNCZWVuTm90aWZpZWRUb0luamVjdFVzZXJTY3Jp
cHRzKCk7CisgICAgbV9wYWdlLT51c2VyQ29udGVudFByb3ZpZGVyKCkuZm9yRWFjaFVzZXJTY3Jp
cHQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5qZWN0aW9uVGltZSwg
cGFnZVdhc05vdGlmaWVkXSAoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgVXNlclNjcmlw
dCYgc2NyaXB0KSB7CisgICAgICAgIGlmIChzY3JpcHQuaW5qZWN0aW9uVGltZSgpID09IGluamVj
dGlvblRpbWUpIHsKKyAgICAgICAgICAgIGlmIChzY3JpcHQud2FpdEZvck5vdGlmaWNhdGlvbkJl
Zm9yZUluamVjdGluZygpID09IFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Olll
cyAmJiAhcGFnZVdhc05vdGlmaWVkKQorICAgICAgICAgICAgICAgIG1fcGFnZS0+YWRkVXNlclNj
cmlwdEF3YWl0aW5nTm90aWZpY2F0aW9uKHdvcmxkLCBzY3JpcHQpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSh3b3JsZCwgc2Ny
aXB0KTsKKyAgICAgICAgfQogICAgIH0pOwogfQogCkBAIC02MzYsNyArNjQxLDcgQEAgdm9pZCBG
cmFtZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KAogICAgIGF1dG8qIGRvY3VtZW50ID0g
dGhpcy0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm47Ci0g
ICAgaWYgKHNjcmlwdC5pbmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5ICYm
ICFpc01haW5GcmFtZSgpKQorICAgIGlmIChzY3JpcHQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSAmJiAhaXNNYWluRnJh
bWUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpt
YXRjaGVzUGF0dGVybnMoZG9jdW1lbnQtPnVybCgpLCBzY3JpcHQud2hpdGVsaXN0KCksIHNjcmlw
dC5ibGFja2xpc3QoKSkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAko
cmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI0LDYgKzEyNCw3IEBACiAjaW5jbHVkZSAiVXNlckNvbnRlbnRQcm92aWRl
ci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgogI2luY2x1ZGUgIlVzZXJJ
bnB1dEJyaWRnZS5oIgorI2luY2x1ZGUgIlVzZXJTY3JpcHQuaCIKICNpbmNsdWRlICJVc2VyU3R5
bGVTaGVldC5oIgogI2luY2x1ZGUgIlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiVmlzaXRlZExpbmtTdGF0ZS5oIgpAQCAtMzM1LDYgKzMzNiw5IEBAIFBhZ2U6OlBhZ2UoUGFn
ZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICAgICAgICAgICAgIG1fY29yc0Rpc2FibGluZ1Bh
dHRlcm5zLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKHBhcnNlZFBhdHRlcm4pKTsKICAgICB9CiAg
ICAgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMuc2hyaW5rVG9GaXQoKTsKKyAgICAKKyAgICBpZiAo
IXBhZ2VDb25maWd1cmF0aW9uLnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9u
KQorICAgICAgICBtX2hhc0JlZW5Ob3RpZmllZFRvSW5qZWN0VXNlclNjcmlwdHMgPSB0cnVlOwog
fQogCiBQYWdlOjp+UGFnZSgpCkBAIC0yNDg5LDYgKzI0OTMsMjAgQEAgVXNlckNvbnRlbnRQcm92
aWRlciYgUGFnZTo6dXNlckNvbnRlbnRQcgogICAgIHJldHVybiBtX3VzZXJDb250ZW50UHJvdmlk
ZXI7CiB9CiAKK3ZvaWQgUGFnZTo6bm90aWZ5VG9JbmplY3RVc2VyU2NyaXB0cygpCit7CisgICAg
Zm9yIChhdXRvKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBt
X3VzZXJTY3JpcHRzQXdhaXRpbmdOb3RpZmljYXRpb24pCisgICAgICAgICAgICBmcmFtZS0+aW5q
ZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25kLmdldCgpKTsK
KyAgICB9CisgICAgbV91c2VyU2NyaXB0c0F3YWl0aW5nTm90aWZpY2F0aW9uLmNsZWFyKCk7Cit9
CisKK3ZvaWQgUGFnZTo6YWRkVXNlclNjcmlwdEF3YWl0aW5nTm90aWZpY2F0aW9uKERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVzZXJTY3JpcHQmIHNjcmlwdCkKK3sKKyAgICBtX3VzZXJT
Y3JpcHRzQXdhaXRpbmdOb3RpZmljYXRpb24uYXBwZW5kKHsgbWFrZVJlZih3b3JsZCksIG1ha2VV
bmlxdWVSZWY8VXNlclNjcmlwdD4oc2NyaXB0KSB9KTsKK30KKwogdm9pZCBQYWdlOjpzZXRVc2Vy
Q29udGVudFByb3ZpZGVyKFJlZjxVc2VyQ29udGVudFByb3ZpZGVyPiYmIHVzZXJDb250ZW50UHJv
dmlkZXIpCiB7CiAgICAgbV91c2VyQ29udGVudFByb3ZpZGVyLT5yZW1vdmVQYWdlKCp0aGlzKTsK
QEAgLTMwNzQsNyArMzA5Miw3IEBAIHZvaWQgUGFnZTo6aW5qZWN0VXNlclN0eWxlU2hlZXQoVXNl
clN0eWwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICh1c2VyU3R5bGVTaGVldC5p
bmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5KSB7CisgICAgaWYgKHVzZXJT
dHlsZVNoZWV0LmluamVjdGVkRnJhbWVzKCkgPT0gVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6
SW5qZWN0SW5Ub3BGcmFtZU9ubHkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9t
YWluRnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBkb2N1bWVudC0+ZXh0ZW5zaW9uU3R5
bGVTaGVldHMoKS5pbmplY3RQYWdlU3BlY2lmaWNVc2VyU3R5bGVTaGVldCh1c2VyU3R5bGVTaGVl
dCk7CiAgICAgfSBlbHNlIHsKQEAgLTMwOTMsNyArMzExMSw3IEBAIHZvaWQgUGFnZTo6cmVtb3Zl
SW5qZWN0ZWRVc2VyU3R5bGVTaGVldCgKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
ICh1c2VyU3R5bGVTaGVldC5pbmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5
KSB7CisgICAgaWYgKHVzZXJTdHlsZVNoZWV0LmluamVjdGVkRnJhbWVzKCkgPT0gVXNlckNvbnRl
bnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkpIHsKICAgICAgICAgaWYgKGF1
dG8qIGRvY3VtZW50ID0gbV9tYWluRnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBkb2N1
bWVudC0+ZXh0ZW5zaW9uU3R5bGVTaGVldHMoKS5yZW1vdmVQYWdlU3BlY2lmaWNVc2VyU3R5bGVT
aGVldCh1c2VyU3R5bGVTaGVldCk7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShy
ZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMTQwLDYgKzE0MCw3IEBAIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjsK
IGNsYXNzIFVzZXJDb250ZW50UHJvdmlkZXI7CiBjbGFzcyBVc2VyQ29udGVudFVSTFBhdHRlcm47
CiBjbGFzcyBVc2VySW5wdXRCcmlkZ2U7CitjbGFzcyBVc2VyU2NyaXB0OwogY2xhc3MgVXNlclN0
eWxlU2hlZXQ7CiBjbGFzcyBWYWxpZGF0aW9uTWVzc2FnZUNsaWVudDsKIGNsYXNzIFZpc2libGVT
ZWxlY3Rpb247CkBAIC03MjksNiArNzMwLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZEZp
cmVSZXNpemVFdmVudHMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZEZpcmVSZXNpemVFdmVudHM7
IH0KICAgICB2b2lkIHNldFNob3VsZEZpcmVSZXNpemVFdmVudHMoYm9vbCBzaG91bGRGaXJlUmVz
aXplRXZlbnRzKSB7IG1fc2hvdWxkRmlyZVJlc2l6ZUV2ZW50cyA9IHNob3VsZEZpcmVSZXNpemVF
dmVudHM7IH0KIAorICAgIGJvb2wgaGFzQmVlbk5vdGlmaWVkVG9JbmplY3RVc2VyU2NyaXB0cygp
IGNvbnN0IHsgcmV0dXJuIG1faGFzQmVlbk5vdGlmaWVkVG9JbmplY3RVc2VyU2NyaXB0czsgfQor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5VG9JbmplY3RVc2VyU2NyaXB0cygpOworICAg
IHZvaWQgYWRkVXNlclNjcmlwdEF3YWl0aW5nTm90aWZpY2F0aW9uKERPTVdyYXBwZXJXb3JsZCYs
IGNvbnN0IFVzZXJTY3JpcHQmKTsKKwogcHJpdmF0ZToKICAgICBzdHJ1Y3QgTmF2aWdhdGlvbiB7
CiAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbjsKQEAgLTEwMDgsNiArMTAxMyw5IEBA
IHByaXZhdGU6CiAgICAgVmVjdG9yPFVzZXJDb250ZW50VVJMUGF0dGVybj4gbV9jb3JzRGlzYWJs
aW5nUGF0dGVybnM7CiAgICAgVmVjdG9yPFVzZXJTdHlsZVNoZWV0PiBtX3VzZXJTdHlsZVNoZWV0
c1BlbmRpbmdJbmplY3Rpb247CiAgICAgYm9vbCBtX3Nob3VsZEZpcmVSZXNpemVFdmVudHMgeyB0
cnVlIH07CisgICAgCisgICAgYm9vbCBtX2hhc0JlZW5Ob3RpZmllZFRvSW5qZWN0VXNlclNjcmlw
dHMgeyBmYWxzZSB9OworICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmPERPTVdyYXBwZXJXb3JsZD4s
IFVuaXF1ZVJlZjxVc2VyU2NyaXB0Pj4+IG1fdXNlclNjcmlwdHNBd2FpdGluZ05vdGlmaWNhdGlv
bjsKIH07CiAKIGlubGluZSBQYWdlR3JvdXAmIFBhZ2U6Omdyb3VwKCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTI3
LDYgKzEyNyw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIFZlY3RvcjxTdHJpbmc+IGNvcnNEaXNh
YmxpbmdQYXR0ZXJuczsKICAgICBVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPiBtZWRp
YVJlY29yZGVyUHJvdmlkZXI7CisgICAgYm9vbCB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5v
dGlmaWNhdGlvbiB7IHRydWUgfTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlckNvbnRlbnRUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
ckNvbnRlbnRUeXBlcy5oCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJDb250ZW50VHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyB7IElu
amVjdEluQWxsRnJhbWVzLCBJbmplY3RJblRvcEZyYW1lT25seSB9OworZW51bSBjbGFzcyBVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzIDogYm9vbCB7IEluamVjdEluQWxsRnJhbWVzLCBJbmplY3RJ
blRvcEZyYW1lT25seSB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1VzZXJTY3JpcHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJTY3JpcHQuaAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9Vc2VyU2NyaXB0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE2ICszNSwyMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBVc2VyU2NyaXB0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBVc2VyU2NyaXB0KCkgPSBkZWZhdWx0OwogICAgIH5Vc2VyU2Ny
aXB0KCkgPSBkZWZhdWx0OworICAgIFVzZXJTY3JpcHQoY29uc3QgVXNlclNjcmlwdCYpID0gZGVm
YXVsdDsKKyAgICBVc2VyU2NyaXB0KFVzZXJTY3JpcHQmJikgPSBkZWZhdWx0OworICAgIFVzZXJT
Y3JpcHQmIG9wZXJhdG9yPShjb25zdCBVc2VyU2NyaXB0JikgPSBkZWZhdWx0OworICAgIFVzZXJT
Y3JpcHQmIG9wZXJhdG9yPShVc2VyU2NyaXB0JiYpID0gZGVmYXVsdDsKIAotICAgIFVzZXJTY3Jp
cHQoU3RyaW5nJiYgc291cmNlLCBVUkwmJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgd2hpdGVsaXN0
LCBWZWN0b3I8U3RyaW5nPiYmIGJsYWNrbGlzdCwgVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5q
ZWN0aW9uVGltZSwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcykKKyAg
ICBVc2VyU2NyaXB0KFN0cmluZyYmIHNvdXJjZSwgVVJMJiYgdXJsLCBWZWN0b3I8U3RyaW5nPiYm
IHdoaXRlbGlzdCwgVmVjdG9yPFN0cmluZz4mJiBibGFja2xpc3QsIFVzZXJTY3JpcHRJbmplY3Rp
b25UaW1lIGluamVjdGlvblRpbWUsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRG
cmFtZXMsIFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmcgd2FpdEZvck5vdGlmaWNh
dGlvbikKICAgICAgICAgOiBtX3NvdXJjZShXVEZNb3ZlKHNvdXJjZSkpCiAgICAgICAgICwgbV91
cmwoV1RGTW92ZSh1cmwpKQogICAgICAgICAsIG1fd2hpdGVsaXN0KFdURk1vdmUod2hpdGVsaXN0
KSkKICAgICAgICAgLCBtX2JsYWNrbGlzdChXVEZNb3ZlKGJsYWNrbGlzdCkpCiAgICAgICAgICwg
bV9pbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpCiAgICAgICAgICwgbV9pbmplY3RlZEZyYW1l
cyhpbmplY3RlZEZyYW1lcykKKyAgICAgICAgLCBtX3dhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJ
bmplY3Rpbmcod2FpdEZvck5vdGlmaWNhdGlvbikKICAgICB7CiAgICAgfQogCkBAIC01NCwxNyAr
NTgsMTkgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibGFja2xpc3QoKSBj
b25zdCB7IHJldHVybiBtX2JsYWNrbGlzdDsgfQogICAgIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1l
IGluamVjdGlvblRpbWUoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGlvblRpbWU7IH0KICAgICBV
c2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKCkgY29uc3QgeyByZXR1cm4g
bV9pbmplY3RlZEZyYW1lczsgfQorICAgIFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rp
bmcgd2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZygpIGNvbnN0IHsgcmV0dXJuIG1f
d2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzsgfQogCiAgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgVXNlclNjcmlwdCYpOwor
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxVc2VyU2NyaXB0PiBk
ZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3NvdXJjZTsKICAgICBV
UkwgbV91cmw7CiAgICAgVmVjdG9yPFN0cmluZz4gbV93aGl0ZWxpc3Q7CiAgICAgVmVjdG9yPFN0
cmluZz4gbV9ibGFja2xpc3Q7Ci0gICAgVXNlclNjcmlwdEluamVjdGlvblRpbWUgbV9pbmplY3Rp
b25UaW1lIHsgSW5qZWN0QXREb2N1bWVudFN0YXJ0IH07Ci0gICAgVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyBtX2luamVjdGVkRnJhbWVzIHsgSW5qZWN0SW5BbGxGcmFtZXMgfTsKKyAgICBVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZSBtX2luamVjdGlvblRpbWUgeyBVc2VyU2NyaXB0SW5qZWN0aW9u
VGltZTo6RG9jdW1lbnRTdGFydCB9OworICAgIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgbV9p
bmplY3RlZEZyYW1lcyB7IFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJh
bWVzIH07CisgICAgV2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZyBtX3dhaXRGb3JO
b3RpZmljYXRpb25CZWZvcmVJbmplY3RpbmcgeyBXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5q
ZWN0aW5nOjpObyB9OwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTc0LDM5ICs4
MCw1OCBAQCB2b2lkIFVzZXJTY3JpcHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyCiAgICAgZW5j
b2RlciA8PCBtX3VybDsKICAgICBlbmNvZGVyIDw8IG1fd2hpdGVsaXN0OwogICAgIGVuY29kZXIg
PDwgbV9ibGFja2xpc3Q7Ci0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1faW5qZWN0aW9uVGltZSk7
Ci0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1faW5qZWN0ZWRGcmFtZXMpOworICAgIGVuY29kZXIg
PDwgbV9pbmplY3Rpb25UaW1lOworICAgIGVuY29kZXIgPDwgbV9pbmplY3RlZEZyYW1lczsKKyAg
ICBlbmNvZGVyIDw8IG1fd2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzsKIH0KIAog
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLWJvb2wgVXNlclNjcmlwdDo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIFVzZXJTY3JpcHQmIHVzZXJTY3JpcHQpCitPcHRpb25hbDxVc2VyU2NyaXB0PiBV
c2VyU2NyaXB0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBTdHJpbmcgc291cmNl
OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc291cmNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIAotICAgIFVSTCB1cmw7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgVmVjdG9yPFN0cmluZz4gd2hpdGVsaXN0Owot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUod2hpdGVsaXN0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIAotICAgIFZlY3RvcjxTdHJpbmc+IGJsYWNrbGlzdDsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGJsYWNrbGlzdCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lOwotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVFbnVtKGluamVjdGlvblRpbWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAg
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lczsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlRW51bShpbmplY3RlZEZyYW1lcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAKLSAgICB1c2VyU2NyaXB0ID0geyBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUodXJsKSwgV1RG
TW92ZSh3aGl0ZWxpc3QpLCBXVEZNb3ZlKGJsYWNrbGlzdCksIGluamVjdGlvblRpbWUsIGluamVj
dGVkRnJhbWVzIH07Ci0gICAgcmV0dXJuIHRydWU7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBzb3Vy
Y2U7CisgICAgZGVjb2RlciA+PiBzb3VyY2U7CisgICAgaWYgKCFzb3VyY2UpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgCisgICAgT3B0aW9uYWw8VVJMPiB1cmw7CisgICAgZGVj
b2RlciA+PiB1cmw7CisgICAgaWYgKCF1cmwpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgCisgICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IHdoaXRlbGlzdDsKKyAgICBkZWNv
ZGVyID4+IHdoaXRlbGlzdDsKKyAgICBpZiAoIXdoaXRlbGlzdCkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAKKyAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gYmxhY2tsaXN0
OworICAgIGRlY29kZXIgPj4gYmxhY2tsaXN0OworICAgIGlmICghYmxhY2tsaXN0KQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIAorICAgIE9wdGlvbmFsPFVzZXJTY3JpcHRJbmpl
Y3Rpb25UaW1lPiBpbmplY3Rpb25UaW1lOworICAgIGRlY29kZXIgPj4gaW5qZWN0aW9uVGltZTsK
KyAgICBpZiAoIWluamVjdGlvblRpbWUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgCisgICAgT3B0aW9uYWw8VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcz4gaW5qZWN0ZWRGcmFt
ZXM7CisgICAgZGVjb2RlciA+PiBpbmplY3RlZEZyYW1lczsKKyAgICBpZiAoIWluamVjdGVkRnJh
bWVzKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIAorICAgIE9wdGlvbmFsPFdh
aXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc+IHdhaXRGb3JOb3RpZmljYXRpb247Cisg
ICAgZGVjb2RlciA+PiB3YWl0Rm9yTm90aWZpY2F0aW9uOworICAgIGlmICghd2FpdEZvck5vdGlm
aWNhdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKKyAgICByZXR1cm4g
e3sKKyAgICAgICAgV1RGTW92ZSgqc291cmNlKSwKKyAgICAgICAgV1RGTW92ZSgqdXJsKSwKKyAg
ICAgICAgV1RGTW92ZSgqd2hpdGVsaXN0KSwKKyAgICAgICAgV1RGTW92ZSgqYmxhY2tsaXN0KSwK
KyAgICAgICAgV1RGTW92ZSgqaW5qZWN0aW9uVGltZSksCisgICAgICAgIFdURk1vdmUoKmluamVj
dGVkRnJhbWVzKSwKKyAgICAgICAgV1RGTW92ZSgqd2FpdEZvck5vdGlmaWNhdGlvbikKKyAgICB9
fTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9Vc2VyU2NyaXB0VHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1Vz
ZXJTY3JpcHRUeXBlcy5oCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJTY3JpcHRUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw4IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSB7IEluamVj
dEF0RG9jdW1lbnRTdGFydCwgSW5qZWN0QXREb2N1bWVudEVuZCB9OworZW51bSBjbGFzcyBVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZSA6IGJvb2wgeyBEb2N1bWVudFN0YXJ0LCBEb2N1bWVudEVuZCB9
OworZW51bSBjbGFzcyBXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nIDogYm9vbCB7
IE5vLCBZZXMgfTsKIAogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgVXNlclNjcmlwdDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgJKHJldmlzaW9uIDI1OTMwNikK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNyArMzgsNyBAQCBjbGFzcyBVc2VyU3R5bGVTaGVldCB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVXNlclN0eWxlU2hlZXQoKQotICAgICAgICA6IG1f
aW5qZWN0ZWRGcmFtZXMoSW5qZWN0SW5BbGxGcmFtZXMpCisgICAgICAgIDogbV9pbmplY3RlZEZy
YW1lcyhVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcykKICAgICAg
ICAgLCBtX2xldmVsKFVzZXJTdHlsZVVzZXJMZXZlbCkKICAgICB7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MTMsNyArODEz
LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6c3RhcnRFbGVtZW50TnMoYwogICAgICAgICBk
b3duY2FzdDxIVE1MSHRtbEVsZW1lbnQ+KG5ld0VsZW1lbnQuZ2V0KCkpLmluc2VydGVkQnlQYXJz
ZXIoKTsKIAogICAgIGlmICghbV9wYXJzaW5nRnJhZ21lbnQgJiYgaXNGaXJzdEVsZW1lbnQgJiYg
ZG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+aW5qZWN0
VXNlclNjcmlwdHMoSW5qZWN0QXREb2N1bWVudFN0YXJ0KTsKKyAgICAgICAgZG9jdW1lbnQoKS0+
ZnJhbWUoKS0+aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3Vt
ZW50U3RhcnQpOwogfQogCiB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjplbmRFbGVtZW50TnMoKQpJ
bmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTMzNSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjYgQEAKKzIwMjAtMDMtMzEgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIHRvIG1h
a2UgV0tVc2VyU2NyaXB0cyB3YWl0IGZvciBhIG5vdGlmaWNhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5ODQ1CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82MDM0MjI5OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaDoKKyAgICAgICAgKFdl
YktpdDo6dG9Vc2VyU2NyaXB0SW5qZWN0aW9uVGltZSk6CisgICAgICAgIChXZWJLaXQ6OnRvV0tV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZSk6CisgICAgICAgIChXZWJLaXQ6OnRvVXNlckNvbnRlbnRJ
bmplY3RlZEZyYW1lcyk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6Cisg
ICAgICAgICogU2hhcmVkL1dlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVzZXJTY3JpcHREYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb246OnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uIGNvbnN0
KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldFVzZXJTY3JpcHRzU2hvdWxk
V2FpdFVudGlsTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJT
Y3JpcHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwOgorICAg
ICAgICAoV0tQYWdlR3JvdXBBZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tVc2VyU2NyaXB0UmVmLmNwcDoKKyAgICAgICAgKFdLVXNlclNjcmlwdENyZWF0ZVdpdGhT
b3VyY2UpOgorICAgICAgICAoV0tVc2VyU2NyaXB0R2V0TWFpbkZyYW1lT25seSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW06CisgICAgICAgICgtW1dLVXNl
clNjcmlwdCBpbml0V2l0aFNvdXJjZTppbmplY3Rpb25UaW1lOmZvck1haW5GcmFtZU9ubHk6XSk6
CisgICAgICAgICgtW1dLVXNlclNjcmlwdCBpc0Zvck1haW5GcmFtZU9ubHldKToKKyAgICAgICAg
KC1bV0tVc2VyU2NyaXB0IF9pbml0V2l0aFNvdXJjZTppbmplY3Rpb25UaW1lOmZvck1haW5GcmFt
ZU9ubHk6bGVnYWN5V2hpdGVsaXN0OmxlZ2FjeUJsYWNrbGlzdDp1c2VyQ29udGVudFdvcmxkOl0p
OgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX2luaXRXaXRoU291cmNlOmluamVjdGlvblRpbWU6
Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OmFzc29jaWF0
ZWRVUkw6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bV0tVc2VyU2NyaXB0IF9pbml0
V2l0aFNvdXJjZTppbmplY3Rpb25UaW1lOmZvck1haW5GcmFtZU9ubHk6bGVnYWN5V2hpdGVsaXN0
OmxlZ2FjeUJsYWNrbGlzdDpjb250ZW50V29ybGQ6XSk6CisgICAgICAgICgtW1dLVXNlclNjcmlw
dCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdo
aXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YXNzb2NpYXRlZFVSTDpjb250ZW50V29ybGQ6XSk6Cisg
ICAgICAgICgtW1dLVXNlclNjcmlwdCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpmb3JN
YWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YXNzb2NpYXRlZFVS
TDpjb250ZW50V29ybGQ6d2FpdEZvck5vdGlmaWNhdGlvbjpdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdEludGVybmFsLmg6CisgICAgICAgIChBUEk6OnRvV2Vi
Q29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKToKKyAgICAgICAgKEFQSTo6dG9XS1VzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNj
cmlwdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ub3RpZnlVc2VyU2NyaXB0c10pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3Rp
ZmljYXRpb25dKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfc2V0VXNlclNj
cmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW06CisgICAgICAgICgtW19XS1VzZXJTdHls
ZVNoZWV0IGluaXRXaXRoU291cmNlOmZvck1haW5GcmFtZU9ubHk6XSk6CisgICAgICAgICgtW19X
S1VzZXJTdHlsZVNoZWV0IGluaXRXaXRoU291cmNlOmZvcldLV2ViVmlldzpmb3JNYWluRnJhbWVP
bmx5OnVzZXJDb250ZW50V29ybGQ6XSk6CisgICAgICAgICgtW19XS1VzZXJTdHlsZVNoZWV0IGlu
aXRXaXRoU291cmNlOmZvck1haW5GcmFtZU9ubHk6bGVnYWN5V2hpdGVsaXN0OmxlZ2FjeUJsYWNr
bGlzdDp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVTaGVldCBp
bml0V2l0aFNvdXJjZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFj
a2xpc3Q6YmFzZVVSTDp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAoLVtfV0tVc2VyU3R5
bGVTaGVldCBpc0Zvck1haW5GcmFtZU9ubHldKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHRJ
bnRlcm5hbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjptX3Byb2Nlc3NEaXNwbGF5TmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6Om5vdGlmeVVzZXJTY3JpcHRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWRk
VXNlclNjcmlwdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMC0w
My0zMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgdHlwZSB0cmFpdHMgZm9yIFNjcm9sbGFibGVBcmVhLCBhbmQgb3RoZXIgY2xlYW51cApJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAJKHJldmlzaW9uIDI1OTMyNCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNiArMTMzLDcgQEAg
dm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSQogICAgIGVuY29kZXIgPDwg
b2xkUGFnZUlEOwogICAgIGVuY29kZXIgPDwgb3ZlcnJpZGRlbk1lZGlhVHlwZTsKICAgICBlbmNv
ZGVyIDw8IGNvcnNEaXNhYmxpbmdQYXR0ZXJuczsKKyAgICBlbmNvZGVyIDw8IHVzZXJTY3JpcHRz
U2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOwogICAgIGVuY29kZXIgPDwgY3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOwogICAgIGVuY29kZXIgPDwgcHJvY2Vzc0Rpc3BsYXlO
YW1lOwogCkBAIC00MTYsNiArNDE3LDEyIEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnM+IFdlYlAKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJz
LmNvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IFdURk1vdmUoKmNvcnNEaXNhYmxpbmdQYXR0ZXJucyk7
CiAKKyAgICBPcHRpb25hbDxib29sPiB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNh
dGlvbjsKKyAgICBkZWNvZGVyID4+IHVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0
aW9uOworICAgIGlmICghdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24pCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcGFyYW1ldGVycy51c2VyU2NyaXB0c1No
b3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiA9ICp1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5v
dGlmaWNhdGlvbjsKKyAgICAKICAgICBPcHRpb25hbDxib29sPiBjcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2xDaGVja0VuYWJsZWQ7CiAgICAgZGVjb2RlciA+PiBjcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2xDaGVja0VuYWJsZWQ7CiAgICAgaWYgKCFjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Vu
YWJsZWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNTkzMjQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw2ICsyMDIs
NyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAgICBTdHJpbmcgb3Zl
cnJpZGRlbk1lZGlhVHlwZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjb3JzRGlzYWJsaW5nUGF0dGVy
bnM7CisgICAgYm9vbCB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiB7IHRy
dWUgfTsKICAgICBib29sIGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCB7IHRy
dWUgfTsKICAgICBTdHJpbmcgcHJvY2Vzc0Rpc3BsYXlOYW1lOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFU
eXBlcy5jcHAJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEx
ICs0OSwxMiBAQCBPcHRpb25hbDxXZWJVc2VyU2NyaXB0RGF0YT4gV2ViVXNlclNjcmlwCiAgICAg
aWYgKCF3b3JsZElkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAg
Ci0gICAgV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0OwotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUodXNlclNjcmlwdCkpCisgICAgT3B0aW9uYWw8V2ViQ29yZTo6VXNlclNjcmlwdD4gdXNl
clNjcmlwdDsKKyAgICBkZWNvZGVyID4+IHVzZXJTY3JpcHQ7CisgICAgaWYgKCF1c2VyU2NyaXB0
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIAotICAgIHJldHVybiB7eyBXVEZN
b3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqd29ybGRJZGVudGlmaWVyKSwgV1RGTW92ZSh1c2Vy
U2NyaXB0KSB9fTsKKyAgICByZXR1cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUo
KndvcmxkSWRlbnRpZmllciksIFdURk1vdmUoKnVzZXJTY3JpcHQpIH19OwogfQogCiB2b2lkIFdl
YlVzZXJTdHlsZVNoZWV0RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCShy
ZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQ
SUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtOTkzLDIxICs5OTMsMjEgQEAgaW5saW5lIFdlYkNv
cmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIAogewogICAgIHN3aXRjaCAod2tJbmplY3RlZFRp
bWUpIHsKICAgICBjYXNlIGtXS0luamVjdEF0RG9jdW1lbnRTdGFydDoKLSAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OkluamVjdEF0RG9jdW1lbnRTdGFydDsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6
OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1bWVudFN0YXJ0OwogICAgIGNhc2Uga1dLSW5q
ZWN0QXREb2N1bWVudEVuZDoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkluamVjdEF0RG9jdW1l
bnRFbmQ7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6
RG9jdW1lbnRFbmQ7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OkluamVjdEF0RG9jdW1lbnRTdGFydDsKKyAgICByZXR1cm4gV2ViQ29yZTo6
VXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50U3RhcnQ7CiB9CiAKIGlubGluZSBfV0tV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZSB0b1dLVXNlclNjcmlwdEluamVjdGlvblRpbWUoV2ViQ29y
ZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0ZWRUaW1lKQogewogICAgIHN3aXRjaCAo
aW5qZWN0ZWRUaW1lKSB7Ci0gICAgY2FzZSBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50U3RhcnQ6
CisgICAgY2FzZSBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRTdGFy
dDoKICAgICAgICAgcmV0dXJuIGtXS0luamVjdEF0RG9jdW1lbnRTdGFydDsKLSAgICBjYXNlIFdl
YkNvcmU6OkluamVjdEF0RG9jdW1lbnRFbmQ6CisgICAgY2FzZSBXZWJDb3JlOjpVc2VyU2NyaXB0
SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQ6CiAgICAgICAgIHJldHVybiBrV0tJbmplY3RBdERv
Y3VtZW50RW5kOwogICAgIH0KIApAQCAtMTAxOSwxMyArMTAxOSwxMyBAQCBpbmxpbmUgV2ViQ29y
ZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lCiB7CiAgICAgc3dpdGNoICh3a0luamVjdGVkRnJh
bWVzKSB7CiAgICAgY2FzZSBrV0tJbmplY3RJbkFsbEZyYW1lczoKLSAgICAgICAgcmV0dXJuIFdl
YkNvcmU6OkluamVjdEluQWxsRnJhbWVzOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6VXNlckNv
bnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXM7CiAgICAgY2FzZSBrV0tJbmpl
Y3RJblRvcEZyYW1lT25seToKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkluamVjdEluVG9wRnJh
bWVPbmx5OworICAgICAgICByZXR1cm4gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1l
czo6SW5qZWN0SW5Ub3BGcmFtZU9ubHk7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzOworICAgIHJldHVybiBX
ZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lczsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI1OTMyNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3ODEsNiArNzc4MSw3IEBA
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjoKIAogICAgIHBhcmFtZXRl
cnMub3ZlcnJpZGRlbk1lZGlhVHlwZSA9IG1fb3ZlcnJpZGRlbk1lZGlhVHlwZTsKICAgICBwYXJh
bWV0ZXJzLmNvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IG1fY29uZmlndXJhdGlvbi0+Y29yc0Rpc2Fi
bGluZ1BhdHRlcm5zKCk7CisgICAgcGFyYW1ldGVycy51c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRp
bE5vdGlmaWNhdGlvbiA9IG1fY29uZmlndXJhdGlvbi0+dXNlclNjcmlwdHNTaG91bGRXYWl0VW50
aWxOb3RpZmljYXRpb24oKTsKICAgICBwYXJhbWV0ZXJzLmNyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bENoZWNrRW5hYmxlZCA9IG1fY29uZmlndXJhdGlvbi0+Y3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
Q2hlY2tFbmFibGVkKCk7CiAgICAgcGFyYW1ldGVycy5oYXNSZXNvdXJjZUxvYWRDbGllbnQgPSAh
IW1fcmVzb3VyY2VMb2FkQ2xpZW50OwogCkBAIC04MjAyLDYgKzgyMDMsMTEgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnVwZGF0ZVdlYnNpdGVQb2xpY2llcwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlVwZGF0ZVdlYnNpdGVQb2xpY2llcyh3ZWJzaXRlUG9saWNpZXMpKTsKIH0KIAordm9pZCBX
ZWJQYWdlUHJveHk6Om5vdGlmeVVzZXJTY3JpcHRzKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpOb3RpZnlVc2VyU2NyaXB0cygpKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5j
ZSkKIHsKICAgICBwYWdlQ2xpZW50KCkuZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250
ZW50UHJvdmlkZXIoUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXplU3VnZ2VzdGVkRmlsZW5h
bWUoc3VnZ2VzdGVkRmlsZW5hbWUpLCBkYXRhUmVmZXJlbmNlKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyNTkzMDcpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNjExLDYgKzYx
MSw3IEBAIHB1YmxpYzoKICAgICBib29sIHdpbGxIYW5kbGVIb3Jpem9udGFsU2Nyb2xsRXZlbnRz
KCkgY29uc3Q7CiAKICAgICB2b2lkIHVwZGF0ZVdlYnNpdGVQb2xpY2llcyhXZWJzaXRlUG9saWNp
ZXNEYXRhJiYpOworICAgIHZvaWQgbm90aWZ5VXNlclNjcmlwdHMoKTsKIAogICAgIGJvb2wgY2Fu
U2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAJKHJl
dmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29u
ZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDYgKzkxLDcgQEAgUmVmPFBhZ2VD
b25maWd1cmF0aW9uPiBQYWdlQ29uZmlndXJhdGlvbgogICAgICAgICBjb3B5LT5tX3VybFNjaGVt
ZUhhbmRsZXJzLnNldChwYWlyLmtleSwgcGFpci52YWx1ZS5jb3B5UmVmKCkpOwogICAgIGNvcHkt
Pm1fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gdGhpcy0+bV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7
CiAgICAgY29weS0+bV9jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgPSB0aGlz
LT5tX2Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKKyAgICBjb3B5LT5tX3Vz
ZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uID0gdGhpcy0+bV91c2VyU2NyaXB0
c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsKICAgICBjb3B5LT5tX3dlYlZpZXdDYXRlZ29y
eSA9IHRoaXMtPm1fd2ViVmlld0NhdGVnb3J5OwogCiAgICAgY29weS0+bV9wcm9jZXNzRGlzcGxh
eU5hbWUgPSB0aGlzLT5tX3Byb2Nlc3NEaXNwbGF5TmFtZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAy
NTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNyw5IEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGNvcnNEaXNhYmxpbmdQYXR0ZXJucygpIGNvbnN0IHsg
cmV0dXJuIG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zOyB9CiAgICAgdm9pZCBzZXRDT1JTRGlzYWJs
aW5nUGF0dGVybnMoVmVjdG9yPFdURjo6U3RyaW5nPiYmIHBhdHRlcm5zKSB7IG1fY29yc0Rpc2Fi
bGluZ1BhdHRlcm5zID0gV1RGTW92ZShwYXR0ZXJucyk7IH0KKyAgICAKKyAgICBib29sIHVzZXJT
Y3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91c2Vy
U2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsgfQorICAgIHZvaWQgc2V0VXNlclNj
cmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24oYm9vbCB2YWx1ZSkgeyBtX3VzZXJTY3Jp
cHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uID0gdmFsdWU7IH0KIAogICAgIGJvb2wgY3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9jcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7IH0KICAgICB2b2lkIHNldENyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9jcm9zc09yaWdp
bkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgPSBlbmFibGVkOyB9CkBAIC0xODcsNiArMTkwLDcg
QEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8V1RGOjpTdHJpbmcsIFJlZjxXZWJLaXQ6OldlYlVS
TFNjaGVtZUhhbmRsZXI+PiBtX3VybFNjaGVtZUhhbmRsZXJzOwogICAgIFZlY3RvcjxXVEY6OlN0
cmluZz4gbV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7CisgICAgYm9vbCBtX3VzZXJTY3JpcHRzU2hv
dWxkV2FpdFVudGlsTm90aWZpY2F0aW9uIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9jcm9zc09yaWdp
bkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgeyB0cnVlIH07CiAgICAgV1RGOjpTdHJpbmcgbV9w
cm9jZXNzRGlzcGxheU5hbWU7CiAgICAgV2ViS2l0OjpXZWJWaWV3Q2F0ZWdvcnkgbV93ZWJWaWV3
Q2F0ZWdvcnkgeyBXZWJLaXQ6OldlYlZpZXdDYXRlZ29yeTo6QXBwQm91bmREb21haW4gfTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuaAkocmV2aXNp
b24gMjU5MzA2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTUgKzM2LDE2IEBAIGNsYXNzIFVzZXJTY3JpcHQgZmlu
YWwgOiBwdWJsaWMgT2JqZWN0SW0KIHB1YmxpYzoKICAgICBzdGF0aWMgV1RGOjpVUkwgZ2VuZXJh
dGVVbmlxdWVVUkwoKTsKIAotICAgIHN0YXRpYyBSZWY8VXNlclNjcmlwdD4gY3JlYXRlKFdlYkNv
cmU6OlVzZXJTY3JpcHQgdXNlclNjcmlwdCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQorICAg
IHN0YXRpYyBSZWY8VXNlclNjcmlwdD4gY3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQmJiB1c2Vy
U2NyaXB0LCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBVc2VyU2NyaXB0KFdURk1vdmUodXNlclNjcmlwdCksIHdvcmxkKSk7CiAg
ICAgfQogCiAgICAgVXNlclNjcmlwdChXZWJDb3JlOjpVc2VyU2NyaXB0LCBBUEk6OkNvbnRlbnRX
b3JsZCYpOwogCisgICAgV2ViQ29yZTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCgpIHsgcmV0dXJu
IG1fdXNlclNjcmlwdDsgfQogICAgIGNvbnN0IFdlYkNvcmU6OlVzZXJTY3JpcHQmIHVzZXJTY3Jp
cHQoKSBjb25zdCB7IHJldHVybiBtX3VzZXJTY3JpcHQ7IH0KLSAgICAKKwogICAgIENvbnRlbnRX
b3JsZCYgY29udGVudFdvcmxkKCkgeyByZXR1cm4gbV93b3JsZDsgfQogICAgIGNvbnN0IENvbnRl
bnRXb3JsZCYgY29udGVudFdvcmxkKCkgY29uc3QgeyByZXR1cm4gbV93b3JsZDsgfQogICAgIApJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcAko
cmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
R3JvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgV0tQYWdlR3Jv
dXBBZGRVc2VyU2NyaXB0KFdLUGFnZUdyb3UKICAgICBhdXRvIGJsYWNrbGlzdCA9IHRvSW1wbChi
bGFja2xpc3RlZFVSTFBhdHRlcm5zKTsKICAgICAKICAgICBhdXRvIHVybCA9IGJhc2VVUkxTdHJp
bmcuaXNFbXB0eSgpID8gYWJvdXRCbGFua1VSTCgpIDogIFVSTChVUkwoKSwgYmFzZVVSTFN0cmlu
Zyk7Ci0gICAgUmVmPEFQSTo6VXNlclNjcmlwdD4gdXNlclNjcmlwdCA9IEFQSTo6VXNlclNjcmlw
dDo6Y3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUo
dXJsKSwgd2hpdGVsaXN0ID8gd2hpdGVsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9yPFN0
cmluZz4oKSwgYmxhY2tsaXN0ID8gYmxhY2tsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9y
PFN0cmluZz4oKSwgdG9Vc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgdG9V
c2VyQ29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKSB9LCBBUEk6OkNvbnRlbnRX
b3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKKyAgICBSZWY8QVBJOjpVc2VyU2NyaXB0PiB1c2Vy
U2NyaXB0ID0gQVBJOjpVc2VyU2NyaXB0OjpjcmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdU
Rk1vdmUoc291cmNlKSwgV1RGTW92ZSh1cmwpLCB3aGl0ZWxpc3QgPyB3aGl0ZWxpc3QtPnRvU3Ry
aW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBibGFja2xpc3QgPyBibGFja2xpc3QtPnRv
U3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCB0b1VzZXJTY3JpcHRJbmplY3Rpb25U
aW1lKGluamVjdGlvblRpbWUpLCB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRG
cmFtZXMpLCBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9
LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKICAgICB0b0ltcGwocGFn
ZUdyb3VwUmVmKS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCh1c2VyU2Ny
aXB0LmdldCgpLCBJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHk6Ok5vKTsKIH0KIApJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyU2NyaXB0UmVmLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJTY3JpcHRSZWYuY3Bw
CShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Vz
ZXJTY3JpcHRSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIFdLVHlwZUlE
IFdLVXNlclNjcmlwdEdldFR5cGVJRCgpCiAKIFdLVXNlclNjcmlwdFJlZiBXS1VzZXJTY3JpcHRD
cmVhdGVXaXRoU291cmNlKFdLU3RyaW5nUmVmIHNvdXJjZVJlZiwgX1dLVXNlclNjcmlwdEluamVj
dGlvblRpbWUgaW5qZWN0aW9uVGltZSwgYm9vbCBmb3JNYWluRnJhbWVPbmx5KQogewotICAgIHJl
dHVybiB0b0FQSSgmQVBJOjpVc2VyU2NyaXB0OjpjcmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB7
IHRvV1RGU3RyaW5nKHNvdXJjZVJlZiksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVV
UkwoKSwgeyB9LCB7IH0sIHRvVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSks
IGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNv
cmU6OkluamVjdEluQWxsRnJhbWVzIH0sIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdv
cmxkKCkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZBUEk6OlVzZXJTY3JpcHQ6OmNy
ZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHsgdG9XVEZTdHJpbmcoc291cmNlUmVmKSwgQVBJOjpV
c2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCB7IH0sIHsgfSwgdG9Vc2VyU2NyaXB0SW5q
ZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6Oldh
aXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Ok5vIH0sIEFQSTo6Q29udGVudFdvcmxk
OjpwYWdlQ29udGVudFdvcmxkKCkpLmxlYWtSZWYoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLVXNl
clNjcmlwdENvcHlTb3VyY2UoV0tVc2VyU2NyaXB0UmVmIHVzZXJTY3JpcHRSZWYpCkBAIC01Myw1
ICs1Myw1IEBAIF9XS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lIFdLVXNlclNjcmlwdEcKIAogYm9v
bCBXS1VzZXJTY3JpcHRHZXRNYWluRnJhbWVPbmx5KFdLVXNlclNjcmlwdFJlZiB1c2VyU2NyaXB0
UmVmKQogewotICAgIHJldHVybiB0b0ltcGwodXNlclNjcmlwdFJlZiktPnVzZXJTY3JpcHQoKS5p
bmplY3RlZEZyYW1lcygpID09IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5OworICAgIHJl
dHVybiB0b0ltcGwodXNlclNjcmlwdFJlZiktPnVzZXJTY3JpcHQoKS5pbmplY3RlZEZyYW1lcygp
ID09IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVP
bmx5OwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNj
cmlwdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tVc2VyU2NyaXB0Lm1tCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICsz
NSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNvdXJjZTooTlNTdHJpbmcKICAgICBpZiAo
IShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIEFQSTo6
T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3Jl
OjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgQVBJOjpVc2VyU2NyaXB0OjpnZW5l
cmF0ZVVuaXF1ZVVSTCgpLCB7IH0sIHsgfSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0
aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVj
dEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgfSwgQVBJOjpDb250
ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVj
dEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBX
VEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCks
IHsgfSwgeyB9LCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlv
blRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJl
Zm9yZUluamVjdGluZzo6Tm8gfSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQo
KSk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTU5LDcgKzU5LDcgQEAgLSAoV0tVc2VyU2Ny
aXB0SW5qZWN0aW9uVGltZSlpbmplY3Rpb25UaQogCiAtIChCT09MKWlzRm9yTWFpbkZyYW1lT25s
eQogewotICAgIHJldHVybiBfdXNlclNjcmlwdC0+dXNlclNjcmlwdCgpLmluamVjdGVkRnJhbWVz
KCkgPT0gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHk7CisgICAgcmV0dXJuIF91c2VyU2Ny
aXB0LT51c2VyU2NyaXB0KCkuaW5qZWN0ZWRGcmFtZXMoKSA9PSBXZWJDb3JlOjpVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seTsKIH0KIAogLSAoaWQpY29weVdp
dGhab25lOihOU1pvbmUgKil6b25lCkBAIC04NCw3ICs4NCw3IEBAIC0gKGluc3RhbmNldHlwZSlf
aW5pdFdpdGhTb3VyY2U6KE5TU3RyaW4KICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBw
ZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJp
bmcoc291cmNlKSwgQVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBBUEk6OnRv
U3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5
QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rp
b25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5
IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgfSwgKnVzZXJDb250ZW50V29ybGQtPl9jb250
ZW50V29ybGQtPl9jb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldy
YXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpT
dHJpbmcoc291cmNlKSwgQVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBBUEk6
OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVn
YWN5QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmpl
Y3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRp
b25CZWZvcmVJbmplY3Rpbmc6Ok5vIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVudFdvcmxk
LT5fY29udGVudFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtOTQsNyArOTQsNyBA
QCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluCiAgICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVj
dDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNl
clNjcmlwdCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIFVSTChhc3NvY2lhdGVkVVJMKSwgQVBJOjp0
b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2Fj
eUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0
aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25s
eSA6IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29u
dGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5X
cmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6
U3RyaW5nKHNvdXJjZSksIFVSTChhc3NvY2lhdGVkVVJMKSwgQVBJOjp0b1N0cmluZ1ZlY3Rvcihs
ZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIEFQ
STo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1h
aW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJ
blRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVj
dEluQWxsRnJhbWVzLCBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5n
OjpObyB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7
CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTExMCw3ICsxMTAsNyBAQCAtIChpbnN0YW5jZXR5
cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5X
cmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6
U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgQVBJ
Ojp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxl
Z2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5q
ZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1l
T25seSA6IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sICpjb250ZW50V29ybGQtPl9jb250
ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2Vy
U2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwg
QVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBBUEk6OnRvU3RyaW5nVmVjdG9y
KGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwg
QVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9y
TWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVj
dEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5q
ZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rp
bmc6Ok5vIH0sICpjb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogCiAgICAgcmV0dXJuIHNl
bGY7CiB9CkBAIC0xMjAsNyArMTIwLDE3IEBAIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhTb3Vy
Y2U6KE5TU3RyaW4KICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2Vy
U2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwg
VVJMKGFzc29jaWF0ZWRVUkwpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCks
IEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdl
YkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMg
fSwgKmNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0
cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQg
eyBXVEY6OlN0cmluZyhzb3VyY2UpLCBVUkwoYXNzb2NpYXRlZFVSTCksIEFQSTo6dG9TdHJpbmdW
ZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xp
c3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUp
LCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6
SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
OjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUlu
amVjdGluZzo6Tm8gfSwgKmNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CisKKyAgICByZXR1
cm4gc2VsZjsKK30KKworLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aFNvdXJjZTooTlNTdHJpbmcg
Kilzb3VyY2UgaW5qZWN0aW9uVGltZTooV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSlpbmplY3Rp
b25UaW1lIGZvck1haW5GcmFtZU9ubHk6KEJPT0wpZm9yTWFpbkZyYW1lT25seSBsZWdhY3lXaGl0
ZWxpc3Q6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilsZWdhY3lXaGl0ZWxpc3QgbGVnYWN5QmxhY2ts
aXN0OihOU0FycmF5PE5TU3RyaW5nICo+ICopbGVnYWN5QmxhY2tsaXN0IGFzc29jaWF0ZWRVUkw6
KE5TVVJMICopYXNzb2NpYXRlZFVSTCBjb250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29u
dGVudFdvcmxkIHdhaXRGb3JOb3RpZmljYXRpb246KEJPT0wpd2FpdEZvck5vdGlmaWNhdGlvbgor
eworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOwor
CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNl
bGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBVUkwoYXNzb2Np
YXRlZFVSTCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0
cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmpl
Y3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNl
ckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpV
c2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgd2FpdEZvck5vdGlm
aWNhdGlvbj8gV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6WWVz
IDogV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6Tm8gfSwgKmNv
bnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHRJbnRlcm5hbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJT
Y3JpcHRJbnRlcm5hbC5oCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAt
NDEsMjMgKzQxLDIxIEBAIGlubGluZSBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSAK
IHsKICAgICBzd2l0Y2ggKGluamVjdGlvblRpbWUpIHsKICAgICBjYXNlIFdLVXNlclNjcmlwdElu
amVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQ6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpJbmpl
Y3RBdERvY3VtZW50U3RhcnQ7Ci0KKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lOjpEb2N1bWVudFN0YXJ0OwogICAgIGNhc2UgV0tVc2VyU2NyaXB0SW5qZWN0
aW9uVGltZUF0RG9jdW1lbnRFbmQ6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpJbmplY3RBdERv
Y3VtZW50RW5kOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRp
bWU6OkRvY3VtZW50RW5kOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50RW5kOworICAgIHJldHVybiBXZWJDb3Jl
OjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQ7CiB9CiAKIGlubGluZSBXS1Vz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lIHRvV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShXZWJDb3Jl
OjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lKQogewogICAgIHN3aXRjaCAo
aW5qZWN0aW9uVGltZSkgewotICAgIGNhc2UgV2ViQ29yZTo6SW5qZWN0QXREb2N1bWVudFN0YXJ0
OgorICAgIGNhc2UgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50U3Rh
cnQ6CiAgICAgICAgIHJldHVybiBXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0
YXJ0OwotCi0gICAgY2FzZSBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50RW5kOgorICAgIGNhc2Ug
V2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50RW5kOgogICAgICAgICBy
ZXR1cm4gV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRFbmQ7CiAgICAgfQogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0UHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Vz
ZXJTY3JpcHRQcml2YXRlLmgJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHRQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDYgKzM4LDggQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIC0gKGluc3RhbmNldHlwZSlf
aW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGluamVjdGlvblRpbWU6KFdLVXNlclNj
cmlwdEluamVjdGlvblRpbWUpaW5qZWN0aW9uVGltZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZv
ck1haW5GcmFtZU9ubHkgbGVnYWN5V2hpdGVsaXN0OihOU0FycmF5PE5TU3RyaW5nICo+ICopbGVn
YWN5V2hpdGVsaXN0IGxlZ2FjeUJsYWNrbGlzdDooTlNBcnJheTxOU1N0cmluZyAqPiAqKWxlZ2Fj
eUJsYWNrbGlzdCBjb250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtIChp
bnN0YW5jZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25U
aW1lOihXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKWluamVjdGlvblRpbWUgZm9yTWFpbkZyYW1l
T25seTooQk9PTClmb3JNYWluRnJhbWVPbmx5IGxlZ2FjeVdoaXRlbGlzdDooTlNBcnJheTxOU1N0
cmluZyAqPiAqKWxlZ2FjeVdoaXRlbGlzdCBsZWdhY3lCbGFja2xpc3Q6KE5TQXJyYXk8TlNTdHJp
bmcgKj4gKilsZWdhY3lCbGFja2xpc3QgYXNzb2NpYXRlZFVSTDooTlNVUkwgKilhc3NvY2lhdGVk
VVJMIGNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLSAoaW5zdGFu
Y2V0eXBlKV9pbml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgaW5qZWN0aW9uVGltZToo
V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSlpbmplY3Rpb25UaW1lIGZvck1haW5GcmFtZU9ubHk6
KEJPT0wpZm9yTWFpbkZyYW1lT25seSBsZWdhY3lXaGl0ZWxpc3Q6KE5TQXJyYXk8TlNTdHJpbmcg
Kj4gKilsZWdhY3lXaGl0ZWxpc3QgbGVnYWN5QmxhY2tsaXN0OihOU0FycmF5PE5TU3RyaW5nICo+
ICopbGVnYWN5QmxhY2tsaXN0IGFzc29jaWF0ZWRVUkw6KE5TVVJMICopYXNzb2NpYXRlZFVSTCBj
b250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIHdhaXRGb3JOb3RpZmlj
YXRpb246KEJPT0wpd2FpdEZvck5vdGlmaWNhdGlvbiBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIF9XS1VzZXJDb250ZW50V29ybGQgKl91c2VyQ29udGVudFdvcmxkIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTIpLCBpb3MoMTAuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBXS0NvbnRlbnRXb3JsZCAqX2NvbnRlbnRXb3JsZCBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDI1OTMwNykK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtp
bmcgY29weSkKQEAgLTIzMjMsNiArMjMyMywxMSBAQCAtICh2b2lkKV91cGRhdGVXZWJwYWdlUHJl
ZmVyZW5jZXM6KFdLV2ViCiAgICAgX3BhZ2UtPnVwZGF0ZVdlYnNpdGVQb2xpY2llcyhXVEZNb3Zl
KGRhdGEpKTsKIH0KIAorLSAodm9pZClfbm90aWZ5VXNlclNjcmlwdHMKK3sKKyAgICBfcGFnZS0+
bm90aWZ5VXNlclNjcmlwdHMoKTsKK30KKwogLSAoQk9PTClfYWxsb3dzUmVtb3RlSW5zcGVjdGlv
bgogewogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24ubW0JKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MTMsNiAr
OTEzLDE2IEBAIC0gKHZvaWQpX3NldENPUlNEaXNhYmxpbmdQYXR0ZXJuczooTlNBcnIKICAgICBf
cGFnZUNvbmZpZ3VyYXRpb24tPnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhXVEZNb3ZlKHZlY3Rv
cikpOwogfQogCistIChCT09MKV91c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlv
bgoreworICAgIHJldHVybiBfcGFnZUNvbmZpZ3VyYXRpb24tPnVzZXJTY3JpcHRzU2hvdWxkV2Fp
dFVudGlsTm90aWZpY2F0aW9uKCk7Cit9CisKKy0gKHZvaWQpX3NldFVzZXJTY3JpcHRzU2hvdWxk
V2FpdFVudGlsTm90aWZpY2F0aW9uOihCT09MKXZhbHVlCit7CisgICAgX3BhZ2VDb25maWd1cmF0
aW9uLT5zZXRVc2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbih2YWx1ZSk7Cit9
CisKIC0gKHZvaWQpX3NldENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDooQk9P
TCllbmFibGVkCiB7CiAgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRDcm9zc09yaWdpbkFjY2Vz
c0NvbnRyb2xDaGVja0VuYWJsZWQoZW5hYmxlZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJh
dGlvblByaXZhdGUuaAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg0LDYgKzg0LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIF9XS1dlYlZp
ZXdDYQogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLV2Vic2l0ZURhdGFTdG9y
ZSAqX3dlYnNpdGVEYXRhU3RvcmVJZkV4aXN0cyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNl
dHRlcj1fc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zOikgTlNBcnJheTxOU1N0cmluZyAqPiAqX2Nv
cnNEaXNhYmxpbmdQYXR0ZXJucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0VXNlclNj
cmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb246KSBCT09MIF91c2VyU2NyaXB0c1Nob3Vs
ZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0Q3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOikgQk9PTCBfY3Jvc3NPcmlnaW5BY2Nl
c3NDb250cm9sQ2hlY2tFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgJ
KHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBAQCBmb3Ig
dGhpcyBwcm9wZXJ0eS4KIAogLSAodm9pZClfdXBkYXRlV2Vic2l0ZVBvbGljaWVzOihfV0tXZWJz
aXRlUG9saWNpZXMgKil3ZWJzaXRlUG9saWNpZXMgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBM
QUNFTUVOVCgiLV91cGRhdGVXZWJwYWdlUHJlZmVyZW5jZXM6IiwgbWFjb3MoMTAuMTMsIFdLX01B
Q19UQkEpLCBpb3MoMTEuMywgV0tfSU9TX1RCQSkpOwogLSAodm9pZClfdXBkYXRlV2VicGFnZVBy
ZWZlcmVuY2VzOihXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKXdlYnBhZ2VQcmVmZXJlbmNlcyBXS19B
UElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9p
ZClfbm90aWZ5VXNlclNjcmlwdHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIAogLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVz
ZXJHZXN0dXJlOihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOwogLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0
OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgaW5GcmFtZTooV0tGcmFtZUluZm8gKilmcmFt
ZSBpbkNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICogZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVy
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Vz
ZXJTdHlsZVNoZWV0Lm1tCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDcgKzQ0LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZwogICAg
IC8vIEZJWE1FOiBJbiB0aGUgQVBJIHRlc3QsIHdlIGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwg
YmVsb3cgYmVmb3JlIHRoZSBBUEk6Ok9iamVjdCBjb25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4u
IHdoZXJlIHNob3VsZCB0aGlzIHJlYWxseSBiZT8KICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJL
aXQyKCk7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0
eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291
cmNlKSwgQVBJOjpVc2VyU3R5bGVTaGVldDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgeyB9LCB7IH0s
IGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNv
cmU6OkluamVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgQVBJ
OjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgQVBJOjpPYmplY3Q6OmNv
bnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2Vy
U3R5bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclN0eWxlU2hlZXQ6Omdl
bmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgeyB9LCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3Jl
OjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6
VXNlclN0eWxlVXNlckxldmVsIH0sIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxk
KCkpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC01OCw3ICs1OCw3IEBAIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aFNvdXJjZTooTlNTdHJpbmcKICAgICAvLyBGSVhNRTogSW4gdGhlIEFQSSB0
ZXN0LCB3ZSBjYW4gdXNlIGdlbmVyYXRlVW5pcXVlVVJMIGJlbG93IGJlZm9yZSB0aGUgQVBJOjpP
YmplY3QgY29uc3RydWN0b3IgaGFzIGRvbmUgdGhpcy4uLiB3aGVyZSBzaG91bGQgdGhpcyByZWFs
bHkgYmU/CiAgICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0MigpOwogCi0gICAgQVBJOjpPYmpl
Y3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3Jl
OjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclN0eWxlU2hl
ZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgIHsgfSwgZm9yTWFpbkZyYW1lT25seSA/IFdl
YkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMs
IFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCwgW3dlYlZpZXcgX3BhZ2VdLT53ZWJQYWdlSUQo
KSB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7Cisg
ICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0Pihz
ZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6
VXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgIHsgfSwgZm9yTWFpbkZy
YW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9w
RnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5B
bGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCwgW3dlYlZpZXcgX3BhZ2VdLT53
ZWJQYWdlSUQoKSB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRX
b3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTcxLDcgKzcxLDcgQEAgLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZwogICAgIC8vIEZJWE1FOiBJbiB0aGUgQVBJ
IHRlc3QsIHdlIGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwgYmVsb3cgYmVmb3JlIHRoZSBBUEk6
Ok9iamVjdCBjb25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4uIHdoZXJlIHNob3VsZCB0aGlzIHJl
YWxseSBiZT8KICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBBUEk6Ok9i
amVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdlYkNv
cmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgQVBJOjpVc2VyU3R5bGVT
aGVldDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0
ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIGZvck1haW5GcmFt
ZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OkluamVjdElu
QWxsRnJhbWVzLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgKnVzZXJDb250ZW50V29y
bGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25z
dHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0
eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5l
cmF0ZVVuaXF1ZVVSTCgpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQ
STo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdl
YkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDog
V2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdl
YkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRX
b3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTg0LDcgKzg0
LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZwogICAgIC8vIEZJ
WE1FOiBJbiB0aGUgQVBJIHRlc3QsIHdlIGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwgYmVsb3cg
YmVmb3JlIHRoZSBBUEk6Ok9iamVjdCBjb25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4uIHdoZXJl
IHNob3VsZCB0aGlzIHJlYWxseSBiZT8KICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7
CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hl
ZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwg
eyAgVVJMKCksIFdURjo6U3RyaW5nKFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJp
bmddKSB9LCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJp
bmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6Oklu
amVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6
OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+
X2NvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6
OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3Ry
aW5nKHNvdXJjZSksIHsgIFVSTCgpLCBXVEY6OlN0cmluZyhbYmFzZVVSTCBfd2ViX29yaWdpbmFs
RGF0YUFzV1RGU3RyaW5nXSkgfSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3Qp
LCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIGZvck1haW5GcmFtZU9ubHkg
PyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25s
eSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVz
LCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgKnVzZXJDb250ZW50V29ybGQtPl9jb250
ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0xMDks
NyArMTA5LDcgQEAgLSAoTlNVUkwgKiliYXNlVVJMCiAKIC0gKEJPT0wpaXNGb3JNYWluRnJhbWVP
bmx5CiB7Ci0gICAgcmV0dXJuIF91c2VyU3R5bGVTaGVldC0+dXNlclN0eWxlU2hlZXQoKS5pbmpl
Y3RlZEZyYW1lcygpID09IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5OworICAgIHJldHVy
biBfdXNlclN0eWxlU2hlZXQtPnVzZXJTdHlsZVNoZWV0KCkuaW5qZWN0ZWRGcmFtZXMoKSA9PSBX
ZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seTsK
IH0KIAogLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnQuY3Bw
CShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRVc2VyQ29udGVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEyICs1MCwxMiBAQCBz
dGF0aWMgaW5saW5lIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgCiB7CiAgICAgc3dpdGNoIChp
bmplY3RlZEZyYW1lcykgewogICAgIGNhc2UgV0VCS0lUX1VTRVJfQ09OVEVOVF9JTkpFQ1RfVE9Q
X0ZSQU1FOgotICAgICAgICByZXR1cm4gSW5qZWN0SW5Ub3BGcmFtZU9ubHk7CisgICAgICAgIHJl
dHVybiBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seTsKICAg
ICBjYXNlIFdFQktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX0FMTF9GUkFNRVM6Ci0gICAgICAgIHJl
dHVybiBJbmplY3RJbkFsbEZyYW1lczsKKyAgICAgICAgcmV0dXJuIFVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gSW5qZWN0SW5BbGxGcmFtZXM7CisgICAg
ICAgIHJldHVybiBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lczsK
ICAgICB9CiB9CiAKQEAgLTc2LDEyICs3NiwxMiBAQCBzdGF0aWMgaW5saW5lIFVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lIHRvCiB7CiAgICAgc3dpdGNoIChpbmplY3Rpb25UaW1lKSB7CiAgICAgY2Fz
ZSBXRUJLSVRfVVNFUl9TQ1JJUFRfSU5KRUNUX0FUX0RPQ1VNRU5UX1NUQVJUOgotICAgICAgICBy
ZXR1cm4gSW5qZWN0QXREb2N1bWVudFN0YXJ0OworICAgICAgICByZXR1cm4gVXNlclNjcmlwdElu
amVjdGlvblRpbWU6OkRvY3VtZW50U3RhcnQ7CiAgICAgY2FzZSBXRUJLSVRfVVNFUl9TQ1JJUFRf
SU5KRUNUX0FUX0RPQ1VNRU5UX0VORDoKLSAgICAgICAgcmV0dXJuIEluamVjdEF0RG9jdW1lbnRF
bmQ7CisgICAgICAgIHJldHVybiBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQ7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJl
dHVybiBJbmplY3RBdERvY3VtZW50U3RhcnQ7CisgICAgICAgIHJldHVybiBVc2VyU2NyaXB0SW5q
ZWN0aW9uVGltZTo6RG9jdW1lbnRTdGFydDsKICAgICB9CiB9CiAKQEAgLTIxNCw3ICsyMTQsNyBA
QCBzdHJ1Y3QgX1dlYktpdFVzZXJTY3JpcHQgewogICAgICAgICAgICAgU3RyaW5nOjpmcm9tVVRG
OChzb3VyY2UpLCBVUkwgeyB9LAogICAgICAgICAgICAgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0
KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwKICAgICAgICAgICAgIHRvVXNlclNjcmlwdElu
amVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksCi0gICAgICAgICAgICB0b1VzZXJDb250ZW50SW5q
ZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMpIH0sIHdvcmxkKSkpCisgICAgICAgICAgICB0b1Vz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMpLCBXZWJDb3JlOjpXYWl0Rm9y
Tm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9LCB3b3JsZCkpKQogICAgICAgICAsIHJl
ZmVyZW5jZUNvdW50KDEpCiAgICAgewogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzkyLDcgKzM5Miw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRV
c2VyU2MKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGF1dG8mIG1haW5G
cmFtZSA9IHBhZ2UubWFpbkZyYW1lKCk7Ci0gICAgICAgICAgICBpZiAodXNlclNjcmlwdC5pbmpl
Y3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5KSB7CisgICAgICAgICAgICBpZiAo
dXNlclNjcmlwdC5pbmplY3RlZEZyYW1lcygpID09IFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6
OkluamVjdEluVG9wRnJhbWVPbmx5KSB7CiAgICAgICAgICAgICAgICAgbWFpbkZyYW1lLmluamVj
dFVzZXJTY3JpcHRJbW1lZGlhdGVseSh3b3JsZC5jb3JlV29ybGQoKSwgdXNlclNjcmlwdCk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI1OTMyNCkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MjksNiArNTI5LDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBw
YWdlSUQsIAogI2VuZGlmCiAKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jb3JzRGlzYWJsaW5nUGF0
dGVybnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMuY29yc0Rpc2FibGluZ1BhdHRlcm5zKTsKKyAgICBw
YWdlQ29uZmlndXJhdGlvbi51c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiA9
IHBhcmFtZXRlcnMudXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb247CiAgICAg
aWYgKCFwYXJhbWV0ZXJzLmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCkKICAg
ICAgICAgQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlcjo6c2luZ2xldG9uKCku
c2V0Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKGZhbHNlKTsKIApAQCAtNjI3
Nyw2ICs2Mjc4LDE0IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlV2Vic2l0ZVBvbGljaWVzKFdlYnMK
ICNlbmRpZgogfQogCit2b2lkIFdlYlBhZ2U6Om5vdGlmeVVzZXJTY3JpcHRzKCkKK3sKKyAgICBp
ZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYWdlLT5ub3RpZnlUb0luamVj
dFVzZXJTY3JpcHRzKCk7Cit9CisKIHVuc2lnbmVkIFdlYlBhZ2U6OmV4dGVuZEluY3JlbWVudGFs
UmVuZGVyaW5nU3VwcHJlc3Npb24oKQogewogICAgIHVuc2lnbmVkIHRva2VuID0gbV9tYXhpbXVt
UmVuZGVyaW5nU3VwcHJlc3Npb25Ub2tlbiArIDE7CkBAIC02NDI5LDcgKzY0MzgsNyBAQCB2b2lk
IFdlYlBhZ2U6OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoCiAKIHZvaWQgV2ViUGFnZTo6YWRk
VXNlclNjcmlwdChTdHJpbmcmJiBzb3VyY2UsIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmIHdv
cmxkLCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBX
ZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lKQogewotICAgIFdl
YkNvcmU6OlVzZXJTY3JpcHQgdXNlclNjcmlwdCB7IFdURk1vdmUoc291cmNlKSwgVVJMKGFib3V0
QmxhbmtVUkwoKSksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIGluamVjdGlv
blRpbWUsIGluamVjdGVkRnJhbWVzIH07CisgICAgV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2Ny
aXB0IHsgV1RGTW92ZShzb3VyY2UpLCBVUkwoYWJvdXRCbGFua1VSTCgpKSwgVmVjdG9yPFN0cmlu
Zz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMsIFdl
YkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Ok5vIH07CiAKICAgICBt
X3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclNjcmlwdCh3b3JsZCwgV1RGTW92ZSh1c2Vy
U2NyaXB0KSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2MTYsNiArMTYxNiw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCByZXBvcnRVc2VkRmVhdHVyZXMoKTsKIAogICAgIHZvaWQgdXBkYXRlV2Vi
c2l0ZVBvbGljaWVzKFdlYnNpdGVQb2xpY2llc0RhdGEmJik7CisgICAgdm9pZCBub3RpZnlVc2Vy
U2NyaXB0cygpOwogCiAgICAgdm9pZCBjaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2VzJiYp
OwogICAgIHZvaWQgY2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNo
YW5nZXMmJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTE4Niw2ICsxODYsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06
dWluCiAgICAgRGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKHN0cnVjdCBXZWJDb3JlOjpCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyIGJhY2tGb3J3YXJkSXRlbUlEKQogCiAgICAgVXBkYXRlV2Vic2l0
ZVBvbGljaWVzKHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGEgd2Vic2l0ZVBvbGlj
aWVzKQorICAgIE5vdGlmeVVzZXJTY3JpcHRzKCkKICAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNp
b24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IHN0cnVjdCBXZWJLaXQ6OlBvbGljeURlY2lzaW9uIHBvbGljeURlY2lzaW9uKQogCiAgICAgQ29u
dGludWVXaWxsU3VibWl0Rm9ybShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWlu
dDY0X3QgbGlzdGVuZXJJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAzLTMxICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0byBtYWtlIFdLVXNl
clNjcmlwdHMgd2FpdCBmb3IgYSBub3RpZmljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTg0NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NjAzNDIyOTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2luamVjdE91dGxv
b2tRdWlya3NTY3JpcHRdKToKKwogMjAyMC0wMy0zMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcHJvdmlkZSBhIHdheSB0byBsb2cg
bWVzc2FnZXMgZnJvbSB0aGUgbmV0d29yayBwcm9jZXNzCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTEy
MjcsNyArMTIyNyw3IEBAIHN0YXRpYyBOU1N0cmluZyAqbGVha091dGxvb2tRdWlya3NVc2VyU2MK
IC0odm9pZClfaW5qZWN0T3V0bG9va1F1aXJrc1NjcmlwdAogewogICAgIHN0YXRpYyBOU1N0cmlu
ZyAqb3V0bG9va1F1aXJrc1NjcmlwdENvbnRlbnRzID0gbGVha091dGxvb2tRdWlya3NVc2VyU2Ny
aXB0Q29udGVudHMoKTsKLSAgICBfcHJpdmF0ZS0+Z3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxl
cigpLmFkZFVzZXJTY3JpcHQoKmNvcmUoW1dlYlNjcmlwdFdvcmxkIHdvcmxkXSksIG1ha2VVbmlx
dWU8V2ViQ29yZTo6VXNlclNjcmlwdD4ob3V0bG9va1F1aXJrc1NjcmlwdENvbnRlbnRzLCBVUkwo
KSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgV2ViQ29yZTo6SW5qZWN0QXRE
b2N1bWVudEVuZCwgV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMpKTsKKyAgICBfcHJpdmF0ZS0+
Z3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQoKmNvcmUoW1dlYlNj
cmlwdFdvcmxkIHdvcmxkXSksIG1ha2VVbmlxdWU8V2ViQ29yZTo6VXNlclNjcmlwdD4ob3V0bG9v
a1F1aXJrc1NjcmlwdENvbnRlbnRzLCBVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0
cmluZz4oKSwgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50RW5kLCBX
ZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2Vi
Q29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6Tm8pKTsKIAogfQogI2Vu
ZGlmCkBAIC00Njc2LDcgKzQ2NzYsNyBAQCArICh2b2lkKV9hZGRVc2VyU2NyaXB0VG9Hcm91cDoo
TlNTdHJpbmcgCiAgICAgaWYgKCF3b3JsZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byB1
c2VyU2NyaXB0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpVc2VyU2NyaXB0Pihzb3VyY2UsIHVybCwg
dG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5q
ZWN0aW9uVGltZSA9PSBXZWJJbmplY3RBdERvY3VtZW50U3RhcnQgPyBXZWJDb3JlOjpJbmplY3RB
dERvY3VtZW50U3RhcnQgOiBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50RW5kLCBpbmplY3RlZEZy
YW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVz
IDogV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkpOworICAgIGF1dG8gdXNlclNjcmlwdCA9
IG1ha2VVbmlxdWU8V2ViQ29yZTo6VXNlclNjcmlwdD4oc291cmNlLCB1cmwsIHRvU3RyaW5nVmVj
dG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGlvblRpbWUg
PT0gV2ViSW5qZWN0QXREb2N1bWVudFN0YXJ0ID8gV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlv
blRpbWU6OkRvY3VtZW50U3RhcnQgOiBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6
RG9jdW1lbnRFbmQsIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gV2Vi
Q29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMgOiBXZWJD
b3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSwgV2Vi
Q29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6Tm8pOwogICAgIHZpZXdH
cm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCgqY29yZSh3b3JsZCks
IFdURk1vdmUodXNlclNjcmlwdCkpOwogfQogCkBAIC00Njk5LDcgKzQ2OTksNyBAQCArICh2b2lk
KV9hZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6KE5TU3RyCiAgICAgaWYgKCF3b3JsZCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYXV0byBzdHlsZVNoZWV0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpV
c2VyU3R5bGVTaGVldD4oc291cmNlLCB1cmwsIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRv
U3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxs
RnJhbWVzID8gV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgOiBXZWJDb3JlOjpJbmplY3RJblRv
cEZyYW1lT25seSwgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsKTsKKyAgICBhdXRvIHN0eWxl
U2hlZXQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0Pihzb3VyY2UsIHVybCwg
dG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5q
ZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBXZWJDb3JlOjpVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcyA6IFdlYkNvcmU6OlVzZXJDb250ZW50
SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5LCBXZWJDb3JlOjpVc2VyU3R5bGVV
c2VyTGV2ZWwpOwogICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNl
clN0eWxlU2hlZXQoKmNvcmUod29ybGQpLCBXVEZNb3ZlKHN0eWxlU2hlZXQpLCBXZWJDb3JlOjpJ
bmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwkocmV2aXNpb24gMjU5MzQ3KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDQtMDEgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJ
IHRvIG1ha2UgV0tVc2VyU2NyaXB0cyB3YWl0IGZvciBhIG5vdGlmaWNhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5ODQ1CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82MDM0MjI5OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6YWRkVXNl
clNjcmlwdFRvR3JvdXApOgorICAgICAgICAoV2ViVmlldzo6YWRkVXNlclN0eWxlU2hlZXRUb0dy
b3VwKToKKwogMjAyMC0wMy0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBzY3JvbGxJbnRvVmlldygpIGVycm9uZW91c2x5IHNjcm9sbHMgbm9uLWNv
bnRhaW5pbmcgYmxvY2sgc2Nyb2xsZXJzCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3
LmNwcAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwMDYsOCArNzAwNiw4IEBAIEhSRVNVTFQgV2ViVmll
dzo6YWRkVXNlclNjcmlwdFRvR3JvdXAoX0kKIAogICAgIFdlYlNjcmlwdFdvcmxkKiB3b3JsZCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViU2NyaXB0V29ybGQqPihpV29ybGQpOwogICAgIGF1dG8gdXNl
clNjcmlwdCA9IG1ha2VVbmlxdWU8VXNlclNjcmlwdD4oc291cmNlLCB0b1VSTCh1cmwpLCB0b1N0
cmluZ1ZlY3Rvcih3aGl0ZWxpc3QsIHdoaXRlbGlzdENvdW50KSwKLSAgICAgICAgdG9TdHJpbmdW
ZWN0b3IoYmxhY2tsaXN0LCBibGFja2xpc3RDb3VudCksIGluamVjdGlvblRpbWUgPT0gV2ViSW5q
ZWN0QXREb2N1bWVudFN0YXJ0ID8gSW5qZWN0QXREb2N1bWVudFN0YXJ0IDogSW5qZWN0QXREb2N1
bWVudEVuZCwKLSAgICAgICAgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMg
PyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5KTsKKyAgICAgICAgdG9T
dHJpbmdWZWN0b3IoYmxhY2tsaXN0LCBibGFja2xpc3RDb3VudCksIGluamVjdGlvblRpbWUgPT0g
V2ViSW5qZWN0QXREb2N1bWVudFN0YXJ0ID8gVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3Vt
ZW50U3RhcnQgOiBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQsCisgICAgICAg
IGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gVXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMgOiBVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
OjpJbmplY3RJblRvcEZyYW1lT25seSwgV2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGlu
Zzo6Tm8pOwogICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNj
cmlwdCh3b3JsZC0+d29ybGQoKSwgV1RGTW92ZSh1c2VyU2NyaXB0KSk7CiAgICAgcmV0dXJuIFNf
T0s7CiB9CkBAIC03MDMzLDcgKzcwMzMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmFkZFVzZXJTdHls
ZVNoZWV0VG9Hcm91CiAKICAgICBXZWJTY3JpcHRXb3JsZCogd29ybGQgPSByZWludGVycHJldF9j
YXN0PFdlYlNjcmlwdFdvcmxkKj4oaVdvcmxkKTsKICAgICBhdXRvIHN0eWxlU2hlZXQgPSBtYWtl
VW5pcXVlPFVzZXJTdHlsZVNoZWV0Pihzb3VyY2UsIHRvVVJMKHVybCksIHRvU3RyaW5nVmVjdG9y
KHdoaXRlbGlzdCwgd2hpdGVsaXN0Q291bnQpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QsIGJs
YWNrbGlzdENvdW50KSwKLSAgICAgICAgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxG
cmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5LCBVc2VyU3R5
bGVVc2VyTGV2ZWwpOworICAgICAgICBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZy
YW1lcyA/IFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzIDogVXNl
ckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHksIFVzZXJTdHlsZVVz
ZXJMZXZlbCk7CiAgICAgdmlld0dyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2Vy
U3R5bGVTaGVldCh3b3JsZC0+d29ybGQoKSwgV1RGTW92ZShzdHlsZVNoZWV0KSwgSW5qZWN0SW5F
eGlzdGluZ0RvY3VtZW50cyk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CkluZGV4OiBUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTkzMzYpCisr
KyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0w
My0zMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAg
ICAgIEFkZCBTUEkgdG8gbWFrZSBXS1VzZXJTY3JpcHRzIHdhaXQgZm9yIGEgbm90aWZpY2F0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk4NDUK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwMzQyMjk5PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIubW06CisgICAgICAgIChURVNUKToKKwogMjAyMC0w
My0zMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXF1ZXN0cyBmb3IgbWVzc2FnZUhhbmRsZXJzKCkgaW4gdGhlIERPTVdpbmRvdyBzaG91bGQg
YmUgaWdub3JlZCBmb3Igbm9uLWFwcC1ib3VuZCBuYXZpZ2F0aW9ucwpJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29u
dGVudENvbnRyb2xsZXIubW0JKHJldmlzaW9uIDI1OTMwNikKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCwxMCArMjgsMTMgQEAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAj
aW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisjaW1w
b3J0ICJUZXN0VUlEZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9y
dCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVc2Vy
Q29udGVudENvbnRyb2xsZXJQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVc2VyU2NyaXB0
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVc2VyU2NyaXB0UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2Vi
S2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+CiAj
aW1wb3J0IDxXZWJLaXQvX1dLVXNlckNvbnRlbnRXb3JsZC5oPgpAQCAtODExLDMgKzgxNCwzMCBA
QCBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBJbmplY3RVc2VyCiAgICAgd2FpdEZvck1l
c3NhZ2VzKDYpOwogICAgIGNvbXBhcmVNZXNzYWdlcyh7InN0YXJ0IGFsbCIsICJzdGFydCBhbGwi
LCAiZW5kIG1haW4iLCAic3RhcnQgYWxsIiwgImVuZCBtYWluIiwgInN0YXJ0IGFsbCJ9KTsKIH0K
KworVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgVXNlclNjcmlwdE5vdGlmaWNhdGlvbikK
K3sKKyAgICBXS1VzZXJTY3JpcHQgKndhaXRzRm9yTm90aWZpY2F0aW9uID0gW1tbV0tVc2VyU2Ny
aXB0IGFsbG9jXSBfaW5pdFdpdGhTb3VyY2U6QCJhbGVydCgnd2FpdGVkIGZvciBub3RpZmljYXRp
b24nKSIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0
YXJ0IGZvck1haW5GcmFtZU9ubHk6WUVTIGxlZ2FjeVdoaXRlbGlzdDpbTlNBcnJheSBhcnJheV0g
bGVnYWN5QmxhY2tsaXN0OltOU0FycmF5IGFycmF5XSBhc3NvY2lhdGVkVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOkAidGVzdDovLy9zY3JpcHQiXSBjb250ZW50V29ybGQ6W1dLQ29udGVudFdvcmxk
IGRlZmF1bHRDbGllbnRXb3JsZF0gd2FpdEZvck5vdGlmaWNhdGlvbjpZRVNdIGF1dG9yZWxlYXNl
XTsKKyAgICBXS1VzZXJTY3JpcHQgKmRvY3VtZW50RW5kID0gW1tbV0tVc2VyU2NyaXB0IGFsbG9j
XSBpbml0V2l0aFNvdXJjZTpAImFsZXJ0KCdkb2N1bWVudCBwYXJzaW5nIGVuZGVkJykiIGluamVj
dGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRFbmQgZm9yTWFpbkZy
YW1lT25seTpZRVNdIGF1dG9yZWxlYXNlXTsKKworICAgIFRlc3RXS1dlYlZpZXcgKndlYlZpZXcx
ID0gW1tUZXN0V0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIFt3ZWJWaWV3MS5jb25m
aWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciBhZGRVc2VyU2NyaXB0OndhaXRzRm9yTm90
aWZpY2F0aW9uXTsKKyAgICBbd2ViVmlldzEuY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRy
b2xsZXIgYWRkVXNlclNjcmlwdDpkb2N1bWVudEVuZF07CisgICAgVGVzdFVJRGVsZWdhdGUgKmRl
bGVnYXRlID0gW1tUZXN0VUlEZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3
MS5VSURlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgW3dlYlZpZXcxIGxvYWRUZXN0UGFnZU5hbWVk
OkAic2ltcGxlIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKFtkZWxlZ2F0ZSB3YWl0Rm9yQWxlcnRd
LCAiZG9jdW1lbnQgcGFyc2luZyBlbmRlZCIpOworICAgIFt3ZWJWaWV3MSBfbm90aWZ5VXNlclNj
cmlwdHNdOworICAgIEVYUEVDVF9XS19TVFJFUShbZGVsZWdhdGUgd2FpdEZvckFsZXJ0XSwgIndh
aXRlZCBmb3Igbm90aWZpY2F0aW9uIik7CisKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpj
b25maWd1cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10gYXV0b3JlbGVhc2Vd
OworICAgIEVYUEVDVF9UUlVFKGNvbmZpZ3VyYXRpb24uX3VzZXJTY3JpcHRzU2hvdWxkV2FpdFVu
dGlsTm90aWZpY2F0aW9uKTsKKyAgICBjb25maWd1cmF0aW9uLl91c2VyU2NyaXB0c1Nob3VsZFdh
aXRVbnRpbE5vdGlmaWNhdGlvbiA9IE5POworICAgIFRlc3RXS1dlYlZpZXcgKndlYlZpZXcyID0g
W1tbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKKyAgICBb
d2ViVmlldzIuY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgYWRkVXNlclNjcmlw
dDp3YWl0c0Zvck5vdGlmaWNhdGlvbl07CisgICAgW3dlYlZpZXcyLmNvbmZpZ3VyYXRpb24udXNl
ckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6ZG9jdW1lbnRFbmRdOworICAgIHdlYlZp
ZXcyLlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBbd2ViVmlldzIgbG9hZFRlc3RQYWdlTmFt
ZWQ6QCJzaW1wbGUiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW2RlbGVnYXRlIHdhaXRGb3JBbGVy
dF0sICJ3YWl0ZWQgZm9yIG5vdGlmaWNhdGlvbiIpOworICAgIEVYUEVDVF9XS19TVFJFUShbZGVs
ZWdhdGUgd2FpdEZvckFsZXJ0XSwgImRvY3VtZW50IHBhcnNpbmcgZW5kZWQiKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395183</attachid>
            <date>2020-04-01 10:24:59 -0700</date>
            <delta_ts>2020-04-03 16:42:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209845-20200401102459.patch</filename>
            <type>text/plain</type>
            <size>70048</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDIwLTAzLTMxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byBtYWtlIFdLVXNlclNjcmlwdHMgd2FpdCBmb3IgYSBub3RpZmljYXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTg0NQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjAzNDIyOTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlcmUncyBhbHNvIFNQSSBvbiBXS1dlYlZpZXcgdG8gcHJvdmlkZSB0
aGlzIG5vdGlmaWNhdGlvbiwgYW5kIG9uIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gdG8gc3RhcnQg
b3V0IHdpdGggdGhpcyBub3RpZmljYXRpb24uCisKKyAgICAgICAgKiBkb20vRXh0ZW5zaW9uU3R5
bGVTaGVldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uU3R5bGVTaGVldHM6OnVw
ZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0ltYWdl
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9j
dW1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIGh0bWwvTWVkaWFEb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYURvY3VtZW50UGFyc2VyOjpjcmVhdGVEb2N1bWVudFN0cnVjdHVy
ZSk6CisgICAgICAgICogaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5Eb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUpOgorICAgICAg
ICAqIGh0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpkaXNwYXRjaERvY3VtZW50RWxlbWVudEF2YWlsYWJs
ZUlmTmVlZGVkKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmZpbmlzaGVkUGFyc2luZyk6CisgICAgICAgICogcGFnZS9G
cmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5qZWN0VXNlclNjcmlwdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSk6Cisg
ICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1fZGV2aWNlT3JpZW50
YXRpb25VcGRhdGVQcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpub3RpZnlUb0lu
amVjdFVzZXJTY3JpcHRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFkZFVzZXJTY3JpcHRB
d2FpdGluZ05vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppbmplY3RVc2Vy
U3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZW1vdmVJbmplY3RlZFVzZXJT
dHlsZVNoZWV0KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6Omhhc0JlZW5Ob3RpZmllZFRvSW5qZWN0VXNlclNjcmlwdHMgY29uc3QpOgorICAgICAgICAq
IHBhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50VHlw
ZXMuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9Vc2VyU2NyaXB0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyU2NyaXB0OjpVc2VyU2NyaXB0KToKKyAgICAgICAgKFdl
YkNvcmU6OlVzZXJTY3JpcHQ6OndhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3RpbmcgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VXNlclNjcmlwdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlVzZXJTY3JpcHQ6OmRlY29kZSk6CisgICAgICAgICogcGFnZS9Vc2VyU2Ny
aXB0VHlwZXMuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9Vc2VyU3R5
bGVTaGVldC5oOgorICAgICAgICAoV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ6OlVzZXJTdHlsZVNo
ZWV0KToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6c3RhcnRFbGVtZW50TnMpOgor
CiAyMDIwLTAzLTMxICBQaW5raSBHeWFuY2hhbmRhbmkgIDxwZ3lhbmNoYW5kYW5pQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbnZhbGlkIG1lbW9yeSBhY2Nlc3MgQCBXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXh0ZW5z
aW9uU3R5bGVTaGVldHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FeHRl
bnNpb25TdHlsZVNoZWV0cy5jcHAJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw3ICsx
MzgsNyBAQCB2b2lkIEV4dGVuc2lvblN0eWxlU2hlZXRzOjp1cGRhdGVJbmplY3RlCiAgICAgICAg
IGlmICh1c2VyU3R5bGVTaGVldC5wYWdlSUQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICBpZiAodXNlclN0eWxlU2hlZXQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBJbmplY3RJblRvcEZy
YW1lT25seSAmJiBtX2RvY3VtZW50Lm93bmVyRWxlbWVudCgpKQorICAgICAgICBpZiAodXNlclN0
eWxlU2hlZXQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJ
bmplY3RJblRvcEZyYW1lT25seSAmJiBtX2RvY3VtZW50Lm93bmVyRWxlbWVudCgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRj
aGVzUGF0dGVybnMobV9kb2N1bWVudC51cmwoKSwgdXNlclN0eWxlU2hlZXQud2hpdGVsaXN0KCks
IHVzZXJTdHlsZVNoZWV0LmJsYWNrbGlzdCgpKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZURvY3VtZW50LmNwcAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZURvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDcgKzIyMSw3IEBAIHZvaWQg
SW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3QKICAgICBhcHBlbmRDaGlsZChyb290
RWxlbWVudCk7CiAgICAgcm9vdEVsZW1lbnQtPmluc2VydGVkQnlQYXJzZXIoKTsKIAotICAgIGZy
YW1lKCktPmluamVjdFVzZXJTY3JpcHRzKEluamVjdEF0RG9jdW1lbnRTdGFydCk7CisgICAgZnJh
bWUoKS0+aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50
U3RhcnQpOwogCiAgICAgLy8gV2UgbmVlZCBhIDxoZWFkPiBzbyB0aGF0IHRoZSBjYWxsIHRvIHNl
dFRpdGxlKCkgbGF0ZXIgb24gYWN0dWFsbHkgaGFzIGFuIDxoZWFkPiB0byBhcHBlbmQgdG8gPHRp
dGxlPiB0by4KICAgICBhdXRvIGhlYWQgPSBIVE1MSGVhZEVsZW1lbnQ6OmNyZWF0ZSgqdGhpcyk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAJKHJldmlzaW9uIDI1OTMw
NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBNZWRpYURvY3VtZW50UGFyc2VyOjpjcmVhdGVEb2N1
bWVudAogICAgIHJvb3RFbGVtZW50LT5pbnNlcnRlZEJ5UGFyc2VyKCk7CiAKICAgICBpZiAoZG9j
dW1lbnQuZnJhbWUoKSkKLSAgICAgICAgZG9jdW1lbnQuZnJhbWUoKS0+aW5qZWN0VXNlclNjcmlw
dHMoSW5qZWN0QXREb2N1bWVudFN0YXJ0KTsKKyAgICAgICAgZG9jdW1lbnQuZnJhbWUoKS0+aW5q
ZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50U3RhcnQpOwog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBhdXRvIGhlYWRFbGVtZW50ID0gSFRNTEhl
YWRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9Q
bHVnaW5Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9QbHVn
aW5Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
UGx1Z2luRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQg
UGx1Z2luRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3VtZW4KICAgICByb290RWxlbWVudC0+aW5z
ZXJ0ZWRCeVBhcnNlcigpOwogCiAgICAgaWYgKGRvY3VtZW50LmZyYW1lKCkpCi0gICAgICAgIGRv
Y3VtZW50LmZyYW1lKCktPmluamVjdFVzZXJTY3JpcHRzKEluamVjdEF0RG9jdW1lbnRTdGFydCk7
CisgICAgICAgIGRvY3VtZW50LmZyYW1lKCktPmluamVjdFVzZXJTY3JpcHRzKFVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lOjpEb2N1bWVudFN0YXJ0KTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgLy8gU2hvdWxkIG5vdCBiZSBhYmxlIHRvIHpvb20gaW50byBzdGFuZGFsb25lIHBsdWct
aW4gZG9jdW1lbnRzLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0
cnVjdGlvblNpdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6ZGlzcGF0Y2hE
b2N1bQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIo
bV9kb2N1bWVudC5mcmFtZSgpKSkKLSAgICAgICAgZnJhbWUtPmluamVjdFVzZXJTY3JpcHRzKElu
amVjdEF0RG9jdW1lbnRTdGFydCk7CisgICAgICAgIGZyYW1lLT5pbmplY3RVc2VyU2NyaXB0cyhV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRTdGFydCk7CiB9CiAKIHZvaWQgSFRNTENv
bnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxIdG1sU3RhcnRUYWdCZWZvcmVIVE1MKEF0b21pY0hU
TUxUb2tlbiYmIHRva2VuKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OTMsNyArNzkzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
ZmluaXNoZWRQYXJzaW5nKCkKIHsKICAgICBMT0coTG9hZGluZywgIldlYkNvcmVMb2FkaW5nICVz
OiBGaW5pc2hlZCBwYXJzaW5nIiwgbV9mcmFtZS50cmVlKCkudW5pcXVlTmFtZSgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgbV9mcmFtZS5pbmplY3RVc2VyU2NyaXB0cyhJbmplY3RB
dERvY3VtZW50RW5kKTsKKyAgICBtX2ZyYW1lLmluamVjdFVzZXJTY3JpcHRzKFVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lOjpEb2N1bWVudEVuZCk7CiAKICAgICBpZiAobV9zdGF0ZU1hY2hpbmUuY3Jl
YXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxOCw5ICs2MTgsMTQgQEAgdm9pZCBGcmFtZTo6
aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdAogICAgIGlmIChsb2FkZXIoKS5zdGF0ZU1hY2hp
bmUoKS5jcmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkgJiYgIXNldHRpbmdzKCkuc2hvdWxk
SW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3VtZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fcGFnZS0+dXNlckNvbnRlbnRQcm92aWRlcigpLmZvckVhY2hVc2VyU2NyaXB0
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluamVjdGlvblRpbWVdKERP
TVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVzZXJTY3JpcHQmIHNjcmlwdCkgewotICAgICAg
ICBpZiAoc2NyaXB0LmluamVjdGlvblRpbWUoKSA9PSBpbmplY3Rpb25UaW1lKQotICAgICAgICAg
ICAgaW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KHdvcmxkLCBzY3JpcHQpOworICAgIGJvb2wg
cGFnZVdhc05vdGlmaWVkID0gbV9wYWdlLT5oYXNCZWVuTm90aWZpZWRUb0luamVjdFVzZXJTY3Jp
cHRzKCk7CisgICAgbV9wYWdlLT51c2VyQ29udGVudFByb3ZpZGVyKCkuZm9yRWFjaFVzZXJTY3Jp
cHQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5qZWN0aW9uVGltZSwg
cGFnZVdhc05vdGlmaWVkXSAoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgVXNlclNjcmlw
dCYgc2NyaXB0KSB7CisgICAgICAgIGlmIChzY3JpcHQuaW5qZWN0aW9uVGltZSgpID09IGluamVj
dGlvblRpbWUpIHsKKyAgICAgICAgICAgIGlmIChzY3JpcHQud2FpdEZvck5vdGlmaWNhdGlvbkJl
Zm9yZUluamVjdGluZygpID09IFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Olll
cyAmJiAhcGFnZVdhc05vdGlmaWVkKQorICAgICAgICAgICAgICAgIG1fcGFnZS0+YWRkVXNlclNj
cmlwdEF3YWl0aW5nTm90aWZpY2F0aW9uKHdvcmxkLCBzY3JpcHQpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSh3b3JsZCwgc2Ny
aXB0KTsKKyAgICAgICAgfQogICAgIH0pOwogfQogCkBAIC02MzYsNyArNjQxLDcgQEAgdm9pZCBG
cmFtZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KAogICAgIGF1dG8qIGRvY3VtZW50ID0g
dGhpcy0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm47Ci0g
ICAgaWYgKHNjcmlwdC5pbmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5ICYm
ICFpc01haW5GcmFtZSgpKQorICAgIGlmIChzY3JpcHQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSAmJiAhaXNNYWluRnJh
bWUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpt
YXRjaGVzUGF0dGVybnMoZG9jdW1lbnQtPnVybCgpLCBzY3JpcHQud2hpdGVsaXN0KCksIHNjcmlw
dC5ibGFja2xpc3QoKSkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAko
cmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI0LDYgKzEyNCw3IEBACiAjaW5jbHVkZSAiVXNlckNvbnRlbnRQcm92aWRl
ci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgogI2luY2x1ZGUgIlVzZXJJ
bnB1dEJyaWRnZS5oIgorI2luY2x1ZGUgIlVzZXJTY3JpcHQuaCIKICNpbmNsdWRlICJVc2VyU3R5
bGVTaGVldC5oIgogI2luY2x1ZGUgIlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiVmlzaXRlZExpbmtTdGF0ZS5oIgpAQCAtMzM1LDYgKzMzNiw5IEBAIFBhZ2U6OlBhZ2UoUGFn
ZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICAgICAgICAgICAgIG1fY29yc0Rpc2FibGluZ1Bh
dHRlcm5zLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKHBhcnNlZFBhdHRlcm4pKTsKICAgICB9CiAg
ICAgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMuc2hyaW5rVG9GaXQoKTsKKyAgICAKKyAgICBpZiAo
IXBhZ2VDb25maWd1cmF0aW9uLnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9u
KQorICAgICAgICBtX2hhc0JlZW5Ob3RpZmllZFRvSW5qZWN0VXNlclNjcmlwdHMgPSB0cnVlOwog
fQogCiBQYWdlOjp+UGFnZSgpCkBAIC0yNDg5LDYgKzI0OTMsMjAgQEAgVXNlckNvbnRlbnRQcm92
aWRlciYgUGFnZTo6dXNlckNvbnRlbnRQcgogICAgIHJldHVybiBtX3VzZXJDb250ZW50UHJvdmlk
ZXI7CiB9CiAKK3ZvaWQgUGFnZTo6bm90aWZ5VG9JbmplY3RVc2VyU2NyaXB0cygpCit7CisgICAg
Zm9yIChhdXRvKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBt
X3VzZXJTY3JpcHRzQXdhaXRpbmdOb3RpZmljYXRpb24pCisgICAgICAgICAgICBmcmFtZS0+aW5q
ZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25kLmdldCgpKTsK
KyAgICB9CisgICAgbV91c2VyU2NyaXB0c0F3YWl0aW5nTm90aWZpY2F0aW9uLmNsZWFyKCk7Cit9
CisKK3ZvaWQgUGFnZTo6YWRkVXNlclNjcmlwdEF3YWl0aW5nTm90aWZpY2F0aW9uKERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVzZXJTY3JpcHQmIHNjcmlwdCkKK3sKKyAgICBtX3VzZXJT
Y3JpcHRzQXdhaXRpbmdOb3RpZmljYXRpb24uYXBwZW5kKHsgbWFrZVJlZih3b3JsZCksIG1ha2VV
bmlxdWVSZWY8VXNlclNjcmlwdD4oc2NyaXB0KSB9KTsKK30KKwogdm9pZCBQYWdlOjpzZXRVc2Vy
Q29udGVudFByb3ZpZGVyKFJlZjxVc2VyQ29udGVudFByb3ZpZGVyPiYmIHVzZXJDb250ZW50UHJv
dmlkZXIpCiB7CiAgICAgbV91c2VyQ29udGVudFByb3ZpZGVyLT5yZW1vdmVQYWdlKCp0aGlzKTsK
QEAgLTMwNzQsNyArMzA5Miw3IEBAIHZvaWQgUGFnZTo6aW5qZWN0VXNlclN0eWxlU2hlZXQoVXNl
clN0eWwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICh1c2VyU3R5bGVTaGVldC5p
bmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5KSB7CisgICAgaWYgKHVzZXJT
dHlsZVNoZWV0LmluamVjdGVkRnJhbWVzKCkgPT0gVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6
SW5qZWN0SW5Ub3BGcmFtZU9ubHkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9t
YWluRnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBkb2N1bWVudC0+ZXh0ZW5zaW9uU3R5
bGVTaGVldHMoKS5pbmplY3RQYWdlU3BlY2lmaWNVc2VyU3R5bGVTaGVldCh1c2VyU3R5bGVTaGVl
dCk7CiAgICAgfSBlbHNlIHsKQEAgLTMwOTMsNyArMzExMSw3IEBAIHZvaWQgUGFnZTo6cmVtb3Zl
SW5qZWN0ZWRVc2VyU3R5bGVTaGVldCgKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
ICh1c2VyU3R5bGVTaGVldC5pbmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5
KSB7CisgICAgaWYgKHVzZXJTdHlsZVNoZWV0LmluamVjdGVkRnJhbWVzKCkgPT0gVXNlckNvbnRl
bnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkpIHsKICAgICAgICAgaWYgKGF1
dG8qIGRvY3VtZW50ID0gbV9tYWluRnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBkb2N1
bWVudC0+ZXh0ZW5zaW9uU3R5bGVTaGVldHMoKS5yZW1vdmVQYWdlU3BlY2lmaWNVc2VyU3R5bGVT
aGVldCh1c2VyU3R5bGVTaGVldCk7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShy
ZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMTQwLDYgKzE0MCw3IEBAIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjsK
IGNsYXNzIFVzZXJDb250ZW50UHJvdmlkZXI7CiBjbGFzcyBVc2VyQ29udGVudFVSTFBhdHRlcm47
CiBjbGFzcyBVc2VySW5wdXRCcmlkZ2U7CitjbGFzcyBVc2VyU2NyaXB0OwogY2xhc3MgVXNlclN0
eWxlU2hlZXQ7CiBjbGFzcyBWYWxpZGF0aW9uTWVzc2FnZUNsaWVudDsKIGNsYXNzIFZpc2libGVT
ZWxlY3Rpb247CkBAIC03MjksNiArNzMwLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZEZp
cmVSZXNpemVFdmVudHMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZEZpcmVSZXNpemVFdmVudHM7
IH0KICAgICB2b2lkIHNldFNob3VsZEZpcmVSZXNpemVFdmVudHMoYm9vbCBzaG91bGRGaXJlUmVz
aXplRXZlbnRzKSB7IG1fc2hvdWxkRmlyZVJlc2l6ZUV2ZW50cyA9IHNob3VsZEZpcmVSZXNpemVF
dmVudHM7IH0KIAorICAgIGJvb2wgaGFzQmVlbk5vdGlmaWVkVG9JbmplY3RVc2VyU2NyaXB0cygp
IGNvbnN0IHsgcmV0dXJuIG1faGFzQmVlbk5vdGlmaWVkVG9JbmplY3RVc2VyU2NyaXB0czsgfQor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5VG9JbmplY3RVc2VyU2NyaXB0cygpOworICAg
IHZvaWQgYWRkVXNlclNjcmlwdEF3YWl0aW5nTm90aWZpY2F0aW9uKERPTVdyYXBwZXJXb3JsZCYs
IGNvbnN0IFVzZXJTY3JpcHQmKTsKKwogcHJpdmF0ZToKICAgICBzdHJ1Y3QgTmF2aWdhdGlvbiB7
CiAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbjsKQEAgLTEwMDgsNiArMTAxMyw5IEBA
IHByaXZhdGU6CiAgICAgVmVjdG9yPFVzZXJDb250ZW50VVJMUGF0dGVybj4gbV9jb3JzRGlzYWJs
aW5nUGF0dGVybnM7CiAgICAgVmVjdG9yPFVzZXJTdHlsZVNoZWV0PiBtX3VzZXJTdHlsZVNoZWV0
c1BlbmRpbmdJbmplY3Rpb247CiAgICAgYm9vbCBtX3Nob3VsZEZpcmVSZXNpemVFdmVudHMgeyB0
cnVlIH07CisgICAgCisgICAgYm9vbCBtX2hhc0JlZW5Ob3RpZmllZFRvSW5qZWN0VXNlclNjcmlw
dHMgeyBmYWxzZSB9OworICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmPERPTVdyYXBwZXJXb3JsZD4s
IFVuaXF1ZVJlZjxVc2VyU2NyaXB0Pj4+IG1fdXNlclNjcmlwdHNBd2FpdGluZ05vdGlmaWNhdGlv
bjsKIH07CiAKIGlubGluZSBQYWdlR3JvdXAmIFBhZ2U6Omdyb3VwKCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTI3
LDYgKzEyNyw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIFZlY3RvcjxTdHJpbmc+IGNvcnNEaXNh
YmxpbmdQYXR0ZXJuczsKICAgICBVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPiBtZWRp
YVJlY29yZGVyUHJvdmlkZXI7CisgICAgYm9vbCB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5v
dGlmaWNhdGlvbiB7IHRydWUgfTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlckNvbnRlbnRUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
ckNvbnRlbnRUeXBlcy5oCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJDb250ZW50VHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyB7IElu
amVjdEluQWxsRnJhbWVzLCBJbmplY3RJblRvcEZyYW1lT25seSB9OworZW51bSBjbGFzcyBVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzIDogYm9vbCB7IEluamVjdEluQWxsRnJhbWVzLCBJbmplY3RJ
blRvcEZyYW1lT25seSB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1VzZXJTY3JpcHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJTY3JpcHQuaAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9Vc2VyU2NyaXB0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE2ICszNSwyMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBVc2VyU2NyaXB0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBVc2VyU2NyaXB0KCkgPSBkZWZhdWx0OwogICAgIH5Vc2VyU2Ny
aXB0KCkgPSBkZWZhdWx0OworICAgIFVzZXJTY3JpcHQoY29uc3QgVXNlclNjcmlwdCYpID0gZGVm
YXVsdDsKKyAgICBVc2VyU2NyaXB0KFVzZXJTY3JpcHQmJikgPSBkZWZhdWx0OworICAgIFVzZXJT
Y3JpcHQmIG9wZXJhdG9yPShjb25zdCBVc2VyU2NyaXB0JikgPSBkZWZhdWx0OworICAgIFVzZXJT
Y3JpcHQmIG9wZXJhdG9yPShVc2VyU2NyaXB0JiYpID0gZGVmYXVsdDsKIAotICAgIFVzZXJTY3Jp
cHQoU3RyaW5nJiYgc291cmNlLCBVUkwmJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgd2hpdGVsaXN0
LCBWZWN0b3I8U3RyaW5nPiYmIGJsYWNrbGlzdCwgVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5q
ZWN0aW9uVGltZSwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcykKKyAg
ICBVc2VyU2NyaXB0KFN0cmluZyYmIHNvdXJjZSwgVVJMJiYgdXJsLCBWZWN0b3I8U3RyaW5nPiYm
IHdoaXRlbGlzdCwgVmVjdG9yPFN0cmluZz4mJiBibGFja2xpc3QsIFVzZXJTY3JpcHRJbmplY3Rp
b25UaW1lIGluamVjdGlvblRpbWUsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRG
cmFtZXMsIFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmcgd2FpdEZvck5vdGlmaWNh
dGlvbikKICAgICAgICAgOiBtX3NvdXJjZShXVEZNb3ZlKHNvdXJjZSkpCiAgICAgICAgICwgbV91
cmwoV1RGTW92ZSh1cmwpKQogICAgICAgICAsIG1fd2hpdGVsaXN0KFdURk1vdmUod2hpdGVsaXN0
KSkKICAgICAgICAgLCBtX2JsYWNrbGlzdChXVEZNb3ZlKGJsYWNrbGlzdCkpCiAgICAgICAgICwg
bV9pbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpCiAgICAgICAgICwgbV9pbmplY3RlZEZyYW1l
cyhpbmplY3RlZEZyYW1lcykKKyAgICAgICAgLCBtX3dhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJ
bmplY3Rpbmcod2FpdEZvck5vdGlmaWNhdGlvbikKICAgICB7CiAgICAgfQogCkBAIC01NCwxNyAr
NTgsMTkgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibGFja2xpc3QoKSBj
b25zdCB7IHJldHVybiBtX2JsYWNrbGlzdDsgfQogICAgIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1l
IGluamVjdGlvblRpbWUoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGlvblRpbWU7IH0KICAgICBV
c2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKCkgY29uc3QgeyByZXR1cm4g
bV9pbmplY3RlZEZyYW1lczsgfQorICAgIFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rp
bmcgd2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZygpIGNvbnN0IHsgcmV0dXJuIG1f
d2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzsgfQogCiAgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgVXNlclNjcmlwdCYpOwor
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxVc2VyU2NyaXB0PiBk
ZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3NvdXJjZTsKICAgICBV
UkwgbV91cmw7CiAgICAgVmVjdG9yPFN0cmluZz4gbV93aGl0ZWxpc3Q7CiAgICAgVmVjdG9yPFN0
cmluZz4gbV9ibGFja2xpc3Q7Ci0gICAgVXNlclNjcmlwdEluamVjdGlvblRpbWUgbV9pbmplY3Rp
b25UaW1lIHsgSW5qZWN0QXREb2N1bWVudFN0YXJ0IH07Ci0gICAgVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyBtX2luamVjdGVkRnJhbWVzIHsgSW5qZWN0SW5BbGxGcmFtZXMgfTsKKyAgICBVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZSBtX2luamVjdGlvblRpbWUgeyBVc2VyU2NyaXB0SW5qZWN0aW9u
VGltZTo6RG9jdW1lbnRTdGFydCB9OworICAgIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgbV9p
bmplY3RlZEZyYW1lcyB7IFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJh
bWVzIH07CisgICAgV2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZyBtX3dhaXRGb3JO
b3RpZmljYXRpb25CZWZvcmVJbmplY3RpbmcgeyBXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5q
ZWN0aW5nOjpObyB9OwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTc0LDM5ICs4
MCw1OCBAQCB2b2lkIFVzZXJTY3JpcHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyCiAgICAgZW5j
b2RlciA8PCBtX3VybDsKICAgICBlbmNvZGVyIDw8IG1fd2hpdGVsaXN0OwogICAgIGVuY29kZXIg
PDwgbV9ibGFja2xpc3Q7Ci0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1faW5qZWN0aW9uVGltZSk7
Ci0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1faW5qZWN0ZWRGcmFtZXMpOworICAgIGVuY29kZXIg
PDwgbV9pbmplY3Rpb25UaW1lOworICAgIGVuY29kZXIgPDwgbV9pbmplY3RlZEZyYW1lczsKKyAg
ICBlbmNvZGVyIDw8IG1fd2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzsKIH0KIAog
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLWJvb2wgVXNlclNjcmlwdDo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIFVzZXJTY3JpcHQmIHVzZXJTY3JpcHQpCitPcHRpb25hbDxVc2VyU2NyaXB0PiBV
c2VyU2NyaXB0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBTdHJpbmcgc291cmNl
OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc291cmNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIAotICAgIFVSTCB1cmw7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgVmVjdG9yPFN0cmluZz4gd2hpdGVsaXN0Owot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUod2hpdGVsaXN0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIAotICAgIFZlY3RvcjxTdHJpbmc+IGJsYWNrbGlzdDsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGJsYWNrbGlzdCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lOwotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVFbnVtKGluamVjdGlvblRpbWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAg
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lczsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlRW51bShpbmplY3RlZEZyYW1lcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAKLSAgICB1c2VyU2NyaXB0ID0geyBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUodXJsKSwgV1RG
TW92ZSh3aGl0ZWxpc3QpLCBXVEZNb3ZlKGJsYWNrbGlzdCksIGluamVjdGlvblRpbWUsIGluamVj
dGVkRnJhbWVzIH07Ci0gICAgcmV0dXJuIHRydWU7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBzb3Vy
Y2U7CisgICAgZGVjb2RlciA+PiBzb3VyY2U7CisgICAgaWYgKCFzb3VyY2UpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgCisgICAgT3B0aW9uYWw8VVJMPiB1cmw7CisgICAgZGVj
b2RlciA+PiB1cmw7CisgICAgaWYgKCF1cmwpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgCisgICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IHdoaXRlbGlzdDsKKyAgICBkZWNv
ZGVyID4+IHdoaXRlbGlzdDsKKyAgICBpZiAoIXdoaXRlbGlzdCkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAKKyAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gYmxhY2tsaXN0
OworICAgIGRlY29kZXIgPj4gYmxhY2tsaXN0OworICAgIGlmICghYmxhY2tsaXN0KQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIAorICAgIE9wdGlvbmFsPFVzZXJTY3JpcHRJbmpl
Y3Rpb25UaW1lPiBpbmplY3Rpb25UaW1lOworICAgIGRlY29kZXIgPj4gaW5qZWN0aW9uVGltZTsK
KyAgICBpZiAoIWluamVjdGlvblRpbWUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgCisgICAgT3B0aW9uYWw8VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcz4gaW5qZWN0ZWRGcmFt
ZXM7CisgICAgZGVjb2RlciA+PiBpbmplY3RlZEZyYW1lczsKKyAgICBpZiAoIWluamVjdGVkRnJh
bWVzKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIAorICAgIE9wdGlvbmFsPFdh
aXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc+IHdhaXRGb3JOb3RpZmljYXRpb247Cisg
ICAgZGVjb2RlciA+PiB3YWl0Rm9yTm90aWZpY2F0aW9uOworICAgIGlmICghd2FpdEZvck5vdGlm
aWNhdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKKyAgICByZXR1cm4g
e3sKKyAgICAgICAgV1RGTW92ZSgqc291cmNlKSwKKyAgICAgICAgV1RGTW92ZSgqdXJsKSwKKyAg
ICAgICAgV1RGTW92ZSgqd2hpdGVsaXN0KSwKKyAgICAgICAgV1RGTW92ZSgqYmxhY2tsaXN0KSwK
KyAgICAgICAgV1RGTW92ZSgqaW5qZWN0aW9uVGltZSksCisgICAgICAgIFdURk1vdmUoKmluamVj
dGVkRnJhbWVzKSwKKyAgICAgICAgV1RGTW92ZSgqd2FpdEZvck5vdGlmaWNhdGlvbikKKyAgICB9
fTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9Vc2VyU2NyaXB0VHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1Vz
ZXJTY3JpcHRUeXBlcy5oCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJTY3JpcHRUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw4IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSB7IEluamVj
dEF0RG9jdW1lbnRTdGFydCwgSW5qZWN0QXREb2N1bWVudEVuZCB9OworZW51bSBjbGFzcyBVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZSA6IGJvb2wgeyBEb2N1bWVudFN0YXJ0LCBEb2N1bWVudEVuZCB9
OworZW51bSBjbGFzcyBXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nIDogYm9vbCB7
IE5vLCBZZXMgfTsKIAogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgVXNlclNjcmlwdDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgJKHJldmlzaW9uIDI1OTMwNikK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNyArMzgsNyBAQCBjbGFzcyBVc2VyU3R5bGVTaGVldCB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVXNlclN0eWxlU2hlZXQoKQotICAgICAgICA6IG1f
aW5qZWN0ZWRGcmFtZXMoSW5qZWN0SW5BbGxGcmFtZXMpCisgICAgICAgIDogbV9pbmplY3RlZEZy
YW1lcyhVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcykKICAgICAg
ICAgLCBtX2xldmVsKFVzZXJTdHlsZVVzZXJMZXZlbCkKICAgICB7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MTMsNyArODEz
LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6c3RhcnRFbGVtZW50TnMoYwogICAgICAgICBk
b3duY2FzdDxIVE1MSHRtbEVsZW1lbnQ+KG5ld0VsZW1lbnQuZ2V0KCkpLmluc2VydGVkQnlQYXJz
ZXIoKTsKIAogICAgIGlmICghbV9wYXJzaW5nRnJhZ21lbnQgJiYgaXNGaXJzdEVsZW1lbnQgJiYg
ZG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+aW5qZWN0
VXNlclNjcmlwdHMoSW5qZWN0QXREb2N1bWVudFN0YXJ0KTsKKyAgICAgICAgZG9jdW1lbnQoKS0+
ZnJhbWUoKS0+aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3Vt
ZW50U3RhcnQpOwogfQogCiB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjplbmRFbGVtZW50TnMoKQpJ
bmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTMzNSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjYgQEAKKzIwMjAtMDMtMzEgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIHRvIG1h
a2UgV0tVc2VyU2NyaXB0cyB3YWl0IGZvciBhIG5vdGlmaWNhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5ODQ1CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82MDM0MjI5OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaDoKKyAgICAgICAgKFdl
YktpdDo6dG9Vc2VyU2NyaXB0SW5qZWN0aW9uVGltZSk6CisgICAgICAgIChXZWJLaXQ6OnRvV0tV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZSk6CisgICAgICAgIChXZWJLaXQ6OnRvVXNlckNvbnRlbnRJ
bmplY3RlZEZyYW1lcyk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6Cisg
ICAgICAgICogU2hhcmVkL1dlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVzZXJTY3JpcHREYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb246OnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uIGNvbnN0
KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldFVzZXJTY3JpcHRzU2hvdWxk
V2FpdFVudGlsTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJT
Y3JpcHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwOgorICAg
ICAgICAoV0tQYWdlR3JvdXBBZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tVc2VyU2NyaXB0UmVmLmNwcDoKKyAgICAgICAgKFdLVXNlclNjcmlwdENyZWF0ZVdpdGhT
b3VyY2UpOgorICAgICAgICAoV0tVc2VyU2NyaXB0R2V0TWFpbkZyYW1lT25seSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW06CisgICAgICAgICgtW1dLVXNl
clNjcmlwdCBpbml0V2l0aFNvdXJjZTppbmplY3Rpb25UaW1lOmZvck1haW5GcmFtZU9ubHk6XSk6
CisgICAgICAgICgtW1dLVXNlclNjcmlwdCBpc0Zvck1haW5GcmFtZU9ubHldKToKKyAgICAgICAg
KC1bV0tVc2VyU2NyaXB0IF9pbml0V2l0aFNvdXJjZTppbmplY3Rpb25UaW1lOmZvck1haW5GcmFt
ZU9ubHk6bGVnYWN5V2hpdGVsaXN0OmxlZ2FjeUJsYWNrbGlzdDp1c2VyQ29udGVudFdvcmxkOl0p
OgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX2luaXRXaXRoU291cmNlOmluamVjdGlvblRpbWU6
Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OmFzc29jaWF0
ZWRVUkw6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bV0tVc2VyU2NyaXB0IF9pbml0
V2l0aFNvdXJjZTppbmplY3Rpb25UaW1lOmZvck1haW5GcmFtZU9ubHk6bGVnYWN5V2hpdGVsaXN0
OmxlZ2FjeUJsYWNrbGlzdDpjb250ZW50V29ybGQ6XSk6CisgICAgICAgICgtW1dLVXNlclNjcmlw
dCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdo
aXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YXNzb2NpYXRlZFVSTDpjb250ZW50V29ybGQ6XSk6Cisg
ICAgICAgICgtW1dLVXNlclNjcmlwdCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpmb3JN
YWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YXNzb2NpYXRlZFVS
TDpjb250ZW50V29ybGQ6d2FpdEZvck5vdGlmaWNhdGlvbjpdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdEludGVybmFsLmg6CisgICAgICAgIChBUEk6OnRvV2Vi
Q29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKToKKyAgICAgICAgKEFQSTo6dG9XS1VzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNj
cmlwdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ub3RpZnlVc2VyU2NyaXB0c10pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3Rp
ZmljYXRpb25dKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfc2V0VXNlclNj
cmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW06CisgICAgICAgICgtW19XS1VzZXJTdHls
ZVNoZWV0IGluaXRXaXRoU291cmNlOmZvck1haW5GcmFtZU9ubHk6XSk6CisgICAgICAgICgtW19X
S1VzZXJTdHlsZVNoZWV0IGluaXRXaXRoU291cmNlOmZvcldLV2ViVmlldzpmb3JNYWluRnJhbWVP
bmx5OnVzZXJDb250ZW50V29ybGQ6XSk6CisgICAgICAgICgtW19XS1VzZXJTdHlsZVNoZWV0IGlu
aXRXaXRoU291cmNlOmZvck1haW5GcmFtZU9ubHk6bGVnYWN5V2hpdGVsaXN0OmxlZ2FjeUJsYWNr
bGlzdDp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVTaGVldCBp
bml0V2l0aFNvdXJjZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFj
a2xpc3Q6YmFzZVVSTDp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAoLVtfV0tVc2VyU3R5
bGVTaGVldCBpc0Zvck1haW5GcmFtZU9ubHldKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHRJ
bnRlcm5hbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjptX3Byb2Nlc3NEaXNwbGF5TmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6Om5vdGlmeVVzZXJTY3JpcHRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWRk
VXNlclNjcmlwdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMC0w
My0zMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgdHlwZSB0cmFpdHMgZm9yIFNjcm9sbGFibGVBcmVhLCBhbmQgb3RoZXIgY2xlYW51cApJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAJKHJldmlzaW9uIDI1OTMyNCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNiArMTMzLDcgQEAg
dm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSQogICAgIGVuY29kZXIgPDwg
b2xkUGFnZUlEOwogICAgIGVuY29kZXIgPDwgb3ZlcnJpZGRlbk1lZGlhVHlwZTsKICAgICBlbmNv
ZGVyIDw8IGNvcnNEaXNhYmxpbmdQYXR0ZXJuczsKKyAgICBlbmNvZGVyIDw8IHVzZXJTY3JpcHRz
U2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOwogICAgIGVuY29kZXIgPDwgY3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOwogICAgIGVuY29kZXIgPDwgcHJvY2Vzc0Rpc3BsYXlO
YW1lOwogCkBAIC00MTYsNiArNDE3LDEyIEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnM+IFdlYlAKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJz
LmNvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IFdURk1vdmUoKmNvcnNEaXNhYmxpbmdQYXR0ZXJucyk7
CiAKKyAgICBPcHRpb25hbDxib29sPiB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNh
dGlvbjsKKyAgICBkZWNvZGVyID4+IHVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0
aW9uOworICAgIGlmICghdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24pCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcGFyYW1ldGVycy51c2VyU2NyaXB0c1No
b3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiA9ICp1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5v
dGlmaWNhdGlvbjsKKyAgICAKICAgICBPcHRpb25hbDxib29sPiBjcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2xDaGVja0VuYWJsZWQ7CiAgICAgZGVjb2RlciA+PiBjcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2xDaGVja0VuYWJsZWQ7CiAgICAgaWYgKCFjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Vu
YWJsZWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNTkzMjQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw2ICsyMDIs
NyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAgICBTdHJpbmcgb3Zl
cnJpZGRlbk1lZGlhVHlwZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjb3JzRGlzYWJsaW5nUGF0dGVy
bnM7CisgICAgYm9vbCB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiB7IHRy
dWUgfTsKICAgICBib29sIGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCB7IHRy
dWUgfTsKICAgICBTdHJpbmcgcHJvY2Vzc0Rpc3BsYXlOYW1lOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFU
eXBlcy5jcHAJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEx
ICs0OSwxMiBAQCBPcHRpb25hbDxXZWJVc2VyU2NyaXB0RGF0YT4gV2ViVXNlclNjcmlwCiAgICAg
aWYgKCF3b3JsZElkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAg
Ci0gICAgV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0OwotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUodXNlclNjcmlwdCkpCisgICAgT3B0aW9uYWw8V2ViQ29yZTo6VXNlclNjcmlwdD4gdXNl
clNjcmlwdDsKKyAgICBkZWNvZGVyID4+IHVzZXJTY3JpcHQ7CisgICAgaWYgKCF1c2VyU2NyaXB0
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIAotICAgIHJldHVybiB7eyBXVEZN
b3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqd29ybGRJZGVudGlmaWVyKSwgV1RGTW92ZSh1c2Vy
U2NyaXB0KSB9fTsKKyAgICByZXR1cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUo
KndvcmxkSWRlbnRpZmllciksIFdURk1vdmUoKnVzZXJTY3JpcHQpIH19OwogfQogCiB2b2lkIFdl
YlVzZXJTdHlsZVNoZWV0RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCShy
ZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQ
SUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtOTkzLDIxICs5OTMsMjEgQEAgaW5saW5lIFdlYkNv
cmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIAogewogICAgIHN3aXRjaCAod2tJbmplY3RlZFRp
bWUpIHsKICAgICBjYXNlIGtXS0luamVjdEF0RG9jdW1lbnRTdGFydDoKLSAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OkluamVjdEF0RG9jdW1lbnRTdGFydDsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6
OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1bWVudFN0YXJ0OwogICAgIGNhc2Uga1dLSW5q
ZWN0QXREb2N1bWVudEVuZDoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkluamVjdEF0RG9jdW1l
bnRFbmQ7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6
RG9jdW1lbnRFbmQ7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OkluamVjdEF0RG9jdW1lbnRTdGFydDsKKyAgICByZXR1cm4gV2ViQ29yZTo6
VXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50U3RhcnQ7CiB9CiAKIGlubGluZSBfV0tV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZSB0b1dLVXNlclNjcmlwdEluamVjdGlvblRpbWUoV2ViQ29y
ZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0ZWRUaW1lKQogewogICAgIHN3aXRjaCAo
aW5qZWN0ZWRUaW1lKSB7Ci0gICAgY2FzZSBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50U3RhcnQ6
CisgICAgY2FzZSBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRTdGFy
dDoKICAgICAgICAgcmV0dXJuIGtXS0luamVjdEF0RG9jdW1lbnRTdGFydDsKLSAgICBjYXNlIFdl
YkNvcmU6OkluamVjdEF0RG9jdW1lbnRFbmQ6CisgICAgY2FzZSBXZWJDb3JlOjpVc2VyU2NyaXB0
SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQ6CiAgICAgICAgIHJldHVybiBrV0tJbmplY3RBdERv
Y3VtZW50RW5kOwogICAgIH0KIApAQCAtMTAxOSwxMyArMTAxOSwxMyBAQCBpbmxpbmUgV2ViQ29y
ZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lCiB7CiAgICAgc3dpdGNoICh3a0luamVjdGVkRnJh
bWVzKSB7CiAgICAgY2FzZSBrV0tJbmplY3RJbkFsbEZyYW1lczoKLSAgICAgICAgcmV0dXJuIFdl
YkNvcmU6OkluamVjdEluQWxsRnJhbWVzOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6VXNlckNv
bnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXM7CiAgICAgY2FzZSBrV0tJbmpl
Y3RJblRvcEZyYW1lT25seToKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkluamVjdEluVG9wRnJh
bWVPbmx5OworICAgICAgICByZXR1cm4gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1l
czo6SW5qZWN0SW5Ub3BGcmFtZU9ubHk7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzOworICAgIHJldHVybiBX
ZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lczsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI1OTMyNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3ODEsNiArNzc4MSw3IEBA
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjoKIAogICAgIHBhcmFtZXRl
cnMub3ZlcnJpZGRlbk1lZGlhVHlwZSA9IG1fb3ZlcnJpZGRlbk1lZGlhVHlwZTsKICAgICBwYXJh
bWV0ZXJzLmNvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IG1fY29uZmlndXJhdGlvbi0+Y29yc0Rpc2Fi
bGluZ1BhdHRlcm5zKCk7CisgICAgcGFyYW1ldGVycy51c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRp
bE5vdGlmaWNhdGlvbiA9IG1fY29uZmlndXJhdGlvbi0+dXNlclNjcmlwdHNTaG91bGRXYWl0VW50
aWxOb3RpZmljYXRpb24oKTsKICAgICBwYXJhbWV0ZXJzLmNyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bENoZWNrRW5hYmxlZCA9IG1fY29uZmlndXJhdGlvbi0+Y3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
Q2hlY2tFbmFibGVkKCk7CiAgICAgcGFyYW1ldGVycy5oYXNSZXNvdXJjZUxvYWRDbGllbnQgPSAh
IW1fcmVzb3VyY2VMb2FkQ2xpZW50OwogCkBAIC04MjAyLDYgKzgyMDMsMTkgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnVwZGF0ZVdlYnNpdGVQb2xpY2llcwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlVwZGF0ZVdlYnNpdGVQb2xpY2llcyh3ZWJzaXRlUG9saWNpZXMpKTsKIH0KIAordm9pZCBX
ZWJQYWdlUHJveHk6Om5vdGlmeVVzZXJTY3JpcHRzKCkKK3sKKyAgICBtX3VzZXJTY3JpcHRzTm90
aWZpZWQgPSB0cnVlOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok5vdGlmeVVzZXJTY3Jp
cHRzKCkpOworfQorCitib29sIFdlYlBhZ2VQcm94eTo6dXNlclNjcmlwdHNOZWVkTm90aWZpY2F0
aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+dXNlclNjcmlwdHNTaG91
bGRXYWl0VW50aWxOb3RpZmljYXRpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiAhbV91c2VyU2NyaXB0c05vdGlmaWVkOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
RmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNl
KQogewogICAgIHBhZ2VDbGllbnQoKS5kaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRl
bnRQcm92aWRlcihSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2FuaXRpemVTdWdnZXN0ZWRGaWxlbmFt
ZShzdWdnZXN0ZWRGaWxlbmFtZSksIGRhdGFSZWZlcmVuY2UpOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI1OTMwNykKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MTEsNiArNjEx
LDggQEAgcHVibGljOgogICAgIGJvb2wgd2lsbEhhbmRsZUhvcml6b250YWxTY3JvbGxFdmVudHMo
KSBjb25zdDsKIAogICAgIHZvaWQgdXBkYXRlV2Vic2l0ZVBvbGljaWVzKFdlYnNpdGVQb2xpY2ll
c0RhdGEmJik7CisgICAgdm9pZCBub3RpZnlVc2VyU2NyaXB0cygpOworICAgIGJvb2wgdXNlclNj
cmlwdHNOZWVkTm90aWZpY2F0aW9uKCkgY29uc3Q7CiAKICAgICBib29sIGNhblNob3dNSU1FVHlw
ZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIApAQCAtMjc3NCw2ICsyNzc2LDcgQEAgcHJpdmF0
ZToKICAgICBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4geyBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8gfTsKICAgICBOYXZpZ2F0
ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIG1faGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERv
bWFpbiB7IE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW46Ok5vIH07CiAgICAgYm9vbCBt
X2lnbm9yZXNBcHBCb3VuZERvbWFpbnMgeyBmYWxzZSB9OworICAgIGJvb2wgbV91c2VyU2NyaXB0
c05vdGlmaWVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRp
b24uY3BwCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw3IEBA
IFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3VyYXRpb24KICAgICAgICAgY29weS0+
bV91cmxTY2hlbWVIYW5kbGVycy5zZXQocGFpci5rZXksIHBhaXIudmFsdWUuY29weVJlZigpKTsK
ICAgICBjb3B5LT5tX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IHRoaXMtPm1fY29yc0Rpc2FibGlu
Z1BhdHRlcm5zOwogICAgIGNvcHktPm1fY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFi
bGVkID0gdGhpcy0+bV9jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7CisgICAg
Y29weS0+bV91c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiA9IHRoaXMtPm1f
dXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb247CiAgICAgY29weS0+bV93ZWJW
aWV3Q2F0ZWdvcnkgPSB0aGlzLT5tX3dlYlZpZXdDYXRlZ29yeTsKIAogICAgIGNvcHktPm1fcHJv
Y2Vzc0Rpc3BsYXlOYW1lID0gdGhpcy0+bV9wcm9jZXNzRGlzcGxheU5hbWU7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAko
cmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VD
b25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw2ICsxMzcsOSBAQCBwdWJsaWM6
CiAKICAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBjb3JzRGlzYWJsaW5nUGF0dGVybnMo
KSBjb25zdCB7IHJldHVybiBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJuczsgfQogICAgIHZvaWQgc2V0
Q09SU0Rpc2FibGluZ1BhdHRlcm5zKFZlY3RvcjxXVEY6OlN0cmluZz4mJiBwYXR0ZXJucykgeyBt
X2NvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IFdURk1vdmUocGF0dGVybnMpOyB9CisgICAgCisgICAg
Ym9vbCB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb247IH0KKyAgICB2b2lk
IHNldFVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uKGJvb2wgdmFsdWUpIHsg
bV91c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiA9IHZhbHVlOyB9CiAKICAg
ICBib29sIGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOyB9CiAgICAgdm9pZCBz
ZXRDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1f
Y3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkID0gZW5hYmxlZDsgfQpAQCAtMTg3
LDYgKzE5MCw3IEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPFdURjo6U3RyaW5nLCBSZWY8V2Vi
S2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyPj4gbV91cmxTY2hlbWVIYW5kbGVyczsKICAgICBWZWN0
b3I8V1RGOjpTdHJpbmc+IG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zOworICAgIGJvb2wgbV91c2Vy
U2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiB7IHRydWUgfTsKICAgICBib29sIG1f
Y3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkIHsgdHJ1ZSB9OwogICAgIFdURjo6
U3RyaW5nIG1fcHJvY2Vzc0Rpc3BsYXlOYW1lOwogICAgIFdlYktpdDo6V2ViVmlld0NhdGVnb3J5
IG1fd2ViVmlld0NhdGVnb3J5IHsgV2ViS2l0OjpXZWJWaWV3Q2F0ZWdvcnk6OkFwcEJvdW5kRG9t
YWluIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0
LmgJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElV
c2VyU2NyaXB0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE1ICszNiwxNiBAQCBjbGFzcyBVc2Vy
U2NyaXB0IGZpbmFsIDogcHVibGljIE9iamVjdEltCiBwdWJsaWM6CiAgICAgc3RhdGljIFdURjo6
VVJMIGdlbmVyYXRlVW5pcXVlVVJMKCk7CiAKLSAgICBzdGF0aWMgUmVmPFVzZXJTY3JpcHQ+IGNy
ZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQsIEFQSTo6Q29udGVudFdvcmxkJiB3
b3JsZCkKKyAgICBzdGF0aWMgUmVmPFVzZXJTY3JpcHQ+IGNyZWF0ZShXZWJDb3JlOjpVc2VyU2Ny
aXB0JiYgdXNlclNjcmlwdCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVXNlclNjcmlwdChXVEZNb3ZlKHVzZXJTY3JpcHQpLCB3
b3JsZCkpOwogICAgIH0KIAogICAgIFVzZXJTY3JpcHQoV2ViQ29yZTo6VXNlclNjcmlwdCwgQVBJ
OjpDb250ZW50V29ybGQmKTsKIAorICAgIFdlYkNvcmU6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQo
KSB7IHJldHVybiBtX3VzZXJTY3JpcHQ7IH0KICAgICBjb25zdCBXZWJDb3JlOjpVc2VyU2NyaXB0
JiB1c2VyU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV91c2VyU2NyaXB0OyB9Ci0gICAgCisKICAg
ICBDb250ZW50V29ybGQmIGNvbnRlbnRXb3JsZCgpIHsgcmV0dXJuIG1fd29ybGQ7IH0KICAgICBj
b25zdCBDb250ZW50V29ybGQmIGNvbnRlbnRXb3JsZCgpIGNvbnN0IHsgcmV0dXJuIG1fd29ybGQ7
IH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3Vw
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VH
cm91cC5jcHAJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksNyArOTksNyBAQCB2b2lk
IFdLUGFnZUdyb3VwQWRkVXNlclNjcmlwdChXS1BhZ2VHcm91CiAgICAgYXV0byBibGFja2xpc3Qg
PSB0b0ltcGwoYmxhY2tsaXN0ZWRVUkxQYXR0ZXJucyk7CiAgICAgCiAgICAgYXV0byB1cmwgPSBi
YXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IGFib3V0QmxhbmtVUkwoKSA6ICBVUkwoVVJMKCksIGJh
c2VVUkxTdHJpbmcpOwotICAgIFJlZjxBUEk6OlVzZXJTY3JpcHQ+IHVzZXJTY3JpcHQgPSBBUEk6
OlVzZXJTY3JpcHQ6OmNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGTW92ZShzb3VyY2Up
LCBXVEZNb3ZlKHVybCksIHdoaXRlbGlzdCA/IHdoaXRlbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6
IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJsYWNrbGlzdC0+dG9TdHJpbmdWZWN0b3Io
KSA6IFZlY3RvcjxTdHJpbmc+KCksIHRvVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9u
VGltZSksIHRvVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcykgfSwgQVBJ
OjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgUmVmPEFQSTo6VXNlclNj
cmlwdD4gdXNlclNjcmlwdCA9IEFQSTo6VXNlclNjcmlwdDo6Y3JlYXRlKFdlYkNvcmU6OlVzZXJT
Y3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUodXJsKSwgd2hpdGVsaXN0ID8gd2hpdGVs
aXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgYmxhY2tsaXN0ID8gYmxh
Y2tsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgdG9Vc2VyU2NyaXB0
SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgdG9Vc2VyQ29udGVudEluamVjdGVkRnJhbWVz
KGluamVjdGVkRnJhbWVzKSwgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVj
dGluZzo6Tm8gfSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CiAgICAg
dG9JbXBsKHBhZ2VHcm91cFJlZiktPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3Jp
cHQodXNlclNjcmlwdC5nZXQoKSwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5OjpObyk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLVXNlclNjcmlwdFJlZi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyU2Ny
aXB0UmVmLmNwcAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tVc2VyU2NyaXB0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBA
QCBXS1R5cGVJRCBXS1VzZXJTY3JpcHRHZXRUeXBlSUQoKQogCiBXS1VzZXJTY3JpcHRSZWYgV0tV
c2VyU2NyaXB0Q3JlYXRlV2l0aFNvdXJjZShXS1N0cmluZ1JlZiBzb3VyY2VSZWYsIF9XS1VzZXJT
Y3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIGJvb2wgZm9yTWFpbkZyYW1lT25seSkK
IHsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6VXNlclNjcmlwdDo6Y3JlYXRlKFdlYkNvcmU6OlVz
ZXJTY3JpcHQgeyB0b1dURlN0cmluZyhzb3VyY2VSZWYpLCBBUEk6OlVzZXJTY3JpcHQ6OmdlbmVy
YXRlVW5pcXVlVVJMKCksIHsgfSwgeyB9LCB0b1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVj
dGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9u
bHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyB9LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFn
ZUNvbnRlbnRXb3JsZCgpKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSSgmQVBJOjpVc2Vy
U2NyaXB0OjpjcmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB7IHRvV1RGU3RyaW5nKHNvdXJjZVJl
ZiksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgeyB9LCB7IH0sIHRvVXNl
clNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBX
ZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6
IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBX
ZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9LCBBUEk6OkNv
bnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKS5sZWFrUmVmKCkpOwogfQogCiBXS1N0cmlu
Z1JlZiBXS1VzZXJTY3JpcHRDb3B5U291cmNlKFdLVXNlclNjcmlwdFJlZiB1c2VyU2NyaXB0UmVm
KQpAQCAtNTMsNSArNTMsNSBAQCBfV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBXS1VzZXJTY3Jp
cHRHCiAKIGJvb2wgV0tVc2VyU2NyaXB0R2V0TWFpbkZyYW1lT25seShXS1VzZXJTY3JpcHRSZWYg
dXNlclNjcmlwdFJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHVzZXJTY3JpcHRSZWYpLT51c2Vy
U2NyaXB0KCkuaW5qZWN0ZWRGcmFtZXMoKSA9PSBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25s
eTsKKyAgICByZXR1cm4gdG9JbXBsKHVzZXJTY3JpcHRSZWYpLT51c2VyU2NyaXB0KCkuaW5qZWN0
ZWRGcmFtZXMoKSA9PSBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJ
blRvcEZyYW1lT25seTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VzZXJTY3JpcHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbQkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzUsNyArMzUsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5n
CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAK
LSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2Vs
ZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclNj
cmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgeyB9LCB7IH0sIEFQSTo6dG9XZWJDb3JlVXNlclNj
cmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJD
b3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0s
IEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOworICAgIEFQSTo6T2JqZWN0
Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2Vy
U2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgQVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVu
aXF1ZVVSTCgpLCB7IH0sIHsgfSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGlt
ZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50
SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRl
bnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OldhaXRGb3JOb3Rp
ZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Ok5vIH0sIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29u
dGVudFdvcmxkKCkpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC01OSw3ICs1OSw3IEBAIC0g
KFdLVXNlclNjcmlwdEluamVjdGlvblRpbWUpaW5qZWN0aW9uVGkKIAogLSAoQk9PTClpc0Zvck1h
aW5GcmFtZU9ubHkKIHsKLSAgICByZXR1cm4gX3VzZXJTY3JpcHQtPnVzZXJTY3JpcHQoKS5pbmpl
Y3RlZEZyYW1lcygpID09IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5OworICAgIHJldHVy
biBfdXNlclNjcmlwdC0+dXNlclNjcmlwdCgpLmluamVjdGVkRnJhbWVzKCkgPT0gV2ViQ29yZTo6
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHk7CiB9CiAKIC0g
KGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQpAQCAtODQsNyArODQsNyBAQCAtIChpbnN0
YW5jZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBl
ciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3Ry
dWN0SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7
IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwo
KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVj
dG9yKGxlZ2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRp
bWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRv
cEZyYW1lT25seSA6IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sICp1c2VyQ29udGVudFdv
cmxkLT5fY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29u
c3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlw
dCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVV
UkwoKSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5n
VmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlv
blRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJD
b250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpXYWl0Rm9y
Tm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2Nv
bnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTk0
LDcgKzk0LDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aFNvdXJjZTooTlNTdHJpbgogICAg
IGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
QVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdl
YkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBVUkwoYXNzb2NpYXRlZFVS
TCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1Zl
Y3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25U
aW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5U
b3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyB9LCAqdXNlckNvbnRlbnRX
b3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNv
bnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3Jp
cHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBVUkwoYXNzb2NpYXRlZFVSTCksIEFQSTo6dG9TdHJp
bmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFj
a2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRp
bWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1l
czo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJh
bWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9y
ZUluamVjdGluZzo6Tm8gfSwgKnVzZXJDb250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9jb250
ZW50V29ybGQpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0xMTAsNyArMTEwLDcgQEAgLSAo
aW5zdGFuY2V0eXBlKV9pbml0V2l0aFNvdXJjZTooTlNTdHJpbgogICAgIGlmICghKHNlbGYgPSBb
c3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgQVBJOjpPYmplY3Q6OmNv
bnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3Jp
cHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVl
VVJMKCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmlu
Z1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rp
b25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0
SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyB9LCAqY29udGVudFdv
cmxkLT5fY29udGVudFdvcmxkKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVy
PEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6U3RyaW5n
KHNvdXJjZSksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgQVBJOjp0b1N0
cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJs
YWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9u
VGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJh
bWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRG
cmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVm
b3JlSW5qZWN0aW5nOjpObyB9LCAqY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKIAogICAg
IHJldHVybiBzZWxmOwogfQpAQCAtMTIwLDcgKzEyMCwxNyBAQCAtIChpbnN0YW5jZXR5cGUpX2lu
aXRXaXRoU291cmNlOihOU1N0cmluCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVy
PEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6U3RyaW5n
KHNvdXJjZSksIFVSTChhc3NvY2lhdGVkVVJMKSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lX
aGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIEFQSTo6dG9X
ZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFt
ZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OkluamVjdElu
QWxsRnJhbWVzIH0sICpjb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOworICAgIEFQSTo6T2Jq
ZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpV
c2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgVVJMKGFzc29jaWF0ZWRVUkwpLCBBUEk6
OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVn
YWN5QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmpl
Y3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRp
b25CZWZvcmVJbmplY3Rpbmc6Ok5vIH0sICpjb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwor
CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhTb3VyY2U6
KE5TU3RyaW5nICopc291cmNlIGluamVjdGlvblRpbWU6KFdLVXNlclNjcmlwdEluamVjdGlvblRp
bWUpaW5qZWN0aW9uVGltZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW5GcmFtZU9ubHkg
bGVnYWN5V2hpdGVsaXN0OihOU0FycmF5PE5TU3RyaW5nICo+ICopbGVnYWN5V2hpdGVsaXN0IGxl
Z2FjeUJsYWNrbGlzdDooTlNBcnJheTxOU1N0cmluZyAqPiAqKWxlZ2FjeUJsYWNrbGlzdCBhc3Nv
Y2lhdGVkVVJMOihOU1VSTCAqKWFzc29jaWF0ZWRVUkwgY29udGVudFdvcmxkOihXS0NvbnRlbnRX
b3JsZCAqKWNvbnRlbnRXb3JsZCB3YWl0Rm9yTm90aWZpY2F0aW9uOihCT09MKXdhaXRGb3JOb3Rp
ZmljYXRpb24KK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0
dXJuIG5pbDsKKworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2Vy
U2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwg
VVJMKGFzc29jaWF0ZWRVUkwpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCks
IEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdl
YkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDog
V2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIHdh
aXRGb3JOb3RpZmljYXRpb24/IFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmpl
Y3Rpbmc6OlllcyA6IFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6
Ok5vIH0sICpjb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogCiAgICAgcmV0dXJuIHNlbGY7
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0
SW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tVc2VyU2NyaXB0SW50ZXJuYWwuaAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdEludGVybmFsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDIzICs0MSwyMSBAQCBpbmxpbmUgV2ViQ29yZTo6VXNlclNjcmlwdEluamVj
dGlvblRpbWUgCiB7CiAgICAgc3dpdGNoIChpbmplY3Rpb25UaW1lKSB7CiAgICAgY2FzZSBXS1Vz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0OgotICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6SW5qZWN0QXREb2N1bWVudFN0YXJ0OwotCisgICAgICAgIHJldHVybiBXZWJDb3JlOjpV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRTdGFydDsKICAgICBjYXNlIFdLVXNlclNj
cmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50RW5kOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6
SW5qZWN0QXREb2N1bWVudEVuZDsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lOjpEb2N1bWVudEVuZDsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6SW5qZWN0QXREb2N1bWVudEVuZDsKKyAgICByZXR1
cm4gV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50RW5kOwogfQogCiBp
bmxpbmUgV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSB0b1dLVXNlclNjcmlwdEluamVjdGlvblRp
bWUoV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSkKIHsKICAg
ICBzd2l0Y2ggKGluamVjdGlvblRpbWUpIHsKLSAgICBjYXNlIFdlYkNvcmU6OkluamVjdEF0RG9j
dW1lbnRTdGFydDoKKyAgICBjYXNlIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpE
b2N1bWVudFN0YXJ0OgogICAgICAgICByZXR1cm4gV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0
RG9jdW1lbnRTdGFydDsKLQotICAgIGNhc2UgV2ViQ29yZTo6SW5qZWN0QXREb2N1bWVudEVuZDoK
KyAgICBjYXNlIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1bWVudEVuZDoK
ICAgICAgICAgcmV0dXJuIFdLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50RW5kOwog
ICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNj
cmlwdFByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tVc2VyU2NyaXB0UHJpdmF0ZS5oCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0UHJpdmF0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw2ICszOCw4IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAtIChpbnN0
YW5jZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25UaW1l
OihXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKWluamVjdGlvblRpbWUgZm9yTWFpbkZyYW1lT25s
eTooQk9PTClmb3JNYWluRnJhbWVPbmx5IGxlZ2FjeVdoaXRlbGlzdDooTlNBcnJheTxOU1N0cmlu
ZyAqPiAqKWxlZ2FjeVdoaXRlbGlzdCBsZWdhY3lCbGFja2xpc3Q6KE5TQXJyYXk8TlNTdHJpbmcg
Kj4gKilsZWdhY3lCbGFja2xpc3QgY29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKWNvbnRl
bnRXb3JsZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwogLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2Ug
aW5qZWN0aW9uVGltZTooV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSlpbmplY3Rpb25UaW1lIGZv
ck1haW5GcmFtZU9ubHk6KEJPT0wpZm9yTWFpbkZyYW1lT25seSBsZWdhY3lXaGl0ZWxpc3Q6KE5T
QXJyYXk8TlNTdHJpbmcgKj4gKilsZWdhY3lXaGl0ZWxpc3QgbGVnYWN5QmxhY2tsaXN0OihOU0Fy
cmF5PE5TU3RyaW5nICo+ICopbGVnYWN5QmxhY2tsaXN0IGFzc29jaWF0ZWRVUkw6KE5TVVJMICop
YXNzb2NpYXRlZFVSTCBjb250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxk
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAK
Ky0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGluamVj
dGlvblRpbWU6KFdLVXNlclNjcmlwdEluamVjdGlvblRpbWUpaW5qZWN0aW9uVGltZSBmb3JNYWlu
RnJhbWVPbmx5OihCT09MKWZvck1haW5GcmFtZU9ubHkgbGVnYWN5V2hpdGVsaXN0OihOU0FycmF5
PE5TU3RyaW5nICo+ICopbGVnYWN5V2hpdGVsaXN0IGxlZ2FjeUJsYWNrbGlzdDooTlNBcnJheTxO
U1N0cmluZyAqPiAqKWxlZ2FjeUJsYWNrbGlzdCBhc3NvY2lhdGVkVVJMOihOU1VSTCAqKWFzc29j
aWF0ZWRVUkwgY29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKWNvbnRlbnRXb3JsZCB3YWl0
Rm9yTm90aWZpY2F0aW9uOihCT09MKXdhaXRGb3JOb3RpZmljYXRpb24gV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBfV0tVc2VyQ29udGVudFdvcmxkICpfdXNlckNvbnRlbnRXb3JsZCBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEyKSwgaW9zKDEwLjApKTsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgV0tDb250ZW50V29ybGQgKl9jb250ZW50V29ybGQgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIApJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lv
biAyNTkzMDcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIzLDYgKzIzMjMsMTYgQEAgLSAodm9pZClfdXBkYXRl
V2VicGFnZVByZWZlcmVuY2VzOihXS1dlYgogICAgIF9wYWdlLT51cGRhdGVXZWJzaXRlUG9saWNp
ZXMoV1RGTW92ZShkYXRhKSk7CiB9CiAKKy0gKHZvaWQpX25vdGlmeVVzZXJTY3JpcHRzCit7Cisg
ICAgX3BhZ2UtPm5vdGlmeVVzZXJTY3JpcHRzKCk7Cit9CisKKy0gKEJPT0wpX3VzZXJTY3JpcHRz
TmVlZE5vdGlmaWNhdGlvbgoreworICAgIHJldHVybiBfcGFnZS0+dXNlclNjcmlwdHNOZWVkTm90
aWZpY2F0aW9uKCk7Cit9CisKIC0gKEJPT0wpX2FsbG93c1JlbW90ZUluc3BlY3Rpb24KIHsKICNp
ZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCShy
ZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtOTEzLDYgKzkxMywxNiBA
QCAtICh2b2lkKV9zZXRDT1JTRGlzYWJsaW5nUGF0dGVybnM6KE5TQXJyCiAgICAgX3BhZ2VDb25m
aWd1cmF0aW9uLT5zZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMoV1RGTW92ZSh2ZWN0b3IpKTsKIH0K
IAorLSAoQk9PTClfdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24KK3sKKyAg
ICByZXR1cm4gX3BhZ2VDb25maWd1cmF0aW9uLT51c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5v
dGlmaWNhdGlvbigpOworfQorCistICh2b2lkKV9zZXRVc2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRp
bE5vdGlmaWNhdGlvbjooQk9PTCl2YWx1ZQoreworICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0
VXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24odmFsdWUpOworfQorCiAtICh2
b2lkKV9zZXRDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ6KEJPT0wpZW5hYmxl
ZAogewogICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
Q2hlY2tFbmFibGVkKGVuYWJsZWQpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2
YXRlLmgJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04
NCw2ICs4NCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBfV0tXZWJWaWV3Q2EKIAog
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS1dlYnNpdGVEYXRhU3RvcmUgKl93ZWJz
aXRlRGF0YVN0b3JlSWZFeGlzdHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3Nl
dENPUlNEaXNhYmxpbmdQYXR0ZXJuczopIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9jb3JzRGlzYWJs
aW5nUGF0dGVybnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFVzZXJTY3JpcHRzU2hv
dWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOikgQk9PTCBfdXNlclNjcmlwdHNTaG91bGRXYWl0VW50
aWxOb3RpZmljYXRpb24gV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldENyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDopIEJPT0wgX2Nyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bENoZWNrRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCShyZXZpc2lv
biAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcsNiArMjA3LDggQEAgZm9yIHRoaXMgcHJv
cGVydHkuCiAKIC0gKHZvaWQpX3VwZGF0ZVdlYnNpdGVQb2xpY2llczooX1dLV2Vic2l0ZVBvbGlj
aWVzICopd2Vic2l0ZVBvbGljaWVzIFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQo
Ii1fdXBkYXRlV2VicGFnZVByZWZlcmVuY2VzOiIsIG1hY29zKDEwLjEzLCBXS19NQUNfVEJBKSwg
aW9zKDExLjMsIFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3VwZGF0ZVdlYnBhZ2VQcmVmZXJlbmNl
czooV0tXZWJwYWdlUHJlZmVyZW5jZXMgKil3ZWJwYWdlUHJlZmVyZW5jZXMgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX25vdGlm
eVVzZXJTY3JpcHRzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX3VzZXJTY3Jp
cHRzTmVlZE5vdGlmaWNhdGlvbiBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwogCiAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHRXaXRob3V0VXNl
ckdlc3R1cmU6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xMyksIGlvcygxMS4wKSk7CiAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHQ6
KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBpbkZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1l
IGluQ29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKWNvbnRlbnRXb3JsZCBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKiBlcnJvcikpY29tcGxldGlvbkhhbmRsZXIg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNl
clN0eWxlU2hlZXQubW0JKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDQs
NyArNDQsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nCiAgICAg
Ly8gRklYTUU6IEluIHRoZSBBUEkgdGVzdCwgd2UgY2FuIHVzZSBnZW5lcmF0ZVVuaXF1ZVVSTCBi
ZWxvdyBiZWZvcmUgdGhlIEFQSTo6T2JqZWN0IGNvbnN0cnVjdG9yIGhhcyBkb25lIHRoaXMuLi4g
d2hlcmUgc2hvdWxkIHRoaXMgcmVhbGx5IGJlPwogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktp
dDIoKTsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5
bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3Vy
Y2UpLCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCB7IH0sIHsgfSwg
Zm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29y
ZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCBBUEk6
OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29u
c3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJT
dHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgQVBJOjpVc2VyU3R5bGVTaGVldDo6Z2Vu
ZXJhdGVVbmlxdWVVUkwoKSwgeyB9LCB7IH0sIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpV
c2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6
OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpV
c2VyU3R5bGVVc2VyTGV2ZWwgfSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQo
KSk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTU4LDcgKzU4LDcgQEAgLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZwogICAgIC8vIEZJWE1FOiBJbiB0aGUgQVBJIHRl
c3QsIHdlIGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwgYmVsb3cgYmVmb3JlIHRoZSBBUEk6Ok9i
amVjdCBjb25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4uIHdoZXJlIHNob3VsZCB0aGlzIHJlYWxs
eSBiZT8KICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBBUEk6Ok9iamVj
dDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6
OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgQVBJOjpVc2VyU3R5bGVTaGVl
dDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgeyB9LCAgeyB9LCBmb3JNYWluRnJhbWVPbmx5ID8gV2Vi
Q29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcywg
V2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsLCBbd2ViVmlldyBfcGFnZV0tPndlYlBhZ2VJRCgp
IH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKKyAg
ICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hlZXQ+KHNl
bGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgQVBJOjpV
c2VyU3R5bGVTaGVldDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgeyB9LCAgeyB9LCBmb3JNYWluRnJh
bWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BG
cmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFs
bEZyYW1lcywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsLCBbd2ViVmlldyBfcGFnZV0tPndl
YlBhZ2VJRCgpIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVudFdvcmxkLT5fY29udGVudFdv
cmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtNzEsNyArNzEsNyBAQCAtIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nCiAgICAgLy8gRklYTUU6IEluIHRoZSBBUEkg
dGVzdCwgd2UgY2FuIHVzZSBnZW5lcmF0ZVVuaXF1ZVVSTCBiZWxvdyBiZWZvcmUgdGhlIEFQSTo6
T2JqZWN0IGNvbnN0cnVjdG9yIGhhcyBkb25lIHRoaXMuLi4gd2hlcmUgc2hvdWxkIHRoaXMgcmVh
bGx5IGJlPwogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAotICAgIEFQSTo6T2Jq
ZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29y
ZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTdHlsZVNo
ZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRl
bGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1l
T25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5B
bGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3Js
ZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0
cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5
bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclN0eWxlU2hlZXQ6OmdlbmVy
YXRlVW5pcXVlVVJMKCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJ
Ojp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2Vi
Q29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBX
ZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcywgV2Vi
Q29yZTo6VXNlclN0eWxlVXNlckxldmVsIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVudFdv
cmxkLT5fY29udGVudFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtODQsNyArODQs
NyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nCiAgICAgLy8gRklY
TUU6IEluIHRoZSBBUEkgdGVzdCwgd2UgY2FuIHVzZSBnZW5lcmF0ZVVuaXF1ZVVSTCBiZWxvdyBi
ZWZvcmUgdGhlIEFQSTo6T2JqZWN0IGNvbnN0cnVjdG9yIGhhcyBkb25lIHRoaXMuLi4gd2hlcmUg
c2hvdWxkIHRoaXMgcmVhbGx5IGJlPwogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsK
IAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVl
dD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCB7
ICBVUkwoKSwgV1RGOjpTdHJpbmcoW2Jhc2VVUkwgX3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmlu
Z10pIH0sIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmlu
Z1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5q
ZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6
VXNlclN0eWxlVXNlckxldmVsIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVudFdvcmxkLT5f
Y29udGVudFdvcmxkKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6
VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJp
bmcoc291cmNlKSwgeyAgVVJMKCksIFdURjo6U3RyaW5nKFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxE
YXRhQXNXVEZTdHJpbmddKSB9LCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCks
IEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/
IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5
IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMs
IFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRl
bnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTEwOSw3
ICsxMDksNyBAQCAtIChOU1VSTCAqKWJhc2VVUkwKIAogLSAoQk9PTClpc0Zvck1haW5GcmFtZU9u
bHkKIHsKLSAgICByZXR1cm4gX3VzZXJTdHlsZVNoZWV0LT51c2VyU3R5bGVTaGVldCgpLmluamVj
dGVkRnJhbWVzKCkgPT0gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHk7CisgICAgcmV0dXJu
IF91c2VyU3R5bGVTaGVldC0+dXNlclN0eWxlU2hlZXQoKS5pbmplY3RlZEZyYW1lcygpID09IFdl
YkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5Owog
fQogCiAtIChpZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudC5jcHAJ
KHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFVzZXJDb250ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTIgKzUwLDEyIEBAIHN0
YXRpYyBpbmxpbmUgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyAKIHsKICAgICBzd2l0Y2ggKGlu
amVjdGVkRnJhbWVzKSB7CiAgICAgY2FzZSBXRUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9UT1Bf
RlJBTUU6Ci0gICAgICAgIHJldHVybiBJbmplY3RJblRvcEZyYW1lT25seTsKKyAgICAgICAgcmV0
dXJuIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5OwogICAg
IGNhc2UgV0VCS0lUX1VTRVJfQ09OVEVOVF9JTkpFQ1RfQUxMX0ZSQU1FUzoKLSAgICAgICAgcmV0
dXJuIEluamVjdEluQWxsRnJhbWVzOworICAgICAgICByZXR1cm4gVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXM7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBJbmplY3RJbkFsbEZyYW1lczsKKyAgICAg
ICAgcmV0dXJuIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzOwog
ICAgIH0KIH0KIApAQCAtNzYsMTIgKzc2LDEyIEBAIHN0YXRpYyBpbmxpbmUgVXNlclNjcmlwdElu
amVjdGlvblRpbWUgdG8KIHsKICAgICBzd2l0Y2ggKGluamVjdGlvblRpbWUpIHsKICAgICBjYXNl
IFdFQktJVF9VU0VSX1NDUklQVF9JTkpFQ1RfQVRfRE9DVU1FTlRfU1RBUlQ6Ci0gICAgICAgIHJl
dHVybiBJbmplY3RBdERvY3VtZW50U3RhcnQ7CisgICAgICAgIHJldHVybiBVc2VyU2NyaXB0SW5q
ZWN0aW9uVGltZTo6RG9jdW1lbnRTdGFydDsKICAgICBjYXNlIFdFQktJVF9VU0VSX1NDUklQVF9J
TkpFQ1RfQVRfRE9DVU1FTlRfRU5EOgotICAgICAgICByZXR1cm4gSW5qZWN0QXREb2N1bWVudEVu
ZDsKKyAgICAgICAgcmV0dXJuIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1bWVudEVuZDsK
ICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuIEluamVjdEF0RG9jdW1lbnRTdGFydDsKKyAgICAgICAgcmV0dXJuIFVzZXJTY3JpcHRJbmpl
Y3Rpb25UaW1lOjpEb2N1bWVudFN0YXJ0OwogICAgIH0KIH0KIApAQCAtMjE0LDcgKzIxNCw3IEBA
IHN0cnVjdCBfV2ViS2l0VXNlclNjcmlwdCB7CiAgICAgICAgICAgICBTdHJpbmc6OmZyb21VVEY4
KHNvdXJjZSksIFVSTCB7IH0sCiAgICAgICAgICAgICB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3Qp
LCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLAogICAgICAgICAgICAgdG9Vc2VyU2NyaXB0SW5q
ZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwKLSAgICAgICAgICAgIHRvVXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcykgfSwgd29ybGQpKSkKKyAgICAgICAgICAgIHRvVXNl
ckNvbnRlbnRJbmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcyksIFdlYkNvcmU6OldhaXRGb3JO
b3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6Ok5vIH0sIHdvcmxkKSkpCiAgICAgICAgICwgcmVm
ZXJlbmNlQ291bnQoMSkKICAgICB7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlci5jcHAJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOTIsNyArMzkyLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVz
ZXJTYwogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgYXV0byYgbWFpbkZy
YW1lID0gcGFnZS5tYWluRnJhbWUoKTsKLSAgICAgICAgICAgIGlmICh1c2VyU2NyaXB0LmluamVj
dGVkRnJhbWVzKCkgPT0gSW5qZWN0SW5Ub3BGcmFtZU9ubHkpIHsKKyAgICAgICAgICAgIGlmICh1
c2VyU2NyaXB0LmluamVjdGVkRnJhbWVzKCkgPT0gVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6
SW5qZWN0SW5Ub3BGcmFtZU9ubHkpIHsKICAgICAgICAgICAgICAgICBtYWluRnJhbWUuaW5qZWN0
VXNlclNjcmlwdEltbWVkaWF0ZWx5KHdvcmxkLmNvcmVXb3JsZCgpLCB1c2VyU2NyaXB0KTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjU5MzI0KQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUyOSw2ICs1MjksNyBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgCiAjZW5kaWYKIAogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNvcnNEaXNhYmxpbmdQYXR0
ZXJucyA9IFdURk1vdmUocGFyYW1ldGVycy5jb3JzRGlzYWJsaW5nUGF0dGVybnMpOworICAgIHBh
Z2VDb25maWd1cmF0aW9uLnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uID0g
cGFyYW1ldGVycy51c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsKICAgICBp
ZiAoIXBhcmFtZXRlcnMuY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKQogICAg
ICAgICBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyOjpzaW5nbGV0b24oKS5z
ZXRDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQoZmFsc2UpOwogCkBAIC02Mjc3
LDYgKzYyNzgsMTQgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVXZWJzaXRlUG9saWNpZXMoV2Vicwog
I2VuZGlmCiB9CiAKK3ZvaWQgV2ViUGFnZTo6bm90aWZ5VXNlclNjcmlwdHMoKQoreworICAgIGlm
ICghbV9wYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BhZ2UtPm5vdGlmeVRvSW5qZWN0
VXNlclNjcmlwdHMoKTsKK30KKwogdW5zaWduZWQgV2ViUGFnZTo6ZXh0ZW5kSW5jcmVtZW50YWxS
ZW5kZXJpbmdTdXBwcmVzc2lvbigpCiB7CiAgICAgdW5zaWduZWQgdG9rZW4gPSBtX21heGltdW1S
ZW5kZXJpbmdTdXBwcmVzc2lvblRva2VuICsgMTsKQEAgLTY0MjksNyArNjQzOCw3IEBAIHZvaWQg
V2ViUGFnZTo6aW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2gKIAogdm9pZCBXZWJQYWdlOjphZGRV
c2VyU2NyaXB0KFN0cmluZyYmIHNvdXJjZSwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYgd29y
bGQsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMsIFdl
YkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUpCiB7Ci0gICAgV2Vi
Q29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0IHsgV1RGTW92ZShzb3VyY2UpLCBVUkwoYWJvdXRC
bGFua1VSTCgpKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0aW9u
VGltZSwgaW5qZWN0ZWRGcmFtZXMgfTsKKyAgICBXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3Jp
cHQgeyBXVEZNb3ZlKHNvdXJjZSksIFVSTChhYm91dEJsYW5rVVJMKCkpLCBWZWN0b3I8U3RyaW5n
PigpLCBWZWN0b3I8U3RyaW5nPigpLCBpbmplY3Rpb25UaW1lLCBpbmplY3RlZEZyYW1lcywgV2Vi
Q29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6Tm8gfTsKIAogICAgIG1f
dXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0KHdvcmxkLCBXVEZNb3ZlKHVzZXJT
Y3JpcHQpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTYxNiw2ICsxNjE2LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHJlcG9ydFVzZWRGZWF0dXJlcygpOwogCiAgICAgdm9pZCB1cGRhdGVXZWJz
aXRlUG9saWNpZXMoV2Vic2l0ZVBvbGljaWVzRGF0YSYmKTsKKyAgICB2b2lkIG5vdGlmeVVzZXJT
Y3JpcHRzKCk7CiAKICAgICB2b2lkIGNoYW5nZUZvbnQoV2ViQ29yZTo6Rm9udENoYW5nZXMmJik7
CiAgICAgdm9pZCBjaGFuZ2VGb250QXR0cmlidXRlcyhXZWJDb3JlOjpGb250QXR0cmlidXRlQ2hh
bmdlcyYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpA
QCAtMTg2LDYgKzE4Niw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1
aW4KICAgICBEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXIgYmFja0ZvcndhcmRJdGVtSUQpCiAKICAgICBVcGRhdGVXZWJzaXRl
UG9saWNpZXMoc3RydWN0IFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YSB3ZWJzaXRlUG9saWNp
ZXMpCisgICAgTm90aWZ5VXNlclNjcmlwdHMoKQogICAgIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lv
bihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwg
c3RydWN0IFdlYktpdDo6UG9saWN5RGVjaXNpb24gcG9saWN5RGVjaXNpb24pCiAKICAgICBDb250
aW51ZVdpbGxTdWJtaXRGb3JtKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50
NjRfdCBsaXN0ZW5lcklEKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNp
b24gMjU5MzA2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDMtMzEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIHRvIG1ha2UgV0tVc2Vy
U2NyaXB0cyB3YWl0IGZvciBhIG5vdGlmaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5ODQ1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82
MDM0MjI5OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfaW5qZWN0T3V0bG9v
a1F1aXJrc1NjcmlwdF0pOgorCiAyMDIwLTAzLTMwICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBwcm92aWRlIGEgd2F5IHRvIGxvZyBt
ZXNzYWdlcyBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTIy
Nyw3ICsxMjI3LDcgQEAgc3RhdGljIE5TU3RyaW5nICpsZWFrT3V0bG9va1F1aXJrc1VzZXJTYwog
LSh2b2lkKV9pbmplY3RPdXRsb29rUXVpcmtzU2NyaXB0CiB7CiAgICAgc3RhdGljIE5TU3RyaW5n
ICpvdXRsb29rUXVpcmtzU2NyaXB0Q29udGVudHMgPSBsZWFrT3V0bG9va1F1aXJrc1VzZXJTY3Jp
cHRDb250ZW50cygpOwotICAgIF9wcml2YXRlLT5ncm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVy
KCkuYWRkVXNlclNjcmlwdCgqY29yZShbV2ViU2NyaXB0V29ybGQgd29ybGRdKSwgbWFrZVVuaXF1
ZTxXZWJDb3JlOjpVc2VyU2NyaXB0PihvdXRsb29rUXVpcmtzU2NyaXB0Q29udGVudHMsIFVSTCgp
LCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBXZWJDb3JlOjpJbmplY3RBdERv
Y3VtZW50RW5kLCBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcykpOworICAgIF9wcml2YXRlLT5n
cm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCgqY29yZShbV2ViU2Ny
aXB0V29ybGQgd29ybGRdKSwgbWFrZVVuaXF1ZTxXZWJDb3JlOjpVc2VyU2NyaXB0PihvdXRsb29r
UXVpcmtzU2NyaXB0Q29udGVudHMsIFVSTCgpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3Ry
aW5nPigpLCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQsIFdl
YkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBXZWJD
b3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObykpOwogCiB9CiAjZW5k
aWYKQEAgLTQ2NzYsNyArNDY3Niw3IEBAICsgKHZvaWQpX2FkZFVzZXJTY3JpcHRUb0dyb3VwOihO
U1N0cmluZyAKICAgICBpZiAoIXdvcmxkKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHVz
ZXJTY3JpcHQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlVzZXJTY3JpcHQ+KHNvdXJjZSwgdXJsLCB0
b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmpl
Y3Rpb25UaW1lID09IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/IFdlYkNvcmU6OkluamVjdEF0
RG9jdW1lbnRTdGFydCA6IFdlYkNvcmU6OkluamVjdEF0RG9jdW1lbnRFbmQsIGluamVjdGVkRnJh
bWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMg
OiBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSk7CisgICAgYXV0byB1c2VyU2NyaXB0ID0g
bWFrZVVuaXF1ZTxXZWJDb3JlOjpVc2VyU2NyaXB0Pihzb3VyY2UsIHVybCwgdG9TdHJpbmdWZWN0
b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0aW9uVGltZSA9
PSBXZWJJbmplY3RBdERvY3VtZW50U3RhcnQgPyBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9u
VGltZTo6RG9jdW1lbnRTdGFydCA6IFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpE
b2N1bWVudEVuZCwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBXZWJD
b3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcyA6IFdlYkNv
cmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5LCBXZWJD
b3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyk7CiAgICAgdmlld0dy
b3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KCpjb3JlKHdvcmxkKSwg
V1RGTW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAKQEAgLTQ2OTksNyArNDY5OSw3IEBAICsgKHZvaWQp
X2FkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cDooTlNTdHIKICAgICBpZiAoIXdvcmxkKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBhdXRvIHN0eWxlU2hlZXQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlVz
ZXJTdHlsZVNoZWV0Pihzb3VyY2UsIHVybCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9T
dHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxG
cmFtZXMgPyBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyA6IFdlYkNvcmU6OkluamVjdEluVG9w
RnJhbWVPbmx5LCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwpOworICAgIGF1dG8gc3R5bGVT
aGVldCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+KHNvdXJjZSwgdXJsLCB0
b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmpl
Y3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IFdlYkNvcmU6OlVzZXJDb250ZW50
SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzIDogV2ViQ29yZTo6VXNlckNvbnRlbnRJ
bmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHksIFdlYkNvcmU6OlVzZXJTdHlsZVVz
ZXJMZXZlbCk7CiAgICAgdmlld0dyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2Vy
U3R5bGVTaGVldCgqY29yZSh3b3JsZCksIFdURk1vdmUoc3R5bGVTaGVldCksIFdlYkNvcmU6Oklu
amVjdEluRXhpc3RpbmdEb2N1bWVudHMpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTkzNDcpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wNC0wMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTUEkg
dG8gbWFrZSBXS1VzZXJTY3JpcHRzIHdhaXQgZm9yIGEgbm90aWZpY2F0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk4NDUKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzYwMzQyMjk5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2Vy
U2NyaXB0VG9Hcm91cCk6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2VyU3R5bGVTaGVldFRvR3Jv
dXApOgorCiAyMDIwLTAzLTMwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIHNjcm9sbEludG9WaWV3KCkgZXJyb25lb3VzbHkgc2Nyb2xscyBub24tY29u
dGFpbmluZyBibG9jayBzY3JvbGxlcnMKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcu
Y3BwCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAwNiw4ICs3MDA2LDggQEAgSFJFU1VMVCBXZWJWaWV3
OjphZGRVc2VyU2NyaXB0VG9Hcm91cChfSQogCiAgICAgV2ViU2NyaXB0V29ybGQqIHdvcmxkID0g
cmVpbnRlcnByZXRfY2FzdDxXZWJTY3JpcHRXb3JsZCo+KGlXb3JsZCk7CiAgICAgYXV0byB1c2Vy
U2NyaXB0ID0gbWFrZVVuaXF1ZTxVc2VyU2NyaXB0Pihzb3VyY2UsIHRvVVJMKHVybCksIHRvU3Ry
aW5nVmVjdG9yKHdoaXRlbGlzdCwgd2hpdGVsaXN0Q291bnQpLAotICAgICAgICB0b1N0cmluZ1Zl
Y3RvcihibGFja2xpc3QsIGJsYWNrbGlzdENvdW50KSwgaW5qZWN0aW9uVGltZSA9PSBXZWJJbmpl
Y3RBdERvY3VtZW50U3RhcnQgPyBJbmplY3RBdERvY3VtZW50U3RhcnQgOiBJbmplY3RBdERvY3Vt
ZW50RW5kLAotICAgICAgICBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/
IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHkpOworICAgICAgICB0b1N0
cmluZ1ZlY3RvcihibGFja2xpc3QsIGJsYWNrbGlzdENvdW50KSwgaW5qZWN0aW9uVGltZSA9PSBX
ZWJJbmplY3RBdERvY3VtZW50U3RhcnQgPyBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1l
bnRTdGFydCA6IFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1bWVudEVuZCwKKyAgICAgICAg
aW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBVc2VyQ29udGVudEluamVj
dGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcyA6IFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6
OkluamVjdEluVG9wRnJhbWVPbmx5LCBXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5n
OjpObyk7CiAgICAgdmlld0dyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2Ny
aXB0KHdvcmxkLT53b3JsZCgpLCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKICAgICByZXR1cm4gU19P
SzsKIH0KQEAgLTcwMzMsNyArNzAzMyw3IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRkVXNlclN0eWxl
U2hlZXRUb0dyb3UKIAogICAgIFdlYlNjcmlwdFdvcmxkKiB3b3JsZCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViU2NyaXB0V29ybGQqPihpV29ybGQpOwogICAgIGF1dG8gc3R5bGVTaGVldCA9IG1ha2VV
bmlxdWU8VXNlclN0eWxlU2hlZXQ+KHNvdXJjZSwgdG9VUkwodXJsKSwgdG9TdHJpbmdWZWN0b3Io
d2hpdGVsaXN0LCB3aGl0ZWxpc3RDb3VudCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCwgYmxh
Y2tsaXN0Q291bnQpLAotICAgICAgICBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZy
YW1lcyA/IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHksIFVzZXJTdHls
ZVVzZXJMZXZlbCk7CisgICAgICAgIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJh
bWVzID8gVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMgOiBVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSwgVXNlclN0eWxlVXNl
ckxldmVsKTsKICAgICB2aWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJT
dHlsZVNoZWV0KHdvcmxkLT53b3JsZCgpLCBXVEZNb3ZlKHN0eWxlU2hlZXQpLCBJbmplY3RJbkV4
aXN0aW5nRG9jdW1lbnRzKTsKICAgICByZXR1cm4gU19PSzsKIH0KSW5kZXg6IFRvb2xzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTMzNikKKysr
IFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAz
LTMxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgQWRkIFNQSSB0byBtYWtlIFdLVXNlclNjcmlwdHMgd2FpdCBmb3IgYSBub3RpZmljYXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTg0NQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjAzNDIyOTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIwLTAz
LTMxICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAg
IFJlcXVlc3RzIGZvciBtZXNzYWdlSGFuZGxlcnMoKSBpbiB0aGUgRE9NV2luZG93IHNob3VsZCBi
ZSBpZ25vcmVkIGZvciBub24tYXBwLWJvdW5kIG5hdmlnYXRpb25zCkluZGV4OiBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250
ZW50Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjU5MzA2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDEwICsyOCwxMyBAQAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNp
bXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKKyNpbXBv
cnQgIlRlc3RVSURlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0
IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VzZXJD
b250ZW50Q29udHJvbGxlclByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VzZXJTY3JpcHQu
aD4KICNpbXBvcnQgPFdlYktpdC9XS1VzZXJTY3JpcHRQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJL
aXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJL
aXQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KICNp
bXBvcnQgPFdlYktpdC9fV0tVc2VyQ29udGVudFdvcmxkLmg+CkBAIC04MTEsMyArODE0LDMzIEBA
IFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIEluamVjdFVzZXIKICAgICB3YWl0Rm9yTWVz
c2FnZXMoNik7CiAgICAgY29tcGFyZU1lc3NhZ2VzKHsic3RhcnQgYWxsIiwgInN0YXJ0IGFsbCIs
ICJlbmQgbWFpbiIsICJzdGFydCBhbGwiLCAiZW5kIG1haW4iLCAic3RhcnQgYWxsIn0pOwogfQor
CitURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBVc2VyU2NyaXB0Tm90aWZpY2F0aW9uKQor
eworICAgIFdLVXNlclNjcmlwdCAqd2FpdHNGb3JOb3RpZmljYXRpb24gPSBbW1tXS1VzZXJTY3Jp
cHQgYWxsb2NdIF9pbml0V2l0aFNvdXJjZTpAImFsZXJ0KCd3YWl0ZWQgZm9yIG5vdGlmaWNhdGlv
bicpIiBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50U3Rh
cnQgZm9yTWFpbkZyYW1lT25seTpZRVMgbGVnYWN5V2hpdGVsaXN0OltOU0FycmF5IGFycmF5XSBs
ZWdhY3lCbGFja2xpc3Q6W05TQXJyYXkgYXJyYXldIGFzc29jaWF0ZWRVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6QCJ0ZXN0Oi8vL3NjcmlwdCJdIGNvbnRlbnRXb3JsZDpbV0tDb250ZW50V29ybGQg
ZGVmYXVsdENsaWVudFdvcmxkXSB3YWl0Rm9yTm90aWZpY2F0aW9uOllFU10gYXV0b3JlbGVhc2Vd
OworICAgIFdLVXNlclNjcmlwdCAqZG9jdW1lbnRFbmQgPSBbW1tXS1VzZXJTY3JpcHQgYWxsb2Nd
IGluaXRXaXRoU291cmNlOkAiYWxlcnQoJ2RvY3VtZW50IHBhcnNpbmcgZW5kZWQnKSIgaW5qZWN0
aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudEVuZCBmb3JNYWluRnJh
bWVPbmx5OllFU10gYXV0b3JlbGVhc2VdOworCisgICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldzEg
PSBbW1Rlc3RXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgRVhQRUNUX1RSVUUod2Vi
VmlldzEuX3VzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlvbik7CisgICAgW3dlYlZpZXcxLmNvbmZp
Z3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6d2FpdHNGb3JOb3Rp
ZmljYXRpb25dOworICAgIFt3ZWJWaWV3MS5jb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJv
bGxlciBhZGRVc2VyU2NyaXB0OmRvY3VtZW50RW5kXTsKKyAgICBUZXN0VUlEZWxlZ2F0ZSAqZGVs
ZWdhdGUgPSBbW1Rlc3RVSURlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcx
LlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBbd2ViVmlldzEgbG9hZFRlc3RQYWdlTmFtZWQ6
QCJzaW1wbGUiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW2RlbGVnYXRlIHdhaXRGb3JBbGVydF0s
ICJkb2N1bWVudCBwYXJzaW5nIGVuZGVkIik7CisgICAgW3dlYlZpZXcxIF9ub3RpZnlVc2VyU2Ny
aXB0c107CisgICAgRVhQRUNUX0ZBTFNFKHdlYlZpZXcxLl91c2VyU2NyaXB0c05lZWROb3RpZmlj
YXRpb24pOworICAgIEVYUEVDVF9XS19TVFJFUShbZGVsZWdhdGUgd2FpdEZvckFsZXJ0XSwgIndh
aXRlZCBmb3Igbm90aWZpY2F0aW9uIik7CisKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpj
b25maWd1cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10gYXV0b3JlbGVhc2Vd
OworICAgIEVYUEVDVF9UUlVFKGNvbmZpZ3VyYXRpb24uX3VzZXJTY3JpcHRzU2hvdWxkV2FpdFVu
dGlsTm90aWZpY2F0aW9uKTsKKyAgICBjb25maWd1cmF0aW9uLl91c2VyU2NyaXB0c1Nob3VsZFdh
aXRVbnRpbE5vdGlmaWNhdGlvbiA9IE5POworICAgIFRlc3RXS1dlYlZpZXcgKndlYlZpZXcyID0g
W1tbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKKyAgICBF
WFBFQ1RfRkFMU0Uod2ViVmlldzIuX3VzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlvbik7CisgICAg
W3dlYlZpZXcyLmNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3Jp
cHQ6d2FpdHNGb3JOb3RpZmljYXRpb25dOworICAgIFt3ZWJWaWV3Mi5jb25maWd1cmF0aW9uLnVz
ZXJDb250ZW50Q29udHJvbGxlciBhZGRVc2VyU2NyaXB0OmRvY3VtZW50RW5kXTsKKyAgICB3ZWJW
aWV3Mi5VSURlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgW3dlYlZpZXcyIGxvYWRUZXN0UGFnZU5h
bWVkOkAic2ltcGxlIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKFtkZWxlZ2F0ZSB3YWl0Rm9yQWxl
cnRdLCAid2FpdGVkIGZvciBub3RpZmljYXRpb24iKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW2Rl
bGVnYXRlIHdhaXRGb3JBbGVydF0sICJkb2N1bWVudCBwYXJzaW5nIGVuZGVkIik7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395416</attachid>
            <date>2020-04-03 16:42:08 -0700</date>
            <delta_ts>2020-04-03 17:44:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209845-20200403164206.patch</filename>
            <type>text/plain</type>
            <size>70228</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTQ4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDIwLTA0LTAzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byBtYWtlIFdLVXNlclNjcmlwdHMgd2FpdCBmb3IgYSBub3RpZmljYXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTg0NQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjAzNDIyOTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXou
CisKKyAgICAgICAgVGhlcmUncyBhbHNvIFNQSSBvbiBXS1dlYlZpZXcgdG8gcHJvdmlkZSB0aGlz
IG5vdGlmaWNhdGlvbiwgYW5kIG9uIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gdG8gc3RhcnQgb3V0
IHdpdGggdGhpcyBub3RpZmljYXRpb24uCisKKyAgICAgICAgKiBkb20vRXh0ZW5zaW9uU3R5bGVT
aGVldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uU3R5bGVTaGVldHM6OnVwZGF0
ZUluamVjdGVkU3R5bGVTaGVldENhY2hlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0ltYWdlRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1l
bnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIGh0bWwvTWVkaWFEb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYURvY3VtZW50UGFyc2VyOjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSk6
CisgICAgICAgICogaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
bHVnaW5Eb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpkaXNwYXRjaERvY3VtZW50RWxlbWVudEF2YWlsYWJsZUlm
TmVlZGVkKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmZpbmlzaGVkUGFyc2luZyk6CisgICAgICAgICogcGFnZS9GcmFt
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5qZWN0VXNlclNjcmlwdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWU6OmluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSk6CisgICAg
ICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1fZGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpub3RpZnlUb0luamVj
dFVzZXJTY3JpcHRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFkZFVzZXJTY3JpcHRBd2Fp
dGluZ05vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppbmplY3RVc2VyU3R5
bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZW1vdmVJbmplY3RlZFVzZXJTdHls
ZVNoZWV0KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
Omhhc0JlZW5Ob3RpZmllZFRvSW5qZWN0VXNlclNjcmlwdHMgY29uc3QpOgorICAgICAgICAqIHBh
Z2UvUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50VHlwZXMu
aDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9Vc2VyU2NyaXB0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpVc2VyU2NyaXB0OjpVc2VyU2NyaXB0KToKKyAgICAgICAgKFdlYkNv
cmU6OlVzZXJTY3JpcHQ6OndhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3RpbmcgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VXNlclNjcmlwdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlVzZXJTY3JpcHQ6OmRlY29kZSk6CisgICAgICAgICogcGFnZS9Vc2VyU2NyaXB0
VHlwZXMuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9Vc2VyU3R5bGVT
aGVldC5oOgorICAgICAgICAoV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ6OlVzZXJTdHlsZVNoZWV0
KToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6c3RhcnRFbGVtZW50TnMpOgorCiAy
MDIwLTA0LTAzICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpbHRlciBzb21lIGNhcHR1cmUgZGV2aWNlIG5hbWVzCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5jcHAJKHJldmlzaW9uIDI1OTQ4MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIEV4dGVuc2lvblN0eWxlU2hlZXRzOjp1cGRhdGVJbmpl
Y3RlCiAgICAgICAgIGlmICh1c2VyU3R5bGVTaGVldC5wYWdlSUQoKSkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBpZiAodXNlclN0eWxlU2hlZXQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBJ
bmplY3RJblRvcEZyYW1lT25seSAmJiBtX2RvY3VtZW50Lm93bmVyRWxlbWVudCgpKQorICAgICAg
ICBpZiAodXNlclN0eWxlU2hlZXQuaW5qZWN0ZWRGcmFtZXMoKSA9PSBVc2VyQ29udGVudEluamVj
dGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSAmJiBtX2RvY3VtZW50Lm93bmVyRWxlbWVu
dCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuOjptYXRjaGVzUGF0dGVybnMobV9kb2N1bWVudC51cmwoKSwgdXNlclN0eWxlU2hlZXQu
d2hpdGVsaXN0KCksIHVzZXJTdHlsZVNoZWV0LmJsYWNrbGlzdCgpKSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAkocmV2aXNpb24gMjU5NDgwKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDcgKzIy
MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3QKICAgICBhcHBl
bmRDaGlsZChyb290RWxlbWVudCk7CiAgICAgcm9vdEVsZW1lbnQtPmluc2VydGVkQnlQYXJzZXIo
KTsKIAotICAgIGZyYW1lKCktPmluamVjdFVzZXJTY3JpcHRzKEluamVjdEF0RG9jdW1lbnRTdGFy
dCk7CisgICAgZnJhbWUoKS0+aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdEluamVjdGlvblRp
bWU6OkRvY3VtZW50U3RhcnQpOwogCiAgICAgLy8gV2UgbmVlZCBhIDxoZWFkPiBzbyB0aGF0IHRo
ZSBjYWxsIHRvIHNldFRpdGxlKCkgbGF0ZXIgb24gYWN0dWFsbHkgaGFzIGFuIDxoZWFkPiB0byBh
cHBlbmQgdG8gPHRpdGxlPiB0by4KICAgICBhdXRvIGhlYWQgPSBIVE1MSGVhZEVsZW1lbnQ6OmNy
ZWF0ZSgqdGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAJKHJl
dmlzaW9uIDI1OTQ4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBNZWRpYURvY3VtZW50UGFyc2Vy
OjpjcmVhdGVEb2N1bWVudAogICAgIHJvb3RFbGVtZW50LT5pbnNlcnRlZEJ5UGFyc2VyKCk7CiAK
ICAgICBpZiAoZG9jdW1lbnQuZnJhbWUoKSkKLSAgICAgICAgZG9jdW1lbnQuZnJhbWUoKS0+aW5q
ZWN0VXNlclNjcmlwdHMoSW5qZWN0QXREb2N1bWVudFN0YXJ0KTsKKyAgICAgICAgZG9jdW1lbnQu
ZnJhbWUoKS0+aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3Vt
ZW50U3RhcnQpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBhdXRvIGhlYWRFbGVt
ZW50ID0gSFRNTEhlYWRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDI1OTQ4MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3
NCw3IEBAIHZvaWQgUGx1Z2luRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3VtZW4KICAgICByb290
RWxlbWVudC0+aW5zZXJ0ZWRCeVBhcnNlcigpOwogCiAgICAgaWYgKGRvY3VtZW50LmZyYW1lKCkp
Ci0gICAgICAgIGRvY3VtZW50LmZyYW1lKCktPmluamVjdFVzZXJTY3JpcHRzKEluamVjdEF0RG9j
dW1lbnRTdGFydCk7CisgICAgICAgIGRvY3VtZW50LmZyYW1lKCktPmluamVjdFVzZXJTY3JpcHRz
KFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1bWVudFN0YXJ0KTsKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgLy8gU2hvdWxkIG5vdCBiZSBhYmxlIHRvIHpvb20gaW50byBzdGFu
ZGFsb25lIHBsdWctaW4gZG9jdW1lbnRzLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAkocmV2aXNpb24gMjU5NDgwKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0
ZTo6ZGlzcGF0Y2hEb2N1bQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byBmcmFtZSA9
IG1ha2VSZWZQdHIobV9kb2N1bWVudC5mcmFtZSgpKSkKLSAgICAgICAgZnJhbWUtPmluamVjdFVz
ZXJTY3JpcHRzKEluamVjdEF0RG9jdW1lbnRTdGFydCk7CisgICAgICAgIGZyYW1lLT5pbmplY3RV
c2VyU2NyaXB0cyhVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRTdGFydCk7CiB9CiAK
IHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxIdG1sU3RhcnRUYWdCZWZvcmVI
VE1MKEF0b21pY0hUTUxUb2tlbiYmIHRva2VuKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCShyZXZpc2lvbiAyNTk0ODApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OTMsNyArNzkzLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6ZmluaXNoZWRQYXJzaW5nKCkKIHsKICAgICBMT0coTG9hZGluZywgIldlYkNv
cmVMb2FkaW5nICVzOiBGaW5pc2hlZCBwYXJzaW5nIiwgbV9mcmFtZS50cmVlKCkudW5pcXVlTmFt
ZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgbV9mcmFtZS5pbmplY3RVc2VyU2Ny
aXB0cyhJbmplY3RBdERvY3VtZW50RW5kKTsKKyAgICBtX2ZyYW1lLmluamVjdFVzZXJTY3JpcHRz
KFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1bWVudEVuZCk7CiAKICAgICBpZiAobV9zdGF0
ZU1hY2hpbmUuY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKQogICAgICAgICByZXR1cm47
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gMjU5NDgwKQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxOSw5ICs2MTksMTQgQEAg
dm9pZCBGcmFtZTo6aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdAogICAgIGlmIChsb2FkZXIo
KS5zdGF0ZU1hY2hpbmUoKS5jcmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkgJiYgIXNldHRp
bmdzKCkuc2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3VtZW50KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+dXNlckNvbnRlbnRQcm92aWRlcigpLmZvckVh
Y2hVc2VyU2NyaXB0KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluamVj
dGlvblRpbWVdKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVzZXJTY3JpcHQmIHNjcmlw
dCkgewotICAgICAgICBpZiAoc2NyaXB0LmluamVjdGlvblRpbWUoKSA9PSBpbmplY3Rpb25UaW1l
KQotICAgICAgICAgICAgaW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KHdvcmxkLCBzY3JpcHQp
OworICAgIGJvb2wgcGFnZVdhc05vdGlmaWVkID0gbV9wYWdlLT5oYXNCZWVuTm90aWZpZWRUb0lu
amVjdFVzZXJTY3JpcHRzKCk7CisgICAgbV9wYWdlLT51c2VyQ29udGVudFByb3ZpZGVyKCkuZm9y
RWFjaFVzZXJTY3JpcHQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5q
ZWN0aW9uVGltZSwgcGFnZVdhc05vdGlmaWVkXSAoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29u
c3QgVXNlclNjcmlwdCYgc2NyaXB0KSB7CisgICAgICAgIGlmIChzY3JpcHQuaW5qZWN0aW9uVGlt
ZSgpID09IGluamVjdGlvblRpbWUpIHsKKyAgICAgICAgICAgIGlmIChzY3JpcHQud2FpdEZvck5v
dGlmaWNhdGlvbkJlZm9yZUluamVjdGluZygpID09IFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJ
bmplY3Rpbmc6OlllcyAmJiAhcGFnZVdhc05vdGlmaWVkKQorICAgICAgICAgICAgICAgIG1fcGFn
ZS0+YWRkVXNlclNjcmlwdEF3YWl0aW5nTm90aWZpY2F0aW9uKHdvcmxkLCBzY3JpcHQpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVs
eSh3b3JsZCwgc2NyaXB0KTsKKyAgICAgICAgfQogICAgIH0pOwogfQogCkBAIC02MzcsNyArNjQy
LDcgQEAgdm9pZCBGcmFtZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KAogICAgIGF1dG8q
IGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAg
ICByZXR1cm47Ci0gICAgaWYgKHNjcmlwdC5pbmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9w
RnJhbWVPbmx5ICYmICFpc01haW5GcmFtZSgpKQorICAgIGlmIChzY3JpcHQuaW5qZWN0ZWRGcmFt
ZXMoKSA9PSBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSAm
JiAhaXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghVXNlckNvbnRlbnRV
UkxQYXR0ZXJuOjptYXRjaGVzUGF0dGVybnMoZG9jdW1lbnQtPnVybCgpLCBzY3JpcHQud2hpdGVs
aXN0KCksIHNjcmlwdC5ibGFja2xpc3QoKSkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAkocmV2aXNpb24gMjU5NDgwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDYgKzEyNCw3IEBACiAjaW5jbHVkZSAiVXNlckNv
bnRlbnRQcm92aWRlci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgogI2lu
Y2x1ZGUgIlVzZXJJbnB1dEJyaWRnZS5oIgorI2luY2x1ZGUgIlVzZXJTY3JpcHQuaCIKICNpbmNs
dWRlICJVc2VyU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50
LmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtTdGF0ZS5oIgpAQCAtMzM3LDYgKzMzOCw5IEBAIFBh
Z2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICAgICAgICAgICAgIG1fY29y
c0Rpc2FibGluZ1BhdHRlcm5zLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKHBhcnNlZFBhdHRlcm4p
KTsKICAgICB9CiAgICAgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMuc2hyaW5rVG9GaXQoKTsKKyAg
ICAKKyAgICBpZiAoIXBhZ2VDb25maWd1cmF0aW9uLnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGls
Tm90aWZpY2F0aW9uKQorICAgICAgICBtX2hhc0JlZW5Ob3RpZmllZFRvSW5qZWN0VXNlclNjcmlw
dHMgPSB0cnVlOwogfQogCiBQYWdlOjp+UGFnZSgpCkBAIC0yNDczLDYgKzI0NzcsMjAgQEAgVXNl
ckNvbnRlbnRQcm92aWRlciYgUGFnZTo6dXNlckNvbnRlbnRQcgogICAgIHJldHVybiBtX3VzZXJD
b250ZW50UHJvdmlkZXI7CiB9CiAKK3ZvaWQgUGFnZTo6bm90aWZ5VG9JbmplY3RVc2VyU2NyaXB0
cygpCit7CisgICAgZm9yIChhdXRvKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIHBhaXIgOiBtX3VzZXJTY3JpcHRzQXdhaXRpbmdOb3RpZmljYXRpb24pCisgICAgICAgICAg
ICBmcmFtZS0+aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KHBhaXIuZmlyc3QsIHBhaXIuc2Vj
b25kLmdldCgpKTsKKyAgICB9CisgICAgbV91c2VyU2NyaXB0c0F3YWl0aW5nTm90aWZpY2F0aW9u
LmNsZWFyKCk7Cit9CisKK3ZvaWQgUGFnZTo6YWRkVXNlclNjcmlwdEF3YWl0aW5nTm90aWZpY2F0
aW9uKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVzZXJTY3JpcHQmIHNjcmlwdCkKK3sK
KyAgICBtX3VzZXJTY3JpcHRzQXdhaXRpbmdOb3RpZmljYXRpb24uYXBwZW5kKHsgbWFrZVJlZih3
b3JsZCksIG1ha2VVbmlxdWVSZWY8VXNlclNjcmlwdD4oc2NyaXB0KSB9KTsKK30KKwogdm9pZCBQ
YWdlOjpzZXRVc2VyQ29udGVudFByb3ZpZGVyKFJlZjxVc2VyQ29udGVudFByb3ZpZGVyPiYmIHVz
ZXJDb250ZW50UHJvdmlkZXIpCiB7CiAgICAgbV91c2VyQ29udGVudFByb3ZpZGVyLT5yZW1vdmVQ
YWdlKCp0aGlzKTsKQEAgLTMwNzMsNyArMzA5MSw3IEBAIHZvaWQgUGFnZTo6aW5qZWN0VXNlclN0
eWxlU2hlZXQoVXNlclN0eWwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICh1c2Vy
U3R5bGVTaGVldC5pbmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5KSB7Cisg
ICAgaWYgKHVzZXJTdHlsZVNoZWV0LmluamVjdGVkRnJhbWVzKCkgPT0gVXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRv
Y3VtZW50ID0gbV9tYWluRnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBkb2N1bWVudC0+
ZXh0ZW5zaW9uU3R5bGVTaGVldHMoKS5pbmplY3RQYWdlU3BlY2lmaWNVc2VyU3R5bGVTaGVldCh1
c2VyU3R5bGVTaGVldCk7CiAgICAgfSBlbHNlIHsKQEAgLTMwOTIsNyArMzExMCw3IEBAIHZvaWQg
UGFnZTo6cmVtb3ZlSW5qZWN0ZWRVc2VyU3R5bGVTaGVldCgKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmICh1c2VyU3R5bGVTaGVldC5pbmplY3RlZEZyYW1lcygpID09IEluamVjdElu
VG9wRnJhbWVPbmx5KSB7CisgICAgaWYgKHVzZXJTdHlsZVNoZWV0LmluamVjdGVkRnJhbWVzKCkg
PT0gVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkpIHsKICAg
ICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9tYWluRnJhbWUtPmRvY3VtZW50KCkpCiAgICAg
ICAgICAgICBkb2N1bWVudC0+ZXh0ZW5zaW9uU3R5bGVTaGVldHMoKS5yZW1vdmVQYWdlU3BlY2lm
aWNVc2VyU3R5bGVTaGVldCh1c2VyU3R5bGVTaGVldCk7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCShyZXZpc2lvbiAyNTk0ODApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDYgKzE0MCw3IEBAIGNsYXNzIFN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjsKIGNsYXNzIFVzZXJDb250ZW50UHJvdmlkZXI7CiBjbGFzcyBVc2VyQ29udGVu
dFVSTFBhdHRlcm47CiBjbGFzcyBVc2VySW5wdXRCcmlkZ2U7CitjbGFzcyBVc2VyU2NyaXB0Owog
Y2xhc3MgVXNlclN0eWxlU2hlZXQ7CiBjbGFzcyBWYWxpZGF0aW9uTWVzc2FnZUNsaWVudDsKIGNs
YXNzIFZpc2libGVTZWxlY3Rpb247CkBAIC03MzQsNiArNzM1LDEwIEBAIHB1YmxpYzoKICAgICBi
b29sIHNob3VsZEZpcmVSZXNpemVFdmVudHMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZEZpcmVS
ZXNpemVFdmVudHM7IH0KICAgICB2b2lkIHNldFNob3VsZEZpcmVSZXNpemVFdmVudHMoYm9vbCBz
aG91bGRGaXJlUmVzaXplRXZlbnRzKSB7IG1fc2hvdWxkRmlyZVJlc2l6ZUV2ZW50cyA9IHNob3Vs
ZEZpcmVSZXNpemVFdmVudHM7IH0KIAorICAgIGJvb2wgaGFzQmVlbk5vdGlmaWVkVG9JbmplY3RV
c2VyU2NyaXB0cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQmVlbk5vdGlmaWVkVG9JbmplY3RVc2Vy
U2NyaXB0czsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5VG9JbmplY3RVc2VyU2Ny
aXB0cygpOworICAgIHZvaWQgYWRkVXNlclNjcmlwdEF3YWl0aW5nTm90aWZpY2F0aW9uKERPTVdy
YXBwZXJXb3JsZCYsIGNvbnN0IFVzZXJTY3JpcHQmKTsKKwogcHJpdmF0ZToKICAgICBzdHJ1Y3Qg
TmF2aWdhdGlvbiB7CiAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbjsKQEAgLTEwMTUs
NiArMTAyMCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZEZpcmVSZXNpemVFdmVudHMg
eyB0cnVlIH07CiAgICAgYm9vbCBtX2xvYWRzU3VicmVzb3VyY2VzIHsgdHJ1ZSB9OwogICAgIGJv
b2wgbV9sb2Fkc0Zyb21OZXR3b3JrIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9oYXNCZWVuTm90aWZp
ZWRUb0luamVjdFVzZXJTY3JpcHRzIHsgZmFsc2UgfTsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFJl
ZjxET01XcmFwcGVyV29ybGQ+LCBVbmlxdWVSZWY8VXNlclNjcmlwdD4+PiBtX3VzZXJTY3JpcHRz
QXdhaXRpbmdOb3RpZmljYXRpb247CiB9OwogCiBpbmxpbmUgUGFnZUdyb3VwJiBQYWdlOjpncm91
cCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCShyZXZpc2lv
biAyNTk0ODApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyOSw2ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgVW5pcXVlUmVmPE1l
ZGlhUmVjb3JkZXJQcm92aWRlcj4gbWVkaWFSZWNvcmRlclByb3ZpZGVyOwogICAgIGJvb2wgbG9h
ZHNTdWJyZXNvdXJjZXMgeyB0cnVlIH07CiAgICAgYm9vbCBsb2Fkc0Zyb21OZXR3b3JrIHsgdHJ1
ZSB9OworICAgIGJvb2wgdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24geyB0
cnVlIH07CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VHlw
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VHlwZXMu
aAkocmV2aXNpb24gMjU5NDgwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFR5
cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1lbnVtIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgeyBJbmplY3RJbkFsbEZyYW1l
cywgSW5qZWN0SW5Ub3BGcmFtZU9ubHkgfTsKK2VudW0gY2xhc3MgVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyA6IGJvb2wgeyBJbmplY3RJbkFsbEZyYW1lcywgSW5qZWN0SW5Ub3BGcmFtZU9ubHkg
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyU2NyaXB0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0
LmgJKHJldmlzaW9uIDI1OTQ4MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclNjcmlwdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxNiArMzUsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgVXNlclNjcmlwdCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgVXNlclNjcmlwdCgpID0gZGVmYXVsdDsKICAgICB+VXNlclNjcmlwdCgpID0gZGVmYXVs
dDsKKyAgICBVc2VyU2NyaXB0KGNvbnN0IFVzZXJTY3JpcHQmKSA9IGRlZmF1bHQ7CisgICAgVXNl
clNjcmlwdChVc2VyU2NyaXB0JiYpID0gZGVmYXVsdDsKKyAgICBVc2VyU2NyaXB0JiBvcGVyYXRv
cj0oY29uc3QgVXNlclNjcmlwdCYpID0gZGVmYXVsdDsKKyAgICBVc2VyU2NyaXB0JiBvcGVyYXRv
cj0oVXNlclNjcmlwdCYmKSA9IGRlZmF1bHQ7CiAKLSAgICBVc2VyU2NyaXB0KFN0cmluZyYmIHNv
dXJjZSwgVVJMJiYgdXJsLCBWZWN0b3I8U3RyaW5nPiYmIHdoaXRlbGlzdCwgVmVjdG9yPFN0cmlu
Zz4mJiBibGFja2xpc3QsIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIFVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpCisgICAgVXNlclNjcmlwdChT
dHJpbmcmJiBzb3VyY2UsIFVSTCYmIHVybCwgVmVjdG9yPFN0cmluZz4mJiB3aGl0ZWxpc3QsIFZl
Y3RvcjxTdHJpbmc+JiYgYmxhY2tsaXN0LCBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rp
b25UaW1lLCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBXYWl0Rm9y
Tm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nIHdhaXRGb3JOb3RpZmljYXRpb24pCiAgICAgICAg
IDogbV9zb3VyY2UoV1RGTW92ZShzb3VyY2UpKQogICAgICAgICAsIG1fdXJsKFdURk1vdmUodXJs
KSkKICAgICAgICAgLCBtX3doaXRlbGlzdChXVEZNb3ZlKHdoaXRlbGlzdCkpCiAgICAgICAgICwg
bV9ibGFja2xpc3QoV1RGTW92ZShibGFja2xpc3QpKQogICAgICAgICAsIG1faW5qZWN0aW9uVGlt
ZShpbmplY3Rpb25UaW1lKQogICAgICAgICAsIG1faW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFt
ZXMpCisgICAgICAgICwgbV93YWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nKHdhaXRG
b3JOb3RpZmljYXRpb24pCiAgICAgewogICAgIH0KIApAQCAtNTQsMTcgKzU4LDE5IEBAIHB1Ymxp
YzoKICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxhY2tsaXN0KCkgY29uc3QgeyByZXR1cm4g
bV9ibGFja2xpc3Q7IH0KICAgICBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1l
KCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3Rpb25UaW1lOyB9CiAgICAgVXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRGcmFt
ZXM7IH0KKyAgICBXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nIHdhaXRGb3JOb3Rp
ZmljYXRpb25CZWZvcmVJbmplY3RpbmcoKSBjb25zdCB7IHJldHVybiBtX3dhaXRGb3JOb3RpZmlj
YXRpb25CZWZvcmVJbmplY3Rpbmc7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFVzZXJTY3JpcHQmKTsKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8VXNlclNjcmlwdD4gZGVjb2RlKERlY29kZXIm
KTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zb3VyY2U7CiAgICAgVVJMIG1fdXJsOwogICAg
IFZlY3RvcjxTdHJpbmc+IG1fd2hpdGVsaXN0OwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYmxhY2ts
aXN0OwotICAgIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIG1faW5qZWN0aW9uVGltZSB7IEluamVj
dEF0RG9jdW1lbnRTdGFydCB9OwotICAgIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgbV9pbmpl
Y3RlZEZyYW1lcyB7IEluamVjdEluQWxsRnJhbWVzIH07CisgICAgVXNlclNjcmlwdEluamVjdGlv
blRpbWUgbV9pbmplY3Rpb25UaW1lIHsgVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50
U3RhcnQgfTsKKyAgICBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIG1faW5qZWN0ZWRGcmFtZXMg
eyBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcyB9OworICAgIFdh
aXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3RpbmcgbV93YWl0Rm9yTm90aWZpY2F0aW9uQmVm
b3JlSW5qZWN0aW5nIHsgV2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6Tm8gfTsK
IH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC03NCwzOSArODAsNTggQEAgdm9pZCBV
c2VyU2NyaXB0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcgogICAgIGVuY29kZXIgPDwgbV91cmw7
CiAgICAgZW5jb2RlciA8PCBtX3doaXRlbGlzdDsKICAgICBlbmNvZGVyIDw8IG1fYmxhY2tsaXN0
OwotICAgIGVuY29kZXIuZW5jb2RlRW51bShtX2luamVjdGlvblRpbWUpOwotICAgIGVuY29kZXIu
ZW5jb2RlRW51bShtX2luamVjdGVkRnJhbWVzKTsKKyAgICBlbmNvZGVyIDw8IG1faW5qZWN0aW9u
VGltZTsKKyAgICBlbmNvZGVyIDw8IG1faW5qZWN0ZWRGcmFtZXM7CisgICAgZW5jb2RlciA8PCBt
X3dhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc7CiB9CiAKIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+Ci1ib29sIFVzZXJTY3JpcHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBVc2Vy
U2NyaXB0JiB1c2VyU2NyaXB0KQorT3B0aW9uYWw8VXNlclNjcmlwdD4gVXNlclNjcmlwdDo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgU3RyaW5nIHNvdXJjZTsKLSAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHNvdXJjZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBV
UkwgdXJsOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJsKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIAotICAgIFZlY3RvcjxTdHJpbmc+IHdoaXRlbGlzdDsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHdoaXRlbGlzdCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBW
ZWN0b3I8U3RyaW5nPiBibGFja2xpc3Q7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShibGFja2xp
c3QpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgVXNlclNjcmlwdEluamVjdGlv
blRpbWUgaW5qZWN0aW9uVGltZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShpbmplY3Rp
b25UaW1lKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIFVzZXJDb250ZW50SW5q
ZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXM7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0o
aW5qZWN0ZWRGcmFtZXMpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgdXNlclNj
cmlwdCA9IHsgV1RGTW92ZShzb3VyY2UpLCBXVEZNb3ZlKHVybCksIFdURk1vdmUod2hpdGVsaXN0
KSwgV1RGTW92ZShibGFja2xpc3QpLCBpbmplY3Rpb25UaW1lLCBpbmplY3RlZEZyYW1lcyB9Owot
ICAgIHJldHVybiB0cnVlOworICAgIE9wdGlvbmFsPFN0cmluZz4gc291cmNlOworICAgIGRlY29k
ZXIgPj4gc291cmNlOworICAgIGlmICghc291cmNlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIAorICAgIE9wdGlvbmFsPFVSTD4gdXJsOworICAgIGRlY29kZXIgPj4gdXJsOwor
ICAgIGlmICghdXJsKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIAorICAgIE9w
dGlvbmFsPFZlY3RvcjxTdHJpbmc+PiB3aGl0ZWxpc3Q7CisgICAgZGVjb2RlciA+PiB3aGl0ZWxp
c3Q7CisgICAgaWYgKCF3aGl0ZWxpc3QpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgCisgICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGJsYWNrbGlzdDsKKyAgICBkZWNvZGVy
ID4+IGJsYWNrbGlzdDsKKyAgICBpZiAoIWJsYWNrbGlzdCkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAKKyAgICBPcHRpb25hbDxVc2VyU2NyaXB0SW5qZWN0aW9uVGltZT4gaW5q
ZWN0aW9uVGltZTsKKyAgICBkZWNvZGVyID4+IGluamVjdGlvblRpbWU7CisgICAgaWYgKCFpbmpl
Y3Rpb25UaW1lKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIAorICAgIE9wdGlv
bmFsPFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM+IGluamVjdGVkRnJhbWVzOworICAgIGRlY29k
ZXIgPj4gaW5qZWN0ZWRGcmFtZXM7CisgICAgaWYgKCFpbmplY3RlZEZyYW1lcykKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKKyAgICBPcHRpb25hbDxXYWl0Rm9yTm90aWZpY2F0
aW9uQmVmb3JlSW5qZWN0aW5nPiB3YWl0Rm9yTm90aWZpY2F0aW9uOworICAgIGRlY29kZXIgPj4g
d2FpdEZvck5vdGlmaWNhdGlvbjsKKyAgICBpZiAoIXdhaXRGb3JOb3RpZmljYXRpb24pCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgCisgICAgcmV0dXJuIHt7CisgICAgICAgIFdU
Rk1vdmUoKnNvdXJjZSksCisgICAgICAgIFdURk1vdmUoKnVybCksCisgICAgICAgIFdURk1vdmUo
KndoaXRlbGlzdCksCisgICAgICAgIFdURk1vdmUoKmJsYWNrbGlzdCksCisgICAgICAgIFdURk1v
dmUoKmluamVjdGlvblRpbWUpLAorICAgICAgICBXVEZNb3ZlKCppbmplY3RlZEZyYW1lcyksCisg
ICAgICAgIFdURk1vdmUoKndhaXRGb3JOb3RpZmljYXRpb24pCisgICAgfX07CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclNjcmlwdFR5
cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0VHlwZXMu
aAkocmV2aXNpb24gMjU5NDgwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0VHlw
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWVudW0gVXNlclNjcmlwdEluamVjdGlvblRpbWUgeyBJbmplY3RBdERvY3VtZW50U3Rh
cnQsIEluamVjdEF0RG9jdW1lbnRFbmQgfTsKK2VudW0gY2xhc3MgVXNlclNjcmlwdEluamVjdGlv
blRpbWUgOiBib29sIHsgRG9jdW1lbnRTdGFydCwgRG9jdW1lbnRFbmQgfTsKK2VudW0gY2xhc3Mg
V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZyA6IGJvb2wgeyBObywgWWVzIH07CiAK
IGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIFVzZXJTY3JpcHQ7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCShyZXZpc2lvbiAyNTk0ODApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcg
QEAgY2xhc3MgVXNlclN0eWxlU2hlZXQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFVzZXJTdHlsZVNoZWV0KCkKLSAgICAgICAgOiBtX2luamVjdGVkRnJhbWVz
KEluamVjdEluQWxsRnJhbWVzKQorICAgICAgICA6IG1faW5qZWN0ZWRGcmFtZXMoVXNlckNvbnRl
bnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMpCiAgICAgICAgICwgbV9sZXZlbChV
c2VyU3R5bGVVc2VyTGV2ZWwpCiAgICAgewogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAJKHJldmlz
aW9uIDI1OTQ4MCkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEzLDcgKzgxMyw3IEBAIHZvaWQgWE1M
RG9jdW1lbnRQYXJzZXI6OnN0YXJ0RWxlbWVudE5zKGMKICAgICAgICAgZG93bmNhc3Q8SFRNTEh0
bWxFbGVtZW50PihuZXdFbGVtZW50LmdldCgpKS5pbnNlcnRlZEJ5UGFyc2VyKCk7CiAKICAgICBp
ZiAoIW1fcGFyc2luZ0ZyYWdtZW50ICYmIGlzRmlyc3RFbGVtZW50ICYmIGRvY3VtZW50KCktPmZy
YW1lKCkpCi0gICAgICAgIGRvY3VtZW50KCktPmZyYW1lKCktPmluamVjdFVzZXJTY3JpcHRzKElu
amVjdEF0RG9jdW1lbnRTdGFydCk7CisgICAgICAgIGRvY3VtZW50KCktPmZyYW1lKCktPmluamVj
dFVzZXJTY3JpcHRzKFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1bWVudFN0YXJ0KTsKIH0K
IAogdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZW5kRWxlbWVudE5zKCkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNTk0ODApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDY2IEBACisyMDIwLTA0LTAzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0byBtYWtlIFdLVXNlclNjcmlw
dHMgd2FpdCBmb3IgYSBub3RpZmljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwOTg0NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjAzNDIy
OTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OnRvVXNlclNjcmlw
dEluamVjdGlvblRpbWUpOgorICAgICAgICAoV2ViS2l0Ojp0b1dLVXNlclNjcmlwdEluamVjdGlv
blRpbWUpOgorICAgICAgICAoV2ViS2l0Ojp0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAg
KiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFNoYXJlZC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVc2VyU2NyaXB0RGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBh
Z2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjp1c2Vy
U2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6
OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRVc2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNh
dGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcDoKKyAgICAgICAgKFdLUGFnZUdyb3Vw
QWRkVXNlclNjcmlwdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLVXNlclNjcmlwdFJl
Zi5jcHA6CisgICAgICAgIChXS1VzZXJTY3JpcHRDcmVhdGVXaXRoU291cmNlKToKKyAgICAgICAg
KFdLVXNlclNjcmlwdEdldE1haW5GcmFtZU9ubHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tVc2VyU2NyaXB0Lm1tOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgaW5pdFdpdGhT
b3VyY2U6aW5qZWN0aW9uVGltZTpmb3JNYWluRnJhbWVPbmx5Ol0pOgorICAgICAgICAoLVtXS1Vz
ZXJTY3JpcHQgaXNGb3JNYWluRnJhbWVPbmx5XSk6CisgICAgICAgICgtW1dLVXNlclNjcmlwdCBf
aW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRl
bGlzdDpsZWdhY3lCbGFja2xpc3Q6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bV0tV
c2VyU2NyaXB0IF9pbml0V2l0aFNvdXJjZTppbmplY3Rpb25UaW1lOmZvck1haW5GcmFtZU9ubHk6
bGVnYWN5V2hpdGVsaXN0OmxlZ2FjeUJsYWNrbGlzdDphc3NvY2lhdGVkVVJMOnVzZXJDb250ZW50
V29ybGQ6XSk6CisgICAgICAgICgtW1dLVXNlclNjcmlwdCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0
aW9uVGltZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6
Y29udGVudFdvcmxkOl0pOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX2luaXRXaXRoU291cmNl
OmluamVjdGlvblRpbWU6Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0ZWxpc3Q6bGVnYWN5Qmxh
Y2tsaXN0OmFzc29jaWF0ZWRVUkw6Y29udGVudFdvcmxkOl0pOgorICAgICAgICAoLVtXS1VzZXJT
Y3JpcHQgX2luaXRXaXRoU291cmNlOmluamVjdGlvblRpbWU6Zm9yTWFpbkZyYW1lT25seTpsZWdh
Y3lXaGl0ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OmFzc29jaWF0ZWRVUkw6Y29udGVudFdvcmxkOndh
aXRGb3JOb3RpZmljYXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Vz
ZXJTY3JpcHRJbnRlcm5hbC5oOgorICAgICAgICAoQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5q
ZWN0aW9uVGltZSk6CisgICAgICAgIChBUEk6OnRvV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHRQcml2YXRlLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfbm90aWZ5VXNlclNjcmlwdHNdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gX3VzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uXSk6CisgICAg
ICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3NldFVzZXJTY3JpcHRzU2hvdWxkV2FpdFVu
dGlsTm90aWZpY2F0aW9uOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Q29uZmlndXJhdGlvblByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Vz
ZXJTdHlsZVNoZWV0Lm1tOgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVTaGVldCBpbml0V2l0aFNv
dXJjZTpmb3JNYWluRnJhbWVPbmx5Ol0pOgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVTaGVldCBp
bml0V2l0aFNvdXJjZTpmb3JXS1dlYlZpZXc6Zm9yTWFpbkZyYW1lT25seTp1c2VyQ29udGVudFdv
cmxkOl0pOgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVTaGVldCBpbml0V2l0aFNvdXJjZTpmb3JN
YWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6dXNlckNvbnRlbnRX
b3JsZDpdKToKKyAgICAgICAgKC1bX1dLVXNlclN0eWxlU2hlZXQgaW5pdFdpdGhTb3VyY2U6Zm9y
TWFpbkZyYW1lT25seTpsZWdhY3lXaGl0ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OmJhc2VVUkw6dXNl
ckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bX1dLVXNlclN0eWxlU2hlZXQgaXNGb3JNYWlu
RnJhbWVPbmx5XSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0SW50ZXJuYWwpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9w
cm9jZXNzRGlzcGxheU5hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpub3RpZnlVc2Vy
U2NyaXB0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFkZFVzZXJTY3JpcHQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjAtMDQtMDMgIE1lZ2FuIEdhcmRu
ZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBDb2xvciBGb3JtIENvbnRy
b2wgZG9lcyBub3QgY29tZSB1cCBvbiBzZWNvbmQgc2VsZWN0aW9uIGluIG1hY0NhdGFseXN0Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAkocmV2aXNpb24gMjU5NDgwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw2ICsxMzUsNyBA
QCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJCiAgICAgZW5jb2RlciA8
PCBjb3JzRGlzYWJsaW5nUGF0dGVybnM7CiAgICAgZW5jb2RlciA8PCBsb2Fkc1N1YnJlc291cmNl
czsKICAgICBlbmNvZGVyIDw8IGxvYWRzRnJvbU5ldHdvcms7CisgICAgZW5jb2RlciA8PCB1c2Vy
U2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsKICAgICBlbmNvZGVyIDw8IGNyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IHByb2Nlc3NE
aXNwbGF5TmFtZTsKIApAQCAtNDMwLDYgKzQzMSwxMiBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzPiBXZWJQCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgcGFy
YW1ldGVycy5sb2Fkc0Zyb21OZXR3b3JrID0gKmxvYWRzRnJvbU5ldHdvcms7CiAKKyAgICBPcHRp
b25hbDxib29sPiB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsKKyAgICBk
ZWNvZGVyID4+IHVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOworICAgIGlm
ICghdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24pCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcGFyYW1ldGVycy51c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRp
bE5vdGlmaWNhdGlvbiA9ICp1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsK
KyAgICAKICAgICBPcHRpb25hbDxib29sPiBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Vu
YWJsZWQ7CiAgICAgZGVjb2RlciA+PiBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJs
ZWQ7CiAgICAgaWYgKCFjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
CShyZXZpc2lvbiAyNTk0ODApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw2ICsyMDIsNyBAQCBzdHJ1Y3Qg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAgICBTdHJpbmcgb3ZlcnJpZGRlbk1lZGlh
VHlwZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjb3JzRGlzYWJsaW5nUGF0dGVybnM7CisgICAgYm9v
bCB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiB7IHRydWUgfTsKICAgICBi
b29sIGxvYWRzU3VicmVzb3VyY2VzIHsgdHJ1ZSB9OwogICAgIGJvb2wgbG9hZHNGcm9tTmV0d29y
ayB7IHRydWUgfTsKIApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyRGF0YVR5cGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwCShyZXZpc2lvbiAyNTk0ODAp
CisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlw
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSwxMSArNDksMTIgQEAgT3B0aW9uYWw8V2ViVXNl
clNjcmlwdERhdGE+IFdlYlVzZXJTY3JpcAogICAgIGlmICghd29ybGRJZGVudGlmaWVyKQogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIAotICAgIFdlYkNvcmU6OlVzZXJTY3JpcHQg
dXNlclNjcmlwdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVzZXJTY3JpcHQpKQorICAgIE9w
dGlvbmFsPFdlYkNvcmU6OlVzZXJTY3JpcHQ+IHVzZXJTY3JpcHQ7CisgICAgZGVjb2RlciA+PiB1
c2VyU2NyaXB0OworICAgIGlmICghdXNlclNjcmlwdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICAKLSAgICByZXR1cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUo
KndvcmxkSWRlbnRpZmllciksIFdURk1vdmUodXNlclNjcmlwdCkgfX07CisgICAgcmV0dXJuIHt7
IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCp3b3JsZElkZW50aWZpZXIpLCBXVEZNb3Zl
KCp1c2VyU2NyaXB0KSB9fTsKIH0KIAogdm9pZCBXZWJVc2VyU3R5bGVTaGVldERhdGE6OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAkocmV2aXNpb24gMjU5NDgwKQorKysgU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTk5MywyMSArOTkzLDIxIEBAIGlubGluZSBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGlt
ZSAKIHsKICAgICBzd2l0Y2ggKHdrSW5qZWN0ZWRUaW1lKSB7CiAgICAgY2FzZSBrV0tJbmplY3RB
dERvY3VtZW50U3RhcnQ6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50
U3RhcnQ7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6
RG9jdW1lbnRTdGFydDsKICAgICBjYXNlIGtXS0luamVjdEF0RG9jdW1lbnRFbmQ6Ci0gICAgICAg
IHJldHVybiBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50RW5kOworICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50RW5kOwogICAgIH0KIAogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXZWJDb3JlOjpJbmplY3RBdERvY3Vt
ZW50U3RhcnQ7CisgICAgcmV0dXJuIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpE
b2N1bWVudFN0YXJ0OwogfQogCiBpbmxpbmUgX1dLVXNlclNjcmlwdEluamVjdGlvblRpbWUgdG9X
S1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1l
IGluamVjdGVkVGltZSkKIHsKICAgICBzd2l0Y2ggKGluamVjdGVkVGltZSkgewotICAgIGNhc2Ug
V2ViQ29yZTo6SW5qZWN0QXREb2N1bWVudFN0YXJ0OgorICAgIGNhc2UgV2ViQ29yZTo6VXNlclNj
cmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50U3RhcnQ6CiAgICAgICAgIHJldHVybiBrV0tJbmpl
Y3RBdERvY3VtZW50U3RhcnQ7Ci0gICAgY2FzZSBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50RW5k
OgorICAgIGNhc2UgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50RW5k
OgogICAgICAgICByZXR1cm4ga1dLSW5qZWN0QXREb2N1bWVudEVuZDsKICAgICB9CiAKQEAgLTEw
MTksMTMgKzEwMTksMTMgQEAgaW5saW5lIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFt
ZQogewogICAgIHN3aXRjaCAod2tJbmplY3RlZEZyYW1lcykgewogICAgIGNhc2Uga1dLSW5qZWN0
SW5BbGxGcmFtZXM6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lczsK
KyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVj
dEluQWxsRnJhbWVzOwogICAgIGNhc2Uga1dLSW5qZWN0SW5Ub3BGcmFtZU9ubHk6Ci0gICAgICAg
IHJldHVybiBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seTsKKyAgICAgICAgcmV0dXJuIFdl
YkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5Owog
ICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXZWJDb3JlOjpJ
bmplY3RJbkFsbEZyYW1lczsKKyAgICByZXR1cm4gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXM7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAy
NTk0ODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NzczLDYgKzc3NzMsNyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
IFdlYlBhZ2VQcm94eTo6CiAKICAgICBwYXJhbWV0ZXJzLm92ZXJyaWRkZW5NZWRpYVR5cGUgPSBt
X292ZXJyaWRkZW5NZWRpYVR5cGU7CiAgICAgcGFyYW1ldGVycy5jb3JzRGlzYWJsaW5nUGF0dGVy
bnMgPSBtX2NvbmZpZ3VyYXRpb24tPmNvcnNEaXNhYmxpbmdQYXR0ZXJucygpOworICAgIHBhcmFt
ZXRlcnMudXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24gPSBtX2NvbmZpZ3Vy
YXRpb24tPnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uKCk7CiAgICAgcGFy
YW1ldGVycy5sb2Fkc0Zyb21OZXR3b3JrID0gbV9jb25maWd1cmF0aW9uLT5sb2Fkc0Zyb21OZXR3
b3JrKCk7CiAgICAgcGFyYW1ldGVycy5sb2Fkc1N1YnJlc291cmNlcyA9IG1fY29uZmlndXJhdGlv
bi0+bG9hZHNTdWJyZXNvdXJjZXMoKTsKICAgICBwYXJhbWV0ZXJzLmNyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbENoZWNrRW5hYmxlZCA9IG1fY29uZmlndXJhdGlvbi0+Y3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sQ2hlY2tFbmFibGVkKCk7CkBAIC04MTk2LDYgKzgxOTcsMTkgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnVwZGF0ZVdlYnNpdGVQb2xpY2llcwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlVwZGF0ZVdlYnNpdGVQb2xpY2llcyh3ZWJzaXRlUG9saWNpZXMpKTsKIH0KIAordm9pZCBXZWJQ
YWdlUHJveHk6Om5vdGlmeVVzZXJTY3JpcHRzKCkKK3sKKyAgICBtX3VzZXJTY3JpcHRzTm90aWZp
ZWQgPSB0cnVlOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok5vdGlmeVVzZXJTY3JpcHRz
KCkpOworfQorCitib29sIFdlYlBhZ2VQcm94eTo6dXNlclNjcmlwdHNOZWVkTm90aWZpY2F0aW9u
KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+dXNlclNjcmlwdHNTaG91bGRX
YWl0VW50aWxOb3RpZmljYXRpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biAhbV91c2VyU2NyaXB0c05vdGlmaWVkOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmlu
aXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlbmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQog
ewogICAgIHBhZ2VDbGllbnQoKS5kaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQ
cm92aWRlcihSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2FuaXRpemVTdWdnZXN0ZWRGaWxlbmFtZShz
dWdnZXN0ZWRGaWxlbmFtZSksIGRhdGFSZWZlcmVuY2UpOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI1OTQ4MCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MTEsNiArNjExLDgg
QEAgcHVibGljOgogICAgIGJvb2wgd2lsbEhhbmRsZUhvcml6b250YWxTY3JvbGxFdmVudHMoKSBj
b25zdDsKIAogICAgIHZvaWQgdXBkYXRlV2Vic2l0ZVBvbGljaWVzKFdlYnNpdGVQb2xpY2llc0Rh
dGEmJik7CisgICAgdm9pZCBub3RpZnlVc2VyU2NyaXB0cygpOworICAgIGJvb2wgdXNlclNjcmlw
dHNOZWVkTm90aWZpY2F0aW9uKCkgY29uc3Q7CiAKICAgICBib29sIGNhblNob3dNSU1FVHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIApAQCAtMjc3Myw2ICsyNzc1LDcgQEAgcHJpdmF0ZToK
ICAgICBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4geyBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8gfTsKICAgICBOYXZpZ2F0ZWRB
d2F5RnJvbUFwcEJvdW5kRG9tYWluIG1faGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFp
biB7IE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW46Ok5vIH07CiAgICAgYm9vbCBtX2ln
bm9yZXNBcHBCb3VuZERvbWFpbnMgeyBmYWxzZSB9OworICAgIGJvb2wgbV91c2VyU2NyaXB0c05v
dGlmaWVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24u
Y3BwCShyZXZpc2lvbiAyNTk0ODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
UGFnZUNvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCw2ICs5MCw3IEBAIFJl
ZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3VyYXRpb24KICAgICAgICAgY29weS0+bV91
cmxTY2hlbWVIYW5kbGVycy5zZXQocGFpci5rZXksIHBhaXIudmFsdWUuY29weVJlZigpKTsKICAg
ICBjb3B5LT5tX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IHRoaXMtPm1fY29yc0Rpc2FibGluZ1Bh
dHRlcm5zOwogICAgIGNvcHktPm1fY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVk
ID0gdGhpcy0+bV9jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7CisgICAgY29w
eS0+bV91c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiA9IHRoaXMtPm1fdXNl
clNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb247CiAgICAgY29weS0+bV93ZWJWaWV3
Q2F0ZWdvcnkgPSB0aGlzLT5tX3dlYlZpZXdDYXRlZ29yeTsKIAogICAgIGNvcHktPm1fcHJvY2Vz
c0Rpc3BsYXlOYW1lID0gdGhpcy0+bV9wcm9jZXNzRGlzcGxheU5hbWU7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2
aXNpb24gMjU5NDgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25m
aWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsOSBAQCBwdWJsaWM6CiAK
ICAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBjb3JzRGlzYWJsaW5nUGF0dGVybnMoKSBj
b25zdCB7IHJldHVybiBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJuczsgfQogICAgIHZvaWQgc2V0Q09S
U0Rpc2FibGluZ1BhdHRlcm5zKFZlY3RvcjxXVEY6OlN0cmluZz4mJiBwYXR0ZXJucykgeyBtX2Nv
cnNEaXNhYmxpbmdQYXR0ZXJucyA9IFdURk1vdmUocGF0dGVybnMpOyB9CisgICAgCisgICAgYm9v
bCB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb247IH0KKyAgICB2b2lkIHNl
dFVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uKGJvb2wgdmFsdWUpIHsgbV91
c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiA9IHZhbHVlOyB9CiAKICAgICBi
b29sIGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOyB9CiAgICAgdm9pZCBzZXRD
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fY3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkID0gZW5hYmxlZDsgfQpAQCAtMTkxLDYg
KzE5NCw3IEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPFdURjo6U3RyaW5nLCBSZWY8V2ViS2l0
OjpXZWJVUkxTY2hlbWVIYW5kbGVyPj4gbV91cmxTY2hlbWVIYW5kbGVyczsKICAgICBWZWN0b3I8
V1RGOjpTdHJpbmc+IG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zOworICAgIGJvb2wgbV91c2VyU2Ny
aXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiB7IHRydWUgfTsKICAgICBib29sIG1fY3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkIHsgdHJ1ZSB9OwogICAgIFdURjo6U3Ry
aW5nIG1fcHJvY2Vzc0Rpc3BsYXlOYW1lOwogICAgIFdlYktpdDo6V2ViVmlld0NhdGVnb3J5IG1f
d2ViVmlld0NhdGVnb3J5IHsgV2ViS2l0OjpXZWJWaWV3Q2F0ZWdvcnk6OkFwcEJvdW5kRG9tYWlu
IH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmgJ
KHJldmlzaW9uIDI1OTQ4MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2Vy
U2NyaXB0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE1ICszNiwxNiBAQCBjbGFzcyBVc2VyU2Ny
aXB0IGZpbmFsIDogcHVibGljIE9iamVjdEltCiBwdWJsaWM6CiAgICAgc3RhdGljIFdURjo6VVJM
IGdlbmVyYXRlVW5pcXVlVVJMKCk7CiAKLSAgICBzdGF0aWMgUmVmPFVzZXJTY3JpcHQ+IGNyZWF0
ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQsIEFQSTo6Q29udGVudFdvcmxkJiB3b3Js
ZCkKKyAgICBzdGF0aWMgUmVmPFVzZXJTY3JpcHQ+IGNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0
JiYgdXNlclNjcmlwdCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgVXNlclNjcmlwdChXVEZNb3ZlKHVzZXJTY3JpcHQpLCB3b3Js
ZCkpOwogICAgIH0KIAogICAgIFVzZXJTY3JpcHQoV2ViQ29yZTo6VXNlclNjcmlwdCwgQVBJOjpD
b250ZW50V29ybGQmKTsKIAorICAgIFdlYkNvcmU6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQoKSB7
IHJldHVybiBtX3VzZXJTY3JpcHQ7IH0KICAgICBjb25zdCBXZWJDb3JlOjpVc2VyU2NyaXB0JiB1
c2VyU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV91c2VyU2NyaXB0OyB9Ci0gICAgCisKICAgICBD
b250ZW50V29ybGQmIGNvbnRlbnRXb3JsZCgpIHsgcmV0dXJuIG1fd29ybGQ7IH0KICAgICBjb25z
dCBDb250ZW50V29ybGQmIGNvbnRlbnRXb3JsZCgpIGNvbnN0IHsgcmV0dXJuIG1fd29ybGQ7IH0K
ICAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91
cC5jcHAJKHJldmlzaW9uIDI1OTQ4MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksNyArOTksNyBAQCB2b2lkIFdL
UGFnZUdyb3VwQWRkVXNlclNjcmlwdChXS1BhZ2VHcm91CiAgICAgYXV0byBibGFja2xpc3QgPSB0
b0ltcGwoYmxhY2tsaXN0ZWRVUkxQYXR0ZXJucyk7CiAgICAgCiAgICAgYXV0byB1cmwgPSBiYXNl
VVJMU3RyaW5nLmlzRW1wdHkoKSA/IGFib3V0QmxhbmtVUkwoKSA6ICBVUkwoVVJMKCksIGJhc2VV
UkxTdHJpbmcpOwotICAgIFJlZjxBUEk6OlVzZXJTY3JpcHQ+IHVzZXJTY3JpcHQgPSBBUEk6OlVz
ZXJTY3JpcHQ6OmNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGTW92ZShzb3VyY2UpLCBX
VEZNb3ZlKHVybCksIHdoaXRlbGlzdCA/IHdoaXRlbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZl
Y3RvcjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJsYWNrbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6
IFZlY3RvcjxTdHJpbmc+KCksIHRvVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGlt
ZSksIHRvVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcykgfSwgQVBJOjpD
b250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgUmVmPEFQSTo6VXNlclNjcmlw
dD4gdXNlclNjcmlwdCA9IEFQSTo6VXNlclNjcmlwdDo6Y3JlYXRlKFdlYkNvcmU6OlVzZXJTY3Jp
cHQgeyBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUodXJsKSwgd2hpdGVsaXN0ID8gd2hpdGVsaXN0
LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgYmxhY2tsaXN0ID8gYmxhY2ts
aXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgdG9Vc2VyU2NyaXB0SW5q
ZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgdG9Vc2VyQ29udGVudEluamVjdGVkRnJhbWVzKGlu
amVjdGVkRnJhbWVzKSwgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGlu
Zzo6Tm8gfSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CiAgICAgdG9J
bXBsKHBhZ2VHcm91cFJlZiktPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQo
dXNlclNjcmlwdC5nZXQoKSwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5OjpObyk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLVXNlclNjcmlwdFJlZi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyU2NyaXB0
UmVmLmNwcAkocmV2aXNpb24gMjU5NDgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tVc2VyU2NyaXB0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBX
S1R5cGVJRCBXS1VzZXJTY3JpcHRHZXRUeXBlSUQoKQogCiBXS1VzZXJTY3JpcHRSZWYgV0tVc2Vy
U2NyaXB0Q3JlYXRlV2l0aFNvdXJjZShXS1N0cmluZ1JlZiBzb3VyY2VSZWYsIF9XS1VzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIGJvb2wgZm9yTWFpbkZyYW1lT25seSkKIHsK
LSAgICByZXR1cm4gdG9BUEkoJkFQSTo6VXNlclNjcmlwdDo6Y3JlYXRlKFdlYkNvcmU6OlVzZXJT
Y3JpcHQgeyB0b1dURlN0cmluZyhzb3VyY2VSZWYpLCBBUEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRl
VW5pcXVlVVJMKCksIHsgfSwgeyB9LCB0b1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlv
blRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkg
OiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyB9LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNv
bnRlbnRXb3JsZCgpKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSSgmQVBJOjpVc2VyU2Ny
aXB0OjpjcmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB7IHRvV1RGU3RyaW5nKHNvdXJjZVJlZiks
IEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgeyB9LCB7IH0sIHRvVXNlclNj
cmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJD
b3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdl
YkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBXZWJD
b3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9LCBBUEk6OkNvbnRl
bnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKS5sZWFrUmVmKCkpOwogfQogCiBXS1N0cmluZ1Jl
ZiBXS1VzZXJTY3JpcHRDb3B5U291cmNlKFdLVXNlclNjcmlwdFJlZiB1c2VyU2NyaXB0UmVmKQpA
QCAtNTMsNSArNTMsNSBAQCBfV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBXS1VzZXJTY3JpcHRH
CiAKIGJvb2wgV0tVc2VyU2NyaXB0R2V0TWFpbkZyYW1lT25seShXS1VzZXJTY3JpcHRSZWYgdXNl
clNjcmlwdFJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHVzZXJTY3JpcHRSZWYpLT51c2VyU2Ny
aXB0KCkuaW5qZWN0ZWRGcmFtZXMoKSA9PSBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seTsK
KyAgICByZXR1cm4gdG9JbXBsKHVzZXJTY3JpcHRSZWYpLT51c2VyU2NyaXB0KCkuaW5qZWN0ZWRG
cmFtZXMoKSA9PSBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRv
cEZyYW1lT25seTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1VzZXJTY3JpcHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVXNlclNjcmlwdC5tbQkocmV2aXNpb24gMjU5NDgwKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzUsNyArMzUsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nCiAg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAg
ICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwg
V2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclNjcmlw
dDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgeyB9LCB7IH0sIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlw
dEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3Jl
OjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sIEFQ
STo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOworICAgIEFQSTo6T2JqZWN0Ojpj
b25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2Ny
aXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgQVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1
ZVVSTCgpLCB7IH0sIHsgfSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShp
bmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5q
ZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJ
bmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OldhaXRGb3JOb3RpZmlj
YXRpb25CZWZvcmVJbmplY3Rpbmc6Ok5vIH0sIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVu
dFdvcmxkKCkpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC01OSw3ICs1OSw3IEBAIC0gKFdL
VXNlclNjcmlwdEluamVjdGlvblRpbWUpaW5qZWN0aW9uVGkKIAogLSAoQk9PTClpc0Zvck1haW5G
cmFtZU9ubHkKIHsKLSAgICByZXR1cm4gX3VzZXJTY3JpcHQtPnVzZXJTY3JpcHQoKS5pbmplY3Rl
ZEZyYW1lcygpID09IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5OworICAgIHJldHVybiBf
dXNlclNjcmlwdC0+dXNlclNjcmlwdCgpLmluamVjdGVkRnJhbWVzKCkgPT0gV2ViQ29yZTo6VXNl
ckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHk7CiB9CiAKIC0gKGlk
KWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQpAQCAtODQsNyArODQsNyBAQCAtIChpbnN0YW5j
ZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBp
bml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0
SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdU
Rjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwg
QVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9y
KGxlZ2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUo
aW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZy
YW1lT25seSA6IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sICp1c2VyQ29udGVudFdvcmxk
LT5fY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3Ry
dWN0SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7
IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwo
KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVj
dG9yKGxlZ2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRp
bWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpXYWl0Rm9yTm90
aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRl
bnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTk0LDcg
Kzk0LDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aFNvdXJjZTooTlNTdHJpbgogICAgIGlm
ICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgQVBJ
OjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNv
cmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBVUkwoYXNzb2NpYXRlZFVSTCks
IEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3Rv
cihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1l
KGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BG
cmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyB9LCAqdXNlckNvbnRlbnRXb3Js
ZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0
cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQg
eyBXVEY6OlN0cmluZyhzb3VyY2UpLCBVUkwoYXNzb2NpYXRlZFVSTCksIEFQSTo6dG9TdHJpbmdW
ZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xp
c3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUp
LCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6
SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
OjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6V2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUlu
amVjdGluZzo6Tm8gfSwgKnVzZXJDb250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50
V29ybGQpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0xMTAsNyArMTEwLDcgQEAgLSAoaW5z
dGFuY2V0eXBlKV9pbml0V2l0aFNvdXJjZTooTlNTdHJpbgogICAgIGlmICghKHNlbGYgPSBbc3Vw
ZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0
cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQg
eyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJM
KCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1Zl
Y3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25U
aW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5U
b3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyB9LCAqY29udGVudFdvcmxk
LT5fY29udGVudFdvcmxkKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQ
STo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6U3RyaW5nKHNv
dXJjZSksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgQVBJOjp0b1N0cmlu
Z1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNr
bGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGlt
ZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
OjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFt
ZXM6OkluamVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3Jl
SW5qZWN0aW5nOjpObyB9LCAqY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKIAogICAgIHJl
dHVybiBzZWxmOwogfQpAQCAtMTIwLDcgKzEyMCwxNyBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRX
aXRoU291cmNlOihOU1N0cmluCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQ
STo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6U3RyaW5nKHNv
dXJjZSksIFVSTChhc3NvY2lhdGVkVVJMKSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0
ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJD
b3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9u
bHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OkluamVjdEluQWxs
RnJhbWVzIH0sICpjb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0
Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2Vy
U2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgVVJMKGFzc29jaWF0ZWRVUkwpLCBBUEk6OnRv
U3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5
QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rp
b25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRG
cmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OldhaXRGb3JOb3RpZmljYXRpb25C
ZWZvcmVJbmplY3Rpbmc6Ok5vIH0sICpjb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOworCisg
ICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhTb3VyY2U6KE5T
U3RyaW5nICopc291cmNlIGluamVjdGlvblRpbWU6KFdLVXNlclNjcmlwdEluamVjdGlvblRpbWUp
aW5qZWN0aW9uVGltZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW5GcmFtZU9ubHkgbGVn
YWN5V2hpdGVsaXN0OihOU0FycmF5PE5TU3RyaW5nICo+ICopbGVnYWN5V2hpdGVsaXN0IGxlZ2Fj
eUJsYWNrbGlzdDooTlNBcnJheTxOU1N0cmluZyAqPiAqKWxlZ2FjeUJsYWNrbGlzdCBhc3NvY2lh
dGVkVVJMOihOU1VSTCAqKWFzc29jaWF0ZWRVUkwgY29udGVudFdvcmxkOihXS0NvbnRlbnRXb3Js
ZCAqKWNvbnRlbnRXb3JsZCBkZWZlclJ1bm5pbmdVbnRpbE5vdGlmaWNhdGlvbjooQk9PTClkZWZl
clJ1bm5pbmdVbnRpbE5vdGlmaWNhdGlvbgoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5p
dF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdElu
V3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6
OlN0cmluZyhzb3VyY2UpLCBVUkwoYXNzb2NpYXRlZFVSTCksIEFQSTo6dG9TdHJpbmdWZWN0b3Io
bGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBB
UEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JN
YWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0
SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmpl
Y3RJbkFsbEZyYW1lcywgZGVmZXJSdW5uaW5nVW50aWxOb3RpZmljYXRpb24gPyBXZWJDb3JlOjpX
YWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpZZXMgOiBXZWJDb3JlOjpXYWl0Rm9y
Tm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9LCAqY29udGVudFdvcmxkLT5fY29udGVu
dFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdEludGVybmFsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdEludGVybmFsLmgJKHJl
dmlzaW9uIDI1OTQ4MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Vz
ZXJTY3JpcHRJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwyMyArNDEsMjEgQEAgaW5s
aW5lIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIAogewogICAgIHN3aXRjaCAoaW5q
ZWN0aW9uVGltZSkgewogICAgIGNhc2UgV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1l
bnRTdGFydDoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkluamVjdEF0RG9jdW1lbnRTdGFydDsK
LQorICAgICAgICByZXR1cm4gV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3Vt
ZW50U3RhcnQ7CiAgICAgY2FzZSBXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudEVu
ZDoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkluamVjdEF0RG9jdW1lbnRFbmQ7CisgICAgICAg
IHJldHVybiBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQ7CiAg
ICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6Oklu
amVjdEF0RG9jdW1lbnRFbmQ7CisgICAgcmV0dXJuIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rp
b25UaW1lOjpEb2N1bWVudEVuZDsKIH0KIAogaW5saW5lIFdLVXNlclNjcmlwdEluamVjdGlvblRp
bWUgdG9XS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rp
b25UaW1lIGluamVjdGlvblRpbWUpCiB7CiAgICAgc3dpdGNoIChpbmplY3Rpb25UaW1lKSB7Ci0g
ICAgY2FzZSBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50U3RhcnQ6CisgICAgY2FzZSBXZWJDb3Jl
OjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRTdGFydDoKICAgICAgICAgcmV0dXJu
IFdLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQ7Ci0KLSAgICBjYXNlIFdl
YkNvcmU6OkluamVjdEF0RG9jdW1lbnRFbmQ6CisgICAgY2FzZSBXZWJDb3JlOjpVc2VyU2NyaXB0
SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQ6CiAgICAgICAgIHJldHVybiBXS1VzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lQXREb2N1bWVudEVuZDsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHRQcml2YXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdFByaXZhdGUuaAko
cmV2aXNpb24gMjU5NDgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
VXNlclNjcmlwdFByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsOCBAQCBOU19B
U1NVTUVfTk9OTlVMTF9CRUdJTgogLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aFNvdXJjZTooTlNT
dHJpbmcgKilzb3VyY2UgaW5qZWN0aW9uVGltZTooV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSlp
bmplY3Rpb25UaW1lIGZvck1haW5GcmFtZU9ubHk6KEJPT0wpZm9yTWFpbkZyYW1lT25seSBsZWdh
Y3lXaGl0ZWxpc3Q6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilsZWdhY3lXaGl0ZWxpc3QgbGVnYWN5
QmxhY2tsaXN0OihOU0FycmF5PE5TU3RyaW5nICo+ICopbGVnYWN5QmxhY2tsaXN0IGNvbnRlbnRX
b3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKGluc3RhbmNldHlwZSlfaW5pdFdp
dGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGluamVjdGlvblRpbWU6KFdLVXNlclNjcmlwdElu
amVjdGlvblRpbWUpaW5qZWN0aW9uVGltZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW5G
cmFtZU9ubHkgbGVnYWN5V2hpdGVsaXN0OihOU0FycmF5PE5TU3RyaW5nICo+ICopbGVnYWN5V2hp
dGVsaXN0IGxlZ2FjeUJsYWNrbGlzdDooTlNBcnJheTxOU1N0cmluZyAqPiAqKWxlZ2FjeUJsYWNr
bGlzdCBhc3NvY2lhdGVkVVJMOihOU1VSTCAqKWFzc29jaWF0ZWRVUkwgY29udGVudFdvcmxkOihX
S0NvbnRlbnRXb3JsZCAqKWNvbnRlbnRXb3JsZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCistIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoU291
cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25UaW1lOihXS1VzZXJTY3JpcHRJbmplY3Rp
b25UaW1lKWluamVjdGlvblRpbWUgZm9yTWFpbkZyYW1lT25seTooQk9PTClmb3JNYWluRnJhbWVP
bmx5IGxlZ2FjeVdoaXRlbGlzdDooTlNBcnJheTxOU1N0cmluZyAqPiAqKWxlZ2FjeVdoaXRlbGlz
dCBsZWdhY3lCbGFja2xpc3Q6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilsZWdhY3lCbGFja2xpc3Qg
YXNzb2NpYXRlZFVSTDooTlNVUkwgKilhc3NvY2lhdGVkVVJMIGNvbnRlbnRXb3JsZDooV0tDb250
ZW50V29ybGQgKiljb250ZW50V29ybGQgZGVmZXJSdW5uaW5nVW50aWxOb3RpZmljYXRpb246KEJP
T0wpZGVmZXJSdW5uaW5nVW50aWxOb3RpZmljYXRpb24gV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBfV0tVc2VyQ29udGVudFdvcmxkICpfdXNlckNvbnRlbnRXb3JsZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEwLjEyKSwgaW9zKDEwLjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgV0tDb250ZW50V29ybGQgKl9jb250ZW50V29ybGQgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyNTk0ODAp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzIzLDYgKzIzMjMsMTYgQEAgLSAodm9pZClfdXBkYXRlV2VicGFnZVBy
ZWZlcmVuY2VzOihXS1dlYgogICAgIF9wYWdlLT51cGRhdGVXZWJzaXRlUG9saWNpZXMoV1RGTW92
ZShkYXRhKSk7CiB9CiAKKy0gKHZvaWQpX25vdGlmeVVzZXJTY3JpcHRzCit7CisgICAgX3BhZ2Ut
Pm5vdGlmeVVzZXJTY3JpcHRzKCk7Cit9CisKKy0gKEJPT0wpX2RlZmVycmFibGVVc2VyU2NyaXB0
c05lZWROb3RpZmljYXRpb24KK3sKKyAgICByZXR1cm4gX3BhZ2UtPnVzZXJTY3JpcHRzTmVlZE5v
dGlmaWNhdGlvbigpOworfQorCiAtIChCT09MKV9hbGxvd3NSZW1vdGVJbnNwZWN0aW9uCiB7CiAj
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQko
cmV2aXNpb24gMjU5NDgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTkzMyw2ICs5MzMsMTYg
QEAgLSAoQk9PTClfbG9hZHNTdWJyZXNvdXJjZXMKICAgICByZXR1cm4gX3BhZ2VDb25maWd1cmF0
aW9uLT5sb2Fkc1N1YnJlc291cmNlcygpOwogfQogCistIChCT09MKV9kZWZlcnJhYmxlVXNlclNj
cmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24KK3sKKyAgICByZXR1cm4gX3BhZ2VDb25m
aWd1cmF0aW9uLT51c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbigpOworfQor
CistICh2b2lkKV9zZXREZWZlcnJhYmxlVXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmlj
YXRpb246KEJPT0wpdmFsdWUKK3sKKyAgICBfcGFnZUNvbmZpZ3VyYXRpb24tPnNldFVzZXJTY3Jp
cHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uKHZhbHVlKTsKK30KKwogLSAodm9pZClfc2V0
Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOihCT09MKWVuYWJsZWQKIHsKICAg
ICBfcGFnZUNvbmZpZ3VyYXRpb24tPnNldENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5h
YmxlZChlbmFibGVkKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCShy
ZXZpc2lvbiAyNTk0ODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQs
NyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgX1dLV2ViVmlld0NhCiAKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tXZWJzaXRlRGF0YVN0b3JlICpfd2Vic2l0ZURhdGFT
dG9yZUlmRXhpc3RzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgc2V0dGVyPV9zZXRDT1JTRGlz
YWJsaW5nUGF0dGVybnM6KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfY29yc0Rpc2FibGluZ1BhdHRl
cm5zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXREZWZlcnJhYmxlVXNlclNjcmlwdHNT
aG91bGRXYWl0VW50aWxOb3RpZmljYXRpb246KSBCT09MIF9kZWZlcnJhYmxlVXNlclNjcmlwdHNT
aG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24gV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3Nl
dENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDopIEJPT0wgX2Nyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9z
ZXRMb2Fkc0Zyb21OZXR3b3JrOikgQk9PTCBfbG9hZHNGcm9tTmV0d29yayBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCShy
ZXZpc2lvbiAyNTk0ODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcsNiArMjA3LDggQEAgZm9yIHRo
aXMgcHJvcGVydHkuCiAKIC0gKHZvaWQpX3VwZGF0ZVdlYnNpdGVQb2xpY2llczooX1dLV2Vic2l0
ZVBvbGljaWVzICopd2Vic2l0ZVBvbGljaWVzIFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFD
RU1FTlQoIi1fdXBkYXRlV2VicGFnZVByZWZlcmVuY2VzOiIsIG1hY29zKDEwLjEzLCBXS19NQUNf
VEJBKSwgaW9zKDExLjMsIFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3VwZGF0ZVdlYnBhZ2VQcmVm
ZXJlbmNlczooV0tXZWJwYWdlUHJlZmVyZW5jZXMgKil3ZWJwYWdlUHJlZmVyZW5jZXMgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQp
X25vdGlmeVVzZXJTY3JpcHRzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX2Rl
ZmVycmFibGVVc2VyU2NyaXB0c05lZWROb3RpZmljYXRpb24gV0tfQVBJX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogLSAodm9pZClfZXZhbHVhdGVKYXZh
U2NyaXB0V2l0aG91dFVzZXJHZXN0dXJlOihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVy
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOwogLSAodm9pZClfZXZh
bHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgaW5GcmFtZTooV0tG
cmFtZUluZm8gKilmcmFtZSBpbkNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50
V29ybGQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICogZXJyb3IpKWNv
bXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
VXNlclN0eWxlU2hlZXQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCShyZXZpc2lvbiAyNTk0ODApCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0JKHdvcmtp
bmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNl
OihOU1N0cmluZwogICAgIC8vIEZJWE1FOiBJbiB0aGUgQVBJIHRlc3QsIHdlIGNhbiB1c2UgZ2Vu
ZXJhdGVVbmlxdWVVUkwgYmVsb3cgYmVmb3JlIHRoZSBBUEk6Ok9iamVjdCBjb25zdHJ1Y3RvciBo
YXMgZG9uZSB0aGlzLi4uIHdoZXJlIHNob3VsZCB0aGlzIHJlYWxseSBiZT8KICAgICBXZWJLaXQ6
OkluaXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFw
cGVyPEFQSTo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsg
V1RGOjpTdHJpbmcoc291cmNlKSwgQVBJOjpVc2VyU3R5bGVTaGVldDo6Z2VuZXJhdGVVbmlxdWVV
UkwoKSwgeyB9LCB7IH0sIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZy
YW1lT25seSA6IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpVc2VyU3R5bGVV
c2VyTGV2ZWwgfSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAg
QVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxm
LCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNl
clN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgeyB9LCBmb3JNYWluRnJhbWVP
bmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFt
ZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZy
YW1lcywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsIH0sIEFQSTo6Q29udGVudFdvcmxkOjpw
YWdlQ29udGVudFdvcmxkKCkpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC01OCw3ICs1OCw3
IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNvdXJjZTooTlNTdHJpbmcKICAgICAvLyBGSVhN
RTogSW4gdGhlIEFQSSB0ZXN0LCB3ZSBjYW4gdXNlIGdlbmVyYXRlVW5pcXVlVVJMIGJlbG93IGJl
Zm9yZSB0aGUgQVBJOjpPYmplY3QgY29uc3RydWN0b3IgaGFzIGRvbmUgdGhpcy4uLiB3aGVyZSBz
aG91bGQgdGhpcyByZWFsbHkgYmU/CiAgICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0MigpOwog
Ci0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0
PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIEFQ
STo6VXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgIHsgfSwgZm9yTWFp
bkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5q
ZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCwgW3dlYlZpZXcgX3Bh
Z2VdLT53ZWJQYWdlSUQoKSB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2Nv
bnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVz
ZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3RyaW5n
KHNvdXJjZSksIEFQSTo6VXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIHsgfSwg
IHsgfSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFt
ZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCwgW3dl
YlZpZXcgX3BhZ2VdLT53ZWJQYWdlSUQoKSB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRX
b3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTcxLDcgKzcx
LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZwogICAgIC8vIEZJ
WE1FOiBJbiB0aGUgQVBJIHRlc3QsIHdlIGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwgYmVsb3cg
YmVmb3JlIHRoZSBBUEk6Ok9iamVjdCBjb25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4uIHdoZXJl
IHNob3VsZCB0aGlzIHJlYWxseSBiZT8KICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7
CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hl
ZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwg
QVBJOjpVc2VyU3R5bGVTaGVldDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgQVBJOjp0b1N0cmluZ1Zl
Y3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlz
dCksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdl
YkNvcmU6OkluamVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwg
KnVzZXJDb250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOworICAgIEFQ
STo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwg
V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJT
dHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2Fj
eVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFp
bkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdElu
VG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0
SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRX
b3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsK
IH0KQEAgLTg0LDcgKzg0LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0
cmluZwogICAgIC8vIEZJWE1FOiBJbiB0aGUgQVBJIHRlc3QsIHdlIGNhbiB1c2UgZ2VuZXJhdGVV
bmlxdWVVUkwgYmVsb3cgYmVmb3JlIHRoZSBBUEk6Ok9iamVjdCBjb25zdHJ1Y3RvciBoYXMgZG9u
ZSB0aGlzLi4uIHdoZXJlIHNob3VsZCB0aGlzIHJlYWxseSBiZT8KICAgICBXZWJLaXQ6OkluaXRp
YWxpemVXZWJLaXQyKCk7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQ
STo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpT
dHJpbmcoc291cmNlKSwgeyAgVVJMKCksIFdURjo6U3RyaW5nKFtiYXNlVVJMIF93ZWJfb3JpZ2lu
YWxEYXRhQXNXVEZTdHJpbmddKSB9LCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlz
dCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25s
eSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxG
cmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+
X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVj
dEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVT
aGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIHsgIFVSTCgpLCBXVEY6OlN0cmluZyhbYmFzZVVS
TCBfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3RyaW5nXSkgfSwgQVBJOjp0b1N0cmluZ1ZlY3Rvcihs
ZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIGZv
ck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmpl
Y3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6Oklu
amVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgKnVzZXJDb250
ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogCiAgICAgcmV0dXJuIHNl
bGY7CiB9CkBAIC0xMDksNyArMTA5LDcgQEAgLSAoTlNVUkwgKiliYXNlVVJMCiAKIC0gKEJPT0wp
aXNGb3JNYWluRnJhbWVPbmx5CiB7Ci0gICAgcmV0dXJuIF91c2VyU3R5bGVTaGVldC0+dXNlclN0
eWxlU2hlZXQoKS5pbmplY3RlZEZyYW1lcygpID09IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVP
bmx5OworICAgIHJldHVybiBfdXNlclN0eWxlU2hlZXQtPnVzZXJTdHlsZVNoZWV0KCkuaW5qZWN0
ZWRGcmFtZXMoKSA9PSBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJ
blRvcEZyYW1lT25seTsKIH0KIAogLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
VXNlckNvbnRlbnQuY3BwCShyZXZpc2lvbiAyNTk0ODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUw
LDEyICs1MCwxMiBAQCBzdGF0aWMgaW5saW5lIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgCiB7
CiAgICAgc3dpdGNoIChpbmplY3RlZEZyYW1lcykgewogICAgIGNhc2UgV0VCS0lUX1VTRVJfQ09O
VEVOVF9JTkpFQ1RfVE9QX0ZSQU1FOgotICAgICAgICByZXR1cm4gSW5qZWN0SW5Ub3BGcmFtZU9u
bHk7CisgICAgICAgIHJldHVybiBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRv
cEZyYW1lT25seTsKICAgICBjYXNlIFdFQktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX0FMTF9GUkFN
RVM6Ci0gICAgICAgIHJldHVybiBJbmplY3RJbkFsbEZyYW1lczsKKyAgICAgICAgcmV0dXJuIFVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gSW5qZWN0SW5B
bGxGcmFtZXM7CisgICAgICAgIHJldHVybiBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmpl
Y3RJbkFsbEZyYW1lczsKICAgICB9CiB9CiAKQEAgLTc2LDEyICs3NiwxMiBAQCBzdGF0aWMgaW5s
aW5lIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIHRvCiB7CiAgICAgc3dpdGNoIChpbmplY3Rpb25U
aW1lKSB7CiAgICAgY2FzZSBXRUJLSVRfVVNFUl9TQ1JJUFRfSU5KRUNUX0FUX0RPQ1VNRU5UX1NU
QVJUOgotICAgICAgICByZXR1cm4gSW5qZWN0QXREb2N1bWVudFN0YXJ0OworICAgICAgICByZXR1
cm4gVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50U3RhcnQ7CiAgICAgY2FzZSBXRUJL
SVRfVVNFUl9TQ1JJUFRfSU5KRUNUX0FUX0RPQ1VNRU5UX0VORDoKLSAgICAgICAgcmV0dXJuIElu
amVjdEF0RG9jdW1lbnRFbmQ7CisgICAgICAgIHJldHVybiBVc2VyU2NyaXB0SW5qZWN0aW9uVGlt
ZTo6RG9jdW1lbnRFbmQ7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIHJldHVybiBJbmplY3RBdERvY3VtZW50U3RhcnQ7CisgICAgICAgIHJldHVy
biBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRTdGFydDsKICAgICB9CiB9CiAKQEAg
LTIxNCw3ICsyMTQsNyBAQCBzdHJ1Y3QgX1dlYktpdFVzZXJTY3JpcHQgewogICAgICAgICAgICAg
U3RyaW5nOjpmcm9tVVRGOChzb3VyY2UpLCBVUkwgeyB9LAogICAgICAgICAgICAgdG9TdHJpbmdW
ZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwKICAgICAgICAgICAg
IHRvVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksCi0gICAgICAgICAgICB0
b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMpIH0sIHdvcmxkKSkpCisg
ICAgICAgICAgICB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMpLCBX
ZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9LCB3b3JsZCkp
KQogICAgICAgICAsIHJlZmVyZW5jZUNvdW50KDEpCiAgICAgewogICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNTk0ODApCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzkyLDcgKzM5Miw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjphZGRVc2VyU2MKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
ICAgIGF1dG8mIG1haW5GcmFtZSA9IHBhZ2UubWFpbkZyYW1lKCk7Ci0gICAgICAgICAgICBpZiAo
dXNlclNjcmlwdC5pbmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5KSB7Cisg
ICAgICAgICAgICBpZiAodXNlclNjcmlwdC5pbmplY3RlZEZyYW1lcygpID09IFVzZXJDb250ZW50
SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5KSB7CiAgICAgICAgICAgICAgICAg
bWFpbkZyYW1lLmluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSh3b3JsZC5jb3JlV29ybGQoKSwg
dXNlclNjcmlwdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlz
aW9uIDI1OTQ4MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjksNiArNTI5LDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIAogI2VuZGlmCiAKICAgICBwYWdlQ29uZmlndXJhdGlvbi5j
b3JzRGlzYWJsaW5nUGF0dGVybnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMuY29yc0Rpc2FibGluZ1Bh
dHRlcm5zKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi51c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRp
bE5vdGlmaWNhdGlvbiA9IHBhcmFtZXRlcnMudXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3Rp
ZmljYXRpb247CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZHNTdWJyZXNvdXJjZXMgPSBwYXJh
bWV0ZXJzLmxvYWRzU3VicmVzb3VyY2VzOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzRnJv
bU5ldHdvcmsgPSBwYXJhbWV0ZXJzLmxvYWRzRnJvbU5ldHdvcms7CiAKQEAgLTYyODQsNiArNjI4
NSwxNCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVdlYnNpdGVQb2xpY2llcyhXZWJzCiAjZW5kaWYK
IH0KIAordm9pZCBXZWJQYWdlOjpub3RpZnlVc2VyU2NyaXB0cygpCit7CisgICAgaWYgKCFtX3Bh
Z2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFnZS0+bm90aWZ5VG9JbmplY3RVc2VyU2Ny
aXB0cygpOworfQorCiB1bnNpZ25lZCBXZWJQYWdlOjpleHRlbmRJbmNyZW1lbnRhbFJlbmRlcmlu
Z1N1cHByZXNzaW9uKCkKIHsKICAgICB1bnNpZ25lZCB0b2tlbiA9IG1fbWF4aW11bVJlbmRlcmlu
Z1N1cHByZXNzaW9uVG9rZW4gKyAxOwpAQCAtNjQzNiw3ICs2NDQ1LDcgQEAgdm9pZCBXZWJQYWdl
OjppbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaAogCiB2b2lkIFdlYlBhZ2U6OmFkZFVzZXJTY3Jp
cHQoU3RyaW5nJiYgc291cmNlLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCwgV2Vi
Q29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgV2ViQ29yZTo6
VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSkKIHsKLSAgICBXZWJDb3JlOjpV
c2VyU2NyaXB0IHVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFVSTChhYm91dEJsYW5rVVJM
KCkpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBpbmplY3Rpb25UaW1lLCBp
bmplY3RlZEZyYW1lcyB9OworICAgIFdlYkNvcmU6OlVzZXJTY3JpcHQgdXNlclNjcmlwdCB7IFdU
Rk1vdmUoc291cmNlKSwgVVJMKGFib3V0QmxhbmtVUkwoKSksIFZlY3RvcjxTdHJpbmc+KCksIFZl
Y3RvcjxTdHJpbmc+KCksIGluamVjdGlvblRpbWUsIGluamVjdGVkRnJhbWVzLCBXZWJDb3JlOjpX
YWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyB9OwogCiAgICAgbV91c2VyQ29u
dGVudENvbnRyb2xsZXItPmFkZFVzZXJTY3JpcHQod29ybGQsIFdURk1vdmUodXNlclNjcmlwdCkp
OwogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAko
cmV2aXNpb24gMjU5NDgwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjE2LDYgKzE2MTYsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgcmVwb3J0VXNlZEZlYXR1cmVzKCk7CiAKICAgICB2b2lkIHVwZGF0ZVdlYnNpdGVQb2xp
Y2llcyhXZWJzaXRlUG9saWNpZXNEYXRhJiYpOworICAgIHZvaWQgbm90aWZ5VXNlclNjcmlwdHMo
KTsKIAogICAgIHZvaWQgY2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYmKTsKICAgICB2
b2lkIGNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVDaGFuZ2VzJiYp
OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNTk0ODApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xODYs
NiArMTg2LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbgogICAg
IERpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbShzdHJ1Y3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllciBiYWNrRm9yd2FyZEl0ZW1JRCkKIAogICAgIFVwZGF0ZVdlYnNpdGVQb2xpY2ll
cyhzdHJ1Y3QgV2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhIHdlYnNpdGVQb2xpY2llcykKKyAg
ICBOb3RpZnlVc2VyU2NyaXB0cygpCiAgICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBzdHJ1Y3Qg
V2ViS2l0OjpQb2xpY3lEZWNpc2lvbiBwb2xpY3lEZWNpc2lvbikKIAogICAgIENvbnRpbnVlV2ls
bFN1Ym1pdEZvcm0oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IGxp
c3RlbmVySUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTk0
ODApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNC0wMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTUEkgdG8gbWFrZSBXS1VzZXJTY3JpcHRz
IHdhaXQgZm9yIGEgbm90aWZpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDk4NDUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwMzQyMjk5
PgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9pbmplY3RPdXRsb29rUXVpcmtzU2Ny
aXB0XSk6CisKIDIwMjAtMDQtMDMgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBbWGNvZGVdIFJlcGxhY2UgQVNBTl9PVEhFUl9DRkxBR1MgYW5kIEFTQU5fT1RI
RVJfQ1BMVVNQTFVTRkxBR1Mgd2l0aCAkKGluaGVyaXRlZCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDI1OTQ4MCkKKysrIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTIyNyw3ICsxMjI3LDcgQEAgc3RhdGljIE5TU3RyaW5nICpsZWFrT3V0bG9va1F1aXJrc1VzZXJT
YwogLSh2b2lkKV9pbmplY3RPdXRsb29rUXVpcmtzU2NyaXB0CiB7CiAgICAgc3RhdGljIE5TU3Ry
aW5nICpvdXRsb29rUXVpcmtzU2NyaXB0Q29udGVudHMgPSBsZWFrT3V0bG9va1F1aXJrc1VzZXJT
Y3JpcHRDb250ZW50cygpOwotICAgIF9wcml2YXRlLT5ncm91cC0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCkuYWRkVXNlclNjcmlwdCgqY29yZShbV2ViU2NyaXB0V29ybGQgd29ybGRdKSwgbWFrZVVu
aXF1ZTxXZWJDb3JlOjpVc2VyU2NyaXB0PihvdXRsb29rUXVpcmtzU2NyaXB0Q29udGVudHMsIFVS
TCgpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBXZWJDb3JlOjpJbmplY3RB
dERvY3VtZW50RW5kLCBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcykpOworICAgIF9wcml2YXRl
LT5ncm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCgqY29yZShbV2Vi
U2NyaXB0V29ybGQgd29ybGRdKSwgbWFrZVVuaXF1ZTxXZWJDb3JlOjpVc2VyU2NyaXB0PihvdXRs
b29rUXVpcmtzU2NyaXB0Q29udGVudHMsIFVSTCgpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8
U3RyaW5nPigpLCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQs
IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBX
ZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObykpOwogCiB9CiAj
ZW5kaWYKQEAgLTQ2NzYsNyArNDY3Niw3IEBAICsgKHZvaWQpX2FkZFVzZXJTY3JpcHRUb0dyb3Vw
OihOU1N0cmluZyAKICAgICBpZiAoIXdvcmxkKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRv
IHVzZXJTY3JpcHQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlVzZXJTY3JpcHQ+KHNvdXJjZSwgdXJs
LCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBp
bmplY3Rpb25UaW1lID09IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/IFdlYkNvcmU6OkluamVj
dEF0RG9jdW1lbnRTdGFydCA6IFdlYkNvcmU6OkluamVjdEF0RG9jdW1lbnRFbmQsIGluamVjdGVk
RnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFt
ZXMgOiBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSk7CisgICAgYXV0byB1c2VyU2NyaXB0
ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpVc2VyU2NyaXB0Pihzb3VyY2UsIHVybCwgdG9TdHJpbmdW
ZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0aW9uVGlt
ZSA9PSBXZWJJbmplY3RBdERvY3VtZW50U3RhcnQgPyBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0
aW9uVGltZTo6RG9jdW1lbnRTdGFydCA6IFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1l
OjpEb2N1bWVudEVuZCwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBX
ZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1lcyA6IFdl
YkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5LCBX
ZWJDb3JlOjpXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyk7CiAgICAgdmll
d0dyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KCpjb3JlKHdvcmxk
KSwgV1RGTW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAKQEAgLTQ2OTksNyArNDY5OSw3IEBAICsgKHZv
aWQpX2FkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cDooTlNTdHIKICAgICBpZiAoIXdvcmxkKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIHN0eWxlU2hlZXQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6
OlVzZXJTdHlsZVNoZWV0Pihzb3VyY2UsIHVybCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwg
dG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5B
bGxGcmFtZXMgPyBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyA6IFdlYkNvcmU6OkluamVjdElu
VG9wRnJhbWVPbmx5LCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwpOworICAgIGF1dG8gc3R5
bGVTaGVldCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+KHNvdXJjZSwgdXJs
LCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBp
bmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IFdlYkNvcmU6OlVzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzIDogV2ViQ29yZTo6VXNlckNvbnRl
bnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHksIFdlYkNvcmU6OlVzZXJTdHls
ZVVzZXJMZXZlbCk7CiAgICAgdmlld0dyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRV
c2VyU3R5bGVTaGVldCgqY29yZSh3b3JsZCksIFdURk1vdmUoc3R5bGVTaGVldCksIFdlYkNvcmU6
OkluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNTk0ODApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wNC0wMyAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBT
UEkgdG8gbWFrZSBXS1VzZXJTY3JpcHRzIHdhaXQgZm9yIGEgbm90aWZpY2F0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk4NDUKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzYwMzQyMjk5PgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1
bWV6LgorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2Vy
U2NyaXB0VG9Hcm91cCk6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2VyU3R5bGVTaGVldFRvR3Jv
dXApOgorCiAyMDIwLTA0LTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgYWxsIHVzZXMgb2YgbGl2ZSByYW5nZXMgZnJvbSBUZXh0SXRlcmF0b3IKSW5k
ZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyNTk0ODApCisrKyBT
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAw
Niw4ICs3MDA2LDggQEAgSFJFU1VMVCBXZWJWaWV3OjphZGRVc2VyU2NyaXB0VG9Hcm91cChfSQog
CiAgICAgV2ViU2NyaXB0V29ybGQqIHdvcmxkID0gcmVpbnRlcnByZXRfY2FzdDxXZWJTY3JpcHRX
b3JsZCo+KGlXb3JsZCk7CiAgICAgYXV0byB1c2VyU2NyaXB0ID0gbWFrZVVuaXF1ZTxVc2VyU2Ny
aXB0Pihzb3VyY2UsIHRvVVJMKHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCwgd2hpdGVs
aXN0Q291bnQpLAotICAgICAgICB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QsIGJsYWNrbGlzdENv
dW50KSwgaW5qZWN0aW9uVGltZSA9PSBXZWJJbmplY3RBdERvY3VtZW50U3RhcnQgPyBJbmplY3RB
dERvY3VtZW50U3RhcnQgOiBJbmplY3RBdERvY3VtZW50RW5kLAotICAgICAgICBpbmplY3RlZEZy
YW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0
SW5Ub3BGcmFtZU9ubHkpOworICAgICAgICB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QsIGJsYWNr
bGlzdENvdW50KSwgaW5qZWN0aW9uVGltZSA9PSBXZWJJbmplY3RBdERvY3VtZW50U3RhcnQgPyBV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRTdGFydCA6IFVzZXJTY3JpcHRJbmplY3Rp
b25UaW1lOjpEb2N1bWVudEVuZCwKKyAgICAgICAgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0
SW5BbGxGcmFtZXMgPyBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJbkFsbEZyYW1l
cyA6IFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5LCBXYWl0
Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpObyk7CiAgICAgdmlld0dyb3VwLT51c2Vy
Q29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KHdvcmxkLT53b3JsZCgpLCBXVEZNb3Zl
KHVzZXJTY3JpcHQpKTsKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTcwMzMsNyArNzAzMyw3IEBA
IEhSRVNVTFQgV2ViVmlldzo6YWRkVXNlclN0eWxlU2hlZXRUb0dyb3UKIAogICAgIFdlYlNjcmlw
dFdvcmxkKiB3b3JsZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViU2NyaXB0V29ybGQqPihpV29ybGQp
OwogICAgIGF1dG8gc3R5bGVTaGVldCA9IG1ha2VVbmlxdWU8VXNlclN0eWxlU2hlZXQ+KHNvdXJj
ZSwgdG9VUkwodXJsKSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0LCB3aGl0ZWxpc3RDb3VudCks
IHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCwgYmxhY2tsaXN0Q291bnQpLAotICAgICAgICBpbmpl
Y3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVzIDog
SW5qZWN0SW5Ub3BGcmFtZU9ubHksIFVzZXJTdHlsZVVzZXJMZXZlbCk7CisgICAgICAgIGluamVj
dGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gVXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lczo6SW5qZWN0SW5BbGxGcmFtZXMgOiBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmpl
Y3RJblRvcEZyYW1lT25seSwgVXNlclN0eWxlVXNlckxldmVsKTsKICAgICB2aWV3R3JvdXAtPnVz
ZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTdHlsZVNoZWV0KHdvcmxkLT53b3JsZCgpLCBX
VEZNb3ZlKHN0eWxlU2hlZXQpLCBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKICAgICByZXR1
cm4gU19PSzsKIH0KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI1OTQ4MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA0LTAzICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0byBtYWtlIFdLVXNlclNj
cmlwdHMgd2FpdCBmb3IgYSBub3RpZmljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTg0NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjAz
NDIyOTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbToK
KyAgICAgICAgKFRFU1QpOgorCiAyMDIwLTA0LTAzICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBh
cHBsZS5jb20+CiAKICAgICAgICAgW1hjb2RlXSBSZXBsYWNlIEFTQU5fT1RIRVJfQ0ZMQUdTIGFu
ZCBBU0FOX09USEVSX0NQTFVTUExVU0ZMQUdTIHdpdGggJChpbmhlcml0ZWQpCkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Vz
ZXJDb250ZW50Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjU5NDgwKQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI4LDEwICsyOCwxMyBAQAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMu
aCIKICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIK
KyNpbXBvcnQgIlRlc3RVSURlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAj
aW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
S1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VzZXJT
Y3JpcHQuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VzZXJTY3JpcHRQcml2YXRlLmg+CisjaW1wb3J0
IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktp
dC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
aD4KICNpbXBvcnQgPFdlYktpdC9fV0tVc2VyQ29udGVudFdvcmxkLmg+CkBAIC04MTEsMyArODE0
LDMzIEBAIFRFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIEluamVjdFVzZXIKICAgICB3YWl0
Rm9yTWVzc2FnZXMoNik7CiAgICAgY29tcGFyZU1lc3NhZ2VzKHsic3RhcnQgYWxsIiwgInN0YXJ0
IGFsbCIsICJlbmQgbWFpbiIsICJzdGFydCBhbGwiLCAiZW5kIG1haW4iLCAic3RhcnQgYWxsIn0p
OwogfQorCitURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBVc2VyU2NyaXB0Tm90aWZpY2F0
aW9uKQoreworICAgIFdLVXNlclNjcmlwdCAqd2FpdHNGb3JOb3RpZmljYXRpb24gPSBbW1tXS1Vz
ZXJTY3JpcHQgYWxsb2NdIF9pbml0V2l0aFNvdXJjZTpAImFsZXJ0KCd3YWl0ZWQgZm9yIG5vdGlm
aWNhdGlvbicpIiBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3Vt
ZW50U3RhcnQgZm9yTWFpbkZyYW1lT25seTpZRVMgbGVnYWN5V2hpdGVsaXN0OltOU0FycmF5IGFy
cmF5XSBsZWdhY3lCbGFja2xpc3Q6W05TQXJyYXkgYXJyYXldIGFzc29jaWF0ZWRVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJ0ZXN0Oi8vL3NjcmlwdCJdIGNvbnRlbnRXb3JsZDpbV0tDb250ZW50
V29ybGQgZGVmYXVsdENsaWVudFdvcmxkXSBkZWZlclJ1bm5pbmdVbnRpbE5vdGlmaWNhdGlvbjpZ
RVNdIGF1dG9yZWxlYXNlXTsKKyAgICBXS1VzZXJTY3JpcHQgKmRvY3VtZW50RW5kID0gW1tbV0tV
c2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpAImFsZXJ0KCdkb2N1bWVudCBwYXJzaW5n
IGVuZGVkJykiIGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1l
bnRFbmQgZm9yTWFpbkZyYW1lT25seTpZRVNdIGF1dG9yZWxlYXNlXTsKKworICAgIFRlc3RXS1dl
YlZpZXcgKndlYlZpZXcxID0gW1tUZXN0V0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAg
IEVYUEVDVF9UUlVFKHdlYlZpZXcxLl9kZWZlcnJhYmxlVXNlclNjcmlwdHNOZWVkTm90aWZpY2F0
aW9uKTsKKyAgICBbd2ViVmlldzEuY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIg
YWRkVXNlclNjcmlwdDp3YWl0c0Zvck5vdGlmaWNhdGlvbl07CisgICAgW3dlYlZpZXcxLmNvbmZp
Z3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6ZG9jdW1lbnRFbmRd
OworICAgIFRlc3RVSURlbGVnYXRlICpkZWxlZ2F0ZSA9IFtbVGVzdFVJRGVsZWdhdGUgbmV3XSBh
dXRvcmVsZWFzZV07CisgICAgd2ViVmlldzEuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIFt3
ZWJWaWV3MSBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSJdOworICAgIEVYUEVDVF9XS19TVFJF
UShbZGVsZWdhdGUgd2FpdEZvckFsZXJ0XSwgImRvY3VtZW50IHBhcnNpbmcgZW5kZWQiKTsKKyAg
ICBbd2ViVmlldzEgX25vdGlmeVVzZXJTY3JpcHRzXTsKKyAgICBFWFBFQ1RfRkFMU0Uod2ViVmll
dzEuX2RlZmVycmFibGVVc2VyU2NyaXB0c05lZWROb3RpZmljYXRpb24pOworICAgIEVYUEVDVF9X
S19TVFJFUShbZGVsZWdhdGUgd2FpdEZvckFsZXJ0XSwgIndhaXRlZCBmb3Igbm90aWZpY2F0aW9u
Iik7CisKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIG5ld10gYXV0b3JlbGVhc2VdOworICAgIEVYUEVDVF9UUlVFKGNv
bmZpZ3VyYXRpb24uX2RlZmVycmFibGVVc2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNh
dGlvbik7CisgICAgY29uZmlndXJhdGlvbi5fZGVmZXJyYWJsZVVzZXJTY3JpcHRzU2hvdWxkV2Fp
dFVudGlsTm90aWZpY2F0aW9uID0gTk87CisgICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldzIgPSBb
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdOworICAgIEVY
UEVDVF9GQUxTRSh3ZWJWaWV3Mi5fZGVmZXJyYWJsZVVzZXJTY3JpcHRzTmVlZE5vdGlmaWNhdGlv
bik7CisgICAgW3dlYlZpZXcyLmNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIGFk
ZFVzZXJTY3JpcHQ6d2FpdHNGb3JOb3RpZmljYXRpb25dOworICAgIFt3ZWJWaWV3Mi5jb25maWd1
cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciBhZGRVc2VyU2NyaXB0OmRvY3VtZW50RW5kXTsK
KyAgICB3ZWJWaWV3Mi5VSURlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgW3dlYlZpZXcyIGxvYWRU
ZXN0UGFnZU5hbWVkOkAic2ltcGxlIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKFtkZWxlZ2F0ZSB3
YWl0Rm9yQWxlcnRdLCAid2FpdGVkIGZvciBub3RpZmljYXRpb24iKTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoW2RlbGVnYXRlIHdhaXRGb3JBbGVydF0sICJkb2N1bWVudCBwYXJzaW5nIGVuZGVkIik7
Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>