<?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>245568</bug_id>
          
          <creation_ts>2022-09-23 03:00:26 -0700</creation_ts>
          <short_desc>[LFC][Integration] Add a Layout::Box pointer to RenderObject</short_desc>
          <delta_ts>2022-09-24 00:41:02 -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>Layout and Rendering</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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Antti Koivisto">koivisto</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1900582</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-09-23 03:00:26 -0700</bug_when>
    <thetext>Replace the map in LineLayout with a direct pointer in render objects. This is faster and also uses less memory in most cases since with expanded IFC coverage majority of renderers already end up in these maps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1900583</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-09-23 03:00:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/100316721&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1900586</commentid>
    <comment_count>2</comment_count>
      <attachid>462559</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-09-23 03:19:28 -0700</bug_when>
    <thetext>Created attachment 462559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1900624</commentid>
    <comment_count>3</comment_count>
      <attachid>462559</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-09-23 06:33:04 -0700</bug_when>
    <thetext>Comment on attachment 462559
Patch

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

v.nice!

&gt; Source/WebCore/layout/layouttree/LayoutContainerBox.cpp:101
&gt; +} 

trailing whitespace.

&gt; Source/WebCore/rendering/RenderView.h:233
&gt; +    std::unique_ptr&lt;Layout::InitialContainingBlock&gt; m_initialContainingBlock;

can this be just a UniqueRef&lt;&gt; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1900827</commentid>
    <comment_count>4</comment_count>
      <attachid>462576</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-09-23 23:24:49 -0700</bug_when>
    <thetext>Created attachment 462576
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1900831</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-09-24 00:41:00 -0700</bug_when>
    <thetext>Committed 254822@main (de27a5057c3d): &lt;https://commits.webkit.org/254822@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 462576.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>462559</attachid>
            <date>2022-09-23 03:19:28 -0700</date>
            <delta_ts>2022-09-23 23:24:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-245568-20220923131927.patch</filename>
            <type>text/plain</type>
            <size>29494</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">RnJvbSAzMmUxNWM3YmJjZjMwZjhiYzE1NDNjOWUyMmQ1NDFiZjIzZDk1MmE2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnR0aSBLb2l2aXN0byA8YW50dGlAYXBwbGUuY29tPgpEYXRl
OiBGcmksIDIzIFNlcCAyMDIyIDEzOjAxOjAyICswMzAwClN1YmplY3Q6IFtQQVRDSF0gW0xGQ11b
SW50ZWdyYXRpb25dIEFkZCBhIExheW91dDo6Qm94IHBvaW50ZXIgdG8gUmVuZGVyT2JqZWN0CiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ1NTY4IDxyZGFyOi8vMTAw
MzE2NzIxPgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpSZXBsYWNlIHRoZSBtYXAgaW4g
TGluZUxheW91dCB3aXRoIGEgZGlyZWN0IHBvaW50ZXIgaW4gcmVuZGVyIG9iamVjdHMuClRoaXMg
aXMgZmFzdGVyIGFuZCBhbHNvIHVzZXMgbGVzcyBtZW1vcnkgaW4gbW9zdCBjYXNlcyBzaW5jZSB3
aXRoIGV4cGFuZGVkIElGQyBjb3ZlcmFnZSBtYWpvcml0eSBvZiByZW5kZXJlcnMgYWxyZWFkeSBl
bmQgdXAgaW4gdGhlc2UgbWFwcy4KClRoZSBwYXRjaCBhbHNvIG1ha2VzIGl0IHNvIHRoYXQgdGhl
cmUgaXMgb25seSBldmVyIGEgc2luZ2xlIGxheW91dCBib3ggcGVyIHJlbmRlcmVyLiBCZWZvcmUg
YW4gaW5saW5lLWJsb2NrIGNvdWxkIGhhdmUgdHdvCmFzc29jaWF0ZWQgbGF5b3V0IGJveGVzIChh
IGNoaWxkIGJveCBmb3IgdGhlIHBhcmVudCBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0IGFuZCB0
aGUgcm9vdCBvZiBpdHMgb3duIGNvbnRleHQpLgoKVGhlIHBhdGNoIGFsc28gYWRkcyBJbml0aWFs
Q29udGFpbmluZ0Jsb2NrIHRvIFJlbmRlclZpZXcuIEFsbCBsYXlvdXQgYm94ZXMgd2l0aG91dCBv
dGhlciBwYXJlbnRzIGFyZSBwYXJlbnRlZCB0aGVyZSBzbwppdCBhY3RzIGFzIHRoZSByb290IG9m
IHRoZSBsYXlvdXQgYm94IHRyZWUuCgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0
aW5nQ29udGV4dDo6Z2VvbWV0cnlGb3JCb3ggY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3BwOgooV2ViQ29yZTo6TGF5
b3V0SW50ZWdyYXRpb246OkJveFRyZWU6OkJveFRyZWUpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdy
YXRpb246OkJveFRyZWU6On5Cb3hUcmVlKToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpC
b3hUcmVlOjpidWlsZFRyZWVGb3JJbmxpbmVDb250ZW50KToKKFdlYkNvcmU6OkxheW91dEludGVn
cmF0aW9uOjpCb3hUcmVlOjphcHBlbmRDaGlsZCk6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6Qm94VHJlZTo6cm9vdExheW91dEJveCBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3Jh
dGlvbjo6Qm94VHJlZTo6cm9vdExheW91dEJveCk6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6Qm94VHJlZTo6bGF5b3V0Qm94Rm9yUmVuZGVyZXIpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdy
YXRpb246OkJveFRyZWU6OnJlbmRlcmVyRm9yTGF5b3V0Qm94KToKKFdlYkNvcmU6OkxheW91dElu
dGVncmF0aW9uOjpCb3hUcmVlOjppbml0aWFsQ29udGFpbmluZ0Jsb2NrKToKKCk6IERlbGV0ZWQu
CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94
VHJlZS5oOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveFRyZWU6OmJveENvdW50IGNv
bnN0KToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpCb3hUcmVlOjpyZW5kZXJlcnMgY29u
c3QpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveFRyZWU6OnJvb3RMYXlvdXRCb3gg
Y29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveFRyZWU6OnJv
b3RMYXlvdXRCb3gpOiBEZWxldGVkLgooKTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dEludGVn
cmF0aW9uOjpCb3hUcmVlOjpib3hBbmRSZW5kZXJlckxpc3QgY29uc3QpOiBEZWxldGVkLgoqIFNv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9mbGV4L0xheW91dEludGVncmF0aW9uRmxl
eExheW91dC5jcHA6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6RmxleExheW91dDo6bGF5
b3V0KToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpGbGV4TGF5b3V0Ojp1cGRhdGVSZW5k
ZXJlcnMgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUv
TGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcDoKKFdlYkNvcmU6OkxheW91dEludGVncmF0
aW9uOjpMaW5lTGF5b3V0Ojpjb25zdHJ1Y3RDb250ZW50KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlv
dXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpCb3g6OkJveCk6
CihXZWJDb3JlOjpMYXlvdXQ6OkJveDo6cmVtb3ZlRnJvbVBhcmVudCk6CihXZWJDb3JlOjpMYXlv
dXQ6OkJveDo6ZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCBjb25zdCk6CiogU291
cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94Lmg6CihXZWJDb3JlOjpMYXlv
dXQ6OkJveDo6aXNJbmxpbmVJbnRlZ3JhdGlvblJvb3QgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0
OjpCb3g6OnNldElzSW5saW5lSW50ZWdyYXRpb25Sb290KToKKFdlYkNvcmU6OkxheW91dDo6Qm94
OjppbmNyZW1lbnRQdHJDb3VudCBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkJveDo6ZGVjcmVt
ZW50UHRyQ291bnQgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmlzSW50ZWdyYXRpb25S
b290IGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRDb250YWluZXJCb3guY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpDb250YWluZXJCb3g6OmFw
cGVuZENoaWxkKToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250
YWluZXJCb3guaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6
CihXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpsYXlvdXRCb3gpOgooV2ViQ29yZTo6UmVuZGVyRWxl
bWVudDo6bGF5b3V0Qm94IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5oOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgoo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZXRMYXlvdXRCb3gpOgooV2ViQ29yZTo6UmVuZGVyT2Jq
ZWN0OjpjbGVhckxheW91dEJveCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5oOgooV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpsYXlvdXRCb3gpOgooV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0OjpsYXlvdXRCb3ggY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmNwcDoKKFdlYkNvcmU6OlJlbmRlclZpZXc6OlJlbmRlclZpZXcpOgoqIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3Lmg6Ci0tLQogLi4uL2Zvcm1hdHRpbmdDb250
ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5jcHAgIHwgICA0ICstCiAuLi4vaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNwcCAgfCAxMDIgKysrKysrKysrKysrLS0tLS0tCiAuLi4v
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmggICAgfCAgMjEgKystLQogLi4u
L2ZsZXgvTGF5b3V0SW50ZWdyYXRpb25GbGV4TGF5b3V0LmNwcCAgICAgIHwgIDE1ICsrLQogLi4u
L2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwICAgIHwgICA3ICstCiAuLi4v
V2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwICAgfCAgMjEgKysrLQogU291
cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmggIHwgIDEzICsrLQogLi4u
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5lckJveC5jcHAgIHwgICAyICstCiAuLi4v
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Q29udGFpbmVyQm94LmggICAgfCAgIDIgKwogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwICAgIHwgIDExICsrCiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oICAgICAgfCAgIDcgKysKIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwICAgICB8ICAxMyArKy0KIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCAgICAgICB8ICAxMyArKy0KIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCAgICAgICB8ICAgMiArCiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oICAgICAgICAgfCAgIDggKysKIDE1IGZpbGVzIGNo
YW5nZWQsIDE3MyBpbnNlcnRpb25zKCspLCA2OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGlu
Z0NvbnRleHQuY3BwCmluZGV4IDMwNDNmOTcwMWRjYi4uNDE4NTBhN2UwMmMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zv
cm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIGNvbnN0IEJveEdlb21ldHJ5
JiBGb3JtYXR0aW5nQ29udGV4dDo6Z2VvbWV0cnlGb3JCb3goY29uc3QgQm94JiBsYXlvdXRCb3gs
IHN0ZDo6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlm
ICghaXM8SW5pdGlhbENvbnRhaW5pbmdCbG9jaz4obGF5b3V0Qm94KSAmJiAhbGF5b3V0Qm94Lmlz
SW50ZWdyYXRpb25Sb290KCkgJiYgJmZvcm1hdHRpbmdDb250ZXh0Um9vdChsYXlvdXRCb3gpID09
ICZyb290KCkpIHsKKyAgICAgICAgaWYgKCFpczxJbml0aWFsQ29udGFpbmluZ0Jsb2NrPihsYXlv
dXRCb3gpICYmICZmb3JtYXR0aW5nQ29udGV4dFJvb3QobGF5b3V0Qm94KSA9PSAmcm9vdCgpKSB7
CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBub24tZXNjYXBlIGNhc2Ugb2YgYWNjZXNzaW5n
IGEgYm94J3MgZ2VvbWV0cnkgaW5mb3JtYXRpb24gd2l0aGluIHRoZSBzYW1lIGZvcm1hdHRpbmcg
Y29udGV4dC4KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0yMTQsNyAr
MjE0LDcgQEAgY29uc3QgQm94R2VvbWV0cnkmIEZvcm1hdHRpbmdDb250ZXh0OjpnZW9tZXRyeUZv
ckJveChjb25zdCBCb3gmIGxheW91dEJveCwgc3RkOjoKICAgICAgICAgaWYgKCplc2NhcGVSZWFz
b24gPT0gRXNjYXBlUmVhc29uOjpGbG9hdEJveElzQWx3YXlzUmVsYXRpdmVUb0Zsb2F0U3RhdGVS
b290KSB7CiAgICAgICAgICAgICAvLyBGbG9hdCBib3ggdG9wL2xlZnQgdmFsdWVzIGFyZSBtYXBw
ZWQgcmVsYXRpdmUgdG8gdGhlIEZsb2F0U3RhdGUncyByb290LiBJbmxpbmUgZm9ybWF0dGluZyBj
b250ZXh0cyhBKSBpbmhlcml0IGZsb2F0cyBmcm9tIHBhcmVudAogICAgICAgICAgICAgLy8gYmxv
Y2sgZm9ybWF0dGluZyBjb250ZXh0cyhCKS4gRmxvYXRzIGluIHRoZXNlIGlubGluZSBmb3JtYXR0
aW5nIGNvbnRleHRzKEEpIG5lZWQgdG8gYmUgbWFwcGVkIHRvIHRoZSBwYXJlbnQsIGJsb2NrIGZv
cm1hdHRpbmcgY29udGV4dChCKS4KLSAgICAgICAgICAgIGlmIChsYXlvdXRCb3guaXNJbnRlZ3Jh
dGlvblJvb3QoKSkKKyAgICAgICAgICAgIGlmIChsYXlvdXRCb3guaXNJbmxpbmVJbnRlZ3JhdGlv
blJvb3QoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICAgICAgYXV0
byYgZm9ybWF0dGluZ0NvbnRleHRSb290Rm9yQm94ID0gZm9ybWF0dGluZ0NvbnRleHRSb290KGxh
eW91dEJveCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3BwCmluZGV4IDUyNGVmMjIzMmVmNC4u
ZWZiY2YxOTViNjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNwcApAQCAtNDMsNiArNDMs
NyBAQAogI2luY2x1ZGUgIlJlbmRlckxpc3RJdGVtLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdE1h
cmtlci5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5o
IgogI2luY2x1ZGUgIlRleHRVdGlsLmgiCiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCkBA
IC03OCwxOSArNzksNTMgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gZmly
c3RMaW5lU3R5bGVGb3IoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXIKIAogQm94VHJlZTo6Qm94
VHJlZShSZW5kZXJCbG9jayYgcm9vdFJlbmRlcmVyKQogICAgIDogbV9yb290UmVuZGVyZXIocm9v
dFJlbmRlcmVyKQotICAgICwgbV9yb290KExheW91dDo6Qm94OjpFbGVtZW50QXR0cmlidXRlcyB7
IExheW91dDo6Qm94OjpFbGVtZW50VHlwZTo6R2VuZXJpY0VsZW1lbnQgfSwgcm9vdEJveFN0eWxl
KHJvb3RSZW5kZXJlciksIGZpcnN0TGluZVN0eWxlRm9yKHJvb3RSZW5kZXJlcikpCiB7CisgICAg
YXV0byogcm9vdEJveCA9IG1fcm9vdFJlbmRlcmVyLmxheW91dEJveCgpOworICAgIGlmICghcm9v
dEJveCkgeworICAgICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBMYXlvdXQ6OkJveDo6RWxlbWVudEF0
dHJpYnV0ZXMgeyBMYXlvdXQ6OkJveDo6RWxlbWVudFR5cGU6OkdlbmVyaWNFbGVtZW50IH07Cisg
ICAgICAgIGF1dG8gbmV3Um9vdEJveCA9IG1ha2VVbmlxdWVSZWY8TGF5b3V0OjpDb250YWluZXJC
b3g+KGF0dHJpYnV0ZXMsIHJvb3RCb3hTdHlsZShyb290UmVuZGVyZXIpLCBmaXJzdExpbmVTdHls
ZUZvcihyb290UmVuZGVyZXIpKTsKKyAgICAgICAgcm9vdEJveCA9IG5ld1Jvb3RCb3gucHRyKCk7
CisgICAgICAgIG1fcm9vdFJlbmRlcmVyLnNldExheW91dEJveCgqcm9vdEJveCk7CisgICAgICAg
IGluaXRpYWxDb250YWluaW5nQmxvY2soKS5hcHBlbmRDaGlsZChXVEZNb3ZlKG5ld1Jvb3RCb3gp
KTsKKyAgICB9CisKICAgICBpZiAocm9vdFJlbmRlcmVyLmlzQW5vbnltb3VzKCkpCi0gICAgICAg
IG1fcm9vdC5zZXRJc0Fub255bW91cygpOworICAgICAgICByb290Qm94LT5zZXRJc0Fub255bW91
cygpOwogCi0gICAgaWYgKGlzPFJlbmRlckJsb2NrRmxvdz4ocm9vdFJlbmRlcmVyKSkKKyAgICBp
ZiAoaXM8UmVuZGVyQmxvY2tGbG93Pihyb290UmVuZGVyZXIpKSB7CisgICAgICAgIHJvb3RCb3gt
PnNldElzSW5saW5lSW50ZWdyYXRpb25Sb290KCk7CiAgICAgICAgIGJ1aWxkVHJlZUZvcklubGlu
ZUNvbnRlbnQoKTsKLSAgICBlbHNlIGlmIChpczxSZW5kZXJGbGV4aWJsZUJveD4ocm9vdFJlbmRl
cmVyKSkKKyAgICB9IGVsc2UgaWYgKGlzPFJlbmRlckZsZXhpYmxlQm94Pihyb290UmVuZGVyZXIp
KQogICAgICAgICBidWlsZFRyZWVGb3JGbGV4Q29udGVudCgpOwogICAgIGVsc2UKICAgICAgICAg
QVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKIH0KIAorQm94VHJlZTo6fkJveFRyZWUoKQor
eworICAgIGZvciAoYXV0byYgcmVuZGVyZXIgOiBtX3JlbmRlcmVycykgeworICAgICAgICBpZiAo
IXJlbmRlcmVyKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYm9vbCBpc0xGQ0lu
bGluZUJsb2NrID0gaXM8UmVuZGVyQmxvY2tGbG93PigqcmVuZGVyZXIpICYmIGRvd25jYXN0PFJl
bmRlckJsb2NrRmxvdz4oKnJlbmRlcmVyKS5tb2Rlcm5MaW5lTGF5b3V0KCk7CisgICAgICAgIGlm
IChpc0xGQ0lubGluZUJsb2NrKSB7CisgICAgICAgICAgICBhdXRvIGRldGFjaGVkQm94ID0gcmVu
ZGVyZXItPmxheW91dEJveCgpLT5yZW1vdmVGcm9tUGFyZW50KCk7CisgICAgICAgICAgICBpbml0
aWFsQ29udGFpbmluZ0Jsb2NrKCkuYXBwZW5kQ2hpbGQoV1RGTW92ZShkZXRhY2hlZEJveCkpOwor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICByZW5kZXJlci0+Y2xl
YXJMYXlvdXRCb3goKTsKKyAgICB9CisKKyAgICBtX2JveFRvUmVuZGVyZXJNYXAgPSB7IH07CisK
KyAgICBpZiAoJnJvb3RMYXlvdXRCb3goKS5wYXJlbnQoKSA9PSAmaW5pdGlhbENvbnRhaW5pbmdC
bG9jaygpKSB7CisgICAgICAgIGF1dG8gdG9EZWxldGUgPSByb290TGF5b3V0Qm94KCkucmVtb3Zl
RnJvbVBhcmVudCgpOworICAgICAgICBtX3Jvb3RSZW5kZXJlci5jbGVhckxheW91dEJveCgpOwor
ICAgIH0gZWxzZQorICAgICAgICByb290TGF5b3V0Qm94KCkuZGVzdHJveUNoaWxkcmVuKCk7Cit9
CisKIHZvaWQgQm94VHJlZTo6YnVpbGRUcmVlRm9ySW5saW5lQ29udGVudCgpCiB7CiAgICAgYXV0
byBjcmVhdGVDaGlsZEJveCA9IFsmXShSZW5kZXJPYmplY3QmIGNoaWxkUmVuZGVyZXIpIC0+IHN0
ZDo6dW5pcXVlX3B0cjxMYXlvdXQ6OkJveD4gewpAQCAtMTg1LDggKzIyMCwxMiBAQCB2b2lkIEJv
eFRyZWU6OmJ1aWxkVHJlZUZvcklubGluZUNvbnRlbnQoKQogCiAgICAgZm9yIChhdXRvIHdhbGtl
ciA9IElubGluZVdhbGtlcihkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KG1fcm9vdFJlbmRlcmVy
KSk7ICF3YWxrZXIuYXRFbmQoKTsgd2Fsa2VyLmFkdmFuY2UoKSkgewogICAgICAgICBhdXRvJiBj
aGlsZFJlbmRlcmVyID0gKndhbGtlci5jdXJyZW50KCk7Ci0gICAgICAgIGF1dG8gY2hpbGRCb3gg
PSBjcmVhdGVDaGlsZEJveChjaGlsZFJlbmRlcmVyKTsKLSAgICAgICAgYXBwZW5kQ2hpbGQobWFr
ZVVuaXF1ZVJlZkZyb21Ob25OdWxsVW5pcXVlUHRyKFdURk1vdmUoY2hpbGRCb3gpKSwgY2hpbGRS
ZW5kZXJlcik7CisgICAgICAgIGF1dG8gY2hpbGRMYXlvdXRCb3ggPSBbJl0geworICAgICAgICAg
ICAgaWYgKGF1dG8gZXhpc3RpbmdDaGlsZEJveCA9IGNoaWxkUmVuZGVyZXIubGF5b3V0Qm94KCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGV4aXN0aW5nQ2hpbGRCb3gtPnJlbW92ZUZyb21QYXJl
bnQoKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQ
dHIoY3JlYXRlQ2hpbGRCb3goY2hpbGRSZW5kZXJlcikpOworICAgICAgICB9OworICAgICAgICBh
cHBlbmRDaGlsZChjaGlsZExheW91dEJveCgpLCBjaGlsZFJlbmRlcmVyKTsKICAgICB9CiB9CiAK
QEAgLTIwMywxNyArMjQyLDEwIEBAIHZvaWQgQm94VHJlZTo6YXBwZW5kQ2hpbGQoVW5pcXVlUmVm
PExheW91dDo6Qm94PiBjaGlsZEJveCwgUmVuZGVyT2JqZWN0JiBjaGlsZFJlCiB7CiAgICAgYXV0
byYgcGFyZW50Qm94ID0gbGF5b3V0Qm94Rm9yUmVuZGVyZXIoKmNoaWxkUmVuZGVyZXIucGFyZW50
KCkpOwogCi0gICAgbV9ib3hlcy5hcHBlbmQoeyBjaGlsZEJveC5nZXQoKSwgJmNoaWxkUmVuZGVy
ZXIgfSk7CisgICAgbV9yZW5kZXJlcnMuYXBwZW5kKCZjaGlsZFJlbmRlcmVyKTsKIAorICAgIGNo
aWxkUmVuZGVyZXIuc2V0TGF5b3V0Qm94KGNoaWxkQm94KTsKICAgICBwYXJlbnRCb3guYXBwZW5k
Q2hpbGQoV1RGTW92ZShjaGlsZEJveCkpOwotCi0gICAgaWYgKG1fYm94ZXMuc2l6ZSgpID4gc21h
bGxUcmVlVGhyZXNob2xkKSB7Ci0gICAgICAgIGlmIChtX3JlbmRlcmVyVG9Cb3hNYXAuaXNFbXB0
eSgpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9ib3hlcykKLSAgICAgICAg
ICAgICAgICBtX3JlbmRlcmVyVG9Cb3hNYXAuYWRkKGVudHJ5LnJlbmRlcmVyLCBlbnRyeS5ib3gu
Z2V0KCkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fcmVuZGVyZXJUb0JveE1hcC5h
ZGQoJmNoaWxkUmVuZGVyZXIsIG1fYm94ZXMubGFzdCgpLmJveC5nZXQoKSk7Ci0gICAgfQogfQog
CiB2b2lkIEJveFRyZWU6OnVwZGF0ZVN0eWxlKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiBy
ZW5kZXJlcikKQEAgLTIzMiwyMCArMjY0LDE5IEBAIHZvaWQgQm94VHJlZTo6dXBkYXRlU3R5bGUo
Y29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVyKQogICAgIH0KIH0KIAotTGF5b3V0
OjpCb3gmIEJveFRyZWU6OmxheW91dEJveEZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCYg
cmVuZGVyZXIpCitjb25zdCBMYXlvdXQ6OkNvbnRhaW5lckJveCYgQm94VHJlZTo6cm9vdExheW91
dEJveCgpIGNvbnN0CiB7Ci0gICAgaWYgKCZyZW5kZXJlciA9PSAmbV9yb290UmVuZGVyZXIpCi0g
ICAgICAgIHJldHVybiBtX3Jvb3Q7CisgICAgcmV0dXJuICptX3Jvb3RSZW5kZXJlci5sYXlvdXRC
b3goKTsKK30KIAotICAgIGlmIChtX2JveGVzLnNpemUoKSA8PSBzbWFsbFRyZWVUaHJlc2hvbGQp
IHsKLSAgICAgICAgYXV0byBpbmRleCA9IG1fYm94ZXMuZmluZElmKFsmXShhdXRvJiBlbnRyeSkg
ewotICAgICAgICAgICAgcmV0dXJuIGVudHJ5LnJlbmRlcmVyID09ICZyZW5kZXJlcjsKLSAgICAg
ICAgfSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZGV4ICE9IG5vdEZvdW5kKTsKLSAgICAg
ICAgcmV0dXJuIG1fYm94ZXNbaW5kZXhdLmJveDsKLSAgICB9CitMYXlvdXQ6OkNvbnRhaW5lckJv
eCYgQm94VHJlZTo6cm9vdExheW91dEJveCgpCit7CisgICAgcmV0dXJuICptX3Jvb3RSZW5kZXJl
ci5sYXlvdXRCb3goKTsKK30KIAotICAgIHJldHVybiAqbV9yZW5kZXJlclRvQm94TWFwLmdldCgm
cmVuZGVyZXIpOworTGF5b3V0OjpCb3gmIEJveFRyZWU6OmxheW91dEJveEZvclJlbmRlcmVyKGNv
bnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCit7CisgICAgcmV0dXJuICpjb25zdF9jYXN0PFJl
bmRlck9iamVjdCY+KHJlbmRlcmVyKS5sYXlvdXRCb3goKTsKIH0KIAogY29uc3QgTGF5b3V0OjpC
b3gmIEJveFRyZWU6OmxheW91dEJveEZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVu
ZGVyZXIpIGNvbnN0CkBAIC0yNjUsMjAgKzI5NiwyMCBAQCBMYXlvdXQ6OkNvbnRhaW5lckJveCYg
Qm94VHJlZTo6bGF5b3V0Qm94Rm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZQogCiBSZW5kZXJPYmplY3QmIEJveFRyZWU6OnJlbmRlcmVyRm9yTGF5b3V0Qm94KGNvbnN0IExh
eW91dDo6Qm94JiBib3gpCiB7Ci0gICAgaWYgKCZib3ggPT0gJm1fcm9vdCkKKyAgICBpZiAoJmJv
eCA9PSAmcm9vdExheW91dEJveCgpKQogICAgICAgICByZXR1cm4gbV9yb290UmVuZGVyZXI7CiAK
LSAgICBpZiAobV9ib3hlcy5zaXplKCkgPD0gc21hbGxUcmVlVGhyZXNob2xkKSB7Ci0gICAgICAg
IGF1dG8gaW5kZXggPSBtX2JveGVzLmZpbmRJZihbJl0oYXV0byYgZW50cnkpIHsKLSAgICAgICAg
ICAgIHJldHVybiBlbnRyeS5ib3gucHRyKCkgPT0gJmJveDsKKyAgICBpZiAobV9yZW5kZXJlcnMu
c2l6ZSgpIDw9IHNtYWxsVHJlZVRocmVzaG9sZCkgeworICAgICAgICBhdXRvIGluZGV4ID0gbV9y
ZW5kZXJlcnMuZmluZElmKFsmXShhdXRvJiByZW5kZXJlcikgeworICAgICAgICAgICAgcmV0dXJu
IHJlbmRlcmVyLT5sYXlvdXRCb3goKSA9PSAmYm94OwogICAgICAgICB9KTsKICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOwotICAgICAgICByZXR1cm4gKm1fYm94ZXNb
aW5kZXhdLnJlbmRlcmVyOworICAgICAgICByZXR1cm4gKm1fcmVuZGVyZXJzW2luZGV4XTsKICAg
ICB9CiAKICAgICBpZiAobV9ib3hUb1JlbmRlcmVyTWFwLmlzRW1wdHkoKSkgewotICAgICAgICBm
b3IgKGF1dG8mIGVudHJ5IDogbV9ib3hlcykKLSAgICAgICAgICAgIG1fYm94VG9SZW5kZXJlck1h
cC5hZGQoZW50cnkuYm94LmdldCgpLCBlbnRyeS5yZW5kZXJlcik7CisgICAgICAgIGZvciAoYXV0
byYgcmVuZGVyZXIgOiBtX3JlbmRlcmVycykKKyAgICAgICAgICAgIG1fYm94VG9SZW5kZXJlck1h
cC5hZGQoKnJlbmRlcmVyLT5sYXlvdXRCb3goKSwgcmVuZGVyZXIpOwogICAgIH0KICAgICByZXR1
cm4gKm1fYm94VG9SZW5kZXJlck1hcC5nZXQoJmJveCk7CiB9CkBAIC0yODgsNiArMzE5LDExIEBA
IGNvbnN0IFJlbmRlck9iamVjdCYgQm94VHJlZTo6cmVuZGVyZXJGb3JMYXlvdXRCb3goY29uc3Qg
TGF5b3V0OjpCb3gmIGJveCkgY29uc3QKICAgICByZXR1cm4gY29uc3RfY2FzdDxCb3hUcmVlJj4o
KnRoaXMpLnJlbmRlcmVyRm9yTGF5b3V0Qm94KGJveCk7CiB9CiAKK0xheW91dDo6SW5pdGlhbENv
bnRhaW5pbmdCbG9jayYgQm94VHJlZTo6aW5pdGlhbENvbnRhaW5pbmdCbG9jaygpCit7CisgICAg
cmV0dXJuIG1fcm9vdFJlbmRlcmVyLnZpZXcoKS5pbml0aWFsQ29udGFpbmluZ0Jsb2NrKCk7Cit9
CisKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCiB2b2lkIHNob3dJbmxpbmVDb250ZW50KFRl
eHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgSW5saW5lQ29udGVudCYgaW5saW5lQ29udGVudCwgc2l6
ZV90IGRlcHRoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uQm94VHJlZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94VHJlZS5oCmluZGV4IDc4NmE4YWNkYTM3MS4u
ZTk0YThkYTIxZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94VHJlZS5oCkBAIC00NSwxNCArNDUsMTUg
QEAgc3RydWN0IElubGluZUNvbnRlbnQ7CiBjbGFzcyBCb3hUcmVlIHsKIHB1YmxpYzoKICAgICBC
b3hUcmVlKFJlbmRlckJsb2NrJik7CisgICAgfkJveFRyZWUoKTsKIAogICAgIHZvaWQgdXBkYXRl
U3R5bGUoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QmKTsKIAogICAgIGNvbnN0IFJlbmRlckJs
b2NrJiByb290UmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RSZW5kZXJlcjsgfQogICAg
IFJlbmRlckJsb2NrJiByb290UmVuZGVyZXIoKSB7IHJldHVybiBtX3Jvb3RSZW5kZXJlcjsgfQog
Ci0gICAgY29uc3QgTGF5b3V0OjpDb250YWluZXJCb3gmIHJvb3RMYXlvdXRCb3goKSBjb25zdCB7
IHJldHVybiBtX3Jvb3Q7IH0KLSAgICBMYXlvdXQ6OkNvbnRhaW5lckJveCYgcm9vdExheW91dEJv
eCgpIHsgcmV0dXJuIG1fcm9vdDsgfQorICAgIGNvbnN0IExheW91dDo6Q29udGFpbmVyQm94JiBy
b290TGF5b3V0Qm94KCkgY29uc3Q7CisgICAgTGF5b3V0OjpDb250YWluZXJCb3gmIHJvb3RMYXlv
dXRCb3goKTsKIAogICAgIGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3hGb3JSZW5kZXJlcihj
b25zdCBSZW5kZXJPYmplY3QmKSBjb25zdDsKICAgICBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94Rm9y
UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Jik7CkBAIC02MywyNSArNjQsMjEgQEAgcHVibGlj
OgogICAgIGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXJGb3JMYXlvdXRCb3goY29uc3QgTGF5
b3V0OjpCb3gmKSBjb25zdDsKICAgICBSZW5kZXJPYmplY3QmIHJlbmRlcmVyRm9yTGF5b3V0Qm94
KGNvbnN0IExheW91dDo6Qm94Jik7CiAKLSAgICBzaXplX3QgYm94Q291bnQoKSBjb25zdCB7IHJl
dHVybiBtX2JveGVzLnNpemUoKTsgfQorICAgIHNpemVfdCBib3hDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVuZGVyZXJzLnNpemUoKTsgfQogCi0gICAgc3RydWN0IEJveEFuZFJlbmRlcmVyIHsK
LSAgICAgICAgQ2hlY2tlZFJlZjxMYXlvdXQ6OkJveD4gYm94OwotICAgICAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyIHsgbnVsbHB0ciB9OwotICAgIH07Ci0gICAgY29uc3QgYXV0byYgYm94QW5k
UmVuZGVyZXJMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9ib3hlczsgfQorICAgIGNvbnN0IGF1dG8m
IHJlbmRlcmVycygpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXJzOyB9CiAKIHByaXZhdGU6Cisg
ICAgTGF5b3V0OjpJbml0aWFsQ29udGFpbmluZ0Jsb2NrJiBpbml0aWFsQ29udGFpbmluZ0Jsb2Nr
KCk7CisKICAgICB2b2lkIGJ1aWxkVHJlZUZvcklubGluZUNvbnRlbnQoKTsKICAgICB2b2lkIGJ1
aWxkVHJlZUZvckZsZXhDb250ZW50KCk7CiAgICAgdm9pZCBhcHBlbmRDaGlsZChVbmlxdWVSZWY8
TGF5b3V0OjpCb3g+LCBSZW5kZXJPYmplY3QmKTsKIAogICAgIFJlbmRlckJsb2NrJiBtX3Jvb3RS
ZW5kZXJlcjsKLSAgICBMYXlvdXQ6OkNvbnRhaW5lckJveCBtX3Jvb3Q7Ci0gICAgVmVjdG9yPEJv
eEFuZFJlbmRlcmVyLCAxPiBtX2JveGVzOworICAgIFZlY3RvcjxXZWFrUHRyPFJlbmRlck9iamVj
dD4sIDE+IG1fcmVuZGVyZXJzOwogCi0gICAgSGFzaE1hcDxjb25zdCBSZW5kZXJPYmplY3QqLCBD
aGVja2VkUmVmPExheW91dDo6Qm94Pj4gbV9yZW5kZXJlclRvQm94TWFwOwotICAgIEhhc2hNYXA8
Q2hlY2tlZFJlZjxjb25zdCBMYXlvdXQ6OkJveD4sIFJlbmRlck9iamVjdCo+IG1fYm94VG9SZW5k
ZXJlck1hcDsKKyAgICBIYXNoTWFwPENoZWNrZWRSZWY8Y29uc3QgTGF5b3V0OjpCb3g+LCBXZWFr
UHRyPFJlbmRlck9iamVjdD4+IG1fYm94VG9SZW5kZXJlck1hcDsKIH07CiAKICNpZiBFTkFCTEUo
VFJFRV9ERUJVR0dJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vZmxleC9MYXlvdXRJbnRlZ3JhdGlvbkZsZXhMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL2ZsZXgvTGF5b3V0SW50ZWdyYXRpb25GbGV4TGF5b3V0LmNw
cAppbmRleCAzMTVlZWQ1NTc3MTQuLmIyZDU4MDZjYjQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2ZsZXgvTGF5b3V0SW50ZWdyYXRpb25GbGV4TGF5b3V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vZmxleC9MYXlvdXRJ
bnRlZ3JhdGlvbkZsZXhMYXlvdXQuY3BwCkBAIC0xNTMsOSArMTUzLDEwIEBAIHZvaWQgRmxleExh
eW91dDo6bGF5b3V0KCkKICAgICBhdXRvIHJlbGF5b3V0RmxleEl0ZW1zID0gWyZdIHsKICAgICAg
ICAgLy8gRmxleCBpdGVtcyBuZWVkIHRvIGJlIGxhaWQgb3V0IG5vdyB3aXRoIHRoZWlyIGZpbmFs
IHNpemUgKGFuZCB0aHJvdWdoIHNldE92ZXJyaWRpbmdMb2dpY2FsV2lkdGgvSGVpZ2h0KQogICAg
ICAgICAvLyBOb3RlIHRoYXQgdGhleSBtYXkgcmUtc2l6ZSB0aGVtc2VsdmVzLgotICAgICAgICBm
b3IgKGF1dG8mIGJveEFuZFJlbmRlcmVyIDogbV9ib3hUcmVlLmJveEFuZFJlbmRlcmVyTGlzdCgp
KSB7Ci0gICAgICAgICAgICBhdXRvJiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckJveD4oKmJv
eEFuZFJlbmRlcmVyLnJlbmRlcmVyKTsKLSAgICAgICAgICAgIGF1dG8gYm9yZGVyQm94ID0gTGF5
b3V0OjpCb3hHZW9tZXRyeTo6Ym9yZGVyQm94UmVjdChtX2ZsZXhGb3JtYXR0aW5nU3RhdGUuYm94
R2VvbWV0cnkoYm94QW5kUmVuZGVyZXIuYm94LmdldCgpKSk7CisgICAgICAgIGZvciAoYXV0byYg
cmVuZGVyT2JqZWN0IDogbV9ib3hUcmVlLnJlbmRlcmVycygpKSB7CisgICAgICAgICAgICBhdXRv
JiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckJveD4oKnJlbmRlck9iamVjdCk7CisgICAgICAg
ICAgICBhdXRvJiBsYXlvdXRCb3ggPSAqcmVuZGVyZXIubGF5b3V0Qm94KCk7CisgICAgICAgICAg
ICBhdXRvIGJvcmRlckJveCA9IExheW91dDo6Qm94R2VvbWV0cnk6OmJvcmRlckJveFJlY3QobV9m
bGV4Rm9ybWF0dGluZ1N0YXRlLmJveEdlb21ldHJ5KGxheW91dEJveCkpOwogCiAgICAgICAgICAg
ICByZW5kZXJlci5zZXRXaWR0aChMYXlvdXRVbml0IHsgfSk7CiAgICAgICAgICAgICByZW5kZXJl
ci5zZXRIZWlnaHQoTGF5b3V0VW5pdCB7IH0pOwpAQCAtMTc2LDExICsxNzcsOSBAQCB2b2lkIEZs
ZXhMYXlvdXQ6OmxheW91dCgpCiAKIHZvaWQgRmxleExheW91dDo6dXBkYXRlUmVuZGVyZXJzKCkg
Y29uc3QKIHsKLSAgICBhdXRvJiBib3hBbmRSZW5kZXJlckxpc3QgPSBtX2JveFRyZWUuYm94QW5k
UmVuZGVyZXJMaXN0KCk7Ci0gICAgZm9yIChhdXRvJiBib3hBbmRSZW5kZXJlciA6IGJveEFuZFJl
bmRlcmVyTGlzdCkgewotICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBib3hBbmRSZW5kZXJlci5i
b3guZ2V0KCk7Ci0KLSAgICAgICAgYXV0byYgcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJCb3g+
KCpib3hBbmRSZW5kZXJlci5yZW5kZXJlcik7CisgICAgZm9yIChhdXRvJiByZW5kZXJPYmplY3Qg
OiBtX2JveFRyZWUucmVuZGVyZXJzKCkpIHsKKyAgICAgICAgYXV0byYgcmVuZGVyZXIgPSBkb3du
Y2FzdDxSZW5kZXJCb3g+KCpyZW5kZXJPYmplY3QpOworICAgICAgICBhdXRvJiBsYXlvdXRCb3gg
PSAqcmVuZGVyZXIubGF5b3V0Qm94KCk7CiAgICAgICAgIGF1dG8mIGZsZXhJdGVtR2VvbWV0cnkg
PSBtX2ZsZXhGb3JtYXR0aW5nU3RhdGUuYm94R2VvbWV0cnkobGF5b3V0Qm94KTsKICAgICAgICAg
YXV0byBib3JkZXJCb3ggPSBMYXlvdXQ6OkJveEdlb21ldHJ5Ojpib3JkZXJCb3hSZWN0KGZsZXhJ
dGVtR2VvbWV0cnkpOwogICAgICAgICByZW5kZXJlci5zZXRMb2NhdGlvbihib3JkZXJCb3gudG9w
TGVmdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9p
bmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcApp
bmRleCAwMzM0NmQ5Yjg1YTkuLmFkODI1NTQzY2QzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0
SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcApAQCAtNDA1LDE1ICs0MDUsMTQgQEAgdm9pZCBMaW5l
TGF5b3V0Ojpjb25zdHJ1Y3RDb250ZW50KCkKICAgICBhdXRvIGlzTGVmdFRvUmlnaHRJbmxpbmVE
aXJlY3Rpb24gPSByb290U3R5bGUuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOwogICAgIGF1dG8g
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUgPSByb290U3R5bGUuaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKTsKICAgICBhdXRvIGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlID0gcm9vdFN0eWxlLmlz
RmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCk7Ci0gICAgYXV0byYgYm94QW5kUmVuZGVyZXJMaXN0
ID0gbV9ib3hUcmVlLmJveEFuZFJlbmRlcmVyTGlzdCgpOwotICAgIGZvciAoYXV0byYgYm94QW5k
UmVuZGVyZXIgOiBib3hBbmRSZW5kZXJlckxpc3QpIHsKLSAgICAgICAgYXV0byYgbGF5b3V0Qm94
ID0gYm94QW5kUmVuZGVyZXIuYm94LmdldCgpOworICAgIGZvciAoYXV0byYgcmVuZGVyT2JqZWN0
IDogbV9ib3hUcmVlLnJlbmRlcmVycygpKSB7CisgICAgICAgIGF1dG8mIGxheW91dEJveCA9ICpy
ZW5kZXJPYmplY3QtPmxheW91dEJveCgpOwogICAgICAgICAKICAgICAgICAgYm9vbCBuZWVkc1Jl
bmRlclRyZWVQb3NpdGlvbmluZyA9IGxheW91dEJveC5pc0F0b21pY0lubGluZUxldmVsQm94KCkg
fHwgbGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkgfHwgbGF5b3V0Qm94LmlzT3V0T2ZG
bG93UG9zaXRpb25lZCgpOwogICAgICAgICBpZiAoIW5lZWRzUmVuZGVyVHJlZVBvc2l0aW9uaW5n
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byYgcmVuZGVyZXIgPSBkb3du
Y2FzdDxSZW5kZXJCb3g+KCpib3hBbmRSZW5kZXJlci5yZW5kZXJlcik7CisgICAgICAgIGF1dG8m
IHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyQm94PigqcmVuZGVyT2JqZWN0KTsKICAgICAgICAg
YXV0byYgbG9naWNhbEdlb21ldHJ5ID0gbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGUuYm94R2VvbWV0
cnkobGF5b3V0Qm94KTsKIAogICAgICAgICBpZiAobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRp
b25lZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94
LmNwcAppbmRleCBhYTc4ODFiZWY1ZDguLjhiN2U1MDBhMDlmNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCkBAIC00NCw4ICs0NCw2IEBAIEJv
eDo6Qm94KHN0ZDo6b3B0aW9uYWw8RWxlbWVudEF0dHJpYnV0ZXM+IGF0dHJpYnV0ZXMsIFJlbmRl
clN0eWxlJiYgc3R5bGUsIHN0ZDo6CiAgICAgOiBtX3N0eWxlKFdURk1vdmUoc3R5bGUpKQogICAg
ICwgbV9lbGVtZW50QXR0cmlidXRlcyhhdHRyaWJ1dGVzKQogICAgICwgbV9iYXNlVHlwZUZsYWdz
KGJhc2VUeXBlRmxhZ3MudG9SYXcoKSkKLSAgICAsIG1faGFzUmFyZURhdGEoZmFsc2UpCi0gICAg
LCBtX2lzQW5vbnltb3VzKGZhbHNlKQogewogICAgIGlmIChmaXJzdExpbmVTdHlsZSkKICAgICAg
ICAgZW5zdXJlUmFyZURhdGEoKS5maXJzdExpbmVTdHlsZSA9IFdURk1vdmUoZmlyc3RMaW5lU3R5
bGUpOwpAQCAtNzIsNiArNzAsMjMgQEAgdm9pZCBCb3g6OnNldFByZXZpb3VzU2libGluZyhCb3gq
IHByZXZpb3VzU2libGluZykKICAgICBtX3ByZXZpb3VzU2libGluZyA9IHByZXZpb3VzU2libGlu
ZzsKIH0KIAorVW5pcXVlUmVmPEJveD4gQm94OjpyZW1vdmVGcm9tUGFyZW50KCkKK3sKKyAgICBp
ZiAobV9wcmV2aW91c1NpYmxpbmcpCisgICAgICAgIG1fcHJldmlvdXNTaWJsaW5nLT5tX25leHRT
aWJsaW5nID0gbV9uZXh0U2libGluZzsKKyAgICBpZiAobV9uZXh0U2libGluZykKKyAgICAgICAg
bV9uZXh0U2libGluZy0+bV9wcmV2aW91c1NpYmxpbmcgPSBtX3ByZXZpb3VzU2libGluZzsKKyAg
ICBpZiAobV9wYXJlbnQtPm1fZmlyc3RDaGlsZCA9PSB0aGlzKQorICAgICAgICBtX3BhcmVudC0+
bV9maXJzdENoaWxkID0gbV9uZXh0U2libGluZzsKKyAgICBpZiAobV9wYXJlbnQtPm1fbGFzdENo
aWxkID09IHRoaXMpCisgICAgICAgIG1fcGFyZW50LT5tX2xhc3RDaGlsZCA9IG1fcHJldmlvdXNT
aWJsaW5nOworICAgIG1fcGFyZW50ID0gbnVsbHB0cjsKKyAgICBtX3ByZXZpb3VzU2libGluZyA9
IG51bGxwdHI7CisgICAgbV9uZXh0U2libGluZyA9IG51bGxwdHI7CisKKyAgICByZXR1cm4gVW5p
cXVlUmVmPEJveD4oKnRoaXMpOworfQorCiB2b2lkIEJveDo6dXBkYXRlU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUmIG5ld1N0eWxlLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+JiYgbmV3Rmly
c3RMaW5lU3R5bGUpCiB7CiAgICAgbV9zdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZShuZXdTdHls
ZSk7CkBAIC0xMjQsNyArMTM5LDcgQEAgYm9vbCBCb3g6OmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0
aW5nQ29udGV4dCgpIGNvbnN0CiAKIGJvb2wgQm94Ojplc3RhYmxpc2hlc0lubGluZUZvcm1hdHRp
bmdDb250ZXh0KCkgY29uc3QKIHsKLSAgICBpZiAoaXNJbnRlZ3JhdGlvblJvb3QoKSkKKyAgICBp
ZiAoaXNJbmxpbmVJbnRlZ3JhdGlvblJvb3QoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICAvLyA5LjQuMiBJbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0cwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaAppbmRleCBmMDQ5YmZiNTVlNmIuLjdmNzllYjc5
NjQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgK
QEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0lGcmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZWxlbWVudEF0dHJpYnV0ZXMgJiYgbV9lbGVtZW50QXR0cmlidXRlcy52YWx1ZSgp
LmVsZW1lbnRUeXBlID09IEVsZW1lbnRUeXBlOjpJRnJhbWU7IH0KICAgICBib29sIGlzSW1hZ2Uo
KSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRBdHRyaWJ1dGVzICYmIG1fZWxlbWVudEF0dHJpYnV0
ZXMudmFsdWUoKS5lbGVtZW50VHlwZSA9PSBFbGVtZW50VHlwZTo6SW1hZ2U7IH0KICAgICBib29s
IGlzSW50ZXJuYWxSdWJ5Qm94KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlz
SW50ZWdyYXRpb25Sb290KCkgY29uc3QgeyByZXR1cm4gIW1fcGFyZW50ICYmICFpc0luaXRpYWxD
b250YWluaW5nQmxvY2soKTsgfQorICAgIGJvb2wgaXNJbmxpbmVJbnRlZ3JhdGlvblJvb3QoKSBj
b25zdCB7IHJldHVybiBtX2lzSW5saW5lSW50ZWdyYXRpb25Sb290OyB9CiAKICAgICBjb25zdCBD
b250YWluZXJCb3gmIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuICptX3BhcmVudDsgfQogICAgIGNv
bnN0IEJveCogbmV4dFNpYmxpbmcoKSBjb25zdCB7IHJldHVybiBtX25leHRTaWJsaW5nLmdldCgp
OyB9CkBAIC0xNjcsMTEgKzE2NywxNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBjb2x1bW5XaWR0aCgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRJc0Fub255bW91cygp
IHsgbV9pc0Fub255bW91cyA9IHRydWU7IH0KKyAgICB2b2lkIHNldElzSW5saW5lSW50ZWdyYXRp
b25Sb290KCkgeyBtX2lzSW5saW5lSW50ZWdyYXRpb25Sb290ID0gdHJ1ZTsgfQogCiAgICAgYm9v
bCBjYW5DYWNoZUZvckxheW91dFN0YXRlKGNvbnN0IExheW91dFN0YXRlJikgY29uc3Q7CiAgICAg
Qm94R2VvbWV0cnkqIGNhY2hlZEdlb21ldHJ5Rm9yTGF5b3V0U3RhdGUoY29uc3QgTGF5b3V0U3Rh
dGUmKSBjb25zdDsKICAgICB2b2lkIHNldENhY2hlZEdlb21ldHJ5Rm9yTGF5b3V0U3RhdGUoTGF5
b3V0U3RhdGUmLCBzdGQ6OnVuaXF1ZV9wdHI8Qm94R2VvbWV0cnk+KSBjb25zdDsKIAorICAgIFVu
aXF1ZVJlZjxCb3g+IHJlbW92ZUZyb21QYXJlbnQoKTsKKworICAgIHZvaWQgaW5jcmVtZW50UHRy
Q291bnQoKSBjb25zdCB7IENhbk1ha2VDaGVja2VkUHRyOjppbmNyZW1lbnRQdHJDb3VudCgpOyB9
CisgICAgdm9pZCBkZWNyZW1lbnRQdHJDb3VudCgpIGNvbnN0IHsgQ2FuTWFrZUNoZWNrZWRQdHI6
OmRlY3JlbWVudFB0ckNvdW50KCk7IH0KKwogcHJvdGVjdGVkOgogICAgIEJveChzdGQ6Om9wdGlv
bmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiwgUmVuZGVyU3R5bGUmJiwgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiYmIGZpcnN0TGluZVN0eWxlLCBPcHRpb25TZXQ8QmFzZVR5cGVGbGFnPik7CiAK
QEAgLTIxNiw4ICsyMjIsOSBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRy
PEJveEdlb21ldHJ5PiBtX2NhY2hlZEdlb21ldHJ5Rm9yTGF5b3V0U3RhdGU7CiAKICAgICB1bnNp
Z25lZCBtX2Jhc2VUeXBlRmxhZ3MgOiA3OyAvLyBPcHRpb25TZXQ8QmFzZVR5cGVGbGFnPgotICAg
IGJvb2wgbV9oYXNSYXJlRGF0YSA6IDE7Ci0gICAgYm9vbCBtX2lzQW5vbnltb3VzIDogMTsKKyAg
ICBib29sIG1faGFzUmFyZURhdGEgOiAxIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNBbm9ueW1v
dXMgOiAxIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNJbmxpbmVJbnRlZ3JhdGlvblJvb3QgOiAx
IHsgZmFsc2UgfTsKIH07CiAKIGlubGluZSBib29sIEJveDo6aXNDb250YWluaW5nQmxvY2tGb3JJ
bkZsb3coKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0Q29udGFpbmVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0
cmVlL0xheW91dENvbnRhaW5lckJveC5jcHAKaW5kZXggMWQyODEzNjhmMGE4Li5lY2QxZDkyOTky
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dENv
bnRhaW5lckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0Q29udGFpbmVyQm94LmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIENvbnRhaW5lckJveDo6
YXBwZW5kQ2hpbGQoVW5pcXVlUmVmPEJveD4gY2hpbGRSZWYpCiAKICAgICAvLyBPd25lcnNoaXAg
aGFzIGJlZW4gdHJhbnNmZXJyZWQuCiAgICAgbV9sYXN0Q2hpbGQgPSBjaGlsZEJveC5yZWxlYXNl
KCk7Ci19Cit9IAogCiB2b2lkIENvbnRhaW5lckJveDo6ZGVzdHJveUNoaWxkcmVuKCkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5l
ckJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Q29udGFpbmVy
Qm94LmgKaW5kZXggOTBkNjhiMzk3ZmQyLi43MDU3OWQ3ZTY5ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5lckJveC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5lckJveC5oCkBAIC02
Miw2ICs2Miw4IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGJhc2Vs
aW5lRm9ySW50ZWdyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Jhc2VsaW5lRm9ySW50ZWdyYXRp
b247IH0KIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQm94OworICAgIAogICAgIENoZWNr
ZWRQdHI8Qm94PiBtX2ZpcnN0Q2hpbGQ7CiAgICAgQ2hlY2tlZFB0cjxCb3g+IG1fbGFzdENoaWxk
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggOTU5
NDRlOGFkYjgyLi4wOTBmZjhjZTRhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
ICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVCb3guaCIKICNpbmNsdWRlICJJbmxpbmVJdGVy
YXRvclRleHRCb3guaCIKKyNpbmNsdWRlICJMYXlvdXRDb250YWluZXJCb3guaCIKICNpbmNsdWRl
ICJMZW5ndGhGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgpAQCAtMTUxLDYgKzE1MiwxNiBAQCBSZW5kZXJFbGVtZW50Ojp+UmVuZGVyRWxlbWVudCgp
CiAgICAgQVNTRVJUKCFtX2ZpcnN0Q2hpbGQpOwogfQogCitMYXlvdXQ6OkNvbnRhaW5lckJveCog
UmVuZGVyRWxlbWVudDo6bGF5b3V0Qm94KCkKK3sKKyAgICByZXR1cm4gZG93bmNhc3Q8TGF5b3V0
OjpDb250YWluZXJCb3g+KFJlbmRlck9iamVjdDo6bGF5b3V0Qm94KCkpOworfQorCitjb25zdCBM
YXlvdXQ6OkNvbnRhaW5lckJveCogUmVuZGVyRWxlbWVudDo6bGF5b3V0Qm94KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZG93bmNhc3Q8TGF5b3V0OjpDb250YWluZXJCb3g+KFJlbmRlck9iamVjdDo6
bGF5b3V0Qm94KCkpOworfQorCiBib29sIFJlbmRlckVsZW1lbnQ6OmlzQ29udGVudERhdGFTdXBw
b3J0ZWQoY29uc3QgQ29udGVudERhdGEmIGNvbnRlbnREYXRhKQogewogICAgIC8vIE1pbmltYWwg
c3VwcG9ydCBmb3IgY29udGVudCBwcm9wZXJ0aWVzIHJlcGxhY2luZyBhbiBlbnRpcmUgZWxlbWVu
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4IGZlNWI3NWU1
MmE3My4uNzg5MTNjNzY5MGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmgKQEAgLTQxLDYgKzQxLDEwIEBAIHN0cnVjdCBNYXJnaW5SZWN0IHsKICAgICBMYXlvdXRS
ZWN0IGFuY2hvclJlY3Q7CiB9OwogCituYW1lc3BhY2UgTGF5b3V0IHsKK2NsYXNzIENvbnRhaW5l
ckJveDsKK30KKwogY2xhc3MgUmVuZGVyRWxlbWVudCA6IHB1YmxpYyBSZW5kZXJPYmplY3Qgewog
ICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoUmVuZGVyRWxlbWVudCk7CiBwdWJsaWM6CkBAIC04
Niw2ICs5MCw5IEBAIHB1YmxpYzoKICAgICBSZW5kZXJPYmplY3QqIGZpcnN0SW5GbG93Q2hpbGQo
KSBjb25zdDsKICAgICBSZW5kZXJPYmplY3QqIGxhc3RJbkZsb3dDaGlsZCgpIGNvbnN0OwogCisg
ICAgTGF5b3V0OjpDb250YWluZXJCb3gqIGxheW91dEJveCgpOworICAgIGNvbnN0IExheW91dDo6
Q29udGFpbmVyQm94KiBsYXlvdXRCb3goKSBjb25zdDsKKwogICAgIC8vIE5vdGUgdGhhdCBldmVu
IGlmIHRoZXNlIDIgImNhbkNvbnRhaW4iIGZ1bmN0aW9ucyByZXR1cm4gdHJ1ZSBmb3IgYSBwYXJ0
aWN1bGFyIHJlbmRlcmVyLCBpdCBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIHRoZSByZW5kZXJl
ciBpcyB0aGUgY29udGFpbmluZyBibG9jayAoc2VlIGNvbnRhaW5pbmdCbG9ja0ZvckFic29sdXRl
KEZpeGVkKVBvc2l0aW9uKS4KICAgICBib29sIGNhbkNvbnRhaW5GaXhlZFBvc2l0aW9uT2JqZWN0
cygpIGNvbnN0OwogICAgIGJvb2wgY2FuQ29udGFpbkFic29sdXRlbHlQb3NpdGlvbmVkT2JqZWN0
cygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRl
eCA1MGYwMmI0YTIyZjkuLjVkMDIwYWI3NTEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJIVE1MVGFibGVD
ZWxsRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJI
aXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0
SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgiCiAjaW5jbHVkZSAiTGVnYWN5UmVuZGVyU1ZHTW9kZWxP
YmplY3QuaCIKICNpbmNsdWRlICJMZWdhY3lSZW5kZXJTVkdSb290LmgiCkBAIC0xMTQsNyArMTE1
LDcgQEAgc3RydWN0IFNhbWVTaXplQXNSZW5kZXJPYmplY3QgewogICAgIGJvb2wgd2Vha1B0ckZh
Y3Rvcldhc0NvbnN0cnVjdGVkT25NYWluVGhyZWFkOwogICAgIEhhc2hTZXQ8dm9pZCo+IGNhY2hl
ZFJlc291cmNlQ2xpZW50QXNzb2NpYXRlZFJlc291cmNlczsKICNlbmRpZgotICAgIHZvaWQqIHBv
aW50ZXJzWzVdOworICAgIHZvaWQqIHBvaW50ZXJzWzZdOwogI2lmIEFTU0VSVF9FTkFCTEVECiAg
ICAgdW5zaWduZWQgbV9kZWJ1Z0JpdGZpZWxkcyA6IDI7CiAjZW5kaWYKQEAgLTE2MSw2ICsxNjIs
MTYgQEAgUmVuZGVyT2JqZWN0Ojp+UmVuZGVyT2JqZWN0KCkKICAgICBBU1NFUlQoIWhhc1JhcmVE
YXRhKCkpOwogfQogCit2b2lkIFJlbmRlck9iamVjdDo6c2V0TGF5b3V0Qm94KExheW91dDo6Qm94
JiBib3gpCit7CisgICAgbV9sYXlvdXRCb3ggPSAmYm94OworfQorCit2b2lkIFJlbmRlck9iamVj
dDo6Y2xlYXJMYXlvdXRCb3goKQoreworICAgIG1fbGF5b3V0Qm94ID0gbnVsbHB0cjsKK30KKwog
UmVuZGVyVGhlbWUmIFJlbmRlck9iamVjdDo6dGhlbWUoKSBjb25zdAogewogICAgIHJldHVybiBS
ZW5kZXJUaGVtZTo6c2luZ2xldG9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmgKaW5kZXggMjk4MGU4MDFjZWE4Li4xOGJjNjgzNzRlODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTM5LDggKzM5LDggQEAKICNpbmNsdWRlICJTY3Jv
bGxBbGlnbm1lbnQuaCIKICNpbmNsdWRlICJTdHlsZUltYWdlLmgiCiAjaW5jbHVkZSAiVGV4dEFm
ZmluaXR5LmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRQdHIuaD4KICNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiBj
bGFzcyBUZXh0U3RyZWFtOwpAQCAtOTIsNiArOTIsMTAgQEAgY29uc3QgaW50IGNhcmV0V2lkdGgg
PSAxOwogCiBzdHJ1Y3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnM7CiAKK25hbWVzcGFjZSBM
YXlvdXQgeworY2xhc3MgQm94OworfQorCiBuYW1lc3BhY2UgU3R5bGUgewogY2xhc3MgUHNldWRv
RWxlbWVudFJlcXVlc3Q7CiB9CkBAIC0xMTAsNiArMTE0LDExIEBAIHB1YmxpYzoKICAgICBleHBs
aWNpdCBSZW5kZXJPYmplY3QoTm9kZSYpOwogICAgIHZpcnR1YWwgflJlbmRlck9iamVjdCgpOwog
CisgICAgTGF5b3V0OjpCb3gqIGxheW91dEJveCgpIHsgcmV0dXJuIG1fbGF5b3V0Qm94LmdldCgp
OyB9CisgICAgY29uc3QgTGF5b3V0OjpCb3gqIGxheW91dEJveCgpIGNvbnN0IHsgcmV0dXJuIG1f
bGF5b3V0Qm94LmdldCgpOyB9CisgICAgdm9pZCBzZXRMYXlvdXRCb3goTGF5b3V0OjpCb3gmKTsK
KyAgICB2b2lkIGNsZWFyTGF5b3V0Qm94KCk7CisKICAgICBSZW5kZXJUaGVtZSYgdGhlbWUoKSBj
b25zdDsKIAogICAgIHZpcnR1YWwgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25zdCA9IDA7
CkBAIC04NDcsNiArODU2LDggQEAgcHJpdmF0ZToKICAgICBSZW5kZXJPYmplY3QqIG1fcHJldmlv
dXM7CiAgICAgUmVuZGVyT2JqZWN0KiBtX25leHQ7CiAKKyAgICBDaGVja2VkUHRyPExheW91dDo6
Qm94PiBtX2xheW91dEJveDsKKwogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2hhc0FY
T2JqZWN0IDogMTsKICAgICBtdXRhYmxlIGJvb2wgbV9zZXROZWVkc0xheW91dEZvcmJpZGRlbiA6
IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggMTc2NjA3YTQ3
NGUzLi5jOTA0NThlMzAzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5j
cHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJIVE1MSUZyYW1lRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbWFnZVF1YWxpdHlDb250cm9sbGVy
LmgiCisjaW5jbHVkZSAiTGF5b3V0SW5pdGlhbENvbnRhaW5pbmdCbG9jay5oIgogI2luY2x1ZGUg
Ik5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyRGVz
Y2VuZGFudEl0ZXJhdG9yLmgiCkBAIC02NCw2ICs2NSw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChSZW5kZXJWaWV3KTsKIFJlbmRlclZpZXc6OlJlbmRlclZpZXcoRG9jdW1lbnQmIGRv
Y3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGRvY3Vt
ZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fZnJhbWVWaWV3KCpkb2N1bWVudC52aWV3KCkp
CisgICAgLCBtX2luaXRpYWxDb250YWluaW5nQmxvY2soV1RGOjptYWtlVW5pcXVlPExheW91dDo6
SW5pdGlhbENvbnRhaW5pbmdCbG9jaz4oUmVuZGVyU3R5bGU6OmNsb25lKHRoaXMtPnN0eWxlKCkp
KSkKICAgICAsIG1fc2VsZWN0aW9uKCp0aGlzKQogICAgICwgbV9sYXp5UmVwYWludFRpbWVyKCp0
aGlzLCAmUmVuZGVyVmlldzo6bGF6eVJlcGFpbnRUaW1lckZpcmVkKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggZGMxYTVkMjUyN2U2Li5jMDcyM2EzN2QyYjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtMzgsNiArMzgsMTAgQEAgY2xh
c3MgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOwogY2xhc3MgUmVuZGVyTGF5b3V0U3RhdGU7CiBjbGFz
cyBSZW5kZXJRdW90ZTsKIAorbmFtZXNwYWNlIExheW91dCB7CitjbGFzcyBJbml0aWFsQ29udGFp
bmluZ0Jsb2NrOworfQorCiBjbGFzcyBSZW5kZXJWaWV3IGZpbmFsIDogcHVibGljIFJlbmRlckJs
b2NrRmxvdyB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChSZW5kZXJWaWV3KTsKIHB1Ymxp
YzoKQEAgLTY5LDYgKzczLDggQEAgcHVibGljOgogCiAgICAgRnJhbWVWaWV3JiBmcmFtZVZpZXco
KSBjb25zdCB7IHJldHVybiBtX2ZyYW1lVmlldzsgfQogCisgICAgTGF5b3V0OjpJbml0aWFsQ29u
dGFpbmluZ0Jsb2NrJiBpbml0aWFsQ29udGFpbmluZ0Jsb2NrKCkgY29uc3QgeyByZXR1cm4gKm1f
aW5pdGlhbENvbnRhaW5pbmdCbG9jazsgfQorCiAgICAgYm9vbCBuZWVkc1JlcGFpbnRIYWNrQWZ0
ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlRm9yRGVidWdPdmVybGF5c09ubHkoKSBjb25zdCB7IHJl
dHVybiBtX25lZWRzUmVwYWludEhhY2tBZnRlckNvbXBvc2l0aW5nTGF5ZXJVcGRhdGVGb3JEZWJ1
Z092ZXJsYXlzT25seTsgfTsKICAgICB2b2lkIHNldE5lZWRzUmVwYWludEhhY2tBZnRlckNvbXBv
c2l0aW5nTGF5ZXJVcGRhdGVGb3JEZWJ1Z092ZXJsYXlzT25seShib29sIHZhbHVlID0gdHJ1ZSkg
eyBtX25lZWRzUmVwYWludEhhY2tBZnRlckNvbXBvc2l0aW5nTGF5ZXJVcGRhdGVGb3JEZWJ1Z092
ZXJsYXlzT25seSA9IHZhbHVlOyB9CiAKQEAgLTIyNCw2ICsyMzAsOCBAQCBwcml2YXRlOgogICAg
IC8vIEluY2x1ZGUgdGhpcyBSZW5kZXJWaWV3LgogICAgIHVpbnQ2NF90IG1fcmVuZGVyZXJDb3Vu
dCB7IDEgfTsKIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXlvdXQ6OkluaXRpYWxDb250YWluaW5n
QmxvY2s+IG1faW5pdGlhbENvbnRhaW5pbmdCbG9jazsKKwogICAgIG11dGFibGUgc3RkOjp1bmlx
dWVfcHRyPFJlZ2lvbj4gbV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb247CiAgICAgU2VsZWN0aW9u
UmFuZ2VEYXRhIG1fc2VsZWN0aW9uOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>462576</attachid>
            <date>2022-09-23 23:24:49 -0700</date>
            <delta_ts>2022-09-24 00:41:01 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-245568-20220924092447.patch</filename>
            <type>text/plain</type>
            <size>29052</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">RnJvbSAzMWNkNTZlNzMwYzZmNzFjNWJiZGRmM2U3OWE4ZDkxOGE1Njc1ZjlmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnR0aSBLb2l2aXN0byA8YW50dGlAYXBwbGUuY29tPgpEYXRl
OiBGcmksIDIzIFNlcCAyMDIyIDEzOjAxOjAyICswMzAwClN1YmplY3Q6IFtQQVRDSF0gW0xGQ11b
SW50ZWdyYXRpb25dIEFkZCBhIExheW91dDo6Qm94IHBvaW50ZXIgdG8gUmVuZGVyT2JqZWN0CiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ1NTY4IDxyZGFyOi8vMTAw
MzE2NzIxPgoKUmV2aWV3ZWQgYnkgQWxhbiBCdWp0YXMuCgpSZXBsYWNlIHRoZSBtYXAgaW4gTGlu
ZUxheW91dCB3aXRoIGEgZGlyZWN0IHBvaW50ZXIgaW4gcmVuZGVyIG9iamVjdHMuClRoaXMgaXMg
ZmFzdGVyIGFuZCBhbHNvIHVzZXMgbGVzcyBtZW1vcnkgaW4gbW9zdCBjYXNlcyBzaW5jZSB3aXRo
IGV4cGFuZGVkIElGQyBjb3ZlcmFnZSBtYWpvcml0eSBvZiByZW5kZXJlcnMgYWxyZWFkeSBlbmQg
dXAgaW4gdGhlc2UgbWFwcy4KClRoZSBwYXRjaCBhbHNvIG1ha2VzIGl0IHNvIHRoYXQgdGhlcmUg
aXMgb25seSBldmVyIGEgc2luZ2xlIGxheW91dCBib3ggcGVyIHJlbmRlcmVyLiBCZWZvcmUgYW4g
aW5saW5lLWJsb2NrIGNvdWxkIGhhdmUgdHdvCmFzc29jaWF0ZWQgbGF5b3V0IGJveGVzIChhIGNo
aWxkIGJveCBmb3IgdGhlIHBhcmVudCBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0IGFuZCB0aGUg
cm9vdCBvZiBpdHMgb3duIGNvbnRleHQpLgoKVGhlIHBhdGNoIGFsc28gYWRkcyBJbml0aWFsQ29u
dGFpbmluZ0Jsb2NrIHRvIFJlbmRlclZpZXcuIEFsbCBsYXlvdXQgYm94ZXMgd2l0aG91dCBvdGhl
ciBwYXJlbnRzIGFyZSBwYXJlbnRlZCB0aGVyZSBzbwppdCBhY3RzIGFzIHRoZSByb290IG9mIHRo
ZSBsYXlvdXQgYm94IHRyZWUuCgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5n
Q29udGV4dDo6Z2VvbWV0cnlGb3JCb3ggY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3BwOgooV2ViQ29yZTo6TGF5b3V0
SW50ZWdyYXRpb246OkJveFRyZWU6OkJveFRyZWUpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OkJveFRyZWU6On5Cb3hUcmVlKToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpCb3hU
cmVlOjpidWlsZFRyZWVGb3JJbmxpbmVDb250ZW50KToKKFdlYkNvcmU6OkxheW91dEludGVncmF0
aW9uOjpCb3hUcmVlOjphcHBlbmRDaGlsZCk6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6
Qm94VHJlZTo6cm9vdExheW91dEJveCBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6Qm94VHJlZTo6cm9vdExheW91dEJveCk6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6
Qm94VHJlZTo6bGF5b3V0Qm94Rm9yUmVuZGVyZXIpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OkJveFRyZWU6OnJlbmRlcmVyRm9yTGF5b3V0Qm94KToKKFdlYkNvcmU6OkxheW91dEludGVn
cmF0aW9uOjpCb3hUcmVlOjppbml0aWFsQ29udGFpbmluZ0Jsb2NrKToKKCk6IERlbGV0ZWQuCiog
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94VHJl
ZS5oOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveFRyZWU6OmJveENvdW50IGNvbnN0
KToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpCb3hUcmVlOjpyZW5kZXJlcnMgY29uc3Qp
OgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveFRyZWU6OnJvb3RMYXlvdXRCb3ggY29u
c3QpOiBEZWxldGVkLgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveFRyZWU6OnJvb3RM
YXlvdXRCb3gpOiBEZWxldGVkLgooKTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dEludGVncmF0
aW9uOjpCb3hUcmVlOjpib3hBbmRSZW5kZXJlckxpc3QgY29uc3QpOiBEZWxldGVkLgoqIFNvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9mbGV4L0xheW91dEludGVncmF0aW9uRmxleExh
eW91dC5jcHA6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6RmxleExheW91dDo6bGF5b3V0
KToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpGbGV4TGF5b3V0Ojp1cGRhdGVSZW5kZXJl
cnMgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5
b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcDoKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9u
OjpMaW5lTGF5b3V0Ojpjb25zdHJ1Y3RDb250ZW50KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQv
bGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpCb3g6OkJveCk6CihX
ZWJDb3JlOjpMYXlvdXQ6OkJveDo6cmVtb3ZlRnJvbVBhcmVudCk6CihXZWJDb3JlOjpMYXlvdXQ6
OkJveDo6ZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCBjb25zdCk6CiogU291cmNl
L1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94Lmg6CihXZWJDb3JlOjpMYXlvdXQ6
OkJveDo6aXNJbmxpbmVJbnRlZ3JhdGlvblJvb3QgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpC
b3g6OnNldElzSW5saW5lSW50ZWdyYXRpb25Sb290KToKKFdlYkNvcmU6OkxheW91dDo6Qm94Ojpp
bmNyZW1lbnRQdHJDb3VudCBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkJveDo6ZGVjcmVtZW50
UHRyQ291bnQgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmlzSW50ZWdyYXRpb25Sb290
IGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXRDb250YWluZXJCb3guY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpDb250YWluZXJCb3g6OmFwcGVu
ZENoaWxkKToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWlu
ZXJCb3guaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CihX
ZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpsYXlvdXRCb3gpOgooV2ViQ29yZTo6UmVuZGVyRWxlbWVu
dDo6bGF5b3V0Qm94IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5oOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgooV2Vi
Q29yZTo6UmVuZGVyT2JqZWN0OjpzZXRMYXlvdXRCb3gpOgooV2ViQ29yZTo6UmVuZGVyT2JqZWN0
OjpjbGVhckxheW91dEJveCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oOgooV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpsYXlvdXRCb3gpOgooV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjpsYXlvdXRCb3ggY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmNwcDoKKFdlYkNvcmU6OlJlbmRlclZpZXc6OlJlbmRlclZpZXcpOgoqIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3Lmg6Ci0tLQogLi4uL2Zvcm1hdHRpbmdDb250ZXh0
cy9Gb3JtYXR0aW5nQ29udGV4dC5jcHAgIHwgICA0ICstCiAuLi4vaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25Cb3hUcmVlLmNwcCAgfCAxMDIgKysrKysrKysrKysrLS0tLS0tCiAuLi4vaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmggICAgfCAgMjEgKystLQogLi4uL2Zs
ZXgvTGF5b3V0SW50ZWdyYXRpb25GbGV4TGF5b3V0LmNwcCAgICAgIHwgIDE1ICsrLQogLi4uL2lu
bGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwICAgIHwgICA3ICstCiAuLi4vV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwICAgfCAgMjEgKysrLQogU291cmNl
L1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmggIHwgIDEzICsrLQogLi4uL2xh
eW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5lckJveC5oICAgIHwgICAyICsKIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCAgICB8ICAxMSArKwogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaCAgICAgIHwgICA3ICsrCiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCAgICAgfCAgMTMgKystCiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggICAgICAgfCAgMTMgKystCiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgICAgICAgfCAgIDIgKwogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCAgICAgICAgIHwgICA5ICsrCiAxNCBmaWxlcyBjaGFu
Z2VkLCAxNzMgaW5zZXJ0aW9ucygrKSwgNjcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdD
b250ZXh0LmNwcAppbmRleCAzMDQzZjk3MDFkY2IuLjQxODUwYTdlMDJjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3Jt
YXR0aW5nQ29udGV4dC5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBjb25zdCBCb3hHZW9tZXRyeSYg
Rm9ybWF0dGluZ0NvbnRleHQ6Omdlb21ldHJ5Rm9yQm94KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBz
dGQ6OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
IWlzPEluaXRpYWxDb250YWluaW5nQmxvY2s+KGxheW91dEJveCkgJiYgIWxheW91dEJveC5pc0lu
dGVncmF0aW9uUm9vdCgpICYmICZmb3JtYXR0aW5nQ29udGV4dFJvb3QobGF5b3V0Qm94KSA9PSAm
cm9vdCgpKSB7CisgICAgICAgIGlmICghaXM8SW5pdGlhbENvbnRhaW5pbmdCbG9jaz4obGF5b3V0
Qm94KSAmJiAmZm9ybWF0dGluZ0NvbnRleHRSb290KGxheW91dEJveCkgPT0gJnJvb3QoKSkgewog
ICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgbm9uLWVzY2FwZSBjYXNlIG9mIGFjY2Vzc2luZyBh
IGJveCdzIGdlb21ldHJ5IGluZm9ybWF0aW9uIHdpdGhpbiB0aGUgc2FtZSBmb3JtYXR0aW5nIGNv
bnRleHQuCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjE0LDcgKzIx
NCw3IEBAIGNvbnN0IEJveEdlb21ldHJ5JiBGb3JtYXR0aW5nQ29udGV4dDo6Z2VvbWV0cnlGb3JC
b3goY29uc3QgQm94JiBsYXlvdXRCb3gsIHN0ZDo6CiAgICAgICAgIGlmICgqZXNjYXBlUmVhc29u
ID09IEVzY2FwZVJlYXNvbjo6RmxvYXRCb3hJc0Fsd2F5c1JlbGF0aXZlVG9GbG9hdFN0YXRlUm9v
dCkgewogICAgICAgICAgICAgLy8gRmxvYXQgYm94IHRvcC9sZWZ0IHZhbHVlcyBhcmUgbWFwcGVk
IHJlbGF0aXZlIHRvIHRoZSBGbG9hdFN0YXRlJ3Mgcm9vdC4gSW5saW5lIGZvcm1hdHRpbmcgY29u
dGV4dHMoQSkgaW5oZXJpdCBmbG9hdHMgZnJvbSBwYXJlbnQKICAgICAgICAgICAgIC8vIGJsb2Nr
IGZvcm1hdHRpbmcgY29udGV4dHMoQikuIEZsb2F0cyBpbiB0aGVzZSBpbmxpbmUgZm9ybWF0dGlu
ZyBjb250ZXh0cyhBKSBuZWVkIHRvIGJlIG1hcHBlZCB0byB0aGUgcGFyZW50LCBibG9jayBmb3Jt
YXR0aW5nIGNvbnRleHQoQikuCi0gICAgICAgICAgICBpZiAobGF5b3V0Qm94LmlzSW50ZWdyYXRp
b25Sb290KCkpCisgICAgICAgICAgICBpZiAobGF5b3V0Qm94LmlzSW5saW5lSW50ZWdyYXRpb25S
b290KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgICAgIGF1dG8m
IGZvcm1hdHRpbmdDb250ZXh0Um9vdEZvckJveCA9IGZvcm1hdHRpbmdDb250ZXh0Um9vdChsYXlv
dXRCb3gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uQm94VHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNwcAppbmRleCA1MjRlZjIyMzJlZjQuLmVm
YmNmMTk1YjYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uQm94VHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94VHJlZS5jcHAKQEAgLTQzLDYgKzQzLDcg
QEAKICNpbmNsdWRlICJSZW5kZXJMaXN0SXRlbS5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RNYXJr
ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZS5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIK
ICNpbmNsdWRlICJUZXh0VXRpbC5oIgogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQpAQCAt
NzgsMTkgKzc5LDUzIEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGZpcnN0
TGluZVN0eWxlRm9yKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyCiAKIEJveFRyZWU6OkJveFRy
ZWUoUmVuZGVyQmxvY2smIHJvb3RSZW5kZXJlcikKICAgICA6IG1fcm9vdFJlbmRlcmVyKHJvb3RS
ZW5kZXJlcikKLSAgICAsIG1fcm9vdChMYXlvdXQ6OkJveDo6RWxlbWVudEF0dHJpYnV0ZXMgeyBM
YXlvdXQ6OkJveDo6RWxlbWVudFR5cGU6OkdlbmVyaWNFbGVtZW50IH0sIHJvb3RCb3hTdHlsZShy
b290UmVuZGVyZXIpLCBmaXJzdExpbmVTdHlsZUZvcihyb290UmVuZGVyZXIpKQogeworICAgIGF1
dG8qIHJvb3RCb3ggPSBtX3Jvb3RSZW5kZXJlci5sYXlvdXRCb3goKTsKKyAgICBpZiAoIXJvb3RC
b3gpIHsKKyAgICAgICAgYXV0byBhdHRyaWJ1dGVzID0gTGF5b3V0OjpCb3g6OkVsZW1lbnRBdHRy
aWJ1dGVzIHsgTGF5b3V0OjpCb3g6OkVsZW1lbnRUeXBlOjpHZW5lcmljRWxlbWVudCB9OworICAg
ICAgICBhdXRvIG5ld1Jvb3RCb3ggPSBtYWtlVW5pcXVlUmVmPExheW91dDo6Q29udGFpbmVyQm94
PihhdHRyaWJ1dGVzLCByb290Qm94U3R5bGUocm9vdFJlbmRlcmVyKSwgZmlyc3RMaW5lU3R5bGVG
b3Iocm9vdFJlbmRlcmVyKSk7CisgICAgICAgIHJvb3RCb3ggPSBuZXdSb290Qm94LnB0cigpOwor
ICAgICAgICBtX3Jvb3RSZW5kZXJlci5zZXRMYXlvdXRCb3goKnJvb3RCb3gpOworICAgICAgICBp
bml0aWFsQ29udGFpbmluZ0Jsb2NrKCkuYXBwZW5kQ2hpbGQoV1RGTW92ZShuZXdSb290Qm94KSk7
CisgICAgfQorCiAgICAgaWYgKHJvb3RSZW5kZXJlci5pc0Fub255bW91cygpKQotICAgICAgICBt
X3Jvb3Quc2V0SXNBbm9ueW1vdXMoKTsKKyAgICAgICAgcm9vdEJveC0+c2V0SXNBbm9ueW1vdXMo
KTsKIAotICAgIGlmIChpczxSZW5kZXJCbG9ja0Zsb3c+KHJvb3RSZW5kZXJlcikpCisgICAgaWYg
KGlzPFJlbmRlckJsb2NrRmxvdz4ocm9vdFJlbmRlcmVyKSkgeworICAgICAgICByb290Qm94LT5z
ZXRJc0lubGluZUludGVncmF0aW9uUm9vdCgpOwogICAgICAgICBidWlsZFRyZWVGb3JJbmxpbmVD
b250ZW50KCk7Ci0gICAgZWxzZSBpZiAoaXM8UmVuZGVyRmxleGlibGVCb3g+KHJvb3RSZW5kZXJl
cikpCisgICAgfSBlbHNlIGlmIChpczxSZW5kZXJGbGV4aWJsZUJveD4ocm9vdFJlbmRlcmVyKSkK
ICAgICAgICAgYnVpbGRUcmVlRm9yRmxleENvbnRlbnQoKTsKICAgICBlbHNlCiAgICAgICAgIEFT
U0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7CiB9CiAKK0JveFRyZWU6On5Cb3hUcmVlKCkKK3sK
KyAgICBmb3IgKGF1dG8mIHJlbmRlcmVyIDogbV9yZW5kZXJlcnMpIHsKKyAgICAgICAgaWYgKCFy
ZW5kZXJlcikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGJvb2wgaXNMRkNJbmxp
bmVCbG9jayA9IGlzPFJlbmRlckJsb2NrRmxvdz4oKnJlbmRlcmVyKSAmJiBkb3duY2FzdDxSZW5k
ZXJCbG9ja0Zsb3c+KCpyZW5kZXJlcikubW9kZXJuTGluZUxheW91dCgpOworICAgICAgICBpZiAo
aXNMRkNJbmxpbmVCbG9jaykgeworICAgICAgICAgICAgYXV0byBkZXRhY2hlZEJveCA9IHJlbmRl
cmVyLT5sYXlvdXRCb3goKS0+cmVtb3ZlRnJvbVBhcmVudCgpOworICAgICAgICAgICAgaW5pdGlh
bENvbnRhaW5pbmdCbG9jaygpLmFwcGVuZENoaWxkKFdURk1vdmUoZGV0YWNoZWRCb3gpKTsKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgcmVuZGVyZXItPmNsZWFy
TGF5b3V0Qm94KCk7CisgICAgfQorCisgICAgbV9ib3hUb1JlbmRlcmVyTWFwID0geyB9OworCisg
ICAgaWYgKCZyb290TGF5b3V0Qm94KCkucGFyZW50KCkgPT0gJmluaXRpYWxDb250YWluaW5nQmxv
Y2soKSkgeworICAgICAgICBhdXRvIHRvRGVsZXRlID0gcm9vdExheW91dEJveCgpLnJlbW92ZUZy
b21QYXJlbnQoKTsKKyAgICAgICAgbV9yb290UmVuZGVyZXIuY2xlYXJMYXlvdXRCb3goKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgcm9vdExheW91dEJveCgpLmRlc3Ryb3lDaGlsZHJlbigpOworfQor
CiB2b2lkIEJveFRyZWU6OmJ1aWxkVHJlZUZvcklubGluZUNvbnRlbnQoKQogewogICAgIGF1dG8g
Y3JlYXRlQ2hpbGRCb3ggPSBbJl0oUmVuZGVyT2JqZWN0JiBjaGlsZFJlbmRlcmVyKSAtPiBzdGQ6
OnVuaXF1ZV9wdHI8TGF5b3V0OjpCb3g+IHsKQEAgLTE4NSw4ICsyMjAsMTIgQEAgdm9pZCBCb3hU
cmVlOjpidWlsZFRyZWVGb3JJbmxpbmVDb250ZW50KCkKIAogICAgIGZvciAoYXV0byB3YWxrZXIg
PSBJbmxpbmVXYWxrZXIoZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PihtX3Jvb3RSZW5kZXJlcikp
OyAhd2Fsa2VyLmF0RW5kKCk7IHdhbGtlci5hZHZhbmNlKCkpIHsKICAgICAgICAgYXV0byYgY2hp
bGRSZW5kZXJlciA9ICp3YWxrZXIuY3VycmVudCgpOwotICAgICAgICBhdXRvIGNoaWxkQm94ID0g
Y3JlYXRlQ2hpbGRCb3goY2hpbGRSZW5kZXJlcik7Ci0gICAgICAgIGFwcGVuZENoaWxkKG1ha2VV
bmlxdWVSZWZGcm9tTm9uTnVsbFVuaXF1ZVB0cihXVEZNb3ZlKGNoaWxkQm94KSksIGNoaWxkUmVu
ZGVyZXIpOworICAgICAgICBhdXRvIGNoaWxkTGF5b3V0Qm94ID0gWyZdIHsKKyAgICAgICAgICAg
IGlmIChhdXRvIGV4aXN0aW5nQ2hpbGRCb3ggPSBjaGlsZFJlbmRlcmVyLmxheW91dEJveCgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBleGlzdGluZ0NoaWxkQm94LT5yZW1vdmVGcm9tUGFyZW50
KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZkZyb21Ob25OdWxsVW5pcXVlUHRy
KGNyZWF0ZUNoaWxkQm94KGNoaWxkUmVuZGVyZXIpKTsKKyAgICAgICAgfTsKKyAgICAgICAgYXBw
ZW5kQ2hpbGQoY2hpbGRMYXlvdXRCb3goKSwgY2hpbGRSZW5kZXJlcik7CiAgICAgfQogfQogCkBA
IC0yMDMsMTcgKzI0MiwxMCBAQCB2b2lkIEJveFRyZWU6OmFwcGVuZENoaWxkKFVuaXF1ZVJlZjxM
YXlvdXQ6OkJveD4gY2hpbGRCb3gsIFJlbmRlck9iamVjdCYgY2hpbGRSZQogewogICAgIGF1dG8m
IHBhcmVudEJveCA9IGxheW91dEJveEZvclJlbmRlcmVyKCpjaGlsZFJlbmRlcmVyLnBhcmVudCgp
KTsKIAotICAgIG1fYm94ZXMuYXBwZW5kKHsgY2hpbGRCb3guZ2V0KCksICZjaGlsZFJlbmRlcmVy
IH0pOworICAgIG1fcmVuZGVyZXJzLmFwcGVuZCgmY2hpbGRSZW5kZXJlcik7CiAKKyAgICBjaGls
ZFJlbmRlcmVyLnNldExheW91dEJveChjaGlsZEJveCk7CiAgICAgcGFyZW50Qm94LmFwcGVuZENo
aWxkKFdURk1vdmUoY2hpbGRCb3gpKTsKLQotICAgIGlmIChtX2JveGVzLnNpemUoKSA+IHNtYWxs
VHJlZVRocmVzaG9sZCkgewotICAgICAgICBpZiAobV9yZW5kZXJlclRvQm94TWFwLmlzRW1wdHko
KSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fYm94ZXMpCi0gICAgICAgICAg
ICAgICAgbV9yZW5kZXJlclRvQm94TWFwLmFkZChlbnRyeS5yZW5kZXJlciwgZW50cnkuYm94Lmdl
dCgpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX3JlbmRlcmVyVG9Cb3hNYXAuYWRk
KCZjaGlsZFJlbmRlcmVyLCBtX2JveGVzLmxhc3QoKS5ib3guZ2V0KCkpOwotICAgIH0KIH0KIAog
dm9pZCBCb3hUcmVlOjp1cGRhdGVTdHlsZShjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVu
ZGVyZXIpCkBAIC0yMzIsMjAgKzI2NCwxOSBAQCB2b2lkIEJveFRyZWU6OnVwZGF0ZVN0eWxlKGNv
bnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJlcikKICAgICB9CiB9CiAKLUxheW91dDo6
Qm94JiBCb3hUcmVlOjpsYXlvdXRCb3hGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QmIHJl
bmRlcmVyKQorY29uc3QgTGF5b3V0OjpDb250YWluZXJCb3gmIEJveFRyZWU6OnJvb3RMYXlvdXRC
b3goKSBjb25zdAogewotICAgIGlmICgmcmVuZGVyZXIgPT0gJm1fcm9vdFJlbmRlcmVyKQotICAg
ICAgICByZXR1cm4gbV9yb290OworICAgIHJldHVybiAqbV9yb290UmVuZGVyZXIubGF5b3V0Qm94
KCk7Cit9CiAKLSAgICBpZiAobV9ib3hlcy5zaXplKCkgPD0gc21hbGxUcmVlVGhyZXNob2xkKSB7
Ci0gICAgICAgIGF1dG8gaW5kZXggPSBtX2JveGVzLmZpbmRJZihbJl0oYXV0byYgZW50cnkpIHsK
LSAgICAgICAgICAgIHJldHVybiBlbnRyeS5yZW5kZXJlciA9PSAmcmVuZGVyZXI7Ci0gICAgICAg
IH0pOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmRleCAhPSBub3RGb3VuZCk7Ci0gICAgICAg
IHJldHVybiBtX2JveGVzW2luZGV4XS5ib3g7Ci0gICAgfQorTGF5b3V0OjpDb250YWluZXJCb3gm
IEJveFRyZWU6OnJvb3RMYXlvdXRCb3goKQoreworICAgIHJldHVybiAqbV9yb290UmVuZGVyZXIu
bGF5b3V0Qm94KCk7Cit9CiAKLSAgICByZXR1cm4gKm1fcmVuZGVyZXJUb0JveE1hcC5nZXQoJnJl
bmRlcmVyKTsKK0xheW91dDo6Qm94JiBCb3hUcmVlOjpsYXlvdXRCb3hGb3JSZW5kZXJlcihjb25z
dCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQoreworICAgIHJldHVybiAqY29uc3RfY2FzdDxSZW5k
ZXJPYmplY3QmPihyZW5kZXJlcikubGF5b3V0Qm94KCk7CiB9CiAKIGNvbnN0IExheW91dDo6Qm94
JiBCb3hUcmVlOjpsYXlvdXRCb3hGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRl
cmVyKSBjb25zdApAQCAtMjY1LDIwICsyOTYsMjAgQEAgTGF5b3V0OjpDb250YWluZXJCb3gmIEJv
eFRyZWU6OmxheW91dEJveEZvclJlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmUK
IAogUmVuZGVyT2JqZWN0JiBCb3hUcmVlOjpyZW5kZXJlckZvckxheW91dEJveChjb25zdCBMYXlv
dXQ6OkJveCYgYm94KQogewotICAgIGlmICgmYm94ID09ICZtX3Jvb3QpCisgICAgaWYgKCZib3gg
PT0gJnJvb3RMYXlvdXRCb3goKSkKICAgICAgICAgcmV0dXJuIG1fcm9vdFJlbmRlcmVyOwogCi0g
ICAgaWYgKG1fYm94ZXMuc2l6ZSgpIDw9IHNtYWxsVHJlZVRocmVzaG9sZCkgewotICAgICAgICBh
dXRvIGluZGV4ID0gbV9ib3hlcy5maW5kSWYoWyZdKGF1dG8mIGVudHJ5KSB7Ci0gICAgICAgICAg
ICByZXR1cm4gZW50cnkuYm94LnB0cigpID09ICZib3g7CisgICAgaWYgKG1fcmVuZGVyZXJzLnNp
emUoKSA8PSBzbWFsbFRyZWVUaHJlc2hvbGQpIHsKKyAgICAgICAgYXV0byBpbmRleCA9IG1fcmVu
ZGVyZXJzLmZpbmRJZihbJl0oYXV0byYgcmVuZGVyZXIpIHsKKyAgICAgICAgICAgIHJldHVybiBy
ZW5kZXJlci0+bGF5b3V0Qm94KCkgPT0gJmJveDsKICAgICAgICAgfSk7CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGluZGV4ICE9IG5vdEZvdW5kKTsKLSAgICAgICAgcmV0dXJuICptX2JveGVzW2lu
ZGV4XS5yZW5kZXJlcjsKKyAgICAgICAgcmV0dXJuICptX3JlbmRlcmVyc1tpbmRleF07CiAgICAg
fQogCiAgICAgaWYgKG1fYm94VG9SZW5kZXJlck1hcC5pc0VtcHR5KCkpIHsKLSAgICAgICAgZm9y
IChhdXRvJiBlbnRyeSA6IG1fYm94ZXMpCi0gICAgICAgICAgICBtX2JveFRvUmVuZGVyZXJNYXAu
YWRkKGVudHJ5LmJveC5nZXQoKSwgZW50cnkucmVuZGVyZXIpOworICAgICAgICBmb3IgKGF1dG8m
IHJlbmRlcmVyIDogbV9yZW5kZXJlcnMpCisgICAgICAgICAgICBtX2JveFRvUmVuZGVyZXJNYXAu
YWRkKCpyZW5kZXJlci0+bGF5b3V0Qm94KCksIHJlbmRlcmVyKTsKICAgICB9CiAgICAgcmV0dXJu
ICptX2JveFRvUmVuZGVyZXJNYXAuZ2V0KCZib3gpOwogfQpAQCAtMjg4LDYgKzMxOSwxMSBAQCBj
b25zdCBSZW5kZXJPYmplY3QmIEJveFRyZWU6OnJlbmRlcmVyRm9yTGF5b3V0Qm94KGNvbnN0IExh
eW91dDo6Qm94JiBib3gpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Qm94VHJlZSY+KCp0
aGlzKS5yZW5kZXJlckZvckxheW91dEJveChib3gpOwogfQogCitMYXlvdXQ6OkluaXRpYWxDb250
YWluaW5nQmxvY2smIEJveFRyZWU6OmluaXRpYWxDb250YWluaW5nQmxvY2soKQoreworICAgIHJl
dHVybiBtX3Jvb3RSZW5kZXJlci52aWV3KCkuaW5pdGlhbENvbnRhaW5pbmdCbG9jaygpOworfQor
CiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQogdm9pZCBzaG93SW5saW5lQ29udGVudChUZXh0
U3RyZWFtJiBzdHJlYW0sIGNvbnN0IElubGluZUNvbnRlbnQmIGlubGluZUNvbnRlbnQsIHNpemVf
dCBkZXB0aCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuaAppbmRleCA3ODZhOGFjZGEzNzEuLmU5
NGE4ZGEyMWZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uQm94VHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuaApAQCAtNDUsMTQgKzQ1LDE1IEBA
IHN0cnVjdCBJbmxpbmVDb250ZW50OwogY2xhc3MgQm94VHJlZSB7CiBwdWJsaWM6CiAgICAgQm94
VHJlZShSZW5kZXJCbG9jayYpOworICAgIH5Cb3hUcmVlKCk7CiAKICAgICB2b2lkIHVwZGF0ZVN0
eWxlKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0Jik7CiAKICAgICBjb25zdCBSZW5kZXJCbG9j
ayYgcm9vdFJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9yb290UmVuZGVyZXI7IH0KICAgICBS
ZW5kZXJCbG9jayYgcm9vdFJlbmRlcmVyKCkgeyByZXR1cm4gbV9yb290UmVuZGVyZXI7IH0KIAot
ICAgIGNvbnN0IExheW91dDo6Q29udGFpbmVyQm94JiByb290TGF5b3V0Qm94KCkgY29uc3QgeyBy
ZXR1cm4gbV9yb290OyB9Ci0gICAgTGF5b3V0OjpDb250YWluZXJCb3gmIHJvb3RMYXlvdXRCb3go
KSB7IHJldHVybiBtX3Jvb3Q7IH0KKyAgICBjb25zdCBMYXlvdXQ6OkNvbnRhaW5lckJveCYgcm9v
dExheW91dEJveCgpIGNvbnN0OworICAgIExheW91dDo6Q29udGFpbmVyQm94JiByb290TGF5b3V0
Qm94KCk7CiAKICAgICBjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94Rm9yUmVuZGVyZXIoY29u
c3QgUmVuZGVyT2JqZWN0JikgY29uc3Q7CiAgICAgTGF5b3V0OjpCb3gmIGxheW91dEJveEZvclJl
bmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCYpOwpAQCAtNjMsMjUgKzY0LDIxIEBAIHB1YmxpYzoK
ICAgICBjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyRm9yTGF5b3V0Qm94KGNvbnN0IExheW91
dDo6Qm94JikgY29uc3Q7CiAgICAgUmVuZGVyT2JqZWN0JiByZW5kZXJlckZvckxheW91dEJveChj
b25zdCBMYXlvdXQ6OkJveCYpOwogCi0gICAgc2l6ZV90IGJveENvdW50KCkgY29uc3QgeyByZXR1
cm4gbV9ib3hlcy5zaXplKCk7IH0KKyAgICBzaXplX3QgYm94Q291bnQoKSBjb25zdCB7IHJldHVy
biBtX3JlbmRlcmVycy5zaXplKCk7IH0KIAotICAgIHN0cnVjdCBCb3hBbmRSZW5kZXJlciB7Ci0g
ICAgICAgIENoZWNrZWRSZWY8TGF5b3V0OjpCb3g+IGJveDsKLSAgICAgICAgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciB7IG51bGxwdHIgfTsKLSAgICB9OwotICAgIGNvbnN0IGF1dG8mIGJveEFuZFJl
bmRlcmVyTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94ZXM7IH0KKyAgICBjb25zdCBhdXRvJiBy
ZW5kZXJlcnMoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVyczsgfQogCiBwcml2YXRlOgorICAg
IExheW91dDo6SW5pdGlhbENvbnRhaW5pbmdCbG9jayYgaW5pdGlhbENvbnRhaW5pbmdCbG9jaygp
OworCiAgICAgdm9pZCBidWlsZFRyZWVGb3JJbmxpbmVDb250ZW50KCk7CiAgICAgdm9pZCBidWls
ZFRyZWVGb3JGbGV4Q29udGVudCgpOwogICAgIHZvaWQgYXBwZW5kQ2hpbGQoVW5pcXVlUmVmPExh
eW91dDo6Qm94PiwgUmVuZGVyT2JqZWN0Jik7CiAKICAgICBSZW5kZXJCbG9jayYgbV9yb290UmVu
ZGVyZXI7Ci0gICAgTGF5b3V0OjpDb250YWluZXJCb3ggbV9yb290OwotICAgIFZlY3RvcjxCb3hB
bmRSZW5kZXJlciwgMT4gbV9ib3hlczsKKyAgICBWZWN0b3I8V2Vha1B0cjxSZW5kZXJPYmplY3Q+
LCAxPiBtX3JlbmRlcmVyczsKIAotICAgIEhhc2hNYXA8Y29uc3QgUmVuZGVyT2JqZWN0KiwgQ2hl
Y2tlZFJlZjxMYXlvdXQ6OkJveD4+IG1fcmVuZGVyZXJUb0JveE1hcDsKLSAgICBIYXNoTWFwPENo
ZWNrZWRSZWY8Y29uc3QgTGF5b3V0OjpCb3g+LCBSZW5kZXJPYmplY3QqPiBtX2JveFRvUmVuZGVy
ZXJNYXA7CisgICAgSGFzaE1hcDxDaGVja2VkUmVmPGNvbnN0IExheW91dDo6Qm94PiwgV2Vha1B0
cjxSZW5kZXJPYmplY3Q+PiBtX2JveFRvUmVuZGVyZXJNYXA7CiB9OwogCiAjaWYgRU5BQkxFKFRS
RUVfREVCVUdHSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL2ZsZXgvTGF5b3V0SW50ZWdyYXRpb25GbGV4TGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9mbGV4L0xheW91dEludGVncmF0aW9uRmxleExheW91dC5jcHAK
aW5kZXggMzE1ZWVkNTU3NzE0Li5iMmQ1ODA2Y2I0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9mbGV4L0xheW91dEludGVncmF0aW9uRmxleExheW91dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2ZsZXgvTGF5b3V0SW50
ZWdyYXRpb25GbGV4TGF5b3V0LmNwcApAQCAtMTUzLDkgKzE1MywxMCBAQCB2b2lkIEZsZXhMYXlv
dXQ6OmxheW91dCgpCiAgICAgYXV0byByZWxheW91dEZsZXhJdGVtcyA9IFsmXSB7CiAgICAgICAg
IC8vIEZsZXggaXRlbXMgbmVlZCB0byBiZSBsYWlkIG91dCBub3cgd2l0aCB0aGVpciBmaW5hbCBz
aXplIChhbmQgdGhyb3VnaCBzZXRPdmVycmlkaW5nTG9naWNhbFdpZHRoL0hlaWdodCkKICAgICAg
ICAgLy8gTm90ZSB0aGF0IHRoZXkgbWF5IHJlLXNpemUgdGhlbXNlbHZlcy4KLSAgICAgICAgZm9y
IChhdXRvJiBib3hBbmRSZW5kZXJlciA6IG1fYm94VHJlZS5ib3hBbmRSZW5kZXJlckxpc3QoKSkg
ewotICAgICAgICAgICAgYXV0byYgcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJCb3g+KCpib3hB
bmRSZW5kZXJlci5yZW5kZXJlcik7Ci0gICAgICAgICAgICBhdXRvIGJvcmRlckJveCA9IExheW91
dDo6Qm94R2VvbWV0cnk6OmJvcmRlckJveFJlY3QobV9mbGV4Rm9ybWF0dGluZ1N0YXRlLmJveEdl
b21ldHJ5KGJveEFuZFJlbmRlcmVyLmJveC5nZXQoKSkpOworICAgICAgICBmb3IgKGF1dG8mIHJl
bmRlck9iamVjdCA6IG1fYm94VHJlZS5yZW5kZXJlcnMoKSkgeworICAgICAgICAgICAgYXV0byYg
cmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJCb3g+KCpyZW5kZXJPYmplY3QpOworICAgICAgICAg
ICAgYXV0byYgbGF5b3V0Qm94ID0gKnJlbmRlcmVyLmxheW91dEJveCgpOworICAgICAgICAgICAg
YXV0byBib3JkZXJCb3ggPSBMYXlvdXQ6OkJveEdlb21ldHJ5Ojpib3JkZXJCb3hSZWN0KG1fZmxl
eEZvcm1hdHRpbmdTdGF0ZS5ib3hHZW9tZXRyeShsYXlvdXRCb3gpKTsKIAogICAgICAgICAgICAg
cmVuZGVyZXIuc2V0V2lkdGgoTGF5b3V0VW5pdCB7IH0pOwogICAgICAgICAgICAgcmVuZGVyZXIu
c2V0SGVpZ2h0KExheW91dFVuaXQgeyB9KTsKQEAgLTE3NiwxMSArMTc3LDkgQEAgdm9pZCBGbGV4
TGF5b3V0OjpsYXlvdXQoKQogCiB2b2lkIEZsZXhMYXlvdXQ6OnVwZGF0ZVJlbmRlcmVycygpIGNv
bnN0CiB7Ci0gICAgYXV0byYgYm94QW5kUmVuZGVyZXJMaXN0ID0gbV9ib3hUcmVlLmJveEFuZFJl
bmRlcmVyTGlzdCgpOwotICAgIGZvciAoYXV0byYgYm94QW5kUmVuZGVyZXIgOiBib3hBbmRSZW5k
ZXJlckxpc3QpIHsKLSAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gYm94QW5kUmVuZGVyZXIuYm94
LmdldCgpOwotCi0gICAgICAgIGF1dG8mIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyQm94Pigq
Ym94QW5kUmVuZGVyZXIucmVuZGVyZXIpOworICAgIGZvciAoYXV0byYgcmVuZGVyT2JqZWN0IDog
bV9ib3hUcmVlLnJlbmRlcmVycygpKSB7CisgICAgICAgIGF1dG8mIHJlbmRlcmVyID0gZG93bmNh
c3Q8UmVuZGVyQm94PigqcmVuZGVyT2JqZWN0KTsKKyAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0g
KnJlbmRlcmVyLmxheW91dEJveCgpOwogICAgICAgICBhdXRvJiBmbGV4SXRlbUdlb21ldHJ5ID0g
bV9mbGV4Rm9ybWF0dGluZ1N0YXRlLmJveEdlb21ldHJ5KGxheW91dEJveCk7CiAgICAgICAgIGF1
dG8gYm9yZGVyQm94ID0gTGF5b3V0OjpCb3hHZW9tZXRyeTo6Ym9yZGVyQm94UmVjdChmbGV4SXRl
bUdlb21ldHJ5KTsKICAgICAgICAgcmVuZGVyZXIuc2V0TG9jYXRpb24oYm9yZGVyQm94LnRvcExl
ZnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5s
aW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5k
ZXggMDMzNDZkOWI4NWE5Li5hZDgyNTU0M2NkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dElu
dGVncmF0aW9uTGluZUxheW91dC5jcHAKQEAgLTQwNSwxNSArNDA1LDE0IEBAIHZvaWQgTGluZUxh
eW91dDo6Y29uc3RydWN0Q29udGVudCgpCiAgICAgYXV0byBpc0xlZnRUb1JpZ2h0SW5saW5lRGly
ZWN0aW9uID0gcm9vdFN0eWxlLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKICAgICBhdXRvIGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlID0gcm9vdFN0eWxlLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCk7CiAgICAgYXV0byBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSA9IHJvb3RTdHlsZS5pc0Zs
aXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpOwotICAgIGF1dG8mIGJveEFuZFJlbmRlcmVyTGlzdCA9
IG1fYm94VHJlZS5ib3hBbmRSZW5kZXJlckxpc3QoKTsKLSAgICBmb3IgKGF1dG8mIGJveEFuZFJl
bmRlcmVyIDogYm94QW5kUmVuZGVyZXJMaXN0KSB7Ci0gICAgICAgIGF1dG8mIGxheW91dEJveCA9
IGJveEFuZFJlbmRlcmVyLmJveC5nZXQoKTsKKyAgICBmb3IgKGF1dG8mIHJlbmRlck9iamVjdCA6
IG1fYm94VHJlZS5yZW5kZXJlcnMoKSkgeworICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSAqcmVu
ZGVyT2JqZWN0LT5sYXlvdXRCb3goKTsKICAgICAgICAgCiAgICAgICAgIGJvb2wgbmVlZHNSZW5k
ZXJUcmVlUG9zaXRpb25pbmcgPSBsYXlvdXRCb3guaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpIHx8
IGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpIHx8IGxheW91dEJveC5pc091dE9mRmxv
d1Bvc2l0aW9uZWQoKTsKICAgICAgICAgaWYgKCFuZWVkc1JlbmRlclRyZWVQb3NpdGlvbmluZykK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8mIHJlbmRlcmVyID0gZG93bmNh
c3Q8UmVuZGVyQm94PigqYm94QW5kUmVuZGVyZXIucmVuZGVyZXIpOworICAgICAgICBhdXRvJiBy
ZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckJveD4oKnJlbmRlck9iamVjdCk7CiAgICAgICAgIGF1
dG8mIGxvZ2ljYWxHZW9tZXRyeSA9IG1faW5saW5lRm9ybWF0dGluZ1N0YXRlLmJveEdlb21ldHJ5
KGxheW91dEJveCk7CiAKICAgICAgICAgaWYgKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9u
ZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5j
cHAKaW5kZXggYWE3ODgxYmVmNWQ4Li44YjdlNTAwYTA5ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcApAQCAtNDQsOCArNDQsNiBAQCBCb3g6
OkJveChzdGQ6Om9wdGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiBhdHRyaWJ1dGVzLCBSZW5kZXJT
dHlsZSYmIHN0eWxlLCBzdGQ6OgogICAgIDogbV9zdHlsZShXVEZNb3ZlKHN0eWxlKSkKICAgICAs
IG1fZWxlbWVudEF0dHJpYnV0ZXMoYXR0cmlidXRlcykKICAgICAsIG1fYmFzZVR5cGVGbGFncyhi
YXNlVHlwZUZsYWdzLnRvUmF3KCkpCi0gICAgLCBtX2hhc1JhcmVEYXRhKGZhbHNlKQotICAgICwg
bV9pc0Fub255bW91cyhmYWxzZSkKIHsKICAgICBpZiAoZmlyc3RMaW5lU3R5bGUpCiAgICAgICAg
IGVuc3VyZVJhcmVEYXRhKCkuZmlyc3RMaW5lU3R5bGUgPSBXVEZNb3ZlKGZpcnN0TGluZVN0eWxl
KTsKQEAgLTcyLDYgKzcwLDIzIEBAIHZvaWQgQm94OjpzZXRQcmV2aW91c1NpYmxpbmcoQm94KiBw
cmV2aW91c1NpYmxpbmcpCiAgICAgbV9wcmV2aW91c1NpYmxpbmcgPSBwcmV2aW91c1NpYmxpbmc7
CiB9CiAKK1VuaXF1ZVJlZjxCb3g+IEJveDo6cmVtb3ZlRnJvbVBhcmVudCgpCit7CisgICAgaWYg
KG1fcHJldmlvdXNTaWJsaW5nKQorICAgICAgICBtX3ByZXZpb3VzU2libGluZy0+bV9uZXh0U2li
bGluZyA9IG1fbmV4dFNpYmxpbmc7CisgICAgaWYgKG1fbmV4dFNpYmxpbmcpCisgICAgICAgIG1f
bmV4dFNpYmxpbmctPm1fcHJldmlvdXNTaWJsaW5nID0gbV9wcmV2aW91c1NpYmxpbmc7CisgICAg
aWYgKG1fcGFyZW50LT5tX2ZpcnN0Q2hpbGQgPT0gdGhpcykKKyAgICAgICAgbV9wYXJlbnQtPm1f
Zmlyc3RDaGlsZCA9IG1fbmV4dFNpYmxpbmc7CisgICAgaWYgKG1fcGFyZW50LT5tX2xhc3RDaGls
ZCA9PSB0aGlzKQorICAgICAgICBtX3BhcmVudC0+bV9sYXN0Q2hpbGQgPSBtX3ByZXZpb3VzU2li
bGluZzsKKyAgICBtX3BhcmVudCA9IG51bGxwdHI7CisgICAgbV9wcmV2aW91c1NpYmxpbmcgPSBu
dWxscHRyOworICAgIG1fbmV4dFNpYmxpbmcgPSBudWxscHRyOworCisgICAgcmV0dXJuIFVuaXF1
ZVJlZjxCb3g+KCp0aGlzKTsKK30KKwogdm9pZCBCb3g6OnVwZGF0ZVN0eWxlKGNvbnN0IFJlbmRl
clN0eWxlJiBuZXdTdHlsZSwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiYmIG5ld0ZpcnN0
TGluZVN0eWxlKQogewogICAgIG1fc3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUobmV3U3R5bGUp
OwpAQCAtMTI0LDcgKzEzOSw3IEBAIGJvb2wgQm94Ojplc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQoKSBjb25zdAogCiBib29sIEJveDo6ZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dCgpIGNvbnN0CiB7Ci0gICAgaWYgKGlzSW50ZWdyYXRpb25Sb290KCkpCisgICAgaWYg
KGlzSW5saW5lSW50ZWdyYXRpb25Sb290KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ly8gOS40LjIgSW5saW5lIGZvcm1hdHRpbmcgY29udGV4dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKaW5kZXggZjA0OWJmYjU1ZTZiLi43Zjc5ZWI3OTY0
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCkBA
IC0xMjksNyArMTI5LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNJRnJhbWUoKSBjb25zdCB7IHJl
dHVybiBtX2VsZW1lbnRBdHRyaWJ1dGVzICYmIG1fZWxlbWVudEF0dHJpYnV0ZXMudmFsdWUoKS5l
bGVtZW50VHlwZSA9PSBFbGVtZW50VHlwZTo6SUZyYW1lOyB9CiAgICAgYm9vbCBpc0ltYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9lbGVtZW50QXR0cmlidXRlcyAmJiBtX2VsZW1lbnRBdHRyaWJ1dGVz
LnZhbHVlKCkuZWxlbWVudFR5cGUgPT0gRWxlbWVudFR5cGU6OkltYWdlOyB9CiAgICAgYm9vbCBp
c0ludGVybmFsUnVieUJveCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0lu
dGVncmF0aW9uUm9vdCgpIGNvbnN0IHsgcmV0dXJuICFtX3BhcmVudCAmJiAhaXNJbml0aWFsQ29u
dGFpbmluZ0Jsb2NrKCk7IH0KKyAgICBib29sIGlzSW5saW5lSW50ZWdyYXRpb25Sb290KCkgY29u
c3QgeyByZXR1cm4gbV9pc0lubGluZUludGVncmF0aW9uUm9vdDsgfQogCiAgICAgY29uc3QgQ29u
dGFpbmVyQm94JiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiAqbV9wYXJlbnQ7IH0KICAgICBjb25z
dCBCb3gqIG5leHRTaWJsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0U2libGluZy5nZXQoKTsg
fQpAQCAtMTY3LDExICsxNjcsMTcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gY29sdW1uV2lkdGgoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0SXNBbm9ueW1vdXMoKSB7
IG1faXNBbm9ueW1vdXMgPSB0cnVlOyB9CisgICAgdm9pZCBzZXRJc0lubGluZUludGVncmF0aW9u
Um9vdCgpIHsgbV9pc0lubGluZUludGVncmF0aW9uUm9vdCA9IHRydWU7IH0KIAogICAgIGJvb2wg
Y2FuQ2FjaGVGb3JMYXlvdXRTdGF0ZShjb25zdCBMYXlvdXRTdGF0ZSYpIGNvbnN0OwogICAgIEJv
eEdlb21ldHJ5KiBjYWNoZWRHZW9tZXRyeUZvckxheW91dFN0YXRlKGNvbnN0IExheW91dFN0YXRl
JikgY29uc3Q7CiAgICAgdm9pZCBzZXRDYWNoZWRHZW9tZXRyeUZvckxheW91dFN0YXRlKExheW91
dFN0YXRlJiwgc3RkOjp1bmlxdWVfcHRyPEJveEdlb21ldHJ5PikgY29uc3Q7CiAKKyAgICBVbmlx
dWVSZWY8Qm94PiByZW1vdmVGcm9tUGFyZW50KCk7CisKKyAgICB2b2lkIGluY3JlbWVudFB0ckNv
dW50KCkgY29uc3QgeyBDYW5NYWtlQ2hlY2tlZFB0cjo6aW5jcmVtZW50UHRyQ291bnQoKTsgfQor
ICAgIHZvaWQgZGVjcmVtZW50UHRyQ291bnQoKSBjb25zdCB7IENhbk1ha2VDaGVja2VkUHRyOjpk
ZWNyZW1lbnRQdHJDb3VudCgpOyB9CisKIHByb3RlY3RlZDoKICAgICBCb3goc3RkOjpvcHRpb25h
bDxFbGVtZW50QXR0cmlidXRlcz4sIFJlbmRlclN0eWxlJiYsIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4mJiBmaXJzdExpbmVTdHlsZSwgT3B0aW9uU2V0PEJhc2VUeXBlRmxhZz4pOwogCkBA
IC0yMTYsOCArMjIyLDkgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxC
b3hHZW9tZXRyeT4gbV9jYWNoZWRHZW9tZXRyeUZvckxheW91dFN0YXRlOwogCiAgICAgdW5zaWdu
ZWQgbV9iYXNlVHlwZUZsYWdzIDogNzsgLy8gT3B0aW9uU2V0PEJhc2VUeXBlRmxhZz4KLSAgICBi
b29sIG1faGFzUmFyZURhdGEgOiAxOwotICAgIGJvb2wgbV9pc0Fub255bW91cyA6IDE7CisgICAg
Ym9vbCBtX2hhc1JhcmVEYXRhIDogMSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzQW5vbnltb3Vz
IDogMSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzSW5saW5lSW50ZWdyYXRpb25Sb290IDogMSB7
IGZhbHNlIH07CiB9OwogCiBpbmxpbmUgYm9vbCBCb3g6OmlzQ29udGFpbmluZ0Jsb2NrRm9ySW5G
bG93KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVl
L0xheW91dENvbnRhaW5lckJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUv
TGF5b3V0Q29udGFpbmVyQm94LmgKaW5kZXggOTBkNjhiMzk3ZmQyLi43MDU3OWQ3ZTY5ZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5l
ckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRh
aW5lckJveC5oCkBAIC02Miw2ICs2Miw4IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IGJhc2VsaW5lRm9ySW50ZWdyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Jhc2Vs
aW5lRm9ySW50ZWdyYXRpb247IH0KIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQm94Owor
ICAgIAogICAgIENoZWNrZWRQdHI8Qm94PiBtX2ZpcnN0Q2hpbGQ7CiAgICAgQ2hlY2tlZFB0cjxC
b3g+IG1fbGFzdENoaWxkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5jcHAKaW5kZXggOTU5NDRlOGFkYjgyLi4wOTBmZjhjZTRhODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVCb3guaCIKICNpbmNs
dWRlICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKKyNpbmNsdWRlICJMYXlvdXRDb250YWluZXJC
b3guaCIKICNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMTUxLDYgKzE1MiwxNiBAQCBSZW5kZXJFbGVtZW50Ojp+
UmVuZGVyRWxlbWVudCgpCiAgICAgQVNTRVJUKCFtX2ZpcnN0Q2hpbGQpOwogfQogCitMYXlvdXQ6
OkNvbnRhaW5lckJveCogUmVuZGVyRWxlbWVudDo6bGF5b3V0Qm94KCkKK3sKKyAgICByZXR1cm4g
ZG93bmNhc3Q8TGF5b3V0OjpDb250YWluZXJCb3g+KFJlbmRlck9iamVjdDo6bGF5b3V0Qm94KCkp
OworfQorCitjb25zdCBMYXlvdXQ6OkNvbnRhaW5lckJveCogUmVuZGVyRWxlbWVudDo6bGF5b3V0
Qm94KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZG93bmNhc3Q8TGF5b3V0OjpDb250YWluZXJCb3g+
KFJlbmRlck9iamVjdDo6bGF5b3V0Qm94KCkpOworfQorCiBib29sIFJlbmRlckVsZW1lbnQ6Omlz
Q29udGVudERhdGFTdXBwb3J0ZWQoY29uc3QgQ29udGVudERhdGEmIGNvbnRlbnREYXRhKQogewog
ICAgIC8vIE1pbmltYWwgc3VwcG9ydCBmb3IgY29udGVudCBwcm9wZXJ0aWVzIHJlcGxhY2luZyBh
biBlbnRpcmUgZWxlbWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5o
CmluZGV4IGZlNWI3NWU1MmE3My4uNzg5MTNjNzY5MGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTQxLDYgKzQxLDEwIEBAIHN0cnVjdCBNYXJnaW5SZWN0
IHsKICAgICBMYXlvdXRSZWN0IGFuY2hvclJlY3Q7CiB9OwogCituYW1lc3BhY2UgTGF5b3V0IHsK
K2NsYXNzIENvbnRhaW5lckJveDsKK30KKwogY2xhc3MgUmVuZGVyRWxlbWVudCA6IHB1YmxpYyBS
ZW5kZXJPYmplY3QgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoUmVuZGVyRWxlbWVudCk7
CiBwdWJsaWM6CkBAIC04Niw2ICs5MCw5IEBAIHB1YmxpYzoKICAgICBSZW5kZXJPYmplY3QqIGZp
cnN0SW5GbG93Q2hpbGQoKSBjb25zdDsKICAgICBSZW5kZXJPYmplY3QqIGxhc3RJbkZsb3dDaGls
ZCgpIGNvbnN0OwogCisgICAgTGF5b3V0OjpDb250YWluZXJCb3gqIGxheW91dEJveCgpOworICAg
IGNvbnN0IExheW91dDo6Q29udGFpbmVyQm94KiBsYXlvdXRCb3goKSBjb25zdDsKKwogICAgIC8v
IE5vdGUgdGhhdCBldmVuIGlmIHRoZXNlIDIgImNhbkNvbnRhaW4iIGZ1bmN0aW9ucyByZXR1cm4g
dHJ1ZSBmb3IgYSBwYXJ0aWN1bGFyIHJlbmRlcmVyLCBpdCBkb2VzIG5vdCBuZWNlc3NhcmlseSBt
ZWFuIHRoZSByZW5kZXJlciBpcyB0aGUgY29udGFpbmluZyBibG9jayAoc2VlIGNvbnRhaW5pbmdC
bG9ja0ZvckFic29sdXRlKEZpeGVkKVBvc2l0aW9uKS4KICAgICBib29sIGNhbkNvbnRhaW5GaXhl
ZFBvc2l0aW9uT2JqZWN0cygpIGNvbnN0OwogICAgIGJvb2wgY2FuQ29udGFpbkFic29sdXRlbHlQ
b3NpdGlvbmVkT2JqZWN0cygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcAppbmRleCA1MGYwMmI0YTIyZjkuLjVkMDIwYWI3NTEyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNs
dWRlICJIVE1MVGFibGVDZWxsRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQu
aCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCiAj
aW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgiCiAjaW5jbHVkZSAiTGVnYWN5
UmVuZGVyU1ZHTW9kZWxPYmplY3QuaCIKICNpbmNsdWRlICJMZWdhY3lSZW5kZXJTVkdSb290Lmgi
CkBAIC0xMTQsNyArMTE1LDcgQEAgc3RydWN0IFNhbWVTaXplQXNSZW5kZXJPYmplY3QgewogICAg
IGJvb2wgd2Vha1B0ckZhY3Rvcldhc0NvbnN0cnVjdGVkT25NYWluVGhyZWFkOwogICAgIEhhc2hT
ZXQ8dm9pZCo+IGNhY2hlZFJlc291cmNlQ2xpZW50QXNzb2NpYXRlZFJlc291cmNlczsKICNlbmRp
ZgotICAgIHZvaWQqIHBvaW50ZXJzWzVdOworICAgIHZvaWQqIHBvaW50ZXJzWzZdOwogI2lmIEFT
U0VSVF9FTkFCTEVECiAgICAgdW5zaWduZWQgbV9kZWJ1Z0JpdGZpZWxkcyA6IDI7CiAjZW5kaWYK
QEAgLTE2MSw2ICsxNjIsMTYgQEAgUmVuZGVyT2JqZWN0Ojp+UmVuZGVyT2JqZWN0KCkKICAgICBB
U1NFUlQoIWhhc1JhcmVEYXRhKCkpOwogfQogCit2b2lkIFJlbmRlck9iamVjdDo6c2V0TGF5b3V0
Qm94KExheW91dDo6Qm94JiBib3gpCit7CisgICAgbV9sYXlvdXRCb3ggPSAmYm94OworfQorCit2
b2lkIFJlbmRlck9iamVjdDo6Y2xlYXJMYXlvdXRCb3goKQoreworICAgIG1fbGF5b3V0Qm94ID0g
bnVsbHB0cjsKK30KKwogUmVuZGVyVGhlbWUmIFJlbmRlck9iamVjdDo6dGhlbWUoKSBjb25zdAog
ewogICAgIHJldHVybiBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggMjk4MGU4MDFjZWE4Li4xOGJjNjgzNzRlODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTM5LDggKzM5LDggQEAK
ICNpbmNsdWRlICJTY3JvbGxBbGlnbm1lbnQuaCIKICNpbmNsdWRlICJTdHlsZUltYWdlLmgiCiAj
aW5jbHVkZSAiVGV4dEFmZmluaXR5LmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRQdHIuaD4KICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFt
ZXNwYWNlIFdURiB7CiBjbGFzcyBUZXh0U3RyZWFtOwpAQCAtOTIsNiArOTIsMTAgQEAgY29uc3Qg
aW50IGNhcmV0V2lkdGggPSAxOwogCiBzdHJ1Y3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnM7
CiAKK25hbWVzcGFjZSBMYXlvdXQgeworY2xhc3MgQm94OworfQorCiBuYW1lc3BhY2UgU3R5bGUg
ewogY2xhc3MgUHNldWRvRWxlbWVudFJlcXVlc3Q7CiB9CkBAIC0xMTAsNiArMTE0LDExIEBAIHB1
YmxpYzoKICAgICBleHBsaWNpdCBSZW5kZXJPYmplY3QoTm9kZSYpOwogICAgIHZpcnR1YWwgflJl
bmRlck9iamVjdCgpOwogCisgICAgTGF5b3V0OjpCb3gqIGxheW91dEJveCgpIHsgcmV0dXJuIG1f
bGF5b3V0Qm94LmdldCgpOyB9CisgICAgY29uc3QgTGF5b3V0OjpCb3gqIGxheW91dEJveCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGF5b3V0Qm94LmdldCgpOyB9CisgICAgdm9pZCBzZXRMYXlvdXRCb3go
TGF5b3V0OjpCb3gmKTsKKyAgICB2b2lkIGNsZWFyTGF5b3V0Qm94KCk7CisKICAgICBSZW5kZXJU
aGVtZSYgdGhlbWUoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgQVNDSUlMaXRlcmFsIHJlbmRlck5h
bWUoKSBjb25zdCA9IDA7CkBAIC04NDcsNiArODU2LDggQEAgcHJpdmF0ZToKICAgICBSZW5kZXJP
YmplY3QqIG1fcHJldmlvdXM7CiAgICAgUmVuZGVyT2JqZWN0KiBtX25leHQ7CiAKKyAgICBDaGVj
a2VkUHRyPExheW91dDo6Qm94PiBtX2xheW91dEJveDsKKwogI2lmIEFTU0VSVF9FTkFCTEVECiAg
ICAgYm9vbCBtX2hhc0FYT2JqZWN0IDogMTsKICAgICBtdXRhYmxlIGJvb2wgbV9zZXROZWVkc0xh
eW91dEZvcmJpZGRlbiA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAK
aW5kZXggMTc2NjA3YTQ3NGUzLi45ZjU1ZTE0NGMxNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJIVE1MSUZyYW1l
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbWFnZVF1
YWxpdHlDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiTGF5b3V0SW5pdGlhbENvbnRhaW5pbmdCbG9j
ay5oIgogI2luY2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5j
bHVkZSAiUmVuZGVyRGVzY2VuZGFudEl0ZXJhdG9yLmgiCkBAIC02NCw2ICs2NSw3IEBAIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChSZW5kZXJWaWV3KTsKIFJlbmRlclZpZXc6OlJlbmRlclZp
ZXcoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVy
QmxvY2tGbG93KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fZnJhbWVWaWV3KCpk
b2N1bWVudC52aWV3KCkpCisgICAgLCBtX2luaXRpYWxDb250YWluaW5nQmxvY2soV1RGOjptYWtl
VW5pcXVlUmVmPExheW91dDo6SW5pdGlhbENvbnRhaW5pbmdCbG9jaz4oUmVuZGVyU3R5bGU6OmNs
b25lKHRoaXMtPnN0eWxlKCkpKSkKICAgICAsIG1fc2VsZWN0aW9uKCp0aGlzKQogICAgICwgbV9s
YXp5UmVwYWludFRpbWVyKCp0aGlzLCAmUmVuZGVyVmlldzo6bGF6eVJlcGFpbnRUaW1lckZpcmVk
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggZGMxYTVkMjUyN2U2
Li45ODBmZjk4ODEzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAt
MzgsNiArMzgsMTAgQEAgY2xhc3MgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOwogY2xhc3MgUmVuZGVy
TGF5b3V0U3RhdGU7CiBjbGFzcyBSZW5kZXJRdW90ZTsKIAorbmFtZXNwYWNlIExheW91dCB7Citj
bGFzcyBJbml0aWFsQ29udGFpbmluZ0Jsb2NrOworfQorCiBjbGFzcyBSZW5kZXJWaWV3IGZpbmFs
IDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChS
ZW5kZXJWaWV3KTsKIHB1YmxpYzoKQEAgLTY5LDYgKzczLDkgQEAgcHVibGljOgogCiAgICAgRnJh
bWVWaWV3JiBmcmFtZVZpZXcoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lVmlldzsgfQogCisgICAg
TGF5b3V0OjpJbml0aWFsQ29udGFpbmluZ0Jsb2NrJiBpbml0aWFsQ29udGFpbmluZ0Jsb2NrKCkg
eyByZXR1cm4gbV9pbml0aWFsQ29udGFpbmluZ0Jsb2NrLmdldCgpOyB9CisgICAgY29uc3QgTGF5
b3V0OjpJbml0aWFsQ29udGFpbmluZ0Jsb2NrJiBpbml0aWFsQ29udGFpbmluZ0Jsb2NrKCkgY29u
c3QgeyByZXR1cm4gbV9pbml0aWFsQ29udGFpbmluZ0Jsb2NrLmdldCgpOyB9CisKICAgICBib29s
IG5lZWRzUmVwYWludEhhY2tBZnRlckNvbXBvc2l0aW5nTGF5ZXJVcGRhdGVGb3JEZWJ1Z092ZXJs
YXlzT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNSZXBhaW50SGFja0FmdGVyQ29tcG9zaXRp
bmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5OyB9OwogICAgIHZvaWQgc2V0TmVlZHNS
ZXBhaW50SGFja0FmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5
KGJvb2wgdmFsdWUgPSB0cnVlKSB7IG1fbmVlZHNSZXBhaW50SGFja0FmdGVyQ29tcG9zaXRpbmdM
YXllclVwZGF0ZUZvckRlYnVnT3ZlcmxheXNPbmx5ID0gdmFsdWU7IH0KIApAQCAtMjI0LDYgKzIz
MSw4IEBAIHByaXZhdGU6CiAgICAgLy8gSW5jbHVkZSB0aGlzIFJlbmRlclZpZXcuCiAgICAgdWlu
dDY0X3QgbV9yZW5kZXJlckNvdW50IHsgMSB9OwogCisgICAgVW5pcXVlUmVmPExheW91dDo6SW5p
dGlhbENvbnRhaW5pbmdCbG9jaz4gbV9pbml0aWFsQ29udGFpbmluZ0Jsb2NrOworCiAgICAgbXV0
YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8UmVnaW9uPiBtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbjsK
ICAgICBTZWxlY3Rpb25SYW5nZURhdGEgbV9zZWxlY3Rpb247CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>