<?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>45046</bug_id>
          
          <creation_ts>2010-09-01 10:38:06 -0700</creation_ts>
          <short_desc>[GTK] ScrollbarThemeGtk should be enabled for interior frame scrollbars</short_desc>
          <delta_ts>2010-09-07 03:01:36 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>pnormand</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>272888</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-09-01 10:38:06 -0700</bug_when>
    <thetext>ScrollbarThemeGtk should be enabled for interior frame scrollbars. This will specialize ScrollbarGtk.cpp to only apply to main-frame scrollbars and remove all code in that unit for interior frame scrollbars. This means that interior frame scrollbars will work just as they do for all other ports and greatly reduces the code complexity.

Further benefits:
For WebKit2 clicks will not have to be routed through GTK+ and can simply go straight to WebCore. Additionally, it will allow us to add a switch (if we desire) to toggle the behavior of main frame scrollbars (for instance, if we wish to pass some failing layout tests).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272896</commentid>
    <comment_count>1</comment_count>
      <attachid>66236</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-09-01 10:55:12 -0700</bug_when>
    <thetext>Created attachment 66236
Enable ScrollbarThemeGtk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274759</commentid>
    <comment_count>2</comment_count>
      <attachid>66236</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-09-06 13:05:14 -0700</bug_when>
    <thetext>Comment on attachment 66236
Enable ScrollbarThemeGtk

 183     // FIXME: Restructure the ScrollView abstraction so that we do not have to
 184     // copy this verbatim from ScrollView.cpp. Until then, we should make sure this
 185     // is kept in sync.
 186     bool needsUpdate = false;

Yeah =(. I like that we are being able to further isolate the more specific stuff into their own smaller compartments, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274764</commentid>
    <comment_count>3</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-09-06 13:26:54 -0700</bug_when>
    <thetext>Wow. Thanks for the review. That&apos;s a wrap for scrollbar stuff. Enabling / disabling the current main frame behavior should only be a couple-line change if we need to do it for WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274774</commentid>
    <comment_count>4</comment_count>
      <attachid>66236</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-09-06 14:04:15 -0700</bug_when>
    <thetext>Comment on attachment 66236
Enable ScrollbarThemeGtk

Clearing flags on attachment: 66236

Committed r66848: &lt;http://trac.webkit.org/changeset/66848&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274775</commentid>
    <comment_count>5</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-09-06 14:04:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274929</commentid>
    <comment_count>6</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-09-07 03:01:36 -0700</bug_when>
    <thetext>It seems testwebview started to crash after this patch landed:
http://webkit-bots.igalia.com/amd64/svn_66871.core-when_1283853203-_-who_testwebview-_-why_11.7435.trace.html

Looking into it</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66236</attachid>
            <date>2010-09-01 10:55:12 -0700</date>
            <delta_ts>2010-09-06 14:04:15 -0700</delta_ts>
            <desc>Enable ScrollbarThemeGtk</desc>
            <filename>bug-45046-20100901105510.patch</filename>
            <type>text/plain</type>
            <size>34410</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzdmNThmNGY0YzZiZWY5ZmZmNzNkZTU5ZDg4ZjJlODg1YjkzOTlkMy4uMTdjNDY5Njc3OTMwMDQ1
ODk1N2QyZTNkZDZmOTI4NDAxNjM2YTYxOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAxMC0wOS0wMSAgTWFy
dGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gU2Nyb2xsYmFyVGhlbWVHdGsgc2hv
dWxkIGJlIGVuYWJsZWQgZm9yIGludGVyaW9yIGZyYW1lIHNjcm9sbGJhcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MDQ2CisKKyAgICAgICAgTWFr
ZSBpbnRlcmlvciBmcmFtZSBzY3JvbGxiYXJzICJmdWxseS1mYWtlLCIgd2hpY2ggbWVhbnMgdGhl
eSBkbyBub3QgcmVseQorICAgICAgICBhdCBhbGwgb24gR1RLKyBmb3IgcGFpbnRpbmcgb3IgYmVo
YXZpb3IsIGJ1dCBpbnN0ZWFkIGFyZSB0eXBpY2FsIFdlYkNvcmUKKyAgICAgICAgc2Nyb2xsYmFy
cyBkcmF3biBhY2NvcmRpbmcgdG8gdGhlIEdUSysgdGhlbWUuIE1vdmUgU2Nyb2xsYmFyR3RrIHRv
CisgICAgICAgIE1haW5GcmFtZVNjcm9sbGJhckd0ayBhbmQgcmVtb3ZlIGFsbCBsb2dpYyBpbiB0
aGF0IGZpbGUgZGVhbGluZyB3aXRoIGludGVyaW9yCisgICAgICAgIGZyYW1lIHNjcm9sbGJhcnMu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGlzIGlzIGFscmVhZHkgY292ZXJlZCBieSBw
aXhlbCB0ZXN0cyBmb3Igc2Nyb2xsYmFycywKKyAgICAgICAgd2hpY2ggd2VyZSBhZGRlZCBpbiBy
NjY2MDUuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogVXBkYXRlIHNvdXJjZXMgbGlzdC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6IENoYW5nZSB0aGUgYWRqdXN0bWVudCBt
ZW1iZXJzIHRvIGJlIHNtYXJ0IHBvaW50ZXJzLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJh
ci5jcHA6IEVuYWJsZSBUSFVNQl9QT1NJVElPTl9BRkZFQ1RTX0JVVFRPTlMgZm9yIEdUSysgYXMg
d2VsbC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvTWFpbkZyYW1lU2Nyb2xsYmFyR3RrLmNwcDog
QWRkZWQuCisgICAgICAgIChNYWluRnJhbWVTY3JvbGxiYXJHdGs6OmNyZWF0ZSk6IENyZWF0ZSBh
IE1haW5GcmFtZVNjcm9sbGJhckd0ayBpbnN0ZWFkIG9mIFNjcm9sbGJhckd0ay4KKyAgICAgICAg
KE1haW5GcmFtZVNjcm9sbGJhckd0azo6TWFpbkZyYW1lU2Nyb2xsYmFyR3RrKToKKyAgICAgICAg
KE1haW5GcmFtZVNjcm9sbGJhckd0azo6fk1haW5GcmFtZVNjcm9sbGJhckd0ayk6CisgICAgICAg
IChNYWluRnJhbWVTY3JvbGxiYXJHdGs6OmF0dGFjaEFkanVzdG1lbnQpOgorICAgICAgICAoTWFp
bkZyYW1lU2Nyb2xsYmFyR3RrOjpkZXRhY2hBZGp1c3RtZW50KToKKyAgICAgICAgKE1haW5GcmFt
ZVNjcm9sbGJhckd0azo6dXBkYXRlVGh1bWJQb3NpdGlvbik6CisgICAgICAgIChNYWluRnJhbWVT
Y3JvbGxiYXJHdGs6OnVwZGF0ZVRodW1iUHJvcG9ydGlvbik6CisgICAgICAgIChNYWluRnJhbWVT
Y3JvbGxiYXJHdGs6Omd0a1ZhbHVlQ2hhbmdlZCk6CisgICAgICAgIChNYWluRnJhbWVTY3JvbGxi
YXJHdGs6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvTWFpbkZyYW1lU2Nyb2xsYmFy
R3RrLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxWaWV3R3RrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBsYXRmb3JtSW5pdCk6IFJlbW92ZSB1bm5l
Y2Vzc2FyeSBpbml0aWFsaXphdGlvbgorICAgICAgICBiZWNhdXNlIG9mIHNtYXJ0IHBvaW50ZXIg
Y2hhbmdlLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6Y3JlYXRlU2Nyb2xsYmFyKTog
SW5zdGVhZCBvZiBjcmVhdGluZyBTY3JvbGxiYXJHdGsgZm9yCisgICAgICAgIGludGVyaW9yIGZy
YW1lIHNjcm9sbGJhcnMsIGNyZWF0ZSBhIG5vcm1hbCBXZWJDb3JlIHNjcm9sbGJhci4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldEd0a0FkanVzdG1lbnRzKTogQWRkZWQgYW4gZXh0
cmEgYXNzZXJ0IHdoaWNoIGVuc3VyZXMKKyAgICAgICAgdGhhdCB0aGlzIG1ldGhvZCBpcyBuZXZl
ciBjYWxsZWQgd2l0aCBhIG5vbi1udWxsIGFkanVzdG1lbnQgb24gYW4gaW50ZXJpb3IgZnJhbWUK
KyAgICAgICAgc2Nyb2xsYmFyLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGxhdGZv
cm1BZGRDaGlsZCk6IFJlbW92ZSBsb2dpYyBmb3IgaW50ZXJpb3IgZnJhbWUgc2Nyb2xsYmFycy4K
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBsYXRmb3JtUmVtb3ZlQ2hpbGQpOiBSZW1v
dmUgbG9naWMgZm9yIGludGVyaW9yIGZyYW1lIHNjcm9sbGJhcnMuCisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxWaWV3Ojp2aXNpYmxlQ29udGVudFJlY3QpOiBVc2UgYSBtb3JlIGFjY3VyYXRlIGd1
YXJkIGZvciBkZXRlY3RpbmcKKyAgICAgICAgdHJhbnNpdGlvbmFyeSBzdGF0ZXMgd2hlbiBhY2Nl
c3NpbmcgcGFyZW50IHdpZGdldHMuIEV4cGxjaXRseSBndWFyZCBhZ2FpbnN0IGludGVyaW9yCisg
ICAgICAgIGZyYW1lIFNjcm9sbFZpZXcncyB0cnlpbmcgdG8gZGV0ZXJtaW5lIHNpemUgYmFzZWQg
b24gcGFyZW50IHdpZGdldHMuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRTY3Jv
bGxiYXJNb2Rlcyk6IFRoaXMgbWV0aG9kIHdhcyBvdXQgb2Ygc3luYyB3aXRoIHRoZSBvbmUKKyAg
ICAgICAgaXQgY29weS1hbmQtcGFzdGVkIGZyb20uIFVwZGF0ZSBpdCBhbmQgY2hhbmdlIHRoZSBs
b2dpYyB0byBkbyB0aGUgcmlnaHQgdGhpbmcgZm9yCisgICAgICAgIGludGVyaW9yIGZyYW1lIHNj
cm9sbGJhcnMuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Njcm9sbGJhckd0ay5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Njcm9sbGJhckd0ay5oOiBSZW1vdmVkLgorCiAy
MDEwLTA4LTI3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDc2ZjhiZTIwZjM4MDRh
ZjYxYTA5MTcxMzRkMWMwNmMzZmNiY2JlZTQuLmM3YzczOWJlZmYwMjQ4MzM2NjVlMDA0NGE1YWVl
MzllMjYxYTAxNzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjUwMSw2ICsyNTAxLDggQEAgd2ViY29yZWd0a19zb3Vy
Y2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9MYW5ndWFnZS5jcHAgXAogCVdlYkNvcmUv
cGxhdGZvcm0vZ3RrL0xvY2FsaXplZFN0cmluZ3NHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3Jt
L2d0ay9Mb2dnaW5nR3RrLmNwcCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTWFpbkZyYW1lU2Ny
b2xsYmFyR3RrLmNwcCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTWFpbkZyYW1lU2Nyb2xsYmFy
R3RrLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL01JTUVUeXBlUmVnaXN0cnlHdGsuY3BwIFwK
IAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9Nb3VzZUV2ZW50R3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAgXApAQCAtMjUxMSw4ICsyNTEzLDYgQEAgd2ViY29y
ZWd0a19zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9Qb3B1cE1lbnVHdGsuaCBc
CiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwIFwKIAlXZWJDb3JlL3Bs
YXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oIFwKLQlXZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3Jv
bGxiYXJHdGsuY3BwIFwKLQlXZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJHdGsuaCBcCiAJ
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwIFwKIAlXZWJDb3JlL3Bs
YXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9T
Y3JvbGxWaWV3R3RrLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuaCBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4IGFkY2ZhZjlmODJkYzZh
NWI1MDU2YzNlMDlmNGQ0OWMxY2IwZDY2OTMuLjk0MGVhZDAxNjNkOTNjOTk2MDhmNWIxODhhODdm
ZjgyMjA1ZTIyMTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCkBAIC00MCw2ICs0MCw3IEBACiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlICJHUmVmUHRyR3RrLmgiCiB0eXBlZGVm
IHN0cnVjdCBfR3RrQWRqdXN0bWVudCBHdGtBZGp1c3RtZW50OwogI2VuZGlmCiAKQEAgLTMzMyw5
ICszMzQsMTEgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShHVEspCiBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRHdGtBZGp1c3RtZW50cyhHdGtBZGp1c3RtZW50KiBoYWRqLCBHdGtBZGp1c3RtZW50KiB2
YWRqLCBib29sIHJlc2V0VmFsdWVzID0gdHJ1ZSk7Ci0gICAgR3RrQWRqdXN0bWVudCogbV9ob3Jp
em9udGFsQWRqdXN0bWVudDsKLSAgICBHdGtBZGp1c3RtZW50KiBtX3ZlcnRpY2FsQWRqdXN0bWVu
dDsKICAgICB2b2lkIHNldFNjcm9sbE9mZnNldChjb25zdCBJbnRTaXplJiBvZmZzZXQpIHsgbV9z
Y3JvbGxPZmZzZXQgPSBvZmZzZXQ7IH0KKworcHJpdmF0ZToKKyAgICBQbGF0Zm9ybVJlZlB0cjxH
dGtBZGp1c3RtZW50PiBtX2hvcml6b250YWxBZGp1c3RtZW50OworICAgIFBsYXRmb3JtUmVmUHRy
PEd0a0FkanVzdG1lbnQ+IG1fdmVydGljYWxBZGp1c3RtZW50OwogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShXWCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAppbmRleCBmZjhmNjZmMjlkNGI3Y2UwNWQzZDI3
N2NiOWU1ZmRhZjlhZGFmZWFkLi45OWIzMmZkOGI0ZWFlM2UzMTA1MjMwZjVmM2MyMGY0NWI0N2Zj
MGMxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAKIHVzaW5nIG5h
bWVzcGFjZSBzdGQ7CiAKLSNpZiBQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoTElOVVgpCisjaWYg
UExBVEZPUk0oQ0hST01JVU0pICYmIE9TKExJTlVYKSB8fCBQTEFURk9STShHVEspCiAvLyBUaGUg
cG9zaXRpb24gb2YgdGhlIHNjcm9sbGJhciB0aHVtYiBhZmZlY3RzIHRoZSBhcHBlYXJhbmNlIG9m
IHRoZSBzdGVwcGVycywgc28KIC8vIHdoZW4gdGhlIHRodW1iIG1vdmVzLCB3ZSBoYXZlIHRvIGlu
dmFsaWRhdGUgdGhlbSBmb3IgcGFpbnRpbmcuCiAjZGVmaW5lIFRIVU1CX1BPU0lUSU9OX0FGRkVD
VFNfQlVUVE9OUwpAQCAtNDgsNyArNDgsNyBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLSNpZiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oRUZMKQor
I2lmICFQTEFURk9STShFRkwpCiBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gU2Nyb2xsYmFyOjpjcmVh
dGVOYXRpdmVTY3JvbGxiYXIoU2Nyb2xsYmFyQ2xpZW50KiBjbGllbnQsIFNjcm9sbGJhck9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxiYXJDb250cm9sU2l6ZSBzaXplKQogewogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU2Nyb2xsYmFyKGNsaWVudCwgb3JpZW50YXRpb24sIHNpemUpKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL01haW5GcmFtZVNjcm9sbGJhckd0ay5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9NYWluRnJhbWVTY3JvbGxiYXJHdGsuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlNzM5ZmZhZTFmMDc5MWJhZGMwNTNkNWMyNmMxNmM5NDEwMjBjZWQKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9NYWluRnJhbWVTY3JvbGxiYXJHdGsuY3Bw
CkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSBIb2xn
ZXIgSGFucyBQZXRlciBGcmV5dGhlciB6ZWNrZUBzZWxmaXNoLm9yZworICogIENvcHlyaWdodCAo
QykgMjAxMCBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+CisgKiAgQ29weXJp
Z2h0IChDKSAyMDEwIENvbGxhYm9yYSBMdGQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDEwIElnYWxp
YSBTLkwuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTWFpbkZyYW1lU2Nyb2xsYmFyR3RrLmgiCisKKyNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHdGtWZXJzaW9uaW5nLmgiCisjaW5jbHVkZSAiSW50
UmVjdC5oIgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK1Bhc3NSZWZQdHI8TWFpbkZyYW1lU2Nyb2xsYmFyR3RrPiBNYWluRnJhbWVTY3JvbGxiYXJH
dGs6OmNyZWF0ZShTY3JvbGxiYXJDbGllbnQqIGNsaWVudCwgU2Nyb2xsYmFyT3JpZW50YXRpb24g
b3JpZW50YXRpb24sIEd0a0FkanVzdG1lbnQqIGFkaikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE1haW5GcmFtZVNjcm9sbGJhckd0ayhjbGllbnQsIG9yaWVudGF0aW9uLCBhZGopKTsKK30K
KworLy8gTWFpbiBmcmFtZSBzY3JvbGxiYXJzIGFyZSBzbGF2ZXMgdG8gYSBHdGtBZGp1c3RtZW50
LiBJZiBhIG1haW4gZnJhbWUKKy8vIHNjcm9sbGJhciBoYXMgYW4gbV9hZGp1c3RtZW50LCBpdCBi
ZWxvbmdzIHRvIHRoZSBjb250YWluZXIgKGEgR3RrV2lkZ2V0IHN1Y2gKKy8vIGFzIEd0a1Njcm9s
bGVkV2luZG93KS4gVGhlIGFkanVzdG1lbnQgbWF5IGFsc28gYmUgbnVsbCwgaW4gd2hpY2ggY2Fz
ZSB0aGVyZQorLy8gaXMgbm8gY29udGFpbmluZyB2aWV3IG9yIHRoZSBwYXJlbnQgU2Nyb2xsVmll
dyBpcyBpbiBzb21lIHNvcnQgb2YgdHJhbnNpdGlvbgorLy8gc3RhdGUuIFRoZXNlIHNjcm9sbGJh
cnMgYXJlIG5ldmVyIHBhaW50ZWQsIGFzIHRoZSBjb250YWluZXIgdGFrZXMgY2FyZSBvZgorLy8g
dGhhdC4gVGhleSBleGlzdCBvbmx5IHRvIHNodXR0bGUgZGF0YSBmcm9tIHRoZSBHdGtXaWRnZXQg
Y29udGFpbmVyIGludG8KKy8vIFdlYkNvcmUgYW5kIHZpY2UtdmVyc2EuCitNYWluRnJhbWVTY3Jv
bGxiYXJHdGs6Ok1haW5GcmFtZVNjcm9sbGJhckd0ayhTY3JvbGxiYXJDbGllbnQqIGNsaWVudCwg
U2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIEd0a0FkanVzdG1lbnQqIGFkanVzdG1l
bnQpCisgICAgOiBTY3JvbGxiYXIoY2xpZW50LCBvcmllbnRhdGlvbiwgUmVndWxhclNjcm9sbGJh
cikKKyAgICAsIG1fYWRqdXN0bWVudCgwKQoreworICAgIGF0dGFjaEFkanVzdG1lbnQoYWRqdXN0
bWVudCk7CisKKyAgICAvLyBXZSBoYXZlIG5vdGhpbmcgdG8gc2hvdyBhcyB3ZSBhcmUgc29sZWx5
IG9wZXJhdGluZyBvbiB0aGUgR3RrQWRqdXN0bWVudC4KKyAgICByZXNpemUoMCwgMCk7Cit9CisK
K01haW5GcmFtZVNjcm9sbGJhckd0azo6fk1haW5GcmFtZVNjcm9sbGJhckd0aygpCit7CisgICAg
aWYgKG1fYWRqdXN0bWVudCkKKyAgICAgICAgZGV0YWNoQWRqdXN0bWVudCgpOworfQorCit2b2lk
IE1haW5GcmFtZVNjcm9sbGJhckd0azo6YXR0YWNoQWRqdXN0bWVudChHdGtBZGp1c3RtZW50KiBh
ZGp1c3RtZW50KQoreworICAgIGlmIChtX2FkanVzdG1lbnQpCisgICAgICAgIGRldGFjaEFkanVz
dG1lbnQoKTsKKworICAgIG1fYWRqdXN0bWVudCA9IGFkanVzdG1lbnQ7CisgICAgaWYgKCFtX2Fk
anVzdG1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9hZGp1
c3RtZW50LmdldCgpLCAidmFsdWUtY2hhbmdlZCIsIEdfQ0FMTEJBQ0soTWFpbkZyYW1lU2Nyb2xs
YmFyR3RrOjpndGtWYWx1ZUNoYW5nZWQpLCB0aGlzKTsKKyAgICB1cGRhdGVUaHVtYlByb3BvcnRp
b24oKTsKKyAgICB1cGRhdGVUaHVtYlBvc2l0aW9uKCk7Cit9CisKK3ZvaWQgTWFpbkZyYW1lU2Ny
b2xsYmFyR3RrOjpkZXRhY2hBZGp1c3RtZW50KCkKK3sKKyAgICBpZiAoIW1fYWRqdXN0bWVudCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9m
dW5jKEdfT0JKRUNUKG1fYWRqdXN0bWVudC5nZXQoKSksIChncG9pbnRlcilNYWluRnJhbWVTY3Jv
bGxiYXJHdGs6Omd0a1ZhbHVlQ2hhbmdlZCwgdGhpcyk7CisKKyAgICAvLyBGb3IgdGhlIGNhc2Ug
d2hlcmUgd2Ugb25seSBvcGVyYXRlIG9uIHRoZSBHdGtBZGp1c3RtZW50IGl0IGlzIGJlc3QgdG8K
KyAgICAvLyByZXNldCB0aGUgdmFsdWVzIHNvIHRoYXQgdGhlIHN1cnJvdW5kaW5nIHNjcm9sbGJh
ciBnZXRzIHVwZGF0ZWQsIG9yCisgICAgLy8gZS5nLiBmb3IgYSBHdGtTY3JvbGxlZFdpbmRvdyB0
aGUgc2Nyb2xsYmFyIGdldHMgaGlkZGVuLgorICAgIGd0a19hZGp1c3RtZW50X2NvbmZpZ3VyZSht
X2FkanVzdG1lbnQuZ2V0KCksIDAsIDAsIDAsIDAsIDAsIDApOworCisgICAgbV9hZGp1c3RtZW50
ID0gMDsKK30KKwordm9pZCBNYWluRnJhbWVTY3JvbGxiYXJHdGs6OnVwZGF0ZVRodW1iUG9zaXRp
b24oKQoreworICAgIGlmICghbV9hZGp1c3RtZW50IHx8IGd0a19hZGp1c3RtZW50X2dldF92YWx1
ZShtX2FkanVzdG1lbnQuZ2V0KCkpID09IG1fY3VycmVudFBvcykKKyAgICAgICAgcmV0dXJuOwor
ICAgIGd0a19hZGp1c3RtZW50X3NldF92YWx1ZShtX2FkanVzdG1lbnQuZ2V0KCksIG1fY3VycmVu
dFBvcyk7Cit9CisKK3ZvaWQgTWFpbkZyYW1lU2Nyb2xsYmFyR3RrOjp1cGRhdGVUaHVtYlByb3Bv
cnRpb24oKQoreworICAgIGlmICghbV9hZGp1c3RtZW50KQorICAgICAgICByZXR1cm47CisgICAg
Z3RrX2FkanVzdG1lbnRfY29uZmlndXJlKG1fYWRqdXN0bWVudC5nZXQoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ3RrX2FkanVzdG1lbnRfZ2V0X3ZhbHVlKG1fYWRqdXN0bWVudC5n
ZXQoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0a19hZGp1c3RtZW50X2dldF9s
b3dlcihtX2FkanVzdG1lbnQuZ2V0KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X3RvdGFsU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9saW5lU3RlcCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYWdlU3RlcCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV92aXNpYmxlU2l6ZSk7Cit9CisKK3ZvaWQgTWFpbkZyYW1lU2Nyb2xsYmFy
R3RrOjpndGtWYWx1ZUNoYW5nZWQoR3RrQWRqdXN0bWVudCosIE1haW5GcmFtZVNjcm9sbGJhckd0
ayogdGhhdCkKK3sKKyAgICB0aGF0LT5zZXRWYWx1ZShzdGF0aWNfY2FzdDxpbnQ+KGd0a19hZGp1
c3RtZW50X2dldF92YWx1ZSh0aGF0LT5tX2FkanVzdG1lbnQuZ2V0KCkpKSk7Cit9CisKK3ZvaWQg
TWFpbkZyYW1lU2Nyb2xsYmFyR3RrOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgLy8gTWFpbiBmcmFtZSBzY3JvbGxiYXJzIGFyZSBu
b3QgcGFpbnRlZCBieSBXZWJDb3JlLgorICAgIHJldHVybjsKK30KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL01haW5GcmFtZVNjcm9sbGJhckd0ay5oIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvTWFpbkZyYW1lU2Nyb2xsYmFyR3RrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODI3MWVmNTY1Y2EyMGQ4
NWVhZjYwODljYzc0ZjM4ZmE2OWMxNDYwYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL01haW5GcmFtZVNjcm9sbGJhckd0ay5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisg
KiAgQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwuCisgKgorICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg
KiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlm
IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBV
U0EKKyAqLworCisKKyNpZm5kZWYgTWFpbkZyYW1lU2Nyb2xsYmFyR3RrX2gKKyNkZWZpbmUgTWFp
bkZyYW1lU2Nyb2xsYmFyR3RrX2gKKworI2luY2x1ZGUgIkdSZWZQdHJHdGsuaCIKKyNpbmNsdWRl
ICJTY3JvbGxiYXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCit0eXBlZGVmIHN0
cnVjdCBfR3RrQWRqdXN0bWVudCBHdGtBZGp1c3RtZW50OworCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIE1haW5GcmFtZVNjcm9sbGJhckd0ayA6IHB1YmxpYyBTY3JvbGxiYXIgeworcHVi
bGljOgorICAgIH5NYWluRnJhbWVTY3JvbGxiYXJHdGsoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgZGV0YWNoQWRq
dXN0bWVudCgpOworICAgIHZvaWQgYXR0YWNoQWRqdXN0bWVudChHdGtBZGp1c3RtZW50Kik7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TWFpbkZyYW1lU2Nyb2xsYmFyR3RrPiBjcmVhdGUoU2Nyb2xs
YmFyQ2xpZW50KiwgU2Nyb2xsYmFyT3JpZW50YXRpb24sIEd0a0FkanVzdG1lbnQqKTsKKworcHJv
dGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUaHVtYlBvc2l0aW9uKCk7CisgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVRodW1iUHJvcG9ydGlvbigpOworCitwcml2YXRlOgorICAgIE1haW5G
cmFtZVNjcm9sbGJhckd0ayhTY3JvbGxiYXJDbGllbnQqLCBTY3JvbGxiYXJPcmllbnRhdGlvbiwg
R3RrQWRqdXN0bWVudCopOworICAgIHN0YXRpYyB2b2lkIGd0a1ZhbHVlQ2hhbmdlZChHdGtBZGp1
c3RtZW50KiwgTWFpbkZyYW1lU2Nyb2xsYmFyR3RrKik7CisKKyAgICBQbGF0Zm9ybVJlZlB0cjxH
dGtBZGp1c3RtZW50PiBtX2FkanVzdG1lbnQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBTY3JvbGxi
YXJHdGtfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsVmlld0d0ay5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxWaWV3R3RrLmNwcAppbmRleCA1NjUxMjNj
YTkxNzk3NTQ2YzE2NjYyMGRlODc4NWQ3OGU4MjFkMDBmLi5lYjMxM2UwYzFjNGIwZDNjODEyNTVh
ZTM0M2RkMWQ4NjZiYmJmMzdjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3Jv
bGxWaWV3R3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxWaWV3R3RrLmNw
cApAQCAtMzksMTAgKzM5LDEwIEBACiAjaW5jbHVkZSAiR3RrVmVyc2lvbmluZy5oIgogI2luY2x1
ZGUgIkhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTWFpbkZy
YW1lU2Nyb2xsYmFyR3RrLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
TW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgotI2luY2x1ZGUg
IlNjcm9sbGJhckd0ay5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCiAKICNpbmNsdWRl
IDxndGsvZ3RrLmg+CkBAIC01Myw4ICs1Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9p
ZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybUluaXQoKQogewotICAgIG1faG9yaXpvbnRhbEFkanVzdG1l
bnQgPSAwOwotICAgIG1fdmVydGljYWxBZGp1c3RtZW50ID0gMDsKIH0KIAogdm9pZCBTY3JvbGxW
aWV3OjpwbGF0Zm9ybURlc3Ryb3koKQpAQCAtNjUsOSArNjMsOCBAQCB2b2lkIFNjcm9sbFZpZXc6
OnBsYXRmb3JtRGVzdHJveSgpCiAKIFBhc3NSZWZQdHI8U2Nyb2xsYmFyPiBTY3JvbGxWaWV3Ojpj
cmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7Ci0gICAg
Ly8gSWYgdGhpcyBpcyBhbiBpbnRlcmlvciBmcmFtZSBzY3JvbGxiYXIsIHdlIHdhbnQgdG8gY3Jl
YXRlIGEgc2Nyb2xsYmFyIHdpdGhvdXQKLSAgICAvLyBwYXNzaW5nIGEgR3RrQWRqdXN0bWVudC4g
VGhpcyB3aWxsIGNhdXNlIHRoZSBTY3JvbGxiYXIgdG8gY3JlYXRlIGEgbmF0aXZlIEdUSysKLSAg
ICAvLyBzY3JvbGxiYXIuCisgICAgLy8gSWYgdGhpcyBpcyBhbiBpbnRlcmlvciBmcmFtZSBzY3Jv
bGxiYXIsIHdlIHdhbnQgdG8gY3JlYXRlIGEgdG90YWxseSBmYWtlCisgICAgLy8gc2Nyb2xsYmFy
IHdpdGggbm8gR3RrQWRqdXN0bWVudCBiYWNraW5nIGl0LgogICAgIGlmIChwYXJlbnQoKSkKICAg
ICAgICAgcmV0dXJuIFNjcm9sbGJhcjo6Y3JlYXRlTmF0aXZlU2Nyb2xsYmFyKHRoaXMsIG9yaWVu
dGF0aW9uLCBSZWd1bGFyU2Nyb2xsYmFyKTsKIApAQCAtNzUsMTAgKzcyLDEwIEBAIFBhc3NSZWZQ
dHI8U2Nyb2xsYmFyPiBTY3JvbGxWaWV3OjpjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50
YXRpb24gb3JpZW50YXRpCiAgICAgLy8gYW5kIGRlZmVycyB0byBvdXIgR3RrQWRqdXN0bWVudCBm
b3IgYWxsIG9mIGl0cyBzdGF0ZS4gTm90ZSB0aGF0IHRoZSBHdGtBZGp1c3RtZW50CiAgICAgLy8g
bWF5IGJlIG51bGwgaGVyZS4KICAgICBpZiAob3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9s
bGJhcikKLSAgICAgICAgcmV0dXJuIFNjcm9sbGJhckd0azo6Y3JlYXRlU2Nyb2xsYmFyKHRoaXMs
IG9yaWVudGF0aW9uLCBtX2hvcml6b250YWxBZGp1c3RtZW50KTsKKyAgICAgICAgcmV0dXJuIE1h
aW5GcmFtZVNjcm9sbGJhckd0azo6Y3JlYXRlKHRoaXMsIG9yaWVudGF0aW9uLCBtX2hvcml6b250
YWxBZGp1c3RtZW50LmdldCgpKTsKIAogICAgIC8vIFZlcnRpY2FsU2Nyb2xsYmFyCi0gICAgcmV0
dXJuIFNjcm9sbGJhckd0azo6Y3JlYXRlU2Nyb2xsYmFyKHRoaXMsIG9yaWVudGF0aW9uLCBtX3Zl
cnRpY2FsQWRqdXN0bWVudCk7CisgICAgcmV0dXJuIE1haW5GcmFtZVNjcm9sbGJhckd0azo6Y3Jl
YXRlKHRoaXMsIG9yaWVudGF0aW9uLCBtX3ZlcnRpY2FsQWRqdXN0bWVudC5nZXQoKSk7CiB9CiAK
IC8qCkBAIC04OSwxNSArODYsMjEgQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRHdGtBZGp1c3RtZW50
cyhHdGtBZGp1c3RtZW50KiBoYWRqLCBHdGtBZGp1c3RtZW50KiB2YWRqLCBib28KIHsKICAgICBB
U1NFUlQoIWhhZGogPT0gIXZhZGopOwogCisgICAgLy8gSWYgdGhpcyBpcyBhIG5vbi1tYWluIGZy
YW1lIFNjcm9sbFZpZXcsIHdlIGRvIG5vdCB3YW50IHRvIHNldCB0aGUKKyAgICAvLyBtX2hvcml6
b250YWxBZGp1c3RtZW50cyAmIG1fdmVydGljYWxBZGp1c3RtZW50cyBtZW1iZXJzLiBBdCB0aGUg
c2FtZQorICAgIC8vIHRpbWUgd2Ugd2FudCB0byB0byBhbGxvdyBGcmFtZUxvYWRlckNsaWVudEd0
ay5jcHAgdG8gY2FsbCAKKyAgICAvLyBTY3JvbGxWaWV3OjpzZXRHdGtBZGp1c3RtZW50cygwLCAw
KSB1bmNvbmRpdGlvbmFsbHkuCisgICAgQVNTRVJUKCFwYXJlbnQoKSB8fCAhaGFkaik7CisKICAg
ICBtX2hvcml6b250YWxBZGp1c3RtZW50ID0gaGFkajsKICAgICBtX3ZlcnRpY2FsQWRqdXN0bWVu
dCA9IHZhZGo7CiAKICAgICBpZiAoIW1faG9yaXpvbnRhbEFkanVzdG1lbnQpIHsKLSAgICAgICAg
U2Nyb2xsYmFyR3RrKiBoU2Nyb2xsYmFyID0gcmVpbnRlcnByZXRfY2FzdDxTY3JvbGxiYXJHdGsq
Pihob3Jpem9udGFsU2Nyb2xsYmFyKCkpOworICAgICAgICBNYWluRnJhbWVTY3JvbGxiYXJHdGsq
IGhTY3JvbGxiYXIgPSByZWludGVycHJldF9jYXN0PE1haW5GcmFtZVNjcm9sbGJhckd0ayo+KGhv
cml6b250YWxTY3JvbGxiYXIoKSk7CiAgICAgICAgIGlmIChoU2Nyb2xsYmFyKQogICAgICAgICAg
ICAgaFNjcm9sbGJhci0+ZGV0YWNoQWRqdXN0bWVudCgpOwogCi0gICAgICAgIFNjcm9sbGJhckd0
ayogdlNjcm9sbGJhciA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2Nyb2xsYmFyR3RrKj4odmVydGljYWxT
Y3JvbGxiYXIoKSk7CisgICAgICAgIE1haW5GcmFtZVNjcm9sbGJhckd0ayogdlNjcm9sbGJhciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8TWFpbkZyYW1lU2Nyb2xsYmFyR3RrKj4odmVydGljYWxTY3JvbGxi
YXIoKSk7CiAgICAgICAgIGlmICh2U2Nyb2xsYmFyKQogICAgICAgICAgICAgdlNjcm9sbGJhci0+
ZGV0YWNoQWRqdXN0bWVudCgpOwogCkBAIC0xMDksMTEgKzExMiwxMSBAQCB2b2lkIFNjcm9sbFZp
ZXc6OnNldEd0a0FkanVzdG1lbnRzKEd0a0FkanVzdG1lbnQqIGhhZGosIEd0a0FkanVzdG1lbnQq
IHZhZGosIGJvbwogICAgIHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKHRydWUpOwogICAgIHNldEhh
c0hvcml6b250YWxTY3JvbGxiYXIodHJ1ZSk7CiAKLSAgICBTY3JvbGxiYXJHdGsqIGhTY3JvbGxi
YXIgPSByZWludGVycHJldF9jYXN0PFNjcm9sbGJhckd0ayo+KGhvcml6b250YWxTY3JvbGxiYXIo
KSk7Ci0gICAgaFNjcm9sbGJhci0+YXR0YWNoQWRqdXN0bWVudChtX2hvcml6b250YWxBZGp1c3Rt
ZW50KTsKKyAgICBNYWluRnJhbWVTY3JvbGxiYXJHdGsqIGhTY3JvbGxiYXIgPSByZWludGVycHJl
dF9jYXN0PE1haW5GcmFtZVNjcm9sbGJhckd0ayo+KGhvcml6b250YWxTY3JvbGxiYXIoKSk7Cisg
ICAgaFNjcm9sbGJhci0+YXR0YWNoQWRqdXN0bWVudChtX2hvcml6b250YWxBZGp1c3RtZW50Lmdl
dCgpKTsKIAotICAgIFNjcm9sbGJhckd0ayogdlNjcm9sbGJhciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
U2Nyb2xsYmFyR3RrKj4odmVydGljYWxTY3JvbGxiYXIoKSk7Ci0gICAgdlNjcm9sbGJhci0+YXR0
YWNoQWRqdXN0bWVudChtX3ZlcnRpY2FsQWRqdXN0bWVudCk7CisgICAgTWFpbkZyYW1lU2Nyb2xs
YmFyR3RrKiB2U2Nyb2xsYmFyID0gcmVpbnRlcnByZXRfY2FzdDxNYWluRnJhbWVTY3JvbGxiYXJH
dGsqPih2ZXJ0aWNhbFNjcm9sbGJhcigpKTsKKyAgICB2U2Nyb2xsYmFyLT5hdHRhY2hBZGp1c3Rt
ZW50KG1fdmVydGljYWxBZGp1c3RtZW50LmdldCgpKTsKIAogICAgIC8vIFdlIHVzZWQgdG8gcmVz
ZXQgZXZlcnl0aGluZyB0byAwIGhlcmUsIGJ1dCB3aGVuIHBhZ2UgY2FjaGUKICAgICAvLyBpcyBl
bmFibGVkIHdlIHJldXNlIEZyYW1lVmlld3MgdGhhdCBhcmUgY2FjaGVkLiBTaW5jZSB0aGVpcgpA
QCAtMTI0LDcgKzEyNyw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0R3RrQWRqdXN0bWVudHMoR3Rr
QWRqdXN0bWVudCogaGFkaiwgR3RrQWRqdXN0bWVudCogdmFkaiwgYm9vCiAgICAgLy8gYWJsZSB0
byByZXBvcnQgY29ycmVjdCB2YWx1ZXMuCiAKICAgICBpbnQgaG9yaXpvbnRhbFBhZ2VTdGVwID0g
bWF4KG1heDxpbnQ+KGZyYW1lUmVjdCgpLndpZHRoKCkgKiBTY3JvbGxiYXI6Om1pbkZyYWN0aW9u
VG9TdGVwV2hlblBhZ2luZygpLCBmcmFtZVJlY3QoKS53aWR0aCgpIC0gU2Nyb2xsYmFyOjptYXhP
dmVybGFwQmV0d2VlblBhZ2VzKCkpLCAxKTsKLSAgICBndGtfYWRqdXN0bWVudF9jb25maWd1cmUo
bV9ob3Jpem9udGFsQWRqdXN0bWVudCwKKyAgICBndGtfYWRqdXN0bWVudF9jb25maWd1cmUobV9o
b3Jpem9udGFsQWRqdXN0bWVudC5nZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzZXRWYWx1ZXMgPyAwIDogc2Nyb2xsT2Zmc2V0KCkud2lkdGgoKSwgMCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzZXRWYWx1ZXMgPyAwIDogY29udGVudHNTaXplKCkud2lkdGgo
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRWYWx1ZXMgPyAwIDogU2Nyb2xs
YmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpLApAQCAtMTMyLDcgKzEzNSw3IEBAIHZvaWQgU2Nyb2xs
Vmlldzo6c2V0R3RrQWRqdXN0bWVudHMoR3RrQWRqdXN0bWVudCogaGFkaiwgR3RrQWRqdXN0bWVu
dCogdmFkaiwgYm9vCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0VmFsdWVzID8g
MCA6IGZyYW1lUmVjdCgpLndpZHRoKCkpOwogCiAgICAgaW50IHZlcnRpY2FsUGFnZVN0ZXAgPSBt
YXgobWF4PGludD4oZnJhbWVSZWN0KCkuaGVpZ2h0KCkgKiBTY3JvbGxiYXI6Om1pbkZyYWN0aW9u
VG9TdGVwV2hlblBhZ2luZygpLCBmcmFtZVJlY3QoKS5oZWlnaHQoKSAtIFNjcm9sbGJhcjo6bWF4
T3ZlcmxhcEJldHdlZW5QYWdlcygpKSwgMSk7Ci0gICAgZ3RrX2FkanVzdG1lbnRfY29uZmlndXJl
KG1fdmVydGljYWxBZGp1c3RtZW50LAorICAgIGd0a19hZGp1c3RtZW50X2NvbmZpZ3VyZShtX3Zl
cnRpY2FsQWRqdXN0bWVudC5nZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
ZXRWYWx1ZXMgPyAwIDogc2Nyb2xsT2Zmc2V0KCkuaGVpZ2h0KCksIDAsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc2V0VmFsdWVzID8gMCA6IGNvbnRlbnRzU2l6ZSgpLmhlaWdodCgp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldFZhbHVlcyA/IDAgOiBTY3JvbGxi
YXI6OnBpeGVsc1BlckxpbmVTdGVwKCksCkBAIC0xNDIsNzIgKzE0NSw3MyBAQCB2b2lkIFNjcm9s
bFZpZXc6OnNldEd0a0FkanVzdG1lbnRzKEd0a0FkanVzdG1lbnQqIGhhZGosIEd0a0FkanVzdG1l
bnQqIHZhZGosIGJvbwogCiB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtQWRkQ2hpbGQoV2lkZ2V0
KiBjaGlsZCkKIHsKLSAgICBpZiAoIUdUS19JU19TT0NLRVQoY2hpbGQtPnBsYXRmb3JtV2lkZ2V0
KCkpKQotICAgICAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKGhvc3RXaW5kb3co
KS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpLCBjaGlsZC0+cGxhdGZvcm1XaWRnZXQoKSk7CiB9CiAK
IHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1SZW1vdmVDaGlsZChXaWRnZXQqIGNoaWxkKQogewot
ICAgIEd0a1dpZGdldCogcGFyZW50OwotCi0gICAgLy8gSG9zdFdpbmRvdyBjYW4gYmUgTlVMTCBo
ZXJlLiBJZiB0aGF0J3MgdGhlIGNhc2UKLSAgICAvLyBsZXQncyBncmFiIHRoZSBjaGlsZCdzIHBh
cmVudCBpbnN0ZWFkLgotICAgIGlmIChob3N0V2luZG93KCkpCi0gICAgICAgIHBhcmVudCA9IEdU
S19XSURHRVQoaG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSk7Ci0gICAgZWxzZQot
ICAgICAgICBwYXJlbnQgPSBHVEtfV0lER0VUKGd0a193aWRnZXRfZ2V0X3BhcmVudChjaGlsZC0+
cGxhdGZvcm1XaWRnZXQoKSkpOwotCi0gICAgaWYgKEdUS19JU19DT05UQUlORVIocGFyZW50KSAm
JiBwYXJlbnQgPT0gZ3RrX3dpZGdldF9nZXRfcGFyZW50KGNoaWxkLT5wbGF0Zm9ybVdpZGdldCgp
KSkKLSAgICAgICAgZ3RrX2NvbnRhaW5lcl9yZW1vdmUoR1RLX0NPTlRBSU5FUihwYXJlbnQpLCBj
aGlsZC0+cGxhdGZvcm1XaWRnZXQoKSk7CiB9CiAKIEludFJlY3QgU2Nyb2xsVmlldzo6dmlzaWJs
ZUNvbnRlbnRSZWN0KGJvb2wgaW5jbHVkZVNjcm9sbGJhcnMpIGNvbnN0CiB7Ci0gICAgaWYgKCFt
X2hvcml6b250YWxBZGp1c3RtZW50KQorICAgIC8vIElmIHdlIGFyZSBhbiBpbnRlcmlvciBmcmFt
ZSBzY3JvbGxiYXIgb3IgYXJlIGluIHNvbWUgc29ydCBvZiB0cmFuc2l0aW9uCisgICAgLy8gc3Rh
dGUsIGp1c3QgY2FsY3VsYXRlIG91ciBzaXplIGJhc2VkIG9uIHdoYXQgdGhlIEdUSysgdGhlbWUg
c2F5cyB0aGUKKyAgICAvLyBzY3JvbGxiYXIgd2lkdGggc2hvdWxkIGJlLgorICAgIGlmIChwYXJl
bnQoKSB8fCAhaG9zdFdpbmRvdygpIHx8ICFob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVu
dCgpKSB7CiAgICAgICAgIHJldHVybiBJbnRSZWN0KEludFBvaW50KG1fc2Nyb2xsT2Zmc2V0Lndp
ZHRoKCksIG1fc2Nyb2xsT2Zmc2V0LmhlaWdodCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAg
SW50U2l6ZShtYXgoMCwgd2lkdGgoKSAtICh2ZXJ0aWNhbFNjcm9sbGJhcigpICYmICFpbmNsdWRl
U2Nyb2xsYmFycyA/IHZlcnRpY2FsU2Nyb2xsYmFyKCktPndpZHRoKCkgOiAwKSksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWF4KDAsIGhlaWdodCgpIC0gKGhvcml6b250YWxTY3Jv
bGxiYXIoKSAmJiAhaW5jbHVkZVNjcm9sbGJhcnMgPyBob3Jpem9udGFsU2Nyb2xsYmFyKCktPmhl
aWdodCgpIDogMCkpKSk7CisgICAgfQogCi0gICAgLy8gTWFpbiBmcmFtZS4KKyAgICAvLyBXZSBk
b24ndCBoYXZlIGEgcGFyZW50LCBzbyB3ZSBhcmUgdGhlIG1haW4gZnJhbWUgYW5kIHRodXMgaGF2
ZQorICAgIC8vIGEgcGFyZW50IHdpZGdldCB3aGljaCB3ZSBjYW4gdXNlIHRvIG1lYXN1cmUgdGhl
IHZpc2libGUgcmVnaW9uLgogICAgIEd0a1dpZGdldCogbWVhc3VyZWRXaWRnZXQgPSBob3N0V2lu
ZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpOwotICAgIEd0a1dpZGdldCogcGFyZW50ID0gZ3Rr
X3dpZGdldF9nZXRfcGFyZW50KG1lYXN1cmVkV2lkZ2V0KTsKKyAgICBHdGtXaWRnZXQqIHBhcmVu
dFdpZGdldCA9IGd0a193aWRnZXRfZ2V0X3BhcmVudChtZWFzdXJlZFdpZGdldCk7CiAKICAgICAv
LyBXZSBtYXkgbm90IGJlIGluIGEgd2lkZ2V0IHRoYXQgZGlzcGxheXMgc2Nyb2xsYmFycywgYnV0
IHdlIG1heQogICAgIC8vIGhhdmUgb3RoZXIga2luZHMgb2YgZGVjb3JhdGlvbiB0aGF0IG1ha2Ug
dXMgc21hbGxlci4KLSAgICBpZiAocGFyZW50ICYmIGluY2x1ZGVTY3JvbGxiYXJzKQotICAgICAg
ICBtZWFzdXJlZFdpZGdldCA9IHBhcmVudDsKKyAgICBpZiAocGFyZW50V2lkZ2V0ICYmIGluY2x1
ZGVTY3JvbGxiYXJzKQorICAgICAgICBtZWFzdXJlZFdpZGdldCA9IHBhcmVudFdpZGdldDsKIAog
ICAgIEd0a0FsbG9jYXRpb24gYWxsb2NhdGlvbjsKLSNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAx
OCwgMCkKICAgICBndGtfd2lkZ2V0X2dldF9hbGxvY2F0aW9uKG1lYXN1cmVkV2lkZ2V0LCAmYWxs
b2NhdGlvbik7Ci0jZWxzZQotICAgIGFsbG9jYXRpb24gPSBtZWFzdXJlZFdpZGdldC0+YWxsb2Nh
dGlvbjsKLSNlbmRpZgogICAgIHJldHVybiBJbnRSZWN0KEludFBvaW50KG1fc2Nyb2xsT2Zmc2V0
LndpZHRoKCksIG1fc2Nyb2xsT2Zmc2V0LmhlaWdodCgpKSwKICAgICAgICAgICAgICAgICAgICBJ
bnRTaXplKGFsbG9jYXRpb24ud2lkdGgsIGFsbG9jYXRpb24uaGVpZ2h0KSk7CiB9CiAKLXZvaWQg
U2Nyb2xsVmlldzo6c2V0U2Nyb2xsYmFyTW9kZXMoU2Nyb2xsYmFyTW9kZSBob3Jpem9udGFsTW9k
ZSwgU2Nyb2xsYmFyTW9kZSB2ZXJ0aWNhbE1vZGUsIGJvb2wsIGJvb2wpCit2b2lkIFNjcm9sbFZp
ZXc6OnNldFNjcm9sbGJhck1vZGVzKFNjcm9sbGJhck1vZGUgaG9yaXpvbnRhbE1vZGUsIFNjcm9s
bGJhck1vZGUgdmVydGljYWxNb2RlLCBib29sIGhvcml6b250YWxMb2NrLCBib29sIHZlcnRpY2Fs
TG9jaykKIHsKLSAgICBpZiAoaG9yaXpvbnRhbE1vZGUgPT0gbV9ob3Jpem9udGFsU2Nyb2xsYmFy
TW9kZSAmJiB2ZXJ0aWNhbE1vZGUgPT0gbV92ZXJ0aWNhbFNjcm9sbGJhck1vZGUpCi0gICAgICAg
IHJldHVybjsKKyAgICAvLyBGSVhNRTogUmVzdHJ1Y3R1cmUgdGhlIFNjcm9sbFZpZXcgYWJzdHJh
Y3Rpb24gc28gdGhhdCB3ZSBkbyBub3QgaGF2ZSB0bworICAgIC8vIGNvcHkgdGhpcyB2ZXJiYXRp
bSBmcm9tIFNjcm9sbFZpZXcuY3BwLiBVbnRpbCB0aGVuLCB3ZSBzaG91bGQgbWFrZSBzdXJlIHRo
aXMKKyAgICAvLyBpcyBrZXB0IGluIHN5bmMuCisgICAgYm9vbCBuZWVkc1VwZGF0ZSA9IGZhbHNl
OworCisgICAgaWYgKGhvcml6b250YWxNb2RlICE9IGhvcml6b250YWxTY3JvbGxiYXJNb2RlKCkg
JiYgIW1faG9yaXpvbnRhbFNjcm9sbGJhckxvY2spIHsKKyAgICAgICAgbV9ob3Jpem9udGFsU2Ny
b2xsYmFyTW9kZSA9IGhvcml6b250YWxNb2RlOworICAgICAgICBuZWVkc1VwZGF0ZSA9IHRydWU7
CisgICAgfQorCisgICAgaWYgKHZlcnRpY2FsTW9kZSAhPSB2ZXJ0aWNhbFNjcm9sbGJhck1vZGUo
KSAmJiAhbV92ZXJ0aWNhbFNjcm9sbGJhckxvY2spIHsKKyAgICAgICAgbV92ZXJ0aWNhbFNjcm9s
bGJhck1vZGUgPSB2ZXJ0aWNhbE1vZGU7CisgICAgICAgIG5lZWRzVXBkYXRlID0gdHJ1ZTsKKyAg
ICB9CiAKLSAgICBtX2hvcml6b250YWxTY3JvbGxiYXJNb2RlID0gaG9yaXpvbnRhbE1vZGU7Ci0g
ICAgbV92ZXJ0aWNhbFNjcm9sbGJhck1vZGUgPSB2ZXJ0aWNhbE1vZGU7CisgICAgaWYgKGhvcml6
b250YWxMb2NrKQorICAgICAgICBzZXRIb3Jpem9udGFsU2Nyb2xsYmFyTG9jaygpOwogCi0gICAg
Ly8gV2UgZG9uJ3QgcmVhbGx5IGNhcmUgYWJvdXQgcmVwb3J0aW5nIHBvbGljeSBjaGFuZ2VzIG9u
IGZyYW1lcwotICAgIC8vIHRoYXQgaGF2ZSBubyBhZGp1c3RtZW50cyBhdHRhY2hlZCB0byB0aGVt
LgotICAgIGlmICghbV9ob3Jpem9udGFsQWRqdXN0bWVudCkgeworICAgIGlmICh2ZXJ0aWNhbExv
Y2spCisgICAgICAgIHNldFZlcnRpY2FsU2Nyb2xsYmFyTG9jaygpOworCisgICAgaWYgKG5lZWRz
VXBkYXRlKQogICAgICAgICB1cGRhdGVTY3JvbGxiYXJzKHNjcm9sbE9mZnNldCgpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KIAotICAgIGlmICghaXNGcmFtZVZpZXcoKSkKKyAgICAvLyBXZSBk
b24ndCBuZWVkIHRvIHJlcG9ydCBwb2xpY3kgY2hhbmdlcyBvbiBTY3JvbGxWaWV3J3MgdW5sZXNz
IHRoaXMKKyAgICAvLyBvbmUgaGFzIGFuIGFkanVzdG1lbnQgYXR0YWNoZWQgYW5kIGl0IGlzIGEg
bWFpbiBmcmFtZS4KKyAgICBpZiAoIW1faG9yaXpvbnRhbEFkanVzdG1lbnQgfHwgcGFyZW50KCkg
fHwgIWlzRnJhbWVWaWV3KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZvciBmcmFtZXMg
dGhhdCBkbyBoYXZlIGFkanVzdG1lbnRzIGF0dGFjaGVkLCB3ZSB3YW50IHRvIHJlcG9ydAogICAg
IC8vIHBvbGljeSBjaGFuZ2VzLCBzbyB0aGF0IHRoZXkgbWF5IGJlIGFwcGxpZWQgdG8gdGhlIHdp
ZGdldCB0bwotICAgIC8vIHdoaWNoIHRoZSBXZWJWaWV3IGhhcyBiZWVuIGFkZGVkLCBmb3IgaW5z
dGFuY2UuCisgICAgLy8gd2hpY2ggdGhlIFdlYlZpZXcncyBjb250YWluZXIgKGUuZy4gR3RrU2Ny
b2xsZWRXaW5kb3cpLgogICAgIGlmIChob3N0V2luZG93KCkpCiAgICAgICAgIGhvc3RXaW5kb3co
KS0+c2Nyb2xsYmFyc01vZGVEaWRDaGFuZ2UoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1Njcm9sbGJhckd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxi
YXJHdGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTFjNGZhMjhjM2JkN2Y1
MDAzOTVhNWE5YTAwN2M4OGZkN2ZlZTZiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhckd0ay5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwyNTMgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDcs
IDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgemVja2VAc2VsZmlzaC5vcmcKLSAqICBD
b3B5cmlnaHQgKEMpIDIwMTAgR3VzdGF2byBOb3JvbmhhIFNpbHZhIDxnbnNAZ25vbWUub3JnPgot
ICogIENvcHlyaWdodCAoQykgMjAxMCBDb2xsYWJvcmEgTHRkLgotICoKLSAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcm9sbGJhckd0
ay5oIgotCi0jaW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCi0jaW5jbHVkZSAiR3RrVmVyc2lvbmluZy5oIgotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNp
bmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgotCi0jaW5jbHVkZSA8Z3RrL2d0ay5oPgotCi11c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotUGFzc1JlZlB0cjxTY3JvbGxiYXI+IFNjcm9sbGJhcjo6
Y3JlYXRlTmF0aXZlU2Nyb2xsYmFyKFNjcm9sbGJhckNsaWVudCogY2xpZW50LCBTY3JvbGxiYXJP
cmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsYmFyQ29udHJvbFNpemUgc2l6ZSkKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFNjcm9sbGJhckd0ayhjbGllbnQsIG9yaWVudGF0aW9uLCBz
aXplKSk7Ci19Ci0KLVBhc3NSZWZQdHI8U2Nyb2xsYmFyR3RrPiBTY3JvbGxiYXJHdGs6OmNyZWF0
ZVNjcm9sbGJhcihTY3JvbGxiYXJDbGllbnQqIGNsaWVudCwgU2Nyb2xsYmFyT3JpZW50YXRpb24g
b3JpZW50YXRpb24sIEd0a0FkanVzdG1lbnQqIGFkaikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFNjcm9sbGJhckd0ayhjbGllbnQsIG9yaWVudGF0aW9uLCBhZGopKTsKLX0KLQotc3RhdGlj
IGdib29sZWFuIGd0a1Njcm9sbEV2ZW50Q2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2
ZW50U2Nyb2xsKiBldmVudCwgU2Nyb2xsYmFyR3RrKikKLXsKLSAgICAvKiBTY3JvbGwgb25seSBp
ZiBvdXIgcGFyZW50IHJlamVjdHMgdGhlIHNjcm9sbCBldmVudC4gVGhlIHJhdGlvbmFsZSBmb3IK
LSAgICAgKiB0aGlzIGlzIHRoYXQgd2Ugd2FudCB0aGUgbWFpbiBmcmFtZSB0byBzY3JvbGwgd2hl
biB3ZSBtb3ZlIHRoZSBtb3VzZQotICAgICAqIHdoZWVsIG92ZXIgYSBjaGlsZCBzY3JvbGxiYXIg
aW4gbW9zdCBjYXNlcy4gKi8KLSAgICByZXR1cm4gZ3RrX3dpZGdldF9ldmVudChndGtfd2lkZ2V0
X2dldF9wYXJlbnQod2lkZ2V0KSwgcmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGV2ZW50KSk7
Ci19Ci0KLVNjcm9sbGJhckd0azo6U2Nyb2xsYmFyR3RrKFNjcm9sbGJhckNsaWVudCogY2xpZW50
LCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKQotICAgIDogU2Nyb2xsYmFy
KGNsaWVudCwgb3JpZW50YXRpb24sIGNvbnRyb2xTaXplKQotICAgICwgbV9hZGp1c3RtZW50KEdU
S19BREpVU1RNRU5UKGd0a19hZGp1c3RtZW50X25ldygwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wKSkpCi17Ci0gICAgR3RrV2lkZ2V0KiBzY3JvbGxCYXIgPSBvcmllbnRhdGlvbiA9PSBIb3Jp
em9udGFsU2Nyb2xsYmFyID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0a19oc2Nyb2xs
YmFyX25ldyhtX2FkanVzdG1lbnQpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX3Zz
Y3JvbGxiYXJfbmV3KG1fYWRqdXN0bWVudCk7Ci0gICAgZ3RrX3dpZGdldF9zaG93KHNjcm9sbEJh
cik7Ci0gICAgZ19vYmplY3RfcmVmKG1fYWRqdXN0bWVudCk7Ci0gICAgZ19zaWduYWxfY29ubmVj
dChtX2FkanVzdG1lbnQsICJ2YWx1ZS1jaGFuZ2VkIiwgR19DQUxMQkFDSyhTY3JvbGxiYXJHdGs6
Omd0a1ZhbHVlQ2hhbmdlZCksIHRoaXMpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc2Nyb2xsQmFy
LCAic2Nyb2xsLWV2ZW50IiwgR19DQUxMQkFDSyhndGtTY3JvbGxFdmVudENhbGxiYWNrKSwgdGhp
cyk7Ci0KLSAgICBzZXRQbGF0Zm9ybVdpZGdldChzY3JvbGxCYXIpOwotCi0gICAgLyoKLSAgICAg
KiBhc3NpZ24gYSBzYW5lIGRlZmF1bHQgd2lkdGggYW5kIGhlaWdodCB0byB0aGUgU2Nyb2xsYmFy
LCBvdGhlcndpc2UKLSAgICAgKiB3ZSB3aWxsIGVuZCB1cCB3aXRoIGEgMCB3aWR0aCBzY3JvbGxi
YXIuCi0gICAgICovCi0gICAgcmVzaXplKFNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSgpLT5z
Y3JvbGxiYXJUaGlja25lc3MoKSwKLSAgICAgICAgICAgU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRo
ZW1lKCktPnNjcm9sbGJhclRoaWNrbmVzcygpKTsKLX0KLQotLy8gQ3JlYXRlIGEgU2Nyb2xsYmFy
R3RrIG9uIHRvcCBvZiBhbiBleGlzdGluZyBHdGtBZGp1c3RtZW50IGJ1dCBkbyBub3QgY3JlYXRl
IGEKLS8vIEd0a1Njcm9sbGJhciBvbiB0b3Agb2YgdGhpcyBhZGp1c3RtZW50LiBUaGUgZ29hbCBp
cyB0byBoYXZlIGEgV2ViQ29yZTo6U2Nyb2xsYmFyCi0vLyB0aGF0IHdpbGwgbWFuaXB1bGF0ZSB0
aGUgR3RrQWRqdXN0bWVudCBwcm9wZXJ0aWVzLCB3aWxsIHJlYWN0IHRvIHRoZSBjaGFuZ2VkCi0v
LyB2YWx1ZSBidXQgd2lsbCBub3QgY29uc3VtZSBhbnkgc3BhY2Ugb24gdGhlIHNjcmVlbiBhbmQg
d2lsbCBub3QgYmUgcGFpbnRlZAotLy8gYXQgYWxsLiBJdCBpcyBhY2hpZXZlZCBieSBub3QgY2Fs
bGluZyBzZXRQbGF0Zm9ybVdpZGdldC4KLVNjcm9sbGJhckd0azo6U2Nyb2xsYmFyR3RrKFNjcm9s
bGJhckNsaWVudCogY2xpZW50LCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgR3Rr
QWRqdXN0bWVudCogYWRqdXN0bWVudCkKLSAgICA6IFNjcm9sbGJhcihjbGllbnQsIG9yaWVudGF0
aW9uLCBSZWd1bGFyU2Nyb2xsYmFyKQotICAgICwgbV9hZGp1c3RtZW50KGFkanVzdG1lbnQpCi17
Ci0gICAgaWYgKG1fYWRqdXN0bWVudCkgewotICAgICAgICBnX29iamVjdF9yZWYobV9hZGp1c3Rt
ZW50KTsKLSAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX2FkanVzdG1lbnQsICJ2YWx1ZS1jaGFu
Z2VkIiwgR19DQUxMQkFDSyhTY3JvbGxiYXJHdGs6Omd0a1ZhbHVlQ2hhbmdlZCksIHRoaXMpOwot
ICAgIH0KLQotICAgIC8vIFdlIGhhdmUgbm90aGluZyB0byBzaG93IGFzIHdlIGFyZSBzb2xlbHkg
b3BlcmF0aW5nIG9uIHRoZSBHdGtBZGp1c3RtZW50Ci0gICAgcmVzaXplKDAsIDApOwotfQotCi1T
Y3JvbGxiYXJHdGs6On5TY3JvbGxiYXJHdGsoKQotewotICAgIGlmIChtX2FkanVzdG1lbnQpCi0g
ICAgICAgIGRldGFjaEFkanVzdG1lbnQoKTsKLX0KLQotdm9pZCBTY3JvbGxiYXJHdGs6OmF0dGFj
aEFkanVzdG1lbnQoR3RrQWRqdXN0bWVudCogYWRqdXN0bWVudCkKLXsKLSAgICBpZiAocGxhdGZv
cm1XaWRnZXQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fYWRqdXN0bWVudCkKLSAg
ICAgICAgZGV0YWNoQWRqdXN0bWVudCgpOwotCi0gICAgbV9hZGp1c3RtZW50ID0gYWRqdXN0bWVu
dDsKLQotICAgIGlmIChtX2FkanVzdG1lbnQpIHsKLSAgICAgICAgZ19vYmplY3RfcmVmKG1fYWRq
dXN0bWVudCk7Ci0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9hZGp1c3RtZW50LCAidmFsdWUt
Y2hhbmdlZCIsIEdfQ0FMTEJBQ0soU2Nyb2xsYmFyR3RrOjpndGtWYWx1ZUNoYW5nZWQpLCB0aGlz
KTsKLSAgICB9Ci0KLSAgICB1cGRhdGVUaHVtYlByb3BvcnRpb24oKTsKLSAgICB1cGRhdGVUaHVt
YlBvc2l0aW9uKCk7Ci19Ci0KLXZvaWQgU2Nyb2xsYmFyR3RrOjpkZXRhY2hBZGp1c3RtZW50KCkK
LXsKLSAgICBpZiAoIW1fYWRqdXN0bWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ19zaWdu
YWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKEdfT0JKRUNUKG1fYWRqdXN0bWVudCksIChn
cG9pbnRlcilTY3JvbGxiYXJHdGs6Omd0a1ZhbHVlQ2hhbmdlZCwgdGhpcyk7Ci0KLSAgICAvLyBG
b3IgdGhlIGNhc2Ugd2hlcmUgd2Ugb25seSBvcGVyYXRlIG9uIHRoZSBHdGtBZGp1c3RtZW50IGl0
IGlzIGJlc3QgdG8KLSAgICAvLyByZXNldCB0aGUgdmFsdWVzIHNvIHRoYXQgdGhlIHN1cnJvdW5k
aW5nIHNjcm9sbGJhciBnZXRzIHVwZGF0ZWQsIG9yCi0gICAgLy8gZS5nLiBmb3IgYSBHdGtTY3Jv
bGxlZFdpbmRvdyB0aGUgc2Nyb2xsYmFyIGdldHMgaGlkZGVuLgotICAgIGd0a19hZGp1c3RtZW50
X2NvbmZpZ3VyZShtX2FkanVzdG1lbnQsIDAsIDAsIDAsIDAsIDAsIDApOwotCi0gICAgZ19vYmpl
Y3RfdW5yZWYobV9hZGp1c3RtZW50KTsKLSAgICBtX2FkanVzdG1lbnQgPSAwOwotfQotCi1JbnRQ
b2ludCBTY3JvbGxiYXJHdGs6OmdldExvY2F0aW9uSW5QYXJlbnRXaW5kb3coY29uc3QgSW50UmVj
dCYgcmVjdCkKLXsKLSAgICBJbnRQb2ludCBsb2M7Ci0KLSAgICBpZiAocGFyZW50KCktPmlzU2Ny
b2xsVmlld1Njcm9sbGJhcih0aGlzKSkKLSAgICAgICAgbG9jID0gcGFyZW50KCktPmNvbnZlcnRU
b0NvbnRhaW5pbmdXaW5kb3cocmVjdC5sb2NhdGlvbigpKTsKLSAgICBlbHNlCi0gICAgICAgIGxv
YyA9IHBhcmVudCgpLT5jb250ZW50c1RvV2luZG93KHJlY3QubG9jYXRpb24oKSk7Ci0KLSAgICBy
ZXR1cm4gbG9jOwotfQotCi12b2lkIFNjcm9sbGJhckd0azo6ZnJhbWVSZWN0c0NoYW5nZWQoKQot
ewotICAgIGlmICghcGFyZW50KCkgfHwgIXBsYXRmb3JtV2lkZ2V0KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIEludFBvaW50IGxvYyA9IGdldExvY2F0aW9uSW5QYXJlbnRXaW5kb3coZnJhbWVS
ZWN0KCkpOwotCi0gICAgLy8gRG9uJ3QgYWxsb3cgdGhlIGFsbG9jYXRpb24gc2l6ZSB0byBiZSBu
ZWdhdGl2ZQotICAgIEludFNpemUgc3ogPSBmcmFtZVJlY3QoKS5zaXplKCk7Ci0gICAgc3ouY2xh
bXBOZWdhdGl2ZVRvWmVybygpOwotCi0gICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyBs
b2MueCgpLCBsb2MueSgpLCBzei53aWR0aCgpLCBzei5oZWlnaHQoKSB9OwotICAgIGd0a193aWRn
ZXRfc2l6ZV9hbGxvY2F0ZShwbGF0Zm9ybVdpZGdldCgpLCAmYWxsb2NhdGlvbik7Ci19Ci0KLXZv
aWQgU2Nyb2xsYmFyR3RrOjp1cGRhdGVUaHVtYlBvc2l0aW9uKCkKLXsKLSAgICBpZiAoIW1fYWRq
dXN0bWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGd0a19hZGp1c3RtZW50X2dldF92
YWx1ZShtX2FkanVzdG1lbnQpICE9IG1fY3VycmVudFBvcykKLSAgICAgICAgZ3RrX2FkanVzdG1l
bnRfc2V0X3ZhbHVlKG1fYWRqdXN0bWVudCwgbV9jdXJyZW50UG9zKTsKLX0KLQotdm9pZCBTY3Jv
bGxiYXJHdGs6OnVwZGF0ZVRodW1iUHJvcG9ydGlvbigpCi17Ci0gICAgaWYgKCFtX2FkanVzdG1l
bnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGd0a19hZGp1c3RtZW50X2NvbmZpZ3VyZShtX2Fk
anVzdG1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0a19hZGp1c3RtZW50X2dl
dF92YWx1ZShtX2FkanVzdG1lbnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndGtf
YWRqdXN0bWVudF9nZXRfbG93ZXIobV9hZGp1c3RtZW50KSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV90b3RhbFNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGlu
ZVN0ZXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFnZVN0ZXAsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fdmlzaWJsZVNpemUpOwotfQotCi12b2lkIFNjcm9sbGJh
ckd0azo6c2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgV2lkZ2V0Ojpz
ZXRGcmFtZVJlY3QocmVjdCk7Ci0gICAgZnJhbWVSZWN0c0NoYW5nZWQoKTsKLX0KLQotdm9pZCBT
Y3JvbGxiYXJHdGs6Omd0a1ZhbHVlQ2hhbmdlZChHdGtBZGp1c3RtZW50KiwgU2Nyb2xsYmFyR3Rr
KiB0aGF0KQotewotICAgIHRoYXQtPnNldFZhbHVlKHN0YXRpY19jYXN0PGludD4oZ3RrX2FkanVz
dG1lbnRfZ2V0X3ZhbHVlKHRoYXQtPm1fYWRqdXN0bWVudCkpKTsKLX0KLQotdm9pZCBTY3JvbGxi
YXJHdGs6OnNldEVuYWJsZWQoYm9vbCBzaG91bGRFbmFibGUpCi17Ci0gICAgaWYgKGVuYWJsZWQo
KSA9PSBzaG91bGRFbmFibGUpCi0gICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgU2Nyb2xs
YmFyOjpzZXRFbmFibGVkKHNob3VsZEVuYWJsZSk7Ci0gICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkp
IAotICAgICAgICBndGtfd2lkZ2V0X3NldF9zZW5zaXRpdmUocGxhdGZvcm1XaWRnZXQoKSwgc2hv
dWxkRW5hYmxlKTsKLX0KLQotLyoKLSAqIFN0cmF0ZWd5IHRvIHBhaW50aW5nIGEgV2lkZ2V0Ogot
ICogIDEuKSBkbyBub3QgcGFpbnQgaWYgdGhlcmUgaXMgbm8gR3RrV2lkZ2V0IHNldAotICogIDIu
KSBXZSBhc3N1bWUgdGhhdCB0aGUgd2lkZ2V0IGhhcyBubyB3aW5kb3cgYW5kIHRoYXQgZnJhbWVS
ZWN0c0NoYW5nZWQgcG9zaXRpb25lZAotICogICAgICB0aGUgd2lkZ2V0IGNvcnJlY3RseS4gQVRN
IHdlIGRvIG5vdCBob25vciB0aGUgR3JhcGhpY3NDb250ZXh0IHRyYW5zbGF0aW9uLgotICovCi12
b2lkIFNjcm9sbGJhckd0azo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiByZWN0KQotewotICAgIGlmICghcGxhdGZvcm1XaWRnZXQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKCFjb250ZXh0LT5nZGtFeHBvc2VFdmVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBHdGtXaWRnZXQqIHdpZGdldCA9IHBsYXRmb3JtV2lkZ2V0KCk7Ci0gICAgQVNT
RVJUKCFndGtfd2lkZ2V0X2dldF9oYXNfd2luZG93KHdpZGdldCkpOwotCi0gICAgR2RrRXZlbnQq
IGV2ZW50ID0gZ2RrX2V2ZW50X25ldyhHREtfRVhQT1NFKTsKLSAgICBldmVudC0+ZXhwb3NlID0g
KmNvbnRleHQtPmdka0V4cG9zZUV2ZW50KCk7Ci0gICAgZXZlbnQtPmV4cG9zZS5hcmVhID0gc3Rh
dGljX2Nhc3Q8R2RrUmVjdGFuZ2xlPihyZWN0KTsKLQotICAgIEludFBvaW50IGxvYyA9IGdldExv
Y2F0aW9uSW5QYXJlbnRXaW5kb3cocmVjdCk7Ci0KLSAgICBldmVudC0+ZXhwb3NlLmFyZWEueCA9
IGxvYy54KCk7Ci0gICAgZXZlbnQtPmV4cG9zZS5hcmVhLnkgPSBsb2MueSgpOwotCi0jaWZkZWYg
R1RLX0FQSV9WRVJTSU9OXzIKLSAgICBldmVudC0+ZXhwb3NlLnJlZ2lvbiA9IGdka19yZWdpb25f
cmVjdGFuZ2xlKCZldmVudC0+ZXhwb3NlLmFyZWEpOwotI2Vsc2UKLSAgICBldmVudC0+ZXhwb3Nl
LnJlZ2lvbiA9IGNhaXJvX3JlZ2lvbl9jcmVhdGVfcmVjdGFuZ2xlKCZldmVudC0+ZXhwb3NlLmFy
ZWEpOwotI2VuZGlmCi0KLSAgICAvKgotICAgICAqIFRoaXMgd2lsbCBiZSB1bnJlZidlZCBieSBn
ZGtfZXZlbnRfZnJlZS4KLSAgICAgKi8KLSAgICBnX29iamVjdF9yZWYoZXZlbnQtPmV4cG9zZS53
aW5kb3cpOwotCi0gICAgLyoKLSAgICAgKiBJZiB3ZSBhcmUgZ29pbmcgdG8gcGFpbnQgZG8gdGhl
IHRyYW5zbGF0aW9uIGFuZCBHdGtBbGxvY2F0aW9uIG1hbmlwdWxhdGlvbi4KLSAgICAgKi8KLSNp
ZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgotICAgIGlmICghZ2RrX3JlZ2lvbl9lbXB0eShldmVudC0+
ZXhwb3NlLnJlZ2lvbikpCi0jZWxzZQotICAgIGlmICghY2Fpcm9fcmVnaW9uX2lzX2VtcHR5KGV2
ZW50LT5leHBvc2UucmVnaW9uKSkKLSNlbmRpZgotICAgICAgICBndGtfd2lkZ2V0X3NlbmRfZXhw
b3NlKHdpZGdldCwgZXZlbnQpOwotCi0gICAgZ2RrX2V2ZW50X2ZyZWUoZXZlbnQpOwotfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyR3RrLmggYi9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9TY3JvbGxiYXJHdGsuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MWEwNzhjOWVkODZkMmU3M2U1Yzg2YjdmNGQyZWM4YzIyNjQ5OTQ4Ni4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3Jv
bGxiYXJHdGsuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgU2Nyb2xsYmFyR3RrX2gKLSNkZWZpbmUgU2Nyb2xsYmFyR3RrX2gKLQot
I2luY2x1ZGUgIlNjcm9sbGJhci5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2Nyb2xsYmFyR3RrIDogcHVibGljIFNjcm9sbGJh
ciB7Ci1wdWJsaWM6Ci0gICAgZnJpZW5kIGNsYXNzIFNjcm9sbGJhcjsKLSAgICBmcmllbmQgY2xh
c3MgU2Nyb2xsVmlldzsKLSAgICB+U2Nyb2xsYmFyR3RrKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
c2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOwotICAgIAotICAgIHZpcnR1YWwgYm9vbCBo
YW5kbGVNb3VzZU1vdmVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVNb3VzZU91dEV2ZW50KGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGhhbmRs
ZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgdmlydHVhbCB2b2lkIHNl
dEVuYWJsZWQoYm9vbCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZnJhbWVSZWN0c0NoYW5nZWQoKTsK
LQotcHJvdGVjdGVkOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcm9sbGJhckd0az4gY3JlYXRl
U2Nyb2xsYmFyKFNjcm9sbGJhckNsaWVudCogY2xpZW50LCBTY3JvbGxiYXJPcmllbnRhdGlvbiBv
cmllbnRhdGlvbiwgR3RrQWRqdXN0bWVudCopOwotCi0gICAgU2Nyb2xsYmFyR3RrKFNjcm9sbGJh
ckNsaWVudCosIFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxiYXJDb250cm9sU2l6ZSk7Ci0g
ICAgU2Nyb2xsYmFyR3RrKFNjcm9sbGJhckNsaWVudCosIFNjcm9sbGJhck9yaWVudGF0aW9uLCBH
dGtBZGp1c3RtZW50Kik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGh1bWJQb3NpdGlvbigp
OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUaHVtYlByb3BvcnRpb24oKTsKLQotICAgIHZvaWQg
ZGV0YWNoQWRqdXN0bWVudCgpOwotICAgIHZvaWQgYXR0YWNoQWRqdXN0bWVudChHdGtBZGp1c3Rt
ZW50Kik7Ci1wcml2YXRlOgotICAgIHN0YXRpYyB2b2lkIGd0a1ZhbHVlQ2hhbmdlZChHdGtBZGp1
c3RtZW50KiwgU2Nyb2xsYmFyR3RrKik7Ci0gICAgSW50UG9pbnQgZ2V0TG9jYXRpb25JblBhcmVu
dFdpbmRvdyhjb25zdCBJbnRSZWN0Jik7Ci0gICAgR3RrQWRqdXN0bWVudCogbV9hZGp1c3RtZW50
OwotfTsKLQotfQotCi0jZW5kaWYgLy8gU2Nyb2xsYmFyR3RrX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>