<?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>211239</bug_id>
          
          <creation_ts>2020-04-30 10:05:58 -0700</creation_ts>
          <short_desc>[GStreamer] Move video frame holder to its own file</short_desc>
          <delta_ts>2020-05-01 01:17:17 -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>Platform</component>
          <version>WebKit Local 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="Philippe Normand">pnormand</reporter>
          <assigned_to name="Philippe Normand">pnormand</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1647403</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-04-30 10:05:58 -0700</bug_when>
    <thetext>Refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647406</commentid>
    <comment_count>1</comment_count>
      <attachid>398060</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-04-30 10:10:27 -0700</bug_when>
    <thetext>Created attachment 398060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647775</commentid>
    <comment_count>2</comment_count>
      <attachid>398060</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-04-30 23:22:43 -0700</bug_when>
    <thetext>Comment on attachment 398060
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerVideoFrameHolder.cpp:8
&gt; + * Copyright (C) 2007, 2009 Apple Inc.  All rights reserved.
&gt; + * Copyright (C) 2007 Collabora Ltd.  All rights reserved.
&gt; + * Copyright (C) 2007 Alp Toker &lt;alp@atoker.com&gt;
&gt; + * Copyright (C) 2009 Gustavo Noronha Silva &lt;gns@gnome.org&gt;
&gt; + * Copyright (C) 2014 Cable Television Laboratories, Inc.
&gt; + * Copyright (C) 2009, 2019, 2020 Igalia S.L
&gt; + * Copyright (C) 2015, 2019 Metrological Group B.V.

This should be 2019 Igalia and Metro. The other holders don&apos;t belong here.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerVideoFrameHolder.cpp:104
&gt; +            // Right now the TextureMapper only supports chromas with one plane

.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647786</commentid>
    <comment_count>3</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-05-01 01:16:11 -0700</bug_when>
    <thetext>Committed r260987: &lt;https://trac.webkit.org/changeset/260987&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647787</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-01 01:17:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/62711074&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398060</attachid>
            <date>2020-04-30 10:10:27 -0700</date>
            <delta_ts>2020-04-30 23:22:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211239-20200430181025.patch</filename>
            <type>text/plain</type>
            <size>27056</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwOTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmE0MzhhNjIzZTFlNTNh
NmFjMGI5NGY5MzIxMGM3Y2VhZmQxZjRiMS4uNGMyOGY5NWViNDA1OTg2YTRhZDVjNDJlMTkyMDQ4
NzVjYWFiZTJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIwLTA0LTMwICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XSBNb3ZlIHZpZGVvIGZyYW1lIGhvbGRlciB0byBpdHMgb3duIGZpbGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTIzOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2xhc3MgaW1wbGVtZW50YXRp
b24gaXMgYmlnIGVub3VnaCBmb3IgYSBuZXcgY29tcGlsYXRpb24gdW5pdCwgSU1ITy4KKyAgICAg
ICAgCisgICAgICAgICogcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0ZyYW1lSG9sZGVyLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHc3RWaWRlb0ZyYW1lSG9sZGVyOjpHc3RWaWRlb0ZyYW1l
SG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdzdFZpZGVvRnJhbWVIb2xkZXI6On5Hc3RWaWRl
b0ZyYW1lSG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdzdFZpZGVvRnJhbWVIb2xkZXI6Omhh
bmRvZmZWaWRlb0RtYUJ1Zik6CisgICAgICAgIChXZWJDb3JlOjpHc3RWaWRlb0ZyYW1lSG9sZGVy
Ojp3YWl0Rm9yQ1BVU3luYyk6CisgICAgICAgIChXZWJDb3JlOjpHc3RWaWRlb0ZyYW1lSG9sZGVy
Ojp1cGRhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdzdFZpZGVvRnJhbWVIb2xkZXI6
OnBsYXRmb3JtTGF5ZXJCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJWaWRlb0ZyYW1lSG9sZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R3N0VmlkZW9GcmFtZUhvbGRlcjo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
c3RWaWRlb0ZyYW1lSG9sZGVyOjpoYXNBbHBoYUNoYW5uZWwgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3N0VmlkZW9GcmFtZUhvbGRlcjo6ZmxhZ3MgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3N0VmlkZW9GcmFtZUhvbGRlcjo6dGV4dHVyZUlEIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkdzdFZpZGVvRnJhbWVIb2xkZXI6Omhhc01hcHBlZFRleHR1cmVzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdzdFZpZGVvRnJhbWVIb2xkZXI6OnZpZGVvRnJhbWUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R3N0VmlkZW9GcmFtZUhvbGRlcjo6aGFzRE1BQnVmIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdFZpZGVvRnJhbWVIb2xkZXI6OkdzdFZp
ZGVvRnJhbWVIb2xkZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3N0VmlkZW9GcmFt
ZUhvbGRlcjo6fkdzdFZpZGVvRnJhbWVIb2xkZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R3N0VmlkZW9GcmFtZUhvbGRlcjo6aGFuZG9mZlZpZGVvRG1hQnVmKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdzdFZpZGVvRnJhbWVIb2xkZXI6OndhaXRGb3JDUFVTeW5jKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdzdFZpZGVvRnJhbWVIb2xkZXI6OnNpemUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3N0VmlkZW9GcmFtZUhvbGRlcjo6aGFzQWxw
aGFDaGFubmVsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdzdFZpZGVvRnJh
bWVIb2xkZXI6OmZsYWdzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdzdFZp
ZGVvRnJhbWVIb2xkZXI6OnRleHR1cmVJRCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpHc3RWaWRlb0ZyYW1lSG9sZGVyOjpoYXNNYXBwZWRUZXh0dXJlcyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHc3RWaWRlb0ZyYW1lSG9sZGVyOjp2aWRlb0ZyYW1lIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdzdFZpZGVvRnJhbWVIb2xkZXI6OnVw
ZGF0ZVRleHR1cmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3N0VmlkZW9GcmFtZUhv
bGRlcjo6cGxhdGZvcm1MYXllckJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
c3RWaWRlb0ZyYW1lSG9sZGVyOjpoYXNETUFCdWYgY29uc3QpOiBEZWxldGVkLgorCiAyMDIwLTA0
LTMwICBDaGFybGllIFR1cm5lciAgPGN0dXJuZXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbY2xh
bmcgMTFdIGZpeCBidWlsZCBlcnJvcnMgZHVlIHRvIC1XV2MrKzExLW5hcnJvd2luZwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlCmluZGV4IDc5YzlkMjgxZjAyZDNjZTc2NTFl
NWQzYWE3NjRiYTliZmRhOTNmNjguLjgzNDdiYmM2YTkwMGFlMmVjMmNlNTkzMTNiOThmZDFhMTdh
YjM1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKQEAgLTEyLDYg
KzEyLDcgQEAgaWYgKEVOQUJMRV9WSURFTyBPUiBFTkFCTEVfV0VCX0FVRElPKQogICAgICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAogICAgICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR3N0QWxsb2NhdG9yRmFzdE1hbGxvYy5jcHAKICAg
ICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
ci5jcHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVv
RnJhbWVIb2xkZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUdTdHJlYW1lci5jcHAK
ICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0ZyYW1lSG9sZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0ZyYW1lSG9sZGVyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yNzg4MzgyZDY1NjE5NDA5NDQ2ZjNjN2U4ZjQ4MTZhMWJiZDY5NTFlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lclZpZGVvRnJhbWVIb2xkZXIuY3BwCkBAIC0wLDAgKzEsMjM0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQ29sbGFib3JhIEx0ZC4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4K
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5v
cmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQ2FibGUgVGVsZXZpc2lvbiBMYWJvcmF0b3JpZXMs
IEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxOSwgMjAyMCBJZ2FsaWEgUy5MCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUsIDIwMTkgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFpbnQgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIFVTRShU
RVhUVVJFX01BUFBFUl9HTCkKKyNpbmNsdWRlICJHU3RyZWFtZXJWaWRlb0ZyYW1lSG9sZGVyLmgi
CisKKyNpbmNsdWRlICJCaXRtYXBUZXh0dXJlR0wuaCIKKyNpbmNsdWRlICJCaXRtYXBUZXh0dXJl
UG9vbC5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5oIgorI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dzdFZp
ZGVvRnJhbWVIb2xkZXI6OkdzdFZpZGVvRnJhbWVIb2xkZXIoR3N0U2FtcGxlKiBzYW1wbGUsIE9w
dGlvbmFsPEdzdFZpZGVvRGVjb2RlclBsYXRmb3JtPiB2aWRlb0RlY29kZXJQbGF0Zm9ybSwgVGV4
dHVyZU1hcHBlckdMOjpGbGFncyBmbGFncywgYm9vbCBnc3RHTEVuYWJsZWQpCisgICAgOiBtX3Zp
ZGVvRGVjb2RlclBsYXRmb3JtKHZpZGVvRGVjb2RlclBsYXRmb3JtKQoreworICAgIFJFTEVBU0Vf
QVNTRVJUKEdTVF9JU19TQU1QTEUoc2FtcGxlKSk7CisKKyAgICBHc3RWaWRlb0luZm8gdmlkZW9J
bmZvOworICAgIGlmIChVTkxJS0VMWSghZ2V0U2FtcGxlVmlkZW9JbmZvKHNhbXBsZSwgdmlkZW9J
bmZvKSkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2l6ZSA9IEludFNpemUoR1NUX1ZJREVP
X0lORk9fV0lEVEgoJnZpZGVvSW5mbyksIEdTVF9WSURFT19JTkZPX0hFSUdIVCgmdmlkZW9JbmZv
KSk7CisgICAgbV9oYXNBbHBoYUNoYW5uZWwgPSBHU1RfVklERU9fSU5GT19IQVNfQUxQSEEoJnZp
ZGVvSW5mbyk7CisgICAgbV9idWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9idWZmZXIoc2FtcGxlKTsK
KyAgICBpZiAoVU5MSUtFTFkoIUdTVF9JU19CVUZGRVIobV9idWZmZXIuZ2V0KCkpKSkKKyAgICAg
ICAgcmV0dXJuOworCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAgICBtX2ZsYWdzID0gZmxhZ3Mg
fCAobV9oYXNBbHBoYUNoYW5uZWwgPyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kIDogMCk7
CisKKyAgICBHc3RNZW1vcnkqIG1lbW9yeSA9IGdzdF9idWZmZXJfcGVla19tZW1vcnkobV9idWZm
ZXIuZ2V0KCksIDApOworICAgIGlmIChnc3RfaXNfZ2xfbWVtb3J5KG1lbW9yeSkpCisgICAgICAg
IG1fdGV4dHVyZVRhcmdldCA9IGdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfdGFyZ2V0KEdTVF9H
TF9NRU1PUllfQ0FTVChtZW1vcnkpKTsKKworI2lmIFVTRShXUEVfVklERU9fUExBTkVfRElTUExB
WV9ETUFCVUYpCisgICAgbV9kbWFidWZGRCA9IC0xOworICAgIGdzaXplIG9mZnNldDsKKyAgICBp
ZiAoZ3N0X2lzX2dsX21lbW9yeV9lZ2wobWVtb3J5KSkgeworICAgICAgICBHc3RHTE1lbW9yeUVH
TCogZWdsTWVtb3J5ID0gKEdzdEdMTWVtb3J5RUdMKikgbWVtb3J5OworICAgICAgICBnc3RfZWds
X2ltYWdlX2V4cG9ydF9kbWFidWYoZWdsTWVtb3J5LT5pbWFnZSwgJm1fZG1hYnVmRkQsICZtX2Rt
YWJ1ZlN0cmlkZSwgJm9mZnNldCk7CisgICAgfSBlbHNlIGlmIChnc3RfaXNfZ2xfbWVtb3J5KG1l
bW9yeSkpIHsKKyAgICAgICAgR1JlZlB0cjxHc3RFR0xJbWFnZT4gZWdsSW1hZ2UgPSBhZG9wdEdS
ZWYoZ3N0X2VnbF9pbWFnZV9mcm9tX3RleHR1cmUoR1NUX0dMX0JBU0VfTUVNT1JZX0NBU1QobWVt
b3J5KS0+Y29udGV4dCwgR1NUX0dMX01FTU9SWV9DQVNUKG1lbW9yeSksIG51bGxwdHIpKTsKKwor
ICAgICAgICBpZiAoZWdsSW1hZ2UpCisgICAgICAgICAgICBnc3RfZWdsX2ltYWdlX2V4cG9ydF9k
bWFidWYoZWdsSW1hZ2UuZ2V0KCksICZtX2RtYWJ1ZkZELCAmbV9kbWFidWZTdHJpZGUsICZvZmZz
ZXQpOworICAgIH0KKworICAgIGlmIChoYXNETUFCdWYoKSAmJiBtX2RtYWJ1ZlN0cmlkZSA9PSAt
MSkgeworICAgICAgICBtX2lzTWFwcGVkID0gZ3N0X3ZpZGVvX2ZyYW1lX21hcCgmbV92aWRlb0Zy
YW1lLCAmdmlkZW9JbmZvLCBtX2J1ZmZlci5nZXQoKSwgR1NUX01BUF9SRUFEKTsKKyAgICAgICAg
aWYgKG1faXNNYXBwZWQpCisgICAgICAgICAgICBtX2RtYWJ1ZlN0cmlkZSA9IEdTVF9WSURFT19J
TkZPX1BMQU5FX1NUUklERSgmbV92aWRlb0ZyYW1lLmluZm8sIDApOworICAgIH0KKworICAgIGlm
IChoYXNETUFCdWYoKSAmJiBtX2RtYWJ1ZlN0cmlkZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIHNfb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uoc19v
bmNlRmxhZywgW10geworICAgICAgICBHU1RfV0FSTklORygiVGV4dHVyZSBleHBvcnQgdG8gRE1B
QnVmIGZhaWxlZCwgZmFsbGluZyBiYWNrIHRvIGludGVybmFsIHJlbmRlcmluZyIpOworICAgIH0p
OworI2VuZGlmIC8vIFVTRShXUEVfVklERU9fUExBTkVfRElTUExBWV9ETUFCVUYpCisKKyAgICBp
ZiAoZ3N0R0xFbmFibGVkKSB7CisgICAgICAgIG1faXNNYXBwZWQgPSBnc3RfdmlkZW9fZnJhbWVf
bWFwKCZtX3ZpZGVvRnJhbWUsICZ2aWRlb0luZm8sIG1fYnVmZmVyLmdldCgpLCBzdGF0aWNfY2Fz
dDxHc3RNYXBGbGFncz4oR1NUX01BUF9SRUFEIHwgR1NUX01BUF9HTCkpOworICAgICAgICBpZiAo
bV9pc01hcHBlZCkgeworICAgICAgICAgICAgbV90ZXh0dXJlSUQgPSAqcmVpbnRlcnByZXRfY2Fz
dDxHTHVpbnQqPihtX3ZpZGVvRnJhbWUuZGF0YVswXSk7CisgICAgICAgICAgICBtX2hhc01hcHBl
ZFRleHR1cmVzID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0gZWxzZQorI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0oZmxhZ3MpOworICAgIFVOVVNFRF9QQVJBTShnc3RHTEVuYWJsZWQpOworI2VuZGlm
IC8vIFVTRShHU1RSRUFNRVJfR0wpCisKKyAgICB7CisgICAgICAgIG1fdGV4dHVyZUlEID0gMDsK
KyAgICAgICAgbV9pc01hcHBlZCA9IGdzdF92aWRlb19mcmFtZV9tYXAoJm1fdmlkZW9GcmFtZSwg
JnZpZGVvSW5mbywgbV9idWZmZXIuZ2V0KCksIEdTVF9NQVBfUkVBRCk7CisgICAgICAgIGlmICht
X2lzTWFwcGVkKSB7CisgICAgICAgICAgICAvLyBSaWdodCBub3cgdGhlIFRleHR1cmVNYXBwZXIg
b25seSBzdXBwb3J0cyBjaHJvbWFzIHdpdGggb25lIHBsYW5lCisgICAgICAgICAgICBBU1NFUlQo
R1NUX1ZJREVPX0lORk9fTl9QTEFORVMoJnZpZGVvSW5mbykgPT0gMSk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK0dzdFZpZGVvRnJhbWVIb2xkZXI6On5Hc3RWaWRlb0ZyYW1lSG9sZGVyKCkKK3sK
KyAgICBpZiAoVU5MSUtFTFkoIW1faXNNYXBwZWQpKQorICAgICAgICByZXR1cm47CisKKyAgICBn
c3RfdmlkZW9fZnJhbWVfdW5tYXAoJm1fdmlkZW9GcmFtZSk7Cit9CisKKyNpZiBVU0UoV1BFX1ZJ
REVPX1BMQU5FX0RJU1BMQVlfRE1BQlVGKQordm9pZCBHc3RWaWRlb0ZyYW1lSG9sZGVyOjpoYW5k
b2ZmVmlkZW9EbWFCdWYoc3RydWN0IHdwZV92aWRlb19wbGFuZV9kaXNwbGF5X2RtYWJ1Zl9zb3Vy
Y2UqIHZpZGVvUGxhbmVEaXNwbGF5RG1hQnVmU291cmNlLCBjb25zdCBJbnRSZWN0JiByZWN0KQor
eworICAgIGlmIChtX2RtYWJ1ZkZEIDw9IDApCisgICAgICAgIHJldHVybjsKKworICAgIHdwZV92
aWRlb19wbGFuZV9kaXNwbGF5X2RtYWJ1Zl9zb3VyY2VfdXBkYXRlKHZpZGVvUGxhbmVEaXNwbGF5
RG1hQnVmU291cmNlLCBtX2RtYWJ1ZkZELCByZWN0LngoKSwgcmVjdC55KCksIG1fc2l6ZS53aWR0
aCgpLCBtX3NpemUuaGVpZ2h0KCksIG1fZG1hYnVmU3RyaWRlLCBbXSh2b2lkKiBkYXRhKSB7Cisg
ICAgICAgIGdzdF9idWZmZXJfdW5yZWYoR1NUX0JVRkZFUl9DQVNUKGRhdGEpKTsKKyAgICB9LCBn
c3RfYnVmZmVyX3JlZihtX2J1ZmZlci5nZXQoKSkpOworCisgICAgY2xvc2UobV9kbWFidWZGRCk7
CisgICAgbV9kbWFidWZGRCA9IDA7Cit9CisjZW5kaWYKKworI2lmIFVTRShHU1RSRUFNRVJfR0wp
Cit2b2lkIEdzdFZpZGVvRnJhbWVIb2xkZXI6OndhaXRGb3JDUFVTeW5jKCkKK3sKKyAgICAvLyBO
byBuZWVkIGZvciBPcGVuR0wgc3luY2hyb25pemF0aW9uIHdoZW4gdXNpbmcgdGhlIE9wZW5NQVgg
ZGVjb2Rlci4KKyAgICBpZiAobV92aWRlb0RlY29kZXJQbGF0Zm9ybSA9PSBHc3RWaWRlb0RlY29k
ZXJQbGF0Zm9ybTo6T3Blbk1BWCkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3N0R0xTeW5jTWV0
YSogbWV0YSA9IGdzdF9idWZmZXJfZ2V0X2dsX3N5bmNfbWV0YShtX2J1ZmZlci5nZXQoKSk7Cisg
ICAgaWYgKG1ldGEpIHsKKyAgICAgICAgR3N0TWVtb3J5KiBtZW0gPSBnc3RfYnVmZmVyX3BlZWtf
bWVtb3J5KG1fYnVmZmVyLmdldCgpLCAwKTsKKyAgICAgICAgR3N0R0xDb250ZXh0KiBjb250ZXh0
ID0gKChHc3RHTEJhc2VNZW1vcnkqKW1lbSktPmNvbnRleHQ7CisgICAgICAgIGdzdF9nbF9zeW5j
X21ldGFfd2FpdF9jcHUobWV0YSwgY29udGV4dCk7CisgICAgfQorfQorI2VuZGlmIC8vIFVTRShH
U1RSRUFNRVJfR0wpCisKK3ZvaWQgR3N0VmlkZW9GcmFtZUhvbGRlcjo6dXBkYXRlVGV4dHVyZShC
aXRtYXBUZXh0dXJlR0wmIHRleHR1cmUpCit7CisgICAgQVNTRVJUKCFtX3RleHR1cmVJRCk7Cisg
ICAgR3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhKiBtZXRhOworICAgIGlmIChtX2J1ZmZlciAm
JiAobWV0YSA9IGdzdF9idWZmZXJfZ2V0X3ZpZGVvX2dsX3RleHR1cmVfdXBsb2FkX21ldGEobV9i
dWZmZXIuZ2V0KCkpKSkgeworICAgICAgICBpZiAobWV0YS0+bl90ZXh0dXJlcyA9PSAxKSB7IC8v
IEJSR3ggJiBCR1JBIGZvcm1hdHMgdXNlIG9ubHkgb25lIHRleHR1cmUuCisgICAgICAgICAgICBn
dWludCBpZHNbNF0gPSB7IHRleHR1cmUuaWQoKSwgMCwgMCwgMCB9OworCisgICAgICAgICAgICBp
ZiAoZ3N0X3ZpZGVvX2dsX3RleHR1cmVfdXBsb2FkX21ldGFfdXBsb2FkKG1ldGEsIGlkcykpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFtX2lz
TWFwcGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpbnQgc3RyaWRlID0gR1NUX1ZJREVPX0ZS
QU1FX1BMQU5FX1NUUklERSgmbV92aWRlb0ZyYW1lLCAwKTsKKyAgICBjb25zdCB2b2lkKiBzcmNE
YXRhID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX0RBVEEoJm1fdmlkZW9GcmFtZSwgMCk7CisKKyAg
ICBpZiAoIXNyY0RhdGEpCisgICAgICAgIHJldHVybjsKKworICAgIHRleHR1cmUudXBkYXRlQ29u
dGVudHMoc3JjRGF0YSwgV2ViQ29yZTo6SW50UmVjdCgwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9z
aXplLmhlaWdodCgpKSwgV2ViQ29yZTo6SW50UG9pbnQoMCwgMCksIHN0cmlkZSk7Cit9CisKK3N0
ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gR3N0VmlkZW9G
cmFtZUhvbGRlcjo6cGxhdGZvcm1MYXllckJ1ZmZlcigpCit7CisgICAgaWYgKCFtX2hhc01hcHBl
ZFRleHR1cmVzKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHVzaW5nIEJ1ZmZlciA9
IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOworCisjaWYgVVNFKEdTVFJFQU1FUl9H
TCkKKyAgICBpZiAobV90ZXh0dXJlVGFyZ2V0ID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRF
Uk5BTF9PRVMpCisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJ1ZmZlcj4oQnVmZmVyOjpUZXh0
dXJlVmFyaWFudCB7IEJ1ZmZlcjo6RXh0ZXJuYWxPRVNUZXh0dXJlIHsgbV90ZXh0dXJlSUQgfSB9
LCBtX3NpemUsIG1fZmxhZ3MsIEdMX0RPTlRfQ0FSRSk7CisjZW5kaWYKKworICAgIGlmICgoR1NU
X1ZJREVPX0lORk9fSVNfUkdCKCZtX3ZpZGVvRnJhbWUuaW5mbykgJiYgR1NUX1ZJREVPX0lORk9f
Tl9QTEFORVMoJm1fdmlkZW9GcmFtZS5pbmZvKSA9PSAxKSkKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8QnVmZmVyPihCdWZmZXI6OlRleHR1cmVWYXJpYW50IHsgQnVmZmVyOjpSR0JUZXh0dXJl
IHsgbV90ZXh0dXJlSUQgfSB9LCBtX3NpemUsIG1fZmxhZ3MsIEdMX1JHQkEpOworCisgICAgaWYg
KEdTVF9WSURFT19JTkZPX0lTX1lVVigmbV92aWRlb0ZyYW1lLmluZm8pKSB7CisgICAgICAgIGlm
IChHU1RfVklERU9fSU5GT19OX0NPTVBPTkVOVFMoJm1fdmlkZW9GcmFtZS5pbmZvKSA8IDMgfHwg
R1NUX1ZJREVPX0lORk9fTl9QTEFORVMoJm1fdmlkZW9GcmFtZS5pbmZvKSA+IDMpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBpZiAobV92aWRlb0RlY29kZXJQbGF0Zm9y
bSAmJiAqbV92aWRlb0RlY29kZXJQbGF0Zm9ybSA9PSBHc3RWaWRlb0RlY29kZXJQbGF0Zm9ybTo6
SW14VlBVKSB7CisgICAgICAgICAgICAvLyBJTVggVlBVIGRlY29kZXIgZGVjb2RlcyBZVVYgZGF0
YSBvbmx5IGludG8gdGhlIFkgdGV4dHVyZSBmcm9tIHdoaWNoIHRoZSBzYW1wbGVyCisgICAgICAg
ICAgICAvLyB0aGVuIGRpcmVjdGx5IHByb2R1Y2VzIFJHQkEgZGF0YS4gVGV4dHVyZXMgZm9yIG90
aGVyIHBsYW5lcyBhcmVuJ3QgdXNlZCwgYnV0CisgICAgICAgICAgICAvLyB0aGF0J3MgZGVjb2Rl
cidzIHByb2JsZW0uIFdlIGhhdmUgdG8gdHJlYXQgdGhhdCBZIHRleHR1cmUgYXMgaGF2aW5nIFJH
QkEgZGF0YS4KKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJ1ZmZlcj4oQnVmZmVyOjpU
ZXh0dXJlVmFyaWFudCB7IEJ1ZmZlcjo6UkdCVGV4dHVyZSB7IG1fdGV4dHVyZUlEIH0gfSwgbV9z
aXplLCBtX2ZsYWdzLCBHTF9SR0JBKTsKKyAgICAgICAgfQorCisgICAgICAgIHVuc2lnbmVkIG51
bWJlck9mUGxhbmVzID0gR1NUX1ZJREVPX0lORk9fTl9QTEFORVMoJm1fdmlkZW9GcmFtZS5pbmZv
KTsKKyAgICAgICAgc3RkOjphcnJheTxHTHVpbnQsIDM+IHBsYW5lczsKKyAgICAgICAgc3RkOjph
cnJheTx1bnNpZ25lZCwgMz4geXV2UGxhbmU7CisgICAgICAgIHN0ZDo6YXJyYXk8dW5zaWduZWQs
IDM+IHl1dlBsYW5lT2Zmc2V0OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
YmVyT2ZQbGFuZXM7ICsraSkKKyAgICAgICAgICAgIHBsYW5lc1tpXSA9ICpzdGF0aWNfY2FzdDxH
THVpbnQqPihtX3ZpZGVvRnJhbWUuZGF0YVtpXSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCAzOyArK2kpIHsKKyAgICAgICAgICAgIHl1dlBsYW5lW2ldID0gR1NUX1ZJREVPX0lO
Rk9fQ09NUF9QTEFORSgmbV92aWRlb0ZyYW1lLmluZm8sIGkpOworICAgICAgICAgICAgeXV2UGxh
bmVPZmZzZXRbaV0gPSBHU1RfVklERU9fSU5GT19DT01QX1BPRkZTRVQoJm1fdmlkZW9GcmFtZS5p
bmZvLCBpKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0ZDo6YXJyYXk8R0xmbG9hdCwgOT4geXV2
VG9SZ2I7CisgICAgICAgIGlmIChnc3RfdmlkZW9fY29sb3JpbWV0cnlfbWF0Y2hlcygmR1NUX1ZJ
REVPX0lORk9fQ09MT1JJTUVUUlkoJm1fdmlkZW9GcmFtZS5pbmZvKSwgR1NUX1ZJREVPX0NPTE9S
SU1FVFJZX0JUNzA5KSkgeworICAgICAgICAgICAgeXV2VG9SZ2IgPSB7CisgICAgICAgICAgICAg
ICAgMS4xNjRmLCAgMC4wZiwgICAgMS43ODdmLAorICAgICAgICAgICAgICAgIDEuMTY0ZiwgLTAu
MjEzZiwgLTAuNTMxZiwKKyAgICAgICAgICAgICAgICAxLjE2NGYsICAyLjExMmYsICAwLjBmCisg
ICAgICAgICAgICB9OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gRGVmYXVsdCB0
byBidDYwMS4gVGhpcyBpcyB0aGUgc2FtZSBiZWhhdmlvdXIgYXMgR1N0cmVhbWVyJ3MgZ2xjb2xv
cmNvbnZlcnQgZWxlbWVudC4KKyAgICAgICAgICAgIHl1dlRvUmdiID0geworICAgICAgICAgICAg
ICAgIDEuMTY0ZiwgIDAuMGYsICAgIDEuNTk2ZiwKKyAgICAgICAgICAgICAgICAxLjE2NGYsIC0w
LjM5MWYsIC0wLjgxM2YsCisgICAgICAgICAgICAgICAgMS4xNjRmLCAgMi4wMThmLCAgMC4wZgor
ICAgICAgICAgICAgfTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJ1
ZmZlcj4oIEJ1ZmZlcjo6VGV4dHVyZVZhcmlhbnQgeyBCdWZmZXI6OllVVlRleHR1cmUgeyBudW1i
ZXJPZlBsYW5lcywgcGxhbmVzLCB5dXZQbGFuZSwgeXV2UGxhbmVPZmZzZXQsIHl1dlRvUmdiIH0g
fSwgbV9zaXplLCBtX2ZsYWdzLCBHTF9SR0JBKTsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9GcmFtZUhvbGRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvRnJhbWVIb2xk
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zNDk4YWY4MTlhY2YyNzBjZTk3MmE2YjdhZmJlMTExOTc1ZjY4YmI2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lclZpZGVvRnJhbWVIb2xkZXIuaApAQCAtMCwwICsxLDg3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQ29sbGFib3JhIEx0ZC4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4K
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5v
cmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQ2FibGUgVGVsZXZpc2lvbiBMYWJvcmF0b3JpZXMs
IEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxOSwgMjAyMCBJZ2FsaWEgUy5MCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUsIDIwMTkgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFpbnQgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKFRFWFRVUkVf
TUFQUEVSX0dMKQorCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgiCisj
aW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaCIKKyNpbmNsdWRlICJU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgR3N0VmlkZW9GcmFtZUhvbGRlciA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlcjo6VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlciB7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgR3N0VmlkZW9GcmFtZUhvbGRlcihHc3RTYW1wbGUqLCBPcHRpb25hbDxHc3RWaWRl
b0RlY29kZXJQbGF0Zm9ybT4sIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MsIGJvb2wgZ3N0R0xFbmFi
bGVkKTsKKyAgICB2aXJ0dWFsIH5Hc3RWaWRlb0ZyYW1lSG9sZGVyKCk7CisKKyNpZiBVU0UoV1BF
X1ZJREVPX1BMQU5FX0RJU1BMQVlfRE1BQlVGKQorICAgIHZvaWQgaGFuZG9mZlZpZGVvRG1hQnVm
KHN0cnVjdCB3cGVfdmlkZW9fcGxhbmVfZGlzcGxheV9kbWFidWZfc291cmNlKiwgY29uc3QgSW50
UmVjdCYpOworI2VuZGlmCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAgICB2aXJ0dWFsIHZvaWQg
d2FpdEZvckNQVVN5bmMoKTsKKyNlbmRpZgorCisgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGJvb2wgaGFzQWxwaGFDaGFubmVsKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNBbHBoYUNoYW5uZWw7IH0KKyAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdz
IGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQorICAgIEdMdWludCB0ZXh0dXJlSUQo
KSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJRDsgfQorICAgIGJvb2wgaGFzTWFwcGVkVGV4dHVy
ZXMoKSBjb25zdCB7IHJldHVybiBtX2hhc01hcHBlZFRleHR1cmVzOyB9CisgICAgY29uc3QgR3N0
VmlkZW9GcmFtZSYgdmlkZW9GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9GcmFtZTsgfQor
ICAgIHZvaWQgdXBkYXRlVGV4dHVyZShCaXRtYXBUZXh0dXJlR0wmKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IHBsYXRmb3JtTGF5ZXJCdWZm
ZXIoKTsKKworICAgIGJvb2wgaGFzRE1BQnVmKCkgY29uc3QKKyAgICB7CisjaWYgVVNFKFdQRV9W
SURFT19QTEFORV9ESVNQTEFZX0RNQUJVRikKKyAgICAgICAgcmV0dXJuIG1fZG1hYnVmRkQgPj0g
MDsKKyNlbHNlCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgIH0KKworcHJpdmF0
ZToKKyAgICBHUmVmUHRyPEdzdEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgR3N0VmlkZW9GcmFtZSBt
X3ZpZGVvRnJhbWUgeyB9OworICAgIEludFNpemUgbV9zaXplOworICAgIGJvb2wgbV9oYXNBbHBo
YUNoYW5uZWw7CisgICAgT3B0aW9uYWw8R3N0VmlkZW9EZWNvZGVyUGxhdGZvcm0+IG1fdmlkZW9E
ZWNvZGVyUGxhdGZvcm07CisgICAgVGV4dHVyZU1hcHBlckdMOjpGbGFncyBtX2ZsYWdzIHsgfTsK
KyAgICBHTHVpbnQgbV90ZXh0dXJlSUQgeyAwIH07CisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAg
ICBHc3RHTFRleHR1cmVUYXJnZXQgbV90ZXh0dXJlVGFyZ2V0IHsgR1NUX0dMX1RFWFRVUkVfVEFS
R0VUX05PTkUgfTsKKyNlbmRpZgorICAgIGJvb2wgbV9pc01hcHBlZCB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX2hhc01hcHBlZFRleHR1cmVzIHsgZmFsc2UgfTsKKyNpZiBVU0UoV1BFX1ZJREVPX1BM
QU5FX0RJU1BMQVlfRE1BQlVGKQorICAgIGludCBtX2RtYWJ1ZkZEIHsgMCB9OworICAgIGludCBt
X2RtYWJ1ZlN0cmlkZSB7IDAgfTsKKyNlbmRpZgorfTsKKworfQorI2VuZGlmIC8vIEVOQUJMRShW
SURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDJlYzk3
NWNiMTA0NWFlNGM4NzQ5N2NkOWEwYWNlMDJmOTIxMWQ5NzYuLmY2Y2ViNGJjM2FhZDNlYmY5YWY4
ZjJkNzRjNTdmY2FhNWE1NTdiYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xMzMsNiArMTMzLDcgQEAKICNpZiBVU0UoVEVYVFVSRV9N
QVBQRVJfR0wpCiAjaW5jbHVkZSAiQml0bWFwVGV4dHVyZUdMLmgiCiAjaW5jbHVkZSAiQml0bWFw
VGV4dHVyZVBvb2wuaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJWaWRlb0ZyYW1lSG9sZGVyLmgiCiAj
aW5jbHVkZSAiVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5LmgiCkBAIC0xNzUsMjQwICsxNzYsNiBAQCBzdGF0aWMgdm9pZCBj
b252ZXJ0VG9JbnRlcm5hbFByb3RvY29sKFVSTCYgdXJsKQogICAgICAgICB1cmwuc2V0UHJvdG9j
b2wobWFrZVN0cmluZygid2Via2l0KyIsIHVybC5wcm90b2NvbCgpKSk7CiB9CiAKLSNpZiBVU0Uo
VEVYVFVSRV9NQVBQRVJfR0wpCi1jbGFzcyBHc3RWaWRlb0ZyYW1lSG9sZGVyIDogcHVibGljIFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpVbm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVy
IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBHc3RWaWRlb0ZyYW1lSG9sZGVyKEdzdFNhbXBsZSog
c2FtcGxlLCBPcHRpb25hbDxHc3RWaWRlb0RlY29kZXJQbGF0Zm9ybT4gdmlkZW9EZWNvZGVyUGxh
dGZvcm0sIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MsIGJvb2wgZ3N0R0xFbmFibGVkKQot
ICAgICAgICA6IG1fdmlkZW9EZWNvZGVyUGxhdGZvcm0odmlkZW9EZWNvZGVyUGxhdGZvcm0pCi0g
ICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChHU1RfSVNfU0FNUExFKHNhbXBsZSkpOwotCi0g
ICAgICAgIEdzdFZpZGVvSW5mbyB2aWRlb0luZm87Ci0gICAgICAgIGlmIChVTkxJS0VMWSghZ2V0
U2FtcGxlVmlkZW9JbmZvKHNhbXBsZSwgdmlkZW9JbmZvKSkpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgbV9zaXplID0gSW50U2l6ZShHU1RfVklERU9fSU5GT19XSURUSCgmdmlkZW9J
bmZvKSwgR1NUX1ZJREVPX0lORk9fSEVJR0hUKCZ2aWRlb0luZm8pKTsKLSAgICAgICAgbV9oYXNB
bHBoYUNoYW5uZWwgPSBHU1RfVklERU9fSU5GT19IQVNfQUxQSEEoJnZpZGVvSW5mbyk7Ci0gICAg
ICAgIG1fYnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVyKHNhbXBsZSk7Ci0gICAgICAgIGlm
IChVTkxJS0VMWSghR1NUX0lTX0JVRkZFUihtX2J1ZmZlci5nZXQoKSkpKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0jaWYgVVNFKEdTVFJFQU1FUl9HTCkKLSAgICAgICAgbV9mbGFncyA9IGZsYWdz
IHwgKG1faGFzQWxwaGFDaGFubmVsID8gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCA6IDAp
OwotCi0gICAgICAgIEdzdE1lbW9yeSogbWVtb3J5ID0gZ3N0X2J1ZmZlcl9wZWVrX21lbW9yeSht
X2J1ZmZlci5nZXQoKSwgMCk7Ci0gICAgICAgIGlmIChnc3RfaXNfZ2xfbWVtb3J5KG1lbW9yeSkp
Ci0gICAgICAgICAgICBtX3RleHR1cmVUYXJnZXQgPSBnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJl
X3RhcmdldChHU1RfR0xfTUVNT1JZX0NBU1QobWVtb3J5KSk7Ci0KLSNpZiBVU0UoV1BFX1ZJREVP
X1BMQU5FX0RJU1BMQVlfRE1BQlVGKQotICAgICAgICBtX2RtYWJ1ZkZEID0gLTE7Ci0gICAgICAg
IGdzaXplIG9mZnNldDsKLSAgICAgICAgaWYgKGdzdF9pc19nbF9tZW1vcnlfZWdsKG1lbW9yeSkp
IHsKLSAgICAgICAgICAgIEdzdEdMTWVtb3J5RUdMKiBlZ2xNZW1vcnkgPSAoR3N0R0xNZW1vcnlF
R0wqKSBtZW1vcnk7Ci0gICAgICAgICAgICBnc3RfZWdsX2ltYWdlX2V4cG9ydF9kbWFidWYoZWds
TWVtb3J5LT5pbWFnZSwgJm1fZG1hYnVmRkQsICZtX2RtYWJ1ZlN0cmlkZSwgJm9mZnNldCk7Ci0g
ICAgICAgIH0gZWxzZSBpZiAoZ3N0X2lzX2dsX21lbW9yeShtZW1vcnkpKSB7Ci0gICAgICAgICAg
ICBHUmVmUHRyPEdzdEVHTEltYWdlPiBlZ2xJbWFnZSA9IGFkb3B0R1JlZihnc3RfZWdsX2ltYWdl
X2Zyb21fdGV4dHVyZShHU1RfR0xfQkFTRV9NRU1PUllfQ0FTVChtZW1vcnkpLT5jb250ZXh0LCBH
U1RfR0xfTUVNT1JZX0NBU1QobWVtb3J5KSwgbnVsbHB0cikpOwotCi0gICAgICAgICAgICBpZiAo
ZWdsSW1hZ2UpCi0gICAgICAgICAgICAgICAgZ3N0X2VnbF9pbWFnZV9leHBvcnRfZG1hYnVmKGVn
bEltYWdlLmdldCgpLCAmbV9kbWFidWZGRCwgJm1fZG1hYnVmU3RyaWRlLCAmb2Zmc2V0KTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmIChoYXNETUFCdWYoKSAmJiBtX2RtYWJ1ZlN0cmlkZSA9PSAt
MSkgewotICAgICAgICAgICAgbV9pc01hcHBlZCA9IGdzdF92aWRlb19mcmFtZV9tYXAoJm1fdmlk
ZW9GcmFtZSwgJnZpZGVvSW5mbywgbV9idWZmZXIuZ2V0KCksIEdTVF9NQVBfUkVBRCk7Ci0gICAg
ICAgICAgICBpZiAobV9pc01hcHBlZCkKLSAgICAgICAgICAgICAgICBtX2RtYWJ1ZlN0cmlkZSA9
IEdTVF9WSURFT19JTkZPX1BMQU5FX1NUUklERSgmbV92aWRlb0ZyYW1lLmluZm8sIDApOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKGhhc0RNQUJ1ZigpICYmIG1fZG1hYnVmU3RyaWRlKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBzX29uY2VG
bGFnOwotICAgICAgICBzdGQ6OmNhbGxfb25jZShzX29uY2VGbGFnLCBbXSB7Ci0gICAgICAgICAg
ICBHU1RfV0FSTklORygiVGV4dHVyZSBleHBvcnQgdG8gRE1BQnVmIGZhaWxlZCwgZmFsbGluZyBi
YWNrIHRvIGludGVybmFsIHJlbmRlcmluZyIpOwotICAgICAgICB9KTsKLSNlbmRpZiAvLyBVU0Uo
V1BFX1ZJREVPX1BMQU5FX0RJU1BMQVlfRE1BQlVGKQotCi0gICAgICAgIGlmIChnc3RHTEVuYWJs
ZWQpIHsKLSAgICAgICAgICAgIG1faXNNYXBwZWQgPSBnc3RfdmlkZW9fZnJhbWVfbWFwKCZtX3Zp
ZGVvRnJhbWUsICZ2aWRlb0luZm8sIG1fYnVmZmVyLmdldCgpLCBzdGF0aWNfY2FzdDxHc3RNYXBG
bGFncz4oR1NUX01BUF9SRUFEIHwgR1NUX01BUF9HTCkpOwotICAgICAgICAgICAgaWYgKG1faXNN
YXBwZWQpIHsKLSAgICAgICAgICAgICAgICBtX3RleHR1cmVJRCA9ICpyZWludGVycHJldF9jYXN0
PEdMdWludCo+KG1fdmlkZW9GcmFtZS5kYXRhWzBdKTsKLSAgICAgICAgICAgICAgICBtX2hhc01h
cHBlZFRleHR1cmVzID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlCi0jZWxz
ZQotICAgICAgICBVTlVTRURfUEFSQU0oZmxhZ3MpOwotICAgICAgICBVTlVTRURfUEFSQU0oZ3N0
R0xFbmFibGVkKTsKLSNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSX0dMKQotCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIG1fdGV4dHVyZUlEID0gMDsKLSAgICAgICAgICAgIG1faXNNYXBwZWQgPSBnc3Rf
dmlkZW9fZnJhbWVfbWFwKCZtX3ZpZGVvRnJhbWUsICZ2aWRlb0luZm8sIG1fYnVmZmVyLmdldCgp
LCBHU1RfTUFQX1JFQUQpOwotICAgICAgICAgICAgaWYgKG1faXNNYXBwZWQpIHsKLSAgICAgICAg
ICAgICAgICAvLyBSaWdodCBub3cgdGhlIFRleHR1cmVNYXBwZXIgb25seSBzdXBwb3J0cyBjaHJv
bWFzIHdpdGggb25lIHBsYW5lCi0gICAgICAgICAgICAgICAgQVNTRVJUKEdTVF9WSURFT19JTkZP
X05fUExBTkVTKCZ2aWRlb0luZm8pID09IDEpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgdmlydHVhbCB+R3N0VmlkZW9GcmFtZUhvbGRlcigpCi0gICAgewotICAgICAg
ICBpZiAoVU5MSUtFTFkoIW1faXNNYXBwZWQpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIGdzdF92aWRlb19mcmFtZV91bm1hcCgmbV92aWRlb0ZyYW1lKTsKLSAgICB9Ci0KLSNpZiBV
U0UoV1BFX1ZJREVPX1BMQU5FX0RJU1BMQVlfRE1BQlVGKQotICAgIHZvaWQgaGFuZG9mZlZpZGVv
RG1hQnVmKHN0cnVjdCB3cGVfdmlkZW9fcGxhbmVfZGlzcGxheV9kbWFidWZfc291cmNlKiB2aWRl
b1BsYW5lRGlzcGxheURtYUJ1ZlNvdXJjZSwgY29uc3QgSW50UmVjdCYgcmVjdCkKLSAgICB7Ci0g
ICAgICAgIGlmIChtX2RtYWJ1ZkZEIDw9IDApCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgd3BlX3ZpZGVvX3BsYW5lX2Rpc3BsYXlfZG1hYnVmX3NvdXJjZV91cGRhdGUodmlkZW9QbGFu
ZURpc3BsYXlEbWFCdWZTb3VyY2UsIG1fZG1hYnVmRkQsIHJlY3QueCgpLCByZWN0LnkoKSwgbV9z
aXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgbV9kbWFidWZTdHJpZGUsIFtdKHZvaWQqIGRh
dGEpIHsKLSAgICAgICAgICAgIGdzdF9idWZmZXJfdW5yZWYoR1NUX0JVRkZFUl9DQVNUKGRhdGEp
KTsKLSAgICAgICAgfSwgZ3N0X2J1ZmZlcl9yZWYobV9idWZmZXIuZ2V0KCkpKTsKLQotICAgICAg
ICBjbG9zZShtX2RtYWJ1ZkZEKTsKLSAgICAgICAgbV9kbWFidWZGRCA9IDA7Ci0gICAgfQotI2Vu
ZGlmCi0KLSNpZiBVU0UoR1NUUkVBTUVSX0dMKQotICAgIHZpcnR1YWwgdm9pZCB3YWl0Rm9yQ1BV
U3luYygpCi0gICAgewotICAgICAgICAvLyBObyBuZWVkIGZvciBPcGVuR0wgc3luY2hyb25pemF0
aW9uIHdoZW4gdXNpbmcgdGhlIE9wZW5NQVggZGVjb2Rlci4KLSAgICAgICAgaWYgKG1fdmlkZW9E
ZWNvZGVyUGxhdGZvcm0gPT0gR3N0VmlkZW9EZWNvZGVyUGxhdGZvcm06Ok9wZW5NQVgpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgR3N0R0xTeW5jTWV0YSogbWV0YSA9IGdzdF9idWZm
ZXJfZ2V0X2dsX3N5bmNfbWV0YShtX2J1ZmZlci5nZXQoKSk7Ci0gICAgICAgIGlmIChtZXRhKSB7
Ci0gICAgICAgICAgICBHc3RNZW1vcnkqIG1lbSA9IGdzdF9idWZmZXJfcGVla19tZW1vcnkobV9i
dWZmZXIuZ2V0KCksIDApOwotICAgICAgICAgICAgR3N0R0xDb250ZXh0KiBjb250ZXh0ID0gKChH
c3RHTEJhc2VNZW1vcnkqKW1lbSktPmNvbnRleHQ7Ci0gICAgICAgICAgICBnc3RfZ2xfc3luY19t
ZXRhX3dhaXRfY3B1KG1ldGEsIGNvbnRleHQpOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmIC8v
IFVTRShHU1RSRUFNRVJfR0wpCi0KLSAgICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaXplOyB9Ci0gICAgYm9vbCBoYXNBbHBoYUNoYW5uZWwoKSBjb25zdCB7IHJldHVy
biBtX2hhc0FscGhhQ2hhbm5lbDsgfQotICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3Mo
KSBjb25zdCB7IHJldHVybiBtX2ZsYWdzOyB9Ci0gICAgR0x1aW50IHRleHR1cmVJRCgpIGNvbnN0
IHsgcmV0dXJuIG1fdGV4dHVyZUlEOyB9Ci0gICAgYm9vbCBoYXNNYXBwZWRUZXh0dXJlcygpIGNv
bnN0IHsgcmV0dXJuIG1faGFzTWFwcGVkVGV4dHVyZXM7IH0KLSAgICBjb25zdCBHc3RWaWRlb0Zy
YW1lJiB2aWRlb0ZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0ZyYW1lOyB9Ci0KLSAgICB2
b2lkIHVwZGF0ZVRleHR1cmUoQml0bWFwVGV4dHVyZUdMJiB0ZXh0dXJlKQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKCFtX3RleHR1cmVJRCk7Ci0gICAgICAgIEdzdFZpZGVvR0xUZXh0dXJlVXBsb2Fk
TWV0YSogbWV0YTsKLSAgICAgICAgaWYgKG1fYnVmZmVyICYmIChtZXRhID0gZ3N0X2J1ZmZlcl9n
ZXRfdmlkZW9fZ2xfdGV4dHVyZV91cGxvYWRfbWV0YShtX2J1ZmZlci5nZXQoKSkpKSB7Ci0gICAg
ICAgICAgICBpZiAobWV0YS0+bl90ZXh0dXJlcyA9PSAxKSB7IC8vIEJSR3ggJiBCR1JBIGZvcm1h
dHMgdXNlIG9ubHkgb25lIHRleHR1cmUuCi0gICAgICAgICAgICAgICAgZ3VpbnQgaWRzWzRdID0g
eyB0ZXh0dXJlLmlkKCksIDAsIDAsIDAgfTsKLQotICAgICAgICAgICAgICAgIGlmIChnc3Rfdmlk
ZW9fZ2xfdGV4dHVyZV91cGxvYWRfbWV0YV91cGxvYWQobWV0YSwgaWRzKSkKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KCFtX2lzTWFwcGVkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGludCBzdHJpZGUg
PSBHU1RfVklERU9fRlJBTUVfUExBTkVfU1RSSURFKCZtX3ZpZGVvRnJhbWUsIDApOwotICAgICAg
ICBjb25zdCB2b2lkKiBzcmNEYXRhID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX0RBVEEoJm1fdmlk
ZW9GcmFtZSwgMCk7Ci0KLSAgICAgICAgaWYgKCFzcmNEYXRhKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIHRleHR1cmUudXBkYXRlQ29udGVudHMoc3JjRGF0YSwgV2ViQ29yZTo6SW50
UmVjdCgwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKSwgV2ViQ29yZTo6SW50
UG9pbnQoMCwgMCksIHN0cmlkZSk7Ci0gICAgfQotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBwbGF0Zm9ybUxheWVyQnVmZmVyKCkKLSAgICB7
Ci0gICAgICAgIGlmICghbV9oYXNNYXBwZWRUZXh0dXJlcykKLSAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgICAgIHVzaW5nIEJ1ZmZlciA9IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyOwotCi0jaWYgVVNFKEdTVFJFQU1FUl9HTCkKLSAgICAgICAgaWYgKG1fdGV4dHVy
ZVRhcmdldCA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTKQotICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8QnVmZmVyPihCdWZmZXI6OlRleHR1cmVWYXJpYW50IHsgQnVm
ZmVyOjpFeHRlcm5hbE9FU1RleHR1cmUgeyBtX3RleHR1cmVJRCB9IH0sIG1fc2l6ZSwgbV9mbGFn
cywgR0xfRE9OVF9DQVJFKTsKLSNlbmRpZgotCi0gICAgICAgIGlmICgoR1NUX1ZJREVPX0lORk9f
SVNfUkdCKCZtX3ZpZGVvRnJhbWUuaW5mbykgJiYgR1NUX1ZJREVPX0lORk9fTl9QTEFORVMoJm1f
dmlkZW9GcmFtZS5pbmZvKSA9PSAxKSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJ1
ZmZlcj4oQnVmZmVyOjpUZXh0dXJlVmFyaWFudCB7IEJ1ZmZlcjo6UkdCVGV4dHVyZSB7IG1fdGV4
dHVyZUlEIH0gfSwgbV9zaXplLCBtX2ZsYWdzLCBHTF9SR0JBKTsKLQotICAgICAgICBpZiAoR1NU
X1ZJREVPX0lORk9fSVNfWVVWKCZtX3ZpZGVvRnJhbWUuaW5mbykpIHsKLSAgICAgICAgICAgIGlm
IChHU1RfVklERU9fSU5GT19OX0NPTVBPTkVOVFMoJm1fdmlkZW9GcmFtZS5pbmZvKSA8IDMgfHwg
R1NUX1ZJREVPX0lORk9fTl9QTEFORVMoJm1fdmlkZW9GcmFtZS5pbmZvKSA+IDMpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgICAgIGlmIChtX3ZpZGVvRGVjb2Rl
clBsYXRmb3JtICYmICptX3ZpZGVvRGVjb2RlclBsYXRmb3JtID09IEdzdFZpZGVvRGVjb2RlclBs
YXRmb3JtOjpJbXhWUFUpIHsKLSAgICAgICAgICAgICAgICAvLyBJTVggVlBVIGRlY29kZXIgZGVj
b2RlcyBZVVYgZGF0YSBvbmx5IGludG8gdGhlIFkgdGV4dHVyZSBmcm9tIHdoaWNoIHRoZSBzYW1w
bGVyCi0gICAgICAgICAgICAgICAgLy8gdGhlbiBkaXJlY3RseSBwcm9kdWNlcyBSR0JBIGRhdGEu
IFRleHR1cmVzIGZvciBvdGhlciBwbGFuZXMgYXJlbid0IHVzZWQsIGJ1dAotICAgICAgICAgICAg
ICAgIC8vIHRoYXQncyBkZWNvZGVyJ3MgcHJvYmxlbS4gV2UgaGF2ZSB0byB0cmVhdCB0aGF0IFkg
dGV4dHVyZSBhcyBoYXZpbmcgUkdCQSBkYXRhLgotICAgICAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPEJ1ZmZlcj4oQnVmZmVyOjpUZXh0dXJlVmFyaWFudCB7IEJ1ZmZlcjo6UkdCVGV4dHVy
ZSB7IG1fdGV4dHVyZUlEIH0gfSwgbV9zaXplLCBtX2ZsYWdzLCBHTF9SR0JBKTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZQbGFuZXMgPSBHU1RfVklERU9f
SU5GT19OX1BMQU5FUygmbV92aWRlb0ZyYW1lLmluZm8pOwotICAgICAgICAgICAgc3RkOjphcnJh
eTxHTHVpbnQsIDM+IHBsYW5lczsKLSAgICAgICAgICAgIHN0ZDo6YXJyYXk8dW5zaWduZWQsIDM+
IHl1dlBsYW5lOwotICAgICAgICAgICAgc3RkOjphcnJheTx1bnNpZ25lZCwgMz4geXV2UGxhbmVP
ZmZzZXQ7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZQbGFu
ZXM7ICsraSkKLSAgICAgICAgICAgICAgICBwbGFuZXNbaV0gPSAqc3RhdGljX2Nhc3Q8R0x1aW50
Kj4obV92aWRlb0ZyYW1lLmRhdGFbaV0pOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IDM7ICsraSkgewotICAgICAgICAgICAgICAgIHl1dlBsYW5lW2ldID0gR1NUX1ZJREVP
X0lORk9fQ09NUF9QTEFORSgmbV92aWRlb0ZyYW1lLmluZm8sIGkpOwotICAgICAgICAgICAgICAg
IHl1dlBsYW5lT2Zmc2V0W2ldID0gR1NUX1ZJREVPX0lORk9fQ09NUF9QT0ZGU0VUKCZtX3ZpZGVv
RnJhbWUuaW5mbywgaSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHN0ZDo6YXJyYXk8
R0xmbG9hdCwgOT4geXV2VG9SZ2I7Ci0gICAgICAgICAgICBpZiAoZ3N0X3ZpZGVvX2NvbG9yaW1l
dHJ5X21hdGNoZXMoJkdTVF9WSURFT19JTkZPX0NPTE9SSU1FVFJZKCZtX3ZpZGVvRnJhbWUuaW5m
byksIEdTVF9WSURFT19DT0xPUklNRVRSWV9CVDcwOSkpIHsKLSAgICAgICAgICAgICAgICB5dXZU
b1JnYiA9IHsKLSAgICAgICAgICAgICAgICAgICAgMS4xNjRmLCAgMC4wZiwgICAgMS43ODdmLAot
ICAgICAgICAgICAgICAgICAgICAxLjE2NGYsIC0wLjIxM2YsIC0wLjUzMWYsCi0gICAgICAgICAg
ICAgICAgICAgIDEuMTY0ZiwgIDIuMTEyZiwgIDAuMGYKLSAgICAgICAgICAgICAgICB9OwotICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBEZWZhdWx0IHRvIGJ0NjAxLiBU
aGlzIGlzIHRoZSBzYW1lIGJlaGF2aW91ciBhcyBHU3RyZWFtZXIncyBnbGNvbG9yY29udmVydCBl
bGVtZW50LgotICAgICAgICAgICAgICAgIHl1dlRvUmdiID0gewotICAgICAgICAgICAgICAgICAg
ICAxLjE2NGYsICAwLjBmLCAgICAxLjU5NmYsCi0gICAgICAgICAgICAgICAgICAgIDEuMTY0Ziwg
LTAuMzkxZiwgLTAuODEzZiwKLSAgICAgICAgICAgICAgICAgICAgMS4xNjRmLCAgMi4wMThmLCAg
MC4wZgotICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPEJ1ZmZlcj4oIEJ1ZmZlcjo6VGV4dHVyZVZhcmlhbnQgeyBCdWZmZXI6
OllVVlRleHR1cmUgeyBudW1iZXJPZlBsYW5lcywgcGxhbmVzLCB5dXZQbGFuZSwgeXV2UGxhbmVP
ZmZzZXQsIHl1dlRvUmdiIH0gfSwgbV9zaXplLCBtX2ZsYWdzLCBHTF9SR0JBKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGJvb2wgaGFzRE1BQnVm
KCkgY29uc3QKLSAgICB7Ci0jaWYgVVNFKFdQRV9WSURFT19QTEFORV9ESVNQTEFZX0RNQUJVRikK
LSAgICAgICAgcmV0dXJuIG1fZG1hYnVmRkQgPj0gMDsKLSNlbHNlCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSNlbmRpZgotICAgIH0KLQotcHJpdmF0ZToKLSAgICBHUmVmUHRyPEdzdEJ1ZmZlcj4g
bV9idWZmZXI7Ci0gICAgR3N0VmlkZW9GcmFtZSBtX3ZpZGVvRnJhbWUgeyB9OwotICAgIEludFNp
emUgbV9zaXplOwotICAgIGJvb2wgbV9oYXNBbHBoYUNoYW5uZWw7Ci0gICAgT3B0aW9uYWw8R3N0
VmlkZW9EZWNvZGVyUGxhdGZvcm0+IG1fdmlkZW9EZWNvZGVyUGxhdGZvcm07Ci0gICAgVGV4dHVy
ZU1hcHBlckdMOjpGbGFncyBtX2ZsYWdzIHsgfTsKLSAgICBHTHVpbnQgbV90ZXh0dXJlSUQgeyAw
IH07Ci0jaWYgVVNFKEdTVFJFQU1FUl9HTCkKLSAgICBHc3RHTFRleHR1cmVUYXJnZXQgbV90ZXh0
dXJlVGFyZ2V0IHsgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX05PTkUgfTsKLSNlbmRpZgotICAgIGJv
b2wgbV9pc01hcHBlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2hhc01hcHBlZFRleHR1cmVzIHsg
ZmFsc2UgfTsKLSNpZiBVU0UoV1BFX1ZJREVPX1BMQU5FX0RJU1BMQVlfRE1BQlVGKQotICAgIGlu
dCBtX2RtYWJ1ZkZEIHsgMCB9OwotICAgIGludCBtX2RtYWJ1ZlN0cmlkZSB7IDAgfTsKLSNlbmRp
ZgotfTsKLSNlbmRpZgotCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplRGVidWdDYXRlZ29yeSgpCiB7
CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwo=
</data>
<flag name="review"
          id="413451"
          type_id="1"
          status="+"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="413557"
          type_id="3"
          status="-"
          setter="calvaris"
    />
          </attachment>
      

    </bug>

</bugzilla>