<?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>158588</bug_id>
          
          <creation_ts>2016-06-09 15:37:18 -0700</creation_ts>
          <short_desc>Clean up EditorClient lifetime</short_desc>
          <delta_ts>2016-06-09 23:43:05 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=158401</see_also>
          <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>158609</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ryanhaddad</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1201016</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-09 15:37:18 -0700</bug_when>
    <thetext>Clean up EditorClient lifetime</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201023</commentid>
    <comment_count>1</comment_count>
      <attachid>280960</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-09 15:47:12 -0700</bug_when>
    <thetext>Created attachment 280960
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201044</commentid>
    <comment_count>2</comment_count>
      <attachid>280966</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-09 16:23:04 -0700</bug_when>
    <thetext>Created attachment 280966
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201046</commentid>
    <comment_count>3</comment_count>
      <attachid>280967</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-09 16:32:20 -0700</bug_when>
    <thetext>Created attachment 280967
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201058</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-09 16:53:51 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/201894</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201151</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-09 22:10:45 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 158609</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201153</commentid>
    <comment_count>6</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-06-09 22:12:19 -0700</bug_when>
    <thetext>This change appears to have broken the Windows build.

https://build.webkit.org/builders/Apple%20Win%20Release%20%28Build%29/builds/78309/steps/compile-webkit/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201157</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-09 22:17:09 -0700</bug_when>
    <thetext>I guess I didn&apos;t wait for all the EWS bots :(
http://trac.webkit.org/changeset/201905 fixed it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201171</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-09 22:33:41 -0700</bug_when>
    <thetext>and r201909</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201186</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-06-09 23:43:05 -0700</bug_when>
    <thetext>I wonder if this fixed bug 158401!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280960</attachid>
            <date>2016-06-09 15:47:12 -0700</date>
            <delta_ts>2016-06-09 16:23:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158588-20160609154841.patch</filename>
            <type>text/plain</type>
            <size>34697</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTg4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5IEBACisyMDE2LTA2LTA5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ2xlYW4gdXAg
RWRpdG9yQ2xpZW50IGxpZmV0aW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTg1ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyBuZXcgdGVzdHMuICBUaGlzIHBhdGNoIGRvZXMgdGhyZWUgdGhpbmdz
LCBhbGwgb2Ygd2hpY2ggZG8gbm90IGNoYW5nZSBiZWhhdmlvcjoKKyAgICAgICAgMS4gVXNlIGEg
c3RkOjp1bmlxdWVfcHRyPEVkaXRvckNsaWVudD4gb3duZWQgYnkgdGhlIFBhZ2UgaW5zdGVhZCBv
ZiBhbGxvY2F0aW5nCisgICAgICAgIHdpdGggbmV3IGluIFdlYktpdC9XZWJLaXQyIGFuZCBkZWxl
dGluZyBpbiBXZWJFZGl0b3JDbGllbnQ6OnBhZ2VEZXN0cm95ZWQuCisgICAgICAgIDIuIEFkZCBh
IGZldyBudWxsIGNoZWNrcyB0byByZW1vdmUgdGhlIG5lZWQgZm9yIEVtcHR5RWRpdG9yQ2xpZW50
LgorICAgICAgICAzLiBHaXZlIHRoZSBQYWdlIGEgUGFnZUNvbmZpZ3VyYXRpb24mJiBpbnN0ZWFk
IG9mIGEgUGFnZUNvbmZpZ3VyYXRpb24mIGluIGl0cyBjb25zdHJ1Y3Rvci4KKworICAgICAgICAq
IGJpbmRpbmdzL29iamMvRE9NLm1tOgorICAgICAgICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyOjplZGl0b3JDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcjo6dGV4dENoZWNrZXIpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2xpZW50KToKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxs
Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrZXI6OmNsaWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrZXI6OnRpbWVyRmlyZWRUb1Byb2Nlc3NRdWV1ZWRS
ZXF1ZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpvdmVybGF5UGFnZSk6CisgICAgICAgICog
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaWxsV2l0aEVtcHR5
Q2xpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVRleHRDaGVja2VyQ2xpZW50OjpyZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUVkaXRvckNsaWVu
dDo6cmVnaXN0ZXJVbmRvU3RlcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbXB0eUVk
aXRvckNsaWVudDo6cmVnaXN0ZXJSZWRvU3RlcCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlFZGl0b3JDbGllbnQ6OkVt
cHR5RWRpdG9yQ2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RWRpdG9y
Q2xpZW50Ojp+RW1wdHlFZGl0b3JDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRWRp
dG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnQ6On5FZGl0b3JDbGll
bnQpOgorICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZEVsZW1lbnQpOgorICAgICAgICAqIHBhZ2Uv
UGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6On5QYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmNsZWFyVW5kb1JlZG9P
cGVyYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmluTG93UXVhbGl0eUltYWdlSW50
ZXJwb2xhdGlvbk1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0SW5Mb3dRdWFsaXR5
SW1hZ2VJbnRlcnBvbGF0aW9uTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjplZGl0b3JD
bGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aW52YWxpZGF0ZVN0eWxlc0ZvckFsbExpbmtzKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmludmFsaWRhdGVTdHlsZXNGb3JMaW5rKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OmludmFsaWRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZUluQWxs
RnJhbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldERlYnVnZ2VyKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OnNldElzVmlzaWJsZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6OnNldEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayk6CisgICAgICAgICog
cGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpjYW5TdGFydE1lZGlhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OnBsdWdJbkNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjptYWluRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6Z3JvdXApOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZTo6ZWRpdG9yQ2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdl
L1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9u
Lmg6CisgICAgICAgICogcGFnZS9tYWMvUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OmFkZFNjaGVkdWxlUGFpcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZW1vdmVTY2hl
ZHVsZVBhaXIpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6
dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKToKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRhdGFDaGFu
Z2VkKToKKwogMjAxNi0wNi0wOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIENsZWFuIHVwIFdlYlNvY2tldCBjb2RlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET00ubW0JKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDYgQEAK
ICNpbXBvcnQgIk1lZGlhTGlzdC5oIgogI2ltcG9ydCAiTWVkaWFRdWVyeUV2YWx1YXRvci5oIgog
I2ltcG9ydCAiTm9kZVJlbmRlclN0eWxlLmgiCi0jaW1wb3J0ICJQYWdlLmgiCiAjaW1wb3J0ICJS
ZW5kZXJWaWV3LmgiCiAjaW1wb3J0ICJUb3VjaC5oIgogI2ltcG9ydCAiV0FLQXBwS2l0U3R1YnMu
aCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRl
eHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA2
LDcgKzUwNiw3IEBAIEFsdGVybmF0aXZlVGV4dENsaWVudCogQWx0ZXJuYXRpdmVUZXh0Q28KIAog
RWRpdG9yQ2xpZW50KiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjplZGl0b3JDbGllbnQoKQog
ewotICAgIHJldHVybiBtX2ZyYW1lLnBhZ2UoKSA/ICZtX2ZyYW1lLnBhZ2UoKS0+ZWRpdG9yQ2xp
ZW50KCkgOiBudWxscHRyOworICAgIHJldHVybiBtX2ZyYW1lLnBhZ2UoKSA/IG1fZnJhbWUucGFn
ZSgpLT5lZGl0b3JDbGllbnQoKSA6IG51bGxwdHI7CiB9CiAKIFRleHRDaGVja2VyQ2xpZW50KiBB
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjp0ZXh0Q2hlY2tlcigpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw3ICsxNzIsNyBAQCBFZGl0aW5n
QmVoYXZpb3IgRWRpdG9yOjpiZWhhdmlvcigpIGNvbnN0CiBFZGl0b3JDbGllbnQqIEVkaXRvcjo6
Y2xpZW50KCkgY29uc3QKIHsKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpKQot
ICAgICAgICByZXR1cm4gJnBhZ2UtPmVkaXRvckNsaWVudCgpOworICAgICAgICByZXR1cm4gcGFn
ZS0+ZWRpdG9yQ2xpZW50KCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAJKHJldmlzaW9uIDIwMTg3MykKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTE5LDEwICsxMTksMTMgQEAgU3BlbGxDaGVja2VyOjp+U3BlbGxDaGVja2VyKCkKIAogVGV4dENo
ZWNrZXJDbGllbnQqIFNwZWxsQ2hlY2tlcjo6Y2xpZW50KCkgY29uc3QKIHsKLSAgICBQYWdlKiBw
YWdlID0gbV9mcmFtZS5wYWdlKCk7CisgICAgYXV0byBwYWdlID0gbV9mcmFtZS5wYWdlKCk7CiAg
ICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gcGFnZS0+
ZWRpdG9yQ2xpZW50KCkudGV4dENoZWNrZXIoKTsKKyAgICBhdXRvIGVkaXRvckNsaWVudCA9IHBh
Z2UtPmVkaXRvckNsaWVudCgpOworICAgIGlmICghZWRpdG9yQ2xpZW50KQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZWRpdG9yQ2xpZW50LT50ZXh0Q2hlY2tlcigpOwogfQog
CiB2b2lkIFNwZWxsQ2hlY2tlcjo6dGltZXJGaXJlZFRvUHJvY2Vzc1F1ZXVlZFJlcXVlc3QoKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAko
cmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92
ZXJsYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NjYsNyArODY2LDcgQEAgUGFnZSogSW5zcGVj
dG9yT3ZlcmxheTo6b3ZlcmxheVBhZ2UoKQogCiAgICAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNv
bmZpZ3VyYXRpb247CiAgICAgZmlsbFdpdGhFbXB0eUNsaWVudHMocGFnZUNvbmZpZ3VyYXRpb24p
OwotICAgIG1fb3ZlcmxheVBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KHBhZ2VDb25maWd1
cmF0aW9uKTsKKyAgICBtX292ZXJsYXlQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihXVEZN
b3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKICAgICBTZXR0aW5ncyYgc2V0dGluZ3MgPSBtX3Bh
Z2Uuc2V0dGluZ3MoKTsKICAgICBTZXR0aW5ncyYgb3ZlcmxheVNldHRpbmdzID0gbV9vdmVybGF5
UGFnZS0+c2V0dGluZ3MoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
Y3BwCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDkgKzEyOSw2IEBAIHZvaWQgZmlsbFdpdGhF
bXB0eUNsaWVudHMoUGFnZUNvbmZpZ3VyYXQKICAgICBwYWdlQ29uZmlndXJhdGlvbi5kcmFnQ2xp
ZW50ID0gJmR1bW15RHJhZ0NsaWVudC5nZXQoKTsKICNlbmRpZgogCi0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEVtcHR5RWRpdG9yQ2xpZW50PiBkdW1teUVkaXRvckNsaWVudDsKLSAgICBwYWdl
Q29uZmlndXJhdGlvbi5lZGl0b3JDbGllbnQgPSAmZHVtbXlFZGl0b3JDbGllbnQuZ2V0KCk7Ci0K
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RW1wdHlJbnNwZWN0b3JDbGllbnQ+IGR1bW15SW5z
cGVjdG9yQ2xpZW50OwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmluc3BlY3RvckNsaWVudCA9ICZk
dW1teUluc3BlY3RvckNsaWVudC5nZXQoKTsKIApAQCAtMjQzLDEyICsyNDAsNCBAQCB2b2lkIEVt
cHR5VGV4dENoZWNrZXJDbGllbnQ6OnJlcXVlc3RDaGVjCiB7CiB9CiAKLXZvaWQgRW1wdHlFZGl0
b3JDbGllbnQ6OnJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4pCi17Ci19Ci0K
LXZvaWQgRW1wdHlFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1JlZlB0cjxVbmRv
U3RlcD4pCi17Ci19Ci0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJ
KHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
aAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZuZGVmIEVtcHR5Q2xpZW50c19oCi0jZGVmaW5lIEVtcHR5Q2xpZW50c19oCisjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51
Q2xpZW50LmgiCkBAIC0zNSwxMiArMzQsMTAgQEAKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlv
bkNsaWVudC5oIgogI2luY2x1ZGUgIkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiRHJhZ0NsaWVudC5oIgotI2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgogI2luY2x1ZGUgIkZs
b2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvY3VzRGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKLSNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyQ2xpZW50LmgiCkBAIC03MSw2ICs2
OCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwor
Y2xhc3MgUGFnZTsKIAogY2xhc3MgRW1wdHlDaHJvbWVDbGllbnQgOiBwdWJsaWMgQ2hyb21lQ2xp
ZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQzMSwxMjggKzQyOSw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFBhc3NSZWZQdHI8VGV4
dENoZWNraW5nUmVxdWVzdD4sIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBvdmVycmlkZTsKIH07
CiAKLWNsYXNzIEVtcHR5RWRpdG9yQ2xpZW50IDogcHVibGljIEVkaXRvckNsaWVudCB7Ci0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoRW1wdHlFZGl0b3JDbGllbnQpOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKLXB1YmxpYzoKLSAgICBFbXB0eUVkaXRvckNsaWVudCgpIHsgfQotICAgIHZpcnR1
YWwgfkVtcHR5RWRpdG9yQ2xpZW50KCkgeyB9Ci0gICAgdm9pZCBwYWdlRGVzdHJveWVkKCkgb3Zl
cnJpZGUgeyB9Ci0KLSAgICBib29sIHNob3VsZERlbGV0ZVJhbmdlKFJhbmdlKikgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpIG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1NlbGVjdFRyYWlsaW5nV2hpdGVz
cGFjZUVuYWJsZWQoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNDb250
aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZvaWQgdG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKSBvdmVycmlkZSB7IH0KLSAg
ICBib29sIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdm9pZCB0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKSBvdmVycmlkZSB7IH0KLSAgICBp
bnQgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKSBvdmVycmlkZSB7IHJldHVybiAtMTsgfQotCi0K
LSAgICBib29sIHNob3VsZEJlZ2luRWRpdGluZyhSYW5nZSopIG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgYm9vbCBzaG91bGRFbmRFZGl0aW5nKFJhbmdlKikgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICBib29sIHNob3VsZEluc2VydE5vZGUoTm9kZSosIFJhbmdlKiwgRWRp
dG9ySW5zZXJ0QWN0aW9uKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgc2hv
dWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmLCBSYW5nZSosIEVkaXRvckluc2VydEFjdGlvbikg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIHNob3VsZENoYW5nZVNlbGVjdGVk
UmFuZ2UoUmFuZ2UqLCBSYW5nZSosIEVBZmZpbml0eSwgYm9vbCkgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KLQotICAgIGJvb2wgc2hvdWxkQXBwbHlTdHlsZShTdHlsZVByb3BlcnRpZXMqLCBS
YW5nZSopIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdm9pZCBkaWRBcHBseVN0eWxl
KCkgb3ZlcnJpZGUgeyB9Ci0gICAgYm9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShSYW5n
ZSosIFJhbmdlKikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZvaWQgZGlkQmVn
aW5FZGl0aW5nKCkgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVu
dHMoKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oRnJh
bWUqKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbkFuZFVwZGF0ZUxh
eW91dCgpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgZGlzY2FyZGVkQ29tcG9zaXRpb24oRnJhbWUq
KSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBvdmVycmlkZSB7IH0KLSAg
ICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChSYW5nZSopIG92ZXJyaWRlIHsg
fQotICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBvdmVycmlkZSB7IH0K
LSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoUmFuZ2UqLCBWZWN0b3I8
U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mKSBvdmVycmlkZSB7IH0KLSAg
ICB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNv
ZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSBvdmVycmlkZSB7IH0KLQotICAgIHZvaWQgcmVn
aXN0ZXJVbmRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBy
ZWdpc3RlclJlZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+KSBvdmVycmlkZTsKLSAgICB2b2lk
IGNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkgb3ZlcnJpZGUgeyB9Ci0KLSAgICBib29sIGNhbkNv
cHlDdXQoRnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZGVmYXVsdFZhbHVlOyB9Ci0gICAgYm9vbCBjYW5QYXN0ZShGcmFtZSosIGJvb2wgZGVmYXVsdFZh
bHVlKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBkZWZhdWx0VmFsdWU7IH0KLSAgICBib29sIGNh
blVuZG8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgY2FuUmVk
bygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2b2lkIHVuZG8oKSBv
dmVycmlkZSB7IH0KLSAgICB2b2lkIHJlZG8oKSBvdmVycmlkZSB7IH0KLQotICAgIHZvaWQgaGFu
ZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50Kikgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBo
YW5kbGVJbnB1dE1ldGhvZEtleWRvd24oS2V5Ym9hcmRFdmVudCopIG92ZXJyaWRlIHsgfQotCi0g
ICAgdm9pZCB0ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcoRWxlbWVudCopIG92ZXJyaWRlIHsgfQot
ICAgIHZvaWQgdGV4dEZpZWxkRGlkRW5kRWRpdGluZyhFbGVtZW50Kikgb3ZlcnJpZGUgeyB9Ci0g
ICAgdm9pZCB0ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQoRWxlbWVudCopIG92ZXJyaWRlIHsgfQot
ICAgIGJvb2wgZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2ZW50KEVsZW1lbnQqLCBLZXlib2FyZEV2
ZW50Kikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2b2lkIHRleHRXaWxsQmVEZWxl
dGVkSW5UZXh0RmllbGQoRWxlbWVudCopIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgdGV4dERpZENo
YW5nZUluVGV4dEFyZWEoRWxlbWVudCopIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgb3ZlcmZsb3dT
Y3JvbGxQb3NpdGlvbkNoYW5nZWQoKSBvdmVycmlkZSB7IH0KLQotI2lmIFBMQVRGT1JNKElPUykK
LSAgICB2b2lkIHN0YXJ0RGVsYXlpbmdBbmRDb2FsZXNjaW5nQ29udGVudENoYW5nZU5vdGlmaWNh
dGlvbnMoKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIHN0b3BEZWxheWluZ0FuZENvYWxlc2NpbmdD
b250ZW50Q2hhbmdlTm90aWZpY2F0aW9ucygpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgd3JpdGVE
YXRhVG9QYXN0ZWJvYXJkKE5TRGljdGlvbmFyeSopIG92ZXJyaWRlIHsgfQotICAgIE5TQXJyYXkq
IHN1cHBvcnRlZFBhc3RlYm9hcmRUeXBlc0ZvckN1cnJlbnRTZWxlY3Rpb24oKSBvdmVycmlkZSB7
IHJldHVybiBudWxscHRyOyB9Ci0gICAgTlNBcnJheSogcmVhZERhdGFGcm9tUGFzdGVib2FyZChO
U1N0cmluZyosIGludCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIGJvb2wgaGFz
UmljaGx5RWRpdGFibGVTZWxlY3Rpb24oKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAg
IGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudCgpIG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLSAg
ICBEb2N1bWVudEZyYWdtZW50KiBkb2N1bWVudEZyYWdtZW50RnJvbURlbGVnYXRlKGludCkgb3Zl
cnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIGJvb2wgcGVyZm9ybXNUd29TdGVwUGFzdGUo
RG9jdW1lbnRGcmFnbWVudCopIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgaW50IHBh
c3RlYm9hcmRDaGFuZ2VDb3VudCgpIG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLSNlbmRpZgotCi0j
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgTlNTdHJpbmcqIHVzZXJWaXNpYmxlU3RyaW5nKE5TVVJM
Kikgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIERvY3VtZW50RnJhZ21lbnQqIGRv
Y3VtZW50RnJhZ21lbnRGcm9tQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcqLCBW
ZWN0b3I8UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4+Jikgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0
cjsgfTsKLSAgICB2b2lkIHNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikgb3Zl
cnJpZGUgeyB9OwotICAgIE5TVVJMICpjYW5vbmljYWxpemVVUkwoTlNVUkwqKSBvdmVycmlkZSB7
IHJldHVybiBudWxscHRyOyB9Ci0gICAgTlNVUkwgKmNhbm9uaWNhbGl6ZVVSTFN0cmluZyhOU1N0
cmluZyopIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSNlbmRpZgotCi0jaWYgVVNFKEFQ
UEtJVCkKLSAgICB2b2lkIHVwcGVyY2FzZVdvcmQoKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIGxv
d2VyY2FzZVdvcmQoKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIGNhcGl0YWxpemVXb3JkKCkgb3Zl
cnJpZGUgeyB9Ci0jZW5kaWYKLQotI2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVOVCkK
LSAgICB2b2lkIHNob3dTdWJzdGl0dXRpb25zUGFuZWwoYm9vbCkgb3ZlcnJpZGUgeyB9Ci0gICAg
Ym9vbCBzdWJzdGl0dXRpb25zUGFuZWxJc1Nob3dpbmcoKSBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZvaWQgdG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKSBvdmVycmlkZSB7IH0KLSAg
ICBib29sIGlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2b2lkIHRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9u
KCkgb3ZlcnJpZGUgeyB9Ci0gICAgYm9vbCBpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVk
KCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2b2lkIHRvZ2dsZUF1dG9tYXRpY0xp
bmtEZXRlY3Rpb24oKSBvdmVycmlkZSB7IH0KLSAgICBib29sIGlzQXV0b21hdGljRGFzaFN1YnN0
aXR1dGlvbkVuYWJsZWQoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQgdG9n
Z2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbigpIG92ZXJyaWRlIHsgfQotICAgIGJvb2wgaXNB
dXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2b2lkIHRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudCgpIG92ZXJyaWRlIHsg
fQotICAgIGJvb2wgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2b2lkIHRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29y
cmVjdGlvbigpIG92ZXJyaWRlIHsgfQotI2VuZGlmCi0KLSNpZiBQTEFURk9STShHVEspCi0gICAg
Ym9vbCBzaG91bGRTaG93VW5pY29kZU1lbnUoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQot
I2VuZGlmCi0gICAgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gJm1fdGV4dENoZWNrZXJDbGllbnQ7IH0KLQotICAgIHZvaWQgdXBkYXRlU3BlbGxpbmdV
SVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IEdyYW1tYXJEZXRhaWwmKSBv
dmVycmlkZSB7IH0KLSAgICB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQo
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBzaG93U3BlbGxpbmdVSShib29s
KSBvdmVycmlkZSB7IH0KLSAgICBib29sIHNwZWxsaW5nVUlJc1Nob3dpbmcoKSBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQotCi0gICAgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpIG92
ZXJyaWRlIHsgfQotICAgIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sKSBvdmVycmlkZSB7
IH0KLQotcHJpdmF0ZToKLSAgICBFbXB0eVRleHRDaGVja2VyQ2xpZW50IG1fdGV4dENoZWNrZXJD
bGllbnQ7Ci19OwotCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiBjbGFzcyBFbXB0eUNvbnRl
eHRNZW51Q2xpZW50IDogcHVibGljIENvbnRleHRNZW51Q2xpZW50IHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShFbXB0eUNvbnRleHRNZW51Q2xpZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CkBAIC02NDYsNSArNTIyLDMgQEAgY2xhc3MgRW1wdHlEaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dCBmaW5hbAogdm9pZCBmaWxsV2l0aEVtcHR5Q2xpZW50cyhQYWdlQ29uZmlndXJhdGlvbiYpOwog
CiB9Ci0KLSNlbmRpZiAvLyBFbXB0eUNsaWVudHNfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9FZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRv
ckNsaWVudC5oCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRv
ckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw2IEBAIHN0cnVjdCBHcmFtbWFy
RGV0YWlsOwogY2xhc3MgRWRpdG9yQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FZGl0
b3JDbGllbnQoKSB7ICB9Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoUmFuZ2UqKSA9IDA7CiAgICAgdmly
dHVhbCBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpID0gMDsgCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgw
MywyMSArODAzLDI1IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkRWxlbWVudCgK
ICAgICBpZiAob2xkRm9jdXNlZEVsZW1lbnQgJiYgb2xkRm9jdXNlZEVsZW1lbnQtPmlzUm9vdEVk
aXRhYmxlRWxlbWVudCgpICYmICFyZWxpbnF1aXNoZXNFZGl0aW5nRm9jdXMob2xkRm9jdXNlZEVs
ZW1lbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3BhZ2UuZWRpdG9yQ2xpZW50
KCkud2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKKyAgICBhdXRvIGVkaXRvckNsaWVudCA9IG1f
cGFnZS5lZGl0b3JDbGllbnQoKTsKKyAgICBpZiAoZWRpdG9yQ2xpZW50KQorICAgICAgICBlZGl0
b3JDbGllbnQtPndpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAKICAgICBjbGVhclNlbGVjdGlv
bklmTmVlZGVkKG9sZEZvY3VzZWRGcmFtZS5nZXQoKSwgbmV3Rm9jdXNlZEZyYW1lLmdldCgpLCBl
bGVtZW50KTsKIAogICAgIGlmICghZWxlbWVudCkgewogICAgICAgICBpZiAob2xkRG9jdW1lbnQp
CiAgICAgICAgICAgICBvbGREb2N1bWVudC0+c2V0Rm9jdXNlZEVsZW1lbnQobnVsbHB0cik7Ci0g
ICAgICAgIG1fcGFnZS5lZGl0b3JDbGllbnQoKS5zZXRJbnB1dE1ldGhvZFN0YXRlKGZhbHNlKTsK
KyAgICAgICAgaWYgKGVkaXRvckNsaWVudCkKKyAgICAgICAgICAgIGVkaXRvckNsaWVudC0+c2V0
SW5wdXRNZXRob2RTdGF0ZShmYWxzZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAog
ICAgIFJlZjxEb2N1bWVudD4gbmV3RG9jdW1lbnQoZWxlbWVudC0+ZG9jdW1lbnQoKSk7CiAKICAg
ICBpZiAobmV3RG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50KCkgPT0gZWxlbWVudCkgewotICAgICAg
ICBtX3BhZ2UuZWRpdG9yQ2xpZW50KCkuc2V0SW5wdXRNZXRob2RTdGF0ZShlbGVtZW50LT5zaG91
bGRVc2VJbnB1dE1ldGhvZCgpKTsKKyAgICAgICAgaWYgKGVkaXRvckNsaWVudCkKKyAgICAgICAg
ICAgIGVkaXRvckNsaWVudC0+c2V0SW5wdXRNZXRob2RTdGF0ZShlbGVtZW50LT5zaG91bGRVc2VJ
bnB1dE1ldGhvZCgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIApAQCAtODM2
LDggKzg0MCwxMCBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZEVsZW1lbnQoCiAg
ICAgaWYgKCFzdWNjZXNzZnVsbHlGb2N1c2VkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBpZiAobmV3RG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50KCkgPT0gZWxlbWVudCkKLSAgICAgICAg
bV9wYWdlLmVkaXRvckNsaWVudCgpLnNldElucHV0TWV0aG9kU3RhdGUoZWxlbWVudC0+c2hvdWxk
VXNlSW5wdXRNZXRob2QoKSk7CisgICAgaWYgKG5ld0RvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgp
ID09IGVsZW1lbnQpIHsKKyAgICAgICAgaWYgKGVkaXRvckNsaWVudCkKKyAgICAgICAgICAgIGVk
aXRvckNsaWVudC0+c2V0SW5wdXRNZXRob2RTdGF0ZShlbGVtZW50LT5zaG91bGRVc2VJbnB1dE1l
dGhvZCgpKTsKKyAgICB9CiAKICAgICBtX2ZvY3VzU2V0VGltZSA9IG1vbm90b25pY2FsbHlJbmNy
ZWFzaW5nVGltZSgpOwogICAgIG1fZm9jdXNSZXBhaW50VGltZXIuc3RvcCgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNyArMTU2LDcgQEAgc3RhdGljIHZvaWQgbmV0
d29ya1N0YXRlQ2hhbmdlZChib29sIGlzTwogCiBzdGF0aWMgY29uc3QgVmlld1N0YXRlOjpGbGFn
cyBQYWdlSW5pdGlhbFZpZXdTdGF0ZSA9IFZpZXdTdGF0ZTo6SXNWaXNpYmxlIHwgVmlld1N0YXRl
OjpJc0luV2luZG93OwogCi1QYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiBwYWdlQ29uZmln
dXJhdGlvbikKK1BhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlv
bikKICAgICA6IG1fY2hyb21lKHN0ZDo6bWFrZV91bmlxdWU8Q2hyb21lPigqdGhpcywgKnBhZ2VD
b25maWd1cmF0aW9uLmNocm9tZUNsaWVudCkpCiAgICAgLCBtX2RyYWdDYXJldENvbnRyb2xsZXIo
c3RkOjptYWtlX3VuaXF1ZTxEcmFnQ2FyZXRDb250cm9sbGVyPigpKQogI2lmIEVOQUJMRShEUkFH
X1NVUFBPUlQpCkBAIC0xNzksNyArMTc5LDcgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlv
biYgcGFnZUNvbmZpZwogICAgICwgbV9iYWNrRm9yd2FyZENvbnRyb2xsZXIoc3RkOjptYWtlX3Vu
aXF1ZTxCYWNrRm9yd2FyZENvbnRyb2xsZXI+KCp0aGlzLCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0
aW9uLmJhY2tGb3J3YXJkQ2xpZW50KSkpCiAgICAgLCBtX21haW5GcmFtZShNYWluRnJhbWU6OmNy
ZWF0ZSgqdGhpcywgcGFnZUNvbmZpZ3VyYXRpb24pKQogICAgICwgbV90aGVtZShSZW5kZXJUaGVt
ZTo6dGhlbWVGb3JQYWdlKHRoaXMpKQotICAgICwgbV9lZGl0b3JDbGllbnQoKnBhZ2VDb25maWd1
cmF0aW9uLmVkaXRvckNsaWVudCkKKyAgICAsIG1fZWRpdG9yQ2xpZW50KFdURk1vdmUocGFnZUNv
bmZpZ3VyYXRpb24uZWRpdG9yQ2xpZW50KSkKICAgICAsIG1fcGx1Z0luQ2xpZW50KHBhZ2VDb25m
aWd1cmF0aW9uLnBsdWdJbkNsaWVudCkKICAgICAsIG1fdmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQo
cGFnZUNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQpCiAgICAgLCBtX2RpYWdu
b3N0aWNMb2dnaW5nQ2xpZW50KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uZGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQpKQpAQCAtMjgzLDcgKzI4Myw2IEBAIFBhZ2U6On5QYWdlKCkKICAgICAgICAg
ZnJhbWUtPmRldGFjaEZyb21QYWdlKCk7CiAgICAgfQogCi0gICAgbV9lZGl0b3JDbGllbnQucGFn
ZURlc3Ryb3llZCgpOwogICAgIGlmIChtX3BsdWdJbkNsaWVudCkKICAgICAgICAgbV9wbHVnSW5D
bGllbnQtPnBhZ2VEZXN0cm95ZWQoKTsKICAgICBpZiAobV9hbHRlcm5hdGl2ZVRleHRDbGllbnQp
CkBAIC03NTAsNyArNzQ5LDggQEAgdm9pZCBQYWdlOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVm
ZXJzKQogCiB2b2lkIFBhZ2U6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIHsKLSAgICBtX2Vk
aXRvckNsaWVudC5jbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpOworICAgIGlmIChtX2VkaXRvckNs
aWVudCkKKyAgICAgICAgbV9lZGl0b3JDbGllbnQtPmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCk7
CiB9CiAKIGJvb2wgUGFnZTo6aW5Mb3dRdWFsaXR5SW1hZ2VJbnRlcnBvbGF0aW9uTW9kZSgpIGNv
bnN0CkBAIC03NjMsNiArNzYzLDExIEBAIHZvaWQgUGFnZTo6c2V0SW5Mb3dRdWFsaXR5SW1hZ2VJ
bnRlcnBvbGEKICAgICBtX2luTG93UXVhbGl0eUludGVycG9sYXRpb25Nb2RlID0gbW9kZTsKIH0K
IAorRWRpdG9yQ2xpZW50KiBQYWdlOjplZGl0b3JDbGllbnQoKQoreworICAgIHJldHVybiBtX2Vk
aXRvckNsaWVudC5nZXQoKTsKK30KKyAgICAKIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50JiBQYWdl
OjpkaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpIGNvbnN0CiB7CiAgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEVtcHR5RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+IGR1bW15Q2xpZW50OwpAQCAtMTEy
Miw3ICsxMTI3LDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgpIGNvbgog
CiB2b2lkIFBhZ2U6OmludmFsaWRhdGVTdHlsZXNGb3JBbGxMaW5rcygpCiB7Ci0gICAgZm9yIChG
cmFtZSogZnJhbWUgPSBtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fbWFpbkZy
YW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7
CiAgICAgICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnZpc2l0ZWRMaW5rU3RhdGUoKS5pbnZhbGlkYXRl
U3R5bGVGb3JBbGxMaW5rcygpOwpAQCAtMTEzMSw3ICsxMTM2LDcgQEAgdm9pZCBQYWdlOjppbnZh
bGlkYXRlU3R5bGVzRm9yQWxsTGlua3MoKQogCiB2b2lkIFBhZ2U6OmludmFsaWRhdGVTdHlsZXNG
b3JMaW5rKExpbmtIYXNoIGxpbmtIYXNoKQogewotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9t
YWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0
KCkpIHsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7
IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoIWZy
YW1lLT5kb2N1bWVudCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGZyYW1lLT5k
b2N1bWVudCgpLT52aXNpdGVkTGlua1N0YXRlKCkuaW52YWxpZGF0ZVN0eWxlRm9yTGluayhsaW5r
SGFzaCk7CkBAIC0xMTQwLDcgKzExNDUsNyBAQCB2b2lkIFBhZ2U6OmludmFsaWRhdGVTdHlsZXNG
b3JMaW5rKExpbmtICiAKIHZvaWQgUGFnZTo6aW52YWxpZGF0ZUluamVjdGVkU3R5bGVTaGVldENh
Y2hlSW5BbGxGcmFtZXMoKQogewotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9tYWluRnJhbWUu
Z2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAg
ICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKICAgICAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwpAQCAtMTE1Niw3ICsxMTYxLDcgQEAgdm9pZCBQYWdlOjpzZXREZWJ1Z2dl
cihKU0M6OkRlYnVnZ2VyKiBkZQogCiAgICAgbV9kZWJ1Z2dlciA9IGRlYnVnZ2VyOwogCi0gICAg
Zm9yIChGcmFtZSogZnJhbWUgPSBtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJh
bWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX21h
aW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQo
KSkKICAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmF0dGFjaERlYnVnZ2VyKG1fZGVidWdnZXIpOwog
fQogCkBAIC0xNDg3LDcgKzE0OTIsNyBAQCB2b2lkIFBhZ2U6OnNldElzVmlzaWJsZUludGVybmFs
KGJvb2wgaXNWCiAgICAgfQogCiAgICAgVmVjdG9yPFJlZjxEb2N1bWVudD4+IGRvY3VtZW50czsK
LSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQorICAgIGZvciAoRnJhbWUqIGZyYW1lID0g
Jm1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNl
TmV4dCgpKQogICAgICAgICBkb2N1bWVudHMuYXBwZW5kKCpmcmFtZS0+ZG9jdW1lbnQoKSk7CiAK
ICAgICBmb3IgKGF1dG8mIGRvY3VtZW50IDogZG9jdW1lbnRzKQpAQCAtMTk4NSw3ICsxOTkwLDcg
QEAgdm9pZCBQYWdlOjpzZXRBbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUAogICAgIG1fYWxsb3dz
TWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrID0gZmxhZzsKIAogICAgIFZlY3RvcjxSZWY8RG9j
dW1lbnQ+PiBkb2N1bWVudHM7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX21haW5GcmFtZS5n
ZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKKyAgICBm
b3IgKEZyYW1lKiBmcmFtZSA9ICZtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJh
bWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKICAgICAgICAgZG9jdW1lbnRzLmFwcGVuZCgqZnJh
bWUtPmRvY3VtZW50KCkpOwogCiAgICAgZm9yIChhdXRvJiBkb2N1bWVudCA6IGRvY3VtZW50cykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTgsOCArMTgsNyBAQAogICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAotI2lmbmRlZiBQYWdlX2gKLSNkZWZpbmUgUGFnZV9o
CisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZpbmRPcHRpb25zLmgiCiAjaW5jbHVkZSAiRnJh
bWVMb2FkZXJUeXBlcy5oIgpAQCAtMTQxLDcgKzE0MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgdm9pZCB1cGRhdGVTdHlsZUZvckFsbFBhZ2VzQWZ0ZXJHbG9iYWxDaGFu
Z2VJbkVudmlyb25tZW50KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgY2xlYXJQ
cmV2aW91c0l0ZW1Gcm9tQWxsUGFnZXMoSGlzdG9yeUl0ZW0qKTsKIAotICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IFBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IH5QYWdlKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB1aW50NjRfdCByZW5kZXJUcmVlU2l6ZSgp
IGNvbnN0OwpAQCAtMTU4LDExICsxNTcsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0Q2FuU3RhcnRNZWRpYShib29sKTsKICAgICBib29sIGNhblN0YXJ0TWVkaWEoKSBj
b25zdCB7IHJldHVybiBtX2NhblN0YXJ0TWVkaWE7IH0KIAotICAgIEVkaXRvckNsaWVudCYgZWRp
dG9yQ2xpZW50KCkgeyByZXR1cm4gbV9lZGl0b3JDbGllbnQ7IH0KKyAgICBFZGl0b3JDbGllbnQq
IGVkaXRvckNsaWVudCgpOwogICAgIFBsdWdJbkNsaWVudCogcGx1Z0luQ2xpZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9wbHVnSW5DbGllbnQ7IH0KIAotICAgIE1haW5GcmFtZSYgbWFpbkZyYW1lKCkg
eyBBU1NFUlQobV9tYWluRnJhbWUpOyByZXR1cm4gKm1fbWFpbkZyYW1lOyB9Ci0gICAgY29uc3Qg
TWFpbkZyYW1lJiBtYWluRnJhbWUoKSBjb25zdCB7IEFTU0VSVChtX21haW5GcmFtZSk7IHJldHVy
biAqbV9tYWluRnJhbWU7IH0KKyAgICBNYWluRnJhbWUmIG1haW5GcmFtZSgpIHsgcmV0dXJuIG1f
bWFpbkZyYW1lLmdldCgpOyB9CisgICAgY29uc3QgTWFpbkZyYW1lJiBtYWluRnJhbWUoKSBjb25z
dCB7IHJldHVybiBtX21haW5GcmFtZS5nZXQoKTsgfQogCiAgICAgYm9vbCBpblBhZ2VDYWNoZSgp
IGNvbnN0OwogCkBAIC01NzgsMTMgKzU3NywxMyBAQCBwcml2YXRlOgogICAgIGNvbnN0IHN0ZDo6
dW5pcXVlX3B0cjxQcm9ncmVzc1RyYWNrZXI+IG1fcHJvZ3Jlc3M7CiAKICAgICBjb25zdCBzdGQ6
OnVuaXF1ZV9wdHI8QmFja0ZvcndhcmRDb250cm9sbGVyPiBtX2JhY2tGb3J3YXJkQ29udHJvbGxl
cjsKLSAgICBjb25zdCBSZWZQdHI8TWFpbkZyYW1lPiBtX21haW5GcmFtZTsKKyAgICBSZWY8TWFp
bkZyYW1lPiBtX21haW5GcmFtZTsKIAogICAgIG11dGFibGUgUmVmUHRyPFBsdWdpbkRhdGE+IG1f
cGx1Z2luRGF0YTsKIAogICAgIFJlZlB0cjxSZW5kZXJUaGVtZT4gbV90aGVtZTsKIAotICAgIEVk
aXRvckNsaWVudCYgbV9lZGl0b3JDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVkaXRvckNs
aWVudD4gbV9lZGl0b3JDbGllbnQ7CiAgICAgUGx1Z0luQ2xpZW50KiBtX3BsdWdJbkNsaWVudDsK
ICAgICBWYWxpZGF0aW9uTWVzc2FnZUNsaWVudCogbV92YWxpZGF0aW9uTWVzc2FnZUNsaWVudDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+IG1fZGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQ7CkBAIC03MjQsNSArNzIzLDMgQEAgaW5saW5lIFBhZ2VHcm91cCYgUGFn
ZTo6Z3JvdXAoKQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0gICAgCi0jZW5kaWYgLy8g
UGFnZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcAko
cmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJCYWNrRm9y
d2FyZENsaWVudC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJE
aWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIgorI2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgogI2lu
Y2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RvcmUuaCIKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDIwMTg3MykKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
NjcsNyArNjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgQ29u
dGV4dE1lbnVDbGllbnQqIGNvbnRleHRNZW51Q2xpZW50IHsgbnVsbHB0ciB9OwogI2VuZGlmCi0g
ICAgRWRpdG9yQ2xpZW50KiBlZGl0b3JDbGllbnQgeyBudWxscHRyIH07CisgICAgc3RkOjp1bmlx
dWVfcHRyPEVkaXRvckNsaWVudD4gZWRpdG9yQ2xpZW50OwogICAgIERyYWdDbGllbnQqIGRyYWdD
bGllbnQgeyBudWxscHRyIH07CiAgICAgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQg
eyBudWxscHRyIH07CiAgICAgUGx1Z0luQ2xpZW50KiBwbHVnSW5DbGllbnQgeyBudWxscHRyIH07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0JKHJldmlzaW9uIDIwMTg3MykKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTcw
LDcgKzcwLDcgQEAgdm9pZCBQYWdlOjphZGRTY2hlZHVsZVBhaXIoUmVmPFNjaGVkdWxlUAogICAg
IG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzLT5hZGQocGFpci5wdHIoKSk7CiAKICNpZiAhVVNFKENG
TkVUV09SSykKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fbWFpbkZyYW1lLmdldCgpOyBmcmFt
ZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CisgICAgZm9yIChGcmFt
ZSogZnJhbWUgPSAmbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVl
KCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVu
dExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQogICAgICAgICAgICAg
ZG9jdW1lbnRMb2FkZXItPnNjaGVkdWxlKHBhaXIpOwogICAgICAgICBpZiAoRG9jdW1lbnRMb2Fk
ZXIqIGRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRM
b2FkZXIoKSkKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBQYWdlOjpyZW1vdmVTY2hlZHVsZVBhaXIo
UmVmPFNjaGVkdQogICAgIG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzLT5yZW1vdmUocGFpci5wdHIo
KSk7CiAKICNpZiAhVVNFKENGTkVUV09SSykKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fbWFp
bkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgp
KSB7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKERvY3Vt
ZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpKQogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnVuc2NoZWR1bGUocGFpcik7CiAgICAg
ICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCku
cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAJ
KHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzgsOCArMzc4LDEw
IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2MKICAgICAgICAgc2Ny
b2xsYWJsZUFyZWEtPnNldElzVXNlclNjcm9sbChzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9u
ID09IFN5bmNTY3JvbGxpbmdMYXllclBvc2l0aW9uKTsKICAgICAgICAgc2Nyb2xsYWJsZUFyZWEt
PnNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihzY3JvbGxQb3NpdGlvbik7CiAgICAgICAg
IHNjcm9sbGFibGVBcmVhLT5zZXRJc1VzZXJTY3JvbGwoZmFsc2UpOwotICAgICAgICBpZiAoc2Ny
b2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiA9PSBTZXRTY3JvbGxpbmdMYXllclBvc2l0aW9uKQot
ICAgICAgICAgICAgbV9wYWdlLT5lZGl0b3JDbGllbnQoKS5vdmVyZmxvd1Njcm9sbFBvc2l0aW9u
Q2hhbmdlZCgpOworICAgICAgICBpZiAoc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiA9PSBT
ZXRTY3JvbGxpbmdMYXllclBvc2l0aW9uKSB7CisgICAgICAgICAgICBpZiAoYXV0byBlZGl0b3JD
bGllbnQgPSBtX3BhZ2UtPmVkaXRvckNsaWVudCgpKQorICAgICAgICAgICAgICAgIGVkaXRvckNs
aWVudC0+b3ZlcmZsb3dTY3JvbGxQb3NpdGlvbkNoYW5nZWQoKTsKKyAgICAgICAgfQogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgICAgIGlmIChtX3BhZ2UtPmV4cGVjdHNXaGVlbEV2ZW50VHJp
Z2dlcnMoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3Bw
CShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTAsNyArMzkwLDcgQEAgYm9vbCBTVkdJbWFnZTo6
ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUgogICAgICAgICAvLyBUaGlzIHdpbGwgYmVjb21lIGFu
IGlzc3VlIHdoZW4gU1ZHSW1hZ2Ugd2lsbCBiZSBhYmxlIHRvIGxvYWQgb3RoZXIKICAgICAgICAg
Ly8gU1ZHSW1hZ2Ugb2JqZWN0cywgYnV0IHdlJ3JlIHNhZmUgbm93LCBiZWNhdXNlIFNWR0ltYWdl
IGNhbiBvbmx5IGJlCiAgICAgICAgIC8vIGxvYWRlZCBieSBhIHRvcC1sZXZlbCBkb2N1bWVudC4K
LSAgICAgICAgbV9wYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihwYWdlQ29uZmlndXJhdGlv
bik7CisgICAgICAgIG1fcGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4oV1RGTW92ZShwYWdl
Q29uZmlndXJhdGlvbikpOwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0TWVkaWFFbmFi
bGVkKGZhbHNlKTsKICAgICAgICAgbV9wYWdlLT5zZXR0aW5ncygpLnNldFNjcmlwdEVuYWJsZWQo
ZmFsc2UpOwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0UGx1Z2luc0VuYWJsZWQoZmFs
c2UpOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxODgwKQorKysgU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMDYtMDkgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBDbGVh
biB1cCBFZGl0b3JDbGllbnQgbGlmZXRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1ODU4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpnZW5lcmF0ZVRleHRDaGVja2luZ1JlcXVlc3RJ
RCk6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6c2hvdWxkRGVsZXRlUmFuZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnBhZ2VEZXN0cm95ZWQpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6V2ViRWRpdG9yQ2xpZW50KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Om1fc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKToKKwogMjAxNi0wNi0wOSAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIENs
ZWFuIHVwIFdlYlNvY2tldCBjb2RlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCShyZXZp
c2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDExICs3MCw2IEBAIHN0
YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVRleHRDaGVja2luZ1JlcXUKICAgICByZXR1cm4gdW5pcXVl
VGV4dENoZWNraW5nUmVxdWVzdElEKys7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpwYWdl
RGVzdHJveWVkKCkKLXsKLSAgICBkZWxldGUgdGhpczsKLX0KLQogYm9vbCBXZWJFZGl0b3JDbGll
bnQ6OnNob3VsZERlbGV0ZVJhbmdlKFJhbmdlKiByYW5nZSkKIHsKICAgICBib29sIHJlc3VsdCA9
IG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5zaG91bGREZWxldGVSYW5nZSht
X3BhZ2UsIHJhbmdlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkocmV2aXNpb24gMjAxODcz
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsNiBAQCBwdWJsaWM6CiAgICAgfQog
CiBwcml2YXRlOgotICAgIHZvaWQgcGFnZURlc3Ryb3llZCgpIG92ZXJyaWRlOwotCiAgICAgYm9v
bCBzaG91bGREZWxldGVSYW5nZShXZWJDb3JlOjpSYW5nZSopIG92ZXJyaWRlOwogICAgIGJvb2wg
c21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1NlbGVjdFRy
YWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDIwMTg3MykKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzg5LDcgKzM4OSw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlE
LCBjb25zdCAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBwYWdlQ29uZmlndXJhdGlv
bi5jb250ZXh0TWVudUNsaWVudCA9IG5ldyBXZWJDb250ZXh0TWVudUNsaWVudCh0aGlzKTsKICNl
bmRpZgotICAgIHBhZ2VDb25maWd1cmF0aW9uLmVkaXRvckNsaWVudCA9IG5ldyBXZWJFZGl0b3JD
bGllbnQodGhpcyk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uZWRpdG9yQ2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJFZGl0b3JDbGllbnQ+KHRoaXMpOwogI2lmIEVOQUJMRShEUkFHX1NVUFBP
UlQpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uZHJhZ0NsaWVudCA9IG5ldyBXZWJEcmFnQ2xpZW50
KHRoaXMpOwogI2VuZGlmCkBAIC00MTQsNyArNDE0LDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50
NjRfdCBwYWdlSUQsIGNvbnN0IAogI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9XZWJQYWdlSW5p
dGlhbGl6YXRpb24uaD4KICNlbmRpZgogCi0gICAgbV9wYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQ
YWdlPihwYWdlQ29uZmlndXJhdGlvbik7CisgICAgbV9wYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQ
YWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAgICAgdXBkYXRlUHJlZmVyZW5jZXMo
cGFyYW1ldGVycy5zdG9yZSk7CiAKICAgICBtX2RyYXdpbmdBcmVhID0gRHJhd2luZ0FyZWE6OmNy
ZWF0ZSgqdGhpcywgcGFyYW1ldGVycyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
MDE4ODkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxOCBAQAorMjAxNi0wNi0wOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgorCisgICAgICAgIENsZWFuIHVwIEVkaXRvckNsaWVudCBsaWZldGltZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4NTg4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OldlYkVkaXRvckNsaWVu
dCk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnBhZ2VEZXN0cm95ZWQpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfY29tbW9u
SW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAgICAgICAgKC1bV2Vi
VmlldyBpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOmZyYW1lOnByZWZlcmVuY2VzOmdy
b3VwTmFtZTpdKToKKwogMjAxNi0wNi0wOSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+
CiAKICAgICAgICAgRGVmaW5lIHByaW50aW5ne01pbmltdW0sTWF4aW11bX1TaHJpbmtGYWN0b3Ig
aW4gb25seSBvbmUgcGxhY2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNTEsOCArNTEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDaGVja1N1Y2NlZWQoaW50
IHNlcXVlbmNlLCBOU0FycmF5ICpyZXN1bHRzKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHBhZ2VE
ZXN0cm95ZWQoKSBvdmVycmlkZTsKLQogICAgIGJvb2wgaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVk
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKSBvdmVycmlkZTsK
ICAgICBib29sIGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgb3ZlcnJpZGU7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4MywxMSArMTgz
LDYgQEAgLSAodm9pZClyZWRvRWRpdGluZzooaWQpYXJnCiAKIEBlbmQKIAotdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OnBhZ2VEZXN0cm95ZWQoKQotewotICAgIGRlbGV0ZSB0aGlzOwotfQotCiBXZWJF
ZGl0b3JDbGllbnQ6OldlYkVkaXRvckNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KQogICAgIDogbV93
ZWJWaWV3KHdlYlZpZXcpCiAgICAgLCBtX3VuZG9UYXJnZXQoYWRvcHROUyhbW1dlYkVkaXRvclVu
ZG9UYXJnZXQgYWxsb2NdIGluaXRdKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0JKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAwNCw3ICsxMDA0LDcgQEAgLSAodm9pZClfY29t
bW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYQogI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dl
YlZpZXdJbml0aWFsaXphdGlvbi5tbT4KICNlbmRpZgogCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24u
ZWRpdG9yQ2xpZW50ID0gbmV3IFdlYkVkaXRvckNsaWVudChzZWxmKTsKKyAgICBwYWdlQ29uZmln
dXJhdGlvbi5lZGl0b3JDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkVkaXRvckNsaWVudD4o
c2VsZik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uYWx0ZXJuYXRpdmVUZXh0Q2xpZW50ID0gbmV3
IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudChzZWxmKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5s
b2FkZXJDbGllbnRGb3JNYWluRnJhbWUgPSBuZXcgV2ViRnJhbWVMb2FkZXJDbGllbnQ7CiAgICAg
cGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50ID0gbmV3IFdlYlByb2dyZXNz
VHJhY2tlckNsaWVudChzZWxmKTsKQEAgLTEwMTMsNyArMTAxMyw3IEBAIC0gKHZvaWQpX2NvbW1v
bkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmEKICAgICBwYWdlQ29uZmlndXJhdGlvbi5zdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIgPSAmX3ByaXZhdGUtPmdyb3VwLT5zdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIoKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudFByb3ZpZGVyID0gJl9w
cml2YXRlLT5ncm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCk7CiAgICAgcGFnZUNvbmZpZ3Vy
YXRpb24udmlzaXRlZExpbmtTdG9yZSA9ICZfcHJpdmF0ZS0+Z3JvdXAtPnZpc2l0ZWRMaW5rU3Rv
cmUoKTsKLSAgICBfcHJpdmF0ZS0+cGFnZSA9IG5ldyBQYWdlKHBhZ2VDb25maWd1cmF0aW9uKTsK
KyAgICBfcHJpdmF0ZS0+cGFnZSA9IG5ldyBQYWdlKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24p
KTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXRHcm91cE5hbWUoZ3JvdXBOYW1lKTsKIApAQCAt
MTI0OCw3ICsxMjQ4LDcgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZToo
TgogI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dlYlZpZXdJbml0aWFsaXphdGlvbi5tbT4KICNl
bmRpZgogCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24uZWRpdG9yQ2xpZW50ID0gbmV3IFdlYkVkaXRv
ckNsaWVudChzZWxmKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5lZGl0b3JDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYkVkaXRvckNsaWVudD4oc2VsZik7CiAgICAgcGFnZUNvbmZpZ3VyYXRp
b24uaW5zcGVjdG9yQ2xpZW50ID0gbmV3IFdlYkluc3BlY3RvckNsaWVudChzZWxmKTsKICAgICBw
YWdlQ29uZmlndXJhdGlvbi5sb2FkZXJDbGllbnRGb3JNYWluRnJhbWUgPSBuZXcgV2ViRnJhbWVM
b2FkZXJDbGllbnQ7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50
ID0gbmV3IFdlYlByb2dyZXNzVHJhY2tlckNsaWVudChzZWxmKTsKQEAgLTEyNTgsNyArMTI1OCw3
IEBAIC0gKGlkKWluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE4KICAgICBwYWdlQ29u
ZmlndXJhdGlvbi51c2VyQ29udGVudFByb3ZpZGVyID0gJl9wcml2YXRlLT5ncm91cC0+dXNlckNv
bnRlbnRDb250cm9sbGVyKCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24udmlzaXRlZExpbmtTdG9y
ZSA9ICZfcHJpdmF0ZS0+Z3JvdXAtPnZpc2l0ZWRMaW5rU3RvcmUoKTsKIAotICAgIF9wcml2YXRl
LT5wYWdlID0gbmV3IFBhZ2UocGFnZUNvbmZpZ3VyYXRpb24pOworICAgIF9wcml2YXRlLT5wYWdl
ID0gbmV3IFBhZ2UoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogICAgIAogICAgIFtzZWxm
IHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDpZRVNdOwogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280966</attachid>
            <date>2016-06-09 16:23:04 -0700</date>
            <delta_ts>2016-06-09 16:32:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158588-20160609162432.patch</filename>
            <type>text/plain</type>
            <size>18948</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAJ
KHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JP
dmVybGF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODY2LDcgKzg2Niw3IEBAIFBhZ2UqIEluc3Bl
Y3Rvck92ZXJsYXk6Om92ZXJsYXlQYWdlKCkKIAogICAgIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VD
b25maWd1cmF0aW9uOwogICAgIGZpbGxXaXRoRW1wdHlDbGllbnRzKHBhZ2VDb25maWd1cmF0aW9u
KTsKLSAgICBtX292ZXJsYXlQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihwYWdlQ29uZmln
dXJhdGlvbik7CisgICAgbV9vdmVybGF5UGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4oV1RG
TW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCiAgICAgU2V0dGluZ3MmIHNldHRpbmdzID0gbV9w
YWdlLnNldHRpbmdzKCk7CiAgICAgU2V0dGluZ3MmIG92ZXJsYXlTZXR0aW5ncyA9IG1fb3Zlcmxh
eVBhZ2UtPnNldHRpbmdzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw5ICsxMjksOCBAQCB2b2lkIGZpbGxXaXRo
RW1wdHlDbGllbnRzKFBhZ2VDb25maWd1cmF0CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uZHJhZ0Ns
aWVudCA9ICZkdW1teURyYWdDbGllbnQuZ2V0KCk7CiAjZW5kaWYKIAotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxFbXB0eUVkaXRvckNsaWVudD4gZHVtbXlFZGl0b3JDbGllbnQ7Ci0gICAgcGFn
ZUNvbmZpZ3VyYXRpb24uZWRpdG9yQ2xpZW50ID0gJmR1bW15RWRpdG9yQ2xpZW50LmdldCgpOwot
CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uZWRpdG9yQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxF
bXB0eUVkaXRvckNsaWVudD4oKTsKKyAgICAKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RW1w
dHlJbnNwZWN0b3JDbGllbnQ+IGR1bW15SW5zcGVjdG9yQ2xpZW50OwogICAgIHBhZ2VDb25maWd1
cmF0aW9uLmluc3BlY3RvckNsaWVudCA9ICZkdW1teUluc3BlY3RvckNsaWVudC5nZXQoKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gMjAxODczKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiRm9jdXNEaXJlY3Rpb24uaCIKICNpbmNsdWRlICJG
cmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgotI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJDbGllbnQuaCIKQEAgLTcx
LDYgKzcwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0
M0Q7CitjbGFzcyBQYWdlOwogCiBjbGFzcyBFbXB0eUNocm9tZUNsaWVudCA6IHB1YmxpYyBDaHJv
bWVDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDM2LDcgKzQzNiw2
IEBAIGNsYXNzIEVtcHR5RWRpdG9yQ2xpZW50IDogcHVibGljIEVkaXRvckMKIHB1YmxpYzoKICAg
ICBFbXB0eUVkaXRvckNsaWVudCgpIHsgfQogICAgIHZpcnR1YWwgfkVtcHR5RWRpdG9yQ2xpZW50
KCkgeyB9Ci0gICAgdm9pZCBwYWdlRGVzdHJveWVkKCkgb3ZlcnJpZGUgeyB9CiAKICAgICBib29s
IHNob3VsZERlbGV0ZVJhbmdlKFJhbmdlKikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDIwMTg3MykK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTcwLDcgKzcwLDYgQEAgc3RydWN0IEdyYW1tYXJEZXRhaWw7CiBjbGFzcyBFZGl0b3JDbGllbnQg
ewogcHVibGljOgogICAgIHZpcnR1YWwgfkVkaXRvckNsaWVudCgpIHsgIH0KLSAgICB2aXJ0dWFs
IHZvaWQgcGFnZURlc3Ryb3llZCgpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGREZWxl
dGVSYW5nZShSYW5nZSopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc21hcnRJbnNlcnREZWxldGVF
bmFibGVkKCkgPSAwOyAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMjAxODczKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDcg
KzE1Niw3IEBAIHN0YXRpYyB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9vbCBpc08KIAogc3Rh
dGljIGNvbnN0IFZpZXdTdGF0ZTo6RmxhZ3MgUGFnZUluaXRpYWxWaWV3U3RhdGUgPSBWaWV3U3Rh
dGU6OklzVmlzaWJsZSB8IFZpZXdTdGF0ZTo6SXNJbldpbmRvdzsKIAotUGFnZTo6UGFnZShQYWdl
Q29uZmlndXJhdGlvbiYgcGFnZUNvbmZpZ3VyYXRpb24pCitQYWdlOjpQYWdlKFBhZ2VDb25maWd1
cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX2Nocm9tZShzdGQ6Om1ha2VfdW5p
cXVlPENocm9tZT4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQpKQogICAg
ICwgbV9kcmFnQ2FyZXRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0NhcmV0Q29udHJv
bGxlcj4oKSkKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtMTc5LDcgKzE3OSw3IEBAIFBh
Z2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mIHBhZ2VDb25maWcKICAgICAsIG1fYmFja0Zvcndh
cmRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QmFja0ZvcndhcmRDb250cm9sbGVyPigqdGhp
cywgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5iYWNrRm9yd2FyZENsaWVudCkpKQogICAgICwg
bV9tYWluRnJhbWUoTWFpbkZyYW1lOjpjcmVhdGUoKnRoaXMsIHBhZ2VDb25maWd1cmF0aW9uKSkK
ICAgICAsIG1fdGhlbWUoUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZSh0aGlzKSkKLSAgICAsIG1f
ZWRpdG9yQ2xpZW50KCpwYWdlQ29uZmlndXJhdGlvbi5lZGl0b3JDbGllbnQpCisgICAgLCBtX2Vk
aXRvckNsaWVudChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmVkaXRvckNsaWVudCkpCiAgICAg
LCBtX3BsdWdJbkNsaWVudChwYWdlQ29uZmlndXJhdGlvbi5wbHVnSW5DbGllbnQpCiAgICAgLCBt
X3ZhbGlkYXRpb25NZXNzYWdlQ2xpZW50KHBhZ2VDb25maWd1cmF0aW9uLnZhbGlkYXRpb25NZXNz
YWdlQ2xpZW50KQogICAgICwgbV9kaWFnbm9zdGljTG9nZ2luZ0NsaWVudChXVEZNb3ZlKHBhZ2VD
b25maWd1cmF0aW9uLmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KSkKQEAgLTIzOCw2ICsyMzgsNyBA
QCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiBwYWdlQ29uZmlnCiAgICAgLCBtX3Nlc3Np
b25JRChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkKICAgICAsIG1faXNDbG9zaW5nKGZh
bHNlKQogeworICAgIEFTU0VSVChtX2VkaXRvckNsaWVudCk7CiAgICAgdXBkYXRlVGltZXJUaHJv
dHRsaW5nU3RhdGUoKTsKIAogICAgIG1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLT5hZGRQYWdl
KCp0aGlzKTsKQEAgLTI4Myw3ICsyODQsNiBAQCBQYWdlOjp+UGFnZSgpCiAgICAgICAgIGZyYW1l
LT5kZXRhY2hGcm9tUGFnZSgpOwogICAgIH0KIAotICAgIG1fZWRpdG9yQ2xpZW50LnBhZ2VEZXN0
cm95ZWQoKTsKICAgICBpZiAobV9wbHVnSW5DbGllbnQpCiAgICAgICAgIG1fcGx1Z0luQ2xpZW50
LT5wYWdlRGVzdHJveWVkKCk7CiAgICAgaWYgKG1fYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KQpAQCAt
NzUwLDcgKzc1MCw3IEBAIHZvaWQgUGFnZTo6c2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykK
IAogdm9pZCBQYWdlOjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiB7Ci0gICAgbV9lZGl0b3JD
bGllbnQuY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKKyAgICBtX2VkaXRvckNsaWVudC0+Y2xl
YXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKIH0KIAogYm9vbCBQYWdlOjppbkxvd1F1YWxpdHlJbWFn
ZUludGVycG9sYXRpb25Nb2RlKCkgY29uc3QKQEAgLTc2Miw3ICs3NjIsNyBAQCB2b2lkIFBhZ2U6
OnNldEluTG93UXVhbGl0eUltYWdlSW50ZXJwb2xhCiB7CiAgICAgbV9pbkxvd1F1YWxpdHlJbnRl
cnBvbGF0aW9uTW9kZSA9IG1vZGU7CiB9Ci0KKyAgICAKIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50
JiBQYWdlOjpkaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpIGNvbnN0CiB7CiAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEVtcHR5RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+IGR1bW15Q2xpZW50OwpA
QCAtMTEyMiw3ICsxMTIyLDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgp
IGNvbgogCiB2b2lkIFBhZ2U6OmludmFsaWRhdGVTdHlsZXNGb3JBbGxMaW5rcygpCiB7Ci0gICAg
Zm9yIChGcmFtZSogZnJhbWUgPSBtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJh
bWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1f
bWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4
dCgpKSB7CiAgICAgICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnZpc2l0ZWRMaW5rU3RhdGUoKS5pbnZh
bGlkYXRlU3R5bGVGb3JBbGxMaW5rcygpOwpAQCAtMTEzMSw3ICsxMTMxLDcgQEAgdm9pZCBQYWdl
OjppbnZhbGlkYXRlU3R5bGVzRm9yQWxsTGlua3MoKQogCiB2b2lkIFBhZ2U6OmludmFsaWRhdGVT
dHlsZXNGb3JMaW5rKExpbmtIYXNoIGxpbmtIYXNoKQogewotICAgIGZvciAoRnJhbWUqIGZyYW1l
ID0gbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVy
c2VOZXh0KCkpIHsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX21haW5GcmFtZS5nZXQoKTsg
ZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBp
ZiAoIWZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGZy
YW1lLT5kb2N1bWVudCgpLT52aXNpdGVkTGlua1N0YXRlKCkuaW52YWxpZGF0ZVN0eWxlRm9yTGlu
ayhsaW5rSGFzaCk7CkBAIC0xMTQwLDcgKzExNDAsNyBAQCB2b2lkIFBhZ2U6OmludmFsaWRhdGVT
dHlsZXNGb3JMaW5rKExpbmtICiAKIHZvaWQgUGFnZTo6aW52YWxpZGF0ZUluamVjdGVkU3R5bGVT
aGVldENhY2hlSW5BbGxGcmFtZXMoKQogewotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9tYWlu
RnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkp
IHsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZy
YW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKICAgICAgICAgaWYgKCFkb2N1bWVudCkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTE1Niw3ICsxMTU2LDcgQEAgdm9pZCBQYWdlOjpzZXRE
ZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZQogCiAgICAgbV9kZWJ1Z2dlciA9IGRlYnVnZ2VyOwog
Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9
ICZtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJz
ZU5leHQoKSkKICAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmF0dGFjaERlYnVnZ2VyKG1fZGVidWdn
ZXIpOwogfQogCkBAIC0xNDg3LDcgKzE0ODcsNyBAQCB2b2lkIFBhZ2U6OnNldElzVmlzaWJsZUlu
dGVybmFsKGJvb2wgaXNWCiAgICAgfQogCiAgICAgVmVjdG9yPFJlZjxEb2N1bWVudD4+IGRvY3Vt
ZW50czsKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsg
ZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQorICAgIGZvciAoRnJhbWUqIGZy
YW1lID0gJm1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRy
YXZlcnNlTmV4dCgpKQogICAgICAgICBkb2N1bWVudHMuYXBwZW5kKCpmcmFtZS0+ZG9jdW1lbnQo
KSk7CiAKICAgICBmb3IgKGF1dG8mIGRvY3VtZW50IDogZG9jdW1lbnRzKQpAQCAtMTk4NSw3ICsx
OTg1LDcgQEAgdm9pZCBQYWdlOjpzZXRBbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUAogICAgIG1f
YWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrID0gZmxhZzsKIAogICAgIFZlY3RvcjxS
ZWY8RG9jdW1lbnQ+PiBkb2N1bWVudHM7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX21haW5G
cmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkK
KyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKICAgICAgICAgZG9jdW1lbnRzLmFwcGVu
ZCgqZnJhbWUtPmRvY3VtZW50KCkpOwogCiAgICAgZm9yIChhdXRvJiBkb2N1bWVudCA6IGRvY3Vt
ZW50cykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTgsOCArMTgsNyBAQAogICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAotI2lmbmRlZiBQYWdlX2gKLSNkZWZpbmUg
UGFnZV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZpbmRPcHRpb25zLmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgpAQCAtMTQxLDcgKzE0MCw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCB1cGRhdGVTdHlsZUZvckFsbFBhZ2VzQWZ0ZXJHbG9i
YWxDaGFuZ2VJbkVudmlyb25tZW50KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQg
Y2xlYXJQcmV2aW91c0l0ZW1Gcm9tQWxsUGFnZXMoSGlzdG9yeUl0ZW0qKTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIH5QYWdlKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB1aW50NjRfdCByZW5kZXJUcmVl
U2l6ZSgpIGNvbnN0OwpAQCAtMTU4LDExICsxNTcsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0Q2FuU3RhcnRNZWRpYShib29sKTsKICAgICBib29sIGNhblN0YXJ0TWVk
aWEoKSBjb25zdCB7IHJldHVybiBtX2NhblN0YXJ0TWVkaWE7IH0KIAotICAgIEVkaXRvckNsaWVu
dCYgZWRpdG9yQ2xpZW50KCkgeyByZXR1cm4gbV9lZGl0b3JDbGllbnQ7IH0KKyAgICBFZGl0b3JD
bGllbnQmIGVkaXRvckNsaWVudCgpIGNvbnN0IHsgcmV0dXJuICptX2VkaXRvckNsaWVudDsgfQog
ICAgIFBsdWdJbkNsaWVudCogcGx1Z0luQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9wbHVnSW5D
bGllbnQ7IH0KIAotICAgIE1haW5GcmFtZSYgbWFpbkZyYW1lKCkgeyBBU1NFUlQobV9tYWluRnJh
bWUpOyByZXR1cm4gKm1fbWFpbkZyYW1lOyB9Ci0gICAgY29uc3QgTWFpbkZyYW1lJiBtYWluRnJh
bWUoKSBjb25zdCB7IEFTU0VSVChtX21haW5GcmFtZSk7IHJldHVybiAqbV9tYWluRnJhbWU7IH0K
KyAgICBNYWluRnJhbWUmIG1haW5GcmFtZSgpIHsgcmV0dXJuIG1fbWFpbkZyYW1lLmdldCgpOyB9
CisgICAgY29uc3QgTWFpbkZyYW1lJiBtYWluRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX21haW5G
cmFtZS5nZXQoKTsgfQogCiAgICAgYm9vbCBpblBhZ2VDYWNoZSgpIGNvbnN0OwogCkBAIC01Nzgs
MTMgKzU3NywxMyBAQCBwcml2YXRlOgogICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxQcm9ncmVz
c1RyYWNrZXI+IG1fcHJvZ3Jlc3M7CiAKICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8QmFja0Zv
cndhcmRDb250cm9sbGVyPiBtX2JhY2tGb3J3YXJkQ29udHJvbGxlcjsKLSAgICBjb25zdCBSZWZQ
dHI8TWFpbkZyYW1lPiBtX21haW5GcmFtZTsKKyAgICBSZWY8TWFpbkZyYW1lPiBtX21haW5GcmFt
ZTsKIAogICAgIG11dGFibGUgUmVmUHRyPFBsdWdpbkRhdGE+IG1fcGx1Z2luRGF0YTsKIAogICAg
IFJlZlB0cjxSZW5kZXJUaGVtZT4gbV90aGVtZTsKIAotICAgIEVkaXRvckNsaWVudCYgbV9lZGl0
b3JDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVkaXRvckNsaWVudD4gbV9lZGl0b3JDbGll
bnQ7CiAgICAgUGx1Z0luQ2xpZW50KiBtX3BsdWdJbkNsaWVudDsKICAgICBWYWxpZGF0aW9uTWVz
c2FnZUNsaWVudCogbV92YWxpZGF0aW9uTWVzc2FnZUNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+IG1fZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ7CkBA
IC03MjQsNSArNzIzLDMgQEAgaW5saW5lIFBhZ2VHcm91cCYgUGFnZTo6Z3JvdXAoKQogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0gICAgCi0jZW5kaWYgLy8gUGFnZV9oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjAxODczKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJCYWNrRm9yd2FyZENsaWVudC5oIgogI2lu
Y2x1ZGUgIkRhdGFiYXNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJEaWFnbm9zdGljTG9nZ2luZ0Ns
aWVudC5oIgorI2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgogI2luY2x1ZGUgIlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIlZpc2l0ZWRMaW5rU3RvcmUuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VD
b25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBwdWJs
aWM6CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgQ29udGV4dE1lbnVDbGllbnQqIGNv
bnRleHRNZW51Q2xpZW50IHsgbnVsbHB0ciB9OwogI2VuZGlmCi0gICAgRWRpdG9yQ2xpZW50KiBl
ZGl0b3JDbGllbnQgeyBudWxscHRyIH07CisgICAgc3RkOjp1bmlxdWVfcHRyPEVkaXRvckNsaWVu
dD4gZWRpdG9yQ2xpZW50OwogICAgIERyYWdDbGllbnQqIGRyYWdDbGllbnQgeyBudWxscHRyIH07
CiAgICAgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQgeyBudWxscHRyIH07CiAgICAg
UGx1Z0luQ2xpZW50KiBwbHVnSW5DbGllbnQgeyBudWxscHRyIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvbWFjL1BhZ2VNYWMubW0JKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvbWFjL1BhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBQ
YWdlOjphZGRTY2hlZHVsZVBhaXIoUmVmPFNjaGVkdWxlUAogICAgIG1fc2NoZWR1bGVkUnVuTG9v
cFBhaXJzLT5hZGQocGFpci5wdHIoKSk7CiAKICNpZiAhVVNFKENGTkVUV09SSykKLSAgICBmb3Ig
KEZyYW1lKiBmcmFtZSA9IG1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+
dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9tYWlu
RnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkp
IHsKICAgICAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5s
b2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNj
aGVkdWxlKHBhaXIpOwogICAgICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVy
ID0gZnJhbWUtPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSkKQEAgLTkwLDcg
KzkwLDcgQEAgdm9pZCBQYWdlOjpyZW1vdmVTY2hlZHVsZVBhaXIoUmVmPFNjaGVkdQogICAgIG1f
c2NoZWR1bGVkUnVuTG9vcFBhaXJzLT5yZW1vdmUocGFpci5wdHIoKSk7CiAKICNpZiAhVVNFKENG
TkVUV09SSykKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fbWFpbkZyYW1lLmdldCgpOyBmcmFt
ZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CisgICAgZm9yIChGcmFt
ZSogZnJhbWUgPSAmbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVl
KCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVu
dExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQogICAgICAgICAgICAg
ZG9jdW1lbnRMb2FkZXItPnVuc2NoZWR1bGUocGFpcik7CiAgICAgICAgIGlmIChEb2N1bWVudExv
YWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1bWVu
dExvYWRlcigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3Bw
CShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTAsNyArMzkwLDcgQEAgYm9vbCBTVkdJbWFnZTo6
ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUgogICAgICAgICAvLyBUaGlzIHdpbGwgYmVjb21lIGFu
IGlzc3VlIHdoZW4gU1ZHSW1hZ2Ugd2lsbCBiZSBhYmxlIHRvIGxvYWQgb3RoZXIKICAgICAgICAg
Ly8gU1ZHSW1hZ2Ugb2JqZWN0cywgYnV0IHdlJ3JlIHNhZmUgbm93LCBiZWNhdXNlIFNWR0ltYWdl
IGNhbiBvbmx5IGJlCiAgICAgICAgIC8vIGxvYWRlZCBieSBhIHRvcC1sZXZlbCBkb2N1bWVudC4K
LSAgICAgICAgbV9wYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihwYWdlQ29uZmlndXJhdGlv
bik7CisgICAgICAgIG1fcGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4oV1RGTW92ZShwYWdl
Q29uZmlndXJhdGlvbikpOwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0TWVkaWFFbmFi
bGVkKGZhbHNlKTsKICAgICAgICAgbV9wYWdlLT5zZXR0aW5ncygpLnNldFNjcmlwdEVuYWJsZWQo
ZmFsc2UpOwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0UGx1Z2luc0VuYWJsZWQoZmFs
c2UpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAkocmV2aXNpb24gMjAxODczKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCwxMSArNzAsNiBAQCBzdGF0aWMgdWludDY0X3QgZ2Vu
ZXJhdGVUZXh0Q2hlY2tpbmdSZXF1CiAgICAgcmV0dXJuIHVuaXF1ZVRleHRDaGVja2luZ1JlcXVl
c3RJRCsrOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6cGFnZURlc3Ryb3llZCgpCi17Ci0g
ICAgZGVsZXRlIHRoaXM7Ci19Ci0KIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGREZWxldGVS
YW5nZShSYW5nZSogcmFuZ2UpCiB7CiAgICAgYm9vbCByZXN1bHQgPSBtX3BhZ2UtPmluamVjdGVk
QnVuZGxlRWRpdG9yQ2xpZW50KCkuc2hvdWxkRGVsZXRlUmFuZ2UobV9wYWdlLCByYW5nZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDggKzQxLDYgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2
b2lkIHBhZ2VEZXN0cm95ZWQoKSBvdmVycmlkZTsKLQogICAgIGJvb2wgc2hvdWxkRGVsZXRlUmFu
Z2UoV2ViQ29yZTo6UmFuZ2UqKSBvdmVycmlkZTsKICAgICBib29sIHNtYXJ0SW5zZXJ0RGVsZXRl
RW5hYmxlZCgpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VF
bmFibGVkKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4OSw3ICsz
ODksNyBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgCiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGll
bnQgPSBuZXcgV2ViQ29udGV4dE1lbnVDbGllbnQodGhpcyk7CiAjZW5kaWYKLSAgICBwYWdlQ29u
ZmlndXJhdGlvbi5lZGl0b3JDbGllbnQgPSBuZXcgV2ViRWRpdG9yQ2xpZW50KHRoaXMpOworICAg
IHBhZ2VDb25maWd1cmF0aW9uLmVkaXRvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViRWRp
dG9yQ2xpZW50Pih0aGlzKTsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIHBhZ2VDb25m
aWd1cmF0aW9uLmRyYWdDbGllbnQgPSBuZXcgV2ViRHJhZ0NsaWVudCh0aGlzKTsKICNlbmRpZgpA
QCAtNDE0LDcgKzQxNCw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25z
dCAKICNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvV2ViUGFnZUluaXRpYWxpemF0aW9uLmg+CiAj
ZW5kaWYKIAotICAgIG1fcGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4ocGFnZUNvbmZpZ3Vy
YXRpb24pOworICAgIG1fcGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4oV1RGTW92ZShwYWdl
Q29uZmlndXJhdGlvbikpOwogICAgIHVwZGF0ZVByZWZlcmVuY2VzKHBhcmFtZXRlcnMuc3RvcmUp
OwogCiAgICAgbV9kcmF3aW5nQXJlYSA9IERyYXdpbmdBcmVhOjpjcmVhdGUoKnRoaXMsIHBhcmFt
ZXRlcnMpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxODg5KQorKysgU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTYtMDYtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBDbGVhbiB1cCBFZGl0b3JDbGllbnQgbGlmZXRpbWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODU4OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgor
ICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpXZWJFZGl0b3JDbGllbnQpOgorICAgICAgICAoV2Vi
RWRpdG9yQ2xpZW50OjpwYWdlRGVzdHJveWVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJWaWV3
L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0
aEZyYW1lTmFtZTpncm91cE5hbWU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgaW5pdFNpbXBsZUhU
TUxEb2N1bWVudFdpdGhTdHlsZTpmcmFtZTpwcmVmZXJlbmNlczpncm91cE5hbWU6XSk6CisKIDIw
MTYtMDYtMDkgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIERlZmlu
ZSBwcmludGluZ3tNaW5pbXVtLE1heGltdW19U2hyaW5rRmFjdG9yIGluIG9ubHkgb25lIHBsYWNl
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUxLDYg
QEAgcHVibGljOgogICAgIHZvaWQgZGlkQ2hlY2tTdWNjZWVkKGludCBzZXF1ZW5jZSwgTlNBcnJh
eSAqcmVzdWx0cyk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBwYWdlRGVzdHJveWVkKCkgb3ZlcnJp
ZGU7Ci0KICAgICBib29sIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpIG92ZXJyaWRlOwogICAg
IHZvaWQgdG9nZ2xlR3JhbW1hckNoZWNraW5nKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0NvbnRp
bnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQkocmV2aXNp
b24gMjAxODczKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODMsMTEgKzE4Myw2IEBAIC0gKHZvaWQpcmVk
b0VkaXRpbmc6KGlkKWFyZwogCiBAZW5kCiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpwYWdlRGVz
dHJveWVkKCkKLXsKLSAgICBkZWxldGUgdGhpczsKLX0KLQogV2ViRWRpdG9yQ2xpZW50OjpXZWJF
ZGl0b3JDbGllbnQoV2ViVmlldyAqd2ViVmlldykKICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQog
ICAgICwgbV91bmRvVGFyZ2V0KGFkb3B0TlMoW1tXZWJFZGl0b3JVbmRvVGFyZ2V0IGFsbG9jXSBp
bml0XSkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAy
MDE4NzMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEwMDQsNyArMTAwNCw3IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9u
V2l0aEZyYW1lTmEKICNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XZWJWaWV3SW5pdGlhbGl6YXRp
b24ubW0+CiAjZW5kaWYKIAotICAgIHBhZ2VDb25maWd1cmF0aW9uLmVkaXRvckNsaWVudCA9IG5l
dyBXZWJFZGl0b3JDbGllbnQoc2VsZik7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uZWRpdG9yQ2xp
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJFZGl0b3JDbGllbnQ+KHNlbGYpOwogICAgIHBhZ2VD
b25maWd1cmF0aW9uLmFsdGVybmF0aXZlVGV4dENsaWVudCA9IG5ldyBXZWJBbHRlcm5hdGl2ZVRl
eHRDbGllbnQoc2VsZik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9yTWFp
bkZyYW1lID0gbmV3IFdlYkZyYW1lTG9hZGVyQ2xpZW50OwogICAgIHBhZ2VDb25maWd1cmF0aW9u
LnByb2dyZXNzVHJhY2tlckNsaWVudCA9IG5ldyBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQoc2Vs
Zik7CkBAIC0xMDEzLDcgKzEwMTMsNyBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldp
dGhGcmFtZU5hCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
ID0gJl9wcml2YXRlLT5ncm91cC0+c3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7CiAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRQcm92aWRlciA9ICZfcHJpdmF0ZS0+Z3JvdXAtPnVz
ZXJDb250ZW50Q29udHJvbGxlcigpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5r
U3RvcmUgPSAmX3ByaXZhdGUtPmdyb3VwLT52aXNpdGVkTGlua1N0b3JlKCk7Ci0gICAgX3ByaXZh
dGUtPnBhZ2UgPSBuZXcgUGFnZShwYWdlQ29uZmlndXJhdGlvbik7CisgICAgX3ByaXZhdGUtPnBh
Z2UgPSBuZXcgUGFnZShXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKICAgICBfcHJpdmF0
ZS0+cGFnZS0+c2V0R3JvdXBOYW1lKGdyb3VwTmFtZSk7CiAKQEAgLTEyNDgsNyArMTI0OCw3IEBA
IC0gKGlkKWluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE4KICNpbXBvcnQgPFdlYktp
dEFkZGl0aW9ucy9XZWJWaWV3SW5pdGlhbGl6YXRpb24ubW0+CiAjZW5kaWYKIAotICAgIHBhZ2VD
b25maWd1cmF0aW9uLmVkaXRvckNsaWVudCA9IG5ldyBXZWJFZGl0b3JDbGllbnQoc2VsZik7Cisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24uZWRpdG9yQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJF
ZGl0b3JDbGllbnQ+KHNlbGYpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmluc3BlY3RvckNsaWVu
dCA9IG5ldyBXZWJJbnNwZWN0b3JDbGllbnQoc2VsZik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24u
bG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lID0gbmV3IFdlYkZyYW1lTG9hZGVyQ2xpZW50OwogICAg
IHBhZ2VDb25maWd1cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCA9IG5ldyBXZWJQcm9ncmVz
c1RyYWNrZXJDbGllbnQoc2VsZik7CkBAIC0xMjU4LDcgKzEyNTgsNyBAQCAtIChpZClpbml0U2lt
cGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOihOCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24udXNlckNv
bnRlbnRQcm92aWRlciA9ICZfcHJpdmF0ZS0+Z3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigp
OwogICAgIHBhZ2VDb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rU3RvcmUgPSAmX3ByaXZhdGUtPmdy
b3VwLT52aXNpdGVkTGlua1N0b3JlKCk7CiAKLSAgICBfcHJpdmF0ZS0+cGFnZSA9IG5ldyBQYWdl
KHBhZ2VDb25maWd1cmF0aW9uKTsKKyAgICBfcHJpdmF0ZS0+cGFnZSA9IG5ldyBQYWdlKFdURk1v
dmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKICAgICAKICAgICBbc2VsZiBzZXRTbWFydEluc2VydERl
bGV0ZUVuYWJsZWQ6WUVTXTsKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280967</attachid>
            <date>2016-06-09 16:32:20 -0700</date>
            <delta_ts>2016-06-09 16:45:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158588-20160609163347.patch</filename>
            <type>text/plain</type>
            <size>18901</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAJ
KHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JP
dmVybGF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODY2LDcgKzg2Niw3IEBAIFBhZ2UqIEluc3Bl
Y3Rvck92ZXJsYXk6Om92ZXJsYXlQYWdlKCkKIAogICAgIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VD
b25maWd1cmF0aW9uOwogICAgIGZpbGxXaXRoRW1wdHlDbGllbnRzKHBhZ2VDb25maWd1cmF0aW9u
KTsKLSAgICBtX292ZXJsYXlQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihwYWdlQ29uZmln
dXJhdGlvbik7CisgICAgbV9vdmVybGF5UGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4oV1RG
TW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCiAgICAgU2V0dGluZ3MmIHNldHRpbmdzID0gbV9w
YWdlLnNldHRpbmdzKCk7CiAgICAgU2V0dGluZ3MmIG92ZXJsYXlTZXR0aW5ncyA9IG1fb3Zlcmxh
eVBhZ2UtPnNldHRpbmdzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw5ICsxMjksOCBAQCB2b2lkIGZpbGxXaXRo
RW1wdHlDbGllbnRzKFBhZ2VDb25maWd1cmF0CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uZHJhZ0Ns
aWVudCA9ICZkdW1teURyYWdDbGllbnQuZ2V0KCk7CiAjZW5kaWYKIAotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxFbXB0eUVkaXRvckNsaWVudD4gZHVtbXlFZGl0b3JDbGllbnQ7Ci0gICAgcGFn
ZUNvbmZpZ3VyYXRpb24uZWRpdG9yQ2xpZW50ID0gJmR1bW15RWRpdG9yQ2xpZW50LmdldCgpOwot
CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uZWRpdG9yQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxF
bXB0eUVkaXRvckNsaWVudD4oKTsKKyAgICAKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RW1w
dHlJbnNwZWN0b3JDbGllbnQ+IGR1bW15SW5zcGVjdG9yQ2xpZW50OwogICAgIHBhZ2VDb25maWd1
cmF0aW9uLmluc3BlY3RvckNsaWVudCA9ICZkdW1teUluc3BlY3RvckNsaWVudC5nZXQoKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gMjAxODczKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiRm9jdXNEaXJlY3Rpb24uaCIKICNpbmNsdWRlICJG
cmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgotI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJDbGllbnQuaCIKQEAgLTcx
LDYgKzcwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0
M0Q7CitjbGFzcyBQYWdlOwogCiBjbGFzcyBFbXB0eUNocm9tZUNsaWVudCA6IHB1YmxpYyBDaHJv
bWVDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDM2LDcgKzQzNiw2
IEBAIGNsYXNzIEVtcHR5RWRpdG9yQ2xpZW50IDogcHVibGljIEVkaXRvckMKIHB1YmxpYzoKICAg
ICBFbXB0eUVkaXRvckNsaWVudCgpIHsgfQogICAgIHZpcnR1YWwgfkVtcHR5RWRpdG9yQ2xpZW50
KCkgeyB9Ci0gICAgdm9pZCBwYWdlRGVzdHJveWVkKCkgb3ZlcnJpZGUgeyB9CiAKICAgICBib29s
IHNob3VsZERlbGV0ZVJhbmdlKFJhbmdlKikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDIwMTg3MykK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTcwLDcgKzcwLDYgQEAgc3RydWN0IEdyYW1tYXJEZXRhaWw7CiBjbGFzcyBFZGl0b3JDbGllbnQg
ewogcHVibGljOgogICAgIHZpcnR1YWwgfkVkaXRvckNsaWVudCgpIHsgIH0KLSAgICB2aXJ0dWFs
IHZvaWQgcGFnZURlc3Ryb3llZCgpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGREZWxl
dGVSYW5nZShSYW5nZSopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc21hcnRJbnNlcnREZWxldGVF
bmFibGVkKCkgPSAwOyAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMjAxODczKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDcg
KzE1Niw3IEBAIHN0YXRpYyB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9vbCBpc08KIAogc3Rh
dGljIGNvbnN0IFZpZXdTdGF0ZTo6RmxhZ3MgUGFnZUluaXRpYWxWaWV3U3RhdGUgPSBWaWV3U3Rh
dGU6OklzVmlzaWJsZSB8IFZpZXdTdGF0ZTo6SXNJbldpbmRvdzsKIAotUGFnZTo6UGFnZShQYWdl
Q29uZmlndXJhdGlvbiYgcGFnZUNvbmZpZ3VyYXRpb24pCitQYWdlOjpQYWdlKFBhZ2VDb25maWd1
cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX2Nocm9tZShzdGQ6Om1ha2VfdW5p
cXVlPENocm9tZT4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQpKQogICAg
ICwgbV9kcmFnQ2FyZXRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0NhcmV0Q29udHJv
bGxlcj4oKSkKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtMTc5LDcgKzE3OSw3IEBAIFBh
Z2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mIHBhZ2VDb25maWcKICAgICAsIG1fYmFja0Zvcndh
cmRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QmFja0ZvcndhcmRDb250cm9sbGVyPigqdGhp
cywgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5iYWNrRm9yd2FyZENsaWVudCkpKQogICAgICwg
bV9tYWluRnJhbWUoTWFpbkZyYW1lOjpjcmVhdGUoKnRoaXMsIHBhZ2VDb25maWd1cmF0aW9uKSkK
ICAgICAsIG1fdGhlbWUoUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZSh0aGlzKSkKLSAgICAsIG1f
ZWRpdG9yQ2xpZW50KCpwYWdlQ29uZmlndXJhdGlvbi5lZGl0b3JDbGllbnQpCisgICAgLCBtX2Vk
aXRvckNsaWVudChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmVkaXRvckNsaWVudCkpCiAgICAg
LCBtX3BsdWdJbkNsaWVudChwYWdlQ29uZmlndXJhdGlvbi5wbHVnSW5DbGllbnQpCiAgICAgLCBt
X3ZhbGlkYXRpb25NZXNzYWdlQ2xpZW50KHBhZ2VDb25maWd1cmF0aW9uLnZhbGlkYXRpb25NZXNz
YWdlQ2xpZW50KQogICAgICwgbV9kaWFnbm9zdGljTG9nZ2luZ0NsaWVudChXVEZNb3ZlKHBhZ2VD
b25maWd1cmF0aW9uLmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KSkKQEAgLTIzOCw2ICsyMzgsNyBA
QCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiBwYWdlQ29uZmlnCiAgICAgLCBtX3Nlc3Np
b25JRChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkKICAgICAsIG1faXNDbG9zaW5nKGZh
bHNlKQogeworICAgIEFTU0VSVChtX2VkaXRvckNsaWVudCk7CiAgICAgdXBkYXRlVGltZXJUaHJv
dHRsaW5nU3RhdGUoKTsKIAogICAgIG1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLT5hZGRQYWdl
KCp0aGlzKTsKQEAgLTI4Myw3ICsyODQsNiBAQCBQYWdlOjp+UGFnZSgpCiAgICAgICAgIGZyYW1l
LT5kZXRhY2hGcm9tUGFnZSgpOwogICAgIH0KIAotICAgIG1fZWRpdG9yQ2xpZW50LnBhZ2VEZXN0
cm95ZWQoKTsKICAgICBpZiAobV9wbHVnSW5DbGllbnQpCiAgICAgICAgIG1fcGx1Z0luQ2xpZW50
LT5wYWdlRGVzdHJveWVkKCk7CiAgICAgaWYgKG1fYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KQpAQCAt
NDEyLDggKzQxMiw2IEBAIHZvaWQgUGFnZTo6c2V0Vmlld01vZGUoVmlld01vZGUgdmlld01vZGUK
IAogICAgIG1fdmlld01vZGUgPSB2aWV3TW9kZTsKIAotICAgIGlmICghbV9tYWluRnJhbWUpCi0g
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX21haW5GcmFtZS0+dmlldygpKQogICAgICAgICBt
X21haW5GcmFtZS0+dmlldygpLT5mb3JjZUxheW91dCgpOwpAQCAtNzUwLDcgKzc0OCw3IEBAIHZv
aWQgUGFnZTo6c2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykKIAogdm9pZCBQYWdlOjpjbGVh
clVuZG9SZWRvT3BlcmF0aW9ucygpCiB7Ci0gICAgbV9lZGl0b3JDbGllbnQuY2xlYXJVbmRvUmVk
b09wZXJhdGlvbnMoKTsKKyAgICBtX2VkaXRvckNsaWVudC0+Y2xlYXJVbmRvUmVkb09wZXJhdGlv
bnMoKTsKIH0KIAogYm9vbCBQYWdlOjppbkxvd1F1YWxpdHlJbWFnZUludGVycG9sYXRpb25Nb2Rl
KCkgY29uc3QKQEAgLTExMjIsNyArMTEyMCw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0
eWxlU2hlZXQoKSBjb24KIAogdm9pZCBQYWdlOjppbnZhbGlkYXRlU3R5bGVzRm9yQWxsTGlua3Mo
KQogewotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAgICBmb3IgKEZyYW1lKiBm
cmFtZSA9ICZtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50
cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpKQogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT52aXNpdGVkTGlua1N0
YXRlKCkuaW52YWxpZGF0ZVN0eWxlRm9yQWxsTGlua3MoKTsKQEAgLTExMzEsNyArMTEyOSw3IEBA
IHZvaWQgUGFnZTo6aW52YWxpZGF0ZVN0eWxlc0ZvckFsbExpbmtzKCkKIAogdm9pZCBQYWdlOjpp
bnZhbGlkYXRlU3R5bGVzRm9yTGluayhMaW5rSGFzaCBsaW5rSGFzaCkKIHsKLSAgICBmb3IgKEZy
YW1lKiBmcmFtZSA9IG1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJl
ZSgpLnRyYXZlcnNlTmV4dCgpKSB7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9tYWluRnJh
bWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsK
ICAgICAgICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+dmlzaXRlZExpbmtTdGF0ZSgpLmludmFsaWRhdGVT
dHlsZUZvckxpbmsobGlua0hhc2gpOwpAQCAtMTE0MCw3ICsxMTM4LDcgQEAgdm9pZCBQYWdlOjpp
bnZhbGlkYXRlU3R5bGVzRm9yTGluayhMaW5rSAogCiB2b2lkIFBhZ2U6OmludmFsaWRhdGVJbmpl
Y3RlZFN0eWxlU2hlZXRDYWNoZUluQWxsRnJhbWVzKCkKIHsKLSAgICBmb3IgKEZyYW1lKiBmcmFt
ZSA9IG1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZl
cnNlTmV4dCgpKSB7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9tYWluRnJhbWUuZ2V0KCk7
IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgICAgIGlmICghZG9j
dW1lbnQpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTExNTYsNyArMTE1NCw3IEBAIHZvaWQg
UGFnZTo6c2V0RGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGUKIAogICAgIG1fZGVidWdnZXIgPSBk
ZWJ1Z2dlcjsKIAotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9tYWluRnJhbWUuZ2V0KCk7IGZy
YW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCisgICAgZm9yIChGcmFt
ZSogZnJhbWUgPSAmbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVl
KCkudHJhdmVyc2VOZXh0KCkpCiAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5hdHRhY2hEZWJ1Z2dl
cihtX2RlYnVnZ2VyKTsKIH0KIApAQCAtMTQ4Nyw3ICsxNDg1LDcgQEAgdm9pZCBQYWdlOjpzZXRJ
c1Zpc2libGVJbnRlcm5hbChib29sIGlzVgogICAgIH0KIAogICAgIFZlY3RvcjxSZWY8RG9jdW1l
bnQ+PiBkb2N1bWVudHM7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX21haW5GcmFtZS5nZXQo
KTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKKyAgICBmb3Ig
KEZyYW1lKiBmcmFtZSA9ICZtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKICAgICAgICAgZG9jdW1lbnRzLmFwcGVuZCgqZnJhbWUt
PmRvY3VtZW50KCkpOwogCiAgICAgZm9yIChhdXRvJiBkb2N1bWVudCA6IGRvY3VtZW50cykKQEAg
LTE5ODUsNyArMTk4Myw3IEBAIHZvaWQgUGFnZTo6c2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGlu
ZVAKICAgICBtX2FsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayA9IGZsYWc7CiAKICAg
ICBWZWN0b3I8UmVmPERvY3VtZW50Pj4gZG9jdW1lbnRzOwotICAgIGZvciAoRnJhbWUqIGZyYW1l
ID0gbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVy
c2VOZXh0KCkpCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9tYWluRnJhbWUuZ2V0KCk7IGZy
YW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCiAgICAgICAgIGRvY3Vt
ZW50cy5hcHBlbmQoKmZyYW1lLT5kb2N1bWVudCgpKTsKIAogICAgIGZvciAoYXV0byYgZG9jdW1l
bnQgOiBkb2N1bWVudHMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMjAxODczKQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4LDggKzE4LDcg
QEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKLSNpZm5kZWYgUGFnZV9o
Ci0jZGVmaW5lIFBhZ2VfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGaW5kT3B0aW9ucy5o
IgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKQEAgLTE0MSw3ICsxNDAsNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgdXBkYXRlU3R5bGVGb3JBbGxQYWdl
c0FmdGVyR2xvYmFsQ2hhbmdlSW5FbnZpcm9ubWVudCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyB2b2lkIGNsZWFyUHJldmlvdXNJdGVtRnJvbUFsbFBhZ2VzKEhpc3RvcnlJdGVtKik7CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBQYWdlKFBhZ2VDb25maWd1cmF0aW9uJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgUGFnZShQYWdlQ29uZmlndXJhdGlvbiYmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB+UGFnZSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdWludDY0X3Qg
cmVuZGVyVHJlZVNpemUoKSBjb25zdDsKQEAgLTE1OCwxMSArMTU3LDExIEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENhblN0YXJ0TWVkaWEoYm9vbCk7CiAgICAgYm9vbCBj
YW5TdGFydE1lZGlhKCkgY29uc3QgeyByZXR1cm4gbV9jYW5TdGFydE1lZGlhOyB9CiAKLSAgICBF
ZGl0b3JDbGllbnQmIGVkaXRvckNsaWVudCgpIHsgcmV0dXJuIG1fZWRpdG9yQ2xpZW50OyB9Cisg
ICAgRWRpdG9yQ2xpZW50JiBlZGl0b3JDbGllbnQoKSBjb25zdCB7IHJldHVybiAqbV9lZGl0b3JD
bGllbnQ7IH0KICAgICBQbHVnSW5DbGllbnQqIHBsdWdJbkNsaWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGx1Z0luQ2xpZW50OyB9CiAKLSAgICBNYWluRnJhbWUmIG1haW5GcmFtZSgpIHsgQVNTRVJU
KG1fbWFpbkZyYW1lKTsgcmV0dXJuICptX21haW5GcmFtZTsgfQotICAgIGNvbnN0IE1haW5GcmFt
ZSYgbWFpbkZyYW1lKCkgY29uc3QgeyBBU1NFUlQobV9tYWluRnJhbWUpOyByZXR1cm4gKm1fbWFp
bkZyYW1lOyB9CisgICAgTWFpbkZyYW1lJiBtYWluRnJhbWUoKSB7IHJldHVybiBtX21haW5GcmFt
ZS5nZXQoKTsgfQorICAgIGNvbnN0IE1haW5GcmFtZSYgbWFpbkZyYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9tYWluRnJhbWUuZ2V0KCk7IH0KIAogICAgIGJvb2wgaW5QYWdlQ2FjaGUoKSBjb25zdDsK
IApAQCAtNTc4LDEzICs1NzcsMTMgQEAgcHJpdmF0ZToKICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9w
dHI8UHJvZ3Jlc3NUcmFja2VyPiBtX3Byb2dyZXNzOwogCiAgICAgY29uc3Qgc3RkOjp1bmlxdWVf
cHRyPEJhY2tGb3J3YXJkQ29udHJvbGxlcj4gbV9iYWNrRm9yd2FyZENvbnRyb2xsZXI7Ci0gICAg
Y29uc3QgUmVmUHRyPE1haW5GcmFtZT4gbV9tYWluRnJhbWU7CisgICAgUmVmPE1haW5GcmFtZT4g
bV9tYWluRnJhbWU7CiAKICAgICBtdXRhYmxlIFJlZlB0cjxQbHVnaW5EYXRhPiBtX3BsdWdpbkRh
dGE7CiAKICAgICBSZWZQdHI8UmVuZGVyVGhlbWU+IG1fdGhlbWU7CiAKLSAgICBFZGl0b3JDbGll
bnQmIG1fZWRpdG9yQ2xpZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxFZGl0b3JDbGllbnQ+IG1f
ZWRpdG9yQ2xpZW50OwogICAgIFBsdWdJbkNsaWVudCogbV9wbHVnSW5DbGllbnQ7CiAgICAgVmFs
aWRhdGlvbk1lc3NhZ2VDbGllbnQqIG1fdmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPERpYWdub3N0aWNMb2dnaW5nQ2xpZW50PiBtX2RpYWdub3N0aWNMb2dnaW5n
Q2xpZW50OwpAQCAtNzI0LDUgKzcyMywzIEBAIGlubGluZSBQYWdlR3JvdXAmIFBhZ2U6Omdyb3Vw
KCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotICAgIAotI2VuZGlmIC8vIFBhZ2VfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9u
IDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQmFja0ZvcndhcmRDbGll
bnQuaCIKICNpbmNsdWRlICJEYXRhYmFzZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiRGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQuaCIKKyNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKICNpbmNsdWRlICJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlua1N0b3JlLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3
LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIENvbnRleHRNZW51
Q2xpZW50KiBjb250ZXh0TWVudUNsaWVudCB7IG51bGxwdHIgfTsKICNlbmRpZgotICAgIEVkaXRv
ckNsaWVudCogZWRpdG9yQ2xpZW50IHsgbnVsbHB0ciB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxF
ZGl0b3JDbGllbnQ+IGVkaXRvckNsaWVudDsKICAgICBEcmFnQ2xpZW50KiBkcmFnQ2xpZW50IHsg
bnVsbHB0ciB9OwogICAgIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50IHsgbnVsbHB0
ciB9OwogICAgIFBsdWdJbkNsaWVudCogcGx1Z0luQ2xpZW50IHsgbnVsbHB0ciB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3
IEBAIHZvaWQgUGFnZTo6YWRkU2NoZWR1bGVQYWlyKFJlZjxTY2hlZHVsZVAKICAgICBtX3NjaGVk
dWxlZFJ1bkxvb3BQYWlycy0+YWRkKHBhaXIucHRyKCkpOwogCiAjaWYgIVVTRShDRk5FVFdPUksp
Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgIGZvciAoRnJhbWUqIGZyYW1l
ID0gJm1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZl
cnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIg
PSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgICAgIGRvY3VtZW50
TG9hZGVyLT5zY2hlZHVsZShwYWlyKTsKICAgICAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1
bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkp
CkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgUGFnZTo6cmVtb3ZlU2NoZWR1bGVQYWlyKFJlZjxTY2hl
ZHUKICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycy0+cmVtb3ZlKHBhaXIucHRyKCkpOwogCiAj
aWYgIVVTRShDRk5FVFdPUkspCi0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX21haW5GcmFtZS5n
ZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gJm1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChEb2N1bWVudExvYWRl
ciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKICAg
ICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT51bnNjaGVkdWxlKHBhaXIpOwogICAgICAgICBpZiAo
RG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLnByb3Zpc2lv
bmFsRG9jdW1lbnRMb2FkZXIoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkwLDcgKzM5MCw3IEBAIGJvb2wg
U1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVIKICAgICAgICAgLy8gVGhpcyB3aWxs
IGJlY29tZSBhbiBpc3N1ZSB3aGVuIFNWR0ltYWdlIHdpbGwgYmUgYWJsZSB0byBsb2FkIG90aGVy
CiAgICAgICAgIC8vIFNWR0ltYWdlIG9iamVjdHMsIGJ1dCB3ZSdyZSBzYWZlIG5vdywgYmVjYXVz
ZSBTVkdJbWFnZSBjYW4gb25seSBiZQogICAgICAgICAvLyBsb2FkZWQgYnkgYSB0b3AtbGV2ZWwg
ZG9jdW1lbnQuCi0gICAgICAgIG1fcGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4ocGFnZUNv
bmZpZ3VyYXRpb24pOworICAgICAgICBtX3BhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KFdU
Rk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKICAgICAgICAgbV9wYWdlLT5zZXR0aW5ncygpLnNl
dE1lZGlhRW5hYmxlZChmYWxzZSk7CiAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRTY3Jp
cHRFbmFibGVkKGZhbHNlKTsKICAgICAgICAgbV9wYWdlLT5zZXR0aW5ncygpLnNldFBsdWdpbnNF
bmFibGVkKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHJldmlzaW9uIDIw
MTg3MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsMTEgKzcwLDYgQEAgc3RhdGljIHVp
bnQ2NF90IGdlbmVyYXRlVGV4dENoZWNraW5nUmVxdQogICAgIHJldHVybiB1bmlxdWVUZXh0Q2hl
Y2tpbmdSZXF1ZXN0SUQrKzsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnBhZ2VEZXN0cm95
ZWQoKQotewotICAgIGRlbGV0ZSB0aGlzOwotfQotCiBib29sIFdlYkVkaXRvckNsaWVudDo6c2hv
dWxkRGVsZXRlUmFuZ2UoUmFuZ2UqIHJhbmdlKQogewogICAgIGJvb2wgcmVzdWx0ID0gbV9wYWdl
LT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLnNob3VsZERlbGV0ZVJhbmdlKG1fcGFnZSwg
cmFuZ2UpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCShyZXZpc2lvbiAyMDE4NzMpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSw2IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgdm9pZCBwYWdlRGVzdHJveWVkKCkgb3ZlcnJpZGU7Ci0KICAgICBib29sIHNob3Vs
ZERlbGV0ZVJhbmdlKFdlYkNvcmU6OlJhbmdlKikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzbWFydElu
c2VydERlbGV0ZUVuYWJsZWQoKSBvdmVycmlkZTsKICAgICBib29sIGlzU2VsZWN0VHJhaWxpbmdX
aGl0ZXNwYWNlRW5hYmxlZCgpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zODksNyArMzg5LDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0
IAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNvbnRl
eHRNZW51Q2xpZW50ID0gbmV3IFdlYkNvbnRleHRNZW51Q2xpZW50KHRoaXMpOwogI2VuZGlmCi0g
ICAgcGFnZUNvbmZpZ3VyYXRpb24uZWRpdG9yQ2xpZW50ID0gbmV3IFdlYkVkaXRvckNsaWVudCh0
aGlzKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5lZGl0b3JDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkVkaXRvckNsaWVudD4odGhpcyk7CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAg
ICBwYWdlQ29uZmlndXJhdGlvbi5kcmFnQ2xpZW50ID0gbmV3IFdlYkRyYWdDbGllbnQodGhpcyk7
CiAjZW5kaWYKQEAgLTQxNCw3ICs0MTQsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBh
Z2VJRCwgY29uc3QgCiAjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1dlYlBhZ2VJbml0aWFsaXph
dGlvbi5oPgogI2VuZGlmCiAKLSAgICBtX3BhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KHBh
Z2VDb25maWd1cmF0aW9uKTsKKyAgICBtX3BhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KFdU
Rk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKICAgICB1cGRhdGVQcmVmZXJlbmNlcyhwYXJhbWV0
ZXJzLnN0b3JlKTsKIAogICAgIG1fZHJhd2luZ0FyZWEgPSBEcmF3aW5nQXJlYTo6Y3JlYXRlKCp0
aGlzLCBwYXJhbWV0ZXJzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTg4OSkK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE4IEBACisyMDE2LTA2LTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgQ2xlYW4gdXAgRWRpdG9yQ2xpZW50IGxpZmV0aW1lCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg1ODgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6V2ViRWRpdG9yQ2xpZW50KToKKyAg
ICAgICAgKFdlYkVkaXRvckNsaWVudDo6cGFnZURlc3Ryb3llZCk6IERlbGV0ZWQuCisgICAgICAg
ICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFs
aXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGlu
aXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6ZnJhbWU6cHJlZmVyZW5jZXM6Z3JvdXBOYW1l
Ol0pOgorCiAyMDE2LTA2LTA5ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAg
ICAgICBEZWZpbmUgcHJpbnRpbmd7TWluaW11bSxNYXhpbXVtfVNocmlua0ZhY3RvciBpbiBvbmx5
IG9uZSBwbGFjZQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MSw4ICs1MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENoZWNrU3VjY2VlZChpbnQgc2VxdWVu
Y2UsIE5TQXJyYXkgKnJlc3VsdHMpOwogCiBwcml2YXRlOgotICAgIHZvaWQgcGFnZURlc3Ryb3ll
ZCgpIG92ZXJyaWRlOwotCiAgICAgYm9vbCBpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSBvdmVy
cmlkZTsKICAgICB2b2lkIHRvZ2dsZUdyYW1tYXJDaGVja2luZygpIG92ZXJyaWRlOwogICAgIGJv
b2wgaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSBvdmVycmlkZTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
bW0JKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTgzLDExICsxODMsNiBAQCAt
ICh2b2lkKXJlZG9FZGl0aW5nOihpZClhcmcKIAogQGVuZAogCi12b2lkIFdlYkVkaXRvckNsaWVu
dDo6cGFnZURlc3Ryb3llZCgpCi17Ci0gICAgZGVsZXRlIHRoaXM7Ci19Ci0KIFdlYkVkaXRvckNs
aWVudDo6V2ViRWRpdG9yQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXco
d2ViVmlldykKICAgICAsIG1fdW5kb1RhcmdldChhZG9wdE5TKFtbV2ViRWRpdG9yVW5kb1Rhcmdl
dCBhbGxvY10gaW5pdF0pKQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQko
cmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDA0LDcgKzEwMDQsNyBAQCAtICh2b2lkKV9jb21tb25Jbml0
aWFsaXphdGlvbldpdGhGcmFtZU5hCiAjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV2ViVmlld0lu
aXRpYWxpemF0aW9uLm1tPgogI2VuZGlmCiAKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5lZGl0b3JD
bGllbnQgPSBuZXcgV2ViRWRpdG9yQ2xpZW50KHNlbGYpOworICAgIHBhZ2VDb25maWd1cmF0aW9u
LmVkaXRvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViRWRpdG9yQ2xpZW50PihzZWxmKTsK
ICAgICBwYWdlQ29uZmlndXJhdGlvbi5hbHRlcm5hdGl2ZVRleHRDbGllbnQgPSBuZXcgV2ViQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50KHNlbGYpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNs
aWVudEZvck1haW5GcmFtZSA9IG5ldyBXZWJGcmFtZUxvYWRlckNsaWVudDsKICAgICBwYWdlQ29u
ZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQgPSBuZXcgV2ViUHJvZ3Jlc3NUcmFja2Vy
Q2xpZW50KHNlbGYpOwpAQCAtMTAxMyw3ICsxMDEzLDcgQEAgLSAodm9pZClfY29tbW9uSW5pdGlh
bGl6YXRpb25XaXRoRnJhbWVOYQogICAgIHBhZ2VDb25maWd1cmF0aW9uLnN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlciA9ICZfcHJpdmF0ZS0+Z3JvdXAtPnN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigp
OwogICAgIHBhZ2VDb25maWd1cmF0aW9uLnVzZXJDb250ZW50UHJvdmlkZXIgPSAmX3ByaXZhdGUt
Pmdyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi52
aXNpdGVkTGlua1N0b3JlID0gJl9wcml2YXRlLT5ncm91cC0+dmlzaXRlZExpbmtTdG9yZSgpOwot
ICAgIF9wcml2YXRlLT5wYWdlID0gbmV3IFBhZ2UocGFnZUNvbmZpZ3VyYXRpb24pOworICAgIF9w
cml2YXRlLT5wYWdlID0gbmV3IFBhZ2UoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCiAg
ICAgX3ByaXZhdGUtPnBhZ2UtPnNldEdyb3VwTmFtZShncm91cE5hbWUpOwogCkBAIC0xMjQ4LDcg
KzEyNDgsNyBAQCAtIChpZClpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOihOCiAjaW1w
b3J0IDxXZWJLaXRBZGRpdGlvbnMvV2ViVmlld0luaXRpYWxpemF0aW9uLm1tPgogI2VuZGlmCiAK
LSAgICBwYWdlQ29uZmlndXJhdGlvbi5lZGl0b3JDbGllbnQgPSBuZXcgV2ViRWRpdG9yQ2xpZW50
KHNlbGYpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLmVkaXRvckNsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViRWRpdG9yQ2xpZW50PihzZWxmKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5pbnNw
ZWN0b3JDbGllbnQgPSBuZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHNlbGYpOwogICAgIHBhZ2VDb25m
aWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSA9IG5ldyBXZWJGcmFtZUxvYWRlckNs
aWVudDsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQgPSBuZXcg
V2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50KHNlbGYpOwpAQCAtMTI1OCw3ICsxMjU4LDcgQEAgLSAo
aWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTgogICAgIHBhZ2VDb25maWd1cmF0
aW9uLnVzZXJDb250ZW50UHJvdmlkZXIgPSAmX3ByaXZhdGUtPmdyb3VwLT51c2VyQ29udGVudENv
bnRyb2xsZXIoKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi52aXNpdGVkTGlua1N0b3JlID0gJl9w
cml2YXRlLT5ncm91cC0+dmlzaXRlZExpbmtTdG9yZSgpOwogCi0gICAgX3ByaXZhdGUtPnBhZ2Ug
PSBuZXcgUGFnZShwYWdlQ29uZmlndXJhdGlvbik7CisgICAgX3ByaXZhdGUtPnBhZ2UgPSBuZXcg
UGFnZShXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAgICAgCiAgICAgW3NlbGYgc2V0U21h
cnRJbnNlcnREZWxldGVFbmFibGVkOllFU107CiAgICAgCg==
</data>
<flag name="review"
          id="304831"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>