<?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>230467</bug_id>
          
          <creation_ts>2021-09-19 13:30:29 -0700</creation_ts>
          <short_desc>Replace dynamic_objc_cast&lt;&gt; with dynamic_ns_cast&lt;&gt;</short_desc>
          <delta_ts>2021-09-20 14:01:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>WONTFIX</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=230508</see_also>
          <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>
          <dependson>139893</dependson>
    
    <dependson>139915</dependson>
    
    <dependson>230227</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1794921</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-09-19 13:30:29 -0700</bug_when>
    <thetext>Replace dynamic_objc_cast&lt;&gt; with dynamic_ns_cast&lt;&gt;.

dynamic_objc_cast&lt;&gt; was originally added for Bug 139893 in r177677, then moved to WTF for Bug 139915 in r177697.

dynamic_ns_cast&lt;&gt; was added for Bug 230227 in r282703 as part of &lt;wtf/cocoa/TypeCastsNS.h&gt;.

Since TypeCastsNS.h has an rvalue overload of dynamic_ns_cast&lt;&gt; and contains checked_ns_cast&lt;&gt; and has tests and is two characters less to type, let&apos;s replace dynamic_objc_cast&lt;&gt; with dynamic_ns_cast&lt;&gt;.

(Sorry Anders.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794922</commentid>
    <comment_count>1</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-09-19 13:34:57 -0700</bug_when>
    <thetext>NOTE: There is internal code that uses dynamic_objc_cast&lt;&gt;, so that has to be updated before this lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794928</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-19 13:48:04 -0700</bug_when>
    <thetext>&lt;rdar://problem/83287321&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794932</commentid>
    <comment_count>3</comment_count>
      <attachid>438619</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-09-19 14:05:32 -0700</bug_when>
    <thetext>Created attachment 438619
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795084</commentid>
    <comment_count>4</comment_count>
      <attachid>438619</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-09-20 07:56:41 -0700</bug_when>
    <thetext>Comment on attachment 438619
Patch v1

In Bug 230406, Darin writes:

&gt; Did you see my comment about dynamic_objc_cast? I think I prefer that name to dynamic_ns_cast.

So I&apos;ll either flip this, or close it and file a new bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795086</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-09-20 08:12:33 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #4)
&gt; Comment on attachment 438619 [details]
&gt; Patch v1
&gt; 
&gt; In Bug 230406, Darin writes:
&gt; 
&gt; &gt; Did you see my comment about dynamic_objc_cast? I think I prefer that name to dynamic_ns_cast.
&gt; 
&gt; So I&apos;ll either flip this, or close it and file a new bug.

Moving this to RESOLVED/WONTFIX.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795274</commentid>
    <comment_count>6</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-09-20 14:01:49 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #4)
&gt; Comment on attachment 438619 [details]
&gt; Patch v1
&gt; 
&gt; In Bug 230406, Darin writes:
&gt; 
&gt; &gt; Did you see my comment about dynamic_objc_cast? I think I prefer that name to dynamic_ns_cast.
&gt; 
&gt; So I&apos;ll either flip this, or close it and file a new bug.

Bug 230508: Rename {checked,dynamic}_ns_cast&lt;&gt; to {checked,dynamic}_objc_cast&lt;&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438619</attachid>
            <date>2021-09-19 14:05:32 -0700</date>
            <delta_ts>2021-09-20 07:56:41 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-230467-20210919140532.patch</filename>
            <type>text/plain</type>
            <size>41116</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDYxMjk2NzU1YmYxMjJhZjM3MGVjMjlj
MTMzZWYzMGU0MjNiY2YzYmIuLjY4NWQ0NWYxOWQ0ODUxYzYxMjE4MWNjMWFkNWMxMGU2OGY4Nzg2
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDktMTkgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIGR5bmFtaWNfb2JqY19jYXN0PD4gd2l0
aCBkeW5hbWljX25zX2Nhc3Q8PgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjMwNDY3
PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODMyODczMjE+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUmV0YWluUHRyLmg6CisgICAgICAg
IChXVEY6OmR5bmFtaWNfb2JqY19jYXN0KTogRGVsZXRlLgorCiAyMDIxLTA5LTE5ICBEYXZpZCBL
aWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgV1RGOjpSZXRhaW5QdHI8PiBh
bGxvd3MgYXNzaWdubWVudCBvZiB0d28gcG9pbnRlciB0eXBlcyB0aGF0IGFyZSBub3QgYXNzaWdu
YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGFjNjk2N2M3NzQ1Y2I1YmQ1MzFmNTRlMDg2ZDdkMTgwZjI1YTVl
ODcuLjJiNmQ1MGM0NjdkZTQ0NDI2MDE0NTAwMzRiM2MyMzNmM2EyMzFkZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMyBAQAorMjAyMS0wOS0xOSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBw
bGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgZHluYW1pY19vYmpjX2Nhc3Q8PiB3aXRoIGR5bmFt
aWNfbnNfY2FzdDw+CisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMzA0Njc+CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS84MzI4NzMyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRJbnN0YWxsbWVu
dENvbmZpZ3VyYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9jb2Nv
YS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQYXlt
ZW50TWVyY2hhbnRTZXNzaW9uOjpmcm9tSlMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tOgorICAgICAgICAoLVtDQUxheWVyIF93ZWJf
bWFza0NvbnRhaW5zUG9pbnQ6XSk6CisgICAgICAgICgtW0NBTGF5ZXIgX3dlYl9tYXNrTWF5SW50
ZXJzZWN0UmVjdDpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvQmxvY2tsaXN0VXBkYXRlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2NrbGlzdFVwZGF0ZXI6OnJlYWRCbG9ja2xpc3REYXRh
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJD
b3JlOjpzaG9ydENhcHRpb25Qb2ludFNpemVXaXRoQ29udGVudFNpemVDYXRlZ29yeSk6CisKIDIw
MjEtMDktMTkgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBX
VEY6OlJldGFpblB0cjw+IGFsbG93cyBhc3NpZ25tZW50IG9mIHR3byBwb2ludGVyIHR5cGVzIHRo
YXQgYXJlIG5vdCBhc3NpZ25hYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlkMmIwNWMxNjNlYjI5NmExNzlhYjBl
Njc5YWVlMTg4NzY4MDEyMDguLjA2ZDk2ODRmMjczODIzMDQzYTUxNmYwZmJiMzRiOTU3YmI3NWMy
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjEtMDktMTkgIERhdmlkIEtpbHplciAg
PGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIGR5bmFtaWNfb2JqY19jYXN0
PD4gd2l0aCBkeW5hbWljX25zX2Nhc3Q8PgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2Iv
MjMwNDY3PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODMyODczMjE+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQXJndW1l
bnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKC1bV0tTZWN1cmVDb2RpbmdBcmNoaXZpbmdEZWxl
Z2F0ZSBhcmNoaXZlcjp3aWxsRW5jb2RlT2JqZWN0Ol0pOgorICAgICAgICAoLVtXS1NlY3VyZUNv
ZGluZ0FyY2hpdmluZ0RlbGVnYXRlIHVuYXJjaGl2ZXI6ZGlkRGVjb2RlT2JqZWN0Ol0pOgorICAg
ICAgICAqIFNoYXJlZC9tYWMvT2JqQ09iamVjdEdyYXBoLm1tOgorICAgICAgICAoV2ViS2l0Ojpz
aG91bGRUcmFuc2Zvcm1HcmFwaCk6CisgICAgICAgIChXZWJLaXQ6OnRyYW5zZm9ybUdyYXBoKToK
KyAgICAgICAgKFdlYktpdDo6dHlwZUZyb21PYmplY3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nLm1tOgorICAgICAgICAoK1tOU0F0dHJpYnV0ZWRT
dHJpbmcgX2xvYWRGcm9tSFRNTFdpdGhPcHRpb25zOmNvbnRlbnRMb2FkZXI6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisgICAgICAgICgrW05TQXR0cmlidXRlZFN0cmluZyBsb2FkRnJvbUhUTUxXaXRo
RmlsZVVSTDpvcHRpb25zOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoK1tOU0F0dHJp
YnV0ZWRTdHJpbmcgbG9hZEZyb21IVE1MV2l0aFN0cmluZzpvcHRpb25zOmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoK1tOU0F0dHJpYnV0ZWRTdHJpbmcgbG9hZEZyb21IVE1MV2l0aERh
dGE6b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tOgorICAgICAgICAoV2ViS2l0OjpjaGVja1Vz
YWdlRGVzY3JpcHRpb25TdHJpbmdGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6Y2hlY2tVc2Fn
ZURlc2NyaXB0aW9uU3RyaW5nRm9yU3BlZWNoUmVjb2duaXRpb24pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5Ojp0cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5Ojp0cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKHRv
V2ViUmVxdWVzdCk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVtb3ZlVGV4dFBsYWNlaG9s
ZGVyOndpbGxJbnNlcnRUZXh0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjp0cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyk6CisKIDIwMjEtMDktMTkgIERhdmlkIEtp
bHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBXVEY6OlJldGFpblB0cjw+IGFs
bG93cyBhc3NpZ25tZW50IG9mIHR3byBwb2ludGVyIHR5cGVzIHRoYXQgYXJlIG5vdCBhc3NpZ25h
YmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZTBkMGM5NTY1YTg2NWU0MTMzMTg0
NTRmMzNkZjMxY2IyY2M1YjRjMC4uOTc0NjMxYTg5MWJmMjc5OWI0ODRhNjAwNTgxOWMzMzI0NTFm
NTVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIx
LTA5LTE5ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVw
bGFjZSBkeW5hbWljX29iamNfY2FzdDw+IHdpdGggZHluYW1pY19uc19jYXN0PD4KKyAgICAgICAg
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIzMDQ2Nz4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgz
Mjg3MzIxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbToKKyAgICAgICAgKFdlYkRyYWdDbGll
bnQ6OmJlZ2luRHJhZyk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAg
ICAgKC1bV2ViSFRNTFZpZXcgX3VwZGF0ZU1vdXNlb3ZlcldpdGhFdmVudDpdKToKKwogMjAyMS0w
OS0xOSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdURjo6
UmV0YWluUHRyPD4gYWxsb3dzIGFzc2lnbm1lbnQgb2YgdHdvIHBvaW50ZXIgdHlwZXMgdGhhdCBh
cmUgbm90IGFzc2lnbmFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JldGFpblB0ci5o
IGIvU291cmNlL1dURi93dGYvUmV0YWluUHRyLmgKaW5kZXggNjE0ZTQ1ODQ3NTk3MGE1NjE1Y2Vk
MGQxYzQ2MzMyNTc3ZDNhMDYyNi4uNmQ2ODVlY2IwMjlmYjlhODdjNTA0MzZjNGZmYjQ1ODcyNGNi
ZjlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmV0YWluUHRyLmgKKysrIGIvU291cmNl
L1dURi93dGYvUmV0YWluUHRyLmgKQEAgLTM3NywxNiArMzc3LDYgQEAgaW5saW5lIENGSGFzaENv
ZGUgc2FmZUNGSGFzaChDRlR5cGVSZWYgYSkKICAgICByZXR1cm4gYSA/IENGSGFzaChhKSA6IDA7
CiB9CiAKLSNpZmRlZiBfX09CSkNfXwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCogZHluYW1pY19v
YmpjX2Nhc3QoaWQgb2JqZWN0KQotewotICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W1Qg
Y2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIChUICopb2JqZWN0OwotCi0gICAgcmV0dXJuIG5pbDsK
LX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpSZXRhaW5QdHI7
CkBAIC0zOTcsNyArMzg3LDYgQEAgdXNpbmcgV1RGOjpzYWZlQ0ZIYXNoOwogCiAjaWZkZWYgX19P
QkpDX18KIHVzaW5nIFdURjo6YWRvcHROUzsKLXVzaW5nIFdURjo6ZHluYW1pY19vYmpjX2Nhc3Q7
CiAjZW5kaWYKIAogI2VuZGlmIC8vIFVTRShDRikgfHwgZGVmaW5lZChfX09CSkNfXykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50
Q29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVu
dEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5tbQppbmRleCA4N2U1M2QyZDk4NjE3MDk5ZTcyYzRh
NDA2YTU0ODhiYTBjNzk1Y2NmLi45MmJiMmM5ZWE5YjU4MjU5M2NkMzAxNDVkNzU3YzIxOTBmMzdh
OTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRJ
bnN0YWxsbWVudENvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9QYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tCkBAIC0zMiw2ICszMiw3
IEBACiAjaW1wb3J0ICJBcHBsZVBheUluc3RhbGxtZW50SXRlbVR5cGUuaCIKICNpbXBvcnQgIkFw
cGxlUGF5SW5zdGFsbG1lbnRSZXRhaWxDaGFubmVsLmgiCiAjaW1wb3J0ICJFeGNlcHRpb25Pci5o
IgorI2ltcG9ydCA8d3RmL2NvY29hL1R5cGVDYXN0c05TLmg+CiAjaW1wb3J0IDx3dGYvY29jb2Ev
VmVjdG9yQ29jb2EuaD4KIAogI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgpA
QCAtMjAzLDcgKzIwNCw3IEBAIEV4Y2VwdGlvbk9yPFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3Vy
YXRpb24+IFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb246OmNyCiAgICAgTlNEaWN0aW9u
YXJ5ICphcHBsaWNhdGlvbk1ldGFkYXRhRGljdGlvbmFyeSA9IG5pbDsKICAgICBpZiAoIWNvbmZp
Z3VyYXRpb24uYXBwbGljYXRpb25NZXRhZGF0YS5pc051bGwoKSkgewogICAgICAgICBOU0RhdGEg
KmFwcGxpY2F0aW9uTWV0YWRhdGEgPSBbY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbk1ldGFkYXRh
IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICAgICAgYXBwbGlj
YXRpb25NZXRhZGF0YURpY3Rpb25hcnkgPSBkeW5hbWljX29iamNfY2FzdDxOU0RpY3Rpb25hcnk+
KFtOU0pTT05TZXJpYWxpemF0aW9uIEpTT05PYmplY3RXaXRoRGF0YTphcHBsaWNhdGlvbk1ldGFk
YXRhIG9wdGlvbnM6MCBlcnJvcjpuaWxdKTsKKyAgICAgICAgYXBwbGljYXRpb25NZXRhZGF0YURp
Y3Rpb25hcnkgPSBkeW5hbWljX25zX2Nhc3Q8TlNEaWN0aW9uYXJ5PihbTlNKU09OU2VyaWFsaXph
dGlvbiBKU09OT2JqZWN0V2l0aERhdGE6YXBwbGljYXRpb25NZXRhZGF0YSBvcHRpb25zOjAgZXJy
b3I6bmlsXSk7CiAgICAgICAgIGlmICghYXBwbGljYXRpb25NZXRhZGF0YURpY3Rpb25hcnkpCiAg
ICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiYXBwbGljYXRpb25NZXRh
ZGF0YSBtdXN0IGJlIGEgSlNPTiBvYmplY3QiIH07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJj
aGFudFNlc3Npb25Db2NvYS5tbQppbmRleCBiNzFmODQ4MWZjMjk2ZDg2Yzc0MGEzOTljOTgyZjM1
OTY1OWUzMzkxLi42YjM3MTllNTM0ZWI4MzY1Y2U3YjE4MDI2MWJlMmU4MWRiNjNjOWNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJj
aGFudFNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbQpAQCAtMjksNiArMjksOCBAQAog
I2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTT05PYmpl
Y3QuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9UeXBlQ2FzdHNOUy5oPgorCiAjaW1wb3J0IDxwYWwv
Y29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQwLDcg
KzQyLDcgQEAgc3RkOjpvcHRpb25hbDxQYXltZW50TWVyY2hhbnRTZXNzaW9uPiBQYXltZW50TWVy
Y2hhbnRTZXNzaW9uOjpmcm9tSlMoSlNDOjpKU0dsb2IKICAgICBpZiAoIWpzb25TdHJpbmcpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBhdXRvIGRpY3Rpb25hcnkgPSBkeW5h
bWljX29iamNfY2FzdDxOU0RpY3Rpb25hcnk+KFtOU0pTT05TZXJpYWxpemF0aW9uIEpTT05PYmpl
Y3RXaXRoRGF0YTpbKE5TU3RyaW5nICopanNvblN0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ10gb3B0aW9uczowIGVycm9yOm5pbF0pOworICAgIGF1dG8gZGljdGlv
bmFyeSA9IGR5bmFtaWNfbnNfY2FzdDxOU0RpY3Rpb25hcnk+KFtOU0pTT05TZXJpYWxpemF0aW9u
IEpTT05PYmplY3RXaXRoRGF0YTpbKE5TU3RyaW5nICopanNvblN0cmluZyBkYXRhVXNpbmdFbmNv
ZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gb3B0aW9uczowIGVycm9yOm5pbF0pOwogICAgIGlm
ICghZGljdGlvbmFyeSB8fCAhW2RpY3Rpb25hcnkgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5
IGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFz
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5
ZXJFeHRyYXMubW0KaW5kZXggYTE4YjdjOTc5MTZkM2Q4YTQ1MjczYmFlMDg0ZTc4ZTdjN2UxMDY0
Ny4uZWViYzg0ZWNkN2JjOGRmYjExZGIzMjExYjY2NGRjYWRlNWFjYzZkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRy
YXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29y
ZUNBTGF5ZXJFeHRyYXMubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIldlYkNvcmVDQUxh
eWVyRXh0cmFzLmgiCiAKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgor
I2ltcG9ydCA8d3RmL2NvY29hL1R5cGVDYXN0c05TLmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBDQUxh
eWVyIChXZWJDb3JlQ0FMYXllckV4dHJhcykKIApAQCAtOTQsNyArOTUsNyBAQCAtIChCT09MKV93
ZWJfbWFza0NvbnRhaW5zUG9pbnQ6KENHUG9pbnQpcG9pbnQKICAgICAgICAgcmV0dXJuIE5POwog
CiAgICAgQ0dQb2ludCBwb2ludEluTWFzayA9IFtzZWxmLm1hc2sgY29udmVydFBvaW50OnBvaW50
IGZyb21MYXllcjpzZWxmXTsKLSAgICBpZiAoYXV0byAqc2hhcGVNYXNrID0gZHluYW1pY19vYmpj
X2Nhc3Q8Q0FTaGFwZUxheWVyPihzZWxmLm1hc2spKSB7CisgICAgaWYgKGF1dG8gKnNoYXBlTWFz
ayA9IGR5bmFtaWNfbnNfY2FzdDxDQVNoYXBlTGF5ZXI+KHNlbGYubWFzaykpIHsKICAgICAgICAg
Ym9vbCBpc0V2ZW5PZGRGaWxsID0gW3NoYXBlTWFzay5maWxsUnVsZSBpc0VxdWFsVG9TdHJpbmc6
a0NBRmlsbFJ1bGVFdmVuT2RkXTsKICAgICAgICAgcmV0dXJuIENHUGF0aENvbnRhaW5zUG9pbnQo
c2hhcGVNYXNrLnBhdGgsIG51bGxwdHIsIHBvaW50SW5NYXNrLCBpc0V2ZW5PZGRGaWxsKTsKICAg
ICB9CkBAIC0xMDgsNyArMTA5LDcgQEAgLSAoQk9PTClfd2ViX21hc2tNYXlJbnRlcnNlY3RSZWN0
OihDR1JlY3QpcmVjdAogICAgICAgICByZXR1cm4gTk87CiAKICAgICBDR1JlY3QgcmVjdEluTWFz
ayA9IFtzZWxmLm1hc2sgY29udmVydFJlY3Q6cmVjdCBmcm9tTGF5ZXI6c2VsZl07Ci0gICAgaWYg
KGF1dG8gKnNoYXBlTWFzayA9IGR5bmFtaWNfb2JqY19jYXN0PENBU2hhcGVMYXllcj4oc2VsZi5t
YXNrKSkgeworICAgIGlmIChhdXRvICpzaGFwZU1hc2sgPSBkeW5hbWljX25zX2Nhc3Q8Q0FTaGFw
ZUxheWVyPihzZWxmLm1hc2spKSB7CiAgICAgICAgIENHUmVjdCBwYXRoQm91bmRzID0gQ0dQYXRo
R2V0UGF0aEJvdW5kaW5nQm94KHNoYXBlTWFzay5wYXRoKTsKICAgICAgICAgcmV0dXJuIENHUmVj
dEludGVyc2VjdHNSZWN0KHBhdGhCb3VuZHMsIHJlY3RJbk1hc2spOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9CbG9ja2xpc3RVcGRhdGVyLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Jsb2NrbGlzdFVwZGF0ZXIubW0KaW5kZXggMjVmZDE4
YjBkYzlhYWRlMzBkODdmMzY1NWI1MzYzZDBmZGI2YzVmOC4uY2E3M2Y4NTlmOTUwZmM1MmFhNjI5
NDJmMTVhZTVhNzI3ZWE5YzJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0Jsb2NrbGlzdFVwZGF0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0Jsb2NrbGlzdFVwZGF0ZXIubW0KQEAgLTMyLDcgKzMyLDcgQEAKICNpbXBvcnQgIldlYkdMQmxv
Y2tsaXN0LmgiCiAjaW1wb3J0IDxzeXMvc3RhdC5oPgogI2ltcG9ydCA8c3lzL3RpbWUuaD4KLSNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9UeXBlQ2FzdHNOUy5o
PgogCiAvLyBUaGUgdGltZSBhZnRlciB3aGljaCB3ZSdsbCBjaGVjayB0aGUgYmxvY2tsaXN0IGRh
dGEuCiBzdGF0aWMgdGltZV90IGJsb2NrbGlzdE5leHRDaGVja1RpbWU7CkBAIC03MSw3ICs3MSw3
IEBAIE5TRGljdGlvbmFyeSAqIEJsb2NrbGlzdFVwZGF0ZXI6OnJlYWRCbG9ja2xpc3REYXRhKCkK
ICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gZHluYW1p
Y19vYmpjX2Nhc3Q8TlNEaWN0aW9uYXJ5PihbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIHBy
b3BlcnR5TGlzdFdpdGhEYXRhOmRhdGEgb3B0aW9uczpOU1Byb3BlcnR5TGlzdEltbXV0YWJsZSBm
b3JtYXQ6bnVsbHB0ciBlcnJvcjpudWxscHRyXSk7CisgICAgcmV0dXJuIGR5bmFtaWNfbnNfY2Fz
dDxOU0RpY3Rpb25hcnk+KFtOU1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gcHJvcGVydHlMaXN0
V2l0aERhdGE6ZGF0YSBvcHRpb25zOk5TUHJvcGVydHlMaXN0SW1tdXRhYmxlIGZvcm1hdDpudWxs
cHRyIGVycm9yOm51bGxwdHJdKTsKIH0KIAogdm9pZCBCbG9ja2xpc3RVcGRhdGVyOjpyZWxvYWRJ
Zk5lY2Vzc2FyeSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0K
aW5kZXggYjA0MzA3ZWZmNmM5MjA4ZDIwM2E2NTEwYjY1ZTg3Y2VhMTdjN2ZkZC4uN2VkM2M4NDUx
OGNmZDE3YzZmZjJjOGMxZDdlMGEyODk3ZmZiMGNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtODUsNiArODUsNyBAQAogI2ltcG9ydCA8d3RmL09i
akNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYv
U3RkTGliRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVHlwZUNhc3RzTlMuaD4KIAogI2lm
IEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogI2luY2x1ZGUgIkhUTUxEYXRhTGlzdEVsZW1lbnQu
aCIKQEAgLTE1MDEsNyArMTUwMiw3IEBAIHN0YXRpYyBDR0Zsb2F0IHNob3J0Q2FwdGlvblBvaW50
U2l6ZVdpdGhDb250ZW50U2l6ZUNhdGVnb3J5KENGU3RyaW5nUmVmIGNvbnRlbnRTCiB7CiAgICAg
YXV0byBkZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRT
dHlsZShrQ1RVSUZvbnRUZXh0U3R5bGVTaG9ydENhcHRpb24xLCBjb250ZW50U2l6ZUNhdGVnb3J5
LCAwKSk7CiAgICAgYXV0byBwb2ludFNpemUgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDb3B5
QXR0cmlidXRlKGRlc2NyaXB0b3IuZ2V0KCksIGtDVEZvbnRTaXplQXR0cmlidXRlKSk7Ci0gICAg
cmV0dXJuIFtkeW5hbWljX29iamNfY2FzdDxOU051bWJlcj4oKF9fYnJpZGdlIGlkKXBvaW50U2l6
ZS5nZXQoKSkgZmxvYXRWYWx1ZV07CisgICAgcmV0dXJuIFtkeW5hbWljX25zX2Nhc3Q8TlNOdW1i
ZXI+KChfX2JyaWRnZSBpZClwb2ludFNpemUuZ2V0KCkpIGZsb2F0VmFsdWVdOwogfQogCiBzdGF0
aWMgQ0dGbG9hdCBhdHRhY2htZW50RHluYW1pY1R5cGVTY2FsZUZhY3RvcigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCA4YmMw
NWU1OWNiNDhmOTlkNmMwZjliN2RjNGExZWU1MjkwOGM0ZmNjLi5mODRiZDM4Zjk4NDU5NDNiOWY5
MTFjN2JhMTY2ZDhiZGI2ZWM4MGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvY2YvQ0ZVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0
Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1R5cGVDYXN0c05TLmg+
CiAKICNpZiBVU0UoQVBQS0lUKQogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgpAQCAtNjYs
MTQgKzY3LDE0IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1NlY3VyZUNvZGluZ0FyY2hpdmluZ0RlbGVn
YXRlCiAtIChudWxsYWJsZSBpZClhcmNoaXZlcjooTlNLZXllZEFyY2hpdmVyICopYXJjaGl2ZXIg
d2lsbEVuY29kZU9iamVjdDooaWQpb2JqZWN0CiB7CiAjaWYgSEFWRShOU0ZPTlRfV0lUSF9PUFRJ
Q0FMX1NJWklOR19CVUcpCi0gICAgaWYgKGF1dG8gZm9udCA9IGR5bmFtaWNfb2JqY19jYXN0PE5T
Rm9udD4ob2JqZWN0KSkgeworICAgIGlmIChhdXRvIGZvbnQgPSBkeW5hbWljX25zX2Nhc3Q8TlNG
b250PihvYmplY3QpKSB7CiAgICAgICAgIC8vIFJlY3JlYXRlIGFueSBzZXJpYWxpemVkIGZvbnRz
IGFmdGVyIG5vcm1hbGl6aW5nIHRoZQogICAgICAgICAvLyBmb250IGF0dHJpYnV0ZXMgdG8gd29y
ayBhcm91bmQgPHJkYXI6Ly9wcm9ibGVtLzUxNjU3ODgwPi4KICAgICAgICAgcmV0dXJuIFdlYktp
dDo6Zm9udFdpdGhBdHRyaWJ1dGVzKGZvbnQuZm9udERlc2NyaXB0b3IuZm9udEF0dHJpYnV0ZXMs
IDApOwogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKGF1dG8gdW53cmFwcGVkVVJMID0gZHluYW1p
Y19vYmpjX2Nhc3Q8TlNVUkw+KG9iamVjdCkpCisgICAgaWYgKGF1dG8gdW53cmFwcGVkVVJMID0g
ZHluYW1pY19uc19jYXN0PE5TVVJMPihvYmplY3QpKQogICAgICAgICByZXR1cm4gYWRvcHROUyhb
W1dLU2VjdXJlQ29kaW5nVVJMV3JhcHBlciBhbGxvY10gaW5pdFdpdGhVUkw6dW53cmFwcGVkVVJM
XSkuYXV0b3JlbGVhc2UoKTsKIAogICAgIHJldHVybiBvYmplY3Q7CkBAIC04Miw3ICs4Myw3IEBA
IC0gKG51bGxhYmxlIGlkKWFyY2hpdmVyOihOU0tleWVkQXJjaGl2ZXIgKilhcmNoaXZlciB3aWxs
RW5jb2RlT2JqZWN0OihpZClvYmplY3QKIC0gKGlkIF9OdWxsYWJsZSl1bmFyY2hpdmVyOihOU0tl
eWVkVW5hcmNoaXZlciAqKXVuYXJjaGl2ZXIgZGlkRGVjb2RlT2JqZWN0OihpZCBfTnVsbGFibGUp
IE5TX1JFTEVBU0VTX0FSR1VNRU5UIG9iamVjdCBOU19SRVRVUk5TX1JFVEFJTkVECiB7CiAgICAg
YXV0byBhZG9wdGVkT2JqZWN0ID0gYWRvcHROUyhvYmplY3QpOwotICAgIGlmIChhdXRvIHdyYXBw
ZXIgPSBkeW5hbWljX29iamNfY2FzdDxXS1NlY3VyZUNvZGluZ1VSTFdyYXBwZXI+KGFkb3B0ZWRP
YmplY3QuZ2V0KCkpKQorICAgIGlmIChhdXRvIHdyYXBwZXIgPSBkeW5hbWljX25zX2Nhc3Q8V0tT
ZWN1cmVDb2RpbmdVUkxXcmFwcGVyPihhZG9wdGVkT2JqZWN0LmdldCgpKSkKICAgICAgICAgcmV0
dXJuIHJldGFpblB0cih3cmFwcGVyLndyYXBwZWRVUkwpLmxlYWtSZWYoKTsKIAogICAgIHJldHVy
biBhZG9wdGVkT2JqZWN0LmxlYWtSZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvT2Jq
Q09iamVjdEdyYXBoLm1tCmluZGV4IDAwZmZmZTIwYjhhZjY2MjE0ZjIzNDZjNzIxYmNlMmRhYjNk
OGUwODMuLjdlZDkzMDE4YTUxYTAwY2QzODg1MjgwYmQ2YzVkYWFhMDI3MjdhZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbQpAQCAtMzQsMTkgKzM0LDIw
IEBACiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0
ICJXS1R5cGVSZWZXcmFwcGVyLmgiCiAjaW1wb3J0IDx3dGYvRW51bVRyYWl0cy5oPgorI2ltcG9y
dCA8d3RmL2NvY29hL1R5cGVDYXN0c05TLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0
aWMgYm9vbCBzaG91bGRUcmFuc2Zvcm1HcmFwaChpZCBvYmplY3QsIGNvbnN0IE9iakNPYmplY3RH
cmFwaDo6VHJhbnNmb3JtZXImIHRyYW5zZm9ybWVyKQogewotICAgIGlmIChOU0FycmF5ICphcnJh
eSA9IGR5bmFtaWNfb2JqY19jYXN0PE5TQXJyYXk+KG9iamVjdCkpIHsKKyAgICBpZiAoTlNBcnJh
eSAqYXJyYXkgPSBkeW5hbWljX25zX2Nhc3Q8TlNBcnJheT4ob2JqZWN0KSkgewogICAgICAgICBm
b3IgKGlkIGVsZW1lbnQgaW4gYXJyYXkpIHsKICAgICAgICAgICAgIGlmIChzaG91bGRUcmFuc2Zv
cm1HcmFwaChlbGVtZW50LCB0cmFuc2Zvcm1lcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5
ID0gZHluYW1pY19vYmpjX2Nhc3Q8TlNEaWN0aW9uYXJ5PihvYmplY3QpKSB7CisgICAgaWYgKE5T
RGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IGR5bmFtaWNfbnNfY2FzdDxOU0RpY3Rpb25hcnk+KG9i
amVjdCkpIHsKICAgICAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAgICAgICAgW2RpY3Rpb25h
cnkgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOlsmdHJhbnNmb3JtZXIsICZyZXN1
bHRdKGlkIGtleSwgaWQgb2JqZWN0LCBCT09MKiBzdG9wKSB7CiAgICAgICAgICAgICBpZiAoc2hv
dWxkVHJhbnNmb3JtR3JhcGgob2JqZWN0LCB0cmFuc2Zvcm1lcikpIHsKQEAgLTYzLDcgKzY0LDcg
QEAgc3RhdGljIGJvb2wgc2hvdWxkVHJhbnNmb3JtR3JhcGgoaWQgb2JqZWN0LCBjb25zdCBPYmpD
T2JqZWN0R3JhcGg6OlRyYW5zZm9ybWVyJgogCiBzdGF0aWMgUmV0YWluUHRyPGlkPiB0cmFuc2Zv
cm1HcmFwaChpZCBvYmplY3QsIGNvbnN0IE9iakNPYmplY3RHcmFwaDo6VHJhbnNmb3JtZXImIHRy
YW5zZm9ybWVyKQogewotICAgIGlmIChOU0FycmF5ICphcnJheSA9IGR5bmFtaWNfb2JqY19jYXN0
PE5TQXJyYXk+KG9iamVjdCkpIHsKKyAgICBpZiAoTlNBcnJheSAqYXJyYXkgPSBkeW5hbWljX25z
X2Nhc3Q8TlNBcnJheT4ob2JqZWN0KSkgewogICAgICAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTphcnJheS5jb3VudF0pOwog
ICAgICAgICBmb3IgKGlkIGVsZW1lbnQgaW4gYXJyYXkpCiAgICAgICAgICAgICBbcmVzdWx0IGFk
ZE9iamVjdDp0cmFuc2Zvcm1HcmFwaChlbGVtZW50LCB0cmFuc2Zvcm1lcikuZ2V0KCldOwpAQCAt
NzEsNyArNzIsNyBAQCBzdGF0aWMgUmV0YWluUHRyPGlkPiB0cmFuc2Zvcm1HcmFwaChpZCBvYmpl
Y3QsIGNvbnN0IE9iakNPYmplY3RHcmFwaDo6VHJhbnNmb3JtZQogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIAotICAgIGlmIChOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBkeW5hbWlj
X29iamNfY2FzdDxOU0RpY3Rpb25hcnk+KG9iamVjdCkpIHsKKyAgICBpZiAoTlNEaWN0aW9uYXJ5
ICpkaWN0aW9uYXJ5ID0gZHluYW1pY19uc19jYXN0PE5TRGljdGlvbmFyeT4ob2JqZWN0KSkgewog
ICAgICAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9j
XSBpbml0V2l0aENhcGFjaXR5OmRpY3Rpb25hcnkuY291bnRdKTsKICAgICAgICAgW2RpY3Rpb25h
cnkgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOlsmcmVzdWx0LCAmdHJhbnNmb3Jt
ZXJdKGlkIGtleSwgaWQgb2JqZWN0LCBCT09MKikgewogICAgICAgICAgICAgW3Jlc3VsdCBzZXRP
YmplY3Q6dHJhbnNmb3JtR3JhcGgob2JqZWN0LCB0cmFuc2Zvcm1lcikuZ2V0KCkgZm9yS2V5Omtl
eV07CkBAIC0xMTIsMjMgKzExMywyMyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxPYmpDVHlwZT4g
dHlwZUZyb21PYmplY3QoaWQgb2JqZWN0KQogewogICAgIEFTU0VSVChvYmplY3QpOwogCi0gICAg
aWYgKGR5bmFtaWNfb2JqY19jYXN0PE5TQXJyYXk+KG9iamVjdCkpCisgICAgaWYgKGR5bmFtaWNf
bnNfY2FzdDxOU0FycmF5PihvYmplY3QpKQogICAgICAgICByZXR1cm4gT2JqQ1R5cGU6Ok5TQXJy
YXk7Ci0gICAgaWYgKGR5bmFtaWNfb2JqY19jYXN0PE5TRGF0YT4ob2JqZWN0KSkKKyAgICBpZiAo
ZHluYW1pY19uc19jYXN0PE5TRGF0YT4ob2JqZWN0KSkKICAgICAgICAgcmV0dXJuIE9iakNUeXBl
OjpOU0RhdGE7Ci0gICAgaWYgKGR5bmFtaWNfb2JqY19jYXN0PE5TRGF0ZT4ob2JqZWN0KSkKKyAg
ICBpZiAoZHluYW1pY19uc19jYXN0PE5TRGF0ZT4ob2JqZWN0KSkKICAgICAgICAgcmV0dXJuIE9i
akNUeXBlOjpOU0RhdGU7Ci0gICAgaWYgKGR5bmFtaWNfb2JqY19jYXN0PE5TRGljdGlvbmFyeT4o
b2JqZWN0KSkKKyAgICBpZiAoZHluYW1pY19uc19jYXN0PE5TRGljdGlvbmFyeT4ob2JqZWN0KSkK
ICAgICAgICAgcmV0dXJuIE9iakNUeXBlOjpOU0RpY3Rpb25hcnk7Ci0gICAgaWYgKGR5bmFtaWNf
b2JqY19jYXN0PE5TTnVtYmVyPihvYmplY3QpKQorICAgIGlmIChkeW5hbWljX25zX2Nhc3Q8TlNO
dW1iZXI+KG9iamVjdCkpCiAgICAgICAgIHJldHVybiBPYmpDVHlwZTo6TlNOdW1iZXI7Ci0gICAg
aWYgKGR5bmFtaWNfb2JqY19jYXN0PE5TU3RyaW5nPihvYmplY3QpKQorICAgIGlmIChkeW5hbWlj
X25zX2Nhc3Q8TlNTdHJpbmc+KG9iamVjdCkpCiAgICAgICAgIHJldHVybiBPYmpDVHlwZTo6TlNT
dHJpbmc7CiAKLSAgICBpZiAoZHluYW1pY19vYmpjX2Nhc3Q8V0tCcm93c2luZ0NvbnRleHRIYW5k
bGU+KG9iamVjdCkpCisgICAgaWYgKGR5bmFtaWNfbnNfY2FzdDxXS0Jyb3dzaW5nQ29udGV4dEhh
bmRsZT4ob2JqZWN0KSkKICAgICAgICAgcmV0dXJuIE9iakNUeXBlOjpXS0Jyb3dzaW5nQ29udGV4
dEhhbmRsZTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIGlm
IChkeW5hbWljX29iamNfY2FzdDxXS1R5cGVSZWZXcmFwcGVyPihvYmplY3QpKQorICAgIGlmIChk
eW5hbWljX25zX2Nhc3Q8V0tUeXBlUmVmV3JhcHBlcj4ob2JqZWN0KSkKICAgICAgICAgcmV0dXJu
IE9iakNUeXBlOjpXS1R5cGVSZWZXcmFwcGVyOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvTlNBdHRyaWJ1dGVkU3RyaW5nLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL05TQXR0cmlidXRlZFN0cmluZy5tbQppbmRleCAwODBlYWIxMTA3NTQ1ZDRjOTk0MTFlMjky
OTQ0YzBhMjVjODViOTRiLi5jMDY4YWFmYWM5NmU2ZjNhYzBjY2NkYzEzZTczMDk0ZDRjMDY4ZmZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvTlNBdHRyaWJ1
dGVkU3RyaW5nLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9OU0F0
dHJpYnV0ZWRTdHJpbmcubW0KQEAgLTM4LDcgKzM4LDcgQEAKICNpbXBvcnQgPFdlYktpdC9fV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9EZXF1ZS5oPgogI2ltcG9y
dCA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgorI2ltcG9ydCA8d3RmL2NvY29hL1R5cGVDYXN0c05TLmg+CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogI2ltcG9ydCA8VUlLaXRTUEkuaD4KQEAgLTI1NSw3ICsyNTUsNyBAQCArICh2b2lk
KV9sb2FkRnJvbUhUTUxXaXRoT3B0aW9uczooTlNEaWN0aW9uYXJ5PE5TQXR0cmlidXRlZFN0cmlu
Z0RvY3VtZW50UmVhZGluZwogCiAgICAgICAgIHdlYlZpZXcuZ2V0KCkubmF2aWdhdGlvbkRlbGVn
YXRlID0gbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpOwogCi0gICAgICAgIGlmIChhdXRvKiB0ZXh0
Wm9vbUZhY3RvciA9IGR5bmFtaWNfb2JqY19jYXN0PE5TTnVtYmVyPihvcHRpb25zW05TVGV4dFNp
emVNdWx0aXBsaWVyRG9jdW1lbnRPcHRpb25dKSkKKyAgICAgICAgaWYgKGF1dG8qIHRleHRab29t
RmFjdG9yID0gZHluYW1pY19uc19jYXN0PE5TTnVtYmVyPihvcHRpb25zW05TVGV4dFNpemVNdWx0
aXBsaWVyRG9jdW1lbnRPcHRpb25dKSkKICAgICAgICAgICAgIHdlYlZpZXcuZ2V0KCkuX3RleHRa
b29tRmFjdG9yID0gdGV4dFpvb21GYWN0b3IuZG91YmxlVmFsdWU7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHdlYlZpZXcuZ2V0KCkuX3RleHRab29tRmFjdG9yID0gMTsKQEAgLTMyNyw3ICsz
MjcsNyBAQCArICh2b2lkKV9sb2FkRnJvbUhUTUxXaXRoT3B0aW9uczooTlNEaWN0aW9uYXJ5PE5T
QXR0cmlidXRlZFN0cmluZ0RvY3VtZW50UmVhZGluZwogICAgICAgICB9OwogCiAgICAgICAgIGF1
dG8gdGltZW91dEludGVydmFsID0gZGVmYXVsdFRpbWVvdXRJbnRlcnZhbDsKLSAgICAgICAgaWYg
KGF1dG8qIHRpbWVvdXRPcHRpb24gPSBkeW5hbWljX29iamNfY2FzdDxOU051bWJlcj4ob3B0aW9u
c1tOU1RpbWVvdXREb2N1bWVudE9wdGlvbl0pKSB7CisgICAgICAgIGlmIChhdXRvKiB0aW1lb3V0
T3B0aW9uID0gZHluYW1pY19uc19jYXN0PE5TTnVtYmVyPihvcHRpb25zW05TVGltZW91dERvY3Vt
ZW50T3B0aW9uXSkpIHsKICAgICAgICAgICAgIGlmICh0aW1lb3V0T3B0aW9uLmRvdWJsZVZhbHVl
ID49IDApCiAgICAgICAgICAgICAgICAgdGltZW91dEludGVydmFsID0gdGltZW91dE9wdGlvbi5k
b3VibGVWYWx1ZTsKICAgICAgICAgfQpAQCAtMzY0LDcgKzM2NCw3IEBAICsgKHZvaWQpbG9hZEZy
b21IVE1MV2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgb3B0aW9uczooTlNEaWN0
aW9uYXJ5PE5TCiArICh2b2lkKWxvYWRGcm9tSFRNTFdpdGhGaWxlVVJMOihOU1VSTCAqKWZpbGVV
Ukwgb3B0aW9uczooTlNEaWN0aW9uYXJ5PE5TQXR0cmlidXRlZFN0cmluZ0RvY3VtZW50UmVhZGlu
Z09wdGlvbktleSwgaWQ+ICopb3B0aW9ucyBjb21wbGV0aW9uSGFuZGxlcjooTlNBdHRyaWJ1dGVk
U3RyaW5nQ29tcGxldGlvbkhhbmRsZXIpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBbc2VsZiBf
bG9hZEZyb21IVE1MV2l0aE9wdGlvbnM6b3B0aW9ucyBjb250ZW50TG9hZGVyOl5XS05hdmlnYXRp
b24gKihXS1dlYlZpZXcgKndlYlZpZXcpIHsKLSAgICAgICAgYXV0byogcmVhZEFjY2Vzc1VSTCA9
IGR5bmFtaWNfb2JqY19jYXN0PE5TVVJMPihvcHRpb25zW05TUmVhZEFjY2Vzc1VSTERvY3VtZW50
T3B0aW9uXSk7CisgICAgICAgIGF1dG8qIHJlYWRBY2Nlc3NVUkwgPSBkeW5hbWljX25zX2Nhc3Q8
TlNVUkw+KG9wdGlvbnNbTlNSZWFkQWNjZXNzVVJMRG9jdW1lbnRPcHRpb25dKTsKICAgICAgICAg
cmV0dXJuIFt3ZWJWaWV3IGxvYWRGaWxlVVJMOmZpbGVVUkwgYWxsb3dpbmdSZWFkQWNjZXNzVG9V
Ukw6cmVhZEFjY2Vzc1VSTF07CiAgICAgfSBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFu
ZGxlcl07CiB9CkBAIC0zNzIsNyArMzcyLDcgQEAgKyAodm9pZClsb2FkRnJvbUhUTUxXaXRoRmls
ZVVSTDooTlNVUkwgKilmaWxlVVJMIG9wdGlvbnM6KE5TRGljdGlvbmFyeTxOU0F0dHJpYnUKICsg
KHZvaWQpbG9hZEZyb21IVE1MV2l0aFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczoo
TlNEaWN0aW9uYXJ5PE5TQXR0cmlidXRlZFN0cmluZ0RvY3VtZW50UmVhZGluZ09wdGlvbktleSwg
aWQ+ICopb3B0aW9ucyBjb21wbGV0aW9uSGFuZGxlcjooTlNBdHRyaWJ1dGVkU3RyaW5nQ29tcGxl
dGlvbkhhbmRsZXIpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBbc2VsZiBfbG9hZEZyb21IVE1M
V2l0aE9wdGlvbnM6b3B0aW9ucyBjb250ZW50TG9hZGVyOl5XS05hdmlnYXRpb24gKihXS1dlYlZp
ZXcgKndlYlZpZXcpIHsKLSAgICAgICAgYXV0byogYmFzZVVSTCA9IGR5bmFtaWNfb2JqY19jYXN0
PE5TVVJMPihvcHRpb25zW05TQmFzZVVSTERvY3VtZW50T3B0aW9uXSk7CisgICAgICAgIGF1dG8q
IGJhc2VVUkwgPSBkeW5hbWljX25zX2Nhc3Q8TlNVUkw+KG9wdGlvbnNbTlNCYXNlVVJMRG9jdW1l
bnRPcHRpb25dKTsKICAgICAgICAgcmV0dXJuIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOnN0cmlu
ZyBiYXNlVVJMOmJhc2VVUkxdOwogICAgIH0gY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhh
bmRsZXJdOwogfQpAQCAtMzgwLDkgKzM4MCw5IEBAICsgKHZvaWQpbG9hZEZyb21IVE1MV2l0aFN0
cmluZzooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooTlNEaWN0aW9uYXJ5PE5TQXR0cmliCiAr
ICh2b2lkKWxvYWRGcm9tSFRNTFdpdGhEYXRhOihOU0RhdGEgKilkYXRhIG9wdGlvbnM6KE5TRGlj
dGlvbmFyeTxOU0F0dHJpYnV0ZWRTdHJpbmdEb2N1bWVudFJlYWRpbmdPcHRpb25LZXksIGlkPiAq
KW9wdGlvbnMgY29tcGxldGlvbkhhbmRsZXI6KE5TQXR0cmlidXRlZFN0cmluZ0NvbXBsZXRpb25I
YW5kbGVyKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgW3NlbGYgX2xvYWRGcm9tSFRNTFdpdGhP
cHRpb25zOm9wdGlvbnMgY29udGVudExvYWRlcjpeV0tOYXZpZ2F0aW9uICooV0tXZWJWaWV3ICp3
ZWJWaWV3KSB7Ci0gICAgICAgIGF1dG8qIHRleHRFbmNvZGluZ05hbWUgPSBkeW5hbWljX29iamNf
Y2FzdDxOU1N0cmluZz4ob3B0aW9uc1tOU1RleHRFbmNvZGluZ05hbWVEb2N1bWVudE9wdGlvbl0p
OwotICAgICAgICBhdXRvIGNoYXJhY3RlckVuY29kaW5nID0gc3RhdGljX2Nhc3Q8TlNTdHJpbmdF
bmNvZGluZz4oZHluYW1pY19vYmpjX2Nhc3Q8TlNOdW1iZXI+KG9wdGlvbnNbTlNDaGFyYWN0ZXJF
bmNvZGluZ0RvY3VtZW50T3B0aW9uXSkudW5zaWduZWRJbnRlZ2VyVmFsdWUpOwotICAgICAgICBh
dXRvKiBiYXNlVVJMID0gZHluYW1pY19vYmpjX2Nhc3Q8TlNVUkw+KG9wdGlvbnNbTlNCYXNlVVJM
RG9jdW1lbnRPcHRpb25dKTsKKyAgICAgICAgYXV0byogdGV4dEVuY29kaW5nTmFtZSA9IGR5bmFt
aWNfbnNfY2FzdDxOU1N0cmluZz4ob3B0aW9uc1tOU1RleHRFbmNvZGluZ05hbWVEb2N1bWVudE9w
dGlvbl0pOworICAgICAgICBhdXRvIGNoYXJhY3RlckVuY29kaW5nID0gc3RhdGljX2Nhc3Q8TlNT
dHJpbmdFbmNvZGluZz4oZHluYW1pY19uc19jYXN0PE5TTnVtYmVyPihvcHRpb25zW05TQ2hhcmFj
dGVyRW5jb2RpbmdEb2N1bWVudE9wdGlvbl0pLnVuc2lnbmVkSW50ZWdlclZhbHVlKTsKKyAgICAg
ICAgYXV0byogYmFzZVVSTCA9IGR5bmFtaWNfbnNfY2FzdDxOU1VSTD4ob3B0aW9uc1tOU0Jhc2VV
UkxEb2N1bWVudE9wdGlvbl0pOwogCiAgICAgICAgIGlmIChjaGFyYWN0ZXJFbmNvZGluZyAmJiAh
dGV4dEVuY29kaW5nTmFtZSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmdFbmNvZGluZyA9IENG
U3RyaW5nQ29udmVydE5TU3RyaW5nRW5jb2RpbmdUb0VuY29kaW5nKGNoYXJhY3RlckVuY29kaW5n
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlz
c2lvblV0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01lZGlhUGVy
bWlzc2lvblV0aWxpdGllcy5tbQppbmRleCAxNGU5YzhhYjViYmZjYmZmYTA0ZGRiODVjYmIyNzE5
NTIwYzA1ZWFlLi41MWJkYTE3MzlkMmZiOTRmN2VlMDRkM2QxMWQxZjIwYzlmOWVjZDhiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGls
aXRpZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNz
aW9uVXRpbGl0aWVzLm1tCkBAIC0yNywxOSArMjcsMjEgQEAKICNpbXBvcnQgIk1lZGlhUGVybWlz
c2lvblV0aWxpdGllcy5oIgogCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCi0jaW1wb3J0
ICJUQ0NTb2Z0TGluay5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQg
IldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2ltcG9ydCA8bXV0ZXg+Ci0j
aW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KLSNpbXBvcnQgPHBhbC9j
b2NvYS9TcGVlY2hTb2Z0TGluay5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0
IDx3dGYvVVJMSGVscGVycy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1R5cGVDYXN0c05TLmg+CiAj
aW1wb3J0IDx3dGYvc3BpL2NmL0NGQnVuZGxlU1BJLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndp
bi9TYW5kYm94U1BJLmg+CiAKKyNpbXBvcnQgIlRDQ1NvZnRMaW5rLmgiCisjaW1wb3J0IDxwYWwv
Y29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9TcGVlY2hT
b2Z0TGluay5oPgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogYm9vbCBjaGVja1NhbmRib3hSZXF1
aXJlbWVudEZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZSB0eXBlKQpAQCAtODUsNyArODcsNyBA
QCBib29sIGNoZWNrVXNhZ2VEZXNjcmlwdGlvblN0cmluZ0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9u
VHlwZSB0eXBlKQogICAgICAgICBpZiAoYXVkaW9BY2Nlc3MgPT0ga1RDQ0FjY2Vzc1ByZWZsaWdo
dEdyYW50ZWQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgc3RkOjpjYWxsX29u
Y2UoYXVkaW9EZXNjcmlwdGlvbkZsYWcsIFtdIHsKLSAgICAgICAgICAgIGhhc01pY3JvcGhvbmVE
ZXNjcmlwdGlvblN0cmluZyA9IGR5bmFtaWNfb2JqY19jYXN0PE5TU3RyaW5nPihOU0J1bmRsZS5t
YWluQnVuZGxlLmluZm9EaWN0aW9uYXJ5W0AiTlNNaWNyb3Bob25lVXNhZ2VEZXNjcmlwdGlvbiJd
KS5sZW5ndGggPiAwOworICAgICAgICAgICAgaGFzTWljcm9waG9uZURlc2NyaXB0aW9uU3RyaW5n
ID0gZHluYW1pY19uc19jYXN0PE5TU3RyaW5nPihOU0J1bmRsZS5tYWluQnVuZGxlLmluZm9EaWN0
aW9uYXJ5W0AiTlNNaWNyb3Bob25lVXNhZ2VEZXNjcmlwdGlvbiJdKS5sZW5ndGggPiAwOwogICAg
ICAgICB9KTsKICAgICAgICAgcmV0dXJuIGhhc01pY3JvcGhvbmVEZXNjcmlwdGlvblN0cmluZzsK
ICAgICBjYXNlIE1lZGlhUGVybWlzc2lvblR5cGU6OlZpZGVvOgpAQCAtOTMsNyArOTUsNyBAQCBi
b29sIGNoZWNrVXNhZ2VEZXNjcmlwdGlvblN0cmluZ0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlw
ZSB0eXBlKQogICAgICAgICBpZiAodmlkZW9BY2Nlc3MgPT0ga1RDQ0FjY2Vzc1ByZWZsaWdodEdy
YW50ZWQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgc3RkOjpjYWxsX29uY2Uo
dmlkZW9EZXNjcmlwdGlvbkZsYWcsIFtdIHsKLSAgICAgICAgICAgIGhhc0NhbWVyYURlc2NyaXB0
aW9uU3RyaW5nID0gZHluYW1pY19vYmpjX2Nhc3Q8TlNTdHJpbmc+KE5TQnVuZGxlLm1haW5CdW5k
bGUuaW5mb0RpY3Rpb25hcnlbQCJOU0NhbWVyYVVzYWdlRGVzY3JpcHRpb24iXSkubGVuZ3RoID4g
MDsKKyAgICAgICAgICAgIGhhc0NhbWVyYURlc2NyaXB0aW9uU3RyaW5nID0gZHluYW1pY19uc19j
YXN0PE5TU3RyaW5nPihOU0J1bmRsZS5tYWluQnVuZGxlLmluZm9EaWN0aW9uYXJ5W0AiTlNDYW1l
cmFVc2FnZURlc2NyaXB0aW9uIl0pLmxlbmd0aCA+IDA7CiAgICAgICAgIH0pOwogICAgICAgICBy
ZXR1cm4gaGFzQ2FtZXJhRGVzY3JpcHRpb25TdHJpbmc7CiAgICAgfQpAQCAtMTAxLDcgKzEwMyw3
IEBAIGJvb2wgY2hlY2tVc2FnZURlc2NyaXB0aW9uU3RyaW5nRm9yVHlwZShNZWRpYVBlcm1pc3Np
b25UeXBlIHR5cGUpCiAKIGJvb2wgY2hlY2tVc2FnZURlc2NyaXB0aW9uU3RyaW5nRm9yU3BlZWNo
UmVjb2duaXRpb24oKQogewotICAgIHJldHVybiBkeW5hbWljX29iamNfY2FzdDxOU1N0cmluZz4o
TlNCdW5kbGUubWFpbkJ1bmRsZS5pbmZvRGljdGlvbmFyeVtAIk5TU3BlZWNoUmVjb2duaXRpb25V
c2FnZURlc2NyaXB0aW9uIl0pLmxlbmd0aCA+IDA7CisgICAgcmV0dXJuIGR5bmFtaWNfbnNfY2Fz
dDxOU1N0cmluZz4oTlNCdW5kbGUubWFpbkJ1bmRsZS5pbmZvRGljdGlvbmFyeVtAIk5TU3BlZWNo
UmVjb2duaXRpb25Vc2FnZURlc2NyaXB0aW9uIl0pLmxlbmd0aCA+IDA7CiB9CiAKIHN0YXRpYyBO
U1N0cmluZyogdmlzaWJsZURvbWFpbihjb25zdCBTdHJpbmcmIGhvc3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4
IGRjYWRmOGU5MmJiNDhkMDA1NmY3ZDIwMWM5NWQ4YmRhOTZhOGE1ZWUuLjc1MjcxNmJkNDZjZTUx
YmQ0MmM2YWNjMTMzYjI3YmMxZTY2ZDlmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCkBAIC00NCw2ICs0NCw3IEBA
CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9TY29wZS5oPgog
I2ltcG9ydCA8d3RmL2NvY29hL0VudGl0bGVtZW50cy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1R5
cGVDYXN0c05TLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQg
PHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4KIApAQCAtODksMTEgKzkwLDExIEBAIFJlZlB0
cjxPYmpDT2JqZWN0R3JhcGg+IFdlYlByb2Nlc3NQcm94eTo6dHJhbnNmb3JtSGFuZGxlc1RvT2Jq
ZWN0cyhPYmpDT2JqZWN0R3JhCiAKICAgICAgICAgYm9vbCBzaG91bGRUcmFuc2Zvcm1PYmplY3Qo
aWQgb2JqZWN0KSBjb25zdCBvdmVycmlkZQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoZHlu
YW1pY19vYmpjX2Nhc3Q8V0tCcm93c2luZ0NvbnRleHRIYW5kbGU+KG9iamVjdCkpCisgICAgICAg
ICAgICBpZiAoZHluYW1pY19uc19jYXN0PFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlPihvYmplY3Qp
KQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgICAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICAgICAgaWYgKGR5bmFtaWNfb2JqY19j
YXN0PFdLVHlwZVJlZldyYXBwZXI+KG9iamVjdCkpCisgICAgICAgICAgICBpZiAoZHluYW1pY19u
c19jYXN0PFdLVHlwZVJlZldyYXBwZXI+KG9iamVjdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwMSw3ICsxMDIsNyBAQCBSZWZQdHI8T2JqQ09i
amVjdEdyYXBoPiBXZWJQcm9jZXNzUHJveHk6OnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMoT2Jq
Q09iamVjdEdyYQogCiAgICAgICAgIFJldGFpblB0cjxpZD4gdHJhbnNmb3JtT2JqZWN0KGlkIG9i
amVjdCkgY29uc3Qgb3ZlcnJpZGUKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGF1dG8qIGhh
bmRsZSA9IGR5bmFtaWNfb2JqY19jYXN0PFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlPihvYmplY3Qp
KSB7CisgICAgICAgICAgICBpZiAoYXV0byogaGFuZGxlID0gZHluYW1pY19uc19jYXN0PFdLQnJv
d3NpbmdDb250ZXh0SGFuZGxlPihvYmplY3QpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8q
IHdlYlBhZ2VQcm94eSA9IG1fd2ViUHJvY2Vzc1Byb3h5LndlYlBhZ2UoaGFuZGxlLnBhZ2VQcm94
eUlEKSkgewogICAgICAgICAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1dLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlciBfYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckZvclBhZ2VSZWY6dG9BUEkod2ViUGFn
ZVByb3h5KV07CkBAIC0xMTIsNyArMTEzLDcgQEAgUmVmUHRyPE9iakNPYmplY3RHcmFwaD4gV2Vi
UHJvY2Vzc1Byb3h5Ojp0cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKE9iakNPYmplY3RHcmEKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KLSAgICAgICAgICAgIGlmIChhdXRvKiB3cmFwcGVyID0gZHluYW1pY19vYmpjX2Nhc3Q8
V0tUeXBlUmVmV3JhcHBlcj4ob2JqZWN0KSkKKyAgICAgICAgICAgIGlmIChhdXRvKiB3cmFwcGVy
ID0gZHluYW1pY19uc19jYXN0PFdLVHlwZVJlZldyYXBwZXI+KG9iamVjdCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0TlMoW1tXS1R5cGVSZWZXcmFwcGVyIGFsbG9jXSBpbml0V2l0aE9i
amVjdDp0b0FQSShtX3dlYlByb2Nlc3NQcm94eS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHRv
SW1wbCh3cmFwcGVyLm9iamVjdCkpLmdldCgpKV0pOwogICAgICAgICAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICByZXR1cm4gb2JqZWN0OwpAQCAtMTMw
LDkgKzEzMSw5IEBAIFJlZlB0cjxPYmpDT2JqZWN0R3JhcGg+IFdlYlByb2Nlc3NQcm94eTo6dHJh
bnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhPYmpDT2JqZWN0R3JhCiAgICAgICAgIGJvb2wgc2hvdWxk
VHJhbnNmb3JtT2JqZWN0KGlkIG9iamVjdCkgY29uc3Qgb3ZlcnJpZGUKICAgICAgICAgewogICAg
ICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgICAg
IGlmIChkeW5hbWljX29iamNfY2FzdDxXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI+KG9iamVj
dCkpCisgICAgICAgICAgICBpZiAoZHluYW1pY19uc19jYXN0PFdLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlcj4ob2JqZWN0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
ICAgIGlmIChkeW5hbWljX29iamNfY2FzdDxXS1R5cGVSZWZXcmFwcGVyPihvYmplY3QpKQorICAg
ICAgICAgICAgaWYgKGR5bmFtaWNfbnNfY2FzdDxXS1R5cGVSZWZXcmFwcGVyPihvYmplY3QpKQog
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDEsOSAr
MTQyLDkgQEAgUmVmUHRyPE9iakNPYmplY3RHcmFwaD4gV2ViUHJvY2Vzc1Byb3h5Ojp0cmFuc2Zv
cm1PYmplY3RzVG9IYW5kbGVzKE9iakNPYmplY3RHcmEKICAgICAgICAgUmV0YWluUHRyPGlkPiB0
cmFuc2Zvcm1PYmplY3QoaWQgb2JqZWN0KSBjb25zdCBvdmVycmlkZQogICAgICAgICB7CiAgICAg
ICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICAgICAg
aWYgKGF1dG8qIGNvbnRyb2xsZXIgPSBkeW5hbWljX29iamNfY2FzdDxXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXI+KG9iamVjdCkpCisgICAgICAgICAgICBpZiAoYXV0byogY29udHJvbGxlciA9
IGR5bmFtaWNfbnNfY2FzdDxXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI+KG9iamVjdCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXIuaGFuZGxlOwotICAgICAgICAgICAgaWYg
KGF1dG8qIHdyYXBwZXIgPSBkeW5hbWljX29iamNfY2FzdDxXS1R5cGVSZWZXcmFwcGVyPihvYmpl
Y3QpKQorICAgICAgICAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBkeW5hbWljX25zX2Nhc3Q8V0tU
eXBlUmVmV3JhcHBlcj4ob2JqZWN0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gYWRvcHROUyhb
W1dLVHlwZVJlZldyYXBwZXIgYWxsb2NdIGluaXRXaXRoT2JqZWN0OnRvQVBJKHRyYW5zZm9ybU9i
amVjdHNUb0hhbmRsZXModG9JbXBsKHdyYXBwZXIub2JqZWN0KSkuZ2V0KCkpXSk7CiAgICAgICAg
ICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIHJldHVy
biBvYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA3NzgyYzVjNjllMjUzYzhlYTU3YzBlNjkyZmU5
ZGRmOThjYTk5YTQzLi41ZTdiNGE2MDFkOGJmNTI4ZjMyNmY3NjhhNTk2ZGJkOWQ0YTRiNTlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KQEAgLTE0NSwxMSArMTQ1LDExIEBACiAjaW1wb3J0IDxwYWwvc3BpL2lv
cy9NYW5hZ2VkQ29uZmlndXJhdGlvblNQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2Vw
dGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgogI2ltcG9ydCA8d3RmL1Njb3BlLmg+CiAjaW1wb3J0IDx3dGYvU2V0Rm9yU2NvcGUuaD4K
ICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0
cmFzLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVHlwZUNhc3RzTlMuaD4KICNpbXBvcnQgPHd0Zi9j
b2NvYS9WZWN0b3JDb2NvYS5oPgogI2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCkBA
IC04NzEwLDcgKzg3MTAsNyBAQCBzdGF0aWMgV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0
UmVxdWVzdCB0b1dlYlJlcXVlc3QoVUlXS0RvY3VtZW50UmVxdWVzdCAqcgogICAgICAgICAucmVj
dCA9IHJlcXVlc3QuZG9jdW1lbnRSZWN0CiAgICAgfTsKIAotICAgIGlmIChhdXRvIHRleHRJbnB1
dENvbnRleHQgPSBkeW5hbWljX29iamNfY2FzdDxfV0tUZXh0SW5wdXRDb250ZXh0PihyZXF1ZXN0
LmlucHV0RWxlbWVudElkZW50aWZpZXIpKQorICAgIGlmIChhdXRvIHRleHRJbnB1dENvbnRleHQg
PSBkeW5hbWljX25zX2Nhc3Q8X1dLVGV4dElucHV0Q29udGV4dD4ocmVxdWVzdC5pbnB1dEVsZW1l
bnRJZGVudGlmaWVyKSkKICAgICAgICAgd2ViUmVxdWVzdC50ZXh0SW5wdXRDb250ZXh0ID0gW3Rl
eHRJbnB1dENvbnRleHQgX3RleHRJbnB1dENvbnRleHRdOwogCiAgICAgcmV0dXJuIHdlYlJlcXVl
c3Q7CkBAIC04NzYyLDcgKzg3NjIsNyBAQCAtICh2b2lkKWluc2VydFRleHRQbGFjZWhvbGRlcldp
dGhTaXplOihDR1NpemUpc2l6ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVQogLSAodm9p
ZClyZW1vdmVUZXh0UGxhY2Vob2xkZXI6KFVJVGV4dFBsYWNlaG9sZGVyICopcGxhY2Vob2xkZXIg
d2lsbEluc2VydFRleHQ6KEJPT0wpd2lsbEluc2VydFRleHQgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dCBzdXBwb3J0IGZvciB3aWxsSW5zZXJ0VGV4dC4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NzQ3Pi4KLSAgICBpZiAoYXV0byogd2tUZXh0UGxhY2Vob2xk
ZXIgPSBkeW5hbWljX29iamNfY2FzdDxXS1RleHRQbGFjZWhvbGRlcj4ocGxhY2Vob2xkZXIpKQor
ICAgIGlmIChhdXRvKiB3a1RleHRQbGFjZWhvbGRlciA9IGR5bmFtaWNfbnNfY2FzdDxXS1RleHRQ
bGFjZWhvbGRlcj4ocGxhY2Vob2xkZXIpKQogICAgICAgICBfcGFnZS0+cmVtb3ZlVGV4dFBsYWNl
aG9sZGVyKHdrVGV4dFBsYWNlaG9sZGVyLmVsZW1lbnRDb250ZXh0LCBtYWtlQmxvY2tQdHIoY29t
cGxldGlvbkhhbmRsZXIpKTsKICAgICBlbHNlCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0Nv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5t
bQppbmRleCA0MjYzNWViM2ZlNzE5N2JiNDA0ZDdhODk4ODViMTBkOTBkMGJmODA4Li5hOTA5MzI3
MWQxMThkMmYxNDNlNTJkZTA5NDlhODhiNjU0NzRlNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KQEAgLTEwNSw2ICsxMDUsNyBA
QAogI2ltcG9ydCA8d3RmL2NvY29hL0VudGl0bGVtZW50cy5oPgogI2ltcG9ydCA8d3RmL2NvY29h
L05TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzQ29jb2EuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9UeXBlQ2FzdHNOUy5oPgogI2ltcG9ydCA8
d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
QEAgLTg1MSwxMSArODUyLDExIEBAIFJlZlB0cjxPYmpDT2JqZWN0R3JhcGg+IFdlYlByb2Nlc3M6
OnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMoT2JqQ09iamVjdEdyYXBoJiBvCiAKICAgICAgICAg
Ym9vbCBzaG91bGRUcmFuc2Zvcm1PYmplY3QoaWQgb2JqZWN0KSBjb25zdCBvdmVycmlkZQogICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoZHluYW1pY19vYmpjX2Nhc3Q8V0tCcm93c2luZ0NvbnRl
eHRIYW5kbGU+KG9iamVjdCkpCisgICAgICAgICAgICBpZiAoZHluYW1pY19uc19jYXN0PFdLQnJv
d3NpbmdDb250ZXh0SGFuZGxlPihvYmplY3QpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAg
ICAgICAgICAgaWYgKGR5bmFtaWNfb2JqY19jYXN0PFdLVHlwZVJlZldyYXBwZXI+KG9iamVjdCkp
CisgICAgICAgICAgICBpZiAoZHluYW1pY19uc19jYXN0PFdLVHlwZVJlZldyYXBwZXI+KG9iamVj
dCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTg2
Myw3ICs4NjQsNyBAQCBSZWZQdHI8T2JqQ09iamVjdEdyYXBoPiBXZWJQcm9jZXNzOjp0cmFuc2Zv
cm1IYW5kbGVzVG9PYmplY3RzKE9iakNPYmplY3RHcmFwaCYgbwogCiAgICAgICAgIFJldGFpblB0
cjxpZD4gdHJhbnNmb3JtT2JqZWN0KGlkIG9iamVjdCkgY29uc3Qgb3ZlcnJpZGUKICAgICAgICAg
ewotICAgICAgICAgICAgaWYgKGF1dG8qIGhhbmRsZSA9IGR5bmFtaWNfb2JqY19jYXN0PFdLQnJv
d3NpbmdDb250ZXh0SGFuZGxlPihvYmplY3QpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogaGFu
ZGxlID0gZHluYW1pY19uc19jYXN0PFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlPihvYmplY3QpKSB7
CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBtX3dlYlByb2Nlc3Mud2ViUGFn
ZShoYW5kbGUuX3dlYlBhZ2VJRCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVy
KCp3ZWJQYWdlKTsKIApAQCAtODcxLDcgKzg3Miw3IEBAIFJlZlB0cjxPYmpDT2JqZWN0R3JhcGg+
IFdlYlByb2Nlc3M6OnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMoT2JqQ09iamVjdEdyYXBoJiBv
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCi0gICAgICAgICAgICBpZiAoYXV0byogd3JhcHBlciA9IGR5bmFtaWNfb2JqY19j
YXN0PFdLVHlwZVJlZldyYXBwZXI+KG9iamVjdCkpCisgICAgICAgICAgICBpZiAoYXV0byogd3Jh
cHBlciA9IGR5bmFtaWNfbnNfY2FzdDxXS1R5cGVSZWZXcmFwcGVyPihvYmplY3QpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbV0tUeXBlUmVmV3JhcHBlciBhbGxvY10gaW5pdFdp
dGhPYmplY3Q6dG9BUEkobV93ZWJQcm9jZXNzLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModG9J
bXBsKHdyYXBwZXIub2JqZWN0KSkuZ2V0KCkpXSk7CiAgICAgICAgICAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIHJldHVybiBvYmplY3Q7CkBAIC04ODgs
MTEgKzg4OSwxMSBAQCBSZWZQdHI8T2JqQ09iamVjdEdyYXBoPiBXZWJQcm9jZXNzOjp0cmFuc2Zv
cm1PYmplY3RzVG9IYW5kbGVzKE9iakNPYmplY3RHcmFwaCYgbwogICAgIHN0cnVjdCBUcmFuc2Zv
cm1lciBmaW5hbCA6IE9iakNPYmplY3RHcmFwaDo6VHJhbnNmb3JtZXIgewogICAgICAgICBib29s
IHNob3VsZFRyYW5zZm9ybU9iamVjdChpZCBvYmplY3QpIGNvbnN0IG92ZXJyaWRlCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGlmIChkeW5hbWljX29iamNfY2FzdDxXS1dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXI+KG9iamVjdCkpCisgICAgICAgICAgICBpZiAoZHluYW1p
Y19uc19jYXN0PFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcj4ob2Jq
ZWN0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgICAgIGlmIChkeW5hbWljX29i
amNfY2FzdDxXS1R5cGVSZWZXcmFwcGVyPihvYmplY3QpKQorICAgICAgICAgICAgaWYgKGR5bmFt
aWNfbnNfY2FzdDxXS1R5cGVSZWZXcmFwcGVyPihvYmplY3QpKQogICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MDAsMTEgKzkwMSwxMSBAQCBSZWZQdHI8
T2JqQ09iamVjdEdyYXBoPiBXZWJQcm9jZXNzOjp0cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKE9i
akNPYmplY3RHcmFwaCYgbwogCiAgICAgICAgIFJldGFpblB0cjxpZD4gdHJhbnNmb3JtT2JqZWN0
KGlkIG9iamVjdCkgY29uc3Qgb3ZlcnJpZGUKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGF1
dG8qIGNvbnRyb2xsZXIgPSBkeW5hbWljX29iamNfY2FzdDxXS1dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXI+KG9iamVjdCkpCisgICAgICAgICAgICBpZiAoYXV0byogY29u
dHJvbGxlciA9IGR5bmFtaWNfbnNfY2FzdDxXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXI+KG9iamVjdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXIu
aGFuZGxlOwogCiAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJ
TgotICAgICAgICAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBkeW5hbWljX29iamNfY2FzdDxXS1R5
cGVSZWZXcmFwcGVyPihvYmplY3QpKQorICAgICAgICAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBk
eW5hbWljX25zX2Nhc3Q8V0tUeXBlUmVmV3JhcHBlcj4ob2JqZWN0KSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gYWRvcHROUyhbW1dLVHlwZVJlZldyYXBwZXIgYWxsb2NdIGluaXRXaXRoT2JqZWN0
OnRvQVBJKHRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModG9JbXBsKHdyYXBwZXIub2JqZWN0KSku
Z2V0KCkpXSk7CiAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
ICAgICAgICAgICAgIHJldHVybiBvYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQppbmRleCBkMGE5NWViNzRj
NThiZmEwOTFjMTFkNDA5OTEzZjhmN2YzNDI1ZWIzLi43MjNmYTg0N2ZhYTUwZjZlZjBhMGE3NWI1
ZTk2OGZlYTFiN2Q3OTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0KQEAgLTU5LDYgKzU5LDcgQEAKICNpbXBv
cnQgPFdlYkNvcmUvUGFnZVBhc3RlYm9hcmRDb250ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bh
c3RlYm9hcmQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFzdGVib2FyZFdyaXRlci5oPgorI2ltcG9y
dCA8d3RmL2NvY29hL1R5cGVDYXN0c05TLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CkBAIC0xNzQsNyArMTc1LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpiZWdpbkRyYWcoRHJhZ0l0
ZW0gZHJhZ0l0ZW0sIEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UG9pbnQmIG0KIHsKICAgICBBU1NF
UlQoIWRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkuaGFzRGF0YSgpKTsKIAotICAgIFJldGFpblB0
cjxXZWJIVE1MVmlldz4gdG9wV2ViSFRNTFZpZXcgPSBkeW5hbWljX29iamNfY2FzdDxXZWJIVE1M
Vmlldz4obV93ZWJWaWV3Lm1haW5GcmFtZS5mcmFtZVZpZXcuZG9jdW1lbnRWaWV3KTsKKyAgICBS
ZXRhaW5QdHI8V2ViSFRNTFZpZXc+IHRvcFdlYkhUTUxWaWV3ID0gZHluYW1pY19uc19jYXN0PFdl
YkhUTUxWaWV3PihtX3dlYlZpZXcubWFpbkZyYW1lLmZyYW1lVmlldy5kb2N1bWVudFZpZXcpOwog
ICAgIEFTU0VSVCh0b3BXZWJIVE1MVmlldyk7CiAKICAgICBbdG9wV2ViSFRNTFZpZXcgX3N0b3BB
dXRvc2Nyb2xsVGltZXJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0KaW5kZXggMjMwOTIyNjBmNmJjMTUwNzgzNGFlZDZkODUwY2NiZDJhYmRiYjQ4
Ny4uZmQ0OWIxNTFkMDAzNTljYmZjNjgxNTA3YjBmNDdhOWI3NGVjNGU4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0xNTIsNiArMTUy
LDcgQEAKICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvU3lzdGVtVHJhY2lu
Zy5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVHlw
ZUNhc3RzTlMuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiAjaWYgUExB
VEZPUk0oTUFDKQpAQCAtMTkxNiw3ICsxOTE3LDcgQEAgLSAodm9pZClfdXBkYXRlTW91c2VvdmVy
V2l0aEV2ZW50OihOU0V2ZW50ICopZXZlbnQKICAgICBOU1ZpZXcgKmhpdFZpZXcgPSBbY29udGVu
dFZpZXcgaGl0VGVzdDpsb2NhdGlvbkZvckhpdFRlc3RdOwogICAgIGZvcmNlV2ViSFRNTFZpZXdI
aXRUZXN0ID0gTk87CiAgICAgCi0gICAgYXV0byB2aWV3ID0gcmV0YWluUHRyKGR5bmFtaWNfb2Jq
Y19jYXN0PFdlYkhUTUxWaWV3PihoaXRWaWV3KSk7CisgICAgYXV0byB2aWV3ID0gcmV0YWluUHRy
KGR5bmFtaWNfbnNfY2FzdDxXZWJIVE1MVmlldz4oaGl0VmlldykpOwogICAgIGlmIChsYXN0SGl0
VmlldyAhPSB2aWV3ICYmIGxhc3RIaXRWaWV3ICYmIFtsYXN0SGl0VmlldyBfZnJhbWVdKSB7CiAg
ICAgICAgIC8vIElmIHdlIGFyZSBtb3Zpbmcgb3V0IG9mIGEgdmlldyAob3IgZnJhbWUpLCBsZXQn
cyBwcmV0ZW5kIHRoZSBtb3VzZSBtb3ZlZAogICAgICAgICAvLyBhbGwgdGhlIHdheSBvdXQgb2Yg
dGhhdCB2aWV3LiBCdXQgd2UgaGF2ZSB0byBhY2NvdW50IGZvciBzY3JvbGxpbmcsIGJlY2F1c2UK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlNGY4
Yjk3MDQxMDliMmM5NGYyYjE3ZjU5NDZjNDQ3YmI3NjZjZDI0Li41MmZjM2Q2YjQyMGRhNWZmOWU0
MzU1NjVmMmEyNWU2YmIxZjVmOTY1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDktMTkgIERhdmlkIEtpbHpl
ciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIGR5bmFtaWNfb2JqY19j
YXN0PD4gd2l0aCBkeW5hbWljX25zX2Nhc3Q8PgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3Jn
L2IvMjMwNDY3PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODMyODczMjE+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLV2ViVmlld0dldENvbnRlbnRzLm1tOgorICAgICAgICAoVEVTVCk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1t
OgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6OnNlbmRFdmVudFN0cmVhbSk6
CisKIDIwMjEtMDktMTkgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXVEY6OlJldGFpblB0cjw+IGFsbG93cyBhc3NpZ25tZW50IG9mIHR3byBwb2ludGVyIHR5
cGVzIHRoYXQgYXJlIG5vdCBhc3NpZ25hYmxlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0dldENvbnRlbnRzLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdHZXRDb250ZW50cy5tbQppbmRl
eCA5MmRjYjE5N2JiNmJmYTMwMTExNjgyOTI0M2IzNjg1YWIyNjZkYWI3Li4yY2VlODIwM2VkNTM5
NDIxMGQ0ZTY5ZTk5NzU2Nzg3MTU1NmVhZmRlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0dldENvbnRlbnRzLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3R2V0Q29udGVudHMubW0K
QEAgLTMwLDcgKzMwLDcgQEAKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKICNp
bXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KLSNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9UeXBlQ2FzdHNOUy5oPgog
CiBURVNUKFdLV2ViVmlldywgR2V0Q29udGVudHNTaG91bGRSZXR1cm5TdHJpbmcpCiB7CkBAIC04
NSwxNiArODUsMTYgQEAgVEVTVChXS1dlYlZpZXcsIEdldENvbnRlbnRzU2hvdWxkUmV0dXJuQXR0
cmlidXRlZFN0cmluZykKICAgICAgICAgICAgIGlmICghaSkgewogICAgICAgICAgICAgICAgIEVY
UEVDVF9XS19TVFJFUShAIkhlbGxvICIsIHN1YnN0cmluZy5zdHJpbmcpOwogI2lmIFVTRShBUFBL
SVQpCi0gICAgICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKEAiVGltZXMtUm9tYW4iLCBkeW5h
bWljX29iamNfY2FzdDxOU0ZvbnQ+KGF0dHJpYnV0ZXNbTlNGb250QXR0cmlidXRlTmFtZV0pLmZv
bnROYW1lKTsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJUaW1lcy1Sb21hbiIs
IGR5bmFtaWNfbnNfY2FzdDxOU0ZvbnQ+KGF0dHJpYnV0ZXNbTlNGb250QXR0cmlidXRlTmFtZV0p
LmZvbnROYW1lKTsKICNlbHNlCi0gICAgICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKEAiVGlt
ZXNOZXdSb21hblBTTVQiLCBkeW5hbWljX29iamNfY2FzdDxVSUZvbnQ+KGF0dHJpYnV0ZXNbTlNG
b250QXR0cmlidXRlTmFtZV0pLmZvbnROYW1lKTsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoQCJUaW1lc05ld1JvbWFuUFNNVCIsIGR5bmFtaWNfbnNfY2FzdDxVSUZvbnQ+KGF0dHJp
YnV0ZXNbTlNGb250QXR0cmlidXRlTmFtZV0pLmZvbnROYW1lKTsKICNlbmRpZgogICAgICAgICAg
ICAgfSBlbHNlIGlmIChpID09IDEpIHsKICAgICAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
QCJXb3JsZCEiLCBzdWJzdHJpbmcuc3RyaW5nKTsKICNpZiBVU0UoQVBQS0lUKQotICAgICAgICAg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShAIlRpbWVzLUJvbGQiLCBkeW5hbWljX29iamNfY2FzdDxO
U0ZvbnQ+KGF0dHJpYnV0ZXNbTlNGb250QXR0cmlidXRlTmFtZV0pLmZvbnROYW1lKTsKKyAgICAg
ICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJUaW1lcy1Cb2xkIiwgZHluYW1pY19uc19jYXN0
PE5TRm9udD4oYXR0cmlidXRlc1tOU0ZvbnRBdHRyaWJ1dGVOYW1lXSkuZm9udE5hbWUpOwogI2Vs
c2UKLSAgICAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJUaW1lc05ld1JvbWFuUFMtQm9s
ZE1UIiwgZHluYW1pY19vYmpjX2Nhc3Q8VUlGb250PihhdHRyaWJ1dGVzW05TRm9udEF0dHJpYnV0
ZU5hbWVdKS5mb250TmFtZSk7CisgICAgICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKEAiVGlt
ZXNOZXdSb21hblBTLUJvbGRNVCIsIGR5bmFtaWNfbnNfY2FzdDxVSUZvbnQ+KGF0dHJpYnV0ZXNb
TlNGb250QXR0cmlidXRlTmFtZV0pLmZvbnROYW1lKTsKICNlbmRpZgogICAgICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMDMsOSArMTAz
LDkgQEAgVEVTVChXS1dlYlZpZXcsIEdldENvbnRlbnRzU2hvdWxkUmV0dXJuQXR0cmlidXRlZFN0
cmluZykKICAgICAgICAgfV07CiAKICNpZiBVU0UoQVBQS0lUKQotICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoQCJzUkdCIElFQzYxOTY2LTIuMSBjb2xvcnNwYWNlIDEgMCAwIDEiLCBkeW5hbWljX29i
amNfY2FzdDxOU0NvbG9yPihkb2N1bWVudEF0dHJpYnV0ZXNbTlNCYWNrZ3JvdW5kQ29sb3JEb2N1
bWVudEF0dHJpYnV0ZV0pLmRlc2NyaXB0aW9uKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKEAi
c1JHQiBJRUM2MTk2Ni0yLjEgY29sb3JzcGFjZSAxIDAgMCAxIiwgZHluYW1pY19uc19jYXN0PE5T
Q29sb3I+KGRvY3VtZW50QXR0cmlidXRlc1tOU0JhY2tncm91bmRDb2xvckRvY3VtZW50QXR0cmli
dXRlXSkuZGVzY3JpcHRpb24pOwogI2Vsc2UKLSAgICAgICAgRVhQRUNUX1dLX1NUUkVRKEAia0NH
Q29sb3JTcGFjZU1vZGVsUkdCIDEgMCAwIDEgIiwgZHluYW1pY19vYmpjX2Nhc3Q8VUlDb2xvcj4o
ZG9jdW1lbnRBdHRyaWJ1dGVzW05TQmFja2dyb3VuZENvbG9yRG9jdW1lbnRBdHRyaWJ1dGVdKS5k
ZXNjcmlwdGlvbik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShAImtDR0NvbG9yU3BhY2VNb2Rl
bFJHQiAxIDAgMCAxICIsIGR5bmFtaWNfbnNfY2FzdDxVSUNvbG9yPihkb2N1bWVudEF0dHJpYnV0
ZXNbTlNCYWNrZ3JvdW5kQ29sb3JEb2N1bWVudEF0dHJpYnV0ZV0pLmRlc2NyaXB0aW9uKTsKICNl
bmRpZgogCiAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKQEAgLTEzNSw5ICsxMzUsOSBAQCBURVNU
KFdLV2ViVmlldywgR2V0Q29udGVudHNXaXRoT3B0aWNhbGx5U2l6ZWRGb250U2hvdWxkUmV0dXJu
QXR0cmlidXRlZFN0cmluZykKICAgICAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJIZWxs
byIsIHN1YnN0cmluZy5zdHJpbmcpOwogCiAjaWYgVVNFKEFQUEtJVCkKLSAgICAgICAgICAgICAg
ICBFWFBFQ1RfRVEoW2R5bmFtaWNfb2JqY19jYXN0PE5TRm9udD4oYXR0cmlidXRlc1tOU0ZvbnRB
dHRyaWJ1dGVOYW1lXSkgcG9pbnRTaXplXSwgMTYpOworICAgICAgICAgICAgICAgIEVYUEVDVF9F
UShbZHluYW1pY19uc19jYXN0PE5TRm9udD4oYXR0cmlidXRlc1tOU0ZvbnRBdHRyaWJ1dGVOYW1l
XSkgcG9pbnRTaXplXSwgMTYpOwogI2Vsc2UKLSAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoW2R5
bmFtaWNfb2JqY19jYXN0PFVJRm9udD4oYXR0cmlidXRlc1tOU0ZvbnRBdHRyaWJ1dGVOYW1lXSkg
cG9pbnRTaXplXSwgMTYpOworICAgICAgICAgICAgICAgIEVYUEVDVF9FUShbZHluYW1pY19uc19j
YXN0PFVJRm9udD4oYXR0cmlidXRlc1tOU0ZvbnRBdHRyaWJ1dGVOYW1lXSkgcG9pbnRTaXplXSwg
MTYpOwogI2VuZGlmCiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJ
U2NyaXB0Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2Ny
aXB0Q29udHJvbGxlcklPUy5tbQppbmRleCA5NWMzODNkNTcyYTgxMDVmZTY5ZGMwMWJhYTU4YzJk
OWVhMTM2NTU5Li5hNDI3YTUyZTY4MjFiNDhlYjYwOTVlNWI0NTk3YzQzMjU3ODdmN2E0IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1Mu
bW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9T
Lm1tCkBAIC00OSw2ICs0OSw3IEBACiAjaW1wb3J0IDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2lt
cG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0
IDx3dGYvY29jb2EvVHlwZUNhc3RzTlMuaD4KIAogU09GVF9MSU5LX0ZSQU1FV09SSyhVSUtpdCkK
IFNPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlQaHlzaWNhbEtleWJvYXJkRXZlbnQpCkBAIC00MTks
NyArNDIwLDcgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OnNlbmRFdmVudFN0cmVhbShK
U1N0cmluZ1JlZiBldmVudHNKU09OLCBKU1ZhbHVlUmVmIGMKICAgICB1bnNpZ25lZCBjYWxsYmFj
a0lEID0gbV9jb250ZXh0LT5wcmVwYXJlRm9yQXN5bmNUYXNrKGNhbGxiYWNrLCBDYWxsYmFja1R5
cGVOb25QZXJzaXN0ZW50KTsKIAogICAgIFN0cmluZyBqc29uU3RyaW5nID0gZXZlbnRzSlNPTi0+
c3RyaW5nKCk7Ci0gICAgYXV0byBldmVudEluZm8gPSBkeW5hbWljX29iamNfY2FzdDxOU0RpY3Rp
b25hcnk+KFtOU0pTT05TZXJpYWxpemF0aW9uIEpTT05PYmplY3RXaXRoRGF0YTpbKE5TU3RyaW5n
ICopanNvblN0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gb3B0
aW9uczpOU0pTT05SZWFkaW5nTXV0YWJsZUNvbnRhaW5lcnMgfCBOU0pTT05SZWFkaW5nTXV0YWJs
ZUxlYXZlcyBlcnJvcjpuaWxdKTsKKyAgICBhdXRvIGV2ZW50SW5mbyA9IGR5bmFtaWNfbnNfY2Fz
dDxOU0RpY3Rpb25hcnk+KFtOU0pTT05TZXJpYWxpemF0aW9uIEpTT05PYmplY3RXaXRoRGF0YTpb
KE5TU3RyaW5nICopanNvblN0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZ10gb3B0aW9uczpOU0pTT05SZWFkaW5nTXV0YWJsZUNvbnRhaW5lcnMgfCBOU0pTT05SZWFk
aW5nTXV0YWJsZUxlYXZlcyBlcnJvcjpuaWxdKTsKIAogICAgIGF1dG8gKndlYlZpZXcgPSB0aGlz
LT53ZWJWaWV3KCk7CiAgICAgCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>