<?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>195516</bug_id>
          
          <creation_ts>2019-03-09 01:17:31 -0800</creation_ts>
          <short_desc>Optimizing loads when creating new pages</short_desc>
          <delta_ts>2019-03-11 17:58:03 -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="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1514350</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-03-09 01:17:31 -0800</bug_when>
    <thetext>Optimizing loads when creating new pages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514352</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-09 01:20:47 -0800</bug_when>
    <thetext>&lt;rdar://problem/48738086&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514353</commentid>
    <comment_count>2</comment_count>
      <attachid>364123</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-03-09 01:28:08 -0800</bug_when>
    <thetext>Created attachment 364123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514354</commentid>
    <comment_count>3</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-03-09 01:28:52 -0800</bug_when>
    <thetext>The internal counterpart is within: &lt;rdar://problem/46325687&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514355</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-09 01:29:32 -0800</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>1514529</commentid>
    <comment_count>5</comment_count>
      <attachid>364175</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-03-10 00:06:09 -0800</bug_when>
    <thetext>Created attachment 364175
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514532</commentid>
    <comment_count>6</comment_count>
      <attachid>364178</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-03-10 00:28:26 -0800</bug_when>
    <thetext>Created attachment 364178
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514542</commentid>
    <comment_count>7</comment_count>
      <attachid>364178</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-03-10 10:42:08 -0700</bug_when>
    <thetext>Comment on attachment 364178
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.h:2191
&gt; +#if HAVE(LOAD_OPTIMIZER)
&gt; +WEBPAGEPROXY_LOADOPTIMIZER_ADDITIONS_2
&gt; +#endif

How do these hooks work?

It&apos;s strange that we would have non-open source code tightly coupled to open source like this. It&apos;s one thing to depend on an internal library, or to provide APIs for use by internal code, but just #including secret code into WebKit internals like this seems... unusual.

What gets optimized?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514567</commentid>
    <comment_count>8</comment_count>
      <attachid>364178</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-03-10 13:00:54 -0700</bug_when>
    <thetext>Comment on attachment 364178
Patch

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

r+ so Jiewen can keep making progress

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.h:2191
&gt;&gt; +#endif
&gt; 
&gt; How do these hooks work?
&gt; 
&gt; It&apos;s strange that we would have non-open source code tightly coupled to open source like this. It&apos;s one thing to depend on an internal library, or to provide APIs for use by internal code, but just #including secret code into WebKit internals like this seems... unusual.
&gt; 
&gt; What gets optimized?

I understand your unease. But this has happened multiple times before before when an engineer at Apple started development on something that Apple wasn&apos;t ready to reveal. I think it’s OK for now; we can discuss it in more detail when someone from Apple upstreams everything. And it’s all inside an #if.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514666</commentid>
    <comment_count>9</comment_count>
      <attachid>364178</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-03-10 20:14:21 -0700</bug_when>
    <thetext>Comment on attachment 364178
Patch

Thanks Darin for r+ this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514675</commentid>
    <comment_count>10</comment_count>
      <attachid>364178</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-10 20:41:19 -0700</bug_when>
    <thetext>Comment on attachment 364178
Patch

Clearing flags on attachment: 364178

Committed r242697: &lt;https://trac.webkit.org/changeset/242697&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514676</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-10 20:41:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514788</commentid>
    <comment_count>12</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-03-11 08:55:12 -0700</bug_when>
    <thetext>Reverted r242697 for reason:

Broke internal builders.

Committed r242705: &lt;https://trac.webkit.org/changeset/242705&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514864</commentid>
    <comment_count>13</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-03-11 10:41:21 -0700</bug_when>
    <thetext>(In reply to Truitt Savell from comment #12)
&gt; Reverted r242697 for reason:
&gt; 
&gt; Broke internal builders.
&gt; 
&gt; Committed r242705: &lt;https://trac.webkit.org/changeset/242705&gt;

Thanks for the heads up. I forgot that I have to land the OpenSource and Internal changes together. Will hold the same patch after the Internal one is ready to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1515153</commentid>
    <comment_count>14</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-03-11 17:58:03 -0700</bug_when>
    <thetext>Committed r242760: &lt;https://trac.webkit.org/changeset/242760&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364123</attachid>
            <date>2019-03-09 01:28:08 -0800</date>
            <delta_ts>2019-03-10 00:06:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195516-20190309012807.patch</filename>
            <type>text/plain</type>
            <size>23092</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJkNDliOWMwM2UzOGI0YWFm
ZmEyNTVhMTE5NDJjZTM1ZTc1YmI0ZjYuLmFlN2RjMTlkZGQ0ZDczODZjOTNjN2E0MzhiMjdiZDBi
OTZmYjMxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTktMDMtMDkgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6aW5nIGxvYWRzIHdo
ZW4gY3JlYXRpbmcgbmV3IHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTU1MTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4NzM4MDg2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcyBob29rcyBpbiBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UgdG8gb3B0aW1pemUg
bG9hZHMsIGFuZCBtb3ZlcyB0aGUgY3JlYXRpb25QYXJhbWV0ZXJzCisgICAgICAgIG9mIEFQSTo6
TmF2aWdhdGlvbkFjdGlvbiBmcm9tIFVJIGNsaWVudHMgdG8gV2ViUGFnZVByb3h5OjpjcmVhdGVO
ZXdQYWdlLiBBbHNvLCB3ZSBub3cgcGFzcyB0aGUgd2hvbGUKKyAgICAgICAgQVBJOjpOYXZpZ2F0
aW9uQWN0aW9uIHRvIHRoZSBsb2FkIG9wdGltaXplciBpbnN0ZWFkIG9mIHRoZSByZXF1ZXN0IHdp
dGhpbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlD
bGllbnQ6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6OnRyeU9wdGltaXppbmdMb2Fk
KToKKyAgICAgICAgKFdlYktpdDo6dHJ5SW50ZXJjZXB0TmF2aWdhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdl
YktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0Ojp0cnlP
cHRpbWl6aW5nTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3
UGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCiAyMDE5LTAzLTA1
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2Ug
U2VydmljZVdvcmtlckZldGNoVGFzawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgKaW5kZXggZTdjZjA4MTJkNmNkMGFlODBhMjQ2ZTM2YTRl
NzJkZTRmZTc4Y2VkYi4uYzE1MjhmOGI1MTUyYWY1ZmE3ODEyN2ZjNTYxODdmYzA3OTJmNzU3ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlv
bi5oCkBAIC0zMyw2ICszMywxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0
Lmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
KyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQVBJTmF2aWdhdGlvbkFjdGlvbkFkZGl0aW9ucy5o
PgorI2VuZGlmCisKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uIGZp
bmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpOYXZpZ2F0aW9uQWN0aW9uPiB7
CkBAIC02NSw2ICs2OSwxMCBAQCBwdWJsaWM6CiAKICAgICBOYXZpZ2F0aW9uKiBtYWluRnJhbWVO
YXZpZ2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYWluRnJhbWVOYXZpZ2F0aW9uLmdldCgpOyB9
CiAKKyNpZiBIQVZFKExPQURfT1BUSU1JWkVSKQorQVBJTkFWSUdBVElPTkFDVElPTl9MT0FET1BU
SU1JWkVSX0FERElUSU9OU18xCisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOYXZpZ2F0aW9uQWN0
aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwg
QVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyogdGFyZ2V0RnJhbWUs
IE9wdGlvbmFsPFdURjo6U3RyaW5nPiB0YXJnZXRGcmFtZU5hbWUsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdURjo6VVJMJiBvcmlnaW5hbFVSTCwgYm9vbCBzaG91
bGRPcGVuQXBwTGlua3MsIFJlZlB0cjxVc2VySW5pdGlhdGVkQWN0aW9uPiYmIHVzZXJJbml0aWF0
ZWRBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICAgICAg
OiBtX3NvdXJjZUZyYW1lKHNvdXJjZUZyYW1lKQpAQCAtOTIsNiArMTAwLDkgQEAgcHJpdmF0ZToK
ICAgICBXVEY6OlVSTCBtX29yaWdpbmFsVVJMOwogCiAgICAgYm9vbCBtX3Nob3VsZE9wZW5BcHBM
aW5rczsKKyNpZiBIQVZFKExPQURfT1BUSU1JWkVSKQorQVBJTkFWSUdBVElPTkFDVElPTl9MT0FE
T1BUSU1JWkVSX0FERElUSU9OU18yCisjZW5kaWYKIAogICAgIFJlZlB0cjxVc2VySW5pdGlhdGVk
QWN0aW9uPiBtX3VzZXJJbml0aWF0ZWRBY3Rpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVVJQ2xpZW50LmgKaW5kZXggM2VjNmYwMGQyNGZjOTM5NDI2OTBhM2U3MjlmZDA3ZWQ3
YTNhYTZjNy4uM2I1NzdhOGE2MmI2OGQ3YjM3NmQwYWU0MjkzYzQwNDBkNmJlYjBiMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKQEAgLTczLDcgKzczLDcgQEAg
Y2xhc3MgVUlDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgflVJQ2xpZW50KCkgeyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlTmV3UGFnZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFJl
ZjxGcmFtZUluZm8+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpXaW5k
b3dGZWF0dXJlcyYmLCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVOZXdQYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6V2luZG93RmVh
dHVyZXMmJiwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSB7IGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNob3dQ
YWdlKFdlYktpdDo6V2ViUGFnZVByb3h5KikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGZ1bGxzY3Jl
ZW5NYXlSZXR1cm5Ub0lubGluZShXZWJLaXQ6OldlYlBhZ2VQcm94eSopIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oV2ViS2l0OjpXZWJQYWdlUHJveHkqKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IGE0MTY3NjZlMmIzODNl
MWI1MTQ0OGZjOWNjNDAyYzAxZjFiZWIzYWEuLmZmODkzODI5NWYyN2I5YzAzMjgwY2FjNDhiOWRk
MWQ3M2RlOGJhMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApA
QCAtMTQ3NCwxOSArMTQ3NCwxNSBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VS
ZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAgICAgICB9
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGNyZWF0ZU5ld1BhZ2UoV2ViUGFnZVByb3h5
JiBwYWdlLCBSZWY8QVBJOjpGcmFtZUluZm8+JiYgc291cmNlRnJhbWVJbmZvLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZXNvdXJjZVJlcXVlc3QsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVz
JiYgd2luZG93RmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlv
bkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYlBhZ2VQcm94eT4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHZvaWQgY3JlYXRlTmV3UGFnZShXZWJQ
YWdlUHJveHkmIHBhZ2UsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiYgd2luZG93RmVhdHVyZXMs
IFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViUGFnZVByb3h5PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fY2xpZW50LmNyZWF0ZU5ld1Bh
Z2UpIHsKICAgICAgICAgICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBwYWdlLmNvbmZpZ3Vy
YXRpb24oKS5jb3B5KCk7CiAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0UmVsYXRl
ZFBhZ2UoJnBhZ2UpOwogCi0gICAgICAgICAgICAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZp
dHkgPSBwYWdlLnByb2Nlc3MoKS51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlv
bkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwotICAgICAgICAgICAgICAgIGJvb2wg
c2hvdWxkT3BlbkFwcExpbmtzID0gIWhvc3RzQXJlRXF1YWwoc291cmNlRnJhbWVJbmZvLT5yZXF1
ZXN0KCkudXJsKCksIHJlc291cmNlUmVxdWVzdC51cmwoKSk7Ci0gICAgICAgICAgICAgICAgYXV0
byBhcGlOYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RG
TW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5wdHIoKSwgbnVsbHB0
ciwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksIFVSTCgpLCBzaG91bGRP
cGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7Ci0KICAgICAgICAg
ICAgICAgICBhdXRvIGFwaVdpbmRvd0ZlYXR1cmVzID0gQVBJOjpXaW5kb3dGZWF0dXJlczo6Y3Jl
YXRlKHdpbmRvd0ZlYXR1cmVzKTsKIAotICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihhZG9wdFJlZih0b0ltcGwobV9jbGllbnQuY3JlYXRlTmV3UGFnZSh0b0FQSSgmcGFn
ZSksIHRvQVBJKGNvbmZpZ3VyYXRpb24ucHRyKCkpLCB0b0FQSShhcGlOYXZpZ2F0aW9uQWN0aW9u
LnB0cigpKSwgdG9BUEkoYXBpV2luZG93RmVhdHVyZXMucHRyKCkpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pKSkpOworICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihh
ZG9wdFJlZih0b0ltcGwobV9jbGllbnQuY3JlYXRlTmV3UGFnZSh0b0FQSSgmcGFnZSksIHRvQVBJ
KGNvbmZpZ3VyYXRpb24ucHRyKCkpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLnB0cigpKSwgdG9B
UEkoYXBpV2luZG93RmVhdHVyZXMucHRyKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKSkp
OwogICAgICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5jcmVh
dGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEgfHwgbV9jbGllbnQuY3JlYXRlTmV3UGFn
ZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKSB7CkBAIC0xNTEwLDEyICsxNTA2LDEyIEBAIHZvaWQg
V0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNs
aWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAgICAgICAgUmVmPEFQSTo6RGljdGlvbmFyeT4g
ZmVhdHVyZXNNYXAgPSBBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShXVEZNb3ZlKG1hcCkpOwogCiAg
ICAgICAgICAgICAgICAgaWYgKG1fY2xpZW50LmNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVz
ZVdpdGhWMSkgewotICAgICAgICAgICAgICAgICAgICBSZWY8QVBJOjpVUkxSZXF1ZXN0PiByZXF1
ZXN0ID0gQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUocmVzb3VyY2VSZXF1ZXN0KTsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGFkb3B0UmVmKHRvSW1wbChtX2Ns
aWVudC5jcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEodG9BUEkoJnBhZ2UpLCB0
b0FQSShyZXF1ZXN0LnB0cigpKSwgdG9BUEkoZmVhdHVyZXNNYXAucHRyKCkpLCB0b0FQSShuYXZp
Z2F0aW9uQWN0aW9uRGF0YS5tb2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5t
b3VzZUJ1dHRvbiksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpKSk7CisgICAgICAgICAgICAg
ICAgICAgIFJlZjxBUEk6OlVSTFJlcXVlc3Q+IHJlcXVlc3QgPSBBUEk6OlVSTFJlcXVlc3Q6OmNy
ZWF0ZShuYXZpZ2F0aW9uQWN0aW9uLT5yZXF1ZXN0KCkpOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNyZWF0ZU5l
d1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSh0b0FQSSgmcGFnZSksIHRvQVBJKHJlcXVlc3Qu
cHRyKCkpLCB0b0FQSShmZWF0dXJlc01hcC5wdHIoKSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24t
Pm1vZGlmaWVycygpKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi0+bW91c2VCdXR0b24oKSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbykpKSk7CiAgICAgICAgICAgICAgICAgfQogICAgIAogICAg
ICAgICAgICAgICAgIEFTU0VSVChtX2NsaWVudC5jcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjApOwotICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihhZG9w
dFJlZih0b0ltcGwobV9jbGllbnQuY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYw
KHRvQVBJKCZwYWdlKSwgdG9BUEkoZmVhdHVyZXNNYXAucHRyKCkpLCB0b0FQSShuYXZpZ2F0aW9u
QWN0aW9uRGF0YS5tb2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3VzZUJ1
dHRvbiksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpKSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC5jcmVhdGVOZXdQ
YWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAodG9BUEkoJnBhZ2UpLCB0b0FQSShmZWF0dXJlc01h
cC5wdHIoKSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPm1vZGlmaWVycygpKSwgdG9BUEkobmF2
aWdhdGlvbkFjdGlvbi0+bW91c2VCdXR0b24oKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykp
KSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxw
dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
VUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlD
bGllbnQuY3BwCmluZGV4IGM4MzBmNWE5MWRkZjdmOTFjNmJiOGZmZmJmNDdiMmY1ODRiYWY0MDEu
LmNjYTdhZDY4ZTQ0NTg4YWYyNmRiOGQ3YzVmZGY2YzBlMjhhMWE5MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKQEAgLTUw
LDEwICs1MCw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBjcmVhdGVO
ZXdQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPEFQSTo6RnJhbWVJbmZvPiYmIGZyYW1lSW5m
bywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVzb3VyY2VSZXF1ZXN0LCBXZWJDb3JlOjpX
aW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5h
dmlnYXRpb25BY3Rpb25EYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJQYWdl
UHJveHk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgIHZvaWQgY3JlYXRlTmV3
UGFnZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiYgd2luZG93
RmVhdHVyZXMsIEFQSTo6TmF2aWdhdGlvbkFjdGlvbiYmIG5hdmlnYXRpb25BY3Rpb24sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYlBhZ2VQcm94eT4mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpIGZpbmFsCiAgICAgewotICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9
IHBhZ2UucHJvY2VzcygpLnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0
YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7Ci0gICAgICAgIFdlYktpdE5hdmlnYXRpb25B
Y3Rpb24gbmF2aWdhdGlvbkFjdGlvbihBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZN
b3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgZnJhbWVJbmZvLnB0cigpLCBudWxscHRyLCBXVEY6
Om51bGxvcHQsIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgVVJMIHsgfSwgZmFsc2UsIFdURk1v
dmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSkpOworICAgICAgICBXZWJLaXROYXZpZ2F0aW9uQWN0
aW9uIG5hdmlnYXRpb25BY3Rpb24oV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSk7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHdlYmtpdFdlYlZpZXdDcmVhdGVOZXdQYWdlKG1fd2ViVmlldywg
d2luZG93RmVhdHVyZXMsICZuYXZpZ2F0aW9uQWN0aW9uKSk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggY2EwMjVk
ZjMzOGM3YWExZmExMTcwNmMzODExMmYyOGRlYTM1MDk5Yi4uNDY2ZTc0YjVkOGY0ZGU3OWZkMTY5
MjhiZGQ2NTE1YTQwN2UyZmMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtNDY3LDcgKzQ2Nyw3IEBAIGJvb2wgTmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oV2Vi
UGFnZVByb3h5CiAjZW5kaWYKIAogI2lmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotc3RhdGlj
IHZvaWQgdHJ5T3B0aW1pemluZ0xvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
V2ViUGFnZVByb3h5JiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3N0YXRpYyB2b2lkIHRyeU9wdGltaXppbmdMb2FkKFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+
JiYsIFdlYlBhZ2VQcm94eSYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogfQpAQCAtNDc3LDE1ICs0Nzcs
MTYgQEAgc3RhdGljIHZvaWQgdHJ5SW50ZXJjZXB0TmF2aWdhdGlvbihSZWY8QVBJOjpOYXZpZ2F0
aW9uQWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rpb24KIHsKICNpZiBIQVZFKEFQUF9MSU5LUykKICAg
ICBpZiAobmF2aWdhdGlvbkFjdGlvbi0+c2hvdWxkT3BlbkFwcExpbmtzKCkpIHsKLSAgICAgICAg
YXV0byogbG9jYWxDb21wbGV0aW9uSGFuZGxlciA9IG5ldyBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJv
b2wpPihbcmVxdWVzdCA9IG5hdmlnYXRpb25BY3Rpb24tPnJlcXVlc3QoKS5pc29sYXRlZENvcHko
KSwgd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cihwYWdlKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGJvb2wgc3VjY2VzcykgbXV0YWJsZSB7CisgICAgICAg
IGF1dG8gdXJsID0gbmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVzdCgpLnVybCgpOworICAgICAgICBh
dXRvKiBsb2NhbENvbXBsZXRpb25IYW5kbGVyID0gbmV3IFdURjo6RnVuY3Rpb248dm9pZCAoYm9v
bCk+KFtuYXZpZ2F0aW9uQWN0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgd2Vha1Bh
Z2UgPSBtYWtlV2Vha1B0cihwYWdlKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKGJvb2wgc3VjY2VzcykgbXV0YWJsZSB7CiAgICAgICAgICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICAgICAgaWYgKCFzdWNjZXNzICYmIHdlYWtQ
YWdlKSB7Ci0gICAgICAgICAgICAgICAgdHJ5T3B0aW1pemluZ0xvYWQocmVxdWVzdCwgKndlYWtQ
YWdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICAgICAgdHJ5T3B0
aW1pemluZ0xvYWQoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgKndlYWtQYWdlLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3VjY2Vzcyk7CiAgICAgICAgIH0p
OwotICAgICAgICBbTFNBcHBMaW5rIG9wZW5XaXRoVVJMOm5hdmlnYXRpb25BY3Rpb24tPnJlcXVl
c3QoKS51cmwoKSBjb21wbGV0aW9uSGFuZGxlcjpbbG9jYWxDb21wbGV0aW9uSGFuZGxlcl0oQk9P
TCBzdWNjZXNzLCBOU0Vycm9yICopIHsKKyAgICAgICAgW0xTQXBwTGluayBvcGVuV2l0aFVSTDp1
cmwgY29tcGxldGlvbkhhbmRsZXI6W2xvY2FsQ29tcGxldGlvbkhhbmRsZXJdKEJPT0wgc3VjY2Vz
cywgTlNFcnJvciAqKSB7CiAgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBbbG9jYWxDb21wbGV0aW9uSGFuZGxlciwgc3VjY2Vzc10gewogICAgICAg
ICAgICAgICAgICgqbG9jYWxDb21wbGV0aW9uSGFuZGxlcikoc3VjY2Vzcyk7CiAgICAgICAgICAg
ICAgICAgZGVsZXRlIGxvY2FsQ29tcGxldGlvbkhhbmRsZXI7CkBAIC00OTUsNyArNDk2LDcgQEAg
c3RhdGljIHZvaWQgdHJ5SW50ZXJjZXB0TmF2aWdhdGlvbihSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0
aW9uPiYmIG5hdmlnYXRpb25BY3Rpb24KICAgICB9CiAjZW5kaWYKIAotICAgIHRyeU9wdGltaXpp
bmdMb2FkKG5hdmlnYXRpb25BY3Rpb24tPnJlcXVlc3QoKSwgcGFnZSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgIHRyeU9wdGltaXppbmdMb2FkKFdURk1vdmUobmF2aWdhdGlvbkFj
dGlvbiksIHBhZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOYXZp
Z2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHksIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rp
b24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4m
JiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJJbmZvKQpAQCAtNTg3LDcgKzU4OCw3IEBAIHZv
aWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKFdlYlBhZ2VQCiAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT5kb3dubG9h
ZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgX1dLTmF2aWdhdGlvbkFjdGlv
blBvbGljeUFsbG93V2l0aG91dFRyeWluZ0FwcExpbms6Ci0gICAgICAgICAgICB0cnlPcHRpbWl6
aW5nTG9hZChuYXZpZ2F0aW9uQWN0aW9uLT5yZXF1ZXN0KCksIHdlYlBhZ2VQcm94eSwgW2xvY2Fs
TGlzdGVuZXIgPSBXVEZNb3ZlKGxvY2FsTGlzdGVuZXIpLCB3ZWJzaXRlUG9saWNpZXMgPSBXVEZN
b3ZlKGFwaVdlYnNpdGVQb2xpY2llcyldIChib29sIG9wdGltaXplZExvYWQpIHsKKyAgICAgICAg
ICAgIHRyeU9wdGltaXppbmdMb2FkKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIHdlYlBhZ2VQ
cm94eSwgW2xvY2FsTGlzdGVuZXIgPSBXVEZNb3ZlKGxvY2FsTGlzdGVuZXIpLCB3ZWJzaXRlUG9s
aWNpZXMgPSBXVEZNb3ZlKGFwaVdlYnNpdGVQb2xpY2llcyldIChib29sIG9wdGltaXplZExvYWQp
IHsKICAgICAgICAgICAgICAgICBpZiAob3B0aW1pemVkTG9hZCkgewogICAgICAgICAgICAgICAg
ICAgICBsb2NhbExpc3RlbmVyLT5pZ25vcmUoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4IGNjYjc4
YTI5ZTJhNGMyZmYxNmQ0MjUyNWFlNWU0NjBhNzg5YmI3YTMuLmFhMzgxNmZiODc5ZjlmMmEwODRm
NjU1NzIzNWYyYWU1Nzk5YzExMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
SURlbGVnYXRlLmgKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIC8vIEFQSTo6VUlDbGllbnQKLSAgICAgICAgdm9pZCBjcmVhdGVOZXdQYWdlKFdlYlBh
Z2VQcm94eSYsIFJlZjxBUEk6OkZyYW1lSW5mbz4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiYsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYlBhZ2VQcm94eT4mJik+JiYpIGZpbmFsOwor
ICAgICAgICB2b2lkIGNyZWF0ZU5ld1BhZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJDb3Jl
OjpXaW5kb3dGZWF0dXJlcyYmLCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJQYWdlUHJveHk+JiYpPiYmKSBmaW5hbDsKICAgICAg
ICAgdm9pZCBjbG9zZShXZWJQYWdlUHJveHkqKSBmaW5hbDsKICAgICAgICAgdm9pZCBmdWxsc2Ny
ZWVuTWF5UmV0dXJuVG9JbmxpbmUoV2ViUGFnZVByb3h5KikgZmluYWw7CiAgICAgICAgIHZvaWQg
ZGlkRW50ZXJGdWxsc2NyZWVuKFdlYlBhZ2VQcm94eSopIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggYjVhMGE1MDhiYzk5NmQzYzlhOTdm
OTNhZjNlYTNmOTI1MDk3ZjY2NS4uYTQxZWZhZTViYWQ0NGQxMTZmZTIwYmQ5NDg1ZTY2Zjk0OGRk
YjBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBA
IC0yMjUsNyArMjI1LDcgQEAgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6On5VSUNsaWVudCgpCiB7CiB9
CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5ld1BhZ2UoV2ViUGFnZVByb3h5
JiBwYWdlLCBSZWY8QVBJOjpGcmFtZUluZm8+JiYgc291cmNlRnJhbWVJbmZvLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmIHdpbmRv
d0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJQYWdlUHJveHk+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZShXZWJL
aXQ6OldlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiYgd2luZG93RmVhdHVy
ZXMsIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViUGFnZVByb3h5PiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0
KCk7CiAgICAgQVNTRVJUKGRlbGVnYXRlKTsKQEAgLTIzMywxNiArMjMzLDEyIEBAIHZvaWQgVUlE
ZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5ld1BhZ2UoV2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8
QVBJOjpGcmFtZUluZm8+CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbbV91aURl
bGVnYXRlLm1fd2ViVmlldy0+X2NvbmZpZ3VyYXRpb24gY29weV0pOwogICAgIFtjb25maWd1cmF0
aW9uIF9zZXRSZWxhdGVkV2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3XTsKIAotICAgIGF1
dG8gdXNlckluaXRpYXRlZEFjdGl2aXR5ID0gcGFnZS5wcm9jZXNzKCkudXNlckluaXRpYXRlZEFj
dGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsK
LSAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9ICFob3N0c0FyZUVxdWFsKHNvdXJjZUZyYW1l
SW5mby0+cmVxdWVzdCgpLnVybCgpLCByZXF1ZXN0LnVybCgpKTsKLSAgICBhdXRvIGFwaU5hdmln
YXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmln
YXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLnB0cigpLCBudWxscHRyLCBXVEY6Om51
bGxvcHQsIFdURk1vdmUocmVxdWVzdCksIFVSTCgpLCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1v
dmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7Ci0KICAgICBhdXRvIGFwaVdpbmRvd0ZlYXR1cmVz
ID0gQVBJOjpXaW5kb3dGZWF0dXJlczo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzKTsKIAogICAgIGlm
IChtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0NyZWF0ZVdlYlZpZXdXaXRo
Q29uZmlndXJhdGlvbkZvck5hdmlnYXRpb25BY3Rpb25XaW5kb3dGZWF0dXJlc0FzeW5jKSB7CiAg
ICAgICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0
ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKF93ZWJWaWV3OmNyZWF0ZVdlYlZpZXdXaXRoQ29u
ZmlndXJhdGlvbjpmb3JOYXZpZ2F0aW9uQWN0aW9uOndpbmRvd0ZlYXR1cmVzOmNvbXBsZXRpb25I
YW5kbGVyOikpOwogCi0gICAgICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRl
IF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgY3JlYXRlV2ViVmlld1dpdGhDb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgZm9yTmF2aWdhdGlvbkFjdGlvbjp3cmFwcGVyKGFw
aU5hdmlnYXRpb25BY3Rpb24pIHdpbmRvd0ZlYXR1cmVzOndyYXBwZXIoYXBpV2luZG93RmVhdHVy
ZXMpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlciksIHJl
bGF0ZWRXZWJWaWV3ID0gUmV0YWluUHRyPFdLV2ViVmlldz4obV91aURlbGVnYXRlLm1fd2ViVmll
dyldIChXS1dlYlZpZXcgKndlYlZpZXcpIG11dGFibGUgeworICAgICAgICBbKGlkIDxXS1VJRGVs
ZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IGNy
ZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGZvck5hdmln
YXRpb25BY3Rpb246d3JhcHBlcihuYXZpZ2F0aW9uQWN0aW9uKSB3aW5kb3dGZWF0dXJlczp3cmFw
cGVyKGFwaVdpbmRvd0ZlYXR1cmVzKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBX
VEZNb3ZlKGNoZWNrZXIpLCByZWxhdGVkV2ViVmlldyA9IFJldGFpblB0cjxXS1dlYlZpZXc+KG1f
dWlEZWxlZ2F0ZS5tX3dlYlZpZXcpXSAoV0tXZWJWaWV3ICp3ZWJWaWV3KSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29t
cGxldGlvbkhhbmRsZXIoKTsKQEAgLTI2Miw3ICsyNTgsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJ
Q2xpZW50OjpjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPEFQSTo6RnJhbWVJ
bmZvPgogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdDcmVh
dGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb25Gb3JOYXZpZ2F0aW9uQWN0aW9uV2luZG93RmVhdHVy
ZXMpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKIAotICAgIFJl
dGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBbZGVsZWdhdGUgd2ViVmlldzptX3VpRGVsZWdh
dGUubV93ZWJWaWV3IGNyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpIGZvck5hdmlnYXRpb25BY3Rpb246d3JhcHBlcihhcGlOYXZpZ2F0aW9uQWN0aW9uKSB3
aW5kb3dGZWF0dXJlczp3cmFwcGVyKGFwaVdpbmRvd0ZlYXR1cmVzKV07CisgICAgUmV0YWluUHRy
PFdLV2ViVmlldz4gd2ViVmlldyA9IFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dl
YlZpZXcgY3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkg
Zm9yTmF2aWdhdGlvbkFjdGlvbjp3cmFwcGVyKG5hdmlnYXRpb25BY3Rpb24pIHdpbmRvd0ZlYXR1
cmVzOndyYXBwZXIoYXBpV2luZG93RmVhdHVyZXMpXTsKICAgICBpZiAoIXdlYlZpZXcpCiAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMWYzOWMxNGFlYWVhOTdiY2IyYzYxZjUxMzY1
NDgyYzI0OWI5YmQyNC4uYzU1ZjcyMjI4Nzg3YmJlNThmNWQxMmQyODUwYzgzZmU3MDZiZmJjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00NTk1LDEwICs0
NTk1LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAKICAgICAgICAgYXV0byBuYXZpZ2F0
aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0
aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5nZXQoKSwgZGVzdGluYXRpb25GcmFtZUlu
Zm8ucHRyKCksIFdURjo6bnVsbG9wdCwgV1RGTW92ZShyZXF1ZXN0KSwgb3JpZ2luYWxSZXF1ZXN0
LnVybCgpLCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5
KSwgbWFpbkZyYW1lTmF2aWdhdGlvbik7CiAKKyNpZiBIQVZFKExPQURfT1BUSU1JWkVSKQorV0VC
UEFHRVBST1hZX0xPQURPUFRJTUlaRVJfQURESVRJT05TXzMKKyNlbmRpZgorCiAgICAgICAgIG1f
bmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigqdGhpcywg
V1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgV1RGTW92ZShsaXN0ZW5lciksIHByb2Nlc3MtPnRy
YW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKICAgICB9
CiAKICAgICBtX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVj
aXNpb24gPSBmYWxzZTsKKworI2lmIEhBVkUoTE9BRF9PUFRJTUlaRVIpCitXRUJQQUdFUFJPWFlf
TE9BRE9QVElNSVpFUl9BRERJVElPTlNfNAorI2VuZGlmCiB9CiAKIFdlYlBhZ2VQcm94eSogV2Vi
UGFnZVByb3h5Ojpub25FcGhlbWVyYWxXZWJQYWdlUHJveHkoKQpAQCAtNDg4NCwxNCArNDg5Miwy
NCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkVXBkYXRlSGlzdG9yeVRpdGxlKGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLAogCiAvLyBVSUNsaWVudAogCit1c2luZyBOZXdQ
YWdlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJQYWdlUHJveHk+
JiYpPjsKK3VzaW5nIFVJQ2xpZW50Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZjxBUEk6Ok5h
dmlnYXRpb25BY3Rpb24+JiYsIE5ld1BhZ2VDYWxsYmFjayYmKT47CitzdGF0aWMgdm9pZCB0cnlP
cHRpbWl6aW5nTG9hZChSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rp
b24sIFdlYlBhZ2VQcm94eSYgcGFnZSwgTmV3UGFnZUNhbGxiYWNrJiYgbmV3UGFnZUNhbGxiYWNr
LCBVSUNsaWVudENhbGxiYWNrJiYgdWlDbGllbnRDYWxsYmFjaykKK3sKKyNpZiBIQVZFKExPQURf
T1BUSU1JWkVSKQorV0VCUEFHRVBST1hZX0xPQURPUFRJTUlaRVJfQURESVRJT05TXzYKKyNlbHNl
CisgICAgQVNTRVJUX1VOVVNFRChwYWdlLCBwYWdlLnBhZ2VJRCgpKTsKKyAgICB1aUNsaWVudENh
bGxiYWNrKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIFdURk1vdmUobmV3UGFnZUNhbGxiYWNr
KSk7CisjZW5kaWYKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UoY29uc3Qg
RnJhbWVJbmZvRGF0YSYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5h
dGluZ1BhZ2VJRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2luZG93RmVhdHVyZXMmJiB3
aW5kb3dGZWF0dXJlcywgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0
YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6RGVsYXllZFJlcGx5JiYg
cmVwbHkpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIG1fcHJvY2Vzcy0+d2ViRnJh
bWUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQpKTsKICAgICBhdXRvIG9yaWdpbmF0
aW5nRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShvcmlnaW5hdGluZ0ZyYW1lSW5m
b0RhdGEsIG1fcHJvY2Vzcy0+d2ViUGFnZShvcmlnaW5hdGluZ1BhZ2VJRCkpOwotCiAgICAgYXV0
byBtYWluRnJhbWVVUkwgPSBtX21haW5GcmFtZS0+dXJsKCk7Ci0KLSAgICBtX3VpQ2xpZW50LT5j
cmVhdGVOZXdQYWdlKCp0aGlzLCBXVEZNb3ZlKG9yaWdpbmF0aW5nRnJhbWVJbmZvKSwgV1RGTW92
ZShyZXF1ZXN0KSwgV1RGTW92ZSh3aW5kb3dGZWF0dXJlcyksIFdURk1vdmUobmF2aWdhdGlvbkFj
dGlvbkRhdGEpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWluRnJh
bWVVUkwsIHJlcXVlc3QsIHJlcGx5ID0gV1RGTW92ZShyZXBseSldIChSZWZQdHI8V2ViUGFnZVBy
b3h5PiBuZXdQYWdlKSBtdXRhYmxlIHsKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWFpbkZyYW1lVVJMLCByZXF1ZXN0
LCByZXBseSA9IFdURk1vdmUocmVwbHkpXSAoUmVmUHRyPFdlYlBhZ2VQcm94eT4gbmV3UGFnZSkg
bXV0YWJsZSB7CiAgICAgICAgIGlmICghbmV3UGFnZSkgewogICAgICAgICAgICAgcmVwbHkoMCwg
V1RGOjpudWxsb3B0KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQ5MDMsNiArNDkyMSwxOCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiBv
cmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsCiAKICAgICAgICAgV2Vic2l0ZURhdGFTdG9yZTo6Y2xv
bmVTZXNzaW9uRGF0YSgqdGhpcywgKm5ld1BhZ2UpOwogICAgICAgICBuZXdQYWdlLT5tX3Nob3Vs
ZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSBob3N0c0Fy
ZUVxdWFsKFVSTCh7IH0sIG1haW5GcmFtZVVSTCksIHJlcXVlc3QudXJsKCkpOworCisjaWYgSEFW
RShMT0FEX09QVElNSVpFUikKK1dFQlBBR0VQUk9YWV9MT0FET1BUSU1JWkVSX0FERElUSU9OU181
CisjZW5kaWYKKyAgICB9OworCisgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBtX3By
b2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2Vz
dHVyZVRva2VuSWRlbnRpZmllcik7CisgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSAhaG9z
dHNBcmVFcXVhbChvcmlnaW5hdGluZ0ZyYW1lSW5mby0+cmVxdWVzdCgpLnVybCgpLCByZXF1ZXN0
LnVybCgpKTsKKyAgICBhdXRvIG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rp
b246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgb3JpZ2luYXRpbmdGcmFt
ZUluZm8ucHRyKCksIG51bGxwdHIsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShyZXF1ZXN0KSwgVVJM
KCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsK
KworICAgIHRyeU9wdGltaXppbmdMb2FkKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksICp0aGlz
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgd2luZG93RmVhdHVyZXMgPSBXVEZNb3ZlKHdpbmRvd0ZlYXR1cmVzKV0gKFJl
ZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZWZQdHI8V2ViUGFnZVByb3h5PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
bXV0YWJsZSB7CisgICAgICAgIG1fdWlDbGllbnQtPmNyZWF0ZU5ld1BhZ2UoKnRoaXMsIFdURk1v
dmUod2luZG93RmVhdHVyZXMpLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IDIxNTVkMTQyZTQ0ZmJhNTQ0NThiYzcxZjUzOTFiZTZlMDli
NGU4MDMuLmVkNmY0NmUzNmIyYzdiODZkZTlmYTVjOTRmMTBiNjIzOTI3YzkxMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMzUsNiArMTM1LDEwIEBAIE9CSkNf
Q0xBU1MgX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnk7CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJNZWRp
YVNlc3Npb25NYW5hZ2VyQ2xpZW50Lmg+CiAjZW5kaWYKIAorI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1dlYlBhZ2VQcm94eUFkZGl0aW9ucy5o
PgorI2VuZGlmCisKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIE1lZGlhU2Vzc2lvbk1ldGFkYXRhOwpAQCAtMTQ3Miw2ICsxNDc2LDEwIEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlbW92ZU9ic2VydmVyKFdlYlZpZXdEaWRNb3ZlVG9XaW5kb3dPYnNl
cnZlciYpOwogICAgIHZvaWQgd2ViVmlld0RpZE1vdmVUb1dpbmRvdygpOwogCisjaWYgSEFWRShM
T0FEX09QVElNSVpFUikKK1dFQlBBR0VQUk9YWV9MT0FET1BUSU1JWkVSX0FERElUSU9OU18xCisj
ZW5kaWYKKwogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgLy8gSW1wbGVtZW50ZWQg
aW4gZ2VuZXJhdGVkIFdlYlBhZ2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRl
OwpAQCAtMjE3OCw2ICsyMTg2LDEwIEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1ZXN0OwogICAgIGJvb2wgbV9zaG91
bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uIHsgZmFsc2Ug
fTsKIAorI2lmIEhBVkUoTE9BRF9PUFRJTUlaRVIpCitXRUJQQUdFUFJPWFlfTE9BRE9QVElNSVpF
Ul9BRERJVElPTlNfMgorI2VuZGlmCisKICAgICBEZXF1ZTxOYXRpdmVXZWJNb3VzZUV2ZW50PiBt
X21vdXNlRXZlbnRRdWV1ZTsKICAgICBEZXF1ZTxOYXRpdmVXZWJLZXlib2FyZEV2ZW50PiBtX2tl
eUV2ZW50UXVldWU7CiAgICAgRGVxdWU8TmF0aXZlV2ViV2hlZWxFdmVudD4gbV93aGVlbEV2ZW50
UXVldWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364175</attachid>
            <date>2019-03-10 00:06:09 -0800</date>
            <delta_ts>2019-03-10 00:28:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195516-20190310000609.patch</filename>
            <type>text/plain</type>
            <size>23097</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJkNDliOWMwM2UzOGI0YWFm
ZmEyNTVhMTE5NDJjZTM1ZTc1YmI0ZjYuLmFlN2RjMTlkZGQ0ZDczODZjOTNjN2E0MzhiMjdiZDBi
OTZmYjMxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTktMDMtMDkgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6aW5nIGxvYWRzIHdo
ZW4gY3JlYXRpbmcgbmV3IHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTU1MTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4NzM4MDg2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcyBob29rcyBpbiBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UgdG8gb3B0aW1pemUg
bG9hZHMsIGFuZCBtb3ZlcyB0aGUgY3JlYXRpb25QYXJhbWV0ZXJzCisgICAgICAgIG9mIEFQSTo6
TmF2aWdhdGlvbkFjdGlvbiBmcm9tIFVJIGNsaWVudHMgdG8gV2ViUGFnZVByb3h5OjpjcmVhdGVO
ZXdQYWdlLiBBbHNvLCB3ZSBub3cgcGFzcyB0aGUgd2hvbGUKKyAgICAgICAgQVBJOjpOYXZpZ2F0
aW9uQWN0aW9uIHRvIHRoZSBsb2FkIG9wdGltaXplciBpbnN0ZWFkIG9mIHRoZSByZXF1ZXN0IHdp
dGhpbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlD
bGllbnQ6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6OnRyeU9wdGltaXppbmdMb2Fk
KToKKyAgICAgICAgKFdlYktpdDo6dHJ5SW50ZXJjZXB0TmF2aWdhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdl
YktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0Ojp0cnlP
cHRpbWl6aW5nTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3
UGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCiAyMDE5LTAzLTA1
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2Ug
U2VydmljZVdvcmtlckZldGNoVGFzawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgKaW5kZXggZTdjZjA4MTJkNmNkMGFlODBhMjQ2ZTM2YTRl
NzJkZTRmZTc4Y2VkYi4uYzE1MjhmOGI1MTUyYWY1ZmE3ODEyN2ZjNTYxODdmYzA3OTJmNzU3ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlv
bi5oCkBAIC0zMyw2ICszMywxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0
Lmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
KyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQVBJTmF2aWdhdGlvbkFjdGlvbkFkZGl0aW9ucy5o
PgorI2VuZGlmCisKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uIGZp
bmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpOYXZpZ2F0aW9uQWN0aW9uPiB7
CkBAIC02NSw2ICs2OSwxMCBAQCBwdWJsaWM6CiAKICAgICBOYXZpZ2F0aW9uKiBtYWluRnJhbWVO
YXZpZ2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYWluRnJhbWVOYXZpZ2F0aW9uLmdldCgpOyB9
CiAKKyNpZiBIQVZFKExPQURfT1BUSU1JWkVSKQorQVBJTkFWSUdBVElPTkFDVElPTl9MT0FET1BU
SU1JWkVSX0FERElUSU9OU18xCisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOYXZpZ2F0aW9uQWN0
aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwg
QVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyogdGFyZ2V0RnJhbWUs
IE9wdGlvbmFsPFdURjo6U3RyaW5nPiB0YXJnZXRGcmFtZU5hbWUsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdURjo6VVJMJiBvcmlnaW5hbFVSTCwgYm9vbCBzaG91
bGRPcGVuQXBwTGlua3MsIFJlZlB0cjxVc2VySW5pdGlhdGVkQWN0aW9uPiYmIHVzZXJJbml0aWF0
ZWRBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICAgICAg
OiBtX3NvdXJjZUZyYW1lKHNvdXJjZUZyYW1lKQpAQCAtOTIsNiArMTAwLDkgQEAgcHJpdmF0ZToK
ICAgICBXVEY6OlVSTCBtX29yaWdpbmFsVVJMOwogCiAgICAgYm9vbCBtX3Nob3VsZE9wZW5BcHBM
aW5rczsKKyNpZiBIQVZFKExPQURfT1BUSU1JWkVSKQorQVBJTkFWSUdBVElPTkFDVElPTl9MT0FE
T1BUSU1JWkVSX0FERElUSU9OU18yCisjZW5kaWYKIAogICAgIFJlZlB0cjxVc2VySW5pdGlhdGVk
QWN0aW9uPiBtX3VzZXJJbml0aWF0ZWRBY3Rpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVVJQ2xpZW50LmgKaW5kZXggM2VjNmYwMGQyNGZjOTM5NDI2OTBhM2U3MjlmZDA3ZWQ3
YTNhYTZjNy4uM2I1NzdhOGE2MmI2OGQ3YjM3NmQwYWU0MjkzYzQwNDBkNmJlYjBiMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKQEAgLTczLDcgKzczLDcgQEAg
Y2xhc3MgVUlDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgflVJQ2xpZW50KCkgeyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlTmV3UGFnZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFJl
ZjxGcmFtZUluZm8+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpXaW5k
b3dGZWF0dXJlcyYmLCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVOZXdQYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6V2luZG93RmVh
dHVyZXMmJiwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSB7IGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNob3dQ
YWdlKFdlYktpdDo6V2ViUGFnZVByb3h5KikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGZ1bGxzY3Jl
ZW5NYXlSZXR1cm5Ub0lubGluZShXZWJLaXQ6OldlYlBhZ2VQcm94eSopIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oV2ViS2l0OjpXZWJQYWdlUHJveHkqKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IGE0MTY3NjZlMmIzODNl
MWI1MTQ0OGZjOWNjNDAyYzAxZjFiZWIzYWEuLmZmODkzODI5NWYyN2I5YzAzMjgwY2FjNDhiOWRk
MWQ3M2RlOGJhMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApA
QCAtMTQ3NCwxOSArMTQ3NCwxNSBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VS
ZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAgICAgICB9
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGNyZWF0ZU5ld1BhZ2UoV2ViUGFnZVByb3h5
JiBwYWdlLCBSZWY8QVBJOjpGcmFtZUluZm8+JiYgc291cmNlRnJhbWVJbmZvLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZXNvdXJjZVJlcXVlc3QsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVz
JiYgd2luZG93RmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlv
bkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYlBhZ2VQcm94eT4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHZvaWQgY3JlYXRlTmV3UGFnZShXZWJQ
YWdlUHJveHkmIHBhZ2UsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiYgd2luZG93RmVhdHVyZXMs
IFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViUGFnZVByb3h5PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fY2xpZW50LmNyZWF0ZU5ld1Bh
Z2UpIHsKICAgICAgICAgICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBwYWdlLmNvbmZpZ3Vy
YXRpb24oKS5jb3B5KCk7CiAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0UmVsYXRl
ZFBhZ2UoJnBhZ2UpOwogCi0gICAgICAgICAgICAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZp
dHkgPSBwYWdlLnByb2Nlc3MoKS51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlv
bkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwotICAgICAgICAgICAgICAgIGJvb2wg
c2hvdWxkT3BlbkFwcExpbmtzID0gIWhvc3RzQXJlRXF1YWwoc291cmNlRnJhbWVJbmZvLT5yZXF1
ZXN0KCkudXJsKCksIHJlc291cmNlUmVxdWVzdC51cmwoKSk7Ci0gICAgICAgICAgICAgICAgYXV0
byBhcGlOYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RG
TW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5wdHIoKSwgbnVsbHB0
ciwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksIFVSTCgpLCBzaG91bGRP
cGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7Ci0KICAgICAgICAg
ICAgICAgICBhdXRvIGFwaVdpbmRvd0ZlYXR1cmVzID0gQVBJOjpXaW5kb3dGZWF0dXJlczo6Y3Jl
YXRlKHdpbmRvd0ZlYXR1cmVzKTsKIAotICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihhZG9wdFJlZih0b0ltcGwobV9jbGllbnQuY3JlYXRlTmV3UGFnZSh0b0FQSSgmcGFn
ZSksIHRvQVBJKGNvbmZpZ3VyYXRpb24ucHRyKCkpLCB0b0FQSShhcGlOYXZpZ2F0aW9uQWN0aW9u
LnB0cigpKSwgdG9BUEkoYXBpV2luZG93RmVhdHVyZXMucHRyKCkpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pKSkpOworICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihh
ZG9wdFJlZih0b0ltcGwobV9jbGllbnQuY3JlYXRlTmV3UGFnZSh0b0FQSSgmcGFnZSksIHRvQVBJ
KGNvbmZpZ3VyYXRpb24ucHRyKCkpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLnB0cigpKSwgdG9B
UEkoYXBpV2luZG93RmVhdHVyZXMucHRyKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKSkp
OwogICAgICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5jcmVh
dGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEgfHwgbV9jbGllbnQuY3JlYXRlTmV3UGFn
ZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKSB7CkBAIC0xNTEwLDEyICsxNTA2LDEyIEBAIHZvaWQg
V0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNs
aWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAgICAgICAgUmVmPEFQSTo6RGljdGlvbmFyeT4g
ZmVhdHVyZXNNYXAgPSBBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShXVEZNb3ZlKG1hcCkpOwogCiAg
ICAgICAgICAgICAgICAgaWYgKG1fY2xpZW50LmNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVz
ZVdpdGhWMSkgewotICAgICAgICAgICAgICAgICAgICBSZWY8QVBJOjpVUkxSZXF1ZXN0PiByZXF1
ZXN0ID0gQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUocmVzb3VyY2VSZXF1ZXN0KTsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGFkb3B0UmVmKHRvSW1wbChtX2Ns
aWVudC5jcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEodG9BUEkoJnBhZ2UpLCB0
b0FQSShyZXF1ZXN0LnB0cigpKSwgdG9BUEkoZmVhdHVyZXNNYXAucHRyKCkpLCB0b0FQSShuYXZp
Z2F0aW9uQWN0aW9uRGF0YS5tb2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5t
b3VzZUJ1dHRvbiksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpKSk7CisgICAgICAgICAgICAg
ICAgICAgIFJlZjxBUEk6OlVSTFJlcXVlc3Q+IHJlcXVlc3QgPSBBUEk6OlVSTFJlcXVlc3Q6OmNy
ZWF0ZShuYXZpZ2F0aW9uQWN0aW9uLT5yZXF1ZXN0KCkpOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNyZWF0ZU5l
d1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSh0b0FQSSgmcGFnZSksIHRvQVBJKHJlcXVlc3Qu
cHRyKCkpLCB0b0FQSShmZWF0dXJlc01hcC5wdHIoKSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24t
Pm1vZGlmaWVycygpKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi0+bW91c2VCdXR0b24oKSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbykpKSk7CiAgICAgICAgICAgICAgICAgfQogICAgIAogICAg
ICAgICAgICAgICAgIEFTU0VSVChtX2NsaWVudC5jcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjApOwotICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihhZG9w
dFJlZih0b0ltcGwobV9jbGllbnQuY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYw
KHRvQVBJKCZwYWdlKSwgdG9BUEkoZmVhdHVyZXNNYXAucHRyKCkpLCB0b0FQSShuYXZpZ2F0aW9u
QWN0aW9uRGF0YS5tb2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3VzZUJ1
dHRvbiksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpKSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC5jcmVhdGVOZXdQ
YWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAodG9BUEkoJnBhZ2UpLCB0b0FQSShmZWF0dXJlc01h
cC5wdHIoKSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPm1vZGlmaWVycygpKSwgdG9BUEkobmF2
aWdhdGlvbkFjdGlvbi0+bW91c2VCdXR0b24oKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykp
KSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxw
dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
VUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlD
bGllbnQuY3BwCmluZGV4IGM4MzBmNWE5MWRkZjdmOTFjNmJiOGZmZmJmNDdiMmY1ODRiYWY0MDEu
LmIyNmQ0ODI2NmI0NjA1YjRjNjFmZmRlMDhlNDk2ZmEzY2UxY2RiOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKQEAgLTUw
LDEwICs1MCw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBjcmVhdGVO
ZXdQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPEFQSTo6RnJhbWVJbmZvPiYmIGZyYW1lSW5m
bywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVzb3VyY2VSZXF1ZXN0LCBXZWJDb3JlOjpX
aW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5h
dmlnYXRpb25BY3Rpb25EYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJQYWdl
UHJveHk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgIHZvaWQgY3JlYXRlTmV3
UGFnZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiYgd2luZG93
RmVhdHVyZXMsIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViUGFnZVByb3h5PiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgZmluYWwKICAgICB7Ci0gICAgICAgIGF1dG8gdXNlckluaXRpYXRlZEFjdGl2
aXR5ID0gcGFnZS5wcm9jZXNzKCkudXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rp
b25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKLSAgICAgICAgV2ViS2l0TmF2aWdh
dGlvbkFjdGlvbiBuYXZpZ2F0aW9uQWN0aW9uKEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRl
KFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBmcmFtZUluZm8ucHRyKCksIG51bGxwdHIs
IFdURjo6bnVsbG9wdCwgV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBVUkwgeyB9LCBmYWxzZSwg
V1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKSk7CisgICAgICAgIFdlYktpdE5hdmlnYXRp
b25BY3Rpb24gbmF2aWdhdGlvbkFjdGlvbihXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pKTsKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIod2Via2l0V2ViVmlld0NyZWF0ZU5ld1BhZ2UobV93ZWJW
aWV3LCB3aW5kb3dGZWF0dXJlcywgJm5hdmlnYXRpb25BY3Rpb24pKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCBj
YTAyNWRmMzM4YzdhYTFmYTExNzA2YzM4MTEyZjI4ZGVhMzUwOTliLi40NjZlNzRiNWQ4ZjRkZTc5
ZmQxNjkyOGJkZDY1MTVhNDA3ZTJmYzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC00NjcsNyArNDY3LDcgQEAgYm9vbCBOYXZp
Z2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRl
bShXZWJQYWdlUHJveHkKICNlbmRpZgogCiAjaWYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspCi1z
dGF0aWMgdm9pZCB0cnlPcHRpbWl6aW5nTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBXZWJQYWdlUHJveHkmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorc3RhdGljIHZvaWQgdHJ5T3B0aW1pemluZ0xvYWQoUmVmPEFQSTo6TmF2aWdhdGlvbkFj
dGlvbj4mJiwgV2ViUGFnZVByb3h5JiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiB9CkBAIC00NzcsMTUg
KzQ3NywxNiBAQCBzdGF0aWMgdm9pZCB0cnlJbnRlcmNlcHROYXZpZ2F0aW9uKFJlZjxBUEk6Ok5h
dmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbgogewogI2lmIEhBVkUoQVBQX0xJTktT
KQogICAgIGlmIChuYXZpZ2F0aW9uQWN0aW9uLT5zaG91bGRPcGVuQXBwTGlua3MoKSkgewotICAg
ICAgICBhdXRvKiBsb2NhbENvbXBsZXRpb25IYW5kbGVyID0gbmV3IFdURjo6RnVuY3Rpb248dm9p
ZCAoYm9vbCk+KFtyZXF1ZXN0ID0gbmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVzdCgpLmlzb2xhdGVk
Q29weSgpLCB3ZWFrUGFnZSA9IG1ha2VXZWFrUHRyKHBhZ2UpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCBzdWNjZXNzKSBtdXRhYmxlIHsKKyAg
ICAgICAgYXV0byB1cmwgPSBuYXZpZ2F0aW9uQWN0aW9uLT5yZXF1ZXN0KCkudXJsKCk7CisgICAg
ICAgIGF1dG8qIGxvY2FsQ29tcGxldGlvbkhhbmRsZXIgPSBuZXcgV1RGOjpGdW5jdGlvbjx2b2lk
IChib29sKT4oW25hdmlnYXRpb25BY3Rpb24gPSBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCB3
ZWFrUGFnZSA9IG1ha2VXZWFrUHRyKHBhZ2UpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCBzdWNjZXNzKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MgJiYg
d2Vha1BhZ2UpIHsKLSAgICAgICAgICAgICAgICB0cnlPcHRpbWl6aW5nTG9hZChyZXF1ZXN0LCAq
d2Vha1BhZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgICAgICB0
cnlPcHRpbWl6aW5nTG9hZChXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCAqd2Vha1BhZ2UsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZXNzKTsKICAgICAg
ICAgfSk7Ci0gICAgICAgIFtMU0FwcExpbmsgb3BlbldpdGhVUkw6bmF2aWdhdGlvbkFjdGlvbi0+
cmVxdWVzdCgpLnVybCgpIGNvbXBsZXRpb25IYW5kbGVyOltsb2NhbENvbXBsZXRpb25IYW5kbGVy
XShCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKikgeworICAgICAgICBbTFNBcHBMaW5rIG9wZW5XaXRo
VVJMOnVybCBjb21wbGV0aW9uSGFuZGxlcjpbbG9jYWxDb21wbGV0aW9uSGFuZGxlcl0oQk9PTCBz
dWNjZXNzLCBOU0Vycm9yICopIHsKICAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIFtsb2NhbENvbXBsZXRpb25IYW5kbGVyLCBzdWNjZXNzXSB7CiAg
ICAgICAgICAgICAgICAgKCpsb2NhbENvbXBsZXRpb25IYW5kbGVyKShzdWNjZXNzKTsKICAgICAg
ICAgICAgICAgICBkZWxldGUgbG9jYWxDb21wbGV0aW9uSGFuZGxlcjsKQEAgLTQ5NSw3ICs0OTYs
NyBAQCBzdGF0aWMgdm9pZCB0cnlJbnRlcmNlcHROYXZpZ2F0aW9uKFJlZjxBUEk6Ok5hdmlnYXRp
b25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbgogICAgIH0KICNlbmRpZgogCi0gICAgdHJ5T3B0
aW1pemluZ0xvYWQobmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVzdCgpLCBwYWdlLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisgICAgdHJ5T3B0aW1pemluZ0xvYWQoV1RGTW92ZShuYXZpZ2F0
aW9uQWN0aW9uKSwgcGFnZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lk
IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgUmVmPEFQSTo6TmF2aWdhdGlv
bkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogdXNlckluZm8pCkBAIC01ODcsNyArNTg4LDcg
QEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24oV2ViUGFnZVAKICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmRv
d25sb2FkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBfV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5QWxsb3dXaXRob3V0VHJ5aW5nQXBwTGluazoKLSAgICAgICAgICAgIHRyeU9w
dGltaXppbmdMb2FkKG5hdmlnYXRpb25BY3Rpb24tPnJlcXVlc3QoKSwgd2ViUGFnZVByb3h5LCBb
bG9jYWxMaXN0ZW5lciA9IFdURk1vdmUobG9jYWxMaXN0ZW5lciksIHdlYnNpdGVQb2xpY2llcyA9
IFdURk1vdmUoYXBpV2Vic2l0ZVBvbGljaWVzKV0gKGJvb2wgb3B0aW1pemVkTG9hZCkgeworICAg
ICAgICAgICAgdHJ5T3B0aW1pemluZ0xvYWQoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgd2Vi
UGFnZVByb3h5LCBbbG9jYWxMaXN0ZW5lciA9IFdURk1vdmUobG9jYWxMaXN0ZW5lciksIHdlYnNp
dGVQb2xpY2llcyA9IFdURk1vdmUoYXBpV2Vic2l0ZVBvbGljaWVzKV0gKGJvb2wgb3B0aW1pemVk
TG9hZCkgewogICAgICAgICAgICAgICAgIGlmIChvcHRpbWl6ZWRMb2FkKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmlnbm9yZSgpOwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKaW5kZXgg
Y2NiNzhhMjllMmE0YzJmZjE2ZDQyNTI1YWU1ZTQ2MGE3ODliYjdhMy4uYWEzODE2ZmI4NzlmOWYy
YTA4NGY2NTU3MjM1ZjJhZTU3OTljMTEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1VJRGVsZWdhdGUuaApAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgLy8gQVBJOjpVSUNsaWVudAotICAgICAgICB2b2lkIGNyZWF0ZU5ld1BhZ2Uo
V2ViUGFnZVByb3h5JiwgUmVmPEFQSTo6RnJhbWVJbmZvPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmJiwgTmF2aWdhdGlvbkFjdGlvbkRhdGEm
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViUGFnZVByb3h5PiYmKT4mJikgZmlu
YWw7CisgICAgICAgIHZvaWQgY3JlYXRlTmV3UGFnZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdl
YkNvcmU6OldpbmRvd0ZlYXR1cmVzJiYsIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYlBhZ2VQcm94eT4mJik+JiYpIGZpbmFsOwog
ICAgICAgICB2b2lkIGNsb3NlKFdlYlBhZ2VQcm94eSopIGZpbmFsOwogICAgICAgICB2b2lkIGZ1
bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShXZWJQYWdlUHJveHkqKSBmaW5hbDsKICAgICAgICAg
dm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oV2ViUGFnZVByb3h5KikgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCBiNWEwYTUwOGJjOTk2ZDNj
OWE5N2Y5M2FmM2VhM2Y5MjUwOTdmNjY1Li5hNDFlZmFlNWJhZDQ0ZDExNmZlMjBiZDk0ODVlNjZm
OTQ4ZGRiMGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURl
bGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
bW0KQEAgLTIyNSw3ICsyMjUsNyBAQCBVSURlbGVnYXRlOjpVSUNsaWVudDo6flVJQ2xpZW50KCkK
IHsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZShXZWJQYWdl
UHJveHkmIHBhZ2UsIFJlZjxBUEk6OkZyYW1lSW5mbz4mJiBzb3VyY2VGcmFtZUluZm8sIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiYg
d2luZG93RmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRh
dGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYlBhZ2VQcm94eT4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdl
KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmJiB3aW5kb3dG
ZWF0dXJlcywgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJQYWdlUHJveHk+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0
ZS5nZXQoKTsKICAgICBBU1NFUlQoZGVsZWdhdGUpOwpAQCAtMjMzLDE2ICsyMzMsMTIgQEAgdm9p
ZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZShXZWJQYWdlUHJveHkmIHBhZ2Us
IFJlZjxBUEk6OkZyYW1lSW5mbz4KICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtt
X3VpRGVsZWdhdGUubV93ZWJWaWV3LT5fY29uZmlndXJhdGlvbiBjb3B5XSk7CiAgICAgW2NvbmZp
Z3VyYXRpb24gX3NldFJlbGF0ZWRXZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXddOwogCi0g
ICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwYWdlLnByb2Nlc3MoKS51c2VySW5pdGlh
dGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZp
ZXIpOwotICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIWhvc3RzQXJlRXF1YWwoc291cmNl
RnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJsKCksIHJlcXVlc3QudXJsKCkpOwotICAgIGF1dG8gYXBp
TmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUo
bmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZUluZm8ucHRyKCksIG51bGxwdHIsIFdU
Rjo6bnVsbG9wdCwgV1RGTW92ZShyZXF1ZXN0KSwgVVJMKCksIHNob3VsZE9wZW5BcHBMaW5rcywg
V1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKLQogICAgIGF1dG8gYXBpV2luZG93RmVh
dHVyZXMgPSBBUEk6OldpbmRvd0ZlYXR1cmVzOjpjcmVhdGUod2luZG93RmVhdHVyZXMpOwogCiAg
ICAgaWYgKG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3Q3JlYXRlV2ViVmll
d1dpdGhDb25maWd1cmF0aW9uRm9yTmF2aWdhdGlvbkFjdGlvbldpbmRvd0ZlYXR1cmVzQXN5bmMp
IHsKICAgICAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6
Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZpZXc6Y3JlYXRlV2ViVmlld1dp
dGhDb25maWd1cmF0aW9uOmZvck5hdmlnYXRpb25BY3Rpb246d2luZG93RmVhdHVyZXM6Y29tcGxl
dGlvbkhhbmRsZXI6KSk7CiAKLSAgICAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVs
ZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBjcmVhdGVXZWJWaWV3V2l0aENv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBmb3JOYXZpZ2F0aW9uQWN0aW9uOndyYXBw
ZXIoYXBpTmF2aWdhdGlvbkFjdGlvbikgd2luZG93RmVhdHVyZXM6d3JhcHBlcihhcGlXaW5kb3dG
ZWF0dXJlcykgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2Vy
KSwgcmVsYXRlZFdlYlZpZXcgPSBSZXRhaW5QdHI8V0tXZWJWaWV3PihtX3VpRGVsZWdhdGUubV93
ZWJWaWV3KV0gKFdLV2ViVmlldyAqd2ViVmlldykgbXV0YWJsZSB7CisgICAgICAgIFsoaWQgPFdL
VUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZp
ZXcgY3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgZm9y
TmF2aWdhdGlvbkFjdGlvbjp3cmFwcGVyKG5hdmlnYXRpb25BY3Rpb24pIHdpbmRvd0ZlYXR1cmVz
OndyYXBwZXIoYXBpV2luZG93RmVhdHVyZXMpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0
cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tl
ciA9IFdURk1vdmUoY2hlY2tlciksIHJlbGF0ZWRXZWJWaWV3ID0gUmV0YWluUHRyPFdLV2ViVmll
dz4obV91aURlbGVnYXRlLm1fd2ViVmlldyldIChXS1dlYlZpZXcgKndlYlZpZXcpIG11dGFibGUg
ewogICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxl
ZCgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGNoZWNrZXItPmRpZENh
bGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMjYyLDcgKzI1OCw3IEBAIHZvaWQgVUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OmNyZWF0ZU5ld1BhZ2UoV2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8QVBJOjpG
cmFtZUluZm8+CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmll
d0NyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlvbkZvck5hdmlnYXRpb25BY3Rpb25XaW5kb3dG
ZWF0dXJlcykKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogCi0g
ICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlE
ZWxlZ2F0ZS5tX3dlYlZpZXcgY3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb24uZ2V0KCkgZm9yTmF2aWdhdGlvbkFjdGlvbjp3cmFwcGVyKGFwaU5hdmlnYXRpb25BY3Rp
b24pIHdpbmRvd0ZlYXR1cmVzOndyYXBwZXIoYXBpV2luZG93RmVhdHVyZXMpXTsKKyAgICBSZXRh
aW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gW2RlbGVnYXRlIHdlYlZpZXc6bV91aURlbGVnYXRl
Lm1fd2ViVmlldyBjcmVhdGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKSBmb3JOYXZpZ2F0aW9uQWN0aW9uOndyYXBwZXIobmF2aWdhdGlvbkFjdGlvbikgd2luZG93
RmVhdHVyZXM6d3JhcHBlcihhcGlXaW5kb3dGZWF0dXJlcyldOwogICAgIGlmICghd2ViVmlldykK
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAxZjM5YzE0YWVhZWE5N2JjYjJjNjFm
NTEzNjU0ODJjMjQ5YjliZDI0Li5jNTVmNzIyMjg3ODdiYmU1OGY1ZDEyZDI4NTBjODNmZTcwNmJm
YmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTQ1OTUs
MTAgKzQ1OTUsMTggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKIAogICAgICAgICBhdXRvIG5h
dmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5h
dmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLmdldCgpLCBkZXN0aW5hdGlvbkZy
YW1lSW5mby5wdHIoKSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlcXVlc3QpLCBvcmlnaW5hbFJl
cXVlc3QudXJsKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0
aXZpdHkpLCBtYWluRnJhbWVOYXZpZ2F0aW9uKTsKIAorI2lmIEhBVkUoTE9BRF9PUFRJTUlaRVIp
CitXRUJQQUdFUFJPWFlfTE9BRE9QVElNSVpFUl9BRERJVElPTlNfMworI2VuZGlmCisKICAgICAg
ICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKCp0
aGlzLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBXVEZNb3ZlKGxpc3RlbmVyKSwgcHJvY2Vz
cy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwog
ICAgIH0KIAogICAgIG1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbiA9IGZhbHNlOworCisjaWYgSEFWRShMT0FEX09QVElNSVpFUikKK1dFQlBBR0VQ
Uk9YWV9MT0FET1BUSU1JWkVSX0FERElUSU9OU180CisjZW5kaWYKIH0KIAogV2ViUGFnZVByb3h5
KiBXZWJQYWdlUHJveHk6Om5vbkVwaGVtZXJhbFdlYlBhZ2VQcm94eSgpCkBAIC00ODg0LDE0ICs0
ODkyLDI0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRVcGRhdGVIaXN0b3J5VGl0bGUoY29uc3Qg
U3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsCiAKIC8vIFVJQ2xpZW50CiAKK3VzaW5n
IE5ld1BhZ2VDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYlBhZ2VQ
cm94eT4mJik+OwordXNpbmcgVUlDbGllbnRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmPEFQ
STo6TmF2aWdhdGlvbkFjdGlvbj4mJiwgTmV3UGFnZUNhbGxiYWNrJiYpPjsKK3N0YXRpYyB2b2lk
IHRyeU9wdGltaXppbmdMb2FkKFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlv
bkFjdGlvbiwgV2ViUGFnZVByb3h5JiBwYWdlLCBOZXdQYWdlQ2FsbGJhY2smJiBuZXdQYWdlQ2Fs
bGJhY2ssIFVJQ2xpZW50Q2FsbGJhY2smJiB1aUNsaWVudENhbGxiYWNrKQoreworI2lmIEhBVkUo
TE9BRF9PUFRJTUlaRVIpCitXRUJQQUdFUFJPWFlfTE9BRE9QVElNSVpFUl9BRERJVElPTlNfNgor
I2Vsc2UKKyAgICBBU1NFUlRfVU5VU0VEKHBhZ2UsIHBhZ2UucGFnZUlEKCkpOworICAgIHVpQ2xp
ZW50Q2FsbGJhY2soV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgV1RGTW92ZShuZXdQYWdlQ2Fs
bGJhY2spKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZShj
b25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9y
aWdpbmF0aW5nUGFnZUlELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXaW5kb3dGZWF0dXJl
cyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rp
b25EYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVw
bHkmJiByZXBseSkKIHsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgbV9wcm9jZXNzLT53
ZWJGcmFtZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCkpOwogICAgIGF1dG8gb3Jp
Z2luYXRpbmdGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJh
bWVJbmZvRGF0YSwgbV9wcm9jZXNzLT53ZWJQYWdlKG9yaWdpbmF0aW5nUGFnZUlEKSk7Ci0KICAg
ICBhdXRvIG1haW5GcmFtZVVSTCA9IG1fbWFpbkZyYW1lLT51cmwoKTsKLQotICAgIG1fdWlDbGll
bnQtPmNyZWF0ZU5ld1BhZ2UoKnRoaXMsIFdURk1vdmUob3JpZ2luYXRpbmdGcmFtZUluZm8pLCBX
VEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHdpbmRvd0ZlYXR1cmVzKSwgV1RGTW92ZShuYXZpZ2F0
aW9uQWN0aW9uRGF0YSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1h
aW5GcmFtZVVSTCwgcmVxdWVzdCwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKFJlZlB0cjxXZWJQ
YWdlUHJveHk+IG5ld1BhZ2UpIG11dGFibGUgeworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIg
PSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWluRnJhbWVVUkwsIHJl
cXVlc3QsIHJlcGx5ID0gV1RGTW92ZShyZXBseSldIChSZWZQdHI8V2ViUGFnZVByb3h5PiBuZXdQ
YWdlKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFuZXdQYWdlKSB7CiAgICAgICAgICAgICByZXBs
eSgwLCBXVEY6Om51bGxvcHQpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDkwMyw2ICs0OTIx
LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0Rh
dGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwKIAogICAgICAgICBXZWJzaXRlRGF0YVN0b3Jl
OjpjbG9uZVNlc3Npb25EYXRhKCp0aGlzLCAqbmV3UGFnZSk7CiAgICAgICAgIG5ld1BhZ2UtPm1f
c2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9IGhv
c3RzQXJlRXF1YWwoVVJMKHsgfSwgbWFpbkZyYW1lVVJMKSwgcmVxdWVzdC51cmwoKSk7CisKKyNp
ZiBIQVZFKExPQURfT1BUSU1JWkVSKQorV0VCUEFHRVBST1hZX0xPQURPUFRJTUlaRVJfQURESVRJ
T05TXzUKKyNlbmRpZgorICAgIH07CisKKyAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9
IG1fcHJvY2Vzcy0+dXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVz
ZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKKyAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9
ICFob3N0c0FyZUVxdWFsKG9yaWdpbmF0aW5nRnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJsKCksIHJl
cXVlc3QudXJsKCkpOworICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlv
bkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBvcmlnaW5hdGlu
Z0ZyYW1lSW5mby5wdHIoKSwgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlcXVlc3Qp
LCBVUkwoKSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0
eSkpOworCisgICAgdHJ5T3B0aW1pemluZ0xvYWQoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwg
KnRoaXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCB3aW5kb3dGZWF0dXJlcyA9IFdURk1vdmUod2luZG93RmVhdHVyZXMp
XSAoUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJQYWdlUHJveHk+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSBtdXRhYmxlIHsKKyAgICAgICAgbV91aUNsaWVudC0+Y3JlYXRlTmV3UGFnZSgqdGhpcywg
V1RGTW92ZSh3aW5kb3dGZWF0dXJlcyksIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMjE1NWQxNDJlNDRmYmE1NDQ1OGJjNzFmNTM5MWJl
NmUwOWI0ZTgwMy4uZWQ2ZjQ2ZTM2YjJjN2I4NmRlOWZhNWM5NGYxMGI2MjM5MjdjOTEzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEzNSw2ICsxMzUsMTAgQEAg
T0JKQ19DTEFTUyBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKICNpbmNsdWRlIDxXZWJDb3JlL1dl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQuaD4KICNlbmRpZgogCisjaWYgVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvV2ViUGFnZVByb3h5QWRkaXRp
b25zLmg+CisjZW5kaWYKKwogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgTWVkaWFTZXNzaW9uTWV0YWRhdGE7CkBAIC0xNDcyLDYgKzE0NzYsMTAg
QEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoV2ViVmlld0RpZE1vdmVUb1dpbmRv
d09ic2VydmVyJik7CiAgICAgdm9pZCB3ZWJWaWV3RGlkTW92ZVRvV2luZG93KCk7CiAKKyNpZiBI
QVZFKExPQURfT1BUSU1JWkVSKQorV0VCUEFHRVBST1hZX0xPQURPUFRJTUlaRVJfQURESVRJT05T
XzEKKyNlbmRpZgorCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICAvLyBJbXBsZW1l
bnRlZCBpbiBnZW5lcmF0ZWQgV2ViUGFnZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3Zl
cnJpZGU7CkBAIC0yMTc4LDYgKzIxODYsMTAgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgbV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVlc3Q7CiAgICAgYm9vbCBt
X3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24geyBm
YWxzZSB9OwogCisjaWYgSEFWRShMT0FEX09QVElNSVpFUikKK1dFQlBBR0VQUk9YWV9MT0FET1BU
SU1JWkVSX0FERElUSU9OU18yCisjZW5kaWYKKwogICAgIERlcXVlPE5hdGl2ZVdlYk1vdXNlRXZl
bnQ+IG1fbW91c2VFdmVudFF1ZXVlOwogICAgIERlcXVlPE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ+
IG1fa2V5RXZlbnRRdWV1ZTsKICAgICBEZXF1ZTxOYXRpdmVXZWJXaGVlbEV2ZW50PiBtX3doZWVs
RXZlbnRRdWV1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364178</attachid>
            <date>2019-03-10 00:28:26 -0800</date>
            <delta_ts>2019-03-10 20:41:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195516-20190310002825.patch</filename>
            <type>text/plain</type>
            <size>23103</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJkNDliOWMwM2UzOGI0YWFm
ZmEyNTVhMTE5NDJjZTM1ZTc1YmI0ZjYuLmFlN2RjMTlkZGQ0ZDczODZjOTNjN2E0MzhiMjdiZDBi
OTZmYjMxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTktMDMtMDkgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6aW5nIGxvYWRzIHdo
ZW4gY3JlYXRpbmcgbmV3IHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTU1MTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4NzM4MDg2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcyBob29rcyBpbiBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UgdG8gb3B0aW1pemUg
bG9hZHMsIGFuZCBtb3ZlcyB0aGUgY3JlYXRpb25QYXJhbWV0ZXJzCisgICAgICAgIG9mIEFQSTo6
TmF2aWdhdGlvbkFjdGlvbiBmcm9tIFVJIGNsaWVudHMgdG8gV2ViUGFnZVByb3h5OjpjcmVhdGVO
ZXdQYWdlLiBBbHNvLCB3ZSBub3cgcGFzcyB0aGUgd2hvbGUKKyAgICAgICAgQVBJOjpOYXZpZ2F0
aW9uQWN0aW9uIHRvIHRoZSBsb2FkIG9wdGltaXplciBpbnN0ZWFkIG9mIHRoZSByZXF1ZXN0IHdp
dGhpbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlD
bGllbnQ6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6OnRyeU9wdGltaXppbmdMb2Fk
KToKKyAgICAgICAgKFdlYktpdDo6dHJ5SW50ZXJjZXB0TmF2aWdhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdl
YktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0Ojp0cnlP
cHRpbWl6aW5nTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3
UGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCiAyMDE5LTAzLTA1
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2Ug
U2VydmljZVdvcmtlckZldGNoVGFzawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgKaW5kZXggZTdjZjA4MTJkNmNkMGFlODBhMjQ2ZTM2YTRl
NzJkZTRmZTc4Y2VkYi4uYzE1MjhmOGI1MTUyYWY1ZmE3ODEyN2ZjNTYxODdmYzA3OTJmNzU3ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlv
bi5oCkBAIC0zMyw2ICszMywxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0
Lmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
KyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQVBJTmF2aWdhdGlvbkFjdGlvbkFkZGl0aW9ucy5o
PgorI2VuZGlmCisKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uIGZp
bmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpOYXZpZ2F0aW9uQWN0aW9uPiB7
CkBAIC02NSw2ICs2OSwxMCBAQCBwdWJsaWM6CiAKICAgICBOYXZpZ2F0aW9uKiBtYWluRnJhbWVO
YXZpZ2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYWluRnJhbWVOYXZpZ2F0aW9uLmdldCgpOyB9
CiAKKyNpZiBIQVZFKExPQURfT1BUSU1JWkVSKQorQVBJTkFWSUdBVElPTkFDVElPTl9MT0FET1BU
SU1JWkVSX0FERElUSU9OU18xCisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOYXZpZ2F0aW9uQWN0
aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwg
QVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyogdGFyZ2V0RnJhbWUs
IE9wdGlvbmFsPFdURjo6U3RyaW5nPiB0YXJnZXRGcmFtZU5hbWUsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdURjo6VVJMJiBvcmlnaW5hbFVSTCwgYm9vbCBzaG91
bGRPcGVuQXBwTGlua3MsIFJlZlB0cjxVc2VySW5pdGlhdGVkQWN0aW9uPiYmIHVzZXJJbml0aWF0
ZWRBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICAgICAg
OiBtX3NvdXJjZUZyYW1lKHNvdXJjZUZyYW1lKQpAQCAtOTIsNiArMTAwLDkgQEAgcHJpdmF0ZToK
ICAgICBXVEY6OlVSTCBtX29yaWdpbmFsVVJMOwogCiAgICAgYm9vbCBtX3Nob3VsZE9wZW5BcHBM
aW5rczsKKyNpZiBIQVZFKExPQURfT1BUSU1JWkVSKQorQVBJTkFWSUdBVElPTkFDVElPTl9MT0FE
T1BUSU1JWkVSX0FERElUSU9OU18yCisjZW5kaWYKIAogICAgIFJlZlB0cjxVc2VySW5pdGlhdGVk
QWN0aW9uPiBtX3VzZXJJbml0aWF0ZWRBY3Rpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVVJQ2xpZW50LmgKaW5kZXggM2VjNmYwMGQyNGZjOTM5NDI2OTBhM2U3MjlmZDA3ZWQ3
YTNhYTZjNy4uM2I1NzdhOGE2MmI2OGQ3YjM3NmQwYWU0MjkzYzQwNDBkNmJlYjBiMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKQEAgLTczLDcgKzczLDcgQEAg
Y2xhc3MgVUlDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgflVJQ2xpZW50KCkgeyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlTmV3UGFnZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFJl
ZjxGcmFtZUluZm8+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpXaW5k
b3dGZWF0dXJlcyYmLCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVOZXdQYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6V2luZG93RmVh
dHVyZXMmJiwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSB7IGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNob3dQ
YWdlKFdlYktpdDo6V2ViUGFnZVByb3h5KikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGZ1bGxzY3Jl
ZW5NYXlSZXR1cm5Ub0lubGluZShXZWJLaXQ6OldlYlBhZ2VQcm94eSopIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oV2ViS2l0OjpXZWJQYWdlUHJveHkqKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IGE0MTY3NjZlMmIzODNl
MWI1MTQ0OGZjOWNjNDAyYzAxZjFiZWIzYWEuLmZmODkzODI5NWYyN2I5YzAzMjgwY2FjNDhiOWRk
MWQ3M2RlOGJhMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApA
QCAtMTQ3NCwxOSArMTQ3NCwxNSBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VS
ZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAgICAgICB9
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGNyZWF0ZU5ld1BhZ2UoV2ViUGFnZVByb3h5
JiBwYWdlLCBSZWY8QVBJOjpGcmFtZUluZm8+JiYgc291cmNlRnJhbWVJbmZvLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZXNvdXJjZVJlcXVlc3QsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVz
JiYgd2luZG93RmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlv
bkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYlBhZ2VQcm94eT4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHZvaWQgY3JlYXRlTmV3UGFnZShXZWJQ
YWdlUHJveHkmIHBhZ2UsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiYgd2luZG93RmVhdHVyZXMs
IFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViUGFnZVByb3h5PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fY2xpZW50LmNyZWF0ZU5ld1Bh
Z2UpIHsKICAgICAgICAgICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBwYWdlLmNvbmZpZ3Vy
YXRpb24oKS5jb3B5KCk7CiAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0UmVsYXRl
ZFBhZ2UoJnBhZ2UpOwogCi0gICAgICAgICAgICAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZp
dHkgPSBwYWdlLnByb2Nlc3MoKS51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlv
bkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwotICAgICAgICAgICAgICAgIGJvb2wg
c2hvdWxkT3BlbkFwcExpbmtzID0gIWhvc3RzQXJlRXF1YWwoc291cmNlRnJhbWVJbmZvLT5yZXF1
ZXN0KCkudXJsKCksIHJlc291cmNlUmVxdWVzdC51cmwoKSk7Ci0gICAgICAgICAgICAgICAgYXV0
byBhcGlOYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RG
TW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5wdHIoKSwgbnVsbHB0
ciwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksIFVSTCgpLCBzaG91bGRP
cGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7Ci0KICAgICAgICAg
ICAgICAgICBhdXRvIGFwaVdpbmRvd0ZlYXR1cmVzID0gQVBJOjpXaW5kb3dGZWF0dXJlczo6Y3Jl
YXRlKHdpbmRvd0ZlYXR1cmVzKTsKIAotICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihhZG9wdFJlZih0b0ltcGwobV9jbGllbnQuY3JlYXRlTmV3UGFnZSh0b0FQSSgmcGFn
ZSksIHRvQVBJKGNvbmZpZ3VyYXRpb24ucHRyKCkpLCB0b0FQSShhcGlOYXZpZ2F0aW9uQWN0aW9u
LnB0cigpKSwgdG9BUEkoYXBpV2luZG93RmVhdHVyZXMucHRyKCkpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pKSkpOworICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihh
ZG9wdFJlZih0b0ltcGwobV9jbGllbnQuY3JlYXRlTmV3UGFnZSh0b0FQSSgmcGFnZSksIHRvQVBJ
KGNvbmZpZ3VyYXRpb24ucHRyKCkpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLnB0cigpKSwgdG9B
UEkoYXBpV2luZG93RmVhdHVyZXMucHRyKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKSkp
OwogICAgICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5jcmVh
dGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEgfHwgbV9jbGllbnQuY3JlYXRlTmV3UGFn
ZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKSB7CkBAIC0xNTEwLDEyICsxNTA2LDEyIEBAIHZvaWQg
V0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNs
aWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAgICAgICAgUmVmPEFQSTo6RGljdGlvbmFyeT4g
ZmVhdHVyZXNNYXAgPSBBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShXVEZNb3ZlKG1hcCkpOwogCiAg
ICAgICAgICAgICAgICAgaWYgKG1fY2xpZW50LmNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVz
ZVdpdGhWMSkgewotICAgICAgICAgICAgICAgICAgICBSZWY8QVBJOjpVUkxSZXF1ZXN0PiByZXF1
ZXN0ID0gQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUocmVzb3VyY2VSZXF1ZXN0KTsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGFkb3B0UmVmKHRvSW1wbChtX2Ns
aWVudC5jcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEodG9BUEkoJnBhZ2UpLCB0
b0FQSShyZXF1ZXN0LnB0cigpKSwgdG9BUEkoZmVhdHVyZXNNYXAucHRyKCkpLCB0b0FQSShuYXZp
Z2F0aW9uQWN0aW9uRGF0YS5tb2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5t
b3VzZUJ1dHRvbiksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpKSk7CisgICAgICAgICAgICAg
ICAgICAgIFJlZjxBUEk6OlVSTFJlcXVlc3Q+IHJlcXVlc3QgPSBBUEk6OlVSTFJlcXVlc3Q6OmNy
ZWF0ZShuYXZpZ2F0aW9uQWN0aW9uLT5yZXF1ZXN0KCkpOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNyZWF0ZU5l
d1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSh0b0FQSSgmcGFnZSksIHRvQVBJKHJlcXVlc3Qu
cHRyKCkpLCB0b0FQSShmZWF0dXJlc01hcC5wdHIoKSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24t
Pm1vZGlmaWVycygpKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi0+bW91c2VCdXR0b24oKSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbykpKSk7CiAgICAgICAgICAgICAgICAgfQogICAgIAogICAg
ICAgICAgICAgICAgIEFTU0VSVChtX2NsaWVudC5jcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjApOwotICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihhZG9w
dFJlZih0b0ltcGwobV9jbGllbnQuY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYw
KHRvQVBJKCZwYWdlKSwgdG9BUEkoZmVhdHVyZXNNYXAucHRyKCkpLCB0b0FQSShuYXZpZ2F0aW9u
QWN0aW9uRGF0YS5tb2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3VzZUJ1
dHRvbiksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpKSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC5jcmVhdGVOZXdQ
YWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAodG9BUEkoJnBhZ2UpLCB0b0FQSShmZWF0dXJlc01h
cC5wdHIoKSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPm1vZGlmaWVycygpKSwgdG9BUEkobmF2
aWdhdGlvbkFjdGlvbi0+bW91c2VCdXR0b24oKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykp
KSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxw
dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
VUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlD
bGllbnQuY3BwCmluZGV4IGM4MzBmNWE5MWRkZjdmOTFjNmJiOGZmZmJmNDdiMmY1ODRiYWY0MDEu
LjViY2VmNjhmNjVkMjMxODk4MGNmOTFkYWU1OTNkNzY2NzE0OGE5ODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKQEAgLTUw
LDEwICs1MCw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBjcmVhdGVO
ZXdQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPEFQSTo6RnJhbWVJbmZvPiYmIGZyYW1lSW5m
bywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVzb3VyY2VSZXF1ZXN0LCBXZWJDb3JlOjpX
aW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5h
dmlnYXRpb25BY3Rpb25EYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJQYWdl
UHJveHk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgIHZvaWQgY3JlYXRlTmV3
UGFnZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiYgd2luZG93
RmVhdHVyZXMsIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgYXBpTmF2aWdhdGlvbkFjdGlv
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViUGFnZVByb3h5PiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgZmluYWwKICAgICB7Ci0gICAgICAgIGF1dG8gdXNlckluaXRpYXRlZEFj
dGl2aXR5ID0gcGFnZS5wcm9jZXNzKCkudXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25B
Y3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKLSAgICAgICAgV2ViS2l0TmF2
aWdhdGlvbkFjdGlvbiBuYXZpZ2F0aW9uQWN0aW9uKEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3Jl
YXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBmcmFtZUluZm8ucHRyKCksIG51bGxw
dHIsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBVUkwgeyB9LCBmYWxz
ZSwgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKSk7CisgICAgICAgIFdlYktpdE5hdmln
YXRpb25BY3Rpb24gbmF2aWdhdGlvbkFjdGlvbihXVEZNb3ZlKGFwaU5hdmlnYXRpb25BY3Rpb24p
KTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod2Via2l0V2ViVmlld0NyZWF0ZU5ld1BhZ2Uo
bV93ZWJWaWV3LCB3aW5kb3dGZWF0dXJlcywgJm5hdmlnYXRpb25BY3Rpb24pKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpp
bmRleCBjYTAyNWRmMzM4YzdhYTFmYTExNzA2YzM4MTEyZjI4ZGVhMzUwOTliLi40NjZlNzRiNWQ4
ZjRkZTc5ZmQxNjkyOGJkZDY1MTVhNDA3ZTJmYzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC00NjcsNyArNDY3LDcgQEAgYm9v
bCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndpbGxHb1RvQmFja0ZvcndhcmRM
aXN0SXRlbShXZWJQYWdlUHJveHkKICNlbmRpZgogCiAjaWYgIVVTRShBUFBMRV9JTlRFUk5BTF9T
REspCi1zdGF0aWMgdm9pZCB0cnlPcHRpbWl6aW5nTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBXZWJQYWdlUHJveHkmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorc3RhdGljIHZvaWQgdHJ5T3B0aW1pemluZ0xvYWQoUmVmPEFQSTo6TmF2aWdh
dGlvbkFjdGlvbj4mJiwgV2ViUGFnZVByb3h5JiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiB9CkBAIC00
NzcsMTUgKzQ3NywxNiBAQCBzdGF0aWMgdm9pZCB0cnlJbnRlcmNlcHROYXZpZ2F0aW9uKFJlZjxB
UEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbgogewogI2lmIEhBVkUoQVBQ
X0xJTktTKQogICAgIGlmIChuYXZpZ2F0aW9uQWN0aW9uLT5zaG91bGRPcGVuQXBwTGlua3MoKSkg
ewotICAgICAgICBhdXRvKiBsb2NhbENvbXBsZXRpb25IYW5kbGVyID0gbmV3IFdURjo6RnVuY3Rp
b248dm9pZCAoYm9vbCk+KFtyZXF1ZXN0ID0gbmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVzdCgpLmlz
b2xhdGVkQ29weSgpLCB3ZWFrUGFnZSA9IG1ha2VXZWFrUHRyKHBhZ2UpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCBzdWNjZXNzKSBtdXRhYmxl
IHsKKyAgICAgICAgYXV0byB1cmwgPSBuYXZpZ2F0aW9uQWN0aW9uLT5yZXF1ZXN0KCkudXJsKCk7
CisgICAgICAgIGF1dG8qIGxvY2FsQ29tcGxldGlvbkhhbmRsZXIgPSBuZXcgV1RGOjpGdW5jdGlv
bjx2b2lkIChib29sKT4oW25hdmlnYXRpb25BY3Rpb24gPSBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rp
b24pLCB3ZWFrUGFnZSA9IG1ha2VXZWFrUHRyKHBhZ2UpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCBzdWNjZXNzKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgICAgICBpZiAoIXN1Y2Nl
c3MgJiYgd2Vha1BhZ2UpIHsKLSAgICAgICAgICAgICAgICB0cnlPcHRpbWl6aW5nTG9hZChyZXF1
ZXN0LCAqd2Vha1BhZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAg
ICAgICB0cnlPcHRpbWl6aW5nTG9hZChXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCAqd2Vha1Bh
Z2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZXNzKTsK
ICAgICAgICAgfSk7Ci0gICAgICAgIFtMU0FwcExpbmsgb3BlbldpdGhVUkw6bmF2aWdhdGlvbkFj
dGlvbi0+cmVxdWVzdCgpLnVybCgpIGNvbXBsZXRpb25IYW5kbGVyOltsb2NhbENvbXBsZXRpb25I
YW5kbGVyXShCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKikgeworICAgICAgICBbTFNBcHBMaW5rIG9w
ZW5XaXRoVVJMOnVybCBjb21wbGV0aW9uSGFuZGxlcjpbbG9jYWxDb21wbGV0aW9uSGFuZGxlcl0o
Qk9PTCBzdWNjZXNzLCBOU0Vycm9yICopIHsKICAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtsb2NhbENvbXBsZXRpb25IYW5kbGVyLCBzdWNjZXNz
XSB7CiAgICAgICAgICAgICAgICAgKCpsb2NhbENvbXBsZXRpb25IYW5kbGVyKShzdWNjZXNzKTsK
ICAgICAgICAgICAgICAgICBkZWxldGUgbG9jYWxDb21wbGV0aW9uSGFuZGxlcjsKQEAgLTQ5NSw3
ICs0OTYsNyBAQCBzdGF0aWMgdm9pZCB0cnlJbnRlcmNlcHROYXZpZ2F0aW9uKFJlZjxBUEk6Ok5h
dmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbgogICAgIH0KICNlbmRpZgogCi0gICAg
dHJ5T3B0aW1pemluZ0xvYWQobmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVzdCgpLCBwYWdlLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgdHJ5T3B0aW1pemluZ0xvYWQoV1RGTW92ZShu
YXZpZ2F0aW9uQWN0aW9uKSwgcGFnZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQog
CiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgUmVmPEFQSTo6TmF2
aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0
ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogdXNlckluZm8pCkBAIC01ODcsNyAr
NTg4LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViUGFnZVAKICAgICAgICAgICAgIGxvY2FsTGlzdGVu
ZXItPmRvd25sb2FkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBfV0tOYXZp
Z2F0aW9uQWN0aW9uUG9saWN5QWxsb3dXaXRob3V0VHJ5aW5nQXBwTGluazoKLSAgICAgICAgICAg
IHRyeU9wdGltaXppbmdMb2FkKG5hdmlnYXRpb25BY3Rpb24tPnJlcXVlc3QoKSwgd2ViUGFnZVBy
b3h5LCBbbG9jYWxMaXN0ZW5lciA9IFdURk1vdmUobG9jYWxMaXN0ZW5lciksIHdlYnNpdGVQb2xp
Y2llcyA9IFdURk1vdmUoYXBpV2Vic2l0ZVBvbGljaWVzKV0gKGJvb2wgb3B0aW1pemVkTG9hZCkg
eworICAgICAgICAgICAgdHJ5T3B0aW1pemluZ0xvYWQoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9u
KSwgd2ViUGFnZVByb3h5LCBbbG9jYWxMaXN0ZW5lciA9IFdURk1vdmUobG9jYWxMaXN0ZW5lciks
IHdlYnNpdGVQb2xpY2llcyA9IFdURk1vdmUoYXBpV2Vic2l0ZVBvbGljaWVzKV0gKGJvb2wgb3B0
aW1pemVkTG9hZCkgewogICAgICAgICAgICAgICAgIGlmIChvcHRpbWl6ZWRMb2FkKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmlnbm9yZSgpOwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
SURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgK
aW5kZXggY2NiNzhhMjllMmE0YzJmZjE2ZDQyNTI1YWU1ZTQ2MGE3ODliYjdhMy4uYWEzODE2ZmI4
NzlmOWYyYTA4NGY2NTU3MjM1ZjJhZTU3OTljMTEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgLy8gQVBJOjpVSUNsaWVudAotICAgICAgICB2b2lkIGNyZWF0ZU5l
d1BhZ2UoV2ViUGFnZVByb3h5JiwgUmVmPEFQSTo6RnJhbWVJbmZvPiYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmJiwgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViUGFnZVByb3h5PiYmKT4m
JikgZmluYWw7CisgICAgICAgIHZvaWQgY3JlYXRlTmV3UGFnZShXZWJLaXQ6OldlYlBhZ2VQcm94
eSYsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiYsIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYlBhZ2VQcm94eT4mJik+JiYpIGZp
bmFsOwogICAgICAgICB2b2lkIGNsb3NlKFdlYlBhZ2VQcm94eSopIGZpbmFsOwogICAgICAgICB2
b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShXZWJQYWdlUHJveHkqKSBmaW5hbDsKICAg
ICAgICAgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oV2ViUGFnZVByb3h5KikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCBiNWEwYTUwOGJj
OTk2ZDNjOWE5N2Y5M2FmM2VhM2Y5MjUwOTdmNjY1Li5hNDFlZmFlNWJhZDQ0ZDExNmZlMjBiZDk0
ODVlNjZmOTQ4ZGRiMGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUubW0KQEAgLTIyNSw3ICsyMjUsNyBAQCBVSURlbGVnYXRlOjpVSUNsaWVudDo6flVJQ2xp
ZW50KCkKIHsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZShX
ZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxBUEk6OkZyYW1lSW5mbz4mJiBzb3VyY2VGcmFtZUluZm8s
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OldpbmRvd0ZlYXR1
cmVzJiYgd2luZG93RmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFj
dGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYlBhZ2VQcm94eT4mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjcmVhdGVO
ZXdQYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmJiB3
aW5kb3dGZWF0dXJlcywgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0
aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJQYWdlUHJveHk+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdhdGUubV9k
ZWxlZ2F0ZS5nZXQoKTsKICAgICBBU1NFUlQoZGVsZWdhdGUpOwpAQCAtMjMzLDE2ICsyMzMsMTIg
QEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZShXZWJQYWdlUHJveHkm
IHBhZ2UsIFJlZjxBUEk6OkZyYW1lSW5mbz4KICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFttX3VpRGVsZWdhdGUubV93ZWJWaWV3LT5fY29uZmlndXJhdGlvbiBjb3B5XSk7CiAgICAg
W2NvbmZpZ3VyYXRpb24gX3NldFJlbGF0ZWRXZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXdd
OwogCi0gICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwYWdlLnByb2Nlc3MoKS51c2Vy
SW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklk
ZW50aWZpZXIpOwotICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIWhvc3RzQXJlRXF1YWwo
c291cmNlRnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJsKCksIHJlcXVlc3QudXJsKCkpOwotICAgIGF1
dG8gYXBpTmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdU
Rk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZUluZm8ucHRyKCksIG51bGxw
dHIsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShyZXF1ZXN0KSwgVVJMKCksIHNob3VsZE9wZW5BcHBM
aW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKLQogICAgIGF1dG8gYXBpV2lu
ZG93RmVhdHVyZXMgPSBBUEk6OldpbmRvd0ZlYXR1cmVzOjpjcmVhdGUod2luZG93RmVhdHVyZXMp
OwogCiAgICAgaWYgKG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3Q3JlYXRl
V2ViVmlld1dpdGhDb25maWd1cmF0aW9uRm9yTmF2aWdhdGlvbkFjdGlvbldpbmRvd0ZlYXR1cmVz
QXN5bmMpIHsKICAgICAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hl
Y2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZpZXc6Y3JlYXRlV2Vi
Vmlld1dpdGhDb25maWd1cmF0aW9uOmZvck5hdmlnYXRpb25BY3Rpb246d2luZG93RmVhdHVyZXM6
Y29tcGxldGlvbkhhbmRsZXI6KSk7CiAKLSAgICAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0
ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBjcmVhdGVXZWJWaWV3
V2l0aENvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBmb3JOYXZpZ2F0aW9uQWN0aW9u
OndyYXBwZXIoYXBpTmF2aWdhdGlvbkFjdGlvbikgd2luZG93RmVhdHVyZXM6d3JhcHBlcihhcGlX
aW5kb3dGZWF0dXJlcykgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShj
aGVja2VyKSwgcmVsYXRlZFdlYlZpZXcgPSBSZXRhaW5QdHI8V0tXZWJWaWV3PihtX3VpRGVsZWdh
dGUubV93ZWJWaWV3KV0gKFdLV2ViVmlldyAqd2ViVmlldykgbXV0YWJsZSB7CisgICAgICAgIFso
aWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5t
X3dlYlZpZXcgY3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCkgZm9yTmF2aWdhdGlvbkFjdGlvbjp3cmFwcGVyKG5hdmlnYXRpb25BY3Rpb24pIHdpbmRvd0Zl
YXR1cmVzOndyYXBwZXIoYXBpV2luZG93RmVhdHVyZXMpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VC
bG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
Y2hlY2tlciA9IFdURk1vdmUoY2hlY2tlciksIHJlbGF0ZWRXZWJWaWV3ID0gUmV0YWluUHRyPFdL
V2ViVmlldz4obV91aURlbGVnYXRlLm1fd2ViVmlldyldIChXS1dlYlZpZXcgKndlYlZpZXcpIG11
dGFibGUgewogICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVl
bkNhbGxlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGNoZWNrZXIt
PmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMjYyLDcgKzI1OCw3IEBAIHZvaWQgVUlE
ZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5ld1BhZ2UoV2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8
QVBJOjpGcmFtZUluZm8+CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld0NyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlvbkZvck5hdmlnYXRpb25BY3Rpb25X
aW5kb3dGZWF0dXJlcykKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIp
OwogCi0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IFtkZWxlZ2F0ZSB3ZWJWaWV3
Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgY3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCkgZm9yTmF2aWdhdGlvbkFjdGlvbjp3cmFwcGVyKGFwaU5hdmlnYXRp
b25BY3Rpb24pIHdpbmRvd0ZlYXR1cmVzOndyYXBwZXIoYXBpV2luZG93RmVhdHVyZXMpXTsKKyAg
ICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gW2RlbGVnYXRlIHdlYlZpZXc6bV91aURl
bGVnYXRlLm1fd2ViVmlldyBjcmVhdGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKSBmb3JOYXZpZ2F0aW9uQWN0aW9uOndyYXBwZXIobmF2aWdhdGlvbkFjdGlvbikg
d2luZG93RmVhdHVyZXM6d3JhcHBlcihhcGlXaW5kb3dGZWF0dXJlcyldOwogICAgIGlmICghd2Vi
VmlldykKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAxZjM5YzE0YWVhZWE5N2Jj
YjJjNjFmNTEzNjU0ODJjMjQ5YjliZDI0Li5jNTVmNzIyMjg3ODdiYmU1OGY1ZDEyZDI4NTBjODNm
ZTcwNmJmYmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTQ1OTUsMTAgKzQ1OTUsMTggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKIAogICAgICAgICBh
dXRvIG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZN
b3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLmdldCgpLCBkZXN0aW5h
dGlvbkZyYW1lSW5mby5wdHIoKSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlcXVlc3QpLCBvcmln
aW5hbFJlcXVlc3QudXJsKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlh
dGVkQWN0aXZpdHkpLCBtYWluRnJhbWVOYXZpZ2F0aW9uKTsKIAorI2lmIEhBVkUoTE9BRF9PUFRJ
TUlaRVIpCitXRUJQQUdFUFJPWFlfTE9BRE9QVElNSVpFUl9BRERJVElPTlNfMworI2VuZGlmCisK
ICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKCp0aGlzLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBXVEZNb3ZlKGxpc3RlbmVyKSwg
cHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0
KCkpOwogICAgIH0KIAogICAgIG1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRp
b25Qb2xpY3lEZWNpc2lvbiA9IGZhbHNlOworCisjaWYgSEFWRShMT0FEX09QVElNSVpFUikKK1dF
QlBBR0VQUk9YWV9MT0FET1BUSU1JWkVSX0FERElUSU9OU180CisjZW5kaWYKIH0KIAogV2ViUGFn
ZVByb3h5KiBXZWJQYWdlUHJveHk6Om5vbkVwaGVtZXJhbFdlYlBhZ2VQcm94eSgpCkBAIC00ODg0
LDE0ICs0ODkyLDI0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRVcGRhdGVIaXN0b3J5VGl0bGUo
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsCiAKIC8vIFVJQ2xpZW50CiAK
K3VzaW5nIE5ld1BhZ2VDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdl
YlBhZ2VQcm94eT4mJik+OwordXNpbmcgVUlDbGllbnRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQo
UmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiwgTmV3UGFnZUNhbGxiYWNrJiYpPjsKK3N0YXRp
YyB2b2lkIHRyeU9wdGltaXppbmdMb2FkKFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2
aWdhdGlvbkFjdGlvbiwgV2ViUGFnZVByb3h5JiBwYWdlLCBOZXdQYWdlQ2FsbGJhY2smJiBuZXdQ
YWdlQ2FsbGJhY2ssIFVJQ2xpZW50Q2FsbGJhY2smJiB1aUNsaWVudENhbGxiYWNrKQoreworI2lm
IEhBVkUoTE9BRF9PUFRJTUlaRVIpCitXRUJQQUdFUFJPWFlfTE9BRE9QVElNSVpFUl9BRERJVElP
TlNfNgorI2Vsc2UKKyAgICBBU1NFUlRfVU5VU0VEKHBhZ2UsIHBhZ2UucGFnZUlEKCkpOworICAg
IHVpQ2xpZW50Q2FsbGJhY2soV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgV1RGTW92ZShuZXdQ
YWdlQ2FsbGJhY2spKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3
UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2
NF90IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXaW5kb3dG
ZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRp
b25BY3Rpb25EYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxh
eWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgbV9wcm9j
ZXNzLT53ZWJGcmFtZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCkpOwogICAgIGF1
dG8gb3JpZ2luYXRpbmdGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdpbmF0
aW5nRnJhbWVJbmZvRGF0YSwgbV9wcm9jZXNzLT53ZWJQYWdlKG9yaWdpbmF0aW5nUGFnZUlEKSk7
Ci0KICAgICBhdXRvIG1haW5GcmFtZVVSTCA9IG1fbWFpbkZyYW1lLT51cmwoKTsKLQotICAgIG1f
dWlDbGllbnQtPmNyZWF0ZU5ld1BhZ2UoKnRoaXMsIFdURk1vdmUob3JpZ2luYXRpbmdGcmFtZUlu
Zm8pLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHdpbmRvd0ZlYXR1cmVzKSwgV1RGTW92ZShu
YXZpZ2F0aW9uQWN0aW9uRGF0YSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIG1haW5GcmFtZVVSTCwgcmVxdWVzdCwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKFJlZlB0
cjxXZWJQYWdlUHJveHk+IG5ld1BhZ2UpIG11dGFibGUgeworICAgIGF1dG8gY29tcGxldGlvbkhh
bmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWluRnJhbWVV
UkwsIHJlcXVlc3QsIHJlcGx5ID0gV1RGTW92ZShyZXBseSldIChSZWZQdHI8V2ViUGFnZVByb3h5
PiBuZXdQYWdlKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFuZXdQYWdlKSB7CiAgICAgICAgICAg
ICByZXBseSgwLCBXVEY6Om51bGxvcHQpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDkwMyw2
ICs0OTIxLDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1l
SW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwKIAogICAgICAgICBXZWJzaXRlRGF0
YVN0b3JlOjpjbG9uZVNlc3Npb25EYXRhKCp0aGlzLCAqbmV3UGFnZSk7CiAgICAgICAgIG5ld1Bh
Z2UtPm1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
biA9IGhvc3RzQXJlRXF1YWwoVVJMKHsgfSwgbWFpbkZyYW1lVVJMKSwgcmVxdWVzdC51cmwoKSk7
CisKKyNpZiBIQVZFKExPQURfT1BUSU1JWkVSKQorV0VCUEFHRVBST1hZX0xPQURPUFRJTUlaRVJf
QURESVRJT05TXzUKKyNlbmRpZgorICAgIH07CisKKyAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rp
dml0eSA9IG1fcHJvY2Vzcy0+dXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25E
YXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKKyAgICBib29sIHNob3VsZE9wZW5BcHBM
aW5rcyA9ICFob3N0c0FyZUVxdWFsKG9yaWdpbmF0aW5nRnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJs
KCksIHJlcXVlc3QudXJsKCkpOworICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2
aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBvcmln
aW5hdGluZ0ZyYW1lSW5mby5wdHIoKSwgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJl
cXVlc3QpLCBVUkwoKSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRB
Y3Rpdml0eSkpOworCisgICAgdHJ5T3B0aW1pemluZ0xvYWQoV1RGTW92ZShuYXZpZ2F0aW9uQWN0
aW9uKSwgKnRoaXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB3aW5kb3dGZWF0dXJlcyA9IFdURk1vdmUod2luZG93RmVh
dHVyZXMpXSAoUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJQYWdlUHJveHk+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBtdXRhYmxlIHsKKyAgICAgICAgbV91aUNsaWVudC0+Y3JlYXRlTmV3UGFnZSgq
dGhpcywgV1RGTW92ZSh3aW5kb3dGZWF0dXJlcyksIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKIH0KICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMjE1NWQxNDJlNDRmYmE1NDQ1OGJjNzFm
NTM5MWJlNmUwOWI0ZTgwMy4uZWQ2ZjQ2ZTM2YjJjN2I4NmRlOWZhNWM5NGYxMGI2MjM5MjdjOTEz
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEzNSw2ICsxMzUs
MTAgQEAgT0JKQ19DTEFTUyBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKICNpbmNsdWRlIDxXZWJD
b3JlL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQuaD4KICNlbmRpZgogCisjaWYgVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvV2ViUGFnZVByb3h5
QWRkaXRpb25zLmg+CisjZW5kaWYKKwogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgTWVkaWFTZXNzaW9uTWV0YWRhdGE7CkBAIC0xNDcyLDYgKzE0
NzYsMTAgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoV2ViVmlld0RpZE1vdmVU
b1dpbmRvd09ic2VydmVyJik7CiAgICAgdm9pZCB3ZWJWaWV3RGlkTW92ZVRvV2luZG93KCk7CiAK
KyNpZiBIQVZFKExPQURfT1BUSU1JWkVSKQorV0VCUEFHRVBST1hZX0xPQURPUFRJTUlaRVJfQURE
SVRJT05TXzEKKyNlbmRpZgorCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICAvLyBJ
bXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViUGFnZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAog
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jikgb3ZlcnJpZGU7CkBAIC0yMTc4LDYgKzIxODYsMTAgQEAgcHJpdmF0ZToKICAgICBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgbV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVlc3Q7CiAgICAg
Ym9vbCBtX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNp
b24geyBmYWxzZSB9OwogCisjaWYgSEFWRShMT0FEX09QVElNSVpFUikKK1dFQlBBR0VQUk9YWV9M
T0FET1BUSU1JWkVSX0FERElUSU9OU18yCisjZW5kaWYKKwogICAgIERlcXVlPE5hdGl2ZVdlYk1v
dXNlRXZlbnQ+IG1fbW91c2VFdmVudFF1ZXVlOwogICAgIERlcXVlPE5hdGl2ZVdlYktleWJvYXJk
RXZlbnQ+IG1fa2V5RXZlbnRRdWV1ZTsKICAgICBEZXF1ZTxOYXRpdmVXZWJXaGVlbEV2ZW50PiBt
X3doZWVsRXZlbnRRdWV1ZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>