<?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>48532</bug_id>
          
          <creation_ts>2010-10-28 10:21:38 -0700</creation_ts>
          <short_desc>Web Inspector: make legacy resource tracking optional in the native code, make cookeis work against new resource manager.</short_desc>
          <delta_ts>2010-10-28 14:37:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>48557</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>rniwa</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>301142</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-28 10:21:38 -0700</bug_when>
    <thetext>Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301152</commentid>
    <comment_count>1</comment_count>
      <attachid>72206</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-28 10:37:50 -0700</bug_when>
    <thetext>Created attachment 72206
[PATCH] Proposed change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301156</commentid>
    <comment_count>2</comment_count>
      <attachid>72207</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-28 10:48:48 -0700</bug_when>
    <thetext>Created attachment 72207
[PATCH] Same with js fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301278</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-28 13:22:48 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/English.lproj/localizedStrings.js
	M	WebCore/inspector/InspectorCSSStore.cpp
	M	WebCore/inspector/InspectorController.cpp
	M	WebCore/inspector/InspectorController.h
	M	WebCore/inspector/InspectorResource.cpp
	M	WebCore/inspector/InspectorResource.h
	M	WebCore/inspector/InspectorResourceAgent.cpp
	M	WebCore/inspector/front-end/CookieItemsView.js
	M	WebCore/inspector/front-end/Resource.js
	M	WebCore/inspector/front-end/ResourceManager.js
	M	WebCore/inspector/front-end/inspector.js
Committed r70800</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301314</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-28 13:54:17 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/70800 might have broken SnowLeopard Intel Release (Tests)
The following tests are not passing:
http/tests/inspector/console-resource-errors.html
http/tests/inspector/console-xhr-logging.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301340</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-10-28 14:37:57 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; http://trac.webkit.org/changeset/70800 might have broken SnowLeopard Intel Release (Tests)
&gt; The following tests are not passing:
&gt; http/tests/inspector/console-resource-errors.html
&gt; http/tests/inspector/console-xhr-logging.html

This indeed seems to be the case.  Please investigate the failures.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72206</attachid>
            <date>2010-10-28 10:37:50 -0700</date>
            <delta_ts>2010-10-28 10:48:48 -0700</delta_ts>
            <desc>[PATCH] Proposed change.</desc>
            <filename>resources_cookies_messages</filename>
            <type>text/plain</type>
            <size>42882</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDg5NTY5Zi4uZjMzM2FlNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBAQAorMjAxMC0xMC0yOCAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBtYWtlIGxlZ2FjeSByZXNvdXJjZSB0
cmFja2luZyBvcHRpb25hbCBpbiB0aGUgbmF0aXZlIGNvZGUsCisgICAgICAgIG1ha2UgY29va2Vp
cyB3b3JrIGFnYWluc3QgbmV3IHJlc291cmNlIG1hbmFnZXIuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODUzMgorCisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckNTU1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU1N0
b3JlOjpyZXNvdXJjZVN0eWxlU2hlZXRUZXh0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
OjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6On5JbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDb250cm9sbGVyOjpyZWxlYXNlRnJvbnRlbmRMaWZldGltZUFnZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpwb3B1bGF0ZVNjcmlwdE9iamVjdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6dW5iaW5kQWxsUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENvbW1pdExvYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZnJhbWVEZXRhY2hlZEZyb21Q
YXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkTG9hZFJl
c291cmNlRnJvbU1lbW9yeUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ29udHJvbGxlcjo6bWFya1Jlc291cmNlQXNDYWNoZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZEZpbmlzaExvYWRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmFpbExvYWRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzb3VyY2VSZXRyaWV2
ZWRCeVhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6OnNjcmlwdEltcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6OnNldFJlc291cmNlVHJhY2tpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OmdldENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q29udHJvbGxlcjo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OmRpZENyZWF0ZVdlYlNvY2tldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDb250cm9sbGVyOjp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRz
aGFrZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRp
ZENsb3NlV2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmJyZWFrcG9pbnRzU2V0dGluZ0tleSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpnZXRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6Om1hcmtGYWlsZWQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvcHVs
YXRlT2JqZWN0V2l0aEZyYW1lUmVzb3VyY2VzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1Jlc291cmNlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlw
ZS5fbWltZVR5cGVJc0NvbnNpc3RlbnRXaXRoVHlwZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZU1hbmFnZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VNYW5hZ2VyLnByb3RvdHlwZS5fdXBkYXRlUmVzb3VyY2VXaXRoUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5wcm90b3R5cGUuZGlkRmFpbExvYWRpbmcp
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLnVwZGF0ZVJlc291cmNlKToKKwogMjAxMC0xMC0yNyAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5
IEhhdGNoZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3Ry
aW5ncy5qcyBiL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4
IDc0MDNiMjI1NzNiNGZlODFhZjVhNTUwZDI5ZGZlYTM2NGUxM2YzYjAuLmM0MzJmNzNmNGFmZDQ2
YmJhYmM3NDUzOGNjZmZhNzk1YTY2YTQyMDIgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEg
NDI0CnpjbWFEZmtAP2I4PF8oV2RPbnpha1RKT2U/JGRKajkhO3MzNSFsMXhWIWpLT25iQVYoYm18
cH1HRjl6flQ4SHlOXgp6Zm92PEZ0U1Y0TWk2SXVxdklTeCMyNjljWFg1ZURUblhEKElPb2tndTcm
M3NhUTJARm03M2lgdUZzVDQhZm1+WXYKemJaO0tlXiQ7SkcxQVBabHRwTX45TlBQKkFFJj0rZDd8
Nj9LTkNUM3BsYTJUITJpZ3JuVTxZWXsxNkxDbXNLQ0doCkUwRENBO25FKEkpCgpkZWx0YSA5ClJj
bWNhS21IRSpgPF8oV2QwMDA+QTF2PngkCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTU3RvcmUuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTU3Rv
cmUuY3BwCmluZGV4IGUwYjY1OGYuLmI3NWYxMWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNTU1N0b3JlLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NTdG9yZS5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJIVE1MSGVhZEVsZW1l
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yUmVzb3VyY2UuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgiCiAjaW5j
bHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCkBAIC0xNDIsNyArMTQzLDcgQEAgU3RyaW5nIEluc3BlY3RvckNTU1N0b3Jl
OjpzdHlsZVNoZWV0VGV4dChsb25nIHN0eWxlU2hlZXRJZCkKIAogYm9vbCBJbnNwZWN0b3JDU1NT
dG9yZTo6cmVzb3VyY2VTdHlsZVNoZWV0VGV4dChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBT
dHJpbmcqIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5yZXNv
dXJjZUNvbnRlbnRGb3JVUkwoc3R5bGVTaGVldC0+ZmluYWxVUkwoKSwgc3R5bGVTaGVldC0+ZG9j
dW1lbnQoKSwgcmVzdWx0KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6cmVz
b3VyY2VDb250ZW50KHN0eWxlU2hlZXQtPmRvY3VtZW50KCktPmZyYW1lKCksIHN0eWxlU2hlZXQt
PmZpbmFsVVJMKCksIHJlc3VsdCk7CiB9CiAKIFN0cmluZyBJbnNwZWN0b3JDU1NTdG9yZTo6aW5s
aW5lU3R5bGVTaGVldFRleHQoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCkKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggMzFmNDUwNS4uMjY5MDdhNCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTY4LDcgKzY4LDYg
QEAKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkluc3BlY3RvclByb2ZpbGVyQWdlbnQu
aCIKLSNpbmNsdWRlICJJbnNwZWN0b3JSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvclJl
c291cmNlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JTdGF0ZS5oIgogI2luY2x1ZGUgIklu
c3BlY3RvclN0b3JhZ2VBZ2VudC5oIgpAQCAtMTAxLDYgKzEwMCwxMSBAQAogI2luY2x1ZGUgPHd0
Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgorCisjaWYg
TEVHQUNZX1JFU09VUkNFX1RSQUNLSU5HX0VOQUJMRUQKKyNpbmNsdWRlICJJbnNwZWN0b3JSZXNv
dXJjZS5oIgorI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAjaW5jbHVkZSAiRGF0YWJh
c2UuaCIKQEAgLTE0MCw2ICsxNDQsNyBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JD
b250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogY2xpZW50KQogICAgICwgbV9j
bGllbnQoY2xpZW50KQogICAgICwgbV9vcGVuaW5nRnJvbnRlbmQoZmFsc2UpCiAgICAgLCBtX2Nz
c1N0b3JlKG5ldyBJbnNwZWN0b3JDU1NTdG9yZSh0aGlzKSkKKyAgICAsIG1fbWFpblJlc291cmNl
SWRlbnRpZmllcigwKQogICAgICwgbV9sb2FkRXZlbnRUaW1lKC0xLjApCiAgICAgLCBtX2RvbUNv
bnRlbnRFdmVudFRpbWUoLTEuMCkKICAgICAsIG1fZXhwaXJlZENvbnNvbGVNZXNzYWdlQ291bnQo
MCkKQEAgLTE2OCw3ICsxNzMsOSBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjp+SW5zcGVjdG9yQ29u
dHJvbGxlcigpCiAgICAgQVNTRVJUKCFtX2luc3BlY3RlZFBhZ2UpOwogICAgIEFTU0VSVCghbV9o
aWdobGlnaHRlZE5vZGUpOwogCisjaWYgTEVHQUNZX1JFU09VUkNFX1RSQUNLSU5HX0VOQUJMRUQK
ICAgICBkZWxldGVBbGxWYWx1ZXMobV9mcmFtZVJlc291cmNlcyk7CisjZW5kaWYKIAogICAgIHJl
bGVhc2VGcm9udGVuZExpZmV0aW1lQWdlbnRzKCk7CiAKQEAgLTIyNSwxMCArMjMyLDEyIEBAIGJv
b2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2VhcmNoaW5nRm9yTm9kZUluUGFnZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fc3RhdGUtPmdldEJvb2xlYW4oSW5zcGVjdG9yU3RhdGU6OnNlYXJjaGluZ0Zv
ck5vZGUpOwogfQogCisjaWYgTEVHQUNZX1JFU09VUkNFX1RSQUNLSU5HX0VOQUJMRUQKIGJvb2wg
SW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzb3VyY2VUcmFja2luZ0VuYWJsZWQoKSBjb25zdAogewog
ICAgIHJldHVybiBtX3N0YXRlLT5nZXRCb29sZWFuKEluc3BlY3RvclN0YXRlOjpyZXNvdXJjZVRy
YWNraW5nRW5hYmxlZCk7CiB9CisjZW5kaWYKIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpn
ZXRJbnNwZWN0b3JTdGF0ZShSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogc3RhdGUpCiB7CkBAIC00
ODIsOCArNDkxLDEwIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5k
KCkKICAgICByZWxlYXNlRnJvbnRlbmRMaWZldGltZUFnZW50cygpOwogICAgIG1fZnJvbnRlbmQg
PSBuZXcgSW5zcGVjdG9yRnJvbnRlbmQobV9jbGllbnQpOwogICAgIG1fZG9tQWdlbnQgPSBJbnNw
ZWN0b3JET01BZ2VudDo6Y3JlYXRlKG1fY3NzU3RvcmUuZ2V0KCksIG1fZnJvbnRlbmQuZ2V0KCkp
OwotICAgIC8vIEZJWE1FOiBlbmFibGUgcmVzb3VyY2UgYWdlbnQgb25jZSBmcm9udC1lbmQgaXMg
cmVhZHkuCi0gICAgLy8gbV9yZXNvdXJjZUFnZW50ID0gSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
Y3JlYXRlKG1faW5zcGVjdGVkUGFnZSwgbV9mcm9udGVuZC5nZXQoKSk7CisKKyNpZiAhTEVHQUNZ
X1JFU09VUkNFX1RSQUNLSU5HX0VOQUJMRUQKKyAgICBtX3Jlc291cmNlQWdlbnQgPSBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpjcmVhdGUobV9pbnNwZWN0ZWRQYWdlLCBtX2Zyb250ZW5kLmdldCgp
KTsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogICAgIG1fc3RvcmFnZUFnZW50ID0g
SW5zcGVjdG9yU3RvcmFnZUFnZW50OjpjcmVhdGUobV9mcm9udGVuZC5nZXQoKSk7CkBAIC01OTEs
NyArNjAyLDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQo
KQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlbGVhc2VGcm9udGVuZExpZmV0aW1lQWdl
bnRzKCkKIHsKKyNpZiAhTEVHQUNZX1JFU09VUkNFX1RSQUNLSU5HX0VOQUJMRUQKICAgICBtX3Jl
c291cmNlQWdlbnQuY2xlYXIoKTsKKyNlbmRpZgogCiAgICAgLy8gbV9kb21BZ2VudCBpcyBSZWZQ
dHIuIFJlbW92ZSBET00gbGlzdGVuZXJzIGZpcnN0IHRvIGVuc3VyZSB0aGF0IHRoZXJlIGFyZQog
ICAgIC8vIG5vIHJlZmVyZW5jZXMgdG8gdGhlIERPTSBhZ2VudCBmcm9tIHRoZSBET00gdHJlZS4K
QEAgLTYyNiw5ICs2MzksMTIgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpwb3B1bGF0ZVNj
cmlwdE9iamVjdHMoKQogICAgICAgICBtX2Zyb250ZW5kLT5wcm9maWxlcldhc0VuYWJsZWQoKTsK
ICNlbmRpZgogCisjaWYgTEVHQUNZX1JFU09VUkNFX1RSQUNLSU5HX0VOQUJMRUQKICAgICBSZXNv
dXJjZXNNYXA6Oml0ZXJhdG9yIHJlc291cmNlc0VuZCA9IG1fcmVzb3VyY2VzLmVuZCgpOwogICAg
IGZvciAoUmVzb3VyY2VzTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0
ICE9IHJlc291cmNlc0VuZDsgKytpdCkKICAgICAgICAgaXQtPnNlY29uZC0+dXBkYXRlU2NyaXB0
T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOworI2VuZGlmCisKICAgICBpZiAobV9kb21Db250ZW50
RXZlbnRUaW1lICE9IC0xLjApCiAgICAgICAgIG1fZnJvbnRlbmQtPmRvbUNvbnRlbnRFdmVudEZp
cmVkKG1fZG9tQ29udGVudEV2ZW50VGltZSk7CiAgICAgaWYgKG1fbG9hZEV2ZW50VGltZSAhPSAt
MS4wKQpAQCAtNjkxLDEwICs3MDcsMTIgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN0
b3JlUHJvZmlsZXIoKQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnVuYmluZEFsbFJlc291
cmNlcygpCiB7CisjaWYgTEVHQUNZX1JFU09VUkNFX1RSQUNLSU5HX0VOQUJMRUQKICAgICBSZXNv
dXJjZXNNYXA6Oml0ZXJhdG9yIHJlc291cmNlc0VuZCA9IG1fcmVzb3VyY2VzLmVuZCgpOwogICAg
IGZvciAoUmVzb3VyY2VzTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0
ICE9IHJlc291cmNlc0VuZDsgKytpdCkKICAgICAgICAgaXQtPnNlY29uZC0+cmVsZWFzZVNjcmlw
dE9iamVjdCgwKTsKLQorI2VuZGlmCisgICAgCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogICAgIERh
dGFiYXNlUmVzb3VyY2VzTWFwOjppdGVyYXRvciBkYXRhYmFzZXNFbmQgPSBtX2RhdGFiYXNlUmVz
b3VyY2VzLmVuZCgpOwogICAgIGZvciAoRGF0YWJhc2VSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9kYXRhYmFzZVJlc291cmNlcy5iZWdpbigpOyBpdCAhPSBkYXRhYmFzZXNFbmQ7ICsraXQp
CkBAIC03MDksNiArNzI3LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp1bmJpbmRBbGxS
ZXNvdXJjZXMoKQogICAgICAgICBtX3RpbWVsaW5lQWdlbnQtPnJlc2V0KCk7CiB9CiAKKyNpZiBM
RUdBQ1lfUkVTT1VSQ0VfVFJBQ0tJTkdfRU5BQkxFRAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjpwcnVuZVJlc291cmNlcyhSZXNvdXJjZXNNYXAqIHJlc291cmNlTWFwLCBEb2N1bWVudExvYWRl
ciogbG9hZGVyVG9LZWVwKQogewogICAgIEFTU0VSVF9BUkcocmVzb3VyY2VNYXAsIHJlc291cmNl
TWFwKTsKQEAgLTcyNywxNSArNzQ2LDE3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cHJ1
bmVSZXNvdXJjZXMoUmVzb3VyY2VzTWFwKiByZXNvdXJjZU1hcCwgRG9jdW1lbnRMb2FkCiAgICAg
ICAgIH0KICAgICB9CiB9CisjZW5kaWYKIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRD
b21taXRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgaWYgKCFlbmFibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1f
cmVzb3VyY2VBZ2VudC0+ZGlkQ29tbWl0TG9hZChsb2FkZXIpOwotCisjaWYgIUxFR0FDWV9SRVNP
VVJDRV9UUkFDS0lOR19FTkFCTEVECisgICAgbV9yZXNvdXJjZUFnZW50LT5kaWRDb21taXRMb2Fk
KGxvYWRlcik7CisjZW5kaWYKKyAgICAKICAgICBBU1NFUlQobV9pbnNwZWN0ZWRQYWdlKTsKIAog
ICAgIGlmIChsb2FkZXItPmZyYW1lKCkgPT0gbV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKSkg
ewpAQCAtNzgyLDYgKzgwMyw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29tbWl0
TG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyKQogI2VuZGlmCiAKICAgICAgICAgaWYgKG1fZnJv
bnRlbmQpIHsKKyNpZiBMRUdBQ1lfUkVTT1VSQ0VfVFJBQ0tJTkdfRU5BQkxFRAogICAgICAgICAg
ICAgaWYgKCFsb2FkZXItPmZyYW1lTG9hZGVyKCktPmlzTG9hZGluZ0Zyb21DYWNoZWRQYWdlKCkp
IHsKICAgICAgICAgICAgICAgICBBU1NFUlQobV9tYWluUmVzb3VyY2UgJiYgbV9tYWluUmVzb3Vy
Y2UtPmlzU2FtZUxvYWRlcihsb2FkZXIpKTsKICAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBh
ZGQgdGhlIG1haW4gcmVzb3VyY2UgdW50aWwgaXRzIGxvYWQgaXMgY29tbWl0dGVkLiBUaGlzIGlz
CkBAIC03OTUsMTQgKzgxNywxOCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENvbW1p
dExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAgICAgICAgICAvLyBpZGVudGlm
aWVyRm9ySW5pdGlhbFJlcXVlc3QuCiAgICAgICAgICAgICAgICAgbV9tYWluUmVzb3VyY2UgPSAw
OwogICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICBtX21haW5SZXNvdXJjZUlkZW50
aWZpZXIgPSAwOwogICAgICAgICAgICAgbV9mcm9udGVuZC0+ZGlkQ29tbWl0TG9hZCgpOwogICAg
ICAgICAgICAgbV9kb21BZ2VudC0+c2V0RG9jdW1lbnQobV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJh
bWUoKS0+ZG9jdW1lbnQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKKyNpZiBMRUdBQ1lfUkVTT1VS
Q0VfVFJBQ0tJTkdfRU5BQkxFRAogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbG9hZGVyLT5mcmFt
ZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQobG9hZGVyLT5m
cmFtZSgpKSkKICAgICAgICAgaWYgKFJlc291cmNlc01hcCogcmVzb3VyY2VNYXAgPSBtX2ZyYW1l
UmVzb3VyY2VzLmdldChmcmFtZSkpCiAgICAgICAgICAgICBwcnVuZVJlc291cmNlcyhyZXNvdXJj
ZU1hcCwgbG9hZGVyKTsKKyNlbmRpZgogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmZy
YW1lRGV0YWNoZWRGcm9tUGFyZW50KEZyYW1lKiByb290RnJhbWUpCkBAIC04MTAsMTQgKzgzNiwx
NiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmZyYW1lRGV0YWNoZWRGcm9tUGFyZW50KEZy
YW1lKiByb290RnJhbWUpCiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+ZnJhbWVE
ZXRhY2hlZEZyb21QYXJlbnQocm9vdEZyYW1lKTsKLQorI2lmIExFR0FDWV9SRVNPVVJDRV9UUkFD
S0lOR19FTkFCTEVECiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSByb290RnJhbWU7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dChyb290RnJhbWUpKQogICAgICAgICBp
ZiAoUmVzb3VyY2VzTWFwKiByZXNvdXJjZU1hcCA9IG1fZnJhbWVSZXNvdXJjZXMuZ2V0KGZyYW1l
KSkKICAgICAgICAgICAgIHJlbW92ZUFsbFJlc291cmNlcyhyZXNvdXJjZU1hcCk7CisjZWxzZQor
ICAgIG1fcmVzb3VyY2VBZ2VudC0+ZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQocm9vdEZyYW1lKTsK
KyNlbmRpZgogfQogCisjaWYgTEVHQUNZX1JFU09VUkNFX1RSQUNLSU5HX0VOQUJMRUQKIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkUmVzb3VyY2UoSW5zcGVjdG9yUmVzb3VyY2UqIHJlc291
cmNlKQogewogICAgIG1fcmVzb3VyY2VzLnNldChyZXNvdXJjZS0+aWRlbnRpZmllcigpLCByZXNv
dXJjZSk7CkBAIC04NzMsMjQgKzkwMSwxNCBAQCBJbnNwZWN0b3JSZXNvdXJjZSogSW5zcGVjdG9y
Q29udHJvbGxlcjo6Z2V0VHJhY2tlZFJlc291cmNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZgogCiAg
ICAgcmV0dXJuIDA7CiB9Ci0KLUluc3BlY3RvclJlc291cmNlKiBJbnNwZWN0b3JDb250cm9sbGVy
OjpyZXNvdXJjZUZvclVSTChjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAgICBmb3IgKEluc3BlY3Rv
ckNvbnRyb2xsZXI6OlJlc291cmNlc01hcDo6aXRlcmF0b3IgcmVzSXQgPSBtX3Jlc291cmNlcy5i
ZWdpbigpOyByZXNJdCAhPSBtX3Jlc291cmNlcy5lbmQoKTsgKytyZXNJdCkgewotICAgICAgICBp
ZiAocmVzSXQtPnNlY29uZC0+cmVxdWVzdFVSTCgpLnN0cmluZygpID09IHVybCkKLSAgICAgICAg
ICAgIHJldHVybiByZXNJdC0+c2Vjb25kLmdldCgpOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0K
KyNlbmRpZgogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZExvYWRSZXNvdXJjZUZyb21N
ZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBDYWNoZWRSZXNvdXJjZSog
Y2FjaGVkUmVzb3VyY2UpCiB7CiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+ZGlk
TG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKGxvYWRlciwgY2FjaGVkUmVzb3VyY2UpOwotCisj
aWYgTEVHQUNZX1JFU09VUkNFX1RSQUNLSU5HX0VOQUJMRUQKICAgICAvLyBJZiB0aGUgcmVzb3Vy
Y2UgVVJMIGlzIGFscmVhZHkga25vd24sIHdlIGRvbid0IG5lZWQgdG8gYWRkIGl0IGFnYWluIHNp
bmNlIHRoaXMgaXMganVzdCBhIGNhY2hlZCBsb2FkLgogICAgIGlmIChtX2tub3duUmVzb3VyY2Vz
LmNvbnRhaW5zKGNhY2hlZFJlc291cmNlLT51cmwoKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTkx
Miw2ICs5MzAsOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZExvYWRSZXNvdXJjZUZy
b21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciogbG9hZGVyLAogCiAgICAgaWYgKG1fZnJvbnRl
bmQpCiAgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZC5nZXQo
KSk7CisjZWxzZQorICAgIG1fcmVzb3VyY2VBZ2VudC0+ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9y
eUNhY2hlKGxvYWRlciwgY2FjaGVkUmVzb3VyY2UpOworI2VuZGlmCiB9CiAKIHZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQpAQCAtOTIwLDEwICs5NDEsMTEgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLAog
ICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKG1faW5zcGVjdGVkUGFnZSk7CiAKLSAgICBpZiAo
bV9yZXNvdXJjZUFnZW50KQotICAgICAgICBtX3Jlc291cmNlQWdlbnQtPmlkZW50aWZpZXJGb3JJ
bml0aWFsUmVxdWVzdChpZGVudGlmaWVyLCByZXF1ZXN0LnVybCgpLCBsb2FkZXIpOwotCiAgICAg
Ym9vbCBpc01haW5SZXNvdXJjZSA9IGlzTWFpblJlc291cmNlTG9hZGVyKGxvYWRlciwgcmVxdWVz
dC51cmwoKSk7CisgICAgaWYgKGlzTWFpblJlc291cmNlKQorICAgICAgICBtX21haW5SZXNvdXJj
ZUlkZW50aWZpZXIgPSBpZGVudGlmaWVyOworCisjaWYgTEVHQUNZX1JFU09VUkNFX1RSQUNLSU5H
X0VOQUJMRUQKIAogICAgIGVuc3VyZVNldHRpbmdzTG9hZGVkKCk7CiAgICAgaWYgKCFpc01haW5S
ZXNvdXJjZSAmJiAhcmVzb3VyY2VUcmFja2luZ0VuYWJsZWQoKSkKQEAgLTk0MCw2ICs5NjIsOSBA
QCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdCh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsCiAKICAgICBpZiAobV9mcm9udGVuZCAmJiBsb2FkZXIt
PmZyYW1lTG9hZGVyKCktPmlzTG9hZGluZ0Zyb21DYWNoZWRQYWdlKCkgJiYgcmVzb3VyY2UgPT0g
bV9tYWluUmVzb3VyY2UpCiAgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9m
cm9udGVuZC5nZXQoKSk7CisjZWxzZQorICAgIG1fcmVzb3VyY2VBZ2VudC0+aWRlbnRpZmllckZv
ckluaXRpYWxSZXF1ZXN0KGlkZW50aWZpZXIsIHJlcXVlc3QudXJsKCksIGxvYWRlcik7CisjZW5k
aWYKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjptYWluUmVzb3VyY2VGaXJlZERPTUNv
bnRlbnRFdmVudChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBLVVJMJiB1cmwpCkBAIC05
NzYsMjMgKzEwMDEsMjIgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsU2VuZFJlcXVl
c3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXUKICAgICBpZiAoIWVuYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fcmVzb3VyY2VBZ2VudCkKLSAgICAg
ICAgbV9yZXNvdXJjZUFnZW50LT53aWxsU2VuZFJlcXVlc3QoaWRlbnRpZmllciwgcmVxdWVzdCwg
cmVkaXJlY3RSZXNwb25zZSk7CisgICAgcmVxdWVzdC5zZXRSZXBvcnRMb2FkVGltaW5nKHRydWUp
OworICAgIC8vIE9ubHkgZW5hYmxlIHJhdyBoZWFkZXJzIGlmIGZyb250LWVuZCBpcyBhdHRhY2hl
ZCwgYXMgb3RoZXJ3aXNlIHdlIG1heSBsYWNrCisgICAgLy8gcGVybWlzc2lvbnMgdG8gZmV0Y2gg
dGhlIGhlYWRlcnMuCisgICAgaWYgKG1fZnJvbnRlbmQpCisgICAgICAgIHJlcXVlc3Quc2V0UmVw
b3J0UmF3SGVhZGVycyh0cnVlKTsKKworICAgIGJvb2wgaXNNYWluUmVzb3VyY2UgPSBtX21haW5S
ZXNvdXJjZUlkZW50aWZpZXIgPT0gaWRlbnRpZmllcjsKIAotICAgIGJvb2wgaXNNYWluUmVzb3Vy
Y2UgPSAobV9tYWluUmVzb3VyY2UgJiYgbV9tYWluUmVzb3VyY2UtPmlkZW50aWZpZXIoKSA9PSBp
ZGVudGlmaWVyKTsKICAgICBpZiAobV90aW1lbGluZUFnZW50KQogICAgICAgICBtX3RpbWVsaW5l
QWdlbnQtPndpbGxTZW5kUmVzb3VyY2VSZXF1ZXN0KGlkZW50aWZpZXIsIGlzTWFpblJlc291cmNl
LCByZXF1ZXN0KTsKIAorI2lmIExFR0FDWV9SRVNPVVJDRV9UUkFDS0lOR19FTkFCTEVECiAgICAg
UmVmUHRyPEluc3BlY3RvclJlc291cmNlPiByZXNvdXJjZSA9IGdldFRyYWNrZWRSZXNvdXJjZShp
ZGVudGlmaWVyKTsKICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBy
ZXF1ZXN0LnNldFJlcG9ydExvYWRUaW1pbmcodHJ1ZSk7Ci0gICAgLy8gT25seSBlbmFibGUgcmF3
IGhlYWRlcnMgaWYgZnJvbnQtZW5kIGlzIGF0dGFjaGVkLCBhcyBvdGhlcndpc2Ugd2UgbWF5IGxh
Y2sKLSAgICAvLyBwZXJtaXNzaW9ucyB0byBmZXRjaCB0aGUgaGVhZGVycy4KLSAgICBpZiAobV9m
cm9udGVuZCkKLSAgICAgICAgcmVxdWVzdC5zZXRSZXBvcnRSYXdIZWFkZXJzKHRydWUpOwotCiAg
ICAgaWYgKCFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIFJlZGlyZWN0
IG1heSBoYXZlIGVtcHR5IFVSTCBhbmQgd2UnZCBsaWtlIHRvIG5vdCBjcmFzaCB3aXRoIGludmFs
aWQgSGFzaE1hcCBlbnRyeS4KICAgICAgICAgLy8gU2VlIGh0dHAvdGVzdHMvbWlzYy93aWxsLXNl
bmQtcmVxdWVzdC1yZXR1cm5zLW51bGwtb24tcmVkaXJlY3QuaHRtbApAQCAtMTAxOCw2ICsxMDQy
LDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXUKIAogICAgIGlmIChyZXNvdXJjZSAhPSBtX21h
aW5SZXNvdXJjZSAmJiBtX2Zyb250ZW5kKQogICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0
T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOworI2Vsc2UKKyAgICBtX3Jlc291cmNlQWdlbnQtPndp
bGxTZW5kUmVxdWVzdChpZGVudGlmaWVyLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyNl
bmRpZgogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Om1hcmtSZXNvdXJjZUFzQ2FjaGVk
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKQEAgLTEwMjUsMTEgKzEwNTIsMTIgQEAgdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjptYXJrUmVzb3VyY2VBc0NhY2hlZCh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIpCiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+bWFya1Jlc291cmNl
QXNDYWNoZWQoaWRlbnRpZmllcik7Ci0KKyNpZiBMRUdBQ1lfUkVTT1VSQ0VfVFJBQ0tJTkdfRU5B
QkxFRAogICAgIGlmIChSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IHJlc291cmNlID0gZ2V0VHJh
Y2tlZFJlc291cmNlKGlkZW50aWZpZXIpKQogICAgICAgICByZXNvdXJjZS0+bWFya0FzQ2FjaGVk
KCk7CisjZWxzZQorICAgIG1fcmVzb3VyY2VBZ2VudC0+bWFya1Jlc291cmNlQXNDYWNoZWQoaWRl
bnRpZmllcik7CisjZW5kaWYKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9h
ZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTEwMzcsMTkgKzEwNjUs
MTcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudEwKICAgICBpZiAoIWVuYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKG1fcmVzb3VyY2VBZ2VudCkKLSAgICAgICAgbV9yZXNvdXJj
ZUFnZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgbG9hZGVyLCByZXNwb25zZSk7
Ci0KKyNpZiBMRUdBQ1lfUkVTT1VSQ0VfVFJBQ0tJTkdfRU5BQkxFRAogICAgIGlmIChSZWZQdHI8
SW5zcGVjdG9yUmVzb3VyY2U+IHJlc291cmNlID0gZ2V0VHJhY2tlZFJlc291cmNlKGlkZW50aWZp
ZXIpKSB7CiAgICAgICAgIHJlc291cmNlLT51cGRhdGVSZXNwb25zZShyZXNwb25zZSk7CiAKICAg
ICAgICAgaWYgKHJlc291cmNlICE9IG1fbWFpblJlc291cmNlICYmIG1fZnJvbnRlbmQpCiAgICAg
ICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOwog
ICAgIH0KLSAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApIHsKLSAgICAg
ICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZTog
dGhlIHNlcnZlciByZXNwb25kZWQgd2l0aCBhIHN0YXR1cyBvZiAiLCBTdHJpbmc6Om51bWJlcihy
ZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSwgIiAoIiwgcmVzcG9uc2UuaHR0cFN0YXR1c1RleHQo
KSwgJyknKTsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShPdGhlck1lc3NhZ2VTb3VyY2Us
IExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgMCwgcmVzcG9uc2Uu
dXJsKCkuc3RyaW5nKCkpOwotICAgIH0KKyAgICBVTlVTRURfUEFSQU0obG9hZGVyKTsKKyNlbHNl
CisgICAgbV9yZXNvdXJjZUFnZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgbG9h
ZGVyLCByZXNwb25zZSk7CisjZW5kaWYKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpk
aWRSZWNlaXZlQ29udGVudExlbmd0aCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludCBsZW5n
dGhSZWNlaXZlZCkKQEAgLTEwNTcsOSArMTA4Myw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQK
ICAgICBpZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fcmVzb3Vy
Y2VBZ2VudCkKLSAgICAgICAgbV9yZXNvdXJjZUFnZW50LT5kaWRSZWNlaXZlQ29udGVudExlbmd0
aChpZGVudGlmaWVyLCBsZW5ndGhSZWNlaXZlZCk7Ci0KKyNpZiBMRUdBQ1lfUkVTT1VSQ0VfVFJB
Q0tJTkdfRU5BQkxFRAogICAgIFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gcmVzb3VyY2UgPSBn
ZXRUcmFja2VkUmVzb3VyY2UoaWRlbnRpZmllcik7CiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTA2OCw2ICsxMDkyLDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjpkaWRSZWNlaXZlQ29udGVudExlbmd0aCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludAog
CiAgICAgaWYgKHJlc291cmNlICE9IG1fbWFpblJlc291cmNlICYmIG1fZnJvbnRlbmQpCiAgICAg
ICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZC5nZXQoKSk7CisjZWxz
ZQorICAgIG1fcmVzb3VyY2VBZ2VudC0+ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoaWRlbnRpZmll
ciwgbGVuZ3RoUmVjZWl2ZWQpOworI2VuZGlmCiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5p
c2hUaW1lKQpAQCAtMTA3NSwxMiArMTEwMiwxMCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaQog
ICAgIGlmICghZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9yZXNvdXJj
ZUFnZW50KQotICAgICAgICBtX3Jlc291cmNlQWdlbnQtPmRpZEZpbmlzaExvYWRpbmcoaWRlbnRp
ZmllciwgZmluaXNoVGltZSk7Ci0KICAgICBpZiAobV90aW1lbGluZUFnZW50KQogICAgICAgICBt
X3RpbWVsaW5lQWdlbnQtPmRpZEZpbmlzaExvYWRpbmdSZXNvdXJjZShpZGVudGlmaWVyLCBmYWxz
ZSwgZmluaXNoVGltZSk7CiAKKyNpZiBMRUdBQ1lfUkVTT1VSQ0VfVFJBQ0tJTkdfRU5BQkxFRAog
ICAgIFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gcmVzb3VyY2UgPSBnZXRUcmFja2VkUmVzb3Vy
Y2UoaWRlbnRpZmllcik7CiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTA5MCw2ICsxMTE1LDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmkKICAgICAvLyBObyBuZWVk
IHRvIG11dGUgdGhpcyBldmVudCBmb3IgbWFpbiByZXNvdXJjZSBzaW5jZSBpdCBoYXBwZW5zIGFm
dGVyIGRpZCBjb21taXQgbG9hZC4KICAgICBpZiAobV9mcm9udGVuZCkKICAgICAgICAgcmVzb3Vy
Y2UtPnVwZGF0ZVNjcmlwdE9iamVjdChtX2Zyb250ZW5kLmdldCgpKTsKKyNlbHNlCisgICAgbV9y
ZXNvdXJjZUFnZW50LT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOwor
I2VuZGlmCiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmFpbExvYWRpbmcodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTEw
OTcsMjcgKzExMjUsMjMgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRGYWlsTG9hZGlu
Zyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmMKICAgICBpZiAoIWVuYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fcmVzb3VyY2VBZ2VudCkKLSAgICAg
ICAgbV9yZXNvdXJjZUFnZW50LT5kaWRGYWlsTG9hZGluZyhpZGVudGlmaWVyLCBlcnJvcik7Ci0K
ICAgICBpZiAobV90aW1lbGluZUFnZW50KQogICAgICAgICBtX3RpbWVsaW5lQWdlbnQtPmRpZEZp
bmlzaExvYWRpbmdSZXNvdXJjZShpZGVudGlmaWVyLCB0cnVlLCAwKTsKIAotICAgIFN0cmluZyBt
ZXNzYWdlID0gIkZhaWxlZCB0byBsb2FkIHJlc291cmNlIjsKLSAgICBpZiAoIWVycm9yLmxvY2Fs
aXplZERlc2NyaXB0aW9uKCkuaXNFbXB0eSgpKQotICAgICAgICBtZXNzYWdlICs9ICI6ICIgKyBl
cnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpOwotICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoT3Ro
ZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3Nh
Z2UsIDAsIGVycm9yLmZhaWxpbmdVUkwoKSk7Ci0KKyNpZiBMRUdBQ1lfUkVTT1VSQ0VfVFJBQ0tJ
TkdfRU5BQkxFRAogICAgIFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gcmVzb3VyY2UgPSBnZXRU
cmFja2VkUmVzb3VyY2UoaWRlbnRpZmllcik7CiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgcmVzb3VyY2UtPm1hcmtGYWlsZWQoKTsKKyAgICByZXNvdXJjZS0+bWFy
a0ZhaWxlZChlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKICAgICByZXNvdXJjZS0+ZW5k
VGltaW5nKDApOwogCiAgICAgLy8gTm8gbmVlZCB0byBtdXRlIHRoaXMgZXZlbnQgZm9yIG1haW4g
cmVzb3VyY2Ugc2luY2UgaXQgaGFwcGVucyBhZnRlciBkaWQgY29tbWl0IGxvYWQuCiAgICAgaWYg
KG1fZnJvbnRlbmQpCiAgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9u
dGVuZC5nZXQoKSk7CisjZWxzZQorICAgIG1fcmVzb3VyY2VBZ2VudC0+ZGlkRmFpbExvYWRpbmco
aWRlbnRpZmllciwgZXJyb3IpOworI2VuZGlmCiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKQpAQCAtMTEyNSwxMiAr
MTE0OSwxMCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlc291cmNlUmV0cmlldmVkQnlY
TUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aQogICAgIGlmICghZW5hYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9yZXNvdXJjZUFnZW50KQotICAgICAgICBtX3Jl
c291cmNlQWdlbnQtPnNldE92ZXJyaWRlQ29udGVudChpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcs
IEluc3BlY3RvclJlc291cmNlOjpYSFIpOwotCiAgICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4o
SW5zcGVjdG9yU3RhdGU6Om1vbml0b3JpbmdYSFIpKQogICAgICAgICBhZGRNZXNzYWdlVG9Db25z
b2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgIlhI
UiBmaW5pc2hlZCBsb2FkaW5nOiBcIiIgKyB1cmwgKyAiXCIuIiwgc2VuZExpbmVOdW1iZXIsIHNl
bmRVUkwpOwogCisjaWYgTEVHQUNZX1JFU09VUkNFX1RSQUNLSU5HX0VOQUJMRUQKICAgICBpZiAo
IXJlc291cmNlVHJhY2tpbmdFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTE0Miw2
ICsxMTY0LDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXNvdXJjZVJldHJpZXZlZEJ5
WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGkKIAogICAgIGlmIChtX2Zyb250ZW5k
KQogICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkp
OworI2Vsc2UKKyAgICBtX3Jlc291cmNlQWdlbnQtPnNldE92ZXJyaWRlQ29udGVudChpZGVudGlm
aWVyLCBzb3VyY2VTdHJpbmcsIEluc3BlY3RvclJlc291cmNlOjpYSFIpOworI2VuZGlmCiB9CiAK
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2NyaXB0SW1wb3J0ZWQodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZykKQEAgLTExNDksOSArMTE3NCw3
IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2NyaXB0SW1wb3J0ZWQodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1fcmVzb3VyY2VB
Z2VudC0+c2V0T3ZlcnJpZGVDb250ZW50KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZywgSW5zcGVj
dG9yUmVzb3VyY2U6OlNjcmlwdCk7Ci0KKyNpZiBMRUdBQ1lfUkVTT1VSQ0VfVFJBQ0tJTkdfRU5B
QkxFRAogICAgIGlmICghcmVzb3VyY2VUcmFja2luZ0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC0xMTYzLDggKzExODYsMTIgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzY3Jp
cHRJbXBvcnRlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYKIAogICAg
IGlmIChtX2Zyb250ZW5kKQogICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1f
ZnJvbnRlbmQuZ2V0KCkpOworI2Vsc2UKKyAgICBtX3Jlc291cmNlQWdlbnQtPnNldE92ZXJyaWRl
Q29udGVudChpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcsIEluc3BlY3RvclJlc291cmNlOjpTY3Jp
cHQpOworI2VuZGlmCiB9CiAKKyNpZiBMRUdBQ1lfUkVTT1VSQ0VfVFJBQ0tJTkdfRU5BQkxFRAog
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRSZXNvdXJjZVRyYWNraW5nRW5hYmxlZChib29s
IGVuYWJsZSkKIHsKICAgICBpZiAoIWVuYWJsZWQoKSkKQEAgLTExNzMsOSArMTIwMCwxMSBAQCB2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldFJlc291cmNlVHJhY2tpbmdFbmFibGVkKGJvb2wg
ZW5hYmxlKQogICAgIEFTU0VSVChtX2luc3BlY3RlZFBhZ2UpOwogICAgIG1fc3RhdGUtPnNldEJv
b2xlYW4oSW5zcGVjdG9yU3RhdGU6OnJlc291cmNlVHJhY2tpbmdFbmFibGVkLCBlbmFibGUpOwog
fQorI2VuZGlmCiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0UmVzb3VyY2VUcmFja2lu
Z0VuYWJsZWQoYm9vbCBlbmFibGUsIGJvb2wgYWx3YXlzLCBib29sKiBuZXdTdGF0ZSkKIHsKKyNp
ZiBMRUdBQ1lfUkVTT1VSQ0VfVFJBQ0tJTkdfRU5BQkxFRAogICAgICpuZXdTdGF0ZSA9IGVuYWJs
ZTsKIAogICAgIGlmIChhbHdheXMpCkBAIC0xMTg5LDYgKzEyMTgsMTEgQEAgdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpzZXRSZXNvdXJjZVRyYWNraW5nRW5hYmxlZChib29sIGVuYWJsZSwgYm9v
bCBhbHdheXMsIGIKIAogICAgIGlmIChlbmFibGUpCiAgICAgICAgIHJlbG9hZFBhZ2UoKTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKGVuYWJsZSk7CisgICAgVU5VU0VEX1BBUkFNKGFsd2F5cyk7
CisgICAgVU5VU0VEX1BBUkFNKG5ld1N0YXRlKTsKKyNlbmRpZgogfQogCiB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmVuc3VyZVNldHRpbmdzTG9hZGVkKCkKQEAgLTEzNDgsMzMgKzEzODIsMzUg
QEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpnZXRDb29raWVzKFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4qIGNvb2tpZXMsIFdURjo6U3RyaW4KICAgICAvLyBhbHdheXMgcmV0dXJuIHRoZSBzYW1l
IHRydWUvZmFsc2UgdmFsdWUuCiAgICAgYm9vbCByYXdDb29raWVzSW1wbGVtZW50ZWQgPSBmYWxz
ZTsKIAotICAgIFJlc291cmNlc01hcDo6aXRlcmF0b3IgcmVzb3VyY2VzRW5kID0gbV9yZXNvdXJj
ZXMuZW5kKCk7Ci0gICAgZm9yIChSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJj
ZXMuYmVnaW4oKTsgaXQgIT0gcmVzb3VyY2VzRW5kOyArK2l0KSB7Ci0gICAgICAgIERvY3VtZW50
KiBkb2N1bWVudCA9IGl0LT5zZWNvbmQtPmZyYW1lKCktPmRvY3VtZW50KCk7Ci0gICAgICAgIFZl
Y3RvcjxDb29raWU+IGRvY0Nvb2tpZXNMaXN0OwotICAgICAgICByYXdDb29raWVzSW1wbGVtZW50
ZWQgPSBnZXRSYXdDb29raWVzKGRvY3VtZW50LCBpdC0+c2Vjb25kLT5yZXF1ZXN0VVJMKCksIGRv
Y0Nvb2tpZXNMaXN0KTsKLQotICAgICAgICBpZiAoIXJhd0Nvb2tpZXNJbXBsZW1lbnRlZCkgewot
ICAgICAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQgZHVwbGljYXRpb24gY2hlY2tpbmcgZm9yIHRo
ZSBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgY29va2llcy4KLSAgICAgICAgICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgICAgICAgICAgc3RyaW5nQ29va2llc0xpc3QgKz0gZG9jdW1lbnQt
PmNvb2tpZShlYyk7Ci0gICAgICAgICAgICAvLyBFeGNlcHRpb25zIGFyZSB0aHJvd24gYnkgY29v
a2llKCkgaW4gc2FuZGJveGVkIGZyYW1lcy4gVGhhdCB3b24ndCBoYXBwZW4gaGVyZQotICAgICAg
ICAgICAgLy8gYmVjYXVzZSAiZG9jdW1lbnQiIGlzIHRoZSBkb2N1bWVudCBvZiB0aGUgbWFpbiBm
cmFtZSBvZiB0aGUgcGFnZS4KLSAgICAgICAgICAgIEFTU0VSVCghZWMpOwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgaW50IGNvb2tpZXNTaXplID0gZG9jQ29va2llc0xpc3Quc2l6ZSgp
OwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb29raWVzU2l6ZTsgaSsrKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFyYXdDb29raWVzTGlzdC5jb250YWlucyhkb2NDb29raWVzTGlz
dFtpXSkpCi0gICAgICAgICAgICAgICAgICAgIHJhd0Nvb2tpZXNMaXN0LmFkZChkb2NDb29raWVz
TGlzdFtpXSk7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX2luc3BlY3RlZFBhZ2UtPm1haW5G
cmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQobV9pbnNw
ZWN0ZWRQYWdlLT5tYWluRnJhbWUoKSkpIHsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
ZnJhbWUtPmRvY3VtZW50KCk7CisgICAgICAgIGNvbnN0IENhY2hlZFJlc291cmNlTG9hZGVyOjpE
b2N1bWVudFJlc291cmNlTWFwJiBhbGxSZXNvdXJjZXMgPSBkb2N1bWVudC0+Y2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKS0+YWxsQ2FjaGVkUmVzb3VyY2VzKCk7CisgICAgICAgIENhY2hlZFJlc291cmNl
TG9hZGVyOjpEb2N1bWVudFJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBhbGxSZXNv
dXJjZXMuZW5kKCk7CisgICAgICAgIGZvciAoQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OkRvY3VtZW50
UmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYWxsUmVzb3VyY2VzLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgVmVjdG9yPENvb2tpZT4gZG9jQ29va2llc0xp
c3Q7CisgICAgICAgICAgICByYXdDb29raWVzSW1wbGVtZW50ZWQgPSBnZXRSYXdDb29raWVzKGRv
Y3VtZW50LCBLVVJMKFBhcnNlZFVSTFN0cmluZywgaXQtPnNlY29uZC0+dXJsKCkpLCBkb2NDb29r
aWVzTGlzdCk7CisKKyAgICAgICAgICAgIGlmICghcmF3Q29va2llc0ltcGxlbWVudGVkKSB7Cisg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQgZHVwbGljYXRpb24gY2hlY2tpbmcgZm9y
IHRoZSBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgY29va2llcy4KKyAgICAgICAgICAgICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgICAgICAgICBzdHJpbmdDb29raWVzTGlzdCAr
PSBkb2N1bWVudC0+Y29va2llKGVjKTsKKyAgICAgICAgICAgICAgICAvLyBFeGNlcHRpb25zIGFy
ZSB0aHJvd24gYnkgY29va2llKCkgaW4gc2FuZGJveGVkIGZyYW1lcy4gVGhhdCB3b24ndCBoYXBw
ZW4gaGVyZQorICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgImRvY3VtZW50IiBpcyB0aGUgZG9j
dW1lbnQgb2YgdGhlIG1haW4gZnJhbWUgb2YgdGhlIHBhZ2UuCisgICAgICAgICAgICAgICAgQVNT
RVJUKCFlYyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGludCBjb29r
aWVzU2l6ZSA9IGRvY0Nvb2tpZXNMaXN0LnNpemUoKTsKKyAgICAgICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGNvb2tpZXNTaXplOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFyYXdDb29raWVzTGlzdC5jb250YWlucyhkb2NDb29raWVzTGlzdFtpXSkpCisgICAgICAgICAg
ICAgICAgICAgICAgICByYXdDb29raWVzTGlzdC5hZGQoZG9jQ29va2llc0xpc3RbaV0pOworICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAogICAgIGlm
IChyYXdDb29raWVzSW1wbGVtZW50ZWQpCiAgICAgICAgICpjb29raWVzID0gYnVpbGRBcnJheUZv
ckNvb2tpZXMocmF3Q29va2llc0xpc3QpOwotICAgIGVsc2UgeworICAgIGVsc2UKICAgICAgICAg
KmNvb2tpZXNTdHJpbmcgPSBzdHJpbmdDb29raWVzTGlzdDsKLSAgICB9CiB9CiAKIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+IEluc3BlY3RvckNvbnRyb2xsZXI6OmJ1aWxkQXJyYXlGb3JDb29r
aWVzKExpc3RIYXNoU2V0PENvb2tpZT4mIGNvb2tpZXNMaXN0KQpAQCAtMTQwNiwxMSArMTQ0Miwx
NCBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yQ29udHJvbGxlcjo6YnVp
bGRPYmplY3RGb3JDb29raWUoY29uc3QgQ29vawogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmRlbGV0ZUNvb2tpZShjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUsIGNvbnN0IFN0cmluZyYgZG9t
YWluKQogewotICAgIFJlc291cmNlc01hcDo6aXRlcmF0b3IgcmVzb3VyY2VzRW5kID0gbV9yZXNv
dXJjZXMuZW5kKCk7Ci0gICAgZm9yIChSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNv
dXJjZXMuYmVnaW4oKTsgaXQgIT0gcmVzb3VyY2VzRW5kOyArK2l0KSB7Ci0gICAgICAgIERvY3Vt
ZW50KiBkb2N1bWVudCA9IGl0LT5zZWNvbmQtPmZyYW1lKCktPmRvY3VtZW50KCk7Ci0gICAgICAg
IGlmIChkb2N1bWVudC0+dXJsKCkuaG9zdCgpID09IGRvbWFpbikKLSAgICAgICAgICAgIFdlYkNv
cmU6OmRlbGV0ZUNvb2tpZShkb2N1bWVudCwgaXQtPnNlY29uZC0+cmVxdWVzdFVSTCgpLCBjb29r
aWVOYW1lKTsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1faW5zcGVjdGVkUGFnZS0+bWFpbkZy
YW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dChtX2luc3Bl
Y3RlZFBhZ2UtPm1haW5GcmFtZSgpKSkgeworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBm
cmFtZS0+ZG9jdW1lbnQoKTsKKyAgICAgICAgaWYgKGRvY3VtZW50LT51cmwoKS5ob3N0KCkgIT0g
ZG9tYWluKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGNvbnN0IENhY2hlZFJlc291
cmNlTG9hZGVyOjpEb2N1bWVudFJlc291cmNlTWFwJiBhbGxSZXNvdXJjZXMgPSBkb2N1bWVudC0+
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+YWxsQ2FjaGVkUmVzb3VyY2VzKCk7CisgICAgICAgIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpEb2N1bWVudFJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBl
bmQgPSBhbGxSZXNvdXJjZXMuZW5kKCk7CisgICAgICAgIGZvciAoQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OkRvY3VtZW50UmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYWxsUmVzb3VyY2Vz
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgIFdlYkNvcmU6OmRlbGV0ZUNv
b2tpZShkb2N1bWVudCwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIGl0LT5zZWNvbmQtPnVybCgpKSwg
Y29va2llTmFtZSk7CiAgICAgfQogfQogCkBAIC0xNTA4LDIxICsxNTQ3LDIxIEBAIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6ZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgS1VSCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQobV9pbnNwZWN0ZWRQ
YWdlKTsKIAotICAgIGlmIChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1fcmVzb3VyY2VBZ2Vu
dC0+ZGlkQ3JlYXRlV2ViU29ja2V0KGlkZW50aWZpZXIsIHJlcXVlc3RVUkwpOwotCisjaWYgTEVH
QUNZX1JFU09VUkNFX1RSQUNLSU5HX0VOQUJMRUQKICAgICBSZWZQdHI8SW5zcGVjdG9yUmVzb3Vy
Y2U+IHJlc291cmNlID0gSW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZVdlYlNvY2tldChpZGVudGlm
aWVyLCByZXF1ZXN0VVJMLCBkb2N1bWVudFVSTCk7CiAgICAgYWRkUmVzb3VyY2UocmVzb3VyY2Uu
Z2V0KCkpOwogCiAgICAgaWYgKG1fZnJvbnRlbmQpCiAgICAgICAgIHJlc291cmNlLT51cGRhdGVT
Y3JpcHRPYmplY3QobV9mcm9udGVuZC5nZXQoKSk7CisjZWxzZQorICAgIG1fcmVzb3VyY2VBZ2Vu
dC0+ZGlkQ3JlYXRlV2ViU29ja2V0KGlkZW50aWZpZXIsIHJlcXVlc3RVUkwpOworICAgIFVOVVNF
RF9QQVJBTShkb2N1bWVudFVSTCk7CisjZW5kaWYKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAg
IGlmIChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+d2lsbFNlbmRX
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KGlkZW50aWZpZXIsIHJlcXVlc3QpOwotCisjaWYgTEVH
QUNZX1JFU09VUkNFX1RSQUNLSU5HX0VOQUJMRUQKICAgICBSZWZQdHI8SW5zcGVjdG9yUmVzb3Vy
Y2U+IHJlc291cmNlID0gZ2V0VHJhY2tlZFJlc291cmNlKGlkZW50aWZpZXIpOwogICAgIGlmICgh
cmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKQEAgLTE1MzAsMTMgKzE1NjksMTQgQEAgdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QodW5z
aWduZWQgbG9uZyBpZGVudGkKICAgICByZXNvdXJjZS0+dXBkYXRlV2ViU29ja2V0UmVxdWVzdChy
ZXF1ZXN0KTsKICAgICBpZiAobV9mcm9udGVuZCkKICAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNj
cmlwdE9iamVjdChtX2Zyb250ZW5kLmdldCgpKTsKKyNlbHNlCisgICAgbV9yZXNvdXJjZUFnZW50
LT53aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QoaWRlbnRpZmllciwgcmVxdWVzdCk7
CisjZW5kaWYKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNlaXZlV2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2VB
Z2VudCkKLSAgICAgICAgbV9yZXNvdXJjZUFnZW50LT5kaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNo
YWtlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwotCisjaWYgTEVHQUNZX1JFU09VUkNF
X1RSQUNLSU5HX0VOQUJMRUQKICAgICBSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IHJlc291cmNl
ID0gZ2V0VHJhY2tlZFJlc291cmNlKGlkZW50aWZpZXIpOwogICAgIGlmICghcmVzb3VyY2UpCiAg
ICAgICAgIHJldHVybjsKQEAgLTE1NDYsMTMgKzE1ODYsMTQgQEAgdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UodW5zaWduZWQgbG9u
ZyBpZGUKICAgICByZXNvdXJjZS0+dXBkYXRlV2ViU29ja2V0UmVzcG9uc2UocmVzcG9uc2UpOwog
ICAgIGlmIChtX2Zyb250ZW5kKQogICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0
KG1fZnJvbnRlbmQuZ2V0KCkpOworI2Vsc2UKKyAgICBtX3Jlc291cmNlQWdlbnQtPmRpZFJlY2Vp
dmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7CisjZW5k
aWYKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDbG9zZVdlYlNvY2tldCh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2VBZ2VudCkKLSAgICAg
ICAgbV9yZXNvdXJjZUFnZW50LT5kaWRDbG9zZVdlYlNvY2tldChpZGVudGlmaWVyKTsKLQorI2lm
IExFR0FDWV9SRVNPVVJDRV9UUkFDS0lOR19FTkFCTEVECiAgICAgUmVmUHRyPEluc3BlY3RvclJl
c291cmNlPiByZXNvdXJjZSA9IGdldFRyYWNrZWRSZXNvdXJjZShpZGVudGlmaWVyKTsKICAgICBp
ZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm47CkBAIC0xNTYwLDYgKzE2MDEsOSBAQCB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENsb3NlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllcikKICAgICByZXNvdXJjZS0+ZW5kVGltaW5nKDApOwogICAgIGlmIChtX2Zyb250ZW5k
KQogICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkp
OworI2Vsc2UKKyAgICBtX3Jlc291cmNlQWdlbnQtPmRpZENsb3NlV2ViU29ja2V0KGlkZW50aWZp
ZXIpOworI2VuZGlmCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQogCkBAIC0xNzcz
LDkgKzE4MTcsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZEV2YWx1YXRlRm9yVGVz
dEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZwogU3RyaW5nIEluc3BlY3RvckNv
bnRyb2xsZXI6OmJyZWFrcG9pbnRzU2V0dGluZ0tleSgpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIGtleVByZWZpeCwgKCJicmVha3BvaW50czoiKSk7Ci0gICAgaWYgKCFtX21h
aW5SZXNvdXJjZSkKLSAgICAgICAgcmV0dXJuICIiOwotICAgIHJldHVybiBrZXlQcmVmaXggKyBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjptZDVCYXNlMTYobV9tYWluUmVzb3VyY2UtPnJlcXVlc3RV
UkwoKSk7CisgICAgcmV0dXJuIGtleVByZWZpeCArIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Om1k
NUJhc2UxNihtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+dXJsKCkuc3Ry
aW5nKCkpOwogfQogCiBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBJbnNwZWN0b3JDb250cm9s
bGVyOjpsb2FkQnJlYWtwb2ludHMoKQpAQCAtMjEwNyw1NSArMjE0OSwxOCBAQCB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OnNldEluc3BlY3RvckV4dGVuc2lvbkFQSShjb25zdCBTdHJpbmcmIHNv
dXJjZSkKIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpnZXRSZXNvdXJjZUNvbnRlbnQodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBib29sIGVuY29kZSwgU3RyaW5nKiBjb250ZW50KQogewor
I2lmIExFR0FDWV9SRVNPVVJDRV9UUkFDS0lOR19FTkFCTEVECiAgICAgUmVmUHRyPEluc3BlY3Rv
clJlc291cmNlPiByZXNvdXJjZSA9IG1fcmVzb3VyY2VzLmdldChpZGVudGlmaWVyKTsKICAgICBp
ZiAoIXJlc291cmNlKSB7CiAgICAgICAgICpjb250ZW50ID0gU3RyaW5nKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgKmNvbnRlbnQgPSBlbmNvZGUgPyByZXNvdXJjZS0+c291cmNlQnl0
ZXMoKSA6IHJlc291cmNlLT5zb3VyY2VTdHJpbmcoKTsKLX0KLQotYm9vbCBJbnNwZWN0b3JDb250
cm9sbGVyOjpyZXNvdXJjZUNvbnRlbnRGb3JVUkwoY29uc3QgS1VSTCYgdXJsLCBEb2N1bWVudCog
ZnJhbWVEb2N1bWVudCwgU3RyaW5nKiByZXN1bHQpCi17Ci0gICAgaWYgKCFmcmFtZURvY3VtZW50
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBTdHJpbmcgdGV4dEVuY29kaW5nTmFtZTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdG
cmFnbWVudElkZW50aWZpZXIodXJsLCBmcmFtZURvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+
ZG9jdW1lbnRMb2FkZXIoKS0+cmVxdWVzdFVSTCgpKSkgewotICAgICAgICB0ZXh0RW5jb2RpbmdO
YW1lID0gZnJhbWVEb2N1bWVudC0+aW5wdXRFbmNvZGluZygpOwotICAgICAgICBidWZmZXIgPSBm
cmFtZURvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+cHJvdmlzaW9uYWxEb2N1bWVudExvYWRl
cigpLT5tYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcgPSB1cmwuc3RyaW5nKCk7Ci0gICAgICAgIENhY2hlZFJlc291cmNlKiBj
YWNoZWRSZXNvdXJjZSA9IGZyYW1lRG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmNh
Y2hlZFJlc291cmNlKHVybFN0cmluZyk7Ci0gICAgICAgIGlmICghY2FjaGVkUmVzb3VyY2UpCi0g
ICAgICAgICAgICBjYWNoZWRSZXNvdXJjZSA9IGNhY2hlKCktPnJlc291cmNlRm9yVVJMKHVybFN0
cmluZyk7Ci0KLSAgICAgICAgQVNTRVJUKGNhY2hlZFJlc291cmNlKTsgLy8gRklYTUUoYXBhdmxv
dik6IFRoaXMgbWlnaHQgYmUgdG9vIGFnZ3Jlc3NpdmUuCi0KLSAgICAgICAgYm9vbCBpc1VucHVy
Z2VhYmxlID0gdHJ1ZTsKLSAgICAgICAgaWYgKGNhY2hlZFJlc291cmNlLT5pc1B1cmdlYWJsZSgp
KSB7Ci0gICAgICAgICAgICAvLyBJZiB0aGUgcmVzb3VyY2UgaXMgcHVyZ2VhYmxlIHRoZW4gbWFr
ZSBpdCB1bnB1cmdlYWJsZSB0byBnZXQKLSAgICAgICAgICAgIC8vIGl0cyBkYXRhLiBUaGlzIG1p
Z2h0IGZhaWwsIGluIHdoaWNoIGNhc2Ugd2UgcmV0dXJuIGFuCi0gICAgICAgICAgICAvLyBlbXB0
eSBTdHJpbmcuCi0gICAgICAgICAgICBpZiAoIWNhY2hlZFJlc291cmNlLT5tYWtlUHVyZ2VhYmxl
KGZhbHNlKSkKLSAgICAgICAgICAgICAgICBpc1VucHVyZ2VhYmxlID0gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKGlzVW5wdXJnZWFibGUpIHsKLSAgICAgICAgICAgIHRleHRFbmNvZGlu
Z05hbWUgPSBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RpbmcoKTsKLSAgICAgICAgICAgIGJ1ZmZlciA9
IGNhY2hlZFJlc291cmNlLT5kYXRhKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoYnVm
ZmVyKSB7Ci0gICAgICAgIFRleHRFbmNvZGluZyBlbmNvZGluZyh0ZXh0RW5jb2RpbmdOYW1lKTsK
LSAgICAgICAgaWYgKCFlbmNvZGluZy5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBlbmNvZGluZyA9
IFdpbmRvd3NMYXRpbjFFbmNvZGluZygpOwotICAgICAgICAqcmVzdWx0ID0gZW5jb2RpbmcuZGVj
b2RlKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGlk
ZW50aWZpZXIpOworICAgIFVOVVNFRF9QQVJBTShlbmNvZGUpOworICAgIFVOVVNFRF9QQVJBTShj
b250ZW50KTsKKyNlbmRpZgogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlbG9hZFBh
Z2UoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5o
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDE4ZGIwN2Yu
LjkxNzk2OGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTY3
LDcgKzY3LDYgQEAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudDsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3RvclByb2Zp
bGVyQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JSZXNvdXJjZTsKIGNsYXNzIEluc3BlY3RvclJlc291
cmNlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JTdGF0ZTsKIGNsYXNzIEluc3BlY3RvclN0b3JhZ2VB
Z2VudDsKQEAgLTg3LDYgKzg2LDEyIEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0b3Jh
Z2U7CiBjbGFzcyBTdG9yYWdlQXJlYTsKIAorI2RlZmluZSBMRUdBQ1lfUkVTT1VSQ0VfVFJBQ0tJ
TkdfRU5BQkxFRCAxCisKKyNpZiBMRUdBQ1lfUkVTT1VSQ0VfVFJBQ0tJTkdfRU5BQkxFRAorY2xh
c3MgSW5zcGVjdG9yUmVzb3VyY2U7CisjZW5kaWYKKwogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9B
UFBMSUNBVElPTlMpCiBjbGFzcyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ7CiAjZW5k
aWYKQEAgLTk4LDggKzEwMywxMCBAQCBjbGFzcyBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTsK
IAogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJs
aWM6CisjaWYgTEVHQUNZX1JFU09VUkNFX1RSQUNLSU5HX0VOQUJMRUQKICAgICB0eXBlZGVmIEhh
c2hNYXA8dW5zaWduZWQgbG9uZywgUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiA+IFJlc291cmNl
c01hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEZyYW1lPiwgUmVzb3VyY2VzTWFwKj4g
RnJhbWVSZXNvdXJjZXNNYXA7CisjZW5kaWYKICAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBSZWZQ
dHI8SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZT4gPiBEYXRhYmFzZVJlc291cmNlc01hcDsKICAg
ICB0eXBlZGVmIEhhc2hNYXA8aW50LCBSZWZQdHI8SW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNl
PiA+IERPTVN0b3JhZ2VSZXNvdXJjZXNNYXA7CiAKQEAgLTE2OSw5ICsxNzYsMTEgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKTsKICAg
ICB2b2lkIHNjcmlwdEltcG9ydGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VTdHJpbmcpOwogCi0gICAgdm9pZCBzZXRSZXNvdXJjZVRyYWNraW5nRW5hYmxl
ZChib29sIGVuYWJsZWQpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VUcmFja2luZ0VuYWJsZWQoYm9v
bCBlbmFibGVkLCBib29sIGFsd2F5cywgYm9vbCogbmV3U3RhdGUpOworI2lmIExFR0FDWV9SRVNP
VVJDRV9UUkFDS0lOR19FTkFCTEVECisgICAgdm9pZCBzZXRSZXNvdXJjZVRyYWNraW5nRW5hYmxl
ZChib29sIGVuYWJsZWQpOwogICAgIGJvb2wgcmVzb3VyY2VUcmFja2luZ0VuYWJsZWQoKSBjb25z
dDsKKyNlbmRpZgogCiAgICAgdm9pZCBlbnN1cmVTZXR0aW5nc0xvYWRlZCgpOwogCkBAIC0yMTQs
OSArMjIzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENsb3NlV2ViU29ja2V0KHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcik7CiAjZW5kaWYKIAorI2lmIExFR0FDWV9SRVNPVVJDRV9UUkFDS0lO
R19FTkFCTEVECiAgICAgY29uc3QgUmVzb3VyY2VzTWFwJiByZXNvdXJjZXMoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc291cmNlczsgfQotICAgIEluc3BlY3RvclJlc291cmNlKiByZXNvdXJjZUZvclVS
TChjb25zdCBTdHJpbmcmIHVybCk7Ci0gICAgYm9vbCByZXNvdXJjZUNvbnRlbnRGb3JVUkwoY29u
c3QgS1VSTCYgdXJsLCBEb2N1bWVudCogbG9hZGVyRG9jdW1lbnQsIFN0cmluZyogcmVzdWx0KTsK
KyNlbmRpZgorCiAgICAgYm9vbCBoYXNGcm9udGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJvbnRl
bmQ7IH0KIAogICAgIHZvaWQgZHJhd05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JikgY29u
c3Q7CkBAIC0zMTYsMTMgKzMyNiwxNCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBhZGRDb25zb2xl
TWVzc2FnZShQYXNzT3duUHRyPENvbnNvbGVNZXNzYWdlPik7CiAKKyNpZiBMRUdBQ1lfUkVTT1VS
Q0VfVFJBQ0tJTkdfRU5BQkxFRAogICAgIHZvaWQgYWRkUmVzb3VyY2UoSW5zcGVjdG9yUmVzb3Vy
Y2UqKTsKICAgICB2b2lkIHJlbW92ZVJlc291cmNlKEluc3BlY3RvclJlc291cmNlKik7CiAgICAg
SW5zcGVjdG9yUmVzb3VyY2UqIGdldFRyYWNrZWRSZXNvdXJjZSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIpOwotICAgIHZvaWQgZ2V0UmVzb3VyY2VDb250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgYm9vbCBlbmNvZGUsIFN0cmluZyogY29udGVudCk7Ci0KICAgICB2b2lkIHBydW5lUmVz
b3VyY2VzKFJlc291cmNlc01hcCosIERvY3VtZW50TG9hZGVyKiBsb2FkZXJUb0tlZXAgPSAwKTsK
ICAgICB2b2lkIHJlbW92ZUFsbFJlc291cmNlcyhSZXNvdXJjZXNNYXAqIG1hcCkgeyBwcnVuZVJl
c291cmNlcyhtYXApOyB9CisjZW5kaWYKKyAgICB2b2lkIGdldFJlc291cmNlQ29udGVudCh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGJvb2wgZW5jb2RlLCBTdHJpbmcqIGNvbnRlbnQpOwogCiAg
ICAgYm9vbCBpc01haW5SZXNvdXJjZUxvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25z
dCBLVVJMJiByZXF1ZXN0VXJsKTsKIApAQCAtMzQxLDcgKzM1Miw2IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX29wZW5pbmdGcm9udGVuZDsKICAgICBPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmQ+IG1f
ZnJvbnRlbmQ7CiAgICAgUmVmUHRyPEluc3BlY3RvckRPTUFnZW50PiBtX2RvbUFnZW50OwotICAg
IFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZUFnZW50PiBtX3Jlc291cmNlQWdlbnQ7CiAgICAgUmVm
UHRyPEluc3BlY3RvclN0b3JhZ2VBZ2VudD4gbV9zdG9yYWdlQWdlbnQ7CiAgICAgT3duUHRyPElu
c3BlY3RvckNTU1N0b3JlPiBtX2Nzc1N0b3JlOwogICAgIE93blB0cjxJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50PiBtX3RpbWVsaW5lQWdlbnQ7CkBAIC0zNTAsMTIgKzM2MCwxNSBAQCBwcml2YXRlOgog
I2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgT3duUHRyPEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudD4gbV9hcHBsaWNhdGlvbkNhY2hlQWdlbnQ7CiAjZW5kaWYK
LQogICAgIFJlZlB0cjxOb2RlPiBtX25vZGVUb0ZvY3VzOworI2lmIExFR0FDWV9SRVNPVVJDRV9U
UkFDS0lOR19FTkFCTEVECiAgICAgUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiBtX21haW5SZXNv
dXJjZTsKICAgICBSZXNvdXJjZXNNYXAgbV9yZXNvdXJjZXM7CiAgICAgSGFzaFNldDxTdHJpbmc+
IG1fa25vd25SZXNvdXJjZXM7CiAgICAgRnJhbWVSZXNvdXJjZXNNYXAgbV9mcmFtZVJlc291cmNl
czsKKyNlbmRpZgorICAgIFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZUFnZW50PiBtX3Jlc291cmNl
QWdlbnQ7CisgICAgdW5zaWduZWQgbG9uZyBtX21haW5SZXNvdXJjZUlkZW50aWZpZXI7CiAgICAg
ZG91YmxlIG1fbG9hZEV2ZW50VGltZTsKICAgICBkb3VibGUgbV9kb21Db250ZW50RXZlbnRUaW1l
OwogICAgIFZlY3RvcjxPd25QdHI8Q29uc29sZU1lc3NhZ2U+ID4gbV9jb25zb2xlTWVzc2FnZXM7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAgYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAKaW5kZXggMDViMWJmZi4uOWIz
Zjk1ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3Bw
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcApAQCAtMzAyLDYg
KzMwMiw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVNjcmlwdE9iamVjdChJbnNw
ZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiAKICAgICBpZiAobV9jaGFuZ2VzLmhhc0NoYW5nZShD
b21wbGV0aW9uQ2hhbmdlKSkgewogICAgICAgICBqc29uT2JqZWN0LT5zZXRCb29sZWFuKCJmYWls
ZWQiLCBtX2ZhaWxlZCk7CisgICAgICAgIGpzb25PYmplY3QtPnNldFN0cmluZygibG9jYWxpemVk
RmFpbERlc2NyaXB0aW9uIiwgbV9sb2NhbGl6ZWRGYWlsRGVzY3JpcHRpb24pOwogICAgICAgICBq
c29uT2JqZWN0LT5zZXRCb29sZWFuKCJmaW5pc2hlZCIsIG1fZmluaXNoZWQpOwogICAgICAgICBq
c29uT2JqZWN0LT5zZXRCb29sZWFuKCJkaWRDb21wbGV0aW9uQ2hhbmdlIiwgdHJ1ZSk7CiAgICAg
fQpAQCAtNDM2LDkgKzQzNywxMCBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlOjplbmRUaW1pbmco
ZG91YmxlIGFjdHVhbEVuZFRpbWUpCiAgICAgbV9jaGFuZ2VzLnNldChDb21wbGV0aW9uQ2hhbmdl
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6bWFya0ZhaWxlZCgpCit2b2lkIEluc3Bl
Y3RvclJlc291cmNlOjptYXJrRmFpbGVkKGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRp
b24pCiB7CiAgICAgbV9mYWlsZWQgPSB0cnVlOworICAgIG1fbG9jYWxpemVkRmFpbERlc2NyaXB0
aW9uID0gbG9jYWxpemVkRGVzY3JpcHRpb247CiAgICAgbV9jaGFuZ2VzLnNldChDb21wbGV0aW9u
Q2hhbmdlKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2UuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmgKaW5kZXggYWE2
MDAxZi4uYWE0YzNiMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2UuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oCkBAIC0x
MTYsNyArMTE2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHN0YXJ0VGlt
aW5nKCk7CiAgICAgICAgIHZvaWQgZW5kVGltaW5nKGRvdWJsZSBhY3R1YWxFbmRUaW1lKTsKIAot
ICAgICAgICB2b2lkIG1hcmtGYWlsZWQoKTsKKyAgICAgICAgdm9pZCBtYXJrRmFpbGVkKGNvbnN0
IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pOwogICAgICAgICB2b2lkIGFkZExlbmd0aChp
bnQgbGVuZ3RoUmVjZWl2ZWQpOwogCiAgICAgcHJpdmF0ZToKQEAgLTE3NSw2ICsxNzUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9jYWNoZWQ7CiAgICAgICAgIGJvb2wg
bV9maW5pc2hlZDsKICAgICAgICAgYm9vbCBtX2ZhaWxlZDsKKyAgICAgICAgU3RyaW5nIG1fbG9j
YWxpemVkRmFpbERlc2NyaXB0aW9uOwogICAgICAgICBpbnQgbV9sZW5ndGg7CiAgICAgICAgIGlu
dCBtX3Jlc3BvbnNlU3RhdHVzQ29kZTsKICAgICAgICAgU3RyaW5nIG1fcmVzcG9uc2VTdGF0dXNU
ZXh0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRl
eCA5ZjgwNjJmLi4yZTk2NWI2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcApAQCAtMjYzLDEwICsyNjMsOCBAQCBzdGF0aWMgdm9pZCBwb3B1bGF0ZU9i
amVjdFdpdGhGcmFtZVJlc291cmNlcyhGcmFtZSogZnJhbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9y
TwogICAgIENhY2hlZFJlc291cmNlTG9hZGVyOjpEb2N1bWVudFJlc291cmNlTWFwOjpjb25zdF9p
dGVyYXRvciBlbmQgPSBhbGxSZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6RG9jdW1lbnRSZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBhbGxSZXNv
dXJjZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIENhY2hlZFJlc291cmNl
KiBjYWNoZWRSZXNvdXJjZSA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgIGlmIChjYWNoZWRS
ZXNvdXJjZSkgewotICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY2FjaGVkUmVz
b3VyY2VPYmplY3QgPSBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKGZyYW1lLT5sb2FkZXIo
KS0+ZG9jdW1lbnRMb2FkZXIoKSwgKmNhY2hlZFJlc291cmNlKTsKLSAgICAgICAgICAgIHN1YnJl
c291cmNlcy0+cHVzaFZhbHVlKGNhY2hlZFJlc291cmNlT2JqZWN0KTsKLSAgICAgICAgfQorICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjYWNoZWRSZXNvdXJjZU9iamVjdCA9IGJ1aWxk
T2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UoZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigp
LCAqY2FjaGVkUmVzb3VyY2UpOworICAgICAgICBzdWJyZXNvdXJjZXMtPnB1c2hWYWx1ZShjYWNo
ZWRSZXNvdXJjZU9iamVjdCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
UmVzb3VyY2UuanMKaW5kZXggMmRmN2I3My4uNzExMjA2MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZS5qcwpAQCAtNTY1LDYgKzU2NSw5IEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICB8fCB0aGlzLnR5cGUgPT09IFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5UeXBlLldlYlNvY2tldCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCisg
ICAgICAgIGlmICghdGhpcy5taW1lVHlwZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBN
aWdodCBiZSBub3Qga25vd24gZm9yIGNhY2hlZCByZXNvdXJjZXMgd2l0aCBudWxsIHJlc3BvbnNl
cy4KKwogICAgICAgICBpZiAodGhpcy5taW1lVHlwZSBpbiBXZWJJbnNwZWN0b3IuTUlNRVR5cGVz
KQogICAgICAgICAgICAgcmV0dXJuIHRoaXMudHlwZSBpbiBXZWJJbnNwZWN0b3IuTUlNRVR5cGVz
W3RoaXMubWltZVR5cGVdOwogCkBAIC01OTQsNiArNTk3LDMyIEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLAogICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIFdlYkluc3BlY3Rvci5XYXJuaW5ncy5GYWlsZWRUb0xvYWQuaWQ6CisgICAgICAg
ICAgICAgICAgaWYgKHRoaXMuZmFpbGVkKSB7CisgICAgICAgICAgICAgICAgICAgIG1zZyA9IG5l
dyBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdl
Lk1lc3NhZ2VTb3VyY2UuT3RoZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuTG9nLCAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRXJyb3IsCisgICAg
ICAgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXJs
LAorICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IDEsCisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcuc3ByaW50ZihXZWJJbnNwZWN0b3Iu
V2FybmluZ3MuRmFpbGVkVG9Mb2FkLm1lc3NhZ2UsIHRoaXMubG9jYWxpemVkRmFpbERlc2NyaXB0
aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsCisgICAgICAgICAgICAgICAgICAg
ICAgICBudWxsKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2Vi
SW5zcGVjdG9yLldhcm5pbmdzLkZhaWxlZFRvTG9hZFdpdGhTdGF0dXMuaWQ6CisgICAgICAgICAg
ICAgICAgaWYgKHRoaXMuc3RhdHVzQ29kZSA+PSA0MDApIHsKKyAgICAgICAgICAgICAgICAgICAg
bXNnID0gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZShXZWJJbnNwZWN0b3IuQ29uc29s
ZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5PdGhlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5Mb2csIAorICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5FcnJv
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy51cmwsCisgICAgICAgICAgICAgICAgICAgICAgICBudWxsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZy5zcHJpbnRmKFdlYklu
c3BlY3Rvci5XYXJuaW5ncy5GYWlsZWRUb0xvYWRXaXRoU3RhdHVzLm1lc3NhZ2UsIHRoaXMuc3Rh
dHVzQ29kZSwgdGhpcy5zdGF0dXNUZXh0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bGws
CisgICAgICAgICAgICAgICAgICAgICAgICBudWxsKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChtc2cpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2VNYW5hZ2VyLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlTWFuYWdlci5qcwppbmRleCBiMTgxOTU4Li40M2E2NTVlIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VNYW5hZ2VyLmpzCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZU1hbmFnZXIuanMKQEAgLTE1NCw2
ICsxNTQsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLnByb3RvdHlwZSA9IHsKIAog
ICAgIF91cGRhdGVSZXNvdXJjZVdpdGhSZXNwb25zZTogZnVuY3Rpb24ocmVzb3VyY2UsIHJlc3Bv
bnNlKQogICAgIHsKKyAgICAgICAgaWYgKHJlc291cmNlLmlzTnVsbCkKKyAgICAgICAgICAgIHJl
dHVybjsKKwogICAgICAgICByZXNvdXJjZS5taW1lVHlwZSA9IHJlc3BvbnNlLm1pbWVUeXBlOwog
ICAgICAgICByZXNvdXJjZS5leHBlY3RlZENvbnRlbnRMZW5ndGggPSByZXNwb25zZS5leHBlY3Rl
ZENvbnRlbnRMZW5ndGg7CiAgICAgICAgIHJlc291cmNlLnRleHRFbmNvZGluZ05hbWUgPSByZXNw
b25zZS50ZXh0RW5jb2RpbmdOYW1lOwpAQCAtMjEwLDYgKzIxMyw3IEBAIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIHJlc291cmNlLmZhaWxlZCA9IHRydWU7CisgICAgICAgIHJlc291cmNlLmxvY2FsaXplZEZh
aWxEZXNjcmlwdGlvbiA9IGxvY2FsaXplZERlc2NyaXB0aW9uOwogICAgICAgICByZXNvdXJjZS5m
aW5pc2hlZCA9IHRydWU7CiAgICAgICAgIHJlc291cmNlLmVuZFRpbWUgPSB0aW1lOwogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCA4NWNhM2Y2Li45ZDViMjk3
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTU4NCw2ICs1
ODQsOCBAQCBXZWJJbnNwZWN0b3IuZG9Mb2FkZWREb25lID0gZnVuY3Rpb24oKQogCiAgICAgdGhp
cy5XYXJuaW5ncyA9IHsKICAgICAgICAgSW5jb3JyZWN0TUlNRVR5cGU6IHtpZDogMCwgbWVzc2Fn
ZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXNvdXJjZSBpbnRlcnByZXRlZCBhcyAlcyBidXQg
dHJhbnNmZXJyZWQgd2l0aCBNSU1FIHR5cGUgJXMuIil9CisgICAgICAgIEZhaWxlZFRvTG9hZDog
e2lkOiAxLCBtZXNzYWdlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZhaWxlZCB0byBsb2FkIHJl
c291cmNlOiAlcyIpfQorICAgICAgICBGYWlsZWRUb0xvYWRXaXRoU3RhdHVzOiB7aWQ6IDIsIG1l
c3NhZ2U6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmFpbGVkIHRvIGxvYWQgcmVzb3VyY2U6IHRo
ZSBzZXJ2ZXIgcmVzcG9uZGVkIHdpdGggYSBzdGF0dXMgb2YgJXMgKCVzKSIpfQogICAgIH07CiAK
ICAgICB0aGlzLmFkZE1haW5FdmVudExpc3RlbmVycyhkb2N1bWVudCk7CkBAIC0xMzE4LDYgKzEz
MjAsNyBAQCBXZWJJbnNwZWN0b3IudXBkYXRlUmVzb3VyY2UgPSBmdW5jdGlvbihwYXlsb2FkKQog
CiAgICAgaWYgKHBheWxvYWQuZGlkQ29tcGxldGlvbkNoYW5nZSkgewogICAgICAgICByZXNvdXJj
ZS5mYWlsZWQgPSBwYXlsb2FkLmZhaWxlZDsKKyAgICAgICAgcmVzb3VyY2UubG9jYWxpemVkRmFp
bERlc2NyaXB0aW9uID0gcGF5bG9hZC5sb2NhbGl6ZWRGYWlsRGVzY3JpcHRpb247CiAgICAgICAg
IHJlc291cmNlLmZpbmlzaGVkID0gcGF5bG9hZC5maW5pc2hlZDsKICAgICAgICAgaWYgKHRoaXMu
cGFuZWxzLmF1ZGl0cykKICAgICAgICAgICAgIHRoaXMucGFuZWxzLmF1ZGl0cy5yZXNvdXJjZUZp
bmlzaGVkKHJlc291cmNlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72207</attachid>
            <date>2010-10-28 10:48:48 -0700</date>
            <delta_ts>2010-10-28 13:05:34 -0700</delta_ts>
            <desc>[PATCH] Same with js fixed.</desc>
            <filename>resources_cookies_messages</filename>
            <type>text/plain</type>
            <size>43762</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDg5NTY5Zi4uZjMzM2FlNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBAQAorMjAxMC0xMC0yOCAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBtYWtlIGxlZ2FjeSByZXNvdXJjZSB0
cmFja2luZyBvcHRpb25hbCBpbiB0aGUgbmF0aXZlIGNvZGUsCisgICAgICAgIG1ha2UgY29va2Vp
cyB3b3JrIGFnYWluc3QgbmV3IHJlc291cmNlIG1hbmFnZXIuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODUzMgorCisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckNTU1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU1N0
b3JlOjpyZXNvdXJjZVN0eWxlU2hlZXRUZXh0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
OjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6On5JbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDb250cm9sbGVyOjpyZWxlYXNlRnJvbnRlbmRMaWZldGltZUFnZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpwb3B1bGF0ZVNjcmlwdE9iamVjdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6dW5iaW5kQWxsUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENvbW1pdExvYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZnJhbWVEZXRhY2hlZEZyb21Q
YXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkTG9hZFJl
c291cmNlRnJvbU1lbW9yeUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ29udHJvbGxlcjo6bWFya1Jlc291cmNlQXNDYWNoZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZEZpbmlzaExvYWRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmFpbExvYWRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzb3VyY2VSZXRyaWV2
ZWRCeVhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6OnNjcmlwdEltcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6OnNldFJlc291cmNlVHJhY2tpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OmdldENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q29udHJvbGxlcjo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OmRpZENyZWF0ZVdlYlNvY2tldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDb250cm9sbGVyOjp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRz
aGFrZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRp
ZENsb3NlV2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmJyZWFrcG9pbnRzU2V0dGluZ0tleSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpnZXRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6Om1hcmtGYWlsZWQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvcHVs
YXRlT2JqZWN0V2l0aEZyYW1lUmVzb3VyY2VzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1Jlc291cmNlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlw
ZS5fbWltZVR5cGVJc0NvbnNpc3RlbnRXaXRoVHlwZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZU1hbmFnZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VNYW5hZ2VyLnByb3RvdHlwZS5fdXBkYXRlUmVzb3VyY2VXaXRoUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5wcm90b3R5cGUuZGlkRmFpbExvYWRpbmcp
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLnVwZGF0ZVJlc291cmNlKToKKwogMjAxMC0xMC0yNyAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5
IEhhdGNoZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3Ry
aW5ncy5qcyBiL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4
IDc0MDNiMjI1NzNiNGZlODFhZjVhNTUwZDI5ZGZlYTM2NGUxM2YzYjAuLmM0MzJmNzNmNGFmZDQ2
YmJhYmM3NDUzOGNjZmZhNzk1YTY2YTQyMDIgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEg
NDI0CnpjbWFEZmtAP2I4PF8oV2RPbnpha1RKT2U/JGRKajkhO3MzNSFsMXhWIWpLT25iQVYoYm18
cH1HRjl6flQ4SHlOXgp6Zm92PEZ0U1Y0TWk2SXVxdklTeCMyNjljWFg1ZURUblhEKElPb2tndTcm
M3NhUTJARm03M2lgdUZzVDQhZm1+WXYKemJaO0tlXiQ7SkcxQVBabHRwTX45TlBQKkFFJj0rZDd8
Nj9LTkNUM3BsYTJUITJpZ3JuVTxZWXsxNkxDbXNLQ0doCkUwRENBO25FKEkpCgpkZWx0YSA5ClJj
bWNhS21IRSpgPF8oV2QwMDA+QTF2PngkCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTU3RvcmUuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTU3Rv
cmUuY3BwCmluZGV4IGUwYjY1OGYuLmI3NWYxMWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNTU1N0b3JlLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NTdG9yZS5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJIVE1MSGVhZEVsZW1l
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yUmVzb3VyY2UuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgiCiAjaW5j
bHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCkBAIC0xNDIsNyArMTQzLDcgQEAgU3RyaW5nIEluc3BlY3RvckNTU1N0b3Jl
OjpzdHlsZVNoZWV0VGV4dChsb25nIHN0eWxlU2hlZXRJZCkKIAogYm9vbCBJbnNwZWN0b3JDU1NT
dG9yZTo6cmVzb3VyY2VTdHlsZVNoZWV0VGV4dChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBT
dHJpbmcqIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5yZXNv
dXJjZUNvbnRlbnRGb3JVUkwoc3R5bGVTaGVldC0+ZmluYWxVUkwoKSwgc3R5bGVTaGVldC0+ZG9j
dW1lbnQoKSwgcmVzdWx0KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6cmVz
b3VyY2VDb250ZW50KHN0eWxlU2hlZXQtPmRvY3VtZW50KCktPmZyYW1lKCksIHN0eWxlU2hlZXQt
PmZpbmFsVVJMKCksIHJlc3VsdCk7CiB9CiAKIFN0cmluZyBJbnNwZWN0b3JDU1NTdG9yZTo6aW5s
aW5lU3R5bGVTaGVldFRleHQoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCkKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggMzFmNDUwNS4uMjY5MDdhNCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTY4LDcgKzY4LDYg
QEAKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkluc3BlY3RvclByb2ZpbGVyQWdlbnQu
aCIKLSNpbmNsdWRlICJJbnNwZWN0b3JSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvclJl
c291cmNlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JTdGF0ZS5oIgogI2luY2x1ZGUgIklu
c3BlY3RvclN0b3JhZ2VBZ2VudC5oIgpAQCAtMTAxLDYgKzEwMCwxMSBAQAogI2luY2x1ZGUgPHd0
Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgorCisjaWYg
TEVHQUNZX1JFU09VUkNFX1RSQUNLSU5HX0VOQUJMRUQKKyNpbmNsdWRlICJJbnNwZWN0b3JSZXNv
dXJjZS5oIgorI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAjaW5jbHVkZSAiRGF0YWJh
c2UuaCIKQEAgLTE0MCw2ICsxNDQsNyBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JD
b250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogY2xpZW50KQogICAgICwgbV9j
bGllbnQoY2xpZW50KQogICAgICwgbV9vcGVuaW5nRnJvbnRlbmQoZmFsc2UpCiAgICAgLCBtX2Nz
c1N0b3JlKG5ldyBJbnNwZWN0b3JDU1NTdG9yZSh0aGlzKSkKKyAgICAsIG1fbWFpblJlc291cmNl
SWRlbnRpZmllcigwKQogICAgICwgbV9sb2FkRXZlbnRUaW1lKC0xLjApCiAgICAgLCBtX2RvbUNv
bnRlbnRFdmVudFRpbWUoLTEuMCkKICAgICAsIG1fZXhwaXJlZENvbnNvbGVNZXNzYWdlQ291bnQo
MCkKQEAgLTE2OCw3ICsxNzMsOSBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjp+SW5zcGVjdG9yQ29u
dHJvbGxlcigpCiAgICAgQVNTRVJUKCFtX2luc3BlY3RlZFBhZ2UpOwogICAgIEFTU0VSVCghbV9o
aWdobGlnaHRlZE5vZGUpOwogCisjaWYgTEVHQUNZX1JFU09VUkNFX1RSQUNLSU5HX0VOQUJMRUQK
ICAgICBkZWxldGVBbGxWYWx1ZXMobV9mcmFtZVJlc291cmNlcyk7CisjZW5kaWYKIAogICAgIHJl
bGVhc2VGcm9udGVuZExpZmV0aW1lQWdlbnRzKCk7CiAKQEAgLTIyNSwxMCArMjMyLDEyIEBAIGJv
b2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2VhcmNoaW5nRm9yTm9kZUluUGFnZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fc3RhdGUtPmdldEJvb2xlYW4oSW5zcGVjdG9yU3RhdGU6OnNlYXJjaGluZ0Zv
ck5vZGUpOwogfQogCisjaWYgTEVHQUNZX1JFU09VUkNFX1RSQUNLSU5HX0VOQUJMRUQKIGJvb2wg
SW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzb3VyY2VUcmFja2luZ0VuYWJsZWQoKSBjb25zdAogewog
ICAgIHJldHVybiBtX3N0YXRlLT5nZXRCb29sZWFuKEluc3BlY3RvclN0YXRlOjpyZXNvdXJjZVRy
YWNraW5nRW5hYmxlZCk7CiB9CisjZW5kaWYKIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpn
ZXRJbnNwZWN0b3JTdGF0ZShSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogc3RhdGUpCiB7CkBAIC00
ODIsOCArNDkxLDEwIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5k
KCkKICAgICByZWxlYXNlRnJvbnRlbmRMaWZldGltZUFnZW50cygpOwogICAgIG1fZnJvbnRlbmQg
PSBuZXcgSW5zcGVjdG9yRnJvbnRlbmQobV9jbGllbnQpOwogICAgIG1fZG9tQWdlbnQgPSBJbnNw
ZWN0b3JET01BZ2VudDo6Y3JlYXRlKG1fY3NzU3RvcmUuZ2V0KCksIG1fZnJvbnRlbmQuZ2V0KCkp
OwotICAgIC8vIEZJWE1FOiBlbmFibGUgcmVzb3VyY2UgYWdlbnQgb25jZSBmcm9udC1lbmQgaXMg
cmVhZHkuCi0gICAgLy8gbV9yZXNvdXJjZUFnZW50ID0gSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
Y3JlYXRlKG1faW5zcGVjdGVkUGFnZSwgbV9mcm9udGVuZC5nZXQoKSk7CisKKyNpZiAhTEVHQUNZ
X1JFU09VUkNFX1RSQUNLSU5HX0VOQUJMRUQKKyAgICBtX3Jlc291cmNlQWdlbnQgPSBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpjcmVhdGUobV9pbnNwZWN0ZWRQYWdlLCBtX2Zyb250ZW5kLmdldCgp
KTsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogICAgIG1fc3RvcmFnZUFnZW50ID0g
SW5zcGVjdG9yU3RvcmFnZUFnZW50OjpjcmVhdGUobV9mcm9udGVuZC5nZXQoKSk7CkBAIC01OTEs
NyArNjAyLDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQo
KQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlbGVhc2VGcm9udGVuZExpZmV0aW1lQWdl
bnRzKCkKIHsKKyNpZiAhTEVHQUNZX1JFU09VUkNFX1RSQUNLSU5HX0VOQUJMRUQKICAgICBtX3Jl
c291cmNlQWdlbnQuY2xlYXIoKTsKKyNlbmRpZgogCiAgICAgLy8gbV9kb21BZ2VudCBpcyBSZWZQ
dHIuIFJlbW92ZSBET00gbGlzdGVuZXJzIGZpcnN0IHRvIGVuc3VyZSB0aGF0IHRoZXJlIGFyZQog
ICAgIC8vIG5vIHJlZmVyZW5jZXMgdG8gdGhlIERPTSBhZ2VudCBmcm9tIHRoZSBET00gdHJlZS4K
QEAgLTYyNiw5ICs2MzksMTIgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpwb3B1bGF0ZVNj
cmlwdE9iamVjdHMoKQogICAgICAgICBtX2Zyb250ZW5kLT5wcm9maWxlcldhc0VuYWJsZWQoKTsK
ICNlbmRpZgogCisjaWYgTEVHQUNZX1JFU09VUkNFX1RSQUNLSU5HX0VOQUJMRUQKICAgICBSZXNv
dXJjZXNNYXA6Oml0ZXJhdG9yIHJlc291cmNlc0VuZCA9IG1fcmVzb3VyY2VzLmVuZCgpOwogICAg
IGZvciAoUmVzb3VyY2VzTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0
ICE9IHJlc291cmNlc0VuZDsgKytpdCkKICAgICAgICAgaXQtPnNlY29uZC0+dXBkYXRlU2NyaXB0
T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOworI2VuZGlmCisKICAgICBpZiAobV9kb21Db250ZW50
RXZlbnRUaW1lICE9IC0xLjApCiAgICAgICAgIG1fZnJvbnRlbmQtPmRvbUNvbnRlbnRFdmVudEZp
cmVkKG1fZG9tQ29udGVudEV2ZW50VGltZSk7CiAgICAgaWYgKG1fbG9hZEV2ZW50VGltZSAhPSAt
MS4wKQpAQCAtNjkxLDEwICs3MDcsMTIgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN0
b3JlUHJvZmlsZXIoKQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnVuYmluZEFsbFJlc291
cmNlcygpCiB7CisjaWYgTEVHQUNZX1JFU09VUkNFX1RSQUNLSU5HX0VOQUJMRUQKICAgICBSZXNv
dXJjZXNNYXA6Oml0ZXJhdG9yIHJlc291cmNlc0VuZCA9IG1fcmVzb3VyY2VzLmVuZCgpOwogICAg
IGZvciAoUmVzb3VyY2VzTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0
ICE9IHJlc291cmNlc0VuZDsgKytpdCkKICAgICAgICAgaXQtPnNlY29uZC0+cmVsZWFzZVNjcmlw
dE9iamVjdCgwKTsKLQorI2VuZGlmCisgICAgCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogICAgIERh
dGFiYXNlUmVzb3VyY2VzTWFwOjppdGVyYXRvciBkYXRhYmFzZXNFbmQgPSBtX2RhdGFiYXNlUmVz
b3VyY2VzLmVuZCgpOwogICAgIGZvciAoRGF0YWJhc2VSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9kYXRhYmFzZVJlc291cmNlcy5iZWdpbigpOyBpdCAhPSBkYXRhYmFzZXNFbmQ7ICsraXQp
CkBAIC03MDksNiArNzI3LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp1bmJpbmRBbGxS
ZXNvdXJjZXMoKQogICAgICAgICBtX3RpbWVsaW5lQWdlbnQtPnJlc2V0KCk7CiB9CiAKKyNpZiBM
RUdBQ1lfUkVTT1VSQ0VfVFJBQ0tJTkdfRU5BQkxFRAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjpwcnVuZVJlc291cmNlcyhSZXNvdXJjZXNNYXAqIHJlc291cmNlTWFwLCBEb2N1bWVudExvYWRl
ciogbG9hZGVyVG9LZWVwKQogewogICAgIEFTU0VSVF9BUkcocmVzb3VyY2VNYXAsIHJlc291cmNl
TWFwKTsKQEAgLTcyNywxNSArNzQ2LDE3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cHJ1
bmVSZXNvdXJjZXMoUmVzb3VyY2VzTWFwKiByZXNvdXJjZU1hcCwgRG9jdW1lbnRMb2FkCiAgICAg
ICAgIH0KICAgICB9CiB9CisjZW5kaWYKIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRD
b21taXRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgaWYgKCFlbmFibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1f
cmVzb3VyY2VBZ2VudC0+ZGlkQ29tbWl0TG9hZChsb2FkZXIpOwotCisjaWYgIUxFR0FDWV9SRVNP
VVJDRV9UUkFDS0lOR19FTkFCTEVECisgICAgbV9yZXNvdXJjZUFnZW50LT5kaWRDb21taXRMb2Fk
KGxvYWRlcik7CisjZW5kaWYKKyAgICAKICAgICBBU1NFUlQobV9pbnNwZWN0ZWRQYWdlKTsKIAog
ICAgIGlmIChsb2FkZXItPmZyYW1lKCkgPT0gbV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKSkg
ewpAQCAtNzgyLDYgKzgwMyw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29tbWl0
TG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyKQogI2VuZGlmCiAKICAgICAgICAgaWYgKG1fZnJv
bnRlbmQpIHsKKyNpZiBMRUdBQ1lfUkVTT1VSQ0VfVFJBQ0tJTkdfRU5BQkxFRAogICAgICAgICAg
ICAgaWYgKCFsb2FkZXItPmZyYW1lTG9hZGVyKCktPmlzTG9hZGluZ0Zyb21DYWNoZWRQYWdlKCkp
IHsKICAgICAgICAgICAgICAgICBBU1NFUlQobV9tYWluUmVzb3VyY2UgJiYgbV9tYWluUmVzb3Vy
Y2UtPmlzU2FtZUxvYWRlcihsb2FkZXIpKTsKICAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBh
ZGQgdGhlIG1haW4gcmVzb3VyY2UgdW50aWwgaXRzIGxvYWQgaXMgY29tbWl0dGVkLiBUaGlzIGlz
CkBAIC03OTUsMTQgKzgxNywxOCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENvbW1p
dExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAgICAgICAgICAvLyBpZGVudGlm
aWVyRm9ySW5pdGlhbFJlcXVlc3QuCiAgICAgICAgICAgICAgICAgbV9tYWluUmVzb3VyY2UgPSAw
OwogICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICBtX21haW5SZXNvdXJjZUlkZW50
aWZpZXIgPSAwOwogICAgICAgICAgICAgbV9mcm9udGVuZC0+ZGlkQ29tbWl0TG9hZCgpOwogICAg
ICAgICAgICAgbV9kb21BZ2VudC0+c2V0RG9jdW1lbnQobV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJh
bWUoKS0+ZG9jdW1lbnQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKKyNpZiBMRUdBQ1lfUkVTT1VS
Q0VfVFJBQ0tJTkdfRU5BQkxFRAogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbG9hZGVyLT5mcmFt
ZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQobG9hZGVyLT5m
cmFtZSgpKSkKICAgICAgICAgaWYgKFJlc291cmNlc01hcCogcmVzb3VyY2VNYXAgPSBtX2ZyYW1l
UmVzb3VyY2VzLmdldChmcmFtZSkpCiAgICAgICAgICAgICBwcnVuZVJlc291cmNlcyhyZXNvdXJj
ZU1hcCwgbG9hZGVyKTsKKyNlbmRpZgogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmZy
YW1lRGV0YWNoZWRGcm9tUGFyZW50KEZyYW1lKiByb290RnJhbWUpCkBAIC04MTAsMTQgKzgzNiwx
NiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmZyYW1lRGV0YWNoZWRGcm9tUGFyZW50KEZy
YW1lKiByb290RnJhbWUpCiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+ZnJhbWVE
ZXRhY2hlZEZyb21QYXJlbnQocm9vdEZyYW1lKTsKLQorI2lmIExFR0FDWV9SRVNPVVJDRV9UUkFD
S0lOR19FTkFCTEVECiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSByb290RnJhbWU7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dChyb290RnJhbWUpKQogICAgICAgICBp
ZiAoUmVzb3VyY2VzTWFwKiByZXNvdXJjZU1hcCA9IG1fZnJhbWVSZXNvdXJjZXMuZ2V0KGZyYW1l
KSkKICAgICAgICAgICAgIHJlbW92ZUFsbFJlc291cmNlcyhyZXNvdXJjZU1hcCk7CisjZWxzZQor
ICAgIG1fcmVzb3VyY2VBZ2VudC0+ZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQocm9vdEZyYW1lKTsK
KyNlbmRpZgogfQogCisjaWYgTEVHQUNZX1JFU09VUkNFX1RSQUNLSU5HX0VOQUJMRUQKIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkUmVzb3VyY2UoSW5zcGVjdG9yUmVzb3VyY2UqIHJlc291
cmNlKQogewogICAgIG1fcmVzb3VyY2VzLnNldChyZXNvdXJjZS0+aWRlbnRpZmllcigpLCByZXNv
dXJjZSk7CkBAIC04NzMsMjQgKzkwMSwxNCBAQCBJbnNwZWN0b3JSZXNvdXJjZSogSW5zcGVjdG9y
Q29udHJvbGxlcjo6Z2V0VHJhY2tlZFJlc291cmNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZgogCiAg
ICAgcmV0dXJuIDA7CiB9Ci0KLUluc3BlY3RvclJlc291cmNlKiBJbnNwZWN0b3JDb250cm9sbGVy
OjpyZXNvdXJjZUZvclVSTChjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAgICBmb3IgKEluc3BlY3Rv
ckNvbnRyb2xsZXI6OlJlc291cmNlc01hcDo6aXRlcmF0b3IgcmVzSXQgPSBtX3Jlc291cmNlcy5i
ZWdpbigpOyByZXNJdCAhPSBtX3Jlc291cmNlcy5lbmQoKTsgKytyZXNJdCkgewotICAgICAgICBp
ZiAocmVzSXQtPnNlY29uZC0+cmVxdWVzdFVSTCgpLnN0cmluZygpID09IHVybCkKLSAgICAgICAg
ICAgIHJldHVybiByZXNJdC0+c2Vjb25kLmdldCgpOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0K
KyNlbmRpZgogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZExvYWRSZXNvdXJjZUZyb21N
ZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBDYWNoZWRSZXNvdXJjZSog
Y2FjaGVkUmVzb3VyY2UpCiB7CiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+ZGlk
TG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKGxvYWRlciwgY2FjaGVkUmVzb3VyY2UpOwotCisj
aWYgTEVHQUNZX1JFU09VUkNFX1RSQUNLSU5HX0VOQUJMRUQKICAgICAvLyBJZiB0aGUgcmVzb3Vy
Y2UgVVJMIGlzIGFscmVhZHkga25vd24sIHdlIGRvbid0IG5lZWQgdG8gYWRkIGl0IGFnYWluIHNp
bmNlIHRoaXMgaXMganVzdCBhIGNhY2hlZCBsb2FkLgogICAgIGlmIChtX2tub3duUmVzb3VyY2Vz
LmNvbnRhaW5zKGNhY2hlZFJlc291cmNlLT51cmwoKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTkx
Miw2ICs5MzAsOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZExvYWRSZXNvdXJjZUZy
b21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciogbG9hZGVyLAogCiAgICAgaWYgKG1fZnJvbnRl
bmQpCiAgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZC5nZXQo
KSk7CisjZWxzZQorICAgIG1fcmVzb3VyY2VBZ2VudC0+ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9y
eUNhY2hlKGxvYWRlciwgY2FjaGVkUmVzb3VyY2UpOworI2VuZGlmCiB9CiAKIHZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQpAQCAtOTIwLDEwICs5NDEsMTEgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLAog
ICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKG1faW5zcGVjdGVkUGFnZSk7CiAKLSAgICBpZiAo
bV9yZXNvdXJjZUFnZW50KQotICAgICAgICBtX3Jlc291cmNlQWdlbnQtPmlkZW50aWZpZXJGb3JJ
bml0aWFsUmVxdWVzdChpZGVudGlmaWVyLCByZXF1ZXN0LnVybCgpLCBsb2FkZXIpOwotCiAgICAg
Ym9vbCBpc01haW5SZXNvdXJjZSA9IGlzTWFpblJlc291cmNlTG9hZGVyKGxvYWRlciwgcmVxdWVz
dC51cmwoKSk7CisgICAgaWYgKGlzTWFpblJlc291cmNlKQorICAgICAgICBtX21haW5SZXNvdXJj
ZUlkZW50aWZpZXIgPSBpZGVudGlmaWVyOworCisjaWYgTEVHQUNZX1JFU09VUkNFX1RSQUNLSU5H
X0VOQUJMRUQKIAogICAgIGVuc3VyZVNldHRpbmdzTG9hZGVkKCk7CiAgICAgaWYgKCFpc01haW5S
ZXNvdXJjZSAmJiAhcmVzb3VyY2VUcmFja2luZ0VuYWJsZWQoKSkKQEAgLTk0MCw2ICs5NjIsOSBA
QCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdCh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsCiAKICAgICBpZiAobV9mcm9udGVuZCAmJiBsb2FkZXIt
PmZyYW1lTG9hZGVyKCktPmlzTG9hZGluZ0Zyb21DYWNoZWRQYWdlKCkgJiYgcmVzb3VyY2UgPT0g
bV9tYWluUmVzb3VyY2UpCiAgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9m
cm9udGVuZC5nZXQoKSk7CisjZWxzZQorICAgIG1fcmVzb3VyY2VBZ2VudC0+aWRlbnRpZmllckZv
ckluaXRpYWxSZXF1ZXN0KGlkZW50aWZpZXIsIHJlcXVlc3QudXJsKCksIGxvYWRlcik7CisjZW5k
aWYKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjptYWluUmVzb3VyY2VGaXJlZERPTUNv
bnRlbnRFdmVudChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBLVVJMJiB1cmwpCkBAIC05
NzYsMjMgKzEwMDEsMjIgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsU2VuZFJlcXVl
c3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXUKICAgICBpZiAoIWVuYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fcmVzb3VyY2VBZ2VudCkKLSAgICAg
ICAgbV9yZXNvdXJjZUFnZW50LT53aWxsU2VuZFJlcXVlc3QoaWRlbnRpZmllciwgcmVxdWVzdCwg
cmVkaXJlY3RSZXNwb25zZSk7CisgICAgcmVxdWVzdC5zZXRSZXBvcnRMb2FkVGltaW5nKHRydWUp
OworICAgIC8vIE9ubHkgZW5hYmxlIHJhdyBoZWFkZXJzIGlmIGZyb250LWVuZCBpcyBhdHRhY2hl
ZCwgYXMgb3RoZXJ3aXNlIHdlIG1heSBsYWNrCisgICAgLy8gcGVybWlzc2lvbnMgdG8gZmV0Y2gg
dGhlIGhlYWRlcnMuCisgICAgaWYgKG1fZnJvbnRlbmQpCisgICAgICAgIHJlcXVlc3Quc2V0UmVw
b3J0UmF3SGVhZGVycyh0cnVlKTsKKworICAgIGJvb2wgaXNNYWluUmVzb3VyY2UgPSBtX21haW5S
ZXNvdXJjZUlkZW50aWZpZXIgPT0gaWRlbnRpZmllcjsKIAotICAgIGJvb2wgaXNNYWluUmVzb3Vy
Y2UgPSAobV9tYWluUmVzb3VyY2UgJiYgbV9tYWluUmVzb3VyY2UtPmlkZW50aWZpZXIoKSA9PSBp
ZGVudGlmaWVyKTsKICAgICBpZiAobV90aW1lbGluZUFnZW50KQogICAgICAgICBtX3RpbWVsaW5l
QWdlbnQtPndpbGxTZW5kUmVzb3VyY2VSZXF1ZXN0KGlkZW50aWZpZXIsIGlzTWFpblJlc291cmNl
LCByZXF1ZXN0KTsKIAorI2lmIExFR0FDWV9SRVNPVVJDRV9UUkFDS0lOR19FTkFCTEVECiAgICAg
UmVmUHRyPEluc3BlY3RvclJlc291cmNlPiByZXNvdXJjZSA9IGdldFRyYWNrZWRSZXNvdXJjZShp
ZGVudGlmaWVyKTsKICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBy
ZXF1ZXN0LnNldFJlcG9ydExvYWRUaW1pbmcodHJ1ZSk7Ci0gICAgLy8gT25seSBlbmFibGUgcmF3
IGhlYWRlcnMgaWYgZnJvbnQtZW5kIGlzIGF0dGFjaGVkLCBhcyBvdGhlcndpc2Ugd2UgbWF5IGxh
Y2sKLSAgICAvLyBwZXJtaXNzaW9ucyB0byBmZXRjaCB0aGUgaGVhZGVycy4KLSAgICBpZiAobV9m
cm9udGVuZCkKLSAgICAgICAgcmVxdWVzdC5zZXRSZXBvcnRSYXdIZWFkZXJzKHRydWUpOwotCiAg
ICAgaWYgKCFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIFJlZGlyZWN0
IG1heSBoYXZlIGVtcHR5IFVSTCBhbmQgd2UnZCBsaWtlIHRvIG5vdCBjcmFzaCB3aXRoIGludmFs
aWQgSGFzaE1hcCBlbnRyeS4KICAgICAgICAgLy8gU2VlIGh0dHAvdGVzdHMvbWlzYy93aWxsLXNl
bmQtcmVxdWVzdC1yZXR1cm5zLW51bGwtb24tcmVkaXJlY3QuaHRtbApAQCAtMTAxOCw2ICsxMDQy
LDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXUKIAogICAgIGlmIChyZXNvdXJjZSAhPSBtX21h
aW5SZXNvdXJjZSAmJiBtX2Zyb250ZW5kKQogICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0
T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOworI2Vsc2UKKyAgICBtX3Jlc291cmNlQWdlbnQtPndp
bGxTZW5kUmVxdWVzdChpZGVudGlmaWVyLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyNl
bmRpZgogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Om1hcmtSZXNvdXJjZUFzQ2FjaGVk
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKQEAgLTEwMjUsMTEgKzEwNTIsMTIgQEAgdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjptYXJrUmVzb3VyY2VBc0NhY2hlZCh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIpCiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+bWFya1Jlc291cmNl
QXNDYWNoZWQoaWRlbnRpZmllcik7Ci0KKyNpZiBMRUdBQ1lfUkVTT1VSQ0VfVFJBQ0tJTkdfRU5B
QkxFRAogICAgIGlmIChSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IHJlc291cmNlID0gZ2V0VHJh
Y2tlZFJlc291cmNlKGlkZW50aWZpZXIpKQogICAgICAgICByZXNvdXJjZS0+bWFya0FzQ2FjaGVk
KCk7CisjZWxzZQorICAgIG1fcmVzb3VyY2VBZ2VudC0+bWFya1Jlc291cmNlQXNDYWNoZWQoaWRl
bnRpZmllcik7CisjZW5kaWYKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9h
ZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTEwMzcsMTkgKzEwNjUs
MTcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudEwKICAgICBpZiAoIWVuYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKG1fcmVzb3VyY2VBZ2VudCkKLSAgICAgICAgbV9yZXNvdXJj
ZUFnZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgbG9hZGVyLCByZXNwb25zZSk7
Ci0KKyNpZiBMRUdBQ1lfUkVTT1VSQ0VfVFJBQ0tJTkdfRU5BQkxFRAogICAgIGlmIChSZWZQdHI8
SW5zcGVjdG9yUmVzb3VyY2U+IHJlc291cmNlID0gZ2V0VHJhY2tlZFJlc291cmNlKGlkZW50aWZp
ZXIpKSB7CiAgICAgICAgIHJlc291cmNlLT51cGRhdGVSZXNwb25zZShyZXNwb25zZSk7CiAKICAg
ICAgICAgaWYgKHJlc291cmNlICE9IG1fbWFpblJlc291cmNlICYmIG1fZnJvbnRlbmQpCiAgICAg
ICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOwog
ICAgIH0KLSAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApIHsKLSAgICAg
ICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZTog
dGhlIHNlcnZlciByZXNwb25kZWQgd2l0aCBhIHN0YXR1cyBvZiAiLCBTdHJpbmc6Om51bWJlcihy
ZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSwgIiAoIiwgcmVzcG9uc2UuaHR0cFN0YXR1c1RleHQo
KSwgJyknKTsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShPdGhlck1lc3NhZ2VTb3VyY2Us
IExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgMCwgcmVzcG9uc2Uu
dXJsKCkuc3RyaW5nKCkpOwotICAgIH0KKyAgICBVTlVTRURfUEFSQU0obG9hZGVyKTsKKyNlbHNl
CisgICAgbV9yZXNvdXJjZUFnZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgbG9h
ZGVyLCByZXNwb25zZSk7CisjZW5kaWYKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpk
aWRSZWNlaXZlQ29udGVudExlbmd0aCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludCBsZW5n
dGhSZWNlaXZlZCkKQEAgLTEwNTcsOSArMTA4Myw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQK
ICAgICBpZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fcmVzb3Vy
Y2VBZ2VudCkKLSAgICAgICAgbV9yZXNvdXJjZUFnZW50LT5kaWRSZWNlaXZlQ29udGVudExlbmd0
aChpZGVudGlmaWVyLCBsZW5ndGhSZWNlaXZlZCk7Ci0KKyNpZiBMRUdBQ1lfUkVTT1VSQ0VfVFJB
Q0tJTkdfRU5BQkxFRAogICAgIFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gcmVzb3VyY2UgPSBn
ZXRUcmFja2VkUmVzb3VyY2UoaWRlbnRpZmllcik7CiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTA2OCw2ICsxMDkyLDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjpkaWRSZWNlaXZlQ29udGVudExlbmd0aCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludAog
CiAgICAgaWYgKHJlc291cmNlICE9IG1fbWFpblJlc291cmNlICYmIG1fZnJvbnRlbmQpCiAgICAg
ICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZC5nZXQoKSk7CisjZWxz
ZQorICAgIG1fcmVzb3VyY2VBZ2VudC0+ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoaWRlbnRpZmll
ciwgbGVuZ3RoUmVjZWl2ZWQpOworI2VuZGlmCiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5p
c2hUaW1lKQpAQCAtMTA3NSwxMiArMTEwMiwxMCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaQog
ICAgIGlmICghZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9yZXNvdXJj
ZUFnZW50KQotICAgICAgICBtX3Jlc291cmNlQWdlbnQtPmRpZEZpbmlzaExvYWRpbmcoaWRlbnRp
ZmllciwgZmluaXNoVGltZSk7Ci0KICAgICBpZiAobV90aW1lbGluZUFnZW50KQogICAgICAgICBt
X3RpbWVsaW5lQWdlbnQtPmRpZEZpbmlzaExvYWRpbmdSZXNvdXJjZShpZGVudGlmaWVyLCBmYWxz
ZSwgZmluaXNoVGltZSk7CiAKKyNpZiBMRUdBQ1lfUkVTT1VSQ0VfVFJBQ0tJTkdfRU5BQkxFRAog
ICAgIFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gcmVzb3VyY2UgPSBnZXRUcmFja2VkUmVzb3Vy
Y2UoaWRlbnRpZmllcik7CiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTA5MCw2ICsxMTE1LDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmkKICAgICAvLyBObyBuZWVk
IHRvIG11dGUgdGhpcyBldmVudCBmb3IgbWFpbiByZXNvdXJjZSBzaW5jZSBpdCBoYXBwZW5zIGFm
dGVyIGRpZCBjb21taXQgbG9hZC4KICAgICBpZiAobV9mcm9udGVuZCkKICAgICAgICAgcmVzb3Vy
Y2UtPnVwZGF0ZVNjcmlwdE9iamVjdChtX2Zyb250ZW5kLmdldCgpKTsKKyNlbHNlCisgICAgbV9y
ZXNvdXJjZUFnZW50LT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOwor
I2VuZGlmCiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmFpbExvYWRpbmcodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTEw
OTcsMjcgKzExMjUsMjMgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRGYWlsTG9hZGlu
Zyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmMKICAgICBpZiAoIWVuYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fcmVzb3VyY2VBZ2VudCkKLSAgICAg
ICAgbV9yZXNvdXJjZUFnZW50LT5kaWRGYWlsTG9hZGluZyhpZGVudGlmaWVyLCBlcnJvcik7Ci0K
ICAgICBpZiAobV90aW1lbGluZUFnZW50KQogICAgICAgICBtX3RpbWVsaW5lQWdlbnQtPmRpZEZp
bmlzaExvYWRpbmdSZXNvdXJjZShpZGVudGlmaWVyLCB0cnVlLCAwKTsKIAotICAgIFN0cmluZyBt
ZXNzYWdlID0gIkZhaWxlZCB0byBsb2FkIHJlc291cmNlIjsKLSAgICBpZiAoIWVycm9yLmxvY2Fs
aXplZERlc2NyaXB0aW9uKCkuaXNFbXB0eSgpKQotICAgICAgICBtZXNzYWdlICs9ICI6ICIgKyBl
cnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpOwotICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoT3Ro
ZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3Nh
Z2UsIDAsIGVycm9yLmZhaWxpbmdVUkwoKSk7Ci0KKyNpZiBMRUdBQ1lfUkVTT1VSQ0VfVFJBQ0tJ
TkdfRU5BQkxFRAogICAgIFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gcmVzb3VyY2UgPSBnZXRU
cmFja2VkUmVzb3VyY2UoaWRlbnRpZmllcik7CiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgcmVzb3VyY2UtPm1hcmtGYWlsZWQoKTsKKyAgICByZXNvdXJjZS0+bWFy
a0ZhaWxlZChlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKICAgICByZXNvdXJjZS0+ZW5k
VGltaW5nKDApOwogCiAgICAgLy8gTm8gbmVlZCB0byBtdXRlIHRoaXMgZXZlbnQgZm9yIG1haW4g
cmVzb3VyY2Ugc2luY2UgaXQgaGFwcGVucyBhZnRlciBkaWQgY29tbWl0IGxvYWQuCiAgICAgaWYg
KG1fZnJvbnRlbmQpCiAgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9u
dGVuZC5nZXQoKSk7CisjZWxzZQorICAgIG1fcmVzb3VyY2VBZ2VudC0+ZGlkRmFpbExvYWRpbmco
aWRlbnRpZmllciwgZXJyb3IpOworI2VuZGlmCiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKQpAQCAtMTEyNSwxMiAr
MTE0OSwxMCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlc291cmNlUmV0cmlldmVkQnlY
TUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aQogICAgIGlmICghZW5hYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9yZXNvdXJjZUFnZW50KQotICAgICAgICBtX3Jl
c291cmNlQWdlbnQtPnNldE92ZXJyaWRlQ29udGVudChpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcs
IEluc3BlY3RvclJlc291cmNlOjpYSFIpOwotCiAgICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4o
SW5zcGVjdG9yU3RhdGU6Om1vbml0b3JpbmdYSFIpKQogICAgICAgICBhZGRNZXNzYWdlVG9Db25z
b2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgIlhI
UiBmaW5pc2hlZCBsb2FkaW5nOiBcIiIgKyB1cmwgKyAiXCIuIiwgc2VuZExpbmVOdW1iZXIsIHNl
bmRVUkwpOwogCisjaWYgTEVHQUNZX1JFU09VUkNFX1RSQUNLSU5HX0VOQUJMRUQKICAgICBpZiAo
IXJlc291cmNlVHJhY2tpbmdFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTE0Miw2
ICsxMTY0LDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXNvdXJjZVJldHJpZXZlZEJ5
WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGkKIAogICAgIGlmIChtX2Zyb250ZW5k
KQogICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkp
OworI2Vsc2UKKyAgICBtX3Jlc291cmNlQWdlbnQtPnNldE92ZXJyaWRlQ29udGVudChpZGVudGlm
aWVyLCBzb3VyY2VTdHJpbmcsIEluc3BlY3RvclJlc291cmNlOjpYSFIpOworI2VuZGlmCiB9CiAK
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2NyaXB0SW1wb3J0ZWQodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZykKQEAgLTExNDksOSArMTE3NCw3
IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2NyaXB0SW1wb3J0ZWQodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1fcmVzb3VyY2VB
Z2VudC0+c2V0T3ZlcnJpZGVDb250ZW50KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZywgSW5zcGVj
dG9yUmVzb3VyY2U6OlNjcmlwdCk7Ci0KKyNpZiBMRUdBQ1lfUkVTT1VSQ0VfVFJBQ0tJTkdfRU5B
QkxFRAogICAgIGlmICghcmVzb3VyY2VUcmFja2luZ0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC0xMTYzLDggKzExODYsMTIgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzY3Jp
cHRJbXBvcnRlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYKIAogICAg
IGlmIChtX2Zyb250ZW5kKQogICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1f
ZnJvbnRlbmQuZ2V0KCkpOworI2Vsc2UKKyAgICBtX3Jlc291cmNlQWdlbnQtPnNldE92ZXJyaWRl
Q29udGVudChpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcsIEluc3BlY3RvclJlc291cmNlOjpTY3Jp
cHQpOworI2VuZGlmCiB9CiAKKyNpZiBMRUdBQ1lfUkVTT1VSQ0VfVFJBQ0tJTkdfRU5BQkxFRAog
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRSZXNvdXJjZVRyYWNraW5nRW5hYmxlZChib29s
IGVuYWJsZSkKIHsKICAgICBpZiAoIWVuYWJsZWQoKSkKQEAgLTExNzMsOSArMTIwMCwxMSBAQCB2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldFJlc291cmNlVHJhY2tpbmdFbmFibGVkKGJvb2wg
ZW5hYmxlKQogICAgIEFTU0VSVChtX2luc3BlY3RlZFBhZ2UpOwogICAgIG1fc3RhdGUtPnNldEJv
b2xlYW4oSW5zcGVjdG9yU3RhdGU6OnJlc291cmNlVHJhY2tpbmdFbmFibGVkLCBlbmFibGUpOwog
fQorI2VuZGlmCiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0UmVzb3VyY2VUcmFja2lu
Z0VuYWJsZWQoYm9vbCBlbmFibGUsIGJvb2wgYWx3YXlzLCBib29sKiBuZXdTdGF0ZSkKIHsKKyNp
ZiBMRUdBQ1lfUkVTT1VSQ0VfVFJBQ0tJTkdfRU5BQkxFRAogICAgICpuZXdTdGF0ZSA9IGVuYWJs
ZTsKIAogICAgIGlmIChhbHdheXMpCkBAIC0xMTg5LDYgKzEyMTgsMTEgQEAgdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpzZXRSZXNvdXJjZVRyYWNraW5nRW5hYmxlZChib29sIGVuYWJsZSwgYm9v
bCBhbHdheXMsIGIKIAogICAgIGlmIChlbmFibGUpCiAgICAgICAgIHJlbG9hZFBhZ2UoKTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKGVuYWJsZSk7CisgICAgVU5VU0VEX1BBUkFNKGFsd2F5cyk7
CisgICAgVU5VU0VEX1BBUkFNKG5ld1N0YXRlKTsKKyNlbmRpZgogfQogCiB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmVuc3VyZVNldHRpbmdzTG9hZGVkKCkKQEAgLTEzNDgsMzMgKzEzODIsMzUg
QEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpnZXRDb29raWVzKFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4qIGNvb2tpZXMsIFdURjo6U3RyaW4KICAgICAvLyBhbHdheXMgcmV0dXJuIHRoZSBzYW1l
IHRydWUvZmFsc2UgdmFsdWUuCiAgICAgYm9vbCByYXdDb29raWVzSW1wbGVtZW50ZWQgPSBmYWxz
ZTsKIAotICAgIFJlc291cmNlc01hcDo6aXRlcmF0b3IgcmVzb3VyY2VzRW5kID0gbV9yZXNvdXJj
ZXMuZW5kKCk7Ci0gICAgZm9yIChSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJj
ZXMuYmVnaW4oKTsgaXQgIT0gcmVzb3VyY2VzRW5kOyArK2l0KSB7Ci0gICAgICAgIERvY3VtZW50
KiBkb2N1bWVudCA9IGl0LT5zZWNvbmQtPmZyYW1lKCktPmRvY3VtZW50KCk7Ci0gICAgICAgIFZl
Y3RvcjxDb29raWU+IGRvY0Nvb2tpZXNMaXN0OwotICAgICAgICByYXdDb29raWVzSW1wbGVtZW50
ZWQgPSBnZXRSYXdDb29raWVzKGRvY3VtZW50LCBpdC0+c2Vjb25kLT5yZXF1ZXN0VVJMKCksIGRv
Y0Nvb2tpZXNMaXN0KTsKLQotICAgICAgICBpZiAoIXJhd0Nvb2tpZXNJbXBsZW1lbnRlZCkgewot
ICAgICAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQgZHVwbGljYXRpb24gY2hlY2tpbmcgZm9yIHRo
ZSBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgY29va2llcy4KLSAgICAgICAgICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgICAgICAgICAgc3RyaW5nQ29va2llc0xpc3QgKz0gZG9jdW1lbnQt
PmNvb2tpZShlYyk7Ci0gICAgICAgICAgICAvLyBFeGNlcHRpb25zIGFyZSB0aHJvd24gYnkgY29v
a2llKCkgaW4gc2FuZGJveGVkIGZyYW1lcy4gVGhhdCB3b24ndCBoYXBwZW4gaGVyZQotICAgICAg
ICAgICAgLy8gYmVjYXVzZSAiZG9jdW1lbnQiIGlzIHRoZSBkb2N1bWVudCBvZiB0aGUgbWFpbiBm
cmFtZSBvZiB0aGUgcGFnZS4KLSAgICAgICAgICAgIEFTU0VSVCghZWMpOwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgaW50IGNvb2tpZXNTaXplID0gZG9jQ29va2llc0xpc3Quc2l6ZSgp
OwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb29raWVzU2l6ZTsgaSsrKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFyYXdDb29raWVzTGlzdC5jb250YWlucyhkb2NDb29raWVzTGlz
dFtpXSkpCi0gICAgICAgICAgICAgICAgICAgIHJhd0Nvb2tpZXNMaXN0LmFkZChkb2NDb29raWVz
TGlzdFtpXSk7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX2luc3BlY3RlZFBhZ2UtPm1haW5G
cmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQobV9pbnNw
ZWN0ZWRQYWdlLT5tYWluRnJhbWUoKSkpIHsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
ZnJhbWUtPmRvY3VtZW50KCk7CisgICAgICAgIGNvbnN0IENhY2hlZFJlc291cmNlTG9hZGVyOjpE
b2N1bWVudFJlc291cmNlTWFwJiBhbGxSZXNvdXJjZXMgPSBkb2N1bWVudC0+Y2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKS0+YWxsQ2FjaGVkUmVzb3VyY2VzKCk7CisgICAgICAgIENhY2hlZFJlc291cmNl
TG9hZGVyOjpEb2N1bWVudFJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBhbGxSZXNv
dXJjZXMuZW5kKCk7CisgICAgICAgIGZvciAoQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OkRvY3VtZW50
UmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYWxsUmVzb3VyY2VzLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgVmVjdG9yPENvb2tpZT4gZG9jQ29va2llc0xp
c3Q7CisgICAgICAgICAgICByYXdDb29raWVzSW1wbGVtZW50ZWQgPSBnZXRSYXdDb29raWVzKGRv
Y3VtZW50LCBLVVJMKFBhcnNlZFVSTFN0cmluZywgaXQtPnNlY29uZC0+dXJsKCkpLCBkb2NDb29r
aWVzTGlzdCk7CisKKyAgICAgICAgICAgIGlmICghcmF3Q29va2llc0ltcGxlbWVudGVkKSB7Cisg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQgZHVwbGljYXRpb24gY2hlY2tpbmcgZm9y
IHRoZSBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgY29va2llcy4KKyAgICAgICAgICAgICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgICAgICAgICBzdHJpbmdDb29raWVzTGlzdCAr
PSBkb2N1bWVudC0+Y29va2llKGVjKTsKKyAgICAgICAgICAgICAgICAvLyBFeGNlcHRpb25zIGFy
ZSB0aHJvd24gYnkgY29va2llKCkgaW4gc2FuZGJveGVkIGZyYW1lcy4gVGhhdCB3b24ndCBoYXBw
ZW4gaGVyZQorICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgImRvY3VtZW50IiBpcyB0aGUgZG9j
dW1lbnQgb2YgdGhlIG1haW4gZnJhbWUgb2YgdGhlIHBhZ2UuCisgICAgICAgICAgICAgICAgQVNT
RVJUKCFlYyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGludCBjb29r
aWVzU2l6ZSA9IGRvY0Nvb2tpZXNMaXN0LnNpemUoKTsKKyAgICAgICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGNvb2tpZXNTaXplOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFyYXdDb29raWVzTGlzdC5jb250YWlucyhkb2NDb29raWVzTGlzdFtpXSkpCisgICAgICAgICAg
ICAgICAgICAgICAgICByYXdDb29raWVzTGlzdC5hZGQoZG9jQ29va2llc0xpc3RbaV0pOworICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAogICAgIGlm
IChyYXdDb29raWVzSW1wbGVtZW50ZWQpCiAgICAgICAgICpjb29raWVzID0gYnVpbGRBcnJheUZv
ckNvb2tpZXMocmF3Q29va2llc0xpc3QpOwotICAgIGVsc2UgeworICAgIGVsc2UKICAgICAgICAg
KmNvb2tpZXNTdHJpbmcgPSBzdHJpbmdDb29raWVzTGlzdDsKLSAgICB9CiB9CiAKIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+IEluc3BlY3RvckNvbnRyb2xsZXI6OmJ1aWxkQXJyYXlGb3JDb29r
aWVzKExpc3RIYXNoU2V0PENvb2tpZT4mIGNvb2tpZXNMaXN0KQpAQCAtMTQwNiwxMSArMTQ0Miwx
NCBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yQ29udHJvbGxlcjo6YnVp
bGRPYmplY3RGb3JDb29raWUoY29uc3QgQ29vawogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmRlbGV0ZUNvb2tpZShjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUsIGNvbnN0IFN0cmluZyYgZG9t
YWluKQogewotICAgIFJlc291cmNlc01hcDo6aXRlcmF0b3IgcmVzb3VyY2VzRW5kID0gbV9yZXNv
dXJjZXMuZW5kKCk7Ci0gICAgZm9yIChSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNv
dXJjZXMuYmVnaW4oKTsgaXQgIT0gcmVzb3VyY2VzRW5kOyArK2l0KSB7Ci0gICAgICAgIERvY3Vt
ZW50KiBkb2N1bWVudCA9IGl0LT5zZWNvbmQtPmZyYW1lKCktPmRvY3VtZW50KCk7Ci0gICAgICAg
IGlmIChkb2N1bWVudC0+dXJsKCkuaG9zdCgpID09IGRvbWFpbikKLSAgICAgICAgICAgIFdlYkNv
cmU6OmRlbGV0ZUNvb2tpZShkb2N1bWVudCwgaXQtPnNlY29uZC0+cmVxdWVzdFVSTCgpLCBjb29r
aWVOYW1lKTsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1faW5zcGVjdGVkUGFnZS0+bWFpbkZy
YW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dChtX2luc3Bl
Y3RlZFBhZ2UtPm1haW5GcmFtZSgpKSkgeworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBm
cmFtZS0+ZG9jdW1lbnQoKTsKKyAgICAgICAgaWYgKGRvY3VtZW50LT51cmwoKS5ob3N0KCkgIT0g
ZG9tYWluKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGNvbnN0IENhY2hlZFJlc291
cmNlTG9hZGVyOjpEb2N1bWVudFJlc291cmNlTWFwJiBhbGxSZXNvdXJjZXMgPSBkb2N1bWVudC0+
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+YWxsQ2FjaGVkUmVzb3VyY2VzKCk7CisgICAgICAgIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpEb2N1bWVudFJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBl
bmQgPSBhbGxSZXNvdXJjZXMuZW5kKCk7CisgICAgICAgIGZvciAoQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OkRvY3VtZW50UmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYWxsUmVzb3VyY2Vz
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgIFdlYkNvcmU6OmRlbGV0ZUNv
b2tpZShkb2N1bWVudCwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIGl0LT5zZWNvbmQtPnVybCgpKSwg
Y29va2llTmFtZSk7CiAgICAgfQogfQogCkBAIC0xNTA4LDIxICsxNTQ3LDIxIEBAIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6ZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgS1VSCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQobV9pbnNwZWN0ZWRQ
YWdlKTsKIAotICAgIGlmIChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1fcmVzb3VyY2VBZ2Vu
dC0+ZGlkQ3JlYXRlV2ViU29ja2V0KGlkZW50aWZpZXIsIHJlcXVlc3RVUkwpOwotCisjaWYgTEVH
QUNZX1JFU09VUkNFX1RSQUNLSU5HX0VOQUJMRUQKICAgICBSZWZQdHI8SW5zcGVjdG9yUmVzb3Vy
Y2U+IHJlc291cmNlID0gSW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZVdlYlNvY2tldChpZGVudGlm
aWVyLCByZXF1ZXN0VVJMLCBkb2N1bWVudFVSTCk7CiAgICAgYWRkUmVzb3VyY2UocmVzb3VyY2Uu
Z2V0KCkpOwogCiAgICAgaWYgKG1fZnJvbnRlbmQpCiAgICAgICAgIHJlc291cmNlLT51cGRhdGVT
Y3JpcHRPYmplY3QobV9mcm9udGVuZC5nZXQoKSk7CisjZWxzZQorICAgIG1fcmVzb3VyY2VBZ2Vu
dC0+ZGlkQ3JlYXRlV2ViU29ja2V0KGlkZW50aWZpZXIsIHJlcXVlc3RVUkwpOworICAgIFVOVVNF
RF9QQVJBTShkb2N1bWVudFVSTCk7CisjZW5kaWYKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAg
IGlmIChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+d2lsbFNlbmRX
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KGlkZW50aWZpZXIsIHJlcXVlc3QpOwotCisjaWYgTEVH
QUNZX1JFU09VUkNFX1RSQUNLSU5HX0VOQUJMRUQKICAgICBSZWZQdHI8SW5zcGVjdG9yUmVzb3Vy
Y2U+IHJlc291cmNlID0gZ2V0VHJhY2tlZFJlc291cmNlKGlkZW50aWZpZXIpOwogICAgIGlmICgh
cmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKQEAgLTE1MzAsMTMgKzE1NjksMTQgQEAgdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QodW5z
aWduZWQgbG9uZyBpZGVudGkKICAgICByZXNvdXJjZS0+dXBkYXRlV2ViU29ja2V0UmVxdWVzdChy
ZXF1ZXN0KTsKICAgICBpZiAobV9mcm9udGVuZCkKICAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNj
cmlwdE9iamVjdChtX2Zyb250ZW5kLmdldCgpKTsKKyNlbHNlCisgICAgbV9yZXNvdXJjZUFnZW50
LT53aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QoaWRlbnRpZmllciwgcmVxdWVzdCk7
CisjZW5kaWYKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNlaXZlV2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2VB
Z2VudCkKLSAgICAgICAgbV9yZXNvdXJjZUFnZW50LT5kaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNo
YWtlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwotCisjaWYgTEVHQUNZX1JFU09VUkNF
X1RSQUNLSU5HX0VOQUJMRUQKICAgICBSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IHJlc291cmNl
ID0gZ2V0VHJhY2tlZFJlc291cmNlKGlkZW50aWZpZXIpOwogICAgIGlmICghcmVzb3VyY2UpCiAg
ICAgICAgIHJldHVybjsKQEAgLTE1NDYsMTMgKzE1ODYsMTQgQEAgdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UodW5zaWduZWQgbG9u
ZyBpZGUKICAgICByZXNvdXJjZS0+dXBkYXRlV2ViU29ja2V0UmVzcG9uc2UocmVzcG9uc2UpOwog
ICAgIGlmIChtX2Zyb250ZW5kKQogICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0
KG1fZnJvbnRlbmQuZ2V0KCkpOworI2Vsc2UKKyAgICBtX3Jlc291cmNlQWdlbnQtPmRpZFJlY2Vp
dmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7CisjZW5k
aWYKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDbG9zZVdlYlNvY2tldCh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2VBZ2VudCkKLSAgICAg
ICAgbV9yZXNvdXJjZUFnZW50LT5kaWRDbG9zZVdlYlNvY2tldChpZGVudGlmaWVyKTsKLQorI2lm
IExFR0FDWV9SRVNPVVJDRV9UUkFDS0lOR19FTkFCTEVECiAgICAgUmVmUHRyPEluc3BlY3RvclJl
c291cmNlPiByZXNvdXJjZSA9IGdldFRyYWNrZWRSZXNvdXJjZShpZGVudGlmaWVyKTsKICAgICBp
ZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm47CkBAIC0xNTYwLDYgKzE2MDEsOSBAQCB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENsb3NlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllcikKICAgICByZXNvdXJjZS0+ZW5kVGltaW5nKDApOwogICAgIGlmIChtX2Zyb250ZW5k
KQogICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkp
OworI2Vsc2UKKyAgICBtX3Jlc291cmNlQWdlbnQtPmRpZENsb3NlV2ViU29ja2V0KGlkZW50aWZp
ZXIpOworI2VuZGlmCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQogCkBAIC0xNzcz
LDkgKzE4MTcsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZEV2YWx1YXRlRm9yVGVz
dEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZwogU3RyaW5nIEluc3BlY3RvckNv
bnRyb2xsZXI6OmJyZWFrcG9pbnRzU2V0dGluZ0tleSgpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIGtleVByZWZpeCwgKCJicmVha3BvaW50czoiKSk7Ci0gICAgaWYgKCFtX21h
aW5SZXNvdXJjZSkKLSAgICAgICAgcmV0dXJuICIiOwotICAgIHJldHVybiBrZXlQcmVmaXggKyBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjptZDVCYXNlMTYobV9tYWluUmVzb3VyY2UtPnJlcXVlc3RV
UkwoKSk7CisgICAgcmV0dXJuIGtleVByZWZpeCArIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Om1k
NUJhc2UxNihtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+dXJsKCkuc3Ry
aW5nKCkpOwogfQogCiBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBJbnNwZWN0b3JDb250cm9s
bGVyOjpsb2FkQnJlYWtwb2ludHMoKQpAQCAtMjEwNyw1NSArMjE0OSwxOCBAQCB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OnNldEluc3BlY3RvckV4dGVuc2lvbkFQSShjb25zdCBTdHJpbmcmIHNv
dXJjZSkKIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpnZXRSZXNvdXJjZUNvbnRlbnQodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBib29sIGVuY29kZSwgU3RyaW5nKiBjb250ZW50KQogewor
I2lmIExFR0FDWV9SRVNPVVJDRV9UUkFDS0lOR19FTkFCTEVECiAgICAgUmVmUHRyPEluc3BlY3Rv
clJlc291cmNlPiByZXNvdXJjZSA9IG1fcmVzb3VyY2VzLmdldChpZGVudGlmaWVyKTsKICAgICBp
ZiAoIXJlc291cmNlKSB7CiAgICAgICAgICpjb250ZW50ID0gU3RyaW5nKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgKmNvbnRlbnQgPSBlbmNvZGUgPyByZXNvdXJjZS0+c291cmNlQnl0
ZXMoKSA6IHJlc291cmNlLT5zb3VyY2VTdHJpbmcoKTsKLX0KLQotYm9vbCBJbnNwZWN0b3JDb250
cm9sbGVyOjpyZXNvdXJjZUNvbnRlbnRGb3JVUkwoY29uc3QgS1VSTCYgdXJsLCBEb2N1bWVudCog
ZnJhbWVEb2N1bWVudCwgU3RyaW5nKiByZXN1bHQpCi17Ci0gICAgaWYgKCFmcmFtZURvY3VtZW50
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBTdHJpbmcgdGV4dEVuY29kaW5nTmFtZTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdG
cmFnbWVudElkZW50aWZpZXIodXJsLCBmcmFtZURvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+
ZG9jdW1lbnRMb2FkZXIoKS0+cmVxdWVzdFVSTCgpKSkgewotICAgICAgICB0ZXh0RW5jb2RpbmdO
YW1lID0gZnJhbWVEb2N1bWVudC0+aW5wdXRFbmNvZGluZygpOwotICAgICAgICBidWZmZXIgPSBm
cmFtZURvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+cHJvdmlzaW9uYWxEb2N1bWVudExvYWRl
cigpLT5tYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcgPSB1cmwuc3RyaW5nKCk7Ci0gICAgICAgIENhY2hlZFJlc291cmNlKiBj
YWNoZWRSZXNvdXJjZSA9IGZyYW1lRG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmNh
Y2hlZFJlc291cmNlKHVybFN0cmluZyk7Ci0gICAgICAgIGlmICghY2FjaGVkUmVzb3VyY2UpCi0g
ICAgICAgICAgICBjYWNoZWRSZXNvdXJjZSA9IGNhY2hlKCktPnJlc291cmNlRm9yVVJMKHVybFN0
cmluZyk7Ci0KLSAgICAgICAgQVNTRVJUKGNhY2hlZFJlc291cmNlKTsgLy8gRklYTUUoYXBhdmxv
dik6IFRoaXMgbWlnaHQgYmUgdG9vIGFnZ3Jlc3NpdmUuCi0KLSAgICAgICAgYm9vbCBpc1VucHVy
Z2VhYmxlID0gdHJ1ZTsKLSAgICAgICAgaWYgKGNhY2hlZFJlc291cmNlLT5pc1B1cmdlYWJsZSgp
KSB7Ci0gICAgICAgICAgICAvLyBJZiB0aGUgcmVzb3VyY2UgaXMgcHVyZ2VhYmxlIHRoZW4gbWFr
ZSBpdCB1bnB1cmdlYWJsZSB0byBnZXQKLSAgICAgICAgICAgIC8vIGl0cyBkYXRhLiBUaGlzIG1p
Z2h0IGZhaWwsIGluIHdoaWNoIGNhc2Ugd2UgcmV0dXJuIGFuCi0gICAgICAgICAgICAvLyBlbXB0
eSBTdHJpbmcuCi0gICAgICAgICAgICBpZiAoIWNhY2hlZFJlc291cmNlLT5tYWtlUHVyZ2VhYmxl
KGZhbHNlKSkKLSAgICAgICAgICAgICAgICBpc1VucHVyZ2VhYmxlID0gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKGlzVW5wdXJnZWFibGUpIHsKLSAgICAgICAgICAgIHRleHRFbmNvZGlu
Z05hbWUgPSBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RpbmcoKTsKLSAgICAgICAgICAgIGJ1ZmZlciA9
IGNhY2hlZFJlc291cmNlLT5kYXRhKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoYnVm
ZmVyKSB7Ci0gICAgICAgIFRleHRFbmNvZGluZyBlbmNvZGluZyh0ZXh0RW5jb2RpbmdOYW1lKTsK
LSAgICAgICAgaWYgKCFlbmNvZGluZy5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBlbmNvZGluZyA9
IFdpbmRvd3NMYXRpbjFFbmNvZGluZygpOwotICAgICAgICAqcmVzdWx0ID0gZW5jb2RpbmcuZGVj
b2RlKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGlk
ZW50aWZpZXIpOworICAgIFVOVVNFRF9QQVJBTShlbmNvZGUpOworICAgIFVOVVNFRF9QQVJBTShj
b250ZW50KTsKKyNlbmRpZgogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlbG9hZFBh
Z2UoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5o
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDE4ZGIwN2Yu
LjkxNzk2OGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTY3
LDcgKzY3LDYgQEAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudDsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3RvclByb2Zp
bGVyQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JSZXNvdXJjZTsKIGNsYXNzIEluc3BlY3RvclJlc291
cmNlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JTdGF0ZTsKIGNsYXNzIEluc3BlY3RvclN0b3JhZ2VB
Z2VudDsKQEAgLTg3LDYgKzg2LDEyIEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0b3Jh
Z2U7CiBjbGFzcyBTdG9yYWdlQXJlYTsKIAorI2RlZmluZSBMRUdBQ1lfUkVTT1VSQ0VfVFJBQ0tJ
TkdfRU5BQkxFRCAxCisKKyNpZiBMRUdBQ1lfUkVTT1VSQ0VfVFJBQ0tJTkdfRU5BQkxFRAorY2xh
c3MgSW5zcGVjdG9yUmVzb3VyY2U7CisjZW5kaWYKKwogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9B
UFBMSUNBVElPTlMpCiBjbGFzcyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ7CiAjZW5k
aWYKQEAgLTk4LDggKzEwMywxMCBAQCBjbGFzcyBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTsK
IAogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJs
aWM6CisjaWYgTEVHQUNZX1JFU09VUkNFX1RSQUNLSU5HX0VOQUJMRUQKICAgICB0eXBlZGVmIEhh
c2hNYXA8dW5zaWduZWQgbG9uZywgUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiA+IFJlc291cmNl
c01hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEZyYW1lPiwgUmVzb3VyY2VzTWFwKj4g
RnJhbWVSZXNvdXJjZXNNYXA7CisjZW5kaWYKICAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBSZWZQ
dHI8SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZT4gPiBEYXRhYmFzZVJlc291cmNlc01hcDsKICAg
ICB0eXBlZGVmIEhhc2hNYXA8aW50LCBSZWZQdHI8SW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNl
PiA+IERPTVN0b3JhZ2VSZXNvdXJjZXNNYXA7CiAKQEAgLTE2OSw5ICsxNzYsMTEgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKTsKICAg
ICB2b2lkIHNjcmlwdEltcG9ydGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VTdHJpbmcpOwogCi0gICAgdm9pZCBzZXRSZXNvdXJjZVRyYWNraW5nRW5hYmxl
ZChib29sIGVuYWJsZWQpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VUcmFja2luZ0VuYWJsZWQoYm9v
bCBlbmFibGVkLCBib29sIGFsd2F5cywgYm9vbCogbmV3U3RhdGUpOworI2lmIExFR0FDWV9SRVNP
VVJDRV9UUkFDS0lOR19FTkFCTEVECisgICAgdm9pZCBzZXRSZXNvdXJjZVRyYWNraW5nRW5hYmxl
ZChib29sIGVuYWJsZWQpOwogICAgIGJvb2wgcmVzb3VyY2VUcmFja2luZ0VuYWJsZWQoKSBjb25z
dDsKKyNlbmRpZgogCiAgICAgdm9pZCBlbnN1cmVTZXR0aW5nc0xvYWRlZCgpOwogCkBAIC0yMTQs
OSArMjIzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENsb3NlV2ViU29ja2V0KHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcik7CiAjZW5kaWYKIAorI2lmIExFR0FDWV9SRVNPVVJDRV9UUkFDS0lO
R19FTkFCTEVECiAgICAgY29uc3QgUmVzb3VyY2VzTWFwJiByZXNvdXJjZXMoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc291cmNlczsgfQotICAgIEluc3BlY3RvclJlc291cmNlKiByZXNvdXJjZUZvclVS
TChjb25zdCBTdHJpbmcmIHVybCk7Ci0gICAgYm9vbCByZXNvdXJjZUNvbnRlbnRGb3JVUkwoY29u
c3QgS1VSTCYgdXJsLCBEb2N1bWVudCogbG9hZGVyRG9jdW1lbnQsIFN0cmluZyogcmVzdWx0KTsK
KyNlbmRpZgorCiAgICAgYm9vbCBoYXNGcm9udGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJvbnRl
bmQ7IH0KIAogICAgIHZvaWQgZHJhd05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JikgY29u
c3Q7CkBAIC0zMTYsMTMgKzMyNiwxNCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBhZGRDb25zb2xl
TWVzc2FnZShQYXNzT3duUHRyPENvbnNvbGVNZXNzYWdlPik7CiAKKyNpZiBMRUdBQ1lfUkVTT1VS
Q0VfVFJBQ0tJTkdfRU5BQkxFRAogICAgIHZvaWQgYWRkUmVzb3VyY2UoSW5zcGVjdG9yUmVzb3Vy
Y2UqKTsKICAgICB2b2lkIHJlbW92ZVJlc291cmNlKEluc3BlY3RvclJlc291cmNlKik7CiAgICAg
SW5zcGVjdG9yUmVzb3VyY2UqIGdldFRyYWNrZWRSZXNvdXJjZSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIpOwotICAgIHZvaWQgZ2V0UmVzb3VyY2VDb250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgYm9vbCBlbmNvZGUsIFN0cmluZyogY29udGVudCk7Ci0KICAgICB2b2lkIHBydW5lUmVz
b3VyY2VzKFJlc291cmNlc01hcCosIERvY3VtZW50TG9hZGVyKiBsb2FkZXJUb0tlZXAgPSAwKTsK
ICAgICB2b2lkIHJlbW92ZUFsbFJlc291cmNlcyhSZXNvdXJjZXNNYXAqIG1hcCkgeyBwcnVuZVJl
c291cmNlcyhtYXApOyB9CisjZW5kaWYKKyAgICB2b2lkIGdldFJlc291cmNlQ29udGVudCh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGJvb2wgZW5jb2RlLCBTdHJpbmcqIGNvbnRlbnQpOwogCiAg
ICAgYm9vbCBpc01haW5SZXNvdXJjZUxvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25z
dCBLVVJMJiByZXF1ZXN0VXJsKTsKIApAQCAtMzQxLDcgKzM1Miw2IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX29wZW5pbmdGcm9udGVuZDsKICAgICBPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmQ+IG1f
ZnJvbnRlbmQ7CiAgICAgUmVmUHRyPEluc3BlY3RvckRPTUFnZW50PiBtX2RvbUFnZW50OwotICAg
IFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZUFnZW50PiBtX3Jlc291cmNlQWdlbnQ7CiAgICAgUmVm
UHRyPEluc3BlY3RvclN0b3JhZ2VBZ2VudD4gbV9zdG9yYWdlQWdlbnQ7CiAgICAgT3duUHRyPElu
c3BlY3RvckNTU1N0b3JlPiBtX2Nzc1N0b3JlOwogICAgIE93blB0cjxJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50PiBtX3RpbWVsaW5lQWdlbnQ7CkBAIC0zNTAsMTIgKzM2MCwxNSBAQCBwcml2YXRlOgog
I2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgT3duUHRyPEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudD4gbV9hcHBsaWNhdGlvbkNhY2hlQWdlbnQ7CiAjZW5kaWYK
LQogICAgIFJlZlB0cjxOb2RlPiBtX25vZGVUb0ZvY3VzOworI2lmIExFR0FDWV9SRVNPVVJDRV9U
UkFDS0lOR19FTkFCTEVECiAgICAgUmVmUHRyPEluc3BlY3RvclJlc291cmNlPiBtX21haW5SZXNv
dXJjZTsKICAgICBSZXNvdXJjZXNNYXAgbV9yZXNvdXJjZXM7CiAgICAgSGFzaFNldDxTdHJpbmc+
IG1fa25vd25SZXNvdXJjZXM7CiAgICAgRnJhbWVSZXNvdXJjZXNNYXAgbV9mcmFtZVJlc291cmNl
czsKKyNlbmRpZgorICAgIFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZUFnZW50PiBtX3Jlc291cmNl
QWdlbnQ7CisgICAgdW5zaWduZWQgbG9uZyBtX21haW5SZXNvdXJjZUlkZW50aWZpZXI7CiAgICAg
ZG91YmxlIG1fbG9hZEV2ZW50VGltZTsKICAgICBkb3VibGUgbV9kb21Db250ZW50RXZlbnRUaW1l
OwogICAgIFZlY3RvcjxPd25QdHI8Q29uc29sZU1lc3NhZ2U+ID4gbV9jb25zb2xlTWVzc2FnZXM7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAgYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAKaW5kZXggMDViMWJmZi4uOWIz
Zjk1ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3Bw
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcApAQCAtMzAyLDYg
KzMwMiw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVNjcmlwdE9iamVjdChJbnNw
ZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiAKICAgICBpZiAobV9jaGFuZ2VzLmhhc0NoYW5nZShD
b21wbGV0aW9uQ2hhbmdlKSkgewogICAgICAgICBqc29uT2JqZWN0LT5zZXRCb29sZWFuKCJmYWls
ZWQiLCBtX2ZhaWxlZCk7CisgICAgICAgIGpzb25PYmplY3QtPnNldFN0cmluZygibG9jYWxpemVk
RmFpbERlc2NyaXB0aW9uIiwgbV9sb2NhbGl6ZWRGYWlsRGVzY3JpcHRpb24pOwogICAgICAgICBq
c29uT2JqZWN0LT5zZXRCb29sZWFuKCJmaW5pc2hlZCIsIG1fZmluaXNoZWQpOwogICAgICAgICBq
c29uT2JqZWN0LT5zZXRCb29sZWFuKCJkaWRDb21wbGV0aW9uQ2hhbmdlIiwgdHJ1ZSk7CiAgICAg
fQpAQCAtNDM2LDkgKzQzNywxMCBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlOjplbmRUaW1pbmco
ZG91YmxlIGFjdHVhbEVuZFRpbWUpCiAgICAgbV9jaGFuZ2VzLnNldChDb21wbGV0aW9uQ2hhbmdl
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6bWFya0ZhaWxlZCgpCit2b2lkIEluc3Bl
Y3RvclJlc291cmNlOjptYXJrRmFpbGVkKGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRp
b24pCiB7CiAgICAgbV9mYWlsZWQgPSB0cnVlOworICAgIG1fbG9jYWxpemVkRmFpbERlc2NyaXB0
aW9uID0gbG9jYWxpemVkRGVzY3JpcHRpb247CiAgICAgbV9jaGFuZ2VzLnNldChDb21wbGV0aW9u
Q2hhbmdlKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2UuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmgKaW5kZXggYWE2
MDAxZi4uYWE0YzNiMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2UuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oCkBAIC0x
MTYsNyArMTE2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHN0YXJ0VGlt
aW5nKCk7CiAgICAgICAgIHZvaWQgZW5kVGltaW5nKGRvdWJsZSBhY3R1YWxFbmRUaW1lKTsKIAot
ICAgICAgICB2b2lkIG1hcmtGYWlsZWQoKTsKKyAgICAgICAgdm9pZCBtYXJrRmFpbGVkKGNvbnN0
IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pOwogICAgICAgICB2b2lkIGFkZExlbmd0aChp
bnQgbGVuZ3RoUmVjZWl2ZWQpOwogCiAgICAgcHJpdmF0ZToKQEAgLTE3NSw2ICsxNzUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9jYWNoZWQ7CiAgICAgICAgIGJvb2wg
bV9maW5pc2hlZDsKICAgICAgICAgYm9vbCBtX2ZhaWxlZDsKKyAgICAgICAgU3RyaW5nIG1fbG9j
YWxpemVkRmFpbERlc2NyaXB0aW9uOwogICAgICAgICBpbnQgbV9sZW5ndGg7CiAgICAgICAgIGlu
dCBtX3Jlc3BvbnNlU3RhdHVzQ29kZTsKICAgICAgICAgU3RyaW5nIG1fcmVzcG9uc2VTdGF0dXNU
ZXh0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRl
eCA5ZjgwNjJmLi4yZTk2NWI2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcApAQCAtMjYzLDEwICsyNjMsOCBAQCBzdGF0aWMgdm9pZCBwb3B1bGF0ZU9i
amVjdFdpdGhGcmFtZVJlc291cmNlcyhGcmFtZSogZnJhbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9y
TwogICAgIENhY2hlZFJlc291cmNlTG9hZGVyOjpEb2N1bWVudFJlc291cmNlTWFwOjpjb25zdF9p
dGVyYXRvciBlbmQgPSBhbGxSZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6RG9jdW1lbnRSZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBhbGxSZXNv
dXJjZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIENhY2hlZFJlc291cmNl
KiBjYWNoZWRSZXNvdXJjZSA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgIGlmIChjYWNoZWRS
ZXNvdXJjZSkgewotICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY2FjaGVkUmVz
b3VyY2VPYmplY3QgPSBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKGZyYW1lLT5sb2FkZXIo
KS0+ZG9jdW1lbnRMb2FkZXIoKSwgKmNhY2hlZFJlc291cmNlKTsKLSAgICAgICAgICAgIHN1YnJl
c291cmNlcy0+cHVzaFZhbHVlKGNhY2hlZFJlc291cmNlT2JqZWN0KTsKLSAgICAgICAgfQorICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjYWNoZWRSZXNvdXJjZU9iamVjdCA9IGJ1aWxk
T2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UoZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigp
LCAqY2FjaGVkUmVzb3VyY2UpOworICAgICAgICBzdWJyZXNvdXJjZXMtPnB1c2hWYWx1ZShjYWNo
ZWRSZXNvdXJjZU9iamVjdCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
UmVzb3VyY2UuanMKaW5kZXggMmRmN2I3My4uYzJmM2JlZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZS5qcwpAQCAtNTY1LDYgKzU2NSw5IEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICB8fCB0aGlzLnR5cGUgPT09IFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5UeXBlLldlYlNvY2tldCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCisg
ICAgICAgIGlmICghdGhpcy5taW1lVHlwZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBN
aWdodCBiZSBub3Qga25vd24gZm9yIGNhY2hlZCByZXNvdXJjZXMgd2l0aCBudWxsIHJlc3BvbnNl
cy4KKwogICAgICAgICBpZiAodGhpcy5taW1lVHlwZSBpbiBXZWJJbnNwZWN0b3IuTUlNRVR5cGVz
KQogICAgICAgICAgICAgcmV0dXJuIHRoaXMudHlwZSBpbiBXZWJJbnNwZWN0b3IuTUlNRVR5cGVz
W3RoaXMubWltZVR5cGVdOwogCkBAIC01ODIsNyArNTg1LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291
cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIG1zZzsKICAgICAgICAgc3dpdGNoICh3YXJu
aW5nLmlkKSB7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5XYXJuaW5ncy5JbmNvcnJl
Y3RNSU1FVHlwZS5pZDoKLSAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX21pbWVUeXBlSXNDb25z
aXN0ZW50V2l0aFR5cGUoKSkKKyAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX21pbWVUeXBlSXND
b25zaXN0ZW50V2l0aFR5cGUoKSkgewogICAgICAgICAgICAgICAgICAgICBtc2cgPSBuZXcgV2Vi
SW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlKFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNz
YWdlU291cmNlLk90aGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkNv
bnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkxvZywgCiAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldhcm5pbmcsCkBAIC01OTMs
NiArNTk2LDM1IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBTdHJpbmcuc3ByaW50ZihXZWJJbnNwZWN0b3IuV2FybmluZ3MuSW5j
b3JyZWN0TUlNRVR5cGUubWVzc2FnZSwgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUudG9VSVN0
cmluZyh0aGlzLnR5cGUpLCB0aGlzLm1pbWVUeXBlKSwKICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICBudWxsKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5X
YXJuaW5ncy5GYWlsZWRUb0xvYWQuaWQ6CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuZmFpbGVk
KSB7CisgICAgICAgICAgICAgICAgICAgIG1zZyA9IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZU1l
c3NhZ2UoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuT3RoZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2Fn
ZVR5cGUuTG9nLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5Db25zb2xl
TWVzc2FnZS5NZXNzYWdlTGV2ZWwuRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAtMSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXJsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDEsCisgICAgICAgICAgICAgICAgICAg
ICAgICBTdHJpbmcuc3ByaW50ZihXZWJJbnNwZWN0b3IuV2FybmluZ3MuRmFpbGVkVG9Mb2FkLm1l
c3NhZ2UsIHRoaXMubG9jYWxpemVkRmFpbERlc2NyaXB0aW9uKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICBudWxsKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5XYXJuaW5ncy5GYWlsZWRUb0xvYWRXaXRoU3RhdHVzLmlkOgorICAgICAgICAgICAgICAg
IGlmICh0aGlzLnN0YXR1c0NvZGUgPj0gNDAwKSB7CisgICAgICAgICAgICAgICAgICAgIG1zZyA9
IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNz
YWdlLk1lc3NhZ2VTb3VyY2UuT3RoZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuTG9nLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRXJyb3IsCisg
ICAgICAgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
dXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIDEsCisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcuc3ByaW50ZihXZWJJbnNwZWN0
b3IuV2FybmluZ3MuRmFpbGVkVG9Mb2FkV2l0aFN0YXR1cy5tZXNzYWdlLCB0aGlzLnN0YXR1c0Nv
ZGUsIHRoaXMuc3RhdHVzVGV4dCksCisgICAgICAgICAgICAgICAgICAgICAgICBudWxsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZU1hbmFnZXIuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUmVzb3VyY2VNYW5hZ2VyLmpzCmluZGV4IGIxODE5NTguLjQzYTY1NWUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZU1hbmFnZXIuanMKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlTWFuYWdlci5qcwpAQCAtMTU0LDYgKzE1
NCw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIucHJvdG90eXBlID0gewogCiAgICAg
X3VwZGF0ZVJlc291cmNlV2l0aFJlc3BvbnNlOiBmdW5jdGlvbihyZXNvdXJjZSwgcmVzcG9uc2Up
CiAgICAgeworICAgICAgICBpZiAocmVzb3VyY2UuaXNOdWxsKQorICAgICAgICAgICAgcmV0dXJu
OworCiAgICAgICAgIHJlc291cmNlLm1pbWVUeXBlID0gcmVzcG9uc2UubWltZVR5cGU7CiAgICAg
ICAgIHJlc291cmNlLmV4cGVjdGVkQ29udGVudExlbmd0aCA9IHJlc3BvbnNlLmV4cGVjdGVkQ29u
dGVudExlbmd0aDsKICAgICAgICAgcmVzb3VyY2UudGV4dEVuY29kaW5nTmFtZSA9IHJlc3BvbnNl
LnRleHRFbmNvZGluZ05hbWU7CkBAIC0yMTAsNiArMjEzLDcgQEAgV2ViSW5zcGVjdG9yLlJlc291
cmNlTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
cmVzb3VyY2UuZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgcmVzb3VyY2UubG9jYWxpemVkRmFpbERl
c2NyaXB0aW9uID0gbG9jYWxpemVkRGVzY3JpcHRpb247CiAgICAgICAgIHJlc291cmNlLmZpbmlz
aGVkID0gdHJ1ZTsKICAgICAgICAgcmVzb3VyY2UuZW5kVGltZSA9IHRpbWU7CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IDg1Y2EzZjYuLjMyMzU3YzIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtNTgzLDcgKzU4Myw5
IEBAIFdlYkluc3BlY3Rvci5kb0xvYWRlZERvbmUgPSBmdW5jdGlvbigpCiAgICAgfTsKIAogICAg
IHRoaXMuV2FybmluZ3MgPSB7Ci0gICAgICAgIEluY29ycmVjdE1JTUVUeXBlOiB7aWQ6IDAsIG1l
c3NhZ2U6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzb3VyY2UgaW50ZXJwcmV0ZWQgYXMgJXMg
YnV0IHRyYW5zZmVycmVkIHdpdGggTUlNRSB0eXBlICVzLiIpfQorICAgICAgICBJbmNvcnJlY3RN
SU1FVHlwZToge2lkOiAwLCBtZXNzYWdlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc291cmNl
IGludGVycHJldGVkIGFzICVzIGJ1dCB0cmFuc2ZlcnJlZCB3aXRoIE1JTUUgdHlwZSAlcy4iKX0s
CisgICAgICAgIEZhaWxlZFRvTG9hZDoge2lkOiAxLCBtZXNzYWdlOiBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkZhaWxlZCB0byBsb2FkIHJlc291cmNlOiAlcyIpfSwKKyAgICAgICAgRmFpbGVkVG9M
b2FkV2l0aFN0YXR1czoge2lkOiAyLCBtZXNzYWdlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZh
aWxlZCB0byBsb2FkIHJlc291cmNlOiB0aGUgc2VydmVyIHJlc3BvbmRlZCB3aXRoIGEgc3RhdHVz
IG9mICVzICglcykiKX0KICAgICB9OwogCiAgICAgdGhpcy5hZGRNYWluRXZlbnRMaXN0ZW5lcnMo
ZG9jdW1lbnQpOwpAQCAtMTMxOCw2ICsxMzIwLDcgQEAgV2ViSW5zcGVjdG9yLnVwZGF0ZVJlc291
cmNlID0gZnVuY3Rpb24ocGF5bG9hZCkKIAogICAgIGlmIChwYXlsb2FkLmRpZENvbXBsZXRpb25D
aGFuZ2UpIHsKICAgICAgICAgcmVzb3VyY2UuZmFpbGVkID0gcGF5bG9hZC5mYWlsZWQ7CisgICAg
ICAgIHJlc291cmNlLmxvY2FsaXplZEZhaWxEZXNjcmlwdGlvbiA9IHBheWxvYWQubG9jYWxpemVk
RmFpbERlc2NyaXB0aW9uOwogICAgICAgICByZXNvdXJjZS5maW5pc2hlZCA9IHBheWxvYWQuZmlu
aXNoZWQ7CiAgICAgICAgIGlmICh0aGlzLnBhbmVscy5hdWRpdHMpCiAgICAgICAgICAgICB0aGlz
LnBhbmVscy5hdWRpdHMucmVzb3VyY2VGaW5pc2hlZChyZXNvdXJjZSk7Cg==
</data>
<flag name="review"
          id="62416"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>