<?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>240981</bug_id>
          
          <creation_ts>2022-05-26 14:56:46 -0700</creation_ts>
          <short_desc>Move disk operations when deleting cookies off from the main thread</short_desc>
          <delta_ts>2022-05-27 12:22:14 -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>WebKit Misc.</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>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>pangle</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1872150</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-05-26 14:56:46 -0700</bug_when>
    <thetext>When it&apos;s on the main thread, it causes hangs and lack of responsiveness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1872155</commentid>
    <comment_count>1</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-05-26 15:00:14 -0700</bug_when>
    <thetext>https://github.com/WebKit/WebKit/pull/1072</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1872168</commentid>
    <comment_count>2</comment_count>
      <attachid>459795</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-05-26 15:07:03 -0700</bug_when>
    <thetext>Created attachment 459795
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1872173</commentid>
    <comment_count>3</comment_count>
      <attachid>459795</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-05-26 15:13:29 -0700</bug_when>
    <thetext>Comment on attachment 459795
Patch

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

&gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:155
&gt; +            [nsCookieStorage() setCookie:newCookie];

Isn&apos;t this doing a cookie storage operation on the main thread?

&gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:585
&gt; +        [nsCookieStorage() _saveCookies:makeBlockPtr([completionHandler = WTFMove(completionHandler)] () mutable {

Isn&apos;t this doing cookie operations on the main thread?

&gt; Source/WebKit/NetworkProcess/Cookies/WebCookieManager.h:76
&gt; +    void deleteAllCookies(PAL::SessionID, CompletionHandler&lt;void()&gt;&amp;&amp;);

I wish you&apos;d use `CompletionHandler&lt;void()&gt;&amp;&amp;` consistently in your patch. However, you&apos;re using `CompletionHandler&lt;void()&gt;` as parameter sometimes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1872176</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-05-26 15:19:25 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #3)
&gt; Comment on attachment 459795 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=459795&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:155
&gt; &gt; +            [nsCookieStorage() setCookie:newCookie];
&gt; 
&gt; Isn&apos;t this doing a cookie storage operation on the main thread?
I think setting a cookie doesn&apos;t always immediately go to disk on the same thread.  This patch only addresses cookie deleting on the main thread.

&gt; &gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:585
&gt; &gt; +        [nsCookieStorage() _saveCookies:makeBlockPtr([completionHandler = WTFMove(completionHandler)] () mutable {
&gt; 
&gt; Isn&apos;t this doing cookie operations on the main thread?
Ditto.

&gt; &gt; Source/WebKit/NetworkProcess/Cookies/WebCookieManager.h:76
&gt; &gt; +    void deleteAllCookies(PAL::SessionID, CompletionHandler&lt;void()&gt;&amp;&amp;);
&gt; 
&gt; I wish you&apos;d use `CompletionHandler&lt;void()&gt;&amp;&amp;` consistently in your patch.
&gt; However, you&apos;re using `CompletionHandler&lt;void()&gt;` as parameter sometimes.
I&apos;m trying to move to without &amp;&amp; but there were places where it looked out of place.  The two are functionally equivalent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1872178</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-05-26 15:22:25 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #4)
&gt; (In reply to Chris Dumez from comment #3)
&gt; &gt; Comment on attachment 459795 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=459795&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:155
&gt; &gt; &gt; +            [nsCookieStorage() setCookie:newCookie];
&gt; &gt; 
&gt; &gt; Isn&apos;t this doing a cookie storage operation on the main thread?
&gt; I think setting a cookie doesn&apos;t always immediately go to disk on the same
&gt; thread.  This patch only addresses cookie deleting on the main thread.
&gt; 
&gt; &gt; &gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:585
&gt; &gt; &gt; +        [nsCookieStorage() _saveCookies:makeBlockPtr([completionHandler = WTFMove(completionHandler)] () mutable {
&gt; &gt; 
&gt; &gt; Isn&apos;t this doing cookie operations on the main thread?
&gt; Ditto.
&gt; 
&gt; &gt; &gt; Source/WebKit/NetworkProcess/Cookies/WebCookieManager.h:76
&gt; &gt; &gt; +    void deleteAllCookies(PAL::SessionID, CompletionHandler&lt;void()&gt;&amp;&amp;);
&gt; &gt; 
&gt; &gt; I wish you&apos;d use `CompletionHandler&lt;void()&gt;&amp;&amp;` consistently in your patch.
&gt; &gt; However, you&apos;re using `CompletionHandler&lt;void()&gt;` as parameter sometimes.
&gt; I&apos;m trying to move to without &amp;&amp; but there were places where it looked out
&gt; of place.  The two are functionally equivalent.

CompletionHandler&lt;void()&gt;&amp;&amp; communicates to the caller that we want a r-value and they need to WTFMove(). CompletionHandler&lt;void()&gt; doesn&apos;t communicate that. It will give a build time error though if they fail to WTFMove() (only because CompletionHandler is not copyable).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1872186</commentid>
    <comment_count>6</comment_count>
      <attachid>459795</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-05-26 15:41:47 -0700</bug_when>
    <thetext>Comment on attachment 459795
Patch

GitHub PR has more &amp;&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1872388</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-05-27 12:21:15 -0700</bug_when>
    <thetext>Committed r294947 (251055@main): &lt;https://commits.webkit.org/251055@main&gt;

Reviewed commits have been landed. Closing PR #1072 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1872389</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-05-27 12:22:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/94048443&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459795</attachid>
            <date>2022-05-26 15:07:03 -0700</date>
            <delta_ts>2022-05-26 15:41:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240981-20220526150702.patch</filename>
            <type>text/plain</type>
            <size>44843</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">RnJvbSBlZmE0MmEyMjMwZjI4ZGU5Zjg1YzdiMjk4N2QzMjU3YWVkY2Q5MzVlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4IENocmlzdGVuc2VuIDxhY2hyaXN0ZW5zZW5AYXBwbGUu
Y29tPgpEYXRlOiBUaHUsIDI2IE1heSAyMDIyIDE0OjU3OjA5IC0wNzAwClN1YmplY3Q6IFtQQVRD
SF0gTW92ZSBkaXNrIG9wZXJhdGlvbnMgd2hlbiBkZWxldGluZyBjb29raWVzIG9mZiBmcm9tIHRo
ZSBtYWluCiB0aHJlYWQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0
MDk4MSA8cmRhcjovLzkyNDE1MjQwPgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpUaGlz
IHNob3VsZCByZWR1Y2UgaGFuZ3MgYW5kIGluY3JlYXNlIHJlc3BvbnNpdmVuZXNzLgoKKiBTb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaDoKKiBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CiogU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nvb2tpZUphci5jcHA6CiogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUph
ci5oOgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmg6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25Db2NvYS5tbToKKiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tp
ZXMvV2ViQ29va2llTWFuYWdlci5jcHA6CiogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
b29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaDoKKiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbjoKKiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6Ciog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbjoKKiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3Jl
LmNwcDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uLmNwcDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJv
eHkuY3BwOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5o
OgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkuY3BwOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tp
ZUNhY2hlLmNwcDoKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVK
YXIuY3BwOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5o
OgoqIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06Ci0t
LQogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmggIHwgICAxIC0K
IC4uLi9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgICB8ICAgMiArLQog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAgICAgICAgICAgIHwgICA4ICstCiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmggICAgICAgICAgICAgfCAgIDIgKy0KIC4u
Li9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oICB8ICAxNyArLS0KIC4u
Li9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSAgICAgICB8IDEzNyArKysrKysr
KysrKy0tLS0tLS0KIC4uLi9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwICAgICAgICAgICAg
ICB8ICAyMiArKy0KIC4uLi9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIu
aCB8ICAgNCArLQogLi4uL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbiAgICAg
IHwgICA0ICstCiAuLi4vTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwICAgICAgICAg
fCAgIDYgKy0KIC4uLi9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oICAgICAgICAgICB8
ICAgMiArLQogLi4uL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIHwg
ICAyICstCiAuLi4vV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCAgfCAg
MjggKystLQogLi4uL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcCAgICAgIHwg
ICA0ICstCiAuLi4vQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgICAgICAgfCAg
IDIgKy0KIC4uLi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcCAgICAgICB8ICAx
MiArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmggIHwgICA0
ICstCiAuLi4vQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCAgfCAgIDYg
Ky0KIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuY3BwICAgICB8ICAgNCAr
LQogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwICAgICAgIHwgICA0ICst
CiAuLi4vV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaCAgfCAgIDIgKy0K
IC4uLi9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbSAgICAgICAgICAgICB8ICAgMiArLQog
MjIgZmlsZXMgY2hhbmdlZCwgMTU0IGluc2VydGlvbnMoKyksIDEyMSBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCmluZGV4IDg5ODQ2
MGNlYTFkOS4uNWI5ZGQ1NTIwMzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9jZi9DRk5ldHdvcmtTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9j
Zi9DRk5ldHdvcmtTUEkuaApAQCAtMTYyLDcgKzE2Miw2IEBAIHR5cGVkZWYgZW51bSB7CiAtICh2
b2lkKXJlbW92ZUNvb2tpZXNTaW5jZURhdGU6KE5TRGF0ZSAqKWRhdGU7CiAtIChpZClfaW5pdFdp
dGhDRkhUVFBDb29raWVTdG9yYWdlOihDRkhUVFBDb29raWVTdG9yYWdlUmVmKWNmU3RvcmFnZTsK
IC0gKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYpX2Nvb2tpZVN0b3JhZ2U7Ci0tICh2b2lkKV9zYXZl
Q29va2llczsKIC0gKHZvaWQpX3NhdmVDb29raWVzOihkaXNwYXRjaF9ibG9ja190KSBjb21wbGV0
aW9uSGFuZGxlcjsKICNpZiBIQVZFKENGTkVUV09SS19PVkVSUklERV9TRVNTSU9OX0NPT0tJRV9B
Q0NFUFRfUE9MSUNZKQogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWR3cml0ZSkgQk9PTCBfb3Zl
cnJpZGVTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDI1ODQyOWU5
N2IxMi4uNzhjMzQwZDI2ZTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC02NzQsNyArNjc0LDcgQEAgUHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yUGFnZUFnZW50OjpkZWxldGVDb29r
aWUoY29uc3QgU3RyaW5nJiBjb28KICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX2luc3BlY3Rl
ZFBhZ2UubWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VO
ZXh0KCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCkp
IHsKICAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKSkKLSAgICAg
ICAgICAgICAgICBwYWdlLT5jb29raWVKYXIoKS5kZWxldGVDb29raWUoKmRvY3VtZW50LCBwYXJz
ZWRVUkwsIGNvb2tpZU5hbWUpOworICAgICAgICAgICAgICAgIHBhZ2UtPmNvb2tpZUphcigpLmRl
bGV0ZUNvb2tpZSgqZG9jdW1lbnQsIHBhcnNlZFVSTCwgY29va2llTmFtZSwgW10geyB9KTsKICAg
ICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tp
ZUphci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAppbmRleCA1Mjkx
OTE5OGNlNDIuLmMzMjZmM2MyZTRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nvb2tpZUphci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAK
QEAgLTE4NiwxMiArMTg2LDE0IEBAIHZvaWQgQ29va2llSmFyOjpzZXRSYXdDb29raWUoY29uc3Qg
RG9jdW1lbnQmLCBjb25zdCBDb29raWUmIGNvb2tpZSkKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKLXZvaWQgQ29va2llSmFyOjpkZWxldGVDb29raWUoY29uc3QgRG9jdW1lbnQm
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBDb29raWVK
YXI6OmRlbGV0ZUNvb2tpZShjb25zdCBEb2N1bWVudCYsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIGNvb2tpZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXItPnN0b3JhZ2VTZXNzaW9uKCkpCi0gICAgICAgIHNlc3Npb24tPmRlbGV0ZUNvb2tpZSh1cmws
IGNvb2tpZU5hbWUpOwotICAgIGVsc2UKKyAgICAgICAgc2Vzc2lvbi0+ZGVsZXRlQ29va2llKHVy
bCwgY29va2llTmFtZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGVsc2Ugewog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKKyAgICB9CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29r
aWVKYXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAppbmRleCA5ODI2OTFk
ZDJkZmUuLjFlYWE3OTgxNzI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
b2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaApAQCAtNjAs
NyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzdGQ6OnBhaXI8U3RyaW5nLCBTZWN1cmVD
b29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVk
ZVNlY3VyZUNvb2tpZXMpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNv
bnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0UmF3Q29va2llKGNvbnN0IERvY3VtZW50JiwgY29uc3QgQ29va2llJik7
Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBEb2N1bWVudCYsIGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBEb2N1bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPik7CiAKICAgICAvLyBDb29raWUgQ2FjaGUuCiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFyQ2FjaGUoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCmluZGV4IGRlY2Ex
NzY1MjNiOC4uYTQ3ZjIzMjFhNzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTE1OSwxNyArMTU5LDE2
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZShjb25zdCBDb29r
aWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXMoY29uc3QgVmVjdG9yPENv
b2tpZT4mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNob3VsZEFza0lUUCwgY29u
c3QgU3RyaW5nJiwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0Owot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IENvb2tpZSYpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQWxsQ29va2llcygpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2Fs
bFRpbWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1l
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29va2llSG9zdE5hbWVzKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGNvb2tpZUhvc3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llcyk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkZWxldGVDb29raWUoY29uc3QgQ29va2llJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVDb29raWUoY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPikgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVBbGxDb29raWVzKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVk
U2luY2UoV2FsbFRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4pOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgY29va2llSG9zdE5hbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+KTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPik7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZ2V0
QWxsQ29va2llcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGdldENvb2tp
ZXMoY29uc3QgVVJMJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYXNDb29raWVzKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNr
SVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgVmVjdG9yPENvb2tpZT4m
KSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoQ29va2llU3RvcmUoKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3Ry
aW5nPiYgaG9zdG5hbWVzKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBi
b29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBzdGQ6Om9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lU
UCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3Qg
VVJMJiwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCwgU2hvdWxkUmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0OwpAQCAtMjM3LDcgKzIzNiw3IEBAIHBy
aXZhdGU6CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IGh0dHBDb29raWVzRm9yVVJMKENGSFRUUENv
b2tpZVN0b3JhZ2VSZWYsIE5TVVJMICpmaXJzdFBhcnR5LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNh
bWVTaXRlSW5mbz4mLCBOU1VSTCAqKSBjb25zdDsKICAgICBSZXRhaW5QdHI8TlNBcnJheT4gY29v
a2llc0ZvclVSTChjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgc3RkOjpvcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4sIFNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcpIGNvbnN0OwogICAgIHZvaWQgc2V0SFRUUENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29v
a2llU3RvcmFnZVJlZiwgTlNBcnJheSAqY29va2llcywgTlNVUkwgKiwgTlNVUkwgKm1haW5Eb2N1
bWVudFVSTCwgY29uc3QgU2FtZVNpdGVJbmZvJikgY29uc3Q7Ci0gICAgdm9pZCBkZWxldGVIVFRQ
Q29va2llKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIE5TSFRUUENvb2tpZSAqKSBjb25zdDsKKyAg
ICB2b2lkIGRlbGV0ZUhUVFBDb29raWUoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgTlNIVFRQQ29v
a2llICosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4pIGNvbnN0OwogI2VuZGlmCiAKICNpZiBI
QVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQpAQCAtMjUwLDcgKzI0OSw3IEBAIHByaXZh
dGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmV0
YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IG1fcGxhdGZvcm1TZXNzaW9uOwogICAgIFJl
dGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBtX3BsYXRmb3JtQ29va2llU3RvcmFnZTsK
LSAgICBib29sIG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlIHsgZmFsc2UgfTsKKyAgICBjb25zdCBi
b29sIG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlIHsgZmFsc2UgfTsKICNlbGlmIFVTRShTT1VQKQog
ICAgIHN0YXRpYyB2b2lkIGNvb2tpZXNEaWRDaGFuZ2UoTmV0d29ya1N0b3JhZ2VTZXNzaW9uKik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IDQ5OTkzYmU3Y2Nh
YS4uNmUwMzBkNmVjMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0K
QEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAj
aW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRy
Lmg+CisjaW1wb3J0IDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAjaW1wb3J0IDx3dGYvUHJv
Y2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL2NvY29h
L1ZlY3RvckNvY29hLmg+CkBAIC03NSwxMCArNzYsMTggQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVS
TCYKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKLXZvaWQgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWxldGVDb29raWUoY29uc3QgQ29va2llJiBjb29raWUpCit2b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llKGNvbnN0IENvb2tpZSYgY29va2llLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCho
YXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMp
IHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKLSAgICBbbnNDb29raWVTdG9yYWdlKCkgZGVs
ZXRlQ29va2llOihOU0hUVFBDb29raWUgKiljb29raWVdOworCisgICAgYXV0byB3b3JrID0gW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNvb2tpZVN0b3Jh
Z2UgPSBSZXRhaW5QdHIgeyBuc0Nvb2tpZVN0b3JhZ2UoKSB9LCBjb29raWUgPSBSZXRhaW5QdHIg
eyAoTlNIVFRQQ29va2llICopY29va2llIH1dICgpIG11dGFibGUgeworICAgICAgICBbY29va2ll
U3RvcmFnZSBkZWxldGVDb29raWU6Y29va2llLmdldCgpXTsKKyAgICAgICAgZW5zdXJlT25NYWlu
VGhyZWFkKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9OworCisgICAgaWYgKG1f
aXNJbk1lbW9yeUNvb2tpZVN0b3JlKQorICAgICAgICByZXR1cm4gd29yaygpOworICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJ
VFlfREVGQVVMVCwgMCksIG1ha2VCbG9ja1B0cihXVEZNb3ZlKHdvcmspKS5nZXQoKSk7CiB9CiAK
IHN0YXRpYyBWZWN0b3I8Q29va2llPiBuc0Nvb2tpZXNUb0Nvb2tpZVZlY3RvcihOU0FycmF5PE5T
SFRUUENvb2tpZSAqPiAqbnNDb29raWVzLCBjb25zdCBGdW5jdGlvbjxib29sKE5TSFRUUENvb2tp
ZSAqKT4mIGZpbHRlciA9IHsgfSkKQEAgLTEzNywyMSArMTQ2LDIxIEBAIHZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzZXRBbGxDb29raWVzVG9TYW1lU2l0ZVN0cmljdChjb25zdCBSZWdpc3Ry
YWJsZURvbWFpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBhdXRvIGFnZ3JlZ2F0b3IgPSBDYWxs
YmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMg
fSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbmV3Q29v
a2llc1RvQWRkID0gV1RGTW92ZShuZXdDb29raWVzVG9BZGQpXSAoKSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigp
OworCisgICAgICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICBmb3IgKE5T
SFRUUENvb2tpZSAqbmV3Q29va2llIGluIG5ld0Nvb2tpZXNUb0FkZC5nZXQoKSkKKyAgICAgICAg
ICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBzZXRDb29raWU6bmV3Q29va2llXTsKKyAgICAgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
IH0pOworCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgZm9yIChOU0hUVFBD
b29raWUgKm9sZENvb2tpZSBpbiBvbGRDb29raWVzVG9EZWxldGUuZ2V0KCkpCi0gICAgICAgIGRl
bGV0ZUhUVFBDb29raWUoY29va2llU3RvcmFnZSgpLmdldCgpLCBvbGRDb29raWUpOwotCi0gICAg
Zm9yIChOU0hUVFBDb29raWUgKm5ld0Nvb2tpZSBpbiBuZXdDb29raWVzVG9BZGQuZ2V0KCkpCi0g
ICAgICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBzZXRDb29raWU6bmV3Q29va2llXTsKKyAgICAgICAg
ZGVsZXRlSFRUUENvb2tpZShjb29raWVTdG9yYWdlKCkuZ2V0KCksIG9sZENvb2tpZSwgW2FnZ3Jl
Z2F0b3JdIHsgfSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKLX0KLQotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZsdXNoQ29v
a2llU3RvcmUoKQotewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2
aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKLSAgICBbbnNDb29raWVTdG9yYWdlKCkgX3Nh
dmVDb29raWVzXTsKIH0KIAogTlNIVFRQQ29va2llU3RvcmFnZSAqTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpuc0Nvb2tpZVN0b3JhZ2UoKSBjb25zdApAQCAtMjM0LDE2ICsyNDMsMjIgQEAgUmV0YWlu
UHRyPE5TQXJyYXk+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aHR0cENvb2tpZXMoQ0ZIVFRQQ29v
a2llU3RvcmFnZVJlZiBjb28KICAgICByZXR1cm4gW05TSFRUUENvb2tpZSBfY2YybnNDb29raWVz
OmNvb2tpZXMuZ2V0KCldOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRl
SFRUUENvb2tpZShDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UsIE5TSFRUUENv
b2tpZSAqY29va2llKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUhU
VFBDb29raWUoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU0hUVFBDb29r
aWUgKmNvb2tpZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcikg
Y29uc3QKIHsKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdl
OjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7Ci0gICAg
aWYgKCFjb29raWVTdG9yYWdlKSB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2lzSW5NZW1v
cnlDb29raWVTdG9yZSk7Ci0gICAgICAgIFtbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQ
Q29va2llU3RvcmFnZV0gZGVsZXRlQ29va2llOmNvb2tpZV07Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CiAgICAgCi0gICAgQ0ZIVFRQQ29va2llU3RvcmFnZURlbGV0ZUNvb2tpZShjb29raWVTdG9y
YWdlLCBbY29va2llIF9HZXRJbnRlcm5hbENGSFRUUENvb2tpZV0pOworICAgIGF1dG8gd29yayA9
IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjb29raWVT
dG9yYWdlID0gUmV0YWluUHRyIHsgY29va2llU3RvcmFnZSB9LCBjb29raWUgPSBSZXRhaW5QdHIg
eyBjb29raWUgfSwgaXNJbk1lbW9yeUNvb2tpZVN0b3JlID0gbV9pc0luTWVtb3J5Q29va2llU3Rv
cmVdICgpIG11dGFibGUgeworICAgICAgICBpZiAoIWNvb2tpZVN0b3JhZ2UpIHsKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCFpc0luTWVtb3J5Q29va2llU3RvcmUpOworICAgICAgICAgICAg
W1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXSBkZWxldGVDb29r
aWU6Y29va2llLmdldCgpXTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBDRkhUVFBDb29r
aWVTdG9yYWdlRGVsZXRlQ29va2llKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIFtjb29raWUgX0dldElu
dGVybmFsQ0ZIVFRQQ29va2llXSk7CisgICAgICAgIGVuc3VyZU9uTWFpblRocmVhZChXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfTsKKworICAgIGlmIChtX2lzSW5NZW1vcnlDb29r
aWVTdG9yZSkKKyAgICAgICAgcmV0dXJuIHdvcmsoKTsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDAp
LCBtYWtlQmxvY2tQdHIoV1RGTW92ZSh3b3JrKSkuZ2V0KCkpOwogfQogCiAjaWYgIVBMQVRGT1JN
KFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQpAQCAtMzgxLDI0ICszOTYsNiBAQCBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JTZXNz
aW9uKGNvbnN0IFVSTCYgZmlycwogICAgIHJldHVybiB7IFN0cmluZygpLCBmYWxzZSB9OwogfQog
Ci1zdGF0aWMgdm9pZCBkZWxldGVBbGxIVFRQQ29va2llcyhDRkhUVFBDb29raWVTdG9yYWdlUmVm
IGNvb2tpZVN0b3JhZ2UpCi17Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vz
c1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwotCi0gICAgaWYgKCFjb29raWVTdG9y
YWdlKSB7Ci0gICAgICAgIE5TSFRUUENvb2tpZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UgPSBbTlNI
VFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV07Ci0gICAgICAgIE5TQXJy
YXkgKmNvb2tpZXMgPSBbY29va2llU3RvcmFnZSBjb29raWVzXTsKLSAgICAgICAgaWYgKCFjb29r
aWVzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGZvciAoTlNIVFRQQ29va2llICpj
b29raWUgaW4gY29va2llcykKLSAgICAgICAgICAgIFtjb29raWVTdG9yYWdlIGRlbGV0ZUNvb2tp
ZTpjb29raWVdOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ0ZIVFRQQ29va2llU3Rv
cmFnZURlbGV0ZUFsbENvb2tpZXMoY29va2llU3RvcmFnZSk7Ci19Ci0KIHN0ZDo6cGFpcjxTdHJp
bmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwm
IHVybCwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBj
b25zdAogewogICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBzYW1lU2l0
ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBEb05vdEluY2x1ZGVIVFRQT25seSwgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCwgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcpOwpAQCAtNTE0LDEwICs1MTEsMTIgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0
ZUNvb2tpZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKSBjb25zdAor
dm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZShjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IGNvbXBs
ZXRpb25IYW5kbGVyKSBjb25zdAogewogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFBy
b2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKIAorICAgIGF1dG8gYWdncmVn
YXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gdGhpcy0+Y29va2ll
U3RvcmFnZSgpOwpAQCAtNTI5LDcgKzUyOCw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWxldGVDb29raWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtCiAg
ICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBOU0hU
VFBDb29raWUgKmNvb2tpZSA9IChOU0hUVFBDb29raWUgKilbY29va2llcyBvYmplY3RBdEluZGV4
OmldOwogICAgICAgICBpZiAoW1tjb29raWUgbmFtZV0gaXNFcXVhbFRvU3RyaW5nOmNvb2tpZU5h
bWVTdHJpbmddKQotICAgICAgICAgICAgZGVsZXRlSFRUUENvb2tpZShjb29raWVTdG9yYWdlLmdl
dCgpLCBjb29raWUpOworICAgICAgICAgICAgZGVsZXRlSFRUUENvb2tpZShjb29raWVTdG9yYWdl
LmdldCgpLCBjb29raWUsIFthZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0KIAogICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKQEAgLTU1MSwyMCArNTUwLDQzIEBAIHZvaWQgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhIYXNoU2V0PFN0cmluZz4mIGhvc3Ru
YW1lcykKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKLXZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpkZWxldGVBbGxDb29raWVzKCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpkZWxldGVBbGxDb29raWVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgZGVsZXRlQWxsSFRUUENvb2tpZXMoY29va2llU3RvcmFnZSgpLmdl
dCgpKTsKKyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpD
YW5BY2Nlc3NSYXdDb29raWVzKSk7CisKKyAgICBhdXRvIHdvcmsgPSBbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY29va2llU3RvcmFnZSA9IFJldGFpblB0
ciB7IGNvb2tpZVN0b3JhZ2UoKSB9XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFjb29raWVT
dG9yYWdlKSB7CisgICAgICAgICAgICBOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdl
ID0gW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdOworICAgICAg
ICAgICAgTlNBcnJheSAqY29va2llcyA9IFtjb29raWVTdG9yYWdlIGNvb2tpZXNdOworICAgICAg
ICAgICAgZm9yIChOU0hUVFBDb29raWUgKmNvb2tpZSBpbiBjb29raWVzKQorICAgICAgICAgICAg
ICAgIFtjb29raWVTdG9yYWdlIGRlbGV0ZUNvb2tpZTpjb29raWVdOworICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIENGSFRUUENvb2tpZVN0b3JhZ2VEZWxldGVBbGxDb29raWVzKGNvb2tpZVN0
b3JhZ2UuZ2V0KCkpOworICAgICAgICBlbnN1cmVPbk1haW5UaHJlYWQoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgIH07CisgICAgCisgICAgaWYgKG1faXNJbk1lbW9yeUNvb2tpZVN0
b3JlKQorICAgICAgICByZXR1cm4gd29yaygpOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIG1h
a2VCbG9ja1B0cihXVEZNb3ZlKHdvcmspKS5nZXQoKSk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBob3N0bmFtZXMpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llc0Zv
ckhvc3RuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGRlbGV0ZUNvb2tpZXNGb3JI
b3N0bmFtZXMoaG9zdG5hbWVzLCBJbmNsdWRlSHR0cE9ubHlDb29raWVzOjpZZXMpOworICAgIGRl
bGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoaG9zdG5hbWVzLCBJbmNsdWRlSHR0cE9ubHlDb29raWVz
OjpZZXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGhvc3RuYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llcyBpbmNsdWRlSHR0cE9ubHlDb29r
aWVzKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFt
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3RuYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2ll
cyBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQ
cml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3Jl
KTsKIAorICAgIGF1dG8gYWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFt0
aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFr
VGhpcykKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICBb
bnNDb29raWVTdG9yYWdlKCkgX3NhdmVDb29raWVzOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICB9KS5nZXQoKV07CisgICAgfSk7Cisg
ICAgCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKICAgICBSZXRhaW5QdHI8Q0ZI
VFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IHRoaXMtPmNvb2tpZVN0b3JhZ2Uo
KTsKQEAgLTU4NywyOCArNjA5LDMxIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxl
dGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0CiAgICAgICAg
ICAgICBjb250aW51ZTsKIAogICAgICAgICBmb3IgKGF1dG8mIGNvb2tpZSA6IGl0LT52YWx1ZSkK
LSAgICAgICAgICAgIGRlbGV0ZUhUVFBDb29raWUoY29va2llU3RvcmFnZS5nZXQoKSwgY29va2ll
LmdldCgpKTsKKyAgICAgICAgICAgIGRlbGV0ZUhUVFBDb29raWUoY29va2llU3RvcmFnZS5nZXQo
KSwgY29va2llLmdldCgpLCBbYWdncmVnYXRvcl0geyB9KTsKICAgICB9CiAKLSAgICBbbnNDb29r
aWVTdG9yYWdlKCkgX3NhdmVDb29raWVzXTsKLQogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUFsbENvb2tpZXNNb2Rp
ZmllZFNpbmNlKFdhbGxUaW1lIHRpbWVQb2ludCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXYWxsVGltZSB0aW1lUG9pbnQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGhh
c1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykp
OwogCisgICAgLy8gRklYTUU6IERvIHdlIHN0aWxsIG5lZWQgdGhpcyBjaGVjaz8gUHJvYmFibHkg
bm90LgogICAgIGlmICghW05TSFRUUENvb2tpZVN0b3JhZ2UgaW5zdGFuY2VzUmVzcG9uZFRvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHJlbW92ZUNvb2tpZXNTaW5jZURhdGU6KV0pCi0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAKICAgICBOU1RpbWVJbnRl
cnZhbCB0aW1lSW50ZXJ2YWwgPSB0aW1lUG9pbnQuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRz
KCk7Ci0gICAgTlNEYXRlICpkYXRlID0gW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNl
MTk3MDp0aW1lSW50ZXJ2YWxdOwotCi0gICAgYXV0byAqc3RvcmFnZSA9IG5zQ29va2llU3RvcmFn
ZSgpOworICAgIGF1dG8gd29yayA9IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBzdG9yYWdlID0gUmV0YWluUHRyIHsgbnNDb29raWVTdG9yYWdlKCkgfSwg
ZGF0ZSA9IFJldGFpblB0ciB7IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6
dGltZUludGVydmFsXSB9XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgW3N0b3JhZ2UgcmVtb3ZlQ29v
a2llc1NpbmNlRGF0ZTpkYXRlLmdldCgpXTsKKyAgICAgICAgW3N0b3JhZ2UgX3NhdmVDb29raWVz
Om1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBlbnN1cmVPbk1haW5UaHJlYWQoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICB9KS5nZXQoKV07CisgICAgfTsKIAotICAg
IFtzdG9yYWdlIHJlbW92ZUNvb2tpZXNTaW5jZURhdGU6ZGF0ZV07Ci0gICAgW3N0b3JhZ2UgX3Nh
dmVDb29raWVzXTsKKyAgICBpZiAobV9pc0luTWVtb3J5Q29va2llU3RvcmUpCisgICAgICAgIHJl
dHVybiB3b3JrKCk7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1
ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgbWFrZUJsb2NrUHRyKFdURk1v
dmUod29yaykpLmdldCgpKTsKIH0KIAogVmVjdG9yPENvb2tpZT4gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpkb21Db29raWVzRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5j
cHAKaW5kZXggM2I3ZmQwNGZmNTAzLi41NzlhZmE5NDM4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAK
QEAgLTYzLDMwICs2MywzNiBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhvc3RuYW1lc1dp
dGhDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldAogICAgIGNvbXBsZXRp
b25IYW5kbGVyKGNvcHlUb1ZlY3Rvcihob3N0bmFtZXMpKTsKIH0KIAotdm9pZCBXZWJDb29raWVN
YW5hZ2VyOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3RuYW1lcykKK3ZvaWQgV2ViQ29va2llTWFuYWdl
cjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBt
X3Byb2Nlc3Muc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgc3RvcmFnZVNlc3Np
b24tPmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoaG9zdG5hbWVzKTsKKyAgICAgICAgc3RvcmFn
ZVNlc3Npb24tPmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoaG9zdG5hbWVzLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisgICAgZWxzZQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fcHJv
Y2Vzcy5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+
ZGVsZXRlQWxsQ29va2llcygpOworICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+ZGVsZXRlQWxsQ29v
a2llcyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgZWxzZQorICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tp
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8q
IHN0b3JhZ2VTZXNzaW9uID0gbV9wcm9jZXNzLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCi0g
ICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWUoY29va2llKTsKLSAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+ZGVsZXRlQ29va2llKGNvb2tp
ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29r
aWVzTW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdhbGxUaW1lIHRpbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBp
ZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBtX3Byb2Nlc3Muc3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKLSAgICAgICAgc3RvcmFnZVNlc3Npb24tPmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNp
bmNlKHRpbWUpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHN0b3JhZ2VTZXNz
aW9uLT5kZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSh0aW1lLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgZWxzZQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQog
CiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKaW5kZXggMzVjZThhOWVjZmMyLi4x
OTQyOGM3NzE4YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaApAQCAtNzIsOCArNzIsOCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwogCiAgICAgdm9pZCBkZWxldGVD
b29raWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwotICAgIHZvaWQgZGVsZXRlQWxs
Q29va2llcyhQQUw6OlNlc3Npb25JRCk7CisgICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5h
bWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBkZWxldGVBbGxDb29raWVzKFBBTDo6U2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlQWxsQ29va2ll
c01vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQsIFdhbGxUaW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBzZXRDb29raWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29r
aWVNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggNDZkOTcwOGJkYjhlLi4yMDgx
MTU0ZjkwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2ll
cy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNSw4ICsy
NSw4IEBACiAgCiBtZXNzYWdlcyAtPiBXZWJDb29raWVNYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewog
ICAgIHZvaWQgR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KSAtPiAoVmVjdG9yPFN0cmluZz4gaG9zdG5hbWVzKQotICAgIHZvaWQgRGVsZXRlQ29va2llc0Zv
ckhvc3RuYW1lcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxTdHJpbmc+IGhvc3Ru
YW1lcykKLSAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KQorICAgIHZvaWQgRGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lcykgLT4gKCkKKyAgICB2b2lkIERlbGV0ZUFs
bENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKQogCiAgICAgdm9pZCBTZXRD
b29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBj
b29raWUpIC0+ICgpCiAgICAgdm9pZCBTZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywgVVJMIHVybCwgVVJMIG1haW5Eb2N1
bWVudFVSTCkgLT4gKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNjFhNjA5YjZm
OTM5Li42NzgwYjc1NDllNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC04Mzcs
MTIgKzgzNywxMiBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRSYXdD
b29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiBjb29raWUpCiAgICAgbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLT5zZXRDb29raWUoY29va2llKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNv
b2tpZU5hbWUpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29r
aWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbigpOwogICAgIGlmICghbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uKQotICAgICAgICByZXR1cm47Ci0gICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5kZWxl
dGVDb29raWUodXJsLCBjb29raWVOYW1lKTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKCk7CisgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWUodXJsLCBjb29r
aWVOYW1lLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRvbUNvb2tpZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9z
dCwgYm9vbCBzdWJzY3JpYmVUb0Nvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAwMmZiZWQ3NjY1MjkuLjkyMTc2
N2VmZjljYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjQ0LDcgKzI0NCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBXZWJD
b3JlOjpTaG91bGRBc2tJVFAsIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wg
c2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7CiAgICAgdm9pZCBnZXRSYXdDb29raWVzKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
Jiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2hvdWxkQXNrSVRQLCBXZWJDb3Jl
OjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4mJik7CiAgICAgdm9pZCBzZXRSYXdDb29r
aWUoY29uc3QgV2ViQ29yZTo6Q29va2llJik7Ci0gICAgdm9pZCBkZWxldGVDb29raWUoY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKKyAgICB2b2lkIGRlbGV0ZUNvb2tpZShj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4pOwogCiAgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFBhdGgsIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKICAgICB2b2lkIHJl
Z2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KaW5kZXggYTI2MjllNGVkYjIxLi43NzU5NzYzMmEwZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNDIsNyArNDIsNyBAQCBtZXNz
YWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAg
ICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBX
ZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRB
c2tJVFAgc2hvdWxkQXNrSVRQLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIC0+
IChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNo
cm9ub3VzCiAgICAgR2V0UmF3Q29va2llcyhVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxk
QXNrSVRQLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIC0+IChWZWN0b3I8V2Vi
Q29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cwogICAgIFNldFJhd0Nvb2tpZShzdHJ1
Y3QgV2ViQ29yZTo6Q29va2llIGNvb2tpZSkKLSAgICBEZWxldGVDb29raWUoVVJMIHVybCwgU3Ry
aW5nIGNvb2tpZU5hbWUpCisgICAgRGVsZXRlQ29va2llKFVSTCB1cmwsIFN0cmluZyBjb29raWVO
YW1lKSAtPiAoKQogICAgIERvbUNvb2tpZXNGb3JIb3N0KFN0cmluZyBob3N0LCBib29sIHN1YnNj
cmliZVRvQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucykgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+IGNvb2tpZXMpIFN5bmNocm9ub3VzCiAjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVS
X0FQSSkKICAgICBVbnN1YnNjcmliZUZyb21Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zKEhhc2hT
ZXQ8U3RyaW5nPiBob3N0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKaW5kZXggYjAzODY5N2EyMjhhLi43NWY1ZmU5YTA5NDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xNTAx
LDYgKzE1MDEsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXQKIAogdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBXYWxsVGltZSBtb2RpZmllZFNp
bmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Cisg
ICAgYXV0byBjbGVhclRhc2tzSGFuZGxlciA9IFdURjo6Q2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVh
dGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIFJFTEVBU0VfTE9H
KFN0b3JhZ2UsICJOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEgZmluaXNoZWQgZGVs
ZXRpbmcgbW9kaWZpZWQgZGF0YSIpOworICAgIH0pOworCiAgICAgUkVMRUFTRV9MT0coU3RvcmFn
ZSwgIk5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSBzdGFydGVkIHRvIGRlbGV0ZSBk
YXRhIG1vZGlmaWVkIHNpbmNlICVmIGZvciBzZXNzaW9uICUiIFBSSXU2NCwgbW9kaWZpZWRTaW5j
ZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCksIHNlc3Npb25JRC50b1VJbnQ2NCgpKTsKICAg
ICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKIApAQCAtMTUxMSw3
ICsxNTE2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2kKIAogICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q29va2llcykpIHsKICAgICAgICAgaWYg
KGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkp
Ci0gICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmRlbGV0ZUFsbENvb2tpZXNNb2Rp
ZmllZFNpbmNlKG1vZGlmaWVkU2luY2UpOworICAgICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNz
aW9uLT5kZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShtb2RpZmllZFNpbmNlLCBbY2xlYXJU
YXNrc0hhbmRsZXJdIHsgfSk7CiAgICAgfQogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykpIHsKQEAgLTE1MjAsMTEgKzE1MjUs
NiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaQogICAgICAgICBXZWJDb3JlOjpDcmVkZW50aWFs
U3RvcmFnZTo6Y2xlYXJTZXNzaW9uQ3JlZGVudGlhbHMoKTsKICAgICB9CiAKLSAgICBhdXRvIGNs
ZWFyVGFza3NIYW5kbGVyID0gV1RGOjpDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgUkVMRUFTRV9MT0coU3RvcmFnZSwg
Ik5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSBmaW5pc2hlZCBkZWxldGluZyBtb2Rp
ZmllZCBkYXRhIik7Ci0gICAgfSk7Ci0KICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSAmJiBzZXNzaW9uKQogICAgICAgICBDYWNoZVN0
b3JhZ2U6OkVuZ2luZTo6Y2xlYXJBbGxDYWNoZXMoKnNlc3Npb24sIFtjbGVhclRhc2tzSGFuZGxl
cl0geyB9KTsKIApAQCAtMTU5NywxMiArMTU5NywxNyBAQCBzdGF0aWMgdm9pZCBjbGVhckRpc2tD
YWNoZUVudHJpZXMoTmV0d29ya0NhY2hlOjpDYWNoZSogY2FjaGUsIGNvbnN0IFZlY3RvcjxTZWN1
cgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRl
RGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2luRGF0YXMs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBIU1RTQ2FjaGVIb3N0TmFtZXMsIGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4m
IHJlZ2lzdHJhYmxlRG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogeworICAgIGF1dG8gY2xlYXJUYXNrc0hhbmRsZXIgPSBXVEY6OkNhbGxiYWNr
QWdncmVnYXRvcjo6Y3JlYXRlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
ICAgICBSRUxFQVNFX0xPRyhTdG9yYWdlLCAiTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVE
YXRhRm9yT3JpZ2lucyBmaW5pc2hlZCBkZWxldGluZyBkYXRhIik7CisgICAgfSk7CisKICAgICBS
RUxFQVNFX0xPRyhTdG9yYWdlLCAiTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9y
T3JpZ2lucyBzdGFydGVkIHRvIGRlbGV0ZSBkYXRhIGZvciBzZXNzaW9uICUiIFBSSXU2NCwgc2Vz
c2lvbklELnRvVUludDY0KCkpOwogICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpOwogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURh
dGFUeXBlOjpDb29raWVzKSkgewogICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNz
aW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgICAgIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbi0+ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb29raWVIb3N0TmFtZXMpOwor
ICAgICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWVzRm9ySG9zdG5h
bWVzKGNvb2tpZUhvc3ROYW1lcywgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogICAgIH0KIAog
I2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKQEAgLTE2MTcsMTEgKzE2MjIsNiBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBPcHRpbwogICAgIH0KICNlbmRpZgogCi0gICAgYXV0byBjbGVhclRh
c2tzSGFuZGxlciA9IFdURjo6Q2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIFJFTEVBU0VfTE9HKFN0b3JhZ2UsICJOZXR3
b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zIGZpbmlzaGVkIGRlbGV0aW5n
IGRhdGEiKTsKLSAgICB9KTsKLQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzKSAmJiBzZXNzaW9uKSB7CiAg
ICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFzKQogICAgICAgICAgICAg
c2Vzc2lvbi0+Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZvclJlZ2lzdHJhYmxlRG9tYWlu
KFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChvcmlnaW5EYXRhLmhv
c3QpLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CkBAIC0xNzY4LDEzICsxNzY4LDEzIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3Ry
YWJsZURvbWFpbnMoUEFMOjpTZXNzCiAgICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24t
PmdldEhvc3RuYW1lc1dpdGhDb29raWVzKGhvc3ROYW1lc1dpdGhDb29raWVzKTsKIAogICAgICAg
ICAgICAgaG9zdG5hbWVzV2l0aENvb2tpZXNUb0RlbGV0ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxl
RG9tYWlucyhkb21haW5zLmRvbWFpbnNUb0RlbGV0ZUFsbENvb2tpZXNGb3IsIGhvc3ROYW1lc1dp
dGhDb29raWVzKTsKLSAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+ZGVsZXRlQ29v
a2llc0Zvckhvc3RuYW1lcyhob3N0bmFtZXNXaXRoQ29va2llc1RvRGVsZXRlLCBXZWJDb3JlOjpJ
bmNsdWRlSHR0cE9ubHlDb29raWVzOjpZZXMpOworICAgICAgICAgICAgbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGhvc3RuYW1lc1dpdGhDb29raWVzVG9E
ZWxldGUsIFdlYkNvcmU6OkluY2x1ZGVIdHRwT25seUNvb2tpZXM6OlllcywgW2NhbGxiYWNrQWdn
cmVnYXRvcl0geyB9KTsKIAogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBob3N0IDogaG9z
dG5hbWVzV2l0aENvb2tpZXNUb0RlbGV0ZSkKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3Jl
Z2F0b3ItPm1fZG9tYWlucy5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZy
b21Ib3N0KGhvc3QpKTsKIAogICAgICAgICAgICAgaG9zdG5hbWVzV2l0aENvb2tpZXNUb0RlbGV0
ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5zLmRvbWFpbnNUb0RlbGV0ZUFs
bEJ1dEh0dHBPbmx5Q29va2llc0ZvciwgaG9zdE5hbWVzV2l0aENvb2tpZXMpOwotICAgICAgICAg
ICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGhvc3Ru
YW1lc1dpdGhDb29raWVzVG9EZWxldGUsIFdlYkNvcmU6OkluY2x1ZGVIdHRwT25seUNvb2tpZXM6
Ok5vKTsKKyAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+ZGVsZXRlQ29va2llc0Zv
ckhvc3RuYW1lcyhob3N0bmFtZXNXaXRoQ29va2llc1RvRGVsZXRlLCBXZWJDb3JlOjpJbmNsdWRl
SHR0cE9ubHlDb29raWVzOjpObywgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIAogICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBob3N0IDogaG9zdG5hbWVzV2l0aENvb2tpZXNUb0RlbGV0
ZSkKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucy5hZGQoUmVn
aXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGhvc3QpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKaW5kZXgg
MzMxMWVlZGJiNDlkLi5lZDNlMWE2YjBiMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwCkBAIC0xMTksOSArMTE5LDcgQEAgdm9p
ZCBIVFRQQ29va2llU3RvcmU6OmRlbGV0ZUFsbENvb2tpZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW4KICAgICBpZiAoIW1fb3duaW5nRGF0YVN0b3JlKQogICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICBhdXRvJiBjb29raWVNYW5hZ2VyID0g
bV9vd25pbmdEYXRhU3RvcmUtPm5ldHdvcmtQcm9jZXNzKCkuY29va2llTWFuYWdlcigpOwotICAg
IGNvb2tpZU1hbmFnZXIuZGVsZXRlQWxsQ29va2llcyhtX293bmluZ0RhdGFTdG9yZS0+c2Vzc2lv
bklEKCkpOwotICAgIC8vIEZJWE1FOiBUaGUgQ29tcGxldGlvbkhhbmRsZXIgc2hvdWxkIGJlIHBh
c3NlZCB0byBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXMuCi0gICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBj
b29raWVNYW5hZ2VyLmRlbGV0ZUFsbENvb2tpZXMobV9vd25pbmdEYXRhU3RvcmUtPnNlc3Npb25J
RCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgSFRUUENvb2tpZVN0
b3JlOjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYkNvcmU6OkhUVFBDb29raWVBY2NlcHRQ
b2xpY3kgcG9saWN5LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDQwMWQwMTEzNDFkMC4uZGEwYmQwZmRmNWIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtMTQ4OSw3ICsxNDg5LDcgQEAgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVs
ZXRlQWxsQ29va2llcygKICAgICBTdHJpbmcgaG9zdCA9IGFjdGl2ZVVSTC5ob3N0KCkudG9TdHJp
bmcoKTsKIAogICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eSYgY29va2llTWFuYWdlciA9IHBhZ2Ut
PndlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLmNvb2tpZU1hbmFnZXIoKTsKLSAg
ICBjb29raWVNYW5hZ2VyLmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMocGFnZS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnNlc3Npb25JRCgpLCB7IGhvc3QsIGRvbWFpbkJ5QWRkaW5nRG90UHJlZml4SWZO
ZWVkZWQoaG9zdCkgfSk7CisgICAgY29va2llTWFuYWdlci5kZWxldGVDb29raWVzRm9ySG9zdG5h
bWVzKHBhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSwgeyBob3N0LCBkb21haW5C
eUFkZGluZ0RvdFByZWZpeElmTmVlZGVkKGhvc3QpIH0sIFtdIHsgfSk7CiAKICAgICByZXR1cm4g
eyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFu
YWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eS5jcHAKaW5kZXggNDJjNjZkMmIwZGNkLi4xNTdhZDFiODA4NWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcApAQCAtNjEsMTYg
KzYxLDIwIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29v
a2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvCiAgICAgICAgIGNhbGxiYWNrRnVuY3Rp
b24oeyB9KTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgaG9zdG5hbWVzKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgaG9zdG5hbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCi0gICAgICAgIG1fbmV0d29ya1Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUNvb2tpZXNGb3JIb3N0
bmFtZXMoc2Vzc2lvbklELCBob3N0bmFtZXMpLCAwKTsKKyAgICAgICAgbV9uZXR3b3JrUHJvY2Vz
cy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVD
b29raWVzRm9ySG9zdG5hbWVzKHNlc3Npb25JRCwgaG9zdG5hbWVzKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0K
IAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENv
b2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCi0gICAg
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRl
bGV0ZUFsbENvb2tpZXMoc2Vzc2lvbklEKSwgMCk7CisgICAgICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQWxs
Q29va2llcyhzZXNzaW9uSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgZWxz
ZQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6ZGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29v
a2llJiBjb29raWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaApp
bmRleCAzZGNmNTRhZDdjOGIuLjI3NmVmMDA1ZmNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKQEAgLTYwLDggKzYwLDggQEAgcHVibGlj
OgogCiAgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhQQUw6OlNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CiAgICAgdm9pZCBkZWxl
dGVDb29raWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVz
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwotICAgIHZvaWQgZGVsZXRl
QWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCk7CisgICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9z
dG5hbWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBkZWxldGVBbGxDb29raWVzKFBBTDo6U2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlQWxsQ29v
a2llc01vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQsIFdhbGxUaW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4IGU4NzIwOWVkODdjMS4u
YjYxNTU1MmMzOWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApAQCAtOTUz
LDkgKzk1Myw5IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZGVsZXRlQ29va2ll
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RkCiAgICAgfQogCiAgICAgYXV0byYg
ZG9jdW1lbnQgPSAqZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpOwotICAgIHBhZ2UtPmNv
cmVQYWdlKCktPmNvb2tpZUphcigpLmRlbGV0ZUNvb2tpZShkb2N1bWVudCwgZG9jdW1lbnQuY29v
a2llVVJMKCksIGNvb2tpZU5hbWUpOwotCi0gICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxs
b3B0KTsKKyAgICBwYWdlLT5jb3JlUGFnZSgpLT5jb29raWVKYXIoKS5kZWxldGVDb29raWUoZG9j
dW1lbnQsIGRvY3VtZW50LmNvb2tpZVVSTCgpLCBjb29raWVOYW1lLCBbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CisgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29va2llQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
Q29va2llQ2FjaGUuY3BwCmluZGV4IDBjMTdhNjMyMWM1Mi4uMGMxYzYzZWM3MTAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuY3Bw
CkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgV2ViQ29va2llQ2FjaGU6OmNvb2tpZXNEZWxldGVkKGNv
bnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGZvciAoYXV0byYgY29va2llIDogY29va2llcykKLSAgICAgICAgaW5NZW1vcnlT
dG9yYWdlU2Vzc2lvbigpLmRlbGV0ZUNvb2tpZShjb29raWUpOworICAgICAgICBpbk1lbW9yeVN0
b3JhZ2VTZXNzaW9uKCkuZGVsZXRlQ29va2llKGNvb2tpZSwgW10geyB9KTsKIH0KIAogdm9pZCBX
ZWJDb29raWVDYWNoZTo6YWxsQ29va2llc0RlbGV0ZWQoKQpAQCAtMTA1LDcgKzEwNSw3IEBAIHZv
aWQgV2ViQ29va2llQ2FjaGU6OmNsZWFyRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QpCiAgICAg
aWYgKHJlbW92ZWRIb3N0LmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbk1lbW9y
eVN0b3JhZ2VTZXNzaW9uKCkuZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhWZWN0b3I8U3RyaW5n
PiB7IHJlbW92ZWRIb3N0IH0pOworICAgIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKS5kZWxldGVD
b29raWVzRm9ySG9zdG5hbWVzKFZlY3RvcjxTdHJpbmc+IHsgcmVtb3ZlZEhvc3QgfSwgW10geyB9
KTsKICNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQogICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6VW5zdWJzY3Jp
YmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhIYXNoU2V0PFN0cmluZz4geyByZW1vdmVk
SG9zdCB9KSwgMCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJDb29raWVKYXIuY3BwCmluZGV4IDFjMDg1NzExNmMyNC4uNDZmYjEzYWNiOWE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5j
cHAKQEAgLTI1MSw5ICsyNTEsOSBAQCB2b2lkIFdlYkNvb2tpZUphcjo6c2V0UmF3Q29va2llKGNv
bnN0IFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQ29va2llJgogICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0
UmF3Q29va2llKGNvb2tpZSksIDApOwogfQogCi12b2lkIFdlYkNvb2tpZUphcjo6ZGVsZXRlQ29v
a2llKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgV2ViQ29va2llSmFyOjpkZWxldGVDb29raWUo
Y29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IGNvbXBsZXRpb25I
YW5kbGVyKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6RGVsZXRlQ29va2llKHVybCwgY29va2llTmFtZSksIDApOworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVDb29raWUodXJsLCBjb29raWVOYW1lKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKaW5kZXggYmM3ODUw
MmIxOGI5Li5lNmM3NGM1NWYyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkNvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkNvb2tpZUphci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBzdGQ6
OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29y
ZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZ2V0UmF3Q29v
a2llcyhjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+JikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRSYXdDb29raWUoY29uc3QgV2Vi
Q29yZTo6RG9jdW1lbnQmLCBjb25zdCBXZWJDb3JlOjpDb29raWUmKSBmaW5hbDsKLSAgICB2b2lk
IGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgY29va2llTmFtZSkgZmluYWw7CisgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3Qg
V2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4pIGZpbmFsOwogCiAgICAgdm9pZCBjb29raWVzQWRk
ZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwog
ICAgIHZvaWQgY29va2llc0RlbGV0ZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZXMubW0KaW5kZXggNzVhYThmMjczNzU0Li40NWYwMmM5OTc3NzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5t
bQpAQCAtMjkzMSw3ICsyOTMxLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4mIGNsYXNz
SUJDcmVhdG9ySUQoKQogCiArICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uCiB7Ci0g
ICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5kZWxl
dGVBbGxDb29raWVzKCk7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3Rv
cmFnZVNlc3Npb24oKS5kZWxldGVBbGxDb29raWVzKFtdIHsgfSk7CiB9CiAKIC0gKHZvaWQpX3Nl
dEJvb2xQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTooQk9PTCl2YWx1ZSBmb3JLZXk6KE5T
U3RyaW5nICopa2V5Ci0tIAoyLjMyLjAgKEFwcGxlIEdpdC0xMzIpCgo=
</data>
<flag name="review"
          id="488925"
          type_id="1"
          status="-"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="488928"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>