<?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>112479</bug_id>
          
          <creation_ts>2013-03-15 16:55:54 -0700</creation_ts>
          <short_desc>Encapsulate PlatformMessagePortChannel a little better yet</short_desc>
          <delta_ts>2013-03-17 22:13:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>esprehn+autocc</cc>
    
    <cc>hclam</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>856407</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-15 16:55:54 -0700</bug_when>
    <thetext>Still exposed in MessagePortChannel public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856416</commentid>
    <comment_count>1</comment_count>
      <attachid>193400</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-15 17:04:01 -0700</bug_when>
    <thetext>Created attachment 193400
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856792</commentid>
    <comment_count>2</comment_count>
      <attachid>193400</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-17 19:23:44 -0700</bug_when>
    <thetext>Comment on attachment 193400
proposed patch

Clearing flags on attachment: 193400

Committed r146030: &lt;http://trac.webkit.org/changeset/146030&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856793</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-17 19:23:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856807</commentid>
    <comment_count>4</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2013-03-17 20:32:26 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856808</commentid>
    <comment_count>5</comment_count>
      <attachid>193480</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2013-03-17 20:32:28 -0700</bug_when>
    <thetext>Created attachment 193480
Patch (wrong bug)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856810</commentid>
    <comment_count>6</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2013-03-17 20:33:11 -0700</bug_when>
    <thetext>webkit-patch failed me again. :(</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193400</attachid>
            <date>2013-03-15 17:04:01 -0700</date>
            <delta_ts>2013-03-17 20:32:24 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>RemoveCreate.txt</filename>
            <type>text/plain</type>
            <size>4413</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTk2NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAzLTE1ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEVuY2Fwc3VsYXRlIFBsYXRm
b3JtTWVzc2FnZVBvcnRDaGFubmVsIGEgbGl0dGxlIGJldHRlciB5ZXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjQ3OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0Q2hhbm5l
bC5oOiBXZSBubyBsb25nZXIgZXhwb3NlIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsIGluCisg
ICAgICAgIHB1YmxpYyBmdW5jdGlvbnMgaW4gY3Jvc3MtcGxhdGZvcm0gY29kZS4KKworICAgICAg
ICAqIGRvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlQ2hhbm5lbCk6IFR3ZWFrZWQgdGhl
IGZhY3RvcnkgbWV0aG9kIHRvIGF2b2lkCisgICAgICAgIHVzaW5nIHRoZSBvbGQgY3JlYXRlKCkg
ZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6On5NZXNzYWdl
UG9ydENoYW5uZWwpOiBSZW1vdmVkIGFuIHVuaGVscGZ1bCBjb21tZW50LgorCiAyMDEzLTAzLTE1
ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZHVjZSBh
bW91bnQgb2YgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSBpbiBNZXNzYWdlUG9ydENoYW5uZWwKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydENoYW5uZWwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnRDaGFubmVsLmgJKHJldmlzaW9uIDE0NTk2
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydENoYW5uZWwuaAkod29ya2luZyBj
b3B5KQpAQCAtNTgsOSArNTgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgog
ICAgICAgICBzdGF0aWMgdm9pZCBjcmVhdGVDaGFubmVsKFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+
LCBQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0Pik7CiAKLSAgICAgICAgLy8gQ3JlYXRlcyBhIG5ldyB3
cmFwcGVyIGZvciB0aGUgcGFzc2VkIGNoYW5uZWwuCi0gICAgICAgIHN0YXRpYyBQYXNzT3duUHRy
PE1lc3NhZ2VQb3J0Q2hhbm5lbD4gY3JlYXRlKFBhc3NSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9y
dENoYW5uZWw+KTsKLQogICAgICAgICAvLyBFbnRhbmdsZXMgdGhlIGNoYW5uZWwgd2l0aCBhIHBv
cnQgKGNhbGxlZCB3aGVuIGEgcG9ydCBoYXMgYmVlbiBjbG9uZWQsIGFmdGVyIHRoZSBjbG9uZSBo
YXMgYmVlbiBtYXJzaGFsZWQgdG8gaXRzIG5ldyBvd25pbmcgdGhyZWFkIGFuZCBpcyByZWFkeSB0
byByZWNlaXZlIG1lc3NhZ2VzKS4KICAgICAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgZW50
YW5nbGVtZW50IGZhaWxlZCBiZWNhdXNlIHRoZSBwb3J0IHdhcyBjbG9zZWQuCiAgICAgICAgIGJv
b2wgZW50YW5nbGVJZk9wZW4oTWVzc2FnZVBvcnQqKTsKQEAgLTEwMyw2ICsxMDAsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH5NZXNzYWdlUG9ydENoYW5uZWwoKTsKIAogI2lmIFBM
QVRGT1JNKENIUk9NSVVNKQorICAgICAgICAvLyBDcmVhdGVzIGEgbmV3IHdyYXBwZXIgZm9yIHRo
ZSBwYXNzZWQgY2hhbm5lbC4KKyAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRD
aGFubmVsPiBjcmVhdGUoUGFzc1JlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4pOwor
CiAgICAgICAgIC8vIEZJWE1FOiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCBpcyBhbiBpbXBs
ZW1lbnRhdGlvbiBkZXRhaWwsIGFuZCBzaG91bGQgbm90IGJlIGV4cG9zZWQgdmlhIGEgcHVibGlj
IGZ1bmN0aW9uLgogICAgICAgICBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCogY2hhbm5lbCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2hhbm5lbC5nZXQoKTsgfQogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENo
YW5uZWwuY3BwCShyZXZpc2lvbiAxNDU5NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vZGVmYXVs
dC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDIy
ICs0MiwxNCBAQCB2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlQ2hhbm5lbChQCiAgICAg
UmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpNZXNzYWdlUG9ydFF1ZXVlPiBxdWV1
ZTEgPSBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6TWVzc2FnZVBvcnRRdWV1ZTo6Y3JlYXRl
KCk7CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpNZXNzYWdlUG9ydFF1
ZXVlPiBxdWV1ZTIgPSBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6TWVzc2FnZVBvcnRRdWV1
ZTo6Y3JlYXRlKCk7CiAKLSAgICAvLyBDcmVhdGUgcHJveGllcyBmb3IgZWFjaCBlbmRwb2ludC4K
LSAgICBSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+IGNoYW5uZWwxID0gUGxhdGZv
cm1NZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZShxdWV1ZTEsIHF1ZXVlMik7Ci0gICAgUmVmUHRy
PFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiBjaGFubmVsMiA9IFBsYXRmb3JtTWVzc2FnZVBv
cnRDaGFubmVsOjpjcmVhdGUocXVldWUyLCBxdWV1ZTEpOworICAgIE93blB0cjxNZXNzYWdlUG9y
dENoYW5uZWw+IGNoYW5uZWwxID0gYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0Q2hhbm5lbChQbGF0
Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKHF1ZXVlMSwgcXVldWUyKSkpOworICAgIE93
blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IGNoYW5uZWwyID0gYWRvcHRQdHIobmV3IE1lc3NhZ2VQ
b3J0Q2hhbm5lbChQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKHF1ZXVlMiwgcXVl
dWUxKSkpOwogCi0gICAgLy8gRW50YW5nbGUgdGhlIHR3byBlbmRwb2ludHMuCi0gICAgY2hhbm5l
bDEtPm1fZW50YW5nbGVkQ2hhbm5lbCA9IGNoYW5uZWwyOwotICAgIGNoYW5uZWwyLT5tX2VudGFu
Z2xlZENoYW5uZWwgPSBjaGFubmVsMTsKKyAgICBjaGFubmVsMS0+bV9jaGFubmVsLT5tX2VudGFu
Z2xlZENoYW5uZWwgPSBjaGFubmVsMi0+bV9jaGFubmVsOworICAgIGNoYW5uZWwyLT5tX2NoYW5u
ZWwtPm1fZW50YW5nbGVkQ2hhbm5lbCA9IGNoYW5uZWwxLT5tX2NoYW5uZWw7CiAKLSAgICAvLyBO
b3cgZW50YW5nbGUgdGhlIHByb3hpZXMgd2l0aCB0aGUgYXBwcm9wcmlhdGUgbG9jYWwgcG9ydHMu
Ci0gICAgcG9ydDEtPmVudGFuZ2xlKE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKGNoYW5uZWwy
KSk7Ci0gICAgcG9ydDItPmVudGFuZ2xlKE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKGNoYW5u
ZWwxKSk7Ci19Ci0KLVBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBNZXNzYWdlUG9ydENo
YW5uZWw6OmNyZWF0ZShQYXNzUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiBjaGFu
bmVsKQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRDaGFubmVsKGNoYW5u
ZWwpKTsKKyAgICBwb3J0MS0+ZW50YW5nbGUoY2hhbm5lbDIucmVsZWFzZSgpKTsKKyAgICBwb3J0
Mi0+ZW50YW5nbGUoY2hhbm5lbDEucmVsZWFzZSgpKTsKIH0KIAogTWVzc2FnZVBvcnRDaGFubmVs
OjpNZXNzYWdlUG9ydENoYW5uZWwoUGFzc1JlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5l
bD4gY2hhbm5lbCkKQEAgLTY3LDcgKzU5LDYgQEAgTWVzc2FnZVBvcnRDaGFubmVsOjpNZXNzYWdl
UG9ydENoYW5uZWwoUAogCiBNZXNzYWdlUG9ydENoYW5uZWw6On5NZXNzYWdlUG9ydENoYW5uZWwo
KQogewotICAgIC8vIE1ha2Ugc3VyZSB3ZSBjbG9zZSBvdXIgcGxhdGZvcm0gY2hhbm5lbCB3aGVu
IHRoZSBiYXNlIGlzIGZyZWVkLCB0byBrZWVwIHRoZSBjaGFubmVsIG9iamVjdHMgZnJvbSBsZWFr
aW5nLgogICAgIGNsb3NlKCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193480</attachid>
            <date>2013-03-17 20:32:28 -0700</date>
            <delta_ts>2013-03-17 22:13:51 -0700</delta_ts>
            <desc>Patch (wrong bug)</desc>
            <filename>bug-112479-20130317202820.patch</filename>
            <type>text/plain</type>
            <size>58308</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDdkODdlMDMwMTA5Njg0
ODU5MGY1ODllY2ZkMmMxZGEzZmM3ZDIxOS4uM2Y2MzUzOWIxYjZhNGRlNzk5MzdhZGJkYTQ3MWYx
YTIxZmRhMGQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtNTAzLDYgKzUwMywxMDcgQEAKICAgICAgICAgTW92
ZWQgY29kZSBmcm9tIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsIHRvIE1lc3NhZ2VQb3J0Q2hh
bm5lbC4gQWRkZWQgc29tZQogICAgICAgICBGSVhNRXMuCiAKKzIwMTMtMDMtMTIgIEFscGhhIExh
bSAgPGhjbGFtQGNocm9taXVtLm9yZz4KKworICAgICAgICBHSUZJbWFnZVJlYWRlciB0byBjb3Vu
dCBmcmFtZXMgYW5kIGRlY29kZSBpbiBvbmUgcGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExMTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgT0JKRUNUSVZFCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
aGFzIHRoZSBvYmplY3RpdmUgb2YgaW1wcm92aW5nIHBlcmZvcm1hbmNlIHJlYWRpbmcgR0lGCisg
ICAgICAgIGZpbGVzLiBUaGlzIGltcGxlbWVudGF0aW9uIGNhbiBwYXJzZSB0aGUgZW50aXJlIEdJ
RiBmaWxlIGluIG9uZSBwYXNzCisgICAgICAgIGFuZCBzYXZlcyBpbmZvcm1hdGlvbiBhYm91dCBl
YWNoIGZyYW1lLCBzdWNoIHRoYXQgZGVjb2RpbmcgaW4gYSBsYXRlcgorICAgICAgICBwYXNzIGRv
ZXMgbm90IG5lZWQgdG8gcGFyc2UgdGhlIGZpbGUgYWdhaW4uCisKKyAgICAgICAgVGhpcyBjaGFu
Z2UgZml4ZXMgdGhlIHBlcmZvcm1hbmNlIHByb2JsZW0gb2YgZGVjb2RpbmcgR0lGIGZpbGVzIHdo
ZW4KKyAgICAgICAgdGhleSBhcmUgcmVjZWl2ZWQgdmVyeSBzbG93bHkuIEV4aXN0aW5nIGltcGxl
bWVudGF0aW9uIGNyZWF0ZXMgYSBuZXcKKyAgICAgICAgR0lGSW1hZ2VSZWFkZXIgZm9yIGNvdW50
aW5nIGZyYW1lcyBmb3IgZXZlcnkgdGltZSBpdCBpcyBub3RpZmllZCB0aGF0CisgICAgICAgIG5l
dyBkYXRhIGhhcyBiZWVuIHJlY2VpdmVkLCB0aGlzIGhhcyBPKG5eMikgYmVoYXZpb3Igd2hlbiBk
YXRhIGlzCisgICAgICAgIHJlY2VpdmVkIHZlcnkgc2xvd2x5LgorCisgICAgICAgIEFMR09SSVRI
TQorCisgICAgICAgIFRoaXMgaW1wbGVtZW50YXRpb24gZGl2aWRlcyB0aGUgZGVjb2RpbmcgcHJv
Y2VzcyBpbnRvIHR3byBzZXBhcmF0ZQorICAgICAgICBzdGVwczogcGFyc2UgYW5kIExaVyBkZWNv
ZGluZy4KKworICAgICAgICBJbiB0aGUgcGFyc2Ugc3RlcCwgdGhlIHN0YXRlIG1hY2hpbmUgaXMg
c2ltaWxhciB0byB0aGUgZXhpc3RpbmcKKyAgICAgICAgaW1wbGVtZW50YXRpb24uIEhvd2V2ZXIg
dGhpcyBhbGdvcml0aG0gZG9lcyBub3QgcGVyZm9ybSBhbnkgZGVjb2RpbmcKKyAgICAgICAgd2hp
bGUgc2Nhbm5pbmcgdGhyb3VnaCB0aGUgZmlsZS4gSW50ZWFkIGl0IGNyZWF0ZXMgYSBuZXcgZGF0
YSBzdHJ1Y3R1cmUKKyAgICAgICAgZm9yIGNhY2hpbmcgYWxsIGZyYW1lIGluZm9ybWF0aW9uIGFu
ZCB0aGUgY29ycmVzcG9uZGluZyBMWlcgYmxvY2tzLgorCisgICAgICAgIElmIGEgZnVsbCBkZWNv
ZGUgaXMgcmVxdWVzdGVkIHRoZW4gTFpXIGRlY29kaW5nIGlzIHBlcmZvcm1lZC4gVGhpcworICAg
ICAgICBpbXBsZW1lbnRhdGlvbiBsb29rcyB0aHJvdWdoIGFsbCBmcmFtZSBpbmZvcm1hdGlvbiBz
YXZlZCBhbmQgZGVjb2RlcworICAgICAgICBlYWNoIGZyYW1lIHNlcXVlbnRpYWxseSB1bnRpbCB0
aGUgdGFyZ2V0IGZyYW1lIGlzIHJlYWNoZWQuCisKKyAgICAgICAgQmVjYXVzZSBvZiB0aGUgc2Vw
YXJhdGlvbiBvZiBwYXJzZSBhbmQgZGVjb2RlLCBlYWNoIGZyYW1lIGNhbiBiZQorICAgICAgICBk
ZWNvZGVkIHNlcGFyYXRlbHkuIFRoaXMgcGF2ZXMgdGhlIHdheSB0byBzdXBwb3J0IHNlZWtpbmcg
aW4gR0lGIGZpbGVzLgorCisgICAgICAgIFRFU1RJTkcKKworICAgICAgICBBZGRlZCBhIG5ldyB1
bml0IHRlc3QgdG8gY292ZXIgcHJvZ3Jlc3NpdmVseSBkZWNvZGluZyBhIEdJRiBpbWFnZS4KKyAg
ICAgICAgVGhlcmUgYXJlIGFscmVhZHkgR0lGIHVuaXQgdGVzdHMgZm9yIGZ1bmN0aW9uYWwgdGVz
dGluZy4KKyAgICAgICAgRXhoYXVzdGl2ZSB0ZXN0aW5nIHdhcyBkb25lIGxvY2FsbHkgd2l0aCBh
IGNvcnB1cyBvZiA2MGsgaW1hZ2VzLgorICAgICAgICBJIG1peGVkIHRoZSBjb3JwdXMgd2l0aCBz
b21lIGdlbmVyYXRlZCBiYWQgZGF0YSBhbmQgdHJ1bmNhdGVkIGZpbGVzLgorICAgICAgICBUaGUg
cmVzdWx0cyB3YXMgYml0LWlkZW50aWNhbCB3aGVuIGNvbXBhcmVkIHRvIHRoZSBwcmV2aW91cwor
ICAgICAgICBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBUaGVzZSB3YXMgYWxzbyBubyBjcmFz
aGluZyB3aGVuIGRlY29kaW5nIHRoZSBlbnRpcmUgY29ycHVzLgorCisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHSUZJbWFnZURlY29kZXI6OkdJRkltYWdlRGVjb2Rlcik6CisgICAgICAgIChXZWJDb3Jl
OjpHSUZJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VE
ZWNvZGVyOjpmcmFtZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6
cmVwZXRpdGlvbkNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6ZGVj
b2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNv
ZGVyLmg6CisgICAgICAgIChHSUZJbWFnZURlY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChHSUZMWldDb250
ZXh0OjpvdXRwdXRSb3cpOgorICAgICAgICAoR0lGTFpXQ29udGV4dDo6ZG9MWlcpOgorICAgICAg
ICAoR0lGRnJhbWVDb250ZXh0OjpkZWNvZGUpOgorICAgICAgICAoR0lGSW1hZ2VSZWFkZXI6OmRl
Y29kZSk6CisgICAgICAgIChHSUZJbWFnZVJlYWRlcjo6cGFyc2UpOgorICAgICAgICAoR0lGSW1h
Z2VSZWFkZXI6OmFkZEZyYW1lSWZOZWNlc3NhcnkpOgorICAgICAgICAoR0lGTFpXQ29udGV4dDo6
cHJlcGFyZVRvRGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYv
R0lGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgVGhlcmUgaXMgYSBsb3Qgb2YgcmVzaHVmZmxpbmcg
aW4gR0lGTFpXQ29udGV4dCBhbmQgR0lGRnJhbWVDb250ZXh0LgorICAgICAgICBUaGVzZSBjaGFu
Z2VzIGhhcyB0aGUgZ29hbCBvZiBoYXZpbmcgR0lGTFpXQ29udGV4dCBiZSBhIHB1cmUgZGVjb2Rp
bmcKKyAgICAgICAgc3RhdGUgbWFjaGluZS4gR0lGRnJhbWVDb250ZXh0IGlzIG1vc3RseSBhIHJl
YWQtb25seSBjb250YWluZXIgZm9yCisgICAgICAgIGZyYW1lIGluZm9ybWF0aW9uLiBXaXRoIGFs
bCB0aGVzZSBjaGFuZ2VzIHdlIGNhbiBkZWNvZGUgZWFjaAorICAgICAgICBHSUZGcmFtZUNvbnRl
eHQgaW5kZXBlbmRlbnRseS4KKworICAgICAgICBUaGUgb3duZXJzaGlwIHBhdHRlcm4gaXM6Cisg
ICAgICAgIEdJRkltYWdlUmVhZGVyIG93bnMgR0lGRnJhbWVDb250ZXh0IG93bnMgR0lGTFpXQ29u
dGV4dC4KKworICAgICAgICAoR0lGTFpXQ29udGV4dDo6R0lGTFpXQ29udGV4dCk6CisgICAgICAg
IChHSUZMWldDb250ZXh0KToKKyAgICAgICAgKEdJRkxaV0NvbnRleHQ6Omhhc1JlbWFpbmluZ1Jv
d3MpOgorICAgICAgICBHSUZMWldDb250ZXh0IGlzIG1vdmVkIHRvIHRoZSB0b3Agb2YgZmlsZS4K
KyAgICAgICAgKEdJRkxaV0Jsb2NrKToKKyAgICAgICAgKEdJRkxaV0Jsb2NrOjpHSUZMWldCbG9j
ayk6CisgICAgICAgIE5ldyBkYXRhIHN0cnVjdHVyZSB0byBzYXZlIGJsb2NrIHBvc2l0aW9uIGFu
ZCBzaXplLgorICAgICAgICAoR0lGRnJhbWVDb250ZXh0KToKKyAgICAgICAgKEdJRkZyYW1lQ29u
dGV4dDo6R0lGRnJhbWVDb250ZXh0KToKKyAgICAgICAgKEdJRkZyYW1lQ29udGV4dDo6fkdJRkZy
YW1lQ29udGV4dCk6CisgICAgICAgIChHSUZGcmFtZUNvbnRleHQ6OmFkZEx6d0Jsb2NrKToKKyAg
ICAgICAgKEdJRkZyYW1lQ29udGV4dDo6aXNDb21wbGV0ZSk6CisgICAgICAgIChHSUZGcmFtZUNv
bnRleHQ6OmlzSGVhZGVyRGVmaW5lZCk6CisgICAgICAgIChHSUZGcmFtZUNvbnRleHQ6OmlzRGF0
YVNpemVEZWZpbmVkKToKKyAgICAgICAgKEdJRkZyYW1lQ29udGV4dDo6c2V0Q29tcGxldGUpOgor
ICAgICAgICAoR0lGRnJhbWVDb250ZXh0OjpzZXRIZWFkZXJEZWZpbmVkKToKKyAgICAgICAgKEdJ
RkZyYW1lQ29udGV4dDo6c2V0RGF0YVNpemUpOgorICAgICAgICBOb3cgb3ducyBHSUZMWldDb250
ZXh0IGZvciBkZWNvZGluZy4KKyAgICAgICAgKEdJRkltYWdlUmVhZGVyOjpHSUZJbWFnZVJlYWRl
cik6CisgICAgICAgIChHSUZJbWFnZVJlYWRlcjo6fkdJRkltYWdlUmVhZGVyKToKKyAgICAgICAg
KEdJRkltYWdlUmVhZGVyOjppbWFnZXNDb3VudCk6CisgICAgICAgIChHSUZJbWFnZVJlYWRlcjo6
ZnJhbWVDb250ZXh0KToKKyAgICAgICAgKEdJRkltYWdlUmVhZGVyKToKKyAgICAgICAgKEdJRklt
YWdlUmVhZGVyOjpwYXJzZUZhaWxlZCk6CisgICAgICAgIChHSUZJbWFnZVJlYWRlcjo6aXNGaXJz
dEZyYW1lKToKKyAgICAgICAgT3ducyBhIGxpc3Qgb2YgR0lGRnJhbWVDb250eHQuCisKIDIwMTMt
MDMtMTUgIEFydmlkIE5pbHNzb24gIDxhbmlsc3NvbkByaW0uY29tPgogCiAgICAgICAgIFtCbGFj
a0JlcnJ5XSBFeHBvc2UgdGhlIGNvbXBvc2l0aW5nIHRocmVhZCBsYXllcidzIGRyYXcgcmVjdGFu
Z2xlIHRvIGFpZCBoaXQgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAyOGVm
ODhmMTZjOTI2YTRiM2ZmNjU2MWNiOTI5MjhmNjkxOTJiMGI2Li5jNDA0OWZiMzQzYzdmNjViMTdi
ODM4MGM5ODBlMDU1Yjc2M2JmMmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMzgs
NiArMzgsMjEgQEAKIAogICAgICAgICAqIERFUFM6CiAKKzIwMTMtMDMtMTcgIEFscGhhIExhbSAg
PGhjbGFtQGNocm9taXVtLm9yZz4KKworICAgICAgICBHSUZJbWFnZVJlYWRlciB0byBjb3VudCBm
cmFtZXMgYW5kIGRlY29kZSBpbiBvbmUgcGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExMTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBuZXcgR0lGIHVuaXQgdGVzdCBmb3IgcHJvZ3Jl
c3NpdmUgZGVjb2RpbmcuIFRoZSB0ZXN0IGlzIHRvIHZlcmlmeQorICAgICAgICB0aGF0IGNvbnRp
bnVhbGx5IHJlLWRlY29kaW5nIGFuIGltYWdlIG9uZSBhZGRpdGlvbmFsIGJ5dGUgYXQgYSB0aW1l
IHByb2R1Y2VzCisgICAgICAgIHRoZSBzYW1lIG91dHB1dHMgYXMgcmVwZWF0ZWRseSBkZWNvZGlu
ZyAod2l0aCBicmFuZCBuZXcgZGVjb2RlcnMpIHRydW5jYXRlZAorICAgICAgICB2ZXJzaW9ucyBv
ZiB0aGUgaW1hZ2UgdGhhdCBhcmUgb25lIGJ5dGUgbG9uZ2VyIGVhY2ggdGltZS4KKworICAgICAg
ICAqIHRlc3RzL0dJRkltYWdlRGVjb2RlclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpURVNU
KToKKwogMjAxMy0wMy0xNSAgRmFkeSBTYW11ZWwgIDxmc2FtdWVsQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbQ2hyb21pdW1dIEZvY3VzIFBsdWdpbiBvbiBUb3VjaFN0YXJ0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNv
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJ
bWFnZURlY29kZXIuY3BwCmluZGV4IGJiODg0MTViYjBjNTY1OGQwMjJhODFhZTU0N2JjYzE5N2Rl
YzJjMDAuLjVlMzdiYmY2ZGZlZGFjYzYwOTU1MWE4OGVkZGExZGJiYjY2ZTRjZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURl
Y29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dp
Zi9HSUZJbWFnZURlY29kZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJHSUZJ
bWFnZVJlYWRlci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uLmgiCisjaW5j
bHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTM1LDcgKzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogR0lGSW1hZ2VE
ZWNvZGVyOjpHSUZJbWFnZURlY29kZXIoSW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9uIGFscGhhT3B0
aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2VTb3VyY2U6OkdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIDog
SW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLSAg
ICAsIG1fYWxyZWFkeVNjYW5uZWRUaGlzRGF0YUZvckZyYW1lQ291bnQodHJ1ZSkKICAgICAsIG1f
cmVwZXRpdGlvbkNvdW50KGNBbmltYXRpb25Mb29wT25jZSkKIHsKIH0KQEAgLTUyLDkgKzUyLDYg
QEAgdm9pZCBHSUZJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKICAgICBJbWFnZURlY29kZXI6OnNldERhdGEoZGF0YSwgYWxsRGF0
YVJlY2VpdmVkKTsKICAgICBpZiAobV9yZWFkZXIpCiAgICAgICAgIG1fcmVhZGVyLT5zZXREYXRh
KGRhdGEpOwotCi0gICAgLy8gV2UgbmVlZCB0byByZXNjYW4gdGhlIGZyYW1lIGNvdW50LCBhcyB0
aGUgbmV3IGRhdGEgbWF5IGhhdmUgY2hhbmdlZCBpdC4KLSAgICBtX2FscmVhZHlTY2FubmVkVGhp
c0RhdGFGb3JGcmFtZUNvdW50ID0gZmFsc2U7CiB9CiAKIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjpp
c1NpemVBdmFpbGFibGUoKQpAQCAtNzksMjEgKzc2LDcgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6
OnNldFNpemUodW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkKIAogc2l6ZV90IEdJRklt
YWdlRGVjb2Rlcjo6ZnJhbWVDb3VudCgpCiB7Ci0gICAgaWYgKCFtX2FscmVhZHlTY2FubmVkVGhp
c0RhdGFGb3JGcmFtZUNvdW50KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBTY2FubmluZyBhbGwgdGhl
IGRhdGEgaGFzIE8obl4yKSBiZWhhdmlvciBpZiB0aGUgZGF0YSB3ZXJlIHRvCi0gICAgICAgIC8v
IGNvbWUgaW4gcmVhbGx5IHNsb3dseS4gIE1pZ2h0IGJlIGludGVyZXN0aW5nIHRvIHRyeSB0byBj
bG9uZSBvdXIKLSAgICAgICAgLy8gZXhpc3RpbmcgcmVhZCBzZXNzaW9uIHRvIHByZXNlcnZlIHN0
YXRlLCBidXQgZm9yIG5vdyB3ZSBqdXN0IGNyYXdsCi0gICAgICAgIC8vIGFsbCB0aGUgZGF0YS4g
IE5vdGUgdGhhdCB0aGlzIGlzIG5vIHdvcnNlIHRoYW4gd2hhdCBJbWFnZUlPIGRvZXMgb24KLSAg
ICAgICAgLy8gTWFjIHJpZ2h0IG5vdyAoaXQgYWxzbyBjcmF3bHMgYWxsIHRoZSBkYXRhIGFnYWlu
KS4KLSAgICAgICAgR0lGSW1hZ2VSZWFkZXIgcmVhZGVyKDApOwotICAgICAgICByZWFkZXIuc2V0
RGF0YShtX2RhdGEpOwotICAgICAgICByZWFkZXIuZGVjb2RlKEdJRkZyYW1lQ291bnRRdWVyeSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KC0xKSk7Ci0gICAgICAgIG1fYWxyZWFkeVNjYW5uZWRUaGlz
RGF0YUZvckZyYW1lQ291bnQgPSB0cnVlOwotICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVz
aXplKHJlYWRlci5pbWFnZXNDb3VudCgpKTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBy
ZWFkZXIuaW1hZ2VzQ291bnQoKTsgKytpKQotICAgICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hl
W2ldLnNldFByZW11bHRpcGx5QWxwaGEobV9wcmVtdWx0aXBseUFscGhhKTsKLSAgICB9Ci0KKyAg
ICBkZWNvZGUoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpLCBHSUZGcmFtZUNv
dW50UXVlcnkpOwogICAgIHJldHVybiBtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpOwogfQogCkBA
IC0xMDcsOCArOTAsOCBAQCBpbnQgR0lGSW1hZ2VEZWNvZGVyOjpyZXBldGl0aW9uQ291bnQoKSBj
b25zdAogICAgIC8vIHNob3VsZCBkZWZhdWx0IHRvIGxvb3Bpbmcgb25jZSAodGhlIGluaXRpYWwg
dmFsdWUgZm9yCiAgICAgLy8gfG1fcmVwZXRpdGlvbkNvdW50fCkuCiAgICAgLy8KLSAgICAvLyBU
aGVyZSBhcmUgdHdvIGFkZGl0aW9uYWwgd3JpbmtsZXMgaGVyZS4gIEZpcnN0LCBJbWFnZVNvdXJj
ZTo6Y2xlYXIoKSBtYXkKLSAgICAvLyBkZXN0cm95IHRoZSByZWFkZXIsIG1ha2luZyB0aGUgcmVz
dWx0IGZyb20gdGhlIHJlYWRlciBfbGVzc18KKyAgICAvLyBUaGVyZSBhcmUgc29tZSBhZGRpdGlv
bmFsIHdyaW5rbGVzIGhlcmUuIEZpcnN0LCBJbWFnZVNvdXJjZTo6Y2xlYXIoKQorICAgIC8vIG1h
eSBkZXN0cm95IHRoZSByZWFkZXIsIG1ha2luZyB0aGUgcmVzdWx0IGZyb20gdGhlIHJlYWRlciBf
bGVzc18KICAgICAvLyBhdXRob3JpdGF0aXZlIG9uIGZ1dHVyZSBjYWxscyBpZiB0aGUgcmVjcmVh
dGVkIHJlYWRlciBoYXNuJ3Qgc2VlbiB0aGUKICAgICAvLyBsb29wIGNvdW50LiAgV2UgZG9uJ3Qg
bmVlZCB0byBzcGVjaWFsLWNhc2UgdGhpcyBiZWNhdXNlIGluIHRoaXMgY2FzZSB0aGUKICAgICAv
LyBuZXcgcmVhZGVyIHdpbGwgb25jZSBhZ2FpbiByZXR1cm4gY0xvb3BDb3VudE5vdFNlZW4sIGFu
ZCB3ZSB3b24ndApAQCAtMTE4LDcgKzEwMSwxNCBAQCBpbnQgR0lGSW1hZ2VEZWNvZGVyOjpyZXBl
dGl0aW9uQ291bnQoKSBjb25zdAogICAgIC8vIHNob3VsZCBjb250aW51ZSB0byB0cmVhdCBpdCBh
cyBhICJsb29wIG9uY2UiIGFuaW1hdGlvbi4gIFdlIGRvbid0IG5lZWQKICAgICAvLyBzcGVjaWFs
IGNvZGUgaGVyZSBlaXRoZXIsIGJlY2F1c2UgaW4gdGhpcyBjYXNlIHdlJ2xsIG5ldmVyIGNoYW5n
ZQogICAgIC8vIHxtX3JlcGV0aXRpb25Db3VudHwgZnJvbSBpdHMgZGVmYXVsdCB2YWx1ZS4KLSAg
ICBpZiAobV9yZWFkZXIgJiYgKG1fcmVhZGVyLT5sb29wQ291bnQoKSAhPSBjTG9vcENvdW50Tm90
U2VlbikpCisgICAgLy8KKyAgICAvLyBUaGlyZCwgd2UgdXNlIHRoZSBzYW1lIEdJRkltYWdlUmVh
ZGVyIGZvciBjb3VudGluZyBmcmFtZXMgYW5kIHdlIG1pZ2h0CisgICAgLy8gc2VlIHRoZSBsb29w
IGNvdW50IGFuZCB0aGVuIGVuY291bnRlciBhIGRlY29kaW5nIGVycm9yIHdoaWNoIGhhcHBlbnMK
KyAgICAvLyBsYXRlciBpbiB0aGUgc3RyZWFtLiBJdCBpcyBhbHNvIHBvc3NpYmxlIHRoYXQgbm8g
ZnJhbWVzIGFyZSBpbiB0aGUKKyAgICAvLyBzdHJlYW0uIEluIHRoZXNlIGNhc2VzIHdlIHNob3Vs
ZCBqdXN0IGxvb3Agb25jZS4KKyAgICBpZiAoZmFpbGVkKCkgfHwgKG1fcmVhZGVyICYmICghbV9y
ZWFkZXItPmltYWdlc0NvdW50KCkgfHwgbV9yZWFkZXItPnBhcnNlRmFpbGVkKCkpKSkKKyAgICAg
ICAgbV9yZXBldGl0aW9uQ291bnQgPSBjQW5pbWF0aW9uTG9vcE9uY2U7CisgICAgZWxzZSBpZiAo
bV9yZWFkZXIgJiYgbV9yZWFkZXItPmxvb3BDb3VudCgpICE9IGNMb29wQ291bnROb3RTZWVuKQog
ICAgICAgICBtX3JlcGV0aXRpb25Db3VudCA9IG1fcmVhZGVyLT5sb29wQ291bnQoKTsKICAgICBy
ZXR1cm4gbV9yZXBldGl0aW9uQ291bnQ7CiB9CkBAIC0zMjEsOSArMzExLDMzIEBAIHZvaWQgR0lG
SW1hZ2VEZWNvZGVyOjpkZWNvZGUodW5zaWduZWQgaGFsdEF0RnJhbWUsIEdJRlF1ZXJ5IHF1ZXJ5
KQogICAgICAgICBtX3JlYWRlci0+c2V0RGF0YShtX2RhdGEpOwogICAgIH0KIAotICAgIC8vIElm
IHdlIGNvdWxkbid0IGRlY29kZSB0aGUgaW1hZ2UgYnV0IHdlJ3ZlIHJlY2VpdmVkIGFsbCB0aGUg
ZGF0YSwgZGVjb2RpbmcKLSAgICAvLyBoYXMgZmFpbGVkLgotICAgIGlmICghbV9yZWFkZXItPmRl
Y29kZShxdWVyeSwgaGFsdEF0RnJhbWUpICYmIGlzQWxsRGF0YVJlY2VpdmVkKCkpCisgICAgaWYg
KHF1ZXJ5ID09IEdJRlNpemVRdWVyeSkgeworICAgICAgICBpZiAoIW1fcmVhZGVyLT5kZWNvZGUo
R0lGU2l6ZVF1ZXJ5LCBoYWx0QXRGcmFtZSkpCisgICAgICAgICAgICBzZXRGYWlsZWQoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9yZWFkZXItPmRlY29kZShHSUZGcmFt
ZUNvdW50UXVlcnksIGhhbHRBdEZyYW1lKSkgeworICAgICAgICBzZXRGYWlsZWQoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IHNpemVfdCBvbGRTaXplID0gbV9mcmFtZUJ1
ZmZlckNhY2hlLnNpemUoKTsKKyAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKG1fcmVhZGVy
LT5pbWFnZXNDb3VudCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gb2xkU2l6ZTsgaSA8IG1fcmVh
ZGVyLT5pbWFnZXNDb3VudCgpOyArK2kpCisgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVtpXS5z
ZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7CisKKyAgICBpZiAocXVlcnkg
PT0gR0lGRnJhbWVDb3VudFF1ZXJ5KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fcmVh
ZGVyLT5kZWNvZGUoR0lGRnVsbFF1ZXJ5LCBoYWx0QXRGcmFtZSkpIHsKKyAgICAgICAgc2V0RmFp
bGVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBJdCBpcyBhbHNvIGEgZmF0
YWwgZXJyb3IgaWYgYWxsIGRhdGEgaXMgcmVjZWl2ZWQgYnV0IHdlIGZhaWxlZCB0byBkZWNvZGUK
KyAgICAvLyBhbGwgZnJhbWVzIGNvbXBsZXRlbHkuCisgICAgaWYgKGlzQWxsRGF0YVJlY2VpdmVk
KCkgJiYgaGFsdEF0RnJhbWUgPj0gbV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUoKSAmJiBtX3JlYWRl
cikKICAgICAgICAgc2V0RmFpbGVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAppbmRl
eCA1NWY5YjM1NjRmNDEyYzcwNzIxOTFkNzQwNjFiMTk2NzYxNmM2YjZkLi5mOWUxYjg0ZDMxODFh
YTZjNTVmYmFjMjQ4ZWIzMTJlOTU0MmI4YTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCkBA
IC03Miw3ICs3Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gZmFpbHVyZSwg
dGhpcyB3aWxsIG1hcmsgdGhlIGltYWdlIGFzIGZhaWxlZC4KICAgICAgICAgYm9vbCBpbml0RnJh
bWVCdWZmZXIodW5zaWduZWQgZnJhbWVJbmRleCk7CiAKLSAgICAgICAgYm9vbCBtX2FscmVhZHlT
Y2FubmVkVGhpc0RhdGFGb3JGcmFtZUNvdW50OwogICAgICAgICBib29sIG1fY3VycmVudEJ1ZmZl
clNhd0FscGhhOwogICAgICAgICBtdXRhYmxlIGludCBtX3JlcGV0aXRpb25Db3VudDsKICAgICAg
ICAgT3duUHRyPEdJRkltYWdlUmVhZGVyPiBtX3JlYWRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIu
Y3BwCmluZGV4IDU2YzkyNGI3YWZkYTkzMWRkNDU1NDk0ZjgyMGE1Y2E1NjkzZDczYmYuLjcyYzhm
ZjE1ZTlkYmI5OWRhMmUzOWMzNzEzMGI0NDgwYzEzZjYyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVh
ZGVyLmNwcApAQCAtOTgsMjAgKzk4LDIwIEBAIHVzaW5nIFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rl
cjsKICNkZWZpbmUgR0VUSU5UMTYocCkgICAoKHApWzFdPDw4fChwKVswXSkKIAogLy8gU2VuZCB0
aGUgZGF0YSB0byB0aGUgZGlzcGxheSBmcm9udC1lbmQuCi1ib29sIEdJRkltYWdlUmVhZGVyOjpv
dXRwdXRSb3coKQorYm9vbCBHSUZMWldDb250ZXh0OjpvdXRwdXRSb3coKQogewotICAgIGludCBk
cm93U3RhcnQgPSBtX2ZyYW1lQ29udGV4dC0+aXJvdzsKLSAgICBpbnQgZHJvd0VuZCA9IG1fZnJh
bWVDb250ZXh0LT5pcm93OworICAgIGludCBkcm93U3RhcnQgPSBpcm93OworICAgIGludCBkcm93
RW5kID0gaXJvdzsKIAogICAgIC8vIEhhZWJlcmxpLWluc3BpcmVkIGhhY2sgZm9yIGludGVybGFj
ZWQgR0lGczogUmVwbGljYXRlIGxpbmVzIHdoaWxlCiAgICAgLy8gZGlzcGxheWluZyB0byBkaW1p
bmlzaCB0aGUgInZlbmV0aWFuLWJsaW5kIiBlZmZlY3QgYXMgdGhlIGltYWdlIGlzCiAgICAgLy8g
bG9hZGVkLiBBZGp1c3QgcGl4ZWwgdmVydGljYWwgcG9zaXRpb25zIHRvIGF2b2lkIHRoZSBhcHBl
YXJhbmNlIG9mIHRoZQogICAgIC8vIGltYWdlIGNyYXdsaW5nIHVwIHRoZSBzY3JlZW4gYXMgc3Vj
Y2Vzc2l2ZSBwYXNzZXMgYXJlIGRyYXduLgotICAgIGlmIChtX2ZyYW1lQ29udGV4dC0+cHJvZ3Jl
c3NpdmVEaXNwbGF5ICYmIG1fZnJhbWVDb250ZXh0LT5pbnRlcmxhY2VkICYmIG1fZnJhbWVDb250
ZXh0LT5pcGFzcyA8IDQpIHsKKyAgICBpZiAobV9mcmFtZUNvbnRleHQtPnByb2dyZXNzaXZlRGlz
cGxheSAmJiBtX2ZyYW1lQ29udGV4dC0+aW50ZXJsYWNlZCAmJiBpcGFzcyA8IDQpIHsKICAgICAg
ICAgdW5zaWduZWQgcm93RHVwID0gMDsKICAgICAgICAgdW5zaWduZWQgcm93U2hpZnQgPSAwOwog
Ci0gICAgICAgIHN3aXRjaCAobV9mcmFtZUNvbnRleHQtPmlwYXNzKSB7CisgICAgICAgIHN3aXRj
aCAoaXBhc3MpIHsKICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgcm93RHVwID0gNzsKICAg
ICAgICAgICAgIHJvd1NoaWZ0ID0gMzsKQEAgLTE0OCw4OCArMTQ4LDY1IEBAIGJvb2wgR0lGSW1h
Z2VSZWFkZXI6Om91dHB1dFJvdygpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gQ0FM
TEJBQ0s6IExldCB0aGUgY2xpZW50IGtub3cgd2UgaGF2ZSBkZWNvZGVkIGEgcm93LgotICAgIGlm
IChtX2NsaWVudCAmJiBtX2ZyYW1lQ29udGV4dAotICAgICAgICAmJiAhbV9jbGllbnQtPmhhdmVE
ZWNvZGVkUm93KG1faW1hZ2VzQ291bnQgLSAxLCBtX2x6d0NvbnRleHQucm93QnVmZmVyLCBtX2Zy
YW1lQ29udGV4dC0+d2lkdGgsCi0gICAgICAgICAgICBkcm93U3RhcnQsIGRyb3dFbmQgLSBkcm93
U3RhcnQgKyAxLCBtX2ZyYW1lQ29udGV4dC0+cHJvZ3Jlc3NpdmVEaXNwbGF5ICYmIG1fZnJhbWVD
b250ZXh0LT5pbnRlcmxhY2VkICYmIG1fZnJhbWVDb250ZXh0LT5pcGFzcyA+IDEpKQorICAgIGlm
ICghbV9jbGllbnQtPmhhdmVEZWNvZGVkUm93KG1fZnJhbWVDb250ZXh0LT5mcmFtZUlkLCByb3dC
dWZmZXIsIG1fZnJhbWVDb250ZXh0LT53aWR0aCwKKyAgICAgICAgZHJvd1N0YXJ0LCBkcm93RW5k
IC0gZHJvd1N0YXJ0ICsgMSwgbV9mcmFtZUNvbnRleHQtPnByb2dyZXNzaXZlRGlzcGxheSAmJiBt
X2ZyYW1lQ29udGV4dC0+aW50ZXJsYWNlZCAmJiBpcGFzcyA+IDEpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBpZiAoIW1fZnJhbWVDb250ZXh0LT5pbnRlcmxhY2VkKQotICAgICAgICBt
X2ZyYW1lQ29udGV4dC0+aXJvdysrOworICAgICAgICBpcm93Kys7CiAgICAgZWxzZSB7CiAgICAg
ICAgIGRvIHsKLSAgICAgICAgICAgIHN3aXRjaCAobV9mcmFtZUNvbnRleHQtPmlwYXNzKSB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKGlwYXNzKSB7CiAgICAgICAgICAgICBjYXNlIDE6Ci0gICAgICAg
ICAgICAgICAgbV9mcmFtZUNvbnRleHQtPmlyb3cgKz0gODsKLSAgICAgICAgICAgICAgICBpZiAo
bV9mcmFtZUNvbnRleHQtPmlyb3cgPj0gbV9mcmFtZUNvbnRleHQtPmhlaWdodCkgewotICAgICAg
ICAgICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+aXBhc3MrKzsKLSAgICAgICAgICAgICAgICAg
ICAgbV9mcmFtZUNvbnRleHQtPmlyb3cgPSA0OworICAgICAgICAgICAgICAgIGlyb3cgKz0gODsK
KyAgICAgICAgICAgICAgICBpZiAoaXJvdyA+PSBtX2ZyYW1lQ29udGV4dC0+aGVpZ2h0KSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlwYXNzKys7CisgICAgICAgICAgICAgICAgICAgIGlyb3cgPSA0
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAg
ICAgY2FzZSAyOgotICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5pcm93ICs9IDg7Ci0g
ICAgICAgICAgICAgICAgaWYgKG1fZnJhbWVDb250ZXh0LT5pcm93ID49IG1fZnJhbWVDb250ZXh0
LT5oZWlnaHQpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPmlwYXNzKys7
Ci0gICAgICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5pcm93ID0gMjsKKyAgICAgICAg
ICAgICAgICBpcm93ICs9IDg7CisgICAgICAgICAgICAgICAgaWYgKGlyb3cgPj0gbV9mcmFtZUNv
bnRleHQtPmhlaWdodCkgeworICAgICAgICAgICAgICAgICAgICBpcGFzcysrOworICAgICAgICAg
ICAgICAgICAgICBpcm93ID0gMjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgICAgICBtX2ZyYW1lQ29u
dGV4dC0+aXJvdyArPSA0OwotICAgICAgICAgICAgICAgIGlmIChtX2ZyYW1lQ29udGV4dC0+aXJv
dyA+PSBtX2ZyYW1lQ29udGV4dC0+aGVpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fZnJh
bWVDb250ZXh0LT5pcGFzcysrOwotICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+
aXJvdyA9IDE7CisgICAgICAgICAgICAgICAgaXJvdyArPSA0OworICAgICAgICAgICAgICAgIGlm
IChpcm93ID49IG1fZnJhbWVDb250ZXh0LT5oZWlnaHQpIHsKKyAgICAgICAgICAgICAgICAgICAg
aXBhc3MrKzsKKyAgICAgICAgICAgICAgICAgICAgaXJvdyA9IDE7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIDQ6Ci0gICAgICAg
ICAgICAgICAgbV9mcmFtZUNvbnRleHQtPmlyb3cgKz0gMjsKLSAgICAgICAgICAgICAgICBpZiAo
bV9mcmFtZUNvbnRleHQtPmlyb3cgPj0gbV9mcmFtZUNvbnRleHQtPmhlaWdodCkgewotICAgICAg
ICAgICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+aXBhc3MrKzsKLSAgICAgICAgICAgICAgICAg
ICAgbV9mcmFtZUNvbnRleHQtPmlyb3cgPSAwOworICAgICAgICAgICAgICAgIGlyb3cgKz0gMjsK
KyAgICAgICAgICAgICAgICBpZiAoaXJvdyA+PSBtX2ZyYW1lQ29udGV4dC0+aGVpZ2h0KSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlwYXNzKys7CisgICAgICAgICAgICAgICAgICAgIGlyb3cgPSAw
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgfSB3aGlsZSAobV9mcmFtZUNvbnRleHQtPmlyb3cgPiAobV9mcmFtZUNvbnRleHQtPmhlaWdo
dCAtIDEpKTsKKyAgICAgICAgfSB3aGlsZSAoaXJvdyA+IChtX2ZyYW1lQ29udGV4dC0+aGVpZ2h0
IC0gMSkpOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogLy8gUGVyZm9ybSBMZW1wZWwt
Wml2LVdlbGNoIGRlY29kaW5nLgotYm9vbCBHSUZJbWFnZVJlYWRlcjo6ZG9MWlcoY29uc3QgdW5z
aWduZWQgY2hhciogYmxvY2ssIHNpemVfdCBieXRlc0luQmxvY2spCisvLyBSZXR1cm5zIHRydWUg
aWYgZGVjb2Rpbmcgd2FzIHN1Y2Nlc3NmdWwuIEluIHRoaXMgY2FzZSB0aGUgYmxvY2sgd2lsbCBo
YXZlIGJlZW4gY29tcGxldGVseSBjb25zdW1lZCBhbmQvb3Igcm93c1JlbWFpbmluZyB3aWxsIGJl
IDAuCisvLyBPdGhlcndpc2UsIGRlY29kaW5nIGZhaWxlZDsgcmV0dXJucyBmYWxzZSBpbiB0aGlz
IGNhc2UsIHdoaWNoIHdpbGwgYWx3YXlzIGNhdXNlIHRoZSBHSUZJbWFnZVJlYWRlciB0byBzZXQg
dGhlICJkZWNvZGUgZmFpbGVkIiBmbGFnLgorYm9vbCBHSUZMWldDb250ZXh0Ojpkb0xaVyhjb25z
dCB1bnNpZ25lZCBjaGFyKiBibG9jaywgc2l6ZV90IGJ5dGVzSW5CbG9jaykKIHsKLSAgICBpZiAo
IW1fZnJhbWVDb250ZXh0KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQogICAgIGludCBjb2RlOwog
ICAgIGludCBpbmNvZGU7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqY2g7CiAKLSAgICAvLyBD
b3B5IGFsbCB0aGUgZGVjb2RlciBzdGF0ZSB2YXJpYWJsZXMgaW50byBsb2NhbHMgc28gdGhlIGNv
bXBpbGVyCi0gICAgLy8gd29uJ3Qgd29ycnkgYWJvdXQgdGhlbSBiZWluZyBhbGlhc2VkLiBUaGUg
bG9jYWxzIHdpbGwgYmUgaG9tZWQKLSAgICAvLyBiYWNrIGludG8gdGhlIEdJRiBkZWNvZGVyIHN0
cnVjdHVyZSB3aGVuIHdlIGV4aXQuCi0gICAgaW50IGF2YWlsID0gbV9sendDb250ZXh0LmF2YWls
OwotICAgIGludCBiaXRzID0gbV9sendDb250ZXh0LmJpdHM7Ci0gICAgc2l6ZV90IGNudCA9IGJ5
dGVzSW5CbG9jazsKLSAgICBpbnQgY29kZXNpemUgPSBtX2x6d0NvbnRleHQuY29kZXNpemU7Ci0g
ICAgaW50IGNvZGVtYXNrID0gbV9sendDb250ZXh0LmNvZGVtYXNrOwotICAgIGludCBvbGRjb2Rl
ID0gbV9sendDb250ZXh0Lm9sZGNvZGU7Ci0gICAgaW50IGNsZWFyQ29kZSA9IG1fbHp3Q29udGV4
dC5jbGVhckNvZGU7Ci0gICAgdW5zaWduZWQgY2hhciBmaXJzdGNoYXIgPSBtX2x6d0NvbnRleHQu
Zmlyc3RjaGFyOwotICAgIGludCBkYXR1bSA9IG1fbHp3Q29udGV4dC5kYXR1bTsKLQotICAgIFZl
Y3Rvcjx1bnNpZ25lZCBzaG9ydD4mIHByZWZpeCA9IG1fbHp3Q29udGV4dC5wcmVmaXg7Ci0gICAg
VmVjdG9yPHVuc2lnbmVkIGNoYXI+JiBzdWZmaXggPSBtX2x6d0NvbnRleHQuc3VmZml4OwotICAg
IFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYgc3RhY2sgPSBtX2x6d0NvbnRleHQuc3RhY2s7Ci0gICAg
c2l6ZV90IHN0YWNrcCA9IG1fbHp3Q29udGV4dC5zdGFja3A7Ci0gICAgc2l6ZV90IHJvd3AgPSBt
X2x6d0NvbnRleHQucm93UG9zaXRpb247Ci0gICAgc2l6ZV90IHdpZHRoID0gbV9mcmFtZUNvbnRl
eHQtPndpZHRoOwotICAgIHNpemVfdCByb3dzUmVtYWluaW5nID0gbV9mcmFtZUNvbnRleHQtPnJv
d3NSZW1haW5pbmc7Ci0KLSAgICBpZiAocm93cCA9PSB3aWR0aCkKKyAgICBpZiAocm93UG9zaXRp
b24gPT0gcm93QnVmZmVyLnNpemUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICNkZWZpbmUg
T1VUUFVUX1JPVyBcCkBAIC0yMzcsMTMgKzIxNCwxMiBAQCBib29sIEdJRkltYWdlUmVhZGVyOjpk
b0xaVyhjb25zdCB1bnNpZ25lZCBjaGFyKiBibG9jaywgc2l6ZV90IGJ5dGVzSW5CbG9jaykKICAg
ICAgICAgaWYgKCFvdXRwdXRSb3coKSkgXAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyBcCiAg
ICAgICAgIHJvd3NSZW1haW5pbmctLTsgXAotICAgICAgICByb3dwID0gMDsgXAotICAgICAgICBt
X2x6d0NvbnRleHQucm93UG9zaXRpb24gPSAwOyBcCisgICAgICAgIHJvd1Bvc2l0aW9uID0gMDsg
XAogICAgICAgICBpZiAoIXJvd3NSZW1haW5pbmcpIFwKLSAgICAgICAgICAgIGdvdG8gRU5EOyBc
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgXAogICAgIH0gd2hpbGUgKDApCiAKLSAgICBmb3Ig
KGNoID0gYmxvY2s7IGNudC0tID4gMDsgY2grKykgeworICAgIGZvciAoY2ggPSBibG9jazsgYnl0
ZXNJbkJsb2NrLS0gPiAwOyBjaCsrKSB7CiAgICAgICAgIC8vIEZlZWQgdGhlIG5leHQgYnl0ZSBp
bnRvIHRoZSBkZWNvZGVyJ3MgMzItYml0IGlucHV0IGJ1ZmZlci4KICAgICAgICAgZGF0dW0gKz0g
KChpbnQpICpjaCkgPDwgYml0czsKICAgICAgICAgYml0cyArPSA4OwpAQCAtMjY5LDEyICsyNDUs
MTIgQEAgYm9vbCBHSUZJbWFnZVJlYWRlcjo6ZG9MWlcoY29uc3QgdW5zaWduZWQgY2hhciogYmxv
Y2ssIHNpemVfdCBieXRlc0luQmxvY2spCiAgICAgICAgICAgICAgICAgLy8gZW5kLW9mLXN0cmVh
bSBzaG91bGQgb25seSBhcHBlYXIgYWZ0ZXIgYWxsIGltYWdlIGRhdGEuCiAgICAgICAgICAgICAg
ICAgaWYgKCFyb3dzUmVtYWluaW5nKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gbV9jbGllbnQgPyBtX2NsaWVudC0+c2V0RmFpbGVkKCkg
OiBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGlmIChvbGRjb2RlID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgbV9sendD
b250ZXh0LnJvd0J1ZmZlcltyb3dwKytdID0gc3VmZml4W2NvZGVdOwotICAgICAgICAgICAgICAg
IGlmIChyb3dwID09IHdpZHRoKQorICAgICAgICAgICAgICAgIHJvd0J1ZmZlcltyb3dQb3NpdGlv
bisrXSA9IHN1ZmZpeFtjb2RlXTsKKyAgICAgICAgICAgICAgICBpZiAocm93UG9zaXRpb24gPT0g
cm93QnVmZmVyLnNpemUoKSkKICAgICAgICAgICAgICAgICAgICAgT1VUUFVUX1JPVzsKIAogICAg
ICAgICAgICAgICAgIGZpcnN0Y2hhciA9IG9sZGNvZGUgPSBjb2RlOwpAQCAtMjg3LDEyICsyNjMs
MTIgQEAgYm9vbCBHSUZJbWFnZVJlYWRlcjo6ZG9MWlcoY29uc3QgdW5zaWduZWQgY2hhciogYmxv
Y2ssIHNpemVfdCBieXRlc0luQmxvY2spCiAgICAgICAgICAgICAgICAgY29kZSA9IG9sZGNvZGU7
CiAKICAgICAgICAgICAgICAgICBpZiAoc3RhY2twID09IE1BWF9CWVRFUykKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG1fY2xpZW50ID8gbV9jbGllbnQtPnNldEZhaWxlZCgpIDogZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgd2hpbGUgKGNvZGUgPj0gY2xlYXJDb2RlKSB7CiAgICAgICAgICAgICAgICAgaWYg
KGNvZGUgPj0gTUFYX0JZVEVTIHx8IGNvZGUgPT0gcHJlZml4W2NvZGVdKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbV9jbGllbnQgPyBtX2NsaWVudC0+c2V0RmFpbGVkKCkgOiBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICAgICAgLy8g
RXZlbiB0aG91Z2ggc3VmZml4W10gb25seSBob2xkcyBjaGFyYWN0ZXJzIHRocm91Z2ggc3VmZml4
W2F2YWlsIC0gMV0sCiAgICAgICAgICAgICAgICAgLy8gYWxsb3dpbmcgY29kZSA+PSBhdmFpbCBo
ZXJlIGxldHMgdXMgYmUgbW9yZSB0b2xlcmFudCBvZiBtYWxmb3JtZWQKQEAgLTMwMiw3ICsyNzgs
NyBAQCBib29sIEdJRkltYWdlUmVhZGVyOjpkb0xaVyhjb25zdCB1bnNpZ25lZCBjaGFyKiBibG9j
aywgc2l6ZV90IGJ5dGVzSW5CbG9jaykKICAgICAgICAgICAgICAgICBjb2RlID0gcHJlZml4W2Nv
ZGVdOwogCiAgICAgICAgICAgICAgICAgaWYgKHN0YWNrcCA9PSBNQVhfQllURVMpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBtX2NsaWVudCA/IG1fY2xpZW50LT5zZXRGYWlsZWQoKSA6IGZh
bHNlOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIHN0YWNrW3N0YWNrcCsrXSA9IGZpcnN0Y2hhciA9IHN1ZmZpeFtjb2RlXTsK
QEAgLTMyNSwzNiArMzAxLDk3IEBAIGJvb2wgR0lGSW1hZ2VSZWFkZXI6OmRvTFpXKGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGJsb2NrLCBzaXplX3QgYnl0ZXNJbkJsb2NrKQogCiAgICAgICAgICAgICAv
LyBDb3B5IHRoZSBkZWNvZGVkIGRhdGEgb3V0IHRvIHRoZSBzY2FubGluZSBidWZmZXIuCiAgICAg
ICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgbV9sendDb250ZXh0LnJvd0J1ZmZlcltyb3dw
KytdID0gc3RhY2tbLS1zdGFja3BdOwotICAgICAgICAgICAgICAgIGlmIChyb3dwID09IHdpZHRo
KQorICAgICAgICAgICAgICAgIHJvd0J1ZmZlcltyb3dQb3NpdGlvbisrXSA9IHN0YWNrWy0tc3Rh
Y2twXTsKKyAgICAgICAgICAgICAgICBpZiAocm93UG9zaXRpb24gPT0gcm93QnVmZmVyLnNpemUo
KSkKICAgICAgICAgICAgICAgICAgICAgT1VUUFVUX1JPVzsKICAgICAgICAgICAgIH0gd2hpbGUg
KHN0YWNrcCA+IDApOwogICAgICAgICB9CiAgICAgfQogCi1FTkQ6Ci0gICAgLy8gSG9tZSB0aGUg
bG9jYWwgY29waWVzIG9mIHRoZSBHSUYgZGVjb2RlciBzdGF0ZSB2YXJpYWJsZXMuCi0gICAgbV9s
endDb250ZXh0LmF2YWlsID0gYXZhaWw7Ci0gICAgbV9sendDb250ZXh0LmJpdHMgPSBiaXRzOwot
ICAgIG1fbHp3Q29udGV4dC5jb2Rlc2l6ZSA9IGNvZGVzaXplOwotICAgIG1fbHp3Q29udGV4dC5j
b2RlbWFzayA9IGNvZGVtYXNrOwotICAgIG1fbHp3Q29udGV4dC5vbGRjb2RlID0gb2xkY29kZTsK
LSAgICBtX2x6d0NvbnRleHQuZmlyc3RjaGFyID0gZmlyc3RjaGFyOwotICAgIG1fbHp3Q29udGV4
dC5kYXR1bSA9IGRhdHVtOwotICAgIG1fbHp3Q29udGV4dC5zdGFja3AgPSBzdGFja3A7Ci0gICAg
bV9sendDb250ZXh0LnJvd1Bvc2l0aW9uID0gcm93cDsKLSAgICBtX2ZyYW1lQ29udGV4dC0+cm93
c1JlbWFpbmluZyA9IHJvd3NSZW1haW5pbmc7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKy8vIFBl
cmZvcm0gZGVjb2RpbmcgZm9yIHRoaXMgZnJhbWUuIGZyYW1lRGVjb2RlZCB3aWxsIGJlIHRydWUg
aWYgdGhlIGVudGlyZSBmcmFtZSBpcyBkZWNvZGVkLgorLy8gUmV0dXJucyBmYWxzZSBpZiBhIGRl
Y29kaW5nIGVycm9yIG9jY3VycmVkLiBUaGlzIGlzIGEgZmF0YWwgZXJyb3IgYW5kIGNhdXNlcyB0
aGUgR0lGSW1hZ2VSZWFkZXIgdG8gc2V0IHRoZSAiZGVjb2RlIGZhaWxlZCIgZmxhZy4KKy8vIE90
aGVyd2lzZSwgZWl0aGVyIG5vdCBlbm91Z2ggZGF0YSBpcyBhdmFpbGFibGUgdG8gZGVjb2RlIGZ1
cnRoZXIgdGhhbiBiZWZvcmUsIG9yIHRoZSBuZXcgZGF0YSBoYXMgYmVlbiBkZWNvZGVkIHN1Y2Nl
c3NmdWxseTsgcmV0dXJucyB0cnVlIGluIHRoaXMgY2FzZS4KK2Jvb2wgR0lGRnJhbWVDb250ZXh0
OjpkZWNvZGUoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgV2ViQ29y
ZTo6R0lGSW1hZ2VEZWNvZGVyKiBjbGllbnQsIGJvb2wqIGZyYW1lRGVjb2RlZCkKK3sKKyAgICAq
ZnJhbWVEZWNvZGVkID0gZmFsc2U7CisgICAgaWYgKCFtX2x6d0NvbnRleHQpIHsKKyAgICAgICAg
Ly8gV2FpdCBmb3IgbW9yZSBkYXRhIHRvIHByb3Blcmx5IGluaXRpYWxpemUgR0lGTFpXQ29udGV4
dC4KKyAgICAgICAgaWYgKCFpc0RhdGFTaXplRGVmaW5lZCgpIHx8ICFpc0hlYWRlckRlZmluZWQo
KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIG1fbHp3Q29udGV4dCA9IGFk
b3B0UHRyKG5ldyBHSUZMWldDb250ZXh0KGNsaWVudCwgdGhpcykpOworICAgICAgICBpZiAoIW1f
bHp3Q29udGV4dC0+cHJlcGFyZVRvRGVjb2RlKCkpIHsKKyAgICAgICAgICAgIG1fbHp3Q29udGV4
dC5jbGVhcigpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAg
ICAgbV9jdXJyZW50THp3QmxvY2sgPSAwOworICAgIH0KKworICAgIC8vIFNvbWUgYmFkIEdJRnMg
aGF2ZSBleHRyYSBibG9ja3MgYmV5b25kIHRoZSBsYXN0IHJvdywgd2hpY2ggd2UgZG9uJ3Qgd2Fu
dCB0byBkZWNvZGUuCisgICAgd2hpbGUgKG1fY3VycmVudEx6d0Jsb2NrIDwgbV9sendCbG9ja3Mu
c2l6ZSgpICYmIG1fbHp3Q29udGV4dC0+aGFzUmVtYWluaW5nUm93cygpKSB7CisgICAgICAgIHNp
emVfdCBibG9ja1Bvc2l0aW9uID0gbV9sendCbG9ja3NbbV9jdXJyZW50THp3QmxvY2tdLmJsb2Nr
UG9zaXRpb247CisgICAgICAgIHNpemVfdCBibG9ja1NpemUgPSBtX2x6d0Jsb2Nrc1ttX2N1cnJl
bnRMendCbG9ja10uYmxvY2tTaXplOworICAgICAgICBpZiAoYmxvY2tQb3NpdGlvbiArIGJsb2Nr
U2l6ZSA+IGxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFt
X2x6d0NvbnRleHQtPmRvTFpXKGRhdGEgKyBibG9ja1Bvc2l0aW9uLCBibG9ja1NpemUpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICArK21fY3VycmVudEx6d0Jsb2NrOworICAg
IH0KKworICAgIC8vIElmIHRoaXMgZnJhbWUgaXMgZGF0YSBjb21wbGV0ZSB0aGVuIHRoZSBwcmV2
aW91cyBsb29wIG11c3QgaGF2ZSBjb21wbGV0ZWx5IGRlY29kZWQgYWxsIExaVyBibG9ja3MuCisg
ICAgLy8gVGhlcmUgd2lsbCBiZSBubyBtb3JlIGRlY29kaW5nIGZvciB0aGlzIGZyYW1lIHNvIGl0
J3MgdGltZSB0byBjbGVhbnVwLgorICAgIGlmIChpc0NvbXBsZXRlKCkpIHsKKyAgICAgICAgKmZy
YW1lRGVjb2RlZCA9IHRydWU7CisgICAgICAgIG1fbHp3Q29udGV4dC5jbGVhcigpOworICAgIH0K
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gRGVjb2RlIGFsbCBmcmFtZXMgYmVmb3JlIGhhbHRB
dEZyYW1lLgorLy8gVGhpcyBtZXRob2QgdXNlcyBHSUZGcmFtZUNvbnRleHQ6ZGVjb2RlKCkgdG8g
ZGVjb2RlIGVhY2ggZnJhbWUsIGRlY29kaW5nIGVycm9yIGlzIHJlcG9ydGVkIHRvIGNsaWVudCBh
cyBhIGNyaXRpY2FsIGZhaWx1cmUuCisvLyBSZXR1cm4gdHJ1ZSBpZiBkZWNvZGluZyBoYXMgcHJv
Z3Jlc3NlZC4gcmV0dXJuIGZhbHNlOyBpZiBhbiBlcnJvciBoYXMgb2NjdXJyZWQuCiBib29sIEdJ
RkltYWdlUmVhZGVyOjpkZWNvZGUoR0lGSW1hZ2VEZWNvZGVyOjpHSUZRdWVyeSBxdWVyeSwgdW5z
aWduZWQgaGFsdEF0RnJhbWUpCiB7CiAgICAgQVNTRVJUKG1fYnl0ZXNSZWFkIDw9IG1fZGF0YS0+
c2l6ZSgpKTsKLSAgICByZXR1cm4gZGVjb2RlSW50ZXJuYWwobV9ieXRlc1JlYWQsIG1fZGF0YS0+
c2l6ZSgpIC0gbV9ieXRlc1JlYWQsIHF1ZXJ5LCBoYWx0QXRGcmFtZSk7CisKKyAgICAvLyBUcnkg
dG8gYmUgdG9sZXJhbnQgYW5kIGRvbid0IHJlcG9ydCBwYXJzaW5nIGVycm9ycyBidXQgd2Ugd2ls
bCBub3QgcGFyc2UgYWdhaW4uCisgICAgLy8gVE9ETzogUmVwb3J0IHBhcnNpbmcgZXJyb3JzIHRv
IGNsaWVudC4KKyAgICBpZiAoIW1fcGFyc2VGYWlsZWQgJiYgIXBhcnNlKG1fYnl0ZXNSZWFkLCBt
X2RhdGEtPnNpemUoKSAtIG1fYnl0ZXNSZWFkLCBxdWVyeSA9PSBHSUZJbWFnZURlY29kZXI6OkdJ
RlNpemVRdWVyeSkpCisgICAgICAgIG1fcGFyc2VGYWlsZWQgPSB0cnVlOworCisgICAgaWYgKHF1
ZXJ5ICE9IEdJRkltYWdlRGVjb2Rlcjo6R0lGRnVsbFF1ZXJ5KQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgIHdoaWxlIChtX2N1cnJlbnREZWNvZGluZ0ZyYW1lIDwgc3RkOjptaW4obV9mcmFt
ZXMuc2l6ZSgpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhhbHRBdEZyYW1lKSkpIHsKKyAgICAgICAg
Ym9vbCBmcmFtZURlY29kZWQgPSBmYWxzZTsKKyAgICAgICAgR0lGRnJhbWVDb250ZXh0KiBjdXJy
ZW50RnJhbWUgPSBtX2ZyYW1lc1ttX2N1cnJlbnREZWNvZGluZ0ZyYW1lXS5nZXQoKTsKKworICAg
ICAgICBpZiAoIWN1cnJlbnRGcmFtZS0+ZGVjb2RlKGRhdGEoMCksIG1fZGF0YS0+c2l6ZSgpLCBt
X2NsaWVudCwgJmZyYW1lRGVjb2RlZCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgLy8gV2UgbmVlZCBtb3JlIGRhdGEgdG8gY29udGludWUgZGVjb2RpbmcuCisgICAgICAg
IGlmICghZnJhbWVEZWNvZGVkKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKCFt
X2NsaWVudC0+ZnJhbWVDb21wbGV0ZShtX2N1cnJlbnREZWNvZGluZ0ZyYW1lLCBjdXJyZW50RnJh
bWUtPmRlbGF5VGltZSwgY3VycmVudEZyYW1lLT5kaXNwb3NhbE1ldGhvZCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICsrbV9jdXJyZW50RGVjb2RpbmdGcmFtZTsKKyAgICB9
CisKKyAgICAvLyBBbGwgZnJhbWVzIGRlY29kZWQuCisgICAgaWYgKG1fY3VycmVudERlY29kaW5n
RnJhbWUgPT0gbV9mcmFtZXMuc2l6ZSgpICYmIG1fcGFyc2VDb21wbGV0ZWQpCisgICAgICAgIG1f
Y2xpZW50LT5naWZDb21wbGV0ZSgpOworICAgIHJldHVybiB0cnVlOwogfQogCi0vLyBQcm9jZXNz
IGRhdGEgYXJyaXZpbmcgZnJvbSB0aGUgc3RyZWFtIGZvciB0aGUgZ2lmIGRlY29kZXIuCi1ib29s
IEdJRkltYWdlUmVhZGVyOjpkZWNvZGVJbnRlcm5hbChzaXplX3QgZGF0YVBvc2l0aW9uLCBzaXpl
X3QgbGVuLCBHSUZJbWFnZURlY29kZXI6OkdJRlF1ZXJ5IHF1ZXJ5LCB1bnNpZ25lZCBoYWx0QXRG
cmFtZSkKKy8vIFBhcnNlIGluY29taW5nIEdJRiBkYXRhIHN0cmVhbSBpbnRvIGludGVybmFsIGRh
dGEgc3RydWN0dXJlcy4KKy8vIFJldHVybiB0cnVlIGlmIHBhcnNpbmcgaGFzIHByb2dyZXNzZWQg
b3IgdGhlcmUgaXMgbm90IGVub3VnaCBkYXRhLgorLy8gUmV0dXJuIGZhbHNlIGlmIGEgZmF0YWwg
ZXJyb3IgaXMgZW5jb3VudGVyZWQuCitib29sIEdJRkltYWdlUmVhZGVyOjpwYXJzZShzaXplX3Qg
ZGF0YVBvc2l0aW9uLCBzaXplX3QgbGVuLCBib29sIHBhcnNlU2l6ZU9ubHkpCiB7CiAgICAgaWYg
KCFsZW4pIHsKICAgICAgICAgLy8gTm8gbmV3IGRhdGEgaGFzIGNvbWUgaW4gc2luY2UgdGhlIGxh
c3QgY2FsbCwganVzdCBpZ25vcmUgdGhpcyBjYWxsLgpAQCAtMzYyLDEyICszOTksMTMgQEAgYm9v
bCBHSUZJbWFnZVJlYWRlcjo6ZGVjb2RlSW50ZXJuYWwoc2l6ZV90IGRhdGFQb3NpdGlvbiwgc2l6
ZV90IGxlbiwgR0lGSW1hZ2VEZWMKICAgICB9CiAKICAgICBpZiAobGVuIDwgbV9ieXRlc1RvQ29u
c3VtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IC8vIFRoaXMgbG9vcCByZWFkcyBhcyBtYW55IGNvbXBvbmVudHMgZnJvbSB8bV9kYXRhfCBhcyBw
b3NzaWJsZS4KICAgICAvLyBBdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggaXRlcmF0aW9uLCBkYXRh
UG9zaXRpb24gd2lsbCBiZSBhZHZhbmNlZCBieSBtX2J5dGVzVG9Db25zdW1lIHRvCiAgICAgLy8g
cG9pbnQgdG8gdGhlIG5leHQgY29tcG9uZW50LiBsZW4gd2lsbCBiZSBkZWNyZW1lbnRlZCBhY2Nv
cmRpbmdseS4KICAgICB3aGlsZSAobGVuID49IG1fYnl0ZXNUb0NvbnN1bWUpIHsKKyAgICAgICAg
Y29uc3Qgc2l6ZV90IGN1cnJlbnRDb21wb25lbnRQb3NpdGlvbiA9IGRhdGFQb3NpdGlvbjsKICAg
ICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogY3VycmVudENvbXBvbmVudCA9IGRhdGEoZGF0YVBv
c2l0aW9uKTsKIAogICAgICAgICAvLyBNYXJrIHRoZSBjdXJyZW50IGNvbXBvbmVudCBhcyBjb25z
dW1lZC4gTm90ZSB0aGF0IGN1cnJlbnRDb21wb25lbnQgd2lsbCByZW1haW4gcG9pbnRlZCBhdCB0
aGlzCkBAIC0zNzcsMjAgKzQxNSwxNSBAQCBib29sIEdJRkltYWdlUmVhZGVyOjpkZWNvZGVJbnRl
cm5hbChzaXplX3QgZGF0YVBvc2l0aW9uLCBzaXplX3QgbGVuLCBHSUZJbWFnZURlYwogCiAgICAg
ICAgIHN3aXRjaCAobV9zdGF0ZSkgewogICAgICAgICBjYXNlIEdJRkxaVzoKKyAgICAgICAgICAg
IEFTU0VSVCghbV9mcmFtZXMuaXNFbXB0eSgpKTsKICAgICAgICAgICAgIC8vIG1fYnl0ZXNUb0Nv
bnN1bWUgaXMgdGhlIGN1cnJlbnQgY29tcG9uZW50IHNpemUgYmVjYXVzZSBpdCBoYXNuJ3QgYmVl
biB1cGRhdGVkLgotICAgICAgICAgICAgaWYgKCFkb0xaVyhjdXJyZW50Q29tcG9uZW50LCBtX2J5
dGVzVG9Db25zdW1lKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIElmIGRvTFpX
KCkgZW5jb3VudGVyZWQgYW4gZXJyb3IsIGl0IGhhcyBhbHJlYWR5IGNhbGxlZCBtX2NsaWVudC0+
c2V0RmFpbGVkKCkuCisgICAgICAgICAgICBtX2ZyYW1lcy5sYXN0KCktPmFkZEx6d0Jsb2NrKGN1
cnJlbnRDb21wb25lbnRQb3NpdGlvbiwgbV9ieXRlc1RvQ29uc3VtZSk7CiAgICAgICAgICAgICBH
RVROKDEsIEdJRlN1YkJsb2NrKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
R0lGTFpXU3RhcnQ6IHsKLSAgICAgICAgICAgIGlmIChxdWVyeSA9PSBHSUZJbWFnZURlY29kZXI6
OkdJRkZ1bGxRdWVyeSkgewotICAgICAgICAgICAgICAgIGludCBkYXRhc2l6ZSA9ICpjdXJyZW50
Q29tcG9uZW50OwotICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5kYXRhc2l6ZSA9IGRh
dGFzaXplOwotICAgICAgICAgICAgICAgIC8vIEluaXRpYWxpemUgTFpXIHBhcnNlci9kZWNvZGVy
LgotICAgICAgICAgICAgICAgIGlmICghbV9sendDb250ZXh0LnByZXBhcmVUb0RlY29kZShtX3Nj
cmVlbldpZHRoLCBkYXRhc2l6ZSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtX2NsaWVu
dCA/IG1fY2xpZW50LT5zZXRGYWlsZWQoKSA6IGZhbHNlOwotICAgICAgICAgICAgfQorICAgICAg
ICAgICAgQVNTRVJUKCFtX2ZyYW1lcy5pc0VtcHR5KCkpOworICAgICAgICAgICAgbV9mcmFtZXMu
bGFzdCgpLT5zZXREYXRhU2l6ZSgqY3VycmVudENvbXBvbmVudCk7CiAgICAgICAgICAgICBHRVRO
KDEsIEdJRlN1YkJsb2NrKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC00MDIs
NyArNDM1LDcgQEAgYm9vbCBHSUZJbWFnZVJlYWRlcjo6ZGVjb2RlSW50ZXJuYWwoc2l6ZV90IGRh
dGFQb3NpdGlvbiwgc2l6ZV90IGxlbiwgR0lGSW1hZ2VEZWMKICAgICAgICAgICAgIGVsc2UgaWYg
KCFzdHJuY21wKChjaGFyKiljdXJyZW50Q29tcG9uZW50LCAiR0lGODdhIiwgNikpCiAgICAgICAg
ICAgICAgICAgbV92ZXJzaW9uID0gODc7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG1fY2xpZW50ID8gbV9jbGllbnQtPnNldEZhaWxlZCgpIDogZmFsc2U7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgR0VUTig3LCBHSUZHbG9iYWxI
ZWFkZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTQxNSw2ICs0NDgsNyBA
QCBib29sIEdJRkltYWdlUmVhZGVyOjpkZWNvZGVJbnRlcm5hbChzaXplX3QgZGF0YVBvc2l0aW9u
LCBzaXplX3QgbGVuLCBHSUZJbWFnZURlYwogICAgICAgICAgICAgbV9zY3JlZW5IZWlnaHQgPSBH
RVRJTlQxNihjdXJyZW50Q29tcG9uZW50ICsgMik7CiAKICAgICAgICAgICAgIC8vIENBTExCQUNL
OiBJbmZvcm0gdGhlIGRlY29kZXJwbHVnaW4gb2Ygb3VyIHNpemUuCisgICAgICAgICAgICAvLyBO
b3RlOiBBIHN1YnNlcXVlbnQgZnJhbWUgbWlnaHQgaGF2ZSBkaW1lbnNpb25zIGxhcmdlciB0aGFu
IHRoZSAic2NyZWVuIiBkaW1lbnNpb25zLgogICAgICAgICAgICAgaWYgKG1fY2xpZW50ICYmICFt
X2NsaWVudC0+c2V0U2l6ZShtX3NjcmVlbldpZHRoLCBtX3NjcmVlbkhlaWdodCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC00NjgsNyArNTAyLDcgQEAgYm9vbCBHSUZJbWFn
ZVJlYWRlcjo6ZGVjb2RlSW50ZXJuYWwoc2l6ZV90IGRhdGFQb3NpdGlvbiwgc2l6ZV90IGxlbiwg
R0lGSW1hZ2VEZWMKICAgICAgICAgICAgIC8vIHVudGlsIHdlIGZpbmQgYW4gaW1hZ2Ugc2VwYXJh
dG9yLCBidXQgR0lGODlhIHNheXMgc3VjaAogICAgICAgICAgICAgLy8gYSBmaWxlIGlzIGNvcnJ1
cHQuIFdlIGZvbGxvdyBHSUY4OWEgYW5kIGJhaWwgb3V0LgogICAgICAgICAgICAgaWYgKCpjdXJy
ZW50Q29tcG9uZW50ICE9ICcsJykKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9jbGllbnQgPyBt
X2NsaWVudC0+c2V0RmFpbGVkKCkgOiBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAgICAgICAgIEdFVE4oOSwgR0lGSW1hZ2VIZWFkZXIpOwogICAgICAgICAgICAg
YnJlYWs7CkBAIC01MjgsMzAgKzU2MiwyMyBAQCBib29sIEdJRkltYWdlUmVhZGVyOjpkZWNvZGVJ
bnRlcm5hbChzaXplX3QgZGF0YVBvc2l0aW9uLCBzaXplX3QgbGVuLCBHSUZJbWFnZURlYwogICAg
ICAgICB9CiAKICAgICAgICAgY2FzZSBHSUZDb250cm9sRXh0ZW5zaW9uOiB7Ci0gICAgICAgICAg
ICBpZiAocXVlcnkgIT0gR0lGSW1hZ2VEZWNvZGVyOjpHSUZGcmFtZUNvdW50UXVlcnkpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoIW1fZnJhbWVDb250ZXh0KQotICAgICAgICAgICAgICAgICAgICBt
X2ZyYW1lQ29udGV4dCA9IG5ldyBHSUZGcmFtZUNvbnRleHQoKTsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgaWYgKG1fZnJhbWVDb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCpj
dXJyZW50Q29tcG9uZW50ICYgMHgxKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fZnJhbWVDb250
ZXh0LT50cGl4ZWwgPSBjdXJyZW50Q29tcG9uZW50WzNdOwotICAgICAgICAgICAgICAgICAgICBt
X2ZyYW1lQ29udGV4dC0+aXNUcmFuc3BhcmVudCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPmlzVHJhbnNwYXJlbnQg
PSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JpbmcgZ2Z4IGNvbnRyb2wgZXh0
ZW5zaW9uCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8vIE5PVEU6IFRoaXMg
cmVsaWVzIG9uIHRoZSB2YWx1ZXMgaW4gdGhlIEZyYW1lRGlzcG9zYWxNZXRob2QgZW51bQotICAg
ICAgICAgICAgICAgIC8vIG1hdGNoaW5nIHRob3NlIGluIHRoZSBHSUYgc3BlYyEKLSAgICAgICAg
ICAgICAgICBpbnQgZGlzcG9zYWxNZXRob2QgPSAoKCpjdXJyZW50Q29tcG9uZW50KSA+PiAyKSAm
IDB4NzsKLSAgICAgICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+ZGlzcG9zYWxNZXRob2QgPSAo
V2ViQ29yZTo6SW1hZ2VGcmFtZTo6RnJhbWVEaXNwb3NhbE1ldGhvZClkaXNwb3NhbE1ldGhvZDsK
LQotICAgICAgICAgICAgICAgIC8vIFNvbWUgc3BlY3Mgc2F5IDNyZCBiaXQgKHZhbHVlIDQpLCBv
dGhlciBzcGVjcyBzYXkgdmFsdWUgMwotICAgICAgICAgICAgICAgIC8vIExldCdzIGNob29zZSAz
ICh0aGUgbW9yZSBwb3B1bGFyKQotICAgICAgICAgICAgICAgIGlmIChkaXNwb3NhbE1ldGhvZCA9
PSA0KQotICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+ZGlzcG9zYWxNZXRob2Qg
PSBXZWJDb3JlOjpJbWFnZUZyYW1lOjpEaXNwb3NlT3ZlcndyaXRlUHJldmlvdXM7Ci0gICAgICAg
ICAgICAgICAgbV9mcmFtZUNvbnRleHQtPmRlbGF5VGltZSA9IEdFVElOVDE2KGN1cnJlbnRDb21w
b25lbnQgKyAxKSAqIDEwOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgYWRkRnJhbWVJZk5l
Y2Vzc2FyeSgpOworICAgICAgICAgICAgR0lGRnJhbWVDb250ZXh0KiBjdXJyZW50RnJhbWUgPSBt
X2ZyYW1lcy5sYXN0KCkuZ2V0KCk7CisgICAgICAgICAgICBjdXJyZW50RnJhbWUtPmlzVHJhbnNw
YXJlbnQgPSAqY3VycmVudENvbXBvbmVudCAmIDB4MTsKKyAgICAgICAgICAgIGlmIChjdXJyZW50
RnJhbWUtPmlzVHJhbnNwYXJlbnQpCisgICAgICAgICAgICAgICAgY3VycmVudEZyYW1lLT50cGl4
ZWwgPSBjdXJyZW50Q29tcG9uZW50WzNdOworCisgICAgICAgICAgICAvLyBXZSBpZ25vcmUgdGhl
ICJ1c2VyIGlucHV0IiBiaXQuCisKKyAgICAgICAgICAgIC8vIE5PVEU6IFRoaXMgcmVsaWVzIG9u
IHRoZSB2YWx1ZXMgaW4gdGhlIEZyYW1lRGlzcG9zYWxNZXRob2QgZW51bQorICAgICAgICAgICAg
Ly8gbWF0Y2hpbmcgdGhvc2UgaW4gdGhlIEdJRiBzcGVjIQorICAgICAgICAgICAgaW50IGRpc3Bv
c2FsTWV0aG9kID0gKCgqY3VycmVudENvbXBvbmVudCkgPj4gMikgJiAweDc7CisgICAgICAgICAg
ICBjdXJyZW50RnJhbWUtPmRpc3Bvc2FsTWV0aG9kID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SW1h
Z2VGcmFtZTo6RnJhbWVEaXNwb3NhbE1ldGhvZD4oZGlzcG9zYWxNZXRob2QpOworICAgICAgICAg
ICAgLy8gU29tZSBzcGVjcyBzYXkgdGhhdCBkaXNwb3NhbCBtZXRob2QgMyBpcyAib3ZlcndyaXRl
IHByZXZpb3VzIiwgb3RoZXJzIHRoYXQgc2V0dGluZworICAgICAgICAgICAgLy8gdGhlIHRoaXJk
IGJpdCBvZiB0aGUgZmllbGQgKGkuZS4gbWV0aG9kIDQpIGlzLiBXZSBtYXAgYm90aCB0byB0aGUg
c2FtZSB2YWx1ZS4KKyAgICAgICAgICAgIGlmIChkaXNwb3NhbE1ldGhvZCA9PSA0KQorICAgICAg
ICAgICAgICAgIGN1cnJlbnRGcmFtZS0+ZGlzcG9zYWxNZXRob2QgPSBXZWJDb3JlOjpJbWFnZUZy
YW1lOjpEaXNwb3NlT3ZlcndyaXRlUHJldmlvdXM7CisgICAgICAgICAgICBjdXJyZW50RnJhbWUt
PmRlbGF5VGltZSA9IEdFVElOVDE2KGN1cnJlbnRDb21wb25lbnQgKyAxKSAqIDEwOwogICAgICAg
ICAgICAgR0VUTigxLCBHSUZDb25zdW1lQmxvY2spOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KQEAgLTU4MSw4ICs2MDgsOSBAQCBib29sIEdJRkltYWdlUmVhZGVyOjpkZWNvZGVJbnRl
cm5hbChzaXplX3QgZGF0YVBvc2l0aW9uLCBzaXplX3QgbGVuLCBHSUZJbWFnZURlYwogCiAgICAg
ICAgIC8vIE5ldHNjYXBlLXNwZWNpZmljIEdJRiBleHRlbnNpb246IGFuaW1hdGlvbiBsb29waW5n
LgogICAgICAgICBjYXNlIEdJRk5ldHNjYXBlRXh0ZW5zaW9uQmxvY2s6IHsKKyAgICAgICAgICAg
IC8vIEdJRkNvbnN1bWVOZXRzY2FwZUV4dGVuc2lvbiBhbHdheXMgcmVhZHMgMyBieXRlcyBmcm9t
IHRoZSBzdHJlYW07IHdlIHNob3VsZCBhdCBsZWFzdCB3YWl0IGZvciB0aGlzIGFtb3VudC4KICAg
ICAgICAgICAgIGlmICgqY3VycmVudENvbXBvbmVudCkKLSAgICAgICAgICAgICAgICBHRVROKCpj
dXJyZW50Q29tcG9uZW50LCBHSUZDb25zdW1lTmV0c2NhcGVFeHRlbnNpb24pOworICAgICAgICAg
ICAgICAgIEdFVE4oc3RkOjptYXgoMywgc3RhdGljX2Nhc3Q8aW50PigqY3VycmVudENvbXBvbmVu
dCkpLCBHSUZDb25zdW1lTmV0c2NhcGVFeHRlbnNpb24pOwogICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgIEdFVE4oMSwgR0lGSW1hZ2VTdGFydCk7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTYxMCw3ICs2MzgsNyBAQCBib29sIEdJRkltYWdlUmVhZGVyOjpkZWNvZGVJbnRlcm5hbChz
aXplX3QgZGF0YVBvc2l0aW9uLCBzaXplX3QgbGVuLCBHSUZJbWFnZURlYwogICAgICAgICAgICAg
ICAgIEdFVE4oMSwgR0lGTmV0c2NhcGVFeHRlbnNpb25CbG9jayk7CiAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgIC8vIDAsMy03IGFyZSB5ZXQgdG8gYmUgZGVmaW5lZCBuZXRz
Y2FwZSBleHRlbnNpb24gY29kZXMKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9jbGllbnQgPyBt
X2NsaWVudC0+c2V0RmFpbGVkKCkgOiBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNjMw
LDcgKzY1OCw3IEBAIGJvb2wgR0lGSW1hZ2VSZWFkZXI6OmRlY29kZUludGVybmFsKHNpemVfdCBk
YXRhUG9zaXRpb24sIHNpemVfdCBsZW4sIEdJRkltYWdlRGVjCiAgICAgICAgICAgICAgKiBzaXpl
IGhhcyB3ZWlyZCB3aWR0aCBvciBoZWlnaHQuICBXZSBhc3N1bWUgdGhhdCBHSUY4N2EKICAgICAg
ICAgICAgICAqIGZpbGVzIGRvbid0IGNvbnRhaW4gYW5pbWF0aW9ucy4KICAgICAgICAgICAgICAq
LwotICAgICAgICAgICAgaWYgKCFtX2ltYWdlc0RlY29kZWQKKyAgICAgICAgICAgIGlmIChjdXJy
ZW50RnJhbWVJc0ZpcnN0RnJhbWUoKQogICAgICAgICAgICAgICAgICYmICgobV9zY3JlZW5IZWln
aHQgPCBoZWlnaHQpIHx8IChtX3NjcmVlbldpZHRoIDwgd2lkdGgpIHx8IChtX3ZlcnNpb24gPT0g
ODcpKSkgewogICAgICAgICAgICAgICAgIG1fc2NyZWVuSGVpZ2h0ID0gaGVpZ2h0OwogICAgICAg
ICAgICAgICAgIG1fc2NyZWVuV2lkdGggPSB3aWR0aDsKQEAgLTY0NywxMCArNjc1LDEwIEBAIGJv
b2wgR0lGSW1hZ2VSZWFkZXI6OmRlY29kZUludGVybmFsKHNpemVfdCBkYXRhUG9zaXRpb24sIHNp
emVfdCBsZW4sIEdJRkltYWdlRGVjCiAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gbV9zY3JlZW5I
ZWlnaHQ7CiAgICAgICAgICAgICAgICAgd2lkdGggPSBtX3NjcmVlbldpZHRoOwogICAgICAgICAg
ICAgICAgIGlmICghaGVpZ2h0IHx8ICF3aWR0aCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG1fY2xpZW50ID8gbV9jbGllbnQtPnNldEZhaWxlZCgpIDogZmFsc2U7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKHF1
ZXJ5ID09IEdJRkltYWdlRGVjb2Rlcjo6R0lGU2l6ZVF1ZXJ5IHx8IGhhbHRBdEZyYW1lID09IG1f
aW1hZ2VzRGVjb2RlZCkgeworICAgICAgICAgICAgaWYgKHBhcnNlU2l6ZU9ubHkpIHsKICAgICAg
ICAgICAgICAgICAvLyBUaGUgZGVjb2RlciBuZWVkcyB0byBzdG9wLiBIYW5kIGJhY2sgdGhlIG51
bWJlciBvZiBieXRlcyB3ZSBjb25zdW1lZCBmcm9tCiAgICAgICAgICAgICAgICAgLy8gYnVmZmVy
IG1pbnVzIDkgKHRoZSBhbW91bnQgd2UgY29uc3VtZWQgdG8gcmVhZCB0aGUgaGVhZGVyKS4KICAg
ICAgICAgICAgICAgICBzZXRSZW1haW5pbmdCeXRlcyhsZW4gKyA5KTsKQEAgLTY1OCw2MiArNjg2
LDM4IEBAIGJvb2wgR0lGSW1hZ2VSZWFkZXI6OmRlY29kZUludGVybmFsKHNpemVfdCBkYXRhUG9z
aXRpb24sIHNpemVfdCBsZW4sIEdJRkltYWdlRGVjCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIG1faW1hZ2VzQ291bnQgPSBtX2ltYWdl
c0RlY29kZWQgKyAxOwotCi0gICAgICAgICAgICBpZiAocXVlcnkgPT0gR0lGSW1hZ2VEZWNvZGVy
OjpHSUZGdWxsUXVlcnkgJiYgIW1fZnJhbWVDb250ZXh0KQotICAgICAgICAgICAgICAgIG1fZnJh
bWVDb250ZXh0ID0gbmV3IEdJRkZyYW1lQ29udGV4dCgpOwotCi0gICAgICAgICAgICBpZiAobV9m
cmFtZUNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+eE9mZnNldCA9
IHhPZmZzZXQ7Ci0gICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPnlPZmZzZXQgPSB5T2Zm
c2V0OwotICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5oZWlnaHQgPSBoZWlnaHQ7Ci0g
ICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPndpZHRoID0gd2lkdGg7Ci0KLSAgICAgICAg
ICAgICAgICAvKiBUaGlzIGNhc2Ugd2lsbCBuZXZlciBiZSB0YWtlbiBpZiB0aGlzIGlzIHRoZSBm
aXJzdCBpbWFnZSAqLwotICAgICAgICAgICAgICAgIC8qIGJlaW5nIGRlY29kZWQuIElmIGFueSBv
ZiB0aGUgbGF0ZXIgaW1hZ2VzIGFyZSBsYXJnZXIgICAgICovCi0gICAgICAgICAgICAgICAgLyog
dGhhbiB0aGUgc2NyZWVuIHNpemUsIHdlIG5lZWQgdG8gcmVhbGxvY2F0ZSBidWZmZXJzLiAgICAg
Ki8KLSAgICAgICAgICAgICAgICBtX3NjcmVlbldpZHRoID0gc3RkOjptYXgobV9zY3JlZW5XaWR0
aCwgd2lkdGgpOwotCi0gICAgICAgICAgICAgICAgaWYgKG1fc2NyZWVuSGVpZ2h0IDwgaGVpZ2h0
KQotICAgICAgICAgICAgICAgICAgICBtX3NjcmVlbkhlaWdodCA9IGhlaWdodDsKLQotICAgICAg
ICAgICAgICAgIGlmIChjdXJyZW50Q29tcG9uZW50WzhdICYgMHg0MCkgewotICAgICAgICAgICAg
ICAgICAgICBtX2ZyYW1lQ29udGV4dC0+aW50ZXJsYWNlZCA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgICAgIG1fZnJhbWVDb250ZXh0LT5pcGFzcyA9IDE7Ci0gICAgICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPmludGVybGFjZWQgPSBmYWxz
ZTsKLSAgICAgICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPmlwYXNzID0gMDsKLSAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoIW1faW1hZ2VzRGVjb2RlZCkKLSAg
ICAgICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPnByb2dyZXNzaXZlRGlzcGxheSA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIE92ZXJs
YXlpbmcgaW50ZXJsYWNlZCwgdHJhbnNwYXJlbnQgR0lGcyBvdmVyCi0gICAgICAgICAgICAgICAg
ICAgIC8vIGV4aXN0aW5nIGltYWdlIGRhdGEgdXNpbmcgdGhlIEhhZWJlcmxpIGRpc3BsYXkgaGFj
awotICAgICAgICAgICAgICAgICAgICAvLyByZXF1aXJlcyBzYXZpbmcgdGhlIHVuZGVybHlpbmcg
aW1hZ2UgaW4gb3JkZXIgdG8KLSAgICAgICAgICAgICAgICAgICAgLy8gYXZvaWQgamFnZ2llcyBh
dCB0aGUgdHJhbnNwYXJlbmN5IGVkZ2VzLiBXZSBhcmUKLSAgICAgICAgICAgICAgICAgICAgLy8g
dW5wcmVwYXJlZCB0byBkZWFsIHdpdGggdGhhdCwgc28gZG9uJ3QgZGlzcGxheSBzdWNoCi0gICAg
ICAgICAgICAgICAgICAgIC8vIGltYWdlcyBwcm9ncmVzc2l2ZWx5Ci0gICAgICAgICAgICAgICAg
ICAgIG1fZnJhbWVDb250ZXh0LT5wcm9ncmVzc2l2ZURpc3BsYXkgPSBmYWxzZTsKLSAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBDbGVhciBzdGF0ZSBmcm9tIGxhc3QgaW1h
Z2UuCi0gICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPmlyb3cgPSAwOwotICAgICAgICAg
ICAgICAgIG1fZnJhbWVDb250ZXh0LT5yb3dzUmVtYWluaW5nID0gbV9mcmFtZUNvbnRleHQtPmhl
aWdodDsKLQotICAgICAgICAgICAgICAgIC8vIGJpdHMgcGVyIHBpeGVsIGlzIGN1cnJlbnRDb21w
b25lbnRbOF0mMHgwNwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBoYXMgYSBsb2Nh
bCBjb2xvcm1hcD8KLSAgICAgICAgICAgIGlmIChjdXJyZW50Q29tcG9uZW50WzhdICYgMHg4MCkg
eworICAgICAgICAgICAgYWRkRnJhbWVJZk5lY2Vzc2FyeSgpOworICAgICAgICAgICAgR0lGRnJh
bWVDb250ZXh0KiBjdXJyZW50RnJhbWUgPSBtX2ZyYW1lcy5sYXN0KCkuZ2V0KCk7CisKKyAgICAg
ICAgICAgIGN1cnJlbnRGcmFtZS0+c2V0SGVhZGVyRGVmaW5lZCgpOworICAgICAgICAgICAgY3Vy
cmVudEZyYW1lLT54T2Zmc2V0ID0geE9mZnNldDsKKyAgICAgICAgICAgIGN1cnJlbnRGcmFtZS0+
eU9mZnNldCA9IHlPZmZzZXQ7CisgICAgICAgICAgICBjdXJyZW50RnJhbWUtPmhlaWdodCA9IGhl
aWdodDsKKyAgICAgICAgICAgIGN1cnJlbnRGcmFtZS0+d2lkdGggPSB3aWR0aDsKKyAgICAgICAg
ICAgIG1fc2NyZWVuV2lkdGggPSBzdGQ6Om1heChtX3NjcmVlbldpZHRoLCB3aWR0aCk7CisgICAg
ICAgICAgICBtX3NjcmVlbkhlaWdodCA9IHN0ZDo6bWF4KG1fc2NyZWVuSGVpZ2h0LCBoZWlnaHQp
OworICAgICAgICAgICAgY3VycmVudEZyYW1lLT5pbnRlcmxhY2VkID0gY3VycmVudENvbXBvbmVu
dFs4XSAmIDB4NDA7CisKKyAgICAgICAgICAgIC8vIE92ZXJsYXlpbmcgaW50ZXJsYWNlZCwgdHJh
bnNwYXJlbnQgR0lGcyBvdmVyCisgICAgICAgICAgICAvLyBleGlzdGluZyBpbWFnZSBkYXRhIHVz
aW5nIHRoZSBIYWViZXJsaSBkaXNwbGF5IGhhY2sKKyAgICAgICAgICAgIC8vIHJlcXVpcmVzIHNh
dmluZyB0aGUgdW5kZXJseWluZyBpbWFnZSBpbiBvcmRlciB0bworICAgICAgICAgICAgLy8gYXZv
aWQgamFnZ2llcyBhdCB0aGUgdHJhbnNwYXJlbmN5IGVkZ2VzLiBXZSBhcmUKKyAgICAgICAgICAg
IC8vIHVucHJlcGFyZWQgdG8gZGVhbCB3aXRoIHRoYXQsIHNvIGRvbid0IGRpc3BsYXkgc3VjaAor
ICAgICAgICAgICAgLy8gaW1hZ2VzIHByb2dyZXNzaXZlbHkuIFdoaWNoIG1lYW5zIG9ubHkgdGhl
IGZpcnN0CisgICAgICAgICAgICAvLyBmcmFtZSBjYW4gYmUgcHJvZ3Jlc3NpdmVseSBkaXNwbGF5
ZWQuCisgICAgICAgICAgICAvLyBGSVhNRTogSXQgaXMgcG9zc2libGUgdGhhdCBhIG5vbi10cmFu
c3BhcmVudCBmcmFtZQorICAgICAgICAgICAgLy8gY2FuIGJlIGludGVybGFjZWQgYW5kIHByb2dy
ZXNzaXZlbHkgZGlzcGxheWVkLgorICAgICAgICAgICAgY3VycmVudEZyYW1lLT5wcm9ncmVzc2l2
ZURpc3BsYXkgPSBjdXJyZW50RnJhbWVJc0ZpcnN0RnJhbWUoKTsKKworICAgICAgICAgICAgY29u
c3QgYm9vbCBpc0xvY2FsQ29sb3JtYXBEZWZpbmVkID0gY3VycmVudENvbXBvbmVudFs4XSAmIDB4
ODA7CisgICAgICAgICAgICBpZiAoaXNMb2NhbENvbG9ybWFwRGVmaW5lZCkgeworICAgICAgICAg
ICAgICAgIC8vIFRoZSB0aHJlZSBsb3ctb3JkZXIgYml0cyBvZiBjdXJyZW50Q29tcG9uZW50Wzhd
IHNwZWNpZnkgdGhlIGJpdHMgcGVyIHBpeGVsLgogICAgICAgICAgICAgICAgIGludCBudW1Db2xv
cnMgPSAyIDw8IChjdXJyZW50Q29tcG9uZW50WzhdICYgMHg3KTsKICAgICAgICAgICAgICAgICBj
b25zdCBzaXplX3QgbG9jYWxDb2xvcm1hcEJ5dGVzID0gMyAqIG51bUNvbG9yczsKIAogICAgICAg
ICAgICAgICAgIC8vIFN3aXRjaCB0byB0aGUgbmV3IGxvY2FsIHBhbGV0dGUgYWZ0ZXIgaXQgbG9h
ZHMKLSAgICAgICAgICAgICAgICBpZiAobV9mcmFtZUNvbnRleHQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgbV9mcmFtZUNvbnRleHQtPmxvY2FsQ29sb3JtYXBQb3NpdGlvbiA9IGRhdGFQb3NpdGlv
bjsKLSAgICAgICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPmxvY2FsQ29sb3JtYXBTaXpl
ID0gbnVtQ29sb3JzOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjdXJyZW50
RnJhbWUtPmxvY2FsQ29sb3JtYXBQb3NpdGlvbiA9IGRhdGFQb3NpdGlvbjsKKyAgICAgICAgICAg
ICAgICBjdXJyZW50RnJhbWUtPmxvY2FsQ29sb3JtYXBTaXplID0gbnVtQ29sb3JzOwogCiAgICAg
ICAgICAgICAgICAgaWYgKGxlbiA8IGxvY2FsQ29sb3JtYXBCeXRlcykgewogICAgICAgICAgICAg
ICAgICAgICAvLyBXYWl0IHVudGlsIHdlIGhhdmUgZW5vdWdoIGJ5dGVzIHRvIGNvbnN1bWUgdGhl
IGVudGlyZSBjb2xvcm1hcCBhdCBvbmNlLgpAQCAtNzIxLDcwICs3MjUsNTMgQEAgYm9vbCBHSUZJ
bWFnZVJlYWRlcjo6ZGVjb2RlSW50ZXJuYWwoc2l6ZV90IGRhdGFQb3NpdGlvbiwgc2l6ZV90IGxl
biwgR0lGSW1hZ2VEZWMKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKG1fZnJhbWVDb250ZXh0KQotICAgICAgICAgICAg
ICAgICAgICBtX2ZyYW1lQ29udGV4dC0+aXNMb2NhbENvbG9ybWFwRGVmaW5lZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgY3VycmVudEZyYW1lLT5pc0xvY2FsQ29sb3JtYXBEZWZpbmVkID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICBkYXRhUG9zaXRpb24gKz0gbG9jYWxDb2xvcm1hcEJ5dGVzOwog
ICAgICAgICAgICAgICAgIGxlbiAtPSBsb2NhbENvbG9ybWFwQnl0ZXM7Ci0gICAgICAgICAgICB9
IGVsc2UgaWYgKG1fZnJhbWVDb250ZXh0KSB7CisgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgIC8vIFN3aXRjaCBiYWNrIHRvIHRoZSBnbG9iYWwgcGFsZXR0ZQotICAgICAgICAg
ICAgICAgIG1fZnJhbWVDb250ZXh0LT5pc0xvY2FsQ29sb3JtYXBEZWZpbmVkID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgY3VycmVudEZyYW1lLT5pc0xvY2FsQ29sb3JtYXBEZWZpbmVkID0gZmFs
c2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBHRVROKDEsIEdJRkxaV1N0YXJ0KTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBHSUZJbWFnZUNvbG9y
bWFwOiB7Ci0gICAgICAgICAgICBpZiAobV9mcmFtZUNvbnRleHQpCi0gICAgICAgICAgICAgICAg
bV9mcmFtZUNvbnRleHQtPmlzTG9jYWxDb2xvcm1hcERlZmluZWQgPSB0cnVlOworICAgICAgICAg
ICAgQVNTRVJUKCFtX2ZyYW1lcy5pc0VtcHR5KCkpOworICAgICAgICAgICAgbV9mcmFtZXMubGFz
dCgpLT5pc0xvY2FsQ29sb3JtYXBEZWZpbmVkID0gdHJ1ZTsKICAgICAgICAgICAgIEdFVE4oMSwg
R0lGTFpXU3RhcnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBj
YXNlIEdJRlN1YkJsb2NrOiB7Ci0gICAgICAgICAgICAvLyBTdGlsbCB3b3JraW5nIG9uIHRoZSBz
YW1lIGltYWdlOiBQcm9jZXNzIG5leHQgTFpXIGRhdGEgYmxvY2suCiAgICAgICAgICAgICBjb25z
dCBzaXplX3QgYnl0ZXNJbkJsb2NrID0gKmN1cnJlbnRDb21wb25lbnQ7Ci0gICAgICAgICAgICBp
ZiAoYnl0ZXNJbkJsb2NrKSB7Ci0gICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZXJlIGFy
ZSBzdGlsbCByb3dzIGxlZnQuIElmIHRoZSBHSUYgZGF0YQotICAgICAgICAgICAgICAgIC8vIGlz
IGNvcnJ1cHQsIHdlIG1heSBub3QgZ2V0IGFuIGV4cGxpY2l0IHRlcm1pbmF0b3IuCi0gICAgICAg
ICAgICAgICAgaWYgKG1fZnJhbWVDb250ZXh0ICYmICFtX2ZyYW1lQ29udGV4dC0+cm93c1JlbWFp
bmluZykgewotICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGFuIGlsbGVnYWwgR0lGLCBi
dXQgd2UgcmVtYWluIHRvbGVyYW50LgotICAgICAgICAgICAgICAgICAgICBHRVROKDEsIEdJRlN1
YkJsb2NrKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYnl0ZXNJbkJsb2Nr
KQogICAgICAgICAgICAgICAgIEdFVE4oYnl0ZXNJbkJsb2NrLCBHSUZMWlcpOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBTZWUgaWYgdGhlcmUgYXJlIGFueSBtb3Jl
IGltYWdlcyBpbiB0aGlzIHNlcXVlbmNlLgotICAgICAgICAgICAgICAgIG1faW1hZ2VzRGVjb2Rl
ZCsrOwotCi0gICAgICAgICAgICAgICAgLy8gQ0FMTEJBQ0s6IFRoZSBmcmFtZSBpcyBub3cgY29t
cGxldGUuCi0gICAgICAgICAgICAgICAgaWYgKG1fY2xpZW50ICYmIG1fZnJhbWVDb250ZXh0ICYm
ICFtX2NsaWVudC0+ZnJhbWVDb21wbGV0ZShtX2ltYWdlc0RlY29kZWQgLSAxLCBtX2ZyYW1lQ29u
dGV4dC0+ZGVsYXlUaW1lLCBtX2ZyYW1lQ29udGV4dC0+ZGlzcG9zYWxNZXRob2QpKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGZyYW1lQ29tcGxldGUoKSBoYXMgYWxyZWFk
eSBjYWxsZWQgbV9jbGllbnQtPnNldEZhaWxlZCgpLgotCi0gICAgICAgICAgICAgICAgLy8gQ2xl
YXIgc3RhdGUgZnJvbSB0aGlzIGltYWdlCi0gICAgICAgICAgICAgICAgaWYgKG1fZnJhbWVDb250
ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5pc0xvY2FsQ29sb3Jt
YXBEZWZpbmVkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5p
c1RyYW5zcGFyZW50ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotCisgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICAvLyBGaW5pc2hlZCBwYXJzaW5nIG9uZSBmcmFtZTsgUHJv
Y2VzcyBuZXh0IGZyYW1lLgorICAgICAgICAgICAgICAgIEFTU0VSVCghbV9mcmFtZXMuaXNFbXB0
eSgpKTsKKyAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgc29tZSBicm9rZW4gR0lGIGZpbGVz
IGRvIG5vdCBoYXZlIGVub3VnaCBMWlcgYmxvY2tzIHRvIGZ1bGx5CisgICAgICAgICAgICAgICAg
Ly8gZGVjb2RlIGFsbCByb3dzIGJ1dCB3ZSB0cmVhdCBpdCBhcyBmcmFtZSBjb21wbGV0ZS4KKyAg
ICAgICAgICAgICAgICBtX2ZyYW1lcy5sYXN0KCktPnNldENvbXBsZXRlKCk7CiAgICAgICAgICAg
ICAgICAgR0VUTigxLCBHSUZJbWFnZVN0YXJ0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBHSUZEb25lOiB7Ci0gICAgICAgICAg
ICAvLyBXaGVuIHRoZSBHSUYgaXMgZG9uZSwgd2UgY2FuIHN0b3AuCi0gICAgICAgICAgICBpZiAo
bV9jbGllbnQpCi0gICAgICAgICAgICAgICAgbV9jbGllbnQtPmdpZkNvbXBsZXRlKCk7CisgICAg
ICAgICAgICBtX3BhcnNlQ29tcGxldGVkID0gdHJ1ZTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIC8vIFdlIHNob3Vs
ZG4ndCBldmVyIGdldCBoZXJlLgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBzZXRSZW1haW5pbmdCeXRlcyhsZW4p
OwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBHSUZJbWFn
ZVJlYWRlcjo6c2V0UmVtYWluaW5nQnl0ZXMoc2l6ZV90IHJlbWFpbmluZ0J5dGVzKQpAQCAtNzkz
LDIyICs3ODAsMzMgQEAgdm9pZCBHSUZJbWFnZVJlYWRlcjo6c2V0UmVtYWluaW5nQnl0ZXMoc2l6
ZV90IHJlbWFpbmluZ0J5dGVzKQogICAgIG1fYnl0ZXNSZWFkID0gbV9kYXRhLT5zaXplKCkgLSBy
ZW1haW5pbmdCeXRlczsKIH0KIAotYm9vbCBHSUZMWldDb250ZXh0OjpwcmVwYXJlVG9EZWNvZGUo
dW5zaWduZWQgcm93V2lkdGgsIGludCBkYXRhc2l6ZSkKK3ZvaWQgR0lGSW1hZ2VSZWFkZXI6OmFk
ZEZyYW1lSWZOZWNlc3NhcnkoKQogeworICAgIGlmIChtX2ZyYW1lcy5pc0VtcHR5KCkgfHwgbV9m
cmFtZXMubGFzdCgpLT5pc0NvbXBsZXRlKCkpCisgICAgICAgIG1fZnJhbWVzLmFwcGVuZChhZG9w
dFB0cihuZXcgR0lGRnJhbWVDb250ZXh0KG1fZnJhbWVzLnNpemUoKSkpKTsKK30KKworLy8gRklY
TUU6IE1vdmUgdGhpcyBtZXRob2QgdG8gY2xvc2UgdG8gZG9MWlcoKS4KK2Jvb2wgR0lGTFpXQ29u
dGV4dDo6cHJlcGFyZVRvRGVjb2RlKCkKK3sKKyAgICBBU1NFUlQobV9mcmFtZUNvbnRleHQtPmlz
RGF0YVNpemVEZWZpbmVkKCkgJiYgbV9mcmFtZUNvbnRleHQtPmlzSGVhZGVyRGVmaW5lZCgpKTsK
KwogICAgIC8vIFNpbmNlIHdlIHVzZSBhIGNvZGVzaXplIG9mIDEgbW9yZSB0aGFuIHRoZSBkYXRh
c2l6ZSwgd2UgbmVlZCB0byBlbnN1cmUKICAgICAvLyB0aGF0IG91ciBkYXRhc2l6ZSBpcyBzdHJp
Y3RseSBsZXNzIHRoYW4gdGhlIE1BWF9MWldfQklUUyB2YWx1ZSAoMTIpLgogICAgIC8vIFRoaXMg
c2V0cyB0aGUgbGFyZ2VzdCBwb3NzaWJsZSBjb2RlbWFzayBjb3JyZWN0bHkgYXQgNDA5NS4KLSAg
ICBpZiAoZGF0YXNpemUgPj0gTUFYX0xaV19CSVRTKQorICAgIGlmIChtX2ZyYW1lQ29udGV4dC0+
ZGF0YXNpemUgPj0gTUFYX0xaV19CSVRTKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY2xl
YXJDb2RlID0gMSA8PCBkYXRhc2l6ZTsKKyAgICBjbGVhckNvZGUgPSAxIDw8IG1fZnJhbWVDb250
ZXh0LT5kYXRhc2l6ZTsKICAgICBpZiAoY2xlYXJDb2RlID49IE1BWF9CWVRFUykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgYXZhaWwgPSBjbGVhckNvZGUgKyAyOwogICAgIG9sZGNvZGUg
PSAtMTsKLSAgICBjb2Rlc2l6ZSA9IGRhdGFzaXplICsgMTsKKyAgICBjb2Rlc2l6ZSA9IG1fZnJh
bWVDb250ZXh0LT5kYXRhc2l6ZSArIDE7CiAgICAgY29kZW1hc2sgPSAoMSA8PCBjb2Rlc2l6ZSkg
LSAxOwogICAgIGRhdHVtID0gYml0cyA9IDA7CisgICAgaXBhc3MgPSBtX2ZyYW1lQ29udGV4dC0+
aW50ZXJsYWNlZCA/IDEgOiAwOworICAgIGlyb3cgPSAwOwogCiAgICAgLy8gSW5pdGlhbGl6ZSB0
aGUgdGFibGVzIGxhemlseSwgdGhpcyBhbGxvd3MgZnJhbWUgY291bnQgcXVlcnkgdG8gdXNlIGxl
c3MgbWVtb3J5LgogICAgIHN1ZmZpeC5yZXNpemUoTUFYX0JZVEVTKTsKQEAgLTgxNiw4ICs4MTQs
OSBAQCBib29sIEdJRkxaV0NvbnRleHQ6OnByZXBhcmVUb0RlY29kZSh1bnNpZ25lZCByb3dXaWR0
aCwgaW50IGRhdGFzaXplKQogICAgIHByZWZpeC5yZXNpemUoTUFYX0JZVEVTKTsKIAogICAgIC8v
IEluaXRpYWxpemUgb3V0cHV0IHJvdyBidWZmZXIuCi0gICAgcm93QnVmZmVyLnJlc2l6ZShyb3dX
aWR0aCk7CisgICAgcm93QnVmZmVyLnJlc2l6ZShtX2ZyYW1lQ29udGV4dC0+d2lkdGgpOwogICAg
IHJvd1Bvc2l0aW9uID0gMDsKKyAgICByb3dzUmVtYWluaW5nID0gbV9mcmFtZUNvbnRleHQtPmhl
aWdodDsKIAogICAgIC8vIENsZWFyaW5nIHRoZSB3aG9sZSBzdWZmaXggdGFibGUgbGV0cyB1cyBi
ZSBtb3JlIHRvbGVyYW50IG9mIGJhZCBkYXRhLgogICAgIHN1ZmZpeC5maWxsKDApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdl
UmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VSZWFkZXIuaAppbmRleCBhZTJhOGJiMjFjZDgzMzExNmE5ZDE3ODY4ZmFmODczOWJiZGY5
M2ZjLi43NWYwNjdiNjAwNGM0ZDhjMzlkMTQzNzJlOWNiMThjOTIwOWQ2NTJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VSZWFkZXIuaApAQCAtNDIsNiArNDIsOCBAQAogLy8gc28gd2Ugd2lsbCB0b28uCiAjaW5j
bHVkZSAiR0lGSW1hZ2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5j
bHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiAjZGVmaW5lIE1BWF9MWldfQklUUyAgICAgICAgICAxMgpAQCAt
NzUsMTYgKzc3LDgxIEBAIGVudW0gR0lGU3RhdGUgewogICAgIEdJRkNvbnN1bWVDb21tZW50CiB9
OwogCi0vLyBGcmFtZSBvdXRwdXQgc3RhdGUgbWFjaGluZS4KLXN0cnVjdCBHSUZGcmFtZUNvbnRl
eHQgeworc3RydWN0IEdJRkZyYW1lQ29udGV4dDsKKworLy8gTFpXIGRlY29kZXIgc3RhdGUgbWFj
aGluZS4KK2NsYXNzIEdJRkxaV0NvbnRleHQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIGludCBkYXRhc2l6ZTsKKyAgICBHSUZMWldDb250ZXh0KFdlYkNvcmU6
OkdJRkltYWdlRGVjb2RlciogY2xpZW50LCBjb25zdCBHSUZGcmFtZUNvbnRleHQqIGZyYW1lQ29u
dGV4dCkKKyAgICAgICAgOiBzdGFja3AoMCkKKyAgICAgICAgLCBjb2Rlc2l6ZSgwKQorICAgICAg
ICAsIGNvZGVtYXNrKDApCisgICAgICAgICwgY2xlYXJDb2RlKDApCisgICAgICAgICwgYXZhaWwo
MCkKKyAgICAgICAgLCBvbGRjb2RlKDApCisgICAgICAgICwgZmlyc3RjaGFyKDApCisgICAgICAg
ICwgYml0cygwKQorICAgICAgICAsIGRhdHVtKDApCisgICAgICAgICwgaXBhc3MoMCkKKyAgICAg
ICAgLCBpcm93KDApCisgICAgICAgICwgcm93UG9zaXRpb24oMCkKKyAgICAgICAgLCByb3dzUmVt
YWluaW5nKDApCisgICAgICAgICwgbV9jbGllbnQoY2xpZW50KQorICAgICAgICAsIG1fZnJhbWVD
b250ZXh0KGZyYW1lQ29udGV4dCkKKyAgICB7IH0KKworICAgIGJvb2wgcHJlcGFyZVRvRGVjb2Rl
KCk7CisgICAgYm9vbCBvdXRwdXRSb3coKTsKKyAgICBib29sIGRvTFpXKGNvbnN0IHVuc2lnbmVk
IGNoYXIqIGJsb2NrLCBzaXplX3QgYnl0ZXNJbkJsb2NrKTsKKyAgICBib29sIGhhc1JlbWFpbmlu
Z1Jvd3MoKSB7IHJldHVybiByb3dzUmVtYWluaW5nOyB9CisKK3ByaXZhdGU6CisgICAgLy8gTFpX
IGRlY29kaW5nIHN0YXRlcyBhbmQgb3V0cHV0IHN0YXRlcy4KKyAgICBzaXplX3Qgc3RhY2twOyAv
LyBDdXJyZW50IHN0YWNrIHBvaW50ZXIuCisgICAgaW50IGNvZGVzaXplOworICAgIGludCBjb2Rl
bWFzazsKKyAgICBpbnQgY2xlYXJDb2RlOyAvLyBDb2Rld29yZCB1c2VkIHRvIHRyaWdnZXIgZGlj
dGlvbmFyeSByZXNldC4KKyAgICBpbnQgYXZhaWw7IC8vIEluZGV4IG9mIG5leHQgYXZhaWxhYmxl
IHNsb3QgaW4gZGljdGlvbmFyeS4KKyAgICBpbnQgb2xkY29kZTsKKyAgICB1bnNpZ25lZCBjaGFy
IGZpcnN0Y2hhcjsKKyAgICBpbnQgYml0czsgLy8gTnVtYmVyIG9mIHVucmVhZCBiaXRzIGluICJk
YXR1bSIuCisgICAgaW50IGRhdHVtOyAvLyAzMi1iaXQgaW5wdXQgYnVmZmVyLgogICAgIGludCBp
cGFzczsgLy8gSW50ZXJsYWNlIHBhc3M7IFJhbmdlcyAxLTQgaWYgaW50ZXJsYWNlZC4KLSAgICBz
aXplX3Qgcm93c1JlbWFpbmluZzsgLy8gUm93cyByZW1haW5pbmcgdG8gYmUgb3V0cHV0LgogICAg
IHNpemVfdCBpcm93OyAvLyBDdXJyZW50IG91dHB1dCByb3csIHN0YXJ0aW5nIGF0IHplcm8uCisg
ICAgc2l6ZV90IHJvd1Bvc2l0aW9uOworICAgIHNpemVfdCByb3dzUmVtYWluaW5nOyAvLyBSb3dz
IHJlbWFpbmluZyB0byBiZSBvdXRwdXQuCisKKyAgICBWZWN0b3I8dW5zaWduZWQgc2hvcnQ+IHBy
ZWZpeDsKKyAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gc3VmZml4OworICAgIFZlY3Rvcjx1bnNp
Z25lZCBjaGFyPiBzdGFjazsKKyAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gcm93QnVmZmVyOyAv
LyBTaW5nbGUgc2NhbmxpbmUgdGVtcG9yYXJ5IGJ1ZmZlci4KKworICAgIC8vIEluaXRpYWxpemVk
IGR1cmluZyBjb25zdHJ1Y3Rpb24gYW5kIHJlYWQtb25seS4KKyAgICBXZWJDb3JlOjpHSUZJbWFn
ZURlY29kZXIqIG1fY2xpZW50OworICAgIGNvbnN0IEdJRkZyYW1lQ29udGV4dCogbV9mcmFtZUNv
bnRleHQ7Cit9OwogCi0gICAgLy8gUGFyYW1ldGVycyBmb3IgaW1hZ2UgZnJhbWUgY3VycmVudGx5
IGJlaW5nIGRlY29kZWQuCisvLyBEYXRhIHN0cnVjdHVyZSBmb3Igb25lIExaVyBibG9jay4KK3N0
cnVjdCBHSUZMWldCbG9jayB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgR0lGTFpXQmxvY2soc2l6ZV90IHBvc2l0aW9uLCBzaXplX3Qgc2l6ZSkKKyAgICAgICAg
OiBibG9ja1Bvc2l0aW9uKHBvc2l0aW9uKQorICAgICAgICAsIGJsb2NrU2l6ZShzaXplKQorICAg
IHsKKyAgICB9CisKKyAgICBzaXplX3QgYmxvY2tQb3NpdGlvbjsKKyAgICBzaXplX3QgYmxvY2tT
aXplOworfTsKKworLy8gRnJhbWUgb3V0cHV0IHN0YXRlIG1hY2hpbmUuCitzdHJ1Y3QgR0lGRnJh
bWVDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICAv
LyBGSVhNRTogTW92ZSB0aGVzZSBtZW1iZXJzIHRvIHByaXZhdGUgc2VjdGlvbi4KKyAgICBpbnQg
ZnJhbWVJZDsKICAgICB1bnNpZ25lZCB4T2Zmc2V0OwogICAgIHVuc2lnbmVkIHlPZmZzZXQ7IC8v
IFdpdGggcmVzcGVjdCB0byAic2NyZWVuIiBvcmlnaW4uCiAgICAgdW5zaWduZWQgd2lkdGg7CkBA
IC05Myw2ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6SW1hZ2VGcmFtZTo6RnJhbWVE
aXNwb3NhbE1ldGhvZCBkaXNwb3NhbE1ldGhvZDsgLy8gUmVzdG9yZSB0byBiYWNrZ3JvdW5kLCBs
ZWF2ZSBpbiBwbGFjZSwgZXRjLgogICAgIHNpemVfdCBsb2NhbENvbG9ybWFwUG9zaXRpb247IC8v
IFBlci1pbWFnZSBjb2xvcm1hcC4KICAgICBpbnQgbG9jYWxDb2xvcm1hcFNpemU7IC8vIFNpemUg
b2YgbG9jYWwgY29sb3JtYXAgYXJyYXkuCisgICAgaW50IGRhdGFzaXplOwogICAgIAogICAgIGJv
b2wgaXNMb2NhbENvbG9ybWFwRGVmaW5lZCA6IDE7CiAgICAgYm9vbCBwcm9ncmVzc2l2ZURpc3Bs
YXkgOiAxOyAvLyBJZiB0cnVlLCBkbyBIYWViZXJsaSBpbnRlcmxhY2UgaGFjay4KQEAgLTEwMSwx
MSArMTY5LDggQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgZGVsYXlUaW1lOyAvLyBEaXNwbGF5
IHRpbWUsIGluIG1pbGxpc2Vjb25kcywgZm9yIHRoaXMgaW1hZ2UgaW4gYSBtdWx0aS1pbWFnZSBH
SUYuCiAKLSAgICBHSUZGcmFtZUNvbnRleHQoKQotICAgICAgICA6IGRhdGFzaXplKDApCi0gICAg
ICAgICwgaXBhc3MoMCkKLSAgICAgICAgLCByb3dzUmVtYWluaW5nKDApCi0gICAgICAgICwgaXJv
dygwKQorICAgIEdJRkZyYW1lQ29udGV4dChpbnQgaWQpCisgICAgICAgIDogZnJhbWVJZChpZCkK
ICAgICAgICAgLCB4T2Zmc2V0KDApCiAgICAgICAgICwgeU9mZnNldCgwKQogICAgICAgICAsIHdp
ZHRoKDApCkBAIC0xMTQsNTQgKzE3OSw0OCBAQCBwdWJsaWM6CiAgICAgICAgICwgZGlzcG9zYWxN
ZXRob2QoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6RGlzcG9zZU5vdFNwZWNpZmllZCkKICAgICAgICAg
LCBsb2NhbENvbG9ybWFwUG9zaXRpb24oMCkKICAgICAgICAgLCBsb2NhbENvbG9ybWFwU2l6ZSgw
KQorICAgICAgICAsIGRhdGFzaXplKDApCiAgICAgICAgICwgaXNMb2NhbENvbG9ybWFwRGVmaW5l
ZChmYWxzZSkKICAgICAgICAgLCBwcm9ncmVzc2l2ZURpc3BsYXkoZmFsc2UpCiAgICAgICAgICwg
aW50ZXJsYWNlZChmYWxzZSkKICAgICAgICAgLCBpc1RyYW5zcGFyZW50KGZhbHNlKQogICAgICAg
ICAsIGRlbGF5VGltZSgwKQorICAgICAgICAsIG1fY3VycmVudEx6d0Jsb2NrKDApCisgICAgICAg
ICwgbV9pc0NvbXBsZXRlKGZhbHNlKQorICAgICAgICAsIG1faXNIZWFkZXJEZWZpbmVkKGZhbHNl
KQorICAgICAgICAsIG1faXNEYXRhU2l6ZURlZmluZWQoZmFsc2UpCiAgICAgewogICAgIH0KICAg
ICAKICAgICB+R0lGRnJhbWVDb250ZXh0KCkKICAgICB7CiAgICAgfQotfTsKIAotLy8gTFpXIGRl
Y29kZXIgc3RhdGUgbWFjaGluZS4KLS8vIEZJWE1FOiBNYWtlIHRoaXMgYSBjbGFzcyBhbmQgaGlk
ZSBwcml2YXRlIG1lbWJlcnMuCi1zdHJ1Y3QgR0lGTFpXQ29udGV4dCB7Ci0gICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgR0lGTFpXQ29udGV4dCgpCi0gICAgICAgIDog
c3RhY2twKDApCi0gICAgICAgICwgY29kZXNpemUoMCkKLSAgICAgICAgLCBjb2RlbWFzaygwKQot
ICAgICAgICAsIGNsZWFyQ29kZSgwKQotICAgICAgICAsIGF2YWlsKDApCi0gICAgICAgICwgb2xk
Y29kZSgwKQotICAgICAgICAsIGZpcnN0Y2hhcigwKQotICAgICAgICAsIGJpdHMoMCkKLSAgICAg
ICAgLCBkYXR1bSgwKQotICAgICAgICAsIHJvd1Bvc2l0aW9uKDApCi0gICAgeyB9CisgICAgdm9p
ZCBhZGRMendCbG9jayhzaXplX3QgcG9zaXRpb24sIHNpemVfdCBzaXplKQorICAgIHsKKyAgICAg
ICAgbV9sendCbG9ja3MuYXBwZW5kKEdJRkxaV0Jsb2NrKHBvc2l0aW9uLCBzaXplKSk7CisgICAg
fQogCi0gICAgYm9vbCBwcmVwYXJlVG9EZWNvZGUodW5zaWduZWQgcm93V2lkdGgsIGludCBkYXRh
c2l6ZSk7CisgICAgYm9vbCBkZWNvZGUoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90
IGxlbmd0aCwgV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyKiBjbGllbnQsIGJvb2wqIGZyYW1lRGVj
b2RlZCk7CiAKLSAgICBzaXplX3Qgc3RhY2twOyAvLyBDdXJyZW50IHN0YWNrIHBvaW50ZXIuCi0g
ICAgaW50IGNvZGVzaXplOwotICAgIGludCBjb2RlbWFzazsKLSAgICBpbnQgY2xlYXJDb2RlOyAv
LyBDb2Rld29yZCB1c2VkIHRvIHRyaWdnZXIgZGljdGlvbmFyeSByZXNldC4KLSAgICBpbnQgYXZh
aWw7IC8vIEluZGV4IG9mIG5leHQgYXZhaWxhYmxlIHNsb3QgaW4gZGljdGlvbmFyeS4KLSAgICBp
bnQgb2xkY29kZTsKLSAgICB1bnNpZ25lZCBjaGFyIGZpcnN0Y2hhcjsKLSAgICBpbnQgYml0czsg
Ly8gTnVtYmVyIG9mIHVucmVhZCBiaXRzIGluICJkYXR1bSIuCi0gICAgaW50IGRhdHVtOyAvLyAz
Mi1iaXQgaW5wdXQgYnVmZmVyLgotICAgIHNpemVfdCByb3dQb3NpdGlvbjsKKyAgICBib29sIGlz
Q29tcGxldGUoKSBjb25zdCB7IHJldHVybiBtX2lzQ29tcGxldGU7IH0KKyAgICB2b2lkIHNldENv
bXBsZXRlKCkgeyBtX2lzQ29tcGxldGUgPSB0cnVlOyB9CisgICAgYm9vbCBpc0hlYWRlckRlZmlu
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSGVhZGVyRGVmaW5lZDsgfQorICAgIHZvaWQgc2V0SGVh
ZGVyRGVmaW5lZCgpIHsgbV9pc0hlYWRlckRlZmluZWQgPSB0cnVlOyB9CisgICAgYm9vbCBpc0Rh
dGFTaXplRGVmaW5lZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEYXRhU2l6ZURlZmluZWQ7IH0KKyAg
ICB2b2lkIHNldERhdGFTaXplKGludCBzaXplKQorICAgIHsKKyAgICAgICAgZGF0YXNpemUgPSBz
aXplOworICAgICAgICBtX2lzRGF0YVNpemVEZWZpbmVkID0gdHJ1ZTsKKyAgICB9CiAKLSAgICBW
ZWN0b3I8dW5zaWduZWQgc2hvcnQ+IHByZWZpeDsKLSAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4g
c3VmZml4OwotICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBzdGFjazsKLSAgICBWZWN0b3I8dW5z
aWduZWQgY2hhcj4gcm93QnVmZmVyOyAvLyBTaW5nbGUgc2NhbmxpbmUgdGVtcG9yYXJ5IGJ1ZmZl
ci4KK3ByaXZhdGU6CisgICAgT3duUHRyPEdJRkxaV0NvbnRleHQ+IG1fbHp3Q29udGV4dDsKKyAg
ICBWZWN0b3I8R0lGTFpXQmxvY2s+IG1fbHp3QmxvY2tzOyAvLyBMWlcgYmxvY2tzIGZvciB0aGlz
IGZyYW1lLgorICAgIHNpemVfdCBtX2N1cnJlbnRMendCbG9jazsKKyAgICBib29sIG1faXNDb21w
bGV0ZTsKKyAgICBib29sIG1faXNIZWFkZXJEZWZpbmVkOworICAgIGJvb2wgbV9pc0RhdGFTaXpl
RGVmaW5lZDsKIH07CiAKIGNsYXNzIEdJRkltYWdlUmVhZGVyIHsKQEAgLTE3OSwyMyArMjM4LDMx
IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2lzR2xvYmFsQ29sb3JtYXBEZWZpbmVkKGZhbHNlKQog
ICAgICAgICAsIG1fZ2xvYmFsQ29sb3JtYXBQb3NpdGlvbigwKQogICAgICAgICAsIG1fZ2xvYmFs
Q29sb3JtYXBTaXplKDApCi0gICAgICAgICwgbV9pbWFnZXNEZWNvZGVkKDApCi0gICAgICAgICwg
bV9pbWFnZXNDb3VudCgwKQogICAgICAgICAsIG1fbG9vcENvdW50KGNMb29wQ291bnROb3RTZWVu
KQotICAgICAgICAsIG1fZnJhbWVDb250ZXh0KDApCisgICAgICAgICwgbV9jdXJyZW50RGVjb2Rp
bmdGcmFtZSgwKQorICAgICAgICAsIG1fcGFyc2VGYWlsZWQoZmFsc2UpCisgICAgICAgICwgbV9w
YXJzZUNvbXBsZXRlZChmYWxzZSkKICAgICB7CiAgICAgfQogCiAgICAgfkdJRkltYWdlUmVhZGVy
KCkKICAgICB7Ci0gICAgICAgIGRlbGV0ZSBtX2ZyYW1lQ29udGV4dDsKLSAgICAgICAgbV9mcmFt
ZUNvbnRleHQgPSAwOwogICAgIH0KIAogICAgIHZvaWQgc2V0RGF0YShQYXNzUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YSkgeyBtX2RhdGEgPSBkYXRhOyB9CisgICAgLy8gRklYTUU6
IGhhbHRBdEZyYW1lIHNob3VsZCBiZSBzaXplX3QuCiAgICAgYm9vbCBkZWNvZGUoV2ViQ29yZTo6
R0lGSW1hZ2VEZWNvZGVyOjpHSUZRdWVyeSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpOwogCi0gICAg
aW50IGltYWdlc0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZXNDb3VudDsgfQorICAgIHNp
emVfdCBpbWFnZXNDb3VudCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9mcmFtZXMuaXNF
bXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgLy8gVGhpcyBhdm9pZHMg
Y291bnRpbmcgYW4gZW1wdHkgZnJhbWUgd2hlbiB0aGUgZmlsZSBpcyB0cnVuY2F0ZWQgcmlnaHQg
YWZ0ZXIKKyAgICAgICAgLy8gR0lGQ29udHJvbEV4dGVuc2lvbiBidXQgYmVmb3JlIEdJRkltYWdl
SGVhZGVyLgorICAgICAgICAvLyBGSVhNRTogVGhpcyBleHRyYSBjb21wbGV4aXR5IGlzIG5vdCBu
ZWNlc3NhcnkgYW5kIHdlIHNob3VsZCBqdXN0IHJlcG9ydCBtX2ZyYW1lcy5zaXplKCkuCisgICAg
ICAgIHJldHVybiBtX2ZyYW1lcy5sYXN0KCktPmlzSGVhZGVyRGVmaW5lZCgpID8gbV9mcmFtZXMu
c2l6ZSgpIDogbV9mcmFtZXMuc2l6ZSgpIC0gMTsKKyAgICB9CiAgICAgaW50IGxvb3BDb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9vcENvdW50OyB9CiAKICAgICBjb25zdCB1bnNpZ25lZCBjaGFy
KiBnbG9iYWxDb2xvcm1hcCgpIGNvbnN0CkBAIC0yMTYsMTIgKzI4MywxNSBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBmcmFtZS0+aXNMb2NhbENvbG9ybWFwRGVmaW5lZCA/IGZyYW1lLT5sb2Nh
bENvbG9ybWFwU2l6ZSA6IDA7CiAgICAgfQogCi0gICAgY29uc3QgR0lGRnJhbWVDb250ZXh0KiBm
cmFtZUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lQ29udGV4dDsgfQorICAgIGNvbnN0
IEdJRkZyYW1lQ29udGV4dCogZnJhbWVDb250ZXh0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2N1cnJlbnREZWNvZGluZ0ZyYW1lIDwgbV9mcmFtZXMuc2l6ZSgpID8gbV9mcmFtZXNb
bV9jdXJyZW50RGVjb2RpbmdGcmFtZV0uZ2V0KCkgOiAwOworICAgIH0KKworICAgIGJvb2wgcGFy
c2VGYWlsZWQoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlRmFpbGVkOyB9CiAKIHByaXZhdGU6Ci0g
ICAgYm9vbCBkZWNvZGVJbnRlcm5hbChzaXplX3QgZGF0YVBvc2l0aW9uLCBzaXplX3QgbGVuLCBX
ZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OkdJRlF1ZXJ5LCB1bnNpZ25lZCBoYWx0QXRGcmFtZSk7
Ci0gICAgYm9vbCBvdXRwdXRSb3coKTsKLSAgICBib29sIGRvTFpXKGNvbnN0IHVuc2lnbmVkIGNo
YXIgKiwgc2l6ZV90KTsKKyAgICBib29sIHBhcnNlKHNpemVfdCBkYXRhUG9zaXRpb24sIHNpemVf
dCBsZW4sIGJvb2wgcGFyc2VTaXplT25seSk7CiAgICAgdm9pZCBzZXRSZW1haW5pbmdCeXRlcyhz
aXplX3QpOwogCiAgICAgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YShzaXplX3QgZGF0YVBvc2l0
aW9uKSBjb25zdApAQCAtMjI5LDYgKzI5OSwxMiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4obV9kYXRhLT5kYXRhKCkpICsg
ZGF0YVBvc2l0aW9uOwogICAgIH0KIAorICAgIHZvaWQgYWRkRnJhbWVJZk5lY2Vzc2FyeSgpOwor
ICAgIGJvb2wgY3VycmVudEZyYW1lSXNGaXJzdEZyYW1lKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2ZyYW1lcy5pc0VtcHR5KCkgfHwgKG1fZnJhbWVzLnNpemUoKSA9PSAxdSAmJiAh
bV9mcmFtZXNbMF0tPmlzQ29tcGxldGUoKSk7CisgICAgfQorCiAgICAgV2ViQ29yZTo6R0lGSW1h
Z2VEZWNvZGVyKiBtX2NsaWVudDsKIAogICAgIC8vIFBhcnNpbmcgc3RhdGUgbWFjaGluZS4KQEAg
LTI0NCwxNSArMzIwLDE0IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzR2xvYmFsQ29sb3JtYXBE
ZWZpbmVkOwogICAgIHNpemVfdCBtX2dsb2JhbENvbG9ybWFwUG9zaXRpb247IC8vICgzKiBNQVhf
Q09MT1JTIGluIHNpemUpIERlZmF1bHQgY29sb3JtYXAgaWYgbG9jYWwgbm90IHN1cHBsaWVkLCAz
IGJ5dGVzIGZvciBlYWNoIGNvbG9yLgogICAgIGludCBtX2dsb2JhbENvbG9ybWFwU2l6ZTsgLy8g
U2l6ZSBvZiBnbG9iYWwgY29sb3JtYXAgYXJyYXkuCi0gICAgdW5zaWduZWQgbV9pbWFnZXNEZWNv
ZGVkOyAvLyBDb3VudHMgY29tcGxldGVkIGZyYW1lcyBmb3IgYW5pbWF0ZWQgR0lGcy4KLSAgICBp
bnQgbV9pbWFnZXNDb3VudDsgLy8gQ291bnRlZCBhbGwgZnJhbWVzIHNlZW4gc28gZmFyIChpbmNs
dWRpbmcgaW5jb21wbGV0ZSBmcmFtZXMpLgogICAgIGludCBtX2xvb3BDb3VudDsgLy8gTmV0c2Nh
cGUgc3BlY2lmaWMgZXh0ZW5zaW9uIGJsb2NrIHRvIGNvbnRyb2wgdGhlIG51bWJlciBvZiBhbmlt
YXRpb24gbG9vcHMgYSBHSUYgcmVuZGVycy4KICAgICAKLSAgICBHSUZGcmFtZUNvbnRleHQqIG1f
ZnJhbWVDb250ZXh0OwotCi0gICAgR0lGTFpXQ29udGV4dCBtX2x6d0NvbnRleHQ7CisgICAgVmVj
dG9yPE93blB0cjxHSUZGcmFtZUNvbnRleHQ+ID4gbV9mcmFtZXM7CisgICAgc2l6ZV90IG1fY3Vy
cmVudERlY29kaW5nRnJhbWU7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBt
X2RhdGE7CisgICAgYm9vbCBtX3BhcnNlRmFpbGVkOworICAgIGJvb2wgbV9wYXJzZUNvbXBsZXRl
ZDsKIH07CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9HSUZJbWFnZURlY29kZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
R0lGSW1hZ2VEZWNvZGVyVGVzdC5jcHAKaW5kZXggYTdiZjVkNTUwZjQzYmZmOGJiYjAzYmE2NzZi
ZWU2ZDliM2Q5YTE5Ny4uYmM2ZTgxMTE1OWMzN2U5MjIwNGQyM2ZkZmMzYWM3ZThiMWFkZjFhMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9HSUZJbWFnZURlY29kZXJU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0dJRkltYWdlRGVjb2Rl
clRlc3QuY3BwCkBAIC00MSw2ICs0MSw4IEBACiAjaW5jbHVkZSA8cHVibGljL1dlYlVuaXRUZXN0
U3VwcG9ydC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdIYXNoZXIuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKQEAgLTY2LDkgKzY4LDE5IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVh
ZEZpbGUoY29uc3QgY2hhciogZmlsZU5hbWUpCiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6YWRv
cHRWZWN0b3IoYnVmZmVyKTsKIH0KIAorc3RhdGljIFBhc3NPd25QdHI8R0lGSW1hZ2VEZWNvZGVy
PiBjcmVhdGVEZWNvZGVyKCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdJRkltYWdlRGVj
b2RlcihJbWFnZVNvdXJjZTo6QWxwaGFOb3RQcmVtdWx0aXBsaWVkLCBJbWFnZVNvdXJjZTo6R2Ft
bWFBbmRDb2xvclByb2ZpbGVBcHBsaWVkKSk7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBoYXNoU2tC
aXRtYXAoY29uc3QgU2tCaXRtYXAmIGJpdG1hcCkKK3sKKyAgICByZXR1cm4gU3RyaW5nSGFzaGVy
OjpoYXNoTWVtb3J5KGJpdG1hcC5nZXRQaXhlbHMoKSwgYml0bWFwLmdldFNpemUoKSk7Cit9CisK
IFRFU1QoR0lGSW1hZ2VEZWNvZGVyVGVzdCwgZGVjb2RlVHdvRnJhbWVzKQogewotICAgIE93blB0
cjxHSUZJbWFnZURlY29kZXI+IGRlY29kZXIoYWRvcHRQdHIobmV3IEdJRkltYWdlRGVjb2RlcihJ
bWFnZVNvdXJjZTo6QWxwaGFOb3RQcmVtdWx0aXBsaWVkLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRD
b2xvclByb2ZpbGVBcHBsaWVkKSkpOworICAgIE93blB0cjxHSUZJbWFnZURlY29kZXI+IGRlY29k
ZXIoY3JlYXRlRGVjb2RlcigpKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBy
ZWFkRmlsZSgiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9hbmltYXRlZC5naWYi
KTsKICAgICBBU1NFUlRfVFJVRShkYXRhLmdldCgpKTsKQEAgLTkxLDcgKzEwMyw3IEBAIFRFU1Qo
R0lGSW1hZ2VEZWNvZGVyVGVzdCwgZGVjb2RlVHdvRnJhbWVzKQogCiBURVNUKEdJRkltYWdlRGVj
b2RlclRlc3QsIHBhcnNlQW5kRGVjb2RlKQogewotICAgIE93blB0cjxHSUZJbWFnZURlY29kZXI+
IGRlY29kZXIoYWRvcHRQdHIobmV3IEdJRkltYWdlRGVjb2RlcihJbWFnZVNvdXJjZTo6QWxwaGFO
b3RQcmVtdWx0aXBsaWVkLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVBcHBsaWVk
KSkpOworICAgIE93blB0cjxHSUZJbWFnZURlY29kZXI+IGRlY29kZXIoY3JlYXRlRGVjb2Rlcigp
KTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSByZWFkRmlsZSgiL0xheW91dFRl
c3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9hbmltYXRlZC5naWYiKTsKICAgICBBU1NFUlRfVFJV
RShkYXRhLmdldCgpKTsKQEAgLTExNSw3ICsxMjcsNyBAQCBURVNUKEdJRkltYWdlRGVjb2RlclRl
c3QsIHBhcnNlQW5kRGVjb2RlKQogCiBURVNUKEdJRkltYWdlRGVjb2RlclRlc3QsIHBhcnNlQnl0
ZUJ5Qnl0ZSkKIHsKLSAgICBPd25QdHI8R0lGSW1hZ2VEZWNvZGVyPiBkZWNvZGVyKGFkb3B0UHRy
KG5ldyBHSUZJbWFnZURlY29kZXIoSW1hZ2VTb3VyY2U6OkFscGhhTm90UHJlbXVsdGlwbGllZCwg
SW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlQXBwbGllZCkpKTsKKyAgICBPd25QdHI8
R0lGSW1hZ2VEZWNvZGVyPiBkZWNvZGVyKGNyZWF0ZURlY29kZXIoKSk7CiAKICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhID0gcmVhZEZpbGUoIi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9y
ZXNvdXJjZXMvYW5pbWF0ZWQuZ2lmIik7CiAgICAgQVNTRVJUX1RSVUUoZGF0YS5nZXQoKSk7CkBA
IC0xNDAsNyArMTUyLDcgQEAgVEVTVChHSUZJbWFnZURlY29kZXJUZXN0LCBwYXJzZUJ5dGVCeUJ5
dGUpCiAKIFRFU1QoR0lGSW1hZ2VEZWNvZGVyVGVzdCwgcGFyc2VBbmREZWNvZGVCeXRlQnlCeXRl
KQogewotICAgIE93blB0cjxHSUZJbWFnZURlY29kZXI+IGRlY29kZXIoYWRvcHRQdHIobmV3IEdJ
RkltYWdlRGVjb2RlcihJbWFnZVNvdXJjZTo6QWxwaGFOb3RQcmVtdWx0aXBsaWVkLCBJbWFnZVNv
dXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVBcHBsaWVkKSkpOworICAgIE93blB0cjxHSUZJbWFn
ZURlY29kZXI+IGRlY29kZXIoY3JlYXRlRGVjb2RlcigpKTsKIAogICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGRhdGEgPSByZWFkRmlsZSgiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNl
cy9hbmltYXRlZC1naWYtd2l0aC1vZmZzZXRzLmdpZiIpOwogICAgIEFTU0VSVF9UUlVFKGRhdGEu
Z2V0KCkpOwpAQCAtMTY5LDcgKzE4MSw3IEBAIFRFU1QoR0lGSW1hZ2VEZWNvZGVyVGVzdCwgcGFy
c2VBbmREZWNvZGVCeXRlQnlCeXRlKQogLy8gU2Vjb25kIGZyYW1lIGluIHRoZSBmaWxlIGlzIGJy
b2tlbiBidXQgdGVzdCB0aGF0IGZpcnN0IGZyYW1lIGNhbiBiZSBkZWNvZGVkLgogVEVTVChHSUZJ
bWFnZURlY29kZXJUZXN0LCBicm9rZW5TZWNvbmRGcmFtZSkKIHsKLSAgICBPd25QdHI8R0lGSW1h
Z2VEZWNvZGVyPiBkZWNvZGVyKGFkb3B0UHRyKG5ldyBHSUZJbWFnZURlY29kZXIoSW1hZ2VTb3Vy
Y2U6OkFscGhhTm90UHJlbXVsdGlwbGllZCwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9m
aWxlQXBwbGllZCkpKTsKKyAgICBPd25QdHI8R0lGSW1hZ2VEZWNvZGVyPiBkZWNvZGVyKGNyZWF0
ZURlY29kZXIoKSk7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gcmVhZEZpbGUo
Ii9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvYnJva2VuLmdpZiIpOwogICAgIEFT
U0VSVF9UUlVFKGRhdGEuZ2V0KCkpOwpAQCAtMTg3LDYgKzE5OSw1NSBAQCBURVNUKEdJRkltYWdl
RGVjb2RlclRlc3QsIGJyb2tlblNlY29uZEZyYW1lKQogICAgIEVYUEVDVF9FUShjQW5pbWF0aW9u
TG9vcE9uY2UsIGRlY29kZXItPnJlcGV0aXRpb25Db3VudCgpKTsKIH0KIAorVEVTVChHSUZJbWFn
ZURlY29kZXJUZXN0LCBwcm9ncmVzc2l2ZURlY29kZSkKK3sKKyAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBmdWxsRGF0YSA9IHJlYWRGaWxlKCIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9k
YXRhL3JhZGllbnQuZ2lmIik7CisgICAgQVNTRVJUX1RSVUUoZnVsbERhdGEuZ2V0KCkpOworICAg
IGNvbnN0IHNpemVfdCBmdWxsTGVuZ3RoID0gZnVsbERhdGEtPnNpemUoKTsKKworICAgIE93blB0
cjxHSUZJbWFnZURlY29kZXI+IGRlY29kZXI7CisgICAgSW1hZ2VGcmFtZSogZnJhbWU7CisKKyAg
ICBWZWN0b3I8dW5zaWduZWQ+IHRydW5jYXRlZEhhc2hlczsKKyAgICBWZWN0b3I8dW5zaWduZWQ+
IHByb2dyZXNzaXZlSGFzaGVzOworCisgICAgLy8gQ29tcHV0ZSBoYXNoZXMgd2hlbiB0aGUgZmls
ZSBpcyB0cnVuY2F0ZWQuCisgICAgY29uc3Qgc2l6ZV90IGluY3JlbWVudCA9IDE7CisgICAgZm9y
IChzaXplX3QgaSA9IDE7IGkgPD0gZnVsbExlbmd0aDsgaSArPSBpbmNyZW1lbnQpIHsKKyAgICAg
ICAgZGVjb2RlciA9IGNyZWF0ZURlY29kZXIoKTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZ1bGxEYXRhLT5kYXRhKCksIGkpOworICAg
ICAgICBkZWNvZGVyLT5zZXREYXRhKGRhdGEuZ2V0KCksIGkgPT0gZnVsbExlbmd0aCk7CisgICAg
ICAgIGZyYW1lID0gZGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KDApOworICAgICAgICBpZiAo
IWZyYW1lKSB7CisgICAgICAgICAgICB0cnVuY2F0ZWRIYXNoZXMuYXBwZW5kKDApOworICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgdHJ1bmNhdGVkSGFzaGVzLmFwcGVu
ZChoYXNoU2tCaXRtYXAoZnJhbWUtPmdldFNrQml0bWFwKCkpKTsKKyAgICB9CisKKyAgICAvLyBD
b21wdXRlIGhhc2hlcyB3aGVuIHRoZSBmaWxlIGlzIHByb2dyZXNzaXZlbHkgZGVjb2RlZC4KKyAg
ICBkZWNvZGVyID0gY3JlYXRlRGVjb2RlcigpOworICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDw9
IGZ1bGxMZW5ndGg7IGkgKz0gaW5jcmVtZW50KSB7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmdWxsRGF0YS0+ZGF0YSgpLCBpKTsKKyAg
ICAgICAgZGVjb2Rlci0+c2V0RGF0YShkYXRhLmdldCgpLCBpID09IGZ1bGxMZW5ndGgpOworICAg
ICAgICBmcmFtZSA9IGRlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleCgwKTsKKyAgICAgICAgaWYg
KCFmcmFtZSkgeworICAgICAgICAgICAgcHJvZ3Jlc3NpdmVIYXNoZXMuYXBwZW5kKDApOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgcHJvZ3Jlc3NpdmVIYXNoZXMu
YXBwZW5kKGhhc2hTa0JpdG1hcChmcmFtZS0+Z2V0U2tCaXRtYXAoKSkpOworICAgIH0KKworICAg
IGJvb2wgbWF0Y2ggPSB0cnVlOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJ1bmNhdGVk
SGFzaGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICh0cnVuY2F0ZWRIYXNoZXNbaV0gIT0g
cHJvZ3Jlc3NpdmVIYXNoZXNbaV0pIHsKKyAgICAgICAgICAgIG1hdGNoID0gZmFsc2U7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBFWFBFQ1RfVFJVRShtYXRjaCk7
Cit9CisKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9kYXRhL3JhZGllbnQuZ2lmIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9kYXRhL3JhZGllbnQuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyZGUyODZlYmJlNWQ5NTNkZDRh
MjBlNjg5ZDkyMzBiMjk5YTNkNWMKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDEwMzQKemNtZDZr
e1pvPyMwTFEtckhVP31rLWYwQUdiQXR0aj8xcFI1KTdUeSEjdnxaI2NxRnxAdFBUI1k3YiYhYEZ0
LTZSCnpVWmZXJTk5TVYpQGdPPjJwbV5ZY1pleCVVMShDZERuVl57QFUxQWljYiUmayg2QDdtQXtR
U0I1V2JEKWBsTU1uMAp6dW1QLXRhfGA/KnYyX2t7KD99ZGdpVVgtYiRRVlJzS1hrcCZjTyRuMEZT
SF41UUBxbEk1LVZRKTJ5Wmw/dFBZMmMKejtjejc/T25DbiZqN01PODJiTUI0eW90c0dgMCNhblQj
ViktdzdpVH4xNVdLbmAtP2M4aHQzQEk9K1YweV9GV2pyCnojTmJZeFBzZkVjakYxPnI8SSojNTVn
MUZ4Z2M0c1E7VlQpd055UE0lbjJwRGtDb21zX0A1VDUqZ2xqX2xCKjY3KAp6RUp4dTZBR2dBPjV7
NiR4YVZHPztKbHFZeThXKEB+O1pJLXU8JTEwdDl4KEFZMURuN0B7UW5SPkBjSiltK2FvYEUKejBg
RTx1JlJraGxlWFBiKGxTT05fNm1eYD1zPHJCOWlxeG83MWZrTXNORypNYEkhakJjUWpgaXNRZVJK
c3N7Tz43Cno9NUI+dHdtbzRxVlleSk83QCNfPUcpV0FQIzdRTzc1XjNCZTdlUCtjVCVNRkMjN1Y+
PTtURUEjQj5weUdabFI4dgp6bCpNMWE1ZiNiak1AQl5wWl56M05eTWg1RWA7TDNQUmhFRkxxeWw/
XiQ7eyt6c0Q3KEFqZD0mfEJAZFNWXk5ZY2cKejxyXmQtJTZTP09yWGB4UChWYn4qYiojMnh2QW9V
ZnVIbEJvNVQhRmxNa1VLJWw8bHg8K1V2cDw2JW1ofTZXYD5OCnozeUN8ZyojISZfRlB8XyhUQFhe
V3E0TVlGJClLdSZUPjw8VXNAUyQ8RzxqPz9JZ2pzfFN6PDdgKFI3ekIha3N0Twp6QkJjJkcxV3U+
ZmxnWntwc0JJMXQoX2RWJFZoajIjTTxYajRrX09KWHU2blc5WSZLNX5oTmxtb3ZkO3s8e3JKdFQK
ej4/PjJ4UmFTZCpjcCh1eXp6OSFZTER6Yz1wWmhJXzdwfmltdGlTI0h3YjcmQXlCJGw2KWN7SDNJ
KF9QSiszbzRKCnpqQW04cXlONmI5X0NMSkhDV2g5US1Tdl5Gamx9Ujx2dUJ6bkN6UEw8VHZ5S0A3
fmlwUGV7Z1hAJFYoR1I8Nn5PQQp6QXUlXzFVdHpqSHBLcEBQM3BeTV8hTWM9dEtMX3MjOzF0Xk9v
MGVuZ3o1SFFiVWRFUXs1TkNaJTtLX3dkTHIpcj0Kej9kM2RjVkVPNW5jdk8xclQ0O0tJO0gpK0t1
Qn04KHZaSlRZSSMxa1JrJDBxMEJTe3Y4IWFlaSNRX0JeSmptZVZpCno/Pl5ZRTd9M3U0bXlnJjxg
MyFhMTw9ZU5jRXxPZWNCRjdSZ2opMjEqbzYwRT9iI0BHNyNgbXEmUiZHMElDRH5oQgphTj9vPEZa
NEs+UnE2VmVNbShwaS0tNmJMdUBidGYqcWUmQTAKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>