<?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>164205</bug_id>
          
          <creation_ts>2016-10-30 08:46:58 -0700</creation_ts>
          <short_desc>[GTK] Remove support for geoclue1</short_desc>
          <delta_ts>2017-08-10 06:59:51 -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>Other</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>164170</dependson>
    
    <dependson>175426</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>hw1008.kim</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1246212</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-10-30 08:46:58 -0700</bug_when>
    <thetext>Bug #164170 is correct, but adds an unnecessary runtime dependency on libgeoclue when built with geoclue2. Previously, we were conditionally linked to libgeoclue only if using geoclue1, because the pkg-config name in the FindGeoclue2 module was wrong, pointing to the .pc file that provides no cflags or ldflags for the library, only a couple pkg-config variables for finding the D-Bus service. So the GEOCLUE_LIBRARIES CMake variable was previously (incorrectly) empty, and that worked because we don&apos;t actually use the library, only the D-Bus interface.

Although Ubuntu has until recently been building WebKit with geoclue1, it actually has had support for geoclue2 for years, so we don&apos;t need to keep the obsolete geoclue1 stuff around anymore. Removing geoclue1 support means we can get rid of the cruft for linking to libgeoclue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246233</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-10-30 10:48:09 -0700</bug_when>
    <thetext>So I&apos;m wrong, GEOCLUE2_LIBRARIES and GEOCLUE2_INCLUDE_DIRS are separate CMake variables from the Geoclue1 versions, so there&apos;s no unnecessary dependency and no particular reason to drive removing Geoclue1 support. We should do it eventually anyway, so I&apos;ll leave this bug open.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337126</commentid>
    <comment_count>2</comment_count>
      <attachid>317740</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-08-09 14:13:06 -0700</bug_when>
    <thetext>Created attachment 317740
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337317</commentid>
    <comment_count>3</comment_count>
      <attachid>317740</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-09 22:58:29 -0700</bug_when>
    <thetext>Comment on attachment 317740
Patch

Clearing flags on attachment: 317740

Committed r220515: &lt;http://trac.webkit.org/changeset/220515&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337318</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-09 22:58:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317740</attachid>
            <date>2017-08-09 14:13:06 -0700</date>
            <delta_ts>2017-08-09 22:58:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164205-20170809161305.patch</filename>
            <type>text/plain</type>
            <size>32613</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZmNTNjMjQ2NmU3MGU0
MTg2NDBlNTVhZjRmMjY2OWZjZTY3OTc5Yi4uNDU1MmU5YjhlZWZhNWY5NGRkNjU0MTA5ZmJkNWIx
YjAyYmM2ZTFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA4LTA5ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBS
ZW1vdmUgc3VwcG9ydCBmb3IgZ2VvY2x1ZTEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NDIwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogcGxhdGZv
cm0vZ2VvY2x1ZS9HZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dlb2NsdWUvR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUxLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9nZW9jbHVlL0dlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlMi5jcHA6
IFJlbW92ZWQuCisKIDIwMTctMDgtMDkgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAK
ICAgICAgICAgW1JlcGFpbnQgZnJvbSBMYXlvdXQgUmVtb3ZhbF0gTW92ZSBsYXllciByZXBhaW50
IHJlY3RzIGludG8gYSBtYXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RL
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggMWRjZWJjODdl
YTFiMWQ3MWY2ODgwZjM1YzZlM2QzMTQyYTcyY2U3Yi4uY2EwOTgxMjU5NDBmMThiOWFlYjU1OGE4
OGIxZWFlZDZlYzU3ZTQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTcxLDggKzcx
LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9nYW1lcGFk
L2dsaWIvR2FtZXBhZHNHbGliLmNwcAogCi0gICAgcGxhdGZvcm0vZ2VvY2x1ZS9HZW9sb2NhdGlv
blByb3ZpZGVyR2VvY2x1ZTEuY3BwCi0gICAgcGxhdGZvcm0vZ2VvY2x1ZS9HZW9sb2NhdGlvblBy
b3ZpZGVyR2VvY2x1ZTIuY3BwCisgICAgcGxhdGZvcm0vZ2VvY2x1ZS9HZW9sb2NhdGlvblByb3Zp
ZGVyR2VvY2x1ZS5jcHAKIAogICAgIHBsYXRmb3JtL2dsaWIvRXZlbnRMb29wR2xpYi5jcHAKICAg
ICBwbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtMTgxLDcgKzE4MCw3IEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVQbGF0Zm9ybUdUS19TT1VSQ0VTCiAgICAgcmVuZGVyaW5nL1JlbmRl
clRoZW1lR3RrLmNwcAogKQogCi1pZiAoVVNFX0dFT0NMVUUyKQoraWYgKEVOQUJMRV9HRU9MT0NB
VElPTikKICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX0RFUklWRURfU09VUkNFUwogICAgICAgICAk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vR2VvY2x1ZTJJbnRlcmZhY2UuYwogICAgICkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlb2NsdWUvR2VvbG9jYXRpb25Q
cm92aWRlckdlb2NsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VvY2x1ZS9HZW9s
b2NhdGlvblByb3ZpZGVyR2VvY2x1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDViYzY3MmI1MjViNzY4MDY1
Y2U2MmMxN2E2MjBjOGVhY2UyY2ZlYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlb2NsdWUvR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUuY3BwCkBAIC0wLDAg
KzEsMjA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3Mu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJHZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZS5oIgorCisjaWYgRU5BQkxFKEdFT0xP
Q0FUSU9OKQorCisjaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGllcy5oPgorI2luY2x1ZGUg
PHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisK
K2NvbnN0IGNoYXIqIGdHZW9jbHVlQnVzTmFtZSA9ICJvcmcuZnJlZWRlc2t0b3AuR2VvQ2x1ZTIi
OworY29uc3QgY2hhciogZ0dlb2NsdWVNYW5hZ2VyUGF0aCA9ICIvb3JnL2ZyZWVkZXNrdG9wL0dl
b0NsdWUyL01hbmFnZXIiOworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwordHlwZWRlZiBl
bnVtIHsKKyAgICBHZW9jbHVlQWNjdXJhY3lMZXZlbENvdW50cnkgPSAxLAorICAgIEdlb2NsdWVB
Y2N1cmFjeUxldmVsQ2l0eSA9IDQsCisgICAgR2VvY2x1ZUFjY3VyYWN5TGV2ZWxTdHJlZXQgPSA2
LAorICAgIEdlb2NsdWVBY2N1cmFjeUxldmVsRXhhY3QgPSA4LAorfSBHZW9jbHVlQWNjdXJhY3lM
ZXZlbDsKKworR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWU6Okdlb2xvY2F0aW9uUHJvdmlkZXJH
ZW9jbHVlKEdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlQ2xpZW50KiBjbGllbnQpCisgICAgOiBt
X2NsaWVudChjbGllbnQpCisgICAgLCBtX2xhdGl0dWRlKDApCisgICAgLCBtX2xvbmdpdHVkZSgw
KQorICAgICwgbV9hbHRpdHVkZSgwKQorICAgICwgbV9hY2N1cmFjeSgwKQorICAgICwgbV9hbHRp
dHVkZUFjY3VyYWN5KDApCisgICAgLCBtX3RpbWVzdGFtcCgwKQorICAgICwgbV9lbmFibGVIaWdo
QWNjdXJhY3koZmFsc2UpCisgICAgLCBtX2lzVXBkYXRpbmcoZmFsc2UpCit7CisgICAgQVNTRVJU
KG1fY2xpZW50KTsKK30KKworR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWU6On5HZW9sb2NhdGlv
blByb3ZpZGVyR2VvY2x1ZSgpCit7CisgICAgc3RvcFVwZGF0aW5nKCk7Cit9CisKK3ZvaWQgR2Vv
bG9jYXRpb25Qcm92aWRlckdlb2NsdWU6OnN0YXJ0VXBkYXRpbmcoKQoreworICAgIG1faXNVcGRh
dGluZyA9IHRydWU7CisKKyAgICBpZiAoIW1fbWFuYWdlclByb3h5KSB7CisgICAgICAgIGdlb2Ns
dWVfbWFuYWdlcl9wcm94eV9uZXdfZm9yX2J1cyhHX0JVU19UWVBFX1NZU1RFTSwgR19EQlVTX1BS
T1hZX0ZMQUdTX05PTkUsIGdHZW9jbHVlQnVzTmFtZSwgZ0dlb2NsdWVNYW5hZ2VyUGF0aCwgbnVs
bHB0ciwKKyAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4o
Y3JlYXRlR2VvY2x1ZU1hbmFnZXJQcm94eUNhbGxiYWNrKSwgdGhpcyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBnZW9jbHVlX21hbmFnZXJfY2FsbF9nZXRfY2xpZW50KG1fbWFuYWdl
clByb3h5LmdldCgpLCBudWxscHRyLCByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJh
Y2s+KGdldEdlb2NsdWVDbGllbnRDYWxsYmFjayksIHRoaXMpOworfQorCit2b2lkIEdlb2xvY2F0
aW9uUHJvdmlkZXJHZW9jbHVlOjpzdG9wVXBkYXRpbmcoKQoreworICAgIGlmIChtX2NsaWVudFBy
b3h5KSB7CisgICAgICAgIGdlb2NsdWVfY2xpZW50X2NhbGxfc3RvcChtX2NsaWVudFByb3h5Lmdl
dCgpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxl
cnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fY2xpZW50UHJveHkuZ2V0KCksIHJlaW50ZXJwcmV0X2Nh
c3Q8Z3BvaW50ZXI+KGxvY2F0aW9uVXBkYXRlZENhbGxiYWNrKSwgdGhpcyk7CisgICAgICAgIG1f
Y2xpZW50UHJveHkgPSBudWxscHRyOworICAgIH0KKyAgICBtX2lzVXBkYXRpbmcgPSBmYWxzZTsK
K30KKwordm9pZCBHZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZTo6c2V0RW5hYmxlSGlnaEFjY3Vy
YWN5KGJvb2wgZW5hYmxlKQoreworICAgIGlmIChtX2VuYWJsZUhpZ2hBY2N1cmFjeSA9PSBlbmFi
bGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZW5hYmxlSGlnaEFjY3VyYWN5ID0gZW5hYmxl
OworCisgICAgLy8gSWYgd2UncmUgYWxyZWFkeSB1cGRhdGluZyB3ZSBzaG91bGQgcmVwb3J0IHRo
ZSBuZXcgcmVxdWlyZW1lbnRzIGluIG9yZGVyCisgICAgLy8gdG8gY2hhbmdlIHRvIGEgbW9yZSBz
dWl0YWJsZSBwcm92aWRlciBpZiBuZWVkZWQuIElmIG5vdCwgcmV0dXJuLgorICAgIGlmICghbV9p
c1VwZGF0aW5nKQorICAgICAgICByZXR1cm47CisKKyAgICB1cGRhdGVDbGllbnRSZXF1aXJlbWVu
dHMoKTsKK30KKwordm9pZCBHZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZTo6Y3JlYXRlR2VvY2x1
ZU1hbmFnZXJQcm94eUNhbGxiYWNrKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgR2Vv
bG9jYXRpb25Qcm92aWRlckdlb2NsdWUqIHByb3ZpZGVyKQoreworICAgIEdVbmlxdWVPdXRQdHI8
R0Vycm9yPiBlcnJvcjsKKyAgICBwcm92aWRlci0+bV9tYW5hZ2VyUHJveHkgPSBhZG9wdEdSZWYo
Z2VvY2x1ZV9tYW5hZ2VyX3Byb3h5X25ld19mb3JfYnVzX2ZpbmlzaChyZXN1bHQsICZlcnJvci5v
dXRQdHIoKSkpOworICAgIGlmIChlcnJvcikgeworICAgICAgICBwcm92aWRlci0+ZXJyb3JPY2N1
cnJlZChlcnJvci0+bWVzc2FnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnZW9j
bHVlX21hbmFnZXJfY2FsbF9nZXRfY2xpZW50KHByb3ZpZGVyLT5tX21hbmFnZXJQcm94eS5nZXQo
KSwgbnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihnZXRHZW9j
bHVlQ2xpZW50Q2FsbGJhY2spLCBwcm92aWRlcik7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb25Qcm92
aWRlckdlb2NsdWU6OmdldEdlb2NsdWVDbGllbnRDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2VPYmpl
Y3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBHZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZSogcHJv
dmlkZXIpCit7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVP
dXRQdHI8Z2NoYXI+IHBhdGg7CisgICAgaWYgKCFnZW9jbHVlX21hbmFnZXJfY2FsbF9nZXRfY2xp
ZW50X2ZpbmlzaChHRU9DTFVFX01BTkFHRVIoc291cmNlT2JqZWN0KSwgJnBhdGgub3V0UHRyKCks
IHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSkgeworICAgICAgICBwcm92aWRlci0+ZXJyb3JPY2N1
cnJlZChlcnJvci0+bWVzc2FnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnZW9j
bHVlX2NsaWVudF9wcm94eV9uZXdfZm9yX2J1cyhHX0JVU19UWVBFX1NZU1RFTSwgR19EQlVTX1BS
T1hZX0ZMQUdTX05PTkUsIGdHZW9jbHVlQnVzTmFtZSwgcGF0aC5nZXQoKSwgbnVsbHB0ciwKKyAg
ICAgICAgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihjcmVhdGVHZW9jbHVl
Q2xpZW50UHJveHlDYWxsYmFjayksIHByb3ZpZGVyKTsKK30KKwordm9pZCBHZW9sb2NhdGlvblBy
b3ZpZGVyR2VvY2x1ZTo6Y3JlYXRlR2VvY2x1ZUNsaWVudFByb3h5Q2FsbGJhY2soR09iamVjdCos
IEdBc3luY1Jlc3VsdCogcmVzdWx0LCBHZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZSogcHJvdmlk
ZXIpCit7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOworICAgIHByb3ZpZGVyLT5t
X2NsaWVudFByb3h5ID0gYWRvcHRHUmVmKGdlb2NsdWVfY2xpZW50X3Byb3h5X25ld19mb3JfYnVz
X2ZpbmlzaChyZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOworICAgIGlmIChlcnJvcikgeworICAg
ICAgICBwcm92aWRlci0+ZXJyb3JPY2N1cnJlZChlcnJvci0+bWVzc2FnZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBHZW9jbHVlMiByZXF1aXJlcyB0aGUgY2xpZW50IHRvIHBy
b3ZpZGUgYSBkZXNrdG9wIElEIGZvciBzZWN1cml0eQorICAgIC8vIHJlYXNvbnMsIHdoaWNoIHNo
b3VsZCBpZGVudGlmeSB0aGUgYXBwbGljYXRpb24gcmVxdWVzdGluZyB0aGUgbG9jYXRpb24uCisg
ICAgLy8gRklYTUU6IFdlIHByb3ZpZGUgdGhlIHByb2dyYW0gbmFtZSBhcyB0aGUgZGVza3RvcCBJ
RCBmb3Igbm93IGJ1dCwgaW4gYW4gaWRlYWwgd29ybGQsCisgICAgLy8gd2Ugc2hvdWxkIHByb3Zp
ZGUgYSBwcm9wZXIgImFwcGxpY2F0aW9uIElEIiAobm9ybWFsbHkgdGhlIG5hbWUgb2YgYSAuZGVz
a3RvcCBmaWxlKS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI5ODc5CisgICAgZ2VvY2x1ZV9jbGllbnRfc2V0X2Rlc2t0b3BfaWQocHJvdmlkZXItPm1f
Y2xpZW50UHJveHkuZ2V0KCksIGdfZ2V0X3ByZ25hbWUoKSk7CisKKyAgICBwcm92aWRlci0+c3Rh
cnRHZW9jbHVlQ2xpZW50KCk7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWU6
OnN0YXJ0Q2xpZW50Q2FsbGJhY2soR09iamVjdCogc291cmNlT2JqZWN0LCBHQXN5bmNSZXN1bHQq
IHJlc3VsdCwgR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUqIHByb3ZpZGVyKQoreworICAgIEdV
bmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBpZiAoIWdlb2NsdWVfY2xpZW50X2NhbGxf
c3RhcnRfZmluaXNoKEdFT0NMVUVfQ0xJRU5UKHNvdXJjZU9iamVjdCksIHJlc3VsdCwgJmVycm9y
Lm91dFB0cigpKSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8R2VvbG9jYXRpb25Qcm92aWRlckdlb2Ns
dWUqPihwcm92aWRlciktPmVycm9yT2NjdXJyZWQoZXJyb3ItPm1lc3NhZ2UpOworfQorCit2b2lk
IEdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlOjpsb2NhdGlvblVwZGF0ZWRDYWxsYmFjayhHZW9j
bHVlQ2xpZW50KiwgY29uc3QgZ2NoYXIqLCBjb25zdCBnY2hhciogbmV3UGF0aCwgR2VvbG9jYXRp
b25Qcm92aWRlckdlb2NsdWUqIHByb3ZpZGVyKQoreworICAgIGdlb2NsdWVfbG9jYXRpb25fcHJv
eHlfbmV3X2Zvcl9idXMoR19CVVNfVFlQRV9TWVNURU0sIEdfREJVU19QUk9YWV9GTEFHU19OT05F
LCBnR2VvY2x1ZUJ1c05hbWUsIG5ld1BhdGgsIG51bGxwdHIsCisgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4oY3JlYXRlTG9jYXRpb25Qcm94eUNhbGxiYWNrKSwg
cHJvdmlkZXIpOworfQorCit2b2lkIEdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlOjpjcmVhdGVM
b2NhdGlvblByb3h5Q2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBHZW9s
b2NhdGlvblByb3ZpZGVyR2VvY2x1ZSogcHJvdmlkZXIpCit7CisgICAgR1VuaXF1ZU91dFB0cjxH
RXJyb3I+IGVycm9yOworICAgIEdSZWZQdHI8R2VvY2x1ZUxvY2F0aW9uPiBsb2NhdGlvblByb3h5
ID0gYWRvcHRHUmVmKGdlb2NsdWVfbG9jYXRpb25fcHJveHlfbmV3X2Zvcl9idXNfZmluaXNoKHJl
c3VsdCwgJmVycm9yLm91dFB0cigpKSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIHByb3Zp
ZGVyLT5lcnJvck9jY3VycmVkKGVycm9yLT5tZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBwcm92aWRlci0+dXBkYXRlTG9jYXRpb24obG9jYXRpb25Qcm94eS5nZXQoKSk7Cit9
CisKK3ZvaWQgR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWU6OnN0YXJ0R2VvY2x1ZUNsaWVudCgp
Cit7CisgICAgLy8gU2V0IHRoZSByZXF1aXJlbWVudCBmb3IgdGhlIGNsaWVudC4KKyAgICB1cGRh
dGVDbGllbnRSZXF1aXJlbWVudHMoKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9jbGllbnRQ
cm94eS5nZXQoKSwgImxvY2F0aW9uLXVwZGF0ZWQiLCBHX0NBTExCQUNLKGxvY2F0aW9uVXBkYXRl
ZENhbGxiYWNrKSwgdGhpcyk7CisgICAgZ2VvY2x1ZV9jbGllbnRfY2FsbF9zdGFydChtX2NsaWVu
dFByb3h5LmdldCgpLCBudWxscHRyLCByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJh
Y2s+KHN0YXJ0Q2xpZW50Q2FsbGJhY2spLCB0aGlzKTsKK30KKwordm9pZCBHZW9sb2NhdGlvblBy
b3ZpZGVyR2VvY2x1ZTo6dXBkYXRlTG9jYXRpb24oR2VvY2x1ZUxvY2F0aW9uKiBsb2NhdGlvblBy
b3h5KQoreworICAgIEdUaW1lVmFsIHRpbWVWYWx1ZTsKKyAgICBnX2dldF9jdXJyZW50X3RpbWUo
JnRpbWVWYWx1ZSk7CisgICAgbV90aW1lc3RhbXAgPSB0aW1lVmFsdWUudHZfc2VjOworICAgIG1f
bGF0aXR1ZGUgPSBnZW9jbHVlX2xvY2F0aW9uX2dldF9sYXRpdHVkZShsb2NhdGlvblByb3h5KTsK
KyAgICBtX2xvbmdpdHVkZSA9IGdlb2NsdWVfbG9jYXRpb25fZ2V0X2xvbmdpdHVkZShsb2NhdGlv
blByb3h5KTsKKyAgICBtX2FjY3VyYWN5ID0gZ2VvY2x1ZV9sb2NhdGlvbl9nZXRfYWNjdXJhY3ko
bG9jYXRpb25Qcm94eSk7CisgICAgbV9jbGllbnQtPm5vdGlmeVBvc2l0aW9uQ2hhbmdlZChtX3Rp
bWVzdGFtcCwgbV9sYXRpdHVkZSwgbV9sb25naXR1ZGUsIG1fYWx0aXR1ZGUsIG1fYWNjdXJhY3ks
IG1fYWx0aXR1ZGVBY2N1cmFjeSk7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb25Qcm92aWRlckdlb2Ns
dWU6OmVycm9yT2NjdXJyZWQoY29uc3QgY2hhciogbWVzc2FnZSkKK3sKKyAgICBtX2lzVXBkYXRp
bmcgPSBmYWxzZTsKKyAgICBtX2NsaWVudC0+bm90aWZ5RXJyb3JPY2N1cnJlZChtZXNzYWdlKTsK
K30KKwordm9pZCBHZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZTo6dXBkYXRlQ2xpZW50UmVxdWly
ZW1lbnRzKCkKK3sKKyAgICBpZiAoIW1fY2xpZW50UHJveHkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEdlb2NsdWVBY2N1cmFjeUxldmVsIGFjY3VyYWN5TGV2ZWwgPSBtX2VuYWJsZUhpZ2hBY2N1
cmFjeSA/IEdlb2NsdWVBY2N1cmFjeUxldmVsRXhhY3QgOiBHZW9jbHVlQWNjdXJhY3lMZXZlbENp
dHk7CisgICAgZ2VvY2x1ZV9jbGllbnRfc2V0X3JlcXVlc3RlZF9hY2N1cmFjeV9sZXZlbChtX2Ns
aWVudFByb3h5LmdldCgpLCBhY2N1cmFjeUxldmVsKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShH
RU9MT0NBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlb2NsdWUv
R2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
b2NsdWUvR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUuaAppbmRleCA3YzMyNTkzOWI4NjI5M2M5
MGVmYTUxMGRhMWJiNGQzMmIyODZmODFjLi40YTRkYjdhODUzMmMwNmJjOGQzOTIyYjVhNDMxZWE2
MTlhZGE3OWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW9jbHVlL0dl
b2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2VvY2x1ZS9HZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZS5oCkBAIC0yNiwxMiArMjYsNyBAQAog
I2luY2x1ZGUgIkdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlQ2xpZW50LmgiCiAjaW5jbHVkZSA8
d3RmL2dsaWIvR1JlZlB0ci5oPgogCi0jaWYgVVNFKEdFT0NMVUUyKQogI2luY2x1ZGUgIkdlb2Ns
dWUySW50ZXJmYWNlLmgiCi0jZWxzZQotI2luY2x1ZGUgPGdlb2NsdWUvZ2VvY2x1ZS1tYXN0ZXIu
aD4KLSNpbmNsdWRlIDxnZW9jbHVlL2dlb2NsdWUtcG9zaXRpb24uaD4KLSNlbmRpZgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDcgKzQwLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpOwogCiBwcml2YXRlOgotI2lmIFVTRShHRU9DTFVFMikK
ICAgICBzdGF0aWMgdm9pZCBjcmVhdGVHZW9jbHVlTWFuYWdlclByb3h5Q2FsbGJhY2soR09iamVj
dCosIEdBc3luY1Jlc3VsdCosIEdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlKik7CiAgICAgc3Rh
dGljIHZvaWQgZ2V0R2VvY2x1ZUNsaWVudENhbGxiYWNrKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQq
LCBHZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZSopOwogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUdl
b2NsdWVDbGllbnRQcm94eUNhbGxiYWNrKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQqLCBHZW9sb2Nh
dGlvblByb3ZpZGVyR2VvY2x1ZSopOwpAQCAtNTUsMzAgKzQ5LDE0IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHN0YXJ0R2VvY2x1ZUNsaWVudCgpOwogICAgIHZvaWQgdXBkYXRlTG9jYXRpb24oR2Vv
Y2x1ZUxvY2F0aW9uKik7Ci0jZWxzZQotICAgIHN0YXRpYyB2b2lkIGdldFBvc2l0aW9uQ2FsbGJh
Y2soR2VvY2x1ZVBvc2l0aW9uKiwgR2VvY2x1ZVBvc2l0aW9uRmllbGRzLCBpbnQsIGRvdWJsZSwg
ZG91YmxlLCBkb3VibGUsIEdlb2NsdWVBY2N1cmFjeSosIEdFcnJvciosIEdlb2xvY2F0aW9uUHJv
dmlkZXJHZW9jbHVlKik7Ci0gICAgc3RhdGljIHZvaWQgcG9zaXRpb25DaGFuZ2VkQ2FsbGJhY2so
R2VvY2x1ZVBvc2l0aW9uKiwgR2VvY2x1ZVBvc2l0aW9uRmllbGRzLCBpbnQsIGRvdWJsZSwgZG91
YmxlLCBkb3VibGUsIEdlb2NsdWVBY2N1cmFjeSosIEdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVl
Kik7Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRlR2VvY2x1ZVBvc2l0aW9uQ2FsbGJhY2soR2VvY2x1
ZU1hc3RlckNsaWVudCosIEdlb2NsdWVQb3NpdGlvbiosIEdFcnJvciosIEdlb2xvY2F0aW9uUHJv
dmlkZXJHZW9jbHVlKik7Ci0gICAgc3RhdGljIHZvaWQgZ2VvY2x1ZUNsaWVudFNldFJlcXVpcmVt
ZW50c0NhbGxiYWNrKEdlb2NsdWVNYXN0ZXJDbGllbnQqLCBHRXJyb3IqLCBHZW9sb2NhdGlvblBy
b3ZpZGVyR2VvY2x1ZSopOwotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUdlb2NsdWVDbGllbnRDYWxs
YmFjayhHZW9jbHVlTWFzdGVyKiwgR2VvY2x1ZU1hc3RlckNsaWVudCosIGNoYXIqLCBHRXJyb3Iq
LCBHZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZSopOwotCi0gICAgdm9pZCBpbml0aWFsaXplR2Vv
Y2x1ZUNsaWVudChHZW9jbHVlTWFzdGVyQ2xpZW50Kik7Ci0gICAgdm9pZCBpbml0aWFsaXplR2Vv
Y2x1ZVBvc2l0aW9uKEdlb2NsdWVQb3NpdGlvbiopOwotICAgIHZvaWQgcG9zaXRpb25DaGFuZ2Vk
KEdlb2NsdWVQb3NpdGlvbiosIEdlb2NsdWVQb3NpdGlvbkZpZWxkcywgaW50LCBkb3VibGUsIGRv
dWJsZSwgZG91YmxlLCBHZW9jbHVlQWNjdXJhY3kqKTsKLSNlbmRpZgogCiAgICAgdm9pZCBlcnJv
ck9jY3VycmVkKGNvbnN0IGNoYXIqKTsKICAgICB2b2lkIHVwZGF0ZUNsaWVudFJlcXVpcmVtZW50
cygpOwogCiAgICAgR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWVDbGllbnQqIG1fY2xpZW50Owog
Ci0jaWYgVVNFKEdFT0NMVUUyKQogICAgIEdSZWZQdHI8R2VvY2x1ZU1hbmFnZXI+IG1fbWFuYWdl
clByb3h5OwogICAgIEdSZWZQdHI8R2VvY2x1ZUNsaWVudD4gbV9jbGllbnRQcm94eTsKLSNlbHNl
Ci0gICAgR1JlZlB0cjxHZW9jbHVlTWFzdGVyQ2xpZW50PiBtX2dlb2NsdWVDbGllbnQ7Ci0gICAg
R1JlZlB0cjxHZW9jbHVlUG9zaXRpb24+IG1fZ2VvY2x1ZVBvc2l0aW9uOwotI2VuZGlmCiAKICAg
ICBkb3VibGUgbV9sYXRpdHVkZTsKICAgICBkb3VibGUgbV9sb25naXR1ZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW9jbHVlL0dlb2xvY2F0aW9uUHJvdmlkZXJHZW9j
bHVlMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW9jbHVlL0dlb2xvY2F0aW9uUHJv
dmlkZXJHZW9jbHVlMS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzMTBjY2Ey
ZTAyNzBhZjk4OGM3Zjc0MDk1MzMyZmJiNjllNDg2MjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VvY2x1ZS9H
ZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZTEuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTc3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVl
LmgiCi0KLSNpZiBFTkFCTEUoR0VPTE9DQVRJT04pICYmICFVU0UoR0VPQ0xVRTIpCi0KLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwotCi12b2lkIEdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlOjpn
ZXRQb3NpdGlvbkNhbGxiYWNrKEdlb2NsdWVQb3NpdGlvbiogcG9zaXRpb24sIEdlb2NsdWVQb3Np
dGlvbkZpZWxkcyBmaWVsZHMsIGludCB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91Ymxl
IGxvbmdpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBHZW9jbHVlQWNjdXJhY3kqIGFjY3VyYWN5LCBH
RXJyb3IqIGVycm9yLCBHZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZSogcHJvdmlkZXIpCi17Ci0g
ICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIHByb3ZpZGVyLT5lcnJvck9jY3VycmVkKGVycm9yLT5t
ZXNzYWdlKTsKLSAgICAgICAgZ19lcnJvcl9mcmVlKGVycm9yKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBwcm92aWRlci0+cG9zaXRpb25DaGFuZ2VkKHBvc2l0aW9uLCBmaWVsZHMsIHRp
bWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWx0aXR1ZGUsIGFjY3VyYWN5KTsKLX0KLQot
dm9pZCBHZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZTo6cG9zaXRpb25DaGFuZ2VkQ2FsbGJhY2so
R2VvY2x1ZVBvc2l0aW9uKiBwb3NpdGlvbiwgR2VvY2x1ZVBvc2l0aW9uRmllbGRzIGZpZWxkcywg
aW50IHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUg
YWx0aXR1ZGUsIEdlb2NsdWVBY2N1cmFjeSogYWNjdXJhY3ksIEdlb2xvY2F0aW9uUHJvdmlkZXJH
ZW9jbHVlKiBwcm92aWRlcikKLXsKLSAgICBwcm92aWRlci0+cG9zaXRpb25DaGFuZ2VkKHBvc2l0
aW9uLCBmaWVsZHMsIHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWx0aXR1ZGUsIGFj
Y3VyYWN5KTsKLX0KLQotdm9pZCBHZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZTo6Y3JlYXRlR2Vv
Y2x1ZVBvc2l0aW9uQ2FsbGJhY2soR2VvY2x1ZU1hc3RlckNsaWVudCosIEdlb2NsdWVQb3NpdGlv
biogcG9zaXRpb24sIEdFcnJvciAqZXJyb3IsIEdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlKiBw
cm92aWRlcikKLXsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgcHJvdmlkZXItPmVycm9yT2Nj
dXJyZWQoZXJyb3ItPm1lc3NhZ2UpOwotICAgICAgICBnX2Vycm9yX2ZyZWUoZXJyb3IpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIHByb3ZpZGVyLT5pbml0aWFsaXplR2VvY2x1ZVBvc2l0
aW9uKHBvc2l0aW9uKTsKLX0KLQotdm9pZCBHZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZTo6Z2Vv
Y2x1ZUNsaWVudFNldFJlcXVpcmVtZW50c0NhbGxiYWNrKEdlb2NsdWVNYXN0ZXJDbGllbnQqLCBH
RXJyb3IqIGVycm9yLCBHZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZSogcHJvdmlkZXIpCi17Ci0g
ICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIHByb3ZpZGVyLT5lcnJvck9jY3VycmVkKGVycm9yLT5t
ZXNzYWdlKTsKLSAgICAgICAgZ19lcnJvcl9mcmVlKGVycm9yKTsKLSAgICB9Ci19Ci0KLXZvaWQg
R2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWU6OmNyZWF0ZUdlb2NsdWVDbGllbnRDYWxsYmFjayhH
ZW9jbHVlTWFzdGVyKiwgR2VvY2x1ZU1hc3RlckNsaWVudCogY2xpZW50LCBjaGFyKiwgR0Vycm9y
KiBlcnJvciwgR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUqIHByb3ZpZGVyKQotewotICAgIGlm
IChlcnJvcikgewotICAgICAgICBwcm92aWRlci0+ZXJyb3JPY2N1cnJlZChlcnJvci0+bWVzc2Fn
ZSk7Ci0gICAgICAgIGdfZXJyb3JfZnJlZShlcnJvcik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgcHJvdmlkZXItPmluaXRpYWxpemVHZW9jbHVlQ2xpZW50KGNsaWVudCk7Ci19Ci0KLUdl
b2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlOjpHZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZShHZW9s
b2NhdGlvblByb3ZpZGVyR2VvY2x1ZUNsaWVudCogY2xpZW50KQotICAgIDogbV9jbGllbnQoY2xp
ZW50KQotICAgICwgbV9sYXRpdHVkZSgwKQotICAgICwgbV9sb25naXR1ZGUoMCkKLSAgICAsIG1f
YWx0aXR1ZGUoMCkKLSAgICAsIG1fYWNjdXJhY3koMCkKLSAgICAsIG1fYWx0aXR1ZGVBY2N1cmFj
eSgwKQotICAgICwgbV90aW1lc3RhbXAoMCkKLSAgICAsIG1fZW5hYmxlSGlnaEFjY3VyYWN5KGZh
bHNlKQotICAgICwgbV9pc1VwZGF0aW5nKGZhbHNlKQotewotICAgIEFTU0VSVChtX2NsaWVudCk7
Ci19Ci0KLUdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlOjp+R2VvbG9jYXRpb25Qcm92aWRlckdl
b2NsdWUoKQotewotfQotCi12b2lkIEdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlOjpzdGFydFVw
ZGF0aW5nKCkKLXsKLSAgICBBU1NFUlQoIW1fZ2VvY2x1ZUNsaWVudCk7Ci0KLSAgICBHUmVmUHRy
PEdlb2NsdWVNYXN0ZXI+IG1hc3RlciA9IGFkb3B0R1JlZihnZW9jbHVlX21hc3Rlcl9nZXRfZGVm
YXVsdCgpKTsKLSAgICBnZW9jbHVlX21hc3Rlcl9jcmVhdGVfY2xpZW50X2FzeW5jKG1hc3Rlci5n
ZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxHZW9jbHVlQ3JlYXRlQ2xpZW50Q2FsbGJhY2s+KGNyZWF0
ZUdlb2NsdWVDbGllbnRDYWxsYmFjayksIHRoaXMpOwotICAgIG1faXNVcGRhdGluZyA9IHRydWU7
Ci19Ci0KLXZvaWQgR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWU6OnN0b3BVcGRhdGluZygpCi17
Ci0gICAgbV9nZW9jbHVlUG9zaXRpb24uY2xlYXIoKTsKLSAgICBtX2dlb2NsdWVDbGllbnQuY2xl
YXIoKTsKLSAgICBtX2lzVXBkYXRpbmcgPSBmYWxzZTsKLX0KLQotdm9pZCBHZW9sb2NhdGlvblBy
b3ZpZGVyR2VvY2x1ZTo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wgZW5hYmxlKQotewotICAg
IG1fZW5hYmxlSGlnaEFjY3VyYWN5ID0gZW5hYmxlOwotCi0gICAgLy8gSWYgd2UncmUgYWxyZWFk
eSB1cGRhdGluZyB3ZSBzaG91bGQgcmVwb3J0IHRoZSBuZXcgcmVxdWlyZW1lbnRzIGluIG9yZGVy
Ci0gICAgLy8gdG8gY2hhbmdlIHRvIGEgbW9yZSBzdWl0YWJsZSBwcm92aWRlciBpZiBuZWVkZWQu
IElmIG5vdCwgcmV0dXJuLgotICAgIGlmICghbV9pc1VwZGF0aW5nKQotICAgICAgICByZXR1cm47
Ci0KLSAgICB1cGRhdGVDbGllbnRSZXF1aXJlbWVudHMoKTsKLX0KLQotdm9pZCBHZW9sb2NhdGlv
blByb3ZpZGVyR2VvY2x1ZTo6aW5pdGlhbGl6ZUdlb2NsdWVDbGllbnQoR2VvY2x1ZU1hc3RlckNs
aWVudCogZ2VvY2x1ZUNsaWVudCkKLXsKLSAgICBBU1NFUlQoR0VPQ0xVRV9JU19NQVNURVJfQ0xJ
RU5UKGdlb2NsdWVDbGllbnQpKTsKLQotICAgIC8vIFN0b3JlIHRoZSBHZW9jbHVlTWFzdGVyQ2xp
ZW50IG9iamVjdCBhcyBjcmVhdGVkIGJ5IEdlb0NsdWUuCi0gICAgbV9nZW9jbHVlQ2xpZW50ID0g
YWRvcHRHUmVmKGdlb2NsdWVDbGllbnQpOwotCi0gICAgLy8gU2V0IHRoZSByZXF1aXJlbWVudCBm
b3IgdGhlIGNsaWVudCBhbmQgYXNrIGl0IHRvIGNyZWF0ZSBhIHBvc2l0aW9uIGFzc29jaWF0ZWQg
dG8gaXQuCi0gICAgdXBkYXRlQ2xpZW50UmVxdWlyZW1lbnRzKCk7Ci0gICAgZ2VvY2x1ZV9tYXN0
ZXJfY2xpZW50X2NyZWF0ZV9wb3NpdGlvbl9hc3luYyhtX2dlb2NsdWVDbGllbnQuZ2V0KCksIHJl
aW50ZXJwcmV0X2Nhc3Q8Q3JlYXRlUG9zaXRpb25DYWxsYmFjaz4oY3JlYXRlR2VvY2x1ZVBvc2l0
aW9uQ2FsbGJhY2spLCB0aGlzKTsKLX0KLQotdm9pZCBHZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1
ZTo6aW5pdGlhbGl6ZUdlb2NsdWVQb3NpdGlvbihHZW9jbHVlUG9zaXRpb24qIGdlb2NsdWVQb3Np
dGlvbikKLXsKLSAgICBBU1NFUlQoR0VPQ0xVRV9JU19QT1NJVElPTihnZW9jbHVlUG9zaXRpb24p
KTsKLQotICAgIC8vIFN0b3JlcyB0aGUgR2VvY2x1ZVBvc2l0aW9uIG9iamVjdCBhc3NvY2lhdGVk
IHdpdGggdGhlIEdlb2NsdWVNYXN0ZXJDbGllbnQuCi0gICAgbV9nZW9jbHVlUG9zaXRpb24gPSBh
ZG9wdEdSZWYoZ2VvY2x1ZVBvc2l0aW9uKTsKLQotICAgIC8vIEdldCB0aGUgaW5pdGlhbCBwb3Np
dGlvbiBhbmQga2VlcCB1cGRhdGVkIG9mIGZ1cnRoZXIgY2hhbmdlcy4KLSAgICBnZW9jbHVlX3Bv
c2l0aW9uX2dldF9wb3NpdGlvbl9hc3luYyhtX2dlb2NsdWVQb3NpdGlvbi5nZXQoKSwgcmVpbnRl
cnByZXRfY2FzdDxHZW9jbHVlUG9zaXRpb25DYWxsYmFjaz4oZ2V0UG9zaXRpb25DYWxsYmFjayks
IHRoaXMpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9nZW9jbHVlUG9zaXRpb24uZ2V0KCksICJw
b3NpdGlvbi1jaGFuZ2VkIiwgR19DQUxMQkFDSyhwb3NpdGlvbkNoYW5nZWRDYWxsYmFjayksIHRo
aXMpOwotfQotCi12b2lkIEdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlOjp1cGRhdGVDbGllbnRS
ZXF1aXJlbWVudHMoKQotewotICAgIGlmICghbV9nZW9jbHVlQ2xpZW50KQotICAgICAgICByZXR1
cm47Ci0KLSAgICBHZW9jbHVlQWNjdXJhY3lMZXZlbCBhY2N1cmFjeUxldmVsID0gbV9lbmFibGVI
aWdoQWNjdXJhY3kgPyBHRU9DTFVFX0FDQ1VSQUNZX0xFVkVMX0RFVEFJTEVEIDogR0VPQ0xVRV9B
Q0NVUkFDWV9MRVZFTF9MT0NBTElUWTsKLSAgICBnZW9jbHVlX21hc3Rlcl9jbGllbnRfc2V0X3Jl
cXVpcmVtZW50c19hc3luYyhtX2dlb2NsdWVDbGllbnQuZ2V0KCksIGFjY3VyYWN5TGV2ZWwsIDAs
IGZhbHNlLCBHRU9DTFVFX1JFU09VUkNFX0FMTCwgcmVpbnRlcnByZXRfY2FzdDxHZW9jbHVlU2V0
UmVxdWlyZW1lbnRzQ2FsbGJhY2s+KGdlb2NsdWVDbGllbnRTZXRSZXF1aXJlbWVudHNDYWxsYmFj
ayksIHRoaXMpOwotfQotCi12b2lkIEdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlOjpwb3NpdGlv
bkNoYW5nZWQoR2VvY2x1ZVBvc2l0aW9uKiwgR2VvY2x1ZVBvc2l0aW9uRmllbGRzIGZpZWxkcywg
aW50IHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUg
YWx0aXR1ZGUsIEdlb2NsdWVBY2N1cmFjeSogYWNjdXJhY3kpCi17Ci0gICAgaWYgKCEoZmllbGRz
ICYgR0VPQ0xVRV9QT1NJVElPTl9GSUVMRFNfTEFUSVRVREUgJiYgZmllbGRzICYgR0VPQ0xVRV9Q
T1NJVElPTl9GSUVMRFNfTE9OR0lUVURFKSkgewotICAgICAgICBlcnJvck9jY3VycmVkKCJQb3Np
dGlvbiBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZC4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIG1fdGltZXN0YW1wID0gdGltZXN0YW1wOwotICAgIG1fbGF0aXR1ZGUgPSBsYXRpdHVk
ZTsKLSAgICBtX2xvbmdpdHVkZSA9IGxvbmdpdHVkZTsKLSAgICBtX2FsdGl0dWRlID0gYWx0aXR1
ZGU7Ci0KLSAgICBnZW9jbHVlX2FjY3VyYWN5X2dldF9kZXRhaWxzKGFjY3VyYWN5LCAwLCAmbV9h
Y2N1cmFjeSwgJm1fYWx0aXR1ZGVBY2N1cmFjeSk7Ci0KLSAgICBtX2NsaWVudC0+bm90aWZ5UG9z
aXRpb25DaGFuZ2VkKG1fdGltZXN0YW1wLCBtX2xhdGl0dWRlLCBtX2xvbmdpdHVkZSwgbV9hbHRp
dHVkZSwgbV9hY2N1cmFjeSwgbV9hbHRpdHVkZUFjY3VyYWN5KTsKLX0KLQotdm9pZCBHZW9sb2Nh
dGlvblByb3ZpZGVyR2VvY2x1ZTo6ZXJyb3JPY2N1cnJlZChjb25zdCBjaGFyKiBtZXNzYWdlKQot
ewotICAgIG1fY2xpZW50LT5ub3RpZnlFcnJvck9jY3VycmVkKG1lc3NhZ2UpOwotfQotCi0jZW5k
aWYgLy8gRU5BQkxFKEdFT0xPQ0FUSU9OKSAmJiAhVVNFKEdFT0NMVUUyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VvY2x1ZS9HZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1
ZTIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VvY2x1ZS9HZW9sb2NhdGlvblByb3Zp
ZGVyR2VvY2x1ZTIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MGIwMDk1ZDQx
MDk3YWQ2MDM2ODZjM2RjZGZiMWZmZDBhZGJmMjdmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlb2NsdWUvR2Vv
bG9jYXRpb25Qcm92aWRlckdlb2NsdWUyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwNyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJHZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZS5oIgotCi0jaWYgRU5BQkxFKEdFT0xPQ0FUSU9O
KSAmJiBVU0UoR0VPQ0xVRTIpCi0KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HTGliVXRpbGl0aWVzLmg+
Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KLQotY29uc3QgY2hhciogZ0dlb2NsdWVCdXNOYW1lID0gIm9yZy5mcmVlZGVza3Rv
cC5HZW9DbHVlMiI7Ci1jb25zdCBjaGFyKiBnR2VvY2x1ZU1hbmFnZXJQYXRoID0gIi9vcmcvZnJl
ZWRlc2t0b3AvR2VvQ2x1ZTIvTWFuYWdlciI7Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwot
Ci10eXBlZGVmIGVudW0gewotICAgIEdlb2NsdWVBY2N1cmFjeUxldmVsQ291bnRyeSA9IDEsCi0g
ICAgR2VvY2x1ZUFjY3VyYWN5TGV2ZWxDaXR5ID0gNCwKLSAgICBHZW9jbHVlQWNjdXJhY3lMZXZl
bFN0cmVldCA9IDYsCi0gICAgR2VvY2x1ZUFjY3VyYWN5TGV2ZWxFeGFjdCA9IDgsCi19IEdlb2Ns
dWVBY2N1cmFjeUxldmVsOwotCi1HZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZTo6R2VvbG9jYXRp
b25Qcm92aWRlckdlb2NsdWUoR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWVDbGllbnQqIGNsaWVu
dCkKLSAgICA6IG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fbGF0aXR1ZGUoMCkKLSAgICAsIG1f
bG9uZ2l0dWRlKDApCi0gICAgLCBtX2FsdGl0dWRlKDApCi0gICAgLCBtX2FjY3VyYWN5KDApCi0g
ICAgLCBtX2FsdGl0dWRlQWNjdXJhY3koMCkKLSAgICAsIG1fdGltZXN0YW1wKDApCi0gICAgLCBt
X2VuYWJsZUhpZ2hBY2N1cmFjeShmYWxzZSkKLSAgICAsIG1faXNVcGRhdGluZyhmYWxzZSkKLXsK
LSAgICBBU1NFUlQobV9jbGllbnQpOwotfQotCi1HZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZTo6
fkdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlKCkKLXsKLSAgICBzdG9wVXBkYXRpbmcoKTsKLX0K
LQotdm9pZCBHZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZTo6c3RhcnRVcGRhdGluZygpCi17Ci0g
ICAgbV9pc1VwZGF0aW5nID0gdHJ1ZTsKLQotICAgIGlmICghbV9tYW5hZ2VyUHJveHkpIHsKLSAg
ICAgICAgZ2VvY2x1ZV9tYW5hZ2VyX3Byb3h5X25ld19mb3JfYnVzKEdfQlVTX1RZUEVfU1lTVEVN
LCBHX0RCVVNfUFJPWFlfRkxBR1NfTk9ORSwgZ0dlb2NsdWVCdXNOYW1lLCBnR2VvY2x1ZU1hbmFn
ZXJQYXRoLCBudWxscHRyLAotICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFk
eUNhbGxiYWNrPihjcmVhdGVHZW9jbHVlTWFuYWdlclByb3h5Q2FsbGJhY2spLCB0aGlzKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGdlb2NsdWVfbWFuYWdlcl9jYWxsX2dldF9jbGll
bnQobV9tYW5hZ2VyUHJveHkuZ2V0KCksIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5j
UmVhZHlDYWxsYmFjaz4oZ2V0R2VvY2x1ZUNsaWVudENhbGxiYWNrKSwgdGhpcyk7Ci19Ci0KLXZv
aWQgR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWU6OnN0b3BVcGRhdGluZygpCi17Ci0gICAgaWYg
KG1fY2xpZW50UHJveHkpIHsKLSAgICAgICAgZ2VvY2x1ZV9jbGllbnRfY2FsbF9zdG9wKG1fY2xp
ZW50UHJveHkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOwotICAgICAgICBnX3Np
Z25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMobV9jbGllbnRQcm94eS5nZXQoKSwgcmVp
bnRlcnByZXRfY2FzdDxncG9pbnRlcj4obG9jYXRpb25VcGRhdGVkQ2FsbGJhY2spLCB0aGlzKTsK
LSAgICAgICAgbV9jbGllbnRQcm94eSA9IG51bGxwdHI7Ci0gICAgfQotICAgIG1faXNVcGRhdGlu
ZyA9IGZhbHNlOwotfQotCi12b2lkIEdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlOjpzZXRFbmFi
bGVIaWdoQWNjdXJhY3koYm9vbCBlbmFibGUpCi17Ci0gICAgaWYgKG1fZW5hYmxlSGlnaEFjY3Vy
YWN5ID09IGVuYWJsZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9lbmFibGVIaWdoQWNjdXJh
Y3kgPSBlbmFibGU7Ci0KLSAgICAvLyBJZiB3ZSdyZSBhbHJlYWR5IHVwZGF0aW5nIHdlIHNob3Vs
ZCByZXBvcnQgdGhlIG5ldyByZXF1aXJlbWVudHMgaW4gb3JkZXIKLSAgICAvLyB0byBjaGFuZ2Ug
dG8gYSBtb3JlIHN1aXRhYmxlIHByb3ZpZGVyIGlmIG5lZWRlZC4gSWYgbm90LCByZXR1cm4uCi0g
ICAgaWYgKCFtX2lzVXBkYXRpbmcpCi0gICAgICAgIHJldHVybjsKLQotICAgIHVwZGF0ZUNsaWVu
dFJlcXVpcmVtZW50cygpOwotfQotCi12b2lkIEdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlOjpj
cmVhdGVHZW9jbHVlTWFuYWdlclByb3h5Q2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCog
cmVzdWx0LCBHZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZSogcHJvdmlkZXIpCi17Ci0gICAgR1Vu
aXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgIHByb3ZpZGVyLT5tX21hbmFnZXJQcm94eSA9
IGFkb3B0R1JlZihnZW9jbHVlX21hbmFnZXJfcHJveHlfbmV3X2Zvcl9idXNfZmluaXNoKHJlc3Vs
dCwgJmVycm9yLm91dFB0cigpKSk7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIHByb3ZpZGVy
LT5lcnJvck9jY3VycmVkKGVycm9yLT5tZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGdlb2NsdWVfbWFuYWdlcl9jYWxsX2dldF9jbGllbnQocHJvdmlkZXItPm1fbWFuYWdl
clByb3h5LmdldCgpLCBudWxscHRyLCByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJh
Y2s+KGdldEdlb2NsdWVDbGllbnRDYWxsYmFjayksIHByb3ZpZGVyKTsKLX0KLQotdm9pZCBHZW9s
b2NhdGlvblByb3ZpZGVyR2VvY2x1ZTo6Z2V0R2VvY2x1ZUNsaWVudENhbGxiYWNrKEdPYmplY3Qq
IHNvdXJjZU9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIEdlb2xvY2F0aW9uUHJvdmlkZXJH
ZW9jbHVlKiBwcm92aWRlcikKLXsKLSAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7Ci0g
ICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gcGF0aDsKLSAgICBpZiAoIWdlb2NsdWVfbWFuYWdlcl9j
YWxsX2dldF9jbGllbnRfZmluaXNoKEdFT0NMVUVfTUFOQUdFUihzb3VyY2VPYmplY3QpLCAmcGF0
aC5vdXRQdHIoKSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKSB7Ci0gICAgICAgIHByb3ZpZGVy
LT5lcnJvck9jY3VycmVkKGVycm9yLT5tZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGdlb2NsdWVfY2xpZW50X3Byb3h5X25ld19mb3JfYnVzKEdfQlVTX1RZUEVfU1lTVEVN
LCBHX0RCVVNfUFJPWFlfRkxBR1NfTk9ORSwgZ0dlb2NsdWVCdXNOYW1lLCBwYXRoLmdldCgpLCBu
dWxscHRyLAotICAgICAgICByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KGNy
ZWF0ZUdlb2NsdWVDbGllbnRQcm94eUNhbGxiYWNrKSwgcHJvdmlkZXIpOwotfQotCi12b2lkIEdl
b2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlOjpjcmVhdGVHZW9jbHVlQ2xpZW50UHJveHlDYWxsYmFj
ayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIEdlb2xvY2F0aW9uUHJvdmlkZXJHZW9j
bHVlKiBwcm92aWRlcikKLXsKLSAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAg
cHJvdmlkZXItPm1fY2xpZW50UHJveHkgPSBhZG9wdEdSZWYoZ2VvY2x1ZV9jbGllbnRfcHJveHlf
bmV3X2Zvcl9idXNfZmluaXNoKHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSk7Ci0gICAgaWYgKGVy
cm9yKSB7Ci0gICAgICAgIHByb3ZpZGVyLT5lcnJvck9jY3VycmVkKGVycm9yLT5tZXNzYWdlKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEdlb2NsdWUyIHJlcXVpcmVzIHRoZSBj
bGllbnQgdG8gcHJvdmlkZSBhIGRlc2t0b3AgSUQgZm9yIHNlY3VyaXR5Ci0gICAgLy8gcmVhc29u
cywgd2hpY2ggc2hvdWxkIGlkZW50aWZ5IHRoZSBhcHBsaWNhdGlvbiByZXF1ZXN0aW5nIHRoZSBs
b2NhdGlvbi4KLSAgICAvLyBGSVhNRTogV2UgcHJvdmlkZSB0aGUgcHJvZ3JhbSBuYW1lIGFzIHRo
ZSBkZXNrdG9wIElEIGZvciBub3cgYnV0LCBpbiBhbiBpZGVhbCB3b3JsZCwKLSAgICAvLyB3ZSBz
aG91bGQgcHJvdmlkZSBhIHByb3BlciAiYXBwbGljYXRpb24gSUQiIChub3JtYWxseSB0aGUgbmFt
ZSBvZiBhIC5kZXNrdG9wIGZpbGUpLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjk4NzkKLSAgICBnZW9jbHVlX2NsaWVudF9zZXRfZGVza3RvcF9pZChw
cm92aWRlci0+bV9jbGllbnRQcm94eS5nZXQoKSwgZ19nZXRfcHJnbmFtZSgpKTsKLQotICAgIHBy
b3ZpZGVyLT5zdGFydEdlb2NsdWVDbGllbnQoKTsKLX0KLQotdm9pZCBHZW9sb2NhdGlvblByb3Zp
ZGVyR2VvY2x1ZTo6c3RhcnRDbGllbnRDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2VPYmplY3QsIEdB
c3luY1Jlc3VsdCogcmVzdWx0LCBHZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZSogcHJvdmlkZXIp
Ci17Ci0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgIGlmICghZ2VvY2x1ZV9j
bGllbnRfY2FsbF9zdGFydF9maW5pc2goR0VPQ0xVRV9DTElFTlQoc291cmNlT2JqZWN0KSwgcmVz
dWx0LCAmZXJyb3Iub3V0UHRyKCkpKQotICAgICAgICBzdGF0aWNfY2FzdDxHZW9sb2NhdGlvblBy
b3ZpZGVyR2VvY2x1ZSo+KHByb3ZpZGVyKS0+ZXJyb3JPY2N1cnJlZChlcnJvci0+bWVzc2FnZSk7
Ci19Ci0KLXZvaWQgR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWU6OmxvY2F0aW9uVXBkYXRlZENh
bGxiYWNrKEdlb2NsdWVDbGllbnQqLCBjb25zdCBnY2hhciosIGNvbnN0IGdjaGFyKiBuZXdQYXRo
LCBHZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZSogcHJvdmlkZXIpCi17Ci0gICAgZ2VvY2x1ZV9s
b2NhdGlvbl9wcm94eV9uZXdfZm9yX2J1cyhHX0JVU19UWVBFX1NZU1RFTSwgR19EQlVTX1BST1hZ
X0ZMQUdTX05PTkUsIGdHZW9jbHVlQnVzTmFtZSwgbmV3UGF0aCwgbnVsbHB0ciwKLSAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihjcmVhdGVMb2NhdGlvblByb3h5
Q2FsbGJhY2spLCBwcm92aWRlcik7Ci19Ci0KLXZvaWQgR2VvbG9jYXRpb25Qcm92aWRlckdlb2Ns
dWU6OmNyZWF0ZUxvY2F0aW9uUHJveHlDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiBy
ZXN1bHQsIEdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlKiBwcm92aWRlcikKLXsKLSAgICBHVW5p
cXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgR1JlZlB0cjxHZW9jbHVlTG9jYXRpb24+IGxv
Y2F0aW9uUHJveHkgPSBhZG9wdEdSZWYoZ2VvY2x1ZV9sb2NhdGlvbl9wcm94eV9uZXdfZm9yX2J1
c19maW5pc2gocmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKLSAgICBpZiAoZXJyb3IpIHsKLSAg
ICAgICAgcHJvdmlkZXItPmVycm9yT2NjdXJyZWQoZXJyb3ItPm1lc3NhZ2UpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIHByb3ZpZGVyLT51cGRhdGVMb2NhdGlvbihsb2NhdGlvblByb3h5
LmdldCgpKTsKLX0KLQotdm9pZCBHZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZTo6c3RhcnRHZW9j
bHVlQ2xpZW50KCkKLXsKLSAgICAvLyBTZXQgdGhlIHJlcXVpcmVtZW50IGZvciB0aGUgY2xpZW50
LgotICAgIHVwZGF0ZUNsaWVudFJlcXVpcmVtZW50cygpOwotCi0gICAgZ19zaWduYWxfY29ubmVj
dChtX2NsaWVudFByb3h5LmdldCgpLCAibG9jYXRpb24tdXBkYXRlZCIsIEdfQ0FMTEJBQ0sobG9j
YXRpb25VcGRhdGVkQ2FsbGJhY2spLCB0aGlzKTsKLSAgICBnZW9jbHVlX2NsaWVudF9jYWxsX3N0
YXJ0KG1fY2xpZW50UHJveHkuZ2V0KCksIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5j
UmVhZHlDYWxsYmFjaz4oc3RhcnRDbGllbnRDYWxsYmFjayksIHRoaXMpOwotfQotCi12b2lkIEdl
b2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlOjp1cGRhdGVMb2NhdGlvbihHZW9jbHVlTG9jYXRpb24q
IGxvY2F0aW9uUHJveHkpCi17Ci0gICAgR1RpbWVWYWwgdGltZVZhbHVlOwotICAgIGdfZ2V0X2N1
cnJlbnRfdGltZSgmdGltZVZhbHVlKTsKLSAgICBtX3RpbWVzdGFtcCA9IHRpbWVWYWx1ZS50dl9z
ZWM7Ci0gICAgbV9sYXRpdHVkZSA9IGdlb2NsdWVfbG9jYXRpb25fZ2V0X2xhdGl0dWRlKGxvY2F0
aW9uUHJveHkpOwotICAgIG1fbG9uZ2l0dWRlID0gZ2VvY2x1ZV9sb2NhdGlvbl9nZXRfbG9uZ2l0
dWRlKGxvY2F0aW9uUHJveHkpOwotICAgIG1fYWNjdXJhY3kgPSBnZW9jbHVlX2xvY2F0aW9uX2dl
dF9hY2N1cmFjeShsb2NhdGlvblByb3h5KTsKLSAgICBtX2NsaWVudC0+bm90aWZ5UG9zaXRpb25D
aGFuZ2VkKG1fdGltZXN0YW1wLCBtX2xhdGl0dWRlLCBtX2xvbmdpdHVkZSwgbV9hbHRpdHVkZSwg
bV9hY2N1cmFjeSwgbV9hbHRpdHVkZUFjY3VyYWN5KTsKLX0KLQotdm9pZCBHZW9sb2NhdGlvblBy
b3ZpZGVyR2VvY2x1ZTo6ZXJyb3JPY2N1cnJlZChjb25zdCBjaGFyKiBtZXNzYWdlKQotewotICAg
IG1faXNVcGRhdGluZyA9IGZhbHNlOwotICAgIG1fY2xpZW50LT5ub3RpZnlFcnJvck9jY3VycmVk
KG1lc3NhZ2UpOwotfQotCi12b2lkIEdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlOjp1cGRhdGVD
bGllbnRSZXF1aXJlbWVudHMoKQotewotICAgIGlmICghbV9jbGllbnRQcm94eSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgR2VvY2x1ZUFjY3VyYWN5TGV2ZWwgYWNjdXJhY3lMZXZlbCA9IG1fZW5h
YmxlSGlnaEFjY3VyYWN5ID8gR2VvY2x1ZUFjY3VyYWN5TGV2ZWxFeGFjdCA6IEdlb2NsdWVBY2N1
cmFjeUxldmVsQ2l0eTsKLSAgICBnZW9jbHVlX2NsaWVudF9zZXRfcmVxdWVzdGVkX2FjY3VyYWN5
X2xldmVsKG1fY2xpZW50UHJveHkuZ2V0KCksIGFjY3VyYWN5TGV2ZWwpOwotfQotCi0jZW5kaWYg
Ly8gRU5BQkxFKEdFT0xPQ0FUSU9OKSAmJiBVU0UoR0VPQ0xVRTIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvY21ha2UvRmluZEdlb0NsdWUuY21ha2UgYi9Tb3VyY2UvY21ha2UvRmluZEdlb0NsdWUuY21h
a2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzNDEwYzhmYzc2YjQ4NmE3ZjdiMTQ4
MjU2NDc1MDc2YzhiNGJkYTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL2NtYWtlL0ZpbmRHZW9DbHVlLmNtYWtlCisrKyAvZGV2L251bGwKQEAg
LTEsNDkgKzAsMCBAQAotIyAtIFRyeSB0byBmaW5kIEdlb0NsdWUKLSMgT25jZSBkb25lLCB0aGlz
IHdpbGwgZGVmaW5lCi0jCi0jICBHRU9DTFVFX0ZPVU5EIC0gc3lzdGVtIGhhcyBHZW9DbHVlCi0j
ICBHRU9DTFVFX0lOQ0xVREVfRElSUyAtIHRoZSBHZW9DbHVlIGluY2x1ZGUgZGlyZWN0b3JpZXMK
LSMgIEdFT0NMVUVfTElCUkFSSUVTIC0gbGluayB0aGVzZSB0byB1c2UgR2VvQ2x1ZQotIwotIyBD
b3B5cmlnaHQgKEMpIDIwMTIgUmFwaGFlbCBLdWJvIGRhIENvc3RhIDxyYWt1Y29Ad2Via2l0Lm9y
Zz4KLSMgQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IElnYWxpYSBTLkwuCi0jCi0jIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTCi0jIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0jIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBI
T0xERVIgT1IgSVRTCi0jIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotIyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0jIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOwotIyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwKLSMgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IKLSMgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRgotIyBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotZmlu
ZF9wYWNrYWdlKFBrZ0NvbmZpZykKLXBrZ19jaGVja19tb2R1bGVzKEdFT0NMVUUgZ2VvY2x1ZSkK
LQotc2V0KFZFUlNJT05fT0sgVFJVRSkKLWlmIChHRU9DTFVFX1ZFUlNJT04pCi0gICAgaWYgKEdF
T0NMVUVfRklORF9WRVJTSU9OX0VYQUNUKQotICAgICAgICBpZiAoTk9UKCIke0dFT0NMVUVfRklO
RF9WRVJTSU9OfSIgVkVSU0lPTl9FUVVBTCAiJHtHRU9DTFVFX1ZFUlNJT059IikpCi0gICAgICAg
ICAgICBzZXQoVkVSU0lPTl9PSyBGQUxTRSkKLSAgICAgICAgZW5kaWYgKCkKLSAgICBlbHNlICgp
Ci0gICAgICAgIGlmICgiJHtHRU9DTFVFX1ZFUlNJT059IiBWRVJTSU9OX0xFU1MgIiR7R0VPQ0xV
RV9GSU5EX1ZFUlNJT059IikKLSAgICAgICAgICAgIHNldChWRVJTSU9OX09LIEZBTFNFKQotICAg
ICAgICBlbmRpZiAoKQotICAgIGVuZGlmICgpCi1lbmRpZiAoKQotCi1pbmNsdWRlKEZpbmRQYWNr
YWdlSGFuZGxlU3RhbmRhcmRBcmdzKQotRklORF9QQUNLQUdFX0hBTkRMRV9TVEFOREFSRF9BUkdT
KEdFT0NMVUUgREVGQVVMVF9NU0cgR0VPQ0xVRV9JTkNMVURFX0RJUlMgR0VPQ0xVRV9MSUJSQVJJ
RVMgVkVSU0lPTl9PSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtl
IGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKaW5kZXggYzE0ZTU4ODljZThkZjhjNjM2
MjRmYjZlNjc4MGFkOWNlMDYxZWI4NS4uMjAyYTdhMmZhMjZhNTRhN2ZkNzIwMjMzZjYyMDRmZmJl
Nzg4MjgyYiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysrIGIv
U291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKQEAgLTI0MywxMyArMjQzLDggQEAgZW5kaWYg
KCkKIAogaWYgKEVOQUJMRV9HRU9MT0NBVElPTikKICAgICBmaW5kX3BhY2thZ2UoR2VvQ2x1ZTIg
Mi4xLjUpCi0gICAgaWYgKEdFT0NMVUUyX0ZPVU5EKQotICAgICAgICBTRVRfQU5EX0VYUE9TRV9U
T19CVUlMRChVU0VfR0VPQ0xVRTIgJHtHRU9DTFVFMl9GT1VORH0pCi0gICAgZWxzZSAoKQotICAg
ICAgICBmaW5kX3BhY2thZ2UoR2VvQ2x1ZSkKLSAgICAgICAgaWYgKE5PVCBHRU9DTFVFX0ZPVU5E
KQotICAgICAgICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiR2VvY2x1ZSBpcyBuZWVkZWQgZm9y
IEVOQUJMRV9HRU9MT0NBVElPTi4iKQotICAgICAgICBlbmRpZiAoKQorICAgIGlmIChOT1QgR0VP
Q0xVRTJfRk9VTkQpCisgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkdlb2NsdWUgaXMgbmVl
ZGVkIGZvciBFTkFCTEVfR0VPTE9DQVRJT04uIikKICAgICBlbmRpZiAoKQogZW5kaWYgKCkKIApk
aWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDNjZDllMzQzMmQxNzRmZTgw
NmRkYTNlODA1ODM3MWQyODM4ZDEzMDMuLjFlYTlmNmZiMDI3YWIwOGQwZGZlMDdjNWYzMDRiYzQy
Nzc1MWVkOWMgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxNy0wOC0wOSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS10gUmVtb3ZlIHN1cHBvcnQgZm9yIGdlb2NsdWUxCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQyMDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFr
ZS9GaW5kR2VvQ2x1ZS5jbWFrZTogUmVtb3ZlZC4KKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0
aW9uc0dUSy5jbWFrZToKKwogMjAxNy0wOC0wOSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGln
YWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gRW5hYmxlIFNVQlRMRV9DUllQVE8gaW4gcmVsZWFz
ZSBidWlsZHMK
</data>

          </attachment>
      

    </bug>

</bugzilla>